Merge commit '640421f661ee4d7e76a2aab607e7b15687940b6f' into glitch-soc/merge-upstream

local
Claire 7 months ago
commit 53f5b27bd1
  1. 4
      .bundler-audit.yml
  2. 3
      .gitignore
  3. 3
      .prettierignore
  4. 15
      Capfile
  5. 6
      Gemfile
  6. 35
      Gemfile.lock
  7. 1
      SECURITY.md
  8. 15
      app/javascript/mastodon/components/__tests__/hashtag_bar.tsx
  9. 2
      app/javascript/mastodon/components/hashtag_bar.tsx
  10. 2
      app/javascript/mastodon/components/scrollable_list.jsx
  11. 1
      app/javascript/mastodon/locales/bn.json
  12. 2
      app/javascript/mastodon/locales/fi.json
  13. 54
      app/javascript/mastodon/locales/lv.json
  14. 1
      app/javascript/mastodon/locales/ms.json
  15. 2
      app/javascript/mastodon/locales/ru.json
  16. 16
      app/javascript/mastodon/locales/si.json
  17. 2
      app/lib/activitypub/case_transform.rb
  18. 3
      app/lib/admin/metrics/dimension/software_versions_dimension.rb
  19. 20
      app/lib/admin/metrics/dimension/space_usage_dimension.rb
  20. 2
      app/models/account.rb
  21. 2
      app/models/relationship_filter.rb
  22. 8
      config/locales/doorkeeper.si.yml
  23. 2
      config/locales/ko.yml
  24. 4
      config/locales/lv.yml
  25. 142
      config/locales/si.yml
  26. 23
      config/locales/simple_form.si.yml
  27. 68
      spec/models/relationship_filter_spec.rb
  28. 13
      spec/serializers/activitypub/note_serializer_spec.rb
  29. 6
      yarn.lock

@ -1,4 +0,0 @@
---
ignore:
# Sidekiq security issue, fixes in the latest Sidekiq 7 but we can not upgrade. Will be fixed in Sidekiq 6.5.10
- CVE-2023-26141

3
.gitignore vendored

@ -31,9 +31,6 @@
# Ignore Vagrant files
.vagrant/
# Ignore Capistrano customizations
/config/deploy/*
# Ignore IDE files
.vscode/
.idea/

@ -31,9 +31,6 @@
# Ignore Vagrant files
.vagrant/
# Ignore Capistrano customizations
/config/deploy/*
# Ignore IDE files
.vscode/
.idea/

@ -1,15 +0,0 @@
# frozen_string_literal: true
require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/scm/git'
install_plugin Capistrano::SCM::Git
require 'capistrano/rbenv'
require 'capistrano/bundler'
require 'capistrano/yarn'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }

@ -170,12 +170,6 @@ group :development do
# Linter CLI for HAML files
gem 'haml_lint', require: false
# Deployment automation
gem 'capistrano', '~> 3.17'
gem 'capistrano-rails', '~> 1.6'
gem 'capistrano-rbenv', '~> 2.2'
gem 'capistrano-yarn', '~> 2.0'
# Validate missing i18n keys
gem 'i18n-tasks', '~> 1.0', require: false
end

@ -84,9 +84,9 @@ GEM
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
active_model_serializers (0.10.13)
actionpack (>= 4.1, < 7.1)
activemodel (>= 4.1, < 7.1)
active_model_serializers (0.10.14)
actionpack (>= 4.1)
activemodel (>= 4.1)
case_transform (>= 0.2)
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
activejob (7.0.8)
@ -112,8 +112,6 @@ GEM
addressable (2.8.5)
public_suffix (>= 2.0.2, < 6.0)
aes_key_wrap (1.1.0)
airbrussh (1.4.1)
sshkit (>= 1.6.1, != 1.7.0)
android_key_attestation (0.3.0)
annotate (3.2.0)
activerecord (>= 3.2, < 8.0)
@ -175,21 +173,6 @@ GEM
bundler-audit (0.9.1)
bundler (>= 1.2.0, < 3)
thor (~> 1.0)
capistrano (3.17.3)
airbrussh (>= 1.0.0)
i18n
rake (>= 10.0.0)
sshkit (>= 1.9.0)
capistrano-bundler (2.1.0)
capistrano (~> 3.1)
capistrano-rails (1.6.3)
capistrano (~> 3.1)
capistrano-bundler (>= 1.1, < 3)
capistrano-rbenv (2.2.0)
capistrano (~> 3.1)
sshkit (~> 1.3)
capistrano-yarn (2.0.2)
capistrano (~> 3.0)
capybara (3.39.2)
addressable
matrix
@ -473,11 +456,8 @@ GEM
net-protocol
net-protocol (0.2.1)
timeout
net-scp (4.0.0)
net-ssh (>= 2.6.5, < 8.0.0)
net-smtp (0.3.3)
net-protocol
net-ssh (7.1.0)
nio4r (2.5.9)
nokogiri (1.15.4)
mini_portile2 (~> 2.8.2)
@ -691,7 +671,7 @@ GEM
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
semantic_range (3.0.0)
sidekiq (6.5.9)
sidekiq (6.5.10)
connection_pool (>= 2.2.5, < 3)
rack (~> 2.0)
redis (>= 4.5.0, < 5)
@ -726,9 +706,6 @@ GEM
actionpack (>= 5.2)
activesupport (>= 5.2)
sprockets (>= 3.0.0)
sshkit (1.21.5)
net-scp (>= 1.1.2)
net-ssh (>= 2.8.0)
stackprof (0.2.25)
statsd-ruby (1.5.0)
stoplight (3.0.2)
@ -829,10 +806,6 @@ DEPENDENCIES
brakeman (~> 6.0)
browser
bundler-audit (~> 0.9)
capistrano (~> 3.17)
capistrano-rails (~> 1.6)
capistrano-rbenv (~> 2.2)
capistrano-yarn (~> 2.0)
capybara (~> 3.39)
charlock_holmes (~> 0.7.7)
chewy (~> 7.3)

@ -15,6 +15,7 @@ A "vulnerability in Mastodon" is a vulnerability in the code distributed through
| Version | Supported |
| ------- | ---------------- |
| 4.2.x | Yes |
| 4.1.x | Yes |
| 4.0.x | Until 2023-10-31 |
| 3.5.x | Until 2023-12-31 |

@ -45,6 +45,21 @@ describe('computeHashtagBarForStatus', () => {
);
});
it('does not truncate the contents when the last child is a text node', () => {
const status = createStatus(
'this is a #<a class="zrl" href="https://example.com/search?tag=test">test</a>. Some more text',
['test'],
);
const { hashtagsInBar, statusContentProps } =
computeHashtagBarForStatus(status);
expect(hashtagsInBar).toEqual([]);
expect(statusContentProps.statusContent).toMatchInlineSnapshot(
`"this is a #<a class="zrl" href="https://example.com/search?tag=test">test</a>. Some more text"`,
);
});
it('extract tags from the last line', () => {
const status = createStatus(
'<p>Simple text</p><p><a href="test">#hashtag</a></p>',

@ -109,7 +109,7 @@ export function computeHashtagBarForStatus(status: StatusLike): {
const lastChild = template.content.lastChild;
if (!lastChild) return defaultResult;
if (!lastChild || lastChild.nodeType === Node.TEXT_NODE) return defaultResult;
template.content.removeChild(lastChild);
const contentWithoutLastLine = template;

@ -78,7 +78,7 @@ class ScrollableList extends PureComponent {
const clientHeight = this.getClientHeight();
const offset = scrollHeight - scrollTop - clientHeight;
if (400 > offset && this.props.onLoadMore && this.props.hasMore && !this.props.isLoading) {
if (scrollTop > 0 && offset < 400 && this.props.onLoadMore && this.props.hasMore && !this.props.isLoading) {
this.props.onLoadMore();
}

@ -190,6 +190,7 @@
"conversation.open": "কথপকথন দন",
"conversation.with": "{names} এর সঙ",
"copypaste.copied": "অনিিত",
"copypaste.copy_to_clipboard": "কিপব কপি করন",
"directory.federated": "পরিিত ফিরসর থ",
"directory.local": "শ {domain} থ",
"directory.new_arrivals": "নতন আগত",

@ -686,7 +686,7 @@
"timeline_hint.resources.followers": "Seuraajat",
"timeline_hint.resources.follows": "seurattua",
"timeline_hint.resources.statuses": "Vanhemmat julkaisut",
"trends.counter_by_accounts": "{count, plural, one {{counter} henkilö} other {{counter} henkilöä}} viimeisten {days, plural, one {päivän} other {{days} päivän}}",
"trends.counter_by_accounts": "{count, plural, one {{counter} henkilö} other {{counter} henkilöä}} {days, plural, one {viimeisen päivän} other {viimeisten {days} päivän}} aikana",
"trends.trending_now": "Suosittua nyt",
"ui.beforeunload": "Luonnos häviää, jos poistut Mastodonista.",
"units.short.billion": "{count} mrd.",

@ -161,13 +161,13 @@
"compose_form.spoiler.unmarked": "Pievienot satura brīdinājumu",
"compose_form.spoiler_placeholder": "Ieraksti savu brīdinājumu šeit",
"confirmation_modal.cancel": "Atcelt",
"confirmations.block.block_and_report": "Bloķēt un Ziņot",
"confirmations.block.block_and_report": "Bloķēt un ziņot",
"confirmations.block.confirm": "Bloķēt",
"confirmations.block.message": "Vai tiešām vēlies bloķēt {name}?",
"confirmations.cancel_follow_request.confirm": "Atsaukt pieprasījumu",
"confirmations.cancel_follow_request.message": "Vai tiešām vēlies atsaukt pieprasījumu sekot {name}?",
"confirmations.delete.confirm": "Dzēst",
"confirmations.delete.message": "Vai tiešām vēlies dzēst šo ziņu?",
"confirmations.delete.message": "Vai tiešām vēlies dzēst šo ierakstu?",
"confirmations.delete_list.confirm": "Dzēst",
"confirmations.delete_list.message": "Vai tiešam vēlies neatgriezeniski dzēst šo sarakstu?",
"confirmations.discard_edit_media.confirm": "Atmest",
@ -244,7 +244,7 @@
"empty_column.public": "Šeit vēl nekā nav! Ieraksti ko publiski vai pieseko lietotājiem no citiem serveriem",
"error.unexpected_crash.explanation": "Koda kļūdas vai pārlūkprogrammas saderības problēmas dēļ šo lapu nevarēja parādīt pareizi.",
"error.unexpected_crash.explanation_addons": "Šo lapu nevarēja parādīt pareizi. Šo kļūdu, iespējams, izraisīja pārlūkprogrammas papildinājums vai automātiskās tulkošanas rīki.",
"error.unexpected_crash.next_steps": "Mēģini atsvaidzināt lapu. Ja tas nepalīdz, vari lietot Mastodon, izmantojot citu pārlūkprogrammu vai lietotni.",
"error.unexpected_crash.next_steps": "Mēģini atsvaidzināt lapu. Ja tas nepalīdz, iespējams, varēsi lietot Mastodon, izmantojot citu pārlūkprogrammu vai lietotni.",
"error.unexpected_crash.next_steps_addons": "Mēģini tos atspējot un atsvaidzināt lapu. Ja tas nepalīdz, iespējams, varēsi lietot Mastodon, izmantojot citu pārlūkprogrammu vai lietotni.",
"errors.unexpected_crash.copy_stacktrace": "Kopēt stacktrace uz starpliktuvi",
"errors.unexpected_crash.report_issue": "Ziņot par problēmu",
@ -309,11 +309,11 @@
"home.column_settings.show_replies": "Rādīt atbildes",
"home.explore_prompt.body": "Tavā mājas plūsmā būs dažādu ziņu sajaukums no atsaucēm, kurām esi izvēlējies sekot, personām, kurām esi izvēlējies sekot, un ziņām, kuras tās izceļ. Ja tas šķiet pārāk kluss, iespējams, vēlēsies:",
"home.explore_prompt.title": "Šī ir tava Mastodon mājvieta.",
"home.hide_announcements": "Slēpt anonsus",
"home.hide_announcements": "Slēpt paziņojumus",
"home.pending_critical_update.body": "Lūdzu, pēc iespējas ātrāk atjaunini savu Mastodon serveri!",
"home.pending_critical_update.link": "Skatīt jauninājumus",
"home.pending_critical_update.title": "Pieejams kritisks drošības jauninājums!",
"home.show_announcements": "Rādīt anonsus",
"home.show_announcements": "Rādīt paziņojumus",
"interaction_modal.description.favourite": "Ar Mastodon kontu tu vari pievienot šo ziņu izlasei, lai informētu autoru, ka to novērtē, un saglabātu to vēlākai lasīšanai.",
"interaction_modal.description.follow": "Ar Mastodon kontu tu vari sekot {name}, lai saņemtu viņu ziņas savā mājas plūsmā.",
"interaction_modal.description.reblog": "Izmantojot kontu Mastodon, tu vari izcelt šo ziņu, lai kopīgotu to ar saviem sekotājiem.",
@ -369,7 +369,7 @@
"lightbox.close": "Aizvērt",
"lightbox.compress": "Saspiest attēla skata lodziņu",
"lightbox.expand": "Izvērst attēla skata lodziņu",
"lightbox.next": "Nākamais",
"lightbox.next": "Tālāk",
"lightbox.previous": "Iepriekšējais",
"limited_account_hint.action": "Tik un tā rādīt profilu",
"limited_account_hint.title": "{domain} moderatori ir paslēpuši šo profilu.",
@ -422,8 +422,8 @@
"navigation_bar.search": "Meklēt",
"navigation_bar.security": "Drošība",
"not_signed_in_indicator.not_signed_in": "Lai piekļūtu šim resursam, tev ir jāpierakstās.",
"notification.admin.report": "{name} sūdzējās par {target}",
"notification.admin.sign_up": "{name} pierakstījās",
"notification.admin.report": "{name} ziņoja par {target}",
"notification.admin.sign_up": "{name} ir pierakstījies",
"notification.favourite": "{name} pievienoja tavu ziņu izlasei",
"notification.follow": "{name} uzsāka tev sekot",
"notification.follow_request": "{name} nosūtīja tev sekošanas pieprasījumu",
@ -435,7 +435,7 @@
"notification.update": "{name} rediģēja ierakstu",
"notifications.clear": "Notīrīt paziņojumus",
"notifications.clear_confirmation": "Vai tiešām vēlies neatgriezeniski notīrīt visus savus paziņojumus?",
"notifications.column_settings.admin.report": "Jaunas sūdzības:",
"notifications.column_settings.admin.report": "Jauni ziņojumi:",
"notifications.column_settings.admin.sign_up": "Jaunas pierakstīšanās:",
"notifications.column_settings.alert": "Darbvirsmas paziņojumi",
"notifications.column_settings.favourite": "Izlase:",
@ -445,7 +445,7 @@
"notifications.column_settings.follow": "Jauni sekotāji:",
"notifications.column_settings.follow_request": "Jauni sekošanas pieprasījumi:",
"notifications.column_settings.mention": "Pieminējumi:",
"notifications.column_settings.poll": "Aptauju rezultāti:",
"notifications.column_settings.poll": "Aptaujas rezultāti:",
"notifications.column_settings.push": "Uznirstošie paziņojumi",
"notifications.column_settings.reblog": "Pastiprinātie ieraksti:",
"notifications.column_settings.show": "Rādīt kolonnā",
@ -457,13 +457,13 @@
"notifications.filter.all": "Visi",
"notifications.filter.boosts": "Pastiprinātie ieraksti",
"notifications.filter.favourites": "Izlases",
"notifications.filter.follows": "Sekošana",
"notifications.filter.follows": "Seko",
"notifications.filter.mentions": "Pieminējumi",
"notifications.filter.polls": "Aptauju rezultāti",
"notifications.filter.polls": "Aptaujas rezultāti",
"notifications.filter.statuses": "Jaunumi no cilvēkiem, kuriem tu seko",
"notifications.grant_permission": "Piešķirt atļauju.",
"notifications.group": "{count} paziņojumi",
"notifications.mark_as_read": "Atzīmēt visus paziņojumus kā izlasītus",
"notifications.mark_as_read": "Atzīmēt katru paziņojumu kā izlasītu",
"notifications.permission_denied": "Darbvirsmas paziņojumi nav pieejami, jo iepriekš tika noraidīts pārlūka atļauju pieprasījums",
"notifications.permission_denied_alert": "Darbvirsmas paziņojumus nevar iespējot, jo pārlūkprogrammai atļauja tika iepriekš atteikta",
"notifications.permission_required": "Darbvirsmas paziņojumi nav pieejami, jo nav piešķirta nepieciešamā atļauja.",
@ -563,25 +563,25 @@
"report.reasons.spam": "Tas ir spams",
"report.reasons.spam_description": "Ļaunprātīgas saites, viltus iesaistīšana vai atkārtotas atbildes",
"report.reasons.violation": "Tas pārkāpj servera noteikumus",
"report.reasons.violation_description": "Tu zini, ka tas pārkāpj konkrētus noteikumus",
"report.reasons.violation_description": "Tu zini, ka tas pārkāpj īpašus noteikumus",
"report.rules.subtitle": "Atlasi visus atbilstošos",
"report.rules.title": "Kuri noteikumi tiek pārkāpti?",
"report.statuses.subtitle": "Atlasi visus atbilstošos",
"report.statuses.title": "Vai ir kādi ieraksti, kas atbalsta šo sūdzību?",
"report.submit": "Iesniegt",
"report.target": "Sūdzība par {target}",
"report.thanks.take_action": "Vari veikt šīs darbības, lai kontrolētu Mastodon redzamo saturu:",
"report.target": "Ziņošana par: {target}",
"report.thanks.take_action": "Tālāk ir norādītas iespējas, kā kontrolēt Mastodon redzamo saturu:",
"report.thanks.take_action_actionable": "Kamēr mēs to izskatām, tu vari veikt darbības pret @{name}:",
"report.thanks.title": "Vai nevēlies to redzēt?",
"report.thanks.title_actionable": "Paldies, ka ziņoji, mēs to izskatīsim.",
"report.unfollow": "Pārtraukt sekot @{name}",
"report.unfollow_explanation": "Tu seko šim kontam. Lai vairs neredzētu viņu ziņas savā mājas plūsmā, pārtrauc viņiem sekot.",
"report_notification.attached_statuses": "{count, plural, one {Pievienots {count} ieraksts} other {Pievienoti {count} ieraksti}}",
"report_notification.attached_statuses": "Pievienoti {count, plural,one {{count} sūtījums} other {{count} sūtījumi}}",
"report_notification.categories.legal": "Tiesisks",
"report_notification.categories.other": "Cita",
"report_notification.categories.spam": "Spams",
"report_notification.categories.violation": "Noteikumu pārkāpums",
"report_notification.open": "Atvērt sūdzību",
"report_notification.open": "Atvērt ziņojumu",
"search.no_recent_searches": "Nav nesen veiktu meklējumu",
"search.placeholder": "Meklēšana",
"search.quick_action.account_search": "Profili atbilst {x}",
@ -628,7 +628,7 @@
"status.direct_indicator": "Pieminēts privāti",
"status.edit": "Rediģēt",
"status.edited": "Rediģēts {date}",
"status.edited_x_times": "Rediģēts {count, plural, one {{count} reizi} other {{count} reizes}}",
"status.edited_x_times": "Rediģēts {count, plural, one {{count} reize} other {{count} reizes}}",
"status.embed": "Iestrādāt",
"status.favourite": "Iecienīts",
"status.filter": "Filtrē šo ziņu",
@ -656,8 +656,8 @@
"status.remove_bookmark": "Noņemt grāmatzīmi",
"status.replied_to": "Atbildēja {name}",
"status.reply": "Atbildēt",
"status.replyAll": "Atbildēt uz pavedienu",
"status.report": "Sūdzēties par @{name}",
"status.replyAll": "Atbildēt uz tematu",
"status.report": "Ziņot par @{name}",
"status.sensitive_warning": "Sensitīvs saturs",
"status.share": "Kopīgot",
"status.show_filter_reason": "Tomēr rādīt",
@ -668,7 +668,7 @@
"status.show_original": "Rādīt oriģinālu",
"status.title.with_attachments": "{user} publicējis {attachmentCount, plural, one {pielikumu} other {{attachmentCount} pielikumus}}",
"status.translate": "Tulkot",
"status.translated_from_with": "Tulkots no {lang}, izmantojot {provider}",
"status.translated_from_with": "Tulkots no {lang} izmantojot {provider}",
"status.uncached_media_warning": "Priekšskatījums nav pieejams",
"status.unmute_conversation": "Noņemt sarunas apklusinājumu",
"status.unpin": "Noņemt profila piespraudumu",
@ -681,16 +681,16 @@
"time_remaining.hours": "{number, plural, one {Atlikusi # stunda} other {Atlikušas # stundas}}",
"time_remaining.minutes": "{number, plural, one {Atlikusi # minūte} other {Atlikušas # minūtes}}",
"time_remaining.moments": "Atlikuši daži mirkļi",
"time_remaining.seconds": "{number, plural, one {Atlikusi # sekunde} other {Atlikušas # sekundes}}",
"time_remaining.seconds": "Atlikušas {number, plural, one {# sekunde} other {# sekundes}}",
"timeline_hint.remote_resource_not_displayed": "{resource} no citiem serveriem nav parādīti.",
"timeline_hint.resources.followers": "Sekotāji",
"timeline_hint.resources.follows": "Sekojošie",
"timeline_hint.resources.follows": "Seko",
"timeline_hint.resources.statuses": "Vecāki ieraksti",
"trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} cilvēki}} par {days, plural, one {# dienu} other {{days} dienām}}",
"trends.trending_now": "Aktuālās tendences",
"ui.beforeunload": "Ja pametīsiet Mastodon, jūsu melnraksts tiks zaudēts.",
"ui.beforeunload": "Ja pametīsit Mastodonu, jūsu melnraksts tiks zaudēts.",
"units.short.billion": "{count}Mjd",
"units.short.million": "{count}Mjn",
"units.short.million": "{count}M",
"units.short.thousand": "{count}Tk",
"upload_area.title": "Velc un nomet, lai augšupielādētu",
"upload_button.label": "Pievienot bildi, video vai audio datni",
@ -707,7 +707,7 @@
"upload_modal.apply": "Pielietot",
"upload_modal.applying": "Pielieto…",
"upload_modal.choose_image": "Izvēlēties attēlu",
"upload_modal.description_placeholder": "Raibais runcis Rīgā ratu rumbā rūc",
"upload_modal.description_placeholder": "Raibais runcis rīgā ratu rumbā rūc",
"upload_modal.detect_text": "Noteikt tekstu no attēla",
"upload_modal.edit_media": "Rediģēt multividi",
"upload_modal.hint": "Noklikšķini vai velc apli priekšskatījumā, lai izvēlētos fokusa punktu, kas vienmēr būs redzams visos sīktēlos.",

@ -593,6 +593,7 @@
"search_results.all": "Semua",
"search_results.hashtags": "Tanda pagar",
"search_results.nothing_found": "Tidak dapat menemui apa-apa untuk istilah carian tersebut",
"search_results.see_all": "Lihat semua",
"search_results.statuses": "Hantaran",
"search_results.title": "Mencari {q}",
"server_banner.about_active_users": "Pengguna pelayan ini sepanjang 30 hari yang lalu (Pengguna Aktif Bulanan)",

@ -537,7 +537,7 @@
"relative_time.today": "сегодня",
"reply_indicator.cancel": "Отмена",
"report.block": "Заблокировать",
"report.block_explanation": перестаните видеть посты этого пользователя, а он(а) больше не сможет подписаться на вас и читать ваши посты. Он(а) сможет понять что вы заблокировали его/её.",
"report.block_explanation": ы перестанете видеть посты этого пользователя, и он(а) больше не сможет подписаться на вас и читать ваши посты. Он(а) сможет понять, что вы заблокировали его/её.",
"report.categories.legal": "Правовая информация",
"report.categories.other": "Другое",
"report.categories.spam": "Спам",

@ -1,6 +1,7 @@
{
"about.blocks": "මහතකරණ සයක",
"about.contact": "සබඳතව:",
"about.disclaimer": "මටඩන යනදහසත මර මගයක. එය මටඩන gGmbH හළඳ නමයක.",
"about.domain_blocks.suspended.title": "අත ඇත",
"about.rules": "සයකය",
"account.account_note_header": "සටහන",
@ -25,6 +26,7 @@
"account.follows.empty": "තවමත අනගමනය නකරය.",
"account.follows_you": "ඔබව අනගමනය කරය",
"account.go_to_profile": "පකඩට යනන",
"account.joined_short": "එකනය",
"account.link_verified_on": "මම සබ අයය {date} ද පර",
"account.media": "මයය",
"account.mention": "@{name} සඳහන කරනක",
@ -102,6 +104,8 @@
"compose_form.publish_form": "නව ලය",
"compose_form.publish_loud": "{publish}!",
"compose_form.save_changes": "වනසකමරකන",
"compose_form.spoiler.marked": "අනතරගත අවවදය ඉවත කරනන",
"compose_form.spoiler.unmarked": "අනතරගත අවවදයක එක කරනන",
"compose_form.spoiler_placeholder": "අවවදය මයනන",
"confirmation_modal.cancel": "අවල",
"confirmations.block.block_and_report": "අවහර කර ව කරනන",
@ -131,7 +135,7 @@
"directory.new_arrivals": "නව ප",
"directory.recently_active": "මත ද සකයය",
"disabled_account_banner.account_settings": "ගකස",
"embed.instructions": "පහත කතය පටපතතතවය ඔබ අඩවයට ඇතළත කරන.",
"embed.instructions": "පහත කතය පටපතය ඔබග අඩවයට කවදන.",
"embed.preview": "මන එය පන අනදම:",
"emoji_button.activity": "කරකම",
"emoji_button.clear": "මකනන",
@ -151,7 +155,7 @@
"empty_column.account_timeline": "මත!",
"empty_column.account_unavailable": "පකඩ න",
"empty_column.blocks": "ක පරලකය අවහර කර නත.",
"empty_column.bookmarked_statuses": "ඔබට තවමත සලක කළ මවලමවකත. ඔබ එකක සලක කළ වට, එය මවන ඇත.",
"empty_column.bookmarked_statuses": "ඔබ සතව ප තබන ලද ලවකත. ඔබ පවක තබන වට, එය මවන ඇත.",
"empty_column.domain_blocks": "අවහර කරන ලද වසමත.",
"empty_column.explore_statuses": "දවක. පසව නවත පර කරනන!",
"empty_column.follow_requests": "ඔබට තවමත අනගමන ඉලත. ඉලමකට, එය මවන ඇත.",
@ -353,7 +357,7 @@
"report.forward": "{target} වත හරවනන",
"report.forward_hint": "ගම වනතයකයක. වක පටපතක එතනටත එවනන?",
"report.mute": "නහඬ",
"report.mute_explanation": "ඔබට ඔව. ඔවට තවමත ඔබව අනගමනය කමට සහ ඔබ පළ කමට හ අතර ඒවශබද කර ඇත බව න.",
"report.mute_explanation": "ඔබ ඔවදක ඇත. ඔවට තවමත ඔබව අනගමනයට සහ ඔබගමට හ අතර ඔවව නහඬ කර ඇත බව දන ගමට න.",
"report.next": "ඊළඟ",
"report.placeholder": "අමතර අදහස",
"report.reasons.dislike": "මම එයට අකමත",
@ -367,7 +371,7 @@
"report.rules.subtitle": "අදළ සයලල තරනන",
"report.rules.title": "කමන න උලඝනය කරනද?",
"report.statuses.subtitle": "අදළ සයලල තරනන",
"report.statuses.title": "මම වව උපසථ කරන පද?",
"report.statuses.title": "මම වව උපසථ කළ ල ද?",
"report.submit": "යමනන",
"report.target": "{target} වම",
"report.thanks.take_action": "මටඩන ඔබ දකන දලනයට තන වකලප:",
@ -375,7 +379,7 @@
"report.thanks.title": "මය නය යද?",
"report.thanks.title_actionable": "වමට ස, අපන ස බලම.",
"report.unfollow": "@{name}අනගමනය නකරනන",
"report.unfollow_explanation": "ඔබ මම ගම අනගමනය කරය. ඔබවසරහය ඔව පළ ක තවදරටතමට, ඒව අනගමනය නකරනන.",
"report.unfollow_explanation": "ඔබ මම ගම අනගමනය කරය. ඔබ ඔවමට, ඔවව තවදරටත අනගමනය නකරනන.",
"report_notification.attached_statuses": "{count, plural, one {ල {count}} other {ල {count} ක}} අම ඇත",
"report_notification.categories.other": "වනත",
"report_notification.categories.spam": "ආයත",
@ -443,7 +447,7 @@
"timeline_hint.resources.followers": "අනකය",
"timeline_hint.resources.follows": "අනගමනය",
"timeline_hint.resources.statuses": "පරණ ල",
"trends.trending_now": "ද රවණතවය",
"trends.trending_now": "ද එන",
"ui.beforeunload": "ඔබ මටඩනර ගයහ කටටපත අහ.",
"units.short.billion": "{count}බ",
"units.short.million": "ද.ල. {count}",

@ -14,6 +14,8 @@ module ActivityPub::CaseTransform
when String
camel_lower_cache[value] ||= if value.start_with?('_:')
"_:#{value.delete_prefix('_:').underscore.camelize(:lower)}"
elsif LanguagesHelper::ISO_639_1_REGIONAL.key?(value.to_sym)
value
else
value.underscore.camelize(:lower)
end

@ -25,7 +25,8 @@ class Admin::Metrics::Dimension::SoftwareVersionsDimension < Admin::Metrics::Dim
end
def ruby_version
value = "#{RUBY_VERSION}p#{RUBY_PATCHLEVEL}"
yjit = defined?(RubyVM::YJIT) && RubyVM::YJIT.enabled?
value = "#{RUBY_VERSION}p#{RUBY_PATCHLEVEL}#{yjit ? ' +YJIT' : ''}"
{
key: 'ruby',

@ -11,7 +11,7 @@ class Admin::Metrics::Dimension::SpaceUsageDimension < Admin::Metrics::Dimension
protected
def perform_query
[postgresql_size, redis_size, media_size]
[postgresql_size, redis_size, media_size, search_size].compact
end
def postgresql_size
@ -65,4 +65,22 @@ class Admin::Metrics::Dimension::SpaceUsageDimension < Admin::Metrics::Dimension
redis.info
end
end
def search_size
return unless Chewy.enabled?
client_info = Chewy.client.info
value = Chewy.client.indices.stats['indices'].values.sum { |index_data| index_data['primaries']['store']['size_in_bytes'] }
{
key: 'search',
human_key: client_info.dig('version', 'distribution') == 'opensearch' ? 'OpenSearch' : 'Elasticsearch',
value: value.to_s,
unit: 'bytes',
human_value: number_to_human_size(value),
}
rescue Faraday::ConnectionFailed, Elasticsearch::Transport::Transport::Error
nil
end
end

@ -131,7 +131,7 @@ class Account < ApplicationRecord
scope :searchable, -> { without_unapproved.without_suspended.where(moved_to_account_id: nil) }
scope :discoverable, -> { searchable.without_silenced.where(discoverable: true).joins(:account_stat) }
scope :followable_by, ->(account) { joins(arel_table.join(Follow.arel_table, Arel::Nodes::OuterJoin).on(arel_table[:id].eq(Follow.arel_table[:target_account_id]).and(Follow.arel_table[:account_id].eq(account.id))).join_sources).where(Follow.arel_table[:id].eq(nil)).joins(arel_table.join(FollowRequest.arel_table, Arel::Nodes::OuterJoin).on(arel_table[:id].eq(FollowRequest.arel_table[:target_account_id]).and(FollowRequest.arel_table[:account_id].eq(account.id))).join_sources).where(FollowRequest.arel_table[:id].eq(nil)) }
scope :by_recent_status, -> { order(Arel.sql('account_stats.last_status_at DESC NULLS LAST')) }
scope :by_recent_status, -> { includes(:account_stat).merge(AccountStat.order('last_status_at DESC NULLS LAST')).references(:account_stat) }
scope :by_recent_sign_in, -> { order(Arel.sql('users.current_sign_in_at DESC NULLS LAST')) }
scope :popular, -> { order('account_stats.followers_count desc') }
scope :by_domain_and_subdomains, ->(domain) { where(domain: Instance.by_domain_and_subdomains(domain).select(:domain)) }

@ -114,7 +114,7 @@ class RelationshipFilter
def activity_scope(value)
case value
when 'dormant'
AccountStat.where(last_status_at: nil).or(AccountStat.where(AccountStat.arel_table[:last_status_at].lt(1.month.ago)))
Account.joins(:account_stat).where(account_stat: { last_status_at: [nil, ...1.month.ago] })
else
raise Mastodon::InvalidParameterError, "Unknown activity: #{value}"
end

@ -58,10 +58,10 @@ si:
authorize: සතපනය
deny: රතප කරන
error:
title: ෂයක ඇත
title: ෂයක ඇත
new:
prompt_html: "%{client_name} ඔබගමට පරවශ වමට අවසර ලබමට කමත. එය තවන පශවය යමක. <strong>ඔබ එය වස නකරන නම, ඔබ එයට අවසර නය යය.</strong>"
review_permissions: අවසර සමචනය කරන
review_permissions: අවසර සමචනය
title: බලය පවර අවශ
show:
title: ම අවසර කතය පටපත කර එය යමට අලවනන.
@ -73,11 +73,11 @@ si:
index:
authorized_at: "%{date}මත අවසර ද ඇත"
description_html: API භතය ඔබගමට පරවශ වය හ. ඔබ ම හඳගත නම, හමකරදස හ නම, ඔබට එහරවශය අවල කළ හක.
last_used_at: වසන වරට භ කළ %{date}
last_used_at: ම භතය %{date}
never_used: කර න
scopes: අවසර
superapp: අභයනතර
title: ඔබග බලයලත යදපත
title: ඔබග බලයලත
errors:
messages:
access_denied: සමපතකර අවසර සයකය ඉලම පරතප කළය.

@ -47,7 +47,7 @@ ko:
label: 역할 변경
no_role: 역할 없음
title: "%{username}의 역할 변경"
confirm: 확정
confirm: 신원 확인
confirmed: 확인됨
confirming: 확인 중
custom: 사용자 지정

@ -460,7 +460,7 @@ lv:
description_html: Tu gatavojies importēt domēna bloku sarakstu. Lūdzu, ļoti rūpīgi pārskati šo sarakstu, it īpaši, ja tu pats neesi to veidojis.
existing_relationships_warning: Esošās sekošanas attiecības
private_comment_description_html: 'Lai palīdzētu tev izsekot, no kurienes nāk importētie bloki, tiks izveidoti importētie bloki ar šādu privātu komentāru: <q>%{comment}</q>'
private_comment_template: Importēts no %{source} %{date}
private_comment_template: Importēt no %{source} %{date}
title: Importēt bloķētos domēnus
invalid_domain_block: 'Viens vai vairāki domēna bloķi tika izlaisti šādas kļūdas(-u) dēļ: %{error}'
new:
@ -1107,7 +1107,7 @@ lv:
new_confirmation_instructions_sent: Pēc dažām minūtēm saņemsi jaunu e-pastu ar apstiprinājuma saiti!
title: Pārbaudi savu iesūtni
sign_in:
preamble_html: Pierakstieties ar saviem <strong>%{domain}</strong> akreditācijas datiem. Ja jūsu konts ir mitināts citā serverī, jūs nevarēsit pieteikties šeit.
preamble_html: Piesakies ar saviem <strong>%{domain}</strong> akreditācijas datiem. Ja tavs konts ir mitināts citā serverī, tu nevarēsi pieteikties šeit.
title: Pierakstīties %{domain}
sign_up:
manual_review: Reģistrācijas domēnā %{domain} manuāli pārbauda mūsu moderatori. Lai palīdzētu mums apstrādāt tavu reģistrāciju, uzraksti mazliet par sevi un to, kāpēc vēlies kontu %{domain}.

@ -16,8 +16,6 @@ si:
last_active: අවසන ක
link_verified_on: ම සබවය %{date}හ පර කරන ලද
nothing_here: වකත!
pin_errors:
following: ඔබට අනමත කමට අවශය පගලය ඔබ දනටමත අනගමනය කරමය ය
posts:
one:
other:
@ -69,7 +67,7 @@ si:
invite_request_text: එකමට හ
invited_by: ආරධන කරන ලද
ip: අ.ජ. ක. (IP)
joined: එක ඇත
joined: එකනය
location:
all: යල
local:
@ -123,7 +121,7 @@ si:
security_measures:
only_password: රපදය පමණ
password_and_2fa: රපදය සහ 2FA
sensitized: සලක කර ඇත
sensitized: බව සලක කර ඇත
shared_inbox_url: ගත එන ල URL
show:
created_reports:
@ -173,7 +171,7 @@ si:
destroy_email_domain_block: ඊම එක මකන
destroy_instance: වසම ප කරන
destroy_ip_block: IP රය මකන
destroy_status: පළ ක මකන
destroy_status: මකන
destroy_unavailable_domain: ලබ ගත න වසම මකන
disable_2fa_user: 2FA අබල කරන
disable_custom_emoji: අභ ඉම අබල කරන
@ -199,7 +197,7 @@ si:
update_announcement: දනය යවතල කරන
update_custom_emoji: අභ ඉමවතන කරන
update_domain_block: වතන කරන
update_status: පළ කම යවත කරන
update_status: ය යවත කරන
actions:
approve_user_html: "%{name} අනමත ලපදය %{target}සට"
assigned_to_self_report_html: "%{name} වව %{target} තමනටම පවර ඇත"
@ -220,7 +218,6 @@ si:
destroy_email_domain_block_html: "%{name} අවහර නකළ ව වසම %{target}"
destroy_instance_html: "%{name} ප කරන ලද වසම %{target}"
destroy_ip_block_html: IP %{target}සඳහ %{name} මක
destroy_status_html: "%{name} ප %{target}ව ඉවත කරන ලද"
destroy_unavailable_domain_html: "%{name} වසම %{target}වත බම නවත ආරමභ වය"
disable_2fa_user_html: "%{name} පරලක %{target}සඳහධක දකක අවශයතවය අකය කර ඇත"
disable_custom_emoji_html: "%{name} ආබත ඉම %{target}"
@ -236,18 +233,17 @@ si:
reopen_report_html: "%{name} නවත වත කළ වව %{target}"
reset_password_user_html: "%{name} පරලක %{target}හරපදය යළවනන"
resolve_report_html: "%{name} වසඳන ලද වව %{target}"
sensitive_account_html: "%{name} %{target}හය ස සලක කර ඇත"
sensitive_account_html: "%{target}ගය ස බව %{name} සලක කර ඇත"
silence_account_html: "%{name} සත %{target}ගමක"
suspend_account_html: "%{name} %{target}ගම අත ඇත"
unassigned_report_html: "%{name} පවරව %{target}"
unblock_email_account_html: "%{name} %{target}ග ඊමනය අවහර කම ඉවත කරන ලද"
unsensitive_account_html: "%{name} සලකකළ %{target}ගය ස "
unsensitive_account_html: "%{target}ගය ස බව %{name} ඉවත කර ඇත"
unsilence_account_html: "%{target}ග %{name} undid සව"
unsuspend_account_html: "%{name} අතවන ලද %{target}ගම"
update_announcement_html: "%{name} යවතන නදනය %{target}"
update_custom_emoji_html: "%{name} යවතන කළ ඉම %{target}"
update_domain_block_html: "%{target}සඳහ %{name} යවතන කරන ලද වසමරණ"
update_status_html: "%{name} %{target}යවතන කරන ලද පළ කම"
empty: ලඝ-සටහන හම.
filter_by_action: ගය අනව පරන
filter_by_user: පරලකය අනව පරන
@ -305,8 +301,8 @@ si:
dashboard:
active_users: පරලකයන
interactions: අනතර
media_storage: ය ගබඩ
new_users: නව පරලකයන
media_storage: ය ආචයනය
new_users: නව පරලකය
opened_reports: ත ව
pending_appeals_html:
one: "<strong>%{count}</strong> අභචනයක බල"
@ -435,7 +431,7 @@ si:
unavailable: ලබ ගත න
delivery_available: ම ලබ ගත හ
delivery_error_days: ෂ සහත ද
delivery_error_hint: න %{count} ක සඳහම කළ න නම, එය සවයයව බය නස ලක කරන.
delivery_error_hint: වස %{count} කරදමට නවහ, බරදමට න බව සවයයව සලක.
destroyed_msg: "%{domain} සට දතත ද ආසනන මකම සඳහ කර ඇත."
empty: වසමවක හමය.
known_accounts:
@ -454,7 +450,7 @@ si:
total_followed_by_them: ඔව අනගමනය කරන ලද
total_followed_by_us: අප ව අනගමනය කරන ලද
total_reported: ඔවන ව
total_storage: ය ඇම
total_storage: ය ඇම
totals_time_period_hint_html: පහත දන එකතයලලය සඳහ දතත ඇතළත.
invites:
deactivate_all: යලල අකය කරන
@ -483,11 +479,9 @@ si:
relays:
add_new: නව ර එක කරන
delete: මකන
description_html: "<strong>ෆඩරෂන</strong> යන එයට දයක වරකශයට පත කරන සයකයන අතර වල පරසධ පළ කවම කරන අතරමයකයක. <strong>එය ක සහ මධයම සයකයනට fediverse</strong>ව අනතරගතය සමට උදව කළ හ අතර, එස නමය පරලකයට දරසථ සයකයන මත වනතගලය හසයව අනගමනය කම අවශය ව."
disable: අබල කරන
disabled: අබලය
enable: සබල කරන
enable_hint: සකය කළ පස, ඔබයකය මම රයලම ප පළ ක සඳහයක වන අතර, මම සයකය පළ ක එයට යම ආරමභ කරන ඇත.
enabled: සබල කර ඇත
inbox_url: URL
pending: අනය සඳහ
@ -507,8 +501,6 @@ si:
action_log: ගණන සටහන
action_taken_by: ගන ලද පයවර
actions:
delete_description_html: කරන ලද පළ ක මක ඇත අතර එම ගම අනගත උලඝනයනර කමට ඔබට උදවමට වරජනයක කරන ඇත.
mark_as_sensitive_description_html: කරන ලද පළ ක වල මය සස සලක කරන ලබන අතර එම ගම මග අනගත උලඝනයන උතසනන කමට ඔබට උපකර කමට වරජනයක කරන ඇත.
other_description_html: ම පලනය කම සහ ව කළ ගමට සනදනය අභකරණය කම සඳහ තවතකලප බලනන.
resolve_description_html: කරන ලද ගමට එරව කගයකගන ඇත, වඩ වරජනයක, වව වස දමන ඇත.
actions_description_html: ම වව වසඳමට ගත යගය තරණය කරනන. ඔබ ව කරන ලද ගමට එරව දණඩනය කගයක ගන නම, <strong>Spam</strong> කඩය තගතට හර, ඔවට වමක යවන.
@ -526,14 +518,14 @@ si:
delete_and_resolve: මකන
forwarded: හරව යව ඇත
forwarded_to: "%{domain} වත හරව"
mark_as_resolved: සඳ ඇතස ලක කර
mark_as_sensitive: ස ලක කර
mark_as_unresolved: සඳස ලක කර
mark_as_resolved: සඳ බව ය
mark_as_sensitive: බව ය
mark_as_unresolved: සඳ බව ය
no_one_assigned:
notes:
create: සටහන එකත කරන
create_and_resolve: සටහන සමඟ වසඳන
create_and_unresolve: සටහනක සමඟ නවත ත කර
create_and_resolve: සටහන සමඟ වසඳන
create_and_unresolve: සටහනක සමඟ නවත අර
delete: මකන
placeholder: න ඇතග, හනත අදළ යවතන වතර කරනන...
title: සටහන
@ -564,7 +556,12 @@ si:
moderation: හතකරණය
special:
delete: මකන
permissions_count:
one: අවසර %{count}
other: අවසර %{count}
privileges:
administrator: පරලක
delete_user_data: පරලක දතත මකන
invite_users: ආරධන කරන
manage_announcements: දනය කළමනකරණය
manage_federation: ඒකබදධ කළමනකරණය
@ -592,6 +589,7 @@ si:
title:
discovery:
profile_directory: කඩ නවල
public_timelines: රසධ කලර
domain_blocks:
all: ටම
disabled: ටවත
@ -626,7 +624,7 @@ si:
media:
title: යය
metadata: රදත
no_status_selected: වක ගත තනතවකනස කර න
no_status_selected: වක වකනස කර න
open: ය අර
original_status:
status_changed: ය සතය
@ -639,7 +637,7 @@ si:
disable: "%{name} %{target}ගම නචල කළය"
mark_statuses_as_sensitive: "%{target}ග බව %{name} සලක කර ඇත"
none: "%{name} %{target}අනත ඇඟවමක යව ඇත"
sensitive: "%{name} %{target}ගම සලක කර ඇත"
sensitive: "%{target}ගම ස බව %{name} සලක කර ඇත"
silence: "%{name} සත %{target}ගමක"
suspend: "%{name} %{target}ගම අත ඇත"
appeal_approved: අභචන කළ
@ -691,9 +689,9 @@ si:
title: රකශකයන
rejected: රතප කළ
statuses:
allow: පළ කමට ඉඩ
allow: පළ කමට ඉඩද
allow_account: කතවරයට ඉඩ ද
disallow: ළ කට ඉඩ න
disallow: රකශනයට ඉඩ න
disallow_account: කතවරයට ඉඩ න
not_discoverable: කර ගත හ බව තන න
shared_by:
@ -732,12 +730,12 @@ si:
webhooks:
add_new: අනත ලකයය එක කරන
delete: මකන
disable: කරන
disabled: ආබ
disable: බල කරන
disabled: අබල
edit: අනත ලකයය සකරණය කරන
empty: ඔබට තවම වස කර ඇත webhook අනත ලකයයකත.
enable: සබල කරන
enabled:
enabled: මකය
enabled_events:
one: සබල ස 1
other: සබල ස %{count}
@ -752,7 +750,6 @@ si:
actions:
delete_statuses: ඔව පළ ක මකමට
disable: ඔවම කමට
mark_statuses_as_sensitive: ඔව තනතස සලකමට
none: අනත ඇඟවමක
sensitive: ඔවම සස සලකමට
silence: ඔවම සමට
@ -769,7 +766,7 @@ si:
new_trending_links:
title: එන සබ
new_trending_statuses:
title: රවණත පළ ක
title: එන ල
new_trending_tags:
no_approved_tags: නට අනමත පරවණතත.
requirements: 'මම ඕනම අපෂකයට #%{rank} අනමත පරවණතගය අභබවය, එය දනට ලක %{lowest_tag_score}ක සමඟ #%{lowest_tag_name} ව.'
@ -803,11 +800,13 @@ si:
applications:
created: ම සථකව ස
destroyed: ම සථකව මක ඇත
logout:
regenerate_token: රවශ ටකනය නවත උතදනය කරන
token_regenerated: රවශ ටකනය සථකව පරතජනනය කරන ලද
warning: ම දතත සමඟ ඉතරවශම වනන. එය කක ක සමඟ බගනන!
your_token: ඔබරවශ ටකනය
auth:
apply_for_account: මක ඉලලන
delete_account: ම මකන
delete_account_html: ඔබට ඔබගම මකමට අවශය නම, ඔබට <a href="%{path}">ම ඉදයට යක</a>. තහවම සඳහ ඔබ අසන ඇත.
description:
@ -823,14 +822,25 @@ si:
logout:
migrate_account: නතමකට යන
migrate_account_html: ඔබට මම ගම වනත එකකට හරවමට අවශය නම, ඔබට එය <a href="%{path}">මසගත කළ හක</a>.
progress:
details: ඔබගතර
rules: ගන
providers:
cas: CAS
saml: SAML
register: පද
registration_closed: "%{instance} නව සකයගනත"
reset_password: රපදය යළ සකසන
rules:
accept: ගන
back: ආපස
title_invited: ඔබට ආරධන කර ඇත.
security: ආරක
set_new_password: නව මරපදය සකසන
setup:
title: ඔබග එනල බලන
sign_in:
title: "%{domain} වත පන"
status:
account_status: තතවය
confirming: ල තහවම සමණ කම සඳහ.
@ -876,7 +886,7 @@ si:
warning:
before: 'ඉදයට යමට පර, කරකර මම සටහනයවනන:'
caches: නතයකයනගත කර ඇත අනතරගතය දගටම පවතය හ
data_removal: ඔබග පළ ක සහ අන දතත සරවම ඉවත කරන
data_removal: ඔබග සහ අන දතත සදහටම ඉවත ඇත
email_change_html: ඔබට ඔබගම මක</a> <a href="%{path}">කළ හ
email_contact_html: එය තවමත නම, ඔබට උදව සඳහ <a href="mailto:%{email}">%{email}</a> වය හ
email_reconfirmation_html: ඔබට තහවල න නම, ඔබට එය <a href="%{path}">නවත ඉලය හක</a>
@ -900,13 +910,12 @@ si:
description_html: ඔබගමට එරව ගන ලද ක සහ %{instance}හය මණඩලය ව ඔබට එව ඇත අනත ඇඟව.
recipient: ත ය කරන ලද
reject_appeal: අභචනය පරතප කරන
status: 'පළ කම #%{id}'
status_removed: පළ කනටමත පදධත ඉවත කර ඇත
status: "#%{id} ලය"
status_removed: නටමත පදධත ඉවත කර ඇත
title: "%{action} සට %{date}"
title_actions:
delete_statuses: පස ඉවත
delete_statuses: ඉවත
disable: ම ක
mark_statuses_as_sensitive: තනතස සලක
none: අවවදයය
sensitive: ම සස සලක
silence: ම ස
@ -941,7 +950,7 @@ si:
archive_takeout:
date: නය
download: ඔබගරකතය බගන
hint_html: ඔබට ඔබග පළ ක <strong>සහ උඩගත කළ මය</strong>හරකතයක ඉලය හක. නත කළ දතත ActivityPub ආක, ඕනම අනල මගයකට කයවය හය. ඔබට දන 7කට වරකඛනරයක ඉලය හ.
hint_html: ඔබට <strong>ල සහ උඩගත කළ මයවල</strong> සරකෂණයක ඉලමට හය. නත කළ දතත ActivityPub ආකයට ගළපන ඕනම මගයකයවමට හය. ඔබට දවස 7 කට වරකරකෂණයක ඉලමට හ.
in_progress: ඔබගරකතය සමදනය කරම...
request: ඔබගරකතය ඉලලන
size: රමණය
@ -951,16 +960,15 @@ si:
domain_blocks: වසම අවහර ක
lists:
mutes: ඔබ නහඬ කරන
storage: ගබඩ
storage: ආචයනය
featured_tags:
add_new: අල එකත කරන
hint_html: "<strong>වගගත හනවද?</strong> ඒව ඔබකඩරමඛව පරදරශනය වන අතර එම හ යටත ඔබ පළ කරවමට මට ඉඩ සලසය. නමක කන වබඳ වවක තබම සඳහ ඔවට මවලමක."
filters:
contexts:
account: කඩයන
home: ල සහ ල
notifications:
public: ලර
public: රසලර
thread:
edit:
add_keyword: ල පදය එක කරන
@ -1018,9 +1026,12 @@ si:
overwrite: උඩයන
overwrite_long: වතමන නව ඒව සමඟ පරතපනය කරන
preface: ඔබ අනගමන කරන හ අවහර කරන පගලයවකනතයකයක ඔබ නත කර ඇත දතත ඔබට ආයත කළ හක.
status: තතවය
success: ඔබග දතත සථකව උඩගත කර ඇත අතර නයමත වවට සකස ඇත
titles:
lists: ආයත ව
type_groups:
constructive: අනගමන හ
types:
blocking: අවහර ල
bookmarks:
@ -1064,7 +1075,7 @@ si:
title: සතපන ඉතසය
media_attachments:
validations:
images_and_video: නටමත ර අඩ පළ කමකට වවක ඇමය න
images_and_video: නටමත ප අඩයකට දයකයක ඇමමට න
not_ready: කසම අවසනකළ ග ඇමය නක. මතකවත උතහ කරනන!
too_many: 4කට වඩ ඇමය න
migrations:
@ -1168,8 +1179,8 @@ si:
too_many_options: අථක %{max} කට වඩ අඩය ය
preferences:
other: නත
posting_defaults: රන පළ ක
public_timelines: ලර
posting_defaults: මවට පළ කරන ආකරය
public_timelines: රසලර
privacy:
search: යන
privacy_policy:
@ -1203,11 +1214,8 @@ si:
rss:
content_warning: 'අනතරගත අනත ඇඟවම:'
descriptions:
account: "@%{acct}සට ප පළ ක"
tag: "#%{hashtag}ට කර ඇත පළ ක"
account: "@%{acct} වරසධ ල"
scheduled_statuses:
over_daily_limit: ඔබ අද දනට නයමත පළ ක %{limit} සව ඉකමව ඇත
over_total_limit: ඔබ නයමත පළ ක %{limit} සව ඉකමව ඇත
too_soon: යමත දනය අනගතයය ය
sessions:
activity: අවසන කරකම
@ -1259,7 +1267,7 @@ si:
account_settings: කස
aliases: අනවරථ නමයන
appearance:
authorized_apps: අවසර ලත
authorized_apps: බලයලත
back: ටඩනත ආපස
delete: ම ම
development: වරධනය
@ -1273,7 +1281,7 @@ si:
preferences: අභ
profile: රසධ පකඩ
relationships: අනකය සහ අනකය
statuses_cleanup: වයය පළ ක මක
statuses_cleanup: වය
two_factor_authentication: ධක Aut
webauthn_authentication: ආරකෂණ යත
statuses:
@ -1295,13 +1303,13 @@ si:
other: 'අනමත නකළ හ අඩ: %{tags}'
edited_at_html: කරණය %{date}
errors:
in_reply_not_found: ඔබ පමට උතහ කරන පළ කම පවතන බවක.
in_reply_not_found: ඔබ පමට කරන ලය නපවතන බව ප.
open_in_web: බයත කරන
over_character_limit: අකෂර සව %{max} ඉකමව ඇත
pin_errors:
direct: සඳහන කළ පරලකයට පමණකන පළ ක ඇමය න
limit: ඔබ දනටමත උපරම පළ කව අම ඇත
ownership: නත පළ කමක ඇමය න
direct: සඳහන කළ අයට පමණකන ල ඇමමට න
limit: නටමතනට ඇමමට හවට ළඟ ඇත
ownership: නත අයග ඇමමට න
poll:
total_people:
one: ගලය %{count}
@ -1324,16 +1332,14 @@ si:
unlisted: ගත නකළ
unlisted_long: ම කටම දය හක, නමලරගත කර න
statuses_cleanup:
enabled: රණ පළ කවයයව මකන
enabled_hint: ඔබ පළ ක පහත වයතකවල එකකට ගලප නමස, ඒවත වයසවකට ළඟ පසවයයව මකය
enabled: පරණ ලවයයව මකන
exceptions: ර ද
explanation: පළ ක මකම මල අධක මමක වන බ, සයකය වනත ආකරයකයබහල නවන වට කලයත සමඟ මය ස. මම හව න, ඔබ පළ ක වයසවට ළඟ පසක වවකට පසව මකය හක.
ignore_favs: යතමයනසලකන
interaction_exceptions: අනතර මත පදනමයත
keep_direct: පණඩ තබගන
keep_direct_hint: ඔබග පණඩ කවක
keep_media: ය ඇම සහත ල තබගන
keep_media_hint: ය ඇම ඇත ඔබ පළ කවක මක
keep_media_hint: ය ඇම සහත ඔබගවක
keep_pinned: ඇම තබගන
keep_pinned_hint: ඔබ ඇමවක
keep_polls_hint: ඔබග මත වමස
@ -1374,12 +1380,12 @@ si:
edit: කරණය
enabled: -සධක සතපනය සකය කර ඇත
enabled_success: -සධක සතපනය සථකව සබල කර ඇත
generate_recovery_codes: රතධන කජනනය කරන
generate_recovery_codes: රතධන කඋතනය කරන
lost_recovery_codes: ඔබගරකථනය නවහ ඔබගමට පරවශය නවත ලබමට පරතධන කත ඔබට ඉඩ සලසය. ඔබට ඔබරතධන කත න ඇතනම, ඔබට ඒවවත උතදනය කළ හක. ඔබගරණරතධන කත අවල වන ඇත.
methods: ධක කරම
methods: ධක කරම
otp: Authenticator ය
recovery_codes: උපසරතධන ක
recovery_codes_regenerated: රතධන කථකව පරතජනනය කරන ලද
recovery_codes: රතධන ක උපසථය
recovery_codes_regenerated: රතධන කවත උතදනය ක
recovery_instructions_html: ඔබට කවද ඔබගරකථනයට පරවශය අහවහ, ඔබගමට පරවශය නවත ලබමට පහත පරතධන කත වල එකක කළ හක. <strong>පරතධන කත ආරකතව තබ ගනන</strong>. උදහරණයකස, ඔබට ඒවරණය කර වනතදගතඛන සමඟ ගබඩ කළ හය.
webauthn: ආරකෂණ යත
user_mailer:
@ -1407,19 +1413,17 @@ si:
appeal: අභචනයක ඉදපත කරන
appeal_description: ය දෂයක බව ඔබ වස කරන නම, ඔබට %{instance}හය මණඩලයට අභචනයක ඉදපත කළ හක.
categories:
spam: ආය
spam: ආය
violation: අනතරගතය පහත පරජපදශ උලඝනය කරය
explanation:
disable: ඔබට තවදරටත ඔබගම භ කළ නක, නම ඔබගකඩ සහ අන දතත නනසව පවත. ඔබට ඔබග දතතවල උපසථයක ඉලමට, ගකසනසමට හ ඔබගම මකමට හය.
sensitive: ට, ඔබග උඩගත කරන ලද සයලම මය ගස සලක කර ක-හරහ අනත ඇඟවමකපස සඟවන ඇත.
silence: ඔබට තවමත ඔබගම භ කළ හ නමනටමත ඔබව අනගමනය කරන පගලය පමණකම සයකය ඔබග පළ ක දක ඇත අතර, වධ සග වල ඔබව බර කරනය හක. කතත, අන අය තවමත ඔබව අත අනගමනය කළ හක.
sensitive: ට ඔබ උඩගත කරන සයලම මය ගස සලක අවවදයකපස සඟවන ඇත.
suspend: ඔබට තවදරටත ඔබගම භ කළ න අතර, ඔබගකඩ සහ අන දතත තවදරටතරවශ වය නක. දන 30ක පමණ දතත සමණය ඉවත කරන ත ඔබට තවමත ඔබ දතතවල උපසථයක ඉලමට පරනය වය හක, නම ඔබව අතම මගහර යම වමට අපක දතත කපයක රඳව ගන.
reason: 'හව:'
statuses: 'උප දකවන ලද පළ ක:'
subject:
delete_statuses: "%{acct} හ ඔබග පළ ක ඉවත කර ඇත"
delete_statuses: "%{acct} හ ඔබග ඉවත කර ඇත"
disable: ඔබගම %{acct} කර ඇත
mark_statuses_as_sensitive: "%{acct} හ ඔබග පළ කස සලක කර ඇත"
mark_statuses_as_sensitive: ඔබග %{acct} ල බව සලක කර ඇත
none: "%{acct} සඳහ අවවදය"
sensitive: ඔබග %{acct} ලය මට සස සලකය
silence: ඔබගම %{acct} ස කර ඇත
@ -1427,7 +1431,7 @@ si:
title:
delete_statuses: ඉවත කර ඇත
disable: ම නචල කර ඇත
mark_statuses_as_sensitive: පළ කලක කර ඇත
mark_statuses_as_sensitive: බව සලක කර ඇත
none: අවවදයය
sensitive: ම ස බව ය ඇත
silence: ම ස කර ඇත

@ -11,7 +11,6 @@ si:
title: කලප. ලබනට න
admin_account_action:
send_email_notification: පරලකයට ඔවම සමඟ සබඳ පමක ඇත
text_html: කලප. ඔබට post syntax භ කළ හක. කලය ඉත කර ගම සඳහ ඔබට අනත ඇඟව</a> <a href="%{path}">කළ හ
type_html: "<strong>%{acct}</strong>සමඟ කළ යරනන"
types:
disable: පරලකයම භ වළකවනන, නම ඔව අනතරගතය මකම හ සඟවනන එප.
@ -23,7 +22,7 @@ si:
ends_at: කලප. මම අවසදනය සවයයව පරකශනය ක ඉවත වන ඇත
scheduled_at: දනය වහම පරකශයට පතමට හව තබන
starts_at: කලප. ඔබගදනය නත කල පරසයකට බ ඇතනම
text: ඔබට post syntax භ කළ හක. කරකර පරලකයරය මත නදනය ලබ ගන ඉඩ ගලකමත වන
text: ඔබට පද ගළපමට හය. කරකර නදනය පරලකයරය ඉඩ කතරම ඇහනව ද පබඳවලකමත වන
appeal:
text: ඔබට වරජනයකට අභචන කළ හ එක වරක පමණ
defaults:
@ -120,7 +119,7 @@ si:
text: ම තරණය ආපසරවය ය මන කරන
defaults:
autofollow: ඔබගම අනගමනය කමට ආරධන කරන
avatar: අවත
avatar: කඩ ඡ
chosen_languages: රන
confirm_new_password: නව මරපදය තහව කරන
confirm_password: රපදය තහව කරන
@ -148,7 +147,6 @@ si:
setting_default_privacy: රහසයත
setting_default_sensitive: මවට මය ස බව සලක කරන
setting_delete_modal: යකමට පර ඒ ගන වමසන
setting_disable_swiping: වය චලන අකය කරන
setting_display_media: ය සදරශකය
setting_display_media_default: රන
setting_display_media_hide_all: යලල සඟවන
@ -156,7 +154,7 @@ si:
setting_expand_spoilers: අනතරගත අවවද සහත ලමවට දගහර
setting_hide_network: ඔබගලය සඟවන
setting_reduce_motion: සජකරණවල චලනය අඩ කරන
setting_system_font_ui: පදධතරන කරන
setting_system_font_ui: පදධතරන කරන
setting_theme: අඩව
setting_trends: අද පරවණතවන
setting_unfollow_modal: යම අනගමනය නමට පර තහවදය පවන
@ -175,8 +173,8 @@ si:
name: ගය
filters:
actions:
hide: සමණයම සඟවන
warn: නත ඇඟවමක සමඟ සඟවන
hide: මනම සඟවන
warn: වවදයක සහතව සඟවන
form_admin_settings:
custom_css: අභ CSS
profile_directory: කඩ නවලය සබල කරන
@ -184,8 +182,6 @@ si:
site_title: යකය නම
theme: රන
interactions:
must_be_follower: අනකයවන අයග අවහර කරන
must_be_following: ඔබ අනගමනය නකරන පගලය අවහර කරන
must_be_following_dm: ඔබ නදන අයග පණඩ ලම අවහර කරන
invite:
comment: අදහස
@ -201,12 +197,9 @@ si:
notification_emails:
digest: digest ඊම යවන
favourite: යම ඔබගයට පය කළ
follow: කවහර ඔබව අනගමනය කළ
follow_request: කවහර ඔබව අනගමනය කරන ලස ඉල
mention: කවහර ඔබව සඳහන කළ
pending_account: නව ගම සමචනය අවශයය
report: නව වවක ඉදපත
trending_tag: නව පරවණතවයට සමචනයක අවශය ව
follow: යම ඔබව අනගමනය කළ
mention: යම ඔබව සඳහන කළ
report: නව වවක කර ඇත
rule:
text:
tag:

@ -6,32 +6,60 @@ describe RelationshipFilter do
let(:account) { Fabricate(:account) }
describe '#results' do
context 'when default params are used' do
subject do
described_class.new(account, 'order' => 'active').results
end
let(:account_of_7_months) { Fabricate(:account_stat, statuses_count: 1, last_status_at: 7.months.ago).account }
let(:account_of_1_day) { Fabricate(:account_stat, statuses_count: 1, last_status_at: 1.day.ago).account }
let(:account_of_3_days) { Fabricate(:account_stat, statuses_count: 1, last_status_at: 3.days.ago).account }
let(:silent_account) { Fabricate(:account_stat, statuses_count: 0, last_status_at: nil).account }
before do
account.follow!(account_of_7_months)
account.follow!(account_of_1_day)
account.follow!(account_of_3_days)
account.follow!(silent_account)
end
before do
add_following_account_with(last_status_at: 7.days.ago)
add_following_account_with(last_status_at: 1.day.ago)
add_following_account_with(last_status_at: 3.days.ago)
context 'when ordering by last activity' do
context 'when not filtering' do
subject do
described_class.new(account, 'order' => 'active').results
end
it 'returns followings ordered by last activity' do
expect(subject).to eq [account_of_1_day, account_of_3_days, account_of_7_months, silent_account]
end
end
it 'returns followings ordered by last activity' do
expected_result = account.following.eager_load(:account_stat).reorder(nil).by_recent_status
context 'when filtering for dormant accounts' do
subject do
described_class.new(account, 'order' => 'active', 'activity' => 'dormant').results
end
expect(subject).to eq expected_result
it 'returns dormant followings ordered by last activity' do
expect(subject).to eq [account_of_7_months, silent_account]
end
end
end
end
def add_following_account_with(last_status_at:)
following_account = Fabricate(:account)
Fabricate(:account_stat, account: following_account,
last_status_at: last_status_at,
statuses_count: 1,
following_count: 0,
followers_count: 0)
Fabricate(:follow, account: account, target_account: following_account).account
context 'when ordering by account creation' do
context 'when not filtering' do
subject do
described_class.new(account, 'order' => 'recent').results
end
it 'returns followings ordered by last account creation' do
expect(subject).to eq [silent_account, account_of_3_days, account_of_1_day, account_of_7_months]
end
end
context 'when filtering for dormant accounts' do
subject do
described_class.new(account, 'order' => 'recent', 'activity' => 'dormant').results
end
it 'returns dormant followings ordered by last activity' do
expect(subject).to eq [silent_account, account_of_7_months]
end
end
end
end
end

@ -7,7 +7,7 @@ describe ActivityPub::NoteSerializer do
let!(:account) { Fabricate(:account) }
let!(:other) { Fabricate(:account) }
let!(:parent) { Fabricate(:status, account: account, visibility: :public) }
let!(:parent) { Fabricate(:status, account: account, visibility: :public, language: 'zh-TW') }
let!(:reply_by_account_first) { Fabricate(:status, account: account, thread: parent, visibility: :public) }
let!(:reply_by_account_next) { Fabricate(:status, account: account, thread: parent, visibility: :public) }
let!(:reply_by_other_first) { Fabricate(:status, account: other, thread: parent, visibility: :public) }
@ -18,8 +18,15 @@ describe ActivityPub::NoteSerializer do
@serialization = ActiveModelSerializers::SerializableResource.new(parent, serializer: described_class, adapter: ActivityPub::Adapter)
end
it 'has a Note type' do
expect(subject['type']).to eql('Note')
it 'has the expected shape' do
expect(subject).to include({
'@context' => include('https://www.w3.org/ns/activitystreams'),
'type' => 'Note',
'attributedTo' => ActivityPub::TagManager.instance.uri_for(account),
'contentMap' => include({
'zh-TW' => a_kind_of(String),
}),
})
end
it 'has a replies collection' do

@ -1825,9 +1825,9 @@
integrity sha512-tOQQBVH8LsUpGXqDnk+kaOGVsgZ8maHAhEiw3Git3p88q+c0Slgu47HuDnL6sVxeCfz24zbq7dOjsVYDiTpDIA==
"@reduxjs/toolkit@^1.9.5":
version "1.9.6"
resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.6.tgz#fc968b45fe5b17ff90932c4556960d9c1078365a"
integrity sha512-Gc4ikl90ORF4viIdAkY06JNUnODjKfGxZRwATM30EdHq8hLSVoSrwXne5dd739yenP5bJxAX7tLuOWK5RPGtrw==
version "1.9.7"
resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.7.tgz#7fc07c0b0ebec52043f8cb43510cf346405f78a6"
integrity sha512-t7v8ZPxhhKgOKtU+uyJT13lu4vL7az5aFi4IdoDs/eS548edn2M8Ik9h8fxgvMjGoAUVFSt6ZC1P5cWmQ014QQ==
dependencies:
immer "^9.0.21"
redux "^4.2.1"

Loading…
Cancel
Save