Merge pull request #2520 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to f476d9dab2
pull/2454/merge
commit
18856371be
|
@ -8,6 +8,7 @@
|
||||||
public/system
|
public/system
|
||||||
public/assets
|
public/assets
|
||||||
public/packs
|
public/packs
|
||||||
|
public/packs-test
|
||||||
node_modules
|
node_modules
|
||||||
neo4j
|
neo4j
|
||||||
vendor/bundle
|
vendor/bundle
|
||||||
|
|
17
.rubocop.yml
17
.rubocop.yml
|
@ -109,16 +109,11 @@ Rails/Exit:
|
||||||
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecfilepath
|
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecfilepath
|
||||||
RSpec/FilePath:
|
RSpec/FilePath:
|
||||||
CustomTransform:
|
CustomTransform:
|
||||||
ActivityPub: activitypub # Ignore the snake_case due to the amount of files to rename
|
ActivityPub: activitypub
|
||||||
DeepL: deepl
|
DeepL: deepl
|
||||||
FetchOEmbedService: fetch_oembed_service
|
FetchOEmbedService: fetch_oembed_service
|
||||||
JsonLdHelper: jsonld_helper
|
|
||||||
OEmbedController: oembed_controller
|
OEmbedController: oembed_controller
|
||||||
OStatus: ostatus
|
OStatus: ostatus
|
||||||
NodeInfoController: nodeinfo_controller # NodeInfo isn't snake_cased for any of the instances
|
|
||||||
Exclude:
|
|
||||||
- 'spec/config/initializers/rack_attack_spec.rb' # namespaces usually have separate folder
|
|
||||||
- 'spec/lib/sanitize_config_spec.rb' # namespaces usually have separate folder
|
|
||||||
|
|
||||||
# Reason:
|
# Reason:
|
||||||
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecnamedsubject
|
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecnamedsubject
|
||||||
|
@ -135,6 +130,16 @@ RSpec/NotToNot:
|
||||||
RSpec/Rails/HttpStatus:
|
RSpec/Rails/HttpStatus:
|
||||||
EnforcedStyle: numeric
|
EnforcedStyle: numeric
|
||||||
|
|
||||||
|
# Reason: Match overrides from Rspec/FilePath rule above
|
||||||
|
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecspecfilepathformat
|
||||||
|
RSpec/SpecFilePathFormat:
|
||||||
|
CustomTransform:
|
||||||
|
ActivityPub: activitypub
|
||||||
|
DeepL: deepl
|
||||||
|
FetchOEmbedService: fetch_oembed_service
|
||||||
|
OEmbedController: oembed_controller
|
||||||
|
OStatus: ostatus
|
||||||
|
|
||||||
# Reason:
|
# Reason:
|
||||||
# https://docs.rubocop.org/rubocop/cops_style.html#styleclassandmodulechildren
|
# https://docs.rubocop.org/rubocop/cops_style.html#styleclassandmodulechildren
|
||||||
Style/ClassAndModuleChildren:
|
Style/ClassAndModuleChildren:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# This configuration was generated by
|
# This configuration was generated by
|
||||||
# `rubocop --auto-gen-config --auto-gen-only-exclude --no-exclude-limit --no-offense-counts --no-auto-gen-timestamp`
|
# `rubocop --auto-gen-config --auto-gen-only-exclude --no-exclude-limit --no-offense-counts --no-auto-gen-timestamp`
|
||||||
# using RuboCop version 1.57.1.
|
# using RuboCop version 1.57.2.
|
||||||
# The point is for the user to remove these configuration records
|
# The point is for the user to remove these configuration records
|
||||||
# one by one as the offenses are removed from the code base.
|
# one by one as the offenses are removed from the code base.
|
||||||
# Note that changes in the inspected code, or installation of new
|
# Note that changes in the inspected code, or installation of new
|
||||||
|
@ -20,25 +20,10 @@ Layout/LineLength:
|
||||||
Exclude:
|
Exclude:
|
||||||
- 'app/models/account.rb'
|
- 'app/models/account.rb'
|
||||||
|
|
||||||
# Configuration parameters: AllowComments, AllowEmptyLambdas.
|
|
||||||
Lint/EmptyBlock:
|
|
||||||
Exclude:
|
|
||||||
- 'spec/controllers/api/v2/search_controller_spec.rb'
|
|
||||||
- 'spec/fabricators/access_token_fabricator.rb'
|
|
||||||
- 'spec/fabricators/conversation_fabricator.rb'
|
|
||||||
- 'spec/fabricators/system_key_fabricator.rb'
|
|
||||||
- 'spec/lib/activitypub/adapter_spec.rb'
|
|
||||||
- 'spec/models/user_role_spec.rb'
|
|
||||||
|
|
||||||
Lint/NonLocalExitFromIterator:
|
Lint/NonLocalExitFromIterator:
|
||||||
Exclude:
|
Exclude:
|
||||||
- 'app/helpers/jsonld_helper.rb'
|
- 'app/helpers/jsonld_helper.rb'
|
||||||
|
|
||||||
# This cop supports unsafe autocorrection (--autocorrect-all).
|
|
||||||
Lint/OrAssignmentToConstant:
|
|
||||||
Exclude:
|
|
||||||
- 'lib/sanitize_ext/sanitize_config.rb'
|
|
||||||
|
|
||||||
# This cop supports safe autocorrection (--autocorrect).
|
# This cop supports safe autocorrection (--autocorrect).
|
||||||
# Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments.
|
# Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments.
|
||||||
Lint/UnusedBlockArgument:
|
Lint/UnusedBlockArgument:
|
||||||
|
@ -67,13 +52,6 @@ Metrics/CyclomaticComplexity:
|
||||||
Metrics/PerceivedComplexity:
|
Metrics/PerceivedComplexity:
|
||||||
Max: 27
|
Max: 27
|
||||||
|
|
||||||
Performance/MapMethodChain:
|
|
||||||
Exclude:
|
|
||||||
- 'app/models/feed.rb'
|
|
||||||
- 'lib/mastodon/cli/maintenance.rb'
|
|
||||||
- 'spec/services/bulk_import_service_spec.rb'
|
|
||||||
- 'spec/services/import_service_spec.rb'
|
|
||||||
|
|
||||||
RSpec/AnyInstance:
|
RSpec/AnyInstance:
|
||||||
Exclude:
|
Exclude:
|
||||||
- 'spec/controllers/activitypub/inboxes_controller_spec.rb'
|
- 'spec/controllers/activitypub/inboxes_controller_spec.rb'
|
||||||
|
@ -96,20 +74,6 @@ RSpec/AnyInstance:
|
||||||
RSpec/ExampleLength:
|
RSpec/ExampleLength:
|
||||||
Max: 22
|
Max: 22
|
||||||
|
|
||||||
# This cop supports safe autocorrection (--autocorrect).
|
|
||||||
# Configuration parameters: EnforcedStyle.
|
|
||||||
# SupportedStyles: implicit, each, example
|
|
||||||
RSpec/HookArgument:
|
|
||||||
Exclude:
|
|
||||||
- 'spec/controllers/api/v1/streaming_controller_spec.rb'
|
|
||||||
- 'spec/controllers/well_known/webfinger_controller_spec.rb'
|
|
||||||
- 'spec/helpers/instance_helper_spec.rb'
|
|
||||||
- 'spec/models/user_spec.rb'
|
|
||||||
- 'spec/rails_helper.rb'
|
|
||||||
- 'spec/serializers/activitypub/note_serializer_spec.rb'
|
|
||||||
- 'spec/serializers/activitypub/update_poll_serializer_spec.rb'
|
|
||||||
- 'spec/services/import_service_spec.rb'
|
|
||||||
|
|
||||||
# Configuration parameters: AssignmentOnly.
|
# Configuration parameters: AssignmentOnly.
|
||||||
RSpec/InstanceVariable:
|
RSpec/InstanceVariable:
|
||||||
Exclude:
|
Exclude:
|
||||||
|
@ -178,24 +142,6 @@ RSpec/MessageChain:
|
||||||
- 'spec/models/session_activation_spec.rb'
|
- 'spec/models/session_activation_spec.rb'
|
||||||
- 'spec/models/setting_spec.rb'
|
- 'spec/models/setting_spec.rb'
|
||||||
|
|
||||||
# Configuration parameters: EnforcedStyle.
|
|
||||||
# SupportedStyles: have_received, receive
|
|
||||||
RSpec/MessageSpies:
|
|
||||||
Exclude:
|
|
||||||
- 'spec/controllers/admin/accounts_controller_spec.rb'
|
|
||||||
- 'spec/helpers/admin/account_moderation_notes_helper_spec.rb'
|
|
||||||
- 'spec/lib/webfinger_resource_spec.rb'
|
|
||||||
- 'spec/models/admin/account_action_spec.rb'
|
|
||||||
- 'spec/models/concerns/remotable_spec.rb'
|
|
||||||
- 'spec/models/follow_request_spec.rb'
|
|
||||||
- 'spec/models/identity_spec.rb'
|
|
||||||
- 'spec/models/session_activation_spec.rb'
|
|
||||||
- 'spec/models/setting_spec.rb'
|
|
||||||
- 'spec/services/activitypub/fetch_replies_service_spec.rb'
|
|
||||||
- 'spec/services/activitypub/process_collection_service_spec.rb'
|
|
||||||
- 'spec/spec_helper.rb'
|
|
||||||
- 'spec/validators/status_length_validator_spec.rb'
|
|
||||||
|
|
||||||
RSpec/MultipleExpectations:
|
RSpec/MultipleExpectations:
|
||||||
Max: 8
|
Max: 8
|
||||||
|
|
||||||
|
@ -212,13 +158,6 @@ Rails/ApplicationController:
|
||||||
Exclude:
|
Exclude:
|
||||||
- 'app/controllers/health_controller.rb'
|
- 'app/controllers/health_controller.rb'
|
||||||
|
|
||||||
# This cop supports safe autocorrection (--autocorrect).
|
|
||||||
# Configuration parameters: Severity.
|
|
||||||
Rails/DuplicateAssociation:
|
|
||||||
Exclude:
|
|
||||||
- 'app/serializers/activitypub/collection_serializer.rb'
|
|
||||||
- 'app/serializers/activitypub/note_serializer.rb'
|
|
||||||
|
|
||||||
# Configuration parameters: Include.
|
# Configuration parameters: Include.
|
||||||
# Include: app/models/**/*.rb
|
# Include: app/models/**/*.rb
|
||||||
Rails/HasAndBelongsToMany:
|
Rails/HasAndBelongsToMany:
|
||||||
|
@ -333,7 +272,6 @@ Rails/SkipsModelValidations:
|
||||||
- 'db/post_migrate/20221101190723_backfill_admin_action_logs.rb'
|
- 'db/post_migrate/20221101190723_backfill_admin_action_logs.rb'
|
||||||
- 'db/post_migrate/20221206114142_backfill_admin_action_logs_again.rb'
|
- 'db/post_migrate/20221206114142_backfill_admin_action_logs_again.rb'
|
||||||
- 'lib/mastodon/cli/accounts.rb'
|
- 'lib/mastodon/cli/accounts.rb'
|
||||||
- 'lib/mastodon/cli/main.rb'
|
|
||||||
- 'lib/mastodon/cli/maintenance.rb'
|
- 'lib/mastodon/cli/maintenance.rb'
|
||||||
- 'spec/lib/activitypub/activity/follow_spec.rb'
|
- 'spec/lib/activitypub/activity/follow_spec.rb'
|
||||||
- 'spec/services/follow_service_spec.rb'
|
- 'spec/services/follow_service_spec.rb'
|
||||||
|
@ -426,7 +364,6 @@ Style/FetchEnvVar:
|
||||||
- 'config/initializers/3_omniauth.rb'
|
- 'config/initializers/3_omniauth.rb'
|
||||||
- 'config/initializers/blacklists.rb'
|
- 'config/initializers/blacklists.rb'
|
||||||
- 'config/initializers/cache_buster.rb'
|
- 'config/initializers/cache_buster.rb'
|
||||||
- 'config/initializers/content_security_policy.rb'
|
|
||||||
- 'config/initializers/devise.rb'
|
- 'config/initializers/devise.rb'
|
||||||
- 'config/initializers/paperclip.rb'
|
- 'config/initializers/paperclip.rb'
|
||||||
- 'config/initializers/vapid.rb'
|
- 'config/initializers/vapid.rb'
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# syntax=docker/dockerfile:1.4
|
# syntax=docker/dockerfile:1.4
|
||||||
# This needs to be bookworm-slim because the Ruby image is built on bookworm-slim
|
# This needs to be bookworm-slim because the Ruby image is built on bookworm-slim
|
||||||
ARG NODE_VERSION="20.8-bookworm-slim"
|
ARG NODE_VERSION="20.9-bookworm-slim"
|
||||||
|
|
||||||
FROM ghcr.io/moritzheiber/ruby-jemalloc:3.2.2-slim as ruby
|
FROM ghcr.io/moritzheiber/ruby-jemalloc:3.2.2-slim as ruby
|
||||||
FROM node:${NODE_VERSION} as build
|
FROM node:${NODE_VERSION} as build
|
||||||
|
|
10
Gemfile.lock
10
Gemfile.lock
|
@ -661,21 +661,21 @@ GEM
|
||||||
rubocop-ast (>= 1.28.1, < 2.0)
|
rubocop-ast (>= 1.28.1, < 2.0)
|
||||||
ruby-progressbar (~> 1.7)
|
ruby-progressbar (~> 1.7)
|
||||||
unicode-display_width (>= 2.4.0, < 3.0)
|
unicode-display_width (>= 2.4.0, < 3.0)
|
||||||
rubocop-ast (1.29.0)
|
rubocop-ast (1.30.0)
|
||||||
parser (>= 3.2.1.0)
|
parser (>= 3.2.1.0)
|
||||||
rubocop-capybara (2.19.0)
|
rubocop-capybara (2.19.0)
|
||||||
rubocop (~> 1.41)
|
rubocop (~> 1.41)
|
||||||
rubocop-factory_bot (2.23.1)
|
rubocop-factory_bot (2.24.0)
|
||||||
rubocop (~> 1.33)
|
rubocop (~> 1.33)
|
||||||
rubocop-performance (1.19.1)
|
rubocop-performance (1.19.1)
|
||||||
rubocop (>= 1.7.0, < 2.0)
|
rubocop (>= 1.7.0, < 2.0)
|
||||||
rubocop-ast (>= 0.4.0)
|
rubocop-ast (>= 0.4.0)
|
||||||
rubocop-rails (2.20.2)
|
rubocop-rails (2.22.1)
|
||||||
activesupport (>= 4.2.0)
|
activesupport (>= 4.2.0)
|
||||||
rack (>= 1.1)
|
rack (>= 1.1)
|
||||||
rubocop (>= 1.33.0, < 2.0)
|
rubocop (>= 1.33.0, < 2.0)
|
||||||
rubocop-rspec (2.23.2)
|
rubocop-rspec (2.25.0)
|
||||||
rubocop (~> 1.33)
|
rubocop (~> 1.40)
|
||||||
rubocop-capybara (~> 2.17)
|
rubocop-capybara (~> 2.17)
|
||||||
rubocop-factory_bot (~> 2.22)
|
rubocop-factory_bot (~> 2.22)
|
||||||
ruby-prof (1.6.3)
|
ruby-prof (1.6.3)
|
||||||
|
|
|
@ -98,7 +98,7 @@ export function updateNotifications(notification, intlMessages, intlLocale) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
dispatch(notificationsUpdate(notification, preferPendingItems, playSound && !filtered));
|
dispatch(notificationsUpdate({ notification, preferPendingItems, playSound: playSound && !filtered}));
|
||||||
|
|
||||||
fetchRelatedRelationships(dispatch, [notification]);
|
fetchRelatedRelationships(dispatch, [notification]);
|
||||||
} else if (playSound && !filtered) {
|
} else if (playSound && !filtered) {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"about.blocks": "Moderoidut palvelimet",
|
"about.blocks": "Moderoidut palvelimet",
|
||||||
"about.contact": "Ota yhteyttä:",
|
"about.contact": "Ota yhteys:",
|
||||||
"about.disclaimer": "Mastodon on vapaa avoimen lähdekoodin ohjelmisto ja Mastodon gGmbH:n tavaramerkki.",
|
"about.disclaimer": "Mastodon on vapaa avoimen lähdekoodin ohjelmisto ja Mastodon gGmbH:n tavaramerkki.",
|
||||||
"about.domain_blocks.no_reason_available": "Syytä ei ole ilmoitettu",
|
"about.domain_blocks.no_reason_available": "Syytä ei ole ilmoitettu",
|
||||||
"about.domain_blocks.preamble": "Mastodonin avulla voidaan yleensä tarkastella minkä tahansa fediversumiin kuuluvan palvelimen sisältöä ja vuorovaikuttaa eri palvelinten käyttäjien kanssa. Nämä ovat tälle palvelimelle määritetyt poikkeukset.",
|
"about.domain_blocks.preamble": "Mastodonin avulla voidaan yleensä tarkastella minkä tahansa fediversumiin kuuluvan palvelimen sisältöä ja vuorovaikuttaa eri palvelinten käyttäjien kanssa. Nämä ovat tälle palvelimelle määritetyt poikkeukset.",
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
"account.follows.empty": "Esta usuaria aínda non segue a ninguén.",
|
"account.follows.empty": "Esta usuaria aínda non segue a ninguén.",
|
||||||
"account.follows_you": "Séguete",
|
"account.follows_you": "Séguete",
|
||||||
"account.go_to_profile": "Ir ao perfil",
|
"account.go_to_profile": "Ir ao perfil",
|
||||||
"account.hide_reblogs": "Agochar repeticións de @{name}",
|
"account.hide_reblogs": "Agochar promocións de @{name}",
|
||||||
"account.in_memoriam": "Lembranzas.",
|
"account.in_memoriam": "Lembranzas.",
|
||||||
"account.joined_short": "Uniuse",
|
"account.joined_short": "Uniuse",
|
||||||
"account.languages": "Modificar os idiomas subscritos",
|
"account.languages": "Modificar os idiomas subscritos",
|
||||||
|
@ -518,7 +518,7 @@
|
||||||
"privacy.public.long": "Visible por todas",
|
"privacy.public.long": "Visible por todas",
|
||||||
"privacy.public.short": "Público",
|
"privacy.public.short": "Público",
|
||||||
"privacy.unlisted.long": "Visible por todas, pero excluída da sección descubrir",
|
"privacy.unlisted.long": "Visible por todas, pero excluída da sección descubrir",
|
||||||
"privacy.unlisted.short": "Non listado",
|
"privacy.unlisted.short": "Sen listar",
|
||||||
"privacy_policy.last_updated": "Actualizado por última vez no {date}",
|
"privacy_policy.last_updated": "Actualizado por última vez no {date}",
|
||||||
"privacy_policy.title": "Política de Privacidade",
|
"privacy_policy.title": "Política de Privacidade",
|
||||||
"refresh": "Actualizar",
|
"refresh": "Actualizar",
|
||||||
|
|
|
@ -143,7 +143,7 @@
|
||||||
"compose_form.hashtag_warning": "הודעה זו לא תרשם תחת תגיות הקבצה היות והנראות שלה איננה 'ציבורית'. רק הודעות ציבוריות ימצאו בחיפוש תגיות הקבצה.",
|
"compose_form.hashtag_warning": "הודעה זו לא תרשם תחת תגיות הקבצה היות והנראות שלה איננה 'ציבורית'. רק הודעות ציבוריות ימצאו בחיפוש תגיות הקבצה.",
|
||||||
"compose_form.lock_disclaimer": "חשבונך אינו {locked}. כל אחד יוכל לעקוב אחריך כדי לקרוא את הודעותיך המיועדות לעוקבים בלבד.",
|
"compose_form.lock_disclaimer": "חשבונך אינו {locked}. כל אחד יוכל לעקוב אחריך כדי לקרוא את הודעותיך המיועדות לעוקבים בלבד.",
|
||||||
"compose_form.lock_disclaimer.lock": "נעול",
|
"compose_form.lock_disclaimer.lock": "נעול",
|
||||||
"compose_form.placeholder": "על מה את/ה חושב/ת ?",
|
"compose_form.placeholder": "על מה את.ה חושב.ת?",
|
||||||
"compose_form.poll.add_option": "הוסיפו בחירה",
|
"compose_form.poll.add_option": "הוסיפו בחירה",
|
||||||
"compose_form.poll.duration": "משך הסקר",
|
"compose_form.poll.duration": "משך הסקר",
|
||||||
"compose_form.poll.option_placeholder": "אפשרות מספר {number}",
|
"compose_form.poll.option_placeholder": "אפשרות מספר {number}",
|
||||||
|
@ -235,7 +235,7 @@
|
||||||
"empty_column.favourites": "עוד לא חיבבו את ההודעה הזו. כאשר זה יקרה, החיבובים יופיעו כאן.",
|
"empty_column.favourites": "עוד לא חיבבו את ההודעה הזו. כאשר זה יקרה, החיבובים יופיעו כאן.",
|
||||||
"empty_column.follow_requests": "אין לך שום בקשות מעקב עדיין. לכשיתקבלו כאלה, הן תופענה כאן.",
|
"empty_column.follow_requests": "אין לך שום בקשות מעקב עדיין. לכשיתקבלו כאלה, הן תופענה כאן.",
|
||||||
"empty_column.followed_tags": "עוד לא עקבת אחרי תגיות. כשיהיו לך תגיות נעקבות, ההודעות יופיעו פה.",
|
"empty_column.followed_tags": "עוד לא עקבת אחרי תגיות. כשיהיו לך תגיות נעקבות, ההודעות יופיעו פה.",
|
||||||
"empty_column.hashtag": "אין כלום בהאשתג הזה עדיין.",
|
"empty_column.hashtag": "אין כלום בתגית הזאת עדיין.",
|
||||||
"empty_column.home": "פיד הבית ריק ! אפשר לבקר ב{public} או להשתמש בחיפוש כדי להתחיל ולהכיר משתמשים/ות אחרים/ות. {suggestions}",
|
"empty_column.home": "פיד הבית ריק ! אפשר לבקר ב{public} או להשתמש בחיפוש כדי להתחיל ולהכיר משתמשים/ות אחרים/ות. {suggestions}",
|
||||||
"empty_column.list": "אין עדיין פריטים ברשימה. כאשר חברים ברשימה הזאת יפרסמו הודעות חדשות, הן יופיעו פה.",
|
"empty_column.list": "אין עדיין פריטים ברשימה. כאשר חברים ברשימה הזאת יפרסמו הודעות חדשות, הן יופיעו פה.",
|
||||||
"empty_column.lists": "אין לך שום רשימות עדיין. לכשיהיו, הן תופענה כאן.",
|
"empty_column.lists": "אין לך שום רשימות עדיין. לכשיהיו, הן תופענה כאן.",
|
||||||
|
@ -278,7 +278,7 @@
|
||||||
"follow_requests.unlocked_explanation": "למרות שחשבונך אינו נעול, צוות {domain} חושב שאולי כדאי לוודא את בקשות המעקב האלה ידנית.",
|
"follow_requests.unlocked_explanation": "למרות שחשבונך אינו נעול, צוות {domain} חושב שאולי כדאי לוודא את בקשות המעקב האלה ידנית.",
|
||||||
"followed_tags": "התגיות שהחשבון שלך עוקב אחריהן",
|
"followed_tags": "התגיות שהחשבון שלך עוקב אחריהן",
|
||||||
"footer.about": "אודות",
|
"footer.about": "אודות",
|
||||||
"footer.directory": "מדריך פרופילים",
|
"footer.directory": "ספריית פרופילים",
|
||||||
"footer.get_app": "להתקנת היישומון",
|
"footer.get_app": "להתקנת היישומון",
|
||||||
"footer.invite": "להזמין אנשים",
|
"footer.invite": "להזמין אנשים",
|
||||||
"footer.keyboard_shortcuts": "קיצורי מקלדת",
|
"footer.keyboard_shortcuts": "קיצורי מקלדת",
|
||||||
|
|
|
@ -1,12 +1,16 @@
|
||||||
{
|
{
|
||||||
|
"about.blocks": "Moderirani poslužitelji",
|
||||||
"about.contact": "Kontakt:",
|
"about.contact": "Kontakt:",
|
||||||
"about.domain_blocks.no_reason_available": "Razlog nije dostupan",
|
"about.domain_blocks.no_reason_available": "Razlog nije dostupan",
|
||||||
|
"about.domain_blocks.suspended.title": "Suspendiran",
|
||||||
|
"about.rules": "Pravila servera",
|
||||||
"account.account_note_header": "Bilješka",
|
"account.account_note_header": "Bilješka",
|
||||||
"account.add_or_remove_from_list": "Dodaj ili ukloni s liste",
|
"account.add_or_remove_from_list": "Dodaj ili ukloni s liste",
|
||||||
"account.badges.bot": "Bot",
|
"account.badges.bot": "Bot",
|
||||||
"account.badges.group": "Grupa",
|
"account.badges.group": "Grupa",
|
||||||
"account.block": "Blokiraj @{name}",
|
"account.block": "Blokiraj @{name}",
|
||||||
"account.block_domain": "Blokiraj domenu {domain}",
|
"account.block_domain": "Blokiraj domenu {domain}",
|
||||||
|
"account.block_short": "Blokiraj",
|
||||||
"account.blocked": "Blokirano",
|
"account.blocked": "Blokirano",
|
||||||
"account.browse_more_on_origin_server": "Pogledajte više na izvornom profilu",
|
"account.browse_more_on_origin_server": "Pogledajte više na izvornom profilu",
|
||||||
"account.cancel_follow_request": "Withdraw follow request",
|
"account.cancel_follow_request": "Withdraw follow request",
|
||||||
|
@ -15,17 +19,20 @@
|
||||||
"account.edit_profile": "Uredi profil",
|
"account.edit_profile": "Uredi profil",
|
||||||
"account.enable_notifications": "Obavjesti me kada @{name} napravi objavu",
|
"account.enable_notifications": "Obavjesti me kada @{name} napravi objavu",
|
||||||
"account.endorse": "Istakni na profilu",
|
"account.endorse": "Istakni na profilu",
|
||||||
|
"account.featured_tags.last_status_at": "Zadnji post {date}",
|
||||||
"account.featured_tags.last_status_never": "Nema postova",
|
"account.featured_tags.last_status_never": "Nema postova",
|
||||||
"account.follow": "Prati",
|
"account.follow": "Prati",
|
||||||
"account.followers": "Pratitelji",
|
"account.followers": "Pratitelji",
|
||||||
"account.followers.empty": "Nitko još ne prati korisnika/cu.",
|
"account.followers.empty": "Nitko još ne prati korisnika/cu.",
|
||||||
"account.followers_counter": "{count, plural, one {{counter} pratitelj} other {{counter} pratitelja}}",
|
"account.followers_counter": "{count, plural, one {{counter} pratitelj} other {{counter} pratitelja}}",
|
||||||
|
"account.following": "Pratim",
|
||||||
"account.following_counter": "{count, plural, one {{counter} praćeni} few{{counter} praćena} other {{counter} praćenih}}",
|
"account.following_counter": "{count, plural, one {{counter} praćeni} few{{counter} praćena} other {{counter} praćenih}}",
|
||||||
"account.follows.empty": "Korisnik/ca još ne prati nikoga.",
|
"account.follows.empty": "Korisnik/ca još ne prati nikoga.",
|
||||||
"account.follows_you": "Prati te",
|
"account.follows_you": "Prati te",
|
||||||
"account.go_to_profile": "Idi na profil",
|
"account.go_to_profile": "Idi na profil",
|
||||||
"account.hide_reblogs": "Sakrij boostove od @{name}",
|
"account.hide_reblogs": "Sakrij boostove od @{name}",
|
||||||
"account.in_memoriam": "U sjećanje.",
|
"account.in_memoriam": "U sjećanje.",
|
||||||
|
"account.joined_short": "Pridružen",
|
||||||
"account.link_verified_on": "Vlasništvo ove poveznice provjereno je {date}",
|
"account.link_verified_on": "Vlasništvo ove poveznice provjereno je {date}",
|
||||||
"account.locked_info": "Status privatnosti ovog računa postavljen je na zaključano. Vlasnik ručno pregledava tko ih može pratiti.",
|
"account.locked_info": "Status privatnosti ovog računa postavljen je na zaključano. Vlasnik ručno pregledava tko ih može pratiti.",
|
||||||
"account.media": "Medijski sadržaj",
|
"account.media": "Medijski sadržaj",
|
||||||
|
@ -65,13 +72,17 @@
|
||||||
"bundle_column_error.error.title": "Oh, ne!",
|
"bundle_column_error.error.title": "Oh, ne!",
|
||||||
"bundle_column_error.network.title": "Greška mreže",
|
"bundle_column_error.network.title": "Greška mreže",
|
||||||
"bundle_column_error.retry": "Pokušajte ponovno",
|
"bundle_column_error.retry": "Pokušajte ponovno",
|
||||||
|
"bundle_column_error.return": "Na glavnu",
|
||||||
"bundle_column_error.routing.title": "404",
|
"bundle_column_error.routing.title": "404",
|
||||||
"bundle_modal_error.close": "Zatvori",
|
"bundle_modal_error.close": "Zatvori",
|
||||||
"bundle_modal_error.message": "Nešto je pošlo po zlu tijekom učitavanja ove komponente.",
|
"bundle_modal_error.message": "Nešto je pošlo po zlu tijekom učitavanja ove komponente.",
|
||||||
"bundle_modal_error.retry": "Pokušajte ponovno",
|
"bundle_modal_error.retry": "Pokušajte ponovno",
|
||||||
|
"closed_registrations_modal.find_another_server": "Nađi drugi server",
|
||||||
|
"column.about": "O aplikaciji",
|
||||||
"column.blocks": "Blokirani korisnici",
|
"column.blocks": "Blokirani korisnici",
|
||||||
"column.bookmarks": "Knjižne oznake",
|
"column.bookmarks": "Knjižne oznake",
|
||||||
"column.community": "Lokalna vremenska crta",
|
"column.community": "Lokalna vremenska crta",
|
||||||
|
"column.direct": "Privatna spominjanja",
|
||||||
"column.directory": "Pregledavanje profila",
|
"column.directory": "Pregledavanje profila",
|
||||||
"column.domain_blocks": "Blokirane domene",
|
"column.domain_blocks": "Blokirane domene",
|
||||||
"column.favourites": "Favoriti",
|
"column.favourites": "Favoriti",
|
||||||
|
@ -95,6 +106,7 @@
|
||||||
"community.column_settings.remote_only": "Samo udaljeno",
|
"community.column_settings.remote_only": "Samo udaljeno",
|
||||||
"compose.language.change": "Promijeni jezik",
|
"compose.language.change": "Promijeni jezik",
|
||||||
"compose.language.search": "Pretraži jezike...",
|
"compose.language.search": "Pretraži jezike...",
|
||||||
|
"compose.published.body": "Post je objavljen.",
|
||||||
"compose.published.open": "Otvori",
|
"compose.published.open": "Otvori",
|
||||||
"compose.saved.body": "Post spremljen.",
|
"compose.saved.body": "Post spremljen.",
|
||||||
"compose_form.direct_message_warning_learn_more": "Saznajte više",
|
"compose_form.direct_message_warning_learn_more": "Saznajte više",
|
||||||
|
@ -132,6 +144,7 @@
|
||||||
"confirmations.discard_edit_media.message": "Postoje nespremljene promjene u opisu medija ili u pretpregledu, svejedno ih odbaciti?",
|
"confirmations.discard_edit_media.message": "Postoje nespremljene promjene u opisu medija ili u pretpregledu, svejedno ih odbaciti?",
|
||||||
"confirmations.domain_block.confirm": "Blokiraj cijelu domenu",
|
"confirmations.domain_block.confirm": "Blokiraj cijelu domenu",
|
||||||
"confirmations.domain_block.message": "Jeste li zaista, zaista sigurni da želite blokirati cijelu domenu {domain}? U većini slučajeva dovoljno je i preferirano nekoliko ciljanih blokiranja ili utišavanja. Nećete vidjeti sadržaj s te domene ni u kojim javnim vremenskim crtama ili Vašim obavijestima. Vaši pratitelji s te domene bit će uklonjeni.",
|
"confirmations.domain_block.message": "Jeste li zaista, zaista sigurni da želite blokirati cijelu domenu {domain}? U većini slučajeva dovoljno je i preferirano nekoliko ciljanih blokiranja ili utišavanja. Nećete vidjeti sadržaj s te domene ni u kojim javnim vremenskim crtama ili Vašim obavijestima. Vaši pratitelji s te domene bit će uklonjeni.",
|
||||||
|
"confirmations.edit.confirm": "Uredi",
|
||||||
"confirmations.logout.confirm": "Odjavi se",
|
"confirmations.logout.confirm": "Odjavi se",
|
||||||
"confirmations.logout.message": "Jeste li sigurni da se želite odjaviti?",
|
"confirmations.logout.message": "Jeste li sigurni da se želite odjaviti?",
|
||||||
"confirmations.mute.confirm": "Utišaj",
|
"confirmations.mute.confirm": "Utišaj",
|
||||||
|
@ -146,10 +159,14 @@
|
||||||
"conversation.mark_as_read": "Označi kao pročitano",
|
"conversation.mark_as_read": "Označi kao pročitano",
|
||||||
"conversation.open": "Prikaži razgovor",
|
"conversation.open": "Prikaži razgovor",
|
||||||
"conversation.with": "S {names}",
|
"conversation.with": "S {names}",
|
||||||
|
"copypaste.copied": "Kopirano",
|
||||||
|
"copypaste.copy_to_clipboard": "Kopiraj u međuspremnik",
|
||||||
"directory.federated": "Iz znanog fediversa",
|
"directory.federated": "Iz znanog fediversa",
|
||||||
"directory.local": "Samo iz {domain}",
|
"directory.local": "Samo iz {domain}",
|
||||||
"directory.new_arrivals": "Novi korisnici",
|
"directory.new_arrivals": "Novi korisnici",
|
||||||
"directory.recently_active": "Nedavno aktivni",
|
"directory.recently_active": "Nedavno aktivni",
|
||||||
|
"disabled_account_banner.account_settings": "Postavke računa",
|
||||||
|
"disabled_account_banner.text": "Tvoj račun {disabledAccount} je trenutno onemogućen.",
|
||||||
"dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
|
"dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
|
||||||
"dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
|
"dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
|
||||||
"embed.instructions": "Embed this status on your website by copying the code below.",
|
"embed.instructions": "Embed this status on your website by copying the code below.",
|
||||||
|
@ -172,7 +189,7 @@
|
||||||
"empty_column.account_timeline": "Ovdje nema tootova!",
|
"empty_column.account_timeline": "Ovdje nema tootova!",
|
||||||
"empty_column.account_unavailable": "Profil nije dostupan",
|
"empty_column.account_unavailable": "Profil nije dostupan",
|
||||||
"empty_column.blocks": "Još niste blokirali nikoga.",
|
"empty_column.blocks": "Još niste blokirali nikoga.",
|
||||||
"empty_column.bookmarked_statuses": "Još nemaš niti jedan označeni toot. Kada označiš jedan, prikazad će se ovdje.",
|
"empty_column.bookmarked_statuses": "Još nemaš niti jedan označeni toot. Kada označiš jedan, prikazat će se ovdje.",
|
||||||
"empty_column.community": "Lokalna vremenska crta je prazna. Napišite nešto javno da biste pokrenuli stvari!",
|
"empty_column.community": "Lokalna vremenska crta je prazna. Napišite nešto javno da biste pokrenuli stvari!",
|
||||||
"empty_column.domain_blocks": "Još nema blokiranih domena.",
|
"empty_column.domain_blocks": "Još nema blokiranih domena.",
|
||||||
"empty_column.follow_requests": "Nemaš niti jedan zahtjev za praćenjem. Ako ga dobiješ, prikazat će se ovdje.",
|
"empty_column.follow_requests": "Nemaš niti jedan zahtjev za praćenjem. Ako ga dobiješ, prikazat će se ovdje.",
|
||||||
|
@ -204,6 +221,7 @@
|
||||||
"filter_modal.title.status": "Filtriraj objavu",
|
"filter_modal.title.status": "Filtriraj objavu",
|
||||||
"firehose.all": "Sve",
|
"firehose.all": "Sve",
|
||||||
"firehose.local": "Ovaj server",
|
"firehose.local": "Ovaj server",
|
||||||
|
"firehose.remote": "Drugi serveri",
|
||||||
"follow_request.authorize": "Autoriziraj",
|
"follow_request.authorize": "Autoriziraj",
|
||||||
"follow_request.reject": "Odbij",
|
"follow_request.reject": "Odbij",
|
||||||
"footer.about": "O aplikaciji",
|
"footer.about": "O aplikaciji",
|
||||||
|
@ -235,6 +253,7 @@
|
||||||
"interaction_modal.login.action": "Odvedi me kući",
|
"interaction_modal.login.action": "Odvedi me kući",
|
||||||
"interaction_modal.no_account_yet": "Nisi na Mastodonu?",
|
"interaction_modal.no_account_yet": "Nisi na Mastodonu?",
|
||||||
"interaction_modal.on_this_server": "Na ovom serveru",
|
"interaction_modal.on_this_server": "Na ovom serveru",
|
||||||
|
"interaction_modal.title.follow": "Prati {name}",
|
||||||
"intervals.full.days": "{number, plural, one {# dan} other {# dana}}",
|
"intervals.full.days": "{number, plural, one {# dan} other {# dana}}",
|
||||||
"intervals.full.hours": "{number, plural, one {# sat} few {# sata} other {# sati}}",
|
"intervals.full.hours": "{number, plural, one {# sat} few {# sata} other {# sati}}",
|
||||||
"intervals.full.minutes": "{number, plural, one {# minuta} few {# minute} other {# minuta}}",
|
"intervals.full.minutes": "{number, plural, one {# minuta} few {# minute} other {# minuta}}",
|
||||||
|
@ -247,6 +266,7 @@
|
||||||
"keyboard_shortcuts.direct": "to open direct messages column",
|
"keyboard_shortcuts.direct": "to open direct messages column",
|
||||||
"keyboard_shortcuts.down": "za pomak dolje na listi",
|
"keyboard_shortcuts.down": "za pomak dolje na listi",
|
||||||
"keyboard_shortcuts.enter": "za otvaranje toota",
|
"keyboard_shortcuts.enter": "za otvaranje toota",
|
||||||
|
"keyboard_shortcuts.favourites": "Otvori listu omiljenih",
|
||||||
"keyboard_shortcuts.federated": "za otvaranje federalne vremenske crte",
|
"keyboard_shortcuts.federated": "za otvaranje federalne vremenske crte",
|
||||||
"keyboard_shortcuts.heading": "Tipkovnički prečaci",
|
"keyboard_shortcuts.heading": "Tipkovnički prečaci",
|
||||||
"keyboard_shortcuts.home": "za otvaranje početne vremenske crte",
|
"keyboard_shortcuts.home": "za otvaranje početne vremenske crte",
|
||||||
|
@ -273,6 +293,7 @@
|
||||||
"lightbox.close": "Zatvori",
|
"lightbox.close": "Zatvori",
|
||||||
"lightbox.next": "Sljedeće",
|
"lightbox.next": "Sljedeće",
|
||||||
"lightbox.previous": "Prethodno",
|
"lightbox.previous": "Prethodno",
|
||||||
|
"limited_account_hint.action": "Svejedno prikaži profil",
|
||||||
"lists.account.add": "Dodaj na listu",
|
"lists.account.add": "Dodaj na listu",
|
||||||
"lists.account.remove": "Ukloni s liste",
|
"lists.account.remove": "Ukloni s liste",
|
||||||
"lists.delete": "Izbriši listu",
|
"lists.delete": "Izbriši listu",
|
||||||
|
@ -289,12 +310,16 @@
|
||||||
"media_gallery.toggle_visible": "Sakrij {number, plural, one {sliku} other {slike}}",
|
"media_gallery.toggle_visible": "Sakrij {number, plural, one {sliku} other {slike}}",
|
||||||
"mute_modal.duration": "Trajanje",
|
"mute_modal.duration": "Trajanje",
|
||||||
"mute_modal.hide_notifications": "Sakrij obavijesti ovog korisnika?",
|
"mute_modal.hide_notifications": "Sakrij obavijesti ovog korisnika?",
|
||||||
|
"navigation_bar.about": "O aplikaciji",
|
||||||
"navigation_bar.blocks": "Blokirani korisnici",
|
"navigation_bar.blocks": "Blokirani korisnici",
|
||||||
"navigation_bar.community_timeline": "Lokalna vremenska crta",
|
"navigation_bar.community_timeline": "Lokalna vremenska crta",
|
||||||
"navigation_bar.compose": "Compose new toot",
|
"navigation_bar.compose": "Compose new toot",
|
||||||
|
"navigation_bar.direct": "Privatna spominjanja",
|
||||||
"navigation_bar.discover": "Istraživanje",
|
"navigation_bar.discover": "Istraživanje",
|
||||||
"navigation_bar.domain_blocks": "Blokirane domene",
|
"navigation_bar.domain_blocks": "Blokirane domene",
|
||||||
"navigation_bar.edit_profile": "Uredi profil",
|
"navigation_bar.edit_profile": "Uredi profil",
|
||||||
|
"navigation_bar.explore": "Istraži",
|
||||||
|
"navigation_bar.favourites": "Favoriti",
|
||||||
"navigation_bar.filters": "Utišane riječi",
|
"navigation_bar.filters": "Utišane riječi",
|
||||||
"navigation_bar.follow_requests": "Zahtjevi za praćenje",
|
"navigation_bar.follow_requests": "Zahtjevi za praćenje",
|
||||||
"navigation_bar.follows_and_followers": "Praćeni i pratitelji",
|
"navigation_bar.follows_and_followers": "Praćeni i pratitelji",
|
||||||
|
@ -305,6 +330,7 @@
|
||||||
"navigation_bar.pins": "Prikvačeni tootovi",
|
"navigation_bar.pins": "Prikvačeni tootovi",
|
||||||
"navigation_bar.preferences": "Postavke",
|
"navigation_bar.preferences": "Postavke",
|
||||||
"navigation_bar.public_timeline": "Federalna vremenska crta",
|
"navigation_bar.public_timeline": "Federalna vremenska crta",
|
||||||
|
"navigation_bar.search": "Traži",
|
||||||
"navigation_bar.security": "Sigurnost",
|
"navigation_bar.security": "Sigurnost",
|
||||||
"not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
|
"not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
|
||||||
"notification.follow": "{name} Vas je počeo/la pratiti",
|
"notification.follow": "{name} Vas je počeo/la pratiti",
|
||||||
|
@ -332,6 +358,7 @@
|
||||||
"notifications.filter.follows": "Praćenja",
|
"notifications.filter.follows": "Praćenja",
|
||||||
"notifications.filter.mentions": "Spominjanja",
|
"notifications.filter.mentions": "Spominjanja",
|
||||||
"notifications.filter.polls": "Rezultati anketa",
|
"notifications.filter.polls": "Rezultati anketa",
|
||||||
|
"notifications.grant_permission": "Odobri dopuštenje.",
|
||||||
"notifications.group": "{count} obavijesti",
|
"notifications.group": "{count} obavijesti",
|
||||||
"notifications.mark_as_read": "Označi sve obavijesti kao pročitane",
|
"notifications.mark_as_read": "Označi sve obavijesti kao pročitane",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
|
@ -343,12 +370,14 @@
|
||||||
"onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
|
"onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
|
||||||
"onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
|
"onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
|
||||||
"onboarding.steps.publish_status.body": "Say hello to the world.",
|
"onboarding.steps.publish_status.body": "Say hello to the world.",
|
||||||
|
"onboarding.steps.publish_status.title": "Napiši svoj prvi post",
|
||||||
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
"onboarding.steps.setup_profile.title": "Customize your profile",
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
"onboarding.steps.share_profile.title": "Share your profile",
|
||||||
"poll.closed": "Završeno",
|
"poll.closed": "Završeno",
|
||||||
"poll.refresh": "Osvježi",
|
"poll.refresh": "Osvježi",
|
||||||
|
"poll.reveal": "Vidi rezultate",
|
||||||
"poll.total_people": "{count, plural, one {# osoba} few {# osobe} other {# osoba}}",
|
"poll.total_people": "{count, plural, one {# osoba} few {# osobe} other {# osoba}}",
|
||||||
"poll.total_votes": "{count, plural, one {# glas} few {# glasa} other {# glasova}}",
|
"poll.total_votes": "{count, plural, one {# glas} few {# glasa} other {# glasova}}",
|
||||||
"poll.vote": "Glasaj",
|
"poll.vote": "Glasaj",
|
||||||
|
@ -397,14 +426,41 @@
|
||||||
"report.reasons.spam_description": "Zlonamjerne poveznice, lažni angažman ili repetitivni odgovori",
|
"report.reasons.spam_description": "Zlonamjerne poveznice, lažni angažman ili repetitivni odgovori",
|
||||||
"report.submit": "Pošalji",
|
"report.submit": "Pošalji",
|
||||||
"report.target": "Prijavljivanje korisnika {target}",
|
"report.target": "Prijavljivanje korisnika {target}",
|
||||||
|
"report.thanks.title": "Ne želiš vidjeti ovo?",
|
||||||
"report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached",
|
"report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached",
|
||||||
|
"report_notification.categories.other": "Drugo",
|
||||||
|
"report_notification.categories.spam": "Spam",
|
||||||
|
"report_notification.categories.violation": "Povreda pravila",
|
||||||
|
"report_notification.open": "Otvori izvješće",
|
||||||
|
"search.no_recent_searches": "Nema nedavnih pretraga",
|
||||||
"search.placeholder": "Traži",
|
"search.placeholder": "Traži",
|
||||||
|
"search.quick_action.go_to_account": "Idi na profil {x}",
|
||||||
|
"search.quick_action.open_url": "Otvori link u Mastodonu",
|
||||||
|
"search.search_or_paste": "Pretraži ili zalijepi URL",
|
||||||
|
"search_popout.full_text_search_disabled_message": "Nije dostuppno na {domain}.",
|
||||||
|
"search_popout.language_code": "ISO jezični kod",
|
||||||
|
"search_popout.options": "Opcije pretraživanja",
|
||||||
|
"search_popout.quick_actions": "Brze radnje",
|
||||||
|
"search_popout.recent": "Nedavne pretrage",
|
||||||
|
"search_popout.specific_date": "specifičan datum",
|
||||||
|
"search_popout.user": "korisnik",
|
||||||
|
"search_results.accounts": "Profili",
|
||||||
|
"search_results.all": "Sve",
|
||||||
|
"search_results.nothing_found": "Nije pronađeno ništa za te ključne riječi",
|
||||||
|
"search_results.see_all": "Prikaži sve",
|
||||||
"search_results.statuses": "Toots",
|
"search_results.statuses": "Toots",
|
||||||
|
"search_results.title": "Traži {q}",
|
||||||
|
"server_banner.about_active_users": "Popis aktivnih korisnika prošli mjesec",
|
||||||
"server_banner.active_users": "aktivni korisnici",
|
"server_banner.active_users": "aktivni korisnici",
|
||||||
|
"server_banner.administered_by": "Administrator je:",
|
||||||
|
"server_banner.introduction": "{domain} je dio decentralizirane socijalne mreže koju pokreće {mastodon}.",
|
||||||
"server_banner.learn_more": "Saznaj više",
|
"server_banner.learn_more": "Saznaj više",
|
||||||
|
"server_banner.server_stats": "Statistike poslužitelja:",
|
||||||
"sign_in_banner.create_account": "Stvori račun",
|
"sign_in_banner.create_account": "Stvori račun",
|
||||||
"sign_in_banner.sign_in": "Prijavi se",
|
"sign_in_banner.sign_in": "Prijavi se",
|
||||||
|
"sign_in_banner.sso_redirect": "Prijava ili registracija",
|
||||||
"status.admin_status": "Open this status in the moderation interface",
|
"status.admin_status": "Open this status in the moderation interface",
|
||||||
|
"status.block": "Blokiraj @{name}",
|
||||||
"status.bookmark": "Dodaj u favorite",
|
"status.bookmark": "Dodaj u favorite",
|
||||||
"status.cannot_reblog": "Ova objava ne može biti boostana",
|
"status.cannot_reblog": "Ova objava ne može biti boostana",
|
||||||
"status.copy": "Copy link to status",
|
"status.copy": "Copy link to status",
|
||||||
|
@ -419,6 +475,7 @@
|
||||||
"status.history.created": "Kreirao/la {name} prije {date}",
|
"status.history.created": "Kreirao/la {name} prije {date}",
|
||||||
"status.history.edited": "Uredio/la {name} prije {date}",
|
"status.history.edited": "Uredio/la {name} prije {date}",
|
||||||
"status.load_more": "Učitaj više",
|
"status.load_more": "Učitaj više",
|
||||||
|
"status.media.open": "Kliknite za otvaranje",
|
||||||
"status.media_hidden": "Sakriven medijski sadržaj",
|
"status.media_hidden": "Sakriven medijski sadržaj",
|
||||||
"status.mention": "Spomeni @{name}",
|
"status.mention": "Spomeni @{name}",
|
||||||
"status.more": "Više",
|
"status.more": "Više",
|
||||||
|
@ -447,6 +504,7 @@
|
||||||
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
|
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
|
||||||
"status.translate": "Prevedi",
|
"status.translate": "Prevedi",
|
||||||
"status.translated_from_with": "Prevedno s {lang} koristeći {provider}",
|
"status.translated_from_with": "Prevedno s {lang} koristeći {provider}",
|
||||||
|
"status.uncached_media_warning": "Pregled nije dostupan",
|
||||||
"status.unmute_conversation": "Poništi utišavanje razgovora",
|
"status.unmute_conversation": "Poništi utišavanje razgovora",
|
||||||
"status.unpin": "Otkvači s profila",
|
"status.unpin": "Otkvači s profila",
|
||||||
"subscribed_languages.save": "Spremi promjene",
|
"subscribed_languages.save": "Spremi promjene",
|
||||||
|
@ -484,6 +542,7 @@
|
||||||
"upload_modal.description_placeholder": "Gojazni đačić s biciklom drži hmelj i finu vatu u džepu nošnje",
|
"upload_modal.description_placeholder": "Gojazni đačić s biciklom drži hmelj i finu vatu u džepu nošnje",
|
||||||
"upload_modal.detect_text": "Detektiraj tekst sa slike",
|
"upload_modal.detect_text": "Detektiraj tekst sa slike",
|
||||||
"upload_modal.edit_media": "Uređivanje medija",
|
"upload_modal.edit_media": "Uređivanje medija",
|
||||||
|
"upload_modal.preparing_ocr": "Pripremam OCR…",
|
||||||
"upload_modal.preview_label": "Pretpregled ({ratio})",
|
"upload_modal.preview_label": "Pretpregled ({ratio})",
|
||||||
"upload_progress.label": "Prenošenje...",
|
"upload_progress.label": "Prenošenje...",
|
||||||
"upload_progress.processing": "Obrada…",
|
"upload_progress.processing": "Obrada…",
|
||||||
|
|
|
@ -204,7 +204,7 @@
|
||||||
"dismissable_banner.explore_links": "이 소식들은 오늘 소셜 웹에서 가장 많이 공유된 내용들입니다. 새 소식을 더 많은 사람들이 공유할수록 높은 순위가 됩니다.",
|
"dismissable_banner.explore_links": "이 소식들은 오늘 소셜 웹에서 가장 많이 공유된 내용들입니다. 새 소식을 더 많은 사람들이 공유할수록 높은 순위가 됩니다.",
|
||||||
"dismissable_banner.explore_statuses": "이 게시물들은 오늘 소셜 웹에서 호응을 얻고 있는 게시물들입니다. 부스트와 관심을 받는 새로운 글들이 높은 순위가 됩니다.",
|
"dismissable_banner.explore_statuses": "이 게시물들은 오늘 소셜 웹에서 호응을 얻고 있는 게시물들입니다. 부스트와 관심을 받는 새로운 글들이 높은 순위가 됩니다.",
|
||||||
"dismissable_banner.explore_tags": "이 해시태그들은 이 서버와 분산화된 네트워크의 다른 서버에서 사람들의 인기를 끌고 있는 것들입니다.",
|
"dismissable_banner.explore_tags": "이 해시태그들은 이 서버와 분산화된 네트워크의 다른 서버에서 사람들의 인기를 끌고 있는 것들입니다.",
|
||||||
"dismissable_banner.public_timeline": "{domain} 사람들이 팔로우하는 소셜 웹 사람들의 최신 공개 게시물입니다.",
|
"dismissable_banner.public_timeline": "이것들은 {domain}에 있는 사람들이 팔로우한 사람들의 최신 공개 게시물들입니다.",
|
||||||
"embed.instructions": "아래의 코드를 복사하여 대화를 원하는 곳으로 공유하세요.",
|
"embed.instructions": "아래의 코드를 복사하여 대화를 원하는 곳으로 공유하세요.",
|
||||||
"embed.preview": "이렇게 표시됩니다:",
|
"embed.preview": "이렇게 표시됩니다:",
|
||||||
"emoji_button.activity": "활동",
|
"emoji_button.activity": "활동",
|
||||||
|
|
|
@ -225,7 +225,7 @@
|
||||||
"empty_column.account_suspended": "帳號已被停權",
|
"empty_column.account_suspended": "帳號已被停權",
|
||||||
"empty_column.account_timeline": "這裡還沒有嘟文!",
|
"empty_column.account_timeline": "這裡還沒有嘟文!",
|
||||||
"empty_column.account_unavailable": "無法取得個人檔案",
|
"empty_column.account_unavailable": "無法取得個人檔案",
|
||||||
"empty_column.blocks": "您尚未封鎖任何使用者。",
|
"empty_column.blocks": "您還沒有封鎖任何使用者。",
|
||||||
"empty_column.bookmarked_statuses": "您還沒有建立任何書籤。當您建立書籤時,它將於此顯示。",
|
"empty_column.bookmarked_statuses": "您還沒有建立任何書籤。當您建立書籤時,它將於此顯示。",
|
||||||
"empty_column.community": "本站時間軸是空的。快公開嘟些文搶頭香啊!",
|
"empty_column.community": "本站時間軸是空的。快公開嘟些文搶頭香啊!",
|
||||||
"empty_column.direct": "您還沒有收到任何私訊。當您私訊別人或收到私訊時,它將於此顯示。",
|
"empty_column.direct": "您還沒有收到任何私訊。當您私訊別人或收到私訊時,它將於此顯示。",
|
||||||
|
|
|
@ -1818,12 +1818,14 @@ a.account__display-name {
|
||||||
&.activate {
|
&.activate {
|
||||||
& > .icon {
|
& > .icon {
|
||||||
animation: spring-rotate-in 1s linear;
|
animation: spring-rotate-in 1s linear;
|
||||||
|
transform-origin: 50% 55%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.deactivate {
|
&.deactivate {
|
||||||
& > .icon {
|
& > .icon {
|
||||||
animation: spring-rotate-out 1s linear;
|
animation: spring-rotate-out 1s linear;
|
||||||
|
transform-origin: 50% 55%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ class DeliveryFailureTracker
|
||||||
key.delete_prefix(exhausted_deliveries_key_by(''))
|
key.delete_prefix(exhausted_deliveries_key_by(''))
|
||||||
end
|
end
|
||||||
|
|
||||||
domains - UnavailableDomain.all.pluck(:domain)
|
domains - UnavailableDomain.pluck(:domain)
|
||||||
end
|
end
|
||||||
|
|
||||||
def warning_domains_map(domains = nil)
|
def warning_domains_map(domains = nil)
|
||||||
|
|
|
@ -271,7 +271,7 @@ class FeedManager
|
||||||
# @param [Account] target_account
|
# @param [Account] target_account
|
||||||
# @return [void]
|
# @return [void]
|
||||||
def clear_from_lists(account, target_account)
|
def clear_from_lists(account, target_account)
|
||||||
List.where(account: account).each do |list|
|
List.where(account: account).find_each do |list|
|
||||||
clear_from_list(list, target_account)
|
clear_from_list(list, target_account)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -23,9 +23,9 @@ class Feed
|
||||||
max_id = '+inf' if max_id.blank?
|
max_id = '+inf' if max_id.blank?
|
||||||
if min_id.blank?
|
if min_id.blank?
|
||||||
since_id = '-inf' if since_id.blank?
|
since_id = '-inf' if since_id.blank?
|
||||||
unhydrated = redis.zrevrangebyscore(key, "(#{max_id}", "(#{since_id}", limit: [0, limit], with_scores: true).map(&:first).map(&:to_i)
|
unhydrated = redis.zrevrangebyscore(key, "(#{max_id}", "(#{since_id}", limit: [0, limit], with_scores: true).map { |id| id.first.to_i }
|
||||||
else
|
else
|
||||||
unhydrated = redis.zrangebyscore(key, "(#{min_id}", "(#{max_id}", limit: [0, limit], with_scores: true).map(&:first).map(&:to_i)
|
unhydrated = redis.zrangebyscore(key, "(#{min_id}", "(#{max_id}", limit: [0, limit], with_scores: true).map { |id| id.first.to_i }
|
||||||
end
|
end
|
||||||
|
|
||||||
Status.where(id: unhydrated).cache_ids
|
Status.where(id: unhydrated).cache_ids
|
||||||
|
|
|
@ -488,7 +488,7 @@ class User < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def validate_email_dns?
|
def validate_email_dns?
|
||||||
email_changed? && !external? && !Rails.env.local? # rubocop:disable Rails/UnknownEnv
|
email_changed? && !external? && !Rails.env.local?
|
||||||
end
|
end
|
||||||
|
|
||||||
def validate_role_elevation
|
def validate_role_elevation
|
||||||
|
|
|
@ -55,7 +55,7 @@ class ActivityPub::FetchFeaturedTagsCollectionService < BaseService
|
||||||
|
|
||||||
FeaturedTag.includes(:tag).references(:tag).where(account: @account).where.not(tag: { name: normalized_names }).delete_all
|
FeaturedTag.includes(:tag).references(:tag).where(account: @account).where.not(tag: { name: normalized_names }).delete_all
|
||||||
|
|
||||||
FeaturedTag.includes(:tag).references(:tag).where(account: @account, tag: { name: normalized_names }).each do |featured_tag|
|
FeaturedTag.includes(:tag).references(:tag).where(account: @account, tag: { name: normalized_names }).find_each do |featured_tag|
|
||||||
featured_tag.update(name: tags.delete(featured_tag.tag.name))
|
featured_tag.update(name: tags.delete(featured_tag.tag.name))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ class ActivityPub::SynchronizeFollowersService < BaseService
|
||||||
private
|
private
|
||||||
|
|
||||||
def remove_unexpected_local_followers!
|
def remove_unexpected_local_followers!
|
||||||
@account.followers.local.where.not(id: @expected_followers.map(&:id)).each do |unexpected_follower|
|
@account.followers.local.where.not(id: @expected_followers.map(&:id)).reorder(nil).find_each do |unexpected_follower|
|
||||||
UnfollowService.new.call(unexpected_follower, @account)
|
UnfollowService.new.call(unexpected_follower, @account)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -22,7 +22,7 @@ class AppealService < BaseService
|
||||||
end
|
end
|
||||||
|
|
||||||
def notify_staff!
|
def notify_staff!
|
||||||
User.those_who_can(:manage_appeals).includes(:account).each do |u|
|
User.those_who_can(:manage_appeals).includes(:account).find_each do |u|
|
||||||
AdminMailer.with(recipient: u.account).new_appeal(@appeal).deliver_later if u.allows_appeal_emails?
|
AdminMailer.with(recipient: u.account).new_appeal(@appeal).deliver_later if u.allows_appeal_emails?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -53,7 +53,7 @@ class ApproveAppealService < BaseService
|
||||||
|
|
||||||
def undo_mark_statuses_as_sensitive!
|
def undo_mark_statuses_as_sensitive!
|
||||||
representative_account = Account.representative
|
representative_account = Account.representative
|
||||||
@strike.statuses.includes(:media_attachments).each do |status|
|
@strike.statuses.includes(:media_attachments).find_each do |status|
|
||||||
UpdateStatusService.new.call(status, representative_account.id, sensitive: false) if status.with_media?
|
UpdateStatusService.new.call(status, representative_account.id, sensitive: false) if status.with_media?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -24,7 +24,7 @@ class ProcessHashtagsService < BaseService
|
||||||
added_tags = @current_tags - @previous_tags
|
added_tags = @current_tags - @previous_tags
|
||||||
|
|
||||||
unless added_tags.empty?
|
unless added_tags.empty?
|
||||||
@account.featured_tags.where(tag_id: added_tags.map(&:id)).each do |featured_tag|
|
@account.featured_tags.where(tag_id: added_tags.map(&:id)).find_each do |featured_tag|
|
||||||
featured_tag.increment(@status.created_at)
|
featured_tag.increment(@status.created_at)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -32,7 +32,7 @@ class ProcessHashtagsService < BaseService
|
||||||
removed_tags = @previous_tags - @current_tags
|
removed_tags = @previous_tags - @current_tags
|
||||||
|
|
||||||
unless removed_tags.empty?
|
unless removed_tags.empty?
|
||||||
@account.featured_tags.where(tag_id: removed_tags.map(&:id)).each do |featured_tag|
|
@account.featured_tags.where(tag_id: removed_tags.map(&:id)).find_each do |featured_tag|
|
||||||
featured_tag.decrement(@status.id)
|
featured_tag.decrement(@status.id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -116,7 +116,7 @@ class RemoveStatusService < BaseService
|
||||||
end
|
end
|
||||||
|
|
||||||
def remove_from_hashtags
|
def remove_from_hashtags
|
||||||
@account.featured_tags.where(tag_id: @status.tags.map(&:id)).each do |featured_tag|
|
@account.featured_tags.where(tag_id: @status.tags.map(&:id)).find_each do |featured_tag|
|
||||||
featured_tag.decrement(@status.id)
|
featured_tag.decrement(@status.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ class ReportService < BaseService
|
||||||
def notify_staff!
|
def notify_staff!
|
||||||
return if @report.unresolved_siblings?
|
return if @report.unresolved_siblings?
|
||||||
|
|
||||||
User.those_who_can(:manage_reports).includes(:account).each do |u|
|
User.those_who_can(:manage_reports).includes(:account).find_each do |u|
|
||||||
LocalNotificationWorker.perform_async(u.account_id, @report.id, 'Report', 'admin.report')
|
LocalNotificationWorker.perform_async(u.account_id, @report.id, 'Report', 'admin.report')
|
||||||
AdminMailer.with(recipient: u.account).new_report(@report).deliver_later if u.allows_report_emails?
|
AdminMailer.with(recipient: u.account).new_report(@report).deliver_later if u.allows_report_emails?
|
||||||
end
|
end
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
%h3= t('admin.statuses.history')
|
%h3= t('admin.statuses.history')
|
||||||
|
|
||||||
%ol.history
|
%ol.history
|
||||||
- @status.edits.includes(:account, status: [:account]).each.with_index do |status_edit, i|
|
- @status.edits.reorder(nil).includes(:account, status: [:account]).find_each(order: :asc).with_index do |status_edit, i|
|
||||||
%li
|
%li
|
||||||
.history__entry
|
.history__entry
|
||||||
%h5
|
%h5
|
||||||
|
|
|
@ -206,7 +206,7 @@ module Mastodon
|
||||||
# We use our own middleware for this
|
# We use our own middleware for this
|
||||||
config.public_file_server.enabled = false
|
config.public_file_server.enabled = false
|
||||||
|
|
||||||
config.middleware.use PublicFileServerMiddleware if Rails.env.local? || ENV['RAILS_SERVE_STATIC_FILES'] == 'true' # rubocop:disable Rails/UnknownEnv
|
config.middleware.use PublicFileServerMiddleware if Rails.env.local? || ENV['RAILS_SERVE_STATIC_FILES'] == 'true'
|
||||||
config.middleware.use Rack::Attack
|
config.middleware.use Rack::Attack
|
||||||
config.middleware.use Mastodon::RackMiddleware
|
config.middleware.use Mastodon::RackMiddleware
|
||||||
|
|
||||||
|
|
|
@ -33,13 +33,13 @@ def sso_host
|
||||||
end
|
end
|
||||||
|
|
||||||
unless Rails.env.development?
|
unless Rails.env.development?
|
||||||
assets_host = Rails.configuration.action_controller.asset_host || "https://#{ENV['WEB_DOMAIN'] || ENV['LOCAL_DOMAIN']}"
|
assets_host = Rails.configuration.action_controller.asset_host || "https://#{ENV['WEB_DOMAIN'] || Rails.configuration.x.local_domain}"
|
||||||
data_hosts = [assets_host]
|
data_hosts = [assets_host]
|
||||||
|
|
||||||
if ENV['S3_ENABLED'] == 'true' || ENV['AZURE_ENABLED'] == 'true'
|
if ENV['S3_ENABLED'] == 'true' || ENV['AZURE_ENABLED'] == 'true'
|
||||||
attachments_host = host_to_url(ENV['S3_ALIAS_HOST'] || ENV['S3_CLOUDFRONT_HOST'] || ENV['AZURE_ALIAS_HOST'] || ENV['S3_HOSTNAME'] || "s3-#{ENV['S3_REGION'] || 'us-east-1'}.amazonaws.com")
|
attachments_host = host_to_url(ENV['S3_ALIAS_HOST'] || ENV['S3_CLOUDFRONT_HOST'] || ENV['AZURE_ALIAS_HOST'] || ENV['S3_HOSTNAME'] || "s3-#{ENV['S3_REGION'] || 'us-east-1'}.amazonaws.com")
|
||||||
elsif ENV['SWIFT_ENABLED'] == 'true'
|
elsif ENV['SWIFT_ENABLED'] == 'true'
|
||||||
attachments_host = ENV['SWIFT_OBJECT_URL']
|
attachments_host = ENV.fetch('SWIFT_OBJECT_URL')
|
||||||
attachments_host = "https://#{Addressable::URI.parse(attachments_host).host}"
|
attachments_host = "https://#{Addressable::URI.parse(attachments_host).host}"
|
||||||
else
|
else
|
||||||
attachments_host = nil
|
attachments_host = nil
|
||||||
|
|
|
@ -20,7 +20,6 @@ ActiveSupport::Inflector.inflections(:en) do |inflect|
|
||||||
inflect.acronym 'PubSubHubbub'
|
inflect.acronym 'PubSubHubbub'
|
||||||
inflect.acronym 'ActivityStreams'
|
inflect.acronym 'ActivityStreams'
|
||||||
inflect.acronym 'JsonLd'
|
inflect.acronym 'JsonLd'
|
||||||
inflect.acronym 'NodeInfo'
|
|
||||||
inflect.acronym 'Ed25519'
|
inflect.acronym 'Ed25519'
|
||||||
inflect.acronym 'TOC'
|
inflect.acronym 'TOC'
|
||||||
inflect.acronym 'RSS'
|
inflect.acronym 'RSS'
|
||||||
|
|
|
@ -1537,7 +1537,7 @@ bg:
|
||||||
reach: Обхват
|
reach: Обхват
|
||||||
reach_hint_html: Управлявайте дали искате да бъдете открити и последвани от нови хора. Искате ли публикациите ви да се появяват в главния екран? Искате ли другите да ви виждат в препоръките им за последване? Желаете ли да приемате автоматично всички нови последователи или да имате подробен контрол върху всеки един?
|
reach_hint_html: Управлявайте дали искате да бъдете открити и последвани от нови хора. Искате ли публикациите ви да се появяват в главния екран? Искате ли другите да ви виждат в препоръките им за последване? Желаете ли да приемате автоматично всички нови последователи или да имате подробен контрол върху всеки един?
|
||||||
search: Търсене
|
search: Търсене
|
||||||
search_hint_html: Управлявайте как искате да бъдете открити. Желаете ли хората да ви открият по това, за което сте публикували публично? Искате ли хората извън Mastodon да намират профила ви, търсейки из мрежата? Обърнете внимание, че общото изключване от всички търсачки не може да гарантира за публичната информация.
|
search_hint_html: Управлявайте как искате да бъдете открити. Желаете ли хората да ви открият по това, за което сте публикували обществено? Искате ли хората извън Mastodon да намират профила ви, търсейки из уебпространството? Обърнете внимание, че пълното изключване от всички търсачки не може да се гарантира за обществените сведения.
|
||||||
title: Поверителност и обхват
|
title: Поверителност и обхват
|
||||||
privacy_policy:
|
privacy_policy:
|
||||||
title: Политика за поверителност
|
title: Политика за поверителност
|
||||||
|
|
|
@ -747,7 +747,7 @@ de:
|
||||||
title: Neue Nutzer*innen müssen ein CAPTCHA lösen, um das Konto zu bestätigen
|
title: Neue Nutzer*innen müssen ein CAPTCHA lösen, um das Konto zu bestätigen
|
||||||
content_retention:
|
content_retention:
|
||||||
preamble: Lege fest, wie lange Inhalte von Nutzer*innen auf deinem Mastodon-Server gespeichert bleiben.
|
preamble: Lege fest, wie lange Inhalte von Nutzer*innen auf deinem Mastodon-Server gespeichert bleiben.
|
||||||
title: Aufbewahrung von Inhalten
|
title: Cache & Archive
|
||||||
default_noindex:
|
default_noindex:
|
||||||
desc_html: Betrifft alle Profile, die diese Einstellung bei sich nicht geändert haben
|
desc_html: Betrifft alle Profile, die diese Einstellung bei sich nicht geändert haben
|
||||||
title: Profile standardmäßig von der Suchmaschinen-Indizierung ausnehmen
|
title: Profile standardmäßig von der Suchmaschinen-Indizierung ausnehmen
|
||||||
|
|
|
@ -27,12 +27,12 @@ fi:
|
||||||
title: Vahvista sähköpostiosoite
|
title: Vahvista sähköpostiosoite
|
||||||
email_changed:
|
email_changed:
|
||||||
explanation: 'Tilin sähköpostiosoitteeksi vaihdetaan:'
|
explanation: 'Tilin sähköpostiosoitteeksi vaihdetaan:'
|
||||||
extra: Jos et vaihtanut sähköpostiosoitettasi, joku muu on todennäköisesti päässyt käyttämään tiliäsi. Vaihda salasanasi viipymättä, tai ota yhteyttä palvelimen ylläpitäjään, jos et pääse kirjautumaan tilillesi.
|
extra: Jos et vaihtanut sähköpostiosoitettasi, joku muu on todennäköisesti päässyt käyttämään tiliäsi. Vaihda salasanasi viipymättä, tai ota yhteys palvelimen ylläpitäjään, jos et pääse kirjautumaan tilillesi.
|
||||||
subject: 'Mastodon: Sähköpostiosoite vaihdettu'
|
subject: 'Mastodon: Sähköpostiosoite vaihdettu'
|
||||||
title: Uusi sähköpostiosoite
|
title: Uusi sähköpostiosoite
|
||||||
password_change:
|
password_change:
|
||||||
explanation: Tilisi salasana on vaihdettu.
|
explanation: Tilisi salasana on vaihdettu.
|
||||||
extra: Jos et vaihtanut salasanaasi, joku muu on todennäköisesti päässyt käyttämään tiliäsi. Vaihda salasanasi viipymättä, tai ota yhteyttä palvelimen ylläpitäjään, jos et pääse kirjautumaan tilillesi.
|
extra: Jos et vaihtanut salasanaasi, joku muu on todennäköisesti päässyt käyttämään tiliäsi. Vaihda salasanasi viipymättä, tai ota yhteys palvelimen ylläpitäjään, jos et pääse kirjautumaan tilillesi.
|
||||||
subject: 'Mastodon: salasana vaihdettu'
|
subject: 'Mastodon: salasana vaihdettu'
|
||||||
title: Salasana vaihdettu
|
title: Salasana vaihdettu
|
||||||
reconfirmation_instructions:
|
reconfirmation_instructions:
|
||||||
|
|
|
@ -5,24 +5,61 @@ hr:
|
||||||
confirmed: Vaša adresa e-pošte uspješno je potvrđena.
|
confirmed: Vaša adresa e-pošte uspješno je potvrđena.
|
||||||
send_instructions: Za nekoliko minuta primit ćete e-poštu s uputama kako potvrditi Vašu adresu e-pošte. Molimo pogledajte Vašu mapu s neželjenom poštom, ako niste primili ovu e-poštu.
|
send_instructions: Za nekoliko minuta primit ćete e-poštu s uputama kako potvrditi Vašu adresu e-pošte. Molimo pogledajte Vašu mapu s neželjenom poštom, ako niste primili ovu e-poštu.
|
||||||
send_paranoid_instructions: Ako Vaša adresa e-pošte postoji u našoj bazi podataka, za nekoliko minuta primit ćete e-poštu s uputama kako ju potvrditi. Molimo provjerite mapu s neželjenom poštom, ako niste primili ovu e-poštu.
|
send_paranoid_instructions: Ako Vaša adresa e-pošte postoji u našoj bazi podataka, za nekoliko minuta primit ćete e-poštu s uputama kako ju potvrditi. Molimo provjerite mapu s neželjenom poštom, ako niste primili ovu e-poštu.
|
||||||
|
failure:
|
||||||
|
already_authenticated: Već ste prijavljeni.
|
||||||
|
inactive: Vaš račun još nije aktiviran.
|
||||||
|
invalid: "%{authentication_keys} ili lozinka nisu valjani."
|
||||||
|
last_attempt: Imate još jedan pokušaj prije zaključavanja računa.
|
||||||
|
locked: Vaš je račun zaključan.
|
||||||
|
not_found_in_database: "%{authentication_keys} ili lozinka nisu valjani."
|
||||||
|
pending: Tvoj račun je još uvijek pod revizijom.
|
||||||
|
timeout: Vaša je sesija istekla. Ponovno se prijavite kako biste nastavili.
|
||||||
|
unauthenticated: Morate se prijaviti ili registrirati prije nastavka.
|
||||||
|
unconfirmed: Moraš potvrditi svoju email adresu kako bi nastavio.
|
||||||
mailer:
|
mailer:
|
||||||
confirmation_instructions:
|
confirmation_instructions:
|
||||||
action: Potvrdi adresu e-pošte
|
action: Potvrdi adresu e-pošte
|
||||||
action_with_app: Potvrdi i vrati se na %{app}
|
action_with_app: Potvrdi i vrati se na %{app}
|
||||||
|
extra_html: Važno je da pročitaš <a href="%{terms_path}">pravila ovog servera</a> i <a href="%{policy_path}">naše uvjete korištenja</a>.
|
||||||
subject: 'Mastodon: upute za potvrđivanje za %{instance}'
|
subject: 'Mastodon: upute za potvrđivanje za %{instance}'
|
||||||
title: Potvrdi adresu e-pošte
|
title: Potvrdi adresu e-pošte
|
||||||
email_changed:
|
email_changed:
|
||||||
|
explanation: 'Email adresa za ovaj račun je izmijenjena u:'
|
||||||
subject: 'Mastodon: adresa e-pošte je promijenjena'
|
subject: 'Mastodon: adresa e-pošte je promijenjena'
|
||||||
title: Nova adresa e-pošte
|
title: Nova adresa e-pošte
|
||||||
password_change:
|
password_change:
|
||||||
|
explanation: Lozinka tvog računa je promijenjena.
|
||||||
subject: 'Mastodon: lozinka je promijenjena'
|
subject: 'Mastodon: lozinka je promijenjena'
|
||||||
|
title: Lozinka je promijenjena
|
||||||
|
reconfirmation_instructions:
|
||||||
|
explanation: Potvrdi novu adresu kako bi promijenio email.
|
||||||
|
subject: 'Mastodon: Potvrdi email za %{instance}'
|
||||||
|
title: Potvrdi adresu e-pošte
|
||||||
reset_password_instructions:
|
reset_password_instructions:
|
||||||
|
action: Promijeni lozinku
|
||||||
|
explanation: Zatražili ste novu lozinku za svoj račun.
|
||||||
|
extra: Ako nisi ovo zatražio, samo ignoriraj ovu email poruku. Tvoja lozinka neće biti promijenjena sve dok ne pristupiš linku iznad kako bi stvorio novu.
|
||||||
subject: 'Mastodon: upute za ponovno postavljanje lozinke'
|
subject: 'Mastodon: upute za ponovno postavljanje lozinke'
|
||||||
title: Ponovno postavljanje lozinke
|
title: Ponovno postavljanje lozinke
|
||||||
two_factor_disabled:
|
two_factor_disabled:
|
||||||
|
subject: 'Mastodon: Dvo-faktorska autentifikacija je onemogućena'
|
||||||
title: 2FA je onemogućen
|
title: 2FA je onemogućen
|
||||||
|
two_factor_enabled:
|
||||||
|
subject: 'Mastodon: Dvo-faktorska autentifikacija je omogućena'
|
||||||
|
title: 2FA omogućena
|
||||||
unlock_instructions:
|
unlock_instructions:
|
||||||
subject: 'Mastodon: upute za otključavanje'
|
subject: 'Mastodon: upute za otključavanje'
|
||||||
|
webauthn_credential:
|
||||||
|
added:
|
||||||
|
subject: 'Mastodon: Novi sigurnosni ključ'
|
||||||
|
title: Dodan je novi sigurnosni ključ
|
||||||
|
deleted:
|
||||||
|
subject: 'Mastodon: Sigurnosni ključ je obrisan'
|
||||||
|
title: Jedan od tvojih sigurnosnih ključeva je obrisan
|
||||||
|
webauthn_disabled:
|
||||||
|
title: Sigurnosni ključevi su onemogućeni
|
||||||
|
webauthn_enabled:
|
||||||
|
title: Sigurnosni ključevi su omogućeni
|
||||||
omniauth_callbacks:
|
omniauth_callbacks:
|
||||||
failure: Ne možemo Vas autentificirati s %{kind} zbog "%{reason}".
|
failure: Ne možemo Vas autentificirati s %{kind} zbog "%{reason}".
|
||||||
success: Uspješno ste autentificirani s računom na %{kind}.
|
success: Uspješno ste autentificirani s računom na %{kind}.
|
||||||
|
|
|
@ -33,7 +33,7 @@ gl:
|
||||||
help:
|
help:
|
||||||
native_redirect_uri: Utiliza %{native_redirect_uri} para probas locais
|
native_redirect_uri: Utiliza %{native_redirect_uri} para probas locais
|
||||||
redirect_uri: Utiliza unha liña por URI
|
redirect_uri: Utiliza unha liña por URI
|
||||||
scopes: Separar permisos con espazos. Deixar en branco para utilizar os permisos por omisión.
|
scopes: Separar permisos con espazos. Deixar en branco para utilizar os permisos por defecto.
|
||||||
index:
|
index:
|
||||||
application: Aplicación
|
application: Aplicación
|
||||||
callback_url: URL de chamada
|
callback_url: URL de chamada
|
||||||
|
|
|
@ -38,12 +38,12 @@ he:
|
||||||
application: יישום
|
application: יישום
|
||||||
callback_url: כתובת גישה חוזרת (Callback URL)
|
callback_url: כתובת גישה חוזרת (Callback URL)
|
||||||
delete: למחוק
|
delete: למחוק
|
||||||
empty: אין לך אפליקציות.
|
empty: אין לך יישומים.
|
||||||
name: שם
|
name: שם
|
||||||
new: ישום חדש
|
new: ישום חדש
|
||||||
scopes: תחומים
|
scopes: תחומים
|
||||||
show: להציג
|
show: להציג
|
||||||
title: ישומך
|
title: היישומים שלך
|
||||||
new:
|
new:
|
||||||
title: ישום חדש
|
title: ישום חדש
|
||||||
show:
|
show:
|
||||||
|
|
|
@ -776,6 +776,7 @@ eu:
|
||||||
open: Edonork eman dezake izena
|
open: Edonork eman dezake izena
|
||||||
security:
|
security:
|
||||||
authorized_fetch: Eskatu autentifikazioa federatutako zerbitzarietatik
|
authorized_fetch: Eskatu autentifikazioa federatutako zerbitzarietatik
|
||||||
|
federation_authentication: Federazio autentifikazioaren betearaztea
|
||||||
title: Zerbitzariko ezarpenak
|
title: Zerbitzariko ezarpenak
|
||||||
site_uploads:
|
site_uploads:
|
||||||
delete: Ezabatu igotako fitxategia
|
delete: Ezabatu igotako fitxategia
|
||||||
|
@ -859,6 +860,7 @@ eu:
|
||||||
message_html: Mastodon eguneraketa kritikoa eskuragarri, mesedez eguneratu ahal bezain azkar.
|
message_html: Mastodon eguneraketa kritikoa eskuragarri, mesedez eguneratu ahal bezain azkar.
|
||||||
software_version_patch_check:
|
software_version_patch_check:
|
||||||
action: Ikusi eguneraketa eskuragarriak
|
action: Ikusi eguneraketa eskuragarriak
|
||||||
|
message_html: Mastodon akats konponketa eguneratze bat eskuragarri dago.
|
||||||
upload_check_privacy_error:
|
upload_check_privacy_error:
|
||||||
action: Ikus hemen informazio gehiagorako
|
action: Ikus hemen informazio gehiagorako
|
||||||
message_html: "<strong>Zure zerbitzaria ez dago ongi konfiguratua. Zure erabiltzaileen pribatutasuna arriskuan dago.</strong>"
|
message_html: "<strong>Zure zerbitzaria ez dago ongi konfiguratua. Zure erabiltzaileen pribatutasuna arriskuan dago.</strong>"
|
||||||
|
@ -981,6 +983,9 @@ eu:
|
||||||
body: "%{reporter}(e)k %{target} salatu du"
|
body: "%{reporter}(e)k %{target} salatu du"
|
||||||
body_remote: "%{domain} domeinuko norbaitek %{target} salatu du"
|
body_remote: "%{domain} domeinuko norbaitek %{target} salatu du"
|
||||||
subject: Salaketa berria %{instance} instantzian (#%{id})
|
subject: Salaketa berria %{instance} instantzian (#%{id})
|
||||||
|
new_software_updates:
|
||||||
|
body: Mastodon bertsio berria atera da, eguneratu nahiko duzu, ezta!
|
||||||
|
subject: Mastodon bertsio berriak %{instance} rentzat eskuragarri daude!
|
||||||
new_trends:
|
new_trends:
|
||||||
body: 'Ondorengo elementuak berrikusi behar dira publikoki bistaratu aurretik:'
|
body: 'Ondorengo elementuak berrikusi behar dira publikoki bistaratu aurretik:'
|
||||||
new_trending_links:
|
new_trending_links:
|
||||||
|
@ -1033,6 +1038,12 @@ eu:
|
||||||
hint_html: Azken kontu bat! Gizakia zarela berretsi behar dugu (zabor-kontuak kanpoan mantentzeko baino ez da!) Ebatzi azpiko CAPTCHA eta sakatu "Jarraitu".
|
hint_html: Azken kontu bat! Gizakia zarela berretsi behar dugu (zabor-kontuak kanpoan mantentzeko baino ez da!) Ebatzi azpiko CAPTCHA eta sakatu "Jarraitu".
|
||||||
title: Segurtasun txekeoa
|
title: Segurtasun txekeoa
|
||||||
confirmations:
|
confirmations:
|
||||||
|
awaiting_review_title: Zure izen-ematea berrikusten ari da
|
||||||
|
clicking_this_link: lotura hau klikatzen
|
||||||
|
login_link: hasi saioa
|
||||||
|
proceed_to_login_html: Orain jarraitu dezakezu %{login_link} -era.
|
||||||
|
registration_complete: Osatuta dago orain zure izen-ematea %{domain} -en!
|
||||||
|
welcome_title: Ongi etorri, %{name}!
|
||||||
wrong_email_hint: Helbide-elektroniko hori zuzena ez bada, kontuaren ezarpenetan alda dezakezu.
|
wrong_email_hint: Helbide-elektroniko hori zuzena ez bada, kontuaren ezarpenetan alda dezakezu.
|
||||||
delete_account: Ezabatu kontua
|
delete_account: Ezabatu kontua
|
||||||
delete_account_html: Kontua ezabatu nahi baduzu, <a href="%{path}">jarraitu hemen</a>. Berrestea eskatuko zaizu.
|
delete_account_html: Kontua ezabatu nahi baduzu, <a href="%{path}">jarraitu hemen</a>. Berrestea eskatuko zaizu.
|
||||||
|
|
|
@ -748,6 +748,12 @@ fa:
|
||||||
message_html: هیچ قانون کارسازی تعریف نکردهاید.
|
message_html: هیچ قانون کارسازی تعریف نکردهاید.
|
||||||
sidekiq_process_check:
|
sidekiq_process_check:
|
||||||
message_html: صف(های) %{value} فاقد هیچونه فرایند Sidekiq هستند. لطفا تنظیمات Sidekiq خود را بازبینی کنید
|
message_html: صف(های) %{value} فاقد هیچونه فرایند Sidekiq هستند. لطفا تنظیمات Sidekiq خود را بازبینی کنید
|
||||||
|
software_version_critical_check:
|
||||||
|
action: مشاهده بهروزرسانیهای موجود
|
||||||
|
message_html: یک بهروزرسانی حیاتی ماستودون موجود است، لطفا در اسرع وقت بهروزرسانی کنید.
|
||||||
|
software_version_patch_check:
|
||||||
|
action: مشاهده بهروزرسانیهای موجود
|
||||||
|
message_html: یک بهروزرسانی رفع اشکال ماستودون موجود است.
|
||||||
upload_check_privacy_error:
|
upload_check_privacy_error:
|
||||||
action: برای اطّلاعات بیشتر اینجا را بررسی کنید
|
action: برای اطّلاعات بیشتر اینجا را بررسی کنید
|
||||||
message_html: "<strong>کارساز وبتان بد پیکربندی شده. محرمانگی کاربرانتان در خطر است.</strong>"
|
message_html: "<strong>کارساز وبتان بد پیکربندی شده. محرمانگی کاربرانتان در خطر است.</strong>"
|
||||||
|
@ -879,6 +885,9 @@ fa:
|
||||||
apply_for_account: درخواست یک حساب
|
apply_for_account: درخواست یک حساب
|
||||||
captcha_confirmation:
|
captcha_confirmation:
|
||||||
title: بررسی های امنیتی
|
title: بررسی های امنیتی
|
||||||
|
confirmations:
|
||||||
|
login_link: ورود
|
||||||
|
welcome_title: خوش آمدید، %{name}!
|
||||||
delete_account: پاککردن حساب
|
delete_account: پاککردن حساب
|
||||||
delete_account_html: اگر میخواهید حساب خود را پاک کنید، از <a href="%{path}">اینجا</a> پیش بروید. از شما درخواست تأیید خواهد شد.
|
delete_account_html: اگر میخواهید حساب خود را پاک کنید، از <a href="%{path}">اینجا</a> پیش بروید. از شما درخواست تأیید خواهد شد.
|
||||||
description:
|
description:
|
||||||
|
@ -901,6 +910,8 @@ fa:
|
||||||
progress:
|
progress:
|
||||||
confirm: تأیید رایانامه
|
confirm: تأیید رایانامه
|
||||||
details: جزئیات شما
|
details: جزئیات شما
|
||||||
|
review: بررسی ما
|
||||||
|
rules: پذیرش قوانین
|
||||||
providers:
|
providers:
|
||||||
cas: CAS
|
cas: CAS
|
||||||
saml: SAML
|
saml: SAML
|
||||||
|
|
|
@ -1837,7 +1837,7 @@ fi:
|
||||||
follow_limit_reached: Et voi seurata yli %{limit} henkilöä
|
follow_limit_reached: Et voi seurata yli %{limit} henkilöä
|
||||||
go_to_sso_account_settings: Avaa identiteettitarjoajasi tiliasetukset
|
go_to_sso_account_settings: Avaa identiteettitarjoajasi tiliasetukset
|
||||||
invalid_otp_token: Virheellinen kaksivaiheisen todentamisen koodi
|
invalid_otp_token: Virheellinen kaksivaiheisen todentamisen koodi
|
||||||
otp_lost_help_html: Jos sinulla ei ole pääsyä kumpaankaan, voit ottaa yhteyttä osoitteeseen %{email}
|
otp_lost_help_html: Jos sinulla ei ole pääsyä kumpaankaan, voit ottaa yhteyden osoitteeseen %{email}
|
||||||
seamless_external_login: Olet kirjautunut ulkoisen palvelun kautta, joten salasana- ja sähköpostiasetukset eivät ole käytettävissä.
|
seamless_external_login: Olet kirjautunut ulkoisen palvelun kautta, joten salasana- ja sähköpostiasetukset eivät ole käytettävissä.
|
||||||
signed_in_as: 'Kirjautunut tilillä:'
|
signed_in_as: 'Kirjautunut tilillä:'
|
||||||
verification:
|
verification:
|
||||||
|
|
|
@ -750,7 +750,7 @@ gl:
|
||||||
title: Retención do contido
|
title: Retención do contido
|
||||||
default_noindex:
|
default_noindex:
|
||||||
desc_html: Aféctalle a tódalas usuarias que non cambiaron este axuste elas mesmas
|
desc_html: Aféctalle a tódalas usuarias que non cambiaron este axuste elas mesmas
|
||||||
title: Por omisión exclúe as usuarias do indexado por servidores de busca
|
title: Omitir por defecto ás usuarias do indexado por servidores de busca
|
||||||
discovery:
|
discovery:
|
||||||
follow_recommendations: Recomendacións de seguimento
|
follow_recommendations: Recomendacións de seguimento
|
||||||
preamble: Destacar contido interesante é importante para axudar a que as novas usuarias se sintan cómodas se non coñecen a ninguén en Mastodon. Xestiona os diferentes xeitos de promocionar contidos.
|
preamble: Destacar contido interesante é importante para axudar a que as novas usuarias se sintan cómodas se non coñecen a ninguén en Mastodon. Xestiona os diferentes xeitos de promocionar contidos.
|
||||||
|
@ -1528,7 +1528,7 @@ gl:
|
||||||
too_many_options: non pode haber máis de %{max} opcións
|
too_many_options: non pode haber máis de %{max} opcións
|
||||||
preferences:
|
preferences:
|
||||||
other: Outro
|
other: Outro
|
||||||
posting_defaults: Valores por omisión
|
posting_defaults: Valores por defecto
|
||||||
public_timelines: Cronoloxías públicas
|
public_timelines: Cronoloxías públicas
|
||||||
privacy:
|
privacy:
|
||||||
hint_html: "<strong>Personaliza o xeito no que queres que se atope o teu perfil e publicacións.</strong> Mastodon ten variedade de ferramentas para axudarche a acadar unha audiencia maior. Dedica un minuto a revisalas e confirma que se axustan ao teu caso persoal."
|
hint_html: "<strong>Personaliza o xeito no que queres que se atope o teu perfil e publicacións.</strong> Mastodon ten variedade de ferramentas para axudarche a acadar unha audiencia maior. Dedica un minuto a revisalas e confirma que se axustan ao teu caso persoal."
|
||||||
|
@ -1698,7 +1698,7 @@ gl:
|
||||||
private_long: Mostrar só as seguidoras
|
private_long: Mostrar só as seguidoras
|
||||||
public: Público
|
public: Público
|
||||||
public_long: Visible para calquera
|
public_long: Visible para calquera
|
||||||
unlisted: Non listado
|
unlisted: Sen listar
|
||||||
unlisted_long: Visible para calquera, pero non en cronoloxías públicas
|
unlisted_long: Visible para calquera, pero non en cronoloxías públicas
|
||||||
statuses_cleanup:
|
statuses_cleanup:
|
||||||
enabled: Borrar automáticamente publicacións antigas
|
enabled: Borrar automáticamente publicacións antigas
|
||||||
|
|
|
@ -782,7 +782,7 @@ he:
|
||||||
discovery:
|
discovery:
|
||||||
follow_recommendations: המלצות מעקב
|
follow_recommendations: המלצות מעקב
|
||||||
preamble: הצפה של תוכן מעניין בקבלת פני משתמשות חדשות שאולי אינן מכירות עדיין א.נשים במסטודון. ניתן לשלוט איך אפשרויות גילוי שונות עובדות על השרת שלך.
|
preamble: הצפה של תוכן מעניין בקבלת פני משתמשות חדשות שאולי אינן מכירות עדיין א.נשים במסטודון. ניתן לשלוט איך אפשרויות גילוי שונות עובדות על השרת שלך.
|
||||||
profile_directory: מדריך פרופילים
|
profile_directory: ספריית פרופילים
|
||||||
public_timelines: פידים פומביים
|
public_timelines: פידים פומביים
|
||||||
publish_discovered_servers: פרסום שרתים שנתגלו
|
publish_discovered_servers: פרסום שרתים שנתגלו
|
||||||
publish_statistics: פרסום הסטטיסטיקות בפומבי
|
publish_statistics: פרסום הסטטיסטיקות בפומבי
|
||||||
|
@ -1417,7 +1417,7 @@ he:
|
||||||
'604800': שבוע
|
'604800': שבוע
|
||||||
'86400': יום אחד
|
'86400': יום אחד
|
||||||
expires_in_prompt: לעולם לא
|
expires_in_prompt: לעולם לא
|
||||||
generate: צור קישור להזמנה
|
generate: יצירת קישור להזמנה
|
||||||
invited_by: הוזמנת ע"י
|
invited_by: הוזמנת ע"י
|
||||||
max_uses:
|
max_uses:
|
||||||
many: "%{count} שימושים"
|
many: "%{count} שימושים"
|
||||||
|
@ -1425,9 +1425,9 @@ he:
|
||||||
other: "%{count} שימושים"
|
other: "%{count} שימושים"
|
||||||
two: "%{count} שימושים"
|
two: "%{count} שימושים"
|
||||||
max_uses_prompt: ללא הגבלה
|
max_uses_prompt: ללא הגבלה
|
||||||
prompt: צור ושתף קישורים לאחרים על מנת להעניק גישה לשרת זה
|
prompt: צרו ושתפו קישורים לאחרים על מנת להעניק גישה לשרת זה
|
||||||
table:
|
table:
|
||||||
expires_at: פוקעת ב
|
expires_at: פג תוקף ב-
|
||||||
uses: שימושים
|
uses: שימושים
|
||||||
title: הזמנת אנשים
|
title: הזמנת אנשים
|
||||||
lists:
|
lists:
|
||||||
|
@ -1917,7 +1917,7 @@ he:
|
||||||
error: היתה בעיה בהוספת מפתח האבטחה. נסה שנית.
|
error: היתה בעיה בהוספת מפתח האבטחה. נסה שנית.
|
||||||
success: מפתח האבטחה הוסף בהצלחה.
|
success: מפתח האבטחה הוסף בהצלחה.
|
||||||
delete: למחוק
|
delete: למחוק
|
||||||
delete_confirmation: האם אתה בטוח שברצונך למחוק מפתח אבטחה זה?
|
delete_confirmation: האם את.ה בטוח.ה שברצונך למחוק מפתח אבטחה זה?
|
||||||
description_html: אם יאופשר <strong>אימות במפתח אבטחה</strong>, כניסה לאתר תדרוש שימוש באחד ממפתחות האבטחה שלך.
|
description_html: אם יאופשר <strong>אימות במפתח אבטחה</strong>, כניסה לאתר תדרוש שימוש באחד ממפתחות האבטחה שלך.
|
||||||
destroy:
|
destroy:
|
||||||
error: היתה בעיה במחיקת מפתח האבטחה. נסה בשנית.
|
error: היתה בעיה במחיקת מפתח האבטחה. נסה בשנית.
|
||||||
|
|
|
@ -47,6 +47,8 @@ hr:
|
||||||
followers: Pratitelji
|
followers: Pratitelji
|
||||||
follows: Praćeni
|
follows: Praćeni
|
||||||
header: Zaglavlje
|
header: Zaglavlje
|
||||||
|
ip: IP
|
||||||
|
joined: Pridružen
|
||||||
location:
|
location:
|
||||||
all: Sve
|
all: Sve
|
||||||
local: Lokalno
|
local: Lokalno
|
||||||
|
@ -54,6 +56,11 @@ hr:
|
||||||
title: Lokacija
|
title: Lokacija
|
||||||
moderation:
|
moderation:
|
||||||
all: Sve
|
all: Sve
|
||||||
|
most_recent_activity: Nedavne aktivnosti
|
||||||
|
perform_full_suspension: Suspendiraj
|
||||||
|
protocol: Protokol
|
||||||
|
public: Javno
|
||||||
|
reject: Odbij
|
||||||
action_logs:
|
action_logs:
|
||||||
empty: Nema pronađenih izvješća.
|
empty: Nema pronađenih izvješća.
|
||||||
filter_by_action: Filtriraj prema radnji
|
filter_by_action: Filtriraj prema radnji
|
||||||
|
|
|
@ -534,6 +534,7 @@ nn:
|
||||||
total_reported: Rapportar om dei
|
total_reported: Rapportar om dei
|
||||||
total_storage: Medievedlegg
|
total_storage: Medievedlegg
|
||||||
totals_time_period_hint_html: Totalsum vist nedanfor gjeld data for alle tidsperiodar.
|
totals_time_period_hint_html: Totalsum vist nedanfor gjeld data for alle tidsperiodar.
|
||||||
|
unknown_instance: Dette domenet er ukjent for denne serveren.
|
||||||
invites:
|
invites:
|
||||||
deactivate_all: Slå av alle
|
deactivate_all: Slå av alle
|
||||||
filter:
|
filter:
|
||||||
|
@ -1101,6 +1102,7 @@ nn:
|
||||||
functional: Kontoen din er fullt operativt.
|
functional: Kontoen din er fullt operativt.
|
||||||
pending: Søknaden din ventar på gjennomgang frå personalet vårt. Dette kan taka litt tid. Du får ein e-post om søknaden din vert godkjend.
|
pending: Søknaden din ventar på gjennomgang frå personalet vårt. Dette kan taka litt tid. Du får ein e-post om søknaden din vert godkjend.
|
||||||
redirecting_to: Kontoen din er inaktiv fordi den for øyeblikket omdirigerer til %{acct}.
|
redirecting_to: Kontoen din er inaktiv fordi den for øyeblikket omdirigerer til %{acct}.
|
||||||
|
self_destruct: Siden %{domain} stenger, vil du kun ha begrenset tilgang til kontoen din.
|
||||||
view_strikes: Vis tidligere advarsler mot kontoen din
|
view_strikes: Vis tidligere advarsler mot kontoen din
|
||||||
too_fast: Skjemaet ble sendt inn for raskt, prøv på nytt.
|
too_fast: Skjemaet ble sendt inn for raskt, prøv på nytt.
|
||||||
use_security_key: Bruk sikkerhetsnøkkel
|
use_security_key: Bruk sikkerhetsnøkkel
|
||||||
|
@ -1570,6 +1572,9 @@ nn:
|
||||||
over_daily_limit: Du har overskredet grensen på %{limit} planlagte tuter for den dagen
|
over_daily_limit: Du har overskredet grensen på %{limit} planlagte tuter for den dagen
|
||||||
over_total_limit: Du har overskredet grensen på %{limit} planlagte tuter
|
over_total_limit: Du har overskredet grensen på %{limit} planlagte tuter
|
||||||
too_soon: Den planlagte datoen må være i fremtiden
|
too_soon: Den planlagte datoen må være i fremtiden
|
||||||
|
self_destruct:
|
||||||
|
lead_html: Dessverre stenger <strong>%{domain}</strong> for alltid. Hvis du hadde en konto der vil du ikke kunne fortsette å bruke den, men du kan fremdeles be om en sikkerhetskopi av dataene dine.
|
||||||
|
title: Denne serveren stenger
|
||||||
sessions:
|
sessions:
|
||||||
activity: Siste aktivitet
|
activity: Siste aktivitet
|
||||||
browser: Nettlesar
|
browser: Nettlesar
|
||||||
|
|
|
@ -534,6 +534,7 @@
|
||||||
total_reported: Rapporter om dem
|
total_reported: Rapporter om dem
|
||||||
total_storage: Mediavedlegg
|
total_storage: Mediavedlegg
|
||||||
totals_time_period_hint_html: Summen som vises nedenfor inkluderer data for alle tider.
|
totals_time_period_hint_html: Summen som vises nedenfor inkluderer data for alle tider.
|
||||||
|
unknown_instance: Dette domenet er ukjent for denne serveren.
|
||||||
invites:
|
invites:
|
||||||
deactivate_all: Deaktiver alle
|
deactivate_all: Deaktiver alle
|
||||||
filter:
|
filter:
|
||||||
|
@ -1096,6 +1097,7 @@
|
||||||
functional: Kontoen din er fullt operativt.
|
functional: Kontoen din er fullt operativt.
|
||||||
pending: Søknaden din avventer gjennomgang av våre medarbeidere. Dette kan ta litt tid. Du vil motta en e-post dersom søknaden din blir godkjent.
|
pending: Søknaden din avventer gjennomgang av våre medarbeidere. Dette kan ta litt tid. Du vil motta en e-post dersom søknaden din blir godkjent.
|
||||||
redirecting_to: Kontoen din er inaktiv fordi den for øyeblikket omdirigerer til %{acct}.
|
redirecting_to: Kontoen din er inaktiv fordi den for øyeblikket omdirigerer til %{acct}.
|
||||||
|
self_destruct: Siden %{domain} stenger, vil du kun ha begrenset tilgang til kontoen din.
|
||||||
view_strikes: Vis tidligere advarsler mot kontoen din
|
view_strikes: Vis tidligere advarsler mot kontoen din
|
||||||
too_fast: Skjemaet ble sendt inn for raskt, prøv på nytt.
|
too_fast: Skjemaet ble sendt inn for raskt, prøv på nytt.
|
||||||
use_security_key: Bruk sikkerhetsnøkkel
|
use_security_key: Bruk sikkerhetsnøkkel
|
||||||
|
@ -1565,6 +1567,9 @@
|
||||||
over_daily_limit: Du har overskredet grensen på %{limit} planlagte innlegg for i dag
|
over_daily_limit: Du har overskredet grensen på %{limit} planlagte innlegg for i dag
|
||||||
over_total_limit: Du har overskredet grensen på %{limit} planlagte innlegg
|
over_total_limit: Du har overskredet grensen på %{limit} planlagte innlegg
|
||||||
too_soon: Den planlagte datoen må være i fremtiden
|
too_soon: Den planlagte datoen må være i fremtiden
|
||||||
|
self_destruct:
|
||||||
|
lead_html: Dessverre stenger <strong>%{domain}</strong> for alltid. Hvis du hadde en konto der vil du ikke kunne fortsette å bruke den, men du kan fremdeles be om en sikkerhetskopi av dataene dine.
|
||||||
|
title: Denne serveren stenger
|
||||||
sessions:
|
sessions:
|
||||||
activity: Siste aktivitet
|
activity: Siste aktivitet
|
||||||
browser: Nettleser
|
browser: Nettleser
|
||||||
|
|
|
@ -534,6 +534,7 @@ pt-BR:
|
||||||
total_reported: Denúncias sobre eles
|
total_reported: Denúncias sobre eles
|
||||||
total_storage: Mídias anexadas
|
total_storage: Mídias anexadas
|
||||||
totals_time_period_hint_html: Os totais exibidos abaixo incluem dados para todo o tempo.
|
totals_time_period_hint_html: Os totais exibidos abaixo incluem dados para todo o tempo.
|
||||||
|
unknown_instance: Atualmente não há registros deste domínio neste servidor.
|
||||||
invites:
|
invites:
|
||||||
deactivate_all: Desativar todos
|
deactivate_all: Desativar todos
|
||||||
filter:
|
filter:
|
||||||
|
@ -1040,6 +1041,12 @@ pt-BR:
|
||||||
hint_html: Só mais uma coisa! Precisamos confirmar que você é um humano (isso é para que possamos evitar o spam!). Resolva o CAPTCHA abaixo e clique em "Continuar".
|
hint_html: Só mais uma coisa! Precisamos confirmar que você é um humano (isso é para que possamos evitar o spam!). Resolva o CAPTCHA abaixo e clique em "Continuar".
|
||||||
title: Verificação de segurança
|
title: Verificação de segurança
|
||||||
confirmations:
|
confirmations:
|
||||||
|
awaiting_review: Seu endereço de e-mail foi confirmado! A equipe de %{domain} está agora revisando o seu cadastro. Eles lhe enviarão um e-mail se aprovarem a sua conta!
|
||||||
|
awaiting_review_title: Seu cadastro está sendo analisado
|
||||||
|
clicking_this_link: clicar este link
|
||||||
|
login_link: entrar
|
||||||
|
proceed_to_login_html: Agora você pode prosseguir para %{login_link}.
|
||||||
|
redirect_to_app_html: Você deveria ter sido redirecionado para o aplicativo <strong>%{app_name}</strong>. Se isso não aconteceu, tente %{clicking_this_link} ou volte manualmente para o aplicativo.
|
||||||
registration_complete: Seu cadastro no %{domain} foi concluído!
|
registration_complete: Seu cadastro no %{domain} foi concluído!
|
||||||
welcome_title: Boas vindas, %{name}!
|
welcome_title: Boas vindas, %{name}!
|
||||||
wrong_email_hint: Se esse endereço de e-mail não estiver correto, você pode alterá-lo nas configurações da conta.
|
wrong_email_hint: Se esse endereço de e-mail não estiver correto, você pode alterá-lo nas configurações da conta.
|
||||||
|
|
|
@ -295,7 +295,7 @@ bg:
|
||||||
all: Известие за всички обновявания
|
all: Известие за всички обновявания
|
||||||
critical: Известие само за критични обновявания
|
critical: Известие само за критични обновявания
|
||||||
label: Има нова версия на Mastodon
|
label: Има нова версия на Mastodon
|
||||||
none: Никога да не се известяват обновявания (не се препоръчва)
|
none: Никога да не се известява обновяване (непрепоръчително)
|
||||||
patch: Известие за обновявания на оправени грешки
|
patch: Известие за обновявания на оправени грешки
|
||||||
trending_tag: Изискване на преглед за новонашумели
|
trending_tag: Изискване на преглед за новонашумели
|
||||||
rule:
|
rule:
|
||||||
|
|
|
@ -84,6 +84,7 @@ fa:
|
||||||
custom_css: میتوانیدروی نگارش وب ماستودون سبکهای سفارشی اعمال کنید.
|
custom_css: میتوانیدروی نگارش وب ماستودون سبکهای سفارشی اعمال کنید.
|
||||||
mascot: نقش میانای وب پیشرفته را پایمال میکند.
|
mascot: نقش میانای وب پیشرفته را پایمال میکند.
|
||||||
media_cache_retention_period: اگر به مقدار مثبتی تنظیم شود، پروندههای رسانهٔ بارگرفته پس از روزهای مشخّص شده حذف خواهند شد و هنگام درخواست دوباره بارگرفته میشوند.
|
media_cache_retention_period: اگر به مقدار مثبتی تنظیم شود، پروندههای رسانهٔ بارگرفته پس از روزهای مشخّص شده حذف خواهند شد و هنگام درخواست دوباره بارگرفته میشوند.
|
||||||
|
peers_api_enabled: فهرستی از نامهای دامنهای که این کارساز در فدیورس با آن مواجه شده است. هیچ اطلاعاتی در مورد اینکه آیا شما با یک کارساز داده شده متعهد هستید، در اینجا گنجانده نشده است، فقط کارساز شما در مورد آن میداند. این توسط خدماتی استفاده میشود که آمار مربوط به فدراسیون را به معنای کلی جمعآوری میکنند.
|
||||||
profile_directory: شاخهٔ نمایه، همهٔ کاربرانی که کشفپذیری را برگزیدهاند سیاهه میکند.
|
profile_directory: شاخهٔ نمایه، همهٔ کاربرانی که کشفپذیری را برگزیدهاند سیاهه میکند.
|
||||||
require_invite_text: زمانی که نامنویسی ها نیازمند تایید دستی است، متن «چرا میخواهید بپیوندید؟» بخش درخواست دعوت را به جای اختیاری، اجباری کنید
|
require_invite_text: زمانی که نامنویسی ها نیازمند تایید دستی است، متن «چرا میخواهید بپیوندید؟» بخش درخواست دعوت را به جای اختیاری، اجباری کنید
|
||||||
site_contact_email: چگونگی دسترسی افراد به شما برای مقاصد قانونی یا پشتیبانی.
|
site_contact_email: چگونگی دسترسی افراد به شما برای مقاصد قانونی یا پشتیبانی.
|
||||||
|
@ -91,6 +92,7 @@ fa:
|
||||||
site_extended_description: هر اطّلاعات بیشتری که ممکن است برای بازدیدکنندگان و کاربرانتان مفید باشد. میتواند به شکل مارکدون باشد.
|
site_extended_description: هر اطّلاعات بیشتری که ممکن است برای بازدیدکنندگان و کاربرانتان مفید باشد. میتواند به شکل مارکدون باشد.
|
||||||
site_short_description: شرحی کوتاه برای کمک به شناسایی یکتای کارسازتان. چهکسی میگرداندش و برای چه کسیست؟
|
site_short_description: شرحی کوتاه برای کمک به شناسایی یکتای کارسازتان. چهکسی میگرداندش و برای چه کسیست؟
|
||||||
site_terms: از سیاست محرمانگی خوتان استفاده کرده یا برای استفاده از سیاست پیشگزیده خالی بگذارید. میتواند در قالب مارکدون باشد.
|
site_terms: از سیاست محرمانگی خوتان استفاده کرده یا برای استفاده از سیاست پیشگزیده خالی بگذارید. میتواند در قالب مارکدون باشد.
|
||||||
|
site_title: چگونه مردم ممکن است به کارساز شما علاوه بر نام دامنه آن مراجعه کنند.
|
||||||
form_challenge:
|
form_challenge:
|
||||||
current_password: شما در حال ورود به یک منطقهٔ حفاظتشده هستید
|
current_password: شما در حال ورود به یک منطقهٔ حفاظتشده هستید
|
||||||
imports:
|
imports:
|
||||||
|
|
|
@ -252,7 +252,7 @@ fi:
|
||||||
require_invite_text: Vaadi syy liittyä
|
require_invite_text: Vaadi syy liittyä
|
||||||
show_domain_blocks: Näytä verkkotunnusten estot
|
show_domain_blocks: Näytä verkkotunnusten estot
|
||||||
show_domain_blocks_rationale: Näytä, miksi verkkotunnukset on estetty
|
show_domain_blocks_rationale: Näytä, miksi verkkotunnukset on estetty
|
||||||
site_contact_email: Ota yhteyttä sähköpostilla
|
site_contact_email: Ota yhteys sähköpostitse
|
||||||
site_contact_username: Yhteyshenkilön käyttäjänimi
|
site_contact_username: Yhteyshenkilön käyttäjänimi
|
||||||
site_extended_description: Laajennettu kuvaus
|
site_extended_description: Laajennettu kuvaus
|
||||||
site_short_description: Palvelimen kuvaus
|
site_short_description: Palvelimen kuvaus
|
||||||
|
|
|
@ -210,7 +210,7 @@ gl:
|
||||||
setting_delete_modal: Solicitar confirmación antes de eliminar unha publicación
|
setting_delete_modal: Solicitar confirmación antes de eliminar unha publicación
|
||||||
setting_disable_swiping: Desactivar opcións de desprazamento
|
setting_disable_swiping: Desactivar opcións de desprazamento
|
||||||
setting_display_media: Mostrar multimedia
|
setting_display_media: Mostrar multimedia
|
||||||
setting_display_media_default: Por omisión
|
setting_display_media_default: Por defecto
|
||||||
setting_display_media_hide_all: Ocultar todo
|
setting_display_media_hide_all: Ocultar todo
|
||||||
setting_display_media_show_all: Mostrar todo
|
setting_display_media_show_all: Mostrar todo
|
||||||
setting_expand_spoilers: Despregar sempre as publicacións marcadas con avisos de contido
|
setting_expand_spoilers: Despregar sempre as publicacións marcadas con avisos de contido
|
||||||
|
@ -259,7 +259,7 @@ gl:
|
||||||
site_terms: Política de Privacidade
|
site_terms: Política de Privacidade
|
||||||
site_title: Nome do servidor
|
site_title: Nome do servidor
|
||||||
status_page_url: URL da páxina do estado
|
status_page_url: URL da páxina do estado
|
||||||
theme: Decorado por omisión
|
theme: Decorado por defecto
|
||||||
thumbnail: Icona do servidor
|
thumbnail: Icona do servidor
|
||||||
timeline_preview: Permitir acceso á cronoloxía pública sen autenticación
|
timeline_preview: Permitir acceso á cronoloxía pública sen autenticación
|
||||||
trendable_by_default: Permitir tendencias sen aprobación previa
|
trendable_by_default: Permitir tendencias sen aprobación previa
|
||||||
|
|
|
@ -2,12 +2,18 @@
|
||||||
hr:
|
hr:
|
||||||
simple_form:
|
simple_form:
|
||||||
hints:
|
hints:
|
||||||
|
account:
|
||||||
|
display_name: Tvoje puno ime ili tvoj online nadimak.
|
||||||
|
account_warning_preset:
|
||||||
|
title: Proizvoljno. Nije vidljivo primatelju
|
||||||
defaults:
|
defaults:
|
||||||
avatar: PNG, GIF ili JPG. Najviše %{size}. Bit će smanjeno na %{dimensions}px
|
avatar: PNG, GIF ili JPG. Najviše %{size}. Bit će smanjeno na %{dimensions}px
|
||||||
header: PNG, GIF ili JPG. Najviše %{size}. Bit će smanjeno na %{dimensions}px
|
header: PNG, GIF ili JPG. Najviše %{size}. Bit će smanjeno na %{dimensions}px
|
||||||
|
password: Mora biti najmanje 8 znakova
|
||||||
setting_display_media_default: Sakrij medijski sadržaj označen kao osjetljiv
|
setting_display_media_default: Sakrij medijski sadržaj označen kao osjetljiv
|
||||||
setting_display_media_hide_all: Uvijek sakrij medijski sadržaj
|
setting_display_media_hide_all: Uvijek sakrij medijski sadržaj
|
||||||
setting_display_media_show_all: Uvijek prikaži medijski sadržaj
|
setting_display_media_show_all: Uvijek prikaži medijski sadržaj
|
||||||
|
username: Mora sadržavati samo slova, brojeve i _
|
||||||
imports:
|
imports:
|
||||||
data: CSV datoteka izvezena iz drugog Mastodonovog poslužitelja
|
data: CSV datoteka izvezena iz drugog Mastodonovog poslužitelja
|
||||||
labels:
|
labels:
|
||||||
|
|
|
@ -1041,6 +1041,7 @@ sv:
|
||||||
hint_html: En sista sak till! Vi måste bekräfta att du är en människa (för att hålla borta skräpinlägg!). Lös CAPTCHA nedan och klicka på "Fortsätt".
|
hint_html: En sista sak till! Vi måste bekräfta att du är en människa (för att hålla borta skräpinlägg!). Lös CAPTCHA nedan och klicka på "Fortsätt".
|
||||||
title: Säkerhetskontroll
|
title: Säkerhetskontroll
|
||||||
confirmations:
|
confirmations:
|
||||||
|
awaiting_review: Din e-postadress är bekräftad! %{domain} personalen granskar nu din registrering. Du kommer att få ett e-postmeddelande om de godkänner ditt konto!
|
||||||
awaiting_review_title: Din registrering är under granskning
|
awaiting_review_title: Din registrering är under granskning
|
||||||
clicking_this_link: klicka på denna länk
|
clicking_this_link: klicka på denna länk
|
||||||
login_link: logga in
|
login_link: logga in
|
||||||
|
|
|
@ -54,14 +54,14 @@ uk:
|
||||||
no_role: Немає ролі
|
no_role: Немає ролі
|
||||||
title: Змінити роль для %{username}
|
title: Змінити роль для %{username}
|
||||||
confirm: Зберегти
|
confirm: Зберегти
|
||||||
confirmed: Підтвердити ел.адресу
|
confirmed: Підтверджено
|
||||||
confirming: Зберігається
|
confirming: Зберігається
|
||||||
custom: Власне
|
custom: Власне
|
||||||
delete: Видалити дані
|
delete: Видалити дані
|
||||||
deleted: Видалено
|
deleted: Видалено
|
||||||
demote: Усунути
|
demote: Усунути
|
||||||
destroyed_msg: Дані %{username} тепер в черзі на негайне видалення
|
destroyed_msg: Дані %{username} тепер в черзі на негайне видалення
|
||||||
disable: Вимкнути
|
disable: Заморозити
|
||||||
disable_sign_in_token_auth: Вимкнути автентифікацію за допомогою е-пошти
|
disable_sign_in_token_auth: Вимкнути автентифікацію за допомогою е-пошти
|
||||||
disable_two_factor_authentication: Вимкнути двофакторну авторизацію
|
disable_two_factor_authentication: Вимкнути двофакторну авторизацію
|
||||||
disabled: Вимкнено
|
disabled: Вимкнено
|
||||||
|
@ -70,7 +70,7 @@ uk:
|
||||||
edit: Змінити
|
edit: Змінити
|
||||||
email: Електронна пошта
|
email: Електронна пошта
|
||||||
email_status: Стан електронної пошти
|
email_status: Стан електронної пошти
|
||||||
enable: Увімкнути
|
enable: Розморозити
|
||||||
enable_sign_in_token_auth: Увімкнути автентифікацію за допомогою е-пошти
|
enable_sign_in_token_auth: Увімкнути автентифікацію за допомогою е-пошти
|
||||||
enabled: Увімкнено
|
enabled: Увімкнено
|
||||||
enabled_msg: Обліковий запис %{username} успішно розморожено
|
enabled_msg: Обліковий запис %{username} успішно розморожено
|
||||||
|
|
|
@ -1023,6 +1023,14 @@ zh-HK:
|
||||||
hint_html: 還有最後一步!我們需要確認你是人類(這樣我們才能杜絕垃圾郵件!)。解答下方的 CAPTCHA,然後點擊「繼續」。
|
hint_html: 還有最後一步!我們需要確認你是人類(這樣我們才能杜絕垃圾郵件!)。解答下方的 CAPTCHA,然後點擊「繼續」。
|
||||||
title: 安全檢查
|
title: 安全檢查
|
||||||
confirmations:
|
confirmations:
|
||||||
|
awaiting_review: 已確認你的電郵地址!%{domain} 的工作人員正在審核你的註冊資料。如果他們批准你的帳號,你將會收到電郵通知。
|
||||||
|
awaiting_review_title: 正在審核你的註冊
|
||||||
|
clicking_this_link: 點擊此連結
|
||||||
|
login_link: 登入
|
||||||
|
proceed_to_login_html: 你現在可前往 %{login_link}
|
||||||
|
redirect_to_app_html: 你應該已被重新導向<strong>%{app_name}</strong>應用程式。如果尚未被導向,請嘗試%{clicking_this_link}或自行回到應用程式。
|
||||||
|
registration_complete: 你在%{domain}已完成註冊!
|
||||||
|
welcome_title: 歡迎,%{name}!
|
||||||
wrong_email_hint: 如果該電郵地址不正確,你可以在帳號設定中修改。
|
wrong_email_hint: 如果該電郵地址不正確,你可以在帳號設定中修改。
|
||||||
delete_account: 刪除帳號
|
delete_account: 刪除帳號
|
||||||
delete_account_html: 如果你想刪除你的帳號,請<a href="%{path}">點擊這裡繼續</a>。你需要確認你的操作。
|
delete_account_html: 如果你想刪除你的帳號,請<a href="%{path}">點擊這裡繼續</a>。你需要確認你的操作。
|
||||||
|
|
|
@ -52,12 +52,12 @@ Rails.application.routes.draw do
|
||||||
end
|
end
|
||||||
|
|
||||||
get '.well-known/host-meta', to: 'well_known/host_meta#show', as: :host_meta, defaults: { format: 'xml' }
|
get '.well-known/host-meta', to: 'well_known/host_meta#show', as: :host_meta, defaults: { format: 'xml' }
|
||||||
get '.well-known/nodeinfo', to: 'well_known/nodeinfo#index', as: :nodeinfo, defaults: { format: 'json' }
|
get '.well-known/nodeinfo', to: 'well_known/node_info#index', as: :nodeinfo, defaults: { format: 'json' }
|
||||||
get '.well-known/webfinger', to: 'well_known/webfinger#show', as: :webfinger
|
get '.well-known/webfinger', to: 'well_known/webfinger#show', as: :webfinger
|
||||||
get '.well-known/change-password', to: redirect('/auth/edit')
|
get '.well-known/change-password', to: redirect('/auth/edit')
|
||||||
get '.well-known/proxy', to: redirect { |_, request| "/authorize_interaction?#{request.params.to_query}" }
|
get '.well-known/proxy', to: redirect { |_, request| "/authorize_interaction?#{request.params.to_query}" }
|
||||||
|
|
||||||
get '/nodeinfo/2.0', to: 'well_known/nodeinfo#show', as: :nodeinfo_schema
|
get '/nodeinfo/2.0', to: 'well_known/node_info#show', as: :nodeinfo_schema
|
||||||
|
|
||||||
get 'manifest', to: 'manifests#show', defaults: { format: 'json' }
|
get 'manifest', to: 'manifests#show', defaults: { format: 'json' }
|
||||||
get 'intent', to: 'intents#show'
|
get 'intent', to: 'intents#show'
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
|
|
||||||
class AddProfileFieldsToAccounts < ActiveRecord::Migration[4.2]
|
class AddProfileFieldsToAccounts < ActiveRecord::Migration[4.2]
|
||||||
def change
|
def change
|
||||||
add_column :accounts, :note, :text, null: false, default: ''
|
change_table :accounts, bulk: true do |t|
|
||||||
add_column :accounts, :display_name, :string, null: false, default: ''
|
t.column :note, :text, null: false, default: ''
|
||||||
add_column :accounts, :uri, :string, null: false, default: ''
|
t.column :display_name, :string, null: false, default: ''
|
||||||
|
t.column :uri, :string, null: false, default: ''
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,9 @@
|
||||||
|
|
||||||
class AddMetadataToStatuses < ActiveRecord::Migration[4.2]
|
class AddMetadataToStatuses < ActiveRecord::Migration[4.2]
|
||||||
def change
|
def change
|
||||||
add_column :statuses, :in_reply_to_id, :integer, null: true
|
change_table(:statuses, bulk: true) do |t|
|
||||||
add_column :statuses, :reblog_of_id, :integer, null: true
|
t.column :in_reply_to_id, :integer, null: true
|
||||||
|
t.column :reblog_of_id, :integer, null: true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
class AddDeviseToUsers < ActiveRecord::Migration[4.2]
|
class AddDeviseToUsers < ActiveRecord::Migration[4.2]
|
||||||
def self.up
|
def self.up
|
||||||
change_table(:users) do |t|
|
change_table(:users, bulk: true) do |t|
|
||||||
## Database authenticatable
|
## Database authenticatable
|
||||||
t.string :encrypted_password, null: false, default: ''
|
t.string :encrypted_password, null: false, default: ''
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
|
|
||||||
class AddOwnerToApplication < ActiveRecord::Migration[4.2]
|
class AddOwnerToApplication < ActiveRecord::Migration[4.2]
|
||||||
def change
|
def change
|
||||||
add_column :oauth_applications, :owner_id, :integer, null: true
|
change_table(:oauth_applications, bulk: true) do |t|
|
||||||
add_column :oauth_applications, :owner_type, :string, null: true
|
t.column :owner_id, :integer, null: true
|
||||||
|
t.column :owner_type, :string, null: true
|
||||||
|
end
|
||||||
add_index :oauth_applications, [:owner_id, :owner_type]
|
add_index :oauth_applications, [:owner_id, :owner_type]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
|
|
||||||
class RemoveOwnerFromApplication < ActiveRecord::Migration[5.0]
|
class RemoveOwnerFromApplication < ActiveRecord::Migration[5.0]
|
||||||
def change
|
def change
|
||||||
remove_index :oauth_applications, [:owner_id, :owner_type]
|
change_table(:oauth_applications, bulk: true) do |t|
|
||||||
remove_column :oauth_applications, :owner_id, :integer, null: true
|
t.remove_index [:owner_id, :owner_type]
|
||||||
remove_column :oauth_applications, :owner_type, :string, null: true
|
t.remove :owner_id, type: :integer, options: { null: true }
|
||||||
|
t.remove :owner_type, type: :string, options: { null: true }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,10 +2,12 @@
|
||||||
|
|
||||||
class AddConfirmableToUsers < ActiveRecord::Migration[5.0]
|
class AddConfirmableToUsers < ActiveRecord::Migration[5.0]
|
||||||
def change
|
def change
|
||||||
add_column :users, :confirmation_token, :string
|
change_table(:users, bulk: true) do |t|
|
||||||
add_column :users, :confirmed_at, :datetime
|
t.column :confirmation_token, :string
|
||||||
add_column :users, :confirmation_sent_at, :datetime
|
t.column :confirmed_at, :datetime
|
||||||
add_column :users, :unconfirmed_email, :string
|
t.column :confirmation_sent_at, :datetime
|
||||||
|
t.column :unconfirmed_email, :string
|
||||||
|
end
|
||||||
add_index :users, :confirmation_token, unique: true
|
add_index :users, :confirmation_token, unique: true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,20 +2,24 @@
|
||||||
|
|
||||||
class MigrateSettings < ActiveRecord::Migration[4.2]
|
class MigrateSettings < ActiveRecord::Migration[4.2]
|
||||||
def up
|
def up
|
||||||
remove_index :settings, [:target_type, :target_id, :var]
|
change_table(:settings, bulk: true) do |t|
|
||||||
rename_column :settings, :target_id, :thing_id
|
t.remove_index [:target_type, :target_id, :var]
|
||||||
rename_column :settings, :target_type, :thing_type
|
t.rename :target_id, :thing_id
|
||||||
change_column :settings, :thing_id, :integer, null: true, default: nil
|
t.rename :target_type, :thing_type
|
||||||
change_column :settings, :thing_type, :string, null: true, default: nil
|
t.change :thing_id, :integer, null: true, default: nil
|
||||||
add_index :settings, [:thing_type, :thing_id, :var], unique: true
|
t.change :thing_type, :string, null: true, default: nil
|
||||||
|
t.index [:thing_type, :thing_id, :var], unique: true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def down
|
def down
|
||||||
remove_index :settings, [:thing_type, :thing_id, :var]
|
change_table(:settings, bulk: true) do |t|
|
||||||
rename_column :settings, :thing_id, :target_id
|
t.remove_index [:thing_type, :thing_id, :var]
|
||||||
rename_column :settings, :thing_type, :target_type
|
t.rename :thing_id, :target_id
|
||||||
change_column :settings, :target_id, :integer, null: false
|
t.rename :thing_type, :target_type
|
||||||
change_column :settings, :target_type, :string, null: false, default: ''
|
t.column :target_id, :integer, null: false
|
||||||
add_index :settings, [:target_type, :target_id, :var], unique: true
|
t.column :target_type, :string, null: false, default: ''
|
||||||
|
t.index [:target_type, :target_id, :var], unique: true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,10 +2,12 @@
|
||||||
|
|
||||||
class AddDeviseTwoFactorToUsers < ActiveRecord::Migration[5.0]
|
class AddDeviseTwoFactorToUsers < ActiveRecord::Migration[5.0]
|
||||||
def change
|
def change
|
||||||
add_column :users, :encrypted_otp_secret, :string
|
change_table(:users, bulk: true) do |t|
|
||||||
add_column :users, :encrypted_otp_secret_iv, :string
|
t.column :encrypted_otp_secret, :string
|
||||||
add_column :users, :encrypted_otp_secret_salt, :string
|
t.column :encrypted_otp_secret_iv, :string
|
||||||
add_column :users, :consumed_timestep, :integer
|
t.column :encrypted_otp_secret_salt, :string
|
||||||
add_column :users, :otp_required_for_login, :boolean
|
t.column :consumed_timestep, :integer
|
||||||
|
t.column :otp_required_for_login, :boolean
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,9 +2,11 @@
|
||||||
|
|
||||||
class ChangePrimaryKeyToBigintOnStatuses < ActiveRecord::Migration[5.0]
|
class ChangePrimaryKeyToBigintOnStatuses < ActiveRecord::Migration[5.0]
|
||||||
def change
|
def change
|
||||||
change_column :statuses, :id, :bigint
|
change_table(:statuses, bulk: true) do |t|
|
||||||
change_column :statuses, :reblog_of_id, :bigint
|
t.change :id, :bigint
|
||||||
change_column :statuses, :in_reply_to_id, :bigint
|
t.change :reblog_of_id, :bigint
|
||||||
|
t.change :in_reply_to_id, :bigint
|
||||||
|
end
|
||||||
|
|
||||||
change_column :media_attachments, :status_id, :bigint
|
change_column :media_attachments, :status_id, :bigint
|
||||||
change_column :mentions, :status_id, :bigint
|
change_column :mentions, :status_id, :bigint
|
||||||
|
|
|
@ -2,11 +2,15 @@
|
||||||
|
|
||||||
class AddCounterCaches < ActiveRecord::Migration[5.0]
|
class AddCounterCaches < ActiveRecord::Migration[5.0]
|
||||||
def change
|
def change
|
||||||
add_column :statuses, :favourites_count, :integer, null: false, default: 0
|
change_table(:statuses, bulk: true) do |t|
|
||||||
add_column :statuses, :reblogs_count, :integer, null: false, default: 0
|
t.column :favourites_count, :integer, null: false, default: 0
|
||||||
add_column :accounts, :statuses_count, :integer, null: false, default: 0
|
t.column :reblogs_count, :integer, null: false, default: 0
|
||||||
add_column :accounts, :followers_count, :integer, null: false, default: 0
|
end
|
||||||
add_column :accounts, :following_count, :integer, null: false, default: 0
|
change_table(:accounts, bulk: true) do |t|
|
||||||
|
t.column :statuses_count, :integer, null: false, default: 0
|
||||||
|
t.column :followers_count, :integer, null: false, default: 0
|
||||||
|
t.column :following_count, :integer, null: false, default: 0
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -2,13 +2,15 @@
|
||||||
|
|
||||||
class AddOEmbedToPreviewCards < ActiveRecord::Migration[5.0]
|
class AddOEmbedToPreviewCards < ActiveRecord::Migration[5.0]
|
||||||
def change
|
def change
|
||||||
add_column :preview_cards, :type, :integer, default: 0, null: false
|
change_table(:preview_cards, bulk: true) do |t|
|
||||||
add_column :preview_cards, :html, :text, null: false, default: ''
|
t.column :type, :integer, default: 0, null: false
|
||||||
add_column :preview_cards, :author_name, :string, null: false, default: ''
|
t.column :html, :text, null: false, default: ''
|
||||||
add_column :preview_cards, :author_url, :string, null: false, default: ''
|
t.column :author_name, :string, null: false, default: ''
|
||||||
add_column :preview_cards, :provider_name, :string, null: false, default: ''
|
t.column :author_url, :string, null: false, default: ''
|
||||||
add_column :preview_cards, :provider_url, :string, null: false, default: ''
|
t.column :provider_name, :string, null: false, default: ''
|
||||||
add_column :preview_cards, :width, :integer, default: 0, null: false
|
t.column :provider_url, :string, null: false, default: ''
|
||||||
add_column :preview_cards, :height, :integer, default: 0, null: false
|
t.column :width, :integer, default: 0, null: false
|
||||||
|
t.column :height, :integer, default: 0, null: false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
|
|
||||||
class ReAddOwnerToApplication < ActiveRecord::Migration[5.0]
|
class ReAddOwnerToApplication < ActiveRecord::Migration[5.0]
|
||||||
def change
|
def change
|
||||||
add_column :oauth_applications, :owner_id, :integer, null: true
|
change_table(:oauth_applications, bulk: true) do |t|
|
||||||
add_column :oauth_applications, :owner_type, :string, null: true
|
t.column :owner_id, :integer, null: true
|
||||||
|
t.column :owner_type, :string, null: true
|
||||||
|
end
|
||||||
add_index :oauth_applications, [:owner_id, :owner_type]
|
add_index :oauth_applications, [:owner_id, :owner_type]
|
||||||
add_foreign_key :oauth_applications, :users, column: :owner_id, on_delete: :cascade
|
add_foreign_key :oauth_applications, :users, column: :owner_id, on_delete: :cascade
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,9 +3,12 @@
|
||||||
class ChangeLanguageFilterToOptOut < ActiveRecord::Migration[5.0]
|
class ChangeLanguageFilterToOptOut < ActiveRecord::Migration[5.0]
|
||||||
def change
|
def change
|
||||||
remove_index :users, :allowed_languages
|
remove_index :users, :allowed_languages
|
||||||
remove_column :users, :allowed_languages
|
|
||||||
|
|
||||||
add_column :users, :filtered_languages, :string, array: true, default: [], null: false
|
change_table(:users, bulk: true) do |t|
|
||||||
|
t.remove :allowed_languages
|
||||||
|
t.column :filtered_languages, :string, array: true, default: [], null: false
|
||||||
|
end
|
||||||
|
|
||||||
add_index :users, :filtered_languages, using: :gin
|
add_index :users, :filtered_languages, using: :gin
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
|
|
||||||
class AddDescriptionToSessionActivations < ActiveRecord::Migration[5.1]
|
class AddDescriptionToSessionActivations < ActiveRecord::Migration[5.1]
|
||||||
def change
|
def change
|
||||||
add_column :session_activations, :user_agent, :string, null: false, default: ''
|
change_table(:session_activations, bulk: true) do |t|
|
||||||
add_column :session_activations, :ip, :inet
|
t.column :user_agent, :string, null: false, default: ''
|
||||||
|
t.column :ip, :inet
|
||||||
|
end
|
||||||
add_foreign_key :session_activations, :users, on_delete: :cascade
|
add_foreign_key :session_activations, :users, on_delete: :cascade
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,10 +2,12 @@
|
||||||
|
|
||||||
class AddActivityPubToAccounts < ActiveRecord::Migration[5.1]
|
class AddActivityPubToAccounts < ActiveRecord::Migration[5.1]
|
||||||
def change
|
def change
|
||||||
add_column :accounts, :inbox_url, :string, null: false, default: ''
|
change_table(:accounts, bulk: true) do |t|
|
||||||
add_column :accounts, :outbox_url, :string, null: false, default: ''
|
t.column :inbox_url, :string, null: false, default: ''
|
||||||
add_column :accounts, :shared_inbox_url, :string, null: false, default: ''
|
t.column :outbox_url, :string, null: false, default: ''
|
||||||
add_column :accounts, :followers_url, :string, null: false, default: ''
|
t.column :shared_inbox_url, :string, null: false, default: ''
|
||||||
add_column :accounts, :protocol, :integer, null: false, default: 0
|
t.column :followers_url, :string, null: false, default: ''
|
||||||
|
t.column :protocol, :integer, null: false, default: 0
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
class AddUriToCustomEmojis < ActiveRecord::Migration[5.2]
|
class AddUriToCustomEmojis < ActiveRecord::Migration[5.2]
|
||||||
def change
|
def change
|
||||||
add_column :custom_emojis, :uri, :string
|
safety_assured do
|
||||||
add_column :custom_emojis, :image_remote_url, :string
|
change_table(:custom_emojis, bulk: true) do |t|
|
||||||
|
t.column :uri, :string
|
||||||
|
t.column :image_remote_url, :string
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -15,7 +15,9 @@ class ChangeRelaysEnabled < ActiveRecord::Migration[5.2]
|
||||||
end
|
end
|
||||||
|
|
||||||
def down
|
def down
|
||||||
remove_column :relays, :state
|
change_table(:relays, bulk: true) do |t|
|
||||||
add_column :relays, :enabled, :boolean, default: false, null: false
|
t.remove :state
|
||||||
|
t.column :enabled, :boolean, default: false, null: false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -13,8 +13,12 @@ class AddSilencedAtSuspendedAtToAccounts < ActiveRecord::Migration[5.2]
|
||||||
end
|
end
|
||||||
|
|
||||||
def up
|
def up
|
||||||
add_column :accounts, :silenced_at, :datetime
|
safety_assured do
|
||||||
add_column :accounts, :suspended_at, :datetime
|
change_table(:accounts, bulk: true) do |t|
|
||||||
|
t.column :silenced_at, :datetime
|
||||||
|
t.column :suspended_at, :datetime
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Record suspend date of blocks and silences for users whose limitations match
|
# Record suspend date of blocks and silences for users whose limitations match
|
||||||
# a domain block
|
# a domain block
|
||||||
|
@ -36,7 +40,9 @@ class AddSilencedAtSuspendedAtToAccounts < ActiveRecord::Migration[5.2]
|
||||||
Account.where(suspended: false).where.not(suspended_at: nil).in_batches.update_all(suspended: true)
|
Account.where(suspended: false).where.not(suspended_at: nil).in_batches.update_all(suspended: true)
|
||||||
Account.where(silenced: false).where.not(silenced_at: nil).in_batches.update_all(silenced: true)
|
Account.where(silenced: false).where.not(silenced_at: nil).in_batches.update_all(silenced: true)
|
||||||
|
|
||||||
remove_column :accounts, :silenced_at
|
change_table(:accounts, bulk: true) do |t|
|
||||||
remove_column :accounts, :suspended_at
|
t.column :silenced_at, :datetime
|
||||||
|
t.column :suspended_at, :datetime
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,10 +2,14 @@
|
||||||
|
|
||||||
class AddCapabilitiesToTags < ActiveRecord::Migration[5.2]
|
class AddCapabilitiesToTags < ActiveRecord::Migration[5.2]
|
||||||
def change
|
def change
|
||||||
add_column :tags, :usable, :boolean
|
safety_assured do
|
||||||
add_column :tags, :trendable, :boolean
|
change_table(:tags, bulk: true) do |t|
|
||||||
add_column :tags, :listable, :boolean
|
t.column :usable, :boolean
|
||||||
add_column :tags, :reviewed_at, :datetime
|
t.column :trendable, :boolean
|
||||||
add_column :tags, :requested_review_at, :datetime
|
t.column :listable, :boolean
|
||||||
|
t.column :reviewed_at, :datetime
|
||||||
|
t.column :requested_review_at, :datetime
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
class AddCommentsToDomainBlocks < ActiveRecord::Migration[5.2]
|
class AddCommentsToDomainBlocks < ActiveRecord::Migration[5.2]
|
||||||
def change
|
def change
|
||||||
add_column :domain_blocks, :private_comment, :text
|
safety_assured do
|
||||||
add_column :domain_blocks, :public_comment, :text
|
change_table(:domain_blocks, bulk: true) do |t|
|
||||||
|
t.column :private_comment, :text
|
||||||
|
t.column :public_comment, :text
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
class AddLastStatusAtToTags < ActiveRecord::Migration[5.2]
|
class AddLastStatusAtToTags < ActiveRecord::Migration[5.2]
|
||||||
def change
|
def change
|
||||||
add_column :tags, :last_status_at, :datetime
|
safety_assured do
|
||||||
add_column :tags, :last_trend_at, :datetime
|
change_table(:tags, bulk: true) do |t|
|
||||||
|
t.column :last_status_at, :datetime
|
||||||
|
t.column :last_trend_at, :datetime
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
class AddMaxScoreToTags < ActiveRecord::Migration[5.2]
|
class AddMaxScoreToTags < ActiveRecord::Migration[5.2]
|
||||||
def change
|
def change
|
||||||
add_column :tags, :max_score, :float
|
safety_assured do
|
||||||
add_column :tags, :max_score_at, :datetime
|
change_table(:tags, bulk: true) do |t|
|
||||||
|
t.column :max_score, :float
|
||||||
|
t.column :max_score_at, :datetime
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,8 +3,12 @@
|
||||||
class AddStorageSchemaVersion < ActiveRecord::Migration[5.2]
|
class AddStorageSchemaVersion < ActiveRecord::Migration[5.2]
|
||||||
def change
|
def change
|
||||||
add_column :preview_cards, :image_storage_schema_version, :integer
|
add_column :preview_cards, :image_storage_schema_version, :integer
|
||||||
add_column :accounts, :avatar_storage_schema_version, :integer
|
safety_assured do
|
||||||
add_column :accounts, :header_storage_schema_version, :integer
|
change_table(:accounts, bulk: true) do |t|
|
||||||
|
t.column :avatar_storage_schema_version, :integer
|
||||||
|
t.column :header_storage_schema_version, :integer
|
||||||
|
end
|
||||||
|
end
|
||||||
add_column :media_attachments, :file_storage_schema_version, :integer
|
add_column :media_attachments, :file_storage_schema_version, :integer
|
||||||
add_column :custom_emojis, :image_storage_schema_version, :integer
|
add_column :custom_emojis, :image_storage_schema_version, :integer
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
class AddSignInTokenToUsers < ActiveRecord::Migration[5.2]
|
class AddSignInTokenToUsers < ActiveRecord::Migration[5.2]
|
||||||
def change
|
def change
|
||||||
add_column :users, :sign_in_token, :string
|
safety_assured do
|
||||||
add_column :users, :sign_in_token_sent_at, :datetime
|
change_table(:users, bulk: true) do |t|
|
||||||
|
t.column :sign_in_token, :string
|
||||||
|
t.column :sign_in_token_sent_at, :datetime
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,8 +2,12 @@
|
||||||
|
|
||||||
class AddLanguageToPreviewCards < ActiveRecord::Migration[6.1]
|
class AddLanguageToPreviewCards < ActiveRecord::Migration[6.1]
|
||||||
def change
|
def change
|
||||||
add_column :preview_cards, :language, :string
|
safety_assured do
|
||||||
add_column :preview_cards, :max_score, :float
|
change_table(:preview_cards, bulk: true) do |t|
|
||||||
add_column :preview_cards, :max_score_at, :datetime
|
t.column :language, :string
|
||||||
|
t.column :max_score, :float
|
||||||
|
t.column :max_score_at, :datetime
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,16 +8,24 @@ class AddCategoryToReports < ActiveRecord::Migration[6.1]
|
||||||
disable_ddl_transaction!
|
disable_ddl_transaction!
|
||||||
|
|
||||||
def up
|
def up
|
||||||
safety_assured { add_column_with_default :reports, :category, :int, default: 0, allow_null: false }
|
safety_assured do
|
||||||
add_column :reports, :action_taken_at, :datetime
|
add_column_with_default :reports, :category, :int, default: 0, allow_null: false
|
||||||
add_column :reports, :rule_ids, :bigint, array: true
|
change_table(:reports, bulk: true) do |t|
|
||||||
safety_assured { execute 'UPDATE reports SET action_taken_at = updated_at WHERE action_taken = TRUE' }
|
t.column :action_taken_at, :datetime
|
||||||
|
t.column :rule_ids, :bigint, array: true
|
||||||
|
end
|
||||||
|
execute 'UPDATE reports SET action_taken_at = updated_at WHERE action_taken = TRUE'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def down
|
def down
|
||||||
safety_assured { execute 'UPDATE reports SET action_taken = TRUE WHERE action_taken_at IS NOT NULL' }
|
safety_assured do
|
||||||
|
execute 'UPDATE reports SET action_taken = TRUE WHERE action_taken_at IS NOT NULL'
|
||||||
remove_column :reports, :category
|
remove_column :reports, :category
|
||||||
remove_column :reports, :action_taken_at
|
change_table(:reports, bulk: true) do |t|
|
||||||
remove_column :reports, :rule_ids
|
t.column :action_taken_at, :datetime
|
||||||
|
t.column :rule_ids, :bigint, array: true
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,8 +2,12 @@
|
||||||
|
|
||||||
class AddTrendableToAccounts < ActiveRecord::Migration[6.1]
|
class AddTrendableToAccounts < ActiveRecord::Migration[6.1]
|
||||||
def change
|
def change
|
||||||
add_column :accounts, :trendable, :boolean
|
safety_assured do
|
||||||
add_column :accounts, :reviewed_at, :datetime
|
change_table(:accounts, bulk: true) do |t|
|
||||||
add_column :accounts, :requested_review_at, :datetime
|
t.column :trendable, :boolean
|
||||||
|
t.column :reviewed_at, :datetime
|
||||||
|
t.column :requested_review_at, :datetime
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
class AddIpsToEmailDomainBlocks < ActiveRecord::Migration[6.1]
|
class AddIpsToEmailDomainBlocks < ActiveRecord::Migration[6.1]
|
||||||
def change
|
def change
|
||||||
add_column :email_domain_blocks, :ips, :inet, array: true
|
safety_assured do
|
||||||
add_column :email_domain_blocks, :last_refresh_at, :datetime
|
change_table(:email_domain_blocks, bulk: true) do |t|
|
||||||
|
t.column :ips, :inet, array: true
|
||||||
|
t.column :last_refresh_at, :datetime
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
class AddLastUsedAtToOauthAccessTokens < ActiveRecord::Migration[6.1]
|
class AddLastUsedAtToOauthAccessTokens < ActiveRecord::Migration[6.1]
|
||||||
def change
|
def change
|
||||||
add_column :oauth_access_tokens, :last_used_at, :datetime
|
safety_assured do
|
||||||
add_column :oauth_access_tokens, :last_used_ip, :inet
|
change_table(:oauth_access_tokens, bulk: true) do |t|
|
||||||
|
t.column :last_used_at, :datetime
|
||||||
|
t.column :last_used_ip, :inet
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,9 +2,13 @@
|
||||||
|
|
||||||
class AddOrderedMediaAttachmentIdsToStatusEdits < ActiveRecord::Migration[6.1]
|
class AddOrderedMediaAttachmentIdsToStatusEdits < ActiveRecord::Migration[6.1]
|
||||||
def change
|
def change
|
||||||
add_column :status_edits, :ordered_media_attachment_ids, :bigint, array: true
|
safety_assured do
|
||||||
add_column :status_edits, :media_descriptions, :text, array: true
|
change_table(:status_edits, bulk: true) do |t|
|
||||||
add_column :status_edits, :poll_options, :string, array: true
|
t.column :ordered_media_attachment_ids, :bigint, array: true
|
||||||
add_column :status_edits, :sensitive, :boolean
|
t.column :media_descriptions, :text, array: true
|
||||||
|
t.column :poll_options, :string, array: true
|
||||||
|
t.column :sensitive, :boolean
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,8 +2,12 @@
|
||||||
|
|
||||||
class AddHumanIdentifierToAdminActionLogs < ActiveRecord::Migration[6.1]
|
class AddHumanIdentifierToAdminActionLogs < ActiveRecord::Migration[6.1]
|
||||||
def change
|
def change
|
||||||
add_column :admin_action_logs, :human_identifier, :string
|
safety_assured do
|
||||||
add_column :admin_action_logs, :route_param, :string
|
change_table(:admin_action_logs, bulk: true) do |t|
|
||||||
add_column :admin_action_logs, :permalink, :string
|
t.column :human_identifier, :string
|
||||||
|
t.column :route_param, :string
|
||||||
|
t.column :permalink, :string
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -224,7 +224,7 @@ module Mastodon::CLI
|
||||||
users = User.where(id: row['ids'].split(',')).sort_by(&:updated_at).reverse
|
users = User.where(id: row['ids'].split(',')).sort_by(&:updated_at).reverse
|
||||||
ref_user = users.shift
|
ref_user = users.shift
|
||||||
say "Multiple users registered with e-mail address #{ref_user.email}.", :yellow
|
say "Multiple users registered with e-mail address #{ref_user.email}.", :yellow
|
||||||
say "e-mail will be disabled for the following accounts: #{user.map(&:account).map(&:acct).join(', ')}", :yellow
|
say "e-mail will be disabled for the following accounts: #{user.map { |user| user.account.acct }.join(', ')}", :yellow
|
||||||
say 'Please reach out to them and set another address with `tootctl account modify` or delete them.', :yellow
|
say 'Please reach out to them and set another address with `tootctl account modify` or delete them.', :yellow
|
||||||
|
|
||||||
users.each_with_index do |user, index|
|
users.each_with_index do |user, index|
|
||||||
|
@ -253,7 +253,7 @@ module Mastodon::CLI
|
||||||
def deduplicate_users_process_confirmation_token
|
def deduplicate_users_process_confirmation_token
|
||||||
ActiveRecord::Base.connection.select_all("SELECT string_agg(id::text, ',') AS ids FROM users WHERE confirmation_token IS NOT NULL GROUP BY confirmation_token HAVING count(*) > 1").each do |row|
|
ActiveRecord::Base.connection.select_all("SELECT string_agg(id::text, ',') AS ids FROM users WHERE confirmation_token IS NOT NULL GROUP BY confirmation_token HAVING count(*) > 1").each do |row|
|
||||||
users = User.where(id: row['ids'].split(',')).sort_by(&:created_at).reverse.drop(1)
|
users = User.where(id: row['ids'].split(',')).sort_by(&:created_at).reverse.drop(1)
|
||||||
say "Unsetting confirmation token for those accounts: #{users.map(&:account).map(&:acct).join(', ')}", :yellow
|
say "Unsetting confirmation token for those accounts: #{users.map { |user| user.account.acct }.join(', ')}", :yellow
|
||||||
|
|
||||||
users.each do |user|
|
users.each do |user|
|
||||||
user.update!(confirmation_token: nil)
|
user.update!(confirmation_token: nil)
|
||||||
|
@ -265,7 +265,7 @@ module Mastodon::CLI
|
||||||
if ActiveRecord::Migrator.current_version < 2022_01_18_183010
|
if ActiveRecord::Migrator.current_version < 2022_01_18_183010
|
||||||
ActiveRecord::Base.connection.select_all("SELECT string_agg(id::text, ',') AS ids FROM users WHERE remember_token IS NOT NULL GROUP BY remember_token HAVING count(*) > 1").each do |row|
|
ActiveRecord::Base.connection.select_all("SELECT string_agg(id::text, ',') AS ids FROM users WHERE remember_token IS NOT NULL GROUP BY remember_token HAVING count(*) > 1").each do |row|
|
||||||
users = User.where(id: row['ids'].split(',')).sort_by(&:updated_at).reverse.drop(1)
|
users = User.where(id: row['ids'].split(',')).sort_by(&:updated_at).reverse.drop(1)
|
||||||
say "Unsetting remember token for those accounts: #{users.map(&:account).map(&:acct).join(', ')}", :yellow
|
say "Unsetting remember token for those accounts: #{users.map { |user| user.account.acct }.join(', ')}", :yellow
|
||||||
|
|
||||||
users.each do |user|
|
users.each do |user|
|
||||||
user.update!(remember_token: nil)
|
user.update!(remember_token: nil)
|
||||||
|
@ -277,7 +277,7 @@ module Mastodon::CLI
|
||||||
def deduplicate_users_process_password_token
|
def deduplicate_users_process_password_token
|
||||||
ActiveRecord::Base.connection.select_all("SELECT string_agg(id::text, ',') AS ids FROM users WHERE reset_password_token IS NOT NULL GROUP BY reset_password_token HAVING count(*) > 1").each do |row|
|
ActiveRecord::Base.connection.select_all("SELECT string_agg(id::text, ',') AS ids FROM users WHERE reset_password_token IS NOT NULL GROUP BY reset_password_token HAVING count(*) > 1").each do |row|
|
||||||
users = User.where(id: row['ids'].split(',')).sort_by(&:updated_at).reverse.drop(1)
|
users = User.where(id: row['ids'].split(',')).sort_by(&:updated_at).reverse.drop(1)
|
||||||
say "Unsetting password reset token for those accounts: #{users.map(&:account).map(&:acct).join(', ')}", :yellow
|
say "Unsetting password reset token for those accounts: #{users.map { |user| user.account.acct }.join(', ')}", :yellow
|
||||||
|
|
||||||
users.each do |user|
|
users.each do |user|
|
||||||
user.update!(reset_password_token: nil)
|
user.update!(reset_password_token: nil)
|
||||||
|
|
|
@ -74,7 +74,7 @@ class Sanitize
|
||||||
current_node.replace(Nokogiri::XML::Text.new(current_node.text, current_node.document)) unless LINK_PROTOCOLS.include?(scheme)
|
current_node.replace(Nokogiri::XML::Text.new(current_node.text, current_node.document)) unless LINK_PROTOCOLS.include?(scheme)
|
||||||
end
|
end
|
||||||
|
|
||||||
MASTODON_STRICT ||= freeze_config(
|
MASTODON_STRICT = freeze_config(
|
||||||
elements: %w(p br span a abbr del pre blockquote code b strong u sub sup i em h1 h2 h3 h4 h5 ul ol li),
|
elements: %w(p br span a abbr del pre blockquote code b strong u sub sup i em h1 h2 h3 h4 h5 ul ol li),
|
||||||
|
|
||||||
attributes: {
|
attributes: {
|
||||||
|
@ -106,7 +106,7 @@ class Sanitize
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
MASTODON_OEMBED ||= freeze_config(
|
MASTODON_OEMBED = freeze_config(
|
||||||
elements: %w(audio embed iframe source video),
|
elements: %w(audio embed iframe source video),
|
||||||
|
|
||||||
attributes: {
|
attributes: {
|
||||||
|
@ -154,7 +154,7 @@ class Sanitize
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
MASTODON_OUTGOING ||= freeze_config MASTODON_STRICT.merge(
|
MASTODON_OUTGOING = freeze_config MASTODON_STRICT.merge(
|
||||||
attributes: merge(
|
attributes: merge(
|
||||||
MASTODON_STRICT[:attributes],
|
MASTODON_STRICT[:attributes],
|
||||||
'a' => %w(href rel class title target translate)
|
'a' => %w(href rel class title target translate)
|
||||||
|
|
|
@ -18,21 +18,8 @@ RSpec.describe Admin::AccountsController do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'filters with parameters' do
|
it 'filters with parameters' do
|
||||||
new = AccountFilter.method(:new)
|
account_filter = instance_double(AccountFilter, results: Account.all)
|
||||||
|
allow(AccountFilter).to receive(:new).and_return(account_filter)
|
||||||
expect(AccountFilter).to receive(:new) do |params|
|
|
||||||
h = params.to_h
|
|
||||||
|
|
||||||
expect(h[:origin]).to eq 'local'
|
|
||||||
expect(h[:by_domain]).to eq 'domain'
|
|
||||||
expect(h[:status]).to eq 'active'
|
|
||||||
expect(h[:username]).to eq 'username'
|
|
||||||
expect(h[:display_name]).to eq 'display name'
|
|
||||||
expect(h[:email]).to eq 'local-part@domain'
|
|
||||||
expect(h[:ip]).to eq '0.0.0.42'
|
|
||||||
|
|
||||||
new.call({})
|
|
||||||
end
|
|
||||||
|
|
||||||
get :index, params: {
|
get :index, params: {
|
||||||
origin: 'local',
|
origin: 'local',
|
||||||
|
@ -43,6 +30,18 @@ RSpec.describe Admin::AccountsController do
|
||||||
email: 'local-part@domain',
|
email: 'local-part@domain',
|
||||||
ip: '0.0.0.42',
|
ip: '0.0.0.42',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
expect(AccountFilter).to have_received(:new) do |params|
|
||||||
|
h = params.to_h
|
||||||
|
|
||||||
|
expect(h[:origin]).to eq 'local'
|
||||||
|
expect(h[:by_domain]).to eq 'domain'
|
||||||
|
expect(h[:status]).to eq 'active'
|
||||||
|
expect(h[:username]).to eq 'username'
|
||||||
|
expect(h[:display_name]).to eq 'display name'
|
||||||
|
expect(h[:email]).to eq 'local-part@domain'
|
||||||
|
expect(h[:ip]).to eq '0.0.0.42'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'paginates accounts' do
|
it 'paginates accounts' do
|
||||||
|
|
|
@ -3,14 +3,14 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
describe Api::V1::StreamingController do
|
describe Api::V1::StreamingController do
|
||||||
around(:each) do |example|
|
around do |example|
|
||||||
before = Rails.configuration.x.streaming_api_base_url
|
before = Rails.configuration.x.streaming_api_base_url
|
||||||
Rails.configuration.x.streaming_api_base_url = Rails.configuration.x.web_domain
|
Rails.configuration.x.streaming_api_base_url = Rails.configuration.x.web_domain
|
||||||
example.run
|
example.run
|
||||||
Rails.configuration.x.streaming_api_base_url = before
|
Rails.configuration.x.streaming_api_base_url = before
|
||||||
end
|
end
|
||||||
|
|
||||||
before(:each) do
|
before do
|
||||||
request.headers.merge! Host: Rails.configuration.x.web_domain
|
request.headers.merge! Host: Rails.configuration.x.web_domain
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ describe Api::V1::StreamingController do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with streaming api on different host' do
|
context 'with streaming api on different host' do
|
||||||
before(:each) do
|
before do
|
||||||
Rails.configuration.x.streaming_api_base_url = "wss://streaming-#{Rails.configuration.x.web_domain}"
|
Rails.configuration.x.streaming_api_base_url = "wss://streaming-#{Rails.configuration.x.web_domain}"
|
||||||
@streaming_host = URI.parse(Rails.configuration.x.streaming_api_base_url).host
|
@streaming_host = URI.parse(Rails.configuration.x.streaming_api_base_url).host
|
||||||
end
|
end
|
||||||
|
|
|
@ -53,7 +53,7 @@ RSpec.describe Api::V2::SearchController do
|
||||||
|
|
||||||
context 'without token' do
|
context 'without token' do
|
||||||
describe 'GET #index' do
|
describe 'GET #index' do
|
||||||
let(:search_params) {}
|
let(:search_params) { nil }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
get :index, params: search_params
|
get :index, params: search_params
|
||||||
|
|
|
@ -16,7 +16,7 @@ describe WellKnown::WebfingerController do
|
||||||
let(:alice) { Fabricate(:account, username: 'alice') }
|
let(:alice) { Fabricate(:account, username: 'alice') }
|
||||||
let(:resource) { nil }
|
let(:resource) { nil }
|
||||||
|
|
||||||
around(:each) do |example|
|
around do |example|
|
||||||
tmp = Rails.configuration.x.alternate_domains
|
tmp = Rails.configuration.x.alternate_domains
|
||||||
Rails.configuration.x.alternate_domains = alternate_domains
|
Rails.configuration.x.alternate_domains = alternate_domains
|
||||||
example.run
|
example.run
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
Fabricator :access_token, from: 'Doorkeeper::AccessToken' do
|
Fabricator :access_token, from: 'Doorkeeper::AccessToken'
|
||||||
end
|
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
Fabricator(:conversation) do
|
Fabricator(:conversation)
|
||||||
end
|
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
Fabricator(:system_key) do
|
Fabricator(:system_key)
|
||||||
end
|
|
||||||
|
|
|
@ -7,11 +7,7 @@ describe 'email confirmation flow when captcha is enabled' do
|
||||||
let(:client_app) { nil }
|
let(:client_app) { nil }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
# rubocop:disable RSpec/AnyInstance -- easiest way to deal with that that I know of
|
allow(Auth::ConfirmationsController).to receive(:new).and_return(stubbed_controller)
|
||||||
allow_any_instance_of(Auth::ConfirmationsController).to receive(:captcha_enabled?).and_return(true)
|
|
||||||
allow_any_instance_of(Auth::ConfirmationsController).to receive(:check_captcha!).and_return(true)
|
|
||||||
allow_any_instance_of(Auth::ConfirmationsController).to receive(:render_captcha).and_return(nil)
|
|
||||||
# rubocop:enable RSpec/AnyInstance
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when the user signed up through an app' do
|
context 'when the user signed up through an app' do
|
||||||
|
@ -40,4 +36,12 @@ describe 'email confirmation flow when captcha is enabled' do
|
||||||
expect(page).to have_link(I18n.t('auth.confirmations.clicking_this_link'), href: client_app.confirmation_redirect_uri)
|
expect(page).to have_link(I18n.t('auth.confirmations.clicking_this_link'), href: client_app.confirmation_redirect_uri)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def stubbed_controller
|
||||||
|
Auth::ConfirmationsController.new.tap do |controller|
|
||||||
|
allow(controller).to receive_messages(captcha_enabled?: true, check_captcha!: true, render_captcha: nil)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -18,13 +18,15 @@ RSpec.describe Admin::AccountModerationNotesHelper do
|
||||||
let(:account) { Fabricate(:account) }
|
let(:account) { Fabricate(:account) }
|
||||||
|
|
||||||
it 'calls #link_to' do
|
it 'calls #link_to' do
|
||||||
expect(helper).to receive(:link_to).with(
|
allow(helper).to receive(:link_to)
|
||||||
|
|
||||||
|
helper.admin_account_link_to(account)
|
||||||
|
|
||||||
|
expect(helper).to have_received(:link_to).with(
|
||||||
admin_account_path(account.id),
|
admin_account_path(account.id),
|
||||||
class: name_tag_classes(account),
|
class: name_tag_classes(account),
|
||||||
title: account.acct
|
title: account.acct
|
||||||
)
|
)
|
||||||
|
|
||||||
helper.admin_account_link_to(account)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue