Merge commit '1e3b19230a48174acf524cf1a9f5a498e220ea7d' into glitch-soc/merge-upstream
Conflicts: - `app/models/account.rb`: Upstream added new validations close to lines on which glitch-soc had modified validations to handle custom limits set through environment variables. Ported upstream changes. - `config/initializers/content_security_policy.rb`: Upstream added `AZURE_ALIAS_HOST`. Glitch-soc's version of the file is completely different. Added `AZURE_ALIAS_HOST` to our version of the file.
This commit is contained in:
		
						commit
						993d0a9950
					
				|  | @ -1,13 +1,13 @@ | |||
| # This configuration was generated by | ||||
| # `haml-lint --auto-gen-config` | ||||
| # on 2023-07-18 11:56:05 -0400 using Haml-Lint version 0.48.0. | ||||
| # on 2023-07-20 09:47:50 -0400 using Haml-Lint version 0.48.0. | ||||
| # The point is for the user to remove these configuration records | ||||
| # one by one as the lints are removed from the code base. | ||||
| # Note that changes in the inspected code, or installation of new | ||||
| # versions of Haml-Lint, may require this file to be generated again. | ||||
| 
 | ||||
| linters: | ||||
|   # Offense count: 959 | ||||
|   # Offense count: 951 | ||||
|   LineLength: | ||||
|     enabled: false | ||||
| 
 | ||||
|  | @ -15,7 +15,7 @@ linters: | |||
|   UnnecessaryStringOutput: | ||||
|     enabled: false | ||||
| 
 | ||||
|   # Offense count: 63 | ||||
|   # Offense count: 57 | ||||
|   RuboCop: | ||||
|     enabled: false | ||||
| 
 | ||||
|  | @ -26,7 +26,7 @@ linters: | |||
|       - 'app/views/admin/reports/show.html.haml' | ||||
|       - 'app/views/disputes/strikes/show.html.haml' | ||||
| 
 | ||||
|   # Offense count: 40 | ||||
|   # Offense count: 32 | ||||
|   InstanceVariables: | ||||
|     exclude: | ||||
|       - 'app/views/admin/reports/_actions.html.haml' | ||||
|  | @ -38,7 +38,6 @@ linters: | |||
|       - 'app/views/invites/_form.html.haml' | ||||
|       - 'app/views/relationships/_account.html.haml' | ||||
|       - 'app/views/shared/_og.html.haml' | ||||
|       - 'app/views/statuses/_status.html.haml' | ||||
| 
 | ||||
|   # Offense count: 3 | ||||
|   IdNames: | ||||
|  |  | |||
|  | @ -127,12 +127,6 @@ Lint/UselessAssignment: | |||
|     - 'spec/services/resolve_url_service_spec.rb' | ||||
|     - 'spec/views/statuses/show.html.haml_spec.rb' | ||||
| 
 | ||||
| # This cop supports safe autocorrection (--autocorrect). | ||||
| # Configuration parameters: CheckForMethodsWithNoSideEffects. | ||||
| Lint/Void: | ||||
|   Exclude: | ||||
|     - 'spec/services/resolve_account_service_spec.rb' | ||||
| 
 | ||||
| # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes. | ||||
| Metrics/AbcSize: | ||||
|   Max: 150 | ||||
|  |  | |||
							
								
								
									
										1
									
								
								Gemfile
								
								
								
								
							
							
						
						
									
										1
									
								
								Gemfile
								
								
								
								
							|  | @ -18,6 +18,7 @@ gem 'aws-sdk-s3', '~> 1.123', require: false | |||
| gem 'fog-core', '<= 2.4.0' | ||||
| gem 'fog-openstack', '~> 0.3', require: false | ||||
| gem 'kt-paperclip', '~> 7.2' | ||||
| gem 'md-paperclip-azure', '~> 2.2', require: false | ||||
| gem 'blurhash', '~> 0.1' | ||||
| 
 | ||||
| gem 'active_model_serializers', '~> 0.10' | ||||
|  |  | |||
							
								
								
									
										17
									
								
								Gemfile.lock
								
								
								
								
							
							
						
						
									
										17
									
								
								Gemfile.lock
								
								
								
								
							|  | @ -118,6 +118,14 @@ GEM | |||
|       aws-sigv4 (~> 1.6) | ||||
|     aws-sigv4 (1.6.0) | ||||
|       aws-eventstream (~> 1, >= 1.0.2) | ||||
|     azure-storage-blob (2.0.3) | ||||
|       azure-storage-common (~> 2.0) | ||||
|       nokogiri (~> 1, >= 1.10.8) | ||||
|     azure-storage-common (2.0.4) | ||||
|       faraday (~> 1.0) | ||||
|       faraday_middleware (~> 1.0, >= 1.0.0.rc1) | ||||
|       net-http-persistent (~> 4.0) | ||||
|       nokogiri (~> 1, >= 1.10.8) | ||||
|     bcrypt (3.1.18) | ||||
|     better_errors (2.10.1) | ||||
|       erubi (>= 1.0.0) | ||||
|  | @ -261,6 +269,8 @@ GEM | |||
|     faraday-patron (1.0.0) | ||||
|     faraday-rack (1.0.0) | ||||
|     faraday-retry (1.0.3) | ||||
|     faraday_middleware (1.2.0) | ||||
|       faraday (~> 1.0) | ||||
|     fast_blank (1.0.1) | ||||
|     fastimage (2.2.7) | ||||
|     ffi (1.15.5) | ||||
|  | @ -410,6 +420,10 @@ GEM | |||
|     mario-redis-lock (1.2.1) | ||||
|       redis (>= 3.0.5) | ||||
|     matrix (0.4.2) | ||||
|     md-paperclip-azure (2.2.0) | ||||
|       addressable (~> 2.5) | ||||
|       azure-storage-blob (~> 2.0.1) | ||||
|       hashie (~> 5.0) | ||||
|     memory_profiler (1.0.1) | ||||
|     method_source (1.0.0) | ||||
|     mime-types (3.4.1) | ||||
|  | @ -423,6 +437,8 @@ GEM | |||
|     multipart-post (2.3.0) | ||||
|     net-http (0.3.2) | ||||
|       uri | ||||
|     net-http-persistent (4.0.2) | ||||
|       connection_pool (~> 2.2) | ||||
|     net-imap (0.3.6) | ||||
|       date | ||||
|       net-protocol | ||||
|  | @ -822,6 +838,7 @@ DEPENDENCIES | |||
|   link_header (~> 0.0) | ||||
|   lograge (~> 0.12) | ||||
|   mario-redis-lock (~> 1.2) | ||||
|   md-paperclip-azure (~> 2.2) | ||||
|   memory_profiler | ||||
|   mime-types (~> 3.4.1) | ||||
|   net-http (~> 0.3.2) | ||||
|  |  | |||
|  | @ -17,13 +17,16 @@ class Api::V1::Statuses::FavouritesController < Api::BaseController | |||
| 
 | ||||
|     if fav | ||||
|       @status = fav.status | ||||
|       count = [@status.favourites_count - 1, 0].max | ||||
|       UnfavouriteWorker.perform_async(current_account.id, @status.id) | ||||
|     else | ||||
|       @status = Status.find(params[:status_id]) | ||||
|       count = @status.favourites_count | ||||
|       authorize @status, :show? | ||||
|     end | ||||
| 
 | ||||
|     render json: @status, serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new([@status], current_account.id, favourites_map: { @status.id => false }) | ||||
|     relationships = StatusRelationshipsPresenter.new([@status], current_account.id, favourites_map: { @status.id => false }, attributes_map: { @status.id => { favourites_count: count } }) | ||||
|     render json: @status, serializer: REST::StatusSerializer, relationships: relationships | ||||
|   rescue Mastodon::NotPermittedError | ||||
|     not_found | ||||
|   end | ||||
|  |  | |||
|  | @ -24,15 +24,18 @@ class Api::V1::Statuses::ReblogsController < Api::BaseController | |||
| 
 | ||||
|     if @status | ||||
|       authorize @status, :unreblog? | ||||
|       @reblog = @status.reblog | ||||
|       count = [@reblog.reblogs_count - 1, 0].max | ||||
|       @status.discard | ||||
|       RemovalWorker.perform_async(@status.id) | ||||
|       @reblog = @status.reblog | ||||
|     else | ||||
|       @reblog = Status.find(params[:status_id]) | ||||
|       count = @reblog.reblogs_count | ||||
|       authorize @reblog, :show? | ||||
|     end | ||||
| 
 | ||||
|     render json: @reblog, serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new([@status], current_account.id, reblogs_map: { @reblog.id => false }) | ||||
|     relationships = StatusRelationshipsPresenter.new([@status], current_account.id, reblogs_map: { @reblog.id => false }, attributes_map: { @reblog.id => { reblogs_count: count } }) | ||||
|     render json: @reblog, serializer: REST::StatusSerializer, relationships: relationships | ||||
|   rescue Mastodon::NotPermittedError | ||||
|     not_found | ||||
|   end | ||||
|  |  | |||
|  | @ -236,6 +236,6 @@ module ApplicationHelper | |||
|   private | ||||
| 
 | ||||
|   def storage_host_var | ||||
|     ENV.fetch('S3_ALIAS_HOST', nil) || ENV.fetch('S3_CLOUDFRONT_HOST', nil) | ||||
|     ENV.fetch('S3_ALIAS_HOST', nil) || ENV.fetch('S3_CLOUDFRONT_HOST', nil) || ENV.fetch('AZURE_ALIAS_HOST', nil) | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -65,33 +65,6 @@ module StatusesHelper | |||
|     embedded_view? ? '_blank' : nil | ||||
|   end | ||||
| 
 | ||||
|   def style_classes(status, is_predecessor, is_successor, include_threads) | ||||
|     classes = ['entry'] | ||||
|     classes << 'entry-predecessor' if is_predecessor | ||||
|     classes << 'entry-reblog' if status.reblog? | ||||
|     classes << 'entry-successor' if is_successor | ||||
|     classes << 'entry-center' if include_threads | ||||
|     classes.join(' ') | ||||
|   end | ||||
| 
 | ||||
|   def microformats_classes(status, is_direct_parent, is_direct_child) | ||||
|     classes = [] | ||||
|     classes << 'p-in-reply-to' if is_direct_parent | ||||
|     classes << 'p-repost-of' if status.reblog? && is_direct_parent | ||||
|     classes << 'p-comment' if is_direct_child | ||||
|     classes.join(' ') | ||||
|   end | ||||
| 
 | ||||
|   def microformats_h_class(status, is_predecessor, is_successor, include_threads) | ||||
|     if is_predecessor || status.reblog? || is_successor | ||||
|       'h-cite' | ||||
|     elsif include_threads | ||||
|       '' | ||||
|     else | ||||
|       'h-entry' | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def fa_visibility_icon(status) | ||||
|     case status.visibility | ||||
|     when 'public' | ||||
|  |  | |||
|  | @ -184,6 +184,7 @@ class SwitchingColumnsArea extends PureComponent { | |||
| 
 | ||||
|           {singleColumn ? <Redirect from='/deck' to='/home' exact /> : null} | ||||
|           {singleColumn && pathName.startsWith('/deck/') ? <Redirect from={pathName} to={pathName.slice(5)} /> : null} | ||||
|           {!singleColumn && pathName === '/getting-started' ? <Redirect from='/getting-started' to='/deck/getting-started' exact /> : null} | ||||
| 
 | ||||
|           <WrappedRoute path='/getting-started' component={GettingStarted} content={children} /> | ||||
|           <WrappedRoute path='/keyboard-shortcuts' component={KeyboardShortcuts} content={children} /> | ||||
|  |  | |||
|  | @ -5,11 +5,16 @@ import { normalizeStatusTranslation } from '../actions/importer/normalizer'; | |||
| import { | ||||
|   REBLOG_REQUEST, | ||||
|   REBLOG_FAIL, | ||||
|   UNREBLOG_REQUEST, | ||||
|   UNREBLOG_FAIL, | ||||
|   FAVOURITE_REQUEST, | ||||
|   FAVOURITE_FAIL, | ||||
|   UNFAVOURITE_SUCCESS, | ||||
|   UNFAVOURITE_REQUEST, | ||||
|   UNFAVOURITE_FAIL, | ||||
|   BOOKMARK_REQUEST, | ||||
|   BOOKMARK_FAIL, | ||||
|   UNBOOKMARK_REQUEST, | ||||
|   UNBOOKMARK_FAIL, | ||||
| } from '../actions/interactions'; | ||||
| import { | ||||
|   STATUS_MUTE_SUCCESS, | ||||
|  | @ -72,18 +77,28 @@ export default function statuses(state = initialState, action) { | |||
|     return importStatuses(state, action.statuses); | ||||
|   case FAVOURITE_REQUEST: | ||||
|     return state.setIn([action.status.get('id'), 'favourited'], true); | ||||
|   case UNFAVOURITE_SUCCESS: | ||||
|     return state.updateIn([action.status.get('id'), 'favourites_count'], x => Math.max(0, x - 1)); | ||||
|   case FAVOURITE_FAIL: | ||||
|     return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'favourited'], false); | ||||
|   case UNFAVOURITE_REQUEST: | ||||
|     return state.setIn([action.status.get('id'), 'favourited'], false); | ||||
|   case UNFAVOURITE_FAIL: | ||||
|     return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'favourited'], true); | ||||
|   case BOOKMARK_REQUEST: | ||||
|     return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'bookmarked'], true); | ||||
|   case BOOKMARK_FAIL: | ||||
|     return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'bookmarked'], false); | ||||
|   case UNBOOKMARK_REQUEST: | ||||
|     return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'bookmarked'], false); | ||||
|   case UNBOOKMARK_FAIL: | ||||
|     return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'bookmarked'], true); | ||||
|   case REBLOG_REQUEST: | ||||
|     return state.setIn([action.status.get('id'), 'reblogged'], true); | ||||
|   case REBLOG_FAIL: | ||||
|     return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'reblogged'], false); | ||||
|   case UNREBLOG_REQUEST: | ||||
|     return state.setIn([action.status.get('id'), 'reblogged'], false); | ||||
|   case UNREBLOG_FAIL: | ||||
|     return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'reblogged'], true); | ||||
|   case STATUS_MUTE_SUCCESS: | ||||
|     return state.setIn([action.id, 'muted'], true); | ||||
|   case STATUS_UNMUTE_SUCCESS: | ||||
|  |  | |||
|  | @ -93,12 +93,19 @@ class Account < ApplicationRecord | |||
|   # Remote user validations, also applies to internal actors | ||||
|   validates :username, format: { with: USERNAME_ONLY_RE }, if: -> { (!local? || actor_type == 'Application') && will_save_change_to_username? } | ||||
| 
 | ||||
|   # Remote user validations | ||||
|   validates :uri, presence: true, unless: :local?, on: :create | ||||
| 
 | ||||
|   # Local user validations | ||||
|   validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: 30 }, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' } | ||||
|   validates_with UnreservedUsernameValidator, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' } | ||||
|   validates :display_name, length: { maximum: MAX_DISPLAY_NAME_LENGTH }, if: -> { local? && will_save_change_to_display_name? } | ||||
|   validates :note, note_length: { maximum: MAX_NOTE_LENGTH }, if: -> { local? && will_save_change_to_note? } | ||||
|   validates :fields, length: { maximum: DEFAULT_FIELDS_SIZE }, if: -> { local? && will_save_change_to_fields? } | ||||
|   validates :uri, absence: true, if: :local?, on: :create | ||||
|   validates :inbox_url, absence: true, if: :local?, on: :create | ||||
|   validates :shared_inbox_url, absence: true, if: :local?, on: :create | ||||
|   validates :followers_url, absence: true, if: :local?, on: :create | ||||
| 
 | ||||
|   scope :remote, -> { where.not(domain: nil) } | ||||
|   scope :local, -> { where(domain: nil) } | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ class StatusRelationshipsPresenter | |||
|   PINNABLE_VISIBILITIES = %w(public unlisted private).freeze | ||||
| 
 | ||||
|   attr_reader :reblogs_map, :favourites_map, :mutes_map, :pins_map, | ||||
|               :bookmarks_map, :filters_map | ||||
|               :bookmarks_map, :filters_map, :attributes_map | ||||
| 
 | ||||
|   def initialize(statuses, current_account_id = nil, **options) | ||||
|     if current_account_id.nil? | ||||
|  | @ -26,6 +26,7 @@ class StatusRelationshipsPresenter | |||
|       @bookmarks_map   = Status.bookmarks_map(status_ids, current_account_id).merge(options[:bookmarks_map] || {}) | ||||
|       @mutes_map       = Status.mutes_map(conversation_ids, current_account_id).merge(options[:mutes_map] || {}) | ||||
|       @pins_map        = Status.pins_map(pinnable_status_ids, current_account_id).merge(options[:pins_map] || {}) | ||||
|       @attributes_map  = options[:attributes_map] || {} | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|  |  | |||
|  | @ -85,49 +85,57 @@ class REST::StatusSerializer < ActiveModel::Serializer | |||
|     ActivityPub::TagManager.instance.url_for(object) | ||||
|   end | ||||
| 
 | ||||
|   def reblogs_count | ||||
|     relationships&.attributes_map&.dig(object.id, :reblogs_count) || object.reblogs_count | ||||
|   end | ||||
| 
 | ||||
|   def favourites_count | ||||
|     relationships&.attributes_map&.dig(object.id, :favourites_count) || object.favourites_count | ||||
|   end | ||||
| 
 | ||||
|   def favourited | ||||
|     if instance_options && instance_options[:relationships] | ||||
|       instance_options[:relationships].favourites_map[object.id] || false | ||||
|     if relationships | ||||
|       relationships.favourites_map[object.id] || false | ||||
|     else | ||||
|       current_user.account.favourited?(object) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def reblogged | ||||
|     if instance_options && instance_options[:relationships] | ||||
|       instance_options[:relationships].reblogs_map[object.id] || false | ||||
|     if relationships | ||||
|       relationships.reblogs_map[object.id] || false | ||||
|     else | ||||
|       current_user.account.reblogged?(object) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def muted | ||||
|     if instance_options && instance_options[:relationships] | ||||
|       instance_options[:relationships].mutes_map[object.conversation_id] || false | ||||
|     if relationships | ||||
|       relationships.mutes_map[object.conversation_id] || false | ||||
|     else | ||||
|       current_user.account.muting_conversation?(object.conversation) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def bookmarked | ||||
|     if instance_options && instance_options[:relationships] | ||||
|       instance_options[:relationships].bookmarks_map[object.id] || false | ||||
|     if relationships | ||||
|       relationships.bookmarks_map[object.id] || false | ||||
|     else | ||||
|       current_user.account.bookmarked?(object) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def pinned | ||||
|     if instance_options && instance_options[:relationships] | ||||
|       instance_options[:relationships].pins_map[object.id] || false | ||||
|     if relationships | ||||
|       relationships.pins_map[object.id] || false | ||||
|     else | ||||
|       current_user.account.pinned?(object) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def filtered | ||||
|     if instance_options && instance_options[:relationships] | ||||
|       instance_options[:relationships].filters_map[object.id] || [] | ||||
|     if relationships | ||||
|       relationships.filters_map[object.id] || [] | ||||
|     else | ||||
|       current_user.account.status_matches_filters(object) | ||||
|     end | ||||
|  | @ -148,6 +156,12 @@ class REST::StatusSerializer < ActiveModel::Serializer | |||
|     object.active_mentions.to_a.sort_by(&:id) | ||||
|   end | ||||
| 
 | ||||
|   private | ||||
| 
 | ||||
|   def relationships | ||||
|     instance_options && instance_options[:relationships] | ||||
|   end | ||||
| 
 | ||||
|   class ApplicationSerializer < ActiveModel::Serializer | ||||
|     attributes :name, :website | ||||
| 
 | ||||
|  |  | |||
|  | @ -79,7 +79,7 @@ class ActivityPub::ProcessAccountService < BaseService | |||
| 
 | ||||
|     set_immediate_protocol_attributes! | ||||
| 
 | ||||
|     @account.save | ||||
|     @account.save! | ||||
|   end | ||||
| 
 | ||||
|   def update_account | ||||
|  |  | |||
|  | @ -27,7 +27,7 @@ | |||
|       %button.button= t('admin.accounts.search') | ||||
|       = link_to t('admin.accounts.reset'), admin_reports_path, class: 'button negative' | ||||
| 
 | ||||
| - @reports.group_by(&:target_account_id).each do |target_account_id, reports| | ||||
| - @reports.group_by(&:target_account_id).each do |_target_account_id, reports| | ||||
|   - target_account = reports.first.target_account | ||||
|   .report-card | ||||
|     .report-card__profile | ||||
|  |  | |||
|  | @ -33,7 +33,7 @@ | |||
|                               .auto-dir | ||||
|                                 = status_content_format(status) | ||||
| 
 | ||||
|                                 - if status.ordered_media_attachments.size > 0 | ||||
|                                 - if status.ordered_media_attachments.size.positive? | ||||
|                                   %p | ||||
|                                     - status.ordered_media_attachments.each do |a| | ||||
|                                       - if status.local? | ||||
|  |  | |||
|  | @ -14,5 +14,5 @@ | |||
|     %label= t('activerecord.attributes.doorkeeper/application.scopes') | ||||
|     %span.hint= t('simple_form.hints.defaults.scopes') | ||||
| 
 | ||||
|   - Doorkeeper.configuration.scopes.group_by { |s| s.split(':').first }.each do |k, v| | ||||
|     = f.input :scopes, label: false, hint: false, collection: v.sort, wrapper: :with_block_label, include_blank: false, label_method: ->(scope) { safe_join([content_tag(:samp, scope, class: class_for_scope(scope)), content_tag(:span, t("doorkeeper.scopes.#{scope}"), class: 'hint')]) }, selected: f.object.scopes.all, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' | ||||
|   - Doorkeeper.configuration.scopes.group_by { |s| s.split(':').first }.each do |_key, value| | ||||
|     = f.input :scopes, label: false, hint: false, collection: value.sort, wrapper: :with_block_label, include_blank: false, label_method: ->(scope) { safe_join([content_tag(:samp, scope, class: class_for_scope(scope)), content_tag(:span, t("doorkeeper.scopes.#{scope}"), class: 'hint')]) }, selected: f.object.scopes.all, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ | |||
|     - poll.loaded_options.each_with_index do |option, index| | ||||
|       %li | ||||
|         - if show_results | ||||
|           - percent = total_votes_count > 0 ? 100 * option.votes_count / total_votes_count : 0 | ||||
|           - percent = total_votes_count.positive? ? 100 * option.votes_count / total_votes_count : 0 | ||||
|           %label.poll__option>< | ||||
|             %span.poll__number>< | ||||
|               = "#{percent.round}%" | ||||
|  |  | |||
|  | @ -1,61 +1,2 @@ | |||
| :ruby | ||||
|   pinned          ||= false | ||||
|   include_threads ||= false | ||||
|   is_predecessor  ||= false | ||||
|   is_successor    ||= false | ||||
|   direct_reply_id ||= false | ||||
|   parent_id       ||= false | ||||
|   is_direct_parent  = direct_reply_id == status.id | ||||
|   is_direct_child   = parent_id == status.in_reply_to_id | ||||
|   centered        ||= include_threads && !is_predecessor && !is_successor | ||||
|   h_class           = microformats_h_class(status, is_predecessor, is_successor, include_threads) | ||||
|   style_classes     = style_classes(status, is_predecessor, is_successor, include_threads) | ||||
|   mf_classes        = microformats_classes(status, is_direct_parent, is_direct_child) | ||||
|   entry_classes     = "#{h_class} #{mf_classes} #{style_classes}" | ||||
| 
 | ||||
| - if status.reply? && include_threads | ||||
|   - if @next_ancestor | ||||
|     .entry{ class: entry_classes } | ||||
|       = link_to_older ActivityPub::TagManager.instance.url_for(@next_ancestor) | ||||
| 
 | ||||
|   = render partial: 'statuses/status', collection: @ancestors, as: :status, locals: { is_predecessor: true, direct_reply_id: status.in_reply_to_id } | ||||
| 
 | ||||
| .entry{ class: entry_classes } | ||||
| 
 | ||||
|   - if status.reblog? | ||||
|     .status__prepend | ||||
|       .status__prepend-icon-wrapper | ||||
|         %i.status__prepend-icon.fa.fa-fw.fa-retweet | ||||
|       %span | ||||
|         = link_to ActivityPub::TagManager.instance.url_for(status.account), class: 'status__display-name muted' do | ||||
|           %bdi | ||||
|             %strong.emojify= display_name(status.account, custom_emojify: true) | ||||
|         = t('stream_entries.reblogged') | ||||
|   - elsif pinned | ||||
|     .status__prepend | ||||
|       .status__prepend-icon-wrapper | ||||
|         %i.status__prepend-icon.fa.fa-fw.fa-thumb-tack | ||||
|       %span | ||||
|         = t('stream_entries.pinned') | ||||
| 
 | ||||
|   = render (centered ? 'statuses/detailed_status' : 'statuses/simple_status'), status: status.proper, hide_show_thread: is_predecessor || is_successor | ||||
| 
 | ||||
| - if include_threads | ||||
|   - if @since_descendant_thread_id | ||||
|     .entry{ class: entry_classes } | ||||
|       = link_to_newer short_account_status_url(status.account.username, status, max_descendant_thread_id: @since_descendant_thread_id + 1) | ||||
|   - @descendant_threads.each do |thread| | ||||
|     = render partial: 'statuses/status', collection: thread[:statuses], as: :status, locals: { is_successor: true, parent_id: status.id } | ||||
| 
 | ||||
|     - if thread[:next_status] | ||||
|       .entry{ class: entry_classes } | ||||
|         = link_to_newer ActivityPub::TagManager.instance.url_for(thread[:next_status]) | ||||
|   - if @next_descendant_thread | ||||
|     .entry{ class: entry_classes } | ||||
|       = link_to_newer short_account_status_url(status.account.username, status, since_descendant_thread_id: @max_descendant_thread_id - 1) | ||||
| 
 | ||||
| - if include_threads && !embedded_view? && !user_signed_in? | ||||
|   .entry{ class: entry_classes } | ||||
|     = link_to_login class: 'load-more load-gap' do | ||||
|       = fa_icon 'comments' | ||||
|       = t('statuses.sign_in_to_participate') | ||||
| .entry | ||||
|   = render (centered ? 'statuses/detailed_status' : 'statuses/simple_status'), status: status.proper, hide_show_thread: false | ||||
|  |  | |||
|  | @ -9,7 +9,7 @@ if Rails.env.production? | |||
|   data_hosts = [assets_host] | ||||
| 
 | ||||
|   if ENV['S3_ENABLED'] == 'true' | ||||
|     attachments_host = "https://#{ENV['S3_ALIAS_HOST'] || ENV['S3_CLOUDFRONT_HOST'] || ENV['S3_HOSTNAME'] || "s3-#{ENV['S3_REGION'] || 'us-east-1'}.amazonaws.com"}" | ||||
|     attachments_host = "https://#{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 = "https://#{Addressable::URI.parse(attachments_host).host}" | ||||
|   elsif ENV['SWIFT_ENABLED'] == 'true' | ||||
|     attachments_host = ENV['SWIFT_OBJECT_URL'] | ||||
|  |  | |||
|  | @ -131,6 +131,26 @@ elsif ENV['SWIFT_ENABLED'] == 'true' | |||
|     fog_host: ENV['SWIFT_OBJECT_URL'], | ||||
|     fog_public: true | ||||
|   ) | ||||
| elsif ENV['AZURE_ENABLED'] == 'true' | ||||
|   require 'paperclip-azure' | ||||
| 
 | ||||
|   Paperclip::Attachment.default_options.merge!( | ||||
|     storage: :azure, | ||||
|     azure_options: { | ||||
|       protocol: 'https', | ||||
|     }, | ||||
|     azure_credentials: { | ||||
|       storage_account_name: ENV['AZURE_STORAGE_ACCOUNT'], | ||||
|       storage_access_key: ENV['AZURE_STORAGE_ACCESS_KEY'], | ||||
|       container: ENV['AZURE_CONTAINER_NAME'], | ||||
|     } | ||||
|   ) | ||||
|   if ENV.has_key?('AZURE_ALIAS_HOST') | ||||
|     Paperclip::Attachment.default_options.merge!( | ||||
|       url: ':azure_alias_url', | ||||
|       azure_host_alias: ENV['AZURE_ALIAS_HOST'] | ||||
|     ) | ||||
|   end | ||||
| else | ||||
|   Paperclip::Attachment.default_options.merge!( | ||||
|     storage: :filesystem, | ||||
|  |  | |||
|  | @ -1488,7 +1488,6 @@ an: | |||
|     show_newer: Amostrar mas recients | ||||
|     show_older: Amostrar mas antigos | ||||
|     show_thread: Amostrar discusión | ||||
|     sign_in_to_participate: Rechistra-te pa participar en a conversación | ||||
|     title: "%{name}: «%{quote}»" | ||||
|     visibilities: | ||||
|       direct: Directa | ||||
|  | @ -1533,8 +1532,6 @@ an: | |||
|     min_reblogs: Mantener publicacions reblogueadas mas de | ||||
|     min_reblogs_hint: No borra garra d'as publicacions que haigan estau reblogueadas mas d'este numero de vegadas. Deixa en blanco pa eliminar publicacions sin importar lo numero de reblogueos | ||||
|   stream_entries: | ||||
|     pinned: Publicación fixada | ||||
|     reblogged: retutau | ||||
|     sensitive_content: Conteniu sensible | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1623,7 +1623,6 @@ ar: | |||
|     show_newer: إظهار أحدث | ||||
|     show_older: إظهار أقدم | ||||
|     show_thread: اعرض خيط المحادثة | ||||
|     sign_in_to_participate: قم بتسجيل الدخول للمشاركة في هذه المحادثة | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: مباشرة | ||||
|  | @ -1669,8 +1668,6 @@ ar: | |||
|     min_reblogs: إبقاء المشاركات المعززة أكثر من | ||||
|     min_reblogs_hint: لن تُحذف أي من منشوراتك التي أعيد مشاركتها أكثر من هذا العدد من المرات. اتركه فارغاً لحذف المنشورات بغض النظر عن عدد إعادات المشاركة | ||||
|   stream_entries: | ||||
|     pinned: منشور مثبّت | ||||
|     reblogged: شارَكَه | ||||
|     sensitive_content: محتوى حساس | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1698,7 +1698,6 @@ be: | |||
|     show_newer: Паказаць навейшыя | ||||
|     show_older: Паказаць старэйшыя | ||||
|     show_thread: Паказаць ланцуг | ||||
|     sign_in_to_participate: Зарэгіструйцеся каб удзельнічаць у абмеркаванні | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Асабіста | ||||
|  | @ -1744,8 +1743,6 @@ be: | |||
|     min_reblogs: Захаваць допісы, якія пашырылі хаця б | ||||
|     min_reblogs_hint: Не выдаляе вашыя допісы, якія пашырыла прынамсі вызначаная колькасць людзей. Пакіньце гэтае поле пустым, каб допісы выдаляліся незалежна ад гэтай колькасці | ||||
|   stream_entries: | ||||
|     pinned: Замацаваны допіс | ||||
|     reblogged: пашыраны | ||||
|     sensitive_content: Далікатны змест | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ bg: | |||
|     show_newer: Показване на по-нови | ||||
|     show_older: Показване на по-стари | ||||
|     show_thread: Показване на нишката | ||||
|     sign_in_to_participate: Влезте, за да участвате в разговора | ||||
|     title: "%{name}: „%{quote}“" | ||||
|     visibilities: | ||||
|       direct: Директно | ||||
|  | @ -1680,8 +1679,6 @@ bg: | |||
|     min_reblogs: Запазване на публикации с поне толкова споделяния | ||||
|     min_reblogs_hint: Не се изтриват ваши публикации, споделени поне толкова пъти. Оставете празно, за да изтриете публикациите независимо от техния брой споделяния | ||||
|   stream_entries: | ||||
|     pinned: Закачена публикация | ||||
|     reblogged: подсилено | ||||
|     sensitive_content: Деликатно съдържание | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -502,9 +502,6 @@ br: | |||
|       '604800': 1 sizhunvezh | ||||
|       '63113904': 2 vloavezh | ||||
|       '7889238': 3 months | ||||
|   stream_entries: | ||||
|     pinned: Toud spilhennet | ||||
|     reblogged: en·he deus skignet | ||||
|   themes: | ||||
|     default: Mastodoñ (Teñval) | ||||
|     mastodon-light: Mastodoñ (Sklaer) | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ ca: | |||
|     show_newer: Mostra els més nous | ||||
|     show_older: Mostra els més vells | ||||
|     show_thread: Mostra el fil | ||||
|     sign_in_to_participate: Inicia la sessió per participar a la conversa | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Directe | ||||
|  | @ -1680,8 +1679,6 @@ ca: | |||
|     min_reblogs: Mantenir les publicacions impulsades més de | ||||
|     min_reblogs_hint: No suprimeix cap de les teves publicacions que s'hagin impulsat més que aquest nombre de vegades. Deixa-ho en blanc per a suprimir les publicacions independentment del nombre d'impulsos que tinguin. | ||||
|   stream_entries: | ||||
|     pinned: Publicació fixada | ||||
|     reblogged: ha impulsat | ||||
|     sensitive_content: Contingut sensible | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -996,7 +996,6 @@ ckb: | |||
|     show_newer: نوێتر پیشان بدە | ||||
|     show_older: پیشاندانی کۆنتر | ||||
|     show_thread: نیشاندانی ڕشتە | ||||
|     sign_in_to_participate: بچۆ ژوورەوە بۆ بەشداریکردن لە گفتوگۆکەدا | ||||
|     visibilities: | ||||
|       private: شوێنکەوتوانی تەنها | ||||
|       private_long: تەنها بۆ شوێنکەوتوانی پیشان بدە | ||||
|  | @ -1005,8 +1004,6 @@ ckb: | |||
|       unlisted: پێرست نەبووە | ||||
|       unlisted_long: هەموو کەس دەتوانێت بیبینێت، بەڵام لە هێڵی کاتی گشتی دا نەریزراوە | ||||
|   stream_entries: | ||||
|     pinned: توتی چەسپکراو | ||||
|     reblogged: بەهێزکردن | ||||
|     sensitive_content: ناوەڕۆکی هەستیار | ||||
|   tags: | ||||
|     does_not_match_previous_name: لەگەڵ ناوی پێشوو یەک ناگرێتەوە | ||||
|  |  | |||
|  | @ -983,7 +983,6 @@ co: | |||
|     show_newer: Vede i più ricenti | ||||
|     show_older: Vede i più anziani | ||||
|     show_thread: Vede u filu | ||||
|     sign_in_to_participate: Cunnettatevi per participà à a cunversazione | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Direttu | ||||
|  | @ -1021,8 +1020,6 @@ co: | |||
|     min_reblogs: Cunservà i statuti spartuti più di | ||||
|     min_reblogs_hint: Ùn sguassa micca i vostri statuti chì anu ricevuti più chì stu numeru di spartere. Lasciate viotu per sguassà i statuti senza piglià in contu u numaru di spartere | ||||
|   stream_entries: | ||||
|     pinned: Statutu puntarulatu | ||||
|     reblogged: hà spartutu | ||||
|     sensitive_content: Cuntenutu sensibile | ||||
|   tags: | ||||
|     does_not_match_previous_name: ùn currisponde micca à l'anzianu nome | ||||
|  |  | |||
|  | @ -1642,7 +1642,6 @@ cs: | |||
|     show_newer: Zobrazit novější | ||||
|     show_older: Zobrazit starší | ||||
|     show_thread: Zobrazit vlákno | ||||
|     sign_in_to_participate: Chcete-li se zúčastnit této konverzace, přihlaste se | ||||
|     title: "%{name}: „%{quote}“" | ||||
|     visibilities: | ||||
|       direct: Přímé | ||||
|  | @ -1688,8 +1687,6 @@ cs: | |||
|     min_reblogs: Zachovat příspěvky boostnuté alespoň | ||||
|     min_reblogs_hint: Nesmaže žádný z vašich příspěvků, který byl boostnut alespoň tolikrát. Ponechte prázdné pro mazání příspěvků bez ohledu na počet jejich boostnutí | ||||
|   stream_entries: | ||||
|     pinned: Připnutý příspěvek | ||||
|     reblogged: boostnul | ||||
|     sensitive_content: Citlivý obsah | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1762,7 +1762,6 @@ cy: | |||
|     show_newer: Dangos y diweddaraf | ||||
|     show_older: Dangos pethau hŷn | ||||
|     show_thread: Dangos trywydd | ||||
|     sign_in_to_participate: Mengofnodwch i gymryd rhan yn y sgwrs | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Uniongyrchol | ||||
|  | @ -1808,8 +1807,6 @@ cy: | |||
|     min_reblogs: Cadw postiadau wedi eu hybu o leiaf | ||||
|     min_reblogs_hint: Nid yw'n dileu unrhyw un o'ch postiadau sydd wedi cael eu hybu o leiaf y nifer hwn o weithiau. Gadewch yn wag i ddileu postiadau waeth beth fo'u nifer o hybiadau | ||||
|   stream_entries: | ||||
|     pinned: Postiad wedi'i binio | ||||
|     reblogged: hybwyd | ||||
|     sensitive_content: Cynnwys sensitif | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ da: | |||
|     show_newer: Vis nyere | ||||
|     show_older: Vis ældre | ||||
|     show_thread: Vis tråd | ||||
|     sign_in_to_participate: Log ind for at deltage i konversationen | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Direkte | ||||
|  | @ -1680,8 +1679,6 @@ da: | |||
|     min_reblogs: Behold indlæg boostet mindst | ||||
|     min_reblogs_hint: Sletter ingen egne indlæg, som er boostet flere end dette antal gange. Lad stå tomt for at ignorere denne tærskel under sletning | ||||
|   stream_entries: | ||||
|     pinned: Fastgjort indlæg | ||||
|     reblogged: boostet | ||||
|     sensitive_content: Sensitivt indhold | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ de: | |||
|     show_newer: Neuere anzeigen | ||||
|     show_older: Ältere anzeigen | ||||
|     show_thread: Thread anzeigen | ||||
|     sign_in_to_participate: Melde dich an, um an der Unterhaltung teilzunehmen | ||||
|     title: "%{name}: „%{quote}“" | ||||
|     visibilities: | ||||
|       direct: Direktnachricht | ||||
|  | @ -1680,8 +1679,6 @@ de: | |||
|     min_reblogs: Beiträge behalten, die mindestens so oft geteilt wurden | ||||
|     min_reblogs_hint: Löscht keine Beiträge, die mindestens so oft geteilt worden sind. Lass das Feld leer, um alle Beiträge – unabhängig der Anzahl an geteilten Beiträgen – zu löschen | ||||
|   stream_entries: | ||||
|     pinned: Angehefteter Beitrag | ||||
|     reblogged: teilte | ||||
|     sensitive_content: Inhaltswarnung | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1570,7 +1570,6 @@ el: | |||
|     show_newer: Εμφάνιση νεότερων | ||||
|     show_older: Εμφάνιση παλαιότερων | ||||
|     show_thread: Εμφάνιση νήματος | ||||
|     sign_in_to_participate: Συνδέσου για να συμμετάσχεις στη συζήτηση | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Άμεση | ||||
|  | @ -1616,8 +1615,6 @@ el: | |||
|     min_reblogs: Διατήρηση αναρτήσεων που έχουν ενισχυθεί τουλάχιστον | ||||
|     min_reblogs_hint: Δεν διαγράφει καμία από τις δημοσιεύσεις σας που έχει λάβει τουλάχιστον αυτόν τον αριθμό ενισχύσεων. Αφήστε κενό για να διαγράψετε δημοσιεύσεις ανεξάρτητα από τον αριθμό των ενισχύσεων | ||||
|   stream_entries: | ||||
|     pinned: Καρφιτσωμένη ανάρτηση | ||||
|     reblogged: ενισχύθηκε | ||||
|     sensitive_content: Ευαίσθητο περιεχόμενο | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ en-GB: | |||
|     show_newer: Show newer | ||||
|     show_older: Show older | ||||
|     show_thread: Show thread | ||||
|     sign_in_to_participate: Sign in to participate in the conversation | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Direct | ||||
|  | @ -1680,8 +1679,6 @@ en-GB: | |||
|     min_reblogs: Keep posts boosted at least | ||||
|     min_reblogs_hint: Doesn't delete any of your posts that has been boosted at least this number of times. Leave blank to delete posts regardless of their number of boosts | ||||
|   stream_entries: | ||||
|     pinned: Pinned post | ||||
|     reblogged: boosted | ||||
|     sensitive_content: Sensitive content | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -770,7 +770,7 @@ en: | |||
|           approved: Approval required for sign up | ||||
|           none: Nobody can sign up | ||||
|           open: Anyone can sign up | ||||
|       title: Server Settings | ||||
|       title: Server settings | ||||
|     site_uploads: | ||||
|       delete: Delete uploaded file | ||||
|       destroyed_msg: Site upload successfully deleted! | ||||
|  | @ -1635,7 +1635,6 @@ en: | |||
|     show_newer: Show newer | ||||
|     show_older: Show older | ||||
|     show_thread: Show thread | ||||
|     sign_in_to_participate: Login to participate in the conversation | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Direct | ||||
|  | @ -1681,8 +1680,6 @@ en: | |||
|     min_reblogs: Keep posts boosted at least | ||||
|     min_reblogs_hint: Doesn't delete any of your posts that has been boosted at least this number of times. Leave blank to delete posts regardless of their number of boosts | ||||
|   stream_entries: | ||||
|     pinned: Pinned post | ||||
|     reblogged: boosted | ||||
|     sensitive_content: Sensitive content | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1589,7 +1589,6 @@ eo: | |||
|     show_newer: Montri pli novajn | ||||
|     show_older: Montri pli malnovajn | ||||
|     show_thread: Montri la mesaĝaron | ||||
|     sign_in_to_participate: Ensalutu por partopreni la konversacion | ||||
|     title: "%{name}: “%{quote}”" | ||||
|     visibilities: | ||||
|       direct: Rekta | ||||
|  | @ -1635,8 +1634,6 @@ eo: | |||
|     min_reblogs: Konservi diskonitajn mesaĝojn almenau | ||||
|     min_reblogs_hint: Oni ne forigas viajn afiŝojn kiuj estas diskonigitaj almenaŭ ĉi tiun nombron da fojoj. Lasu malplena por forigi afiŝojn sendepende de iliaj nombroj da diskonigoj | ||||
|   stream_entries: | ||||
|     pinned: Fiksita afiŝo | ||||
|     reblogged: diskonigita | ||||
|     sensitive_content: Tikla enhavo | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ es-AR: | |||
|     show_newer: Mostrar más recientes | ||||
|     show_older: Mostrar más antiguos | ||||
|     show_thread: Mostrar hilo | ||||
|     sign_in_to_participate: Iniciá sesión para participar en la conversación | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Directo | ||||
|  | @ -1680,8 +1679,6 @@ es-AR: | |||
|     min_reblogs: Conservar adhesiones de por lo menos | ||||
|     min_reblogs_hint: No elimina ninguno de tus mensajes que haya recibido más de esta cantidad de adhesiones. Dejá en blanco para eliminar mensajes independientemente de su número de adhesiones. | ||||
|   stream_entries: | ||||
|     pinned: Mensaje fijado | ||||
|     reblogged: adhirió a este mensaje | ||||
|     sensitive_content: Contenido sensible | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ es-MX: | |||
|     show_newer: Mostrar más recientes | ||||
|     show_older: Mostrar más antiguos | ||||
|     show_thread: Mostrar discusión | ||||
|     sign_in_to_participate: Regístrate para participar en la conversación | ||||
|     title: "%{name}: «%{quote}»" | ||||
|     visibilities: | ||||
|       direct: Directa | ||||
|  | @ -1680,8 +1679,6 @@ es-MX: | |||
|     min_reblogs: Mantener publicaciones reblogueadas más de | ||||
|     min_reblogs_hint: No borra ninguna de las publicaciones que hayan sido reblogueadas más de este número de veces. Deja en blanco para eliminar publicaciones sin importar el número de reblogueos | ||||
|   stream_entries: | ||||
|     pinned: Toot fijado | ||||
|     reblogged: retooteado | ||||
|     sensitive_content: Contenido sensible | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ es: | |||
|     show_newer: Mostrar más recientes | ||||
|     show_older: Mostrar más antiguos | ||||
|     show_thread: Mostrar discusión | ||||
|     sign_in_to_participate: Inicia sesión para participar en la conversación | ||||
|     title: "%{name}: «%{quote}»" | ||||
|     visibilities: | ||||
|       direct: Directa | ||||
|  | @ -1680,8 +1679,6 @@ es: | |||
|     min_reblogs: Mantener publicaciones reblogueadas más de | ||||
|     min_reblogs_hint: No borra ninguna de las publicaciones que hayan sido reblogueadas más de este número de veces. Deja en blanco para eliminar publicaciones sin importar el número de reblogueos | ||||
|   stream_entries: | ||||
|     pinned: Publicación fijada | ||||
|     reblogged: impulsó | ||||
|     sensitive_content: Contenido sensible | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ et: | |||
|     show_newer: Uuemate kuvamine | ||||
|     show_older: Vanemate kuvamine | ||||
|     show_thread: Kuva lõim | ||||
|     sign_in_to_participate: Logi sisse, et liituda vestlusega | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Otsene | ||||
|  | @ -1682,8 +1681,6 @@ et: | |||
|     min_reblogs: Säilita postitused jagatud vähemalt | ||||
|     min_reblogs_hint: Ei kustuta postitusi, kui need on jagatud vähemalt nii mitu korda. Tühjaks jättes kustuvad postitused olenemata jagamistest | ||||
|   stream_entries: | ||||
|     pinned: Kinnitatud postitus | ||||
|     reblogged: jagatud | ||||
|     sensitive_content: Tundlik sisu | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1592,7 +1592,6 @@ eu: | |||
|     show_newer: Erakutsi berriagoak | ||||
|     show_older: Erakutsi zaharragoak | ||||
|     show_thread: Erakutsi haria | ||||
|     sign_in_to_participate: Eman izena elkarrizketan parte hartzeko | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Zuzena | ||||
|  | @ -1638,8 +1637,6 @@ eu: | |||
|     min_reblogs: Mantendu bultzada kopuru hau duten bidalketak | ||||
|     min_reblogs_hint: Gutxienez bultzada kopuru hau jaso duten zure bidalketak ez dira ezabatuko. Hutsik utziz gero bultzada kopurua ez da kontuan hartuko bidalketak ezabatzean | ||||
|   stream_entries: | ||||
|     pinned: Finkatutako bidalketa | ||||
|     reblogged: "(r)en bultzada" | ||||
|     sensitive_content: 'Kontuz: Eduki hunkigarria' | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1403,7 +1403,6 @@ fa: | |||
|     show_newer: نمایش جدیدتر | ||||
|     show_older: نمایش قدیمیتر | ||||
|     show_thread: نمایش رشته | ||||
|     sign_in_to_participate: برای شرکت در گفتگو وارد حساب خود شوید | ||||
|     title: "%{name}: «%{quote}»" | ||||
|     visibilities: | ||||
|       direct: مستقیم | ||||
|  | @ -1449,8 +1448,6 @@ fa: | |||
|     min_reblogs: نگه داشتن فرستههایی با تقویت بیش از | ||||
|     min_reblogs_hint: هیچ یک از فرستههایتان را که بیش از این تعداد تقویت شده باشند، حذف نمیکند. برای حذف فرستهها فارغ از تعداد تقویتهایشان، خالی بگذارید | ||||
|   stream_entries: | ||||
|     pinned: نوشتههای ثابت | ||||
|     reblogged: تقویت شده | ||||
|     sensitive_content: محتوای حساس | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ fi: | |||
|     show_newer: Näytä uudemmat | ||||
|     show_older: Näytä vanhempi | ||||
|     show_thread: Näytä ketju | ||||
|     sign_in_to_participate: Kirjaudu osallistuaksesi keskusteluun | ||||
|     title: "%{name}: ”%{quote}”" | ||||
|     visibilities: | ||||
|       direct: Suoraan | ||||
|  | @ -1680,8 +1679,6 @@ fi: | |||
|     min_reblogs: Pidä viestit tehostettuna vähintään | ||||
|     min_reblogs_hint: Ei poista yhtään viestiäsi, jota on tehostettu vähintään näin monta kertaa. Jätä tyhjäksi poistaaksesi viestejä riippumatta niiden tehosteiden määrästä | ||||
|   stream_entries: | ||||
|     pinned: Kiinnitetty tuuttaus | ||||
|     reblogged: tehosti | ||||
|     sensitive_content: Arkaluontoista sisältöä | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ fo: | |||
|     show_newer: Vís nýggjari | ||||
|     show_older: Vís eldri | ||||
|     show_thread: Vís tráð | ||||
|     sign_in_to_participate: Rita inn fyri at luttaka í samrøðuni | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Beinleiðis | ||||
|  | @ -1680,8 +1679,6 @@ fo: | |||
|     min_reblogs: Varðveit postar, sum eru stimbraðir í minsta lagi | ||||
|     min_reblogs_hint: Strikar ikki postar hjá tær, sum eru stimbraðir í minsta lagi so ofta. Lat vera blankt, um postar skulu strikast óansæð, hvussu ofta teir eru stimbraðir | ||||
|   stream_entries: | ||||
|     pinned: Festir postar | ||||
|     reblogged: stimbraður | ||||
|     sensitive_content: Viðkvæmt innihald | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ fr-QC: | |||
|     show_newer: Plus récents | ||||
|     show_older: Plus anciens | ||||
|     show_thread: Afficher le fil de discussion | ||||
|     sign_in_to_participate: Inscrivez-vous pour prendre part à la conversation | ||||
|     title: "%{name} : « %{quote} »" | ||||
|     visibilities: | ||||
|       direct: Direct | ||||
|  | @ -1680,8 +1679,6 @@ fr-QC: | |||
|     min_reblogs: Conserver les messages partagés au moins | ||||
|     min_reblogs_hint: Ne supprime aucun de vos messages qui ont été partagés au moins ce nombre de fois. Laisser vide pour supprimer les messages indépendamment de leur nombre de partages | ||||
|   stream_entries: | ||||
|     pinned: Message épinglé | ||||
|     reblogged: a partagé | ||||
|     sensitive_content: Contenu sensible | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ fr: | |||
|     show_newer: Plus récents | ||||
|     show_older: Plus anciens | ||||
|     show_thread: Afficher le fil de discussion | ||||
|     sign_in_to_participate: Inscrivez-vous pour prendre part à la conversation | ||||
|     title: "%{name} : « %{quote} »" | ||||
|     visibilities: | ||||
|       direct: Direct | ||||
|  | @ -1680,8 +1679,6 @@ fr: | |||
|     min_reblogs: Conserver les messages partagés au moins | ||||
|     min_reblogs_hint: Ne supprime aucun de vos messages qui ont été partagés au moins ce nombre de fois. Laisser vide pour supprimer les messages indépendamment de leur nombre de partages | ||||
|   stream_entries: | ||||
|     pinned: Message épinglé | ||||
|     reblogged: a partagé | ||||
|     sensitive_content: Contenu sensible | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ fy: | |||
|     show_newer: Nijere toane | ||||
|     show_older: Aldere toane | ||||
|     show_thread: Petear toane | ||||
|     sign_in_to_participate: Meld jo oan om oan dit petear mei te dwaan | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Direkt | ||||
|  | @ -1680,8 +1679,6 @@ fy: | |||
|     min_reblogs: Berjochten dy’t op syn minst safolle kear boost binne behâlde | ||||
|     min_reblogs_hint: Smyt gjin berjochten dy’t op syn minst safolle kear boost binne fuort. Lit leech om berjochten likefolle it tal boosts fuort te smiten | ||||
|   stream_entries: | ||||
|     pinned: Fêstsette berjocht | ||||
|     reblogged: boostte | ||||
|     sensitive_content: Gefoelige ynhâld | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -501,7 +501,6 @@ ga: | |||
|       '63113904': 2 bhliain | ||||
|       '7889238': 3 mhí | ||||
|   stream_entries: | ||||
|     pinned: Postáil pionnáilte | ||||
|     sensitive_content: Ábhar íogair | ||||
|   two_factor_authentication: | ||||
|     edit: Cuir in eagar | ||||
|  |  | |||
|  | @ -1698,7 +1698,6 @@ gd: | |||
|     show_newer: Seall feadhainn as ùire | ||||
|     show_older: Seall feadhainn as sine | ||||
|     show_thread: Seall an snàithlean | ||||
|     sign_in_to_participate: Clàraich a-steach a ghabhail pàirt sa chòmhradh | ||||
|     title: "%{name}: “%{quote}”" | ||||
|     visibilities: | ||||
|       direct: Dìreach | ||||
|  | @ -1744,8 +1743,6 @@ gd: | |||
|     min_reblogs: Cùm na tha ’ga bhrosnachadh le co-dhiù | ||||
|     min_reblogs_hint: Cha dèid gin dhe na postaichean agad a sguabadh às a tha ’gam brosnachadh an àireamh de thursan seo air a char as lugha. Fàg seo bàn airson postaichean a sguabadh às ge b’ e co mheud turas a tha iad ’gam brosnachadh | ||||
|   stream_entries: | ||||
|     pinned: Post prìnichte | ||||
|     reblogged: "’ga bhrosnachadh" | ||||
|     sensitive_content: Susbaint fhrionasach | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ gl: | |||
|     show_newer: Mostrar o máis novo | ||||
|     show_older: Mostrar o máis vello | ||||
|     show_thread: Amosar fío | ||||
|     sign_in_to_participate: Accede e participa na conversa | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Directa | ||||
|  | @ -1680,8 +1679,6 @@ gl: | |||
|     min_reblogs: Manter publicacións promovidas máis de | ||||
|     min_reblogs_hint: Non elimina ningunha das túas publicacións se foron promovidas máis deste número de veces. Deixa en branco para eliminar publicacións independentemente do seu número de promocións | ||||
|   stream_entries: | ||||
|     pinned: Publicación fixada | ||||
|     reblogged: promoveu | ||||
|     sensitive_content: Contido sensible | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1698,7 +1698,6 @@ he: | |||
|     show_newer: הצג חדשים יותר | ||||
|     show_older: הצג ישנים יותר | ||||
|     show_thread: הצג שרשור | ||||
|     sign_in_to_participate: הכנס כדי להשתתף בשיחה | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: ישיר | ||||
|  | @ -1744,8 +1743,6 @@ he: | |||
|     min_reblogs: שמור הודעות מהודהדות לפחות | ||||
|     min_reblogs_hint: לא מוחק מי מהודעותיך שקיבלו לפחות את המספר הזה של הדהודים. להשאיר ריק כדי למחוק הודעות ללא קשר למספר ההדהודים שקיבלו | ||||
|   stream_entries: | ||||
|     pinned: הודעה נעוצה | ||||
|     reblogged: הודהד | ||||
|     sensitive_content: תוכן רגיש | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -207,7 +207,6 @@ hr: | |||
|       public: Javno | ||||
|       unlisted: Neprikazano | ||||
|   stream_entries: | ||||
|     reblogged: boostano | ||||
|     sensitive_content: Osjetljivi sadržaj | ||||
|   two_factor_authentication: | ||||
|     disable: Onemogući 2FA | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ hu: | |||
|     show_newer: Újabbak mutatása | ||||
|     show_older: Régebbiek mutatása | ||||
|     show_thread: Szál mutatása | ||||
|     sign_in_to_participate: Bejelentkezés a beszélgetésben részvételhez | ||||
|     title: "%{name}: „%{quote}”" | ||||
|     visibilities: | ||||
|       direct: Közvetlen | ||||
|  | @ -1680,8 +1679,6 @@ hu: | |||
|     min_reblogs: Bejegyzések megtartása, melyeket többször toltak meg, mint | ||||
|     min_reblogs_hint: Egyetlen olyan bejegyzésedet sem törli, melyet ennél többször toltak meg. Hagyd üresen, hogy a megtolások számától függetlenül töröljük a bejegyzéseket | ||||
|   stream_entries: | ||||
|     pinned: Kitűzött bejegyzés | ||||
|     reblogged: megtolta | ||||
|     sensitive_content: Kényes tartalom | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -802,7 +802,6 @@ hy: | |||
|     show_newer: Ցուցադրել նորերը | ||||
|     show_older: Ցուցադրել հները | ||||
|     show_thread: Բացել շղթան | ||||
|     sign_in_to_participate: Մուտք գործէք՝ զրոյցին միանալու համար | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Հասցէագրուած | ||||
|  | @ -824,8 +823,6 @@ hy: | |||
|       '63113904': 2 տարի | ||||
|       '7889238': 3 ամիս | ||||
|   stream_entries: | ||||
|     pinned: Ամրացուած գրառում | ||||
|     reblogged: տարածուած | ||||
|     sensitive_content: Կասկածելի բովանդակութիւն | ||||
|   themes: | ||||
|     contrast: Mastodon (բարձր կոնտրաստով) | ||||
|  |  | |||
|  | @ -1448,7 +1448,6 @@ id: | |||
|     show_newer: Tampilkan lebih baru | ||||
|     show_older: Tampilkan lebih lama | ||||
|     show_thread: Tampilkan utas | ||||
|     sign_in_to_participate: Masuk untuk mengikuti percakapan | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Langsung | ||||
|  | @ -1493,8 +1492,6 @@ id: | |||
|     min_reblogs: Simpan kiriman yang di-boost lebih dari | ||||
|     min_reblogs_hint: Tidak menghapus kiriman Anda yang di-boost lebih dari sekian kali. Kosongkan bila ingin menghapus kiriman tanpa peduli jumlah boost-nya | ||||
|   stream_entries: | ||||
|     pinned: Kiriman tersemat | ||||
|     reblogged: di-boost-kan | ||||
|     sensitive_content: Konten sensitif | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1437,7 +1437,6 @@ io: | |||
|     show_newer: Montrez plu nova kozo | ||||
|     show_older: Montrez plu olda kozo | ||||
|     show_thread: Montrez postaro | ||||
|     sign_in_to_participate: Registrez por partoprenar en konverso | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Direta | ||||
|  | @ -1482,8 +1481,6 @@ io: | |||
|     min_reblogs: Retenez bustita posti mine | ||||
|     min_reblogs_hint: Ne efacas irga vua posti quo bustigesos mine ca foyoquanto. Restez quale vakua por efacar posti sen suciar olia foyoquanto | ||||
|   stream_entries: | ||||
|     pinned: Pinglagita posto | ||||
|     reblogged: diskonocigita | ||||
|     sensitive_content: Titiliva kontenajo | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1638,7 +1638,6 @@ is: | |||
|     show_newer: Sýna nýrri | ||||
|     show_older: Sýna eldri | ||||
|     show_thread: Birta þráð | ||||
|     sign_in_to_participate: Skráðu þig inn til að taka þátt í samtalinu | ||||
|     title: "%{name}: „%{quote}‟" | ||||
|     visibilities: | ||||
|       direct: Beint | ||||
|  | @ -1684,8 +1683,6 @@ is: | |||
|     min_reblogs: Halda færslum sem eru endurbirtar oftar en | ||||
|     min_reblogs_hint: Eyðir ekki þínum eigin færslum sem endurbirtar hafa verið þetta oft. Skildu þetta eftir autt til að eyða færslum burtséð frá fjölda endurbirtinga | ||||
|   stream_entries: | ||||
|     pinned: Fest færsla | ||||
|     reblogged: endurbirt | ||||
|     sensitive_content: Viðkvæmt efni | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1636,7 +1636,6 @@ it: | |||
|     show_newer: Mostra più nuovi | ||||
|     show_older: Mostra più vecchi | ||||
|     show_thread: Mostra thread | ||||
|     sign_in_to_participate: Accedi per partecipare alla conversazione | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Diretto | ||||
|  | @ -1682,8 +1681,6 @@ it: | |||
|     min_reblogs: Conserva i post condivisi più di | ||||
|     min_reblogs_hint: Non cancella nessuno dei tuoi post che è stato condiviso più di questo numero di volte. Lascia vuoto per cancellare i post indipendentemente dal loro numero di condivisioni | ||||
|   stream_entries: | ||||
|     pinned: Post fissato in cima | ||||
|     reblogged: condiviso | ||||
|     sensitive_content: Materiale sensibile | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1602,7 +1602,6 @@ ja: | |||
|     show_newer: 新しいものを表示 | ||||
|     show_older: 古いものを表示 | ||||
|     show_thread: スレッドを表示 | ||||
|     sign_in_to_participate: ログインして会話に参加 | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: ダイレクト | ||||
|  | @ -1648,8 +1647,6 @@ ja: | |||
|     min_reblogs: ブーストの基準値 | ||||
|     min_reblogs_hint: この数以上、ブーストされた投稿を削除せずに残します。空白にしておくと、ブーストされた数に関わらず投稿を削除します。 | ||||
|   stream_entries: | ||||
|     pinned: 固定された投稿 | ||||
|     reblogged: さんがブースト | ||||
|     sensitive_content: 閲覧注意 | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -457,7 +457,6 @@ ka: | |||
|       ownership: სხვისი ტუტი ვერ აიპინება | ||||
|       reblog: ბუსტი ვერ აიპინება | ||||
|     show_more: მეტის ჩვენება | ||||
|     sign_in_to_participate: საუბარში მონაწილეობისთვის გაიარეთ ავტორიზაცია | ||||
|     visibilities: | ||||
|       private: მხოლოდ-მიმდევრები | ||||
|       private_long: აჩვენე მხოლოდ მიმდევრებს | ||||
|  | @ -466,8 +465,6 @@ ka: | |||
|       unlisted: ჩამოუთვლელი | ||||
|       unlisted_long: ხედავს ყველა, მაგრამ არ ჩანს საჯარო თაიმლაინებში | ||||
|   stream_entries: | ||||
|     pinned: აპინული ტუტი | ||||
|     reblogged: გაზრდილი | ||||
|     sensitive_content: მგრძნობიარე კონტენტი | ||||
|   themes: | ||||
|     contrast: მაღალი კონტრასტი | ||||
|  |  | |||
|  | @ -713,7 +713,6 @@ kab: | |||
|     show_more: Ssken-d ugar | ||||
|     show_newer: Ssken-d timaynutin | ||||
|     show_thread: Ssken-d lxiḍ | ||||
|     sign_in_to_participate: Qqen i waken ad tzeddiḍ deg udiwenni | ||||
|     title: '%{name} : "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Usrid | ||||
|  | @ -733,7 +732,6 @@ kab: | |||
|       '63113904': 2 n yiseggasen | ||||
|       '7889238': 3 n wayyuren | ||||
|   stream_entries: | ||||
|     pinned: Tijewwiqt yettwasentḍen | ||||
|     sensitive_content: Agbur amḥulfu | ||||
|   themes: | ||||
|     contrast: Maṣṭudun (agnil awriran) | ||||
|  |  | |||
|  | @ -691,7 +691,6 @@ kk: | |||
|       vote: Дауыс беру | ||||
|     show_more: Тағы әкел | ||||
|     show_thread: Тақырыпты көрсет | ||||
|     sign_in_to_participate: Сұхбатқа қатысу үшін кіріңіз | ||||
|     visibilities: | ||||
|       private: Тек оқырмандарға | ||||
|       private_long: Тек оқырмандарға ғана көрінеді | ||||
|  | @ -700,8 +699,6 @@ kk: | |||
|       unlisted: Тізімге енбеген | ||||
|       unlisted_long: Бәрі көре алады, бірақ ашық тізімдерге ене алмайды | ||||
|   stream_entries: | ||||
|     pinned: Жабыстырылған жазба | ||||
|     reblogged: бөлісті | ||||
|     sensitive_content: Нәзік мазмұн | ||||
|   tags: | ||||
|     does_not_match_previous_name: алдыңғы атқа сәйкес келмейді | ||||
|  |  | |||
|  | @ -1604,7 +1604,6 @@ ko: | |||
|     show_newer: 새로운 것 표시 | ||||
|     show_older: 오래된 것 표시 | ||||
|     show_thread: 글타래 보기 | ||||
|     sign_in_to_participate: 대화에 참여 위해 로그인 하기 | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: 다이렉트 | ||||
|  | @ -1650,8 +1649,6 @@ ko: | |||
|     min_reblogs: 해당 횟수 이상 부스트된 게시물 유지 | ||||
|     min_reblogs_hint: 이 횟수 이상의 부스트가 된 게시물은 삭제하지 않습니다. 부스트 수와 관계없이 게시물을 지우고 싶다면 공백으로 두세요 | ||||
|   stream_entries: | ||||
|     pinned: 고정된 게시물 | ||||
|     reblogged: 님이 부스트 했습니다 | ||||
|     sensitive_content: 민감한 내용 | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1482,7 +1482,6 @@ ku: | |||
|     show_newer: Nûtirîn nîşan bide | ||||
|     show_older: Kevntirîn nîşan bide | ||||
|     show_thread: Mijarê nîşan bide | ||||
|     sign_in_to_participate: Ji bo tevlî sohbetê bibî xwe tomar bike | ||||
|     title: "%{name}%{quote}" | ||||
|     visibilities: | ||||
|       direct: Rasterast | ||||
|  | @ -1527,8 +1526,6 @@ ku: | |||
|     min_reblogs: Şandiyên ku bêtir hatine bilindkirin veşêre | ||||
|     min_reblogs_hint: Şandî ku ji ji vê hejmarê bêtir bilindkirin wergirtibe nayê jêbirin. Vala bihêle da ku şandiyan jê bibî tevlî ku çiqas hezkirin wergirtibe | ||||
|   stream_entries: | ||||
|     pinned: Şandiya derzîkirî | ||||
|     reblogged: bilindkirî | ||||
|     sensitive_content: Naveroka hestiyarî | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -458,7 +458,6 @@ lt: | |||
|       ownership: Kitų vartotojų toot'ai negali būti prisegti | ||||
|       reblog: Pakeltos žinutės negali būti prisegtos | ||||
|     show_more: Daugiau | ||||
|     sign_in_to_participate: Prisijunkite jeigu norite dalyvauti pokalbyje | ||||
|     visibilities: | ||||
|       private: Tik sekėjams | ||||
|       private_long: Rodyti tik sekėjams | ||||
|  | @ -467,8 +466,6 @@ lt: | |||
|       unlisted: Neįtrauktas į sąrašus | ||||
|       unlisted_long: Matyti gali visi, tačiau nėra įtraukta į viešas laiko juostas | ||||
|   stream_entries: | ||||
|     pinned: Prisegtas toot'as | ||||
|     reblogged: pakeltas | ||||
|     sensitive_content: Jautrus turinys | ||||
|   themes: | ||||
|     contrast: Mastodon (Didelio Kontrasto) | ||||
|  |  | |||
|  | @ -1625,7 +1625,6 @@ lv: | |||
|     show_newer: Nekad nerādīt | ||||
|     show_older: Rādīt senākus | ||||
|     show_thread: Rādīt tematu | ||||
|     sign_in_to_participate: Lai piedalītos sarunā, pieraksties | ||||
|     title: "%{name}: “%{quote}”" | ||||
|     visibilities: | ||||
|       direct: Tiešs | ||||
|  | @ -1671,8 +1670,6 @@ lv: | |||
|     min_reblogs: Saglabāt ziņas izceltas vismaz | ||||
|     min_reblogs_hint: Neizdzēš nevienu no tavām ziņām, kas ir izceltas vismaz tik reižu. Atstāj tukšu, lai dzēstu ziņas neatkarīgi no to izcēlumu skaita | ||||
|   stream_entries: | ||||
|     pinned: Piespraustā ziņa | ||||
|     reblogged: izceltie | ||||
|     sensitive_content: Sensitīvs saturs | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -942,7 +942,6 @@ ms: | |||
|     edited_at_html: Disunting %{date} | ||||
|     poll: | ||||
|       vote: Undi | ||||
|     sign_in_to_participate: Daftar masuk untuk menyertai perbualan | ||||
|     visibilities: | ||||
|       direct: Terus | ||||
|       private: Pengikut sahaja | ||||
|  | @ -968,7 +967,6 @@ ms: | |||
|       '7889238': 3 bulan | ||||
|     min_favs: Simpan hantaran digemarkan sekurang-kurangnya | ||||
|   stream_entries: | ||||
|     pinned: Hantaran disemat | ||||
|     sensitive_content: Kandungan sensitif | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1602,7 +1602,6 @@ my: | |||
|     show_newer: ပို့စ်အသစ်များပြရန် | ||||
|     show_older: ပို့စ်အဟောင်းများပြရန် | ||||
|     show_thread: Thread ကို ပြပါ | ||||
|     sign_in_to_participate: စကားဝိုင်းတွင် ပါဝင်ရန် အကောင့်ဝင်ပါ | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: တိုက်ရိုက် | ||||
|  | @ -1648,8 +1647,6 @@ my: | |||
|     min_reblogs: အနည်းဆုံးအားဖြင့် Boost လုပ်ထားသည့်ပို့စ်များကို သိမ်းဆည်းပါ | ||||
|     min_reblogs_hint: အနည်းဆုံး ဤအကြိမ်အရေအတွက်ကို မြှင့်တင်ထားသည့် သင့်ပို့စ်များကို မဖျက်ပါ။ ၎င်းတို့၏ မြှင့်တင်မှုအရေအတွက်ကို မခွဲခြားဘဲ ပို့စ်များကို ဖျက်ရန် ချန်ထားပါ | ||||
|   stream_entries: | ||||
|     pinned: ပင်တွဲထားသောပို့စ် | ||||
|     reblogged: Boost လုပ်ခဲ့သည် | ||||
|     sensitive_content: သတိထားရသော အကြောင်းအရာ | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ nl: | |||
|     show_newer: Nieuwere tonen | ||||
|     show_older: Oudere tonen | ||||
|     show_thread: Gesprek tonen | ||||
|     sign_in_to_participate: Log in om deel te nemen aan het gesprek | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Privébericht | ||||
|  | @ -1680,8 +1679,6 @@ nl: | |||
|     min_reblogs: Berichten die minstens zoveel keer zijn geboost behouden | ||||
|     min_reblogs_hint: Verwijdert geen berichten die tenminste zoveel keer zijn geboost. Laat leeg om berichten ongeacht het aantal boosts te verwijderen | ||||
|   stream_entries: | ||||
|     pinned: Vastgemaakt bericht | ||||
|     reblogged: boostte | ||||
|     sensitive_content: Gevoelige inhoud | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1609,7 +1609,6 @@ nn: | |||
|     show_newer: Vis nyere | ||||
|     show_older: Vis eldre | ||||
|     show_thread: Vis tråden | ||||
|     sign_in_to_participate: Logg inn for å verta med i samtalen | ||||
|     title: "%{name}: «%{quote}»" | ||||
|     visibilities: | ||||
|       direct: Direkte | ||||
|  | @ -1655,8 +1654,6 @@ nn: | |||
|     min_reblogs: Behold innlegg fremhevet av minst | ||||
|     min_reblogs_hint: Sletter ikke noen av dine innlegg som har blitt fremhevet minst dette antall ganger. La stå tom for å slette innlegg uavhengig av antall fremhevinger | ||||
|   stream_entries: | ||||
|     pinned: Festa tut | ||||
|     reblogged: framheva | ||||
|     sensitive_content: Ømtolig innhald | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1556,7 +1556,6 @@ | |||
|     show_newer: Vis nyere | ||||
|     show_older: Vis eldre | ||||
|     show_thread: Vis tråden | ||||
|     sign_in_to_participate: Logg på for å delta i samtalen | ||||
|     title: "%{name}: «%{quote}»" | ||||
|     visibilities: | ||||
|       direct: Direkte | ||||
|  | @ -1602,8 +1601,6 @@ | |||
|     min_reblogs: Behold innlegg fremhevet av minst | ||||
|     min_reblogs_hint: Sletter ikke noen av dine innlegg som har blitt fremhevet minst dette antall ganger. La stå tom for å slette innlegg uavhengig av antall fremhevinger | ||||
|   stream_entries: | ||||
|     pinned: Festet innlegg | ||||
|     reblogged: fremhevet | ||||
|     sensitive_content: Følsomt innhold | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -890,7 +890,6 @@ oc: | |||
|     show_newer: Veire mai recents | ||||
|     show_older: Veire mai ancians | ||||
|     show_thread: Mostrar lo fil | ||||
|     sign_in_to_participate: Inscrivètz-vos per participar a la conversacion | ||||
|     title: '%{name} : "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Dirècte | ||||
|  | @ -933,8 +932,6 @@ oc: | |||
|     min_reblogs: Gardar las publicacions partejadas al mens | ||||
|     min_reblogs_hint: Suprimís pas vòstras publicacions qu’an agut aqueste nombre de partiment. Daissar blanc per suprimir las publicacions sens far cas als partiments | ||||
|   stream_entries: | ||||
|     pinned: Tut penjat | ||||
|     reblogged: a partejat | ||||
|     sensitive_content: Contengut sensible | ||||
|   tags: | ||||
|     does_not_match_previous_name: correspond pas al nom precedent | ||||
|  |  | |||
|  | @ -1698,7 +1698,6 @@ pl: | |||
|     show_newer: Pokaż nowsze | ||||
|     show_older: Pokaż starsze | ||||
|     show_thread: Pokaż wątek | ||||
|     sign_in_to_participate: Zaloguj się, aby udzielić się w tej konwersacji | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Bezpośredni | ||||
|  | @ -1744,8 +1743,6 @@ pl: | |||
|     min_reblogs: Utrzymuj posty wzmocnione więcej niż | ||||
|     min_reblogs_hint: Nie usuwa żadnego z Twoich wpisów, które zostały wzmocnione więcej niż tyle razy. Pozostaw puste, aby usunąć posty bez względu na ich liczbę wzmocnień | ||||
|   stream_entries: | ||||
|     pinned: Przypięty wpis | ||||
|     reblogged: podbił | ||||
|     sensitive_content: Wrażliwa zawartość | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ pt-BR: | |||
|     show_newer: Mostrar mais recentes | ||||
|     show_older: Mostrar mais antigos | ||||
|     show_thread: Mostrar conversa | ||||
|     sign_in_to_participate: Entre para participar dessa conversa | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Direto | ||||
|  | @ -1680,8 +1679,6 @@ pt-BR: | |||
|     min_reblogs: Manter publicações impulsionadas por ao menos | ||||
|     min_reblogs_hint: Não exclui publicações que receberam pelo menos esta quantidade de impulsos. Deixe em branco para excluir publicações independentemente da quantidade de impulsos | ||||
|   stream_entries: | ||||
|     pinned: Toot fixado | ||||
|     reblogged: deu boost | ||||
|     sensitive_content: Conteúdo sensível | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ pt-PT: | |||
|     show_newer: Mostrar mais recentes | ||||
|     show_older: Mostrar mais antigos | ||||
|     show_thread: Mostrar conversa | ||||
|     sign_in_to_participate: Inicie a sessão para participar na conversa | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Direto | ||||
|  | @ -1680,8 +1679,6 @@ pt-PT: | |||
|     min_reblogs: Manter as publicações reforçadas mais de | ||||
|     min_reblogs_hint: Não apaga nenhuma das suas publicações que tenha sido partilhada mais do que este número de vezes. Deixe em branco para apagar as publicações, independentemente do número de partilhas | ||||
|   stream_entries: | ||||
|     pinned: Publicação afixada | ||||
|     reblogged: reforçada | ||||
|     sensitive_content: Conteúdo problemático | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -679,7 +679,6 @@ ro: | |||
|       vote: Votează | ||||
|     show_more: Arată mai mult | ||||
|     show_thread: Arată discuția | ||||
|     sign_in_to_participate: Conectează-te pentru a participa la conversație | ||||
|     visibilities: | ||||
|       private: Doar urmăritorii | ||||
|       private_long: Arată doar urmăritorilor | ||||
|  | @ -687,8 +686,6 @@ ro: | |||
|       unlisted: Nelistat | ||||
|       unlisted_long: Toată lumea poate vedea, dar nu este listată pe fluxurile publice | ||||
|   stream_entries: | ||||
|     pinned: Postare fixată | ||||
|     reblogged: impulsionată | ||||
|     sensitive_content: Conținut sensibil | ||||
|   tags: | ||||
|     does_not_match_previous_name: nu se potrivește cu numele anterior | ||||
|  |  | |||
|  | @ -1674,7 +1674,6 @@ ru: | |||
|     show_newer: Показать более новое | ||||
|     show_older: Показать старые | ||||
|     show_thread: Открыть обсуждение | ||||
|     sign_in_to_participate: Войдите, чтобы принять участие в дискуссии | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Адресованный | ||||
|  | @ -1720,8 +1719,6 @@ ru: | |||
|     min_reblogs: Порог продвижений | ||||
|     min_reblogs_hint: Не удаляет ваши посты, количество продвижений которых достигло указанного выше значения. Оставьте поле пустым, чтобы удалять посты независимо от количества продвижений. | ||||
|   stream_entries: | ||||
|     pinned: Закреплённый пост | ||||
|     reblogged: продвинул(а) | ||||
|     sensitive_content: Содержимое деликатного характера | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -931,7 +931,6 @@ sc: | |||
|     show_newer: Ammustra is prus noos | ||||
|     show_older: Ammustra is prus betzos | ||||
|     show_thread: Ammustra su tema | ||||
|     sign_in_to_participate: Identìfica·ti pro partetzipare in s'arresonada | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Deretu | ||||
|  | @ -952,8 +951,6 @@ sc: | |||
|       '63113904': 2 annos | ||||
|       '7889238': 3 meses | ||||
|   stream_entries: | ||||
|     pinned: Tut apicadu | ||||
|     reblogged: cumpartzidu | ||||
|     sensitive_content: Cuntenutu sensìbile | ||||
|   tags: | ||||
|     does_not_match_previous_name: non cointzidet cun su nòmine anteriore | ||||
|  |  | |||
|  | @ -1472,7 +1472,6 @@ sco: | |||
|     show_newer: Shaw newer | ||||
|     show_older: Shaw aulder | ||||
|     show_thread: Shaw threid | ||||
|     sign_in_to_participate: Sign in fir tae tak pairt in the conversation | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Direck | ||||
|  | @ -1517,8 +1516,6 @@ sco: | |||
|     min_reblogs: Keep posts heezed at least | ||||
|     min_reblogs_hint: Disnae delete onie o yer posts thit's been heezed at least this nummer o times. Lea blank fir tae delete posts regairdless o their number o heezes | ||||
|   stream_entries: | ||||
|     pinned: Preent post | ||||
|     reblogged: heezed | ||||
|     sensitive_content: Sensitive content | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1265,7 +1265,6 @@ si: | |||
|     show_newer: අලුත්ම පෙන්වන්න | ||||
|     show_older: පැරණි පෙන්වන්න | ||||
|     show_thread: නූල් පෙන්වන්න | ||||
|     sign_in_to_participate: සංවාදයට සහභාගී වීමට පුරන්න | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: සෘජු | ||||
|  | @ -1310,8 +1309,6 @@ si: | |||
|     min_reblogs: අඩුම තරමේ පෝස්ට් බූස්ට් කරගෙන තියාගන්න | ||||
|     min_reblogs_hint: අඩුම තරමින් මෙම වාර ගණන වැඩි කර ඇති ඔබගේ පළ කිරීම් කිසිවක් මකා නොදමන්න. බූස්ට් ගණන නොතකා පළ කිරීම් මැකීමට හිස්ව තබන්න | ||||
|   stream_entries: | ||||
|     pinned: ඇමිණූ ලිපිය | ||||
|     reblogged: ඉහල නැංවීය | ||||
|     sensitive_content: සංවේදී අන්තර්ගතයකි | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1124,7 +1124,6 @@ sk: | |||
|       vote: Hlasuj | ||||
|     show_more: Ukáž viac | ||||
|     show_thread: Ukáž diskusné vlákno | ||||
|     sign_in_to_participate: Prihlás sa pre zapojenie do diskusie | ||||
|     title: '%{name}: „%{quote}"' | ||||
|     visibilities: | ||||
|       private: Iba pre sledovateľov | ||||
|  | @ -1138,8 +1137,6 @@ sk: | |||
|     keep_pinned_hint: Nevymaže žiadne s tvojich pripnutých príspevkov | ||||
|     keep_self_bookmark: Ponechaj príspevky, ktoré sú záložkami | ||||
|   stream_entries: | ||||
|     pinned: Pripnutý príspevok | ||||
|     reblogged: vyzdvihli | ||||
|     sensitive_content: Senzitívny obsah | ||||
|   tags: | ||||
|     does_not_match_previous_name: nezhoduje sa s predošlým názvom | ||||
|  |  | |||
|  | @ -1659,7 +1659,6 @@ sl: | |||
|     show_newer: Pokaži novejše | ||||
|     show_older: Pokaži starejše | ||||
|     show_thread: Pokaži nit | ||||
|     sign_in_to_participate: Prijavite se, če želite sodelovati v pogovoru | ||||
|     title: "%{name}: »%{quote}«" | ||||
|     visibilities: | ||||
|       direct: Neposredno | ||||
|  | @ -1705,8 +1704,6 @@ sl: | |||
|     min_reblogs: Obdrži objave izpostavljene vsaj | ||||
|     min_reblogs_hint: Ne izbriše nobene od vaših objav, ki je bila vsaj tolikokrat podprta. Pustite prazno, če želite izbrisati objave ne glede na število izpostavitev | ||||
|   stream_entries: | ||||
|     pinned: Pripeta objava | ||||
|     reblogged: izpostavljeno | ||||
|     sensitive_content: Občutljiva vsebina | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ sq: | |||
|     show_newer: Shfaq më të reja | ||||
|     show_older: Shfaq më të vjetra | ||||
|     show_thread: Shfaq rrjedhën | ||||
|     sign_in_to_participate: Bëni hyrjen, që të merrni pjesë te biseda | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: I drejtpërdrejtë | ||||
|  | @ -1680,8 +1679,6 @@ sq: | |||
|     min_reblogs: Mbaji postimet e përforcuara më shumë se | ||||
|     min_reblogs_hint: Nuk fshihet ndonjë nga postimet tuaja që kanë marrë më shumë se sa ky numër përforcimesh. Lëreni të zbrazët për të fshirë postimet, pavarësisht të numrit të përforcimeve për to | ||||
|   stream_entries: | ||||
|     pinned: Mesazh i fiksuar | ||||
|     reblogged: të përforcuara | ||||
|     sensitive_content: Lëndë rezervat | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1666,7 +1666,6 @@ sr-Latn: | |||
|     show_newer: Nikad ne prikazuj | ||||
|     show_older: Prikaži starije | ||||
|     show_thread: Prikaži niz | ||||
|     sign_in_to_participate: Prijavite se da učestvujete u razgovoru | ||||
|     title: "%{name}: „%{quote}”" | ||||
|     visibilities: | ||||
|       direct: Direktno | ||||
|  | @ -1712,8 +1711,6 @@ sr-Latn: | |||
|     min_reblogs: Zadrži objave podržane barem | ||||
|     min_reblogs_hint: Ne briše nijednu vašu objavu koja je bila podržana najmanje ovoliko puta. Ostavite prazno za brisanje objava bez obzira na njihov broj podržavanja | ||||
|   stream_entries: | ||||
|     pinned: Zakačena objava | ||||
|     reblogged: podržano | ||||
|     sensitive_content: Osetljiv sadržaj | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1666,7 +1666,6 @@ sr: | |||
|     show_newer: Никад не приказуј | ||||
|     show_older: Прикажи старије | ||||
|     show_thread: Прикажи низ | ||||
|     sign_in_to_participate: Пријавите се да учествујете у разговору | ||||
|     title: "%{name}: „%{quote}”" | ||||
|     visibilities: | ||||
|       direct: Директно | ||||
|  | @ -1712,8 +1711,6 @@ sr: | |||
|     min_reblogs: Задржи објаве подржане барем | ||||
|     min_reblogs_hint: Не брише ниједну вашу објаву која је била подржана најмање оволико пута. Оставите празно за брисање објава без обзира на њихов број подржавања | ||||
|   stream_entries: | ||||
|     pinned: Закачена објава | ||||
|     reblogged: подржано | ||||
|     sensitive_content: Осетљив садржај | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1570,7 +1570,6 @@ sv: | |||
|     show_newer: Visa nyare | ||||
|     show_older: Visa äldre | ||||
|     show_thread: Visa tråd | ||||
|     sign_in_to_participate: Logga in för att delta i konversationen | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Direkt | ||||
|  | @ -1616,8 +1615,6 @@ sv: | |||
|     min_reblogs: Behåll boostade inlägg i minst | ||||
|     min_reblogs_hint: Raderar inte något av dina inlägg som har blivit boostat minst detta antal gånger. Lämna tomt för att radera inlägg oavsett antal boostar | ||||
|   stream_entries: | ||||
|     pinned: Fäst inlägg | ||||
|     reblogged: boostad | ||||
|     sensitive_content: Känsligt innehåll | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1602,7 +1602,6 @@ th: | |||
|     show_newer: แสดงที่ใหม่กว่า | ||||
|     show_older: แสดงที่เก่ากว่า | ||||
|     show_thread: แสดงกระทู้ | ||||
|     sign_in_to_participate: เข้าสู่ระบบเพื่อเข้าร่วมการสนทนา | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: โดยตรง | ||||
|  | @ -1648,8 +1647,6 @@ th: | |||
|     min_reblogs: เก็บโพสต์ที่ได้รับการดันอย่างน้อย | ||||
|     min_reblogs_hint: ไม่ลบโพสต์ใดก็ตามของคุณที่ได้รับจำนวนครั้งการดันอย่างน้อยเท่านี้ เว้นว่างไว้เพื่อลบโพสต์โดยไม่คำนึงถึงจำนวนการดันของโพสต์ | ||||
|   stream_entries: | ||||
|     pinned: โพสต์ที่ปักหมุด | ||||
|     reblogged: ดันแล้ว | ||||
|     sensitive_content: เนื้อหาที่ละเอียดอ่อน | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1634,7 +1634,6 @@ tr: | |||
|     show_newer: Yenileri göster | ||||
|     show_older: Eskileri göster | ||||
|     show_thread: Konuyu göster | ||||
|     sign_in_to_participate: Sohbete katılmak için oturum açın | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Doğrudan | ||||
|  | @ -1680,8 +1679,6 @@ tr: | |||
|     min_reblogs: Şundan daha fazla teşvik edilen gönderileri sakla | ||||
|     min_reblogs_hint: Bu belirtilenden daha fazla teşvik edilen gönderilerinizin herhangi birini silmez. Teşvik sayısından bağımsız olarak gönderilerin silinmesi için burayı boş bırakın | ||||
|   stream_entries: | ||||
|     pinned: Sabitlenmiş gönderi | ||||
|     reblogged: boostladı | ||||
|     sensitive_content: Hassas içerik | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1698,7 +1698,6 @@ uk: | |||
|     show_newer: Показати новіші | ||||
|     show_older: Показати давніші | ||||
|     show_thread: Відкрити обговорення | ||||
|     sign_in_to_participate: Увійдіть для участі в бесіді | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Особисто | ||||
|  | @ -1744,8 +1743,6 @@ uk: | |||
|     min_reblogs: Залишати дописи, поширені більше ніж | ||||
|     min_reblogs_hint: Не видаляти ваших дописів, що були поширені більш ніж вказану кількість разів. Залиште порожнім, щоб видаляти дописи, попри кількість їхніх поширень | ||||
|   stream_entries: | ||||
|     pinned: Закріплений допис | ||||
|     reblogged: поширив | ||||
|     sensitive_content: Дражливий зміст | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1602,7 +1602,6 @@ vi: | |||
|     show_newer: Mới hơn | ||||
|     show_older: Cũ hơn | ||||
|     show_thread: Trích nguyên văn | ||||
|     sign_in_to_participate: Đăng nhập để trả lời tút này | ||||
|     title: '%{name}: "%{quote}"' | ||||
|     visibilities: | ||||
|       direct: Nhắn riêng | ||||
|  | @ -1648,8 +1647,6 @@ vi: | |||
|     min_reblogs: Giữ những tút đã đăng lại lâu hơn | ||||
|     min_reblogs_hint: Những tút có lượt đăng lại nhiều hơn số này sẽ không bị xóa. Để trống nếu bạn muốn xóa hết | ||||
|   stream_entries: | ||||
|     pinned: Tút đã ghim | ||||
|     reblogged: đăng lại | ||||
|     sensitive_content: NSFW | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1602,7 +1602,6 @@ zh-CN: | |||
|     show_newer: 显示更新内容 | ||||
|     show_older: 显示更早内容 | ||||
|     show_thread: 显示全部对话 | ||||
|     sign_in_to_participate: 登录以加入对话 | ||||
|     title: "%{name}:“%{quote}”" | ||||
|     visibilities: | ||||
|       direct: 私信 | ||||
|  | @ -1648,8 +1647,6 @@ zh-CN: | |||
|     min_reblogs: 保留如下嘟文:转嘟数超过 | ||||
|     min_reblogs_hint: 转嘟数超过该阈值的的嘟文不会被删除。如果留空,则无论嘟文获得多少转嘟,都将被删除。 | ||||
|   stream_entries: | ||||
|     pinned: 置顶嘟文 | ||||
|     reblogged: 转嘟 | ||||
|     sensitive_content: 敏感内容 | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1507,7 +1507,6 @@ zh-HK: | |||
|     show_newer: 顯示較新嘟文 | ||||
|     show_older: 顯示較舊嘟文 | ||||
|     show_thread: 顯示討論串 | ||||
|     sign_in_to_participate: 登入以加入討論 | ||||
|     title: "%{name}:「%{quote}」" | ||||
|     visibilities: | ||||
|       direct: 私人訊息 | ||||
|  | @ -1553,8 +1552,6 @@ zh-HK: | |||
|     min_reblogs: 保留超過嘟文轉嘟門檻 | ||||
|     min_reblogs_hint: 如果您嘟文已收到超過轉嘟門檻則不會刪除。留白表示不論轉嘟數量皆刪除嘟文。 | ||||
|   stream_entries: | ||||
|     pinned: 置頂文章 | ||||
|     reblogged: 轉推 | ||||
|     sensitive_content: 敏感內容 | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -1606,7 +1606,6 @@ zh-TW: | |||
|     show_newer: 顯示較新嘟文 | ||||
|     show_older: 顯示較舊嘟文 | ||||
|     show_thread: 顯示討論串 | ||||
|     sign_in_to_participate: 登入以加入討論 | ||||
|     title: "%{name}:「%{quote}」" | ||||
|     visibilities: | ||||
|       direct: 私訊 | ||||
|  | @ -1652,8 +1651,6 @@ zh-TW: | |||
|     min_reblogs: 保留超過嘟文轉嘟門檻 | ||||
|     min_reblogs_hint: 如果您嘟文已收到超過轉嘟門檻則不會刪除。留白表示不論轉嘟數量皆刪除該嘟文。 | ||||
|   stream_entries: | ||||
|     pinned: 釘選嘟文 | ||||
|     reblogged: 轉嘟 | ||||
|     sensitive_content: 敏感內容 | ||||
|   strikes: | ||||
|     errors: | ||||
|  |  | |||
|  | @ -10,6 +10,12 @@ describe Api::V1::Statuses::ReblogsController do | |||
|   let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'write:statuses', application: app) } | ||||
| 
 | ||||
|   context 'with an oauth token' do | ||||
|     around do |example| | ||||
|       Sidekiq::Testing.fake! do | ||||
|         example.run | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     before do | ||||
|       allow(controller).to receive(:doorkeeper_token) { token } | ||||
|     end | ||||
|  |  | |||
|  | @ -13,5 +13,6 @@ Fabricator(:account) do | |||
|   suspended_at        { |attrs| attrs[:suspended] ? Time.now.utc : nil } | ||||
|   silenced_at         { |attrs| attrs[:silenced] ? Time.now.utc : nil } | ||||
|   user                { |attrs| attrs[:domain].nil? ? Fabricate.build(:user, account: nil) : nil } | ||||
|   uri                 { |attrs| attrs[:domain].nil? ? '' : "https://#{attrs[:domain]}/users/#{attrs[:username]}" } | ||||
|   discoverable        true | ||||
| end | ||||
|  |  | |||
|  | @ -114,129 +114,4 @@ describe StatusesHelper do | |||
|     params[:controller] = StatusesHelper::EMBEDDED_CONTROLLER | ||||
|     params[:action] = StatusesHelper::EMBEDDED_ACTION | ||||
|   end | ||||
| 
 | ||||
|   describe '#style_classes' do | ||||
|     it do | ||||
|       status = instance_double(Status, reblog?: false) | ||||
|       classes = helper.style_classes(status, false, false, false) | ||||
| 
 | ||||
|       expect(classes).to eq 'entry' | ||||
|     end | ||||
| 
 | ||||
|     it do | ||||
|       status = instance_double(Status, reblog?: true) | ||||
|       classes = helper.style_classes(status, false, false, false) | ||||
| 
 | ||||
|       expect(classes).to eq 'entry entry-reblog' | ||||
|     end | ||||
| 
 | ||||
|     it do | ||||
|       status = instance_double(Status, reblog?: false) | ||||
|       classes = helper.style_classes(status, true, false, false) | ||||
| 
 | ||||
|       expect(classes).to eq 'entry entry-predecessor' | ||||
|     end | ||||
| 
 | ||||
|     it do | ||||
|       status = instance_double(Status, reblog?: false) | ||||
|       classes = helper.style_classes(status, false, true, false) | ||||
| 
 | ||||
|       expect(classes).to eq 'entry entry-successor' | ||||
|     end | ||||
| 
 | ||||
|     it do | ||||
|       status = instance_double(Status, reblog?: false) | ||||
|       classes = helper.style_classes(status, false, false, true) | ||||
| 
 | ||||
|       expect(classes).to eq 'entry entry-center' | ||||
|     end | ||||
| 
 | ||||
|     it do | ||||
|       status = instance_double(Status, reblog?: true) | ||||
|       classes = helper.style_classes(status, true, true, true) | ||||
| 
 | ||||
|       expect(classes).to eq 'entry entry-predecessor entry-reblog entry-successor entry-center' | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe '#microformats_classes' do | ||||
|     it do | ||||
|       status = instance_double(Status, reblog?: false) | ||||
|       classes = helper.microformats_classes(status, false, false) | ||||
| 
 | ||||
|       expect(classes).to eq '' | ||||
|     end | ||||
| 
 | ||||
|     it do | ||||
|       status = instance_double(Status, reblog?: false) | ||||
|       classes = helper.microformats_classes(status, true, false) | ||||
| 
 | ||||
|       expect(classes).to eq 'p-in-reply-to' | ||||
|     end | ||||
| 
 | ||||
|     it do | ||||
|       status = instance_double(Status, reblog?: false) | ||||
|       classes = helper.microformats_classes(status, false, true) | ||||
| 
 | ||||
|       expect(classes).to eq 'p-comment' | ||||
|     end | ||||
| 
 | ||||
|     it do | ||||
|       status = instance_double(Status, reblog?: true) | ||||
|       classes = helper.microformats_classes(status, true, false) | ||||
| 
 | ||||
|       expect(classes).to eq 'p-in-reply-to p-repost-of' | ||||
|     end | ||||
| 
 | ||||
|     it do | ||||
|       status = instance_double(Status, reblog?: true) | ||||
|       classes = helper.microformats_classes(status, true, true) | ||||
| 
 | ||||
|       expect(classes).to eq 'p-in-reply-to p-repost-of p-comment' | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe '#microformats_h_class' do | ||||
|     it do | ||||
|       status = instance_double(Status, reblog?: false) | ||||
|       css_class = helper.microformats_h_class(status, false, false, false) | ||||
| 
 | ||||
|       expect(css_class).to eq 'h-entry' | ||||
|     end | ||||
| 
 | ||||
|     it do | ||||
|       status = instance_double(Status, reblog?: true) | ||||
|       css_class = helper.microformats_h_class(status, false, false, false) | ||||
| 
 | ||||
|       expect(css_class).to eq 'h-cite' | ||||
|     end | ||||
| 
 | ||||
|     it do | ||||
|       status = instance_double(Status, reblog?: false) | ||||
|       css_class = helper.microformats_h_class(status, true, false, false) | ||||
| 
 | ||||
|       expect(css_class).to eq 'h-cite' | ||||
|     end | ||||
| 
 | ||||
|     it do | ||||
|       status = instance_double(Status, reblog?: false) | ||||
|       css_class = helper.microformats_h_class(status, false, true, false) | ||||
| 
 | ||||
|       expect(css_class).to eq 'h-cite' | ||||
|     end | ||||
| 
 | ||||
|     it do | ||||
|       status = instance_double(Status, reblog?: false) | ||||
|       css_class = helper.microformats_h_class(status, false, false, true) | ||||
| 
 | ||||
|       expect(css_class).to eq '' | ||||
|     end | ||||
| 
 | ||||
|     it do | ||||
|       status = instance_double(Status, reblog?: true) | ||||
|       css_class = helper.microformats_h_class(status, true, true, true) | ||||
| 
 | ||||
|       expect(css_class).to eq 'h-cite' | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -5,15 +5,15 @@ require 'rails_helper' | |||
| RSpec.describe AccountReachFinder do | ||||
|   let(:account) { Fabricate(:account) } | ||||
| 
 | ||||
|   let(:ap_follower_example_com) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.com/inbox-1') } | ||||
|   let(:ap_follower_example_org) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.org/inbox-2') } | ||||
|   let(:ap_follower_with_shared) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://foo.bar/users/a/inbox', shared_inbox_url: 'https://foo.bar/inbox') } | ||||
|   let(:ap_follower_example_com) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.com/inbox-1', domain: 'example.com') } | ||||
|   let(:ap_follower_example_org) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.org/inbox-2', domain: 'example.org') } | ||||
|   let(:ap_follower_with_shared) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://foo.bar/users/a/inbox', domain: 'foo.bar', shared_inbox_url: 'https://foo.bar/inbox') } | ||||
| 
 | ||||
|   let(:ap_mentioned_with_shared) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://foo.bar/users/b/inbox', shared_inbox_url: 'https://foo.bar/inbox') } | ||||
|   let(:ap_mentioned_example_com) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.com/inbox-3') } | ||||
|   let(:ap_mentioned_example_org) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.org/inbox-4') } | ||||
|   let(:ap_mentioned_with_shared) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://foo.bar/users/b/inbox', domain: 'foo.bar', shared_inbox_url: 'https://foo.bar/inbox') } | ||||
|   let(:ap_mentioned_example_com) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.com/inbox-3', domain: 'example.com') } | ||||
|   let(:ap_mentioned_example_org) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.org/inbox-4', domain: 'example.org') } | ||||
| 
 | ||||
|   let(:unrelated_account) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.com/unrelated-inbox') } | ||||
|   let(:unrelated_account) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.com/unrelated-inbox', domain: 'example.com') } | ||||
| 
 | ||||
|   before do | ||||
|     ap_follower_example_com.follow!(account) | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ require 'rails_helper' | |||
| RSpec.describe ActivityPub::Activity::Announce do | ||||
|   subject { described_class.new(json, sender) } | ||||
| 
 | ||||
|   let(:sender)    { Fabricate(:account, followers_url: 'http://example.com/followers', uri: 'https://example.com/actor') } | ||||
|   let(:sender)    { Fabricate(:account, followers_url: 'http://example.com/followers', uri: 'https://example.com/actor', domain: 'example.com') } | ||||
|   let(:recipient) { Fabricate(:account) } | ||||
|   let(:status)    { Fabricate(:status, account: recipient) } | ||||
| 
 | ||||
|  | @ -114,7 +114,7 @@ RSpec.describe ActivityPub::Activity::Announce do | |||
|     context 'when the sender is relayed' do | ||||
|       subject { described_class.new(json, sender, relayed_through_actor: relay_account) } | ||||
| 
 | ||||
|       let!(:relay_account) { Fabricate(:account, inbox_url: 'https://relay.example.com/inbox') } | ||||
|       let!(:relay_account) { Fabricate(:account, inbox_url: 'https://relay.example.com/inbox', domain: 'relay.example.com') } | ||||
|       let!(:relay) { Fabricate(:relay, inbox_url: 'https://relay.example.com/inbox') } | ||||
| 
 | ||||
|       let(:object_json) { 'https://example.com/actor/hello-world' } | ||||
|  |  | |||
|  | @ -5,22 +5,38 @@ require 'rails_helper' | |||
| RSpec.describe ActivityPub::Activity::Update do | ||||
|   subject { described_class.new(json, sender) } | ||||
| 
 | ||||
|   let!(:sender) { Fabricate(:account) } | ||||
| 
 | ||||
|   before do | ||||
|     sender.update!(uri: ActivityPub::TagManager.instance.uri_for(sender)) | ||||
|   end | ||||
|   let!(:sender) { Fabricate(:account, domain: 'example.com', inbox_url: 'https://example.com/foo/inbox', outbox_url: 'https://example.com/foo/outbox') } | ||||
| 
 | ||||
|   describe '#perform' do | ||||
|     context 'with an Actor object' do | ||||
|       let(:modified_sender) do | ||||
|         sender.tap do |modified_sender| | ||||
|           modified_sender.display_name = 'Totally modified now' | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       let(:actor_json) do | ||||
|         ActiveModelSerializers::SerializableResource.new(modified_sender, serializer: ActivityPub::ActorSerializer, adapter: ActivityPub::Adapter).as_json | ||||
|         { | ||||
|           '@context': [ | ||||
|             'https://www.w3.org/ns/activitystreams', | ||||
|             'https://w3id.org/security/v1', | ||||
|             { | ||||
|               manuallyApprovesFollowers: 'as:manuallyApprovesFollowers', | ||||
|               toot: 'http://joinmastodon.org/ns#', | ||||
|               featured: { '@id': 'toot:featured', '@type': '@id' }, | ||||
|               featuredTags: { '@id': 'toot:featuredTags', '@type': '@id' }, | ||||
|             }, | ||||
|           ], | ||||
|           id: sender.uri, | ||||
|           type: 'Person', | ||||
|           following: 'https://example.com/users/dfsdf/following', | ||||
|           followers: 'https://example.com/users/dfsdf/followers', | ||||
|           inbox: sender.inbox_url, | ||||
|           outbox: sender.outbox_url, | ||||
|           featured: 'https://example.com/users/dfsdf/featured', | ||||
|           featuredTags: 'https://example.com/users/dfsdf/tags', | ||||
|           preferredUsername: sender.username, | ||||
|           name: 'Totally modified now', | ||||
|           publicKey: { | ||||
|             id: "#{sender.uri}#main-key", | ||||
|             owner: sender.uri, | ||||
|             publicKeyPem: sender.public_key, | ||||
|           }, | ||||
|         } | ||||
|       end | ||||
| 
 | ||||
|       let(:json) do | ||||
|  | @ -28,7 +44,7 @@ RSpec.describe ActivityPub::Activity::Update do | |||
|           '@context': 'https://www.w3.org/ns/activitystreams', | ||||
|           id: 'foo', | ||||
|           type: 'Update', | ||||
|           actor: ActivityPub::TagManager.instance.uri_for(sender), | ||||
|           actor: sender.uri, | ||||
|           object: actor_json, | ||||
|         }.with_indifferent_access | ||||
|       end | ||||
|  | @ -38,6 +54,7 @@ RSpec.describe ActivityPub::Activity::Update do | |||
|         stub_request(:get, actor_json[:followers]).to_return(status: 404) | ||||
|         stub_request(:get, actor_json[:following]).to_return(status: 404) | ||||
|         stub_request(:get, actor_json[:featured]).to_return(status: 404) | ||||
|         stub_request(:get, actor_json[:featuredTags]).to_return(status: 404) | ||||
| 
 | ||||
|         subject.perform | ||||
|       end | ||||
|  | @ -49,17 +66,17 @@ RSpec.describe ActivityPub::Activity::Update do | |||
| 
 | ||||
|     context 'with a Question object' do | ||||
|       let!(:at_time) { Time.now.utc } | ||||
|       let!(:status) { Fabricate(:status, account: sender, poll: Poll.new(account: sender, options: %w(Bar Baz), cached_tallies: [0, 0], expires_at: at_time + 5.days)) } | ||||
|       let!(:status) { Fabricate(:status, uri: 'https://example.com/statuses/poll', account: sender, poll: Poll.new(account: sender, options: %w(Bar Baz), cached_tallies: [0, 0], expires_at: at_time + 5.days)) } | ||||
| 
 | ||||
|       let(:json) do | ||||
|         { | ||||
|           '@context': 'https://www.w3.org/ns/activitystreams', | ||||
|           id: 'foo', | ||||
|           type: 'Update', | ||||
|           actor: ActivityPub::TagManager.instance.uri_for(sender), | ||||
|           actor: sender.uri, | ||||
|           object: { | ||||
|             type: 'Question', | ||||
|             id: ActivityPub::TagManager.instance.uri_for(status), | ||||
|             id: status.uri, | ||||
|             content: 'Foo', | ||||
|             endTime: (at_time + 5.days).iso8601, | ||||
|             oneOf: [ | ||||
|  |  | |||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue