diff --git a/Gemfile.lock b/Gemfile.lock index a5855883e3..1c187ac9df 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -95,8 +95,8 @@ GEM activesupport (>= 6.0.0) ast (2.4.3) attr_required (1.0.2) - aws-eventstream (1.3.2) - aws-partitions (1.1103.0) + aws-eventstream (1.4.0) + aws-partitions (1.1131.0) aws-sdk-core (3.215.1) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) @@ -109,9 +109,9 @@ GEM aws-sdk-core (~> 3, >= 3.210.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) - aws-sigv4 (1.11.0) + aws-sigv4 (1.12.1) aws-eventstream (~> 1, >= 1.0.2) - azure-blob (0.5.8) + azure-blob (0.5.9.1) rexml base64 (0.3.0) bcp47_spec (0.2.1) @@ -228,12 +228,12 @@ GEM erubi (1.13.1) et-orbi (1.2.11) tzinfo - excon (1.2.5) + excon (1.2.8) logger fabrication (3.0.0) faker (3.5.2) i18n (>= 1.8.11, < 2) - faraday (2.13.1) + faraday (2.13.2) faraday-net_http (>= 2.0, < 3.5) json logger @@ -241,7 +241,7 @@ GEM faraday (>= 1, < 3) faraday-httpclient (2.0.2) httpclient (>= 2.2) - faraday-net_http (3.4.0) + faraday-net_http (3.4.1) net-http (>= 0.5.0) fast_blank (1.0.1) fastimage (2.4.0) @@ -266,14 +266,14 @@ GEM fog-openstack (1.1.5) fog-core (~> 2.1) fog-json (>= 1.0) - formatador (1.1.0) + formatador (1.1.1) forwardable (1.3.3) fugit (1.11.1) et-orbi (~> 1, >= 1.2.11) raabro (~> 1.4) globalid (1.2.1) activesupport (>= 6.1) - google-protobuf (4.31.0) + google-protobuf (4.31.1) bigdecimal rake (>= 13) googleapis-common-protos-types (1.20.0) @@ -287,21 +287,21 @@ GEM activesupport (>= 5.1) haml (>= 4.0.6) railties (>= 5.1) - haml_lint (0.64.0) + haml_lint (0.65.0) haml (>= 5.0) parallel (~> 1.10) rainbow rubocop (>= 1.0) sysexits (~> 1.1) - hashdiff (1.1.2) + hashdiff (1.2.0) hashie (5.0.0) hcaptcha (7.1.0) json highline (3.1.2) reline hiredis (0.6.3) - hiredis-client (0.24.0) - redis-client (= 0.24.0) + hiredis-client (0.25.1) + redis-client (= 0.25.1) hkdf (0.3.0) htmlentities (4.3.4) http (5.3.1) @@ -345,7 +345,7 @@ GEM azure-blob (~> 0.5.2) hashie (~> 5.0) jmespath (1.6.2) - json (2.12.2) + json (2.13.0) json-canonicalization (1.0.0) json-jwt (1.16.7) activesupport (>= 4.2) @@ -369,7 +369,7 @@ GEM addressable (~> 2.8) bigdecimal (~> 3.1) jsonapi-renderer (0.2.2) - jwt (2.10.1) + jwt (2.10.2) base64 kaminari (1.2.2) activesupport (>= 4.1.0) @@ -433,7 +433,7 @@ GEM marcel (1.0.4) mario-redis-lock (1.2.1) redis (>= 3.0.5) - matrix (0.4.2) + matrix (0.4.3) memory_profiler (1.1.0) mime-types (3.7.0) logger @@ -443,11 +443,11 @@ GEM mini_portile2 (2.8.9) minitest (5.25.5) msgpack (1.8.0) - multi_json (1.15.0) + multi_json (1.17.0) mutex_m (0.3.0) net-http (0.6.0) uri - net-imap (0.5.8) + net-imap (0.5.9) date net-protocol net-ldap (0.19.0) @@ -458,7 +458,7 @@ GEM net-smtp (0.5.1) net-protocol nio4r (2.7.4) - nokogiri (1.18.8) + nokogiri (1.18.9) mini_portile2 (~> 2.8.2) racc (~> 1.4) oj (3.16.11) @@ -515,7 +515,7 @@ GEM opentelemetry-api (~> 1.0) opentelemetry-instrumentation-active_support (~> 0.7) opentelemetry-instrumentation-base (~> 0.23.0) - opentelemetry-instrumentation-action_pack (0.12.1) + opentelemetry-instrumentation-action_pack (0.12.3) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-base (~> 0.23.0) opentelemetry-instrumentation-rack (~> 0.21) @@ -597,7 +597,7 @@ GEM opentelemetry-semantic_conventions (1.11.0) opentelemetry-api (~> 1.0) orm_adapter (0.5.0) - ostruct (0.6.1) + ostruct (0.6.3) ox (2.14.23) bigdecimal (>= 3.0) parallel (1.27.0) @@ -701,18 +701,23 @@ GEM zeitwerk (~> 2.6) rainbow (3.1.1) rake (13.3.0) - rdf (3.3.2) + rdf (3.3.4) bcp47_spec (~> 0.2) bigdecimal (~> 3.1, >= 3.1.5) link_header (~> 0.0, >= 0.0.8) + logger (~> 1.5) + ostruct (~> 0.6) + readline (~> 0.0) rdf-normalize (0.7.0) rdf (~> 3.3) rdoc (6.14.2) erb psych (>= 4.0.0) + readline (0.0.4) + reline redcarpet (3.6.1) redis (4.8.1) - redis-client (0.24.0) + redis-client (0.25.1) connection_pool redlock (1.3.2) redis (>= 3.0.0, < 6.0) @@ -732,11 +737,11 @@ GEM chunky_png (~> 1.0) rqrcode_core (~> 2.0) rqrcode_core (2.0.0) - rspec (3.13.0) + rspec (3.13.1) rspec-core (~> 3.13.0) rspec-expectations (~> 3.13.0) rspec-mocks (~> 3.13.0) - rspec-core (3.13.4) + rspec-core (3.13.5) rspec-support (~> 3.13.0) rspec-expectations (3.13.5) diff-lcs (>= 1.2.0, < 2.0) @@ -771,7 +776,7 @@ GEM rubocop-ast (>= 1.45.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.45.1) + rubocop-ast (1.46.0) parser (>= 3.3.7.2) prism (~> 1.4) rubocop-capybara (2.22.1) @@ -845,7 +850,7 @@ GEM docile (~> 1.1) simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) - simplecov-html (0.13.1) + simplecov-html (0.13.2) simplecov-lcov (0.8.0) simplecov_json_formatter (0.1.4) stackprof (0.2.27) @@ -865,11 +870,11 @@ GEM temple (0.10.3) terminal-table (4.0.0) unicode-display_width (>= 1.1.1, < 4) - terrapin (1.1.0) + terrapin (1.1.1) climate_control test-prof (1.4.4) - thor (1.3.2) - tilt (2.6.0) + thor (1.4.0) + tilt (2.6.1) timeout (0.4.3) tpm-key_attestation (0.14.1) bindata (~> 2.4) @@ -931,7 +936,7 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.9.1) - websocket-driver (0.7.7) + websocket-driver (0.8.0) base64 websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) @@ -1101,4 +1106,4 @@ RUBY VERSION ruby 3.4.1p0 BUNDLED WITH - 2.6.9 + 2.7.0 diff --git a/app/controllers/api/v1/invites_controller.rb b/app/controllers/api/v1/invites_controller.rb index ea17ba7403..7b24cec791 100644 --- a/app/controllers/api/v1/invites_controller.rb +++ b/app/controllers/api/v1/invites_controller.rb @@ -7,6 +7,7 @@ class Api::V1::InvitesController < Api::BaseController skip_around_action :set_locale before_action :set_invite + before_action :check_valid_usage! before_action :check_enabled_registrations! # Override `current_user` to avoid reading session cookies @@ -22,9 +23,11 @@ class Api::V1::InvitesController < Api::BaseController @invite = Invite.find_by!(code: params[:invite_code]) end - def check_enabled_registrations! - return render json: { error: I18n.t('invites.invalid') }, status: 401 unless @invite.valid_for_use? + def check_valid_usage! + render json: { error: I18n.t('invites.invalid') }, status: 401 unless @invite.valid_for_use? + end + def check_enabled_registrations! raise Mastodon::NotPermittedError unless allowed_registration?(request.remote_ip, @invite) end end diff --git a/app/javascript/mastodon/features/alt_text_modal/index.tsx b/app/javascript/mastodon/features/alt_text_modal/index.tsx index 8a91e14e31..f285c35929 100644 --- a/app/javascript/mastodon/features/alt_text_modal/index.tsx +++ b/app/javascript/mastodon/features/alt_text_modal/index.tsx @@ -261,7 +261,9 @@ export const AltTextModal = forwardRef>( ); const lang = useAppSelector( (state) => - (state.compose as ImmutableMap).get('lang') as string, + (state.compose as ImmutableMap).get( + 'language', + ) as string, ); const focusX = (media?.getIn(['meta', 'focus', 'x'], 0) as number | undefined) ?? 0; diff --git a/app/javascript/mastodon/features/navigation_panel/index.tsx b/app/javascript/mastodon/features/navigation_panel/index.tsx index b62e8f9fa6..66f8a657ed 100644 --- a/app/javascript/mastodon/features/navigation_panel/index.tsx +++ b/app/javascript/mastodon/features/navigation_panel/index.tsx @@ -431,6 +431,7 @@ export const CollapsibleNavigationPanel: React.FC = () => { filterTaps: true, bounds: isLtrDir ? { left: 0 } : { right: 0 }, rubberband: true, + enabled: openable, }, ); diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 48c376660c..6a3542fee3 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -350,7 +350,7 @@ "filter_modal.added.context_mismatch_title": "Kontekstmisforhold!", "filter_modal.added.expired_explanation": "Denne filterkategori er udløbet. Ændr dens udløbsdato, for at anvende den.", "filter_modal.added.expired_title": "Udløbet filter!", - "filter_modal.added.review_and_configure": "Gå til {settings_link} for at gennemse og yderligere opsætte denne filterkategori.", + "filter_modal.added.review_and_configure": "Gå til {settings_link} for at gennemgå og konfigurere denne filterkategori yderligere.", "filter_modal.added.review_and_configure_title": "Filterindstillinger", "filter_modal.added.settings_link": "indstillingsside", "filter_modal.added.short_explanation": "Dette indlæg er nu føjet til følgende filterkategori: {title}.", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 03c4d48d95..864632a635 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -196,7 +196,7 @@ "compose_form.encryption_warning": "Οι δημοσιεύσεις στο Mastodon δεν είναι κρυπτογραφημένες από άκρο σε άκρο. Μη μοιράζεσαι ευαίσθητες πληροφορίες μέσω του Mastodon.", "compose_form.hashtag_warning": "Αυτή η ανάρτηση δεν θα εμφανίζεται κάτω από οποιαδήποτε ετικέτα καθώς δεν είναι δημόσια. Μόνο οι δημόσιες αναρτήσεις μπορούν να αναζητηθούν με ετικέτα.", "compose_form.lock_disclaimer": "Ο λογαριασμός σου δεν είναι {locked}. Οποιοσδήποτε μπορεί να σε ακολουθήσει για να δει τις δημοσιεύσεις σου προς τους ακολούθους σου.", - "compose_form.lock_disclaimer.lock": "κλειδωμένο", + "compose_form.lock_disclaimer.lock": "κλειδωμένος", "compose_form.placeholder": "Τι σκέφτεσαι;", "compose_form.poll.duration": "Διάρκεια δημοσκόπησης", "compose_form.poll.multiple": "Πολλαπλή επιλογή", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index a6c556ac0a..fadbb24700 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -62,7 +62,7 @@ "account.mute_notifications_short": "خموشی آگاهی‌ها", "account.mute_short": "خموشی", "account.muted": "خموش", - "account.muting": "خموش کرده", + "account.muting": "خموشش کرده‌اید", "account.mutual": "یکدیگر را پی می‌گیرید", "account.no_bio": "شرحی فراهم نشده.", "account.open_original_page": "گشودن صفحهٔ اصلی", @@ -129,14 +129,14 @@ "annual_report.summary.thanks": "سپاس که بخشی از ماستودون هستید!", "attachments_list.unprocessed": "(پردازش نشده)", "audio.hide": "نهفتن صدا", - "block_modal.remote_users_caveat": "ما از کارساز {domain} خواهیم خواست که به تصمیم شما احترام بگذارد. با این حال، تضمینی برای رعایت آن وجود ندارد زیرا برخی کارسازها ممکن است بلوک‌ها را به‌طور متفاوتی مدیریت کنند. فرسته‌های عمومی ممکن است همچنان برای کاربران که وارد نشده قابل مشاهده باشند.", + "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_cant_mention": "نمی‌تواند نامتان را برده یا پیتان بگیرد.", + "block_modal.they_cant_see_posts": "نمی‌تواند فرسته‌هایتان را ببیند و فرسته‌هایش را نمی‌بینید.", + "block_modal.they_will_know": "می‌تواند ببینند که مسدود شده.", "block_modal.title": "انسداد کاربر؟", - "block_modal.you_wont_see_mentions": "فرسته‌هایی که از اون نام برده را نخواهید دید.", + "block_modal.you_wont_see_mentions": "فرسته‌هایی که به او اشاره کرده‌اند را نخواهید دید.", "boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید", "boost_modal.reblog": "تقویت فرسته؟", "boost_modal.undo_reblog": "ناتقویت فرسته؟", @@ -269,9 +269,9 @@ "dismissable_banner.public_timeline": "این‌ها جدیدترین فرسته‌های عمومی از افرادی روی وب اجتماعیند که اعضای {domain} پی می‌گیرندشان.", "domain_block_modal.block": "انسداد کارساز", "domain_block_modal.block_account_instead": "انسداد @{name} به جایش", - "domain_block_modal.they_can_interact_with_old_posts": "افزارد روی این کراساز می‌توانند با فرسته‌های قدیمیتان تعامل داشته باشند.", + "domain_block_modal.they_can_interact_with_old_posts": "افزارد روی این کارساز می‌توانند با فرسته‌های قدیمیتان تعامل داشته باشند.", "domain_block_modal.they_cant_follow": "هیچ‌کسی از این کارساز نمی‌تواند پیتان بگیرد.", - "domain_block_modal.they_wont_know": "نخواهند دانست که مسدود شده‌اند.", + "domain_block_modal.they_wont_know": "نخواهد دانست که مسدود شده.", "domain_block_modal.title": "انسداد دامنه؟", "domain_block_modal.you_will_lose_num_followers": "شما {followersCount, plural, one {{followersCountDisplay} پی‌گیرنده} other {{followersCountDisplay} پی‌گیرنده}} و {followingCount, plural, one {{followingCountDisplay} فرد پی‌گرفته‌شده} other {{followingCountDisplay} فرد پی‌گرفته‌شده}} را از دست خواهید داد.", "domain_block_modal.you_will_lose_relationships": "شما تمام پیگیرکنندگان و افرادی که از این کارساز پیگیری می‌کنید را از دست خواهید داد.", @@ -543,11 +543,11 @@ "mute_modal.hide_options": "گزینه‌های نهفتن", "mute_modal.indefinite": "تا وقتی ناخموشش کنم", "mute_modal.show_options": "نمایش گزینه‌ها", - "mute_modal.they_can_mention_and_follow": "می‌توانند به شما اشاره کرده و پیتان بگیرند، ولی نخواهید دیدشان.", - "mute_modal.they_wont_know": "نخواهند دانست که خموش شده‌اند.", + "mute_modal.they_can_mention_and_follow": "می‌تواند به شما اشاره کرده و پیتان بگیرد؛ ولی نخواهید دیدش.", + "mute_modal.they_wont_know": "نخواهد دانست که خموش شده.", "mute_modal.title": "خموشی کاربر؟", "mute_modal.you_wont_see_mentions": "فرسته‌هایی که به او اشاره کرده‌اند را نخواهید دید.", - "mute_modal.you_wont_see_posts": "هنوز می‌توانند فرسته‌هایتان را ببینند، ولی فرسته‌هایشان را نمی‌بینید.", + "mute_modal.you_wont_see_posts": "همچنان می‌تواند فرسته‌هایتان را ببینند؛ ولی فرسته‌هایش را نمی‌بینید.", "navigation_bar.about": "درباره", "navigation_bar.account_settings": "گذرواژه و امنیت", "navigation_bar.administration": "مدیریت", @@ -687,7 +687,7 @@ "notifications.policy.filter_limited_accounts_title": "حساب‌های مدیریت شده", "notifications.policy.filter_new_accounts.hint": "ساخته شده در {days, plural, one {یک} other {#}} روز اخیر", "notifications.policy.filter_new_accounts_title": "حساب‌های جدید", - "notifications.policy.filter_not_followers_hint": "از جمله کسانی که کم‌تر از {days, plural, one {یک} other {#}} روز است پی‌تان می‌گیرند", + "notifications.policy.filter_not_followers_hint": "از جمله کسانی که کم‌تر از {days, plural, one {یک} other {#}} روز است پیتان می‌گیرند", "notifications.policy.filter_not_followers_title": "کسانی که شما را دنبال میکنند", "notifications.policy.filter_not_following_hint": "تا به صورت دستی تأییدشان کنید", "notifications.policy.filter_not_following_title": "کسانی که پی نمی‌گیرید", @@ -756,7 +756,7 @@ "reply_indicator.cancel": "لغو", "reply_indicator.poll": "نظرسنجی", "report.block": "انسداد", - "report.block_explanation": "شما فرسته‌هایشان را نخواهید دید. آن‌ها نمی‌توانند فرسته‌هایتان را ببینند یا شما را پی‌بگیرند. آنها می‌توانند بگویند که مسدود شده‌اند.", + "report.block_explanation": "فرسته‌هایش را نخواهید دید. نخواهد توانست فرسته‌هایتان را دیده یا پیتان بگیرد. قادر است تشخیص دهد مسدود شده.", "report.categories.legal": "حقوقی", "report.categories.other": "غیره", "report.categories.spam": "هرزنامه", @@ -770,7 +770,7 @@ "report.forward": "فرستادن به {target}", "report.forward_hint": "این حساب در کارساز دیگری ثبت شده. آیا می‌خواهید رونوشتی ناشناس از این گزارش به آن‌جا هم فرستاده شود؟", "report.mute": "خموش", - "report.mute_explanation": "شما فرسته‌های آن‌ها را نخواهید دید. آن‌ها همچنان می‌توانند شما را پی‌بگیرند و فرسته‌هایتان را ببینند و نمی‌دانند که خموش شده‌اند.", + "report.mute_explanation": "فرسته‌هایش را نخواهید دید. همچنان خواهد توانست پیتان گرفته و فرسته‌هایتان را ببیند. نخواهد دانست که خموش شده.", "report.next": "بعدی", "report.placeholder": "توضیحات اضافه", "report.reasons.dislike": "من آن را دوست ندارم", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index dce8fc460a..0c2faa120e 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -116,6 +116,7 @@ "column.domain_blocks": "Taɣulin yeffren", "column.edit_list": "Ẓreg tabdart", "column.favourites": "Imenyafen", + "column.firehose": "Isuddam usriden", "column.follow_requests": "Isuturen n teḍfeṛt", "column.home": "Agejdan", "column.lists": "Tibdarin", @@ -224,6 +225,7 @@ "empty_column.bookmarked_statuses": "Ulac kra n tsuffeɣt i terniḍ ɣer yismenyifen-ik·im ar tura. Ticki terniḍ yiwet, ad d-tettwasken da.", "empty_column.community": "Tasuddemt tazayezt tadigant n yisallen d tilemt. Aru ihi kra akken ad tt-teččareḍ!", "empty_column.domain_blocks": "Ulac kra n taɣult yettwaffren ar tura.", + "empty_column.explore_statuses": "Ulac ayen yellan d anezzuɣ akka tura. Uɣal-d ticki!", "empty_column.follow_requests": "Ulac ɣur-k·m ula yiwen n usuter n teḍfeṛt. Ticki teṭṭfeḍ-d yiwen ad d-yettwasken da.", "empty_column.hashtag": "Ar tura ulac kra n ugbur yesɛan assaɣ ɣer uhacṭag-agi.", "empty_column.home": "Tasuddemt tagejdant n yisallen d tilemt! Ẓer {public} neɣ nadi ad tafeḍ imseqdacen-nniḍen ad ten-ḍefṛeḍ.", @@ -235,6 +237,7 @@ "errors.unexpected_crash.copy_stacktrace": "Nɣel stacktrace ɣef wafus", "errors.unexpected_crash.report_issue": "Mmel ugur", "explore.suggested_follows": "Imdanen", + "explore.title": "Inezzaɣ", "explore.trending_links": "Isallen", "explore.trending_statuses": "Tisuffaɣ", "explore.trending_tags": "Ihacṭagen", @@ -401,6 +404,8 @@ "navigation_bar.followed_tags": "Ihacṭagen yettwaḍfaren", "navigation_bar.follows_and_followers": "Imeḍfaṛen akked wid i teṭṭafaṛeḍ", "navigation_bar.lists": "Tibdarin", + "navigation_bar.live_feed_local": "Asuddem usrid (adigan)", + "navigation_bar.live_feed_public": "Asuddem usrid (azayaz)", "navigation_bar.logout": "Ffeɣ", "navigation_bar.moderation": "Aseɣyed", "navigation_bar.more": "Ugar", @@ -408,6 +413,7 @@ "navigation_bar.opened_in_classic_interface": "Tisuffaɣ, imiḍanen akked isebtar-nniḍen igejdanen ldin-d s wudem amezwer deg ugrudem web aklasiki.", "navigation_bar.preferences": "Imenyafen", "navigation_bar.search": "Nadi", + "navigation_bar.search_trends": "Anadi / Anezzuɣ", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "Yemla-t-id {name} {target}", "notification.admin.sign_up": "Ijerred {name}", @@ -512,6 +518,7 @@ "recommended": "Yettuwelleh", "refresh": "Smiren", "regeneration_indicator.please_stand_by": "Ttxil rǧu.", + "regeneration_indicator.preparing_your_home_feed": "Ha-tt-an tsuddemt-ik·im tagejdant tettwaheggay…", "relative_time.days": "{number}u", "relative_time.full.just_now": "tura kan", "relative_time.hours": "{number}isr", @@ -552,6 +559,7 @@ "report.thanks.title": "Ur tebɣiḍ ara ad twaliḍ aya?", "report.thanks.title_actionable": "Tanemmirt ɣef uneqqis, ad nwali deg waya.", "report.unfollow": "Seḥbes aḍfar n @{name}", + "report.unfollow_explanation": "Aql-ik·ikem teṭṭafareḍ amiḍan-a. I wakken ur tettwaliḍ ara akk, akka d asawen, tisuffaɣ-is deg tsuddemt-ik·im tagejdant, ur teṭṭafar ara.", "report_notification.attached_statuses": "{count, plural, one {{count} n tsuffeɣt} other {{count} n tsuffiɣin}} ttwaqnent", "report_notification.categories.legal": "Azerfan", "report_notification.categories.other": "Ayen nniḍen", @@ -654,7 +662,7 @@ "time_remaining.moments": "Akuden i d-yeqqimen", "time_remaining.seconds": "Mazal {number, plural, one {# n tasint} other {# n tsinin}} id yugran", "trends.counter_by_accounts": "{count, plural, one {{counter} wemdan} other {{counter} medden}} deg {days, plural, one {ass} other {{days} wussan}} iɛeddan", - "trends.trending_now": "Ayen mucaɛen tura", + "trends.trending_now": "Anezzuɣ tura", "ui.beforeunload": "Arewway-ik·im ad iruḥ ma yella tefeɣ-d deg Maṣṭudun.", "units.short.billion": "{count}B", "units.short.million": "{count}M", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index d479793687..b437786b9b 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -205,8 +205,8 @@ "compose_form.poll.switch_to_multiple": "Permitir múltiplas escolhas", "compose_form.poll.switch_to_single": "Opção única", "compose_form.poll.type": "Estilo", - "compose_form.publish": "Publicação", - "compose_form.reply": "Resposta", + "compose_form.publish": "Publicar", + "compose_form.reply": "Responder", "compose_form.save_changes": "Atualização", "compose_form.spoiler.marked": "Com Aviso de Conteúdo", "compose_form.spoiler.unmarked": "Sem Aviso de Conteúdo", diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 233ecd4870..40b073f68b 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -1857,7 +1857,10 @@ body > [data-popper-placement] { } .status__quote { - --quote-margin: 36px; + // --status-gutter-width is currently only set inside of + // .notification-ungrouped, so everywhere else this will fall back + // to the pixel values + --quote-margin: var(--status-gutter-width, 36px); position: relative; margin-block-start: 16px; @@ -1868,7 +1871,7 @@ body > [data-popper-placement] { border: var(--nested-card-border); @container (width > 460px) { - --quote-margin: 56px; + --quote-margin: var(--status-gutter-width, 56px); } } @@ -10817,21 +10820,23 @@ noscript { } } - .status { + .status:not(.status--is-quote) { border: 0; padding: 0; - - &__avatar { - width: 40px; - height: 40px; - } } .status__wrapper-direct { background: transparent; } - $icon-margin: 48px; // 40px avatar + 8px gap + .status { + // 40px avatar + 8px gap + --status-gutter-width: 48px; + } + + .status--is-quote { + --status-gutter-width: 0; + } .status__content, .status__action-bar, @@ -10845,16 +10850,16 @@ noscript { .hashtag-bar, .content-warning, .filter-warning { - margin-inline-start: $icon-margin; - width: calc(100% - $icon-margin); + margin-inline-start: var(--status-gutter-width); + width: calc(100% - var(--status-gutter-width)); } .more-from-author { - width: calc(100% - $icon-margin + 2px); + width: calc(100% - var(--status-gutter-width) + 2px); } .status__content__read-more-button { - margin-inline-start: $icon-margin; + margin-inline-start: var(--status-gutter-width); } .notification__report { diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 6e1826510c..d7242fbf2e 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -1425,6 +1425,9 @@ cy: basic_information: Gwybodaeth Sylfaenol hint_html: "Addaswch yr hyn y mae pobl yn ei weld ar eich proffil cyhoeddus ac wrth ymyl eich postiadau. Mae pobl eraill yn fwy tebygol o'ch dilyn yn ôl a rhyngweithio â chi pan fydd gennych broffil wedi'i lenwi a llun proffil." other: Arall + emoji_styles: + auto: Awto + native: Cynhenid errors: '400': Roedd y cais a gyflwynwyd gennych yn annilys neu wedi'i gamffurfio. '403': Nid oes gennych ganiatâd i weld y dudalen hon. @@ -1590,7 +1593,7 @@ cy: domain_blocking_html: few: Rydych ar fin amnewid eich rhestr rhwystro parthau gyda hyd at %{count} parth o %{filename}. many: Rydych ar fin amnewid eich rhestr rhwystro parthau gyda hyd at %{count} parth o %{filename}. - one: Rydych ar fin disodli eich rhestr blociau parth gyda hyd at %{count} parth o %{filename}. + one: Rydych ar fin amnewid eich rhestr blociau parth gyda hyd at %{count} parth o %{filename}. other: Rydych ar fin amnewid eich rhestr rhwystro parthau gyda hyd at %{count} parth o %{filename}. two: Rydych ar fin amnewid eich rhestr rhwystro parthau gyda hyd at %{count} parth o %{filename}amnewid eich rhestr rhwystro parthau gyda hyd at %{count} parth o %{filename}. diff --git a/config/locales/da.yml b/config/locales/da.yml index 2f3d13976d..b822ae9cb1 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -360,7 +360,7 @@ da: shortcode_hint: Mindst 2 tegn, kun alfanumeriske og understregstegn title: Tilpassede emojier uncategorized: Ukategoriseret - unlist: Fjern fra oplistning + unlist: Fjern fra liste unlisted: Ikke oplistet update_failed_msg: Kunne ikke opdatere denne emoji updated_msg: Emoji er opdateret! @@ -1717,7 +1717,7 @@ da: privacy: hint_html: "Tilpas hvordan din profil og dine indlæg kan findes. En række funktioner i Mastodon kan hjælpe dig med at nå ud til et bredere publikum, hvis du aktiverer dem. Tjek indstillingerne herunder for at sikre, at de passer til dit brugsscenarie." privacy: Privatliv - privacy_hint_html: Styr, hvor meget der ønskes synliggjort til gavn for andre. Folk finder interessante profiler og apps ved at tjekke andres følgere ud, samt se hvilke apps de sender fra, men dine præferencer ønskes muligvis ikke synliggjort. + privacy_hint_html: Styr, hvor meget du vil afsløre til gavn for andre. Folk opdager interessante profiler og apps ved at gennemse andres følgere og se, hvilke apps de sender fra, men du foretrækker måske at holde det skjult. reach: Rækkevidde reach_hint_html: Indstil om du vil blive opdaget og fulgt af nye mennesker. Ønsker du, at dine indlæg skal vises på Udforsk-siden? Ønsker du, at andre skal se dig i deres følg-anbefalinger? Ønsker du at acceptere alle nye følgere automatisk, eller vil du have detaljeret kontrol over hver og en? search: Søgning @@ -1889,8 +1889,8 @@ da: private_long: Vis kun til følgere public: Offentlig public_long: Kan ses af alle - unlisted: Ulistet - unlisted_long: Kan ses af alle, men listes på offentlige tidslinjer + unlisted: Ikke oplistet + unlisted_long: Kan ses af alle, men vises ikke på offentlige tidslinjer statuses_cleanup: enabled: Slet automatisk gamle indlæg enabled_hint: Sletter automatisk dine indlæg, når disse når en bestemt alder, medmindre de matcher en af undtagelserne nedenfor diff --git a/config/locales/fa.yml b/config/locales/fa.yml index dac2188608..ec0ed1ca99 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -182,7 +182,7 @@ fa: create_account_warning: ایجاد هشدار create_announcement: ایجاد اعلامیه create_canonical_email_block: ایجاد انسداد رایانامه - create_custom_emoji: ایجاد اموجی سفارشی + create_custom_emoji: ایجاد شکلک سفارشی create_domain_allow: ایجاد اجازهٔ دامنه create_domain_block: ایجاد انسداد دامنه create_email_domain_block: ایجاد انسداد دامنهٔ رایانامه @@ -193,7 +193,7 @@ fa: demote_user: تنزل کاربر destroy_announcement: حذف اعلامیه destroy_canonical_email_block: حذف انسداد رایانامه - destroy_custom_emoji: حذف اموجی سفارشی + destroy_custom_emoji: حذف شکلک سفارشی destroy_domain_allow: حذف اجازهٔ دامنه destroy_domain_block: حذف انسداد دامنه destroy_email_domain_block: حذف انسداد دامنهٔ رایانامه @@ -204,11 +204,11 @@ fa: destroy_unavailable_domain: حذف دامنهٔ ناموجود destroy_user_role: نابودی نقش disable_2fa_user: از کار انداختن ورود دومرحله‌ای - disable_custom_emoji: از کار انداختن اموجی سفارشی + disable_custom_emoji: از کار انداختن شکلک سفارشی disable_relay: غیرفعال‌سازی رله disable_sign_in_token_auth_user: از کار انداختن تأیید هویت ژتون رایانامه‌ای برای کاربر disable_user: از کار انداختن کاربر - enable_custom_emoji: به کار انداختن اموجی سفارشی + enable_custom_emoji: به کار انداختن شکلک سفارشی enable_relay: فعال‌سازی رله enable_sign_in_token_auth_user: به کار انداختن تأیید هویت ژتون رایانامه‌ای برای کاربر enable_user: به کار انداختن کاربر @@ -231,7 +231,7 @@ fa: unsilence_account: رفع خموشی حساب unsuspend_account: رفع تعلیق حساب update_announcement: به‌روز رسانی اعلامیه - update_custom_emoji: به‌روز رسانی اموجی سفارشی + update_custom_emoji: به‌روز رسانی شکلک سفارشی update_domain_block: به‌روزرسانی مسدودسازی دامنه update_ip_block: بروزرسانی قاعدهٔ آی‌پی update_report: به‌روز رسانی گزارش @@ -247,7 +247,7 @@ fa: create_account_warning_html: "%{name} هشداری برای %{target} فرستاد" create_announcement_html: "%{name} اعلامیه‌ای جدید ایجاد کرد %{target}" create_canonical_email_block_html: "%{name} رایانامه با درهم‌ریزی %{target} را مسدود کرد" - create_custom_emoji_html: "%{name} اموجی تازهٔ %{target} را بارگذاشت" + create_custom_emoji_html: "%{name} شکلک تازهٔ %{target} را بارگذاشت" create_domain_allow_html: "%{name} دامنهٔ %{target} را مجاز کرد" create_domain_block_html: "%{name} دامنهٔ %{target} را مسدود کرد" create_email_domain_block_html: "%{name} دامنهٔ رایانامهٔ %{target} را مسدود کرد" @@ -1351,6 +1351,8 @@ fa: other: سایر emoji_styles: auto: خودکار + native: بومی + twemoji: توییموجی errors: '400': درخواستی که فرستادید نامعتبر یا اشتباه بود. '403': شما اجازهٔ دیدن این صفحه را ندارید. diff --git a/config/locales/kab.yml b/config/locales/kab.yml index e68c99e2f8..96f69dcbdc 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -444,7 +444,7 @@ kab: media: title: Amidya open: Ldi tasuffeɣt - trending: Ayen mucaɛen + trending: Inezzaɣ visibility: Abani with_media: S umidya system_checks: @@ -475,12 +475,16 @@ kab: title: Tadbelt trends: allow: Sireg + links: + title: Iseɣwan inezzaɣ statuses: - title: Tisuffaɣ mucaɛen + title: Tisuffaɣ tinezzaɣ tags: dashboard: tag_languages_dimension: Tutlayin ifazen - trending: Ayen mucaɛen + title: Ihacṭagen inezzaɣ + trending_rank: 'Anezzuɣ #%{rank}' + trending: Inezzaɣ warning_presets: add_new: Rnu amaynut delete: Kkes @@ -492,8 +496,12 @@ kab: body: "%{reporter} yettwazen ɣef %{target}" subject: Aneqqis amaynut i %{instance} (#%{id}) new_trends: + new_trending_links: + title: Iseɣwan inezzaɣ new_trending_statuses: - title: Tisuffaɣ mucaɛen + title: Tisuffaɣ tinezzaɣ + new_trending_tags: + title: Ihacṭagen inezzaɣ appearance: advanced_web_interface: Agrudem n web leqqayen discovery: Asnirem @@ -916,12 +924,13 @@ kab: edit_profile_title: Sagen amaɣnu-inek·inem feature_action: Issin ugar follow_action: Ḍfeṛ + follow_title: Sagen isuddam n yisallen n wejgu-k·m agejdan follows_subtitle: Ḍfer imiḍanen yettwassnen mliḥ follows_title: Anwa ara ḍefṛeḍ follows_view_more: Ssken-d ugar n medden ay tzemred ad tḍefred - hashtags_subtitle: Wali ayen ileḥḥun seg sin wussan-a iεeddan - hashtags_title: Ihacṭagen mucaɛen - hashtags_view_more: Sken-d ugar n yihacṭagen mucaɛen + hashtags_subtitle: Snirem ayen yellan d anezzuɣ deg 2 n wussan-a iεeddan + hashtags_title: Ihacṭagen inezzaɣ + hashtags_view_more: Sken-d ugar n yihacṭagen inezzaɣ post_step: Ini-as azul i umaḍal s uḍris, s tiwlafin, s tividyutin neɣ s tefranin. post_title: Aru tasuffeɣt-inek·inem tamezwarut share_step: Init-asen i yimeddukal-nwen amek ara ken-id-afen deg Mastodon. diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 0ca8aa45fb..971846789b 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -1350,69 +1350,69 @@ ru: your_appeal_pending: Вы подали апелляцию your_appeal_rejected: Ваша апелляция отклонена edit_profile: - basic_information: Основная информация - hint_html: "Настройте то, что люди видят в вашем публичном профиле и рядом с вашими сообщениями. Другие люди с большей вероятностью подпишутся на Вас и будут взаимодействовать с вами, если у Вас заполнен профиль и добавлено изображение." + basic_information: Основные данные + hint_html: "Здесь вы можете изменить всё то, что будет отображаться в вашем публичном профиле и рядом с вашими постами. На вас будут чаще подписываться и с вами будут чаще взаимодействовать, если у вас будет заполнен профиль и добавлено фото профиля." other: Прочее emoji_styles: auto: Автоматически native: Как в системе twemoji: Twemoji errors: - '400': Ваш запрос был недействительным или неправильным. - '403': У Вас нет доступа к просмотру этой страницы. - '404': Страница, которую Вы искали, не существует. + '400': Ваш запрос повреждён или содержит ошибки. + '403': У вас нет доступа для просмотра этой страницы. + '404': Запрошенной вами страницы не существует. '406': Эта страница недоступна в запрошенном формате. - '410': Страница, которую Вы искали, больше не существует. + '410': Запрошенной вами страницы больше не существует. '422': - content: Проверка безопасности не удалась. Возможно, Вы блокируете cookies? + content: Проверка безопасности не удалась. Может быть, вы блокируете файлы cookie? title: Проверка безопасности не удалась '429': Слишком много запросов '500': - content: Приносим извинения, но на нашей стороне что-то пошло не так. - title: Страница неверна - '503': Страница не может быть отображена из-за временного сбоя на сервере. - noscript_html: Для работы с Mastodon, пожалуйста, включите JavaScript. Кроме того, вы можете использовать одно из приложений Mastodon для Вашей платформы. + content: К сожалению, на нашей стороне что-то пошло не так. + title: Ошибка при загрузке страницы + '503': Страница не может быть загружена из-за временного сбоя на сервере. + noscript_html: Включите JavaScript, чтобы использовать веб-интерфейс Mastodon. Также вы можете установить любое из приложений Mastodon для вашей системы. existing_username_validator: not_found: не удалось найти локального пользователя с таким именем not_found_multiple: не удалось найти %{usernames} exports: archive_takeout: date: Дата - download: Скачать ваш архив - hint_html: Вы можете запросить архив своих постов и загруженных медиа-файлов. Экспортированные данные будут в формате ActivityPub, который можно прочесть любой соответствующей программой. Запрашивать архив можно каждые 7 дней. - in_progress: Мы собираем этот архив... - request: Запросить ваш архив + download: Скачать архив + hint_html: Вы можете запросить архив своих постов и загруженных медиа. Данные будут экспортированы в формате ActivityPub, доступном для чтения и обработки любыми совместимыми программами и сервисами. Запрашивать архив можно каждые 7 дней. + in_progress: Собираем ваш архив... + request: Запросить архив size: Размер - blocks: Список блокировки + blocks: Заблокированные пользователи bookmarks: Закладки csv: CSV - domain_blocks: Доменные блокировки + domain_blocks: Заблокированные домены lists: Списки - mutes: Ваши игнорируемые - storage: Ваши файлы + mutes: Игнорируемые пользователи + storage: Хранилище медиа featured_tags: add_new: Добавить errors: - limit: Вы уже добавили максимальное число хэштегов - hint_html: "Избранные хэштеги отображаются в вашем профиле и позволяют людям быстро найти посты, отмеченные ими. Это отличный инструмент для отслеживания долгосрочных проектов и творческих работ." + limit: Вы уже добавили максимальное число хештегов + hint_html: "Рекомендуйте самые важные для вас хештеги в своём профиле. Это отличный инструмент для того, чтобы держать подписчиков в курсе ваших долгосрочных проектов и творческих работ. Рекомендации хештегов заметны в вашем профиле и предоставляют быстрый доступ к вашим постам." filters: contexts: - account: Посты в профилях - home: Домашняя лента + account: Профили + home: Домашняя лента и списки notifications: Уведомления public: Публичные ленты - thread: Диалоги + thread: Беседы edit: add_keyword: Добавить ключевое слово keywords: Ключевые слова statuses: Отдельные посты - statuses_hint_html: Этот фильтр применяется для выбора отдельных постов, независимо от того, соответствуют ли они ключевым словам ниже. Просмотрите или удалите посты из фильтра. - title: Изменить фильтр + statuses_hint_html: Этот фильтр применяется к отдельным постам, которые могут и не соответствовать указанным ниже ключевым словам. Вы можете просмотреть отфильтрованные посты и удалить их из фильтра. + title: Редактировать фильтр errors: - deprecated_api_multiple_keywords: Эти параметры нельзя изменить из этого приложения, так как применяются к более чем одному ключевому слову фильтра. Используйте более последнее приложение или веб-интерфейс. - invalid_context: Некорректный контекст или ничего + deprecated_api_multiple_keywords: С помощью этого приложения невозможно изменить те параметры фильтра, которые относятся к нескольким ключевым словам. Воспользуйтесь другим, более современным приложением или веб-интерфейсом. + invalid_context: отсутствует или имеет недопустимое значение index: - contexts: Фильтры по %{contexts} + contexts: 'Область действия: %{contexts}' delete: Удалить empty: У вас пока нет фильтров. expires_in: Истекает через %{distance} @@ -1426,25 +1426,25 @@ ru: few: "%{count} поста" many: "%{count} постов" one: "%{count} пост" - other: 'Постов: %{count}' + other: "%{count} постов" statuses_long: few: Скрыто %{count} отдельных поста many: Скрыто %{count} отдельных постов one: Скрыт %{count} отдельный пост - other: 'Скрыто отдельных постов: %{count}' + other: Скрыто %{count} отдельных постов title: Фильтры new: - save: Сохранить новый фильтр + save: Сохранить фильтр title: Добавить фильтр statuses: back_to_filter: Вернуться к фильтру batch: remove: Удалить из фильтра index: - hint: Этот фильтр применяется для выбора отдельных постов, независимо от других критериев. Вы можете добавить больше записей в этот фильтр из веб-интерфейса. + hint: Этот фильтр применяется к отдельным постам без учёта прочих условий. Чтобы добавить пост к этому фильтру, воспользуйтесь веб-интерфейсом. title: Отфильтрованные посты generic: - all: Любой + all: Все all_items_on_page_selected_html: few: "%{count} элемента выбрано на странице." many: "%{count} элементов выбрано на странице." @@ -1456,12 +1456,12 @@ ru: one: Выбран %{count} элемент, соответствующий вашему запросу. other: Выбраны все %{count} элементов, соответствующих вашему запросу. cancel: Отмена - changes_saved_msg: Изменения успешно сохранены! + changes_saved_msg: Изменения сохранены! confirm: Подтвердить copy: Копировать delete: Удалить deselect: Снять выделение - none: Ничего + none: Нет order_by: Сортировка save_changes: Сохранить изменения select_all_matching_items: @@ -1471,10 +1471,10 @@ ru: other: Выберите все %{count} предмет(-ов), совпадающий(-их) вашему поисковому запросу. today: сегодня validation_errors: - few: Что-то здесь не так! Пожалуйста, прочитайте о %{count} ошибках ниже - many: Что-то здесь не так! Пожалуйста, прочитайте о %{count} ошибках ниже - one: Что-то здесь не так! Пожалуйста, прочитайте об ошибке ниже - other: Что-то здесь не так! Пожалуйста, прочитайте о %{count} ошибках ниже + few: Проверьте введённые вами данные! Далее по странице вы можете увидеть %{count} сообщения об ошибке + many: Проверьте введённые вами данные! Далее по странице вы можете увидеть %{count} сообщений об ошибке + one: Проверьте введённые вами данные! Далее по странице вы можете увидеть %{count} сообщение об ошибке + other: Проверьте введённые вами данные! Далее по странице вы можете увидеть %{count} сообщений об ошибке imports: errors: empty: Пустой CSV-файл diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index 8e806016e5..a1390a3cc6 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -61,6 +61,7 @@ cy: setting_display_media_default: Cuddio cyfryngau wedi eu marcio'n sensitif setting_display_media_hide_all: Cuddio cyfryngau bob tro setting_display_media_show_all: Dangos cyfryngau bob tro + setting_emoji_style: Sut i arddangos emojis. Bydd "Awto" yn ceisio defnyddio emoji cynhenid, ond mae'n disgyn yn ôl i Twemoji ar gyfer porwyr traddodiadol. setting_system_scrollbars_ui: Yn berthnasol i borwyr bwrdd gwaith yn seiliedig ar Safari a Chrome yn unig setting_use_blurhash: Mae graddiannau wedi'u seilio ar liwiau'r delweddau cudd ond maen nhw'n cuddio unrhyw fanylion setting_use_pending_items: Cuddio diweddariadau llinell amser y tu ôl i glic yn lle sgrolio'n awtomatig @@ -149,6 +150,13 @@ cy: min_age: Ni ddylai fod yn is na'r isafswm oedran sy'n ofynnol gan gyfreithiau eich awdurdodaeth. user: chosen_languages: Wedi eu dewis, dim ond tŵtiau yn yr ieithoedd hyn bydd yn cael eu harddangos mewn ffrydiau cyhoeddus + date_of_birth: + few: Mae'n rhaid i ni sicrhau eich bod chi yn o leiaf %{count} oed i ddefnyddio %{domain}. Fyddwn ni ddim yn cadw hyn. + many: Mae'n rhaid i ni sicrhau eich bod chi yn o leiaf %{count} oed i ddefnyddio %{domain}. Fyddwn ni ddim yn cadw hyn. + one: Mae'n rhaid i ni sicrhau eich bod chi yn o leiaf %{count} oed i ddefnyddio %{domain}. Fyddwn ni ddim yn cadw hyn. + other: Mae'n rhaid i ni sicrhau eich bod chi yn o leiaf %{count} oed i ddefnyddio %{domain}. Fyddwn ni ddim yn cadw hyn. + two: Mae'n rhaid i ni sicrhau eich bod chi yn o leiaf %{count} oed i ddefnyddio %{domain}. Fyddwn ni ddim yn cadw hyn. + zero: Mae'n rhaid i ni sicrhau eich bod chi yn o leiaf %{count} oed i ddefnyddio %{domain}. Fyddwn ni ddim yn cadw hyn. role: Mae'r rôl yn rheoli pa ganiatâd sydd gan y defnyddiwr. user_role: color: Lliw i'w ddefnyddio ar gyfer y rôl drwy'r UI, fel RGB mewn fformat hecs @@ -238,6 +246,7 @@ cy: setting_display_media_default: Rhagosodiad setting_display_media_hide_all: Cuddio popeth setting_display_media_show_all: Dangos popeth + setting_emoji_style: Arddull Emojis setting_expand_spoilers: Dangos postiadau wedi'u marcio â rhybudd cynnwys bob tro setting_hide_network: Cuddio eich graff cymdeithasol setting_missing_alt_text_modal: Dangos deialog cadarnhau cyn postio cyfrwng heb destun amgen diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 8502785174..09041a4113 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -56,13 +56,13 @@ da: scopes: De API'er, som applikationen vil kunne tilgå. Vælges en topniveaudstrækning, vil detailvalg være unødvendige. setting_aggregate_reblogs: Vis ikke nye fremhævelser for nyligt fremhævede indlæg (påvirker kun nyligt modtagne fremhævelser) setting_always_send_emails: Normalt sendes ingen e-mailnotifikationer under aktivt brug af Mastodon - setting_default_quote_policy: Nævnte brugere har altid lov til at citere. Denne indstilling vil kun træde i kraft for indlæg oprettet med den næste Mastodon-version, men man kan som forberedelse vælge sin præference + setting_default_quote_policy: Nævnte brugere har altid lov til at citere. Denne indstilling vil kun træde i kraft for indlæg oprettet med den næste Mastodon-version, men du kan som forberedelse vælge din præference setting_default_sensitive: Sensitive medier er som standard skjult og kan vises med et klik setting_display_media_default: Skjul medier med sensitiv-markering setting_display_media_hide_all: Skjul altid medier setting_display_media_show_all: Vis altid medier setting_emoji_style: Hvordan emojis skal vises. "Auto" vil forsøge at bruge indbyggede emojis, men skifter tilbage til Twemoji i ældre webbrowsere. - setting_system_scrollbars_ui: Gælder kun for computerwebbrowsere baseret på Safari og Chrome + setting_system_scrollbars_ui: Gælder kun for desktop-browsere baseret på Safari og Chrome setting_use_blurhash: Gradienter er baseret på de skjulte grafikelementers farver, men slører alle detaljer setting_use_pending_items: Skjul tidslinjeopdateringer bag et klik i stedet for brug af auto-feedrulning username: Bogstaver, cifre og understregningstegn kan benyttes @@ -233,7 +233,7 @@ da: setting_boost_modal: Vis bekræftelsesdialog inden fremhævelse setting_default_language: Sprog for indlæg setting_default_privacy: Fortrolighed for indlæg - setting_default_quote_policy: Hvem, som kan citere + setting_default_quote_policy: Hvem kan citere setting_default_sensitive: Markér altid medier som sensitive setting_delete_modal: Vis bekræftelsesdialog før et indlæg slettes setting_disable_hover_cards: Deaktivér profilforhåndsvisning ved svæv (hover) diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index cf4799fa30..cc222cc85e 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -150,6 +150,9 @@ el: min_age: Δεν πρέπει να είναι κάτω από την ελάχιστη ηλικία που απαιτείται από τους νόμους της δικαιοδοσίας σας. user: chosen_languages: Όταν ενεργοποιηθεί, στη δημόσια ροή θα εμφανίζονται τουτ μόνο από τις επιλεγμένες γλώσσες + date_of_birth: + one: Πρέπει να βεβαιωθούμε ότι είσαι τουλάχιστον %{count} για να χρησιμοποιήσεις το %{domain}. Δε θα το αποθηκεύσουμε. + other: Πρέπει να βεβαιωθούμε ότι είσαι τουλάχιστον %{count} για να χρησιμοποιήσεις τα %{domain}. Δε θα το αποθηκεύσουμε. role: Ο ρόλος ελέγχει ποια δικαιώματα έχει ο χρήστης. user_role: color: Το χρώμα που θα χρησιμοποιηθεί για το ρόλο σε ολόκληρη τη διεπαφή, ως RGB σε δεκαεξαδική μορφή diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml index 671f275fa5..f80097832c 100644 --- a/config/locales/simple_form.fa.yml +++ b/config/locales/simple_form.fa.yml @@ -61,6 +61,7 @@ fa: setting_display_media_default: تصویرهایی را که به عنوان حساس علامت زده شده‌اند پنهان کن setting_display_media_hide_all: همیشه همهٔ عکس‌ها و ویدیوها را پنهان کن setting_display_media_show_all: همیشه تصویرهایی را که به عنوان حساس علامت زده شده‌اند را نشان بده + setting_emoji_style: چگونگی نمایش شکلک‌ها. «خودکار» تلاش خواهد کرد از شکلک‌های بومی استفاده کند؛ ولی برای مرورگرهای قدیمی به توییموجی برخواهد گشت. setting_system_scrollbars_ui: فقط برای مرورگرهای دسکتاپ مبتنی بر سافاری و کروم اعمال می شود setting_use_blurhash: سایه‌ها بر اساس رنگ‌های به‌کاررفته در تصویر پنهان‌شده ساخته می‌شوند ولی جزئیات تصویر در آن‌ها آشکار نیست setting_use_pending_items: به جای پیش‌رفتن خودکار در فهرست، به‌روزرسانی فهرست نوشته‌ها را پشت یک کلیک پنهان کن @@ -238,6 +239,7 @@ fa: setting_display_media_default: پیش‌فرض setting_display_media_hide_all: نهفتن همه setting_display_media_show_all: نمایش همه + setting_emoji_style: سبک شکلک setting_expand_spoilers: همیشه فرسته‌هایی را که هشدار محتوا دارند کامل نشان بده setting_hide_network: نهفتن شبکهٔ ارتباطی setting_missing_alt_text_modal: نمایش گفتگوی تایید قبل از ارسال رسانه بدون متن جایگزین diff --git a/config/locales/simple_form.ga.yml b/config/locales/simple_form.ga.yml index 23892c543e..59cd532fd9 100644 --- a/config/locales/simple_form.ga.yml +++ b/config/locales/simple_form.ga.yml @@ -150,6 +150,12 @@ ga: min_age: Níor chóir go mbeidís faoi bhun na haoise íosta a éilíonn dlíthe do dhlínse. user: chosen_languages: Nuair a dhéantar iad a sheiceáil, ní thaispeánfar ach postálacha i dteangacha roghnaithe in amlínte poiblí + date_of_birth: + few: Caithfimid a chinntiú go bhfuil tú %{count} ar a laghad chun %{domain} a úsáid. Ní stórálfaimid é seo. + many: Caithfimid a chinntiú go bhfuil tú %{count} ar a laghad chun %{domain} a úsáid. Ní stórálfaimid é seo. + one: Caithfimid a chinntiú go bhfuil tú %{count} ar a laghad chun %{domain} a úsáid. Ní stórálfaimid é seo. + other: Caithfimid a chinntiú go bhfuil tú %{count} ar a laghad chun %{domain} a úsáid. Ní stórálfaimid é seo. + two: Caithfimid a chinntiú go bhfuil tú %{count} ar a laghad chun %{domain} a úsáid. Ní stórálfaimid é seo. role: Rialaíonn an ról na ceadanna atá ag an úsáideoir. user_role: color: Dath le húsáid don ról ar fud an Chomhéadain, mar RGB i bhformáid heicsidheachúlach diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 4d4e32cc77..5700f43d3d 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -150,6 +150,8 @@ ko: min_age: 관할지역의 법률에서 요구하는 최저 연령보다 작으면 안 됩니다. user: chosen_languages: 체크하면, 선택 된 언어로 작성된 게시물들만 공개 타임라인에 보여집니다 + date_of_birth: + other: "%{domain}을 이용하려면 %{count}세 이상임을 확인해야 합니다. 이 정보는 저장되지 않습니다." role: 역할은 사용자가 어떤 권한을 가지게 될 지 결정합니다. user_role: color: 색상은 사용자 인터페이스에서 역할을 나타내기 위해 사용되며, RGB 16진수 형식입니다 diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index ebee60a953..811b2ecd50 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -150,6 +150,9 @@ pt-PT: min_age: Não deve ter menos do que a idade mínima exigida pela legislação da sua jurisdição. user: chosen_languages: Quando selecionado, só serão mostradas nas cronologias públicas as publicações nos idiomas escolhidos + date_of_birth: + one: Temos de nos certificar que tem pelo menos %{count} para utilizar %{domain}. Não vamos guardar esta informação. + other: Temos de nos certificar que tem pelo menos %{count} para utilizar %{domain}. Não vamos guardar esta informação. role: A função controla as permissões que o utilizador tem. user_role: color: Cor a ser utilizada para a função em toda a interface de utilizador, como RGB no formato hexadecimal diff --git a/eslint.config.mjs b/eslint.config.mjs index 25fc8febdf..e3cf52c860 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -374,6 +374,8 @@ export default tseslint.config([ 'import/no-default-export': 'warn', 'jsdoc/require-jsdoc': 'off', + 'jsdoc/require-param': 'off', + 'jsdoc/require-returns': 'off', 'react/prefer-stateless-function': 'warn', 'react/function-component-definition': [ diff --git a/spec/requests/invite_spec.rb b/spec/requests/invite_spec.rb index ba04645389..027b0fc738 100644 --- a/spec/requests/invite_spec.rb +++ b/spec/requests/invite_spec.rb @@ -6,13 +6,49 @@ RSpec.describe 'invites' do let(:invite) { Fabricate(:invite) } context 'when requesting a JSON document' do - it 'returns a JSON document with expected attributes' do - get "/invite/#{invite.code}", headers: { 'Accept' => 'application/activity+json' } + subject { get "/invite/#{invite.code}", headers: { 'Accept' => 'application/activity+json' } } - expect(response).to have_http_status(200) - expect(response.media_type).to eq 'application/json' + context 'when invite is valid' do + it 'returns a JSON document with expected attributes' do + subject - expect(response.parsed_body[:invite_code]).to eq invite.code + expect(response) + .to have_http_status(200) + expect(response.media_type) + .to eq 'application/json' + expect(response.parsed_body) + .to include(invite_code: invite.code) + end + end + + context 'when invite is expired' do + before { invite.update(expires_at: 3.days.ago) } + + it 'returns a JSON document with error details' do + subject + + expect(response) + .to have_http_status(401) + expect(response.media_type) + .to eq 'application/json' + expect(response.parsed_body) + .to include(error: I18n.t('invites.invalid')) + end + end + + context 'when user IP is blocked' do + before { Fabricate :ip_block, severity: :sign_up_block, ip: '127.0.0.1' } + + it 'returns a JSON document with error details' do + subject + + expect(response) + .to have_http_status(403) + expect(response.media_type) + .to eq 'application/json' + expect(response.parsed_body) + .to include(error: /This action is not allowed/) + end end end