diff --git a/Dockerfile b/Dockerfile index 65440bb281..cd555f7027 100644 --- a/Dockerfile +++ b/Dockerfile @@ -196,11 +196,14 @@ ARG VIPS_VERSION=8.15.3 ARG VIPS_URL=https://github.com/libvips/libvips/releases/download WORKDIR /usr/local/libvips/src +# Download and extract libvips source code +ADD ${VIPS_URL}/v${VIPS_VERSION}/vips-${VIPS_VERSION}.tar.xz /usr/local/libvips/src/ +RUN tar xf vips-${VIPS_VERSION}.tar.xz; +WORKDIR /usr/local/libvips/src/vips-${VIPS_VERSION} + +# Configure and compile libvips RUN \ - curl -sSL -o vips-${VIPS_VERSION}.tar.xz ${VIPS_URL}/v${VIPS_VERSION}/vips-${VIPS_VERSION}.tar.xz; \ - tar xf vips-${VIPS_VERSION}.tar.xz; \ - cd vips-${VIPS_VERSION}; \ meson setup build --prefix /usr/local/libvips --libdir=lib -Ddeprecated=false -Dintrospection=disabled -Dmodules=disabled -Dexamples=false; \ cd build; \ ninja; \ @@ -216,11 +219,14 @@ ARG FFMPEG_VERSION=7.0.2 ARG FFMPEG_URL=https://ffmpeg.org/releases WORKDIR /usr/local/ffmpeg/src +# Download and extract ffmpeg source code +ADD ${FFMPEG_URL}/ffmpeg-${FFMPEG_VERSION}.tar.xz /usr/local/ffmpeg/src/ +RUN tar xf ffmpeg-${FFMPEG_VERSION}.tar.xz; +WORKDIR /usr/local/ffmpeg/src/ffmpeg-${FFMPEG_VERSION} + +# Configure and compile ffmpeg RUN \ - curl -sSL -o ffmpeg-${FFMPEG_VERSION}.tar.xz ${FFMPEG_URL}/ffmpeg-${FFMPEG_VERSION}.tar.xz; \ - tar xf ffmpeg-${FFMPEG_VERSION}.tar.xz; \ - cd ffmpeg-${FFMPEG_VERSION}; \ ./configure \ --prefix=/usr/local/ffmpeg \ --toolchain=hardened \ diff --git a/Gemfile.lock b/Gemfile.lock index 61bdb1d39c..596e32f24d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -281,8 +281,8 @@ GEM fog-core (~> 2.1) fog-json (>= 1.0) formatador (1.1.0) - fugit (1.10.1) - et-orbi (~> 1, >= 1.2.7) + fugit (1.11.1) + et-orbi (~> 1, >= 1.2.11) raabro (~> 1.4) fuubar (2.5.1) rspec-core (~> 3.0) @@ -514,17 +514,17 @@ GEM opentelemetry-api (~> 1.0) opentelemetry-instrumentation-base (~> 0.22.1) opentelemetry-instrumentation-rack (~> 0.21) - opentelemetry-instrumentation-action_view (0.7.1) + opentelemetry-instrumentation-action_view (0.7.2) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-active_support (~> 0.1) opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-active_job (0.7.4) + opentelemetry-instrumentation-active_job (0.7.6) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-base (~> 0.22.1) opentelemetry-instrumentation-active_model_serializers (0.20.2) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-active_record (0.7.2) + opentelemetry-instrumentation-active_record (0.7.3) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-base (~> 0.22.1) opentelemetry-instrumentation-active_support (0.6.0) @@ -558,7 +558,7 @@ GEM opentelemetry-instrumentation-rack (0.24.6) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-rails (0.31.1) + opentelemetry-instrumentation-rails (0.31.2) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-action_mailer (~> 0.1.0) opentelemetry-instrumentation-action_pack (~> 0.9.0) diff --git a/app/controllers/api/v1/notifications/requests_controller.rb b/app/controllers/api/v1/notifications/requests_controller.rb index 0710166d05..b820a2ed2e 100644 --- a/app/controllers/api/v1/notifications/requests_controller.rb +++ b/app/controllers/api/v1/notifications/requests_controller.rb @@ -1,8 +1,10 @@ # frozen_string_literal: true class Api::V1::Notifications::RequestsController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:notifications' }, only: :index - before_action -> { doorkeeper_authorize! :write, :'write:notifications' }, except: :index + include Redisable + + before_action -> { doorkeeper_authorize! :read, :'read:notifications' }, only: [:index, :show, :merged?] + before_action -> { doorkeeper_authorize! :write, :'write:notifications' }, except: [:index, :show, :merged?] before_action :require_user! before_action :set_request, only: [:show, :accept, :dismiss] @@ -19,6 +21,10 @@ class Api::V1::Notifications::RequestsController < Api::BaseController render json: @requests, each_serializer: REST::NotificationRequestSerializer, relationships: @relationships end + def merged? + render json: { merged: redis.get("notification_unfilter_jobs:#{current_account.id}").to_i <= 0 } + end + def show render json: @request, serializer: REST::NotificationRequestSerializer end diff --git a/app/helpers/admin/filter_helper.rb b/app/helpers/admin/filter_helper.rb index 140fc73ede..40806a4515 100644 --- a/app/helpers/admin/filter_helper.rb +++ b/app/helpers/admin/filter_helper.rb @@ -25,7 +25,7 @@ module Admin::FilterHelper end def table_link_to(icon, text, path, **options) - link_to safe_join([fa_icon(icon), text]), path, options.merge(class: 'table-action-link') + link_to safe_join([material_symbol(icon), text]), path, options.merge(class: 'table-action-link') end def selected?(more_params) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 8849c341c4..6f528b998f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -107,19 +107,12 @@ module ApplicationHelper policy(record).public_send(:"#{action}?") end - def fa_icon(icon, attributes = {}) - class_names = attributes[:class]&.split || [] - class_names << 'fa' - class_names += icon.split.map { |cl| "fa-#{cl}" } - - content_tag(:i, nil, attributes.merge(class: class_names.join(' '))) - end - def material_symbol(icon, attributes = {}) inline_svg_tag( "400-24px/#{icon}.svg", class: ['icon', "material-#{icon}"].concat(attributes[:class].to_s.split), - role: :img + role: :img, + data: attributes[:data] ) end diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb index 10863a316c..64f2ad70a6 100644 --- a/app/helpers/settings_helper.rb +++ b/app/helpers/settings_helper.rb @@ -26,11 +26,11 @@ module SettingsHelper device = session.detection.device if device.mobile? - 'mobile' + 'smartphone' elsif device.tablet? 'tablet' else - 'desktop' + 'desktop_mac' end end diff --git a/app/javascript/mastodon/actions/notification_groups.ts b/app/javascript/mastodon/actions/notification_groups.ts index fd6a48e9f3..6b699706e2 100644 --- a/app/javascript/mastodon/actions/notification_groups.ts +++ b/app/javascript/mastodon/actions/notification_groups.ts @@ -138,8 +138,18 @@ export const processNewNotificationForGroups = createAppAsyncThunk( export const loadPending = createAction('notificationGroups/loadPending'); -export const updateScrollPosition = createAction<{ top: boolean }>( +export const updateScrollPosition = createAppAsyncThunk( 'notificationGroups/updateScrollPosition', + ({ top }: { top: boolean }, { dispatch, getState }) => { + if ( + top && + getState().notificationGroups.mergedNotifications === 'needs-reload' + ) { + void dispatch(fetchNotifications()); + } + + return { top }; + }, ); export const setNotificationsFilter = createAppAsyncThunk( @@ -165,5 +175,34 @@ export const markNotificationsAsRead = createAction( 'notificationGroups/markAsRead', ); -export const mountNotifications = createAction('notificationGroups/mount'); +export const mountNotifications = createAppAsyncThunk( + 'notificationGroups/mount', + (_, { dispatch, getState }) => { + const state = getState(); + + if ( + state.notificationGroups.mounted === 0 && + state.notificationGroups.mergedNotifications === 'needs-reload' + ) { + void dispatch(fetchNotifications()); + } + }, +); + export const unmountNotifications = createAction('notificationGroups/unmount'); + +export const refreshStaleNotificationGroups = createAppAsyncThunk<{ + deferredRefresh: boolean; +}>('notificationGroups/refreshStale', (_, { dispatch, getState }) => { + const state = getState(); + + if ( + state.notificationGroups.scrolledToTop || + !state.notificationGroups.mounted + ) { + void dispatch(fetchNotifications()); + return { deferredRefresh: false }; + } + + return { deferredRefresh: true }; +}); diff --git a/app/javascript/mastodon/actions/notifications.js b/app/javascript/mastodon/actions/notifications.js index 83a20e55b3..4bea055e4d 100644 --- a/app/javascript/mastodon/actions/notifications.js +++ b/app/javascript/mastodon/actions/notifications.js @@ -200,8 +200,8 @@ const noOp = () => {}; let expandNotificationsController = new AbortController(); -export function expandNotifications({ maxId, forceLoad = false } = {}, done = noOp) { - return (dispatch, getState) => { +export function expandNotifications({ maxId = undefined, forceLoad = false }) { + return async (dispatch, getState) => { const activeFilter = getState().getIn(['settings', 'notifications', 'quickFilter', 'active']); const notifications = getState().get('notifications'); const isLoadingMore = !!maxId; @@ -211,7 +211,6 @@ export function expandNotifications({ maxId, forceLoad = false } = {}, done = no expandNotificationsController.abort(); expandNotificationsController = new AbortController(); } else { - done(); return; } } @@ -243,7 +242,8 @@ export function expandNotifications({ maxId, forceLoad = false } = {}, done = no dispatch(expandNotificationsRequest(isLoadingMore)); - api().get('/api/v1/notifications', { params, signal: expandNotificationsController.signal }).then(response => { + try { + const response = await api().get('/api/v1/notifications', { params, signal: expandNotificationsController.signal }); const next = getLinks(response).refs.find(link => link.rel === 'next'); dispatch(importFetchedAccounts(response.data.map(item => item.account))); @@ -253,11 +253,9 @@ export function expandNotifications({ maxId, forceLoad = false } = {}, done = no dispatch(expandNotificationsSuccess(response.data, next ? next.uri : null, isLoadingMore, isLoadingRecent, isLoadingRecent && preferPendingItems)); fetchRelatedRelationships(dispatch, response.data); dispatch(submitMarkers()); - }).catch(error => { + } catch(error) { dispatch(expandNotificationsFail(error, isLoadingMore)); - }).finally(() => { - done(); - }); + } }; } diff --git a/app/javascript/mastodon/actions/notifications_migration.tsx b/app/javascript/mastodon/actions/notifications_migration.tsx index f856e56828..c245dc7565 100644 --- a/app/javascript/mastodon/actions/notifications_migration.tsx +++ b/app/javascript/mastodon/actions/notifications_migration.tsx @@ -13,6 +13,6 @@ export const initializeNotifications = createAppAsyncThunk( ) as boolean; if (enableBeta) void dispatch(fetchNotifications()); - else dispatch(expandNotifications()); + else void dispatch(expandNotifications({})); }, ); diff --git a/app/javascript/mastodon/actions/streaming.js b/app/javascript/mastodon/actions/streaming.js index 60e49ddf34..bed251e75f 100644 --- a/app/javascript/mastodon/actions/streaming.js +++ b/app/javascript/mastodon/actions/streaming.js @@ -10,7 +10,7 @@ import { deleteAnnouncement, } from './announcements'; import { updateConversations } from './conversations'; -import { processNewNotificationForGroups } from './notification_groups'; +import { processNewNotificationForGroups, refreshStaleNotificationGroups } from './notification_groups'; import { updateNotifications, expandNotifications, updateEmojiReactions } from './notifications'; import { updateStatus } from './statuses'; import { @@ -38,7 +38,7 @@ const randomUpTo = max => * @param {string} channelName * @param {Object.} params * @param {Object} options - * @param {function(Function, Function): void} [options.fallback] + * @param {function(Function): Promise} [options.fallback] * @param {function(): void} [options.fillGaps] * @param {function(object): boolean} [options.accept] * @returns {function(): void} @@ -53,14 +53,13 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti let pollingId; /** - * @param {function(Function, Function): void} fallback + * @param {function(Function): Promise} fallback */ - const useFallback = fallback => { - fallback(dispatch, () => { - // eslint-disable-next-line react-hooks/rules-of-hooks -- this is not a react hook - pollingId = setTimeout(() => useFallback(fallback), 20000 + randomUpTo(20000)); - }); + const useFallback = async fallback => { + await fallback(dispatch); + // eslint-disable-next-line react-hooks/rules-of-hooks -- this is not a react hook + pollingId = setTimeout(() => useFallback(fallback), 20000 + randomUpTo(20000)); }; return { @@ -114,6 +113,14 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti // @ts-expect-error dispatch(updateEmojiReactions(JSON.parse(data.payload))); break; + case 'notifications_merged': + const state = getState(); + if (state.notifications.top || !state.notifications.mounted) + dispatch(expandNotifications({ forceLoad: true, maxId: undefined })); + if(state.settings.getIn(['notifications', 'groupingBeta'], false)) { + dispatch(refreshStaleNotificationGroups()); + } + break; case 'conversation': // @ts-expect-error dispatch(updateConversations(JSON.parse(data.payload))); @@ -137,21 +144,17 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti /** * @param {Function} dispatch - * @param {function(): void} done */ -const refreshHomeTimelineAndNotification = (dispatch, done) => { - // @ts-expect-error - dispatch(expandHomeTimeline({}, () => - // @ts-expect-error - dispatch(expandNotifications({}, () => - dispatch(fetchAnnouncements(done)))))); -}; +async function refreshHomeTimelineAndNotification(dispatch) { + await dispatch(expandHomeTimeline({ maxId: undefined })); + await dispatch(expandNotifications({})); + await dispatch(fetchAnnouncements()); +} /** * @returns {function(): void} */ export const connectUserStream = () => - // @ts-expect-error connectTimelineStream('home', 'user', {}, { fallback: refreshHomeTimelineAndNotification, fillGaps: fillHomeTimelineGaps }); /** diff --git a/app/javascript/mastodon/actions/timelines.js b/app/javascript/mastodon/actions/timelines.js index 6f3971a4f1..740e893a57 100644 --- a/app/javascript/mastodon/actions/timelines.js +++ b/app/javascript/mastodon/actions/timelines.js @@ -76,21 +76,18 @@ export function clearTimeline(timeline) { }; } -const noOp = () => {}; - const parseTags = (tags = {}, mode) => { return (tags[mode] || []).map((tag) => { return tag.value; }); }; -export function expandTimeline(timelineId, path, params = {}, done = noOp) { - return (dispatch, getState) => { +export function expandTimeline(timelineId, path, params = {}) { + return async (dispatch, getState) => { const timeline = getState().getIn(['timelines', timelineId], ImmutableMap()); const isLoadingMore = !!params.max_id; if (timeline.get('isLoading')) { - done(); return; } @@ -109,7 +106,8 @@ export function expandTimeline(timelineId, path, params = {}, done = noOp) { dispatch(expandTimelineRequest(timelineId, isLoadingMore)); - api().get(path, { params }).then(response => { + try { + const response = await api().get(path, { params }); const next = getLinks(response).refs.find(link => link.rel === 'next'); dispatch(importFetchedStatuses(response.data)); @@ -127,54 +125,50 @@ export function expandTimeline(timelineId, path, params = {}, done = noOp) { if (timelineId === 'home') { dispatch(submitMarkers()); } - }).catch(error => { + } catch(error) { dispatch(expandTimelineFail(timelineId, error, isLoadingMore)); - }).finally(() => { - done(); - }); + } }; } -export function fillTimelineGaps(timelineId, path, params = {}, done = noOp) { - return (dispatch, getState) => { +export function fillTimelineGaps(timelineId, path, params = {}) { + return async (dispatch, getState) => { const timeline = getState().getIn(['timelines', timelineId], ImmutableMap()); const items = timeline.get('items'); const nullIndexes = items.map((statusId, index) => statusId === null ? index : null); const gaps = nullIndexes.map(index => index > 0 ? items.get(index - 1) : null); // Only expand at most two gaps to avoid doing too many requests - done = gaps.take(2).reduce((done, maxId) => { - return (() => dispatch(expandTimeline(timelineId, path, { ...params, maxId }, done))); - }, done); - - done(); + for (const maxId of gaps.take(2)) { + await dispatch(expandTimeline(timelineId, path, { ...params, maxId })); + } }; } -export const expandHomeTimeline = ({ maxId } = {}, done = noOp) => expandTimeline('home', '/api/v1/timelines/home', { max_id: maxId }, done); -export const expandPublicTimeline = ({ maxId, onlyMedia, onlyRemote } = {}, done = noOp) => expandTimeline(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { remote: !!onlyRemote, max_id: maxId, only_media: !!onlyMedia }, done); -export const expandCommunityTimeline = ({ maxId, onlyMedia } = {}, done = noOp) => expandTimeline(`community${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { local: true, max_id: maxId, only_media: !!onlyMedia }, done); +export const expandHomeTimeline = ({ maxId } = {}) => expandTimeline('home', '/api/v1/timelines/home', { max_id: maxId }); +export const expandPublicTimeline = ({ maxId, onlyMedia, onlyRemote } = {}) => expandTimeline(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { remote: !!onlyRemote, max_id: maxId, only_media: !!onlyMedia }); +export const expandCommunityTimeline = ({ maxId, onlyMedia } = {}) => expandTimeline(`community${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { local: true, max_id: maxId, only_media: !!onlyMedia }); export const expandAccountTimeline = (accountId, { maxId, withReplies, tagged } = {}) => expandTimeline(`account:${accountId}${withReplies ? ':with_replies' : ''}${tagged ? `:${tagged}` : ''}`, `/api/v1/accounts/${accountId}/statuses`, { exclude_replies: !withReplies, exclude_reblogs: withReplies, tagged, max_id: maxId }); export const expandAccountFeaturedTimeline = (accountId, { tagged } = {}) => expandTimeline(`account:${accountId}:pinned${tagged ? `:${tagged}` : ''}`, `/api/v1/accounts/${accountId}/statuses`, { pinned: true, tagged }); export const expandAccountMediaTimeline = (accountId, { maxId } = {}) => expandTimeline(`account:${accountId}:media`, `/api/v1/accounts/${accountId}/statuses`, { max_id: maxId, only_media: true, limit: 40 }); -export const expandListTimeline = (id, { maxId } = {}, done = noOp) => expandTimeline(`list:${id}`, `/api/v1/timelines/list/${id}`, { max_id: maxId }, done); -export const expandAntennaTimeline = (id, { maxId } = {}, done = noOp) => expandTimeline(`antenna:${id}`, `/api/v1/timelines/antenna/${id}`, { max_id: maxId }, done); -export const expandLinkTimeline = (url, { maxId } = {}, done = noOp) => expandTimeline(`link:${url}`, `/api/v1/timelines/link`, { url, max_id: maxId }, done); -export const expandHashtagTimeline = (hashtag, { maxId, tags, local } = {}, done = noOp) => { +export const expandListTimeline = (id, { maxId } = {}) => expandTimeline(`list:${id}`, `/api/v1/timelines/list/${id}`, { max_id: maxId }); +export const expandAntennaTimeline = (id, { maxId } = {}) => expandTimeline(`antenna:${id}`, `/api/v1/timelines/antenna/${id}`, { max_id: maxId }); +export const expandLinkTimeline = (url, { maxId } = {}) => expandTimeline(`link:${url}`, `/api/v1/timelines/link`, { url, max_id: maxId }); +export const expandHashtagTimeline = (hashtag, { maxId, tags, local } = {}) => { return expandTimeline(`hashtag:${hashtag}${local ? ':local' : ''}`, `/api/v1/timelines/tag/${hashtag}`, { max_id: maxId, any: parseTags(tags, 'any'), all: parseTags(tags, 'all'), none: parseTags(tags, 'none'), local: local, - }, done); + }); }; -export const fillHomeTimelineGaps = (done = noOp) => fillTimelineGaps('home', '/api/v1/timelines/home', {}, done); -export const fillPublicTimelineGaps = ({ onlyMedia, onlyRemote } = {}, done = noOp) => fillTimelineGaps(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { remote: !!onlyRemote, only_media: !!onlyMedia }, done); -export const fillCommunityTimelineGaps = ({ onlyMedia } = {}, done = noOp) => fillTimelineGaps(`community${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { local: true, only_media: !!onlyMedia }, done); -export const fillListTimelineGaps = (id, done = noOp) => fillTimelineGaps(`list:${id}`, `/api/v1/timelines/list/${id}`, {}, done); -export const fillAntennaTimelineGaps = (id, done = noOp) => fillTimelineGaps(`antenna:${id}`, `/api/v1/timelines/antenna/${id}`, {}, done); +export const fillHomeTimelineGaps = () => fillTimelineGaps('home', '/api/v1/timelines/home', {}); +export const fillPublicTimelineGaps = ({ onlyMedia, onlyRemote } = {}) => fillTimelineGaps(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { remote: !!onlyRemote, only_media: !!onlyMedia }); +export const fillCommunityTimelineGaps = ({ onlyMedia } = {}) => fillTimelineGaps(`community${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { local: true, only_media: !!onlyMedia }); +export const fillListTimelineGaps = (id) => fillTimelineGaps(`list:${id}`, `/api/v1/timelines/list/${id}`, {}); +export const fillAntennaTimelineGaps = (id) => fillTimelineGaps(`antenna:${id}`, `/api/v1/timelines/antenna/${id}`, {}); export function expandTimelineRequest(timeline, isLoadingMore) { return { diff --git a/app/javascript/mastodon/common.js b/app/javascript/mastodon/common.js index 511568aa0f..28857de534 100644 --- a/app/javascript/mastodon/common.js +++ b/app/javascript/mastodon/common.js @@ -1,5 +1,4 @@ import Rails from '@rails/ujs'; -import 'font-awesome/css/font-awesome.css'; export function start() { require.context('../images/', true, /\.(jpg|png|svg)$/); diff --git a/app/javascript/mastodon/components/admin/ReportReasonSelector.jsx b/app/javascript/mastodon/components/admin/ReportReasonSelector.jsx index cc05e5c163..351f1c949e 100644 --- a/app/javascript/mastodon/components/admin/ReportReasonSelector.jsx +++ b/app/javascript/mastodon/components/admin/ReportReasonSelector.jsx @@ -153,7 +153,7 @@ class ReportReasonSelector extends PureComponent { - + {rules.map(rule => )} diff --git a/app/javascript/mastodon/components/timeline_hint.tsx b/app/javascript/mastodon/components/timeline_hint.tsx index 6faad2fbb8..9e0d3676ec 100644 --- a/app/javascript/mastodon/components/timeline_hint.tsx +++ b/app/javascript/mastodon/components/timeline_hint.tsx @@ -1,28 +1,23 @@ -import { FormattedMessage } from 'react-intl'; - import classNames from 'classnames'; interface Props { - resource: JSX.Element; + message: React.ReactNode; + label: React.ReactNode; url: string; className?: string; } -export const TimelineHint: React.FC = ({ className, resource, url }) => ( +export const TimelineHint: React.FC = ({ + className, + message, + label, + url, +}) => (
- - - -
+

{message}

+ - + {label}
); diff --git a/app/javascript/mastodon/features/account_timeline/index.jsx b/app/javascript/mastodon/features/account_timeline/index.jsx index dc69f83e77..105c2e4e50 100644 --- a/app/javascript/mastodon/features/account_timeline/index.jsx +++ b/app/javascript/mastodon/features/account_timeline/index.jsx @@ -12,6 +12,7 @@ import BundleColumnError from 'mastodon/features/ui/components/bundle_column_err import { me } from 'mastodon/initial_state'; import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; import { getAccountHidden } from 'mastodon/selectors'; +import { useAppSelector } from 'mastodon/store'; import { lookupAccount, fetchAccount } from '../../actions/accounts'; import { fetchFeaturedTags } from '../../actions/featured_tags'; @@ -59,12 +60,22 @@ const mapStateToProps = (state, { params: { acct, id, tagged }, withReplies = fa }; }; -const RemoteHint = ({ url }) => ( - } /> -); +const RemoteHint = ({ accountId, url }) => { + const acct = useAppSelector(state => state.accounts.get(accountId)?.acct); + const domain = acct ? acct.split('@')[1] : undefined; + + return ( + } + label={{domain} }} />} + /> + ); +}; RemoteHint.propTypes = { url: PropTypes.string.isRequired, + accountId: PropTypes.string.isRequired, }; class AccountTimeline extends ImmutablePureComponent { @@ -175,12 +186,12 @@ class AccountTimeline extends ImmutablePureComponent { } else if (blockedBy) { emptyMessage = ; } else if (remote && statusIds.isEmpty()) { - emptyMessage = ; + emptyMessage = ; } else { emptyMessage = ; } - const remoteMessage = remote ? : null; + const remoteMessage = remote ? : null; return ( diff --git a/app/javascript/mastodon/features/followers/index.jsx b/app/javascript/mastodon/features/followers/index.jsx index 1e98a61657..cfd6e9fdc1 100644 --- a/app/javascript/mastodon/features/followers/index.jsx +++ b/app/javascript/mastodon/features/followers/index.jsx @@ -13,6 +13,7 @@ import BundleColumnError from 'mastodon/features/ui/components/bundle_column_err import { isHideItem, me } from 'mastodon/initial_state'; import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; import { getAccountHidden } from 'mastodon/selectors'; +import { useAppSelector } from 'mastodon/store'; import { lookupAccount, @@ -52,12 +53,22 @@ const mapStateToProps = (state, { params: { acct, id } }) => { }; }; -const RemoteHint = ({ url }) => ( - } /> -); +const RemoteHint = ({ accountId, url }) => { + const acct = useAppSelector(state => state.accounts.get(accountId)?.acct); + const domain = acct ? acct.split('@')[1] : undefined; + + return ( + } + label={{domain} }} />} + /> + ); +}; RemoteHint.propTypes = { url: PropTypes.string.isRequired, + accountId: PropTypes.string.isRequired, }; class Followers extends ImmutablePureComponent { @@ -143,14 +154,14 @@ class Followers extends ImmutablePureComponent { } else if (hideCollections && accountIds.isEmpty()) { emptyMessage = ; } else if (remote && accountIds.isEmpty()) { - emptyMessage = ; + emptyMessage = ; } else if (isHideRelationships) { emptyMessage = ; } else { emptyMessage = ; } - const remoteMessage = remote ? : null; + const remoteMessage = remote ? : null; return ( diff --git a/app/javascript/mastodon/features/following/index.jsx b/app/javascript/mastodon/features/following/index.jsx index 3e890e8d87..6ebc8e41d6 100644 --- a/app/javascript/mastodon/features/following/index.jsx +++ b/app/javascript/mastodon/features/following/index.jsx @@ -13,6 +13,7 @@ import BundleColumnError from 'mastodon/features/ui/components/bundle_column_err import { isHideItem, me } from 'mastodon/initial_state'; import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; import { getAccountHidden } from 'mastodon/selectors'; +import { useAppSelector } from 'mastodon/store'; import { lookupAccount, @@ -52,12 +53,22 @@ const mapStateToProps = (state, { params: { acct, id } }) => { }; }; -const RemoteHint = ({ url }) => ( - } /> -); +const RemoteHint = ({ accountId, url }) => { + const acct = useAppSelector(state => state.accounts.get(accountId)?.acct); + const domain = acct ? acct.split('@')[1] : undefined; + + return ( + } + label={{domain} }} />} + /> + ); +}; RemoteHint.propTypes = { url: PropTypes.string.isRequired, + accountId: PropTypes.string.isRequired, }; class Following extends ImmutablePureComponent { @@ -132,7 +143,7 @@ class Following extends ImmutablePureComponent { let emptyMessage; const forceEmptyState = blockedBy || suspended || hidden; - const normalizedAccountIds = isHideItem('relationships') ? accountIds.filter((id) => id !== me) : accountIds; + const filteredAccountIds = isHideItem('relationships') ? accountIds.filter((id) => id !== me) : accountIds; if (suspended) { emptyMessage = ; @@ -140,15 +151,15 @@ class Following extends ImmutablePureComponent { emptyMessage = ; } else if (blockedBy) { emptyMessage = ; - } else if (hideCollections && normalizedAccountIds.isEmpty()) { + } else if (hideCollections && filteredAccountIds.isEmpty()) { emptyMessage = ; - } else if (remote && normalizedAccountIds.isEmpty()) { - emptyMessage = ; + } else if (remote && filteredAccountIds.isEmpty()) { + emptyMessage = ; } else { emptyMessage = ; } - const remoteMessage = remote ? : null; + const remoteMessage = remote ? : null; return ( @@ -165,7 +176,7 @@ class Following extends ImmutablePureComponent { emptyMessage={emptyMessage} bindToDocument={!multiColumn} > - {forceEmptyState ? [] : normalizedAccountIds.map(id => + {forceEmptyState ? [] : filteredAccountIds.map(id => , )} diff --git a/app/javascript/mastodon/features/link_timeline/index.tsx b/app/javascript/mastodon/features/link_timeline/index.tsx index dd726dac1a..262a21afcc 100644 --- a/app/javascript/mastodon/features/link_timeline/index.tsx +++ b/app/javascript/mastodon/features/link_timeline/index.tsx @@ -36,13 +36,13 @@ export const LinkTimeline: React.FC<{ const handleLoadMore = useCallback( (maxId: string) => { - dispatch(expandLinkTimeline(decodedUrl, { maxId })); + void dispatch(expandLinkTimeline(decodedUrl, { maxId })); }, [dispatch, decodedUrl], ); useEffect(() => { - dispatch(expandLinkTimeline(decodedUrl)); + void dispatch(expandLinkTimeline(decodedUrl)); }, [dispatch, decodedUrl]); return ( diff --git a/app/javascript/mastodon/features/notifications/requests.jsx b/app/javascript/mastodon/features/notifications/requests.jsx index f323bda4fb..f35c042ba6 100644 --- a/app/javascript/mastodon/features/notifications/requests.jsx +++ b/app/javascript/mastodon/features/notifications/requests.jsx @@ -7,6 +7,7 @@ import { Helmet } from 'react-helmet'; import { useSelector, useDispatch } from 'react-redux'; +import ArrowDropDownIcon from '@/material-icons/400-24px/arrow_drop_down.svg?react'; import InventoryIcon from '@/material-icons/400-24px/inventory_2.svg?react'; import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; import { openModal } from 'mastodon/actions/modal'; @@ -15,6 +16,7 @@ import { changeSetting } from 'mastodon/actions/settings'; import { CheckBox } from 'mastodon/components/check_box'; import Column from 'mastodon/components/column'; import ColumnHeader from 'mastodon/components/column_header'; +import { Icon } from 'mastodon/components/icon'; import ScrollableList from 'mastodon/components/scrollable_list'; import DropdownMenuContainer from 'mastodon/containers/dropdown_menu_container'; @@ -26,16 +28,14 @@ const messages = defineMessages({ title: { id: 'notification_requests.title', defaultMessage: 'Filtered notifications' }, maximize: { id: 'notification_requests.maximize', defaultMessage: 'Maximize' }, more: { id: 'status.more', defaultMessage: 'More' }, - acceptAll: { id: 'notification_requests.accept_all', defaultMessage: 'Accept all' }, - dismissAll: { id: 'notification_requests.dismiss_all', defaultMessage: 'Dismiss all' }, - acceptMultiple: { id: 'notification_requests.accept_multiple', defaultMessage: '{count, plural, one {Accept # request} other {Accept # requests}}' }, - dismissMultiple: { id: 'notification_requests.dismiss_multiple', defaultMessage: '{count, plural, one {Dismiss # request} other {Dismiss # requests}}' }, - confirmAcceptAllTitle: { id: 'notification_requests.confirm_accept_all.title', defaultMessage: 'Accept notification requests?' }, - confirmAcceptAllMessage: { id: 'notification_requests.confirm_accept_all.message', defaultMessage: 'You are about to accept {count, plural, one {one notification request} other {# notification requests}}. Are you sure you want to proceed?' }, - confirmAcceptAllButton: { id: 'notification_requests.confirm_accept_all.button', defaultMessage: 'Accept all' }, - confirmDismissAllTitle: { id: 'notification_requests.confirm_dismiss_all.title', defaultMessage: 'Dismiss notification requests?' }, - confirmDismissAllMessage: { id: 'notification_requests.confirm_dismiss_all.message', defaultMessage: "You are about to dismiss {count, plural, one {one notification request} other {# notification requests}}. You won't be able to easily access {count, plural, one {it} other {them}} again. Are you sure you want to proceed?" }, - confirmDismissAllButton: { id: 'notification_requests.confirm_dismiss_all.button', defaultMessage: 'Dismiss all' }, + acceptMultiple: { id: 'notification_requests.accept_multiple', defaultMessage: '{count, plural, one {Accept # request…} other {Accept # requests…}}' }, + dismissMultiple: { id: 'notification_requests.dismiss_multiple', defaultMessage: '{count, plural, one {Dismiss # request…} other {Dismiss # requests…}}' }, + confirmAcceptMultipleTitle: { id: 'notification_requests.confirm_accept_multiple.title', defaultMessage: 'Accept notification requests?' }, + confirmAcceptMultipleMessage: { id: 'notification_requests.confirm_accept_multiple.message', defaultMessage: 'You are about to accept {count, plural, one {one notification request} other {# notification requests}}. Are you sure you want to proceed?' }, + confirmAcceptMultipleButton: { id: 'notification_requests.confirm_accept_multiple.button', defaultMessage: '{count, plural, one {Accept request} other {Accept requests}}' }, + confirmDismissMultipleTitle: { id: 'notification_requests.confirm_dismiss_multiple.title', defaultMessage: 'Dismiss notification requests?' }, + confirmDismissMultipleMessage: { id: 'notification_requests.confirm_dismiss_multiple.message', defaultMessage: "You are about to dismiss {count, plural, one {one notification request} other {# notification requests}}. You won't be able to easily access {count, plural, one {it} other {them}} again. Are you sure you want to proceed?" }, + confirmDismissMultipleButton: { id: 'notification_requests.confirm_dismiss_multiple.button', defaultMessage: '{count, plural, one {Dismiss request} other {Dismiss requests}}' }, }); const ColumnSettings = () => { @@ -74,45 +74,15 @@ const SelectRow = ({selectAllChecked, toggleSelectAll, selectedItems, selectionM const intl = useIntl(); const dispatch = useDispatch(); - const notificationRequests = useSelector(state => state.getIn(['notificationRequests', 'items'])); - const selectedCount = selectedItems.length; - const handleAcceptAll = useCallback(() => { - const items = notificationRequests.map(request => request.get('id')).toArray(); - dispatch(openModal({ - modalType: 'CONFIRM', - modalProps: { - title: intl.formatMessage(messages.confirmAcceptAllTitle), - message: intl.formatMessage(messages.confirmAcceptAllMessage, { count: items.length }), - confirm: intl.formatMessage(messages.confirmAcceptAllButton), - onConfirm: () => - dispatch(acceptNotificationRequests(items)), - }, - })); - }, [dispatch, intl, notificationRequests]); - - const handleDismissAll = useCallback(() => { - const items = notificationRequests.map(request => request.get('id')).toArray(); - dispatch(openModal({ - modalType: 'CONFIRM', - modalProps: { - title: intl.formatMessage(messages.confirmDismissAllTitle), - message: intl.formatMessage(messages.confirmDismissAllMessage, { count: items.length }), - confirm: intl.formatMessage(messages.confirmDismissAllButton), - onConfirm: () => - dispatch(dismissNotificationRequests(items)), - }, - })); - }, [dispatch, intl, notificationRequests]); - const handleAcceptMultiple = useCallback(() => { dispatch(openModal({ modalType: 'CONFIRM', modalProps: { - title: intl.formatMessage(messages.confirmAcceptAllTitle), - message: intl.formatMessage(messages.confirmAcceptAllMessage, { count: selectedItems.length }), - confirm: intl.formatMessage(messages.confirmAcceptAllButton), + title: intl.formatMessage(messages.confirmAcceptMultipleTitle), + message: intl.formatMessage(messages.confirmAcceptMultipleMessage, { count: selectedItems.length }), + confirm: intl.formatMessage(messages.confirmAcceptMultipleButton, { count: selectedItems.length}), onConfirm: () => dispatch(acceptNotificationRequests(selectedItems)), }, @@ -123,9 +93,9 @@ const SelectRow = ({selectAllChecked, toggleSelectAll, selectedItems, selectionM dispatch(openModal({ modalType: 'CONFIRM', modalProps: { - title: intl.formatMessage(messages.confirmDismissAllTitle), - message: intl.formatMessage(messages.confirmDismissAllMessage, { count: selectedItems.length }), - confirm: intl.formatMessage(messages.confirmDismissAllButton), + title: intl.formatMessage(messages.confirmDismissMultipleTitle), + message: intl.formatMessage(messages.confirmDismissMultipleMessage, { count: selectedItems.length }), + confirm: intl.formatMessage(messages.confirmDismissMultipleButton, { count: selectedItems.length}), onConfirm: () => dispatch(dismissNotificationRequests(selectedItems)), }, @@ -136,46 +106,45 @@ const SelectRow = ({selectAllChecked, toggleSelectAll, selectedItems, selectionM setSelectionMode((mode) => !mode); }, [setSelectionMode]); - const menu = selectedCount === 0 ? - [ - { text: intl.formatMessage(messages.acceptAll), action: handleAcceptAll }, - { text: intl.formatMessage(messages.dismissAll), action: handleDismissAll }, - ] : [ - { text: intl.formatMessage(messages.acceptMultiple, { count: selectedCount }), action: handleAcceptMultiple }, - { text: intl.formatMessage(messages.dismissMultiple, { count: selectedCount }), action: handleDismissMultiple }, - ]; + const menu = [ + { text: intl.formatMessage(messages.acceptMultiple, { count: selectedCount }), action: handleAcceptMultiple }, + { text: intl.formatMessage(messages.dismissMultiple, { count: selectedCount }), action: handleDismissMultiple }, + ]; + + const handleSelectAll = useCallback(() => { + setSelectionMode(true); + toggleSelectAll(); + }, [setSelectionMode, toggleSelectAll]); return (
- {selectionMode && ( -
- 0 && !selectAllChecked} onChange={toggleSelectAll} /> -
- )} -
+
+ 0 && !selectAllChecked} onChange={handleSelectAll} /> +
+ + + +
- {selectedCount > 0 && -
- {selectedCount} selected -
- } -
- -
); }; diff --git a/app/javascript/mastodon/features/notifications_v2/index.tsx b/app/javascript/mastodon/features/notifications_v2/index.tsx index 63e602bdcc..29c49e05c8 100644 --- a/app/javascript/mastodon/features/notifications_v2/index.tsx +++ b/app/javascript/mastodon/features/notifications_v2/index.tsx @@ -81,7 +81,11 @@ export const Notifications: React.FC<{ const anyPendingNotification = useAppSelector(selectAnyPendingNotification); - const isUnread = unreadNotificationsCount > 0; + const needsReload = useAppSelector( + (state) => state.notificationGroups.mergedNotifications === 'needs-reload', + ); + + const isUnread = unreadNotificationsCount > 0 || needsReload; const canMarkAsRead = useAppSelector(selectSettingsNotificationsShowUnread) && @@ -118,11 +122,11 @@ export const Notifications: React.FC<{ // Keep track of mounted components for unread notification handling useEffect(() => { - dispatch(mountNotifications()); + void dispatch(mountNotifications()); return () => { dispatch(unmountNotifications()); - dispatch(updateScrollPosition({ top: false })); + void dispatch(updateScrollPosition({ top: false })); }; }, [dispatch]); @@ -147,11 +151,11 @@ export const Notifications: React.FC<{ }, [dispatch]); const handleScrollToTop = useDebouncedCallback(() => { - dispatch(updateScrollPosition({ top: true })); + void dispatch(updateScrollPosition({ top: true })); }, 100); const handleScroll = useDebouncedCallback(() => { - dispatch(updateScrollPosition({ top: false })); + void dispatch(updateScrollPosition({ top: false })); }, 100); useEffect(() => { diff --git a/app/javascript/mastodon/features/status/index.jsx b/app/javascript/mastodon/features/status/index.jsx index 094de46b25..6e190b0e7c 100644 --- a/app/javascript/mastodon/features/status/index.jsx +++ b/app/javascript/mastodon/features/status/index.jsx @@ -705,7 +705,14 @@ class Status extends ImmutablePureComponent { const isIndexable = !status.getIn(['account', 'noindex']); if (!isLocal) { - remoteHint = } />; + remoteHint = ( + } + label={{status.getIn(['account', 'acct']).split('@')[1]} }} />} + /> + ); } const handlers = { diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 0269274397..a022f3a0e5 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -500,14 +500,7 @@ "notification.status": "{name} نشر للتو", "notification.update": "عدّلَ {name} منشورًا", "notification_requests.accept": "موافقة", - "notification_requests.accept_all": "قبول الكل", - "notification_requests.confirm_accept_all.button": "قبول الكل", - "notification_requests.confirm_accept_all.title": "أتريد قبول طلبات الإشعار؟", - "notification_requests.confirm_dismiss_all.button": "تجاهل الكل", "notification_requests.dismiss": "تخطي", - "notification_requests.dismiss_all": "تجاهل الكل", - "notification_requests.enter_selection_mode": "اختر", - "notification_requests.exit_selection_mode": "إلغاء", "notification_requests.explainer_for_limited_account": "تم تصفية الإشعارات من هذا الحساب لأن الحساب تم تقييده من قبل مشرف.", "notification_requests.notifications_from": "إشعارات من {name}", "notification_requests.title": "الإشعارات المصفاة", diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index 1ba69f27f3..546a1457a9 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -11,6 +11,7 @@ "about.not_available": "Дадзеная інфармацыя не дасяжная на гэтым серверы.", "about.powered_by": "Дэцэнтралізаваная сацыяльная сетка, створаная {mastodon}", "about.rules": "Правілы сервера", + "account.account_note_header": "Асабістая нататка", "account.add_or_remove_from_list": "Дадаць або выдаліць са спісаў", "account.badges.bot": "Бот", "account.badges.group": "Група", @@ -481,6 +482,11 @@ "notification.favourite": "Ваш допіс упадабаны {name}", "notification.follow": "{name} падпісаўся на вас", "notification.follow_request": "{name} адправіў запыт на падпіску", + "notification.label.mention": "Згадванне", + "notification.label.private_mention": "Асабістае згадванне", + "notification.label.private_reply": "Асабісты адказ", + "notification.label.reply": "Адказ", + "notification.mention": "Згадванне", "notification.moderation-warning.learn_more": "Даведацца больш", "notification.moderation_warning": "Вы атрымалі папярэджанне аб мадэрацыі", "notification.moderation_warning.action_delete_statuses": "Некаторыя вашыя допісы былі выдаленыя.", @@ -506,6 +512,7 @@ "notification_requests.minimize_banner": "Згарнуць банер адфільтраваных апавяшчэнняў", "notification_requests.notifications_from": "Апавяшчэнні ад {name}", "notification_requests.title": "Адфільтраваныя апавяшчэнні", + "notification_requests.view": "Прагляд апавяшчэнняў", "notifications.clear": "Ачысціць апавяшчэнні", "notifications.clear_confirmation": "Вы ўпэўнены, што жадаеце назаўсёды сцерці ўсё паведамленні?", "notifications.clear_title": "Ачысціць апавяшчэнні?", @@ -542,6 +549,10 @@ "notifications.permission_denied": "Апавяшчэнні на працоўным стале недаступныя з-за папярэдне адхіленага запыта праў браўзера", "notifications.permission_denied_alert": "Апавяшчэнні на працоўным стале не могуць быць уключаныя, з-за таго што запыт браўзера быў адхілены", "notifications.permission_required": "Апавяшчэнні на працоўным стале недаступныя, з-за таго што неабходны дазвол не быў дадзены.", + "notifications.policy.accept": "Прыняць", + "notifications.policy.accept_hint": "Паказваць у апавяшчэннях", + "notifications.policy.drop": "Iгнараваць", + "notifications.policy.filter": "Фільтраваць", "notifications.policy.filter_new_accounts.hint": "Створаныя на працягу {days, plural, one {апошняга # дня} few {апошніх # дзён} many {апошніх # дзён} other {апошняй # дня}}", "notifications.policy.filter_new_accounts_title": "Новыя ўліковыя запісы", "notifications.policy.filter_not_followers_hint": "Уключаючы людзей, якія падпісаны на вас менш, чым {days, plural, one {# дзень} few {# дні} many {# дзён} other {# дня}}", @@ -550,6 +561,7 @@ "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": "Каб атрымліваць апавяшчэнні, калі Mastodon не адкрыты, уключыце апавяшчэнні працоўнага стала. Вы зможаце дакладна кантраляваць, якія падзеі будуць ствараць апавяшчэнні з дапамогай {icon} кнопкі, як толькі яны будуць уключаны.", "notifications_permission_banner.title": "Не прапусціце нічога", @@ -790,6 +802,7 @@ "timeline_hint.remote_resource_not_displayed": "{resource} з іншых сервераў не адлюстроўваецца.", "timeline_hint.resources.followers": "Падпісчыкі", "timeline_hint.resources.follows": "Падпіскі", + "timeline_hint.resources.replies": "Некаторыя адказы", "timeline_hint.resources.statuses": "Старыя допісы", "trends.counter_by_accounts": "{count, plural, one {{counter} чалавек} few {{counter} чалавекі} many {{counter} людзей} other {{counter} чалавек}} за {days, plural, one {{days} апошні дзень} few {{days} апошнія дні} many {{days} апошніх дзён} other {{days} апошніх дзён}}", "trends.trending_now": "Актуальнае", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 6687c64a6d..69166eafb8 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -505,8 +505,6 @@ "notification.update": "{name} промени публикация", "notification_requests.accept": "Приемам", "notification_requests.dismiss": "Отхвърлям", - "notification_requests.enter_selection_mode": "Изберете", - "notification_requests.exit_selection_mode": "Отказ", "notification_requests.explainer_for_limited_account": "Известията от този акаунт са прецедени, защото акаунтът е ограничен от модератор.", "notification_requests.explainer_for_limited_remote_account": "Известията от този акаунт са прецедени, защото акаунтът или сървърът му е ограничен от модератор.", "notification_requests.maximize": "Максимизиране", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index a41e7ba4dd..777e886327 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -517,17 +517,17 @@ "notification.status": "{name} acaba de publicar", "notification.update": "{name} ha editat un tut", "notification_requests.accept": "Accepta", - "notification_requests.accept_all": "Accepta-ho tot", - "notification_requests.accept_multiple": "{count, plural, one {Accepta # petició} other {Accepta # peticions}}", - "notification_requests.confirm_accept_all.button": "Accepta-ho tot", - "notification_requests.confirm_accept_all.message": "Esteu a punt d'acceptar {count, plural, one {una petició de notificació} other {# peticions de notificació}}. N'esteu segurs de continuar?", - "notification_requests.confirm_accept_all.title": "Accepteu peticions de notificació?", - "notification_requests.confirm_dismiss_all.button": "Descarta-les totes", - "notification_requests.confirm_dismiss_all.title": "Descarta la sol·licitud de notificació?", + "notification_requests.accept_multiple": "{count, plural, one {Accepta # petició…} other {Accepta # peticions…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Accepta petició} other {Accepta peticions}}", + "notification_requests.confirm_accept_multiple.message": "Esteu a punt d'acceptar {count, plural, one {una petició de notificació} other {# peticions de notificació}}. N'esteu segurs de continuar?", + "notification_requests.confirm_accept_multiple.title": "Acceptar peticions de notificació?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Descarta petició} other {Descarta peticions}}", + "notification_requests.confirm_dismiss_multiple.message": "Esteu a punt de descartar {count, plural, one {una petició de notificació} other {# peticions de notificació}}. No hi {count, plural, one {} other {}} podreu tornar a accedir fàcilment. N'esteu segurs de continuar?", + "notification_requests.confirm_dismiss_multiple.title": "Descartar les peticions de notificació?", "notification_requests.dismiss": "Ignora", - "notification_requests.dismiss_all": "Descarta-ho tot", - "notification_requests.enter_selection_mode": "Selecciona", - "notification_requests.exit_selection_mode": "Cancel·la", + "notification_requests.dismiss_multiple": "{count, plural, one {Descarta # petició…} other {Descarta # peticions…}}", + "notification_requests.edit_selection": "Edita", + "notification_requests.exit_selection": "Fet", "notification_requests.explainer_for_limited_account": "S'han filtrat les notificacions d'aquest compte perquè un moderador l'ha limitat.", "notification_requests.explainer_for_limited_remote_account": "S'han filtrat les notificacions d'aquest compte perquè un moderador ha limitat el compte o el seu servidor.", "notification_requests.maximize": "Maximitza", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 8b86b49e06..4fb02ba7f1 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -518,19 +518,7 @@ "notification.status": "{name} newydd ei bostio", "notification.update": "Golygodd {name} bostiad", "notification_requests.accept": "Derbyn", - "notification_requests.accept_all": "Derbyn y cyfan", - "notification_requests.accept_multiple": "{count, plural, one {Derbyn # cais} other {Derbyn # cais}}", - "notification_requests.confirm_accept_all.button": "Derbyn y cyfan", - "notification_requests.confirm_accept_all.message": "Rydych ar fin derbyn {count, plural, one {un cais hysbysu} other {# cais hysbysiad}}. A ydych yn siŵr eich bod am fwrw ymlaen?", - "notification_requests.confirm_accept_all.title": "Derbyn ceisiadau hysbysu?", - "notification_requests.confirm_dismiss_all.button": "Diystyru pob un", - "notification_requests.confirm_dismiss_all.message": "Rydych ar fin diystyru {count, plural, one {un cais hysbysu} other {# cais hysbysiad}}. Ni fyddwch yn gallu cyrchu {count, plural, one {it} other {them}} yn hawdd eto. A ydych yn siŵr eich bod am fwrw ymlaen?", - "notification_requests.confirm_dismiss_all.title": "Diystyru ceisiadau hysbysu?", "notification_requests.dismiss": "Cau", - "notification_requests.dismiss_all": "Diystyru pob un", - "notification_requests.dismiss_multiple": "{count, plural, one {Diystyru # cais} other {Diystyru # cais}}", - "notification_requests.enter_selection_mode": "Dewis", - "notification_requests.exit_selection_mode": "Canslo", "notification_requests.explainer_for_limited_account": "Mae hysbysiadau o'r cyfrif hwn wedi'u hidlo oherwydd bod y cyfrif wedi'i gyfyngu gan gymedrolwr.", "notification_requests.explainer_for_limited_remote_account": "Mae hysbysiadau o'r cyfrif hwn wedi'u hidlo oherwydd bod y cyfrif neu ei weinydd wedi'i gyfyngu gan gymedrolwr.", "notification_requests.maximize": "Mwyhau", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index a9e549470c..9ae27e134e 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -518,19 +518,17 @@ "notification.status": "{name} har netop postet", "notification.update": "{name} redigerede et indlæg", "notification_requests.accept": "Acceptér", - "notification_requests.accept_all": "Acceptér alle", - "notification_requests.accept_multiple": "{count, plural, one {Acceptér # anmodning} other {Acceptér # anmodninger}}", - "notification_requests.confirm_accept_all.button": "Acceptér alle", - "notification_requests.confirm_accept_all.message": "Man er ved at acceptere {count, plural, one {en notifikationsanmodning} other {# notifikationsanmodninger}}. Fortsæt, sikker?", - "notification_requests.confirm_accept_all.title": "Acceptér notifikationsanmodninger?", - "notification_requests.confirm_dismiss_all.button": "Afvis alle", - "notification_requests.confirm_dismiss_all.message": "Man er ved at afvise {count, plural, one {en notifikationsanmodning} other {# notifikationsanmodninger}}. Man vil derfor ikke nemt kunne tilgå {count, plural, one {den} other {dem}} igen. Fortsæt, sikker?", - "notification_requests.confirm_dismiss_all.title": "Afvis notifikationsanmodninger?", + "notification_requests.accept_multiple": "{count, plural, one {Acceptér # anmodning…} other {Acceptér # anmodninger…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Acceptér anmodning} other {Acceptér anmodninger}}", + "notification_requests.confirm_accept_multiple.message": "{count, plural, one {En notifikationsanmodning} other {# notifikationsanmodninger}} er ved at blive accepteret. Fortsæt, sikker?", + "notification_requests.confirm_accept_multiple.title": "Acceptér notifikationsanmodninger?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Afvis anmodning} other {Afvis anmodninger}}", + "notification_requests.confirm_dismiss_multiple.message": "{count, plural, one {En notifikationsanmodning} other {# notifikationsanmodninger}} er ved at blive afvist, hvorfor man ikke nemt vil kunne tilgå {count, plural, one {den} other {dem}} igen. Fortsæt, sikker?", + "notification_requests.confirm_dismiss_multiple.title": "Afvis notifikationsanmodninger?", "notification_requests.dismiss": "Afvis", - "notification_requests.dismiss_all": "Afvis alle", - "notification_requests.dismiss_multiple": "{count, plural, one {Afvis # anmodning} other {Afvis # anmodninger}}", - "notification_requests.enter_selection_mode": "Vælg", - "notification_requests.exit_selection_mode": "Afbryd", + "notification_requests.dismiss_multiple": "{count, plural, one {Afvis # anmodning…} other {Afvis # anmodninger…}}", + "notification_requests.edit_selection": "Redigér", + "notification_requests.exit_selection": "Udført", "notification_requests.explainer_for_limited_account": "Notifikationer fra denne konto er blevet filtreret, da kontoen er pålagt restriktioner af en moderator.", "notification_requests.explainer_for_limited_remote_account": "Notifikationer fra denne konto er blevet filtreret, da kontoen eller dens server er pålagt restriktioner af en moderator.", "notification_requests.maximize": "Maksimér", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 2d49f172e6..b7872f0dea 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -518,19 +518,17 @@ "notification.status": "{name} hat gerade etwas gepostet", "notification.update": "{name} bearbeitete einen Beitrag", "notification_requests.accept": "Genehmigen", - "notification_requests.accept_all": "Alle genehmigen", - "notification_requests.accept_multiple": "{count, plural, one {# Anfrage genehmigen} other {# Anfragen genehmigen}}", - "notification_requests.confirm_accept_all.button": "Alle genehmigen", - "notification_requests.confirm_accept_all.message": "Du bist dabei, {{count, plural, one {eine Benachrichtigungsanfrage} other {# Benachrichtigungsanfragen}} zu genehmigen. Möchtest du wirklich fortfahren?", - "notification_requests.confirm_accept_all.title": "Benachrichtigungsanfragen genehmigen?", - "notification_requests.confirm_dismiss_all.button": "Alle ablehnen", - "notification_requests.confirm_dismiss_all.message": "Du bist dabei, {count, plural, one {eine Benachrichtigungsanfrage} other {# Benachrichtigungsanfragen}} abzulehnen. Du wirst nicht mehr ohne Weiteres auf {count, plural, one {sie} other {sie}} zugreifen können. Möchtest du wirklich fortfahren?", - "notification_requests.confirm_dismiss_all.title": "Benachrichtigungsanfragen ablehnen?", + "notification_requests.accept_multiple": "{count, plural, one {# Anfrage genehmigen …} other {# Anfragen genehmigen …}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Anfrage genehmigen} other {Anfragen genehmigen}}", + "notification_requests.confirm_accept_multiple.message": "Du bist dabei, {{count, plural, one {eine Benachrichtigungsanfrage} other {# Benachrichtigungsanfragen}} zu genehmigen. Möchtest du wirklich fortfahren?", + "notification_requests.confirm_accept_multiple.title": "Benachrichtigungsanfragen genehmigen?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Anfrage ablehnen} other {Anfragen ablehnen}}", + "notification_requests.confirm_dismiss_multiple.message": "Du bist dabei, {count, plural, one {eine Benachrichtigungsanfrage} other {# Benachrichtigungsanfragen}} abzulehnen. Du wirst nicht mehr ohne Weiteres auf {count, plural, one {sie} other {sie}} zugreifen können. Möchtest du wirklich fortfahren?", + "notification_requests.confirm_dismiss_multiple.title": "Benachrichtigungsanfragen ablehnen?", "notification_requests.dismiss": "Ablehnen", - "notification_requests.dismiss_all": "Alle ablehnen", - "notification_requests.dismiss_multiple": "{count, plural, one {# Anfrage ablehnen} other {# Anfragen ablehnen}}", - "notification_requests.enter_selection_mode": "Auswählen", - "notification_requests.exit_selection_mode": "Abbrechen", + "notification_requests.dismiss_multiple": "{count, plural, one {# Anfrage ablehnen …} other {# Anfragen ablehnen …}}", + "notification_requests.edit_selection": "Bearbeiten", + "notification_requests.exit_selection": "Fertig", "notification_requests.explainer_for_limited_account": "Benachrichtigungen von diesem Konto wurden gefiltert, weil es durch Moderator*innen eingeschränkt wurde.", "notification_requests.explainer_for_limited_remote_account": "Benachrichtigungen von diesem Konto wurden gefiltert, weil deren Konto oder Server durch Moderator*innen eingeschränkt wurde.", "notification_requests.maximize": "Maximieren", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index c220f3a4e0..9603da4ffa 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -518,19 +518,7 @@ "notification.status": "Ο/Η {name} μόλις ανέρτησε κάτι", "notification.update": "ο/η {name} επεξεργάστηκε μια ανάρτηση", "notification_requests.accept": "Αποδοχή", - "notification_requests.accept_all": "Αποδοχή όλων", - "notification_requests.accept_multiple": "{count, plural, one {Αποδοχή # αιτήματος} other {Αποδοχή # αιτημάτων}}", - "notification_requests.confirm_accept_all.button": "Αποδοχή όλων", - "notification_requests.confirm_accept_all.message": "Πρόκειται να αποδεχτείς {count, plural, one {ένα αίτημα ειδοποίησης} other {# αιτήματα ειδοποίησης}}. Σίγουρα θες να συνεχίσεις;", - "notification_requests.confirm_accept_all.title": "Αποδοχή αιτήσεων ειδοποίησης;", - "notification_requests.confirm_dismiss_all.button": "Παράβλεψη όλων", - "notification_requests.confirm_dismiss_all.message": "Πρόκειται να απορρίψεις {count, plural, one {ένα αίτημα ειδοποίησης} other {# αιτήματα ειδοποίησης}}. Δεν θα μπορείς να έχεις πρόσβαση εύκολα {count, plural, one {σε αυτή} other {σε αυτές}} ξανά. Σίγουρα θες να συνεχίσεις;", - "notification_requests.confirm_dismiss_all.title": "Απόρριψη αιτημάτων ειδοποίησης;", "notification_requests.dismiss": "Απόρριψη", - "notification_requests.dismiss_all": "Παράβλεψη όλων", - "notification_requests.dismiss_multiple": "{count, plural, one {Παράβλεψη # αιτήματος} other {Παράβλεψη # αιτημάτων}}", - "notification_requests.enter_selection_mode": "Επιλογή", - "notification_requests.exit_selection_mode": "Άκυρο", "notification_requests.explainer_for_limited_account": "Οι ειδοποιήσεις από αυτόν τον λογαριασμό έχουν φιλτραριστεί επειδή ο λογαριασμός έχει περιοριστεί από έναν συντονιστή.", "notification_requests.explainer_for_limited_remote_account": "Οι ειδοποιήσεις από αυτόν τον λογαριασμό έχουν φιλτραριστεί επειδή ο λογαριασμός ή ο διακομιστής του έχει περιοριστεί από έναν συντονιστή.", "notification_requests.maximize": "Μεγιστοποίηση", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 8315333994..d6e3429c3b 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -517,19 +517,7 @@ "notification.status": "{name} just posted", "notification.update": "{name} edited a post", "notification_requests.accept": "Accept", - "notification_requests.accept_all": "Accept all", - "notification_requests.accept_multiple": "{count, plural, one {Accept 1 request} other {Accept # requests}}", - "notification_requests.confirm_accept_all.button": "Accept all", - "notification_requests.confirm_accept_all.message": "You are about to accept {count, plural, one {one notification request} other {# notification requests}}. Are you sure you want to proceed?", - "notification_requests.confirm_accept_all.title": "Accept notification requests?", - "notification_requests.confirm_dismiss_all.button": "Dismiss all", - "notification_requests.confirm_dismiss_all.message": "You are about to dismiss {count, plural, one {one notification request} other {# notification requests}}. You won't be able to easily access {count, plural, one {it} other {them}} again. Are you sure you want to proceed?", - "notification_requests.confirm_dismiss_all.title": "Dismiss notification requests?", "notification_requests.dismiss": "Dismiss", - "notification_requests.dismiss_all": "Dismiss all", - "notification_requests.dismiss_multiple": "{count, plural, one {Dismiss one request} other {Dismiss # requests}}", - "notification_requests.enter_selection_mode": "Select", - "notification_requests.exit_selection_mode": "Cancel", "notification_requests.explainer_for_limited_account": "Notifications from this account have been filtered because the account has been limited by a moderator.", "notification_requests.explainer_for_limited_remote_account": "Notifications from this account have been filtered because the account or its server has been limited by a moderator.", "notification_requests.minimize_banner": "Minimize filtered notifications banner", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 3b4cc5efff..5283927beb 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -30,7 +30,6 @@ "account.block_domain": "Block domain {domain}", "account.block_short": "Block", "account.blocked": "Blocked", - "account.browse_more_on_origin_server": "Browse more on the original profile", "account.cancel_follow_request": "Cancel follow", "account.copy": "Copy link to profile", "account.direct": "Privately mention @{name}", @@ -452,6 +451,14 @@ "hashtag.follow": "Follow hashtag", "hashtag.unfollow": "Unfollow hashtag", "hashtags.and_other": "…and {count, plural, other {# more}}", + "hints.profiles.followers_may_be_missing": "Followers for this profile may be missing.", + "hints.profiles.follows_may_be_missing": "Follows for this profile may be missing.", + "hints.profiles.posts_may_be_missing": "Some posts from this profile may be missing.", + "hints.profiles.see_more_followers": "See more followers on {domain}", + "hints.profiles.see_more_follows": "See more follows on {domain}", + "hints.profiles.see_more_posts": "See more posts on {domain}", + "hints.threads.replies_may_be_missing": "Replies from other servers may be missing.", + "hints.threads.see_more": "See more replies on {domain}", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", @@ -637,19 +644,17 @@ "notification.status_reference": "{name} quoted your post", "notification.update": "{name} edited a post", "notification_requests.accept": "Accept", - "notification_requests.accept_all": "Accept all", - "notification_requests.accept_multiple": "{count, plural, one {Accept # request} other {Accept # requests}}", - "notification_requests.confirm_accept_all.button": "Accept all", - "notification_requests.confirm_accept_all.message": "You are about to accept {count, plural, one {one notification request} other {# notification requests}}. Are you sure you want to proceed?", - "notification_requests.confirm_accept_all.title": "Accept notification requests?", - "notification_requests.confirm_dismiss_all.button": "Dismiss all", - "notification_requests.confirm_dismiss_all.message": "You are about to dismiss {count, plural, one {one notification request} other {# notification requests}}. You won't be able to easily access {count, plural, one {it} other {them}} again. Are you sure you want to proceed?", - "notification_requests.confirm_dismiss_all.title": "Dismiss notification requests?", + "notification_requests.accept_multiple": "{count, plural, one {Accept # request…} other {Accept # requests…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Accept request} other {Accept requests}}", + "notification_requests.confirm_accept_multiple.message": "You are about to accept {count, plural, one {one notification request} other {# notification requests}}. Are you sure you want to proceed?", + "notification_requests.confirm_accept_multiple.title": "Accept notification requests?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Dismiss request} other {Dismiss requests}}", + "notification_requests.confirm_dismiss_multiple.message": "You are about to dismiss {count, plural, one {one notification request} other {# notification requests}}. You won't be able to easily access {count, plural, one {it} other {them}} again. Are you sure you want to proceed?", + "notification_requests.confirm_dismiss_multiple.title": "Dismiss notification requests?", "notification_requests.dismiss": "Dismiss", - "notification_requests.dismiss_all": "Dismiss all", - "notification_requests.dismiss_multiple": "{count, plural, one {Dismiss # request} other {Dismiss # requests}}", - "notification_requests.enter_selection_mode": "Select", - "notification_requests.exit_selection_mode": "Cancel", + "notification_requests.dismiss_multiple": "{count, plural, one {Dismiss # request…} other {Dismiss # requests…}}", + "notification_requests.edit_selection": "Edit", + "notification_requests.exit_selection": "Done", "notification_requests.explainer_for_limited_account": "Notifications from this account have been filtered because the account has been limited by a moderator.", "notification_requests.explainer_for_limited_remote_account": "Notifications from this account have been filtered because the account or its server has been limited by a moderator.", "notification_requests.maximize": "Maximize", @@ -1001,11 +1006,6 @@ "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", "time_remaining.moments": "Moments remaining", "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left", - "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", - "timeline_hint.resources.followers": "Followers", - "timeline_hint.resources.follows": "Follows", - "timeline_hint.resources.replies": "Some replies", - "timeline_hint.resources.statuses": "Older posts", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 0722a08ea6..779bf6344d 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -518,19 +518,17 @@ "notification.status": "{name} acaba de enviar un mensaje", "notification.update": "{name} editó un mensaje", "notification_requests.accept": "Aceptar", - "notification_requests.accept_all": "Aceptar todas", - "notification_requests.accept_multiple": "{count, plural, one {Aceptar # solicitud} other {Aceptar # solicitudes}}", - "notification_requests.confirm_accept_all.button": "Aceptar todas", - "notification_requests.confirm_accept_all.message": "Estás a punto de aceptar {count, plural, one {una solicitud} other {# solicitudes}}. ¿Estás seguro de que querés continuar?", - "notification_requests.confirm_accept_all.title": "¿Aceptar solicitudes de notificación?", - "notification_requests.confirm_dismiss_all.button": "Descartar todas", - "notification_requests.confirm_dismiss_all.message": "Estás a punto de descartar {count, plural, one {una solicitud} other {# solicitudes}}. No vas a poder acceder fácilmente a {count, plural, one {ella} other {ellas}} de nuevo. ¿Estás seguro de que querés continuar?", - "notification_requests.confirm_dismiss_all.title": "¿Descartar solicitudes de notificación?", + "notification_requests.accept_multiple": "{count, plural, one {Aceptar # solicitud…} other {Aceptar # solicitudes…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Aceptar solicitud} other {Aceptar solicitudes}}", + "notification_requests.confirm_accept_multiple.message": "Estás a punto de aceptar {count, plural, one {una solicitud} other {# solicitudes}}. ¿Estás seguro de que querés continuar?", + "notification_requests.confirm_accept_multiple.title": "¿Aceptar solicitudes de notificación?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Descartar solicitud} other {Descartar solicitudes}}", + "notification_requests.confirm_dismiss_multiple.message": "Estás a punto de descartar {count, plural, one {una solicitud} other {# solicitudes}}. No vas a poder acceder fácilmente a {count, plural, one {ella} other {ellas}} de nuevo. ¿Estás seguro de que querés continuar?", + "notification_requests.confirm_dismiss_multiple.title": "¿Descartar solicitudes de notificación?", "notification_requests.dismiss": "Descartar", - "notification_requests.dismiss_all": "Descartar todas", - "notification_requests.dismiss_multiple": "{count, plural, one {Descartar # solicitud} other {Descartar # solicitudes}}", - "notification_requests.enter_selection_mode": "Seleccionar", - "notification_requests.exit_selection_mode": "Cancelar", + "notification_requests.dismiss_multiple": "{count, plural, one {Descartar # solicitud…} other {Descartar # solicitudes…}}", + "notification_requests.edit_selection": "Editar", + "notification_requests.exit_selection": "Listo", "notification_requests.explainer_for_limited_account": "Las notificaciones de esta cuenta fueron filtradas porque la misma fue limitada por un moderador.", "notification_requests.explainer_for_limited_remote_account": "Las notificaciones de esta cuenta fueron filtradas porque la cuenta o su servidor fueron limitados por un moderador.", "notification_requests.maximize": "Maximizar", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 0ff6c25328..da1fc39fa4 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -518,19 +518,9 @@ "notification.status": "{name} acaba de publicar", "notification.update": "{name} editó una publicación", "notification_requests.accept": "Aceptar", - "notification_requests.accept_all": "Aceptar todas", - "notification_requests.accept_multiple": "{count, plural, one {Aceptar # solicitud} other {Aceptar # solicitudes}}", - "notification_requests.confirm_accept_all.button": "Aceptar todas", - "notification_requests.confirm_accept_all.message": "Vas a aceptar {count, plural, one {una solicitud} other {# solicitudes}}. ¿Estás seguro de que quieres continuar?", - "notification_requests.confirm_accept_all.title": "¿Aceptar todas las solicitudes?", - "notification_requests.confirm_dismiss_all.button": "Descartar todas", - "notification_requests.confirm_dismiss_all.message": "Vas a descartar {count, plural, one {una solicitud} other {# solicitudes}}. No vas a poder acceder fácilmente a {count, plural, one {ella} other {ellas}} de nuevo. ¿Estás seguro de que quieres continuar?", - "notification_requests.confirm_dismiss_all.title": "¿Descartar todas las solicitudes?", + "notification_requests.accept_multiple": "{count, plural, one {Aceptar # solicitud…} other {Aceptar # solicitudes…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Aceptar solicitud} other {Aceptar solicitudes}}", "notification_requests.dismiss": "Descartar", - "notification_requests.dismiss_all": "Descartar todas", - "notification_requests.dismiss_multiple": "{count, plural, one {Descartar # solicitud} other {Descartar # solicitudes}}", - "notification_requests.enter_selection_mode": "Seleccionar", - "notification_requests.exit_selection_mode": "Cancelar", "notification_requests.explainer_for_limited_account": "Las notificaciones de esta cuenta han sido filtradas porque la cuenta ha sido limitada por un moderador.", "notification_requests.explainer_for_limited_remote_account": "Las notificaciones de esta cuenta han sido filtradas porque la cuenta o su servidor ha sido limitada por un moderador.", "notification_requests.maximize": "Maximizar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index b8f5de997a..e77bf12693 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -518,19 +518,9 @@ "notification.status": "{name} acaba de publicar", "notification.update": "{name} editó una publicación", "notification_requests.accept": "Aceptar", - "notification_requests.accept_all": "Aceptar todas", - "notification_requests.accept_multiple": "{count, plural, one {Aceptar # solicitud} other {Aceptar # solicitudes}}", - "notification_requests.confirm_accept_all.button": "Aceptar todas", - "notification_requests.confirm_accept_all.message": "Vas a aceptar {count, plural, one {una solicitud} other {# solicitudes}}. ¿Estás seguro de que quieres continuar?", - "notification_requests.confirm_accept_all.title": "¿Aceptar todas las solicitudes?", - "notification_requests.confirm_dismiss_all.button": "Descartar todas", - "notification_requests.confirm_dismiss_all.message": "Vas a descartar {count, plural, one {una solicitud} other {# solicitudes}}. No vas a poder acceder fácilmente a {count, plural, one {ella} other {ellas}} de nuevo. ¿Estás seguro de que quieres continuar?", - "notification_requests.confirm_dismiss_all.title": "¿Descartar todas las solicitudes?", + "notification_requests.accept_multiple": "{count, plural, one {Aceptar # solicitud…} other {Aceptar # solicitudes…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Aceptar solicitud} other {Aceptar solicitudes}}", "notification_requests.dismiss": "Descartar", - "notification_requests.dismiss_all": "Descartar todas", - "notification_requests.dismiss_multiple": "{count, plural, one {Descartar # solicitud} other {Descartar # solicitudes}}", - "notification_requests.enter_selection_mode": "Seleccionar", - "notification_requests.exit_selection_mode": "Cancelar", "notification_requests.explainer_for_limited_account": "Las notificaciones de esta cuenta han sido filtradas porque la cuenta ha sido limitada por un moderador.", "notification_requests.explainer_for_limited_remote_account": "Las notificaciones de esta cuenta han sido filtradas porque la cuenta o su servidor ha sido limitada por un moderador.", "notification_requests.maximize": "Maximizar", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index b2a8fe0da3..85855d9165 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -502,15 +502,7 @@ "notification.status": "{name} erabiltzaileak bidalketa egin berri du", "notification.update": "{name} erabiltzaileak bidalketa bat editatu du", "notification_requests.accept": "Onartu", - "notification_requests.accept_all": "Onartu dena", - "notification_requests.confirm_accept_all.button": "Onartu dena", - "notification_requests.confirm_accept_all.title": "Onartu jakinarazpen-eskaerak?", - "notification_requests.confirm_dismiss_all.button": "Baztertu guztiak", - "notification_requests.confirm_dismiss_all.title": "Baztertu jakinarazpen-eskaerak?", "notification_requests.dismiss": "Baztertu", - "notification_requests.dismiss_all": "Baztertu guztiak", - "notification_requests.enter_selection_mode": "Hautatu", - "notification_requests.exit_selection_mode": "Utzi", "notification_requests.maximize": "Maximizatu", "notification_requests.notifications_from": "{name} erabiltzailearen jakinarazpenak", "notification_requests.title": "Iragazitako jakinarazpenak", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 9b48f1bf37..2cae2d6def 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -477,7 +477,7 @@ "navigation_bar.logout": "Kirjaudu ulos", "navigation_bar.mutes": "Mykistetyt käyttäjät", "navigation_bar.opened_in_classic_interface": "Julkaisut, profiilit ja tietyt muut sivut avautuvat oletuksena perinteiseen selainkäyttöliittymään.", - "navigation_bar.personal": "Henkilökohtainen", + "navigation_bar.personal": "Henkilökohtaiset", "navigation_bar.pins": "Kiinnitetyt julkaisut", "navigation_bar.preferences": "Asetukset", "navigation_bar.public_timeline": "Yleinen aikajana", @@ -518,19 +518,17 @@ "notification.status": "{name} julkaisi juuri", "notification.update": "{name} muokkasi julkaisua", "notification_requests.accept": "Hyväksy", - "notification_requests.accept_all": "Hyväksy kaikki", - "notification_requests.accept_multiple": "{count, plural, one {Hyväksy # pyyntö} other {Hyväksy # pyyntöä}}", - "notification_requests.confirm_accept_all.button": "Hyväksy kaikki", - "notification_requests.confirm_accept_all.message": "Olet aikeissa hyväksyä {count, plural, one {ilmoituspyynnön} other {# ilmoituspyyntöä}}. Haluatko varmasti jatkaa?", - "notification_requests.confirm_accept_all.title": "Hyväksytäänkö ilmoituspyynnöt?", - "notification_requests.confirm_dismiss_all.button": "Hylkää kaikki", - "notification_requests.confirm_dismiss_all.message": "Olet aikeissa hylätä {count, plural, one {ilmoituspyynnön} other {# ilmoituspyyntöä}}. Et saa {count, plural, one {sitä} other {niitä}} enää helposti takaisin. Haluatko varmasti jatkaa?", - "notification_requests.confirm_dismiss_all.title": "Hylätäänkö ilmoituspyynnöt?", + "notification_requests.accept_multiple": "{count, plural, one {Hyväksy # pyyntö…} other {Hyväksy # pyyntöä…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Hyväksy pyyntö} other {Hyväksy pyynnöt}}", + "notification_requests.confirm_accept_multiple.message": "Olet aikeissa hyväksyä {count, plural, one {ilmoituspyynnön} other {# ilmoituspyyntöä}}. Haluatko varmasti jatkaa?", + "notification_requests.confirm_accept_multiple.title": "Hyväksytäänkö ilmoituspyynnöt?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Hylkää pyyntö} other {Hylkää pyynnöt}}", + "notification_requests.confirm_dismiss_multiple.message": "Olet aikeissa hylätä {count, plural, one {ilmoituspyynnön} other {# ilmoituspyyntöä}}. Et saa {count, plural, one {sitä} other {niitä}} enää helposti takaisin. Haluatko varmasti jatkaa?", + "notification_requests.confirm_dismiss_multiple.title": "Hylätäänkö ilmoituspyynnöt?", "notification_requests.dismiss": "Hylkää", - "notification_requests.dismiss_all": "Hylkää kaikki", - "notification_requests.dismiss_multiple": "{count, plural, one {Hylkää # pyyntö} other {Hylkää # pyyntöä}}", - "notification_requests.enter_selection_mode": "Valitse", - "notification_requests.exit_selection_mode": "Peruuta", + "notification_requests.dismiss_multiple": "{count, plural, one {Hylkää # pyyntö…} other {Hylkää # pyyntöä…}}", + "notification_requests.edit_selection": "Muokkaa", + "notification_requests.exit_selection": "Valmis", "notification_requests.explainer_for_limited_account": "Tähän tiliin liittyvät ilmoitukset on suodatettu, koska moderaattori on rajoittanut tiliä.", "notification_requests.explainer_for_limited_remote_account": "Tähän tiliin liittyvät ilmoitukset on suodatettu, koska moderaattori on rajoittanut tiliä tai sen palvelinta.", "notification_requests.maximize": "Suurenna", @@ -589,7 +587,7 @@ "notifications.policy.filter_not_following_hint": "Kunnes hyväksyt heidät manuaalisesti", "notifications.policy.filter_not_following_title": "Käyttäjät, joita et seuraa", "notifications.policy.filter_private_mentions_hint": "Suodatetaan, ellei se ole vastaus omaan mainintaasi tai ellet seuraa lähettäjää", - "notifications.policy.filter_private_mentions_title": "Ei-toivotut yksityismaininnat", + "notifications.policy.filter_private_mentions_title": "Pyytämättömät yksityismaininnat", "notifications.policy.title": "Hallitse ilmoituksia kohteesta…", "notifications_permission_banner.enable": "Ota työpöytäilmoitukset käyttöön", "notifications_permission_banner.how_to_control": "Saadaksesi ilmoituksia, kun Mastodon ei ole auki, ota työpöytäilmoitukset käyttöön. Voit hallita tarkasti, mistä saat työpöytäilmoituksia kun ilmoitukset on otettu käyttöön yllä olevan {icon}-painikkeen kautta.", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index 36198e9e59..650dd9b0a2 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -518,19 +518,17 @@ "notification.status": "{name} hevur júst postað", "notification.update": "{name} rættaði ein post", "notification_requests.accept": "Góðtak", - "notification_requests.accept_all": "Góðtak alt", - "notification_requests.accept_multiple": "{count, plural, one {Góðtak # umbøn} other {Góðtak # umbønir}}", - "notification_requests.confirm_accept_all.button": "Góðtak alt", - "notification_requests.confirm_accept_all.message": "Tú er í ferð við at góðtaka {count, plural, one {eina fráboðanarumbøn} other {# fráboðanarumbønir}}. Er tú vís/ur í at tú vilt halda fram?", - "notification_requests.confirm_accept_all.title": "Góðtekur tú umbøn um fráboðan?", - "notification_requests.confirm_dismiss_all.button": "Vraka alt", - "notification_requests.confirm_dismiss_all.message": "Tú ert í ferð við at kveistra burtur {count, plural, one {eina fráboðanarumbøn} other {# fráboðanarumbønir}}. Tað verður ikki lætt hjá tær at fáa atgongd til {count, plural, one {hana} other {tær}} aftur. Er tú vís/ur í, at tú vil halda fram?", - "notification_requests.confirm_dismiss_all.title": "Kveistra burtur fráboðanarumbønir?", + "notification_requests.accept_multiple": "{count, plural, one {Góðtak # umbøn…} other {Góðtak # umbønir…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Góðtak umbøn} other {Góðtak umbønir}}", + "notification_requests.confirm_accept_multiple.message": "Tú er í ferð við at góðtaka {count, plural, one {eina fráboðanarumbøn} other {# fráboðanarumbønir}}. Er tú vís/ur í, at tú vil halda fram?", + "notification_requests.confirm_accept_multiple.title": "Góðtak fráboðanarumbønir?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Avvís umbøn} other {Avvís umbønir}}", + "notification_requests.confirm_dismiss_multiple.message": "Tú er í ferð við at avvísa {count, plural, one {eina fráboðanarumbøn} other {# fráboðanarumbønir}}. Tað verður ikki lætt hjá tær at fáa fatur á {count, plural, one {henni} other {teimum}} aftur. Er tú vís/ur í at tú vil halda fram?", + "notification_requests.confirm_dismiss_multiple.title": "Avvís fráboðanarumbønir?", "notification_requests.dismiss": "Avvís", - "notification_requests.dismiss_all": "Vraka alt", - "notification_requests.dismiss_multiple": "{count, plural, one {Kveistra burtur # umbøn} other {Kveistra burtur # umbønir}}", - "notification_requests.enter_selection_mode": "Vel", - "notification_requests.exit_selection_mode": "Strika", + "notification_requests.dismiss_multiple": "{count, plural, one {Avvís # umbøn…} other {Avvís # umbønir…}}", + "notification_requests.edit_selection": "Rætta", + "notification_requests.exit_selection": "Liðugt", "notification_requests.explainer_for_limited_account": "Fráboðanir frá hesi kontuni eru filtreraðar burtur, tí kontan er avmarkað av einum umsjónarfólki.", "notification_requests.explainer_for_limited_remote_account": "Fráboðanir frá hesi kontuni eru filtreraðar burtur, tí kontan ella ambætarin hjá kontuni eru avmarkaði av einum umsjónarfólki.", "notification_requests.maximize": "Mesta", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index 9cf1d8a69b..e57bc694af 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -490,9 +490,6 @@ "notification.status": "{name} vient de publier", "notification.update": "{name} a modifié une publication", "notification_requests.accept": "Accepter", - "notification_requests.accept_all": "Tout accepter", - "notification_requests.confirm_accept_all.button": "Tout accepter", - "notification_requests.confirm_dismiss_all.button": "Tout rejeter", "notification_requests.dismiss": "Rejeter", "notification_requests.notifications_from": "Notifications de {name}", "notification_requests.title": "Notifications filtrées", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 6546cbb1e9..dd713e50ea 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -490,9 +490,6 @@ "notification.status": "{name} vient de publier", "notification.update": "{name} a modifié un message", "notification_requests.accept": "Accepter", - "notification_requests.accept_all": "Tout accepter", - "notification_requests.confirm_accept_all.button": "Tout accepter", - "notification_requests.confirm_dismiss_all.button": "Tout rejeter", "notification_requests.dismiss": "Rejeter", "notification_requests.notifications_from": "Notifications de {name}", "notification_requests.title": "Notifications filtrées", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index db36db17aa..945b2582ac 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -518,19 +518,7 @@ "notification.status": "Phostáil {name} díreach", "notification.update": "Chuir {name} postáil in eagar", "notification_requests.accept": "Glac", - "notification_requests.accept_all": "Glac le gach", - "notification_requests.accept_multiple": "{count, plural, one {Glac le # iarratas} two {Glac le # iarratas} few {Glac le # iarratas} many {Glac le # iarratas} other {Glac le # iarratais}}", - "notification_requests.confirm_accept_all.button": "Glac le gach", - "notification_requests.confirm_accept_all.message": "Tá tú ar tí glacadh le {count, plural, one {iarratas fógra amháin} two {# iarratas fógra} few {# iarratas fógra} many {# iarratas fógra} other {# iarratais fógra}}. An bhfuil tú cinnte gur mian leat leanúint ar aghaidh?", - "notification_requests.confirm_accept_all.title": "Glac le hiarratais ar fhógra?", - "notification_requests.confirm_dismiss_all.button": "Ruaig gach", - "notification_requests.confirm_dismiss_all.message": "Tá tú ar tí neamhaird a dhéanamh ar {count, plural, one {iarratas fógra amháin} two {# iarratas fógra} few {# iarratas fógra} many {# iarratas fógra} other {# iarratais fógra}}. Ní bheidh tú in ann {count, plural, one {é} two {iad} few {iad} many {iad} other {iad}} a rochtain go héasca arís. An bhfuil tú cinnte gur mian leat leanúint ar aghaidh?", - "notification_requests.confirm_dismiss_all.title": "An bhfuil fonn ort iarratais ar fhógra a dhíbhe?", "notification_requests.dismiss": "Díbhe", - "notification_requests.dismiss_all": "Ruaig gach", - "notification_requests.dismiss_multiple": "{count, plural, one {Neamhaird a dhéanamh ar # iarratas} two {Neamhaird a dhéanamh ar # iarratas} few {Neamhaird a dhéanamh ar # iarratas} many {Neamhaird a dhéanamh ar # iarratas} other {Neamhaird a dhéanamh ar # iarratais}}", - "notification_requests.enter_selection_mode": "Roghnaigh", - "notification_requests.exit_selection_mode": "Cealaigh", "notification_requests.explainer_for_limited_account": "Scagadh fógraí ón gcuntas seo toisc go bhfuil an cuntas teoranta ag modhnóir.", "notification_requests.explainer_for_limited_remote_account": "Scagadh fógraí ón gcuntas seo toisc go bhfuil an cuntas nó a fhreastalaí teoranta ag modhnóir.", "notification_requests.maximize": "Uasmhéadaigh", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 6cbf1e7a03..8ab4cafd14 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -518,19 +518,7 @@ "notification.status": "Phostaich {name} rud", "notification.update": "Dheasaich {name} post", "notification_requests.accept": "Gabh ris", - "notification_requests.accept_all": "Gabh ris na h-uile", - "notification_requests.accept_multiple": "{count, plural, one {Gabh ri # iarrtas} two {Gabh ri # iarrtas} few {Gabh ri # iarrtasan} other {Gabh ri # iarrtas}}", - "notification_requests.confirm_accept_all.button": "Gabh ris na h-uile", - "notification_requests.confirm_accept_all.message": "Tha thu gu bhith gabhail ri {count, plural, one {# iarrtas bratha} two {# iarrtas bratha} few {# iarrtasan bratha} other {# iarrtas bratha}} a leigeil seachad. A bheil thu cinnteach gu bheil thu airson leantainn air adhart?", - "notification_requests.confirm_accept_all.title": "A bheil thu airson gabhail ri iarrtasan bratha?", - "notification_requests.confirm_dismiss_all.button": "Leig seachad na h-uile", - "notification_requests.confirm_dismiss_all.message": "Tha thu gu bhith {count, plural, one {# iarrtas bratha} two {# iarrtas bratha} few {# iarrtasan bratha} other {# iarrtas bratha}} a leigeil seachad. Chan fhaigh thu grèim {count, plural, one {air} two {orra} few {orra} other {orra}} a-rithist gun duilgheadas. A bheil thu cinnteach gu bheil thu airson leantainn air adhart?", - "notification_requests.confirm_dismiss_all.title": "A bheil thu airson iarrtasan bratha a leigeil seachad?", "notification_requests.dismiss": "Leig seachad", - "notification_requests.dismiss_all": "Leig seachad na h-uile", - "notification_requests.dismiss_multiple": "{count, plural, one {Leig seachad # iarrtas} two {Leig seachad # iarrtas} few {Leig seachad # iarrtasan} other {Leig seachad # iarrtas}}", - "notification_requests.enter_selection_mode": "Tagh", - "notification_requests.exit_selection_mode": "Sguir dheth", "notification_requests.explainer_for_limited_account": "Chaidh na brathan on chunntas seo a chriathradh on a chaidh an cunntas a chuingeachadh le maor.", "notification_requests.explainer_for_limited_remote_account": "Chaidh na brathan on chunntas seo a chriathradh on a chaidh an cunntas no am frithealaiche aige a chuingeachadh le maor.", "notification_requests.maximize": "Làn-mheudaich", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index c344c19b7e..a87f316d70 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -518,19 +518,17 @@ "notification.status": "{name} publicou", "notification.update": "{name} editou unha publicación", "notification_requests.accept": "Aceptar", - "notification_requests.accept_all": "Aceptar todo", - "notification_requests.accept_multiple": "{count, plural, one {Aceptar # solicitude} other {Acceptar # solicitudes}}", - "notification_requests.confirm_accept_all.button": "Aceptar todo", - "notification_requests.confirm_accept_all.message": "Vas aceptar {count, plural, one {unha solicitude de notificación} other {# solicitudes de notificación}}. Tes certeza de querer aceptalas?", - "notification_requests.confirm_accept_all.title": "Aceptar solicitudes de notificación?", - "notification_requests.confirm_dismiss_all.button": "Rexeitar todo", - "notification_requests.confirm_dismiss_all.message": "Vas rexeitar {count, plural, one {unha solicitude de notificación} other {# solicitudes de notificacións}}. Será complicado volver a {count, plural, one {vela} other {velas}}. Tes certeza de rexeitar?", - "notification_requests.confirm_dismiss_all.title": "Rexeitar solicitudes de notificacións?", + "notification_requests.accept_multiple": "{count, plural, one {Aceptar # solicitude…} other {Aceptar # solicitudes…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Aceptar solicitude} other {Aceptar solicitudes}}", + "notification_requests.confirm_accept_multiple.message": "Vas aceptar {count, plural, one {unha solicitude de notificación} other {# solicitudes de notificación}}. Tes certeza de querer aceptar?", + "notification_requests.confirm_accept_multiple.title": "Aceptar solicitudes de notificación?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Rexeitar solicitude} other {Rexeitar solicitudes}}", + "notification_requests.confirm_dismiss_multiple.message": "Vas rexeitar {count, plural, one {unha solicitude de notificación} other {# solicitudes de notificación}}. Non poderás volver acceder fácilmente a {count, plural, one {ela} other {elas}}. Tes certeza de querer rexeitar?", + "notification_requests.confirm_dismiss_multiple.title": "Rexeitar solicitudes de notificación?", "notification_requests.dismiss": "Desbotar", - "notification_requests.dismiss_all": "Rexeitar todo", - "notification_requests.dismiss_multiple": "{count, plural, one {Rexeitar # solicitude} other {Rexeitar # solicitudes}}", - "notification_requests.enter_selection_mode": "Escoller", - "notification_requests.exit_selection_mode": "Desbotar", + "notification_requests.dismiss_multiple": "{count, plural, one {Rexeitar # solicitude…} other {Rexeitar # solicitudes…}}", + "notification_requests.edit_selection": "Editar", + "notification_requests.exit_selection": "Feito", "notification_requests.explainer_for_limited_account": "Filtráronse as notificacións desta conta porque a conta ten limitacións impostas pola moderación.", "notification_requests.explainer_for_limited_remote_account": "Filtráronse as notificacións desta conta porque a conta ou o seu servidor teñen limitacións impostas pola moderación.", "notification_requests.maximize": "Maximizar", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index e9cbfcbcc3..72f0612bc7 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -518,19 +518,7 @@ "notification.status": "{name} הרגע פרסמו", "notification.update": "{name} ערכו הודעה", "notification_requests.accept": "לקבל", - "notification_requests.accept_all": "לקבל את כל הבקשות", - "notification_requests.accept_multiple": "{count, plural,one {לאשר קבלת בקשה}other {לאשר קבלת # בקשות}}", - "notification_requests.confirm_accept_all.button": "לקבל את כל הבקשות", - "notification_requests.confirm_accept_all.message": "אתם עומדים לאשר {count, plural,one {בקשת התראה אחת}other {# בקשות התראה}}. להמשיך?", - "notification_requests.confirm_accept_all.title": "לקבל בקשות התראה?", - "notification_requests.confirm_dismiss_all.button": "דחיית כל הבקשות", - "notification_requests.confirm_dismiss_all.message": "אתם עומדים לדחות {count, plural,one {בקשת התראה}other {# בקשות התראה}}. לא תוכלו למצוא {count, plural,one {אותה}other {אותן}} בקלות אחר כך. להמשיך?", - "notification_requests.confirm_dismiss_all.title": "לדחות בקשות התראה?", "notification_requests.dismiss": "לבטל", - "notification_requests.dismiss_all": "דחיית כל הבקשות", - "notification_requests.dismiss_multiple": "{count, plural,one {לדחות בקשה}other {לדחות # בקשות}} לקבלת התראה", - "notification_requests.enter_selection_mode": "בחירה", - "notification_requests.exit_selection_mode": "ביטול", "notification_requests.explainer_for_limited_account": "התראות על פעולות חשבון זה סוננו כי חשבון זה הוגבל על ידי מנהלי הדיונים.", "notification_requests.explainer_for_limited_remote_account": "התראות על פעולות חשבון זה סוננו כי חשבון זה או השרת שלו הוגבלו על ידי מנהלי הדיונים.", "notification_requests.maximize": "הגדלה למקסימום", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index eb618c4666..459e3f16a1 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -518,19 +518,17 @@ "notification.status": "{name} bejegyzést tett közzé", "notification.update": "{name} szerkesztett egy bejegyzést", "notification_requests.accept": "Elfogadás", - "notification_requests.accept_all": "Összes elfogadása", - "notification_requests.accept_multiple": "{count, plural, one {# kérés elfogadása} other {# kérés elfogadása}}", - "notification_requests.confirm_accept_all.button": "Összes elfogadása", - "notification_requests.confirm_accept_all.message": "Elfogadni készülsz {count, plural, one {egy értesítési kérést} other {# értesítési kérést}}. Biztosan folytatod?", - "notification_requests.confirm_accept_all.title": "Értesítési kérés elfogadása?", - "notification_requests.confirm_dismiss_all.button": "Összes elutasítása", - "notification_requests.confirm_dismiss_all.message": "{count, plural, one {Egy értesítési kérés} other {# értesítési kérés}} elvetésére készülsz. Többé nem fogsz {count, plural, one {hozzáférni} other {hozzájuk férni}}. Biztosan folytatod?", - "notification_requests.confirm_dismiss_all.title": "Értesítési kérések elvetése?", + "notification_requests.accept_multiple": "{count, plural, one {# kérés elfogadása…} other {# kérés elfogadása…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Kérés elfogadása} other {Kérések elfogadása}}", + "notification_requests.confirm_accept_multiple.message": "Elfogadni készülsz {count, plural, one {egy értesítési kérést} other {# értesítési kérést}}. Biztosan folytatod?", + "notification_requests.confirm_accept_multiple.title": "Értesítési kérések elfogadása?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Kérés elvetése} other {Kérések elvetése}}", + "notification_requests.confirm_dismiss_multiple.message": "{count, plural, one {Egy értesítési kérés} other {# értesítési kérés}} elvetésére készülsz. Többé nem fogsz {count, plural, one {hozzáférni} other {hozzájuk férni}}. Biztosan folytatod?", + "notification_requests.confirm_dismiss_multiple.title": "Értesítési kérések elvetése?", "notification_requests.dismiss": "Elvetés", - "notification_requests.dismiss_all": "Összes elutasítása", - "notification_requests.dismiss_multiple": "{count, plural, one {# kérés elvetése} other {# kérés elvetése}}", - "notification_requests.enter_selection_mode": "Kiválasztás", - "notification_requests.exit_selection_mode": "Mégse", + "notification_requests.dismiss_multiple": "{count, plural, one {# kérés elvetése…} other {# kérés elvetése…}}", + "notification_requests.edit_selection": "Szerkesztés", + "notification_requests.exit_selection": "Kész", "notification_requests.explainer_for_limited_account": "Az ettől a fióktól származó értesítéseket kiszűrték, mert a fiókot egy moderátor korlátozta.", "notification_requests.explainer_for_limited_remote_account": "Az ettől a fióktól származó értesítéseket kiszűrték, mert a fiókot vagy annak kiszolgálóját egy moderátor korlátozta.", "notification_requests.maximize": "Maximalizálás", diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json index 0f4731ebaa..1dd380164d 100644 --- a/app/javascript/mastodon/locales/ig.json +++ b/app/javascript/mastodon/locales/ig.json @@ -113,7 +113,6 @@ "navigation_bar.lists": "Ndepụta", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.reblog": "{name} boosted your status", - "notification_requests.enter_selection_mode": "Họrọ", "onboarding.actions.go_to_explore": "See what's trending", "onboarding.actions.go_to_home": "Go to your home feed", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index d5c791e1c5..d2edefdecb 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -518,19 +518,17 @@ "notification.status": "{name} sendi inn rétt í þessu", "notification.update": "{name} breytti færslu", "notification_requests.accept": "Samþykkja", - "notification_requests.accept_all": "Samþykkja alla", - "notification_requests.accept_multiple": "{count, plural, one {Samþykkja # beiðni} other {Samþykkja # beiðnir}}", - "notification_requests.confirm_accept_all.button": "Samþykkja alla", - "notification_requests.confirm_accept_all.message": "Þú ert að fara að samþykkja {count, plural, one {eina beiðni um tilkynningar} other {# beiðnir um tilkynningar}}. Ertu viss um að þú viljir halda áfram?", - "notification_requests.confirm_accept_all.title": "Samþykkja beiðnir um tilkynningar?", - "notification_requests.confirm_dismiss_all.button": "Hunsa allt", - "notification_requests.confirm_dismiss_all.message": "Þú ert að fara að hunsa {count, plural, one {eina beiðni um tilkynningar} other {# beiðnir um tilkynningar}}. Þú munt ekki eiga auðvelt með að skoða {count, plural, one {hana} other {þær}} aftur síðar. Ertu viss um að þú viljir halda áfram?", - "notification_requests.confirm_dismiss_all.title": "Hunsa beiðnir um tilkynningar?", + "notification_requests.accept_multiple": "{count, plural, one {Samþykkja # beiðni…} other {Samþykkja # beiðnir…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Samþykkja beiðni} other {Samþykkja beiðnir}}", + "notification_requests.confirm_accept_multiple.message": "Þú ert að fara að samþykkja {count, plural, one {eina beiðni um tilkynningar} other {# beiðnir um tilkynningar}}. Ertu viss um að þú viljir halda áfram?", + "notification_requests.confirm_accept_multiple.title": "Samþykkja beiðnir um tilkynningar?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Afgreiða beiðni} other {Afgreiða beiðnir}}", + "notification_requests.confirm_dismiss_multiple.message": "Þú ert að fara að hunsa {count, plural, one {eina beiðni um tilkynningar} other {# beiðnir um tilkynningar}}. Þú munt ekki eiga auðvelt með að skoða {count, plural, one {hana} other {þær}} aftur síðar. Ertu viss um að þú viljir halda áfram?", + "notification_requests.confirm_dismiss_multiple.title": "Hunsa beiðnir um tilkynningar?", "notification_requests.dismiss": "Afgreiða", - "notification_requests.dismiss_all": "Hunsa allt", - "notification_requests.dismiss_multiple": "{count, plural, one {Afgreiða # beiðni} other {Afgreiða # beiðnir}}", - "notification_requests.enter_selection_mode": "Velja", - "notification_requests.exit_selection_mode": "Hætta við", + "notification_requests.dismiss_multiple": "{count, plural, one {Afgreiða # beiðni…} other {Afgreiða # beiðnir…}}", + "notification_requests.edit_selection": "Breyta", + "notification_requests.exit_selection": "Lokið", "notification_requests.explainer_for_limited_account": "Tilkynningar frá þessum notanda hafa verið síaðar þar sem aðgangur hans hefur verið takmarkaður af umsjónarmanni.", "notification_requests.explainer_for_limited_remote_account": "Tilkynningar frá þessum notanda hafa verið síaðar þar sem aðgangurinn eða netþjónn hans hefur verið takmarkaður af umsjónarmanni.", "notification_requests.maximize": "Hámarka", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 20f5f0aa08..99fc7058be 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -518,19 +518,7 @@ "notification.status": "{name} ha appena pubblicato un post", "notification.update": "{name} ha modificato un post", "notification_requests.accept": "Accetta", - "notification_requests.accept_all": "Accetta tutte", - "notification_requests.accept_multiple": "{count, plural,one {Accetta # richiesta} other {Accetta # richieste}}", - "notification_requests.confirm_accept_all.button": "Accetta tutte", - "notification_requests.confirm_accept_all.message": "Stai per accettare {count, plural, one {una richiesta di notifica} other {# richieste di notifica}}. Si è sicuri di voler procedere?", - "notification_requests.confirm_accept_all.title": "Accettare le richieste di notifica?", - "notification_requests.confirm_dismiss_all.button": "Ignora tutte", - "notification_requests.confirm_dismiss_all.message": "Stai per ignorare {count, plural, one {una richiesta di notifica} other {# richieste di notifica}}. Non sarai più in grado di accedere facilmente {count, plural, one {ad essa} other {ad esse}} nuovamente. Si è sicuri di voler procedere?", - "notification_requests.confirm_dismiss_all.title": "Ignorare le richieste di notifica?", "notification_requests.dismiss": "Ignora", - "notification_requests.dismiss_all": "Ignora tutte", - "notification_requests.dismiss_multiple": "{count, plural, one {Ignora # richiesta} other {Ignora # richieste}}", - "notification_requests.enter_selection_mode": "Seleziona", - "notification_requests.exit_selection_mode": "Annulla", "notification_requests.explainer_for_limited_account": "Le notifiche provenienti da questo account sono state filtrate perché l'account è stato limitato da un moderatore.", "notification_requests.explainer_for_limited_remote_account": "Le notifiche provenienti da questo account sono state filtrate perché l'account o il suo server sono stati limitati da un moderatore.", "notification_requests.maximize": "Ingrandisci", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 4d6650f481..22f0c8b70d 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -19,6 +19,7 @@ "about.powered_by": "{mastodon}による分散型ソーシャルメディア", "about.public_visibility": "公開投稿を許可", "about.rules": "サーバーのルール", + "account.account_note_header": "自分用メモ", "account.add_or_remove_from_antenna": "アンテナから追加または外す", "account.add_or_remove_from_exclude_antenna": "アンテナ除外条件から追加または外す", "account.add_or_remove_from_circle": "サークルから追加または外す", @@ -644,14 +645,23 @@ "notifications.permission_denied": "ブラウザの通知が拒否されているためデスクトップ通知は利用できません", "notifications.permission_denied_alert": "ブラウザの通知が拒否されているためデスクトップ通知を有効にできません", "notifications.permission_required": "必要な権限が付与されていないため、デスクトップ通知は利用できません。", - "notifications.policy.filter_new_accounts.hint": "作成から{days, plural, other {#日}}以内のアカウントからの通知がブロックされます", - "notifications.policy.filter_new_accounts_title": "新しいアカウントからの通知をブロックする", - "notifications.policy.filter_not_followers_hint": "フォローされていても、フォローから{days, plural, 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.accept": "受入れ", + "notifications.policy.accept_hint": "通知を表示します", + "notifications.policy.drop": "無視", + "notifications.policy.drop_hint": "通知を破棄します。再表示はできません。", + "notifications.policy.filter": "保留", + "notifications.policy.filter_hint": "「保留中の通知」に止め置きます", + "notifications.policy.filter_limited_accounts_hint": "モデレーターにより制限されたアカウントから送られる通知が対象です", + "notifications.policy.filter_limited_accounts_title": "モデレーションされたアカウントからの通知", + "notifications.policy.filter_new_accounts.hint": "作成から{days, plural, other {#日}}以内のアカウントが対象です", + "notifications.policy.filter_new_accounts_title": "新しいアカウントからの通知", + "notifications.policy.filter_not_followers_hint": "フォローされていても、フォローから{days, plural, 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": "Mastodonを閉じている間でも通知を受信するにはデスクトップ通知を有効にしてください。有効にすると上の {icon} ボタンから通知の内容を細かくカスタマイズできます。", "notifications_permission_banner.title": "お見逃しなく", @@ -940,6 +950,7 @@ "timeline_hint.remote_resource_not_displayed": "他のサーバーの{resource}は表示されません。", "timeline_hint.resources.followers": "フォロワー", "timeline_hint.resources.follows": "フォロー", + "timeline_hint.resources.replies": "返信の一部", "timeline_hint.resources.statuses": "以前の投稿", "trends.counter_by_accounts": "過去{days, plural, one {{days}日} other {{days}日}}に{count, plural, one {{counter}人} other {{counter} 人}}", "trends.trending_now": "トレンドタグ", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 420ba495f0..f5adc8c56c 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -403,7 +403,6 @@ "notification.status": "{name} akken i d-yessufeɣ", "notification_requests.accept": "Qbel", "notification_requests.dismiss": "Agi", - "notification_requests.exit_selection_mode": "Sefsex", "notification_requests.notifications_from": "Alɣuten sɣur {name}", "notifications.clear": "Sfeḍ alɣuten", "notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk alɣuten-inek·em i lebda?", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index a309a50263..dd10d132cb 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -348,7 +348,7 @@ "hashtag.counter_by_uses_today": "오늘 {count, plural, other {{counter} 개의 게시물}}", "hashtag.follow": "팔로우", "hashtag.unfollow": "팔로우 해제", - "hashtags.and_other": "…그리고 {count, plural,other {#개 더}}", + "hashtags.and_other": "…그리고 {count, plural,other {# 개 더}}", "home.column_settings.show_reblogs": "부스트 표시", "home.column_settings.show_replies": "답글 표시", "home.hide_announcements": "공지사항 숨기기", @@ -359,6 +359,8 @@ "ignore_notifications_modal.disclaimer": "마스토돈은 당신이 그들의 알림을 무시했다는 걸 알려줄 수 없습니다. 알림을 무시한다고 해서 메시지가 오지 않는 것은 아닙니다.", "ignore_notifications_modal.filter_instead": "대신 필터로 거르기", "ignore_notifications_modal.filter_to_act_users": "여전히 사용자를 수락, 거절, 신고할 수 있습니다", + "ignore_notifications_modal.filter_to_avoid_confusion": "필터링은 혼란을 예방하는데 도움이 될 수 있습니다", + "ignore_notifications_modal.filter_to_review_separately": "걸러진 알림들을 개별적으로 검토할 수 있습니다", "ignore_notifications_modal.ignore": "알림 무시", "ignore_notifications_modal.limited_accounts_title": "중재된 계정의 알림을 무시할까요?", "ignore_notifications_modal.new_accounts_title": "새 계정의 알림을 무시할까요?", @@ -441,7 +443,7 @@ "lists.replies_policy.title": "답글 표시:", "lists.search": "팔로우 중인 사람들 중에서 찾기", "lists.subheading": "리스트", - "load_pending": "{count}개의 새 항목", + "load_pending": "{count, plural, other {#}} 개의 새 항목", "loading_indicator.label": "불러오는 중...", "media_gallery.toggle_visible": "이미지 숨기기", "moved_to_account_banner.text": "당신의 계정 {disabledAccount}는 {movedToAccount}로 이동하였기 때문에 현재 비활성화 상태입니다.", @@ -516,19 +518,17 @@ "notification.status": "{name} 님이 방금 게시물을 올렸습니다", "notification.update": "{name} 님이 게시물을 수정했습니다", "notification_requests.accept": "수락", - "notification_requests.accept_all": "모두 수락", - "notification_requests.accept_multiple": "{count, plural, other {#개의 요청 수락하기}}", - "notification_requests.confirm_accept_all.button": "모두 수락", - "notification_requests.confirm_accept_all.message": "{count, plural, other {#개의 요청}}을 수락하려 합니다. 계속 진행할까요?", - "notification_requests.confirm_accept_all.title": "알림 요청을 수락할까요?", - "notification_requests.confirm_dismiss_all.button": "모두 지우기", - "notification_requests.confirm_dismiss_all.message": "{count, plural, other {#개의 요청}}을 지우려고 합니다. {count, plural, other {}}다시 접근하기 어렵습니다. 계속할까요?", - "notification_requests.confirm_dismiss_all.title": "알림 요청을 지울까요?", + "notification_requests.accept_multiple": "{count, plural, other {#}} 개의 요청 수락하기", + "notification_requests.confirm_accept_multiple.button": "{count, plural, other {}}요청 수락하기", + "notification_requests.confirm_accept_multiple.message": "{count, plural, other {#}} 개의 요청을 수락하려고 합니다. 계속 진행할까요?", + "notification_requests.confirm_accept_multiple.title": "알림 요청을 수락할까요?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, other {요청 지우기}}", + "notification_requests.confirm_dismiss_multiple.message": "{count, plural, other {# 개의 요청}}을 지우려고 합니다. {count, plural, other {}}다시 접근하기 어렵습니다. 계속할까요?", + "notification_requests.confirm_dismiss_multiple.title": "알림 요청을 지울까요?", "notification_requests.dismiss": "지우기", - "notification_requests.dismiss_all": "모두 지우기", - "notification_requests.dismiss_multiple": "{count, plural, other {#개의 요청 지우기}}", - "notification_requests.enter_selection_mode": "선택", - "notification_requests.exit_selection_mode": "취소", + "notification_requests.dismiss_multiple": "{count, plural, other {# 개의 요청 지우기}}", + "notification_requests.edit_selection": "편집", + "notification_requests.exit_selection": "완료", "notification_requests.explainer_for_limited_account": "이 계정은 중재자에 의해 제한되었기 때문에 이 계정의 알림은 걸러졌습니다.", "notification_requests.explainer_for_limited_remote_account": "이 계정 혹은 그가 속한 서버는 중재자에 의해 제한되었기 때문에 이 계정의 알림은 걸러졌습니다.", "notification_requests.maximize": "최대화", @@ -636,8 +636,8 @@ "poll.closed": "마감", "poll.refresh": "새로고침", "poll.reveal": "결과 보기", - "poll.total_people": "{count}명", - "poll.total_votes": "{count} 표", + "poll.total_people": "{count, plural, other {#}} 명", + "poll.total_votes": "{count, plural, other {#}} 표", "poll.vote": "투표", "poll.voted": "이 답변에 투표함", "poll.votes": "{votes} 표", @@ -670,7 +670,7 @@ "relative_time.minutes": "{number}분 전", "relative_time.seconds": "{number}초 전", "relative_time.today": "오늘", - "reply_indicator.attachments": "{count, plural, one {#} other {#}}개의 첨부파일", + "reply_indicator.attachments": "{count, plural, other {#}} 개의 첨부파일", "reply_indicator.cancel": "취소", "reply_indicator.poll": "투표", "report.block": "차단", @@ -770,7 +770,7 @@ "status.direct_indicator": "개인적인 멘션", "status.edit": "수정", "status.edited": "{date}에 마지막으로 편집됨", - "status.edited_x_times": "{count}번 수정됨", + "status.edited_x_times": "{count, plural, other {{count}}} 번 수정됨", "status.embed": "임베드", "status.favourite": "좋아요", "status.favourites": "{count, plural, other {좋아요}}", diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json index 0b0449c96a..9711bc684d 100644 --- a/app/javascript/mastodon/locales/lad.json +++ b/app/javascript/mastodon/locales/lad.json @@ -475,11 +475,7 @@ "notification.status": "{name} publiko algo", "notification.update": "{name} edito una publikasyon", "notification_requests.accept": "Acheta", - "notification_requests.accept_all": "Acheta todos", - "notification_requests.confirm_accept_all.button": "Acheta todos", "notification_requests.dismiss": "Kita", - "notification_requests.enter_selection_mode": "Eskoje", - "notification_requests.exit_selection_mode": "Anula", "notification_requests.notifications_from": "Avizos de {name}", "notification_requests.title": "Avizos filtrados", "notification_requests.view": "Amostra avizos", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 038ec8a7b3..680dc9958e 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -516,19 +516,17 @@ "notification.status": "{name} ką tik paskelbė", "notification.update": "{name} redagavo įrašą", "notification_requests.accept": "Priimti", - "notification_requests.accept_all": "Priimti visus", - "notification_requests.accept_multiple": "{count, plural, one {Priimti # prašymą} few {Priimti # prašymus} many {Priimti # prašymo} other {Priimti # prašymų}}", - "notification_requests.confirm_accept_all.button": "Priimti visus", - "notification_requests.confirm_accept_all.message": "Ketini priimti {count, plural, one {# pranešimo prašymą} few {# pranešimų prašymus} many {# pranešimo prašymo} other {# pranešimų prašymų}}. Ar tikrai nori tęsti?", - "notification_requests.confirm_accept_all.title": "Priimti pranešimų prašymus?", - "notification_requests.confirm_dismiss_all.button": "Atmesti visus", - "notification_requests.confirm_dismiss_all.message": "Ketini atmesti {count, plural, one {# pranešimo prašymą} few {# pranešimų prašymus} many {# pranešimo prašymo} other {# pranešimų prašymų}}. Daugiau negalėsi lengvai pasiekti {count, plural, one {jo} few {jų} many {juos} other {jų}}. Ar tikrai nori tęsti?", - "notification_requests.confirm_dismiss_all.title": "Atmesti pranešimų prašymus?", + "notification_requests.accept_multiple": "{count, plural, one {Priimti # prašymą…} few {Priimti # prašymus…} many {Priimti # prašymo…} other {Priimti # prašymų…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Priimti prašymą} few {Priimti prašymus} many {Priimti prašymo} other {Priimti prašymų}}", + "notification_requests.confirm_accept_multiple.message": "Ketini priimti {count, plural, one {# pranešimo prašymą} few {# pranešimų prašymus} many {# pranešimo prašymo} other {# pranešimų prašymų}}. Ar tikrai nori tęsti?", + "notification_requests.confirm_accept_multiple.title": "Priimti pranešimų prašymus?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Atmesti prašymą} few {Atmesti prašymus} many {Atmesti prašymo} other {Atmesti prašymų}}", + "notification_requests.confirm_dismiss_multiple.message": "Ketini atmesti {count, plural, one {# pranešimo prašymą} few {# pranešimų prašymus} many {# pranešimo prašymo} other {# pranešimų prašymų}}. Daugiau negalėsi lengvai pasiekti {count, plural, one {jo} few {jų} many {juos} other {jų}}. Ar tikrai nori tęsti?", + "notification_requests.confirm_dismiss_multiple.title": "Atmesti pranešimų prašymus?", "notification_requests.dismiss": "Atmesti", - "notification_requests.dismiss_all": "Atmesti visus", - "notification_requests.dismiss_multiple": "{count, plural, one {Atmesti # prašymą} few {Atmesti # prašymus} many {Atmesti # prašymo} other {Atmesti # prašymų}}", - "notification_requests.enter_selection_mode": "Pasirinkti", - "notification_requests.exit_selection_mode": "Atšaukti", + "notification_requests.dismiss_multiple": "{count, plural, one {Atmesti prašymą…} few {Atmesti prašymus…} many {Atmesti prašymo…} other {Atmesti prašymų…}}", + "notification_requests.edit_selection": "Redaguoti", + "notification_requests.exit_selection": "Atlikta", "notification_requests.explainer_for_limited_account": "Pranešimai iš šios paskyros buvo filtruojami, nes prižiūrėtojas (-a) apribojo paskyrą.", "notification_requests.explainer_for_limited_remote_account": "Pranešimai iš šios paskyros buvo filtruojami, nes prižiūrėtojas (-a) apribojo paskyrą arba serverį.", "notification_requests.maximize": "Padidinti", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 9293cfb092..de9d80885e 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -518,19 +518,17 @@ "notification.status": "{name} heeft zojuist een bericht geplaatst", "notification.update": "{name} heeft een bericht bewerkt", "notification_requests.accept": "Accepteren", - "notification_requests.accept_all": "Alles accepteren", - "notification_requests.accept_multiple": "{count, plural, one {# verzoek accepteren} other {# verzoeken accepteren}}", - "notification_requests.confirm_accept_all.button": "Alles accepteren", - "notification_requests.confirm_accept_all.message": "Je staat op het punt om {count, plural, one {een meldingsverzoek} other {# meldingsverzoeken}} te accepteren. Wil je doorgaan?", - "notification_requests.confirm_accept_all.title": "Meldingsverzoeken accepteren?", - "notification_requests.confirm_dismiss_all.button": "Alles afwijzen", - "notification_requests.confirm_dismiss_all.message": "Je staat op het punt om {count, plural, one {een meldingsverzoek} other {# meldingsverzoeken}} af te wijzen. Je zult niet in staat zijn om {count, plural, one {hier} other {hier}} weer gemakkelijk toegang toe te krijgen. Wil je doorgaan?", - "notification_requests.confirm_dismiss_all.title": "Meldingsverzoeken afwijzen?", + "notification_requests.accept_multiple": "{count, plural, one {# verzoek accepteren…} other {# verzoeken accepteren…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Verzoek accepteren} other {Verzoeken accepteren}}", + "notification_requests.confirm_accept_multiple.message": "Je staat op het punt om {count, plural, one {een meldingsverzoek} other {# meldingsverzoeken}} te accepteren. Weet je zeker dat je door wilt gaan?", + "notification_requests.confirm_accept_multiple.title": "Meldingsverzoeken accepteren?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Verzoek afwijzen} other {Verzoeken afwijzen}}", + "notification_requests.confirm_dismiss_multiple.message": "Je staat op het punt om {count, plural, one {een meldingsverzoek} other {# meldingsverzoeken}} af te wijzen. Je zult niet in staat zijn om {count, plural, one {hier} other {hier}} weer gemakkelijk toegang toe te krijgen. Wil je doorgaan?", + "notification_requests.confirm_dismiss_multiple.title": "Meldingsverzoeken afwijzen?", "notification_requests.dismiss": "Afwijzen", - "notification_requests.dismiss_all": "Alles afwijzen", - "notification_requests.dismiss_multiple": "{count, plural, one {# verzoek afwijzen} other {# verzoeken afwijzen}}", - "notification_requests.enter_selection_mode": "Selecteren", - "notification_requests.exit_selection_mode": "Annuleren", + "notification_requests.dismiss_multiple": "{count, plural, one {# verzoek afwijzen…} other {# verzoeken afwijzen…}}", + "notification_requests.edit_selection": "Bewerken", + "notification_requests.exit_selection": "Klaar", "notification_requests.explainer_for_limited_account": "Meldingen van dit account zijn gefilterd omdat dit account door een moderator is beperkt.", "notification_requests.explainer_for_limited_remote_account": "Meldingen van dit account zijn gefilterd omdat dit account of diens server door een moderator is beperkt.", "notification_requests.maximize": "Maximaliseren", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 1b0e490e60..7ecabd10c5 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -518,19 +518,7 @@ "notification.status": "{name} la nettopp ut", "notification.update": "{name} redigerte eit innlegg", "notification_requests.accept": "Godkjenn", - "notification_requests.accept_all": "Godta alle", - "notification_requests.accept_multiple": "{count, plural, one {Godta # førespurnad} other {Godta # førespurnader}}", - "notification_requests.confirm_accept_all.button": "Godta alle", - "notification_requests.confirm_accept_all.message": "Du er i ferd med å godta {count, plural, one {ein førespurnad om å fylgja deg} other {# førespurnader om å fylgja deg}}. Er du sikker på at du vil halda fram?", - "notification_requests.confirm_accept_all.title": "Godta førespurnad om varsel?", - "notification_requests.confirm_dismiss_all.button": "Avvis alle", - "notification_requests.confirm_dismiss_all.message": "Du er i ferd med å avvisa {count, plural, one {ein førespurnad om varsel} other {# førespurnader om varsel}}. Det blir ikkje lett å få tilgang til {count, plural, one {han} other {dei}} att. Er du sikker på at du vil halda fram?", - "notification_requests.confirm_dismiss_all.title": "Avvis førespurnader om varsel?", "notification_requests.dismiss": "Avvis", - "notification_requests.dismiss_all": "Avvis alle", - "notification_requests.dismiss_multiple": "{count, plural, one {Avvis # førespurnad} other {Avvis # førespurnader}}", - "notification_requests.enter_selection_mode": "Vel", - "notification_requests.exit_selection_mode": "Avbryt", "notification_requests.explainer_for_limited_account": "Varsla frå denne kontoen er filtrerte ut fordi ein moderator har avgrensa kontoen.", "notification_requests.explainer_for_limited_remote_account": "Varla frå denne kontoen er filtrerte ut fordi ein moderator har avgrensa kontoen eller tenaren.", "notification_requests.maximize": "Maksimer", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index c46c891d1b..adbdedb780 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -517,19 +517,17 @@ "notification.status": "{name} opublikował(a) nowy wpis", "notification.update": "{name} edytował(a) post", "notification_requests.accept": "Akceptuj", - "notification_requests.accept_all": "Przyjmij wszystkie", - "notification_requests.accept_multiple": "Przyjmij {count, plural, one {# wniosek} few {# wnioski} other {# wniosków}} o powiadomienia", - "notification_requests.confirm_accept_all.button": "Przyjmij wszystkie", - "notification_requests.confirm_accept_all.message": "Na pewno przyjąć {count, plural, one {# wniosek o powiadomienie} few {# wnioski o powiadomienia} other {# wniosków o powiadomienia}}?", - "notification_requests.confirm_accept_all.title": "Przyjąć wnioski o powiadomienia?", - "notification_requests.confirm_dismiss_all.button": "Odrzuć wszystkie", - "notification_requests.confirm_dismiss_all.message": "Na pewno odrzucić {count, plural, one {# wniosek o powiadomienie} few {# wnioski o powiadomienia} other {# wniosków o powiadomienia}}? Stracisz do {count, plural, one {niego} other {nich}} łatwy dostęp.", - "notification_requests.confirm_dismiss_all.title": "Odrzuć żądania powiadomień?", + "notification_requests.accept_multiple": "Przyjmij {count, plural, one {# wniosek} few {# wnioski} other {# wniosków}} o powiadomienia…", + "notification_requests.confirm_accept_multiple.button": "Przyjmij {count, plural, one {wniosek} other {wnioski}} o powiadomienia", + "notification_requests.confirm_accept_multiple.message": "Na pewno przyjąć {count, plural, one {# wniosek o powiadomienie} few {# wnioski o powiadomienia} other {# wniosków o powiadomienia}}?", + "notification_requests.confirm_accept_multiple.title": "Przyjąć wnioski o powiadomienia?", + "notification_requests.confirm_dismiss_multiple.button": "Odrzuć {count, plural, one {wniosek} other {wnioski}} o powiadomienia", + "notification_requests.confirm_dismiss_multiple.message": "Na pewno odrzucić {count, plural, one {# wniosek o powiadomienie} few {# wnioski o powiadomienia} other {# wniosków o powiadomienia}}? Stracisz do {count, plural, one {niego} other {nich}} łatwy dostęp.", + "notification_requests.confirm_dismiss_multiple.title": "Odrzuć żądania powiadomień?", "notification_requests.dismiss": "Odrzuć", - "notification_requests.dismiss_all": "Odrzuć wszystkie", - "notification_requests.dismiss_multiple": "Odrzuć {count, plural, one {# wniosek} few {# wnioski} other {# wniosków}} o powiadomienia", - "notification_requests.enter_selection_mode": "Wybierz", - "notification_requests.exit_selection_mode": "Anuluj", + "notification_requests.dismiss_multiple": "Odrzuć {count, plural, one {# wniosek} few {# wnioski} other {# wniosków}} o powiadomienia…", + "notification_requests.edit_selection": "Edytuj", + "notification_requests.exit_selection": "Gotowe", "notification_requests.explainer_for_limited_account": "Powiadomienia od tego konta zostały odfiltrowane bo to konto zostało ograniczone przez moderatora.", "notification_requests.explainer_for_limited_remote_account": "Powiadomienia od tego konta zostały odfiltrowane bo to konto, albo serwer na którym się znajduje, zostało ograniczone przez moderatora.", "notification_requests.maximize": "Zmaksymalizuj", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 613b1d4544..9f38f0b51a 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -498,10 +498,7 @@ "notification.status": "{name} acabou de tootar", "notification.update": "{name} editou uma publicação", "notification_requests.accept": "Aceitar", - "notification_requests.accept_all": "Aceitar tudo", - "notification_requests.confirm_accept_all.button": "Aceitar tudo", "notification_requests.dismiss": "Rejeitar", - "notification_requests.exit_selection_mode": "Cancelar", "notification_requests.maximize": "Maximizar", "notification_requests.notifications_from": "Notificações de {name}", "notification_requests.title": "Notificações filtradas", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 288575286b..8fc4b0a127 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -189,6 +189,7 @@ "confirmations.reply.title": "Перепишем пост?", "confirmations.unfollow.confirm": "Отписаться", "confirmations.unfollow.message": "Вы уверены, что хотите отписаться от {name}?", + "confirmations.unfollow.title": "Отписаться?", "conversation.delete": "Удалить беседу", "conversation.mark_as_read": "Отметить как прочитанное", "conversation.open": "Просмотр беседы", @@ -351,6 +352,7 @@ "home.pending_critical_update.link": "Посмотреть обновления", "home.pending_critical_update.title": "Доступно критическое обновление безопасности!", "home.show_announcements": "Показать объявления", + "ignore_notifications_modal.filter_to_act_users": "Вы и далее сможете принять, отвергнуть и жаловаться на пользователей", "interaction_modal.description.favourite": "С учётной записью Mastodon, вы можете добавить этот пост в избранное, чтобы сохранить его на будущее и дать автору знать, что пост вам понравился.", "interaction_modal.description.follow": "С учётной записью Mastodon вы можете подписаться на {name}, чтобы получать их посты в своей домашней ленте.", "interaction_modal.description.reblog": "С учётной записью Mastodon, вы можете продвинуть этот пост, чтобы поделиться им со своими подписчиками.", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 108b83f0b0..7ac05ea980 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -339,6 +339,7 @@ "home.pending_critical_update.link": "Zobraziť aktualizácie", "home.pending_critical_update.title": "Je dostupná kritická bezpečnostná aktualizácia.", "home.show_announcements": "Zobraziť oznámenia", + "ignore_notifications_modal.ignore": "Ignoruj upozornenia", "interaction_modal.description.favourite": "S účtom na Mastodone môžete tento príspevok ohviezdičkovať, tak dať autorovi vedieť, že sa vám páči, a uložiť si ho na neskôr.", "interaction_modal.description.follow": "S účtom na Mastodone môžete {name} sledovať a vidieť ich príspevky vo svojom domovskom kanáli.", "interaction_modal.description.reblog": "S účtom na Mastodone môžete tento príspevok zdeľať so svojimi sledovateľmi.", @@ -455,6 +456,11 @@ "notification.favourite": "{name} hviezdičkuje váš príspevok", "notification.follow": "{name} vás sleduje", "notification.follow_request": "{name} vás žiada sledovať", + "notification.label.mention": "Zmienka", + "notification.label.private_mention": "Súkromná zmienka", + "notification.label.private_reply": "Súkromná odpoveď", + "notification.label.reply": "Odpoveď", + "notification.mention": "Zmienka", "notification.moderation-warning.learn_more": "Zisti viac", "notification.moderation_warning.action_delete_statuses": "Niektoré z tvojich príspevkov boli odstránené.", "notification.moderation_warning.action_disable": "Tvoj účet bol vypnutý.", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 353b521a1c..932d9524df 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -487,6 +487,7 @@ "notification.label.private_mention": "Zasebna omemba", "notification.label.private_reply": "Zasebni odgovor", "notification.label.reply": "Odgovori", + "notification.mention": "Omemba", "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.", @@ -507,13 +508,9 @@ "notification.status": "{name} je pravkar objavil/a", "notification.update": "{name} je uredil(a) objavo", "notification_requests.accept": "Sprejmi", - "notification_requests.accept_all": "Sprejmi vse", - "notification_requests.confirm_accept_all.button": "Sprejmi vse", - "notification_requests.confirm_dismiss_all.button": "Opusti vse", "notification_requests.dismiss": "Zavrni", - "notification_requests.dismiss_all": "Opusti vse", - "notification_requests.enter_selection_mode": "Izberi", - "notification_requests.exit_selection_mode": "Prekliči", + "notification_requests.edit_selection": "Uredi", + "notification_requests.exit_selection": "Opravljeno", "notification_requests.maximize": "Maksimiraj", "notification_requests.notifications_from": "Obvestila od {name}", "notification_requests.title": "Filtrirana obvestila", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 78b90e2788..3dc3c00c09 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -518,19 +518,17 @@ "notification.status": "{name} sapo postoi", "notification.update": "{name} përpunoi një postim", "notification_requests.accept": "Pranoje", - "notification_requests.accept_all": "Pranoji krejt", - "notification_requests.accept_multiple": "{count, plural, one {Prano # kërkesë} other {Prano # kërkesa}}", - "notification_requests.confirm_accept_all.button": "Pranoji krejt", - "notification_requests.confirm_accept_all.message": "Ju ndan një hap nga pranimi i {count, plural, one {një kërkese njoftimi} other {# kërkesash njoftimi}}. Jeni i sigurt se doni të vazhdohet?", - "notification_requests.confirm_accept_all.title": "Të pranohen kërkesa njoftimesh?", - "notification_requests.confirm_dismiss_all.button": "Hidhi tej krejt", - "notification_requests.confirm_dismiss_all.message": "Ju ndan një hap nga hedhja tej e {count, plural, one {një kërkese njoftimesh} other {# kërkesash njoftimesh}}. S’do të jeni në gjendje të shihni sërish {count, plural, one {atë} other {ato}}. Jeni i sigurt se doni të bëhet kjo?", - "notification_requests.confirm_dismiss_all.title": "Të hidhen tej kërkesa njoftimesh?", + "notification_requests.accept_multiple": "{count, plural, one {Pranoni # kërkesë…} other {Pranoni # kërkesa…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Pranojeni kërkesën} other {Pranoje kërkesën}}", + "notification_requests.confirm_accept_multiple.message": "Ju ndan një hap nga pranimi i {count, plural, one {një kërkese njoftimi} other {# kërkesash njoftimi}}. Jeni i sigurt se doni të vazhdohet?", + "notification_requests.confirm_accept_multiple.title": "Të pranohen kërkesa njoftimesh?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Hidheni tej kërkesën} other {Hidhini tej kërkesat}}", + "notification_requests.confirm_dismiss_multiple.message": "Ju ndan një hap nga hedhja tej e {count, plural, one {një kërkese njoftimesh} other {# kërkesash njoftimesh}}. S’do të jeni në gjendje të shihni sërish {count, plural, one {atë} other {ato}}. Jeni i sigurt se doni të bëhet kjo?", + "notification_requests.confirm_dismiss_multiple.title": "Të hidhen tej kërkesa njoftimesh?", "notification_requests.dismiss": "Hidhe tej", - "notification_requests.dismiss_all": "Hidhi tej krejt", - "notification_requests.dismiss_multiple": "{count, plural, one {Hidhni tej # kërkesë} other {Hidhni tej # kërkesa}}", - "notification_requests.enter_selection_mode": "Përzgjidhni", - "notification_requests.exit_selection_mode": "Anuloje", + "notification_requests.dismiss_multiple": "{count, plural, one {Hidhni tej # kërkesë…} other {Hidhni tej # kërkesa…}}", + "notification_requests.edit_selection": "Përpunoni", + "notification_requests.exit_selection": "U bë", "notification_requests.explainer_for_limited_account": "Njoftimet prej kësaj llogarie janë filtruar, ngaqë llogaria është kufizuar nga një moderator.", "notification_requests.explainer_for_limited_remote_account": "Njoftimet prej kësaj llogarie janë filtruar, ngaqë llogaria, ose shërbyesi është kufizuar nga një moderator.", "notification_requests.maximize": "Maksimizoje", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index b27b3633ee..7c57569b80 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -502,14 +502,9 @@ "notification.status": "{name} publicerade just ett inlägg", "notification.update": "{name} redigerade ett inlägg", "notification_requests.accept": "Godkänn", - "notification_requests.accept_all": "Acceptera alla", - "notification_requests.accept_multiple": "{count, plural, one {Acceptera # förfrågan} other {Acceptera # förfrågningar}}", - "notification_requests.confirm_accept_all.button": "Acceptera alla", - "notification_requests.confirm_dismiss_all.button": "Avvisa alla", "notification_requests.dismiss": "Avfärda", - "notification_requests.dismiss_all": "Avvisa alla", - "notification_requests.dismiss_multiple": "{count, plural, one {Avvisa # förfrågan} other {Avvisa # förfrågningar}}", - "notification_requests.exit_selection_mode": "Avbryt", + "notification_requests.edit_selection": "Redigera", + "notification_requests.exit_selection": "Klar", "notification_requests.notifications_from": "Aviseringar från {name}", "notification_requests.title": "Filtrerade meddelanden", "notifications.clear": "Rensa aviseringar", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 9d378a67a2..dc155ac433 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -515,17 +515,7 @@ "notification.status": "{name} เพิ่งโพสต์", "notification.update": "{name} ได้แก้ไขโพสต์", "notification_requests.accept": "ยอมรับ", - "notification_requests.accept_all": "ยอมรับทั้งหมด", - "notification_requests.accept_multiple": "{count, plural, other {ยอมรับ # คำขอ}}", - "notification_requests.confirm_accept_all.button": "ยอมรับทั้งหมด", - "notification_requests.confirm_accept_all.title": "ยอมรับคำขอการแจ้งเตือน?", - "notification_requests.confirm_dismiss_all.button": "ปิดทั้งหมด", - "notification_requests.confirm_dismiss_all.title": "ปิดคำขอการแจ้งเตือน?", "notification_requests.dismiss": "ปิด", - "notification_requests.dismiss_all": "ปิดทั้งหมด", - "notification_requests.dismiss_multiple": "{count, plural, other {ปิด # คำขอ}}", - "notification_requests.enter_selection_mode": "เลือก", - "notification_requests.exit_selection_mode": "ยกเลิก", "notification_requests.notifications_from": "การแจ้งเตือนจาก {name}", "notification_requests.title": "การแจ้งเตือนที่กรองอยู่", "notification_requests.view": "ดูการแจ้งเตือน", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index ba84b72212..ac20d80cfa 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -518,19 +518,17 @@ "notification.status": "{name} az önce gönderdi", "notification.update": "{name} bir gönderiyi düzenledi", "notification_requests.accept": "Onayla", - "notification_requests.accept_all": "Tümünü kabul et", - "notification_requests.accept_multiple": "{count, plural, one {# isteği kabul et} other {# isteği kabul et}}", - "notification_requests.confirm_accept_all.button": "Tümünü kabul et", - "notification_requests.confirm_accept_all.message": "{count, plural, one {Bir bildirim isteğini} other {# bildirim isteğini}} kabul etmek üzeresiniz. Devam etmek istediğinizden emin misiniz?", - "notification_requests.confirm_accept_all.title": "Bildirim taleplerini kabul et?", - "notification_requests.confirm_dismiss_all.button": "Tümünü reddet", - "notification_requests.confirm_dismiss_all.message": "{count, plural, one {Bir bildirim isteğini} other {# bildirim isteğini}} reddetmek üzeresiniz. {count, plural, one {Ona} other {Onlara}} tekrar kolayca ulaşamayacaksınz. Devam etmek istediğinizden emin misiniz?", - "notification_requests.confirm_dismiss_all.title": "Bildirim taleplerini reddet?", + "notification_requests.accept_multiple": "{count, plural, one {# isteği kabul et…} other {# isteği kabul et…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {İsteği kabul et} other {İstekleri kabul et}}", + "notification_requests.confirm_accept_multiple.message": "{count, plural, one {Bir bildirim isteğini} other {# bildirim isteğini}} kabul etmek üzeresiniz. Devam etmek istediğinizden emin misiniz?", + "notification_requests.confirm_accept_multiple.title": "Bildirim isteklerini kabul et?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {İsteği reddet} other {İstekleri reddet}}", + "notification_requests.confirm_dismiss_multiple.message": "{count, plural, one {Bir bildirim isteğini} other {# bildirim isteğini}} reddetmek üzeresiniz. {count, plural, one {Ona} other {Onlara}} tekrar kolayca ulaşamayacaksınz. Devam etmek istediğinizden emin misiniz?", + "notification_requests.confirm_dismiss_multiple.title": "Bildirim isteklerini reddet?", "notification_requests.dismiss": "Yoksay", - "notification_requests.dismiss_all": "Tümünü reddet", - "notification_requests.dismiss_multiple": "{count, plural, one {# isteği reddet} other {# isteği reddet}}", - "notification_requests.enter_selection_mode": "Seç", - "notification_requests.exit_selection_mode": "İptal", + "notification_requests.dismiss_multiple": "{count, plural, one {# isteği reddet…} other {# isteği reddet…}}", + "notification_requests.edit_selection": "Düzenle", + "notification_requests.exit_selection": "Tamamlandı", "notification_requests.explainer_for_limited_account": "Hesap bir moderatör tarafından sınırlandığı için, bu hesaptan gönderilen bildirimler filtrelendi.", "notification_requests.explainer_for_limited_remote_account": "Hesap veya sunucusu bir moderatör tarafından sınırlandığı için, bu hesaptan gönderilen bildirimler filtrelendi.", "notification_requests.maximize": "Büyüt", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 83b3be003e..acff4857ea 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -518,19 +518,17 @@ "notification.status": "{name} щойно дописує", "notification.update": "{name} змінює допис", "notification_requests.accept": "Прийняти", - "notification_requests.accept_all": "Прийняти все", - "notification_requests.accept_multiple": "{count, plural, one {Прийняти # запит} few {Прийняти # запити} many {Прийняти # запитів} other {Прийняти # запит}}", - "notification_requests.confirm_accept_all.button": "Прийняти все", - "notification_requests.confirm_accept_all.message": "Ви збираєтеся прийняти {count, plural, one {запит на сповіщення} few {# запити на сповіщення} many {# запитів на сповіщення} other {# запит на сповіщення}}. Ви впевнені, що хочете продовжити?", - "notification_requests.confirm_accept_all.title": "Прийняти запит на сповіщення?", - "notification_requests.confirm_dismiss_all.button": "Відхили все", - "notification_requests.confirm_dismiss_all.message": "Ви збираєтеся відхилити {count, plural, one {запит на сповіщення} few {# запити на сповіщення} many {# запитів на сповіщення} other {# запит на сповіщення}}. Ви не зможете легко отримати доступ до {count, plural, one {нього} other {них}} again. Ви впевнені, що хочете продовжити?", - "notification_requests.confirm_dismiss_all.title": "Відхилити запити на сповіщення?", + "notification_requests.accept_multiple": "{count, plural, one {Прийняти # запит…} few {Прийняти # запити…} many {Прийняти # запитів…} other {Прийняти # запит…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Прийняти запит} other {Прийняти запити}}", + "notification_requests.confirm_accept_multiple.message": "Ви збираєтеся прийняти {count, plural, one {запит на сповіщення} few {# запити на сповіщення} many {# запитів на сповіщення} other {# запит на сповіщення}}. Ви впевнені, що хочете продовжити?", + "notification_requests.confirm_accept_multiple.title": "Прийняти запит на сповіщення?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Відхилити запит} other {Відхилити запити}}", + "notification_requests.confirm_dismiss_multiple.message": "Ви збираєтеся відхилити {count, plural, one {один запит на сповіщення} few {# запити на сповіщення} many {# запитів на сповіщення} other {# запит на сповіщення}}. Ви не зможете легко отримати доступ до {count, plural, one {нього} other {них}} пізніше. Ви впевнені, що хочете продовжити?", + "notification_requests.confirm_dismiss_multiple.title": "Відхилити запити на сповіщення?", "notification_requests.dismiss": "Відхилити", - "notification_requests.dismiss_all": "Відхили все", - "notification_requests.dismiss_multiple": "{count, plural, one {Відхилити # запит} other {Відхилити # запити}}", - "notification_requests.enter_selection_mode": "Вибрати", - "notification_requests.exit_selection_mode": "Скасувати", + "notification_requests.dismiss_multiple": "{count, plural, one {Відхилити # запит…} few {Відхилити # запити…} many {Відхилити # запитів…} other {Відхилити # запит…}}", + "notification_requests.edit_selection": "Змінити", + "notification_requests.exit_selection": "Готово", "notification_requests.explainer_for_limited_account": "Сповіщення від цього облікового запису фільтровані, оскільки обліковий запис обмежений модератором.", "notification_requests.explainer_for_limited_remote_account": "Сповіщення від цього облікового запису фільтровані, оскільки обліковий запис або його сервер обмежений модератором.", "notification_requests.maximize": "Розгорнути", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 688adc2137..8dceeccdbd 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -509,7 +509,17 @@ "notification.status": "{name} đăng tút mới", "notification.update": "{name} đã sửa tút", "notification_requests.accept": "Chấp nhận", + "notification_requests.accept_multiple": "{count, plural, other {Duyệt # yêu cầu…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, other {Yêu cầu cần duyệt}}", + "notification_requests.confirm_accept_multiple.message": "Bạn sẽ duyệt {count, plural, other {# yêu cầu thông báo}}. Vẫn tiếp tục?", + "notification_requests.confirm_accept_multiple.title": "Duyệt yêu cầu thông báo?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, other {Bỏ qua yêu cầu}}", + "notification_requests.confirm_dismiss_multiple.message": "Bạn sẽ bỏ qua {count, plural, other {# yêu cầu thông báo}}. Bạn sẽ không thể truy cập dễ dàng {count, plural, other {chúng}} nữa. Vẫn tiếp tục?", + "notification_requests.confirm_dismiss_multiple.title": "Bỏ qua yêu cầu thông báo?", "notification_requests.dismiss": "Bỏ qua", + "notification_requests.dismiss_multiple": "{count, plural, other {Bỏ qua # yêu cầu…}}", + "notification_requests.edit_selection": "Sửa", + "notification_requests.exit_selection": "Xong", "notification_requests.explainer_for_limited_account": "Thông báo từ tài khoản này đã được lọc vì tài khoản đã bị giới hạn bởi kiểm duyệt viên.", "notification_requests.explainer_for_limited_remote_account": "Thông báo từ tài khoản này đã được lọc vì tài khoản hoặc máy chủ của tài khoản đã bị giới hạn bởi kiểm duyệt viên.", "notification_requests.maximize": "Tối đa", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 517390f823..fd3ce2ae6c 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -518,19 +518,7 @@ "notification.status": "{name} 刚刚发布嘟文", "notification.update": "{name} 编辑了嘟文", "notification_requests.accept": "接受", - "notification_requests.accept_all": "全部接受", - "notification_requests.accept_multiple": "{count, plural, other {接受 # 个请求}}", - "notification_requests.confirm_accept_all.button": "全部接受", - "notification_requests.confirm_accept_all.message": "你将要接受 {count, plural, other {# 个通知请求}}。是否继续?", - "notification_requests.confirm_accept_all.title": "是否接受通知请求?", - "notification_requests.confirm_dismiss_all.button": "全部拒绝", - "notification_requests.confirm_dismiss_all.message": "你将要拒绝 {count, plural, other {# 个通知请求}}。你将无法再轻易访问{count, plural, other {它们}}。是否继续?", - "notification_requests.confirm_dismiss_all.title": "是否拒绝通知请求?", "notification_requests.dismiss": "拒绝", - "notification_requests.dismiss_all": "全部拒绝", - "notification_requests.dismiss_multiple": "{count, plural, other {拒绝 # 个请求}}", - "notification_requests.enter_selection_mode": "选择", - "notification_requests.exit_selection_mode": "取消", "notification_requests.explainer_for_limited_account": "来自该账户的通知已被过滤,因为该账户已被管理员限制。", "notification_requests.explainer_for_limited_remote_account": "来自该账户的通知已被过滤,因为该账户或其所在的实例已被管理员限制。", "notification_requests.maximize": "最大化", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 16e506a181..cc130cfafc 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -518,19 +518,17 @@ "notification.status": "{name} 剛剛嘟文", "notification.update": "{name} 已編輯嘟文", "notification_requests.accept": "接受", - "notification_requests.accept_all": "全部接受", - "notification_requests.accept_multiple": "{count, plural, other {接受 # 則請求}}", - "notification_requests.confirm_accept_all.button": "全部接受", - "notification_requests.confirm_accept_all.message": "您將接受 {count, plural, other {# 則推播通知請求}}。您確定要繼續?", - "notification_requests.confirm_accept_all.title": "接受推播通知請求?", - "notification_requests.confirm_dismiss_all.button": "全部忽略", - "notification_requests.confirm_dismiss_all.message": "您將忽略 {count, plural, other {# 則推播通知請求}}。您將不再能輕易存取{count, plural, other {這些}}推播通知。您確定要繼續?", - "notification_requests.confirm_dismiss_all.title": "忽略推播通知請求?", + "notification_requests.accept_multiple": "{count, plural, other {接受 # 則請求...}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, other {接受請求}}", + "notification_requests.confirm_accept_multiple.message": "您將接受 {count, plural, other {# 則推播通知請求}}。您確定要繼續?", + "notification_requests.confirm_accept_multiple.title": "接受推播通知請求?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, other {忽略請求}}", + "notification_requests.confirm_dismiss_multiple.message": "您將忽略 {count, plural, other {# 則推播通知請求}}。您將不再能輕易存取{count, plural, other {這些}}推播通知。您確定要繼續?", + "notification_requests.confirm_dismiss_multiple.title": "忽略推播通知請求?", "notification_requests.dismiss": "關閉", - "notification_requests.dismiss_all": "全部忽略", - "notification_requests.dismiss_multiple": "{count, plural, other {忽略 # 則請求}}", - "notification_requests.enter_selection_mode": "選擇", - "notification_requests.exit_selection_mode": "取消", + "notification_requests.dismiss_multiple": "{count, plural, other {忽略 # 則請求...}}", + "notification_requests.edit_selection": "編輯", + "notification_requests.exit_selection": "完成", "notification_requests.explainer_for_limited_account": "由於此帳號已被管理員限制,來自此帳號之通知已被過濾。", "notification_requests.explainer_for_limited_remote_account": "由於此帳號或其伺服器已被管理員限制,來自此帳號之通知已被過濾。", "notification_requests.maximize": "最大化", diff --git a/app/javascript/mastodon/reducers/notification_groups.ts b/app/javascript/mastodon/reducers/notification_groups.ts index b4262f92ee..c927f72015 100644 --- a/app/javascript/mastodon/reducers/notification_groups.ts +++ b/app/javascript/mastodon/reducers/notification_groups.ts @@ -19,6 +19,7 @@ import { markNotificationsAsRead, mountNotifications, unmountNotifications, + refreshStaleNotificationGroups, } from 'mastodon/actions/notification_groups'; import { disconnectTimeline, @@ -51,6 +52,7 @@ interface NotificationGroupsState { readMarkerId: string; mounted: number; isTabVisible: boolean; + mergedNotifications: 'ok' | 'pending' | 'needs-reload'; } const initialState: NotificationGroupsState = { @@ -58,6 +60,8 @@ const initialState: NotificationGroupsState = { pendingGroups: [], // holds pending groups in slow mode scrolledToTop: false, isLoading: false, + // this is used to track whether we need to refresh notifications after accepting requests + mergedNotifications: 'ok', // The following properties are used to track unread notifications lastReadId: '0', // used internally for unread notifications readMarkerId: '0', // user-facing and updated when focus changes @@ -336,6 +340,7 @@ export const notificationGroupsReducer = createReducer( json.type === 'gap' ? json : createNotificationGroupFromJSON(json), ); state.isLoading = false; + state.mergedNotifications = 'ok'; updateLastReadId(state); }) .addCase(fetchNotificationsGap.fulfilled, (state, action) => { @@ -490,7 +495,7 @@ export const notificationGroupsReducer = createReducer( state.groups = state.pendingGroups.concat(state.groups); state.pendingGroups = []; }) - .addCase(updateScrollPosition, (state, action) => { + .addCase(updateScrollPosition.fulfilled, (state, action) => { state.scrolledToTop = action.payload.top; updateLastReadId(state); trimNotifications(state); @@ -517,7 +522,7 @@ export const notificationGroupsReducer = createReducer( action.payload.markers.notifications.last_read_id; } }) - .addCase(mountNotifications, (state) => { + .addCase(mountNotifications.fulfilled, (state) => { state.mounted += 1; commitLastReadId(state); updateLastReadId(state); @@ -533,6 +538,10 @@ export const notificationGroupsReducer = createReducer( .addCase(unfocusApp, (state) => { state.isTabVisible = false; }) + .addCase(refreshStaleNotificationGroups.fulfilled, (state, action) => { + if (action.payload.deferredRefresh) + state.mergedNotifications = 'needs-reload'; + }) .addMatcher( isAnyOf(authorizeFollowRequestSuccess, rejectFollowRequestSuccess), (state, action) => { diff --git a/app/javascript/material-icons/400-24px/chat.svg b/app/javascript/material-icons/400-24px/chat.svg new file mode 100644 index 0000000000..7369e6f847 --- /dev/null +++ b/app/javascript/material-icons/400-24px/chat.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/desktop_mac.svg b/app/javascript/material-icons/400-24px/desktop_mac.svg new file mode 100644 index 0000000000..5d2a07a369 --- /dev/null +++ b/app/javascript/material-icons/400-24px/desktop_mac.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/format_paragraph.svg b/app/javascript/material-icons/400-24px/format_paragraph.svg new file mode 100644 index 0000000000..657b483c00 --- /dev/null +++ b/app/javascript/material-icons/400-24px/format_paragraph.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/key.svg b/app/javascript/material-icons/400-24px/key.svg index 8d4104d59c..cf13628dec 100644 --- a/app/javascript/material-icons/400-24px/key.svg +++ b/app/javascript/material-icons/400-24px/key.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/app/javascript/material-icons/400-24px/smartphone.svg b/app/javascript/material-icons/400-24px/smartphone.svg new file mode 100644 index 0000000000..fa56825488 --- /dev/null +++ b/app/javascript/material-icons/400-24px/smartphone.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/tablet.svg b/app/javascript/material-icons/400-24px/tablet.svg new file mode 100644 index 0000000000..09a5fe6bb1 --- /dev/null +++ b/app/javascript/material-icons/400-24px/tablet.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/toggle_off.svg b/app/javascript/material-icons/400-24px/toggle_off.svg new file mode 100644 index 0000000000..dcef49f69c --- /dev/null +++ b/app/javascript/material-icons/400-24px/toggle_off.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/toggle_on.svg b/app/javascript/material-icons/400-24px/toggle_on.svg new file mode 100644 index 0000000000..943b6e6d33 --- /dev/null +++ b/app/javascript/material-icons/400-24px/toggle_on.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/javascript/styles/contrast/variables.scss b/app/javascript/styles/contrast/variables.scss index 2ab7723739..2bee5eca74 100644 --- a/app/javascript/styles/contrast/variables.scss +++ b/app/javascript/styles/contrast/variables.scss @@ -1,10 +1,10 @@ // Dependent colors $black: #000000; -$classic-base-color: #282c37; -$classic-primary-color: #9baec8; -$classic-secondary-color: #d9e1e8; -$classic-highlight-color: #6364ff; +$classic-base-color: hsl(240deg, 16%, 19%); +$classic-primary-color: hsl(240deg, 29%, 70%); +$classic-secondary-color: hsl(255deg, 25%, 88%); +$classic-highlight-color: hsl(240deg, 100%, 69%); $emoji-reaction-color: #42485a !default; $emoji-reaction-selected-color: #617ed5 !default; diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index 55eb88dae1..8d801e4cd5 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -1,10 +1,6 @@ // Notes! // Sass color functions, "darken" and "lighten" are automatically replaced. -html { - scrollbar-color: $ui-base-color rgba($ui-base-color, 0.25); -} - .simple_form .button.button-tertiary { color: $highlight-text-color; } @@ -561,3 +557,14 @@ a.sparkline { color: $dark-text-color; } } + +@supports not selector(::-webkit-scrollbar) { + html { + scrollbar-color: rgba($action-button-color, 0.25) + var(--background-border-color); + } +} + +::-webkit-scrollbar-thumb { + opacity: 0.25; +} diff --git a/app/javascript/styles/mastodon-light/variables.scss b/app/javascript/styles/mastodon-light/variables.scss index 0c11084fa6..fcdc27488f 100644 --- a/app/javascript/styles/mastodon-light/variables.scss +++ b/app/javascript/styles/mastodon-light/variables.scss @@ -2,28 +2,28 @@ $black: #000000; $white: #ffffff; -$classic-base-color: #282c37; -$classic-primary-color: #9baec8; -$classic-secondary-color: #d9e1e8; -$classic-highlight-color: #6364ff; +$classic-base-color: hsl(240deg, 16%, 19%); +$classic-primary-color: hsl(240deg, 29%, 70%); +$classic-secondary-color: hsl(255deg, 25%, 88%); +$classic-highlight-color: hsl(240deg, 100%, 69%); -$blurple-600: #563acc; // Iris -$blurple-500: #6364ff; // Brand purple -$blurple-300: #858afa; // Faded Blue -$grey-600: #4e4c5a; // Trout -$grey-100: #dadaf3; // Topaz +$blurple-600: hsl(252deg, 59%, 51%); // Iris +$blurple-500: hsl(240deg, 100%, 69%); // Brand purple +$blurple-300: hsl(237deg, 92%, 75%); // Faded Blue +$grey-600: hsl(240deg, 8%, 33%); // Trout +$grey-100: hsl(240deg, 51%, 90%); // Topaz $emoji-reaction-color: #dfe5f5 !default; $emoji-reaction-selected-color: #9ac1f2 !default; // Differences -$success-green: lighten(#3c754d, 8%); +$success-green: lighten(hsl(138deg, 32%, 35%), 8%); $base-overlay-background: $white !default; $valid-value-color: $success-green !default; $ui-base-color: $classic-secondary-color !default; -$ui-base-lighter-color: #b0c0cf; +$ui-base-lighter-color: hsl(250deg, 24%, 75%); $ui-primary-color: $classic-primary-color !default; $ui-secondary-color: $classic-base-color !default; $ui-highlight-color: $classic-highlight-color !default; @@ -38,12 +38,12 @@ $ui-button-tertiary-border-color: $blurple-500 !default; $primary-text-color: $black !default; $darker-text-color: $classic-base-color !default; $highlight-text-color: $ui-highlight-color !default; -$dark-text-color: #444b5d; -$action-button-color: #606984; +$dark-text-color: hsl(240deg, 16%, 32%); +$action-button-color: hsl(240deg, 16%, 45%); $inverted-text-color: $black !default; $lighter-text-color: $classic-base-color !default; -$light-text-color: #444b5d; +$light-text-color: hsl(240deg, 16%, 32%); // Newly added colors $account-background-color: $white !default; @@ -60,12 +60,13 @@ $account-background-color: $white !default; $emojis-requiring-inversion: 'chains'; body { - --dropdown-border-color: #d9e1e8; + --dropdown-border-color: hsl(240deg, 25%, 88%); --dropdown-background-color: #fff; - --modal-border-color: #d9e1e8; + --modal-border-color: hsl(240deg, 25%, 88%); --modal-background-color: var(--background-color-tint); - --background-border-color: #d9e1e8; + --background-border-color: hsl(240deg, 25%, 88%); --background-color: #fff; --background-color-tint: rgba(255, 255, 255, 80%); --background-filter: blur(10px); + --on-surface-color: #{transparentize($ui-base-color, 0.65)}; } diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss index 2d6d8e0efc..852f1a33e1 100644 --- a/app/javascript/styles/mastodon/accounts.scss +++ b/app/javascript/styles/mastodon/accounts.scss @@ -66,7 +66,7 @@ margin-inline-start: 15px; text-align: start; - i[data-hidden] { + svg[data-hidden] { display: none; } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index d84e3125b2..421c5e9991 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -774,16 +774,6 @@ body > [data-popper-placement] { gap: 12px; flex-wrap: wrap; - .button { - display: block; // Otherwise text-ellipsis doesn't work - font-size: 14px; - line-height: normal; - font-weight: 700; - flex: 1 1 auto; - padding: 5px 12px; - border-radius: 4px; - } - .icon-button { box-sizing: content-box; color: $highlight-text-color; @@ -4362,7 +4352,7 @@ a.status-card { text-decoration: none; &:hover { - background: lighten($ui-base-color, 2%); + background: var(--on-surface-color); } } @@ -4372,11 +4362,12 @@ a.status-card { .timeline-hint { text-align: center; - color: $darker-text-color; - padding: 15px; + color: $dark-text-color; + padding: 16px; box-sizing: border-box; width: 100%; - cursor: default; + font-size: 14px; + line-height: 21px; strong { font-weight: 500; @@ -4393,10 +4384,10 @@ a.status-card { color: lighten($highlight-text-color, 4%); } } -} -.timeline-hint--with-descendants { - border-top: 1px solid var(--background-border-color); + &--with-descendants { + border-top: 1px solid var(--background-border-color); + } } .regeneration-indicator { @@ -4495,19 +4486,18 @@ a.status-card { display: flex; } - &__selection-mode { - flex-grow: 1; - - .text-btn:hover { - text-decoration: underline; - } + &__select-menu:disabled { + visibility: hidden; } - &__actions { - .icon-button { - border-radius: 4px; - border: 1px solid var(--background-border-color); - padding: 5px; + &__mode-button { + margin-left: auto; + color: $highlight-text-color; + font-weight: bold; + font-size: 14px; + + &:hover { + color: lighten($highlight-text-color, 6%); } } } @@ -4715,6 +4705,7 @@ a.status-card { padding: 0; font-family: inherit; font-size: inherit; + font-weight: inherit; color: inherit; border: 0; background: transparent; @@ -7864,10 +7855,6 @@ a.status-card { } } -::-webkit-scrollbar-thumb { - border-radius: 0; -} - noscript { text-align: center; @@ -10799,7 +10786,7 @@ noscript { cursor: pointer; &:hover { - background: lighten($ui-base-color, 1%); + background: var(--on-surface-color); } .notification-request__checkbox { @@ -10986,8 +10973,10 @@ noscript { } &__additional-content { - color: $darker-text-color; + color: $dark-text-color; margin-top: -8px; // to offset the parent's `gap` property + font-size: 15px; + line-height: 22px; } } @@ -11041,6 +11030,19 @@ noscript { } } +.notification-group__actions, +.compose-form__actions { + .button { + display: block; // Otherwise text-ellipsis doesn't work + font-size: 14px; + line-height: normal; + font-weight: 700; + flex: 1 1 auto; + padding: 5px 12px; + border-radius: 4px; + } +} + .notification-ungrouped { padding: 16px 24px; border-bottom: 1px solid var(--background-border-color); diff --git a/app/javascript/styles/mastodon/reset.scss b/app/javascript/styles/mastodon/reset.scss index f8a4a08ced..5a4152826d 100644 --- a/app/javascript/styles/mastodon/reset.scss +++ b/app/javascript/styles/mastodon/reset.scss @@ -53,22 +53,29 @@ table { border-spacing: 0; } -html { - scrollbar-color: var(--background-border-color); +@supports not selector(::-webkit-scrollbar) { + html { + scrollbar-color: $action-button-color var(--background-border-color); + scrollbar-width: thin; + } } ::-webkit-scrollbar { - width: 4px; - height: 4px; + width: 8px; + height: 8px; } ::-webkit-scrollbar-thumb { - background-color: $ui-highlight-color; - opacity: .25; + background-color: $action-button-color; + border: 2px var(--background-border-color); + border-radius: 12px; + width: 6px; + box-shadow: inset 0 0 0 2px var(--background-border-color); } ::-webkit-scrollbar-track { background-color: var(--background-border-color); + border-radius: 0px; } ::-webkit-scrollbar-corner { diff --git a/app/javascript/styles/mastodon/variables.scss b/app/javascript/styles/mastodon/variables.scss index 2202ef4495..9f16f3daa8 100644 --- a/app/javascript/styles/mastodon/variables.scss +++ b/app/javascript/styles/mastodon/variables.scss @@ -7,8 +7,8 @@ $blurple-600: #563acc; // Iris $blurple-500: #6364ff; // Brand purple $blurple-400: #7477fd; // Medium slate blue $blurple-300: #858afa; // Faded Blue -$grey-600: #4e4c5a; // Trout -$grey-100: #dadaf3; // Topaz +$grey-600: hsl(240deg, 8%, 33%); // Trout +$grey-100: hsl(240deg, 51%, 90%); // Topaz $success-green: #79bd9a !default; // Padua $error-red: $red-500 !default; // Cerise @@ -19,10 +19,10 @@ $kmyblue: #29a5f7 !default; $red-bookmark: $warning-red; // Values from the classic Mastodon UI -$classic-base-color: #282c37; // Midnight Express -$classic-primary-color: #9baec8; // Echo Blue -$classic-secondary-color: #d9e1e8; // Pattens Blue -$classic-highlight-color: #6364ff; // Brand purple +$classic-base-color: hsl(240deg, 16%, 19%); +$classic-primary-color: hsl(240deg, 29%, 70%); +$classic-secondary-color: hsl(255deg, 25%, 88%); +$classic-highlight-color: $blurple-500; // Values for kmyblue original functions $emoji-reaction-color: #42485a !default; @@ -114,6 +114,7 @@ $font-monospace: 'mastodon-font-monospace' !default; --surface-background-color: #{darken($ui-base-color, 4%)}; --surface-variant-background-color: #{$ui-base-color}; --surface-variant-active-background-color: #{lighten($ui-base-color, 4%)}; + --on-surface-color: #{transparentize($ui-base-color, 0.5)}; --avatar-border-radius: 8px; --content-font-size: 15px; --content-line-height: 22px; diff --git a/app/lib/themes.rb b/app/lib/themes.rb index 183258d62f..8b68c92e45 100644 --- a/app/lib/themes.rb +++ b/app/lib/themes.rb @@ -7,7 +7,7 @@ class Themes include Singleton THEME_COLORS = { - dark: '#191b22', + dark: '#181820', light: '#ffffff', }.freeze diff --git a/app/models/account.rb b/app/models/account.rb index 215a7b3df6..24ce72d235 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -152,6 +152,7 @@ class Account < ApplicationRecord scope :dormant, -> { joins(:account_stat).merge(AccountStat.without_recent_activity) } scope :with_username, ->(value) { where arel_table[:username].lower.eq(value.to_s.downcase) } scope :with_domain, ->(value) { where arel_table[:domain].lower.eq(value&.to_s&.downcase) } + scope :without_memorial, -> { where(memorial: false) } after_update_commit :trigger_update_webhooks diff --git a/app/models/account_suggestions/friends_of_friends_source.rb b/app/models/account_suggestions/friends_of_friends_source.rb index 825b24f419..707c6ccaec 100644 --- a/app/models/account_suggestions/friends_of_friends_source.rb +++ b/app/models/account_suggestions/friends_of_friends_source.rb @@ -31,6 +31,7 @@ class AccountSuggestions::FriendsOfFriendsSource < AccountSuggestions::Source AND accounts.suspended_at IS NULL AND accounts.silenced_at IS NULL AND accounts.moved_to_account_id IS NULL + AND accounts.memorial = FALSE AND follow_recommendation_mutes.target_account_id IS NULL GROUP BY accounts.id, account_stats.id ORDER BY frequency DESC, account_stats.followers_count ASC diff --git a/app/models/account_suggestions/source.rb b/app/models/account_suggestions/source.rb index 7afc4c80ed..9ae6bbbcc9 100644 --- a/app/models/account_suggestions/source.rb +++ b/app/models/account_suggestions/source.rb @@ -14,6 +14,7 @@ class AccountSuggestions::Source .searchable .where(discoverable: true) .without_silenced + .without_memorial .where.not(follows_sql, id: account.id) .where.not(follow_requests_sql, id: account.id) .not_excluded_by_account(account) diff --git a/app/models/notification.rb b/app/models/notification.rb index 4f537b43c2..f6a2a16eec 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -209,8 +209,8 @@ class Notification < ApplicationRecord # Notifications that have no `group_key` each count as a separate group. def paginate_groups_by_max_id(limit, max_id: nil, since_id: nil) query = reorder(id: :desc) - query = query.where(id: ...max_id) if max_id.present? - query = query.where(id: (since_id + 1)...) if since_id.present? + query = query.where(id: ...(max_id.to_i)) if max_id.present? + query = query.where(id: (since_id.to_i + 1)...) if since_id.present? query.paginate_groups(limit, :desc) end @@ -219,8 +219,8 @@ class Notification < ApplicationRecord # Results will be in ascending order by id. def paginate_groups_by_min_id(limit, max_id: nil, min_id: nil) query = reorder(id: :asc) - query = query.where(id: (min_id + 1)...) if min_id.present? - query = query.where(id: ...max_id) if max_id.present? + query = query.where(id: (min_id.to_i + 1)...) if min_id.present? + query = query.where(id: ...(max_id.to_i)) if max_id.present? query.paginate_groups(limit, :asc) end diff --git a/app/models/trends/tag_filter.rb b/app/models/trends/tag_filter.rb index 46b747819e..d6f88a9486 100644 --- a/app/models/trends/tag_filter.rb +++ b/app/models/trends/tag_filter.rb @@ -14,7 +14,7 @@ class Trends::TagFilter def results scope = if params[:status] == 'pending_review' - Tag.unscoped + Tag.unscoped.order(id: :desc) else trending_scope end diff --git a/app/services/accept_notification_request_service.rb b/app/services/accept_notification_request_service.rb index ad27ae3300..60ec6bb3b6 100644 --- a/app/services/accept_notification_request_service.rb +++ b/app/services/accept_notification_request_service.rb @@ -1,9 +1,21 @@ # frozen_string_literal: true class AcceptNotificationRequestService < BaseService + include Redisable + def call(request) NotificationPermission.create!(account: request.account, from_account: request.from_account) + increment_worker_count!(request) UnfilterNotificationsWorker.perform_async(request.account_id, request.from_account_id) request.destroy! end + + private + + def increment_worker_count!(request) + with_redis do |redis| + redis.incr("notification_unfilter_jobs:#{request.account_id}") + redis.expire("notification_unfilter_jobs:#{request.account_id}", 30.minutes.to_i) + end + end end diff --git a/app/views/admin/accounts/_local_account.html.haml b/app/views/admin/accounts/_local_account.html.haml index 3ed392cd1a..3ad47d8dfb 100644 --- a/app/views/admin/accounts/_local_account.html.haml +++ b/app/views/admin/accounts/_local_account.html.haml @@ -1,12 +1,12 @@ - if account.avatar? %tr %th= t('admin.accounts.avatar') - %td= table_link_to 'trash', t('admin.accounts.remove_avatar'), remove_avatar_admin_account_path(account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:remove_avatar, account) + %td= table_link_to 'delete', t('admin.accounts.remove_avatar'), remove_avatar_admin_account_path(account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:remove_avatar, account) %td - if account.header? %tr %th= t('admin.accounts.header') - %td= table_link_to 'trash', t('admin.accounts.remove_header'), remove_header_admin_account_path(account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:remove_header, account) + %td= table_link_to 'delete', t('admin.accounts.remove_header'), remove_header_admin_account_path(account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:remove_header, account) %td %tr %th= t('admin.accounts.role') @@ -16,7 +16,7 @@ - else = account.user_role&.name %td - = table_link_to 'vcard', t('admin.accounts.change_role.label'), admin_user_role_path(account.user) if can?(:change_role, account.user) + = table_link_to 'contact_mail', t('admin.accounts.change_role.label'), admin_user_role_path(account.user) if can?(:change_role, account.user) %tr %th{ rowspan: can?(:create, :email_domain_block) ? 3 : 2 }= t('admin.accounts.email') %td{ rowspan: can?(:create, :email_domain_block) ? 3 : 2 }= account.user_email @@ -25,7 +25,7 @@ %td= table_link_to 'search', t('admin.accounts.search_same_email_domain'), admin_accounts_path(email: "%@#{account.user_email.split('@').last}") - if can?(:create, :email_domain_block) %tr - %td= table_link_to 'ban', t('admin.accounts.add_email_domain_block'), new_admin_email_domain_block_path(_domain: account.user_email.split('@').last) + %td= table_link_to 'hide_source', t('admin.accounts.add_email_domain_block'), new_admin_email_domain_block_path(_domain: account.user_email.split('@').last) - if account.user_unconfirmed_email.present? %tr %th= t('admin.accounts.unconfirmed_email') @@ -48,7 +48,7 @@ = t 'admin.accounts.security_measures.only_password' %td - if account.user&.two_factor_enabled? && can?(:disable_2fa, account.user) - = table_link_to 'unlock', t('admin.accounts.disable_two_factor_authentication'), admin_user_two_factor_authentication_path(account.user.id), method: :delete + = table_link_to 'lock_open', t('admin.accounts.disable_two_factor_authentication'), admin_user_two_factor_authentication_path(account.user.id), method: :delete - if can?(:reset_password, account.user) %tr %td diff --git a/app/views/admin/accounts/_remote_account.html.haml b/app/views/admin/accounts/_remote_account.html.haml index 6755af2496..a052e877f4 100644 --- a/app/views/admin/accounts/_remote_account.html.haml +++ b/app/views/admin/accounts/_remote_account.html.haml @@ -12,4 +12,4 @@ = material_symbol DeliveryFailureTracker.available?(account.shared_inbox_url) ? 'check' : 'close' %td - if domain_block.nil? - = table_link_to 'ban', t('admin.domain_blocks.add_new'), new_admin_domain_block_path(_domain: account.domain) + = table_link_to 'hide_source', t('admin.domain_blocks.add_new'), new_admin_domain_block_path(_domain: account.domain) diff --git a/app/views/admin/accounts/index.html.haml b/app/views/admin/accounts/index.html.haml index cdaf4572be..7104b99ac6 100644 --- a/app/views/admin/accounts/index.html.haml +++ b/app/views/admin/accounts/index.html.haml @@ -107,5 +107,5 @@ = render partial: 'account', collection: @accounts, locals: { f: f } %nav.pagination - = link_to_previous_page @accounts, safe_join([fa_icon('chevron-left'), t('pagination.prev')], ' '), rel: 'prev' - = link_to_next_page @accounts, safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), rel: 'next' + = link_to_previous_page @accounts, safe_join([material_symbol('chevron_left'), t('pagination.prev')], ' '), rel: 'prev' + = link_to_next_page @accounts, safe_join([t('pagination.next'), material_symbol('chevron_right')], ' '), rel: 'next' diff --git a/app/views/admin/announcements/_announcement.html.haml b/app/views/admin/announcements/_announcement.html.haml index 1c7f89ef21..eac78efb28 100644 --- a/app/views/admin/announcements/_announcement.html.haml +++ b/app/views/admin/announcements/_announcement.html.haml @@ -12,8 +12,8 @@ %div - if can?(:update, announcement) - if announcement.published? - = table_link_to 'toggle-off', t('admin.announcements.unpublish'), unpublish_admin_announcement_path(announcement), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } + = table_link_to 'toggle_off', t('admin.announcements.unpublish'), unpublish_admin_announcement_path(announcement), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } - else - = table_link_to 'toggle-on', t('admin.announcements.publish'), publish_admin_announcement_path(announcement), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } + = table_link_to 'toggle_on', t('admin.announcements.publish'), publish_admin_announcement_path(announcement), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } - = table_link_to 'trash', t('generic.delete'), admin_announcement_path(announcement), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, announcement) + = table_link_to 'delete', t('generic.delete'), admin_announcement_path(announcement), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, announcement) diff --git a/app/views/admin/custom_emojis/_custom_emoji.html.haml b/app/views/admin/custom_emojis/_custom_emoji.html.haml index 3c207c97f7..bb6acfc08a 100644 --- a/app/views/admin/custom_emojis/_custom_emoji.html.haml +++ b/app/views/admin/custom_emojis/_custom_emoji.html.haml @@ -7,7 +7,7 @@ .batch-table__row__content__text %samp :#{custom_emoji.shortcode}: - = link_to safe_join([fa_icon('pencil'), t('admin.custom_emojis.edit.label')]), edit_admin_custom_emoji_path(custom_emoji, local: params[:local], remote: params[:remote], shortcode: params[:shortcode], by_domain: params[:by_domain]), method: :get, class: 'table-action-link' + = link_to safe_join([material_symbol('edit'), t('admin.custom_emojis.edit.label')]), edit_admin_custom_emoji_path(custom_emoji, local: params[:local], remote: params[:remote], shortcode: params[:shortcode], by_domain: params[:by_domain]), method: :get, class: 'table-action-link' - if custom_emoji.local? %span.information-badge= custom_emoji.category&.name || t('admin.custom_emojis.uncategorized') diff --git a/app/views/admin/custom_emojis/index.html.haml b/app/views/admin/custom_emojis/index.html.haml index 9e732ab59a..2a2ca6aa9d 100644 --- a/app/views/admin/custom_emojis/index.html.haml +++ b/app/views/admin/custom_emojis/index.html.haml @@ -92,5 +92,5 @@ = render partial: 'custom_emoji', collection: @custom_emojis, locals: { f: f } %nav.pagination - = link_to_previous_page @custom_emojis, safe_join([fa_icon('chevron-left'), t('pagination.prev')], ' '), rel: 'prev' - = link_to_next_page @custom_emojis, safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), rel: 'next' + = link_to_previous_page @custom_emojis, safe_join([material_symbol('chevron_left'), t('pagination.prev')], ' '), rel: 'prev' + = link_to_next_page @custom_emojis, safe_join([t('pagination.next'), material_symbol('chevron_right')], ' '), rel: 'next' diff --git a/app/views/admin/friend_servers/_friend_domain.html.haml b/app/views/admin/friend_servers/_friend_domain.html.haml index 9a2e857aba..12be8a841c 100644 --- a/app/views/admin/friend_servers/_friend_domain.html.haml +++ b/app/views/admin/friend_servers/_friend_domain.html.haml @@ -2,30 +2,30 @@ %td - unless friend.available %span.negative-hint - = fa_icon('times') + = material_symbol('close')   = t 'admin.friend_servers.disabled' %samp= friend.domain %td - if friend.accepted? %span.positive-hint - = fa_icon('check') + = material_symbol('check')   = t 'admin.friend_servers.enabled' - elsif friend.i_am_pending? - = fa_icon('hourglass') + = material_symbol('hourglass')   = t 'admin.friend_servers.pending' - elsif friend.they_are_pending? %span.warning-hint - = fa_icon('hourglass') + = material_symbol('hourglass')   = t 'admin.friend_servers.pending_you' - else %span.negative-hint - = fa_icon('times') + = material_symbol('close')   = t 'admin.friend_servers.disabled' %td - = table_link_to 'pencil', t('admin.friend_servers.edit_friend'), edit_admin_friend_server_path(friend) - = table_link_to 'times', t('admin.friend_servers.delete'), admin_friend_server_path(friend), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } + = table_link_to 'edit', t('admin.friend_servers.edit_friend'), edit_admin_friend_server_path(friend) + = table_link_to 'close', t('admin.friend_servers.delete'), admin_friend_server_path(friend), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } diff --git a/app/views/admin/friend_servers/edit.html.haml b/app/views/admin/friend_servers/edit.html.haml index 9a2acb21a5..2f008ea39c 100644 --- a/app/views/admin/friend_servers/edit.html.haml +++ b/app/views/admin/friend_servers/edit.html.haml @@ -10,16 +10,16 @@ .fields-group - if @friend.accepted? %span.positive-hint - = fa_icon('check') + = material_symbol('check')   = t 'admin.friend_servers.enabled' - elsif @friend.pending? - = fa_icon('hourglass') + = material_symbol('hourglass')   = t 'admin.friend_servers.pending' - else %span.negative-hint - = fa_icon('times') + = material_symbol('close')   = t 'admin.friend_servers.disabled' .action-buttons diff --git a/app/views/admin/invites/_invite.html.haml b/app/views/admin/invites/_invite.html.haml index f9cd6003f3..8bd5f10fee 100644 --- a/app/views/admin/invites/_invite.html.haml +++ b/app/views/admin/invites/_invite.html.haml @@ -27,4 +27,4 @@ %td - if invite.valid_for_use? && policy(invite).destroy? - = table_link_to 'times', t('invites.delete'), admin_invite_path(invite), method: :delete + = table_link_to 'close', t('invites.delete'), admin_invite_path(invite), method: :delete diff --git a/app/views/admin/ng_rule_histories/show.html.haml b/app/views/admin/ng_rule_histories/show.html.haml index 9c074b2e05..3d9f395d87 100644 --- a/app/views/admin/ng_rule_histories/show.html.haml +++ b/app/views/admin/ng_rule_histories/show.html.haml @@ -4,10 +4,10 @@ .filters .back-link = link_to edit_admin_ng_rule_path(id: @ng_rule.id) do - = fa_icon 'chevron-left fw' + = material_symbol 'chevron_left fw' = t('admin.ng_rule_histories.back_to_ng_rule') = link_to admin_ng_rules_path do - = fa_icon 'chevron-left fw' + = material_symbol 'chevron_left fw' = t('admin.ng_rule_histories.back_to_ng_rules') %hr.spacer/ diff --git a/app/views/admin/ng_rules/_ng_rule.html.haml b/app/views/admin/ng_rules/_ng_rule.html.haml index 4313363535..9848e5bc63 100644 --- a/app/views/admin/ng_rules/_ng_rule.html.haml +++ b/app/views/admin/ng_rules/_ng_rule.html.haml @@ -20,6 +20,6 @@ = link_to t('admin.ng_rules.index.hit_count', count: ng_rule.hit_count), admin_ng_rule_history_path(ng_rule) %div - = table_link_to 'pencil', t('admin.ng_rules.index.edit.title'), edit_admin_ng_rule_path(ng_rule) - = table_link_to 'files-o', t('admin.ng_rules.copy'), duplicate_admin_ng_rule_path(ng_rule), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } - = table_link_to 'times', t('admin.ng_rules.index.delete'), admin_ng_rule_path(ng_rule), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } + = table_link_to 'edit', t('admin.ng_rules.index.edit.title'), edit_admin_ng_rule_path(ng_rule) + = table_link_to 'content_copy', t('admin.ng_rules.copy'), duplicate_admin_ng_rule_path(ng_rule), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } + = table_link_to 'close', t('admin.ng_rules.index.delete'), admin_ng_rule_path(ng_rule), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } diff --git a/app/views/admin/ng_words/keywords/_ng_word.html.haml b/app/views/admin/ng_words/keywords/_ng_word.html.haml index bf81193a97..a62359c8d8 100644 --- a/app/views/admin/ng_words/keywords/_ng_word.html.haml +++ b/app/views/admin/ng_words/keywords/_ng_word.html.haml @@ -7,4 +7,4 @@ .label_input__wrapper= f.check_box :strangers, { multiple: true, checked: ng_word.stranger }, temporary_id, nil %td = hidden_field_tag :'form_admin_settings[ng_words_test][temporary_ids][]', temporary_id, class: 'temporary_id' - = link_to safe_join([fa_icon('times'), t('filters.index.delete')]), '#', class: 'table-action-link delete-row-button' + = link_to safe_join([material_symbol('close'), t('filters.index.delete')]), '#', class: 'table-action-link delete-row-button' diff --git a/app/views/admin/ng_words/keywords/show.html.haml b/app/views/admin/ng_words/keywords/show.html.haml index d53676b7bf..68d933b70a 100644 --- a/app/views/admin/ng_words/keywords/show.html.haml +++ b/app/views/admin/ng_words/keywords/show.html.haml @@ -37,7 +37,7 @@ %tfoot %tr %td{ colspan: 4 } - = link_to safe_join([fa_icon('plus'), t('filters.edit.add_keyword')]), '#', class: 'table-action-link add-row-button' + = link_to safe_join([material_symbol('add'), t('filters.edit.add_keyword')]), '#', class: 'table-action-link add-row-button' .actions = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/admin/ng_words/shared/_links.html.haml b/app/views/admin/ng_words/shared/_links.html.haml index aac891c381..c17cdbbee7 100644 --- a/app/views/admin/ng_words/shared/_links.html.haml +++ b/app/views/admin/ng_words/shared/_links.html.haml @@ -1,6 +1,6 @@ .content__heading__tabs = render_navigation renderer: :links do |primary| :ruby - primary.item :keywords, safe_join([fa_icon('pencil fw'), t('admin.ng_words.keywords')]), admin_ng_words_keywords_path - primary.item :white_list, safe_join([fa_icon('list fw'), t('admin.ng_words.white_list')]), admin_ng_words_white_list_path - primary.item :settings, safe_join([fa_icon('cog fw'), t('admin.ng_words.settings')]), admin_ng_words_settings_path + primary.item :keywords, safe_join([material_symbol('edit'), t('admin.ng_words.keywords')]), admin_ng_words_keywords_path + primary.item :white_list, safe_join([material_symbol('list'), t('admin.ng_words.white_list')]), admin_ng_words_white_list_path + primary.item :settings, safe_join([material_symbol('settings'), t('admin.ng_words.settings')]), admin_ng_words_settings_path diff --git a/app/views/admin/ng_words/white_list/_specified_domain.html.haml b/app/views/admin/ng_words/white_list/_specified_domain.html.haml index d9eb8dfae6..cc62a1161c 100644 --- a/app/views/admin/ng_words/white_list/_specified_domain.html.haml +++ b/app/views/admin/ng_words/white_list/_specified_domain.html.haml @@ -3,4 +3,4 @@ %td= f.input :domains, as: :string, input_html: { multiple: true, value: specified_domain.domain } %td = hidden_field_tag :'form_admin_settings[specified_domains][temporary_ids][]', temporary_id, class: 'temporary_id' - = link_to safe_join([fa_icon('times'), t('filters.index.delete')]), '#', class: 'table-action-link delete-row-button' + = link_to safe_join([material_symbol('close'), t('filters.index.delete')]), '#', class: 'table-action-link delete-row-button' diff --git a/app/views/admin/ng_words/white_list/show.html.haml b/app/views/admin/ng_words/white_list/show.html.haml index fc4f354e53..62ffd99ee4 100644 --- a/app/views/admin/ng_words/white_list/show.html.haml +++ b/app/views/admin/ng_words/white_list/show.html.haml @@ -35,7 +35,7 @@ %tfoot %tr %td{ colspan: 2 } - = link_to safe_join([fa_icon('plus'), t('admin.ng_words.edit.add_domain')]), '#', class: 'table-action-link add-row-button' + = link_to safe_join([material_symbol('add'), t('admin.ng_words.edit.add_domain')]), '#', class: 'table-action-link add-row-button' .actions = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/admin/ngword_histories/index.html.haml b/app/views/admin/ngword_histories/index.html.haml index 517ccc3559..1ba55a605b 100644 --- a/app/views/admin/ngword_histories/index.html.haml +++ b/app/views/admin/ngword_histories/index.html.haml @@ -4,7 +4,7 @@ .filters .back-link = link_to admin_ng_words_keywords_path do - = fa_icon 'chevron-left fw' + = material_symbol 'chevron_left fw' = t('admin.ngword_histories.back_to_ng_words') %hr.spacer/ diff --git a/app/views/admin/relays/_relay.html.haml b/app/views/admin/relays/_relay.html.haml index 2e76f54308..9e9f629eee 100644 --- a/app/views/admin/relays/_relay.html.haml +++ b/app/views/admin/relays/_relay.html.haml @@ -18,8 +18,8 @@ = t 'admin.relays.disabled' %td - if relay.accepted? - = table_link_to 'power-off', t('admin.relays.disable'), disable_admin_relay_path(relay), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } + = table_link_to 'power_off', t('admin.relays.disable'), disable_admin_relay_path(relay), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } - elsif !relay.pending? - = table_link_to 'power-off', t('admin.relays.enable'), enable_admin_relay_path(relay), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } + = table_link_to 'power_off', t('admin.relays.enable'), enable_admin_relay_path(relay), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } - = table_link_to 'times', t('admin.relays.delete'), admin_relay_path(relay), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } + = table_link_to 'close', t('admin.relays.delete'), admin_relay_path(relay), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } diff --git a/app/views/admin/report_notes/_report_note.html.haml b/app/views/admin/report_notes/_report_note.html.haml index 64628989a6..dd60f7eabd 100644 --- a/app/views/admin/report_notes/_report_note.html.haml +++ b/app/views/admin/report_notes/_report_note.html.haml @@ -13,6 +13,6 @@ - if can?(:destroy, report_note) .report-notes__item__actions - if report_note.is_a?(AccountModerationNote) - = table_link_to 'trash', t('admin.reports.notes.delete'), admin_account_moderation_note_path(report_note), method: :delete + = table_link_to 'delete', t('admin.reports.notes.delete'), admin_account_moderation_note_path(report_note), method: :delete - else - = table_link_to 'trash', t('admin.reports.notes.delete'), admin_report_note_path(report_note), method: :delete + = table_link_to 'delete', t('admin.reports.notes.delete'), admin_report_note_path(report_note), method: :delete diff --git a/app/views/admin/reports/_header_details.html.haml b/app/views/admin/reports/_header_details.html.haml index 434231f733..cf81670845 100644 --- a/app/views/admin/reports/_header_details.html.haml +++ b/app/views/admin/reports/_header_details.html.haml @@ -54,6 +54,6 @@ = admin_account_link_to report.assigned_account — - if report.assigned_account != current_user.account - = table_link_to 'user', t('admin.reports.assign_to_self'), assign_to_self_admin_report_path(report), method: :post + = table_link_to 'person', t('admin.reports.assign_to_self'), assign_to_self_admin_report_path(report), method: :post - elsif !report.assigned_account.nil? - = table_link_to 'trash', t('admin.reports.unassign'), unassign_admin_report_path(report), method: :post + = table_link_to 'delete', t('admin.reports.unassign'), unassign_admin_report_path(report), method: :post diff --git a/app/views/admin/roles/_role.html.haml b/app/views/admin/roles/_role.html.haml index fd37644c83..636127354b 100644 --- a/app/views/admin/roles/_role.html.haml +++ b/app/views/admin/roles/_role.html.haml @@ -27,4 +27,4 @@ · %abbr{ title: role.permissions_as_keys.map { |privilege| I18n.t("admin.roles.privileges.#{privilege}") }.join(', ') }= t('admin.roles.permissions_count', count: role.permissions_as_keys.size) %div - = table_link_to 'pencil', t('admin.accounts.edit'), edit_admin_role_path(role) if can?(:update, role) + = table_link_to 'edit', t('admin.accounts.edit'), edit_admin_role_path(role) if can?(:update, role) diff --git a/app/views/admin/rules/_rule.html.haml b/app/views/admin/rules/_rule.html.haml index 5f37f69354..eb97eefb3c 100644 --- a/app/views/admin/rules/_rule.html.haml +++ b/app/views/admin/rules/_rule.html.haml @@ -8,4 +8,4 @@ = rule.hint %div - = table_link_to 'trash', t('admin.rules.delete'), admin_rule_path(rule), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, rule) + = table_link_to 'delete', t('admin.rules.delete'), admin_rule_path(rule), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, rule) diff --git a/app/views/admin/sensitive_words/_sensitive_word.html.haml b/app/views/admin/sensitive_words/_sensitive_word.html.haml index de9c65714e..e7be05d763 100644 --- a/app/views/admin/sensitive_words/_sensitive_word.html.haml +++ b/app/views/admin/sensitive_words/_sensitive_word.html.haml @@ -9,4 +9,4 @@ .label_input__wrapper= f.check_box :spoilers, { multiple: true, checked: sensitive_word.spoiler }, temporary_id, nil %td = hidden_field_tag :'form_admin_settings[sensitive_words_test][temporary_ids][]', temporary_id, class: 'temporary_id' - = link_to safe_join([fa_icon('times'), t('filters.index.delete')]), '#', class: 'table-action-link delete-row-button' + = link_to safe_join([material_symbol('close'), t('filters.index.delete')]), '#', class: 'table-action-link delete-row-button' diff --git a/app/views/admin/sensitive_words/show.html.haml b/app/views/admin/sensitive_words/show.html.haml index 6f51419cc1..024225a033 100644 --- a/app/views/admin/sensitive_words/show.html.haml +++ b/app/views/admin/sensitive_words/show.html.haml @@ -33,7 +33,7 @@ %tfoot %tr %td{ colspan: 4 } - = link_to safe_join([fa_icon('plus'), t('filters.edit.add_keyword')]), '#', class: 'table-action-link add-row-button' + = link_to safe_join([material_symbol('add'), t('filters.edit.add_keyword')]), '#', class: 'table-action-link add-row-button' .fields-group = f.input :auto_warning_text, wrapper: :with_label, input_html: { placeholder: t('admin.sensitive_words.alert') }, label: t('admin.sensitive_words.auto_warning_text'), hint: t('admin.sensitive_words.auto_warning_text_hint') diff --git a/app/views/admin/warning_presets/_warning_preset.html.haml b/app/views/admin/warning_presets/_warning_preset.html.haml index a58199c804..2cc056420f 100644 --- a/app/views/admin/warning_presets/_warning_preset.html.haml +++ b/app/views/admin/warning_presets/_warning_preset.html.haml @@ -7,4 +7,4 @@ = truncate(warning_preset.text) %div - = table_link_to 'trash', t('admin.warning_presets.delete'), admin_warning_preset_path(warning_preset), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, warning_preset) + = table_link_to 'delete', t('admin.warning_presets.delete'), admin_warning_preset_path(warning_preset), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, warning_preset) diff --git a/app/views/admin/webhooks/_webhook.html.haml b/app/views/admin/webhooks/_webhook.html.haml index 39abb7dd2c..dca5abeb77 100644 --- a/app/views/admin/webhooks/_webhook.html.haml +++ b/app/views/admin/webhooks/_webhook.html.haml @@ -15,5 +15,5 @@ %abbr{ title: webhook.events.join(', ') }= t('admin.webhooks.enabled_events', count: webhook.events.size) %div - = table_link_to 'pencil', t('admin.webhooks.edit'), edit_admin_webhook_path(webhook) if can?(:update, webhook) - = table_link_to 'trash', t('admin.webhooks.delete'), admin_webhook_path(webhook), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, webhook) + = table_link_to 'edit', t('admin.webhooks.edit'), edit_admin_webhook_path(webhook) if can?(:update, webhook) + = table_link_to 'delete', t('admin.webhooks.delete'), admin_webhook_path(webhook), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, webhook) diff --git a/app/views/admin/webhooks/show.html.haml b/app/views/admin/webhooks/show.html.haml index c2c4f55788..a389e61102 100644 --- a/app/views/admin/webhooks/show.html.haml +++ b/app/views/admin/webhooks/show.html.haml @@ -19,10 +19,10 @@ %td - if @webhook.enabled? %span.positive-hint= t('admin.webhooks.enabled') - = table_link_to 'power-off', t('admin.webhooks.disable'), disable_admin_webhook_path(@webhook), method: :post if can?(:disable, @webhook) + = table_link_to 'power_off', t('admin.webhooks.disable'), disable_admin_webhook_path(@webhook), method: :post if can?(:disable, @webhook) - else %span.negative-hint= t('admin.webhooks.disabled') - = table_link_to 'power-off', t('admin.webhooks.enable'), enable_admin_webhook_path(@webhook), method: :post if can?(:enable, @webhook) + = table_link_to 'power_off', t('admin.webhooks.enable'), enable_admin_webhook_path(@webhook), method: :post if can?(:enable, @webhook) %tr %th= t('admin.webhooks.events') %td diff --git a/app/views/antennas/_antenna.html.haml b/app/views/antennas/_antenna.html.haml index ed3b8c3bde..2906648cec 100644 --- a/app/views/antennas/_antenna.html.haml +++ b/app/views/antennas/_antenna.html.haml @@ -21,7 +21,7 @@ - unless antenna.antenna_domains.empty? %li.permissions-list__item .permissions-list__item__icon - = fa_icon('sitemap') + = material_symbol('cloud') .permissions-list__item__text .permissions-list__item__text__title = t('antennas.index.domains', count: antenna.antenna_domains.size) @@ -32,7 +32,7 @@ - unless antenna.antenna_accounts.empty? %li.permissions-list__item .permissions-list__item__icon - = fa_icon('users') + = material_symbol('groups') .permissions-list__item__text .permissions-list__item__text__title = t('antennas.index.accounts', count: antenna.antenna_accounts.size) @@ -43,7 +43,7 @@ - if antenna.keywords.present? %li.permissions-list__item .permissions-list__item__icon - = fa_icon('paragraph') + = material_symbol('format_paragraph') .permissions-list__item__text .permissions-list__item__text__title = t('antennas.index.keywords', count: antenna.keywords.size) @@ -54,7 +54,7 @@ - unless antenna.antenna_tags.empty? %li.permissions-list__item .permissions-list__item__icon - = fa_icon('hashtag') + = material_symbol('tag') .permissions-list__item__text .permissions-list__item__text__title = t('antennas.index.tags', count: antenna.antenna_tags.size) @@ -73,5 +73,5 @@ = t('antennas.errors.empty_contexts') %div - = table_link_to 'pencil', t('antennas.edit.title'), edit_antenna_path(antenna) - = table_link_to 'times', t('antennas.index.delete'), antenna_path(antenna), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } + = table_link_to 'edit', t('antennas.edit.title'), edit_antenna_path(antenna) + = table_link_to 'close', t('antennas.index.delete'), antenna_path(antenna), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } diff --git a/app/views/application/_card.html.haml b/app/views/application/_card.html.haml index 1b3dd889c1..ae74f1dc63 100644 --- a/app/views/application/_card.html.haml +++ b/app/views/application/_card.html.haml @@ -15,4 +15,4 @@ %strong.emojify.p-name= display_name(account, custom_emojify: true) %span = acct(account) - = fa_icon('lock', { data: ({ hidden: true } unless account.locked?) }) + = material_symbol('lock', { data: ({ hidden: true } unless account.locked?) }) diff --git a/app/views/auth/registrations/_account_warning.html.haml b/app/views/auth/registrations/_account_warning.html.haml index c51179b49d..d558e1d9c9 100644 --- a/app/views/auth/registrations/_account_warning.html.haml +++ b/app/views/auth/registrations/_account_warning.html.haml @@ -2,7 +2,7 @@ .strike-entry__header .strike-entry__avatar .indicator-icon{ class: account_warning.overruled? ? 'success' : 'failure' } - = fa_icon 'warning' + = material_symbol 'warning' .strike-entry__content .strike-entry__title = t 'disputes.strikes.title', diff --git a/app/views/auth/registrations/_session.html.haml b/app/views/auth/registrations/_session.html.haml index 2fa7db70c7..92e5147593 100644 --- a/app/views/auth/registrations/_session.html.haml +++ b/app/views/auth/registrations/_session.html.haml @@ -1,7 +1,7 @@ %tr %td %span{ title: session.user_agent }< - = fa_icon "#{session_device_icon(session)} fw", 'aria-label': session_device_icon(session) + = material_symbol session_device_icon(session), 'aria-label': session_device_icon(session)   = t 'sessions.description', browser: t("sessions.browsers.#{session.browser}", default: session.browser.to_s), @@ -15,4 +15,4 @@ %time.time-ago{ datetime: session.updated_at.iso8601, title: l(session.updated_at) }= l(session.updated_at) %td - if current_session.session_id != session.session_id && !current_account.suspended? - = table_link_to 'times', t('sessions.revoke'), settings_session_path(session), method: :delete + = table_link_to 'close', t('sessions.revoke'), settings_session_path(session), method: :delete diff --git a/app/views/disputes/strikes/_card.html.haml b/app/views/disputes/strikes/_card.html.haml index 55551cc7d0..58965ad600 100644 --- a/app/views/disputes/strikes/_card.html.haml +++ b/app/views/disputes/strikes/_card.html.haml @@ -24,7 +24,7 @@ .emojify= one_line_preview(status) - status.ordered_media_attachments.each do |media_attachment| %abbr{ title: media_attachment.description } - = fa_icon 'link' + = material_symbol 'link' = media_attachment.file_file_name .strike-card__statuses-list__item__meta = link_to ActivityPub::TagManager.instance.url_for(status), target: '_blank', rel: 'noopener noreferrer' do diff --git a/app/views/disputes/strikes/show.html.haml b/app/views/disputes/strikes/show.html.haml index 5f72138821..2bfecebbff 100644 --- a/app/views/disputes/strikes/show.html.haml +++ b/app/views/disputes/strikes/show.html.haml @@ -9,13 +9,13 @@ - if @strike.overruled? %p.hint %span.positive-hint - = fa_icon 'check' + = material_symbol 'check'   = t 'disputes.strikes.appeal_approved' - elsif @appeal.persisted? && @appeal.rejected? %p.hint %span.negative-hint - = fa_icon 'times' + = material_symbol 'close'   = t 'disputes.strikes.appeal_rejected' diff --git a/app/views/filters/_filter.html.haml b/app/views/filters/_filter.html.haml index 9993ad2ee8..a544ac3a75 100644 --- a/app/views/filters/_filter.html.haml +++ b/app/views/filters/_filter.html.haml @@ -14,7 +14,7 @@ - unless filter.keywords.empty? %li.permissions-list__item .permissions-list__item__icon - = fa_icon('paragraph') + = material_symbol('format_paragraph') .permissions-list__item__text .permissions-list__item__text__title = t('filters.index.keywords', count: filter.keywords.size) @@ -25,7 +25,7 @@ - unless filter.statuses.empty? %li.permissions-list__item .permissions-list__item__icon - = fa_icon('comment') + = material_symbol('chat') .permissions-list__item__text .permissions-list__item__text__title = t('filters.index.statuses', count: filter.statuses.size) @@ -37,5 +37,5 @@ = t('filters.index.contexts', contexts: filter.context.map { |context| I18n.t("filters.contexts.#{context}") }.join(', ')) %div - = table_link_to 'pencil', t('filters.edit.title'), edit_filter_path(filter) - = table_link_to 'times', t('filters.index.delete'), filter_path(filter), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } + = table_link_to 'edit', t('filters.edit.title'), edit_filter_path(filter) + = table_link_to 'close', t('filters.index.delete'), filter_path(filter), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } diff --git a/app/views/filters/_filter_fields.html.haml b/app/views/filters/_filter_fields.html.haml index 42cec9431f..171531dc31 100644 --- a/app/views/filters/_filter_fields.html.haml +++ b/app/views/filters/_filter_fields.html.haml @@ -66,4 +66,4 @@ %tr %td{ colspan: 3 } = link_to_add_association f, :keywords, class: 'table-action-link', partial: 'keyword_fields', 'data-association-insertion-node': '.keywords-table tbody', 'data-association-insertion-method': 'append' do - = safe_join([fa_icon('plus'), t('filters.edit.add_keyword')]) + = safe_join([material_symbol('add'), t('filters.edit.add_keyword')]) diff --git a/app/views/filters/_keyword_fields.html.haml b/app/views/filters/_keyword_fields.html.haml index eedd514ef5..136ab1653d 100644 --- a/app/views/filters/_keyword_fields.html.haml +++ b/app/views/filters/_keyword_fields.html.haml @@ -5,4 +5,4 @@ %td = f.hidden_field :id if f.object&.persisted? # Required so Rails doesn't put the field outside of the = link_to_remove_association(f, class: 'table-action-link') do - = safe_join([fa_icon('times'), t('filters.index.delete')]) + = safe_join([material_symbol('close'), t('filters.index.delete')]) diff --git a/app/views/filters/statuses/_status_filter.html.haml b/app/views/filters/statuses/_status_filter.html.haml index 9999dcda81..31aa9ec237 100644 --- a/app/views/filters/statuses/_status_filter.html.haml +++ b/app/views/filters/statuses/_status_filter.html.haml @@ -15,7 +15,7 @@ - status.ordered_media_attachments.each do |media_attachment| %abbr{ title: media_attachment.description } - = fa_icon 'link' + = material_symbol 'link' = media_attachment.file_file_name .detailed-status__meta @@ -33,5 +33,5 @@ = t("statuses.visibilities.#{status.visibility}") - if status.sensitive? · - = fa_icon('eye-slash fw') + = material_symbol 'visibility_off' = t('stream_entries.sensitive_content') diff --git a/app/views/filters/statuses/index.html.haml b/app/views/filters/statuses/index.html.haml index 915ec59caf..f9f94eee90 100644 --- a/app/views/filters/statuses/index.html.haml +++ b/app/views/filters/statuses/index.html.haml @@ -6,7 +6,7 @@ .filters .back-link = link_to edit_filter_path(@filter) do - = fa_icon 'chevron-left fw' + = material_symbol 'chevron_left' = t('filters.statuses.back_to_filter') %p.hint= t('filters.statuses.index.hint') @@ -25,7 +25,7 @@ = check_box_tag :batch_checkbox_all, nil, false .batch-table__toolbar__actions - unless @status_filters.empty? - = f.button safe_join([fa_icon('times'), t('filters.statuses.batch.remove')]), name: :remove, class: 'table-action-link', type: :submit + = f.button safe_join([material_symbol('close'), t('filters.statuses.batch.remove')]), name: :remove, class: 'table-action-link', type: :submit .batch-table__body - if @status_filters.empty? = nothing_here 'nothing-here--under-tabs' diff --git a/app/views/invites/_invite.html.haml b/app/views/invites/_invite.html.haml index 62799ca5be..94e1a71125 100644 --- a/app/views/invites/_invite.html.haml +++ b/app/views/invites/_invite.html.haml @@ -7,7 +7,7 @@ - if invite.valid_for_use? %td - = fa_icon 'user fw' + = material_symbol 'person' = invite.uses = " / #{invite.max_uses}" unless invite.max_uses.nil? %td @@ -22,4 +22,4 @@ %td - if invite.valid_for_use? && policy(invite).destroy? - = table_link_to 'times', t('invites.delete'), invite_path(invite), method: :delete + = table_link_to 'close', t('invites.delete'), invite_path(invite), method: :delete diff --git a/app/views/kaminari/_next_page.html.haml b/app/views/kaminari/_next_page.html.haml index c44aea1f11..5f27f4c8ee 100644 --- a/app/views/kaminari/_next_page.html.haml +++ b/app/views/kaminari/_next_page.html.haml @@ -8,4 +8,4 @@ remote: data-remote %span.next - = link_to_unless current_page.last?, safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), url, rel: 'next', remote: remote + = link_to_unless current_page.last?, safe_join([t('pagination.next'), material_symbol('chevron_right')], ' '), url, rel: 'next', remote: remote diff --git a/app/views/kaminari/_prev_page.html.haml b/app/views/kaminari/_prev_page.html.haml index 284d6223b8..c5584f6a81 100644 --- a/app/views/kaminari/_prev_page.html.haml +++ b/app/views/kaminari/_prev_page.html.haml @@ -7,4 +7,4 @@ per_page: number of items to fetch per page remote: data-remote %span.prev - = link_to_unless current_page.first?, safe_join([fa_icon('chevron-left'), t('pagination.prev')], ' '), url, rel: 'prev', remote: remote + = link_to_unless current_page.first?, safe_join([material_symbol('chevron_left'), t('pagination.prev')], ' '), url, rel: 'prev', remote: remote diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 0c0512e812..a6b34c8a36 100755 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -25,7 +25,6 @@ %title= html_title - = stylesheet_pack_tag 'common', media: 'all', crossorigin: 'anonymous' = theme_style_tags current_theme -# Needed for the wicg-inert polyfill. It needs to be on it's own