mirror of
https://git.bsd.gay/fef/nyastodon.git
synced 2024-12-25 20:13:43 +01:00
Merge commit '2fe1b8d1695d8faa452a69872fde94ccc4611576' into glitch-soc/merge-upstream
Conflicts: - `app/helpers/application_helper.rb`: Not a real conflict, upstream added helpers right next to glitch-soc only helpers. Added upstream's helpers. - `spec/models/status_spec.rb`: Not a real conflict, upstream added specs right next to glitch-soc only specs. Added upstream's tests.
This commit is contained in:
commit
016d194274
58 changed files with 1577 additions and 374 deletions
20
Gemfile.lock
20
Gemfile.lock
|
@ -167,9 +167,9 @@ GEM
|
|||
activesupport
|
||||
cbor (0.5.9.8)
|
||||
charlock_holmes (0.7.7)
|
||||
chewy (7.5.1)
|
||||
chewy (7.6.0)
|
||||
activesupport (>= 5.2)
|
||||
elasticsearch (>= 7.12.0, < 7.14.0)
|
||||
elasticsearch (>= 7.14.0, < 8)
|
||||
elasticsearch-dsl
|
||||
chunky_png (1.4.0)
|
||||
climate_control (1.2.0)
|
||||
|
@ -220,14 +220,14 @@ GEM
|
|||
dotenv (3.1.1)
|
||||
drb (2.2.1)
|
||||
ed25519 (1.3.0)
|
||||
elasticsearch (7.13.3)
|
||||
elasticsearch-api (= 7.13.3)
|
||||
elasticsearch-transport (= 7.13.3)
|
||||
elasticsearch-api (7.13.3)
|
||||
elasticsearch (7.17.10)
|
||||
elasticsearch-api (= 7.17.10)
|
||||
elasticsearch-transport (= 7.17.10)
|
||||
elasticsearch-api (7.17.10)
|
||||
multi_json
|
||||
elasticsearch-dsl (0.1.10)
|
||||
elasticsearch-transport (7.13.3)
|
||||
faraday (~> 1)
|
||||
elasticsearch-transport (7.17.10)
|
||||
faraday (>= 1, < 3)
|
||||
multi_json
|
||||
email_spec (2.2.2)
|
||||
htmlentities (~> 4.3.3)
|
||||
|
@ -346,7 +346,7 @@ GEM
|
|||
activesupport (>= 3.0)
|
||||
nokogiri (>= 1.6)
|
||||
io-console (0.7.2)
|
||||
irb (1.13.0)
|
||||
irb (1.13.1)
|
||||
rdoc (>= 4.0.0)
|
||||
reline (>= 0.4.2)
|
||||
jmespath (1.6.2)
|
||||
|
@ -601,7 +601,7 @@ GEM
|
|||
redlock (1.3.2)
|
||||
redis (>= 3.0.0, < 6.0)
|
||||
regexp_parser (2.9.0)
|
||||
reline (0.5.4)
|
||||
reline (0.5.5)
|
||||
io-console (~> 0.5)
|
||||
request_store (1.6.0)
|
||||
rack (>= 1.4)
|
||||
|
|
|
@ -9,7 +9,7 @@ module Admin
|
|||
|
||||
@site_upload.destroy!
|
||||
|
||||
redirect_to admin_settings_path, notice: I18n.t('admin.site_uploads.destroyed_msg')
|
||||
redirect_back fallback_location: admin_settings_path, notice: I18n.t('admin.site_uploads.destroyed_msg')
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -9,16 +9,22 @@ class Api::V1::AccountsController < Api::BaseController
|
|||
before_action -> { doorkeeper_authorize! :follow, :write, :'write:blocks' }, only: [:block, :unblock]
|
||||
before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, only: [:create]
|
||||
|
||||
before_action :require_user!, except: [:show, :create]
|
||||
before_action :set_account, except: [:create]
|
||||
before_action :check_account_approval, except: [:create]
|
||||
before_action :check_account_confirmation, except: [:create]
|
||||
before_action :require_user!, except: [:index, :show, :create]
|
||||
before_action :set_account, except: [:index, :create]
|
||||
before_action :set_accounts, only: [:index]
|
||||
before_action :check_account_approval, except: [:index, :create]
|
||||
before_action :check_account_confirmation, except: [:index, :create]
|
||||
before_action :check_enabled_registrations, only: [:create]
|
||||
before_action :check_accounts_limit, only: [:index]
|
||||
|
||||
skip_before_action :require_authenticated_user!, only: :create
|
||||
|
||||
override_rate_limit_headers :follow, family: :follows
|
||||
|
||||
def index
|
||||
render json: @accounts, each_serializer: REST::AccountSerializer
|
||||
end
|
||||
|
||||
def show
|
||||
cache_if_unauthenticated!
|
||||
render json: @account, serializer: REST::AccountSerializer
|
||||
|
@ -79,6 +85,10 @@ class Api::V1::AccountsController < Api::BaseController
|
|||
@account = Account.find(params[:id])
|
||||
end
|
||||
|
||||
def set_accounts
|
||||
@accounts = Account.where(id: account_ids).without_unapproved
|
||||
end
|
||||
|
||||
def check_account_approval
|
||||
raise(ActiveRecord::RecordNotFound) if @account.local? && @account.user_pending?
|
||||
end
|
||||
|
@ -87,10 +97,22 @@ class Api::V1::AccountsController < Api::BaseController
|
|||
raise(ActiveRecord::RecordNotFound) if @account.local? && !@account.user_confirmed?
|
||||
end
|
||||
|
||||
def check_accounts_limit
|
||||
raise(Mastodon::ValidationError) if account_ids.size > DEFAULT_ACCOUNTS_LIMIT
|
||||
end
|
||||
|
||||
def relationships(**options)
|
||||
AccountRelationshipsPresenter.new([@account], current_user.account_id, **options)
|
||||
end
|
||||
|
||||
def account_ids
|
||||
Array(accounts_params[:ids]).uniq.map(&:to_i)
|
||||
end
|
||||
|
||||
def accounts_params
|
||||
params.permit(ids: [])
|
||||
end
|
||||
|
||||
def account_params
|
||||
params.permit(:username, :email, :password, :agreement, :locale, :reason, :time_zone, :invite_code)
|
||||
end
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Api::V1::Push::SubscriptionsController < Api::BaseController
|
||||
include Redisable
|
||||
include Lockable
|
||||
|
||||
before_action -> { doorkeeper_authorize! :push }
|
||||
before_action :require_user!
|
||||
before_action :set_push_subscription
|
||||
before_action :set_push_subscription, only: [:show, :update]
|
||||
before_action :check_push_subscription, only: [:show, :update]
|
||||
|
||||
def show
|
||||
|
@ -11,16 +14,18 @@ class Api::V1::Push::SubscriptionsController < Api::BaseController
|
|||
end
|
||||
|
||||
def create
|
||||
@push_subscription&.destroy!
|
||||
with_redis_lock("push_subscription:#{current_user.id}") do
|
||||
destroy_web_push_subscriptions!
|
||||
|
||||
@push_subscription = Web::PushSubscription.create!(
|
||||
endpoint: subscription_params[:endpoint],
|
||||
key_p256dh: subscription_params[:keys][:p256dh],
|
||||
key_auth: subscription_params[:keys][:auth],
|
||||
data: data_params,
|
||||
user_id: current_user.id,
|
||||
access_token_id: doorkeeper_token.id
|
||||
)
|
||||
@push_subscription = Web::PushSubscription.create!(
|
||||
endpoint: subscription_params[:endpoint],
|
||||
key_p256dh: subscription_params[:keys][:p256dh],
|
||||
key_auth: subscription_params[:keys][:auth],
|
||||
data: data_params,
|
||||
user_id: current_user.id,
|
||||
access_token_id: doorkeeper_token.id
|
||||
)
|
||||
end
|
||||
|
||||
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer
|
||||
end
|
||||
|
@ -31,14 +36,18 @@ class Api::V1::Push::SubscriptionsController < Api::BaseController
|
|||
end
|
||||
|
||||
def destroy
|
||||
@push_subscription&.destroy!
|
||||
destroy_web_push_subscriptions!
|
||||
render_empty
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def destroy_web_push_subscriptions!
|
||||
doorkeeper_token.web_push_subscriptions.destroy_all
|
||||
end
|
||||
|
||||
def set_push_subscription
|
||||
@push_subscription = Web::PushSubscription.find_by(access_token_id: doorkeeper_token.id)
|
||||
@push_subscription = doorkeeper_token.web_push_subscriptions.first
|
||||
end
|
||||
|
||||
def check_push_subscription
|
||||
|
|
|
@ -5,9 +5,11 @@ class Api::V1::StatusesController < Api::BaseController
|
|||
|
||||
before_action -> { authorize_if_got_token! :read, :'read:statuses' }, except: [:create, :update, :destroy]
|
||||
before_action -> { doorkeeper_authorize! :write, :'write:statuses' }, only: [:create, :update, :destroy]
|
||||
before_action :require_user!, except: [:show, :context]
|
||||
before_action :set_status, only: [:show, :context]
|
||||
before_action :set_thread, only: [:create]
|
||||
before_action :require_user!, except: [:index, :show, :context]
|
||||
before_action :set_statuses, only: [:index]
|
||||
before_action :set_status, only: [:show, :context]
|
||||
before_action :set_thread, only: [:create]
|
||||
before_action :check_statuses_limit, only: [:index]
|
||||
|
||||
override_rate_limit_headers :create, family: :statuses
|
||||
override_rate_limit_headers :update, family: :statuses
|
||||
|
@ -23,6 +25,11 @@ class Api::V1::StatusesController < Api::BaseController
|
|||
DESCENDANTS_LIMIT = 60
|
||||
DESCENDANTS_DEPTH_LIMIT = 20
|
||||
|
||||
def index
|
||||
@statuses = cache_collection(@statuses, Status)
|
||||
render json: @statuses, each_serializer: REST::StatusSerializer
|
||||
end
|
||||
|
||||
def show
|
||||
cache_if_unauthenticated!
|
||||
@status = cache_collection([@status], Status).first
|
||||
|
@ -113,6 +120,10 @@ class Api::V1::StatusesController < Api::BaseController
|
|||
|
||||
private
|
||||
|
||||
def set_statuses
|
||||
@statuses = Status.permitted_statuses_from_ids(status_ids, current_account)
|
||||
end
|
||||
|
||||
def set_status
|
||||
@status = Status.find(params[:id])
|
||||
authorize @status, :show?
|
||||
|
@ -127,6 +138,18 @@ class Api::V1::StatusesController < Api::BaseController
|
|||
render json: { error: I18n.t('statuses.errors.in_reply_not_found') }, status: 404
|
||||
end
|
||||
|
||||
def check_statuses_limit
|
||||
raise(Mastodon::ValidationError) if status_ids.size > DEFAULT_STATUSES_LIMIT
|
||||
end
|
||||
|
||||
def status_ids
|
||||
Array(statuses_params[:ids]).uniq.map(&:to_i)
|
||||
end
|
||||
|
||||
def statuses_params
|
||||
params.permit(ids: [])
|
||||
end
|
||||
|
||||
def status_params
|
||||
params.permit(
|
||||
:status,
|
||||
|
|
23
app/controllers/well_known/oauth_metadata_controller.rb
Normal file
23
app/controllers/well_known/oauth_metadata_controller.rb
Normal file
|
@ -0,0 +1,23 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module WellKnown
|
||||
class OauthMetadataController < ActionController::Base # rubocop:disable Rails/ApplicationController
|
||||
include CacheConcern
|
||||
|
||||
# Prevent `active_model_serializer`'s `ActionController::Serialization` from calling `current_user`
|
||||
# and thus re-issuing session cookies
|
||||
serialization_scope nil
|
||||
|
||||
def show
|
||||
# Due to this document potentially changing between Mastodon versions (as
|
||||
# new OAuth scopes are added), we don't use expires_in to cache upstream,
|
||||
# instead just caching in the rails cache:
|
||||
render_with_cache(
|
||||
json: ::OauthMetadataPresenter.new,
|
||||
serializer: ::OauthMetadataSerializer,
|
||||
content_type: 'application/json',
|
||||
expires_in: 15.minutes
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -241,6 +241,13 @@ module ApplicationHelper
|
|||
EmojiFormatter.new(html, custom_emojis, other_options.merge(animate: prefers_autoplay?)).to_s
|
||||
end
|
||||
|
||||
def site_icon_path(type, size = '48')
|
||||
icon = SiteUpload.find_by(var: type)
|
||||
return nil unless icon
|
||||
|
||||
icon.file.url(size)
|
||||
end
|
||||
|
||||
# glitch-soc addition to handle the multiple flavors
|
||||
def preload_locale_pack
|
||||
supported_locales = Themes.instance.flavour(current_flavour)['locales']
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"about.domain_blocks.no_reason_available": "السبب غير متوفر",
|
||||
"about.domain_blocks.preamble": "يسمح لك ماستدون عموماً بعرض المحتوى من المستخدمين من أي خادم آخر في الفدرالية والتفاعل معهم. وهذه هي الاستثناءات التي وضعت على هذا الخادم بالذات.",
|
||||
"about.domain_blocks.silenced.explanation": "عموماً، لن ترى ملفات التعريف والمحتوى من هذا الخادم، إلا إذا كنت تبحث عنه بشكل صريح أو تختار أن تتابعه.",
|
||||
"about.domain_blocks.silenced.title": "تم كتمه",
|
||||
"about.domain_blocks.silenced.title": "محدود",
|
||||
"about.domain_blocks.suspended.explanation": "لن يتم معالجة أي بيانات من هذا الخادم أو تخزينها أو تبادلها، مما يجعل أي تفاعل أو اتصال مع المستخدمين من هذا الخادم مستحيلا.",
|
||||
"about.domain_blocks.suspended.title": "مُعلّق",
|
||||
"about.not_available": "لم يتم توفير هذه المعلومات على هذا الخادم.",
|
||||
|
@ -21,7 +21,7 @@
|
|||
"account.blocked": "محظور",
|
||||
"account.browse_more_on_origin_server": "تصفح المزيد في الملف الشخصي الأصلي",
|
||||
"account.cancel_follow_request": "إلغاء طلب المتابعة",
|
||||
"account.copy": "نسخ الرابط إلى الملف الشخصي",
|
||||
"account.copy": "نسخ الرابط إلى الحساب",
|
||||
"account.direct": "إشارة خاصة لـ @{name}",
|
||||
"account.disable_notifications": "توقف عن إشعاري عندما ينشر @{name}",
|
||||
"account.domain_blocked": "اسم النِّطاق محظور",
|
||||
|
@ -32,7 +32,7 @@
|
|||
"account.featured_tags.last_status_never": "لا توجد رسائل",
|
||||
"account.featured_tags.title": "وسوم {name} المميَّزة",
|
||||
"account.follow": "متابعة",
|
||||
"account.follow_back": "تابعه بدورك",
|
||||
"account.follow_back": "رد المتابعة",
|
||||
"account.followers": "مُتابِعون",
|
||||
"account.followers.empty": "لا أحدَ يُتابع هذا المُستخدم إلى حد الآن.",
|
||||
"account.followers_counter": "{count, plural, zero{لا مُتابع} one {مُتابعٌ واحِد} two {مُتابعانِ اِثنان} few {{counter} مُتابِعين} many {{counter} مُتابِعًا} other {{counter} مُتابع}}",
|
||||
|
@ -89,12 +89,12 @@
|
|||
"announcement.announcement": "إعلان",
|
||||
"attachments_list.unprocessed": "(غير معالَج)",
|
||||
"audio.hide": "إخفاء المقطع الصوتي",
|
||||
"block_modal.remote_users_caveat": "Do t’i kërkojmë shërbyesit {domain} të respektojë vendimin tuaj. Por, pajtimi s’është i garantuar, ngaqë disa shërbyes mund t’i trajtojnë ndryshe bllokimet. Psotimet publike mundet të jenë ende të dukshme për përdorues pa bërë hyrje në llogari.",
|
||||
"block_modal.show_less": "اعرض أقلّ",
|
||||
"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.they_will_know": "يمكنه أن يرى أنه قد تم حظره.",
|
||||
"block_modal.title": "أتريد حظر المستخدم؟",
|
||||
"block_modal.you_wont_see_mentions": "لن تر المنشورات التي يُشار فيهم إليه.",
|
||||
"boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة",
|
||||
|
@ -220,7 +220,7 @@
|
|||
"domain_pill.activitypub_lets_connect": "يتيح لك التواصل والتفاعل مع الناس ليس فقط على ماستدون، ولكن عبر تطبيقات اجتماعية مختلفة أيضا.",
|
||||
"domain_pill.activitypub_like_language": "إنّ ActivityPub مثل لغة ماستدون التي يتحدث بها مع شبكات اجتماعية أخرى.",
|
||||
"domain_pill.server": "الخادِم",
|
||||
"domain_pill.their_handle": "مُعرِّفُه:",
|
||||
"domain_pill.their_handle": "مُعرفه:",
|
||||
"domain_pill.their_server": "بيتهم الرقمي، حيث تُستضاف كافة منشوراتهم.",
|
||||
"domain_pill.their_username": "مُعرّفُهم الفريد على الخادم. من الممكن العثور على مستخدمين بنفس اسم المستخدم على خوادم مختلفة.",
|
||||
"domain_pill.username": "اسم المستخدم",
|
||||
|
@ -308,6 +308,8 @@
|
|||
"follow_suggestions.hints.similar_to_recently_followed": "هذا الملف الشخصي مشابه للملفات الشخصية التي تابعتها مؤخرا.",
|
||||
"follow_suggestions.personalized_suggestion": "توصية مخصصة",
|
||||
"follow_suggestions.popular_suggestion": "توصية رائجة",
|
||||
"follow_suggestions.popular_suggestion_longer": "رائج على {domain}",
|
||||
"follow_suggestions.similar_to_recently_followed_longer": "مشابهة لمواصفات الملفات الشخصية التي تابعتَها حديثًا",
|
||||
"follow_suggestions.view_all": "عرض الكل",
|
||||
"follow_suggestions.who_to_follow": "حسابات للمُتابَعة",
|
||||
"followed_tags": "الوسوم المتابَعة",
|
||||
|
@ -360,8 +362,8 @@
|
|||
"interaction_modal.title.reply": "الرد على منشور {name}",
|
||||
"intervals.full.days": "{number, plural, one {# يوم} other {# أيام}}",
|
||||
"intervals.full.hours": "{number, plural, one {# ساعة} other {# ساعات}}",
|
||||
"intervals.full.minutes": "{number, plural, one {# دقيقة} other {# دقائق}}",
|
||||
"keyboard_shortcuts.back": "للعودة",
|
||||
"intervals.full.minutes": "{number, plural, one {دقيقة واحدة}two {دقيقتان} other {# دقائق}}",
|
||||
"keyboard_shortcuts.back": "للرجوع",
|
||||
"keyboard_shortcuts.blocked": "لفتح قائمة المستخدمين المحظورين",
|
||||
"keyboard_shortcuts.boost": "لإعادة النشر",
|
||||
"keyboard_shortcuts.column": "للتركيز على منشور على أحد الأعمدة",
|
||||
|
@ -421,7 +423,9 @@
|
|||
"loading_indicator.label": "جاري التحميل…",
|
||||
"media_gallery.toggle_visible": "{number, plural, zero {} one {اخف الصورة} two {اخف الصورتين} few {اخف الصور} many {اخف الصور} other {اخف الصور}}",
|
||||
"moved_to_account_banner.text": "حسابك {disabledAccount} معطل حاليًا لأنك انتقلت إلى {movedToAccount}.",
|
||||
"mute_modal.hide_from_notifications": "إخفاء من قائمة الإشعارات",
|
||||
"mute_modal.hide_options": "إخفاء الخيارات",
|
||||
"mute_modal.indefinite": "إلى أن أفسخ كتمها",
|
||||
"mute_modal.show_options": "إظهار الخيارات",
|
||||
"mute_modal.they_can_mention_and_follow": "سيكون بإمكانه الإشارة إليك ومتابعتك، لكنك لن تره.",
|
||||
"mute_modal.they_wont_know": "لن يَعرف أنه قد تم كتمه.",
|
||||
|
@ -460,10 +464,20 @@
|
|||
"notification.follow": "يتابعك {name}",
|
||||
"notification.follow_request": "لقد طلب {name} متابعتك",
|
||||
"notification.mention": "{name} ذكرك",
|
||||
"notification.moderation-warning.learn_more": "اعرف المزيد",
|
||||
"notification.moderation_warning.action_disable": "تم تعطيل حسابك.",
|
||||
"notification.moderation_warning.action_mark_statuses_as_sensitive": "بعض من منشوراتك تم تصنيفها على أنها حساسة.",
|
||||
"notification.moderation_warning.action_none": "لقد تلقى حسابك تحذيرا بالإشراف.",
|
||||
"notification.moderation_warning.action_sensitive": "سيتم وضع علامة على منشوراتك على أنها حساسة من الآن فصاعدا.",
|
||||
"notification.moderation_warning.action_suspend": "لقد تم تعليق حسابك.",
|
||||
"notification.own_poll": "انتهى استطلاعك للرأي",
|
||||
"notification.poll": "لقد انتهى استطلاع رأي شاركتَ فيه",
|
||||
"notification.reblog": "قام {name} بمشاركة منشورك",
|
||||
"notification.relationships_severance_event": "فقدت الاتصالات مع {name}",
|
||||
"notification.relationships_severance_event.account_suspension": "قام مشرف من {from} بتعليق {target}، مما يعني أنك لم يعد بإمكانك تلقي التحديثات منهم أو التفاعل معهم.",
|
||||
"notification.relationships_severance_event.domain_block": "قام مشرف من {from} بحظر {target}، بما في ذلك {followersCount} من متابعينك و {followingCount, plural, one {# حساب} other {# حسابات}} تتابعها.",
|
||||
"notification.relationships_severance_event.learn_more": "اعرف المزيد",
|
||||
"notification.relationships_severance_event.user_domain_block": "لقد قمت بحظر {target}، مما أدى إلى إزالة {followersCount} من متابعينك و {followingCount, plural, one {# حساب} other {# حسابات}} تتابعها.",
|
||||
"notification.status": "{name} نشر للتو",
|
||||
"notification.update": "عدّلَ {name} منشورًا",
|
||||
"notification_requests.accept": "موافقة",
|
||||
|
@ -503,10 +517,15 @@
|
|||
"notifications.permission_denied": "تنبيهات سطح المكتب غير متوفرة بسبب رفض أذونات المتصفح مسبقاً",
|
||||
"notifications.permission_denied_alert": "لا يمكن تفعيل إشعارات سطح المكتب، لأن إذن المتصفح قد تم رفضه سابقاً",
|
||||
"notifications.permission_required": "إشعارات سطح المكتب غير متوفرة لأنه لم يتم منح الإذن المطلوب.",
|
||||
"notifications.policy.filter_new_accounts.hint": "تم إنشاؤها منذ {days, plural, zero {}one {يوم واحد} two {يومان} few {# أيام} many {# أيام} other {# أيام}}",
|
||||
"notifications.policy.filter_new_accounts_title": "حسابات جديدة",
|
||||
"notifications.policy.filter_not_followers_hint": "بما في ذلك الأشخاص الذين يتابعونك أقل من {days, plural, zero {}one {يوم واحد} two {يومان} few {# أيام} many {# أيام} other {# أيام}}",
|
||||
"notifications.policy.filter_not_followers_title": "أشخاص لا يتابعونك",
|
||||
"notifications.policy.filter_not_following_hint": "حتى توافق عليهم يدويا",
|
||||
"notifications.policy.filter_not_following_title": "أشخاص لا تتابعهم",
|
||||
"notifications.policy.filter_private_mentions_hint": "تمت تصفيته إلا إذا أن يكون ردًا على ذكرك أو إذا كنت تتابع الحساب",
|
||||
"notifications.policy.filter_private_mentions_title": "إشارات خاصة غير مرغوب فيها",
|
||||
"notifications.policy.title": "تصفية الإشعارات من…",
|
||||
"notifications_permission_banner.enable": "تفعيل إشعارات سطح المكتب",
|
||||
"notifications_permission_banner.how_to_control": "لتلقي الإشعارات عندما لا يكون ماستدون مفتوح، قم بتفعيل إشعارات سطح المكتب، يمكنك التحكم بدقة في أنواع التفاعلات التي تولد إشعارات سطح المكتب من خلال زر الـ{icon} أعلاه بمجرد تفعيلها.",
|
||||
"notifications_permission_banner.title": "لا تفوت شيئاً أبداً",
|
||||
|
@ -687,6 +706,7 @@
|
|||
"status.edited_x_times": "عُدّل {count, plural, zero {} one {مرةً واحدة} two {مرّتان} few {{count} مرات} many {{count} مرة} other {{count} مرة}}",
|
||||
"status.embed": "إدماج",
|
||||
"status.favourite": "فضّل",
|
||||
"status.favourites": "{count, plural, zero {}one {مفضلة واحدة} two {مفضلتان} few {# مفضلات} many {# مفضلات} other {# مفضلات}}",
|
||||
"status.filter": "تصفية هذه الرسالة",
|
||||
"status.filtered": "مُصفّى",
|
||||
"status.hide": "إخفاء المنشور",
|
||||
|
@ -707,6 +727,7 @@
|
|||
"status.reblog": "إعادة النشر",
|
||||
"status.reblog_private": "إعادة النشر إلى الجمهور الأصلي",
|
||||
"status.reblogged_by": "شارَكَه {name}",
|
||||
"status.reblogs": "{count, plural, one {تعزيز واحد} two {تعزيزتان} few {# تعزيزات} many {# تعزيزات} other {# تعزيزات}}",
|
||||
"status.reblogs.empty": "لم يقم أي أحد بمشاركة هذا المنشور بعد. عندما يقوم أحدهم بذلك سوف يظهر هنا.",
|
||||
"status.redraft": "إزالة وإعادة الصياغة",
|
||||
"status.remove_bookmark": "احذفه مِن الفواصل المرجعية",
|
||||
|
|
|
@ -331,7 +331,7 @@
|
|||
"footer.source_code": "Quellcode anzeigen",
|
||||
"footer.status": "Status",
|
||||
"generic.saved": "Gespeichert",
|
||||
"getting_started.heading": "Auf geht’s!",
|
||||
"getting_started.heading": "Auf gehts!",
|
||||
"hashtag.column_header.tag_mode.all": "und {additional}",
|
||||
"hashtag.column_header.tag_mode.any": "oder {additional}",
|
||||
"hashtag.column_header.tag_mode.none": "ohne {additional}",
|
||||
|
@ -400,7 +400,7 @@
|
|||
"keyboard_shortcuts.requests": "Liste der Follower-Anfragen aufrufen",
|
||||
"keyboard_shortcuts.search": "Suchleiste fokussieren",
|
||||
"keyboard_shortcuts.spoilers": "Feld für Inhaltswarnung anzeigen/ausblenden",
|
||||
"keyboard_shortcuts.start": "„Auf geht’s!“ öffnen",
|
||||
"keyboard_shortcuts.start": "„Auf gehts!“ öffnen",
|
||||
"keyboard_shortcuts.toggle_hidden": "Beitragstext hinter der Inhaltswarnung anzeigen/ausblenden",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "Medien anzeigen/ausblenden",
|
||||
"keyboard_shortcuts.toot": "Neuen Beitrag erstellen",
|
||||
|
|
|
@ -473,6 +473,15 @@
|
|||
"notification.follow": "{name}さんにフォローされました",
|
||||
"notification.follow_request": "{name}さんがあなたにフォローリクエストしました",
|
||||
"notification.mention": "{name}さんがあなたに返信しました",
|
||||
"notification.moderation-warning.learn_more": "さらに詳しく",
|
||||
"notification.moderation_warning": "あなたは管理者からの警告を受けています。",
|
||||
"notification.moderation_warning.action_delete_statuses": "あなたによるいくつかの投稿が削除されました。",
|
||||
"notification.moderation_warning.action_disable": "あなたのアカウントは無効になりました。",
|
||||
"notification.moderation_warning.action_mark_statuses_as_sensitive": "あなたの投稿のいくつかは閲覧注意として判定されています。",
|
||||
"notification.moderation_warning.action_none": "あなたのアカウントは管理者からの警告を受けています。",
|
||||
"notification.moderation_warning.action_sensitive": "あなたの投稿はこれから閲覧注意としてマークされます。",
|
||||
"notification.moderation_warning.action_silence": "あなたのアカウントは制限されています。",
|
||||
"notification.moderation_warning.action_suspend": "あなたのアカウントは停止されました。",
|
||||
"notification.own_poll": "アンケートが終了しました",
|
||||
"notification.poll": "アンケートが終了しました",
|
||||
"notification.reblog": "{name}さんがあなたの投稿をブーストしました",
|
||||
|
|
|
@ -308,6 +308,8 @@
|
|||
"follow_requests.unlocked_explanation": "Čeprav vaš račun ni zaklenjen, zaposleni pri {domain} menijo, da bi morda želeli pregledati zahteve za sledenje teh računov ročno.",
|
||||
"follow_suggestions.curated_suggestion": "Izbor osebja",
|
||||
"follow_suggestions.dismiss": "Ne pokaži več",
|
||||
"follow_suggestions.featured_longer": "Osebno izbrala ekipa {domain}",
|
||||
"follow_suggestions.friends_of_friends_longer": "Priljubljeno med osebami, ki jim sledite",
|
||||
"follow_suggestions.hints.featured": "Ta profil so izbrali skrbniki strežnika {domain}.",
|
||||
"follow_suggestions.hints.friends_of_friends": "Ta profil je priljubljen med osebami, ki jim sledite.",
|
||||
"follow_suggestions.hints.most_followed": "Ta profil na strežniku {domain} je en izmed najbolj sledenih.",
|
||||
|
@ -315,6 +317,8 @@
|
|||
"follow_suggestions.hints.similar_to_recently_followed": "Ta profil je podoben profilom, ki ste jim nedavno začeli slediti.",
|
||||
"follow_suggestions.personalized_suggestion": "Osebno prilagojen predlog",
|
||||
"follow_suggestions.popular_suggestion": "Priljubljen predlog",
|
||||
"follow_suggestions.popular_suggestion_longer": "Priljubljeno na {domain}",
|
||||
"follow_suggestions.similar_to_recently_followed_longer": "Podobno profilom, ki ste jim pred kratkim sledili",
|
||||
"follow_suggestions.view_all": "Pokaži vse",
|
||||
"follow_suggestions.who_to_follow": "Komu slediti",
|
||||
"followed_tags": "Sledeni ključniki",
|
||||
|
@ -469,6 +473,15 @@
|
|||
"notification.follow": "{name} vam sledi",
|
||||
"notification.follow_request": "{name} vam želi slediti",
|
||||
"notification.mention": "{name} vas je omenil/a",
|
||||
"notification.moderation-warning.learn_more": "Več o tem",
|
||||
"notification.moderation_warning": "Prejeli ste opozorilo moderatorjev",
|
||||
"notification.moderation_warning.action_delete_statuses": "Nekatere vaše objave so odstranjene.",
|
||||
"notification.moderation_warning.action_disable": "Vaš račun je bil onemogočen.",
|
||||
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Nekatere vaše objave so bile označene kot občutljive.",
|
||||
"notification.moderation_warning.action_none": "Vaš račun je prejel opozorilo moderatorjev.",
|
||||
"notification.moderation_warning.action_sensitive": "Vaše objave bodo odslej označene kot občutljive.",
|
||||
"notification.moderation_warning.action_silence": "Vaš račun je bil omejen.",
|
||||
"notification.moderation_warning.action_suspend": "Vaš račun je bil suspendiran.",
|
||||
"notification.own_poll": "Vaša anketa je zaključena",
|
||||
"notification.poll": "Anketa, v kateri ste sodelovali, je zaključena",
|
||||
"notification.reblog": "{name} je izpostavila/a vašo objavo",
|
||||
|
|
|
@ -297,6 +297,7 @@
|
|||
"filter_modal.select_filter.subtitle": "Përdorni një kategori ekzistuese, ose krijoni një të re",
|
||||
"filter_modal.select_filter.title": "Filtroje këtë postim",
|
||||
"filter_modal.title.status": "Filtroni një postim",
|
||||
"filtered_notifications_banner.mentions": "{count, plural, one {përmendje} other {përmendje}}",
|
||||
"filtered_notifications_banner.pending_requests": "Njoftime prej {count, plural, =0 {askujt} one {një personi} other {# vetësh}} që mund të njihni",
|
||||
"filtered_notifications_banner.title": "Njoftime të filtruar",
|
||||
"firehose.all": "Krejt",
|
||||
|
@ -307,6 +308,8 @@
|
|||
"follow_requests.unlocked_explanation": "Edhe pse llogaria juaj s’është e kyçur, ekipi i {domain} mendoi se mund të donit të shqyrtonit dorazi kërkesa ndjekjeje prej këtyre llogarive.",
|
||||
"follow_suggestions.curated_suggestion": "Zgjedhur nga ekipi",
|
||||
"follow_suggestions.dismiss": "Mos shfaq më",
|
||||
"follow_suggestions.featured_longer": "Zgjedhur enkas nga ekipi {domain}",
|
||||
"follow_suggestions.friends_of_friends_longer": "Popullore mes personash që ndiqni",
|
||||
"follow_suggestions.hints.featured": "Ky profil është zgjedhur nga ekipi {domain}.",
|
||||
"follow_suggestions.hints.friends_of_friends": "Ky profil është popullor mes personave që ndiqni.",
|
||||
"follow_suggestions.hints.most_followed": "Ky profil është një nga më të ndjekur në {domain}.",
|
||||
|
@ -314,6 +317,8 @@
|
|||
"follow_suggestions.hints.similar_to_recently_followed": "Ky profil është i ngjashëm me profile që keni ndjekur tani afër.",
|
||||
"follow_suggestions.personalized_suggestion": "Sugjerim i personalizuar",
|
||||
"follow_suggestions.popular_suggestion": "Sugjerim popullor",
|
||||
"follow_suggestions.popular_suggestion_longer": "Popullore në {domain}",
|
||||
"follow_suggestions.similar_to_recently_followed_longer": "I ngjashëm me profile që keni zënë të ndiqni së fundi",
|
||||
"follow_suggestions.view_all": "Shihni krejt",
|
||||
"follow_suggestions.who_to_follow": "Cilët të ndiqen",
|
||||
"followed_tags": "Hashtag-ë të ndjekur",
|
||||
|
@ -468,6 +473,15 @@
|
|||
"notification.follow": "{name} zuri t’ju ndjekë",
|
||||
"notification.follow_request": "{name} ka kërkuar t’ju ndjekë",
|
||||
"notification.mention": "{name} ju ka përmendur",
|
||||
"notification.moderation-warning.learn_more": "Mësoni më tepër",
|
||||
"notification.moderation_warning": "Keni marrë një sinjalizim moderimi",
|
||||
"notification.moderation_warning.action_delete_statuses": "Disa nga postimet tuaja janë hequr.",
|
||||
"notification.moderation_warning.action_disable": "Llogaria juaj është çaktivizuar.",
|
||||
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Disa prej postimeve tuaja u është vënë shenjë si me spec.",
|
||||
"notification.moderation_warning.action_none": "Llogaria juaj ka marrë një sinjalizim moderimi.",
|
||||
"notification.moderation_warning.action_sensitive": "Postimeve tuaja do t’u vihet shenjë si me spec, nga tani e tutje.",
|
||||
"notification.moderation_warning.action_silence": "Llogaria juaj është kufizuar.",
|
||||
"notification.moderation_warning.action_suspend": "Llogaria juaj është pezulluar.",
|
||||
"notification.own_poll": "Pyetësori juaj ka përfunduar",
|
||||
"notification.poll": "Ka përfunduar një pyetësor ku keni votuar",
|
||||
"notification.reblog": "{name} përforcoi mesazhin tuaj",
|
||||
|
|
|
@ -6,6 +6,8 @@ module AccessTokenExtension
|
|||
included do
|
||||
include Redisable
|
||||
|
||||
has_many :web_push_subscriptions, class_name: 'Web::PushSubscription', inverse_of: :access_token
|
||||
|
||||
after_commit :push_to_streaming_api
|
||||
end
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ class Admin::Metrics::Measure::InstanceMediaAttachmentsMeasure < Admin::Metrics:
|
|||
WHERE date_trunc('day', media_attachments.created_at)::date = axis.period
|
||||
AND #{account_domain_sql(params[:include_subdomains])}
|
||||
)
|
||||
SELECT COALESCE(SUM(size), 0) FROM new_media_attachments
|
||||
SELECT COALESCE(SUM(size), 0)::bigint FROM new_media_attachments
|
||||
) AS value
|
||||
FROM (
|
||||
SELECT generate_series(date_trunc('day', :start_at::timestamp)::date, date_trunc('day', :end_at::timestamp)::date, interval '1 day') AS period
|
||||
|
|
|
@ -282,6 +282,6 @@ class LinkDetailsExtractor
|
|||
end
|
||||
|
||||
def html_entities
|
||||
@html_entities ||= HTMLEntities.new
|
||||
@html_entities ||= HTMLEntities.new(:expanded)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,6 +3,23 @@
|
|||
module Status::ThreadingConcern
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
class_methods do
|
||||
def permitted_statuses_from_ids(ids, account, stable: false)
|
||||
statuses = Status.with_accounts(ids).to_a
|
||||
account_ids = statuses.map(&:account_id).uniq
|
||||
domains = statuses.filter_map(&:account_domain).uniq
|
||||
relations = account&.relations_map(account_ids, domains) || {}
|
||||
|
||||
statuses.reject! { |status| StatusFilter.new(status, account, relations).filtered? }
|
||||
|
||||
if stable
|
||||
statuses.sort_by! { |status| ids.index(status.id) }
|
||||
else
|
||||
statuses
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def ancestors(limit, account = nil)
|
||||
find_statuses_from_tree_path(ancestor_ids(limit), account)
|
||||
end
|
||||
|
@ -76,15 +93,7 @@ module Status::ThreadingConcern
|
|||
end
|
||||
|
||||
def find_statuses_from_tree_path(ids, account, promote: false)
|
||||
statuses = Status.with_accounts(ids).to_a
|
||||
account_ids = statuses.map(&:account_id).uniq
|
||||
domains = statuses.filter_map(&:account_domain).uniq
|
||||
relations = account&.relations_map(account_ids, domains) || {}
|
||||
|
||||
statuses.reject! { |status| StatusFilter.new(status, account, relations).filtered? }
|
||||
|
||||
# Order ancestors/descendants by tree path
|
||||
statuses.sort_by! { |status| ids.index(status.id) }
|
||||
statuses = Status.permitted_statuses_from_ids(ids, account, stable: true)
|
||||
|
||||
# Bring self-replies to the top
|
||||
if promote
|
||||
|
|
|
@ -44,6 +44,8 @@ class Form::AdminSettings
|
|||
status_page_url
|
||||
captcha_enabled
|
||||
authorized_fetch
|
||||
app_icon
|
||||
favicon
|
||||
).freeze
|
||||
|
||||
INTEGER_KEYS = %i(
|
||||
|
@ -74,6 +76,8 @@ class Form::AdminSettings
|
|||
UPLOAD_KEYS = %i(
|
||||
thumbnail
|
||||
mascot
|
||||
app_icon
|
||||
favicon
|
||||
).freeze
|
||||
|
||||
PSEUDO_KEYS = %i(
|
||||
|
|
|
@ -19,7 +19,15 @@
|
|||
class SiteUpload < ApplicationRecord
|
||||
include Attachmentable
|
||||
|
||||
FAVICON_SIZES = [16, 32, 48].freeze
|
||||
APPLE_ICON_SIZES = [57, 60, 72, 76, 114, 120, 144, 152, 167, 180, 1024].freeze
|
||||
ANDROID_ICON_SIZES = [36, 48, 72, 96, 144, 192, 256, 384, 512].freeze
|
||||
|
||||
APP_ICON_SIZES = (APPLE_ICON_SIZES + ANDROID_ICON_SIZES).uniq.freeze
|
||||
|
||||
STYLES = {
|
||||
app_icon: APP_ICON_SIZES.each_with_object({}) { |size, hash| hash[size.to_s.to_sym] = "#{size}x#{size}#" }.freeze,
|
||||
favicon: FAVICON_SIZES.each_with_object({}) { |size, hash| hash[size.to_s.to_sym] = "#{size}x#{size}#" }.freeze,
|
||||
thumbnail: {
|
||||
'@1x': {
|
||||
format: 'png',
|
||||
|
|
|
@ -273,7 +273,7 @@ class Status < ApplicationRecord
|
|||
end
|
||||
|
||||
def reported?
|
||||
@reported ||= Report.where(target_account: account).unresolved.exists?(['? = ANY(status_ids)', id])
|
||||
@reported ||= account.targeted_reports.unresolved.exists?(['? = ANY(status_ids)', id]) || account.strikes.exists?(['? = ANY(status_ids)', id.to_s])
|
||||
end
|
||||
|
||||
def emojis
|
||||
|
|
|
@ -37,7 +37,7 @@ class Tag < ApplicationRecord
|
|||
HASHTAG_LAST_SEQUENCE = '([[:word:]_]*[[:alpha:]][[:word:]_]*)'
|
||||
HASHTAG_NAME_PAT = "#{HASHTAG_FIRST_SEQUENCE}|#{HASHTAG_LAST_SEQUENCE}"
|
||||
|
||||
HASHTAG_RE = %r{(?<![=/)\w])#(#{HASHTAG_NAME_PAT})}i
|
||||
HASHTAG_RE = %r{(?<![=/)\p{Alnum}])#(#{HASHTAG_NAME_PAT})}i
|
||||
HASHTAG_NAME_RE = /\A(#{HASHTAG_NAME_PAT})\z/i
|
||||
HASHTAG_INVALID_CHARS_RE = /[^[:alnum:]\u0E47-\u0E4E#{HASHTAG_SEPARATORS}]/
|
||||
|
||||
|
|
67
app/presenters/oauth_metadata_presenter.rb
Normal file
67
app/presenters/oauth_metadata_presenter.rb
Normal file
|
@ -0,0 +1,67 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class OauthMetadataPresenter < ActiveModelSerializers::Model
|
||||
include RoutingHelper
|
||||
|
||||
attributes :issuer, :authorization_endpoint, :token_endpoint,
|
||||
:revocation_endpoint, :scopes_supported,
|
||||
:response_types_supported, :response_modes_supported,
|
||||
:grant_types_supported, :token_endpoint_auth_methods_supported,
|
||||
:service_documentation, :app_registration_endpoint
|
||||
|
||||
def issuer
|
||||
root_url
|
||||
end
|
||||
|
||||
def service_documentation
|
||||
'https://docs.joinmastodon.org/'
|
||||
end
|
||||
|
||||
def authorization_endpoint
|
||||
oauth_authorization_url
|
||||
end
|
||||
|
||||
def token_endpoint
|
||||
oauth_token_url
|
||||
end
|
||||
|
||||
# As the api_v1_apps route doesn't technically conform to the specification
|
||||
# for OAuth 2.0 Dynamic Client Registration defined in RFC 7591 we use a
|
||||
# non-standard property for now to indicate the mastodon specific registration
|
||||
# endpoint. See: https://datatracker.ietf.org/doc/html/rfc7591
|
||||
def app_registration_endpoint
|
||||
api_v1_apps_url
|
||||
end
|
||||
|
||||
def revocation_endpoint
|
||||
oauth_revoke_url
|
||||
end
|
||||
|
||||
def scopes_supported
|
||||
doorkeeper.scopes
|
||||
end
|
||||
|
||||
def response_types_supported
|
||||
doorkeeper.authorization_response_types
|
||||
end
|
||||
|
||||
def response_modes_supported
|
||||
doorkeeper.authorization_response_flows.flat_map(&:response_mode_matches).uniq
|
||||
end
|
||||
|
||||
def grant_types_supported
|
||||
grant_types_supported = doorkeeper.grant_flows.dup
|
||||
grant_types_supported << 'refresh_token' if doorkeeper.refresh_token_enabled?
|
||||
grant_types_supported
|
||||
end
|
||||
|
||||
def token_endpoint_auth_methods_supported
|
||||
%w(client_secret_basic client_secret_post)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def doorkeeper
|
||||
@doorkeeper ||= Doorkeeper.configuration
|
||||
end
|
||||
end
|
|
@ -1,21 +1,10 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class ManifestSerializer < ActiveModel::Serializer
|
||||
include ApplicationHelper
|
||||
include RoutingHelper
|
||||
include ActionView::Helpers::TextHelper
|
||||
|
||||
ICON_SIZES = %w(
|
||||
36
|
||||
48
|
||||
72
|
||||
96
|
||||
144
|
||||
192
|
||||
256
|
||||
384
|
||||
512
|
||||
).freeze
|
||||
|
||||
attributes :id, :name, :short_name,
|
||||
:icons, :theme_color, :background_color,
|
||||
:display, :start_url, :scope,
|
||||
|
@ -37,9 +26,12 @@ class ManifestSerializer < ActiveModel::Serializer
|
|||
end
|
||||
|
||||
def icons
|
||||
ICON_SIZES.map do |size|
|
||||
SiteUpload::ANDROID_ICON_SIZES.map do |size|
|
||||
src = site_icon_path('app_icon', size.to_i)
|
||||
src = URI.join(root_url, src).to_s if src.present?
|
||||
|
||||
{
|
||||
src: frontend_asset_url("icons/android-chrome-#{size}x#{size}.png"),
|
||||
src: src || frontend_asset_url("icons/android-chrome-#{size}x#{size}.png"),
|
||||
sizes: "#{size}x#{size}",
|
||||
type: 'image/png',
|
||||
purpose: 'any maskable',
|
||||
|
|
9
app/serializers/oauth_metadata_serializer.rb
Normal file
9
app/serializers/oauth_metadata_serializer.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class OauthMetadataSerializer < ActiveModel::Serializer
|
||||
attributes :issuer, :authorization_endpoint, :token_endpoint,
|
||||
:revocation_endpoint, :scopes_supported,
|
||||
:response_types_supported, :response_modes_supported,
|
||||
:grant_types_supported, :token_endpoint_auth_methods_supported,
|
||||
:service_documentation, :app_registration_endpoint
|
||||
end
|
|
@ -40,5 +40,33 @@
|
|||
= fa_icon 'trash fw'
|
||||
= t('admin.site_uploads.delete')
|
||||
|
||||
.fields-row
|
||||
.fields-row__column.fields-row__column-6.fields-group
|
||||
= f.input :favicon,
|
||||
as: :file,
|
||||
input_html: { accept: ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].join(',') },
|
||||
wrapper: :with_block_label
|
||||
|
||||
.fields-row__column.fields-row__column-6.fields-group
|
||||
- if @admin_settings.favicon.persisted?
|
||||
= image_tag @admin_settings.favicon.file.url('48'), class: 'fields-group__thumbnail'
|
||||
= link_to admin_site_upload_path(@admin_settings.favicon), data: { method: :delete }, class: 'link-button link-button--destructive' do
|
||||
= fa_icon 'trash fw'
|
||||
= t('admin.site_uploads.delete')
|
||||
|
||||
.fields-row
|
||||
.fields-row__column.fields-row__column-6.fields-group
|
||||
= f.input :app_icon,
|
||||
as: :file,
|
||||
input_html: { accept: ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].join(',') },
|
||||
wrapper: :with_block_label
|
||||
|
||||
.fields-row__column.fields-row__column-6.fields-group
|
||||
- if @admin_settings.app_icon.persisted?
|
||||
= image_tag @admin_settings.app_icon.file.url('48'), class: 'fields-group__thumbnail'
|
||||
= link_to admin_site_upload_path(@admin_settings.app_icon), data: { method: :delete }, class: 'link-button link-button--destructive' do
|
||||
= fa_icon 'trash fw'
|
||||
= t('admin.site_uploads.delete')
|
||||
|
||||
.actions
|
||||
= f.button :button, t('generic.save_changes'), type: :submit
|
||||
|
|
|
@ -11,13 +11,13 @@
|
|||
- if storage_host?
|
||||
%link{ rel: 'dns-prefetch', href: storage_host }/
|
||||
|
||||
%link{ rel: 'icon', href: '/favicon.ico', type: 'image/x-icon' }/
|
||||
%link{ rel: 'icon', href: site_icon_path('favicon') || '/favicon.ico', type: 'image/x-icon' }/
|
||||
|
||||
- %w(16 32 48).each do |size|
|
||||
%link{ rel: 'icon', sizes: "#{size}x#{size}", href: frontend_asset_path("icons/favicon-#{size}x#{size}.png"), type: 'image/png' }/
|
||||
- SiteUpload::FAVICON_SIZES.each do |size|
|
||||
%link{ rel: 'icon', sizes: "#{size}x#{size}", href: site_icon_path('favicon', size.to_i) || frontend_asset_path("icons/favicon-#{size}x#{size}.png"), type: 'image/png' }/
|
||||
|
||||
- %w(57 60 72 76 114 120 144 152 167 180 1024).each do |size|
|
||||
%link{ rel: 'apple-touch-icon', sizes: "#{size}x#{size}", href: frontend_asset_path("icons/apple-touch-icon-#{size}x#{size}.png") }/
|
||||
- SiteUpload::APPLE_ICON_SIZES.each do |size|
|
||||
%link{ rel: 'apple-touch-icon', sizes: "#{size}x#{size}", href: site_icon_path('app_icon', size.to_i) || frontend_asset_path("icons/apple-touch-icon-#{size}x#{size}.png") }/
|
||||
|
||||
%link{ rel: 'mask-icon', href: frontend_asset_path('images/logo-symbol-icon.svg'), color: '#6364FF' }/
|
||||
%link{ rel: 'manifest', href: manifest_path(format: :json) }/
|
||||
|
|
|
@ -804,6 +804,7 @@ ar:
|
|||
desc_html: ويعتمد هذا على نصوص برمجية خارجية من hCaptcha، والتي قد تكون مصدر قلق يتعلق بالأمان والخصوصية. بالإضافة إلى ذلك، <strong>قد يؤدي ذلك إلى جعل عملية التسجيل أقل سهولة بالنسبة لبعض الأشخاص (وخاصة المعاقين)</strong>. لهذه الأسباب، يرجى النظر في تدابير بديلة مثل التسجيل على أساس الموافقة أو على أساس الدعوة.
|
||||
title: مطالبة المستخدمين الجدد بحل اختبار CAPTCHA لتأكيد حساباتهم
|
||||
content_retention:
|
||||
danger_zone: منطقة خطرة
|
||||
preamble: التحكم في كيفية تخزين المحتوى الذي ينشئه المستخدم في ماستدون.
|
||||
title: الاحتفاظ بالمحتوى
|
||||
default_noindex:
|
||||
|
|
|
@ -23,8 +23,11 @@ ia:
|
|||
action_with_app: Confirmar e retornar a %{app}
|
||||
title: Verificar adresse de e-mail
|
||||
email_changed:
|
||||
explanation: 'Le adresse de e-mail pro tu conto essera cambiate a:'
|
||||
subject: 'Mastodon: E-mail cambiate'
|
||||
title: Nove adresse de e-mail
|
||||
password_change:
|
||||
explanation: Le contrasigno de tu conto ha essite cambiate.
|
||||
subject: 'Mastodon: Contrasigno cambiate'
|
||||
title: Contrasigno cambiate
|
||||
reconfirmation_instructions:
|
||||
|
|
|
@ -17,6 +17,7 @@ ia:
|
|||
authorize: Autorisar
|
||||
cancel: Cancellar
|
||||
edit: Modificar
|
||||
submit: Submitter
|
||||
confirmations:
|
||||
destroy: Es tu secur?
|
||||
edit:
|
||||
|
|
|
@ -174,6 +174,7 @@ sq:
|
|||
read:filters: të shohë filtrat tuaj
|
||||
read:follows: të shohë ndjekësit tuaj
|
||||
read:lists: të shohë listat tuaja
|
||||
read:me: të shohë vetëm hollësi elementare të llogarisë tuaj
|
||||
read:mutes: të shohë ç’keni heshtuar
|
||||
read:notifications: të shohë njoftimet tuaja
|
||||
read:reports: të shohë raportimet tuaja
|
||||
|
|
|
@ -106,6 +106,9 @@ ia:
|
|||
pending: Attende revision
|
||||
perform_full_suspension: Suspender
|
||||
previous_strikes: Previe admonitiones
|
||||
previous_strikes_description_html:
|
||||
one: Iste conto ha <strong>un</strong> admonition.
|
||||
other: Iste conto ha <strong>%{count}</strong> admonitiones.
|
||||
promote: Promover
|
||||
protocol: Protocollo
|
||||
public: Public
|
||||
|
@ -159,10 +162,10 @@ ia:
|
|||
undo_suspension: Disfacer le suspension
|
||||
unsilenced_msg: Le limite del conto de %{username} ha essite cancellate
|
||||
unsubscribe: Desubscriber
|
||||
unsuspended_msg: Annullate suspension del conto %{username} con successo
|
||||
unsuspended_msg: Le suspension del conto %{username} ha essite annullate
|
||||
username: Nomine de usator
|
||||
view_domain: Vider summario de dominio
|
||||
warn: Avisar
|
||||
warn: Advertir
|
||||
web: Web
|
||||
whitelisted: Permittite pro federation
|
||||
action_logs:
|
||||
|
@ -244,37 +247,102 @@ ia:
|
|||
create_user_role_html: "%{name} creava rolo de %{target}"
|
||||
demote_user_html: "%{name} degradava usator %{target}"
|
||||
destroy_announcement_html: "%{name} deleva annuncio %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} disblocava email con le hash %{target}"
|
||||
destroy_custom_emoji_html: "%{name} deleva emoji %{target}"
|
||||
destroy_domain_allow_html: "%{name} impediva le federation con dominio %{target}"
|
||||
destroy_domain_block_html: "%{name} disblocava dominio %{target}"
|
||||
destroy_email_domain_block_html: "%{name} disblocava le dominio email %{target}"
|
||||
destroy_instance_html: "%{name} purgava le dominio %{target}"
|
||||
destroy_ip_block_html: "%{name} deleva le regula pro IP %{target}"
|
||||
destroy_status_html: "%{name} removeva le message de %{target}"
|
||||
destroy_unavailable_domain_html: "%{name} resumeva le consignation al dominio %{target}"
|
||||
destroy_user_role_html: "%{name} deleva le rolo de %{target}"
|
||||
disable_2fa_user_html: "%{name} disactivava le authentication a duo factores pro le usator %{target}"
|
||||
disable_custom_emoji_html: "%{name} disactivava le emoticone %{target}"
|
||||
disable_sign_in_token_auth_user_html: "%{name} disactivava authentication per testimonio via email pro %{target}"
|
||||
disable_user_html: "%{name} disactivava le accesso pro le usator %{target}"
|
||||
enable_custom_emoji_html: "%{name} activava le emoticone %{target}"
|
||||
enable_sign_in_token_auth_user_html: "%{name} activava le authentication per testimonio via email pro %{target}"
|
||||
enable_user_html: "%{name} activava le accesso pro le usator %{target}"
|
||||
memorialize_account_html: "%{name} mutava le conto de %{target} in un pagina commemorative"
|
||||
promote_user_html: "%{name} promoveva le usator %{target}"
|
||||
reject_appeal_html: "%{name} refusava le appello del decision de moderation de %{target}"
|
||||
reject_user_html: "%{name} refusava le inscription de %{target}"
|
||||
remove_avatar_user_html: "%{name} removeva le avatar de %{target}"
|
||||
reopen_report_html: "%{name} reaperiva le reporto %{target}"
|
||||
resend_user_html: "%{name} reinviava le email de confirmation pro %{target}"
|
||||
reset_password_user_html: "%{name} reinitialisava le contrasigno del usator %{target}"
|
||||
resolve_report_html: "%{name} resolveva le reporto %{target}"
|
||||
sensitive_account_html: "%{name} marcava como sensibile le medios de %{target}"
|
||||
silence_account_html: "%{name} limitava le conto de %{target}"
|
||||
suspend_account_html: "%{name} suspendeva le conto de %{target}"
|
||||
unassigned_report_html: "%{name} de-assignava le reporto %{target}"
|
||||
unblock_email_account_html: "%{name} disblocava le adresse email de %{target}"
|
||||
unsensitive_account_html: "%{name} dismarcava como sensibile le medios de %{target}"
|
||||
unsilence_account_html: "%{name} removeva le limite del conto de %{target}"
|
||||
unsuspend_account_html: "%{name} removeva le suspension del conto de %{target}"
|
||||
update_announcement_html: "%{name} actualisava le annuncio %{target}"
|
||||
update_custom_emoji_html: "%{name} actualisava le emoticone %{target}"
|
||||
update_domain_block_html: "%{name} actualisava le blocada de dominio pro %{target}"
|
||||
update_ip_block_html: "%{name} cambiava le regula pro IP %{target}"
|
||||
update_status_html: "%{name} actualisava le message per %{target}"
|
||||
update_user_role_html: "%{name} cambiava le rolo de %{target}"
|
||||
deleted_account: conto delite
|
||||
empty: Nulle registrationes trovate.
|
||||
filter_by_action: Filtrar per action
|
||||
filter_by_user: Filtrar per usator
|
||||
title: Registro de inspection
|
||||
announcements:
|
||||
destroyed_msg: Annuncio delite con successo!
|
||||
edit:
|
||||
title: Modificar annuncio
|
||||
empty: Necun annuncios trovate.
|
||||
live: Al vivo
|
||||
new:
|
||||
create: Crear annuncio
|
||||
title: Nove annuncio
|
||||
publish: Publicar
|
||||
published_msg: Annuncio publicate con successo!
|
||||
scheduled_for: Programmate pro %{time}
|
||||
scheduled_msg: Annuncio programmate pro le publication!
|
||||
title: Annuncios
|
||||
unpublish: Depublicar
|
||||
unpublished_msg: Le publication del annuncio ha essite disfacite!
|
||||
updated_msg: Annuncio actualisate con successo!
|
||||
critical_update_pending: Actualisation critic pendente
|
||||
custom_emojis:
|
||||
assign_category: Assignar categoria
|
||||
by_domain: Dominio
|
||||
copied_msg: Copia local del emoji create con successo
|
||||
copy: Copiar
|
||||
copy_failed_msg: Impossibile crear un copia local de ille emoticone
|
||||
create_new_category: Crear nove categoria
|
||||
created_msg: Emoji create con successo!
|
||||
delete: Deler
|
||||
destroyed_msg: Emoticone destruite con successo destroyed!
|
||||
disable: Disactivar
|
||||
disabled: Disactivate
|
||||
disabled_msg: Emoji disactivate con successo
|
||||
emoji: Emoticone
|
||||
enable: Activar
|
||||
enabled: Activate
|
||||
enabled_msg: Emoji activate con successo
|
||||
image_hint: PNG o GIF usque %{size}
|
||||
list: Listar
|
||||
listed: Listate
|
||||
new:
|
||||
title: Adder nove emoji personalisate
|
||||
no_emoji_selected: Nulle emoticones ha essite cambiate perque nulle ha essite seligite
|
||||
not_permitted: Tu non es autorisate a exequer iste action
|
||||
overwrite: Superscriber
|
||||
shortcode: Via breve
|
||||
shortcode_hint: Al minus 2 characteres, solo characteres alphanumeric e lineettas basse
|
||||
title: Emojis personalisate
|
||||
uncategorized: Sin categoria
|
||||
unlist: Non listar
|
||||
unlisted: Non listate
|
||||
update_failed_msg: Impossibile actualisar ille emoticone
|
||||
updated_msg: Emoticone actualisate con successo!
|
||||
upload: Incargar
|
||||
dashboard:
|
||||
active_users: usatores active
|
||||
|
@ -282,71 +350,180 @@ ia:
|
|||
media_storage: Immagazinage de medios
|
||||
new_users: nove usatores
|
||||
opened_reports: reportos aperte
|
||||
resolved_reports: reportos resolvite
|
||||
software: Software
|
||||
sources: Fontes de inscription
|
||||
space: Uso de spatio
|
||||
title: Pannello de controlo
|
||||
top_languages: Linguas le plus active
|
||||
top_servers: Servitores le plus active
|
||||
website: Sito web
|
||||
disputes:
|
||||
appeals:
|
||||
empty: Nulle appellos trovate.
|
||||
title: Appellos
|
||||
domain_allows:
|
||||
add_new: Permitter federation con dominio
|
||||
created_msg: Le dominio ha essite permittite con successo pro federation
|
||||
destroyed_msg: Le dominio ha essite prohibite pro federation
|
||||
export: Exportar
|
||||
import: Importar
|
||||
undo: Prohiber federation con dominio
|
||||
domain_blocks:
|
||||
add_new: Adder nove blocada de dominio
|
||||
confirm_suspension:
|
||||
cancel: Cancellar
|
||||
confirm: Suspender
|
||||
permanent_action: Disfacer le suspension non restaurara alcun datos o relation.
|
||||
preamble_html: Tu es sur le puncto de suspender <strong>%{domain}</strong> e su subdominios.
|
||||
remove_all_data: Isto removera de tu servitor tote le contento, multimedia e datos de profilo del contos de iste dominio.
|
||||
stop_communication: Tu servitor stoppara le communication con iste servitores.
|
||||
title: Confirmar le blocada del dominio %{domain}
|
||||
undo_relationships: Isto disfacera omne relation de sequimento inter le contos de iste servitores e illos del tue.
|
||||
created_msg: Le blocada del dominio es ora in tractamento
|
||||
destroyed_msg: Le blocada del dominio ha essite disfacite
|
||||
domain: Dominio
|
||||
edit: Modificar un bloco de dominio
|
||||
edit: Modificar un blocada de dominio
|
||||
existing_domain_block: Tu ha ja imponite limites plus stricte sur %{name}.
|
||||
existing_domain_block_html: Tu ha ja imponite limites plus stricte sur %{name}; ora es necessari <a href="%{unblock_url}">disblocar lo</a> primo.
|
||||
export: Exportar
|
||||
import: Importar
|
||||
new:
|
||||
create: Crear blocada
|
||||
hint: Le blocada del dominio non impedira le creation de entratas de conto in le base de datos, ma applicara retroactive- e automaticamente le methodos specific de moderation a iste contos.
|
||||
severity:
|
||||
desc_html: "<strong>Limitar</strong> rendera le messages del contos de iste dominio invisibile pro tote persona que non los seque. <strong>Suspender</strong> removera de tu servitor tote le contento, multimedia e datos de profilo del contos de iste dominio. Usa <strong>Necun</strong> si tu solmente vole rejectar le files multimedial."
|
||||
noop: Nemo
|
||||
silence: Limitar
|
||||
suspend: Suspender
|
||||
title: Nove blocada de dominio
|
||||
no_domain_block_selected: Necun blocada de dominio ha essite cambiate perque necun ha essite seligite
|
||||
not_permitted: Tu non es autorisate a exequer iste action
|
||||
obfuscate: Offuscar le nomine de dominio
|
||||
obfuscate_hint: Offuscar partialmente le nomine de dominio in le lista si le diffusion del lista de limitationes del dominio es activate
|
||||
private_comment: Commento private
|
||||
private_comment_hint: Commentar iste limitation de dominio pro uso interne per le moderatores.
|
||||
public_comment: Commento public
|
||||
public_comment_hint: Commentar iste limitation de dominio pro le publico general, si le diffusion del lista de limitationes del dominio es activate.
|
||||
reject_media: Refusar files multimedial
|
||||
reject_media_hint: Remove le files multimedial immagazinate localmente e refusa de discargar tales in futuro. Irrelevante pro le suspensiones
|
||||
reject_reports: Refusar reportos
|
||||
reject_reports_hint: Ignorar tote le reportos proveniente de iste dominio. Irrelevante pro le suspensiones
|
||||
undo: Disfacer blocada de dominio
|
||||
view: Examinar blocada de dominio
|
||||
email_domain_blocks:
|
||||
add_new: Adder nove
|
||||
allow_registrations_with_approval: Permitter inscriptiones con approbation
|
||||
attempts_over_week:
|
||||
one: "%{count} tentativa de inscription in le ultime septimana"
|
||||
other: "%{count} tentativas de inscription in le ultime septimana"
|
||||
created_msg: Le dominio de e-mail ha essite blocate
|
||||
delete: Deler
|
||||
dns:
|
||||
types:
|
||||
mx: Registro MX
|
||||
domain: Dominio
|
||||
new:
|
||||
create: Adder un dominio
|
||||
resolve: Resolver dominio
|
||||
title: Blocar un nove dominio de e-mail
|
||||
no_email_domain_block_selected: Necun blocadas de dominio de e-mail ha essite cambiate perque necun ha essite seligite
|
||||
not_permitted: Non permittite
|
||||
resolved_dns_records_hint_html: Le nomine de dominio se resolve al sequente dominios MX, le quales ha le ultime responsibilitate pro le reception de e-mail. Blocar un dominio MX blocara le inscriptiones de qualcunque adresse de e-mail que usa le mesme dominio MX, mesmo si le nomine de dominio visibile es differente. <strong>Presta attention a evitar de blocar le grande fornitores de e-mail.</strong>
|
||||
resolved_through_html: Resolvite per %{domain}
|
||||
title: Dominios de e-mail blocate
|
||||
export_domain_allows:
|
||||
new:
|
||||
title: Importar permissiones de dominio
|
||||
no_file: Necun file seligite
|
||||
export_domain_blocks:
|
||||
import:
|
||||
description_html: Tu es sur le puncto de importar un lista de blocadas de dominio. Per favor revide con grande cura iste lista, particularmente si tu non lo ha scribite tu mesme.
|
||||
existing_relationships_warning: Relationes existente de sequimento
|
||||
private_comment_description_html: 'Pro adjutar te a traciar de ubi proveni le blocadas importate, le blocadas importate essera create con le sequente commento private: <q>%{comment}</q>'
|
||||
private_comment_template: Importate de %{source} le %{date}
|
||||
title: Importar blocadas de dominio
|
||||
invalid_domain_block: 'Un o plus blocadas de dominio ha essite saltate a causa del sequente error(es): %{error}'
|
||||
new:
|
||||
title: Importar blocadas de dominio
|
||||
no_file: Necun file seligite
|
||||
follow_recommendations:
|
||||
description_html: "<strong>Le recommendationes de sequimento adjuta le nove usatores a trovar rapidemente contento interessante.</strong> Quando un usator non ha un historia sufficiente de interactiones con alteres pro formar recommendationes personalisate de sequimento, iste contos es recommendate. Illos se recalcula cata die a partir de un mixtura de contos con le plus grande numero de ingagiamentos recente e le numero de sequitores local le plus alte pro un lingua date."
|
||||
language: Per lingua
|
||||
status: Stato
|
||||
suppress: Supprimer recommendation de sequimento
|
||||
suppressed: Supprimite
|
||||
title: Sequer le recommendationes
|
||||
unsuppress: Restaurar recommendation de sequimento
|
||||
instances:
|
||||
availability:
|
||||
description_html:
|
||||
one: Si le livration al dominio falle <strong>%{count} die</strong> sin succeder, necun tentativa ulterior de livration essera facite, excepte si es recipite un livration <em>ab</em> le dominio.
|
||||
other: Si le livration al dominio falle durante <strong>%{count} dies differente</strong> sin succeder, necun tentativa ulterior de livration essera facite, excepte si es recipite un livration <em>ab</em> le dominio.
|
||||
failure_threshold_reached: Limine de fallimentos attingite le %{date}.
|
||||
failures_recorded:
|
||||
one: Tentativa fallite durante %{count} die.
|
||||
other: Tentativa fallite durante %{count} dies differente.
|
||||
no_failures_recorded: Necun fallimento cognoscite.
|
||||
title: Disponibilitate
|
||||
warning: Le ultime tentativa de connexion a iste servitor non ha succedite
|
||||
back_to_all: Toto
|
||||
back_to_limited: Limitate
|
||||
back_to_warning: Advertimento
|
||||
by_domain: Dominio
|
||||
confirm_purge: Es tu secur que tu vole deler permanentemente le datos de iste dominio?
|
||||
content_policies:
|
||||
comment: Nota interne
|
||||
description_html: Tu pote definir politicas de contento que se applicara a tote le contos de iste dominio e a qualcunque de su subdominios.
|
||||
limited_federation_mode_description_html: Tu pote decider si permitter le federation con iste dominio.
|
||||
policies:
|
||||
reject_media: Rejectar multimedia
|
||||
reject_reports: Rejectar reportos
|
||||
silence: Limitar
|
||||
suspend: Suspender
|
||||
policy: Politica
|
||||
reason: Ration public
|
||||
title: Politicas de contento
|
||||
dashboard:
|
||||
instance_accounts_dimension: Contos le plus sequite
|
||||
instance_accounts_measure: contos immagazinate
|
||||
instance_followers_measure: nostre sequitores illac
|
||||
instance_follows_measure: lor sequitores hic
|
||||
instance_languages_dimension: Linguas principal
|
||||
instance_media_attachments_measure: annexos multimedial immagazinate
|
||||
instance_reports_measure: signalationes sur illos
|
||||
instance_statuses_measure: messages immagazinate
|
||||
delivery:
|
||||
all: Totes
|
||||
clear: Rader errores de livration
|
||||
failing: Fallente
|
||||
restart: Recomenciar livration
|
||||
stop: Cessar livration
|
||||
unavailable: Non disponibile
|
||||
delivery_available: Livration es disponibile
|
||||
delivery_error_days: Dies de errores de livration
|
||||
delivery_error_hint: Si le livration non es possibile durante %{count} dies, illo essera automaticamente marcate como non livrabile.
|
||||
destroyed_msg: Le datos de %{domain} es ora in cauda pro deletion imminente.
|
||||
empty: Necun dominios trovate.
|
||||
known_accounts:
|
||||
one: "%{count} conto cognoscite"
|
||||
other: "%{count} contos cognoscite"
|
||||
moderation:
|
||||
all: Toto
|
||||
limited: Limitate
|
||||
title: Moderation
|
||||
private_comment: Commento private
|
||||
public_comment: Commento public
|
||||
purge: Purgar
|
||||
purge_description_html: Si tu crede que iste dominio es foras de linea pro sempre, tu pote deler de tu immagazinage tote le registros del conto e le datos associate de iste dominio. Isto pote prender un tempore.
|
||||
title: Federation
|
||||
total_blocked_by_us: Blocate per nos
|
||||
total_followed_by_them: Sequite per illes
|
||||
total_followed_by_us: Sequite per nos
|
||||
total_reported: Signalationes sur illes
|
||||
total_storage: Annexos multimedial
|
||||
totals_time_period_hint_html: Le totales monstrate hic infra include le datos de tote le tempore.
|
||||
unknown_instance: Iste dominio non es actualmente cognoscite sur iste servitor.
|
||||
invites:
|
||||
deactivate_all: Disactivar toto
|
||||
filter:
|
||||
|
@ -357,6 +534,7 @@ ia:
|
|||
title: Invitationes
|
||||
ip_blocks:
|
||||
add_new: Crear regula
|
||||
created_msg: Le nove regula IP ha essite addite
|
||||
delete: Deler
|
||||
expires_in:
|
||||
'1209600': 2 septimanas
|
||||
|
@ -367,8 +545,12 @@ ia:
|
|||
'94670856': 3 annos
|
||||
new:
|
||||
title: Crear un nove regula IP
|
||||
no_ip_block_selected: Necun regula IP ha essite cambiate perque necun ha essite seligite
|
||||
title: Regulas IP
|
||||
relationships:
|
||||
title: Relationes de %{acct}
|
||||
relays:
|
||||
add_new: Adder nove repetitor
|
||||
delete: Deler
|
||||
description_html: Un <strong>repetitor de federation</strong> es un servitor intermediari que excambia grande volumines de messages public inter le servitores que se inscribe e publica a illo. <strong>Illo pote adjutar le servitores micre e medie a discoperir le contento del fediverso</strong>, sin requirer que le usatores local seque manualmente altere personas sur servitores distante.
|
||||
disable: Disactivar
|
||||
|
@ -376,59 +558,212 @@ ia:
|
|||
enable: Activar
|
||||
enable_hint: Un vice activate, tu servitor se inscribera a tote le messages public de iste repetitor, e comenciara a inviar le messages public de iste servitor a illo.
|
||||
enabled: Activate
|
||||
inbox_url: URL del repetitor
|
||||
pending: Attende le approbation del repetitor
|
||||
save_and_enable: Salveguardar e activar
|
||||
setup: Crear un connexion con un repetitor
|
||||
signatures_not_enabled: Le repetitores pote non functionar correctemente durante que le modo secur o le modo de federation limitate es activate
|
||||
status: Stato
|
||||
title: Repetitores
|
||||
report_notes:
|
||||
created_msg: Nota de signalation create con successo!
|
||||
destroyed_msg: Nota de signalation delite con successo!
|
||||
reports:
|
||||
account:
|
||||
notes:
|
||||
one: "%{count} nota"
|
||||
other: "%{count} notas"
|
||||
action_log: Registro de inspection
|
||||
action_taken_by: Action prendite per
|
||||
actions:
|
||||
delete_description_html: Le messages signalate essera delite e un admonition essera registrate pro adjutar te a prender mesuras in caso de futur infractiones proveniente del mesme conto.
|
||||
mark_as_sensitive_description_html: Le files multimedial in le messages reportate essera marcate como sensibile e un admonition essera registrate pro adjutar te a prender mesuras in caso de futur infractiones proveniente del mesme conto.
|
||||
other_description_html: Vider plus optiones pro controlar le comportamento del conto e personalisar le communication al conto signalate.
|
||||
resolve_description_html: Necun action essera prendite contra le conto signalate, necun admonition registrate, e le signalation essera claudite.
|
||||
silence_description_html: Iste conto essera visibile solmente a qui ja lo seque o manualmente lo cerca, limitante gravemente su portata. Pote sempre esser revertite. Claude tote le signalationes contra iste conto.
|
||||
suspend_description_html: Le conto e tote su contento essera inaccessible e finalmente delite, e interager con illo essera impossibile. Reversibile intra 30 dies. Claude tote le signalationes contra iste conto.
|
||||
actions_description_html: Decide qual action prender pro resolver iste signalation. Si tu prende un action punitive contra le conto signalate, le persona recipera un notification in e-mail, excepte si le categoria <strong>Spam</strong> es seligite.
|
||||
actions_description_remote_html: Decide qual action prender pro resolver iste signalation. Isto affectara solmente le maniera in que <strong>tu</strong> servitor communica con iste conto remote e gere su contento.
|
||||
add_to_report: Adder plus al reporto
|
||||
already_suspended_badges:
|
||||
local: Ja suspendite sur iste servitor
|
||||
remote: Ja suspendite sur su servitor
|
||||
are_you_sure: Es tu secur?
|
||||
assign_to_self: Assignar a me
|
||||
assigned: Moderator assignate
|
||||
by_target_domain: Dominio del conto signalate
|
||||
cancel: Cancellar
|
||||
category: Categoria
|
||||
category_description_html: Le motivo pro le qual iste conto e/o contento ha essite signalate essera citate in le communication con le conto signalate
|
||||
comment:
|
||||
none: Necun
|
||||
comment_description_html: 'Pro fornir plus information, %{name} ha scribite:'
|
||||
confirm: Confirmar
|
||||
confirm_action: Confirmar le action de moderation contra %{acct}
|
||||
created_at: Signalate
|
||||
delete_and_resolve: Deler le messages
|
||||
forwarded: Reexpedite
|
||||
forwarded_replies_explanation: Iste signalation proveni de un usator remote e concerne contento remote. Illo te ha essite reexpedite perque le contento signalate es in responsa a un usator tue.
|
||||
forwarded_to: Reexpedite a %{domain}
|
||||
mark_as_resolved: Marcar como resolvite
|
||||
mark_as_sensitive: Marcar como sensibile
|
||||
mark_as_unresolved: Marcar como non resolvite
|
||||
no_one_assigned: Nemo
|
||||
notes:
|
||||
create: Adder un nota
|
||||
create_and_resolve: Resolver con nota
|
||||
create_and_unresolve: Reaperir con nota
|
||||
delete: Deler
|
||||
placeholder: Describe le actiones prendite, o insere altere information pertinente...
|
||||
title: Notas
|
||||
notes_description_html: Vider e lassar notas pro altere moderatores e pro tu proprie futuro
|
||||
processed_msg: 'Reporto #%{id} elaborate con successo'
|
||||
quick_actions_description_html: 'Face un rapide action o rola a basso pro vider le contento reportate:'
|
||||
remote_user_placeholder: le usator remote ab %{instance}
|
||||
reopen: Reaperir reporto
|
||||
report: 'Reporto #%{id}'
|
||||
reported_account: Conto signalate
|
||||
reported_by: Signalate per
|
||||
resolved: Resolvite
|
||||
resolved_msg: Reporto resolvite con successo!
|
||||
skip_to_actions: Saltar al actiones
|
||||
status: Stato
|
||||
statuses: Contento signalate
|
||||
statuses_description_html: Le contento offensive sera citate in communication con le conto reportate
|
||||
summary:
|
||||
action_preambles:
|
||||
delete_html: 'Tu va <strong>remover</strong> parte de messages de <strong>@%{acct}</strong>. Isto ira:'
|
||||
mark_as_sensitive_html: 'Tu va <strong>marcar</strong> parte de messages de <strong>@%{acct}</strong> como <strong>sensibile</strong>. Isto ira:'
|
||||
silence_html: 'Tu va <strong>limitar</strong> le conto de <strong>@%{acct}</strong>. Isto ira:'
|
||||
suspend_html: 'Tu va <strong>limitar</strong> le conto de <strong>@%{acct}</strong>. Isto ira:'
|
||||
actions:
|
||||
delete_html: Remover le messages offensive
|
||||
mark_as_sensitive_html: Marcar le medios de messages offensive como sensibile
|
||||
silence_html: Limitar gravemente le portata de <strong>@%{acct}</strong> rendente le profilo e contento visibile solmente a qui ja lo seque o lo cerca manualmente
|
||||
suspend_html: Suspender <strong>@%{acct}</strong>, rendente le profilo e contento inaccessibile e le interaction con illo impossibile
|
||||
close_report: Marcar le signalation №%{id} como resolvite
|
||||
close_reports_html: Marcar <strong>tote</strong> le signalationes contra <strong>@%{acct}</strong> como resolvite
|
||||
delete_data_html: Deler le profilo e contento de <strong>@%{acct}</strong> in 30 dies excepte si le suspension es disfacite intertanto
|
||||
preview_preamble_html: "<strong>@%{acct}</strong> recipera un advertimento con le sequente contento:"
|
||||
record_strike_html: Registrar un admonition contra <strong>@%{acct}</strong> pro adjutar te a imponer sanctiones in caso de futur violationes de iste conto
|
||||
send_email_html: Inviar un e-mail de advertimento a <strong>@%{acct}</strong>
|
||||
warning_placeholder: Motivation supplementari facultative pro le action de moderation.
|
||||
target_origin: Origine del conto signalate
|
||||
title: Reportos
|
||||
unassign: Disassignar
|
||||
unknown_action_msg: 'Action incognite: %{action}'
|
||||
unresolved: Non resolvite
|
||||
updated_at: Actualisate
|
||||
view_profile: Vider profilo
|
||||
roles:
|
||||
add_new: Adder rolo
|
||||
assigned_users:
|
||||
one: "%{count} usator"
|
||||
other: "%{count} usatores"
|
||||
categories:
|
||||
administration: Administration
|
||||
devops: DevOps
|
||||
invites: Invitationes
|
||||
moderation: Moderation
|
||||
special: Special
|
||||
delete: Deler
|
||||
description_html: Le <strong>rolos de usator</strong> permitte personalisar le functiones e areas de Mastodon al quales le usator pote acceder.
|
||||
edit: Modificar le rolo '%{name}'
|
||||
everyone: Permissiones predefinite
|
||||
everyone_full_description_html: Iste es le <strong>rolo de base</strong> que affecta <strong>tote le usatores</strong>, mesmo illes sin rolo assignate. Tote le altere rolos heredita le permissiones de illo.
|
||||
permissions_count:
|
||||
one: "%{count} permission"
|
||||
other: "%{count} permissiones"
|
||||
privileges:
|
||||
administrator: Administrator
|
||||
administrator_description: Le usatores con iste permission pote contornar tote permission
|
||||
delete_user_data: Deler le datos de usator
|
||||
delete_user_data_description: Permitte que usatores dele immediatemente le datos de altere usatores
|
||||
invite_users: Invitar usatores
|
||||
invite_users_description: Permitte que usatores invita nove personas al servitor
|
||||
manage_announcements: Gerer le annuncios
|
||||
manage_announcements_description: Permitte que usatores genere annuncios sur le servitor
|
||||
manage_appeals: Gerer appellos
|
||||
manage_appeals_description: Permitte que usatores revide appellos contra actiones de moderation
|
||||
manage_blocks: Gerer blocadas
|
||||
manage_blocks_description: Permitter que usatores bloca le fornitores de e-mail e le adresses IP
|
||||
manage_custom_emojis: Gerer emojis personalisate
|
||||
manage_custom_emojis_description: Permitte que usatores gere emojis personalisate sur le servitor
|
||||
manage_federation: Gerer federation
|
||||
manage_federation_description: Permitte que le usatores bloca o permitte le federation con altere dominios, e controla le livration
|
||||
manage_invites: Gerer le invitationes
|
||||
manage_invites_description: Permitte que usatores examina e deactiva ligamines de invitation
|
||||
manage_reports: Gerer le reportos
|
||||
manage_reports_description: Permitte que usatores revide signalationes e exeque actiones de moderation a base de illos
|
||||
manage_roles: Gerer le rolos
|
||||
manage_roles_description: Permitte que usatores gere e assigna rolos inferior a lor privilegios actual
|
||||
manage_rules: Gerer le regulas
|
||||
manage_rules_description: Permitte que usatores cambia le regulas del servitor
|
||||
manage_settings: Gerer le parametros
|
||||
manage_settings_description: Permitte que usatores cambia le parametros del sito
|
||||
manage_taxonomies: Gerer taxonomias
|
||||
manage_taxonomies_description: Permitte que usatores revide contento in tendentias e actualisa le parametros de hashtag
|
||||
manage_user_access: Gerer le accessos de usator
|
||||
manage_user_access_description: Permitte que usatores disactiva le authentication bifactorial de altere usatores, cambia lor adresses de e-mail, e reinitialisa lor contrasigno
|
||||
manage_users: Gerer usatores
|
||||
manage_users_description: Permitte que usatores vide le detalios de altere usatores e exeque actiones de moderation contra illes
|
||||
manage_webhooks: Gerer Webhooks
|
||||
manage_webhooks_description: Permitte que usatores installa “webhooks” pro eventos administrative
|
||||
view_audit_log: Vider le registro de inspection
|
||||
view_audit_log_description: Permitte que usatores vide un historia de actiones administrative sur le servitor
|
||||
view_dashboard: Vider le tabuliero de instrumentos
|
||||
view_dashboard_description: Permitte que usatores accede al tabuliero de instrumentos e a varie statisticas
|
||||
view_devops: DevOps
|
||||
view_devops_description: Permitte que usatores accede al tabulieros de instrumentos de Sidekiq e pgHero
|
||||
title: Rolos
|
||||
rules:
|
||||
add_new: Adder regula
|
||||
delete: Deler
|
||||
description_html: Ben que multes affirma de haber legite e acceptate le conditiones de servicio, generalmente le gente non los lege completemente usque un problema surge. <strong>Facilita le visibilitate del regulas de tu servitor in un colpo de oculo forniente los in un lista a punctos.</strong> Tenta mantener le regulas individual curte e simple, ma sin divider los in multe punctos separate.
|
||||
edit: Modificar regula
|
||||
empty: Necun regula del servitor ha essite definite ancora.
|
||||
title: Regulas del servitor
|
||||
settings:
|
||||
about:
|
||||
manage_rules: Gerer le regulas del servitor
|
||||
preamble: Fornir information detaliate sur le functionamento, moderation e financiamento del servitor.
|
||||
rules_hint: Il ha un area dedicate al regulas que tu usatores debe acceptar.
|
||||
title: A proposito de
|
||||
appearance:
|
||||
preamble: Personalisar le interfacie web de Mastodon.
|
||||
title: Apparentia
|
||||
branding:
|
||||
preamble: Le marca de tu servitor lo differentia de altere servitores in le rete. Iste information pote esser monstrate in diverse ambientes, como le interfacie web de Mastodon, applicationes native, in previsualisationes de ligamines sur altere sitos web, in applicationes de messageria, etc. Pro iste ration, il es melior mantener iste information clar, breve e concise.
|
||||
title: Marca
|
||||
captcha_enabled:
|
||||
desc_html: Iste depende de scripts externe de hCaptcha, que pote esser un problema de securitate e vita private. De plus, <strong>isto pote render le processo de inscription multo minus accessibile a certe personas (particularmente personas con discapacitates)</strong>. Pro iste rationes, considera altere mesuras como le inscription basate sur approbation o invitation.
|
||||
title: Require que nove usatores solve un CAPTCHA pro confirmar lor conto
|
||||
content_retention:
|
||||
danger_zone: Zona periculose
|
||||
discovery:
|
||||
profile_directory: Directorio de profilos
|
||||
public_timelines: Chronologias public
|
||||
title: Discoperi
|
||||
trends: Tendentias
|
||||
domain_blocks:
|
||||
all: A omnes
|
||||
disabled: A necuno
|
||||
users: A usators local in session
|
||||
registrations:
|
||||
title: Registrationes
|
||||
registrations_mode:
|
||||
modes:
|
||||
none: Nemo pote inscriber se
|
||||
open: Quicunque pote inscriber se
|
||||
security:
|
||||
authorized_fetch_hint: Requirer authentication de servitores federate permitte un application plus stricte de blocadas a nivello de usator e de servitor. Nonobstante, isto diminue le prestationes del servitor, reduce le portata de tu responsas e pote introducer problemas de compatibilitate con certe servicios federate. In plus, isto non impedira le actores dedicate a recuperar tu messages public e tu contos.
|
||||
title: Parametros de servitor
|
||||
site_uploads:
|
||||
delete: Deler file incargate
|
||||
destroyed_msg: Incarga de sito delite con successo!
|
||||
software_updates:
|
||||
documentation_link: Pro saper plus
|
||||
release_notes: Notas de version
|
||||
title: Actualisationes disponibile
|
||||
type: Typo
|
||||
types:
|
||||
|
@ -443,31 +778,136 @@ ia:
|
|||
deleted: Delite
|
||||
favourites: Favoritos
|
||||
history: Chronologia del versiones
|
||||
in_reply_to: Replicante a
|
||||
language: Lingua
|
||||
media:
|
||||
title: Medios
|
||||
metadata: Metadatos
|
||||
open: Aperir message
|
||||
original_status: Message original
|
||||
status_changed: Messages cambiate
|
||||
title: Messages del conto
|
||||
trending: Tendentias
|
||||
visibility: Visibilitate
|
||||
with_media: Con medios
|
||||
strikes:
|
||||
actions:
|
||||
delete_statuses: "%{name} ha delite le messages de %{target}"
|
||||
disable: "%{name} ha gelate le conto de %{target}"
|
||||
mark_statuses_as_sensitive: "%{name} ha marcate le messages de %{target} como sensibile"
|
||||
none: "%{name} ha inviate un advertimento a %{target}"
|
||||
sensitive: "%{name} ha marcate le conto de %{target} como sensibile"
|
||||
silence: "%{name} ha limitate le conto de %{target}"
|
||||
suspend: "%{name} ha suspendite le conto de %{target}"
|
||||
appeal_approved: Appello facite
|
||||
appeal_pending: Appello pendente
|
||||
appeal_rejected: Appello rejectate
|
||||
system_checks:
|
||||
elasticsearch_preset:
|
||||
action: Vide documentation
|
||||
elasticsearch_preset_single_node:
|
||||
action: Vide documentation
|
||||
rules_check:
|
||||
action: Gerer le regulas del servitor
|
||||
software_version_critical_check:
|
||||
action: Vider le actualisationes disponibile
|
||||
message_html: Un actualisation critic de Mastodon es disponibile, actualisa lo le plus rapide possibile.
|
||||
software_version_patch_check:
|
||||
action: Vider le actualisationes disponibile
|
||||
upload_check_privacy_error:
|
||||
action: Verifica hic pro plus de information
|
||||
upload_check_privacy_error_object_storage:
|
||||
action: Verifica hic pro plus de information
|
||||
trends:
|
||||
approved: Approbate
|
||||
rejected: Rejectate
|
||||
tags:
|
||||
not_usable: Non pote esser usate
|
||||
title: Tendentias
|
||||
warning_presets:
|
||||
add_new: Adder nove
|
||||
delete: Deler
|
||||
webhooks:
|
||||
delete: Deler
|
||||
disable: Disactivar
|
||||
disabled: Disactivate
|
||||
enable: Activar
|
||||
events: Eventos
|
||||
status: Stato
|
||||
admin_mailer:
|
||||
new_critical_software_updates:
|
||||
subject: Actualisationes critic de Mastodon es disponibile pro %{instance}!
|
||||
new_software_updates:
|
||||
subject: Nove versiones de Mastodon es disponibile pro %{instance}!
|
||||
appearance:
|
||||
advanced_web_interface: Interfacie web avantiate
|
||||
sensitive_content: Contento sensibile
|
||||
application_mailer:
|
||||
notification_preferences: Cambiar preferentias de e-mail
|
||||
settings: 'Cambiar preferentias de e-mail: %{link}'
|
||||
unsubscribe: Desubscriber
|
||||
view: 'Vider:'
|
||||
view_profile: Vider profilo
|
||||
view_status: Vider message
|
||||
applications:
|
||||
created: Application create con successo
|
||||
destroyed: Application delite con successo
|
||||
logout: Clauder le session
|
||||
auth:
|
||||
confirmations:
|
||||
welcome_title: Benvenite, %{name}!
|
||||
delete_account: Deler le conto
|
||||
logout: Clauder le session
|
||||
progress:
|
||||
details: Tu detalios
|
||||
set_new_password: Definir un nove contrasigno
|
||||
status:
|
||||
account_status: Stato del conto
|
||||
view_strikes: Examinar le admonitiones passate contra tu conto
|
||||
challenge:
|
||||
invalid_password: Contrasigno non valide
|
||||
deletes:
|
||||
proceed: Deler le conto
|
||||
success_msg: Tu conto esseva delite con successo
|
||||
warning:
|
||||
data_removal: Tu messages e altere datos essera removite permanentemente
|
||||
email_change_html: Tu pote <a href="%{path}">cambiar tu adresse de e-mail</a> sin deler tu conto
|
||||
disputes:
|
||||
strikes:
|
||||
action_taken: Action prendite
|
||||
appeal: Facer appello
|
||||
appeal_approved: Iste admonition ha essite annullate in appello e non es plus valide
|
||||
appeal_rejected: Le appello ha essite rejectate
|
||||
appeal_submitted_at: Appello submittite
|
||||
appealed_msg: Tu appello ha essite submittite. Si es approbate, tu recipera notification.
|
||||
appeals:
|
||||
submit: Submitter appello
|
||||
approve_appeal: Approbar apello
|
||||
associated_report: Signalation associate
|
||||
created_at: Del data
|
||||
description_html: Istes es le actiones prendite contra tu conto e le advertimentos que te ha essite inviate per le personal de %{instance}.
|
||||
recipient: Adressate a
|
||||
reject_appeal: Rejectar appello
|
||||
status: Message №%{id}
|
||||
status_removed: Le message ha ja essite removite del systema
|
||||
title: "%{action} del %{date}"
|
||||
title_actions:
|
||||
delete_statuses: Elimination de messages
|
||||
disable: Gelamento del conto
|
||||
mark_statuses_as_sensitive: Marcation de messages como sensibile
|
||||
none: Advertimento
|
||||
sensitive: Marcation del conto como sensibile
|
||||
silence: Limitation del conto
|
||||
suspend: Suspension del conto
|
||||
your_appeal_approved: Tu appello ha essite approbate
|
||||
your_appeal_pending: Tu ha submittite un appello
|
||||
your_appeal_rejected: Tu appello ha essite rejectate
|
||||
edit_profile:
|
||||
basic_information: Information basic
|
||||
other: Alteres
|
||||
errors:
|
||||
'422':
|
||||
content: Le verification de securitate ha fallite. Bloca tu le cookies?
|
||||
existing_username_validator:
|
||||
not_found_multiple: non poteva trovar %{usernames}
|
||||
exports:
|
||||
|
@ -478,6 +918,7 @@ ia:
|
|||
blocks: Tu ha blocate
|
||||
bookmarks: Marcapaginas
|
||||
csv: CSV
|
||||
domain_blocks: Blocadas de dominio
|
||||
mutes: Tu ha silentiate
|
||||
storage: Immagazinage de medios
|
||||
featured_tags:
|
||||
|
@ -496,6 +937,10 @@ ia:
|
|||
title: Modificar filtro
|
||||
index:
|
||||
delete: Deler
|
||||
title: Filtros
|
||||
new:
|
||||
save: Salveguardar nove filtro
|
||||
title: Adder nove filtro
|
||||
generic:
|
||||
all: Toto
|
||||
cancel: Cancellar
|
||||
|
@ -509,12 +954,37 @@ ia:
|
|||
imports:
|
||||
errors:
|
||||
empty: File CSV vacue
|
||||
invalid_csv_file: 'File CSV non valide. Error: %{error}'
|
||||
too_large: Le file es troppo longe
|
||||
failures: Fallimentos
|
||||
overwrite_preambles:
|
||||
blocking_html: Tu es sur le puncto de <strong>reimplaciar tu lista de blocadas</strong> per usque a <strong>%{total_items} contos</strong> proveniente de <strong>%{filename}</strong>.
|
||||
domain_blocking_html: Tu es sur le puncto de <strong>reimplaciar tu lista de blocadas de dominio</strong> per usque a <strong>%{total_items} dominios</strong> proveniente de <strong>%{filename}</strong>.
|
||||
preambles:
|
||||
blocking_html: Tu es sur le puncto de <strong>blocar</strong> usque a <strong>%{total_items} contos</strong> a partir de <strong>%{filename}</strong>.
|
||||
domain_blocking_html: Tu es sur le puncto de <strong>blocar</strong> usque a <strong>%{total_items} dominios</strong> a partir de <strong>%{filename}</strong>.
|
||||
preface: Tu pote importar datos que tu ha exportate de un altere servitor, como un lista de personas que tu seque o bloca.
|
||||
recent_imports: Importationes recente
|
||||
status: Stato
|
||||
titles:
|
||||
blocking: Importation de contos blocate
|
||||
bookmarks: Importation de marcapaginas
|
||||
domain_blocking: Importation de dominios blocate
|
||||
lists: Importation de listas
|
||||
muting: Importation de contos silentiate
|
||||
type: Typo de importation
|
||||
type_groups:
|
||||
constructive: Sequites e marcapaginas
|
||||
destructive: Blocadas e silentiamentos
|
||||
types:
|
||||
blocking: Lista de blocadas
|
||||
bookmarks: Marcapaginas
|
||||
domain_blocking: Lista de dominios blocate
|
||||
lists: Listas
|
||||
upload: Incargar
|
||||
invites:
|
||||
delete: Disactivar
|
||||
expired: Expirate
|
||||
expires_in:
|
||||
'1800': 30 minutas
|
||||
'21600': 6 horas
|
||||
|
@ -544,9 +1014,90 @@ ia:
|
|||
migrations:
|
||||
errors:
|
||||
not_found: non poterea esser trovate
|
||||
move_handler:
|
||||
carry_blocks_over_text: Iste usator ha cambiate de conto desde %{acct}, que tu habeva blocate.
|
||||
notification_mailer:
|
||||
follow:
|
||||
title: Nove sequitor
|
||||
follow_request:
|
||||
title: Nove requesta de sequimento
|
||||
mention:
|
||||
action: Responder
|
||||
poll:
|
||||
subject: Un inquesta de %{name} ha finite
|
||||
pagination:
|
||||
next: Sequente
|
||||
preferences:
|
||||
other: Altere
|
||||
public_timelines: Chronologias public
|
||||
privacy_policy:
|
||||
title: Politica de confidentialitate
|
||||
relationships:
|
||||
activity: Activitate del conto
|
||||
most_recent: Plus recente
|
||||
status: Stato del conto
|
||||
sessions:
|
||||
activity: Ultime activitate
|
||||
browser: Navigator
|
||||
browsers:
|
||||
alipay: Alipay
|
||||
blackberry: BlackBerry
|
||||
chrome: Chrome
|
||||
edge: Microsoft Edge
|
||||
electron: Electron
|
||||
firefox: Firefox
|
||||
generic: Navigator incognite
|
||||
huawei_browser: Huawei Browser
|
||||
ie: Internet Explorer
|
||||
micro_messenger: MicroMessenger
|
||||
nokia: Navigator de Nokia S40 Ovi
|
||||
opera: Opera
|
||||
otter: Otter
|
||||
phantom_js: PhantomJS
|
||||
qq: QQ Browser
|
||||
safari: Safari
|
||||
uc_browser: UC Browser
|
||||
unknown_browser: Navigator Incognite
|
||||
weibo: Weibo
|
||||
current_session: Session actual
|
||||
date: Data
|
||||
description: "%{browser} sur %{platform}"
|
||||
platforms:
|
||||
adobe_air: Adobe Air
|
||||
android: Android
|
||||
blackberry: BlackBerry
|
||||
chrome_os: ChromeOS
|
||||
firefox_os: Firefox OS
|
||||
ios: iOS
|
||||
kai_os: KaiOS
|
||||
linux: Linux
|
||||
mac: macOS
|
||||
unknown_platform: Platteforma incognite
|
||||
windows: Windows
|
||||
windows_mobile: Windows Mobile
|
||||
windows_phone: Windows Phone
|
||||
settings:
|
||||
account: Conto
|
||||
account_settings: Parametros de conto
|
||||
appearance: Apparentia
|
||||
delete: Deletion de conto
|
||||
development: Disveloppamento
|
||||
edit_profile: Modificar profilo
|
||||
import: Importar
|
||||
migrate: Migration de conto
|
||||
notifications: Notificationes de e-mail
|
||||
preferences: Preferentias
|
||||
profile: Profilo public
|
||||
relationships: Sequites e sequitores
|
||||
strikes: Admonitiones de moderation
|
||||
severed_relationships:
|
||||
event_type:
|
||||
domain_block: Suspension del servitor (%{target_name})
|
||||
user_domain_block: Tu ha blocate %{target_name}
|
||||
preamble: Tu pote perder sequites e sequitores quando tu bloca un dominio o quando tu moderatores decide suspender un servitor remote. Quando isto occurre, tu potera discargar listas de relationes rumpite, a inspectar e eventualmente importar in un altere servitor.
|
||||
type: Evento
|
||||
statuses:
|
||||
open_in_web: Aperir in le web
|
||||
poll:
|
||||
vote: Votar
|
||||
show_more: Monstrar plus
|
||||
|
@ -563,7 +1114,13 @@ ia:
|
|||
'604800': 1 septimana
|
||||
'63113904': 2 annos
|
||||
'7889238': 3 menses
|
||||
stream_entries:
|
||||
sensitive_content: Contento sensibile
|
||||
strikes:
|
||||
errors:
|
||||
too_late: Es troppo tarde pro facer appello contra iste admonition
|
||||
themes:
|
||||
contrast: Mastodon (Alte contrasto)
|
||||
default: Mastodon (Obscur)
|
||||
mastodon-light: Mastodon (Clar)
|
||||
system: Automatic (usar thema del systema)
|
||||
|
@ -574,6 +1131,24 @@ ia:
|
|||
user_mailer:
|
||||
appeal_approved:
|
||||
action: Parametros de conto
|
||||
explanation: Le appello contra le admonition contra tu conto del %{strike_date}, que tu ha submittite le %{appeal_date}, ha essite approbate. Tu conto ha de novo un bon reputation.
|
||||
appeal_rejected:
|
||||
explanation: Le appello contra le admonition contra tu conto del %{strike_date}, que tu ha submittite le %{appeal_date}, ha essite rejectate.
|
||||
warning:
|
||||
appeal: Submitter un appello
|
||||
subject:
|
||||
none: Advertimento pro %{acct}
|
||||
sensitive: Tu messages sur %{acct} essera marcate como sensibile a partir de ora
|
||||
silence: Tu conto %{acct} ha essite limitate
|
||||
suspend: Tu conto %{acct} ha essite suspendite
|
||||
title:
|
||||
delete_statuses: Messages removite
|
||||
disable: Conto gelate
|
||||
mark_statuses_as_sensitive: Messages marcate como sensibile
|
||||
none: Advertimento
|
||||
sensitive: Conto marcate como sensibile
|
||||
silence: Conto limitate
|
||||
suspend: Conto suspendite
|
||||
welcome:
|
||||
apps_android_action: Obtene lo sur Google Play
|
||||
apps_ios_action: Discargar sur le App Store
|
||||
|
@ -582,6 +1157,9 @@ ia:
|
|||
edit_profile_action: Personalisar
|
||||
edit_profile_title: Personalisar tu profilo
|
||||
feature_action: Apprender plus
|
||||
follow_action: Sequer
|
||||
post_title: Face tu prime message
|
||||
share_action: Compartir
|
||||
share_title: Compartir tu profilo de Mastodon
|
||||
subject: Benvenite in Mastodon
|
||||
verification:
|
||||
|
|
|
@ -737,6 +737,7 @@ ja:
|
|||
desc_html: この機能は hCaptcha による外部スクリプトを使用しますが、hCaptcha にはセキュリティとプライバシーの懸念が考えられます。また、<strong>CAPTCHAにより新規登録のアクセシビリティが大幅に損なわれる可能性があり、身体および精神障害者においては特に顕著です。</strong>以上の理由から、承認制や招待制を基本とするなど、代わりの登録手順を提供することを検討してください。
|
||||
title: 新規ユーザーのアカウント確認にCHAPCHAを要求する
|
||||
content_retention:
|
||||
danger_zone: 危険な操作
|
||||
preamble: ユーザーが生成したコンテンツがどのように Mastodon に保存されるかを管理します。
|
||||
title: コンテンツの保持
|
||||
default_noindex:
|
||||
|
|
|
@ -410,6 +410,8 @@ lt:
|
|||
silence: Riboti
|
||||
suspend: Pristabdyti
|
||||
title: Naujos domeno blokas
|
||||
public_comment: Viešas komentaras
|
||||
public_comment_hint: Komentaras apie šį domeno apribojimą plačiajai visuomenei, jei įjungtas domenų apribojimų sąrašo reklamavimas.
|
||||
reject_media: Atmesti medijos failus
|
||||
reject_media_hint: Panaikina lokaliai saugomus medijos failus bei atsisako jų parsisiuntimo ateityje. Neliečia užblokavimu
|
||||
reject_reports: Atmesti ataskaitas
|
||||
|
@ -427,11 +429,14 @@ lt:
|
|||
title: El pašto juodasis sąrašas
|
||||
instances:
|
||||
by_domain: Domenas
|
||||
content_policies:
|
||||
reason: Viešoji priežastis
|
||||
delivery_available: Pristatymas galimas
|
||||
moderation:
|
||||
all: Visi
|
||||
limited: Limituotas
|
||||
title: Moderacija
|
||||
public_comment: Viešas komentaras
|
||||
title: Federacija
|
||||
total_blocked_by_us: Mes užblokavome
|
||||
total_followed_by_them: Jų sekami
|
||||
|
@ -449,11 +454,11 @@ lt:
|
|||
relays:
|
||||
add_new: Pridėti naują pamainą
|
||||
delete: Ištrinti
|
||||
description_html: "<strong>Federacijos perjungėjas</strong> tai tarpinis serveris, kuris apsikeičia didelios apimties informacija tarp kitų serverių. <strong> Tai gali padėti mažesniems serveriams atrasti turinį iš fedi-visatos</strong>, kuris kitaip reikalautų vartotojų lokaliai sekti kitus žmones naudojantis kitus tolimus serverius."
|
||||
description_html: "<strong>Federacijos perdavimas</strong> – tai tarpinis serveris, kuris keičiasi dideliais viešų įrašų kiekiais tarp jį prenumeruojančių ir skelbiančių serverių. <strong>Jis gali padėti mažiems ir vidutiniams serveriams atrasti fediverse esantį turinį</strong>, nes priešingu atveju vietiniams naudotojams reikėtų rankiniu būdu sekti kitus žmones iš nutolusių serverių."
|
||||
disable: Išjungti
|
||||
disabled: Išjungtas
|
||||
enable: Įjungti
|
||||
enable_hint: Kai įjungta, Jūsų serveris prenumeruos visas viešas žinutes iš šio tinklo, ir pradės siųsti šio serverio viešas žinutes į tinklą.
|
||||
enable_hint: Kai bus įjungtas, tavo serveris užsiprenumeruos visus šio perdavimo viešus įrašus ir pradės į jį siųsti šio serverio viešus įrašus.
|
||||
enabled: Įjungtas
|
||||
inbox_url: Perdavimo URL
|
||||
pending: Laukiama perdavimo patvirtinimo
|
||||
|
@ -504,6 +509,8 @@ lt:
|
|||
desc_html: Tai priklauso nuo hCaptcha išorinių skriptų, kurie gali kelti susirūpinimą dėl saugumo ir privatumo. Be to, <strong>dėl to registracijos procesas kai kuriems žmonėms (ypač neįgaliesiems) gali būti gerokai sunkiau prieinami</strong>. Dėl šių priežasčių apsvarstyk alternatyvias priemones, pavyzdžiui, patvirtinimu arba kvietimu grindžiamą registraciją.
|
||||
content_retention:
|
||||
danger_zone: Pavojinga zona
|
||||
discovery:
|
||||
public_timelines: Viešieji laiko skalės
|
||||
domain_blocks:
|
||||
all: Visiems
|
||||
registrations:
|
||||
|
@ -543,7 +550,7 @@ lt:
|
|||
body: Mastodon verčia savanoriai.
|
||||
guide_link_text: Visi gali prisidėti.
|
||||
application_mailer:
|
||||
notification_preferences: Keisti el pašto parinktis
|
||||
notification_preferences: Keisti el. pašto nuostatas
|
||||
settings: 'Keisti el. pašto nuostatas: %{link}'
|
||||
view: 'Peržiūra:'
|
||||
view_profile: Peržiurėti profilį
|
||||
|
@ -635,7 +642,7 @@ lt:
|
|||
contexts:
|
||||
home: Namų laiko juosta
|
||||
notifications: Priminimai
|
||||
public: Viešos laiko juostos
|
||||
public: Viešieji laiko skalės
|
||||
thread: Pokalbiai
|
||||
edit:
|
||||
title: Keisti filtrą
|
||||
|
@ -727,6 +734,8 @@ lt:
|
|||
prev: Ankstesnis
|
||||
preferences:
|
||||
other: Kita
|
||||
posting_defaults: Skelbimo numatytosios nuostatos
|
||||
public_timelines: Viešieji laiko skalės
|
||||
privacy:
|
||||
hint_html: "<strong>Tikrink, kaip nori, kad tavo profilis ir įrašai būtų randami.</strong> Įjungus įvairias Mastodon funkcijas, jos gali padėti pasiekti platesnę auditoriją. Akimirką peržiūrėk šiuos nustatymus, kad įsitikintum, jog jie atitinka tavo naudojimo būdą."
|
||||
redirects:
|
||||
|
@ -769,7 +778,8 @@ lt:
|
|||
import: Importuoti
|
||||
migrate: Paskyros migracija
|
||||
notifications: El. laiško pranešimai
|
||||
preferences: Preferencijos
|
||||
preferences: Nuostatos
|
||||
profile: Viešas profilis
|
||||
two_factor_authentication: Dviejų veiksnių autentikacija
|
||||
statuses:
|
||||
attached:
|
||||
|
|
|
@ -751,6 +751,7 @@ pt-PT:
|
|||
desc_html: Isto depende de scripts externos da hCaptcha, o que pode ser uma preocupação de segurança e privacidade. Além disso, <strong>isto pode tornar o processo de registo menos acessível para algumas pessoas (especialmente as com limitações físicas)</strong>. Por isso, considere medidas alternativas tais como registo mediante aprovação ou sob convite.
|
||||
title: Requerer que novos utilizadores resolvam um CAPTCHA para confirmar a sua conta
|
||||
content_retention:
|
||||
danger_zone: Zona de perigo
|
||||
preamble: Controle como o conteúdo gerado pelos utilizadores é armazenado no Mastodon.
|
||||
title: Retenção de conteúdo
|
||||
default_noindex:
|
||||
|
|
|
@ -240,6 +240,7 @@ ar:
|
|||
backups_retention_period: فترة الاحتفاظ بأرشيف المستخدم
|
||||
bootstrap_timeline_accounts: أوصي دائما بهذه الحسابات للمستخدمين الجدد
|
||||
closed_registrations_message: رسالة مخصصة عندما يكون التسجيل غير متاح
|
||||
content_cache_retention_period: مدة الاحتفاظ بالمحتوى البعيد
|
||||
custom_css: سي أس أس CSS مخصص
|
||||
mascot: جالب حظ مخصص (قديم)
|
||||
media_cache_retention_period: مدة الاحتفاظ بالتخزين المؤقت للوسائط
|
||||
|
|
|
@ -77,9 +77,12 @@ en-GB:
|
|||
warn: Hide the filtered content behind a warning mentioning the filter's title
|
||||
form_admin_settings:
|
||||
activity_api_enabled: Counts of locally published posts, active users, and new registrations in weekly buckets
|
||||
app_icon: WEBP, PNG, GIF or JPG. Overrides the default app icon on mobile devices with a custom icon.
|
||||
backups_retention_period: Keep generated user archives for the specified number of days.
|
||||
bootstrap_timeline_accounts: These accounts will be pinned to the top of new users' follow recommendations.
|
||||
closed_registrations_message: Displayed when sign-ups are closed
|
||||
custom_css: You can apply custom styles on the web version of Mastodon.
|
||||
favicon: WEBP, PNG, GIF or JPG. Overrides the default Mastodon favicon with a custom icon.
|
||||
mascot: Overrides the illustration in the advanced web interface.
|
||||
peers_api_enabled: A list of domain names this server has encountered in the fediverse. No data is included here about whether you federate with a given server, just that your server knows about it. This is used by services that collect statistics on federation in a general sense.
|
||||
profile_directory: The profile directory lists all users who have opted-in to be discoverable.
|
||||
|
|
|
@ -77,11 +77,13 @@ en:
|
|||
warn: Hide the filtered content behind a warning mentioning the filter's title
|
||||
form_admin_settings:
|
||||
activity_api_enabled: Counts of locally published posts, active users, and new registrations in weekly buckets
|
||||
app_icon: WEBP, PNG, GIF or JPG. Overrides the default app icon on mobile devices with a custom icon.
|
||||
backups_retention_period: Users have the ability to generate archives of their posts to download later. When set to a positive value, these archives will be automatically deleted from your storage after the specified number of days.
|
||||
bootstrap_timeline_accounts: These accounts will be pinned to the top of new users' follow recommendations.
|
||||
closed_registrations_message: Displayed when sign-ups are closed
|
||||
content_cache_retention_period: All posts from other servers (including boosts and replies) will be deleted after the specified number of days, without regard to any local user interaction with those posts. This includes posts where a local user has marked it as bookmarks or favorites. Private mentions between users from different instances will also be lost and impossible to restore. Use of this setting is intended for special purpose instances and breaks many user expectations when implemented for general purpose use.
|
||||
custom_css: You can apply custom styles on the web version of Mastodon.
|
||||
favicon: WEBP, PNG, GIF or JPG. Overrides the default Mastodon favicon with a custom icon.
|
||||
mascot: Overrides the illustration in the advanced web interface.
|
||||
media_cache_retention_period: Media files from posts made by remote users are cached on your server. When set to a positive value, media will be deleted after the specified number of days. If the media data is requested after it is deleted, it will be re-downloaded, if the source content is still available. Due to restrictions on how often link preview cards poll third-party sites, it is recommended to set this value to at least 14 days, or link preview cards will not be updated on demand before that time.
|
||||
peers_api_enabled: A list of domain names this server has encountered in the fediverse. No data is included here about whether you federate with a given server, just that your server knows about it. This is used by services that collect statistics on federation in a general sense.
|
||||
|
|
|
@ -77,10 +77,13 @@ he:
|
|||
warn: הסתר את התוכן המסונן מאחורי אזהרה עם כותרת המסנן
|
||||
form_admin_settings:
|
||||
activity_api_enabled: מספר ההודעות שפורסמו מקומית, משתמשים פעילים, והרשמות חדשות בדליים שבועיים
|
||||
backups_retention_period: למשתמשים יש יכולת לבקש ארכיון של הודעותיהם להורדה מאוחר יותר. כאשר נבחר ערך חיובי, הארכיונים הללו ימחקו מאחסון לאחר מספר הימים שצוינו.
|
||||
bootstrap_timeline_accounts: חשבונות אלו יוצמדו לראש רשימת המלצות המעקב של משתמשים חדשים.
|
||||
closed_registrations_message: להציג כאשר הרשמות חדשות אינן מאופשרות
|
||||
content_cache_retention_period: כל ההודעות משרתים אחרים (לרבות הדהודים ותגובות) ימחקו אחרי מספר ימים, ללא קשר לאינטראקציה של משתמשים מקומיים איתם. בכלל זה הודעות שהמתשתמשים המקומיים סימנו בסימניה או חיבוב. איזכורים פרטיים ("דיאם") בין משתמשים בין שרתים שונים יאבדו גם הם ולא תהיה אפשרות לשחזרם. השימוש באפשרות הזו מיועד לשרתים עם ייעוד מיוחד ושובר את ציפיותיהם של רב המשתמשים כאשר האפשרות מופעלת בשרת לשימוש כללי.
|
||||
custom_css: ניתן לבחור ערכות סגנון אישיות בגרסת הדפדפן של מסטודון.
|
||||
mascot: בחירת ציור למנשק הווב המתקדם.
|
||||
media_cache_retention_period: קבצי מדיה מהודעות שהגיעו משרתים רחוקים נשמרות על השרת שלך. כאשר יבחר פה מספר חיובי, המדיה תמחק לאחר מספר ימים כמצוין. אם המידע יבוקש שוב לאחר שנמחק, הוא יורד מחדש, אם המידע עדיין זמין בצד הרחוק. עקב מגבלות על תכיפות שליפת כרטיסי קדימון מאתרים מרוחקים, מומלץ לכוון את הערך ל־14 יום לפחות, או שכרטיסי קדימונים לא יעודכנו לפי דרישה לפני חלוף חלון הזמן הזה.
|
||||
peers_api_enabled: רשימת השרתים ששרת זה פגש בפדיוורס. לא כולל מידע לגבי קשר ישיר עם שרת נתון, אלא רק שידוע לשרת זה על קיומו. מידע זה משמש שירותים האוספים סטטיסטיקות כלליות על הפדרציה.
|
||||
profile_directory: ספריית הפרופילים מציגה ברשימה את כל המשתמשים שביקשו להיות ניתנים לגילוי.
|
||||
require_invite_text: כאשר הרשמות דורשות אישור ידני, הפיכת טקסט ה"מדוע את/ה רוצה להצטרף" להכרחי במקום אופציונלי
|
||||
|
|
|
@ -90,11 +90,54 @@ ia:
|
|||
site_contact_email: Como pote contactar te le personas pro questiones legal o de supporto.
|
||||
site_contact_username: Como pote contactar te le personas re Mastodon.
|
||||
site_extended_description: Qualcunque information additional que pote esser utile al visitatores e a tu usatores. Pote esser structurate con syntaxe de markdown.
|
||||
site_short_description: Un breve description pro adjutar a univocamente identificar tu servitor. Qui ha exequite illo, proque es illo?
|
||||
site_terms: Usa tu proprie politica de confidentialitate o lassa blanc pro usar le predefinite. Pote esser structurate con syntaxe de markdown.
|
||||
site_title: Como le personas pote referer se a tu servitor in addition su nomine de dominio.
|
||||
status_page_url: URL de un pagina ubi le personas pote vider le stato de iste servitor durante un interruption
|
||||
theme: Thema que le visitatores disconnexe e le nove usatores vide.
|
||||
thumbnail: Un imagine approximativemente 2:1 monstrate al latere del informationes de tu servitor.
|
||||
timeline_preview: Le visitatores disconnexe potera navigar per le plus recente messages public disponibile sur le servitor.
|
||||
trendable_by_default: Saltar le revision manual del contento de tendentia. Elementos singule pote ancora esser removite de tendentias post le facto.
|
||||
trends: Tendentias monstra que messages, hashtags e novas gania traction sur tu servitor.
|
||||
trends_as_landing_page: Monstrar contento de tendentia a usatores disconnexe e visitatores in vice que un description de iste servitor. Require tendentias esser activate.
|
||||
form_challenge:
|
||||
current_password: Tu entra in un area secur
|
||||
imports:
|
||||
data: File CSV exportate ab un altere servitor de Mastodon
|
||||
invite_request:
|
||||
text: Isto nos adjutara a revider tu application
|
||||
ip_block:
|
||||
comment: Optional. Memorar perque tu ha addite iste regula.
|
||||
expires_in: Le adresses IP es un ressource finite, illos es aliquando compartite e sovente cambia manos. Pro iste ration, blocadas de IP indefinite non es recommendate.
|
||||
ip: Inserer un adresse IPv4 o IPv6. Tu pote blocar campos integre per le syntaxe CIDR. Sia attente pro non disconnecter te!
|
||||
severities:
|
||||
no_access: Blocar accesso a tote le ressources
|
||||
sign_up_block: Nove inscriptiones non sera possibile
|
||||
sign_up_requires_approval: Nove inscriptiones requirera tu approbation
|
||||
severity: Seliger que evenira con requestas ab iste IP
|
||||
rule:
|
||||
hint: Optional. Forni altere detalios re le regula
|
||||
text: Describe un regula o requisito pro usatores sur iste servitor. Tenta de mantener lo breve e simple
|
||||
sessions:
|
||||
otp: 'Insere le codice a duo factores generate per le app de tu telephono o usa un de tu codices de recuperation:'
|
||||
webauthn: Si illo es un clave USB cura de inserer lo e, si necessari, tocca lo.
|
||||
settings:
|
||||
indexable: Tu pagina del profilo pote apparer in resultatos del recerca sur Google, Bing, e alteros.
|
||||
show_application: Tu sempre sera capace totevia de vider que app publicava tu message.
|
||||
tag:
|
||||
name: Tu pote solo cambiar le inveloppe del litteras, per exemplo, pro render lo plus legibile
|
||||
user:
|
||||
chosen_languages: Si marcate, solo le messages in le linguas seligite sera monstrate in chronologias public
|
||||
role: Le rolo controla que permissos ha le usator
|
||||
user_role:
|
||||
color: Color a esser usate pro le rolo in omne parte del UI, como RGB in formato hexadecimal
|
||||
highlighted: Iste rende le rolo publicamente visibile
|
||||
name: Nomine public del rolo, si rolo es definite a esser monstrate como insignia
|
||||
permissions_as_keys: Usatores con iste rolo habera accesso a...
|
||||
position: Rolo superior decide resolution de conflicto in certe situationes. Certe actiones pote solo esser exequite sur rolos con un prioritate inferior
|
||||
webhook:
|
||||
events: Selige le eventos a inviar
|
||||
template: Compone tu proprie carga utile JSON per interpolation de variabile. Lassar blanc pro JSON predefinite.
|
||||
url: Ubi le eventos essera inviate
|
||||
labels:
|
||||
account:
|
||||
|
@ -105,10 +148,15 @@ ia:
|
|||
indexable: Includer messages public in le resultatos de recerca
|
||||
show_collections: Monstrar sequites e sequitores in le profilo
|
||||
unlocked: Acceptar automaticamente nove sequitores
|
||||
account_alias:
|
||||
acct: Pseudonymo del vetere conto
|
||||
account_migration:
|
||||
acct: Pseudonymo del nove conto
|
||||
account_warning_preset:
|
||||
text: Texto predefinite
|
||||
title: Titulo
|
||||
admin_account_action:
|
||||
include_statuses: Includer messages reportate in le email
|
||||
send_email_notification: Notificar le usator per e-mail
|
||||
text: Advertimento personalisate
|
||||
type: Action
|
||||
|
@ -118,12 +166,19 @@ ia:
|
|||
sensitive: Sensibile
|
||||
silence: Limitar
|
||||
suspend: Suspender
|
||||
warning_preset_id: Usar un aviso predefinite
|
||||
announcement:
|
||||
all_day: Evento quotidian
|
||||
ends_at: Fin del evento
|
||||
scheduled_at: Planificar publication
|
||||
starts_at: Initio del evento
|
||||
text: Annuncio
|
||||
appeal:
|
||||
text: Explicar perque iste decision deberea esser revertite
|
||||
defaults:
|
||||
autofollow: Invitar a sequer tu conto
|
||||
avatar: Pictura de profilo
|
||||
bot: Isto es un conto automatisate
|
||||
chosen_languages: Filtrar linguas
|
||||
confirm_new_password: Confirmar nove contrasigno
|
||||
confirm_password: Confirmar contrasigno
|
||||
|
@ -137,6 +192,7 @@ ia:
|
|||
header: Imagine titulo
|
||||
honeypot: "%{label} (non compilar)"
|
||||
inbox_url: URL del cassa de ingresso de repetitor
|
||||
irreversible: Declinar in vice que celar
|
||||
locale: Lingua de interfacie
|
||||
max_uses: Numero max de usos
|
||||
new_password: Nove contrasigno
|
||||
|
@ -145,15 +201,27 @@ ia:
|
|||
password: Contrasigno
|
||||
phrase: Parola o phrase clave
|
||||
setting_advanced_layout: Activar le interfacie web avantiate
|
||||
setting_aggregate_reblogs: Gruppa promotiones in classificationes temporal
|
||||
setting_always_send_emails: Sempre inviar notificationes per e-mail
|
||||
setting_auto_play_gif: Auto-reproduce GIFs animate
|
||||
setting_boost_modal: Monstrar dialogo de confirmation ante promover
|
||||
setting_default_language: Lingua de publication
|
||||
setting_default_privacy: Confidentialitate del messages
|
||||
setting_default_sensitive: Sempre marcar le medios cmo sensbile
|
||||
setting_delete_modal: Monstrar le dialogo de confirmation ante deler un message
|
||||
setting_disable_swiping: Disactivar le movimentos per glissamento
|
||||
setting_display_media: Visualisation de medios
|
||||
setting_display_media_default: Predefinite
|
||||
setting_display_media_hide_all: Celar toto
|
||||
setting_display_media_show_all: Monstrar toto
|
||||
setting_expand_spoilers: Sempre expander messages marcate con avisos de contento
|
||||
setting_hide_network: Cela tu rete social
|
||||
setting_reduce_motion: Reducer movimento in animationes
|
||||
setting_system_font_ui: Usar typo de litteras predefinite del systema
|
||||
setting_theme: Thema de sito
|
||||
setting_trends: Monstrar le tendentias de hodie
|
||||
setting_unfollow_modal: Monstrar dialogo de confirmation ante cessar de sequer alcuno
|
||||
setting_use_blurhash: Monstrar imagines degradate multicolor pro medios celate
|
||||
setting_use_pending_items: Modo lente
|
||||
severity: Severitate
|
||||
sign_in_token_attempt: Codice de securitate
|
||||
|
@ -162,6 +230,8 @@ ia:
|
|||
username: Nomine de usator
|
||||
username_or_email: Nomine de usator o e-mail
|
||||
whole_word: Parola integre
|
||||
email_domain_block:
|
||||
with_dns_records: Includer registrationes MX e IPs del dominio
|
||||
featured_tag:
|
||||
name: Hashtag
|
||||
filters:
|
||||
|
@ -169,55 +239,98 @@ ia:
|
|||
hide: Celar completemente
|
||||
warn: Celar con un advertimento
|
||||
form_admin_settings:
|
||||
activity_api_enabled: Publicar statisticas aggregate re le activitate de usator in le API
|
||||
backups_retention_period: Periodo de retention del archivo de usator
|
||||
bootstrap_timeline_accounts: Recommenda sempre iste contos a nove usatores
|
||||
closed_registrations_message: Message personalisate quando le inscriptiones non es disponibile
|
||||
content_cache_retention_period: Periodo de retention del contento remote
|
||||
custom_css: CSS personalisate
|
||||
mascot: Personalisar le mascotte (hereditage)
|
||||
media_cache_retention_period: Periodo de retention del cache multimedial
|
||||
peers_api_enabled: Publicar le lista de servitores discoperite in le API
|
||||
profile_directory: Activar directorio de profilos
|
||||
registrations_mode: Qui pote inscriber se
|
||||
require_invite_text: Requirer un ration pro junger se
|
||||
show_domain_blocks: Monstrar le blocadas de dominio
|
||||
show_domain_blocks_rationale: Monstrar perque le dominios era blocate
|
||||
site_contact_email: Adresse de e-mail de contacto
|
||||
site_contact_username: Nomine de usator de contacto
|
||||
site_extended_description: Description extense
|
||||
site_short_description: Description de servitor
|
||||
site_terms: Politica de confidentialitate
|
||||
site_title: Nomine de servitor
|
||||
status_page_url: URL del pagina de stato
|
||||
theme: Thema predefinite
|
||||
thumbnail: Miniatura de servitor
|
||||
timeline_preview: Permitter accesso non authenticate a chronologias public
|
||||
trendable_by_default: Permitter tendentias sin revision previe
|
||||
trends: Activar tendentias
|
||||
trends_as_landing_page: Usar tendentias como pagina de destination
|
||||
interactions:
|
||||
must_be_follower: Blocar notificationes de non-sequaces
|
||||
must_be_following: Blocar notificationes de gente que tu non sequer
|
||||
must_be_following_dm: Blocar messages directe de gente que tu non seque
|
||||
invite:
|
||||
comment: Commento
|
||||
invite_request:
|
||||
text: Perque vole tu junger te?
|
||||
ip_block:
|
||||
comment: Commento
|
||||
ip: IP
|
||||
severities:
|
||||
no_access: Blocar le accesso
|
||||
sign_up_block: Blocar inscriptiones
|
||||
sign_up_requires_approval: Limitar inscriptiones
|
||||
severity: Regula
|
||||
notification_emails:
|
||||
appeal: Alcuno appella un decision de moderator
|
||||
digest: Inviar emails compendio
|
||||
favourite: Alcuno appreciava tu message
|
||||
follow: Alcuno te sequeva
|
||||
follow_request: Alcuno requireva de sequer te
|
||||
mention: Alcuno te mentionava
|
||||
pending_account: Nove conto besonia de revision
|
||||
reblog: Alcuno promoveva tu message
|
||||
report: Un nove reporto es inviate
|
||||
software_updates:
|
||||
all: Notificar sur tote le actualisationes
|
||||
critical: Notificar solmente sur actualisationes critic
|
||||
label: Un nove version de Mastodon es disponibile
|
||||
none: Nunquam notificar sur actualisationes (non recommendate)
|
||||
patch: Notificar re actualisationes de correction de bug
|
||||
trending_tag: Un nove tendentia require revision
|
||||
rule:
|
||||
hint: Information additional
|
||||
text: Regula
|
||||
settings:
|
||||
indexable: Includer pagina de profilo in le motores de recerca
|
||||
show_application: Monstrar ab que app tu ha inviate un message
|
||||
tag:
|
||||
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
|
||||
user_role:
|
||||
color: Color de insignia
|
||||
highlighted: Monstrar le rolo como insignia sur le profilos de usator
|
||||
name: Nomine
|
||||
permissions_as_keys: Permissiones
|
||||
position: Prioritate
|
||||
webhook:
|
||||
events: Eventos activate
|
||||
template: Modello de carga utile
|
||||
url: URL de extremo
|
||||
'no': 'No'
|
||||
not_recommended: Non recommendate
|
||||
overridden: Supplantate
|
||||
recommended: Recommendate
|
||||
required:
|
||||
mark: "*"
|
||||
text: requirite
|
||||
title:
|
||||
sessions:
|
||||
webauthn: Usa un de tu claves de securitate pro acceder
|
||||
'yes': Si
|
||||
|
|
|
@ -77,10 +77,13 @@ ja:
|
|||
warn: フィルタに一致した投稿を非表示にし、フィルタのタイトルを含む警告を表示します
|
||||
form_admin_settings:
|
||||
activity_api_enabled: 週単位でローカルで公開された投稿数、アクティブユーザー数、新規登録者数を表示します
|
||||
backups_retention_period: ユーザーには、後でダウンロードするために投稿のアーカイブを生成する機能があります。正の値に設定すると、これらのアーカイブは指定された日数後に自動的にストレージから削除されます。
|
||||
bootstrap_timeline_accounts: これらのアカウントは、新しいユーザー向けのおすすめユーザーの一番上にピン留めされます。
|
||||
closed_registrations_message: アカウント作成を停止している時に表示されます
|
||||
content_cache_retention_period: 他のサーバーからのすべての投稿(ブーストや返信を含む)は、指定された日数が経過すると、ローカルユーザーとのやりとりに関係なく削除されます。これには、ローカルユーザーがブックマークやお気に入りとして登録した投稿も含まれます。異なるサーバーのユーザー間の非公開な変身も失われ、復元することは不可能です。この設定の使用は特別な目的のインスタンスのためのものであり、一般的な目的のサーバーで使用するした場合、多くのユーザーの期待を裏切ることになります。
|
||||
custom_css: ウェブ版のMastodonでカスタムスタイルを適用できます。
|
||||
mascot: 上級者向けWebインターフェースのイラストを上書きします。
|
||||
media_cache_retention_period: リモートユーザーが投稿したメディアファイルは、あなたのサーバーにキャッシュされます。正の値を設定すると、メディアは指定した日数後に削除されます。削除後にメディアデータが要求された場合、ソースコンテンツがまだ利用可能であれば、再ダウンロードされます。リンクプレビューカードがサードパーティのサイトを更新する頻度に制限があるため、この値を少なくとも14日に設定することをお勧めします。
|
||||
peers_api_enabled: このサーバーが Fediverse で遭遇したドメイン名のリストです。このサーバーが知っているだけで、特定のサーバーと連合しているかのデータは含まれません。これは一般的に Fediverse に関する統計情報を収集するサービスによって使用されます。
|
||||
profile_directory: ディレクトリには、掲載する設定をしたすべてのユーザーが一覧表示されます。
|
||||
require_invite_text: アカウント登録が承認制の場合、登録の際の申請事由の入力を必須にします
|
||||
|
@ -240,6 +243,7 @@ ja:
|
|||
backups_retention_period: ユーザーアーカイブの保持期間
|
||||
bootstrap_timeline_accounts: おすすめユーザーに常に表示するアカウント
|
||||
closed_registrations_message: アカウント作成を停止している時のカスタムメッセージ
|
||||
content_cache_retention_period: リモートコンテンツの保存期間
|
||||
custom_css: カスタムCSS
|
||||
mascot: カスタムマスコット(レガシー)
|
||||
media_cache_retention_period: メディアキャッシュの保持期間
|
||||
|
|
|
@ -77,10 +77,13 @@ pt-PT:
|
|||
warn: Ocultar o conteúdo filtrado por trás de um aviso mencionando o título do filtro
|
||||
form_admin_settings:
|
||||
activity_api_enabled: Contagem, em blocos semanais, de publicações locais, utilizadores ativos e novos registos
|
||||
backups_retention_period: Os utilizadores têm a possibilidade de gerar arquivos das suas mensagens para descarregar mais tarde. Quando definido para um valor positivo, estes arquivos serão automaticamente eliminados do seu armazenamento após o número de dias especificado.
|
||||
bootstrap_timeline_accounts: Estas contas serão destacadas no topo das recomendações aos novos utilizadores.
|
||||
closed_registrations_message: Apresentado quando as inscrições estiverem encerradas
|
||||
content_cache_retention_period: Todas as publicações de outros servidores (incluindo boosts e respostas) serão eliminadas após o número de dias especificado, independentemente de qualquer interação do utilizador local com essas publicações. Isto inclui publicações em que um utilizador local as tenha marcado como favoritas ou adicionado aos items salvos. As menções privadas entre utilizadores de instâncias diferentes também se perderão e serão impossíveis de restaurar. A utilização desta definição destina-se a instâncias para fins especiais e quebra muitas expectativas dos utilizadores quando implementada para utilização geral.
|
||||
custom_css: Pode aplicar estilos personalizados na versão web do Mastodon.
|
||||
mascot: Sobrepõe-se à ilustração na interface web avançada.
|
||||
media_cache_retention_period: Os ficheiros multimédia de publicações feitas por utilizadores remotos são armazenados em cache no seu servidor. Quando definido para um valor positivo, os ficheiros multimédia serão eliminados após o número de dias especificado. Se os ficheiros multimédia forem solicitados depois de terem sido eliminados, serão transferidos novamente, se o conteúdo de origem ainda estiver disponível. Devido a restrições sobre a frequência com que os cartões de pré-visualização de links pesquisam sites de terceiros, recomenda-se que este valor seja definido para, pelo menos, 14 dias, ou os cartões de pré-visualização de links não serão atualizados a pedido antes desse período.
|
||||
peers_api_enabled: Uma lista de nomes de domínio que este servidor encontrou no fediverso. Nenhum dado é incluído aqui sobre se você federa com um determinado servidor, apenas que o seu servidor o conhece. Este serviço é utilizado por serviços que recolhem estatísticas na federação, em termos gerais.
|
||||
profile_directory: O diretório de perfis lista todos os utilizadores que optaram por ter a sua conta a ser sugerida a outros.
|
||||
require_invite_text: Quando as incrições exigirem aprovação manual, faça o texto "Por que se quer juntar a nós?" da solicitação de convite ser obrigatório, em vez de opcional
|
||||
|
@ -240,6 +243,7 @@ pt-PT:
|
|||
backups_retention_period: Período de retenção de arquivos de utilizador
|
||||
bootstrap_timeline_accounts: Recomendar sempre estas contas para novos utilizadores
|
||||
closed_registrations_message: Mensagem personalizada quando as inscrições não estiverem disponíveis
|
||||
content_cache_retention_period: Período de retenção de conteúdos remotos
|
||||
custom_css: CSS personalizado
|
||||
mascot: Mascote personalizada (legado)
|
||||
media_cache_retention_period: Período de retenção de ficheiros de media em cache
|
||||
|
|
|
@ -77,10 +77,13 @@ sq:
|
|||
warn: Fshihe lëndën e filtruar pas një sinjalizimi që përmend titullin e filtrit
|
||||
form_admin_settings:
|
||||
activity_api_enabled: Numër postimesh të botuar lokalisht, përdoruesish aktiv dhe regjistrimesh të reja sipas matjesh javore
|
||||
backups_retention_period: Përdorues kanë aftësinë të prodhojnë arkiva të postimeve të tyre për t’i shkarkuar më vonë. Kur i jepet një vlerë pozitive, këto arkiva do të fshihen automatikisht prej depozitës tuaj pas numrit të dhënë të ditëve.
|
||||
bootstrap_timeline_accounts: Këto llogari do të fiksohen në krye të rekomandimeve për ndjekje nga përdorues të rinj.
|
||||
closed_registrations_message: Shfaqur kur mbyllen dritare regjistrimesh
|
||||
content_cache_retention_period: Krejt postimet prej shërbyesve të tjerë (përfshi përforcime dhe përgjigje) do të fshihen pas numrit të caktuar të ditëve, pa marrë parasysh çfarëdo ndërveprimi përdoruesi me këto postime. Kjo përfshin postime kur një përdorues vendor u ka vënë shenjë si faqerojtës, ose të parapëlqyer. Do të humbin gjithashtu dhe përmendje private mes përdoruesish nga instanca të ndryshme dhe s’do të jetë e mundshme të rikthehen. Përdorimi i këtij rregullimi është menduar për instanca me qëllim të caktuar dhe ndërhyn në çka presin mjaft përdorues, kur sendërtohet për përdorim të përgjithshëm.
|
||||
custom_css: Stile vetjakë mund të aplikoni në versionin web të Mastodon-it.
|
||||
mascot: Anashkalon ilustrimin te ndërfaqja web e thelluar.
|
||||
media_cache_retention_period: Kartela media nga postime të bëra nga përdorues të largët ruhen në një fshehtinë në shërbyesin tuaj. Kur i jepet një vlerë pozitive, media do të fshihet pas numrit të dhënë të ditëve. Nëse të dhënat e medias duhen pas fshirjes, do të rishkarkohen, nëse lënda burim mund të kihet ende. Për shkak kufizimesh mbi sa shpesh skeda paraparjesh lidhjesh ndërveprojnë me sajte palësh të treta, rekomandohet të vihet kjo vlerë të paktën 14 ditë, ose skedat e paraparjes së lidhje s’do të përditësohen duke e kërkuar para asaj kohe.
|
||||
peers_api_enabled: Një listë emrash përkatësish që ky shërbyes ka hasur në fedivers. Këtu s’jepen të dhëna nëse jeni i federuar me shërbyesin e dhënë, thjesht tregohet se shërbyesi juaj e njeh. Kjo përdoret nga shërbime që mbledhin statistika mbi federimin në kuptimin e përgjithshëm.
|
||||
profile_directory: Drejtoria e profileve paraqet krejt përdoruesit që kanë zgjedhur të jenë të zbulueshëm.
|
||||
require_invite_text: Kur regjistrimet lypin miratim dorazi, bëje tekstin “Përse doni të bëheni pjesë?” të detyrueshëm, në vend se opsional
|
||||
|
@ -240,6 +243,7 @@ sq:
|
|||
backups_retention_period: Periudhë mbajtjeje arkivash përdoruesish
|
||||
bootstrap_timeline_accounts: Rekomandoju përherë këto llogari përdoruesve të rinj
|
||||
closed_registrations_message: Mesazh vetjak për pamundësi regjistrimesh të reja
|
||||
content_cache_retention_period: Periudhë mbajtjeje lënde të largët
|
||||
custom_css: CSS Vetjake
|
||||
mascot: Simbol vetjak (e dikurshme)
|
||||
media_cache_retention_period: Periudhë mbajtjeje lënde media
|
||||
|
|
|
@ -77,8 +77,10 @@ th:
|
|||
warn: ซ่อนเนื้อหาที่กรองอยู่หลังคำเตือนที่กล่าวถึงชื่อเรื่องของตัวกรอง
|
||||
form_admin_settings:
|
||||
activity_api_enabled: จำนวนโพสต์ที่เผยแพร่ในเซิร์ฟเวอร์, ผู้ใช้ที่ใช้งานอยู่ และการลงทะเบียนใหม่ในบักเก็ตรายสัปดาห์
|
||||
backups_retention_period: ผู้ใช้มีความสามารถในการสร้างการเก็บถาวรของโพสต์ของเขาเพื่อดาวน์โหลดในภายหลัง เมื่อตั้งเป็นค่าบวก จะลบการเก็บถาวรเหล่านี้ออกจากที่เก็บข้อมูลของคุณโดยอัตโนมัติหลังจากจำนวนวันที่ระบุ
|
||||
bootstrap_timeline_accounts: จะปักหมุดบัญชีเหล่านี้ไว้ด้านบนสุดของคำแนะนำการติดตามของผู้ใช้ใหม่
|
||||
closed_registrations_message: แสดงเมื่อมีการปิดการลงทะเบียน
|
||||
content_cache_retention_period: จะลบโพสต์ทั้งหมดจากเซิร์ฟเวอร์อื่น ๆ (รวมถึงการดันและการตอบกลับ) หลังจากจำนวนวันที่ระบุ โดยไม่คำนึงถึงการโต้ตอบใด ๆ ของผู้ใช้ในเซิร์ฟเวอร์กับโพสต์เหล่านั้น สิ่งนี้รวมถึงโพสต์ที่ผู้ใช้ในเซิร์ฟเวอร์ได้ทำเครื่องหมายโพสต์ว่าเป็นที่คั่นหน้าหรือรายการโปรด การกล่าวถึงแบบส่วนตัวระหว่างผู้ใช้จากอินสแตนซ์ที่แตกต่างกันจะหายไปและไม่สามารถคืนค่าได้เช่นกัน การใช้การตั้งค่านี้มีไว้สำหรับอินสแตนซ์ที่มีวัตถุประสงค์พิเศษและทำลายความคาดหวังของผู้ใช้จำนวนมากเมื่อนำไปใช้สำหรับการใช้งานที่มีวัตถุประสงค์ทั่วไป
|
||||
custom_css: คุณสามารถนำไปใช้ลักษณะที่กำหนดเองใน Mastodon รุ่นเว็บ
|
||||
mascot: เขียนทับภาพประกอบในส่วนติดต่อเว็บขั้นสูง
|
||||
peers_api_enabled: รายการชื่อโดเมนที่เซิร์ฟเวอร์นี้พบในจักรวาลสหพันธ์ ไม่มีข้อมูลรวมอยู่ที่นี่เกี่ยวกับว่าคุณติดต่อกับเซิร์ฟเวอร์ที่กำหนดหรือไม่ เพียงแค่ว่าเซิร์ฟเวอร์ของคุณทราบเกี่ยวกับเซิร์ฟเวอร์ที่กำหนด มีการใช้สิ่งนี้โดยบริการที่เก็บรวบรวมสถิติในการติดต่อกับภายนอกในความหมายทั่วไป
|
||||
|
|
|
@ -524,6 +524,7 @@ sk:
|
|||
many: "%{count} poznámok"
|
||||
one: "%{count} poznámka"
|
||||
other: "%{count} poznámky"
|
||||
action_log: Denník auditu
|
||||
action_taken_by: Zákrok vykonal/a
|
||||
actions:
|
||||
suspend_description_html: Tento účet a všetok jeho obsah bude nedostupný a nakoniec zmazaný, interaktovať s ním bude nemožné. Zvrátiteľné v rámci 30 dní. Uzatvára všetky hlásenia voči tomuto účtu.
|
||||
|
|
|
@ -779,6 +779,7 @@ sl:
|
|||
desc_html: To se zanaša na zunanje skripte hCaptcha in lahko predstavlja tveganje za varnost in zasebnost. Poleg tega <strong>to lahko nekaterim ljudem (posebno invalidom) občutno oteži dostopnost registracijskega postopka</strong>. Zato svetujemo, da razmislite o drugih ukrepih, kot je na primer registracija na podlagi odobritve ali povabila.
|
||||
title: Od novih uporabnikov zahtevaj reševanje CAPTCHA za potrditev računov
|
||||
content_retention:
|
||||
danger_zone: Območje nevarnosti
|
||||
preamble: Nazdor nad hrambo vsebine uporabnikov v Mastodonu.
|
||||
title: Hramba vsebin
|
||||
default_noindex:
|
||||
|
|
|
@ -748,6 +748,7 @@ sq:
|
|||
desc_html: Kjo bazohet në programthe të jashtëm prej hCaptcha, çka mund të përbëjë një shqetësim për sigurinë dhe privatësinë. Veç kësaj, <strong>kjo mund ta bëjë procesin e regjistrimit në shkallë të madhe më pak të përdorshëm për disa persona (veçanërisht ata me paaftësi)</strong>. Për këto arsye, ju lutemi, shihni mundësinë e masave alternative, fjala vjen, bazuar në miratim, ose regjistrim vetëm me ftesa.
|
||||
title: Kërko prej përdoruesve të rinj të zgjidhin një CAPTCHA, si ripohim të llogarisë të tyre
|
||||
content_retention:
|
||||
danger_zone: Zonë rreziku
|
||||
preamble: Kontrolloni se si depozitohen në Mastodon lënda e prodhuar nga përdoruesit.
|
||||
title: Mbajtje lënde
|
||||
default_noindex:
|
||||
|
|
|
@ -1837,6 +1837,7 @@ th:
|
|||
explanation: นี่คือเคล็ดลับบางส่วนที่จะช่วยให้คุณเริ่มต้นใช้งาน
|
||||
feature_action: เรียนรู้เพิ่มเติม
|
||||
feature_audience: Mastodon มีความพิเศษที่ให้คุณจัดการผู้รับสารของคุณได้โดยไม่มีตัวกลาง นอกจากนี้ การติดตั้ง Mastodon บนโครงสร้างพื้นฐานของคุณจะทำให้คุณสามารถติดตาม (และติดตามโดย) เซิร์ฟเวอร์ Mastodon แห่งไหนก็ได้ที่ทำงานอยู่ โดยไม่มีใครสามารถควบคุมได้นอกจากคุณ
|
||||
feature_audience_title: สร้างผู้ชมของคุณด้วยความมั่นใจ
|
||||
follow_action: ติดตาม
|
||||
follow_step: การติดตามผู้คนที่น่าสนใจคือสิ่งที่ Mastodon ให้ความสำคัญ
|
||||
follow_title: ปรับแต่งฟีดหน้าแรกของคุณ
|
||||
|
|
|
@ -63,6 +63,7 @@ Rails.application.routes.draw do
|
|||
tokens: 'oauth/tokens'
|
||||
end
|
||||
|
||||
get '.well-known/oauth-authorization-server', to: 'well_known/oauth_metadata#show', as: :oauth_metadata, defaults: { format: 'json' }
|
||||
get '.well-known/host-meta', to: 'well_known/host_meta#show', as: :host_meta, defaults: { format: 'xml' }
|
||||
get '.well-known/nodeinfo', to: 'well_known/node_info#index', as: :nodeinfo, defaults: { format: 'json' }
|
||||
get '.well-known/webfinger', to: 'well_known/webfinger#show', as: :webfinger
|
||||
|
|
|
@ -6,7 +6,7 @@ namespace :api, format: false do
|
|||
|
||||
# JSON / REST API
|
||||
namespace :v1 do
|
||||
resources :statuses, only: [:create, :show, :update, :destroy] do
|
||||
resources :statuses, only: [:index, :create, :show, :update, :destroy] do
|
||||
scope module: :statuses do
|
||||
resources :reblogged_by, controller: :reblogged_by_accounts, only: :index
|
||||
resources :favourited_by, controller: :favourited_by_accounts, only: :index
|
||||
|
@ -184,7 +184,7 @@ namespace :api, format: false do
|
|||
resources :familiar_followers, only: :index
|
||||
end
|
||||
|
||||
resources :accounts, only: [:create, :show] do
|
||||
resources :accounts, only: [:index, :create, :show] do
|
||||
scope module: :accounts do
|
||||
resources :statuses, only: :index
|
||||
resources :followers, only: :index, controller: :follower_accounts
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require_relative '../../lib/mastodon/migration_helpers'
|
||||
|
||||
class ConvertFileSizeColumnsToBigInt < ActiveRecord::Migration[7.1]
|
||||
include Mastodon::MigrationHelpers
|
||||
|
||||
TABLE_COLUMN_MAPPING = [
|
||||
[:accounts, :avatar_file_size],
|
||||
[:accounts, :header_file_size],
|
||||
[:custom_emojis, :image_file_size],
|
||||
[:imports, :data_file_size],
|
||||
[:media_attachments, :file_file_size],
|
||||
[:media_attachments, :thumbnail_file_size],
|
||||
[:preview_cards, :image_file_size],
|
||||
[:site_uploads, :file_file_size],
|
||||
].freeze
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
def migrate_columns(to_type)
|
||||
TABLE_COLUMN_MAPPING.each do |column_parts|
|
||||
table, column = column_parts
|
||||
|
||||
# Skip this if we're resuming and already did this one.
|
||||
next if column_for(table, column).sql_type == to_type.to_s
|
||||
|
||||
safety_assured do
|
||||
change_column_type_concurrently table, column, to_type
|
||||
cleanup_concurrent_column_type_change table, column
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def up
|
||||
migrate_columns(:bigint)
|
||||
end
|
||||
|
||||
def down
|
||||
migrate_columns(:integer)
|
||||
end
|
||||
end
|
16
db/schema.rb
16
db/schema.rb
|
@ -166,11 +166,11 @@ ActiveRecord::Schema[7.1].define(version: 2024_03_22_161611) do
|
|||
t.string "url"
|
||||
t.string "avatar_file_name"
|
||||
t.string "avatar_content_type"
|
||||
t.integer "avatar_file_size"
|
||||
t.bigint "avatar_file_size"
|
||||
t.datetime "avatar_updated_at", precision: nil
|
||||
t.string "header_file_name"
|
||||
t.string "header_content_type"
|
||||
t.integer "header_file_size"
|
||||
t.bigint "header_file_size"
|
||||
t.datetime "header_updated_at", precision: nil
|
||||
t.string "avatar_remote_url"
|
||||
t.boolean "locked", default: false, null: false
|
||||
|
@ -368,7 +368,7 @@ ActiveRecord::Schema[7.1].define(version: 2024_03_22_161611) do
|
|||
t.string "domain"
|
||||
t.string "image_file_name"
|
||||
t.string "image_content_type"
|
||||
t.integer "image_file_size"
|
||||
t.bigint "image_file_size"
|
||||
t.datetime "image_updated_at", precision: nil
|
||||
t.datetime "created_at", precision: nil, null: false
|
||||
t.datetime "updated_at", precision: nil, null: false
|
||||
|
@ -558,7 +558,7 @@ ActiveRecord::Schema[7.1].define(version: 2024_03_22_161611) do
|
|||
t.datetime "updated_at", precision: nil, null: false
|
||||
t.string "data_file_name"
|
||||
t.string "data_content_type"
|
||||
t.integer "data_file_size"
|
||||
t.bigint "data_file_size"
|
||||
t.datetime "data_updated_at", precision: nil
|
||||
t.bigint "account_id", null: false
|
||||
t.boolean "overwrite", default: false, null: false
|
||||
|
@ -635,7 +635,7 @@ ActiveRecord::Schema[7.1].define(version: 2024_03_22_161611) do
|
|||
t.bigint "status_id"
|
||||
t.string "file_file_name"
|
||||
t.string "file_content_type"
|
||||
t.integer "file_file_size"
|
||||
t.bigint "file_file_size"
|
||||
t.datetime "file_updated_at", precision: nil
|
||||
t.string "remote_url", default: "", null: false
|
||||
t.datetime "created_at", precision: nil, null: false
|
||||
|
@ -651,7 +651,7 @@ ActiveRecord::Schema[7.1].define(version: 2024_03_22_161611) do
|
|||
t.integer "file_storage_schema_version"
|
||||
t.string "thumbnail_file_name"
|
||||
t.string "thumbnail_content_type"
|
||||
t.integer "thumbnail_file_size"
|
||||
t.bigint "thumbnail_file_size"
|
||||
t.datetime "thumbnail_updated_at", precision: nil
|
||||
t.string "thumbnail_remote_url"
|
||||
t.index ["account_id", "status_id"], name: "index_media_attachments_on_account_id_and_status_id", order: { status_id: :desc }
|
||||
|
@ -855,7 +855,7 @@ ActiveRecord::Schema[7.1].define(version: 2024_03_22_161611) do
|
|||
t.string "description", default: "", null: false
|
||||
t.string "image_file_name"
|
||||
t.string "image_content_type"
|
||||
t.integer "image_file_size"
|
||||
t.bigint "image_file_size"
|
||||
t.datetime "image_updated_at", precision: nil
|
||||
t.integer "type", default: 0, null: false
|
||||
t.text "html", default: "", null: false
|
||||
|
@ -993,7 +993,7 @@ ActiveRecord::Schema[7.1].define(version: 2024_03_22_161611) do
|
|||
t.string "var", default: "", null: false
|
||||
t.string "file_file_name"
|
||||
t.string "file_content_type"
|
||||
t.integer "file_file_size"
|
||||
t.bigint "file_file_size"
|
||||
t.datetime "file_updated_at", precision: nil
|
||||
t.json "meta"
|
||||
t.datetime "created_at", precision: nil, null: false
|
||||
|
|
|
@ -287,4 +287,28 @@ describe ApplicationHelper do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#site_icon_path' do
|
||||
context 'when an icon exists' do
|
||||
let!(:favicon) { Fabricate(:site_upload, var: 'favicon') }
|
||||
|
||||
it 'returns the URL of the icon' do
|
||||
expect(helper.site_icon_path('favicon')).to eq(favicon.file.url('48'))
|
||||
end
|
||||
|
||||
it 'returns the URL of the icon with size parameter' do
|
||||
expect(helper.site_icon_path('favicon', 16)).to eq(favicon.file.url('16'))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when an icon does not exist' do
|
||||
it 'returns nil' do
|
||||
expect(helper.site_icon_path('favicon')).to be_nil
|
||||
end
|
||||
|
||||
it 'returns nil with size parameter' do
|
||||
expect(helper.site_icon_path('favicon', 16)).to be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -127,7 +127,7 @@ describe Admin::SystemCheck::ElasticsearchCheck do
|
|||
end
|
||||
|
||||
def stub_elasticsearch_error
|
||||
client = instance_double(Elasticsearch::Transport::Client)
|
||||
client = instance_double(Elasticsearch::Client)
|
||||
allow(client).to receive(:info).and_raise(Elasticsearch::Transport::Transport::Error)
|
||||
allow(Chewy).to receive(:client).and_return(client)
|
||||
end
|
||||
|
|
|
@ -242,6 +242,48 @@ RSpec.describe Status do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#reported?' do
|
||||
context 'when the status is not reported' do
|
||||
it 'returns false' do
|
||||
expect(subject.reported?).to be false
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the status is part of an open report' do
|
||||
before do
|
||||
Fabricate(:report, target_account: subject.account, status_ids: [subject.id])
|
||||
end
|
||||
|
||||
it 'returns true' do
|
||||
expect(subject.reported?).to be true
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the status is part of a closed report with an account warning mentioning the account' do
|
||||
before do
|
||||
report = Fabricate(:report, target_account: subject.account, status_ids: [subject.id])
|
||||
report.resolve!(Fabricate(:account))
|
||||
Fabricate(:account_warning, target_account: subject.account, status_ids: [subject.id], report: report)
|
||||
end
|
||||
|
||||
it 'returns true' do
|
||||
expect(subject.reported?).to be true
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the status is part of a closed report with an account warning not mentioning the account' do
|
||||
before do
|
||||
report = Fabricate(:report, target_account: subject.account, status_ids: [subject.id])
|
||||
report.resolve!(Fabricate(:account))
|
||||
Fabricate(:account_warning, target_account: subject.account, report: report)
|
||||
end
|
||||
|
||||
it 'returns false' do
|
||||
expect(subject.reported?).to be false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.mutes_map' do
|
||||
subject { described_class.mutes_map([status.conversation.id], account) }
|
||||
|
||||
|
|
|
@ -36,6 +36,10 @@ RSpec.describe Tag do
|
|||
expect(subject.match('https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111895#c4')).to be_nil
|
||||
end
|
||||
|
||||
it 'does not match URLs with hashtag-like anchors after a non-ascii character' do
|
||||
expect(subject.match('https://example.org/testé#foo')).to be_nil
|
||||
end
|
||||
|
||||
it 'does not match URLs with hashtag-like anchors after an empty query parameter' do
|
||||
expect(subject.match('https://en.wikipedia.org/wiki/Ghostbusters_(song)?foo=#Lawsuit')).to be_nil
|
||||
end
|
||||
|
|
|
@ -8,6 +8,22 @@ describe '/api/v1/accounts' do
|
|||
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
|
||||
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
|
||||
|
||||
describe 'GET /api/v1/accounts?ids[]=:id' do
|
||||
let(:account) { Fabricate(:account) }
|
||||
let(:other_account) { Fabricate(:account) }
|
||||
let(:scopes) { 'read:accounts' }
|
||||
|
||||
it 'returns expected response' do
|
||||
get '/api/v1/accounts', headers: headers, params: { ids: [account.id, other_account.id, 123_123] }
|
||||
|
||||
expect(response).to have_http_status(200)
|
||||
expect(body_as_json).to contain_exactly(
|
||||
hash_including(id: account.id.to_s),
|
||||
hash_including(id: other_account.id.to_s)
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'GET /api/v1/accounts/:id' do
|
||||
context 'when logged out' do
|
||||
let(:account) { Fabricate(:account) }
|
||||
|
|
|
@ -9,6 +9,22 @@ describe '/api/v1/statuses' do
|
|||
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, application: client_app, scopes: scopes) }
|
||||
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
|
||||
|
||||
describe 'GET /api/v1/statuses?ids[]=:id' do
|
||||
let(:status) { Fabricate(:status) }
|
||||
let(:other_status) { Fabricate(:status) }
|
||||
let(:scopes) { 'read:statuses' }
|
||||
|
||||
it 'returns expected response' do
|
||||
get '/api/v1/statuses', headers: headers, params: { ids: [status.id, other_status.id, 123_123] }
|
||||
|
||||
expect(response).to have_http_status(200)
|
||||
expect(body_as_json).to contain_exactly(
|
||||
hash_including(id: status.id.to_s),
|
||||
hash_including(id: other_status.id.to_s)
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'GET /api/v1/statuses/:id' do
|
||||
subject do
|
||||
get "/api/v1/statuses/#{status.id}", headers: headers
|
||||
|
|
37
spec/requests/well_known/oauth_metadata_spec.rb
Normal file
37
spec/requests/well_known/oauth_metadata_spec.rb
Normal file
|
@ -0,0 +1,37 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
describe 'The /.well-known/oauth-authorization-server request' do
|
||||
let(:protocol) { ENV.fetch('LOCAL_HTTPS', true) ? :https : :http }
|
||||
|
||||
before do
|
||||
host! ENV.fetch('LOCAL_DOMAIN')
|
||||
end
|
||||
|
||||
it 'returns http success with valid JSON response' do
|
||||
get '/.well-known/oauth-authorization-server'
|
||||
|
||||
expect(response)
|
||||
.to have_http_status(200)
|
||||
.and have_attributes(
|
||||
media_type: 'application/json'
|
||||
)
|
||||
|
||||
grant_types_supported = Doorkeeper.configuration.grant_flows.dup
|
||||
grant_types_supported << 'refresh_token' if Doorkeeper.configuration.refresh_token_enabled?
|
||||
|
||||
expect(body_as_json).to include(
|
||||
issuer: root_url(protocol: protocol),
|
||||
service_documentation: 'https://docs.joinmastodon.org/',
|
||||
authorization_endpoint: oauth_authorization_url(protocol: protocol),
|
||||
token_endpoint: oauth_token_url(protocol: protocol),
|
||||
revocation_endpoint: oauth_revoke_url(protocol: protocol),
|
||||
scopes_supported: Doorkeeper.configuration.scopes.map(&:to_s),
|
||||
response_types_supported: Doorkeeper.configuration.authorization_response_types,
|
||||
grant_types_supported: grant_types_supported,
|
||||
# non-standard extension:
|
||||
app_registration_endpoint: api_v1_apps_url(protocol: protocol)
|
||||
)
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue