Merge commit 'b2aa476abbe82e2b49d84c9fb8ef654f95391fd3' into glitch-soc/merge-upstream
This commit is contained in:
commit
99f0a03dec
2
.github/actions/setup-javascript/action.yml
vendored
2
.github/actions/setup-javascript/action.yml
vendored
@ -16,7 +16,7 @@ runs:
|
|||||||
# The following is needed because we can not use `cache: true` for `setup-node`, as it does not support Corepack yet and mess up with the cache location if ran after Node is installed
|
# The following is needed because we can not use `cache: true` for `setup-node`, as it does not support Corepack yet and mess up with the cache location if ran after Node is installed
|
||||||
- name: Enable corepack
|
- name: Enable corepack
|
||||||
shell: bash
|
shell: bash
|
||||||
run: corepack enable
|
run: npm i -g corepack
|
||||||
|
|
||||||
- name: Get yarn cache directory path
|
- name: Get yarn cache directory path
|
||||||
id: yarn-cache-dir-path
|
id: yarn-cache-dir-path
|
||||||
|
|||||||
@ -342,7 +342,7 @@ COPY --from=node /usr/local/lib /usr/local/lib
|
|||||||
RUN \
|
RUN \
|
||||||
# Configure Corepack
|
# Configure Corepack
|
||||||
rm /usr/local/bin/yarn*; \
|
rm /usr/local/bin/yarn*; \
|
||||||
corepack enable; \
|
npm i -g corepack; \
|
||||||
corepack prepare --activate;
|
corepack prepare --activate;
|
||||||
|
|
||||||
# hadolint ignore=DL3008
|
# hadolint ignore=DL3008
|
||||||
|
|||||||
1
Gemfile
1
Gemfile
@ -58,6 +58,7 @@ gem 'httplog', '~> 1.8.0', require: false
|
|||||||
gem 'i18n'
|
gem 'i18n'
|
||||||
gem 'idn-ruby', require: 'idn'
|
gem 'idn-ruby', require: 'idn'
|
||||||
gem 'inline_svg'
|
gem 'inline_svg'
|
||||||
|
gem 'ipaddr', '~> 1.2'
|
||||||
gem 'irb', '~> 1.8'
|
gem 'irb', '~> 1.8'
|
||||||
gem 'kaminari', '~> 1.2'
|
gem 'kaminari', '~> 1.2'
|
||||||
gem 'link_header', '~> 0.0'
|
gem 'link_header', '~> 0.0'
|
||||||
|
|||||||
@ -343,6 +343,7 @@ GEM
|
|||||||
activesupport (>= 3.0)
|
activesupport (>= 3.0)
|
||||||
nokogiri (>= 1.6)
|
nokogiri (>= 1.6)
|
||||||
io-console (0.8.2)
|
io-console (0.8.2)
|
||||||
|
ipaddr (1.2.9)
|
||||||
irb (1.18.0)
|
irb (1.18.0)
|
||||||
pp (>= 0.6.0)
|
pp (>= 0.6.0)
|
||||||
prism (>= 1.3.0)
|
prism (>= 1.3.0)
|
||||||
@ -992,6 +993,7 @@ DEPENDENCIES
|
|||||||
i18n-tasks (~> 1.0)
|
i18n-tasks (~> 1.0)
|
||||||
idn-ruby
|
idn-ruby
|
||||||
inline_svg
|
inline_svg
|
||||||
|
ipaddr (~> 1.2)
|
||||||
irb (~> 1.8)
|
irb (~> 1.8)
|
||||||
jd-paperclip-azure (~> 3.0)
|
jd-paperclip-azure (~> 3.0)
|
||||||
json
|
json
|
||||||
|
|||||||
2
Vagrantfile
vendored
2
Vagrantfile
vendored
@ -115,7 +115,7 @@ gem install bundler foreman
|
|||||||
bundle install
|
bundle install
|
||||||
|
|
||||||
# Install node modules
|
# Install node modules
|
||||||
sudo corepack enable
|
sudo npm i -g corepack
|
||||||
corepack prepare
|
corepack prepare
|
||||||
yarn install
|
yarn install
|
||||||
|
|
||||||
|
|||||||
10
app/controllers/redirect/collections_controller.rb
Normal file
10
app/controllers/redirect/collections_controller.rb
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class Redirect::CollectionsController < Redirect::BaseController
|
||||||
|
private
|
||||||
|
|
||||||
|
def set_resource
|
||||||
|
@resource = Collection.find(params[:id])
|
||||||
|
not_found if @resource.local? || @resource&.account&.suspended?
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -49,9 +49,9 @@ module ContextHelper
|
|||||||
},
|
},
|
||||||
quote_authorizations: {
|
quote_authorizations: {
|
||||||
'gts' => 'https://gotosocial.org/ns#',
|
'gts' => 'https://gotosocial.org/ns#',
|
||||||
'quoteAuthorization' => { '@id' => 'https://w3id.org/fep/044f#quoteAuthorization', '@type' => '@id' },
|
'QuoteAuthorization' => 'https://w3id.org/fep/044f#QuoteAuthorization',
|
||||||
'interactingObject' => { '@id' => 'gts:interactingObject' },
|
'interactingObject' => { '@id' => 'gts:interactingObject', '@type' => '@id' },
|
||||||
'interactionTarget' => { '@id' => 'gts:interactionTarget' },
|
'interactionTarget' => { '@id' => 'gts:interactionTarget', '@type' => '@id' },
|
||||||
},
|
},
|
||||||
}.freeze
|
}.freeze
|
||||||
|
|
||||||
|
|||||||
@ -3,8 +3,6 @@ import type { FC } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, useIntl } from 'react-intl';
|
import { defineMessages, useIntl } from 'react-intl';
|
||||||
|
|
||||||
import classNames from 'classnames';
|
|
||||||
|
|
||||||
import { followAccount } from '@/mastodon/actions/accounts';
|
import { followAccount } from '@/mastodon/actions/accounts';
|
||||||
import { useAccount } from '@/mastodon/hooks/useAccount';
|
import { useAccount } from '@/mastodon/hooks/useAccount';
|
||||||
import { getAccountHidden } from '@/mastodon/selectors/accounts';
|
import { getAccountHidden } from '@/mastodon/selectors/accounts';
|
||||||
@ -18,6 +16,7 @@ import { FollowButton } from '../follow_button';
|
|||||||
import { IconButton } from '../icon_button';
|
import { IconButton } from '../icon_button';
|
||||||
|
|
||||||
import { AccountMenu } from './menu';
|
import { AccountMenu } from './menu';
|
||||||
|
import classes from './styles.module.scss';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
enableNotifications: {
|
enableNotifications: {
|
||||||
@ -49,7 +48,7 @@ export const AccountButtons: FC<AccountButtonsProps> = ({
|
|||||||
const me = useAppSelector((state) => state.meta.get('me') as string);
|
const me = useAppSelector((state) => state.meta.get('me') as string);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={classNames('account__header__buttons', className)}>
|
<div className={className}>
|
||||||
{!hidden && (
|
{!hidden && (
|
||||||
<AccountButtonsOther accountId={accountId} noShare={noShare} />
|
<AccountButtonsOther accountId={accountId} noShare={noShare} />
|
||||||
)}
|
)}
|
||||||
@ -94,7 +93,7 @@ const AccountButtonsOther: FC<
|
|||||||
{!isMovedAndUnfollowedAccount && (
|
{!isMovedAndUnfollowedAccount && (
|
||||||
<FollowButton
|
<FollowButton
|
||||||
accountId={accountId}
|
accountId={accountId}
|
||||||
className='account__header__follow-button'
|
className={classes.followButton}
|
||||||
labelLength='long'
|
labelLength='long'
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@ -108,11 +108,9 @@ const FieldCard: FC<{
|
|||||||
}> = ({ htmlHandlers, field }) => {
|
}> = ({ htmlHandlers, field }) => {
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
const {
|
const {
|
||||||
name,
|
|
||||||
name_emojified,
|
name_emojified,
|
||||||
nameHasEmojis,
|
nameHasEmojis,
|
||||||
value_emojified,
|
value_emojified,
|
||||||
value_plain,
|
|
||||||
valueHasEmojis,
|
valueHasEmojis,
|
||||||
verified_at,
|
verified_at,
|
||||||
} = field;
|
} = field;
|
||||||
@ -138,8 +136,7 @@ const FieldCard: FC<{
|
|||||||
)}
|
)}
|
||||||
label={
|
label={
|
||||||
<FieldHTML
|
<FieldHTML
|
||||||
text={name}
|
text={name_emojified}
|
||||||
textEmojified={name_emojified}
|
|
||||||
textHasCustomEmoji={nameHasEmojis}
|
textHasCustomEmoji={nameHasEmojis}
|
||||||
className='translate'
|
className='translate'
|
||||||
isOverflowing={isLabelOverflowing}
|
isOverflowing={isLabelOverflowing}
|
||||||
@ -149,8 +146,7 @@ const FieldCard: FC<{
|
|||||||
}
|
}
|
||||||
value={
|
value={
|
||||||
<FieldHTML
|
<FieldHTML
|
||||||
text={value_plain}
|
text={value_emojified}
|
||||||
textEmojified={value_emojified}
|
|
||||||
textHasCustomEmoji={valueHasEmojis}
|
textHasCustomEmoji={valueHasEmojis}
|
||||||
isOverflowing={isValueOverflowing}
|
isOverflowing={isValueOverflowing}
|
||||||
onOverflowClick={handleOverflowClick}
|
onOverflowClick={handleOverflowClick}
|
||||||
@ -175,7 +171,6 @@ const FieldCard: FC<{
|
|||||||
|
|
||||||
type FieldHTMLProps = {
|
type FieldHTMLProps = {
|
||||||
text: string;
|
text: string;
|
||||||
textEmojified: string;
|
|
||||||
textHasCustomEmoji: boolean;
|
textHasCustomEmoji: boolean;
|
||||||
isOverflowing?: boolean;
|
isOverflowing?: boolean;
|
||||||
onOverflowClick?: () => void;
|
onOverflowClick?: () => void;
|
||||||
@ -183,9 +178,7 @@ type FieldHTMLProps = {
|
|||||||
|
|
||||||
const FieldHTML: FC<FieldHTMLProps> = ({
|
const FieldHTML: FC<FieldHTMLProps> = ({
|
||||||
className,
|
className,
|
||||||
extraEmojis,
|
|
||||||
text,
|
text,
|
||||||
textEmojified,
|
|
||||||
textHasCustomEmoji,
|
textHasCustomEmoji,
|
||||||
isOverflowing,
|
isOverflowing,
|
||||||
onOverflowClick,
|
onOverflowClick,
|
||||||
@ -198,7 +191,7 @@ const FieldHTML: FC<FieldHTMLProps> = ({
|
|||||||
const html = (
|
const html = (
|
||||||
<EmojiHTML
|
<EmojiHTML
|
||||||
as='span'
|
as='span'
|
||||||
htmlString={textEmojified}
|
htmlString={text}
|
||||||
className={className}
|
className={className}
|
||||||
onElement={handleElement}
|
onElement={handleElement}
|
||||||
data-contents
|
data-contents
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
import { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
|
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import { openModal } from '@/mastodon/actions/modal';
|
import { openModal } from '@/mastodon/actions/modal';
|
||||||
import FollowRequestNoteContainer from '@/mastodon/features/account/containers/follow_request_note_container';
|
import FollowRequestNoteContainer from '@/mastodon/features/account/containers/follow_request_note_container';
|
||||||
@ -96,22 +97,20 @@ export const AccountHeader: React.FC<{
|
|||||||
const isMe = me && account.id === me;
|
const isMe = me && account.id === me;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='account-timeline__header'>
|
<div>
|
||||||
{!hidden && account.memorial && <MemorialNote />}
|
{!hidden && account.memorial && <MemorialNote />}
|
||||||
{!hidden && account.moved && (
|
{!hidden && account.moved && (
|
||||||
<MovedNote accountId={account.id} targetAccountId={account.moved} />
|
<MovedNote accountId={account.id} targetAccountId={account.moved} />
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<AnimateEmojiProvider
|
<AnimateEmojiProvider
|
||||||
className={classNames('account__header', {
|
className={classNames(!!account.moved && classes.moved)}
|
||||||
inactive: !!account.moved,
|
|
||||||
})}
|
|
||||||
>
|
>
|
||||||
{!suspendedOrHidden && !account.moved && relationship?.requested_by && (
|
{!suspendedOrHidden && !account.moved && relationship?.requested_by && (
|
||||||
<FollowRequestNoteContainer account={account} />
|
<FollowRequestNoteContainer account={account} />
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<div className={classNames('account__header__image', classes.header)}>
|
<div className={classes.header}>
|
||||||
{!suspendedOrHidden && (
|
{!suspendedOrHidden && (
|
||||||
<img
|
<img
|
||||||
src={autoPlayGif ? account.header : account.header_static}
|
src={autoPlayGif ? account.header : account.header_static}
|
||||||
@ -121,21 +120,16 @@ export const AccountHeader: React.FC<{
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className={classNames('account__header__bar', classes.barWrapper)}>
|
<div className={classes.barWrapper}>
|
||||||
<div
|
<div className={classes.avatarWrapper}>
|
||||||
className={classNames(
|
|
||||||
'account__header__tabs',
|
|
||||||
classes.avatarWrapper,
|
|
||||||
)}
|
|
||||||
>
|
|
||||||
<a
|
<a
|
||||||
className='avatar'
|
|
||||||
href={account.avatar}
|
href={account.avatar}
|
||||||
rel='noopener'
|
rel='noopener'
|
||||||
target='_blank'
|
target='_blank'
|
||||||
onClick={handleOpenAvatar}
|
onClick={handleOpenAvatar}
|
||||||
>
|
>
|
||||||
<Avatar
|
<Avatar
|
||||||
|
className={classes.avatar}
|
||||||
account={suspendedOrHidden ? undefined : account}
|
account={suspendedOrHidden ? undefined : account}
|
||||||
alt={account.avatar_description}
|
alt={account.avatar_description}
|
||||||
size={80}
|
size={80}
|
||||||
@ -143,12 +137,7 @@ export const AccountHeader: React.FC<{
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div className={classes.displayNameWrapper}>
|
||||||
className={classNames(
|
|
||||||
'account__header__tabs__name',
|
|
||||||
classes.displayNameWrapper,
|
|
||||||
)}
|
|
||||||
>
|
|
||||||
<AccountName accountId={accountId} />
|
<AccountName accountId={accountId} />
|
||||||
<AccountButtons
|
<AccountButtons
|
||||||
accountId={accountId}
|
accountId={accountId}
|
||||||
@ -168,23 +157,16 @@ export const AccountHeader: React.FC<{
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
{!suspendedOrHidden && (
|
{!suspendedOrHidden && (
|
||||||
<div className='account__header__extra'>
|
<div className={classes.bioButtonsWrapper}>
|
||||||
<div className='account__header__bio'>
|
{me && account.id !== me && <AccountNote accountId={accountId} />}
|
||||||
{me && account.id !== me && (
|
|
||||||
<AccountNote accountId={accountId} />
|
|
||||||
)}
|
|
||||||
|
|
||||||
<AccountBio
|
<AccountBio
|
||||||
showDropdown
|
showDropdown
|
||||||
accountId={accountId}
|
accountId={accountId}
|
||||||
className={classNames(
|
className={classes.bio}
|
||||||
'account__header__content',
|
|
||||||
classes.bio,
|
|
||||||
)}
|
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<AccountHeaderFields accountId={accountId} />
|
<AccountHeaderFields accountId={accountId} />
|
||||||
</div>
|
|
||||||
|
|
||||||
{!me && account.email_subscriptions && (
|
{!me && account.email_subscriptions && (
|
||||||
<AccountSubscriptionForm accountId={accountId} />
|
<AccountSubscriptionForm accountId={accountId} />
|
||||||
|
|||||||
@ -1,26 +1,79 @@
|
|||||||
|
.moved {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Account header
|
||||||
.header {
|
.header {
|
||||||
height: 120px;
|
height: 120px;
|
||||||
|
overflow: hidden;
|
||||||
background: var(--color-bg-secondary);
|
background: var(--color-bg-secondary);
|
||||||
|
border-bottom: 1px solid var(--color-border-primary);
|
||||||
|
|
||||||
|
img {
|
||||||
|
object-fit: cover;
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
@container (width >= 500px) {
|
@container (width >= 500px) {
|
||||||
height: 160px;
|
height: 160px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:global(.inactive) & {
|
||||||
|
filter: grayscale(100%);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Wraps everything except the header image.
|
||||||
.barWrapper {
|
.barWrapper {
|
||||||
border-bottom: none;
|
|
||||||
padding-inline: 16px;
|
padding-inline: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Avatar
|
||||||
.avatarWrapper {
|
.avatarWrapper {
|
||||||
margin-top: -64px;
|
margin-top: -64px;
|
||||||
padding-top: 0;
|
padding-top: 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
justify-content: space-between;
|
||||||
|
gap: 8px;
|
||||||
|
overflow: hidden;
|
||||||
|
margin-inline-start: -2px; // aligns the pfp with content below
|
||||||
|
}
|
||||||
|
|
||||||
|
.avatar {
|
||||||
|
background: var(--color-bg-primary);
|
||||||
|
border: 1px solid var(--color-border-primary);
|
||||||
|
border-radius: var(--avatar-border-radius);
|
||||||
|
|
||||||
|
.moved & {
|
||||||
|
filter: grayscale(100%);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.displayNameWrapper {
|
.displayNameWrapper {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: start;
|
align-items: start;
|
||||||
gap: 16px;
|
gap: 16px;
|
||||||
|
margin-top: 16px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 17px;
|
||||||
|
line-height: 22px;
|
||||||
|
color: var(--color-text-primary);
|
||||||
|
font-weight: 600;
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
:global(.emojione) {
|
||||||
|
width: 22px;
|
||||||
|
height: 22px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.nameWrapper {
|
.nameWrapper {
|
||||||
@ -112,21 +165,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$button-breakpoint: 420px;
|
|
||||||
$button-fallback-breakpoint: $button-breakpoint + 55px;
|
|
||||||
|
|
||||||
.buttonsDesktop {
|
|
||||||
@container (width < #{$button-breakpoint}) {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
@supports (not (container-type: inline-size)) {
|
|
||||||
@media (max-width: #{$button-fallback-breakpoint}) {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.handleCopy {
|
.handleCopy {
|
||||||
border: 1px solid var(--color-border-primary);
|
border: 1px solid var(--color-border-primary);
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
@ -147,6 +185,45 @@ $button-fallback-breakpoint: $button-breakpoint + 55px;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$button-breakpoint: 420px;
|
||||||
|
$button-fallback-breakpoint: $button-breakpoint + 55px;
|
||||||
|
|
||||||
|
.buttonsDesktop,
|
||||||
|
.buttonsMobile {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
|
||||||
|
:global(.button) {
|
||||||
|
flex-shrink: 1;
|
||||||
|
white-space: nowrap;
|
||||||
|
min-width: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:global(.icon-button) {
|
||||||
|
border: 1px solid var(--color-border-primary);
|
||||||
|
border-radius: 4px;
|
||||||
|
box-sizing: content-box;
|
||||||
|
padding: 5px;
|
||||||
|
|
||||||
|
&:global(.copied) {
|
||||||
|
border-color: var(--color-text-success);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttonsDesktop {
|
||||||
|
@container (width < #{$button-breakpoint}) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@supports (not (container-type: inline-size)) {
|
||||||
|
@media (max-width: #{$button-fallback-breakpoint}) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.buttonsMobile {
|
.buttonsMobile {
|
||||||
position: sticky;
|
position: sticky;
|
||||||
bottom: var(--mobile-bottom-nav-height);
|
bottom: var(--mobile-bottom-nav-height);
|
||||||
@ -188,6 +265,7 @@ $button-fallback-breakpoint: $button-breakpoint + 55px;
|
|||||||
|
|
||||||
.bio {
|
.bio {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
|
color: var(--color-text-primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.familiarFollowers {
|
.familiarFollowers {
|
||||||
@ -420,3 +498,13 @@ $button-fallback-breakpoint: $button-breakpoint + 55px;
|
|||||||
background: var(--color-bg-primary);
|
background: var(--color-bg-primary);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Buttons
|
||||||
|
|
||||||
|
.followButton {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bioButtonsWrapper {
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { PureComponent } from 'react';
|
|||||||
|
|
||||||
import { FormattedMessage } from 'react-intl';
|
import { FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import StackTrace from 'stacktrace-js';
|
import StackTrace from 'stacktrace-js';
|
||||||
|
|
||||||
|
|||||||
@ -154,6 +154,7 @@ export const HoverCardAccount = forwardRef<
|
|||||||
{(isMutual || isFollower) && (
|
{(isMutual || isFollower) && (
|
||||||
<>
|
<>
|
||||||
·
|
·
|
||||||
|
<span>
|
||||||
{isMutual ? (
|
{isMutual ? (
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id='account.mutual'
|
id='account.mutual'
|
||||||
@ -165,6 +166,7 @@ export const HoverCardAccount = forwardRef<
|
|||||||
defaultMessage='Follows you'
|
defaultMessage='Follows you'
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
</span>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { PureComponent } from 'react';
|
import { PureComponent } from 'react';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
import { Route } from 'react-router-dom';
|
import { Route } from 'react-router-dom';
|
||||||
|
|
||||||
import { Provider as ReduxProvider } from 'react-redux';
|
import { Provider as ReduxProvider } from 'react-redux';
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { PureComponent } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, FormattedMessage } from 'react-intl';
|
import { defineMessages, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
|||||||
@ -2,9 +2,10 @@ import type { FC } from 'react';
|
|||||||
|
|
||||||
import { FormattedMessage } from 'react-intl';
|
import { FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import { Column } from '@/mastodon/components/column';
|
import { Column } from '@/mastodon/components/column';
|
||||||
import { ColumnHeader } from '@/mastodon/components/column_header';
|
import { ColumnHeader } from '@/mastodon/components/column_header';
|
||||||
import { LoadingIndicator } from '@/mastodon/components/loading_indicator';
|
import { LoadingIndicator } from '@/mastodon/components/loading_indicator';
|
||||||
|
|||||||
@ -24,6 +24,7 @@ import Column from '@/mastodon/features/ui/components/column';
|
|||||||
import { useAccount } from '@/mastodon/hooks/useAccount';
|
import { useAccount } from '@/mastodon/hooks/useAccount';
|
||||||
import { useAccountId } from '@/mastodon/hooks/useAccountId';
|
import { useAccountId } from '@/mastodon/hooks/useAccountId';
|
||||||
import { useAccountVisibility } from '@/mastodon/hooks/useAccountVisibility';
|
import { useAccountVisibility } from '@/mastodon/hooks/useAccountVisibility';
|
||||||
|
import { me } from '@/mastodon/initial_state';
|
||||||
import { useAppDispatch, useAppSelector } from '@/mastodon/store';
|
import { useAppDispatch, useAppSelector } from '@/mastodon/store';
|
||||||
import AddIcon from '@/material-icons/400-24px/add.svg?react';
|
import AddIcon from '@/material-icons/400-24px/add.svg?react';
|
||||||
|
|
||||||
@ -173,12 +174,14 @@ const AccountFeatured: React.FC<{ multiColumn: boolean }> = ({
|
|||||||
defaultMessage='Collections'
|
defaultMessage='Collections'
|
||||||
/>
|
/>
|
||||||
</h2>
|
</h2>
|
||||||
|
{accountId === me && (
|
||||||
<SubheadingLink to='/collections/new' icon={AddIcon}>
|
<SubheadingLink to='/collections/new' icon={AddIcon}>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id='account.featured.new_collection'
|
id='account.featured.new_collection'
|
||||||
defaultMessage='New collection'
|
defaultMessage='New collection'
|
||||||
/>
|
/>
|
||||||
</SubheadingLink>
|
</SubheadingLink>
|
||||||
|
)}
|
||||||
</Subheading>
|
</Subheading>
|
||||||
{hasCollections ? (
|
{hasCollections ? (
|
||||||
<ItemList>
|
<ItemList>
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { useEffect, useRef, useCallback } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import BookmarksIcon from '@/material-icons/400-24px/bookmarks-fill.svg?react';
|
import BookmarksIcon from '@/material-icons/400-24px/bookmarks-fill.svg?react';
|
||||||
import {
|
import {
|
||||||
|
|||||||
@ -131,7 +131,7 @@ export const CollectionMenu: React.FC<{
|
|||||||
{
|
{
|
||||||
text: intl.formatMessage(messages.copyLink),
|
text: intl.formatMessage(messages.copyLink),
|
||||||
action: () => {
|
action: () => {
|
||||||
void navigator.clipboard.writeText(getCollectionPath(id));
|
void navigator.clipboard.writeText(collection.url);
|
||||||
dispatch(showAlert({ message: messages.copyLinkConfirmation }));
|
dispatch(showAlert({ message: messages.copyLinkConfirmation }));
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -196,13 +196,14 @@ export const CollectionMenu: React.FC<{
|
|||||||
id,
|
id,
|
||||||
openShareModal,
|
openShareModal,
|
||||||
isOwnCollection,
|
isOwnCollection,
|
||||||
|
collection.url,
|
||||||
dispatch,
|
dispatch,
|
||||||
openDeleteConfirmation,
|
openDeleteConfirmation,
|
||||||
context,
|
context,
|
||||||
currentAccountInCollection,
|
currentAccountInCollection,
|
||||||
openReportModal,
|
openReportModal,
|
||||||
openBlockModal,
|
|
||||||
openRevokeConfirmation,
|
openRevokeConfirmation,
|
||||||
|
openBlockModal,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@ -42,7 +42,7 @@ export const CollectionShareModal: React.FC<{
|
|||||||
const isNew = !!location.state?.newCollection;
|
const isNew = !!location.state?.newCollection;
|
||||||
const isOwnCollection = collection.account_id === me;
|
const isOwnCollection = collection.account_id === me;
|
||||||
|
|
||||||
const collectionLink = `${window.location.origin}/collections/${collection.id}`;
|
const collectionLink = collection.url;
|
||||||
|
|
||||||
const handleShareOnDevice = useCallback(() => {
|
const handleShareOnDevice = useCallback(() => {
|
||||||
void navigator.share({
|
void navigator.share({
|
||||||
|
|||||||
@ -138,12 +138,16 @@ export const CollectionAccountsList: React.FC<{
|
|||||||
|
|
||||||
const renderAccountItemButton = useCallback(
|
const renderAccountItemButton = useCallback(
|
||||||
({ relationship, accountId }: RenderButtonOptions) => {
|
({ relationship, accountId }: RenderButtonOptions) => {
|
||||||
|
if (!me || !relationship) {
|
||||||
|
// Show follow button when logged out (it will trigger the remote interaction modal)
|
||||||
|
return <AccountListItemFollowButton accountId={accountId} />;
|
||||||
|
}
|
||||||
|
|
||||||
// When viewing your own collection, only show the Follow button
|
// When viewing your own collection, only show the Follow button
|
||||||
// for accounts you're not following anymore.
|
// for accounts you're not following anymore.
|
||||||
const withoutButton =
|
const withoutButton =
|
||||||
!relationship ||
|
collectionOwnerId === me &&
|
||||||
(collectionOwnerId === me &&
|
(relationship.following || relationship.requested);
|
||||||
(relationship.following || relationship.requested));
|
|
||||||
|
|
||||||
if (withoutButton) return null;
|
if (withoutButton) return null;
|
||||||
|
|
||||||
|
|||||||
@ -2,10 +2,11 @@ import { useCallback, useEffect } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
import { useHistory, useLocation, useParams } from 'react-router';
|
import { useHistory, useLocation, useParams } from 'react-router';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import HelpIcon from '@/material-icons/400-24px/help.svg?react';
|
import HelpIcon from '@/material-icons/400-24px/help.svg?react';
|
||||||
import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react';
|
import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react';
|
||||||
import ShareIcon from '@/material-icons/400-24px/share.svg?react';
|
import ShareIcon from '@/material-icons/400-24px/share.svg?react';
|
||||||
|
|||||||
@ -2,7 +2,6 @@ import { useEffect } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
import {
|
import {
|
||||||
Switch,
|
Switch,
|
||||||
Route,
|
Route,
|
||||||
@ -12,6 +11,8 @@ import {
|
|||||||
useLocation,
|
useLocation,
|
||||||
} from 'react-router-dom';
|
} from 'react-router-dom';
|
||||||
|
|
||||||
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import { Callout } from '@/mastodon/components/callout';
|
import { Callout } from '@/mastodon/components/callout';
|
||||||
import { useCurrentAccountId } from '@/mastodon/hooks/useAccountId';
|
import { useCurrentAccountId } from '@/mastodon/hooks/useAccountId';
|
||||||
import { initialState } from '@/mastodon/initial_state';
|
import { initialState } from '@/mastodon/initial_state';
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
import { defineMessages, useIntl } from 'react-intl';
|
import { defineMessages, useIntl } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
import { Route, Switch, useRouteMatch } from 'react-router-dom';
|
import { Route, Switch, useRouteMatch } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import { TabLink, TabList } from '@/mastodon/components/tab_list';
|
import { TabLink, TabList } from '@/mastodon/components/tab_list';
|
||||||
import { Column } from 'mastodon/components/column';
|
import { Column } from 'mastodon/components/column';
|
||||||
import { ColumnHeader } from 'mastodon/components/column_header';
|
import { ColumnHeader } from 'mastodon/components/column_header';
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { PureComponent } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, FormattedMessage } from 'react-intl';
|
import { defineMessages, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
|
||||||
|
|||||||
@ -2,11 +2,12 @@ import { useEffect, useCallback } from 'react';
|
|||||||
|
|
||||||
import { useIntl, defineMessages } from 'react-intl';
|
import { useIntl, defineMessages } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
import type { Map as ImmutableMap, List as ImmutableList } from 'immutable';
|
import type { Map as ImmutableMap, List as ImmutableList } from 'immutable';
|
||||||
|
|
||||||
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import elephantUIPlane from '@/images/elephant_ui_plane.svg';
|
import elephantUIPlane from '@/images/elephant_ui_plane.svg';
|
||||||
import EditIcon from '@/material-icons/400-24px/edit_square.svg?react';
|
import EditIcon from '@/material-icons/400-24px/edit_square.svg?react';
|
||||||
import PeopleIcon from '@/material-icons/400-24px/group.svg?react';
|
import PeopleIcon from '@/material-icons/400-24px/group.svg?react';
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { useRef, useCallback, useEffect } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import { useDispatch } from 'react-redux';
|
import { useDispatch } from 'react-redux';
|
||||||
|
|
||||||
|
|||||||
@ -3,10 +3,10 @@ import { useCallback, useEffect, useRef } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, useIntl } from 'react-intl';
|
import { defineMessages, useIntl } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
|
|
||||||
import { List as ImmutableList } from 'immutable';
|
import { List as ImmutableList } from 'immutable';
|
||||||
|
|
||||||
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import PeopleIcon from '@/material-icons/400-24px/group.svg?react';
|
import PeopleIcon from '@/material-icons/400-24px/group.svg?react';
|
||||||
import {
|
import {
|
||||||
addColumn,
|
addColumn,
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { useEffect, useRef, useCallback, useState } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import BlockIcon from '@/material-icons/400-24px/block-fill.svg?react';
|
import BlockIcon from '@/material-icons/400-24px/block-fill.svg?react';
|
||||||
import { apiGetDomainBlocks } from 'mastodon/api/domain_blocks';
|
import { apiGetDomainBlocks } from 'mastodon/api/domain_blocks';
|
||||||
|
|||||||
@ -2,9 +2,10 @@ import { useCallback, useRef } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
import { NavLink, Switch, Route } from 'react-router-dom';
|
import { NavLink, Switch, Route } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import TrendingUpIcon from '@/material-icons/400-24px/trending_up.svg?react';
|
import TrendingUpIcon from '@/material-icons/400-24px/trending_up.svg?react';
|
||||||
import { Column } from 'mastodon/components/column';
|
import { Column } from 'mastodon/components/column';
|
||||||
import type { ColumnRef } from 'mastodon/components/column';
|
import type { ColumnRef } from 'mastodon/components/column';
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { useEffect, useRef, useCallback } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import StarIcon from '@/material-icons/400-24px/star-fill.svg?react';
|
import StarIcon from '@/material-icons/400-24px/star-fill.svg?react';
|
||||||
import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns';
|
import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns';
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
|||||||
|
|
||||||
import { defineMessages, FormattedMessage } from 'react-intl';
|
import { defineMessages, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { useRef, useCallback, useEffect } from 'react';
|
|||||||
|
|
||||||
import { useIntl, defineMessages, FormattedMessage } from 'react-intl';
|
import { useIntl, defineMessages, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
import { NavLink } from 'react-router-dom';
|
import { NavLink } from 'react-router-dom';
|
||||||
|
|
||||||
import { useIdentity } from '@/mastodon/identity_context';
|
import { useIdentity } from '@/mastodon/identity_context';
|
||||||
|
|||||||
@ -10,11 +10,11 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
|
|||||||
import CheckIcon from '@/material-icons/400-24px/check.svg?react';
|
import CheckIcon from '@/material-icons/400-24px/check.svg?react';
|
||||||
import CloseIcon from '@/material-icons/400-24px/close.svg?react';
|
import CloseIcon from '@/material-icons/400-24px/close.svg?react';
|
||||||
|
|
||||||
|
import { AccountBio } from '@/mastodon/components/account_bio';
|
||||||
import { Avatar } from '@/mastodon/components/avatar';
|
import { Avatar } from '@/mastodon/components/avatar';
|
||||||
import { DisplayName } from '@/mastodon/components/display_name';
|
import { DisplayName } from '@/mastodon/components/display_name';
|
||||||
import { IconButton } from '@/mastodon/components/icon_button';
|
import { IconButton } from '@/mastodon/components/icon_button';
|
||||||
import { injectIntl } from '@/mastodon/components/intl';
|
import { injectIntl } from '@/mastodon/components/intl';
|
||||||
import { EmojiHTML } from '@/mastodon/components/emoji/html';
|
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
authorize: { id: 'follow_request.authorize', defaultMessage: 'Authorize' },
|
authorize: { id: 'follow_request.authorize', defaultMessage: 'Authorize' },
|
||||||
@ -41,11 +41,7 @@ class AccountAuthorize extends ImmutablePureComponent {
|
|||||||
<DisplayName account={account} />
|
<DisplayName account={account} />
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<EmojiHTML
|
<AccountBio accountId={account.id} />
|
||||||
className='account__header__content translate'
|
|
||||||
htmlString={account.get('note_emojified')}
|
|
||||||
extraEmojis={account.get('emojis')}
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='account--panel'>
|
<div className='account--panel'>
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
|||||||
|
|
||||||
import { defineMessages, FormattedMessage } from 'react-intl';
|
import { defineMessages, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import { useEffect, useCallback, useRef } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
|
|
||||||
import { isFulfilled } from '@reduxjs/toolkit';
|
import { isFulfilled } from '@reduxjs/toolkit';
|
||||||
|
|
||||||
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import TagIcon from '@/material-icons/400-24px/tag.svg?react';
|
import TagIcon from '@/material-icons/400-24px/tag.svg?react';
|
||||||
import {
|
import {
|
||||||
fetchFollowedHashtags,
|
fetchFollowedHashtags,
|
||||||
|
|||||||
@ -28,6 +28,7 @@ interface AccountListProps {
|
|||||||
list?: AccountList | null;
|
list?: AccountList | null;
|
||||||
loadMore: () => void;
|
loadMore: () => void;
|
||||||
prependAccountId?: string | null;
|
prependAccountId?: string | null;
|
||||||
|
withoutFollowsYouBadge?: boolean;
|
||||||
scrollKey: string;
|
scrollKey: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -40,6 +41,7 @@ export const AccountList: FC<AccountListProps> = ({
|
|||||||
list,
|
list,
|
||||||
loadMore,
|
loadMore,
|
||||||
prependAccountId,
|
prependAccountId,
|
||||||
|
withoutFollowsYouBadge,
|
||||||
scrollKey,
|
scrollKey,
|
||||||
}) => {
|
}) => {
|
||||||
const account = useAccount(accountId);
|
const account = useAccount(accountId);
|
||||||
@ -57,6 +59,7 @@ export const AccountList: FC<AccountListProps> = ({
|
|||||||
key={followerId}
|
key={followerId}
|
||||||
accountId={followerId}
|
accountId={followerId}
|
||||||
withBio={false}
|
withBio={false}
|
||||||
|
badge={withoutFollowsYouBadge ? false : null}
|
||||||
/>
|
/>
|
||||||
)) ?? [];
|
)) ?? [];
|
||||||
|
|
||||||
@ -66,11 +69,12 @@ export const AccountList: FC<AccountListProps> = ({
|
|||||||
key={prependAccountId}
|
key={prependAccountId}
|
||||||
accountId={prependAccountId}
|
accountId={prependAccountId}
|
||||||
withBio={false}
|
withBio={false}
|
||||||
|
badge={withoutFollowsYouBadge ? false : null}
|
||||||
/>,
|
/>,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return children;
|
return children;
|
||||||
}, [prependAccountId, list, forceEmptyState]);
|
}, [prependAccountId, list, forceEmptyState, withoutFollowsYouBadge]);
|
||||||
|
|
||||||
const { multiColumn } = useLayout();
|
const { multiColumn } = useLayout();
|
||||||
|
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import { expandFollowers, fetchFollowers } from '@/mastodon/actions/accounts';
|
|||||||
import { useAccount } from '@/mastodon/hooks/useAccount';
|
import { useAccount } from '@/mastodon/hooks/useAccount';
|
||||||
import { useAccountId } from '@/mastodon/hooks/useAccountId';
|
import { useAccountId } from '@/mastodon/hooks/useAccountId';
|
||||||
import { useRelationship } from '@/mastodon/hooks/useRelationship';
|
import { useRelationship } from '@/mastodon/hooks/useRelationship';
|
||||||
|
import { me } from '@/mastodon/initial_state';
|
||||||
import { selectUserListWithoutMe } from '@/mastodon/selectors/user_lists';
|
import { selectUserListWithoutMe } from '@/mastodon/selectors/user_lists';
|
||||||
import { useAppDispatch, useAppSelector } from '@/mastodon/store';
|
import { useAppDispatch, useAppSelector } from '@/mastodon/store';
|
||||||
|
|
||||||
@ -85,6 +86,7 @@ const Followers: FC = () => {
|
|||||||
list={followerList}
|
list={followerList}
|
||||||
loadMore={loadMore}
|
loadMore={loadMore}
|
||||||
prependAccountId={followerId}
|
prependAccountId={followerId}
|
||||||
|
withoutFollowsYouBadge={accountId === me}
|
||||||
scrollKey='followers'
|
scrollKey='followers'
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { useIntl } from 'react-intl';
|
import { useIntl } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import { Column } from 'mastodon/components/column';
|
import { Column } from 'mastodon/components/column';
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { PureComponent } from 'react';
|
|||||||
|
|
||||||
import { FormattedMessage } from 'react-intl';
|
import { FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import { PureComponent } from 'react';
|
|||||||
import { defineMessages, FormattedMessage } from 'react-intl';
|
import { defineMessages, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
|
||||||
|
|||||||
@ -483,11 +483,19 @@ const InteractionModal: React.FC<{
|
|||||||
/>
|
/>
|
||||||
</h3>
|
</h3>
|
||||||
<p>
|
<p>
|
||||||
|
{intent === 'follow' ? (
|
||||||
|
<FormattedMessage
|
||||||
|
id='interaction_modal.action_follow'
|
||||||
|
defaultMessage='To follow {name}, you need to sign into your account on whatever Mastodon server you use.'
|
||||||
|
values={{ name }}
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id='interaction_modal.action'
|
id='interaction_modal.action'
|
||||||
defaultMessage="To interact with {name}'s post, you need to sign into your account on whatever Mastodon server you use."
|
defaultMessage="To interact with {name}'s post, you need to sign into your account on whatever Mastodon server you use."
|
||||||
values={{ name }}
|
values={{ name }}
|
||||||
/>
|
/>
|
||||||
|
)}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
|||||||
|
|
||||||
import { defineMessages, FormattedMessage } from 'react-intl';
|
import { defineMessages, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
import { useRef, useEffect, useCallback } from 'react';
|
import { useRef, useEffect, useCallback } from 'react';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
import { useParams } from 'react-router-dom';
|
import { useParams } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import TrendingUpIcon from '@/material-icons/400-24px/trending_up.svg?react';
|
import TrendingUpIcon from '@/material-icons/400-24px/trending_up.svg?react';
|
||||||
import { expandLinkTimeline } from 'mastodon/actions/timelines';
|
import { expandLinkTimeline } from 'mastodon/actions/timelines';
|
||||||
import { Column } from 'mastodon/components/column';
|
import { Column } from 'mastodon/components/column';
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { PureComponent } from 'react';
|
|||||||
|
|
||||||
import { FormattedMessage } from 'react-intl';
|
import { FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
import { Link, withRouter } from 'react-router-dom';
|
import { Link, withRouter } from 'react-router-dom';
|
||||||
|
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
|
|||||||
@ -2,9 +2,10 @@ import { useEffect, useMemo, useCallback } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import AddIcon from '@/material-icons/400-24px/add.svg?react';
|
import AddIcon from '@/material-icons/400-24px/add.svg?react';
|
||||||
import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react';
|
import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react';
|
||||||
import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react';
|
import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react';
|
||||||
|
|||||||
@ -2,9 +2,10 @@ import { useCallback, useState, useEffect } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
import { useParams, Link } from 'react-router-dom';
|
import { useParams, Link } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react';
|
import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react';
|
||||||
import SquigglyArrow from '@/svg-icons/squiggly_arrow.svg?react';
|
import SquigglyArrow from '@/svg-icons/squiggly_arrow.svg?react';
|
||||||
import { fetchRelationships } from 'mastodon/actions/accounts';
|
import { fetchRelationships } from 'mastodon/actions/accounts';
|
||||||
|
|||||||
@ -2,11 +2,12 @@ import { useCallback, useState, useEffect } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
import { useParams, useHistory, Link } from 'react-router-dom';
|
import { useParams, useHistory, Link } from 'react-router-dom';
|
||||||
|
|
||||||
import { isFulfilled } from '@reduxjs/toolkit';
|
import { isFulfilled } from '@reduxjs/toolkit';
|
||||||
|
|
||||||
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import ChevronRightIcon from '@/material-icons/400-24px/chevron_right.svg?react';
|
import ChevronRightIcon from '@/material-icons/400-24px/chevron_right.svg?react';
|
||||||
import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react';
|
import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react';
|
||||||
import { fetchList } from 'mastodon/actions/lists';
|
import { fetchList } from 'mastodon/actions/lists';
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
|||||||
|
|
||||||
import { defineMessages, FormattedMessage } from 'react-intl';
|
import { defineMessages, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { useRef, useCallback, useEffect } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import { useSelector, useDispatch } from 'react-redux';
|
import { useSelector, useDispatch } from 'react-redux';
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { useRef, useCallback, useEffect, useState } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import { useSelector, useDispatch } from 'react-redux';
|
import { useSelector, useDispatch } from 'react-redux';
|
||||||
|
|
||||||
|
|||||||
@ -2,8 +2,7 @@ import { useCallback, useEffect, useMemo, useRef } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import { isEqual } from 'lodash';
|
import { isEqual } from 'lodash';
|
||||||
import { useDebouncedCallback } from 'use-debounce';
|
import { useDebouncedCallback } from 'use-debounce';
|
||||||
|
|
||||||
|
|||||||
@ -2,9 +2,9 @@ import { useEffect, useState, useCallback, useRef } from 'react';
|
|||||||
|
|
||||||
import { FormattedMessage, useIntl, defineMessages } from 'react-intl';
|
import { FormattedMessage, useIntl, defineMessages } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
import { useDebouncedCallback } from 'use-debounce';
|
import { useDebouncedCallback } from 'use-debounce';
|
||||||
|
|
||||||
import PersonIcon from '@/material-icons/400-24px/person.svg?react';
|
import PersonIcon from '@/material-icons/400-24px/person.svg?react';
|
||||||
|
|||||||
@ -3,9 +3,10 @@ import { useState, useMemo, useCallback, createRef } from 'react';
|
|||||||
import { useIntl, defineMessages, FormattedMessage } from 'react-intl';
|
import { useIntl, defineMessages, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
import { useHistory } from 'react-router-dom';
|
import { useHistory } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import AddPhotoAlternateIcon from '@/material-icons/400-24px/add_photo_alternate.svg?react';
|
import AddPhotoAlternateIcon from '@/material-icons/400-24px/add_photo_alternate.svg?react';
|
||||||
import EditIcon from '@/material-icons/400-24px/edit.svg?react';
|
import EditIcon from '@/material-icons/400-24px/edit.svg?react';
|
||||||
import PersonIcon from '@/material-icons/400-24px/person.svg?react';
|
import PersonIcon from '@/material-icons/400-24px/person.svg?react';
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
|||||||
|
|
||||||
import { defineMessages } from 'react-intl';
|
import { defineMessages } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { useState, useEffect } from 'react';
|
|||||||
|
|
||||||
import { FormattedMessage, useIntl, defineMessages } from 'react-intl';
|
import { FormattedMessage, useIntl, defineMessages } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import { apiGetPrivacyPolicy } from 'mastodon/api/instance';
|
import { apiGetPrivacyPolicy } from 'mastodon/api/instance';
|
||||||
import type { ApiPrivacyPolicyJSON } from 'mastodon/api_types/instance';
|
import type { ApiPrivacyPolicyJSON } from 'mastodon/api_types/instance';
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { PureComponent } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, FormattedMessage } from 'react-intl';
|
import { defineMessages, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import { useCallback, useEffect } from 'react';
|
|||||||
|
|
||||||
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
|
|
||||||
import { List as ImmutableList } from 'immutable';
|
import { List as ImmutableList } from 'immutable';
|
||||||
|
|
||||||
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import RefreshIcon from '@/material-icons/400-24px/refresh.svg?react';
|
import RefreshIcon from '@/material-icons/400-24px/refresh.svg?react';
|
||||||
import { fetchQuotes } from 'mastodon/actions/interactions_typed';
|
import { fetchQuotes } from 'mastodon/actions/interactions_typed';
|
||||||
import { ColumnHeader } from 'mastodon/components/column_header';
|
import { ColumnHeader } from 'mastodon/components/column_header';
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
|||||||
|
|
||||||
import { defineMessages, FormattedMessage } from 'react-intl';
|
import { defineMessages, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { useCallback, useEffect, useRef } from 'react';
|
|||||||
|
|
||||||
import { useIntl, defineMessages, FormattedMessage } from 'react-intl';
|
import { useIntl, defineMessages, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import FindInPageIcon from '@/material-icons/400-24px/find_in_page.svg?react';
|
import FindInPageIcon from '@/material-icons/400-24px/find_in_page.svg?react';
|
||||||
import PeopleIcon from '@/material-icons/400-24px/group.svg?react';
|
import PeopleIcon from '@/material-icons/400-24px/group.svg?react';
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
|
|||||||
import { defineMessages } from 'react-intl';
|
import { defineMessages } from 'react-intl';
|
||||||
|
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
import { withRouter } from 'react-router-dom';
|
import { withRouter } from 'react-router-dom';
|
||||||
import { difference } from 'lodash';
|
import { difference } from 'lodash';
|
||||||
|
|
||||||
|
|||||||
@ -7,9 +7,10 @@ import {
|
|||||||
defineMessages,
|
defineMessages,
|
||||||
} from 'react-intl';
|
} from 'react-intl';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
import { Link, useParams } from 'react-router-dom';
|
import { Link, useParams } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import { apiGetTermsOfService } from 'mastodon/api/instance';
|
import { apiGetTermsOfService } from 'mastodon/api/instance';
|
||||||
import type { ApiTermsOfServiceJSON } from 'mastodon/api_types/instance';
|
import type { ApiTermsOfServiceJSON } from 'mastodon/api_types/instance';
|
||||||
import { Column } from 'mastodon/components/column';
|
import { Column } from 'mastodon/components/column';
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import { PureComponent } from 'react';
|
|||||||
import { FormattedMessage } from 'react-intl';
|
import { FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
import { Button } from 'mastodon/components/button';
|
import { Button } from 'mastodon/components/button';
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { PureComponent } from 'react';
|
import { PureComponent } from 'react';
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from '@unhead/react/helmet';
|
||||||
|
|
||||||
import Base from 'mastodon/components/modal_root';
|
import Base from 'mastodon/components/modal_root';
|
||||||
import { AltTextModal } from 'mastodon/features/alt_text_modal';
|
import { AltTextModal } from 'mastodon/features/alt_text_modal';
|
||||||
|
|||||||
@ -25,7 +25,7 @@ class IntersectionObserverWrapper {
|
|||||||
this.observerBacklog.forEach(([ id, node, callback ]) => {
|
this.observerBacklog.forEach(([ id, node, callback ]) => {
|
||||||
this.observe(id, node, callback);
|
this.observe(id, node, callback);
|
||||||
});
|
});
|
||||||
this.observerBacklog = null;
|
this.observerBacklog = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
observe (id, node, callback) {
|
observe (id, node, callback) {
|
||||||
|
|||||||
@ -136,10 +136,10 @@
|
|||||||
"account.share": "Κοινοποίηση του προφίλ @{name}",
|
"account.share": "Κοινοποίηση του προφίλ @{name}",
|
||||||
"account.show_reblogs": "Εμφάνιση ενισχύσεων από @{name}",
|
"account.show_reblogs": "Εμφάνιση ενισχύσεων από @{name}",
|
||||||
"account.statuses_counter": "{count, plural, one {{counter} ανάρτηση} other {{counter} αναρτήσεις}}",
|
"account.statuses_counter": "{count, plural, one {{counter} ανάρτηση} other {{counter} αναρτήσεις}}",
|
||||||
"account.timeline.pinned": "Καρφιτσωμένα",
|
"account.timeline.pinned": "Καρφιτσωμένη",
|
||||||
"account.timeline.pinned.view_all": "Προβολή όλων των καρφιτσωμένων αναρτήσεων",
|
"account.timeline.pinned.view_all": "Προβολή όλων των καρφιτσωμένων αναρτήσεων",
|
||||||
"account.unblock": "Άρση αποκλεισμού @{name}",
|
"account.unblock": "Άρση αποκλεισμού @{name}",
|
||||||
"account.unblock_domain": "Άρση αποκλεισμού του τομέα {domain}",
|
"account.unblock_domain": "Άρση αποκλεισμού τομέα {domain}",
|
||||||
"account.unblock_domain_short": "Άρση αποκλ.",
|
"account.unblock_domain_short": "Άρση αποκλ.",
|
||||||
"account.unblock_short": "Άρση αποκλεισμού",
|
"account.unblock_short": "Άρση αποκλεισμού",
|
||||||
"account.unendorse": "Να μην αναδεικνύεται στο προφίλ",
|
"account.unendorse": "Να μην αναδεικνύεται στο προφίλ",
|
||||||
@ -162,7 +162,7 @@
|
|||||||
"account_edit.custom_fields.edit_label": "Επεξεργασία πεδίου",
|
"account_edit.custom_fields.edit_label": "Επεξεργασία πεδίου",
|
||||||
"account_edit.custom_fields.placeholder": "Προσθέστε τις αντωνυμίες σας, εξωτερικούς συνδέσμους ή οτιδήποτε άλλο θέλετε να μοιραστείτε.",
|
"account_edit.custom_fields.placeholder": "Προσθέστε τις αντωνυμίες σας, εξωτερικούς συνδέσμους ή οτιδήποτε άλλο θέλετε να μοιραστείτε.",
|
||||||
"account_edit.custom_fields.reorder_button": "Αναδιάταξη πεδίων",
|
"account_edit.custom_fields.reorder_button": "Αναδιάταξη πεδίων",
|
||||||
"account_edit.custom_fields.tip_content": "Μπορείς εύκολα να προσθέσεις αξιοπιστία στον Mastodon λογαριασμό σου επαληθεύοντας συνδέσμους σε οποιεσδήποτε ιστοσελίδες κατέχεις.",
|
"account_edit.custom_fields.tip_content": "Μπορείς εύκολα να προσθέσεις αξιοπιστία στον Mastodon λογαριασμό σου επαληθεύοντας συνδέσμους προς οποιεσδήποτε ιστοσελίδες κατέχεις.",
|
||||||
"account_edit.custom_fields.tip_title": "Συμβουλή: Προσθήκη επαληθευμένων συνδέσμων",
|
"account_edit.custom_fields.tip_title": "Συμβουλή: Προσθήκη επαληθευμένων συνδέσμων",
|
||||||
"account_edit.custom_fields.title": "Προσαρμοσμένα πεδία",
|
"account_edit.custom_fields.title": "Προσαρμοσμένα πεδία",
|
||||||
"account_edit.custom_fields.verified_hint": "Πώς προσθέτω έναν επαληθευμένο σύνδεσμο;",
|
"account_edit.custom_fields.verified_hint": "Πώς προσθέτω έναν επαληθευμένο σύνδεσμο;",
|
||||||
@ -241,7 +241,7 @@
|
|||||||
"account_edit.upload_modal.title_add.header": "Προσθήκη εικόνας εξωφύλλου",
|
"account_edit.upload_modal.title_add.header": "Προσθήκη εικόνας εξωφύλλου",
|
||||||
"account_edit.upload_modal.title_replace.avatar": "Αντικατάσταση εικόνας προφίλ",
|
"account_edit.upload_modal.title_replace.avatar": "Αντικατάσταση εικόνας προφίλ",
|
||||||
"account_edit.upload_modal.title_replace.header": "Αντικατάσταση εικόνας εξωφύλλου",
|
"account_edit.upload_modal.title_replace.header": "Αντικατάσταση εικόνας εξωφύλλου",
|
||||||
"account_edit.verified_modal.details": "Πρόσθεσε αξιοπιστία στο Mastodon προφίλ σας επαληθεύοντας συνδέσμους σε προσωπικές ιστοσελίδες. Ορίστε πως δουλεύει:",
|
"account_edit.verified_modal.details": "Πρόσθεσε αξιοπιστία στο Mastodon προφίλ σου επαληθεύοντας συνδέσμους προς προσωπικές ιστοσελίδες. Ορίστε πως δουλεύει:",
|
||||||
"account_edit.verified_modal.invisible_link.details": "Πρόσθεσε τον σύνδεσμο στην κεφαλίδα σου. Το σημαντικό μέρος είναι το rel=\"me\" που αποτρέπει την μίμηση σε ιστοσελίδες με περιεχόμενο παραγόμενο από χρήστες. Μπορείς ακόμα να χρησιμοποιήσεις μια ετικέτα link στην κεφαλίδα της σελίδας αντί για {tag}, αλλά η HTML πρέπει να είναι προσβάσιμη χωρίς την εκτέλεση JavaScript.",
|
"account_edit.verified_modal.invisible_link.details": "Πρόσθεσε τον σύνδεσμο στην κεφαλίδα σου. Το σημαντικό μέρος είναι το rel=\"me\" που αποτρέπει την μίμηση σε ιστοσελίδες με περιεχόμενο παραγόμενο από χρήστες. Μπορείς ακόμα να χρησιμοποιήσεις μια ετικέτα link στην κεφαλίδα της σελίδας αντί για {tag}, αλλά η HTML πρέπει να είναι προσβάσιμη χωρίς την εκτέλεση JavaScript.",
|
||||||
"account_edit.verified_modal.invisible_link.summary": "Πώς κάνω αυτόν τον σύνδεσμο αόρατο;",
|
"account_edit.verified_modal.invisible_link.summary": "Πώς κάνω αυτόν τον σύνδεσμο αόρατο;",
|
||||||
"account_edit.verified_modal.step1.header": "Αντίγραψε τον παρακάτω κώδικα HTML και επικόλλησε τον στην κεφαλίδα της ιστοσελίδας σου",
|
"account_edit.verified_modal.step1.header": "Αντίγραψε τον παρακάτω κώδικα HTML και επικόλλησε τον στην κεφαλίδα της ιστοσελίδας σου",
|
||||||
@ -250,7 +250,7 @@
|
|||||||
"account_edit.verified_modal.title": "Πώς να προσθέσεις έναν επαληθευμένο σύνδεσμο",
|
"account_edit.verified_modal.title": "Πώς να προσθέσεις έναν επαληθευμένο σύνδεσμο",
|
||||||
"account_edit_tags.add_tag": "Προσθήκη #{tagName}",
|
"account_edit_tags.add_tag": "Προσθήκη #{tagName}",
|
||||||
"account_edit_tags.column_title": "Επεξεργασία Ετικετών",
|
"account_edit_tags.column_title": "Επεξεργασία Ετικετών",
|
||||||
"account_edit_tags.help_text": "Οι αναδεδειγμένες ετικέτες βοηθούν τους χρήστες να ανακαλύψουν και να αλληλεπιδράσουν με το προφίλ σας. Εμφανίζονται ως φίλτρα στην προβολή Δραστηριότητας της σελίδας προφίλ σας.",
|
"account_edit_tags.help_text": "Οι αναδεδειγμένες ετικέτες βοηθούν τους χρήστες να ανακαλύψουν και να αλληλεπιδράσουν με το προφίλ σας. Εμφανίζονται ως φίλτρα στην καρτέλα Δραστηριότητα της σελίδας προφίλ σας.",
|
||||||
"account_edit_tags.max_tags_reached": "Έχετε φτάσει τον μέγιστο αριθμό των προτεινόμενων ετικετών.",
|
"account_edit_tags.max_tags_reached": "Έχετε φτάσει τον μέγιστο αριθμό των προτεινόμενων ετικετών.",
|
||||||
"account_edit_tags.search_placeholder": "Εισάγετε μια ετικέτα…",
|
"account_edit_tags.search_placeholder": "Εισάγετε μια ετικέτα…",
|
||||||
"account_edit_tags.suggestions": "Προτάσεις:",
|
"account_edit_tags.suggestions": "Προτάσεις:",
|
||||||
@ -866,7 +866,7 @@
|
|||||||
"lists.done": "Έγινε",
|
"lists.done": "Έγινε",
|
||||||
"lists.edit": "Επεξεργασία λίστας",
|
"lists.edit": "Επεξεργασία λίστας",
|
||||||
"lists.exclusive": "Απόκρυψη μελών από την Αρχική",
|
"lists.exclusive": "Απόκρυψη μελών από την Αρχική",
|
||||||
"lists.exclusive_hint": "Αν κάποιος είναι σε αυτή τη λίστα, απόκρυψέ τον από την Αρχική σου για να αποφύγεις να βλέπεις τις αναρτήσεις του δύο φορές.",
|
"lists.exclusive_hint": "Αν κάποιος είναι σε αυτή τη λίστα, απόκρυψέ τον από την Αρχική ροή σου για να αποφύγεις να βλέπεις τις αναρτήσεις του δύο φορές.",
|
||||||
"lists.find_users_to_add": "Εύρεση χρηστών για προσθήκη",
|
"lists.find_users_to_add": "Εύρεση χρηστών για προσθήκη",
|
||||||
"lists.list_members_count": "{count, plural, one {# μέλος} other {# μέλη}}",
|
"lists.list_members_count": "{count, plural, one {# μέλος} other {# μέλη}}",
|
||||||
"lists.list_name": "Όνομα λίστας",
|
"lists.list_name": "Όνομα λίστας",
|
||||||
|
|||||||
@ -796,6 +796,7 @@
|
|||||||
"info_button.label": "Help",
|
"info_button.label": "Help",
|
||||||
"info_button.what_is_alt_text": "<h1>What is alt text?</h1> <p>Alt text provides image descriptions for people with vision impairments, low-bandwidth connections, or those seeking extra context.</p> <p>You can improve accessibility and understanding for everyone by writing clear, concise, and objective alt text.</p> <ul> <li>Capture important elements</li> <li>Summarize text in images</li> <li>Use regular sentence structure</li> <li>Avoid redundant information</li> <li>Focus on trends and key findings in complex visuals (like diagrams or maps)</li> </ul>",
|
"info_button.what_is_alt_text": "<h1>What is alt text?</h1> <p>Alt text provides image descriptions for people with vision impairments, low-bandwidth connections, or those seeking extra context.</p> <p>You can improve accessibility and understanding for everyone by writing clear, concise, and objective alt text.</p> <ul> <li>Capture important elements</li> <li>Summarize text in images</li> <li>Use regular sentence structure</li> <li>Avoid redundant information</li> <li>Focus on trends and key findings in complex visuals (like diagrams or maps)</li> </ul>",
|
||||||
"interaction_modal.action": "To interact with {name}'s post, you need to sign into your account on whatever Mastodon server you use.",
|
"interaction_modal.action": "To interact with {name}'s post, you need to sign into your account on whatever Mastodon server you use.",
|
||||||
|
"interaction_modal.action_follow": "To follow {name}, you need to sign into your account on whatever Mastodon server you use.",
|
||||||
"interaction_modal.go": "Go",
|
"interaction_modal.go": "Go",
|
||||||
"interaction_modal.no_account_yet": "Don't have an account yet?",
|
"interaction_modal.no_account_yet": "Don't have an account yet?",
|
||||||
"interaction_modal.on_another_server": "On a different server",
|
"interaction_modal.on_another_server": "On a different server",
|
||||||
|
|||||||
@ -1043,9 +1043,9 @@
|
|||||||
"notifications.policy.filter_not_followers_title": "Personnes qui ne vous suivent pas",
|
"notifications.policy.filter_not_followers_title": "Personnes qui ne vous suivent pas",
|
||||||
"notifications.policy.filter_not_following_hint": "Jusqu'à ce que vous les validiez manuellement",
|
"notifications.policy.filter_not_following_hint": "Jusqu'à ce que vous les validiez manuellement",
|
||||||
"notifications.policy.filter_not_following_title": "Personnes que vous ne suivez pas",
|
"notifications.policy.filter_not_following_title": "Personnes que vous ne suivez pas",
|
||||||
"notifications.policy.filter_private_mentions_hint": "Filtrées sauf si c'est en réponse à l'une de vos mentions ou si vous suivez l'expéditeur·ice",
|
"notifications.policy.filter_private_mentions_hint": "Filtrées sauf si c'est en réponse à l'une de vos mentions ou si vous suivez la personne",
|
||||||
"notifications.policy.filter_private_mentions_title": "Mentions privées non sollicitées",
|
"notifications.policy.filter_private_mentions_title": "Mentions privées non sollicitées",
|
||||||
"notifications.policy.title": "Gestion des notifications des …",
|
"notifications.policy.title": "Gestion des notifications des…",
|
||||||
"notifications_permission_banner.enable": "Activer les notifications de bureau",
|
"notifications_permission_banner.enable": "Activer les notifications de bureau",
|
||||||
"notifications_permission_banner.how_to_control": "Pour recevoir des notifications lorsque Mastodon n’est pas ouvert, activez les notifications de bureau. Vous pouvez contrôler précisément quels types d’interactions génèrent des notifications de bureau via le bouton {icon} ci-dessus une fois qu’elles sont activées.",
|
"notifications_permission_banner.how_to_control": "Pour recevoir des notifications lorsque Mastodon n’est pas ouvert, activez les notifications de bureau. Vous pouvez contrôler précisément quels types d’interactions génèrent des notifications de bureau via le bouton {icon} ci-dessus une fois qu’elles sont activées.",
|
||||||
"notifications_permission_banner.title": "Ne rien rater",
|
"notifications_permission_banner.title": "Ne rien rater",
|
||||||
|
|||||||
@ -1027,7 +1027,7 @@
|
|||||||
"notifications.group": "{count} notifications",
|
"notifications.group": "{count} notifications",
|
||||||
"notifications.mark_as_read": "Marquer toutes les notifications comme lues",
|
"notifications.mark_as_read": "Marquer toutes les notifications comme lues",
|
||||||
"notifications.permission_denied": "Impossible d’activer les notifications de bureau car l’autorisation a été refusée.",
|
"notifications.permission_denied": "Impossible d’activer les notifications de bureau car l’autorisation a été refusée.",
|
||||||
"notifications.permission_denied_alert": "Les notifications de bureau ne peuvent pas être activées, car l’autorisation du navigateur a été refusée avant",
|
"notifications.permission_denied_alert": "Les notifications de bureau ne peuvent pas être activées, car l’autorisation du navigateur a été refusée auparavant",
|
||||||
"notifications.permission_required": "Les notifications de bureau ne sont pas disponibles car l’autorisation requise n’a pas été accordée.",
|
"notifications.permission_required": "Les notifications de bureau ne sont pas disponibles car l’autorisation requise n’a pas été accordée.",
|
||||||
"notifications.policy.accept": "Accepter",
|
"notifications.policy.accept": "Accepter",
|
||||||
"notifications.policy.accept_hint": "Afficher dans les notifications",
|
"notifications.policy.accept_hint": "Afficher dans les notifications",
|
||||||
@ -1043,9 +1043,9 @@
|
|||||||
"notifications.policy.filter_not_followers_title": "Personnes qui ne vous suivent pas",
|
"notifications.policy.filter_not_followers_title": "Personnes qui ne vous suivent pas",
|
||||||
"notifications.policy.filter_not_following_hint": "Jusqu'à ce que vous les validiez manuellement",
|
"notifications.policy.filter_not_following_hint": "Jusqu'à ce que vous les validiez manuellement",
|
||||||
"notifications.policy.filter_not_following_title": "Personnes que vous ne suivez pas",
|
"notifications.policy.filter_not_following_title": "Personnes que vous ne suivez pas",
|
||||||
"notifications.policy.filter_private_mentions_hint": "Filtrées sauf si c'est en réponse à l'une de vos mentions ou si vous suivez l'expéditeur·ice",
|
"notifications.policy.filter_private_mentions_hint": "Filtrées sauf si c'est en réponse à l'une de vos mentions ou si vous suivez la personne",
|
||||||
"notifications.policy.filter_private_mentions_title": "Mentions privées non sollicitées",
|
"notifications.policy.filter_private_mentions_title": "Mentions privées non sollicitées",
|
||||||
"notifications.policy.title": "Gestion des notifications des …",
|
"notifications.policy.title": "Gestion des notifications des…",
|
||||||
"notifications_permission_banner.enable": "Activer les notifications de bureau",
|
"notifications_permission_banner.enable": "Activer les notifications de bureau",
|
||||||
"notifications_permission_banner.how_to_control": "Pour recevoir des notifications lorsque Mastodon n’est pas ouvert, activez les notifications du bureau. Vous pouvez contrôler précisément quels types d’interactions génèrent des notifications de bureau via le bouton {icon} ci-dessus une fois qu’elles sont activées.",
|
"notifications_permission_banner.how_to_control": "Pour recevoir des notifications lorsque Mastodon n’est pas ouvert, activez les notifications du bureau. Vous pouvez contrôler précisément quels types d’interactions génèrent des notifications de bureau via le bouton {icon} ci-dessus une fois qu’elles sont activées.",
|
||||||
"notifications_permission_banner.title": "Toujours au courant",
|
"notifications_permission_banner.title": "Toujours au courant",
|
||||||
|
|||||||
@ -328,11 +328,15 @@
|
|||||||
"annual_report.summary.share_on_mastodon": "Comhroinn ar Mastodon",
|
"annual_report.summary.share_on_mastodon": "Comhroinn ar Mastodon",
|
||||||
"attachments_list.unprocessed": "(neamhphróiseáilte)",
|
"attachments_list.unprocessed": "(neamhphróiseáilte)",
|
||||||
"audio.hide": "Cuir fuaim i bhfolach",
|
"audio.hide": "Cuir fuaim i bhfolach",
|
||||||
|
"block_modal.no_collections": "Ní féidir le ceachtar agaibh a chéile a chur le bailiúcháin. Bainfear sibh go huathoibríoch ó bhailiúcháin atá agaibh cheana féin, más infheidhme.",
|
||||||
"block_modal.remote_users_caveat": "Iarrfaimid ar an bhfreastalaí {domain} meas a bheith agat ar do chinneadh. Mar sin féin, ní ráthaítear comhlíonadh toisc go bhféadfadh roinnt freastalaithe bloic a láimhseáil ar bhealach difriúil. Seans go mbeidh postálacha poiblí fós le feiceáil ag úsáideoirí nach bhfuil logáilte isteach.",
|
"block_modal.remote_users_caveat": "Iarrfaimid ar an bhfreastalaí {domain} meas a bheith agat ar do chinneadh. Mar sin féin, ní ráthaítear comhlíonadh toisc go bhféadfadh roinnt freastalaithe bloic a láimhseáil ar bhealach difriúil. Seans go mbeidh postálacha poiblí fós le feiceáil ag úsáideoirí nach bhfuil logáilte isteach.",
|
||||||
"block_modal.show_less": "Taispeáin níos lú",
|
"block_modal.show_less": "Taispeáin níos lú",
|
||||||
"block_modal.show_more": "Taispeáin níos mó",
|
"block_modal.show_more": "Taispeáin níos mó",
|
||||||
|
"block_modal.they_cant_mention": "Ní féidir libh a chéile a lua, a leanúint ná a chéile a lua.",
|
||||||
|
"block_modal.they_cant_see_posts": "Ní féidir leo d’ábhar a fheiceáil agus ní fheicfidh tú a gcuid ábhair.",
|
||||||
"block_modal.they_will_know": "Is féidir leo a fheiceáil go bhfuil bac orthu.",
|
"block_modal.they_will_know": "Is féidir leo a fheiceáil go bhfuil bac orthu.",
|
||||||
"block_modal.title": "Úsáideoir a bhlocáil?",
|
"block_modal.title": "Úsáideoir a bhlocáil?",
|
||||||
|
"block_modal.you_wont_see_mentions": "Ní fheicfidh tú poist ó dhaoine eile a luann iad.",
|
||||||
"boost_modal.combo": "Is féidir leat {combo} a bhrú chun é seo a scipeáil an chéad uair eile",
|
"boost_modal.combo": "Is féidir leat {combo} a bhrú chun é seo a scipeáil an chéad uair eile",
|
||||||
"boost_modal.reblog": "An post a threisiú?",
|
"boost_modal.reblog": "An post a threisiú?",
|
||||||
"boost_modal.undo_reblog": "An deireadh a chur le postáil?",
|
"boost_modal.undo_reblog": "An deireadh a chur le postáil?",
|
||||||
|
|||||||
@ -224,6 +224,7 @@
|
|||||||
"account_edit.profile_tab.show_media.title": "„Média” lap megjelenítése",
|
"account_edit.profile_tab.show_media.title": "„Média” lap megjelenítése",
|
||||||
"account_edit.profile_tab.show_media_replies.description": "Ha engedélyezve van, akkor a Média lap megjeleníti a bejegyzéseidet és a mások bejegyzéseihez írt válaszaidat.",
|
"account_edit.profile_tab.show_media_replies.description": "Ha engedélyezve van, akkor a Média lap megjeleníti a bejegyzéseidet és a mások bejegyzéseihez írt válaszaidat.",
|
||||||
"account_edit.profile_tab.show_media_replies.title": "Válaszok megjelenítése a „Média” lapon",
|
"account_edit.profile_tab.show_media_replies.title": "Válaszok megjelenítése a „Média” lapon",
|
||||||
|
"account_edit.profile_tab.show_relations.description": "A profilodban megjeleníti azokat a fiókokat, melyeket követsz, valamint a többi felhasználó követőit. Mások továbbra is látni fogják, hogy követed-e őket.",
|
||||||
"account_edit.profile_tab.show_relations.title": "„Követők” és „Követettek” megjelenítése",
|
"account_edit.profile_tab.show_relations.title": "„Követők” és „Követettek” megjelenítése",
|
||||||
"account_edit.profile_tab.subtitle": "A profil megjelenítésének testreszabása.",
|
"account_edit.profile_tab.subtitle": "A profil megjelenítésének testreszabása.",
|
||||||
"account_edit.profile_tab.title": "Profil megjelenítési beállításai",
|
"account_edit.profile_tab.title": "Profil megjelenítési beállításai",
|
||||||
@ -327,6 +328,7 @@
|
|||||||
"annual_report.summary.share_on_mastodon": "Megosztás a Mastodonon",
|
"annual_report.summary.share_on_mastodon": "Megosztás a Mastodonon",
|
||||||
"attachments_list.unprocessed": "(feldolgozatlan)",
|
"attachments_list.unprocessed": "(feldolgozatlan)",
|
||||||
"audio.hide": "Hang elrejtése",
|
"audio.hide": "Hang elrejtése",
|
||||||
|
"block_modal.no_collections": "Egyikőtök sem adhatja hozzá a másikat gyűjteményekhez. Automatikusan el is lesztek távolítva az egymás gyűjteményéből.",
|
||||||
"block_modal.remote_users_caveat": "Arra kérjük a {domain} kiszolgálót, hogy tartsa tiszteletben a döntésedet. Ugyanakkor az együttműködés nem garantált, mivel néhány kiszolgáló másképp kezelheti a letiltásokat. A nyilvános bejegyzések a be nem jelentkezett felhasználók számára továbbra is látszódhatnak.",
|
"block_modal.remote_users_caveat": "Arra kérjük a {domain} kiszolgálót, hogy tartsa tiszteletben a döntésedet. Ugyanakkor az együttműködés nem garantált, mivel néhány kiszolgáló másképp kezelheti a letiltásokat. A nyilvános bejegyzések a be nem jelentkezett felhasználók számára továbbra is látszódhatnak.",
|
||||||
"block_modal.show_less": "Kevesebb mutatása",
|
"block_modal.show_less": "Kevesebb mutatása",
|
||||||
"block_modal.show_more": "Több mutatása",
|
"block_modal.show_more": "Több mutatása",
|
||||||
|
|||||||
@ -36,6 +36,7 @@
|
|||||||
"account.familiar_followers_many": "Yeṭṭafaṛ-it {name1} d {name2}, akked {othersCount, plural, one {yiwen nniḍen i tessneḍ} other {# nniḍen i tessneḍ}}",
|
"account.familiar_followers_many": "Yeṭṭafaṛ-it {name1} d {name2}, akked {othersCount, plural, one {yiwen nniḍen i tessneḍ} other {# nniḍen i tessneḍ}}",
|
||||||
"account.familiar_followers_one": "Yeṭṭafar-it {name1}",
|
"account.familiar_followers_one": "Yeṭṭafar-it {name1}",
|
||||||
"account.familiar_followers_two": "Yeṭṭafar-it {name1} akked {name2}",
|
"account.familiar_followers_two": "Yeṭṭafar-it {name1} akked {name2}",
|
||||||
|
"account.featured": "Ufrinen",
|
||||||
"account.featured.accounts": "Imeɣna",
|
"account.featured.accounts": "Imeɣna",
|
||||||
"account.featured.collections": "Tilkensa",
|
"account.featured.collections": "Tilkensa",
|
||||||
"account.featured.new_collection": "Talkensit tamaynut",
|
"account.featured.new_collection": "Talkensit tamaynut",
|
||||||
@ -68,6 +69,8 @@
|
|||||||
"account.join_modal.me_today": "Ass-a, d ass-ik⋅im amezwaru deg {server}!",
|
"account.join_modal.me_today": "Ass-a, d ass-ik⋅im amezwaru deg {server}!",
|
||||||
"account.join_modal.other": "{name} yerna-d ɣer {server} ass n",
|
"account.join_modal.other": "{name} yerna-d ɣer {server} ass n",
|
||||||
"account.join_modal.other_today": "D ass amezwaru n {name} ɣef {server}!",
|
"account.join_modal.other_today": "D ass amezwaru n {name} ɣef {server}!",
|
||||||
|
"account.join_modal.share.intro": "Bḍu izen anida deg-s ad temmeslayeḍ fell-ak⋅am",
|
||||||
|
"account.join_modal.years": "{number, plural, one {n useggas} other {n iseggasen}}",
|
||||||
"account.joined_short": "Izeddi da seg ass n",
|
"account.joined_short": "Izeddi da seg ass n",
|
||||||
"account.languages": "Beddel tutlayin yettwajerden",
|
"account.languages": "Beddel tutlayin yettwajerden",
|
||||||
"account.last_active": "Armud aneggaru",
|
"account.last_active": "Armud aneggaru",
|
||||||
@ -87,6 +90,7 @@
|
|||||||
"account.menu.remove_follower": "Kkes aneḍfar",
|
"account.menu.remove_follower": "Kkes aneḍfar",
|
||||||
"account.menu.report": "Cetki ɣef umiḍan-a",
|
"account.menu.report": "Cetki ɣef umiḍan-a",
|
||||||
"account.menu.share": "Zuzer…",
|
"account.menu.share": "Zuzer…",
|
||||||
|
"account.menu.unblock": "Kkes asewḥel i umiḍan",
|
||||||
"account.moved_to": "{name} yenna-d dakken amiḍan-is amaynut yuɣal :",
|
"account.moved_to": "{name} yenna-d dakken amiḍan-is amaynut yuɣal :",
|
||||||
"account.mute": "Sgugem @{name}",
|
"account.mute": "Sgugem @{name}",
|
||||||
"account.mute_notifications_short": "Susem ilɣa",
|
"account.mute_notifications_short": "Susem ilɣa",
|
||||||
@ -141,6 +145,7 @@
|
|||||||
"account_edit.display_name.edit_label": "Ẓreg isem ara d-yettwaskanen",
|
"account_edit.display_name.edit_label": "Ẓreg isem ara d-yettwaskanen",
|
||||||
"account_edit.display_name.title": "Isem ara d-yettwaskanen",
|
"account_edit.display_name.title": "Isem ara d-yettwaskanen",
|
||||||
"account_edit.featured_hashtags.edit_label": "Rnu ihacṭagen",
|
"account_edit.featured_hashtags.edit_label": "Rnu ihacṭagen",
|
||||||
|
"account_edit.featured_hashtags.title": "Ihacṭagen ufrinen",
|
||||||
"account_edit.field_actions.delete": "Kkes urti",
|
"account_edit.field_actions.delete": "Kkes urti",
|
||||||
"account_edit.field_actions.edit": "Ẓreg urti",
|
"account_edit.field_actions.edit": "Ẓreg urti",
|
||||||
"account_edit.field_delete_modal.delete_button": "Kkes",
|
"account_edit.field_delete_modal.delete_button": "Kkes",
|
||||||
@ -167,6 +172,7 @@
|
|||||||
"account_edit.name_modal.add_title": "Rnu isem ara d-yettwaskanen",
|
"account_edit.name_modal.add_title": "Rnu isem ara d-yettwaskanen",
|
||||||
"account_edit.name_modal.edit_title": "Ẓreg isem ara d-yettwaskanen",
|
"account_edit.name_modal.edit_title": "Ẓreg isem ara d-yettwaskanen",
|
||||||
"account_edit.profile_tab.button_label": "Sagen",
|
"account_edit.profile_tab.button_label": "Sagen",
|
||||||
|
"account_edit.profile_tab.show_featured.title": "Sken-d accer n \"Ufrinen\"",
|
||||||
"account_edit.save": "Sekles",
|
"account_edit.save": "Sekles",
|
||||||
"account_edit.upload_modal.back": "Uɣal",
|
"account_edit.upload_modal.back": "Uɣal",
|
||||||
"account_edit.upload_modal.done": "Dayen",
|
"account_edit.upload_modal.done": "Dayen",
|
||||||
@ -179,12 +185,16 @@
|
|||||||
"account_edit.upload_modal.title_add.header": "Rnu tawlaft n tduli",
|
"account_edit.upload_modal.title_add.header": "Rnu tawlaft n tduli",
|
||||||
"account_edit.upload_modal.title_replace.avatar": "Semselsi tawlaft n umaɣnu",
|
"account_edit.upload_modal.title_replace.avatar": "Semselsi tawlaft n umaɣnu",
|
||||||
"account_edit.upload_modal.title_replace.header": "Semselsi tawlaft n tduli",
|
"account_edit.upload_modal.title_replace.header": "Semselsi tawlaft n tduli",
|
||||||
|
"account_edit.verified_modal.invisible_link.summary": "Amek ara rreɣ aseɣwen-nni ur yettban ara?",
|
||||||
|
"account_edit.verified_modal.title": "Amek ara ternuḍ aseɣwen yettuselknen",
|
||||||
"account_edit_tags.add_tag": "Rnu #{tagName}",
|
"account_edit_tags.add_tag": "Rnu #{tagName}",
|
||||||
"account_edit_tags.column_title": "Asiẓreg n yihacṭagen",
|
"account_edit_tags.column_title": "Asiẓreg n yihacṭagen",
|
||||||
"account_edit_tags.search_placeholder": "Sekcem-d ahacṭag…",
|
"account_edit_tags.search_placeholder": "Sekcem-d ahacṭag…",
|
||||||
"account_edit_tags.suggestions": "Isumren:",
|
"account_edit_tags.suggestions": "Isumren:",
|
||||||
"account_edit_tags.tag_status_count": "{count, plural, one {# n yizen} other {# n yiznan}}",
|
"account_edit_tags.tag_status_count": "{count, plural, one {# n yizen} other {# n yiznan}}",
|
||||||
|
"account_list.total": "{total, plural, one {# n umiḍan} other {# n imiḍanen}}",
|
||||||
"account_note.placeholder": "Ulac iwenniten",
|
"account_note.placeholder": "Ulac iwenniten",
|
||||||
|
"admin.dashboard.retention.cohort": "Ajerred deg ayyur",
|
||||||
"admin.dashboard.retention.cohort_size": "Iseqdacen imaynuten",
|
"admin.dashboard.retention.cohort_size": "Iseqdacen imaynuten",
|
||||||
"alert.rate_limited.message": "Ma ulac aɣilif ɛreḍ tikelt-nniḍen akka {retry_time, time, medium}.",
|
"alert.rate_limited.message": "Ma ulac aɣilif ɛreḍ tikelt-nniḍen akka {retry_time, time, medium}.",
|
||||||
"alert.rate_limited.title": "Aktum s talast",
|
"alert.rate_limited.title": "Aktum s talast",
|
||||||
@ -223,6 +233,7 @@
|
|||||||
"block_modal.title": "Sewḥel aseqdac ?",
|
"block_modal.title": "Sewḥel aseqdac ?",
|
||||||
"boost_modal.combo": "Tzemreḍ ad tsiteḍ ɣef {combo} akken ad tzegleḍ aya tikelt i d-iteddun",
|
"boost_modal.combo": "Tzemreḍ ad tsiteḍ ɣef {combo} akken ad tzegleḍ aya tikelt i d-iteddun",
|
||||||
"boost_modal.reblog": "Zuzer tasuffeɣt?",
|
"boost_modal.reblog": "Zuzer tasuffeɣt?",
|
||||||
|
"boost_modal.undo_reblog": "Semmet azuzer n yizen-a?",
|
||||||
"bundle_column_error.copy_stacktrace": "Nɣel tuccḍa n uneqqis",
|
"bundle_column_error.copy_stacktrace": "Nɣel tuccḍa n uneqqis",
|
||||||
"bundle_column_error.error.title": "Uh, ala !",
|
"bundle_column_error.error.title": "Uh, ala !",
|
||||||
"bundle_column_error.network.body": "Teḍra-d tuccḍa deg usali n usebter-a. Aya yezmer ad yili d ugur akudan deg tuqqna-inek·inem ɣer internet neɣ deg uqeddac-a.",
|
"bundle_column_error.network.body": "Teḍra-d tuccḍa deg usali n usebter-a. Aya yezmer ad yili d ugur akudan deg tuqqna-inek·inem ɣer internet neɣ deg uqeddac-a.",
|
||||||
@ -234,6 +245,7 @@
|
|||||||
"bundle_modal_error.close": "Mdel",
|
"bundle_modal_error.close": "Mdel",
|
||||||
"bundle_modal_error.retry": "Ɛreḍ tikelt-nniḍen",
|
"bundle_modal_error.retry": "Ɛreḍ tikelt-nniḍen",
|
||||||
"callout.dismiss": "Zgel-it",
|
"callout.dismiss": "Zgel-it",
|
||||||
|
"character_counter.required": "{currentLength}/{maxLength} n yisekkilen",
|
||||||
"closed_registrations_modal.description": "Asnulfu n umiḍan deg {domain} mačči d ayen izemren ad yili, maca ttxil-k·m, err deg lbal-ik·im belli ur teḥwaǧeḍ ara amiḍan s wudem ibanen ɣef {domain} akken ad tesqedceḍ Mastodon.",
|
"closed_registrations_modal.description": "Asnulfu n umiḍan deg {domain} mačči d ayen izemren ad yili, maca ttxil-k·m, err deg lbal-ik·im belli ur teḥwaǧeḍ ara amiḍan s wudem ibanen ɣef {domain} akken ad tesqedceḍ Mastodon.",
|
||||||
"closed_registrations_modal.find_another_server": "Aff-d aqeddac nniḍen",
|
"closed_registrations_modal.find_another_server": "Aff-d aqeddac nniḍen",
|
||||||
"closed_registrations_modal.title": "Ajerred deg Masṭudun",
|
"closed_registrations_modal.title": "Ajerred deg Masṭudun",
|
||||||
@ -243,6 +255,8 @@
|
|||||||
"collection.share_modal.title": "Bḍu talkensit",
|
"collection.share_modal.title": "Bḍu talkensit",
|
||||||
"collection.share_modal.title_new": "Zuzer talkensit-ik·im tamaynut!",
|
"collection.share_modal.title_new": "Zuzer talkensit-ik·im tamaynut!",
|
||||||
"collections.account_count": "{count, plural, one {# n umiḍan} other {# n imiḍanen}}",
|
"collections.account_count": "{count, plural, one {# n umiḍan} other {# n imiḍanen}}",
|
||||||
|
"collections.accounts.empty_description": "Rnu alamma d {count} n imiḍanen",
|
||||||
|
"collections.accounts.empty_editor_title": "Ulac ula yiwen ɛad deg telkensit-a",
|
||||||
"collections.accounts.empty_title": "Talkensit-a d tilemt",
|
"collections.accounts.empty_title": "Talkensit-a d tilemt",
|
||||||
"collections.block_collection_owner": "Sewḥel amiḍan",
|
"collections.block_collection_owner": "Sewḥel amiḍan",
|
||||||
"collections.by_account": "sɣur {account_handle}",
|
"collections.by_account": "sɣur {account_handle}",
|
||||||
@ -262,12 +276,14 @@
|
|||||||
"collections.detail.revoke_inclusion": "Kkes-iyi",
|
"collections.detail.revoke_inclusion": "Kkes-iyi",
|
||||||
"collections.detail.sensitive_content": "Agbur amḥulfu",
|
"collections.detail.sensitive_content": "Agbur amḥulfu",
|
||||||
"collections.detail.share": "Zuzer talkensit-a",
|
"collections.detail.share": "Zuzer talkensit-a",
|
||||||
|
"collections.detail.you_are_in_this_collection": "Aql-ik⋅em ɣer sdat deg telsenkit-a",
|
||||||
"collections.edit_details": "Ẓreg talqayt",
|
"collections.edit_details": "Ẓreg talqayt",
|
||||||
"collections.hidden_accounts_link": "{count, plural, one {# n umiḍan uffir} other {# n imiḍanen yettwaffaren}}",
|
"collections.hidden_accounts_link": "{count, plural, one {# n umiḍan uffir} other {# n imiḍanen yettwaffaren}}",
|
||||||
"collections.hints.accounts_counter": "{count}/{max} n imiḍanen",
|
"collections.hints.accounts_counter": "{count}/{max} n imiḍanen",
|
||||||
"collections.last_updated_at": "Taẓrigt taneggarut: {date}",
|
"collections.last_updated_at": "Taẓrigt taneggarut: {date}",
|
||||||
"collections.list.created_by_author": "D-yesnulfa {name}",
|
"collections.list.created_by_author": "D-yesnulfa {name}",
|
||||||
"collections.list.created_by_you": "D-tesnulfaḍ",
|
"collections.list.created_by_you": "D-tesnulfaḍ",
|
||||||
|
"collections.list.featuring_you": "Yid-k⋅m",
|
||||||
"collections.manage_accounts": "Sefrek imiḍanen",
|
"collections.manage_accounts": "Sefrek imiḍanen",
|
||||||
"collections.name_length_hint": "talast n 40 n yisekkilen",
|
"collections.name_length_hint": "talast n 40 n yisekkilen",
|
||||||
"collections.new_collection": "Talkensit tamaynut",
|
"collections.new_collection": "Talkensit tamaynut",
|
||||||
@ -276,6 +292,7 @@
|
|||||||
"collections.revoke_collection_inclusion": "Kkes-iyi seg telkensit-a",
|
"collections.revoke_collection_inclusion": "Kkes-iyi seg telkensit-a",
|
||||||
"collections.search_accounts_label": "Nadi ɣef umiḍan ara ternuḍ",
|
"collections.search_accounts_label": "Nadi ɣef umiḍan ara ternuḍ",
|
||||||
"collections.share_short": "Bḍu",
|
"collections.share_short": "Bḍu",
|
||||||
|
"collections.suggestions.can_not_add": "Ur tezmireḍ ara ad t-ternuḍt",
|
||||||
"collections.view_collection": "Wali talkensit",
|
"collections.view_collection": "Wali talkensit",
|
||||||
"collections.visibility_public": "Azayaz",
|
"collections.visibility_public": "Azayaz",
|
||||||
"collections.visibility_title": "Abani",
|
"collections.visibility_title": "Abani",
|
||||||
@ -290,6 +307,7 @@
|
|||||||
"column.edit_list": "Ẓreg tabdart",
|
"column.edit_list": "Ẓreg tabdart",
|
||||||
"column.favourites": "Imenyafen",
|
"column.favourites": "Imenyafen",
|
||||||
"column.firehose": "Isuddam usriden",
|
"column.firehose": "Isuddam usriden",
|
||||||
|
"column.firehose_singular": "Asuddem usrid",
|
||||||
"column.follow_requests": "Isuturen n teḍfeṛt",
|
"column.follow_requests": "Isuturen n teḍfeṛt",
|
||||||
"column.home": "Agejdan",
|
"column.home": "Agejdan",
|
||||||
"column.list_members": "Sefrek iεeggalen n tebdart",
|
"column.list_members": "Sefrek iεeggalen n tebdart",
|
||||||
@ -299,6 +317,7 @@
|
|||||||
"column.other_collections": "Tilkensa sɣur {name}",
|
"column.other_collections": "Tilkensa sɣur {name}",
|
||||||
"column.pins": "Tisuffaɣ yettwasenṭḍen",
|
"column.pins": "Tisuffaɣ yettwasenṭḍen",
|
||||||
"column.public": "Tasuddemt tamatut",
|
"column.public": "Tasuddemt tamatut",
|
||||||
|
"column.your_collections": "Tilkensa-k·m",
|
||||||
"column_back_button.label": "Tuɣalin",
|
"column_back_button.label": "Tuɣalin",
|
||||||
"column_header.hide_settings": "Ffer iɣewwaṛen",
|
"column_header.hide_settings": "Ffer iɣewwaṛen",
|
||||||
"column_header.moveLeft_settings": "Err ajgu ɣer tama tazelmaḍt",
|
"column_header.moveLeft_settings": "Err ajgu ɣer tama tazelmaḍt",
|
||||||
@ -355,6 +374,7 @@
|
|||||||
"confirmations.follow_to_list.confirm": "Ḍfeṛ-it sakin rnu-t ɣer tebdart",
|
"confirmations.follow_to_list.confirm": "Ḍfeṛ-it sakin rnu-t ɣer tebdart",
|
||||||
"confirmations.follow_to_list.title": "Ḍfer aseqdac?",
|
"confirmations.follow_to_list.title": "Ḍfer aseqdac?",
|
||||||
"confirmations.hide_featured_tab.confirm": "Ffer accer",
|
"confirmations.hide_featured_tab.confirm": "Ffer accer",
|
||||||
|
"confirmations.hide_featured_tab.title": "Ffer accer n \"Ufrinen\"?",
|
||||||
"confirmations.logout.confirm": "Ffeɣ",
|
"confirmations.logout.confirm": "Ffeɣ",
|
||||||
"confirmations.logout.message": "D tidet tebɣiḍ ad teffɣeḍ?",
|
"confirmations.logout.message": "D tidet tebɣiḍ ad teffɣeḍ?",
|
||||||
"confirmations.logout.title": "Tebɣiḍ ad teffɣeḍ ssya?",
|
"confirmations.logout.title": "Tebɣiḍ ad teffɣeḍ ssya?",
|
||||||
@ -432,11 +452,13 @@
|
|||||||
"emoji_button.symbols": "Izamulen",
|
"emoji_button.symbols": "Izamulen",
|
||||||
"emoji_button.travel": "Imeḍqan d Yinigen",
|
"emoji_button.travel": "Imeḍqan d Yinigen",
|
||||||
"empty_column.account_featured_self.no_collections_button": "Snulfu-d talkensit",
|
"empty_column.account_featured_self.no_collections_button": "Snulfu-d talkensit",
|
||||||
|
"empty_column.account_featured_self.no_collections_hide_tab": "Ɣumm accer-a",
|
||||||
"empty_column.account_suspended": "Amiḍan yettwaḥbas",
|
"empty_column.account_suspended": "Amiḍan yettwaḥbas",
|
||||||
"empty_column.account_timeline": "Ulac tisuffaɣ da !",
|
"empty_column.account_timeline": "Ulac tisuffaɣ da !",
|
||||||
"empty_column.account_unavailable": "Ur nufi ara amaɣnu-ayi",
|
"empty_column.account_unavailable": "Ur nufi ara amaɣnu-ayi",
|
||||||
"empty_column.blocks": "Ur tesḥebseḍ ula yiwen n umseqdac ar tura.",
|
"empty_column.blocks": "Ur tesḥebseḍ ula yiwen n umseqdac ar tura.",
|
||||||
"empty_column.bookmarked_statuses": "Ulac kra n tsuffeɣt i terniḍ ɣer yismenyifen-ik·im ar tura. Ticki terniḍ yiwet, ad d-tettwasken da.",
|
"empty_column.bookmarked_statuses": "Ulac kra n tsuffeɣt i terniḍ ɣer yismenyifen-ik·im ar tura. Ticki terniḍ yiwet, ad d-tettwasken da.",
|
||||||
|
"empty_column.collections.featured_in": "Ur-k yerni ḥedd ɛad ɣer kra n telkensit.",
|
||||||
"empty_column.community": "Tasuddemt tazayezt tadigant n yisallen d tilemt. Aru ihi kra akken ad tt-teččareḍ!",
|
"empty_column.community": "Tasuddemt tazayezt tadigant n yisallen d tilemt. Aru ihi kra akken ad tt-teččareḍ!",
|
||||||
"empty_column.domain_blocks": "Ulac kra n taɣult yettwaffren ar tura.",
|
"empty_column.domain_blocks": "Ulac kra n taɣult yettwaffren ar tura.",
|
||||||
"empty_column.explore_statuses": "Ulac ayen yellan d anezzuɣ akka tura. Uɣal-d ticki!",
|
"empty_column.explore_statuses": "Ulac ayen yellan d anezzuɣ akka tura. Uɣal-d ticki!",
|
||||||
@ -458,6 +480,7 @@
|
|||||||
"explore.trending_tags": "Ihacṭagen",
|
"explore.trending_tags": "Ihacṭagen",
|
||||||
"featured_carousel.current": "<sr>Izen wis</sr> {current, number} / {max, number}",
|
"featured_carousel.current": "<sr>Izen wis</sr> {current, number} / {max, number}",
|
||||||
"featured_carousel.header": "{count, plural, one {n tsuffeɣt tunṭiḍt} other {n tsuffaɣ tunṭiḍin}}",
|
"featured_carousel.header": "{count, plural, one {n tsuffeɣt tunṭiḍt} other {n tsuffaɣ tunṭiḍin}}",
|
||||||
|
"featured_carousel.slide": "Iznen {current, number} ɣef {max, number}",
|
||||||
"featured_tags.more_items": "+{count}",
|
"featured_tags.more_items": "+{count}",
|
||||||
"featured_tags.suggestions.add": "Rnu",
|
"featured_tags.suggestions.add": "Rnu",
|
||||||
"featured_tags.suggestions.dismiss": "Uhu, tanemmirt",
|
"featured_tags.suggestions.dismiss": "Uhu, tanemmirt",
|
||||||
|
|||||||
@ -43,6 +43,7 @@
|
|||||||
"account.featured": "Utvald",
|
"account.featured": "Utvald",
|
||||||
"account.featured.accounts": "Profilar",
|
"account.featured.accounts": "Profilar",
|
||||||
"account.featured.collections": "Samlingar",
|
"account.featured.collections": "Samlingar",
|
||||||
|
"account.featured.new_collection": "Ny samling",
|
||||||
"account.field_overflow": "Vis heile innhaldet",
|
"account.field_overflow": "Vis heile innhaldet",
|
||||||
"account.filters.all": "All aktivitet",
|
"account.filters.all": "All aktivitet",
|
||||||
"account.filters.boosts_toggle": "Vis framhevingar",
|
"account.filters.boosts_toggle": "Vis framhevingar",
|
||||||
@ -68,6 +69,16 @@
|
|||||||
"account.go_to_profile": "Gå til profil",
|
"account.go_to_profile": "Gå til profil",
|
||||||
"account.hide_reblogs": "Gøym framhevingar frå @{name}",
|
"account.hide_reblogs": "Gøym framhevingar frå @{name}",
|
||||||
"account.in_memoriam": "Til minne om.",
|
"account.in_memoriam": "Til minne om.",
|
||||||
|
"account.join_modal.day": "Dag",
|
||||||
|
"account.join_modal.me": "Du vart medlem av {server} den",
|
||||||
|
"account.join_modal.me_anniversary": "God allheimsbursdag! Du vart medlem av {server} den",
|
||||||
|
"account.join_modal.me_today": "Det er fyrste dagen din på {server}!",
|
||||||
|
"account.join_modal.other": "{name} vart medlem av {server} den",
|
||||||
|
"account.join_modal.other_today": "{name} har sin fyrste dag på {server}!",
|
||||||
|
"account.join_modal.share.celebrate": "Skriv eit jubileumsinnlegg",
|
||||||
|
"account.join_modal.share.intro": "Skriv eit introduksjonsinnlegg",
|
||||||
|
"account.join_modal.share.welcome": "Skriv eit velkomstinnlegg",
|
||||||
|
"account.join_modal.years": "{number, plural, one {år} other {år}}",
|
||||||
"account.joined_short": "Vart med",
|
"account.joined_short": "Vart med",
|
||||||
"account.languages": "Endre språktingingar",
|
"account.languages": "Endre språktingingar",
|
||||||
"account.last_active": "Sist aktiv",
|
"account.last_active": "Sist aktiv",
|
||||||
|
|||||||
@ -324,11 +324,15 @@
|
|||||||
"annual_report.summary.share_on_mastodon": "Ndajeni në Mastodon me të tjerë",
|
"annual_report.summary.share_on_mastodon": "Ndajeni në Mastodon me të tjerë",
|
||||||
"attachments_list.unprocessed": "(e papërpunuar)",
|
"attachments_list.unprocessed": "(e papërpunuar)",
|
||||||
"audio.hide": "Fshihe audion",
|
"audio.hide": "Fshihe audion",
|
||||||
|
"block_modal.no_collections": "Asnjë prej jush s’mund shtojë tjetrin te koleksione. Do të hiqeni automatikisht nga koleksionne ekzistuese të njëri-tjetrit, nëse ka vend.",
|
||||||
"block_modal.remote_users_caveat": "Do t’i kërkojmë shërbyesit {domain} të respektojë vendimin tuaj. Por, pajtimi s’është i garantuar, ngaqë disa shërbyes mund t’i trajtojnë ndryshe bllokimet. Psotimet publike mundet të jenë ende të dukshme për përdorues pa bërë hyrje në llogari.",
|
"block_modal.remote_users_caveat": "Do t’i kërkojmë shërbyesit {domain} të respektojë vendimin tuaj. Por, pajtimi s’është i garantuar, ngaqë disa shërbyes mund t’i trajtojnë ndryshe bllokimet. Psotimet publike mundet të jenë ende të dukshme për përdorues pa bërë hyrje në llogari.",
|
||||||
"block_modal.show_less": "Shfaq më pak",
|
"block_modal.show_less": "Shfaq më pak",
|
||||||
"block_modal.show_more": "Shfaq më tepër",
|
"block_modal.show_more": "Shfaq më tepër",
|
||||||
|
"block_modal.they_cant_mention": "S’mund të përmendni, ndiqni, ose citoni njëri-tjetrin.",
|
||||||
|
"block_modal.they_cant_see_posts": "S’mund të shohin lëndën tuaj dhe ju s’do të shihni të tyren.",
|
||||||
"block_modal.they_will_know": "Mund të shohin se janë bllokuar.",
|
"block_modal.they_will_know": "Mund të shohin se janë bllokuar.",
|
||||||
"block_modal.title": "Të bllokohet përdoruesi?",
|
"block_modal.title": "Të bllokohet përdoruesi?",
|
||||||
|
"block_modal.you_wont_see_mentions": "S’do të shihni postime nga të tjerë që i përmendin ata.",
|
||||||
"boost_modal.combo": "Që kjo të anashkalohet herës tjetër, mund të shtypni {combo}",
|
"boost_modal.combo": "Që kjo të anashkalohet herës tjetër, mund të shtypni {combo}",
|
||||||
"boost_modal.reblog": "Përforcim postimi?",
|
"boost_modal.reblog": "Përforcim postimi?",
|
||||||
"boost_modal.undo_reblog": "Të hiqet përforcim për postimin?",
|
"boost_modal.undo_reblog": "Të hiqet përforcim për postimin?",
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import { StrictMode } from 'react';
|
||||||
import { createRoot } from 'react-dom/client';
|
import { createRoot } from 'react-dom/client';
|
||||||
|
|
||||||
import { Globals } from '@react-spring/web';
|
import { Globals } from '@react-spring/web';
|
||||||
@ -33,7 +34,11 @@ function main() {
|
|||||||
await initializeEmoji();
|
await initializeEmoji();
|
||||||
|
|
||||||
const root = createRoot(mountNode);
|
const root = createRoot(mountNode);
|
||||||
root.render(<Mastodon {...props} />);
|
root.render(
|
||||||
|
<StrictMode>
|
||||||
|
<Mastodon {...props} />
|
||||||
|
</StrictMode>,
|
||||||
|
);
|
||||||
store.dispatch(setupBrowserNotifications());
|
store.dispatch(setupBrowserNotifications());
|
||||||
|
|
||||||
if (isProduction() && me && 'serviceWorker' in navigator) {
|
if (isProduction() && me && 'serviceWorker' in navigator) {
|
||||||
|
|||||||
@ -231,75 +231,6 @@
|
|||||||
border-color: var(--color-border-error-soft);
|
border-color: var(--color-border-error-soft);
|
||||||
}
|
}
|
||||||
|
|
||||||
.account__header__fields {
|
|
||||||
max-width: 100vw;
|
|
||||||
padding: 0;
|
|
||||||
margin: 15px -15px -15px;
|
|
||||||
border: 0 none;
|
|
||||||
border-top: 1px solid var(--color-border-primary);
|
|
||||||
border-bottom: 1px solid var(--color-border-primary);
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 20px;
|
|
||||||
|
|
||||||
dl {
|
|
||||||
display: flex;
|
|
||||||
border-bottom: 1px solid var(--color-border-primary);
|
|
||||||
}
|
|
||||||
|
|
||||||
dt,
|
|
||||||
dd {
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding: 14px;
|
|
||||||
text-align: center;
|
|
||||||
max-height: 48px;
|
|
||||||
overflow: hidden;
|
|
||||||
white-space: nowrap;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
}
|
|
||||||
|
|
||||||
dt {
|
|
||||||
font-weight: 500;
|
|
||||||
width: 120px;
|
|
||||||
flex: 0 0 auto;
|
|
||||||
color: var(--color-text-primary);
|
|
||||||
background: var(--color-bg-secondary);
|
|
||||||
}
|
|
||||||
|
|
||||||
dd {
|
|
||||||
flex: 1 1 auto;
|
|
||||||
color: var(--color-text-secondary);
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: var(--color-text-brand);
|
|
||||||
text-decoration: none;
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&:focus,
|
|
||||||
&:active {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.verified {
|
|
||||||
border: 1px solid var(--color-border-success-soft);
|
|
||||||
background: var(--color-bg-success-softest);
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: var(--color-text-success);
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
|
|
||||||
&__mark {
|
|
||||||
color: var(--color-text-success);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dl:last-child {
|
|
||||||
border-bottom: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.directory__tag .trends__item__current {
|
.directory__tag .trends__item__current {
|
||||||
width: auto;
|
width: auto;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1051,35 +1051,121 @@ a.name-tag,
|
|||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.account__header__fields,
|
&__fields,
|
||||||
.account__header__content {
|
&__content {
|
||||||
background: var(--color-bg-primary);
|
background: var(--color-bg-primary);
|
||||||
border: 1px solid var(--color-border-primary);
|
border: 1px solid var(--color-border-primary);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.account__header__fields {
|
&__fields {
|
||||||
margin: 0;
|
|
||||||
border: 1px solid var(--color-border-primary);
|
border: 1px solid var(--color-border-primary);
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 120px auto;
|
||||||
|
grid-auto-flow: row;
|
||||||
|
|
||||||
|
dl {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
dt,
|
||||||
|
dd {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 14px;
|
||||||
|
text-align: center;
|
||||||
|
border-bottom: 1px solid var(--color-border-primary);
|
||||||
|
|
||||||
|
&:last-of-type:not(.verified) {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dt {
|
||||||
|
font-weight: 500;
|
||||||
|
width: 120px;
|
||||||
|
flex: 0 0 auto;
|
||||||
|
color: var(--color-text-primary);
|
||||||
|
background: var(--color-bg-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
dd {
|
||||||
|
flex: 1 1 auto;
|
||||||
|
color: var(--color-text-secondary);
|
||||||
|
|
||||||
|
&:first-of-type.verified {
|
||||||
|
border-top-right-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:last-of-type.verified {
|
||||||
|
border-bottom-right-radius: 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: var(--color-text-brand);
|
color: var(--color-text-brand);
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus,
|
||||||
|
&:active {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dl:first-child .verified {
|
.verified {
|
||||||
border-radius: 0 4px 0 0;
|
border: 1px solid var(--color-border-success-soft);
|
||||||
}
|
background: var(--color-bg-success-softest);
|
||||||
|
|
||||||
.verified a {
|
a {
|
||||||
color: var(--color-text-success);
|
color: var(--color-text-success);
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__mark {
|
||||||
|
color: var(--color-text-success);
|
||||||
|
|
||||||
|
> svg {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.account__header__content {
|
&__content {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
color: var(--color-text-primary);
|
color: var(--color-text-primary);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
overflow: hidden;
|
||||||
|
word-break: normal;
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
unicode-bidi: plaintext;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: var(--color-text-brand);
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus,
|
||||||
|
&:active {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -8320,372 +8320,6 @@ noscript {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.account__header__content {
|
|
||||||
color: var(--color-text-secondary);
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 400;
|
|
||||||
overflow: hidden;
|
|
||||||
word-break: normal;
|
|
||||||
overflow-wrap: break-word;
|
|
||||||
|
|
||||||
p {
|
|
||||||
margin-bottom: 20px;
|
|
||||||
unicode-bidi: plaintext;
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: inherit;
|
|
||||||
text-decoration: underline;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.account__header {
|
|
||||||
container: account-header / inline-size;
|
|
||||||
|
|
||||||
&.inactive {
|
|
||||||
opacity: 0.5;
|
|
||||||
|
|
||||||
.account__header__image,
|
|
||||||
.account__avatar {
|
|
||||||
filter: grayscale(100%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&__info {
|
|
||||||
position: absolute;
|
|
||||||
top: 20px;
|
|
||||||
inset-inline-end: 20px;
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
gap: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&__image {
|
|
||||||
overflow: hidden;
|
|
||||||
height: 145px;
|
|
||||||
position: relative;
|
|
||||||
background: var(--color-bg-tertiary);
|
|
||||||
border-bottom: 1px solid var(--color-border-primary);
|
|
||||||
|
|
||||||
img {
|
|
||||||
object-fit: cover;
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&__bar {
|
|
||||||
position: relative;
|
|
||||||
padding: 0 20px;
|
|
||||||
border-bottom: 1px solid var(--color-border-primary);
|
|
||||||
|
|
||||||
.avatar {
|
|
||||||
display: block;
|
|
||||||
flex: 0 0 auto;
|
|
||||||
|
|
||||||
.account__avatar {
|
|
||||||
background: var(--color-bg-primary);
|
|
||||||
border: 1px solid var(--color-border-primary);
|
|
||||||
border-radius: var(--avatar-border-radius);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&__tabs {
|
|
||||||
display: flex;
|
|
||||||
align-items: flex-start;
|
|
||||||
justify-content: space-between;
|
|
||||||
margin-top: -55px;
|
|
||||||
padding-top: 10px;
|
|
||||||
gap: 8px;
|
|
||||||
overflow: hidden;
|
|
||||||
margin-inline-start: -2px; // aligns the pfp with content below
|
|
||||||
|
|
||||||
&__name {
|
|
||||||
margin-top: 16px;
|
|
||||||
margin-bottom: 16px;
|
|
||||||
|
|
||||||
.emojione {
|
|
||||||
width: 22px;
|
|
||||||
height: 22px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-size: 17px;
|
|
||||||
line-height: 22px;
|
|
||||||
color: var(--color-text-primary);
|
|
||||||
font-weight: 600;
|
|
||||||
overflow: hidden;
|
|
||||||
white-space: nowrap;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
|
|
||||||
small {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 20px;
|
|
||||||
color: var(--color-text-secondary);
|
|
||||||
font-weight: 400;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
|
|
||||||
span {
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
user-select: all;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-lock {
|
|
||||||
height: 18px;
|
|
||||||
width: 18px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.spacer {
|
|
||||||
flex: 1 1 auto;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&__follow-button {
|
|
||||||
flex-grow: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
&__buttons {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 8px;
|
|
||||||
|
|
||||||
$button-breakpoint: 420px;
|
|
||||||
$button-fallback-breakpoint: $button-breakpoint + 55px;
|
|
||||||
|
|
||||||
&--desktop {
|
|
||||||
margin-top: 55px;
|
|
||||||
|
|
||||||
@container (width < #{$button-breakpoint}) {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
@supports (not (container-type: inline-size)) {
|
|
||||||
@media (max-width: #{$button-fallback-breakpoint}) {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&--mobile {
|
|
||||||
margin-block: 16px;
|
|
||||||
|
|
||||||
@container (width >= #{$button-breakpoint}) {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
@supports (not (container-type: inline-size)) {
|
|
||||||
@media (min-width: ($button-fallback-breakpoint + 1px)) {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.button {
|
|
||||||
flex-shrink: 1;
|
|
||||||
white-space: nowrap;
|
|
||||||
min-width: 80px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-button {
|
|
||||||
border: 1px solid var(--color-border-primary);
|
|
||||||
border-radius: 4px;
|
|
||||||
box-sizing: content-box;
|
|
||||||
padding: 5px;
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.copied {
|
|
||||||
border-color: var(--color-text-success);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&__bio {
|
|
||||||
.account__header__content {
|
|
||||||
color: var(--color-text-primary);
|
|
||||||
}
|
|
||||||
|
|
||||||
.account__header__fields {
|
|
||||||
margin: 0;
|
|
||||||
margin-top: 16px;
|
|
||||||
border-radius: 4px;
|
|
||||||
border: 1px solid var(--color-border-primary);
|
|
||||||
|
|
||||||
dl {
|
|
||||||
display: block;
|
|
||||||
padding: 11px 16px;
|
|
||||||
border-bottom-color: var(--color-border-primary);
|
|
||||||
}
|
|
||||||
|
|
||||||
dd,
|
|
||||||
dt {
|
|
||||||
font-size: 13px;
|
|
||||||
line-height: 18px;
|
|
||||||
padding: 0;
|
|
||||||
text-align: initial;
|
|
||||||
}
|
|
||||||
|
|
||||||
dt {
|
|
||||||
width: auto;
|
|
||||||
background: transparent;
|
|
||||||
text-transform: uppercase;
|
|
||||||
color: var(--color-text-tertiary);
|
|
||||||
}
|
|
||||||
|
|
||||||
dd {
|
|
||||||
color: var(--color-text-secondary);
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: var(--color-text-brand);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
width: 18px;
|
|
||||||
height: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.verified {
|
|
||||||
border: 1px solid var(--color-text-success);
|
|
||||||
margin-top: -1px;
|
|
||||||
margin-inline: -1px;
|
|
||||||
|
|
||||||
&:first-child {
|
|
||||||
border-top-left-radius: 4px;
|
|
||||||
border-top-right-radius: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
border-bottom-left-radius: 4px;
|
|
||||||
border-bottom-right-radius: 4px;
|
|
||||||
margin-bottom: -1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
dt,
|
|
||||||
dd {
|
|
||||||
color: var(--color-text-success);
|
|
||||||
}
|
|
||||||
|
|
||||||
dd {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
|
|
||||||
span {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: var(--color-text-success);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&__extra {
|
|
||||||
margin-top: 16px;
|
|
||||||
|
|
||||||
&__links {
|
|
||||||
font-size: 14px;
|
|
||||||
color: var(--color-text-secondary);
|
|
||||||
margin: 0 -10px;
|
|
||||||
padding-top: 16px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
|
|
||||||
a {
|
|
||||||
display: inline-block;
|
|
||||||
color: var(--color-text-secondary);
|
|
||||||
text-decoration: none;
|
|
||||||
padding: 5px 10px;
|
|
||||||
font-weight: 500;
|
|
||||||
|
|
||||||
strong {
|
|
||||||
font-weight: 700;
|
|
||||||
color: var(--color-text-primary);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&__account-note {
|
|
||||||
color: var(--color-text-primary);
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 400;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
|
|
||||||
&__loading-indicator-wrapper {
|
|
||||||
position: relative;
|
|
||||||
height: 37px;
|
|
||||||
|
|
||||||
.loading-indicator {
|
|
||||||
left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.circular-progress {
|
|
||||||
width: 14px;
|
|
||||||
height: 14px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
display: block;
|
|
||||||
font-size: 12px;
|
|
||||||
font-weight: 500;
|
|
||||||
color: var(--color-text-secondary);
|
|
||||||
text-transform: uppercase;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
textarea {
|
|
||||||
display: block;
|
|
||||||
box-sizing: border-box;
|
|
||||||
width: calc(100% + 20px);
|
|
||||||
color: var(--color-text-primary);
|
|
||||||
background: transparent;
|
|
||||||
padding: 10px;
|
|
||||||
margin: 0 -10px;
|
|
||||||
font-family: inherit;
|
|
||||||
font-size: 14px;
|
|
||||||
resize: none;
|
|
||||||
border: 0;
|
|
||||||
outline: 0;
|
|
||||||
border-radius: 4px;
|
|
||||||
|
|
||||||
&::placeholder {
|
|
||||||
color: var(--color-text-tertiary);
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:focus {
|
|
||||||
background: var(--color-bg-brand-softest);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.account__contents {
|
.account__contents {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,6 +21,9 @@ class PermalinkRedirector
|
|||||||
elsif accounts_request? && record_integer_id_request?
|
elsif accounts_request? && record_integer_id_request?
|
||||||
account = Account.find_by(id: second_segment)
|
account = Account.find_by(id: second_segment)
|
||||||
account if !account&.local? && !account&.suspended?
|
account if !account&.local? && !account&.suspended?
|
||||||
|
elsif collections_request? && record_integer_id_request?
|
||||||
|
collection = Collection.find_by(id: second_segment)
|
||||||
|
collection if !collection&.local? && !collection&.account&.suspended?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -43,6 +46,8 @@ class PermalinkRedirector
|
|||||||
redirect_account_path(object.id)
|
redirect_account_path(object.id)
|
||||||
when 'Status'
|
when 'Status'
|
||||||
redirect_status_path(object.id)
|
redirect_status_path(object.id)
|
||||||
|
when 'Collection'
|
||||||
|
redirect_collection_path(object.id)
|
||||||
else
|
else
|
||||||
@path.delete_prefix('/deck') if @path.start_with?('/deck')
|
@path.delete_prefix('/deck') if @path.start_with?('/deck')
|
||||||
end
|
end
|
||||||
@ -70,6 +75,10 @@ class PermalinkRedirector
|
|||||||
first_segment == 'accounts'
|
first_segment == 'accounts'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def collections_request?
|
||||||
|
first_segment == 'collections'
|
||||||
|
end
|
||||||
|
|
||||||
def record_integer_id_request?
|
def record_integer_id_request?
|
||||||
second_segment =~ /\d/
|
second_segment =~ /\d/
|
||||||
end
|
end
|
||||||
|
|||||||
@ -30,7 +30,7 @@ class CollectionItem < ApplicationRecord
|
|||||||
|
|
||||||
delegate :local?, :remote?, to: :collection
|
delegate :local?, :remote?, to: :collection
|
||||||
|
|
||||||
validates :account_id, uniqueness: { scope: :collection_id }
|
validates :account_id, uniqueness: { scope: :collection_id, allow_nil: true }
|
||||||
validates :position, numericality: { only_integer: true, greater_than: 0 }
|
validates :position, numericality: { only_integer: true, greater_than: 0 }
|
||||||
validates :activity_uri, presence: true, if: :local_item_with_remote_account?
|
validates :activity_uri, presence: true, if: :local_item_with_remote_account?
|
||||||
validates :approval_uri, presence: true, unless: -> { local? || account&.local? || !accepted? }
|
validates :approval_uri, presence: true, unless: -> { local? || account&.local? || !accepted? }
|
||||||
|
|||||||
@ -1,8 +1,7 @@
|
|||||||
-# locals: (field:, account:)
|
-# locals: (field:, account:)
|
||||||
%dl
|
%dt.emojify{ title: field.name }
|
||||||
%dt.emojify{ title: field.name }
|
|
||||||
= prerender_custom_emojis(h(field.name), account.emojis)
|
= prerender_custom_emojis(h(field.name), account.emojis)
|
||||||
%dd{ title: field.value, class: field_verified_class(field.verified?) }
|
%dd{ title: field.value, class: field_verified_class(field.verified?) }
|
||||||
- if field.verified?
|
- if field.verified?
|
||||||
%span.verified__mark{ title: t('accounts.link_verified_on', date: l(field.verified_at)) }
|
%span.verified__mark{ title: t('accounts.link_verified_on', date: l(field.verified_at)) }
|
||||||
= material_symbol 'check'
|
= material_symbol 'check'
|
||||||
|
|||||||
@ -11,12 +11,12 @@
|
|||||||
.admin-account-bio
|
.admin-account-bio
|
||||||
- if @account.fields?
|
- if @account.fields?
|
||||||
%div
|
%div
|
||||||
.account__header__fields
|
%dl.admin-account-bio__fields
|
||||||
= render partial: 'field', collection: @account.fields, locals: { account: @account }
|
= render partial: 'field', collection: @account.fields, locals: { account: @account }
|
||||||
|
|
||||||
- if @account.note?
|
- if @account.note?
|
||||||
%div
|
%div
|
||||||
.account__header__content.emojify
|
.admin-account-bio__content.emojify
|
||||||
= prerender_custom_emojis(account_bio_format(@account), @account.emojis)
|
= prerender_custom_emojis(account_bio_format(@account), @account.emojis)
|
||||||
|
|
||||||
= render 'admin/accounts/counters', account: @account
|
= render 'admin/accounts/counters', account: @account
|
||||||
|
|||||||
@ -61,14 +61,11 @@
|
|||||||
wrapper: :with_block_label
|
wrapper: :with_block_label
|
||||||
|
|
||||||
- if approved_registrations? && @invite.blank?
|
- if approved_registrations? && @invite.blank?
|
||||||
%p.lead= t('auth.sign_up.manual_review', domain: site_hostname)
|
|
||||||
|
|
||||||
.fields-group
|
.fields-group
|
||||||
= f.simple_fields_for :invite_request, resource.invite_request || resource.build_invite_request do |invite_request_fields|
|
= f.simple_fields_for :invite_request, resource.invite_request || resource.build_invite_request do |invite_request_fields|
|
||||||
= invite_request_fields.input :text,
|
= invite_request_fields.input :text,
|
||||||
as: :text,
|
as: :text,
|
||||||
hint: false,
|
hint: t('auth.sign_up.manual_review', domain: site_hostname),
|
||||||
label: false,
|
|
||||||
input_html: { maxlength: UserInviteRequest::TEXT_SIZE_LIMIT },
|
input_html: { maxlength: UserInviteRequest::TEXT_SIZE_LIMIT },
|
||||||
required: Setting.require_invite_text,
|
required: Setting.require_invite_text,
|
||||||
wrapper: :with_block_label
|
wrapper: :with_block_label
|
||||||
|
|||||||
@ -18,7 +18,7 @@ FileUtils.chdir APP_ROOT do
|
|||||||
system('bundle check') || system!('bundle install')
|
system('bundle check') || system!('bundle install')
|
||||||
|
|
||||||
puts "\n== Installing JS dependencies =="
|
puts "\n== Installing JS dependencies =="
|
||||||
system! 'corepack enable'
|
system! 'npm i -g corepack'
|
||||||
system! 'bin/yarn install --immutable'
|
system! 'bin/yarn install --immutable'
|
||||||
|
|
||||||
puts "\n== Preparing database =="
|
puts "\n== Preparing database =="
|
||||||
|
|||||||
@ -484,8 +484,10 @@ da:
|
|||||||
title: Blokér nyt e-maildomæne
|
title: Blokér nyt e-maildomæne
|
||||||
no_email_domain_block_selected: Ingen e-maildomæneblokeringer ændret (ingen var valgt)
|
no_email_domain_block_selected: Ingen e-maildomæneblokeringer ændret (ingen var valgt)
|
||||||
not_permitted: Ikke tilladt
|
not_permitted: Ikke tilladt
|
||||||
|
reset: Nulstil
|
||||||
resolved_dns_records_hint_html: Domænenavnet opløses til flg. MX-domæner, som i sidste ende er ansvarlige for e-mailmodtagelse. Blokering af et MX-domæne blokerer også tilmeldinger fra enhver e-mailadresse på det pågældende MX-domæne, selv hvis det synlige domænenavn er et andet. <strong>Pas på ikke at blokere større e-mailudbydere.</strong>
|
resolved_dns_records_hint_html: Domænenavnet opløses til flg. MX-domæner, som i sidste ende er ansvarlige for e-mailmodtagelse. Blokering af et MX-domæne blokerer også tilmeldinger fra enhver e-mailadresse på det pågældende MX-domæne, selv hvis det synlige domænenavn er et andet. <strong>Pas på ikke at blokere større e-mailudbydere.</strong>
|
||||||
resolved_through_html: Opløst via %{domain}
|
resolved_through_html: Opløst via %{domain}
|
||||||
|
search: Søg
|
||||||
title: Blokerede e-maildomæner
|
title: Blokerede e-maildomæner
|
||||||
email_subscriptions:
|
email_subscriptions:
|
||||||
accounts:
|
accounts:
|
||||||
|
|||||||
@ -484,8 +484,10 @@ de:
|
|||||||
title: Neue E-Mail-Domain sperren
|
title: Neue E-Mail-Domain sperren
|
||||||
no_email_domain_block_selected: Es wurden keine E-Mail-Domain-Sperren geändert, da keine ausgewählt wurden
|
no_email_domain_block_selected: Es wurden keine E-Mail-Domain-Sperren geändert, da keine ausgewählt wurden
|
||||||
not_permitted: Nicht erlaubt
|
not_permitted: Nicht erlaubt
|
||||||
|
reset: Zurücksetzen
|
||||||
resolved_dns_records_hint_html: Die Domain wird zu den folgenden MX-Domains aufgelöst, die für die Annahme von E-Mails zuständig sind. Das Sperren einer MX-Domain sperrt Anmeldungen aller E-Mail-Adressen, die dieselbe MX-Domain verwenden, auch wenn die sichtbare Domain anders lautet. <strong>Achte daher darauf, keine großen E-Mail-Anbieter versehentlich zu sperren.</strong>
|
resolved_dns_records_hint_html: Die Domain wird zu den folgenden MX-Domains aufgelöst, die für die Annahme von E-Mails zuständig sind. Das Sperren einer MX-Domain sperrt Anmeldungen aller E-Mail-Adressen, die dieselbe MX-Domain verwenden, auch wenn die sichtbare Domain anders lautet. <strong>Achte daher darauf, keine großen E-Mail-Anbieter versehentlich zu sperren.</strong>
|
||||||
resolved_through_html: Durch %{domain} aufgelöst
|
resolved_through_html: Durch %{domain} aufgelöst
|
||||||
|
search: Suchen
|
||||||
title: Gesperrte E-Mail-Domains
|
title: Gesperrte E-Mail-Domains
|
||||||
email_subscriptions:
|
email_subscriptions:
|
||||||
accounts:
|
accounts:
|
||||||
@ -495,26 +497,39 @@ de:
|
|||||||
hint: Bisher wurden keine Konten abonniert.
|
hint: Bisher wurden keine Konten abonniert.
|
||||||
no_lists_yet: Noch keine Listen vorhanden
|
no_lists_yet: Noch keine Listen vorhanden
|
||||||
inactive: Deaktiviert
|
inactive: Deaktiviert
|
||||||
|
last_email: Letzte E-Mail
|
||||||
lead: Konten, die die Funktion aktiviert haben und abonniert wurden, werden unten angezeigt.
|
lead: Konten, die die Funktion aktiviert haben und abonniert wurden, werden unten angezeigt.
|
||||||
status: Status
|
status: Status
|
||||||
subscribers: Abonnent*innen
|
subscribers: Abonnent*innen
|
||||||
title: Mailingliste
|
title: Mailingliste
|
||||||
|
additional_footer_texts:
|
||||||
|
show:
|
||||||
|
title: Fußzeile
|
||||||
compliance_settings:
|
compliance_settings:
|
||||||
additional_footer_text:
|
additional_footer_text:
|
||||||
action: Verwalten
|
action: Verwalten
|
||||||
|
hint: Der Text erscheint ausschließlich in der Fußzeile von E-Mails
|
||||||
|
title: Fußzeile
|
||||||
|
lead: E-Mail-Newsletter können abhängig vom geltenden Recht als Marketing-E-Mails betrachtet werden.
|
||||||
privacy_policy:
|
privacy_policy:
|
||||||
action: Verwalten
|
action: Verwalten
|
||||||
|
hint: Die Datenschutzerklärung wird in der Fußzeile jeder E-Mail beigefügt
|
||||||
title: Datenschutzerklärung
|
title: Datenschutzerklärung
|
||||||
|
title: Einstellungen zur Einhaltung von Vorschriften
|
||||||
danger_zone:
|
danger_zone:
|
||||||
disable_feature:
|
disable_feature:
|
||||||
action: Deaktivieren
|
action: Deaktivieren
|
||||||
|
hint: Funktion für alle Konten deaktivieren
|
||||||
title: Funktion deaktivieren
|
title: Funktion deaktivieren
|
||||||
erase_all_data:
|
erase_all_data:
|
||||||
action: Daten löschen
|
action: Daten löschen
|
||||||
|
hint: Löscht dauerhaft alle E-Mails aus allen Mailinglisten
|
||||||
title: Alle Daten löschen
|
title: Alle Daten löschen
|
||||||
title: Gefahrenzone
|
title: Gefahrenzone
|
||||||
|
disabled_msg: E-Mail-Abonnements wurden erfolgreich deaktiviert.
|
||||||
index:
|
index:
|
||||||
disabled:
|
disabled:
|
||||||
|
description: Diese Funktion ermöglicht bestimmten Konten, ein Widget zu ihrem Profil hinzuzufügen, damit Gäste ohne Mastodon-Konto deren Beiträge per E-Mail erhalten können.
|
||||||
get_started: Loslegen
|
get_started: Loslegen
|
||||||
lead: Ermögliche Gästen, Beiträge von ausgewählten Konten dieses Servers per E-Mail zu abonnieren.
|
lead: Ermögliche Gästen, Beiträge von ausgewählten Konten dieses Servers per E-Mail zu abonnieren.
|
||||||
title: E-Mail-Newsletter
|
title: E-Mail-Newsletter
|
||||||
@ -533,6 +548,11 @@ de:
|
|||||||
show:
|
show:
|
||||||
enable_feature: Funktionen aktivieren
|
enable_feature: Funktionen aktivieren
|
||||||
important_information: Wichtige Informationen
|
important_information: Wichtige Informationen
|
||||||
|
list:
|
||||||
|
1_permission_explanation: Wenn die Funktion aktiviert ist, können alle berechtigten Konten ein E-Mail-Formular zu ihrem Profil hinzufügen.
|
||||||
|
2_feature_explanation: Sobald Gäste ein Profil abonnieren und das Abonnement bestätigen, werden sie E-Mails über neue öffentliche Beiträge des betreffenden Profils erhalten.
|
||||||
|
3_privacy_policy_warning: Server-Admins werden Zugriff auf persönlich identifizierbare Informationen (E-Mail-Adressen) haben. Daher müssen die Datenschutzerklärung und Nutzungsbedingungen im Vorfeld aktualisiert werden, bevor diese Funktion verwendet werden kann.
|
||||||
|
4_cost_warning: Abhängig vom Hosting-Provider können Gebühren für den E-Mail-Versand anfallen. Kläre für deinen Server vorher alle Details, da diese Funktion die Anzahl versendeter E-Mails drastisch erhöhen kann.
|
||||||
export_domain_allows:
|
export_domain_allows:
|
||||||
new:
|
new:
|
||||||
title: Erlaubte Domains importieren
|
title: Erlaubte Domains importieren
|
||||||
@ -838,6 +858,7 @@ de:
|
|||||||
manage_custom_emojis: Emojis
|
manage_custom_emojis: Emojis
|
||||||
manage_custom_emojis_description: Spezielle Emojis dieses Servers verwalten
|
manage_custom_emojis_description: Spezielle Emojis dieses Servers verwalten
|
||||||
manage_email_subscriptions: E-Mail-Abonnements
|
manage_email_subscriptions: E-Mail-Abonnements
|
||||||
|
manage_email_subscriptions_description: Konten mit dieser Berechtigung dürfen die Funktion für E-Mail-Newsletter verwenden
|
||||||
manage_federation: Föderation
|
manage_federation: Föderation
|
||||||
manage_federation_description: Domains anderer Mastodon-Server sperren/zulassen – und Zustellbarkeit kontrollieren
|
manage_federation_description: Domains anderer Mastodon-Server sperren/zulassen – und Zustellbarkeit kontrollieren
|
||||||
manage_invites: Einladungen
|
manage_invites: Einladungen
|
||||||
|
|||||||
@ -484,8 +484,10 @@ el:
|
|||||||
title: Αποκλεισμός νέου τομέα email
|
title: Αποκλεισμός νέου τομέα email
|
||||||
no_email_domain_block_selected: Δεν άλλαξαν οι αποκλεισμοί τομέα email καθώς δεν επιλέχθηκε κανένας
|
no_email_domain_block_selected: Δεν άλλαξαν οι αποκλεισμοί τομέα email καθώς δεν επιλέχθηκε κανένας
|
||||||
not_permitted: Δεν επιτρέπεται
|
not_permitted: Δεν επιτρέπεται
|
||||||
|
reset: Επαναφορά
|
||||||
resolved_dns_records_hint_html: Το όνομα τομέα επιλύεται στους ακόλουθους τομείς MX, οι οποίοι είναι τελικά υπεύθυνοι για την αποδοχή των email. Αποκλείοντας έναν τομέα MX θα αποκλείει τις εγγραφές από οποιαδήποτε διεύθυνση email που χρησιμοποιεί τον ίδιο τομέα MX, ακόμη και αν το ορατό όνομα τομέα είναι διαφορετικό. <strong>Προσέξτε να μην αποκλείσετε τους μεγάλους παρόχους ηλεκτρονικού ταχυδρομείου.</strong>
|
resolved_dns_records_hint_html: Το όνομα τομέα επιλύεται στους ακόλουθους τομείς MX, οι οποίοι είναι τελικά υπεύθυνοι για την αποδοχή των email. Αποκλείοντας έναν τομέα MX θα αποκλείει τις εγγραφές από οποιαδήποτε διεύθυνση email που χρησιμοποιεί τον ίδιο τομέα MX, ακόμη και αν το ορατό όνομα τομέα είναι διαφορετικό. <strong>Προσέξτε να μην αποκλείσετε τους μεγάλους παρόχους ηλεκτρονικού ταχυδρομείου.</strong>
|
||||||
resolved_through_html: Επιλύθηκε μέσω %{domain}
|
resolved_through_html: Επιλύθηκε μέσω %{domain}
|
||||||
|
search: Αναζήτηση
|
||||||
title: Αποκλεισμένοι τομείς email
|
title: Αποκλεισμένοι τομείς email
|
||||||
email_subscriptions:
|
email_subscriptions:
|
||||||
accounts:
|
accounts:
|
||||||
|
|||||||
@ -484,8 +484,10 @@ es-AR:
|
|||||||
title: Bloquear nuevo dominio de correo electrónico
|
title: Bloquear nuevo dominio de correo electrónico
|
||||||
no_email_domain_block_selected: No se cambiaron bloqueos de dominio de correo electrónico, ya que no se seleccionó ninguno
|
no_email_domain_block_selected: No se cambiaron bloqueos de dominio de correo electrónico, ya que no se seleccionó ninguno
|
||||||
not_permitted: No permitidos
|
not_permitted: No permitidos
|
||||||
|
reset: Restablecer
|
||||||
resolved_dns_records_hint_html: El nombre de dominio resuelve los siguientes dominios MX, los cuales son responsables en última instancia de aceptar el correo electrónico. Bloquear un dominio MX bloqueará los registros de cualquier dirección de correo electrónico que utilice el mismo dominio MX, incluso si el nombre de dominio visible es diferente. <strong>Tené cuidado de no bloquear los principales proveedores de correo electrónico.</strong>
|
resolved_dns_records_hint_html: El nombre de dominio resuelve los siguientes dominios MX, los cuales son responsables en última instancia de aceptar el correo electrónico. Bloquear un dominio MX bloqueará los registros de cualquier dirección de correo electrónico que utilice el mismo dominio MX, incluso si el nombre de dominio visible es diferente. <strong>Tené cuidado de no bloquear los principales proveedores de correo electrónico.</strong>
|
||||||
resolved_through_html: Resuelto a través de %{domain}
|
resolved_through_html: Resuelto a través de %{domain}
|
||||||
|
search: Buscar
|
||||||
title: Dominios bloqueados de correo electrónico
|
title: Dominios bloqueados de correo electrónico
|
||||||
email_subscriptions:
|
email_subscriptions:
|
||||||
accounts:
|
accounts:
|
||||||
|
|||||||
@ -484,8 +484,10 @@ es-MX:
|
|||||||
title: Bloquear nuevo dominio de correo
|
title: Bloquear nuevo dominio de correo
|
||||||
no_email_domain_block_selected: No se han cambiado bloqueos de dominio de correo, ya que ninguno ha sido seleccionado
|
no_email_domain_block_selected: No se han cambiado bloqueos de dominio de correo, ya que ninguno ha sido seleccionado
|
||||||
not_permitted: No permitido
|
not_permitted: No permitido
|
||||||
|
reset: Restablecer
|
||||||
resolved_dns_records_hint_html: El nombre de dominio resuelve los siguientes dominios MX, los cuales son responsables en última instancia de aceptar el correo electrónico. Bloquear un dominio MX bloqueará los registros de cualquier dirección de correo electrónico que utilice el mismo dominio MX, incluso si el nombre de dominio visible es diferente. <strong>Ten cuidado de no bloquear los principales proveedores de correo electrónico.</strong>
|
resolved_dns_records_hint_html: El nombre de dominio resuelve los siguientes dominios MX, los cuales son responsables en última instancia de aceptar el correo electrónico. Bloquear un dominio MX bloqueará los registros de cualquier dirección de correo electrónico que utilice el mismo dominio MX, incluso si el nombre de dominio visible es diferente. <strong>Ten cuidado de no bloquear los principales proveedores de correo electrónico.</strong>
|
||||||
resolved_through_html: Resuelto a través de %{domain}
|
resolved_through_html: Resuelto a través de %{domain}
|
||||||
|
search: Buscar
|
||||||
title: Dominios de correo bloqueados
|
title: Dominios de correo bloqueados
|
||||||
email_subscriptions:
|
email_subscriptions:
|
||||||
accounts:
|
accounts:
|
||||||
@ -496,7 +498,7 @@ es-MX:
|
|||||||
no_lists_yet: No hay listas todavía
|
no_lists_yet: No hay listas todavía
|
||||||
inactive: Inactiva
|
inactive: Inactiva
|
||||||
last_email: Último correo electrónico
|
last_email: Último correo electrónico
|
||||||
lead: Las cuentas que han habilitado la función y tienen suscriptores se mostrarán a continuación.
|
lead: A continuación se mostrarán las cuentas que hayan activado la función y tengan suscriptores.
|
||||||
status: Estado
|
status: Estado
|
||||||
subscribers: Suscriptores
|
subscribers: Suscriptores
|
||||||
title: Listas de correo
|
title: Listas de correo
|
||||||
@ -506,33 +508,33 @@ es-MX:
|
|||||||
compliance_settings:
|
compliance_settings:
|
||||||
additional_footer_text:
|
additional_footer_text:
|
||||||
action: Administrar
|
action: Administrar
|
||||||
hint: Texto opcional que aparece únicamente en el pie de los correos electrónicos del boletín de noticias
|
hint: Texto opcional que aparece únicamente en el pie de página de los correos electrónicos del boletín informativo
|
||||||
title: Texto de pie de página adicional
|
title: Texto de pie de página adicional
|
||||||
lead: Los boletines de correo electrónico pueden considerarse correos electrónicos de marketing, dependiendo de las jurisdicciones en las que operas.
|
lead: Los boletines informativos por correo electrónico pueden considerarse correos electrónicos de marketing, dependiendo de las jurisdicciones en las que operes.
|
||||||
privacy_policy:
|
privacy_policy:
|
||||||
action: Administrar
|
action: Administrar
|
||||||
hint: Esta política está enlazada en el pie de cada correo electrónico
|
hint: Esta política aparece en el pie de página de cada correo electrónico
|
||||||
title: Política de privacidad
|
title: Política de privacidad
|
||||||
title: Ajustes de cumplimiento normativo
|
title: Ajustes de cumplimiento normativo
|
||||||
danger_zone:
|
danger_zone:
|
||||||
disable_feature:
|
disable_feature:
|
||||||
action: Desactivar
|
action: Desactivar
|
||||||
hint: Desactivar función para todas las cuentas
|
hint: Desactivar la función para todas las cuentas
|
||||||
title: Desactivar función
|
title: Desactivar función
|
||||||
erase_all_data:
|
erase_all_data:
|
||||||
action: Borrar datos
|
action: Eliminar datos
|
||||||
hint: Borra permanentemente todos los correos electrónicos de todas las listas de correo
|
hint: Elimina de forma permanente todos los correos electrónicos de todas las listas de correo
|
||||||
title: Borrar todos los datos
|
title: Eliminar todos los datos
|
||||||
title: Zona peligrosa
|
title: Zona peligrosa
|
||||||
disabled_msg: Las suscripciones de correo electrónico se han desactivado correctamente.
|
disabled_msg: Las suscripciones por correo electrónico se han desactivado correctamente.
|
||||||
index:
|
index:
|
||||||
disabled:
|
disabled:
|
||||||
cannot_be_enabled: Tu proveedor técnico no ha habilitado esta función para tu servidor.
|
cannot_be_enabled: Tu proveedor técnico no ha habilitado esta función para tu servidor.
|
||||||
description: Esta función permite a las cuentas especificadas añadir un widget a sus perfiles, permitiendo a los visitantes sin una cuenta de Mastodon recibir sus publicaciones por correo electrónico.
|
description: Esta función permite a las cuentas especificadas añadir un widget a sus perfiles, lo que permite a los visitantes que no tienen una cuenta de Mastodon recibir sus publicaciones por correo electrónico.
|
||||||
get_started: Primeros pasos
|
get_started: Primeros pasos
|
||||||
lead: Permitir a los visitantes recibir publicaciones por correo electrónico de cuentas dedicadas en este servidor.
|
lead: Permitir que los visitantes reciban publicaciones por correo electrónico desde cuentas específicas de este servidor.
|
||||||
title: Boletines de correo electrónico
|
title: Boletines informativos por correo electrónico
|
||||||
purged_msg: Todos los datos de las suscripciones de correo electrónico están siendo borrados.
|
purged_msg: Se están borrando todos los datos de las suscripciones por correo electrónico.
|
||||||
roles:
|
roles:
|
||||||
accounts: Cuentas
|
accounts: Cuentas
|
||||||
edit_role: Editar rol
|
edit_role: Editar rol
|
||||||
@ -545,13 +547,13 @@ es-MX:
|
|||||||
title: Roles
|
title: Roles
|
||||||
setups:
|
setups:
|
||||||
show:
|
show:
|
||||||
enable_feature: Activar función
|
enable_feature: Habilitar función
|
||||||
important_information: Información importante
|
important_information: Información importante
|
||||||
list:
|
list:
|
||||||
1_permission_explanation: Cuando esta función está activada, las cuentas con los permisos designados pueden añadir un formulario de recopilación de correo electrónico a sus perfiles.
|
1_permission_explanation: Cuando esta función está habilitada, las cuentas con los permisos correspondientes pueden añadir un formulario de recopilación de correos electrónicos a sus perfiles.
|
||||||
2_feature_explanation: Cuando los visitantes se registran en la página de perfil de una cuenta y confirman su suscripción, comenzarán a recibir actualizaciones por correo electrónico cuando la cuenta cree nuevas publicaciones públicas.
|
2_feature_explanation: Cuando los visitantes se suscriban en la página de perfil de una cuenta y confirmen su suscripción, empezarán a recibir notificaciones por correo electrónico cada vez que la cuenta publique nuevas entradas públicas.
|
||||||
3_privacy_policy_warning: Los administradores del servidor tendrán acceso a información de identificación personal (direcciones de correo electrónico). Por lo tanto, la política de privacidad y los Términos del Servicio del servidor deben actualizarse antes de usar esta función.
|
3_privacy_policy_warning: Los administradores del servidor tendrán acceso a la información de identificación personal (direcciones de correo electrónico) recopilada. Por lo tanto, es necesario actualizar la política de privacidad y los Términos de servicio del servidor antes de utilizar esta función.
|
||||||
4_cost_warning: Los correos electrónicos pueden incurrir en un cargo dependiendo de la configuración del alojamiento. Habla con tu proveedor de alojamiento antes de activarlo, ya que esta característica podría aumentar drásticamente la cantidad de correos electrónicos enviados desde tu servidor.
|
4_cost_warning: El envío de correos electrónicos puede conllevar un cargo adicional dependiendo de la configuración del alojamiento web. Consúltalo con tu proveedor de alojamiento antes de habilitar esta función, ya que podría aumentar considerablemente el volumen de correos electrónicos enviados desde tu servidor.
|
||||||
export_domain_allows:
|
export_domain_allows:
|
||||||
new:
|
new:
|
||||||
title: Importar dominios permitidos
|
title: Importar dominios permitidos
|
||||||
@ -857,7 +859,7 @@ es-MX:
|
|||||||
manage_custom_emojis: Administrar Emojis Personalizados
|
manage_custom_emojis: Administrar Emojis Personalizados
|
||||||
manage_custom_emojis_description: Permite a los usuarios gestionar emojis personalizados en el servidor
|
manage_custom_emojis_description: Permite a los usuarios gestionar emojis personalizados en el servidor
|
||||||
manage_email_subscriptions: Gestionar suscripciones por correo electrónico
|
manage_email_subscriptions: Gestionar suscripciones por correo electrónico
|
||||||
manage_email_subscriptions_description: Permite a los usuarios con este permiso habilitar la función del boletín de noticias por correo electrónico para su cuenta
|
manage_email_subscriptions_description: Permitir a los usuarios con este permiso activar la función de boletín informativo por correo electrónico en su cuenta
|
||||||
manage_federation: Administrar Federación
|
manage_federation: Administrar Federación
|
||||||
manage_federation_description: Permite a los usuarios bloquear o permitir la federación con otros dominios, y controlar la entregabilidad
|
manage_federation_description: Permite a los usuarios bloquear o permitir la federación con otros dominios, y controlar la entregabilidad
|
||||||
manage_invites: Administrar Invitaciones
|
manage_invites: Administrar Invitaciones
|
||||||
|
|||||||
@ -484,8 +484,10 @@ es:
|
|||||||
title: Bloquear nuevo dominio de correo
|
title: Bloquear nuevo dominio de correo
|
||||||
no_email_domain_block_selected: No se han cambiado bloqueos de dominio de correo, ya que ninguno ha sido seleccionado
|
no_email_domain_block_selected: No se han cambiado bloqueos de dominio de correo, ya que ninguno ha sido seleccionado
|
||||||
not_permitted: No permitido
|
not_permitted: No permitido
|
||||||
|
reset: Restablecer
|
||||||
resolved_dns_records_hint_html: El nombre de dominio resuelve los siguientes dominios MX, los cuales son responsables en última instancia de aceptar el correo electrónico. Bloquear un dominio MX bloqueará los registros de cualquier dirección de correo electrónico que utilice el mismo dominio MX, incluso si el nombre de dominio visible es diferente. <strong>Ten cuidado de no bloquear los principales proveedores de correo electrónico.</strong>
|
resolved_dns_records_hint_html: El nombre de dominio resuelve los siguientes dominios MX, los cuales son responsables en última instancia de aceptar el correo electrónico. Bloquear un dominio MX bloqueará los registros de cualquier dirección de correo electrónico que utilice el mismo dominio MX, incluso si el nombre de dominio visible es diferente. <strong>Ten cuidado de no bloquear los principales proveedores de correo electrónico.</strong>
|
||||||
resolved_through_html: Resuelto a través de %{domain}
|
resolved_through_html: Resuelto a través de %{domain}
|
||||||
|
search: Buscar
|
||||||
title: Dominios de correo bloqueados
|
title: Dominios de correo bloqueados
|
||||||
email_subscriptions:
|
email_subscriptions:
|
||||||
accounts:
|
accounts:
|
||||||
|
|||||||
@ -539,6 +539,19 @@ et:
|
|||||||
empty:
|
empty:
|
||||||
hint: Kellelgi pole õigust seda oskust kasutada.
|
hint: Kellelgi pole õigust seda oskust kasutada.
|
||||||
no_roles_added: Rolle pole lisatud
|
no_roles_added: Rolle pole lisatud
|
||||||
|
lead: Järgmiste rollidega kontod saavad selle oskuse oma profiilis sisse lülitada.
|
||||||
|
manage_roles: Halda rolle
|
||||||
|
role_name: Rolli nimi
|
||||||
|
title: Rollid
|
||||||
|
setups:
|
||||||
|
show:
|
||||||
|
enable_feature: Luba oskus
|
||||||
|
important_information: Oluline info
|
||||||
|
list:
|
||||||
|
1_permission_explanation: Kui see funktsioon on sisse lülitatud, saavad vastavate õigustega kontod lisada oma profiilidesse e-posti kogumise vormi.
|
||||||
|
2_feature_explanation: Kui külastajad registreeruvad konto profiililehel ja kinnitavad tellimuse, hakkavad nad saama e-kirju, kui konto avaldab uusi avalikke postitusi.
|
||||||
|
3_privacy_policy_warning: Serveri administraatoritel on juurdepääs kogutud isikuandmetele (e-posti aadressidele). Seetõttu tuleb enne selle funktsiooni kasutamist ajakohastada serveri privaatsuspoliitika ja kasutustingimused.
|
||||||
|
4_cost_warning: Sõltuvalt veebimajutuse seadistustest võib e-kirjade saatmine kaasa tuua lisatasu. Enne selle funktsiooni aktiveerimist konsulteeri oma veebimajutuse pakkujaga, kuna sinu serverist saadetavate e-kirjade arv võib oluliselt suureneda.
|
||||||
export_domain_allows:
|
export_domain_allows:
|
||||||
new:
|
new:
|
||||||
title: Lubatud domeenide import
|
title: Lubatud domeenide import
|
||||||
@ -844,6 +857,7 @@ et:
|
|||||||
manage_custom_emojis: Halda isetehtud emotikone
|
manage_custom_emojis: Halda isetehtud emotikone
|
||||||
manage_custom_emojis_description: Lubab kasutajatel hallata serveris isetehtud emotikone
|
manage_custom_emojis_description: Lubab kasutajatel hallata serveris isetehtud emotikone
|
||||||
manage_email_subscriptions: Halda e-posti tellimusi
|
manage_email_subscriptions: Halda e-posti tellimusi
|
||||||
|
manage_email_subscriptions_description: Luba selle õigusega kasutajatel oma kontol e-posti uudiskirja funktsioon sisse lülitada
|
||||||
manage_federation: Halda födereerumist
|
manage_federation: Halda födereerumist
|
||||||
manage_federation_description: Lubab kasutajail keelata või lubada föderatsioone teiste domeenidega ja hallata ühenduvust
|
manage_federation_description: Lubab kasutajail keelata või lubada föderatsioone teiste domeenidega ja hallata ühenduvust
|
||||||
manage_invites: Halda kutseid
|
manage_invites: Halda kutseid
|
||||||
|
|||||||
@ -517,6 +517,71 @@ ga:
|
|||||||
resolved_dns_records_hint_html: Réitíonn an t-ainm fearainn chuig na fearainn MX seo a leanas, atá freagrach sa deireadh as glacadh le ríomhphost. Má dhéantar fearann MX a bhlocáil, cuirfear bac ar chlárúcháin ó aon seoladh ríomhphoist a úsáideann an fearann MX céanna, fiú má tá an t-ainm fearainn infheicthe difriúil. <strong>Bí cúramach gan bac a chur ar phríomhsholáthraithe ríomhphoist.</strong>
|
resolved_dns_records_hint_html: Réitíonn an t-ainm fearainn chuig na fearainn MX seo a leanas, atá freagrach sa deireadh as glacadh le ríomhphost. Má dhéantar fearann MX a bhlocáil, cuirfear bac ar chlárúcháin ó aon seoladh ríomhphoist a úsáideann an fearann MX céanna, fiú má tá an t-ainm fearainn infheicthe difriúil. <strong>Bí cúramach gan bac a chur ar phríomhsholáthraithe ríomhphoist.</strong>
|
||||||
resolved_through_html: Réitithe trí %{domain}
|
resolved_through_html: Réitithe trí %{domain}
|
||||||
title: Fearainn ríomhphoist bactha
|
title: Fearainn ríomhphoist bactha
|
||||||
|
email_subscriptions:
|
||||||
|
accounts:
|
||||||
|
account: Cuntas
|
||||||
|
active: Gníomhach
|
||||||
|
empty:
|
||||||
|
hint: Níl aon síntiúsóirí ag aon chuntas go fóill.
|
||||||
|
no_lists_yet: Gan aon liostaí fós
|
||||||
|
inactive: Neamhghníomhach
|
||||||
|
last_email: Ríomhphost deireanach
|
||||||
|
lead: Taispeánfar thíos cuntais a bhfuil an ghné cumasaithe acu agus a bhfuil síntiúsóirí acu.
|
||||||
|
status: Stádas
|
||||||
|
subscribers: Síntiúsóirí
|
||||||
|
title: Liostaí poist
|
||||||
|
additional_footer_texts:
|
||||||
|
show:
|
||||||
|
title: Téacs breise sa bhuntásc
|
||||||
|
compliance_settings:
|
||||||
|
additional_footer_text:
|
||||||
|
action: Bainistigh
|
||||||
|
hint: Téacs roghnach a thaispeántar i mbunús ríomhphoist nuachtlitir amháin
|
||||||
|
title: Téacs breise sa bhuntásc
|
||||||
|
lead: Féadfar nuachtlitreacha ríomhphoist a mheas mar ríomhphoist mhargaíochta, ag brath ar na dlínsí ina bhfeidhmíonn tú.
|
||||||
|
privacy_policy:
|
||||||
|
action: Bainistigh
|
||||||
|
hint: Tá nasc chuig an mbeartas seo i mbun gach ríomhphoist
|
||||||
|
title: Polasaí príobháideachta
|
||||||
|
title: Socruithe comhlíontachta
|
||||||
|
danger_zone:
|
||||||
|
disable_feature:
|
||||||
|
action: Díchumasaigh
|
||||||
|
hint: Múch an ghné do gach cuntas
|
||||||
|
title: Díchumasaigh gné
|
||||||
|
erase_all_data:
|
||||||
|
action: Scrios sonraí
|
||||||
|
hint: Scriosann sé gach ríomhphost i ngach liosta seoltaí go buan
|
||||||
|
title: Scrios na sonraí go léir
|
||||||
|
title: Crios contúirte
|
||||||
|
disabled_msg: Tá síntiúis ríomhphoist díchumasaithe go rathúil.
|
||||||
|
index:
|
||||||
|
disabled:
|
||||||
|
cannot_be_enabled: Níl an ghné seo cumasaithe ag do sholáthraí teicniúil do do fhreastalaí.
|
||||||
|
description: Leis an ngné seo, is féidir le cuntais shonraithe giuirléid a chur lena bpróifílí, rud a chuireann ar chumas cuairteoirí gan cuntas Mastodon a gcuid post a fháil trí ríomhphost.
|
||||||
|
get_started: Tosaigh
|
||||||
|
lead: Lig do chuairteoirí poist a fháil trí ríomhphost ó chuntais tiomnaithe ar an bhfreastalaí seo.
|
||||||
|
title: Nuachtlitreacha ríomhphoist
|
||||||
|
purged_msg: Tá gach sonraí síntiúis ríomhphoist á scriosadh.
|
||||||
|
roles:
|
||||||
|
accounts: Cuntais
|
||||||
|
edit_role: Cuir ról in eagar
|
||||||
|
empty:
|
||||||
|
hint: Níl cead ag aon duine an ghné seo a úsáid.
|
||||||
|
no_roles_added: Níor cuireadh aon róil leis
|
||||||
|
lead: Is féidir le cuntais leis na róil seo a leanas an ghné seo a chumasú ar a bpróifílí.
|
||||||
|
manage_roles: Bainistigh róil
|
||||||
|
role_name: Ainm an róil
|
||||||
|
title: Róil
|
||||||
|
setups:
|
||||||
|
show:
|
||||||
|
enable_feature: Cumasaigh gné
|
||||||
|
important_information: Faisnéis thábhachtach
|
||||||
|
list:
|
||||||
|
1_permission_explanation: Nuair a bhíonn an ghné seo cumasaithe, is féidir le cuntais a bhfuil na ceadanna ainmnithe acu foirm bhailiúcháin ríomhphoist a chur lena bpróifílí.
|
||||||
|
2_feature_explanation: Nuair a chláraíonn cuairteoirí ar leathanach próifíle cuntais agus a dheimhníonn siad a síntiús, tosóidh siad ag fáil nuashonruithe ríomhphoist nuair a chruthaíonn an cuntas poist phoiblí nua.
|
||||||
|
3_privacy_policy_warning: Beidh rochtain ag riarthóirí freastalaí ar PII (seoltaí ríomhphoist) a bhailítear. Dá bhrí sin, ní mór an polasaí príobháideachta agus na Téarmaí Seirbhíse don fhreastalaí a nuashonrú sula n-úsáidtear an ghné seo.
|
||||||
|
4_cost_warning: D’fhéadfadh táille a bheith i gceist le ríomhphoist ag brath ar shocrú an óstála. Pléigh le do sholáthraí óstála sula gcumasaíonn tú é, mar d’fhéadfadh an ghné seo líon na ríomhphoist a sheoltar ó do fhreastalaí a mhéadú go mór.
|
||||||
export_domain_allows:
|
export_domain_allows:
|
||||||
new:
|
new:
|
||||||
title: Ceadaíonn fearann iomportála
|
title: Ceadaíonn fearann iomportála
|
||||||
@ -840,6 +905,7 @@ ga:
|
|||||||
manage_custom_emojis: Bainistigh Emojis Saincheaptha
|
manage_custom_emojis: Bainistigh Emojis Saincheaptha
|
||||||
manage_custom_emojis_description: Ligeann sé d'úsáideoirí emojis saincheaptha a bhainistiú ar an bhfreastalaí
|
manage_custom_emojis_description: Ligeann sé d'úsáideoirí emojis saincheaptha a bhainistiú ar an bhfreastalaí
|
||||||
manage_email_subscriptions: Bainistigh Síntiúis Ríomhphoist
|
manage_email_subscriptions: Bainistigh Síntiúis Ríomhphoist
|
||||||
|
manage_email_subscriptions_description: Lig d’úsáideoirí a bhfuil an cead seo acu gné an nuachtlitir ríomhphoist a chumasú dá gcuntas
|
||||||
manage_federation: Cónaidhm a bhainistiú
|
manage_federation: Cónaidhm a bhainistiú
|
||||||
manage_federation_description: Ligeann sé d’úsáideoirí cónaidhm a bhlocáil nó a cheadú le fearainn eile, agus inseachadacht a rialú
|
manage_federation_description: Ligeann sé d’úsáideoirí cónaidhm a bhlocáil nó a cheadú le fearainn eile, agus inseachadacht a rialú
|
||||||
manage_invites: Bainistigh Cuirí
|
manage_invites: Bainistigh Cuirí
|
||||||
|
|||||||
@ -484,8 +484,10 @@ gl:
|
|||||||
title: Bloquear novo dominio de correo
|
title: Bloquear novo dominio de correo
|
||||||
no_email_domain_block_selected: Non se cambiou ningún bloqueo de dominio porque non había ningún seleccionado
|
no_email_domain_block_selected: Non se cambiou ningún bloqueo de dominio porque non había ningún seleccionado
|
||||||
not_permitted: Non permitido
|
not_permitted: Non permitido
|
||||||
|
reset: Restabelecer
|
||||||
resolved_dns_records_hint_html: O nome de dominio corresponde cos seguintes dominios MX, que son os responsables últimos de aceptar o correo. Ao bloquear un dominio MX bloquerás a creación de contas para todo enderezo de correo que use o mesmo dominio MX, incluso se o nome de dominio visible é diferente. <strong>Ten coidado xa que podes bloquear os principais provedores de correo.</strong>
|
resolved_dns_records_hint_html: O nome de dominio corresponde cos seguintes dominios MX, que son os responsables últimos de aceptar o correo. Ao bloquear un dominio MX bloquerás a creación de contas para todo enderezo de correo que use o mesmo dominio MX, incluso se o nome de dominio visible é diferente. <strong>Ten coidado xa que podes bloquear os principais provedores de correo.</strong>
|
||||||
resolved_through_html: Resolto a través de %{domain}
|
resolved_through_html: Resolto a través de %{domain}
|
||||||
|
search: Buscar
|
||||||
title: Dominios de correo bloqueados
|
title: Dominios de correo bloqueados
|
||||||
email_subscriptions:
|
email_subscriptions:
|
||||||
accounts:
|
accounts:
|
||||||
@ -551,6 +553,7 @@ gl:
|
|||||||
1_permission_explanation: Cando se activa esta ferramenta as contas cos permisos concedidos poden engadir un formulario no seu perfil para recoller correos.
|
1_permission_explanation: Cando se activa esta ferramenta as contas cos permisos concedidos poden engadir un formulario no seu perfil para recoller correos.
|
||||||
2_feature_explanation: Cando unha persoa visita se apunta na páxina do perfil e confirma a súa subscrición, comezará a recibir actualizacións por correo cando a conta publique novas publicacións públicas.
|
2_feature_explanation: Cando unha persoa visita se apunta na páxina do perfil e confirma a súa subscrición, comezará a recibir actualizacións por correo cando a conta publique novas publicacións públicas.
|
||||||
3_privacy_policy_warning: A administración do servidor vai ter acceso aos PII (enderezos de correo) recollidos. Así, a directiva de privacidade e os termos do servizo do servidor deben actualizarse antes de activar esta ferramenta.
|
3_privacy_policy_warning: A administración do servidor vai ter acceso aos PII (enderezos de correo) recollidos. Así, a directiva de privacidade e os termos do servizo do servidor deben actualizarse antes de activar esta ferramenta.
|
||||||
|
4_cost_warning: Os correos poderían supoñer costes adicionais do servidor. Consulta co teu provedor de hospedaxe antes de activalos, xa que esta ferramenta podería facer aumentar drásticamente o número de correos que envía o teu servidor.
|
||||||
export_domain_allows:
|
export_domain_allows:
|
||||||
new:
|
new:
|
||||||
title: Importar dominios permitidos
|
title: Importar dominios permitidos
|
||||||
@ -856,6 +859,7 @@ gl:
|
|||||||
manage_custom_emojis: Xestionar Emojis personalizados
|
manage_custom_emojis: Xestionar Emojis personalizados
|
||||||
manage_custom_emojis_description: Permite xestionar os emojis personalizados do servidor
|
manage_custom_emojis_description: Permite xestionar os emojis personalizados do servidor
|
||||||
manage_email_subscriptions: Xestionar subscripcións por correo
|
manage_email_subscriptions: Xestionar subscripcións por correo
|
||||||
|
manage_email_subscriptions_description: Permitir ás usuarias con este permiso activar para a súa conta a ferramenta do boletín por correo
|
||||||
manage_federation: Xestionar a federación
|
manage_federation: Xestionar a federación
|
||||||
manage_federation_description: Permite bloquear ou permitir a federación con outros dominios, e controlar as entregas
|
manage_federation_description: Permite bloquear ou permitir a federación con outros dominios, e controlar as entregas
|
||||||
manage_invites: Xestionar Convites
|
manage_invites: Xestionar Convites
|
||||||
|
|||||||
@ -496,6 +496,7 @@ hu:
|
|||||||
no_lists_yet: Még nincsenek listák
|
no_lists_yet: Még nincsenek listák
|
||||||
inactive: Inaktív
|
inactive: Inaktív
|
||||||
last_email: Legutóbbi e-mail
|
last_email: Legutóbbi e-mail
|
||||||
|
lead: A fiókok, melyek bekapcsolták a funkciót, és vannak feliratkozóik, itt fognak megjelenni alább.
|
||||||
status: Állapot
|
status: Állapot
|
||||||
subscribers: Feliratkozók
|
subscribers: Feliratkozók
|
||||||
title: Levelezőlisták
|
title: Levelezőlisták
|
||||||
@ -527,6 +528,7 @@ hu:
|
|||||||
index:
|
index:
|
||||||
disabled:
|
disabled:
|
||||||
cannot_be_enabled: A műszaki szolgáltató nem kapcsolta be ezt a funkciót a kiszolgálód számára.
|
cannot_be_enabled: A műszaki szolgáltató nem kapcsolta be ezt a funkciót a kiszolgálód számára.
|
||||||
|
description: A funkció lehetővé teszi, hogy a megadott fiókok hozzáadjanak egy kisalkalmazást a profiljukhoz, mellyel a Mastodon-fiók nélküli látogatók e-mailben megkaphatják a bejegyzéseiket.
|
||||||
get_started: Első lépések
|
get_started: Első lépések
|
||||||
title: E-mailes hírlevelek
|
title: E-mailes hírlevelek
|
||||||
purged_msg: Az összes e-mail-feliratkozási adat törlése folyamatban van.
|
purged_msg: Az összes e-mail-feliratkozási adat törlése folyamatban van.
|
||||||
|
|||||||
@ -484,8 +484,10 @@ is:
|
|||||||
title: Útiloka nýtt tölvupóstlén
|
title: Útiloka nýtt tölvupóstlén
|
||||||
no_email_domain_block_selected: Engum útilokunum tölvupóstléna var breytt þar sem ekkert var valið
|
no_email_domain_block_selected: Engum útilokunum tölvupóstléna var breytt þar sem ekkert var valið
|
||||||
not_permitted: Ekki leyft
|
not_permitted: Ekki leyft
|
||||||
|
reset: Endurstilla
|
||||||
resolved_dns_records_hint_html: Heiti lénsins vísar til eftirfarandi MX-léna, sem bera endanlega ábyrgð á að tölvupóstur skili sér. Útilokun á MX-léni mun koma í veg fyrir nýskráningar með hverju því tölvupóstfangi sem notar sama MX-lén, jafnvel þótt sýnilega lénsheitið sé frábrugðið. <strong>Farðu varlega svo þú útilokir ekki algengar tölvupóstþjónustur.</strong>
|
resolved_dns_records_hint_html: Heiti lénsins vísar til eftirfarandi MX-léna, sem bera endanlega ábyrgð á að tölvupóstur skili sér. Útilokun á MX-léni mun koma í veg fyrir nýskráningar með hverju því tölvupóstfangi sem notar sama MX-lén, jafnvel þótt sýnilega lénsheitið sé frábrugðið. <strong>Farðu varlega svo þú útilokir ekki algengar tölvupóstþjónustur.</strong>
|
||||||
resolved_through_html: Leyst í gegnum %{domain}
|
resolved_through_html: Leyst í gegnum %{domain}
|
||||||
|
search: Leita
|
||||||
title: Útilokuð tölvupóstlén
|
title: Útilokuð tölvupóstlén
|
||||||
email_subscriptions:
|
email_subscriptions:
|
||||||
accounts:
|
accounts:
|
||||||
|
|||||||
@ -486,6 +486,7 @@ it:
|
|||||||
not_permitted: Non consentito
|
not_permitted: Non consentito
|
||||||
resolved_dns_records_hint_html: Il nome di dominio si risolve nei seguenti domini MX, che sono in ultima analisi responsabili dell'accettazione delle e-mail. Il blocco di un dominio MX bloccherà le registrazioni da qualsiasi indirizzo e-mail che utilizzi lo stesso dominio MX, anche se il nome di dominio visibile è diverso. <strong>Fai attenzione a non bloccare i principali provider di posta elettronica.</strong>
|
resolved_dns_records_hint_html: Il nome di dominio si risolve nei seguenti domini MX, che sono in ultima analisi responsabili dell'accettazione delle e-mail. Il blocco di un dominio MX bloccherà le registrazioni da qualsiasi indirizzo e-mail che utilizzi lo stesso dominio MX, anche se il nome di dominio visibile è diverso. <strong>Fai attenzione a non bloccare i principali provider di posta elettronica.</strong>
|
||||||
resolved_through_html: Risolto attraverso %{domain}
|
resolved_through_html: Risolto attraverso %{domain}
|
||||||
|
search: Cerca
|
||||||
title: Domini e-mail bloccati
|
title: Domini e-mail bloccati
|
||||||
email_subscriptions:
|
email_subscriptions:
|
||||||
accounts:
|
accounts:
|
||||||
@ -521,6 +522,7 @@ it:
|
|||||||
title: Disabilita la funzionalità
|
title: Disabilita la funzionalità
|
||||||
erase_all_data:
|
erase_all_data:
|
||||||
action: Cancella i dati
|
action: Cancella i dati
|
||||||
|
hint: Elimina in modo permanente tutti gli indirizzi email in tutte le mailing list
|
||||||
title: Cancella tutti i dati
|
title: Cancella tutti i dati
|
||||||
title: Zona pericolosa
|
title: Zona pericolosa
|
||||||
disabled_msg: Le iscrizioni via email sono state disabilitate con successo.
|
disabled_msg: Le iscrizioni via email sono state disabilitate con successo.
|
||||||
|
|||||||
@ -1005,6 +1005,7 @@ kab:
|
|||||||
development: Taneflit
|
development: Taneflit
|
||||||
edit_profile: Ẓreg amaɣnu
|
edit_profile: Ẓreg amaɣnu
|
||||||
export: Sifeḍ
|
export: Sifeḍ
|
||||||
|
featured_tags: Ihacṭagen ufrinen
|
||||||
import: Kter
|
import: Kter
|
||||||
import_and_export: Taktert d usifeḍ
|
import_and_export: Taktert d usifeḍ
|
||||||
migrate: Tunigin n umiḍan
|
migrate: Tunigin n umiḍan
|
||||||
|
|||||||
@ -92,6 +92,7 @@ de:
|
|||||||
closed_registrations_message: Wird angezeigt, wenn Registrierungen deaktiviert sind
|
closed_registrations_message: Wird angezeigt, wenn Registrierungen deaktiviert sind
|
||||||
content_cache_retention_period: Sämtliche Beiträge von anderen Servern (einschließlich geteilte Beiträge und Antworten) werden, unabhängig von der Interaktion der lokalen Nutzer*innen mit diesen Beiträgen, nach der festgelegten Anzahl von Tagen gelöscht. Davon sind auch Beiträge betroffen, die von lokalen Nutzer*innen favorisiert oder als Lesezeichen gespeichert wurden. Private Erwähnungen zwischen Nutzer*innen von verschiedenen Servern werden ebenfalls verloren gehen und können nicht wiederhergestellt werden. Diese Option richtet sich ausschließlich an Server mit speziellen Zwecken und wird die allgemeine Nutzungserfahrung beeinträchtigen, wenn sie für den allgemeinen Gebrauch aktiviert ist.
|
content_cache_retention_period: Sämtliche Beiträge von anderen Servern (einschließlich geteilte Beiträge und Antworten) werden, unabhängig von der Interaktion der lokalen Nutzer*innen mit diesen Beiträgen, nach der festgelegten Anzahl von Tagen gelöscht. Davon sind auch Beiträge betroffen, die von lokalen Nutzer*innen favorisiert oder als Lesezeichen gespeichert wurden. Private Erwähnungen zwischen Nutzer*innen von verschiedenen Servern werden ebenfalls verloren gehen und können nicht wiederhergestellt werden. Diese Option richtet sich ausschließlich an Server mit speziellen Zwecken und wird die allgemeine Nutzungserfahrung beeinträchtigen, wenn sie für den allgemeinen Gebrauch aktiviert ist.
|
||||||
custom_css: Du kannst eigene Stylesheets für das Webinterface von Mastodon verwenden.
|
custom_css: Du kannst eigene Stylesheets für das Webinterface von Mastodon verwenden.
|
||||||
|
email_footer_text: Der Text erscheint ausschließlich in der Fußzeile von E-Mails.
|
||||||
favicon: WebP, PNG, GIF oder JPG. Überschreibt das Standard-Mastodon-Favicon mit einem eigenen Favicon.
|
favicon: WebP, PNG, GIF oder JPG. Überschreibt das Standard-Mastodon-Favicon mit einem eigenen Favicon.
|
||||||
landing_page: Legt fest, welchen Bereich (nicht angemeldete) Besucher*innen sehen, wenn sie deinen Server besuchen. Für „Trends“ müssen die Trends in den Entdecken-Einstellungen aktiviert sein. Für „Lokaler Feed“ muss „Zugriff auf Live-Feeds, die lokale Beiträge beinhalten“ in den Entdecken-Einstellungen auf „Alle“ gesetzt werden.
|
landing_page: Legt fest, welchen Bereich (nicht angemeldete) Besucher*innen sehen, wenn sie deinen Server besuchen. Für „Trends“ müssen die Trends in den Entdecken-Einstellungen aktiviert sein. Für „Lokaler Feed“ muss „Zugriff auf Live-Feeds, die lokale Beiträge beinhalten“ in den Entdecken-Einstellungen auf „Alle“ gesetzt werden.
|
||||||
mascot: Überschreibt die Abbildung im erweiterten Webinterface.
|
mascot: Überschreibt die Abbildung im erweiterten Webinterface.
|
||||||
@ -294,6 +295,7 @@ de:
|
|||||||
closed_registrations_message: Nachricht, falls Registrierungen deaktiviert sind
|
closed_registrations_message: Nachricht, falls Registrierungen deaktiviert sind
|
||||||
content_cache_retention_period: Aufbewahrungsfrist für externe Inhalte
|
content_cache_retention_period: Aufbewahrungsfrist für externe Inhalte
|
||||||
custom_css: Eigenes CSS
|
custom_css: Eigenes CSS
|
||||||
|
email_footer_text: Fußzeile
|
||||||
favicon: Favicon
|
favicon: Favicon
|
||||||
landing_page: Landingpage für Gäste
|
landing_page: Landingpage für Gäste
|
||||||
local_live_feed_access: Zugriff auf Live-Feeds, die lokale Beiträge beinhalten
|
local_live_feed_access: Zugriff auf Live-Feeds, die lokale Beiträge beinhalten
|
||||||
@ -322,6 +324,9 @@ de:
|
|||||||
trendable_by_default: Trends ohne vorherige Überprüfung erlauben
|
trendable_by_default: Trends ohne vorherige Überprüfung erlauben
|
||||||
trends: Trends aktivieren
|
trends: Trends aktivieren
|
||||||
wrapstodon: Wrapstodon aktivieren
|
wrapstodon: Wrapstodon aktivieren
|
||||||
|
form_email_subscriptions_confirmation:
|
||||||
|
agreement_email_volume: Ich verstehe, dass das Aktivieren dieser Funktion die Anzahl versendeter E-Mails drastisch erhöhen kann. Ich übernehme die Verantwortung für mögliche Zusatzkosten.
|
||||||
|
agreement_privacy_and_terms: Datenschutzerklärung und Nutzungsbedingungen wurden im Vorfeld aktualisiert.
|
||||||
interactions:
|
interactions:
|
||||||
must_be_follower: Benachrichtigungen von Profilen, die mir nicht folgen, ausblenden
|
must_be_follower: Benachrichtigungen von Profilen, die mir nicht folgen, ausblenden
|
||||||
must_be_following: Benachrichtigungen von Profilen, denen ich nicht folge, ausblenden
|
must_be_following: Benachrichtigungen von Profilen, denen ich nicht folge, ausblenden
|
||||||
|
|||||||
@ -156,7 +156,7 @@ el:
|
|||||||
jurisdiction: Ανέφερε τη χώρα όπου ζει αυτός που πληρώνει τους λογαριασμούς. Εάν πρόκειται για εταιρεία ή άλλη οντότητα, ανέφερε τη χώρα όπου υφίσταται, και την πόλη, περιοχή, έδαφος ή πολιτεία ανάλογα με την περίπτωση.
|
jurisdiction: Ανέφερε τη χώρα όπου ζει αυτός που πληρώνει τους λογαριασμούς. Εάν πρόκειται για εταιρεία ή άλλη οντότητα, ανέφερε τη χώρα όπου υφίσταται, και την πόλη, περιοχή, έδαφος ή πολιτεία ανάλογα με την περίπτωση.
|
||||||
min_age: Δεν πρέπει να είναι κάτω από την ελάχιστη ηλικία που απαιτείται από τους νόμους της δικαιοδοσίας σας.
|
min_age: Δεν πρέπει να είναι κάτω από την ελάχιστη ηλικία που απαιτείται από τους νόμους της δικαιοδοσίας σας.
|
||||||
user:
|
user:
|
||||||
chosen_languages: Όταν ενεργοποιηθεί, μόνο αναρτήσεις σε επιλεγμένες γλώσσες θα εμφανίζονται στις δημόσιες ροές. Αυτή η ρύθμιση δεν επηρεάζει την Αρχική ροή και τις λίστες σας.
|
chosen_languages: Όταν επιλέξετε, στις δημόσιες ροές θα εμφανίζονται αναρτήσεις μόνο από τις επιλεγμένες γλώσσες. Αυτή η ρύθμιση δεν επηρεάζει την Αρχική ροή και τις λίστες σας.
|
||||||
date_of_birth:
|
date_of_birth:
|
||||||
one: Πρέπει να βεβαιωθούμε ότι είσαι τουλάχιστον %{count} για να χρησιμοποιήσεις το %{domain}. Δε θα το αποθηκεύσουμε.
|
one: Πρέπει να βεβαιωθούμε ότι είσαι τουλάχιστον %{count} για να χρησιμοποιήσεις το %{domain}. Δε θα το αποθηκεύσουμε.
|
||||||
other: Πρέπει να βεβαιωθούμε ότι είσαι τουλάχιστον %{count} για να χρησιμοποιήσεις το %{domain}. Δε θα το αποθηκεύσουμε.
|
other: Πρέπει να βεβαιωθούμε ότι είσαι τουλάχιστον %{count} για να χρησιμοποιήσεις το %{domain}. Δε θα το αποθηκεύσουμε.
|
||||||
|
|||||||
@ -92,7 +92,7 @@ es-MX:
|
|||||||
closed_registrations_message: Mostrado cuando los registros están cerrados
|
closed_registrations_message: Mostrado cuando los registros están cerrados
|
||||||
content_cache_retention_period: Todas las publicaciones de otros servidores (incluyendo impuestos y respuestas) serán borrados después del número de días especificado, sin tener en cuenta cualquier interacción del usuario local con esas publicaciones. Esto incluye los mensajes que un usuario local haya marcado como favoritos. Las menciones privadas entre usuarios de diferentes instancias también se perderán y será imposible restaurarlas. El uso de esta configuración está pensado para instancias de propósito especial y rompe muchas expectativas de los usuarios cuando se implementa para uso general.
|
content_cache_retention_period: Todas las publicaciones de otros servidores (incluyendo impuestos y respuestas) serán borrados después del número de días especificado, sin tener en cuenta cualquier interacción del usuario local con esas publicaciones. Esto incluye los mensajes que un usuario local haya marcado como favoritos. Las menciones privadas entre usuarios de diferentes instancias también se perderán y será imposible restaurarlas. El uso de esta configuración está pensado para instancias de propósito especial y rompe muchas expectativas de los usuarios cuando se implementa para uso general.
|
||||||
custom_css: Puedes aplicar estilos personalizados a la versión web de Mastodon.
|
custom_css: Puedes aplicar estilos personalizados a la versión web de Mastodon.
|
||||||
email_footer_text: Texto opcional que aparece únicamente en el pie de los correos electrónicos del boletín de correo electrónico.
|
email_footer_text: Texto opcional que aparece únicamente en el pie de página de los correos electrónicos del boletín informativo.
|
||||||
favicon: WEBP, PNG, GIF o JPG. Reemplaza el icono predeterminado de Mastodon con un icono personalizado.
|
favicon: WEBP, PNG, GIF o JPG. Reemplaza el icono predeterminado de Mastodon con un icono personalizado.
|
||||||
landing_page: Selecciona qué página ven los nuevos visitantes cuando llegan por primera vez a tu servidor. Si seleccionas "Tendencias", entonces las tendencias deben estar habilitadas en la Configuración de Descubrimiento. Si selecciona "Cronología local", entonces "Acceso a las cronologías que destacan publicaciones locales" debe configurarse a "Todos" en la Configuración de Descubrimiento.
|
landing_page: Selecciona qué página ven los nuevos visitantes cuando llegan por primera vez a tu servidor. Si seleccionas "Tendencias", entonces las tendencias deben estar habilitadas en la Configuración de Descubrimiento. Si selecciona "Cronología local", entonces "Acceso a las cronologías que destacan publicaciones locales" debe configurarse a "Todos" en la Configuración de Descubrimiento.
|
||||||
mascot: Reemplaza la ilustración en la interfaz web avanzada.
|
mascot: Reemplaza la ilustración en la interfaz web avanzada.
|
||||||
@ -325,8 +325,8 @@ es-MX:
|
|||||||
trends: Habilitar tendencias
|
trends: Habilitar tendencias
|
||||||
wrapstodon: Habilitar Wrapstodon
|
wrapstodon: Habilitar Wrapstodon
|
||||||
form_email_subscriptions_confirmation:
|
form_email_subscriptions_confirmation:
|
||||||
agreement_email_volume: Entiendo que activar esta característica puede aumentar significativamente el volumen de correos electrónicos enviados desde el servidor, y que soy el único responsable de cualquier coste incurrido.
|
agreement_email_volume: Entiendo que al habilitar esta función puede aumentar considerablemente el volumen de correos electrónicos enviados desde el servidor y que soy el único responsable de los gastos en que se incurra.
|
||||||
agreement_privacy_and_terms: He actualizado la Política de Privacidad y los Términos del Servicio.
|
agreement_privacy_and_terms: He actualizado la Política de privacidad y los Términos de servicio.
|
||||||
interactions:
|
interactions:
|
||||||
must_be_follower: Bloquear notificaciones de personas que no te siguen
|
must_be_follower: Bloquear notificaciones de personas que no te siguen
|
||||||
must_be_following: Bloquear notificaciones de personas que no sigues
|
must_be_following: Bloquear notificaciones de personas que no sigues
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user