Compare commits

...

16 Commits

Author SHA1 Message Date
Claire 6ee7a64465
Reduce differences with upstream in “public” pack (#2680)
* Reduce differences with upstream

* Further reduce pack differences with upstream
2024-03-15 22:21:57 +01:00
Claire 2cdac2bc38
Merge pull request #2679 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 407287573c
2024-03-15 21:38:07 +01:00
Eugen Rochko a32f992182 [Glitch] Add domain information to profiles in web UI
Port 407287573c to glitch-soc

Co-authored-by: Claire <claire.github-309c@sitedethib.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-03-15 18:51:41 +01:00
Claire 2c622497c2 Merge commit '407287573c9c602c5490224c43639b39edf7d48a' into glitch-soc/merge-upstream 2024-03-15 18:48:39 +01:00
Claire ed1af46108
Merge pull request #2677 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
2024-03-15 18:23:54 +01:00
Eugen Rochko 407287573c
Add domain information to profiles in web UI (#29602)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-03-15 13:08:38 +00:00
Claire 2d4ff8f6ed Merge commit 'f445d33fd6aa492df319f4cc4efbd255d7a84f0e' into glitch-soc/merge-upstream
Conflicts:
- `app/views/admin/custom_emojis/new.html.haml`:
  Upstream split some `simple_form` arguments across multiple lines.
  One of the arguments in glitch-soc was different.
  Split as upstream's did, keeping our different limit argument.
- `app/views/admin/settings/appearance/show.html.haml`:
  Upstream split some `simple_form` arguments across multiple lines.
  Glitch-soc had a different field because of the different theming
  system.
  Kept glitch-soc's definition of that form field.
2024-03-15 12:43:59 +01:00
renovate[bot] 52200b6bbf
Update dependency sass to v1.72.0 (#29586)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-15 11:41:55 +00:00
Claire 2e49bc97b0 Merge commit '7720c684c5bf54e73e8815defe15473777d1c201' into glitch-soc/merge-upstream 2024-03-15 12:20:32 +01:00
Matt Jankowski f445d33fd6
Fix haml-lint `LineLength` cops in app/views/admin (#28680) 2024-03-15 11:19:00 +00:00
Matt Jankowski 7720c684c5
Move common module inclusion in sub classes to `ActivityPub::BaseController` (#29560) 2024-03-15 10:40:21 +00:00
Matt Jankowski 2e91a9bd34
Add `include_pagination_headers` matcher to check `Link` header in api specs (#29596) 2024-03-15 10:17:45 +00:00
github-actions[bot] 6865fda593
New Crowdin Translations (automated) (#29603)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-03-15 10:02:10 +00:00
Matt Jankowski e75b55a6d7
Extract target account on list method in bulk import row service spec (#29601) 2024-03-15 09:31:25 +00:00
Matt Jankowski 838b0bdf2d
Remove unused `Account::Interactions#endorsed?` method (#29463) 2024-03-15 09:00:26 +00:00
Matt Jankowski d39d625561
Use inclusive range in `ActivityTracker#get` (#29413) 2024-03-14 21:21:01 +00:00
165 changed files with 1434 additions and 477 deletions

View File

@ -1,13 +0,0 @@
# This configuration was generated by
# `haml-lint --auto-gen-config`
# on 2024-01-09 11:30:07 -0500 using Haml-Lint version 0.53.0.
# The point is for the user to remove these configuration records
# one by one as the lints are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of Haml-Lint, may require this file to be generated again.
linters:
# Offense count: 1
LineLength:
exclude:
- 'app/views/admin/roles/_form.html.haml'

View File

@ -1,6 +1,9 @@
# frozen_string_literal: true
class ActivityPub::BaseController < Api::BaseController
include SignatureVerification
include AccountOwnedConcern
skip_before_action :require_authenticated_user!
skip_before_action :require_not_suspended!
skip_around_action :set_locale

View File

@ -1,9 +1,6 @@
# frozen_string_literal: true
class ActivityPub::ClaimsController < ActivityPub::BaseController
include SignatureVerification
include AccountOwnedConcern
skip_before_action :authenticate_user!
before_action :require_account_signature!

View File

@ -1,9 +1,6 @@
# frozen_string_literal: true
class ActivityPub::CollectionsController < ActivityPub::BaseController
include SignatureVerification
include AccountOwnedConcern
vary_by -> { 'Signature' if authorized_fetch_mode? }
before_action :require_account_signature!, if: :authorized_fetch_mode?

View File

@ -1,9 +1,6 @@
# frozen_string_literal: true
class ActivityPub::FollowersSynchronizationsController < ActivityPub::BaseController
include SignatureVerification
include AccountOwnedConcern
vary_by -> { 'Signature' if authorized_fetch_mode? }
before_action :require_account_signature!

View File

@ -1,9 +1,7 @@
# frozen_string_literal: true
class ActivityPub::InboxesController < ActivityPub::BaseController
include SignatureVerification
include JsonLdHelper
include AccountOwnedConcern
before_action :skip_unknown_actor_activity
before_action :require_actor_signature!

View File

@ -3,9 +3,6 @@
class ActivityPub::OutboxesController < ActivityPub::BaseController
LIMIT = 20
include SignatureVerification
include AccountOwnedConcern
vary_by -> { 'Signature' if authorized_fetch_mode? || page_requested? }
before_action :require_account_signature!, if: :authorized_fetch_mode?

View File

@ -1,9 +1,7 @@
# frozen_string_literal: true
class ActivityPub::RepliesController < ActivityPub::BaseController
include SignatureVerification
include Authorization
include AccountOwnedConcern
DESCENDANTS_LIMIT = 60

View File

@ -6,6 +6,8 @@ class InstanceActorsController < ActivityPub::BaseController
serialization_scope nil
before_action :set_account
skip_before_action :authenticate_user! # From `AccountOwnedConcern`
skip_before_action :require_functional!
skip_before_action :update_user_sign_in
@ -16,6 +18,11 @@ class InstanceActorsController < ActivityPub::BaseController
private
# Skips various `before_action` from `AccountOwnedConcern`
def account_required?
false
end
def set_account
@account = Account.representative
end

View File

@ -0,0 +1,86 @@
import PropTypes from 'prop-types';
import { useState, useRef, useCallback } from 'react';
import { FormattedMessage } from 'react-intl';
import classNames from 'classnames';
import Overlay from 'react-overlays/Overlay';
import AlternateEmailIcon from '@/material-icons/400-24px/alternate_email.svg?react';
import BadgeIcon from '@/material-icons/400-24px/badge.svg?react';
import GlobeIcon from '@/material-icons/400-24px/globe.svg?react';
import { Icon } from 'flavours/glitch/components/icon';
export const DomainPill = ({ domain, username, isSelf }) => {
const [open, setOpen] = useState(false);
const [expanded, setExpanded] = useState(false);
const triggerRef = useRef(null);
const handleClick = useCallback(() => {
setOpen(!open);
}, [open, setOpen]);
const handleExpandClick = useCallback(() => {
setExpanded(!expanded);
}, [expanded, setExpanded]);
return (
<>
<button className={classNames('account__domain-pill', { active: open })} ref={triggerRef} onClick={handleClick}>{domain}</button>
<Overlay show={open} rootClose onHide={handleClick} offset={[5, 5]} target={triggerRef}>
{({ props }) => (
<div {...props} className='account__domain-pill__popout dropdown-animation'>
<div className='account__domain-pill__popout__header'>
<div className='account__domain-pill__popout__header__icon'><Icon icon={BadgeIcon} /></div>
<h3><FormattedMessage id='domain_pill.whats_in_a_handle' defaultMessage="What's in a handle?" /></h3>
</div>
<div className='account__domain-pill__popout__handle'>
<div className='account__domain-pill__popout__handle__label'>{isSelf ? <FormattedMessage id='domain_pill.your_handle' defaultMessage='Your handle:' /> : <FormattedMessage id='domain_pill.their_handle' defaultMessage='Their handle:' />}</div>
<div className='account__domain-pill__popout__handle__handle'>@{username}@{domain}</div>
</div>
<div className='account__domain-pill__popout__parts'>
<div>
<div className='account__domain-pill__popout__parts__icon'><Icon icon={AlternateEmailIcon} /></div>
<div>
<h6><FormattedMessage id='domain_pill.username' defaultMessage='Username' /></h6>
<p>{isSelf ? <FormattedMessage id='domain_pill.your_username' defaultMessage='Your unique identifier on this server. Its possible to find users with the same username on different servers.' /> : <FormattedMessage id='domain_pill.their_username' defaultMessage='Their unique identifier on their server. Its possible to find users with the same username on different servers.' />}</p>
</div>
</div>
<div>
<div className='account__domain-pill__popout__parts__icon'><Icon icon={GlobeIcon} /></div>
<div>
<h6><FormattedMessage id='domain_pill.server' defaultMessage='Server' /></h6>
<p>{isSelf ? <FormattedMessage id='domain_pill.your_server' defaultMessage='Your digital home, where all of your posts live. Dont like this one? Transfer servers at any time and bring your followers, too.' /> : <FormattedMessage id='domain_pill.their_server' defaultMessage='Their digital home, where all of their posts live.' />}</p>
</div>
</div>
</div>
<p>{isSelf ? <FormattedMessage id='domain_pill.who_you_are' defaultMessage='Because your handle says who you are and where you are, people can interact with you across the social web of <button>ActivityPub-powered platforms</button>.' values={{ button: x => <button onClick={handleExpandClick} className='link-button'>{x}</button> }} /> : <FormattedMessage id='domain_pill.who_they_are' defaultMessage='Since handles say who someone is and where they are, you can interact with people across the social web of <button>ActivityPub-powered platforms</button>.' values={{ button: x => <button onClick={handleExpandClick} className='link-button'>{x}</button> }} />}</p>
{expanded && (
<>
<p><FormattedMessage id='domain_pill.activitypub_like_language' defaultMessage='ActivityPub is like the language Mastodon speaks with other social networks.' /></p>
<p><FormattedMessage id='domain_pill.activitypub_lets_connect' defaultMessage='It lets you connect and interact with people not just on Mastodon, but across different social apps too.' /></p>
</>
)}
</div>
)}
</Overlay>
</>
);
};
DomainPill.propTypes = {
username: PropTypes.string.isRequired,
domain: PropTypes.string.isRequired,
isSelf: PropTypes.bool,
};

View File

@ -23,7 +23,7 @@ import { Icon } from 'flavours/glitch/components/icon';
import { IconButton } from 'flavours/glitch/components/icon_button';
import { LoadingIndicator } from 'flavours/glitch/components/loading_indicator';
import DropdownMenuContainer from 'flavours/glitch/containers/dropdown_menu_container';
import { autoPlayGif, me, domain } from 'flavours/glitch/initial_state';
import { autoPlayGif, me, domain as localDomain } from 'flavours/glitch/initial_state';
import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_FEDERATION } from 'flavours/glitch/permissions';
import { preferencesLink, profileLink, accountAdminLink } from 'flavours/glitch/utils/backend_links';
import { WithRouterPropTypes } from 'flavours/glitch/utils/react_router';
@ -31,6 +31,8 @@ import { WithRouterPropTypes } from 'flavours/glitch/utils/react_router';
import AccountNoteContainer from '../containers/account_note_container';
import FollowRequestNoteContainer from '../containers/follow_request_note_container';
import { DomainPill } from './domain_pill';
const messages = defineMessages({
unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },
follow: { id: 'account.follow', defaultMessage: 'Follow' },
@ -75,7 +77,7 @@ const messages = defineMessages({
const titleFromAccount = account => {
const displayName = account.get('display_name');
const acct = account.get('acct') === account.get('username') ? `${account.get('username')}@${domain}` : account.get('acct');
const acct = account.get('acct') === account.get('username') ? `${account.get('username')}@${localDomain}` : account.get('acct');
const prefix = displayName.trim().length === 0 ? account.get('username') : displayName;
return `${prefix} (@${acct})`;
@ -167,7 +169,7 @@ class Header extends ImmutablePureComponent {
};
render () {
const { account, hidden, intl, domain } = this.props;
const { account, hidden, intl } = this.props;
const { signedIn, permissions } = this.context.identity;
if (!account) {
@ -314,7 +316,8 @@ class Header extends ImmutablePureComponent {
const displayNameHtml = { __html: account.get('display_name_html') };
const fields = account.get('fields');
const isLocal = account.get('acct').indexOf('@') === -1;
const acct = isLocal && domain ? `${account.get('acct')}@${domain}` : account.get('acct');
const username = account.get('acct').split('@')[0];
const domain = isLocal ? localDomain : account.get('acct').split('@')[1];
const isIndexable = !account.get('noindex');
const badges = [];
@ -359,7 +362,9 @@ class Header extends ImmutablePureComponent {
<h1>
<span dangerouslySetInnerHTML={displayNameHtml} />
<small>
<span>@{acct}</span> {lockedIcon}
<span>@{username}<span className='invisible'>@{domain}</span></span>
<DomainPill username={username} domain={domain} isSelf={me === account.get('id')} />
{lockedIcon}
</small>
</h1>
</div>

View File

@ -1,12 +1,12 @@
import 'packs/public-path';
import { createRoot } from 'react-dom/client';
import { IntlMessageFormat } from 'intl-messageformat';
import 'packs/public-path';
import { IntlMessageFormat } from 'intl-messageformat';
import { defineMessages } from 'react-intl';
import Rails from '@rails/ujs';
import axios from 'axios';
import { createBrowserHistory } from 'history';
import { throttle } from 'lodash';
import { timeAgoString } from 'flavours/glitch/components/relative_timestamp';
@ -14,6 +14,9 @@ import emojify from 'flavours/glitch/features/emoji/emoji';
import loadKeyboardExtensions from 'flavours/glitch/load_keyboard_extensions';
import { loadLocale, getLocale } from 'flavours/glitch/locales';
import { loadPolyfills } from 'flavours/glitch/polyfills';
import ready from 'flavours/glitch/ready';
import 'cocoon-js-vanilla';
const messages = defineMessages({
usernameTaken: { id: 'username.taken', defaultMessage: 'That username is taken. Try another' },
@ -21,26 +24,9 @@ const messages = defineMessages({
passwordDoesNotMatch: { id: 'password_confirmation.mismatching', defaultMessage: 'Password confirmation does not match' },
});
function main() {
function loaded() {
const { messages: localeData } = getLocale();
const scrollToDetailedStatus = () => {
const history = createBrowserHistory();
const detailedStatuses = document.querySelectorAll('.public-layout .detailed-status');
const location = history.location;
if (detailedStatuses.length === 1 && (!location.state || !location.state.scrolledToDetailedStatus)) {
detailedStatuses[0].scrollIntoView();
history.replace(location.pathname, { ...location.state, scrolledToDetailedStatus: true });
}
};
const getEmojiAnimationHandler = (swapTo) => {
return ({ target }) => {
target.src = target.getAttribute(swapTo);
};
};
const locale = document.documentElement.lang;
const dateTimeFormat = new Intl.DateTimeFormat(locale, {
@ -118,6 +104,7 @@ function main() {
});
const reactComponents = document.querySelectorAll('[data-component]');
if (reactComponents.length > 0) {
import(/* webpackChunkName: "containers/media_container" */ 'flavours/glitch/containers/media_container')
.then(({ default: MediaContainer }) => {
@ -132,27 +119,21 @@ function main() {
const root = createRoot(content);
root.render(<MediaContainer locale={locale} components={reactComponents} />);
document.body.appendChild(content);
scrollToDetailedStatus();
})
.catch(error => {
console.error(error);
scrollToDetailedStatus();
});
} else {
scrollToDetailedStatus();
}
Rails.delegate(document, '#user_account_attributes_username', 'input', throttle(() => {
const username = document.getElementById('user_account_attributes_username');
if (username.value && username.value.length > 0) {
axios.get('/api/v1/accounts/lookup', { params: { acct: username.value } }).then(() => {
username.setCustomValidity(formatMessage(messages.usernameTaken));
Rails.delegate(document, '#user_account_attributes_username', 'input', throttle(({ target }) => {
if (target.value && target.value.length > 0) {
axios.get('/api/v1/accounts/lookup', { params: { acct: target.value } }).then(() => {
target.setCustomValidity(formatMessage(messages.usernameTaken));
}).catch(() => {
username.setCustomValidity('');
target.setCustomValidity('');
});
} else {
username.setCustomValidity('');
target.setCustomValidity('');
}
}, 500, { leading: false, trailing: true }));
@ -170,9 +151,6 @@ function main() {
}
});
Rails.delegate(document, '.custom-emoji', 'mouseover', getEmojiAnimationHandler('data-original'));
Rails.delegate(document, '.custom-emoji', 'mouseout', getEmojiAnimationHandler('data-static'));
Rails.delegate(document, '.status__content__spoiler-link', 'click', function() {
const statusEl = this.parentNode.parentNode;
@ -192,44 +170,51 @@ function main() {
const message = (statusEl.dataset.spoiler === 'expanded') ? (localeData['status.show_less'] || 'Show less') : (localeData['status.show_more'] || 'Show more');
spoilerLink.textContent = (new IntlMessageFormat(message, locale)).format();
});
}
const toggleSidebar = () => {
const sidebar = document.querySelector('.sidebar ul');
const toggleButton = document.querySelector('.sidebar__toggle__icon');
const toggleSidebar = () => {
const sidebar = document.querySelector('.sidebar ul');
const toggleButton = document.querySelector('.sidebar__toggle__icon');
if (sidebar.classList.contains('visible')) {
document.body.style.overflow = null;
toggleButton.setAttribute('aria-expanded', 'false');
} else {
document.body.style.overflow = 'hidden';
toggleButton.setAttribute('aria-expanded', 'true');
}
if (sidebar.classList.contains('visible')) {
document.body.style.overflow = null;
toggleButton.setAttribute('aria-expanded', 'false');
} else {
document.body.style.overflow = 'hidden';
toggleButton.setAttribute('aria-expanded', 'true');
}
toggleButton.classList.toggle('active');
sidebar.classList.toggle('visible');
};
toggleButton.classList.toggle('active');
sidebar.classList.toggle('visible');
};
Rails.delegate(document, '.sidebar__toggle__icon', 'click', () => {
Rails.delegate(document, '.sidebar__toggle__icon', 'click', () => {
toggleSidebar();
});
Rails.delegate(document, '.sidebar__toggle__icon', 'keydown', e => {
if (e.key === ' ' || e.key === 'Enter') {
e.preventDefault();
toggleSidebar();
});
}
});
Rails.delegate(document, '.sidebar__toggle__icon', 'keydown', e => {
if (e.key === ' ' || e.key === 'Enter') {
e.preventDefault();
toggleSidebar();
Rails.delegate(document, '.custom-emoji', 'mouseover', ({ target }) => target.src = target.getAttribute('data-original'));
Rails.delegate(document, '.custom-emoji', 'mouseout', ({ target }) => target.src = target.getAttribute('data-static'));
// Empty the honeypot fields in JS in case something like an extension
// automatically filled them.
Rails.delegate(document, '#registration_new_user,#new_user', 'submit', () => {
['user_website', 'user_confirm_password', 'registration_user_website', 'registration_user_confirm_password'].forEach(id => {
const field = document.getElementById(id);
if (field) {
field.value = '';
}
});
});
// Empty the honeypot fields in JS in case something like an extension
// automatically filled them.
Rails.delegate(document, '#registration_new_user,#new_user', 'submit', () => {
['user_website', 'user_confirm_password', 'registration_user_website', 'registration_user_confirm_password'].forEach(id => {
const field = document.getElementById(id);
if (field) {
field.value = '';
}
});
});
function main() {
ready(loaded);
}
loadPolyfills()

View File

@ -1,42 +0,0 @@
import 'packs/public-path';
import Rails from '@rails/ujs';
import loadKeyboardExtensions from 'flavours/glitch/load_keyboard_extensions';
import { loadPolyfills } from 'flavours/glitch/polyfills';
import 'cocoon-js-vanilla';
function main() {
const toggleSidebar = () => {
const sidebar = document.querySelector('.sidebar ul');
const toggleButton = document.querySelector('.sidebar__toggle__icon');
if (sidebar.classList.contains('visible')) {
document.body.style.overflow = null;
toggleButton.setAttribute('aria-expanded', 'false');
} else {
document.body.style.overflow = 'hidden';
toggleButton.setAttribute('aria-expanded', 'true');
}
toggleButton.classList.toggle('active');
sidebar.classList.toggle('visible');
};
Rails.delegate(document, '.sidebar__toggle__icon', 'click', () => {
toggleSidebar();
});
Rails.delegate(document, '.sidebar__toggle__icon', 'keydown', e => {
if (e.key === ' ' || e.key === 'Enter') {
e.preventDefault();
toggleSidebar();
}
});
}
loadPolyfills()
.then(main)
.then(loadKeyboardExtensions)
.catch(error => {
console.error(error);
});

View File

@ -2004,6 +2004,118 @@ body > [data-popper-placement] {
}
}
&__domain-pill {
display: inline-flex;
background: rgba($highlight-text-color, 0.2);
border-radius: 4px;
border: 0;
color: $highlight-text-color;
font-weight: 500;
font-size: 12px;
line-height: 16px;
padding: 4px 8px;
&.active {
color: $white;
background: $ui-highlight-color;
}
&__popout {
background: var(--dropdown-background-color);
backdrop-filter: var(--background-filter);
border: 1px solid var(--dropdown-border-color);
box-shadow: var(--dropdown-shadow);
max-width: 320px;
padding: 16px;
border-radius: 8px;
display: flex;
flex-direction: column;
gap: 24px;
font-size: 14px;
line-height: 20px;
color: $darker-text-color;
.link-button {
display: inline;
font-size: inherit;
line-height: inherit;
}
&__header {
display: flex;
align-items: center;
gap: 12px;
&__icon {
width: 40px;
height: 40px;
background: $ui-highlight-color;
color: $white;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
flex-shrink: 0;
}
h3 {
font-size: 17px;
line-height: 22px;
color: $primary-text-color;
}
}
&__handle {
border: 2px dashed $highlight-text-color;
background: rgba($highlight-text-color, 0.1);
padding: 12px 8px;
color: $highlight-text-color;
border-radius: 4px;
&__label {
font-size: 11px;
line-height: 16px;
font-weight: 500;
}
&__handle {
user-select: all;
}
}
&__parts {
display: flex;
flex-direction: column;
gap: 8px;
font-size: 12px;
line-height: 16px;
& > div {
display: flex;
align-items: flex-start;
gap: 12px;
}
&__icon {
width: 40px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
color: $highlight-text-color;
}
h6 {
font-size: 14px;
line-height: 20px;
font-weight: 500;
color: $primary-text-color;
}
}
}
}
&__note {
font-size: 14px;
font-weight: 400;
@ -8126,14 +8238,17 @@ noscript {
font-size: 17px;
line-height: 22px;
color: $primary-text-color;
font-weight: 700;
font-weight: 600;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
small {
display: block;
font-size: 15px;
display: flex;
align-items: center;
gap: 4px;
font-size: 14px;
line-height: 20px;
color: $darker-text-color;
font-weight: 400;
overflow: hidden;
@ -8144,10 +8259,8 @@ noscript {
}
.icon-lock {
height: 16px;
width: 16px;
position: relative;
top: 3px;
height: 18px;
width: 18px;
}
}
}

View File

@ -18,7 +18,7 @@ pack:
mailer:
modal:
public: packs/public.jsx
settings: packs/settings.js
settings: packs/public.jsx
sign_up: packs/sign_up.js
share: packs/share.jsx

View File

@ -0,0 +1,86 @@
import PropTypes from 'prop-types';
import { useState, useRef, useCallback } from 'react';
import { FormattedMessage } from 'react-intl';
import classNames from 'classnames';
import Overlay from 'react-overlays/Overlay';
import AlternateEmailIcon from '@/material-icons/400-24px/alternate_email.svg?react';
import BadgeIcon from '@/material-icons/400-24px/badge.svg?react';
import GlobeIcon from '@/material-icons/400-24px/globe.svg?react';
import { Icon } from 'mastodon/components/icon';
export const DomainPill = ({ domain, username, isSelf }) => {
const [open, setOpen] = useState(false);
const [expanded, setExpanded] = useState(false);
const triggerRef = useRef(null);
const handleClick = useCallback(() => {
setOpen(!open);
}, [open, setOpen]);
const handleExpandClick = useCallback(() => {
setExpanded(!expanded);
}, [expanded, setExpanded]);
return (
<>
<button className={classNames('account__domain-pill', { active: open })} ref={triggerRef} onClick={handleClick}>{domain}</button>
<Overlay show={open} rootClose onHide={handleClick} offset={[5, 5]} target={triggerRef}>
{({ props }) => (
<div {...props} className='account__domain-pill__popout dropdown-animation'>
<div className='account__domain-pill__popout__header'>
<div className='account__domain-pill__popout__header__icon'><Icon icon={BadgeIcon} /></div>
<h3><FormattedMessage id='domain_pill.whats_in_a_handle' defaultMessage="What's in a handle?" /></h3>
</div>
<div className='account__domain-pill__popout__handle'>
<div className='account__domain-pill__popout__handle__label'>{isSelf ? <FormattedMessage id='domain_pill.your_handle' defaultMessage='Your handle:' /> : <FormattedMessage id='domain_pill.their_handle' defaultMessage='Their handle:' />}</div>
<div className='account__domain-pill__popout__handle__handle'>@{username}@{domain}</div>
</div>
<div className='account__domain-pill__popout__parts'>
<div>
<div className='account__domain-pill__popout__parts__icon'><Icon icon={AlternateEmailIcon} /></div>
<div>
<h6><FormattedMessage id='domain_pill.username' defaultMessage='Username' /></h6>
<p>{isSelf ? <FormattedMessage id='domain_pill.your_username' defaultMessage='Your unique identifier on this server. Its possible to find users with the same username on different servers.' /> : <FormattedMessage id='domain_pill.their_username' defaultMessage='Their unique identifier on their server. Its possible to find users with the same username on different servers.' />}</p>
</div>
</div>
<div>
<div className='account__domain-pill__popout__parts__icon'><Icon icon={GlobeIcon} /></div>
<div>
<h6><FormattedMessage id='domain_pill.server' defaultMessage='Server' /></h6>
<p>{isSelf ? <FormattedMessage id='domain_pill.your_server' defaultMessage='Your digital home, where all of your posts live. Dont like this one? Transfer servers at any time and bring your followers, too.' /> : <FormattedMessage id='domain_pill.their_server' defaultMessage='Their digital home, where all of their posts live.' />}</p>
</div>
</div>
</div>
<p>{isSelf ? <FormattedMessage id='domain_pill.who_you_are' defaultMessage='Because your handle says who you are and where you are, people can interact with you across the social web of <button>ActivityPub-powered platforms</button>.' values={{ button: x => <button onClick={handleExpandClick} className='link-button'>{x}</button> }} /> : <FormattedMessage id='domain_pill.who_they_are' defaultMessage='Since handles say who someone is and where they are, you can interact with people across the social web of <button>ActivityPub-powered platforms</button>.' values={{ button: x => <button onClick={handleExpandClick} className='link-button'>{x}</button> }} />}</p>
{expanded && (
<>
<p><FormattedMessage id='domain_pill.activitypub_like_language' defaultMessage='ActivityPub is like the language Mastodon speaks with other social networks.' /></p>
<p><FormattedMessage id='domain_pill.activitypub_lets_connect' defaultMessage='It lets you connect and interact with people not just on Mastodon, but across different social apps too.' /></p>
</>
)}
</div>
)}
</Overlay>
</>
);
};
DomainPill.propTypes = {
username: PropTypes.string.isRequired,
domain: PropTypes.string.isRequired,
isSelf: PropTypes.bool,
};

View File

@ -25,13 +25,15 @@ import { IconButton } from 'mastodon/components/icon_button';
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
import { ShortNumber } from 'mastodon/components/short_number';
import DropdownMenuContainer from 'mastodon/containers/dropdown_menu_container';
import { autoPlayGif, me, domain } from 'mastodon/initial_state';
import { autoPlayGif, me, domain as localDomain } from 'mastodon/initial_state';
import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_FEDERATION } from 'mastodon/permissions';
import { WithRouterPropTypes } from 'mastodon/utils/react_router';
import AccountNoteContainer from '../containers/account_note_container';
import FollowRequestNoteContainer from '../containers/follow_request_note_container';
import { DomainPill } from './domain_pill';
const messages = defineMessages({
unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },
follow: { id: 'account.follow', defaultMessage: 'Follow' },
@ -78,7 +80,7 @@ const messages = defineMessages({
const titleFromAccount = account => {
const displayName = account.get('display_name');
const acct = account.get('acct') === account.get('username') ? `${account.get('username')}@${domain}` : account.get('acct');
const acct = account.get('acct') === account.get('username') ? `${account.get('username')}@${localDomain}` : account.get('acct');
const prefix = displayName.trim().length === 0 ? account.get('username') : displayName;
return `${prefix} (@${acct})`;
@ -252,7 +254,7 @@ class Header extends ImmutablePureComponent {
}
render () {
const { account, hidden, intl, domain } = this.props;
const { account, hidden, intl } = this.props;
const { signedIn, permissions } = this.context.identity;
if (!account) {
@ -393,7 +395,8 @@ class Header extends ImmutablePureComponent {
const displayNameHtml = { __html: account.get('display_name_html') };
const fields = account.get('fields');
const isLocal = account.get('acct').indexOf('@') === -1;
const acct = isLocal && domain ? `${account.get('acct')}@${domain}` : account.get('acct');
const username = account.get('acct').split('@')[0];
const domain = isLocal ? localDomain : account.get('acct').split('@')[1];
const isIndexable = !account.get('noindex');
const badges = [];
@ -438,7 +441,9 @@ class Header extends ImmutablePureComponent {
<h1>
<span dangerouslySetInnerHTML={displayNameHtml} />
<small>
<span>@{acct}</span> {lockedIcon}
<span>@{username}<span className='invisible'>@{domain}</span></span>
<DomainPill username={username} domain={domain} isSelf={me === account.get('id')} />
{lockedIcon}
</small>
</h1>
</div>

View File

@ -500,7 +500,6 @@
"status.delete": "Borrar",
"status.detailed_status": "Vista de conversación detallada",
"status.edit": "Editar",
"status.edited": "Editau {date}",
"status.edited_x_times": "Editau {count, plural, one {{count} vez} other {{count} veces}}",
"status.embed": "Incrustado",
"status.filter": "Filtrar esta publicación",

View File

@ -646,7 +646,6 @@
"status.direct": "إشارة خاصة لـ @{name}",
"status.direct_indicator": "إشارة خاصة",
"status.edit": "تعديل",
"status.edited": "عُدّل في {date}",
"status.edited_x_times": "عُدّل {count, plural, zero {} one {مرةً واحدة} two {مرّتان} few {{count} مرات} many {{count} مرة} other {{count} مرة}}",
"status.embed": "إدماج",
"status.favourite": "فضّل",

View File

@ -429,7 +429,6 @@
"status.delete": "Desaniciar",
"status.direct": "Mentar a @{name} per privao",
"status.direct_indicator": "Mención privada",
"status.edited": "Editóse'l {date}",
"status.edited_x_times": "Editóse {count, plural, one {{count} vegada} other {{count} vegaes}}",
"status.embed": "Empotrar",
"status.filter": "Peñerar esti artículu",

View File

@ -662,10 +662,11 @@
"status.direct": "Згадаць асабіста @{name}",
"status.direct_indicator": "Асабістае згадванне",
"status.edit": "Рэдагаваць",
"status.edited": "Адрэдагавана {date}",
"status.edited": "Апошняе рэдагаванне {date}",
"status.edited_x_times": "Рэдагавана {count, plural, one {{count} раз} few {{count} разы} many {{count} разоў} other {{count} разу}}",
"status.embed": "Убудаваць",
"status.favourite": "Упадабанае",
"status.favourites": "{count, plural, one {# упадабанае} few {# упадабаныя} many {# упадабаных} other {# упадабанага}}",
"status.filter": "Фільтраваць гэты допіс",
"status.filtered": "Адфільтравана",
"status.hide": "Схаваць допіс",
@ -686,6 +687,7 @@
"status.reblog": "Пашырыць",
"status.reblog_private": "Пашырыць з першапачатковай бачнасцю",
"status.reblogged_by": "{name} пашырыў(-ла)",
"status.reblogs": "{count, plural, one {# пашырэнне} few {# пашырэнні} many {# пашырэнняў} other {# пашырэння}}",
"status.reblogs.empty": "Гэты допіс яшчэ ніхто не пашырыў. Калі гэта адбудзецца, гэтых людзей будзе бачна тут.",
"status.redraft": "Выдаліць і паправіць",
"status.remove_bookmark": "Выдаліць закладку",

View File

@ -648,7 +648,6 @@
"status.direct": "Частно споменаване на @{name}",
"status.direct_indicator": "Частно споменаване",
"status.edit": "Редактиране",
"status.edited": "Редактирано на {date}",
"status.edited_x_times": "Редактирано {count, plural,one {{count} път} other {{count} пъти}}",
"status.embed": "Вграждане",
"status.favourite": "Любимо",

View File

@ -584,7 +584,7 @@
"status.direct": "Menegiñ @{name} ent-prevez",
"status.direct_indicator": "Meneg prevez",
"status.edit": "Kemmañ",
"status.edited": "Aozet {date}",
"status.edited": "Kemmet da ziwezhañ d'an {date}",
"status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}",
"status.embed": "Enframmañ",
"status.favourite": "Muiañ-karet",

View File

@ -662,7 +662,6 @@
"status.direct": "Menciona privadament @{name}",
"status.direct_indicator": "Menció privada",
"status.edit": "Edita",
"status.edited": "Editat {date}",
"status.edited_x_times": "Editat {count, plural, one {{count} vegada} other {{count} vegades}}",
"status.embed": "Incrusta",
"status.favourite": "Favorit",

View File

@ -559,7 +559,6 @@
"status.direct": "بە شێوەیەکی تایبەت باسی @{name} بکە",
"status.direct_indicator": "ئاماژەی تایبەت",
"status.edit": "دەستکاری",
"status.edited": "بەشداری {date}",
"status.edited_x_times": "دەستکاریکراوە {count, plural, one {{count} کات} other {{count} کات}}",
"status.embed": "نیشتەجێ بکە",
"status.filter": "ئەم پۆستە فلتەر بکە",

View File

@ -646,7 +646,6 @@
"status.direct": "Soukromě zmínit @{name}",
"status.direct_indicator": "Soukromá zmínka",
"status.edit": "Upravit",
"status.edited": "Upraveno {date}",
"status.edited_x_times": "Upraveno {count, plural, one {{count}krát} few {{count}krát} many {{count}krát} other {{count}krát}}",
"status.embed": "Vložit na web",
"status.favourite": "Oblíbit",

View File

@ -661,7 +661,6 @@
"status.direct": "Crybwyll yn breifat @{name}",
"status.direct_indicator": "Crybwyll preifat",
"status.edit": "Golygu",
"status.edited": "Golygwyd {date}",
"status.edited_x_times": "Golygwyd {count, plural, one {count} two {count} other {{count} gwaith}}",
"status.embed": "Mewnblannu",
"status.favourite": "Hoffi",

View File

@ -662,10 +662,11 @@
"status.direct": "Privat omtale @{name}",
"status.direct_indicator": "Privat omtale",
"status.edit": "Redigér",
"status.edited": "Redigeret {date}",
"status.edited": "Senest redigeret {date}",
"status.edited_x_times": "Redigeret {count, plural, one {{count} gang} other {{count} gange}}",
"status.embed": "Indlejr",
"status.favourite": "Favorit",
"status.favourites": "{count, plural, one {# favorit} other {# favoritter}}",
"status.filter": "Filtrér dette indlæg",
"status.filtered": "Filtreret",
"status.hide": "Skjul indlæg",
@ -686,6 +687,7 @@
"status.reblog": "Fremhæv",
"status.reblog_private": "Boost med oprindelig synlighed",
"status.reblogged_by": "{name} fremhævede",
"status.reblogs": "{count, plural, one {# boost} other {# boosts}}",
"status.reblogs.empty": "Ingen har endnu fremhævet dette indlæg. Når nogen gør, vil det fremgå hér.",
"status.redraft": "Slet og omformulér",
"status.remove_bookmark": "Fjern bogmærke",

View File

@ -662,10 +662,11 @@
"status.direct": "@{name} privat erwähnen",
"status.direct_indicator": "Private Erwähnung",
"status.edit": "Beitrag bearbeiten",
"status.edited": "Bearbeitet {date}",
"status.edited": "Zuletzt am {date} bearbeitet",
"status.edited_x_times": "{count, plural, one {{count}-mal} other {{count}-mal}} bearbeitet",
"status.embed": "Beitrag per iFrame einbetten",
"status.favourite": "Favorisieren",
"status.favourites": "{count, plural, one {Favorit} other {Favoriten}}",
"status.filter": "Beitrag filtern",
"status.filtered": "Gefiltert",
"status.hide": "Beitrag ausblenden",
@ -686,6 +687,7 @@
"status.reblog": "Teilen",
"status.reblog_private": "Mit der ursprünglichen Zielgruppe teilen",
"status.reblogged_by": "{name} teilte",
"status.reblogs": "{count, plural, one {geteilt} other {geteilt}}",
"status.reblogs.empty": "Diesen Beitrag hat bisher noch niemand geteilt. Sobald es jemand tut, wird das Profil hier erscheinen.",
"status.redraft": "Löschen und neu erstellen",
"status.remove_bookmark": "Lesezeichen entfernen",

View File

@ -586,7 +586,6 @@
"status.direct": "Ιδιωτική επισήμανση @{name}",
"status.direct_indicator": "Ιδιωτική επισήμανση",
"status.edit": "Επεξεργασία",
"status.edited": "Επεξεργάστηκε στις {date}",
"status.edited_x_times": "Επεξεργάστηκε {count, plural, one {{count} φορά} other {{count} φορές}}",
"status.embed": "Ενσωμάτωσε",
"status.favourite": "Αγαπημένα",

View File

@ -640,7 +640,6 @@
"status.direct": "Privately mention @{name}",
"status.direct_indicator": "Private mention",
"status.edit": "Edit",
"status.edited": "Edited {date}",
"status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
"status.embed": "Embed",
"status.favourite": "Favourite",

View File

@ -205,6 +205,19 @@
"dismissable_banner.explore_statuses": "These are posts from across the social web that are gaining traction today. Newer posts with more boosts and favorites are ranked higher.",
"dismissable_banner.explore_tags": "These are hashtags that are gaining traction on the social web today. Hashtags that are used by more different people are ranked higher.",
"dismissable_banner.public_timeline": "These are the most recent public posts from people on the social web that people on {domain} follow.",
"domain_pill.activitypub_lets_connect": "It lets you connect and interact with people not just on Mastodon, but across different social apps too.",
"domain_pill.activitypub_like_language": "ActivityPub is like the language Mastodon speaks with other social networks.",
"domain_pill.server": "Server",
"domain_pill.their_handle": "Their handle:",
"domain_pill.their_server": "Their digital home, where all of their posts live.",
"domain_pill.their_username": "Their unique identifier on their server. Its possible to find users with the same username on different servers.",
"domain_pill.username": "Username",
"domain_pill.whats_in_a_handle": "What's in a handle?",
"domain_pill.who_they_are": "Since handles say who someone is and where they are, you can interact with people across the social web of <button>ActivityPub-powered platforms</button>.",
"domain_pill.who_you_are": "Because your handle says who you are and where you are, people can interact with you across the social web of <button>ActivityPub-powered platforms</button>.",
"domain_pill.your_handle": "Your handle:",
"domain_pill.your_server": "Your digital home, where all of your posts live. Dont like this one? Transfer servers at any time and bring your followers, too.",
"domain_pill.your_username": "Your unique identifier on this server. Its possible to find users with the same username on different servers.",
"embed.instructions": "Embed this post on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",

View File

@ -617,7 +617,6 @@
"status.direct": "Private mencii @{name}",
"status.direct_indicator": "Privata mencio",
"status.edit": "Redakti",
"status.edited": "Redaktita {date}",
"status.edited_x_times": "Redactita {count, plural, one {{count} fojon} other {{count} fojojn}}",
"status.embed": "Enkorpigi",
"status.favourite": "Ŝatata",

View File

@ -662,10 +662,11 @@
"status.direct": "Mención privada a @{name}",
"status.direct_indicator": "Mención privada",
"status.edit": "Editar",
"status.edited": "Editado {date}",
"status.edited": "Última edición: {date}",
"status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}",
"status.embed": "Insertar",
"status.favourite": "Marcar como favorito",
"status.favourites": "{count, plural, one {# voto} other {# votos}}",
"status.filter": "Filtrar este mensaje",
"status.filtered": "Filtrado",
"status.hide": "Ocultar mensaje",
@ -686,6 +687,7 @@
"status.reblog": "Adherir",
"status.reblog_private": "Adherir a la audiencia original",
"status.reblogged_by": "{name} adhirió",
"status.reblogs": "{count, plural, one {adhesión} other {adhesiones}}",
"status.reblogs.empty": "Todavía nadie adhirió a este mensaje. Cuando alguien lo haga, se mostrará acá.",
"status.redraft": "Eliminar mensaje original y editarlo",
"status.remove_bookmark": "Quitar marcador",

View File

@ -662,10 +662,11 @@
"status.direct": "Mención privada @{name}",
"status.direct_indicator": "Mención privada",
"status.edit": "Editar",
"status.edited": "Editado {date}",
"status.edited": "Última edición {date}",
"status.edited_x_times": "Editado {count, plural, one {{count} time} other {{count} veces}}",
"status.embed": "Incrustado",
"status.favourite": "Favorito",
"status.favourites": "{count, plural, one {favorito} other {favoritos}}",
"status.filter": "Filtrar esta publicación",
"status.filtered": "Filtrado",
"status.hide": "Ocultar toot",
@ -686,6 +687,7 @@
"status.reblog": "Retootear",
"status.reblog_private": "Implusar a la audiencia original",
"status.reblogged_by": "Retooteado por {name}",
"status.reblogs": "{count, plural, one {impulso} other {impulsos}}",
"status.reblogs.empty": "Nadie retooteó este toot todavía. Cuando alguien lo haga, aparecerá aquí.",
"status.redraft": "Borrar y volver a borrador",
"status.remove_bookmark": "Eliminar marcador",

View File

@ -238,11 +238,11 @@
"empty_column.followed_tags": "No has seguido ninguna etiqueta todavía. Cuando lo hagas, se mostrarán aquí.",
"empty_column.hashtag": "No hay nada en este hashtag aún.",
"empty_column.home": "¡Tu línea temporal está vacía! Sigue a más personas para rellenarla.",
"empty_column.list": "No hay nada en esta lista aún. Cuando miembros de esta lista publiquen nuevos estatus, estos aparecerán qui.",
"empty_column.lists": "No tienes ninguna lista. cuando crees una, se mostrará aquí.",
"empty_column.list": "Aún no hay nada en esta lista. Cuando los miembros de esta lista publiquen nuevos estados, estos aparecerán aquí.",
"empty_column.lists": "No tienes ninguna lista. Cuando crees una, se mostrará aquí.",
"empty_column.mutes": "Aún no has silenciado a ningún usuario.",
"empty_column.notification_requests": "¡Todo limpio! No hay nada aquí. Cuando recibas nuevas notificaciones, aparecerán aquí conforme a tu configuración.",
"empty_column.notifications": "No tienes ninguna notificación aún. Interactúa con otros para empezar una conversación.",
"empty_column.notifications": "Aún no tienes ninguna notificación. Cuando otras personas interactúen contigo, aparecerán aquí.",
"empty_column.public": "¡No hay nada aquí! Escribe algo públicamente, o sigue usuarios de otras instancias manualmente para llenarlo",
"error.unexpected_crash.explanation": "Debido a un error en nuestro código o a un problema de compatibilidad con el navegador, esta página no se ha podido mostrar correctamente.",
"error.unexpected_crash.explanation_addons": "No se pudo mostrar correctamente esta página. Este error probablemente fue causado por un complemento del navegador web o por herramientas de traducción automática.",
@ -258,7 +258,7 @@
"explore.trending_tags": "Etiquetas",
"filter_modal.added.context_mismatch_explanation": "Esta categoría de filtro no se aplica al contexto en el que ha accedido a esta publlicación. Si quieres que la publicación sea filtrada también en este contexto, tendrás que editar el filtro.",
"filter_modal.added.context_mismatch_title": "¡El contexto no coincide!",
"filter_modal.added.expired_explanation": "Esta categoría de filtro ha caducado, necesitará cambiar la fecha de caducidad para que se aplique.",
"filter_modal.added.expired_explanation": "Esta categoría de filtro ha caducado, tendrás que cambiar la fecha de caducidad para que se aplique.",
"filter_modal.added.expired_title": "¡Filtro caducado!",
"filter_modal.added.review_and_configure": "Para revisar y configurar esta categoría de filtros, vaya a {settings_link}.",
"filter_modal.added.review_and_configure_title": "Ajustes de filtro",
@ -662,10 +662,11 @@
"status.direct": "Mención privada @{name}",
"status.direct_indicator": "Mención privada",
"status.edit": "Editar",
"status.edited": "Editado {date}",
"status.edited": "Última edición {date}",
"status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}",
"status.embed": "Incrustado",
"status.favourite": "Favorito",
"status.favourites": "{count, plural, one {favorito} other {favoritos}}",
"status.filter": "Filtrar esta publicación",
"status.filtered": "Filtrado",
"status.hide": "Ocultar publicación",
@ -686,6 +687,7 @@
"status.reblog": "Impulsar",
"status.reblog_private": "Impulsar a la audiencia original",
"status.reblogged_by": "Impulsado por {name}",
"status.reblogs": "{count, plural, one {impulso} other {impulsos}}",
"status.reblogs.empty": "Nadie ha impulsado esta publicación todavía. Cuando alguien lo haga, aparecerá aquí.",
"status.redraft": "Borrar y volver a borrador",
"status.remove_bookmark": "Eliminar marcador",

View File

@ -647,7 +647,6 @@
"status.direct": "Maini privaatselt @{name}",
"status.direct_indicator": "Privaatne mainimine",
"status.edit": "Muuda",
"status.edited": "{date} muudetud",
"status.edited_x_times": "Muudetud {count, plural, one{{count} kord} other {{count} korda}}",
"status.embed": "Manustamine",
"status.favourite": "Lemmik",

View File

@ -662,10 +662,11 @@
"status.direct": "Aipatu pribatuki @{name}",
"status.direct_indicator": "Aipamen pribatua",
"status.edit": "Editatu",
"status.edited": "Editatua {date}",
"status.edited": "Azken edizioa: {date}",
"status.edited_x_times": "{count, plural, one {behin} other {{count} aldiz}} editatua",
"status.embed": "Txertatu",
"status.favourite": "Gogokoa",
"status.favourites": "{count, plural, one {gogoko} other {gogoko}}",
"status.filter": "Iragazi bidalketa hau",
"status.filtered": "Iragazita",
"status.hide": "Tuta ezkutatu",
@ -686,6 +687,7 @@
"status.reblog": "Bultzada",
"status.reblog_private": "Bultzada jatorrizko hartzaileei",
"status.reblogged_by": "{name}(r)en bultzada",
"status.reblogs": "{count, plural, one {bultzada} other {bultzada}}",
"status.reblogs.empty": "Inork ez dio bultzada eman bidalketa honi oraindik. Inork egiten badu, hemen agertuko da.",
"status.redraft": "Ezabatu eta berridatzi",
"status.remove_bookmark": "Kendu laster-marka",

View File

@ -646,7 +646,6 @@
"status.direct": "اشارهٔ خصوصی به @{name}",
"status.direct_indicator": "اشارهٔ خصوصی",
"status.edit": "ویرایش",
"status.edited": "ویرایش شده در {date}",
"status.edited_x_times": "{count, plural, one {{count} مرتبه} other {{count} مرتبه}} ویرایش شد",
"status.embed": "جاسازی",
"status.favourite": "برگزیده‌",

View File

@ -483,7 +483,7 @@
"notifications.policy.filter_not_followers_title": "Henkilöt, jotka eivät seuraa sinua",
"notifications.policy.filter_not_following_hint": "Kunnes hyväksyt ne manuaalisesti",
"notifications.policy.filter_not_following_title": "Henkilöt, joita et seuraa",
"notifications.policy.filter_private_mentions_hint": "Suodatetaan, ellei se vastaa omaan mainintaan tai jos seuraat lähettäjää",
"notifications.policy.filter_private_mentions_hint": "Suodatetaan, ellei se vastaa omaan mainintaasi tai ellet seuraa lähettäjää",
"notifications.policy.filter_private_mentions_title": "Ei-toivotut yksityismaininnat",
"notifications.policy.title": "Suodata ilmoitukset pois kohteesta…",
"notifications_permission_banner.enable": "Ota työpöytäilmoitukset käyttöön",
@ -662,10 +662,11 @@
"status.direct": "Mainitse @{name} yksityisesti",
"status.direct_indicator": "Yksityinen maininta",
"status.edit": "Muokkaa",
"status.edited": "Muokattu {date}",
"status.edited": "Viimeksi muokattu {date}",
"status.edited_x_times": "Muokattu {count, plural, one {{count} kerran} other {{count} kertaa}}",
"status.embed": "Upota",
"status.favourite": "Suosikki",
"status.favourites": "{count, plural, one {suosikki} other {suosikkia}}",
"status.filter": "Suodata tämä julkaisu",
"status.filtered": "Suodatettu",
"status.hide": "Piilota julkaisu",
@ -686,6 +687,7 @@
"status.reblog": "Tehosta",
"status.reblog_private": "Tehosta alkuperäiselle yleisölle",
"status.reblogged_by": "{name} tehosti",
"status.reblogs": "{count, plural, one {tehostus} other {tehostusta}}",
"status.reblogs.empty": "Kukaan ei ole vielä tehostanut tätä julkaisua. Kun joku tekee niin, tulee hän tähän näkyviin.",
"status.redraft": "Poista ja palauta muokattavaksi",
"status.remove_bookmark": "Poista kirjanmerkki",

View File

@ -273,7 +273,6 @@
"status.direct": "Palihim na banggitin si/ang @{name}",
"status.direct_indicator": "Palihim na banggit",
"status.edit": "Baguhin",
"status.edited": "Binago noong {date}",
"status.edited_x_times": "Binago {count, plural, one {{count} beses} other {{count} na beses}}",
"status.history.created": "Nilikha ni/ng {name} {date}",
"status.history.edited": "Binago ni/ng {name} {date}",

View File

@ -662,10 +662,11 @@
"status.direct": "Umrøð @{name} privat",
"status.direct_indicator": "Privat umrøða",
"status.edit": "Rætta",
"status.edited": "Rættað {date}",
"status.edited": "Seinast broytt {date}",
"status.edited_x_times": "Rættað {count, plural, one {{count} ferð} other {{count} ferð}}",
"status.embed": "Legg inní",
"status.favourite": "Dámdur postur",
"status.favourites": "{count, plural, one {yndispostur} other {yndispostar}}",
"status.filter": "Filtrera hendan postin",
"status.filtered": "Filtrerað",
"status.hide": "Fjal post",
@ -686,6 +687,7 @@
"status.reblog": "Stimbra",
"status.reblog_private": "Stimbra við upprunasýni",
"status.reblogged_by": "{name} stimbrað",
"status.reblogs": "{count, plural, one {stimbran} other {stimbranir}}",
"status.reblogs.empty": "Eingin hevur stimbrað hendan postin enn. Tá onkur stimbrar postin, verður hann sjónligur her.",
"status.redraft": "Strika & ger nýggja kladdu",
"status.remove_bookmark": "Gloym",

View File

@ -646,7 +646,6 @@
"status.direct": "Mention privée @{name}",
"status.direct_indicator": "Mention privée",
"status.edit": "Modifier",
"status.edited": "Modifiée le {date}",
"status.edited_x_times": "Modifiée {count, plural, one {{count} fois} other {{count} fois}}",
"status.embed": "Intégrer",
"status.favourite": "Ajouter aux favoris",

View File

@ -646,7 +646,6 @@
"status.direct": "Mention privée @{name}",
"status.direct_indicator": "Mention privée",
"status.edit": "Modifier",
"status.edited": "Modifié le {date}",
"status.edited_x_times": "Modifié {count, plural, one {{count} fois} other {{count} fois}}",
"status.embed": "Intégrer",
"status.favourite": "Ajouter aux favoris",

View File

@ -646,7 +646,6 @@
"status.direct": "Privee fermelde @{name}",
"status.direct_indicator": "Priveefermelding",
"status.edit": "Bewurkje",
"status.edited": "Bewurke op {date}",
"status.edited_x_times": "{count, plural, one {{count} kear} other {{count} kearen}} bewurke",
"status.embed": "Ynslute",
"status.favourite": "Favoryt",

View File

@ -458,7 +458,6 @@
"status.copy": "Copy link to status",
"status.delete": "Scrios",
"status.edit": "Cuir in eagar",
"status.edited": "Curtha in eagar in {date}",
"status.edited_x_times": "Curtha in eagar {count, plural, one {{count} uair amháin} two {{count} uair} few {{count} uair} many {{count} uair} other {{count} uair}}",
"status.embed": "Leabaigh",
"status.filter": "Déan scagadh ar an bpostáil seo",

View File

@ -646,7 +646,6 @@
"status.direct": "Thoir iomradh air @{name} gu prìobhaideach",
"status.direct_indicator": "Iomradh prìobhaideach",
"status.edit": "Deasaich",
"status.edited": "Air a dheasachadh {date}",
"status.edited_x_times": "Chaidh a dheasachadh {count, plural, one {{counter} turas} two {{counter} thuras} few {{counter} tursan} other {{counter} turas}}",
"status.embed": "Leabaich",
"status.favourite": "Cuir ris na h-annsachdan",

View File

@ -662,10 +662,11 @@
"status.direct": "Mencionar de xeito privado a @{name}",
"status.direct_indicator": "Mención privada",
"status.edit": "Editar",
"status.edited": "Editado {date}",
"status.edited": "Última edición {date}",
"status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}",
"status.embed": "Incrustar",
"status.favourite": "Favorecer",
"status.favourites": "{count, plural, one {favorecemento} other {favorecementos}}",
"status.filter": "Filtrar esta publicación",
"status.filtered": "Filtrado",
"status.hide": "Agochar publicación",
@ -686,6 +687,7 @@
"status.reblog": "Promover",
"status.reblog_private": "Compartir coa audiencia orixinal",
"status.reblogged_by": "{name} promoveu",
"status.reblogs": "{count, plural, one {promoción} other {promocións}}",
"status.reblogs.empty": "Aínda ninguén promoveu esta publicación. Cando alguén o faga, amosarase aquí.",
"status.redraft": "Eliminar e reescribir",
"status.remove_bookmark": "Eliminar marcador",

View File

@ -662,10 +662,11 @@
"status.direct": "הודעה פרטית אל @{name}",
"status.direct_indicator": "הודעה פרטית",
"status.edit": "עריכה",
"status.edited": "נערך ב{date}",
"status.edited": "נערך לאחרונה {date}",
"status.edited_x_times": "נערך {count, plural, one {פעם {count}} other {{count} פעמים}}",
"status.embed": "הטמעה",
"status.favourite": "חיבוב",
"status.favourites": "{count, plural, one {חיבוב אחד} two {זוג חיבובים} other {# חיבובים}}",
"status.filter": "סנן הודעה זו",
"status.filtered": "סונן",
"status.hide": "הסתרת חיצרוץ",
@ -686,6 +687,7 @@
"status.reblog": "הדהוד",
"status.reblog_private": "להדהד ברמת הנראות המקורית",
"status.reblogged_by": "{name} הידהד/ה:",
"status.reblogs": "{count, plural, one {הדהוד אחד} two {שני הדהודים} other {# הדהודים}}",
"status.reblogs.empty": "עוד לא הידהדו את ההודעה הזו. כאשר זה יקרה, ההדהודים יופיעו כאן.",
"status.redraft": "מחיקה ועריכה מחדש",
"status.remove_bookmark": "הסרת סימניה",

View File

@ -475,7 +475,6 @@
"status.copy": "Copy link to status",
"status.delete": "Obriši",
"status.edit": "Uredi",
"status.edited": "Uređeno {date}",
"status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}",
"status.embed": "Umetni",
"status.filter": "Filtriraj ovu objavu",

View File

@ -662,10 +662,11 @@
"status.direct": "@{name} személyes említése",
"status.direct_indicator": "Személyes említés",
"status.edit": "Szerkesztés",
"status.edited": "Szerkesztve: {date}",
"status.edited": "Utoljára szerkesztve {date}",
"status.edited_x_times": "{count, plural, one {{count} alkalommal} other {{count} alkalommal}} szerkesztve",
"status.embed": "Beágyazás",
"status.favourite": "Kedvenc",
"status.favourites": "{count, plural, one {kedvenc} other {kedvenc}}",
"status.filter": "E bejegyzés szűrése",
"status.filtered": "Megszűrt",
"status.hide": "Bejegyzés elrejtése",
@ -686,6 +687,7 @@
"status.reblog": "Megtolás",
"status.reblog_private": "Megtolás az eredeti közönségnek",
"status.reblogged_by": "{name} megtolta",
"status.reblogs": "{count, plural, one {megtolás} other {megtolás}}",
"status.reblogs.empty": "Senki sem tolta még meg ezt a bejegyzést. Ha valaki megteszi, itt fog megjelenni.",
"status.redraft": "Törlés és újraírás",
"status.remove_bookmark": "Könyvjelző eltávolítása",

View File

@ -467,7 +467,6 @@
"status.direct": "Մասնաւոր յիշատակում @{name}",
"status.direct_indicator": "Մասնաւոր յիշատակում",
"status.edit": "Խմբագրել",
"status.edited": "Խմբագրուել է՝ {date}",
"status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}",
"status.embed": "Ներդնել",
"status.favourite": "Հավանել",

View File

@ -366,7 +366,6 @@
"status.direct": "Mentionar privatemente a @{name}",
"status.direct_indicator": "Mention private",
"status.edit": "Modificar",
"status.edited": "Modificate le {date}",
"status.edited_x_times": "Modificate {count, plural, one {{count} tempore} other {{count} tempores}}",
"status.favourite": "Adder al favoritos",
"status.filter": "Filtrar iste message",

View File

@ -523,7 +523,6 @@
"status.delete": "Hapus",
"status.detailed_status": "Tampilan detail percakapan",
"status.edit": "Edit",
"status.edited": "Diedit {date}",
"status.edited_x_times": "Diedit {count, plural, other {{count} kali}}",
"status.embed": "Tanam",
"status.filter": "Saring kiriman ini",

View File

@ -646,7 +646,6 @@
"status.direct": "Privatmen mentionar @{name}",
"status.direct_indicator": "Privat mention",
"status.edit": "Modificar",
"status.edited": "Modificat ye {date}",
"status.edited_x_times": "Modificat {count, plural, one {{count} vez} other {{count} vezes}}",
"status.embed": "Inbedar",
"status.favourite": "Favoritisar",

View File

@ -610,7 +610,6 @@
"status.direct": "Private mencionez @{name}",
"status.direct_indicator": "Privata menciono",
"status.edit": "Modifikez",
"status.edited": "Modifikesis ye {date}",
"status.edited_x_times": "Modifikesis {count, plural, one {{count} foyo} other {{count} foyi}}",
"status.embed": "Eninsertez",
"status.favourite": "Favorizar",

View File

@ -662,10 +662,11 @@
"status.direct": "Einkaspjall við @{name}",
"status.direct_indicator": "Einkaspjall",
"status.edit": "Breyta",
"status.edited": "Breytt {date}",
"status.edited": "Síðast breytt {date}",
"status.edited_x_times": "Breytt {count, plural, one {{count} sinni} other {{count} sinnum}}",
"status.embed": "Ívefja",
"status.favourite": "Eftirlæti",
"status.favourites": "{count, plural, one {eftirlæti} other {eftirlæti}}",
"status.filter": "Sía þessa færslu",
"status.filtered": "Síað",
"status.hide": "Fela færslu",
@ -686,6 +687,7 @@
"status.reblog": "Endurbirting",
"status.reblog_private": "Endurbirta til upphaflegra lesenda",
"status.reblogged_by": "{name} endurbirti",
"status.reblogs": "{count, plural, one {endurbirting} other {endurbirtingar}}",
"status.reblogs.empty": "Enginn hefur ennþá endurbirt þessa færslu. Þegar einhver gerir það, mun það birtast hér.",
"status.redraft": "Eyða og endurvinna drög",
"status.remove_bookmark": "Fjarlægja bókamerki",

View File

@ -662,10 +662,11 @@
"status.direct": "Menziona privatamente @{name}",
"status.direct_indicator": "Menzione privata",
"status.edit": "Modifica",
"status.edited": "Modificato il {date}",
"status.edited": "Ultima modifica {date}",
"status.edited_x_times": "Modificato {count, plural, one {{count} volta} other {{count} volte}}",
"status.embed": "Incorpora",
"status.favourite": "Preferito",
"status.favourites": "{count, plural, one {preferito} other {preferiti}}",
"status.filter": "Filtra questo post",
"status.filtered": "Filtrato",
"status.hide": "Nascondi il post",
@ -686,6 +687,7 @@
"status.reblog": "Reblog",
"status.reblog_private": "Reblog con visibilità originale",
"status.reblogged_by": "Rebloggato da {name}",
"status.reblogs": "{count, plural, one {boost} other {boost}}",
"status.reblogs.empty": "Ancora nessuno ha rebloggato questo post. Quando qualcuno lo farà, apparirà qui.",
"status.redraft": "Elimina e riscrivi",
"status.remove_bookmark": "Rimuovi segnalibro",

View File

@ -241,6 +241,7 @@
"empty_column.list": "このリストにはまだなにもありません。このリストのメンバーが新しい投稿をするとここに表示されます。",
"empty_column.lists": "まだリストがありません。リストを作るとここに表示されます。",
"empty_column.mutes": "まだ誰もミュートしていません。",
"empty_column.notification_requests": "ここに表示するものはありません。新しい通知を受け取ったとき、フィルタリング設定で通知がブロックされたアカウントがある場合はここに表示されます。",
"empty_column.notifications": "まだ通知がありません。他の人とふれ合って会話を始めましょう。",
"empty_column.public": "ここにはまだ何もありません! 公開で何かを投稿したり、他のサーバーのユーザーをフォローしたりしていっぱいにしましょう",
"error.unexpected_crash.explanation": "不具合かブラウザの互換性問題のため、このページを正しく表示できませんでした。",
@ -271,6 +272,8 @@
"filter_modal.select_filter.subtitle": "既存のカテゴリーを使用するか新規作成します",
"filter_modal.select_filter.title": "この投稿をフィルターする",
"filter_modal.title.status": "投稿をフィルターする",
"filtered_notifications_banner.pending_requests": "{count, plural, =0 {アカウント} other {#アカウント}}からの通知がブロックされています",
"filtered_notifications_banner.title": "ブロック済みの通知",
"firehose.all": "すべて",
"firehose.local": "このサーバー",
"firehose.remote": "ほかのサーバー",
@ -439,6 +442,10 @@
"notification.reblog": "{name}さんがあなたの投稿をブーストしました",
"notification.status": "{name}さんが投稿しました",
"notification.update": "{name}さんが投稿を編集しました",
"notification_requests.accept": "受け入れる",
"notification_requests.dismiss": "無視",
"notification_requests.notifications_from": "{name}からの通知",
"notification_requests.title": "ブロック済みの通知",
"notifications.clear": "通知を消去",
"notifications.clear_confirmation": "本当に通知を消去しますか?",
"notifications.column_settings.admin.report": "新しい通報:",
@ -470,6 +477,15 @@
"notifications.permission_denied": "ブラウザの通知が拒否されているためデスクトップ通知は利用できません",
"notifications.permission_denied_alert": "ブラウザの通知が拒否されているためデスクトップ通知を有効にできません",
"notifications.permission_required": "必要な権限が付与されていないため、デスクトップ通知は利用できません。",
"notifications.policy.filter_new_accounts.hint": "作成から{days, plural, other {#日}}以内のアカウントからの通知がブロックされます",
"notifications.policy.filter_new_accounts_title": "新しいアカウントからの通知をブロックする",
"notifications.policy.filter_not_followers_hint": "フォローされていても、フォローから{days, plural, other {#日}}経っていない場合はブロックされます",
"notifications.policy.filter_not_followers_title": "フォローされていないアカウントからの通知をブロックする",
"notifications.policy.filter_not_following_hint": "手動で受け入れたアカウントはブロックされません",
"notifications.policy.filter_not_following_title": "フォローしていないアカウントからの通知をブロックする",
"notifications.policy.filter_private_mentions_hint": "あなたがメンションした相手からの返信、およびフォローしているアカウントからの返信以外がブロックされます",
"notifications.policy.filter_private_mentions_title": "外部からの非公開の返信をブロックする",
"notifications.policy.title": "通知のフィルタリング",
"notifications_permission_banner.enable": "デスクトップ通知を有効にする",
"notifications_permission_banner.how_to_control": "Mastodonを閉じている間でも通知を受信するにはデスクトップ通知を有効にしてください。有効にすると上の {icon} ボタンから通知の内容を細かくカスタマイズできます。",
"notifications_permission_banner.title": "お見逃しなく",
@ -646,7 +662,6 @@
"status.direct": "@{name}さんに非公開で投稿",
"status.direct_indicator": "非公開の返信",
"status.edit": "編集",
"status.edited": "{date}に編集",
"status.edited_x_times": "{count}回編集",
"status.embed": "埋め込み",
"status.favourite": "お気に入り",

View File

@ -48,7 +48,7 @@
"account.posts_with_replies": "Tisuffaɣ d tririyin",
"account.report": "Cetki ɣef @{name}",
"account.requested": "Di laɛḍil ad yettwaqbel. Ssit i wakken ad yefsex usuter n uḍfar",
"account.requested_follow": "{name} yessuter ad k-yeḍfer",
"account.requested_follow": "{name} yessuter ad k·m-yeḍfer",
"account.share": "Bḍu amaɣnu n @{name}",
"account.show_reblogs": "Ssken-d inebḍa n @{name}",
"account.statuses_counter": "{count, plural, one {{counter} n tsuffeɣt} other {{counter} n tsuffaɣ}}",
@ -190,13 +190,13 @@
"empty_column.bookmarked_statuses": "Ulac kra n tsuffeɣt i terniḍ ɣer yismenyifen-ik·im ar tura. Ticki terniḍ yiwet, ad d-tettwasken da.",
"empty_column.community": "Tasuddemt tazayezt tadigant n yisallen d tilemt. Aru ihi kra akken ad tt-teččareḍ!",
"empty_column.domain_blocks": "Ulac kra n taɣult yettwaffren ar tura.",
"empty_column.follow_requests": "Ulac ɣur-k ula yiwen n usuter n teḍfeṛt. Ticki teṭṭfeḍ-d yiwen ad d-yettwasken da.",
"empty_column.follow_requests": "Ulac ɣur-k·m ula yiwen n usuter n teḍfeṛt. Ticki teṭṭfeḍ-d yiwen ad d-yettwasken da.",
"empty_column.hashtag": "Ar tura ulac kra n ugbur yesɛan assaɣ ɣer uhacṭag-agi.",
"empty_column.home": "Tasuddemt tagejdant n yisallen d tilemt! Ẓer {public} neɣ nadi ad tafeḍ imseqdacen-nniḍen ad ten-ḍefṛeḍ.",
"empty_column.list": "Ar tura ur yelli kra deg umuɣ-a. Ad d-yettwasken da ticki iɛeggalen n wumuɣ-a suffɣen-d kra.",
"empty_column.lists": "Ulac ɣur-k kra n wumuɣ yakan. Ad d-tettwasken da ticki tesluleḍ-d yiwet.",
"empty_column.mutes": "Ulac ɣur-k imseqdacen i yettwasgugmen.",
"empty_column.notifications": "Ulac ɣur-k tilɣa. Sedmer akked yemdanen-nniḍen akken ad tebduḍ adiwenni.",
"empty_column.lists": "Ulac ɣur-k·m kra n wumuɣ yakan. Ad d-tettwasken da ticki tesluleḍ-d yiwet.",
"empty_column.mutes": "Ulac ɣur-k·m imseqdacen i yettwasgugmen.",
"empty_column.notifications": "Ulac ɣur-k·m tilɣa. Sedmer akked yemdanen-nniḍen akken ad tebduḍ adiwenni.",
"empty_column.public": "Ulac kra da! Aru kra, neɣ ḍfeṛ imdanen i yellan deg yiqeddacen-nniḍen akken ad d-teččar tsuddemt tazayezt",
"error.unexpected_crash.next_steps": "Smiren asebter-a, ma ur yekkis ara wugur, ẓer d akken tzemreḍ ad tesqedceḍ Maṣṭudun deg yiminig-nniḍen neɣ deg usnas anaṣli.",
"errors.unexpected_crash.copy_stacktrace": "Nɣel stacktrace ɣef wafus",
@ -209,6 +209,7 @@
"explore.trending_tags": "Ihacṭagen",
"filter_modal.added.review_and_configure_title": "Iɣewwaṛen n imzizdig",
"filter_modal.added.settings_link": "asebter n yiɣewwaṛen",
"filter_modal.select_filter.expired": "yemmut",
"filter_modal.select_filter.prompt_new": "Taggayt tamaynutt : {name}",
"filter_modal.select_filter.search": "Nadi neɣ snulfu-d",
"firehose.all": "Akk",
@ -217,6 +218,7 @@
"follow_request.authorize": "Ssireg",
"follow_request.reject": "Agi",
"follow_suggestions.dismiss": "Ur ttɛawad ara ad t-id-sekneṭ",
"follow_suggestions.view_all": "Wali-ten akk",
"follow_suggestions.who_to_follow": "Menhu ara ḍefṛeḍ",
"followed_tags": "Ihacṭagen yettwaḍfaren",
"footer.about": "Ɣef",
@ -259,6 +261,7 @@
"interaction_modal.sign_in": "Ur tekcimeḍ ara ɣer uqeddac-a. Anda yella umiḍan-ik·im ?",
"interaction_modal.sign_in_hint": "Ihi : Wa d asmel ideg tjerdeḍ. Ma ur tecfiḍ ara, nadi imayl n ummager deg tenkult-ik·im. Tzemreḍ daɣen ad d-tefkeḍ isem-ik·im n useqdac ummid ! (amedya @Mastodon@mastodon.social)",
"interaction_modal.title.follow": "Ḍfer {name}",
"interaction_modal.title.reply": "Tiririt i tsuffeɣt n {name}",
"intervals.full.days": "{number, plural, one {# n wass} other {# n wussan}}",
"intervals.full.hours": "{number, plural, one {# n usarag} other {# n yesragen}}",
"intervals.full.minutes": "{number, plural, one {# n tesdat} other {# n tesdatin}}",
@ -271,6 +274,7 @@
"keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "i kennu ɣer wadda n tebdart",
"keyboard_shortcuts.enter": "i tildin n tsuffeɣt",
"keyboard_shortcuts.favourites": "Ldi tabdert n yismenyifen",
"keyboard_shortcuts.federated": "i tildin n tsuddemt tamatut n yisallen",
"keyboard_shortcuts.heading": "Inegzumen n unasiw",
"keyboard_shortcuts.home": "i tildin n tsuddemt tagejdant n yisallen",
@ -299,6 +303,7 @@
"lightbox.expand": "Simeɣer tamnaḍt n uskan n tugna",
"lightbox.next": "Ɣer zdat",
"lightbox.previous": "Ɣer deffir",
"limited_account_hint.action": "Wali amaɣnu akken yebɣu yili",
"link_preview.author": "S-ɣur {name}",
"lists.account.add": "Rnu ɣer tebdart",
"lists.account.remove": "Kkes seg tebdart",
@ -344,12 +349,15 @@
"navigation_bar.security": "Taɣellist",
"not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
"notification.follow": "iṭṭafar-ik·em-id {name}",
"notification.follow_request": "{name} yessuter-d ad k-yeḍfeṛ",
"notification.follow_request": "{name} yessuter-d ad k·m-yeḍfeṛ",
"notification.mention": "{name} yebder-ik-id",
"notification.own_poll": "Tafrant-ik·im tfuk",
"notification.poll": "Tfukk tefrant ideg tettekkaḍ",
"notification.reblog": "{name} yebḍa tajewwiqt-ik i tikelt-nniḍen",
"notification.status": "{name} akken i d-yessufeɣ",
"notification_requests.accept": "Qbel",
"notification_requests.dismiss": "Agi",
"notification_requests.notifications_from": "Ilɣa sɣur {name}",
"notifications.clear": "Sfeḍ tilɣa",
"notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk tilɣa-inek·em i lebda?",
"notifications.column_settings.alert": "Tilɣa n tnarit",
@ -374,6 +382,14 @@
"notifications.group": "{count} n tilɣa",
"notifications.mark_as_read": "Creḍ meṛṛa iilɣa am wakken ttwaɣran",
"notifications.permission_denied": "D awezɣi ad yili wermad n yilɣa n tnarit axateṛ turagt tettwagdel.",
"notifications.policy.filter_new_accounts.hint": "Imiḍanen imaynuten i d-yennulfan deg {days, plural, one {yiwen n wass} other {# n wussan}} yezrin",
"notifications.policy.filter_new_accounts_title": "Imiḍan imaynuten",
"notifications.policy.filter_not_followers_hint": "Ula d wid akked tid i k·m-id-iḍefren, ur wwiḍen ara {days, plural, one {yiwen n wass} other {# n wussan}}",
"notifications.policy.filter_not_followers_title": "Wid akked tid ur k·m-id-yeṭṭafaren ara",
"notifications.policy.filter_not_following_hint": "Alamma tqebleḍ-ten s ufus",
"notifications.policy.filter_not_following_title": "Wid akked tid ur tettḍafareḍ ara",
"notifications.policy.filter_private_mentions_title": "Abdar uslig ur yettwasferken ara",
"notifications.policy.title": "Sizdeg ilɣa seg …",
"notifications_permission_banner.enable": "Rmed talɣutin n tnarit",
"notifications_permission_banner.title": "Ur zeggel acemma",
"onboarding.action.back": "Tuɣalin ɣer deffir",
@ -384,6 +400,7 @@
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
"onboarding.profile.display_name": "Isem ara d-yettwaskanen",
"onboarding.profile.note": "Tameddurt",
"onboarding.profile.note_hint": "Tzemreḍ ad d-@tbedreḍ imdanen niḍen neɣ #ihacṭagen …",
"onboarding.profile.save_and_continue": "Sekles, tkemmleḍ",
"onboarding.profile.title": "Asbadu n umaɣnu",
@ -414,15 +431,16 @@
"poll_button.add_poll": "Rnu asenqed",
"poll_button.remove_poll": "Kkes asenqed",
"privacy.change": "Seggem tabaḍnit n yizen",
"privacy.direct.long": "Wid akk i d-yettwabdaren deg tuffeɣt",
"privacy.direct.short": "Imdanen ulmisen",
"privacy.private.long": "Ala wid i k-yeṭṭafaṛen",
"privacy.direct.long": "Wid akk i d-yettwabdaren deg tsuffeɣt",
"privacy.direct.short": "Imdanen yettwafernen",
"privacy.private.long": "Ala wid i k·m-yeṭṭafaṛen",
"privacy.private.short": "Imeḍfaren",
"privacy.public.long": "Kra n win yellan deg Masṭudun neɣ berra-s",
"privacy.public.short": "Azayez",
"privacy.unlisted.long": "Kra kan n ilguritmen",
"privacy_policy.last_updated": "Aleqqem aneggaru {date}",
"privacy_policy.title": "Tasertit tabaḍnit",
"recommended": "Yettuwelleh",
"refresh": "Smiren",
"regeneration_indicator.label": "Yessalay-d…",
"regeneration_indicator.sublabel": "Tasuddemt tagejdant ara d-tettwaheggay!",
@ -487,7 +505,6 @@
"status.copy": "Nɣel assaɣ ɣer tasuffeɣt",
"status.delete": "Kkes",
"status.edit": "Ẓreg",
"status.edited": "Tettwaẓreg deg {date}",
"status.edited_x_times": "Tettwaẓreg {count, plural, one {{count} n tikkelt} other {{count} n tikkal}}",
"status.embed": "Seddu",
"status.filtered": "Yettwasizdeg",
@ -507,6 +524,7 @@
"status.reblogs.empty": "Ula yiwen ur yebḍi tajewwiqt-agi ar tura. Ticki yebḍa-tt yiwen, ad d-iban da.",
"status.redraft": "Kkes tɛiwdeḍ tira",
"status.remove_bookmark": "Kkes tacreḍt",
"status.replied_to": "Y·terra-yas i {name}",
"status.reply": "Err",
"status.replyAll": "Err i lxiḍ",
"status.report": "Cetki ɣef @{name}",

View File

@ -660,7 +660,6 @@
"status.direct": "@{name} 님에게 개인적으로 멘션",
"status.direct_indicator": "개인적인 멘션",
"status.edit": "수정",
"status.edited": "{date}에 수정함",
"status.edited_x_times": "{count}번 수정됨",
"status.embed": "임베드",
"status.favourite": "좋아요",

View File

@ -518,7 +518,6 @@
"status.direct": "Bi taybetî qale @{name} bike",
"status.direct_indicator": "Qalkirinê taybet",
"status.edit": "Serrast bike",
"status.edited": "Di {date} de hate serrastkirin",
"status.edited_x_times": "{count, plural, one {{count} car} other {{count} car}} hate serrastkirin",
"status.embed": "Bi cih bike",
"status.filter": "Vê şandiyê parzûn bike",

View File

@ -139,7 +139,6 @@
"status.copy": "Copy link to status",
"status.delete": "Oblitterare",
"status.edit": "Recolere",
"status.edited": "Recultum {date}",
"status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}",
"status.open": "Expand this status",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",

View File

@ -659,7 +659,6 @@
"status.direct": "Enmenta a @{name} en privado",
"status.direct_indicator": "Enmentadura privada",
"status.edit": "Edita",
"status.edited": "Editado {date}",
"status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} vezes}}",
"status.embed": "Inkrusta",
"status.favourite": "Te plaze",

View File

@ -656,10 +656,11 @@
"status.direct": "Privačiai paminėti @{name}",
"status.direct_indicator": "Privatus paminėjimas",
"status.edit": "Redaguoti",
"status.edited": "Redaguota {date}",
"status.edited": "Paskutinį kartą redaguota {date}",
"status.edited_x_times": "Redaguota {count, plural, one {{count} kartą} few {{count} kartus} many {{count} karto} other {{count} kartų}}",
"status.embed": "Įterpti",
"status.favourite": "Pamėgti",
"status.favourites": "{count, plural, one {mėgstamas} few {mėgstamai} many {mėgstamų} other {mėgstamų}}",
"status.filter": "Filtruoti šį įrašą",
"status.filtered": "Filtruota",
"status.hide": "Slėpti įrašą",

View File

@ -623,15 +623,14 @@
"status.admin_status": "Atvērt šo ziņu moderācijas saskarnē",
"status.block": "Bloķēt @{name}",
"status.bookmark": "Grāmatzīme",
"status.cancel_reblog_private": "Neizcelt",
"status.cancel_reblog_private": "Nepastiprināt",
"status.cannot_reblog": "Šo ziņu nevar izcelt",
"status.copy": "Kopēt saiti uz ziņu",
"status.copy": "Ievietot ieraksta saiti starpliktuvē",
"status.delete": "Dzēst",
"status.detailed_status": "Detalizēts sarunas skats",
"status.direct": "Pieminēt @{name} privāti",
"status.direct_indicator": "Pieminēts privāti",
"status.edit": "Labot",
"status.edited": "Labots {date}",
"status.edited_x_times": "Labots {count, plural, one {{count} reizi} other {{count} reizes}}",
"status.embed": "Iestrādāt",
"status.favourite": "Iecienīts",

View File

@ -632,7 +632,6 @@
"status.direct": "Sebut secara peribadi @{name}",
"status.direct_indicator": "Sebutan peribadi",
"status.edit": "Sunting",
"status.edited": "Disunting {date}",
"status.edited_x_times": "Disunting {count, plural, other {{count} kali}}",
"status.embed": "Benaman",
"status.favourite": "Kegemaran",

View File

@ -610,7 +610,6 @@
"status.direct": "@{name} ကို သီးသန့်ဖော်ပြမည်\n",
"status.direct_indicator": "သီးသန့်ဖော်ပြခြင်း။",
"status.edit": "ပြင်ဆင်ရန်",
"status.edited": "{date} ကို ပြင်ဆင်ပြီးပါပြီ",
"status.edited_x_times": "{count, plural, one {{count} time} other {{count} times}} ပြင်ဆင်ခဲ့သည်",
"status.embed": "Embed",
"status.favourite": "Favorite",

View File

@ -662,10 +662,11 @@
"status.direct": "@{name} een privébericht sturen",
"status.direct_indicator": "Privébericht",
"status.edit": "Bewerken",
"status.edited": "Bewerkt op {date}",
"status.edited": "Laatste bewerking op {date}",
"status.edited_x_times": "{count, plural, one {{count} keer} other {{count} keer}} bewerkt",
"status.embed": "Embedden",
"status.favourite": "Favoriet",
"status.favourites": "{count, plural, one {# favoriet} other {# favorieten}}",
"status.filter": "Dit bericht filteren",
"status.filtered": "Gefilterd",
"status.hide": "Bericht verbergen",
@ -686,6 +687,7 @@
"status.reblog": "Boosten",
"status.reblog_private": "Boost naar oorspronkelijke ontvangers",
"status.reblogged_by": "{name} boostte",
"status.reblogs": "{count, plural, one {boost} other {boosts}}",
"status.reblogs.empty": "Niemand heeft dit bericht nog geboost. Wanneer iemand dit doet, valt dat hier te zien.",
"status.redraft": "Verwijderen en herschrijven",
"status.remove_bookmark": "Bladwijzer verwijderen",

View File

@ -662,7 +662,6 @@
"status.direct": "Nevn @{name} privat",
"status.direct_indicator": "Privat omtale",
"status.edit": "Rediger",
"status.edited": "Redigert {date}",
"status.edited_x_times": "Redigert {count, plural, one {{count} gong} other {{count} gonger}}",
"status.embed": "Bygg inn",
"status.favourite": "Favoritt",

View File

@ -634,7 +634,6 @@
"status.direct": "Nevn @{name} privat",
"status.direct_indicator": "Privat omtale",
"status.edit": "Rediger",
"status.edited": "Redigert {date}",
"status.edited_x_times": "Redigert {count, plural,one {{count} gang} other {{count} ganger}}",
"status.embed": "Bygge inn",
"status.favourite": "Favoritt",

View File

@ -525,7 +525,6 @@
"status.direct": "Mencionar @{name} en privat",
"status.direct_indicator": "Mencion privada",
"status.edit": "Modificar",
"status.edited": "Modificat {date}",
"status.edited_x_times": "Modificat {count, plural, un {{count} còp} other {{count} còps}}",
"status.embed": "Embarcar",
"status.favourite": "Apondre als favorits",

View File

@ -310,7 +310,6 @@
"status.copy": "ਪੋਸਟ ਲਈ ਲਿੰਕ ਕਾਪੀ ਕਰੋ",
"status.delete": "ਹਟਾਓ",
"status.edit": "ਸੋਧ",
"status.edited": "{date} ਨੂੰ ਸੋਧਿਆ",
"status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}",
"status.embed": "ਮੜ੍ਹੋ",
"status.favourite": "ਪਸੰਦ",

View File

@ -662,10 +662,11 @@
"status.direct": "Prywatna wzmianka @{name}",
"status.direct_indicator": "Prywatna wzmianka",
"status.edit": "Edytuj",
"status.edited": "Edytowano {date}",
"status.edited": "Ostatnio edytowane {date}",
"status.edited_x_times": "Edytowano {count, plural, one {{count} raz} other {{count} razy}}",
"status.embed": "Osadź",
"status.favourite": "Dodaj do ulubionych",
"status.favourites": "{count, plural, one {polubienie} few {polubienia} other {polubień}}",
"status.filter": "Filtruj ten wpis",
"status.filtered": "Filtrowany(-a)",
"status.hide": "Ukryj post",
@ -686,6 +687,7 @@
"status.reblog": "Podbij",
"status.reblog_private": "Podbij dla odbiorców oryginalnego wpisu",
"status.reblogged_by": "Podbite przez {name}",
"status.reblogs": "{count, plural, one {podbicie} few {podbicia} other {podbić}}",
"status.reblogs.empty": "Nikt nie podbił jeszcze tego wpisu. Gdy ktoś to zrobi, pojawi się tutaj.",
"status.redraft": "Usuń i przeredaguj",
"status.remove_bookmark": "Usuń zakładkę",

View File

@ -241,6 +241,7 @@
"empty_column.list": "Nada aqui. Quando membros da lista tootarem, eles aparecerão aqui.",
"empty_column.lists": "Nada aqui. Quando você criar listas, elas aparecerão aqui.",
"empty_column.mutes": "Nada aqui.",
"empty_column.notification_requests": "Tudo limpo! Não há nada aqui. Quando você receber novas notificações, elas aparecerão aqui de acordo com suas configurações.",
"empty_column.notifications": "Interaja com outros usuários para começar a conversar.",
"empty_column.public": "Publique algo ou siga manualmente usuários de outros servidores",
"error.unexpected_crash.explanation": "Esta página não pôde ser mostrada corretamente. Este erro provavelmente é devido a um bug em nosso código ou um problema de compatibilidade de navegador.",
@ -271,13 +272,20 @@
"filter_modal.select_filter.subtitle": "Use uma categoria existente ou crie uma nova",
"filter_modal.select_filter.title": "Filtrar esta publicação",
"filter_modal.title.status": "Filtrar uma publicação",
"filtered_notifications_banner.title": "Notificações filtradas",
"firehose.all": "Tudo",
"firehose.local": "Este servidor",
"firehose.remote": "Outros servidores",
"follow_request.authorize": "Aprovar",
"follow_request.reject": "Recusar",
"follow_requests.unlocked_explanation": "Apesar de seu perfil não ser trancado, {domain} exige que você revise a solicitação para te seguir destes perfis manualmente.",
"follow_suggestions.curated_suggestion": "Escolha da equipe",
"follow_suggestions.dismiss": "Não mostrar novamente",
"follow_suggestions.hints.featured": "Este perfil foi escolhido a dedo pela equipe {domain}.",
"follow_suggestions.hints.friends_of_friends": "Este perfil é popular entre as pessoas que você segue.",
"follow_suggestions.hints.most_followed": "Este perfil é um dos mais seguidos em {domain}.",
"follow_suggestions.hints.most_interactions": "Este perfil tem recebido recentemente muita atenção em {domain}.",
"follow_suggestions.hints.similar_to_recently_followed": "Este perfil é semelhante aos perfis que você seguiu recentemente.",
"follow_suggestions.personalized_suggestion": "Sugestão personalizada",
"follow_suggestions.popular_suggestion": "Sugestão popular",
"follow_suggestions.view_all": "Visualizar tudo",
@ -433,6 +441,10 @@
"notification.reblog": "{name} deu boost no teu toot",
"notification.status": "{name} acabou de tootar",
"notification.update": "{name} editou uma publicação",
"notification_requests.accept": "Aceitar",
"notification_requests.dismiss": "Rejeitar",
"notification_requests.notifications_from": "Notificações de {name}",
"notification_requests.title": "Notificações filtradas",
"notifications.clear": "Limpar notificações",
"notifications.clear_confirmation": "Você tem certeza de que deseja limpar todas as suas notificações?",
"notifications.column_settings.admin.report": "Novas denúncias:",
@ -464,6 +476,13 @@
"notifications.permission_denied": "Navegador não tem permissão para ativar notificações no computador.",
"notifications.permission_denied_alert": "Verifique a permissão do navegador para ativar notificações no computador.",
"notifications.permission_required": "Ativar notificações no computador exige permissão do navegador.",
"notifications.policy.filter_new_accounts_title": "Novas contas",
"notifications.policy.filter_not_followers_title": "Pessoas que não estão te seguindo",
"notifications.policy.filter_not_following_hint": "Até que você os aprove manualmente",
"notifications.policy.filter_not_following_title": "Pessoas que você não segue",
"notifications.policy.filter_private_mentions_hint": "Filtrado, a menos que respondido em sua própria menção ou se você segue o remetente",
"notifications.policy.filter_private_mentions_title": "Menções privadas não solicitadas",
"notifications.policy.title": "Filtrar notificações de…",
"notifications_permission_banner.enable": "Ativar notificações no computador",
"notifications_permission_banner.how_to_control": "Para receber notificações quando o Mastodon não estiver aberto, ative as notificações no computador. Você pode controlar precisamente quais tipos de interações geram notificações no computador através do botão {icon}.",
"notifications_permission_banner.title": "Nunca perca nada",
@ -525,6 +544,9 @@
"privacy.private.short": "Seguidores",
"privacy.public.long": "Qualquer um dentro ou fora do Mastodon",
"privacy.public.short": "Público",
"privacy.unlisted.additional": "Isso se comporta exatamente como público, exceto que a publicação não aparecerá nos _feeds ao vivo_ ou nas _hashtags_, explorar, ou barra de busca, mesmo que você seja escolhido em toda a conta.",
"privacy.unlisted.long": "Menos notificações e recomendações do algoritmo",
"privacy.unlisted.short": "Público (silencioso)",
"privacy_policy.last_updated": "Atualizado {date}",
"privacy_policy.title": "Política de privacidade",
"recommended": "Recomendado",
@ -636,7 +658,7 @@
"status.direct": "Mencione em privado @{name}",
"status.direct_indicator": "Menção privada",
"status.edit": "Editar",
"status.edited": "Editado em {date}",
"status.edited": "Última edição em {date}",
"status.edited_x_times": "Editado {count, plural, one {{count} hora} other {{count} vezes}}",
"status.embed": "Incorporar",
"status.favourite": "Favorita",

View File

@ -662,10 +662,11 @@
"status.direct": "Mencionar @{name} em privado",
"status.direct_indicator": "Menção privada",
"status.edit": "Editar",
"status.edited": "Editado em {date}",
"status.edited": "Última edição em {date}",
"status.edited_x_times": "Editado {count, plural,one {{count} vez} other {{count} vezes}}",
"status.embed": "Embutir",
"status.favourite": "Assinalar como favorito",
"status.favourites": "{count, plural, one {favorito} other {favoritos}}",
"status.filter": "Filtrar esta publicação",
"status.filtered": "Filtrada",
"status.hide": "Ocultar publicação",
@ -686,6 +687,7 @@
"status.reblog": "Partilhar",
"status.reblog_private": "Partilhar com a visibilidade original",
"status.reblogged_by": "{name} reforçou",
"status.reblogs": "{count, plural, one {partilha} other {partilhas}}",
"status.reblogs.empty": "Ainda ninguém reforçou esta publicação. Quando alguém o fizer, ele irá aparecer aqui.",
"status.redraft": "Apagar & reescrever",
"status.remove_bookmark": "Retirar dos marcadores",

View File

@ -576,7 +576,6 @@
"status.direct": "Menționează @{name} în privat",
"status.direct_indicator": "Mențiune privată",
"status.edit": "Modifică",
"status.edited": "Modificat în data de {date}",
"status.edited_x_times": "Modificată {count, plural, one {o dată} few {de {count} ori} other {de {count} de ori}}",
"status.embed": "Înglobează",
"status.filter": "Filtrează această postare",

View File

@ -640,7 +640,6 @@
"status.direct": "Лично упоминать @{name}",
"status.direct_indicator": "Личные упоминания",
"status.edit": "Изменить",
"status.edited": "Последнее изменение: {date}",
"status.edited_x_times": "{count, plural, one {{count} изменение} many {{count} изменений} other {{count} изменения}}",
"status.embed": "Встроить на свой сайт",
"status.favourite": "Избранное",

View File

@ -523,7 +523,6 @@
"status.delete": "मार्जय",
"status.detailed_status": "विस्तृतसंभाषणदृश्यम्",
"status.edit": "सम्पादय",
"status.edited": "सम्पादितं {date}",
"status.edited_x_times": "Edited {count, plural, one {{count} वारम्} other {{count} वारम्}}",
"status.embed": "निहितम्",
"status.filter": "पत्रमिदं फिल्तरं कुरु",

View File

@ -494,7 +494,6 @@
"status.delete": "Delete",
"status.detailed_status": "Detailt conversation view",
"status.edit": "Edit",
"status.edited": "Editit {date}",
"status.edited_x_times": "Editit {count, plural, one {{count} time} other {{count} times}}",
"status.embed": "Embed",
"status.filter": "Filter this post",

View File

@ -404,7 +404,6 @@
"status.delete": "මකන්න",
"status.detailed_status": "විස්තරාත්මක සංවාද දැක්ම",
"status.edit": "සංස්කරණය",
"status.edited": "සංශෝධිතයි {date}",
"status.edited_x_times": "සංශෝධිතයි {count, plural, one {වාර {count}} other {වාර {count}}}",
"status.embed": "කාවැද්දූ",
"status.filter": "මෙම ලිපිය පෙරන්න",

View File

@ -653,7 +653,6 @@
"status.direct": "Súkromne označiť @{name}",
"status.direct_indicator": "Súkromné označenie",
"status.edit": "Upraviť",
"status.edited": "Upravené {date}",
"status.edited_x_times": "Upravený {count, plural, other {{count}×}}",
"status.embed": "Vložiť",
"status.favourite": "Ohviezdičkované",

View File

@ -662,10 +662,11 @@
"status.direct": "Zasebno omeni @{name}",
"status.direct_indicator": "Zasebna omemba",
"status.edit": "Uredi",
"status.edited": "Urejeno {date}",
"status.edited": "Zadnje urejanje {date}",
"status.edited_x_times": "Urejeno {count, plural, one {#-krat} two {#-krat} few {#-krat} other {#-krat}}",
"status.embed": "Vdelaj",
"status.favourite": "Priljubljen_a",
"status.favourites": "{count, plural, one {priljubitev} two {priljubitvi} few {priljubitve} other {priljubitev}}",
"status.filter": "Filtriraj to objavo",
"status.filtered": "Filtrirano",
"status.hide": "Skrij objavo",
@ -686,6 +687,7 @@
"status.reblog": "Izpostavi",
"status.reblog_private": "Izpostavi z izvirno vidljivostjo",
"status.reblogged_by": "{name} je izpostavil/a",
"status.reblogs": "{count, plural, one {izpostavitev} two {izpostavitvi} few {izpostavitve} other {izpostavitev}}",
"status.reblogs.empty": "Nihče še ni izpostavil te objave. Ko se bo to zgodilo, se bodo pojavile tukaj.",
"status.redraft": "Izbriši in preoblikuj",
"status.remove_bookmark": "Odstrani zaznamek",

View File

@ -659,7 +659,6 @@
"status.direct": "Përmendje private për @{name}",
"status.direct_indicator": "Përmendje private",
"status.edit": "Përpunojeni",
"status.edited": "Përpunuar më {date}",
"status.edited_x_times": "Përpunuar {count, plural, one {{count} herë} other {{count} herë}}",
"status.embed": "Trupëzim",
"status.favourite": "I vini shenjë si të parapëlqyer",

View File

@ -662,10 +662,11 @@
"status.direct": "Privatno pomeni @{name}",
"status.direct_indicator": "Privatno pominjanje",
"status.edit": "Uredi",
"status.edited": "Uređeno {date}",
"status.edited": "Poslednje uređivanje {date}",
"status.edited_x_times": "Uređeno {count, plural, one {{count} put} other {{count} puta}}",
"status.embed": "Ugradi",
"status.favourite": "Omiljeno",
"status.favourites": "{count, plural, one {# omiljeno} few {# omiljena} other {# omiljenih}}",
"status.filter": "Filtriraj ovu objavu",
"status.filtered": "Filtrirano",
"status.hide": "Sakrij objavu",
@ -686,6 +687,7 @@
"status.reblog": "Podrži",
"status.reblog_private": "Podrži sa originalnom vidljivošću",
"status.reblogged_by": "{name} je podržao/la",
"status.reblogs": "{count, plural, one {# podržavanje} few {# podržavanja} other {# podržavanja}}",
"status.reblogs.empty": "Još uvek niko nije podržao ovu objavu. Kada bude podržana, pojaviće se ovde.",
"status.redraft": "Izbriši i preoblikuj",
"status.remove_bookmark": "Ukloni obeleživač",

View File

@ -662,10 +662,11 @@
"status.direct": "Приватно помени @{name}",
"status.direct_indicator": "Приватно помињање",
"status.edit": "Уреди",
"status.edited": "Уређено {date}",
"status.edited": "Последње уређивање {date}",
"status.edited_x_times": "Уређено {count, plural, one {{count} пут} other {{count} пута}}",
"status.embed": "Угради",
"status.favourite": "Омиљено",
"status.favourites": "{count, plural, one {# омиљено} few {# омиљена} other {# омиљених}}",
"status.filter": "Филтрирај ову објаву",
"status.filtered": "Филтрирано",
"status.hide": "Сакриј објаву",
@ -686,6 +687,7 @@
"status.reblog": "Подржи",
"status.reblog_private": "Подржи са оригиналном видљивошћу",
"status.reblogged_by": "{name} је подржао/ла",
"status.reblogs": "{count, plural, one {# подржавање} few {# подржавања} other {# подржавања}}",
"status.reblogs.empty": "Још увек нико није подржао ову објаву. Када буде подржана, појавиће се овде.",
"status.redraft": "Избриши и преобликуј",
"status.remove_bookmark": "Уклони обележивач",

View File

@ -649,10 +649,11 @@
"status.direct": "Nämn @{name} privat",
"status.direct_indicator": "Privat nämning",
"status.edit": "Redigera",
"status.edited": "Ändrad {date}",
"status.edited": "Senast ändrad {date}",
"status.edited_x_times": "Redigerad {count, plural, one {{count} gång} other {{count} gånger}}",
"status.embed": "Bädda in",
"status.favourite": "Favoritmarkera",
"status.favourites": "{count, plural, one {favorit} other {favoriter}}",
"status.filter": "Filtrera detta inlägg",
"status.filtered": "Filtrerat",
"status.hide": "Dölj inlägg",

View File

@ -662,7 +662,6 @@
"status.direct": "กล่าวถึง @{name} แบบส่วนตัว",
"status.direct_indicator": "การกล่าวถึงแบบส่วนตัว",
"status.edit": "แก้ไข",
"status.edited": "แก้ไขเมื่อ {date}",
"status.edited_x_times": "แก้ไข {count, plural, other {{count} ครั้ง}}",
"status.embed": "ฝัง",
"status.favourite": "ชื่นชอบ",

View File

@ -339,7 +339,6 @@
"status.cancel_reblog_private": "o pini e pana",
"status.delete": "o weka",
"status.edit": "o ante",
"status.edited": "ni li ante lon {date}",
"status.embed": "ni o lon insa pi lipu ante",
"status.favourite": "o suli",
"status.hide": "o len",

View File

@ -662,10 +662,11 @@
"status.direct": "@{name} kullanıcısına özelden değin",
"status.direct_indicator": "Özel değinme",
"status.edit": "Düzenle",
"status.edited": "{date} tarihinde düzenlenmiş",
"status.edited": "Son düzenleme {date}",
"status.edited_x_times": "{count, plural, one {{count} kez} other {{count} kez}} düzenlendi",
"status.embed": "Gömülü",
"status.favourite": "Favori",
"status.favourites": "{count, plural, one {beğeni} other {beğeni}}",
"status.filter": "Bu gönderiyi süzgeçle",
"status.filtered": "Süzgeçlenmiş",
"status.hide": "Gönderiyi gizle",
@ -686,6 +687,7 @@
"status.reblog": "Yeniden paylaş",
"status.reblog_private": "Özgün görünürlük ile yeniden paylaş",
"status.reblogged_by": "{name} yeniden paylaştı",
"status.reblogs": "{count, plural, one {yeniden paylaşım} other {yeniden paylaşım}}",
"status.reblogs.empty": "Henüz hiç kimse bu Gönderiyi Yeniden Paylaşmadı. Herhangi bir kullanıcı yeniden paylaştığında burada görüntülenecek.",
"status.redraft": "Sil,Düzenle ve Yeniden paylaş",
"status.remove_bookmark": "Yer işaretini kaldır",

View File

@ -425,7 +425,6 @@
"status.delete": "Бетерү",
"status.direct_indicator": "Хосусый искә алу",
"status.edit": "Үзгәртү",
"status.edited": "{date} көнне төзәтте",
"status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}",
"status.embed": "Веб-биткә кертү",
"status.filtered": "Сөзелгән",

View File

@ -241,6 +241,7 @@
"empty_column.list": "Цей список порожній. Коли його учасники додадуть нові дописи, вони з'являться тут.",
"empty_column.lists": "У вас ще немає списків. Коли ви їх створите, вони з'являться тут.",
"empty_column.mutes": "Ви ще не приховали жодного користувача.",
"empty_column.notification_requests": "Усе чисто! Тут нічого немає. Коли ви отримаєте нові сповіщення, вони з'являться тут відповідно до ваших налаштувань.",
"empty_column.notifications": "У вас ще немає сповіщень. Коли інші люди почнуть взаємодіяти з вами, ви побачите їх тут.",
"empty_column.public": "Тут поки нічого немає! Опублікуйте щось, або вручну підпишіться на користувачів інших серверів, щоб заповнити стрічку",
"error.unexpected_crash.explanation": "Через помилку у нашому коді або несумісність браузера, ця сторінка не може бути зображена коректно.",
@ -271,6 +272,8 @@
"filter_modal.select_filter.subtitle": "Використати наявну категорію або створити нову",
"filter_modal.select_filter.title": "Фільтрувати цей допис",
"filter_modal.title.status": "Фільтрувати допис",
"filtered_notifications_banner.pending_requests": "Сповіщення від {count, plural, =0 {жодної особи} one {однієї особи} few {# осіб} many {# осіб} other {# особи}}, котрих ви можете знати",
"filtered_notifications_banner.title": "Відфільтровані сповіщення",
"firehose.all": "Всі",
"firehose.local": "Цей сервер",
"firehose.remote": "Інші сервери",
@ -474,7 +477,11 @@
"notifications.permission_denied": "Сповіщення стільниці недоступні через раніше відхилений запит дозволів для браузера",
"notifications.permission_denied_alert": "Сповіщення не можна ввімкнути оскільки у дозволі вже було відмовлено раніше",
"notifications.permission_required": "Сповіщення на стільниці не доступні, оскільки необхідний дозвіл не надано.",
"notifications.policy.filter_new_accounts.hint": "Створено впродовж {days, plural, one {одного} few {# днів} many {# днів} other {# дня}}",
"notifications.policy.filter_new_accounts_title": "Нові облікові записи",
"notifications.policy.filter_not_followers_title": "Люди не підписані на вас",
"notifications.policy.filter_not_following_hint": "Доки ви не схвалюєте їх вручну",
"notifications.policy.filter_not_following_title": "Люди, на яких ви не підписані",
"notifications_permission_banner.enable": "Увімкнути сповіщення стільниці",
"notifications_permission_banner.how_to_control": "Щоб отримувати сповіщення, коли Mastodon не відкрито, увімкніть сповіщення стільниці. Ви можете контролювати, які типи взаємодій створюють сповіщення через кнопку {icon} вгорі після їхнього увімкнення.",
"notifications_permission_banner.title": "Не проґавте нічого",
@ -651,10 +658,11 @@
"status.direct": "Особиста згадка @{name}",
"status.direct_indicator": "Особиста згадка",
"status.edit": "Редагувати",
"status.edited": "Відредаговано {date}",
"status.edited": "Востаннє змінено {date}",
"status.edited_x_times": "Відредаговано {count, plural, one {{count} раз} few {{count} рази} many {{counter} разів} other {{counter} разів}}",
"status.embed": "Вбудувати",
"status.favourite": "Уподобане",
"status.favourites": "{count, plural, one {вподобання} few {вподобання} many {вподобань} other {вподобання}}",
"status.filter": "Фільтрувати цей допис",
"status.filtered": "Відфільтровано",
"status.hide": "Сховати допис",
@ -675,6 +683,7 @@
"status.reblog": "Поширити",
"status.reblog_private": "Поширити для початкової аудиторії",
"status.reblogged_by": "{name} поширює",
"status.reblogs": "{count, plural, one {поширення} few {поширення} many {поширень} other {поширення}}",
"status.reblogs.empty": "Ніхто ще не поширив цей допис. Коли хтось це зроблять, вони будуть зображені тут.",
"status.redraft": "Видалити та виправити",
"status.remove_bookmark": "Видалити закладку",

View File

@ -662,7 +662,6 @@
"status.direct": "Nhắn riêng @{name}",
"status.direct_indicator": "Nhắn riêng",
"status.edit": "Sửa",
"status.edited": "Đã sửa {date}",
"status.edited_x_times": "Đã sửa {count, plural, other {{count} lần}}",
"status.embed": "Nhúng",
"status.favourite": "Thích",

View File

@ -662,10 +662,11 @@
"status.direct": "私下提及 @{name}",
"status.direct_indicator": "私下提及",
"status.edit": "编辑",
"status.edited": "编辑于 {date}",
"status.edited": "最近编辑于 {date}",
"status.edited_x_times": "共编辑 {count, plural, one {{count} 次} other {{count} 次}}",
"status.embed": "嵌入",
"status.favourite": "喜欢",
"status.favourites": "{count, plural, other {次喜欢}}",
"status.filter": "过滤此嘟文",
"status.filtered": "已过滤",
"status.hide": "隐藏嘟文",
@ -686,6 +687,7 @@
"status.reblog": "转嘟",
"status.reblog_private": "转嘟(可见者不变)",
"status.reblogged_by": "{name} 转嘟了",
"status.reblogs": "{count, plural, other {次转嘟}}",
"status.reblogs.empty": "没有人转嘟过此条嘟文。如果有人转嘟了,就会显示在这里。",
"status.redraft": "删除并重新编辑",
"status.remove_bookmark": "移除书签",

View File

@ -640,7 +640,6 @@
"status.direct": "私下提及 @{name}",
"status.direct_indicator": "私人提及",
"status.edit": "編輯",
"status.edited": "編輯於 {date}",
"status.edited_x_times": "Edited {count, plural, one {{count} 次} other {{count} 次}}",
"status.embed": "嵌入",
"status.favourite": "最愛",

View File

@ -662,10 +662,11 @@
"status.direct": "私訊 @{name}",
"status.direct_indicator": "私訊",
"status.edit": "編輯",
"status.edited": "編輯於 {date}",
"status.edited": "上次編輯於 {date}",
"status.edited_x_times": "已編輯 {count, plural, one {{count} 次} other {{count} 次}}",
"status.embed": "內嵌嘟文",
"status.favourite": "最愛",
"status.favourites": "{count, plural, other {# 則最愛}}",
"status.filter": "過濾此嘟文",
"status.filtered": "已過濾",
"status.hide": "隱藏嘟文",
@ -686,6 +687,7 @@
"status.reblog": "轉嘟",
"status.reblog_private": "依照原嘟可見性轉嘟",
"status.reblogged_by": "{name} 已轉嘟",
"status.reblogs": "{count, plural, other {# 則轉嘟}}",
"status.reblogs.empty": "還沒有人轉嘟過這則嘟文。當有人轉嘟時,它將於此顯示。",
"status.redraft": "刪除並重新編輯",
"status.remove_bookmark": "移除書籤",

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M160-80q-33 0-56.5-23.5T80-160v-440q0-33 23.5-56.5T160-680h200v-120q0-33 23.5-56.5T440-880h80q33 0 56.5 23.5T600-800v120h200q33 0 56.5 23.5T880-600v440q0 33-23.5 56.5T800-80H160Zm80-160h240v-18q0-17-9.5-31.5T444-312q-20-9-40.5-13.5T360-330q-23 0-43.5 4.5T276-312q-17 8-26.5 22.5T240-258v18Zm320-60h160v-60H560v60Zm-200-60q25 0 42.5-17.5T420-420q0-25-17.5-42.5T360-480q-25 0-42.5 17.5T300-420q0 25 17.5 42.5T360-360Zm200-60h160v-60H560v60ZM440-600h80v-200h-80v200Z"/></svg>

After

Width:  |  Height:  |  Size: 569 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M160-80q-33 0-56.5-23.5T80-160v-440q0-33 23.5-56.5T160-680h200v-120q0-33 23.5-56.5T440-880h80q33 0 56.5 23.5T600-800v120h200q33 0 56.5 23.5T880-600v440q0 33-23.5 56.5T800-80H160Zm0-80h640v-440H600q0 33-23.5 56.5T520-520h-80q-33 0-56.5-23.5T360-600H160v440Zm80-80h240v-18q0-17-9.5-31.5T444-312q-20-9-40.5-13.5T360-330q-23 0-43.5 4.5T276-312q-17 8-26.5 22.5T240-258v18Zm320-60h160v-60H560v60Zm-200-60q25 0 42.5-17.5T420-420q0-25-17.5-42.5T360-480q-25 0-42.5 17.5T300-420q0 25 17.5 42.5T360-360Zm200-60h160v-60H560v60ZM440-600h80v-200h-80v200Zm40 220Z"/></svg>

After

Width:  |  Height:  |  Size: 654 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-7-.5-14.5T799-507q-5 29-27 48t-52 19h-80q-33 0-56.5-23.5T560-520v-40H400v-80q0-33 23.5-56.5T480-720h40q0-23 12.5-40.5T563-789q-20-5-40.5-8t-42.5-3q-134 0-227 93t-93 227h200q66 0 113 47t47 113v40H400v110q20 5 39.5 7.5T480-160Z"/></svg>

After

Width:  |  Height:  |  Size: 548 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-7-.5-14.5T799-507q-5 29-27 48t-52 19h-80q-33 0-56.5-23.5T560-520v-40H400v-80q0-33 23.5-56.5T480-720h40q0-23 12.5-40.5T563-789q-20-5-40.5-8t-42.5-3q-134 0-227 93t-93 227h200q66 0 113 47t47 113v40H400v110q20 5 39.5 7.5T480-160Z"/></svg>

After

Width:  |  Height:  |  Size: 548 B

Some files were not shown because too many files have changed in this diff Show More