mirror of
https://github.com/mastodon/mastodon.git
synced 2024-08-20 21:08:15 -07:00
Compare commits
27 commits
0b274bd554
...
17f29dee5f
Author | SHA1 | Date | |
---|---|---|---|
|
17f29dee5f | ||
|
724f87cdcc | ||
|
078abefda6 | ||
|
a78128b826 | ||
|
6a0cd08674 | ||
|
ed1f244a4e | ||
|
3f2bc347b9 | ||
|
2393a5b8db | ||
|
051b02a88c | ||
|
c66a7d3e78 | ||
|
dd6d932f19 | ||
|
25cb8c3a99 | ||
|
392657f545 | ||
|
2c1e75727d | ||
|
549ab089ee | ||
|
288961bbb9 | ||
|
520ff04248 | ||
|
66a16bf49c | ||
|
fd1bade135 | ||
|
4eab6aef95 | ||
|
598ae4f2da | ||
|
2ce99c51dd | ||
|
7d11a6c9b0 | ||
|
e1f7ca7ced | ||
|
7e33583daa | ||
|
1229d2907a | ||
|
c40e481169 |
152 changed files with 1377 additions and 385 deletions
1
.github/workflows/crowdin-upload.yml
vendored
1
.github/workflows/crowdin-upload.yml
vendored
|
@ -19,6 +19,7 @@ on:
|
|||
jobs:
|
||||
upload-translations:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.repository == 'mastodon/mastodon'
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# syntax=docker/dockerfile:1.8
|
||||
# syntax=docker/dockerfile:1.9
|
||||
|
||||
# This file is designed for production server deployment, not local development work
|
||||
# For a containerized local dev environment, see: https://github.com/mastodon/mastodon/blob/main/README.md#docker
|
||||
|
|
7
Gemfile
7
Gemfile
|
@ -6,7 +6,7 @@ ruby '>= 3.1.0'
|
|||
gem 'propshaft'
|
||||
gem 'puma', '~> 6.3'
|
||||
gem 'rack', '~> 2.2.7'
|
||||
gem 'rails', '~> 7.1.1'
|
||||
gem 'rails', '7.2.0.beta3'
|
||||
gem 'thor', '~> 1.2'
|
||||
|
||||
gem 'dotenv'
|
||||
|
@ -63,6 +63,7 @@ gem 'kaminari', '~> 1.2'
|
|||
gem 'link_header', '~> 0.0'
|
||||
gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock'
|
||||
gem 'mime-types', '~> 3.5.0', require: 'mime/types/columnar'
|
||||
gem 'mutex_m'
|
||||
gem 'nokogiri', '~> 1.15'
|
||||
gem 'nsa'
|
||||
gem 'oj', '~> 3.14'
|
||||
|
@ -141,7 +142,7 @@ group :test do
|
|||
gem 'selenium-webdriver'
|
||||
|
||||
# Used to reset the database between system tests
|
||||
gem 'database_cleaner-active_record'
|
||||
gem 'database_cleaner-active_record', github: 'DatabaseCleaner/database_cleaner-active_record' # TODO: Release version?
|
||||
|
||||
# Used to mock environment variables
|
||||
gem 'climate_control'
|
||||
|
@ -208,7 +209,7 @@ group :development, :test do
|
|||
gem 'memory_profiler', require: false
|
||||
gem 'ruby-prof', require: false
|
||||
gem 'stackprof', require: false
|
||||
gem 'test-prof'
|
||||
gem 'test-prof', github: 'test-prof/test-prof'
|
||||
|
||||
# RSpec runner for rails
|
||||
gem 'rspec-rails', '~> 6.0'
|
||||
|
|
159
Gemfile.lock
159
Gemfile.lock
|
@ -7,38 +7,46 @@ GIT
|
|||
hkdf (~> 0.2)
|
||||
jwt (~> 2.0)
|
||||
|
||||
GIT
|
||||
remote: https://github.com/DatabaseCleaner/database_cleaner-active_record.git
|
||||
revision: 79b08760d66369f43c40c49cc845a68ea9727e6e
|
||||
specs:
|
||||
database_cleaner-active_record (2.1.0)
|
||||
activerecord (>= 5.a)
|
||||
database_cleaner-core (~> 2.0.0)
|
||||
|
||||
GIT
|
||||
remote: https://github.com/test-prof/test-prof.git
|
||||
revision: 065ca2465118769a1a809dac66ff57f07562691d
|
||||
specs:
|
||||
test-prof (1.4.0.rc.4)
|
||||
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
actioncable (7.1.3.4)
|
||||
actionpack (= 7.1.3.4)
|
||||
activesupport (= 7.1.3.4)
|
||||
actioncable (7.2.0.beta3)
|
||||
actionpack (= 7.2.0.beta3)
|
||||
activesupport (= 7.2.0.beta3)
|
||||
nio4r (~> 2.0)
|
||||
websocket-driver (>= 0.6.1)
|
||||
zeitwerk (~> 2.6)
|
||||
actionmailbox (7.1.3.4)
|
||||
actionpack (= 7.1.3.4)
|
||||
activejob (= 7.1.3.4)
|
||||
activerecord (= 7.1.3.4)
|
||||
activestorage (= 7.1.3.4)
|
||||
activesupport (= 7.1.3.4)
|
||||
mail (>= 2.7.1)
|
||||
net-imap
|
||||
net-pop
|
||||
net-smtp
|
||||
actionmailer (7.1.3.4)
|
||||
actionpack (= 7.1.3.4)
|
||||
actionview (= 7.1.3.4)
|
||||
activejob (= 7.1.3.4)
|
||||
activesupport (= 7.1.3.4)
|
||||
mail (~> 2.5, >= 2.5.4)
|
||||
net-imap
|
||||
net-pop
|
||||
net-smtp
|
||||
actionmailbox (7.2.0.beta3)
|
||||
actionpack (= 7.2.0.beta3)
|
||||
activejob (= 7.2.0.beta3)
|
||||
activerecord (= 7.2.0.beta3)
|
||||
activestorage (= 7.2.0.beta3)
|
||||
activesupport (= 7.2.0.beta3)
|
||||
mail (>= 2.8.0)
|
||||
actionmailer (7.2.0.beta3)
|
||||
actionpack (= 7.2.0.beta3)
|
||||
actionview (= 7.2.0.beta3)
|
||||
activejob (= 7.2.0.beta3)
|
||||
activesupport (= 7.2.0.beta3)
|
||||
mail (>= 2.8.0)
|
||||
rails-dom-testing (~> 2.2)
|
||||
actionpack (7.1.3.4)
|
||||
actionview (= 7.1.3.4)
|
||||
activesupport (= 7.1.3.4)
|
||||
actionpack (7.2.0.beta3)
|
||||
actionview (= 7.2.0.beta3)
|
||||
activesupport (= 7.2.0.beta3)
|
||||
nokogiri (>= 1.8.5)
|
||||
racc
|
||||
rack (>= 2.2.4)
|
||||
|
@ -46,15 +54,16 @@ GEM
|
|||
rack-test (>= 0.6.3)
|
||||
rails-dom-testing (~> 2.2)
|
||||
rails-html-sanitizer (~> 1.6)
|
||||
actiontext (7.1.3.4)
|
||||
actionpack (= 7.1.3.4)
|
||||
activerecord (= 7.1.3.4)
|
||||
activestorage (= 7.1.3.4)
|
||||
activesupport (= 7.1.3.4)
|
||||
useragent (~> 0.16)
|
||||
actiontext (7.2.0.beta3)
|
||||
actionpack (= 7.2.0.beta3)
|
||||
activerecord (= 7.2.0.beta3)
|
||||
activestorage (= 7.2.0.beta3)
|
||||
activesupport (= 7.2.0.beta3)
|
||||
globalid (>= 0.6.0)
|
||||
nokogiri (>= 1.8.5)
|
||||
actionview (7.1.3.4)
|
||||
activesupport (= 7.1.3.4)
|
||||
actionview (7.2.0.beta3)
|
||||
activesupport (= 7.2.0.beta3)
|
||||
builder (~> 3.1)
|
||||
erubi (~> 1.11)
|
||||
rails-dom-testing (~> 2.2)
|
||||
|
@ -64,31 +73,31 @@ GEM
|
|||
activemodel (>= 4.1)
|
||||
case_transform (>= 0.2)
|
||||
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
||||
activejob (7.1.3.4)
|
||||
activesupport (= 7.1.3.4)
|
||||
activejob (7.2.0.beta3)
|
||||
activesupport (= 7.2.0.beta3)
|
||||
globalid (>= 0.3.6)
|
||||
activemodel (7.1.3.4)
|
||||
activesupport (= 7.1.3.4)
|
||||
activerecord (7.1.3.4)
|
||||
activemodel (= 7.1.3.4)
|
||||
activesupport (= 7.1.3.4)
|
||||
activemodel (7.2.0.beta3)
|
||||
activesupport (= 7.2.0.beta3)
|
||||
activerecord (7.2.0.beta3)
|
||||
activemodel (= 7.2.0.beta3)
|
||||
activesupport (= 7.2.0.beta3)
|
||||
timeout (>= 0.4.0)
|
||||
activestorage (7.1.3.4)
|
||||
actionpack (= 7.1.3.4)
|
||||
activejob (= 7.1.3.4)
|
||||
activerecord (= 7.1.3.4)
|
||||
activesupport (= 7.1.3.4)
|
||||
activestorage (7.2.0.beta3)
|
||||
actionpack (= 7.2.0.beta3)
|
||||
activejob (= 7.2.0.beta3)
|
||||
activerecord (= 7.2.0.beta3)
|
||||
activesupport (= 7.2.0.beta3)
|
||||
marcel (~> 1.0)
|
||||
activesupport (7.1.3.4)
|
||||
activesupport (7.2.0.beta3)
|
||||
base64
|
||||
bigdecimal
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
concurrent-ruby (~> 1.0, >= 1.3.1)
|
||||
connection_pool (>= 2.2.5)
|
||||
drb
|
||||
i18n (>= 1.6, < 2)
|
||||
logger (>= 1.4.2)
|
||||
minitest (>= 5.1)
|
||||
mutex_m
|
||||
tzinfo (~> 2.0)
|
||||
tzinfo (~> 2.0, >= 2.0.5)
|
||||
addressable (2.8.7)
|
||||
public_suffix (>= 2.0.2, < 7.0)
|
||||
aes_key_wrap (1.1.0)
|
||||
|
@ -180,9 +189,6 @@ GEM
|
|||
css_parser (1.17.1)
|
||||
addressable
|
||||
csv (3.3.0)
|
||||
database_cleaner-active_record (2.2.0)
|
||||
activerecord (>= 5.a)
|
||||
database_cleaner-core (~> 2.0.0)
|
||||
database_cleaner-core (2.0.1)
|
||||
date (3.3.4)
|
||||
debug (1.9.2)
|
||||
|
@ -357,13 +363,14 @@ GEM
|
|||
aes_key_wrap
|
||||
bindata
|
||||
httpclient
|
||||
json-ld (3.3.1)
|
||||
json-ld (3.3.2)
|
||||
htmlentities (~> 4.3)
|
||||
json-canonicalization (~> 1.0)
|
||||
link_header (~> 0.0, >= 0.0.8)
|
||||
multi_json (~> 1.15)
|
||||
rack (>= 2.2, < 4)
|
||||
rdf (~> 3.3)
|
||||
rexml (~> 3.2)
|
||||
json-ld-preloaded (3.3.0)
|
||||
json-ld (~> 3.3)
|
||||
rdf (~> 3.3)
|
||||
|
@ -516,7 +523,7 @@ GEM
|
|||
opentelemetry-api (~> 1.0)
|
||||
opentelemetry-instrumentation-active_support (~> 0.1)
|
||||
opentelemetry-instrumentation-base (~> 0.22.1)
|
||||
opentelemetry-instrumentation-active_job (0.7.3)
|
||||
opentelemetry-instrumentation-active_job (0.7.4)
|
||||
opentelemetry-api (~> 1.0)
|
||||
opentelemetry-instrumentation-base (~> 0.22.1)
|
||||
opentelemetry-instrumentation-active_model_serializers (0.20.2)
|
||||
|
@ -637,20 +644,20 @@ GEM
|
|||
rackup (1.0.0)
|
||||
rack (< 3)
|
||||
webrick
|
||||
rails (7.1.3.4)
|
||||
actioncable (= 7.1.3.4)
|
||||
actionmailbox (= 7.1.3.4)
|
||||
actionmailer (= 7.1.3.4)
|
||||
actionpack (= 7.1.3.4)
|
||||
actiontext (= 7.1.3.4)
|
||||
actionview (= 7.1.3.4)
|
||||
activejob (= 7.1.3.4)
|
||||
activemodel (= 7.1.3.4)
|
||||
activerecord (= 7.1.3.4)
|
||||
activestorage (= 7.1.3.4)
|
||||
activesupport (= 7.1.3.4)
|
||||
rails (7.2.0.beta3)
|
||||
actioncable (= 7.2.0.beta3)
|
||||
actionmailbox (= 7.2.0.beta3)
|
||||
actionmailer (= 7.2.0.beta3)
|
||||
actionpack (= 7.2.0.beta3)
|
||||
actiontext (= 7.2.0.beta3)
|
||||
actionview (= 7.2.0.beta3)
|
||||
activejob (= 7.2.0.beta3)
|
||||
activemodel (= 7.2.0.beta3)
|
||||
activerecord (= 7.2.0.beta3)
|
||||
activestorage (= 7.2.0.beta3)
|
||||
activesupport (= 7.2.0.beta3)
|
||||
bundler (>= 1.15.0)
|
||||
railties (= 7.1.3.4)
|
||||
railties (= 7.2.0.beta3)
|
||||
rails-controller-testing (1.0.5)
|
||||
actionpack (>= 5.0.1.rc1)
|
||||
actionview (>= 5.0.1.rc1)
|
||||
|
@ -665,18 +672,19 @@ GEM
|
|||
rails-i18n (7.0.9)
|
||||
i18n (>= 0.7, < 2)
|
||||
railties (>= 6.0.0, < 8)
|
||||
railties (7.1.3.4)
|
||||
actionpack (= 7.1.3.4)
|
||||
activesupport (= 7.1.3.4)
|
||||
irb
|
||||
railties (7.2.0.beta3)
|
||||
actionpack (= 7.2.0.beta3)
|
||||
activesupport (= 7.2.0.beta3)
|
||||
irb (~> 1.13)
|
||||
rackup (>= 1.0.0)
|
||||
rake (>= 12.2)
|
||||
thor (~> 1.0, >= 1.2.2)
|
||||
zeitwerk (~> 2.6)
|
||||
rainbow (3.1.1)
|
||||
rake (13.2.1)
|
||||
rdf (3.3.1)
|
||||
rdf (3.3.2)
|
||||
bcp47_spec (~> 0.2)
|
||||
bigdecimal (~> 3.1, >= 3.1.5)
|
||||
link_header (~> 0.0, >= 0.0.8)
|
||||
rdf-normalize (0.7.0)
|
||||
rdf (~> 3.3)
|
||||
|
@ -834,7 +842,6 @@ GEM
|
|||
unicode-display_width (>= 1.1.1, < 3)
|
||||
terrapin (1.0.1)
|
||||
climate_control
|
||||
test-prof (1.3.3.1)
|
||||
thor (1.3.1)
|
||||
tilt (2.3.0)
|
||||
timeout (0.4.1)
|
||||
|
@ -864,6 +871,7 @@ GEM
|
|||
unf_ext (0.0.9.1)
|
||||
unicode-display_width (2.5.0)
|
||||
uri (0.13.0)
|
||||
useragent (0.16.10)
|
||||
validate_email (0.1.6)
|
||||
activemodel (>= 3.0)
|
||||
mail (>= 2.2.5)
|
||||
|
@ -928,7 +936,7 @@ DEPENDENCIES
|
|||
concurrent-ruby
|
||||
connection_pool
|
||||
csv (~> 3.2)
|
||||
database_cleaner-active_record
|
||||
database_cleaner-active_record!
|
||||
debug (~> 1.8)
|
||||
devise (~> 4.9)
|
||||
devise-two-factor
|
||||
|
@ -973,6 +981,7 @@ DEPENDENCIES
|
|||
md-paperclip-azure (~> 2.2)
|
||||
memory_profiler
|
||||
mime-types (~> 3.5.0)
|
||||
mutex_m
|
||||
net-http (~> 0.4.0)
|
||||
net-ldap (~> 0.18)
|
||||
nokogiri (~> 1.15)
|
||||
|
@ -1012,7 +1021,7 @@ DEPENDENCIES
|
|||
rack-attack (~> 6.6)
|
||||
rack-cors (~> 2.0)
|
||||
rack-test (~> 2.1)
|
||||
rails (~> 7.1.1)
|
||||
rails (= 7.2.0.beta3)
|
||||
rails-controller-testing (~> 1.0)
|
||||
rails-i18n (~> 7.0)
|
||||
rdf-normalize (~> 0.5)
|
||||
|
@ -1047,7 +1056,7 @@ DEPENDENCIES
|
|||
stackprof
|
||||
stoplight (~> 4.1)
|
||||
strong_migrations
|
||||
test-prof
|
||||
test-prof!
|
||||
thor (~> 1.2)
|
||||
tty-prompt (~> 0.23)
|
||||
twitter-text (~> 3.1.0)
|
||||
|
|
|
@ -2,7 +2,15 @@
|
|||
|
||||
module Admin
|
||||
class TagsController < BaseController
|
||||
before_action :set_tag
|
||||
before_action :set_tag, except: [:index]
|
||||
|
||||
PER_PAGE = 20
|
||||
|
||||
def index
|
||||
authorize :tag, :index?
|
||||
|
||||
@tags = filtered_tags.page(params[:page]).per(PER_PAGE)
|
||||
end
|
||||
|
||||
def show
|
||||
authorize @tag, :show?
|
||||
|
@ -31,5 +39,13 @@ module Admin
|
|||
def tag_params
|
||||
params.require(:tag).permit(:name, :display_name, :trendable, :usable, :listable)
|
||||
end
|
||||
|
||||
def filtered_tags
|
||||
TagFilter.new(filter_params.with_defaults(order: 'newest')).results
|
||||
end
|
||||
|
||||
def filter_params
|
||||
params.slice(:page, *TagFilter::KEYS).permit(:page, *TagFilter::KEYS)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -30,10 +30,10 @@ class Api::BaseController < ApplicationController
|
|||
|
||||
protected
|
||||
|
||||
def limit_param(default_limit)
|
||||
def limit_param(default_limit, max_limit = nil)
|
||||
return default_limit unless params[:limit]
|
||||
|
||||
[params[:limit].to_i.abs, default_limit * 2].min
|
||||
[params[:limit].to_i.abs, max_limit || (default_limit * 2)].min
|
||||
end
|
||||
|
||||
def params_slice(*keys)
|
||||
|
|
|
@ -7,6 +7,8 @@ class Api::V1::NotificationsController < Api::BaseController
|
|||
after_action :insert_pagination_headers, only: :index
|
||||
|
||||
DEFAULT_NOTIFICATIONS_LIMIT = 40
|
||||
DEFAULT_NOTIFICATIONS_COUNT_LIMIT = 100
|
||||
MAX_NOTIFICATIONS_COUNT_LIMIT = 1_000
|
||||
|
||||
def index
|
||||
with_read_replica do
|
||||
|
@ -17,6 +19,14 @@ class Api::V1::NotificationsController < Api::BaseController
|
|||
render json: @notifications, each_serializer: REST::NotificationSerializer, relationships: @relationships
|
||||
end
|
||||
|
||||
def unread_count
|
||||
limit = limit_param(DEFAULT_NOTIFICATIONS_COUNT_LIMIT, MAX_NOTIFICATIONS_COUNT_LIMIT)
|
||||
|
||||
with_read_replica do
|
||||
render json: { count: browserable_account_notifications.paginate_by_min_id(limit, notification_marker&.last_read_id).count }
|
||||
end
|
||||
end
|
||||
|
||||
def show
|
||||
@notification = current_account.notifications.without_suspended.find(params[:id])
|
||||
render json: @notification, serializer: REST::NotificationSerializer
|
||||
|
@ -54,6 +64,10 @@ class Api::V1::NotificationsController < Api::BaseController
|
|||
)
|
||||
end
|
||||
|
||||
def notification_marker
|
||||
current_user.markers.find_by(timeline: 'notifications')
|
||||
end
|
||||
|
||||
def target_statuses_from_notifications
|
||||
@notifications.reject { |notification| notification.target_status.nil? }.map(&:target_status)
|
||||
end
|
||||
|
|
|
@ -7,6 +7,8 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
|
|||
after_action :insert_pagination_headers, only: :index
|
||||
|
||||
DEFAULT_NOTIFICATIONS_LIMIT = 40
|
||||
DEFAULT_NOTIFICATIONS_COUNT_LIMIT = 100
|
||||
MAX_NOTIFICATIONS_COUNT_LIMIT = 1_000
|
||||
|
||||
def index
|
||||
with_read_replica do
|
||||
|
@ -31,13 +33,23 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
|
|||
'app.notification_grouping.status.unique_count' => statuses.uniq.size
|
||||
)
|
||||
|
||||
render json: @grouped_notifications, each_serializer: REST::NotificationGroupSerializer, relationships: @relationships, group_metadata: @group_metadata
|
||||
presenter = GroupedNotificationsPresenter.new(@grouped_notifications)
|
||||
render json: presenter, serializer: REST::DedupNotificationGroupSerializer, relationships: @relationships, group_metadata: @group_metadata
|
||||
end
|
||||
end
|
||||
|
||||
def unread_count
|
||||
limit = limit_param(DEFAULT_NOTIFICATIONS_COUNT_LIMIT, MAX_NOTIFICATIONS_COUNT_LIMIT)
|
||||
|
||||
with_read_replica do
|
||||
render json: { count: browserable_account_notifications.paginate_groups_by_min_id(limit, min_id: notification_marker&.last_read_id).count }
|
||||
end
|
||||
end
|
||||
|
||||
def show
|
||||
@notification = current_account.notifications.without_suspended.find_by!(group_key: params[:id])
|
||||
render json: NotificationGroup.from_notification(@notification), serializer: REST::NotificationGroupSerializer
|
||||
presenter = GroupedNotificationsPresenter.new([NotificationGroup.from_notification(@notification)])
|
||||
render json: presenter, serializer: REST::DedupNotificationGroupSerializer
|
||||
end
|
||||
|
||||
def clear
|
||||
|
@ -92,6 +104,10 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
|
|||
)
|
||||
end
|
||||
|
||||
def notification_marker
|
||||
current_user.markers.find_by(timeline: 'notifications')
|
||||
end
|
||||
|
||||
def target_statuses_from_notifications
|
||||
@notifications.filter_map(&:target_status)
|
||||
end
|
||||
|
|
15
app/helpers/admin/tags_helper.rb
Normal file
15
app/helpers/admin/tags_helper.rb
Normal file
|
@ -0,0 +1,15 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Admin::TagsHelper
|
||||
def admin_tags_moderation_options
|
||||
[
|
||||
[t('admin.tags.moderation.reviewed'), 'reviewed'],
|
||||
[t('admin.tags.moderation.review_requested'), 'review_requested'],
|
||||
[t('admin.tags.moderation.unreviewed'), 'unreviewed'],
|
||||
[t('admin.tags.moderation.trendable'), 'trendable'],
|
||||
[t('admin.tags.moderation.not_trendable'), 'not_trendable'],
|
||||
[t('admin.tags.moderation.usable'), 'usable'],
|
||||
[t('admin.tags.moderation.not_usable'), 'not_usable'],
|
||||
]
|
||||
end
|
||||
end
|
|
@ -38,10 +38,6 @@ function dispatchAssociatedRecords(
|
|||
const fetchedStatuses: ApiStatusJSON[] = [];
|
||||
|
||||
notifications.forEach((notification) => {
|
||||
if ('sample_accounts' in notification) {
|
||||
fetchedAccounts.push(...notification.sample_accounts);
|
||||
}
|
||||
|
||||
if (notification.type === 'admin.report') {
|
||||
fetchedAccounts.push(notification.report.target_account);
|
||||
}
|
||||
|
@ -75,7 +71,9 @@ export const fetchNotifications = createDataLoadingThunk(
|
|||
: excludeAllTypesExcept(activeFilter),
|
||||
});
|
||||
},
|
||||
({ notifications }, { dispatch }) => {
|
||||
({ notifications, accounts, statuses }, { dispatch }) => {
|
||||
dispatch(importFetchedAccounts(accounts));
|
||||
dispatch(importFetchedStatuses(statuses));
|
||||
dispatchAssociatedRecords(dispatch, notifications);
|
||||
const payload: (ApiNotificationGroupJSON | NotificationGap)[] =
|
||||
notifications;
|
||||
|
@ -95,7 +93,9 @@ export const fetchNotificationsGap = createDataLoadingThunk(
|
|||
async (params: { gap: NotificationGap }) =>
|
||||
apiFetchNotifications({ max_id: params.gap.maxId }),
|
||||
|
||||
({ notifications }, { dispatch }) => {
|
||||
({ notifications, accounts, statuses }, { dispatch }) => {
|
||||
dispatch(importFetchedAccounts(accounts));
|
||||
dispatch(importFetchedStatuses(statuses));
|
||||
dispatchAssociatedRecords(dispatch, notifications);
|
||||
|
||||
return { notifications };
|
||||
|
|
|
@ -1,17 +1,24 @@
|
|||
import api, { apiRequest, getLinks } from 'mastodon/api';
|
||||
import type { ApiNotificationGroupJSON } from 'mastodon/api_types/notifications';
|
||||
import type { ApiNotificationGroupsResultJSON } from 'mastodon/api_types/notifications';
|
||||
|
||||
export const apiFetchNotifications = async (params?: {
|
||||
exclude_types?: string[];
|
||||
max_id?: string;
|
||||
}) => {
|
||||
const response = await api().request<ApiNotificationGroupJSON[]>({
|
||||
const response = await api().request<ApiNotificationGroupsResultJSON>({
|
||||
method: 'GET',
|
||||
url: '/api/v2_alpha/notifications',
|
||||
params,
|
||||
});
|
||||
|
||||
return { notifications: response.data, links: getLinks(response) };
|
||||
const { statuses, accounts, notification_groups } = response.data;
|
||||
|
||||
return {
|
||||
statuses,
|
||||
accounts,
|
||||
notifications: notification_groups,
|
||||
links: getLinks(response),
|
||||
};
|
||||
};
|
||||
|
||||
export const apiClearNotifications = () =>
|
||||
|
|
|
@ -51,7 +51,7 @@ export interface BaseNotificationGroupJSON {
|
|||
group_key: string;
|
||||
notifications_count: number;
|
||||
type: NotificationType;
|
||||
sample_accounts: ApiAccountJSON[];
|
||||
sample_account_ids: string[];
|
||||
latest_page_notification_at: string; // FIXME: This will only be present if the notification group is returned in a paginated list, not requested directly
|
||||
most_recent_notification_id: string;
|
||||
page_min_id?: string;
|
||||
|
@ -143,3 +143,9 @@ export type ApiNotificationGroupJSON =
|
|||
| AccountRelationshipSeveranceNotificationGroupJSON
|
||||
| NotificationGroupWithStatusJSON
|
||||
| ModerationWarningNotificationGroupJSON;
|
||||
|
||||
export interface ApiNotificationGroupsResultJSON {
|
||||
accounts: ApiAccountJSON[];
|
||||
statuses: ApiStatusJSON[];
|
||||
notification_groups: ApiNotificationGroupJSON[];
|
||||
}
|
||||
|
|
|
@ -49,21 +49,14 @@ export const FilteredNotificationsBanner: React.FC = () => {
|
|||
<span>
|
||||
<FormattedMessage
|
||||
id='filtered_notifications_banner.pending_requests'
|
||||
defaultMessage='Notifications from {count, plural, =0 {no one} one {one person} other {# people}} you may know'
|
||||
defaultMessage='From {count, plural, =0 {no one} one {one person} other {# people}} you may know'
|
||||
values={{ count: policy.summary.pending_requests_count }}
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div className='filtered-notifications-banner__badge'>
|
||||
<div className='filtered-notifications-banner__badge__badge'>
|
||||
{toCappedNumber(policy.summary.pending_notifications_count)}
|
||||
</div>
|
||||
<FormattedMessage
|
||||
id='filtered_notifications_banner.mentions'
|
||||
defaultMessage='{count, plural, one {mention} other {mentions}}'
|
||||
values={{ count: policy.summary.pending_notifications_count }}
|
||||
/>
|
||||
{toCappedNumber(policy.summary.pending_notifications_count)}
|
||||
</div>
|
||||
</Link>
|
||||
);
|
||||
|
|
|
@ -7,9 +7,9 @@ import { Helmet } from 'react-helmet';
|
|||
|
||||
import { useSelector, useDispatch } from 'react-redux';
|
||||
|
||||
import DeleteIcon from '@/material-icons/400-24px/delete.svg?react';
|
||||
import DoneIcon from '@/material-icons/400-24px/done.svg?react';
|
||||
import InventoryIcon from '@/material-icons/400-24px/inventory_2.svg?react';
|
||||
import VolumeOffIcon from '@/material-icons/400-24px/volume_off.svg?react';
|
||||
import { fetchNotificationRequest, fetchNotificationsForRequest, expandNotificationsForRequest, acceptNotificationRequest, dismissNotificationRequest } from 'mastodon/actions/notifications';
|
||||
import Column from 'mastodon/components/column';
|
||||
import ColumnHeader from 'mastodon/components/column_header';
|
||||
|
@ -101,7 +101,7 @@ export const NotificationRequest = ({ multiColumn, params: { id } }) => {
|
|||
showBackButton
|
||||
extraButton={!removed && (
|
||||
<>
|
||||
<IconButton className='column-header__button' iconComponent={VolumeOffIcon} onClick={handleDismiss} title={intl.formatMessage(messages.dismiss)} />
|
||||
<IconButton className='column-header__button' iconComponent={DeleteIcon} onClick={handleDismiss} title={intl.formatMessage(messages.dismiss)} />
|
||||
<IconButton className='column-header__button' iconComponent={DoneIcon} onClick={handleAccept} title={intl.formatMessage(messages.accept)} />
|
||||
</>
|
||||
)}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import { FormattedMessage } from 'react-intl';
|
||||
|
||||
import AlternateEmailIcon from '@/material-icons/400-24px/alternate_email.svg?react';
|
||||
import ReplyIcon from '@/material-icons/400-24px/reply-fill.svg?react';
|
||||
import type { StatusVisibility } from 'mastodon/api_types/statuses';
|
||||
import type { NotificationGroupMention } from 'mastodon/models/notification_group';
|
||||
|
@ -39,7 +40,7 @@ export const NotificationMention: React.FC<{
|
|||
return (
|
||||
<NotificationWithStatus
|
||||
type='mention'
|
||||
icon={ReplyIcon}
|
||||
icon={statusVisibility === 'direct' ? AlternateEmailIcon : ReplyIcon}
|
||||
iconId='reply'
|
||||
accountIds={notification.sampleAccountIds}
|
||||
count={notification.notifications_count}
|
||||
|
|
|
@ -300,8 +300,7 @@
|
|||
"filter_modal.select_filter.subtitle": "Use an existing category or create a new one",
|
||||
"filter_modal.select_filter.title": "Filter this post",
|
||||
"filter_modal.title.status": "Filter a post",
|
||||
"filtered_notifications_banner.mentions": "{count, plural, one {mention} other {mentions}}",
|
||||
"filtered_notifications_banner.pending_requests": "Notifications from {count, plural, =0 {no one} one {one person} other {# people}} you may know",
|
||||
"filtered_notifications_banner.pending_requests": "From {count, plural, =0 {no one} one {one person} other {# people}} you may know",
|
||||
"filtered_notifications_banner.title": "Filtered notifications",
|
||||
"firehose.all": "All",
|
||||
"firehose.local": "This server",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"about.blocks": "Moderoidut palvelimet",
|
||||
"about.contact": "Ota yhteys:",
|
||||
"about.contact": "Yhteydenotto:",
|
||||
"about.disclaimer": "Mastodon on vapaa avoimen lähdekoodin ohjelmisto ja Mastodon gGmbH:n tavaramerkki.",
|
||||
"about.domain_blocks.no_reason_available": "Syy ei ole tiedossa",
|
||||
"about.domain_blocks.preamble": "Mastodonin avulla voidaan yleensä tarkastella minkä tahansa fediversumiin kuuluvan palvelimen sisältöä, ja olla yhteyksissä eri palvelinten käyttäjien kanssa. Nämä poikkeukset koskevat yksin tätä palvelinta.",
|
||||
|
@ -45,7 +45,7 @@
|
|||
"account.joined_short": "Liittynyt",
|
||||
"account.languages": "Vaihda tilattuja kieliä",
|
||||
"account.link_verified_on": "Linkin omistus tarkistettiin {date}",
|
||||
"account.locked_info": "Tilin yksityisyystilaksi on määritetty lukittu ja tilin omistaja arvioi erikseen, kuka voi seurata häntä.",
|
||||
"account.locked_info": "Tilin yksityisyystilaksi on määritetty lukittu. Tilin omistaja arvioi erikseen, kuka voi seurata häntä.",
|
||||
"account.media": "Media",
|
||||
"account.mention": "Mainitse @{name}",
|
||||
"account.moved_to": "{name} on ilmoittanut uudeksi tilikseen",
|
||||
|
@ -119,7 +119,7 @@
|
|||
"column.blocks": "Estetyt käyttäjät",
|
||||
"column.bookmarks": "Kirjanmerkit",
|
||||
"column.community": "Paikallinen aikajana",
|
||||
"column.direct": "Yksityiset maininnat",
|
||||
"column.direct": "Yksityismaininnat",
|
||||
"column.directory": "Selaa profiileja",
|
||||
"column.domain_blocks": "Estetyt verkkotunnukset",
|
||||
"column.favourites": "Suosikit",
|
||||
|
@ -223,14 +223,14 @@
|
|||
"domain_pill.activitypub_lets_connect": "Sen avulla voit muodostaa yhteyden ja olla vuorovaikutuksessa ihmisten kanssa, ei vain Mastodonissa vaan myös muissa sosiaalisissa sovelluksissa.",
|
||||
"domain_pill.activitypub_like_language": "ActivityPub on kuin kieli, jota Mastodon puhuu muiden sosiaalisten verkostojen kanssa.",
|
||||
"domain_pill.server": "Palvelin",
|
||||
"domain_pill.their_handle": "Hänen käyttäjänimensä:",
|
||||
"domain_pill.their_handle": "Hänen käyttäjätunnuksensa:",
|
||||
"domain_pill.their_server": "Hänen digitaalinen kotinsa, jossa kaikki hänen julkaisunsa sijaitsevat.",
|
||||
"domain_pill.their_username": "Hänen yksilöllinen tunnisteensa omalla palvelimellaan. Eri palvelimilta on mahdollista löytää käyttäjiä, joilla on sama käyttäjänimi.",
|
||||
"domain_pill.username": "Käyttäjänimi",
|
||||
"domain_pill.whats_in_a_handle": "Mitä käyttäjänimessä on?",
|
||||
"domain_pill.whats_in_a_handle": "Mitä käyttäjätunnuksessa on?",
|
||||
"domain_pill.who_they_are": "Koska käyttäjätunnukset kertovat, kuka ja missä joku on, voit olla vuorovaikutuksessa ihmisten kanssa läpi sosiaalisen verkon, joka koostuu <button>ActivityPub-pohjaisista alustoista</button>.",
|
||||
"domain_pill.who_you_are": "Koska käyttäjätunnuksesi kertoo, kuka ja missä olet, ihmiset voivat olla vaikutuksessa kanssasi läpi sosiaalisen verkon, joka koostuu <button>ActivityPub-pohjaisista alustoista</button>.",
|
||||
"domain_pill.your_handle": "Käyttäjänimesi:",
|
||||
"domain_pill.your_handle": "Käyttäjätunnuksesi:",
|
||||
"domain_pill.your_server": "Digitaalinen kotisi, jossa kaikki julkaisusi sijaitsevat. Etkö pidä tästä? Siirry palvelimelta toiselle milloin tahansa ja tuo myös seuraajasi mukanasi.",
|
||||
"domain_pill.your_username": "Yksilöllinen tunnisteesi tällä palvelimella. Eri palvelimilta on mahdollista löytää käyttäjiä, joilla on sama käyttäjänimi.",
|
||||
"embed.instructions": "Upota julkaisu verkkosivullesi kopioimalla alla oleva koodi.",
|
||||
|
@ -246,7 +246,7 @@
|
|||
"emoji_button.objects": "Esineet",
|
||||
"emoji_button.people": "Ihmiset",
|
||||
"emoji_button.recent": "Usein käytetyt",
|
||||
"emoji_button.search": "Etsi...",
|
||||
"emoji_button.search": "Hae...",
|
||||
"emoji_button.search_results": "Hakutulokset",
|
||||
"emoji_button.symbols": "Symbolit",
|
||||
"emoji_button.travel": "Matkailu ja paikat",
|
||||
|
@ -357,7 +357,7 @@
|
|||
"home.pending_critical_update.link": "Tutustu päivityssisältöihin",
|
||||
"home.pending_critical_update.title": "Kriittinen tietoturvapäivitys saatavilla!",
|
||||
"home.show_announcements": "Näytä tiedotteet",
|
||||
"interaction_modal.description.favourite": "Mastodon-tilillä voit lisätä tämän julkaisun suosikkeihisi osoittaaksesi kirjoittajalle arvostavasi sitä ja tallentaaksesi sen tulevaa käyttöä varten.",
|
||||
"interaction_modal.description.favourite": "Mastodon-tilillä voit lisätä tämän julkaisun suosikkeihisi osoittaaksesi tekijälle arvostavasi sitä ja tallentaaksesi sen tulevaa käyttöä varten.",
|
||||
"interaction_modal.description.follow": "Mastodon-tilillä voit seurata käyttäjää {name} saadaksesi hänen julkaisunsa kotisyötteeseesi.",
|
||||
"interaction_modal.description.reblog": "Mastodon-tilillä voit tehostaa tätä julkaisua jakaaksesi sen seuraajiesi kanssa.",
|
||||
"interaction_modal.description.reply": "Mastodon-tilillä voit vastata tähän julkaisuun.",
|
||||
|
@ -367,7 +367,7 @@
|
|||
"interaction_modal.on_another_server": "Toisella palvelimella",
|
||||
"interaction_modal.on_this_server": "Tällä palvelimella",
|
||||
"interaction_modal.sign_in": "Et ole kirjautunut tälle palvelimelle. Millä palvelimella tilisi sijaitsee?",
|
||||
"interaction_modal.sign_in_hint": "Vihje: Se on sama verkkosivusto, jolle rekisteröidyit. Jos et muista, etsi tervetulosähköposti saapuneista viesteistäsi. Voit myös syöttää koko käyttäjätunnuksesi! (Esimerkki: @Mastodon@Mastodon.social)",
|
||||
"interaction_modal.sign_in_hint": "Vihje: Se on sama verkkosivusto, jolle rekisteröidyit. Jos et muista palvelintasi, etsi tervetulosähköposti saapuneista viesteistäsi. Voit myös syöttää koko käyttäjätunnuksesi! (Esimerkki: @Mastodon@Mastodon.social)",
|
||||
"interaction_modal.title.favourite": "Lisää käyttäjän {name} julkaisu suosikkeihin",
|
||||
"interaction_modal.title.follow": "Seuraa käyttäjää {name}",
|
||||
"interaction_modal.title.reblog": "Tehosta käyttäjän {name} julkaisua",
|
||||
|
@ -392,13 +392,13 @@
|
|||
"keyboard_shortcuts.hotkey": "Pikanäppäin",
|
||||
"keyboard_shortcuts.legend": "Näytä tämä ohje",
|
||||
"keyboard_shortcuts.local": "Avaa paikallinen aikajana",
|
||||
"keyboard_shortcuts.mention": "Mainitse julkaisija",
|
||||
"keyboard_shortcuts.mention": "Mainitse tekijä",
|
||||
"keyboard_shortcuts.muted": "Avaa mykistettyjen käyttäjien luettelo",
|
||||
"keyboard_shortcuts.my_profile": "Avaa profiilisi",
|
||||
"keyboard_shortcuts.notifications": "Avaa ilmoitussarake",
|
||||
"keyboard_shortcuts.open_media": "Avaa media",
|
||||
"keyboard_shortcuts.pinned": "Avaa kiinnitettyjen julkaisujen luettelo",
|
||||
"keyboard_shortcuts.profile": "Avaa kirjoittajan profiili",
|
||||
"keyboard_shortcuts.profile": "Avaa tekijän profiili",
|
||||
"keyboard_shortcuts.reply": "Vastaa julkaisuun",
|
||||
"keyboard_shortcuts.requests": "Avaa seurantapyyntöjen luettelo",
|
||||
"keyboard_shortcuts.search": "Kohdista hakukenttään",
|
||||
|
@ -544,13 +544,13 @@
|
|||
"notifications.permission_denied": "Työpöytäilmoitukset eivät ole käytettävissä, koska selaimen käyttöoikeuspyyntö on aiemmin evätty",
|
||||
"notifications.permission_denied_alert": "Työpöytäilmoituksia ei voi ottaa käyttöön, koska selaimen käyttöoikeus on aiemmin evätty",
|
||||
"notifications.permission_required": "Työpöytäilmoitukset eivät ole käytettävissä, koska siihen tarvittavaa käyttöoikeutta ei ole myönnetty.",
|
||||
"notifications.policy.filter_new_accounts.hint": "Luotu {days, plural, one {viime päivänä} other {viimeisenä # päivänä}}",
|
||||
"notifications.policy.filter_new_accounts.hint": "Luotu {days, plural, one {viime päivän} other {viimeisen # päivän}} aikana",
|
||||
"notifications.policy.filter_new_accounts_title": "Uudet tilit",
|
||||
"notifications.policy.filter_not_followers_hint": "Mukaan lukien alle {days, plural, one {päivän} other {# päivää}} sinua seuranneet",
|
||||
"notifications.policy.filter_not_followers_title": "Henkilöt, jotka eivät seuraa sinua",
|
||||
"notifications.policy.filter_not_following_hint": "Kunnes hyväksyt ne manuaalisesti",
|
||||
"notifications.policy.filter_not_following_hint": "Kunnes hyväksyt heidät manuaalisesti",
|
||||
"notifications.policy.filter_not_following_title": "Henkilöt, joita et seuraa",
|
||||
"notifications.policy.filter_private_mentions_hint": "Suodatetaan, ellei se vastaa omaan mainintaasi tai ellet seuraa lähettäjää",
|
||||
"notifications.policy.filter_private_mentions_hint": "Suodatetaan, ellei se ole vastaus omaan mainintaasi tai ellet seuraa lähettäjää",
|
||||
"notifications.policy.filter_private_mentions_title": "Ei-toivotut yksityismaininnat",
|
||||
"notifications.policy.title": "Suodata ilmoitukset pois kohteesta…",
|
||||
"notifications_permission_banner.enable": "Ota työpöytäilmoitukset käyttöön",
|
||||
|
@ -573,8 +573,8 @@
|
|||
"onboarding.profile.note_hint": "Voit @mainita muita käyttäjiä tai #aihetunnisteita…",
|
||||
"onboarding.profile.save_and_continue": "Tallenna ja jatka",
|
||||
"onboarding.profile.title": "Profiilin määritys",
|
||||
"onboarding.profile.upload_avatar": "Lataa profiilikuva",
|
||||
"onboarding.profile.upload_header": "Lataa profiilin otsakekuva",
|
||||
"onboarding.profile.upload_avatar": "Lähetä profiilikuva",
|
||||
"onboarding.profile.upload_header": "Lähetä profiilin otsakekuva",
|
||||
"onboarding.share.lead": "Kerro ihmisille, kuinka he voivat löytää sinut Mastodonista!",
|
||||
"onboarding.share.message": "Olen {username} #Mastodonissa! Seuraa minua osoitteessa {url}",
|
||||
"onboarding.share.next_steps": "Mahdolliset seuraavat vaiheet:",
|
||||
|
@ -591,7 +591,7 @@
|
|||
"onboarding.steps.share_profile.body": "Kerro kavereillesi, kuinka sinut löytää Mastodonista",
|
||||
"onboarding.steps.share_profile.title": "Jaa Mastodon-profiilisi",
|
||||
"onboarding.tips.2fa": "<strong>Tiesitkö?</strong> Voit suojata tilisi ottamalla kaksivaiheisen todennuksen käyttöön tilisi asetuksista. Se toimii millä tahansa TOTP-sovelluksella, eikä sen käyttö edellytä puhelinnumeron luovuttamista!",
|
||||
"onboarding.tips.accounts_from_other_servers": "<strong>Tiesitkö?</strong> Koska Mastodon on hajautettu, osa kohtaamistasi profiileista sijaitsee muilla kuin sinun palvelimellasi. Voit silti viestiä saumattomasti heidän kanssaan! Heidän palvelimensa mainitaan käyttäjänimen jälkiosassa!",
|
||||
"onboarding.tips.accounts_from_other_servers": "<strong>Tiesitkö?</strong> Koska Mastodon on hajautettu, osa kohtaamistasi profiileista sijaitsee muilla kuin sinun palvelimellasi. Voit silti viestiä saumattomasti heidän kanssaan! Heidän palvelimensa mainitaan käyttäjätunnuksen jälkiosassa!",
|
||||
"onboarding.tips.migration": "<strong>Tiesitkö?</strong> Jos koet, ettei {domain} ole jatkossa itsellesi hyvä palvelinvalinta, voit siirtyä toiselle Mastodon-palvelimelle menettämättä seuraajiasi. Voit jopa isännöidä omaa palvelintasi!",
|
||||
"onboarding.tips.verification": "<strong>Tiesitkö?</strong> Voit vahvistaa tilisi lisäämällä omalle verkkosivustollesi linkin Mastodon-profiiliisi ja lisäämällä sitten verkkosivustosi osoitteen Mastodon-profiilisi lisäkenttään. Tämä ei maksa mitään, eikä sinun tarvitse lähetellä asiakirjoja!",
|
||||
"password_confirmation.exceeds_maxlength": "Salasanan vahvistus ylittää salasanan enimmäispituuden",
|
||||
|
@ -614,10 +614,10 @@
|
|||
"privacy.private.short": "Seuraajat",
|
||||
"privacy.public.long": "Kuka tahansa Mastodonissa ja sen ulkopuolella",
|
||||
"privacy.public.short": "Julkinen",
|
||||
"privacy.unlisted.additional": "Tämä on muutoin kuin julkinen julkaisu, mutta sitä ei näytetä livesyöte-, aihetunniste- tai selailunäkymissä eikä Mastodon-hakutuloksissakaan, vaikka ne olisivat käyttäjätililläsi yleisesti sallittuina.",
|
||||
"privacy.unlisted.additional": "Tämä toimii muuten kuin julkinen, mutta julkaisut eivät näy livesyöte-, aihetunniste- tai selausnäkymissä eivätkä Mastodonin hakutuloksissa, vaikka ne olisivat käyttäjätililläsi yleisesti sallittuina.",
|
||||
"privacy.unlisted.long": "Vähemmän algoritmiperusteista sisältöä",
|
||||
"privacy.unlisted.short": "Vaivihkaisesti julkinen",
|
||||
"privacy_policy.last_updated": "Viimeksi päivitetty {date}",
|
||||
"privacy_policy.last_updated": "Päivitetty viimeksi {date}",
|
||||
"privacy_policy.title": "Tietosuojakäytäntö",
|
||||
"recommended": "Suositeltu",
|
||||
"refresh": "Päivitä",
|
||||
|
@ -692,7 +692,7 @@
|
|||
"search.quick_action.account_search": "Profiilit haulla {x}",
|
||||
"search.quick_action.go_to_account": "Siirry profiiliin {x}",
|
||||
"search.quick_action.go_to_hashtag": "Siirry aihetunnisteeseen {x}",
|
||||
"search.quick_action.open_url": "Avaa verkko-osoite Mastodonissa",
|
||||
"search.quick_action.open_url": "Avaa URL-osoite Mastodonissa",
|
||||
"search.quick_action.status_search": "Julkaisut haulla {x}",
|
||||
"search.search_or_paste": "Hae tai liitä URL-osoite",
|
||||
"search_popout.full_text_search_disabled_message": "Ei saatavilla palvelimella {domain}.",
|
||||
|
@ -727,7 +727,7 @@
|
|||
"status.bookmark": "Lisää kirjanmerkki",
|
||||
"status.cancel_reblog_private": "Peru tehostus",
|
||||
"status.cannot_reblog": "Tätä julkaisua ei voi tehostaa",
|
||||
"status.copy": "Kopioi julkaisun linkki",
|
||||
"status.copy": "Kopioi linkki julkaisuun",
|
||||
"status.delete": "Poista",
|
||||
"status.detailed_status": "Yksityiskohtainen keskustelunäkymä",
|
||||
"status.direct": "Mainitse @{name} yksityisesti",
|
||||
|
@ -800,10 +800,10 @@
|
|||
"units.short.billion": "{count} mrd.",
|
||||
"units.short.million": "{count} milj.",
|
||||
"units.short.thousand": "{count} t.",
|
||||
"upload_area.title": "Lataa raahaamalla ja pudottamalla tähän",
|
||||
"upload_area.title": "Lähetä raahaamalla ja pudottamalla tähän",
|
||||
"upload_button.label": "Lisää kuvia, video tai äänitiedosto",
|
||||
"upload_error.limit": "Tiedostolatauksien rajoitus ylitetty.",
|
||||
"upload_error.poll": "Tiedostojen lisääminen ei ole sallittua kyselyjen ohessa.",
|
||||
"upload_error.limit": "Tiedostolähetysten rajoitus ylitetty.",
|
||||
"upload_error.poll": "Tiedostojen lisääminen äänestysten oheen ei ole sallittua.",
|
||||
"upload_form.audio_description": "Kuvaile sisältöä kuuroille ja kuulorajoitteisille",
|
||||
"upload_form.description": "Kuvaile sisältöä sokeille ja näkörajoitteisille",
|
||||
"upload_form.edit": "Muokkaa",
|
||||
|
@ -819,9 +819,9 @@
|
|||
"upload_modal.hint": "Napsauta tai vedä ympyrä esikatselussa valitaksesi keskipiste, joka näkyy aina pienoiskuvissa.",
|
||||
"upload_modal.preparing_ocr": "Valmistellaan tekstintunnistusta…",
|
||||
"upload_modal.preview_label": "Esikatselu ({ratio})",
|
||||
"upload_progress.label": "Tallennetaan...",
|
||||
"upload_progress.label": "Lähetetään...",
|
||||
"upload_progress.processing": "Käsitellään…",
|
||||
"username.taken": "Käyttäjänimi on jo varattu. Kokeile toista",
|
||||
"username.taken": "Tämä käyttäjänimi on jo käytössä. Kokeile toista",
|
||||
"video.close": "Sulje video",
|
||||
"video.download": "Lataa tiedosto",
|
||||
"video.exit_fullscreen": "Poistu koko näytön tilasta",
|
||||
|
|
|
@ -171,21 +171,28 @@
|
|||
"confirmations.block.confirm": "ปิดกั้น",
|
||||
"confirmations.delete.confirm": "ลบ",
|
||||
"confirmations.delete.message": "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้?",
|
||||
"confirmations.delete.title": "ลบโพสต์?",
|
||||
"confirmations.delete_list.confirm": "ลบ",
|
||||
"confirmations.delete_list.message": "คุณแน่ใจหรือไม่ว่าต้องการลบรายการนี้อย่างถาวร?",
|
||||
"confirmations.delete_list.title": "ลบรายการ?",
|
||||
"confirmations.discard_edit_media.confirm": "ละทิ้ง",
|
||||
"confirmations.discard_edit_media.message": "คุณมีการเปลี่ยนแปลงคำอธิบายหรือตัวอย่างสื่อที่ยังไม่ได้บันทึก ละทิ้งการเปลี่ยนแปลงเหล่านั้นต่อไป?",
|
||||
"confirmations.edit.confirm": "แก้ไข",
|
||||
"confirmations.edit.message": "การแก้ไขในตอนนี้จะเขียนทับข้อความที่คุณกำลังเขียนในปัจจุบัน คุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ?",
|
||||
"confirmations.edit.title": "เขียนทับโพสต์?",
|
||||
"confirmations.logout.confirm": "ออกจากระบบ",
|
||||
"confirmations.logout.message": "คุณแน่ใจหรือไม่ว่าต้องการออกจากระบบ?",
|
||||
"confirmations.logout.title": "ออกจากระบบ?",
|
||||
"confirmations.mute.confirm": "ซ่อน",
|
||||
"confirmations.redraft.confirm": "ลบแล้วร่างใหม่",
|
||||
"confirmations.redraft.message": "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้แล้วร่างโพสต์ใหม่? รายการโปรดและการดันจะสูญหาย และการตอบกลับโพสต์ดั้งเดิมจะไม่มีความเกี่ยวพัน",
|
||||
"confirmations.redraft.title": "ลบแล้วร่างโพสต์ใหม่?",
|
||||
"confirmations.reply.confirm": "ตอบกลับ",
|
||||
"confirmations.reply.message": "การตอบกลับในตอนนี้จะเขียนทับข้อความที่คุณกำลังเขียนในปัจจุบัน คุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ?",
|
||||
"confirmations.reply.title": "เขียนทับโพสต์?",
|
||||
"confirmations.unfollow.confirm": "เลิกติดตาม",
|
||||
"confirmations.unfollow.message": "คุณแน่ใจหรือไม่ว่าต้องการเลิกติดตาม {name}?",
|
||||
"confirmations.unfollow.title": "เลิกติดตามผู้ใช้?",
|
||||
"conversation.delete": "ลบการสนทนา",
|
||||
"conversation.mark_as_read": "ทำเครื่องหมายว่าอ่านแล้ว",
|
||||
"conversation.open": "ดูการสนทนา",
|
||||
|
@ -503,6 +510,7 @@
|
|||
"notification_requests.title": "การแจ้งเตือนที่กรองอยู่",
|
||||
"notifications.clear": "ล้างการแจ้งเตือน",
|
||||
"notifications.clear_confirmation": "คุณแน่ใจหรือไม่ว่าต้องการล้างการแจ้งเตือนทั้งหมดของคุณอย่างถาวร?",
|
||||
"notifications.clear_title": "ล้างการแจ้งเตือน?",
|
||||
"notifications.column_settings.admin.report": "รายงานใหม่:",
|
||||
"notifications.column_settings.admin.sign_up": "การลงทะเบียนใหม่:",
|
||||
"notifications.column_settings.alert": "การแจ้งเตือนบนเดสก์ท็อป",
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"about.blocks": "服务器被限制",
|
||||
"about.blocks": "受限服务器",
|
||||
"about.contact": "联系方式:",
|
||||
"about.disclaimer": "Mastodon 是自由的开源软件,商标由 Mastodon gGmbH 持有。",
|
||||
"about.domain_blocks.no_reason_available": "原因不可用",
|
||||
"about.domain_blocks.preamble": "通常来说,在 Mastodon 上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但其中一些在本服务器上被设置为例外。",
|
||||
"about.domain_blocks.silenced.explanation": "除非明确地搜索并关注对方,否则你不会看到来自此服务器的用户信息与内容。",
|
||||
"about.domain_blocks.silenced.title": "已隐藏",
|
||||
"about.domain_blocks.suspended.explanation": "此服务器的数据将不会被处理、存储或者交换,本站也将无法和来自此服务器的用户互动或者交流。",
|
||||
"about.domain_blocks.silenced.title": "访问受限",
|
||||
"about.domain_blocks.suspended.explanation": "不处理、存储或交换来自本服务器的任何数据,不可能与本服务器上的用户进行任何交互或通信。",
|
||||
"about.domain_blocks.suspended.title": "已封禁",
|
||||
"about.not_available": "此信息在当前服务器尚不可用。",
|
||||
"about.powered_by": "由 {mastodon} 驱动的去中心化社交媒体",
|
||||
|
@ -63,7 +63,7 @@
|
|||
"account.requested_follow": "{name} 已经向你发送了关注请求",
|
||||
"account.share": "分享 @{name} 的个人资料页",
|
||||
"account.show_reblogs": "显示来自 @{name} 的转嘟",
|
||||
"account.statuses_counter": "{count, plural, other {{counter} 嘟文}}",
|
||||
"account.statuses_counter": "{count, plural, other {{counter} 条嘟文}}",
|
||||
"account.unblock": "取消屏蔽 @{name}",
|
||||
"account.unblock_domain": "取消屏蔽 {domain} 域名",
|
||||
"account.unblock_short": "取消屏蔽",
|
||||
|
@ -81,7 +81,7 @@
|
|||
"admin.impact_report.instance_accounts": "将要删除的账户资料",
|
||||
"admin.impact_report.instance_followers": "本实例用户即将丢失的关注者",
|
||||
"admin.impact_report.instance_follows": "对方实例用户将会丢失的关注者",
|
||||
"admin.impact_report.title": "影响摘要",
|
||||
"admin.impact_report.title": "权重一览",
|
||||
"alert.rate_limited.message": "请在 {retry_time, time, medium} 后重试。",
|
||||
"alert.rate_limited.title": "频率受限",
|
||||
"alert.unexpected.message": "发生了意外错误。",
|
||||
|
@ -89,14 +89,14 @@
|
|||
"announcement.announcement": "公告",
|
||||
"attachments_list.unprocessed": "(未处理)",
|
||||
"audio.hide": "隐藏音频",
|
||||
"block_modal.remote_users_caveat": "我们将要求服务器 {domain} 尊重您的决定。然而,无法保证对方一定遵从,因为某些服务器可能会以不同的方式处理屏蔽操作。公开嘟文仍然可能对未登录用户可见。",
|
||||
"block_modal.show_less": "显示更少",
|
||||
"block_modal.show_more": "显示更多",
|
||||
"block_modal.remote_users_caveat": "我们将要求服务器 {domain} 尊重您的决定。然而,我们无法保证对方一定遵从,因为某些服务器可能会以不同的方案处理屏蔽操作。公开嘟文仍然可能对未登录的用户可见。",
|
||||
"block_modal.show_less": "隐藏",
|
||||
"block_modal.show_more": "展开",
|
||||
"block_modal.they_cant_mention": "他们不能提及或关注你。",
|
||||
"block_modal.they_cant_see_posts": "他们看不到你的嘟文,你也看不到他们的嘟文。",
|
||||
"block_modal.they_will_know": "他们可以看到他们被屏蔽。",
|
||||
"block_modal.title": "屏蔽用户?",
|
||||
"block_modal.you_wont_see_mentions": "你不会看到提及他们的嘟文。",
|
||||
"block_modal.they_cant_see_posts": "嘟文将被设置为互相不可见。",
|
||||
"block_modal.they_will_know": "他们将会获知他们被屏蔽。",
|
||||
"block_modal.title": "屏蔽该用户?",
|
||||
"block_modal.you_wont_see_mentions": "你将无法看到提及他们的嘟文。",
|
||||
"boost_modal.combo": "下次按住 {combo} 即可跳过此提示",
|
||||
"bundle_column_error.copy_stacktrace": "复制错误报告",
|
||||
"bundle_column_error.error.body": "请求的页面无法渲染,可能是代码出现错误或浏览器存在兼容性问题。",
|
||||
|
|
|
@ -14,7 +14,7 @@ import type { ApiReportJSON } from 'mastodon/api_types/reports';
|
|||
export const NOTIFICATIONS_GROUP_MAX_AVATARS = 8;
|
||||
|
||||
interface BaseNotificationGroup
|
||||
extends Omit<BaseNotificationGroupJSON, 'sample_accounts'> {
|
||||
extends Omit<BaseNotificationGroupJSON, 'sample_account_ids'> {
|
||||
sampleAccountIds: string[];
|
||||
}
|
||||
|
||||
|
@ -115,8 +115,7 @@ function createAccountRelationshipSeveranceEventFromJSON(
|
|||
export function createNotificationGroupFromJSON(
|
||||
groupJson: ApiNotificationGroupJSON,
|
||||
): NotificationGroup {
|
||||
const { sample_accounts, ...group } = groupJson;
|
||||
const sampleAccountIds = sample_accounts.map((account) => account.id);
|
||||
const { sample_account_ids: sampleAccountIds, ...group } = groupJson;
|
||||
|
||||
switch (group.type) {
|
||||
case 'favourite':
|
||||
|
|
|
@ -350,6 +350,10 @@
|
|||
color: $primary-text-color;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.warning-hint {
|
||||
font-weight: normal !important;
|
||||
}
|
||||
}
|
||||
|
||||
&__body {
|
||||
|
|
|
@ -10171,25 +10171,10 @@ noscript {
|
|||
}
|
||||
|
||||
&__badge {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border-radius: 999px;
|
||||
background: var(--background-border-color);
|
||||
color: $darker-text-color;
|
||||
padding: 4px;
|
||||
padding-inline-end: 8px;
|
||||
gap: 6px;
|
||||
font-weight: 500;
|
||||
font-size: 11px;
|
||||
line-height: 16px;
|
||||
word-break: keep-all;
|
||||
|
||||
&__badge {
|
||||
background: $ui-button-background-color;
|
||||
color: $white;
|
||||
border-radius: 100px;
|
||||
padding: 2px 8px;
|
||||
}
|
||||
background: $ui-button-background-color;
|
||||
color: $white;
|
||||
border-radius: 100px;
|
||||
padding: 2px 8px;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -286,6 +286,10 @@ a.table-action-link {
|
|||
padding: 0;
|
||||
}
|
||||
|
||||
&--padded {
|
||||
padding: 12px 16px 16px;
|
||||
}
|
||||
|
||||
&--with-image {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
|
@ -6,7 +6,7 @@ class Admin::SystemCheck::DatabaseSchemaCheck < Admin::SystemCheck::BaseCheck
|
|||
end
|
||||
|
||||
def pass?
|
||||
!ActiveRecord::Base.connection.migration_context.needs_migration?
|
||||
!ActiveRecord::Base.connection_pool.migration_context.needs_migration?
|
||||
end
|
||||
|
||||
def message
|
||||
|
|
74
app/models/admin/tag_filter.rb
Normal file
74
app/models/admin/tag_filter.rb
Normal file
|
@ -0,0 +1,74 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Admin::TagFilter
|
||||
KEYS = %i(
|
||||
status
|
||||
name
|
||||
order
|
||||
).freeze
|
||||
|
||||
attr_reader :params
|
||||
|
||||
def initialize(params)
|
||||
@params = params.to_h.symbolize_keys
|
||||
end
|
||||
|
||||
def results
|
||||
scope = Tag.reorder(nil)
|
||||
|
||||
params.each do |key, value|
|
||||
next if key == :page
|
||||
|
||||
scope.merge!(scope_for(key, value)) if value.present?
|
||||
end
|
||||
|
||||
scope
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def scope_for(key, value)
|
||||
case key
|
||||
when :status
|
||||
status_scope(value)
|
||||
when :name
|
||||
Tag.search_for(value.to_s.strip, params[:limit], params[:offset], exclude_unlistable: false)
|
||||
when :order
|
||||
order_scope(value)
|
||||
else
|
||||
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
||||
end
|
||||
end
|
||||
|
||||
def status_scope(value)
|
||||
case value.to_s
|
||||
when 'reviewed'
|
||||
Tag.reviewed
|
||||
when 'review_requested'
|
||||
Tag.pending_review
|
||||
when 'unreviewed'
|
||||
Tag.unreviewed
|
||||
when 'trendable'
|
||||
Tag.trendable
|
||||
when 'not_trendable'
|
||||
Tag.not_trendable
|
||||
when 'usable'
|
||||
Tag.usable
|
||||
when 'not_usable'
|
||||
Tag.not_usable
|
||||
else
|
||||
raise Mastodon::InvalidParameterError, "Unknown status: #{value}"
|
||||
end
|
||||
end
|
||||
|
||||
def order_scope(value)
|
||||
case value.to_s
|
||||
when 'newest'
|
||||
Tag.order(created_at: :desc)
|
||||
when 'oldest'
|
||||
Tag.order(created_at: :asc)
|
||||
else
|
||||
raise Mastodon::InvalidParameterError, "Unknown order: #{value}"
|
||||
end
|
||||
end
|
||||
end
|
|
@ -15,7 +15,9 @@ module Status::SafeReblogInsert
|
|||
#
|
||||
# The code is kept similar to ActiveRecord::Persistence code and calls it
|
||||
# directly when we are not handling a reblog.
|
||||
def _insert_record(values, returning)
|
||||
#
|
||||
# https://github.com/rails/rails/blob/7-2-stable/activerecord/lib/active_record/persistence.rb#L238-L263
|
||||
def _insert_record(connection, values, returning)
|
||||
return super unless values.is_a?(Hash) && values['reblog_of_id']&.value.present?
|
||||
|
||||
primary_key = self.primary_key
|
||||
|
@ -34,10 +36,15 @@ module Status::SafeReblogInsert
|
|||
# Instead, we use a custom builder when a reblog is happening:
|
||||
im = _compile_reblog_insert(values)
|
||||
|
||||
connection.insert(im, "#{self} Create", primary_key || false, primary_key_value, returning: returning).tap do |result|
|
||||
# Since we are using SELECT instead of VALUES, a non-error `nil` return is possible.
|
||||
# For our purposes, it's equivalent to a foreign key constraint violation
|
||||
raise ActiveRecord::InvalidForeignKey, "(reblog_of_id)=(#{values['reblog_of_id'].value}) is not present in table \"statuses\"" if result.nil?
|
||||
with_connection do |_c|
|
||||
connection.insert(
|
||||
im, "#{self} Create", primary_key || false, primary_key_value,
|
||||
returning: returning
|
||||
).tap do |result|
|
||||
# Since we are using SELECT instead of VALUES, a non-error `nil` return is possible.
|
||||
# For our purposes, it's equivalent to a foreign key constraint violation
|
||||
raise ActiveRecord::InvalidForeignKey, "(reblog_of_id)=(#{values['reblog_of_id'].value}) is not present in table \"statuses\"" if result.nil?
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -52,6 +52,7 @@ class Tag < ApplicationRecord
|
|||
scope :unreviewed, -> { where(reviewed_at: nil) }
|
||||
scope :pending_review, -> { unreviewed.where.not(requested_review_at: nil) }
|
||||
scope :usable, -> { where(usable: [true, nil]) }
|
||||
scope :not_usable, -> { where(usable: false) }
|
||||
scope :listable, -> { where(listable: [true, nil]) }
|
||||
scope :trendable, -> { Setting.trendable_by_default ? where(trendable: [true, nil]) : where(trendable: true) }
|
||||
scope :not_trendable, -> { where(trendable: false) }
|
||||
|
@ -74,6 +75,10 @@ class Tag < ApplicationRecord
|
|||
attributes['display_name'] || name
|
||||
end
|
||||
|
||||
def formatted_name
|
||||
"##{display_name}"
|
||||
end
|
||||
|
||||
def usable
|
||||
boolean_with_default('usable', true)
|
||||
end
|
||||
|
@ -132,8 +137,10 @@ class Tag < ApplicationRecord
|
|||
|
||||
def search_for(term, limit = 5, offset = 0, options = {})
|
||||
stripped_term = term.strip
|
||||
options.reverse_merge!({ exclude_unlistable: true, exclude_unreviewed: false })
|
||||
|
||||
query = Tag.listable.matches_name(stripped_term)
|
||||
query = Tag.matches_name(stripped_term)
|
||||
query = query.merge(Tag.listable) if options[:exclude_unlistable]
|
||||
query = query.merge(matching_name(stripped_term).or(where.not(reviewed_at: nil))) if options[:exclude_unreviewed]
|
||||
|
||||
query.order(Arel.sql('length(name) ASC, name ASC'))
|
||||
|
|
21
app/presenters/grouped_notifications_presenter.rb
Normal file
21
app/presenters/grouped_notifications_presenter.rb
Normal file
|
@ -0,0 +1,21 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class GroupedNotificationsPresenter < ActiveModelSerializers::Model
|
||||
def initialize(grouped_notifications)
|
||||
super()
|
||||
|
||||
@grouped_notifications = grouped_notifications
|
||||
end
|
||||
|
||||
def notification_groups
|
||||
@grouped_notifications
|
||||
end
|
||||
|
||||
def statuses
|
||||
@grouped_notifications.filter_map(&:target_status).uniq(&:id)
|
||||
end
|
||||
|
||||
def accounts
|
||||
@grouped_notifications.flat_map(&:sample_accounts).uniq(&:id)
|
||||
end
|
||||
end
|
|
@ -0,0 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class REST::DedupNotificationGroupSerializer < ActiveModel::Serializer
|
||||
has_many :accounts, serializer: REST::AccountSerializer
|
||||
has_many :statuses, serializer: REST::StatusSerializer
|
||||
has_many :notification_groups, serializer: REST::NotificationGroupSerializer
|
||||
end
|
|
@ -8,12 +8,20 @@ class REST::NotificationGroupSerializer < ActiveModel::Serializer
|
|||
attribute :page_max_id, if: :paginated?
|
||||
attribute :latest_page_notification_at, if: :paginated?
|
||||
|
||||
has_many :sample_accounts, serializer: REST::AccountSerializer
|
||||
belongs_to :target_status, key: :status, if: :status_type?, serializer: REST::StatusSerializer
|
||||
attribute :sample_account_ids
|
||||
attribute :status_id, if: :status_type?
|
||||
belongs_to :report, if: :report_type?, serializer: REST::ReportSerializer
|
||||
belongs_to :account_relationship_severance_event, key: :event, if: :relationship_severance_event?, serializer: REST::AccountRelationshipSeveranceEventSerializer
|
||||
belongs_to :account_warning, key: :moderation_warning, if: :moderation_warning_event?, serializer: REST::AccountWarningSerializer
|
||||
|
||||
def sample_account_ids
|
||||
object.sample_accounts.pluck(:id).map(&:to_s)
|
||||
end
|
||||
|
||||
def status_id
|
||||
object.target_status&.id&.to_s
|
||||
end
|
||||
|
||||
def status_type?
|
||||
[:favourite, :reblog, :status, :mention, :poll, :update].include?(object.type)
|
||||
end
|
||||
|
|
27
app/views/admin/tags/_tag.html.haml
Normal file
27
app/views/admin/tags/_tag.html.haml
Normal file
|
@ -0,0 +1,27 @@
|
|||
.batch-table__row{ class: [!tag.requires_review? && !tag.usable? && 'batch-table__row--muted'] }
|
||||
.batch-table__row__content.batch-table__row__content--padded.pending-account
|
||||
.pending-account__header
|
||||
%strong
|
||||
= link_to tag.formatted_name, admin_tag_path(tag.id)
|
||||
|
||||
%br/
|
||||
|
||||
- if tag.usable?
|
||||
= t('admin.tags.moderation.usable')
|
||||
- else
|
||||
= t('admin.tags.moderation.not_usable')
|
||||
|
||||
·
|
||||
- if tag.trendable?
|
||||
= t('admin.tags.moderation.trendable')
|
||||
- else
|
||||
= t('admin.tags.moderation.not_trendable')
|
||||
|
||||
- if tag.requested_review? || tag.requires_review?
|
||||
·
|
||||
- if tag.requested_review?
|
||||
%span.negative-hint
|
||||
= t('admin.tags.moderation.review_requested')
|
||||
- else
|
||||
%span.warning-hint
|
||||
= t('admin.tags.moderation.pending_review')
|
39
app/views/admin/tags/index.html.haml
Normal file
39
app/views/admin/tags/index.html.haml
Normal file
|
@ -0,0 +1,39 @@
|
|||
- content_for :page_title do
|
||||
= t('admin.tags.title')
|
||||
|
||||
= form_with url: admin_tags_url, method: :get, class: :simple_form do |form|
|
||||
.filters
|
||||
.filter-subset.filter-subset--with-select
|
||||
%strong= t('admin.tags.moderation.title')
|
||||
.input.select.optional
|
||||
= form.select :status,
|
||||
options_for_select(admin_tags_moderation_options, params[:status]),
|
||||
prompt: t('generic.all')
|
||||
|
||||
.filter-subset.filter-subset--with-select
|
||||
%strong= t 'generic.order_by'
|
||||
.input.select
|
||||
= form.select :order,
|
||||
options_for_select([[t('admin.tags.newest'), 'newest'], [t('admin.tags.oldest'), 'oldest']], params[:order])
|
||||
|
||||
.fields-group
|
||||
.input.string.optional
|
||||
= form.text_field :name,
|
||||
value: params[:name],
|
||||
class: 'string optional',
|
||||
placeholder: t('admin.tags.name')
|
||||
|
||||
.actions
|
||||
%button.button= t('admin.tags.search')
|
||||
= link_to t('admin.tags.reset'), admin_tags_path, class: 'button negative'
|
||||
|
||||
%hr.spacer/
|
||||
|
||||
.batch-table
|
||||
.batch-table__body
|
||||
- if @tags.empty?
|
||||
= nothing_here 'nothing-here--under-tabs'
|
||||
- else
|
||||
= render partial: 'tag', collection: @tags
|
||||
|
||||
= paginate @tags
|
|
@ -1,12 +1,13 @@
|
|||
- content_for :page_title do
|
||||
= "##{@tag.display_name}"
|
||||
= @tag.formatted_name
|
||||
|
||||
- if current_user.can?(:view_dashboard)
|
||||
- content_for :heading_actions do
|
||||
- content_for :heading_actions do
|
||||
- if current_user.can?(:view_dashboard)
|
||||
= l(@time_period.first)
|
||||
= ' - '
|
||||
= l(@time_period.last)
|
||||
|
||||
- if current_user.can?(:view_dashboard)
|
||||
.dashboard
|
||||
.dashboard__item
|
||||
= react_admin_component :counter,
|
||||
|
|
|
@ -4,9 +4,7 @@
|
|||
|
||||
.batch-table__row__content.pending-account
|
||||
.pending-account__header
|
||||
= link_to admin_tag_path(tag.id) do
|
||||
= material_symbol 'tag'
|
||||
= tag.display_name
|
||||
= link_to tag.formatted_name, admin_tag_path(tag.id)
|
||||
|
||||
%br/
|
||||
|
||||
|
|
|
@ -61,10 +61,7 @@ Bundler.require(:pam_authentication) if ENV['PAM_ENABLED'] == 'true'
|
|||
module Mastodon
|
||||
class Application < Rails::Application
|
||||
# Initialize configuration defaults for originally generated Rails version.
|
||||
config.load_defaults 7.1
|
||||
|
||||
# Explicitly set the cache format version to align with Rails version
|
||||
config.active_support.cache_format_version = 7.1
|
||||
config.load_defaults 7.2
|
||||
|
||||
# Please, add to the `ignore` list any other `lib` subdirectories that do
|
||||
# not contain `.rb` files, or that should not be reloaded or eager loaded.
|
||||
|
|
|
@ -16,7 +16,7 @@ Rails.application.configure do
|
|||
# Show full error reports.
|
||||
config.consider_all_requests_local = true
|
||||
|
||||
# Enable server timing
|
||||
# Enable server timing.
|
||||
config.server_timing = true
|
||||
|
||||
# Enable/disable caching. By default caching is disabled.
|
||||
|
@ -37,11 +37,6 @@ Rails.application.configure do
|
|||
|
||||
config.action_controller.forgery_protection_origin_check = ENV['DISABLE_FORGERY_REQUEST_PROTECTION'].nil?
|
||||
|
||||
ActiveSupport::Logger.new($stdout).tap do |logger|
|
||||
logger.formatter = config.log_formatter
|
||||
config.logger = ActiveSupport::TaggedLogging.new(logger)
|
||||
end
|
||||
|
||||
# Generate random VAPID keys
|
||||
Webpush.generate_key.tap do |vapid_key|
|
||||
config.x.vapid_private_key = vapid_key.private_key
|
||||
|
@ -53,6 +48,8 @@ Rails.application.configure do
|
|||
|
||||
config.action_mailer.perform_caching = false
|
||||
|
||||
config.action_mailer.default_options = { from: 'notifications@localhost' }
|
||||
|
||||
# Print deprecation notices to the Rails logger.
|
||||
config.active_support.deprecation = :log
|
||||
|
||||
|
@ -75,12 +72,7 @@ Rails.application.configure do
|
|||
# config.i18n.raise_on_missing_translations = true
|
||||
|
||||
# Annotate rendered view with file names.
|
||||
# config.action_view.annotate_rendered_view_with_filenames = true
|
||||
|
||||
# Uncomment if you wish to allow Action Cable access from any origin.
|
||||
# config.action_cable.disable_request_forgery_protection = true
|
||||
|
||||
config.action_mailer.default_options = { from: 'notifications@localhost' }
|
||||
config.action_view.annotate_rendered_view_with_filenames = true
|
||||
|
||||
# If using a Heroku, Vagrant or generic remote development environment,
|
||||
# use letter_opener_web, accessible at /letter_opener.
|
||||
|
@ -90,8 +82,11 @@ Rails.application.configure do
|
|||
# TODO: Remove once devise-two-factor data migration complete
|
||||
config.x.otp_secret = ENV.fetch('OTP_SECRET', '1fc2b87989afa6351912abeebe31ffc5c476ead9bf8b3d74cbc4a302c7b69a45b40b1bbef3506ddad73e942e15ed5ca4b402bf9a66423626051104f4b5f05109')
|
||||
|
||||
# Raise error when a before_action's only/except options reference missing actions
|
||||
# Raise error when a before_action's only/except options reference missing actions.
|
||||
config.action_controller.raise_on_missing_callback_actions = true
|
||||
|
||||
# Apply autocorrection by RuboCop to files generated by `bin/rails generate`.
|
||||
# config.generators.apply_rubocop_autocorrect_after_generate!
|
||||
end
|
||||
|
||||
Redis.raise_deprecations = true
|
||||
|
|
|
@ -15,22 +15,18 @@ Rails.application.configure do
|
|||
config.eager_load = true
|
||||
|
||||
# Full error reports are disabled and caching is turned on.
|
||||
config.consider_all_requests_local = false
|
||||
config.consider_all_requests_local = false
|
||||
config.action_controller.perform_caching = true
|
||||
config.action_controller.asset_host = ENV['CDN_HOST'] if ENV['CDN_HOST'].present?
|
||||
|
||||
# Ensures that a master key has been made available in ENV["RAILS_MASTER_KEY"], config/master.key, or an environment
|
||||
# key such as config/credentials/production.key. This key is used to decrypt credentials (and other encrypted files).
|
||||
# config.require_master_key = true
|
||||
|
||||
# Compress CSS using a preprocessor.
|
||||
# config.assets.css_compressor = :sass
|
||||
|
||||
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
||||
config.assets.compile = false
|
||||
# Disable serving static files from `public/`, relying on NGINX/Apache to do so instead.
|
||||
# config.public_file_server.enabled = false
|
||||
|
||||
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
||||
# config.asset_host = "http://assets.example.com"
|
||||
config.asset_host = ENV['CDN_HOST'] if ENV['CDN_HOST'].present?
|
||||
|
||||
# Specifies the header that your server uses for sending files.
|
||||
config.action_dispatch.x_sendfile_header = ENV['SENDFILE_HEADER'] if ENV['SENDFILE_HEADER'].present?
|
||||
|
@ -40,27 +36,37 @@ Rails.application.configure do
|
|||
# Allow to specify public IP of reverse proxy if it's needed
|
||||
config.action_dispatch.trusted_proxies = ENV['TRUSTED_PROXY_IP'].split(/(?:\s*,\s*|\s+)/).map { |item| IPAddr.new(item) } if ENV['TRUSTED_PROXY_IP'].present?
|
||||
|
||||
# Assume all access to the app is happening through a SSL-terminating reverse proxy.
|
||||
# Can be used together with config.force_ssl for Strict-Transport-Security and secure cookies.
|
||||
# config.assume_ssl = true
|
||||
|
||||
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
||||
config.force_ssl = true
|
||||
# Skip http-to-https redirect for the default health check endpoint.
|
||||
config.ssl_options = {
|
||||
redirect: {
|
||||
exclude: ->(request) { request.path.start_with?('/health') || request.headers['Host'].end_with?('.onion') || request.headers['Host'].end_with?('.i2p') },
|
||||
},
|
||||
}
|
||||
|
||||
# Info include generic and useful information about system operation, but avoids logging too much
|
||||
# information to avoid inadvertent exposure of personally identifiable information (PII). If you
|
||||
# want to log everything, set the level to "debug".
|
||||
config.log_level = ENV.fetch('RAILS_LOG_LEVEL', 'info').to_sym
|
||||
# Log to STDOUT by default
|
||||
config.logger = ActiveSupport::Logger.new($stdout)
|
||||
.tap { |logger| logger.formatter = ::Logger::Formatter.new }
|
||||
.then { |logger| ActiveSupport::TaggedLogging.new(logger) }
|
||||
|
||||
# Prepend all log lines with the following tags.
|
||||
config.log_tags = [:request_id]
|
||||
|
||||
# "info" includes generic and useful information about system operation, but avoids logging too much
|
||||
# information to avoid inadvertent exposure of personally identifiable information (PII). If you
|
||||
# want to log everything, set the level to "debug".
|
||||
config.log_level = ENV.fetch('RAILS_LOG_LEVEL', 'info')
|
||||
|
||||
# Use a different cache store in production.
|
||||
config.cache_store = :redis_cache_store, REDIS_CACHE_PARAMS
|
||||
|
||||
# Use a real queuing backend for Active Job (and separate queues per environment).
|
||||
# config.active_job.queue_adapter = :resque
|
||||
# config.active_job.queue_adapter = :resque
|
||||
# config.active_job.queue_name_prefix = "mastodon_production"
|
||||
|
||||
config.action_mailer.perform_caching = false
|
||||
|
@ -70,9 +76,8 @@ Rails.application.configure do
|
|||
# config.action_mailer.raise_delivery_errors = false
|
||||
|
||||
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
||||
# English when a translation cannot be found).
|
||||
# This setting would typically be `true` to use the `I18n.default_locale`.
|
||||
# Some locales are missing translation entries and would have errors:
|
||||
# the I18n.default_locale when a translation cannot be found).
|
||||
# Default value is `true`, but some locales have missing data and would have errors
|
||||
# https://github.com/mastodon/mastodon/pull/24727
|
||||
config.i18n.fallbacks = [:en]
|
||||
|
||||
|
@ -89,18 +94,8 @@ Rails.application.configure do
|
|||
{ key: controller.signature_key_id } if controller.respond_to?(:signed_request?) && controller.signed_request?
|
||||
end
|
||||
|
||||
# Use a different logger for distributed setups.
|
||||
# require "syslog/logger"
|
||||
# config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new "app-name")
|
||||
|
||||
# Log to STDOUT by default
|
||||
config.logger = ActiveSupport::Logger.new($stdout)
|
||||
.tap { |logger| logger.formatter = ::Logger::Formatter.new }
|
||||
.then { |logger| ActiveSupport::TaggedLogging.new(logger) }
|
||||
|
||||
# Do not dump schema after migrations.
|
||||
config.active_record.dump_schema_after_migration = false
|
||||
|
||||
config.action_mailer.perform_caching = false
|
||||
|
||||
# E-mails
|
||||
|
|
|
@ -19,14 +19,15 @@ Rails.application.configure do
|
|||
# loading is working properly before deploying your code.
|
||||
config.eager_load = ENV['CI'].present?
|
||||
|
||||
config.assets_digest = false
|
||||
# Configure public file server for tests with Cache-Control for performance.
|
||||
config.public_file_server.headers = { 'Cache-Control' => "public, max-age=#{1.hour.to_i}" }
|
||||
|
||||
# Show full error reports and disable caching.
|
||||
config.consider_all_requests_local = true
|
||||
config.consider_all_requests_local = true
|
||||
config.action_controller.perform_caching = false
|
||||
config.cache_store = :memory_store
|
||||
|
||||
# Raise exceptions instead of rendering exception templates.
|
||||
# Render exception templates for rescuable exceptions and raise for other exceptions.
|
||||
config.action_dispatch.show_exceptions = :rescuable
|
||||
|
||||
# Disable request forgery protection in test environment.
|
||||
|
@ -41,6 +42,10 @@ Rails.application.configure do
|
|||
# ActionMailer::Base.deliveries array.
|
||||
config.action_mailer.delivery_method = :test
|
||||
|
||||
# Unlike controllers, the mailer instance doesn't have any context about the
|
||||
# incoming request so you'll need to provide the :host parameter yourself.
|
||||
config.action_mailer.default_url_options = { host: 'www.example.com' }
|
||||
|
||||
# Print deprecation notices to the stderr.
|
||||
config.active_support.deprecation = :stderr
|
||||
|
||||
|
@ -58,7 +63,6 @@ Rails.application.configure do
|
|||
# Raise exceptions for disallowed deprecations.
|
||||
config.active_support.disallowed_deprecation = :raise
|
||||
|
||||
config.i18n.default_locale = :en
|
||||
config.i18n.fallbacks = true
|
||||
|
||||
# Tell Active Support which deprecation messages to disallow.
|
||||
|
@ -70,7 +74,7 @@ Rails.application.configure do
|
|||
# Annotate rendered view with file names.
|
||||
# config.action_view.annotate_rendered_view_with_filenames = true
|
||||
|
||||
# Raise error when a before_action's only/except options reference missing actions
|
||||
# Raise error when a before_action's only/except options reference missing actions.
|
||||
config.action_controller.raise_on_missing_callback_actions = true
|
||||
end
|
||||
|
||||
|
|
72
config/initializers/new_framework_defaults_7_2.rb
Normal file
72
config/initializers/new_framework_defaults_7_2.rb
Normal file
|
@ -0,0 +1,72 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Be sure to restart your server when you modify this file.
|
||||
#
|
||||
# This file eases your Rails 7.2 framework defaults upgrade.
|
||||
#
|
||||
# Uncomment each configuration one by one to switch to the new default.
|
||||
# Once your application is ready to run with all new defaults, you can remove
|
||||
# this file and set the `config.load_defaults` to `7.2`.
|
||||
#
|
||||
# Read the Guide for Upgrading Ruby on Rails for more info on each option.
|
||||
# https://guides.rubyonrails.org/upgrading_ruby_on_rails.html
|
||||
|
||||
###
|
||||
# Controls whether Active Job's `#perform_later` and similar methods automatically defer
|
||||
# the job queuing to after the current Active Record transaction is committed.
|
||||
#
|
||||
# Example:
|
||||
# Topic.transaction do
|
||||
# topic = Topic.create(...)
|
||||
# NewTopicNotificationJob.perform_later(topic)
|
||||
# end
|
||||
#
|
||||
# In this example, if the configuration is set to `:never`, the job will
|
||||
# be enqueued immediately, even though the `Topic` hasn't been committed yet.
|
||||
# Because of this, if the job is picked up almost immediately, or if the
|
||||
# transaction doesn't succeed for some reason, the job will fail to find this
|
||||
# topic in the database.
|
||||
#
|
||||
# If `enqueue_after_transaction_commit` is set to `:default`, the queue adapter
|
||||
# will define the behaviour.
|
||||
#
|
||||
# Note: Active Job backends can disable this feature. This is generally done by
|
||||
# backends that use the same database as Active Record as a queue, hence they
|
||||
# don't need this feature.
|
||||
#++
|
||||
# Rails.application.config.active_job.enqueue_after_transaction_commit = :default
|
||||
|
||||
###
|
||||
# Adds image/webp to the list of content types Active Storage considers as an image
|
||||
# Prevents automatic conversion to a fallback PNG, and assumes clients support WebP, as they support gif, jpeg, and png.
|
||||
# This is possible due to broad browser support for WebP, but older browsers and email clients may still not support
|
||||
# WebP. Requires imagemagick/libvips built with WebP support.
|
||||
#++
|
||||
# Rails.application.config.active_storage.web_image_content_types = %w[image/png image/jpeg image/gif image/webp]
|
||||
|
||||
###
|
||||
# Enable validation of migration timestamps. When set, an ActiveRecord::InvalidMigrationTimestampError
|
||||
# will be raised if the timestamp prefix for a migration is more than a day ahead of the timestamp
|
||||
# associated with the current time. This is done to prevent forward-dating of migration files, which can
|
||||
# impact migration generation and other migration commands.
|
||||
#
|
||||
# Applications with existing timestamped migrations that do not adhere to the
|
||||
# expected format can disable validation by setting this config to `false`.
|
||||
#++
|
||||
# Rails.application.config.active_record.validate_migration_timestamps = true
|
||||
|
||||
###
|
||||
# Controls whether the PostgresqlAdapter should decode dates automatically with manual queries.
|
||||
#
|
||||
# Example:
|
||||
# ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.select_value("select '2024-01-01'::date") #=> Date
|
||||
#
|
||||
# This query used to return a `String`.
|
||||
#++
|
||||
# Rails.application.config.active_record.postgresql_adapter_decode_dates = true
|
||||
|
||||
###
|
||||
# Enables YJIT as of Ruby 3.3, to bring sizeable performance improvements. If you are
|
||||
# deploying to a memory constrained environment you may want to set this to `false`.
|
||||
#++
|
||||
# Rails.application.config.yjit = true
|
|
@ -885,7 +885,23 @@ bg:
|
|||
action: Щракнете тук за повече информация
|
||||
message_html: "<strong>Вашето съхранение на предмети е погрешно конфигурирано. Поверителността на потребителите ви е изложена на риск.</strong>"
|
||||
tags:
|
||||
moderation:
|
||||
not_trendable: Не изгряващо
|
||||
not_usable: Не употребимо
|
||||
pending_review: Чака се преглед
|
||||
review_requested: Иска се преглед
|
||||
reviewed: Прегледано
|
||||
title: Състояние
|
||||
trendable: Изгряващо
|
||||
unreviewed: Непрегледано
|
||||
usable: Употребимо
|
||||
name: Име
|
||||
newest: Най-нови
|
||||
oldest: Най-стари
|
||||
reset: Нулиране
|
||||
review: Преглед на състояние
|
||||
search: Търсене
|
||||
title: Хаштагове
|
||||
updated_msg: Успешно осъвременени настройки на хаштага
|
||||
title: Администрация
|
||||
trends:
|
||||
|
|
|
@ -885,7 +885,23 @@ ca:
|
|||
action: Consulta aquí per a més informació
|
||||
message_html: "<strong>El teu emagatzamatge d'objectes no està ben configurat. La privacitat dels teus usuaris està en risc.</strong>"
|
||||
tags:
|
||||
moderation:
|
||||
not_trendable: No pot ser en tendència
|
||||
not_usable: No es pot fer servir
|
||||
pending_review: Pendent de revisió
|
||||
review_requested: Revisió demanada
|
||||
reviewed: Revisada
|
||||
title: Estat
|
||||
trendable: Pot ser tendència
|
||||
unreviewed: No revisada
|
||||
usable: Es pot fer servir
|
||||
name: Nom
|
||||
newest: Més nous
|
||||
oldest: Més vells
|
||||
reset: Restableix
|
||||
review: Revisar l'estat
|
||||
search: Cerca
|
||||
title: Etiquetes
|
||||
updated_msg: Ajustaments d'etiquetes actualitzats amb èxit
|
||||
title: Administració
|
||||
trends:
|
||||
|
|
|
@ -884,7 +884,23 @@ da:
|
|||
action: Tjek her for flere oplysninger
|
||||
message_html: "<strong>Objektlageret er fejlopsat. Brugernes fortrolighed er i fare.</strong>"
|
||||
tags:
|
||||
moderation:
|
||||
not_trendable: Ikke trendegnet
|
||||
not_usable: Ikke brugbar
|
||||
pending_review: Afventer revision
|
||||
review_requested: Revision anmodet
|
||||
reviewed: Revideret
|
||||
title: Status
|
||||
trendable: Trendegnet
|
||||
unreviewed: Urevideret
|
||||
usable: Brugbar
|
||||
name: Navn
|
||||
newest: Seneste
|
||||
oldest: Ældste
|
||||
reset: Nulstil
|
||||
review: Revisionsstatus
|
||||
search: Søg
|
||||
title: Hashtags
|
||||
updated_msg: Hashtag-indstillinger opdateret
|
||||
title: Administration
|
||||
trends:
|
||||
|
|
|
@ -151,7 +151,7 @@ de:
|
|||
subscribe: Abonnieren
|
||||
suspend: Sperren
|
||||
suspended: Gesperrt
|
||||
suspension_irreversible: Die Daten dieses Kontos wurden unwiderruflich gelöscht. Du kannst das Konto entsperren, um es wieder nutzbar zu machen, aber es wird keine Daten wiederherstellen, die es davor hatte.
|
||||
suspension_irreversible: Die Daten dieses Kontos wurden unwiderruflich gelöscht. Du kannst das Konto entsperren, um es wieder zu verwenden, aber es wird keine Daten wiederherstellen, die es davor hatte.
|
||||
suspension_reversible_hint_html: Das Konto wurde gesperrt und die Daten werden am %{date} vollständig gelöscht. Bis dahin kann das Konto ohne irgendwelche negativen Auswirkungen wiederhergestellt werden. Wenn du alle Daten des Kontos sofort entfernen möchtest, kannst du das nachfolgend tun.
|
||||
title: Konten
|
||||
unblock_email: E-Mail-Adresse entsperren
|
||||
|
@ -885,7 +885,23 @@ de:
|
|||
action: Für weitere Informationen hier klicken
|
||||
message_html: "<strong>Die Konfiguration deines Objektspeichers ist fehlerhaft. Die Privatsphäre deiner Benutzer*innen ist gefährdet.</strong>"
|
||||
tags:
|
||||
moderation:
|
||||
not_trendable: Nicht trendfähig
|
||||
not_usable: Nicht verwendbar
|
||||
pending_review: Überprüfung ausstehend
|
||||
review_requested: Überprüfung angefordert
|
||||
reviewed: Überprüft
|
||||
title: Status
|
||||
trendable: Trendfähig
|
||||
unreviewed: Ungeprüft
|
||||
usable: Verwendbar
|
||||
name: Name
|
||||
newest: Neueste
|
||||
oldest: Älteste
|
||||
reset: Zurücksetzen
|
||||
review: Prüfstatus
|
||||
search: Suchen
|
||||
title: Hashtags
|
||||
updated_msg: Hashtag-Einstellungen erfolgreich aktualisiert
|
||||
title: Administration
|
||||
trends:
|
||||
|
@ -1455,7 +1471,7 @@ de:
|
|||
backreference_required: Das neue Konto muss zuerst auf das alte Konto verweisen
|
||||
before: 'Bevor du fortfährst, lies bitte diese Hinweise sorgfältig durch:'
|
||||
cooldown: Nach dem Umzug wird es eine Weile dauern, bis du erneut umziehen darfst
|
||||
disabled_account: Dein altes Konto ist nur noch eingeschränkt nutzbar. Du kannst jedoch deine Daten exportieren und das Konto wieder reaktivieren.
|
||||
disabled_account: Dein altes Konto ist nur noch eingeschränkt verwendbar. Du kannst jedoch deine Daten exportieren und das Konto wieder reaktivieren.
|
||||
followers: Alle Follower werden vom alten zum neuen Konto übertragen
|
||||
only_redirect_html: Alternativ kannst du auch <a href="%{path}">nur eine Weiterleitung zu deinem neuen Konto</a> einrichten, ohne die Follower zu übertragen.
|
||||
other_data: Keine anderen Daten werden automatisch zum neuen Konto übertragen
|
||||
|
|
|
@ -83,7 +83,7 @@ nl:
|
|||
access_denied: De resource-eigenaar of autorisatie-server weigerde het verzoek.
|
||||
credential_flow_not_configured: De wachtwoordgegevens-flow van de resource-eigenaar is mislukt omdat Doorkeeper.configure.resource_owner_from_credentials niet is ingesteld.
|
||||
invalid_client: Clientverificatie is mislukt door een onbekende client, ontbrekende client-authenticatie of een niet ondersteunde authenticatie-methode.
|
||||
invalid_code_challenge_method: De code-uitdagingsmethode moet S256 zijn, eenvoudig wordt niet ondersteund.
|
||||
invalid_code_challenge_method: De code challenge method moet S256 zijn, plain wordt niet ondersteund.
|
||||
invalid_grant: De verstrekte autorisatie is ongeldig, verlopen, ingetrokken, komt niet overeen met de redirect-URI die is opgegeven of werd uitgegeven aan een andere client.
|
||||
invalid_redirect_uri: De opgegeven redirect-URI is ongeldig.
|
||||
invalid_request:
|
||||
|
|
|
@ -83,6 +83,7 @@ th:
|
|||
access_denied: เจ้าของทรัพยากรหรือเซิร์ฟเวอร์การอนุญาตปฏิเสธคำขอ
|
||||
credential_flow_not_configured: โฟลว์ข้อมูลประจำตัวรหัสผ่านเจ้าของทรัพยากรล้มเหลวเนื่องจากไม่ได้กำหนดค่า Doorkeeper.configure.resource_owner_from_credentials
|
||||
invalid_client: การรับรองความถูกต้องไคลเอ็นต์ล้มเหลวเนื่องจากไคลเอ็นต์ที่ไม่รู้จัก ไม่ได้รวมการรับรองความถูกต้องไคลเอ็นต์ หรือวิธีการรับรองความถูกต้องที่ไม่รองรับ
|
||||
invalid_code_challenge_method: วิธีการทดสอบรหัสต้องเป็น S256 ไม่รองรับแบบธรรมดา
|
||||
invalid_grant: การให้การรับรองความถูกต้องที่ให้มาไม่ถูกต้อง หมดอายุแล้ว เพิกถอนแล้ว ไม่ตรงกับ URI การเปลี่ยนเส้นทางที่ใช้ในคำขอการรับรองความถูกต้อง หรือออกให้ไคลเอ็นต์อื่น
|
||||
invalid_redirect_uri: URI การเปลี่ยนเส้นทางที่รวมอยู่ไม่ถูกต้อง
|
||||
invalid_request:
|
||||
|
|
|
@ -885,7 +885,23 @@ en:
|
|||
action: Check here for more information
|
||||
message_html: "<strong>Your object storage is misconfigured. The privacy of your users is at risk.</strong>"
|
||||
tags:
|
||||
moderation:
|
||||
not_trendable: Not trendable
|
||||
not_usable: Not usable
|
||||
pending_review: Pending review
|
||||
review_requested: Review requested
|
||||
reviewed: Reviewed
|
||||
title: Status
|
||||
trendable: Trendable
|
||||
unreviewed: Unreviewed
|
||||
usable: Usable
|
||||
name: Name
|
||||
newest: Newest
|
||||
oldest: Oldest
|
||||
reset: Reset
|
||||
review: Review status
|
||||
search: Search
|
||||
title: Hashtags
|
||||
updated_msg: Hashtag settings updated successfully
|
||||
title: Administration
|
||||
trends:
|
||||
|
|
|
@ -642,7 +642,7 @@ es-AR:
|
|||
report: 'Denuncia #%{id}'
|
||||
reported_account: Cuenta denunciada
|
||||
reported_by: Denunciada por
|
||||
reported_with_application: Informado a través de la aplicación
|
||||
reported_with_application: Denunciado con aplicación
|
||||
resolved: Resueltas
|
||||
resolved_msg: "¡Denuncia exitosamente resuelta!"
|
||||
skip_to_actions: Ir directamente a las acciones
|
||||
|
@ -885,7 +885,23 @@ es-AR:
|
|||
action: Revisá acá para más información
|
||||
message_html: "<strong>El almacenamiento de tu objeto está mal configurado. La privacidad de tus usuarios está en riesgo.</strong>"
|
||||
tags:
|
||||
moderation:
|
||||
not_trendable: No disponible para tendencia
|
||||
not_usable: No disponible para uso
|
||||
pending_review: Revisión pendiente
|
||||
review_requested: Revisión solicitada
|
||||
reviewed: Revisada
|
||||
title: Estado
|
||||
trendable: Disponible para tendencia
|
||||
unreviewed: No revisada
|
||||
usable: Disponible para uso
|
||||
name: Nombre
|
||||
newest: Lo más reciente
|
||||
oldest: Lo más antiguo
|
||||
reset: Restablecer
|
||||
review: Estado de revisión
|
||||
search: Buscar
|
||||
title: Etiquetas
|
||||
updated_msg: La configuración de la etiqueta se actualizó exitosamente
|
||||
title: Administración
|
||||
trends:
|
||||
|
|
|
@ -101,7 +101,7 @@ fi:
|
|||
most_recent_ip: Viimeisin IP
|
||||
no_account_selected: Tilejä ei muutettu, koska yhtään ei ollut valittuna
|
||||
no_limits_imposed: Rajoituksia ei ole asetettu
|
||||
no_role_assigned: Roolia ei määritetty
|
||||
no_role_assigned: Roolia ei asetettu
|
||||
not_subscribed: Ei tilaaja
|
||||
pending: Odottaa tarkastusta
|
||||
perform_full_suspension: Jäädytä
|
||||
|
@ -173,8 +173,8 @@ fi:
|
|||
approve_appeal: Hyväksy valitus
|
||||
approve_user: Hyväksy käyttäjä
|
||||
assigned_to_self_report: Ota raportti käsiteltäväksi
|
||||
change_email_user: Vaihda sähköposti käyttäjälle
|
||||
change_role_user: Muuta käyttäjän roolia
|
||||
change_email_user: Vaihda käyttäjän sähköpostiosoite
|
||||
change_role_user: Vaihda käyttäjän roolia
|
||||
confirm_user: Vahvista käyttäjä
|
||||
create_account_warning: Luo varoitus
|
||||
create_announcement: Luo tiedote
|
||||
|
@ -231,44 +231,44 @@ fi:
|
|||
update_user_role: Päivitä rooli
|
||||
actions:
|
||||
approve_appeal_html: "%{name} hyväksyi käyttäjän %{target} valituksen moderointipäätöksestä"
|
||||
approve_user_html: "%{name} hyväksyi käyttäjän rekisteröitymisen kohteesta %{target}"
|
||||
approve_user_html: "%{name} hyväksyi käyttäjän %{target} rekisteröitymisen"
|
||||
assigned_to_self_report_html: "%{name} otti raportin %{target} käsiteltäväkseen"
|
||||
change_email_user_html: "%{name} vaihtoi käyttäjän %{target} sähköpostiosoitteen"
|
||||
change_role_user_html: "%{name} muutti käyttäjän %{target} roolia"
|
||||
confirm_user_html: "%{name} vahvisti käyttäjän %{target} sähköpostiosoitteen"
|
||||
create_account_warning_html: "%{name} lähetti varoituksen käyttäjälle %{target}"
|
||||
create_announcement_html: "%{name} loi uuden tiedotteen %{target}"
|
||||
create_canonical_email_block_html: "%{name} esti sähköpostin tiivisteellä %{target}"
|
||||
create_canonical_email_block_html: "%{name} esti sähköpostiosoitteen tiivisteellä %{target}"
|
||||
create_custom_emoji_html: "%{name} lähetti uuden emojin %{target}"
|
||||
create_domain_allow_html: "%{name} salli federoinnin verkkotunnuksen %{target} kanssa"
|
||||
create_domain_block_html: "%{name} esti verkkotunnuksen %{target}"
|
||||
create_email_domain_block_html: "%{name} esti sähköpostiverkkotunnuksen %{target}"
|
||||
create_ip_block_html: "%{name} loi IP-säännön %{target}"
|
||||
create_ip_block_html: "%{name} loi säännön IP-osoitteelle %{target}"
|
||||
create_unavailable_domain_html: "%{name} pysäytti toimituksen verkkotunnukseen %{target}"
|
||||
create_user_role_html: "%{name} loi roolin %{target}"
|
||||
demote_user_html: "%{name} alensi käyttäjän %{target}"
|
||||
destroy_announcement_html: "%{name} poisti tiedotteen %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} kumosi sähköpostin eston tiivisteellä %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} kumosi sähköpostiosoitteen eston tiivisteellä %{target}"
|
||||
destroy_custom_emoji_html: "%{name} poisti emojin %{target}"
|
||||
destroy_domain_allow_html: "%{name} kielsi federoinnin verkkotunnuksen %{target} kanssa"
|
||||
destroy_domain_block_html: "%{name} kumosi verkkotunnuksen %{target} eston"
|
||||
destroy_email_domain_block_html: "%{name} kumosi sähköpostiverkkotunnuksen %{target} eston"
|
||||
destroy_instance_html: "%{name} tyhjensi verkkotunnuksen %{target}"
|
||||
destroy_ip_block_html: "%{name} poisti IP-säännön %{target}"
|
||||
destroy_ip_block_html: "%{name} poisti säännön IP-osoitteelta %{target}"
|
||||
destroy_status_html: "%{name} poisti käyttäjän %{target} julkaisun"
|
||||
destroy_unavailable_domain_html: "%{name} jatkoi toimitusta verkkotunnukseen %{target}"
|
||||
destroy_user_role_html: "%{name} poisti roolin %{target}"
|
||||
disable_2fa_user_html: "%{name} poisti käyttäjältä %{target} vaatimuksen kaksivaiheisen todentamiseen"
|
||||
disable_custom_emoji_html: "%{name} poisti käytöstä emojin %{target}"
|
||||
disable_sign_in_token_auth_user_html: "%{name} poisti sähköpostitunnuksella todennuksen käytöstä tililtä %{target}"
|
||||
disable_user_html: "%{name} poisti kirjautumisen käyttäjältä %{target}"
|
||||
disable_2fa_user_html: "%{name} poisti käyttäjältä %{target} vaatimuksen kaksivaiheiseen todentamiseen"
|
||||
disable_custom_emoji_html: "%{name} poisti emojin %{target} käytöstä"
|
||||
disable_sign_in_token_auth_user_html: "%{name} poisti sähköpostitunnuksella todennuksen käytöstä käyttäjältä %{target}"
|
||||
disable_user_html: "%{name} poisti kirjautumisen käytöstä käyttäjältä %{target}"
|
||||
enable_custom_emoji_html: "%{name} otti emojin %{target} käyttöön"
|
||||
enable_sign_in_token_auth_user_html: "%{name} otti sähköpostitunnuksella todennuksen käyttöön tilille %{target}"
|
||||
enable_sign_in_token_auth_user_html: "%{name} otti sähköpostitunnuksella todennuksen käyttöön käyttäjälle %{target}"
|
||||
enable_user_html: "%{name} otti kirjautumisen käyttöön käyttäjälle %{target}"
|
||||
memorialize_account_html: "%{name} muutti käyttäjän %{target} tilin muistosivuksi"
|
||||
promote_user_html: "%{name} ylensi käyttäjän %{target}"
|
||||
reject_appeal_html: "%{name} hylkäsi käyttäjän %{target} valituksen moderointipäätöksestä"
|
||||
reject_user_html: "%{name} hylkäsi käyttäjän rekisteröitymisen kohteesta %{target}"
|
||||
reject_user_html: "%{name} hylkäsi käyttäjän %{target} rekisteröitymisen"
|
||||
remove_avatar_user_html: "%{name} poisti käyttäjän %{target} profiilikuvan"
|
||||
reopen_report_html: "%{name} avasi uudelleen raportin %{target}"
|
||||
resend_user_html: "%{name} lähetti vahvistussähköpostiviestin uudelleen käyttäjälle %{target}"
|
||||
|
@ -277,7 +277,7 @@ fi:
|
|||
sensitive_account_html: "%{name} merkitsi käyttäjän %{target} median arkaluonteiseksi"
|
||||
silence_account_html: "%{name} rajoitti käyttäjän %{target} tiliä"
|
||||
suspend_account_html: "%{name} jäädytti käyttäjän %{target} tilin"
|
||||
unassigned_report_html: "%{name} poisti raportin käsittelystä %{target}"
|
||||
unassigned_report_html: "%{name} poisti raportin %{target} käsittelystä"
|
||||
unblock_email_account_html: "%{name} kumosi käyttäjän %{target} sähköpostiosoitteen eston"
|
||||
unsensitive_account_html: "%{name} kumosi käyttäjän %{target} median arkaluonteisuusmerkinnän"
|
||||
unsilence_account_html: "%{name} kumosi käyttäjän %{target} rajoituksen"
|
||||
|
@ -463,28 +463,28 @@ fi:
|
|||
title: Tuo verkkotunnusten estoja
|
||||
no_file: Yhtäkään tiedostoa ei ole valittu
|
||||
follow_recommendations:
|
||||
description_html: "<strong>Seuraamissuositukset auttavat uusia käyttäjiä löytämään nopeasti kiinnostavaa sisältöä</strong>. Kun käyttäjä ei ole ollut tarpeeksi vuorovaikutuksessa muiden kanssa, jotta hänelle olisi muodostunut henkilökohtaisia seuraamissuosituksia, suositellaan niiden sijaan näitä tilejä. Ne lasketaan päivittäin uudelleen yhdistelmästä tilejä, jotka ovat viime aikoina olleet aktiivisimmin sitoutuneita ja joilla on suurimmat paikalliset seuraajamäärät tietyllä kielellä."
|
||||
description_html: "<strong>Seurantasuositukset auttavat uusia käyttäjiä löytämään nopeasti kiinnostavaa sisältöä</strong>. Kun käyttäjä ei ole ollut tarpeeksi vuorovaikutuksessa muiden kanssa, jotta hänelle olisi muodostunut henkilökohtaisia seuraamissuosituksia, suositellaan niiden sijaan näitä tilejä. Ne lasketaan päivittäin uudelleen yhdistelmästä tilejä, jotka ovat viime aikoina olleet aktiivisimmin sitoutuneita ja joilla on suurimmat paikalliset seuraajamäärät tietyllä kielellä."
|
||||
language: Kielelle
|
||||
status: Tila
|
||||
suppress: Hylkää seuraamissuositus
|
||||
suppress: Hylkää seurantasuositus
|
||||
suppressed: Hylätty
|
||||
title: Seuraamissuositukset
|
||||
unsuppress: Palauta seuraamissuositus
|
||||
title: Seurantasuositukset
|
||||
unsuppress: Palauta seurantasuositus
|
||||
instances:
|
||||
audit_log:
|
||||
title: Viimeaikaiset tarkastuslokit
|
||||
view_all: Näytä kaikki tarkastuslokit
|
||||
availability:
|
||||
description_html:
|
||||
one: Jos toimitus verkkotunnukseen epäonnistuu <strong>%{count} päivän</strong> ajan, sitä ei yritetä uudelleen ennen kuin verkkotunnuksesta <em>vastaanotetaan</em> toimitus.
|
||||
other: Jos toimitus verkkotunnukseen epäonnistuu <strong>%{count} päivän</strong> ajan, sitä ei yritetä uudelleen ennen kuin verkkotunnuksesta <em>vastaanotetaan</em> toimitus.
|
||||
failure_threshold_reached: Epäonnistumisen kynnys saavutettu %{date}.
|
||||
one: Jos toimitus verkkotunnukseen epäonnistuu <strong>päivän ajan</strong>, sitä ei yritetä uudelleen ennen kuin verkkotunnuksesta <em>vastaanotetaan</em> toimitus.
|
||||
other: Jos toimitus verkkotunnukseen epäonnistuu <strong>%{count} päivän ajan</strong>, sitä ei yritetä uudelleen ennen kuin verkkotunnuksesta <em>vastaanotetaan</em> toimitus.
|
||||
failure_threshold_reached: Epäonnistumisten yläraja saavutettu %{date}.
|
||||
failures_recorded:
|
||||
one: Epäonnistuneita yrityksiä %{count} päivässä.
|
||||
other: Epäonnistuneita yrityksiä %{count} päivää.
|
||||
no_failures_recorded: Ei epäonnistumisia kirjattu.
|
||||
one: Epäonnistuneita yrityksiä %{count} päivänä.
|
||||
other: Epäonnistuneita yrityksiä %{count} päivänä.
|
||||
no_failures_recorded: Epäonnistumisia ei kirjattu.
|
||||
title: Saatavuus
|
||||
warning: Viimeisin yritys yhdistää yhteys tähän palvelimeen on epäonnistunut
|
||||
warning: Viimeisin yritys yhdistää tähän palvelimeen epäonnistui
|
||||
back_to_all: Kaikki
|
||||
back_to_limited: Rajoitettu
|
||||
back_to_warning: Varoitus
|
||||
|
@ -492,24 +492,24 @@ fi:
|
|||
confirm_purge: Haluatko varmasti poistaa pysyvästi tämän verkkotunnuksen tiedot?
|
||||
content_policies:
|
||||
comment: Sisäinen muistiinpano
|
||||
description_html: Voit määrittää sisältökäytännöt, joita sovelletaan kaikkiin tämän verkkotunnuksen ja sen aliverkkotunnuksien tileihin.
|
||||
description_html: Voit määrittää sisältökäytännöt, joita sovelletaan kaikkiin tämän verkkotunnuksen ja sen aliverkkotunnusten tileihin.
|
||||
limited_federation_mode_description_html: Voit valita sallitaanko federointi tällä verkkotunnuksella.
|
||||
policies:
|
||||
reject_media: Hylkää media
|
||||
reject_reports: Hylkää raportit
|
||||
silence: Rajoita
|
||||
suspend: Jäädytä
|
||||
policy: Käytännöt
|
||||
policy: Käytäntö
|
||||
reason: Julkinen syy
|
||||
title: Sisällön toimintatavat
|
||||
title: Sisältökäytännöt
|
||||
dashboard:
|
||||
instance_accounts_dimension: Seuratuimmat tilit
|
||||
instance_accounts_measure: tallennetut tilit
|
||||
instance_followers_measure: seuraajamme siellä
|
||||
instance_follows_measure: heidän seuraajansa täällä
|
||||
instance_languages_dimension: Suosituimmat kielet
|
||||
instance_media_attachments_measure: tallennetut median liitteet
|
||||
instance_reports_measure: niitä koskevat raportit
|
||||
instance_media_attachments_measure: tallennetut medialiitteet
|
||||
instance_reports_measure: heitä koskevat raportit
|
||||
instance_statuses_measure: tallennetut julkaisut
|
||||
delivery:
|
||||
all: Kaikki
|
||||
|
@ -520,7 +520,7 @@ fi:
|
|||
unavailable: Ei saatavilla
|
||||
delivery_available: Toimitus on saatavilla
|
||||
delivery_error_days: Toimitusvirheen päivät
|
||||
delivery_error_hint: Jos toimitus ei ole mahdollista %{count} päivän aikana, se merkitään automaattisesti toimittamattomaksi.
|
||||
delivery_error_hint: Jos toimitus ei ole mahdollista %{count} päivään, se merkitään automaattisesti toimituskelvottomaksi.
|
||||
destroyed_msg: Palvelimelta %{domain} peräisin olevat tiedot ovat nyt jonossa poistattaviksi.
|
||||
empty: Verkkotunnuksia ei löytynyt.
|
||||
known_accounts:
|
||||
|
@ -533,14 +533,14 @@ fi:
|
|||
private_comment: Yksityinen kommentti
|
||||
public_comment: Julkinen kommentti
|
||||
purge: Tyhjennä
|
||||
purge_description_html: Jos uskot, että tämä verkkotunnus on offline-tilassa tarkoituksella, voit poistaa kaikki verkkotunnuksen tilitietueet ja niihin liittyvät tiedot tallennustilastasi. Tämä voi kestää jonkin aikaa.
|
||||
purge_description_html: Jos uskot, että tämä verkkotunnus on yhteydettömässä tilassa tarkoituksella, voit poistaa kaikki verkkotunnuksen tilitietueet ja niihin liittyvät tiedot tallennustilastasi. Tämä voi kestää jonkin aikaa.
|
||||
title: Federointi
|
||||
total_blocked_by_us: Estämämme
|
||||
total_followed_by_them: Heidän seuraama
|
||||
total_followed_by_us: Meidän seuraama
|
||||
total_reported: Niitä koskevat raportit
|
||||
total_reported: Heitä koskevat raportit
|
||||
total_storage: Medialiitteet
|
||||
totals_time_period_hint_html: Alla näkyvät yhteenlasketut tiedot sisältävät koko ajan.
|
||||
totals_time_period_hint_html: Seuraavassa näkyvät määrät sisältävät tiedot koko ajalta.
|
||||
unknown_instance: Tällä palvelimella ei tällä hetkellä ole tähän verkkotunnukseen liittyviä tietueita.
|
||||
invites:
|
||||
deactivate_all: Poista kaikki käytöstä
|
||||
|
@ -689,7 +689,7 @@ fi:
|
|||
description_html: "<strong>Käyttäjärooleilla</strong> voit mukauttaa, mihin Mastodonin toimintoihin ja alueisiin käyttäjäsi pääsevät käsiksi."
|
||||
edit: Muokkaa roolia ”%{name}”
|
||||
everyone: Oletuskäyttöoikeudet
|
||||
everyone_full_description_html: Tämä on <strong>perusrooli</strong>, joka vaikuttaa <strong>kaikkiin käyttäjiin</strong>, jopa ilman määrättyä roolia. Kaikki muut roolit perivät sen käyttöoikeudet.
|
||||
everyone_full_description_html: Tämä on <strong>perusrooli</strong>, joka vaikuttaa <strong>kaikkiin käyttäjiin</strong>, jopa ilman asetettua roolia. Kaikki muut roolit perivät sen käyttöoikeudet.
|
||||
permissions_count:
|
||||
one: "%{count} käyttöoikeus"
|
||||
other: "%{count} käyttöoikeutta"
|
||||
|
@ -765,7 +765,7 @@ fi:
|
|||
desc_html: Vaikuttaa kaikkiin käyttäjiin, jotka eivät ole muuttaneet tätä asetusta itse
|
||||
title: Jätä käyttäjät oletusarvoisesti hakukoneindeksoinnin ulkopuolelle
|
||||
discovery:
|
||||
follow_recommendations: Seuraamissuositukset
|
||||
follow_recommendations: Seurantasuositukset
|
||||
preamble: Mielenkiintoisen sisällön esille tuominen auttaa saamaan uusia käyttäjiä, jotka eivät ehkä tunne ketään Mastodonista. Määrittele, kuinka erilaiset löytämisominaisuudet toimivat palvelimellasi.
|
||||
profile_directory: Profiilihakemisto
|
||||
public_timelines: Julkiset aikajanat
|
||||
|
@ -794,7 +794,7 @@ fi:
|
|||
federation_authentication: Federoinnin todennuksen valvonta
|
||||
title: Palvelimen asetukset
|
||||
site_uploads:
|
||||
delete: Poista ladattu tiedosto
|
||||
delete: Poista lähetetty tiedosto
|
||||
destroyed_msg: Sivustolatauksen poisto onnistui!
|
||||
software_updates:
|
||||
critical_update: Kriittinen – päivitä viivyttelemättä
|
||||
|
@ -851,7 +851,7 @@ fi:
|
|||
elasticsearch_health_red:
|
||||
message_html: Elasticsearch-klusteri on vikatilassa (punainen tila), joten hakuominaisuudet eivät ole käytettävissä
|
||||
elasticsearch_health_yellow:
|
||||
message_html: Elasticsearch-klusteri on häiriötilassa (keltainen tila), joten suosittelemme tutkimaan syyn
|
||||
message_html: Elasticsearch-klusteri on vikatilassa (keltainen tila), joten suosittelemme tutkimaan syyn
|
||||
elasticsearch_index_mismatch:
|
||||
message_html: Elasticsearch-indeksin sidokset ovat vanhentuneet. Suorita <code>tootctl search deploy --only=%{value}</code>
|
||||
elasticsearch_preset:
|
||||
|
@ -863,10 +863,10 @@ fi:
|
|||
elasticsearch_reset_chewy:
|
||||
message_html: Elasticsearch-järjestelmäindeksi on vanhentunut asetusmuutoksen vuoksi. Suorita <code>tootctl search deploy --reset-chewy</code> päivittääksesi sen.
|
||||
elasticsearch_running_check:
|
||||
message_html: Ei saatu yhteyttä Elasticsearchiin. Tarkista, että se on käynnissä tai poista kokotekstihaku käytöstä
|
||||
message_html: Elasticsearchiin ei saatu yhteyttä. Tarkista, että se on käynnissä, tai poista kokotekstihaku käytöstä
|
||||
elasticsearch_version_check:
|
||||
message_html: 'Yhteensopimaton Elasticsearch-versio: %{value}'
|
||||
version_comparison: Elasticsearch %{running_version} on käynnissä, kun %{required_version} vaaditaan
|
||||
version_comparison: Käynnissä on Elasticsearch %{running_version}, kun vaaditaan %{required_version}
|
||||
rules_check:
|
||||
action: Hallitse palvelimen sääntöjä
|
||||
message_html: Et ole määrittänyt lainkaan palvelimen sääntöjä.
|
||||
|
@ -879,13 +879,29 @@ fi:
|
|||
action: Näytä saatavilla olevat päivitykset
|
||||
message_html: Mastodonin virhekorjauspäivitys on saatavilla.
|
||||
upload_check_privacy_error:
|
||||
action: Katso täältä lisätietoja
|
||||
message_html: "<strong>Verkkopalvelimesi on määritetty väärin. Käyttäjiesi yksityisyys on vaarassa.</strong>"
|
||||
action: Katso lisätietoja täältä
|
||||
message_html: "<strong>Verkkopalvelimesi on määritetty väärin. Käyttäjiesi tietosuoja on vaarassa.</strong>"
|
||||
upload_check_privacy_error_object_storage:
|
||||
action: Katso täältä lisätietoja
|
||||
message_html: "<strong>Objektivarastosi on määritetty virheellisesti, ja käyttäjiesi yksityisyys on vaarassa.</strong>"
|
||||
action: Katso lisätietoja täältä
|
||||
message_html: "<strong>Oliovarastosi on määritetty virheellisesti. Käyttäjiesi tietosuoja on vaarassa.</strong>"
|
||||
tags:
|
||||
moderation:
|
||||
not_trendable: Ei trendattava
|
||||
not_usable: Ei käytettävissä
|
||||
pending_review: Odottaa tarkastusta
|
||||
review_requested: Tarkastus pyydetty
|
||||
reviewed: Tarkastettu
|
||||
title: Tila
|
||||
trendable: Trendattava
|
||||
unreviewed: Tarkastamaton
|
||||
usable: Käytettävissä
|
||||
name: Nimi
|
||||
newest: Uusin
|
||||
oldest: Vanhin
|
||||
reset: Tyhjennä
|
||||
review: Tarkista tila
|
||||
search: Hae
|
||||
title: Aihetunnisteet
|
||||
updated_msg: Aihetunnisteiden asetusten päivitys onnistui
|
||||
title: Ylläpito
|
||||
trends:
|
||||
|
@ -918,7 +934,7 @@ fi:
|
|||
statuses:
|
||||
allow: Salli julkaisu
|
||||
allow_account: Salli tekijä
|
||||
description_html: Nämä ovat julkaisuja, joita palvelimesi tietää jaettavan ja lisättävän suosikkeihin paljon tällä hetkellä. Listaus voi auttaa uusia ja palaavia käyttäjiäsi löytämään lisää seurattavia. Julkaisut eivät näy julkisesti ennen kuin hyväksyt niiden julkaisijan ja julkaisija sallii tilinsä ehdottamisen. Voit myös sallia tai hylätä yksittäisiä julkaisuja.
|
||||
description_html: Nämä ovat julkaisuja, joita palvelimesi tietää jaettavan ja lisättävän suosikkeihin paljon tällä hetkellä. Listaus voi auttaa uusia ja palaavia käyttäjiäsi löytämään lisää seurattavia. Julkaisut eivät näy julkisesti ennen kuin hyväksyt niiden tekijän ja tekijä sallii tilinsä ehdottamisen. Voit myös sallia tai hylätä yksittäisiä julkaisuja.
|
||||
disallow: Kiellä julkaisu
|
||||
disallow_account: Estä tekijä
|
||||
no_status_selected: Suosittuja julkaisuja ei muutettu, koska yhtään ei ollut valittuna
|
||||
|
@ -1054,7 +1070,7 @@ fi:
|
|||
apply_for_account: Pyydä tiliä
|
||||
captcha_confirmation:
|
||||
help_html: Jos kohtaat ongelmia CAPTCHAn ratkaisemisessa, voit pyytää meiltä apua osoitteella %{email}.
|
||||
hint_html: Vielä yksi juttu! Meidän on vahvistettava, että olet ihminen (tämän avulla pidämme roskapostin poissa!). Ratkaise alla oleva CAPTCHA-vahvistus ja paina "Jatka".
|
||||
hint_html: Vielä yksi asia! Meidän on vahvistettava, että olet ihminen (tämän avulla pidämme roskapostin poissa!). Ratkaise alla oleva CAPTCHA-vahvistus ja paina ”Jatka”.
|
||||
title: Turvatarkastus
|
||||
confirmations:
|
||||
awaiting_review: Sähköpostiosoitteesi on vahvistettu! Seuraavaksi palvelimen %{domain} ylläpito tarkastaa rekisteröitymisesi, ja saat lopuksi ilmoituksen sähköpostitse, jos tilisi hyväksytään!
|
||||
|
@ -1084,7 +1100,7 @@ fi:
|
|||
migrate_account: Muuta toiseen tiliin
|
||||
migrate_account_html: Jos haluat ohjata tämän tilin toiseen, voit <a href="%{path}">asettaa toisen tilin tästä</a>.
|
||||
or_log_in_with: Tai käytä kirjautumiseen
|
||||
privacy_policy_agreement_html: Olen lukenut ja hyväksynyt <a href="%{privacy_policy_path}" target="_blank">tietosuojakäytännön</a>
|
||||
privacy_policy_agreement_html: Olen lukenut ja hyväksyn <a href="%{privacy_policy_path}" target="_blank">tietosuojakäytännön</a>
|
||||
progress:
|
||||
confirm: Vahvista sähköpostiosoite
|
||||
details: Omat tietosi
|
||||
|
@ -1171,7 +1187,7 @@ fi:
|
|||
email_contact_html: Jos ei saavu perille, voit pyytää apua sähköpostilla <a href="mailto:%{email}">%{email}</a>
|
||||
email_reconfirmation_html: Jos et saa vahvistuksen sähköpostia, niin voit <a href="%{path}">pyytää sitä uudelleen</a>
|
||||
irreversible: Et voi palauttaa tiliäsi tai aktivoida sitä uudelleen
|
||||
more_details_html: Lisätietoja saat <a href="%{terms_path}">tietosuojakäytännöstämme</a>.
|
||||
more_details_html: Tarkempia tietoja saat <a href="%{terms_path}">tietosuojakäytännöstämme</a>.
|
||||
username_available: Käyttäjänimesi tulee saataville uudelleen
|
||||
username_unavailable: Käyttäjänimesi ei tule saataville enää uudelleen
|
||||
disputes:
|
||||
|
@ -1227,7 +1243,7 @@ fi:
|
|||
noscript_html: Käyttääksesi Mastodonin verkkosovellusta, ota JavaScript käyttöön. Vaihtoehtoisesti voit kokeilla käyttämällesi alustalle kehitettyjä Mastodonin <a href="%{apps_path}">natiivisovelluksia</a>.
|
||||
existing_username_validator:
|
||||
not_found: paikallista käyttäjää ei löydy kyseisellä käyttäjänimellä
|
||||
not_found_multiple: "%{usernames} ei löytynyt"
|
||||
not_found_multiple: käyttäjänimiä %{usernames} ei löytynyt
|
||||
exports:
|
||||
archive_takeout:
|
||||
date: Päiväys
|
||||
|
@ -1265,7 +1281,7 @@ fi:
|
|||
deprecated_api_multiple_keywords: Näitä parametreja ei voi muuttaa tästä sovelluksesta, koska ne koskevat useampaa kuin yhtä suodattimen avainsanaa. Käytä uudempaa sovellusta tai selainkäyttöliittymää.
|
||||
invalid_context: Ei sisältöä tai se on virheellinen
|
||||
index:
|
||||
contexts: Suodattaa kontektissa %{contexts}
|
||||
contexts: Suodattaa kontekstissa %{contexts}
|
||||
delete: Poista
|
||||
empty: Sinulla ei ole suodattimia.
|
||||
expires_in: Vanhenee %{distance}
|
||||
|
@ -1296,8 +1312,8 @@ fi:
|
|||
one: "<strong>%{count}</strong> kohde tällä sivulla on valittu."
|
||||
other: Kaikki <strong>%{count}</strong> kohdetta tällä sivulla on valittu.
|
||||
all_matching_items_selected_html:
|
||||
one: "<strong>%{count}</strong> kohde, joka vastaa hakuasi."
|
||||
other: Kaikki <strong>%{count}</strong> hakuasi vastaavaa kohdetta.
|
||||
one: "<strong>%{count}</strong> hakuasi vastaava kohde on valittuna."
|
||||
other: Kaikki <strong>%{count}</strong> hakuasi vastaavat kohteet ovat valittuina.
|
||||
cancel: Peruuta
|
||||
changes_saved_msg: Muutosten tallennus onnistui!
|
||||
confirm: Vahvista
|
||||
|
@ -1308,7 +1324,7 @@ fi:
|
|||
order_by: Järjestys
|
||||
save_changes: Tallenna muutokset
|
||||
select_all_matching_items:
|
||||
one: Valitse %{count} kohde, joka vastaa hakuasi.
|
||||
one: Valitse %{count} hakuasi vastaava kohde.
|
||||
other: Valitse kaikki %{count} hakuasi vastaavaa kohdetta.
|
||||
today: tänään
|
||||
validation_errors:
|
||||
|
@ -1459,7 +1475,7 @@ fi:
|
|||
followers: Tämä toiminto siirtää kaikki seuraajat nykyisestä tilistä uudelle tilille
|
||||
only_redirect_html: Vaihtoehtoisesti voit <a href="%{path}">asettaa vain ohjauksen profiiliisi</a>.
|
||||
other_data: Muita tietoja ei siirretä automaattisesti
|
||||
redirect: Nykyisen tilisi profiili päivitetään ohjaushuomautuksella ja suljetaan pois hauista
|
||||
redirect: Nykyisen tilisi profiili päivitetään uudelleenohjaushuomautuksella ja suljetaan pois hauista
|
||||
moderation:
|
||||
title: Moderointi
|
||||
move_handler:
|
||||
|
@ -1551,7 +1567,7 @@ fi:
|
|||
privacy: Yksityisyys
|
||||
privacy_hint_html: Määritä, kuinka paljon muita avustavia tietoja haluat paljastaa. Käyttäjät löytävät kiinnostavia profiileja ja hienoja sovelluksia, kun he selaavat toisten seuraamia käyttäjiä ja kun he näkevät, millä sovelluksilla nämä julkaisevat. Saatat kuitenkin haluta piilottaa nämä tiedot.
|
||||
reach: Tavoittavuus
|
||||
reach_hint_html: Määritä, haluatko tulla uusien käyttäjien löytämäksi ja seuraamaksi. Haluatko julkaisujesi näkyvän Selaa-sivulla? Haluatko muiden käyttäjien näkevän sinut seuraamissuosituksissaan? Haluatko hyväksyä kaikki uudet seuraajat automaattisesti vai päättää jokaisesta erikseen?
|
||||
reach_hint_html: Määritä, haluatko tulla uusien käyttäjien löytämäksi ja seuraamaksi. Haluatko julkaisujesi näkyvän Selaa-sivulla? Haluatko muiden käyttäjien näkevän sinut seurantasuosituksissaan? Haluatko hyväksyä kaikki uudet seuraajat automaattisesti vai päättää jokaisesta erikseen?
|
||||
search: Haku
|
||||
search_hint_html: Määritä, kuinka haluat tulla löydetyksi. Haluatko, että ihmiset löytävät sinut julkisten julkaisujesi perusteella? Haluatko, että ihmiset Mastodonin ulkopuolella löytävät profiilisi tehdessään hakuja verkossa? Otathan huomioon, ettei julkisten tietojen täyttä kaikista hakukoneista poisjäämistä voi taata.
|
||||
title: Yksityisyys ja tavoittavuus
|
||||
|
@ -1842,7 +1858,7 @@ fi:
|
|||
delete_statuses: Joidenkin julkaisuistasi on havaittu rikkovan ainakin yhtä yhteisön sääntöä, joten palvelimen %{instance} moderaattorit ovat poistaneet ne.
|
||||
disable: Et voi enää käyttää tiliäsi, mutta profiilisi ja muut tiedot pysyvät muuttumattomina. Voit pyytää varmuuskopiota tiedoistasi, vaihtaa tilin asetuksia tai poistaa tilisi.
|
||||
mark_statuses_as_sensitive: Palvelimen %{instance} moderaattorit ovat merkinneet osan julkaisuistasi arkaluonteisiksi. Tämä tarkoittaa sitä, että ihmisten täytyy napauttaa mediaa ennen kuin sen esikatselu näytetään. Voit merkitä median itse arkaluonteiseksi, kun julkaiset tulevaisuudessa.
|
||||
sensitive: Tästä lähtien kaikki ladatut mediatiedostot merkitään arkaluonteisiksi ja piilotetaan napsautusvaroituksen taakse.
|
||||
sensitive: Tästä lähtien kaikki lähetetyt mediatiedostot merkitään arkaluonteisiksi ja piilotetaan napsautusvaroituksen taakse.
|
||||
silence: Voit edelleen käyttää tiliäsi, mutta vain sinua jo seuraavat käyttäjät näkevät julkaisusi tällä palvelimella ja sinut voidaan sulkea pois eri löytämisominaisuuksista. Toiset voivat kuitenkin edelleen seurata sinua manuaalisesti.
|
||||
suspend: Et voi enää käyttää tiliäsi, eivätkä profiilisi ja muut tiedot ole enää käytettävissä. Voit silti kirjautua sisään pyytääksesi tietojesi varmuuskopiota, kunnes tiedot on poistettu kokonaan noin 30 päivän kuluttua. Säilytämme kuitenkin joitain perustietoja, jotka estävät sinua kiertämästä jäädytystä.
|
||||
reason: 'Syy:'
|
||||
|
|
|
@ -885,7 +885,23 @@ fo:
|
|||
action: Kekka her fyri at fáa fleiri upplýsingar
|
||||
message_html: "<strong>Objekt-goymslan hjá tær er skeivt uppsett. Privatlívið hjá brúkarunum hjá tær er í vanda.</strong>"
|
||||
tags:
|
||||
moderation:
|
||||
not_trendable: Ikki rákbært
|
||||
not_usable: Kann ikki brúkast
|
||||
pending_review: Viðgerð í gongd
|
||||
review_requested: Viðgerð umbiðin
|
||||
reviewed: Viðgjørt
|
||||
title: Støða
|
||||
trendable: Rákbært
|
||||
unreviewed: Ikki viðgjørt
|
||||
usable: Ónýtiligt
|
||||
name: Navn
|
||||
newest: Nýggjasta/u
|
||||
oldest: Elsta/u
|
||||
reset: Endurstilla
|
||||
review: Eftirkanna støðu
|
||||
search: Leita
|
||||
title: Frámerki
|
||||
updated_msg: Frámerkjastillingar dagførdar
|
||||
title: Umsiting
|
||||
trends:
|
||||
|
|
|
@ -885,7 +885,23 @@ gl:
|
|||
action: Mira aquí para máis información
|
||||
message_html: "<strong>A almacenaxe de obxectos está mal configurada. A privacidade das usuarias está en risco.</strong>"
|
||||
tags:
|
||||
moderation:
|
||||
not_trendable: Non permitir en voga
|
||||
not_usable: Non utilizable
|
||||
pending_review: Pendente de revisión
|
||||
review_requested: Revisión solicitada
|
||||
reviewed: Revisada
|
||||
title: Estado
|
||||
trendable: Permitir en voga
|
||||
unreviewed: Sen revisar
|
||||
usable: Utilizable
|
||||
name: Nome
|
||||
newest: Máis recente
|
||||
oldest: Máis antiga
|
||||
reset: Restabelecer
|
||||
review: Estado de revisión
|
||||
search: Buscar
|
||||
title: Cancelos
|
||||
updated_msg: Actualizaronse os axustes dos cancelos
|
||||
title: Administración
|
||||
trends:
|
||||
|
|
|
@ -40,6 +40,23 @@ hi:
|
|||
upload_check_privacy_error_object_storage:
|
||||
action: अधिक जानकारी हेतु यहां क्लिक करें।
|
||||
message_html: "<strong> आपके वेब सर्वर का कन्फिगरेशन सही नहीं है। उपयोगकर्ताओं की निजता खतरे में है। </strong>"
|
||||
tags:
|
||||
moderation:
|
||||
not_trendable: ट्रेंड नहीं किया जाएगा
|
||||
not_usable: उपयोगी नहीं
|
||||
pending_review: लंबित समीक्षा
|
||||
review_requested: समीक्षा की मांग की गई
|
||||
reviewed: समीक्षित
|
||||
title: स्टेटस
|
||||
trendable: चर्चा में
|
||||
unreviewed: गैर समीक्षित
|
||||
usable: उपयुक्त
|
||||
name: नाम
|
||||
newest: नवीनतम
|
||||
oldest: सबसे पुराने
|
||||
reset: पुनः नियत करें
|
||||
search: खोजें
|
||||
title: हैशटैग
|
||||
redirects:
|
||||
prompt: अगर आपको इस लिंक पर भरोसा है तो आगे बढ़ने के लिए इसे क्लिक करें
|
||||
title: आप इस %{instance} को छोड़ने वाले हैं
|
||||
|
|
|
@ -885,7 +885,23 @@ hu:
|
|||
action: Itt találsz több információt
|
||||
message_html: "<strong>Az objektumtárolód félre van konfigurálva. Kockázat merül fel a felhasználóid adatainak biztonságával kapcsolatban.</strong>"
|
||||
tags:
|
||||
moderation:
|
||||
not_trendable: Nem lehet felkapott
|
||||
not_usable: Nem használható
|
||||
pending_review: Ellenőrzésre vár
|
||||
review_requested: Ellenőrzés kérve
|
||||
reviewed: Ellenőrizve
|
||||
title: Állapot
|
||||
trendable: Lehet felkapott
|
||||
unreviewed: Nem ellenőrzött
|
||||
usable: Használható
|
||||
name: Név
|
||||
newest: Legújabb
|
||||
oldest: Legrégebbi
|
||||
reset: Visszaállítás
|
||||
review: Engedélyezés állapota
|
||||
search: Keresés
|
||||
title: Hashtagek
|
||||
updated_msg: A hashtag beállításokat sikeresen frissítettük
|
||||
title: Karbantartás
|
||||
trends:
|
||||
|
|
|
@ -882,7 +882,10 @@ ia:
|
|||
action: Consulta hic pro plus information
|
||||
message_html: "<strong>Tu immagazinage de objectos es mal configurate. Le confidentialitate de tu usatores es in risco.</strong>"
|
||||
tags:
|
||||
name: Nomine
|
||||
review: Revide le stato
|
||||
search: Cercar
|
||||
title: Hashtags
|
||||
updated_msg: Parametros de hashtag actualisate con successo
|
||||
title: Administration
|
||||
trends:
|
||||
|
|
|
@ -887,7 +887,23 @@ is:
|
|||
action: Skoðaðu hér til að fá frekari upplýsingar
|
||||
message_html: "<strong>Gagnageymslan þín er ekki rétt stillt. Friðhelgi notendanna þinna gæti verið í hættu.</strong>"
|
||||
tags:
|
||||
moderation:
|
||||
not_trendable: Getur ekki orðið vinsælt
|
||||
not_usable: Ekki nothæft
|
||||
pending_review: Bíður eftir yfirferð
|
||||
review_requested: Beðið um yfirferð
|
||||
reviewed: Yfirfarið
|
||||
title: Staða
|
||||
trendable: Getur orðið vinsælt
|
||||
unreviewed: Óyfirfarið
|
||||
usable: Nothæft
|
||||
name: Nafn
|
||||
newest: Nýjast
|
||||
oldest: Elsta
|
||||
reset: Endurstilla
|
||||
review: Yfirfara stöðufærslu
|
||||
search: Leita
|
||||
title: Myllumerki
|
||||
updated_msg: Það tókst að uppfæra stillingar myllumerkja
|
||||
title: Stjórnendur
|
||||
trends:
|
||||
|
|
|
@ -885,7 +885,23 @@ it:
|
|||
action: Controlla qui per maggiori informazioni
|
||||
message_html: "<strong>La tua archiviazione oggetti è mal configurata. La privacy dei tuoi utenti è a rischio.</strong>"
|
||||
tags:
|
||||
moderation:
|
||||
not_trendable: Non di tendenza
|
||||
not_usable: Non utilizzabile
|
||||
pending_review: In attesa di revisione
|
||||
review_requested: Revisione richiesta
|
||||
reviewed: Controllato
|
||||
title: Stato
|
||||
trendable: Di tendenza
|
||||
unreviewed: Non revisionato
|
||||
usable: Utilizzabile
|
||||
name: Nome
|
||||
newest: Più recenti
|
||||
oldest: Più vecchio
|
||||
reset: Ripristina
|
||||
review: Esamina status
|
||||
search: Cerca
|
||||
title: Hashtag
|
||||
updated_msg: Impostazioni hashtag aggiornate con successo
|
||||
title: Amministrazione
|
||||
trends:
|
||||
|
|
|
@ -611,6 +611,23 @@ lt:
|
|||
message_html: Tavo Elasticsearch klasteris turi tik vieną mazgą, <code>ES_PRESET</code> turėtų būti nustatyta į <code>single_node_cluster</code>.
|
||||
elasticsearch_running_check:
|
||||
message_html: Nepavyko prijungti prie Elasticsearch. Patikrink, ar ji veikia, arba išjunk viso teksto paiešką.
|
||||
tags:
|
||||
moderation:
|
||||
not_trendable: Netendencinga
|
||||
not_usable: Nenaudojama
|
||||
pending_review: Laukiama peržiūros
|
||||
review_requested: Paprašyta peržiūros
|
||||
reviewed: Peržiūrėta
|
||||
title: Statusas
|
||||
trendable: Tendencinga
|
||||
unreviewed: Neperžiūrėta
|
||||
usable: Naudojama
|
||||
name: Pavadinimas
|
||||
newest: Naujausias
|
||||
oldest: Seniausias
|
||||
reset: Atkurti
|
||||
search: Paieška
|
||||
title: Saitažodžiai
|
||||
title: Administracija
|
||||
trends:
|
||||
allow: Leisti
|
||||
|
|
|
@ -885,7 +885,23 @@ nl:
|
|||
action: Klik hier voor meer informatie
|
||||
message_html: "<strong>Jouw objectopslag is verkeerd geconfigureerd. De privacy van je gebruikers is in gevaar.</strong>"
|
||||
tags:
|
||||
moderation:
|
||||
not_trendable: Niet trendbaar
|
||||
not_usable: Niet bruikbaar
|
||||
pending_review: In afwachting van beoordeling
|
||||
review_requested: Beoordeling aangevraagd
|
||||
reviewed: Beoordeeld
|
||||
title: Status
|
||||
trendable: Trendbaar
|
||||
unreviewed: Onbeoordeeld
|
||||
usable: Bruikbaar
|
||||
name: Naam
|
||||
newest: Nieuwste
|
||||
oldest: Oudste
|
||||
reset: Opnieuw
|
||||
review: Status beoordelen
|
||||
search: Zoeken
|
||||
title: Hashtags
|
||||
updated_msg: Instellingen hashtag succesvol bijgewerkt
|
||||
title: Beheer
|
||||
trends:
|
||||
|
|
|
@ -913,7 +913,23 @@ pl:
|
|||
action: Kliknij tutaj, aby dowiedzieć się więcej
|
||||
message_html: "<strong>Pamięć obiektu jest nieprawidłowa. Prywatność twoich użytkowników jest zagrożona.</strong>"
|
||||
tags:
|
||||
moderation:
|
||||
not_trendable: Nie mogą trendować
|
||||
not_usable: Nieużywalne
|
||||
pending_review: Oczekuje na przejrzenie
|
||||
review_requested: Prośba o przejrzenie
|
||||
reviewed: Przejrzane
|
||||
title: Status
|
||||
trendable: Mogą trendować
|
||||
unreviewed: Nieprzejrzane
|
||||
usable: Używalne
|
||||
name: Nazwa
|
||||
newest: Najnowsze
|
||||
oldest: Najstarsze
|
||||
reset: Resetuj
|
||||
review: Stan przeglądu
|
||||
search: Szukaj
|
||||
title: Hashtagi
|
||||
updated_msg: Pomyślnie uaktualniono ustawienia hashtagów
|
||||
title: Administracja
|
||||
trends:
|
||||
|
|
|
@ -885,7 +885,23 @@ pt-PT:
|
|||
action: Verifique aqui para mais informações
|
||||
message_html: "<strong>O seu armazenamento de objetos está mal configurado. A privacidade dos seus utilizadores está em risco.</strong>"
|
||||
tags:
|
||||
moderation:
|
||||
not_trendable: Não pode ser tendência
|
||||
not_usable: Não utilizável
|
||||
pending_review: Pendente de revisão
|
||||
review_requested: Revisão solicitada
|
||||
reviewed: Revista
|
||||
title: Estado
|
||||
trendable: Pode ser tendência
|
||||
unreviewed: Não revista
|
||||
usable: Utilizável
|
||||
name: Nome
|
||||
newest: Mais recente
|
||||
oldest: Mais antiga
|
||||
reset: Repor
|
||||
review: Estado da revisão
|
||||
search: Pesquisar
|
||||
title: Hashtags
|
||||
updated_msg: 'Definições de #etiquetas correctamente actualizadas'
|
||||
title: Administração
|
||||
trends:
|
||||
|
|
|
@ -271,7 +271,6 @@ an:
|
|||
listable: Permitir que esta etiqueta amaneixca en as busquedas y en o directorio d'o perfil
|
||||
name: Etiqueta
|
||||
trendable: Permitir que esta etiqueta amaneixca baixo tendencias
|
||||
usable: Permitir a las publicacions usar esta etiqueta
|
||||
user:
|
||||
role: Rol
|
||||
user_role:
|
||||
|
|
|
@ -311,7 +311,6 @@ ar:
|
|||
listable: اسمح لهذا الوسم بالظهور في البحث وفي دليل الصفحات التعريفية
|
||||
name: الوسم
|
||||
trendable: السماح لهذه الكلمة المفتاحية بالظهور تحت المتداوَلة
|
||||
usable: اسمح للمنشورات استخدام هذا الوسم
|
||||
user:
|
||||
role: الدور
|
||||
time_zone: النطاق الزمني
|
||||
|
|
|
@ -180,7 +180,6 @@ ast:
|
|||
listable: Permitir qu'esta etiqueta apaeza nes busques y nes suxerencies
|
||||
name: Etiqueta
|
||||
trendable: Permitir qu'esta etiqueta apaeza nes tendencies
|
||||
usable: Permitir que los artículos usen esta etiqueta
|
||||
user:
|
||||
role: Rol
|
||||
time_zone: Fusu horariu
|
||||
|
|
|
@ -311,7 +311,6 @@ be:
|
|||
listable: Дазволіць паказ хэштэгу ў пошуку і ў каталозе профіляў
|
||||
name: Хэштэг
|
||||
trendable: Дазволіць паказ гэтага хэштэга ў трэндах
|
||||
usable: Дазволіць выкарыстанне хэштэгу ў допісах
|
||||
user:
|
||||
role: Роля
|
||||
time_zone: Часавы пояс
|
||||
|
|
|
@ -314,7 +314,7 @@ bg:
|
|||
listable: Позволяване на хаштага да се появява при търсене и предложения
|
||||
name: Хаштаг
|
||||
trendable: Показване на хаштага да се появява под нашумели
|
||||
usable: Позволяване на публикациите да употребяват този хаштаг
|
||||
usable: Позволяване на публикациите да употребяват този хаштаг локално
|
||||
user:
|
||||
role: Роля
|
||||
time_zone: Часова зона
|
||||
|
|
|
@ -72,7 +72,6 @@ br:
|
|||
tag:
|
||||
name: Hashtag
|
||||
trendable: Aotren an hashtag-mañ da zont war wel dindan tuadurioù
|
||||
usable: Aotren an embannadurioù da implijout an hashtag-mañ
|
||||
user:
|
||||
role: Roll
|
||||
time_zone: Gwerzhid eur
|
||||
|
|
|
@ -314,7 +314,7 @@ ca:
|
|||
listable: Permet que aquesta etiqueta aparegui en les cerques i en el directori de perfils
|
||||
name: Etiqueta
|
||||
trendable: Permet que aquesta etiqueta aparegui en les tendències
|
||||
usable: Permet als tuts emprar aquesta etiqueta
|
||||
usable: Permet a les publicacions emprar aquesta etiqueta localment
|
||||
user:
|
||||
role: Rol
|
||||
time_zone: Zona horària
|
||||
|
|
|
@ -182,7 +182,6 @@ ckb:
|
|||
listable: ڕیگەبدە ئەم هاشتاگە لە پێرستی هەڵبژاردەی بەکارهێنەران و پەڕەی گەڕان نیشان بدرێت
|
||||
name: هەشتاگ
|
||||
trendable: ڕێگەبدە ئەم هەشتاگە لە نووسراوەی بەرچاوکراو نیسان بدرێت
|
||||
usable: ڕێگەبدە بە توتەکان بۆ بەکارهێنانی ئەم هەشتاگە
|
||||
'no': نە
|
||||
recommended: پێشنیارکراوە
|
||||
required:
|
||||
|
|
|
@ -186,7 +186,6 @@ co:
|
|||
listable: Auturizà stu hashtag à esse vistu nant'à l'annuariu di i prufili
|
||||
name: Hashtag
|
||||
trendable: Auturizà stu hashtag à esse vistu in e tendenze
|
||||
usable: Auturizà i statuti à utilizà stu hashtag
|
||||
'no': Nò
|
||||
recommended: Ricumandati
|
||||
required:
|
||||
|
|
|
@ -311,7 +311,6 @@ cs:
|
|||
listable: Povolit zobrazení tohoto hashtagu ve vyhledávání a návrzích
|
||||
name: Hashtag
|
||||
trendable: Povolit zobrazení tohoto hashtagu mezi populárními
|
||||
usable: Povolit používat tento hashtag v příspěvcích
|
||||
user:
|
||||
role: Role
|
||||
time_zone: Časové pásmo
|
||||
|
|
|
@ -314,7 +314,6 @@ cy:
|
|||
listable: Caniatáu i'r hashnod hwn ymddangos mewn chwiliadau ac awgrymiadau
|
||||
name: Hashnod
|
||||
trendable: Caniatáu i'r hashnod hwn ymddangos o dan bynciau llosg
|
||||
usable: Caniatáu i bostiadau ddefnyddio'r hashnod hwn
|
||||
user:
|
||||
role: Rôl
|
||||
time_zone: Cylchfa amser
|
||||
|
|
|
@ -314,7 +314,7 @@ da:
|
|||
listable: Tillad visning af dette hashtag i søgninger og forslag
|
||||
name: Hashtag
|
||||
trendable: Tillad visning af dette hashtag under trends
|
||||
usable: Tillad indlæg at benytte dette hashtag
|
||||
usable: Tillad indlæg at benytte dette hashtag lokalt
|
||||
user:
|
||||
role: Rolle
|
||||
time_zone: Tidszone
|
||||
|
|
|
@ -314,7 +314,7 @@ de:
|
|||
listable: Erlaube, dass dieser Hashtag in Suchen und Empfehlungen erscheint
|
||||
name: Hashtag
|
||||
trendable: Erlaube, dass dieser Hashtag in den Trends erscheint
|
||||
usable: Erlaube, dass dieser Hashtag in Beiträgen erscheint
|
||||
usable: Beiträge dürfen diesen Hashtag lokal verwenden
|
||||
user:
|
||||
role: Rolle
|
||||
time_zone: Zeitzone
|
||||
|
|
|
@ -276,7 +276,6 @@ el:
|
|||
listable: Εμφάνιση αυτής της ετικέτας στο δημόσιο κατάλογο
|
||||
name: Ετικέτα
|
||||
trendable: Εμφάνιση της ετικέτας στις τάσεις
|
||||
usable: Χρήση της ετικέτας σε τουτ
|
||||
user:
|
||||
role: Ρόλος
|
||||
user_role:
|
||||
|
|
|
@ -314,7 +314,6 @@ en-GB:
|
|||
listable: Allow this hashtag to appear in searches and suggestions
|
||||
name: Hashtag
|
||||
trendable: Allow this hashtag to appear under trends
|
||||
usable: Allow posts to use this hashtag
|
||||
user:
|
||||
role: Role
|
||||
time_zone: Time Zone
|
||||
|
|
|
@ -314,7 +314,7 @@ en:
|
|||
listable: Allow this hashtag to appear in searches and suggestions
|
||||
name: Hashtag
|
||||
trendable: Allow this hashtag to appear under trends
|
||||
usable: Allow posts to use this hashtag
|
||||
usable: Allow posts to use this hashtag locally
|
||||
user:
|
||||
role: Role
|
||||
time_zone: Time zone
|
||||
|
|
|
@ -303,7 +303,6 @@ eo:
|
|||
listable: Permesi ĉi tiun kradvorton aperi en serĉoj kaj sugestoj
|
||||
name: Kradvorto
|
||||
trendable: Permesi al ĉi tiu kradvorto aperi en furoraĵoj
|
||||
usable: Permesi mesaĝojn uzi ĉi tiun kradvorton
|
||||
user:
|
||||
role: Rolo
|
||||
time_zone: Horzono
|
||||
|
|
|
@ -314,7 +314,7 @@ es-AR:
|
|||
listable: Permitir que esta etiqueta aparezca en las búsquedas y en las sugerencias
|
||||
name: Etiqueta
|
||||
trendable: Permitir que esta etiqueta aparezca bajo tendencias
|
||||
usable: Permitir a los mensajes usar esta etiqueta
|
||||
usable: Permitir que los mensajes usen esta etiqueta localmente
|
||||
user:
|
||||
role: Rol
|
||||
time_zone: Zona horaria
|
||||
|
|
|
@ -314,7 +314,6 @@ es-MX:
|
|||
listable: Permitir que esta etiqueta aparezca en las búsquedas y en el directorio del perfil
|
||||
name: Etiqueta
|
||||
trendable: Permitir que esta etiqueta aparezca bajo tendencias
|
||||
usable: Permitir a los toots usar esta etiqueta
|
||||
user:
|
||||
role: Rol
|
||||
time_zone: Zona horaria
|
||||
|
|
|
@ -314,7 +314,6 @@ es:
|
|||
listable: Permitir que esta etiqueta aparezca en las búsquedas y en el directorio del perfil
|
||||
name: Etiqueta
|
||||
trendable: Permitir que esta etiqueta aparezca bajo tendencias
|
||||
usable: Permitir a las publicaciones usar esta etiqueta
|
||||
user:
|
||||
role: Rol
|
||||
time_zone: Zona horaria
|
||||
|
|
|
@ -311,7 +311,6 @@ et:
|
|||
listable: Luba sellel sildil ilmuda profiilide kataloogis
|
||||
name: Silt
|
||||
trendable: Luba sellel sildil trendida
|
||||
usable: Luba postitustel seda silti kasutada
|
||||
user:
|
||||
role: Roll
|
||||
time_zone: Ajavöönd
|
||||
|
|
|
@ -311,7 +311,6 @@ eu:
|
|||
listable: Baimendu traola hau bilaketetan agertzea eta profilen direktorioan
|
||||
name: Traola
|
||||
trendable: Baimendu traola hau joeretan agertzea
|
||||
usable: Baimendu tootek traola hau erabiltzea
|
||||
user:
|
||||
role: Rola
|
||||
time_zone: Ordu zona
|
||||
|
|
|
@ -286,7 +286,6 @@ fa:
|
|||
listable: اجازه به این برچسب برای ظاهر شدن در جستوجوها و پیشنهادها
|
||||
name: برچسب
|
||||
trendable: بگذارید که این برچسب در موضوعات پرطرفدار دیده شود
|
||||
usable: بگذارید که این برچسب در فرستهها به کار بروند
|
||||
user:
|
||||
role: نقش
|
||||
time_zone: منطقهٔ زمانی
|
||||
|
|
|
@ -73,17 +73,17 @@ fi:
|
|||
filters:
|
||||
action: Valitse, mikä toiminto suoritetaan, kun julkaisu vastaa suodatinta
|
||||
actions:
|
||||
hide: Piilota suodatettu sisältö kokonaan ja käyttäydy ikään kuin sitä ei olisi olemassa
|
||||
hide: Piilota suodatettu sisältö kokonaan, ikään kuin sitä ei olisi olemassa
|
||||
warn: Piilota suodatettu sisältö varoituksen taakse, jossa mainitaan suodattimen nimi
|
||||
form_admin_settings:
|
||||
activity_api_enabled: Paikallisesti julkaistujen julkaisujen, aktiivisten käyttäjien ja rekisteröitymisten viikoittainen määrä
|
||||
app_icon: WEBP, PNG, GIF tai JPG. Korvaa oletusarvoisen mobiililaitteiden sovelluskuvakkeen omalla kuvakkeella.
|
||||
app_icon: WEBP, PNG, GIF tai JPG. Korvaa oletusarvoisen mobiililaitteiden sovelluskuvakkeen haluamallasi kuvakkeella.
|
||||
backups_retention_period: Käyttäjillä on mahdollisuus arkistoida julkaisujaan myöhemmin ladattaviksi. Kun kentän arvo on positiivinen, nämä arkistot poistuvat automaattisesti, kun määritetty määrä päiviä on kulunut.
|
||||
bootstrap_timeline_accounts: Nämä tilit kiinnitetään uusien käyttäjien seuraamissuositusten alkuun.
|
||||
bootstrap_timeline_accounts: Nämä tilit kiinnitetään uusien käyttäjien seurantasuositusten alkuun.
|
||||
closed_registrations_message: Näkyy, kun rekisteröityminen on suljettu
|
||||
content_cache_retention_period: Kaikki muiden palvelinten julkaisut (mukaan lukien tehostukset ja vastaukset) poistuvat, kun määritetty määrä päiviä on kulunut, lukuun ottamatta paikallisen käyttäjän vuorovaikutusta näiden julkaisujen kanssa. Tämä sisältää julkaisut, jotka paikallinen käyttäjä on merkinnyt kirjanmerkiksi tai suosikiksi. Myös yksityismaininnat eri palvelinten käyttäjien välillä menetetään, eikä niitä voi palauttaa. Tämä asetus on tarkoitettu käytettäväksi erityistapauksissa ja rikkoo monia käyttäjien odotuksia, kun sitä sovelletaan yleiskäyttöön.
|
||||
custom_css: Voit käyttää mukautettuja tyylejä Mastodonin selainversiossa.
|
||||
favicon: WEBP, PNG, GIF tai JPG. Korvaa oletusarvoisen Mastodonin sivustokuvakkeen (favicon) haluamallasi kuvakkeella.
|
||||
favicon: WEBP, PNG, GIF tai JPG. Korvaa oletusarvoisen Mastodonin sivustokuvakkeen haluamallasi kuvakkeella.
|
||||
mascot: Ohittaa kuvituksen edistyneessä selainkäyttöliittymässä.
|
||||
media_cache_retention_period: Etäkäyttäjien tekemien julkaisujen mediatiedostot ovat välimuistissa palvelimellasi. Kun kentän arvo on positiivinen, media poistuu, kun määritetty määrä päiviä on kulunut. Jos mediaa pyydetään sen poistamisen jälkeen, se ladataan uudelleen, jos lähdesisältö on vielä saatavilla. Koska linkkien esikatselun kyselyitä kolmansien osapuolien sivustoille on rajoitettu, on suositeltavaa asettaa tämä arvo vähintään 14 päivään, tai linkkien kortteja ei päivitetä pyynnöstä ennen tätä ajankohtaa.
|
||||
peers_api_enabled: Luettelo verkkotunnuksista, jotka tämä palvelin on kohdannut fediversumissa. Se ei kerro, federoitko tietyn palvelimen kanssa, vaan että palvelimesi on ylipäätään tietoinen siitä. Tätä tietoa käytetään palveluissa, jotka keräävät tilastoja federoinnista yleisellä tasolla.
|
||||
|
@ -109,14 +109,14 @@ fi:
|
|||
invite_request:
|
||||
text: Tämä auttaa meitä arvioimaan hakemustasi
|
||||
ip_block:
|
||||
comment: Valinnainen. Muista miksi lisäsit tämän säännön.
|
||||
comment: Valinnainen. Muista, miksi lisäsit tämän säännön.
|
||||
expires_in: IP-osoitteet ovat rajallinen resurssi – joskus niitä jaetaan eteenpäin, ja ne vaihtavat usein omistajaa. Niinpä epämääräisiä IP-lohkoja ei suositella.
|
||||
ip: Kirjoita IPv4- tai IPv6-osoite. Voit estää kokonaisia IP-osoitealueita CIDR-syntaksin avulla. Varo lukitsemasta itseäsi ulos!
|
||||
severities:
|
||||
no_access: Estä pääsy kaikkiin resursseihin
|
||||
sign_up_block: Uudet rekisteröitymiset eivät ole mahdollisia
|
||||
sign_up_requires_approval: Uudet rekisteröitymiset edellyttävät hyväksyntääsi
|
||||
severity: Valitse, mitä tapahtuu tämän IP-osoitteen pyynnöille
|
||||
severity: Valitse, mitä tapahtuu tästä IP-osoitteesta tuleville pyynnöille
|
||||
rule:
|
||||
hint: Vapaaehtoinen. Anna yksityiskohtaisempia tietoja säännöstä
|
||||
text: Kuvaile sääntöä tai edellytystä palvelimesi käyttäjille. Suosi tiivistä, yksinkertaista ilmaisua
|
||||
|
@ -151,9 +151,9 @@ fi:
|
|||
show_collections: Näytä seuratut ja seuraajat profiilissa
|
||||
unlocked: Hyväksy uudet seuraajat automaattisesti
|
||||
account_alias:
|
||||
acct: Vanhan tilin käyttäjänimi
|
||||
acct: Vanhan tilin käyttäjätunnus
|
||||
account_migration:
|
||||
acct: Uuden tilin käyttäjänimi
|
||||
acct: Uuden tilin käyttäjätunnus
|
||||
account_warning_preset:
|
||||
text: Esimääritetty teksti
|
||||
title: Nimi
|
||||
|
@ -249,7 +249,7 @@ fi:
|
|||
closed_registrations_message: Mukautettu viesti, kun rekisteröityminen ei ole saatavilla
|
||||
content_cache_retention_period: Etäsisällön säilytysaika
|
||||
custom_css: Mukautettu CSS
|
||||
favicon: Suosikkikuvake
|
||||
favicon: Sivustokuvake
|
||||
mascot: Mukautettu maskotti (vanhentunut)
|
||||
media_cache_retention_period: Mediasisällön välimuistin säilytysaika
|
||||
peers_api_enabled: Julkaise löydettyjen palvelinten luettelo ohjelmointirajapinnassa
|
||||
|
@ -314,7 +314,7 @@ fi:
|
|||
listable: Salli tämän aihetunnisteen näkyä hauissa ja ehdotuksissa
|
||||
name: Aihetunniste
|
||||
trendable: Salli tämän aihetunnisteen näkyä trendeissä
|
||||
usable: Salli julkaisujen käyttää tätä aihetunnistetta
|
||||
usable: Salli julkaisujen käyttää tätä aihetunnistetta paikallisesti
|
||||
user:
|
||||
role: Rooli
|
||||
time_zone: Aikavyöhyke
|
||||
|
|
|
@ -314,7 +314,7 @@ fo:
|
|||
listable: Loyva hesum tvíkrossið, at verða vístur í leitingum og uppskotum
|
||||
name: Tvíkrossur
|
||||
trendable: Loyv hesum frámerki at síggjast undir rákum
|
||||
usable: Loyva uppsløgum at brúka hendan tvíkross
|
||||
usable: Loyv postum at brúka hetta frámerki lokalt
|
||||
user:
|
||||
role: Leiklutur
|
||||
time_zone: Tíðarsona
|
||||
|
|
|
@ -305,7 +305,6 @@ fr-CA:
|
|||
listable: Autoriser ce hashtag à apparaître dans les recherches et dans l’annuaire des profils
|
||||
name: Mot-clic
|
||||
trendable: Autoriser ce hashtag à apparaitre dans les tendances
|
||||
usable: Autoriser les messages à utiliser ce hashtag
|
||||
user:
|
||||
role: Rôle
|
||||
time_zone: Fuseau horaire
|
||||
|
|
|
@ -305,7 +305,6 @@ fr:
|
|||
listable: Autoriser ce hashtag à apparaître dans les recherches et dans l’annuaire des profils
|
||||
name: Hashtag
|
||||
trendable: Autoriser ce hashtag à apparaitre dans les tendances
|
||||
usable: Autoriser les messages à utiliser ce hashtag
|
||||
user:
|
||||
role: Rôle
|
||||
time_zone: Fuseau horaire
|
||||
|
|
|
@ -314,7 +314,6 @@ fy:
|
|||
listable: Tastean dat dizze hashtag yn sykopdrachten en oanrekommandaasjes te sjen is
|
||||
name: Hashtag
|
||||
trendable: Goedkarre dat dizze hashtag ûnder trends te sjen is
|
||||
usable: Tastean dat dizze hashtag yn berjochten brûkt wurde mei
|
||||
user:
|
||||
role: Rol
|
||||
time_zone: Tiidsône
|
||||
|
|
|
@ -314,7 +314,6 @@ ga:
|
|||
listable: Lig don hashchlib seo a bheith le feiceáil i gcuardach agus i moltaí
|
||||
name: Haischlib
|
||||
trendable: Lig don haischlib seo a bheith le feiceáil faoi threochtaí
|
||||
usable: Lig do phostálacha an hashchlib seo a úsáid
|
||||
user:
|
||||
role: Ról
|
||||
time_zone: Crios ama
|
||||
|
|
|
@ -305,7 +305,6 @@ gd:
|
|||
listable: Faodaidh an taga hais seo nochdadh ann an toraidhean luirg ’s am measg nam molaidhean
|
||||
name: Taga hais
|
||||
trendable: Faodaidh an taga hais seo nochdadh am measg nan treandaichean
|
||||
usable: Faodaidh postaichean an taga hais seo a chleachdadh
|
||||
user:
|
||||
role: Dreuchd
|
||||
time_zone: Roinn-tìde
|
||||
|
|
|
@ -314,7 +314,7 @@ gl:
|
|||
listable: Permitir que este cancelo apareza en buscas e no directorio de perfil
|
||||
name: Cancelo
|
||||
trendable: Permitir que este cancelo apareza en tendencias
|
||||
usable: Permitir que as publicacións utilicen este cancelo
|
||||
usable: Permitir que as publicacións usen este cancelo localmente
|
||||
user:
|
||||
role: Rol
|
||||
time_zone: Fuso horario
|
||||
|
|
|
@ -314,7 +314,6 @@ he:
|
|||
listable: הרשה/י לתגית זו להופיע בחיפושים והצעות
|
||||
name: תגית
|
||||
trendable: הרשה/י לתגית זו להופיע תחת נושאים חמים
|
||||
usable: הרשה/י להודעות להכיל תגית זו
|
||||
user:
|
||||
role: תפקיד
|
||||
time_zone: אזור זמן
|
||||
|
|
|
@ -1 +1,6 @@
|
|||
---
|
||||
hi:
|
||||
simple_form:
|
||||
labels:
|
||||
tag:
|
||||
usable: पोस्ट को ये हैशटैग स्थानीय उपयोग करने दें
|
||||
|
|
|
@ -314,7 +314,7 @@ hu:
|
|||
listable: A hashtag megjelenhet a profiladatbázisban
|
||||
name: Hashtag
|
||||
trendable: A hashtag megjelenhet a felkapottak között
|
||||
usable: Bejegyzések használhatják ezt a hashtaget
|
||||
usable: A helyi bejegyzések használhatják ezt a hashtaget
|
||||
user:
|
||||
role: Szerep
|
||||
time_zone: Időzóna
|
||||
|
|
|
@ -187,7 +187,6 @@ hy:
|
|||
listable: Թոյլատրել, որ այս պիտակը յայտնուի որոնումների եւ հաշուի մատեանում
|
||||
name: Պիտակ
|
||||
trendable: Թոյլատրել, որ այս պիտակը յայտնուի թրենդներում
|
||||
usable: Թոյլատրել գրառումներին օգտագործել այս պիտակը
|
||||
'no': Ոչ
|
||||
recommended: Խորհուրդ է տրվում
|
||||
required:
|
||||
|
|
|
@ -313,7 +313,6 @@ ia:
|
|||
listable: Permitter a iste hashtag apparer in le recercas e suggestiones
|
||||
name: Hashtag
|
||||
trendable: Permitter a iste hashtag de sub tendentias
|
||||
usable: Permitter al messages usar iste hashtag
|
||||
user:
|
||||
role: Rolo
|
||||
time_zone: Fuso horari
|
||||
|
|
|
@ -268,7 +268,6 @@ id:
|
|||
listable: Izinkan tagar ini muncul di penelusuran dan di direktori profil
|
||||
name: Tagar
|
||||
trendable: Izinkan tagar ini muncul di bawah tren
|
||||
usable: Izinkan toot memakai tagar ini
|
||||
user:
|
||||
role: Peran
|
||||
user_role:
|
||||
|
|
|
@ -311,7 +311,6 @@ ie:
|
|||
listable: Permisser que ti hashtag apari in serchas e suggestiones
|
||||
name: Hashtag
|
||||
trendable: Permisse que ti-ci hashtag apari sub tendenties
|
||||
usable: Permisser que postas usa ti hashtag
|
||||
user:
|
||||
role: Rol
|
||||
time_zone: Zone temporal
|
||||
|
|
|
@ -300,7 +300,6 @@ io:
|
|||
listable: Permisez ca hashtago aparar en trovaji e sugestaji
|
||||
name: Hashtago
|
||||
trendable: Permisez ca hashtago aparar che tendenci
|
||||
usable: Permisez posti uzar ca hashtago
|
||||
user:
|
||||
role: Rolo
|
||||
time_zone: Klokozono
|
||||
|
|
|
@ -314,7 +314,7 @@ is:
|
|||
listable: Leyfa þessu myllumerki að birtast í leitum og í persónusniðamöppunni
|
||||
name: Myllumerki
|
||||
trendable: Leyfa þessu myllumerki að birtast undir vinsælu efni
|
||||
usable: Leyfa færslum að nota þetta myllumerki
|
||||
usable: Leyfa færslum að nota þetta myllumerki staðvært
|
||||
user:
|
||||
role: Hlutverk
|
||||
time_zone: Tímabelti
|
||||
|
|
|
@ -314,7 +314,7 @@ it:
|
|||
listable: Permetti a questo hashtag di apparire nella directory dei profili
|
||||
name: Hashtag
|
||||
trendable: Permetti a questo hashtag di apparire nelle tendenze
|
||||
usable: Permetti ai post di usare questo hashtag
|
||||
usable: Permetti ai post di utilizzare questo hashtag localmente
|
||||
user:
|
||||
role: Ruolo
|
||||
time_zone: Fuso orario
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue