diff --git a/Gemfile b/Gemfile
index 27d65f2720..ef2644eb28 100644
--- a/Gemfile
+++ b/Gemfile
@@ -12,7 +12,7 @@ gem 'thor', '~> 0.20'
gem 'hamlit-rails', '~> 0.2'
gem 'pg', '~> 1.0'
gem 'makara', '~> 0.4'
-gem 'pghero', '~> 2.1'
+gem 'pghero', '~> 2.2'
gem 'dotenv-rails', '~> 2.2', '< 2.3'
gem 'aws-sdk-s3', '~> 1.9', require: false
@@ -24,13 +24,13 @@ gem 'streamio-ffmpeg', '~> 3.0'
gem 'active_model_serializers', '~> 0.10'
gem 'addressable', '~> 2.5'
-gem 'bootsnap', '~> 1.3'
+gem 'bootsnap', '~> 1.3', require: false
gem 'browser'
gem 'charlock_holmes', '~> 0.7.6'
gem 'iso-639'
gem 'chewy', '~> 5.0'
gem 'cld3', '~> 3.2.0'
-gem 'devise', '~> 4.4'
+gem 'devise', '~> 4.5'
gem 'devise-two-factor', '~> 3.0'
group :pam_authentication, optional: true do
@@ -57,12 +57,12 @@ gem 'httplog', '~> 1.0'
gem 'idn-ruby', require: 'idn'
gem 'kaminari', '~> 1.1'
gem 'link_header', '~> 0.0'
-gem 'mime-types', '~> 3.1', require: 'mime/types/columnar'
+gem 'mime-types', '~> 3.2', require: 'mime/types/columnar'
gem 'nokogiri', '~> 1.8'
gem 'nsa', '~> 0.2'
-gem 'oj', '~> 3.5'
+gem 'oj', '~> 3.6'
gem 'ostatus2', '~> 2.0'
-gem 'ox', '~> 2.9'
+gem 'ox', '~> 2.10'
gem 'posix-spawn', git: 'https://github.com/rtomayko/posix-spawn', ref: '58465d2e213991f8afb13b984854a49fcdcc980c'
gem 'pundit', '~> 1.1'
gem 'premailer-rails'
@@ -75,8 +75,8 @@ gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock'
gem 'rqrcode', '~> 0.10'
gem 'ruby-progressbar', '~> 1.4'
gem 'sanitize', '~> 4.6'
-gem 'sidekiq', '~> 5.1'
-gem 'sidekiq-scheduler', '~> 2.2'
+gem 'sidekiq', '~> 5.2'
+gem 'sidekiq-scheduler', '~> 3.0'
gem 'sidekiq-unique-jobs', '~> 5.0'
gem 'sidekiq-bulk', '~>0.1.1'
gem 'simple-navigation', '~> 4.0'
@@ -85,7 +85,7 @@ gem 'sprockets-rails', '~> 3.2', require: 'sprockets/railtie'
gem 'stoplight', '~> 2.1.3'
gem 'strong_migrations', '~> 0.2'
gem 'tty-command', '~> 0.8', require: false
-gem 'tty-prompt', '~> 0.16', require: false
+gem 'tty-prompt', '~> 0.17', require: false
gem 'twitter-text', '~> 1.14'
gem 'tzinfo-data', '~> 1.2018'
gem 'webpacker', '~> 3.5'
@@ -104,7 +104,7 @@ group :development, :test do
end
group :production, :test do
- gem 'private_address_check', '~> 0.4.1'
+ gem 'private_address_check', '~> 0.5'
end
group :test do
@@ -133,7 +133,7 @@ group :development do
gem 'bundler-audit', '~> 0.6', require: false
gem 'scss_lint', '~> 0.57', require: false
- gem 'capistrano', '~> 3.10'
+ gem 'capistrano', '~> 3.11'
gem 'capistrano-rails', '~> 1.3'
gem 'capistrano-rbenv', '~> 2.1'
gem 'capistrano-yarn', '~> 2.0'
diff --git a/Gemfile.lock b/Gemfile.lock
index e4e1c69df5..f7e4fcd97c 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -66,7 +66,7 @@ GEM
public_suffix (>= 2.0.2, < 4.0)
airbrussh (1.3.0)
sshkit (>= 1.6.1, != 1.7.0)
- annotate (2.7.3)
+ annotate (2.7.4)
activerecord (>= 3.2, < 6.0)
rake (>= 10.4, < 13.0)
arel (9.0.0)
@@ -96,7 +96,7 @@ GEM
rack (>= 0.9.0)
binding_of_caller (0.8.0)
debug_inspector (>= 0.0.1)
- bootsnap (1.3.0)
+ bootsnap (1.3.2)
msgpack (~> 1.0)
brakeman (4.2.1)
browser (2.5.3)
@@ -108,7 +108,7 @@ GEM
bundler (~> 1.2)
thor (~> 0.18)
byebug (10.0.2)
- capistrano (3.10.2)
+ capistrano (3.11.0)
airbrussh (>= 1.0.0)
i18n
rake (>= 10.0.0)
@@ -147,7 +147,7 @@ GEM
coderay (1.1.2)
colorize (0.8.1)
concurrent-ruby (1.0.5)
- connection_pool (2.2.1)
+ connection_pool (2.2.2)
crack (0.4.3)
safe_yaml (~> 1.0.0)
crass (1.0.4)
@@ -162,7 +162,7 @@ GEM
rack (>= 1)
rake (> 10, < 13)
thor (~> 0.19)
- devise (4.4.3)
+ devise (4.5.0)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0, < 6.0)
@@ -202,7 +202,7 @@ GEM
encryptor (3.0.0)
equatable (0.5.0)
erubi (1.7.1)
- et-orbi (1.1.0)
+ et-orbi (1.1.6)
tzinfo
excon (0.62.0)
fabrication (2.20.1)
@@ -212,7 +212,7 @@ GEM
multipart-post (>= 1.2, < 3)
fast_blank (1.0.0)
fastimage (2.1.1)
- ffi (1.9.23)
+ ffi (1.9.25)
fog-core (1.45.0)
builder
excon (~> 0.58)
@@ -225,6 +225,9 @@ GEM
fog-json (>= 1.0)
ipaddress (>= 0.8)
formatador (0.2.5)
+ fugit (1.1.6)
+ et-orbi (~> 1.1, >= 1.1.6)
+ raabro (~> 1.1)
fuubar (2.3.1)
rspec-core (~> 3.0)
ruby-progressbar (~> 1.4)
@@ -252,7 +255,7 @@ GEM
heapy (0.1.3)
highline (1.7.10)
hiredis (0.6.1)
- hitimes (1.2.6)
+ hitimes (1.3.0)
hkdf (0.3.0)
html2text (0.2.1)
nokogiri (~> 1.6)
@@ -328,14 +331,14 @@ GEM
mimemagic (~> 0.3.2)
mario-redis-lock (1.2.1)
redis (>= 3.0.5)
- memory_profiler (0.9.10)
+ memory_profiler (0.9.11)
method_source (0.9.0)
microformats (4.0.7)
json
nokogiri
- mime-types (3.1)
+ mime-types (3.2.2)
mime-types-data (~> 3.2015)
- mime-types-data (3.2016.0521)
+ mime-types-data (3.2018.0812)
mimemagic (0.3.2)
mini_mime (1.0.0)
mini_portile2 (2.3.0)
@@ -347,7 +350,7 @@ GEM
net-ldap (0.16.1)
net-scp (1.2.1)
net-ssh (>= 2.6.5)
- net-ssh (4.2.0)
+ net-ssh (5.0.2)
nio4r (2.3.1)
nokogiri (1.8.4)
mini_portile2 (~> 2.3.0)
@@ -358,7 +361,7 @@ GEM
concurrent-ruby (~> 1.0.0)
sidekiq (>= 3.5.0)
statsd-ruby (~> 1.2.0)
- oj (3.5.1)
+ oj (3.6.11)
omniauth (1.8.1)
hashie (>= 3.4.6, < 3.6.0)
rack (>= 1.6.2, < 3)
@@ -374,7 +377,7 @@ GEM
addressable (~> 2.5)
http (~> 3.0)
nokogiri (~> 1.8)
- ox (2.9.2)
+ ox (2.10.0)
paperclip (6.0.0)
activemodel (>= 4.2.0)
activesupport (>= 4.2.0)
@@ -393,9 +396,9 @@ GEM
equatable (~> 0.5.0)
tty-color (~> 0.4.0)
pg (1.0.0)
- pghero (2.1.0)
+ pghero (2.2.0)
activerecord
- pkg-config (1.3.0)
+ pkg-config (1.3.1)
powerpack (0.1.1)
premailer (1.11.1)
addressable
@@ -404,7 +407,7 @@ GEM
premailer-rails (1.10.2)
actionmailer (>= 3, < 6)
premailer (~> 1.7, >= 1.7.9)
- private_address_check (0.4.1)
+ private_address_check (0.5.0)
pry (0.11.3)
coderay (~> 1.1.0)
method_source (~> 0.9.0)
@@ -417,11 +420,12 @@ GEM
puma (3.11.4)
pundit (1.1.0)
activesupport (>= 3.0.0)
+ raabro (1.1.6)
rack (2.0.5)
rack-attack (5.2.0)
rack
rack-cors (1.0.2)
- rack-protection (2.0.1)
+ rack-protection (2.0.4)
rack
rack-proxy (0.6.4)
rack
@@ -528,10 +532,10 @@ GEM
ruby-progressbar (1.9.0)
ruby-saml (1.7.2)
nokogiri (>= 1.5.10)
- rufus-scheduler (3.4.2)
- et-orbi (~> 1.0)
+ rufus-scheduler (3.5.2)
+ fugit (~> 1.1, >= 1.1.5)
safe_yaml (1.0.4)
- sanitize (4.6.4)
+ sanitize (4.6.6)
crass (~> 1.0.2)
nokogiri (>= 1.4.4)
nokogumbo (~> 1.4)
@@ -543,15 +547,14 @@ GEM
scss_lint (0.57.0)
rake (>= 0.9, < 13)
sass (~> 3.5.5)
- sidekiq (5.1.3)
- concurrent-ruby (~> 1.0)
- connection_pool (~> 2.2, >= 2.2.0)
+ sidekiq (5.2.2)
+ connection_pool (~> 2.2, >= 2.2.2)
rack-protection (>= 1.5.0)
redis (>= 3.3.5, < 5)
sidekiq-bulk (0.1.1)
activesupport
sidekiq
- sidekiq-scheduler (2.2.1)
+ sidekiq-scheduler (3.0.0)
redis (>= 3, < 5)
rufus-scheduler (~> 3.2)
sidekiq (>= 3)
@@ -561,9 +564,9 @@ GEM
thor (~> 0)
simple-navigation (4.0.5)
activesupport (>= 2.3.2)
- simple_form (4.0.0)
- actionpack (> 4)
- activemodel (> 4)
+ simple_form (4.0.1)
+ actionpack (>= 5.0)
+ activemodel (>= 5.0)
simplecov (0.16.1)
docile (~> 1.1)
json (>= 1.8, < 3)
@@ -576,15 +579,15 @@ GEM
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
- sshkit (1.16.0)
+ sshkit (1.17.0)
net-scp (>= 1.1.2)
net-ssh (>= 2.8.0)
- stackprof (0.2.11)
+ stackprof (0.2.12)
statsd-ruby (1.2.1)
stoplight (2.1.3)
streamio-ffmpeg (3.0.2)
multi_json (~> 1.8)
- strong_migrations (0.2.2)
+ strong_migrations (0.2.3)
activerecord (>= 3.2.0)
temple (0.8.0)
terminal-table (1.8.0)
@@ -597,26 +600,26 @@ GEM
tilt (2.0.8)
timers (4.1.2)
hitimes
- tty-color (0.4.2)
- tty-command (0.8.0)
+ tty-color (0.4.3)
+ tty-command (0.8.2)
pastel (~> 0.7.0)
- tty-cursor (0.5.0)
- tty-prompt (0.16.0)
+ tty-cursor (0.6.0)
+ tty-prompt (0.17.0)
necromancer (~> 0.4.0)
pastel (~> 0.7.0)
timers (~> 4.0)
- tty-cursor (~> 0.5.0)
- tty-reader (~> 0.2.0)
- tty-reader (0.2.0)
- tty-cursor (~> 0.5.0)
+ tty-cursor (~> 0.6.0)
+ tty-reader (~> 0.4.0)
+ tty-reader (0.4.0)
+ tty-cursor (~> 0.6.0)
tty-screen (~> 0.6.4)
wisper (~> 2.0.0)
- tty-screen (0.6.4)
+ tty-screen (0.6.5)
twitter-text (1.14.7)
unf (~> 0.1.0)
tzinfo (1.2.5)
thread_safe (~> 0.1)
- tzinfo-data (1.2018.4)
+ tzinfo-data (1.2018.5)
tzinfo (>= 1.0.0)
unf (0.1.4)
unf_ext
@@ -659,7 +662,7 @@ DEPENDENCIES
browser
bullet (~> 5.7)
bundler-audit (~> 0.6)
- capistrano (~> 3.10)
+ capistrano (~> 3.11)
capistrano-rails (~> 1.3)
capistrano-rbenv (~> 2.1)
capistrano-yarn (~> 2.0)
@@ -669,7 +672,7 @@ DEPENDENCIES
cld3 (~> 3.2.0)
climate_control (~> 0.2)
derailed_benchmarks
- devise (~> 4.4)
+ devise (~> 4.5)
devise-two-factor (~> 3.0)
devise_pam_authenticatable2 (~> 9.2)
doorkeeper (~> 5.0)
@@ -703,25 +706,25 @@ DEPENDENCIES
mario-redis-lock (~> 1.2)
memory_profiler
microformats (~> 4.0)
- mime-types (~> 3.1)
+ mime-types (~> 3.2)
net-ldap (~> 0.10)
nokogiri (~> 1.8)
nsa (~> 0.2)
- oj (~> 3.5)
+ oj (~> 3.6)
omniauth (~> 1.2)
omniauth-cas (~> 1.1)
omniauth-saml (~> 1.10)
ostatus2 (~> 2.0)
- ox (~> 2.9)
+ ox (~> 2.10)
paperclip (~> 6.0)
paperclip-av-transcoder (~> 0.6)
parallel_tests (~> 2.21)
pg (~> 1.0)
- pghero (~> 2.1)
+ pghero (~> 2.2)
pkg-config (~> 1.3)
posix-spawn!
premailer-rails
- private_address_check (~> 0.4.1)
+ private_address_check (~> 0.5)
pry-byebug (~> 3.6)
pry-rails (~> 0.3)
puma (~> 3.11)
@@ -743,9 +746,9 @@ DEPENDENCIES
ruby-progressbar (~> 1.4)
sanitize (~> 4.6)
scss_lint (~> 0.57)
- sidekiq (~> 5.1)
+ sidekiq (~> 5.2)
sidekiq-bulk (~> 0.1.1)
- sidekiq-scheduler (~> 2.2)
+ sidekiq-scheduler (~> 3.0)
sidekiq-unique-jobs (~> 5.0)
simple-navigation (~> 4.0)
simple_form (~> 4.0)
@@ -757,7 +760,7 @@ DEPENDENCIES
strong_migrations (~> 0.2)
thor (~> 0.20)
tty-command (~> 0.8)
- tty-prompt (~> 0.16)
+ tty-prompt (~> 0.17)
twitter-text (~> 1.14)
tzinfo-data (~> 1.2018)
webmock (~> 3.3)
diff --git a/app/controllers/api/base_controller.rb b/app/controllers/api/base_controller.rb
index 90f42251e1..ac8de5fc0f 100644
--- a/app/controllers/api/base_controller.rb
+++ b/app/controllers/api/base_controller.rb
@@ -53,6 +53,10 @@ class Api::BaseController < ApplicationController
[params[:limit].to_i.abs, default_limit * 2].min
end
+ def params_slice(*keys)
+ params.slice(*keys).permit(*keys)
+ end
+
def current_resource_owner
@current_user ||= User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token
end
diff --git a/app/controllers/api/v1/accounts/statuses_controller.rb b/app/controllers/api/v1/accounts/statuses_controller.rb
index 06fa6c7623..b68a8805fa 100644
--- a/app/controllers/api/v1/accounts/statuses_controller.rb
+++ b/app/controllers/api/v1/accounts/statuses_controller.rb
@@ -28,10 +28,9 @@ class Api::V1::Accounts::StatusesController < Api::BaseController
def account_statuses
statuses = truthy_param?(:pinned) ? pinned_scope : permitted_account_statuses
- statuses = statuses.paginate_by_max_id(
+ statuses = statuses.paginate_by_id(
limit_param(DEFAULT_STATUSES_LIMIT),
- params[:max_id],
- params[:since_id]
+ params_slice(:max_id, :since_id, :min_id)
)
statuses.merge!(only_media_scope) if truthy_param?(:only_media)
@@ -82,7 +81,7 @@ class Api::V1::Accounts::StatusesController < Api::BaseController
def prev_path
unless @statuses.empty?
- api_v1_account_statuses_url pagination_params(since_id: pagination_since_id)
+ api_v1_account_statuses_url pagination_params(min_id: pagination_since_id)
end
end
diff --git a/app/controllers/api/v1/favourites_controller.rb b/app/controllers/api/v1/favourites_controller.rb
index ab5204355c..db827f9d4a 100644
--- a/app/controllers/api/v1/favourites_controller.rb
+++ b/app/controllers/api/v1/favourites_controller.rb
@@ -26,10 +26,9 @@ class Api::V1::FavouritesController < Api::BaseController
end
def results
- @_results ||= account_favourites.paginate_by_max_id(
+ @_results ||= account_favourites.paginate_by_id(
limit_param(DEFAULT_STATUSES_LIMIT),
- params[:max_id],
- params[:since_id]
+ params_slice(:max_id, :since_id, :min_id)
)
end
@@ -49,7 +48,7 @@ class Api::V1::FavouritesController < Api::BaseController
def prev_path
unless results.empty?
- api_v1_favourites_url pagination_params(since_id: pagination_since_id)
+ api_v1_favourites_url pagination_params(min_id: pagination_since_id)
end
end
diff --git a/app/controllers/api/v1/instances_controller.rb b/app/controllers/api/v1/instances_controller.rb
index 1c6971c182..5686e8d7c3 100644
--- a/app/controllers/api/v1/instances_controller.rb
+++ b/app/controllers/api/v1/instances_controller.rb
@@ -4,6 +4,8 @@ class Api::V1::InstancesController < Api::BaseController
respond_to :json
def show
- render json: {}, serializer: REST::InstanceSerializer
+ render_cached_json('api:v1:instances', expires_in: 5.minutes) do
+ ActiveModelSerializers::SerializableResource.new({}, serializer: REST::InstanceSerializer)
+ end
end
end
diff --git a/app/controllers/api/v1/notifications_controller.rb b/app/controllers/api/v1/notifications_controller.rb
index a8ed5a63b9..3b492c5163 100644
--- a/app/controllers/api/v1/notifications_controller.rb
+++ b/app/controllers/api/v1/notifications_controller.rb
@@ -46,10 +46,9 @@ class Api::V1::NotificationsController < Api::BaseController
end
def paginated_notifications
- browserable_account_notifications.paginate_by_max_id(
+ browserable_account_notifications.paginate_by_id(
limit_param(DEFAULT_NOTIFICATIONS_LIMIT),
- params[:max_id],
- params[:since_id]
+ params_slice(:max_id, :since_id, :min_id)
)
end
@@ -73,7 +72,7 @@ class Api::V1::NotificationsController < Api::BaseController
def prev_path
unless @notifications.empty?
- api_v1_notifications_url pagination_params(since_id: pagination_since_id)
+ api_v1_notifications_url pagination_params(min_id: pagination_since_id)
end
end
diff --git a/app/controllers/api/v1/reports_controller.rb b/app/controllers/api/v1/reports_controller.rb
index a954101cb8..9c6ee0a50c 100644
--- a/app/controllers/api/v1/reports_controller.rb
+++ b/app/controllers/api/v1/reports_controller.rb
@@ -7,11 +7,6 @@ class Api::V1::ReportsController < Api::BaseController
respond_to :json
- def index
- @reports = current_account.reports
- render json: @reports, each_serializer: REST::ReportSerializer
- end
-
def create
@report = ReportService.new.call(
current_account,
diff --git a/app/controllers/api/v1/timelines/home_controller.rb b/app/controllers/api/v1/timelines/home_controller.rb
index 4412aaaa39..fcd0757f1a 100644
--- a/app/controllers/api/v1/timelines/home_controller.rb
+++ b/app/controllers/api/v1/timelines/home_controller.rb
@@ -30,7 +30,8 @@ class Api::V1::Timelines::HomeController < Api::BaseController
account_home_feed.get(
limit_param(DEFAULT_STATUSES_LIMIT),
params[:max_id],
- params[:since_id]
+ params[:since_id],
+ params[:min_id]
)
end
@@ -51,7 +52,7 @@ class Api::V1::Timelines::HomeController < Api::BaseController
end
def prev_path
- api_v1_timelines_home_url pagination_params(since_id: pagination_since_id)
+ api_v1_timelines_home_url pagination_params(min_id: pagination_since_id)
end
def pagination_max_id
diff --git a/app/controllers/api/v1/timelines/list_controller.rb b/app/controllers/api/v1/timelines/list_controller.rb
index cfc5f3b5e4..a15eae468d 100644
--- a/app/controllers/api/v1/timelines/list_controller.rb
+++ b/app/controllers/api/v1/timelines/list_controller.rb
@@ -32,7 +32,8 @@ class Api::V1::Timelines::ListController < Api::BaseController
list_feed.get(
limit_param(DEFAULT_STATUSES_LIMIT),
params[:max_id],
- params[:since_id]
+ params[:since_id],
+ params[:min_id]
)
end
@@ -53,7 +54,7 @@ class Api::V1::Timelines::ListController < Api::BaseController
end
def prev_path
- api_v1_timelines_list_url params[:id], pagination_params(since_id: pagination_since_id)
+ api_v1_timelines_list_url params[:id], pagination_params(min_id: pagination_since_id)
end
def pagination_max_id
diff --git a/app/controllers/api/v1/timelines/public_controller.rb b/app/controllers/api/v1/timelines/public_controller.rb
index 13fe015b7d..aabe243243 100644
--- a/app/controllers/api/v1/timelines/public_controller.rb
+++ b/app/controllers/api/v1/timelines/public_controller.rb
@@ -21,10 +21,9 @@ class Api::V1::Timelines::PublicController < Api::BaseController
end
def public_statuses
- statuses = public_timeline_statuses.paginate_by_max_id(
+ statuses = public_timeline_statuses.paginate_by_id(
limit_param(DEFAULT_STATUSES_LIMIT),
- params[:max_id],
- params[:since_id]
+ params_slice(:max_id, :since_id, :min_id)
)
if truthy_param?(:only_media)
@@ -53,7 +52,7 @@ class Api::V1::Timelines::PublicController < Api::BaseController
end
def prev_path
- api_v1_timelines_public_url pagination_params(since_id: pagination_since_id)
+ api_v1_timelines_public_url pagination_params(min_id: pagination_since_id)
end
def pagination_max_id
diff --git a/app/controllers/api/v1/timelines/tag_controller.rb b/app/controllers/api/v1/timelines/tag_controller.rb
index 7de49a5ed6..cf58d5cf40 100644
--- a/app/controllers/api/v1/timelines/tag_controller.rb
+++ b/app/controllers/api/v1/timelines/tag_controller.rb
@@ -29,10 +29,9 @@ class Api::V1::Timelines::TagController < Api::BaseController
if @tag.nil?
[]
else
- statuses = tag_timeline_statuses.paginate_by_max_id(
+ statuses = tag_timeline_statuses.paginate_by_id(
limit_param(DEFAULT_STATUSES_LIMIT),
- params[:max_id],
- params[:since_id]
+ params_slice(:max_id, :since_id, :min_id)
)
if truthy_param?(:only_media)
@@ -62,7 +61,7 @@ class Api::V1::Timelines::TagController < Api::BaseController
end
def prev_path
- api_v1_timelines_tag_url params[:id], pagination_params(since_id: pagination_since_id)
+ api_v1_timelines_tag_url params[:id], pagination_params(min_id: pagination_since_id)
end
def pagination_max_id
diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb
index d60e6a89f9..5c5f31d2bb 100644
--- a/app/controllers/settings/preferences_controller.rb
+++ b/app/controllers/settings/preferences_controller.rb
@@ -37,7 +37,8 @@ class Settings::PreferencesController < Settings::BaseController
:setting_favourite_modal,
:setting_delete_modal,
:setting_auto_play_gif,
- :setting_display_sensitive_media,
+ :setting_display_media,
+ :setting_expand_spoilers,
:setting_reduce_motion,
:setting_system_font_ui,
:setting_noindex,
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 6b41fd36eb..c002017ef6 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -7,8 +7,8 @@ module ApplicationHelper
follow
).freeze
- def active_nav_class(path)
- current_page?(path) ? 'active' : ''
+ def active_nav_class(*paths)
+ paths.any? { |path| current_page?(path) } ? 'active' : ''
end
def active_link_to(label, path, **options)
diff --git a/app/javascript/flavours/glitch/components/media_gallery.js b/app/javascript/flavours/glitch/components/media_gallery.js
index 605a2862b6..6133181025 100644
--- a/app/javascript/flavours/glitch/components/media_gallery.js
+++ b/app/javascript/flavours/glitch/components/media_gallery.js
@@ -6,7 +6,7 @@ import IconButton from './icon_button';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
import { isIOS } from 'flavours/glitch/util/is_mobile';
import classNames from 'classnames';
-import { autoPlayGif, displaySensitiveMedia } from 'flavours/glitch/util/initial_state';
+import { autoPlayGif, displayMedia } from 'flavours/glitch/util/initial_state';
const messages = defineMessages({
hidden: {
@@ -226,7 +226,7 @@ export default class MediaGallery extends React.PureComponent {
};
state = {
- visible: this.props.revealed === undefined ? (!this.props.sensitive || displaySensitiveMedia) : this.props.revealed,
+ visible: this.props.revealed === undefined ? (displayMedia !== 'hide_all' && !this.props.sensitive || displayMedia === 'show_all') : this.props.revealed,
};
componentWillReceiveProps (nextProps) {
diff --git a/app/javascript/flavours/glitch/features/video/index.js b/app/javascript/flavours/glitch/features/video/index.js
index 5cbe01f268..227f298e4c 100644
--- a/app/javascript/flavours/glitch/features/video/index.js
+++ b/app/javascript/flavours/glitch/features/video/index.js
@@ -5,7 +5,7 @@ import { fromJS } from 'immutable';
import { throttle } from 'lodash';
import classNames from 'classnames';
import { isFullscreen, requestFullscreen, exitFullscreen } from 'flavours/glitch/util/fullscreen';
-import { displaySensitiveMedia } from 'flavours/glitch/util/initial_state';
+import { displayMedia } from 'flavours/glitch/util/initial_state';
const messages = defineMessages({
play: { id: 'video.play', defaultMessage: 'Play' },
@@ -114,7 +114,7 @@ export default class Video extends React.PureComponent {
fullscreen: false,
hovered: false,
muted: false,
- revealed: this.props.revealed === undefined ? (!this.props.sensitive || displaySensitiveMedia) : this.props.revealed,
+ revealed: this.props.revealed === undefined ? (displayMedia !== 'hide_all' && !this.props.sensitive || displayMedia === 'show_all') : this.props.revealed,
};
setPlayerRef = c => {
diff --git a/app/javascript/flavours/glitch/styles/about.scss b/app/javascript/flavours/glitch/styles/about.scss
index ba46c65c57..f676a8c776 100644
--- a/app/javascript/flavours/glitch/styles/about.scss
+++ b/app/javascript/flavours/glitch/styles/about.scss
@@ -16,7 +16,7 @@ $small-breakpoint: 960px;
}
.rich-formatting {
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
font-size: 16px;
font-weight: 400;
font-size: 16px;
@@ -31,7 +31,7 @@ $small-breakpoint: 960px;
p,
li {
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
font-size: 16px;
font-weight: 400;
font-size: 16px;
@@ -62,7 +62,7 @@ $small-breakpoint: 960px;
}
h1 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 26px;
line-height: 30px;
font-weight: 500;
@@ -70,7 +70,7 @@ $small-breakpoint: 960px;
color: $secondary-text-color;
small {
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
display: block;
font-size: 18px;
font-weight: 400;
@@ -79,7 +79,7 @@ $small-breakpoint: 960px;
}
h2 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 22px;
line-height: 26px;
font-weight: 500;
@@ -88,7 +88,7 @@ $small-breakpoint: 960px;
}
h3 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 18px;
line-height: 24px;
font-weight: 500;
@@ -97,7 +97,7 @@ $small-breakpoint: 960px;
}
h4 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 16px;
line-height: 24px;
font-weight: 500;
@@ -106,7 +106,7 @@ $small-breakpoint: 960px;
}
h5 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 14px;
line-height: 24px;
font-weight: 500;
@@ -115,7 +115,7 @@ $small-breakpoint: 960px;
}
h6 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 12px;
line-height: 24px;
font-weight: 500;
@@ -180,7 +180,7 @@ $small-breakpoint: 960px;
&__section {
flex: 1 0 0;
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
font-size: 16px;
line-height: 28px;
color: $primary-text-color;
@@ -221,7 +221,7 @@ $small-breakpoint: 960px;
bottom: -40px;
.panel-header {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 14px;
line-height: 24px;
font-weight: 500;
@@ -452,7 +452,7 @@ $small-breakpoint: 960px;
p,
li {
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
font-size: 16px;
font-weight: 400;
font-size: 16px;
@@ -501,7 +501,7 @@ $small-breakpoint: 960px;
}
h1 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 26px;
line-height: 30px;
font-weight: 500;
@@ -509,7 +509,7 @@ $small-breakpoint: 960px;
color: $secondary-text-color;
small {
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
display: block;
font-size: 18px;
font-weight: 400;
@@ -518,7 +518,7 @@ $small-breakpoint: 960px;
}
h2 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 22px;
line-height: 26px;
font-weight: 500;
@@ -527,7 +527,7 @@ $small-breakpoint: 960px;
}
h3 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 18px;
line-height: 24px;
font-weight: 500;
@@ -536,7 +536,7 @@ $small-breakpoint: 960px;
}
h4 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 16px;
line-height: 24px;
font-weight: 500;
@@ -545,7 +545,7 @@ $small-breakpoint: 960px;
}
h5 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 14px;
line-height: 24px;
font-weight: 500;
@@ -554,7 +554,7 @@ $small-breakpoint: 960px;
}
h6 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 12px;
line-height: 24px;
font-weight: 500;
@@ -621,7 +621,7 @@ $small-breakpoint: 960px;
.hero .heading {
padding-bottom: 20px;
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
font-size: 16px;
font-weight: 400;
font-size: 16px;
@@ -672,7 +672,7 @@ $small-breakpoint: 960px;
text-decoration: none;
padding: 12px 16px;
line-height: 32px;
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-weight: 500;
font-size: 14px;
@@ -745,7 +745,7 @@ $small-breakpoint: 960px;
.about-short {
background: darken($ui-base-color, 4%);
padding: 50px 0 30px;
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
font-size: 16px;
font-weight: 400;
font-size: 16px;
@@ -1015,7 +1015,7 @@ $small-breakpoint: 960px;
display: flex;
-webkit-overflow-scrolling: touch;
-ms-overflow-style: -ms-autohiding-scrollbar;
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
font-size: 13px;
line-height: 18px;
font-weight: 400;
diff --git a/app/javascript/flavours/glitch/styles/admin.scss b/app/javascript/flavours/glitch/styles/admin.scss
index b8cc330396..e16920dd4a 100644
--- a/app/javascript/flavours/glitch/styles/admin.scss
+++ b/app/javascript/flavours/glitch/styles/admin.scss
@@ -443,7 +443,7 @@ $no-columns-breakpoint: 600px;
border-radius: 0 0 4px 4px;
padding: 10px;
color: $darker-text-color;
- font-family: 'mastodon-font-monospace', monospace;
+ font-family: $font-monospace, monospace;
font-size: 12px;
word-wrap: break-word;
min-height: 20px;
diff --git a/app/javascript/flavours/glitch/styles/basics.scss b/app/javascript/flavours/glitch/styles/basics.scss
index 9c2499ac42..550b7fdfc9 100644
--- a/app/javascript/flavours/glitch/styles/basics.scss
+++ b/app/javascript/flavours/glitch/styles/basics.scss
@@ -6,7 +6,7 @@
}
body {
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
background: darken($ui-base-color, 8%);
font-size: 13px;
line-height: 18px;
@@ -29,8 +29,8 @@ body {
// Fira Sans => Firefox OS
// Droid Sans => Older Androids (<4.0)
// Helvetica Neue => Older macOS <10.11
- // mastodon-font-sans-serif => web-font (Roboto) fallback and newer Androids (>=4.0)
- font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", mastodon-font-sans-serif, sans-serif;
+ // $font-sans-serif => web-font (Roboto) fallback and newer Androids (>=4.0)
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", $font-sans-serif, sans-serif;
}
&.app-body {
diff --git a/app/javascript/flavours/glitch/styles/containers.scss b/app/javascript/flavours/glitch/styles/containers.scss
index d1b9934d71..398458e474 100644
--- a/app/javascript/flavours/glitch/styles/containers.scss
+++ b/app/javascript/flavours/glitch/styles/containers.scss
@@ -37,7 +37,7 @@
outline: 0;
padding: 12px 16px;
line-height: 32px;
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-weight: 500;
font-size: 14px;
}
@@ -633,7 +633,7 @@
font-size: 18px;
margin-bottom: 5px;
color: $primary-text-color;
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
}
}
diff --git a/app/javascript/flavours/glitch/styles/dashboard.scss b/app/javascript/flavours/glitch/styles/dashboard.scss
index 949ca733f4..86cf6c61b6 100644
--- a/app/javascript/flavours/glitch/styles/dashboard.scss
+++ b/app/javascript/flavours/glitch/styles/dashboard.scss
@@ -35,7 +35,7 @@
font-weight: 500;
font-size: 24px;
color: $primary-text-color;
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
margin-bottom: 20px;
}
diff --git a/app/javascript/flavours/glitch/styles/forms.scss b/app/javascript/flavours/glitch/styles/forms.scss
index cbd3de94c8..be2bf7cead 100644
--- a/app/javascript/flavours/glitch/styles/forms.scss
+++ b/app/javascript/flavours/glitch/styles/forms.scss
@@ -1,7 +1,7 @@
$no-columns-breakpoint: 600px;
code {
- font-family: 'mastodon-font-monospace', monospace;
+ font-family: $font-monospace, monospace;
font-weight: 400;
}
@@ -474,7 +474,7 @@ code {
width: 100%;
border: none;
padding: 10px;
- font-family: 'mastodon-font-monospace', monospace;
+ font-family: $font-monospace, monospace;
background: $ui-base-color;
color: $primary-text-color;
font-size: 14px;
@@ -718,7 +718,7 @@ code {
.form_admin_settings_custom_css,
.form_admin_settings_closed_registrations_message {
textarea {
- font-family: 'mastodon-font-monospace', monospace;
+ font-family: $font-monospace, monospace;
}
}
@@ -742,7 +742,7 @@ code {
border: 0;
padding: 10px;
font-size: 14px;
- font-family: 'mastodon-font-monospace', monospace;
+ font-family: $font-monospace, monospace;
}
button {
diff --git a/app/javascript/flavours/glitch/styles/rtl.scss b/app/javascript/flavours/glitch/styles/rtl.scss
index b8c0efad86..23953304a9 100644
--- a/app/javascript/flavours/glitch/styles/rtl.scss
+++ b/app/javascript/flavours/glitch/styles/rtl.scss
@@ -145,6 +145,19 @@ body.rtl {
margin-right: 6px;
}
+ .status__action-bar {
+
+ &__counter {
+ margin-right: 0;
+ margin-left: 11px;
+
+ .status__action-bar-button {
+ margin-right: 0;
+ margin-left: 4px;
+ }
+ }
+ }
+
.status__action-bar-button {
float: right;
margin-right: 0;
@@ -285,4 +298,13 @@ body.rtl {
}
}
}
+
+ .public-layout {
+ .header {
+ .nav-button {
+ margin-left: 8px;
+ margin-right: 0;
+ }
+ }
+ }
}
diff --git a/app/javascript/flavours/glitch/styles/tables.scss b/app/javascript/flavours/glitch/styles/tables.scss
index fa876e6031..9fd0b95bbe 100644
--- a/app/javascript/flavours/glitch/styles/tables.scss
+++ b/app/javascript/flavours/glitch/styles/tables.scss
@@ -90,7 +90,7 @@
}
samp {
- font-family: 'mastodon-font-monospace', monospace;
+ font-family: $font-monospace, monospace;
}
button.table-action-link {
diff --git a/app/javascript/flavours/glitch/styles/variables.scss b/app/javascript/flavours/glitch/styles/variables.scss
index 715ecf98f0..1ed1a57787 100644
--- a/app/javascript/flavours/glitch/styles/variables.scss
+++ b/app/javascript/flavours/glitch/styles/variables.scss
@@ -51,6 +51,10 @@ $media-modal-media-max-height: 80%;
$no-gap-breakpoint: 415px;
+$font-sans-serif: 'mastodon-font-sans-serif' !default;
+$font-display: 'mastodon-font-display' !default;
+$font-monospace: 'mastodon-font-monospace' !default;
+
// Avatar border size (8% default, 100% for rounded avatars)
$ui-avatar-border-size: 8%;
diff --git a/app/javascript/flavours/glitch/util/initial_state.js b/app/javascript/flavours/glitch/util/initial_state.js
index fdf004527f..0aaf659048 100644
--- a/app/javascript/flavours/glitch/util/initial_state.js
+++ b/app/javascript/flavours/glitch/util/initial_state.js
@@ -14,6 +14,7 @@ const getMeta = (prop) => initialState && initialState.meta && initialState.meta
export const reduceMotion = getMeta('reduce_motion');
export const autoPlayGif = getMeta('auto_play_gif');
export const displaySensitiveMedia = getMeta('display_sensitive_media');
+export const displayMedia = getMeta('display_media') || (getMeta('display_sensitive_media') ? 'show_all' : 'default');
export const unfollowModal = getMeta('unfollow_modal');
export const boostModal = getMeta('boost_modal');
export const favouriteModal = getMeta('favourite_modal');
diff --git a/app/javascript/mastodon/actions/importer/normalizer.js b/app/javascript/mastodon/actions/importer/normalizer.js
index 10a39e0504..a2af3222e7 100644
--- a/app/javascript/mastodon/actions/importer/normalizer.js
+++ b/app/javascript/mastodon/actions/importer/normalizer.js
@@ -1,6 +1,7 @@
import escapeTextContentForBrowser from 'escape-html';
import emojify from '../../features/emoji/emoji';
import { unescapeHTML } from '../../utils/html';
+import { expandSpoilers } from '../../initial_state';
const domParser = new DOMParser();
@@ -57,7 +58,7 @@ export function normalizeStatus(status, normalOldStatus) {
normalStatus.search_index = domParser.parseFromString(searchContent, 'text/html').documentElement.textContent;
normalStatus.contentHtml = emojify(normalStatus.content, emojiMap);
normalStatus.spoilerHtml = emojify(escapeTextContentForBrowser(spoilerText), emojiMap);
- normalStatus.hidden = spoilerText.length > 0 || normalStatus.sensitive;
+ normalStatus.hidden = expandSpoilers ? false : spoilerText.length > 0 || normalStatus.sensitive;
}
return normalStatus;
diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/autosuggest_emoji-test.js.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/autosuggest_emoji-test.js.snap
new file mode 100644
index 0000000000..1c37278483
--- /dev/null
+++ b/app/javascript/mastodon/components/__tests__/__snapshots__/autosuggest_emoji-test.js.snap
@@ -0,0 +1,27 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[` renders emoji with custom url 1`] = `
+
{
diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.js b/app/javascript/mastodon/features/notifications/components/column_settings.js
index d9638aaf35..fcdf5c6e65 100644
--- a/app/javascript/mastodon/features/notifications/components/column_settings.js
+++ b/app/javascript/mastodon/features/notifications/components/column_settings.js
@@ -27,7 +27,6 @@ export default class ColumnSettings extends React.PureComponent {
const showPushSettings = pushSettings.get('browserSupport') && pushSettings.get('isSubscribed');
const pushStr = showPushSettings &&
;
- const pushMeta = showPushSettings &&
;
return (
@@ -40,7 +39,7 @@ export default class ColumnSettings extends React.PureComponent {
- {showPushSettings && }
+ {showPushSettings && }
@@ -51,7 +50,7 @@ export default class ColumnSettings extends React.PureComponent {
- {showPushSettings && }
+ {showPushSettings && }
@@ -62,7 +61,7 @@ export default class ColumnSettings extends React.PureComponent {
- {showPushSettings && }
+ {showPushSettings && }
@@ -73,7 +72,7 @@ export default class ColumnSettings extends React.PureComponent {
- {showPushSettings && }
+ {showPushSettings && }
diff --git a/app/javascript/mastodon/features/notifications/components/notification.js b/app/javascript/mastodon/features/notifications/components/notification.js
index ed4a44ca67..8df6830c52 100644
--- a/app/javascript/mastodon/features/notifications/components/notification.js
+++ b/app/javascript/mastodon/features/notifications/components/notification.js
@@ -85,8 +85,9 @@ class Notification extends ImmutablePureComponent {
-
-
+
+
+
diff --git a/app/javascript/mastodon/features/notifications/components/setting_toggle.js b/app/javascript/mastodon/features/notifications/components/setting_toggle.js
index ac2211e48b..7aec16d2ea 100644
--- a/app/javascript/mastodon/features/notifications/components/setting_toggle.js
+++ b/app/javascript/mastodon/features/notifications/components/setting_toggle.js
@@ -10,7 +10,6 @@ export default class SettingToggle extends React.PureComponent {
settings: ImmutablePropTypes.map.isRequired,
settingPath: PropTypes.array.isRequired,
label: PropTypes.node.isRequired,
- meta: PropTypes.node,
onChange: PropTypes.func.isRequired,
}
@@ -19,14 +18,13 @@ export default class SettingToggle extends React.PureComponent {
}
render () {
- const { prefix, settings, settingPath, label, meta } = this.props;
+ const { prefix, settings, settingPath, label } = this.props;
const id = ['setting-toggle', prefix, ...settingPath].filter(Boolean).join('-');
return (
- {meta && {meta}}
);
}
diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js
index 2781c5d64f..fb6f675f4c 100644
--- a/app/javascript/mastodon/features/ui/index.js
+++ b/app/javascript/mastodon/features/ui/index.js
@@ -59,7 +59,8 @@ const messages = defineMessages({
const mapStateToProps = state => ({
isComposing: state.getIn(['compose', 'is_composing']),
- hasComposingText: state.getIn(['compose', 'text']) !== '',
+ hasComposingText: state.getIn(['compose', 'text']).trim().length !== 0,
+ hasMediaAttachments: state.getIn(['compose', 'media_attachments']).size > 0,
dropdownMenuIsOpen: state.getIn(['dropdown_menu', 'openId']) !== null,
});
@@ -201,6 +202,7 @@ class UI extends React.PureComponent {
children: PropTypes.node,
isComposing: PropTypes.bool,
hasComposingText: PropTypes.bool,
+ hasMediaAttachments: PropTypes.bool,
location: PropTypes.object,
intl: PropTypes.object.isRequired,
dropdownMenuIsOpen: PropTypes.bool,
@@ -211,9 +213,9 @@ class UI extends React.PureComponent {
};
handleBeforeUnload = (e) => {
- const { intl, isComposing, hasComposingText } = this.props;
+ const { intl, isComposing, hasComposingText, hasMediaAttachments } = this.props;
- if (isComposing && hasComposingText) {
+ if (isComposing && (hasComposingText || hasMediaAttachments)) {
// Setting returnValue to any string causes confirmation dialog.
// Many browsers no longer display this text to users,
// but we set user-friendly message for other browsers, e.g. Edge.
diff --git a/app/javascript/mastodon/features/video/index.js b/app/javascript/mastodon/features/video/index.js
index d172539570..67f7580b93 100644
--- a/app/javascript/mastodon/features/video/index.js
+++ b/app/javascript/mastodon/features/video/index.js
@@ -5,7 +5,7 @@ import { fromJS } from 'immutable';
import { throttle } from 'lodash';
import classNames from 'classnames';
import { isFullscreen, requestFullscreen, exitFullscreen } from '../ui/util/fullscreen';
-import { displaySensitiveMedia } from '../../initial_state';
+import { displayMedia } from '../../initial_state';
const messages = defineMessages({
play: { id: 'video.play', defaultMessage: 'Play' },
@@ -111,7 +111,7 @@ class Video extends React.PureComponent {
fullscreen: false,
hovered: false,
muted: false,
- revealed: !this.props.sensitive || displaySensitiveMedia,
+ revealed: displayMedia !== 'hide_all' && !this.props.sensitive || displayMedia === 'show_all',
};
setPlayerRef = c => {
@@ -272,7 +272,7 @@ class Video extends React.PureComponent {
}
render () {
- const { preview, src, inline, startTime, onOpenVideo, onCloseVideo, intl, alt, detailed } = this.props;
+ const { preview, src, inline, startTime, onOpenVideo, onCloseVideo, intl, alt, detailed, sensitive } = this.props;
const { containerWidth, currentTime, duration, buffer, dragging, paused, fullscreen, hovered, muted, revealed } = this.state;
const progress = (currentTime / duration) * 100;
const playerStyle = {};
@@ -296,6 +296,13 @@ class Video extends React.PureComponent {
preload = 'none';
}
+ let warning;
+ if (sensitive) {
+ warning =
;
+ } else {
+ warning =
;
+ }
+
return (
diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js
index 4c6922f9b4..1d3d84f9d4 100644
--- a/app/javascript/mastodon/initial_state.js
+++ b/app/javascript/mastodon/initial_state.js
@@ -5,7 +5,8 @@ const getMeta = (prop) => initialState && initialState.meta && initialState.meta
export const reduceMotion = getMeta('reduce_motion');
export const autoPlayGif = getMeta('auto_play_gif');
-export const displaySensitiveMedia = getMeta('display_sensitive_media');
+export const displayMedia = getMeta('display_media');
+export const expandSpoilers = getMeta('expand_spoilers');
export const unfollowModal = getMeta('unfollow_modal');
export const boostModal = getMeta('boost_modal');
export const deleteModal = getMeta('delete_modal');
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index 56d78ae64a..a74207db6f 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "متابعُون جُدُد :",
"notifications.column_settings.mention": "الإشارات :",
"notifications.column_settings.push": "الإخطارات المدفوعة",
- "notifications.column_settings.push_meta": "هذا الجهاز",
"notifications.column_settings.reblog": "الترقيّات:",
"notifications.column_settings.show": "إعرِضها في عمود",
"notifications.column_settings.sound": "أصدر صوتا",
diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json
index e3cfabee33..147c5ad2a0 100644
--- a/app/javascript/mastodon/locales/ast.json
+++ b/app/javascript/mastodon/locales/ast.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Siguidores nuevos:",
"notifications.column_settings.mention": "Menciones:",
"notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.push_meta": "Esti preséu",
"notifications.column_settings.reblog": "Boosts:",
"notifications.column_settings.show": "Amosar en columna",
"notifications.column_settings.sound": "Reproducir soníu",
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index 5730c13544..756c333935 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Нови последователи:",
"notifications.column_settings.mention": "Споменавания:",
"notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.push_meta": "This device",
"notifications.column_settings.reblog": "Споделяния:",
"notifications.column_settings.show": "Покажи в колона",
"notifications.column_settings.sound": "Play sound",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 0364d0bbac..4701c93168 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Nous seguidors:",
"notifications.column_settings.mention": "Mencions:",
"notifications.column_settings.push": "Push notificacions",
- "notifications.column_settings.push_meta": "Aquest dispositiu",
"notifications.column_settings.reblog": "Impulsos:",
"notifications.column_settings.show": "Mostrar en la columna",
"notifications.column_settings.sound": "Reproduïr so",
diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json
index 8bf0832356..62976c98e4 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Abbunati novi:",
"notifications.column_settings.mention": "Minzione:",
"notifications.column_settings.push": "Nutificazione Push",
- "notifications.column_settings.push_meta": "Quess'apparechju",
"notifications.column_settings.reblog": "Spartere:",
"notifications.column_settings.show": "Mustrà indè a colonna",
"notifications.column_settings.sound": "Sunà",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index 46aa954e8a..2c34fd34ce 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Noví sledovatelé:",
"notifications.column_settings.mention": "Zmínky:",
"notifications.column_settings.push": "Push oznámení",
- "notifications.column_settings.push_meta": "Toto zařízení",
"notifications.column_settings.reblog": "Boosty:",
"notifications.column_settings.show": "Zobrazit ve sloupci",
"notifications.column_settings.sound": "Přehrát zvuk",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index a2eea600a9..90f3f8e301 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -1,337 +1,335 @@
{
- "account.badges.bot": "Bot",
- "account.block": "Blociwch @{name}",
- "account.block_domain": "Cuddiwch bopeth rhag {domain}",
- "account.blocked": "Blociwyd",
- "account.direct": "Neges breifat @{name}",
- "account.disclaimer_full": "Gall y wybodaeth isod adlewyrchu darlun anghyflawn o broffil defnyddiwr.",
- "account.domain_blocked": "Domain hidden",
- "account.edit_profile": "Golygu proffil",
- "account.endorse": "Feature on profile",
- "account.follow": "Dilyn",
- "account.followers": "Dilynwyr",
- "account.followers.empty": "Nid oes neb yn dilyn y defnyddiwr hwn eto.",
- "account.follows": "Yn dilyn",
- "account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.",
- "account.follows_you": "Yn eich dilyn chi",
- "account.hide_reblogs": "Hide boosts from @{name}",
- "account.link_verified_on": "Ownership of this link was checked on {date}",
- "account.media": "Cyfryngau",
- "account.mention": "Crybwyll @{name}",
- "account.moved_to": "Mae @{name} wedi symud i:",
- "account.mute": "Mute @{name}",
- "account.mute_notifications": "Mute notifications from @{name}",
- "account.muted": "Distewyd",
- "account.posts": "Tŵtiau",
- "account.posts_with_replies": "Toots and replies",
- "account.report": "Adroddwch @{name}",
- "account.requested": "Awaiting approval. Click to cancel follow request",
- "account.share": "Rhannwch broffil @{name}",
- "account.show_reblogs": "Show boosts from @{name}",
- "account.unblock": "Dadflociwch @{name}",
- "account.unblock_domain": "Dadguddiwch {domain}",
- "account.unendorse": "Don't feature on profile",
- "account.unfollow": "Daddilynwch",
- "account.unmute": "Unmute @{name}",
- "account.unmute_notifications": "Unmute notifications from @{name}",
- "account.view_full_profile": "View full profile",
- "alert.unexpected.message": "Digwyddodd gwall annisgwyl.",
- "alert.unexpected.title": "Wps!",
- "boost_modal.combo": "You can press {combo} to skip this next time",
- "bundle_column_error.body": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.",
- "bundle_column_error.retry": "Ceisiwch eto",
- "bundle_column_error.title": "Gwall rhwydwaith",
- "bundle_modal_error.close": "Close",
- "bundle_modal_error.message": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.",
- "bundle_modal_error.retry": "Ceiswich eto",
- "column.blocks": "Defnyddwyr a flociwyd",
- "column.community": "Llinell amser lleol",
- "column.direct": "Negeseuon preifat",
- "column.domain_blocks": "Parthau cuddiedig",
- "column.favourites": "Ffefrynnau",
- "column.follow_requests": "Ceisiadau dilyn",
- "column.home": "Hafan",
- "column.lists": "Rhestrau",
- "column.mutes": "Defnyddwyr a ddistewyd",
- "column.notifications": "Hysbysiadau",
- "column.pins": "Pinned toot",
- "column.public": "Federated timeline",
- "column_back_button.label": "Nôl",
- "column_header.hide_settings": "Hide settings",
- "column_header.moveLeft_settings": "Symudwch y golofn i'r chwith",
- "column_header.moveRight_settings": "Symudwch y golofn i'r dde",
- "column_header.pin": "Piniwch",
- "column_header.show_settings": "Dangos gosodiadau",
- "column_header.unpin": "Dadbiniwch",
- "column_subheading.settings": "Gosodiadau",
- "community.column_settings.media_only": "Cyfryngau yn unig",
- "compose_form.direct_message_warning": "Mi fydd y tŵt hwn ond yn cael ei anfon at y defnyddwyr sy'n cael eu crybwyll.",
- "compose_form.direct_message_warning_learn_more": "Dysgwch fwy",
- "compose_form.hashtag_warning": "Ni fydd y tŵt hwn wedi ei restru o dan unrhyw hashnod gan ei fod heb ei restru. Dim ond tŵtiau cyhoeddus gellid chwilota amdanynt drwy hashnod.",
- "compose_form.lock_disclaimer": "Nid yw eich cyfri wedi'i {locked}. Gall unrhyw un eich dilyn i weld eich POSTS dilynwyr-yn-unig.",
- "compose_form.lock_disclaimer.lock": "wedi ei gloi",
- "compose_form.placeholder": "Be syd ar eich meddwl?",
- "compose_form.publish": "Tŵt",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.marked": "Media is marked as sensitive",
- "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
- "compose_form.spoiler.marked": "Testun wedi ei guddio gan rybudd",
- "compose_form.spoiler.unmarked": "Nid yw'r testun wedi ei guddio",
- "compose_form.spoiler_placeholder": "Ysgrifenwch eich rhybudd yma",
- "confirmation_modal.cancel": "Cancel",
- "confirmations.block.confirm": "Blociwch",
- "confirmations.block.message": "Ydych chi'n sicr eich bod eisiau blocio {name}?",
- "confirmations.delete.confirm": "Dileu",
- "confirmations.delete.message": "Ydych chi'n sicr eich bod eisiau dileu y statws hwn?",
- "confirmations.delete_list.confirm": "Dileu",
- "confirmations.delete_list.message": "Ydych chi'n sicr eich bod eisiau dileu y rhestr hwn am byth?",
- "confirmations.domain_block.confirm": "Hide entire domain",
- "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
- "confirmations.mute.confirm": "Mute",
- "confirmations.mute.message": "Ydych chi'n sicr eich bod am ddistewi {name}?",
- "confirmations.redraft.confirm": "Delete & redraft",
- "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
- "confirmations.unfollow.confirm": "Dad-ddilynwch",
- "confirmations.unfollow.message": "Ydych chi'n sicr eich bod am ddad-ddilyn {name}?",
- "embed.instructions": "Embed this status on your website by copying the code below.",
- "embed.preview": "Dyma sut olwg fydd arno:",
- "emoji_button.activity": "Gweithgarwch",
- "emoji_button.custom": "Custom",
- "emoji_button.flags": "Baneri",
- "emoji_button.food": "Bwyd a Diod",
- "emoji_button.label": "Mewnosodwch emoji",
- "emoji_button.nature": "Natur",
- "emoji_button.not_found": "Dim emojos!! (╯°□°)╯︵ ┻━┻",
- "emoji_button.objects": "Gwrthrychau",
- "emoji_button.people": "Pobl",
- "emoji_button.recent": "Defnyddir yn aml",
- "emoji_button.search": "Chwilio...",
- "emoji_button.search_results": "Canlyniadau chwilio",
- "emoji_button.symbols": "Symbolau",
- "emoji_button.travel": "Teithio & Llefydd",
- "empty_column.blocks": "Nid ydych wedi blocio unrhyw ddefnyddwyr eto.",
- "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
- "empty_column.direct": "Nid oes gennych unrhyw negeseuon preifat eto. Pan y byddwch yn anfon neu derbyn un, mi fydd yn ymddangos yma.",
- "empty_column.domain_blocks": "Nid oes yna unrhyw barthau cuddiedig eto.",
- "empty_column.favourited_statuses": "Nid oes gennych unrhyw hoff dwtiau eto. Pan y byddwch yn hoffi un, mi fydd yn ymddangos yma.",
- "empty_column.favourites": "Nid oes neb wedi hoffi'r tŵt yma eto. Pan bydd rhywun yn ei hoffi, mi fyddent yn ymddangos yma.",
- "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
- "empty_column.hashtag": "Nid oes dim ar yr hashnod hwn eto.",
- "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
- "empty_column.home.public_timeline": "the public timeline",
- "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
- "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
- "empty_column.mutes": "You haven't muted any users yet.",
- "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
- "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
- "follow_request.authorize": "Caniatau",
- "follow_request.reject": "Gwrthod",
- "getting_started.developers": "Datblygwyr",
- "getting_started.documentation": "Dogfennaeth",
- "getting_started.find_friends": "Canfod ffrindiau o Twitter",
- "getting_started.heading": "Dechrau",
- "getting_started.invite": "Gwahoddwch bobl",
- "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
- "getting_started.security": "Diogelwch",
- "getting_started.terms": "Terms of service",
- "home.column_settings.basic": "Syml",
- "home.column_settings.show_reblogs": "Show boosts",
- "home.column_settings.show_replies": "Dangoswch ymatebion",
- "keyboard_shortcuts.back": "to navigate back",
- "keyboard_shortcuts.blocked": "to open blocked users list",
- "keyboard_shortcuts.boost": "to boost",
- "keyboard_shortcuts.column": "to focus a status in one of the columns",
- "keyboard_shortcuts.compose": "to focus the compose textarea",
- "keyboard_shortcuts.description": "Disgrifiad",
- "keyboard_shortcuts.direct": "i agor colofn negeseuon preifat",
- "keyboard_shortcuts.down": "i symud lawr yn y rhestr",
- "keyboard_shortcuts.enter": "i agor statws",
- "keyboard_shortcuts.favourite": "i hoffi",
- "keyboard_shortcuts.favourites": "i agor rhestr hoffi",
- "keyboard_shortcuts.federated": "to open federated timeline",
- "keyboard_shortcuts.heading": "Keyboard Shortcuts",
- "keyboard_shortcuts.home": "to open home timeline",
- "keyboard_shortcuts.hotkey": "Hotkey",
- "keyboard_shortcuts.legend": "to display this legend",
- "keyboard_shortcuts.local": "to open local timeline",
- "keyboard_shortcuts.mention": "i grybwyll yr awdur",
- "keyboard_shortcuts.muted": "to open muted users list",
- "keyboard_shortcuts.my_profile": "i agor eich proffil",
- "keyboard_shortcuts.notifications": "i agor colofn hysbysiadau",
- "keyboard_shortcuts.pinned": "to open pinned toots list",
- "keyboard_shortcuts.profile": "i agor proffil yr awdur",
- "keyboard_shortcuts.reply": "i ateb",
- "keyboard_shortcuts.requests": "to open follow requests list",
- "keyboard_shortcuts.search": "to focus search",
- "keyboard_shortcuts.start": "to open \"get started\" column",
- "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
- "keyboard_shortcuts.toot": "i ddechrau tŵt newydd sbon",
- "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
- "keyboard_shortcuts.up": "to move up in the list",
- "lightbox.close": "Cau",
- "lightbox.next": "Nesaf",
- "lightbox.previous": "Previous",
- "lists.account.add": "Ychwanegwch at restr",
- "lists.account.remove": "Remove from list",
- "lists.delete": "Dileu rhestr",
- "lists.edit": "Golygwch restr",
- "lists.new.create": "Ychwanegwch restr",
- "lists.new.title_placeholder": "New list title",
- "lists.search": "Search among people you follow",
- "lists.subheading": "Eich rhestrau",
- "loading_indicator.label": "Llwytho...",
- "media_gallery.toggle_visible": "Toggle visibility",
- "missing_indicator.label": "Heb ei ganfod",
- "missing_indicator.sublabel": "Ni ellid canfod yr adnodd hwn",
- "mute_modal.hide_notifications": "Cuddiwch hysbysiadau rhag y defnyddiwr hwn?",
- "navigation_bar.apps": "Apiau symudol",
- "navigation_bar.blocks": "Defnyddwyr wedi eu blocio",
- "navigation_bar.community_timeline": "Local timeline",
- "navigation_bar.compose": "Cyfansoddwch dŵt newydd",
- "navigation_bar.direct": "Negeseuon preifat",
- "navigation_bar.discover": "Darganfyddwch",
- "navigation_bar.domain_blocks": "Parthau cuddiedig",
- "navigation_bar.edit_profile": "Golygu proffil",
- "navigation_bar.favourites": "Ffefrynnau",
- "navigation_bar.filters": "Muted words",
- "navigation_bar.follow_requests": "Ceisiadau dilyn",
- "navigation_bar.info": "About this instance",
- "navigation_bar.keyboard_shortcuts": "Hotkeys",
- "navigation_bar.lists": "Rhestrau",
- "navigation_bar.logout": "Allgofnodi",
- "navigation_bar.mutes": "Muted users",
- "navigation_bar.personal": "Personol",
- "navigation_bar.pins": "Tŵtiau wedi eu pinio",
- "navigation_bar.preferences": "Dewisiadau",
- "navigation_bar.public_timeline": "Federated timeline",
- "navigation_bar.security": "Diogelwch",
- "notification.favourite": "hoffodd {name} eich statws",
- "notification.follow": "dilynodd {name} chi",
- "notification.mention": "{name} mentioned you",
- "notification.reblog": "{name} boosted your status",
- "notifications.clear": "Clirio hysbysiadau",
- "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
- "notifications.column_settings.alert": "Desktop notifications",
- "notifications.column_settings.favourite": "Ffefrynnau:",
- "notifications.column_settings.follow": "Dilynwyr newydd:",
- "notifications.column_settings.mention": "Mentions:",
- "notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.push_meta": "This device",
- "notifications.column_settings.reblog": "Boosts:",
- "notifications.column_settings.show": "Show in column",
- "notifications.column_settings.sound": "Chwarae sain",
- "notifications.group": "{count} o hysbysiadau",
- "onboarding.done": "Done",
- "onboarding.next": "Nesaf",
- "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
- "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
- "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
- "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
- "onboarding.page_one.full_handle": "Your full handle",
- "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.",
- "onboarding.page_one.welcome": "Croeso i Mastodon!",
- "onboarding.page_six.admin": "Your instance's admin is {admin}.",
- "onboarding.page_six.almost_done": "Almost done...",
- "onboarding.page_six.appetoot": "Bon Apetŵt!",
- "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
- "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
- "onboarding.page_six.guidelines": "canllawiau cymunedol",
- "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
- "onboarding.page_six.various_app": "apiau symudol",
- "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
- "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
- "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
- "onboarding.skip": "Skip",
- "privacy.change": "Adjust status privacy",
- "privacy.direct.long": "Post to mentioned users only",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "Post to followers only",
- "privacy.private.short": "Dilynwyr-yn-unig",
- "privacy.public.long": "Post to public timelines",
- "privacy.public.short": "Cyhoeddus",
- "privacy.unlisted.long": "Do not show in public timelines",
- "privacy.unlisted.short": "Heb ei restru",
- "regeneration_indicator.label": "Llwytho…",
- "regeneration_indicator.sublabel": "Mae eich ffrwd cartref yn cael ei baratoi!",
- "relative_time.days": "{number}d",
- "relative_time.hours": "{number}h",
- "relative_time.just_now": "nawr",
- "relative_time.minutes": "{number}m",
- "relative_time.seconds": "{number}s",
- "reply_indicator.cancel": "Canslo",
- "report.forward": "Forward to {target}",
- "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
- "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:",
- "report.placeholder": "Sylwadau ychwanegol",
- "report.submit": "Submit",
- "report.target": "Report {target}",
- "search.placeholder": "Chwilio",
- "search_popout.search_format": "Advanced search format",
- "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
- "search_popout.tips.hashtag": "hashnod",
- "search_popout.tips.status": "statws",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
- "search_popout.tips.user": "defnyddiwr",
- "search_results.accounts": "Pobl",
- "search_results.hashtags": "Hanshnodau",
- "search_results.statuses": "Twtiau",
- "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
- "standalone.public_title": "A look inside...",
- "status.block": "Block @{name}",
- "status.cancel_reblog_private": "Unboost",
- "status.cannot_reblog": "This post cannot be boosted",
- "status.delete": "Dileu",
- "status.detailed_status": "Detailed conversation view",
- "status.direct": "Neges breifat @{name}",
- "status.embed": "Plannu",
- "status.favourite": "Favourite",
- "status.filtered": "Filtered",
- "status.load_more": "Llwythwch mwy",
- "status.media_hidden": "Media hidden",
- "status.mention": "Mention @{name}",
- "status.more": "Mwy",
- "status.mute": "Mute @{name}",
- "status.mute_conversation": "Mute conversation",
- "status.open": "Expand this status",
- "status.pin": "Pin on profile",
- "status.pinned": "Pinned toot",
- "status.reblog": "Boost",
- "status.reblog_private": "Boost to original audience",
- "status.reblogged_by": "{name} boosted",
- "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
- "status.redraft": "Delete & re-draft",
- "status.reply": "Ateb",
- "status.replyAll": "Ateb i edefyn",
- "status.report": "Report @{name}",
- "status.sensitive_toggle": "Click to view",
- "status.sensitive_warning": "Cynnwys sensitif",
- "status.share": "Rhannwch",
- "status.show_less": "Dangoswch lai",
- "status.show_less_all": "Dangoswch lai i bawb",
- "status.show_more": "Dangoswch fwy",
- "status.show_more_all": "Show more for all",
- "status.unmute_conversation": "Unmute conversation",
- "status.unpin": "Unpin from profile",
- "tabs_bar.federated_timeline": "Federated",
- "tabs_bar.home": "Hafan",
- "tabs_bar.local_timeline": "Lleol",
- "tabs_bar.notifications": "Hysbysiadau",
- "tabs_bar.search": "Chwilio",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
- "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
- "upload_area.title": "Drag & drop to upload",
- "upload_button.label": "Add media (JPEG, PNG, GIF, WebM, MP4, MOV)",
- "upload_form.description": "Describe for the visually impaired",
- "upload_form.focus": "Crop",
- "upload_form.undo": "Delete",
- "upload_progress.label": "Uwchlwytho...",
- "video.close": "Close video",
- "video.exit_fullscreen": "Exit full screen",
- "video.expand": "Expand video",
- "video.fullscreen": "Full screen",
- "video.hide": "Hide video",
- "video.mute": "Mute sound",
- "video.pause": "Pause",
- "video.play": "Chwarae",
- "video.unmute": "Unmute sound"
+ "account.badges.bot": "Bot",
+ "account.block": "Blociwch @{name}",
+ "account.block_domain": "Cuddiwch bopeth rhag {domain}",
+ "account.blocked": "Blociwyd",
+ "account.direct": "Neges breifat @{name}",
+ "account.disclaimer_full": "Gall y wybodaeth isod adlewyrchu darlun anghyflawn o broffil defnyddiwr.",
+ "account.domain_blocked": "Parth wedi ei guddio",
+ "account.edit_profile": "Golygu proffil",
+ "account.endorse": "Arddangos ar fy mhroffil",
+ "account.follow": "Dilyn",
+ "account.followers": "Dilynwyr",
+ "account.followers.empty": "Nid oes neb yn dilyn y defnyddiwr hwn eto.",
+ "account.follows": "Yn dilyn",
+ "account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.",
+ "account.follows_you": "Yn eich dilyn chi",
+ "account.hide_reblogs": "Cuddio bwstiau o @{name}",
+ "account.media": "Cyfryngau",
+ "account.mention": "Crybwyll @{name}",
+ "account.moved_to": "Mae @{name} wedi symud i:",
+ "account.mute": "Tawelu @{name}",
+ "account.mute_notifications": "Cuddio hysbysiadau o @{name}",
+ "account.muted": "Distewyd",
+ "account.posts": "Tŵtiau",
+ "account.posts_with_replies": "Tŵtiau ac atebion",
+ "account.report": "Adroddwch @{name}",
+ "account.requested": "Aros am gymeradwyaeth. Cliciwch er mwyn canslo cais dilyn",
+ "account.share": "Rhannwch broffil @{name}",
+ "account.show_reblogs": "Dangoswch bwstiau o @{name}",
+ "account.unblock": "Dadflociwch @{name}",
+ "account.unblock_domain": "Dadguddiwch {domain}",
+ "account.unendorse": "Peidwch a'i arddangos ar fy mhroffil",
+ "account.unfollow": "Daddilynwch",
+ "account.unmute": "Dad-dawelu @{name}",
+ "account.unmute_notifications": "Dad-dawelu hysbysiadau o @{name}",
+ "account.view_full_profile": "Gweld proffil llawn",
+ "alert.unexpected.message": "Digwyddodd gwall annisgwyl.",
+ "alert.unexpected.title": "Wps!",
+ "boost_modal.combo": "Mae modd gwasgu {combo} er mwyn sgipio hyn tro nesa",
+ "bundle_column_error.body": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.",
+ "bundle_column_error.retry": "Ceisiwch eto",
+ "bundle_column_error.title": "Gwall rhwydwaith",
+ "bundle_modal_error.close": "Cau",
+ "bundle_modal_error.message": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.",
+ "bundle_modal_error.retry": "Ceiswich eto",
+ "column.blocks": "Defnyddwyr a flociwyd",
+ "column.community": "Llinell amser lleol",
+ "column.direct": "Negeseuon preifat",
+ "column.domain_blocks": "Parthau cuddiedig",
+ "column.favourites": "Ffefrynnau",
+ "column.follow_requests": "Ceisiadau dilyn",
+ "column.home": "Hafan",
+ "column.lists": "Rhestrau",
+ "column.mutes": "Defnyddwyr a ddistewyd",
+ "column.notifications": "Hysbysiadau",
+ "column.pins": "Tŵtiau wedi eu pinio",
+ "column.public": "",
+ "column_back_button.label": "Nôl",
+ "column_header.hide_settings": "Cuddiwch dewisiadau",
+ "column_header.moveLeft_settings": "Symudwch y golofn i'r chwith",
+ "column_header.moveRight_settings": "Symudwch y golofn i'r dde",
+ "column_header.pin": "Piniwch",
+ "column_header.show_settings": "Dangos gosodiadau",
+ "column_header.unpin": "Dadbiniwch",
+ "column_subheading.settings": "Gosodiadau",
+ "community.column_settings.media_only": "Cyfryngau yn unig",
+ "compose_form.direct_message_warning": "Mi fydd y tŵt hwn ond yn cael ei anfon at y defnyddwyr sy'n cael eu crybwyll.",
+ "compose_form.direct_message_warning_learn_more": "Dysgwch fwy",
+ "compose_form.hashtag_warning": "Ni fydd y tŵt hwn wedi ei restru o dan unrhyw hashnod gan ei fod heb ei restru. Dim ond tŵtiau cyhoeddus gellid chwilota amdanynt drwy hashnod.",
+ "compose_form.lock_disclaimer": "Nid yw eich cyfri wedi'i {locked}. Gall unrhyw un eich dilyn i weld eich POSTS dilynwyr-yn-unig.",
+ "compose_form.lock_disclaimer.lock": "wedi ei gloi",
+ "compose_form.placeholder": "Be syd ar eich meddwl?",
+ "compose_form.publish": "Tŵt",
+ "compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.marked": "",
+ "compose_form.sensitive.unmarked": "",
+ "compose_form.spoiler.marked": "Testun wedi ei guddio gan rybudd",
+ "compose_form.spoiler.unmarked": "Nid yw'r testun wedi ei guddio",
+ "compose_form.spoiler_placeholder": "Ysgrifenwch eich rhybudd yma",
+ "confirmation_modal.cancel": "Canslo",
+ "confirmations.block.confirm": "Blociwch",
+ "confirmations.block.message": "Ydych chi'n sicr eich bod eisiau blocio {name}?",
+ "confirmations.delete.confirm": "Dileu",
+ "confirmations.delete.message": "Ydych chi'n sicr eich bod eisiau dileu y statws hwn?",
+ "confirmations.delete_list.confirm": "Dileu",
+ "confirmations.delete_list.message": "Ydych chi'n sicr eich bod eisiau dileu y rhestr hwn am byth?",
+ "confirmations.domain_block.confirm": "",
+ "confirmations.domain_block.message": "",
+ "confirmations.mute.confirm": "Tawelu",
+ "confirmations.mute.message": "Ydych chi'n sicr eich bod am ddistewi {name}?",
+ "confirmations.redraft.confirm": "Dilëwch & ailddrafftio",
+ "confirmations.redraft.message": "Ydych chi'n siwr eich bod eisiau dileu y statws hwn a'i ailddrafftio? Bydd ffefrynnau a bwstiau'n cael ei colli, a bydd ymatebion i'r statws gwreiddiol yn cael eu hamddifadu.",
+ "confirmations.unfollow.confirm": "Dad-ddilynwch",
+ "confirmations.unfollow.message": "Ydych chi'n sicr eich bod am ddad-ddilyn {name}?",
+ "embed.instructions": "Mewnblannwch y statws hwn ar eich gwefan drwy gopïo'r côd isod.",
+ "embed.preview": "Dyma sut olwg fydd arno:",
+ "emoji_button.activity": "Gweithgarwch",
+ "emoji_button.custom": "",
+ "emoji_button.flags": "Baneri",
+ "emoji_button.food": "Bwyd a Diod",
+ "emoji_button.label": "Mewnosodwch emoji",
+ "emoji_button.nature": "Natur",
+ "emoji_button.not_found": "Dim emojos!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "Gwrthrychau",
+ "emoji_button.people": "Pobl",
+ "emoji_button.recent": "Defnyddir yn aml",
+ "emoji_button.search": "Chwilio...",
+ "emoji_button.search_results": "Canlyniadau chwilio",
+ "emoji_button.symbols": "Symbolau",
+ "emoji_button.travel": "Teithio & Llefydd",
+ "empty_column.blocks": "Nid ydych wedi blocio unrhyw ddefnyddwyr eto.",
+ "empty_column.community": "",
+ "empty_column.direct": "Nid oes gennych unrhyw negeseuon preifat eto. Pan y byddwch yn anfon neu derbyn un, mi fydd yn ymddangos yma.",
+ "empty_column.domain_blocks": "Nid oes yna unrhyw barthau cuddiedig eto.",
+ "empty_column.favourited_statuses": "Nid oes gennych unrhyw hoff dwtiau eto. Pan y byddwch yn hoffi un, mi fydd yn ymddangos yma.",
+ "empty_column.favourites": "Nid oes neb wedi hoffi'r tŵt yma eto. Pan bydd rhywun yn ei hoffi, mi fyddent yn ymddangos yma.",
+ "empty_column.follow_requests": "Nid oes gennych unrhyw geisiadau dilyn eto. Pan dderbyniwch chi un, bydd yn ymddangos yma.",
+ "empty_column.hashtag": "Nid oes dim ar yr hashnod hwn eto.",
+ "empty_column.home": "",
+ "empty_column.home.public_timeline": "y ffrwd cyhoeddus",
+ "empty_column.list": "Nid oes dim yn y rhestr yma eto. Pan y bydd aelodau'r rhestr yn cyhoeddi statws newydd, mi fydd yn ymddangos yma.",
+ "empty_column.lists": "Nid oes gennych unrhyw restrau eto. Pan grëwch chi un, mi fydd yn ymddangos yma.",
+ "empty_column.mutes": "Nid ydych wedi tawelu unrhyw ddefnyddwyr eto.",
+ "empty_column.notifications": "Nid oes gennych unrhyw hysbysiadau eto. Rhyngweithiwch ac eraill i ddechrau'r sgwrs.",
+ "empty_column.public": "Does dim byd yma! Ysgrifennwch rhywbeth yn gyhoeddus, neu dilynwch ddefnyddwyr o INSTANCES eraill i'w lenwi",
+ "follow_request.authorize": "Caniatau",
+ "follow_request.reject": "Gwrthod",
+ "getting_started.developers": "Datblygwyr",
+ "getting_started.documentation": "Dogfennaeth",
+ "getting_started.find_friends": "Canfod ffrindiau o Twitter",
+ "getting_started.heading": "Dechrau",
+ "getting_started.invite": "Gwahoddwch bobl",
+ "getting_started.open_source_notice": "Mae Mastodon yn feddalwedd côd agored. Mae modd cyfrannu neu adrodd materion ar GitHUb ar {github}.",
+ "getting_started.security": "Diogelwch",
+ "getting_started.terms": "Telerau Gwasanaeth",
+ "home.column_settings.basic": "Syml",
+ "home.column_settings.show_reblogs": "",
+ "home.column_settings.show_replies": "Dangoswch ymatebion",
+ "keyboard_shortcuts.back": "",
+ "keyboard_shortcuts.blocked": "i agor rhestr defnyddwyr a flociwyd",
+ "keyboard_shortcuts.boost": "",
+ "keyboard_shortcuts.column": "",
+ "keyboard_shortcuts.compose": "",
+ "keyboard_shortcuts.description": "Disgrifiad",
+ "keyboard_shortcuts.direct": "i agor colofn negeseuon preifat",
+ "keyboard_shortcuts.down": "i symud lawr yn y rhestr",
+ "keyboard_shortcuts.enter": "i agor statws",
+ "keyboard_shortcuts.favourite": "i hoffi",
+ "keyboard_shortcuts.favourites": "i agor rhestr hoffi",
+ "keyboard_shortcuts.federated": "",
+ "keyboard_shortcuts.heading": "",
+ "keyboard_shortcuts.home": "i agor ffrwd cartref",
+ "keyboard_shortcuts.hotkey": "Hotkey",
+ "keyboard_shortcuts.legend": "",
+ "keyboard_shortcuts.local": "i agor ffrwd lleol",
+ "keyboard_shortcuts.mention": "i grybwyll yr awdur",
+ "keyboard_shortcuts.muted": "i agor rhestr defnyddwyr a dawelwyd",
+ "keyboard_shortcuts.my_profile": "i agor eich proffil",
+ "keyboard_shortcuts.notifications": "i agor colofn hysbysiadau",
+ "keyboard_shortcuts.pinned": "",
+ "keyboard_shortcuts.profile": "i agor proffil yr awdur",
+ "keyboard_shortcuts.reply": "i ateb",
+ "keyboard_shortcuts.requests": "i agor rhestr ceisiadau dilyn",
+ "keyboard_shortcuts.search": "",
+ "keyboard_shortcuts.start": "",
+ "keyboard_shortcuts.toggle_hidden": "",
+ "keyboard_shortcuts.toot": "i ddechrau tŵt newydd sbon",
+ "keyboard_shortcuts.unfocus": "",
+ "keyboard_shortcuts.up": "i symud yn uwch yn y rhestr",
+ "lightbox.close": "Cau",
+ "lightbox.next": "Nesaf",
+ "lightbox.previous": "",
+ "lists.account.add": "Ychwanegwch at restr",
+ "lists.account.remove": "",
+ "lists.delete": "Dileu rhestr",
+ "lists.edit": "Golygwch restr",
+ "lists.new.create": "Ychwanegwch restr",
+ "lists.new.title_placeholder": "Teitl rhestr newydd",
+ "lists.search": "",
+ "lists.subheading": "Eich rhestrau",
+ "loading_indicator.label": "Llwytho...",
+ "media_gallery.toggle_visible": "",
+ "missing_indicator.label": "Heb ei ganfod",
+ "missing_indicator.sublabel": "Ni ellid canfod yr adnodd hwn",
+ "mute_modal.hide_notifications": "Cuddiwch hysbysiadau rhag y defnyddiwr hwn?",
+ "navigation_bar.apps": "Apiau symudol",
+ "navigation_bar.blocks": "Defnyddwyr wedi eu blocio",
+ "navigation_bar.community_timeline": "",
+ "navigation_bar.compose": "Cyfansoddwch dŵt newydd",
+ "navigation_bar.direct": "Negeseuon preifat",
+ "navigation_bar.discover": "Darganfyddwch",
+ "navigation_bar.domain_blocks": "Parthau cuddiedig",
+ "navigation_bar.edit_profile": "Golygu proffil",
+ "navigation_bar.favourites": "Ffefrynnau",
+ "navigation_bar.filters": "Geiriau a dawelwyd",
+ "navigation_bar.follow_requests": "Ceisiadau dilyn",
+ "navigation_bar.info": "",
+ "navigation_bar.keyboard_shortcuts": "",
+ "navigation_bar.lists": "Rhestrau",
+ "navigation_bar.logout": "Allgofnodi",
+ "navigation_bar.mutes": "Defnyddwyr a dawelwyd",
+ "navigation_bar.personal": "Personol",
+ "navigation_bar.pins": "Tŵtiau wedi eu pinio",
+ "navigation_bar.preferences": "Dewisiadau",
+ "navigation_bar.public_timeline": "",
+ "navigation_bar.security": "Diogelwch",
+ "notification.favourite": "hoffodd {name} eich statws",
+ "notification.follow": "dilynodd {name} chi",
+ "notification.mention": "Soniodd {name} amdanoch chi",
+ "notification.reblog": "",
+ "notifications.clear": "Clirio hysbysiadau",
+ "notifications.clear_confirmation": "",
+ "notifications.column_settings.alert": "",
+ "notifications.column_settings.favourite": "Ffefrynnau:",
+ "notifications.column_settings.follow": "Dilynwyr newydd:",
+ "notifications.column_settings.mention": "",
+ "notifications.column_settings.push": "Hysbysiadau push",
+ "notifications.column_settings.reblog": "",
+ "notifications.column_settings.show": "",
+ "notifications.column_settings.sound": "Chwarae sain",
+ "notifications.group": "{count} o hysbysiadau",
+ "onboarding.done": "Wedi'i wneud",
+ "onboarding.next": "Nesaf",
+ "onboarding.page_five.public_timelines": "",
+ "onboarding.page_four.home": "Mae'r ffrwd gartref yn dangos twtiau o bobl yr ydych yn dilyn.",
+ "onboarding.page_four.notifications": "",
+ "onboarding.page_one.federation": "",
+ "onboarding.page_one.full_handle": "",
+ "onboarding.page_one.handle_hint": "",
+ "onboarding.page_one.welcome": "Croeso i Mastodon!",
+ "onboarding.page_six.admin": "",
+ "onboarding.page_six.almost_done": "Bron a gorffen...",
+ "onboarding.page_six.appetoot": "Bon Apetŵt!",
+ "onboarding.page_six.apps_available": "Mae yna {apps} ar gael i iOS, Android a platfformau eraill.",
+ "onboarding.page_six.github": "Mae Mastodon yn feddalwedd côd agored rhad ac am ddim. Mae modd adrodd bygiau, gwneud ceisiadau am nodweddion penodol, neu gyfrannu i'r côd ar {github}.",
+ "onboarding.page_six.guidelines": "canllawiau cymunedol",
+ "onboarding.page_six.read_guidelines": "Darllenwch {guidelines} y {domain} os gwelwch yn dda!",
+ "onboarding.page_six.various_app": "apiau symudol",
+ "onboarding.page_three.profile": "",
+ "onboarding.page_three.search": "",
+ "onboarding.page_two.compose": "",
+ "onboarding.skip": "Sgipiwch",
+ "privacy.change": "",
+ "privacy.direct.long": "",
+ "privacy.direct.short": "Uniongyrchol",
+ "privacy.private.long": "Cyhoeddi i ddilynwyr yn unig",
+ "privacy.private.short": "Dilynwyr-yn-unig",
+ "privacy.public.long": "Cyhoeddi i ffrydiau cyhoeddus",
+ "privacy.public.short": "Cyhoeddus",
+ "privacy.unlisted.long": "Peidio a cyhoeddi i ffrydiau cyhoeddus",
+ "privacy.unlisted.short": "Heb ei restru",
+ "regeneration_indicator.label": "Llwytho…",
+ "regeneration_indicator.sublabel": "Mae eich ffrwd cartref yn cael ei baratoi!",
+ "relative_time.days": "{number}d",
+ "relative_time.hours": "{number}h",
+ "relative_time.just_now": "nawr",
+ "relative_time.minutes": "{number}m",
+ "relative_time.seconds": "{number}s",
+ "reply_indicator.cancel": "Canslo",
+ "report.forward": "",
+ "report.forward_hint": "",
+ "report.hint": "",
+ "report.placeholder": "Sylwadau ychwanegol",
+ "report.submit": "Cyflwyno",
+ "report.target": "",
+ "search.placeholder": "Chwilio",
+ "search_popout.search_format": "Fformat chwilio uwch",
+ "search_popout.tips.full_text": "",
+ "search_popout.tips.hashtag": "hashnod",
+ "search_popout.tips.status": "statws",
+ "search_popout.tips.text": "",
+ "search_popout.tips.user": "defnyddiwr",
+ "search_results.accounts": "Pobl",
+ "search_results.hashtags": "Hanshnodau",
+ "search_results.statuses": "Twtiau",
+ "search_results.total": "",
+ "standalone.public_title": "Golwg tu fewn...",
+ "status.block": "Blociwch @{name}",
+ "status.cancel_reblog_private": "",
+ "status.cannot_reblog": "",
+ "status.delete": "Dileu",
+ "status.detailed_status": "",
+ "status.direct": "Neges breifat @{name}",
+ "status.embed": "Plannu",
+ "status.favourite": "",
+ "status.filtered": "",
+ "status.load_more": "Llwythwch mwy",
+ "status.media_hidden": "",
+ "status.mention": "",
+ "status.more": "Mwy",
+ "status.mute": "Tawelu @{name}",
+ "status.mute_conversation": "",
+ "status.open": "",
+ "status.pin": "",
+ "status.pinned": "",
+ "status.reblog": "",
+ "status.reblog_private": "",
+ "status.reblogged_by": "",
+ "status.reblogs.empty": "",
+ "status.redraft": "Dilëwh & ailddrafftio",
+ "status.reply": "Ateb",
+ "status.replyAll": "Ateb i edefyn",
+ "status.report": "",
+ "status.sensitive_toggle": "",
+ "status.sensitive_warning": "Cynnwys sensitif",
+ "status.share": "Rhannwch",
+ "status.show_less": "Dangoswch lai",
+ "status.show_less_all": "Dangoswch lai i bawb",
+ "status.show_more": "Dangoswch fwy",
+ "status.show_more_all": "",
+ "status.unmute_conversation": "Dad-dawelu sgwrs",
+ "status.unpin": "",
+ "tabs_bar.federated_timeline": "",
+ "tabs_bar.home": "Hafan",
+ "tabs_bar.local_timeline": "Lleol",
+ "tabs_bar.notifications": "Hysbysiadau",
+ "tabs_bar.search": "Chwilio",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} yn siarad",
+ "ui.beforeunload": "Mi fyddwch yn colli eich drafft os gadewch Mastodon.",
+ "upload_area.title": "Llusgwch & gollwing i uwchlwytho",
+ "upload_button.label": "Ychwanegwch gyfryngau (JPEG, PNG, GIF, WebM, MP4, MOV)",
+ "upload_form.description": "",
+ "upload_form.focus": "",
+ "upload_form.undo": "Dileu",
+ "upload_progress.label": "Uwchlwytho...",
+ "video.close": "Cau fideo",
+ "video.exit_fullscreen": "Gadael sgrîn llawn",
+ "video.expand": "Ymestyn fideo",
+ "video.fullscreen": "Sgrîn llawn",
+ "video.hide": "Cuddio fideo",
+ "video.mute": "Tawelu sain",
+ "video.pause": "Oedi",
+ "video.play": "Chwarae",
+ "video.unmute": "Dad-dawelu sain"
}
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index 959a503771..e3d040ea8e 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Nye følgere:",
"notifications.column_settings.mention": "Omtale:",
"notifications.column_settings.push": "Push notifikationer",
- "notifications.column_settings.push_meta": "Denne enhed",
"notifications.column_settings.reblog": "Fremhævelser:",
"notifications.column_settings.show": "Vis i kolonne",
"notifications.column_settings.sound": "Afspil lyd",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index 4f1b2c8a09..d798878fb1 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Neue Folgende:",
"notifications.column_settings.mention": "Erwähnungen:",
"notifications.column_settings.push": "Push-Benachrichtigungen",
- "notifications.column_settings.push_meta": "Auf diesem Gerät",
"notifications.column_settings.reblog": "Geteilte Beiträge:",
"notifications.column_settings.show": "In der Spalte anzeigen",
"notifications.column_settings.sound": "Ton abspielen",
diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json
index 5215bfb4e2..b396726f79 100644
--- a/app/javascript/mastodon/locales/defaultMessages.json
+++ b/app/javascript/mastodon/locales/defaultMessages.json
@@ -1541,10 +1541,6 @@
"defaultMessage": "Push notifications",
"id": "notifications.column_settings.push"
},
- {
- "defaultMessage": "This device",
- "id": "notifications.column_settings.push_meta"
- },
{
"defaultMessage": "New followers:",
"id": "notifications.column_settings.follow"
@@ -2141,4 +2137,4 @@
],
"path": "app/javascript/mastodon/features/video/index.json"
}
-]
\ No newline at end of file
+]
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index 9c2a317229..4e4b733ece 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Νέοι ακόλουθοι:",
"notifications.column_settings.mention": "Αναφορές:",
"notifications.column_settings.push": "Άμεσες ειδοποιήσεις",
- "notifications.column_settings.push_meta": "Αυτή η συσκευή",
"notifications.column_settings.reblog": "Προωθήσεις:",
"notifications.column_settings.show": "Εμφάνισε σε στήλη",
"notifications.column_settings.sound": "Ηχητική ειδοποίηση",
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index b117dad95a..65b290be7d 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -221,7 +221,6 @@
"notifications.column_settings.follow": "New followers:",
"notifications.column_settings.mention": "Mentions:",
"notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.push_meta": "This device",
"notifications.column_settings.reblog": "Boosts:",
"notifications.column_settings.show": "Show in column",
"notifications.column_settings.sound": "Play sound",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index dcc565eb97..86bee46b16 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Novaj sekvantoj:",
"notifications.column_settings.mention": "Mencioj:",
"notifications.column_settings.push": "Puŝsciigoj",
- "notifications.column_settings.push_meta": "Ĉi tiu aparato",
"notifications.column_settings.reblog": "Diskonigoj:",
"notifications.column_settings.show": "Montri en kolumno",
"notifications.column_settings.sound": "Eligi sonon",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index 355c901fa5..63f197c284 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Nuevos seguidores:",
"notifications.column_settings.mention": "Menciones:",
"notifications.column_settings.push": "Notificaciones push",
- "notifications.column_settings.push_meta": "Este dispositivo",
"notifications.column_settings.reblog": "Retoots:",
"notifications.column_settings.show": "Mostrar en columna",
"notifications.column_settings.sound": "Reproducir sonido",
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index 1dc42ae680..e4b1154b70 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Jarraitzaile berriak:",
"notifications.column_settings.mention": "Aipamenak:",
"notifications.column_settings.push": "Push jakinarazpenak",
- "notifications.column_settings.push_meta": "Gailu hau",
"notifications.column_settings.reblog": "Bultzadak:",
"notifications.column_settings.show": "Erakutsi zutabean",
"notifications.column_settings.sound": "Jo soinua",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index 2e39999188..fb4ded11c6 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "پیگیران تازه:",
"notifications.column_settings.mention": "نامبردنها:",
"notifications.column_settings.push": "اعلانها از سمت سرور",
- "notifications.column_settings.push_meta": "این دستگاه",
"notifications.column_settings.reblog": "بازبوقها:",
"notifications.column_settings.show": "نمایش در ستون",
"notifications.column_settings.sound": "پخش صدا",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index f6c0469be8..caf949e8c4 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Uudet seuraajat:",
"notifications.column_settings.mention": "Maininnat:",
"notifications.column_settings.push": "Push-ilmoitukset",
- "notifications.column_settings.push_meta": "Tämä laite",
"notifications.column_settings.reblog": "Buustit:",
"notifications.column_settings.show": "Näytä sarakkeessa",
"notifications.column_settings.sound": "Äänimerkki",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index 075bdcf308..ff09a14024 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Nouveaux⋅elles abonné⋅e·s :",
"notifications.column_settings.mention": "Mentions :",
"notifications.column_settings.push": "Notifications",
- "notifications.column_settings.push_meta": "Cet appareil",
"notifications.column_settings.reblog": "Partages :",
"notifications.column_settings.show": "Afficher dans la colonne",
"notifications.column_settings.sound": "Émettre un son",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index 8b830ae7bb..6afa21c9fb 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Novos seguidores:",
"notifications.column_settings.mention": "Mencións:",
"notifications.column_settings.push": "Enviar notificacións",
- "notifications.column_settings.push_meta": "Este aparello",
"notifications.column_settings.reblog": "Promocións:",
"notifications.column_settings.show": "Mostrar en columna",
"notifications.column_settings.sound": "Reproducir son",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index 4aee822129..d670d8a55a 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "עוקבים חדשים:",
"notifications.column_settings.mention": "פניות:",
"notifications.column_settings.push": "הודעות בדחיפה",
- "notifications.column_settings.push_meta": "מכשיר זה",
"notifications.column_settings.reblog": "הדהודים:",
"notifications.column_settings.show": "הצגה בטור",
"notifications.column_settings.sound": "שמע מופעל",
diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json
index a138cf589e..b76b82e1bd 100644
--- a/app/javascript/mastodon/locales/hr.json
+++ b/app/javascript/mastodon/locales/hr.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Novi sljedbenici:",
"notifications.column_settings.mention": "Spominjanja:",
"notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.push_meta": "This device",
"notifications.column_settings.reblog": "Boostovi:",
"notifications.column_settings.show": "Prikaži u stupcu",
"notifications.column_settings.sound": "Sviraj zvuk",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index 6a4d0ecf01..57a8b7cfa3 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Új követők:",
"notifications.column_settings.mention": "Megemítéseim:",
"notifications.column_settings.push": "Push értesítések",
- "notifications.column_settings.push_meta": "Ezen eszköz",
"notifications.column_settings.reblog": "Rebloggolások:",
"notifications.column_settings.show": "Oszlopban mutatás",
"notifications.column_settings.sound": "Hang lejátszása",
diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json
index 7d70902360..077748a0a7 100644
--- a/app/javascript/mastodon/locales/hy.json
+++ b/app/javascript/mastodon/locales/hy.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Նոր հետեւողներ՝",
"notifications.column_settings.mention": "Նշումներ՝",
"notifications.column_settings.push": "Հրելու ծանուցումներ",
- "notifications.column_settings.push_meta": "Այս սարքը",
"notifications.column_settings.reblog": "Տարածածներից՝",
"notifications.column_settings.show": "Ցուցադրել սյունում",
"notifications.column_settings.sound": "Ձայն հանել",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index c8ed00e9f4..3d80c09496 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Pengikut baru:",
"notifications.column_settings.mention": "Balasan:",
"notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.push_meta": "This device",
"notifications.column_settings.reblog": "Boost:",
"notifications.column_settings.show": "Tampilkan dalam kolom",
"notifications.column_settings.sound": "Mainkan suara",
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index c92ceccd1f..9059b3a2b2 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Nova sequanti:",
"notifications.column_settings.mention": "Mencioni:",
"notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.push_meta": "This device",
"notifications.column_settings.reblog": "Repeti:",
"notifications.column_settings.show": "Montrar en kolumno",
"notifications.column_settings.sound": "Plear sono",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index e9eb62e710..5d8e3fe4ab 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -3,7 +3,7 @@
"account.block": "Blocca @{name}",
"account.block_domain": "Nascondi tutto da {domain}",
"account.blocked": "Bloccato",
- "account.direct": "Direct Message @{name}",
+ "account.direct": "Invia messaggio diretto a @{name}",
"account.disclaimer_full": "Il profilo dell'utente mostrato qui sotto potrebbe essere incompleto.",
"account.domain_blocked": "Dominio nascosto",
"account.edit_profile": "Modifica profilo",
@@ -54,7 +54,7 @@
"column.lists": "Liste",
"column.mutes": "Utenti silenziati",
"column.notifications": "Notifiche",
- "column.pins": "Pinned toot",
+ "column.pins": "Toot fissati in cima",
"column.public": "Timeline federata",
"column_back_button.label": "Indietro",
"column_header.hide_settings": "Nascondi impostazioni",
@@ -79,11 +79,11 @@
"compose_form.spoiler.unmarked": "Il testo non è nascosto",
"compose_form.spoiler_placeholder": "Content warning",
"confirmation_modal.cancel": "Annulla",
- "confirmations.block.confirm": "Block",
+ "confirmations.block.confirm": "Blocca",
"confirmations.block.message": "Sei sicuro di voler bloccare {name}?",
- "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.confirm": "Cancella",
"confirmations.delete.message": "Sei sicuro di voler cancellare questo status?",
- "confirmations.delete_list.confirm": "Delete",
+ "confirmations.delete_list.confirm": "Cancella",
"confirmations.delete_list.message": "Sei sicuro di voler cancellare definitivamente questa lista?",
"confirmations.domain_block.confirm": "Nascondi intero dominio",
"confirmations.domain_block.message": "Sei davvero sicuro che vuoi bloccare l'intero {domain}? Nella maggior parte dei casi, pochi blocchi o silenziamenti mirati sono sufficienti e preferibili. Non vedrai nessun contenuto di quel dominio né nelle timeline pubbliche né nelle notifiche. I tuoi seguaci di quel dominio saranno eliminati.",
@@ -119,7 +119,7 @@
"empty_column.hashtag": "Non c'è ancora nessun post con questo hashtag.",
"empty_column.home": "Non stai ancora seguendo nessuno. Visita {public} o usa la ricerca per incontrare nuove persone.",
"empty_column.home.public_timeline": "la timeline pubblica",
- "empty_column.list": "Non c'è niente in questo elenco ancora. Quando i membri di questo elenco postano nuovi stati, questi appariranno qui.",
+ "empty_column.list": "Non c'è ancora niente in questa lista. Quando i membri di questa lista pubblicheranno nuovi stati, appariranno qui.",
"empty_column.lists": "Non hai ancora nessuna lista. Quando ne creerai qualcuna, comparirà qui.",
"empty_column.mutes": "Non hai ancora silenziato nessun utente.",
"empty_column.notifications": "Non hai ancora nessuna notifica. Interagisci con altri per iniziare conversazioni.",
@@ -179,7 +179,7 @@
"lists.new.title_placeholder": "Titolo della nuova lista",
"lists.search": "Cerca tra le persone che segui",
"lists.subheading": "Le tue liste",
- "loading_indicator.label": "Carico...",
+ "loading_indicator.label": "Caricamento...",
"media_gallery.toggle_visible": "Imposta visibilità",
"missing_indicator.label": "Non trovato",
"missing_indicator.sublabel": "Risorsa non trovata",
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Nuovi seguaci:",
"notifications.column_settings.mention": "Menzioni:",
"notifications.column_settings.push": "Notifiche push",
- "notifications.column_settings.push_meta": "Questo dispositivo",
"notifications.column_settings.reblog": "Post condivisi:",
"notifications.column_settings.show": "Mostra in colonna",
"notifications.column_settings.sound": "Riproduci suono",
@@ -242,7 +241,7 @@
"onboarding.page_three.search": "Usa la barra di ricerca per trovare persone e hashtag, come {illustration} e {introductions}. Per trovare una persona che non è su questa istanza, usa il suo nome utente completo.",
"onboarding.page_two.compose": "Puoi scrivere dei post dalla colonna di composizione. Puoi caricare immagini, modificare le impostazioni di privacy, e aggiungere avvisi sul contenuto con le icone qui sotto.",
"onboarding.skip": "Salta",
- "privacy.change": "Modifica privacy post",
+ "privacy.change": "Modifica privacy del post",
"privacy.direct.long": "Invia solo a utenti menzionati",
"privacy.direct.short": "Diretto",
"privacy.private.long": "Invia solo ai seguaci",
@@ -261,7 +260,7 @@
"reply_indicator.cancel": "Annulla",
"report.forward": "Inoltra a {target}",
"report.forward_hint": "Questo account appartiene a un altro server. Mandare anche là una copia anonima del rapporto?",
- "report.hint": "La segnalazione sara' invata ai tuoi moderatori di istanza. Di seguito, puoi fornire il motivo per il quale stai segnalando questo account:",
+ "report.hint": "La segnalazione sarà inviata ai moderatori della tua istanza. Di seguito, puoi fornire il motivo per il quale stai segnalando questo account:",
"report.placeholder": "Commenti aggiuntivi",
"report.submit": "Invia",
"report.target": "Invio la segnalazione {target}",
@@ -328,10 +327,10 @@
"video.close": "Chiudi video",
"video.exit_fullscreen": "Esci da modalità a schermo intero",
"video.expand": "Espandi video",
- "video.fullscreen": "Full screen",
+ "video.fullscreen": "Schermo intero",
"video.hide": "Nascondi video",
"video.mute": "Silenzia suono",
- "video.pause": "Pause",
+ "video.pause": "Pausa",
"video.play": "Avvia",
"video.unmute": "Riattiva suono"
}
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index 04a2e46922..c843870517 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -221,7 +221,6 @@
"notifications.column_settings.follow": "新しいフォロワー:",
"notifications.column_settings.mention": "返信:",
"notifications.column_settings.push": "プッシュ通知",
- "notifications.column_settings.push_meta": "このデバイス",
"notifications.column_settings.reblog": "ブースト:",
"notifications.column_settings.show": "カラムに表示",
"notifications.column_settings.sound": "通知音を再生",
diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json
index ec6e211c6a..21cd7d6446 100644
--- a/app/javascript/mastodon/locales/ka.json
+++ b/app/javascript/mastodon/locales/ka.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "ახალი მიმდევრები:",
"notifications.column_settings.mention": "ხსენებები:",
"notifications.column_settings.push": "ფუშ შეტყობინებები",
- "notifications.column_settings.push_meta": "ეს მოწყობილობა",
"notifications.column_settings.reblog": "ბუსტები:",
"notifications.column_settings.show": "გამოჩნდეს სვეტში",
"notifications.column_settings.sound": "ხმის დაკვრა",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index 15e8524e06..8e0f9f59f7 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "새 팔로워:",
"notifications.column_settings.mention": "답글:",
"notifications.column_settings.push": "푸시 알림",
- "notifications.column_settings.push_meta": "이 장치",
"notifications.column_settings.reblog": "부스트:",
"notifications.column_settings.show": "컬럼에 표시",
"notifications.column_settings.sound": "효과음 재생",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index f829146f1c..e6b85692c9 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Nieuwe volgers:",
"notifications.column_settings.mention": "Vermeldingen:",
"notifications.column_settings.push": "Pushmeldingen",
- "notifications.column_settings.push_meta": "Dit apparaat",
"notifications.column_settings.reblog": "Boosts:",
"notifications.column_settings.show": "In kolom tonen",
"notifications.column_settings.sound": "Geluid afspelen",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index e531789a90..4a8176e82b 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Nye følgere:",
"notifications.column_settings.mention": "Nevnt:",
"notifications.column_settings.push": "Push varsler",
- "notifications.column_settings.push_meta": "Denne enheten",
"notifications.column_settings.reblog": "Fremhevet:",
"notifications.column_settings.show": "Vis i kolonne",
"notifications.column_settings.sound": "Spill lyd",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index 182710038c..64cbaef554 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Nòus seguidors :",
"notifications.column_settings.mention": "Mencions :",
"notifications.column_settings.push": "Notificacions",
- "notifications.column_settings.push_meta": "Aqueste periferic",
"notifications.column_settings.reblog": "Partatges :",
"notifications.column_settings.show": "Mostrar dins la colomna",
"notifications.column_settings.sound": "Emetre un son",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index aa2535bf7f..0b9828813d 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -221,7 +221,6 @@
"notifications.column_settings.follow": "Nowi śledzący:",
"notifications.column_settings.mention": "Wspomnienia:",
"notifications.column_settings.push": "Powiadomienia push",
- "notifications.column_settings.push_meta": "To urządzenie",
"notifications.column_settings.reblog": "Podbicia:",
"notifications.column_settings.show": "Pokaż w kolumnie",
"notifications.column_settings.sound": "Odtwarzaj dźwięk",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index 9c48f0bc14..3e5b5da8e1 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Novos seguidores:",
"notifications.column_settings.mention": "Menções:",
"notifications.column_settings.push": "Enviar notificações",
- "notifications.column_settings.push_meta": "Este aparelho",
"notifications.column_settings.reblog": "Compartilhamento:",
"notifications.column_settings.show": "Mostrar nas colunas",
"notifications.column_settings.sound": "Reproduzir som",
diff --git a/app/javascript/mastodon/locales/pt.json b/app/javascript/mastodon/locales/pt.json
index 096fded95e..e9d91f631d 100644
--- a/app/javascript/mastodon/locales/pt.json
+++ b/app/javascript/mastodon/locales/pt.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Novos seguidores:",
"notifications.column_settings.mention": "Menções:",
"notifications.column_settings.push": "Notificações Push",
- "notifications.column_settings.push_meta": "Este dispositivo",
"notifications.column_settings.reblog": "Partilhas:",
"notifications.column_settings.show": "Mostrar nas colunas",
"notifications.column_settings.sound": "Reproduzir som",
diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json
index fda82136ea..1d6e73bfdd 100644
--- a/app/javascript/mastodon/locales/ro.json
+++ b/app/javascript/mastodon/locales/ro.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Noi urmăritori:",
"notifications.column_settings.mention": "Mențiuni:",
"notifications.column_settings.push": "Notificări push",
- "notifications.column_settings.push_meta": "Acest dispozitiv",
"notifications.column_settings.reblog": "Redistribuite:",
"notifications.column_settings.show": "Arată în coloană",
"notifications.column_settings.sound": "Redă sunet",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index 8961136a3c..15fbfac3f8 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Новые подписчики:",
"notifications.column_settings.mention": "Упоминания:",
"notifications.column_settings.push": "Push-уведомления",
- "notifications.column_settings.push_meta": "Это устройство",
"notifications.column_settings.reblog": "Продвижения:",
"notifications.column_settings.show": "Показывать в колонке",
"notifications.column_settings.sound": "Проигрывать звук",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index 1264b6d08a..11a6b76c1b 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Noví následujúci:",
"notifications.column_settings.mention": "Zmienenia:",
"notifications.column_settings.push": "Push notifikácie",
- "notifications.column_settings.push_meta": "Toto zariadenie",
"notifications.column_settings.reblog": "Boosty:",
"notifications.column_settings.show": "Zobraziť v stĺpci",
"notifications.column_settings.sound": "Prehrať zvuk",
diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json
index 6250aab624..f715abe85f 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "New followers:",
"notifications.column_settings.mention": "Mentions:",
"notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.push_meta": "This device",
"notifications.column_settings.reblog": "Boosts:",
"notifications.column_settings.show": "Show in column",
"notifications.column_settings.sound": "Play sound",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index 0ef07a1708..7131d30443 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Novi pratioci:",
"notifications.column_settings.mention": "Pominjanja:",
"notifications.column_settings.push": "Guraj obaveštenja",
- "notifications.column_settings.push_meta": "Ovaj uređaj",
"notifications.column_settings.reblog": "Podrški:",
"notifications.column_settings.show": "Prikaži u koloni",
"notifications.column_settings.sound": "Puštaj zvuk",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index ca2c1b225e..806c0acb3f 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Нови пратиоци:",
"notifications.column_settings.mention": "Помињања:",
"notifications.column_settings.push": "Гурај обавештења",
- "notifications.column_settings.push_meta": "Овај уређај",
"notifications.column_settings.reblog": "Подршки:",
"notifications.column_settings.show": "Прикажи у колони",
"notifications.column_settings.sound": "Пуштај звук",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index c7df96cf5d..f9129d3687 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Nya följare:",
"notifications.column_settings.mention": "Omnämningar:",
"notifications.column_settings.push": "Push meddelanden",
- "notifications.column_settings.push_meta": "Denna anordning",
"notifications.column_settings.reblog": "Knuffar:",
"notifications.column_settings.show": "Visa i kolumnen",
"notifications.column_settings.sound": "Spela upp ljud",
diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json
index e0237c023c..427e9a3dc6 100644
--- a/app/javascript/mastodon/locales/ta.json
+++ b/app/javascript/mastodon/locales/ta.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "New followers:",
"notifications.column_settings.mention": "Mentions:",
"notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.push_meta": "This device",
"notifications.column_settings.reblog": "Boosts:",
"notifications.column_settings.show": "Show in column",
"notifications.column_settings.sound": "Play sound",
diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json
index 49f3ce2d9f..bc13b02f16 100644
--- a/app/javascript/mastodon/locales/te.json
+++ b/app/javascript/mastodon/locales/te.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "క్రొత్త అనుచరులు:",
"notifications.column_settings.mention": "ప్రస్తావనలు:",
"notifications.column_settings.push": "పుష్ ప్రకటనలు",
- "notifications.column_settings.push_meta": "ఈ పరికరం",
"notifications.column_settings.reblog": "బూస్ట్ లు:",
"notifications.column_settings.show": "నిలువు వరుసలో చూపు",
"notifications.column_settings.sound": "ధ్వనిని ప్లే చేయి",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index 2af5bfca17..3114bca60b 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "New followers:",
"notifications.column_settings.mention": "Mentions:",
"notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.push_meta": "This device",
"notifications.column_settings.reblog": "Boosts:",
"notifications.column_settings.show": "Show in column",
"notifications.column_settings.sound": "Play sound",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index 68dc37e6b0..a661b022b2 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Yeni takipçiler:",
"notifications.column_settings.mention": "Bahsedilenler:",
"notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.push_meta": "This device",
"notifications.column_settings.reblog": "Boost’lar:",
"notifications.column_settings.show": "Bildirimlerde göster",
"notifications.column_settings.sound": "Ses çal",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index 5517abdf8a..116dfc489f 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "Нові підписники:",
"notifications.column_settings.mention": "Згадки:",
"notifications.column_settings.push": "Push-сповіщення",
- "notifications.column_settings.push_meta": "Цей пристрій",
"notifications.column_settings.reblog": "Передмухи:",
"notifications.column_settings.show": "Показати в колонці",
"notifications.column_settings.sound": "Відтворювати звуки",
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 254beab42a..69ecd94312 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "当有人关注你时:",
"notifications.column_settings.mention": "当有人在嘟文中提及你时:",
"notifications.column_settings.push": "推送通知",
- "notifications.column_settings.push_meta": "此设备",
"notifications.column_settings.reblog": "当有人转嘟了你的嘟文时:",
"notifications.column_settings.show": "在通知栏显示",
"notifications.column_settings.sound": "播放音效",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index ce141a8a79..fc5376699d 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "關注你:",
"notifications.column_settings.mention": "提及你:",
"notifications.column_settings.push": "推送通知",
- "notifications.column_settings.push_meta": "這臺設備",
"notifications.column_settings.reblog": "轉推你的文章:",
"notifications.column_settings.show": "在通知欄顯示",
"notifications.column_settings.sound": "播放音效",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index fe4a81170b..458af6b956 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -216,7 +216,6 @@
"notifications.column_settings.follow": "新的關注者:",
"notifications.column_settings.mention": "提到:",
"notifications.column_settings.push": "推送通知",
- "notifications.column_settings.push_meta": "這臺設備",
"notifications.column_settings.reblog": "轉嘟:",
"notifications.column_settings.show": "顯示在欄位中",
"notifications.column_settings.sound": "播放音效",
diff --git a/app/javascript/mastodon/service_worker/web_push_notifications.js b/app/javascript/mastodon/service_worker/web_push_notifications.js
index d61d916b19..80a4fb3299 100644
--- a/app/javascript/mastodon/service_worker/web_push_notifications.js
+++ b/app/javascript/mastodon/service_worker/web_push_notifications.js
@@ -168,7 +168,7 @@ const openUrl = url =>
if (webClients.length !== 0) {
const client = findBestClient(webClients);
- const { pathname } = new URL(url);
+ const { pathname } = new URL(url, self.location);
if (pathname.startsWith('/web/')) {
return client.focus().then(client => client.postMessage({
diff --git a/app/javascript/styles/mailer.scss b/app/javascript/styles/mailer.scss
index dbe070f9a3..d83bd4d960 100644
--- a/app/javascript/styles/mailer.scss
+++ b/app/javascript/styles/mailer.scss
@@ -169,7 +169,7 @@ p {
font-family: Helvetica, Arial, sans-serif;
@media only screen {
- font-family: 'mastodon-font-sans-serif', sans-serif !important;
+ font-family: $font-sans-serif, sans-serif !important;
}
}
diff --git a/app/javascript/styles/mastodon/about.scss b/app/javascript/styles/mastodon/about.scss
index 228dd96f0d..dc456be3e7 100644
--- a/app/javascript/styles/mastodon/about.scss
+++ b/app/javascript/styles/mastodon/about.scss
@@ -16,7 +16,7 @@ $small-breakpoint: 960px;
}
.rich-formatting {
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
font-size: 16px;
font-weight: 400;
font-size: 16px;
@@ -31,7 +31,7 @@ $small-breakpoint: 960px;
p,
li {
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
font-size: 16px;
font-weight: 400;
font-size: 16px;
@@ -62,7 +62,7 @@ $small-breakpoint: 960px;
}
h1 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 26px;
line-height: 30px;
font-weight: 500;
@@ -70,7 +70,7 @@ $small-breakpoint: 960px;
color: $secondary-text-color;
small {
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
display: block;
font-size: 18px;
font-weight: 400;
@@ -79,7 +79,7 @@ $small-breakpoint: 960px;
}
h2 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 22px;
line-height: 26px;
font-weight: 500;
@@ -88,7 +88,7 @@ $small-breakpoint: 960px;
}
h3 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 18px;
line-height: 24px;
font-weight: 500;
@@ -97,7 +97,7 @@ $small-breakpoint: 960px;
}
h4 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 16px;
line-height: 24px;
font-weight: 500;
@@ -106,7 +106,7 @@ $small-breakpoint: 960px;
}
h5 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 14px;
line-height: 24px;
font-weight: 500;
@@ -115,7 +115,7 @@ $small-breakpoint: 960px;
}
h6 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 12px;
line-height: 24px;
font-weight: 500;
@@ -180,7 +180,7 @@ $small-breakpoint: 960px;
&__section {
flex: 1 0 0;
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
font-size: 16px;
line-height: 28px;
color: $primary-text-color;
@@ -221,7 +221,7 @@ $small-breakpoint: 960px;
bottom: -40px;
.panel-header {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 14px;
line-height: 24px;
font-weight: 500;
@@ -450,7 +450,7 @@ $small-breakpoint: 960px;
p,
li {
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
font-size: 16px;
font-weight: 400;
font-size: 16px;
@@ -499,7 +499,7 @@ $small-breakpoint: 960px;
}
h1 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 26px;
line-height: 30px;
font-weight: 500;
@@ -507,7 +507,7 @@ $small-breakpoint: 960px;
color: $secondary-text-color;
small {
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
display: block;
font-size: 18px;
font-weight: 400;
@@ -516,7 +516,7 @@ $small-breakpoint: 960px;
}
h2 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 22px;
line-height: 26px;
font-weight: 500;
@@ -525,7 +525,7 @@ $small-breakpoint: 960px;
}
h3 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 18px;
line-height: 24px;
font-weight: 500;
@@ -534,7 +534,7 @@ $small-breakpoint: 960px;
}
h4 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 16px;
line-height: 24px;
font-weight: 500;
@@ -543,7 +543,7 @@ $small-breakpoint: 960px;
}
h5 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 14px;
line-height: 24px;
font-weight: 500;
@@ -552,7 +552,7 @@ $small-breakpoint: 960px;
}
h6 {
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-size: 12px;
line-height: 24px;
font-weight: 500;
@@ -619,7 +619,7 @@ $small-breakpoint: 960px;
.hero .heading {
padding-bottom: 20px;
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
font-size: 16px;
font-weight: 400;
font-size: 16px;
@@ -670,7 +670,7 @@ $small-breakpoint: 960px;
text-decoration: none;
padding: 12px 16px;
line-height: 32px;
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-weight: 500;
font-size: 14px;
@@ -743,7 +743,7 @@ $small-breakpoint: 960px;
.about-short {
background: darken($ui-base-color, 4%);
padding: 50px 0 30px;
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
font-size: 16px;
font-weight: 400;
font-size: 16px;
@@ -1012,7 +1012,7 @@ $small-breakpoint: 960px;
display: flex;
-webkit-overflow-scrolling: touch;
-ms-overflow-style: -ms-autohiding-scrollbar;
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
font-size: 13px;
line-height: 18px;
font-weight: 400;
diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss
index 9dfd89dc26..b6c771abf3 100644
--- a/app/javascript/styles/mastodon/admin.scss
+++ b/app/javascript/styles/mastodon/admin.scss
@@ -432,7 +432,7 @@ $no-columns-breakpoint: 600px;
border-radius: 0 0 4px 4px;
padding: 10px;
color: $darker-text-color;
- font-family: 'mastodon-font-monospace', monospace;
+ font-family: $font-monospace, monospace;
font-size: 12px;
word-wrap: break-word;
min-height: 20px;
diff --git a/app/javascript/styles/mastodon/basics.scss b/app/javascript/styles/mastodon/basics.scss
index 3bbb31e6e3..746def6251 100644
--- a/app/javascript/styles/mastodon/basics.scss
+++ b/app/javascript/styles/mastodon/basics.scss
@@ -6,7 +6,7 @@
}
body {
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
background: darken($ui-base-color, 8%);
font-size: 13px;
line-height: 18px;
@@ -29,8 +29,8 @@ body {
// Fira Sans => Firefox OS
// Droid Sans => Older Androids (<4.0)
// Helvetica Neue => Older macOS <10.11
- // mastodon-font-sans-serif => web-font (Roboto) fallback and newer Androids (>=4.0)
- font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", mastodon-font-sans-serif, sans-serif;
+ // $font-sans-serif => web-font (Roboto) fallback and newer Androids (>=4.0)
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", $font-sans-serif, sans-serif;
}
&.app-body {
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index 490e26cccb..ecd1a80631 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -552,7 +552,7 @@
.character-counter {
cursor: default;
- font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-family: $font-sans-serif, sans-serif;
font-size: 14px;
font-weight: 600;
color: $lighter-text-color;
@@ -631,11 +631,13 @@
.status__content,
.reply-indicator__content {
+ position: relative;
font-size: 15px;
line-height: 20px;
word-wrap: break-word;
font-weight: 400;
overflow: hidden;
+ text-overflow: ellipsis;
white-space: pre-wrap;
padding-top: 2px;
color: $primary-text-color;
@@ -721,6 +723,26 @@
}
}
+.status__content.status__content--collapsed {
+ max-height: 20px * 15; // 15 lines is roughly above 500 characters
+}
+
+.status__content__read-more-button {
+ display: block;
+ font-size: 15px;
+ line-height: 20px;
+ color: lighten($ui-highlight-color, 8%);
+ border: 0;
+ background: transparent;
+ padding: 0;
+ padding-top: 8px;
+
+ &:hover,
+ &:active {
+ text-decoration: underline;
+ }
+}
+
.status__content__spoiler-link {
display: inline-block;
border-radius: 2px;
@@ -3009,8 +3031,7 @@ a.status-card {
line-height: 24px;
}
-.setting-toggle__label,
-.setting-meta__label {
+.setting-toggle__label {
color: $darker-text-color;
display: inline-block;
margin-bottom: 14px;
@@ -3018,10 +3039,6 @@ a.status-card {
vertical-align: middle;
}
-.setting-meta__label {
- float: right;
-}
-
.empty-column-indicator,
.error-column {
color: $dark-text-color;
@@ -5122,7 +5139,7 @@ noscript {
width: 100%;
border: none;
padding: 10px;
- font-family: 'mastodon-font-monospace', monospace;
+ font-family: $font-monospace, monospace;
background: $ui-base-color;
color: $primary-text-color;
font-size: 14px;
diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss
index 47582f3237..44fc1e5386 100644
--- a/app/javascript/styles/mastodon/containers.scss
+++ b/app/javascript/styles/mastodon/containers.scss
@@ -37,7 +37,7 @@
outline: 0;
padding: 12px 16px;
line-height: 32px;
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
font-weight: 500;
font-size: 14px;
}
@@ -627,7 +627,7 @@
font-size: 18px;
margin-bottom: 5px;
color: $primary-text-color;
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
}
}
diff --git a/app/javascript/styles/mastodon/dashboard.scss b/app/javascript/styles/mastodon/dashboard.scss
index 949ca733f4..86cf6c61b6 100644
--- a/app/javascript/styles/mastodon/dashboard.scss
+++ b/app/javascript/styles/mastodon/dashboard.scss
@@ -35,7 +35,7 @@
font-weight: 500;
font-size: 24px;
color: $primary-text-color;
- font-family: 'mastodon-font-display', sans-serif;
+ font-family: $font-display, sans-serif;
margin-bottom: 20px;
}
diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss
index cbd3de94c8..be2bf7cead 100644
--- a/app/javascript/styles/mastodon/forms.scss
+++ b/app/javascript/styles/mastodon/forms.scss
@@ -1,7 +1,7 @@
$no-columns-breakpoint: 600px;
code {
- font-family: 'mastodon-font-monospace', monospace;
+ font-family: $font-monospace, monospace;
font-weight: 400;
}
@@ -474,7 +474,7 @@ code {
width: 100%;
border: none;
padding: 10px;
- font-family: 'mastodon-font-monospace', monospace;
+ font-family: $font-monospace, monospace;
background: $ui-base-color;
color: $primary-text-color;
font-size: 14px;
@@ -718,7 +718,7 @@ code {
.form_admin_settings_custom_css,
.form_admin_settings_closed_registrations_message {
textarea {
- font-family: 'mastodon-font-monospace', monospace;
+ font-family: $font-monospace, monospace;
}
}
@@ -742,7 +742,7 @@ code {
border: 0;
padding: 10px;
font-size: 14px;
- font-family: 'mastodon-font-monospace', monospace;
+ font-family: $font-monospace, monospace;
}
button {
diff --git a/app/javascript/styles/mastodon/rtl.scss b/app/javascript/styles/mastodon/rtl.scss
index b8c0efad86..ffc875b88b 100644
--- a/app/javascript/styles/mastodon/rtl.scss
+++ b/app/javascript/styles/mastodon/rtl.scss
@@ -46,8 +46,8 @@ body.rtl {
.column-header__buttons {
left: 0;
right: auto;
- margin-left: -15px;
- margin-right: 0;
+ margin-left: 0;
+ margin-right: -15px;
}
.column-inline-form .icon-button {
@@ -78,10 +78,6 @@ body.rtl {
margin-right: 8px;
}
- .setting-meta__label {
- float: left;
- }
-
.status__avatar {
left: auto;
right: 10px;
@@ -145,6 +141,19 @@ body.rtl {
margin-right: 6px;
}
+ .status__action-bar {
+
+ &__counter {
+ margin-right: 0;
+ margin-left: 11px;
+
+ .status__action-bar-button {
+ margin-right: 0;
+ margin-left: 4px;
+ }
+ }
+ }
+
.status__action-bar-button {
float: right;
margin-right: 0;
@@ -285,4 +294,13 @@ body.rtl {
}
}
}
+
+ .public-layout {
+ .header {
+ .nav-button {
+ margin-left: 8px;
+ margin-right: 0;
+ }
+ }
+ }
}
diff --git a/app/javascript/styles/mastodon/tables.scss b/app/javascript/styles/mastodon/tables.scss
index c2206cf55d..adb75afe5b 100644
--- a/app/javascript/styles/mastodon/tables.scss
+++ b/app/javascript/styles/mastodon/tables.scss
@@ -90,7 +90,7 @@
}
samp {
- font-family: 'mastodon-font-monospace', monospace;
+ font-family: $font-monospace, monospace;
}
button.table-action-link {
diff --git a/app/javascript/styles/mastodon/variables.scss b/app/javascript/styles/mastodon/variables.scss
index 009f0a3c9b..a82c442296 100644
--- a/app/javascript/styles/mastodon/variables.scss
+++ b/app/javascript/styles/mastodon/variables.scss
@@ -48,3 +48,7 @@ $media-modal-media-max-width: 100%;
$media-modal-media-max-height: 80%;
$no-gap-breakpoint: 415px;
+
+$font-sans-serif: 'mastodon-font-sans-serif' !default;
+$font-display: 'mastodon-font-display' !default;
+$font-monospace: 'mastodon-font-monospace' !default;
diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb
index f40e1fa3ec..9782897884 100644
--- a/app/lib/activitypub/activity/create.rb
+++ b/app/lib/activitypub/activity/create.rb
@@ -92,7 +92,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
return if tag['href'].blank?
account = account_from_uri(tag['href'])
- account = FetchRemoteAccountService.new.call(tag['href'], id: false) if account.nil?
+ account = ::FetchRemoteAccountService.new.call(tag['href'], id: false) if account.nil?
return if account.nil?
account.mentions.create(status: status)
end
diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb
index b59a9f1cde..b10e5dd244 100644
--- a/app/lib/feed_manager.rb
+++ b/app/lib/feed_manager.rb
@@ -40,6 +40,7 @@ class FeedManager
end
def push_to_list(list, status)
+ return false if status.reply? && status.in_reply_to_account_id != status.account_id
return false unless add_to_feed(:list, list.id, status)
trim(:list, list.id)
PushUpdateWorker.perform_async(list.account_id, status.id, "timeline:list:#{list.id}") if push_update_required?("timeline:list:#{list.id}")
diff --git a/app/lib/user_settings_decorator.rb b/app/lib/user_settings_decorator.rb
index 4bedfd6805..e5b1685027 100644
--- a/app/lib/user_settings_decorator.rb
+++ b/app/lib/user_settings_decorator.rb
@@ -15,23 +15,24 @@ class UserSettingsDecorator
private
def process_update
- user.settings['notification_emails'] = merged_notification_emails if change?('notification_emails')
- user.settings['interactions'] = merged_interactions if change?('interactions')
- user.settings['default_privacy'] = default_privacy_preference if change?('setting_default_privacy')
- user.settings['default_sensitive'] = default_sensitive_preference if change?('setting_default_sensitive')
- user.settings['default_language'] = default_language_preference if change?('setting_default_language')
- user.settings['unfollow_modal'] = unfollow_modal_preference if change?('setting_unfollow_modal')
- user.settings['boost_modal'] = boost_modal_preference if change?('setting_boost_modal')
- user.settings['favourite_modal'] = favourite_modal_preference if change?('setting_favourite_modal')
- user.settings['delete_modal'] = delete_modal_preference if change?('setting_delete_modal')
- user.settings['auto_play_gif'] = auto_play_gif_preference if change?('setting_auto_play_gif')
- user.settings['display_sensitive_media'] = display_sensitive_media_preference if change?('setting_display_sensitive_media')
- user.settings['reduce_motion'] = reduce_motion_preference if change?('setting_reduce_motion')
- user.settings['system_font_ui'] = system_font_ui_preference if change?('setting_system_font_ui')
- user.settings['noindex'] = noindex_preference if change?('setting_noindex')
- user.settings['flavour'] = flavour_preference if change?('setting_flavour')
- user.settings['skin'] = skin_preference if change?('setting_skin')
- user.settings['hide_network'] = hide_network_preference if change?('setting_hide_network')
+ user.settings['notification_emails'] = merged_notification_emails if change?('notification_emails')
+ user.settings['interactions'] = merged_interactions if change?('interactions')
+ user.settings['default_privacy'] = default_privacy_preference if change?('setting_default_privacy')
+ user.settings['default_sensitive'] = default_sensitive_preference if change?('setting_default_sensitive')
+ user.settings['default_language'] = default_language_preference if change?('setting_default_language')
+ user.settings['unfollow_modal'] = unfollow_modal_preference if change?('setting_unfollow_modal')
+ user.settings['boost_modal'] = boost_modal_preference if change?('setting_boost_modal')
+ user.settings['favourite_modal'] = favourite_modal_preference if change?('setting_favourite_modal')
+ user.settings['delete_modal'] = delete_modal_preference if change?('setting_delete_modal')
+ user.settings['auto_play_gif'] = auto_play_gif_preference if change?('setting_auto_play_gif')
+ user.settings['display_media'] = display_media_preference if change?('setting_display_media')
+ user.settings['expand_spoilers'] = expand_spoilers_preference if change?('setting_expand_spoilers')
+ user.settings['reduce_motion'] = reduce_motion_preference if change?('setting_reduce_motion')
+ user.settings['system_font_ui'] = system_font_ui_preference if change?('setting_system_font_ui')
+ user.settings['noindex'] = noindex_preference if change?('setting_noindex')
+ user.settings['flavour'] = flavour_preference if change?('setting_flavour')
+ user.settings['skin'] = skin_preference if change?('setting_skin')
+ user.settings['hide_network'] = hide_network_preference if change?('setting_hide_network')
end
def merged_notification_emails
@@ -57,7 +58,7 @@ class UserSettingsDecorator
def boost_modal_preference
boolean_cast_setting 'setting_boost_modal'
end
-
+
def favourite_modal_preference
boolean_cast_setting 'setting_favourite_modal'
end
@@ -74,8 +75,12 @@ class UserSettingsDecorator
boolean_cast_setting 'setting_auto_play_gif'
end
- def display_sensitive_media_preference
- boolean_cast_setting 'setting_display_sensitive_media'
+ def display_media_preference
+ settings['setting_display_media']
+ end
+
+ def expand_spoilers_preference
+ boolean_cast_setting 'setting_expand_spoilers'
end
def reduce_motion_preference
diff --git a/app/models/concerns/paginable.rb b/app/models/concerns/paginable.rb
index 66695677e9..8863094f7d 100644
--- a/app/models/concerns/paginable.rb
+++ b/app/models/concerns/paginable.rb
@@ -19,5 +19,13 @@ module Paginable
query = query.where(arel_table[:id].gt(min_id)) if min_id.present?
query
}
+
+ scope :paginate_by_id, ->(limit, options = {}) {
+ if options[:min_id].present?
+ paginate_by_min_id(limit, options[:min_id]).reverse
+ else
+ paginate_by_max_id(limit, options[:max_id], options[:since_id])
+ end
+ }
end
end
diff --git a/app/models/feed.rb b/app/models/feed.rb
index d99f1ffb2c..5bce88f255 100644
--- a/app/models/feed.rb
+++ b/app/models/feed.rb
@@ -6,16 +6,20 @@ class Feed
@id = id
end
- def get(limit, max_id = nil, since_id = nil)
- from_redis(limit, max_id, since_id)
+ def get(limit, max_id = nil, since_id = nil, min_id = nil)
+ from_redis(limit, max_id, since_id, min_id)
end
protected
- def from_redis(limit, max_id, since_id)
- max_id = '+inf' if max_id.blank?
- since_id = '-inf' if since_id.blank?
- unhydrated = redis.zrevrangebyscore(key, "(#{max_id}", "(#{since_id}", limit: [0, limit], with_scores: true).map(&:first).map(&:to_i)
+ def from_redis(limit, max_id, since_id, min_id)
+ if min_id.blank?
+ max_id = '+inf' if max_id.blank?
+ since_id = '-inf' if since_id.blank?
+ unhydrated = redis.zrevrangebyscore(key, "(#{max_id}", "(#{since_id}", limit: [0, limit], with_scores: true).map(&:first).map(&:to_i)
+ else
+ unhydrated = redis.zrangebyscore(key, "(#{min_id}", '+inf', limit: [0, limit], with_scores: true).map(&:first).map(&:to_i)
+ end
Status.where(id: unhydrated).cache_ids
end
diff --git a/app/models/home_feed.rb b/app/models/home_feed.rb
index b943a34ce1..ba7564983b 100644
--- a/app/models/home_feed.rb
+++ b/app/models/home_feed.rb
@@ -7,9 +7,9 @@ class HomeFeed < Feed
@account = account
end
- def get(limit, max_id = nil, since_id = nil)
+ def get(limit, max_id = nil, since_id = nil, min_id = nil)
if redis.exists("account:#{@account.id}:regeneration")
- from_database(limit, max_id, since_id)
+ from_database(limit, max_id, since_id, min_id)
else
super
end
@@ -17,9 +17,9 @@ class HomeFeed < Feed
private
- def from_database(limit, max_id, since_id)
+ def from_database(limit, max_id, since_id, min_id)
Status.as_home_timeline(@account)
- .paginate_by_max_id(limit, max_id, since_id)
+ .paginate_by_id(limit, max_id: max_id, since_id: since_id, min_id: min_id)
.reject { |status| FeedManager.instance.filter?(:home, status, @account.id) }
end
end
diff --git a/app/models/user.rb b/app/models/user.rb
index 6022a5eb0c..b9e18eecd1 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -95,8 +95,8 @@ class User < ApplicationRecord
has_many :session_activations, dependent: :destroy
delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :favourite_modal, :delete_modal,
- :reduce_motion, :system_font_ui, :noindex, :flavour, :skin, :display_sensitive_media, :hide_network,
- :default_language, to: :settings, prefix: :setting, allow_nil: false
+ :reduce_motion, :system_font_ui, :noindex, :flavour, :skin, :display_media, :hide_network,
+ :expand_spoilers, :default_language, to: :settings, prefix: :setting, allow_nil: false
attr_reader :invite_code
@@ -316,6 +316,14 @@ class User < ApplicationRecord
super
end
+ def show_all_media?
+ setting_display_media == 'show_all'
+ end
+
+ def hide_all_media?
+ setting_display_media == 'hide_all'
+ end
+
protected
def send_devise_notification(notification, *args)
diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb
index 0845d02105..ac08a3f1e7 100644
--- a/app/serializers/initial_state_serializer.rb
+++ b/app/serializers/initial_state_serializer.rb
@@ -24,15 +24,16 @@ class InitialStateSerializer < ActiveModel::Serializer
}
if object.current_account
- store[:me] = object.current_account.id.to_s
- store[:unfollow_modal] = object.current_account.user.setting_unfollow_modal
- store[:boost_modal] = object.current_account.user.setting_boost_modal
- store[:favourite_modal] = object.current_account.user.setting_favourite_modal
- store[:delete_modal] = object.current_account.user.setting_delete_modal
- store[:auto_play_gif] = object.current_account.user.setting_auto_play_gif
- store[:display_sensitive_media] = object.current_account.user.setting_display_sensitive_media
- store[:reduce_motion] = object.current_account.user.setting_reduce_motion
- store[:is_staff] = object.current_account.user.staff?
+ store[:me] = object.current_account.id.to_s
+ store[:unfollow_modal] = object.current_account.user.setting_unfollow_modal
+ store[:boost_modal] = object.current_account.user.setting_boost_modal
+ store[:favourite_modal] = object.current_account.user.setting_favourite_modal
+ store[:delete_modal] = object.current_account.user.setting_delete_modal
+ store[:auto_play_gif] = object.current_account.user.setting_auto_play_gif
+ store[:display_media] = object.current_account.user.setting_display_media
+ store[:expand_spoilers] = object.current_account.user.setting_expand_spoilers
+ store[:reduce_motion] = object.current_account.user.setting_reduce_motion
+ store[:is_staff] = object.current_account.user.staff?
end
store
diff --git a/app/views/accounts/_header.html.haml b/app/views/accounts/_header.html.haml
index 3da270d279..9ceae007d5 100644
--- a/app/views/accounts/_header.html.haml
+++ b/app/views/accounts/_header.html.haml
@@ -16,7 +16,7 @@
= fa_icon('lock') if account.locked?
.public-account-header__tabs__tabs
.details-counters
- .counter{ class: active_nav_class(short_account_url(account)) + active_nav_class(short_account_with_replies_url(account)) + active_nav_class(short_account_media_url(account)) }
+ .counter{ class: active_nav_class(short_account_url(account), short_account_with_replies_url(account), short_account_media_url(account)) }
= link_to short_account_url(account), class: 'u-url u-uid', title: number_with_delimiter(account.statuses_count) do
%span.counter-number= number_to_human account.statuses_count, strip_insignificant_zeros: true
%span.counter-label= t('accounts.posts', count: account.statuses_count)
diff --git a/app/views/accounts/_moved.html.haml b/app/views/accounts/_moved.html.haml
index f99328dbd3..7a777bfea8 100644
--- a/app/views/accounts/_moved.html.haml
+++ b/app/views/accounts/_moved.html.haml
@@ -6,7 +6,7 @@
= t('accounts.moved_html', name: content_tag(:bdi, content_tag(:strong, display_name(account, custom_emojify: true), class: :emojify)), new_profile_link: link_to(content_tag(:strong, safe_join(['@', content_tag(:span, moved_to_account.acct)])), TagManager.instance.url_for(moved_to_account), class: 'mention'))
.moved-account-widget__card
- = link_to TagManager.instance.url_for(moved_to_account), class: 'detailed-status__display-name p-author h-card', target: '_blank', rel: 'noopener' do
+ = link_to TagManager.instance.url_for(moved_to_account), class: 'detailed-status__display-name p-author h-card', target: '_blank', rel: 'me noopener' do
.detailed-status__display-avatar
.account__avatar-overlay
.account__avatar-overlay-base{ style: "background-image: url('#{moved_to_account.avatar.url(:original)}')" }
diff --git a/app/views/admin/reports/_status.html.haml b/app/views/admin/reports/_status.html.haml
index 4d557b0715..b3c145120a 100644
--- a/app/views/admin/reports/_status.html.haml
+++ b/app/views/admin/reports/_status.html.haml
@@ -14,9 +14,9 @@
- unless status.proper.media_attachments.empty?
- if status.proper.media_attachments.first.video?
- video = status.proper.media_attachments.first
- = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: status.proper.sensitive? && !current_account&.user&.setting_display_sensitive_media, width: 610, height: 343, inline: true, alt: video.description
+ = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: !current_account&.user&.show_all_media? && status.proper.sensitive? || current_account&.user&.hide_all_media?, width: 610, height: 343, inline: true, alt: video.description
- else
- = react_component :media_gallery, height: 343, sensitive: status.proper.sensitive? && !current_account&.user&.setting_display_sensitive_media, 'autoPlayGif': current_account&.user&.setting_auto_play_gif, media: status.proper.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
+ = react_component :media_gallery, height: 343, sensitive: !current_account&.user&.show_all_media? && status.sensitive? || current_account&.user&.hide_all_media?, 'autoPlayGif': current_account&.user&.setting_auto_play_gif, media: status.proper.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
.detailed-status__meta
= link_to TagManager.instance.url_for(status), class: 'detailed-status__datetime', target: stream_link_target, rel: 'noopener' do
diff --git a/app/views/settings/preferences/show.html.haml b/app/views/settings/preferences/show.html.haml
index bb267db8ac..751a6e50b7 100644
--- a/app/views/settings/preferences/show.html.haml
+++ b/app/views/settings/preferences/show.html.haml
@@ -44,7 +44,8 @@
.fields-group
= f.input :setting_auto_play_gif, as: :boolean, wrapper: :with_label
- = f.input :setting_display_sensitive_media, as: :boolean, wrapper: :with_label
+ = f.input :setting_display_media, collection: ['default', 'show_all', 'hide_all'], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.defaults.setting_display_media_#{item}"), content_tag(:span, t("simple_form.hints.defaults.setting_display_media_#{item}"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
+ = f.input :setting_expand_spoilers, as: :boolean, wrapper: :with_label
= f.input :setting_reduce_motion, as: :boolean, wrapper: :with_label
= f.input :setting_system_font_ui, as: :boolean, wrapper: :with_label
diff --git a/app/views/stream_entries/_detailed_status.html.haml b/app/views/stream_entries/_detailed_status.html.haml
index d0d9cc5fc5..6cedfb337d 100644
--- a/app/views/stream_entries/_detailed_status.html.haml
+++ b/app/views/stream_entries/_detailed_status.html.haml
@@ -16,17 +16,17 @@
.status__content.emojify<
- if status.spoiler_text?
- %p{ style: 'margin-bottom: 0' }<
+ %p{ :style => ('margin-bottom: 0' unless current_account&.user&.setting_expand_spoilers) }<
%span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)}
%a.status__content__spoiler-link{ href: '#' }= t('statuses.show_more')
- .e-content{ lang: status.language, style: "display: #{status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay)
+ .e-content{ lang: status.language, style: "display: #{!current_account&.user&.setting_expand_spoilers && status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay)
- if !status.media_attachments.empty?
- if status.media_attachments.first.video?
- video = status.media_attachments.first
- = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, width: 670, height: 380, detailed: true, inline: true, alt: video.description
+ = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: !current_account&.user&.show_all_media? && status.sensitive? || current_account&.user&.hide_all_media?, width: 670, height: 380, detailed: true, inline: true, alt: video.description
- else
- = react_component :media_gallery, height: 380, sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, standalone: true, 'autoPlayGif': current_account&.user&.setting_auto_play_gif || autoplay, 'reduceMotion': current_account&.user&.setting_reduce_motion, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
+ = react_component :media_gallery, height: 380, sensitive: !current_account&.user&.show_all_media? && status.sensitive? || current_account&.user&.hide_all_media?, standalone: true, 'autoPlayGif': current_account&.user&.setting_auto_play_gif || autoplay, 'reduceMotion': current_account&.user&.setting_reduce_motion, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
- elsif status.preview_cards.first
= react_component :card, 'maxDescription': 160, card: ActiveModelSerializers::SerializableResource.new(status.preview_cards.first, serializer: REST::PreviewCardSerializer).as_json
diff --git a/app/views/stream_entries/_simple_status.html.haml b/app/views/stream_entries/_simple_status.html.haml
index 4484a7e620..5d7e2ad823 100644
--- a/app/views/stream_entries/_simple_status.html.haml
+++ b/app/views/stream_entries/_simple_status.html.haml
@@ -19,18 +19,18 @@
= fa_icon('lock') if status.account.locked?
.status__content.emojify<
- if status.spoiler_text?
- %p{ style: 'margin-bottom: 0' }<
+ %p{ :style => ('margin-bottom: 0' unless current_account&.user&.setting_expand_spoilers) }<
%span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)}
%a.status__content__spoiler-link{ href: '#' }= t('statuses.show_more')
- .e-content{ lang: status.language, style: "display: #{status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }<
+ .e-content{ lang: status.language, style: "display: #{!current_account&.user&.setting_expand_spoilers && status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }<
= Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay)
- unless status.media_attachments.empty?
- if status.media_attachments.first.video?
- video = status.media_attachments.first
- = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, width: 610, height: 343, inline: true, alt: video.description
+ = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: !current_account&.user&.show_all_media? && status.sensitive? || current_account&.user&.hide_all_media?, width: 610, height: 343, inline: true, alt: video.description
- else
- = react_component :media_gallery, height: 343, sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, 'autoPlayGif': current_account&.user&.setting_auto_play_gif || autoplay, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
+ = react_component :media_gallery, height: 343, sensitive: !current_account&.user&.show_all_media? && status.sensitive? || current_account&.user&.hide_all_media?, 'autoPlayGif': current_account&.user&.setting_auto_play_gif || autoplay, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
.status__action-bar
.status__action-bar__counter
diff --git a/config/boot.rb b/config/boot.rb
index 0a3cd4ebee..593f575e9a 100644
--- a/config/boot.rb
+++ b/config/boot.rb
@@ -1,14 +1,14 @@
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
-require 'bundler/setup' # Set up gems listed in the Gemfile.
+require 'bundler/setup' # Set up gems listed in the Gemfile.
require 'bootsnap' # Speed up boot time by caching expensive operations.
Bootsnap.setup(
cache_dir: 'tmp/cache',
- development_mode: ENV['RAILS_ENV'] == 'development',
+ development_mode: ENV.fetch('RAILS_ENV', 'development') == 'development',
load_path_cache: true,
autoload_paths_cache: true,
- disable_trace: true,
+ disable_trace: false,
compile_cache_iseq: false,
compile_cache_yaml: false
)
diff --git a/config/initializers/statsd.rb b/config/initializers/statsd.rb
index 45702ac94d..ce83fd9de2 100644
--- a/config/initializers/statsd.rb
+++ b/config/initializers/statsd.rb
@@ -9,7 +9,7 @@ if ENV['STATSD_ADDR'].present?
::NSA.inform_statsd(statsd) do |informant|
informant.collect(:action_controller, :web)
informant.collect(:active_record, :db)
- informant.collect(:cache, :cache)
+ informant.collect(:active_support_cache, :cache)
informant.collect(:sidekiq, :sidekiq)
end
end
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index 94f0cbf8a7..b684ff9227 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -618,6 +618,7 @@ ar:
mention: "%{name} أشار إليك في :"
new_followers_summary:
one: و لقد تحصّلت أيضا على متابِع جديد أثناء فترة غيابك! يا للروعة!
+ other: رائع، لقد قام بمتابعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون !
subject:
one: "إشعار جديد واحد منذ آخر زيارة لك لـ \U0001F418"
other: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418"
diff --git a/config/locales/cy.yml b/config/locales/cy.yml
index 1cdba065bf..f78ce26c59 100644
--- a/config/locales/cy.yml
+++ b/config/locales/cy.yml
@@ -1,7 +1,7 @@
---
cy:
about:
- about_hashtag_html: Dyma dwtiau cyhoeddus wedi eu tagio gyda
#%{hashtag}. Gallwch ryngweithio gyda nhw os oes gennych gyfrif yn unrhyw le yn y bydysawd.
+ about_hashtag_html: Dyma dŵtiau cyhoeddus wedi eu tagio gyda
#%{hashtag}. Gallwch ryngweithio gyda nhw os oes gennych gyfrif yn unrhyw le yn y bydysawd.
about_mastodon_html: Mae Mastodon yn rwydwaith cymdeithasol sy'n seiliedig ar brotocolau gwe a meddalwedd cod agored rhad ac am ddim. Yn debyg i e-bost mae'n ddatganoledig.
about_this: Ynghylch
administered_by: 'Gweinyddir gan:'
@@ -20,15 +20,19 @@ cy:
humane_approach_title: Agwedd fwy dynol
not_a_product_body: Nid yw Mastodon yn rhwydwaith fasnachol. Nid oes hysbysebion, cloddio data na gerddi caeedig. Nid oes awdurdod canolog.
not_a_product_title: Rwyt yn berson, nid yn gynnyrch
- real_conversation_title: Wedi ei adeiladu ar gyfer trafodaeth go iawn
+ real_conversation_body: Gyda'r modd i ddefnyddio hyd at 500 o nodau a chefnogaeth ar gyfer cynnwys gronynnol a rhybuddion cyfryngau, mae modd i chi fynegi'ch hun yn y ffordd yr hoffech chi.
+ real_conversation_title: Wedi ei adeiladu ar gyfer sgyrsiau go iawn
+ within_reach_body: Nifer o apiau ar gyfer iOS, Android, a nifer blatfformau eraill diolch i amgylchedd API hygyrch i ddatblygwyr sy'n caniatau i chi gadw mewn cysylltiad a'ch ffrindiau o unrhywle.
within_reach_title: Bob tro o fewn gafael
generic_description: Mae %{domain} yn un gweinydd yn y rhwydwaith
hosted_on: Mastodon wedi ei weinyddu ar %{domain}
- learn_more: Dysgu mwy
+ learn_more: Dysgwch fwy
+ other_instances: Rhestr achosion
privacy_policy: Polisi preifatrwydd
source_code: Cod ffynhonnell
status_count_after:
one: statws
+ other: statws
status_count_before: Pwy ysgrifennodd
terms: Telerau gwasanaeth
user_count_after:
@@ -122,13 +126,14 @@ cy:
most_recent: Mwyaf diweddaraf
title: Trefn
outbox_url: Allflwch URL
+ perform_full_suspension: Ataliwch yn llwyr
profile_url: URL proffil
promote: Hyrwyddo
protocol: Protocol
public: Cyhoeddus
- push_subscription_expires: Tanysgrifiad PUSH yn dod i ben
+ push_subscription_expires: Tanysgrifiad PuSH yn dod i ben
redownload: Adnewyddwch afatar
- remove_avatar: Dilewch afatar
+ remove_avatar: Dilëwch afatar
resend_confirmation:
already_confirmed: Mae'r defnyddiwr hwn wedi ei gadarnhau yn barod
send: Ailanfonwch e-bost cadarnhad
@@ -150,6 +155,7 @@ cy:
report: adrodd
targeted_reports: Adroddiadau am y cyfri hwn
silence: Tawelu
+ statuses: ''
subscribe: Tanysgrifio
title: Cyfrifon
unconfirmed_email: E-bost heb ei gadarnhau
@@ -168,6 +174,25 @@ cy:
create_email_domain_block: Cosbrestrwyd parth e-bost %{target} gan %{name}
demote_user: Diraddiodd %{name} y defnyddiwr %{target}
destroy_domain_block: Dadflociodd %{name} y parth %{target}
+ destroy_status: Cafodd %{name} wared ar statws gan %{target}
+ disable_2fa_user: Diffoddodd %{name} ar ofyniad dau gam ar gyfer y defnyddiwr %{target}
+ disable_custom_emoji: Diffoddodd %{name} emoji %{target}
+ disable_user: Diffoddodd %{name} mewngofnodi ar gyfer y defnyddiwr %{target}
+ enable_custom_emoji: Galluogodd %{name} emoji %{target}
+ enable_user: Galluogodd %{name} mewngofnodi ar gyfer y defnyddiwr %{target}
+ memorialize_account: Newidodd %{name} gyfrif %{target} i dudalen goffau
+ promote_user: Dyrchafodd %{name} y defnyddiwr %{target}
+ remove_avatar_user: Cafodd %{name} wared ar afatar %{target}
+ reopen_report: Ailagorodd %{name} adroddiad %{target}
+ reset_password_user: Ailosododd %{name} gyfrinair y defnyddiwr %{target}
+ resolve_report: Datrusodd %{name} adroddiad %{target}
+ silence_account: Tawelodd %{name} gyfrif %{target}
+ suspend_account: Ataliodd %{name} gyfrif %{target}
+ unassigned_report: Dadbenododd %{name} adroddiad %{target}
+ unsilence_account: Terfynodd %{name} dawelu cyfrif %{target}
+ unsuspend_account: Terfynodd %{name} yr ataliad ar gyfrif %{target}
+ update_custom_emoji: Diweddarodd %{name} emoji %{target}
+ update_status: Diweddarodd %{name} statws gan %{taget}
deleted_status: "(statws wedi ei ddileu)"
title: Log archwilio
custom_emojis:
@@ -188,20 +213,25 @@ cy:
new:
title: Ychwanegu emoji personol newydd
overwrite: Trosysgrifio
- shortcode_hint: O leiaf 2 lythyren, dim ond llythrennau alffaniwmerig a tanlinellau
+ shortcode_hint: O leiaf 2 nodyn, dim ond nodau alffaniwmerig a tanlinellau
title: Emoji personol
unlisted: Heb ei restru
update_failed_msg: Ni allwyd diweddaru'r emoji hwnnw
updated_msg: Llwyddwyd i ddiweddaru'r emoji!
upload: Lanlwytho
dashboard:
+ backlog: tasgau heb eu cwblhau
config: Cyfluniad
+ feature_deletions: Dileadau cyfrif
feature_invites: Dolenni gwahodd
feature_registrations: Cofrestriadau
+ feature_relay: Relái ffederasiwn
features: Nodweddion
+ hidden_service: Ffedarasiwn a gwasanaethau cudd
open_reports: adroddiadau agored
recent_users: Defnyddwyr diweddar
search: Chwilio testun llawn
+ single_user_mode: Modd un defnyddiwr
software: Meddalwedd
space: Defnydd o ofod
title: Dangosfwrdd
@@ -211,14 +241,21 @@ cy:
week_users_active: gweithredol yr wythnos hon
week_users_new: defnyddwyr yr wythnos hon
domain_blocks:
+ add_new: Ychwanegu
+ created_msg: Mae'r bloc parth nawr yn cael ei brosesu
+ destroyed_msg: Mae'r bloc parth wedi ei ddadwneud
domain: Parth
new:
create: Creu bloc
+ hint: Ni fydd y bloc parth yn atal cread cofnodion cyfrif yn y bas data, ond mi fydd yn gosod dulliau cymedroli penodol ôl-weithredol ac awtomatig ar y cyfrifau hynny.
severity:
+ desc_html: Mae
Tawelu yn gwneud twtiau y cyfrif yn anweledig i unrhyw un nad yw'n dilyn y cyfrif. Mae
Atal yn cael gwared ar holl gynnwys, cyfryngau a data proffil y cyfrif. Defnyddiwch
Dim os ydych chi ond am wrthod dogfennau cyfryngau.
noop: Dim
silence: Tawelwch
suspend: Atal
+ title: Bloc parth newydd
reject_media: Gwrthod dogfennau cyfryngau
+ reject_media_hint: Dileu dogfennau cyfryngau wedi eu cadw yn lleol ac yn gwrthod i lawrlwytho unrhyw rai yn y dyfodol. Amherthnasol i ataliadau
severities:
noop: Dim
silence: Tawelwch
@@ -230,7 +267,10 @@ cy:
other: "%{count} o gyfrifoedd yn y bas data wedi eu hefeithio"
retroactive:
silence: Dad-dawelu pob cyfri presennol o'r parth hwn
+ suspend: Dad-atal pob cyfrif o'r parth hwn sy'n bodoli
+ title: Dadwneud bloc parth ar gyfer %{domain}
undo: Dadwneud
+ title: Blociau parth
undo: Dadwneud
email_domain_blocks:
add_new: Ychwanegu
@@ -240,9 +280,10 @@ cy:
domain: Parth
new:
create: Ychwanegu parth
+ title: Cofnod newydd yng nghosbrestr e-byst
title: Cosbrestr e-bost
instances:
- account_count: Cyfrifoedd hysbys
+ account_count: Cyfrifon hysbys
domain_name: Parth
reset: Ailosod
search: Chwilio
@@ -255,12 +296,20 @@ cy:
title: Hidlo
title: Gwahoddiadau
relays:
+ add_new: Ychwanegau relái newydd
+ inbox_url: URL relái
+ pending: Aros am gymeradywaeth i'r relái
save_and_enable: Cadw a galluogi
+ setup: Sefydlu cysylltiad relái
status: Statws
+ report_notes:
+ created_msg: Llwyddwyd i greu nodyn adroddiad!
+ destroyed_msg: Llwyddwyd i ddileu nodyn adroddiad!
reports:
account:
note: nodyn
report: adroddiad
+ action_taken_by: Gwnathpwyd hyn gan
are_you_sure: Ydych chi'n sicr?
comment:
none: Dim
@@ -272,6 +321,7 @@ cy:
create_and_resolve: Datruswch a nodyn
create_and_unresolve: Ailagorwch a nodyn
delete: Dilëwch
+ placeholder: Disgrifiwch pa weithredoedd sydd wedi eu cymryd, neu unrhyw ddiweddariadau eraill...
reopen: Ailagorwch adroddiad
report: 'Adroddiad #%{id}'
reported_by: Adroddwyd gan
@@ -288,6 +338,8 @@ cy:
title: Cyhoeddwch ystatedgau agregau am weithgaredd defnyddwyr
contact_information:
email: E-bost busnes
+ hero:
+ title: Delwedd arwr
registrations:
deletion:
desc_html: Caniatewch i unrhywun i ddileu eu cyfrif
@@ -296,12 +348,159 @@ cy:
title: Caniatewch wahoddiadau gan
open:
desc_html: Caniatewch i unrhywun greu cyfrif
+ title: Agorwch cofrestru
+ show_staff_badge:
+ title: Dangos bathodyn staff
+ timeline_preview:
+ title: Rhagolwg o'r ffrwd
+ title: Gosodiadau'r wefan
+ statuses:
+ back_to_account: Yn ôl i dudalen y cyfrif
+ batch:
+ delete: Dileu
+ nsfw_off: Marcio fel nad yw'n sensitif
+ nsfw_on: Marcio'n sensitif
+ failed_to_execute: Methwyd a gweithredu
+ media:
+ title: Cyfryngau
+ no_media: Dim cyfryngau
+ no_status_selected: Ni newidwyd dim statws achos ni ddewiswyd dim un
+ with_media: A chyfryngau
+ subscriptions:
+ confirmed: Wedi'i gadarnhau
+ expires_in: Dod i ben ymhen
+ title: WebSub
+ topic: Pwnc
+ suspensions:
+ proceed: Parhau
+ title: Gweinyddiaeth
+ admin_mailer:
+ new_report:
+ body: Mae %{reporter} wedi cwyno am %{target}
+ body_remote: Mae rhywun o %{domain} wedi cwyno . am %{target}
+ subject: Cwyn newydd am %{instance} {#%{id}}
+ application_mailer:
+ notification_preferences: Newid gosodiadau e-bost
+ salutation: "%{name},"
+ view_profile: Gweld proffil
+ view_status: Gweld statws
+ applications:
+ created: Cais wedi ei greu'n llwyddiannus
+ destroyed: Cais wedi ei ddileu'n llwyddiannus
+ regenerate_token: Adfywio tocyn mynediad
+ token_regenerated: Adfywiwyd y tocyn mynediad yn llwyddiannus
+ warning: Byddwch yn ofalus a'r data hyn. Peidiwch a'i rannu byth!
+ your_token: Eich tocyn mynediad
auth:
change_password: Cyfrinair
+ confirm_email: Cadarnhau e-bost
+ delete_account: Dileu cyfrif
+ delete_account_html: Os hoffech chi ddileu eich cyfrif, mae modd
parhau yma. Bydd gofyn i chi gadarnhau.
+ didnt_get_confirmation: Heb dderbyn cyfarwyddiadau cadarnhau?
+ forgot_password: Wedi anghofio'ch cyfrinair?
+ invalid_reset_password_token: Tocyn ailosod cyfrinair yn annilys neu wedi dod i ben. Gwnewch gais am un newydd os gwelwch yn dda.
+ login: Mewngofnodwch
+ logout: Allgofnodwch
+ migrate_account: Symud i gyfrif gwahanol
+ migrate_account_html: Os hoffech chi ailgyfeirio'r cyfrif hwn at un gwahanol, mae modd
ei ffurfweddu yma.
+ or: neu
+ or_log_in_with: Neu logiwch mewn a
+ providers:
+ cas: CAS
+ saml: SAML
+ register: Cofrestrwch
+ register_elsewhere: Cofrestrwch ar weinydd gwahanol
+ resend_confirmation: Ailanfon cyfarwyddiadau cadarnhau
+ reset_password: Ailosodwch eich cyfrinair
+ security: Diogelwch
+ set_new_password: Gosodwch gyfrinair newydd
authorize_follow:
+ already_following: Yr ydych yn dilyn y cyfrif hwn yn barod
+ error: Yn anffodus, roedd gwall tra'n edrych am y cyfrif anghysbell
follow: Dilynwch
+ follow_request: 'Yr ydych wedi anfon cais dilyn at:'
+ following: 'Llwyddiant! Yr ydych yn awr yn dilyn:'
+ post_follow:
+ close: Neu, gallwch gau'r ffenest hon.
+ return: Dangoswch broffil y defnyddiwr
+ web: I'r wê
title: Dilynwch %{acct}
+ datetime:
+ distance_in_words:
+ about_x_hours: "%{count}h"
+ about_x_months: "%{count}mo"
+ about_x_years: "%{count}y"
+ almost_x_years: "%{count}y"
+ half_a_minute: Newydd fod
+ less_than_x_minutes: "%{count}m"
+ less_than_x_seconds: Newydd fod
+ over_x_years: "%{count}y"
+ x_days: "%{count}d"
+ x_minutes: "%{count}m"
+ x_months: "%{count}mo"
+ x_seconds: "%{count}s"
+ deletes:
+ bad_password_msg: Go dda, hacwyr! Cyfrinair anghywir
+ confirm_password: Mewnbynnwch eich cyfrinair presennol i gadarnhau mai chi sydd yno
+ proceed: Dileu cyfrif
+ success_msg: Llwyddwyd i ddileu eich cyfrif
+ errors:
+ '403': Nid oes gennych ganiatad i weld y dudalen hon.
+ '404': Nid yw'r dudalen yr oeddech yn chwilio amdani'n bodoli.
+ '410': Nid yw'r dudalen yr oeddech yn chwilio amdani'n bodoli mwyach.
+ '422':
+ content: Methwyd i ddilysu diogelwch. A ydych chi'n blocio cwcîs?
+ title: Methwyd i ddilysu diogelwch
+ '500':
+ content: Mae'n ddrwg gennym ni, ond fe aeth rhywbeth o'i le ar ein rhan ni.
+ title: Nid yw'r dudalen hon yn gywir
+ noscript_html: I ddefnyddio ap gwê Mastodon, caniatewch JavaScript os gwlwch yn dda. Fel arall, gallwch drio un o'r
apiau cynhenid ar gyfer Mastodon ar eich platfform.
+ exports:
+ archive_takeout:
+ date: Dyddiad
+ download: Lawrlwythwch eich archif
+ size: Maint
+ blocks: Yr ydych yn blocio
+ csv: CSV
+ follows: Yr ydych yn dilyn
+ mutes: Yr ydych yn tawelu
+ filters:
+ contexts:
+ home: Ffrwd gartref
+ notifications: Hysbysiadau
+ public: Ffrwd gyhoeddus
+ thread: Sgyrsiau
+ edit:
+ title: Golygu hidlydd
+ index:
+ delete: Dileu
+ title: Hidlyddion
+ new:
+ title: Ychwanegu hidlydd newydd
+ followers:
+ domain: Parth
+ followers_count: Nifer y dilynwyr
+ lock_link: Cloi eich cyfri
+ unlocked_warning_title: Nid yw eich cyfrif wedi ei gloi
+ footer:
+ developers: Datblygwyr
+ more: Mwy…
+ resources: Adnoddau
+ generic:
+ changes_saved_msg: Llwyddwyd i gadw y newidiadau!
+ save_changes: Cadw newidiadau
+ validation_errors:
+ one: Mae rhywbeth o'i le o hyd! Edrychwch ar y gwall isod os gwelwch yn dda
+ other: Mae rhywbeth o'i le o hyd! Edrychwch ar y %{count} gwall isod os gwelwch yn dda
+ imports:
+ types:
+ blocking: Rhestr blocio
+ following: Rhestr dilyn
+ muting: Rhestr tawelu
+ upload: Uwchlwytho
+ in_memoriam_html: ''
invites:
+ delete: Dadactifadu
expires_in:
'86400': 1 dydd
max_uses_prompt: Dim terfyn
diff --git a/config/locales/devise.cy.yml b/config/locales/devise.cy.yml
index 51ab6a3c75..9cf8b96f0f 100644
--- a/config/locales/devise.cy.yml
+++ b/config/locales/devise.cy.yml
@@ -34,19 +34,32 @@ cy:
title: Newidwyd cyfrinair
reconfirmation_instructions:
explanation: Cadarnhewch y cyferiad newydd i newid eich e-bost.
+ extra: Os nad chi wnaeth y newid hwn, anwybyddwch yr e-bost hwn os gwelwch yn dda. Ni fydd y cyfeiriad e-bost ar gyfer y cyfrif Mastodon yn newid nes eich bod yn mynd at y ddolen uchod.
subject: 'Mastodon: Cadarnhewch e-bost i %{instance}'
title: Gwiriwch cyfeiriad e-bost
reset_password_instructions:
action: Newid cyfrinair
explanation: Gofynnoch am gyfrinair newydd i'ch cyfrif.
+ extra: Os na wnaethoch gais am hyn, anwybyddwch yr e-bost hwn os gwelwch yn dda. Ni fydd eich cyfrinair yn newid nes i chi fynd at y ddolen uchod a chreu un newydd.
subject: 'Mastodon: Ailosodwch cyfarwyddiadau cyfrinair'
title: Ailosod cyfrinair
unlock_instructions:
subject: 'Mastodon: Cyfarwyddiadau datgloi'
omniauth_callbacks:
failure: Methu eich dilysu o %{kind} oherwydd "%{reason}".
+ success: Dilyswyd yn llwyddiannus o gyfrif %{kind}.
+ passwords:
+ no_token: Nid oes modd cael mynediad i'r dudalen hon heb ddod drwy e-bost ailosod cyfrinair. Os ydych yn dod o e-bost ailosod cyfrinair, gwnewch yn siŵr y defnyddioch chi'r URL a ddarparwyd yn ei gyfanrwydd.
+ send_instructions: Os yw eich cyfeiriad e-bost yn bresennol yn ein bas data, mi fyddwch yn derbyn dolen yn eich blwch e-bost ymhen cwpl o funudau. Os nad ydych yn derbyn yr e-bost hwn, edrychwch yn eich ffolder spam os gwelwch yn dda.
+ send_paranoid_instructions: Os yw eich cyfeiriad e-bost yn bresennol yn ein bas data, mi fyddwch yn derbyn dolen yn eich blwch e-bost ymhen cwpl o funudau. Os nad ydych yn derbyn yr e-bost hwn, edrychwch yn eich ffolder spam os gwelwch yn dda.
+ updated: Mae eich cyfrinair wedi ei newid yn llwyddiannus. Yr ydych wedi mewngofnodi.
+ updated_not_active: Mae eich cyfrinair wedi ei newid yn llwyddiannus.
registrations:
+ destroyed: Hwyl fawr! Mae eich cyfrif wedi ei ganslo'n llwyddiannus. Gobeithiwn eich gweld eto'n fuan.
signed_up: Croeso! Rydych wedi llwyddo i ymuno.
+ signed_up_but_inactive: Yr ydych wedi cofrestru'n llwyddiannus. Fodd bynnag, ni allwn eich mewngofnodi achos nid yw eich cyfrif wedi ei actifadu eto.
+ signed_up_but_locked: Yr ydych wedi cofrestru'n llwyddiannus. Fodd bynnag, ni allwn eich mewngofnodi achos fod eich cyfrif wedi ei gloi.
+ signed_up_but_unconfirmed: Mae neges gyda dolen cadarnhau wedi ei anfon i'ch cyfeiriad e-bost. Dilynwch y ddolen er mwyn actifadu eich cyfrif. Edrychwch yn eich ffolder sbam os na dderbynioch chi'r e-bost hwn os gwelwch yn dda.
update_needs_confirmation: Rydych wedi diweddaru eich cyfrif yn llwyddiannus, ond mae angen i ni wirio eich cyfeiriad e-bost newydd. Edrychwch ar eich e-byst a dilynwch y ddolen gadarnhau er mwyn cadarnhau eich cyfeiriad e-bost newydd. Edrychwch ar eich ffolder sbam os na dderbynioch chi yr e-bost hwn.
updated: Mae eich cyfrif wedi ei ddiweddaru yn llwyddiannus.
sessions:
@@ -54,6 +67,8 @@ cy:
signed_in: Mewngofnodwyd yn llwyddiannus.
signed_out: Allgofnodwyd yn llwyddiannus.
unlocks:
+ send_instructions: Mi fyddwch yn derbyn e-bost a cyfarwyddiadau ynghylch sut i ddatgloi eich cyfrif ymhen cwpl o funudau. Edrychwch yn eich ffolder sbam os na dderbynioch chi'r e-bost hwn os gwelwch yn dda.
+ send_paranoid_instructions: Os yw eich cyfrif yn bodoli, mi fyddwch yn derbyn e-bost a cyfarwyddiadau o sut i ddatgloi eich cyfrif ymhen cwpl o funudau. Edrychwch yn eich ffolder sbam os na dderbynioch chi'r e-bost hwn os gwelwch yn dda.
unlocked: Mae eich cyfrif wedi ei ddatgloi'n llwyddiannus. Mewngofnodwch i barhau.
errors:
messages:
@@ -62,3 +77,6 @@ cy:
expired: wedi dod i ben, gwnewch gais am un newydd os gwelwch yn dda
not_found: heb ei ganfod
not_locked: heb ei gloi
+ not_saved:
+ one: 'Gwaharddwyd yr %{resource} rhag cael ei arbed oherwydd 1 gwall:'
+ other: 'Gwaharddwyd yr %{resource} rhag cael ei arbed oherwydd %{count} gwall:'
diff --git a/config/locales/doorkeeper.cy.yml b/config/locales/doorkeeper.cy.yml
index 2c0e5d2430..050af3a0a2 100644
--- a/config/locales/doorkeeper.cy.yml
+++ b/config/locales/doorkeeper.cy.yml
@@ -4,7 +4,18 @@ cy:
attributes:
doorkeeper/application:
name: Enw rhaglen
+ redirect_uri: Ailgyfeirio URI
scopes: Cwmpasau
+ website: Gwefan cais
+ errors:
+ models:
+ doorkeeper/application:
+ attributes:
+ redirect_uri:
+ fragment_present: ni all gynnwys dernyn.
+ invalid_uri: rhaid iddo fod yn URI cyfredol.
+ relative_uri: rhaid iddo fod yn URI absoliwt.
+ secured_uri: rhaid iddo fod yn URI HTTPS/SSL.
doorkeeper:
applications:
buttons:
@@ -19,6 +30,9 @@ cy:
title: Golygwch rhaglen
form:
error: Wps! Gwiriwch eich ffurflen am gamgymeriadau posib
+ help:
+ native_redirect_uri: Defnyddiwch %{native_redirect_uri} ar gyfer profion lleol
+ redirect_uri: Defnyddiwch un llinell i bob URI
index:
application: Rhaglen
delete: Dileu
@@ -30,11 +44,15 @@ cy:
new:
title: Rhaglen newydd
show:
+ actions: Gweithredoedd
+ application_id: Allwedd cleient
scopes: Cwmpasau
+ secret: Cyfrinach Cleient
title: 'Rhaglen: %{name}'
authorizations:
buttons:
authorize: Awdurdodi
+ deny: Gwrthod
error:
title: Mae rhywbeth wedi mynd o'i le
new:
@@ -43,6 +61,8 @@ cy:
show:
title: Copiwch y côd awdurdodi a gludiwch i'r rhaglen
authorized_applications:
+ buttons:
+ revoke: Diddymu
confirmations:
revoke: Ydych chi'n sicr?
index:
@@ -53,6 +73,8 @@ cy:
errors:
messages:
access_denied: Mae perchennog yr adnodd neu'r gweinydd awdurdodi wedi atal y cais.
+ invalid_redirect_uri: Nid yw'r uri ailgyfeirio cynnwysiedig yn gyfredol.
+ invalid_request: Nid yw'r cais yn cynnwys paramedr angenrheidiol, yn cynnwys paramader paramedr nad yw'n cael ei gefnogi, neu wedi ei gamffurfio mewn rhyw fodd arall.
flash:
applications:
create:
@@ -72,11 +94,14 @@ cy:
application:
title: Mae awdurdodiad OAuth yn ofynnol
scopes:
+ follow: addaswch berthnasau cyfrif
push: derbyniwch eich hysbysiadau PUSH
read: darllenwch holl ddata eich cyfrif
read:accounts: gwelwch wybodaeth y cyfrif
+ read:blocks: gwlewch eich blociau
read:favourites: gwelwch eich ffefrynnau
read:filters: gwelwch eich hidlwyr
+ read:follows: gwelwch eich dilynwyr
read:lists: gwelwch eich rhestrau
read:notifications: gwelwch eich hysbysiadau
read:reports: gwelwch eich adroddiadau
@@ -88,4 +113,5 @@ cy:
write:follows: dilynwch bobl
write:lists: crëwch restrau
write:media: uwchlwythwch ffeiliau cyfryngau
+ write:mutes: tawelwch bobl a sgyrsiau
write:notifications: cliriwch eich hysbysiadau
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 4501dc28d5..8072f526f1 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -41,7 +41,7 @@ es:
user_count_before: Tenemos
what_is_mastodon: "¿Qué es Mastodon?"
accounts:
- choices_html: 'Elecciones de %{nombre}:'
+ choices_html: 'Elecciones de %{name}:'
follow: Seguir
followers:
one: Seguidor
diff --git a/config/locales/it.yml b/config/locales/it.yml
index 8222cedbb0..0b8c01741e 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -415,7 +415,7 @@ it:
didnt_get_confirmation: Non hai ricevuto le istruzioni di conferma?
forgot_password: Hai dimenticato la tua password?
login: Entra
- logout: Sloggati
+ logout: Esci da Mastodon
migrate_account: Sposta ad un account differente
migrate_account_html: Se vuoi che questo account sia reindirizzato a uno diverso, puoi
configurarlo qui.
or: o
@@ -464,6 +464,9 @@ it:
'422':
content: Verifica di sicurezza non riuscita. Stai bloccando i cookies?
title: Verifica di sicurezza non riuscita
+ '500':
+ content: Siamo spiacenti, ma qualcosa non ha funzionato dal nostro lato.
+ title: Questa pagina non è corretta
noscript_html: Per usare l'interfaccia web di Mastodon dovi abilitare JavaScript. In alternativa puoi provare una delle
app native per Mastodon per la tua piattaforma.
exports:
archive_takeout:
@@ -484,6 +487,10 @@ it:
notifications: Notifiche
public: Timeline pubbliche
thread: Conversazioni
+ edit:
+ title: Modifica filtro
+ errors:
+ invalid_context: Contesto mancante o non valido
index:
delete: Cancella
title: Filtri
@@ -608,6 +615,7 @@ it:
remote_follow:
acct: Inserisci il tuo username@dominio da cui vuoi seguire questo utente
missing_resource: Impossibile trovare l'URL di reindirizzamento richiesto per il tuo account
+ no_account_html: Non hai un account? Puoi
iscriverti qui
proceed: Conferma
prompt: 'Stai per seguire:'
remote_unfollow:
@@ -619,6 +627,7 @@ it:
browsers:
blackberry: Blackberry
chrome: Chrome
+ firefox: Firefox
generic: Browser sconosciuto
current_session: Sessione corrente
description: "%{browser} su %{platform}"
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 9afc666d18..c246dc0329 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -54,7 +54,6 @@ pl:
other: Śledzących
following: Śledzonych
joined: Dołączył(a) %{date}
- link_verified_on: Własność tego odnośnika została potwierdzona %{date}
media: Zawartość multimedialna
moved_html: "%{name} korzysta teraz z konta %{new_profile_link}:"
network_hidden: Ta informacja nie jest dostępna
@@ -129,7 +128,6 @@ pl:
moderation_notes: Notatki moderacyjne
most_recent_activity: Najnowsza aktywność
most_recent_ip: Ostatnie IP
- no_limits_imposed: Nie nałożono ograniczeń
not_subscribed: Nie zasubskrybowano
order:
alphabetic: Alfabetycznie
@@ -165,10 +163,8 @@ pl:
report: zgłoszeń
targeted_reports: Zgłoszenia dotyczące tego użytkownika
silence: Wycisz
- silenced: Wyciszono
statuses: Wpisy
subscribe: Subskrybuj
- suspended: Wywieszono
title: Konta
unconfirmed_email: Niepotwierdzony adres e-mail
undo_silenced: Cofnij wyciszenie
@@ -313,13 +309,8 @@ pl:
title: Zaproszenia
relays:
add_new: Dodaj nowy
- delete: Usuń
description_html: "
Przekaźnik federacji jest pośredniczącym serwerem wymieniającym duże ilości publicznych wpisów pomiędzy serwerami które subskrybują je i publikują na nich.
Pomaga to małym i średnim instancją poznawać nową zawartość z Fediwersum, co w innym przypadku wymagałoby od użytkowników ręcznego śledzenia osób z innych serwerów."
- disable: Dezaktuwuj
- disabled: Nieaktywny
- enable: Aktywuj
enable_hint: Jeżeli włączone, Twój serwer zasubskrybuje wszystkie publiczne wpisy z tego przekaźnika i zacznie wysyłać tam publiczne wpisy z tego serwera.
- enabled: Aktywny
inbox_url: Adres przekaźnika
pending: Oczekiwanie na przyjęcie przez przekaźnik
save_and_enable: Zapisz i aktywuj
@@ -470,7 +461,7 @@ pl:
warning: Przechowuj te dane ostrożnie. Nie udostępniaj ich nikomu!
your_token: Twój token dostępu
auth:
- agreement_html: Klikając „Rejestracja”, oświadczasz, że zapoznałeś(-aś) się z
informacjami o instancji i
zasadami korzystania z usługi.
+ agreement_html: Rejestrując się, oświadczasz, że zapoznałeś(-aś) się z
informacjami o instancji i
zasadami korzystania z usługi.
change_password: Hasło
confirm_email: Potwierdź adres e-mail
delete_account: Usunięcie konta
@@ -941,6 +932,3 @@ pl:
otp_lost_help_html: Jeżeli utracisz dostęp do obu, możesz skontaktować się z %{email}
seamless_external_login: Zalogowano z użyciem zewnętrznej usługi, więc ustawienia hasła i adresu e-mail nie są dostępne.
signed_in_as: 'Zalogowany jako:'
- verification:
- explanation_html: 'Możesz
zweryfikować siebie jako właściciela odnośników w metadanych. Aby to zrobić, strona musi zawierać odnośnik do Twojego profilu na Mastodonie. Odnośnik
musi zawierać atrybut
rel="me"
. Treść odnośnika nie ma znaczenia. Przykład:'
- verification: Weryfikacja
diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml
index 3e0c671cb3..783e545e11 100644
--- a/config/locales/simple_form.ar.yml
+++ b/config/locales/simple_form.ar.yml
@@ -64,7 +64,6 @@ ar:
setting_default_privacy: خصوصية المنشور
setting_default_sensitive: إعتبر الوسائط دائما كمحتوى حساس
setting_delete_modal: إظهار مربع حوار للتأكيد قبل حذف أي تبويق
- setting_display_sensitive_media: دائمًا إظهار الوسائط الحساسة
setting_hide_network: إخفِ شبكتك
setting_noindex: عدم السماح لمحركات البحث بفهرسة ملفك الشخصي
setting_reduce_motion: تخفيض عدد الصور في الوسائط المتحركة
diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml
index d45b84971d..53cf6db8e0 100644
--- a/config/locales/simple_form.ca.yml
+++ b/config/locales/simple_form.ca.yml
@@ -65,7 +65,6 @@ ca:
setting_default_privacy: Privacitat de les publicacions
setting_default_sensitive: Marca sempre els elements multimèdia com a sensibles
setting_delete_modal: Mostra la finestra de confirmació abans de suprimir un toot
- setting_display_sensitive_media: Mostra sempre els elements multimèdia marcats com a sensibles
setting_hide_network: Amaga la teva xarxa
setting_noindex: Desactivació de la indexació del motor de cerca
setting_reduce_motion: Redueix el moviment en animacions
diff --git a/config/locales/simple_form.co.yml b/config/locales/simple_form.co.yml
index ad4258dab8..6f1630e6a3 100644
--- a/config/locales/simple_form.co.yml
+++ b/config/locales/simple_form.co.yml
@@ -69,7 +69,6 @@ co:
setting_default_privacy: Cunfidenzialità di i statuti
setting_default_sensitive: Sempre cunsiderà media cum’è sensibili
setting_delete_modal: Mustrà une cunfirmazione per toglie un statutu
- setting_display_sensitive_media: Sempre mustrà media marcati cum’è sensibili
setting_hide_network: Piattà a vostra rete
setting_noindex: Dumandà à i motori di ricerca internet d’un pudè micca esse truvatu·a cusì
setting_reduce_motion: Fà chì l’animazione vanu più pianu
diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml
index 6625e2638f..dbff526448 100644
--- a/config/locales/simple_form.cs.yml
+++ b/config/locales/simple_form.cs.yml
@@ -69,7 +69,6 @@ cs:
setting_default_privacy: Soukromí příspěvků
setting_default_sensitive: Vždy označovat média jako citlivá
setting_delete_modal: Zobrazovat před smazáním tootu potvrzovací okno
- setting_display_sensitive_media: Vždy zobrazovat média označená jako citlivá
setting_hide_network: Skrýt svou síť
setting_noindex: Neindexovat svůj profil vyhledávači
setting_reduce_motion: Redukovat pohyb v animacích
diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml
index bc8f7e0e9b..5a301f775d 100644
--- a/config/locales/simple_form.cy.yml
+++ b/config/locales/simple_form.cy.yml
@@ -1,21 +1,75 @@
---
cy:
simple_form:
- labels:
+ hints:
defaults:
+ autofollow: Bydd pobl sy'n cofrestru drwy'r gwahoddiad yn eich dilyn yn awtomatig
+ avatar: PNG, GIF neu JPG. %{size} ar y mwyaf. Ceith ei israddio i %{dimensions}px
+ bot: Mae'r cyfrif hwn yn perfformio gweithredoedd awtomataidd yn bennaf ac mae'n bosib nad yw'n cael ei fonitro
+ context: Un neu fwy cyd-destun lle dylai'r hidlydd weithio
+ digest: Dim ond yn cael eu hanfon ar ôl cyfnod hir o anweithgarwch ac ond os ydych wedi derbyn unrhyw negeseuon personol yn eich absenoldeb
+ display_name:
+ one:
1 nodyn ar ôl
+ other:
%{count} nodyn ar ôl
+ fields: Mae modd i chi arddangos hyd at 4 eitem fel tabl ar eich proffil
+ header: PNG, GIF neu JPG. %{size} ar y mwyaf. Ceith ei israddio i %{dimensions}px
+ inbox_url: Copïwch yr URL o dudalen flaen y relái yr ydych am ei ddefnyddio
+ irreversible: Bydd tŵtiau wedi eu hidlo yn diflannu am byth, hyd yn oed os ceith yr hidlydd ei ddileu'n hwyrach
+ locale: Iaith y rhyngwyneb, e-byst a hysbysiadau push
+ locked: Ei wneud yn ofynnol arnoch chi i ganiatau dilynwyr a llaw
+ note:
+ one:
1 cymeriad ar ôl
+ other:
%{count} o gymeriadau ar ôl
+ scopes: Pa APIau y bydd gan y rhaglen ganiatad i gael mynediad iddynt. Os dewiswch maes lefel uchaf, yna nid oes angen dewis rhai unigol.
+ setting_default_language: Mae modd adnabod iaith eich tŵtiau yn awtomatig, ond nid yw bob tro'n gywir
+ setting_hide_network: Ni fydd pwy yr ydych yn ei ddilyn a phwy sy'n eich dilyn chi yn cael ei ddangos ar eich proffil
+ setting_noindex: Mae hyn yn effeithio ar eich proffil cyhoeddus a'ch tudalennau statws
+ setting_theme: Mae hyn yn effeithio ar sut olwg sydd ar Matododn pan yr ydych wedi mewngofnodi o unrhyw ddyfais.
+ whole_word: Os yw'r allweddair neu'r ymadrodd yn alffaniwmerig yn unig, mi fydd ond yn cael ei osod os yw'n cyfateb a'r gair cyfan
+ imports:
+ data: Allforiwyd dogfen CSV o INSTANCE Mastodon arall
+ sessions:
+ otp: 'Mewnbynnwch y côd dau gam a gynhyrchwyd gan eich ap ffôn neu defnyddiwch un o''ch codau adfer:'
+ user:
+ chosen_languages: Wedi ei ddethol, dim ond tŵtiau mewn ieithoedd dewisiedig bydd yn cael eu harddangos mewn ffrydiau cyhoeddus
+ labels:
+ account:
+ fields:
+ name: Label
+ value: Cynnwys
+ defaults:
+ autofollow: Gwahoddwch i ddilyn eich cyfrif
+ avatar: Afatar
+ bot: Cyfrif bot yw hwn
+ chosen_languages: Hidlwch ieithoedd
+ confirm_new_password: Cadarnhewch gyfrinair newydd
confirm_password: Cadarnhau cyfrinair
+ context: Hidlwch cyd-destunau
+ current_password: Cyfrinair presennol
+ data: Data
+ display_name: Enw arddangos
email: Cyfeiriad e-bost
+ expires_in: Yn dod i ben ar ôl
+ fields: Metadata proffil
header: Pennyn
+ inbox_url: URL y mewnflwch relái
+ irreversible: Gollwng yn hytrach na chuddio
locale: Iaith y rhyngwyneb
+ locked: Cloi cyfrif
max_uses: Uchafswm y nifer o ddefnyddiau
new_password: Cyfrinair newydd
+ otp_attempt: Côd dau gam
password: Cyfrinair
phrase: Allweddair neu ymadrodd
setting_default_language: Cyhoeddi iaith
+ setting_default_privacy: Cyfrinachedd cyhoeddi
+ setting_default_sensitive: Marciwch cyfryngau fel ei fod yn sensitif bob tro
+ setting_delete_modal: Dangoswch ddeialog cadarnhau cyn dileu tŵt
setting_hide_network: Cuddiwch eich rhwydwaith
setting_reduce_motion: ''
setting_system_font_ui: Defnyddiwch ffont rhagosodedig y system
setting_theme: Thema'r wefan
+ setting_unfollow_modal: Dangoswch ddeialog cadarnhau cyn dad-ddilyn rhywun
severity: Difrifoldeb
type: Modd mewnforio
username: Enw defnyddiwr
@@ -26,10 +80,13 @@ cy:
must_be_following: Blociwch hysbysiadau o bobl nad ydych yn eu dilyn
must_be_following_dm: Blociwch negeseuon uniongyrchol o bobl nad ydych yn eu dilyn
notification_emails:
+ digest: Anfonwch e-byst crynhoi
favourite: Anfonwch e-bost pan mae rhywun yn ffefrynnu eich statws
follow: Anfonwch e-bost pan mae rhywun yn eich dilyn chi
follow_request: Anfonwch e-bost pan mae rhywun yn gofyn i chi i'w dilyn
mention: Anfonwch e-bost pan mae rhywun yn eich crybwyll
+ reblog: Anfonwch e-bost pan mae rhywun yn bŵstio eich statws
+ report: Anfonwch e-bost pan y cyflwynir adroddiad newydd
'no': Na
required:
mark: "*"
diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml
index dfa440aae0..7550122fca 100644
--- a/config/locales/simple_form.da.yml
+++ b/config/locales/simple_form.da.yml
@@ -69,7 +69,6 @@ da:
setting_default_privacy: Privatliv
setting_default_sensitive: Marker altid medier som værende følsomt
setting_delete_modal: Vis bekræftelses dialog før du sletter et trut
- setting_display_sensitive_media: Vis altid multimedier markeret som værende følsomt
setting_hide_network: Skjul dit netværk
setting_noindex: Frameld dig søgemaskiners indeksering
setting_reduce_motion: Reducer animationers bevægelse
diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml
index 69e707c4c5..e13eece794 100644
--- a/config/locales/simple_form.de.yml
+++ b/config/locales/simple_form.de.yml
@@ -69,7 +69,6 @@ de:
setting_default_privacy: Beitragssichtbarkeit
setting_default_sensitive: Medien immer als heikel markieren
setting_delete_modal: Bestätigungsdialog anzeigen, bevor ein Beitrag gelöscht wird
- setting_display_sensitive_media: Medien, die als heikel markiert sind, immer anzeigen
setting_hide_network: Blende dein Netzwerk aus
setting_noindex: Suchmaschinen-Indexierung verhindern
setting_reduce_motion: Bewegung in Animationen verringern
diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml
index 95869c7866..96a7547e48 100644
--- a/config/locales/simple_form.el.yml
+++ b/config/locales/simple_form.el.yml
@@ -69,7 +69,6 @@ el:
setting_default_privacy: Ιδιωτικότητα δημοσιεύσεων
setting_default_sensitive: Σημείωνε πάντα τα πολυμέσα ως ευαίσθητου περιεχομένου
setting_delete_modal: Εμφάνιση ερώτησης επιβεβαίωσης πριν διαγράψεις ένα τουτ
- setting_display_sensitive_media: Εμφάνιση πάντα των πολυμέσων σημειωμένων ως ευαίσθητων
setting_hide_network: Κρύψε τις διασυνδέσεις σου
setting_noindex: Επέλεξε να μην συμμετέχεις στα αποτελέσματα μηχανών αναζήτησης
setting_reduce_motion: Μείωση κίνησης κινουμένων στοιχείων
diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml
index 3ef992ef07..b25ff26f48 100644
--- a/config/locales/simple_form.en.yml
+++ b/config/locales/simple_form.en.yml
@@ -25,6 +25,9 @@ en:
phrase: Will be matched regardless of casing in text or content warning of a toot
scopes: Which APIs the application will be allowed to access. If you select a top-level scope, you don't need to select individual ones.
setting_default_language: The language of your toots can be detected automatically, but it's not always accurate
+ setting_display_media_default: Hide media marked as sensitive
+ setting_display_media_hide_all: Always hide all media
+ setting_display_media_show_all: Always show media marked as sensitive
setting_hide_network: Who you follow and who follows you will not be shown on your profile
setting_noindex: Affects your public profile and status pages
setting_skin: Reskins the selected Mastodon flavour
@@ -72,7 +75,11 @@ en:
setting_default_privacy: Post privacy
setting_default_sensitive: Always mark media as sensitive
setting_delete_modal: Show confirmation dialog before deleting a toot
- setting_display_sensitive_media: Always show media marked as sensitive
+ setting_display_media: Media display
+ setting_display_media_default: Default
+ setting_display_media_hide_all: Hide all
+ setting_display_media_show_all: Show all
+ setting_expand_spoilers: Always expand toots marked with content warnings
setting_favourite_modal: Show confirmation dialog before favouriting (applies to Glitch flavour only)
setting_hide_network: Hide your network
setting_noindex: Opt-out of search engine indexing
diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml
index 9b6e7cd9e7..36f26035fa 100644
--- a/config/locales/simple_form.eo.yml
+++ b/config/locales/simple_form.eo.yml
@@ -68,7 +68,6 @@ eo:
setting_default_privacy: Mesaĝa videbleco
setting_default_sensitive: Ĉiam marki aŭdovidaĵojn tiklaj
setting_delete_modal: Montri fenestron por konfirmi antaŭ ol forigi mesaĝon
- setting_display_sensitive_media: Ĉiam montri aŭdovidaĵojn markitajn tiklaj
setting_hide_network: Kaŝi viajn sekvantojn kaj sekvatojn
setting_noindex: Ellistiĝi de retserĉila indeksado
setting_reduce_motion: Malrapidigi animaciojn
diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml
index 0a39e01b8c..8c528144e0 100644
--- a/config/locales/simple_form.es.yml
+++ b/config/locales/simple_form.es.yml
@@ -69,7 +69,6 @@ es:
setting_default_privacy: Privacidad de publicaciones
setting_default_sensitive: Marcar siempre imágenes como sensibles
setting_delete_modal: Mostrar diálogo de confirmación antes de borrar un toot
- setting_display_sensitive_media: Mostrar siempre material marcado como sensible
setting_hide_network: Ocultar tu red
setting_noindex: Excluirse del indexado de motores de búsqueda
setting_reduce_motion: Reducir el movimiento de las animaciones
diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml
index 1e3b2d4f0b..7fa8319ae9 100644
--- a/config/locales/simple_form.eu.yml
+++ b/config/locales/simple_form.eu.yml
@@ -69,7 +69,6 @@ eu:
setting_default_privacy: Mezuen pribatutasuna
setting_default_sensitive: Beti markatu edukiak hunkigarri gisa
setting_delete_modal: Erakutsi baieztapen elkarrizketa-koadroa toot bat ezabatu aurretik
- setting_display_sensitive_media: Beti erakutsi hunkigarri gisa markatutako edukia
setting_hide_network: Ezkutatu zure sarea
setting_noindex: Atera bilaketa motorraren indexaziotik
setting_reduce_motion: Murriztu animazioen mugimenduak
diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml
index 38f95e1b76..418b308b11 100644
--- a/config/locales/simple_form.fa.yml
+++ b/config/locales/simple_form.fa.yml
@@ -69,7 +69,6 @@ fa:
setting_default_privacy: حریم خصوصی نوشتهها
setting_default_sensitive: همیشه تصاویر را به عنوان حساس علامت بزن
setting_delete_modal: نمایش پیغام تأیید پیش از پاک کردن یک نوشته
- setting_display_sensitive_media: همیشه تصویرهای علامتزدهشده به عنوان حساس را نمایش بده
setting_hide_network: نهفتن شبکهٔ ارتباطی
setting_noindex: درخواست از موتورهای جستجوگر برای ظاهر نشدن در نتایج جستجو
setting_reduce_motion: کاستن از حرکت در پویانماییها
diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml
index 190790ca55..e90bd2e0b0 100644
--- a/config/locales/simple_form.fi.yml
+++ b/config/locales/simple_form.fi.yml
@@ -47,7 +47,6 @@ fi:
setting_default_privacy: Julkaisun näkyvyys
setting_default_sensitive: Merkitse media aina arkaluontoiseksi
setting_delete_modal: Kysy vahvistusta ennen tuuttauksen poistamista
- setting_display_sensitive_media: Näytä aina arkaluontoiseksi merkitty media
setting_noindex: Jättäydy pois hakukoneindeksoinnista
setting_reduce_motion: Vähennä animaatioiden liikettä
setting_system_font_ui: Käytä järjestelmän oletusfonttia
diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml
index 7495a94255..1e0c4d3e67 100644
--- a/config/locales/simple_form.fr.yml
+++ b/config/locales/simple_form.fr.yml
@@ -69,7 +69,6 @@ fr:
setting_default_privacy: Confidentialité des statuts
setting_default_sensitive: Toujours marquer les médias comme sensibles
setting_delete_modal: Afficher une fenêtre de confirmation avant de supprimer un pouet
- setting_display_sensitive_media: Toujours afficher les médias marqués comme sensibles
setting_hide_network: Cacher votre réseau
setting_noindex: Demander aux moteurs de recherche de ne pas indexer vos informations personnelles
setting_reduce_motion: Réduire la vitesse des animations
diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml
index 8df441c36a..935545b0ea 100644
--- a/config/locales/simple_form.gl.yml
+++ b/config/locales/simple_form.gl.yml
@@ -69,7 +69,6 @@ gl:
setting_default_privacy: Intimidade da publicación
setting_default_sensitive: Marcar sempre multimedia como sensible
setting_delete_modal: Solicitar confirmación antes de eliminar unha mensaxe
- setting_display_sensitive_media: Mostrar sempre os medios marcados como sensibles
setting_hide_network: Agochar a súa rede
setting_noindex: Pedir non aparecer nas buscas dos motores de busca
setting_reduce_motion: Reducir o movemento nas animacións
diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml
index 2eaf04a70e..841e65faa5 100644
--- a/config/locales/simple_form.it.yml
+++ b/config/locales/simple_form.it.yml
@@ -69,7 +69,6 @@ it:
setting_default_privacy: Privacy dei post
setting_default_sensitive: Segna sempre i media come sensibili
setting_delete_modal: Mostra dialogo di conferma prima di eliminare un toot
- setting_display_sensitive_media: Mostra sempre i media segnati come sensibili
setting_hide_network: Nascondi la tua rete
setting_noindex: Non indicizzare dai motori di ricerca
setting_reduce_motion: Riduci movimento nelle animazioni
diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml
index d79dd75d15..71e2f935e0 100644
--- a/config/locales/simple_form.ja.yml
+++ b/config/locales/simple_form.ja.yml
@@ -19,6 +19,9 @@ ja:
phrase: トゥートの大文字小文字や閲覧注意に関係なく一致
scopes: アプリの API に許可するアクセス権を選択してください。最上位のスコープを選択する場合、個々のスコープを選択する必要はありません。
setting_default_language: トゥートの言語は自動的に検出されますが、必ずしも正確とは限りません
+ setting_display_media_default: 閲覧注意としてマークされたメディアは隠す
+ setting_display_media_hide_all: 全てのメディアを常に隠す
+ setting_display_media_show_all: 閲覧注意としてマークされたメディアも常に表示する
setting_hide_network: フォローとフォロワーの情報がプロフィールページで見られないようにします
setting_noindex: 公開プロフィールおよび各投稿ページに影響します
setting_theme: ログインしている全てのデバイスで適用されるデザインです。
@@ -65,7 +68,10 @@ ja:
setting_default_privacy: 投稿の公開範囲
setting_default_sensitive: メディアを常に閲覧注意としてマークする
setting_delete_modal: トゥートを削除する前に確認ダイアログを表示する
- setting_display_sensitive_media: 閲覧注意としてマークされたメディアも常に表示する
+ setting_display_media: メディアの表示
+ setting_display_media_default: 標準
+ setting_display_media_hide_all: 非表示
+ setting_display_media_show_all: 表示
setting_favourite_modal: お気に入りをする前に確認ダイアログを表示する
setting_hide_network: 繋がりを隠す
setting_noindex: 検索エンジンによるインデックスを拒否する
diff --git a/config/locales/simple_form.ka.yml b/config/locales/simple_form.ka.yml
index eb6d82bb24..b1b29a7ce9 100644
--- a/config/locales/simple_form.ka.yml
+++ b/config/locales/simple_form.ka.yml
@@ -69,7 +69,6 @@ ka:
setting_default_privacy: პოსტის კონფიდენციალურობა
setting_default_sensitive: ყოველთვის მოინიშნოს მედია მგრძნობიარედ
setting_delete_modal: ტუტის გაუქმებამდე გამოჩნდეს დადასტურების ფანჯარა
- setting_display_sensitive_media: ყოველთვის გამოჩნდეს მგრძნობიარე მედია
setting_hide_network: თქვენი ქსელის დამალვა
setting_noindex: საძოები სისტემების ინდექსაციის შეჩერება
setting_reduce_motion: მოძრაობის შემცირება ანიმაციებში
diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml
index 97baf78567..232844df80 100644
--- a/config/locales/simple_form.ko.yml
+++ b/config/locales/simple_form.ko.yml
@@ -69,7 +69,6 @@ ko:
setting_default_privacy: 툿 프라이버시
setting_default_sensitive: 미디어를 언제나 민감한 컨텐츠로 설정
setting_delete_modal: 툿 삭제 전 확인 창을 표시
- setting_display_sensitive_media: 열람주의로 설정 된 이미지도 항상 보여주기
setting_hide_network: 내 네트워크 숨기기
setting_noindex: 검색엔진의 인덱싱을 거절
setting_reduce_motion: 애니메이션 줄이기
diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml
index 33ab60161a..32ad8d52cd 100644
--- a/config/locales/simple_form.nl.yml
+++ b/config/locales/simple_form.nl.yml
@@ -69,7 +69,6 @@ nl:
setting_default_privacy: Standaardzichtbaarheid van jouw toots
setting_default_sensitive: Media altijd als gevoelig markeren
setting_delete_modal: Vraag voor het verwijderen van een toot een bevestiging
- setting_display_sensitive_media: Als gevoelig gemarkeerde media altijd tonen
setting_hide_network: Jouw volgers en wie je volgt verbergen
setting_noindex: Jouw toots niet door zoekmachines laten indexeren
setting_reduce_motion: Langzamere animaties
diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml
index 98ec012193..5363aa02a3 100644
--- a/config/locales/simple_form.oc.yml
+++ b/config/locales/simple_form.oc.yml
@@ -69,7 +69,6 @@ oc:
setting_default_privacy: Confidencialitat dels tuts
setting_default_sensitive: Totjorn marcar los mèdias coma sensibles
setting_delete_modal: Mostrar una fenèstra de confirmacion abans de suprimir un estatut
- setting_display_sensitive_media: Totjorn mostrar los mèdias coma sensibles
setting_hide_network: Amagar vòstre malhum
setting_noindex: Èsser pas indexat pels motors de recèrca
setting_reduce_motion: Reduire la velocitat de las animacions
diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml
index 2fb99ccd74..d994eb6f57 100644
--- a/config/locales/simple_form.pl.yml
+++ b/config/locales/simple_form.pl.yml
@@ -74,7 +74,6 @@ pl:
setting_default_privacy: Widoczność wpisów
setting_default_sensitive: Zawsze oznaczaj zawartość multimedialną jako wrażliwą
setting_delete_modal: Pytaj o potwierdzenie przed usunięciem wpisu
- setting_display_sensitive_media: Zawsze oznaczaj zawartość multimedialną jako wrażliwą
setting_favourite_modal: Pytaj o potwierdzenie przed dodaniem do ulubionych
setting_hide_network: Ukryj swoją sieć
setting_noindex: Nie indeksuj mojego profilu w wyszukiwarkach internetowych
diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml
index 013b26066c..23272c41fc 100644
--- a/config/locales/simple_form.pt-BR.yml
+++ b/config/locales/simple_form.pt-BR.yml
@@ -69,7 +69,6 @@ pt-BR:
setting_default_privacy: Privacidade das postagens
setting_default_sensitive: Sempre marcar mídia como sensível
setting_delete_modal: Mostrar diálogo de confirmação antes de deletar uma postagem
- setting_display_sensitive_media: Sempre exibir mídia marcada como sensível
setting_hide_network: Esconder as suas redes
setting_noindex: Não quero ser indexado por mecanismos de busca
setting_reduce_motion: Reduz movimento em animações
diff --git a/config/locales/simple_form.ro.yml b/config/locales/simple_form.ro.yml
index 8cac6d6060..fcccd1a106 100644
--- a/config/locales/simple_form.ro.yml
+++ b/config/locales/simple_form.ro.yml
@@ -63,7 +63,6 @@ ro:
setting_default_privacy: Cine vede postările tale
setting_default_sensitive: Întotdeauna marchează conținutul media ca sensibil
setting_delete_modal: Arată dialogul de confirmare înainte de a șterge o postare
- setting_display_sensitive_media: Întotdeauna arată conținutul media sensibil
setting_hide_network: Ascunde rețeaua
setting_noindex: Nu permite motoarelor de căutare să indexeze rețeaua ta
setting_reduce_motion: Redu mișcarea în animații
diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml
index d1066b0548..daeb7300ac 100644
--- a/config/locales/simple_form.ru.yml
+++ b/config/locales/simple_form.ru.yml
@@ -73,7 +73,6 @@ ru:
setting_default_privacy: Видимость постов
setting_default_sensitive: Всегда отмечать медиаконтент как чувствительный
setting_delete_modal: Показывать диалог подтверждения перед удалением
- setting_display_sensitive_media: Всегда показывать медиаконтент, отмеченный как чувствительный
setting_hide_network: Скрыть свои связи
setting_noindex: Отказаться от индексации в поисковых машинах
setting_reduce_motion: Уменьшить движение в анимации
diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml
index d92e2dd83c..0fd8f66b66 100644
--- a/config/locales/simple_form.sk.yml
+++ b/config/locales/simple_form.sk.yml
@@ -26,8 +26,8 @@ sk:
scopes: Ktoré API budú povolené aplikácii pre prístup. Ak vyberieš vrcholný stupeň, nemusíš už potom vyberať po jednom.
setting_default_language: Jazyk tvojích príspevkov môže byť zistený automaticky, ale nieje to vždy presné
setting_hide_network: Koho následuješ, a kto následuje teba nebude zobrazené na tvojom profile
- setting_noindex: Ovplyvňuje verejný profil a statusy
- setting_theme: Toto ovplyvňuje ako Mastodon vyzerá pri prihlásení z hociakého zariadenia.
+ setting_noindex: Ovplyvňuje verejný profil a stránky s príspevkami
+ setting_theme: Ovplyvňuje ako Mastodon vyzerá pri prihlásení z hociakého zariadenia.
whole_word: Ak je kľúčové slovo, alebo fráza poskladaná iba s písmen a čísel, bude použité iba ak sa zhoduje s celým výrazom
imports:
data: CSV súbor vyexportovaný z inej Mastodon inštancie
@@ -71,7 +71,6 @@ sk:
setting_default_privacy: Súkromie príspevkov
setting_default_sensitive: Označ všetky mediálne súbory ako chúlostivé
setting_delete_modal: Zobrazuj potvrdzovacie okno pred vymazaním toot-u
- setting_display_sensitive_media: Vždy zobrazuj médiá ktoré sú označené ako chúlostivé
setting_hide_network: Ukri svoju sieť kontaktov
setting_noindex: Nezaraďuj príspevky do indexu pre vyhľadávče
setting_reduce_motion: Redukovať pohyb v animáciách
diff --git a/config/locales/simple_form.sr.yml b/config/locales/simple_form.sr.yml
index 3fac11eb8f..333685ed5e 100644
--- a/config/locales/simple_form.sr.yml
+++ b/config/locales/simple_form.sr.yml
@@ -73,7 +73,6 @@ sr:
setting_default_privacy: Приватност објава
setting_default_sensitive: Увек означи мултимедију као осетљиву
setting_delete_modal: Прикажи дијалог за потврду пре брисања тута
- setting_display_sensitive_media: Увек покажи означен садржај као осетљив
setting_hide_network: Сакриј своју мрежу
setting_noindex: Одјави се од индексирања search engine-а
setting_reduce_motion: Смањи покрете у анимацијама
diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml
index 7a10aa1e27..6f2e4b58f2 100644
--- a/config/locales/simple_form.sv.yml
+++ b/config/locales/simple_form.sv.yml
@@ -59,7 +59,6 @@ sv:
setting_default_privacy: Postintegritet
setting_default_sensitive: Markera alltid media som känsligt
setting_delete_modal: Visa bekräftelsedialog innan du raderar en toot
- setting_display_sensitive_media: Visa alltid media märkt som känsligt
setting_hide_network: Göm ditt nätverk
setting_noindex: Uteslutning av sökmotorindexering
setting_reduce_motion: Minska rörelser i animationer
diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml
index b84f7107d0..36b5a3f660 100644
--- a/config/locales/simple_form.zh-CN.yml
+++ b/config/locales/simple_form.zh-CN.yml
@@ -55,7 +55,6 @@ zh-CN:
setting_default_privacy: 嘟文默认可见范围
setting_default_sensitive: 总是将我发送的媒体文件标记为敏感内容
setting_delete_modal: 在删除嘟文前询问我
- setting_display_sensitive_media: 总是显示标记为敏感的媒体文件
setting_hide_network: 隐藏你的社交网络
setting_noindex: 禁止搜索引擎建立索引
setting_reduce_motion: 降低过渡动画效果
diff --git a/config/locales/simple_form.zh-HK.yml b/config/locales/simple_form.zh-HK.yml
index abe6b7e06b..447b9ce7a6 100644
--- a/config/locales/simple_form.zh-HK.yml
+++ b/config/locales/simple_form.zh-HK.yml
@@ -59,7 +59,6 @@ zh-HK:
setting_default_privacy: 文章預設為
setting_default_sensitive: 預設我的內容為敏感內容
setting_delete_modal: 刪推前詢問我
- setting_display_sensitive_media: 預設我的媒體為敏感內容
setting_hide_network: 隱藏你的社交網絡
setting_noindex: 阻止搜尋引擎檢索
setting_reduce_motion: 減低動畫效果
diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml
index 7b31012395..7eae7e1902 100644
--- a/config/locales/simple_form.zh-TW.yml
+++ b/config/locales/simple_form.zh-TW.yml
@@ -69,7 +69,6 @@ zh-TW:
setting_default_privacy: 嘟文預設為
setting_default_sensitive: 總是將媒體標記為敏感內容
setting_delete_modal: 刪除嘟文前先詢問我
- setting_display_sensitive_media: 總是顯示標記為敏感內容的媒體
setting_hide_network: 隱藏你的社交網路
setting_noindex: 阻止搜尋引擎收錄
setting_reduce_motion: 減低動畫效果
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index 8e6e128d80..31698ac5ee 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -37,7 +37,7 @@ sk:
terms: Podmienky užívania
user_count_after:
one: užívateľ
- other: užívatelia
+ other: užívateľov
user_count_before: Domov pre
what_is_mastodon: Čo je Mastodon?
accounts:
@@ -45,8 +45,8 @@ sk:
follow: Sledovať
followers:
one: Následovateľ
- other: Následovatelia
- following: Sleduje
+ other: Sledovatelia
+ following: Sledovaní
joined: Pridal/a sa %{date}
media: Médiá
moved_html: "%{name} účet bol presunutý na %{new_profile_link}:"
@@ -93,9 +93,9 @@ sk:
disabled: Blokovaný
display_name: Zobraziť meno
domain: Doména
- edit: Upraviť
- email: Email
- email_status: Stav Email
+ edit: Uprav
+ email: Emailová adresa
+ email_status: Stav emailu
enable: Povoliť
enabled: Povolený
feed_url: URL časovej osi
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index 0e8f218215..9bb8124bea 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -11,7 +11,7 @@ zh-CN:
contact: 联系方式
contact_missing: 未设定
contact_unavailable: 未公开
- documentation: 文件
+ documentation: 文档
extended_description_html: |
这里可以写一些规定
本站尚未设置详细介绍。
@@ -28,15 +28,15 @@ zh-CN:
hosted_on: 一个在 %{domain} 上运行的 Mastodon 实例
learn_more: 了解详情
other_instances: 其他实例
- privacy_policy: 隐私条款
+ privacy_policy: 隐私政策
source_code: 源代码
status_count_after:
- one: 状态
+ one: 条嘟文
status_count_before: 他们共嘟出了
terms: 使用条款
user_count_after:
- one: 用户
- other: 用户
+ one: 位用户
+ other: 位用户
user_count_before: 这里共注册有
what_is_mastodon: Mastodon 是什么?
accounts:
@@ -53,7 +53,7 @@ zh-CN:
people_followed_by: "%{name} 关注的人"
people_who_follow: 关注 %{name} 的人
posts:
- one: 嘟嘟
+ one: 嘟文
other: 嘟文
posts_tab_heading: 嘟文
posts_with_replies: 嘟文和回复
@@ -190,7 +190,7 @@ zh-CN:
unsuspend_account: "%{name} 解除了用户 %{target} 的封禁状态"
update_custom_emoji: "%{name} 更新了自定义表情 %{target}"
update_status: "%{name} 刷新了 %{target} 的嘟文"
- deleted_status: "(状态已删除)"
+ deleted_status: "(嘟文已删除)"
title: 运营日志
custom_emojis:
by_domain: 域名
@@ -218,24 +218,26 @@ zh-CN:
updated_msg: 表情更新成功!
upload: 上传新表情
dashboard:
- config: 设置
- feature_deletions: 帐号删除
+ backlog: 未处理任务数
+ config: 服务器配置
+ feature_deletions: 帐户删除
feature_invites: 邀请链接
- feature_registrations: 注册
- features: 特性
- hidden_service: 与暗网互联
- open_reports: 待处理举报
+ feature_registrations: 公开注册
+ feature_relay: 同步中继
+ features: 功能
+ hidden_service: 匿名服务连通性
+ open_reports: 待处理举报数
recent_users: 新用户
search: 全文搜索
single_user_mode: 单用户模式
software: 软件
- space: 空间用量
- title: 大盘
+ space: 存储使用情况
+ title: 仪表盘
total_users: 总用户数
trends: 趋势
- week_interactions: 本周互动
- week_users_active: 本周活跃用户
- week_users_new: 本周新用户
+ week_interactions: 本周互动数
+ week_users_active: 本周活跃用户数
+ week_users_new: 本周新用户数
domain_blocks:
add_new: 添加新条目
created_msg: 正在进行域名屏蔽
@@ -259,8 +261,8 @@ zh-CN:
severity: 屏蔽级别
show:
affected_accounts:
- one: 影响数据库中 1 位用户
- other: 影响数据库中 %{count} 位用户
+ one: 将会影响到数据库中的 1 个帐户
+ other: 将会影响到数据库中的 %{count} 个帐户
retroactive:
silence: 对此域名的所有帐户解除隐藏
suspend: 对此域名的所有帐户解除封禁
@@ -285,7 +287,7 @@ zh-CN:
search: 搜索
title: 已知实例
invites:
- deactivate_all: 全部禁用
+ deactivate_all: 撤销所有邀请链接
filter:
all: 全部
available: 可用
@@ -293,12 +295,13 @@ zh-CN:
title: 筛选
title: 邀请用户
relays:
- add_new: 添加中继
- description_html: "
消息中继是一种中间服务器,用于在订阅它和向它推送消息的服务器之间大量交换嘟文。
它可以帮助中小型实例发现长毛象宇宙中的内容,而无需本地用户手动关注其他远程实例上的用户。"
- enable_hint: 一经启用,你的服务器会订阅此中继的所有嘟文,并向其发送本服务器的公共嘟文。
+ add_new: 添加新的中继
+ description_html: "
同步中继是一种中间服务器,各实例可以通过订阅中继和向中继推送信息的方式来大量交换公开嘟文。
它可以帮助中小型实例发现网络中的内容,而无需本地用户手动关注其他远程实例上的用户。"
+ enable_hint: 启用此功能后,你的实例会订阅此中继的所有公开嘟文,并同时向其推送本服务器的公开嘟文。
inbox_url: 中继 URL
pending: 等待中继确认
save_and_enable: 保存并启用
+ setup: 设置中继连接
status: 状态
title: 中继
report_notes:
@@ -347,6 +350,7 @@ zh-CN:
email: 用于联系的公开电子邮件地址
username: 用于联系的公开用户名
custom_css:
+ desc_html: 通过 CSS 代码调整所有页面的显示效果
title: 自定义 CSS
hero:
desc_html: 用于在首页展示。推荐分辨率 600×100px 以上。未指定的情况下将默认使用本站缩略图
@@ -355,8 +359,8 @@ zh-CN:
desc_html: 截至目前本实例在网络中已发现的域名
title: 公开已知实例的列表
preview_sensitive_media:
- desc_html: 即使媒体文件被标记为敏感内容,其他站点上的链接预览仍会显示其缩略图
- title: 在 OpenGraph 预览中显示敏感内容
+ desc_html: 始终在站外链接预览中展示缩略图,无论媒体内容是否标记为敏感
+ title: 在 OpenGraph 预览中显示敏感媒体内容
registrations:
closed_message:
desc_html: 本站关闭注册期间的提示信息。可以使用 HTML 标签
@@ -517,16 +521,19 @@ zh-CN:
storage: 媒体文件存储
filters:
contexts:
+ home: 主页时间轴
notifications: 通知
- public: 公共时间线
+ public: 公共时间轴
thread: 对话
edit:
title: 编辑过滤器
+ errors:
+ invalid_irreversible: 此功能只适用于主页时间轴或通知
index:
delete: 删除
title: 过滤器
new:
- title: 添加过滤器
+ title: 添加新的过滤器
followers:
domain: 域名
explanation_html: 为保证你的嘟文的隐私安全,你应当经常检查你的关注者列表。
受保护的嘟文将会发送到所有关注者所在的实例上。有些实例使用的软件代码或其管理员可能不会尊重你的隐私设置,因此你应当复查一下关注者列表,并移除那些你无法信任的关注者。
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index ad73c5583a..e2b9b520ed 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -12,7 +12,9 @@ zh-TW:
contact_missing: 未設定
contact_unavailable: 未公開
documentation: 文件
- extended_description_html: "
這裡可以寫一些網站規則
本站點未有詳細介紹
\n"
+ extended_description_html: |
+
這裡可以寫一些網站規則
+
本站點未有詳細介紹
features:
humane_approach_body: Mastodon 從其他網路的失敗經驗中汲取教訓,以合乎道德的設計對抗社交媒體的濫用問題。
humane_approach_title: 以人為本
diff --git a/config/routes.rb b/config/routes.rb
index 90333daabf..db79fc3230 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -21,6 +21,7 @@ Rails.application.routes.draw do
get '.well-known/host-meta', to: 'well_known/host_meta#show', as: :host_meta, defaults: { format: 'xml' }
get '.well-known/webfinger', to: 'well_known/webfinger#show', as: :webfinger
+ get '.well-known/change-password', to: redirect('/auth/edit')
get 'manifest', to: 'manifests#show', defaults: { format: 'json' }
get 'intent', to: 'intents#show'
get 'custom.css', to: 'custom_css#show', as: :custom_css
@@ -279,7 +280,7 @@ Rails.application.routes.draw do
end
resources :favourites, only: [:index]
resources :bookmarks, only: [:index]
- resources :reports, only: [:index, :create]
+ resources :reports, only: [:create]
resources :filters, only: [:index, :create, :show, :update, :destroy]
resources :endorsements, only: [:index]
diff --git a/config/settings.yml b/config/settings.yml
index 304271910e..48639e9a8b 100644
--- a/config/settings.yml
+++ b/config/settings.yml
@@ -27,7 +27,8 @@ defaults: &defaults
favourite_modal: false
delete_modal: true
auto_play_gif: false
- display_sensitive_media: false
+ display_media: 'default'
+ expand_spoilers: false
preview_sensitive_media: false
reduce_motion: false
system_font_ui: false
diff --git a/config/sidekiq.yml b/config/sidekiq.yml
index 59dfeaf975..6a09bb6e9a 100644
--- a/config/sidekiq.yml
+++ b/config/sidekiq.yml
@@ -1,10 +1,10 @@
---
:concurrency: 5
:queues:
- - default
- - push
- - mailers
- - pull
+ - [default, 6]
+ - [push, 4]
+ - [mailers, 2]
+ - [pull]
:schedule:
subscriptions_scheduler:
cron: '<%= Random.rand(0..59) %> <%= Random.rand(4..6) %> * * *'
diff --git a/dist/mastodon-sidekiq.service b/dist/mastodon-sidekiq.service
new file mode 100644
index 0000000000..721a866090
--- /dev/null
+++ b/dist/mastodon-sidekiq.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=mastodon-sidekiq
+After=network.target
+
+[Service]
+Type=simple
+User=mastodon
+WorkingDirectory=/home/mastodon/live
+Environment="RAILS_ENV=production"
+Environment="DB_POOL=25"
+Environment="MALLOC_ARENA_MAX=2"
+ExecStart=/home/mastodon/.rbenv/shims/bundle exec sidekiq -c 25
+TimeoutSec=15
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
diff --git a/dist/mastodon-streaming.service b/dist/mastodon-streaming.service
new file mode 100644
index 0000000000..5d7c129dfb
--- /dev/null
+++ b/dist/mastodon-streaming.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=mastodon-streaming
+After=network.target
+
+[Service]
+Type=simple
+User=mastodon
+WorkingDirectory=/home/mastodon/live
+Environment="NODE_ENV=production"
+Environment="PORT=4000"
+Environment="STREAMING_CLUSTER_NUM=1"
+ExecStart=/usr/bin/npm run start
+TimeoutSec=15
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
diff --git a/dist/mastodon-web.service b/dist/mastodon-web.service
new file mode 100644
index 0000000000..30fcbec1e0
--- /dev/null
+++ b/dist/mastodon-web.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=mastodon-web
+After=network.target
+
+[Service]
+Type=simple
+User=mastodon
+WorkingDirectory=/home/mastodon/live
+Environment="RAILS_ENV=production"
+Environment="PORT=3000"
+ExecStart=/home/mastodon/.rbenv/shims/bundle exec puma -C config/puma.rb
+ExecReload=/bin/kill -SIGUSR1 $MAINPID
+TimeoutSec=15
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
diff --git a/dist/nginx.conf b/dist/nginx.conf
new file mode 100644
index 0000000000..3d57417657
--- /dev/null
+++ b/dist/nginx.conf
@@ -0,0 +1,106 @@
+map $http_upgrade $connection_upgrade {
+ default upgrade;
+ '' close;
+}
+
+proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=CACHE:10m inactive=7d max_size=1g;
+
+server {
+ listen 80;
+ listen [::]:80;
+ server_name example.com;
+ root /home/mastodon/live/public;
+ location /.well-known/acme-challenge/ { allow all; }
+ location / { return 301 https://$host$request_uri; }
+}
+
+server {
+ listen 443 ssl http2;
+ listen [::]:443 ssl http2;
+ server_name example.com;
+
+ ssl_protocols TLSv1.2;
+ ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;
+ ssl_prefer_server_ciphers on;
+ ssl_session_cache shared:SSL:10m;
+
+ # Uncomment these lines once you acquire a certificate:
+ # ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
+ # ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
+
+ keepalive_timeout 70;
+ sendfile on;
+ client_max_body_size 80m;
+
+ root /home/mastodon/live/public;
+
+ gzip on;
+ gzip_disable "msie6";
+ gzip_vary on;
+ gzip_proxied any;
+ gzip_comp_level 6;
+ gzip_buffers 16 8k;
+ gzip_http_version 1.1;
+ gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
+
+ add_header Strict-Transport-Security "max-age=31536000";
+
+ location / {
+ try_files $uri @proxy;
+ }
+
+ location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) {
+ add_header Cache-Control "public, max-age=31536000, immutable";
+ add_header Strict-Transport-Security "max-age=31536000";
+ try_files $uri @proxy;
+ }
+
+ location /sw.js {
+ add_header Cache-Control "public, max-age=0";
+ add_header Strict-Transport-Security "max-age=31536000";
+ try_files $uri @proxy;
+ }
+
+ location @proxy {
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto https;
+ proxy_set_header Proxy "";
+ proxy_pass_header Server;
+
+ proxy_pass http://127.0.0.1:3000;
+ proxy_buffering on;
+ proxy_redirect off;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection $connection_upgrade;
+
+ proxy_cache CACHE;
+ proxy_cache_valid 200 7d;
+ proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
+ add_header X-Cached $upstream_cache_status;
+ add_header Strict-Transport-Security "max-age=31536000";
+
+ tcp_nodelay on;
+ }
+
+ location /api/v1/streaming {
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto https;
+ proxy_set_header Proxy "";
+
+ proxy_pass http://127.0.0.1:4000;
+ proxy_buffering off;
+ proxy_redirect off;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection $connection_upgrade;
+
+ tcp_nodelay on;
+ }
+
+ error_page 500 501 502 503 504 /500.html;
+}
diff --git a/docs/Contributing-to-Mastodon/Sponsors.md b/docs/Contributing-to-Mastodon/Sponsors.md
deleted file mode 100644
index 8fc22b6bbd..0000000000
--- a/docs/Contributing-to-Mastodon/Sponsors.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Contributing-to-Mastodon/Sponsors.md)
diff --git a/docs/Contributing-to-Mastodon/Translating.md b/docs/Contributing-to-Mastodon/Translating.md
deleted file mode 100644
index 1671645eea..0000000000
--- a/docs/Contributing-to-Mastodon/Translating.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Contributing-to-Mastodon/Translating.md)
diff --git a/docs/Extensions.md b/docs/Extensions.md
deleted file mode 100644
index be4c6eabd7..0000000000
--- a/docs/Extensions.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Extensions.md)
diff --git a/docs/README.md b/docs/README.md
deleted file mode 100644
index 63bcf5a248..0000000000
--- a/docs/README.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/README.md)
diff --git a/docs/Running-Mastodon/Administration-guide.md b/docs/Running-Mastodon/Administration-guide.md
deleted file mode 100644
index e7571be3a2..0000000000
--- a/docs/Running-Mastodon/Administration-guide.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Administration-guide.md)
diff --git a/docs/Running-Mastodon/Development-guide.md b/docs/Running-Mastodon/Development-guide.md
deleted file mode 100644
index 10ed640875..0000000000
--- a/docs/Running-Mastodon/Development-guide.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Development-guide.md)
diff --git a/docs/Running-Mastodon/Heroku-guide.md b/docs/Running-Mastodon/Heroku-guide.md
deleted file mode 100644
index aa5abc1f55..0000000000
--- a/docs/Running-Mastodon/Heroku-guide.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Heroku-guide.md)
diff --git a/docs/Running-Mastodon/Production-guide.md b/docs/Running-Mastodon/Production-guide.md
deleted file mode 100644
index 08649e9ce5..0000000000
--- a/docs/Running-Mastodon/Production-guide.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md)
diff --git a/docs/Running-Mastodon/Scalingo-guide.md b/docs/Running-Mastodon/Scalingo-guide.md
deleted file mode 100644
index 8c986f7509..0000000000
--- a/docs/Running-Mastodon/Scalingo-guide.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Scalingo-guide.md)
diff --git a/docs/Running-Mastodon/Tuning.md b/docs/Running-Mastodon/Tuning.md
deleted file mode 100644
index 5e5474194a..0000000000
--- a/docs/Running-Mastodon/Tuning.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Tuning.md)
diff --git a/docs/Running-Mastodon/Vagrant-guide.md b/docs/Running-Mastodon/Vagrant-guide.md
deleted file mode 100644
index c5823b09b2..0000000000
--- a/docs/Running-Mastodon/Vagrant-guide.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Vagrant-guide.md)
diff --git a/docs/Specs-and-RFCs-used.md b/docs/Specs-and-RFCs-used.md
deleted file mode 100644
index 89a4dd313e..0000000000
--- a/docs/Specs-and-RFCs-used.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Specs-and-RFCs-used.md)
diff --git a/docs/Using-Mastodon/2FA.md b/docs/Using-Mastodon/2FA.md
deleted file mode 100644
index d5c6985b70..0000000000
--- a/docs/Using-Mastodon/2FA.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/2FA.md)
diff --git a/docs/Using-Mastodon/Apps.md b/docs/Using-Mastodon/Apps.md
deleted file mode 100644
index c2ced44576..0000000000
--- a/docs/Using-Mastodon/Apps.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md)
diff --git a/docs/Using-Mastodon/FAQ.md b/docs/Using-Mastodon/FAQ.md
deleted file mode 100644
index d50e63b93d..0000000000
--- a/docs/Using-Mastodon/FAQ.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/FAQ.md)
diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md
deleted file mode 100644
index 0e2d08643e..0000000000
--- a/docs/Using-Mastodon/List-of-Mastodon-instances.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/List-of-Mastodon-instances.md)
diff --git a/docs/Using-Mastodon/User-guide.md b/docs/Using-Mastodon/User-guide.md
deleted file mode 100644
index 7ef5a117b0..0000000000
--- a/docs/Using-Mastodon/User-guide.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/User-guide.md)
diff --git a/docs/Using-the-API/API.md b/docs/Using-the-API/API.md
deleted file mode 100644
index 6de61e1961..0000000000
--- a/docs/Using-the-API/API.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md)
diff --git a/docs/Using-the-API/OAuth-details.md b/docs/Using-the-API/OAuth-details.md
deleted file mode 100644
index 6a6926bb9c..0000000000
--- a/docs/Using-the-API/OAuth-details.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Using-the-API/OAuth-details.md)
diff --git a/docs/Using-the-API/Push-notifications.md b/docs/Using-the-API/Push-notifications.md
deleted file mode 100644
index 3292c0a6e4..0000000000
--- a/docs/Using-the-API/Push-notifications.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Using-the-API/Push-notifications.md)
diff --git a/docs/Using-the-API/Streaming-API.md b/docs/Using-the-API/Streaming-API.md
deleted file mode 100644
index 482f901c0f..0000000000
--- a/docs/Using-the-API/Streaming-API.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Using-the-API/Streaming-API.md)
diff --git a/docs/Using-the-API/Testing-with-cURL.md b/docs/Using-the-API/Testing-with-cURL.md
deleted file mode 100644
index 04c7c87b2d..0000000000
--- a/docs/Using-the-API/Testing-with-cURL.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Using-the-API/Testing-with-cURL.md)
diff --git a/docs/Using-the-API/Tips-for-app-developers.md b/docs/Using-the-API/Tips-for-app-developers.md
deleted file mode 100644
index 36a28da2ea..0000000000
--- a/docs/Using-the-API/Tips-for-app-developers.md
+++ /dev/null
@@ -1 +0,0 @@
-[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Using-the-API/Tips-for-app-developers.md)
diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb
index 65c1b395af..704cf474b5 100644
--- a/lib/mastodon/accounts_cli.rb
+++ b/lib/mastodon/accounts_cli.rb
@@ -83,7 +83,8 @@ module Mastodon
end
end
- user.account = account
+ account.suspended = false
+ user.account = account
if user.save
if options[:confirmed]
@@ -170,11 +171,32 @@ module Mastodon
exit(1)
end
- say("Deleting user with #{account.statuses_count}, this might take a while...")
+ say("Deleting user with #{account.statuses_count} statuses, this might take a while...")
SuspendAccountService.new.call(account, remove_user: true)
say('OK', :green)
end
+ desc 'backup USERNAME', 'Request a backup for a user'
+ long_desc <<-LONG_DESC
+ Request a new backup for an account with a given USERNAME.
+
+ The backup will be created in Sidekiq asynchronously, and
+ the user will receive an e-mail with a link to it once
+ it's done.
+ LONG_DESC
+ def backup(username)
+ account = Account.find_local(username)
+
+ if account.nil?
+ say('No user with such username', :red)
+ exit(1)
+ end
+
+ backup = account.user.backups.create!
+ BackupWorker.perform_async(backup.id)
+ say('OK', :green)
+ end
+
option :dry_run, type: :boolean
desc 'cull', 'Remove remote accounts that no longer exist'
long_desc <<-LONG_DESC
diff --git a/spec/controllers/api/v1/favourites_controller_spec.rb b/spec/controllers/api/v1/favourites_controller_spec.rb
index 2bdf927f21..231f765008 100644
--- a/spec/controllers/api/v1/favourites_controller_spec.rb
+++ b/spec/controllers/api/v1/favourites_controller_spec.rb
@@ -64,7 +64,7 @@ RSpec.describe Api::V1::FavouritesController, type: :controller do
get :index, params: { limit: 1 }
expect(response.headers['Link'].find_link(['rel', 'next']).href).to eq "http://test.host/api/v1/favourites?limit=1&max_id=#{favourite.id}"
- expect(response.headers['Link'].find_link(['rel', 'prev']).href).to eq "http://test.host/api/v1/favourites?limit=1&since_id=#{favourite.id}"
+ expect(response.headers['Link'].find_link(['rel', 'prev']).href).to eq "http://test.host/api/v1/favourites?limit=1&min_id=#{favourite.id}"
end
it 'does not add pagination headers if not necessary' do
diff --git a/spec/controllers/api/v1/reports_controller_spec.rb b/spec/controllers/api/v1/reports_controller_spec.rb
index ac93998c69..a3596cf8a0 100644
--- a/spec/controllers/api/v1/reports_controller_spec.rb
+++ b/spec/controllers/api/v1/reports_controller_spec.rb
@@ -12,16 +12,6 @@ RSpec.describe Api::V1::ReportsController, type: :controller do
allow(controller).to receive(:doorkeeper_token) { token }
end
- describe 'GET #index' do
- let(:scopes) { 'read:reports' }
-
- it 'returns http success' do
- get :index
-
- expect(response).to have_http_status(200)
- end
- end
-
describe 'POST #create' do
let(:scopes) { 'write:reports' }
let!(:status) { Fabricate(:status) }
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index 3ccd96f446..61780b46b9 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -9,6 +9,14 @@ describe ApplicationHelper do
expect(result).to eq "active"
end
+ it 'returns active when on a current page' do
+ allow(helper).to receive(:current_page?).with('/foo').and_return(false)
+ allow(helper).to receive(:current_page?).with('/test').and_return(true)
+
+ result = helper.active_nav_class('/foo', '/test')
+ expect(result).to eq "active"
+ end
+
it 'returns empty string when not on current page' do
allow(helper).to receive(:current_page?).and_return(false)