Merge remote-tracking branch 'parent/main' into kb-upstream-231012

This commit is contained in:
KMY 2023-10-12 19:47:01 +09:00
commit 68e251cf0c
24 changed files with 159 additions and 97 deletions

View file

@ -1,13 +1,13 @@
# This configuration was generated by
# `haml-lint --auto-gen-config`
# on 2023-10-03 08:32:28 -0400 using Haml-Lint version 0.51.0.
# on 2023-10-11 11:31:24 -0400 using Haml-Lint version 0.51.0.
# The point is for the user to remove these configuration records
# one by one as the lints are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of Haml-Lint, may require this file to be generated again.
linters:
# Offense count: 944
# Offense count: 946
LineLength:
enabled: false
@ -30,10 +30,6 @@ linters:
# Offense count: 15
InstanceVariables:
exclude:
- 'app/views/admin/reports/_actions.html.haml'
- 'app/views/auth/registrations/_status.html.haml'
- 'app/views/auth/sessions/two_factor/_otp_authentication_form.html.haml'
- 'app/views/relationships/_account.html.haml'
- 'app/views/application/_sidebar.html.haml'
# Offense count: 2

View file

@ -146,7 +146,7 @@ GEM
net-http-persistent (~> 4.0)
nokogiri (~> 1, >= 1.10.8)
base64 (0.1.1)
bcrypt (3.1.18)
bcrypt (3.1.19)
better_errors (2.10.1)
erubi (>= 1.0.0)
rack (>= 0.9.0)
@ -210,7 +210,7 @@ GEM
database_cleaner-core (2.0.1)
date (3.3.3)
debug_inspector (1.1.0)
devise (4.9.2)
devise (4.9.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0)
@ -412,12 +412,12 @@ GEM
llhttp-ffi (0.4.0)
ffi-compiler (~> 1.0)
rake (~> 13.0)
lograge (0.13.0)
lograge (0.14.0)
actionpack (>= 4)
activesupport (>= 4)
railties (>= 4)
request_store (~> 1.0)
loofah (2.21.3)
loofah (2.21.4)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
mail (2.8.1)
@ -440,7 +440,7 @@ GEM
mime-types-data (3.2023.0808)
mini_mime (1.1.5)
mini_portile2 (2.8.4)
minitest (5.19.0)
minitest (5.20.0)
msgpack (1.7.1)
multi_json (1.15.0)
multipart-post (2.3.0)
@ -493,7 +493,7 @@ GEM
orm_adapter (0.5.0)
ox (2.14.17)
parallel (1.23.0)
parser (3.2.2.3)
parser (3.2.2.4)
ast (~> 2.4.1)
racc
parslet (2.0.0)
@ -554,7 +554,7 @@ GEM
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
activesupport (>= 5.0.1.rc1)
rails-dom-testing (2.1.1)
rails-dom-testing (2.2.0)
activesupport (>= 5.0.0)
minitest
nokogiri (>= 1.6)
@ -583,10 +583,10 @@ GEM
redis (>= 4)
redlock (1.3.2)
redis (>= 3.0.0, < 6.0)
regexp_parser (2.8.1)
regexp_parser (2.8.2)
request_store (1.5.1)
rack (>= 1.4)
responders (3.1.0)
responders (3.1.1)
actionpack (>= 5.2)
railties (>= 5.2)
rexml (3.2.6)
@ -622,12 +622,12 @@ GEM
sidekiq (>= 5, < 8)
rspec-support (3.12.1)
rspec_chunked (0.6)
rubocop (1.56.4)
rubocop (1.57.0)
base64 (~> 0.1.1)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
parser (>= 3.2.2.3)
parser (>= 3.2.2.4)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml (>= 3.2.5, < 4.0)
@ -673,7 +673,7 @@ GEM
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
semantic_range (3.0.0)
sidekiq (6.5.11)
sidekiq (6.5.12)
connection_pool (>= 2.2.5, < 3)
rack (~> 2.0)
redis (>= 4.5.0, < 5)
@ -791,7 +791,7 @@ GEM
xorcist (1.1.3)
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.6.11)
zeitwerk (2.6.12)
PLATFORMS
ruby

View file

@ -5,6 +5,7 @@ module TwoFactorAuthenticationConcern
included do
prepend_before_action :authenticate_with_two_factor, if: :two_factor_enabled?, only: [:create]
helper_method :webauthn_enabled?
end
def two_factor_enabled?
@ -87,4 +88,10 @@ module TwoFactorAuthenticationConcern
set_locale { render :two_factor }
end
protected
def webauthn_enabled?
@webauthn_enabled
end
end

View file

@ -1,6 +1,6 @@
{
"about.blocks": "Valvotut palvelimet",
"about.contact": "Yhteydenotto:",
"about.contact": "Ota yhteyttä:",
"about.disclaimer": "Mastodon on vapaa avoimen lähdekoodin ohjelmisto ja Mastodon gGmbH:n tavaramerkki.",
"about.domain_blocks.no_reason_available": "Syytä ei ole ilmoitettu",
"about.domain_blocks.preamble": "Mastodonin avulla voidaan yleensä tarkastella minkä tahansa fediversumiin kuuluvan palvelimen sisältöä ja vuorovaikuttaa eri palvelinten käyttäjien kanssa. Nämä ovat tälle palvelimelle määritetyt poikkeukset.",
@ -31,10 +31,10 @@
"account.featured_tags.last_status_never": "Ei julkaisuja",
"account.featured_tags.title": "Käyttäjän {name} esille nostetut aihetunnisteet",
"account.follow": "Seuraa",
"account.followers": "seuraaja(t)",
"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} seuraajaa}}",
"account.following": "Seurataan",
"account.following": "Seuratut",
"account.following_counter": "{count, plural, one {{counter} seurattu} other {{counter} seurattua}}",
"account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.",
"account.follows_you": "Seuraa sinua",
@ -194,7 +194,7 @@
"copypaste.copied": "Kopioitu",
"copypaste.copy_to_clipboard": "Kopioi leikepöydälle",
"directory.federated": "Koko tunnettu fediversumi",
"directory.local": "Vain palvelusta {domain}",
"directory.local": "Vain palvelimelta {domain}",
"directory.new_arrivals": "Äskettäin saapuneet",
"directory.recently_active": "Hiljattain aktiiviset",
"disabled_account_banner.account_settings": "Tilin asetukset",
@ -266,7 +266,7 @@
"filter_modal.select_filter.context_mismatch": "ei sovellu tähän kontekstiin",
"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.search": "Hae tai luo",
"filter_modal.select_filter.subtitle": "Käytä olemassa olevaa luokkaa tai luo uusi",
"filter_modal.select_filter.title": "Suodata tämä julkaisu",
"filter_modal.title.status": "Suodata julkaisu",
@ -336,9 +336,9 @@
"keyboard_shortcuts.blocked": "Avaa estettyjen käyttäjien luettelo",
"keyboard_shortcuts.boost": "Tehosta julkaisua",
"keyboard_shortcuts.column": "Kohdista sarakkeeseen",
"keyboard_shortcuts.compose": "siirry tekstinsyöttöön",
"keyboard_shortcuts.compose": "Kohdista kirjoituskenttään",
"keyboard_shortcuts.description": "Kuvaus",
"keyboard_shortcuts.direct": "avataksesi yksityisten mainintojen sarakkeen",
"keyboard_shortcuts.direct": "Avaa yksityisten mainintojen sarake",
"keyboard_shortcuts.down": "Siirry listassa alaspäin",
"keyboard_shortcuts.enter": "Avaa julkaisu",
"keyboard_shortcuts.favourite": "Lisää julkaisu suosikkeihin",
@ -347,22 +347,22 @@
"keyboard_shortcuts.heading": "Pikanäppäimet",
"keyboard_shortcuts.home": "Avaa kotiaikajana",
"keyboard_shortcuts.hotkey": "Pikanäppäin",
"keyboard_shortcuts.legend": "Näytä tämä selite",
"keyboard_shortcuts.legend": "Näytä tämä ohje",
"keyboard_shortcuts.local": "Avaa paikallinen aikajana",
"keyboard_shortcuts.mention": "Mainitse julkaisija",
"keyboard_shortcuts.muted": "Avaa lista mykistetyistä käyttäjistä",
"keyboard_shortcuts.mention": "Mainitse kirjoittaja",
"keyboard_shortcuts.muted": "Avaa mykistettyjen käyttäjien luettelo",
"keyboard_shortcuts.my_profile": "Avaa profiilisi",
"keyboard_shortcuts.notifications": "Avaa ilmoitukset-valikko",
"keyboard_shortcuts.notifications": "Avaa ilmoitussarake",
"keyboard_shortcuts.open_media": "Avaa media",
"keyboard_shortcuts.pinned": "Avaa kiinnitettyjen julkaisujen luettelo",
"keyboard_shortcuts.profile": "Avaa kirjoittajan profiili",
"keyboard_shortcuts.reply": "Vastaa julkaisuun",
"keyboard_shortcuts.requests": "Avaa seuraamispyyntöjen luettelo",
"keyboard_shortcuts.search": "siirry hakukenttään",
"keyboard_shortcuts.search": "Kohdista hakukenttään",
"keyboard_shortcuts.spoilers": "Näytä/piilota sisältövaroituskenttä",
"keyboard_shortcuts.start": "avaa \"Aloitus\"",
"keyboard_shortcuts.toggle_hidden": "näytä/piilota sisältövaroituksella merkitty teksti",
"keyboard_shortcuts.toggle_sensitivity": "näytä/piilota media",
"keyboard_shortcuts.start": "Avaa Näin pääset alkuun -sarake",
"keyboard_shortcuts.toggle_hidden": "Näytä/piilota sisältövaroituksella merkitty teksti",
"keyboard_shortcuts.toggle_sensitivity": "Näytä/piilota media",
"keyboard_shortcuts.toot": "Luo uusi julkaisu",
"keyboard_shortcuts.unfocus": "Poistu teksti-/hakukentästä",
"keyboard_shortcuts.up": "Siirry listassa ylöspäin",
@ -419,7 +419,7 @@
"navigation_bar.pins": "Kiinnitetyt julkaisut",
"navigation_bar.preferences": "Asetukset",
"navigation_bar.public_timeline": "Yleinen aikajana",
"navigation_bar.search": "Haku",
"navigation_bar.search": "Hae",
"navigation_bar.security": "Turvallisuus",
"not_signed_in_indicator.not_signed_in": "Sinun on kirjauduttava sisään käyttääksesi resurssia.",
"notification.admin.report": "{name} teki ilmoituksen käytäjästä {target}",
@ -475,11 +475,11 @@
"onboarding.actions.go_to_explore": "Siirry suosituimpien aiheiden syötteeseen",
"onboarding.actions.go_to_home": "Siirry kotisyötteeseeni",
"onboarding.compose.template": "Tervehdys #Mastodon!",
"onboarding.follows.empty": "Valitettavasti tuloksia ei voida näyttää juuri nyt. Voit kokeilla hakua tai selata tutustumissivua löytääksesi seurattavaa, tai yrittää myöhemmin uudelleen.",
"onboarding.follows.empty": "Valitettavasti tuloksia ei voida näyttää juuri nyt. Voit kokeilla hakua tai selata tutustumissivua löytääksesi seurattavaa tai yrittää myöhemmin uudelleen.",
"onboarding.follows.lead": "Kokoat oman kotisyötteesi itse. Mitä enemmän ihmisiä seuraat, sitä aktiivisempi ja kiinnostavampi syöte on. Nämä profiilit voivat olla alkuun hyvä lähtökohta — voit aina lopettaa niiden seuraamisen myöhemmin!",
"onboarding.follows.title": "Mukauta kotisyötettäsi",
"onboarding.share.lead": "Kerro ihmisille, kuinka he voivat löytää sinut Mastodonista!",
"onboarding.share.message": "Olen {username} #Mastodon'issa! Seuraa minua osoitteessa {url}",
"onboarding.share.message": "Olen {username} #Mastodonissa! Seuraa minua osoitteessa {url}",
"onboarding.share.next_steps": "Mahdolliset seuraavat vaiheet:",
"onboarding.share.title": "Jaa profiilisi",
"onboarding.start.lead": "Uusi Mastodon-tilisi on nyt valmiina käyttöön. Kyseessä on ainutlaatuinen, hajautettu sosiaalisen median alusta, jolla sinä itse algoritmin sijaan määrität käyttökokemuksesi. Näin hyödyt Mastodonista eniten:",
@ -584,17 +584,17 @@
"report_notification.open": "Avaa raportti",
"search.no_recent_searches": "Ei viimeaikaisia hakuja",
"search.placeholder": "Hae",
"search.quick_action.account_search": "Profiilit, jotka vastaavat hakua {x}",
"search.quick_action.go_to_account": "Avaa profiili {x}",
"search.quick_action.account_search": "Profiilit haulla {x}",
"search.quick_action.go_to_account": "Siirry profiiliin {x}",
"search.quick_action.go_to_hashtag": "Siirry aihetunnisteeseen {x}",
"search.quick_action.open_url": "Avaa URL-osoite Mastodonissa",
"search.quick_action.status_search": "Julkaisut haulla {x}",
"search.search_or_paste": "Etsi tai kirjoita URL-osoite",
"search.search_or_paste": "Hae tai kirjoita URL-osoite",
"search_popout.full_text_search_disabled_message": "Ei saatavilla palvelimella {domain}.",
"search_popout.language_code": "ISO-kielikoodi",
"search_popout.options": "Haun asetukset",
"search_popout.quick_actions": "Pikatoiminnot",
"search_popout.recent": "Viime haut",
"search_popout.recent": "Viimeaikaiset haut",
"search_popout.specific_date": "tietty päivämäärä",
"search_popout.user": "käyttäjä",
"search_results.accounts": "Profiilit",
@ -637,7 +637,7 @@
"status.history.created": "{name} luotu {date}",
"status.history.edited": "{name} muokkasi {date}",
"status.load_more": "Lataa lisää",
"status.media.open": "Napsauta avataksesi",
"status.media.open": "Avaa napsauttamalla",
"status.media.show": "Napsauta näyttääksesi",
"status.media_hidden": "Media piilotettu",
"status.mention": "Mainitse @{name}",
@ -654,7 +654,7 @@
"status.reblogs.empty": "Kukaan ei ole vielä tehostanut tätä julkaisua. Kun joku tekee niin, tulee hän tähän näkyviin.",
"status.redraft": "Poista ja palauta muokattavaksi",
"status.remove_bookmark": "Poista kirjanmerkki",
"status.replied_to": "Vastattu {name}",
"status.replied_to": "Vastaus käyttäjälle {name}",
"status.reply": "Vastaa",
"status.replyAll": "Vastaa ketjuun",
"status.report": "Raportoi @{name}",
@ -715,7 +715,7 @@
"upload_modal.preview_label": "Esikatselu ({ratio})",
"upload_progress.label": "Ladataan...",
"upload_progress.processing": "Käsitellään…",
"username.taken": "Käyttäjätunnus on jo varattu. Kokeile toista",
"username.taken": "Käyttäjänimi on jo varattu. Kokeile toista",
"video.close": "Sulje video",
"video.download": "Lataa tiedosto",
"video.exit_fullscreen": "Poistu koko näytön tilasta",

View file

@ -7,7 +7,7 @@
"about.domain_blocks.silenced.explanation": "San fharsaingeachd, chan fhaic thu pròifilean agus susbaint an fhrithealaiche seo ach ma nì thu lorg no ma tha thu ga leantainn.",
"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.domain_blocks.suspended.title": "À rèim",
"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",

View file

@ -340,7 +340,7 @@
"errors.unexpected_crash.report_issue": "問題を報告",
"explore.search_results": "検索結果",
"explore.suggested_follows": "ユーザー",
"explore.title": "エクスプローラー",
"explore.title": "探索する",
"explore.trending_links": "ニュース",
"explore.trending_statuses": "投稿",
"explore.trending_tags": "ハッシュタグ",

View file

@ -65,6 +65,7 @@
"account.unendorse": "Mostrar pas pel perfil",
"account.unfollow": "Quitar de sègre",
"account.unmute": "Quitar de rescondre @{name}",
"account.unmute_notifications_short": "Restablir las notificacions",
"account.unmute_short": "Tornar afichar",
"account_note.placeholder": "Clicar per ajustar una nòta",
"admin.dashboard.retention.average": "Mejana",
@ -97,6 +98,8 @@
"column.direct": "Mencions privadas",
"column.directory": "Percórrer los perfils",
"column.domain_blocks": "Domenis resconduts",
"column.favourites": "Favorits",
"column.firehose": "Tuts en dirèct",
"column.follow_requests": "Demandas dabonament",
"column.home": "Acuèlh",
"column.lists": "Listas",
@ -117,6 +120,7 @@
"community.column_settings.remote_only": "Sonque alonhat",
"compose.language.change": "Cambiar de lenga",
"compose.language.search": "Recercar de lengas...",
"compose.published.body": "Tut publicat.",
"compose.published.open": "Dobrir",
"compose.saved.body": "Publicacion enregistrada.",
"compose_form.direct_message_warning_learn_more": "Ne saber mai",
@ -170,6 +174,7 @@
"conversation.open": "Veire la conversacion",
"conversation.with": "Amb {names}",
"copypaste.copied": "Copiat",
"copypaste.copy_to_clipboard": "Copiar al quichapapièr",
"directory.federated": "Del fediverse conegut",
"directory.local": "Solament de {domain}",
"directory.new_arrivals": "Nòus-venguts",
@ -220,6 +225,7 @@
"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": "Personas",
"explore.title": "Explorar",
"explore.trending_links": "Novèlas",
"explore.trending_statuses": "Publicacions",
@ -234,6 +240,7 @@
"filter_modal.select_filter.search": "Cercar o crear",
"filter_modal.select_filter.title": "Filtrar aquesta publicacion",
"filter_modal.title.status": "Filtrar una publicacion",
"firehose.local": "Aqueste servidor",
"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 dabonament daquestes comptes.",
@ -257,12 +264,19 @@
"hashtag.column_settings.tag_mode.any": "Un daquestes",
"hashtag.column_settings.tag_mode.none": "Cap daquestes",
"hashtag.column_settings.tag_toggle": "Inclure las etiquetas suplementàrias dins aquesta colomna",
"hashtag.counter_by_accounts": "{count, plural, one {{counter} participant} other {{counter} participants}}",
"hashtag.counter_by_uses": "{count, plural, one {{counter} tut} other {{counter} tuts}}",
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} tut} other {{counter} tuts}} uèi",
"hashtag.follow": "Sègre letiqueta",
"hashtag.unfollow": "Quitar de sègre letiqueta",
"hashtags.and_other": "…e {count, plural, one {}other {# de mai}}",
"home.actions.go_to_explore": "Agachatz las tendéncias",
"home.actions.go_to_suggestions": "Trobatz de monde de sègre",
"home.column_settings.basic": "Basic",
"home.column_settings.show_reblogs": "Mostrar los partatges",
"home.column_settings.show_replies": "Mostrar las responsas",
"home.hide_announcements": "Rescondre las anóncias",
"home.pending_critical_update.link": "Veire las mesas a jorn",
"home.show_announcements": "Mostrar las anóncias",
"interaction_modal.on_another_server": "Sus un autre servidor",
"interaction_modal.on_this_server": "Sus aqueste servidor",
@ -332,14 +346,17 @@
"mute_modal.hide_notifications": "Rescondre las notificacions daquesta persona?",
"mute_modal.indefinite": "Cap de data de fin",
"navigation_bar.about": "A prepaus",
"navigation_bar.advanced_interface": "Dobrir linterfàcia web avançada",
"navigation_bar.blocks": "Personas blocadas",
"navigation_bar.bookmarks": "Marcadors",
"navigation_bar.community_timeline": "Flux public local",
"navigation_bar.compose": "Escriure un nòu tut",
"navigation_bar.direct": "Mencions privadas",
"navigation_bar.discover": "Trobar",
"navigation_bar.domain_blocks": "Domenis resconduts",
"navigation_bar.edit_profile": "Modificar lo perfil",
"navigation_bar.explore": "Explorar",
"navigation_bar.favourites": "Favorits",
"navigation_bar.filters": "Mots ignorats",
"navigation_bar.follow_requests": "Demandas dabonament",
"navigation_bar.followed_tags": "Etiquetas seguidas",
@ -369,6 +386,7 @@
"notifications.column_settings.admin.report": "Senhalaments novèls:",
"notifications.column_settings.admin.sign_up": "Nòus inscrits:",
"notifications.column_settings.alert": "Notificacions localas",
"notifications.column_settings.favourite": "Favorits :",
"notifications.column_settings.filter_bar.advanced": "Mostrar totas las categorias",
"notifications.column_settings.filter_bar.category": "Barra de recèrca rapida",
"notifications.column_settings.filter_bar.show_bar": "Afichar la barra de filtres",
@ -386,6 +404,7 @@
"notifications.column_settings.update": "Modificacions:",
"notifications.filter.all": "Totas",
"notifications.filter.boosts": "Partages",
"notifications.filter.favourites": "Favorits",
"notifications.filter.follows": "Seguiments",
"notifications.filter.mentions": "Mencions",
"notifications.filter.polls": "Resultats del sondatge",
@ -399,15 +418,21 @@
"notifications_permission_banner.enable": "Activar las notificacions burèu",
"notifications_permission_banner.how_to_control": "Per recebre las notificacions de Mastodon quand es pas dobèrt, activatz las notificacions de burèu. Podètz precisar quin tipe de notificacion generarà una notificacion de burèu via lo boton {icon} dessús un còp activadas.",
"notifications_permission_banner.title": "Manquetz pas jamai res",
"onboarding.action.back": "Tornar en rèire",
"onboarding.actions.back": "Tornar en rèire",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
"onboarding.compose.template": "Adiu #Mastodon !",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
"onboarding.share.title": "Partejar vòstre perfil",
"onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
"onboarding.start.skip": "Want to skip right ahead?",
"onboarding.start.title": "Tot es prèst !",
"onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
"onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
"onboarding.steps.publish_status.body": "Say hello to the world.",
"onboarding.steps.publish_status.title": "Escrivètz vòstre primièr tut",
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
"onboarding.steps.setup_profile.title": "Customize your profile",
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
@ -415,6 +440,7 @@
"picture_in_picture.restore": "Lo tornar",
"poll.closed": "Tampat",
"poll.refresh": "Actualizar",
"poll.reveal": "Veire los resultats",
"poll.total_people": "{count, plural, one {# persona} other {# personas}}",
"poll.total_votes": "{count, plural, one {# vòte} other {# vòtes}}",
"poll.vote": "Votar",
@ -482,11 +508,17 @@
"report_notification.open": "Dobrir lo senhalament",
"search.placeholder": "Recercar",
"search.search_or_paste": "Recercar o picar una URL",
"search_popout.language_code": "Còdi ISO de lenga",
"search_popout.options": "Opcions de recèrca",
"search_popout.quick_actions": "Accions rapidas",
"search_popout.recent": "Recèrcas recentas",
"search_popout.specific_date": "data especifica",
"search_popout.user": "utilizaire",
"search_results.accounts": "Perfils",
"search_results.all": "Tot",
"search_results.hashtags": "Etiquetas",
"search_results.nothing_found": "Cap de resultat per aquestes tèrmes de recèrca",
"search_results.see_all": "O veire tot",
"search_results.statuses": "Tuts",
"search_results.title": "Recèrca: {q}",
"server_banner.active_users": "utilizaires actius",
@ -506,16 +538,20 @@
"status.copy": "Copiar lo ligam de lestatut",
"status.delete": "Escafar",
"status.detailed_status": "Vista detalhada de la convèrsa",
"status.direct_indicator": "Mencion privada",
"status.edit": "Modificar",
"status.edited": "Modificat {date}",
"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": "Filtrar aquesta publicacion",
"status.filtered": "Filtrat",
"status.hide": "Amagar la publicacion",
"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.open": "Clicar per dobrir",
"status.media.show": "Clicar per mostar",
"status.media_hidden": "Mèdia rescondut",
"status.mention": "Mencionar",
"status.more": "Mai",
@ -546,6 +582,7 @@
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
"status.translate": "Traduire",
"status.translated_from_with": "Traduch del {lang} amb {provider}",
"status.uncached_media_warning": "Apercebut indisponible",
"status.unmute_conversation": "Tornar mostrar la conversacion",
"status.unpin": "Tirar del perfil",
"subscribed_languages.lead": "Sonque las publicacions dins las lengas seleccionadas apreissaràn dins vòstre acuèlh e linha cronologica aprèp aqueste cambiament. Seleccionatz pas res per recebre las publicacions en quina lenga que siá.",

View file

@ -218,7 +218,10 @@
"home.hide_announcements": "නිවේදන සඟවන්න",
"home.pending_critical_update.link": "යාවත්කාල බලන්න",
"home.show_announcements": "නිවේදන පෙන්වන්න",
"interaction_modal.login.action": "මුලට ගෙනයන්න",
"interaction_modal.on_this_server": "මෙම සේවාදායකයෙහි",
"interaction_modal.title.favourite": "{name}ගේ ලිපිය ප්‍රිය කරන්න",
"interaction_modal.title.follow": "{name} අනුගමනය",
"intervals.full.days": "{number, plural, one {දවස් #} other {දවස් #}}",
"intervals.full.hours": "{number, plural, one {පැය #} other {පැය #}}",
"intervals.full.minutes": "{number, plural, one {විනාඩි #} other {විනාඩි #}}",
@ -319,6 +322,7 @@
"notifications.mark_as_read": "සියළු දැනුම්දීම් කියවූ බව යොදන්න",
"notifications_permission_banner.enable": "වැඩතල දැනුම්දීම් සබල කරන්න",
"notifications_permission_banner.title": "කිසිවක් අතපසු නොකරන්න",
"onboarding.actions.go_to_explore": "නැගී එන දෑ වෙත ගෙනයන්න",
"onboarding.compose.template": "ආයුබෝ #මාස්ටඩන්!",
"onboarding.share.title": "ඔබගේ පැතිකඩ බෙදාගන්න",
"onboarding.steps.publish_status.title": "පළමු ලිපිය පළ කරන්න",
@ -358,6 +362,7 @@
"report.categories.other": "වෙනත්",
"report.categories.spam": "ආයාචිත",
"report.categories.violation": "අන්තර්ගතය නිසා සේවාදායකයේ නීතියක් හෝ කිහිපයක් කඩ වේ",
"report.category.subtitle": "හොඳම ගැලපීම තෝරන්න",
"report.category.title": "මෙම {type}සමඟ සිදුවන්නේ කුමක්දැයි අපට කියන්න",
"report.category.title_account": "පැතිකඩ",
"report.category.title_status": "ලිපිය",
@ -394,14 +399,25 @@
"report_notification.categories.spam": "ආයාචිත",
"report_notification.categories.violation": "නීතිය කඩ කිරීම",
"report_notification.open": "විවෘත වාර්තාව",
"search.no_recent_searches": "මෑත සෙවීම් නැත",
"search.placeholder": "සොයන්න",
"search.quick_action.account_search": "ගැළපෙන පැතිකඩ {x}",
"search.quick_action.go_to_account": "{x} පැතිකඩ වෙත යන්න",
"search.quick_action.open_url": "ලිපිනය මාස්ටඩන්හි අරින්න",
"search.quick_action.status_search": "ගැළපෙන ලිපි {x}",
"search.search_or_paste": "සොයන්න හෝ ඒ.ස.නි. අලවන්න",
"search_popout.options": "සෙවුම් විකල්ප",
"search_popout.quick_actions": "ඉක්මන් ක්‍රියාමාර්ග",
"search_popout.recent": "මෑත සෙවීම්",
"search_popout.specific_date": "නිශ්චිත දිනයකට",
"search_popout.user": "පරිශ්‍රීලකයා",
"search_results.accounts": "පැතිකඩ",
"search_results.all": "සියල්ල",
"search_results.nothing_found": "මෙම සෙවුම් පද සඳහා කිසිවක් සොයාගත නොහැකි විය",
"search_results.see_all": "සියල්ල බලන්න",
"search_results.statuses": "ලිපි",
"search_results.title": "{q} සොයන්න",
"server_banner.active_users": "සක්‍රිය පරිශ්‍රීලකයින්",
"server_banner.learn_more": "තව දැනගන්න",
"sign_in_banner.create_account": "ගිණුමක් සාදන්න",
"sign_in_banner.sign_in": "පිවිසෙන්න",

View file

@ -409,7 +409,7 @@
"navigation_bar.favourites": "最愛",
"navigation_bar.filters": "已靜音的關鍵字",
"navigation_bar.follow_requests": "跟隨請求",
"navigation_bar.followed_tags": "已跟隨主題標籤",
"navigation_bar.followed_tags": "已跟隨主題標籤",
"navigation_bar.follows_and_followers": "跟隨中與跟隨者",
"navigation_bar.lists": "列表",
"navigation_bar.logout": "登出",

View file

@ -38,7 +38,13 @@ class UpdateAccountService < BaseService
end
def check_links(account)
VerifyAccountLinksWorker.perform_async(account.id) if account.fields.any?(&:requires_verification?)
return unless account.fields.any?(&:requires_verification?)
if account.local?
VerifyAccountLinksWorker.perform_async(account.id)
else
VerifyAccountLinksWorker.perform_in(rand(10.minutes.to_i), account.id)
end
end
def process_hashtags(account)

View file

@ -1,11 +1,11 @@
= form_tag preview_admin_report_actions_path(@report), method: :post do
= form_tag preview_admin_report_actions_path(report), method: :post do
.report-actions
.report-actions__item
.report-actions__item__button
= link_to t('admin.reports.mark_as_resolved'), resolve_admin_report_path(@report), method: :post, class: 'button'
= link_to t('admin.reports.mark_as_resolved'), resolve_admin_report_path(report), method: :post, class: 'button'
.report-actions__item__description
= t('admin.reports.actions.resolve_description_html')
- if @statuses.any? { |status| (status.with_media? || status.with_preview_card?) && !status.discarded? }
- if statuses.any? { |status| (status.with_media? || status.with_preview_card?) && !status.discarded? }
.report-actions__item
.report-actions__item__button
= button_tag t('admin.reports.mark_as_sensitive'), name: :mark_as_sensitive, class: 'button'
@ -33,6 +33,6 @@
= t('admin.reports.actions.suspend_description_html')
.report-actions__item
.report-actions__item__button
= link_to t('admin.accounts.custom'), new_admin_account_action_path(@report.target_account_id, report_id: @report.id), class: 'button'
= link_to t('admin.accounts.custom'), new_admin_account_action_path(report.target_account_id, report_id: report.id), class: 'button'
.report-actions__item__description
= t('admin.reports.actions.other_description_html')

View file

@ -179,7 +179,7 @@
%p#actions= t(@report.target_account.local? ? 'admin.reports.actions_description_html' : 'admin.reports.actions_description_remote_html')
= render partial: 'admin/reports/actions'
= render partial: 'admin/reports/actions', locals: { report: @report, statuses: @statuses }
- unless @action_logs.empty?
%hr.spacer/

View file

@ -1,30 +1,30 @@
- if !@user.confirmed?
- if !user.confirmed?
.flash-message.warning
= t('auth.status.confirming')
= link_to t('auth.didnt_get_confirmation'), new_user_confirmation_path
- elsif !@user.approved?
- elsif !user.approved?
.flash-message.warning
= t('auth.status.pending')
- elsif @user.account.moved_to_account_id.present?
- elsif user.account.moved_to_account_id.present?
.flash-message.warning
= t('auth.status.redirecting_to', acct: @user.account.moved_to_account.pretty_acct)
= t('auth.status.redirecting_to', acct: user.account.moved_to_account.pretty_acct)
= link_to t('migrations.cancel'), settings_migration_path
%h3= t('auth.status.account_status')
%p.hint
- if @user.account.suspended?
- if user.account.suspended?
%span.negative-hint= t('user_mailer.warning.explanation.suspend')
- elsif @user.disabled?
- elsif user.disabled?
%span.negative-hint= t('user_mailer.warning.explanation.disable')
- elsif @user.account.silenced?
- elsif user.account.silenced?
%span.warning-hint= t('user_mailer.warning.explanation.silence')
- else
%span.positive-hint= t('auth.status.functional')
= render partial: 'account_warning', collection: @strikes
= render partial: 'account_warning', collection: strikes
- if @user.account.strikes.exists?
- if user.account.strikes.exists?
%hr.spacer/
%p.muted-hint

View file

@ -1,7 +1,7 @@
- content_for :page_title do
= t('settings.account_settings')
= render 'status'
= render partial: 'status', locals: { user: @user, strikes: @strikes }
%h3= t('auth.security')

View file

@ -3,7 +3,7 @@
= javascript_pack_tag 'two_factor_authentication', crossorigin: 'anonymous'
- if @webauthn_enabled
- if webauthn_enabled?
= render partial: 'auth/sessions/two_factor/webauthn_form', locals: { hidden: @scheme_type != 'webauthn' }
= render partial: 'auth/sessions/two_factor/otp_authentication_form', locals: { hidden: @scheme_type != 'totp' }

View file

@ -13,6 +13,6 @@
- if Setting.site_contact_email.present?
%p.hint.subtle-hint= t('users.otp_lost_help_html', email: mail_to(Setting.site_contact_email, nil))
- if @webauthn_enabled
- if webauthn_enabled?
.form-footer
= link_to(t('auth.link_to_webauth'), '#', id: 'link-to-webauthn')

View file

@ -6,7 +6,7 @@
%tbody
%tr
%td.accounts-table__interrelationships
= interrelationships_icon(@relationships, account.id)
= interrelationships_icon(relationships, account.id)
%td= account_link_to account
%td.accounts-table__count.optional
= friendly_number_to_human account.statuses_count

View file

@ -53,6 +53,6 @@
- if @accounts.empty?
= nothing_here 'nothing-here--under-tabs'
- else
= render partial: 'account', collection: @accounts, locals: { f: f }
= render partial: 'account', collection: @accounts, locals: { f: f, relationships: @relationships }
= paginate @accounts

View file

@ -10,7 +10,7 @@ fi:
locale: Alue
password: Salasana
user/account:
username: Käyttäjätunnus
username: Käyttäjänimi
user/invite_request:
text: Syy
errors:

View file

@ -162,7 +162,7 @@ fi:
unsilenced_msg: Tilin %{username} rajoituksen kumoaminen onnistui
unsubscribe: Lopeta tilaus
unsuspended_msg: Tilin %{username} jäädytyksen kumoaminen onnistui
username: Käyttäjätunnus
username: Käyttäjänimi
view_domain: Näytä verkkotunnuksen yhteenveto
warn: Varoita
web: Verkko
@ -832,7 +832,7 @@ fi:
database_schema_check:
message_html: Tietokannan siirto on vireillä. Suorita ne varmistaaksesi, että sovellus toimii odotetulla tavalla
elasticsearch_health_red:
message_html: Elasticsearch-klusteri on vikatilassa (punainen tila); hakuominaisuudet eivät ole käytettävissä
message_html: Elasticsearch-klusteri on vikatilassa (punainen tila), joten hakuominaisuudet eivät ole käytettävissä
elasticsearch_health_yellow:
message_html: Elasticsearch-klusteri on häiriötilassa (keltainen tila), joten suosittelemme tutkimaan syyn
elasticsearch_index_mismatch:
@ -842,13 +842,13 @@ fi:
message_html: Elasticsearch-klusterissa on useampi kuin yksi solmu, mutta Mastodonia ei ole määritetty käyttämään niitä.
elasticsearch_preset_single_node:
action: Katso käyttöohjeet
message_html: Elasticsearch-klusterissa on vain yksi solmu, <code>ES_PRESET</code> tulisi asettaa arvoon <code>single_node_cluster</code>.
message_html: Elasticsearch-klusterissa on vain yksi solmu. <code>ES_PRESET</code> tulisi asettaa arvoon <code>single_node_cluster</code>.
elasticsearch_reset_chewy:
message_html: Elasticsearch-järjestelmäindeksi on vanhentunut asetusmuutoksen vuoksi. Suorita <code>tootctl search deploy --reset-chewy</code> päivittääksesi sen.
elasticsearch_running_check:
message_html: Ei saatu yhteyttä Elasticsearch. Tarkista, että se on käynnissä tai poista kokotekstihaku käytöstä
message_html: Ei saatu yhteyttä Elasticsearchiin. Tarkista, että se on käynnissä tai poista kokotekstihaku käytöstä
elasticsearch_version_check:
message_html: 'Yhteensopimaton Elasticsearch versio: %{value}'
message_html: 'Yhteensopimaton Elasticsearch-versio: %{value}'
version_comparison: Elasticsearch %{running_version} on käynnissä, kun %{required_version} vaaditaan
rules_check:
action: Hallitse palvelimen sääntöjä
@ -1088,7 +1088,7 @@ fi:
new_confirmation_instructions_sent: Saat uuden vahvistuslinkin sisältävän sähköpostiviestin muutamassa minuutissa!
title: Tarkista sähköpostilaatikkosi
sign_in:
preamble_html: Kirjaudu <strong>%{domain}</strong>-tunnuksellasi. Jos tilisi sijaitsee eri palvelimella, et voi kirjautua täällä.
preamble_html: Kirjaudu <strong>%{domain}</strong>-tunnuksellasi. Jos tilisi sijaitsee eri palvelimella, et voi kirjautua tässä.
title: Kirjaudu palvelimelle %{domain}
sign_up:
manual_review: Palvelimen %{domain} valvojat tarkistavat rekisteröitymiset käsin. Helpottaaksesi rekisteröitymisesi käsittelyä kerro hieman itsestäsi ja miksi haluat luoda käyttäjätilin palvelimelle %{domain}.
@ -1270,7 +1270,7 @@ fi:
other: Kaikki <strong>%{count}</strong> kohdetta tällä sivulla on valittu.
all_matching_items_selected_html:
one: "<strong>%{count}</strong> kohde, joka vastaa hakuasi."
other: Kaikki <strong>%{count}</strong> kohdetta, jotka vastaavat hakuasi.
other: Kaikki <strong>%{count}</strong> hakuasi vastaavaa kohdetta.
cancel: Peruuta
changes_saved_msg: Muutosten tallennus onnistui!
confirm: Vahvista
@ -1282,7 +1282,7 @@ fi:
save_changes: Tallenna muutokset
select_all_matching_items:
one: Valitse %{count} kohde, joka vastaa hakuasi.
other: Valitse kaikki %{count} kohdetta, jotka vastaavat hakuasi.
other: Valitse kaikki %{count} hakuasi vastaavaa kohdetta.
today: tänään
validation_errors:
one: Kaikki ei ole aivan oikein! Tarkasta alla oleva virhe
@ -1402,7 +1402,7 @@ fi:
not_ready: Ei voi liittää tiedostoja, joiden käsittely on kesken. Yritä hetken kuluttua uudelleen!
too_many: Tiedostoja voi liittää enintään 4
migrations:
acct: uuden tilin käyttäjätunnus@verkkotunnus
acct: Muuttanut tunnukselle
cancel: Peruuta uudelleenohjaus
cancel_explanation: Uudelleenohjauksen peruuttaminen aktivoi uudelleen nykyisen tilisi, mutta ei palauta seuraajia, jotka on siirretty kyseiselle tilille.
cancelled_msg: Uudelleenohjaus peruttu onnistuneesti.
@ -1525,7 +1525,7 @@ fi:
privacy_hint_html: Määritä, kuinka paljon muita avustavia tietoja haluat paljastaa. Käyttäjät löytävät kiinnostavia profiileja ja hienoja sovelluksia, kun he selaavat toisten seuraamia käyttäjiä ja kun he näkevät, millä sovelluksilla nämä julkaisevat. Saatat kuitenkin haluta piilottaa nämä tiedot.
reach: Tavoittavuus
reach_hint_html: Määritä, haluatko tulla uusien käyttäjien löytämäksi ja seuraamaksi. Haluatko julkaisujesi näkyvän Selaa-sivulla? Haluatko muiden käyttäjien näkevän sinut seuraamissuosituksissaan? Haluatko hyväksyä kaikki uudet seuraajat automaattisesti vai päättää jokaisesta erikseen?
search: Haku
search: Hae
search_hint_html: Määritä, kuinka haluat tulla löydetyksi. Haluatko, että ihmiset löytävät sinut julkisten julkaisujesi perusteella? Haluatko, että ihmiset Mastodonin ulkopuolella löytävät profiilisi tehdessään hakuja verkossa? Otathan huomioon, ettei julkisten tietojen täyttä kaikista hakukoneista poisjäämistä voi taata.
title: Yksityisyys ja tavoittavuus
privacy_policy:

View file

@ -1866,11 +1866,11 @@ ja:
private: フォロワー限定
private_long: フォロワーにのみ表示されます
public: 公開
public_long: 誰でも見ることができ、かつ連合・ローカルタイムラインに表示されます
public_long: 誰でも見ることができ、かつ公開タイムラインに表示されます
public_unlisted: ローカル公開
public_unlisted_long: 誰でも見ることができますが、連合タイムラインには表示されません
unlisted: 収載
unlisted_long: 誰でも見ることができますが、連合・ローカルタイムラインには表示されません
public_unlisted_long: 誰でも見ることができますが、他のサーバーの連合タイムラインには表示されません
unlisted: 収載
unlisted_long: 誰でも見ることができますが、公開タイムラインには表示されません
unset: 設定なし
unset_long: デフォルトの挙動に従います
statuses_cleanup:

View file

@ -878,9 +878,9 @@ ko:
only_allowed: 허용된 것만
pending_review: 심사 대기
preview_card_providers:
allowed: 이 발행처의 링크는 유행록에 실릴 수 있음
allowed: 이 발행처의 링크는 유행록에 실릴 수 있음
description_html: 당신의 서버에서 많은 링크가 공유되고 있는 도메인들입니다. 링크의 도메인이 승인되기 전까지는 링크들은 공개적으로 트렌드에 게시되지 않습니다. 당신의 승인(또는 거절)은 서브도메인까지 확장됩니다.
rejected: 이 발행처의 링크는 유행록에 실리지 않음
rejected: 이 발행처의 링크는 유행록에 실리지 않음
title: 발행처
rejected: 거부됨
statuses:
@ -903,15 +903,15 @@ ko:
tag_servers_measure: 다른 서버들
tag_uses_measure: 총 사용
description_html: 현재 서버에서 볼 수 있는 게시물에서 많이 공유되고 있는 해시태그들입니다. 현재 사람들이 무슨 이야기를 하고 있는지 사용자들이 파악할 수 있도록 도움이 됩니다. 승인하지 않는 한 해시태그는 공개적으로 게시되지 않습니다.
listable: 추천될 수 있습니다
listable: 추천될 수 있
no_tag_selected: 아무 것도 선택 되지 않아 어떤 태그도 바뀌지 않았습니다
not_listable: 추천될 수 없습니다
not_trendable: 유행 목록에 나타나지 않습니다
not_usable: 사용불가
peaked_on_and_decaying: '%{date}에 고점을 찍고, 떨어지고 있습니다'
not_listable: 추천하지 않음
not_trendable: 유행 목록에 나타내지 않음
not_usable: 이용할 수 없음
peaked_on_and_decaying: "%{date}에 고점을 찍고, 떨어지고 있습니다"
title: 유행하는 해시태그
trendable: 유행 목록에 나타날 수 있습니다
trending_rank: '#%{rank}위로 유행 중'
trendable: 유행 목록에 나타날 수 있
trending_rank: "#%{rank}위로 유행 중"
usable: 사용 가능
usage_comparison: 오늘은 %{today}회 쓰였고, 어제는 %{yesterday}회 쓰임
used_by_over_week:

View file

@ -298,7 +298,7 @@ si:
updated_msg: ඉමොජි සාර්ථකව යාවත්කාලීන කරන ලදී!
upload: උඩුගත කරන්න
dashboard:
active_users: ක්රියාකාරී පරිශීලකයන්
active_users: ක්රිය පරිශ්‍රීලකයන්
interactions: අන්තර්ක්රියා
media_storage: මාධ්‍ය ආචයනය
new_users: නව පරිශ්‍රීලකයින්

View file

@ -42,7 +42,7 @@ fi:
bot: Tämä tili suorittaa enimmäkseen automaattisia toimintoja eikä sitä ehkä valvota
context: Ainakin yksi konteksti, jossa suodattimen pitäisi olla voimassa
current_password: Turvallisuussyistä kirjoita nykyisen tilin salasana
current_username: Vahvista kirjoittamalla nykyisen tilin käyttäjätunnus
current_username: Vahvista kirjoittamalla nykyisen tilin käyttäjänimi
digest: Lähetetään vain pitkän poissaolon jälkeen ja vain, jos olet saanut suoria viestejä poissaolosi aikana
email: Sinulle lähetetään vahvistussähköposti
header: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px
@ -147,9 +147,9 @@ fi:
show_collections: Näytä seuratut ja seuraajat profiilissa
unlocked: Hyväksy uudet seuraajat automaattisesti
account_alias:
acct: Vanhan tilin käyttäjätunnus
acct: Vanhan tilin käyttäjänimi
account_migration:
acct: Uuden tilin käyttäjätunnus
acct: Uuden tilin käyttäjänimi
account_warning_preset:
text: Esiasetettu teksti
title: Nimi
@ -226,7 +226,7 @@ fi:
title: Nimi
type: Tuontilaji
username: Käyttäjänimi
username_or_email: Käyttäjänimi tai sähköposti
username_or_email: Käyttäjänimi tai sähköpostiosoite
whole_word: Koko sana
email_domain_block:
with_dns_records: Sisällytä toimialueen MX tietueet ja IP-osoite
@ -252,7 +252,7 @@ fi:
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_contact_username: Yhteyshenkilön käyttäjänimi
site_extended_description: Laajennettu kuvaus
site_short_description: Palvelimen kuvaus
site_terms: Tietosuojakäytäntö