diff --git a/Gemfile.lock b/Gemfile.lock index 131f4933c7..2ccbae6b1b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -171,7 +171,7 @@ GEM css_parser (1.21.1) addressable csv (3.3.4) - database_cleaner-active_record (2.2.0) + database_cleaner-active_record (2.2.1) activerecord (>= 5.a) database_cleaner-core (~> 2.0.0) database_cleaner-core (2.0.1) diff --git a/app/controllers/admin/rules_controller.rb b/app/controllers/admin/rules_controller.rb index 289b6a98c3..837eb91489 100644 --- a/app/controllers/admin/rules_controller.rb +++ b/app/controllers/admin/rules_controller.rb @@ -2,13 +2,17 @@ module Admin class RulesController < BaseController - before_action :set_rule, except: [:index, :create] + before_action :set_rule, except: [:index, :new, :create] def index authorize :rule, :index? @rules = Rule.ordered - @rule = Rule.new + end + + def new + authorize :rule, :create? + @rule = Rule.new end def edit @@ -24,7 +28,7 @@ module Admin redirect_to admin_rules_path else @rules = Rule.ordered - render :index + render :new end end diff --git a/app/javascript/mastodon/actions/accounts_familiar_followers.ts b/app/javascript/mastodon/actions/accounts_familiar_followers.ts new file mode 100644 index 0000000000..48968793e4 --- /dev/null +++ b/app/javascript/mastodon/actions/accounts_familiar_followers.ts @@ -0,0 +1,22 @@ +import { createDataLoadingThunk } from 'mastodon/store/typed_functions'; + +import { apiGetFamiliarFollowers } from '../api/accounts'; + +import { importFetchedAccounts } from './importer'; + +export const fetchAccountsFamiliarFollowers = createDataLoadingThunk( + 'accounts_familiar_followers/fetch', + ({ id }: { id: string }) => apiGetFamiliarFollowers(id), + ([data], { dispatch }) => { + if (!data) { + return null; + } + + dispatch(importFetchedAccounts(data.accounts)); + + return { + id: data.id, + accountIds: data.accounts.map((account) => account.id), + }; + }, +); diff --git a/app/javascript/mastodon/api.ts b/app/javascript/mastodon/api.ts index a41b058d2c..dc9c20b508 100644 --- a/app/javascript/mastodon/api.ts +++ b/app/javascript/mastodon/api.ts @@ -83,6 +83,7 @@ export default function api(withAuthorization = true) { return instance; } +type ApiUrl = `v${1 | 2}/${string}`; type RequestParamsOrData = Record; export async function apiRequest( @@ -105,28 +106,28 @@ export async function apiRequest( } export async function apiRequestGet( - url: string, + url: ApiUrl, params?: RequestParamsOrData, ) { return apiRequest('GET', url, { params }); } export async function apiRequestPost( - url: string, + url: ApiUrl, data?: RequestParamsOrData, ) { return apiRequest('POST', url, { data }); } export async function apiRequestPut( - url: string, + url: ApiUrl, data?: RequestParamsOrData, ) { return apiRequest('PUT', url, { data }); } export async function apiRequestDelete( - url: string, + url: ApiUrl, params?: RequestParamsOrData, ) { return apiRequest('DELETE', url, { params }); diff --git a/app/javascript/mastodon/api/accounts.ts b/app/javascript/mastodon/api/accounts.ts index 074bcffaa1..fb99978cad 100644 --- a/app/javascript/mastodon/api/accounts.ts +++ b/app/javascript/mastodon/api/accounts.ts @@ -1,5 +1,8 @@ import { apiRequestPost, apiRequestGet } from 'mastodon/api'; -import type { ApiAccountJSON } from 'mastodon/api_types/accounts'; +import type { + ApiAccountJSON, + ApiFamiliarFollowersJSON, +} from 'mastodon/api_types/accounts'; import type { ApiRelationshipJSON } from 'mastodon/api_types/relationships'; import type { ApiHashtagJSON } from 'mastodon/api_types/tags'; @@ -31,3 +34,8 @@ export const apiGetFeaturedTags = (id: string) => export const apiGetEndorsedAccounts = (id: string) => apiRequestGet(`v1/accounts/${id}/endorsements`); + +export const apiGetFamiliarFollowers = (id: string) => + apiRequestGet('v1/accounts/familiar_followers', { + id, + }); diff --git a/app/javascript/mastodon/api/polls.ts b/app/javascript/mastodon/api/polls.ts index cb659986f5..d1a97c53c5 100644 --- a/app/javascript/mastodon/api/polls.ts +++ b/app/javascript/mastodon/api/polls.ts @@ -2,9 +2,9 @@ import { apiRequestGet, apiRequestPost } from 'mastodon/api'; import type { ApiPollJSON } from 'mastodon/api_types/polls'; export const apiGetPoll = (pollId: string) => - apiRequestGet(`/v1/polls/${pollId}`); + apiRequestGet(`v1/polls/${pollId}`); export const apiPollVote = (pollId: string, choices: string[]) => - apiRequestPost(`/v1/polls/${pollId}/votes`, { + apiRequestPost(`v1/polls/${pollId}/votes`, { choices, }); diff --git a/app/javascript/mastodon/api_types/accounts.ts b/app/javascript/mastodon/api_types/accounts.ts index 3f8b27497f..b93054a1f6 100644 --- a/app/javascript/mastodon/api_types/accounts.ts +++ b/app/javascript/mastodon/api_types/accounts.ts @@ -54,3 +54,9 @@ export interface ApiMutedAccountJSON extends BaseApiAccountJSON { // For now, we have the same type representing both `Account` and `MutedAccount` // objects, but we should refactor this in the future. export type ApiAccountJSON = ApiMutedAccountJSON; + +// See app/serializers/rest/familiar_followers_serializer.rb +export type ApiFamiliarFollowersJSON = { + id: string; + accounts: ApiAccountJSON[]; +}[]; diff --git a/app/javascript/mastodon/features/notifications_v2/components/avatar_group.tsx b/app/javascript/mastodon/components/avatar_group.tsx similarity index 66% rename from app/javascript/mastodon/features/notifications_v2/components/avatar_group.tsx rename to app/javascript/mastodon/components/avatar_group.tsx index b5da8914a1..4f583defcf 100644 --- a/app/javascript/mastodon/features/notifications_v2/components/avatar_group.tsx +++ b/app/javascript/mastodon/components/avatar_group.tsx @@ -1,7 +1,7 @@ +import classNames from 'classnames'; import { Link } from 'react-router-dom'; import { Avatar } from 'mastodon/components/avatar'; -import { NOTIFICATIONS_GROUP_MAX_AVATARS } from 'mastodon/models/notification_group'; import { useAppSelector } from 'mastodon/store'; const AvatarWrapper: React.FC<{ accountId: string }> = ({ accountId }) => { @@ -20,11 +20,14 @@ const AvatarWrapper: React.FC<{ accountId: string }> = ({ accountId }) => { ); }; -export const AvatarGroup: React.FC<{ accountIds: string[] }> = ({ - accountIds, -}) => ( -
- {accountIds.slice(0, NOTIFICATIONS_GROUP_MAX_AVATARS).map((accountId) => ( +export const AvatarGroup: React.FC<{ + accountIds: string[]; + compact?: boolean; +}> = ({ accountIds, compact = false }) => ( +
+ {accountIds.map((accountId) => ( ))}
diff --git a/app/javascript/mastodon/features/account_timeline/components/account_header.tsx b/app/javascript/mastodon/features/account_timeline/components/account_header.tsx index b7908cc8d3..d26286e4fe 100644 --- a/app/javascript/mastodon/features/account_timeline/components/account_header.tsx +++ b/app/javascript/mastodon/features/account_timeline/components/account_header.tsx @@ -59,6 +59,7 @@ import { import { getAccountHidden } from 'mastodon/selectors/accounts'; import { useAppSelector, useAppDispatch } from 'mastodon/store'; +import { FamiliarFollowers } from './familiar_followers'; import { MemorialNote } from './memorial_note'; import { MovedNote } from './moved_note'; @@ -1022,6 +1023,7 @@ export const AccountHeader: React.FC<{ />
+ {signedIn && } )} diff --git a/app/javascript/mastodon/features/account_timeline/components/familiar_followers.tsx b/app/javascript/mastodon/features/account_timeline/components/familiar_followers.tsx new file mode 100644 index 0000000000..b3b97c317b --- /dev/null +++ b/app/javascript/mastodon/features/account_timeline/components/familiar_followers.tsx @@ -0,0 +1,84 @@ +import { useEffect } from 'react'; + +import { FormattedMessage } from 'react-intl'; + +import { Link } from 'react-router-dom'; + +import { fetchAccountsFamiliarFollowers } from '@/mastodon/actions/accounts_familiar_followers'; +import { AvatarGroup } from '@/mastodon/components/avatar_group'; +import type { Account } from '@/mastodon/models/account'; +import { getAccountFamiliarFollowers } from '@/mastodon/selectors/accounts'; +import { useAppDispatch, useAppSelector } from '@/mastodon/store'; + +const AccountLink: React.FC<{ account?: Account }> = ({ account }) => ( + + {account?.display_name} + +); + +const FamiliarFollowersReadout: React.FC<{ familiarFollowers: Account[] }> = ({ + familiarFollowers, +}) => { + const messageData = { + name1: , + name2: , + othersCount: familiarFollowers.length - 2, + }; + + if (familiarFollowers.length === 1) { + return ( + + ); + } else if (familiarFollowers.length === 2) { + return ( + + ); + } else { + return ( + + ); + } +}; + +export const FamiliarFollowers: React.FC<{ accountId: string }> = ({ + accountId, +}) => { + const dispatch = useAppDispatch(); + const familiarFollowers = useAppSelector((state) => + getAccountFamiliarFollowers(state, accountId), + ); + + const hasNoData = familiarFollowers === null; + + useEffect(() => { + if (hasNoData) { + void dispatch(fetchAccountsFamiliarFollowers({ id: accountId })); + } + }, [dispatch, accountId, hasNoData]); + + if (hasNoData || familiarFollowers.length === 0) { + return null; + } + + return ( +
+ account.id)} + /> + +
+ ); +}; diff --git a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx index 2bd6af4cf4..1d96427f6b 100644 --- a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx +++ b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx @@ -12,14 +12,10 @@ import Overlay from 'react-overlays/Overlay'; import MoodIcon from '@/material-icons/400-20px/mood.svg?react'; import { IconButton } from 'mastodon/components/icon_button'; -import emojiCompressed from 'mastodon/features/emoji/emoji_compressed'; -import { assetHost } from 'mastodon/utils/config'; import { buildCustomEmojis, categoriesFromEmojis } from '../../emoji/emoji'; import { EmojiPicker as EmojiPickerAsync } from '../../ui/util/async-components'; -const nimblePickerData = emojiCompressed[5]; - const messages = defineMessages({ emoji: { id: 'emoji_button.label', defaultMessage: 'Insert emoji' }, emoji_search: { id: 'emoji_button.search', defaultMessage: 'Search...' }, @@ -40,19 +36,11 @@ let EmojiPicker, Emoji; // load asynchronously const listenerOptions = supportsPassiveEvents ? { passive: true, capture: true } : true; -const backgroundImageFn = () => `${assetHost}/emoji/sheet_15_1.png`; - const notFoundFn = () => (
@@ -110,12 +98,12 @@ class ModifierPickerMenu extends PureComponent { return (
- - - - - - + + + + + +
); } @@ -150,7 +138,7 @@ class ModifierPicker extends PureComponent { return (
- +
); @@ -286,16 +274,11 @@ class EmojiPickerMenuImpl extends PureComponent { return (
`${assetHost}/emoji/sheet_15_1.png`; + +const Emoji = ({ + set = 'twitter', + sheetSize = 32, + sheetColumns = 62, + sheetRows = 62, + backgroundImageFn = backgroundImageFnDefault, + ...props +}: EmojiProps) => { + return ( + + ); +}; + +const Picker = ({ + set = 'twitter', + sheetSize = 32, + sheetColumns = 62, + sheetRows = 62, + backgroundImageFn = backgroundImageFnDefault, + ...props +}: PickerProps) => { + return ( + + ); +}; + +export { Picker, Emoji }; diff --git a/app/javascript/mastodon/features/notifications_v2/components/notification_group_with_status.tsx b/app/javascript/mastodon/features/notifications_v2/components/notification_group_with_status.tsx index 861556620f..cbb0b85f1d 100644 --- a/app/javascript/mastodon/features/notifications_v2/components/notification_group_with_status.tsx +++ b/app/javascript/mastodon/features/notifications_v2/components/notification_group_with_status.tsx @@ -7,12 +7,13 @@ import { HotKeys } from 'react-hotkeys'; import { replyComposeById } from 'mastodon/actions/compose'; import { navigateToStatus } from 'mastodon/actions/statuses'; +import { AvatarGroup } from 'mastodon/components/avatar_group'; import type { IconProp } from 'mastodon/components/icon'; import { Icon } from 'mastodon/components/icon'; import { RelativeTimestamp } from 'mastodon/components/relative_timestamp'; +import { NOTIFICATIONS_GROUP_MAX_AVATARS } from 'mastodon/models/notification_group'; import { useAppSelector, useAppDispatch } from 'mastodon/store'; -import { AvatarGroup } from './avatar_group'; import { DisplayedName } from './displayed_name'; import { EmbeddedStatus } from './embedded_status'; @@ -98,7 +99,12 @@ export const NotificationGroupWithStatus: React.FC<{
- + {actions && (
{actions}
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 43b1135f93..72ff7ea333 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -24,10 +24,12 @@ "account.copy": "Копиране на връзка към профила", "account.direct": "Частно споменаване на @{name}", "account.disable_notifications": "Спиране на известяване при публикуване от @{name}", + "account.domain_blocking": "Блокиране на домейн", "account.edit_profile": "Редактиране на профила", "account.enable_notifications": "Известяване при публикуване от @{name}", "account.endorse": "Представи в профила", "account.featured": "Препоръчано", + "account.featured.accounts": "Профили", "account.featured.hashtags": "Хаштагове", "account.featured.posts": "Публикации", "account.featured_tags.last_status_at": "Последна публикация на {date}", @@ -40,6 +42,7 @@ "account.following": "Последвано", "account.following_counter": "{count, plural, one {{counter} последван} other {{counter} последвани}}", "account.follows.empty": "Потребителят още никого не следва.", + "account.follows_you": "Следва ви", "account.go_to_profile": "Към профила", "account.hide_reblogs": "Скриване на подсилвания от @{name}", "account.in_memoriam": "В памет на.", @@ -54,13 +57,17 @@ "account.mute_notifications_short": "Заглушаване на известията", "account.mute_short": "Заглушаване", "account.muted": "Заглушено", + "account.muting": "Заглушаване", + "account.mutual": "Взаимно се следвате", "account.no_bio": "Няма представен опис.", "account.open_original_page": "Отваряне на първообразната страница", "account.posts": "Публикации", "account.posts_with_replies": "Публ. и отговори", + "account.remove_from_followers": "Премахване на {name} от последователи", "account.report": "Докладване на @{name}", "account.requested": "Чака се одобрение. Щракнете за отмяна на заявката за последване", "account.requested_follow": "{name} поиска да ви последва", + "account.requests_to_follow_you": "Заявки да ви последват", "account.share": "Споделяне на профила на @{name}", "account.show_reblogs": "Показване на подсилвания от @{name}", "account.statuses_counter": "{count, plural, one {{counter} публикация} other {{counter} публикации}}", @@ -227,6 +234,9 @@ "confirmations.redraft.confirm": "Изтриване и преработване", "confirmations.redraft.message": "Наистина ли искате да изтриете тази публикация и да я направите чернова? Означаванията като любими и подсилванията ще се изгубят, а и отговорите към първоначалната публикация ще осиротеят.", "confirmations.redraft.title": "Изтривате и преработвате ли публикацията?", + "confirmations.remove_from_followers.confirm": "Премахване на последовател", + "confirmations.remove_from_followers.message": "{name} ще спре да ви следва. Наистина ли искате да продължите?", + "confirmations.remove_from_followers.title": "Премахвате ли последовател?", "confirmations.reply.confirm": "Отговор", "confirmations.reply.message": "Отговарянето сега ще замени съобщението, което в момента съставяте. Сигурни ли сте, че искате да продължите?", "confirmations.reply.title": "Презаписвате ли публикацията?", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 8e93da5b82..d327f0965b 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -25,6 +25,9 @@ "account.edit_profile": "Kemmañ ar profil", "account.enable_notifications": "Ma c'hemenn pa vez embannet traoù gant @{name}", "account.endorse": "Lakaat war-wel war ar profil", + "account.familiar_followers_many": "Heuilhet gant {name1}, {name2}, {othersCount, plural, one {hag # all} two {ha # all} few {ha # all} many {ha(g) # all} other {hag(g) # all}}", + "account.familiar_followers_one": "Heuilhet gant {name1}", + "account.familiar_followers_two": "Heuilhet gant {name1} ha {name2}", "account.featured_tags.last_status_at": "Toud diwezhañ : {date}", "account.featured_tags.last_status_never": "Embannadur ebet", "account.follow": "Heuliañ", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 1e8037dff3..679de9e724 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -28,6 +28,9 @@ "account.edit_profile": "Upravit profil", "account.enable_notifications": "Oznamovat mi příspěvky @{name}", "account.endorse": "Zvýraznit na profilu", + "account.familiar_followers_many": "Sleduje je {name1}, {name2} a {othersCount, plural, one {# další} few {# další} many {# dalších} other {# dalších}}", + "account.familiar_followers_one": "Sleduje je {name1}", + "account.familiar_followers_two": "Sleduje je {name1} a {name2}", "account.featured": "Zvýrazněné", "account.featured.accounts": "Profily", "account.featured.hashtags": "Hashtagy", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 143734a38c..e50023c346 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -28,6 +28,9 @@ "account.edit_profile": "Redigér profil", "account.enable_notifications": "Advisér mig, når @{name} poster", "account.endorse": "Fremhæv på profil", + "account.familiar_followers_many": "Følges af {name1}, {name2} og {othersCount, plural, one {# mere} other {# mere}}", + "account.familiar_followers_one": "Følges af {name1}", + "account.familiar_followers_two": "Følges af {name1} og {name2}", "account.featured": "Fremhævet", "account.featured.accounts": "Profiler", "account.featured.hashtags": "Hashtags", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index cf6f4786e7..2464182d52 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -28,6 +28,9 @@ "account.edit_profile": "Profil bearbeiten", "account.enable_notifications": "Benachrichtige mich wenn @{name} etwas postet", "account.endorse": "Im Profil vorstellen", + "account.familiar_followers_many": "Gefolgt von {name1}, {name2} und {othersCount, plural, one {# Profil} other {# weiteren Profilen}}", + "account.familiar_followers_one": "Gefolgt von {name1}", + "account.familiar_followers_two": "Gefolgt von {name1} und {name2}", "account.featured": "Vorgestellt", "account.featured.accounts": "Profile", "account.featured.hashtags": "Hashtags", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 3d6e166498..45bc6109b7 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -28,6 +28,9 @@ "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.familiar_followers_many": "Followed by {name1}, {name2}, and {othersCount, plural, one {# other} other {# others}}", + "account.familiar_followers_one": "Followed by {name1}", + "account.familiar_followers_two": "Followed by {name1} and {name2}", "account.featured": "Featured", "account.featured.accounts": "Profiles", "account.featured.hashtags": "Hashtags", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index e45e55bbd9..9e90b91965 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -24,9 +24,12 @@ "account.copy": "Kopii ligilon al profilo", "account.direct": "Private mencii @{name}", "account.disable_notifications": "Ĉesu sciigi min kiam @{name} afiŝas", + "account.domain_blocking": "Blokas domajnon", "account.edit_profile": "Redakti la profilon", "account.enable_notifications": "Sciigu min kiam @{name} afiŝos", "account.endorse": "Montri en profilo", + "account.featured": "Montrita", + "account.featured.accounts": "Profiloj", "account.featured.hashtags": "Kradvortoj", "account.featured.posts": "Afiŝoj", "account.featured_tags.last_status_at": "Lasta afîŝo je {date}", @@ -39,13 +42,14 @@ "account.following": "Sekvatoj", "account.following_counter": "{count, plural, one {{counter} sekvato} other {{counter} sekvatoj}}", "account.follows.empty": "La uzanto ankoraŭ ne sekvas iun ajn.", + "account.follows_you": "Sekvas vin", "account.go_to_profile": "Iri al profilo", "account.hide_reblogs": "Kaŝi diskonigojn de @{name}", "account.in_memoriam": "Memore.", "account.joined_short": "Aliĝis", "account.languages": "Ŝanĝi la abonitajn lingvojn", - "account.link_verified_on": "Propreco de tiu ligilo estis konfirmita je {date}", - "account.locked_info": "Tiu konto estas privatigita. La posedanto mane akceptas tiun, kiu povas sekvi rin.", + "account.link_verified_on": "La posedanto de tiu ligilo estis kontrolita je {date}", + "account.locked_info": "La privateco de tiu konto estas elektita kiel fermita. La posedanto povas mane akcepti tiun, kiu povas sekvi rin.", "account.media": "Aŭdovidaĵoj", "account.mention": "Mencii @{name}", "account.moved_to": "{name} indikis, ke ria nova konto estas nun:", @@ -53,14 +57,17 @@ "account.mute_notifications_short": "Silentigu sciigojn", "account.mute_short": "Silentigu", "account.muted": "Silentigita", + "account.muting": "Silentas", "account.mutual": "Vi sekvas unu la alian", "account.no_bio": "Neniu priskribo estas provizita.", "account.open_original_page": "Malfermi la originalan paĝon", "account.posts": "Afiŝoj", "account.posts_with_replies": "Afiŝoj kaj respondoj", + "account.remove_from_followers": "Forigi {name}-n de sekvantoj", "account.report": "Raporti @{name}", "account.requested": "Atendo de aprobo. Klaku por nuligi la peton por sekvado", "account.requested_follow": "{name} petis sekvi vin", + "account.requests_to_follow_you": "Petoj sekvi vin", "account.share": "Diskonigi la profilon de @{name}", "account.show_reblogs": "Montri diskonigojn de @{name}", "account.statuses_counter": "{count, plural,one {{counter} afiŝo} other {{counter} afiŝoj}}", @@ -69,24 +76,24 @@ "account.unblock_domain_short": "Malbloki", "account.unblock_short": "Malbloki", "account.unendorse": "Ne plu rekomendi ĉe la profilo", - "account.unfollow": "Ĉesi sekvi", - "account.unmute": "Ne plu silentigi @{name}", + "account.unfollow": "Ne plu sekvi", + "account.unmute": "Malsilentigi @{name}", "account.unmute_notifications_short": "Malsilentigu sciigojn", "account.unmute_short": "Ne plu silentigi", "account_note.placeholder": "Alklaku por aldoni noton", - "admin.dashboard.daily_retention": "Uzantoretenprocento lau tag post registro", - "admin.dashboard.monthly_retention": "Uzantoretenprocento lau monato post registro", - "admin.dashboard.retention.average": "Averaĝe", + "admin.dashboard.daily_retention": "Uzantoretenprocento laŭ tag post registro", + "admin.dashboard.monthly_retention": "Uzantoretenprocento laŭ monato post registro", + "admin.dashboard.retention.average": "Averaĝa", "admin.dashboard.retention.cohort": "Monato de registriĝo", "admin.dashboard.retention.cohort_size": "Novaj uzantoj", - "admin.impact_report.instance_accounts": "Kontoj kaj profiloj tio forigus", + "admin.impact_report.instance_accounts": "Kontojn kaj profilojn tio forigus", "admin.impact_report.instance_followers": "Sekvantojn niaj uzantoj perdus", "admin.impact_report.instance_follows": "Sekvantojn ties uzantoj perdus", "admin.impact_report.title": "Influa reporto", "alert.rate_limited.message": "Bonvolu reprovi poste {retry_time, time, medium}.", "alert.rate_limited.title": "Mesaĝkvante limigita", "alert.unexpected.message": "Neatendita eraro okazis.", - "alert.unexpected.title": "Aj!", + "alert.unexpected.title": "Ups!", "alt_text_badge.title": "Alt-teksto", "alt_text_modal.add_alt_text": "Aldoni alttekston", "alt_text_modal.add_text_from_image": "Aldoni tekston de bildo", @@ -96,9 +103,9 @@ "alt_text_modal.describe_for_people_with_visual_impairments": "Priskribi ĉi tion por homoj kun vidaj malkapabloj…", "alt_text_modal.done": "Farita", "announcement.announcement": "Anonco", - "annual_report.summary.archetype.booster": "La Ĉasanto de Mojoso", + "annual_report.summary.archetype.booster": "La ĉasanto de mojoso", "annual_report.summary.archetype.lurker": "La vidanto", - "annual_report.summary.archetype.oracle": "La Orakolo", + "annual_report.summary.archetype.oracle": "La orakolo", "annual_report.summary.archetype.pollster": "La balotenketisto", "annual_report.summary.archetype.replier": "La plej societema", "annual_report.summary.followers.followers": "sekvantoj", @@ -108,11 +115,11 @@ "annual_report.summary.highlighted_post.by_reblogs": "plej diskonigita afiŝo", "annual_report.summary.highlighted_post.by_replies": "afiŝo kun la plej multaj respondoj", "annual_report.summary.highlighted_post.possessive": "de {name}", - "annual_report.summary.most_used_app.most_used_app": "plej uzita apo", + "annual_report.summary.most_used_app.most_used_app": "plej uzita aplikaĵo", "annual_report.summary.most_used_hashtag.most_used_hashtag": "plej uzata kradvorto", "annual_report.summary.most_used_hashtag.none": "Nenio", "annual_report.summary.new_posts.new_posts": "novaj afiŝoj", - "annual_report.summary.percentile.text": "Tio metas vin en la plejde {domain} uzantoj.", + "annual_report.summary.percentile.text": "Tion metas vin en la plejde {domain} uzantoj.", "annual_report.summary.percentile.we_wont_tell_bernie": "Ni ne diros al Zamenhof.", "annual_report.summary.thanks": "Dankon pro esti parto de Mastodon!", "attachments_list.unprocessed": "(neprilaborita)", @@ -144,7 +151,7 @@ "closed_registrations_modal.description": "Krei konton ĉe {domain} aktuale ne eblas, tamen bonvole rimarku, ke vi ne bezonas konton specife ĉe {domain} por uzi Mastodon.", "closed_registrations_modal.find_another_server": "Trovi alian servilon", "closed_registrations_modal.preamble": "Mastodon estas malcentraliza, do sendepende de tio, kie vi kreas vian konton, vi povos sekvi kaj komuniki kun ĉiuj ajn el ĉi tiu servilo. Vi eĉ povas mem starigi propran servilon!", - "closed_registrations_modal.title": "Krei konton en Mastodon", + "closed_registrations_modal.title": "Registriĝi en Mastodon", "column.about": "Pri", "column.blocks": "Blokitaj uzantoj", "column.bookmarks": "Legosignoj", @@ -162,18 +169,19 @@ "column.lists": "Listoj", "column.mutes": "Silentigitaj uzantoj", "column.notifications": "Sciigoj", - "column.public": "Fratara templinio", + "column.pins": "Montritaj afiŝoj", + "column.public": "Fratara tempolinio", "column_back_button.label": "Reveni", - "column_header.hide_settings": "Kaŝi la agordojn", + "column_header.hide_settings": "Kaŝi agordojn", "column_header.moveLeft_settings": "Movi kolumnon maldekstren", "column_header.moveRight_settings": "Movi kolumnon dekstren", "column_header.pin": "Fiksi", - "column_header.show_settings": "Montri la agordojn", + "column_header.show_settings": "Montri agordojn", "column_header.unpin": "Malfiksi", "column_search.cancel": "Nuligi", "column_subheading.settings": "Agordoj", "community.column_settings.local_only": "Nur loka", - "community.column_settings.media_only": "Nur vidaŭdaĵoj", + "community.column_settings.media_only": "Nur aŭdovidaĵoj", "community.column_settings.remote_only": "Nur fora", "compose.language.change": "Ŝanĝi lingvon", "compose.language.search": "Serĉi lingvojn...", @@ -183,18 +191,18 @@ "compose_form.direct_message_warning_learn_more": "Lerni pli", "compose_form.encryption_warning": "La afiŝoj en Mastodon ne estas tutvoje ĉifritaj. Ne kunhavigu tiklajn informojn ĉe Mastodon.", "compose_form.hashtag_warning": "Ĉi tiu afiŝo ne estos listigita en neniu kradvorto ĉar ĝi ne estas publika. Nur publikaj afiŝoj povas esti serĉitaj per kradvortoj.", - "compose_form.lock_disclaimer": "Via konto ne estas {locked}. Iu ajn povas sekvi vin por vidi viajn afiŝojn nur al la sekvantoj.", + "compose_form.lock_disclaimer": "Via konta ne estas {locked}. Iu ajn povas sekvi vin por vidi viajn mesaĝojn, kiuj estas nur por sekvantoj.", "compose_form.lock_disclaimer.lock": "ŝlosita", - "compose_form.placeholder": "Kion vi pensas?", + "compose_form.placeholder": "Pri kio vi pensas?", "compose_form.poll.duration": "Daŭro de la balotenketo", - "compose_form.poll.multiple": "Multobla elekto", + "compose_form.poll.multiple": "Multebla elekto", "compose_form.poll.option_placeholder": "Opcio {number}", "compose_form.poll.single": "Ununura elekto", "compose_form.poll.switch_to_multiple": "Ŝanĝi la balotenketon por permesi multajn elektojn", "compose_form.poll.switch_to_single": "Ŝanĝi la balotenketon por permesi unu solan elekton", "compose_form.poll.type": "Stilo", - "compose_form.publish": "Afiŝo", - "compose_form.publish_form": "Nova afiŝo", + "compose_form.publish": "Afiŝi", + "compose_form.publish_form": "Afiŝi", "compose_form.reply": "Respondi", "compose_form.save_changes": "Ĝisdatigi", "compose_form.spoiler.marked": "Forigi la averton de enhavo", @@ -227,6 +235,9 @@ "confirmations.redraft.confirm": "Forigi kaj reskribi", "confirmations.redraft.message": "Ĉu vi certas ke vi volas forigi tiun afiŝon kaj reskribi ĝin? Ĉiuj diskonigoj kaj stelumoj estos perditaj, kaj respondoj al la originala mesaĝo estos senparentaj.", "confirmations.redraft.title": "Ĉu forigi kaj redakcii afiŝon?", + "confirmations.remove_from_followers.confirm": "Forigi sekvanton", + "confirmations.remove_from_followers.message": "{name} ne plu sekvos vin. Ĉu vi certas ke vi volas daŭri?", + "confirmations.remove_from_followers.title": "Forigi sekvanton?", "confirmations.reply.confirm": "Respondi", "confirmations.reply.message": "Respondi nun anstataŭigos la skribatan afiŝon. Ĉu vi certas, ke vi volas daŭrigi?", "confirmations.reply.title": "Ĉu superskribi afiŝon?", @@ -251,7 +262,7 @@ "disabled_account_banner.text": "Via konto {disabledAccount} estas nune malvalidigita.", "dismissable_banner.community_timeline": "Jen la plej novaj publikaj afiŝoj de uzantoj, kies kontojn gastigas {domain}.", "dismissable_banner.dismiss": "Eksigi", - "dismissable_banner.explore_links": "Ĉi tiuj revuaĵoj plejkunhaviĝas en la fediverso hodiaŭ. Pli novaj revuaĵoj afiŝis de pli da homoj metis pli alte.", + "dismissable_banner.explore_links": "Ĉi tiuj revuaĵoj kunhaviĝas pleje en la fediverso hodiaŭ. Pli novaj revuaĵoj afiŝis de pli da homoj metis pli alte.", "dismissable_banner.explore_statuses": "Ĉi tiuj afiŝoj populariĝas sur la fediverso hodiaŭ. Pli novaj afiŝoj kun pli da diskonigoj kaj stemuloj estas rangigitaj pli alte.", "dismissable_banner.explore_tags": "Ĉi tiuj kradvortoj populariĝas sur la fediverso hodiaŭ. Kradvortoj, kiuj estas uzataj de pli malsamaj homoj, estas rangigitaj pli alte.", "dismissable_banner.public_timeline": "Ĉi tiuj estas la plej ĵusaj publikaj afiŝoj de homoj en la fediverso, kiujn la homoj en {domain} sekvas.", @@ -260,11 +271,11 @@ "domain_block_modal.they_can_interact_with_old_posts": "Homoj de ĉi tiu servilo povas interagi kun viaj malnovaj afiŝoj.", "domain_block_modal.they_cant_follow": "Neniu el ĉi tiu servilo povas sekvi vin.", "domain_block_modal.they_wont_know": "Ili ne scios, ke ili estas blokitaj.", - "domain_block_modal.title": "Ĉu bloki la domajnon?", + "domain_block_modal.title": "Ĉu bloki domajnon?", "domain_block_modal.you_will_lose_num_followers": "Vi perdos {followersCount, plural, one {{followersCountDisplay} sekvanton} other {{followersCountDisplay} sekvantojn}} kaj {followingCount, plural, one {{followingCountDisplay} homon, kiu vi sekvas} other {{followingCountDisplay} homojn, kiuj vi sekvas}}.", "domain_block_modal.you_will_lose_relationships": "Vi perdos ĉiujn sekvantojn kaj homojn, kiujn vi sekvas de ĉi tiu servilo.", "domain_block_modal.you_wont_see_posts": "Vi ne vidos afiŝojn aŭ sciigojn de uzantoj sur ĉi tiu servilo.", - "domain_pill.activitypub_lets_connect": "Ĝi ebligas vin konekti kaj interagi kun homoj ne nur sur Mastodon, sed ankaŭ tra diversaj sociaj apoj.", + "domain_pill.activitypub_lets_connect": "Ĝi ebligas vin konekti kaj interagi kun homoj ne nur sur Mastodon, sed ankaŭ tra diversaj sociaj aplikaĵoj.", "domain_pill.activitypub_like_language": "ActivityPub estas kiel la lingvo kiun Mastodon parolas kun aliaj sociaj retoj.", "domain_pill.server": "Servilo", "domain_pill.their_handle": "Ilia identigo:", @@ -294,6 +305,9 @@ "emoji_button.search_results": "Serĉaj rezultoj", "emoji_button.symbols": "Simboloj", "emoji_button.travel": "Vojaĝoj kaj lokoj", + "empty_column.account_featured.me": "Vi ankoraŭ ne prezentis ion ajn. Ĉu vi sciis ke vi povas prezenti viajn afiŝojn, viajn plej uzitajn kradvortojn, kaj eĉ la kontojn de viaj amikoj sur via profilo?", + "empty_column.account_featured.other": "{acct} ne prezentis ion ajn. Ĉu vi sciis ke vi povas prezenti viajn afiŝojn, viajn plej uzitajn kradvortojn, kaj eĉ la kontojn de viaj amikoj sur via profilo?", + "empty_column.account_featured_other.unknown": "Ĉi tiu konto ankoraŭ ne montris ion ajn.", "empty_column.account_hides_collections": "Ĉi tiu uzanto elektis ne disponebligi ĉi tiu informon", "empty_column.account_suspended": "Konto suspendita", "empty_column.account_timeline": "Neniuj afiŝoj ĉi tie!", @@ -378,6 +392,8 @@ "generic.saved": "Konservita", "getting_started.heading": "Por komenci", "hashtag.admin_moderation": "Malfermi fasadon de moderigado por #{name}", + "hashtag.browse": "Folii afiŝojn en #{hashtag}", + "hashtag.browse_from_account": "Folii afiŝojn de @{name} en #{hashtag}", "hashtag.column_header.tag_mode.all": "kaj {additional}", "hashtag.column_header.tag_mode.any": "aŭ {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -390,7 +406,10 @@ "hashtag.counter_by_accounts": "{count, plural,one {{counter} partoprenanto} other {{counter} partoprenantoj}}", "hashtag.counter_by_uses": "{count, plural,one {{counter} afiŝo} other {{counter} afiŝoj}}", "hashtag.counter_by_uses_today": "{count, plural,one {{counter} afiŝo} other {{counter} afiŝoj}} hodiaŭ", + "hashtag.feature": "Prezenti en profilo", "hashtag.follow": "Sekvi la kradvorton", + "hashtag.mute": "Silentigi #{hashtag}", + "hashtag.unfeature": "Ne prezenti en profilo", "hashtag.unfollow": "Ne plu sekvi la kradvorton", "hashtags.and_other": "…kaj {count, plural,other {# pli}}", "hints.profiles.followers_may_be_missing": "Sekvantoj por ĉi tiu profilo eble mankas.", @@ -461,6 +480,7 @@ "keyboard_shortcuts.my_profile": "Malfermu vian profilon", "keyboard_shortcuts.notifications": "Malfermu la sciigajn kolumnon", "keyboard_shortcuts.open_media": "Malfermi vidaŭdaĵon", + "keyboard_shortcuts.pinned": "Malfermu alpinglitajn afiŝliston", "keyboard_shortcuts.profile": "Malfermu la profilon de aŭtoroprofilo", "keyboard_shortcuts.reply": "Respondu al afiŝo", "keyboard_shortcuts.requests": "Malfermi la liston de petoj por sekvado", @@ -544,6 +564,7 @@ "navigation_bar.mutes": "Silentigitaj uzantoj", "navigation_bar.opened_in_classic_interface": "Afiŝoj, kontoj, kaj aliaj specifaj paĝoj kiuj estas malfermititaj defaulta en la klasika reta interfaco.", "navigation_bar.personal": "Persone", + "navigation_bar.pins": "Prezentitaj afiŝoj", "navigation_bar.preferences": "Preferoj", "navigation_bar.public_timeline": "Fratara templinio", "navigation_bar.search": "Serĉi", @@ -839,6 +860,7 @@ "status.mute": "Silentigi @{name}", "status.mute_conversation": "Silentigi konversacion", "status.open": "Pligrandigu ĉi tiun afiŝon", + "status.pin": "Prezenti en profilo", "status.read_more": "Legi pli", "status.reblog": "Diskonigi", "status.reblog_private": "Diskonigi kun la sama videbleco", @@ -863,6 +885,7 @@ "status.translated_from_with": "Tradukita el {lang} per {provider}", "status.uncached_media_warning": "Antaŭrigardo ne disponebla", "status.unmute_conversation": "Malsilentigi la konversacion", + "status.unpin": "Ne prezenti en profilo", "subscribed_languages.lead": "Nur afiŝoj en elektitaj lingvoj aperos en viaj hejma kaj lista templinioj post la ŝanĝo. Elektu nenion por ricevi afiŝojn en ĉiuj lingvoj.", "subscribed_languages.save": "Konservi ŝanĝojn", "subscribed_languages.target": "Ŝanĝu abonitajn lingvojn por {target}", @@ -904,5 +927,9 @@ "video.mute": "Silentigi", "video.pause": "Paŭzigi", "video.play": "Ekigi", - "video.unmute": "Ne plu silentigi" + "video.skip_backward": "Preterpasi malantaŭen", + "video.skip_forward": "Preterpasi antaŭen", + "video.unmute": "Ne plu silentigi", + "video.volume_down": "Laŭteco Malpliigi", + "video.volume_up": "Laŭteco pliigi" } diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 83011e0f29..96a3af6d2f 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -28,6 +28,9 @@ "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} envíe mensajes", "account.endorse": "Destacar en el perfil", + "account.familiar_followers_many": "Seguido por {name1}, {name2} y {othersCount, plural, one {# cuenta más} other {# cuentas más}}", + "account.familiar_followers_one": "Seguido por {name1}", + "account.familiar_followers_two": "Seguido por {name1} y {name2}", "account.featured": "Destacados", "account.featured.accounts": "Perfiles", "account.featured.hashtags": "Etiquetas", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 43e9706a62..b28ec59b7d 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -28,6 +28,9 @@ "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} publique algo", "account.endorse": "Destacar en mi perfil", + "account.familiar_followers_many": "Seguido por {name1}, {name2} y {othersCount, plural,one {# otro} other {# otros}}", + "account.familiar_followers_one": "Seguido por {name1}", + "account.familiar_followers_two": "Seguid por {name1} y {name2}", "account.featured": "Destacado", "account.featured.accounts": "Perfiles", "account.featured.hashtags": "Etiquetas", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 9116c04360..54f100db71 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -28,6 +28,9 @@ "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} publique algo", "account.endorse": "Destacar en el perfil", + "account.familiar_followers_many": "Seguido por {name1}, {name2} y {othersCount, plural, one {# otro} other {# otros}}", + "account.familiar_followers_one": "Seguido por {name1}", + "account.familiar_followers_two": "Seguido por {name1} y {name2}", "account.featured": "Destacado", "account.featured.accounts": "Perfiles", "account.featured.hashtags": "Etiquetas", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 4f2f9d2a9f..7380220e8a 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -28,6 +28,9 @@ "account.edit_profile": "Muokkaa profiilia", "account.enable_notifications": "Ilmoita minulle, kun @{name} julkaisee", "account.endorse": "Suosittele profiilissa", + "account.familiar_followers_many": "Seuraajina {name1}, {name2} ja {othersCount, plural, one {# muu} other {# muuta}}", + "account.familiar_followers_one": "Seuraajana {name1}", + "account.familiar_followers_two": "Seuraajina {name1} ja {name2}", "account.featured": "Suositellut", "account.featured.accounts": "Profiilit", "account.featured.hashtags": "Aihetunnisteet", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index efefbc752c..281232c1e3 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -28,6 +28,9 @@ "account.edit_profile": "Broyt vanga", "account.enable_notifications": "Boða mær frá, tá @{name} skrivar", "account.endorse": "Víst á vangamyndini", + "account.familiar_followers_many": "{name1}, {name2} og {othersCount, plural, one {# annar} other {# onnur}} fylgja", + "account.familiar_followers_one": "{name1} fylgir", + "account.familiar_followers_two": "{name1} og {name2} fylgja", "account.featured": "Tikin fram", "account.featured.accounts": "Vangar", "account.featured.hashtags": "Frámerki", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 0b4e8e5627..b9cbbfe645 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -262,6 +262,9 @@ "disabled_account_banner.text": "Tha an cunntas {disabledAccount} agad à comas aig an àm seo.", "dismissable_banner.community_timeline": "Seo na postaichean poblach as ùire o dhaoine aig a bheil cunntas air {domain}.", "dismissable_banner.dismiss": "Leig seachad", + "dismissable_banner.explore_links": "Tha na naidheachdan seo gan co-roinneadh as trice air a’ cho-shaoghal an-diugh. Gheibh sgeulachdan-naidheachd nas ùire a chaidh a cho-roinneadh le barrachd dhaoine eadar-dhealaichte rangachadh nas àirde.", + "dismissable_banner.explore_statuses": "Tha fèill air na postaichean seo a’ fàs thar a’ cho-shaoghail an-diugh. Gheibh postaichean nas ùire le barrachd brosnaichean is annsachdan rangachadh nas àirde.", + "dismissable_banner.explore_tags": "Tha fèill air na tagaichean hais seo a’ fàs air a’ cho-shaoghal an-diugh. Gheibh tagaichean hais a tha gan cleachdadh le daoine eadar-dhealaichte rangachadh nas àirde.", "dismissable_banner.public_timeline": "Seo na postaichean poblach as ùire o dhaoine air a’ cho-shaoghal tha ’gan leantainn le daoine air {domain}.", "domain_block_modal.block": "Bac am frithealaiche", "domain_block_modal.block_account_instead": "Bac @{name} ’na àite", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index c527c8a7ca..6618f26cca 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -28,6 +28,9 @@ "account.edit_profile": "Editar perfil", "account.enable_notifications": "Noficarme cando @{name} publique", "account.endorse": "Amosar no perfil", + "account.familiar_followers_many": "Seguida por {name1}, {name2}, e {othersCount, plural,one {# máis} other {# máis}}", + "account.familiar_followers_one": "Seguida por {name1}", + "account.familiar_followers_two": "Seguida por {name1} e {name2}", "account.featured": "Destacado", "account.featured.accounts": "Perfís", "account.featured.hashtags": "Cancelos", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 859dfd1e9d..bbef04b893 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -28,6 +28,9 @@ "account.edit_profile": "עריכת פרופיל", "account.enable_notifications": "שלח לי התראות כש@{name} מפרסם", "account.endorse": "קדם את החשבון בפרופיל", + "account.familiar_followers_many": "החשבון נעקב על ידי {name1}, {name2} ועוד {othersCount, plural,one {אחד נוסף}other {# נוספים}}", + "account.familiar_followers_one": "החשבון נעקב על ידי {name1}", + "account.familiar_followers_two": "החשבון נעקב על ידי {name1} ו־{name2}", "account.featured": "מומלץ", "account.featured.accounts": "פרופילים", "account.featured.hashtags": "תגיות", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 3bbddd7560..5bd0c90c10 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -28,7 +28,11 @@ "account.edit_profile": "Profil szerkesztése", "account.enable_notifications": "Figyelmeztessen, ha @{name} bejegyzést tesz közzé", "account.endorse": "Kiemelés a profilodon", + "account.familiar_followers_many": "{name1}, {name2} és {othersCount, plural, one {# másik} other {# másik}} követi", + "account.familiar_followers_one": "{name1} követi", + "account.familiar_followers_two": "{name1} és {name2} követi", "account.featured": "Kiemelt", + "account.featured.accounts": "Profilok", "account.featured.hashtags": "Hashtagek", "account.featured.posts": "Bejegyzések", "account.featured_tags.last_status_at": "Legutolsó bejegyzés ideje: {date}", @@ -405,8 +409,10 @@ "hashtag.counter_by_accounts": "{count, plural, one {{counter} résztvevő} other {{counter} résztvevő}}", "hashtag.counter_by_uses": "{count, plural, one {{counter} bejegyzés} other {{counter} bejegyzés}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} bejegyzés} other {{counter} bejegyzés}} ma", + "hashtag.feature": "Kiemelés a profilodon", "hashtag.follow": "Hashtag követése", "hashtag.mute": "#{hashtag} némítása", + "hashtag.unfeature": "Ne legyen kiemelve a profilodon", "hashtag.unfollow": "Hashtag követésének megszüntetése", "hashtags.and_other": "…és {count, plural, other {# további}}", "hints.profiles.followers_may_be_missing": "A profil követői lehet, hogy hiányoznak.", @@ -561,6 +567,7 @@ "navigation_bar.mutes": "Némított felhasználók", "navigation_bar.opened_in_classic_interface": "A bejegyzések, fiókok és más speciális oldalak alapértelmezés szerint a klasszikus webes felületen nyílnak meg.", "navigation_bar.personal": "Személyes", + "navigation_bar.pins": "Kiemelt bejegyzések", "navigation_bar.preferences": "Beállítások", "navigation_bar.public_timeline": "Föderációs idővonal", "navigation_bar.search": "Keresés", @@ -856,6 +863,7 @@ "status.mute": "@{name} némítása", "status.mute_conversation": "Beszélgetés némítása", "status.open": "Bejegyzés kibontása", + "status.pin": "Kiemelés a profilodon", "status.read_more": "Bővebben", "status.reblog": "Megtolás", "status.reblog_private": "Megtolás az eredeti közönségnek", @@ -880,6 +888,7 @@ "status.translated_from_with": "{lang} nyelvről fordítva {provider} szolgáltatással", "status.uncached_media_warning": "Előnézet nem érhető el", "status.unmute_conversation": "Beszélgetés némításának feloldása", + "status.unpin": "Ne legyen kiemelve a profilodon", "subscribed_languages.lead": "A változtatás után csak a kiválasztott nyelvű bejegyzések fognak megjelenni a kezdőlapon és az idővonalakon. Ha egy sincs kiválasztva, akkor minden nyelven megjelennek a bejegyzések.", "subscribed_languages.save": "Változások mentése", "subscribed_languages.target": "Feliratkozott nyelvek módosítása {target} esetében", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 3f3bf4e707..707bdbd2bb 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -28,6 +28,9 @@ "account.edit_profile": "Breyta notandasniði", "account.enable_notifications": "Láta mig vita þegar @{name} sendir inn", "account.endorse": "Birta á notandasniði", + "account.familiar_followers_many": "Fylgt af {name1}, {name2} og {othersCount, plural, one {# í viðbót} other {# í viðbót}}", + "account.familiar_followers_one": "Fylgt af {name1}", + "account.familiar_followers_two": "Fylgt af {name1} og {name2}", "account.featured": "Með aukið vægi", "account.featured.accounts": "Notendasnið", "account.featured.hashtags": "Myllumerki", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 019a282219..f0cf02f076 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -29,6 +29,7 @@ "account.enable_notifications": "Avvisami quando @{name} pubblica un post", "account.endorse": "In evidenza sul profilo", "account.featured": "In primo piano", + "account.featured.accounts": "Profili", "account.featured.hashtags": "Hashtag", "account.featured.posts": "Post", "account.featured_tags.last_status_at": "Ultimo post il {date}", @@ -168,6 +169,7 @@ "column.lists": "Liste", "column.mutes": "Utenti silenziati", "column.notifications": "Notifiche", + "column.pins": "Post in evidenza", "column.public": "Timeline federata", "column_back_button.label": "Indietro", "column_header.hide_settings": "Nascondi impostazioni", @@ -404,8 +406,10 @@ "hashtag.counter_by_accounts": "{count, plural, one {{counter} partecipante} other {{counter} partecipanti}}", "hashtag.counter_by_uses": "{count, plural, one {{counter} post} other {{counter} post}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} post} other {{counter} post}} oggi", + "hashtag.feature": "In evidenza sul profilo", "hashtag.follow": "Segui l'hashtag", "hashtag.mute": "Silenzia #{hashtag}", + "hashtag.unfeature": "Non mettere in evidenza sul profilo", "hashtag.unfollow": "Smetti di seguire l'hashtag", "hashtags.and_other": "…e {count, plural, other {# in più}}", "hints.profiles.followers_may_be_missing": "I seguaci per questo profilo potrebbero essere mancanti.", @@ -476,6 +480,7 @@ "keyboard_shortcuts.my_profile": "Apre il tuo profilo", "keyboard_shortcuts.notifications": "Apre la colonna delle notifiche", "keyboard_shortcuts.open_media": "Apre i multimedia", + "keyboard_shortcuts.pinned": "Apri la lista dei post in evidenza", "keyboard_shortcuts.profile": "Apre il profilo dell'autore", "keyboard_shortcuts.reply": "Risponde al post", "keyboard_shortcuts.requests": "Apre l'elenco delle richieste di seguirti", @@ -559,6 +564,7 @@ "navigation_bar.mutes": "Utenti silenziati", "navigation_bar.opened_in_classic_interface": "Post, account e altre pagine specifiche sono aperti per impostazione predefinita nella classica interfaccia web.", "navigation_bar.personal": "Personale", + "navigation_bar.pins": "Post in evidenza", "navigation_bar.preferences": "Preferenze", "navigation_bar.public_timeline": "Cronologia federata", "navigation_bar.search": "Cerca", @@ -854,6 +860,7 @@ "status.mute": "Silenzia @{name}", "status.mute_conversation": "Silenzia conversazione", "status.open": "Espandi questo post", + "status.pin": "In evidenza sul profilo", "status.read_more": "Leggi di più", "status.reblog": "Reblog", "status.reblog_private": "Reblog con visibilità originale", @@ -878,6 +885,7 @@ "status.translated_from_with": "Tradotto da {lang} utilizzando {provider}", "status.uncached_media_warning": "Anteprima non disponibile", "status.unmute_conversation": "Annulla silenziamento conversazione", + "status.unpin": "Non mettere in evidenza sul profilo", "subscribed_languages.lead": "Solo i post nelle lingue selezionate appariranno sulla tua home e nelle cronologie dopo la modifica. Seleziona nessuno per ricevere i post in tutte le lingue.", "subscribed_languages.save": "Salva le modifiche", "subscribed_languages.target": "Modifica le lingue in cui sei iscritto per {target}", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 0c164fa765..9827628d88 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -39,7 +39,7 @@ "account.following": "Seko", "account.following_counter": "{count, plural, one {seko {counter}} other {seko {counter}}}", "account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.", - "account.follows_you": "Seko tev", + "account.follows_you": "Seko Tev", "account.go_to_profile": "Doties uz profilu", "account.hide_reblogs": "Paslēpt @{name} pastiprinātos ierakstus", "account.in_memoriam": "Piemiņai.", @@ -241,7 +241,7 @@ "conversation.with": "Ar {names}", "copy_icon_button.copied": "Ievietots starpliktuvē", "copypaste.copied": "Nokopēts", - "copypaste.copy_to_clipboard": "Kopēt uz starpliktuvi", + "copypaste.copy_to_clipboard": "Ievietot starpliktuvē", "directory.federated": "No zināma fediversa", "directory.local": "Tikai no {domain}", "directory.new_arrivals": "Jaunpienācēji", @@ -334,7 +334,7 @@ "firehose.all": "Visi", "firehose.local": "Šis serveris", "firehose.remote": "Citi serveri", - "follow_request.authorize": "Autorizēt", + "follow_request.authorize": "Pilnvarot", "follow_request.reject": "Noraidīt", "follow_requests.unlocked_explanation": "Lai gan Tavs konts nav slēgts, {domain} darbinieki iedomājās, ka Tu varētu vēlēties pašrocīgi pārskatīt sekošanas pieprasījumus no šiem kontiem.", "follow_suggestions.curated_suggestion": "Darbinieku izvēle", diff --git a/app/javascript/mastodon/locales/nan.json b/app/javascript/mastodon/locales/nan.json index 1d2650e6a3..fa3563f1ba 100644 --- a/app/javascript/mastodon/locales/nan.json +++ b/app/javascript/mastodon/locales/nan.json @@ -29,6 +29,7 @@ "account.enable_notifications": "佇 {name} PO文ê時通知我", "account.endorse": "用個人資料推薦對方", "account.featured": "精選ê", + "account.featured.accounts": "個人資料", "account.featured.hashtags": "Hashtag", "account.featured.posts": "PO文", "account.featured_tags.last_status_at": "頂kái tī {date} Po文", @@ -405,8 +406,10 @@ "hashtag.counter_by_accounts": "{count, plural, one {{counter} ê} other {{counter} ê}}參與ê", "hashtag.counter_by_uses": "{count, plural, one {{counter} 篇} other {{counter} 篇}} PO文", "hashtag.counter_by_uses_today": "Kin-á日有 {count, plural, one {{counter} 篇} other {{counter} 篇}} PO文", + "hashtag.feature": "Tī個人資料推薦", "hashtag.follow": "跟tuè hashtag", "hashtag.mute": "消音 #{hashtag}", + "hashtag.unfeature": "Mài tī個人資料推薦", "hashtag.unfollow": "取消跟tuè hashtag", "hashtags.and_other": "……kap 其他 {count, plural, other {# ê}}", "hints.profiles.followers_may_be_missing": "Tsit ê個人資料ê跟tuè者資訊可能有落勾ê。", @@ -678,6 +681,10 @@ "notifications.policy.filter_not_followers_title": "無跟tuè lí ê lâng", "notifications.policy.filter_not_following_hint": "直到lí手動允准in", "notifications.policy.filter_not_following_title": "Lí無跟tuè ê lâng", + "notifications.policy.filter_private_mentions_hint": "通知ē受過濾,除非是tī lí ê提起ê回應內底,á是lí跟tuè送PO文ê lâng", + "notifications.policy.filter_private_mentions_title": "家kī直接送來ê私人提起", + "notifications.policy.title": "管理通知tuì……", + "notifications_permission_banner.enable": "啟用桌面ê通知", "notifications_permission_banner.title": "逐ê著看", "onboarding.follows.back": "轉去", "onboarding.follows.done": "做好ah", @@ -705,6 +712,10 @@ "privacy.private.short": "跟tuè lí ê", "privacy.public.long": "逐ê lâng(無論佇Mastodon以內á是以外)", "privacy.public.short": "公開ê", + "privacy.unlisted.short": "恬靜ê公開", + "privacy_policy.last_updated": "上尾更新tī:{date}", + "privacy_policy.title": "隱私權政策", + "recommended": "推薦", "refresh": "Koh更新", "regeneration_indicator.please_stand_by": "請sió等leh。", "regeneration_indicator.preparing_your_home_feed": "Leh準備lí ê厝ê時間線……", @@ -715,6 +726,28 @@ "relative_time.full.minutes": "{number, plural, other {# 分鐘}}進前", "relative_time.full.seconds": "{number, plural, other {# 秒}}進前", "relative_time.hours": "{number}點鐘前", + "relative_time.just_now": "頭tú-á", + "relative_time.minutes": "{number} 分進前", + "relative_time.seconds": "{number} 秒進前", + "relative_time.today": "今á日", + "reply_indicator.attachments": "{count, plural, other {# ê附件}}", + "reply_indicator.cancel": "取消", + "reply_indicator.poll": "投票", + "report.block": "封鎖", + "report.categories.legal": "法律ê問題", + "report.categories.other": "其他", + "report.categories.spam": "Pùn-sò訊息", + "report.categories.violation": "內容違反tsi̍t ê以上服侍器ê規則", + "report.category.subtitle": "揀上合ê選項", + "report.category.title": "Kā guán講tsit ê {type} 有siánn-mih代誌", + "report.category.title_account": "個人資料", + "report.category.title_status": "PO文", + "report.close": "完成", + "report.comment.title": "Lí敢有別ê想beh hōo guán知ê?", + "report.forward": "轉送kàu {target}", + "report.forward_hint": "Tsit ê口座是別ê服侍器ê。Kám iā beh送bô落名ê檢舉ê khóo-pih?", + "report.mute": "消音", + "report.mute_explanation": "Lí bē koh看著in ê PO文。In iáu是ē當跟tuè lí,看lí ê PO文,而且m̄知in受消音。", "report.next": "繼續", "report.placeholder": "其他ê註釋", "report.reasons.dislike": "我無kah意", @@ -728,6 +761,13 @@ "report.reasons.violation": "伊違反服侍器ê規定", "report.reasons.violation_description": "Lí明知伊違反特定ê規定", "report.rules.subtitle": "請揀所有符合ê選項", + "report.rules.title": "違反siánn-mih規則?", + "report.statuses.subtitle": "請揀所有符合ê選項", + "report.statuses.title": "Kám有任何PO文證明tsit ê檢舉?", + "report.submit": "送出", "search_popout.language_code": "ISO語言代碼", + "search_results.see_all": "看全部", + "search_results.statuses": "PO文", + "search_results.title": "Tshiau-tshuē「{q}」", "status.translated_from_with": "用 {provider} 翻譯 {lang}" } diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 2fe9a8d784..e3c88bf7de 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -28,6 +28,9 @@ "account.edit_profile": "Profiel bewerken", "account.enable_notifications": "Geef een melding wanneer @{name} een bericht plaatst", "account.endorse": "Op profiel weergeven", + "account.familiar_followers_many": "Gevolgd door {name1}, {name2} en {othersCount, plural, one {# ander account} other {# andere accounts}}", + "account.familiar_followers_one": "Gevolgd door {name1}", + "account.familiar_followers_two": "Gevolgd door {name1} en {name2}", "account.featured": "Uitgelicht", "account.featured.accounts": "Profielen", "account.featured.hashtags": "Hashtags", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index da2762e3d4..45c72d2fc1 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -19,13 +19,22 @@ "account.block_domain": "Bloquear domínio {domain}", "account.block_short": "Bloquear", "account.blocked": "Bloqueado", + "account.blocking": "A bloquear", "account.cancel_follow_request": "Retirar pedido para seguir", "account.copy": "Copiar hiperligação do perfil", "account.direct": "Mencionar @{name} em privado", "account.disable_notifications": "Parar de me notificar das publicações de @{name}", + "account.domain_blocking": "A bloquear domínio", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificar-me das publicações de @{name}", "account.endorse": "Destacar no perfil", + "account.familiar_followers_many": "Seguido por {name1}, {name2} e {othersCount, plural,one {# outro}other {# outros}}", + "account.familiar_followers_one": "Seguido por {name1}", + "account.familiar_followers_two": "Seguido por {name1} e {name2}", + "account.featured": "Destaques", + "account.featured.accounts": "Perfis", + "account.featured.hashtags": "Etiquetas", + "account.featured.posts": "Publicações", "account.featured_tags.last_status_at": "Última publicação em {date}", "account.featured_tags.last_status_never": "Sem publicações", "account.follow": "Seguir", @@ -36,6 +45,7 @@ "account.following": "A seguir", "account.following_counter": "{count, plural, one {A seguir {counter}} other {A seguir {counter}}}", "account.follows.empty": "Este utilizador ainda não segue ninguém.", + "account.follows_you": "Segue-te", "account.go_to_profile": "Ir para o perfil", "account.hide_reblogs": "Esconder partilhas impulsionadas de @{name}", "account.in_memoriam": "Em Memória.", @@ -50,13 +60,17 @@ "account.mute_notifications_short": "Ocultar notificações", "account.mute_short": "Ocultar", "account.muted": "Ocultada", + "account.muting": "A silenciar", + "account.mutual": "Seguem-se mutuamente", "account.no_bio": "Nenhuma descrição fornecida.", "account.open_original_page": "Abrir a página original", "account.posts": "Publicações", "account.posts_with_replies": "Publicações e respostas", + "account.remove_from_followers": "Remover {name} dos seguidores", "account.report": "Denunciar @{name}", "account.requested": "A aguardar aprovação. Clica para cancelar o pedido para seguir", "account.requested_follow": "{name} pediu para seguir-te", + "account.requests_to_follow_you": "Pediu para seguir-te", "account.share": "Partilhar o perfil @{name}", "account.show_reblogs": "Mostrar partilhas impulsionadas de @{name}", "account.statuses_counter": "{count, plural, one {{counter} publicação} other {{counter} publicações}}", @@ -158,6 +172,7 @@ "column.lists": "Listas", "column.mutes": "Utilizadores ocultados", "column.notifications": "Notificações", + "column.pins": "Publicação destacada", "column.public": "Cronologia federada", "column_back_button.label": "Voltar", "column_header.hide_settings": "Ocultar configurações", @@ -223,6 +238,9 @@ "confirmations.redraft.confirm": "Eliminar e reescrever", "confirmations.redraft.message": "Tens a certeza de que queres eliminar e tornar a escrever esta publicação? Os favoritos e as publicações impulsionadas perder-se-ão e as respostas à publicação original ficarão órfãs.", "confirmations.redraft.title": "Eliminar e reescrever publicação?", + "confirmations.remove_from_followers.confirm": "Remover seguidor", + "confirmations.remove_from_followers.message": "{name} vai parar de seguir-te. Tens a certeza que prentedes continuar?", + "confirmations.remove_from_followers.title": "Remover seguidor?", "confirmations.reply.confirm": "Responder", "confirmations.reply.message": "Se responderes agora, a mensagem que estás a escrever será substituída. Tens a certeza que pretendes continuar?", "confirmations.reply.title": "Substituir publicação?", @@ -290,6 +308,9 @@ "emoji_button.search_results": "Resultados da pesquisa", "emoji_button.symbols": "Símbolos", "emoji_button.travel": "Viagens e lugares", + "empty_column.account_featured.me": "Ainda não destacaste nada. Sabias que podes destacar as tuas publicações, as etiquetas que mais utilizas e até as contas dos teus amigos no teu perfil?", + "empty_column.account_featured.other": "{acct} ainda não colocou nada em destaque. Sabias que podes destacar as tuas publicações, as etiquetas que mais utilizas e até as contas dos teus amigos no teu perfil?", + "empty_column.account_featured_other.unknown": "Esta conta ainda não colocou nada em destaque.", "empty_column.account_hides_collections": "Este utilizador escolheu não disponibilizar esta informação", "empty_column.account_suspended": "Conta suspensa", "empty_column.account_timeline": "Sem publicações por aqui!", @@ -374,6 +395,8 @@ "generic.saved": "Guardado", "getting_started.heading": "Primeiros passos", "hashtag.admin_moderation": "Abrir interface de moderação para #{name}", + "hashtag.browse": "Ver publicações em #{hashtag}", + "hashtag.browse_from_account": "Ver publicações de @{name} em #{hashtag}", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sem {additional}", @@ -388,6 +411,7 @@ "hashtag.counter_by_uses_today": "{count, plural, one {{counter} publicação} other {{counter} publicações}} hoje", "hashtag.feature": "Destacar no perfil", "hashtag.follow": "Seguir #etiqueta", + "hashtag.mute": "Silenciar #{hashtag}", "hashtag.unfeature": "Não destacar no perfil", "hashtag.unfollow": "Deixar de seguir #etiqueta", "hashtags.and_other": "…e {count, plural, other {mais #}}", @@ -459,6 +483,7 @@ "keyboard_shortcuts.my_profile": "abrir o teu perfil", "keyboard_shortcuts.notifications": "abrir a coluna das notificações", "keyboard_shortcuts.open_media": "abrir multimédia", + "keyboard_shortcuts.pinned": "Abrir lista de publicações destacadas", "keyboard_shortcuts.profile": "abrir o perfil do autor", "keyboard_shortcuts.reply": "responder à publicação", "keyboard_shortcuts.requests": "abrir a lista dos pedidos de seguidor", @@ -542,6 +567,7 @@ "navigation_bar.mutes": "Utilizadores ocultados", "navigation_bar.opened_in_classic_interface": "Por norma, publicações, contas e outras páginas específicas são abertas na interface web clássica.", "navigation_bar.personal": "Pessoal", + "navigation_bar.pins": "Publicações destacadas", "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Cronologia federada", "navigation_bar.search": "Pesquisar", @@ -837,6 +863,7 @@ "status.mute": "Ocultar @{name}", "status.mute_conversation": "Ocultar conversa", "status.open": "Expandir esta publicação", + "status.pin": "Destacar no perfil", "status.read_more": "Ler mais", "status.reblog": "Impulsionar", "status.reblog_private": "Impulsionar com a visibilidade original", @@ -861,6 +888,7 @@ "status.translated_from_with": "Traduzido do {lang} usando {provider}", "status.uncached_media_warning": "Pré-visualização não disponível", "status.unmute_conversation": "Desocultar esta conversa", + "status.unpin": "Não destacar no perfil", "subscribed_languages.lead": "Após a alteração, apenas as publicações nos idiomas selecionados aparecerão na cronologia da tua página inicial e das tuas listas. Não seleciones nenhum idioma para receberes publicações em todos os idiomas.", "subscribed_languages.save": "Guardar alterações", "subscribed_languages.target": "Alterar idiomas subscritos para {target}", @@ -899,6 +927,12 @@ "video.expand": "Expandir vídeo", "video.fullscreen": "Ecrã completo", "video.hide": "Ocultar vídeo", + "video.mute": "Silenciar", "video.pause": "Pausar", - "video.play": "Reproduzir" + "video.play": "Reproduzir", + "video.skip_backward": "Saltar para trás", + "video.skip_forward": "Saltar para a frente", + "video.unmute": "Ativar som", + "video.volume_down": "Diminuir volume", + "video.volume_up": "Aumentar volume" } diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index d3a459eb23..78426e596c 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -4,7 +4,7 @@ "about.disclaimer": "Mastodon — свободное программное обеспечение с открытым исходным кодом и торговая марка Mastodon gGmbH.", "about.domain_blocks.no_reason_available": "Причина не указана", "about.domain_blocks.preamble": "Mastodon обычно позволяет просматривать содержимое и взаимодействовать с пользователями любых других серверов в федивёрсе. Вот исключения, сделанные конкретно для этого сервера.", - "about.domain_blocks.silenced.explanation": "Как правило, вы не увидите профили и контент с этого сервера, если вы специально не будете их искать или не подпишетесь на них.", + "about.domain_blocks.silenced.explanation": "Как правило, вы не увидите профили и контент с этого сервера, если специально не будете их искать или не подпишетесь на них.", "about.domain_blocks.silenced.title": "Ограничивается", "about.domain_blocks.suspended.explanation": "Никакие данные с этого сервера не будут обрабатываться, храниться или обмениваться, что делает невозможным любое взаимодействие или связь с пользователями с этого сервера.", "about.domain_blocks.suspended.title": "Заблокирован", @@ -29,7 +29,8 @@ "account.enable_notifications": "Уведомлять о постах от @{name}", "account.endorse": "Рекомендовать в профиле", "account.featured": "Закреплённые…", - "account.featured.hashtags": "Хэштеги", + "account.featured.accounts": "Профили", + "account.featured.hashtags": "Хештеги", "account.featured.posts": "Посты", "account.featured_tags.last_status_at": "Последний пост {date}", "account.featured_tags.last_status_never": "Нет постов", @@ -115,7 +116,7 @@ "annual_report.summary.highlighted_post.by_replies": "пост с наибольшим количеством ответов", "annual_report.summary.highlighted_post.possessive": "{name}", "annual_report.summary.most_used_app.most_used_app": "наиболее часто используемое приложение", - "annual_report.summary.most_used_hashtag.most_used_hashtag": "наиболее часто используемый хэштег", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "наиболее часто используемый хештег", "annual_report.summary.most_used_hashtag.none": "Нет", "annual_report.summary.new_posts.new_posts": "новых постов", "annual_report.summary.percentile.text": "Всё это помещает вас в топпользователей {domain}.", @@ -189,7 +190,7 @@ "compose.saved.body": "Пост отредактирован.", "compose_form.direct_message_warning_learn_more": "Узнать больше", "compose_form.encryption_warning": "Посты в Mastodon не защищены сквозным шифрованием. Не делитесь конфиденциальной информацией через Mastodon.", - "compose_form.hashtag_warning": "Этот пост не появится в поиске по хэштегам, так как он не обозначен как публичный. Только публичные посты можно найти по хэштегу.", + "compose_form.hashtag_warning": "Этот пост не появится в поиске по хештегам, так как он не обозначен как публичный. Только публичные посты можно найти по хештегу.", "compose_form.lock_disclaimer": "Ваша учётная запись {locked}. Любой пользователь сможет подписаться на вас и просматривать посты для подписчиков.", "compose_form.lock_disclaimer.lock": "не закрыта", "compose_form.placeholder": "О чём думаете?", @@ -216,7 +217,7 @@ "confirmations.delete_list.message": "Вы уверены, что хотите навсегда удалить этот список?", "confirmations.delete_list.title": "Удалить список?", "confirmations.discard_edit_media.confirm": "Сбросить", - "confirmations.discard_edit_media.message": "У вас есть несохранённые изменения, касающиеся описания медиа или области предпросмотра, сбросить их?", + "confirmations.discard_edit_media.message": "У вас есть несохранённые изменения, касающиеся описания медиа или области предпросмотра. Сбросить их?", "confirmations.edit.confirm": "Редактировать", "confirmations.edit.message": "Если вы начнёте редактировать сейчас, то набираемый в данный момент пост будет стёрт. Вы уверены, что хотите продолжить?", "confirmations.edit.title": "Стереть несохранённый черновик поста?", @@ -263,7 +264,7 @@ "dismissable_banner.dismiss": "Закрыть", "dismissable_banner.explore_links": "Об этих новостях говорят в федивёрсе прямо сейчас. Свежие новости, опубликованные несколькими разными людьми, ранжируются выше.", "dismissable_banner.explore_statuses": "Эти посты со всего федивёрса прямо сейчас набирают популярность. Более новые посты с более высоким количеством взаимодействий ранжируются выше.", - "dismissable_banner.explore_tags": "Эти хэштеги набирают популярность в федивёрсе прямо сейчас. Хэштеги, используемые несколькими разными людьми, ранжируются выше.", + "dismissable_banner.explore_tags": "Эти хештеги набирают популярность в федивёрсе прямо сейчас. Хештеги, используемые несколькими разными людьми, ранжируются выше.", "dismissable_banner.public_timeline": "Это самые новые публичные посты от всех тех людей в федивёрсе, на которых подписаны пользователи {domain}.", "domain_block_modal.block": "Заблокировать сервер", "domain_block_modal.block_account_instead": "Заблокировать @{name}", @@ -283,7 +284,7 @@ "domain_pill.username": "Имя пользователя", "domain_pill.whats_in_a_handle": "Что это значит?", "domain_pill.who_they_are": "Поскольку адрес позволяет однозначно определить, кто и где находится, вы можете взаимодействовать с пользователями социальной сети .", - "domain_pill.who_you_are": "Поскольку ваш адрес позволяет однозначно определить, кто вы и где находитесь, пользователи социальной сети могут взаимодействовать с вами.", + "domain_pill.who_you_are": "Поскольку ваш адрес позволяет однозначно определить, кто вы и где находитесь, пользователи социальной сети , могут взаимодействовать с вами.", "domain_pill.your_handle": "Ваш адрес:", "domain_pill.your_server": "Ваш цифровой дом, где находятся все ваши посты. Если вам не нравится этот сервер, вы можете в любое время перенести свою учётную запись на другой сервер, не теряя подписчиков.", "domain_pill.your_username": "Ваш уникальный идентификатор на этом сервере. На разных серверах могут встречаться люди с тем же именем пользователя.", @@ -320,8 +321,8 @@ "empty_column.favourited_statuses": "Вы ещё не добавили ни один пост в избранное. Все добавленные вами в избранное посты будут показаны здесь.", "empty_column.favourites": "Никто ещё не добавил этот пост в избранное. Все пользователи, добавившие этот пост в избранное, будут показаны здесь.", "empty_column.follow_requests": "Вам ещё не приходили запросы на подписку. Все новые запросы будут показаны здесь.", - "empty_column.followed_tags": "Вы ещё не подписались ни на один хэштег. Все хэштеги, на которые вы подписаны, будут показаны здесь.", - "empty_column.hashtag": "С этим хэштегом пока ещё никто ничего не опубликовал.", + "empty_column.followed_tags": "Вы ещё не подписались ни на один хештег. Все хештеги, на которые вы подписаны, будут показаны здесь.", + "empty_column.hashtag": "С этим хештегом пока ещё никто ничего не опубликовал.", "empty_column.home": "Ваша домашняя лента совсем пуста! Подпишитесь на кого-нибудь, чтобы заполнить её.", "empty_column.list": "В этом списке пока ничего нет. Все новые посты, опубликованные пользователями в списке, будут появляться здесь.", "empty_column.mutes": "Вы пока что никого не игнорируете.", @@ -330,15 +331,15 @@ "empty_column.public": "Здесь ничего нет! Опубликуйте что-нибудь или подпишитесь на пользователей с других серверов, чтобы заполнить ленту", "error.unexpected_crash.explanation": "Из-за несовместимого браузера или ошибки в нашем коде эта страница не может быть корректно отображена.", "error.unexpected_crash.explanation_addons": "Эта страница не может быть корректно отображена. Скорее всего, ошибка вызвана расширением браузера или инструментом автоматического перевода.", - "error.unexpected_crash.next_steps": "Попробуйте обновить страницу. Если это не поможет, вы, скорее всего, всё ещё сможете использовать Mastodon в другом браузере или приложении.", - "error.unexpected_crash.next_steps_addons": "Попробуйте их отключить и обновить страницу. Если это не поможет, вы, скорее всего, всё ещё сможете использовать Mastodon в другом браузере или приложении.", + "error.unexpected_crash.next_steps": "Попробуйте обновить страницу. Если это не поможет, вы, возможно, всё ещё сможете использовать Mastodon в другом браузере или приложении.", + "error.unexpected_crash.next_steps_addons": "Попробуйте их отключить и обновить страницу. Если это не поможет, вы, возможно, всё ещё сможете использовать Mastodon в другом браузере или приложении.", "errors.unexpected_crash.copy_stacktrace": "Скопировать диагностическую информацию", "errors.unexpected_crash.report_issue": "Сообщить о проблеме", "explore.suggested_follows": "Люди", "explore.title": "Обзор", "explore.trending_links": "Новости", "explore.trending_statuses": "Посты", - "explore.trending_tags": "Хэштеги", + "explore.trending_tags": "Хештеги", "filter_modal.added.context_mismatch_explanation": "Этот фильтр не применяется в том контексте, в котором вы видели этот пост. Если вы хотите, чтобы пост был отфильтрован в этом контексте, необходимо редактировать фильтр.", "filter_modal.added.context_mismatch_title": "Несоответствие контекста!", "filter_modal.added.expired_explanation": "Этот фильтр истёк. Чтобы он был применён, вам нужно изменить срок действия фильтра.", @@ -379,7 +380,7 @@ "follow_suggestions.similar_to_recently_followed_longer": "Похоже на профили, на которые вы подписывались в последнее время", "follow_suggestions.view_all": "Посмотреть все", "follow_suggestions.who_to_follow": "На кого подписаться", - "followed_tags": "Подписки на хэштеги", + "followed_tags": "Подписки на хештеги", "footer.about": "О проекте", "footer.directory": "Каталог профилей", "footer.get_app": "Скачать приложение", @@ -397,7 +398,7 @@ "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", "hashtag.column_settings.select.no_options_message": "Предложений не найдено", - "hashtag.column_settings.select.placeholder": "Введите хэштеги…", + "hashtag.column_settings.select.placeholder": "Введите хештеги…", "hashtag.column_settings.tag_mode.all": "Все из списка", "hashtag.column_settings.tag_mode.any": "Любой из списка", "hashtag.column_settings.tag_mode.none": "Ни один из списка", @@ -405,8 +406,10 @@ "hashtag.counter_by_accounts": "{count, plural, one {{counter} пользователь} few {{counter} пользователя} other {{counter} пользователей}}", "hashtag.counter_by_uses": "{count, plural, one {{counter} пост} few {{counter} поста} other {{counter} постов}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} пост} few {{counter} поста} other {{counter} постов}} сегодня", + "hashtag.feature": "Закрепить в профиле", "hashtag.follow": "Подписаться на новые посты", "hashtag.mute": "Игнорировать #{hashtag}", + "hashtag.unfeature": "Открепить от профиля", "hashtag.unfollow": "Отписаться от новых постов", "hashtags.and_other": "…и {count, plural, other {ещё #}}", "hints.profiles.followers_may_be_missing": "Некоторые подписчики этого профиля могут отсутствовать.", @@ -436,7 +439,7 @@ "ignore_notifications_modal.not_following_title": "Игнорировать уведомления от людей, на которых вы не подписаны?", "ignore_notifications_modal.private_mentions_title": "Игнорировать уведомления о нежелательных личных упоминаниях?", "info_button.label": "Помощь", - "info_button.what_is_alt_text": "

Что это такое?

Альтернативный текст содержит описание изображения для людей с ограничениями зрения, медленным интернетом и для тех, кому нужен дополнительный контекст.

Вы можете улучшить доступность и понимание для всех, написав четкий, краткий и объективный альтернативный текст.

  • Уловите важные элементы
  • Перескажите текстовую информацию на изображении
  • Используйте правильную структуру предложений
  • Избегайте избыточной информации
  • Сосредоточьтесь на тенденциях и ключевых выводах при описании сложных визуализаций (таких как диаграммы или карты)
", + "info_button.what_is_alt_text": "

Что это такое?

Альтернативный текст содержит описание изображения для людей с ограничениями зрения, медленным интернетом и для тех, кому нужен дополнительный контекст.

Вы можете улучшить доступность и понимание для всех, написав чёткий, краткий и объективный альтернативный текст.

  • Уловите важные элементы
  • Перескажите текстовую информацию на изображении
  • Используйте правильную структуру предложений
  • Избегайте избыточной информации
  • Сосредоточьтесь на тенденциях и ключевых выводах при описании сложных визуализаций, таких как диаграммы или карты
", "interaction_modal.action.favourite": "Вы можете добавить этот пост в избранное со своей учётной записью.", "interaction_modal.action.follow": "Вы можете подписаться со своей учётной записью.", "interaction_modal.action.reblog": "Вы можете продвинуть этот пост со своей учётной записью.", @@ -809,7 +812,7 @@ "search_popout.user": "пользователь", "search_results.accounts": "Профили", "search_results.all": "Все", - "search_results.hashtags": "Хэштеги", + "search_results.hashtags": "Хештеги", "search_results.no_results": "Ничего не найдено.", "search_results.no_search_yet": "Попробуйте поискать посты, профили или хэштеги.", "search_results.see_all": "Показать все", @@ -897,7 +900,7 @@ "time_remaining.seconds": "{number, plural, one {# секунда} many {# секунд} other {# секунды}}", "trends.counter_by_accounts": "{count, plural, few {{counter} человека} other {{counter} человек}} за {days, plural, one {последний {days} день} few {последние {days} дня} other {последние {days} дней}}", "trends.trending_now": "Самое актуальное", - "ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Mastodon.", + "ui.beforeunload": "Ваш черновик будет утрачен, если вы покинете Mastodon.", "units.short.billion": "{count} млрд", "units.short.million": "{count} млн", "units.short.thousand": "{count} тыс.", @@ -905,11 +908,11 @@ "upload_button.label": "Прикрепить фото, видео или аудио", "upload_error.limit": "Достигнут лимит загруженных файлов.", "upload_error.poll": "К опросам нельзя прикреплять файлы.", - "upload_form.drag_and_drop.instructions": "Чтобы подобрать прикрепленный файл, нажмите \"Пробел\" (Space) или \"Ввод\" (Enter). При перетаскивании используйте клавиши со стрелками, чтобы переместить прикрепленные файлы в любом направлении. Нажмите \"Пробел\" (Space) или \"Ввод\" (Enter) еще раз, чтобы переместить вложение в новое место, или нажмите кнопку \"Выйти\" (Escape), чтобы отменить.", - "upload_form.drag_and_drop.on_drag_cancel": "Перетаскивание было отменено. Вложение медиа {item} было удалено.", - "upload_form.drag_and_drop.on_drag_end": "Медиа вложение {item} было удалено.", - "upload_form.drag_and_drop.on_drag_over": "Медиа вложение {item} было перемещено.", - "upload_form.drag_and_drop.on_drag_start": "Загружается медиафайл {item}.", + "upload_form.drag_and_drop.instructions": "Чтобы выбрать вложение, нажмите \"Пробел\" (Space) или \"Ввод\" (Enter). Используйте клавиши со стрелками, чтобы передвинуть вложение в любом направлении. Нажмите \"Пробел\" (Space) или \"Ввод\" (Enter) ещё раз, чтобы переместить вложение на новое место, либо нажмите кнопку \"Выйти\" (Escape), чтобы отменить перемещение.", + "upload_form.drag_and_drop.on_drag_cancel": "Перемещение отменено. Вложение {item} было оставлено на прежнем месте.", + "upload_form.drag_and_drop.on_drag_end": "Вложение {item} было перемещено.", + "upload_form.drag_and_drop.on_drag_over": "Вложение {item} было передвинуто.", + "upload_form.drag_and_drop.on_drag_start": "Выбрано вложение {item}.", "upload_form.edit": "Редактировать", "upload_progress.label": "Загрузка...", "upload_progress.processing": "Обработка…", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 50c5f15796..a8c4001239 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -28,6 +28,9 @@ "account.edit_profile": "Përpunoni profilin", "account.enable_notifications": "Njoftomë, kur poston @{name}", "account.endorse": "Pasqyrojeni në profil", + "account.familiar_followers_many": "Ndjekur nga {name1}, {name2} dhe {othersCount, plural, one {# tjetër} other {# të tjerë}}", + "account.familiar_followers_one": "Ndjekur nga {name1}", + "account.familiar_followers_two": "Ndjekur nga {name1} dhe {name2}", "account.featured": "Të zgjedhur", "account.featured.accounts": "Profile", "account.featured.hashtags": "Hashtag-ë", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index d2da1f7751..75b05892f0 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -28,6 +28,9 @@ "account.edit_profile": "Profili düzenle", "account.enable_notifications": "@{name} kişisinin gönderi bildirimlerini aç", "account.endorse": "Profilimde öne çıkar", + "account.familiar_followers_many": "{name1}, {name2}, {othersCount, plural, one {# diğer} other {# diğer}} kişi tarafından takip ediliyor", + "account.familiar_followers_one": "{name1} tarafından takip ediliyor", + "account.familiar_followers_two": "{name1} ve {name2} tarafından takip ediliyor", "account.featured": "Öne çıkan", "account.featured.accounts": "Profiller", "account.featured.hashtags": "Etiketler", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 0bb31dcb99..b1a014f83c 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -28,6 +28,9 @@ "account.edit_profile": "Sửa hồ sơ", "account.enable_notifications": "Nhận thông báo khi @{name} đăng tút", "account.endorse": "Tôn vinh người này", + "account.familiar_followers_many": "Theo dõi bởi {name1}, {name2} và {othersCount, plural, other {# người khác}}", + "account.familiar_followers_one": "Theo dõi bởi {name1}", + "account.familiar_followers_two": "Theo dõi bởi {name1} và {name2}", "account.featured": "Nêu bật", "account.featured.accounts": "Mọi người", "account.featured.hashtags": "Hashtag", @@ -639,7 +642,7 @@ "notifications.column_settings.admin.sign_up": "Người mới tham gia:", "notifications.column_settings.alert": "Báo trên máy tính", "notifications.column_settings.favourite": "Lượt thích:", - "notifications.column_settings.filter_bar.advanced": "Toàn bộ", + "notifications.column_settings.filter_bar.advanced": "Hiện tất cả loại thông báo", "notifications.column_settings.filter_bar.category": "Thanh lọc nhanh", "notifications.column_settings.follow": "Người theo dõi:", "notifications.column_settings.follow_request": "Yêu cầu theo dõi:", @@ -654,10 +657,10 @@ "notifications.column_settings.unread_notifications.category": "Thông báo chưa đọc", "notifications.column_settings.unread_notifications.highlight": "Nổi bật thông báo chưa đọc", "notifications.column_settings.update": "Sửa tút:", - "notifications.filter.all": "Toàn bộ", + "notifications.filter.all": "Tất cả", "notifications.filter.boosts": "Đăng lại", "notifications.filter.favourites": "Lượt thích", - "notifications.filter.follows": "Đang theo dõi", + "notifications.filter.follows": "Người theo dõi mới", "notifications.filter.mentions": "Lượt nhắc đến", "notifications.filter.polls": "Kết quả bình chọn", "notifications.filter.statuses": "Cập nhật từ những người bạn theo dõi", @@ -667,21 +670,21 @@ "notifications.permission_denied": "Trình duyệt không cho phép hiển thị thông báo trên màn hình.", "notifications.permission_denied_alert": "Không thể bật thông báo trên màn hình bởi vì trình duyệt đã cấm trước đó", "notifications.permission_required": "Không hiện thông báo trên màn hình bởi vì chưa cho phép.", - "notifications.policy.accept": "Có", + "notifications.policy.accept": "Cho phép", "notifications.policy.accept_hint": "Hiện trong thông báo", - "notifications.policy.drop": "Không", + "notifications.policy.drop": "Bỏ qua", "notifications.policy.drop_hint": "Loại bỏ vĩnh viễn", "notifications.policy.filter": "Lọc", "notifications.policy.filter_hint": "Cho vào mục thông báo bị lọc", "notifications.policy.filter_limited_accounts_hint": "Chỉ dành cho kiểm duyệt viên", - "notifications.policy.filter_limited_accounts_title": "Kiểm duyệt tài khoản", + "notifications.policy.filter_limited_accounts_title": "Kiểm duyệt máy chủ", "notifications.policy.filter_new_accounts.hint": "Đã tạo trong vòng {days, plural, other {# ngày}}", - "notifications.policy.filter_new_accounts_title": "Tài khoản mới", - "notifications.policy.filter_not_followers_hint": "Bao gồm những người đã theo dõi bạn ít hơn {days, plural, other {# ngày}}", + "notifications.policy.filter_new_accounts_title": "Người mới tạo tài khoản", + "notifications.policy.filter_not_followers_hint": "Gồm những ai theo dõi bạn ít hơn {days, plural, other {# ngày}}", "notifications.policy.filter_not_followers_title": "Những người không theo dõi bạn", "notifications.policy.filter_not_following_hint": "Cho tới khi bạn duyệt họ", "notifications.policy.filter_not_following_title": "Những người bạn không theo dõi", - "notifications.policy.filter_private_mentions_hint": "Trừ khi nó trả lời lượt nhắc từ bạn hoặc nếu bạn có theo dõi người gửi", + "notifications.policy.filter_private_mentions_hint": "Trừ khi đó là trả lời lượt nhắc từ bạn hoặc nếu bạn có theo dõi người gửi", "notifications.policy.filter_private_mentions_title": "Lượt nhắn riêng không mong muốn", "notifications.policy.title": "Quản lý thông báo từ…", "notifications_permission_banner.enable": "Cho phép thông báo trên màn hình", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index bd910b1e7b..6644c43bcb 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -29,6 +29,7 @@ "account.enable_notifications": "当 @{name} 发布嘟文时通知我", "account.endorse": "在个人资料中推荐此用户", "account.featured": "精选", + "account.featured.accounts": "个人资料", "account.featured.hashtags": "话题", "account.featured.posts": "嘟文", "account.featured_tags.last_status_at": "上次发言于 {date}", @@ -62,6 +63,7 @@ "account.open_original_page": "打开原始页面", "account.posts": "嘟文", "account.posts_with_replies": "嘟文和回复", + "account.remove_from_followers": "从关注者中移除 {name}", "account.report": "举报 @{name}", "account.requested": "正在等待对方同意。点击取消发送关注请求", "account.requested_follow": "{name} 向你发送了关注请求", @@ -167,6 +169,7 @@ "column.lists": "列表", "column.mutes": "已隐藏的用户", "column.notifications": "通知", + "column.pins": "精选嘟文", "column.public": "跨站公共时间线", "column_back_button.label": "返回", "column_header.hide_settings": "隐藏设置", @@ -233,6 +236,7 @@ "confirmations.redraft.message": "确定删除这条嘟文并重写吗?所有相关的喜欢和转嘟都将丢失,嘟文的回复也会失去关联。", "confirmations.redraft.title": "是否删除并重新编辑嘟文?", "confirmations.remove_from_followers.confirm": "移除关注者", + "confirmations.remove_from_followers.message": "{name} 将停止关注您。您确定要继续吗?", "confirmations.remove_from_followers.title": "移除关注者?", "confirmations.reply.confirm": "回复", "confirmations.reply.message": "回复此消息将会覆盖当前正在编辑的信息。确定继续吗?", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 257cf5b599..226c68cd5c 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -28,6 +28,9 @@ "account.edit_profile": "編輯個人檔案", "account.enable_notifications": "當 @{name} 嘟文時通知我", "account.endorse": "於個人檔案推薦對方", + "account.familiar_followers_many": "被 {name1}、{name2}、及 {othersCount, plural, other {其他 # 人}} 跟隨", + "account.familiar_followers_one": "被 {name1} 跟隨", + "account.familiar_followers_two": "被 {name1} 與 {name2} 跟隨", "account.featured": "精選內容", "account.featured.accounts": "個人檔案", "account.featured.hashtags": "主題標籤", diff --git a/app/javascript/mastodon/reducers/accounts_familiar_followers.ts b/app/javascript/mastodon/reducers/accounts_familiar_followers.ts new file mode 100644 index 0000000000..8d1c994040 --- /dev/null +++ b/app/javascript/mastodon/reducers/accounts_familiar_followers.ts @@ -0,0 +1,19 @@ +import { createReducer } from '@reduxjs/toolkit'; + +import { fetchAccountsFamiliarFollowers } from '../actions/accounts_familiar_followers'; + +const initialState: Record = {}; + +export const accountsFamiliarFollowersReducer = createReducer( + initialState, + (builder) => { + builder.addCase( + fetchAccountsFamiliarFollowers.fulfilled, + (state, { payload }) => { + if (payload) { + state[payload.id] = payload.accountIds; + } + }, + ); + }, +); diff --git a/app/javascript/mastodon/reducers/index.ts b/app/javascript/mastodon/reducers/index.ts index 0b6e66a1b2..d35d166115 100644 --- a/app/javascript/mastodon/reducers/index.ts +++ b/app/javascript/mastodon/reducers/index.ts @@ -4,6 +4,7 @@ import { loadingBarReducer } from 'react-redux-loading-bar'; import { combineReducers } from 'redux-immutable'; import { accountsReducer } from './accounts'; +import { accountsFamiliarFollowersReducer } from './accounts_familiar_followers'; import { accountsMapReducer } from './accounts_map'; import { alertsReducer } from './alerts'; import announcements from './announcements'; @@ -50,6 +51,7 @@ const reducers = { status_lists, accounts: accountsReducer, accounts_map: accountsMapReducer, + accounts_familiar_followers: accountsFamiliarFollowersReducer, statuses, relationships: relationshipsReducer, settings, diff --git a/app/javascript/mastodon/selectors/accounts.ts b/app/javascript/mastodon/selectors/accounts.ts index a33daee867..f9ba1a76a6 100644 --- a/app/javascript/mastodon/selectors/accounts.ts +++ b/app/javascript/mastodon/selectors/accounts.ts @@ -59,3 +59,16 @@ export const getAccountHidden = createSelector( return hidden && !(isSelf || followingOrRequested); }, ); + +export const getAccountFamiliarFollowers = createSelector( + [ + (state: RootState) => state.accounts, + (state: RootState, id: string) => state.accounts_familiar_followers[id], + ], + (accounts, accounts_familiar_followers) => { + if (!accounts_familiar_followers) return null; + return accounts_familiar_followers + .map((id) => accounts.get(id)) + .filter((f) => !!f); + }, +); diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index d6ef86ae90..57e9976b85 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -2167,6 +2167,25 @@ a .account__avatar { cursor: pointer; } +.avatar-group { + display: flex; + gap: 8px; + flex-wrap: wrap; +} + +.avatar-group--compact { + gap: 0; + flex-wrap: nowrap; + + & > :not(:first-child) { + margin-inline-start: -8px; + + .account__avatar { + box-shadow: 0 0 0 2px var(--background-color); + } + } +} + .account__avatar-overlay { position: relative; @@ -8119,6 +8138,23 @@ noscript { } } } + + &__familiar-followers { + display: flex; + align-items: center; + gap: 10px; + margin-block-end: 16px; + color: $darker-text-color; + + a:any-link { + color: inherit; + text-decoration: underline; + } + + a:hover { + text-decoration: none; + } + } } .account__contents { @@ -10439,14 +10475,6 @@ noscript { } } - &__avatar-group { - display: flex; - gap: 8px; - height: 28px; - overflow-y: hidden; - flex-wrap: wrap; - } - .status { padding: 0; border: 0; diff --git a/app/javascript/types/emoji_picker.d.ts b/app/javascript/types/emoji_picker.d.ts new file mode 100644 index 0000000000..4649da7ed0 --- /dev/null +++ b/app/javascript/types/emoji_picker.d.ts @@ -0,0 +1,8 @@ +declare module 'emoji-mart' { + interface PickerProps { + sheetColumns?: number; + sheetRows?: number; + } +} + +export {}; diff --git a/app/models/concerns/user/omniauthable.rb b/app/models/concerns/user/omniauthable.rb index 396a0598f8..bf85885f44 100644 --- a/app/models/concerns/user/omniauthable.rb +++ b/app/models/concerns/user/omniauthable.rb @@ -99,7 +99,7 @@ module User::Omniauthable external: true, account_attributes: { username: ensure_unique_username(ensure_valid_username(auth.uid)), - display_name: auth.info.full_name || auth.info.name || [auth.info.first_name, auth.info.last_name].join(' '), + display_name: display_name_from_auth(auth), }, } end @@ -121,5 +121,10 @@ module User::Omniauthable temp_username = starting_username.gsub(/[^a-z0-9_]+/i, '') temp_username.truncate(30, omission: '') end + + def display_name_from_auth(auth) + display_name = auth.info.full_name || auth.info.name || [auth.info.first_name, auth.info.last_name].join(' ') + display_name.truncate(Account::DISPLAY_NAME_LENGTH_LIMIT, omission: '') + end end end diff --git a/app/models/user.rb b/app/models/user.rb index 292dada6b2..85176e363c 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -112,7 +112,7 @@ class User < ApplicationRecord validates_with RegistrationFormTimeValidator, on: :create validates :website, absence: true, on: :create validates :confirm_password, absence: true, on: :create - validates :date_of_birth, presence: true, date_of_birth: true, on: :create, if: -> { Setting.min_age.present? } + validates :date_of_birth, presence: true, date_of_birth: true, on: :create, if: -> { Setting.min_age.present? && !bypass_registration_checks? } validate :validate_role_elevation scope :account_not_suspended, -> { joins(:account).merge(Account.without_suspended) } @@ -144,7 +144,7 @@ class User < ApplicationRecord delegate :can?, to: :role attr_reader :invite_code, :date_of_birth - attr_writer :external, :bypass_invite_request_check, :current_account + attr_writer :external, :bypass_registration_checks, :current_account def self.those_who_can(*any_of_privileges) matching_role_ids = UserRole.that_can(*any_of_privileges).map(&:id) @@ -501,8 +501,8 @@ class User < ApplicationRecord !!@external end - def bypass_invite_request_check? - @bypass_invite_request_check + def bypass_registration_checks? + @bypass_registration_checks end def sanitize_role @@ -549,7 +549,7 @@ class User < ApplicationRecord end def invite_text_required? - Setting.require_invite_text && !open_registrations? && !invited? && !external? && !bypass_invite_request_check? + Setting.require_invite_text && !open_registrations? && !invited? && !external? && !bypass_registration_checks? end def trigger_webhooks diff --git a/app/models/user_settings.rb b/app/models/user_settings.rb index bb97b41bd0..4ee017a437 100644 --- a/app/models/user_settings.rb +++ b/app/models/user_settings.rb @@ -18,6 +18,7 @@ class UserSettings setting :default_privacy, default: nil, in: %w(public unlisted private) setting :default_content_type, default: 'text/plain' setting :hide_followers_count, default: false + setting :default_quote_policy, default: 'public', in: %w(public followers nobody) setting_inverse_alias :indexable, :noindex setting_inverse_alias :show_followers_count, :hide_followers_count diff --git a/app/views/admin/rules/index.html.haml b/app/views/admin/rules/index.html.haml index 5a2789edcf..41bff18d2f 100644 --- a/app/views/admin/rules/index.html.haml +++ b/app/views/admin/rules/index.html.haml @@ -1,21 +1,12 @@ - content_for :page_title do = t('admin.rules.title') -%p= t('admin.rules.description_html') +- content_for :heading_actions do + - if can? :create, :rule + = link_to t('admin.rules.add_new'), new_admin_rule_path, class: 'button' %hr.spacer/ -- if can? :create, :rule - = simple_form_for @rule, url: admin_rules_path do |form| - = render 'shared/error_messages', object: @rule - - = render form - - .actions - = form.button :button, t('admin.rules.add_new'), type: :submit - - %hr.spacer/ - - if @rules.empty? .muted-hint.center-text = t 'admin.rules.empty' diff --git a/app/views/admin/rules/new.html.haml b/app/views/admin/rules/new.html.haml new file mode 100644 index 0000000000..bc93c7df55 --- /dev/null +++ b/app/views/admin/rules/new.html.haml @@ -0,0 +1,14 @@ +- content_for :page_title do + = t('admin.rules.add_new') + +%p= t('admin.rules.description_html') + +%hr.spacer/ + += simple_form_for @rule, url: admin_rules_path do |form| + = render 'shared/error_messages', object: @rule + + = render form + + .actions + = form.button :button, t('admin.rules.add_new'), type: :submit diff --git a/app/views/auth/registrations/new.html.haml b/app/views/auth/registrations/new.html.haml index 25479104ee..22f53a4f50 100644 --- a/app/views/auth/registrations/new.html.haml +++ b/app/views/auth/registrations/new.html.haml @@ -56,7 +56,7 @@ .fields-group = f.input :date_of_birth, as: :date_of_birth, - hint: t('simple_form.hints.user.date_of_birth', age: Setting.min_age.to_i), + hint: t('simple_form.hints.user.date_of_birth', count: Setting.min_age.to_i), required: true, wrapper: :with_block_label diff --git a/app/views/settings/preferences/other/show.html.haml b/app/views/settings/preferences/other/show.html.haml index b260826fe5..65abe9090b 100644 --- a/app/views/settings/preferences/other/show.html.haml +++ b/app/views/settings/preferences/other/show.html.haml @@ -38,6 +38,17 @@ required: false, wrapper: :with_label + .fields-row + .fields-group.fields-row__column.fields-row__column-6 + = ff.input :default_quote_policy, + collection: %w(public followers nobody), + include_blank: false, + label_method: ->(policy) { I18n.t("statuses.quote_policies.#{policy}") }, + label: I18n.t('simple_form.labels.defaults.setting_default_quote_policy'), + hint: I18n.t('simple_form.hints.defaults.setting_default_quote_policy'), + required: false, + wrapper: :with_label + .fields-group = ff.input :default_sensitive, hint: I18n.t('simple_form.hints.defaults.setting_default_sensitive'), diff --git a/app/workers/activitypub/fetch_all_replies_worker.rb b/app/workers/activitypub/fetch_all_replies_worker.rb index 849a06d0fa..63e1f9618f 100644 --- a/app/workers/activitypub/fetch_all_replies_worker.rb +++ b/app/workers/activitypub/fetch_all_replies_worker.rb @@ -22,7 +22,7 @@ class ActivityPub::FetchAllRepliesWorker @root_status.touch(:fetched_replies_at) Rails.logger.debug { "FetchAllRepliesWorker - #{@root_status.uri}: Fetching all replies for status: #{@root_status}" } - uris_to_fetch, n_pages = get_replies(@root_status.uri, MAX_PAGES, options) + uris_to_fetch, n_pages = get_root_replies(@root_status.uri, options) return if uris_to_fetch.nil? fetched_uris = uris_to_fetch.clone.to_set @@ -49,20 +49,39 @@ class ActivityPub::FetchAllRepliesWorker private - def get_replies(status_uri, max_pages, options = {}) - replies_collection_or_uri = get_replies_uri(status_uri) + # @param status [String, Hash] + # status URI, or the prefetched body of the Note object + def get_replies(status, max_pages, options = {}) + replies_collection_or_uri = get_replies_uri(status) return if replies_collection_or_uri.nil? - ActivityPub::FetchAllRepliesService.new.call(status_uri, replies_collection_or_uri, max_pages: max_pages, **options.deep_symbolize_keys) + ActivityPub::FetchAllRepliesService.new.call(value_or_id(status), replies_collection_or_uri, max_pages: max_pages, **options.deep_symbolize_keys) end - def get_replies_uri(parent_status_uri) - fetch_resource(parent_status_uri, true)&.fetch('replies', nil) + # Get the URI of the replies collection of a status + # + # @param parent_status [String, Hash] + # status URI, or the prefetched body of the Note object + def get_replies_uri(parent_status) + resource = parent_status.is_a?(Hash) ? parent_status : fetch_resource(parent_status, true) + resource&.fetch('replies', nil) rescue => e - Rails.logger.info { "FetchAllRepliesWorker - #{@root_status.uri}: Caught exception while resolving replies URI #{parent_status_uri}: #{e} - #{e.message}" } + Rails.logger.info { "FetchAllRepliesWorker - #{@root_status.uri}: Caught exception while resolving replies URI #{parent_status}: #{e} - #{e.message}" } # Raise if we can't get the collection for top-level status to trigger retry - raise e if parent_status_uri == @root_status.uri + raise e if value_or_id(parent_status) == @root_status.uri nil end + + # Get the root status, updating the status without fetching it twice + # + # @param root_status_uri [String] + def get_root_replies(root_status_uri, options = {}) + root_status_body = fetch_resource(root_status_uri, true) + raise RuntimeError("FetchAllRepliesWorker - #{@root_status.uri}: Root status could not be fetched") if root_status_body.nil? + + FetchReplyWorker.perform_async(root_status_uri, { **options, prefetched_body: root_status_body }) + + get_replies(root_status_body, MAX_PAGES, options) + end end diff --git a/app/workers/fetch_reply_worker.rb b/app/workers/fetch_reply_worker.rb index 68a7414beb..ecb232bbbb 100644 --- a/app/workers/fetch_reply_worker.rb +++ b/app/workers/fetch_reply_worker.rb @@ -7,6 +7,6 @@ class FetchReplyWorker sidekiq_options queue: 'pull', retry: 3 def perform(child_url, options = {}) - FetchRemoteStatusService.new.call(child_url, **options.deep_symbolize_keys) + FetchRemoteStatusService.new.call(child_url, **options.symbolize_keys) end end diff --git a/config/initializers/deprecations.rb b/config/initializers/deprecations.rb index e0ad54d8c3..f9f3745d6a 100644 --- a/config/initializers/deprecations.rb +++ b/config/initializers/deprecations.rb @@ -3,14 +3,16 @@ if ENV['REDIS_NAMESPACE'] es_configured = ENV['ES_ENABLED'] == 'true' || ENV.fetch('ES_HOST', 'localhost') != 'localhost' || ENV.fetch('ES_PORT', '9200') != '9200' || ENV.fetch('ES_PASS', 'password') != 'password' - warn <<~MESSAGE - WARNING: the REDIS_NAMESPACE environment variable is deprecated and will be removed in Mastodon 4.4.0. + message = <<~MESSAGE + ERROR: the REDIS_NAMESPACE environment variable is no longer supported, and a migration is required. Please see documentation at https://github.com/mastodon/redis_namespace_migration MESSAGE - warn <<~MESSAGE if es_configured && !ENV['ES_PREFIX'] + message += <<~MESSAGE if es_configured && !ENV['ES_PREFIX'] In addition, as REDIS_NAMESPACE is being used as a prefix for Elasticsearch, please do not forget to set ES_PREFIX to "#{ENV.fetch('REDIS_NAMESPACE')}". MESSAGE + + abort message end diff --git a/config/locales/br.yml b/config/locales/br.yml index e61a43643e..8a18e000f8 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -553,6 +553,8 @@ br: two: "%{count} skeudenn" pin_errors: ownership: N'hallit ket spilhennañ embannadurioù ar re all + quote_policies: + public: Pep den visibilities: direct: War-eeun public: Publik diff --git a/config/locales/cs.yml b/config/locales/cs.yml index bb9f187254..422b2ab415 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -1944,6 +1944,10 @@ cs: limit: Už jste si připnuli maximální počet příspěvků ownership: Nelze připnout příspěvek někoho jiného reblog: Boosty nelze připnout + quote_policies: + followers: Sledující a zmínění uživatelé + nobody: Pouze zmínění uživatelé + public: Všichni title: "%{name}: „%{quote}“" visibilities: direct: Přímé diff --git a/config/locales/da.yml b/config/locales/da.yml index db83d2a64b..806eeafef8 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -1858,6 +1858,10 @@ da: limit: Maksimalt antal indlæg allerede fastgjort ownership: Andres indlæg kan ikke fastgøres reblog: En fremhævelse kan ikke fastgøres + quote_policies: + followers: Følgere og nævnte brugere + nobody: Kun nævnte brugere + public: Alle title: '%{name}: "%{quote}"' visibilities: direct: Direkte diff --git a/config/locales/de.yml b/config/locales/de.yml index 4a9fdd5cfb..696f986b07 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1855,6 +1855,10 @@ de: limit: Du hast bereits die maximale Anzahl an Beiträgen angeheftet ownership: Du kannst nur eigene Beiträge anheften reblog: Du kannst keine geteilten Beiträge anheften + quote_policies: + followers: Follower und erwähnte Profile + nobody: Nur erwähnte Profile + public: Alle title: "%{name}: „%{quote}“" visibilities: direct: Direktnachricht diff --git a/config/locales/devise.lv.yml b/config/locales/devise.lv.yml index e60f8fa62e..53b88ed08d 100644 --- a/config/locales/devise.lv.yml +++ b/config/locales/devise.lv.yml @@ -6,7 +6,7 @@ lv: send_instructions: Pēc dažām minūtēm saņemsi e-pasta ziņojum ar norādēm, kā apstiprināt savu e-pasta adresi. Lūgums pārbaudīt mēstuļu mapi, ja nesaņēmi šo e-pasta ziņojumu. send_paranoid_instructions: Ja Tava e-pasta adrese ir mūsu datubāzē, pēc dažām minūtēm saņemsi e-pasta ziņojumu ar norādēm, kā apstiprināt savu e-pasta adresi. Lūgums pārbaudīt mēstuļu mapi, ja nesaņēmi šo e-pasta ziņojumu. failure: - already_authenticated: Tu jau esi pieteicies. + already_authenticated: Tu jau pieteicies. inactive: Tavs konts vēl nav aktivizēts. invalid: Nederīga %{authentication_keys} vai parole. last_attempt: Tev ir vēl viens mēģinājums, pirms tavs konts tiks bloķēts. diff --git a/config/locales/doorkeeper.lv.yml b/config/locales/doorkeeper.lv.yml index 15c1e7692a..4b8116e6af 100644 --- a/config/locales/doorkeeper.lv.yml +++ b/config/locales/doorkeeper.lv.yml @@ -19,7 +19,7 @@ lv: doorkeeper: applications: buttons: - authorize: Autorizēt + authorize: Pilnvarot cancel: Atcelt destroy: Iznīcināt edit: Labot @@ -55,40 +55,40 @@ lv: title: 'Lietotne: %{name}' authorizations: buttons: - authorize: Autorizēt - deny: Aizliegt + authorize: Pilnvarot + deny: Noraidīt error: title: Radās kļūda new: prompt_html: "%{client_name} vēlas atļauju piekļūt Tavam kontam. Apstiprini šo pieprasījumu tikai tad, ja atpazīsti un uzticies šim avotam!" review_permissions: Pārskatīt atļaujas - title: Nepieciešama autorizācija + title: Nepieciešama pilnvarošana show: - title: Nokopē šo autorizācijas kodu un ielīmē to lietotnē. + title: Šis pilnvarošanas kods jāievieto starpliktuvē un jāielīmē lietotnē. authorized_applications: buttons: revoke: Atsaukt confirmations: revoke: Vai tiešām? index: - authorized_at: Autorizētas %{date} + authorized_at: Pilnvarotas %{date} description_html: Šīs ir lietotnes, kas var piekļūt Tavam kontam ar API. Ja šeit ir lietotnes, kuras neatpazīsti, vai lietotne darbojas ne tā, kā paredzēts, vari atsaukt tās piekļuvi. last_used_at: Pēdējo reizi lietotas %{date} never_used: Nekad nav lietotas scopes: Atļaujas superapp: Iekšējs - title: Tevis autorizētās lietotnes + title: Tevis pilnvarotās lietotnes errors: messages: - access_denied: Resursa īpašnieks vai autorizācijas serveris pieprasījumu noraidīja. + access_denied: Resursa īpašnieks vai pilnvarošanas serveris noraidīja pieprasījumu. credential_flow_not_configured: Resursa īpašnieka paroles akreditācijas datu plūsma neizdevās, jo Doorkeeper.configure.resource_owner_from_credentials nebija konfigurēts. invalid_client: Klienta autentifikācija neizdevās nezināma klienta, klienta autentifikācijas vai neatbalstītas autentifikācijas metodes dēļ. invalid_code_challenge_method: Koda izaicinājuma veidam jābūt S256, vienkāršs netiek atbalstīts. - invalid_grant: Sniegtā autorizācijas piekrišana nav derīga, tai ir beidzies derīguma termiņš, tā ir atsaukta, tā neatbilst autorizācijas pieprasījumā izmantotajam novirzīšanas URI vai tika izsniegta citam klientam. + invalid_grant: Sniegtais pilnvarošanas piešķīrums nav derīgs, tam ir beidzies derīgums, tas ir atsaukts, tas neatbilst pilnvarošanas pieprasījumā izmantotajam pārvirzīšanas URI vai tika izsniegts citam klientam. invalid_redirect_uri: Iekļauts novirzīšanas uri nav derīgs. invalid_request: missing_param: 'Trūkst pieprasītā parametra: %{value}.' - request_not_authorized: Pieprasījums ir jāautorizē. Trūkst vai nav derīgs pieprasījuma autorizēšanai nepieciešamais parametrs. + request_not_authorized: Pieprasījums ir jāpilnvaro. Trūkst vai nav derīgas pieprasījuma pilnvarošanai nepieciešamās vērtības. unknown: Pieprasījumā trūkst nepieciešamā parametra, tajā ir neatbalstīta parametra vērtība vai tas ir citādi nepareizi veidots. invalid_resource_owner: Norādītie resursa īpašnieka akreditācijas dati nav derīgi, vai arī resursa īpašnieku nevar atrast invalid_scope: Pieprasītā darbības joma nav derīga, nav zināma vai ir nepareizi veidota. @@ -97,11 +97,11 @@ lv: revoked: Piekļuves pilnvara tika atsaukta unknown: Piekļuves pilnvara nav derīga resource_owner_authenticator_not_configured: Resursa īpašnieka atrašana neizdevās, jo Doorkeeper.configure.resource_owner_authenticator nav savienots. - server_error: Autorizācijas serverim radās neparedzēts nosacījums, kas neļāva izpildīt pieprasījumu. - temporarily_unavailable: Autorizācijas serveris pašlaik nevar apstrādāt pieprasījumu servera īslaicīgas pārslodzes vai apkopes dēļ. + server_error: Pilnvarošanas serverim radās neparedzēti apstākļi, kas tam neļāva izpildīt pieprasījumu. + temporarily_unavailable: Pilnvarošanas serveris šobrīd nevar apstrādāt pieprasījumu servera īslaicīgas pārslodzes vai uzturēšanas darbu dēļ. unauthorized_client: Klients nav pilnvarots izpildīt šo pieprasījumu, izmantojot šo metodi. - unsupported_grant_type: Autorizācijas serveris neatbalsta atļaujas piešķiršanas veidu. - unsupported_response_type: Autorizācijas serveris neatbalsta šo atbildes veidu. + unsupported_grant_type: Pilnvarošanas serveris neatbalsta atļaujas piešķiršanas veidu. + unsupported_response_type: Pilnvarošanas serveris neatbalsta šo atbildes veidu. flash: applications: create: @@ -123,14 +123,14 @@ lv: admin/accounts: Kontu pārvaldīšana admin/all: Visas administrēšanas funkcijas admin/reports: Ziņojumu pārvaldīšana - all: Pilna piekļuve tavam Mastodon kontam + all: Pilna piekļuve Tavam Mastodon kontam blocks: Bloķētie bookmarks: Grāmatzīmes conversations: Sarunas crypto: Pilnīga šifrēšana favourites: Izlase filters: Filtri - follow: Seko, Izslēdz un Bloķē + follow: Seko, apklusina un liedz follows: Seko lists: Saraksti media: Multividesu pielikumi @@ -147,7 +147,7 @@ lv: applications: Lietotnes oauth2_provider: OAuth2 nodrošinātājs application: - title: OAuth nepieciešama autorizācija + title: Nepieciešama OAuth pilnvarošana scopes: admin:read: lasīt visus datus uz servera admin:read:accounts: lasīt jūtīgu informāciju no visiem kontiem diff --git a/config/locales/en.yml b/config/locales/en.yml index 63ef106d5c..83695cd6e7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1859,6 +1859,10 @@ en: limit: You have already pinned the maximum number of posts ownership: Someone else's post cannot be pinned reblog: A boost cannot be pinned + quote_policies: + followers: Followers and mentioned users + nobody: Only mentioned users + public: Everyone title: '%{name}: "%{quote}"' visibilities: direct: Direct diff --git a/config/locales/eo.yml b/config/locales/eo.yml index a514d332a8..40b7bc898e 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -319,6 +319,7 @@ eo: create: Krei anoncon title: Nova anonco preview: + disclaimer: Pro uzantoj ne povas elekti ne ricevi ilin, retpoŝtaj sciigoj devus esti uzata nur por gravaj anoncoj kiel memaj breĉoj de datumo aŭ sciigoj pri la fermado de la servilo. explanation_html: 'La retpoŝto estos sendita al %{display_count} uzantoj. La jena teksto estos inkluzivita en la retmesaĝon:' title: Antaŭrigardu sciigan anoncon publish: Publikigi @@ -482,13 +483,33 @@ eo: fasp: debug: callbacks: + created_at: Kreita je delete: Forigi + ip: IP-adreso + request_body: Enhavo de la peto + title: Revokoj de ĝustigado providers: + active: Aktivaj + base_url: Funda URL + callback: Revoko delete: Forigi + edit: Donanto de ŝanĝo + finish_registration: Fini registradon name: Nomo + providers: Donantoj + public_key_fingerprint: Publikoŝloŝila fingrospuro + registration_requested: Registrado postulita registrations: confirm: Konfirmi + description: Vi ricevis registradon de FASP. Malakcepti ĝin se vi ne komencis ĉi tiun. Se vi ja, zorge kompari nomon kaj ŝloŝilafingrospuron antaŭ ol konfirmas la registradon. + reject: Malakcepti + title: Konfirmi registradon de FASP + save: Konservi + select_capabilities: Elekti mandatojn sign_in: Ensaluti + status: Stato + title: Fediversaj helpaj servicaj donantoj + title: FASP follow_recommendations: description_html: "Sekvorekomendoj helpi novajn uzantojn rapide trovi interesa enhavo. Ili rekalkulitas ĉiutage lau interagoj kaj sekvantokvantoj." language: Por la lingvo @@ -778,7 +799,7 @@ eo: title: Pri appearance: preamble: Personecigi retinterfaco de Mastodon. - title: Apero + title: Aspekto branding: preamble: Via markeco de servilo malsamigas ĝin de aliaj servilojn en la reto. Do, la informo devus esti simpla kaj mallonga. title: Markeco @@ -882,6 +903,8 @@ eo: system_checks: database_schema_check: message_html: Estas pritraktataj datumbazaj migradoj. Bonvolu ekzekuti ilin por certigi, ke la apliko kondutas kiel atendite + elasticsearch_analysis_index_mismatch: + message_html: Agordoj de la indeksa analizilo estas malmodernaj. Bonvolu plenumi tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: Elasticsearch peniko estas malsana (ruĝa statuso), trajtoj de serĉo malhaveblas elasticsearch_health_yellow: diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 18767dc0db..e4f282a085 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -1858,6 +1858,10 @@ es-AR: limit: Ya fijaste el número máximo de mensajes ownership: No se puede fijar el mensaje de otra cuenta reblog: No se puede fijar una adhesión + quote_policies: + followers: Seguidores y usuarios mencionados + nobody: Solo usuarios mencionados + public: Todos title: '%{name}: "%{quote}"' visibilities: direct: Directo diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 160f26e365..1e58b1c9cd 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -1858,6 +1858,10 @@ es-MX: limit: Ya has fijado el número máximo de publicaciones ownership: La publicación de alguien más no puede fijarse reblog: No se puede fijar una publicación impulsada + quote_policies: + followers: Seguidores y usuarios mencionados + nobody: Solo usuarios mencionados + public: Cualquiera title: "%{name}: «%{quote}»" visibilities: direct: Directa diff --git a/config/locales/es.yml b/config/locales/es.yml index 85f6088822..de82abb465 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1858,6 +1858,10 @@ es: limit: Ya has fijado el número máximo de publicaciones ownership: La publicación de otra persona no puede fijarse reblog: Una publicación impulsada no puede fijarse + quote_policies: + followers: Seguidores y usuarios mencionados + nobody: Solo usuarios mencionados + public: Cualquiera title: "%{name}: «%{quote}»" visibilities: direct: Directa diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 718fb653e4..69e473a02d 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -1852,6 +1852,10 @@ fi: limit: Olet jo kiinnittänyt enimmäismäärän julkaisuja ownership: Muiden julkaisuja ei voi kiinnittää reblog: Tehostusta ei voi kiinnittää + quote_policies: + followers: Seuraajat ja mainitut käyttäjät + nobody: Vain mainitut käyttäjät + public: Kaikki title: "%{name}: ”%{quote}”" visibilities: direct: Suoraan diff --git a/config/locales/fo.yml b/config/locales/fo.yml index 4bb4327949..8606fa7913 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -1858,6 +1858,10 @@ fo: limit: Tú hevur longu fest loyvda talið av postum ownership: Postar hjá øðrum kunnu ikki festast reblog: Ein stimbran kann ikki festast + quote_policies: + followers: Fylgjarar og nevndir brúkarar + nobody: Bara nevndir brúkarar + public: Øll title: '%{name}: "%{quote}"' visibilities: direct: Beinleiðis diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 1e08d47dc2..3bffae650e 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -326,6 +326,7 @@ gd: title: Brath-fios ùr preview: disclaimer: Air sgàth ’s nach urrainn dhan luchd-cleachdaidh an diùltadh, bu chòir dhut na brathan air a’ phost-d a chuingeachadh air brathan-fios cudromach mar briseadh a-steach air dàta pearsanta no brath-fios mu dhùnadh an fhrithealaiche. + explanation_html: 'Thèid am post-d seo a chur gu %{display_count} luchd-cleachdaidh. Thèid an teacsa seo a ghabhail a-staigh sa phost-d:' title: Ro-shealladh air a’ bhrath-fhios publish: Foillsich published_msg: Chaidh am brath-fios fhoillseachadh! @@ -523,6 +524,8 @@ gd: select_capabilities: Tagh comasan sign_in: Clàraich a-steach status: Staid + title: Fediverse Auxiliary Service Providers + title: FASP follow_recommendations: description_html: "Cuidichidh molaidhean leantainn an luchd-cleachdaidh ùr ach an lorg iad susbaint inntinneach gu luath. Mur an do ghabh cleachdaiche conaltradh gu leòr le càch airson molaidhean leantainn gnàthaichte fhaighinn, mholamaid na cunntasan seo ’nan àite. Thèid an àireamhachadh às ùr gach latha, stèidhichte air na cunntasan air an robh an conaltradh as trice ’s an luchd-leantainn ionadail as motha sa chànan." language: Dhan chànan @@ -999,14 +1002,17 @@ gd: generates: action: Gin chance_to_review_html: "Cha dèid na teirmichean na seirbheise air an gintinn fhoillseachadh gu fèin-obrachail. Bidh teans agad gus lèirmheas a dhèanamh air an toradh. Lean am fiosrachadh riatanach airson leantainn air adhart." + explanation_html: Tha an teamplaid airson teirmichean na seirbheise ’ga sholar a chùm fiosrachaidh a-mhàin agus cha bu chòir a mheas mar chomhairle laghail air cuspair sam bith. Gabh comhairle o neach-lagha agad fhèin air an t-suidheachadh agad ’s air ceistean sam bith agad mun lagh. title: Suidheachadh teirmichean na seirbheise going_live_on_html: Beò, èifeachdach on %{date} history: Eachdraidh live: Beò no_history: Cha deach atharrachadh sam bith air teirmichean na seirbheise a chlàradh fhathast. + no_terms_of_service_html: Cha do rèitich thu teirmichean na seirbheise aig an àm seo. Tha teirmichean seirbheise ag amas nithean a dhèanamh soilleir agus do dhìon o uallaichean ann an connspaidean leis an luchd-cleachdaidh agad a dh’èireas ma dh’fhaoidte. notified_on_html: Fhuair an luchd-cleachdaidh brath %{date} notify_users: Cuir brath dhan luchd-chleachdaidh preview: + explanation_html: 'Thèid am post-d seo a chur gu %{display_count} luchd-cleachdaidh a chlàraich ro %{date}. Thèid an teacsa seo a ghabhail a-staigh sa phost-d:' send_preview: Cuir ro-shealladh gu %{email} send_to_all: few: Cuir %{display_count} puist-d @@ -2056,6 +2062,10 @@ gd: subject: Chaidh an cunntas agad inntrigeadh o sheòladh IP ùr title: Clàradh a-steach ùr terms_of_service_changed: + agreement: Ma chumas tu a’ dol a chleachdadh %{domain}, aontaichidh tu ris na teirmichean seo. Mur aontaich thu ris na teirmichean ùra, ’s urrainn dhut crìoch a chur air d’ aonta le %{domain} uair sam bith le sguabadh às a’ chunntais agad. + changelog: 'Ann am priobadh na sùla, seo na tha an t-ùrachadh seo a’ ciallachadh dhut:' + description: 'Tha thu a’ faighinn a’ phuist-d seo air sgàth ’s gu bheil sinn ag atharrachadh teirmichean na seirbheise againn airson %{domain}. Bidh na h-ùrachaidhean seo èifeachdach an %{date}. Mholamaid gun dèan thu lèirmheas air na teirmichean ùra slàna an-seo:' + description_html: Tha thu a’ faighinn a’ phuist-d seo air sgàth ’s gu bheil sinn ag atharrachadh teirmichean na seirbheise againn airson %{domain}. Bidh na h-ùrachaidhean seo èifeachdach an %{date}. Mholamaid gun dèan thu lèirmheas air na teirmichean ùra slàna an-seo. sign_off: Sgioba %{domain} subject: Ùrachaidhean air teirmichean na seirbheise againn subtitle: Tha teirmichean na seirbheise aig %{domain} gan atharrachadh diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 371a60eb58..6faa967f30 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -1858,6 +1858,10 @@ gl: limit: Xa fixaches o número máximo permitido de publicacións ownership: Non podes fixar a publicación doutra usuaria reblog: Non se poden fixar as mensaxes promovidas + quote_policies: + followers: Seguidoras e usuarias mencionadas + nobody: Só usuarias mencionadas + public: Calquera title: '%{name}: "%{quote}"' visibilities: direct: Directa diff --git a/config/locales/he.yml b/config/locales/he.yml index 3690010b95..23f008b94d 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -1944,6 +1944,10 @@ he: limit: הגעת למספר המירבי של ההודעות המוצמדות ownership: הודעות של אחרים לא יכולות להיות מוצמדות reblog: אין אפשרות להצמיד הדהודים + quote_policies: + followers: עוקבים ומאוזכרים + nobody: רק מאוזכרים ומאוזכרות + public: כולם title: '%{name}: "%{quote}"' visibilities: direct: ישיר diff --git a/config/locales/is.yml b/config/locales/is.yml index 17dc450776..f4a6b2d68f 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -1862,6 +1862,10 @@ is: limit: Þú hefur þegar fest leyfilegan hámarksfjölda færslna ownership: Færslur frá einhverjum öðrum er ekki hægt að festa reblog: Ekki er hægt að festa endurbirtingu + quote_policies: + followers: Fylgjendur og notendur sem minnst er á + nobody: Einungis notendur sem minnst er á + public: Allir title: "%{name}: „%{quote}‟" visibilities: direct: Beint diff --git a/config/locales/it.yml b/config/locales/it.yml index 5c0a45f39a..9894e99199 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -903,6 +903,8 @@ it: system_checks: database_schema_check: message_html: Ci sono migrazioni del database in attesa. Sei pregato di eseguirle per assicurarti che l'applicazione si comporti come previsto + elasticsearch_analysis_index_mismatch: + message_html: Le impostazioni dell'analizzatore di indice Elasticsearch sono obsolete. Si prega di eseguire tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: Il cluster Elasticsearch non è integro (stato rosso), le funzionalità di ricerca non sono disponibili elasticsearch_health_yellow: @@ -1218,7 +1220,7 @@ it: back: Indietro invited_by: 'Puoi unirti a %{domain} grazie all''invito che hai ricevuto da:' preamble: Questi sono impostati e applicati dai moderatori di %{domain}. - preamble_invited: Prima di procedere, si prega di considera le regole di base stabilite dai moderatori di %{domain}. + preamble_invited: Prima di procedere, si prega di considerare le regole di base stabilite dai moderatori di %{domain}. title: Alcune regole di base. title_invited: Sei stato/a invitato/a. security: Credenziali diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 924b7bf607..38a340516d 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -17,7 +17,7 @@ lv: link_verified_on: Šīs saites piederība tika pārbaudīta %{date} nothing_here: Šeit nekā nav. pin_errors: - following: Tev ir jāseko personai, kuru vēlies atbalstīt + following: Tev ir jāseko cilvēkam, kuru vēlies atbalstīt posts: one: Ieraksts other: Ieraksti @@ -316,6 +316,7 @@ lv: create: Izveidot paziņojumu title: Jauns paziņojums preview: + disclaimer: Tā kā lietotāji nevar atteikties no e-pasta paziņojumiem, tos vajadzētu izmantot tikai svarīgiem paziņojumiem, piemēram, personīgo datu noplūdi vai servera aizvēršanas paziņojumiem. explanation_html: 'E-pasta ziņojums tiks nosūtīts %{display_count} lietotājiem. Šis teksts tiks iekļauts e-pasta ziņojumā:' title: Priekšskatīt paziņojumu publish: Publicēt @@ -331,7 +332,7 @@ lv: assign_category: Piešķirt kategoriju by_domain: Domēns copied_msg: Emocijzīmes vietējā kopija ir sekmīgi izveidota - copy: Kopēt + copy: Ievietot starpliktuvē copy_failed_msg: Nevarēja izveidot šīs emocijzīmes vietējo kopiju create_new_category: Izveidot jaunu kategoriju created_msg: Emocijzīme sekmīgi izveidota. @@ -474,7 +475,7 @@ lv: import: description_html: Tu gatavojies importēt domēna bloku sarakstu. Lūdzu, ļoti rūpīgi pārskati šo sarakstu, it īpaši, ja tu pats neesi to veidojis. existing_relationships_warning: Esošās sekošanas attiecības - private_comment_description_html: 'Lai palīdzētu tev izsekot, no kurienes nāk importētie bloki, tiks izveidoti importētie bloki ar šādu privātu komentāru: %{comment}' + private_comment_description_html: 'Lai palīdzētu Tev izsekot ievietoto bloku izcelsmei, tiks izveidoti ievietotie bloki ar šādu privātu piebildi: %{comment}' private_comment_template: Importēt no %{source} %{date} title: Importēt bloķētos domēnus invalid_domain_block: 'Viens vai vairāki domēna bloķi tika izlaisti šādas kļūdas(-u) dēļ: %{error}' @@ -1440,7 +1441,7 @@ lv: cancel: Atcelt changes_saved_msg: Izmaiņas sekmīgi saglabātas. confirm: Apstiprināt - copy: Kopēt + copy: Ievietot starpliktuvē delete: Dzēst deselect: Atcelt visu atlasi none: Neviens @@ -1658,12 +1659,12 @@ lv: subject: "%{name} pievienoja tavu ziņu izlasei" title: Jauna izlase follow: - body: "%{name} tagad tev seko!" - subject: "%{name} tagad tev seko" + body: "%{name} tagad seko Tev." + subject: "%{name} tagad seko Tev" title: Jauns sekotājs follow_request: action: Pārvaldīt sekošanas pieprasījumus - body: "%{name} vēlas tev sekot" + body: "%{name} vēlas Tev sekot" subject: 'Gaidošs sekotājs: %{name}' title: Jauns sekotāja pieprasījums mention: @@ -1730,7 +1731,7 @@ lv: privacy: Privātums privacy_hint_html: Kontrolē, cik daudz vēlies izpaust citu labā. Cilvēki atklāj interesantus profilus un lieliskas lietotnes, pārlūkojot citu cilvēku sekotājus un redzot, no kurām lietotnēm viņi izliek ziņas, taču tu, iespējams, vēlēsies to slēpt. reach: Sasniedzamība - reach_hint_html: Kontrolē, vai vēlies, lai tevi atklātu un sekotu jauni cilvēki. Vai vēlies, lai tavas ziņas tiktu parādītas ekrānā Izpēte? Vai vēlies, lai citi cilvēki tevi redzētu savos ieteikumos? Vai vēlies automātiski pieņemt visus jaunos sekotājus vai arī tev ir pilnīga kontrole pār katru? + reach_hint_html: Pārvaldi, vai vēlies, lai Tevi atklātu un sekotu jauni cilvēki. Vai vēlies, lai Tavas ziņas tiktu parādītas skatā "Izpēte"? Vai vēlies, lai citi cilvēki Tevi redzētu savos ieteikumos? Vai vēlies automātiski pieņemt visus jaunos sekotājus vai iegūt izvērstu pārvaldību par katru atsevišķi? search: Meklēt search_hint_html: Nosaki, kā vēlies tikt atrasts! Vai vēlies, lai cilvēki Tevi atrod pēc tā, par ko esi veicis visiem redzamus ierakstus? Vai vēlies, lai cilvēki ārpus Mastodon atrastu Tavu profilu, meklējot tīmeklī? Lūdzu, ņem vērā, ka nevar nodrošināt visiem redzamas informācijas pilnīgu izslēgšanu no visām meklētājiem! title: Privātums un sasniedzamība @@ -1832,7 +1833,7 @@ lv: account_settings: Konta iestatījumi aliases: Konta aizstājvārdi appearance: Izskats - authorized_apps: Autorizētās lietotnes + authorized_apps: Pilnvarotās lietotnes back: Atgriezties Mastodon delete: Konta dzēšana development: Izstrāde @@ -2005,7 +2006,7 @@ lv: title: Neizdevās otrās pakāpes autentificēšanās suspicious_sign_in: change_password: mainīt paroli - details: 'Šeit ir pieteikšanās izvērsums:' + details: 'Šeit ir informācija par pieteikšanos:' explanation: Esam noteikuši pieteikšanos Tavā kontā no jaunas IP adreses. further_actions_html: Ja tas nebiji tu, iesakām nekavējoties %{action} un iespējot divu faktoru autentifikāciju, lai tavs konts būtu drošībā. subject: Tavam kontam ir piekļūts no jaunas IP adreses @@ -2029,7 +2030,7 @@ lv: disable: Tu vairs nevari izmantot savu kontu, taču tavs profils un citi dati paliek neskarti. Tu vari pieprasīt savu datu dublējumu, mainīt konta iestatījumus vai dzēst kontu. mark_statuses_as_sensitive: "%{instance} satura pārraudzītāji dažus no Taviem ierakstiem ir atzīmējuši kā jūtīgus. Tas nozīmē, ka cilvēkiem būs jāpiesit ierakstos esošajiem informāijas nesējiem, pirms tiek attēlots to priekšskatījums. Tu pats vari atzīmēt informācijas nesēju kā jūtīgu, kad nākotnē tādu ievietosi." sensitive: Turpmāk visi augšupielādētās informācijas nesēju datnes tiks atzīmētas kā jūtīgas un paslēptas aiz klikšķināma brīdinājuma. - silence: Tu joprojām vari izmantot savu kontu, taču tikai tie cilvēki, kuri jau tev seko, redzēs tavas ziņas šajā serverī, un tev var tikt liegtas dažādas atklāšanas funkcijas. Tomēr citi joprojām var tev manuāli sekot. + silence: Tu joprojām vari izmantot savu kontu, taču tikai tie cilvēki, kuri jau seko Tev, redzēs Tavas ziņas šajā serverī, un Tevi var neiekļaut dažādās atklāšanas iespējās. Tomēr citi joprojām var pašrocīgi sekot Tev. suspend: Tu vairs nevari izmantot savu kontu, un tavs profils un citi dati vairs nav pieejami. Tu joprojām vari pieteikties, lai pieprasītu savu datu dublēšanu, līdz dati tiks pilnībā noņemti aptuveni 30 dienu laikā, taču mēs saglabāsim dažus pamata datus, lai neļautu tev izvairīties no apturēšanas. reason: 'Iemesls:' statuses: 'Citētās ziņas:' @@ -2098,7 +2099,7 @@ lv: extra_instructions_html: Padoms: saite Tavā vietnē var būt neredzama. Svarīga daļa ir rel="me", kas novērš uzdošanos vietnēs ar lietotāju izveidotu saturu. Tu pat vari lapas galvenē izmantot tagu link, nevis a, taču HTML ir jābūt pieejamam bez JavaScript izpildīšanas. here_is_how: Lūk, kā hint_html: "Ikviens var apliecināt savu identitāti Mastodon. Balstīts uz atvērtiem tīmekļa standartiem, tagad un uz visiem laikiem bez maksas. Viss, kas Tev nepieciešams, ir personīga vietne, pēc kuras cilvēki Tevi atpazīst. Kad savā profilu sasaistīsi ar šo tīmekļvietni, mēs pārbaudīsim, vai tīmekļvietnei ir saite uz Tavu profilu, un tajā tiks parādīts redzama norāde." - instructions_html: Ievieto starpliktuvē un ielīmē tālāk norādīto kodu savas tīmekļvietnes HTML! Tad pievieno savas tīmekļvietnes adresi vienā no papildu laukiem savā profila cilnē "Labot profilu" un saglabā izmaiņas! + instructions_html: Ievieto starpliktuvē un ielīmē zemāk norādīto kodu savas tīmekļvietnes HTML! Tad pievieno savas tīmekļvietnes adresi vienā no papildu laukiem savā profila cilnē "Labot profilu" un saglabā izmaiņas! verification: Pārbaude verified_links: Tavas verifikācijas saites website_verification: Tīmekļvietnes apliecināšana diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 0a8ea5bb71..666b1b2495 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -1858,6 +1858,10 @@ nl: limit: Je hebt het maximaal aantal bericht al vastgemaakt ownership: Een bericht van iemand anders kan niet worden vastgemaakt reblog: Een boost kan niet worden vastgezet + quote_policies: + followers: Volgers en vermelde gebruikers + nobody: Alleen vermelde gebruikers + public: Iedereen title: '%{name}: "%{quote}"' visibilities: direct: Privébericht diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml index 6180f51dd3..71cb1faafa 100644 --- a/config/locales/simple_form.bg.yml +++ b/config/locales/simple_form.bg.yml @@ -147,7 +147,6 @@ bg: min_age: Не трябва да е под изискваната минимална възраст от закона на юрисдикцията ви. user: chosen_languages: Само публикации на отметнатите езици ще се показват в публичните часови оси - date_of_birth: Трябва да се уверим, че сте поне на %{age}, за да употребявате Mastodon. Няма да съхраняваме това. role: Ролята управлява какви позволения има потребителят. user_role: color: Цветът, използван за ролите в потребителския интерфейс, като RGB в шестнадесетичен формат diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index 2f85738c32..2cff4bffcd 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -145,7 +145,6 @@ ca: min_age: No hauria de ser inferior a l'edat mínima exigida per la llei de la vostra jurisdicció. user: chosen_languages: Quan estigui marcat, només es mostraran els tuts de les llengües seleccionades en les línies de temps públiques - date_of_birth: Ens hem d'assegurar que teniu %{age} anys com a mínim. No desarem aquesta dada. role: El rol controla quins permisos té l'usuari. user_role: color: Color que s'usarà per al rol a tota la interfície d'usuari, com a RGB en format hexadecimal diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 00abf91d3e..7af8c1ce7c 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -56,6 +56,7 @@ cs: scopes: Která API bude aplikace moct používat. Pokud vyberete rozsah nejvyššího stupně, nebudete je muset vybírat jednotlivě. setting_aggregate_reblogs: Nezobrazovat nové boosty pro příspěvky, které byly nedávno boostnuty (ovlivňuje pouze nově přijaté boosty) setting_always_send_emails: Jinak nebudou e-mailové notifikace posílány, když Mastodon aktivně používáte + setting_default_quote_policy: Zmínení uživatelé mají vždy povoleno citovat. Toto nastavení se projeví pouze u příspěvků vytvořených s další verzí Mastodonu, ale můžete si vybrat vaše předvolby v předstihu setting_default_sensitive: Citlivá média jsou ve výchozím stavu skryta a mohou být zobrazena kliknutím setting_display_media_default: Skrývat média označená jako citlivá setting_display_media_hide_all: Vždy skrývat média @@ -148,7 +149,11 @@ cs: min_age: Neměla by být pod minimálním věkem požadovaným zákony vaší jurisdikce. user: chosen_languages: Po zaškrtnutí budou ve veřejných časových osách zobrazeny pouze příspěvky ve zvolených jazycích - date_of_birth: Musíme se ujistit, že je Vám alespoň %{age}, abyste mohli používat Mastodon. Nebudeme to ukládat. + date_of_birth: + few: Musíme se ujistit, že je Vám alespoň %{count}, abyste mohli používat Mastodon. Nebudeme to ukládat. + many: Musíme se ujistit, že je Vám alespoň %{count} let, abyste mohli používat Mastodon. Nebudeme to ukládat. + one: Musíme se ujistit, že je Vám alespoň %{count} rok, abyste mohli používat Mastodon. Nebudeme to ukládat. + other: Musíme se ujistit, že je Vám alespoň %{count} let, abyste mohli používat Mastodon. Nebudeme to ukládat. role: Role určuje, která oprávnění uživatel má. user_role: color: Barva, která má být použita pro roli v celém UI, jako RGB v hex formátu @@ -229,6 +234,7 @@ cs: setting_boost_modal: Před boostnutím zobrazovat potvrzovací okno setting_default_language: Jazyk příspěvků setting_default_privacy: Soukromí příspěvků + setting_default_quote_policy: Kdo může citovat setting_default_sensitive: Vždy označovat média jako citlivá setting_delete_modal: Před smazáním příspěvku zobrazovat potvrzovací dialog setting_disable_hover_cards: Zakázat náhled profilu při přejetí myší diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index c9c7862a91..656cca8b37 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -148,7 +148,6 @@ cy: min_age: Ni ddylai fod yn is na'r isafswm oedran sy'n ofynnol gan gyfreithiau eich awdurdodaeth. user: chosen_languages: Wedi eu dewis, dim ond tŵtiau yn yr ieithoedd hyn bydd yn cael eu harddangos mewn ffrydiau cyhoeddus - date_of_birth: Mae'n rhaid i ni sicrhau eich bod o leiaf %{age} i ddefnyddio Mastodon. Fyddwn ni ddim yn storio hwn. role: Mae'r rôl yn rheoli pa ganiatâd sydd gan y defnyddiwr. user_role: color: Lliw i'w ddefnyddio ar gyfer y rôl drwy'r UI, fel RGB mewn fformat hecs diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 91582e60c5..f9390ab24d 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -56,6 +56,7 @@ da: scopes: De API'er, som applikationen vil kunne tilgå. Vælges en topniveaudstrækning, vil detailvalg være unødvendige. setting_aggregate_reblogs: Vis ikke nye fremhævelser for nyligt fremhævede indlæg (påvirker kun nyligt modtagne fremhævelser) setting_always_send_emails: Normalt sendes ingen e-mailnotifikationer under aktivt brug af Mastodon + setting_default_quote_policy: Nævnte brugere har altid lov til at citere. Denne indstilling vil kun træde i kraft for indlæg oprettet med den næste Mastodon-version, men man kan som forberedelse vælge sin præference setting_default_sensitive: Sensitive medier er som standard skjult og kan vises med et klik setting_display_media_default: Skjul medier med sensitiv-markering setting_display_media_hide_all: Skjul altid medier @@ -148,7 +149,6 @@ da: min_age: Bør ikke være under den iht. lovgivningen i det aktuelle retsområde krævede minimumsalder. user: chosen_languages: Når markeret, vil kun indlæg på de valgte sprog fremgå på offentlige tidslinjer - date_of_birth: Vi er nødt til at sikre, at man er fyldt %{age} for at bruge Mastodon. Vi gemmer ikke denne information. role: Rollen styrer, hvilke tilladelser brugeren er tildelt. user_role: color: Farven, i RGB hex-format, der skal bruges til rollen i hele UI'en @@ -229,6 +229,7 @@ da: setting_boost_modal: Vis bekræftelsesdialog inden fremhævelse setting_default_language: Sprog for indlæg setting_default_privacy: Fortrolighed for indlæg + setting_default_quote_policy: Hvem, som kan citere setting_default_sensitive: Markér altid medier som sensitive setting_delete_modal: Vis bekræftelsesdialog før et indlæg slettes setting_disable_hover_cards: Deaktivér profilforhåndsvisning ved svæv (hover) diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 16a6be5c3a..305aa6f817 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -56,6 +56,7 @@ de: scopes: Welche Schnittstellen der Applikation erlaubt sind. Wenn du einen Top-Level-Scope auswählst, dann musst du nicht jeden einzelnen darunter auswählen. setting_aggregate_reblogs: Beiträge, die erst kürzlich geteilt wurden, werden nicht noch einmal angezeigt (wirkt sich nur auf zukünftige geteilte Beiträge aus) setting_always_send_emails: Normalerweise werden Benachrichtigungen nicht per E-Mail versendet, wenn du gerade auf Mastodon aktiv bist + setting_default_quote_policy: Erwähnte Profile dürfen immer zitieren. Diese Einstellung wirkt sich nur für Beiträge aus, die mit der zukünftigen Mastodon-Version erstellt wurden. Als Vorbereitung darauf kannst du bereits jetzt die Einstellung vornehmen. setting_default_sensitive: Medien, die mit einer Inhaltswarnung versehen worden sind, werden – je nach Einstellung – erst nach einem zusätzlichen Klick angezeigt setting_display_media_default: Medien mit Inhaltswarnung ausblenden setting_display_media_hide_all: Medien immer ausblenden @@ -148,7 +149,9 @@ de: min_age: Sollte nicht unter dem gesetzlich vorgeschriebenen Mindestalter liegen. user: chosen_languages: Wenn du hier eine oder mehrere Sprachen auswählst, werden ausschließlich Beiträge in diesen Sprachen in deinen öffentlichen Timelines angezeigt - date_of_birth: Wir müssen sicherstellen, dass du mindestens %{age} Jahre alt bist, um Mastodon verwenden zu können. Das Alter wird nicht gespeichert. + date_of_birth: + one: Wir müssen sicherstellen, dass du mindestens %{count} Jahre alt bist, um Mastodon nutzen zu können. Wir werden diese Information nicht aufbewahren. + other: Wir müssen sicherstellen, dass du mindestens %{count} Jahre alt bist, um Mastodon nutzen zu können. Wir werden diese Information nicht aufbewahren. role: Die Rolle bestimmt, welche Berechtigungen das Konto hat. user_role: color: Farbe, die für diese Rolle in der gesamten Benutzerschnittstelle verwendet wird, als RGB im Hexadezimalsystem @@ -229,6 +232,7 @@ de: setting_boost_modal: Bestätigungsdialog beim Teilen eines Beitrags anzeigen setting_default_language: Beitragssprache setting_default_privacy: Beitragssichtbarkeit + setting_default_quote_policy: Wer darf zitieren setting_default_sensitive: Medien immer mit einer Inhaltswarnung versehen setting_delete_modal: Bestätigungsdialog beim Löschen eines Beitrags anzeigen setting_disable_hover_cards: Profilvorschau deaktivieren, wenn die Maus über das Profil bewegt wird diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 3b82cd3c75..f14c1fa453 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -148,7 +148,6 @@ el: min_age: Δεν πρέπει να είναι κάτω από την ελάχιστη ηλικία που απαιτείται από τους νόμους της δικαιοδοσίας σας. user: chosen_languages: Όταν ενεργοποιηθεί, στη δημόσια ροή θα εμφανίζονται τουτ μόνο από τις επιλεγμένες γλώσσες - date_of_birth: Πρέπει να βεβαιωθείς ότι είσαι τουλάχιστον %{age} για να χρησιμοποιήσεις το Mastodon. Δεν θα το αποθηκεύσουμε. role: Ο ρόλος ελέγχει ποια δικαιώματα έχει ο χρήστης. user_role: color: Το χρώμα που θα χρησιμοποιηθεί για το ρόλο σε ολόκληρη τη διεπαφή, ως RGB σε δεκαεξαδική μορφή diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 5e162a0d64..bb48cddff5 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -56,6 +56,7 @@ en: scopes: Which APIs the application will be allowed to access. If you select a top-level scope, you don't need to select individual ones. setting_aggregate_reblogs: Do not show new boosts for posts that have been recently boosted (only affects newly-received boosts) setting_always_send_emails: Normally e-mail notifications won't be sent when you are actively using Mastodon + setting_default_quote_policy: Mentioned users are always allowed to quote. This setting will only take effect for posts created with the next Mastodon version, but you can select your preference in preparation setting_default_sensitive: Sensitive media is hidden by default and can be revealed with a click setting_display_media_default: Hide media marked as sensitive setting_display_media_hide_all: Always hide media @@ -148,7 +149,9 @@ en: min_age: Should not be below the minimum age required by the laws of your jurisdiction. user: chosen_languages: When checked, only posts in selected languages will be displayed in public timelines - date_of_birth: We have to make sure you're at least %{age} to use Mastodon. We won't store this. + date_of_birth: + one: We have to make sure you're at least %{count} to use Mastodon. We won't store this. + other: We have to make sure you're at least %{count} to use Mastodon. We won't store this. role: The role controls which permissions the user has. user_role: color: Color to be used for the role throughout the UI, as RGB in hex format @@ -229,6 +232,7 @@ en: setting_boost_modal: Show confirmation dialog before boosting setting_default_language: Posting language setting_default_privacy: Posting privacy + setting_default_quote_policy: Who can quote setting_default_sensitive: Always mark media as sensitive setting_delete_modal: Show confirmation dialog before deleting a post setting_disable_hover_cards: Disable profile preview on hover diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 2fcbc91c80..2687f78229 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -56,7 +56,7 @@ eo: scopes: Kiujn API-ojn la aplikaĵo permesiĝos atingi. Se vi elektas supran amplekson, vi ne bezonas elekti la individuajn. setting_aggregate_reblogs: Ne montri novajn plusendojn de mesaĝoj lastatempe plusenditaj (nur efikas al nove ricevitaj plusendoj) setting_always_send_emails: Normale, la sciigoj per retpoŝto ne estos senditaj kiam vi uzas Mastodon aktive - setting_default_sensitive: Tiklaj vidaŭdaĵoj estas implicite kaŝitaj kaj povas esti montritaj per alklako + setting_default_sensitive: La tiklaj vidaŭdaĵoj estas implicite kaŝitaj kaj povas esti malkaŝitaj per alklako setting_display_media_default: Kaŝi plurmediojn markitajn kiel tiklaj setting_display_media_hide_all: Ĉiam kaŝi la vidaŭdaĵojn setting_display_media_show_all: Ĉiam montri la vidaŭdaĵojn @@ -89,6 +89,7 @@ eo: favicon: WEBP, PNG, GIF aŭ JPG. Anstataŭigas la defaŭltan Mastodon-favikono kun propra bildsimbolo. mascot: Anstatauigi la ilustraĵon en la altnivela retinterfaco. media_cache_retention_period: Amaskomunikilaj dosieroj de afiŝoj faritaj de foraj uzantoj estas konservitaj en kaŝmemoro en via servilo. Kiam agordita al pozitiva valoro, amaskomunikilaro estos forigita post la specifita nombro da tagoj. Se la amaskomunikilaro-datumoj estas petitaj post kiam ĝi estas forigita, ĝi estos re-elŝutita, se la fonta enhavo ankoraŭ disponeblas. Pro limigoj pri kiom ofte ligaj antaŭrigardaj kartoj enketas retejojn de ekstera liveranto, oni rekomendas agordi ĉi tiun valoron al almenaŭ 14 tagoj, aŭ ligaj antaŭrigardaj kartoj ne estos ĝisdatigitaj laŭpostule antaŭ tiu tempo. + min_age: Uzantoj demandos konfirmi siajn naskiĝtagon dum registrado peers_api_enabled: Listo de domajnaj nomoj kiujn ĉi tiu servilo renkontis en la fediverso. Neniuj datumoj estas inkluditaj ĉi tie pri ĉu vi federacias kun donita servilo, nur ke via servilo scias pri ĝi. Ĉi tio estas uzata de servoj kiuj kolektas statistikojn pri federacio en ĝenerala signifo. profile_directory: La profilujo listigas ĉiujn uzantojn kiu volonte malkovrebli. require_invite_text: Kiam registroj bezonas permanan aprobon, igi la "Kial vi volas aliĝi?" tekstoenigon deviga anstau nedeviga @@ -137,13 +138,16 @@ eo: text: Povas esti strukturita per sintakso Markdown-a. terms_of_service_generator: admin_email: Legalaj sciigoj povas esti kontraŭsciigoj, postulaĵoj de tribunalo, postulaĵoj pri forigo, kaj postulaĵoj de la policaro. + arbitration_address: Povas esti la sama kiel fizika adreso supre, aŭ "N/A" se oni uzas retpoŝton. + arbitration_website: Povas esti retformularo, aŭ "N/A" se oni uzas retpoŝton. choice_of_law: Urbo, regiono, teritorio aŭ ŝtato, kies internaj substantivaj leĝoj regos iujn kaj ĉiujn asertojn. dmca_address: Por tenantoj en Usono, uzu la adreson registritan en la DMCA Designated Agenŭ Directory. Registrolibro de poŝtskatoloj haveblas per direkta postulo, uzu la DMCA Designated Agent Post Office Box Waiver Request por retpoŝti la Ofico de Kopirajto kaj priskribu, ke vi estas hejm-trovigita administranto por enhavo kaj devas uzi Poŝtskatolon por forigi vian hejmadreson de publika vido. + dmca_email: Povas esti la sama retpoŝtadreso uzita en "Retpoŝtadreso por legalaj sciigoj" supre. domain: Unika identigilo de la retaj servicoj, ke vi provizas. jurisdiction: Enlistigu la landon, kie loĝas kiu pagas la fakturojn. Se ĝi estas kompanio aŭ alia ento, listigu la landon, kie ĝi estas enkorpigita, kaj la urbon, regionon, teritorion aŭ ŝtaton laŭeble. + min_age: Ne devus esti malsupre la minimuma aĝo postulita de la leĝoj de via jurisdikcio. user: chosen_languages: Kun tio markita nur mesaĝoj en elektitaj lingvoj aperos en publikaj tempolinioj - date_of_birth: Ni devas certigi, ke vi estas almenaŭ %{age} por uzi Mastodon. Ni ne konservos ĉi tion. role: La rolo kontrolas kiujn permesojn la uzanto havas. user_role: color: Koloro uzita por la rolo sur la UI, kun RGB-formato diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index 4333db9fed..3b68cf009f 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -56,6 +56,7 @@ es-AR: scopes: Qué APIs de la aplicación tendrán acceso. Si seleccionás el alcance de nivel más alto, no necesitás seleccionar las individuales. setting_aggregate_reblogs: No mostrar nuevas adhesiones de los mensajes que fueron recientemente adheridos (sólo afecta a las adhesiones recibidas recientemente) setting_always_send_emails: Normalmente las notificaciones por correo electrónico no se enviarán cuando estés usando Mastodon activamente + setting_default_quote_policy: Los usuarios mencionados siempre pueden citar. Este ajuste solo afecta a las publicaciones creadas con la próxima versión de Mastodon, pero podés seleccionar tus preferencias con antelación. setting_default_sensitive: El contenido de medios sensibles está oculto predeterminadamente y puede ser mostrado con un clic setting_display_media_default: Ocultar medios marcados como sensibles setting_display_media_hide_all: Siempre ocultar todos los medios @@ -148,7 +149,9 @@ es-AR: min_age: No debería estar por debajo de la edad mínima requerida por las leyes de su jurisdicción. user: chosen_languages: Cuando estén marcados, sólo se mostrarán los mensajes en los idiomas seleccionados en las líneas temporales públicas - date_of_birth: Tenemos que asegurarnos de que al menos tenés %{age} años de edad para usar Mastodon. No almacenaremos esta información. + date_of_birth: + one: Tenemos que asegurarnos de que al menos tenés %{count} años de edad para usar Mastodon. No almacenaremos esta información. + other: Tenemos que asegurarnos de que al menos tenés %{count} años de edad para usar Mastodon. No almacenaremos esta información. role: El rol controla qué permisos tiene el usuario. user_role: color: Color que se utilizará para el rol a lo largo de la interface de usuario, como RGB en formato hexadecimal @@ -229,6 +232,7 @@ es-AR: setting_boost_modal: Mostrar diálogo de confirmación antes de adherir setting_default_language: Idioma de tus mensajes setting_default_privacy: Privacidad de mensajes + setting_default_quote_policy: Quién puede citar setting_default_sensitive: Siempre marcar medios como sensibles setting_delete_modal: Mostrar diálogo de confirmación antes de eliminar un mensaje setting_disable_hover_cards: Deshabilitar previsualización del perfil al pasar el cursor diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index b2f7daf500..30614992fc 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -56,6 +56,7 @@ es-MX: scopes: Qué APIs de la aplicación tendrán acceso. Si seleccionas el alcance de nivel mas alto, no necesitas seleccionar las individuales. setting_aggregate_reblogs: No mostrar nuevos impulsos para las publicaciones que han sido recientemente impulsadas (sólo afecta a las publicaciones recibidas recientemente) setting_always_send_emails: Normalmente las notificaciones por correo electrónico no se enviarán cuando estés usando Mastodon activamente + setting_default_quote_policy: Los usuarios mencionados siempre pueden citar. Esta configuración solo se aplicará a las publicaciones creadas con la próxima versión de Mastodon, pero puedes seleccionar tus preferencias anticipadamente setting_default_sensitive: El contenido multimedia sensible está oculto por defecto y puede ser mostrado con un clic setting_display_media_default: Ocultar contenido multimedia marcado como sensible setting_display_media_hide_all: Siempre ocultar todo el contenido multimedia @@ -148,7 +149,9 @@ es-MX: min_age: No debe ser menor de la edad mínima exigida por las leyes de su jurisdicción. user: chosen_languages: Cuando se marca, solo se mostrarán las publicaciones en los idiomas seleccionados en las líneas de tiempo públicas - date_of_birth: Tenemos que asegurarnos de que tienes al menos %{age} para usar Mastodon. No almacenaremos esto. + date_of_birth: + one: Necesitamos asegurarnos de que tengas al menos %{count} para usar Mastodon. No guardaremos esta información. + other: Necesitamos asegurarnos de que tengas al menos %{count} para usar Mastodon. No guardaremos esta información. role: El rol controla qué permisos tiene el usuario. user_role: color: Color que se usará para el rol en toda la interfaz de usuario, como RGB en formato hexadecimal @@ -229,6 +232,7 @@ es-MX: setting_boost_modal: Mostrar ventana de confirmación antes de impulsar setting_default_language: Idioma de publicación setting_default_privacy: Privacidad de publicaciones + setting_default_quote_policy: Quién puede citar setting_default_sensitive: Marcar siempre imágenes como sensibles setting_delete_modal: Mostrar diálogo de confirmación antes de borrar una publicación setting_disable_hover_cards: Desactivar vista previa del perfil al pasar el cursor diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index d469c6ec3a..56eea49d25 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -56,6 +56,7 @@ es: scopes: Qué APIs de la aplicación tendrán acceso. Si seleccionas el alcance de nivel mas alto, no necesitas seleccionar las individuales. setting_aggregate_reblogs: No mostrar nuevos impulsos para las publicaciones que han sido recientemente impulsadas (sólo afecta a los impulsos recibidos recientemente) setting_always_send_emails: Normalmente las notificaciones por correo electrónico no se enviarán cuando estés usando Mastodon activamente + setting_default_quote_policy: Los usuarios mencionados siempre pueden citar. Este ajuste solo afecta a las publicaciones creadas con la próxima versión de Mastodon, pero puedes seleccionar tus preferencias anticipadamente setting_default_sensitive: El contenido multimedia sensible está oculto por defecto y puede ser mostrado con un click setting_display_media_default: Ocultar contenido multimedia marcado como sensible setting_display_media_hide_all: Siempre ocultar todo el contenido multimedia @@ -148,7 +149,9 @@ es: min_age: No debería estar por debajo de la edad mínima requerida por las leyes de su jurisdicción. user: chosen_languages: Cuando se marca, solo se mostrarán las publicaciones en los idiomas seleccionados en las líneas de tiempo públicas - date_of_birth: Tenemos que asegurarnos de que al menos tienes %{age} años para usar Mastodon. No almacenaremos esta información. + date_of_birth: + one: Tenemos que asegurarnos de que tienes al menos %{count} años para usar Mastodon. No guardaremos este dato. + other: Tenemos que asegurarnos de que tienes al menos %{count} años para usar Mastodon. No guardaremos este dato. role: El rol controla qué permisos tiene el usuario. user_role: color: Color que se utilizará para el rol a lo largo de la interfaz de usuario, como RGB en formato hexadecimal @@ -229,6 +232,7 @@ es: setting_boost_modal: Mostrar diálogo de confirmación antes de impulsar una publicación setting_default_language: Idioma de publicación setting_default_privacy: Privacidad de publicaciones + setting_default_quote_policy: Quién puede citar setting_default_sensitive: Marcar siempre imágenes como sensibles setting_delete_modal: Mostrar diálogo de confirmación antes de borrar una publicación setting_disable_hover_cards: Desactivar vista previa del perfil al pasar el cursor diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 5489780ec7..82f47cd6f3 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -56,6 +56,7 @@ fi: scopes: Mihin ohjelmointirajapintoihin sovelluksella on pääsy. Jos valitset ylätason käyttöoikeuden, sinun ei tarvitse valita yksittäisiä. setting_aggregate_reblogs: Älä näytä uusia tehostuksia julkaisuille, joita on äskettäin tehostettu (koskee vain juuri vastaanotettuja tehostuksia) setting_always_send_emails: Yleensä sähköposti-ilmoituksia ei lähetetä, kun käytät Mastodonia aktiivisesti + setting_default_quote_policy: Mainitut käyttäjät saavat aina lainata. Tämä asetus koskee vain julkaisuja, jotka on luotu seuraavalla Mastodon-versiolla, mutta voit valita asetuksesi valmistautuaksesi setting_default_sensitive: Arkaluonteinen media piilotetaan oletusarvoisesti, ja se voidaan näyttää yhdellä napsautuksella setting_display_media_default: Piilota arkaluonteiseksi merkitty mediasisältö setting_display_media_hide_all: Piilota mediasisältö aina @@ -147,7 +148,9 @@ fi: min_age: Ei pidä alittaa lainkäyttöalueesi lakien vaatimaa vähimmäisikää. user: chosen_languages: Jos valitset kieliä oheisesta luettelosta, vain niidenkieliset julkaisut näkyvät sinulle julkisilla aikajanoilla - date_of_birth: Meidän on varmistettava, että olet vähintään %{age} vuotta vanha, jotta voit käyttää Mastodonia. Emme tallenna tätä. + date_of_birth: + one: Meidän on varmistettava, että olet vähintään %{count}, jotta voi käyttää Mastodonia. Emme tallenna tätä. + other: Meidän on varmistettava, että olet vähintään %{count}, jotta voi käyttää Mastodonia. Emme tallenna tätä. role: Rooli määrää, millaiset käyttöoikeudet käyttäjällä on. user_role: color: Väri, jota käytetään roolille kaikkialla käyttöliittymässä, RGB-heksadesimaalimuodossa @@ -228,6 +231,7 @@ fi: setting_boost_modal: Kysy vahvistusta ennen tehostusta setting_default_language: Julkaisun kieli setting_default_privacy: Julkaisun näkyvyys + setting_default_quote_policy: Kuka voi lainata setting_default_sensitive: Merkitse media aina arkaluonteiseksi setting_delete_modal: Kysy vahvistusta ennen julkaisun poistamista setting_disable_hover_cards: Poista käytöstä profiilin esikatselu osoitettaessa diff --git a/config/locales/simple_form.fo.yml b/config/locales/simple_form.fo.yml index 32d066ed18..c3f1dad678 100644 --- a/config/locales/simple_form.fo.yml +++ b/config/locales/simple_form.fo.yml @@ -56,6 +56,7 @@ fo: scopes: Hvørji API nýtsluskipanin fær atgongd til. Velur tú eitt vav á hægsta stigi, so er ikki neyðugt at velja tey einstøku. setting_aggregate_reblogs: Vís ikki nýggjar stimbranir fyri postar, sum nýliga eru stimbraðir (ávirkar einans stimbranir, ið eru móttiknar fyri kortum) setting_always_send_emails: Vanliga vera teldupostfráboðanir ikki sendar, tá tú virkin brúkar Mastodon + setting_default_quote_policy: Nevndir brúkarar hava altíð loyvi at sitera. Hendan stillingin verður bara virkin fyri postar, sum verða stovnaðir í næstu Mastodon útgávuni, men sum fyrireiking til tað, kanst tú velja tína stilling longu nú setting_default_sensitive: Viðkvæmar miðlafílur eru fjaldar og kunnu avdúkast við einum klikki setting_display_media_default: Fjal miðlafílur, sum eru merktar sum viðkvæmar setting_display_media_hide_all: Fjal altíð miðlafílur @@ -148,7 +149,9 @@ fo: min_age: Eigur ikki at vera undir lægsta aldri, sum lógirnar í tínum rættarøki krevja. user: chosen_languages: Tá hetta er valt, verða einans postar í valdum málum vístir á almennum tíðarlinjum - date_of_birth: Vit mugu tryggja okkum, at tú er í minsta lagi %{age} ár fyri at brúka Mastodon. Vit goyma ikki hesar upplýsingar. + date_of_birth: + one: Vit mugu tryggja okkum, at tú er í minsta lagi %{count} fyri at brúka Mastodon. Vit goyma ikki hesar upplýsingar. + other: Vit mugu tryggja okkum, at tú er í minsta lagi %{count} fyri at brúka Mastodon. Vit goyma ikki hesar upplýsingar. role: Leikluturin stýrir hvørji rættindi, brúkarin hevur. user_role: color: Litur, sum leikluturin hevur í øllum brúkaramarkamótinum, sum RGB og upplýst sum sekstandatal @@ -229,6 +232,7 @@ fo: setting_boost_modal: Vís váttanarmynd, áðrenn tú stimbrar postar setting_default_language: Mál, sum verður brúkt til postar setting_default_privacy: Hvussu privatir eru postar? + setting_default_quote_policy: Hvør kann sitera setting_default_sensitive: Merk altíð miðlafílur sum viðkvæmar setting_delete_modal: Vís váttanarmynd, áðrenn postar verða strikaðir setting_disable_hover_cards: Ger undanvísing, tá músin verður flutt yvir vangan, óvirkna diff --git a/config/locales/simple_form.fr-CA.yml b/config/locales/simple_form.fr-CA.yml index f917183f55..8856c8906c 100644 --- a/config/locales/simple_form.fr-CA.yml +++ b/config/locales/simple_form.fr-CA.yml @@ -148,7 +148,6 @@ fr-CA: min_age: Ne doit pas être en dessous de l’âge minimum requis par les lois de votre juridiction. user: chosen_languages: Lorsque coché, seuls les messages dans les langues sélectionnées seront affichés sur les fils publics - date_of_birth: Nous devons nous assurer que vous avez au moins %{age} pour utiliser Mastodon. Nous ne conserverons pas ces informations. role: Le rôle définit quelles autorisations a l'utilisateur⋅rice. user_role: color: Couleur à attribuer au rôle dans l'interface, au format hexadécimal RVB diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index a8d6bb86e0..53c4fbfba7 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -148,7 +148,6 @@ fr: min_age: Ne doit pas être en dessous de l’âge minimum requis par les lois de votre juridiction. user: chosen_languages: Lorsque coché, seuls les messages dans les langues sélectionnées seront affichés sur les fils publics - date_of_birth: Nous devons nous assurer que vous avez au moins %{age} pour utiliser Mastodon. Nous ne conserverons pas ces informations. role: Le rôle définit quelles autorisations a l'utilisateur⋅rice. user_role: color: Couleur à attribuer au rôle dans l'interface, au format hexadécimal RVB diff --git a/config/locales/simple_form.fy.yml b/config/locales/simple_form.fy.yml index 66d034d99d..047723e487 100644 --- a/config/locales/simple_form.fy.yml +++ b/config/locales/simple_form.fy.yml @@ -148,7 +148,6 @@ fy: min_age: Mei net leger wêze as de minimale fereaske leeftiid neffens de wetten fan jo jurisdiksje. user: chosen_languages: Allinnich berjochten yn de selektearre talen wurde op de iepenbiere tiidline toand - date_of_birth: Wy moatte derfoar soargje dat jo op syn minst %{age} binne om Mastodon te brûken. Dit wurdt net bewarre. role: De rol bepaalt hokker rjochten in brûker hat. user_role: color: Kleur dy’t brûkt wurdt foar de rol yn de UI, as RGB yn heksadesimaal formaat diff --git a/config/locales/simple_form.ga.yml b/config/locales/simple_form.ga.yml index bd8dac2a36..86ca027566 100644 --- a/config/locales/simple_form.ga.yml +++ b/config/locales/simple_form.ga.yml @@ -148,7 +148,6 @@ ga: min_age: Níor chóir go mbeidís faoi bhun na haoise íosta a éilíonn dlíthe do dhlínse. user: chosen_languages: Nuair a dhéantar iad a sheiceáil, ní thaispeánfar ach postálacha i dteangacha roghnaithe in amlínte poiblí - date_of_birth: Ní mór dúinn a chinntiú go bhfuil tú ar a laghad %{age} chun Mastodon a úsáid. Ní stórálfaimid é seo. role: Rialaíonn an ról na ceadanna atá ag an úsáideoir. user_role: color: Dath le húsáid don ról ar fud an Chomhéadain, mar RGB i bhformáid heicsidheachúlach diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index dee8a9347f..bb87ba712c 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -134,7 +134,18 @@ gd: name: Mar eisimpleir, ’s urrainn dhut measgachadh de litrichean mòra ’s beaga a chleachdadh ach an gabh a leughadh nas fhasa terms_of_service: changelog: "’S urrainn dhut structar a chur air le co-chàradh Markdown." + effective_date: Faodaidh ceann-ama reusanta a bhith rud sam bith eadar 10 is 30 latha on cheann-là a chuireas tu brath-fios dhan luchd-cleachdaidh agad. text: "’S urrainn dhut structar a chur air le co-chàradh Markdown." + terms_of_service_generator: + admin_email: Gabhaidh sanasan laghail a-staigh brathan-àichidh, òrduighean cùirte, iarrtasan toirt air falbh agus iarrtasan co-èigneachadh an lagha. + arbitration_address: Faodaidh e a bhith co-ionnan ris an t-seòladh fhiosaigeach gu h-àrd no “N/A” ma tha thu a’ cleachdadh post-d. + arbitration_website: Faodaidh e a bhith na fhoirm-lìn no “N/A” ma tha thu a’ cleachdadh post-d. + choice_of_law: Am baile, an sgìre, an ranntair no an stàit a riaghlas na laghan brìoghmhor sònraichte aige tagraidhean sam bith. + dmca_address: Airson gnìomharaichean sna SA, cleachd an seòladh a tha clàraichte san DMCA Designated Agent Directory. Faodaidh tu cleachdadh seòladh P.O. Box iarraidh, cleachd DMCA Designated Agent Post Office Box Waiver Request airson post-d a chur gun Copyright Office agus mìnich gur e “home-based content moderator” a th’ annad agus eagal ort ro dhìoghaltas no dìoladh-fiach air do ghnìomhan agus gum feum thu P.O. Box a chleachdadh airson seòladh do dhachaigh fhalach o shealladh poblach. + dmca_email: Faodaidh tu an t-aon phost-d a chleachdadh ’s a chleachd thu airson “Seòladh puist-d airson sanasan laghail” gu h-àrd. + domain: Aithneachadh àraidh dhen t-seirbheis air loidhne a tha thu a’ solar. + jurisdiction: Innis an dùthaich far a bheil an neach a phàigheas na bilichean a’ fuireach. Mas e companaidh no eintiteas eile a th’ ann, innis an dùthaich far a bheil e corpaichte agus am baile, sgìre, ranntair no stàit mar a tha iomchaidh. + min_age: Cha bu chòir seo a bhith fon aois as lugha a dh’iarras laghain an t-uachdranais laghail agad. user: chosen_languages: Nuair a bhios cromag ris, cha nochd ach postaichean sna cànain a thagh thu air loidhnichean-ama poblach role: Stiùiridh an dreuchd dè na ceadan a bhios aig cleachdaiche. @@ -335,6 +346,7 @@ gd: admin_email: Seòladh puist-d airson sanasan laghail arbitration_address: Seòladh fiosaigeach airson sanasan eadar-bhreith arbitration_website: Làrach-lìn airson sanasan eadar-bhreith a chur a-null + choice_of_law: Taghadh an lagha dmca_address: Seòladh fiosaigeach airson sanasan DMCA/còir-lethbhreac dmca_email: Seòladh puist-d airson sanasan DMCA/còir-lethbhreac domain: Àrainn diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index 3773123f17..c8de52b2e4 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -148,7 +148,6 @@ gl: min_age: Non debería ser inferior á idade mínima requerida polas leis da túa xurisdición. user: chosen_languages: Se ten marca, só as publicacións nos idiomas seleccionados serán mostrados en cronoloxías públicas - date_of_birth: Temos que ter certeza de que tes %{age} como mínimo para usar Mastodon. Non gardamos este dato. role: Os roles establecen os permisos que ten a usuaria. user_role: color: Cor que se usará para o rol a través da IU, como RGB en formato hex diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index 9c01b91638..4bceaa7e8f 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -56,6 +56,7 @@ he: scopes: לאיזה ממשק יורשה היישום לגשת. בבחירת תחום כללי, אין צורך לבחור ממשקים ספציפיים. setting_aggregate_reblogs: לא להראות הדהודים של הודעות שהודהדו לאחרונה (משפיע רק על הדהודים שהתקבלו לא מזמן) setting_always_send_emails: בדרך כלל התראות דוא"ל לא יישלחו בזמן שימוש פעיל במסטודון + setting_default_quote_policy: משתמשיםות מאוזכריםות תמיד חופשיים לצטט. הכיוונון הזה משפיע רק על פרסומים שישלחו בגרסאות מסטודון עתידיות, ניתן לבחור את העדפתך כהכנה לגרסא שתבוא setting_default_sensitive: מדיה רגישה מוסתרת כברירת מחדל וניתן להציגה בקליק setting_display_media_default: הסתרת מדיה המסומנת כרגישה setting_display_media_hide_all: הסתר מדיה תמיד @@ -148,7 +149,11 @@ he: min_age: על הערך להיות לפחות בגיל המינימלי הדרוש בחוק באיזור השיפוט שלך. user: chosen_languages: אם פעיל, רק הודעות בשפות הנבחרות יוצגו לפידים הפומביים - date_of_birth: עלינו לוודא שגילך לפחות %{age} כדי להשתמש במסטודון. המידע לא ישמר בשרת שלנו. + date_of_birth: + many: עלינו לוודא שגילך לפחות %{count} כדי להשתמש במסטודון. המידע לא ישמר אצלנו. + one: עלינו לוודא שגילך לפחות %{count} כדי להשתמש במסטודון. המידע לא ישמר אצלנו. + other: עלינו לוודא שגילך לפחות %{count} כדי להשתמש במסטודון. המידע לא ישמר אצלנו. + two: עלינו לוודא שגילך לפחות %{count} כדי להשתמש במסטודון. המידע לא ישמר אצלנו. role: התפקיד שולט על אילו הרשאות יש למשתמש. user_role: color: צבע לתפקיד בממשק המשתמש, כ RGB בפורמט הקסדצימלי @@ -229,6 +234,7 @@ he: setting_boost_modal: הצגת דיאלוג אישור לפני הדהוד setting_default_language: שפת ברירת מחדל להודעה setting_default_privacy: פרטיות ההודעות + setting_default_quote_policy: למי מותר לצטט setting_default_sensitive: תמיד לתת סימון "רגיש" למדיה setting_delete_modal: להראות תיבת אישור לפני מחיקת חיצרוץ setting_disable_hover_cards: כבה הצצה מקדימה לפרופיל בעת מעבר עכבר מעליו diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index adcc3d5789..e517ddd954 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -148,7 +148,9 @@ hu: min_age: Nem lehet a joghatóság által meghatározott minimális kor alatt. user: chosen_languages: Ha aktív, csak a kiválasztott nyelvű bejegyzések jelennek majd meg a nyilvános idővonalon - date_of_birth: Legalább %{age} évesnek kell lenniük, hogy használhassák a Mastodont. Ezt nem tároljuk. + date_of_birth: + one: Ahhoz, hogy a Mastodont használd, meg kell győződnünk arról, hogy legalább %{count} éves vagy. Ezt nem tároljuk. + other: Ahhoz, hogy a Mastodont használd, meg kell győződnünk arról, hogy legalább %{count} éves vagy. Ezt nem tároljuk. role: A szerep szabályozza, hogy a felhasználó milyen jogosultságokkal rendelkezik. user_role: color: A szerephez használandó szín mindenhol a felhasználói felületen, hexa RGB formátumban diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index bc68d14f2a..778d2d8f64 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -56,6 +56,7 @@ is: scopes: Að hvaða API-kerfisviðmótum forritið fær aðgang. Ef þú velur efsta-stigs svið, þarftu ekki að gefa einstakar heimildir. setting_aggregate_reblogs: Ekki sýna nýjar endurbirtingar á færslum sem hafa nýlega verið endurbirtar (hefur bara áhrif á ný-mótteknar endurbirtingar) setting_always_send_emails: Venjulega eru tilkynningar í tölvupósti ekki sendar þegar þú ert virk/ur í að nota Mastodon + setting_default_quote_policy: Notendur sem minnst er á geta alltaf gert tilvitnanir. Þessi stilling virkar einungis á færslur sem gerðar hafa verið í næstu útgáfu Mastodon, en þú getur samt valið þetta til að undirbúa þig setting_default_sensitive: Viðkvæmt myndefni er sjálfgefið falið og er hægt að birta með smelli setting_display_media_default: Fela myndefni sem merkt er viðkvæmt setting_display_media_hide_all: Alltaf fela allt myndefni @@ -148,7 +149,9 @@ is: min_age: Ætti ekki að vera lægri en sá lágmarksaldur sek kveðið er á um í lögum þíns lögsagnarumdæmis. user: chosen_languages: Þegar merkt er við þetta, birtast einungis færslur á völdum tungumálum á opinberum tímalínum - date_of_birth: Við verðum að ganga úr skugga um að þú hafir náð %{age} aldri til að nota Mastodon. Við munum ekki geyma þessar upplýsingar. + date_of_birth: + one: Við verðum að ganga úr skugga um að þú hafir náð %{count} aldri til að nota Mastodon. Við munum ekki geyma þessar upplýsingar. + other: Við verðum að ganga úr skugga um að þú hafir náð %{count} aldri til að nota Mastodon. Við munum ekki geyma þessar upplýsingar. role: Hlutverk stýrir hvaða heimildir notandinn hefur. user_role: color: Litur sem notaður er fyrir hlutverkið allsstaðar í viðmótinu, sem RGB-gildi á hex-sniði @@ -229,6 +232,7 @@ is: setting_boost_modal: Sýna staðfestingarglugga fyrir endurbirtingu setting_default_language: Tungumál sem skrifað er á setting_default_privacy: Gagnaleynd færslna + setting_default_quote_policy: Hverjir geta gert tilvitnanir setting_default_sensitive: Alltaf merkja myndefni sem viðkvæmt setting_delete_modal: Birta staðfestingarglugga áður en færslu er eytt setting_disable_hover_cards: Gera óvirka forskoðun notandasniðs við yfirsvif diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index da203270fa..a3672696e5 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -148,7 +148,6 @@ it: min_age: Non si dovrebbe avere un'età inferiore a quella minima richiesta, dalle leggi della tua giurisdizione. user: chosen_languages: Quando una o più lingue sono contrassegnate, nelle timeline pubbliche vengono mostrati solo i toot nelle lingue selezionate - date_of_birth: Dobbiamo verificare che tu abbia almeno %{age} anni per usare Mastodon. Non archivieremo questa informazione. role: Il ruolo controlla quali permessi ha l'utente. user_role: color: Colore da usare per il ruolo in tutta l'UI, come RGB in formato esadecimale diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 5540cedd06..5f9c5467c4 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -148,7 +148,6 @@ ja: min_age: お住まいの国や地域の法律によって定められている最低年齢を下回ってはなりません。 user: chosen_languages: 選択すると、選択した言語の投稿のみが公開タイムラインに表示されるようになります - date_of_birth: Mastodonを利用するには少なくとも%{age}歳以上であることを確認する必要があります。これは保存されません。 role: そのロールは、ユーザーが持つ権限を制御します。 user_role: color: UI 全体でロールの表示に使用される色(16進数RGB形式) diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 661028fff0..a823604584 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -146,7 +146,6 @@ ko: min_age: 관할지역의 법률에서 요구하는 최저 연령보다 작으면 안 됩니다. user: chosen_languages: 체크하면, 선택 된 언어로 작성된 게시물들만 공개 타임라인에 보여집니다 - date_of_birth: 마스토돈을 사용하려면 %{age}세 이상임을 확인해야 합니다. 이 정보는 저장되지 않습니다. role: 역할은 사용자가 어떤 권한을 가지게 될 지 결정합니다. user_role: color: 색상은 사용자 인터페이스에서 역할을 나타내기 위해 사용되며, RGB 16진수 형식입니다 diff --git a/config/locales/simple_form.lt.yml b/config/locales/simple_form.lt.yml index d3febceea9..4aa89ed9ec 100644 --- a/config/locales/simple_form.lt.yml +++ b/config/locales/simple_form.lt.yml @@ -120,7 +120,6 @@ lt: min_age: Neturėtų būti žemiau mažiausio amžiaus, reikalaujamo pagal jūsų jurisdikcijos įstatymus. user: chosen_languages: Kai pažymėta, viešose laiko skalėse bus rodomi tik įrašai pasirinktomis kalbomis. - date_of_birth: Turime įsitikinti, kad esate bent %{age}, kad naudotumėte „Mastodon“. Mes to neišsaugosime. role: Vaidmuo valdo, kokius leidimus naudotojas turi. labels: account: diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index 287ce36a5d..1068fd6e51 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -39,7 +39,7 @@ lv: appeal: text: Brīdinājumu var pārsūdzēt tikai vienu reizi defaults: - autofollow: Cilvēki, kuri reģistrējas, izmantojot uzaicinājumu, automātiski sekos tev + autofollow: Cilvēki, kuri reģistrēsies ar uzaicinājumu, automātiski sekos Tev avatar: WEBP, PNG, GIF vai JPG. Ne vairāk kā %{size}. Tiks samazināts līdz %{dimensions}px bot: Paziņo citiem, ka kontā galvenokārt tiek veiktas automatizētas darbības un tas var netikt uzraudzīts context: Viens vai vairāki konteksti, kur jāpiemēro filtrs @@ -48,7 +48,7 @@ lv: digest: Tiek nosūtīts tikai pēc ilgstošas bezdarbības un tikai tad, ja savas prombūtnes laikā saņēmi jebkādas personīgas ziņas email: Tev tiks nosūtīts apstiprinājuma e-pasta ziņojums header: WEBP, PNG, GIF vai JPG. Ne vairāk kā %{size}. Tiks samazināts līdz %{dimensions}px - inbox_url: Nokopē URL no tā releja sākumlapas, kuru vēlies izmantot + inbox_url: Releja, kuru vēlies izmantot, sākumlapas URL jāievieto starpliktuvē irreversible: Filtrētās ziņas neatgriezeniski pazudīs, pat ja filtrs vēlāk tiks noņemts locale: Lietotāja saskarnes, e-pasta ziņojumu un push paziņojumu valoda password: Izmanto vismaz 8 rakstzīmes @@ -142,7 +142,6 @@ lv: domain: Sniegtā tiešsaistas pakalpojuma neatkārtojama identifikācija. user: chosen_languages: Ja ieķeksēts, publiskos laika grafikos tiks parādītas tikai ziņas noteiktajās valodās - date_of_birth: Mums jāpārliecinās, ka jums ir vismaz %{age} gadi, lai varētu izmantot Mastodonu. Mēs neuzglabāsim šo informāciju. role: Loma nosaka, kādas lietotājam ir atļaujas. user_role: color: Krāsa, kas jāizmanto lomai visā lietotāja saskarnē, kā RGB hex formātā @@ -308,8 +307,8 @@ lv: appeal: Kāds pārsūdz moderatora lēmumu digest: Sūtīt kopsavilkumu e-pastus favourite: Kāds izcēla tavu ziņu - follow: Kāds uzsāka tev sekot - follow_request: Kāds vēlas tev sekot + follow: Kāds uzsāka Tev sekot + follow_request: Kāds vēlas Tev sekot mention: Kāds pieminēja tevi pending_account: Jāpārskata jaunu kontu reblog: Kāds izcēla tavu ierakstu @@ -339,6 +338,7 @@ lv: terms_of_service_generator: admin_email: E-pasta adrese juridiskiem paziņojumiem choice_of_law: Likuma izvēle + dmca_email: E-pasta adrese DMCA/autortiesību pārstāvju sūdzību iesniegšanai domain: Domēna vārds min_age: Mazākais pieļaujamais vecums user: diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 6029698bd7..dd9e2f78ca 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -56,6 +56,7 @@ nl: scopes: Tot welke API's heeft de toepassing toegang. Wanneer je een toestemming van het bovenste niveau kiest, hoef je geen individuele toestemmingen meer te kiezen. setting_aggregate_reblogs: Geen nieuwe boosts tonen voor berichten die recentelijk nog zijn geboost (heeft alleen effect op nieuw ontvangen boosts) setting_always_send_emails: Normaliter worden er geen e-mailmeldingen verstuurd wanneer je actief Mastodon gebruikt + setting_default_quote_policy: Het is voor gebruikers die vermeld worden altijd toegestaan om te citeren. Deze instelling is alleen van kracht voor berichten die gemaakt zijn met de volgende Mastodon-versie, maar je kunt je voorkeur nu alvast instellen setting_default_sensitive: Gevoelige media wordt standaard verborgen en kan met één klik worden getoond setting_display_media_default: Als gevoelig gemarkeerde media verbergen setting_display_media_hide_all: Media altijd verbergen @@ -148,7 +149,9 @@ nl: min_age: Mag niet lager zijn dan de minimale vereiste leeftijd volgens de wetten van jouw jurisdictie. user: chosen_languages: Alleen berichten in de aangevinkte talen worden op de openbare tijdlijnen getoond - date_of_birth: We moeten ervoor zorgen dat je tenminste %{age} bent om Mastodon te gebruiken. Dit wordt niet opgeslagen. + date_of_birth: + one: We moeten er zeker van zijn dat je tenminste %{count} bent om Mastodon te mogen gebruiken. Deze informatie wordt niet door ons opgeslagen. + other: We moeten er zeker van zijn dat je tenminste %{count} bent om Mastodon te mogen gebruiken. Deze informatie wordt niet door ons opgeslagen. role: De rol bepaalt welke rechten de gebruiker heeft. user_role: color: Kleur die gebruikt wordt voor de rol in de UI, als RGB in hexadecimale formaat @@ -229,6 +232,7 @@ nl: setting_boost_modal: Vraag voor het boosten van een bericht een bevestiging setting_default_language: Taal van jouw berichten setting_default_privacy: Zichtbaarheid van nieuwe berichten + setting_default_quote_policy: Wie kan citeren setting_default_sensitive: Media altijd als gevoelig markeren setting_delete_modal: Vraag voor het verwijderen van een bericht een bevestiging setting_disable_hover_cards: Hover-kaarten met profielvoorbeelden uitschakelen diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index b742375f12..bca47319cb 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -148,7 +148,6 @@ nn: min_age: Skal ikkje vere under minstealder som krevst av lover i jurisdiksjonen din. user: chosen_languages: Når merka vil berre tuta på dei valde språka synast på offentlege tidsliner - date_of_birth: Me må syta for at du er minst %{age} for å bruka Masodon. Me lagrar ikkje dette. role: Rolla kontrollerer kva løyve brukaren har. user_role: color: Fargen som skal nyttast for denne rolla i heile brukargrensesnittet, som RGB i hex-format diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index 64221777d7..bb84129c0f 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -148,7 +148,6 @@ pt-BR: min_age: Não deve ter menos que a idade mínima exigida pelas suas leis locais. user: chosen_languages: Apenas as publicações dos idiomas selecionados serão exibidas nas linhas públicas - date_of_birth: Precisamos ter certeza de que você tem, no mínimo, %{age} anos para usar o Mastodon. Não armazenaremos essa informação. role: A função controla quais permissões o usuário tem. user_role: color: Cor a ser usada para o cargo em toda a interface do usuário, como RGB no formato hexadecimal diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index 5549ef40d6..d08024ef68 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -148,7 +148,6 @@ pt-PT: min_age: Não deve ter menos do que a idade mínima exigida pela legislação da sua jurisdição. user: chosen_languages: Quando selecionado, só serão mostradas nas cronologias públicas as publicações nos idiomas escolhidos - date_of_birth: Temos de ter a certeza de que tens pelo menos %{age} para usar o Mastodon. Não vamos guardar esta informação. role: A função controla as permissões que o utilizador tem. user_role: color: Cor a ser utilizada para a função em toda a interface de utilizador, como RGB no formato hexadecimal diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index 24f24acadb..ff6f272d25 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -148,7 +148,6 @@ ru: min_age: Не меньше минимального возраста, требуемого по закону в вашей юрисдикции. user: chosen_languages: Если выбрано, то в публичных лентах будут показаны только посты на выбранных языках. - date_of_birth: Нужно убедиться, что вам не меньше %{age} лет. Мы не храним введённые здесь данные. role: Роль определяет, какими правами обладает пользователь. user_role: color: Цвет, который будет использоваться для роли в интерфейсе (UI), как RGB в формате HEX diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index 5d55844aa9..d59fc2c844 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -146,7 +146,6 @@ sl: min_age: Ne smete biti mlajši od starostne omejitve, ki jo postavljajo zakoni vašega pravosodnega sistema. user: chosen_languages: Ko je označeno, bodo v javnih časovnicah prikazane samo objave v izbranih jezikih - date_of_birth: Prepričati se moramo, da so uporabniki Mastodona stari vsaj %{age} let. Tega podatka ne bomo shranili. role: Vloga določa, katera dovoljenja ima uporabnik. user_role: color: Barva, uporabljena za vlogo po celem up. vmesniku, podana v šestnajstiškem zapisu RGB diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index 9f5ada184c..5059fbd1e9 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -56,6 +56,7 @@ sq: scopes: Cilat API do të lejohen të përdorin aplikacioni. Nëse përzgjidhni një shkallë të epërme, nuk ju duhet të përzgjidhni individualet një nga një. setting_aggregate_reblogs: Mos shfaq përforcime të reja për mesazhe që janë përforcuar tani së fundi (prek vetëm përforcime të marra rishtas) setting_always_send_emails: Normalisht s’do të dërgohen njoftime, kur përdorni aktivisht Mastodon-in + setting_default_quote_policy: Përdoruesit e përmendur lejohen përherë të citojnë. Ky rregullim do të ketë efekt vetëm për postime të krijuar me versionin pasues të Mastodon-it, por mund të përzgjidhni paraprakisht parapëlqimin tuaj setting_default_sensitive: Media rezervat fshihet, si parazgjedhje, dhe mund të shfaqet me një klikim setting_display_media_default: Fshih media me shenjën rezervat setting_display_media_hide_all: Fshih përherë mediat @@ -147,7 +148,6 @@ sq: min_age: S’duhet të jetë nën moshën minimum të domosdoshme nga ligjet në juridiksionin tuaj. user: chosen_languages: Në iu vëntë shenjë, te rrjedha kohore publike do të shfaqen vetëm mesazhe në gjuhët e përzgjedhura - date_of_birth: Na duhet të sigurohemi se jeni të paktën %{age}, që të përdorni Mastodon-in. Këtë s’e depozitojmë. role: Roli kontrollon cilat leje ka përdoruesi. user_role: color: Ngjyrë për t’u përdorur për rolin nëpër UI, si RGB në format gjashtëmbëdhjetësh @@ -228,6 +228,7 @@ sq: setting_boost_modal: Shfaq dialog ripohimi përpara përforcimi setting_default_language: Gjuhë postimi setting_default_privacy: Privatësi postimi + setting_default_quote_policy: Cilët mund të citojnë setting_default_sensitive: Mediave vëru përherë shenjë si rezervat setting_delete_modal: Shfaq dialog ripohimi përpara fshirjes së një mesazhi setting_disable_hover_cards: Çaktivizo paraparje profili, kur i kalohet kursori përsipër diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index 22300ccec3..9a85820fb0 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -148,7 +148,6 @@ tr: min_age: Tabi olduğunuz yasaların gerektirdiği yaştan düşük olmamalıdır. user: chosen_languages: İşaretlendiğinde, yalnızca seçilen dillerdeki gönderiler genel zaman çizelgelerinde görüntülenir - date_of_birth: Mastodon kullanmak için en az %{age} yaşında olduğunuzdan emin olmalıyız. Bu bilgiyi saklamıyoruz. role: Rol, kullanıcıların sahip olduğu izinleri denetler. user_role: color: Arayüz boyunca rol için kullanılacak olan renk, hex biçiminde RGB diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index b43aaeb234..2561eeb2ca 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -147,7 +147,6 @@ uk: min_age: Не повинно бути нижче мінімального віку, необхідного законодавством вашої юрисдикції. user: chosen_languages: У глобальних стрічках будуть показані дописи тільки вибраними мовами - date_of_birth: Ми повинні переконатися, що вам принаймні %{age}, щоб використовувати Mastodon. Ми не будемо зберігати це. role: Роль визначає, які права має користувач. user_role: color: Колір, який буде використовуватися для ролі у всьому інтерфейсі, як RGB у форматі hex diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 8b78787f86..16caf67a1c 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -56,6 +56,7 @@ vi: scopes: Ứng dụng sẽ được phép truy cập những API nào. Nếu bạn chọn quyền cấp cao nhất, không cần chọn quyền nhỏ. setting_aggregate_reblogs: Nếu một tút đã được đăng lại thì những lượt đăng lại sau sẽ không hiện trên bảng tin nữa setting_always_send_emails: Bình thường thì sẽ không gửi khi bạn đang dùng Mastodon + setting_default_quote_policy: Thiết lập này chỉ hiệu lực đối với các tút được tạo bằng phiên bản Mastodon tiếp theo, nhưng bạn có thể chọn trước tùy chọn của mình trong quá trình chuẩn bị setting_default_sensitive: Bắt buộc nhấn vào mới có thể xem setting_display_media_default: Click để xem setting_display_media_hide_all: Luôn ẩn @@ -148,7 +149,8 @@ vi: min_age: Không được dưới độ tuổi tối thiểu theo quy định của luật pháp tại khu vực của bạn. user: chosen_languages: Chỉ hiển thị những tút viết bằng các ngôn ngữ sau - date_of_birth: Chúng tôi phải đảm bảo rằng bạn ít nhất %{age} tuổi để sử dụng Mastodon. Chúng tôi không lưu trữ thông tin này. + date_of_birth: + other: Chúng tôi cần đảm bảo rằng bạn lớn hơn %{count} tuổi để sử dụng Mastodon. Chúng tôi không lưu trữ thông tin này. role: Vai trò kiểm soát những quyền mà người dùng có. user_role: color: Màu được sử dụng cho vai trò trong toàn bộ giao diện người dùng, dưới dạng RGB ở định dạng hex @@ -229,6 +231,7 @@ vi: setting_boost_modal: Hỏi trước khi đăng lại tút setting_default_language: Ngôn ngữ đăng setting_default_privacy: Kiểu đăng + setting_default_quote_policy: Ai có thể trích dẫn setting_default_sensitive: Đánh dấu media nhạy cảm setting_delete_modal: Hỏi trước khi xóa tút setting_disable_hover_cards: Tắt thẻ xem trước hồ sơ diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 5b18be5376..f82561420b 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -148,7 +148,6 @@ zh-CN: min_age: 不应低于您所在地法律管辖权要求的最低年龄。 user: chosen_languages: 仅选中语言的嘟文会出现在公共时间线上(全不选则显示所有语言的嘟文) - date_of_birth: 我们必须确认%{age}岁以上的用户才能使用Mastodon。我们不会存储该信息。 role: 角色用于控制用户拥有的权限。 user_role: color: 在界面各处用于标记该角色的颜色,以十六进制 RGB 格式表示 diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index fc86c77b74..fb51f2ed3e 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -56,6 +56,7 @@ zh-TW: scopes: 允許使應用程式存取的 API。 若您選擇最高階範圍,則無須選擇個別項目。 setting_aggregate_reblogs: 不顯示最近已被轉嘟之嘟文的最新轉嘟(只影響最新收到的嘟文) setting_always_send_emails: 一般情況下若您活躍使用 Mastodon ,我們不會寄送電子郵件通知 + setting_default_quote_policy: 已提及使用者總是能引用嘟文。此設定將僅生效於下一版本 Mastodon 建立之嘟文,但您可以預先選好您的偏好設定 setting_default_sensitive: 敏感內容媒體預設隱藏,且按一下即可重新顯示 setting_display_media_default: 隱藏標為敏感內容的媒體 setting_display_media_hide_all: 總是隱藏所有媒體 @@ -148,7 +149,8 @@ zh-TW: min_age: 不應低於您所屬法律管轄區要求之最低年齡。 user: chosen_languages: 當選取時,只有選取語言之嘟文會於公開時間軸中顯示 - date_of_birth: 我們必須確認您至少年滿 %{age} 以使用 Mastodon。我們不會儲存此資料。 + date_of_birth: + other: 我們必須確認您至少年滿 %{count} 以使用 Mastodon。我們不會儲存此資料。 role: 角色控制使用者有哪些權限。 user_role: color: 於整個使用者介面中用於角色的顏色,十六進位格式的 RGB @@ -229,6 +231,7 @@ zh-TW: setting_boost_modal: 轉嘟前先詢問我 setting_default_language: 嘟文語言 setting_default_privacy: 嘟文隱私設定 + setting_default_quote_policy: 誰能引用此嘟文 setting_default_sensitive: 總是將媒體標記為敏感內容 setting_delete_modal: 刪除嘟文前先詢問我 setting_disable_hover_cards: 停用於滑鼠懸停時預覽個人檔案 diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 1c414edbed..b0a1fae266 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -1848,6 +1848,10 @@ sq: limit: Keni fiksuar tashmë numrin maksimum të mesazheve ownership: S’mund të fiksohen mesazhet e të tjerëve reblog: S’mund të fiksohet një përforcim + quote_policies: + followers: Ndjekës dhe përdorues të përmendur + nobody: Vetëm përdorues të përmendur + public: Këdo title: '%{name}: "%{quote}"' visibilities: direct: I drejtpërdrejtë diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 9294ac2e6d..1d78ceb511 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -1165,7 +1165,7 @@ vi: welcome_title: Chào mừng, %{name}! wrong_email_hint: Nếu địa chỉ email đó không chính xác, bạn có thể đổi lại trong cài đặt tài khoản. delete_account: Xóa tài khoản - delete_account_html: Nếu bạn muốn xóa tài khoản của mình, hãy yêu cầu tại đây. Bạn sẽ được yêu cầu xác nhận. + delete_account_html: Thực hiện xóa tài khoản của bạn. description: prefix_invited_by_user: "@%{name} mời bạn tham gia máy chủ Mastodon này!" prefix_sign_up: Tham gia Mastodon ngay hôm nay! @@ -1815,6 +1815,10 @@ vi: limit: Bạn đã ghim quá số lượng tút cho phép ownership: Không thể ghim tút của người khác reblog: Không thể ghim tút đăng lại + quote_policies: + followers: Người theo dõi và người được nhắc đến + nobody: Những người được nhắc đến + public: Mọi người title: '%{name}: "%{quote}"' visibilities: direct: Nhắn riêng @@ -1826,7 +1830,7 @@ vi: unlisted_long: Không hiện trên bảng tin máy chủ statuses_cleanup: enabled: Tự động xóa những tút cũ - enabled_hint: Tự động xóa các tút của bạn khi chúng tới thời điểm nhất định, trừ những trường hợp ngoại lệ bên dưới + enabled_hint: Sau thời điểm nhất định, trừ những trường hợp ngoại lệ bên dưới exceptions: Ngoại lệ explanation: Số lượng tút sẽ tăng dần theo năm tháng. Bạn nên xóa những tút cũ khi tới một thời điểm nhất định. ignore_favs: Bỏ qua số lượt thích diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index eddb113ed3..11e7cc14ca 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -1817,6 +1817,10 @@ zh-TW: limit: 釘選嘟文的數量已達上限 ownership: 不能釘選他人的嘟文 reblog: 不能釘選轉嘟 + quote_policies: + followers: 跟隨者與已提及使用者 + nobody: 僅限已提及使用者 + public: 任何人 title: "%{name}:「%{quote}」" visibilities: direct: 私訊 diff --git a/config/routes/admin.rb b/config/routes/admin.rb index eab288d93b..62c0670cde 100644 --- a/config/routes/admin.rb +++ b/config/routes/admin.rb @@ -94,7 +94,7 @@ namespace :admin do end end - resources :rules, only: [:index, :create, :edit, :update, :destroy] + resources :rules, only: [:index, :new, :create, :edit, :update, :destroy] resources :webhooks do member do diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index bbbad6f1e1..6dd439ddc7 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -7,6 +7,19 @@ what changes are desirable and what general processes to use. ## Environments +The following instructions will guide you through the process of setting up a local development instance of Mastodon on your computer. + +There are instructions for these environments: + +- [Vagrant](#vagrant) +- [macOS](#macos) +- [Linux](#linux) +- [Docker](#docker) +- [Dev Containers](#dev-containers) +- [GitHub Codespaces](#github-codespaces) + +Once completed, continue with the [Next steps](#next-steps) section below. + ### Vagrant A **Vagrant** configuration is included for development purposes. To use it, @@ -28,11 +41,17 @@ To set up **macOS** for native development, complete the following steps: to install the required project dependencies - Use a Ruby version manager to activate the ruby in `.ruby-version` and run `nvm use` to activate the node version from `.nvmrc` -- Run the `bin/setup` script, which will install the required ruby gems and node +- Start the database services by running `brew services start postgresql` and + `brew services start redis` +- Run `RAILS_ENV=development bin/setup`, which will install the required ruby gems and node packages and prepare the database for local development - Finally, run the `bin/dev` script which will launch services via `overmind` (if installed) or `foreman` +### Linux + +The Mastodon documentation has a [guide on installing Mastodon from source](https://docs.joinmastodon.org/dev/setup/#manual) on Linux. + ### Docker For production hosting and deployment with **Docker**, use the `Dockerfile` and @@ -66,6 +85,12 @@ development environment configured with the software needed for this project. - Wait for an _Open in Browser_ prompt. This will open Mastodon - On the _Ports_ tab "stream" setting change _Port visibility_ → _Public_ +## Next steps + +- Once you have successfully set up a development environment, it will be available on http://localhost:3000 +- Log in as the default admin user with the username `admin@mastodon.local` and the password `mastodonadmin`. +- Check out the [Mastodon docs] for tips on working with emails in development (you'll need this when creating new user accounts) as well as a list of useful commands for testing and updating your dev instance. + [codespace]: https://codespaces.new/mastodon/mastodon?quickstart=1&devcontainer_path=.devcontainer%2Fcodespaces%2Fdevcontainer.json [CONTRIBUTING]: ../CONTRIBUTING.md [Dev Container extension]: https://containers.dev/supporting#dev-containers @@ -73,3 +98,4 @@ development environment configured with the software needed for this project. [Docker]: https://docs.docker.com [GitHub Codespaces]: https://docs.github.com/en/codespaces [Homebrew]: https://brew.sh +[Mastodon docs]: https://docs.joinmastodon.org/dev/setup/#working-with-emails-in-development diff --git a/eslint.config.mjs b/eslint.config.mjs index 49aeb3a336..f58e2641fc 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,5 +1,7 @@ // @ts-check +import path from 'node:path'; + import js from '@eslint/js'; import { globalIgnores } from 'eslint/config'; import formatjs from 'eslint-plugin-formatjs'; @@ -223,7 +225,9 @@ export default tseslint.config([ 'import/ignore': ['node_modules', '\\.(css|scss|json)$'], 'import/resolver': { - typescript: {}, + typescript: { + project: path.resolve(import.meta.dirname, './tsconfig.json'), + }, }, }, diff --git a/lib/mastodon/cli/accounts.rb b/lib/mastodon/cli/accounts.rb index 41127741ef..1b33f56055 100644 --- a/lib/mastodon/cli/accounts.rb +++ b/lib/mastodon/cli/accounts.rb @@ -79,7 +79,14 @@ module Mastodon::CLI account = Account.new(username: username) password = SecureRandom.hex - user = User.new(email: options[:email], password: password, agreement: true, role_id: role_id, confirmed_at: options[:confirmed] ? Time.now.utc : nil, bypass_invite_request_check: true) + user = User.new( + email: options[:email], + password: password, + agreement: true, + role_id: role_id, + confirmed_at: options[:confirmed] ? Time.now.utc : nil, + bypass_registration_checks: true + ) if options[:reattach] account = Account.find_local(username) || Account.new(username: username) diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index 61dba4eb52..99f4b86b73 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -552,7 +552,7 @@ namespace :mastodon do password = SecureRandom.hex(16) owner_role = UserRole.find_by(name: 'Owner') - user = User.new(email: email, password: password, confirmed_at: Time.now.utc, account_attributes: { username: username }, bypass_invite_request_check: true, role: owner_role) + user = User.new(email: email, password: password, confirmed_at: Time.now.utc, account_attributes: { username: username }, bypass_registration_checks: true, role: owner_role) user.save(validate: false) user.approve! diff --git a/spec/lib/mastodon/cli/accounts_spec.rb b/spec/lib/mastodon/cli/accounts_spec.rb index f6cc28297a..238f72f834 100644 --- a/spec/lib/mastodon/cli/accounts_spec.rb +++ b/spec/lib/mastodon/cli/accounts_spec.rb @@ -70,6 +70,25 @@ RSpec.describe Mastodon::CLI::Accounts do end end + context 'with min_age setting' do + let(:options) { { email: 'tootctl@example.com', confirmed: true } } + + before do + Setting.min_age = 42 + end + + it_behaves_like 'a new user with given email address and username' + + it 'creates a new user with confirmed status' do + expect { subject } + .to output_results('New password') + + user = User.find_by(email: options[:email]) + + expect(user.confirmed?).to be(true) + end + end + context 'with --confirmed option' do let(:options) { { email: 'tootctl@example.com', confirmed: true } } diff --git a/spec/system/admin/rules_spec.rb b/spec/system/admin/rules_spec.rb index 95391ba33d..afe9e87a52 100644 --- a/spec/system/admin/rules_spec.rb +++ b/spec/system/admin/rules_spec.rb @@ -26,6 +26,8 @@ RSpec.describe 'Admin Rules' do it 'creates new record with valid attributes' do visit admin_rules_path + click_on I18n.t('admin.rules.add_new') + # Invalid submission fill_in 'rule_text', with: '' expect { submit_form } diff --git a/spec/workers/activitypub/fetch_all_replies_worker_spec.rb b/spec/workers/activitypub/fetch_all_replies_worker_spec.rb index 4746d742d0..682d538653 100644 --- a/spec/workers/activitypub/fetch_all_replies_worker_spec.rb +++ b/spec/workers/activitypub/fetch_all_replies_worker_spec.rb @@ -125,6 +125,7 @@ RSpec.describe ActivityPub::FetchAllRepliesWorker do before do stub_const('Status::FetchRepliesConcern::FETCH_REPLIES_ENABLED', true) allow(FetchReplyWorker).to receive(:push_bulk) + allow(FetchReplyWorker).to receive(:perform_async) all_items.each do |item| next if [top_note_uri, reply_note_uri].include? item @@ -146,6 +147,12 @@ RSpec.describe ActivityPub::FetchAllRepliesWorker do got_uris = subject.perform(status.id) expect(got_uris).to match_array(top_items + top_items_paged) end + + it 'fetches the top status only once' do + _ = subject.perform(status.id, { request_id: 0 }) + expect(FetchReplyWorker).to have_received(:perform_async).with(top_note_uri, { prefetched_body: top_object.deep_stringify_keys, request_id: 0 }) + expect(a_request(:get, top_note_uri)).to have_been_made.once + end end describe 'perform' do diff --git a/streaming/eslint.config.mjs b/streaming/eslint.config.mjs index 51a6551514..aa2dfdb86b 100644 --- a/streaming/eslint.config.mjs +++ b/streaming/eslint.config.mjs @@ -1,5 +1,7 @@ // @ts-check +import path from 'node:path'; + import globals from 'globals'; import tseslint from 'typescript-eslint'; @@ -20,7 +22,9 @@ export default tseslint.config([ settings: { 'import/ignore': ['node_modules', '\\.(json)$'], 'import/resolver': { - typescript: {}, + typescript: { + project: path.resolve(import.meta.dirname, './tsconfig.json'), + }, }, }, diff --git a/tsconfig.json b/tsconfig.json index f0aeae8456..903d80bee3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,6 +5,7 @@ "module": "CommonJS", "moduleResolution": "node", "allowJs": true, + "resolveJsonModule": true, "noEmit": true, "strict": true, "noImplicitReturns": true, diff --git a/yarn.lock b/yarn.lock index d2c7fbb55b..2c0c33daa6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7838,14 +7838,7 @@ __metadata: languageName: node linkType: hard -"es-module-lexer@npm:^1.5.3": - version: 1.6.0 - resolution: "es-module-lexer@npm:1.6.0" - checksum: 10c0/667309454411c0b95c476025929881e71400d74a746ffa1ff4cb450bd87f8e33e8eef7854d68e401895039ac0bac64e7809acbebb6253e055dd49ea9e3ea9212 - languageName: node - linkType: hard - -"es-module-lexer@npm:^1.7.0": +"es-module-lexer@npm:^1.5.3, es-module-lexer@npm:^1.7.0": version: 1.7.0 resolution: "es-module-lexer@npm:1.7.0" checksum: 10c0/4c935affcbfeba7fb4533e1da10fa8568043df1e3574b869385980de9e2d475ddc36769891936dbb07036edb3c3786a8b78ccf44964cd130dedc1f2c984b6c7b @@ -12496,10 +12489,10 @@ __metadata: languageName: node linkType: hard -"pg-connection-string@npm:^2.6.0, pg-connection-string@npm:^2.8.5": - version: 2.8.5 - resolution: "pg-connection-string@npm:2.8.5" - checksum: 10c0/5f65afc9dfc99ecf1583a1699c97511f3d505659c9c6a91db8cd0ffe862caa29060722712a034abd6da493356567261febf18b3a6ef223d0a219f0d50d959b97 +"pg-connection-string@npm:^2.6.0, pg-connection-string@npm:^2.9.0": + version: 2.9.0 + resolution: "pg-connection-string@npm:2.9.0" + checksum: 10c0/7145d00688200685a9d9931a7fc8d61c75f348608626aef88080ece956ceb4ff1cbdee29c3284e41b7a3345bab0e4f50f9edc256e270bfa3a563af4ea78bb490 languageName: node linkType: hard @@ -12517,23 +12510,23 @@ __metadata: languageName: node linkType: hard -"pg-pool@npm:^3.9.6": - version: 3.9.6 - resolution: "pg-pool@npm:3.9.6" +"pg-pool@npm:^3.10.0": + version: 3.10.0 + resolution: "pg-pool@npm:3.10.0" peerDependencies: pg: ">=8.0" - checksum: 10c0/458d50a4e7260977f076472d40d0796fa8b513af7e3ce1bf65557e10724e9c13653661c883f6650dff92d0a1a5ff4e7a001a8262b786c1ad4cfbd35c3354353e + checksum: 10c0/b36162dc98c0ad88cd26f3d65f3e3932c3f870abe7a88905f16fc98282e8131692903e482720ebc9698cb08851c9b19242ff16a50af7f9434c8bb0b5d33a9a9a languageName: node linkType: hard -"pg-protocol@npm:*, pg-protocol@npm:^1.9.5": - version: 1.9.5 - resolution: "pg-protocol@npm:1.9.5" - checksum: 10c0/5cb3444cf973adadd22ee9ea26bb1674f0d980ef8f9c66d426bbe67fc9cb5f0ca4a204bf7e432b3ab2ab59ac8227f4b18ab3b2e64eaed537e037e916991c7319 +"pg-protocol@npm:*, pg-protocol@npm:^1.10.0": + version: 1.10.0 + resolution: "pg-protocol@npm:1.10.0" + checksum: 10c0/7d0d64fe9df50262d907fd476454e1e36f41f5f66044c3ba6aa773fb8add1d350a9c162306e5c33e99bdfbdcc1140dd4ca74f66eda41d0aaceb5853244dcdb65 languageName: node linkType: hard -"pg-types@npm:^2.1.0": +"pg-types@npm:2.2.0": version: 2.2.0 resolution: "pg-types@npm:2.2.0" dependencies: @@ -12562,15 +12555,15 @@ __metadata: linkType: hard "pg@npm:^8.5.0": - version: 8.15.6 - resolution: "pg@npm:8.15.6" + version: 8.16.0 + resolution: "pg@npm:8.16.0" dependencies: pg-cloudflare: "npm:^1.2.5" - pg-connection-string: "npm:^2.8.5" - pg-pool: "npm:^3.9.6" - pg-protocol: "npm:^1.9.5" - pg-types: "npm:^2.1.0" - pgpass: "npm:1.x" + pg-connection-string: "npm:^2.9.0" + pg-pool: "npm:^3.10.0" + pg-protocol: "npm:^1.10.0" + pg-types: "npm:2.2.0" + pgpass: "npm:1.0.5" peerDependencies: pg-native: ">=3.0.1" dependenciesMeta: @@ -12579,11 +12572,11 @@ __metadata: peerDependenciesMeta: pg-native: optional: true - checksum: 10c0/d4dc81020ebd137b6cf6228e43c643067acb8240079a07f7b9a7e97be0f33ad4d8c6f2a3f5b512ad87180e3d48e651fbd72885aa807ab58a715da8f3efea0fab + checksum: 10c0/24542229c7e5cbf69d654de32e8cdc8302c73f1338e56728543cb16364fb319d5689e03fa704b69a208105c7065c867cfccb9dbccccea2020bb5c64ead785713 languageName: node linkType: hard -"pgpass@npm:1.x": +"pgpass@npm:1.0.5": version: 1.0.5 resolution: "pgpass@npm:1.0.5" dependencies: @@ -14961,8 +14954,8 @@ __metadata: linkType: hard "sass@npm:^1.62.1": - version: 1.87.0 - resolution: "sass@npm:1.87.0" + version: 1.88.0 + resolution: "sass@npm:1.88.0" dependencies: "@parcel/watcher": "npm:^2.4.1" chokidar: "npm:^4.0.0" @@ -14973,7 +14966,7 @@ __metadata: optional: true bin: sass: sass.js - checksum: 10c0/bd245faf14e4783dc547765350cf05817edaac0d6d6f6e4da8ab751f3eb3cc3873afd563c0ce416a24aa6c9c4e9023b05096447fc006660a01f76adffb54fbc6 + checksum: 10c0/dcb16dc29116bfa5a90485d24fd8020d2b0d95155bd2e31285901588729343b59fefe44365c5f146b2ba5a9ebadef90b23a7220b902507bdbd91ca2ba0a0b688 languageName: node linkType: hard