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

Conflicts:
	Gemfile

Solved conflicts by using upstream's line for posix-spawn
master
Thibaut Girka 7 years ago
commit 78ac246b87
  1. 2
      Gemfile
  2. 4
      Gemfile.lock
  3. 16
      app/controllers/api/v1/accounts/statuses_controller.rb
  4. 2
      app/controllers/media_proxy_controller.rb
  5. 2
      app/javascript/mastodon/features/compose/containers/warning_container.js
  6. 4
      app/javascript/mastodon/locales/ar.json
  7. 2
      app/javascript/mastodon/locales/ca.json
  8. 2
      app/javascript/mastodon/locales/en.json
  9. 6
      app/javascript/mastodon/locales/eo.json
  10. 14
      app/javascript/mastodon/locales/fr.json
  11. 2
      app/javascript/mastodon/locales/gl.json
  12. 242
      app/javascript/mastodon/locales/it.json
  13. 2
      app/javascript/mastodon/locales/ja.json
  14. 2
      app/javascript/mastodon/locales/ko.json
  15. 2
      app/javascript/mastodon/locales/nl.json
  16. 14
      app/javascript/mastodon/locales/oc.json
  17. 2
      app/javascript/mastodon/locales/pl.json
  18. 40
      app/javascript/mastodon/locales/ru.json
  19. 2
      app/javascript/mastodon/locales/sk.json
  20. 330
      app/javascript/mastodon/locales/sl.json
  21. 16
      app/javascript/mastodon/locales/zh-HK.json
  22. 30
      app/javascript/mastodon/service_worker/entry.js
  23. 3
      app/javascript/mastodon/storage/modifier.js
  24. 41
      app/javascript/mastodon/utils/resize_image.js
  25. 2
      app/lib/activitypub/activity/create.rb
  26. 2
      app/lib/ostatus/activity/creation.rb
  27. 4
      app/services/activitypub/process_account_service.rb
  28. 2
      app/services/fetch_link_card_service.rb
  29. 2
      app/services/resolve_account_service.rb
  30. 12
      app/services/update_remote_profile_service.rb
  31. 1
      config/locales/activerecord.sl.yml
  32. 1
      config/locales/ca.yml
  33. 1
      config/locales/devise.sl.yml
  34. 1
      config/locales/doorkeeper.ca.yml
  35. 1
      config/locales/doorkeeper.gl.yml
  36. 1
      config/locales/doorkeeper.nl.yml
  37. 1
      config/locales/doorkeeper.oc.yml
  38. 1
      config/locales/doorkeeper.pl.yml
  39. 1
      config/locales/doorkeeper.ru.yml
  40. 1
      config/locales/doorkeeper.sk.yml
  41. 1
      config/locales/doorkeeper.sl.yml
  42. 1
      config/locales/doorkeeper.zh-HK.yml
  43. 1
      config/locales/gl.yml
  44. 5
      config/locales/ja.yml
  45. 1
      config/locales/ko.yml
  46. 1
      config/locales/nl.yml
  47. 17
      config/locales/oc.yml
  48. 9
      config/locales/pl.yml
  49. 141
      config/locales/ru.yml
  50. 6
      config/locales/simple_form.ar.yml
  51. 2
      config/locales/simple_form.en.yml
  52. 4
      config/locales/simple_form.it.yml
  53. 6
      config/locales/simple_form.ja.yml
  54. 4
      config/locales/simple_form.ko.yml
  55. 4
      config/locales/simple_form.oc.yml
  56. 2
      config/locales/simple_form.ru.yml
  57. 2
      config/locales/simple_form.sk.yml
  58. 15
      config/locales/simple_form.sl.yml
  59. 2
      config/locales/simple_form.zh-HK.yml
  60. 1
      config/locales/sk.yml
  61. 57
      config/locales/sl.yml
  62. 11
      config/locales/zh-HK.yml

@ -19,7 +19,6 @@ gem 'fog-local', '~> 0.5', require: false
gem 'fog-openstack', '~> 0.1', require: false
gem 'paperclip', '~> 6.0'
gem 'paperclip-av-transcoder', '~> 0.6'
gem 'posix-spawn', '~> 0.3'
gem 'streamio-ffmpeg', '~> 3.0'
gem 'active_model_serializers', '~> 0.10'
@ -63,6 +62,7 @@ gem 'nsa', '~> 0.2'
gem 'oj', '~> 3.5'
gem 'ostatus2', '~> 2.0'
gem 'ox', '~> 2.9'
gem 'posix-spawn', '0.3.12'
gem 'pundit', '~> 1.1'
gem 'premailer-rails'
gem 'rack-attack', '~> 5.2'

@ -389,7 +389,7 @@ GEM
pghero (2.1.0)
activerecord
pkg-config (1.3.0)
posix-spawn (0.3.13)
posix-spawn (0.3.12)
powerpack (0.1.1)
premailer (1.11.1)
addressable
@ -714,7 +714,7 @@ DEPENDENCIES
pg (~> 1.0)
pghero (~> 2.1)
pkg-config (~> 1.3)
posix-spawn (~> 0.3)
posix-spawn (= 0.3.12)
premailer-rails
private_address_check (~> 0.4.1)
pry-byebug (~> 3.6)

@ -27,19 +27,17 @@ class Api::V1::Accounts::StatusesController < Api::BaseController
end
def account_statuses
default_statuses.tap do |statuses|
statuses.merge!(only_media_scope) if truthy_param?(:only_media)
statuses.merge!(pinned_scope) if truthy_param?(:pinned)
statuses.merge!(no_replies_scope) if truthy_param?(:exclude_replies)
end
end
def default_statuses
permitted_account_statuses.paginate_by_max_id(
statuses = truthy_param?(:pinned) ? pinned_scope : permitted_account_statuses
statuses = statuses.paginate_by_max_id(
limit_param(DEFAULT_STATUSES_LIMIT),
params[:max_id],
params[:since_id]
)
statuses.merge!(only_media_scope) if truthy_param?(:only_media)
statuses.merge!(no_replies_scope) if truthy_param?(:exclude_replies)
statuses
end
def permitted_account_statuses

@ -8,6 +8,8 @@ class MediaProxyController < ApplicationController
if lock.acquired?
@media_attachment = MediaAttachment.remote.find(params[:id])
redownload! if @media_attachment.needs_redownload? && !reject_media?
else
raise Mastodon::RaceConditionError
end
end

@ -21,7 +21,7 @@ const WarningWrapper = ({ needsLockWarning, hashtagWarning, directMessageWarning
return <Warning message={<FormattedMessage id='compose_form.hashtag_warning' defaultMessage="This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag." />} />;
}
if (directMessageWarning) {
return <Warning message={<FormattedMessage id='compose_form.direct_message_warning' defaultMessage='This toot will only be visible to all the mentioned users.' />} />;
return <Warning message={<FormattedMessage id='compose_form.direct_message_warning' defaultMessage='This toot will only be sent to all the mentioned users. However, the operators of your instance and any receiving instances may see this message.' />} />;
}
return null;

@ -1,5 +1,5 @@
{
"account.badges.bot": "Bot",
"account.badges.bot": "روبوت",
"account.block": "حظر @{name}",
"account.block_domain": "إخفاء كل شيئ قادم من إسم النطاق {domain}",
"account.blocked": "محظور",
@ -283,7 +283,7 @@
"upload_button.label": "إضافة وسائط",
"upload_form.description": "وصف للمعاقين بصريا",
"upload_form.focus": "قص",
"upload_form.undo": "إلغاء",
"upload_form.undo": "حذف",
"upload_progress.label": "يرفع...",
"video.close": "إغلاق الفيديو",
"video.exit_fullscreen": "الخروج من وضع الشاشة المليئة",

@ -283,7 +283,7 @@
"upload_button.label": "Afegir multimèdia",
"upload_form.description": "Descriure els problemes visuals",
"upload_form.focus": "Retallar",
"upload_form.undo": "Desfer",
"upload_form.undo": "Esborra",
"upload_progress.label": "Pujant...",
"video.close": "Tancar el vídeo",
"video.exit_fullscreen": "Surt de pantalla completa",

@ -63,7 +63,7 @@
"column_subheading.lists": "Lists",
"column_subheading.navigation": "Navigation",
"column_subheading.settings": "Settings",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning": "This toot will only be sent to the mentioned users. However, the operators of yours and any of the receiving instances may inspect this message.",
"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",

@ -1,5 +1,5 @@
{
"account.badges.bot": "Bot",
"account.badges.bot": "Roboto",
"account.block": "Bloki @{name}",
"account.block_domain": "Kaŝi ĉion de {domain}",
"account.blocked": "Blokita",
@ -18,7 +18,7 @@
"account.mute": "Silentigi @{name}",
"account.mute_notifications": "Silentigi sciigojn el @{name}",
"account.muted": "Silentigita",
"account.posts": "Tootoj",
"account.posts": "Mesaĝoj",
"account.posts_with_replies": "Kun respondoj",
"account.report": "Signali @{name}",
"account.requested": "Atendo de aprobo. Alklaku por nuligi peton de sekvado",
@ -283,7 +283,7 @@
"upload_button.label": "Aldoni aŭdovidaĵon",
"upload_form.description": "Priskribi por misvidantaj homoj",
"upload_form.focus": "Stuci",
"upload_form.undo": "Malfari",
"upload_form.undo": "Forigi",
"upload_progress.label": "Alŝutado…",
"video.close": "Fermi videon",
"video.exit_fullscreen": "Eksigi plenekrana",

@ -60,7 +60,7 @@
"column_header.unpin": "Retirer",
"column_subheading.navigation": "Navigation",
"column_subheading.settings": "Paramètres",
"compose_form.direct_message_warning": "Ce pouet sera uniquement visible à tous les utilisateurs mentionnés.",
"compose_form.direct_message_warning": "Ce pouet sera uniquement envoyé qu'aux personnes mentionnées. Cependant, l'administration de votre instance et des instances réceptrices pourront inspecter ce message.",
"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 pouets privés.",
"compose_form.lock_disclaimer.lock": "verrouillé",
@ -104,7 +104,7 @@
"empty_column.community": "Le fil public local est vide. Écrivez donc quelque chose pour le remplir!",
"empty_column.direct": "Vous n'avez pas encore de messages directs. Lorsque vous en enverrez ou recevrez un, il s'affichera ici.",
"empty_column.hashtag": "Il n’y a encore aucun contenu associé à ce hashtag.",
"empty_column.home": "Vous ne suivez encore personne. Visitez {public} ou bien utilisez la recherche pour vous connecter à d’autres personnes.",
"empty_column.home": "Vous ne suivez personne. Visitez {public} ou utilisez la recherche pour trouver d’autres personnes à suivre.",
"empty_column.home.public_timeline": "le fil public",
"empty_column.list": "Il n'y a rien dans cette liste pour l'instant. Dès que des personnes de cette liste publierons de nouveaux statuts, ils apparaîtront ici.",
"empty_column.notifications": "Vous n’avez pas encore de notification. Interagissez avec d’autres personnes pour débuter la conversation.",
@ -189,7 +189,7 @@
"onboarding.done": "Effectué",
"onboarding.next": "Suivant",
"onboarding.page_five.public_timelines": "Le fil public global affiche les messages de toutes les personnes suivies par les membres de {domain}. Le fil public local est identique, mais se limite aux membres de {domain}.",
"onboarding.page_four.home": "L’Accueil affiche les messages des personnes que vous suivez.",
"onboarding.page_four.home": "L’accueil affiche les messages des personnes que vous suivez.",
"onboarding.page_four.notifications": "La colonne de notification vous avertit lors d'une interaction avec vous.",
"onboarding.page_one.federation": "Mastodon est un réseau de serveurs indépendants qui se joignent pour former un réseau social plus vaste. Nous appelons ces serveurs des instances.",
"onboarding.page_one.full_handle": "Votre identifiant complet",
@ -218,8 +218,8 @@
"privacy.unlisted.short": "Non-listé",
"regeneration_indicator.label": "Chargement…",
"regeneration_indicator.sublabel": "Le flux de votre page principale est en cours de préparation!",
"relative_time.days": "{number} j",
"relative_time.hours": "{number} h",
"relative_time.days": "{number} j",
"relative_time.hours": "{number} h",
"relative_time.just_now": "à l’instant",
"relative_time.minutes": "{number} min",
"relative_time.seconds": "{number} s",
@ -237,7 +237,7 @@
"search_popout.tips.status": "statuts",
"search_popout.tips.text": "Un texte simple renvoie les noms affichés, les identifiants et les hashtags correspondants",
"search_popout.tips.user": "utilisateur⋅ice",
"search_results.accounts": "Personnes",
"search_results.accounts": "Comptes",
"search_results.hashtags": "Hashtags",
"search_results.statuses": "Pouets",
"search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}",
@ -283,7 +283,7 @@
"upload_button.label": "Joindre un média",
"upload_form.description": "Décrire pour les malvoyants",
"upload_form.focus": "Recadrer",
"upload_form.undo": "Annuler",
"upload_form.undo": "Supprimer",
"upload_progress.label": "Envoi en cours…",
"video.close": "Fermer la vidéo",
"video.exit_fullscreen": "Quitter plein écran",

@ -283,7 +283,7 @@
"upload_button.label": "Engadir medios",
"upload_form.description": "Describa para deficientes visuais",
"upload_form.focus": "Crop",
"upload_form.undo": "Desfacer",
"upload_form.undo": "Eliminar",
"upload_progress.label": "Subindo...",
"video.close": "Pechar video",
"video.exit_fullscreen": "Saír da pantalla completa",

@ -1,108 +1,108 @@
{
"account.badges.bot": "Bot",
"account.block": "Blocca @{name}",
"account.block_domain": "Hide everything from {domain}",
"account.block_domain": "Nascondi tutto da {domain}",
"account.blocked": "Bloccato",
"account.direct": "Direct Message @{name}",
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.domain_blocked": "Domain hidden",
"account.disclaimer_full": "Il profilo dell'utente mostrato qui sotto potrebbe essere incompleto",
"account.domain_blocked": "Dominio nascosto",
"account.edit_profile": "Modifica profilo",
"account.follow": "Segui",
"account.followers": "Seguaci",
"account.follows": "Segue",
"account.follows_you": "Ti segue",
"account.hide_reblogs": "Hide boosts from @{name}",
"account.hide_reblogs": "Nascondi condivisioni da @{name}",
"account.media": "Media",
"account.mention": "Menziona @{name}",
"account.moved_to": "{name} has moved to:",
"account.moved_to": "{name} si è trasferito su:",
"account.mute": "Silenzia @{name}",
"account.mute_notifications": "Mute notifications from @{name}",
"account.muted": "Muted",
"account.mute_notifications": "Silenzia notifiche da @{name}",
"account.muted": "Silenziato",
"account.posts": "Toot",
"account.posts_with_replies": "Toot con risposte",
"account.report": "Segnala @{name}",
"account.requested": "In attesa di approvazione",
"account.share": "Share @{name}'s profile",
"account.show_reblogs": "Show boosts from @{name}",
"account.share": "Condividi il profilo di @{name}",
"account.show_reblogs": "Mostra condivisioni da @{name}",
"account.unblock": "Sblocca @{name}",
"account.unblock_domain": "Unhide {domain}",
"account.unblock_domain": "Non nascondere {domain}",
"account.unfollow": "Non seguire",
"account.unmute": "Non silenziare @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
"account.view_full_profile": "View full profile",
"alert.unexpected.message": "An unexpected error occurred.",
"account.unmute_notifications": "Non silenziare più le notifiche da @{name}",
"account.view_full_profile": "Vedi profilo completo",
"alert.unexpected.message": "Si è verificato un errore inatteso.",
"alert.unexpected.title": "Oops!",
"boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio la prossima volta",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
"bundle_column_error.body": "C'è stato un errore mentre questo componente veniva caricato.",
"bundle_column_error.retry": "Riprova",
"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_modal_error.close": "Chiudi",
"bundle_modal_error.message": "C'è stato un errore mentre questo componente veniva caricato.",
"bundle_modal_error.retry": "Riprova",
"column.blocks": "Utenti bloccati",
"column.community": "Timeline locale",
"column.direct": "Direct messages",
"column.domain_blocks": "Hidden domains",
"column.direct": "Messaggi diretti",
"column.domain_blocks": "Domini nascosti",
"column.favourites": "Apprezzati",
"column.follow_requests": "Richieste di amicizia",
"column.home": "Home",
"column.lists": "Lists",
"column.lists": "Liste",
"column.mutes": "Utenti silenziati",
"column.notifications": "Notifiche",
"column.pins": "Pinned toot",
"column.public": "Timeline federata",
"column_back_button.label": "Indietro",
"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_header.hide_settings": "Nascondi impostazioni",
"column_header.moveLeft_settings": "Sposta colonna a sinistra",
"column_header.moveRight_settings": "Sposta colonna a destra",
"column_header.pin": "Fissa in cima",
"column_header.show_settings": "Mostra impostazioni",
"column_header.unpin": "Non fissare in cima",
"column_subheading.navigation": "Navigation",
"column_subheading.settings": "Settings",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"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",
"column_subheading.settings": "Impostazioni",
"compose_form.direct_message_warning": "Questo toot sarà visibile solo a tutti gli utenti citati.",
"compose_form.hashtag_warning": "Questo toot non è listato, quindi non sarà trovato nelle ricerche per hashtag. Solo i toot pubblici possono essere cercati per hashtag.",
"compose_form.lock_disclaimer": "Il tuo account non è {bloccato}. Chiunque può decidere di seguirti per vedere i tuoi post per soli seguaci.",
"compose_form.lock_disclaimer.lock": "bloccato",
"compose_form.placeholder": "A cosa stai pensando?",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.marked": "Media is marked as sensitive",
"compose_form.sensitive.unmarked": "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.sensitive.marked": "Questo media è contrassegnato come sensibile.",
"compose_form.sensitive.unmarked": "Questo media non è contrassegnato come sensibile.",
"compose_form.spoiler.marked": "Il testo è nascosto dall'avviso",
"compose_form.spoiler.unmarked": "Il testo non è nascosto",
"compose_form.spoiler_placeholder": "Content warning",
"confirmation_modal.cancel": "Cancel",
"confirmation_modal.cancel": "Annulla",
"confirmations.block.confirm": "Block",
"confirmations.block.message": "Are you sure you want to block {name}?",
"confirmations.block.message": "Sei sicuro di voler bloccare {name}?",
"confirmations.delete.confirm": "Delete",
"confirmations.delete.message": "Are you sure you want to delete this status?",
"confirmations.delete.message": "Sei sicuro di voler cancellare questo status?",
"confirmations.delete_list.confirm": "Delete",
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
"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.mute.confirm": "Mute",
"confirmations.mute.message": "Are you sure you want to mute {name}?",
"confirmations.unfollow.confirm": "Unfollow",
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
"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",
"confirmations.delete_list.message": "Sei sicuro di voler cancellare definitivamente questa lista?",
"confirmations.domain_block.confirm": "Nascondi intero dominio",
"confirmations.domain_block.message": "Sei davvero sicuro che vuoi bloccare l'intero {domain}? Nella maggior parte dei casi, pochi blocchi o silenziamenti mirati sono sufficienti e preferibili.",
"confirmations.mute.confirm": "Silenzia",
"confirmations.mute.message": "Sei sicuro di voler silenziare {name}?",
"confirmations.unfollow.confirm": "Non seguire più",
"confirmations.unfollow.message": "Sei sicuro che non vuoi più seguire {name}?",
"embed.instructions": "Inserisci questo status nel tuo sito copiando il codice qui sotto.",
"embed.preview": "Ecco come apparirà:",
"emoji_button.activity": "Attività",
"emoji_button.custom": "Personalizzato",
"emoji_button.flags": "Bandiere",
"emoji_button.food": "Cibo e bevande",
"emoji_button.label": "Inserisci emoji",
"emoji_button.nature": "Nature",
"emoji_button.nature": "Natura",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"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",
"emoji_button.objects": "Oggetti",
"emoji_button.people": "Persone",
"emoji_button.recent": "Usati di frequente",
"emoji_button.search": "Cerca...",
"emoji_button.search_results": "Risultati della ricerca",
"emoji_button.symbols": "Simboli",
"emoji_button.travel": "Viaggi e luoghi",
"empty_column.community": "La timeline locale è vuota. Condividi qualcosa pubblicamente per dare inizio alla festa!",
"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": "Non hai ancora nessun messaggio diretto. Quando ne manderai o riceverai qualcuno, apparirà qui.",
"empty_column.hashtag": "Non c'è ancora nessun post con questo hashtag.",
"empty_column.home": "Non stai ancora seguendo nessuno. Visita {public} o usa la ricerca per incontrare nuove persone.",
"empty_column.home.public_timeline": "la timeline pubblica",
@ -111,64 +111,64 @@
"empty_column.public": "Qui non c'è nulla! Scrivi qualcosa pubblicamente, o aggiungi utenti da altri server per riempire questo spazio.",
"follow_request.authorize": "Autorizza",
"follow_request.reject": "Rifiuta",
"getting_started.appsshort": "Apps",
"getting_started.appsshort": "App",
"getting_started.faq": "FAQ",
"getting_started.heading": "Come iniziare",
"getting_started.open_source_notice": "Mastodon è un software open source. Puoi contribuire o segnalare errori su GitHub all'indirizzo {github}.",
"getting_started.userguide": "User Guide",
"getting_started.userguide": "Manuale utente",
"home.column_settings.advanced": "Avanzato",
"home.column_settings.basic": "Semplice",
"home.column_settings.filter_regex": "Filtra con espressioni regolari",
"home.column_settings.show_reblogs": "Mostra post condivisi",
"home.column_settings.show_replies": "Mostra risposte",
"home.settings": "Impostazioni colonna",
"keyboard_shortcuts.back": "to navigate back",
"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.back": "per tornare indietro",
"keyboard_shortcuts.boost": "per condividere",
"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.description": "Description",
"keyboard_shortcuts.down": "to move down in the list",
"keyboard_shortcuts.down": "per spostarsi in basso nella lista",
"keyboard_shortcuts.enter": "to open status",
"keyboard_shortcuts.favourite": "to favourite",
"keyboard_shortcuts.favourite": "per segnare come apprezzato",
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
"keyboard_shortcuts.hotkey": "Hotkey",
"keyboard_shortcuts.legend": "to display this legend",
"keyboard_shortcuts.mention": "to mention author",
"keyboard_shortcuts.reply": "to reply",
"keyboard_shortcuts.search": "to focus search",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"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": "per mostrare questa spiegazione",
"keyboard_shortcuts.mention": "per menzionare l'autore",
"keyboard_shortcuts.reply": "per rispondere",
"keyboard_shortcuts.search": "per spostare il focus sulla ricerca",
"keyboard_shortcuts.toggle_hidden": "per mostrare/nascondere il testo dei CW",
"keyboard_shortcuts.toot": "per iniziare a scrivere un toot completamente nuovo",
"keyboard_shortcuts.unfocus": "per uscire dall'area di composizione o dalla ricerca",
"keyboard_shortcuts.up": "per spostarsi in alto nella lista",
"lightbox.close": "Chiudi",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lightbox.next": "Successivo",
"lightbox.previous": "Precedente",
"lists.account.add": "Aggiungi alla lista",
"lists.account.remove": "Togli dalla lista",
"lists.delete": "Delete list",
"lists.edit": "Edit list",
"lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title",
"lists.search": "Search among people you follow",
"lists.subheading": "Your lists",
"lists.edit": "Modifica lista",
"lists.new.create": "Aggiungi lista",
"lists.new.title_placeholder": "Titolo della nuova lista",
"lists.search": "Cerca tra le persone che segui",
"lists.subheading": "Le tue liste",
"loading_indicator.label": "Carico...",
"media_gallery.toggle_visible": "Imposta visibilità",
"missing_indicator.label": "Non trovato",
"missing_indicator.sublabel": "This resource could not be found",
"mute_modal.hide_notifications": "Hide notifications from this user?",
"missing_indicator.sublabel": "Risorsa non trovata",
"mute_modal.hide_notifications": "Nascondere le notifiche da quest'utente?",
"navigation_bar.blocks": "Utenti bloccati",
"navigation_bar.community_timeline": "Timeline locale",
"navigation_bar.direct": "Direct messages",
"navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.direct": "Messaggi diretti",
"navigation_bar.domain_blocks": "Domini nascosti",
"navigation_bar.edit_profile": "Modifica profilo",
"navigation_bar.favourites": "Apprezzati",
"navigation_bar.follow_requests": "Richieste di amicizia",
"navigation_bar.info": "Informazioni estese",
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
"navigation_bar.lists": "Lists",
"navigation_bar.logout": "Logout",
"navigation_bar.keyboard_shortcuts": "Tasti di scelta rapida",
"navigation_bar.lists": "Liste",
"navigation_bar.logout": "Esci",
"navigation_bar.mutes": "Utenti silenziati",
"navigation_bar.pins": "Pinned toots",
"navigation_bar.pins": "Toot fissati in cima",
"navigation_bar.preferences": "Impostazioni",
"navigation_bar.public_timeline": "Timeline federata",
"notification.favourite": "{name} ha apprezzato il tuo post",
@ -181,32 +181,32 @@
"notifications.column_settings.favourite": "Apprezzati:",
"notifications.column_settings.follow": "Nuovi seguaci:",
"notifications.column_settings.mention": "Menzioni:",
"notifications.column_settings.push": "Push notifications",
"notifications.column_settings.push_meta": "This device",
"notifications.column_settings.push": "Notifiche push",
"notifications.column_settings.push_meta": "Questo dispositivo",
"notifications.column_settings.reblog": "Post condivisi:",
"notifications.column_settings.show": "Mostra in colonna",
"notifications.column_settings.sound": "Riproduci suono",
"onboarding.done": "Done",
"onboarding.next": "Next",
"onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
"onboarding.page_four.home": "The home timeline shows posts from people you follow.",
"onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
"onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
"onboarding.page_one.full_handle": "Your full handle",
"onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.",
"onboarding.page_one.welcome": "Welcome to Mastodon!",
"onboarding.page_six.admin": "Your instance's admin is {admin}.",
"onboarding.page_six.almost_done": "Almost done...",
"onboarding.page_six.appetoot": "Bon Appetoot!",
"onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
"onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
"onboarding.page_six.guidelines": "community guidelines",
"onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
"onboarding.page_six.various_app": "mobile apps",
"onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
"onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
"onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
"onboarding.skip": "Skip",
"onboarding.done": "Fatto",
"onboarding.next": "Prossimo",
"onboarding.page_five.public_timelines": "La timeline locale mostra i post pubblici di tutti gli utenti di {domain}. La timeline federata mostra i post pubblici di tutti gli utenti seguiti da quelli di {domain}. Queste sono le timeline pubbliche, che vi danno grandi possibilità di scoprire nuovi utenti.",
"onboarding.page_four.home": "La timeline home mostra i post degli utenti che segui.",
"onboarding.page_four.notifications": "La colonna delle notifiche ti fa vedere quando qualcuno interagisce con te.",
"onboarding.page_one.federation": "Mastodon è una rete di server indipendenti che si collegano tra loro per formare un grande social network. I singoli server sono detti istanze.",
"onboarding.page_one.full_handle": "Il tuo nome utente completo",
"onboarding.page_one.handle_hint": "È ciò che diresti ai tuoi amici di cercare per trovarti.",
"onboarding.page_one.welcome": "Benvenuto in Mastodon!",
"onboarding.page_six.admin": "L'amministratore della tua istanza è {admin}.",
"onboarding.page_six.almost_done": "Quasi finito...",
"onboarding.page_six.appetoot": "Buon appetoot!",
"onboarding.page_six.apps_available": "Esistono {apps} per iOS, Android e altre piattaforme.",
"onboarding.page_six.github": "Mastodon è software libero e open-source. Puoi segnalare bug, richiedere nuove funzionalità, o contribuire al codice su {github}.",
"onboarding.page_six.guidelines": "linee guida per la comunità",
"onboarding.page_six.read_guidelines": "Ti preghiamo di leggere le {guidelines} di {domain}!",
"onboarding.page_six.various_app": "app per dispositivi mobili",
"onboarding.page_three.profile": "Puoi modificare il tuo profilo per cambiare i tuoi avatar, biografia e nome pubblico. E potrai trovarci altre preferenze.",
"onboarding.page_three.search": "Usa la barra di ricerca per trovare persone e hashtag, come {illustration} e {introductions}. Per trovare una persona che non è su questa istanza, usa il suo nome utente completo.",
"onboarding.page_two.compose": "Puoi scrivere dei post dalla colonna di composizione. Puoi caricare immagini, modificare le impostazioni di privacy, e aggiungere avvisi sul contenuto con le icone qui sotto.",
"onboarding.skip": "Salta",
"privacy.change": "Modifica privacy post",
"privacy.direct.long": "Invia solo a utenti menzionati",
"privacy.direct.short": "Diretto",
@ -216,11 +216,11 @@
"privacy.public.short": "Pubblico",
"privacy.unlisted.long": "Non mostrare sulla timeline pubblica",
"privacy.unlisted.short": "Non elencato",
"regeneration_indicator.label": "Loading…",
"regeneration_indicator.sublabel": "Your home feed is being prepared!",
"regeneration_indicator.label": "Caricamento in corso…",
"regeneration_indicator.sublabel": "Stiamo preparando il tuo home feed!",
"relative_time.days": "{number}d",
"relative_time.hours": "{number}h",
"relative_time.just_now": "now",
"relative_time.just_now": "ora",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"reply_indicator.cancel": "Annulla",
@ -283,7 +283,7 @@
"upload_button.label": "Aggiungi file multimediale",
"upload_form.description": "Describe for the visually impaired",
"upload_form.focus": "Crop",
"upload_form.undo": "Annulla",
"upload_form.undo": "Cancella",
"upload_progress.label": "Sto caricando...",
"video.close": "Close video",
"video.exit_fullscreen": "Exit full screen",

@ -287,7 +287,7 @@
"upload_button.label": "メディアを追加",
"upload_form.description": "視覚障害者のための説明",
"upload_form.focus": "焦点",
"upload_form.undo": "やり直す",
"upload_form.undo": "削除",
"upload_progress.label": "アップロード中...",
"video.close": "動画を閉じる",
"video.exit_fullscreen": "全画面を終了する",

@ -283,7 +283,7 @@
"upload_button.label": "미디어 추가",
"upload_form.description": "시각장애인을 위한 설명",
"upload_form.focus": "크롭",
"upload_form.undo": "재시도",
"upload_form.undo": "삭제",
"upload_progress.label": "업로드 중...",
"video.close": "동영상 닫기",
"video.exit_fullscreen": "전체화면 나가기",

@ -283,7 +283,7 @@
"upload_button.label": "Media toevoegen",
"upload_form.description": "Omschrijf dit voor mensen met een visuele beperking",
"upload_form.focus": "Bijsnijden",
"upload_form.undo": "Ongedaan maken",
"upload_form.undo": "Verwijderen",
"upload_progress.label": "Uploaden...",
"video.close": "Video sluiten",
"video.exit_fullscreen": "Volledig scherm sluiten",

@ -3,7 +3,7 @@
"account.block": "Blocar @{name}",
"account.block_domain": "Tot amagar del domeni {domain}",
"account.blocked": "Blocat",
"account.direct": "Direct Message @{name}",
"account.direct": "Escriure un MP a @{name}",
"account.disclaimer_full": "Aquelas informacions de perfil pòdon èsser incomplètas.",
"account.domain_blocked": "Domeni amagat",
"account.edit_profile": "Modificar lo perfil",
@ -42,7 +42,7 @@
"column.blocks": "Personas blocadas",
"column.community": "Flux public local",
"column.direct": "Messatges dirèctes",
"column.domain_blocks": "Domenis blocats",
"column.domain_blocks": "Domenis resconduts",
"column.favourites": "Favorits",
"column.follow_requests": "Demandas d’abonament",
"column.home": "Acuèlh",
@ -102,14 +102,14 @@
"emoji_button.symbols": "Simbòls",
"emoji_button.travel": "Viatges & lòcs",
"empty_column.community": "Lo flux public local es void. Escrivètz quicòm per lo garnir!",
"empty_column.direct": "Avètz pas encara de messatges. Quand ne mandatz un o que ne recebètz un, serà mostrat aquí.",
"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.hashtag": "I a pas encara de contengut ligat a aquesta etiqueta.",
"empty_column.home": "Vòstre flux d’acuèlh es void. Visitatz {public} o utilizatz la recèrca per vos connectar a d’autras personas.",
"empty_column.home.public_timeline": "lo flux public",
"empty_column.list": "I a pas res dins la lista pel moment. Quand de membres d’aquesta lista publiquen de novèls estatuts los veiretz aquí.",
"empty_column.notifications": "Avètz pas encara de notificacions. Respondètz a qualqu’un per començar una conversacion.",
"empty_column.public": "I a pas res aquí! Escrivètz quicòm de public, o seguètz de personas d’autras instàncias per garnir lo flux public",
"follow_request.authorize": "Autorizar",
"follow_request.authorize": "Acceptar",
"follow_request.reject": "Regetar",
"getting_started.appsshort": "Aplicacions",
"getting_started.faq": "FAQ",
@ -159,7 +159,7 @@
"navigation_bar.blocks": "Personas blocadas",
"navigation_bar.community_timeline": "Flux public local",
"navigation_bar.direct": "Messatges dirèctes",
"navigation_bar.domain_blocks": "Domenis amagats",
"navigation_bar.domain_blocks": "Domenis resconduts",
"navigation_bar.edit_profile": "Modificar lo perfil",
"navigation_bar.favourites": "Favorits",
"navigation_bar.follow_requests": "Demandas d’abonament",
@ -259,7 +259,7 @@
"status.pin": "Penjar al perfil",
"status.pinned": "Tut penjat",
"status.reblog": "Partejar",
"status.reblog_private": "Partejar al l’audiéncia d’origina",
"status.reblog_private": "Partejar a l’audiéncia d’origina",
"status.reblogged_by": "{name} a partejat",
"status.reply": "Respondre",
"status.replyAll": "Respondre a la conversacion",
@ -283,7 +283,7 @@
"upload_button.label": "Ajustar un mèdia",
"upload_form.description": "Descripcion pels mal vesents",
"upload_form.focus": "Retalhar",
"upload_form.undo": "Anullar",
"upload_form.undo": "Suprimir",
"upload_progress.label": "Mandadís…",
"video.close": "Tampar la vidèo",
"video.exit_fullscreen": "Sortir plen ecran",

@ -287,7 +287,7 @@
"upload_button.label": "Dodaj zawartość multimedialną",
"upload_form.description": "Wprowadź opis dla niewidomych i niedowidzących",
"upload_form.focus": "Przytnij",
"upload_form.undo": "Cofnij",
"upload_form.undo": "Usuń",
"upload_progress.label": "Wysyłanie",
"video.close": "Zamknij film",
"video.exit_fullscreen": "Opuść tryb pełnoekranowy",

@ -1,5 +1,5 @@
{
"account.badges.bot": "Bot",
"account.badges.bot": "Бот",
"account.block": "Блокировать",
"account.block_domain": "Блокировать все с {domain}",
"account.blocked": "Заблокирован(а)",
@ -41,7 +41,7 @@
"bundle_modal_error.retry": "Попробовать снова",
"column.blocks": "Список блокировки",
"column.community": "Локальная лента",
"column.direct": "Direct messages",
"column.direct": "Личные сообщения",
"column.domain_blocks": "Скрытые домены",
"column.favourites": "Понравившееся",
"column.follow_requests": "Запросы на подписку",
@ -60,7 +60,7 @@
"column_header.unpin": "Открепить",
"column_subheading.navigation": "Навигация",
"column_subheading.settings": "Настройки",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"compose_form.direct_message_warning": "Этот статус будет виден только упомянутым пользователям.",
"compose_form.hashtag_warning": "Этот пост не будет показывается в поиске по хэштегу, т.к. он непубличный. Только публичные посты можно найти в поиске по хэштегу.",
"compose_form.lock_disclaimer": "Ваш аккаунт не {locked}. Любой человек может подписаться на Вас и просматривать посты для подписчиков.",
"compose_form.lock_disclaimer.lock": "закрыт",
@ -102,7 +102,7 @@
"emoji_button.symbols": "Символы",
"emoji_button.travel": "Путешествия",
"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.hashtag": "Статусов с таким хэштегом еще не существует.",
"empty_column.home": "Пока Вы ни на кого не подписаны. Полистайте {public} или используйте поиск, чтобы освоиться и завести новые знакомства.",
"empty_column.home.public_timeline": "публичные ленты",
@ -136,7 +136,7 @@
"keyboard_shortcuts.mention": "упомянуть автора поста",
"keyboard_shortcuts.reply": "ответить",
"keyboard_shortcuts.search": "перейти к поиску",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_hidden": "показать/скрыть текст за предупреждением",
"keyboard_shortcuts.toot": "начать писать новый пост",
"keyboard_shortcuts.unfocus": "убрать фокус с поля ввода/поиска",
"keyboard_shortcuts.up": "вверх по списку",
@ -158,7 +158,7 @@
"mute_modal.hide_notifications": "Убрать уведомления от этого пользователя?",
"navigation_bar.blocks": "Список блокировки",
"navigation_bar.community_timeline": "Локальная лента",
"navigation_bar.direct": "Direct messages",
"navigation_bar.direct": "Личные сообщения",
"navigation_bar.domain_blocks": "Скрытые домены",
"navigation_bar.edit_profile": "Изменить профиль",
"navigation_bar.favourites": "Понравившееся",
@ -224,12 +224,12 @@
"relative_time.minutes": "{number}м",
"relative_time.seconds": "{number}с",
"reply_indicator.cancel": "Отмена",
"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.forward": "Переслать для {target}",
"report.forward_hint": "Этот аккаунт расположен на другом сервере. Отправить туда анонимную копию Вашей жалобы?",
"report.hint": "Жалоба будет отправлена модераторам Вашего сервера. Вы также можете указать подробную причину жалобы ниже:",
"report.placeholder": "Комментарий",
"report.submit": "Отправить",
"report.target": "Жалуемся на",
"report.target": "Жалуемся на {target}",
"search.placeholder": "Поиск",
"search_popout.search_format": "Продвинутый формат поиска",
"search_popout.tips.full_text": "Возвращает посты, которые Вы написали, отметили как 'избранное', продвинули или в которых были упомянуты, а также содержащие юзернейм, имя и хэштеги.",
@ -237,16 +237,16 @@
"search_popout.tips.status": "статус",
"search_popout.tips.text": "Простой ввод текста покажет совпадающие имена пользователей, отображаемые имена и хэштеги",
"search_popout.tips.user": "пользователь",
"search_results.accounts": "People",
"search_results.hashtags": "Hashtags",
"search_results.statuses": "Toots",
"search_results.accounts": "Люди",
"search_results.hashtags": "Хэштеги",
"search_results.statuses": "Посты",
"search_results.total": "{count, number} {count, plural, one {результат} few {результата} many {результатов} other {результатов}}",
"standalone.public_title": "Прямо сейчас",
"status.block": "Заблокировать @{name}",
"status.cancel_reblog_private": "Unboost",
"status.cancel_reblog_private": "Не продвигать",
"status.cannot_reblog": "Этот статус не может быть продвинут",
"status.delete": "Удалить",
"status.direct": "Direct message @{name}",
"status.direct": "Написать @{name}",
"status.embed": "Встроить",
"status.favourite": "Нравится",
"status.load_more": "Показать еще",
@ -257,9 +257,9 @@
"status.mute_conversation": "Заглушить тред",
"status.open": "Развернуть статус",
"status.pin": "Закрепить в профиле",
"status.pinned": "Pinned toot",
"status.pinned": "Закреплённый статус",
"status.reblog": "Продвинуть",
"status.reblog_private": "Boost to original audience",
"status.reblog_private": "Продвинуть для своей аудитории",
"status.reblogged_by": "{name} продвинул(а)",
"status.reply": "Ответить",
"status.replyAll": "Ответить на тред",
@ -268,21 +268,21 @@
"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_more_all": "Развернуть для всех",
"status.unmute_conversation": "Снять глушение с треда",
"status.unpin": "Открепить от профиля",
"tabs_bar.federated_timeline": "Глобальная",
"tabs_bar.home": "Главная",
"tabs_bar.local_timeline": "Локальная",
"tabs_bar.notifications": "Уведомления",
"tabs_bar.search": "Search",
"tabs_bar.search": "Поиск",
"ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Mastodon.",
"upload_area.title": "Перетащите сюда, чтобы загрузить",
"upload_button.label": "Добавить медиаконтент",
"upload_form.description": "Описать для людей с нарушениями зрения",
"upload_form.focus": "Crop",
"upload_form.focus": "Обрезать",
"upload_form.undo": "Отменить",
"upload_progress.label": "Загрузка...",
"video.close": "Закрыть видео",

@ -283,7 +283,7 @@
"upload_button.label": "Pridať médiá",
"upload_form.description": "Opis pre slabo vidiacich",
"upload_form.focus": "Vystrihni",
"upload_form.undo": "Navrátiť",
"upload_form.undo": "Vymaž",
"upload_progress.label": "Nahráva sa...",
"video.close": "Zavrieť video",
"video.exit_fullscreen": "Vpnúť zobrazenie na celú obrazovku",

@ -1,143 +1,143 @@
{
"account.badges.bot": "Bot",
"account.badges.bot": "Robot",
"account.block": "Blokiraj @{name}",
"account.block_domain": "Skrij vse iz {domain}",
"account.blocked": "Blokirano",
"account.direct": "Neposredno sporočilo @{name}",
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.domain_blocked": "Domain hidden",
"account.edit_profile": "Edit profile",
"account.follow": "Follow",
"account.followers": "Followers",
"account.follows": "Follows",
"account.follows_you": "Follows you",
"account.hide_reblogs": "Hide boosts from @{name}",
"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": "Toots",
"account.posts_with_replies": "Toots 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.unblock": "Unblock @{name}",
"account.unblock_domain": "Unhide {domain}",
"account.unfollow": "Unfollow",
"account.unmute": "Unmute @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
"account.view_full_profile": "View full profile",
"alert.unexpected.message": "An unexpected error occurred.",
"alert.unexpected.title": "Oops!",
"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.community": "Local timeline",
"column.direct": "Direct messages",
"column.domain_blocks": "Hidden 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 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_header.pin": "Pin",
"column_header.show_settings": "Show settings",
"column_header.unpin": "Unpin",
"column_subheading.navigation": "Navigation",
"column_subheading.settings": "Settings",
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
"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.placeholder": "What is on your mind?",
"compose_form.publish": "Toot",
"account.disclaimer_full": "Spodnje informacije lahko nepopolno prikazujejo profil uporabnika.",
"account.domain_blocked": "Skrita domena",
"account.edit_profile": "Uredi profil",
"account.follow": "Sledi",
"account.followers": "Sledilci",
"account.follows": "Sledi",
"account.follows_you": "Ti sledi",
"account.hide_reblogs": "Skrij napuhke od @{name}",
"account.media": "Mediji",
"account.mention": "Omeni @{name}",
"account.moved_to": "{name} se je premaknil na:",
"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.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 delitve osebe @{name}",
"account.unblock": "Odblokiraj @{name}",
"account.unblock_domain": "Razkrij {domain}",
"account.unfollow": "Prenehaj slediti",
"account.unmute": "Odtišaj @{name}",
"account.unmute_notifications": "Vklopi obvestila od @{name}",
"account.view_full_profile": "Ogled celotnega profila",
"alert.unexpected.message": "Zgodila se je nepričakovana napaka.",
"alert.unexpected.title": "Uups!",
"boost_modal.combo": "Če želite naslednjič preskočiti to, lahko pritisnete {combo}",
"bundle_column_error.body": "Med nalaganjem te komponente je prišlo do napake.",
"bundle_column_error.retry": "Poskusi ponovno",
"bundle_column_error.title": "Napaka omrežja",
"bundle_modal_error.close": "Zapri",
"bundle_modal_error.message": "Med nalaganjem te komponente je prišlo do napake.",
"bundle_modal_error.retry": "Poskusi ponovno",
"column.blocks": "Blokirani uporabniki",
"column.community": "Lokalna časovnica",
"column.direct": "Neposredna sporočila",
"column.domain_blocks": "Skrite domene",
"column.favourites": "Priljubljene",
"column.follow_requests": "Sledi prošnjam",
"column.home": "Domov",
"column.lists": "Seznami",
"column.mutes": "Utišani uporabniki",
"column.notifications": "Obvestila",
"column.pins": "Pripeti tuti",
"column.public": "Združena časovnica",
"column_back_button.label": "Nazaj",
"column_header.hide_settings": "Skrij nastavitve",
"column_header.moveLeft_settings": "Premakni stolpec na levo",
"column_header.moveRight_settings": "Premakni stolpec na desno",
"column_header.pin": "Pripni",
"column_header.show_settings": "Prikaži nastavitve",
"column_header.unpin": "Odpni",
"column_subheading.navigation": "Navigacija",
"column_subheading.settings": "Nastavitve",
"compose_form.direct_message_warning": "Ta tut bo viden le vsem omenjenim uporabnikom.",
"compose_form.hashtag_warning": "Ta tut ne bo naveden pod nobenim hashtagom, ker ni dodan hashtag. Samo javne tute lahko iščete pod hashtagom.",
"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š?",
"compose_form.publish": "Tutni",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.marked": "Media is marked as sensitive",
"compose_form.sensitive.unmarked": "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",
"compose_form.sensitive.marked": "Medij je označen kot občutljiv",
"compose_form.sensitive.unmarked": "Medij ni označen kot občutljiv",
"compose_form.spoiler.marked": "Besedilo je skrito za opozorilom",
"compose_form.spoiler.unmarked": "Besedilo ni skrito",
"compose_form.spoiler_placeholder": "Napišite opozorilo tukaj",
"confirmation_modal.cancel": "Prekliči",
"confirmations.block.confirm": "Block",
"confirmations.block.message": "Are you sure you want to block {name}?",
"confirmations.block.message": "Ali ste prepričani, da želite blokirati {name}?",
"confirmations.delete.confirm": "Delete",
"confirmations.delete.message": "Are you sure you want to delete this status?",
"confirmations.delete.message": "Ali ste prepričani, da želite izbrisati to stanje?",
"confirmations.delete_list.confirm": "Delete",
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
"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.mute.confirm": "Mute",
"confirmations.mute.message": "Are you sure you want to mute {name}?",
"confirmations.unfollow.confirm": "Unfollow",
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
"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 emojos!! (╯°□°)╯︵ ┻━┻",
"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.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.hashtag": "There is nothing in this hashtag yet.",
"empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
"empty_column.home.public_timeline": "the public timeline",
"empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
"empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
"follow_request.authorize": "Authorize",
"follow_request.reject": "Reject",
"getting_started.appsshort": "Apps",
"confirmations.delete_list.message": "Ali ste prepričani, da želite trajno izbrisati ta seznam?",
"confirmations.domain_block.confirm": "Skrij celotno domeno",
"confirmations.domain_block.message": "Ali ste res, res prepričani, da želite blokirati celotno {domain}? V večini primerov je nekaj ciljnih blokiranj ali utišanj dovolj in boljše.",
"confirmations.mute.confirm": "Utišanje",
"confirmations.mute.message": "Ali ste prepričani, da želite utišati {name}?",
"confirmations.unfollow.confirm": "Prenehaj slediti",
"confirmations.unfollow.message": "Ali ste prepričani, da ne želite več slediti {name}?",
"embed.instructions": "Vstavi ta status na svojo spletno stran tako, da kopirate spodnjo kodo.",
"embed.preview": "Tukaj je, kako bo izgledalo:",
"emoji_button.activity": "Dejavnost",
"emoji_button.custom": "Po meri",
"emoji_button.flags": "Zastave",
"emoji_button.food": "Hrana in Pijača",
"emoji_button.label": "Vstavi emojija",
"emoji_button.nature": "Narava",
"emoji_button.not_found": "Ni emojijev!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Predmeti",
"emoji_button.people": "Ljudje",
"emoji_button.recent": "Pogosto uporabljeni",
"emoji_button.search": "Poišči...",
"emoji_button.search_results": "Rezultati iskanja",
"emoji_button.symbols": "Simboli",
"emoji_button.travel": "Potovanja in Kraji",
"empty_column.community": "Lokalna časovnica je prazna. Napišite nekaj javnega, da se bo žoga zakotalila!",
"empty_column.direct": "Nimate še nobenih neposrednih sporočil. Ko ga pošljete ali prejmete, se prikaže tukaj.",
"empty_column.hashtag": "V tem hashtagu še ni nič.",
"empty_column.home": "Vaša domača časovnica je prazna! Obiščite {public} ali uporabite iskanje, da se boste srečali druge uporabnike.",
"empty_column.home.public_timeline": "javna časovnica",
"empty_column.list": "Na tem seznamu ni ničesar. Ko bodo člani tega seznama objavili nove statuse, se bodo pojavili tukaj.",
"empty_column.notifications": "Nimate še nobenih obvestil. Poveži se z drugimi, da začnete pogovor.",
"empty_column.public": "Tukaj ni ničesar! Da ga napolnite, napišite nekaj javnega ali pa ročno sledite uporabnikom iz drugih vozlišč",
"follow_request.authorize": "Odobri",
"follow_request.reject": "Zavrni",
"getting_started.appsshort": "Aplikacije",
"getting_started.faq": "FAQ",
"getting_started.heading": "Getting started",
"getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
"getting_started.userguide": "User Guide",
"home.column_settings.advanced": "Advanced",
"home.column_settings.basic": "Basic",
"home.column_settings.filter_regex": "Filter out by regular expressions",
"home.column_settings.show_reblogs": "Show boosts",
"home.column_settings.show_replies": "Show replies",
"home.settings": "Column settings",
"keyboard_shortcuts.back": "to navigate back",
"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.down": "to move down in the list",
"keyboard_shortcuts.enter": "to open status",
"getting_started.heading": "Prvi koraki",
"getting_started.open_source_notice": "Mastodon je odprtokodna programska oprema. V GitHubu na {github} lahko prispevate ali poročate o napakah.",
"getting_started.userguide": "Navodila za uporabo",
"home.column_settings.advanced": "Napredno",
"home.column_settings.basic": "Osnovno",
"home.column_settings.filter_regex": "Filtrirajte z navadnimi izrazi",
"home.column_settings.show_reblogs": "Pokaži sunke",
"home.column_settings.show_replies": "Pokaži odgovore",
"home.settings": "Nastavitve stolpcev",
"keyboard_shortcuts.back": "za krmarjenje nazaj",
"keyboard_shortcuts.boost": "suniti",
"keyboard_shortcuts.column": "osredotočiti status v enega od stolpcev",
"keyboard_shortcuts.compose": "osredotočiti na sestavljanje besedila",
"keyboard_shortcuts.description": "Opis",
"keyboard_shortcuts.down": "premakniti navzdol po seznamu",
"keyboard_shortcuts.enter": "odpreti status",
"keyboard_shortcuts.favourite": "to favourite",
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
"keyboard_shortcuts.hotkey": "Hotkey",
"keyboard_shortcuts.heading": "Tipkovne bližnjice",
"keyboard_shortcuts.hotkey": "Hitra tipka",
"keyboard_shortcuts.legend": "to display this legend",
"keyboard_shortcuts.mention": "to mention author",
"keyboard_shortcuts.reply": "to reply",
"keyboard_shortcuts.search": "to focus search",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toot": "to start a brand new toot",
"keyboard_shortcuts.toot": "da začnete povsem nov tut",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Close",
@ -163,12 +163,12 @@
"navigation_bar.edit_profile": "Edit profile",
"navigation_bar.favourites": "Favourites",
"navigation_bar.follow_requests": "Follow requests",
"navigation_bar.info": "Extended information",
"navigation_bar.info": "O tem vozlišču",
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
"navigation_bar.lists": "Lists",
"navigation_bar.logout": "Logout",
"navigation_bar.mutes": "Muted users",
"navigation_bar.pins": "Pinned toots",
"navigation_bar.pins": "Pripeti tuti",
"navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline",
"notification.favourite": "{name} favourited your status",
@ -197,7 +197,7 @@
"onboarding.page_one.welcome": "Welcome to Mastodon!",
"onboarding.page_six.admin": "Your instance's admin is {admin}.",
"onboarding.page_six.almost_done": "Almost done...",
"onboarding.page_six.appetoot": "Bon Appetoot!",
"onboarding.page_six.appetoot": "Bon Appetut!",
"onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
"onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
"onboarding.page_six.guidelines": "community guidelines",
@ -239,7 +239,7 @@
"search_popout.tips.user": "user",
"search_results.accounts": "People",
"search_results.hashtags": "Hashtags",
"search_results.statuses": "Toots",
"search_results.statuses": "Tuti",
"search_results.total": "{count, number} {count, plural, one {result} other {results}}",
"standalone.public_title": "A look inside...",
"status.block": "Block @{name}",
@ -257,41 +257,41 @@
"status.mute_conversation": "Mute conversation",
"status.open": "Expand this status",
"status.pin": "Pin on profile",
"status.pinned": "Pinned toot",
"status.reblog": "Boost",
"status.reblog_private": "Boost to original audience",
"status.reblogged_by": "{name} boosted",
"status.reply": "Reply",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
"status.sensitive_toggle": "Click to view",
"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.unmute_conversation": "Unmute conversation",
"status.unpin": "Unpin from profile",
"tabs_bar.federated_timeline": "Federated",
"tabs_bar.home": "Home",
"tabs_bar.local_timeline": "Local",
"tabs_bar.notifications": "Notifications",
"tabs_bar.search": "Search",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
"upload_area.title": "Drag & drop to upload",
"upload_button.label": "Add media",
"upload_form.description": "Describe for the visually impaired",
"upload_form.focus": "Crop",
"upload_form.undo": "Undo",
"upload_progress.label": "Uploading...",
"video.close": "Close video",
"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"
"status.pinned": "Pripeti tut",
"status.reblog": "Suni",
"status.reblog_private": "Suni v prvotno občinstvo",
"status.reblogged_by": "{name} sunjen",
"status.reply": "Odgovori",
"status.replyAll": "Odgovori na objavo",
"status.report": "Prijavi @{name}",
"status.sensitive_toggle": "Kliknite za ogled",
"status.sensitive_warning": "Občutljiva vsebina",
"status.share": "Deli",
"status.show_less": "Prikaži manj",
"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.unmute_conversation": "Odtišaj pogovor",
"status.unpin": "Odpni iz profila",
"tabs_bar.federated_timeline": "Združeno",
"tabs_bar.home": "Domov",
"tabs_bar.local_timeline": "Lokalno",
"tabs_bar.notifications": "Obvestila",
"tabs_bar.search": "Poišči",
"ui.beforeunload": "Vaš osnutek bo izgubljen, če zapustite Mastodona.",
"upload_area.title": "Povlecite in spustite za pošiljanje",
"upload_button.label": "Dodaj medij",
"upload_form.description": "Opišite za slabovidne",
"upload_form.focus": "Obreži",
"upload_form.undo": "Izbriši",
"upload_progress.label": "Pošiljanje...",
"video.close": "Zapri video",
"video.exit_fullscreen": "Izhod iz celozaslonskega načina",
"video.expand": "Razširi video",
"video.fullscreen": "Celozaslonski način",
"video.hide": "Skrij video",
"video.mute": "Utišaj zvok",
"video.pause": "Premor",
"video.play": "Predvajaj",
"video.unmute": "Vklopi zvok"
}

@ -1,5 +1,5 @@
{
"account.badges.bot": "Bot",
"account.badges.bot": "機械人",
"account.block": "封鎖 @{name}",
"account.block_domain": "隱藏來自 {domain} 的一切文章",
"account.blocked": "封鎖",
@ -41,7 +41,7 @@
"bundle_modal_error.retry": "重試",
"column.blocks": "封鎖用戶",
"column.community": "本站時間軸",
"column.direct": "Direct messages",
"column.direct": "個人訊息",
"column.domain_blocks": "隱藏的服務站",
"column.favourites": "最愛的文章",
"column.follow_requests": "關注請求",
@ -102,7 +102,7 @@
"emoji_button.symbols": "符號",
"emoji_button.travel": "旅遊景物",
"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.hashtag": "這個標籤暫時未有內容。",
"empty_column.home": "你還沒有關注任何用戶。快看看{public},向其他用戶搭訕吧。",
"empty_column.home.public_timeline": "公共時間軸",
@ -136,7 +136,7 @@
"keyboard_shortcuts.mention": "提及作者",
"keyboard_shortcuts.reply": "回覆",
"keyboard_shortcuts.search": "把標示移動到搜索",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_hidden": "顯示或隱藏被標為敏感的文字",
"keyboard_shortcuts.toot": "新的推文",
"keyboard_shortcuts.unfocus": "把標示移離文字輸入和搜索",
"keyboard_shortcuts.up": "在列表往上移動",
@ -158,7 +158,7 @@
"mute_modal.hide_notifications": "隱藏來自這用戶的通知嗎?",
"navigation_bar.blocks": "被你封鎖的用戶",
"navigation_bar.community_timeline": "本站時間軸",
"navigation_bar.direct": "Direct messages",
"navigation_bar.direct": "個人訊息",
"navigation_bar.domain_blocks": "隱藏的服務站",
"navigation_bar.edit_profile": "修改個人資料",
"navigation_bar.favourites": "最愛的內容",
@ -243,7 +243,7 @@
"search_results.total": "{count, number} 項結果",
"standalone.public_title": "站點一瞥…",
"status.block": "封鎖 @{name}",
"status.cancel_reblog_private": "Unboost",
"status.cancel_reblog_private": "取消轉推",
"status.cannot_reblog": "這篇文章無法被轉推",
"status.delete": "刪除",
"status.direct": "私訊 @{name}",
@ -259,7 +259,7 @@
"status.pin": "置頂到資料頁",
"status.pinned": "置頂文章",
"status.reblog": "轉推",
"status.reblog_private": "Boost to original audience",
"status.reblog_private": "轉推到原讀者",
"status.reblogged_by": "{name} 轉推",
"status.reply": "回應",
"status.replyAll": "回應所有人",
@ -283,7 +283,7 @@
"upload_button.label": "上載媒體檔案",
"upload_form.description": "為視覺障礙人士添加文字說明",
"upload_form.focus": "裁切",
"upload_form.undo": "還原",
"upload_form.undo": "刪除",
"upload_progress.label": "上載中……",
"video.close": "關閉影片",
"video.exit_fullscreen": "退出全熒幕",

@ -10,9 +10,12 @@ function openWebCache() {
}
function fetchRoot() {
return fetch('/', { credentials: 'include' });
return fetch('/', { credentials: 'include', redirect: 'manual' });
}
const firefox = navigator.userAgent.match(/Firefox\/(\d+)/);
const invalidOnlyIfCached = firefox && firefox[1] < 60;
// 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.
self.addEventListener('install', function(event) {
@ -28,14 +31,10 @@ self.addEventListener('fetch', function(event) {
const asyncResponse = fetchRoot();
const asyncCache = openWebCache();
event.respondWith(asyncResponse.then(response => {
if (response.ok) {
return asyncCache.then(cache => cache.put('/', response))
.then(() => response.clone());
}
throw null;
}).catch(() => asyncCache.then(cache => cache.match('/'))));
event.respondWith(asyncResponse.then(
response => asyncCache.then(cache => cache.put('/', response.clone()))
.then(() => response),
() => asyncCache.then(cache => cache.match('/'))));
} else if (url.pathname === '/auth/sign_out') {
const asyncResponse = fetch(event.request);
const asyncCache = openWebCache();
@ -54,19 +53,22 @@ self.addEventListener('fetch', function(event) {
event.respondWith(openSystemCache().then(cache => {
return cache.match(event.request.url).then(cached => {
if (cached === undefined) {
return fetch(event.request).then(fetched => {
if (fetched.ok) {
const put = cache.put(event.request.url, fetched.clone());
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) {
const put = cache.put(event.request.url, response.clone());
put.catch(() => freeStorage());
return put.then(() => {
freeStorage();
return fetched;
return response;
});
}
return fetched;
return response;
});
}

@ -184,7 +184,8 @@ export function putStatuses(records) {
export function freeStorage() {
// 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
return 'storage' in navigator && navigator.storage.estimate().then(({ quota, usage }) => {
// estimate method is not present on Chrome 57.0.2987.98 on Linux.
return 'storage' in navigator && 'estimate' in navigator.storage && navigator.storage.estimate().then(({ quota, usage }) => {
if (usage + storageMargin < quota) {
return null;
}

@ -44,36 +44,25 @@ const getOrientation = (img, type = 'image/png') => new Promise(resolve => {
const processImage = (img, { width, height, orientation, type = 'image/png' }) => new Promise(resolve => {
const canvas = document.createElement('canvas');
[canvas.width, canvas.height] = orientation < 5 ? [width, height] : [height, width];
if (4 < orientation && orientation < 9) {
canvas.width = height;
canvas.height = width;
} else {
canvas.width = width;
canvas.height = height;
}
const context = canvas.getContext('2d');
switch (orientation) {
case 2:
context.translate(width, 0);
break;
case 3:
context.translate(width, height);
break;
case 4:
context.translate(0, height);
break;
case 5:
context.rotate(0.5 * Math.PI);
context.translate(1, -1);
break;
case 6:
context.rotate(0.5 * Math.PI);
context.translate(0, -height);
break;
case 7:
context.rotate(0.5, Math.PI);
context.translate(width, -height);
break;
case 8:
context.rotate(-0.5, Math.PI);
context.translate(-width, 0);
break;
case 2: context.transform(-1, 0, 0, 1, width, 0); break;
case 3: context.transform(-1, 0, 0, -1, width, height); break;
case 4: context.transform(1, 0, 0, -1, 0, height); break;
case 5: context.transform(0, 1, 1, 0, 0, 0); break;
case 6: context.transform(0, 1, -1, 0, height, 0); break;
case 7: context.transform(0, -1, -1, 0, height, width); break;
case 8: context.transform(0, -1, 1, 0, 0, width); break;
}
context.drawImage(img, 0, 0, width, height);

@ -11,6 +11,8 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
if lock.acquired?
@status = find_existing_status
process_status if @status.nil?
else
raise Mastodon::RaceConditionError
end
end

@ -15,6 +15,8 @@ class OStatus::Activity::Creation < OStatus::Activity::Base
@status = find_status(id)
return [@status, false] unless @status.nil?
@status = process_status
else
raise Mastodon::RaceConditionError
end
end

@ -23,6 +23,8 @@ class ActivityPub::ProcessAccountService < BaseService
create_account if @account.nil?
update_account
process_tags
else
raise Mastodon::RaceConditionError
end
end
@ -44,7 +46,6 @@ class ActivityPub::ProcessAccountService < BaseService
@account.protocol = :activitypub
@account.username = @username
@account.domain = @domain
@account.uri = @uri
@account.suspended = true if auto_suspend?
@account.silenced = true if auto_silence?
@account.private_key = nil
@ -67,6 +68,7 @@ class ActivityPub::ProcessAccountService < BaseService
@account.followers_url = @json['followers'] || ''
@account.featured_collection_url = @json['featured'] || ''
@account.url = url || @uri
@account.uri = @uri
@account.display_name = @json['name'] || ''
@account.note = @json['summary'] || ''
@account.locked = @json['manuallyApprovesFollowers'] || false

@ -23,6 +23,8 @@ class FetchLinkCardService < BaseService
if lock.acquired?
@card = PreviewCard.find_by(url: @url)
process_url if @card.nil? || @card.updated_at <= 2.weeks.ago
else
raise Mastodon::RaceConditionError
end
end

@ -49,6 +49,8 @@ class ResolveAccountService < BaseService
else
handle_ostatus
end
else
raise Mastodon::RaceConditionError
end
end

@ -41,24 +41,24 @@ class UpdateRemoteProfileService < BaseService
account.header.destroy
end
save_emojis(account) if remote_profile.emojis.present?
save_emojis if remote_profile.emojis.present?
end
end
def save_emojis(parent)
do_not_download = DomainBlock.find_by(domain: parent.account.domain)&.reject_media?
def save_emojis
do_not_download = DomainBlock.find_by(domain: account.domain)&.reject_media?
return if do_not_download
remote_account.emojis.each do |link|
remote_profile.emojis.each do |link|
next unless link['href'] && link['name']
shortcode = link['name'].delete(':')
emoji = CustomEmoji.find_by(shortcode: shortcode, domain: parent.account.domain)
emoji = CustomEmoji.find_by(shortcode: shortcode, domain: account.domain)
next unless emoji.nil?
emoji = CustomEmoji.new(shortcode: shortcode, domain: parent.account.domain)
emoji = CustomEmoji.new(shortcode: shortcode, domain: account.domain)
emoji.image_remote_url = link['href']
emoji.save
end

@ -682,6 +682,7 @@ ca:
video:
one: "%{count} vídeo"
other: "%{count} vídeos"
boosted_from_html: Impulsat des de %{acct_link}
content_warning: 'Avís de contingut: %{warning}'
disallowed_hashtags:
one: 'conté una etiqueta no permesa: %{tags}'

@ -115,5 +115,6 @@ ca:
title: OAuth autorització requerida
scopes:
follow: seguir, blocar, desblocar i deixar de seguir comptes
push: rebre notificacions push del teu compte
read: llegir les dades del teu compte
write: publicar en el teu nom

@ -115,5 +115,6 @@ gl:
title: Precisa autorización OAuth
scopes:
follow: seguir, bloquear, desbloquear e deixar de seguir contas
push: recibir notificatións tipo push para a súa conta
read: ler os datos da súa conta
write: publicar no seu nome

@ -116,5 +116,6 @@ nl:
title: OAuth-autorisatie vereist
scopes:
follow: accounts volgen, negeren en blokkeren
push: ontvang pushmeldingen voor jouw account
read: berichten lezen
write: berichten plaatsen

@ -115,5 +115,6 @@ oc:
title: Cal una autorizacion OAuth
scopes:
follow: sègre, blocar, quitar de blocar e quitar de sègre de comptes
push: recebre las notificacions push per vòstre compte
read: legir las donadas de vòstre compte
write: publicar per vos

@ -115,5 +115,6 @@ pl:
title: Uwierzytelnienie OAuth jest wymagane
scopes:
follow: możliwość śledzenia, blokowania, usuwania blokad, anulowania śledzenia kont
push: otrzymywanie powiadomień push dla Twojego konta
read: dostęp do odczytu danych konta
write: możliwość publikowania wpisów w Twoim imieniu

@ -115,5 +115,6 @@ ru:
title: Требуется авторизация OAuth
scopes:
follow: подписываться, отписываться, блокировать и разблокировать аккаунты
push: принимать push-уведомления для Вашего аккаунта
read: читать данные Вашего аккаунта
write: отправлять за Вас посты

@ -115,5 +115,6 @@ sk:
title: Požadovaná OAuth autorizácia
scopes:
follow: sledovať, blokovať, povoliť a zušiť sledovanie účtov
push: dostávaj oznámenia ohľadom tvojho účtu ako notifikácie na plochu
read: prezrieť dáta na vašom účete
write: poslať vo vašom mene

@ -115,5 +115,6 @@ zh-HK:
title: 需要 OAuth 授權
scopes:
follow: 關注、封鎖、解除封鎖及取消關注用戶
push: 接收你的帳號的推送通知
read: 閱讀你的用戶資料
write: 以你的名義發佈文章

@ -682,6 +682,7 @@ gl:
video:
one: "%{count} vídeo"
other: "%{count} vídeos"
boosted_from_html: Promovida desde %{acct_link}
content_warning: 'Aviso sobre o contido: %{warning}'
disallowed_hashtags:
one: 'contiña unha etiqueta non permitida: %{tags}'

@ -49,6 +49,7 @@ ja:
reserved_username: このユーザー名は予約されています
roles:
admin: Admin
bot: Bot
moderator: Mod
unfollow: フォロー解除
admin:
@ -354,8 +355,8 @@ ja:
back_to_account: アカウントページに戻る
batch:
delete: 削除
nsfw_off: 閲覧注意のマークを取り除く
nsfw_on: 閲覧注意としてマークする
nsfw_off: 閲覧注意をはずす
nsfw_on: 閲覧注意する
failed_to_execute: 実行に失敗しました
media:
title: メディア

@ -49,6 +49,7 @@ ko:
reserved_username: 이 아이디는 예약되어 있습니다
roles:
admin: 관리자
bot:
moderator: 모더레이터
unfollow: 팔로우 해제
admin:

@ -682,6 +682,7 @@ nl:
video:
one: "%{count} video"
other: "%{count} video's"
boosted_from_html: Geboost van %{acct_link}
content_warning: 'Tekstwaarschuwing: %{warning}'
disallowed_hashtags:
one: 'bevatte een niet toegestane hashtag: %{tags}'

@ -70,7 +70,7 @@ oc:
title: Cambiar l’adreça a %{username}
confirm: Confirmar
confirmed: Confirmat
confirming: Confirmando
confirming: Confirmacion
demote: Retrogradar
disable: Desactivar
disable_two_factor_authentication: Desactivar 2FA
@ -79,7 +79,7 @@ oc:
domain: Domeni
edit: Modificar
email: Corrièl
email_status: Estado del correo electrónico
email_status: Estat de l’adreça
enable: Activar
enabled: Activat
feed_url: Flux URL
@ -119,15 +119,16 @@ oc:
redownload: Actualizar los avatars
remove_avatar: Supriir l’avatar
resend_confirmation:
already_confirmed: Este usuario ya está confirmado
send: Reenviar el correo electrónico de confirmación
success: "¡Correo electrónico de confirmación enviado con éxito!"
already_confirmed: Aqueste utilizaire es ja confirmat
send: Tornar mandar lo corrièl de confirmacion
success: Corrièl de confirmacion corrèctament mandat !
reset: Reïnicializar
reset_password: Reïnicializar lo senhal
resubscribe: Se tornar abonar
role: Permissions
roles:
admin: Administrator
bot: Robòt
moderator: Moderador
staff: Personnal
user: Uitlizaire
@ -537,7 +538,7 @@ oc:
archive_takeout:
date: Data
download: Telecargar vòstre archiu
hint_html: Podètz demandar un archiu de vòstres <strong>tuts e mèdias enviats</strong>. Las donadas exportadas seràn al format ActivityPub, ligible pels logicials compatibles.
hint_html: Podètz demandar un archiu de vòstres <strong>tuts e mèdias enviats</strong>. Las donadas exportadas seràn al format ActivityPub, ligible pels logicials compatibles. Podètz demandar un archiu cada 7 jorns.
in_progress: Complilacion de vòstre archiu...
request: Demandar vòstre archiu
size: Talha
@ -561,7 +562,7 @@ oc:
generic:
changes_saved_msg: Cambiaments ben realizats!
powered_by: propulsat per %{link}
save_changes: Salvagardar los cambiaments
save_changes: Salvar los cambiaments
validation_errors:
one: I a quicòm que truca! Mercés de corregir l’error çai-jos
other: I a quicòm que truca! Mercés de corregir las %{count} errors çai-jos
@ -755,6 +756,7 @@ oc:
video:
one: "%{count} vidèo"
other: "%{count} vidèos"
boosted_from_html: Partejat de %{acct_link}
content_warning: 'Avertiment de contengut: %{warning}'
disallowed_hashtags:
one: 'conten una etiqueta desactivada: %{tags}'
@ -827,5 +829,6 @@ oc:
users:
invalid_email: L’adreça de corrièl es invalida
invalid_otp_token: Còdi d’autentificacion en dos temps invalid
otp_lost_help_html: Se perdatz l’accès al dos, podètz benlèu contactar %{email}
seamless_external_login: Sètz connectat via un servici extèrn, los paramètres de senhal e de corrièl son doncas pas disponibles.
signed_in_as: 'Session a:'

@ -36,8 +36,8 @@ pl:
what_is_mastodon: Czym jest Mastodon?
accounts:
follow: Śledź
followers: Śledzących
following: Śledzi
followers: Śledzący
following: Śledzeni
media: Zawartość multimedialna
moved_html: "%{name} korzysta teraz z konta %{new_profile_link}:"
nothing_here: Niczego tu nie ma!
@ -49,6 +49,7 @@ pl:
reserved_username: Ta nazwa użytkownika jest zarezerwowana
roles:
admin: Administrator
bot: Bot
moderator: Moderator
unfollow: Przestań śledzić
admin:
@ -694,7 +695,7 @@ pl:
your_apps: Twoje aplikacje
statuses:
attached:
description: 'Przytwierdzony: %{attached}'
description: 'Załączono: %{attached}'
image:
few: "%{count} obrazy"
many: "%{count} obrazów"
@ -705,6 +706,7 @@ pl:
many: "%{count} filmów"
one: "%{count} film"
other: "%{count} filmów"
boosted_from_html: Podbito przez %{acct_link}
content_warning: 'Ostrzeżenie o zawartości: %{warning}'
disallowed_hashtags:
one: 'zawiera niedozwolony hashtag: %{tags}'
@ -854,5 +856,6 @@ pl:
users:
invalid_email: Adres e-mail jest niepoprawny
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.
signed_in_as: 'Zalogowany jako:'

@ -4,6 +4,7 @@ ru:
about_hashtag_html: Это публичные статусы, отмеченные хэштегом <strong>#%{hashtag}</strong>. Вы можете взаимодействовать с ними при наличии у Вас аккаунта в глобальной сети Mastodon.
about_mastodon_html: Mastodon - это <em>свободная</em> социальная сеть с <em>открытым исходным кодом</em>. Как <em>децентрализованная</em> альтернатива коммерческим платформам, Mastodon предотвращает риск монополизации Вашего общения одной компанией. Выберите сервер, которому Вы доверяете &mdash; что бы Вы ни выбрали, Вы сможете общаться со всеми остальными. Любой может запустить свой собственный узел Mastodon и участвовать в <em>социальной сети</em> совершенно бесшовно.
about_this: Об этом узле
administered_by: 'Администратор узла:'
closed_registrations: В данный момент регистрация на этом узле закрыта.
contact: Связаться
contact_missing: Не установлено
@ -48,6 +49,7 @@ ru:
reserved_username: Имя пользователя зарезервировано
roles:
admin: Администратор
bot: Бот
moderator: Модератор
unfollow: Отписаться
admin:
@ -58,7 +60,15 @@ ru:
destroyed_msg: Заметка модератора успешно удалена!
accounts:
are_you_sure: Вы уверены?
avatar: Аватар
by_domain: Домен
change_email:
changed_msg: E-mail аккаунта успешно изменён!
current_email: Текущий e-mail
label: Сменить e-mail
new_email: Новый e-mail
submit: Сменить e-mail
title: Сменить e-mail для %{username}
confirm: Подтвердить
confirmed: Подтверждено
confirming: подтверждающий
@ -108,6 +118,7 @@ ru:
public: Публичный
push_subscription_expires: Подписка PuSH истекает
redownload: Обновить аватар
remove_avatar: Удалить аватар
resend_confirmation:
already_confirmed: Этот пользователь уже подтвержден
send: Повторно отправить подтверждение по электронной почте
@ -132,13 +143,16 @@ ru:
statuses: Статусы
subscribe: Подписаться
title: Аккаунты
unconfirmed_email: Неподтверждённый e-mail
undo_silenced: Снять глушение
undo_suspension: Снять блокировку
unsubscribe: Отписаться
username: Имя пользователя
web: WWW
web: Веб
action_logs:
actions:
assigned_to_self_report: "%{name} назначил(а) жалобу %{target} на себя"
change_email_user: "%{name} сменил(а) e-mail пользователя %{target}"
confirm_user: "%{name} подтвердил(а) e-mail адрес пользователя %{target}"
create_custom_emoji: "%{name} загрузил(а) новый эмодзи %{target}"
create_domain_block: "%{name} заблокировал(а) домен %{target}"
@ -154,10 +168,13 @@ ru:
enable_user: "%{name} включил(а) вход пользователя %{target}"
memorialize_account: "%{name} перевел(а) аккаунт пользователя %{target} в режим памятника"
promote_user: "%{name} повысил(а) пользователя %{target}"
remove_avatar_user: "%{name} удалил(а) аватар пользователя %{target}"
reopen_report: "%{name} переоткрыл(а) жалобу %{target}"
reset_password_user: "%{name} сбросил(а) пароль пользователя %{target}"
resolve_report: "%{name} dismissed report %{target}"
resolve_report: "%{name} решил(а) жалобу %{target}"
silence_account: "%{name} заглушил(а) аккаунт %{target}"
suspend_account: "%{name} заморозил(а) аккаунт %{target}"
unassigned_report: "%{name} сняла назначение жалобы %{target}"
unsilence_account: "%{name} снял(а) глушение аккаунта %{target}"
unsuspend_account: "%{name} разморозил(а) аккаунт %{target}"
update_custom_emoji: "%{name} обновил(а) эмодзи %{target}"
@ -245,24 +262,44 @@ ru:
expired: Истёкшие
title: Фильтр
title: Приглашения
report_notes:
created_msg: Примечание жалобы создано!
destroyed_msg: Примечание жалобы удалено!
reports:
account:
note: заметка
report: жалоба
action_taken_by: 'Действие предпринято:'
are_you_sure: Вы уверены?
assign_to_self: Назначить себе
assigned: Назначенный модератор
comment:
none: Нет
created_at: Создано
id: ID
mark_as_resolved: Отметить как разрешенную
mark_as_unresolved: Отметить как неразрешённую
notes:
create: Добавить заметку
create_and_resolve: Разрешить с заметкой
create_and_unresolve: Переоткрыть с заметкой
delete: Удалить
placeholder: Опишите, какие действия были приняты, или любые другие подробности…
reopen: Переоткрыть жалобу
report: 'Жалоба #%{id}'
report_contents: Содержимое
reported_account: Аккаунт нарушителя
reported_by: Отправитель жалобы
resolved: Разрешено
resolved_msg: Жалоба успешно обработана!
silence_account: Заглушить аккаунт
status: Статус
suspend_account: Блокировать аккаунт
target: Цель
title: Жалобы
unassign: Снять назначение
unresolved: Неразрешенные
updated_at: Обновлена
view: Просмотреть
settings:
activity_api_enabled:
@ -339,6 +376,7 @@ ru:
admin_mailer:
new_report:
body: "%{reporter} подал(а) жалобу на %{target}"
body_remote: Кто-то с узла %{domain} пожаловался на %{target}
subject: Новая жалоба, узел %{instance} (#%{id})
application_mailer:
notification_preferences: Изменить настройки e-mail
@ -428,7 +466,7 @@ ru:
archive_takeout:
date: Дата
download: Скачать ваш архив
hint_html: Вы можете запросить архив своих <strong>статусов и загруженных медиа-файлов</strong>. Экспортированные данные будут в формате ActivityPub, который можно прочесть любой соответствующей программой.
hint_html: Вы можете запросить архив своих <strong>статусов и загруженных медиа-файлов</strong>. Экспортированные данные будут в формате ActivityPub, который можно прочесть любой соответствующей программой. Запрашивать архив можно каждые 7 дней.
in_progress: Собирается ваш архив...
request: Запросить ваш архив
size: Размер
@ -444,6 +482,8 @@ ru:
lock_link: Закройте аккаунт
purge: Удалить из подписчиков
success:
few: В процессе мягкой блокировки подписчиков с %{count} доменов...
many: В процессе мягкой блокировки подписчиков с %{count} доменов...
one: В процессе мягкой блокировки подписчиков с одного домена...
other: В процессе мягкой блокировки подписчиков с %{count} доменов...
true_privacy_html: Пожалуйста, заметьте, что <strong>настоящая конфиденциальность может быть достигнута только при помощи end-to-end шифрования</strong>.
@ -454,6 +494,8 @@ ru:
powered_by: работает на %{link}
save_changes: Сохранить изменения
validation_errors:
few: Что-то здесь не так! Пожалуйста, прочитайте о %{count} ошибках ниже
many: Что-то здесь не так! Пожалуйста, прочитайте о %{count} ошибках ниже
one: Что-то здесь не так! Пожалуйста, прочитайте об ошибке ниже
other: Что-то здесь не так! Пожалуйста, прочитайте о %{count} ошибках ниже
imports:
@ -549,7 +591,7 @@ ru:
units:
billion: млрд
million: млн
quadrillion: Q
quadrillion: квадрлн
thousand: тыс
trillion: трлн
unit: ''
@ -583,6 +625,10 @@ ru:
missing_resource: Поиск требуемого перенаправления URL для Вашего аккаунта завершился неудачей
proceed: Продолжить подписку
prompt: 'Вы хотите подписаться на:'
remote_unfollow:
error: Ошибка
title: Заголовок
unfollowed: Отписаны
sessions:
activity: Последняя активность
browser: Браузер
@ -652,7 +698,13 @@ ru:
many: "%{count} видео"
one: "%{count} видео"
other: "%{count} видео"
boosted_from_html: Продвижение польз. %{acct_link}
content_warning: 'Спойлер: %{warning}'
disallowed_hashtags:
few: 'содержались запрещённые хэштеги: %{tags}'
many: 'содержались запрещённые хэштеги: %{tags}'
one: 'содержался запрещённый хэштег: %{tags}'
other: 'содержались запрещённые хэштеги: %{tags}'
open_in_web: Открыть в WWW
over_character_limit: превышен лимит символов (%{max})
pin_errors:
@ -675,8 +727,86 @@ ru:
reblogged: продвинул(а)
sensitive_content: Чувствительный контент
terms:
body_html: |
<h2>Privacy Policy</h2>
<h3 id="collect">What information do we collect?</h3>
<ul>
<li><em>Basic account information</em>: 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.</li>
<li><em>Posts, following and other public information</em>: 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.</li>
<li><em>Direct and followers-only posts</em>: 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. <em>Please keep in mind that the operators of the server and any receiving server may view such messages</em>, and that recipients may screenshot, copy or otherwise re-share them. <em>Do not share any dangerous information over Mastodon.</em></li>
<li><em>IPs and other metadata</em>: 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.</li>
</ul>
<hr class="spacer" />
<h3 id="use">What do we use your information for?</h3>
<p>Any of the information we collect from you may be used in the following ways:</p>
<ul>
<li>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.</li>
<li>To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.</li>
<li>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.</li>
</ul>
<hr class="spacer" />
<h3 id="protect">How do we protect your information?</h3>
<p>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.</p>
<hr class="spacer" />
<h3 id="data-retention">What is our data retention policy?</h3>
<p>We will make a good faith effort to:</p>
<ul>
<li>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.</li>
<li>Retain the IP addresses associated with registered users no more than 12 months.</li>
</ul>
<p>You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.</p>
<p>You may irreversibly delete your account at any time.</p>
<hr class="spacer"/>
<h3 id="cookies">Do we use cookies?</h3>
<p>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.</p>
<p>We use cookies to understand and save your preferences for future visits.</p>
<hr class="spacer" />
<h3 id="disclose">Do we disclose any information to outside parties?</h3>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<hr class="spacer" />
<h3 id="coppa">Children's Online Privacy Protection Act Compliance</h3>
<p>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 (<a href="https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act">Children's Online Privacy Protection Act</a>) do not use this site.</p>
<hr class="spacer" />
<h3 id="changes">Changes to our Privacy Policy</h3>
<p>If we decide to change our privacy policy, we will post those changes on this page.</p>
<p>This document is CC-BY-SA. It was last updated March 7, 2018.</p>
<p>Originally adapted from the <a href="https://github.com/discourse/discourse">Discourse privacy policy</a>.</p>
title: Условия обслуживания и политика конфиденциальности %{instance}
themes:
contrast: Высококонтрастная
default: Mastodon
time:
formats:
@ -722,6 +852,7 @@ ru:
title: Добро пожаловать на борт, %{name}!
users:
invalid_email: Введенный e-mail неверен
invalid_otp_token: Введен неверный код
invalid_otp_token: Введен неверный код двухфакторной аутентификации
otp_lost_help_html: Если Вы потеряли доступ к обоим, свяжитесь с %{email}
seamless_external_login: Вы залогинены через сторонний сервис, поэтому настройки e-mail и пароля недоступны.
signed_in_as: 'Выполнен вход под именем:'

@ -6,15 +6,9 @@ ar:
avatar: ملف PNG أو GIF أو JPG. حجمه على أقصى تصدير 2MB. سيتم تصغيره إلى 400x400px
bot: يُعلِم أنّ هذا الحساب لا يمثل شخصًا
digest: تُرسَل إليك بعد مُضيّ مدة مِن خمول نشاطك و فقط إذا ما تلقيت رسائل شخصية مباشِرة أثناء فترة غيابك مِن الشبكة
display_name:
one: <span class="name-counter">1</span> حرف باقي
other: <span class="name-counter">%{count}</span> حروف متبقية
fields: يُمكنك عرض 4 عناصر على شكل جدول في ملفك الشخصي
header: ملف PNG أو GIF أو JPG. حجمه على أقصى تصدير 2MB. سيتم تصغيره إلى 700x335px
locked: يتطلب منك الموافقة يدويا على طلبات المتابعة
note:
one: <span class="note-counter">1</span> حرف متبقي
other: <span class="note-counter">%{count}</span> حروف متبقية
setting_noindex: ذلك يؤثر على حالة ملفك الشخصي و صفحاتك
setting_theme: ذلك يؤثر على الشكل الذي سيبدو عليه ماستدون عندما تقوم بالدخول مِن أي جهاز.
imports:

@ -4,7 +4,7 @@ en:
hints:
defaults:
avatar: PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px
bot: Warns people that the account does not represent a person
bot: This account mainly performs automated actions and might not be monitored
digest: Only sent after a long period of inactivity and only if you have received any personal messages in your absence
display_name:
one: <span class="name-counter">1</span> character left

@ -4,6 +4,7 @@ it:
hints:
defaults:
avatar: PNG, GIF o JPG. Al massimo 2MB. Verranno scalate a 400x400px
bot: Avverte che l'account non rappresenta una persona
digest: Inviata solo dopo un lungo periodo di intattività e solo se hai ricevuto qualsiasi messaggio personale in tua assenza
display_name:
one: <span class="name-counter">1</span> carattere rimanente
@ -19,7 +20,7 @@ it:
imports:
data: File CSV esportato da un altra istanza di Mastodon
sessions:
otp: Inserisci il codice due-fattori dal tuo telefono o usa uno dei codici di recupero.
otp: 'Inserisci il codice a due fattori generato dall''app del tuo telefono o usa uno dei codici di recupero:'
user:
filtered_languages: Le lingue selezionate verranno filtrate dalla timeline pubblica per te
labels:
@ -29,6 +30,7 @@ it:
value: Contenuto
defaults:
avatar: Avatar
bot: Questo account è un bot
confirm_new_password: Conferma nuova password
confirm_password: Conferma password
current_password: Password corrente

@ -3,12 +3,12 @@ ja:
simple_form:
hints:
defaults:
avatar: 2MBまでのPNGGIF、JPGが利用可能です。400x400pxまで縮小されます
bot: アカウントが人を表すものではないことを表示します
avatar: 2MBまでのPNGGIF、JPGが利用可能です。400x400pxまで縮小されます
bot: アカウントが人を表すものではないことを表示します
digest: 長期間使用していない場合と不在時に返信を受けた場合のみ送信されます
display_name: あと<span class="name-counter">%{count}</span>文字入力できます。
fields: プロフィールに表として4つまでの項目を表示することができます
header: 2MBまでのPNGGIF、JPGが利用可能です。 700x335pxまで縮小されます
header: 2MBまでのPNGGIF、JPGが利用可能です。 700x335pxまで縮小されます
locked: フォロワーを手動で承認する必要があります
note: あと<span class="note-counter">%{count}</span>文字入力できます。
setting_noindex: 公開プロフィールおよび各投稿ページに影響します

@ -4,6 +4,7 @@ ko:
hints:
defaults:
avatar: PNG, GIF 혹은 JPG. 최대 2MB. 400x400px로 다운스케일 될 것임
bot: 사람들에게 계정이 사람이 아님을 알립니다
digest: 오랫동안 활동하지 않았을 때 받은 멘션들에 대한 요약 받기
display_name:
one: <span class="name-counter">1</span> 글자 남음
@ -19,7 +20,7 @@ ko:
imports:
data: 다른 마스토돈 인스턴스에서 추출된 CSV 파일
sessions:
otp: 2단계 인증 코드를 휴대전화를 보고 입력하거나, 복구 코드 중 하나를 사용하세요.
otp: '휴대전화에서 생성 된 2단계 인증 코드를 입력하거나, 복구 코드 중 하나를 사용하세요:'
user:
filtered_languages: 선택된 언어가 공개 타임라인에서 제외 될 것입니다
labels:
@ -29,6 +30,7 @@ ko:
value: 내용
defaults:
avatar: 아바타
bot: 이것은 봇 계정입니다
confirm_new_password: 새로운 비밀번호 다시 입력
confirm_password: 현재 비밀번호 다시 입력
current_password: 현재 비밀번호 입력

@ -4,6 +4,7 @@ oc:
hints:
defaults:
avatar: PNG, GIF o JPG. Maximum 2 Mo. Serà retalhat en 400x400px
bot: Avisar lo monde qu’aqueste compte es pas d’una persona
digest: Solament enviat aprèp un long moment d’inactivitat e solament s’avètz recebut de messatges personals pendent vòstra abséncia
display_name:
one: Demòra encara <span class="name-counter">1</span> caractèr
@ -19,7 +20,7 @@ oc:
imports:
data: Fichièr CSV exportat d’una autra instància Mastodon
sessions:
otp: Picatz lo còdi d’autentificacion en dos temps (Two factor code) de vòstre mobil o utilizatz un de vòstres còdis de recuperacion.
otp: 'Picatz lo còdi d’autentificacion en dos temps (Two factor code) de vòstra aplicacion mobil o utilizatz un de vòstres còdis de recuperacion :'
user:
filtered_languages: Las lengas seleccionadas seràn levadas de vòstre flux d’actualitat
labels:
@ -29,6 +30,7 @@ oc:
value: Contengut
defaults:
avatar: Avatar
bot: Aquò es lo compte a un robòt
confirm_new_password: Confirmacion del nòu senhal
confirm_password: Confirmatz lo nòu senhal
current_password: Senhal actual

@ -4,6 +4,7 @@ ru:
hints:
defaults:
avatar: PNG, GIF или JPG. Максимально 2MB. Будет уменьшено до 400x400px
bot: Этот аккаунт обычно выполяет автоматизированные действия и может не просматриваться владельцем
digest: Отсылается лишь после длительной неактивности, если Вы в это время получали личные сообщения
display_name:
few: Осталось <span class="name-counter">%{count}</span> символа
@ -33,6 +34,7 @@ ru:
value: Значение
defaults:
avatar: Аватар
bot: Это аккаунт бота
confirm_new_password: Повторите новый пароль
confirm_password: Повторите пароль
current_password: Текущий пароль

@ -58,7 +58,7 @@ sk:
setting_reduce_motion: Redukovať pohyb v animáciách
setting_system_font_ui: Použiť základné systémové písmo
setting_theme: Vzhľad stránky
setting_unfollow_modal: Zobrazovať potvrdzovacie okno pred skončením sledovania iného používateľa
setting_unfollow_modal: Zobraziť potvrdzovacie okno pred skončením sledovania iného užívateľa
severity: Závažnosť
type: Typ importu
username: Užívateľská prezývka

@ -0,0 +1,15 @@
---
sl:
simple_form:
hints:
defaults:
avatar: PNG, GIF ali JPG. Največ 2MB. Zmanjšana bo na 400x400px
bot: Opozarja ljudi, da račun ne predstavlja osebe
digest: Pošlje se le po dolgem obdobju nedejavnosti in samo, če ste prejeli osebna sporočila v vaši odsotnosti
display_name:
one: <span class="name-counter">1</span> znak ostane
other: <span class="name-counter">%{count}</span> znakov ostane
fields: Na svojem profilu lahko imate do 4 predmete prikazane kot tabelo.
header: PNG, GIF ali JPG. Največ 2MB. Zmanjšana bo na 700x335px
imports:
data: Izvožena CSV datoteka iz drugega Mastodon vozlišča

@ -4,6 +4,7 @@ zh-HK:
hints:
defaults:
avatar: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 2MB,會縮裁成 400x400px
bot: 提醒用戶本帳號是機械人
digest: 僅在你長時間未登錄,且收到了私信時發送
display_name:
one: 尚餘 <span class="name-counter">1</span> 個字
@ -29,6 +30,7 @@ zh-HK:
value: 內容
defaults:
avatar: 個人頭像
bot: 這帳號是機械人
confirm_new_password: 確認新密碼
confirm_password: 確認密碼
current_password: 目前密碼

@ -728,5 +728,6 @@ sk:
users:
invalid_email: Emailová adresa je neplatná
invalid_otp_token: Neplatný kód pre dvojfaktorovú autentikáciu
otp_lost_help_html: Pokiaľ si stratil/a prístup k obom, môžeš dať vedieť %{email}
seamless_external_login: Si prihlásená/ý cez externú službu, takže nastavenia hesla a emailu ti niesú prístupné.
signed_in_as: 'Prihlásený ako:'

@ -1,7 +1,9 @@
---
sl:
about:
about_hashtag_html: To so javni tuti, označeni z <strong>#%{hashtag}</strong>. Z njimi se lahko povežete, če imate račun kjerkoli v fediversu.
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
administered_by: 'Upravlja:'
closed_registrations: Registracije so trenutno zaprte na tem vozlišču. Vendar! Tukaj lahko najdete druga vozlišča, na katerih se prijavite in dostopate do istega omrežja od tam.
contact: Kontakt
@ -17,6 +19,9 @@ sl:
humane_approach_title: Bolj human pristop
not_a_product_title: Ti si oseba, ne izdelek
real_conversation_title: Zgrajen za pravi pogovor
within_reach_title: Vedno na dosegu roke
generic_description: "%{domain} je en strežnik v omrežju"
hosted_on: Mastodon gostuje na %{domain}
learn_more: Spoznaj več
other_instances: Seznam vozlišč
source_code: Izvorna koda
@ -28,20 +33,72 @@ sl:
accounts:
follow: Sledi
followers: Sledilci
following: Sledim
media: Medij
moved_html: "%{name} se je prestavil na %{new_profile_link}:"
nothing_here: Nič ni tukaj!
people_followed_by: Ljudje, ki jim sledi %{name}
people_who_follow: Ljudje, ki sledijo %{name}
posts: Tuti
posts_with_replies: Tuti in odgovori
remote_follow: Oddaljeno sledenje
reserved_username: Uporabniško ime je zasedeno
roles:
admin: Skrbnik
bot: Robot
moderator: Mod
unfollow: Prenehaj slediti
admin:
account_moderation_notes:
create: Pusti sporočilo
created_msg: Uspešno ustvarjena opomba moderiranja!
delete: Izbriši
accounts:
are_you_sure: Ali si prepričan?
avatar: Avatar
by_domain: Domena
change_email:
changed_msg: E-pošta računa je uspešno spremenjena!
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}
confirm: Potrdi
confirmed: Potrjeno
confirming: Potrjujem
disable: Onemogoči
disable_two_factor_authentication: Onemogoči 2FA
disabled: Onemogočeno
domain: Domena
edit: Uredi
email: E-pošta
email_status: Stanje E-pošte
enable: Omogoči
enabled: Omogočeno
feed_url: URL vir
followers: Sledilci
followers_url: URL sledilci
follows: Sledi
inbox_url: URl v mapi "Prejeto"
ip: IP
location:
all: Vse
local: Lokalno
remote: Oddaljeni
title: Lokacija
login_status: Stanje prijave
media_attachments: Medijske priloge
memorialize: Spremenite v spomin
moderation:
all: Vse
silenced: Utišan
suspended: Suspendiran
title: Moderiranje
moderation_notes: Opombe moderiranja
most_recent_activity: Zadnja aktivnost
most_recent_ip: Zadnji IP
order:
alphabetic: Po abecedi
most_recent: Najnovejše
title: Red

@ -49,11 +49,12 @@ zh-HK:
reserved_username: 此用戶名已被保留
roles:
admin: 管理員
bot: 機械人
moderator: 監察员
unfollow: 取消關注
admin:
account_moderation_notes:
create: 新增
create: 記錄
created_msg: 管理記錄已新增
delete: 刪除
destroyed_msg: 管理記錄已被刪除
@ -82,7 +83,7 @@ zh-HK:
email_status: 电子邮件状态
enable: 啟用
enabled: 已啟用
feed_url: Feed URL
feed_url: 訂閱 URL
followers: 關注者
followers_url: 關注者(Followers)URL
follows: 正在關注
@ -463,7 +464,7 @@ zh-HK:
archive_takeout:
date: 日期
download: 下載檔案
hint_html: 你可以下載包含你的<strong>文章和媒體</strong>的檔案。資料以 ActivityPub 格式儲存,可用於相容的軟體。
hint_html: 你可以下載包含你的<strong>文章和媒體</strong>的檔案。資料以 ActivityPub 格式儲存,可用於相容的軟體。你可以每七天下載一次。
in_progress: 檔案製作中...
request: 下載檔案
size: 檔案大小
@ -678,7 +679,8 @@ zh-HK:
video:
one: "%{count} 段影片"
other: "%{count} 段影片"
content_warning: 'Content warning: %{warning}'
boosted_from_html: 轉推自 %{acct_link}
content_warning: 內容警告: %{warning}
disallowed_hashtags:
one: 包含不允許的標籤: %{tags}
other: 包含不允許的標籤: %{tags}
@ -753,5 +755,6 @@ zh-HK:
users:
invalid_email: 電郵地址格式不正確
invalid_otp_token: 雙重認證確認碼不正確
otp_lost_help_html: 如果你無法訪問這兩者,可以通過 %{email} 與我們聯繫。
seamless_external_login: 由於你是從外部系統登入,所以不能設定密碼和電郵。
signed_in_as: 目前登入的帳戶:

Loading…
Cancel
Save