Browse Source

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

glitch-soc^2
Claire 4 weeks ago
parent
commit
002d2729fb
  1. 6
      Gemfile
  2. 30
      Gemfile.lock
  3. 5
      app/chewy/statuses_index.rb
  4. 14
      app/javascript/mastodon/locales/ar.json
  5. 6
      app/javascript/mastodon/locales/ast.json
  6. 22
      app/javascript/mastodon/locales/ca.json
  7. 24
      app/javascript/mastodon/locales/de.json
  8. 176
      app/javascript/mastodon/locales/ga.json
  9. 2
      app/javascript/mastodon/locales/ja.json
  10. 2
      app/javascript/mastodon/locales/ko.json
  11. 2
      app/javascript/mastodon/locales/pt-BR.json
  12. 12
      app/javascript/mastodon/locales/tr.json
  13. 8
      app/javascript/mastodon/locales/vi.json
  14. 6
      app/javascript/mastodon/locales/zh-CN.json
  15. 2
      app/models/status.rb
  16. 2
      app/serializers/web/notification_serializer.rb
  17. 2
      config/environments/production.rb
  18. 1
      config/locales/activerecord.ga.yml
  19. 3
      config/locales/ar.yml
  20. 2
      config/locales/ast.yml
  21. 57
      config/locales/ca.yml
  22. 13
      config/locales/cs.yml
  23. 17
      config/locales/de.yml
  24. 1
      config/locales/devise.ga.yml
  25. 14
      config/locales/devise.tr.yml
  26. 1
      config/locales/doorkeeper.ar.yml
  27. 2
      config/locales/doorkeeper.ca.yml
  28. 1
      config/locales/doorkeeper.ga.yml
  29. 10
      config/locales/doorkeeper.ja.yml
  30. 2
      config/locales/el.yml
  31. 1
      config/locales/en.yml
  32. 1
      config/locales/es-AR.yml
  33. 3
      config/locales/es-MX.yml
  34. 1
      config/locales/es.yml
  35. 9
      config/locales/fr.yml
  36. 12
      config/locales/ga.yml
  37. 1
      config/locales/gl.yml
  38. 4
      config/locales/hu.yml
  39. 1
      config/locales/id.yml
  40. 1
      config/locales/is.yml
  41. 1
      config/locales/it.yml
  42. 112
      config/locales/ja.yml
  43. 5
      config/locales/ko.yml
  44. 1
      config/locales/ku.yml
  45. 1
      config/locales/lv.yml
  46. 1
      config/locales/ru.yml
  47. 2
      config/locales/simple_form.ast.yml
  48. 24
      config/locales/simple_form.ca.yml
  49. 2
      config/locales/simple_form.de.yml
  50. 1
      config/locales/simple_form.ga.yml
  51. 10
      config/locales/simple_form.ja.yml
  52. 16
      config/locales/simple_form.tr.yml
  53. 3
      config/locales/th.yml
  54. 20
      config/locales/tr.yml
  55. 1
      config/locales/uk.yml
  56. 11
      config/locales/vi.yml
  57. 2
      config/locales/zh-CN.yml
  58. 1
      config/locales/zh-TW.yml
  59. 14
      package.json
  60. 2
      streaming/index.js
  61. 149
      yarn.lock

6
Gemfile

@ -26,7 +26,7 @@ gem 'blurhash', '~> 0.1'
gem 'active_model_serializers', '~> 0.10'
gem 'addressable', '~> 2.8'
gem 'bootsnap', '~> 1.10.3', require: false
gem 'bootsnap', '~> 1.11.1', require: false
gem 'browser'
gem 'charlock_holmes', '~> 0.7.7'
gem 'chewy', '~> 7.2'
@ -79,7 +79,7 @@ gem 'ruby-progressbar', '~> 1.11'
gem 'sanitize', '~> 6.0'
gem 'scenic', '~> 1.6'
gem 'sidekiq', '~> 6.4'
gem 'sidekiq-scheduler', '~> 3.1'
gem 'sidekiq-scheduler', '~> 3.2'
gem 'sidekiq-unique-jobs', '~> 7.1'
gem 'sidekiq-bulk', '~>0.2.0'
gem 'simple-navigation', '~> 4.3'
@ -134,7 +134,7 @@ group :development do
gem 'letter_opener', '~> 1.8'
gem 'letter_opener_web', '~> 2.0'
gem 'memory_profiler'
gem 'rubocop', '~> 1.26', require: false
gem 'rubocop', '~> 1.27', require: false
gem 'rubocop-rails', '~> 2.14', require: false
gem 'brakeman', '~> 5.2', require: false
gem 'bundler-audit', '~> 0.9', require: false

30
Gemfile.lock

@ -114,9 +114,9 @@ GEM
debug_inspector (>= 0.0.1)
blurhash (0.1.6)
ffi (~> 1.14)
bootsnap (1.10.3)
bootsnap (1.11.1)
msgpack (~> 1.2)
brakeman (5.2.1)
brakeman (5.2.2)
browser (4.2.0)
brpoplpush-redis_script (0.1.2)
concurrent-ruby (~> 1.0, >= 1.0.5)
@ -216,7 +216,7 @@ GEM
multi_json
encryptor (3.0.0)
erubi (1.10.0)
et-orbi (1.2.6)
et-orbi (1.2.7)
tzinfo
excon (0.76.0)
fabrication (2.28.0)
@ -264,8 +264,8 @@ GEM
fog-json (>= 1.0)
ipaddress (>= 0.8)
formatador (0.2.5)
fugit (1.5.2)
et-orbi (~> 1.1, >= 1.1.8)
fugit (1.5.3)
et-orbi (~> 1, >= 1.2.7)
raabro (~> 1.4)
fuubar (2.5.1)
rspec-core (~> 3.0)
@ -399,7 +399,7 @@ GEM
mini_mime (1.1.2)
mini_portile2 (2.8.0)
minitest (5.15.0)
msgpack (1.4.4)
msgpack (1.5.1)
multi_json (1.15.0)
multipart-post (2.1.1)
net-ldap (0.17.0)
@ -478,7 +478,7 @@ GEM
raabro (1.4.0)
racc (1.6.0)
rack (2.2.3)
rack-attack (6.6.0)
rack-attack (6.6.1)
rack (>= 1.0, < 3)
rack-cors (1.1.1)
rack (>= 2.0.0)
@ -537,7 +537,7 @@ GEM
redis (4.5.1)
redis-namespace (1.8.2)
redis (>= 3.0.4)
regexp_parser (2.2.1)
regexp_parser (2.3.0)
request_store (1.5.1)
rack (>= 1.4)
responders (3.0.1)
@ -572,7 +572,7 @@ GEM
rspec-support (3.11.0)
rspec_junit_formatter (0.5.1)
rspec-core (>= 2, < 4, != 2.12.0)
rubocop (1.26.1)
rubocop (1.27.0)
parallel (~> 1.10)
parser (>= 3.1.0.0)
rainbow (>= 2.2.2, < 4.0)
@ -581,7 +581,7 @@ GEM
rubocop-ast (>= 1.16.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 3.0)
rubocop-ast (1.16.0)
rubocop-ast (1.17.0)
parser (>= 3.1.1.0)
rubocop-rails (2.14.2)
activesupport (>= 4.2.0)
@ -610,14 +610,14 @@ GEM
redis (>= 4.2.0)
sidekiq-bulk (0.2.0)
sidekiq
sidekiq-scheduler (3.1.1)
sidekiq-scheduler (3.2.0)
e2mmap
redis (>= 3, < 5)
rufus-scheduler (~> 3.2)
sidekiq (>= 3)
thwait
tilt (>= 1.4.0)
sidekiq-unique-jobs (7.1.16)
sidekiq-unique-jobs (7.1.19)
brpoplpush-redis_script (> 0.1.1, <= 2.0.0)
concurrent-ruby (~> 1.0, >= 1.0.5)
sidekiq (>= 5.0, < 8.0)
@ -741,7 +741,7 @@ DEPENDENCIES
better_errors (~> 2.9)
binding_of_caller (~> 1.0)
blurhash (~> 0.1)
bootsnap (~> 1.10.3)
bootsnap (~> 1.11.1)
brakeman (~> 5.2)
browser
bullet (~> 7.0)
@ -830,14 +830,14 @@ DEPENDENCIES
rspec-rails (~> 5.1)
rspec-sidekiq (~> 3.1)
rspec_junit_formatter (~> 0.5)
rubocop (~> 1.26)
rubocop (~> 1.27)
rubocop-rails (~> 2.14)
ruby-progressbar (~> 1.11)
sanitize (~> 6.0)
scenic (~> 1.6)
sidekiq (~> 6.4)
sidekiq-bulk (~> 0.2.0)
sidekiq-scheduler (~> 3.1)
sidekiq-scheduler (~> 3.2)
sidekiq-unique-jobs (~> 7.1)
simple-navigation (~> 4.3)
simple_form (~> 5.1)

5
app/chewy/statuses_index.rb

@ -55,6 +55,11 @@ class StatusesIndex < Chewy::Index
data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) }
end
crutch :votes do |collection|
data = ::PollVote.joins(:poll).where(poll: { status_id: collection.map(&:id) }).where(account: Account.local).pluck(:status_id, :account_id)
data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) }
end
root date_detection: false do
field :id, type: 'long'
field :account_id, type: 'long'

14
app/javascript/mastodon/locales/ar.json

@ -309,7 +309,7 @@
"navigation_bar.preferences": "التفضيلات",
"navigation_bar.public_timeline": "الخيط العام الموحد",
"navigation_bar.security": "الأمان",
"notification.admin.sign_up": "{name} signed up",
"notification.admin.sign_up": "أنشأ {name} حسابًا",
"notification.favourite": "أُعجِب {name} بمنشورك",
"notification.follow": "{name} يتابعك",
"notification.follow_request": "لقد طلب {name} متابعتك",
@ -318,7 +318,7 @@
"notification.poll": "لقد انتهى استطلاع رأي شاركتَ فيه",
"notification.reblog": "قام {name} بمشاركة منشورك",
"notification.status": "{name} نشر للتو",
"notification.update": "{name} edited a post",
"notification.update": "عدّلَ {name} منشورًا",
"notifications.clear": "امسح الإخطارات",
"notifications.clear_confirmation": "أمتأكد من أنك تود مسح جل الإخطارات الخاصة بك و المتلقاة إلى حد الآن ؟",
"notifications.column_settings.admin.sign_up": "التسجيلات الجديدة:",
@ -408,8 +408,8 @@
"report.placeholder": "تعليقات إضافية",
"report.reasons.dislike": "لايعجبني",
"report.reasons.dislike_description": "ألا ترغب برؤيته",
"report.reasons.other": "It's something else",
"report.reasons.other_description": "The issue does not fit into other categories",
"report.reasons.other": "شيء آخر",
"report.reasons.other_description": "لا تندرج هذه المشكلة ضمن فئات أخرى",
"report.reasons.spam": "إنها رسالة مزعجة",
"report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
"report.reasons.violation": "ينتهك قواعد الخادم",
@ -456,8 +456,8 @@
"status.embed": "إدماج",
"status.favourite": "أضف إلى المفضلة",
"status.filtered": "مُصفّى",
"status.history.created": "{name} created {date}",
"status.history.edited": "{name} edited {date}",
"status.history.created": "أنشأه {name} {date}",
"status.history.edited": "عدله {name} {date}",
"status.load_more": "حمّل المزيد",
"status.media_hidden": "الصورة مستترة",
"status.mention": "أذكُر @{name}",
@ -515,7 +515,7 @@
"upload_error.poll": "لا يمكن إدراج ملفات في استطلاعات الرأي.",
"upload_form.audio_description": "وصف للأشخاص ذي قِصر السمع",
"upload_form.description": "وصف للمعاقين بصريا",
"upload_form.description_missing": "No description added",
"upload_form.description_missing": "لم يُضف وصف",
"upload_form.edit": "تعديل",
"upload_form.thumbnail": "غيّر الصورة المصغرة",
"upload_form.undo": "حذف",

6
app/javascript/mastodon/locales/ast.json

@ -404,7 +404,7 @@
"report.forward_hint": "La cuenta ye d'otru sirvidor. ¿Quies unviar ellí tamién una copia anónima del informe?",
"report.mute": "Mute",
"report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
"report.next": "Next",
"report.next": "Siguiente",
"report.placeholder": "Comentarios adicionales",
"report.reasons.dislike": "I don't like it",
"report.reasons.dislike_description": "It is not something you want to see",
@ -412,7 +412,7 @@
"report.reasons.other_description": "The issue does not fit into other categories",
"report.reasons.spam": "It's spam",
"report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
"report.reasons.violation": "It violates server rules",
"report.reasons.violation": "Incumple les regles del sirvidor",
"report.reasons.violation_description": "You are aware that it breaks specific rules",
"report.rules.subtitle": "Select all that apply",
"report.rules.title": "Which rules are being violated?",
@ -420,7 +420,7 @@
"report.statuses.title": "Are there any posts that back up this report?",
"report.submit": "Unviar",
"report.target": "Report {target}",
"report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
"report.thanks.take_action": "Equí tan les opciones pa controlar qué ver en Mastodon:",
"report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
"report.thanks.title": "Don't want to see this?",
"report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",

22
app/javascript/mastodon/locales/ca.json

@ -8,10 +8,10 @@
"account.blocked": "Bloquejat",
"account.browse_more_on_origin_server": "Navega més en el perfil original",
"account.cancel_follow_request": "Anul·la la sol·licitud de seguiment",
"account.direct": "Missatge directe @{name}",
"account.direct": "Enviar missatge directe a @{name}",
"account.disable_notifications": "Deixa de notificar-me les publicacions de @{name}",
"account.domain_blocked": "Domini bloquejat",
"account.edit_profile": "Edita el perfil",
"account.edit_profile": "Editar el perfil",
"account.enable_notifications": "Notifica’m les publicacions de @{name}",
"account.endorse": "Recomana en el teu perfil",
"account.follow": "Segueix",
@ -38,7 +38,7 @@
"account.requested": "Esperant aprovació. Clic per a cancel·lar la petició de seguiment",
"account.share": "Comparteix el perfil de @{name}",
"account.show_reblogs": "Mostra els impulsos de @{name}",
"account.statuses_counter": "{count, plural, one {{counter} Tut} other {{counter} Tuts}}",
"account.statuses_counter": "{count, plural, one {{counter} Publicació} other {{counter} Publicacions}}",
"account.unblock": "Desbloqueja @{name}",
"account.unblock_domain": "Desbloqueja el domini {domain}",
"account.unblock_short": "Desbloqueja",
@ -144,7 +144,7 @@
"directory.local": "Només de {domain}",
"directory.new_arrivals": "Arribades noves",
"directory.recently_active": "Recentment actius",
"embed.instructions": "Incrusta aquest tut al lloc web copiant el codi a continuació.",
"embed.instructions": "Incrusta aquesta publicació a la teva pàgina web copiant el codi següent.",
"embed.preview": "Aquí està quin aspecte tindrà:",
"emoji_button.activity": "Activitat",
"emoji_button.custom": "Personalitzat",
@ -204,7 +204,7 @@
"getting_started.directory": "Directori de perfils",
"getting_started.documentation": "Documentació",
"getting_started.heading": "Primeres passes",
"getting_started.invite": "Convida gent",
"getting_started.invite": "Convidar gent",
"getting_started.open_source_notice": "Mastodon és un programari de codi obert. Pots contribuir-hi o informar de problemes a GitHub a {github}.",
"getting_started.security": "Configuració del compte",
"getting_started.terms": "Termes del servei",
@ -233,7 +233,7 @@
"keyboard_shortcuts.description": "Descripció",
"keyboard_shortcuts.direct": "Obre la columna de missatges directes",
"keyboard_shortcuts.down": "Baixar en la llista",
"keyboard_shortcuts.enter": "Obre publicació",
"keyboard_shortcuts.enter": "Obrir publicació",
"keyboard_shortcuts.favourite": "Afavorir publicació",
"keyboard_shortcuts.favourites": "Obre la llista de favorits",
"keyboard_shortcuts.federated": "Obre la línia de temps federada",
@ -247,7 +247,7 @@
"keyboard_shortcuts.my_profile": "Obre el teu perfil",
"keyboard_shortcuts.notifications": "Obre la columna de notificacions",
"keyboard_shortcuts.open_media": "Obre mèdia",
"keyboard_shortcuts.pinned": "Obre la llista de publicacions fixades",
"keyboard_shortcuts.pinned": "Obrir la llista de publicacions fixades",
"keyboard_shortcuts.profile": "Obre el perfil de l'autor",
"keyboard_shortcuts.reply": "Respon publicació",
"keyboard_shortcuts.requests": "Obre la llista de sol·licituds de seguiment",
@ -256,7 +256,7 @@
"keyboard_shortcuts.start": "Obre la columna \"Primeres passes\"",
"keyboard_shortcuts.toggle_hidden": "Mostra/oculta el text marcat com a sensible",
"keyboard_shortcuts.toggle_sensitivity": "Mostra/amaga contingut multimèdia",
"keyboard_shortcuts.toot": "per a començar un tut nou de trinca",
"keyboard_shortcuts.toot": "Iniciar una nova publicació",
"keyboard_shortcuts.unfocus": "Descentra l'àrea de composició de text/cerca",
"keyboard_shortcuts.up": "Moure amunt en la llista",
"lightbox.close": "Tanca",
@ -289,7 +289,7 @@
"navigation_bar.blocks": "Usuaris bloquejats",
"navigation_bar.bookmarks": "Marcadors",
"navigation_bar.community_timeline": "Línia de temps Local",
"navigation_bar.compose": "Redacta una nova publicació",
"navigation_bar.compose": "Redactar una nova publicació",
"navigation_bar.direct": "Missatges directes",
"navigation_bar.discover": "Descobrir",
"navigation_bar.domain_blocks": "Dominis bloquejats",
@ -441,7 +441,7 @@
"search_results.statuses_fts_disabled": "La cerca de publicacions pel seu contingut no està habilitada en aquest servidor Mastodon.",
"search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}",
"status.admin_account": "Obre l'interfície de moderació per a @{name}",
"status.admin_status": "Obre aquesta publicació a la interfície de moderació",
"status.admin_status": "Obrir aquesta publicació a la interfície de moderació",
"status.block": "Bloqueja @{name}",
"status.bookmark": "Marcador",
"status.cancel_reblog_private": "Desfer l'impuls",
@ -502,7 +502,7 @@
"timeline_hint.remote_resource_not_displayed": "{resource} dels altres servidors no son mostrats.",
"timeline_hint.resources.followers": "Seguidors",
"timeline_hint.resources.follows": "Seguiments",
"timeline_hint.resources.statuses": "Tuts més antics",
"timeline_hint.resources.statuses": "Publicacions més antigues",
"trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} persones}} parlant-hi",
"trends.trending_now": "Ara en tendència",
"ui.beforeunload": "El teu esborrany es perdrà si surts de Mastodon.",

24
app/javascript/mastodon/locales/de.json

@ -13,22 +13,22 @@
"account.domain_blocked": "Domain versteckt",
"account.edit_profile": "Profil bearbeiten",
"account.enable_notifications": "Benachrichtige mich wenn @{name} etwas postet",
"account.endorse": "Auf Profil hervorheben",
"account.endorse": "Im Profil anzeigen",
"account.follow": "Folgen",
"account.followers": "Follower",
"account.followers.empty": "Diesem Profil folgt noch niemand.",
"account.followers.empty": "Diesem Profil folgt bislang niemand.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Follower}}",
"account.following": "Folgt",
"account.following_counter": "{count, plural, one {{counter} Folgender} other {{counter} Folgende}}",
"account.following_counter": "{count, plural, one {{counter} Folgt} other {{counter} Folgt}}",
"account.follows.empty": "Dieses Profil folgt noch niemandem.",
"account.follows_you": "Folgt dir",
"account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen",
"account.joined": "Beigetreten am {date}",
"account.link_verified_on": "Besitz dieses Links wurde geprüft am {date}",
"account.locked_info": "Der Privatsphärenstatus dieses Accounts wurde auf gesperrt gesetzt. Die Person bestimmt manuell wer ihm/ihr folgen darf.",
"account.locked_info": "Der Privatsphärenstatus dieses Accounts wurde auf gesperrt gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.",
"account.media": "Medien",
"account.mention": "@{name} erwähnen",
"account.moved_to": "{name} ist umgezogen auf:",
"account.moved_to": "{name} ist umgezogen nach:",
"account.mute": "@{name} stummschalten",
"account.mute_notifications": "Benachrichtigungen von @{name} stummschalten",
"account.muted": "Stummgeschaltet",
@ -39,26 +39,26 @@
"account.share": "Profil von @{name} teilen",
"account.show_reblogs": "Von @{name} geteilte Beiträge anzeigen",
"account.statuses_counter": "{count, plural, one {{counter} Beitrag} other {{counter} Beiträge}}",
"account.unblock": "@{name} entblocken",
"account.unblock": "Blockierung von @{name} aufheben",
"account.unblock_domain": "{domain} wieder anzeigen",
"account.unblock_short": "Blockierung aufheben",
"account.unendorse": "Nicht auf Profil hervorheben",
"account.unendorse": "Nicht mehr im Profil anzeigen",
"account.unfollow": "Entfolgen",
"account.unmute": "@{name} nicht mehr stummschalten",
"account.unmute": "Stummschaltung von @{name} aufheben",
"account.unmute_notifications": "Benachrichtigungen von @{name} einschalten",
"account.unmute_short": "Nicht mehr stummschalten",
"account.unmute_short": "Stummschaltung aufheben",
"account_note.placeholder": "Notiz durch Klicken hinzufügen",
"admin.dashboard.daily_retention": "Benutzerverbleibrate nach Tag nach Anmeldung",
"admin.dashboard.monthly_retention": "Benutzerverbleibrate nach Monat nach Anmeldung",
"admin.dashboard.retention.average": "Durchschnitt",
"admin.dashboard.retention.cohort": "Anmeldemonat",
"admin.dashboard.retention.cohort": "Monat der Anmeldung",
"admin.dashboard.retention.cohort_size": "Neue Benutzer",
"alert.rate_limited.message": "Bitte versuche es nach {retry_time, time, medium}.",
"alert.rate_limited.message": "Bitte versuche es nach {retry_time, time, medium} erneut.",
"alert.rate_limited.title": "Anfragelimit überschritten",
"alert.unexpected.message": "Ein unerwarteter Fehler ist aufgetreten.",
"alert.unexpected.title": "Hoppla!",
"announcement.announcement": "Ankündigung",
"attachments_list.unprocessed": "(unverarbeitet)",
"attachments_list.unprocessed": "(ausstehend)",
"autosuggest_hashtag.per_week": "{count} pro Woche",
"boost_modal.combo": "Drücke {combo}, um dieses Fenster zu überspringen",
"bundle_column_error.body": "Etwas ist beim Laden schiefgelaufen.",

176
app/javascript/mastodon/locales/ga.json

@ -1,54 +1,54 @@
{
"account.account_note_header": "Your note for @{name}",
"account.add_or_remove_from_list": "Add or Remove from lists",
"account.badges.bot": "Bot",
"account.badges.group": "Group",
"account.block": "Block @{name}",
"account.block_domain": "Hide everything from {domain}",
"account.blocked": "Blocked",
"account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel follow request",
"account.direct": "Direct message @{name}",
"account.disable_notifications": "Stop notifying me when @{name} posts",
"account.domain_blocked": "Domain hidden",
"account.edit_profile": "Edit profile",
"account.enable_notifications": "Notify me when @{name} posts",
"account.endorse": "Feature on profile",
"account.follow": "Follow",
"account.followers": "Followers",
"account.followers.empty": "No one follows this user yet.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following": "Following",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Follows you",
"account.hide_reblogs": "Hide boosts from @{name}",
"account.joined": "Joined {date}",
"account.account_note_header": "Nóta",
"account.add_or_remove_from_list": "Cuir Le nó Bain De na liostaí",
"account.badges.bot": "Bota",
"account.badges.group": "Grúpa",
"account.block": "Bac @{name}",
"account.block_domain": "Bac ainm fearainn {domain}",
"account.blocked": "Bactha",
"account.browse_more_on_origin_server": "Brabhsáil níos mó ar an phróifíl bhunaidh",
"account.cancel_follow_request": "Cealaigh iarratas leanúnaí",
"account.direct": "Cuir teachtaireacht dhíreach ar @{name}",
"account.disable_notifications": "Éirigh as ag cuir mé in eol nuair bpostálann @{name}",
"account.domain_blocked": "Ainm fearainn bactha",
"account.edit_profile": "Cuir an phróifíl in eagar",
"account.enable_notifications": "Cuir mé in eol nuair bpostálann @{name}",
"account.endorse": "Cuir ar an phróifíl mar ghné",
"account.follow": "Lean",
"account.followers": "Leantóirí",
"account.followers.empty": "Ní leanann éinne an t-úsáideoir seo fós.",
"account.followers_counter": "{count, plural, one {Leantóir amháin} other {{counter} Leantóir}}",
"account.following": "Ag leanúint",
"account.following_counter": "{count, plural, one {Ag leanúint cúntas amháin} other {Ag leanúint {counter} cúntas}}",
"account.follows.empty": "Ní leanann an t-úsáideoir seo duine ar bith fós.",
"account.follows_you": "Do do leanúint",
"account.hide_reblogs": "Folaigh athphostálacha ó @{name}",
"account.joined": "Ina bhall ó {date}",
"account.link_verified_on": "Ownership of this link was checked on {date}",
"account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
"account.media": "Media",
"account.mention": "Mention @{name}",
"account.moved_to": "{name} has moved to:",
"account.mute": "Mute @{name}",
"account.mute_notifications": "Mute notifications from @{name}",
"account.muted": "Muted",
"account.posts": "Toots",
"account.posts_with_replies": "Toots and replies",
"account.report": "Report @{name}",
"account.requested": "Awaiting approval",
"account.share": "Share @{name}'s profile",
"account.show_reblogs": "Show boosts from @{name}",
"account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
"account.unblock": "Unblock @{name}",
"account.unblock_domain": "Unhide {domain}",
"account.unblock_short": "Unblock",
"account.unendorse": "Don't feature on profile",
"account.unfollow": "Unfollow",
"account.unmute": "Unmute @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
"account.unmute_short": "Unmute",
"account_note.placeholder": "No comment provided",
"admin.dashboard.daily_retention": "User retention rate by day after sign-up",
"account.locked_info": "Tá an socrú príobháideachais don cuntas seo curtha go 'faoi ghlas'. Déanann an t-úinéir léirmheas ar cén daoine atá ceadaithe an cuntas leanúint.",
"account.media": "Ábhair",
"account.mention": "Luaigh @{name}",
"account.moved_to": "Tá {name} bogtha go:",
"account.mute": "Ciúnaigh @{name}",
"account.mute_notifications": "Ciúnaigh fógraí ó @{name}",
"account.muted": "Ciúnaithe",
"account.posts": "Postálacha",
"account.posts_with_replies": "Postálacha agus freagraí",
"account.report": "Gearán @{name}",
"account.requested": "Ag fanacht le ceadú. Cliceáil chun an iarratas leanúnaí a chealú",
"account.share": "Roinn próifíl @{name}",
"account.show_reblogs": "Taispeáin athphostálacha ó @{name}",
"account.statuses_counter": "{count, plural, one {Postáil amháin} other {{counter} Postáil}}",
"account.unblock": "Bain bac de @{name}",
"account.unblock_domain": "Bain bac den ainm fearainn {domain}",
"account.unblock_short": "Bain bac de",
"account.unendorse": "Ná chuir ar an phróifíl mar ghné",
"account.unfollow": "Ná lean a thuilleadh",
"account.unmute": "Díchiúnaigh @{name}",
"account.unmute_notifications": "Díchiúnaigh fógraí ó @{name}",
"account.unmute_short": "Díchiúnaigh",
"account_note.placeholder": "Cliceáil chun nóta a chuir leis",
"admin.dashboard.daily_retention": "Ráta coinneála an úsáideora de réir an lae tar éis clárú",
"admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
"admin.dashboard.retention.average": "Average",
"admin.dashboard.retention.cohort": "Sign-up month",
@ -72,7 +72,7 @@
"column.community": "Local timeline",
"column.direct": "Direct messages",
"column.directory": "Browse profiles",
"column.domain_blocks": "Hidden domains",
"column.domain_blocks": "Blocked domains",
"column.favourites": "Favourites",
"column.follow_requests": "Follow requests",
"column.home": "Home",
@ -121,8 +121,8 @@
"confirmations.delete.message": "Are you sure you want to delete this status?",
"confirmations.delete_list.confirm": "Delete",
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
"confirmations.discard_edit_media.confirm": "Discard",
"confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
"confirmations.discard_edit_media.confirm": "Faigh réidh de",
"confirmations.discard_edit_media.message": "Tá athruithe neamhshlánaithe don tuarascáil gné nó réamhamharc agat, faigh réidh dóibh ar aon nós?",
"confirmations.domain_block.confirm": "Hide entire domain",
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
"confirmations.logout.confirm": "Log out",
@ -152,7 +152,7 @@
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Insert emoji",
"emoji_button.nature": "Nature",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.not_found": "No matching emojis found",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
"emoji_button.recent": "Frequently used",
@ -167,19 +167,19 @@
"empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
"empty_column.domain_blocks": "There are no hidden domains yet.",
"empty_column.domain_blocks": "There are no blocked domains yet.",
"empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
"empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
"empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
"empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
"empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.hashtag": "There is nothing in this hashtag yet.",
"empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
"empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}",
"empty_column.home.suggestions": "See some suggestions",
"empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
"empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
"empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
"empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.",
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
"error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.",
@ -267,8 +267,8 @@
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",
"lists.edit": "Edit list",
"lists.edit.submit": "Change title",
"lists.edit": "Cuir an liosta in eagar",
"lists.edit.submit": "Athraigh teideal",
"lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title",
"lists.replies_policy.followed": "Any followed user",
@ -279,7 +279,7 @@
"lists.subheading": "Your lists",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
"loading_indicator.label": "Loading...",
"media_gallery.toggle_visible": "Hide media",
"media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}",
"missing_indicator.label": "Not found",
"missing_indicator.sublabel": "This resource could not be found",
"mute_modal.duration": "Duration",
@ -293,12 +293,12 @@
"navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Edit profile",
"navigation_bar.edit_profile": "Cuir an phróifíl in eagar",
"navigation_bar.explore": "Explore",
"navigation_bar.favourites": "Favourites",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Follow requests",
"navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.follows_and_followers": "Ag leanúint agus do do leanúint",
"navigation_bar.info": "About this server",
"navigation_bar.keyboard_shortcuts": "Hotkeys",
"navigation_bar.lists": "Lists",
@ -311,14 +311,14 @@
"navigation_bar.security": "Security",
"notification.admin.sign_up": "{name} signed up",
"notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you",
"notification.follow_request": "{name} has requested to follow you",
"notification.follow": "Lean {name} thú",
"notification.follow_request": "D'iarr {name} ort do chuntas a leanúint",
"notification.mention": "{name} mentioned you",
"notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} boosted your status",
"notification.status": "{name} just posted",
"notification.update": "{name} edited a post",
"notification.update": "Chuir {name} postáil in eagar",
"notifications.clear": "Clear notifications",
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
"notifications.column_settings.admin.sign_up": "New sign-ups:",
@ -327,8 +327,8 @@
"notifications.column_settings.filter_bar.advanced": "Display all categories",
"notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show_bar": "Show filter bar",
"notifications.column_settings.follow": "New followers:",
"notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.follow": "Leantóirí nua:",
"notifications.column_settings.follow_request": "Iarratais leanúnaí nua:",
"notifications.column_settings.mention": "Mentions:",
"notifications.column_settings.poll": "Poll results:",
"notifications.column_settings.push": "Push notifications",
@ -338,7 +338,7 @@
"notifications.column_settings.status": "New toots:",
"notifications.column_settings.unread_notifications.category": "Unread notifications",
"notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications",
"notifications.column_settings.update": "Edits:",
"notifications.column_settings.update": "Eagair:",
"notifications.filter.all": "All",
"notifications.filter.boosts": "Boosts",
"notifications.filter.favourites": "Favourites",
@ -366,13 +366,13 @@
"poll_button.add_poll": "Add a poll",
"poll_button.remove_poll": "Remove poll",
"privacy.change": "Adjust status privacy",
"privacy.direct.long": "Post to mentioned users only",
"privacy.direct.long": "Visible for mentioned users only",
"privacy.direct.short": "Direct",
"privacy.private.long": "Post to followers only",
"privacy.private.short": "Followers-only",
"privacy.public.long": "Post to public timelines",
"privacy.private.long": "Sofheicthe do Leantóirí amháin",
"privacy.private.short": "Leantóirí amháin",
"privacy.public.long": "Visible for all, shown in public timelines",
"privacy.public.short": "Public",
"privacy.unlisted.long": "Do not show in public timelines",
"privacy.unlisted.long": "Visible for all, but not in public timelines",
"privacy.unlisted.short": "Unlisted",
"refresh": "Refresh",
"regeneration_indicator.label": "Loading…",
@ -405,20 +405,20 @@
"report.mute": "Mute",
"report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
"report.next": "Next",
"report.placeholder": "Additional comments",
"report.placeholder": "Type or paste additional comments",
"report.reasons.dislike": "I don't like it",
"report.reasons.dislike_description": "It is not something you want to see",
"report.reasons.other": "It's something else",
"report.reasons.other_description": "The issue does not fit into other categories",
"report.reasons.spam": "It's spam",
"report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
"report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
"report.reasons.violation": "It violates server rules",
"report.reasons.violation_description": "You are aware that it breaks specific rules",
"report.rules.subtitle": "Select all that apply",
"report.rules.title": "Which rules are being violated?",
"report.statuses.subtitle": "Select all that apply",
"report.statuses.title": "Are there any posts that back up this report?",
"report.submit": "Submit",
"report.submit": "Submit report",
"report.target": "Report {target}",
"report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
"report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
@ -450,14 +450,14 @@
"status.delete": "Delete",
"status.detailed_status": "Detailed conversation view",
"status.direct": "Direct message @{name}",
"status.edit": "Edit",
"status.edited": "Edited {date}",
"status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
"status.edit": "Cuir in eagar",
"status.edited": "Curtha in eagar in {date}",
"status.edited_x_times": "Curtha in eagar {count, plural, one {{count} uair amháin} two {{count} uair} few {{count} uair} many {{count} uair} other {{count} uair}}",
"status.embed": "Embed",
"status.favourite": "Favourite",
"status.filtered": "Filtered",
"status.history.created": "{name} created {date}",
"status.history.edited": "{name} edited {date}",
"status.history.edited": "Curtha in eagar ag {name} in {date}",
"status.load_more": "Load more",
"status.media_hidden": "Media hidden",
"status.mention": "Mention @{name}",
@ -500,7 +500,7 @@
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
"timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
"timeline_hint.resources.followers": "Followers",
"timeline_hint.resources.followers": "Leantóirí",
"timeline_hint.resources.follows": "Follows",
"timeline_hint.resources.statuses": "Older toots",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
@ -510,13 +510,13 @@
"units.short.million": "{count}M",
"units.short.thousand": "{count}K",
"upload_area.title": "Drag & drop to upload",
"upload_button.label": "Add media ({formats})",
"upload_button.label": "Add images, a video or an audio file",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.description_missing": "No description added",
"upload_form.edit": "Edit",
"upload_form.edit": "Cuir in eagar",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.undo": "Delete",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
@ -526,19 +526,19 @@
"upload_modal.choose_image": "Choose image",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
"upload_modal.detect_text": "Detect text from picture",
"upload_modal.edit_media": "Edit media",
"upload_modal.edit_media": "Cuir gné in eagar",
"upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
"upload_modal.preparing_ocr": "Preparing OCR…",
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading...",
"upload_progress.label": "Uploading",
"video.close": "Close video",
"video.download": "Download file",
"video.exit_fullscreen": "Exit full screen",
"video.expand": "Expand video",
"video.fullscreen": "Full screen",
"video.hide": "Hide video",
"video.mute": "Mute sound",
"video.pause": "Pause",
"video.play": "Play",
"video.unmute": "Unmute sound"
"video.mute": "Ciúnaigh fuaim",
"video.pause": "Cuir ar sos",
"video.play": "Cuir ar siúl",
"video.unmute": "Díchiúnaigh fuaim"
}

2
app/javascript/mastodon/locales/ja.json

@ -520,7 +520,7 @@
"upload_error.poll": "アンケートではファイルをアップロードできません。",
"upload_form.audio_description": "聴取が難しいユーザーへの説明",
"upload_form.description": "閲覧が難しいユーザーへの説明",
"upload_form.description_missing": "No description added",
"upload_form.description_missing": "説明を追加していません",
"upload_form.edit": "編集",
"upload_form.thumbnail": "サムネイルを変更",
"upload_form.undo": "削除",

2
app/javascript/mastodon/locales/ko.json

@ -140,7 +140,7 @@
"conversation.mark_as_read": "읽은 상태로 표시",
"conversation.open": "대화 보기",
"conversation.with": "{names} 님과",
"directory.federated": "알려진 별무리로부터",
"directory.federated": "알려진 연합우주로부터",
"directory.local": "{domain}에서만",
"directory.new_arrivals": "새로운 사람들",
"directory.recently_active": "최근 활동",

2
app/javascript/mastodon/locales/pt-BR.json

@ -515,7 +515,7 @@
"upload_error.poll": "Mídias não podem ser anexadas em toots com enquetes.",
"upload_form.audio_description": "Descrever para deficientes auditivos",
"upload_form.description": "Descrever para deficientes visuais",
"upload_form.description_missing": "No description added",
"upload_form.description_missing": "Nenhuma descrição adicionada",
"upload_form.edit": "Editar",
"upload_form.thumbnail": "Alterar miniatura",
"upload_form.undo": "Excluir",

12
app/javascript/mastodon/locales/tr.json

@ -9,11 +9,11 @@
"account.browse_more_on_origin_server": "Orijinal profilde daha fazlasına göz atın",
"account.cancel_follow_request": "Takip isteğini iptal et",
"account.direct": "@{name} adlı kişiye mesaj gönder",
"account.disable_notifications": "@{name} gönderi atınca bana bildirmeyi durdur",
"account.disable_notifications": "@{name} kişisinin gönderi bildirimlerini kapat",
"account.domain_blocked": "Alan adı engellendi",
"account.edit_profile": "Profili düzenle",
"account.enable_notifications": "@{name} gönderi atınca bana bildir",
"account.endorse": "Profildeki özellik",
"account.enable_notifications": "@{name} kişisinin gönderi bildirimlerini aç",
"account.endorse": "Profilimde öne çıkar",
"account.follow": "Takip et",
"account.followers": "Takipçi",
"account.followers.empty": "Henüz kimse bu kullanıcıyı takip etmiyor.",
@ -42,7 +42,7 @@
"account.unblock": "@{name} adlı kişinin engelini kaldır",
"account.unblock_domain": "{domain} alan adının engelini kaldır",
"account.unblock_short": "Engeli kaldır",
"account.unendorse": "Profilde gösterme",
"account.unendorse": "Profilimde öne çıkarma",
"account.unfollow": "Takibi bırak",
"account.unmute": "@{name} adlı kişinin sesini aç",
"account.unmute_notifications": "@{name} adlı kişinin bildirimlerini aç",
@ -507,8 +507,8 @@
"trends.trending_now": "Şu an gündemde",
"ui.beforeunload": "Mastodon'u terk ederseniz taslağınız kaybolacak.",
"units.short.billion": "{count}Mr",
"units.short.million": "{count}Mn",
"units.short.thousand": "{count}Mn",
"units.short.million": "{count}M",
"units.short.thousand": "{count}Bin",
"upload_area.title": "Karşıya yükleme için sürükle bırak yapınız",
"upload_button.label": "Resim, video veya ses dosyası ekleyin",
"upload_error.limit": "Dosya yükleme sınırı aşıldı.",

8
app/javascript/mastodon/locales/vi.json

@ -1,7 +1,7 @@
{
"account.account_note_header": "Ghi chú",
"account.add_or_remove_from_list": "Thêm hoặc Xóa khỏi danh sách",
"account.badges.bot": "Bot",
"account.badges.bot": "người máy",
"account.badges.group": "Nhóm",
"account.block": "Chặn @{name}",
"account.block_domain": "Ẩn mọi thứ từ {domain}",
@ -22,7 +22,7 @@
"account.following_counter": "{count, plural, one {{counter} Theo dõi} other {{counter} Theo dõi}}",
"account.follows.empty": "Người này chưa theo dõi ai.",
"account.follows_you": "Đang theo dõi bạn",
"account.hide_reblogs": "Ẩn tút do @{name} đăng lại",
"account.hide_reblogs": "Ẩn tút @{name} đăng lại",
"account.joined": "Đã tham gia {date}",
"account.link_verified_on": "Liên kết này đã được xác thực vào {date}",
"account.locked_info": "Đây là tài khoản riêng tư. Họ sẽ tự mình xét duyệt các yêu cầu theo dõi.",
@ -414,9 +414,9 @@
"report.reasons.spam_description": "Liên kết độc hại, tạo tương tác giả hoặc trả lời lặp đi lặp lại",
"report.reasons.violation": "Vi phạm quy tắc máy chủ",
"report.reasons.violation_description": "Bạn nhận thấy nó vi phạm quy tắc máy chủ",
"report.rules.subtitle": "Chọn tất cả những áp dụng",
"report.rules.subtitle": "Chọn tất cả những gì phù hợp",
"report.rules.title": "Vi phạm quy tắc nào?",
"report.statuses.subtitle": "Chọn tất cả những áp dụng",
"report.statuses.subtitle": "Chọn tất cả những gì phù hợp",
"report.statuses.title": "Bạn muốn gửi tút nào kèm báo cáo này?",
"report.submit": "Gửi đi",
"report.target": "Báo cáo {target}",

6
app/javascript/mastodon/locales/zh-CN.json

@ -198,7 +198,7 @@
"follow_recommendations.lead": "你关注的人的嘟文将按时间顺序在你的主页上显示。 别担心,你可以随时取消关注!",
"follow_request.authorize": "同意",
"follow_request.reject": "拒绝",
"follow_requests.unlocked_explanation": "虽说你没有锁嘟,但是 {domain} 的工作人员觉得你可能想手工审核关注请求。",
"follow_requests.unlocked_explanation": "虽说你没有锁嘟,但是 {domain} 的工作人员觉得你可能想手工审核这些账号的关注请求。",
"generic.saved": "已保存",
"getting_started.developers": "开发",
"getting_started.directory": "用户目录",
@ -206,7 +206,7 @@
"getting_started.heading": "开始使用",
"getting_started.invite": "邀请用户",
"getting_started.open_source_notice": "Mastodon 是开源软件。欢迎前往 GitHub({github})贡献代码或反馈问题。",
"getting_started.security": "帐户安全",
"getting_started.security": "账户安全设置",
"getting_started.terms": "使用条款",
"hashtag.column_header.tag_mode.all": "以及 {additional}",
"hashtag.column_header.tag_mode.any": "或是 {additional}",
@ -308,7 +308,7 @@
"navigation_bar.pins": "置顶嘟文",
"navigation_bar.preferences": "首选项",
"navigation_bar.public_timeline": "跨站公共时间轴",
"navigation_bar.security": "安全",
"navigation_bar.security": "安全",
"notification.admin.sign_up": "{name} 注册了",
"notification.favourite": "{name} 喜欢了你的嘟文",
"notification.follow": "{name} 开始关注你",

2
app/models/status.rb

@ -150,11 +150,13 @@ class Status < ApplicationRecord
ids += favourites.where(account: Account.local).pluck(:account_id)
ids += reblogs.where(account: Account.local).pluck(:account_id)
ids += bookmarks.where(account: Account.local).pluck(:account_id)
ids += poll.votes.where(account: Account.local).pluck(:account_id) if poll.present?
else
ids += preloaded.mentions[id] || []
ids += preloaded.favourites[id] || []
ids += preloaded.reblogs[id] || []
ids += preloaded.bookmarks[id] || []
ids += preloaded.votes[id] || []
end
ids.uniq

2
app/serializers/web/notification_serializer.rb

@ -34,6 +34,6 @@ class Web::NotificationSerializer < ActiveModel::Serializer
def body
str = strip_tags(object.target_status&.spoiler_text&.presence || object.target_status&.text || object.from_account.note)
truncate(HTMLEntities.new.decode(str.to_str), length: 140) # Do not encode entities, since this value will not be used in HTML
truncate(HTMLEntities.new.decode(str.to_str), length: 140, escape: false) # Do not encode entities, since this value will not be used in HTML
end
end

2
config/environments/production.rb

@ -42,7 +42,7 @@ Rails.application.configure do
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
# Allow to specify public IP of reverse proxy if it's needed
config.action_dispatch.trusted_proxies = ENV['TRUSTED_PROXY_IP'].split.map { |item| IPAddr.new(item) } if ENV['TRUSTED_PROXY_IP'].present?
config.action_dispatch.trusted_proxies = ENV['TRUSTED_PROXY_IP'].split(/(?:\s*,\s*|\s+)/).map { |item| IPAddr.new(item) } if ENV['TRUSTED_PROXY_IP'].present?
config.force_ssl = true
config.ssl_options = {

1
config/locales/activerecord.ga.yml

@ -0,0 +1 @@
ga:

3
config/locales/ar.yml

@ -26,6 +26,8 @@ ar:
هذا الحساب هو ممثل افتراضي يستخدم لتمثيل الخادم نفسه وليس أي مستخدم فردي.
يستخدم لأغراض الاتحاد ولا ينبغي حظره إلا إذا كنت ترغب في حظر مثيل الخادم بأكمله، في هذه الحالة يجب عليك استخدام أداة حظر النطاق.
learn_more: تعلم المزيد
logged_in_as_html: أنت متصل حالياً كـ %{username}.
logout_before_registering: أنت متصل سلفًا.
privacy_policy: سياسة الخصوصية
rules: قوانين الخادم
rules_html: 'فيما يلي ملخص للقوانين التي تحتاج إلى اتباعها إذا كنت تريد أن يكون لديك حساب على هذا الخادم من ماستدون:'
@ -178,6 +180,7 @@ ar:
not_subscribed: غير مشترك
pending: في انتظار المراجعة
perform_full_suspension: تعليق الحساب
previous_strikes: العقوبات السابقة
promote: ترقية
protocol: البروتوكول
public: عمومي

2
config/locales/ast.yml

@ -93,6 +93,7 @@ ast:
not_permitted: Nun tienes permisu pa facer esta aición
update_failed_msg: Nun pudo anovase esi fustaxe
dashboard:
interactions: interaiciones
media_storage: Almacenamientu multimedia
software: Software
top_languages: Les llingües más actives
@ -278,6 +279,7 @@ ast:
following: Llista de siguidores
muting: Llista de xente silenciao
upload: Xubir
in_memoriam_html: N'alcordanza.
invites:
delete: Desactivar
expired: Caducó

57
config/locales/ca.yml

@ -1,7 +1,7 @@
---
ca:
about:
about_hashtag_html: Aquests són publicacions públiques etiquetades amb <strong>#%{hashtag}</strong>. Pots interactuar amb elles si tens un compte a qualsevol lloc del fedivers.
about_hashtag_html: Aquestes són publicacions públiques etiquetades amb <strong>#%{hashtag}</strong>. Pots interactuar amb elles si tens un compte a qualsevol lloc del fedivers.
about_mastodon_html: 'La xarxa social del futur: sense anuncis, sense vigilància corporativa, disseny ètic i descentralització. Posseeix les teves dades amb Mastodon!'
about_this: Quant a
active_count_after: actiu
@ -43,7 +43,7 @@ ca:
unavailable_content: Servidors moderats
unavailable_content_description:
domain: Servidor
reason: Raó
reason: Motiu
rejecting_media: 'Els arxius multimèdia d''aquests servidors no seran processats o emmagatzemats i cap miniatura serà mostrada, requerint clic manual a través de l''arxiu original:'
rejecting_media_title: Mèdia filtrat
silenced: 'Les publicacions d''aquests servidors seran amagades en les línies de temps públiques i en les converses, i cap notificació serà generada de les interaccions dels seus usuaris, llevat que estiguis seguint-los:'
@ -67,7 +67,7 @@ ca:
following: Seguint
instance_actor_flash: Aquest compte és un actor virtual usat per a representar el mateix servidor i no cap usuari individual. Es fa servir per a federar i no s'hauria d'esborrar.
joined: Unit des de %{date}
last_active: darrer actiu
last_active: última activitat
link_verified_on: La propietat d'aquest enllaç s'ha verificat el %{date}
media: Mèdia
moved_html: "%{name} s'ha mogut a %{new_profile_link}:"
@ -207,7 +207,7 @@ ca:
targeted_reports: Informes realitzats per altres
silence: Silenci
silenced: Silenciat
statuses: Tuts
statuses: Publicacions
strikes: Accions anteriors
subscribe: Subscriu
suspend: Suspèn
@ -252,7 +252,7 @@ ca:
destroy_email_domain_block: Esborra el bloqueig de domini de l'adreça de correu
destroy_instance: Purga Domini
destroy_ip_block: Eliminar regla IP
destroy_status: Esborra el tut
destroy_status: Esborrar la publicació
destroy_unavailable_domain: Esborra domini no disponible
disable_2fa_user: Desactiva 2FA
disable_custom_emoji: Desactiva l'emoji personalitzat
@ -303,7 +303,7 @@ ca:
destroy_email_domain_block_html: "%{name} ha desbloquejat el domini de correu electrònic %{target}"
destroy_instance_html: "%{name} ha purgat el domini %{target}"
destroy_ip_block_html: "%{name} ha esborrat la regla per a l'IP %{target}"
destroy_status_html: "%{name} ha eliminat el tut de %{target}"
destroy_status_html: "%{name} ha eliminat la publicació de %{target}"
destroy_unavailable_domain_html: "%{name} ha représ el lliurament delivery al domini %{target}"
disable_2fa_user_html: "%{name} ha desactivat el requisit de dos factors per a l'usuari %{target}"
disable_custom_emoji_html: "%{name} ha desactivat l'emoji %{target}"
@ -332,7 +332,7 @@ ca:
update_custom_emoji_html: "%{name} ha actualitzat l'emoji %{target}"
update_domain_block_html: "%{name} ha actualitzat el bloqueig de domini per a %{target}"
update_status_html: "%{name} ha actualitzat l'estat de %{target}"
deleted_status: "(tut esborrat)"
deleted_status: "(publicació esborrada)"
empty: No s’han trobat registres.
filter_by_action: Filtra per acció
filter_by_user: Filtra per usuari
@ -503,7 +503,7 @@ ca:
silence: Límit
suspend: Suspèn
policy: Política
reason: Raó pública
reason: Motiu públic
title: Polítiques de contingut
dashboard:
instance_accounts_dimension: Comptes més seguits
@ -517,6 +517,7 @@ ca:
delivery:
all: Totes
clear: Neteja els errors de lliurament
failing: Fallant
restart: Reinicia el lliurament
stop: Atura el lliurament
unavailable: No disponible
@ -550,7 +551,7 @@ ca:
available: Disponible
expired: Caducat
title: Filtre
title: Convida
title: Invitacions
ip_blocks:
add_new: Crear regla
created_msg: S’ha afegit amb èxit la nova regla IP
@ -571,11 +572,11 @@ ca:
relays:
add_new: Afegiu un nou relay
delete: Esborra
description_html: Un <strong>relay de federació</strong> és un servidor intermediari que intercanvia grans volums de tuts públics entre servidors que es subscriuen i publiquen en ell. <strong>Pot ajudar a servidors petits i mitjans a descobrir contingut del fedivers</strong>, no fent necessari que els usuaris locals manualment segueixin altres persones de servidors remots.
description_html: Un <strong>relay de federació</strong> és un servidor intermediari que intercanvia grans volums de publicacions públiques entre servidors que se subscriuen i publiquen en ell. <strong>Pot ajudar a servidors petits i mitjans a descobrir contingut del fedivers</strong>, no fent necessari que els usuaris locals manualment segueixin altres persones de servidors remots.
disable: Inhabilita
disabled: Desactivat
enable: Activat
enable_hint: Una vegada habilitat, el teu servidor es subscriurà a tots els tuts públics d'aquest relay i començarà a enviar-hi tots els tuts públics d'aquest servidor.
enable_hint: Una vegada habilitat, el teu servidor se subscriurà a totes les publicacions públiques d'aquest relay i començarà a enviar-hi totes les publicacions públiques d'aquest servidor.
enabled: Activat
inbox_url: URL del Relay
pending: S'està esperant l'aprovació del relay
@ -609,7 +610,7 @@ ca:
assigned: Moderador assignat
by_target_domain: Domini del compte reportat
category: Categoria
category_description_html: La raó que aquest compte o contingut ha estat reportat serà citat en la comunicació amb el compte reportat
category_description_html: El motiu pel qual aquest compte o contingut ha estat reportat serà citat en la comunicació amb el compte reportat
comment:
none: Cap
comment_description_html: 'Per a donar més informació, %{name} ha escrit:'
@ -656,7 +657,7 @@ ca:
title: Normes del servidor
settings:
activity_api_enabled:
desc_html: Nombre de tuts publicats localment, usuaris actius i registres nous en períodes setmanals
desc_html: Nombre de publicacions publicades localment, usuaris actius i registres nous en períodes setmanals
title: Publica estadístiques agregades sobre l'activitat de l'usuari
bootstrap_timeline_accounts:
desc_html: Separa diversos noms d'usuari amb comes. Només funcionaran els comptes locals i desblocats. El valor predeterminat quan està buit és tots els administradors locals.
@ -901,7 +902,7 @@ ca:
guide_link: https://crowdin.com/project/mastodon
guide_link_text: Tothom hi pot contribuir.
sensitive_content: Contingut sensible
toot_layout: Disseny del tut
toot_layout: Disseny de la publicació
application_mailer:
notification_preferences: Canvia les preferències de correu
salutation: "%{name},"
@ -1075,7 +1076,7 @@ ca:
archive_takeout:
date: Data
download: Baixa l’arxiu
hint_html: Pots sol·licitar un arxiu dels teus <strong>tuts i dels fitxers multimèdia pujats</strong>. Les dades exportades tindran el format ActivityPub, llegible per qualsevol programari compatible. Pots sol·licitar un arxiu cada 7 dies.
hint_html: Pots sol·licitar un arxiu de les teves <strong>publicacions i dels fitxers multimèdia pujats</strong>. Les dades exportades tindran el format ActivityPub, llegible per qualsevol programari compatible. Pots sol·licitar un arxiu cada 7 dies.
in_progress: S'està compilant el teu arxiu...
request: Sol·licitar el teu arxiu
size: Mida
@ -1167,7 +1168,7 @@ ca:
table:
expires_at: Caduca
uses: Usos
title: Convida persones
title: Convidar persones
lists:
errors:
limit: Has assolit la quantitat màxima de llistes
@ -1321,7 +1322,7 @@ ca:
followers: Seguidors
following: Seguint
invited: Convidat
last_active: Darrer actiu
last_active: Última activitat
most_recent: Més recent
moved: Mogut
mutual: Mútua
@ -1341,19 +1342,19 @@ ca:
remote_interaction:
favourite:
proceed: Procedir a afavorir
prompt: 'Vols marcar com a favorit aquest tut:'
prompt: 'Vols marcar com a favorit aquesta publicació:'
reblog:
proceed: Procedir a impulsar
prompt: 'Vols impulsar aquest tut:'
prompt: 'Vols impulsar aquesta publicació:'
reply:
proceed: Procedir a respondre
prompt: 'Vols respondre a aquest tut:'
prompt: 'Vols respondre a aquesta publicació:'
reports:
errors:
invalid_rules: no fa referència a normes vàlides
scheduled_statuses:
over_daily_limit: Has superat el límit de %{limit} tuts programats per a aquell dia
over_total_limit: Has superat el limit de %{limit} tuts programats
over_daily_limit: Has superat el límit de %{limit} publicacions programades per a avui
over_total_limit: Has superat el límit de %{limit} publicacions programades
too_soon: La data programada ha de ser futura
sessions:
activity: Última activitat
@ -1403,7 +1404,7 @@ ca:
aliases: Àlies de compte
appearance: Aparença
authorized_apps: Aplicacions autoritzades
back: Torna a Mastodon
back: Tornar a Mastodon
delete: Eliminació del compte
development: Desenvolupament
edit_profile: Edita el perfil
@ -1440,13 +1441,13 @@ ca:
other: 'conté les etiquetes no permeses: %{tags}'
edited_at_html: Editat %{date}
errors:
in_reply_not_found: El tut al qual intentes respondre sembla que no existeix.
in_reply_not_found: La publicació a la qual intentes respondre sembla que no existeix.
open_in_web: Obre en la web
over_character_limit: Límit de caràcters de %{max} superat
pin_errors:
direct: Les publicacions que només son visibles per els usuaris mencionats no poden ser fixades
limit: Ja has fixat el màxim nombre de tuts
ownership: No es pot fixar el tut d'algú altre
limit: Ja has fixat el màxim nombre de publicacions
ownership: No es pot fixar la publicació d'algú altre
reblog: No es pot fixar un impuls
poll:
total_people:
@ -1506,7 +1507,7 @@ ca:
min_reblogs: Mantenir les publicacions impulsades més de
min_reblogs_hint: No suprimeix cap de les teves publicacions que s'hagin impulsat més que aquest número de vegades. Deixa-ho en blanc per suprimir les publicacions independentment del nombre d'impulsos que tinguin
stream_entries:
pinned: Tut fixat
pinned: Publicació fixada
reblogged: ha impulsat
sensitive_content: Contingut sensible
tags:
@ -1652,7 +1653,7 @@ ca:
sensitive: A partir d'ara, tots els mèdia pujats seran marcats com a sensibles i ocultats darrera un avís.
silence: Encara pots fer servir el teu compte però només la gent que ja t'està seguint veuran les teves publicacions en aquest servidor i tu podries ser exclòs de les diverses opcions de descobriment. De totes maneres altres podrien encara seguir-te manualment.
suspend: Ja no pots utilitzar el teu compte i el teu perfil i altres dades ja no son accessibles. Encara pots iniciar sessió per a demanar una copia de les teves dades fins que siguin totalment eliminades als 30 dies però es mantindran les dades bàsiques per evitar que esquivis la suspensió.
reason: 'Raó:'
reason: 'Motiu:'
statuses: 'Publicacions citades:'
subject:
delete_statuses: Les teves publicacions de %{acct} han estat esborrades

13
config/locales/cs.yml

@ -500,10 +500,10 @@ cs:
instances:
availability:
description_html:
few: Pokud doručování na doménu selhává nepřerušeně ve <strong>%{count} různých dnech</strong>, nebudou činěny žádné další pokusy o doručení, dokud nedorazí doručení <em>od</em> domény.
many: Pokud doručování na doménu selhává nepřerušeně v <strong>%{count} různých dnech</strong>, nebudou činěny žádné další pokusy o doručení, dokud nedorazí doručení <em>od</em> domény.
one: Pokud doručování na doménu selhává nepřerušeně <strong>%{count} den</strong>, nebudou činěny žádné další pokusy o doručení, dokud nedorazí doručení <em>od</em> domény.
other: Pokud doručování na doménu selhává nepřerušeně v <strong>%{count} různých dnech</strong>, nebudou činěny žádné další pokusy o doručení, dokud nedorazí doručení <em>od</em> domény.
few: Pokud doručování na doménu selže ve <strong>%{count} různých dnech</strong>, nebudou činěny žádné další pokusy o doručení, dokud nedorazí doručení <em>od</em> domény.
many: Pokud doručování na doménu selže v <strong>%{count} různých dnech</strong>, nebudou činěny žádné další pokusy o doručení, dokud nedorazí doručení <em>od</em> domény.
one: Pokud doručování na doménu selže <strong>%{count} den</strong>, nebudou činěny žádné další pokusy o doručení, dokud nedorazí doručení <em>od</em> domény.
other: Pokud doručování na doménu selže v <strong>%{count} různých dnech</strong>, nebudou činěny žádné další pokusy o doručení, dokud nedorazí doručení <em>od</em> domény.
failure_threshold_reached: Prahu selhání dosaženo %{date}.
failures_recorded:
few: Neúspěšné pokusy ve %{count} různých dnech.
@ -514,7 +514,7 @@ cs:
title: Dostupnost
warning: Poslední pokus o připojení k tomuto serveru byl neúspěšný
back_to_all: Vše
back_to_limited: Omezený
back_to_limited: Omezená
back_to_warning: Varování
by_domain: Doména
confirm_purge: Jste si jisti, že chcete nevratně smazat data z této domény?
@ -541,9 +541,10 @@ cs:
delivery:
all: Vše
clear: Vymazat chyby doručení
failing: Selhává
restart: Restartovat doručování
stop: Zastavit doručování
unavailable: Nedostupný
unavailable: Nedostupná
delivery_available: Doručení je k dispozici
delivery_error_days: Dny chybného doručování
delivery_error_hint: Není-li možné doručení po dobu %{count} dnů, bude automaticky označen za nedoručitelný.

17
config/locales/de.yml

@ -165,6 +165,9 @@ de:
pending: In Warteschlange
perform_full_suspension: Verbannen
previous_strikes: Vorherige Strikes
previous_strikes_description_html:
one: Dieses Konto hat <strong>einen</strong> Strike.
other: Dieses Konto hat <strong>%{count}</strong> Strikes.
promote: Befördern
protocol: Protokoll
public: Öffentlich
@ -220,7 +223,7 @@ de:
undo_suspension: Verbannung aufheben
unsilenced_msg: "%{username}'s Konto erfolgreich freigegeben"
unsubscribe: Abbestellen
unsuspended_msg: "%{username}'s Konto erfolgreich freigegeben"
unsuspended_msg: Konto von %{username} erfolgreich freigegeben
username: Profilname
view_domain: Übersicht für Domain anzeigen
warn: Warnen