Merge pull request #3317 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to ff20ab7510a189bee75bdd5460f6c2ae38e7009a
This commit is contained in:
commit
6c6ea030f4
@ -1 +1 @@
|
|||||||
3.4.7
|
3.4.8
|
||||||
|
|||||||
@ -27,6 +27,7 @@ const config: StorybookConfig = {
|
|||||||
'oops.gif',
|
'oops.gif',
|
||||||
'oops.png',
|
'oops.png',
|
||||||
].map((path) => ({ from: `../public/${path}`, to: `/${path}` })),
|
].map((path) => ({ from: `../public/${path}`, to: `/${path}` })),
|
||||||
|
{ from: '../app/javascript/images/logo.svg', to: '/custom-emoji/logo.svg' },
|
||||||
],
|
],
|
||||||
viteFinal(config) {
|
viteFinal(config) {
|
||||||
// For an unknown reason, Storybook does not use the root
|
// For an unknown reason, Storybook does not use the root
|
||||||
|
|||||||
@ -13,7 +13,7 @@ ARG BASE_REGISTRY="docker.io"
|
|||||||
|
|
||||||
# Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.4.x"]
|
# Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.4.x"]
|
||||||
# renovate: datasource=docker depName=docker.io/ruby
|
# renovate: datasource=docker depName=docker.io/ruby
|
||||||
ARG RUBY_VERSION="3.4.7"
|
ARG RUBY_VERSION="3.4.8"
|
||||||
# # Node.js version to use in base image, change with [--build-arg NODE_MAJOR_VERSION="22"]
|
# # Node.js version to use in base image, change with [--build-arg NODE_MAJOR_VERSION="22"]
|
||||||
# renovate: datasource=node-version depName=node
|
# renovate: datasource=node-version depName=node
|
||||||
ARG NODE_MAJOR_VERSION="24"
|
ARG NODE_MAJOR_VERSION="24"
|
||||||
|
|||||||
@ -1093,4 +1093,4 @@ RUBY VERSION
|
|||||||
ruby 3.4.1p0
|
ruby 3.4.1p0
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
4.0.1
|
4.0.2
|
||||||
|
|||||||
@ -6,9 +6,9 @@ module Api::InteractionPoliciesConcern
|
|||||||
def quote_approval_policy
|
def quote_approval_policy
|
||||||
case status_params[:quote_approval_policy].presence || current_user.setting_default_quote_policy
|
case status_params[:quote_approval_policy].presence || current_user.setting_default_quote_policy
|
||||||
when 'public'
|
when 'public'
|
||||||
Status::QUOTE_APPROVAL_POLICY_FLAGS[:public] << 16
|
InteractionPolicy::POLICY_FLAGS[:public] << 16
|
||||||
when 'followers'
|
when 'followers'
|
||||||
Status::QUOTE_APPROVAL_POLICY_FLAGS[:followers] << 16
|
InteractionPolicy::POLICY_FLAGS[:followers] << 16
|
||||||
when 'nobody'
|
when 'nobody'
|
||||||
0
|
0
|
||||||
else
|
else
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module FiltersHelper
|
module FiltersHelper
|
||||||
|
KEYWORDS_LIMIT = 5
|
||||||
|
|
||||||
def filter_action_label(action)
|
def filter_action_label(action)
|
||||||
safe_join(
|
safe_join(
|
||||||
[
|
[
|
||||||
@ -9,4 +11,10 @@ module FiltersHelper
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def filter_keywords(filter)
|
||||||
|
filter.keywords.map(&:keyword).take(KEYWORDS_LIMIT).tap do |list|
|
||||||
|
list << '…' if filter.keywords.size > KEYWORDS_LIMIT
|
||||||
|
end.join(', ')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -709,7 +709,16 @@ export function selectComposeSuggestion(position, token, suggestion, path) {
|
|||||||
|
|
||||||
dispatch(useEmoji(suggestion));
|
dispatch(useEmoji(suggestion));
|
||||||
} else if (suggestion.type === 'hashtag') {
|
} else if (suggestion.type === 'hashtag') {
|
||||||
completion = token + suggestion.name.slice(token.length - 1);
|
// TODO: it could make sense to keep the “most capitalized” of the two
|
||||||
|
const tokenName = token.slice(1); // strip leading '#'
|
||||||
|
const suggestionPrefix = suggestion.name.slice(0, tokenName.length);
|
||||||
|
const prefixMatchesSuggestion = suggestionPrefix.localeCompare(tokenName, undefined, { sensitivity: 'accent' }) === 0;
|
||||||
|
if (prefixMatchesSuggestion) {
|
||||||
|
completion = token + suggestion.name.slice(tokenName.length);
|
||||||
|
} else {
|
||||||
|
completion = `${token.slice(0, 1)}${suggestion.name}`;
|
||||||
|
}
|
||||||
|
|
||||||
startPosition = position - 1;
|
startPosition = position - 1;
|
||||||
} else if (suggestion.type === 'account') {
|
} else if (suggestion.type === 'account') {
|
||||||
completion = `@${getState().getIn(['accounts', suggestion.id, 'acct'])}`;
|
completion = `@${getState().getIn(['accounts', suggestion.id, 'acct'])}`;
|
||||||
|
|||||||
22
app/javascript/flavours/glitch/actions/importer/emoji.ts
Normal file
22
app/javascript/flavours/glitch/actions/importer/emoji.ts
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import type { ApiCustomEmojiJSON } from '@/flavours/glitch/api_types/custom_emoji';
|
||||||
|
import { loadCustomEmoji } from '@/flavours/glitch/features/emoji';
|
||||||
|
|
||||||
|
export async function importCustomEmoji(emojis: ApiCustomEmojiJSON[]) {
|
||||||
|
if (emojis.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// First, check if we already have them all.
|
||||||
|
const { searchCustomEmojisByShortcodes, clearEtag } =
|
||||||
|
await import('@/flavours/glitch/features/emoji/database');
|
||||||
|
|
||||||
|
const existingEmojis = await searchCustomEmojisByShortcodes(
|
||||||
|
emojis.map((emoji) => emoji.shortcode),
|
||||||
|
);
|
||||||
|
|
||||||
|
// If there's a mismatch, re-import all custom emojis.
|
||||||
|
if (existingEmojis.length < emojis.length) {
|
||||||
|
await clearEtag('custom');
|
||||||
|
await loadCustomEmoji();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,6 +1,7 @@
|
|||||||
import { createPollFromServerJSON } from 'flavours/glitch/models/poll';
|
import { createPollFromServerJSON } from 'flavours/glitch/models/poll';
|
||||||
|
|
||||||
import { importAccounts } from './accounts';
|
import { importAccounts } from './accounts';
|
||||||
|
import { importCustomEmoji } from './emoji';
|
||||||
import { normalizeStatus } from './normalizer';
|
import { normalizeStatus } from './normalizer';
|
||||||
import { importPolls } from './polls';
|
import { importPolls } from './polls';
|
||||||
|
|
||||||
@ -39,6 +40,10 @@ export function importFetchedAccounts(accounts) {
|
|||||||
if (account.moved) {
|
if (account.moved) {
|
||||||
processAccount(account.moved);
|
processAccount(account.moved);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (account.emojis && account.username === account.acct) {
|
||||||
|
importCustomEmoji(account.emojis);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
accounts.forEach(processAccount);
|
accounts.forEach(processAccount);
|
||||||
@ -80,6 +85,10 @@ export function importFetchedStatuses(statuses, options = {}) {
|
|||||||
if (status.card) {
|
if (status.card) {
|
||||||
status.card.authors.forEach(author => author.account && pushUnique(accounts, author.account));
|
status.card.authors.forEach(author => author.account && pushUnique(accounts, author.account));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (status.emojis && status.account.username === status.account.acct) {
|
||||||
|
importCustomEmoji(status.emojis);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
statuses.forEach(processStatus);
|
statuses.forEach(processStatus);
|
||||||
|
|||||||
@ -2,6 +2,8 @@ import escapeTextContentForBrowser from 'escape-html';
|
|||||||
|
|
||||||
import { autoHideCW } from '../../utils/content_warning';
|
import { autoHideCW } from '../../utils/content_warning';
|
||||||
|
|
||||||
|
import { importCustomEmoji } from './emoji';
|
||||||
|
|
||||||
const domParser = new DOMParser();
|
const domParser = new DOMParser();
|
||||||
|
|
||||||
export function searchTextFromRawStatus (status) {
|
export function searchTextFromRawStatus (status) {
|
||||||
@ -143,5 +145,9 @@ export function normalizeAnnouncement(announcement) {
|
|||||||
|
|
||||||
normalAnnouncement.contentHtml = normalAnnouncement.content;
|
normalAnnouncement.contentHtml = normalAnnouncement.content;
|
||||||
|
|
||||||
|
if (normalAnnouncement.emojis) {
|
||||||
|
importCustomEmoji(normalAnnouncement.emojis);
|
||||||
|
}
|
||||||
|
|
||||||
return normalAnnouncement;
|
return normalAnnouncement;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,7 +41,7 @@ export const ContentWarning: React.FC<{
|
|||||||
<EmojiHTML
|
<EmojiHTML
|
||||||
as='span'
|
as='span'
|
||||||
htmlString={text}
|
htmlString={text}
|
||||||
extraEmojis={status.get('emoji') as List<CustomEmoji>}
|
extraEmojis={status.get('emojis') as List<CustomEmoji>}
|
||||||
/>
|
/>
|
||||||
</StatusBanner>
|
</StatusBanner>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -2,6 +2,9 @@ import type { ComponentProps } from 'react';
|
|||||||
|
|
||||||
import type { Meta, StoryObj } from '@storybook/react-vite';
|
import type { Meta, StoryObj } from '@storybook/react-vite';
|
||||||
|
|
||||||
|
import { customEmojiFactory } from '@/testing/factories';
|
||||||
|
|
||||||
|
import { CustomEmojiProvider } from './context';
|
||||||
import { Emoji } from './index';
|
import { Emoji } from './index';
|
||||||
|
|
||||||
type EmojiProps = ComponentProps<typeof Emoji> & {
|
type EmojiProps = ComponentProps<typeof Emoji> & {
|
||||||
@ -34,7 +37,11 @@ const meta = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
render(args) {
|
render(args) {
|
||||||
return <Emoji {...args} />;
|
return (
|
||||||
|
<CustomEmojiProvider emojis={[customEmojiFactory()]}>
|
||||||
|
<Emoji {...args} />
|
||||||
|
</CustomEmojiProvider>
|
||||||
|
);
|
||||||
},
|
},
|
||||||
} satisfies Meta<EmojiProps>;
|
} satisfies Meta<EmojiProps>;
|
||||||
|
|
||||||
@ -49,9 +56,3 @@ export const CustomEmoji: Story = {
|
|||||||
code: ':custom:',
|
code: ':custom:',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export const LegacyEmoji: Story = {
|
|
||||||
args: {
|
|
||||||
code: ':copyright:',
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|||||||
@ -0,0 +1,3 @@
|
|||||||
|
.inlineIcon {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
@ -12,6 +12,8 @@ import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react';
|
|||||||
import { Button } from '../button';
|
import { Button } from '../button';
|
||||||
import { Icon } from '../icon';
|
import { Icon } from '../icon';
|
||||||
|
|
||||||
|
import classes from './remove_quote_hint.module.css';
|
||||||
|
|
||||||
const DISMISSIBLE_BANNER_ID = 'notifications/remove_quote_hint';
|
const DISMISSIBLE_BANNER_ID = 'notifications/remove_quote_hint';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -92,7 +94,7 @@ export const RemoveQuoteHint: React.FC<{
|
|||||||
id: 'status.more',
|
id: 'status.more',
|
||||||
defaultMessage: 'More',
|
defaultMessage: 'More',
|
||||||
})}
|
})}
|
||||||
style={{ verticalAlign: 'middle' }}
|
className={classes.inlineIcon}
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
}}
|
}}
|
||||||
|
|||||||
@ -1,4 +1,11 @@
|
|||||||
import { useCallback, useState, useRef, useEffect, useMemo } from 'react';
|
import {
|
||||||
|
useCallback,
|
||||||
|
useState,
|
||||||
|
useRef,
|
||||||
|
useEffect,
|
||||||
|
useMemo,
|
||||||
|
useId,
|
||||||
|
} from 'react';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
defineMessages,
|
defineMessages,
|
||||||
@ -432,12 +439,17 @@ export const Search: React.FC<{
|
|||||||
switch (e.key) {
|
switch (e.key) {
|
||||||
case 'Escape':
|
case 'Escape':
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
unfocus();
|
searchInputRef.current?.focus();
|
||||||
|
setExpanded(false);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 'ArrowDown':
|
case 'ArrowDown':
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
|
if (!expanded) {
|
||||||
|
setExpanded(true);
|
||||||
|
}
|
||||||
|
|
||||||
if (navigableOptions.length > 0) {
|
if (navigableOptions.length > 0) {
|
||||||
setSelectedOption(
|
setSelectedOption(
|
||||||
Math.min(selectedOption + 1, navigableOptions.length - 1),
|
Math.min(selectedOption + 1, navigableOptions.length - 1),
|
||||||
@ -476,10 +488,10 @@ export const Search: React.FC<{
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[unfocus, navigableOptions, selectedOption, submit, value],
|
[expanded, navigableOptions, selectedOption, submit, value],
|
||||||
);
|
);
|
||||||
|
|
||||||
const handleFocus = useCallback(() => {
|
const handleInputFocus = useCallback(() => {
|
||||||
setExpanded(true);
|
setExpanded(true);
|
||||||
setSelectedOption(-1);
|
setSelectedOption(-1);
|
||||||
|
|
||||||
@ -495,10 +507,16 @@ export const Search: React.FC<{
|
|||||||
}
|
}
|
||||||
}, [setExpanded, setSelectedOption, singleColumn]);
|
}, [setExpanded, setSelectedOption, singleColumn]);
|
||||||
|
|
||||||
const handleBlur = useCallback(() => {
|
const handleInputBlur = useCallback(() => {
|
||||||
setSelectedOption(-1);
|
setSelectedOption(-1);
|
||||||
}, [setSelectedOption]);
|
}, [setSelectedOption]);
|
||||||
|
|
||||||
|
const getOptionFocusHandler = useCallback((index: number) => {
|
||||||
|
return () => {
|
||||||
|
setSelectedOption(index);
|
||||||
|
};
|
||||||
|
}, []);
|
||||||
|
|
||||||
const formRef = useRef<HTMLFormElement>(null);
|
const formRef = useRef<HTMLFormElement>(null);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -526,6 +544,8 @@ export const Search: React.FC<{
|
|||||||
return () => null;
|
return () => null;
|
||||||
}, [expanded]);
|
}, [expanded]);
|
||||||
|
|
||||||
|
const searchOptionsHeading = useId();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<form ref={formRef} className={classNames('search', { active: expanded })}>
|
<form ref={formRef} className={classNames('search', { active: expanded })}>
|
||||||
<input
|
<input
|
||||||
@ -541,13 +561,20 @@ export const Search: React.FC<{
|
|||||||
value={value}
|
value={value}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
onKeyDown={handleKeyDown}
|
onKeyDown={handleKeyDown}
|
||||||
onFocus={handleFocus}
|
onFocus={handleInputFocus}
|
||||||
onBlur={handleBlur}
|
onBlur={handleInputBlur}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<ClearButton hasValue={hasValue} onClick={handleClear} />
|
<ClearButton hasValue={hasValue} onClick={handleClear} />
|
||||||
|
|
||||||
<div className='search__popout' tabIndex={-1}>
|
{/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */}
|
||||||
|
<div
|
||||||
|
className='search__popout'
|
||||||
|
role='dialog'
|
||||||
|
tabIndex={-1}
|
||||||
|
aria-labelledby={searchOptionsHeading}
|
||||||
|
onKeyDown={handleKeyDown}
|
||||||
|
>
|
||||||
{!hasValue && (
|
{!hasValue && (
|
||||||
<>
|
<>
|
||||||
<h4>
|
<h4>
|
||||||
@ -565,6 +592,7 @@ export const Search: React.FC<{
|
|||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
role='button'
|
role='button'
|
||||||
onMouseDown={action}
|
onMouseDown={action}
|
||||||
|
onFocus={getOptionFocusHandler(i)}
|
||||||
className={classNames(
|
className={classNames(
|
||||||
'search__popout__menu__item search__popout__menu__item--flex',
|
'search__popout__menu__item search__popout__menu__item--flex',
|
||||||
{ selected: selectedOption === i },
|
{ selected: selectedOption === i },
|
||||||
@ -606,6 +634,7 @@ export const Search: React.FC<{
|
|||||||
<button
|
<button
|
||||||
key={key}
|
key={key}
|
||||||
onMouseDown={action}
|
onMouseDown={action}
|
||||||
|
onFocus={getOptionFocusHandler(i)}
|
||||||
className={classNames('search__popout__menu__item', {
|
className={classNames('search__popout__menu__item', {
|
||||||
selected: selectedOption === i,
|
selected: selectedOption === i,
|
||||||
})}
|
})}
|
||||||
@ -618,7 +647,7 @@ export const Search: React.FC<{
|
|||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<h4>
|
<h4 id={searchOptionsHeading}>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id='search_popout.options'
|
id='search_popout.options'
|
||||||
defaultMessage='Search options'
|
defaultMessage='Search options'
|
||||||
@ -627,20 +656,22 @@ export const Search: React.FC<{
|
|||||||
|
|
||||||
{searchEnabled && signedIn ? (
|
{searchEnabled && signedIn ? (
|
||||||
<div className='search__popout__menu'>
|
<div className='search__popout__menu'>
|
||||||
{searchOptions.map(({ key, label, action }, i) => (
|
{searchOptions.map(({ key, label, action }, i) => {
|
||||||
<button
|
const currentIndex = (quickActions.length || recent.length) + i;
|
||||||
key={key}
|
return (
|
||||||
onMouseDown={action}
|
<button
|
||||||
className={classNames('search__popout__menu__item', {
|
key={key}
|
||||||
selected:
|
onMouseDown={action}
|
||||||
selectedOption ===
|
onFocus={getOptionFocusHandler(currentIndex)}
|
||||||
(quickActions.length || recent.length) + i,
|
className={classNames('search__popout__menu__item', {
|
||||||
})}
|
selected: selectedOption === currentIndex,
|
||||||
type='button'
|
})}
|
||||||
>
|
type='button'
|
||||||
{label}
|
>
|
||||||
</button>
|
{label}
|
||||||
))}
|
</button>
|
||||||
|
);
|
||||||
|
})}
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div className='search__popout__menu__message'>
|
<div className='search__popout__menu__message'>
|
||||||
|
|||||||
@ -43,11 +43,26 @@ describe('emoji database', () => {
|
|||||||
describe('putCustomEmojiData', () => {
|
describe('putCustomEmojiData', () => {
|
||||||
test('loads custom emoji into indexedDB', async () => {
|
test('loads custom emoji into indexedDB', async () => {
|
||||||
const { db } = await testGet();
|
const { db } = await testGet();
|
||||||
await putCustomEmojiData([customEmojiFactory()]);
|
await putCustomEmojiData({ emojis: [customEmojiFactory()] });
|
||||||
await expect(db.get('custom', 'custom')).resolves.toEqual(
|
await expect(db.get('custom', 'custom')).resolves.toEqual(
|
||||||
customEmojiFactory(),
|
customEmojiFactory(),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('clears existing custom emoji if specified', async () => {
|
||||||
|
const { db } = await testGet();
|
||||||
|
await putCustomEmojiData({
|
||||||
|
emojis: [customEmojiFactory({ shortcode: 'emoji1' })],
|
||||||
|
});
|
||||||
|
await putCustomEmojiData({
|
||||||
|
emojis: [customEmojiFactory({ shortcode: 'emoji2' })],
|
||||||
|
clear: true,
|
||||||
|
});
|
||||||
|
await expect(db.get('custom', 'emoji1')).resolves.toBeUndefined();
|
||||||
|
await expect(db.get('custom', 'emoji2')).resolves.toEqual(
|
||||||
|
customEmojiFactory({ shortcode: 'emoji2' }),
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('putLegacyShortcodes', () => {
|
describe('putLegacyShortcodes', () => {
|
||||||
|
|||||||
@ -5,11 +5,7 @@ import { openDB } from 'idb';
|
|||||||
|
|
||||||
import { EMOJI_DB_SHORTCODE_TEST } from './constants';
|
import { EMOJI_DB_SHORTCODE_TEST } from './constants';
|
||||||
import { toSupportedLocale, toSupportedLocaleOrCustom } from './locale';
|
import { toSupportedLocale, toSupportedLocaleOrCustom } from './locale';
|
||||||
import type {
|
import type { CustomEmojiData, UnicodeEmojiData, EtagTypes } from './types';
|
||||||
CustomEmojiData,
|
|
||||||
UnicodeEmojiData,
|
|
||||||
LocaleOrCustom,
|
|
||||||
} from './types';
|
|
||||||
import { emojiLogger } from './utils';
|
import { emojiLogger } from './utils';
|
||||||
|
|
||||||
interface EmojiDB extends LocaleTables, DBSchema {
|
interface EmojiDB extends LocaleTables, DBSchema {
|
||||||
@ -32,7 +28,7 @@ interface EmojiDB extends LocaleTables, DBSchema {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
etags: {
|
etags: {
|
||||||
key: LocaleOrCustom;
|
key: EtagTypes;
|
||||||
value: string;
|
value: string;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -161,11 +157,26 @@ export async function putEmojiData(emojis: UnicodeEmojiData[], locale: Locale) {
|
|||||||
await trx.done;
|
await trx.done;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function putCustomEmojiData(emojis: CustomEmojiData[]) {
|
export async function putCustomEmojiData({
|
||||||
|
emojis,
|
||||||
|
clear = false,
|
||||||
|
}: {
|
||||||
|
emojis: CustomEmojiData[];
|
||||||
|
clear?: boolean;
|
||||||
|
}) {
|
||||||
const db = await loadDB();
|
const db = await loadDB();
|
||||||
const trx = db.transaction('custom', 'readwrite');
|
const trx = db.transaction('custom', 'readwrite');
|
||||||
|
|
||||||
|
// When importing from the API, clear everything first.
|
||||||
|
if (clear) {
|
||||||
|
await trx.store.clear();
|
||||||
|
log('Cleared existing custom emojis in database');
|
||||||
|
}
|
||||||
|
|
||||||
await Promise.all(emojis.map((emoji) => trx.store.put(emoji)));
|
await Promise.all(emojis.map((emoji) => trx.store.put(emoji)));
|
||||||
await trx.done;
|
await trx.done;
|
||||||
|
|
||||||
|
log('Imported %d custom emojis into database', emojis.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function putLegacyShortcodes(shortcodes: ShortcodesDataset) {
|
export async function putLegacyShortcodes(shortcodes: ShortcodesDataset) {
|
||||||
@ -182,10 +193,16 @@ export async function putLegacyShortcodes(shortcodes: ShortcodesDataset) {
|
|||||||
await trx.done;
|
await trx.done;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function putLatestEtag(etag: string, localeString: string) {
|
export async function putLatestEtag(etag: string, name: EtagTypes) {
|
||||||
|
const db = await loadDB();
|
||||||
|
await db.put('etags', etag, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function clearEtag(localeString: string) {
|
||||||
const locale = toSupportedLocaleOrCustom(localeString);
|
const locale = toSupportedLocaleOrCustom(localeString);
|
||||||
const db = await loadDB();
|
const db = await loadDB();
|
||||||
await db.put('etags', etag, locale);
|
await db.delete('etags', locale);
|
||||||
|
log('Cleared etag for %s', locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function loadEmojiByHexcode(
|
export async function loadEmojiByHexcode(
|
||||||
|
|||||||
@ -1,14 +1,9 @@
|
|||||||
import type { Locale } from 'emojibase';
|
|
||||||
|
|
||||||
import { initialState } from '@/flavours/glitch/initial_state';
|
import { initialState } from '@/flavours/glitch/initial_state';
|
||||||
|
|
||||||
import type { EMOJI_DB_NAME_SHORTCODES, EMOJI_TYPE_CUSTOM } from './constants';
|
import type { EMOJI_DB_NAME_SHORTCODES } from './constants';
|
||||||
import { importLegacyShortcodes, localeToShortcodesPath } from './loader';
|
|
||||||
import { toSupportedLocale } from './locale';
|
import { toSupportedLocale } from './locale';
|
||||||
import type { LocaleOrCustom } from './types';
|
import type { LocaleOrCustom } from './types';
|
||||||
import { emojiLogger } from './utils';
|
import { emojiLogger } from './utils';
|
||||||
// eslint-disable-next-line import/default -- Importing via worker loader.
|
|
||||||
import EmojiWorker from './worker?worker&inline';
|
|
||||||
|
|
||||||
const userLocale = toSupportedLocale(initialState?.meta.locale ?? 'en');
|
const userLocale = toSupportedLocale(initialState?.meta.locale ?? 'en');
|
||||||
|
|
||||||
@ -16,50 +11,57 @@ let worker: Worker | null = null;
|
|||||||
|
|
||||||
const log = emojiLogger('index');
|
const log = emojiLogger('index');
|
||||||
|
|
||||||
const WORKER_TIMEOUT = 1_000; // 1 second
|
// This is too short, but better to fallback quickly than wait.
|
||||||
|
const WORKER_TIMEOUT = 1_000;
|
||||||
|
|
||||||
export function initializeEmoji() {
|
export async function initializeEmoji() {
|
||||||
log('initializing emojis');
|
log('initializing emojis');
|
||||||
|
|
||||||
|
// Create a temp worker, and assign it to the module-level worker once we know it's ready.
|
||||||
|
let tempWorker: Worker | null = null;
|
||||||
if (!worker && 'Worker' in window) {
|
if (!worker && 'Worker' in window) {
|
||||||
try {
|
try {
|
||||||
worker = new EmojiWorker();
|
const { default: EmojiWorker } = await import('./worker?worker&inline');
|
||||||
|
tempWorker = new EmojiWorker();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.warn('Error creating web worker:', err);
|
console.warn('Error creating web worker:', err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (worker) {
|
if (!tempWorker) {
|
||||||
const timeoutId = setTimeout(() => {
|
|
||||||
log('worker is not ready after timeout');
|
|
||||||
worker = null;
|
|
||||||
void fallbackLoad();
|
|
||||||
}, WORKER_TIMEOUT);
|
|
||||||
worker.addEventListener('message', (event: MessageEvent<string>) => {
|
|
||||||
const { data: message } = event;
|
|
||||||
if (message === 'ready') {
|
|
||||||
log('worker ready, loading data');
|
|
||||||
clearTimeout(timeoutId);
|
|
||||||
messageWorker('custom');
|
|
||||||
messageWorker('shortcodes');
|
|
||||||
void loadEmojiLocale(userLocale);
|
|
||||||
} else {
|
|
||||||
log('got worker message: %s', message);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
void fallbackLoad();
|
void fallbackLoad();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const timeoutId = setTimeout(() => {
|
||||||
|
log('worker is not ready after timeout');
|
||||||
|
void fallbackLoad();
|
||||||
|
}, WORKER_TIMEOUT);
|
||||||
|
|
||||||
|
tempWorker.addEventListener('message', (event: MessageEvent<string>) => {
|
||||||
|
const { data: message } = event;
|
||||||
|
|
||||||
|
worker ??= tempWorker;
|
||||||
|
|
||||||
|
if (message === 'ready') {
|
||||||
|
log('worker ready, loading data');
|
||||||
|
clearTimeout(timeoutId);
|
||||||
|
messageWorker('shortcodes');
|
||||||
|
void loadCustomEmoji();
|
||||||
|
void loadEmojiLocale(userLocale);
|
||||||
|
} else {
|
||||||
|
log('got worker message: %s', message);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function fallbackLoad() {
|
async function fallbackLoad() {
|
||||||
log('falling back to main thread for loading');
|
log('falling back to main thread for loading');
|
||||||
const { importCustomEmojiData } = await import('./loader');
|
|
||||||
const emojis = await importCustomEmojiData();
|
await loadCustomEmoji();
|
||||||
if (emojis) {
|
const { importLegacyShortcodes } = await import('./loader');
|
||||||
log('loaded %d custom emojis', emojis.length);
|
|
||||||
}
|
|
||||||
const shortcodes = await importLegacyShortcodes();
|
const shortcodes = await importLegacyShortcodes();
|
||||||
if (shortcodes.length) {
|
if (shortcodes?.length) {
|
||||||
log('loaded %d legacy shortcodes', shortcodes.length);
|
log('loaded %d legacy shortcodes', shortcodes.length);
|
||||||
}
|
}
|
||||||
await loadEmojiLocale(userLocale);
|
await loadEmojiLocale(userLocale);
|
||||||
@ -67,14 +69,11 @@ async function fallbackLoad() {
|
|||||||
|
|
||||||
async function loadEmojiLocale(localeString: string) {
|
async function loadEmojiLocale(localeString: string) {
|
||||||
const locale = toSupportedLocale(localeString);
|
const locale = toSupportedLocale(localeString);
|
||||||
const { importEmojiData, localeToEmojiPath: localeToPath } =
|
const { importEmojiData } = await import('./loader');
|
||||||
await import('./loader');
|
|
||||||
|
|
||||||
if (worker) {
|
if (worker) {
|
||||||
const path = await localeToPath(locale);
|
log('asking worker to load locale %s', locale);
|
||||||
const shortcodesPath = await localeToShortcodesPath(locale);
|
messageWorker(locale);
|
||||||
log('asking worker to load locale %s from %s', locale, path);
|
|
||||||
messageWorker(locale, path, shortcodesPath);
|
|
||||||
} else {
|
} else {
|
||||||
const emojis = await importEmojiData(locale);
|
const emojis = await importEmojiData(locale);
|
||||||
if (emojis) {
|
if (emojis) {
|
||||||
@ -83,17 +82,23 @@ async function loadEmojiLocale(localeString: string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function messageWorker(
|
export async function loadCustomEmoji() {
|
||||||
locale: typeof EMOJI_TYPE_CUSTOM | typeof EMOJI_DB_NAME_SHORTCODES,
|
if (worker) {
|
||||||
): void;
|
messageWorker('custom');
|
||||||
function messageWorker(locale: Locale, path: string, shortcodes?: string): void;
|
} else {
|
||||||
|
const { importCustomEmojiData } = await import('./loader');
|
||||||
|
const emojis = await importCustomEmojiData();
|
||||||
|
if (emojis && emojis.length > 0) {
|
||||||
|
log('loaded %d custom emojis', emojis.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function messageWorker(
|
function messageWorker(
|
||||||
locale: LocaleOrCustom | typeof EMOJI_DB_NAME_SHORTCODES,
|
locale: LocaleOrCustom | typeof EMOJI_DB_NAME_SHORTCODES,
|
||||||
path?: string,
|
|
||||||
shortcodes?: string,
|
|
||||||
) {
|
) {
|
||||||
if (!worker) {
|
if (!worker) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
worker.postMessage({ locale, path, shortcodes });
|
worker.postMessage({ locale });
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,46 +13,35 @@ import {
|
|||||||
putLatestEtag,
|
putLatestEtag,
|
||||||
putLegacyShortcodes,
|
putLegacyShortcodes,
|
||||||
} from './database';
|
} from './database';
|
||||||
import { toSupportedLocale, toSupportedLocaleOrCustom } from './locale';
|
import { toSupportedLocale, toValidEtagName } from './locale';
|
||||||
import type { CustomEmojiData } from './types';
|
import type { CustomEmojiData } from './types';
|
||||||
|
import { emojiLogger } from './utils';
|
||||||
|
|
||||||
export async function importEmojiData(
|
const log = emojiLogger('loader');
|
||||||
localeString: string,
|
|
||||||
path?: string,
|
export async function importEmojiData(localeString: string, shortcodes = true) {
|
||||||
shortcodes: boolean | string = true,
|
|
||||||
) {
|
|
||||||
const locale = toSupportedLocale(localeString);
|
const locale = toSupportedLocale(localeString);
|
||||||
|
|
||||||
// Validate the provided path.
|
log(
|
||||||
if (path && !/^[/a-z]*\/packs\/assets\/compact-\w+\.json$/.test(path)) {
|
'importing emoji data for locale %s%s',
|
||||||
throw new Error('Invalid path for emoji data');
|
locale,
|
||||||
} else {
|
shortcodes ? ' and shortcodes' : '',
|
||||||
// Otherwise get the path if not provided.
|
);
|
||||||
path ??= await localeToEmojiPath(locale);
|
|
||||||
}
|
|
||||||
|
|
||||||
const emojis = await fetchAndCheckEtag<CompactEmoji[]>(locale, path);
|
const emojis = await fetchAndCheckEtag<CompactEmoji[]>({
|
||||||
|
etagString: locale,
|
||||||
|
path: localeToEmojiPath(locale),
|
||||||
|
});
|
||||||
if (!emojis) {
|
if (!emojis) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const shortcodesData: ShortcodesDataset[] = [];
|
const shortcodesData: ShortcodesDataset[] = [];
|
||||||
if (shortcodes) {
|
if (shortcodes) {
|
||||||
if (
|
const shortcodesResponse = await fetchAndCheckEtag<ShortcodesDataset>({
|
||||||
typeof shortcodes === 'string' &&
|
etagString: `${locale}-shortcodes`,
|
||||||
!/^[/a-z]*\/packs\/assets\/shortcodes\/cldr\.json$/.test(shortcodes)
|
path: localeToShortcodesPath(locale),
|
||||||
) {
|
});
|
||||||
throw new Error('Invalid path for shortcodes data');
|
|
||||||
}
|
|
||||||
const shortcodesPath =
|
|
||||||
typeof shortcodes === 'string'
|
|
||||||
? shortcodes
|
|
||||||
: await localeToShortcodesPath(locale);
|
|
||||||
const shortcodesResponse = await fetchAndCheckEtag<ShortcodesDataset>(
|
|
||||||
locale,
|
|
||||||
shortcodesPath,
|
|
||||||
false,
|
|
||||||
);
|
|
||||||
if (shortcodesResponse) {
|
if (shortcodesResponse) {
|
||||||
shortcodesData.push(shortcodesResponse);
|
shortcodesData.push(shortcodesResponse);
|
||||||
} else {
|
} else {
|
||||||
@ -69,88 +58,88 @@ export async function importEmojiData(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function importCustomEmojiData() {
|
export async function importCustomEmojiData() {
|
||||||
const emojis = await fetchAndCheckEtag<CustomEmojiData[]>(
|
const emojis = await fetchAndCheckEtag<CustomEmojiData[]>({
|
||||||
'custom',
|
etagString: 'custom',
|
||||||
'/api/v1/custom_emojis',
|
path: '/api/v1/custom_emojis',
|
||||||
);
|
});
|
||||||
if (!emojis) {
|
if (!emojis) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await putCustomEmojiData(emojis);
|
await putCustomEmojiData({ emojis, clear: true });
|
||||||
return emojis;
|
return emojis;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function importLegacyShortcodes() {
|
export async function importLegacyShortcodes() {
|
||||||
const { default: shortcodesPath } =
|
const globPaths = import.meta.glob<string>(
|
||||||
await import('emojibase-data/en/shortcodes/iamcal.json?url');
|
// We use import.meta.glob to eagerly load the URL, as the regular import() doesn't work inside the Web Worker.
|
||||||
const response = await fetch(shortcodesPath);
|
'../../../../../../node_modules/emojibase-data/en/shortcodes/iamcal.json',
|
||||||
if (!response.ok) {
|
{ eager: true, import: 'default', query: '?url' },
|
||||||
throw new Error(
|
);
|
||||||
`Failed to fetch legacy shortcodes data: ${response.statusText}`,
|
const path = Object.values(globPaths)[0];
|
||||||
);
|
if (!path) {
|
||||||
|
throw new Error('IAMCAL shortcodes path not found');
|
||||||
|
}
|
||||||
|
const shortcodesData = await fetchAndCheckEtag<ShortcodesDataset>({
|
||||||
|
checkEtag: true,
|
||||||
|
etagString: 'shortcodes',
|
||||||
|
path,
|
||||||
|
});
|
||||||
|
if (!shortcodesData) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
const shortcodesData = (await response.json()) as ShortcodesDataset;
|
|
||||||
await putLegacyShortcodes(shortcodesData);
|
await putLegacyShortcodes(shortcodesData);
|
||||||
return Object.keys(shortcodesData);
|
return Object.keys(shortcodesData);
|
||||||
}
|
}
|
||||||
|
|
||||||
const emojiModules = new Map(
|
function localeToEmojiPath(locale: Locale) {
|
||||||
Object.entries(
|
const key = `../../../../../../node_modules/emojibase-data/${locale}/compact.json`;
|
||||||
import.meta.glob<string>(
|
const emojiModules = import.meta.glob<string>(
|
||||||
'../../../../../../node_modules/emojibase-data/**/compact.json',
|
'../../../../../../node_modules/emojibase-data/**/compact.json',
|
||||||
{
|
{
|
||||||
query: '?url',
|
query: '?url',
|
||||||
import: 'default',
|
import: 'default',
|
||||||
},
|
eager: true,
|
||||||
),
|
},
|
||||||
).map(([key, loader]) => {
|
);
|
||||||
const match = /emojibase-data\/([^/]+)\/compact\.json$/.exec(key);
|
const path = emojiModules[key];
|
||||||
return [match?.at(1) ?? key, loader];
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
|
|
||||||
export function localeToEmojiPath(locale: Locale) {
|
|
||||||
const path = emojiModules.get(locale);
|
|
||||||
if (!path) {
|
if (!path) {
|
||||||
throw new Error(`Unsupported locale: ${locale}`);
|
throw new Error(`Unsupported locale: ${locale}`);
|
||||||
}
|
}
|
||||||
return path();
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
const shortcodesModules = new Map(
|
function localeToShortcodesPath(locale: Locale) {
|
||||||
Object.entries(
|
const key = `../../../../../../node_modules/emojibase-data/${locale}/shortcodes/cldr.json`;
|
||||||
import.meta.glob<string>(
|
const shortcodesModules = import.meta.glob<string>(
|
||||||
'../../../../../../node_modules/emojibase-data/**/shortcodes/cldr.json',
|
'../../../../../../node_modules/emojibase-data/**/shortcodes/cldr.json',
|
||||||
{
|
{
|
||||||
query: '?url',
|
query: '?url',
|
||||||
import: 'default',
|
import: 'default',
|
||||||
},
|
eager: true,
|
||||||
),
|
},
|
||||||
).map(([key, loader]) => {
|
);
|
||||||
const match = /emojibase-data\/([^/]+)\/shortcodes\/cldr\.json$/.exec(key);
|
const path = shortcodesModules[key];
|
||||||
return [match?.at(1) ?? key, loader];
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
|
|
||||||
export function localeToShortcodesPath(locale: Locale) {
|
|
||||||
const path = shortcodesModules.get(locale);
|
|
||||||
if (!path) {
|
if (!path) {
|
||||||
throw new Error(`Unsupported locale for shortcodes: ${locale}`);
|
throw new Error(`Unsupported locale for shortcodes: ${locale}`);
|
||||||
}
|
}
|
||||||
return path();
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function fetchAndCheckEtag<ResultType extends object[] | object>(
|
async function fetchAndCheckEtag<ResultType extends object[] | object>({
|
||||||
localeString: string,
|
etagString,
|
||||||
path: string,
|
path,
|
||||||
checkEtag = true,
|
checkEtag = false,
|
||||||
): Promise<ResultType | null> {
|
}: {
|
||||||
const locale = toSupportedLocaleOrCustom(localeString);
|
etagString: string;
|
||||||
|
path: string;
|
||||||
|
checkEtag?: boolean;
|
||||||
|
}): Promise<ResultType | null> {
|
||||||
|
const etagName = toValidEtagName(etagString);
|
||||||
|
|
||||||
// Use location.origin as this script may be loaded from a CDN domain.
|
// Use location.origin as this script may be loaded from a CDN domain.
|
||||||
const url = new URL(path, location.origin);
|
const url = new URL(path, location.origin);
|
||||||
|
|
||||||
const oldEtag = checkEtag ? await loadLatestEtag(locale) : null;
|
const oldEtag = checkEtag ? await loadLatestEtag(etagName) : null;
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
@ -163,7 +152,7 @@ export async function fetchAndCheckEtag<ResultType extends object[] | object>(
|
|||||||
}
|
}
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Failed to fetch emoji data for ${locale}: ${response.statusText}`,
|
`Failed to fetch emoji data for ${etagName}: ${response.statusText}`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,7 +161,8 @@ export async function fetchAndCheckEtag<ResultType extends object[] | object>(
|
|||||||
// Store the ETag for future requests
|
// Store the ETag for future requests
|
||||||
const etag = response.headers.get('ETag');
|
const etag = response.headers.get('ETag');
|
||||||
if (etag && checkEtag) {
|
if (etag && checkEtag) {
|
||||||
await putLatestEtag(etag, localeString);
|
log(`storing new etag for ${etagName}: ${etag}`);
|
||||||
|
await putLatestEtag(etag, etagName);
|
||||||
}
|
}
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
import type { Locale } from 'emojibase';
|
import type { Locale } from 'emojibase';
|
||||||
import { SUPPORTED_LOCALES } from 'emojibase';
|
import { SUPPORTED_LOCALES } from 'emojibase';
|
||||||
|
|
||||||
import type { LocaleOrCustom } from './types';
|
import { EMOJI_DB_NAME_SHORTCODES, EMOJI_TYPE_CUSTOM } from './constants';
|
||||||
|
import type { EtagTypes, LocaleOrCustom, LocaleWithShortcodes } from './types';
|
||||||
|
|
||||||
export function toSupportedLocale(localeBase: string): Locale {
|
export function toSupportedLocale(localeBase: string): Locale {
|
||||||
const locale = localeBase.toLowerCase();
|
const locale = localeBase.toLowerCase();
|
||||||
@ -12,12 +13,35 @@ export function toSupportedLocale(localeBase: string): Locale {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function toSupportedLocaleOrCustom(locale: string): LocaleOrCustom {
|
export function toSupportedLocaleOrCustom(locale: string): LocaleOrCustom {
|
||||||
if (locale.toLowerCase() === 'custom') {
|
if (locale.toLowerCase() === EMOJI_TYPE_CUSTOM) {
|
||||||
return 'custom';
|
return EMOJI_TYPE_CUSTOM;
|
||||||
}
|
}
|
||||||
return toSupportedLocale(locale);
|
return toSupportedLocale(locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isSupportedLocale(locale: string): locale is Locale {
|
export function toValidEtagName(input: string): EtagTypes {
|
||||||
return SUPPORTED_LOCALES.includes(locale.toLowerCase() as Locale);
|
const lower = input.toLowerCase();
|
||||||
|
if (lower === EMOJI_TYPE_CUSTOM || lower === EMOJI_DB_NAME_SHORTCODES) {
|
||||||
|
return lower;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isLocaleWithShortcodes(lower)) {
|
||||||
|
return lower;
|
||||||
|
}
|
||||||
|
|
||||||
|
return toSupportedLocale(lower);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isSupportedLocale(locale: string): locale is Locale {
|
||||||
|
return SUPPORTED_LOCALES.includes(locale as Locale);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isLocaleWithShortcodes(input: string): input is LocaleWithShortcodes {
|
||||||
|
const [baseLocale, shortcodes] = input.split('-');
|
||||||
|
return (
|
||||||
|
!!baseLocale &&
|
||||||
|
!!shortcodes &&
|
||||||
|
isSupportedLocale(baseLocale) &&
|
||||||
|
shortcodes === EMOJI_DB_NAME_SHORTCODES
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -83,12 +83,8 @@ describe('stringToEmojiState', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test('returns custom emoji state for valid custom emoji', () => {
|
test('returns null for custom emoji without data', () => {
|
||||||
expect(stringToEmojiState(':smile:')).toEqual({
|
expect(stringToEmojiState(':smile:')).toBeNull();
|
||||||
type: 'custom',
|
|
||||||
code: 'smile',
|
|
||||||
data: undefined,
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('returns custom emoji state with data when provided', () => {
|
test('returns custom emoji state with data when provided', () => {
|
||||||
@ -108,7 +104,6 @@ describe('stringToEmojiState', () => {
|
|||||||
|
|
||||||
test('returns null for invalid emoji strings', () => {
|
test('returns null for invalid emoji strings', () => {
|
||||||
expect(stringToEmojiState('notanemoji')).toBeNull();
|
expect(stringToEmojiState('notanemoji')).toBeNull();
|
||||||
expect(stringToEmojiState(':invalid-emoji:')).toBeNull();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -142,21 +137,13 @@ describe('loadEmojiDataToState', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test('loads custom emoji data into state', async () => {
|
test('returns null for custom emoji without data', async () => {
|
||||||
const dbCall = vi
|
|
||||||
.spyOn(db, 'loadCustomEmojiByShortcode')
|
|
||||||
.mockResolvedValueOnce(customEmojiFactory());
|
|
||||||
const customState = {
|
const customState = {
|
||||||
type: 'custom',
|
type: 'custom',
|
||||||
code: 'smile',
|
code: 'smile',
|
||||||
} as const satisfies EmojiStateCustom;
|
} as const satisfies EmojiStateCustom;
|
||||||
const result = await loadEmojiDataToState(customState, 'en');
|
const result = await loadEmojiDataToState(customState, 'en');
|
||||||
expect(dbCall).toHaveBeenCalledWith('smile');
|
expect(result).toBeNull();
|
||||||
expect(result).toEqual({
|
|
||||||
type: 'custom',
|
|
||||||
code: 'smile',
|
|
||||||
data: customEmojiFactory(),
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('loads unicode data using legacy shortcode', async () => {
|
test('loads unicode data using legacy shortcode', async () => {
|
||||||
@ -194,16 +181,6 @@ describe('loadEmojiDataToState', () => {
|
|||||||
expect(result).toBeNull();
|
expect(result).toBeNull();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('returns null if custom emoji not found in database', async () => {
|
|
||||||
vi.spyOn(db, 'loadCustomEmojiByShortcode').mockResolvedValueOnce(undefined);
|
|
||||||
const customState = {
|
|
||||||
type: 'custom',
|
|
||||||
code: 'smile',
|
|
||||||
} as const satisfies EmojiStateCustom;
|
|
||||||
const result = await loadEmojiDataToState(customState, 'en');
|
|
||||||
expect(result).toBeNull();
|
|
||||||
});
|
|
||||||
|
|
||||||
test('retries loading emoji data once if initial load fails', async () => {
|
test('retries loading emoji data once if initial load fails', async () => {
|
||||||
const dbCall = vi
|
const dbCall = vi
|
||||||
.spyOn(db, 'loadEmojiByHexcode')
|
.spyOn(db, 'loadEmojiByHexcode')
|
||||||
|
|||||||
@ -4,13 +4,6 @@ import {
|
|||||||
EMOJI_TYPE_UNICODE,
|
EMOJI_TYPE_UNICODE,
|
||||||
EMOJI_TYPE_CUSTOM,
|
EMOJI_TYPE_CUSTOM,
|
||||||
} from './constants';
|
} from './constants';
|
||||||
import {
|
|
||||||
loadCustomEmojiByShortcode,
|
|
||||||
loadEmojiByHexcode,
|
|
||||||
loadLegacyShortcodesByShortcode,
|
|
||||||
LocaleNotLoadedError,
|
|
||||||
} from './database';
|
|
||||||
import { importEmojiData } from './loader';
|
|
||||||
import { emojiToUnicodeHex } from './normalize';
|
import { emojiToUnicodeHex } from './normalize';
|
||||||
import type {
|
import type {
|
||||||
EmojiLoadedState,
|
EmojiLoadedState,
|
||||||
@ -80,7 +73,7 @@ export function tokenizeText(text: string): TokenizedText {
|
|||||||
export function stringToEmojiState(
|
export function stringToEmojiState(
|
||||||
code: string,
|
code: string,
|
||||||
customEmoji: ExtraCustomEmojiMap = {},
|
customEmoji: ExtraCustomEmojiMap = {},
|
||||||
): EmojiState | null {
|
): EmojiStateUnicode | Required<EmojiStateCustom> | null {
|
||||||
if (isUnicodeEmoji(code)) {
|
if (isUnicodeEmoji(code)) {
|
||||||
return {
|
return {
|
||||||
type: EMOJI_TYPE_UNICODE,
|
type: EMOJI_TYPE_UNICODE,
|
||||||
@ -90,11 +83,13 @@ export function stringToEmojiState(
|
|||||||
|
|
||||||
if (isCustomEmoji(code)) {
|
if (isCustomEmoji(code)) {
|
||||||
const shortCode = code.slice(1, -1);
|
const shortCode = code.slice(1, -1);
|
||||||
return {
|
if (customEmoji[shortCode]) {
|
||||||
type: EMOJI_TYPE_CUSTOM,
|
return {
|
||||||
code: shortCode,
|
type: EMOJI_TYPE_CUSTOM,
|
||||||
data: customEmoji[shortCode],
|
code: shortCode,
|
||||||
};
|
data: customEmoji[shortCode],
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -115,33 +110,35 @@ export async function loadEmojiDataToState(
|
|||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Don't try to load data for custom emoji.
|
||||||
|
if (state.type === EMOJI_TYPE_CUSTOM) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const {
|
||||||
|
loadLegacyShortcodesByShortcode,
|
||||||
|
loadEmojiByHexcode,
|
||||||
|
LocaleNotLoadedError,
|
||||||
|
} = await import('./database');
|
||||||
|
|
||||||
// First, try to load the data from IndexedDB.
|
// First, try to load the data from IndexedDB.
|
||||||
try {
|
try {
|
||||||
const legacyCode = await loadLegacyShortcodesByShortcode(state.code);
|
const legacyCode = await loadLegacyShortcodesByShortcode(state.code);
|
||||||
// This is duplicative, but that's because TS can't distinguish the state type easily.
|
// This is duplicative, but that's because TS can't distinguish the state type easily.
|
||||||
if (state.type === EMOJI_TYPE_UNICODE || legacyCode) {
|
const data = await loadEmojiByHexcode(
|
||||||
const data = await loadEmojiByHexcode(
|
legacyCode?.hexcode ?? state.code,
|
||||||
legacyCode?.hexcode ?? state.code,
|
locale,
|
||||||
locale,
|
);
|
||||||
);
|
if (data) {
|
||||||
if (data) {
|
return {
|
||||||
return {
|
...state,
|
||||||
...state,
|
type: EMOJI_TYPE_UNICODE,
|
||||||
type: EMOJI_TYPE_UNICODE,
|
data,
|
||||||
data,
|
// TODO: Use CLDR shortcodes when the picker supports them.
|
||||||
// TODO: Use CLDR shortcodes when the picker supports them.
|
shortcode: legacyCode?.shortcodes.at(0),
|
||||||
shortcode: legacyCode?.shortcodes.at(0),
|
};
|
||||||
};
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
const data = await loadCustomEmojiByShortcode(state.code);
|
|
||||||
if (data) {
|
|
||||||
return {
|
|
||||||
...state,
|
|
||||||
data,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If not found, assume it's not an emoji and return null.
|
// If not found, assume it's not an emoji and return null.
|
||||||
log(
|
log(
|
||||||
'Could not find emoji %s of type %s for locale %s',
|
'Could not find emoji %s of type %s for locale %s',
|
||||||
@ -158,6 +155,7 @@ export async function loadEmojiDataToState(
|
|||||||
state.code,
|
state.code,
|
||||||
locale,
|
locale,
|
||||||
);
|
);
|
||||||
|
const { importEmojiData } = await import('./loader');
|
||||||
await importEmojiData(locale); // Use this from the loader file as it can be awaited.
|
await importEmojiData(locale); // Use this from the loader file as it can be awaited.
|
||||||
return loadEmojiDataToState(state, locale, true);
|
return loadEmojiDataToState(state, locale, true);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import type { CustomEmoji } from '@/flavours/glitch/models/custom_emoji';
|
|||||||
import type { RequiredExcept } from '@/flavours/glitch/utils/types';
|
import type { RequiredExcept } from '@/flavours/glitch/utils/types';
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
|
EMOJI_DB_NAME_SHORTCODES,
|
||||||
EMOJI_MODE_NATIVE,
|
EMOJI_MODE_NATIVE,
|
||||||
EMOJI_MODE_NATIVE_WITH_FLAGS,
|
EMOJI_MODE_NATIVE_WITH_FLAGS,
|
||||||
EMOJI_MODE_TWEMOJI,
|
EMOJI_MODE_TWEMOJI,
|
||||||
@ -20,6 +21,11 @@ export type EmojiMode =
|
|||||||
| typeof EMOJI_MODE_TWEMOJI;
|
| typeof EMOJI_MODE_TWEMOJI;
|
||||||
|
|
||||||
export type LocaleOrCustom = Locale | typeof EMOJI_TYPE_CUSTOM;
|
export type LocaleOrCustom = Locale | typeof EMOJI_TYPE_CUSTOM;
|
||||||
|
export type LocaleWithShortcodes = `${Locale}-shortcodes`;
|
||||||
|
export type EtagTypes =
|
||||||
|
| LocaleOrCustom
|
||||||
|
| typeof EMOJI_DB_NAME_SHORTCODES
|
||||||
|
| LocaleWithShortcodes;
|
||||||
|
|
||||||
export interface EmojiAppState {
|
export interface EmojiAppState {
|
||||||
locales: Locale[];
|
locales: Locale[];
|
||||||
|
|||||||
@ -8,24 +8,23 @@ import {
|
|||||||
addEventListener('message', handleMessage);
|
addEventListener('message', handleMessage);
|
||||||
self.postMessage('ready'); // After the worker is ready, notify the main thread
|
self.postMessage('ready'); // After the worker is ready, notify the main thread
|
||||||
|
|
||||||
function handleMessage(event: MessageEvent<{ locale: string; path?: string }>) {
|
function handleMessage(event: MessageEvent<{ locale: string }>) {
|
||||||
const {
|
const {
|
||||||
data: { locale, path },
|
data: { locale },
|
||||||
} = event;
|
} = event;
|
||||||
void loadData(locale, path);
|
void loadData(locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function loadData(locale: string, path?: string) {
|
async function loadData(locale: string) {
|
||||||
let importCount: number | undefined;
|
let importCount: number | undefined;
|
||||||
if (locale === EMOJI_TYPE_CUSTOM) {
|
if (locale === EMOJI_TYPE_CUSTOM) {
|
||||||
importCount = (await importCustomEmojiData())?.length;
|
importCount = (await importCustomEmojiData())?.length;
|
||||||
} else if (locale === EMOJI_DB_NAME_SHORTCODES) {
|
} else if (locale === EMOJI_DB_NAME_SHORTCODES) {
|
||||||
importCount = (await importLegacyShortcodes()).length;
|
importCount = (await importLegacyShortcodes())?.length;
|
||||||
} else if (path) {
|
|
||||||
importCount = (await importEmojiData(locale, path))?.length;
|
|
||||||
} else {
|
} else {
|
||||||
throw new Error('Path is required for loading locale emoji data');
|
importCount = (await importEmojiData(locale))?.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (importCount) {
|
if (importCount) {
|
||||||
self.postMessage(`loaded ${importCount} emojis into ${locale}`);
|
self.postMessage(`loaded ${importCount} emojis into ${locale}`);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,7 +34,7 @@ export const EmbeddedStatusContent: React.FC<{
|
|||||||
className={className}
|
className={className}
|
||||||
lang={status.get('language') as string}
|
lang={status.get('language') as string}
|
||||||
htmlString={status.get('contentHtml') as string}
|
htmlString={status.get('contentHtml') as string}
|
||||||
extraEmojis={status.get('emoji') as List<CustomEmoji>}
|
extraEmojis={status.get('emojis') as List<CustomEmoji>}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -30,7 +30,7 @@ function main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const { initializeEmoji } = await import('./features/emoji/index');
|
const { initializeEmoji } = await import('./features/emoji/index');
|
||||||
initializeEmoji();
|
await initializeEmoji();
|
||||||
|
|
||||||
const root = createRoot(mountNode);
|
const root = createRoot(mountNode);
|
||||||
root.render(<Mastodon {...props} />);
|
root.render(<Mastodon {...props} />);
|
||||||
|
|||||||
@ -675,7 +675,16 @@ export function selectComposeSuggestion(position, token, suggestion, path) {
|
|||||||
|
|
||||||
dispatch(useEmoji(suggestion));
|
dispatch(useEmoji(suggestion));
|
||||||
} else if (suggestion.type === 'hashtag') {
|
} else if (suggestion.type === 'hashtag') {
|
||||||
completion = token + suggestion.name.slice(token.length - 1);
|
// TODO: it could make sense to keep the “most capitalized” of the two
|
||||||
|
const tokenName = token.slice(1); // strip leading '#'
|
||||||
|
const suggestionPrefix = suggestion.name.slice(0, tokenName.length);
|
||||||
|
const prefixMatchesSuggestion = suggestionPrefix.localeCompare(tokenName, undefined, { sensitivity: 'accent' }) === 0;
|
||||||
|
if (prefixMatchesSuggestion) {
|
||||||
|
completion = token + suggestion.name.slice(tokenName.length);
|
||||||
|
} else {
|
||||||
|
completion = `${token.slice(0, 1)}${suggestion.name}`;
|
||||||
|
}
|
||||||
|
|
||||||
startPosition = position - 1;
|
startPosition = position - 1;
|
||||||
} else if (suggestion.type === 'account') {
|
} else if (suggestion.type === 'account') {
|
||||||
completion = `@${getState().getIn(['accounts', suggestion.id, 'acct'])}`;
|
completion = `@${getState().getIn(['accounts', suggestion.id, 'acct'])}`;
|
||||||
|
|||||||
22
app/javascript/mastodon/actions/importer/emoji.ts
Normal file
22
app/javascript/mastodon/actions/importer/emoji.ts
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import type { ApiCustomEmojiJSON } from '@/mastodon/api_types/custom_emoji';
|
||||||
|
import { loadCustomEmoji } from '@/mastodon/features/emoji';
|
||||||
|
|
||||||
|
export async function importCustomEmoji(emojis: ApiCustomEmojiJSON[]) {
|
||||||
|
if (emojis.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// First, check if we already have them all.
|
||||||
|
const { searchCustomEmojisByShortcodes, clearEtag } =
|
||||||
|
await import('@/mastodon/features/emoji/database');
|
||||||
|
|
||||||
|
const existingEmojis = await searchCustomEmojisByShortcodes(
|
||||||
|
emojis.map((emoji) => emoji.shortcode),
|
||||||
|
);
|
||||||
|
|
||||||
|
// If there's a mismatch, re-import all custom emojis.
|
||||||
|
if (existingEmojis.length < emojis.length) {
|
||||||
|
await clearEtag('custom');
|
||||||
|
await loadCustomEmoji();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,6 +1,7 @@
|
|||||||
import { createPollFromServerJSON } from 'mastodon/models/poll';
|
import { createPollFromServerJSON } from 'mastodon/models/poll';
|
||||||
|
|
||||||
import { importAccounts } from './accounts';
|
import { importAccounts } from './accounts';
|
||||||
|
import { importCustomEmoji } from './emoji';
|
||||||
import { normalizeStatus } from './normalizer';
|
import { normalizeStatus } from './normalizer';
|
||||||
import { importPolls } from './polls';
|
import { importPolls } from './polls';
|
||||||
|
|
||||||
@ -39,6 +40,10 @@ export function importFetchedAccounts(accounts) {
|
|||||||
if (account.moved) {
|
if (account.moved) {
|
||||||
processAccount(account.moved);
|
processAccount(account.moved);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (account.emojis && account.username === account.acct) {
|
||||||
|
importCustomEmoji(account.emojis);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
accounts.forEach(processAccount);
|
accounts.forEach(processAccount);
|
||||||
@ -80,6 +85,10 @@ export function importFetchedStatuses(statuses, options = {}) {
|
|||||||
if (status.card) {
|
if (status.card) {
|
||||||
status.card.authors.forEach(author => author.account && pushUnique(accounts, author.account));
|
status.card.authors.forEach(author => author.account && pushUnique(accounts, author.account));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (status.emojis && status.account.username === status.account.acct) {
|
||||||
|
importCustomEmoji(status.emojis);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
statuses.forEach(processStatus);
|
statuses.forEach(processStatus);
|
||||||
|
|||||||
@ -2,6 +2,8 @@ import escapeTextContentForBrowser from 'escape-html';
|
|||||||
|
|
||||||
import { expandSpoilers } from '../../initial_state';
|
import { expandSpoilers } from '../../initial_state';
|
||||||
|
|
||||||
|
import { importCustomEmoji } from './emoji';
|
||||||
|
|
||||||
const domParser = new DOMParser();
|
const domParser = new DOMParser();
|
||||||
|
|
||||||
export function searchTextFromRawStatus (status) {
|
export function searchTextFromRawStatus (status) {
|
||||||
@ -151,5 +153,9 @@ export function normalizeAnnouncement(announcement) {
|
|||||||
|
|
||||||
normalAnnouncement.contentHtml = normalAnnouncement.content;
|
normalAnnouncement.contentHtml = normalAnnouncement.content;
|
||||||
|
|
||||||
|
if (normalAnnouncement.emojis) {
|
||||||
|
importCustomEmoji(normalAnnouncement.emojis);
|
||||||
|
}
|
||||||
|
|
||||||
return normalAnnouncement;
|
return normalAnnouncement;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,7 +31,7 @@ export const ContentWarning: React.FC<{
|
|||||||
<EmojiHTML
|
<EmojiHTML
|
||||||
as='span'
|
as='span'
|
||||||
htmlString={text}
|
htmlString={text}
|
||||||
extraEmojis={status.get('emoji') as List<CustomEmoji>}
|
extraEmojis={status.get('emojis') as List<CustomEmoji>}
|
||||||
/>
|
/>
|
||||||
</StatusBanner>
|
</StatusBanner>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -2,6 +2,9 @@ import type { ComponentProps } from 'react';
|
|||||||
|
|
||||||
import type { Meta, StoryObj } from '@storybook/react-vite';
|
import type { Meta, StoryObj } from '@storybook/react-vite';
|
||||||
|
|
||||||
|
import { customEmojiFactory } from '@/testing/factories';
|
||||||
|
|
||||||
|
import { CustomEmojiProvider } from './context';
|
||||||
import { Emoji } from './index';
|
import { Emoji } from './index';
|
||||||
|
|
||||||
type EmojiProps = ComponentProps<typeof Emoji> & {
|
type EmojiProps = ComponentProps<typeof Emoji> & {
|
||||||
@ -34,7 +37,11 @@ const meta = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
render(args) {
|
render(args) {
|
||||||
return <Emoji {...args} />;
|
return (
|
||||||
|
<CustomEmojiProvider emojis={[customEmojiFactory()]}>
|
||||||
|
<Emoji {...args} />
|
||||||
|
</CustomEmojiProvider>
|
||||||
|
);
|
||||||
},
|
},
|
||||||
} satisfies Meta<EmojiProps>;
|
} satisfies Meta<EmojiProps>;
|
||||||
|
|
||||||
@ -49,9 +56,3 @@ export const CustomEmoji: Story = {
|
|||||||
code: ':custom:',
|
code: ':custom:',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export const LegacyEmoji: Story = {
|
|
||||||
args: {
|
|
||||||
code: ':copyright:',
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|||||||
@ -0,0 +1,3 @@
|
|||||||
|
.inlineIcon {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
@ -12,6 +12,8 @@ import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react';
|
|||||||
import { Button } from '../button';
|
import { Button } from '../button';
|
||||||
import { Icon } from '../icon';
|
import { Icon } from '../icon';
|
||||||
|
|
||||||
|
import classes from './remove_quote_hint.module.css';
|
||||||
|
|
||||||
const DISMISSIBLE_BANNER_ID = 'notifications/remove_quote_hint';
|
const DISMISSIBLE_BANNER_ID = 'notifications/remove_quote_hint';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -92,7 +94,7 @@ export const RemoveQuoteHint: React.FC<{
|
|||||||
id: 'status.more',
|
id: 'status.more',
|
||||||
defaultMessage: 'More',
|
defaultMessage: 'More',
|
||||||
})}
|
})}
|
||||||
style={{ verticalAlign: 'middle' }}
|
className={classes.inlineIcon}
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
}}
|
}}
|
||||||
|
|||||||
@ -1,4 +1,11 @@
|
|||||||
import { useCallback, useState, useRef, useEffect, useMemo } from 'react';
|
import {
|
||||||
|
useCallback,
|
||||||
|
useState,
|
||||||
|
useRef,
|
||||||
|
useEffect,
|
||||||
|
useMemo,
|
||||||
|
useId,
|
||||||
|
} from 'react';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
defineMessages,
|
defineMessages,
|
||||||
@ -432,12 +439,17 @@ export const Search: React.FC<{
|
|||||||
switch (e.key) {
|
switch (e.key) {
|
||||||
case 'Escape':
|
case 'Escape':
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
unfocus();
|
searchInputRef.current?.focus();
|
||||||
|
setExpanded(false);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 'ArrowDown':
|
case 'ArrowDown':
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
|
if (!expanded) {
|
||||||
|
setExpanded(true);
|
||||||
|
}
|
||||||
|
|
||||||
if (navigableOptions.length > 0) {
|
if (navigableOptions.length > 0) {
|
||||||
setSelectedOption(
|
setSelectedOption(
|
||||||
Math.min(selectedOption + 1, navigableOptions.length - 1),
|
Math.min(selectedOption + 1, navigableOptions.length - 1),
|
||||||
@ -476,10 +488,10 @@ export const Search: React.FC<{
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[unfocus, navigableOptions, selectedOption, submit, value],
|
[expanded, navigableOptions, selectedOption, submit, value],
|
||||||
);
|
);
|
||||||
|
|
||||||
const handleFocus = useCallback(() => {
|
const handleInputFocus = useCallback(() => {
|
||||||
setExpanded(true);
|
setExpanded(true);
|
||||||
setSelectedOption(-1);
|
setSelectedOption(-1);
|
||||||
|
|
||||||
@ -495,10 +507,16 @@ export const Search: React.FC<{
|
|||||||
}
|
}
|
||||||
}, [setExpanded, setSelectedOption, singleColumn]);
|
}, [setExpanded, setSelectedOption, singleColumn]);
|
||||||
|
|
||||||
const handleBlur = useCallback(() => {
|
const handleInputBlur = useCallback(() => {
|
||||||
setSelectedOption(-1);
|
setSelectedOption(-1);
|
||||||
}, [setSelectedOption]);
|
}, [setSelectedOption]);
|
||||||
|
|
||||||
|
const getOptionFocusHandler = useCallback((index: number) => {
|
||||||
|
return () => {
|
||||||
|
setSelectedOption(index);
|
||||||
|
};
|
||||||
|
}, []);
|
||||||
|
|
||||||
const formRef = useRef<HTMLFormElement>(null);
|
const formRef = useRef<HTMLFormElement>(null);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -526,6 +544,8 @@ export const Search: React.FC<{
|
|||||||
return () => null;
|
return () => null;
|
||||||
}, [expanded]);
|
}, [expanded]);
|
||||||
|
|
||||||
|
const searchOptionsHeading = useId();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<form ref={formRef} className={classNames('search', { active: expanded })}>
|
<form ref={formRef} className={classNames('search', { active: expanded })}>
|
||||||
<input
|
<input
|
||||||
@ -541,13 +561,20 @@ export const Search: React.FC<{
|
|||||||
value={value}
|
value={value}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
onKeyDown={handleKeyDown}
|
onKeyDown={handleKeyDown}
|
||||||
onFocus={handleFocus}
|
onFocus={handleInputFocus}
|
||||||
onBlur={handleBlur}
|
onBlur={handleInputBlur}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<ClearButton hasValue={hasValue} onClick={handleClear} />
|
<ClearButton hasValue={hasValue} onClick={handleClear} />
|
||||||
|
|
||||||
<div className='search__popout' tabIndex={-1}>
|
{/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */}
|
||||||
|
<div
|
||||||
|
className='search__popout'
|
||||||
|
role='dialog'
|
||||||
|
tabIndex={-1}
|
||||||
|
aria-labelledby={searchOptionsHeading}
|
||||||
|
onKeyDown={handleKeyDown}
|
||||||
|
>
|
||||||
{!hasValue && (
|
{!hasValue && (
|
||||||
<>
|
<>
|
||||||
<h4>
|
<h4>
|
||||||
@ -565,6 +592,7 @@ export const Search: React.FC<{
|
|||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
role='button'
|
role='button'
|
||||||
onMouseDown={action}
|
onMouseDown={action}
|
||||||
|
onFocus={getOptionFocusHandler(i)}
|
||||||
className={classNames(
|
className={classNames(
|
||||||
'search__popout__menu__item search__popout__menu__item--flex',
|
'search__popout__menu__item search__popout__menu__item--flex',
|
||||||
{ selected: selectedOption === i },
|
{ selected: selectedOption === i },
|
||||||
@ -606,6 +634,7 @@ export const Search: React.FC<{
|
|||||||
<button
|
<button
|
||||||
key={key}
|
key={key}
|
||||||
onMouseDown={action}
|
onMouseDown={action}
|
||||||
|
onFocus={getOptionFocusHandler(i)}
|
||||||
className={classNames('search__popout__menu__item', {
|
className={classNames('search__popout__menu__item', {
|
||||||
selected: selectedOption === i,
|
selected: selectedOption === i,
|
||||||
})}
|
})}
|
||||||
@ -618,7 +647,7 @@ export const Search: React.FC<{
|
|||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<h4>
|
<h4 id={searchOptionsHeading}>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id='search_popout.options'
|
id='search_popout.options'
|
||||||
defaultMessage='Search options'
|
defaultMessage='Search options'
|
||||||
@ -627,20 +656,22 @@ export const Search: React.FC<{
|
|||||||
|
|
||||||
{searchEnabled && signedIn ? (
|
{searchEnabled && signedIn ? (
|
||||||
<div className='search__popout__menu'>
|
<div className='search__popout__menu'>
|
||||||
{searchOptions.map(({ key, label, action }, i) => (
|
{searchOptions.map(({ key, label, action }, i) => {
|
||||||
<button
|
const currentIndex = (quickActions.length || recent.length) + i;
|
||||||
key={key}
|
return (
|
||||||
onMouseDown={action}
|
<button
|
||||||
className={classNames('search__popout__menu__item', {
|
key={key}
|
||||||
selected:
|
onMouseDown={action}
|
||||||
selectedOption ===
|
onFocus={getOptionFocusHandler(currentIndex)}
|
||||||
(quickActions.length || recent.length) + i,
|
className={classNames('search__popout__menu__item', {
|
||||||
})}
|
selected: selectedOption === currentIndex,
|
||||||
type='button'
|
})}
|
||||||
>
|
type='button'
|
||||||
{label}
|
>
|
||||||
</button>
|
{label}
|
||||||
))}
|
</button>
|
||||||
|
);
|
||||||
|
})}
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div className='search__popout__menu__message'>
|
<div className='search__popout__menu__message'>
|
||||||
|
|||||||
@ -43,11 +43,26 @@ describe('emoji database', () => {
|
|||||||
describe('putCustomEmojiData', () => {
|
describe('putCustomEmojiData', () => {
|
||||||
test('loads custom emoji into indexedDB', async () => {
|
test('loads custom emoji into indexedDB', async () => {
|
||||||
const { db } = await testGet();
|
const { db } = await testGet();
|
||||||
await putCustomEmojiData([customEmojiFactory()]);
|
await putCustomEmojiData({ emojis: [customEmojiFactory()] });
|
||||||
await expect(db.get('custom', 'custom')).resolves.toEqual(
|
await expect(db.get('custom', 'custom')).resolves.toEqual(
|
||||||
customEmojiFactory(),
|
customEmojiFactory(),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('clears existing custom emoji if specified', async () => {
|
||||||
|
const { db } = await testGet();
|
||||||
|
await putCustomEmojiData({
|
||||||
|
emojis: [customEmojiFactory({ shortcode: 'emoji1' })],
|
||||||
|
});
|
||||||
|
await putCustomEmojiData({
|
||||||
|
emojis: [customEmojiFactory({ shortcode: 'emoji2' })],
|
||||||
|
clear: true,
|
||||||
|
});
|
||||||
|
await expect(db.get('custom', 'emoji1')).resolves.toBeUndefined();
|
||||||
|
await expect(db.get('custom', 'emoji2')).resolves.toEqual(
|
||||||
|
customEmojiFactory({ shortcode: 'emoji2' }),
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('putLegacyShortcodes', () => {
|
describe('putLegacyShortcodes', () => {
|
||||||
|
|||||||
@ -5,11 +5,7 @@ import { openDB } from 'idb';
|
|||||||
|
|
||||||
import { EMOJI_DB_SHORTCODE_TEST } from './constants';
|
import { EMOJI_DB_SHORTCODE_TEST } from './constants';
|
||||||
import { toSupportedLocale, toSupportedLocaleOrCustom } from './locale';
|
import { toSupportedLocale, toSupportedLocaleOrCustom } from './locale';
|
||||||
import type {
|
import type { CustomEmojiData, UnicodeEmojiData, EtagTypes } from './types';
|
||||||
CustomEmojiData,
|
|
||||||
UnicodeEmojiData,
|
|
||||||
LocaleOrCustom,
|
|
||||||
} from './types';
|
|
||||||
import { emojiLogger } from './utils';
|
import { emojiLogger } from './utils';
|
||||||
|
|
||||||
interface EmojiDB extends LocaleTables, DBSchema {
|
interface EmojiDB extends LocaleTables, DBSchema {
|
||||||
@ -32,7 +28,7 @@ interface EmojiDB extends LocaleTables, DBSchema {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
etags: {
|
etags: {
|
||||||
key: LocaleOrCustom;
|
key: EtagTypes;
|
||||||
value: string;
|
value: string;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -161,11 +157,26 @@ export async function putEmojiData(emojis: UnicodeEmojiData[], locale: Locale) {
|
|||||||
await trx.done;
|
await trx.done;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function putCustomEmojiData(emojis: CustomEmojiData[]) {
|
export async function putCustomEmojiData({
|
||||||
|
emojis,
|
||||||
|
clear = false,
|
||||||
|
}: {
|
||||||
|
emojis: CustomEmojiData[];
|
||||||
|
clear?: boolean;
|
||||||
|
}) {
|
||||||
const db = await loadDB();
|
const db = await loadDB();
|
||||||
const trx = db.transaction('custom', 'readwrite');
|
const trx = db.transaction('custom', 'readwrite');
|
||||||
|
|
||||||
|
// When importing from the API, clear everything first.
|
||||||
|
if (clear) {
|
||||||
|
await trx.store.clear();
|
||||||
|
log('Cleared existing custom emojis in database');
|
||||||
|
}
|
||||||
|
|
||||||
await Promise.all(emojis.map((emoji) => trx.store.put(emoji)));
|
await Promise.all(emojis.map((emoji) => trx.store.put(emoji)));
|
||||||
await trx.done;
|
await trx.done;
|
||||||
|
|
||||||
|
log('Imported %d custom emojis into database', emojis.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function putLegacyShortcodes(shortcodes: ShortcodesDataset) {
|
export async function putLegacyShortcodes(shortcodes: ShortcodesDataset) {
|
||||||
@ -182,10 +193,16 @@ export async function putLegacyShortcodes(shortcodes: ShortcodesDataset) {
|
|||||||
await trx.done;
|
await trx.done;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function putLatestEtag(etag: string, localeString: string) {
|
export async function putLatestEtag(etag: string, name: EtagTypes) {
|
||||||
|
const db = await loadDB();
|
||||||
|
await db.put('etags', etag, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function clearEtag(localeString: string) {
|
||||||
const locale = toSupportedLocaleOrCustom(localeString);
|
const locale = toSupportedLocaleOrCustom(localeString);
|
||||||
const db = await loadDB();
|
const db = await loadDB();
|
||||||
await db.put('etags', etag, locale);
|
await db.delete('etags', locale);
|
||||||
|
log('Cleared etag for %s', locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function loadEmojiByHexcode(
|
export async function loadEmojiByHexcode(
|
||||||
|
|||||||
@ -1,14 +1,9 @@
|
|||||||
import type { Locale } from 'emojibase';
|
|
||||||
|
|
||||||
import { initialState } from '@/mastodon/initial_state';
|
import { initialState } from '@/mastodon/initial_state';
|
||||||
|
|
||||||
import type { EMOJI_DB_NAME_SHORTCODES, EMOJI_TYPE_CUSTOM } from './constants';
|
import type { EMOJI_DB_NAME_SHORTCODES } from './constants';
|
||||||
import { importLegacyShortcodes, localeToShortcodesPath } from './loader';
|
|
||||||
import { toSupportedLocale } from './locale';
|
import { toSupportedLocale } from './locale';
|
||||||
import type { LocaleOrCustom } from './types';
|
import type { LocaleOrCustom } from './types';
|
||||||
import { emojiLogger } from './utils';
|
import { emojiLogger } from './utils';
|
||||||
// eslint-disable-next-line import/default -- Importing via worker loader.
|
|
||||||
import EmojiWorker from './worker?worker&inline';
|
|
||||||
|
|
||||||
const userLocale = toSupportedLocale(initialState?.meta.locale ?? 'en');
|
const userLocale = toSupportedLocale(initialState?.meta.locale ?? 'en');
|
||||||
|
|
||||||
@ -16,50 +11,57 @@ let worker: Worker | null = null;
|
|||||||
|
|
||||||
const log = emojiLogger('index');
|
const log = emojiLogger('index');
|
||||||
|
|
||||||
const WORKER_TIMEOUT = 1_000; // 1 second
|
// This is too short, but better to fallback quickly than wait.
|
||||||
|
const WORKER_TIMEOUT = 1_000;
|
||||||
|
|
||||||
export function initializeEmoji() {
|
export async function initializeEmoji() {
|
||||||
log('initializing emojis');
|
log('initializing emojis');
|
||||||
|
|
||||||
|
// Create a temp worker, and assign it to the module-level worker once we know it's ready.
|
||||||
|
let tempWorker: Worker | null = null;
|
||||||
if (!worker && 'Worker' in window) {
|
if (!worker && 'Worker' in window) {
|
||||||
try {
|
try {
|
||||||
worker = new EmojiWorker();
|
const { default: EmojiWorker } = await import('./worker?worker&inline');
|
||||||
|
tempWorker = new EmojiWorker();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.warn('Error creating web worker:', err);
|
console.warn('Error creating web worker:', err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (worker) {
|
if (!tempWorker) {
|
||||||
const timeoutId = setTimeout(() => {
|
|
||||||
log('worker is not ready after timeout');
|
|
||||||
worker = null;
|
|
||||||
void fallbackLoad();
|
|
||||||
}, WORKER_TIMEOUT);
|
|
||||||
worker.addEventListener('message', (event: MessageEvent<string>) => {
|
|
||||||
const { data: message } = event;
|
|
||||||
if (message === 'ready') {
|
|
||||||
log('worker ready, loading data');
|
|
||||||
clearTimeout(timeoutId);
|
|
||||||
messageWorker('custom');
|
|
||||||
messageWorker('shortcodes');
|
|
||||||
void loadEmojiLocale(userLocale);
|
|
||||||
} else {
|
|
||||||
log('got worker message: %s', message);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
void fallbackLoad();
|
void fallbackLoad();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const timeoutId = setTimeout(() => {
|
||||||
|
log('worker is not ready after timeout');
|
||||||
|
void fallbackLoad();
|
||||||
|
}, WORKER_TIMEOUT);
|
||||||
|
|
||||||
|
tempWorker.addEventListener('message', (event: MessageEvent<string>) => {
|
||||||
|
const { data: message } = event;
|
||||||
|
|
||||||
|
worker ??= tempWorker;
|
||||||
|
|
||||||
|
if (message === 'ready') {
|
||||||
|
log('worker ready, loading data');
|
||||||
|
clearTimeout(timeoutId);
|
||||||
|
messageWorker('shortcodes');
|
||||||
|
void loadCustomEmoji();
|
||||||
|
void loadEmojiLocale(userLocale);
|
||||||
|
} else {
|
||||||
|
log('got worker message: %s', message);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function fallbackLoad() {
|
async function fallbackLoad() {
|
||||||
log('falling back to main thread for loading');
|
log('falling back to main thread for loading');
|
||||||
const { importCustomEmojiData } = await import('./loader');
|
|
||||||
const emojis = await importCustomEmojiData();
|
await loadCustomEmoji();
|
||||||
if (emojis) {
|
const { importLegacyShortcodes } = await import('./loader');
|
||||||
log('loaded %d custom emojis', emojis.length);
|
|
||||||
}
|
|
||||||
const shortcodes = await importLegacyShortcodes();
|
const shortcodes = await importLegacyShortcodes();
|
||||||
if (shortcodes.length) {
|
if (shortcodes?.length) {
|
||||||
log('loaded %d legacy shortcodes', shortcodes.length);
|
log('loaded %d legacy shortcodes', shortcodes.length);
|
||||||
}
|
}
|
||||||
await loadEmojiLocale(userLocale);
|
await loadEmojiLocale(userLocale);
|
||||||
@ -67,14 +69,11 @@ async function fallbackLoad() {
|
|||||||
|
|
||||||
async function loadEmojiLocale(localeString: string) {
|
async function loadEmojiLocale(localeString: string) {
|
||||||
const locale = toSupportedLocale(localeString);
|
const locale = toSupportedLocale(localeString);
|
||||||
const { importEmojiData, localeToEmojiPath: localeToPath } =
|
const { importEmojiData } = await import('./loader');
|
||||||
await import('./loader');
|
|
||||||
|
|
||||||
if (worker) {
|
if (worker) {
|
||||||
const path = await localeToPath(locale);
|
log('asking worker to load locale %s', locale);
|
||||||
const shortcodesPath = await localeToShortcodesPath(locale);
|
messageWorker(locale);
|
||||||
log('asking worker to load locale %s from %s', locale, path);
|
|
||||||
messageWorker(locale, path, shortcodesPath);
|
|
||||||
} else {
|
} else {
|
||||||
const emojis = await importEmojiData(locale);
|
const emojis = await importEmojiData(locale);
|
||||||
if (emojis) {
|
if (emojis) {
|
||||||
@ -83,17 +82,23 @@ async function loadEmojiLocale(localeString: string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function messageWorker(
|
export async function loadCustomEmoji() {
|
||||||
locale: typeof EMOJI_TYPE_CUSTOM | typeof EMOJI_DB_NAME_SHORTCODES,
|
if (worker) {
|
||||||
): void;
|
messageWorker('custom');
|
||||||
function messageWorker(locale: Locale, path: string, shortcodes?: string): void;
|
} else {
|
||||||
|
const { importCustomEmojiData } = await import('./loader');
|
||||||
|
const emojis = await importCustomEmojiData();
|
||||||
|
if (emojis && emojis.length > 0) {
|
||||||
|
log('loaded %d custom emojis', emojis.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function messageWorker(
|
function messageWorker(
|
||||||
locale: LocaleOrCustom | typeof EMOJI_DB_NAME_SHORTCODES,
|
locale: LocaleOrCustom | typeof EMOJI_DB_NAME_SHORTCODES,
|
||||||
path?: string,
|
|
||||||
shortcodes?: string,
|
|
||||||
) {
|
) {
|
||||||
if (!worker) {
|
if (!worker) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
worker.postMessage({ locale, path, shortcodes });
|
worker.postMessage({ locale });
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,46 +13,35 @@ import {
|
|||||||
putLatestEtag,
|
putLatestEtag,
|
||||||
putLegacyShortcodes,
|
putLegacyShortcodes,
|
||||||
} from './database';
|
} from './database';
|
||||||
import { toSupportedLocale, toSupportedLocaleOrCustom } from './locale';
|
import { toSupportedLocale, toValidEtagName } from './locale';
|
||||||
import type { CustomEmojiData } from './types';
|
import type { CustomEmojiData } from './types';
|
||||||
|
import { emojiLogger } from './utils';
|
||||||
|
|
||||||
export async function importEmojiData(
|
const log = emojiLogger('loader');
|
||||||
localeString: string,
|
|
||||||
path?: string,
|
export async function importEmojiData(localeString: string, shortcodes = true) {
|
||||||
shortcodes: boolean | string = true,
|
|
||||||
) {
|
|
||||||
const locale = toSupportedLocale(localeString);
|
const locale = toSupportedLocale(localeString);
|
||||||
|
|
||||||
// Validate the provided path.
|
log(
|
||||||
if (path && !/^[/a-z]*\/packs\/assets\/compact-\w+\.json$/.test(path)) {
|
'importing emoji data for locale %s%s',
|
||||||
throw new Error('Invalid path for emoji data');
|
locale,
|
||||||
} else {
|
shortcodes ? ' and shortcodes' : '',
|
||||||
// Otherwise get the path if not provided.
|
);
|
||||||
path ??= await localeToEmojiPath(locale);
|
|
||||||
}
|
|
||||||
|
|
||||||
const emojis = await fetchAndCheckEtag<CompactEmoji[]>(locale, path);
|
const emojis = await fetchAndCheckEtag<CompactEmoji[]>({
|
||||||
|
etagString: locale,
|
||||||
|
path: localeToEmojiPath(locale),
|
||||||
|
});
|
||||||
if (!emojis) {
|
if (!emojis) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const shortcodesData: ShortcodesDataset[] = [];
|
const shortcodesData: ShortcodesDataset[] = [];
|
||||||
if (shortcodes) {
|
if (shortcodes) {
|
||||||
if (
|
const shortcodesResponse = await fetchAndCheckEtag<ShortcodesDataset>({
|
||||||
typeof shortcodes === 'string' &&
|
etagString: `${locale}-shortcodes`,
|
||||||
!/^[/a-z]*\/packs\/assets\/shortcodes\/cldr\.json$/.test(shortcodes)
|
path: localeToShortcodesPath(locale),
|
||||||
) {
|
});
|
||||||
throw new Error('Invalid path for shortcodes data');
|
|
||||||
}
|
|
||||||
const shortcodesPath =
|
|
||||||
typeof shortcodes === 'string'
|
|
||||||
? shortcodes
|
|
||||||
: await localeToShortcodesPath(locale);
|
|
||||||
const shortcodesResponse = await fetchAndCheckEtag<ShortcodesDataset>(
|
|
||||||
locale,
|
|
||||||
shortcodesPath,
|
|
||||||
false,
|
|
||||||
);
|
|
||||||
if (shortcodesResponse) {
|
if (shortcodesResponse) {
|
||||||
shortcodesData.push(shortcodesResponse);
|
shortcodesData.push(shortcodesResponse);
|
||||||
} else {
|
} else {
|
||||||
@ -69,88 +58,88 @@ export async function importEmojiData(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function importCustomEmojiData() {
|
export async function importCustomEmojiData() {
|
||||||
const emojis = await fetchAndCheckEtag<CustomEmojiData[]>(
|
const emojis = await fetchAndCheckEtag<CustomEmojiData[]>({
|
||||||
'custom',
|
etagString: 'custom',
|
||||||
'/api/v1/custom_emojis',
|
path: '/api/v1/custom_emojis',
|
||||||
);
|
});
|
||||||
if (!emojis) {
|
if (!emojis) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await putCustomEmojiData(emojis);
|
await putCustomEmojiData({ emojis, clear: true });
|
||||||
return emojis;
|
return emojis;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function importLegacyShortcodes() {
|
export async function importLegacyShortcodes() {
|
||||||
const { default: shortcodesPath } =
|
const globPaths = import.meta.glob<string>(
|
||||||
await import('emojibase-data/en/shortcodes/iamcal.json?url');
|
// We use import.meta.glob to eagerly load the URL, as the regular import() doesn't work inside the Web Worker.
|
||||||
const response = await fetch(shortcodesPath);
|
'../../../../../node_modules/emojibase-data/en/shortcodes/iamcal.json',
|
||||||
if (!response.ok) {
|
{ eager: true, import: 'default', query: '?url' },
|
||||||
throw new Error(
|
);
|
||||||
`Failed to fetch legacy shortcodes data: ${response.statusText}`,
|
const path = Object.values(globPaths)[0];
|
||||||
);
|
if (!path) {
|
||||||
|
throw new Error('IAMCAL shortcodes path not found');
|
||||||
|
}
|
||||||
|
const shortcodesData = await fetchAndCheckEtag<ShortcodesDataset>({
|
||||||
|
checkEtag: true,
|
||||||
|
etagString: 'shortcodes',
|
||||||
|
path,
|
||||||
|
});
|
||||||
|
if (!shortcodesData) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
const shortcodesData = (await response.json()) as ShortcodesDataset;
|
|
||||||
await putLegacyShortcodes(shortcodesData);
|
await putLegacyShortcodes(shortcodesData);
|
||||||
return Object.keys(shortcodesData);
|
return Object.keys(shortcodesData);
|
||||||
}
|
}
|
||||||
|
|
||||||
const emojiModules = new Map(
|
function localeToEmojiPath(locale: Locale) {
|
||||||
Object.entries(
|
const key = `../../../../../node_modules/emojibase-data/${locale}/compact.json`;
|
||||||
import.meta.glob<string>(
|
const emojiModules = import.meta.glob<string>(
|
||||||
'../../../../../node_modules/emojibase-data/**/compact.json',
|
'../../../../../node_modules/emojibase-data/**/compact.json',
|
||||||
{
|
{
|
||||||
query: '?url',
|
query: '?url',
|
||||||
import: 'default',
|
import: 'default',
|
||||||
},
|
eager: true,
|
||||||
),
|
},
|
||||||
).map(([key, loader]) => {
|
);
|
||||||
const match = /emojibase-data\/([^/]+)\/compact\.json$/.exec(key);
|
const path = emojiModules[key];
|
||||||
return [match?.at(1) ?? key, loader];
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
|
|
||||||
export function localeToEmojiPath(locale: Locale) {
|
|
||||||
const path = emojiModules.get(locale);
|
|
||||||
if (!path) {
|
if (!path) {
|
||||||
throw new Error(`Unsupported locale: ${locale}`);
|
throw new Error(`Unsupported locale: ${locale}`);
|
||||||
}
|
}
|
||||||
return path();
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
const shortcodesModules = new Map(
|
function localeToShortcodesPath(locale: Locale) {
|
||||||
Object.entries(
|
const key = `../../../../../node_modules/emojibase-data/${locale}/shortcodes/cldr.json`;
|
||||||
import.meta.glob<string>(
|
const shortcodesModules = import.meta.glob<string>(
|
||||||
'../../../../../node_modules/emojibase-data/**/shortcodes/cldr.json',
|
'../../../../../node_modules/emojibase-data/**/shortcodes/cldr.json',
|
||||||
{
|
{
|
||||||
query: '?url',
|
query: '?url',
|
||||||
import: 'default',
|
import: 'default',
|
||||||
},
|
eager: true,
|
||||||
),
|
},
|
||||||
).map(([key, loader]) => {
|
);
|
||||||
const match = /emojibase-data\/([^/]+)\/shortcodes\/cldr\.json$/.exec(key);
|
const path = shortcodesModules[key];
|
||||||
return [match?.at(1) ?? key, loader];
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
|
|
||||||
export function localeToShortcodesPath(locale: Locale) {
|
|
||||||
const path = shortcodesModules.get(locale);
|
|
||||||
if (!path) {
|
if (!path) {
|
||||||
throw new Error(`Unsupported locale for shortcodes: ${locale}`);
|
throw new Error(`Unsupported locale for shortcodes: ${locale}`);
|
||||||
}
|
}
|
||||||
return path();
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function fetchAndCheckEtag<ResultType extends object[] | object>(
|
async function fetchAndCheckEtag<ResultType extends object[] | object>({
|
||||||
localeString: string,
|
etagString,
|
||||||
path: string,
|
path,
|
||||||
checkEtag = true,
|
checkEtag = false,
|
||||||
): Promise<ResultType | null> {
|
}: {
|
||||||
const locale = toSupportedLocaleOrCustom(localeString);
|
etagString: string;
|
||||||
|
path: string;
|
||||||
|
checkEtag?: boolean;
|
||||||
|
}): Promise<ResultType | null> {
|
||||||
|
const etagName = toValidEtagName(etagString);
|
||||||
|
|
||||||
// Use location.origin as this script may be loaded from a CDN domain.
|
// Use location.origin as this script may be loaded from a CDN domain.
|
||||||
const url = new URL(path, location.origin);
|
const url = new URL(path, location.origin);
|
||||||
|
|
||||||
const oldEtag = checkEtag ? await loadLatestEtag(locale) : null;
|
const oldEtag = checkEtag ? await loadLatestEtag(etagName) : null;
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
@ -163,7 +152,7 @@ export async function fetchAndCheckEtag<ResultType extends object[] | object>(
|
|||||||
}
|
}
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Failed to fetch emoji data for ${locale}: ${response.statusText}`,
|
`Failed to fetch emoji data for ${etagName}: ${response.statusText}`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,7 +161,8 @@ export async function fetchAndCheckEtag<ResultType extends object[] | object>(
|
|||||||
// Store the ETag for future requests
|
// Store the ETag for future requests
|
||||||
const etag = response.headers.get('ETag');
|
const etag = response.headers.get('ETag');
|
||||||
if (etag && checkEtag) {
|
if (etag && checkEtag) {
|
||||||
await putLatestEtag(etag, localeString);
|
log(`storing new etag for ${etagName}: ${etag}`);
|
||||||
|
await putLatestEtag(etag, etagName);
|
||||||
}
|
}
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
import type { Locale } from 'emojibase';
|
import type { Locale } from 'emojibase';
|
||||||
import { SUPPORTED_LOCALES } from 'emojibase';
|
import { SUPPORTED_LOCALES } from 'emojibase';
|
||||||
|
|
||||||
import type { LocaleOrCustom } from './types';
|
import { EMOJI_DB_NAME_SHORTCODES, EMOJI_TYPE_CUSTOM } from './constants';
|
||||||
|
import type { EtagTypes, LocaleOrCustom, LocaleWithShortcodes } from './types';
|
||||||
|
|
||||||
export function toSupportedLocale(localeBase: string): Locale {
|
export function toSupportedLocale(localeBase: string): Locale {
|
||||||
const locale = localeBase.toLowerCase();
|
const locale = localeBase.toLowerCase();
|
||||||
@ -12,12 +13,35 @@ export function toSupportedLocale(localeBase: string): Locale {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function toSupportedLocaleOrCustom(locale: string): LocaleOrCustom {
|
export function toSupportedLocaleOrCustom(locale: string): LocaleOrCustom {
|
||||||
if (locale.toLowerCase() === 'custom') {
|
if (locale.toLowerCase() === EMOJI_TYPE_CUSTOM) {
|
||||||
return 'custom';
|
return EMOJI_TYPE_CUSTOM;
|
||||||
}
|
}
|
||||||
return toSupportedLocale(locale);
|
return toSupportedLocale(locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isSupportedLocale(locale: string): locale is Locale {
|
export function toValidEtagName(input: string): EtagTypes {
|
||||||
return SUPPORTED_LOCALES.includes(locale.toLowerCase() as Locale);
|
const lower = input.toLowerCase();
|
||||||
|
if (lower === EMOJI_TYPE_CUSTOM || lower === EMOJI_DB_NAME_SHORTCODES) {
|
||||||
|
return lower;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isLocaleWithShortcodes(lower)) {
|
||||||
|
return lower;
|
||||||
|
}
|
||||||
|
|
||||||
|
return toSupportedLocale(lower);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isSupportedLocale(locale: string): locale is Locale {
|
||||||
|
return SUPPORTED_LOCALES.includes(locale as Locale);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isLocaleWithShortcodes(input: string): input is LocaleWithShortcodes {
|
||||||
|
const [baseLocale, shortcodes] = input.split('-');
|
||||||
|
return (
|
||||||
|
!!baseLocale &&
|
||||||
|
!!shortcodes &&
|
||||||
|
isSupportedLocale(baseLocale) &&
|
||||||
|
shortcodes === EMOJI_DB_NAME_SHORTCODES
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -83,12 +83,8 @@ describe('stringToEmojiState', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test('returns custom emoji state for valid custom emoji', () => {
|
test('returns null for custom emoji without data', () => {
|
||||||
expect(stringToEmojiState(':smile:')).toEqual({
|
expect(stringToEmojiState(':smile:')).toBeNull();
|
||||||
type: 'custom',
|
|
||||||
code: 'smile',
|
|
||||||
data: undefined,
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('returns custom emoji state with data when provided', () => {
|
test('returns custom emoji state with data when provided', () => {
|
||||||
@ -108,7 +104,6 @@ describe('stringToEmojiState', () => {
|
|||||||
|
|
||||||
test('returns null for invalid emoji strings', () => {
|
test('returns null for invalid emoji strings', () => {
|
||||||
expect(stringToEmojiState('notanemoji')).toBeNull();
|
expect(stringToEmojiState('notanemoji')).toBeNull();
|
||||||
expect(stringToEmojiState(':invalid-emoji:')).toBeNull();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -142,21 +137,13 @@ describe('loadEmojiDataToState', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test('loads custom emoji data into state', async () => {
|
test('returns null for custom emoji without data', async () => {
|
||||||
const dbCall = vi
|
|
||||||
.spyOn(db, 'loadCustomEmojiByShortcode')
|
|
||||||
.mockResolvedValueOnce(customEmojiFactory());
|
|
||||||
const customState = {
|
const customState = {
|
||||||
type: 'custom',
|
type: 'custom',
|
||||||
code: 'smile',
|
code: 'smile',
|
||||||
} as const satisfies EmojiStateCustom;
|
} as const satisfies EmojiStateCustom;
|
||||||
const result = await loadEmojiDataToState(customState, 'en');
|
const result = await loadEmojiDataToState(customState, 'en');
|
||||||
expect(dbCall).toHaveBeenCalledWith('smile');
|
expect(result).toBeNull();
|
||||||
expect(result).toEqual({
|
|
||||||
type: 'custom',
|
|
||||||
code: 'smile',
|
|
||||||
data: customEmojiFactory(),
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('loads unicode data using legacy shortcode', async () => {
|
test('loads unicode data using legacy shortcode', async () => {
|
||||||
@ -194,16 +181,6 @@ describe('loadEmojiDataToState', () => {
|
|||||||
expect(result).toBeNull();
|
expect(result).toBeNull();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('returns null if custom emoji not found in database', async () => {
|
|
||||||
vi.spyOn(db, 'loadCustomEmojiByShortcode').mockResolvedValueOnce(undefined);
|
|
||||||
const customState = {
|
|
||||||
type: 'custom',
|
|
||||||
code: 'smile',
|
|
||||||
} as const satisfies EmojiStateCustom;
|
|
||||||
const result = await loadEmojiDataToState(customState, 'en');
|
|
||||||
expect(result).toBeNull();
|
|
||||||
});
|
|
||||||
|
|
||||||
test('retries loading emoji data once if initial load fails', async () => {
|
test('retries loading emoji data once if initial load fails', async () => {
|
||||||
const dbCall = vi
|
const dbCall = vi
|
||||||
.spyOn(db, 'loadEmojiByHexcode')
|
.spyOn(db, 'loadEmojiByHexcode')
|
||||||
|
|||||||
@ -4,13 +4,6 @@ import {
|
|||||||
EMOJI_TYPE_UNICODE,
|
EMOJI_TYPE_UNICODE,
|
||||||
EMOJI_TYPE_CUSTOM,
|
EMOJI_TYPE_CUSTOM,
|
||||||
} from './constants';
|
} from './constants';
|
||||||
import {
|
|
||||||
loadCustomEmojiByShortcode,
|
|
||||||
loadEmojiByHexcode,
|
|
||||||
loadLegacyShortcodesByShortcode,
|
|
||||||
LocaleNotLoadedError,
|
|
||||||
} from './database';
|
|
||||||
import { importEmojiData } from './loader';
|
|
||||||
import { emojiToUnicodeHex } from './normalize';
|
import { emojiToUnicodeHex } from './normalize';
|
||||||
import type {
|
import type {
|
||||||
EmojiLoadedState,
|
EmojiLoadedState,
|
||||||
@ -80,7 +73,7 @@ export function tokenizeText(text: string): TokenizedText {
|
|||||||
export function stringToEmojiState(
|
export function stringToEmojiState(
|
||||||
code: string,
|
code: string,
|
||||||
customEmoji: ExtraCustomEmojiMap = {},
|
customEmoji: ExtraCustomEmojiMap = {},
|
||||||
): EmojiState | null {
|
): EmojiStateUnicode | Required<EmojiStateCustom> | null {
|
||||||
if (isUnicodeEmoji(code)) {
|
if (isUnicodeEmoji(code)) {
|
||||||
return {
|
return {
|
||||||
type: EMOJI_TYPE_UNICODE,
|
type: EMOJI_TYPE_UNICODE,
|
||||||
@ -90,11 +83,13 @@ export function stringToEmojiState(
|
|||||||
|
|
||||||
if (isCustomEmoji(code)) {
|
if (isCustomEmoji(code)) {
|
||||||
const shortCode = code.slice(1, -1);
|
const shortCode = code.slice(1, -1);
|
||||||
return {
|
if (customEmoji[shortCode]) {
|
||||||
type: EMOJI_TYPE_CUSTOM,
|
return {
|
||||||
code: shortCode,
|
type: EMOJI_TYPE_CUSTOM,
|
||||||
data: customEmoji[shortCode],
|
code: shortCode,
|
||||||
};
|
data: customEmoji[shortCode],
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -115,33 +110,35 @@ export async function loadEmojiDataToState(
|
|||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Don't try to load data for custom emoji.
|
||||||
|
if (state.type === EMOJI_TYPE_CUSTOM) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const {
|
||||||
|
loadLegacyShortcodesByShortcode,
|
||||||
|
loadEmojiByHexcode,
|
||||||
|
LocaleNotLoadedError,
|
||||||
|
} = await import('./database');
|
||||||
|
|
||||||
// First, try to load the data from IndexedDB.
|
// First, try to load the data from IndexedDB.
|
||||||
try {
|
try {
|
||||||
const legacyCode = await loadLegacyShortcodesByShortcode(state.code);
|
const legacyCode = await loadLegacyShortcodesByShortcode(state.code);
|
||||||
// This is duplicative, but that's because TS can't distinguish the state type easily.
|
// This is duplicative, but that's because TS can't distinguish the state type easily.
|
||||||
if (state.type === EMOJI_TYPE_UNICODE || legacyCode) {
|
const data = await loadEmojiByHexcode(
|
||||||
const data = await loadEmojiByHexcode(
|
legacyCode?.hexcode ?? state.code,
|
||||||
legacyCode?.hexcode ?? state.code,
|
locale,
|
||||||
locale,
|
);
|
||||||
);
|
if (data) {
|
||||||
if (data) {
|
return {
|
||||||
return {
|
...state,
|
||||||
...state,
|
type: EMOJI_TYPE_UNICODE,
|
||||||
type: EMOJI_TYPE_UNICODE,
|
data,
|
||||||
data,
|
// TODO: Use CLDR shortcodes when the picker supports them.
|
||||||
// TODO: Use CLDR shortcodes when the picker supports them.
|
shortcode: legacyCode?.shortcodes.at(0),
|
||||||
shortcode: legacyCode?.shortcodes.at(0),
|
};
|
||||||
};
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
const data = await loadCustomEmojiByShortcode(state.code);
|
|
||||||
if (data) {
|
|
||||||
return {
|
|
||||||
...state,
|
|
||||||
data,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If not found, assume it's not an emoji and return null.
|
// If not found, assume it's not an emoji and return null.
|
||||||
log(
|
log(
|
||||||
'Could not find emoji %s of type %s for locale %s',
|
'Could not find emoji %s of type %s for locale %s',
|
||||||
@ -158,6 +155,7 @@ export async function loadEmojiDataToState(
|
|||||||
state.code,
|
state.code,
|
||||||
locale,
|
locale,
|
||||||
);
|
);
|
||||||
|
const { importEmojiData } = await import('./loader');
|
||||||
await importEmojiData(locale); // Use this from the loader file as it can be awaited.
|
await importEmojiData(locale); // Use this from the loader file as it can be awaited.
|
||||||
return loadEmojiDataToState(state, locale, true);
|
return loadEmojiDataToState(state, locale, true);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import type { CustomEmoji } from '@/mastodon/models/custom_emoji';
|
|||||||
import type { RequiredExcept } from '@/mastodon/utils/types';
|
import type { RequiredExcept } from '@/mastodon/utils/types';
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
|
EMOJI_DB_NAME_SHORTCODES,
|
||||||
EMOJI_MODE_NATIVE,
|
EMOJI_MODE_NATIVE,
|
||||||
EMOJI_MODE_NATIVE_WITH_FLAGS,
|
EMOJI_MODE_NATIVE_WITH_FLAGS,
|
||||||
EMOJI_MODE_TWEMOJI,
|
EMOJI_MODE_TWEMOJI,
|
||||||
@ -20,6 +21,11 @@ export type EmojiMode =
|
|||||||
| typeof EMOJI_MODE_TWEMOJI;
|
| typeof EMOJI_MODE_TWEMOJI;
|
||||||
|
|
||||||
export type LocaleOrCustom = Locale | typeof EMOJI_TYPE_CUSTOM;
|
export type LocaleOrCustom = Locale | typeof EMOJI_TYPE_CUSTOM;
|
||||||
|
export type LocaleWithShortcodes = `${Locale}-shortcodes`;
|
||||||
|
export type EtagTypes =
|
||||||
|
| LocaleOrCustom
|
||||||
|
| typeof EMOJI_DB_NAME_SHORTCODES
|
||||||
|
| LocaleWithShortcodes;
|
||||||
|
|
||||||
export interface EmojiAppState {
|
export interface EmojiAppState {
|
||||||
locales: Locale[];
|
locales: Locale[];
|
||||||
|
|||||||
@ -8,24 +8,23 @@ import {
|
|||||||
addEventListener('message', handleMessage);
|
addEventListener('message', handleMessage);
|
||||||
self.postMessage('ready'); // After the worker is ready, notify the main thread
|
self.postMessage('ready'); // After the worker is ready, notify the main thread
|
||||||
|
|
||||||
function handleMessage(event: MessageEvent<{ locale: string; path?: string }>) {
|
function handleMessage(event: MessageEvent<{ locale: string }>) {
|
||||||
const {
|
const {
|
||||||
data: { locale, path },
|
data: { locale },
|
||||||
} = event;
|
} = event;
|
||||||
void loadData(locale, path);
|
void loadData(locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function loadData(locale: string, path?: string) {
|
async function loadData(locale: string) {
|
||||||
let importCount: number | undefined;
|
let importCount: number | undefined;
|
||||||
if (locale === EMOJI_TYPE_CUSTOM) {
|
if (locale === EMOJI_TYPE_CUSTOM) {
|
||||||
importCount = (await importCustomEmojiData())?.length;
|
importCount = (await importCustomEmojiData())?.length;
|
||||||
} else if (locale === EMOJI_DB_NAME_SHORTCODES) {
|
} else if (locale === EMOJI_DB_NAME_SHORTCODES) {
|
||||||
importCount = (await importLegacyShortcodes()).length;
|
importCount = (await importLegacyShortcodes())?.length;
|
||||||
} else if (path) {
|
|
||||||
importCount = (await importEmojiData(locale, path))?.length;
|
|
||||||
} else {
|
} else {
|
||||||
throw new Error('Path is required for loading locale emoji data');
|
importCount = (await importEmojiData(locale))?.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (importCount) {
|
if (importCount) {
|
||||||
self.postMessage(`loaded ${importCount} emojis into ${locale}`);
|
self.postMessage(`loaded ${importCount} emojis into ${locale}`);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,7 +34,7 @@ export const EmbeddedStatusContent: React.FC<{
|
|||||||
className={className}
|
className={className}
|
||||||
lang={status.get('language') as string}
|
lang={status.get('language') as string}
|
||||||
htmlString={status.get('contentHtml') as string}
|
htmlString={status.get('contentHtml') as string}
|
||||||
extraEmojis={status.get('emoji') as List<CustomEmoji>}
|
extraEmojis={status.get('emojis') as List<CustomEmoji>}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -107,25 +107,11 @@
|
|||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "قم بوصفها للأشخاص ذوي الإعاقة البصرية…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "قم بوصفها للأشخاص ذوي الإعاقة البصرية…",
|
||||||
"alt_text_modal.done": "تمّ",
|
"alt_text_modal.done": "تمّ",
|
||||||
"announcement.announcement": "إعلان",
|
"announcement.announcement": "إعلان",
|
||||||
"annual_report.summary.archetype.booster": "The cool-hunter",
|
|
||||||
"annual_report.summary.archetype.lurker": "المتصفح الصامت",
|
|
||||||
"annual_report.summary.archetype.oracle": "الحكيم",
|
|
||||||
"annual_report.summary.archetype.pollster": "مستطلع للرأي",
|
|
||||||
"annual_report.summary.archetype.replier": "الفراشة الاجتماعية",
|
|
||||||
"annual_report.summary.followers.followers": "المُتابِعُون",
|
|
||||||
"annual_report.summary.followers.total": "{count} في المجمل",
|
|
||||||
"annual_report.summary.here_it_is": "فيما يلي ملخصك لسنة {year}:",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "المنشور ذو أعلى عدد تفضيلات",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "أكثر منشور مُعاد نشره",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "المنشور بأعلى عدد تعليقات",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "من قبل {name}",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "التطبيق الأكثر استخداماً",
|
"annual_report.summary.most_used_app.most_used_app": "التطبيق الأكثر استخداماً",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "الهاشتاق الأكثر استخداماً",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "الهاشتاق الأكثر استخداماً",
|
||||||
"annual_report.summary.most_used_hashtag.none": "لا شيء",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "المنشورات الجديدة",
|
"annual_report.summary.new_posts.new_posts": "المنشورات الجديدة",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>هذا يجعلك من بين أكثر </topLabel><percentage></percentage><bottomLabel>مستخدمي {domain} نشاطاً </bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>هذا يجعلك من بين أكثر </topLabel><percentage></percentage><bottomLabel>مستخدمي {domain} نشاطاً </bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "سيبقى هذا الأمر بيننا.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "سيبقى هذا الأمر بيننا.",
|
||||||
"annual_report.summary.thanks": "شكرا لكونك جزءاً من ماستدون!",
|
|
||||||
"attachments_list.unprocessed": "(غير معالَج)",
|
"attachments_list.unprocessed": "(غير معالَج)",
|
||||||
"audio.hide": "إخفاء المقطع الصوتي",
|
"audio.hide": "إخفاء المقطع الصوتي",
|
||||||
"block_modal.remote_users_caveat": "سوف نطلب من الخادم {domain} أن يحترم قرارك، لكن الالتزام غير مضمون لأن بعض الخواديم قد تتعامل مع نصوص الكتل بشكل مختلف. قد تظل المنشورات العامة مرئية للمستخدمين غير المسجلين الدخول.",
|
"block_modal.remote_users_caveat": "سوف نطلب من الخادم {domain} أن يحترم قرارك، لكن الالتزام غير مضمون لأن بعض الخواديم قد تتعامل مع نصوص الكتل بشكل مختلف. قد تظل المنشورات العامة مرئية للمستخدمين غير المسجلين الدخول.",
|
||||||
|
|||||||
@ -71,11 +71,7 @@
|
|||||||
"alt_text_modal.cancel": "Encaboxar",
|
"alt_text_modal.cancel": "Encaboxar",
|
||||||
"alt_text_modal.done": "Fecho",
|
"alt_text_modal.done": "Fecho",
|
||||||
"announcement.announcement": "Anunciu",
|
"announcement.announcement": "Anunciu",
|
||||||
"annual_report.summary.followers.followers": "siguidores",
|
|
||||||
"annual_report.summary.here_it_is": "Equí ta'l to resume de {year}:",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "de {name}",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "artículos nuevos",
|
"annual_report.summary.new_posts.new_posts": "artículos nuevos",
|
||||||
"annual_report.summary.thanks": "Gracies por ser parte de Mastodon!",
|
|
||||||
"attachments_list.unprocessed": "(ensin procesar)",
|
"attachments_list.unprocessed": "(ensin procesar)",
|
||||||
"block_modal.show_less": "Amosar menos",
|
"block_modal.show_less": "Amosar menos",
|
||||||
"block_modal.show_more": "Amosar más",
|
"block_modal.show_more": "Amosar más",
|
||||||
|
|||||||
@ -107,25 +107,11 @@
|
|||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Görmə məhdudiyyətli insanlar üçün bunu təsvir et…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "Görmə məhdudiyyətli insanlar üçün bunu təsvir et…",
|
||||||
"alt_text_modal.done": "Oldu",
|
"alt_text_modal.done": "Oldu",
|
||||||
"announcement.announcement": "Elan",
|
"announcement.announcement": "Elan",
|
||||||
"annual_report.summary.archetype.booster": "Trend ovçusu",
|
|
||||||
"annual_report.summary.archetype.lurker": "Lurker",
|
|
||||||
"annual_report.summary.archetype.oracle": "Orakl",
|
|
||||||
"annual_report.summary.archetype.pollster": "Sorğu ustası",
|
|
||||||
"annual_report.summary.archetype.replier": "Sosial kəpənək",
|
|
||||||
"annual_report.summary.followers.followers": "izləyici",
|
|
||||||
"annual_report.summary.followers.total": "Cəmi {count}",
|
|
||||||
"annual_report.summary.here_it_is": "{year} icmalınız:",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "ən çox sevilən postu",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "ən çox təkrar paylaşılan göndəriş",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "ən çox cavabı olan paylaşımı",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name} istifadəçisinin",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "ən çox istifadə etdiyi tətbiq",
|
"annual_report.summary.most_used_app.most_used_app": "ən çox istifadə etdiyi tətbiq",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "ən çox istifadə etdiyi heşteq",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "ən çox istifadə etdiyi heşteq",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Yoxdur",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "yeni paylaşım",
|
"annual_report.summary.new_posts.new_posts": "yeni paylaşım",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Bu sizi {domain} istifadəçilərinin ilk</topLabel><percentage></percentage><bottomLabel>qoyur.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Bu sizi {domain} istifadəçilərinin ilk</topLabel><percentage></percentage><bottomLabel>qoyur.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Bunu Berniyə deməyəcəyik.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Bunu Berniyə deməyəcəyik.",
|
||||||
"annual_report.summary.thanks": "Mastodonun bir parçası olduğunuz üçün təşəkkür edirik!",
|
|
||||||
"attachments_list.unprocessed": "(emal edilməyib)",
|
"attachments_list.unprocessed": "(emal edilməyib)",
|
||||||
"audio.hide": "Audionu gizlət",
|
"audio.hide": "Audionu gizlət",
|
||||||
"block_modal.remote_users_caveat": "{domain} serverindən qərarınıza hörmət etməsini xahiş edəcəyik. Ancaq, bəzi serverlər əngəlləmələri fərqli şəkildə idarə edə bilər deyə, qərarınıza uymağına zəmanət verilmir. Hər kəsə açıq göndərişlər, hələ də sistemə giriş etməmiş istifadəçilərə görünə bilər.",
|
"block_modal.remote_users_caveat": "{domain} serverindən qərarınıza hörmət etməsini xahiş edəcəyik. Ancaq, bəzi serverlər əngəlləmələri fərqli şəkildə idarə edə bilər deyə, qərarınıza uymağına zəmanət verilmir. Hər kəsə açıq göndərişlər, hələ də sistemə giriş etməmiş istifadəçilərə görünə bilər.",
|
||||||
|
|||||||
@ -114,29 +114,51 @@
|
|||||||
"alt_text_modal.done": "Гатова",
|
"alt_text_modal.done": "Гатова",
|
||||||
"announcement.announcement": "Аб'ява",
|
"announcement.announcement": "Аб'ява",
|
||||||
"annual_report.announcement.action_build": "Старыць мне Вынікадон",
|
"annual_report.announcement.action_build": "Старыць мне Вынікадон",
|
||||||
|
"annual_report.announcement.action_dismiss": "Не, дзякуй",
|
||||||
"annual_report.announcement.action_view": "Паглядзець мой Вынікадон",
|
"annual_report.announcement.action_view": "Паглядзець мой Вынікадон",
|
||||||
"annual_report.announcement.description": "Даведайцеся больш пра Вашыя ўзаемадзеянні ў Mastodon за апошні год.",
|
"annual_report.announcement.description": "Даведайцеся больш пра Вашыя ўзаемадзеянні ў Mastodon за апошні год.",
|
||||||
"annual_report.announcement.title": "Вынікадон {year} ужо тут",
|
"annual_report.announcement.title": "Вынікадон {year} ужо тут",
|
||||||
"annual_report.summary.archetype.booster": "Паляўнічы на трэнды",
|
"annual_report.nav_item.badge": "Новы",
|
||||||
"annual_report.summary.archetype.lurker": "Назіральнік",
|
"annual_report.shared_page.donate": "Ахвяраваць",
|
||||||
"annual_report.summary.archetype.oracle": "Аракул",
|
"annual_report.shared_page.footer": "З {heart} згенеравала каманда Mastodon",
|
||||||
"annual_report.summary.archetype.pollster": "Апытвальнік",
|
"annual_report.shared_page.footer_server_info": "{username} карыстаецца {domain}, адной са шматлікіх супольнасцяў, якія ўтрымлівае Mastodon.",
|
||||||
"annual_report.summary.archetype.replier": "Душа кампаніі",
|
"annual_report.summary.archetype.booster.desc_public": "{name} увесь час паляваў(-ла) на допісы, каб пашырыць іх і разгаласіць аб іх аўтарах ідэальнымі стрэламі.",
|
||||||
"annual_report.summary.followers.followers": "падпісчыкі",
|
"annual_report.summary.archetype.booster.desc_self": "Вы ўвесь час палявалі на допісы, каб пашырыць іх і разгаласіць аб іх аўтарах ідэальнымі стрэламі.",
|
||||||
"annual_report.summary.followers.total": "Агулам {count}",
|
"annual_report.summary.archetype.booster.name": "Лучнік",
|
||||||
"annual_report.summary.here_it_is": "Вось Вашы вынікі {year} за год:",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "самы ўпадабаны допіс",
|
"annual_report.summary.archetype.lurker.desc_public": "Мы ведаем, што {name} быў(-ла) дзесьці тут і па-свойму атрымліваў(-ла) асалоду ад Mastodon.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "самы пашыраны допіс",
|
"annual_report.summary.archetype.lurker.desc_self": "Мы ведаем, што Вы былі дзесьці тут і па-свойму атрымлівалі асалоду ад Mastodon.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "самы каментаваны допіс",
|
"annual_report.summary.archetype.lurker.name": "Стоік",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
"annual_report.summary.archetype.oracle.desc_public": "Новых допісаў у {name} было больш, чым адказаў, і гэткім чынам ён (яна) пакідаў(-ла) Mastodon свежым і накіраваным у будучыню.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Новых допісаў у Вас было больш, чым адказаў, і гэткім чынам Вы пакідалі Mastodon свежым і накіраваным у будучыню.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "Аракул",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "Сярод допісаў {name} было найбольш апытанак, якімі ён (яна) падымаў(-ла) цікаўнасць у Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Сярод Вашых допісаў было найбольш апытанак, якімі Вы падымалі цікаўнасць у Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "Даследчык",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} часта адказваў(-ла) на допісы іншых людзей, апыляючы Mastodon новымі дыскусіямі.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Вы часта адказвалі на допісы іншых людзей, апыляючы Mastodon новымі дыскусіямі.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "Матыль",
|
||||||
|
"annual_report.summary.archetype.reveal": "Раскрыць мой архетып",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Дзякуй за тое, што Вы былі і застаяцеся часткай Mastodon! Час даведацца, які архетып Вы ўвасобілі ў {year}-ым годзе.",
|
||||||
|
"annual_report.summary.archetype.title_public": "Архетып {name}",
|
||||||
|
"annual_report.summary.archetype.title_self": "Ваш архетып",
|
||||||
|
"annual_report.summary.close": "Закрыць",
|
||||||
|
"annual_report.summary.copy_link": "Скапіраваць",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {новы падпісчык} few {новыя падпісчыкі} other {новых падпісчыкаў}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Гэты допіс пашырылі {count, plural, one {адзін раз} few {# разы} other {# разоў}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Гэты допіс упадабалі {count, plural, one {адзін раз} few {# разы} other {# разоў}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "На гэты допіс адказалі {count, plural, one {адзін раз} few {# разы} other {# разоў}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Самы папулярны допіс",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "праграма, якой карысталіся найчасцей",
|
"annual_report.summary.most_used_app.most_used_app": "праграма, якой карысталіся найчасцей",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "хэштэг, якім карысталіся найчасцей",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "хэштэг, якім карысталіся найчасцей",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Няма",
|
"annual_report.summary.most_used_hashtag.used_count": "Вы выкарысталі гэты хэштэг у {count, plural, one {адным допісе} other {# допісах}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} выкарыстаў(-ла) гэты хэштэг у {count, plural, one {адным допісе} other {# допісах}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "новыя допісы",
|
"annual_report.summary.new_posts.new_posts": "новыя допісы",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Гэта падымае Вас у топ</topLabel><percentage></percentage><bottomLabel> карыстальнікаў {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Гэта падымае Вас у топ</topLabel><percentage></percentage><bottomLabel> карыстальнікаў {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "КДБ пра гэта не даведаецца.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "КДБ пра гэта не даведаецца.",
|
||||||
|
"annual_report.summary.share_elsewhere": "Падзяліцца ў іншым месцы",
|
||||||
"annual_report.summary.share_message": "Мой архетып – {archetype}!",
|
"annual_report.summary.share_message": "Мой архетып – {archetype}!",
|
||||||
"annual_report.summary.thanks": "Дзякуй за ўдзел у Mastodon!",
|
"annual_report.summary.share_on_mastodon": "Падзяліцца ў Mastodon",
|
||||||
"attachments_list.unprocessed": "(неапрацаваны)",
|
"attachments_list.unprocessed": "(неапрацаваны)",
|
||||||
"audio.hide": "Схаваць аўдыя",
|
"audio.hide": "Схаваць аўдыя",
|
||||||
"block_modal.remote_users_caveat": "Мы папросім сервер {domain} паважаць Ваш выбар. Аднак гэта не гарантуецца, паколькі некаторыя серверы могуць апрацоўваць блакіроўкі іншым чынам. Публічныя паведамленні могуць заставацца бачнымі для ананімных карыстальнікаў.",
|
"block_modal.remote_users_caveat": "Мы папросім сервер {domain} паважаць Ваш выбар. Аднак гэта не гарантуецца, паколькі некаторыя серверы могуць апрацоўваць блакіроўкі іншым чынам. Публічныя паведамленні могуць заставацца бачнымі для ананімных карыстальнікаў.",
|
||||||
@ -419,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "На каго падпісацца",
|
"follow_suggestions.who_to_follow": "На каго падпісацца",
|
||||||
"followed_tags": "Падпіскі",
|
"followed_tags": "Падпіскі",
|
||||||
"footer.about": "Пра нас",
|
"footer.about": "Пра нас",
|
||||||
|
"footer.about_mastodon": "Пра Mastodon",
|
||||||
|
"footer.about_server": "Пра {domain}",
|
||||||
"footer.about_this_server": "Пра сервер",
|
"footer.about_this_server": "Пра сервер",
|
||||||
"footer.directory": "Дырэкторыя профіляў",
|
"footer.directory": "Дырэкторыя профіляў",
|
||||||
"footer.get_app": "Спампаваць праграму",
|
"footer.get_app": "Спампаваць праграму",
|
||||||
|
|||||||
@ -111,25 +111,11 @@
|
|||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Опишете това за хора със зрителни увреждания…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "Опишете това за хора със зрителни увреждания…",
|
||||||
"alt_text_modal.done": "Готово",
|
"alt_text_modal.done": "Готово",
|
||||||
"announcement.announcement": "Оповестяване",
|
"announcement.announcement": "Оповестяване",
|
||||||
"annual_report.summary.archetype.booster": "Якият подсилвател",
|
|
||||||
"annual_report.summary.archetype.lurker": "Дебнещото",
|
|
||||||
"annual_report.summary.archetype.oracle": "Оракул",
|
|
||||||
"annual_report.summary.archetype.pollster": "Анкетьорче",
|
|
||||||
"annual_report.summary.archetype.replier": "Социална пеперуда",
|
|
||||||
"annual_report.summary.followers.followers": "последователи",
|
|
||||||
"annual_report.summary.followers.total": "{count} общо",
|
|
||||||
"annual_report.summary.here_it_is": "Ето преглед на вашата {year} година:",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "най-правено като любима публикация",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "най-подсилваната публикация",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "публикация с най-много отговори",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "на {name}",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "най-употребявано приложение",
|
"annual_report.summary.most_used_app.most_used_app": "най-употребявано приложение",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "най-употребяван хаштаг",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "най-употребяван хаштаг",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Няма",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "нови публикации",
|
"annual_report.summary.new_posts.new_posts": "нови публикации",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Това ви слага най-отгоре</topLabel><percentage></percentage><bottomLabel>сред потребителите на {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Това ви слага най-отгоре</topLabel><percentage></percentage><bottomLabel>сред потребителите на {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Няма да кажем на Бърни Сандърс.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Няма да кажем на Бърни Сандърс.",
|
||||||
"annual_report.summary.thanks": "Благодарим, че сте част от Mastodon!",
|
|
||||||
"attachments_list.unprocessed": "(необработено)",
|
"attachments_list.unprocessed": "(необработено)",
|
||||||
"audio.hide": "Скриване на звука",
|
"audio.hide": "Скриване на звука",
|
||||||
"block_modal.remote_users_caveat": "Ще приканим сървъра {domain} да уважава решението ви. За съжаление не можем да гарантираме това защото някои сървъри могат да третират блокиранията по различен начин. Публичните постове може да продължат да бъдат видими за потребители, които не са се регистрирали.",
|
"block_modal.remote_users_caveat": "Ще приканим сървъра {domain} да уважава решението ви. За съжаление не можем да гарантираме това защото някои сървъри могат да третират блокиранията по различен начин. Публичните постове може да продължат да бъдат видими за потребители, които не са се регистрирали.",
|
||||||
|
|||||||
@ -106,15 +106,8 @@
|
|||||||
"alt_text_modal.change_thumbnail": "Kemmañ ar velvenn",
|
"alt_text_modal.change_thumbnail": "Kemmañ ar velvenn",
|
||||||
"alt_text_modal.done": "Graet",
|
"alt_text_modal.done": "Graet",
|
||||||
"announcement.announcement": "Kemennad",
|
"announcement.announcement": "Kemennad",
|
||||||
"annual_report.summary.followers.followers": "heulier",
|
|
||||||
"annual_report.summary.followers.total": "{count} en holl",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "embannadur karet ar muiañ",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "embannadur skignet ar muiañ",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "embannadur gant ar muiañ a respontoù",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "arload muiañ implijet",
|
"annual_report.summary.most_used_app.most_used_app": "arload muiañ implijet",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "ar gerioù-klik implijet ar muiañ",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "ar gerioù-klik implijet ar muiañ",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Hini ebet",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "embannadurioù nevez",
|
"annual_report.summary.new_posts.new_posts": "embannadurioù nevez",
|
||||||
"attachments_list.unprocessed": "(ket meret)",
|
"attachments_list.unprocessed": "(ket meret)",
|
||||||
"audio.hide": "Kuzhat ar c'hleved",
|
"audio.hide": "Kuzhat ar c'hleved",
|
||||||
|
|||||||
@ -114,29 +114,24 @@
|
|||||||
"alt_text_modal.done": "Fet",
|
"alt_text_modal.done": "Fet",
|
||||||
"announcement.announcement": "Anunci",
|
"announcement.announcement": "Anunci",
|
||||||
"annual_report.announcement.action_build": "El meu Wrapstodon s'ha fet",
|
"annual_report.announcement.action_build": "El meu Wrapstodon s'ha fet",
|
||||||
|
"annual_report.announcement.action_dismiss": "No, gràcies",
|
||||||
"annual_report.announcement.action_view": "Vegeu el meu Wrapstodon",
|
"annual_report.announcement.action_view": "Vegeu el meu Wrapstodon",
|
||||||
"annual_report.announcement.description": "Descobriu més sobre el vostre involucrament a Mastodon durant l'any passat.",
|
"annual_report.announcement.description": "Descobriu més sobre el vostre involucrament a Mastodon durant l'any passat.",
|
||||||
"annual_report.announcement.title": "Ha arribat Wrapstodon {year}",
|
"annual_report.announcement.title": "Ha arribat Wrapstodon {year}",
|
||||||
"annual_report.summary.archetype.booster": "Sempre a la moda",
|
"annual_report.nav_item.badge": "Nou",
|
||||||
"annual_report.summary.archetype.lurker": "Tot ho llegeix",
|
"annual_report.shared_page.donate": "Fer una donació",
|
||||||
"annual_report.summary.archetype.oracle": "L'Oracle",
|
"annual_report.shared_page.footer": "Generat amb {heart} per l'equip de Mastodon",
|
||||||
"annual_report.summary.archetype.pollster": "Tot són enquestes",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.archetype.replier": "Tot ho respon",
|
"annual_report.summary.copy_link": "Copia l'enllaç",
|
||||||
"annual_report.summary.followers.followers": "seguidors",
|
|
||||||
"annual_report.summary.followers.total": "{count} en total",
|
|
||||||
"annual_report.summary.here_it_is": "El repàs del vostre {year}:",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "la publicació més afavorida",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "la publicació més impulsada",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "la publicació amb més respostes",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "de {name}",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "l'aplicació més utilitzada",
|
"annual_report.summary.most_used_app.most_used_app": "l'aplicació més utilitzada",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "l'etiqueta més utilitzada",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "l'etiqueta més utilitzada",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Cap",
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} ha inclòs aquesta etiqueta a {count, plural, one {una publicació} other {# publicacions}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "publicacions noves",
|
"annual_report.summary.new_posts.new_posts": "publicacions noves",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Que us posa al</topLabel><percentage></percentage><bottomLabel>capdamunt dels usuaris de {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Que us posa al</topLabel><percentage></percentage><bottomLabel>capdamunt dels usuaris de {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "No li ho direm al Bernie.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "No li ho direm al Bernie.",
|
||||||
|
"annual_report.summary.share_elsewhere": "Compartir a una altra banda",
|
||||||
"annual_report.summary.share_message": "Tinc l'arquetip {archetype}!",
|
"annual_report.summary.share_message": "Tinc l'arquetip {archetype}!",
|
||||||
"annual_report.summary.thanks": "Gràcies per formar part de Mastodon!",
|
"annual_report.summary.share_on_mastodon": "Compartir a Mastodon",
|
||||||
"attachments_list.unprocessed": "(sense processar)",
|
"attachments_list.unprocessed": "(sense processar)",
|
||||||
"audio.hide": "Amaga l'àudio",
|
"audio.hide": "Amaga l'àudio",
|
||||||
"block_modal.remote_users_caveat": "Li demanarem al servidor {domain} que respecti la vostra decisió, tot i que no podem garantir-ho, ja que alguns servidors gestionen de forma diferent els blocatges. És possible que els usuaris no autenticats puguin veure les publicacions públiques.",
|
"block_modal.remote_users_caveat": "Li demanarem al servidor {domain} que respecti la vostra decisió, tot i que no podem garantir-ho, ja que alguns servidors gestionen de forma diferent els blocatges. És possible que els usuaris no autenticats puguin veure les publicacions públiques.",
|
||||||
@ -362,6 +357,7 @@
|
|||||||
"empty_column.notification_requests": "Tot net, ja no hi ha res aquí! Quan rebeu notificacions noves, segons la vostra configuració, apareixeran aquí.",
|
"empty_column.notification_requests": "Tot net, ja no hi ha res aquí! Quan rebeu notificacions noves, segons la vostra configuració, apareixeran aquí.",
|
||||||
"empty_column.notifications": "Encara no tens notificacions. Quan altre gent interactuï amb tu, les veuràs aquí.",
|
"empty_column.notifications": "Encara no tens notificacions. Quan altre gent interactuï amb tu, les veuràs aquí.",
|
||||||
"empty_column.public": "Aquí no hi ha res! Escriu públicament alguna cosa o segueix manualment usuaris d'altres servidors per omplir-ho",
|
"empty_column.public": "Aquí no hi ha res! Escriu públicament alguna cosa o segueix manualment usuaris d'altres servidors per omplir-ho",
|
||||||
|
"error.no_hashtag_feed_access": "Creeu un compte o accediu per a veure i seguir aquesta etiqueta.",
|
||||||
"error.unexpected_crash.explanation": "A causa d'un error en el nostre codi o d'un problema de compatibilitat amb el navegador, aquesta pàgina no s'ha pogut mostrar correctament.",
|
"error.unexpected_crash.explanation": "A causa d'un error en el nostre codi o d'un problema de compatibilitat amb el navegador, aquesta pàgina no s'ha pogut mostrar correctament.",
|
||||||
"error.unexpected_crash.explanation_addons": "Aquesta pàgina no s'ha pogut mostrar correctament. És probable que aquest error sigui causat per un complement del navegador o per eines de traducció automàtica.",
|
"error.unexpected_crash.explanation_addons": "Aquesta pàgina no s'ha pogut mostrar correctament. És probable que aquest error sigui causat per un complement del navegador o per eines de traducció automàtica.",
|
||||||
"error.unexpected_crash.next_steps": "Prova d'actualitzar la pàgina. Si això no serveix, és possible que encara puguis fer servir Mastodon a través d'un navegador diferent o amb una aplicació nativa.",
|
"error.unexpected_crash.next_steps": "Prova d'actualitzar la pàgina. Si això no serveix, és possible que encara puguis fer servir Mastodon a través d'un navegador diferent o amb una aplicació nativa.",
|
||||||
@ -908,6 +904,7 @@
|
|||||||
"status.edited_x_times": "Editat {count, plural, one {{count} vegada} other {{count} vegades}}",
|
"status.edited_x_times": "Editat {count, plural, one {{count} vegada} other {{count} vegades}}",
|
||||||
"status.embed": "Obté el codi encastat",
|
"status.embed": "Obté el codi encastat",
|
||||||
"status.favourite": "Favorit",
|
"status.favourite": "Favorit",
|
||||||
|
"status.favourites_count": "{count, plural, one {{counter} favorit} other {{counter} favorits}}",
|
||||||
"status.filter": "Filtra aquest tut",
|
"status.filter": "Filtra aquest tut",
|
||||||
"status.history.created": "creat per {name} {date}",
|
"status.history.created": "creat per {name} {date}",
|
||||||
"status.history.edited": "editat per {name} {date}",
|
"status.history.edited": "editat per {name} {date}",
|
||||||
@ -942,12 +939,14 @@
|
|||||||
"status.quotes.empty": "Encara no ha citat aquesta publicació ningú. Quan ho faci algú apareixerà aquí.",
|
"status.quotes.empty": "Encara no ha citat aquesta publicació ningú. Quan ho faci algú apareixerà aquí.",
|
||||||
"status.quotes.local_other_disclaimer": "No es mostraran les cites rebutjades per l'autor.",
|
"status.quotes.local_other_disclaimer": "No es mostraran les cites rebutjades per l'autor.",
|
||||||
"status.quotes.remote_other_disclaimer": "Només es garanteix que es mostraran aquí les cites de {domain}. No es mostraran les rebutjades per l'autor.",
|
"status.quotes.remote_other_disclaimer": "Només es garanteix que es mostraran aquí les cites de {domain}. No es mostraran les rebutjades per l'autor.",
|
||||||
|
"status.quotes_count": "{count, plural, one {{counter} citació} other {{counter} citacions}}",
|
||||||
"status.read_more": "Més informació",
|
"status.read_more": "Més informació",
|
||||||
"status.reblog": "Impulsa",
|
"status.reblog": "Impulsa",
|
||||||
"status.reblog_or_quote": "Impuls or cita",
|
"status.reblog_or_quote": "Impuls or cita",
|
||||||
"status.reblog_private": "Compartiu de nou amb els vostres seguidors",
|
"status.reblog_private": "Compartiu de nou amb els vostres seguidors",
|
||||||
"status.reblogged_by": "impulsat per {name}",
|
"status.reblogged_by": "impulsat per {name}",
|
||||||
"status.reblogs.empty": "Encara no ha impulsat ningú aquest tut. Quan algú ho faci, apareixerà aquí.",
|
"status.reblogs.empty": "Encara no ha impulsat ningú aquest tut. Quan algú ho faci, apareixerà aquí.",
|
||||||
|
"status.reblogs_count": "{count, plural, one {{counter} impuls} other {{counter} impulsos}}",
|
||||||
"status.redraft": "Esborra i reescriu",
|
"status.redraft": "Esborra i reescriu",
|
||||||
"status.remove_bookmark": "Elimina el marcador",
|
"status.remove_bookmark": "Elimina el marcador",
|
||||||
"status.remove_favourite": "Elimina dels preferits",
|
"status.remove_favourite": "Elimina dels preferits",
|
||||||
|
|||||||
@ -114,29 +114,30 @@
|
|||||||
"alt_text_modal.done": "Hotovo",
|
"alt_text_modal.done": "Hotovo",
|
||||||
"announcement.announcement": "Oznámení",
|
"announcement.announcement": "Oznámení",
|
||||||
"annual_report.announcement.action_build": "Sestavit můj Wrapstodon",
|
"annual_report.announcement.action_build": "Sestavit můj Wrapstodon",
|
||||||
|
"annual_report.announcement.action_dismiss": "Ne, děkuji",
|
||||||
"annual_report.announcement.action_view": "Zobrazit můj Wrapstodon",
|
"annual_report.announcement.action_view": "Zobrazit můj Wrapstodon",
|
||||||
"annual_report.announcement.description": "Zjistěte více o vaší aktivitě na Mastodonu za poslední rok.",
|
"annual_report.announcement.description": "Zjistěte více o vaší aktivitě na Mastodonu za poslední rok.",
|
||||||
"annual_report.announcement.title": "Je zde Wrapstodon {year}",
|
"annual_report.announcement.title": "Je zde Wrapstodon {year}",
|
||||||
"annual_report.summary.archetype.booster": "Lovec obsahu",
|
"annual_report.nav_item.badge": "Nový",
|
||||||
"annual_report.summary.archetype.lurker": "Špión",
|
"annual_report.shared_page.donate": "Podpořit",
|
||||||
"annual_report.summary.archetype.oracle": "Vědma",
|
"annual_report.shared_page.footer": "Vytvořeno s {heart} týmem Mastodon",
|
||||||
"annual_report.summary.archetype.pollster": "Průzkumník",
|
"annual_report.summary.archetype.reveal": "Odhalit můj archetyp",
|
||||||
"annual_report.summary.archetype.replier": "Sociální motýlek",
|
"annual_report.summary.archetype.reveal_description": "Děkujeme, že jste součástí Mastodonu! Čas zjistit, který archetype jste ztělesnili v roce {year}.",
|
||||||
"annual_report.summary.followers.followers": "sledujících",
|
"annual_report.summary.archetype.title_public": "Archetyp {name}",
|
||||||
"annual_report.summary.followers.total": "{count} celkem",
|
"annual_report.summary.archetype.title_self": "Váš archetyp",
|
||||||
"annual_report.summary.here_it_is": "Zde je tvůj rok {year} v přehledu:",
|
"annual_report.summary.close": "Zavřít",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "nejvíce oblíbený příspěvek",
|
"annual_report.summary.copy_link": "Zkopírovat odkaz",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "nejvíce boostovaný příspěvek",
|
"annual_report.summary.highlighted_post.title": "Nejpopulárnější příspěvek",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "příspěvek s nejvíce odpověďmi",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "nejpoužívanější aplikace",
|
"annual_report.summary.most_used_app.most_used_app": "nejpoužívanější aplikace",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "nejpoužívanější hashtag",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "nejpoužívanější hashtag",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Žádné",
|
"annual_report.summary.most_used_hashtag.used_count": "Tento hashtag jste vložili do {count, plural, one {jednoho příspěvku} few {# příspěvků} many {# příspěvků} other {# příspěvků}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} vložili tento hashtag do {count, plural, one {jednoho příspěveku} few {# příspěvků} many {# příspěvků} other {# příspěvků}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "nové příspěvky",
|
"annual_report.summary.new_posts.new_posts": "nové příspěvky",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>To vás umisťuje do horních</topLabel><percentage></percentage><bottomLabel> uživatelů domény {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>To vás umisťuje do horních</topLabel><percentage></percentage><bottomLabel> uživatelů domény {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "To, že jste zdejší smetánka, zůstane mezi námi ;).",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "To, že jste zdejší smetánka, zůstane mezi námi ;).",
|
||||||
|
"annual_report.summary.share_elsewhere": "Sdílet jinde",
|
||||||
"annual_report.summary.share_message": "Mám archetyp {archetype}!",
|
"annual_report.summary.share_message": "Mám archetyp {archetype}!",
|
||||||
"annual_report.summary.thanks": "Děkujeme, že jste součástí Mastodonu!",
|
"annual_report.summary.share_on_mastodon": "Sdílet na Mastodonu",
|
||||||
"attachments_list.unprocessed": "(nezpracováno)",
|
"attachments_list.unprocessed": "(nezpracováno)",
|
||||||
"audio.hide": "Skrýt zvuk",
|
"audio.hide": "Skrýt zvuk",
|
||||||
"block_modal.remote_users_caveat": "Požádáme server {domain}, aby respektoval vaše rozhodnutí. Úplné dodržování nastavení však není zaručeno, protože některé servery mohou řešit blokování různě. Veřejné příspěvky mohou být stále viditelné pro nepřihlášené uživatele.",
|
"block_modal.remote_users_caveat": "Požádáme server {domain}, aby respektoval vaše rozhodnutí. Úplné dodržování nastavení však není zaručeno, protože některé servery mohou řešit blokování různě. Veřejné příspěvky mohou být stále viditelné pro nepřihlášené uživatele.",
|
||||||
|
|||||||
@ -113,25 +113,50 @@
|
|||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Disgrifiwch hyn ar gyfer pobl â nam ar eu golwg…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "Disgrifiwch hyn ar gyfer pobl â nam ar eu golwg…",
|
||||||
"alt_text_modal.done": "Gorffen",
|
"alt_text_modal.done": "Gorffen",
|
||||||
"announcement.announcement": "Cyhoeddiad",
|
"announcement.announcement": "Cyhoeddiad",
|
||||||
"annual_report.summary.archetype.booster": "Y hyrwyddwr",
|
"annual_report.announcement.action_build": "Adeiladu fy Wrapstodon",
|
||||||
"annual_report.summary.archetype.lurker": "Y crwydryn",
|
"annual_report.announcement.action_dismiss": "Dim diolch",
|
||||||
"annual_report.summary.archetype.oracle": "Yr oracl",
|
"annual_report.announcement.action_view": "Gweld fy Wrapstodon",
|
||||||
"annual_report.summary.archetype.pollster": "Yr arholwr",
|
"annual_report.announcement.description": "Darganfod mwy am eich ymgysylltiad â Mastodon dros y flwyddyn ddiwethaf.",
|
||||||
"annual_report.summary.archetype.replier": "Y sbardunwr",
|
"annual_report.announcement.title": "Mae Wrapstodon {year} wedi cyrraedd",
|
||||||
"annual_report.summary.followers.followers": "dilynwyr",
|
"annual_report.nav_item.badge": "Newydd",
|
||||||
"annual_report.summary.followers.total": "Cyfanswm o{count}",
|
"annual_report.shared_page.donate": "Cyfrannu",
|
||||||
"annual_report.summary.here_it_is": "Dyma eich {year} yn gryno:",
|
"annual_report.shared_page.footer": "Wedi'i gynhyrchu gyda {heart} gan dîm Mastodon",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "postiad wedi'i ffefrynu fwyaf",
|
"annual_report.summary.archetype.booster.desc_public": "Parhaodd {name} i chwilio am bostiadau i'w hybu, gan hyrwyddo crewyr eraill yn effeithiol.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "postiad wedi'i hybu fwyaf",
|
"annual_report.summary.archetype.booster.desc_self": "Fe wnaethoch chi aros ar y chwilio am bostiadau i'w hybu, gan chwyddo crewyr eraill yn effeithiol.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "postiad gyda'r nifer fwyaf o ymatebion",
|
"annual_report.summary.archetype.booster.name": "Y Saethydd",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
"annual_report.summary.archetype.lurker.desc_public": "Rydyn ni'n gwybod bod {name} allan yna, yn rhywle, yn mwynhau Mastodon yn eu ffordd dawel eu hunain.",
|
||||||
|
"annual_report.summary.archetype.lurker.desc_self": "Rydyn ni'n gwybod eich bod chi allan yna, yn rhywle, yn mwynhau Mastodon yn eich ffordd dawel eich hun.",
|
||||||
|
"annual_report.summary.archetype.lurker.name": "Y Stoicaidd",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_public": "Creodd {name} fwy o bostiadau newydd nag atebion, gan gadw Mastodon yn ffres ac yn edrych i'r dyfodol.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Fe wnaethoch chi greu mwy o bostiadau newydd nag atebion, gan gadw Mastodon yn ffres ac yn edrych i'r dyfodol.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "Yr Oracl",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "Creodd {name} fwy o arolygon barn na mathau eraill o bostiadau, gan feithrin chwilfrydedd am Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Fe greoch chi fwy o arolygon barn na mathau eraill o bostiadau, gan feithrin chwilfrydedd ar Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "Y Syfrdanwr",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "Roedd {name} yn aml yn ymateb i bostiadau pobl eraill, gan beillio Mastodon gyda thrafodaethau newydd.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Roeddech chi'n aml yn ymateb i bostiadau pobl eraill, gan hau Mastodon gyda thrafodaethau newydd.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "Y Pili-pala",
|
||||||
|
"annual_report.summary.archetype.reveal": "Datgelu fy nhuedd",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Diolch am fod yn rhan o Mastodon! Amser darganfod pa duedd oeddech chi'n ei ymgorffori yn {year}.",
|
||||||
|
"annual_report.summary.archetype.title_public": "Tuedd {name}",
|
||||||
|
"annual_report.summary.archetype.title_self": "Eich tuedd",
|
||||||
|
"annual_report.summary.close": "Cau",
|
||||||
|
"annual_report.summary.copy_link": "Copïo dolen",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {dilynwr newydd} other {dilynwr newydd}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Cafodd y postiad hwn hwb {count, plural, one {unwaith} other {# gwaith}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Cafodd y postiad hwn ei ffefrynnu {count, plural, one {unwaith} other {# gwaith}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Cafodd y post hwn {count, plural, one {un ateb} other {# ateb}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Postiad mwyaf poblogaidd",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "ap a ddefnyddiwyd fwyaf",
|
"annual_report.summary.most_used_app.most_used_app": "ap a ddefnyddiwyd fwyaf",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashnod a ddefnyddiwyd fwyaf",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashnod a ddefnyddiwyd fwyaf",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Dim",
|
"annual_report.summary.most_used_hashtag.used_count": "Fe wnaethoch chi gynnwys yr hashnod hwn yn {count, plural, one {un postiad} other {# postiad}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "Mae {name} wedi cynnwys yr hashnod hwn yn {count, plural, one {un postiad} other {# postiad}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "postiadau newydd",
|
"annual_report.summary.new_posts.new_posts": "postiadau newydd",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Mae hynny'n eich rhoi chi ymysg y</topLabel><percentage></percentage><bottomLabel>uchaf o ddefnyddwyr {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Mae hynny'n eich rhoi chi ymysg y</topLabel><percentage></percentage><bottomLabel>uchaf o ddefnyddwyr {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Fyddwn ni ddim yn dweud wrth Bernie.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Fyddwn ni ddim yn dweud wrth Bernie.",
|
||||||
"annual_report.summary.thanks": "Diolch am fod yn rhan o Mastodon!",
|
"annual_report.summary.share_elsewhere": "Rhannu mewn mannau eraill",
|
||||||
|
"annual_report.summary.share_message": "Fy arddull i yw {archetype}!",
|
||||||
|
"annual_report.summary.share_on_mastodon": "Rhannwch ar Mastodon",
|
||||||
"attachments_list.unprocessed": "(heb eu prosesu)",
|
"attachments_list.unprocessed": "(heb eu prosesu)",
|
||||||
"audio.hide": "Cuddio sain",
|
"audio.hide": "Cuddio sain",
|
||||||
"block_modal.remote_users_caveat": "Byddwn yn gofyn i'r gweinydd {domain} barchu eich penderfyniad. Fodd bynnag, nid yw cydymffurfiad wedi'i warantu gan y gall rhai gweinyddwyr drin rhwystrau mewn ffyrdd gwahanol. Mae'n bosibl y bydd postiadau cyhoeddus yn dal i fod yn weladwy i ddefnyddwyr nad ydynt wedi mewngofnodi.",
|
"block_modal.remote_users_caveat": "Byddwn yn gofyn i'r gweinydd {domain} barchu eich penderfyniad. Fodd bynnag, nid yw cydymffurfiad wedi'i warantu gan y gall rhai gweinyddwyr drin rhwystrau mewn ffyrdd gwahanol. Mae'n bosibl y bydd postiadau cyhoeddus yn dal i fod yn weladwy i ddefnyddwyr nad ydynt wedi mewngofnodi.",
|
||||||
@ -516,6 +541,7 @@
|
|||||||
"keyboard_shortcuts.toggle_hidden": "Dangos/cuddio testun tu ôl i CW",
|
"keyboard_shortcuts.toggle_hidden": "Dangos/cuddio testun tu ôl i CW",
|
||||||
"keyboard_shortcuts.toggle_sensitivity": "Dangos/cuddio cyfryngau",
|
"keyboard_shortcuts.toggle_sensitivity": "Dangos/cuddio cyfryngau",
|
||||||
"keyboard_shortcuts.toot": "Dechrau post newydd",
|
"keyboard_shortcuts.toot": "Dechrau post newydd",
|
||||||
|
"keyboard_shortcuts.top": "Symud i frig y rhestr",
|
||||||
"keyboard_shortcuts.translate": "i gyfieithu postiad",
|
"keyboard_shortcuts.translate": "i gyfieithu postiad",
|
||||||
"keyboard_shortcuts.unfocus": "Dad-ffocysu ardal cyfansoddi testun/chwilio",
|
"keyboard_shortcuts.unfocus": "Dad-ffocysu ardal cyfansoddi testun/chwilio",
|
||||||
"keyboard_shortcuts.up": "Symud yn uwch yn y rhestr",
|
"keyboard_shortcuts.up": "Symud yn uwch yn y rhestr",
|
||||||
|
|||||||
@ -114,29 +114,51 @@
|
|||||||
"alt_text_modal.done": "Færdig",
|
"alt_text_modal.done": "Færdig",
|
||||||
"announcement.announcement": "Bekendtgørelse",
|
"announcement.announcement": "Bekendtgørelse",
|
||||||
"annual_report.announcement.action_build": "Byg min Wrapstodon",
|
"annual_report.announcement.action_build": "Byg min Wrapstodon",
|
||||||
|
"annual_report.announcement.action_dismiss": "Nej tak",
|
||||||
"annual_report.announcement.action_view": "Vis min Wrapstodon",
|
"annual_report.announcement.action_view": "Vis min Wrapstodon",
|
||||||
"annual_report.announcement.description": "Få mere at vide om dit engagement på Mastodon i det forgangne år.",
|
"annual_report.announcement.description": "Få mere at vide om dit engagement på Mastodon i det forgangne år.",
|
||||||
"annual_report.announcement.title": "Wrapstodon {year} er her",
|
"annual_report.announcement.title": "Wrapstodon {year} er her",
|
||||||
"annual_report.summary.archetype.booster": "Fremhæveren",
|
"annual_report.nav_item.badge": "Ny",
|
||||||
"annual_report.summary.archetype.lurker": "Lureren",
|
"annual_report.shared_page.donate": "Donér",
|
||||||
"annual_report.summary.archetype.oracle": "Oraklet",
|
"annual_report.shared_page.footer": "Genereret med {heart} af Mastodon-teamet",
|
||||||
"annual_report.summary.archetype.pollster": "Afstemningsmageren",
|
"annual_report.shared_page.footer_server_info": "{username} bruger {domain}, et af mange fællesskaber drevet af Mastodon.",
|
||||||
"annual_report.summary.archetype.replier": "Den sociale sommerfugl",
|
"annual_report.summary.archetype.booster.desc_public": "{name} fortsatte med at jagte indlæg, der kunne fremhæves, og styrkede andre skabere med perfekt sigte.",
|
||||||
"annual_report.summary.followers.followers": "følgere",
|
"annual_report.summary.archetype.booster.desc_self": "Du fortsatte med at jagte indlæg, der kunne fremhæves, og styrkede andre skabere med perfekt sigte.",
|
||||||
"annual_report.summary.followers.total": "{count} i alt",
|
"annual_report.summary.archetype.booster.name": "Bueskytten",
|
||||||
"annual_report.summary.here_it_is": "Her er dit {year} i sammendrag:",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "mest favoritmarkerede indlæg",
|
"annual_report.summary.archetype.lurker.desc_public": "Vi ved, at {name} var derude et eller andet sted og nød Mastodon på sin egen stille måde.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "mest fremhævede indlæg",
|
"annual_report.summary.archetype.lurker.desc_self": "Vi ved, at du var derude et eller andet sted og nød Mastodon på din egen stille måde.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "indlæg med flest svar",
|
"annual_report.summary.archetype.lurker.name": "Den stoiske",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}s",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} oprettede flere nye indlæg end svar og holdt dermed Mastodon frisk og fremtidsorienteret.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Du oprettede flere nye indlæg end svar og holdt dermed Mastodon frisk og fremtidsorienteret.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "Oraklet",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name} oprettede flere afstemninger end andre indlægstyper og opdyrkede nysgerrighed på Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Du oprettede flere afstemninger end andre indlægstyper og opdyrkede nysgerrighed på Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "Den undrende",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} svarede ofte på andres indlæg og berigede Mastodon med nye diskussioner.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Du svarede ofte på andres indlæg og berigede Mastodon med nye diskussioner.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "Sommerfuglen",
|
||||||
|
"annual_report.summary.archetype.reveal": "Afslør min arketype",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Tak fordi du er en del af Mastodon! Nu er det tid til at finde ud af, hvilken arketype du var i {year}.",
|
||||||
|
"annual_report.summary.archetype.title_public": "{name}'s arketype",
|
||||||
|
"annual_report.summary.archetype.title_self": "Din arketype",
|
||||||
|
"annual_report.summary.close": "Luk",
|
||||||
|
"annual_report.summary.copy_link": "Kopiér link",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {ny følger} other {nye følgere}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Dette indlæg blev fremhævet {count, plural, one {én gang} other {# gange}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Dette indlæg blev favoritmarkeret {count, plural, one {én gang} other {# gange}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Dette indlæg fik {count, plural, one {ét svar} other {# svar}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Mest populært indlæg",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "mest benyttede app",
|
"annual_report.summary.most_used_app.most_used_app": "mest benyttede app",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "mest benyttede hashtag",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "mest benyttede hashtag",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Intet",
|
"annual_report.summary.most_used_hashtag.used_count": "Du har inkluderet dette hashtag i {count, plural, one {ét indlæg} other {# indlæg}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} inkluderede dette hashtag i {count, plural, one {ét indlæg} other {# indlæg}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "nye indlæg",
|
"annual_report.summary.new_posts.new_posts": "nye indlæg",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Dermed er du i top</topLabel><percentage></percentage><bottomLabel>af {domain}-brugere.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Dermed er du i top</topLabel><percentage></percentage><bottomLabel>af {domain}-brugere.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Vi fortæller det ikke til nogen.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Vi fortæller det ikke til nogen.",
|
||||||
|
"annual_report.summary.share_elsewhere": "Del andetsteds",
|
||||||
"annual_report.summary.share_message": "Min arketype er {archetype}!",
|
"annual_report.summary.share_message": "Min arketype er {archetype}!",
|
||||||
"annual_report.summary.thanks": "Tak for at være en del af Mastodon!",
|
"annual_report.summary.share_on_mastodon": "Del på Mastodon",
|
||||||
"attachments_list.unprocessed": "(ubehandlet)",
|
"attachments_list.unprocessed": "(ubehandlet)",
|
||||||
"audio.hide": "Skjul lyd",
|
"audio.hide": "Skjul lyd",
|
||||||
"block_modal.remote_users_caveat": "Serveren {domain} vil blive bedt om at respektere din beslutning. Overholdelse er dog ikke garanteret, da nogle servere kan håndtere blokke forskelligt. Offentlige indlæg kan stadig være synlige for ikke-indloggede brugere.",
|
"block_modal.remote_users_caveat": "Serveren {domain} vil blive bedt om at respektere din beslutning. Overholdelse er dog ikke garanteret, da nogle servere kan håndtere blokke forskelligt. Offentlige indlæg kan stadig være synlige for ikke-indloggede brugere.",
|
||||||
@ -413,12 +435,14 @@
|
|||||||
"follow_suggestions.hints.similar_to_recently_followed": "Denne profil svarer til de profiler, som senest er blevet fulgt.",
|
"follow_suggestions.hints.similar_to_recently_followed": "Denne profil svarer til de profiler, som senest er blevet fulgt.",
|
||||||
"follow_suggestions.personalized_suggestion": "Personligt forslag",
|
"follow_suggestions.personalized_suggestion": "Personligt forslag",
|
||||||
"follow_suggestions.popular_suggestion": "Populært forslag",
|
"follow_suggestions.popular_suggestion": "Populært forslag",
|
||||||
"follow_suggestions.popular_suggestion_longer": "Populært på {domain}",
|
"follow_suggestions.popular_suggestion_longer": "Populær på {domain}",
|
||||||
"follow_suggestions.similar_to_recently_followed_longer": "Minder om profiler, du har fulgt for nylig",
|
"follow_suggestions.similar_to_recently_followed_longer": "Minder om profiler, du har fulgt for nylig",
|
||||||
"follow_suggestions.view_all": "Vis alle",
|
"follow_suggestions.view_all": "Vis alle",
|
||||||
"follow_suggestions.who_to_follow": "Hvem, som skal følges",
|
"follow_suggestions.who_to_follow": "Hvem, som skal følges",
|
||||||
"followed_tags": "Hashtags, som følges",
|
"followed_tags": "Hashtags, som følges",
|
||||||
"footer.about": "Om",
|
"footer.about": "Om",
|
||||||
|
"footer.about_mastodon": "Om Mastodon",
|
||||||
|
"footer.about_server": "Om {domain}",
|
||||||
"footer.about_this_server": "Om",
|
"footer.about_this_server": "Om",
|
||||||
"footer.directory": "Profiloversigt",
|
"footer.directory": "Profiloversigt",
|
||||||
"footer.get_app": "Hent appen",
|
"footer.get_app": "Hent appen",
|
||||||
|
|||||||
@ -57,7 +57,7 @@
|
|||||||
"account.go_to_profile": "Profil aufrufen",
|
"account.go_to_profile": "Profil aufrufen",
|
||||||
"account.hide_reblogs": "Geteilte Beiträge von @{name} ausblenden",
|
"account.hide_reblogs": "Geteilte Beiträge von @{name} ausblenden",
|
||||||
"account.in_memoriam": "Zum Andenken.",
|
"account.in_memoriam": "Zum Andenken.",
|
||||||
"account.joined_short": "Mitglied seit",
|
"account.joined_short": "Registriert am",
|
||||||
"account.languages": "Ausgewählte Sprachen ändern",
|
"account.languages": "Ausgewählte Sprachen ändern",
|
||||||
"account.link_verified_on": "Das Profil mit dieser E-Mail-Adresse wurde bereits am {date} bestätigt",
|
"account.link_verified_on": "Das Profil mit dieser E-Mail-Adresse wurde bereits am {date} bestätigt",
|
||||||
"account.locked_info": "Die Privatsphäre dieses Kontos wurde auf „geschützt“ gesetzt. Die Person bestimmt manuell, wer ihrem Profil folgen darf.",
|
"account.locked_info": "Die Privatsphäre dieses Kontos wurde auf „geschützt“ gesetzt. Die Person bestimmt manuell, wer ihrem Profil folgen darf.",
|
||||||
@ -114,29 +114,51 @@
|
|||||||
"alt_text_modal.done": "Fertig",
|
"alt_text_modal.done": "Fertig",
|
||||||
"announcement.announcement": "Ankündigung",
|
"announcement.announcement": "Ankündigung",
|
||||||
"annual_report.announcement.action_build": "Erstelle mein Wrapstodon",
|
"annual_report.announcement.action_build": "Erstelle mein Wrapstodon",
|
||||||
|
"annual_report.announcement.action_dismiss": "Nein danke",
|
||||||
"annual_report.announcement.action_view": "Mein Wrapstodon anschauen",
|
"annual_report.announcement.action_view": "Mein Wrapstodon anschauen",
|
||||||
"annual_report.announcement.description": "Erfahre mehr über deine Aktivitäten auf Mastodon im vergangenen Jahr.",
|
"annual_report.announcement.description": "Erfahre mehr über deine Aktivitäten auf Mastodon im vergangenen Jahr.",
|
||||||
"annual_report.announcement.title": "Wrapstodon {year} ist fertiggestellt",
|
"annual_report.announcement.title": "Wrapstodon {year} ist fertiggestellt",
|
||||||
"annual_report.summary.archetype.booster": "Trendjäger*in",
|
"annual_report.nav_item.badge": "Neu",
|
||||||
"annual_report.summary.archetype.lurker": "Beobachter*in",
|
"annual_report.shared_page.donate": "Spenden",
|
||||||
"annual_report.summary.archetype.oracle": "Universaltalent",
|
"annual_report.shared_page.footer": "Mit {heart} vom Mastodon-Team erstellt",
|
||||||
"annual_report.summary.archetype.pollster": "Meinungsforscher*in",
|
"annual_report.shared_page.footer_server_info": "{username} verwendet {domain} – eine von vielen Mastodon-Gemeinschaften.",
|
||||||
"annual_report.summary.archetype.replier": "Gesellige*r",
|
"annual_report.summary.archetype.booster.desc_public": "{name} hielt Ausschau nach Beiträgen, um sie zu teilen und den Autor*innen mehr Reichweite zu bescheren.",
|
||||||
"annual_report.summary.followers.followers": "Follower",
|
"annual_report.summary.archetype.booster.desc_self": "Du hieltest Ausschau nach Beiträgen, um sie zu teilen und den Autor*innen mehr Reichweite zu bescheren.",
|
||||||
"annual_report.summary.followers.total": "{count} insgesamt",
|
"annual_report.summary.archetype.booster.name": "Flitzebogen",
|
||||||
"annual_report.summary.here_it_is": "Dein Jahresrückblick für {year}:",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "am häufigsten favorisierter Beitrag",
|
"annual_report.summary.archetype.lurker.desc_public": "{name} befand sich irgendwo in den Tiefen von Mastodon und genoss das stille Dasein.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "am häufigsten geteilter Beitrag",
|
"annual_report.summary.archetype.lurker.desc_self": "Du befandest dich irgendwo in den Tiefen von Mastodon und genossest das stille Dasein.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "Beitrag mit den meisten Antworten",
|
"annual_report.summary.archetype.lurker.name": "Unerschütterliche*r",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} verfasste mehr Beiträge als Antworten, damit Mastodon abwechslungsreich blieb.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Du verfasstest mehr Beiträge als Antworten, damit Mastodon abwechslungsreich blieb.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "Orakel",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name} erstellte mehr Umfragen als alles andere und förderte die Neugier auf Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Du erstelltest mehr Umfragen als alles andere und fördertest die Neugier auf Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "Grübler*in",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} antwortete regelmäßig auf die Beiträge anderer und sorgte für blühende Diskussionen auf Mastodon.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Du antwortetest regelmäßig auf die Beiträge anderer und sorgtest für blühende Diskussionen auf Mastodon.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "Schmetterling",
|
||||||
|
"annual_report.summary.archetype.reveal": "Enthülle mein Wesen",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Danke, dass du Teil von Mastodon bist! Zeit herauszufinden, welches Wesen du {year} verkörpert hast.",
|
||||||
|
"annual_report.summary.archetype.title_public": "Wesen von {name}",
|
||||||
|
"annual_report.summary.archetype.title_self": "Mein Wesen",
|
||||||
|
"annual_report.summary.close": "Schließen",
|
||||||
|
"annual_report.summary.copy_link": "Link kopieren",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {neuer Follower} other {neue Follower}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Dieser Beitrag wurde {count, plural, one {1 ×} other {# ×}} geteilt.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Dieser Beitrag wurde {count, plural, one {1 ×} other {# ×}} favorisiert.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Dieser Beitrag erhielt {count, plural, one {1 Antwort} other {# Antworten}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Beliebtester Beitrag",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "am häufigsten verwendete App",
|
"annual_report.summary.most_used_app.most_used_app": "am häufigsten verwendete App",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "am häufigsten verwendeter Hashtag",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "am häufigsten verwendeter Hashtag",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Keiner",
|
"annual_report.summary.most_used_hashtag.used_count": "Du verwendetest diesen Hashtag in {count, plural, one {1 Beitrag} other {# Beiträgen}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} verwendete diesen Hashtag in {count, plural, one {1 Beitrag} other {# Beiträgen}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "neue Beiträge",
|
"annual_report.summary.new_posts.new_posts": "neue Beiträge",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Damit gehörst du zu den obersten</topLabel><percentage></percentage><bottomLabel>der Nutzer*innen auf {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Damit gehörst du zu den obersten</topLabel><percentage></percentage><bottomLabel>der Nutzer*innen auf {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Wir werden Bernie nichts verraten.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Wir werden Bernie nichts verraten.",
|
||||||
"annual_report.summary.share_message": "Ich habe den {archetype} Archetyp!",
|
"annual_report.summary.share_elsewhere": "Woanders teilen",
|
||||||
"annual_report.summary.thanks": "Danke, dass du Teil von Mastodon bist!",
|
"annual_report.summary.share_message": "Ich bin vom Wesen {archetype}!",
|
||||||
|
"annual_report.summary.share_on_mastodon": "Auf Mastodon teilen",
|
||||||
"attachments_list.unprocessed": "(ausstehend)",
|
"attachments_list.unprocessed": "(ausstehend)",
|
||||||
"audio.hide": "Audio ausblenden",
|
"audio.hide": "Audio ausblenden",
|
||||||
"block_modal.remote_users_caveat": "Wir werden den Server {domain} bitten, deine Entscheidung zu respektieren. Allerdings kann nicht garantiert werden, dass sie eingehalten wird, weil einige Server Blockierungen unterschiedlich handhaben können. Öffentliche Beiträge können für nicht angemeldete Nutzer*innen weiterhin sichtbar sein.",
|
"block_modal.remote_users_caveat": "Wir werden den Server {domain} bitten, deine Entscheidung zu respektieren. Allerdings kann nicht garantiert werden, dass sie eingehalten wird, weil einige Server Blockierungen unterschiedlich handhaben können. Öffentliche Beiträge können für nicht angemeldete Nutzer*innen weiterhin sichtbar sein.",
|
||||||
@ -419,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "Wem folgen?",
|
"follow_suggestions.who_to_follow": "Wem folgen?",
|
||||||
"followed_tags": "Abonnierte Hashtags",
|
"followed_tags": "Abonnierte Hashtags",
|
||||||
"footer.about": "Über",
|
"footer.about": "Über",
|
||||||
|
"footer.about_mastodon": "Über Mastodon",
|
||||||
|
"footer.about_server": "Über {domain}",
|
||||||
"footer.about_this_server": "Über",
|
"footer.about_this_server": "Über",
|
||||||
"footer.directory": "Profilverzeichnis",
|
"footer.directory": "Profilverzeichnis",
|
||||||
"footer.get_app": "App herunterladen",
|
"footer.get_app": "App herunterladen",
|
||||||
@ -937,7 +961,7 @@
|
|||||||
"status.quote_error.pending_approval_popout.body": "Auf Mastodon kannst du selbst bestimmen, ob du von anderen zitiert werden darfst oder nicht – oder nur nach individueller Genehmigung. Wir warten in diesem Fall noch auf die Genehmigung des ursprünglichen Profils. Bis dahin steht die Veröffentlichung deines Beitrags mit dem zitierten Post noch aus.",
|
"status.quote_error.pending_approval_popout.body": "Auf Mastodon kannst du selbst bestimmen, ob du von anderen zitiert werden darfst oder nicht – oder nur nach individueller Genehmigung. Wir warten in diesem Fall noch auf die Genehmigung des ursprünglichen Profils. Bis dahin steht die Veröffentlichung deines Beitrags mit dem zitierten Post noch aus.",
|
||||||
"status.quote_error.revoked": "Beitrag durch Autor*in entfernt",
|
"status.quote_error.revoked": "Beitrag durch Autor*in entfernt",
|
||||||
"status.quote_followers_only": "Nur Follower können diesen Beitrag zitieren",
|
"status.quote_followers_only": "Nur Follower können diesen Beitrag zitieren",
|
||||||
"status.quote_manual_review": "Zitierte*r überprüft manuell",
|
"status.quote_manual_review": "Autor*in wird deine Anfrage manuell überprüfen",
|
||||||
"status.quote_noun": "Zitat",
|
"status.quote_noun": "Zitat",
|
||||||
"status.quote_policy_change": "Ändern, wer zitieren darf",
|
"status.quote_policy_change": "Ändern, wer zitieren darf",
|
||||||
"status.quote_post_author": "Zitierter Beitrag von @{name}",
|
"status.quote_post_author": "Zitierter Beitrag von @{name}",
|
||||||
@ -955,7 +979,7 @@
|
|||||||
"status.reblogs_count": "{count, plural, one {{counter} × geteilt} other {{counter} × geteilt}}",
|
"status.reblogs_count": "{count, plural, one {{counter} × geteilt} other {{counter} × geteilt}}",
|
||||||
"status.redraft": "Löschen und neu erstellen",
|
"status.redraft": "Löschen und neu erstellen",
|
||||||
"status.remove_bookmark": "Lesezeichen entfernen",
|
"status.remove_bookmark": "Lesezeichen entfernen",
|
||||||
"status.remove_favourite": "Aus Favoriten entfernen",
|
"status.remove_favourite": "Favorisierung entfernen",
|
||||||
"status.remove_quote": "Entfernen",
|
"status.remove_quote": "Entfernen",
|
||||||
"status.replied_in_thread": "Antwortete im Thread",
|
"status.replied_in_thread": "Antwortete im Thread",
|
||||||
"status.replied_to": "Antwortete {name}",
|
"status.replied_to": "Antwortete {name}",
|
||||||
@ -972,7 +996,7 @@
|
|||||||
"status.title.with_attachments": "{user} veröffentlichte {attachmentCount, plural, one {ein Medium} other {{attachmentCount} Medien}}",
|
"status.title.with_attachments": "{user} veröffentlichte {attachmentCount, plural, one {ein Medium} other {{attachmentCount} Medien}}",
|
||||||
"status.translate": "Übersetzen",
|
"status.translate": "Übersetzen",
|
||||||
"status.translated_from_with": "Aus {lang} mittels {provider} übersetzt",
|
"status.translated_from_with": "Aus {lang} mittels {provider} übersetzt",
|
||||||
"status.uncached_media_warning": "Vorschau nicht verfügbar",
|
"status.uncached_media_warning": "Vorschau noch nicht verfügbar",
|
||||||
"status.unmute_conversation": "Stummschaltung der Unterhaltung aufheben",
|
"status.unmute_conversation": "Stummschaltung der Unterhaltung aufheben",
|
||||||
"status.unpin": "Vom Profil lösen",
|
"status.unpin": "Vom Profil lösen",
|
||||||
"subscribed_languages.lead": "Nach der Änderung werden nur noch Beiträge in den ausgewählten Sprachen in den Timelines deiner Startseite und deiner Listen angezeigt. Wähle keine Sprache aus, um alle Beiträge zu sehen.",
|
"subscribed_languages.lead": "Nach der Änderung werden nur noch Beiträge in den ausgewählten Sprachen in den Timelines deiner Startseite und deiner Listen angezeigt. Wähle keine Sprache aus, um alle Beiträge zu sehen.",
|
||||||
@ -1008,7 +1032,7 @@
|
|||||||
"upload_form.drag_and_drop.on_drag_over": "Der Medienanhang {item} wurde bewegt.",
|
"upload_form.drag_and_drop.on_drag_over": "Der Medienanhang {item} wurde bewegt.",
|
||||||
"upload_form.drag_and_drop.on_drag_start": "Der Medienanhang {item} wurde aufgenommen.",
|
"upload_form.drag_and_drop.on_drag_start": "Der Medienanhang {item} wurde aufgenommen.",
|
||||||
"upload_form.edit": "Bearbeiten",
|
"upload_form.edit": "Bearbeiten",
|
||||||
"upload_progress.label": "Wird hochgeladen …",
|
"upload_progress.label": "Upload läuft …",
|
||||||
"upload_progress.processing": "Wird verarbeitet …",
|
"upload_progress.processing": "Wird verarbeitet …",
|
||||||
"username.taken": "Dieser Profilname ist vergeben. Versuche einen anderen",
|
"username.taken": "Dieser Profilname ist vergeben. Versuche einen anderen",
|
||||||
"video.close": "Video schließen",
|
"video.close": "Video schließen",
|
||||||
|
|||||||
@ -47,12 +47,12 @@
|
|||||||
"account.follow_request_cancel_short": "Ακύρωση",
|
"account.follow_request_cancel_short": "Ακύρωση",
|
||||||
"account.follow_request_short": "Αίτημα",
|
"account.follow_request_short": "Αίτημα",
|
||||||
"account.followers": "Ακόλουθοι",
|
"account.followers": "Ακόλουθοι",
|
||||||
"account.followers.empty": "Κανείς δεν ακολουθεί αυτόν τον χρήστη ακόμα.",
|
"account.followers.empty": "Κανείς δεν ακολουθεί αυτόν τον χρήστη ακόμη.",
|
||||||
"account.followers_counter": "{count, plural, one {{counter} ακόλουθος} other {{counter} ακόλουθοι}}",
|
"account.followers_counter": "{count, plural, one {{counter} ακόλουθος} other {{counter} ακόλουθοι}}",
|
||||||
"account.followers_you_know_counter": "{counter} που ξέρεις",
|
"account.followers_you_know_counter": "{counter} που ξέρεις",
|
||||||
"account.following": "Ακολουθείτε",
|
"account.following": "Ακολουθείτε",
|
||||||
"account.following_counter": "{count, plural, one {{counter} ακολουθεί} other {{counter} ακολουθούν}}",
|
"account.following_counter": "{count, plural, one {{counter} ακολουθεί} other {{counter} ακολουθούν}}",
|
||||||
"account.follows.empty": "Αυτός ο χρήστης δεν ακολουθεί κανέναν ακόμα.",
|
"account.follows.empty": "Αυτός ο χρήστης δεν ακολουθεί κανέναν ακόμη.",
|
||||||
"account.follows_you": "Σε ακολουθεί",
|
"account.follows_you": "Σε ακολουθεί",
|
||||||
"account.go_to_profile": "Μετάβαση στο προφίλ",
|
"account.go_to_profile": "Μετάβαση στο προφίλ",
|
||||||
"account.hide_reblogs": "Απόκρυψη ενισχύσεων από @{name}",
|
"account.hide_reblogs": "Απόκρυψη ενισχύσεων από @{name}",
|
||||||
@ -114,29 +114,51 @@
|
|||||||
"alt_text_modal.done": "Ολοκληρώθηκε",
|
"alt_text_modal.done": "Ολοκληρώθηκε",
|
||||||
"announcement.announcement": "Ανακοίνωση",
|
"announcement.announcement": "Ανακοίνωση",
|
||||||
"annual_report.announcement.action_build": "Φτιάξε το Wrapstodon μου",
|
"annual_report.announcement.action_build": "Φτιάξε το Wrapstodon μου",
|
||||||
|
"annual_report.announcement.action_dismiss": "Όχι, ευχαριστώ",
|
||||||
"annual_report.announcement.action_view": "Προβολή του Wrapstodon μου",
|
"annual_report.announcement.action_view": "Προβολή του Wrapstodon μου",
|
||||||
"annual_report.announcement.description": "Ανακαλύψτε περισσότερα για την αλληλεπίδραση σας στο Mastodon κατά τη διάρκεια του περασμένου έτους.",
|
"annual_report.announcement.description": "Ανακαλύψτε περισσότερα για την αλληλεπίδραση σας στο Mastodon κατά τη διάρκεια του περασμένου έτους.",
|
||||||
"annual_report.announcement.title": "Το Wrapstodon του {year} έφτασε",
|
"annual_report.announcement.title": "Το Wrapstodon του {year} έφτασε",
|
||||||
"annual_report.summary.archetype.booster": "Ο κυνηγός των φοβερών",
|
"annual_report.nav_item.badge": "Νέο",
|
||||||
"annual_report.summary.archetype.lurker": "Ο διακριτικός",
|
"annual_report.shared_page.donate": "Δωρεά",
|
||||||
"annual_report.summary.archetype.oracle": "Η Πυθία",
|
"annual_report.shared_page.footer": "Παράχθηκε με {heart} από την ομάδα του Mastodon",
|
||||||
"annual_report.summary.archetype.pollster": "Ο δημοσκόπος",
|
"annual_report.shared_page.footer_server_info": "Ο/Η {username} χρησιμοποιεί το {domain}, μία από τις πολλές κοινότητες που βασίζονται στο Mastodon.",
|
||||||
"annual_report.summary.archetype.replier": "Η κοινωνική πεταλούδα",
|
"annual_report.summary.archetype.booster.desc_public": "Ο/Η {name} έμεινε στο κυνήγι για αναρτήσεις για να τις ενισχύσει, ενισχύοντας άλλους δημιουργούς με τέλειο στόχο.",
|
||||||
"annual_report.summary.followers.followers": "ακόλουθοι",
|
"annual_report.summary.archetype.booster.desc_self": "Έμεινες στο κυνήγι για αναρτήσεις για να τις ενισχύσεις, ενισχύοντας άλλους δημιουργούς με τέλειο στόχο.",
|
||||||
"annual_report.summary.followers.total": "{count} συνολικά",
|
"annual_report.summary.archetype.booster.name": "Ο Τοξότης",
|
||||||
"annual_report.summary.here_it_is": "Εδώ είναι το {year} σου σε ανασκόπηση:",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "πιο αγαπημένη ανάρτηση",
|
"annual_report.summary.archetype.lurker.desc_public": "Ξέρουμε ότι ο/η {name} ήταν εκεί έξω, κάπου, απολαμβάνοντας το Mastodon με τον δικό του/της ήσυχο τρόπο.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "πιο ενισχυμένη ανάρτηση",
|
"annual_report.summary.archetype.lurker.desc_self": "Ξέρουμε ότι ήσουν εκεί έξω, κάπου, απολαμβάνοντας το Mastodon με τον δικό σου ήσυχο τρόπο.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "ανάρτηση με τις περισσότερες απαντήσεις",
|
"annual_report.summary.archetype.lurker.name": "Ο Στωϊκός",
|
||||||
"annual_report.summary.highlighted_post.possessive": "του χρήστη {name}",
|
"annual_report.summary.archetype.oracle.desc_public": "O/H {name} δημιούργησε νέες αναρτήσεις περισσότερο από ότι απαντήσεις, κρατώντας το Mastodon φρέσκο και κοιτώντας προς το μέλλον.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Δημιούργησες νέες αναρτήσεις περισσότερο από ότι απαντήσεις, κρατώντας το Mastodon φρέσκο και κοιτώντας προς το μέλλον.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "Η Πυθία",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "Ο/Η {name} δημιούργησε περισσότερες δημοσκοπήσεις από άλλα είδη αναρτήσεων, καλλιεργώντας περιέργεια στο Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Δημιούργησες περισσότερες δημοσκοπήσεις από άλλα είδη αναρτήσεων, καλλιεργώντας περιέργεια στο Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "Ο Θαυμαστής",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "Ο/Η {name} συχνά απαντούσε σε αναρτήσεις άλλων ανθρώπων, επικονίαζοντας το Mastodon με νέες συζητήσεις.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Συχνά απαντούσες σε αναρτήσεις άλλων ανθρώπων, επικονίαζοντας το Mastodon με νέες συζητήσεις.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "Η Πεταλούδα",
|
||||||
|
"annual_report.summary.archetype.reveal": "Αποκάλυψε το αρχέτυπο μου",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Ευχαριστούμε που είσαι μέρος του Mastodon! Ώρα να μάθεις ποιο αρχέτυπο έχεις ενσαρκώσει το {year}.",
|
||||||
|
"annual_report.summary.archetype.title_public": "Αρχέτυπο του/της {name}",
|
||||||
|
"annual_report.summary.archetype.title_self": "Το αρχέτυπο σου",
|
||||||
|
"annual_report.summary.close": "Κλείσιμο",
|
||||||
|
"annual_report.summary.copy_link": "Αντιγραφή συνδέσμου",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {νέος ακόλουθος} other {νέοι ακόλουθοι}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Αυτή η ανάρτηση ενισχύθηκε {count, plural, one {μια φορά} other {# φορές}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Αυτή η ανάρτηση αγαπήθηκε {count, plural, one {μια φορά} other {# φορές}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Αυτή η ανάρτηση πήρε {count, plural, one {μια απάντηση} other {# απαντήσεις}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Πιο δημοφιλής ανάρτηση",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "πιο χρησιμοποιημένη εφαρμογή",
|
"annual_report.summary.most_used_app.most_used_app": "πιο χρησιμοποιημένη εφαρμογή",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "πιο χρησιμοποιημένη ετικέτα",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "πιο χρησιμοποιημένη ετικέτα",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Κανένα",
|
"annual_report.summary.most_used_hashtag.used_count": "Έχεις συμπεριλάβει αυτήν την ετικέτα σε {count, plural, one {μια ανάρτηση} other {# αναρτήσεις}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "Ο/Η {name} έχει συμπεριλάβει αυτήν την ετικέτα σε {count, plural, one {μια ανάρτηση} other {# αναρτήσεις}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "νέες αναρτήσεις",
|
"annual_report.summary.new_posts.new_posts": "νέες αναρτήσεις",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Αυτό σε βάζει στο </topLabel><percentage></percentage><bottomLabel>των κορυφαίων χρηστών του {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Αυτό σε βάζει στο </topLabel><percentage></percentage><bottomLabel>των κορυφαίων χρηστών του {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Δεν θα το πούμε στον Bernie.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Δεν θα το πούμε στον Bernie.",
|
||||||
|
"annual_report.summary.share_elsewhere": "Κοινοποίηση αλλού",
|
||||||
"annual_report.summary.share_message": "Πήρα το αρχέτυπο {archetype}!",
|
"annual_report.summary.share_message": "Πήρα το αρχέτυπο {archetype}!",
|
||||||
"annual_report.summary.thanks": "Ευχαριστούμε που συμμετέχεις στο Mastodon!",
|
"annual_report.summary.share_on_mastodon": "Κοινοποίηση στο Mastodon",
|
||||||
"attachments_list.unprocessed": "(μη επεξεργασμένο)",
|
"attachments_list.unprocessed": "(μη επεξεργασμένο)",
|
||||||
"audio.hide": "Απόκρυψη αρχείου ήχου",
|
"audio.hide": "Απόκρυψη αρχείου ήχου",
|
||||||
"block_modal.remote_users_caveat": "Θα ζητήσουμε από τον διακομιστή {domain} να σεβαστεί την απόφασή σου. Ωστόσο, η συμμόρφωση δεν είναι εγγυημένη δεδομένου ότι ορισμένοι διακομιστές ενδέχεται να χειρίζονται τους αποκλεισμούς διαφορετικά. Οι δημόσιες αναρτήσεις ενδέχεται να είναι ορατές σε μη συνδεδεμένους χρήστες.",
|
"block_modal.remote_users_caveat": "Θα ζητήσουμε από τον διακομιστή {domain} να σεβαστεί την απόφασή σου. Ωστόσο, η συμμόρφωση δεν είναι εγγυημένη δεδομένου ότι ορισμένοι διακομιστές ενδέχεται να χειρίζονται τους αποκλεισμούς διαφορετικά. Οι δημόσιες αναρτήσεις ενδέχεται να είναι ορατές σε μη συνδεδεμένους χρήστες.",
|
||||||
@ -337,30 +359,30 @@
|
|||||||
"emoji_button.search_results": "Αποτελέσματα αναζήτησης",
|
"emoji_button.search_results": "Αποτελέσματα αναζήτησης",
|
||||||
"emoji_button.symbols": "Σύμβολα",
|
"emoji_button.symbols": "Σύμβολα",
|
||||||
"emoji_button.travel": "Ταξίδια & Τοποθεσίες",
|
"emoji_button.travel": "Ταξίδια & Τοποθεσίες",
|
||||||
"empty_column.account_featured.me": "Δεν έχεις αναδείξει τίποτα ακόμα. Γνώριζες ότι μπορείς να αναδείξεις τις ετικέτες που χρησιμοποιείς περισσότερο, ακόμη και τους λογαριασμούς των φίλων σου στο προφίλ σου;",
|
"empty_column.account_featured.me": "Δεν έχεις αναδείξει τίποτα ακόμη. Γνώριζες ότι μπορείς να αναδείξεις τις ετικέτες που χρησιμοποιείς περισσότερο, ακόμη και τους λογαριασμούς των φίλων σου στο προφίλ σου;",
|
||||||
"empty_column.account_featured.other": "Ο λογαριασμός {acct} δεν αναδείξει τίποτα ακόμα. Γνώριζες ότι μπορείς να αναδείξεις τις ετικέτες που χρησιμοποιείς περισσότερο, ακόμη και τους λογαριασμούς των φίλων σου στο προφίλ σου;",
|
"empty_column.account_featured.other": "Ο/Η {acct} δεν έχει αναδείξει τίποτα ακόμη. Γνώριζες ότι μπορείς να αναδείξεις τις ετικέτες που χρησιμοποιείς περισσότερο, ακόμη και τους λογαριασμούς των φίλων σου στο προφίλ σου;",
|
||||||
"empty_column.account_featured_other.unknown": "Αυτός ο λογαριασμός δεν έχει αναδείξει τίποτα ακόμα.",
|
"empty_column.account_featured_other.unknown": "Αυτός ο λογαριασμός δεν έχει αναδείξει τίποτα ακόμη.",
|
||||||
"empty_column.account_hides_collections": "Αυτός ο χρήστης έχει επιλέξει να μην καταστήσει αυτές τις πληροφορίες διαθέσιμες",
|
"empty_column.account_hides_collections": "Αυτός ο χρήστης έχει επιλέξει να μην καταστήσει αυτές τις πληροφορίες διαθέσιμες",
|
||||||
"empty_column.account_suspended": "Λογαριασμός σε αναστολή",
|
"empty_column.account_suspended": "Λογαριασμός σε αναστολή",
|
||||||
"empty_column.account_timeline": "Δεν έχει αναρτήσεις εδώ!",
|
"empty_column.account_timeline": "Δεν έχει αναρτήσεις εδώ!",
|
||||||
"empty_column.account_unavailable": "Μη διαθέσιμο προφίλ",
|
"empty_column.account_unavailable": "Μη διαθέσιμο προφίλ",
|
||||||
"empty_column.blocks": "Δεν έχεις αποκλείσει κανέναν χρήστη ακόμα.",
|
"empty_column.blocks": "Δεν έχεις αποκλείσει κανέναν χρήστη ακόμη.",
|
||||||
"empty_column.bookmarked_statuses": "Δεν έχεις καμία ανάρτηση με σελιδοδείκτη ακόμα. Μόλις βάλεις κάποιον, θα εμφανιστεί εδώ.",
|
"empty_column.bookmarked_statuses": "Δεν έχεις καμία ανάρτηση με σελιδοδείκτη ακόμη. Μόλις βάλεις κάποιον, θα εμφανιστεί εδώ.",
|
||||||
"empty_column.community": "Η τοπική ροή είναι κενή. Γράψε κάτι δημόσια για να αρχίσει να κυλά η μπάλα!",
|
"empty_column.community": "Η τοπική ροή είναι κενή. Γράψε κάτι δημόσια για να αρχίσει να κυλά η μπάλα!",
|
||||||
"empty_column.direct": "Δεν έχεις καμία προσωπική επισήμανση ακόμα. Όταν στείλεις ή λάβεις μία, θα εμφανιστεί εδώ.",
|
"empty_column.direct": "Δεν έχεις καμία προσωπική επισήμανση ακόμη. Όταν στείλεις ή λάβεις μία, θα εμφανιστεί εδώ.",
|
||||||
"empty_column.disabled_feed": "Αυτή η ροή έχει απενεργοποιηθεί από τους διαχειριστές του διακομιστή σας.",
|
"empty_column.disabled_feed": "Αυτή η ροή έχει απενεργοποιηθεί από τους διαχειριστές του διακομιστή σας.",
|
||||||
"empty_column.domain_blocks": "Δεν υπάρχουν αποκλεισμένοι τομείς ακόμα.",
|
"empty_column.domain_blocks": "Δεν υπάρχουν αποκλεισμένοι τομείς ακόμη.",
|
||||||
"empty_column.explore_statuses": "Τίποτα δεν βρίσκεται στις τάσεις αυτή τη στιγμή. Έλεγξε αργότερα!",
|
"empty_column.explore_statuses": "Τίποτα δεν βρίσκεται στις τάσεις αυτή τη στιγμή. Έλεγξε αργότερα!",
|
||||||
"empty_column.favourited_statuses": "Δεν έχεις καμία αγαπημένη ανάρτηση ακόμα. Μόλις αγαπήσεις κάποια, θα εμφανιστεί εδώ.",
|
"empty_column.favourited_statuses": "Δεν έχεις καμία αγαπημένη ανάρτηση ακόμη. Μόλις αγαπήσεις κάποια, θα εμφανιστεί εδώ.",
|
||||||
"empty_column.favourites": "Κανείς δεν έχει αγαπήσει αυτή την ανάρτηση ακόμα. Μόλις το κάνει κάποιος, θα εμφανιστεί εδώ.",
|
"empty_column.favourites": "Κανείς δεν έχει αγαπήσει αυτή την ανάρτηση ακόμη. Μόλις το κάνει κάποιος, θα εμφανιστεί εδώ.",
|
||||||
"empty_column.follow_requests": "Δεν έχεις κανένα αίτημα παρακολούθησης ακόμα. Μόλις λάβεις κάποιο, θα εμφανιστεί εδώ.",
|
"empty_column.follow_requests": "Δεν έχεις κανένα αίτημα παρακολούθησης ακόμη. Μόλις λάβεις κάποιο, θα εμφανιστεί εδώ.",
|
||||||
"empty_column.followed_tags": "Δεν έχετε ακολουθήσει ακόμα καμία ετικέτα. Όταν το κάνετε, θα εμφανιστούν εδώ.",
|
"empty_column.followed_tags": "Δεν έχεις ακολουθήσει καμία ετικέτα ακόμη. Όταν το κάνεις, θα εμφανιστούν εδώ.",
|
||||||
"empty_column.hashtag": "Δεν υπάρχει ακόμα κάτι για αυτή την ετικέτα.",
|
"empty_column.hashtag": "Δεν υπάρχει τίποτα σε αυτή την ετικέτα ακόμη.",
|
||||||
"empty_column.home": "Η τοπική σου ροή είναι κενή! Πήγαινε στο {public} ή κάνε αναζήτηση για να ξεκινήσεις και να γνωρίσεις άλλους χρήστες.",
|
"empty_column.home": "Η τοπική σου ροή είναι κενή! Πήγαινε στο {public} ή κάνε αναζήτηση για να ξεκινήσεις και να γνωρίσεις άλλους χρήστες.",
|
||||||
"empty_column.list": "Δεν υπάρχει τίποτα σε αυτή τη λίστα ακόμα. Όταν τα μέλη της δημοσιεύσουν νέες καταστάσεις, θα εμφανιστούν εδώ.",
|
"empty_column.list": "Δεν υπάρχει τίποτα σε αυτή τη λίστα ακόμη. Όταν τα μέλη της δημοσιεύσουν νέες αναρτήσεις, θα εμφανιστούν εδώ.",
|
||||||
"empty_column.mutes": "Δεν έχεις κανένα χρήστη σε σίγαση ακόμα.",
|
"empty_column.mutes": "Δεν έχεις κανένα χρήστη σε σίγαση ακόμη.",
|
||||||
"empty_column.notification_requests": "Όλα καθαρά! Δεν υπάρχει τίποτα εδώ. Όταν λαμβάνεις νέες ειδοποιήσεις, αυτές θα εμφανίζονται εδώ σύμφωνα με τις ρυθμίσεις σου.",
|
"empty_column.notification_requests": "Όλα καθαρά! Δεν υπάρχει τίποτα εδώ. Όταν λαμβάνεις νέες ειδοποιήσεις, αυτές θα εμφανίζονται εδώ σύμφωνα με τις ρυθμίσεις σου.",
|
||||||
"empty_column.notifications": "Δεν έχεις ειδοποιήσεις ακόμα. Όταν άλλα άτομα αλληλεπιδράσουν μαζί σου, θα το δεις εδώ.",
|
"empty_column.notifications": "Δεν έχεις ειδοποιήσεις ακόμη. Όταν άλλα άτομα αλληλεπιδράσουν μαζί σου, θα το δεις εδώ.",
|
||||||
"empty_column.public": "Δεν υπάρχει τίποτα εδώ! Γράψε κάτι δημόσιο ή ακολούθησε χειροκίνητα χρήστες από άλλους διακομιστές για να τη γεμίσεις",
|
"empty_column.public": "Δεν υπάρχει τίποτα εδώ! Γράψε κάτι δημόσιο ή ακολούθησε χειροκίνητα χρήστες από άλλους διακομιστές για να τη γεμίσεις",
|
||||||
"error.no_hashtag_feed_access": "Γίνετε μέλος ή συνδεθείτε για να δείτε και να ακολουθήσετε αυτήν την ετικέτα.",
|
"error.no_hashtag_feed_access": "Γίνετε μέλος ή συνδεθείτε για να δείτε και να ακολουθήσετε αυτήν την ετικέτα.",
|
||||||
"error.unexpected_crash.explanation": "Είτε λόγω σφάλματος στον κώδικά μας ή λόγω ασυμβατότητας με τον περιηγητή, η σελίδα δε μπόρεσε να εμφανιστεί σωστά.",
|
"error.unexpected_crash.explanation": "Είτε λόγω σφάλματος στον κώδικά μας ή λόγω ασυμβατότητας με τον περιηγητή, η σελίδα δε μπόρεσε να εμφανιστεί σωστά.",
|
||||||
@ -419,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "Ποιον να ακολουθήσεις",
|
"follow_suggestions.who_to_follow": "Ποιον να ακολουθήσεις",
|
||||||
"followed_tags": "Ακολουθούμενες ετικέτες",
|
"followed_tags": "Ακολουθούμενες ετικέτες",
|
||||||
"footer.about": "Σχετικά με",
|
"footer.about": "Σχετικά με",
|
||||||
|
"footer.about_mastodon": "Σχετικά με το Mastodon",
|
||||||
|
"footer.about_server": "Σχετικά με το {domain}",
|
||||||
"footer.about_this_server": "Σχετικά με",
|
"footer.about_this_server": "Σχετικά με",
|
||||||
"footer.directory": "Κατάλογος προφίλ",
|
"footer.directory": "Κατάλογος προφίλ",
|
||||||
"footer.get_app": "Αποκτήστε την εφαρμογή",
|
"footer.get_app": "Αποκτήστε την εφαρμογή",
|
||||||
@ -449,7 +473,7 @@
|
|||||||
"hashtag.mute": "Σίγαση #{hashtag}",
|
"hashtag.mute": "Σίγαση #{hashtag}",
|
||||||
"hashtag.unfeature": "Να μην αναδεικνύεται στο προφίλ",
|
"hashtag.unfeature": "Να μην αναδεικνύεται στο προφίλ",
|
||||||
"hashtag.unfollow": "Διακοπή παρακολούθησης ετικέτας",
|
"hashtag.unfollow": "Διακοπή παρακολούθησης ετικέτας",
|
||||||
"hashtags.and_other": "…και {count, plural, other {# ακόμη}}",
|
"hashtags.and_other": "…και {count, plural, other {# ακόμα}}",
|
||||||
"hints.profiles.followers_may_be_missing": "Μπορεί να λείπουν ακόλουθοι για αυτό το προφίλ.",
|
"hints.profiles.followers_may_be_missing": "Μπορεί να λείπουν ακόλουθοι για αυτό το προφίλ.",
|
||||||
"hints.profiles.follows_may_be_missing": "Άτομα που ακολουθούνται μπορεί να λείπουν απ' αυτό το προφίλ.",
|
"hints.profiles.follows_may_be_missing": "Άτομα που ακολουθούνται μπορεί να λείπουν απ' αυτό το προφίλ.",
|
||||||
"hints.profiles.posts_may_be_missing": "Κάποιες αναρτήσεις από αυτό το προφίλ μπορεί να λείπουν.",
|
"hints.profiles.posts_may_be_missing": "Κάποιες αναρτήσεις από αυτό το προφίλ μπορεί να λείπουν.",
|
||||||
@ -466,7 +490,7 @@
|
|||||||
"home.show_announcements": "Εμφάνιση ανακοινώσεων",
|
"home.show_announcements": "Εμφάνιση ανακοινώσεων",
|
||||||
"ignore_notifications_modal.disclaimer": "Το Mastodon δε μπορεί να ενημερώσει τους χρήστες ότι αγνόησες τις ειδοποιήσεις του. Η αγνόηση ειδοποιήσεων δεν θα εμποδίσει την αποστολή των ίδιων των μηνυμάτων.",
|
"ignore_notifications_modal.disclaimer": "Το Mastodon δε μπορεί να ενημερώσει τους χρήστες ότι αγνόησες τις ειδοποιήσεις του. Η αγνόηση ειδοποιήσεων δεν θα εμποδίσει την αποστολή των ίδιων των μηνυμάτων.",
|
||||||
"ignore_notifications_modal.filter_instead": "Φίλτρο αντ' αυτού",
|
"ignore_notifications_modal.filter_instead": "Φίλτρο αντ' αυτού",
|
||||||
"ignore_notifications_modal.filter_to_act_users": "Θα μπορείς ακόμα να αποδεχθείς, να απορρίψεις ή να αναφέρεις χρήστες",
|
"ignore_notifications_modal.filter_to_act_users": "Θα μπορείς ακόμη να αποδεχθείς, να απορρίψεις ή να αναφέρεις χρήστες",
|
||||||
"ignore_notifications_modal.filter_to_avoid_confusion": "Το φιλτράρισμα βοηθά στην αποφυγή πιθανής σύγχυσης",
|
"ignore_notifications_modal.filter_to_avoid_confusion": "Το φιλτράρισμα βοηθά στην αποφυγή πιθανής σύγχυσης",
|
||||||
"ignore_notifications_modal.filter_to_review_separately": "Μπορείς να δεις τις φιλτραρισμένες ειδοποιήσεις ξεχωριστά",
|
"ignore_notifications_modal.filter_to_review_separately": "Μπορείς να δεις τις φιλτραρισμένες ειδοποιήσεις ξεχωριστά",
|
||||||
"ignore_notifications_modal.ignore": "Αγνόηση ειδοποιήσεων",
|
"ignore_notifications_modal.ignore": "Αγνόηση ειδοποιήσεων",
|
||||||
@ -552,8 +576,8 @@
|
|||||||
"lists.list_members_count": "{count, plural, one {# μέλος} other {# μέλη}}",
|
"lists.list_members_count": "{count, plural, one {# μέλος} other {# μέλη}}",
|
||||||
"lists.list_name": "Όνομα λίστας",
|
"lists.list_name": "Όνομα λίστας",
|
||||||
"lists.new_list_name": "Νέο όνομα λίστας",
|
"lists.new_list_name": "Νέο όνομα λίστας",
|
||||||
"lists.no_lists_yet": "Δεν υπάρχουν λίστες ακόμα.",
|
"lists.no_lists_yet": "Καμία λίστα ακόμη.",
|
||||||
"lists.no_members_yet": "Κανένα μέλος ακόμα.",
|
"lists.no_members_yet": "Κανένα μέλος ακόμη.",
|
||||||
"lists.no_results_found": "Δεν βρέθηκαν αποτελέσματα.",
|
"lists.no_results_found": "Δεν βρέθηκαν αποτελέσματα.",
|
||||||
"lists.remove_member": "Αφαίρεση",
|
"lists.remove_member": "Αφαίρεση",
|
||||||
"lists.replies_policy.followed": "Οποιοσδήποτε χρήστης που ακολουθείς",
|
"lists.replies_policy.followed": "Οποιοσδήποτε χρήστης που ακολουθείς",
|
||||||
@ -613,15 +637,15 @@
|
|||||||
"notification.admin.report_statuses": "Ο χρήστης {name} ανέφερε τον χρήστη {target} για {category}",
|
"notification.admin.report_statuses": "Ο χρήστης {name} ανέφερε τον χρήστη {target} για {category}",
|
||||||
"notification.admin.report_statuses_other": "Ο χρήστης {name} ανέφερε τον χρήστη {target}",
|
"notification.admin.report_statuses_other": "Ο χρήστης {name} ανέφερε τον χρήστη {target}",
|
||||||
"notification.admin.sign_up": "{name} έχει εγγραφεί",
|
"notification.admin.sign_up": "{name} έχει εγγραφεί",
|
||||||
"notification.admin.sign_up.name_and_others": "{name} και {count, plural, one {# ακόμη} other {# ακόμη}} έχουν εγγραφεί",
|
"notification.admin.sign_up.name_and_others": "{name} και {count, plural, one {# ακόμα} other {# ακόμα}} έχουν εγγραφεί",
|
||||||
"notification.annual_report.message": "Το #Wrapstodon {year} σε περιμένει! Αποκάλυψε τα στιγμιότυπα της χρονιάς και αξέχαστες στιγμές σου στο Mastodon!",
|
"notification.annual_report.message": "Το #Wrapstodon {year} σε περιμένει! Αποκάλυψε τα στιγμιότυπα της χρονιάς και αξέχαστες στιγμές σου στο Mastodon!",
|
||||||
"notification.annual_report.view": "Προβολή #Wrapstodon",
|
"notification.annual_report.view": "Προβολή #Wrapstodon",
|
||||||
"notification.favourite": "{name} αγάπησε την ανάρτηση σου",
|
"notification.favourite": "{name} αγάπησε την ανάρτηση σου",
|
||||||
"notification.favourite.name_and_others_with_link": "{name} και <a>{count, plural, one {# ακόμη} other {# ακόμη}}</a> αγάπησαν την ανάρτησή σου",
|
"notification.favourite.name_and_others_with_link": "{name} και <a>{count, plural, one {# ακόμα} other {# ακόμα}}</a> αγάπησαν την ανάρτησή σου",
|
||||||
"notification.favourite_pm": "Ο χρήστης {name} αγάπησε την ιδιωτική σου επισήμανση",
|
"notification.favourite_pm": "Ο χρήστης {name} αγάπησε την ιδιωτική σου επισήμανση",
|
||||||
"notification.favourite_pm.name_and_others_with_link": "Ο χρήστης {name} και <a>{count, plural, one {# ακόμη} other {# ακόμη}}</a> αγάπησαν την ιδωτική σου επισήμανση",
|
"notification.favourite_pm.name_and_others_with_link": "Ο χρήστης {name} και <a>{count, plural, one {# ακόμα} other {# ακόμα}}</a> αγάπησαν την ιδωτική σου επισήμανση",
|
||||||
"notification.follow": "Ο χρήστης {name} σε ακολούθησε",
|
"notification.follow": "Ο χρήστης {name} σε ακολούθησε",
|
||||||
"notification.follow.name_and_others": "Ο χρήστης {name} και <a>{count, plural, one {# ακόμη} other {# ακόμη}}</a> σε ακολούθησαν",
|
"notification.follow.name_and_others": "Ο χρήστης {name} και <a>{count, plural, one {# ακόμα} other {# ακόμα}}</a> σε ακολούθησαν",
|
||||||
"notification.follow_request": "Ο/H {name} ζήτησε να σε ακολουθήσει",
|
"notification.follow_request": "Ο/H {name} ζήτησε να σε ακολουθήσει",
|
||||||
"notification.follow_request.name_and_others": "{name} και {count, plural, one {# άλλος} other {# άλλοι}} ζήτησαν να σε ακολουθήσουν",
|
"notification.follow_request.name_and_others": "{name} και {count, plural, one {# άλλος} other {# άλλοι}} ζήτησαν να σε ακολουθήσουν",
|
||||||
"notification.label.mention": "Επισήμανση",
|
"notification.label.mention": "Επισήμανση",
|
||||||
@ -644,7 +668,7 @@
|
|||||||
"notification.poll": "Μία ψηφοφορία στην οποία συμμετείχες έχει τελειώσει",
|
"notification.poll": "Μία ψηφοφορία στην οποία συμμετείχες έχει τελειώσει",
|
||||||
"notification.quoted_update": "Ο χρήστης {name} επεξεργάστηκε μία ανάρτηση που παρέθεσες",
|
"notification.quoted_update": "Ο χρήστης {name} επεξεργάστηκε μία ανάρτηση που παρέθεσες",
|
||||||
"notification.reblog": "Ο/Η {name} ενίσχυσε την ανάρτηση σου",
|
"notification.reblog": "Ο/Η {name} ενίσχυσε την ανάρτηση σου",
|
||||||
"notification.reblog.name_and_others_with_link": "{name} και <a>{count, plural, one {# ακόμη} other {# ακόμη}}</a> ενίσχυσαν την ανάρτησή σου",
|
"notification.reblog.name_and_others_with_link": "{name} και <a>{count, plural, one {# ακόμα} other {# ακόμα}}</a> ενίσχυσαν την ανάρτησή σου",
|
||||||
"notification.relationships_severance_event": "Χάθηκε η σύνδεση με το {name}",
|
"notification.relationships_severance_event": "Χάθηκε η σύνδεση με το {name}",
|
||||||
"notification.relationships_severance_event.account_suspension": "Ένας διαχειριστής από το {from} ανέστειλε το {target}, πράγμα που σημαίνει ότι δεν μπορείς πλέον να λαμβάνεις ενημερώσεις από αυτούς ή να αλληλεπιδράς μαζί τους.",
|
"notification.relationships_severance_event.account_suspension": "Ένας διαχειριστής από το {from} ανέστειλε το {target}, πράγμα που σημαίνει ότι δεν μπορείς πλέον να λαμβάνεις ενημερώσεις από αυτούς ή να αλληλεπιδράς μαζί τους.",
|
||||||
"notification.relationships_severance_event.domain_block": "Ένας διαχειριστής από {from} έχει μπλοκάρει το {target}, συμπεριλαμβανομένων {followersCount} από τους ακόλουθούς σου και {followingCount, plural, one {# λογαριασμό} other {# λογαριασμοί}} που ακολουθείς.",
|
"notification.relationships_severance_event.domain_block": "Ένας διαχειριστής από {from} έχει μπλοκάρει το {target}, συμπεριλαμβανομένων {followersCount} από τους ακόλουθούς σου και {followingCount, plural, one {# λογαριασμό} other {# λογαριασμοί}} που ακολουθείς.",
|
||||||
@ -812,7 +836,7 @@
|
|||||||
"report.forward": "Προώθηση προς {target}",
|
"report.forward": "Προώθηση προς {target}",
|
||||||
"report.forward_hint": "Ο λογαριασμός είναι από διαφορετικό διακομιστή. Να σταλεί ανώνυμο αντίγραφο της αναφοράς και εκεί;",
|
"report.forward_hint": "Ο λογαριασμός είναι από διαφορετικό διακομιστή. Να σταλεί ανώνυμο αντίγραφο της αναφοράς και εκεί;",
|
||||||
"report.mute": "Σίγαση",
|
"report.mute": "Σίγαση",
|
||||||
"report.mute_explanation": "Δεν θα βλέπεις τις αναρτήσεις του. Εκείνοι μπορούν ακόμα να σε ακολουθούν και να βλέπουν τις αναρτήσεις σου χωρίς να γνωρίζουν ότι είναι σε σίγαση.",
|
"report.mute_explanation": "Δεν θα βλέπεις τις αναρτήσεις τους. Εκείνοι μπορούν ακόμη να σε ακολουθούν και να βλέπουν τις αναρτήσεις σου χωρίς να γνωρίζουν ότι είναι σε σίγαση.",
|
||||||
"report.next": "Επόμενο",
|
"report.next": "Επόμενο",
|
||||||
"report.placeholder": "Επιπλέον σχόλια",
|
"report.placeholder": "Επιπλέον σχόλια",
|
||||||
"report.reasons.dislike": "Δεν μου αρέσει",
|
"report.reasons.dislike": "Δεν μου αρέσει",
|
||||||
@ -942,7 +966,7 @@
|
|||||||
"status.quote_policy_change": "Αλλάξτε ποιός μπορεί να κάνει παράθεση",
|
"status.quote_policy_change": "Αλλάξτε ποιός μπορεί να κάνει παράθεση",
|
||||||
"status.quote_post_author": "Παρατίθεται μια ανάρτηση από @{name}",
|
"status.quote_post_author": "Παρατίθεται μια ανάρτηση από @{name}",
|
||||||
"status.quote_private": "Ιδιωτικές αναρτήσεις δεν μπορούν να παρατεθούν",
|
"status.quote_private": "Ιδιωτικές αναρτήσεις δεν μπορούν να παρατεθούν",
|
||||||
"status.quotes.empty": "Κανείς δεν έχει παραθέσει αυτή την ανάρτηση ακόμα. Μόλις το κάνει, θα εμφανιστεί εδώ.",
|
"status.quotes.empty": "Κανείς δεν έχει παραθέσει αυτή την ανάρτηση ακόμη. Μόλις το κάνει, θα εμφανιστεί εδώ.",
|
||||||
"status.quotes.local_other_disclaimer": "Οι παραθέσεις που απορρίφθηκαν από τον συντάκτη δε θα εμφανιστούν.",
|
"status.quotes.local_other_disclaimer": "Οι παραθέσεις που απορρίφθηκαν από τον συντάκτη δε θα εμφανιστούν.",
|
||||||
"status.quotes.remote_other_disclaimer": "Μόνο παραθέσεις από το {domain} είναι εγγυημένες ότι θα εμφανιστούν εδώ. Παραθέσεις που απορρίφθηκαν από τον συντάκτη δε θα εμφανιστούν.",
|
"status.quotes.remote_other_disclaimer": "Μόνο παραθέσεις από το {domain} είναι εγγυημένες ότι θα εμφανιστούν εδώ. Παραθέσεις που απορρίφθηκαν από τον συντάκτη δε θα εμφανιστούν.",
|
||||||
"status.quotes_count": "{count, plural, one {{counter} παράθεση} other {{counter} παραθέσεις}}",
|
"status.quotes_count": "{count, plural, one {{counter} παράθεση} other {{counter} παραθέσεις}}",
|
||||||
@ -951,7 +975,7 @@
|
|||||||
"status.reblog_or_quote": "Ενίσχυση ή παράθεση",
|
"status.reblog_or_quote": "Ενίσχυση ή παράθεση",
|
||||||
"status.reblog_private": "Μοιράσου ξανά με τους ακόλουθούς σου",
|
"status.reblog_private": "Μοιράσου ξανά με τους ακόλουθούς σου",
|
||||||
"status.reblogged_by": "{name} προώθησε",
|
"status.reblogged_by": "{name} προώθησε",
|
||||||
"status.reblogs.empty": "Κανείς δεν ενίσχυσε αυτή την ανάρτηση ακόμα. Μόλις το κάνει κάποιος, θα εμφανιστεί εδώ.",
|
"status.reblogs.empty": "Κανείς δεν ενίσχυσε αυτή την ανάρτηση ακόμη. Μόλις το κάνει κάποιος, θα εμφανιστεί εδώ.",
|
||||||
"status.reblogs_count": "{count, plural, one {{counter} ενίσχυση} other {{counter} ενισχύσεις}}",
|
"status.reblogs_count": "{count, plural, one {{counter} ενίσχυση} other {{counter} ενισχύσεις}}",
|
||||||
"status.redraft": "Σβήσε & ξαναγράψε",
|
"status.redraft": "Σβήσε & ξαναγράψε",
|
||||||
"status.remove_bookmark": "Αφαίρεση σελιδοδείκτη",
|
"status.remove_bookmark": "Αφαίρεση σελιδοδείκτη",
|
||||||
|
|||||||
@ -114,29 +114,51 @@
|
|||||||
"alt_text_modal.done": "Done",
|
"alt_text_modal.done": "Done",
|
||||||
"announcement.announcement": "Announcement",
|
"announcement.announcement": "Announcement",
|
||||||
"annual_report.announcement.action_build": "Build my Wrapstodon",
|
"annual_report.announcement.action_build": "Build my Wrapstodon",
|
||||||
|
"annual_report.announcement.action_dismiss": "No thanks",
|
||||||
"annual_report.announcement.action_view": "View my Wrapstodon",
|
"annual_report.announcement.action_view": "View my Wrapstodon",
|
||||||
"annual_report.announcement.description": "Discover more about your engagement on Mastodon over the past year.",
|
"annual_report.announcement.description": "Discover more about your engagement on Mastodon over the past year.",
|
||||||
"annual_report.announcement.title": "Wrapstodon {year} has arrived",
|
"annual_report.announcement.title": "Wrapstodon {year} has arrived",
|
||||||
"annual_report.summary.archetype.booster": "The cool-hunter",
|
"annual_report.nav_item.badge": "New",
|
||||||
"annual_report.summary.archetype.lurker": "The lurker",
|
"annual_report.shared_page.donate": "Donate",
|
||||||
"annual_report.summary.archetype.oracle": "The oracle",
|
"annual_report.shared_page.footer": "Generated with {heart} by the Mastodon team",
|
||||||
"annual_report.summary.archetype.pollster": "The pollster",
|
"annual_report.shared_page.footer_server_info": "{username} uses {domain}, one of many communities powered by Mastodon.",
|
||||||
"annual_report.summary.archetype.replier": "The social butterfly",
|
"annual_report.summary.archetype.booster.desc_public": "{name} stayed on the hunt for posts to boost, amplifying other creators with perfect aim.",
|
||||||
"annual_report.summary.followers.followers": "followers",
|
"annual_report.summary.archetype.booster.desc_self": "You stayed on the hunt for posts to boost, amplifying other creators with perfect aim.",
|
||||||
"annual_report.summary.followers.total": "{count} total",
|
"annual_report.summary.archetype.booster.name": "The Archer",
|
||||||
"annual_report.summary.here_it_is": "Here is your {year} in review:",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "most favourited post",
|
"annual_report.summary.archetype.lurker.desc_public": "We know {name} was out there, somewhere, enjoying Mastodon in their own quiet way.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "most boosted post",
|
"annual_report.summary.archetype.lurker.desc_self": "We know you were out there, somewhere, enjoying Mastodon in your own quiet way.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "post with the most replies",
|
"annual_report.summary.archetype.lurker.name": "The Stoic",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}'s",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} created new posts more than replies, keeping Mastodon fresh and future-facing.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "You created new posts more than replies, keeping Mastodon fresh and future-facing.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "The Oracle",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name} created more polls than other post types, cultivating curiosity on Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "You created more polls than other post types, cultivating curiosity on Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "The Wonderer",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} frequently replied to other people’s posts, pollinating Mastodon with new discussions.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "You frequently replied to other people’s posts, pollinating Mastodon with new discussions.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "The Butterfly",
|
||||||
|
"annual_report.summary.archetype.reveal": "Reveal my archetype",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Thanks for being part of Mastodon! Time to find out which archetype you embodied in {year}.",
|
||||||
|
"annual_report.summary.archetype.title_public": "{name}'s archetype",
|
||||||
|
"annual_report.summary.archetype.title_self": "Your archetype",
|
||||||
|
"annual_report.summary.close": "Close",
|
||||||
|
"annual_report.summary.copy_link": "Copy link",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {new follower} other {new followers}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "This post was boosted {count, plural, one {once} other {# times}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "This post was favourited {count, plural, one {once} other {# times}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "This post got {count, plural, one {one reply} other {# replies}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Most popular post",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "most used app",
|
"annual_report.summary.most_used_app.most_used_app": "most used app",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "most used hashtag",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "most used hashtag",
|
||||||
"annual_report.summary.most_used_hashtag.none": "None",
|
"annual_report.summary.most_used_hashtag.used_count": "You included this hashtag in {count, plural, one {one post} other {# posts}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} included this hashtag in {count, plural, one {one post} other {# posts}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "new posts",
|
"annual_report.summary.new_posts.new_posts": "new posts",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>That puts you in the top</topLabel><percentage></percentage><bottomLabel>of {domain} users.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>That puts you in the top</topLabel><percentage></percentage><bottomLabel>of {domain} users.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "We won't tell Bernie.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "We won't tell Bernie.",
|
||||||
|
"annual_report.summary.share_elsewhere": "Share elsewhere",
|
||||||
"annual_report.summary.share_message": "I got the {archetype} archetype!",
|
"annual_report.summary.share_message": "I got the {archetype} archetype!",
|
||||||
"annual_report.summary.thanks": "Thanks for being part of Mastodon!",
|
"annual_report.summary.share_on_mastodon": "Share on Mastodon",
|
||||||
"attachments_list.unprocessed": "(unprocessed)",
|
"attachments_list.unprocessed": "(unprocessed)",
|
||||||
"audio.hide": "Hide audio",
|
"audio.hide": "Hide audio",
|
||||||
"block_modal.remote_users_caveat": "We will ask the server {domain} to respect your decision. However, compliance is not guaranteed since some servers may handle blocks differently. Public posts may still be visible to non-logged-in users.",
|
"block_modal.remote_users_caveat": "We will ask the server {domain} to respect your decision. However, compliance is not guaranteed since some servers may handle blocks differently. Public posts may still be visible to non-logged-in users.",
|
||||||
@ -265,7 +287,7 @@
|
|||||||
"confirmations.quiet_post_quote_info.title": "Quoting quiet public posts",
|
"confirmations.quiet_post_quote_info.title": "Quoting quiet public posts",
|
||||||
"confirmations.redraft.confirm": "Delete & redraft",
|
"confirmations.redraft.confirm": "Delete & redraft",
|
||||||
"confirmations.redraft.message": "Are you sure you want to delete this post and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
|
"confirmations.redraft.message": "Are you sure you want to delete this post and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
|
||||||
"confirmations.redraft.title": "Delete & redraft post?",
|
"confirmations.redraft.title": "Delete and redraft post?",
|
||||||
"confirmations.remove_from_followers.confirm": "Remove follower",
|
"confirmations.remove_from_followers.confirm": "Remove follower",
|
||||||
"confirmations.remove_from_followers.message": "{name} will stop following you. Are you sure you want to proceed?",
|
"confirmations.remove_from_followers.message": "{name} will stop following you. Are you sure you want to proceed?",
|
||||||
"confirmations.remove_from_followers.title": "Remove follower?",
|
"confirmations.remove_from_followers.title": "Remove follower?",
|
||||||
@ -306,7 +328,7 @@
|
|||||||
"domain_block_modal.you_will_lose_num_followers": "You will lose {followersCount, plural, one {{followersCountDisplay} follower} other {{followersCountDisplay} followers}} and {followingCount, plural, one {{followingCountDisplay} person you follow} other {{followingCountDisplay} people you follow}}.",
|
"domain_block_modal.you_will_lose_num_followers": "You will lose {followersCount, plural, one {{followersCountDisplay} follower} other {{followersCountDisplay} followers}} and {followingCount, plural, one {{followingCountDisplay} person you follow} other {{followingCountDisplay} people you follow}}.",
|
||||||
"domain_block_modal.you_will_lose_relationships": "You will lose all followers and people you follow from this server.",
|
"domain_block_modal.you_will_lose_relationships": "You will lose all followers and people you follow from this server.",
|
||||||
"domain_block_modal.you_wont_see_posts": "You won't see posts or notifications from users on this server.",
|
"domain_block_modal.you_wont_see_posts": "You won't see posts or notifications from users on this server.",
|
||||||
"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_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.activitypub_like_language": "ActivityPub is like the language Mastodon speaks with other social networks.",
|
||||||
"domain_pill.server": "Server",
|
"domain_pill.server": "Server",
|
||||||
"domain_pill.their_handle": "Their handle:",
|
"domain_pill.their_handle": "Their handle:",
|
||||||
@ -317,7 +339,7 @@
|
|||||||
"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_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.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_handle": "Your handle:",
|
||||||
"domain_pill.your_server": "Your digital home, where all of your posts live. Don’t like this one? Transfer servers at any time and bring your followers, too.",
|
"domain_pill.your_server": "Your digital home, where all of your posts live. Don’t like this one? Transfer servers at any time and bring your followers too.",
|
||||||
"domain_pill.your_username": "Your unique identifier on this server. It’s possible to find users with the same username on different servers.",
|
"domain_pill.your_username": "Your unique identifier on this server. It’s possible to find users with the same username on different servers.",
|
||||||
"dropdown.empty": "Select an option",
|
"dropdown.empty": "Select an option",
|
||||||
"embed.instructions": "Embed this post on your website by copying the code below.",
|
"embed.instructions": "Embed this post on your website by copying the code below.",
|
||||||
@ -340,7 +362,7 @@
|
|||||||
"empty_column.account_featured.me": "You have not featured anything yet. Did you know that you can feature your hashtags you use the most, and even your friend’s accounts on your profile?",
|
"empty_column.account_featured.me": "You have not featured anything yet. Did you know that you can feature your hashtags you use the most, and even your friend’s accounts on your profile?",
|
||||||
"empty_column.account_featured.other": "{acct} has not featured anything yet. Did you know that you can feature your hashtags you use the most, and even your friend’s accounts on your profile?",
|
"empty_column.account_featured.other": "{acct} has not featured anything yet. Did you know that you can feature your hashtags you use the most, and even your friend’s accounts on your profile?",
|
||||||
"empty_column.account_featured_other.unknown": "This account has not featured anything yet.",
|
"empty_column.account_featured_other.unknown": "This account has not featured anything yet.",
|
||||||
"empty_column.account_hides_collections": "This user has chosen to not make this information available",
|
"empty_column.account_hides_collections": "This user has chosen not to make this information available",
|
||||||
"empty_column.account_suspended": "Account suspended",
|
"empty_column.account_suspended": "Account suspended",
|
||||||
"empty_column.account_timeline": "No posts here!",
|
"empty_column.account_timeline": "No posts here!",
|
||||||
"empty_column.account_unavailable": "Profile unavailable",
|
"empty_column.account_unavailable": "Profile unavailable",
|
||||||
@ -359,7 +381,7 @@
|
|||||||
"empty_column.home": "Your home timeline is empty! Follow more people to fill it up.",
|
"empty_column.home": "Your home timeline is empty! Follow more people to fill it up.",
|
||||||
"empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
|
"empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
|
||||||
"empty_column.mutes": "You haven't muted any users yet.",
|
"empty_column.mutes": "You haven't muted any users yet.",
|
||||||
"empty_column.notification_requests": "All clear! There is nothing here. When you receive new notifications, they will appear here according to your settings.",
|
"empty_column.notification_requests": "All clear! There is nothing here. When you receive new notifications, they will appear here, according to your settings.",
|
||||||
"empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.",
|
"empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.",
|
||||||
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
|
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
|
||||||
"error.no_hashtag_feed_access": "Join or log in to view and follow this hashtag.",
|
"error.no_hashtag_feed_access": "Join or log in to view and follow this hashtag.",
|
||||||
@ -419,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "Who to follow",
|
"follow_suggestions.who_to_follow": "Who to follow",
|
||||||
"followed_tags": "Followed hashtags",
|
"followed_tags": "Followed hashtags",
|
||||||
"footer.about": "About",
|
"footer.about": "About",
|
||||||
|
"footer.about_mastodon": "About Mastodon",
|
||||||
|
"footer.about_server": "About {domain}",
|
||||||
"footer.about_this_server": "About",
|
"footer.about_this_server": "About",
|
||||||
"footer.directory": "Profiles directory",
|
"footer.directory": "Profiles directory",
|
||||||
"footer.get_app": "Get the app",
|
"footer.get_app": "Get the app",
|
||||||
@ -483,7 +507,7 @@
|
|||||||
"interaction_modal.on_another_server": "On a different server",
|
"interaction_modal.on_another_server": "On a different server",
|
||||||
"interaction_modal.on_this_server": "On this server",
|
"interaction_modal.on_this_server": "On this server",
|
||||||
"interaction_modal.title": "Sign in to continue",
|
"interaction_modal.title": "Sign in to continue",
|
||||||
"interaction_modal.username_prompt": "E.g. {example}",
|
"interaction_modal.username_prompt": "Eg {example}",
|
||||||
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
|
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
|
||||||
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
|
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
|
||||||
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
|
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
|
||||||
@ -601,7 +625,7 @@
|
|||||||
"navigation_bar.preferences": "Preferences",
|
"navigation_bar.preferences": "Preferences",
|
||||||
"navigation_bar.privacy_and_reach": "Privacy and reach",
|
"navigation_bar.privacy_and_reach": "Privacy and reach",
|
||||||
"navigation_bar.search": "Search",
|
"navigation_bar.search": "Search",
|
||||||
"navigation_bar.search_trends": "Search / Trending",
|
"navigation_bar.search_trends": "Search/Trending",
|
||||||
"navigation_panel.collapse_followed_tags": "Collapse followed hashtags menu",
|
"navigation_panel.collapse_followed_tags": "Collapse followed hashtags menu",
|
||||||
"navigation_panel.collapse_lists": "Collapse list menu",
|
"navigation_panel.collapse_lists": "Collapse list menu",
|
||||||
"navigation_panel.expand_followed_tags": "Expand followed hashtags menu",
|
"navigation_panel.expand_followed_tags": "Expand followed hashtags menu",
|
||||||
@ -641,7 +665,7 @@
|
|||||||
"notification.moderation_warning.action_silence": "Your account has been limited.",
|
"notification.moderation_warning.action_silence": "Your account has been limited.",
|
||||||
"notification.moderation_warning.action_suspend": "Your account has been suspended.",
|
"notification.moderation_warning.action_suspend": "Your account has been suspended.",
|
||||||
"notification.own_poll": "Your poll has ended",
|
"notification.own_poll": "Your poll has ended",
|
||||||
"notification.poll": "A poll you voted in has ended",
|
"notification.poll": "A poll in which you voted has ended",
|
||||||
"notification.quoted_update": "{name} edited a post you have quoted",
|
"notification.quoted_update": "{name} edited a post you have quoted",
|
||||||
"notification.reblog": "{name} boosted your post",
|
"notification.reblog": "{name} boosted your post",
|
||||||
"notification.reblog.name_and_others_with_link": "{name} and <a>{count, plural, one {# other} other {# others}}</a> boosted your post",
|
"notification.reblog.name_and_others_with_link": "{name} and <a>{count, plural, one {# other} other {# others}}</a> boosted your post",
|
||||||
@ -667,7 +691,7 @@
|
|||||||
"notification_requests.explainer_for_limited_account": "Notifications from this account have been filtered because the account has been limited by a moderator.",
|
"notification_requests.explainer_for_limited_account": "Notifications from this account have been filtered because the account has been limited by a moderator.",
|
||||||
"notification_requests.explainer_for_limited_remote_account": "Notifications from this account have been filtered because the account or its server has been limited by a moderator.",
|
"notification_requests.explainer_for_limited_remote_account": "Notifications from this account have been filtered because the account or its server has been limited by a moderator.",
|
||||||
"notification_requests.maximize": "Maximise",
|
"notification_requests.maximize": "Maximise",
|
||||||
"notification_requests.minimize_banner": "Minimize filtered notifications banner",
|
"notification_requests.minimize_banner": "Minimise filtered notifications banner",
|
||||||
"notification_requests.notifications_from": "Notifications from {name}",
|
"notification_requests.notifications_from": "Notifications from {name}",
|
||||||
"notification_requests.title": "Filtered notifications",
|
"notification_requests.title": "Filtered notifications",
|
||||||
"notification_requests.view": "View notifications",
|
"notification_requests.view": "View notifications",
|
||||||
@ -717,11 +741,11 @@
|
|||||||
"notifications.policy.filter_limited_accounts_title": "Moderated accounts",
|
"notifications.policy.filter_limited_accounts_title": "Moderated accounts",
|
||||||
"notifications.policy.filter_new_accounts.hint": "Created within the past {days, plural, one {one day} other {# days}}",
|
"notifications.policy.filter_new_accounts.hint": "Created within the past {days, plural, one {one day} other {# days}}",
|
||||||
"notifications.policy.filter_new_accounts_title": "New accounts",
|
"notifications.policy.filter_new_accounts_title": "New accounts",
|
||||||
"notifications.policy.filter_not_followers_hint": "Including people who have been following you fewer than {days, plural, one {one day} other {# days}}",
|
"notifications.policy.filter_not_followers_hint": "Including people who have been following you for fewer than {days, plural, one {one day} other {# days}}",
|
||||||
"notifications.policy.filter_not_followers_title": "People not following you",
|
"notifications.policy.filter_not_followers_title": "People not following you",
|
||||||
"notifications.policy.filter_not_following_hint": "Until you manually approve them",
|
"notifications.policy.filter_not_following_hint": "Until you manually approve them",
|
||||||
"notifications.policy.filter_not_following_title": "People you don't follow",
|
"notifications.policy.filter_not_following_title": "People you don't follow",
|
||||||
"notifications.policy.filter_private_mentions_hint": "Filtered unless it's in reply to your own mention or if you follow the sender",
|
"notifications.policy.filter_private_mentions_hint": "Filtered, unless it's in reply to your own mention, or if you follow the sender",
|
||||||
"notifications.policy.filter_private_mentions_title": "Unsolicited private mentions",
|
"notifications.policy.filter_private_mentions_title": "Unsolicited private mentions",
|
||||||
"notifications.policy.title": "Manage notifications from…",
|
"notifications.policy.title": "Manage notifications from…",
|
||||||
"notifications_permission_banner.enable": "Enable desktop notifications",
|
"notifications_permission_banner.enable": "Enable desktop notifications",
|
||||||
@ -868,17 +892,17 @@
|
|||||||
"search_results.all": "All",
|
"search_results.all": "All",
|
||||||
"search_results.hashtags": "Hashtags",
|
"search_results.hashtags": "Hashtags",
|
||||||
"search_results.no_results": "No results.",
|
"search_results.no_results": "No results.",
|
||||||
"search_results.no_search_yet": "Try searching for posts, profiles or hashtags.",
|
"search_results.no_search_yet": "Try searching for posts, profiles, or hashtags.",
|
||||||
"search_results.see_all": "See all",
|
"search_results.see_all": "See all",
|
||||||
"search_results.statuses": "Posts",
|
"search_results.statuses": "Posts",
|
||||||
"search_results.title": "Search for \"{q}\"",
|
"search_results.title": "Search for \"{q}\"",
|
||||||
"server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)",
|
"server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)",
|
||||||
"server_banner.active_users": "active users",
|
"server_banner.active_users": "active users",
|
||||||
"server_banner.administered_by": "Administered by:",
|
"server_banner.administered_by": "Administered by:",
|
||||||
"server_banner.is_one_of_many": "{domain} is one of the many independent Mastodon servers you can use to participate in the fediverse.",
|
"server_banner.is_one_of_many": "{domain} is one of the many independent Mastodon servers you can use to participate in the Fediverse.",
|
||||||
"server_banner.server_stats": "Server stats:",
|
"server_banner.server_stats": "Server stats:",
|
||||||
"sign_in_banner.create_account": "Create account",
|
"sign_in_banner.create_account": "Create account",
|
||||||
"sign_in_banner.follow_anyone": "Follow anyone across the fediverse and see it all in chronological order. No algorithms, ads, or clickbait in sight.",
|
"sign_in_banner.follow_anyone": "Follow anyone across the Fediverse and see it all in chronological order. No algorithms, ads, or clickbait in sight.",
|
||||||
"sign_in_banner.mastodon_is": "Mastodon is the best way to keep up with what's happening.",
|
"sign_in_banner.mastodon_is": "Mastodon is the best way to keep up with what's happening.",
|
||||||
"sign_in_banner.sign_in": "Sign in",
|
"sign_in_banner.sign_in": "Sign in",
|
||||||
"sign_in_banner.sso_redirect": "Login or Register",
|
"sign_in_banner.sso_redirect": "Login or Register",
|
||||||
@ -1020,7 +1044,7 @@
|
|||||||
"video.mute": "Mute",
|
"video.mute": "Mute",
|
||||||
"video.pause": "Pause",
|
"video.pause": "Pause",
|
||||||
"video.play": "Play",
|
"video.play": "Play",
|
||||||
"video.skip_backward": "Skip backward",
|
"video.skip_backward": "Skip backwards",
|
||||||
"video.skip_forward": "Skip forward",
|
"video.skip_forward": "Skip forward",
|
||||||
"video.unmute": "Unmute",
|
"video.unmute": "Unmute",
|
||||||
"video.volume_down": "Volume down",
|
"video.volume_down": "Volume down",
|
||||||
|
|||||||
@ -28,6 +28,7 @@
|
|||||||
"account.disable_notifications": "Ĉesu sciigi min kiam @{name} afiŝas",
|
"account.disable_notifications": "Ĉesu sciigi min kiam @{name} afiŝas",
|
||||||
"account.domain_blocking": "Blokas domajnon",
|
"account.domain_blocking": "Blokas domajnon",
|
||||||
"account.edit_profile": "Redakti la profilon",
|
"account.edit_profile": "Redakti la profilon",
|
||||||
|
"account.edit_profile_short": "Redakti",
|
||||||
"account.enable_notifications": "Sciigu min kiam @{name} afiŝos",
|
"account.enable_notifications": "Sciigu min kiam @{name} afiŝos",
|
||||||
"account.endorse": "Montri en profilo",
|
"account.endorse": "Montri en profilo",
|
||||||
"account.familiar_followers_one": "Sekvita de {name1}",
|
"account.familiar_followers_one": "Sekvita de {name1}",
|
||||||
@ -40,6 +41,7 @@
|
|||||||
"account.follow": "Sekvi",
|
"account.follow": "Sekvi",
|
||||||
"account.follow_back": "Sekvu reen",
|
"account.follow_back": "Sekvu reen",
|
||||||
"account.follow_back_short": "Sekvu reen",
|
"account.follow_back_short": "Sekvu reen",
|
||||||
|
"account.follow_request_cancel_short": "Nuligi",
|
||||||
"account.followers": "Sekvantoj",
|
"account.followers": "Sekvantoj",
|
||||||
"account.followers.empty": "Ankoraŭ neniu sekvas ĉi tiun uzanton.",
|
"account.followers.empty": "Ankoraŭ neniu sekvas ĉi tiun uzanton.",
|
||||||
"account.followers_counter": "{count, plural, one{{counter} sekvanto} other {{counter} sekvantoj}}",
|
"account.followers_counter": "{count, plural, one{{counter} sekvanto} other {{counter} sekvantoj}}",
|
||||||
@ -107,25 +109,16 @@
|
|||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Priskribi ĉi tion por homoj kun vidaj malkapabloj…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "Priskribi ĉi tion por homoj kun vidaj malkapabloj…",
|
||||||
"alt_text_modal.done": "Farita",
|
"alt_text_modal.done": "Farita",
|
||||||
"announcement.announcement": "Anonco",
|
"announcement.announcement": "Anonco",
|
||||||
"annual_report.summary.archetype.booster": "La ĉasanto de mojoso",
|
"annual_report.announcement.action_dismiss": "Ne, dankon",
|
||||||
"annual_report.summary.archetype.lurker": "La vidanto",
|
"annual_report.nav_item.badge": "Nova",
|
||||||
"annual_report.summary.archetype.oracle": "La orakolo",
|
"annual_report.shared_page.donate": "Donaci",
|
||||||
"annual_report.summary.archetype.pollster": "La balotenketisto",
|
"annual_report.summary.copy_link": "Kopii ligilon",
|
||||||
"annual_report.summary.archetype.replier": "La plej societema",
|
"annual_report.summary.highlighted_post.title": "Plej populara afiŝo",
|
||||||
"annual_report.summary.followers.followers": "sekvantoj",
|
|
||||||
"annual_report.summary.followers.total": "{count} tute",
|
|
||||||
"annual_report.summary.here_it_is": "Jen via resumo de {year}:",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "plej ŝatata afiŝo",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "plej diskonigita afiŝo",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "afiŝo kun la plej multaj respondoj",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "de {name}",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "plej uzita aplikaĵo",
|
"annual_report.summary.most_used_app.most_used_app": "plej uzita aplikaĵo",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "plej uzata kradvorto",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "plej uzata kradvorto",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Nenio",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "novaj afiŝoj",
|
"annual_report.summary.new_posts.new_posts": "novaj afiŝoj",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Tion metas vin en la plej</topLabel><percentage></percentage><bottomLabel>de {domain} uzantoj.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Tion metas vin en la plej</topLabel><percentage></percentage><bottomLabel>de {domain} uzantoj.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Ni ne diros al Zamenhof.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Ni ne diros al Zamenhof.",
|
||||||
"annual_report.summary.thanks": "Dankon pro esti parto de Mastodon!",
|
|
||||||
"attachments_list.unprocessed": "(neprilaborita)",
|
"attachments_list.unprocessed": "(neprilaborita)",
|
||||||
"audio.hide": "Kaŝi aŭdion",
|
"audio.hide": "Kaŝi aŭdion",
|
||||||
"block_modal.remote_users_caveat": "Ni petos al la servilo {domain} respekti vian elekton. Tamen, plenumo ne estas garantiita ĉar iuj serviloj eble manipulas blokojn malsame. Publikaj afiŝoj eble ankoraŭ estas videbla por ne-ensalutintaj uzantoj.",
|
"block_modal.remote_users_caveat": "Ni petos al la servilo {domain} respekti vian elekton. Tamen, plenumo ne estas garantiita ĉar iuj serviloj eble manipulas blokojn malsame. Publikaj afiŝoj eble ankoraŭ estas videbla por ne-ensalutintaj uzantoj.",
|
||||||
|
|||||||
@ -114,29 +114,51 @@
|
|||||||
"alt_text_modal.done": "Listo",
|
"alt_text_modal.done": "Listo",
|
||||||
"announcement.announcement": "Anuncio",
|
"announcement.announcement": "Anuncio",
|
||||||
"annual_report.announcement.action_build": "Construir mi MastodonAnual",
|
"annual_report.announcement.action_build": "Construir mi MastodonAnual",
|
||||||
|
"annual_report.announcement.action_dismiss": "No, gracias",
|
||||||
"annual_report.announcement.action_view": "Ver mi MastodonAnual",
|
"annual_report.announcement.action_view": "Ver mi MastodonAnual",
|
||||||
"annual_report.announcement.description": "Descubrí más sobre tu participación en Mastodon durante el último año.",
|
"annual_report.announcement.description": "Descubrí más sobre tu participación en Mastodon durante el último año.",
|
||||||
"annual_report.announcement.title": "Llegó MastodonAnual {year}",
|
"annual_report.announcement.title": "Llegó MastodonAnual {year}",
|
||||||
"annual_report.summary.archetype.booster": "Corrió la voz",
|
"annual_report.nav_item.badge": "Nueva",
|
||||||
"annual_report.summary.archetype.lurker": "El acechador",
|
"annual_report.shared_page.donate": "Donar",
|
||||||
"annual_report.summary.archetype.oracle": "El oráculo",
|
"annual_report.shared_page.footer": "Generado con {heart} por el equipo de Mastodon",
|
||||||
"annual_report.summary.archetype.pollster": "Estuvo consultando",
|
"annual_report.shared_page.footer_server_info": "{username} usa {domain}, una de las tantas comunidades de Mastodon.",
|
||||||
"annual_report.summary.archetype.replier": "Respondió un montón",
|
"annual_report.summary.archetype.booster.desc_public": "{name} permaneció al acecho en busca de mensajes para adherir, apuntando a otros creadores con perfecta puntería.",
|
||||||
"annual_report.summary.followers.followers": "seguidores",
|
"annual_report.summary.archetype.booster.desc_self": "Permaneciste al acecho en busca de mensajes para adherir, apuntando a otros creadores con perfecta puntería.",
|
||||||
"annual_report.summary.followers.total": "{count} en total",
|
"annual_report.summary.archetype.booster.name": "El arquero",
|
||||||
"annual_report.summary.here_it_is": "Acá está tu resumen de {year}:",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "¿¿¿???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "el mensaje más veces marcado como favorito",
|
"annual_report.summary.archetype.lurker.desc_public": "Sabemos que {name} estuvo afuera, en algún lado, disfrutando de Mastodon a su propio modo silencioso.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "el mensaje que más adhesiones recibió",
|
"annual_report.summary.archetype.lurker.desc_self": "Sabemos que estuviste afuera, en algún lado, disfrutando de Mastodon a tu propio modo silencioso.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "el mensaje que más respuestas recibió",
|
"annual_report.summary.archetype.lurker.name": "El estoico",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} creó más mensajes nuevos que respuestas, manteniendo a Mastodon fresco y de cara al futuro.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Creaste más mensajes nuevos que respuestas, manteniendo a Mastodon fresco y de cara al futuro.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "El oráculo",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name} creó más encuestas que mensajes de otro tipo, cultivando curiosidad en Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Creaste más encuestas que mensajes de otro tipo, cultivando curiosidad en Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "El maravillado",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} respondió frecuentemente a los mensajes de otras cuentas, polinizando con nuevos debates.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Respondiste frecuentemente a los mensajes de otras cuentas, polinizando con nuevos debates.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "La mariposa",
|
||||||
|
"annual_report.summary.archetype.reveal": "Revelar mi arquetipo",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "¡Gracias por ser parte de Mastodon! Es hora de descubrir qué arquetipo encarnaste en {year}.",
|
||||||
|
"annual_report.summary.archetype.title_public": "El arquetipo de {name}",
|
||||||
|
"annual_report.summary.archetype.title_self": "Tu arquetipo",
|
||||||
|
"annual_report.summary.close": "Cerrar",
|
||||||
|
"annual_report.summary.copy_link": "Copiar enlace",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {nuevo seguidor} other {nuevos seguidores}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Este mensaje recibió adhesiones {count, plural, one {una vez} other {# veces}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Este mensaje fue marcado como favorito {count, plural, one {una vez} other {# veces}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Este mensaje recibió {count, plural, one {una respuesta} other {# respuestas}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Mensaje más popular",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "la aplicación más usada",
|
"annual_report.summary.most_used_app.most_used_app": "la aplicación más usada",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "la etiqueta más usada",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "la etiqueta más usada",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Ninguna",
|
"annual_report.summary.most_used_hashtag.used_count": "Incluiste esta etiqueta en {count, plural, one {un mensaje} other {# mensajes}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} incluyó esta etiqueta en {count, plural, one {un mensaje} other {# mensajes}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "nuevos mensajes",
|
"annual_report.summary.new_posts.new_posts": "nuevos mensajes",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Eso te coloca en la cima del</topLabel><percentage></percentage><bottomLabel>de los usuarios de {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Eso te coloca en la cima del</topLabel><percentage></percentage><bottomLabel>de los usuarios de {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Queda entre nos.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Queda entre nos.",
|
||||||
|
"annual_report.summary.share_elsewhere": "Compartir en otro lado",
|
||||||
"annual_report.summary.share_message": "¡Conseguí el arquetipo {archetype}!",
|
"annual_report.summary.share_message": "¡Conseguí el arquetipo {archetype}!",
|
||||||
"annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!",
|
"annual_report.summary.share_on_mastodon": "Compartir en Mastodon",
|
||||||
"attachments_list.unprocessed": "[sin procesar]",
|
"attachments_list.unprocessed": "[sin procesar]",
|
||||||
"audio.hide": "Ocultar audio",
|
"audio.hide": "Ocultar audio",
|
||||||
"block_modal.remote_users_caveat": "Le pediremos al servidor {domain} que respete tu decisión. Sin embargo, el cumplimiento no está garantizado, ya que algunos servidores pueden manejar los bloqueos de forma diferente. Los mensajes públicos todavía podrían estar visibles para los usuarios no conectados.",
|
"block_modal.remote_users_caveat": "Le pediremos al servidor {domain} que respete tu decisión. Sin embargo, el cumplimiento no está garantizado, ya que algunos servidores pueden manejar los bloqueos de forma diferente. Los mensajes públicos todavía podrían estar visibles para los usuarios no conectados.",
|
||||||
@ -419,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "A quién seguir",
|
"follow_suggestions.who_to_follow": "A quién seguir",
|
||||||
"followed_tags": "Etiquetas seguidas",
|
"followed_tags": "Etiquetas seguidas",
|
||||||
"footer.about": "Información",
|
"footer.about": "Información",
|
||||||
|
"footer.about_mastodon": "Acerca de Mastodon",
|
||||||
|
"footer.about_server": "Acerca de {domain}",
|
||||||
"footer.about_this_server": "Información",
|
"footer.about_this_server": "Información",
|
||||||
"footer.directory": "Directorio de perfiles",
|
"footer.directory": "Directorio de perfiles",
|
||||||
"footer.get_app": "Conseguí la aplicación",
|
"footer.get_app": "Conseguí la aplicación",
|
||||||
|
|||||||
@ -114,29 +114,51 @@
|
|||||||
"alt_text_modal.done": "Hecho",
|
"alt_text_modal.done": "Hecho",
|
||||||
"announcement.announcement": "Anuncio",
|
"announcement.announcement": "Anuncio",
|
||||||
"annual_report.announcement.action_build": "Preparar mi Wrapstodon",
|
"annual_report.announcement.action_build": "Preparar mi Wrapstodon",
|
||||||
|
"annual_report.announcement.action_dismiss": "No, gracias",
|
||||||
"annual_report.announcement.action_view": "Ver mi Wrapstodon",
|
"annual_report.announcement.action_view": "Ver mi Wrapstodon",
|
||||||
"annual_report.announcement.description": "Descubre más sobre tu participación en Mastodon durante el último año.",
|
"annual_report.announcement.description": "Descubre más sobre tu participación en Mastodon durante el último año.",
|
||||||
"annual_report.announcement.title": "Wrapstodon {year} ha llegado",
|
"annual_report.announcement.title": "Wrapstodon {year} ha llegado",
|
||||||
"annual_report.summary.archetype.booster": "El cazador de tendencias",
|
"annual_report.nav_item.badge": "Nueva",
|
||||||
"annual_report.summary.archetype.lurker": "El merodeador",
|
"annual_report.shared_page.donate": "Donar",
|
||||||
"annual_report.summary.archetype.oracle": "El oráculo",
|
"annual_report.shared_page.footer": "Generado con {heart} por el equipo de Mastodon",
|
||||||
"annual_report.summary.archetype.pollster": "El encuestador",
|
"annual_report.shared_page.footer_server_info": "{username} usa {domain}, una de las muchas comunidades que funcionan con Mastodon.",
|
||||||
"annual_report.summary.archetype.replier": "El más sociable",
|
"annual_report.summary.archetype.booster.desc_public": "{name} se mantuvo a la caza de publicaciones para impulsar, dando visibilidad a otros creadores con una puntería perfecta.",
|
||||||
"annual_report.summary.followers.followers": "seguidores",
|
"annual_report.summary.archetype.booster.desc_self": "Te mantuviste a la caza de publicaciones para impulsar, amplificando a otros creadores con una puntería perfecta.",
|
||||||
"annual_report.summary.followers.total": "{count} en total",
|
"annual_report.summary.archetype.booster.name": "El arquero",
|
||||||
"annual_report.summary.here_it_is": "Este es el resumen de tu {year}:",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "publicación con más favoritos",
|
"annual_report.summary.archetype.lurker.desc_public": "Sabemos que {name} estaba ahí fuera, en algún lugar, disfrutando de Mastodon a su manera tranquila.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "publicación más impulsada",
|
"annual_report.summary.archetype.lurker.desc_self": "Sabemos que estabas ahí fuera, en algún lugar, disfrutando de Mastodon a tu manera, en silencio.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas",
|
"annual_report.summary.archetype.lurker.name": "El estoico",
|
||||||
"annual_report.summary.highlighted_post.possessive": "de {name}",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} creó más publicaciones nuevas que respuestas, lo que mantuvo a Mastodon fresco y con visión de futuro.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Creaste más publicaciones nuevas que respuestas, lo que mantuvo a Mastodon fresco y con visión de futuro.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "El oráculo",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name} creó más encuestas que otros tipos de publicaciones, lo que despertó la curiosidad en Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Creaste más encuestas que otros tipos de publicaciones, lo que despertó la curiosidad en Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "El soñador",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} respondía con frecuencia a las publicaciones de otras personas, lo que generaba nuevos debates en Mastodon.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Respondías con frecuencia a las publicaciones de otras personas, lo que generaba nuevos debates en Mastodon.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "La mariposa",
|
||||||
|
"annual_report.summary.archetype.reveal": "Revelar mi arquetipo",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "¡Gracias por formar parte de Mastodon! Es hora de descubrir qué arquetipo encarnaste en {year}.",
|
||||||
|
"annual_report.summary.archetype.title_public": "El arquetipo de {name}",
|
||||||
|
"annual_report.summary.archetype.title_self": "Tu arquetipo",
|
||||||
|
"annual_report.summary.close": "Cerrar",
|
||||||
|
"annual_report.summary.copy_link": "Copiar enlace",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural,one {nuevo seguidor} other {nuevos seguidores}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Esta publicación fue impulsada {count, plural,one {una vez} other {# veces}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Esta publicación fue marcada como favorita {count, plural,one {una vez} other {# veces}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Esta publicación consiguió {count, plural,one {una respuesta} other {# respuestas}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Publicación más popular",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "aplicación más utilizada",
|
"annual_report.summary.most_used_app.most_used_app": "aplicación más utilizada",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más utilizada",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más utilizada",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Ninguna",
|
"annual_report.summary.most_used_hashtag.used_count": "Incluiste esta etiqueta en {count, plural,one {una publicación} other {# publicaciones}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} incluyó esta etiqueta en {count, plural,one {una publicación} other {# publicaciones}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "nuevas publicaciones",
|
"annual_report.summary.new_posts.new_posts": "nuevas publicaciones",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Eso te sitúa en el top</topLabel><percentage></percentage><bottomLabel>de usuarios de {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Eso te sitúa en el top</topLabel><percentage></percentage><bottomLabel>de usuarios de {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "No se lo diremos a Bernie.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "No se lo diremos a Bernie.",
|
||||||
|
"annual_report.summary.share_elsewhere": "Compartir en otro lado",
|
||||||
"annual_report.summary.share_message": "¡Obtuve el arquetipo {archetype}!",
|
"annual_report.summary.share_message": "¡Obtuve el arquetipo {archetype}!",
|
||||||
"annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!",
|
"annual_report.summary.share_on_mastodon": "Compartir en Mastodon",
|
||||||
"attachments_list.unprocessed": "(sin procesar)",
|
"attachments_list.unprocessed": "(sin procesar)",
|
||||||
"audio.hide": "Ocultar audio",
|
"audio.hide": "Ocultar audio",
|
||||||
"block_modal.remote_users_caveat": "Le pediremos al servidor {domain} que respete tu decisión. Sin embargo, el cumplimiento no está garantizado, ya que algunos servidores pueden manejar bloques de forma diferente. Las publicaciones públicas pueden ser todavía visibles para los usuarios no conectados.",
|
"block_modal.remote_users_caveat": "Le pediremos al servidor {domain} que respete tu decisión. Sin embargo, el cumplimiento no está garantizado, ya que algunos servidores pueden manejar bloques de forma diferente. Las publicaciones públicas pueden ser todavía visibles para los usuarios no conectados.",
|
||||||
@ -419,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "Recomendamos seguir",
|
"follow_suggestions.who_to_follow": "Recomendamos seguir",
|
||||||
"followed_tags": "Etiquetas seguidas",
|
"followed_tags": "Etiquetas seguidas",
|
||||||
"footer.about": "Acerca de",
|
"footer.about": "Acerca de",
|
||||||
|
"footer.about_mastodon": "Acerca de Mastodon",
|
||||||
|
"footer.about_server": "Acerca de {domain}",
|
||||||
"footer.about_this_server": "Sobre nosotros",
|
"footer.about_this_server": "Sobre nosotros",
|
||||||
"footer.directory": "Directorio de perfiles",
|
"footer.directory": "Directorio de perfiles",
|
||||||
"footer.get_app": "Obtener la aplicación",
|
"footer.get_app": "Obtener la aplicación",
|
||||||
|
|||||||
@ -114,29 +114,30 @@
|
|||||||
"alt_text_modal.done": "Hecho",
|
"alt_text_modal.done": "Hecho",
|
||||||
"announcement.announcement": "Comunicación",
|
"announcement.announcement": "Comunicación",
|
||||||
"annual_report.announcement.action_build": "Preparar mi Wrapstodon",
|
"annual_report.announcement.action_build": "Preparar mi Wrapstodon",
|
||||||
|
"annual_report.announcement.action_dismiss": "No, gracias",
|
||||||
"annual_report.announcement.action_view": "Ver mi Wrapstodon",
|
"annual_report.announcement.action_view": "Ver mi Wrapstodon",
|
||||||
"annual_report.announcement.description": "Descubre más sobre tu participación en Mastodon durante el último año.",
|
"annual_report.announcement.description": "Descubre más sobre tu participación en Mastodon durante el último año.",
|
||||||
"annual_report.announcement.title": "Wrapstodon {year} ha llegado",
|
"annual_report.announcement.title": "Wrapstodon {year} ha llegado",
|
||||||
"annual_report.summary.archetype.booster": "El cazador de tendencias",
|
"annual_report.nav_item.badge": "Nuevo",
|
||||||
"annual_report.summary.archetype.lurker": "El acechador",
|
"annual_report.shared_page.donate": "Donar",
|
||||||
"annual_report.summary.archetype.oracle": "El oráculo",
|
"annual_report.shared_page.footer": "Generado con {heart} por el equipo de Mastodon",
|
||||||
"annual_report.summary.archetype.pollster": "El encuestador",
|
"annual_report.summary.archetype.title_public": "El arquetipo de {name}",
|
||||||
"annual_report.summary.archetype.replier": "El más sociable",
|
"annual_report.summary.archetype.title_self": "Tu arquetipo",
|
||||||
"annual_report.summary.followers.followers": "seguidores",
|
"annual_report.summary.close": "Cerrar",
|
||||||
"annual_report.summary.followers.total": "{count} en total",
|
"annual_report.summary.copy_link": "Copiar enlace",
|
||||||
"annual_report.summary.here_it_is": "Aquí está tu resumen de {year}:",
|
"annual_report.summary.highlighted_post.boost_count": "Esta publicación fue impulsada {count, plural,one {una vez} other {# veces}}.",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "publicación con más favoritos",
|
"annual_report.summary.highlighted_post.reply_count": "Esta publicación recibió {count, plural,one {una respuesta} other {# respuestas}}.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "publicación más impulsada",
|
"annual_report.summary.highlighted_post.title": "Publicación más popular",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "de {name}",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "aplicación más usada",
|
"annual_report.summary.most_used_app.most_used_app": "aplicación más usada",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Ninguna",
|
"annual_report.summary.most_used_hashtag.used_count": "Incluiste esta etiqueta en {count, plural,one {una publicación} other {# publicaciones}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} incluyó esta etiqueta en {count, plural, one {una publicación} other {# publicaciones}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "nuevas publicaciones",
|
"annual_report.summary.new_posts.new_posts": "nuevas publicaciones",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Eso te coloca en el top</topLabel><percentage></percentage><bottomLabel>de usuarios de {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Eso te coloca en el top</topLabel><percentage></percentage><bottomLabel>de usuarios de {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "No se lo diremos a Bernie.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "No se lo diremos a Bernie.",
|
||||||
|
"annual_report.summary.share_elsewhere": "Compartir en otro lugar",
|
||||||
"annual_report.summary.share_message": "¡Obtuve el arquetipo {archetype}!",
|
"annual_report.summary.share_message": "¡Obtuve el arquetipo {archetype}!",
|
||||||
"annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!",
|
"annual_report.summary.share_on_mastodon": "Compartir en Mastodon",
|
||||||
"attachments_list.unprocessed": "(sin procesar)",
|
"attachments_list.unprocessed": "(sin procesar)",
|
||||||
"audio.hide": "Ocultar audio",
|
"audio.hide": "Ocultar audio",
|
||||||
"block_modal.remote_users_caveat": "Le pediremos al servidor {domain} que respete tu decisión. Sin embargo, el cumplimiento no está garantizado, ya que algunos servidores pueden manejar bloqueos de forma distinta. Los mensajes públicos pueden ser todavía visibles para los usuarios que no hayan iniciado sesión.",
|
"block_modal.remote_users_caveat": "Le pediremos al servidor {domain} que respete tu decisión. Sin embargo, el cumplimiento no está garantizado, ya que algunos servidores pueden manejar bloqueos de forma distinta. Los mensajes públicos pueden ser todavía visibles para los usuarios que no hayan iniciado sesión.",
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
"about.powered_by": "Hajutatud sotsiaalmeedia, mille taga on {mastodon}",
|
"about.powered_by": "Hajutatud sotsiaalmeedia, mille taga on {mastodon}",
|
||||||
"about.rules": "Serveri reeglid",
|
"about.rules": "Serveri reeglid",
|
||||||
"account.account_note_header": "Isiklik märge",
|
"account.account_note_header": "Isiklik märge",
|
||||||
"account.add_or_remove_from_list": "Lisa või Eemalda loeteludest",
|
"account.add_or_remove_from_list": "Lisa või eemalda loenditest",
|
||||||
"account.badges.bot": "Robot",
|
"account.badges.bot": "Robot",
|
||||||
"account.badges.group": "Grupp",
|
"account.badges.group": "Grupp",
|
||||||
"account.block": "Blokeeri @{name}",
|
"account.block": "Blokeeri @{name}",
|
||||||
@ -37,7 +37,7 @@
|
|||||||
"account.featured": "Esiletõstetud",
|
"account.featured": "Esiletõstetud",
|
||||||
"account.featured.accounts": "Profiilid",
|
"account.featured.accounts": "Profiilid",
|
||||||
"account.featured.hashtags": "Teemaviited",
|
"account.featured.hashtags": "Teemaviited",
|
||||||
"account.featured_tags.last_status_at": "Viimane postitus {date}",
|
"account.featured_tags.last_status_at": "Viimane postitus: {date}",
|
||||||
"account.featured_tags.last_status_never": "Postitusi pole",
|
"account.featured_tags.last_status_never": "Postitusi pole",
|
||||||
"account.follow": "Jälgi",
|
"account.follow": "Jälgi",
|
||||||
"account.follow_back": "Jälgi vastu",
|
"account.follow_back": "Jälgi vastu",
|
||||||
@ -117,26 +117,14 @@
|
|||||||
"annual_report.announcement.action_view": "Vaata kokkuvõtet minu tegevusest Mastodonis",
|
"annual_report.announcement.action_view": "Vaata kokkuvõtet minu tegevusest Mastodonis",
|
||||||
"annual_report.announcement.description": "Vaata teavet oma suhestumise kohta Mastodonis eelmisel aastal.",
|
"annual_report.announcement.description": "Vaata teavet oma suhestumise kohta Mastodonis eelmisel aastal.",
|
||||||
"annual_report.announcement.title": "{year}. aasta Mastodoni kokkuvõte on valmis",
|
"annual_report.announcement.title": "{year}. aasta Mastodoni kokkuvõte on valmis",
|
||||||
"annual_report.summary.archetype.booster": "Ägesisu küttija",
|
"annual_report.summary.highlighted_post.title": "Kõige populaarsemad postitused",
|
||||||
"annual_report.summary.archetype.lurker": "Hiilija",
|
|
||||||
"annual_report.summary.archetype.oracle": "Oraakel",
|
|
||||||
"annual_report.summary.archetype.pollster": "Küsitleja",
|
|
||||||
"annual_report.summary.archetype.replier": "Sotsiaalne liblikas",
|
|
||||||
"annual_report.summary.followers.followers": "jälgijad",
|
|
||||||
"annual_report.summary.followers.total": "{count} kokku",
|
|
||||||
"annual_report.summary.here_it_is": "Siin on sinu {year} ülevaatlikult:",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "enim lemmikuks märgitud postitus",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "enim jagatud postitus",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "kõige vastatum postitus",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "omanik {name}",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "enim kasutatud äpp",
|
"annual_report.summary.most_used_app.most_used_app": "enim kasutatud äpp",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "enim kasutatud teemaviide",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "enim kasutatud teemaviide",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Puudub",
|
"annual_report.summary.most_used_hashtag.used_count": "Sa lisasid selle teemaviite {count, plural, one {ühele postitusele} other {#-le postitusele}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "uus postitus",
|
"annual_report.summary.new_posts.new_posts": "uus postitus",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>See paneb su top</topLabel><percentage></percentage><bottomLabel> {domain} kasutajate hulka.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>See paneb su top</topLabel><percentage></percentage><bottomLabel> {domain} kasutajate hulka.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Vägev.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Vägev.",
|
||||||
"annual_report.summary.share_message": "Minu arhetüüp on {archetype}!",
|
"annual_report.summary.share_message": "Minu arhetüüp on {archetype}!",
|
||||||
"annual_report.summary.thanks": "Tänud olemast osa Mastodonist!",
|
|
||||||
"attachments_list.unprocessed": "(töötlemata)",
|
"attachments_list.unprocessed": "(töötlemata)",
|
||||||
"audio.hide": "Peida audio",
|
"audio.hide": "Peida audio",
|
||||||
"block_modal.remote_users_caveat": "Serverile {domain} edastatakse palve otsust järgida. Ometi pole see tagatud, kuna mõned serverid võivad blokeeringuid käsitleda omal moel. Avalikud postitused võivad tuvastamata kasutajatele endiselt näha olla.",
|
"block_modal.remote_users_caveat": "Serverile {domain} edastatakse palve otsust järgida. Ometi pole see tagatud, kuna mõned serverid võivad blokeeringuid käsitleda omal moel. Avalikud postitused võivad tuvastamata kasutajatele endiselt näha olla.",
|
||||||
|
|||||||
@ -113,25 +113,52 @@
|
|||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Deskribatu hau ikusmen arazoak dituzten pertsonentzat…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "Deskribatu hau ikusmen arazoak dituzten pertsonentzat…",
|
||||||
"alt_text_modal.done": "Egina",
|
"alt_text_modal.done": "Egina",
|
||||||
"announcement.announcement": "Iragarpena",
|
"announcement.announcement": "Iragarpena",
|
||||||
"annual_report.summary.archetype.booster": "Sustatzailea",
|
"annual_report.announcement.action_build": "Sortu nire Wrapstodon",
|
||||||
"annual_report.summary.archetype.lurker": "Begiluzea",
|
"annual_report.announcement.action_dismiss": "Ez, eskerrik asko",
|
||||||
"annual_report.summary.archetype.oracle": "Orakulua",
|
"annual_report.announcement.action_view": "Ikusi nire Wrapstodon",
|
||||||
"annual_report.summary.archetype.pollster": "Bozketazalea",
|
"annual_report.announcement.description": "Ezagutu azken urtean Mastodonen izan duzun parte-hartzeari buruzko informazio gehiago.",
|
||||||
"annual_report.summary.archetype.replier": "Tolosa",
|
"annual_report.announcement.title": "Hemen da {2025}(e)ko Wrapstodon",
|
||||||
"annual_report.summary.followers.followers": "jarraitzaileak",
|
"annual_report.nav_item.badge": "Berria",
|
||||||
"annual_report.summary.followers.total": "{count} guztira",
|
"annual_report.shared_page.donate": "Egin dohaintza",
|
||||||
"annual_report.summary.here_it_is": "Hona hemen zure {year}. urtearen bilduma:",
|
"annual_report.shared_page.footer": "Mastodonen taldeak {heart} sortua",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "egindako bidalketa gogokoena",
|
"annual_report.shared_page.footer_server_info": "{username}(e)k {domain} erabiltzen du, Mastodonek bultzatutako komunitate ugarietako bat.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "egindako bidalketa zabalduena",
|
"annual_report.summary.archetype.booster.desc_public": "{name}(e)k promozionatzeko argitalpenen bila jarraitu zuen, beste sortzaile batzuk punteria perfektuarekin anplifikatuz.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "erantzun gehien izan dituen bidalketa",
|
"annual_report.summary.archetype.booster.desc_self": "Bultzatu beharreko argitalpenen zelatan egon zinen, punteria perfektua zuten beste sortzaile batzuk anplifikatuz.",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}-(r)ena",
|
"annual_report.summary.archetype.booster.name": "Arkularia",
|
||||||
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
|
"annual_report.summary.archetype.lurker.desc_public": "Badakigu {name} hor zegoela kanpoan, nonbait, Mastodonez gozatzen bere modu lasaian.",
|
||||||
|
"annual_report.summary.archetype.lurker.desc_self": "Badakigu hor zinela kanpoan, nonbait, Mastodonez gozatzen zure erara, isilean.",
|
||||||
|
"annual_report.summary.archetype.lurker.name": "Estoikoa",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_public": "{name}(e)k erantzun baino argitalpen berri gehiago sortu zituen, eta horrek Mastodon fresko eta etorkizuneko ikuspegiarekin mantendu zuen.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Erantzun baino argitalpen berri gehiago sortu zenituen, eta horrek Mastodon fresko eta etorkizuneko ikuspegiarekin mantendu zuen.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "Orakulua",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name}(e)k inkesta gehiago sortu zituen beste argitalpen mota batzuek baino, eta horrek jakin-mina piztu zuen Mastodonen.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Beste argitalpen batzuk baino inkesta gehiago sortu zenituen, eta horrek jakin-mina piztu zuen Mastodonen.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "Ameslaria",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name}(e)k maiz erantzuten zien beste pertsona batzuen argitalpenei, Mastodon polinizatuz eztabaida berriekin.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Maiz erantzuten zenien beste pertsona batzuen argitalpenei, Mastodon polinizatuz eztabaida berriekin.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "Tximeleta",
|
||||||
|
"annual_report.summary.archetype.reveal": "Erakutsi nire arketipoa",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Eskerrik asko Mastodonen parte izateagatik! Bada garaia jakiteko zer arketipo haragitu duzun {year}(e)an.",
|
||||||
|
"annual_report.summary.archetype.title_public": "{name}-(r)en arketipoa",
|
||||||
|
"annual_report.summary.archetype.title_self": "Zure arketipoa",
|
||||||
|
"annual_report.summary.close": "Itxi",
|
||||||
|
"annual_report.summary.copy_link": "Kopiatu esteka",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {jarraitzaile berri} other {jarraitzaile berri}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Bidalketa honek {count, plural, one {bultzada 1 dauka} other {# bultzada dauzka}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Bidalketa honek {count, plural, one {gogoko 1 dauka} other {# gogoko dauzka}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Bidalketa honek {count, plural, one {erantzun 1 dauka} other {# erantzun dauzka}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Bidalketa ospetsuena",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "app erabiliena",
|
"annual_report.summary.most_used_app.most_used_app": "app erabiliena",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "traola erabiliena",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "traola erabiliena",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Bat ere ez",
|
"annual_report.summary.most_used_hashtag.used_count": "Traola hau {count, plural, one {bidalketa baten sartu zenuen} other {# bidalketatan sartu zenuen}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name}(e)k traola hau {count, plural, one {bidalketa baten sartu zuen} other {# bidalketatan sartu zituen}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "bidalketa berriak",
|
"annual_report.summary.new_posts.new_posts": "bidalketa berriak",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Horrek jartzen zaitu top </topLabel> <percentage> </percentage>(e)an <bottomLabel> {domain} erabiltzaileen artean </bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Horrek jartzen zaitu top </topLabel> <percentage> </percentage>(e)an <bottomLabel> {domain} erabiltzaileen artean </bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Bernieri ez diogu ezer esango ;)..",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Bernieri ez diogu ezer esango ;)..",
|
||||||
"annual_report.summary.thanks": "Eskerrik asko Mastodonen parte izateagatik!",
|
"annual_report.summary.share_elsewhere": "Partekatu beste edonon",
|
||||||
|
"annual_report.summary.share_message": "{arketipoa} arketipoa daukat!",
|
||||||
|
"annual_report.summary.share_on_mastodon": "Partekatu Mastodonen",
|
||||||
"attachments_list.unprocessed": "(prozesatu gabe)",
|
"attachments_list.unprocessed": "(prozesatu gabe)",
|
||||||
"audio.hide": "Ezkutatu audioa",
|
"audio.hide": "Ezkutatu audioa",
|
||||||
"block_modal.remote_users_caveat": "{domain} zerbitzariari zure erabakia errespeta dezan eskatuko diogu. Halere, araua beteko den ezin da bermatu, zerbitzari batzuk modu desberdinean kudeatzen baitituzte blokeoak. Baliteke argitalpen publikoak saioa hasi ez duten erabiltzaileentzat ikusgai egotea.",
|
"block_modal.remote_users_caveat": "{domain} zerbitzariari zure erabakia errespeta dezan eskatuko diogu. Halere, araua beteko den ezin da bermatu, zerbitzari batzuk modu desberdinean kudeatzen baitituzte blokeoak. Baliteke argitalpen publikoak saioa hasi ez duten erabiltzaileentzat ikusgai egotea.",
|
||||||
@ -249,7 +276,7 @@
|
|||||||
"confirmations.missing_alt_text.secondary": "Bidali edonola ere",
|
"confirmations.missing_alt_text.secondary": "Bidali edonola ere",
|
||||||
"confirmations.missing_alt_text.title": "Testu alternatiboa gehitu?",
|
"confirmations.missing_alt_text.title": "Testu alternatiboa gehitu?",
|
||||||
"confirmations.mute.confirm": "Mututu",
|
"confirmations.mute.confirm": "Mututu",
|
||||||
"confirmations.private_quote_notify.cancel": "Ediziora bueltatu",
|
"confirmations.private_quote_notify.cancel": "Bueltatu ediziora",
|
||||||
"confirmations.private_quote_notify.confirm": "Argitaratu bidalketa",
|
"confirmations.private_quote_notify.confirm": "Argitaratu bidalketa",
|
||||||
"confirmations.private_quote_notify.do_not_show_again": "Ez erakutsi mezu hau berriro",
|
"confirmations.private_quote_notify.do_not_show_again": "Ez erakutsi mezu hau berriro",
|
||||||
"confirmations.private_quote_notify.message": "Aipatzen ari zaren pertsonak eta aipatutako besteek jakinarazpena jasoko dute eta zure sarrera ikusi ahalko dute, zure jarraitzaileak ez badira ere.",
|
"confirmations.private_quote_notify.message": "Aipatzen ari zaren pertsonak eta aipatutako besteek jakinarazpena jasoko dute eta zure sarrera ikusi ahalko dute, zure jarraitzaileak ez badira ere.",
|
||||||
@ -357,6 +384,7 @@
|
|||||||
"empty_column.notification_requests": "Garbi-garbi! Ezertxo ere ez hemen. Jakinarazpenak jasotzen dituzunean, hemen agertuko dira zure ezarpenen arabera.",
|
"empty_column.notification_requests": "Garbi-garbi! Ezertxo ere ez hemen. Jakinarazpenak jasotzen dituzunean, hemen agertuko dira zure ezarpenen arabera.",
|
||||||
"empty_column.notifications": "Ez duzu jakinarazpenik oraindik. Jarri besteekin harremanetan elkarrizketa abiatzeko.",
|
"empty_column.notifications": "Ez duzu jakinarazpenik oraindik. Jarri besteekin harremanetan elkarrizketa abiatzeko.",
|
||||||
"empty_column.public": "Ez dago ezer hemen! Idatzi zerbait publikoki edo jarraitu eskuz beste zerbitzari batzuetako erabiltzaileei hau betetzen joateko",
|
"empty_column.public": "Ez dago ezer hemen! Idatzi zerbait publikoki edo jarraitu eskuz beste zerbitzari batzuetako erabiltzaileei hau betetzen joateko",
|
||||||
|
"error.no_hashtag_feed_access": "Egin bat edo hasi saioa etiketa hau ikusi eta jarraitzeko.",
|
||||||
"error.unexpected_crash.explanation": "Gure kodean arazoren bat dela eta, edo nabigatzailearekin bateragarritasun arazoren bat dela eta, orri hau ezin izan da ongi bistaratu.",
|
"error.unexpected_crash.explanation": "Gure kodean arazoren bat dela eta, edo nabigatzailearekin bateragarritasun arazoren bat dela eta, orri hau ezin izan da ongi bistaratu.",
|
||||||
"error.unexpected_crash.explanation_addons": "Ezin izan da orria behar bezala bistaratu. Errore honen jatorria nabigatzailearen gehigarri batean edo itzulpen automatikoko tresnetan dago ziur aski.",
|
"error.unexpected_crash.explanation_addons": "Ezin izan da orria behar bezala bistaratu. Errore honen jatorria nabigatzailearen gehigarri batean edo itzulpen automatikoko tresnetan dago ziur aski.",
|
||||||
"error.unexpected_crash.next_steps": "Saiatu orria berritzen. Horrek ez badu laguntzen, agian Mastodon erabiltzeko aukera duzu oraindik ere beste nabigatzaile bat edo aplikazio natibo bat erabilita.",
|
"error.unexpected_crash.next_steps": "Saiatu orria berritzen. Horrek ez badu laguntzen, agian Mastodon erabiltzeko aukera duzu oraindik ere beste nabigatzaile bat edo aplikazio natibo bat erabilita.",
|
||||||
@ -413,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "Zein jarraitu",
|
"follow_suggestions.who_to_follow": "Zein jarraitu",
|
||||||
"followed_tags": "Jarraitutako traolak",
|
"followed_tags": "Jarraitutako traolak",
|
||||||
"footer.about": "Honi buruz",
|
"footer.about": "Honi buruz",
|
||||||
|
"footer.about_mastodon": "Mastodoni buruz",
|
||||||
|
"footer.about_server": "{domain}-i buruz",
|
||||||
"footer.about_this_server": "Honi buruz",
|
"footer.about_this_server": "Honi buruz",
|
||||||
"footer.directory": "Profil-direktorioa",
|
"footer.directory": "Profil-direktorioa",
|
||||||
"footer.get_app": "Eskuratu aplikazioa",
|
"footer.get_app": "Eskuratu aplikazioa",
|
||||||
@ -515,6 +545,7 @@
|
|||||||
"keyboard_shortcuts.toggle_hidden": "testua erakustea/ezkutatzea abisu baten atzean",
|
"keyboard_shortcuts.toggle_hidden": "testua erakustea/ezkutatzea abisu baten atzean",
|
||||||
"keyboard_shortcuts.toggle_sensitivity": "multimedia erakutsi/ezkutatzeko",
|
"keyboard_shortcuts.toggle_sensitivity": "multimedia erakutsi/ezkutatzeko",
|
||||||
"keyboard_shortcuts.toot": "Hasi bidalketa berri bat",
|
"keyboard_shortcuts.toot": "Hasi bidalketa berri bat",
|
||||||
|
"keyboard_shortcuts.top": "Mugitu zerrendaren hasierara",
|
||||||
"keyboard_shortcuts.translate": "bidalketa itzultzeko",
|
"keyboard_shortcuts.translate": "bidalketa itzultzeko",
|
||||||
"keyboard_shortcuts.unfocus": "testua konposatzeko area / bilaketatik fokua kentzea",
|
"keyboard_shortcuts.unfocus": "testua konposatzeko area / bilaketatik fokua kentzea",
|
||||||
"keyboard_shortcuts.up": "zerrendan gora mugitzea",
|
"keyboard_shortcuts.up": "zerrendan gora mugitzea",
|
||||||
@ -760,7 +791,7 @@
|
|||||||
"privacy.quote.limited": "{visibility}, aipuak mugatuta",
|
"privacy.quote.limited": "{visibility}, aipuak mugatuta",
|
||||||
"privacy.unlisted.additional": "Aukera honek publiko modua bezala funtzionatzen du, baina argitalpena ez da agertuko zuzeneko jarioetan edo traoletan, \"Arakatu\" atalean edo Mastodonen bilaketan, nahiz eta kontua zabaltzeko onartu duzun.",
|
"privacy.unlisted.additional": "Aukera honek publiko modua bezala funtzionatzen du, baina argitalpena ez da agertuko zuzeneko jarioetan edo traoletan, \"Arakatu\" atalean edo Mastodonen bilaketan, nahiz eta kontua zabaltzeko onartu duzun.",
|
||||||
"privacy.unlisted.long": "Ezkutatuta Mastodon bilaketen emaitzetatik, joeretatik, eta denbora-lerro publikoetatik",
|
"privacy.unlisted.long": "Ezkutatuta Mastodon bilaketen emaitzetatik, joeretatik, eta denbora-lerro publikoetatik",
|
||||||
"privacy.unlisted.short": "Deiadar urrikoa",
|
"privacy.unlisted.short": "Ikusgarritasun mugatua",
|
||||||
"privacy_policy.last_updated": "Azkenengo eguneraketa {date}",
|
"privacy_policy.last_updated": "Azkenengo eguneraketa {date}",
|
||||||
"privacy_policy.title": "Pribatutasun politika",
|
"privacy_policy.title": "Pribatutasun politika",
|
||||||
"quote_error.edit": "Aipuak ezin dira gehitu bidalketa bat editatzean.",
|
"quote_error.edit": "Aipuak ezin dira gehitu bidalketa bat editatzean.",
|
||||||
@ -903,6 +934,7 @@
|
|||||||
"status.edited_x_times": "{count, plural, one {behin} other {{count} aldiz}} editatua",
|
"status.edited_x_times": "{count, plural, one {behin} other {{count} aldiz}} editatua",
|
||||||
"status.embed": "Lortu txertatzeko kodea",
|
"status.embed": "Lortu txertatzeko kodea",
|
||||||
"status.favourite": "Gogokoa",
|
"status.favourite": "Gogokoa",
|
||||||
|
"status.favourites_count": "{count, plural, one {{counter} gogoko} other {{counter} gogoko}}",
|
||||||
"status.filter": "Iragazi bidalketa hau",
|
"status.filter": "Iragazi bidalketa hau",
|
||||||
"status.history.created": "{name} erabiltzaileak sortua {date}",
|
"status.history.created": "{name} erabiltzaileak sortua {date}",
|
||||||
"status.history.edited": "{name} erabiltzaileak editatua {date}",
|
"status.history.edited": "{name} erabiltzaileak editatua {date}",
|
||||||
@ -937,12 +969,14 @@
|
|||||||
"status.quotes.empty": "Momentuz inork ez du bidalketa hau aipatu. Norbaitek eginez gero, hemen agertuko da.",
|
"status.quotes.empty": "Momentuz inork ez du bidalketa hau aipatu. Norbaitek eginez gero, hemen agertuko da.",
|
||||||
"status.quotes.local_other_disclaimer": "Egileak errefusatutako aipuak ez dira erakutsiko.",
|
"status.quotes.local_other_disclaimer": "Egileak errefusatutako aipuak ez dira erakutsiko.",
|
||||||
"status.quotes.remote_other_disclaimer": "{domain} zerbitzariko aipuak baino ez daude bermatuta hemen. Egileak errefusatutako aipuak ez dira erakutsiko.",
|
"status.quotes.remote_other_disclaimer": "{domain} zerbitzariko aipuak baino ez daude bermatuta hemen. Egileak errefusatutako aipuak ez dira erakutsiko.",
|
||||||
|
"status.quotes_count": "{count, plural, one {{counter} aipu} other {{counter} aipu}}",
|
||||||
"status.read_more": "Irakurri gehiago",
|
"status.read_more": "Irakurri gehiago",
|
||||||
"status.reblog": "Bultzada",
|
"status.reblog": "Bultzada",
|
||||||
"status.reblog_or_quote": "Bultzatu edo aipatu",
|
"status.reblog_or_quote": "Bultzatu edo aipatu",
|
||||||
"status.reblog_private": "Partekatu berriz zure jarraitzaileekin",
|
"status.reblog_private": "Partekatu berriz zure jarraitzaileekin",
|
||||||
"status.reblogged_by": "{name}(r)en bultzada",
|
"status.reblogged_by": "{name}(r)en bultzada",
|
||||||
"status.reblogs.empty": "Inork ez dio bultzada eman bidalketa honi oraindik. Inork egiten badu, hemen agertuko da.",
|
"status.reblogs.empty": "Inork ez dio bultzada eman bidalketa honi oraindik. Inork egiten badu, hemen agertuko da.",
|
||||||
|
"status.reblogs_count": "{count, plural, one {{counter} bultzaeda} other {{counter} bultzaeda}}",
|
||||||
"status.redraft": "Ezabatu eta berridatzi",
|
"status.redraft": "Ezabatu eta berridatzi",
|
||||||
"status.remove_bookmark": "Kendu laster-marka",
|
"status.remove_bookmark": "Kendu laster-marka",
|
||||||
"status.remove_favourite": "Kendu gogokoetatik",
|
"status.remove_favourite": "Kendu gogokoetatik",
|
||||||
|
|||||||
@ -117,26 +117,12 @@
|
|||||||
"annual_report.announcement.action_view": "دیدن خلاصهٔ ماستودونم",
|
"annual_report.announcement.action_view": "دیدن خلاصهٔ ماستودونم",
|
||||||
"annual_report.announcement.description": "کشف بیشتر دربارهٔ درگیریتان روی ماستودون در سال گذشته.",
|
"annual_report.announcement.description": "کشف بیشتر دربارهٔ درگیریتان روی ماستودون در سال گذشته.",
|
||||||
"annual_report.announcement.title": "خلاصهٔ ماستودون {year} اینجاست",
|
"annual_report.announcement.title": "خلاصهٔ ماستودون {year} اینجاست",
|
||||||
"annual_report.summary.archetype.booster": "باحالیاب",
|
|
||||||
"annual_report.summary.archetype.lurker": "کمپیدا",
|
|
||||||
"annual_report.summary.archetype.oracle": "غیبگو",
|
|
||||||
"annual_report.summary.archetype.pollster": "نظرسنج",
|
|
||||||
"annual_report.summary.archetype.replier": "پاسخگو",
|
|
||||||
"annual_report.summary.followers.followers": "دنبال کننده",
|
|
||||||
"annual_report.summary.followers.total": "در مجموع {count}",
|
|
||||||
"annual_report.summary.here_it_is": "بازبینی {year} تان:",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "پرپسندترین فرسته",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "پرتقویتترین فرسته",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "پرپاسخترین فرسته",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "پراستفادهترین کاره",
|
"annual_report.summary.most_used_app.most_used_app": "پراستفادهترین کاره",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "پراستفادهترین برچسب",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "پراستفادهترین برچسب",
|
||||||
"annual_report.summary.most_used_hashtag.none": "هیچکدام",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "فرستهٔ جدید",
|
"annual_report.summary.new_posts.new_posts": "فرستهٔ جدید",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>بین کاربران {domain} جزو</topLabel><percentage></percentage><bottomLabel>برتر هستید.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>بین کاربران {domain} جزو</topLabel><percentage></percentage><bottomLabel>برتر هستید.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "به برنی خبر نمیدهیم.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "به برنی خبر نمیدهیم.",
|
||||||
"annual_report.summary.share_message": "من کهنالگوی {archetype} را گرفتم!",
|
"annual_report.summary.share_message": "من کهنالگوی {archetype} را گرفتم!",
|
||||||
"annual_report.summary.thanks": "سپاس که بخشی از ماستودون هستید!",
|
|
||||||
"attachments_list.unprocessed": "(پردازش نشده)",
|
"attachments_list.unprocessed": "(پردازش نشده)",
|
||||||
"audio.hide": "نهفتن صدا",
|
"audio.hide": "نهفتن صدا",
|
||||||
"block_modal.remote_users_caveat": "از کارساز {domain} خواهیم خواست که به تصمیمتان احترام بگذارد. با این حال تضمینی برای رعایتش وجود ندارد؛ زیرا برخی کارسازها ممکن است مسدودی را متفاوت مدیریت کنند. ممکن است فرستههای عمومی همچنان برای کاربران وارد نشده نمایان باشند.",
|
"block_modal.remote_users_caveat": "از کارساز {domain} خواهیم خواست که به تصمیمتان احترام بگذارد. با این حال تضمینی برای رعایتش وجود ندارد؛ زیرا برخی کارسازها ممکن است مسدودی را متفاوت مدیریت کنند. ممکن است فرستههای عمومی همچنان برای کاربران وارد نشده نمایان باشند.",
|
||||||
|
|||||||
@ -114,28 +114,51 @@
|
|||||||
"alt_text_modal.done": "Valmis",
|
"alt_text_modal.done": "Valmis",
|
||||||
"announcement.announcement": "Tiedote",
|
"announcement.announcement": "Tiedote",
|
||||||
"annual_report.announcement.action_build": "Koosta oma Wrapstodon",
|
"annual_report.announcement.action_build": "Koosta oma Wrapstodon",
|
||||||
|
"annual_report.announcement.action_dismiss": "Ei kiitos",
|
||||||
"annual_report.announcement.action_view": "Näytä oma Wrapstodon",
|
"annual_report.announcement.action_view": "Näytä oma Wrapstodon",
|
||||||
"annual_report.announcement.description": "Tutustu toimintaasi Mastodonissa kuluneen vuoden aikana.",
|
"annual_report.announcement.description": "Tutustu toimintaasi Mastodonissa kuluneen vuoden aikana.",
|
||||||
"annual_report.announcement.title": "Wrapstodon {year} on täällä",
|
"annual_report.announcement.title": "Wrapstodon {year} on täällä",
|
||||||
"annual_report.summary.archetype.booster": "Tehostaja",
|
"annual_report.nav_item.badge": "Uusi",
|
||||||
"annual_report.summary.archetype.lurker": "Lymyilijä",
|
"annual_report.shared_page.donate": "Lahjoita",
|
||||||
"annual_report.summary.archetype.oracle": "Oraakkeli",
|
"annual_report.shared_page.footer": "Luotu {heart}:lla Mastodon-tiimin toimesta",
|
||||||
"annual_report.summary.archetype.pollster": "Mielipidetutkija",
|
"annual_report.shared_page.footer_server_info": "{username} käyttää palvelinta {domain}, yhtä monista Mastodonin tarjoamista yhteisöistä.",
|
||||||
"annual_report.summary.archetype.replier": "Sosiaalinen perhonen",
|
"annual_report.summary.archetype.booster.desc_public": "{name} pysyi valppaana tehostettavien julkaisujen suhteen, vahvistaen muita luojia täydellisellä tähtäyksellä.",
|
||||||
"annual_report.summary.followers.followers": "seuraajaa",
|
"annual_report.summary.archetype.booster.desc_self": "Pysyit valppaana tehostettavien julkaisujen suhteen, vahvistaen muita luojia täydellisellä tähtäyksellä.",
|
||||||
"annual_report.summary.followers.total": "{count} yhteensä",
|
"annual_report.summary.archetype.booster.name": "Jousimies",
|
||||||
"annual_report.summary.here_it_is": "Tässä on katsaus vuoteesi {year}:",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "suosikkeihin lisätyin julkaisu",
|
"annual_report.summary.archetype.lurker.desc_public": "Tiedämme, että {name} oli siellä jossakin, nauttien Mastodonista omalla hiljaisella tavallaan.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "tehostetuin julkaisu",
|
"annual_report.summary.archetype.lurker.desc_self": "Tiedämme, että olit siellä jossakin, nauttien Mastodonista omalla hiljaisella tavallasi.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "julkaisu, jolla on eniten vastauksia",
|
"annual_report.summary.archetype.lurker.name": "Stoalainen",
|
||||||
"annual_report.summary.highlighted_post.possessive": "Käyttäjän {name}",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} loi enemmän julkaisuja kuin vastauksia, siten pitäen Mastodonin tuoreena ja valmiina tulevaisuuteen.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Loit enemmän julkaisuja kuin vastauksia, siten pitäen Mastodonin tuoreena ja valmiina tulevaisuuteen.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "Oraakkeli",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name} loi enemmän äänestyksiä kuin muita julkaisutyyppejä, siten herättäen uteliaisuutta Mastodonissa.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Loit enemmän äänestyksiä kuin muita julkaisutyyppejä, siten herättäen uteliaisuutta Mastodonissa.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "Ihmettelijä",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} vastasi säännöllisesti toisten julkaisuihin, siten pölyttäen Mastodonia uusilla keskusteluilla.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Vastasit säännöllisesti toisten julkaisuihin, siten pölyttäen Mastodonia uusilla keskusteluilla.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "Perhonen",
|
||||||
|
"annual_report.summary.archetype.reveal": "Paljasta arkkityyppini",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Kiitos, että olet osa Mastodonia! Aika selvittää, minkä arkkityypin ruumiillistuma olit vuonna {year}.",
|
||||||
|
"annual_report.summary.archetype.title_public": "Käyttäjän {name} arkkityyppi",
|
||||||
|
"annual_report.summary.archetype.title_self": "Arkkityyppisi",
|
||||||
|
"annual_report.summary.close": "Sulje",
|
||||||
|
"annual_report.summary.copy_link": "Kopioi linkki",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {uusi seuraaja} other {uutta seuraajaa}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Tätä julkaisua tehostettiin {count, plural, one {kerran} other {# kertaa}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Tämä julkaisu lisättiin suosikkeihin {count, plural, one {kerran} other {# kertaa}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Tämä julkaisu sai {count, plural, one {1 vastauksen} other {# vastausta}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Suosituin julkaisu",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "käytetyin sovellus",
|
"annual_report.summary.most_used_app.most_used_app": "käytetyin sovellus",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "käytetyin aihetunniste",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "käytetyin aihetunniste",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Ei mitään",
|
"annual_report.summary.most_used_hashtag.used_count": "Sisällytit tämän aihetunnisteen {count, plural, one {1 julkaisuun} other {# julkaisuun}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} sisällytti tämän aihetunnisteen {count, plural, one {1 julkaisuun} other {# julkaisuun}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "uutta julkaisua",
|
"annual_report.summary.new_posts.new_posts": "uutta julkaisua",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Olet osa huippujoukkoa, johon kuuluu</topLabel><percentage></percentage><bottomLabel>{domain}-käyttäjistä.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Olet osa huippujoukkoa, johon kuuluu</topLabel><percentage></percentage><bottomLabel>{domain}-käyttäjistä.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Emme kerro Bernie Sandersille.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Emme kerro Bernie Sandersille.",
|
||||||
"annual_report.summary.thanks": "Kiitos, että olet osa Mastodonia!",
|
"annual_report.summary.share_elsewhere": "Jaa muualla",
|
||||||
|
"annual_report.summary.share_message": "Arkkityyppini on {archetype}!",
|
||||||
|
"annual_report.summary.share_on_mastodon": "Jaa Mastodonissa",
|
||||||
"attachments_list.unprocessed": "(käsittelemätön)",
|
"attachments_list.unprocessed": "(käsittelemätön)",
|
||||||
"audio.hide": "Piilota ääni",
|
"audio.hide": "Piilota ääni",
|
||||||
"block_modal.remote_users_caveat": "Pyydämme palvelinta {domain} kunnioittamaan päätöstäsi. Myötämielisyyttä ei kuitenkaan taata, koska jotkin palvelimet voivat käsitellä estoja eri tavalla. Julkiset julkaisut voivat silti näkyä kirjautumattomille käyttäjille.",
|
"block_modal.remote_users_caveat": "Pyydämme palvelinta {domain} kunnioittamaan päätöstäsi. Myötämielisyyttä ei kuitenkaan taata, koska jotkin palvelimet voivat käsitellä estoja eri tavalla. Julkiset julkaisut voivat silti näkyä kirjautumattomille käyttäjille.",
|
||||||
@ -418,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "Ehdotuksia seurattavaksi",
|
"follow_suggestions.who_to_follow": "Ehdotuksia seurattavaksi",
|
||||||
"followed_tags": "Seurattavat aihetunnisteet",
|
"followed_tags": "Seurattavat aihetunnisteet",
|
||||||
"footer.about": "Tietoja",
|
"footer.about": "Tietoja",
|
||||||
|
"footer.about_mastodon": "Tietoja Mastodonista",
|
||||||
|
"footer.about_server": "Tietoja palvelimesta {domain}",
|
||||||
"footer.about_this_server": "Tietoja",
|
"footer.about_this_server": "Tietoja",
|
||||||
"footer.directory": "Profiilihakemisto",
|
"footer.directory": "Profiilihakemisto",
|
||||||
"footer.get_app": "Hanki sovellus",
|
"footer.get_app": "Hanki sovellus",
|
||||||
|
|||||||
@ -114,29 +114,51 @@
|
|||||||
"alt_text_modal.done": "Liðugt",
|
"alt_text_modal.done": "Liðugt",
|
||||||
"announcement.announcement": "Kunngerð",
|
"announcement.announcement": "Kunngerð",
|
||||||
"annual_report.announcement.action_build": "Ger mítt Wrapstodon",
|
"annual_report.announcement.action_build": "Ger mítt Wrapstodon",
|
||||||
|
"annual_report.announcement.action_dismiss": "Nei takk",
|
||||||
"annual_report.announcement.action_view": "Vís mítt Wrapstodon",
|
"annual_report.announcement.action_view": "Vís mítt Wrapstodon",
|
||||||
"annual_report.announcement.description": "Fá meira at vita um títt virksemi á Mastodon seinasta árið.",
|
"annual_report.announcement.description": "Fá meira at vita um títt virksemi á Mastodon seinasta árið.",
|
||||||
"annual_report.announcement.title": "Wrapstodon {year} er komið",
|
"annual_report.announcement.title": "Wrapstodon {year} er komið",
|
||||||
"annual_report.summary.archetype.booster": "Kuli jagarin",
|
"annual_report.nav_item.badge": "Nýtt",
|
||||||
"annual_report.summary.archetype.lurker": "Lúrarin",
|
"annual_report.shared_page.donate": "Stuðla",
|
||||||
"annual_report.summary.archetype.oracle": "Oraklið",
|
"annual_report.shared_page.footer": "Gjørt við {heart} av Mastodon toyminum",
|
||||||
"annual_report.summary.archetype.pollster": "Spyrjarin",
|
"annual_report.shared_page.footer_server_info": "{username} brúkar {domain}, ein av fleiri felagsskapum, sum er drivin av Mastodon.",
|
||||||
"annual_report.summary.archetype.replier": "Sosiali firvaldurin",
|
"annual_report.summary.archetype.booster.desc_public": "{name} helt fram at veiða postar at lyfta, og styrkti aðrar skaparar við perfektum sikti.",
|
||||||
"annual_report.summary.followers.followers": "fylgjarar",
|
"annual_report.summary.archetype.booster.desc_self": "Tú helt fram at veiða postar at lyfta, og styrkti aðrar skaparar við perfektum sikti.",
|
||||||
"annual_report.summary.followers.total": "{count} íalt",
|
"annual_report.summary.archetype.booster.name": "Bogaskjúttin",
|
||||||
"annual_report.summary.here_it_is": "Her er ein samandráttur av {year}:",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "mest dámdi postur",
|
"annual_report.summary.archetype.lurker.desc_public": "Vit vita, at {name} var úti har onkustaðni og neyt Mastodon uppá sín egna stilla máta.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "oftast stimbraði postur",
|
"annual_report.summary.archetype.lurker.desc_self": "Vit vita, at tú var úti har onkustaðni og neyt Mastodon uppá tín egna stilla máta.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "postur við flestum svarum",
|
"annual_report.summary.archetype.lurker.name": "Stóikarin",
|
||||||
"annual_report.summary.highlighted_post.possessive": "hjá {name}",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} gjørdi fleiri nýggjar postar enn svar og helt Mastodon feskt og framtíðarrættað.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Tú gjørdi fleiri nýggjar postar enn svar og helt Mastodon feskt og framtíðarrættað.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "Oraklið",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name} stovnaði fleiri atkvøðugreiðslur enn onnur sløg av postum og dyrkaði forvitni á Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Tú stovnaði fleiri atkvøðugreiðslur enn onnur sløg av postum og dyrkaði forvitni á Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "Undrandi",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} svaraði ofta til postar hjá øðrum og ríkaði Mastodon við nýggjum kjaki.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Tú svaraði ofta til postar hjá øðrum og ríkaði Mastodon við nýggjum kjaki.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "Firvaldurin",
|
||||||
|
"annual_report.summary.archetype.reveal": "Avdúka mítt frumsnið",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Takk fyri at tú er partur av Mastodon! Nú er tíðin komin at finna útav hvat frumsnið tú fall inn í í {year}.",
|
||||||
|
"annual_report.summary.archetype.title_public": "Frumsniðið hjá {name}",
|
||||||
|
"annual_report.summary.archetype.title_self": "Títt frumsnið",
|
||||||
|
"annual_report.summary.close": "Lat aftur",
|
||||||
|
"annual_report.summary.copy_link": "Avrita leinki",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {{counter} nýggjur fylgjari} other {{counter} nýggir fylgjarar}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Hesin posturin var lyftur {count, plural, one {eina ferð} other {# ferðir}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Hesin posturin var yndismerktur {count, plural, one {eina ferð} other {# ferðir}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Hesin posturin fekk {count, plural, one {eitt svar} other {# svar}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Best umtókti postur",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "mest brúkta app",
|
"annual_report.summary.most_used_app.most_used_app": "mest brúkta app",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "mest brúkta frámerki",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "mest brúkta frámerki",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Einki",
|
"annual_report.summary.most_used_hashtag.used_count": "Tú brúkti hetta frámerkið í {count, plural, one {einum posti} other {# postum}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} brúkti hetta frámerkið í {count, plural, one {einum posti} other {# postum}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "nýggir postar",
|
"annual_report.summary.new_posts.new_posts": "nýggir postar",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Tað fær teg í topp</topLabel><percentage></percentage><bottomLabel>av {domain} brúkarum.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Tað fær teg í topp</topLabel><percentage></percentage><bottomLabel>av {domain} brúkarum.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Vit fara ikki at fortelja Bernie tað.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Vit fara ikki at fortelja Bernie tað.",
|
||||||
|
"annual_report.summary.share_elsewhere": "Deil aðrastaðni",
|
||||||
"annual_report.summary.share_message": "Eg fekk {archetype} frumsniðið!",
|
"annual_report.summary.share_message": "Eg fekk {archetype} frumsniðið!",
|
||||||
"annual_report.summary.thanks": "Takk fyri at tú er partur av Mastodon!",
|
"annual_report.summary.share_on_mastodon": "Deil á Mastodon",
|
||||||
"attachments_list.unprocessed": "(óviðgjørt)",
|
"attachments_list.unprocessed": "(óviðgjørt)",
|
||||||
"audio.hide": "Fjal ljóð",
|
"audio.hide": "Fjal ljóð",
|
||||||
"block_modal.remote_users_caveat": "Vit biðja ambætaran {domain} virða tína avgerð. Kortini er eingin vissa um samsvar, av tí at fleiri ambætarar handfara blokkar ymiskt. Almennir postar kunnu framvegis vera sjónligir fyri brúkarar, sum ikki eru innritaðir.",
|
"block_modal.remote_users_caveat": "Vit biðja ambætaran {domain} virða tína avgerð. Kortini er eingin vissa um samsvar, av tí at fleiri ambætarar handfara blokkar ymiskt. Almennir postar kunnu framvegis vera sjónligir fyri brúkarar, sum ikki eru innritaðir.",
|
||||||
@ -419,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "Hvørji tú átti at fylgt",
|
"follow_suggestions.who_to_follow": "Hvørji tú átti at fylgt",
|
||||||
"followed_tags": "Fylgd frámerki",
|
"followed_tags": "Fylgd frámerki",
|
||||||
"footer.about": "Um",
|
"footer.about": "Um",
|
||||||
|
"footer.about_mastodon": "Um Mastodon",
|
||||||
|
"footer.about_server": "Um {domain}",
|
||||||
"footer.about_this_server": "Um",
|
"footer.about_this_server": "Um",
|
||||||
"footer.directory": "Vangaskrá",
|
"footer.directory": "Vangaskrá",
|
||||||
"footer.get_app": "Heinta appina",
|
"footer.get_app": "Heinta appina",
|
||||||
|
|||||||
@ -114,29 +114,51 @@
|
|||||||
"alt_text_modal.done": "Terminé",
|
"alt_text_modal.done": "Terminé",
|
||||||
"announcement.announcement": "Annonce",
|
"announcement.announcement": "Annonce",
|
||||||
"annual_report.announcement.action_build": "Générer mon Wrapstodon",
|
"annual_report.announcement.action_build": "Générer mon Wrapstodon",
|
||||||
|
"annual_report.announcement.action_dismiss": "Non merci",
|
||||||
"annual_report.announcement.action_view": "Voir mon Wrapstodon",
|
"annual_report.announcement.action_view": "Voir mon Wrapstodon",
|
||||||
"annual_report.announcement.description": "En découvrir plus concernant votre activité sur Mastodon pour l'année écoulée.",
|
"annual_report.announcement.description": "En découvrir plus concernant votre activité sur Mastodon pour l'année écoulée.",
|
||||||
"annual_report.announcement.title": "Le Wrapstodon {year} est arrivé",
|
"annual_report.announcement.title": "Le Wrapstodon {year} est arrivé",
|
||||||
"annual_report.summary.archetype.booster": "Le chasseur de sang-froid",
|
"annual_report.nav_item.badge": "Nouveau",
|
||||||
"annual_report.summary.archetype.lurker": "Le faucheur",
|
"annual_report.shared_page.donate": "Faire un don",
|
||||||
"annual_report.summary.archetype.oracle": "L’oracle",
|
"annual_report.shared_page.footer": "Généré avec {heart} par l'équipe de Mastodon",
|
||||||
"annual_report.summary.archetype.pollster": "Le sondeur",
|
"annual_report.shared_page.footer_server_info": "{username} utilise {domain}, l'une des nombreuses communautés propulsées par Mastodon.",
|
||||||
"annual_report.summary.archetype.replier": "Le papillon social",
|
"annual_report.summary.archetype.booster.desc_public": "{name} fut à l’affût des messages à partager, ciblant avec perfection les créatrices et créateurs à amplifier.",
|
||||||
"annual_report.summary.followers.followers": "abonné·e·s",
|
"annual_report.summary.archetype.booster.desc_self": "Vous avez été à l'affût des messages à partager, ciblant avec perfection les créatrices et créateurs à amplifier.",
|
||||||
"annual_report.summary.followers.total": "{count} au total",
|
"annual_report.summary.archetype.booster.name": "Archer, archère",
|
||||||
"annual_report.summary.here_it_is": "Voici votre récap de {year} :",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "post le plus aimé",
|
"annual_report.summary.archetype.lurker.desc_public": "Nous savons que {name} a été là, quelque part, profitant calmement de Mastodon à sa manière.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "post le plus boosté",
|
"annual_report.summary.archetype.lurker.desc_self": "Nous savons que vous avez été là, quelque part, profitant calmement de Mastodon à votre manière.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "post avec le plus de réponses",
|
"annual_report.summary.archetype.lurker.name": "Stoïque",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}'s",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} publia plus de nouveaux messages que de réponses, contribuant à garder Mastodon frais et tourné vers l'avenir.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Vous avez publié plus de nouveaux messages que de réponses, contribuant à garder Mastodon frais et tourné vers l'avenir.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "Oracle",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name} publia plus de sondages que n'importe quel autre type de message, cultivant la curiosité sur Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Vous avez publié plus de sondages que n'importe quel autre type de message, cultivant la curiosité sur Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "Curieux, curieuse",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} répliqua fréquemment aux messages des autres, pollinisant Mastodon de nouvelles discussions.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Vous avez fréquemment répliqué aux messages des autres, pollinisant Mastodon de nouvelles discussions.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "Papillon",
|
||||||
|
"annual_report.summary.archetype.reveal": "Révéler mon archétype",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Merci de faire partie de Mastodon ! Il est temps de découvrir quel archétype vous avez incarné en {year}.",
|
||||||
|
"annual_report.summary.archetype.title_public": "L'archétype de {name}",
|
||||||
|
"annual_report.summary.archetype.title_self": "Votre archétype",
|
||||||
|
"annual_report.summary.close": "Fermer",
|
||||||
|
"annual_report.summary.copy_link": "Copier le lien",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {nouvel·le abonné·e} other {nouveaux abonné·e·s}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Ce message a été partagé {count, plural, one {une fois} other {# fois}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Ce message a été mis en favoris {count, plural, one {une fois} other {# fois}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Ce message a reçu {count, plural, one {une réponse} other {# réponses}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Message le plus populaire",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "appli la plus utilisée",
|
"annual_report.summary.most_used_app.most_used_app": "appli la plus utilisée",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag le plus utilisé",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag le plus utilisé",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Aucun",
|
"annual_report.summary.most_used_hashtag.used_count": "Vous avez utilisé ce hashtag dans {count, plural, one {un message} other {# messages}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} a inclus ce hashtag dans {count, plural, one {un message} other {# messages}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "nouveaux messages",
|
"annual_report.summary.new_posts.new_posts": "nouveaux messages",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Cela vous place dans le top</topLabel><percentage></percentage><bottomLabel>des utilisateurs de {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Cela vous place dans le top</topLabel><percentage></percentage><bottomLabel>des utilisateurs de {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Nous ne le dirons pas à Bernie.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Nous ne le dirons pas à Bernie.",
|
||||||
|
"annual_report.summary.share_elsewhere": "Partager ailleurs",
|
||||||
"annual_report.summary.share_message": "J’ai obtenu l’archétype {archetype} !",
|
"annual_report.summary.share_message": "J’ai obtenu l’archétype {archetype} !",
|
||||||
"annual_report.summary.thanks": "Merci de faire partie de Mastodon!",
|
"annual_report.summary.share_on_mastodon": "Partager sur Mastodon",
|
||||||
"attachments_list.unprocessed": "(non traité)",
|
"attachments_list.unprocessed": "(non traité)",
|
||||||
"audio.hide": "Masquer l'audio",
|
"audio.hide": "Masquer l'audio",
|
||||||
"block_modal.remote_users_caveat": "Nous allons demander au serveur {domain} de respecter votre décision. Cependant, ce respect n'est pas garanti, car certains serveurs peuvent gérer différemment les blocages. Les messages publics peuvent rester visibles par les utilisateur·rice·s non connecté·e·s.",
|
"block_modal.remote_users_caveat": "Nous allons demander au serveur {domain} de respecter votre décision. Cependant, ce respect n'est pas garanti, car certains serveurs peuvent gérer différemment les blocages. Les messages publics peuvent rester visibles par les utilisateur·rice·s non connecté·e·s.",
|
||||||
@ -419,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "Qui suivre",
|
"follow_suggestions.who_to_follow": "Qui suivre",
|
||||||
"followed_tags": "Hashtags suivis",
|
"followed_tags": "Hashtags suivis",
|
||||||
"footer.about": "À propos",
|
"footer.about": "À propos",
|
||||||
|
"footer.about_mastodon": "À propos de Mastodon",
|
||||||
|
"footer.about_server": "À propos de {domain}",
|
||||||
"footer.about_this_server": "À propos",
|
"footer.about_this_server": "À propos",
|
||||||
"footer.directory": "Annuaire des profils",
|
"footer.directory": "Annuaire des profils",
|
||||||
"footer.get_app": "Télécharger l’application",
|
"footer.get_app": "Télécharger l’application",
|
||||||
|
|||||||
@ -114,29 +114,51 @@
|
|||||||
"alt_text_modal.done": "Terminé",
|
"alt_text_modal.done": "Terminé",
|
||||||
"announcement.announcement": "Annonce",
|
"announcement.announcement": "Annonce",
|
||||||
"annual_report.announcement.action_build": "Générer mon Wrapstodon",
|
"annual_report.announcement.action_build": "Générer mon Wrapstodon",
|
||||||
|
"annual_report.announcement.action_dismiss": "Non merci",
|
||||||
"annual_report.announcement.action_view": "Voir mon Wrapstodon",
|
"annual_report.announcement.action_view": "Voir mon Wrapstodon",
|
||||||
"annual_report.announcement.description": "En découvrir plus concernant votre activité sur Mastodon pour l'année écoulée.",
|
"annual_report.announcement.description": "En découvrir plus concernant votre activité sur Mastodon pour l'année écoulée.",
|
||||||
"annual_report.announcement.title": "Le Wrapstodon {year} est arrivé",
|
"annual_report.announcement.title": "Le Wrapstodon {year} est arrivé",
|
||||||
"annual_report.summary.archetype.booster": "Le chasseur de sang-froid",
|
"annual_report.nav_item.badge": "Nouveau",
|
||||||
"annual_report.summary.archetype.lurker": "Le faucheur",
|
"annual_report.shared_page.donate": "Faire un don",
|
||||||
"annual_report.summary.archetype.oracle": "L’oracle",
|
"annual_report.shared_page.footer": "Généré avec {heart} par l'équipe de Mastodon",
|
||||||
"annual_report.summary.archetype.pollster": "Le sondeur",
|
"annual_report.shared_page.footer_server_info": "{username} utilise {domain}, l'une des nombreuses communautés propulsées par Mastodon.",
|
||||||
"annual_report.summary.archetype.replier": "Le papillon social",
|
"annual_report.summary.archetype.booster.desc_public": "{name} fut à l’affût des messages à partager, ciblant avec perfection les créatrices et créateurs à amplifier.",
|
||||||
"annual_report.summary.followers.followers": "abonné·e·s",
|
"annual_report.summary.archetype.booster.desc_self": "Vous avez été à l'affût des messages à partager, ciblant avec perfection les créatrices et créateurs à amplifier.",
|
||||||
"annual_report.summary.followers.total": "{count} au total",
|
"annual_report.summary.archetype.booster.name": "Archer, archère",
|
||||||
"annual_report.summary.here_it_is": "Voici votre récap de {year} :",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "post le plus aimé",
|
"annual_report.summary.archetype.lurker.desc_public": "Nous savons que {name} a été là, quelque part, profitant calmement de Mastodon à sa manière.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "post le plus boosté",
|
"annual_report.summary.archetype.lurker.desc_self": "Nous savons que vous avez été là, quelque part, profitant calmement de Mastodon à votre manière.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "post avec le plus de réponses",
|
"annual_report.summary.archetype.lurker.name": "Stoïque",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}'s",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} publia plus de nouveaux messages que de réponses, contribuant à garder Mastodon frais et tourné vers l'avenir.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Vous avez publié plus de nouveaux messages que de réponses, contribuant à garder Mastodon frais et tourné vers l'avenir.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "Oracle",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name} publia plus de sondages que n'importe quel autre type de message, cultivant la curiosité sur Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Vous avez publié plus de sondages que n'importe quel autre type de message, cultivant la curiosité sur Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "Curieux, curieuse",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} répliqua fréquemment aux messages des autres, pollinisant Mastodon de nouvelles discussions.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Vous avez fréquemment répliqué aux messages des autres, pollinisant Mastodon de nouvelles discussions.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "Papillon",
|
||||||
|
"annual_report.summary.archetype.reveal": "Révéler mon archétype",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Merci de faire partie de Mastodon ! Il est temps de découvrir quel archétype vous avez incarné en {year}.",
|
||||||
|
"annual_report.summary.archetype.title_public": "L'archétype de {name}",
|
||||||
|
"annual_report.summary.archetype.title_self": "Votre archétype",
|
||||||
|
"annual_report.summary.close": "Fermer",
|
||||||
|
"annual_report.summary.copy_link": "Copier le lien",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {nouvel·le abonné·e} other {nouveaux abonné·e·s}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Ce message a été partagé {count, plural, one {une fois} other {# fois}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Ce message a été mis en favoris {count, plural, one {une fois} other {# fois}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Ce message a reçu {count, plural, one {une réponse} other {# réponses}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Message le plus populaire",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "appli la plus utilisée",
|
"annual_report.summary.most_used_app.most_used_app": "appli la plus utilisée",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag le plus utilisé",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag le plus utilisé",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Aucun",
|
"annual_report.summary.most_used_hashtag.used_count": "Vous avez utilisé ce hashtag dans {count, plural, one {un message} other {# messages}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} a inclus ce hashtag dans {count, plural, one {un message} other {# messages}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "nouveaux messages",
|
"annual_report.summary.new_posts.new_posts": "nouveaux messages",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Cela vous place dans le top</topLabel><percentage></percentage><bottomLabel>des utilisateurs de {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Cela vous place dans le top</topLabel><percentage></percentage><bottomLabel>des utilisateurs de {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Nous ne le dirons pas à Bernie.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Nous ne le dirons pas à Bernie.",
|
||||||
|
"annual_report.summary.share_elsewhere": "Partager ailleurs",
|
||||||
"annual_report.summary.share_message": "J’ai obtenu l’archétype {archetype} !",
|
"annual_report.summary.share_message": "J’ai obtenu l’archétype {archetype} !",
|
||||||
"annual_report.summary.thanks": "Merci de faire partie de Mastodon!",
|
"annual_report.summary.share_on_mastodon": "Partager sur Mastodon",
|
||||||
"attachments_list.unprocessed": "(non traité)",
|
"attachments_list.unprocessed": "(non traité)",
|
||||||
"audio.hide": "Masquer l'audio",
|
"audio.hide": "Masquer l'audio",
|
||||||
"block_modal.remote_users_caveat": "Nous allons demander au serveur {domain} de respecter votre décision. Cependant, ce respect n'est pas garanti, car certains serveurs peuvent gérer différemment les blocages. Les messages publics peuvent rester visibles par les utilisateur·rice·s non connecté·e·s.",
|
"block_modal.remote_users_caveat": "Nous allons demander au serveur {domain} de respecter votre décision. Cependant, ce respect n'est pas garanti, car certains serveurs peuvent gérer différemment les blocages. Les messages publics peuvent rester visibles par les utilisateur·rice·s non connecté·e·s.",
|
||||||
@ -419,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "Qui suivre",
|
"follow_suggestions.who_to_follow": "Qui suivre",
|
||||||
"followed_tags": "Hashtags suivis",
|
"followed_tags": "Hashtags suivis",
|
||||||
"footer.about": "À propos",
|
"footer.about": "À propos",
|
||||||
|
"footer.about_mastodon": "À propos de Mastodon",
|
||||||
|
"footer.about_server": "À propos de {domain}",
|
||||||
"footer.about_this_server": "À propos",
|
"footer.about_this_server": "À propos",
|
||||||
"footer.directory": "Annuaire des profils",
|
"footer.directory": "Annuaire des profils",
|
||||||
"footer.get_app": "Télécharger l’application",
|
"footer.get_app": "Télécharger l’application",
|
||||||
|
|||||||
@ -107,25 +107,11 @@
|
|||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Beskriuw dit foar blinen en fisueel beheinde…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "Beskriuw dit foar blinen en fisueel beheinde…",
|
||||||
"alt_text_modal.done": "Klear",
|
"alt_text_modal.done": "Klear",
|
||||||
"announcement.announcement": "Oankundiging",
|
"announcement.announcement": "Oankundiging",
|
||||||
"annual_report.summary.archetype.booster": "De cool-hunter",
|
|
||||||
"annual_report.summary.archetype.lurker": "De lurker",
|
|
||||||
"annual_report.summary.archetype.oracle": "It orakel",
|
|
||||||
"annual_report.summary.archetype.pollster": "De opinypeiler",
|
|
||||||
"annual_report.summary.archetype.replier": "De sosjale flinter",
|
|
||||||
"annual_report.summary.followers.followers": "folgers",
|
|
||||||
"annual_report.summary.followers.total": "totaal {count}",
|
|
||||||
"annual_report.summary.here_it_is": "Jo jieroersjoch foar {year}:",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "berjocht mei de measte favoriten",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "berjocht mei de measte boosts",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "berjocht mei de measte reaksjes",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}’s",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "meast brûkte app",
|
"annual_report.summary.most_used_app.most_used_app": "meast brûkte app",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "meast brûkte hashtag",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "meast brûkte hashtag",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Gjin",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "nije berjochten",
|
"annual_report.summary.new_posts.new_posts": "nije berjochten",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Hjirmei hearre jo ta de top</topLabel><percentage></percentage><bottomLabel> fan {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Hjirmei hearre jo ta de top</topLabel><percentage></percentage><bottomLabel> fan {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Wy sille Bernie neat fertelle.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Wy sille Bernie neat fertelle.",
|
||||||
"annual_report.summary.thanks": "Tank dat jo part binne fan Mastodon!",
|
|
||||||
"attachments_list.unprocessed": "(net ferwurke)",
|
"attachments_list.unprocessed": "(net ferwurke)",
|
||||||
"audio.hide": "Audio ferstopje",
|
"audio.hide": "Audio ferstopje",
|
||||||
"block_modal.remote_users_caveat": "Wy freegje de server {domain} om jo beslút te respektearjen. It neilibben hjirfan is echter net garandearre, omdat guon servers blokkaden oars ynterpretearje kinne. Iepenbiere berjochten binne mooglik noch hieltyd sichtber foar net-oanmelde brûkers.",
|
"block_modal.remote_users_caveat": "Wy freegje de server {domain} om jo beslút te respektearjen. It neilibben hjirfan is echter net garandearre, omdat guon servers blokkaden oars ynterpretearje kinne. Iepenbiere berjochten binne mooglik noch hieltyd sichtber foar net-oanmelde brûkers.",
|
||||||
|
|||||||
@ -114,29 +114,51 @@
|
|||||||
"alt_text_modal.done": "Déanta",
|
"alt_text_modal.done": "Déanta",
|
||||||
"announcement.announcement": "Fógra",
|
"announcement.announcement": "Fógra",
|
||||||
"annual_report.announcement.action_build": "Tóg mo Wrapstodon",
|
"annual_report.announcement.action_build": "Tóg mo Wrapstodon",
|
||||||
|
"annual_report.announcement.action_dismiss": "Ní raibh maith agat",
|
||||||
"annual_report.announcement.action_view": "Féach ar mo Wrapstodon",
|
"annual_report.announcement.action_view": "Féach ar mo Wrapstodon",
|
||||||
"annual_report.announcement.description": "Faigh tuilleadh eolais faoi do rannpháirtíocht ar Mastodon le bliain anuas.",
|
"annual_report.announcement.description": "Faigh tuilleadh eolais faoi do rannpháirtíocht ar Mastodon le bliain anuas.",
|
||||||
"annual_report.announcement.title": "Tá Wrapstodon {year} tagtha",
|
"annual_report.announcement.title": "Tá Wrapstodon {year} tagtha",
|
||||||
"annual_report.summary.archetype.booster": "An sealgair fionnuar",
|
"annual_report.nav_item.badge": "Nua",
|
||||||
"annual_report.summary.archetype.lurker": "An lurker",
|
"annual_report.shared_page.donate": "Tabhair Síntiús",
|
||||||
"annual_report.summary.archetype.oracle": "An oracal",
|
"annual_report.shared_page.footer": "Gineadh le {heart} ag foireann Mastodon",
|
||||||
"annual_report.summary.archetype.pollster": "An pollaire",
|
"annual_report.shared_page.footer_server_info": "Úsáideann {username} {domain}, ceann de go leor pobail atá faoi thiomáint ag Mastodon.",
|
||||||
"annual_report.summary.archetype.replier": "An féileacán sóisialta",
|
"annual_report.summary.archetype.booster.desc_public": "D’fhan {name} ag cuardach postálacha le cur chun cinn, ag cur le cruthaitheoirí eile le cuspóir foirfe.",
|
||||||
"annual_report.summary.followers.followers": "leanúna",
|
"annual_report.summary.archetype.booster.desc_self": "D’fhan tú ag cuardach postálacha le borradh a chur fúthu, ag cur le cruthaitheoirí eile le cuspóir foirfe.",
|
||||||
"annual_report.summary.followers.total": "{count} san iomlán",
|
"annual_report.summary.archetype.booster.name": "An Saighdeoir",
|
||||||
"annual_report.summary.here_it_is": "Seo do {year} faoi athbhreithniú:",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "post is fearr leat",
|
"annual_report.summary.archetype.lurker.desc_public": "Tá a fhios againn go raibh {name} amuigh ansin, áit éigin, ag baint taitnimh as Mastodon ar a mbealach ciúin féin.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "post is treisithe",
|
"annual_report.summary.archetype.lurker.desc_self": "Tá a fhios againn go raibh tú amuigh ansin, áit éigin, ag baint taitnimh as Mastodon ar do bhealach ciúin féin.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "post leis an líon is mó freagraí",
|
"annual_report.summary.archetype.lurker.name": "An Stoiceach",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}'s",
|
"annual_report.summary.archetype.oracle.desc_public": "Chruthaigh {name} níos mó postálacha nua ná freagraí, rud a choinnigh Mastodon úr agus dírithe ar an todhchaí.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Chruthaigh tú níos mó postálacha nua ná freagraí, rud a choinnigh Mastodon úr agus dírithe ar an todhchaí.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "An tOracal",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "Chruthaigh {name} níos mó pobalbhreitheanna ná cineálacha poist eile, rud a chothaigh fiosracht faoi Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Chruthaigh tú níos mó pobalbhreitheanna ná cineálacha poist eile, rud a chothaigh fiosracht ar Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "An tIontasóir",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "Is minic a d’fhreagair {name} poist daoine eile, rud a spreag plé nua i Mastodon.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Is minic a d’fhreagair tú poist daoine eile, ag maolú Mastodon le plé nua.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "An Féileacán",
|
||||||
|
"annual_report.summary.archetype.reveal": "Nocht mo sheandálaíocht",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Go raibh maith agat as bheith mar chuid de Mastodon! Tá sé in am a fháil amach cén t-archetíopa a léirigh tú i {year}.",
|
||||||
|
"annual_report.summary.archetype.title_public": "Seanchineál {name}",
|
||||||
|
"annual_report.summary.archetype.title_self": "Do sheandálaíocht",
|
||||||
|
"annual_report.summary.close": "Dún",
|
||||||
|
"annual_report.summary.copy_link": "Cóipeáil nasc",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {leantóir nua} two {leantóirí nua} few {leantóirí nua} many {leantóirí nua} other {leantóirí nua}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Borradh a tugadh faoin bpost seo {count, plural, one {uair amháin} two {# uaire} few {# uaire} many {# uaire} other {# uaire}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Cuireadh an post seo leis na ceanáin {count, plural, one {uair amháin} two {# uaire} few {# uaire} many {# uaire} other {# uaire}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Fuair an post seo {count, plural, one {freagra amháin} two {# freagraí} few {# freagraí} many {# freagraí} other {# freagraí}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "An post is mó tóir",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "aip is mó a úsáidtear",
|
"annual_report.summary.most_used_app.most_used_app": "aip is mó a úsáidtear",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag is mó a úsáidtear",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag is mó a úsáidtear",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Dada",
|
"annual_report.summary.most_used_hashtag.used_count": "Chuir tú an haischlib seo i {count, plural, one {post amháin} two {# poist} few {# poist} many {# poist} other {# poist}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "Chuir {name} an haischlib seo i {count, plural, one {post amháin} two {# poist} few {# poist} many {# poist} other {# poist}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "postanna nua",
|
"annual_report.summary.new_posts.new_posts": "postanna nua",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Cuireann sé sin i mbarr</topLabel><percentage></percentage><bottomLabel> úsáideoirí {domain}.</bottomLabel> thú",
|
"annual_report.summary.percentile.text": "<topLabel>Cuireann sé sin i mbarr</topLabel><percentage></percentage><bottomLabel> úsáideoirí {domain}.</bottomLabel> thú",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Ní inseoidh muid do Bernie.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Ní inseoidh muid do Bernie.",
|
||||||
|
"annual_report.summary.share_elsewhere": "Roinn in áit eile",
|
||||||
"annual_report.summary.share_message": "Fuair mé an t-archetíopa {archetype}!",
|
"annual_report.summary.share_message": "Fuair mé an t-archetíopa {archetype}!",
|
||||||
"annual_report.summary.thanks": "Go raibh maith agat as a bheith mar chuid de Mastodon!",
|
"annual_report.summary.share_on_mastodon": "Comhroinn ar Mastodon",
|
||||||
"attachments_list.unprocessed": "(neamhphróiseáilte)",
|
"attachments_list.unprocessed": "(neamhphróiseáilte)",
|
||||||
"audio.hide": "Cuir fuaim i bhfolach",
|
"audio.hide": "Cuir fuaim i bhfolach",
|
||||||
"block_modal.remote_users_caveat": "Iarrfaimid ar an bhfreastalaí {domain} meas a bheith agat ar do chinneadh. Mar sin féin, ní ráthaítear comhlíonadh toisc go bhféadfadh roinnt freastalaithe bloic a láimhseáil ar bhealach difriúil. Seans go mbeidh postálacha poiblí fós le feiceáil ag úsáideoirí nach bhfuil logáilte isteach.",
|
"block_modal.remote_users_caveat": "Iarrfaimid ar an bhfreastalaí {domain} meas a bheith agat ar do chinneadh. Mar sin féin, ní ráthaítear comhlíonadh toisc go bhféadfadh roinnt freastalaithe bloic a láimhseáil ar bhealach difriúil. Seans go mbeidh postálacha poiblí fós le feiceáil ag úsáideoirí nach bhfuil logáilte isteach.",
|
||||||
@ -248,7 +270,7 @@
|
|||||||
"confirmations.follow_to_list.title": "Lean an t-úsáideoir?",
|
"confirmations.follow_to_list.title": "Lean an t-úsáideoir?",
|
||||||
"confirmations.logout.confirm": "Logáil amach",
|
"confirmations.logout.confirm": "Logáil amach",
|
||||||
"confirmations.logout.message": "An bhfuil tú cinnte gur mhaith leat logáil amach?",
|
"confirmations.logout.message": "An bhfuil tú cinnte gur mhaith leat logáil amach?",
|
||||||
"confirmations.logout.title": "Logáil Amach?",
|
"confirmations.logout.title": "Logáil amach?",
|
||||||
"confirmations.missing_alt_text.confirm": "Cuir téacs alt leis",
|
"confirmations.missing_alt_text.confirm": "Cuir téacs alt leis",
|
||||||
"confirmations.missing_alt_text.message": "Tá meáin gan alt téacs i do phostáil. Má chuirtear tuairiscí leis, cabhraíonn sé seo leat d’inneachar a rochtain do níos mó daoine.",
|
"confirmations.missing_alt_text.message": "Tá meáin gan alt téacs i do phostáil. Má chuirtear tuairiscí leis, cabhraíonn sé seo leat d’inneachar a rochtain do níos mó daoine.",
|
||||||
"confirmations.missing_alt_text.secondary": "Post ar aon nós",
|
"confirmations.missing_alt_text.secondary": "Post ar aon nós",
|
||||||
@ -419,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "Cé le leanúint",
|
"follow_suggestions.who_to_follow": "Cé le leanúint",
|
||||||
"followed_tags": "Hashtags le leanúint",
|
"followed_tags": "Hashtags le leanúint",
|
||||||
"footer.about": "Maidir le",
|
"footer.about": "Maidir le",
|
||||||
|
"footer.about_mastodon": "Maidir le Mastodon",
|
||||||
|
"footer.about_server": "Maidir le {domain}",
|
||||||
"footer.about_this_server": "Maidir",
|
"footer.about_this_server": "Maidir",
|
||||||
"footer.directory": "Eolaire próifílí",
|
"footer.directory": "Eolaire próifílí",
|
||||||
"footer.get_app": "Faigh an aip",
|
"footer.get_app": "Faigh an aip",
|
||||||
@ -456,7 +480,7 @@
|
|||||||
"hints.profiles.see_more_followers": "Féach ar a thuilleadh leantóirí ar {domain}",
|
"hints.profiles.see_more_followers": "Féach ar a thuilleadh leantóirí ar {domain}",
|
||||||
"hints.profiles.see_more_follows": "Féach tuilleadh seo a leanas ar {domain}",
|
"hints.profiles.see_more_follows": "Féach tuilleadh seo a leanas ar {domain}",
|
||||||
"hints.profiles.see_more_posts": "Féach ar a thuilleadh postálacha ar {domain}",
|
"hints.profiles.see_more_posts": "Féach ar a thuilleadh postálacha ar {domain}",
|
||||||
"home.column_settings.show_quotes": "Taispeáin Sleachta",
|
"home.column_settings.show_quotes": "Taispeáin sleachta",
|
||||||
"home.column_settings.show_reblogs": "Taispeáin moltaí",
|
"home.column_settings.show_reblogs": "Taispeáin moltaí",
|
||||||
"home.column_settings.show_replies": "Taispeán freagraí",
|
"home.column_settings.show_replies": "Taispeán freagraí",
|
||||||
"home.hide_announcements": "Cuir fógraí i bhfolach",
|
"home.hide_announcements": "Cuir fógraí i bhfolach",
|
||||||
@ -686,7 +710,7 @@
|
|||||||
"notifications.column_settings.mention": "Tráchtanna:",
|
"notifications.column_settings.mention": "Tráchtanna:",
|
||||||
"notifications.column_settings.poll": "Torthaí suirbhéanna:",
|
"notifications.column_settings.poll": "Torthaí suirbhéanna:",
|
||||||
"notifications.column_settings.push": "Brúfhógraí",
|
"notifications.column_settings.push": "Brúfhógraí",
|
||||||
"notifications.column_settings.quote": "Luachain:",
|
"notifications.column_settings.quote": "Sleachta:",
|
||||||
"notifications.column_settings.reblog": "Moltaí:",
|
"notifications.column_settings.reblog": "Moltaí:",
|
||||||
"notifications.column_settings.show": "Taispeáin i gcolún",
|
"notifications.column_settings.show": "Taispeáin i gcolún",
|
||||||
"notifications.column_settings.sound": "Seinn an fhuaim",
|
"notifications.column_settings.sound": "Seinn an fhuaim",
|
||||||
@ -763,14 +787,14 @@
|
|||||||
"privacy.public.long": "Duine ar bith ar agus amach Mastodon",
|
"privacy.public.long": "Duine ar bith ar agus amach Mastodon",
|
||||||
"privacy.public.short": "Poiblí",
|
"privacy.public.short": "Poiblí",
|
||||||
"privacy.quote.anyone": "{visibility}, is féidir le duine ar bith lua",
|
"privacy.quote.anyone": "{visibility}, is féidir le duine ar bith lua",
|
||||||
"privacy.quote.disabled": "{visibility}, comharthaí athfhriotail díchumasaithe",
|
"privacy.quote.disabled": "{visibility}, sleachta díchumasaithe",
|
||||||
"privacy.quote.limited": "{visibility}, luachana teoranta",
|
"privacy.quote.limited": "{visibility}, sleachta teoranta",
|
||||||
"privacy.unlisted.additional": "Iompraíonn sé seo díreach mar a bheadh poiblí, ach amháin ní bheidh an postáil le feiceáil i bhfothaí beo nó i hashtags, in iniúchadh nó i gcuardach Mastodon, fiú má tá tú liostáilte ar fud an chuntais.",
|
"privacy.unlisted.additional": "Iompraíonn sé seo díreach mar a bheadh poiblí, ach amháin ní bheidh an postáil le feiceáil i bhfothaí beo nó i hashtags, in iniúchadh nó i gcuardach Mastodon, fiú má tá tú liostáilte ar fud an chuntais.",
|
||||||
"privacy.unlisted.long": "I bhfolach ó thorthaí cuardaigh Mastodon, treochtaí, agus amlínte poiblí",
|
"privacy.unlisted.long": "I bhfolach ó thorthaí cuardaigh Mastodon, treochtaí, agus amlínte poiblí",
|
||||||
"privacy.unlisted.short": "Poiblí ciúin",
|
"privacy.unlisted.short": "Poiblí ciúin",
|
||||||
"privacy_policy.last_updated": "Nuashonraithe {date}",
|
"privacy_policy.last_updated": "Nuashonraithe {date}",
|
||||||
"privacy_policy.title": "Polasaí príobháideachais",
|
"privacy_policy.title": "Polasaí príobháideachais",
|
||||||
"quote_error.edit": "Ní féidir Sleachta a chur leis agus post á chur in eagar.",
|
"quote_error.edit": "Ní féidir sleachta a chur leis agus post á chur in eagar.",
|
||||||
"quote_error.poll": "Ní cheadaítear lua le pobalbhreitheanna.",
|
"quote_error.poll": "Ní cheadaítear lua le pobalbhreitheanna.",
|
||||||
"quote_error.private_mentions": "Ní cheadaítear lua le tagairtí díreacha.",
|
"quote_error.private_mentions": "Ní cheadaítear lua le tagairtí díreacha.",
|
||||||
"quote_error.quote": "Ní cheadaítear ach luachan amháin ag an am.",
|
"quote_error.quote": "Ní cheadaítear ach luachan amháin ag an am.",
|
||||||
@ -885,7 +909,7 @@
|
|||||||
"status.admin_account": "Oscail comhéadan modhnóireachta do @{name}",
|
"status.admin_account": "Oscail comhéadan modhnóireachta do @{name}",
|
||||||
"status.admin_domain": "Oscail comhéadan modhnóireachta le haghaidh {domain}",
|
"status.admin_domain": "Oscail comhéadan modhnóireachta le haghaidh {domain}",
|
||||||
"status.admin_status": "Oscail an postáil seo sa chomhéadan modhnóireachta",
|
"status.admin_status": "Oscail an postáil seo sa chomhéadan modhnóireachta",
|
||||||
"status.all_disabled": "Tá borradh agus luachana díchumasaithe",
|
"status.all_disabled": "Tá treisiúcháin agus sleachta díchumasaithe",
|
||||||
"status.block": "Bac @{name}",
|
"status.block": "Bac @{name}",
|
||||||
"status.bookmark": "Leabharmharcanna",
|
"status.bookmark": "Leabharmharcanna",
|
||||||
"status.cancel_reblog_private": "Dímhol",
|
"status.cancel_reblog_private": "Dímhol",
|
||||||
@ -945,7 +969,7 @@
|
|||||||
"status.quotes.empty": "Níl an post seo luaite ag aon duine go fóill. Nuair a dhéanann duine é, taispeánfar anseo é.",
|
"status.quotes.empty": "Níl an post seo luaite ag aon duine go fóill. Nuair a dhéanann duine é, taispeánfar anseo é.",
|
||||||
"status.quotes.local_other_disclaimer": "Ní thaispeánfar sleachta ar dhiúltaigh an t-údar dóibh.",
|
"status.quotes.local_other_disclaimer": "Ní thaispeánfar sleachta ar dhiúltaigh an t-údar dóibh.",
|
||||||
"status.quotes.remote_other_disclaimer": "Níl ráthaíocht ann go dtaispeánfar anseo ach sleachta ó {domain}. Ní thaispeánfar sleachta ar dhiúltaigh an t-údar dóibh.",
|
"status.quotes.remote_other_disclaimer": "Níl ráthaíocht ann go dtaispeánfar anseo ach sleachta ó {domain}. Ní thaispeánfar sleachta ar dhiúltaigh an t-údar dóibh.",
|
||||||
"status.quotes_count": "{count, plural,\n one {{counter} athfhriotal}\n two {{counter} athfhriotail}\n few {{counter} athfhriotail}\n many {{counter} athfhriotal}\n other {{counter} athfhriotail}\n}",
|
"status.quotes_count": "{count, plural, one {{counter} sleacht} two {{counter} sleachta} few {{counter} sleachta} many {{counter} sleachta} other {{counter} sleachta}}",
|
||||||
"status.read_more": "Léan a thuilleadh",
|
"status.read_more": "Léan a thuilleadh",
|
||||||
"status.reblog": "Treisiú",
|
"status.reblog": "Treisiú",
|
||||||
"status.reblog_or_quote": "Borradh nó luachan",
|
"status.reblog_or_quote": "Borradh nó luachan",
|
||||||
@ -1001,7 +1025,7 @@
|
|||||||
"upload_button.label": "Cuir íomhánna, físeán nó comhad fuaime leis",
|
"upload_button.label": "Cuir íomhánna, físeán nó comhad fuaime leis",
|
||||||
"upload_error.limit": "Sáraíodh an teorainn uaslódála comhaid.",
|
"upload_error.limit": "Sáraíodh an teorainn uaslódála comhaid.",
|
||||||
"upload_error.poll": "Ní cheadaítear uaslódáil comhad le pobalbhreith.",
|
"upload_error.poll": "Ní cheadaítear uaslódáil comhad le pobalbhreith.",
|
||||||
"upload_error.quote": "Ní cheadaítear uaslódáil comhaid le comharthaí athfhriotail.",
|
"upload_error.quote": "Ní cheadaítear uaslódáil comhaid le sleachta.",
|
||||||
"upload_form.drag_and_drop.instructions": "Chun ceangaltán meán a phiocadh suas, brúigh spás nó cuir isteach. Agus tú ag tarraingt, bain úsáid as na heochracha saigheada chun an ceangaltán meán a bhogadh i dtreo ar bith. Brúigh spás nó cuir isteach arís chun an ceangaltán meán a scaoileadh ina phost nua, nó brúigh éalú chun cealú.",
|
"upload_form.drag_and_drop.instructions": "Chun ceangaltán meán a phiocadh suas, brúigh spás nó cuir isteach. Agus tú ag tarraingt, bain úsáid as na heochracha saigheada chun an ceangaltán meán a bhogadh i dtreo ar bith. Brúigh spás nó cuir isteach arís chun an ceangaltán meán a scaoileadh ina phost nua, nó brúigh éalú chun cealú.",
|
||||||
"upload_form.drag_and_drop.on_drag_cancel": "Cuireadh an tarraingt ar ceal. Scaoileadh ceangaltán meán {item}.",
|
"upload_form.drag_and_drop.on_drag_cancel": "Cuireadh an tarraingt ar ceal. Scaoileadh ceangaltán meán {item}.",
|
||||||
"upload_form.drag_and_drop.on_drag_end": "Scaoileadh ceangaltán meán {item}.",
|
"upload_form.drag_and_drop.on_drag_end": "Scaoileadh ceangaltán meán {item}.",
|
||||||
@ -1027,11 +1051,11 @@
|
|||||||
"video.volume_up": "Toirt suas",
|
"video.volume_up": "Toirt suas",
|
||||||
"visibility_modal.button_title": "Socraigh infheictheacht",
|
"visibility_modal.button_title": "Socraigh infheictheacht",
|
||||||
"visibility_modal.direct_quote_warning.text": "Má shábhálann tú na socruithe reatha, déanfar an luachan leabaithe a thiontú ina nasc.",
|
"visibility_modal.direct_quote_warning.text": "Má shábhálann tú na socruithe reatha, déanfar an luachan leabaithe a thiontú ina nasc.",
|
||||||
"visibility_modal.direct_quote_warning.title": "Ní féidir luachana a leabú i luanna príobháideacha",
|
"visibility_modal.direct_quote_warning.title": "Ní féidir sleachta a leabú i dtráchtanna príobháideacha",
|
||||||
"visibility_modal.header": "Infheictheacht agus idirghníomhaíocht",
|
"visibility_modal.header": "Infheictheacht agus idirghníomhaíocht",
|
||||||
"visibility_modal.helper.direct_quoting": "Ní féidir le daoine eile tráchtanna príobháideacha a scríobhadh ar Mastodon a lua.",
|
"visibility_modal.helper.direct_quoting": "Ní féidir le daoine eile tráchtanna príobháideacha a scríobhadh ar Mastodon a lua.",
|
||||||
"visibility_modal.helper.privacy_editing": "Ní féidir infheictheacht a athrú tar éis post a fhoilsiú.",
|
"visibility_modal.helper.privacy_editing": "Ní féidir infheictheacht a athrú tar éis post a fhoilsiú.",
|
||||||
"visibility_modal.helper.privacy_private_self_quote": "Ní féidir féin-luachanna ó phoist phríobháideacha a chur ar fáil don phobal.",
|
"visibility_modal.helper.privacy_private_self_quote": "Ní féidir féin-sleachta ó phoist phríobháideacha a chur ar fáil don phobal.",
|
||||||
"visibility_modal.helper.private_quoting": "Ní féidir le daoine eile poist atá scríofa ar Mastodon agus atá dírithe ar leanúna amháin a lua.",
|
"visibility_modal.helper.private_quoting": "Ní féidir le daoine eile poist atá scríofa ar Mastodon agus atá dírithe ar leanúna amháin a lua.",
|
||||||
"visibility_modal.helper.unlisted_quoting": "Nuair a luann daoine thú, beidh a bpost i bhfolach ó amlínte treochta freisin.",
|
"visibility_modal.helper.unlisted_quoting": "Nuair a luann daoine thú, beidh a bpost i bhfolach ó amlínte treochta freisin.",
|
||||||
"visibility_modal.instructions": "Rialaigh cé a fhéadfaidh idirghníomhú leis an bpost seo. Is féidir leat socruithe a chur i bhfeidhm ar gach post amach anseo trí nascleanúint a dhéanamh chuig <link>Sainroghanna > Réamhshocruithe Postála</link>.",
|
"visibility_modal.instructions": "Rialaigh cé a fhéadfaidh idirghníomhú leis an bpost seo. Is féidir leat socruithe a chur i bhfeidhm ar gach post amach anseo trí nascleanúint a dhéanamh chuig <link>Sainroghanna > Réamhshocruithe Postála</link>.",
|
||||||
|
|||||||
@ -113,25 +113,11 @@
|
|||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Mìnich seo dhan fheadhainn air a bheil cion-lèirsinne…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "Mìnich seo dhan fheadhainn air a bheil cion-lèirsinne…",
|
||||||
"alt_text_modal.done": "Deiseil",
|
"alt_text_modal.done": "Deiseil",
|
||||||
"announcement.announcement": "Brath-fios",
|
"announcement.announcement": "Brath-fios",
|
||||||
"annual_report.summary.archetype.booster": "Brosnaiche",
|
|
||||||
"annual_report.summary.archetype.lurker": "Eala-bhalbh",
|
|
||||||
"annual_report.summary.archetype.oracle": "Coinneach Odhar",
|
|
||||||
"annual_report.summary.archetype.pollster": "Cunntair nam beachd",
|
|
||||||
"annual_report.summary.archetype.replier": "Ceatharnach nam freagairt",
|
|
||||||
"annual_report.summary.followers.followers": "luchd-leantainn",
|
|
||||||
"annual_report.summary.followers.total": "{count} gu h-iomlan",
|
|
||||||
"annual_report.summary.here_it_is": "Seo mar a chaidh {year} leat:",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "am post as annsa",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "am post air a bhrosnachadh as trice",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "am post dhan deach fhreagairt as trice",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "Aig {name},",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "an aplacaid a chaidh a cleachdadh as trice",
|
"annual_report.summary.most_used_app.most_used_app": "an aplacaid a chaidh a cleachdadh as trice",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "an taga hais a chaidh a cleachdadh as trice",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "an taga hais a chaidh a cleachdadh as trice",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Chan eil gin",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "postaichean ùra",
|
"annual_report.summary.new_posts.new_posts": "postaichean ùra",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Tha thu am measg</topLabel><percentage></percentage><bottomLabel>dhen luchd-cleachdaidh as cliùitiche air {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Tha thu am measg</topLabel><percentage></percentage><bottomLabel>dhen luchd-cleachdaidh as cliùitiche air {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Ainmeil ’nad latha ’s ’nad linn.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Ainmeil ’nad latha ’s ’nad linn.",
|
||||||
"annual_report.summary.thanks": "Mòran taing airson conaltradh air Mastodon!",
|
|
||||||
"attachments_list.unprocessed": "(gun phròiseasadh)",
|
"attachments_list.unprocessed": "(gun phròiseasadh)",
|
||||||
"audio.hide": "Falaich an fhuaim",
|
"audio.hide": "Falaich an fhuaim",
|
||||||
"block_modal.remote_users_caveat": "Iarraidh sinn air an fhrithealaiche {domain} gun gèill iad ri do cho-dhùnadh. Gidheadh, chan eil barantas gun gèill iad on a làimhsicheas cuid a fhrithealaichean bacaidhean air dòigh eadar-dhealaichte. Dh’fhaoidte gum faic daoine gun chlàradh a-steach na postaichean poblach agad fhathast.",
|
"block_modal.remote_users_caveat": "Iarraidh sinn air an fhrithealaiche {domain} gun gèill iad ri do cho-dhùnadh. Gidheadh, chan eil barantas gun gèill iad on a làimhsicheas cuid a fhrithealaichean bacaidhean air dòigh eadar-dhealaichte. Dh’fhaoidte gum faic daoine gun chlàradh a-steach na postaichean poblach agad fhathast.",
|
||||||
|
|||||||
@ -114,29 +114,51 @@
|
|||||||
"alt_text_modal.done": "Feito",
|
"alt_text_modal.done": "Feito",
|
||||||
"announcement.announcement": "Anuncio",
|
"announcement.announcement": "Anuncio",
|
||||||
"annual_report.announcement.action_build": "Crear o meu Wrapstodon",
|
"annual_report.announcement.action_build": "Crear o meu Wrapstodon",
|
||||||
|
"annual_report.announcement.action_dismiss": "Non, grazas",
|
||||||
"annual_report.announcement.action_view": "Ver o meu Wrapstodon",
|
"annual_report.announcement.action_view": "Ver o meu Wrapstodon",
|
||||||
"annual_report.announcement.description": "Olla o que andiveches facendo en Mastodon durante o último ano.",
|
"annual_report.announcement.description": "Olla o que andiveches facendo en Mastodon durante o último ano.",
|
||||||
"annual_report.announcement.title": "Chegou o Wrapstodon de {year}",
|
"annual_report.announcement.title": "Chegou o Wrapstodon de {year}",
|
||||||
"annual_report.summary.archetype.booster": "O Telexornal",
|
"annual_report.nav_item.badge": "Novidade",
|
||||||
"annual_report.summary.archetype.lurker": "Volleur",
|
"annual_report.shared_page.donate": "Doar",
|
||||||
"annual_report.summary.archetype.oracle": "Sabichón",
|
"annual_report.shared_page.footer": "Creado con {heart} polo equipo de Mastodon",
|
||||||
"annual_report.summary.archetype.pollster": "I.G.E.",
|
"annual_report.shared_page.footer_server_info": "{username} utiliza {domain}, unha das moitas comunidades de Mastodon.",
|
||||||
"annual_report.summary.archetype.replier": "Lareteire",
|
"annual_report.summary.archetype.booster.desc_public": "{name} á caza de publicacións para promover, dando relevancia a outras creadoras.",
|
||||||
"annual_report.summary.followers.followers": "seguidoras",
|
"annual_report.summary.archetype.booster.desc_self": "Á caza de publicacións para promover, dando relevancia a outras creadoras.",
|
||||||
"annual_report.summary.followers.total": "{count} en total",
|
"annual_report.summary.archetype.booster.name": "Arqueire",
|
||||||
"annual_report.summary.here_it_is": "Este é o resumo do teu {year}:",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "a publicación mais favorecida",
|
"annual_report.summary.archetype.lurker.desc_public": "Sabemos que {name} andivo por aí, nalgures, desfrutando de Mastodon paseniño e ao seu xeito.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "a publicación con mais promocións",
|
"annual_report.summary.archetype.lurker.desc_self": "Sabemos que andiveches por aí, nalgures, desfrutando de Mastodon tranquilamente e ao teu xeito.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "a publicación con mais respostas",
|
"annual_report.summary.archetype.lurker.name": "Xubilade",
|
||||||
"annual_report.summary.highlighted_post.possessive": "de {name}",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} creou máis publicacións que respostas, mantendo Mastodon ao día e ollando ao futuro.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Creaches máis publicacións que respostas, mantendo Mastodon ao día e ollando o futuro.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "O Oráculo",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name} creou máis enquisas que publicacións normais, cultivando a curiosidade en Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Creaches máis enquisas que publicacións normais, cultivando a curiosidade en Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "O mar de dúbidas",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} respondeu con frecuencia a outras persoas, polinizando Mastodon con novas conversas.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Respondeches con frecuencia a outras persoas, polinizando Mastodon con novas conversas.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "A Bolboreta",
|
||||||
|
"annual_report.summary.archetype.reveal": "Mostrar o meu arquetipo",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Grazas por ser parte de Mastodon! É hora de coñecer o teu arquetipo de usuaria no {year}.",
|
||||||
|
"annual_report.summary.archetype.title_public": "Arquetipo de {name}",
|
||||||
|
"annual_report.summary.archetype.title_self": "O teu arquetipo",
|
||||||
|
"annual_report.summary.close": "Fechar",
|
||||||
|
"annual_report.summary.copy_link": "Copiar ligazón",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {nova seguidora} other {nevas seguidoras}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Esta publicación promoveuse {count, plural, one {unha vez} other {# veces}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Esta publicación favoreceuse {count, plural, one {unha vez} other {# veces}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Esta publicación tivo {count, plural, one {unha resposta} other {# respostas}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Publicación máis popular",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "app que mais usaches",
|
"annual_report.summary.most_used_app.most_used_app": "app que mais usaches",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "o cancelo mais utilizado",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "o cancelo mais utilizado",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Nada",
|
"annual_report.summary.most_used_hashtag.used_count": "Incluíches este cancelo en {count, plural, one {1 publicación} other {# publicacións}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} incluíu este cancelo en {count, plural, one {1 publicación} other {# publicacións}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "novas publicacións",
|
"annual_report.summary.new_posts.new_posts": "novas publicacións",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Sitúante no top</topLabel><percentage></percentage><bottomLabel> das usuarias de {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Sitúante no top</topLabel><percentage></percentage><bottomLabel> das usuarias de {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Moito tes que contarnos!",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Moito tes que contarnos!",
|
||||||
|
"annual_report.summary.share_elsewhere": "Compárteo onde queiras",
|
||||||
"annual_report.summary.share_message": "Resulta que son… {archetype}!",
|
"annual_report.summary.share_message": "Resulta que son… {archetype}!",
|
||||||
"annual_report.summary.thanks": "Grazas por ser parte de Mastodon!",
|
"annual_report.summary.share_on_mastodon": "Compartir en Mastodon",
|
||||||
"attachments_list.unprocessed": "(sen procesar)",
|
"attachments_list.unprocessed": "(sen procesar)",
|
||||||
"audio.hide": "Agochar audio",
|
"audio.hide": "Agochar audio",
|
||||||
"block_modal.remote_users_caveat": "Ímoslle pedir ao servidor {domain} que respecte a túa decisión. Emporiso, non hai garantía de que atenda a petición xa que os servidores xestionan os bloqueos de formas diferentes. As publicacións públicas poderían aínda ser visibles para usuarias que non iniciaron sesión.",
|
"block_modal.remote_users_caveat": "Ímoslle pedir ao servidor {domain} que respecte a túa decisión. Emporiso, non hai garantía de que atenda a petición xa que os servidores xestionan os bloqueos de formas diferentes. As publicacións públicas poderían aínda ser visibles para usuarias que non iniciaron sesión.",
|
||||||
@ -419,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "A quen seguir",
|
"follow_suggestions.who_to_follow": "A quen seguir",
|
||||||
"followed_tags": "Cancelos seguidos",
|
"followed_tags": "Cancelos seguidos",
|
||||||
"footer.about": "Sobre",
|
"footer.about": "Sobre",
|
||||||
|
"footer.about_mastodon": "Sobre Mastodon",
|
||||||
|
"footer.about_server": "Sobre {domain}",
|
||||||
"footer.about_this_server": "Sobre",
|
"footer.about_this_server": "Sobre",
|
||||||
"footer.directory": "Directorio de perfís",
|
"footer.directory": "Directorio de perfís",
|
||||||
"footer.get_app": "Descarga a app",
|
"footer.get_app": "Descarga a app",
|
||||||
|
|||||||
@ -114,29 +114,50 @@
|
|||||||
"alt_text_modal.done": "סיום",
|
"alt_text_modal.done": "סיום",
|
||||||
"announcement.announcement": "הכרזה",
|
"announcement.announcement": "הכרזה",
|
||||||
"annual_report.announcement.action_build": "בנה לי את הסיכומודון שלי",
|
"annual_report.announcement.action_build": "בנה לי את הסיכומודון שלי",
|
||||||
|
"annual_report.announcement.action_dismiss": "לא תודה",
|
||||||
"annual_report.announcement.action_view": "לצפייה בסיכומודון שלי",
|
"annual_report.announcement.action_view": "לצפייה בסיכומודון שלי",
|
||||||
"annual_report.announcement.description": "ללמוד עוד על דבפוסי השימוש שלך במסטודון לאורך השנה החולפת.",
|
"annual_report.announcement.description": "ללמוד עוד על דבפוסי השימוש שלך במסטודון לאורך השנה החולפת.",
|
||||||
"annual_report.announcement.title": "סיכומודון {year} הגיע",
|
"annual_report.announcement.title": "סיכומודון {year} הגיע",
|
||||||
"annual_report.summary.archetype.booster": "ההד-וניסט(ית)",
|
"annual_report.nav_item.badge": "חדש",
|
||||||
"annual_report.summary.archetype.lurker": "השורץ.ת השקט.ה",
|
"annual_report.shared_page.donate": "לתרומה",
|
||||||
"annual_report.summary.archetype.oracle": "כבוד הרב.ה",
|
"annual_report.shared_page.footer": "נוצר עם כל ה-{heart} על ידי צוות מסטודון",
|
||||||
"annual_report.summary.archetype.pollster": "הסקרן.ית",
|
"annual_report.summary.archetype.booster.desc_public": "{name} צדו הודעות מעניינות להדהד, והגבירו קולותיהם של יוצרים אחרים בדיוק של חתול המזנק על הטרף.",
|
||||||
"annual_report.summary.archetype.replier": "הפרפר.ית החברתי.ת",
|
"annual_report.summary.archetype.booster.desc_self": "צדת הודעות מעניינות להדהד, והגברת קולותיהם של יוצרים אחרים בדיוק של חתול המזנק על הטרף.",
|
||||||
"annual_report.summary.followers.followers": "עוקבים",
|
"annual_report.summary.archetype.booster.name": "החתול הצייד",
|
||||||
"annual_report.summary.followers.total": "{count} בסך הכל",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.here_it_is": "והנה סיכום {year} שלך:",
|
"annual_report.summary.archetype.lurker.desc_public": "למיטב ידיעתנו {name} היו שם, איפשהוא, נהנים ממסטודון בדרכם השקטה.",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "התות הכי מחובב",
|
"annual_report.summary.archetype.lurker.desc_self": "למיטב ידיעתנו היית שם, איפשהוא, נהנית ממסטודון בדרכך השקטה.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "התות הכי מהודהד",
|
"annual_report.summary.archetype.lurker.name": "הסטואי.ת",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "התות עם מספר התשובות הגבוה ביותר",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} יצרו יותר הודעות מאשר תגובות, ושמרו על מסטודון רעננה ועם פנים לעתיד.",
|
||||||
"annual_report.summary.highlighted_post.possessive": "של {name}",
|
"annual_report.summary.archetype.oracle.desc_self": "יצרת יותר הודעות מאשר תגובות, ושמרת על מסטודון רעננה ועם פנים לעתיד.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "כבוד הרב.ה",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name} יצרו יותר סקרים מאשר כל סוג הודעה אחר, וכך הרבו סקרנות במסטודון.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "יצרת יותר סקרים מאשר כל סוג הודעה אחר, וכך הרבת סקרנות במסטודון.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "התוהה",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} ענו תכופות לאחרים, והפרו את מסטודון בדיונים חדשים.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "ענית תכופות לאחרים, והפרית את מסטודון בדיונים חדשים.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "הפרפר",
|
||||||
|
"annual_report.summary.archetype.reveal": "גלו את הארכיטיפ שלכם",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "תודה שאתם חלק ממסטודון! הגיע הזמן לגלות מה הארכיטיפ שגילמתן בשנת {year}.",
|
||||||
|
"annual_report.summary.archetype.title_public": "הארכיטיפ של {name}",
|
||||||
|
"annual_report.summary.archetype.title_self": "הארכיטיפ שלך",
|
||||||
|
"annual_report.summary.close": "סגירה",
|
||||||
|
"annual_report.summary.copy_link": "העתק קישור",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural,one {עוקב חדש} other {עוקבים חדשים}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "הודעה זו הודהדה {count, plural,one {פעם אחת}other {# פעמים}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "הודעה זו חובבה {count, plural,one {פעם אחת}other {# פעמים}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "הודעה זו נענתה על ידי {count, plural,one {תגובה אחת}other {# תגובות}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "ההודעה הפופולרית ביותר",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "היישומון שהכי בשימוש",
|
"annual_report.summary.most_used_app.most_used_app": "היישומון שהכי בשימוש",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "התג בשימוש הרב ביותר",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "התג בשימוש הרב ביותר",
|
||||||
"annual_report.summary.most_used_hashtag.none": "אף אחד",
|
"annual_report.summary.most_used_hashtag.used_count": "כללת את התגית הזו {count, plural,one {בהודעה אחת}other {ב-# הודעות}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} כללו את התגית {count, plural,one {בהודעה אחת}other {ב־# הודעות}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "הודעות חדשות",
|
"annual_report.summary.new_posts.new_posts": "הודעות חדשות",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>ממקם אותך באחוזון </topLabel><percentage></percentage><bottomLabel>של משמשי {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>ממקם אותך באחוזון </topLabel><percentage></percentage><bottomLabel>של משמשי {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "לא נגלה לברני.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "לא נגלה לברני.",
|
||||||
|
"annual_report.summary.share_elsewhere": "שיתוף במקום אחר",
|
||||||
"annual_report.summary.share_message": "זוהיתי כדוגמא לטיפוס {archetype}!",
|
"annual_report.summary.share_message": "זוהיתי כדוגמא לטיפוס {archetype}!",
|
||||||
"annual_report.summary.thanks": "תודה על היותך חלק ממסטודון!",
|
"annual_report.summary.share_on_mastodon": "לשתף במסטודון",
|
||||||
"attachments_list.unprocessed": "(לא מעובד)",
|
"attachments_list.unprocessed": "(לא מעובד)",
|
||||||
"audio.hide": "השתק",
|
"audio.hide": "השתק",
|
||||||
"block_modal.remote_users_caveat": "אנו נבקש מהשרת {domain} לכבד את החלטתך. עם זאת, ציות למוסכמות איננו מובטח כיוון ששרתים מסויימים עשויים לטפל בחסימות בצורה אחרת. הודעות פומביות עדיין יהיו גלויות לעיני משתמשים שאינם מחוברים.",
|
"block_modal.remote_users_caveat": "אנו נבקש מהשרת {domain} לכבד את החלטתך. עם זאת, ציות למוסכמות איננו מובטח כיוון ששרתים מסויימים עשויים לטפל בחסימות בצורה אחרת. הודעות פומביות עדיין יהיו גלויות לעיני משתמשים שאינם מחוברים.",
|
||||||
|
|||||||
@ -114,28 +114,51 @@
|
|||||||
"alt_text_modal.done": "Kész",
|
"alt_text_modal.done": "Kész",
|
||||||
"announcement.announcement": "Közlemény",
|
"announcement.announcement": "Közlemény",
|
||||||
"annual_report.announcement.action_build": "Saját Wrapstodon összeállítása",
|
"annual_report.announcement.action_build": "Saját Wrapstodon összeállítása",
|
||||||
|
"annual_report.announcement.action_dismiss": "Nem, köszönöm",
|
||||||
"annual_report.announcement.action_view": "Saját Wrapstodon megtekintése",
|
"annual_report.announcement.action_view": "Saját Wrapstodon megtekintése",
|
||||||
"annual_report.announcement.description": "Fedezz fel többet a Mastodonon az elmúlt évben végzett tevékenységeidről.",
|
"annual_report.announcement.description": "Fedezz fel többet a Mastodonon az elmúlt évben végzett tevékenységeidről.",
|
||||||
"annual_report.announcement.title": "A Wrapstodon {year} megérkezett",
|
"annual_report.announcement.title": "A Wrapstodon {year} megérkezett",
|
||||||
"annual_report.summary.archetype.booster": "A cool-vadász",
|
"annual_report.nav_item.badge": "Új",
|
||||||
"annual_report.summary.archetype.lurker": "A settenkedő",
|
"annual_report.shared_page.donate": "Adományozás",
|
||||||
"annual_report.summary.archetype.oracle": "Az orákulum",
|
"annual_report.shared_page.footer": "A Mastodon által {heart}-tel előállítva",
|
||||||
"annual_report.summary.archetype.pollster": "A közvélemény-kutató",
|
"annual_report.shared_page.footer_server_info": "{username} a {domain} domaint használja, amely a Mastodon által működtetett számos közösség egyike.",
|
||||||
"annual_report.summary.archetype.replier": "A társasági pillangó",
|
"annual_report.summary.archetype.booster.desc_public": "{name} megtolandó bejegyzésekre vadászott, tökéletes célzással felerősítve mások üzeneteit.",
|
||||||
"annual_report.summary.followers.followers": "követő",
|
"annual_report.summary.archetype.booster.desc_self": "Megtolandó bejegyzésekre vadásztál, tökéletes célzással felerősítve mások üzeneteit.",
|
||||||
"annual_report.summary.followers.total": "{count} összesen",
|
"annual_report.summary.archetype.booster.name": "Az íjász",
|
||||||
"annual_report.summary.here_it_is": "Itt a {year}. év értékelése:",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "legkedvencebb bejegyzés",
|
"annual_report.summary.archetype.lurker.desc_public": "Tudjuk, hogy {name} ott volt, valahol, a saját csendes módján élvezve a Mastodont.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "legtöbbet megtolt bejegyzés",
|
"annual_report.summary.archetype.lurker.desc_self": "Tudjuk, hogy ott voltál, valahol, a saját csendes módodon élvezve a Mastodont.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "bejegyzés a legtöbb válasszal",
|
"annual_report.summary.archetype.lurker.name": "A sztoikus",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name} fióktól",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} több bejegyzést hozott létre, mint választ, így a Mastodon friss és jövőbe tekintő marad.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Több bejegyzést hoztál létre, mint választ, így a Mastodon friss és jövőbe tekintő marad.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "Az orákulum",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name} több szavazást hozott létre, mint bármilyen más bejegyzést, ezzel támogatva a kíváncsiságot a Mastodonon.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Több szavazást hoztál létre, mint bármilyen más bejegyzést, ezzel támogatva a kíváncsiságot a Mastodonon.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "A csodálkozó",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} gyakran válaszolt más emberek bejegyzéseire, új témákat porozva be a Mastodonon.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Gyakran válaszoltál más emberek bejegyzéseire, új témákat porozva be a Mastodonon.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "A pillangó",
|
||||||
|
"annual_report.summary.archetype.reveal": "Saját archetípus felfedése",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Köszönjük, hogy a Mastodon része vagy! Tudj meg többet az archetípusodról {year} évében.",
|
||||||
|
"annual_report.summary.archetype.title_public": "{name} archetípusa",
|
||||||
|
"annual_report.summary.archetype.title_self": "Saját archetípus",
|
||||||
|
"annual_report.summary.close": "Bezárás",
|
||||||
|
"annual_report.summary.copy_link": "Hivatkozás másolása",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {új követő} other {új követők}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Ez a bejegyzés {count, plural, one {egyszer} other {# alkalommal}} volt megtolva.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Ez a bejegyzés {count, plural, one {egyszer} other {# alkalommal}} volt kedvencnek jelölve.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Ez a bejegyzés {count, plural, one {egy választ} other {# választ}} kapott.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Legnépszerűbb bejegyzés",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "legtöbbet használt app",
|
"annual_report.summary.most_used_app.most_used_app": "legtöbbet használt app",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "legtöbbet használt hashtag",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "legtöbbet használt hashtag",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Nincs",
|
"annual_report.summary.most_used_hashtag.used_count": "Ez a hashtag {count, plural, one {egy bejegyzésedben} other {# bejegyzésedben}} szerepel.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} {count, plural, one {egy bejegyzésében} other {# bejegyzésében}} használta ezt a hashtaget.",
|
||||||
"annual_report.summary.new_posts.new_posts": "új bejegyzés",
|
"annual_report.summary.new_posts.new_posts": "új bejegyzés",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Ezzel a csúcs</topLabel><percentage></percentage><bottomLabel>{domain} felhasználó között vagy.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Ezzel a csúcs</topLabel><percentage></percentage><bottomLabel>{domain} felhasználó között vagy.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Nem mondjuk el Bernie-nek.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Nem mondjuk el Bernie-nek.",
|
||||||
"annual_report.summary.thanks": "Kösz, hogy a Mastodon része vagy!",
|
"annual_report.summary.share_elsewhere": "Megosztás máshol",
|
||||||
|
"annual_report.summary.share_message": "{archetype} lett az archetípusom!",
|
||||||
|
"annual_report.summary.share_on_mastodon": "Megosztás a Mastodonon",
|
||||||
"attachments_list.unprocessed": "(feldolgozatlan)",
|
"attachments_list.unprocessed": "(feldolgozatlan)",
|
||||||
"audio.hide": "Hang elrejtése",
|
"audio.hide": "Hang elrejtése",
|
||||||
"block_modal.remote_users_caveat": "Arra kérjük a {domain} kiszolgálót, hogy tartsa tiszteletben a döntésedet. Ugyanakkor az együttműködés nem garantált, mivel néhány kiszolgáló másképp kezelheti a letiltásokat. A nyilvános bejegyzések a be nem jelentkezett felhasználók számára továbbra is látszódhatnak.",
|
"block_modal.remote_users_caveat": "Arra kérjük a {domain} kiszolgálót, hogy tartsa tiszteletben a döntésedet. Ugyanakkor az együttműködés nem garantált, mivel néhány kiszolgáló másképp kezelheti a letiltásokat. A nyilvános bejegyzések a be nem jelentkezett felhasználók számára továbbra is látszódhatnak.",
|
||||||
@ -418,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "Kit érdemes követni",
|
"follow_suggestions.who_to_follow": "Kit érdemes követni",
|
||||||
"followed_tags": "Követett hashtagek",
|
"followed_tags": "Követett hashtagek",
|
||||||
"footer.about": "Névjegy",
|
"footer.about": "Névjegy",
|
||||||
|
"footer.about_mastodon": "A Mastodonról",
|
||||||
|
"footer.about_server": "A {domain} domainről",
|
||||||
"footer.about_this_server": "Névjegy",
|
"footer.about_this_server": "Névjegy",
|
||||||
"footer.directory": "Profiltár",
|
"footer.directory": "Profiltár",
|
||||||
"footer.get_app": "Alkalmazás beszerzése",
|
"footer.get_app": "Alkalmazás beszerzése",
|
||||||
|
|||||||
@ -113,25 +113,11 @@
|
|||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Describe isto pro personas con impedimentos visual…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "Describe isto pro personas con impedimentos visual…",
|
||||||
"alt_text_modal.done": "Preste",
|
"alt_text_modal.done": "Preste",
|
||||||
"announcement.announcement": "Annuncio",
|
"announcement.announcement": "Annuncio",
|
||||||
"annual_report.summary.archetype.booster": "Le impulsator",
|
|
||||||
"annual_report.summary.archetype.lurker": "Le lector",
|
|
||||||
"annual_report.summary.archetype.oracle": "Le oraculo",
|
|
||||||
"annual_report.summary.archetype.pollster": "Le sondagista",
|
|
||||||
"annual_report.summary.archetype.replier": "Le responditor",
|
|
||||||
"annual_report.summary.followers.followers": "sequitores",
|
|
||||||
"annual_report.summary.followers.total": "{count} in total",
|
|
||||||
"annual_report.summary.here_it_is": "Ecce tu summario de {year}:",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "message le plus favorite",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "message le plus impulsate",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "message le plus respondite",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}, ecce tu…",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "application le plus usate",
|
"annual_report.summary.most_used_app.most_used_app": "application le plus usate",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag le plus usate",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag le plus usate",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Necun",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "nove messages",
|
"annual_report.summary.new_posts.new_posts": "nove messages",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Isto te pone in le prime</topLabel><percentage></percentage><bottomLabel>usatores de {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Isto te pone in le prime</topLabel><percentage></percentage><bottomLabel>usatores de {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Tu es un primo inter pares.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Tu es un primo inter pares.",
|
||||||
"annual_report.summary.thanks": "Gratias pro facer parte de Mastodon!",
|
|
||||||
"attachments_list.unprocessed": "(non processate)",
|
"attachments_list.unprocessed": "(non processate)",
|
||||||
"audio.hide": "Celar audio",
|
"audio.hide": "Celar audio",
|
||||||
"block_modal.remote_users_caveat": "Nos demandera al servitor {domain} de respectar tu decision. Nonobstante, le conformitate non es garantite perque alcun servitores pote tractar le blocadas de maniera differente. Le messages public pote esser totevia visibile pro le usatores non authenticate.",
|
"block_modal.remote_users_caveat": "Nos demandera al servitor {domain} de respectar tu decision. Nonobstante, le conformitate non es garantite perque alcun servitores pote tractar le blocadas de maniera differente. Le messages public pote esser totevia visibile pro le usatores non authenticate.",
|
||||||
|
|||||||
@ -90,25 +90,11 @@
|
|||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Priskribar co por personi kun viddeskapableso…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "Priskribar co por personi kun viddeskapableso…",
|
||||||
"alt_text_modal.done": "Finis",
|
"alt_text_modal.done": "Finis",
|
||||||
"announcement.announcement": "Anunco",
|
"announcement.announcement": "Anunco",
|
||||||
"annual_report.summary.archetype.booster": "La plurrepetanto",
|
|
||||||
"annual_report.summary.archetype.lurker": "La plurcelanto",
|
|
||||||
"annual_report.summary.archetype.oracle": "La pluraktivo",
|
|
||||||
"annual_report.summary.archetype.pollster": "La votinquestoiganto",
|
|
||||||
"annual_report.summary.archetype.replier": "La plurrespondanto",
|
|
||||||
"annual_report.summary.followers.followers": "sequanti",
|
|
||||||
"annual_report.summary.followers.total": "{count} sumo",
|
|
||||||
"annual_report.summary.here_it_is": "Caibe es vua rivido ye {year}:",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "maxim prizita mesajo",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "maxim repetita mesajo",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "mesajo kun la maxim multa respondi",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "di {name}",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "maxim uzita aplikajo",
|
"annual_report.summary.most_used_app.most_used_app": "maxim uzita aplikajo",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "maxim uzita gretvorto",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "maxim uzita gretvorto",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Nulo",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "nova afishi",
|
"annual_report.summary.new_posts.new_posts": "nova afishi",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>To pozas vu sur la supro </topLabel><percentage></percentage><bottomLabel>di uzanti di {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>To pozas vu sur la supro </topLabel><percentage></percentage><bottomLabel>di uzanti di {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Ni ne dicas ad Bernio.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Ni ne dicas ad Bernio.",
|
||||||
"annual_report.summary.thanks": "Danki por partoprenar sur Mastodon!",
|
|
||||||
"attachments_list.unprocessed": "(neprocedita)",
|
"attachments_list.unprocessed": "(neprocedita)",
|
||||||
"audio.hide": "Celez audio",
|
"audio.hide": "Celez audio",
|
||||||
"block_modal.remote_users_caveat": "Ni questionos {domain} di la servilo por respektar vua decido. Publika posti forsan ankore estas videbla a neenirinta uzanti.",
|
"block_modal.remote_users_caveat": "Ni questionos {domain} di la servilo por respektar vua decido. Publika posti forsan ankore estas videbla a neenirinta uzanti.",
|
||||||
|
|||||||
@ -113,30 +113,52 @@
|
|||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Lýstu þessu fyrir fólk með skerta sjón…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "Lýstu þessu fyrir fólk með skerta sjón…",
|
||||||
"alt_text_modal.done": "Lokið",
|
"alt_text_modal.done": "Lokið",
|
||||||
"announcement.announcement": "Auglýsing",
|
"announcement.announcement": "Auglýsing",
|
||||||
"annual_report.announcement.action_build": "Byggja Wrapstodon fyrir mig",
|
"annual_report.announcement.action_build": "Búa til ársuppgjör fyrir mig",
|
||||||
"annual_report.announcement.action_view": "Skoða minn Wrapstodon",
|
"annual_report.announcement.action_dismiss": "Nei takk",
|
||||||
|
"annual_report.announcement.action_view": "Skoða ársuppgjörið mitt",
|
||||||
"annual_report.announcement.description": "Skoðaðu meira um virkni þína á Mastodon á síðastliðnu ári.",
|
"annual_report.announcement.description": "Skoðaðu meira um virkni þína á Mastodon á síðastliðnu ári.",
|
||||||
"annual_report.announcement.title": "Wrapstodon {year} er komið",
|
"annual_report.announcement.title": "Ársuppgjörið {year} er komið",
|
||||||
"annual_report.summary.archetype.booster": "Svali gaurinn",
|
"annual_report.nav_item.badge": "Nýtt",
|
||||||
"annual_report.summary.archetype.lurker": "Lurkurinn",
|
"annual_report.shared_page.donate": "Styrkja",
|
||||||
"annual_report.summary.archetype.oracle": "Völvan",
|
"annual_report.shared_page.footer": "{heart}-kveðjur frá Mastodon-teyminu",
|
||||||
"annual_report.summary.archetype.pollster": "Kannanafíkillinn",
|
"annual_report.shared_page.footer_server_info": "{username} notar {domain}, einu af samfélögunum sem Mastodon drífur.",
|
||||||
"annual_report.summary.archetype.replier": "Félagsveran",
|
"annual_report.summary.archetype.booster.desc_public": "{name} var á höttunum eftir færslum til að endurbirta og hitti þannig í mark með að magna upp það sem aðrir voru að gera.",
|
||||||
"annual_report.summary.followers.followers": "fylgjendur",
|
"annual_report.summary.archetype.booster.desc_self": "Þú varst á höttunum eftir færslum til að endurbirta og hittir þannig í mark með að magna upp það sem aðrir voru að gera.",
|
||||||
"annual_report.summary.followers.total": "{count} alls",
|
"annual_report.summary.archetype.booster.name": "Veiðmaðurinn",
|
||||||
"annual_report.summary.here_it_is": "Hér er yfirlitið þitt fyrir {year}:",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "færsla sett oftast í eftirlæti",
|
"annual_report.summary.archetype.lurker.desc_public": "Við vitum að {name} var þarna úti, einhversstaðar, að njóta Mastodon á sínum eigin hljóðlátu forsendum.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "færsla oftast endurbirt",
|
"annual_report.summary.archetype.lurker.desc_self": "Við vitum að þú varst þarna úti, einhversstaðar, að njóta Mastodon á þínum eigin hljóðlátu forsendum.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "færsla með flestum svörum",
|
"annual_report.summary.archetype.lurker.name": "Heimspekingurinn",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} útbjó fleiri færslur en svör og hélt þannig Mastodon fersku og vísandi til framtíðar.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Þú útbjóst fleiri færslur en svör og hélst þannig Mastodon fersku og vísandi til framtíðar.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "Völvan",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name} útbjó fleiri kannanir en aðrar gerðir af færslum og ræktaði þannig forvitni á ökrum Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Þú útbjóst fleiri kannanir en aðrar gerðir af færslum og ræktaðir þannig forvitni á ökrum Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "Könnuðurinn",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} svaraði oft færslum annara og frjóvgaði Mastodon með nýjum samræðum.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Þú svaraðir oft færslum annara og frjóvgaðir Mastodon með nýjum samræðum.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "Fiðrildið",
|
||||||
|
"annual_report.summary.archetype.reveal": "Uppljóstra um erkitýpuna mína",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Takk fyrir að vera hluti af Mastodon! Nú er tíminn til að sjá hvaða erkitýpu þú líktist árið {year}.",
|
||||||
|
"annual_report.summary.archetype.title_public": "Erkitýpan fyrir {name}",
|
||||||
|
"annual_report.summary.archetype.title_self": "Erkitýpan þín",
|
||||||
|
"annual_report.summary.close": "Loka",
|
||||||
|
"annual_report.summary.copy_link": "Afrita tengil",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {nýr fylgjandi} other {nýir fylgjendur}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Þessi færsla var endurbirt {count, plural, one {einu sinni} other {# sinnum}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Þessi færsla var sett í eftirlæti {count, plural, one {einu sinni} other {# sinnum}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Þessi færsla fékk {count, plural, one {eitt svar} other {# svör}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Vinsælasta færslan",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "mest notaða forrit",
|
"annual_report.summary.most_used_app.most_used_app": "mest notaða forrit",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "mest notaða myllumerki",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "mest notaða myllumerki",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Ekkert",
|
"annual_report.summary.most_used_hashtag.used_count": "Þú hafðir þetta myllumerki með í {count, plural, one {einni færslu} other {# færslum}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} hafði þetta myllumerki með í {count, plural, one {einni færslu} other {# færslum}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "nýjar færslur",
|
"annual_report.summary.new_posts.new_posts": "nýjar færslur",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Þetta setur þig á meðal</topLabel><percentage></percentage><bottomLabel>of {domain} virkustu notendanna.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Þetta setur þig á meðal</topLabel><percentage></percentage><bottomLabel>of {domain} virkustu notendanna.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Við förum ekkert að raupa um þetta.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Við förum ekkert að raupa um þetta.",
|
||||||
|
"annual_report.summary.share_elsewhere": "Deila annarsstaðar",
|
||||||
"annual_report.summary.share_message": "Ég er víst {archetype}-týpan!",
|
"annual_report.summary.share_message": "Ég er víst {archetype}-týpan!",
|
||||||
"annual_report.summary.thanks": "Takk fyrir að vera hluti af Mastodon-samfélaginu!",
|
"annual_report.summary.share_on_mastodon": "Deila á Mastodon",
|
||||||
"attachments_list.unprocessed": "(óunnið)",
|
"attachments_list.unprocessed": "(óunnið)",
|
||||||
"audio.hide": "Fela hljóð",
|
"audio.hide": "Fela hljóð",
|
||||||
"block_modal.remote_users_caveat": "Við munum biðja {domain} netþjóninn um að virða ákvörðun þína. Hitt er svo annað mál hvort hann fari eftir þessu, ekki er hægt að tryggja eftirfylgni því sumir netþjónar meðhöndla útilokanir á sinn hátt. Opinberar færslur gætu verið sýnilegar notendum sem ekki eru skráðir inn.",
|
"block_modal.remote_users_caveat": "Við munum biðja {domain} netþjóninn um að virða ákvörðun þína. Hitt er svo annað mál hvort hann fari eftir þessu, ekki er hægt að tryggja eftirfylgni því sumir netþjónar meðhöndla útilokanir á sinn hátt. Opinberar færslur gætu verið sýnilegar notendum sem ekki eru skráðir inn.",
|
||||||
@ -419,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "Hverjum á að fylgjast með",
|
"follow_suggestions.who_to_follow": "Hverjum á að fylgjast með",
|
||||||
"followed_tags": "Vöktuð myllumerki",
|
"followed_tags": "Vöktuð myllumerki",
|
||||||
"footer.about": "Nánari upplýsingar",
|
"footer.about": "Nánari upplýsingar",
|
||||||
|
"footer.about_mastodon": "Um Mastodon",
|
||||||
|
"footer.about_server": "Um {domain}",
|
||||||
"footer.about_this_server": "Nánari upplýsingar",
|
"footer.about_this_server": "Nánari upplýsingar",
|
||||||
"footer.directory": "Notandasniðamappa",
|
"footer.directory": "Notandasniðamappa",
|
||||||
"footer.get_app": "Ná í forritið",
|
"footer.get_app": "Ná í forritið",
|
||||||
@ -614,8 +638,8 @@
|
|||||||
"notification.admin.report_statuses_other": "{name} kærði {target}",
|
"notification.admin.report_statuses_other": "{name} kærði {target}",
|
||||||
"notification.admin.sign_up": "{name} skráði sig",
|
"notification.admin.sign_up": "{name} skráði sig",
|
||||||
"notification.admin.sign_up.name_and_others": "{name} og {count, plural, one {# í viðbót hefur} other {# í viðbót hafa}} skráð sig",
|
"notification.admin.sign_up.name_and_others": "{name} og {count, plural, one {# í viðbót hefur} other {# í viðbót hafa}} skráð sig",
|
||||||
"notification.annual_report.message": "{year} á #Wrapstodon bíður! Afhjúpaðu hvað bar hæst á árinu og minnistæðustu augnablikin á Mastodon!",
|
"notification.annual_report.message": "Ársuppgjörið {year} bíður á #Wrapstodon! Afhjúpaðu hvað bar hæst á árinu og minnistæðustu augnablikin á Mastodon!",
|
||||||
"notification.annual_report.view": "Skoða #Wrapstodon",
|
"notification.annual_report.view": "Skoða ársuppgjör á #Wrapstodon",
|
||||||
"notification.favourite": "{name} setti færsluna þína í eftirlæti",
|
"notification.favourite": "{name} setti færsluna þína í eftirlæti",
|
||||||
"notification.favourite.name_and_others_with_link": "{name} og <a>{count, plural, one {# í viðbót hefur} other {# í viðbót hafa}}</a> sett færsluna þína í eftirlæti",
|
"notification.favourite.name_and_others_with_link": "{name} og <a>{count, plural, one {# í viðbót hefur} other {# í viðbót hafa}}</a> sett færsluna þína í eftirlæti",
|
||||||
"notification.favourite_pm": "{name} setti í eftirlæti færslu í einkaspjalli þar sem þú minntist á viðkomandi",
|
"notification.favourite_pm": "{name} setti í eftirlæti færslu í einkaspjalli þar sem þú minntist á viðkomandi",
|
||||||
|
|||||||
@ -31,7 +31,7 @@
|
|||||||
"account.edit_profile_short": "Modifica",
|
"account.edit_profile_short": "Modifica",
|
||||||
"account.enable_notifications": "Avvisami quando @{name} pubblica un post",
|
"account.enable_notifications": "Avvisami quando @{name} pubblica un post",
|
||||||
"account.endorse": "In evidenza sul profilo",
|
"account.endorse": "In evidenza sul profilo",
|
||||||
"account.familiar_followers_many": "Seguito da {name1}, {name2}, e {othersCount, plural, one {un altro che conosci} other {# altri che conosci}}",
|
"account.familiar_followers_many": "Seguito da {name1}, {name2}, e {othersCount, plural, one {un altro che conosci} other {altri # che conosci}}",
|
||||||
"account.familiar_followers_one": "Seguito da {name1}",
|
"account.familiar_followers_one": "Seguito da {name1}",
|
||||||
"account.familiar_followers_two": "Seguito da {name1} e {name2}",
|
"account.familiar_followers_two": "Seguito da {name1} e {name2}",
|
||||||
"account.featured": "In primo piano",
|
"account.featured": "In primo piano",
|
||||||
@ -114,29 +114,51 @@
|
|||||||
"alt_text_modal.done": "Fatto",
|
"alt_text_modal.done": "Fatto",
|
||||||
"announcement.announcement": "Annuncio",
|
"announcement.announcement": "Annuncio",
|
||||||
"annual_report.announcement.action_build": "Costruisci il mio Wrapstodon",
|
"annual_report.announcement.action_build": "Costruisci il mio Wrapstodon",
|
||||||
|
"annual_report.announcement.action_dismiss": "No, grazie",
|
||||||
"annual_report.announcement.action_view": "Visualizza il mio Wrapstodon",
|
"annual_report.announcement.action_view": "Visualizza il mio Wrapstodon",
|
||||||
"annual_report.announcement.description": "Scopri di più sul tuo coinvolgimento su Mastodon nell'ultimo anno.",
|
"annual_report.announcement.description": "Scopri di più sul tuo coinvolgimento su Mastodon nell'ultimo anno.",
|
||||||
"annual_report.announcement.title": "Wrapstodon {year} è arrivato",
|
"annual_report.announcement.title": "Wrapstodon {year} è arrivato",
|
||||||
"annual_report.summary.archetype.booster": "Cacciatore/trice di tendenze",
|
"annual_report.nav_item.badge": "Nuovo",
|
||||||
"annual_report.summary.archetype.lurker": "L'osservatore/trice",
|
"annual_report.shared_page.donate": "Dona",
|
||||||
"annual_report.summary.archetype.oracle": "L'oracolo",
|
"annual_report.shared_page.footer": "Generato con {heart} dal team di Mastodon",
|
||||||
"annual_report.summary.archetype.pollster": "Sondaggista",
|
"annual_report.shared_page.footer_server_info": "{username} usa {domain}, una delle tante comunità basate su Mastodon.",
|
||||||
"annual_report.summary.archetype.replier": "Utente socievole",
|
"annual_report.summary.archetype.booster.desc_public": "{name} è rimasto/a alla ricerca di post da condividere, amplificando il lavoro di altri creatori con precisione mirata.",
|
||||||
"annual_report.summary.followers.followers": "seguaci",
|
"annual_report.summary.archetype.booster.desc_self": "Sei rimasto/a alla ricerca di post da condividere, amplificando il lavoro di altri creatori con precisione mirata.",
|
||||||
"annual_report.summary.followers.total": "{count} in totale",
|
"annual_report.summary.archetype.booster.name": "L'Arciere",
|
||||||
"annual_report.summary.here_it_is": "Ecco il tuo {year} in sintesi:",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "il post più apprezzato",
|
"annual_report.summary.archetype.lurker.desc_public": "Sappiamo che {name} era là fuori, da qualche parte, a godersi Mastodon in tutta tranquillità.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "il post più condiviso",
|
"annual_report.summary.archetype.lurker.desc_self": "Sappiamo che eri là fuori, da qualche parte, a goderti Mastodon in tutta tranquillità.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "il post con più risposte",
|
"annual_report.summary.archetype.lurker.name": "Lo Stoico",
|
||||||
"annual_report.summary.highlighted_post.possessive": "di {name}",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} ha creato più nuovi post che risposte, mantenendo Mastodon fresco e orientato al futuro.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Hai creato più nuovi post che risposte, mantenendo Mastodon fresco e orientato al futuro.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "L'Oracolo",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name} ha creato più sondaggi rispetto ad altri tipi di post, alimentando la curiosità su Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Hai creato più sondaggi rispetto ad altri tipi di post, alimentando la curiosità su Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "L'Esploratore",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} ha frequentemente risposto ai post di altre persone, alimentando Mastodon con nuove discussioni.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Hai frequentemente risposto ai post di altre persone, alimentando Mastodon con nuove discussioni.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "La Farfalla",
|
||||||
|
"annual_report.summary.archetype.reveal": "Rivela il mio archetipo",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Grazie per far parte di Mastodon! È il momento di scoprire quale archetipo hai incarnato nel {year}.",
|
||||||
|
"annual_report.summary.archetype.title_public": "Archetipo di {name}",
|
||||||
|
"annual_report.summary.archetype.title_self": "Il tuo archetipo",
|
||||||
|
"annual_report.summary.close": "Chiudi",
|
||||||
|
"annual_report.summary.copy_link": "Copia il сollegamento",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {nuovo seguace} other {nuovi seguaci}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Questo post è stato condiviso {count, plural, one {1 volta} other {# volte}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Questo post è stato aggiunto ai preferiti {count, plural, one {1 volta} other {# volte}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Questo post ha ricevuto {count, plural, one {1 risposta} other {# risposte}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Il post più popolare",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "l'app più utilizzata",
|
"annual_report.summary.most_used_app.most_used_app": "l'app più utilizzata",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "l'hashtag più usato",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "l'hashtag più usato",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Nessuno",
|
"annual_report.summary.most_used_hashtag.used_count": "Hai incluso questo hashtag in {count, plural, one {1 post} other {# post}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} ha incluso questo hashtag in {count, plural, one {1 post} other {# post}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "nuovi post",
|
"annual_report.summary.new_posts.new_posts": "nuovi post",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Ciò ti colloca in cima</topLabel><percentage></percentage><bottomLabel>agli utenti di {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Ciò ti colloca in cima</topLabel><percentage></percentage><bottomLabel>agli utenti di {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Non lo diremo a Bernie.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Non lo diremo a Bernie.",
|
||||||
|
"annual_report.summary.share_elsewhere": "Condividi altrove",
|
||||||
"annual_report.summary.share_message": "Ho ottenuto l'archetipo: {archetype}!",
|
"annual_report.summary.share_message": "Ho ottenuto l'archetipo: {archetype}!",
|
||||||
"annual_report.summary.thanks": "Grazie per far parte di Mastodon!",
|
"annual_report.summary.share_on_mastodon": "Condividi su Mastodon",
|
||||||
"attachments_list.unprocessed": "(non elaborato)",
|
"attachments_list.unprocessed": "(non elaborato)",
|
||||||
"audio.hide": "Nascondi audio",
|
"audio.hide": "Nascondi audio",
|
||||||
"block_modal.remote_users_caveat": "Chiederemo al server {domain} di rispettare la tua decisione. Tuttavia, la conformità non è garantita poiché alcuni server potrebbero gestire i blocchi in modo diverso. I post pubblici potrebbero essere ancora visibili agli utenti che non hanno effettuato l'accesso.",
|
"block_modal.remote_users_caveat": "Chiederemo al server {domain} di rispettare la tua decisione. Tuttavia, la conformità non è garantita poiché alcuni server potrebbero gestire i blocchi in modo diverso. I post pubblici potrebbero essere ancora visibili agli utenti che non hanno effettuato l'accesso.",
|
||||||
@ -419,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "Chi seguire",
|
"follow_suggestions.who_to_follow": "Chi seguire",
|
||||||
"followed_tags": "Hashtag seguiti",
|
"followed_tags": "Hashtag seguiti",
|
||||||
"footer.about": "Info",
|
"footer.about": "Info",
|
||||||
|
"footer.about_mastodon": "Riguardo Mastodon",
|
||||||
|
"footer.about_server": "Riguardo {domain}",
|
||||||
"footer.about_this_server": "Info",
|
"footer.about_this_server": "Info",
|
||||||
"footer.directory": "Cartella dei profili",
|
"footer.directory": "Cartella dei profili",
|
||||||
"footer.get_app": "Scarica l'app",
|
"footer.get_app": "Scarica l'app",
|
||||||
|
|||||||
@ -113,25 +113,16 @@
|
|||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "目が不自由な方のために説明してください…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "目が不自由な方のために説明してください…",
|
||||||
"alt_text_modal.done": "完了",
|
"alt_text_modal.done": "完了",
|
||||||
"announcement.announcement": "お知らせ",
|
"announcement.announcement": "お知らせ",
|
||||||
"annual_report.summary.archetype.booster": "トレンドハンター",
|
"annual_report.summary.followers.new_followers": "{count, plural, other {新しいフォロワー}}",
|
||||||
"annual_report.summary.archetype.lurker": "ROM専",
|
"annual_report.summary.highlighted_post.boost_count": "この投稿は {count, plural, other {# 回}}ブーストされました。",
|
||||||
"annual_report.summary.archetype.oracle": "予言者",
|
"annual_report.summary.highlighted_post.favourite_count": "この投稿は {count, plural, other {# 回}}お気に入りされました。",
|
||||||
"annual_report.summary.archetype.pollster": "調査員",
|
"annual_report.summary.highlighted_post.title": "最も人気のある投稿",
|
||||||
"annual_report.summary.archetype.replier": "社交家",
|
|
||||||
"annual_report.summary.followers.followers": "フォロワー",
|
|
||||||
"annual_report.summary.followers.total": "合計{count}",
|
|
||||||
"annual_report.summary.here_it_is": "こちらがあなたの{year}年の振り返りです",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "最もお気に入りされた投稿",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "最もブーストされた投稿",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "最も返信が多かった投稿",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}の",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "最も使用されているアプリ",
|
"annual_report.summary.most_used_app.most_used_app": "最も使用されているアプリ",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "最も使用されたハッシュタグ",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "最も使用されたハッシュタグ",
|
||||||
"annual_report.summary.most_used_hashtag.none": "なし",
|
"annual_report.summary.most_used_hashtag.used_count": "あなたはこのハッシュタグを {count, plural, other {# 件の投稿}}に含めました。",
|
||||||
"annual_report.summary.new_posts.new_posts": "新しい投稿",
|
"annual_report.summary.new_posts.new_posts": "新しい投稿",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>{domain}で 上位</topLabel><percentage></percentage><bottomLabel>に入ります!</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>{domain}で 上位</topLabel><percentage></percentage><bottomLabel>に入ります!</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "バー二ーには秘密にしておくよ。",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "バー二ーには秘密にしておくよ。",
|
||||||
"annual_report.summary.thanks": "Mastodonの一員になってくれてありがとう!",
|
|
||||||
"attachments_list.unprocessed": "(未処理)",
|
"attachments_list.unprocessed": "(未処理)",
|
||||||
"audio.hide": "音声を閉じる",
|
"audio.hide": "音声を閉じる",
|
||||||
"block_modal.remote_users_caveat": "このサーバーはあなたのブロックの意思を尊重するように {domain} へ通知します。しかし、サーバーによってはブロック機能の扱いが異なる場合もありえるため、相手のサーバー側で求める通りの処理が行われる確証はありません。また、公開投稿はユーザーがログアウト状態であれば閲覧できる可能性があります。",
|
"block_modal.remote_users_caveat": "このサーバーはあなたのブロックの意思を尊重するように {domain} へ通知します。しかし、サーバーによってはブロック機能の扱いが異なる場合もありえるため、相手のサーバー側で求める通りの処理が行われる確証はありません。また、公開投稿はユーザーがログアウト状態であれば閲覧できる可能性があります。",
|
||||||
|
|||||||
@ -92,13 +92,9 @@
|
|||||||
"alt_text_modal.cancel": "Semmet",
|
"alt_text_modal.cancel": "Semmet",
|
||||||
"alt_text_modal.done": "Immed",
|
"alt_text_modal.done": "Immed",
|
||||||
"announcement.announcement": "Ulɣu",
|
"announcement.announcement": "Ulɣu",
|
||||||
"annual_report.summary.followers.followers": "imeḍfaṛen",
|
|
||||||
"annual_report.summary.followers.total": "{count} deg aɣrud",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "asnas yettwasqedcen s waṭas",
|
"annual_report.summary.most_used_app.most_used_app": "asnas yettwasqedcen s waṭas",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Ula yiwen",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "tisuffaɣ timaynutin",
|
"annual_report.summary.new_posts.new_posts": "tisuffaɣ timaynutin",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Ur as-neqqar i yiwen.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Ur as-neqqar i yiwen.",
|
||||||
"annual_report.summary.thanks": "Tanemmirt imi i tettekkiḍ deg Mastodon!",
|
|
||||||
"audio.hide": "Ffer amesli",
|
"audio.hide": "Ffer amesli",
|
||||||
"block_modal.show_less": "Ssken-d drus",
|
"block_modal.show_less": "Ssken-d drus",
|
||||||
"block_modal.show_more": "Ssken-d ugar",
|
"block_modal.show_more": "Ssken-d ugar",
|
||||||
|
|||||||
@ -9,6 +9,7 @@
|
|||||||
"about.domain_blocks.silenced.title": "Шектеулі",
|
"about.domain_blocks.silenced.title": "Шектеулі",
|
||||||
"about.domain_blocks.suspended.explanation": "Бұл сервердің деректері өңделмейді, сақталмайды және айырбасталмайды, сондықтан бұл сервердің қолданушыларымен кез келген әрекеттесу немесе байланыс мүмкін емес.",
|
"about.domain_blocks.suspended.explanation": "Бұл сервердің деректері өңделмейді, сақталмайды және айырбасталмайды, сондықтан бұл сервердің қолданушыларымен кез келген әрекеттесу немесе байланыс мүмкін емес.",
|
||||||
"about.domain_blocks.suspended.title": "Тоқтатылған",
|
"about.domain_blocks.suspended.title": "Тоқтатылған",
|
||||||
|
"about.language_label": "Тіл",
|
||||||
"about.not_available": "Бұл ақпарат бұл серверде қолжетімді емес.",
|
"about.not_available": "Бұл ақпарат бұл серверде қолжетімді емес.",
|
||||||
"about.powered_by": "{mastodon} негізіндегі орталықсыз әлеуметтік желі",
|
"about.powered_by": "{mastodon} негізіндегі орталықсыз әлеуметтік желі",
|
||||||
"about.rules": "Сервер ережелері",
|
"about.rules": "Сервер ережелері",
|
||||||
@ -19,11 +20,13 @@
|
|||||||
"account.block_domain": "{domain} доменін бұғаттау",
|
"account.block_domain": "{domain} доменін бұғаттау",
|
||||||
"account.block_short": "Бұғаттау",
|
"account.block_short": "Бұғаттау",
|
||||||
"account.blocked": "Бұғатталған",
|
"account.blocked": "Бұғатталған",
|
||||||
|
"account.blocking": "Бұғаттау",
|
||||||
"account.cancel_follow_request": "Withdraw follow request",
|
"account.cancel_follow_request": "Withdraw follow request",
|
||||||
"account.direct": "@{name} жеке айту",
|
"account.direct": "@{name} жеке айту",
|
||||||
"account.disable_notifications": "@{name} постары туралы ескертпеу",
|
"account.disable_notifications": "@{name} постары туралы ескертпеу",
|
||||||
"account.domain_blocking": "Доменді бұғаттау",
|
"account.domain_blocking": "Доменді бұғаттау",
|
||||||
"account.edit_profile": "Профильді өңдеу",
|
"account.edit_profile": "Профильді өңдеу",
|
||||||
|
"account.edit_profile_short": "Түзеу",
|
||||||
"account.enable_notifications": "@{name} постары туралы ескерту",
|
"account.enable_notifications": "@{name} постары туралы ескерту",
|
||||||
"account.endorse": "Профильде ұсыну",
|
"account.endorse": "Профильде ұсыну",
|
||||||
"account.familiar_followers_many": "{name1}, {name2} және {othersCount, plural, one {сіз білетін тағы бір адам} other {сіз білетін тағы # адам}} жазылған",
|
"account.familiar_followers_many": "{name1}, {name2} және {othersCount, plural, one {сіз білетін тағы бір адам} other {сіз білетін тағы # адам}} жазылған",
|
||||||
@ -91,7 +94,11 @@
|
|||||||
"alert.rate_limited.title": "Бағалау шектеулі",
|
"alert.rate_limited.title": "Бағалау шектеулі",
|
||||||
"alert.unexpected.message": "Бір нәрсе дұрыс болмады.",
|
"alert.unexpected.message": "Бір нәрсе дұрыс болмады.",
|
||||||
"alert.unexpected.title": "Өй!",
|
"alert.unexpected.title": "Өй!",
|
||||||
|
"alt_text_badge.title": "Балама мазмұны",
|
||||||
|
"alt_text_modal.add_alt_text": "Балама мазмұнды қосу",
|
||||||
|
"alt_text_modal.done": "Дайын",
|
||||||
"announcement.announcement": "Хабарландыру",
|
"announcement.announcement": "Хабарландыру",
|
||||||
|
"annual_report.summary.close": "Жабу",
|
||||||
"boost_modal.combo": "Келесіде өткізіп жіберу үшін басыңыз {combo}",
|
"boost_modal.combo": "Келесіде өткізіп жіберу үшін басыңыз {combo}",
|
||||||
"bundle_column_error.retry": "Қайтадан көріңіз",
|
"bundle_column_error.retry": "Қайтадан көріңіз",
|
||||||
"bundle_modal_error.close": "Жабу",
|
"bundle_modal_error.close": "Жабу",
|
||||||
|
|||||||
@ -113,25 +113,38 @@
|
|||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "시각 장애가 있는 사람들을 위한 설명을 작성하세요…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "시각 장애가 있는 사람들을 위한 설명을 작성하세요…",
|
||||||
"alt_text_modal.done": "완료",
|
"alt_text_modal.done": "완료",
|
||||||
"announcement.announcement": "공지사항",
|
"announcement.announcement": "공지사항",
|
||||||
"annual_report.summary.archetype.booster": "연쇄부스트마",
|
"annual_report.announcement.action_build": "랩스토돈 만들기",
|
||||||
"annual_report.summary.archetype.lurker": "은둔자",
|
"annual_report.announcement.action_view": "랩스토돈 보기",
|
||||||
"annual_report.summary.archetype.oracle": "예언자",
|
"annual_report.announcement.title": "{year} 랩스토돈이 도착했습니다",
|
||||||
"annual_report.summary.archetype.pollster": "여론조사원",
|
"annual_report.summary.archetype.booster.desc_public": "{name} 님은 부스트할 게시물을 기다리고 정확한 조준으로 다른 제작자들을 밀어주었습니다.",
|
||||||
"annual_report.summary.archetype.replier": "답글나비",
|
"annual_report.summary.archetype.booster.desc_self": "당신은 부스트할 게시물을 기다리고 정확한 조준으로 다른 제작자들을 밀어주었습니다.",
|
||||||
"annual_report.summary.followers.followers": "팔로워",
|
"annual_report.summary.archetype.booster.name": "궁수",
|
||||||
"annual_report.summary.followers.total": "총 {count}",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.here_it_is": "{year}년 결산입니다:",
|
"annual_report.summary.archetype.lurker.name": "금욕주의자",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "가장 많은 좋아요를 받은 게시물",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} 님은 답글보다 새로운 글을 많이 작성해 마스토돈을 신선하고 미래지향적으로 만들었습니다.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "가장 많이 부스트된 게시물",
|
"annual_report.summary.archetype.oracle.desc_self": "당신은 답글보다 새로운 글을 많이 작성해 마스토돈을 신선하고 미래지향적으로 만들었습니다.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "가장 많은 답글을 받은 게시물",
|
"annual_report.summary.archetype.oracle.name": "예언자",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name} 님의",
|
"annual_report.summary.archetype.pollster.desc_public": "{name} 님은 다른 게시물보다 투표를 많이 만들었고 마스토돈에서 호기심을 일궈냈습니다.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "당신은 다른 게시물보다 투표를 많이 만들었고 마스토돈에서 호기심을 일궈냈습니다.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "호기심쟁이",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} 님은 다른 사람의 게시물에 자주 답글을 남겨 마스토돈에 새로운 논의거리를 만들어냈습니다.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "당신은 다른 사람의 게시물에 자주 답글을 남겨 마스토돈에 새로운 논의거리를 만들어냈습니다.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "나비",
|
||||||
|
"annual_report.summary.archetype.reveal": "내 특성을 확인합니다",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "마스토돈의 일원이 되어주셔서 감사합니다! {year} 년엔 어떤 특성을 부여받는지 알아봅시다.",
|
||||||
|
"annual_report.summary.archetype.title_public": "{name} 님의 특성",
|
||||||
|
"annual_report.summary.archetype.title_self": "당신의 특성",
|
||||||
|
"annual_report.summary.close": "닫기",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "이 게시물은 {count, plural,other {# 번}} 부스트되었습니다.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "이 게시물은 {count, plural,other {# 번}} 마음에 들었습니다.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "이 게시물은 {count, plural, other {# 개}}의 답글을 받았습니다.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "가장 인기있는 게시물",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "가장 많이 사용한 앱",
|
"annual_report.summary.most_used_app.most_used_app": "가장 많이 사용한 앱",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "가장 많이 사용한 해시태그",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "가장 많이 사용한 해시태그",
|
||||||
"annual_report.summary.most_used_hashtag.none": "없음",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "새 게시물",
|
"annual_report.summary.new_posts.new_posts": "새 게시물",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>{domain} 사용자의 상위</topLabel><percentage></percentage><bottomLabel>입니다.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>{domain} 사용자의 상위</topLabel><percentage></percentage><bottomLabel>입니다.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "종부세는 안 걷을게요",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "종부세는 안 걷을게요",
|
||||||
"annual_report.summary.thanks": "마스토돈과 함께 해주셔서 감사합니다!",
|
"annual_report.summary.share_message": "나는 {archetype} 특성을 부여받았습니다!",
|
||||||
"attachments_list.unprocessed": "(처리 안 됨)",
|
"attachments_list.unprocessed": "(처리 안 됨)",
|
||||||
"audio.hide": "소리 숨기기",
|
"audio.hide": "소리 숨기기",
|
||||||
"block_modal.remote_users_caveat": "우리는 {domain} 서버가 당신의 결정을 존중해 주길 부탁할 것입니다. 하지만 몇몇 서버는 차단을 다르게 취급할 수 있기 때문에 규정이 준수되는 것을 보장할 수는 없습니다. 공개 게시물은 로그인 하지 않은 사용자들에게 여전히 보여질 수 있습니다.",
|
"block_modal.remote_users_caveat": "우리는 {domain} 서버가 당신의 결정을 존중해 주길 부탁할 것입니다. 하지만 몇몇 서버는 차단을 다르게 취급할 수 있기 때문에 규정이 준수되는 것을 보장할 수는 없습니다. 공개 게시물은 로그인 하지 않은 사용자들에게 여전히 보여질 수 있습니다.",
|
||||||
@ -513,6 +526,7 @@
|
|||||||
"keyboard_shortcuts.toggle_hidden": "CW로 가려진 텍스트를 표시/비표시",
|
"keyboard_shortcuts.toggle_hidden": "CW로 가려진 텍스트를 표시/비표시",
|
||||||
"keyboard_shortcuts.toggle_sensitivity": "미디어 보이기/숨기기",
|
"keyboard_shortcuts.toggle_sensitivity": "미디어 보이기/숨기기",
|
||||||
"keyboard_shortcuts.toot": "새 게시물 작성",
|
"keyboard_shortcuts.toot": "새 게시물 작성",
|
||||||
|
"keyboard_shortcuts.top": "목록의 최상단으로 이동",
|
||||||
"keyboard_shortcuts.translate": "게시물 번역",
|
"keyboard_shortcuts.translate": "게시물 번역",
|
||||||
"keyboard_shortcuts.unfocus": "작성창에서 포커스 해제",
|
"keyboard_shortcuts.unfocus": "작성창에서 포커스 해제",
|
||||||
"keyboard_shortcuts.up": "리스트에서 위로 이동",
|
"keyboard_shortcuts.up": "리스트에서 위로 이동",
|
||||||
|
|||||||
@ -95,9 +95,6 @@
|
|||||||
"alt_text_modal.change_thumbnail": "Wêneyê biçûk biguherîne",
|
"alt_text_modal.change_thumbnail": "Wêneyê biçûk biguherîne",
|
||||||
"alt_text_modal.done": "Qediya",
|
"alt_text_modal.done": "Qediya",
|
||||||
"announcement.announcement": "Daxuyanî",
|
"announcement.announcement": "Daxuyanî",
|
||||||
"annual_report.summary.followers.followers": "şopîner",
|
|
||||||
"annual_report.summary.followers.total": "{count} tevahî",
|
|
||||||
"annual_report.summary.most_used_hashtag.none": "Ne yek",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "şandiyên nû",
|
"annual_report.summary.new_posts.new_posts": "şandiyên nû",
|
||||||
"attachments_list.unprocessed": "(bêpêvajo)",
|
"attachments_list.unprocessed": "(bêpêvajo)",
|
||||||
"audio.hide": "Dengê veşêre",
|
"audio.hide": "Dengê veşêre",
|
||||||
|
|||||||
@ -109,18 +109,9 @@
|
|||||||
"alt_text_modal.change_thumbnail": "Troka minyatura",
|
"alt_text_modal.change_thumbnail": "Troka minyatura",
|
||||||
"alt_text_modal.done": "Fecho",
|
"alt_text_modal.done": "Fecho",
|
||||||
"announcement.announcement": "Pregon",
|
"announcement.announcement": "Pregon",
|
||||||
"annual_report.summary.archetype.pollster": "El anketero",
|
|
||||||
"annual_report.summary.followers.followers": "suivantes",
|
|
||||||
"annual_report.summary.followers.total": "{count} en total",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "la puvlikasyon mas favoritada",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "la puvlikasyon mas repartajada",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "la puvlikasyon kon mas repuestas",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "de {name}",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "la aplikasyon mas uzada",
|
"annual_report.summary.most_used_app.most_used_app": "la aplikasyon mas uzada",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "la etiketa mas uzada",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "la etiketa mas uzada",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Dinguno",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "puvlikasyones muevas",
|
"annual_report.summary.new_posts.new_posts": "puvlikasyones muevas",
|
||||||
"annual_report.summary.thanks": "Mersi por ser parte de Mastodon!",
|
|
||||||
"attachments_list.unprocessed": "(no prosesado)",
|
"attachments_list.unprocessed": "(no prosesado)",
|
||||||
"audio.hide": "Eskonde audio",
|
"audio.hide": "Eskonde audio",
|
||||||
"block_modal.show_less": "Amostra manko",
|
"block_modal.show_less": "Amostra manko",
|
||||||
|
|||||||
@ -117,26 +117,12 @@
|
|||||||
"annual_report.announcement.action_view": "Peržiūrėti mano Wrapstodon",
|
"annual_report.announcement.action_view": "Peržiūrėti mano Wrapstodon",
|
||||||
"annual_report.announcement.description": "Sužinokite daugiau apie savo aktyvumą Mastodon\"e per pastaruosius metus.",
|
"annual_report.announcement.description": "Sužinokite daugiau apie savo aktyvumą Mastodon\"e per pastaruosius metus.",
|
||||||
"annual_report.announcement.title": "Wrapstodon {year} jau čia",
|
"annual_report.announcement.title": "Wrapstodon {year} jau čia",
|
||||||
"annual_report.summary.archetype.booster": "Šaunus medžiotojas",
|
|
||||||
"annual_report.summary.archetype.lurker": "Stebėtojas",
|
|
||||||
"annual_report.summary.archetype.oracle": "Vydūnas",
|
|
||||||
"annual_report.summary.archetype.pollster": "Apklausos rengėjas",
|
|
||||||
"annual_report.summary.archetype.replier": "Socialinis drugelis",
|
|
||||||
"annual_report.summary.followers.followers": "sekėjai (-ų)",
|
|
||||||
"annual_report.summary.followers.total": "iš viso {count}",
|
|
||||||
"annual_report.summary.here_it_is": "Štai jūsų {year} apžvalga:",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "labiausiai pamėgtas įrašas",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "labiausiai pasidalintas įrašas",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "įrašas su daugiausiai atsakymų",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "labiausiai naudota programa",
|
"annual_report.summary.most_used_app.most_used_app": "labiausiai naudota programa",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "labiausiai naudota grotažymė",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "labiausiai naudota grotažymė",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Nieko",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "nauji įrašai",
|
"annual_report.summary.new_posts.new_posts": "nauji įrašai",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Tai reiškia, kad esate tarp</topLabel><percentage></percentage><bottomLabel>populiariausių {domain} naudotojų.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Tai reiškia, kad esate tarp</topLabel><percentage></percentage><bottomLabel>populiariausių {domain} naudotojų.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Mes nesakysime Bernie.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Mes nesakysime Bernie.",
|
||||||
"annual_report.summary.share_message": "Aš gavau „{archetype}“!",
|
"annual_report.summary.share_message": "Aš gavau „{archetype}“!",
|
||||||
"annual_report.summary.thanks": "Dėkojame, kad esate „Mastodon“ dalis!",
|
|
||||||
"attachments_list.unprocessed": "(neapdorotas)",
|
"attachments_list.unprocessed": "(neapdorotas)",
|
||||||
"audio.hide": "Slėpti garsą",
|
"audio.hide": "Slėpti garsą",
|
||||||
"block_modal.remote_users_caveat": "Paprašysime serverio {domain} gerbti tavo sprendimą. Tačiau atitiktis negarantuojama, nes kai kurie serveriai gali skirtingai tvarkyti blokavimus. Vieši įrašai vis tiek gali būti matomi neprisijungusiems naudotojams.",
|
"block_modal.remote_users_caveat": "Paprašysime serverio {domain} gerbti tavo sprendimą. Tačiau atitiktis negarantuojama, nes kai kurie serveriai gali skirtingai tvarkyti blokavimus. Vieši įrašai vis tiek gali būti matomi neprisijungusiems naudotojams.",
|
||||||
|
|||||||
@ -113,23 +113,11 @@
|
|||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Aprakstīt šo cilvēkiem ar redzes traucējumiem…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "Aprakstīt šo cilvēkiem ar redzes traucējumiem…",
|
||||||
"alt_text_modal.done": "Gatavs",
|
"alt_text_modal.done": "Gatavs",
|
||||||
"announcement.announcement": "Paziņojums",
|
"announcement.announcement": "Paziņojums",
|
||||||
"annual_report.summary.archetype.lurker": "Glūņa",
|
|
||||||
"annual_report.summary.archetype.oracle": "Orākuls",
|
|
||||||
"annual_report.summary.archetype.replier": "Sabiedriskais tauriņš",
|
|
||||||
"annual_report.summary.followers.followers": "sekotāji",
|
|
||||||
"annual_report.summary.followers.total": "pavisam {count}",
|
|
||||||
"annual_report.summary.here_it_is": "Šeit ir {year}. gada pārskats:",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "izlasēm visvairāk pievienotais ieraksts",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "vispastiprinātākais ieraksts",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "ieraksts ar vislielāko atbilžu skaitu",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "visizmantotākā lietotne",
|
"annual_report.summary.most_used_app.most_used_app": "visizmantotākā lietotne",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "visizmantotākais tēmturis",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "visizmantotākais tēmturis",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Nav",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "jauni ieraksti",
|
"annual_report.summary.new_posts.new_posts": "jauni ieraksti",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Tas ievieto Tevi virsējos</topLabel><percentage></percentage><bottomLabel>no {domain} lietotājiem.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Tas ievieto Tevi virsējos</topLabel><percentage></percentage><bottomLabel>no {domain} lietotājiem.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Mēs neteiksim Bērnijam.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Mēs neteiksim Bērnijam.",
|
||||||
"annual_report.summary.thanks": "Paldies, ka esi daļa no Mastodon!",
|
|
||||||
"attachments_list.unprocessed": "(neapstrādāti)",
|
"attachments_list.unprocessed": "(neapstrādāti)",
|
||||||
"audio.hide": "Slēpt audio",
|
"audio.hide": "Slēpt audio",
|
||||||
"block_modal.remote_users_caveat": "Mēs lūgsim serverim {domain} ņemt vērā Tavu lēmumu. Tomēr sadarbība nav garantēta, jo atsevišķi serveri bloķēšanu var apstrādāt citādi. Publiski ieraksti, iespējams, joprojām būs redzami lietotājiem, kuri nav pieteikušies.",
|
"block_modal.remote_users_caveat": "Mēs lūgsim serverim {domain} ņemt vērā Tavu lēmumu. Tomēr sadarbība nav garantēta, jo atsevišķi serveri bloķēšanu var apstrādāt citādi. Publiski ieraksti, iespējams, joprojām būs redzami lietotājiem, kuri nav pieteikušies.",
|
||||||
@ -244,7 +232,9 @@
|
|||||||
"confirmations.missing_alt_text.title": "Pievienot aprakstošo tekstu?",
|
"confirmations.missing_alt_text.title": "Pievienot aprakstošo tekstu?",
|
||||||
"confirmations.mute.confirm": "Apklusināt",
|
"confirmations.mute.confirm": "Apklusināt",
|
||||||
"confirmations.private_quote_notify.cancel": "Atgriezties pie labošanas",
|
"confirmations.private_quote_notify.cancel": "Atgriezties pie labošanas",
|
||||||
|
"confirmations.private_quote_notify.confirm": "Publicēt ierakstu",
|
||||||
"confirmations.private_quote_notify.do_not_show_again": "Nerādīt vairāk šo paziņojumu",
|
"confirmations.private_quote_notify.do_not_show_again": "Nerādīt vairāk šo paziņojumu",
|
||||||
|
"confirmations.private_quote_notify.title": "Dalīties ar sekotājiem un pieminētajiem lietotājiem?",
|
||||||
"confirmations.quiet_post_quote_info.got_it": "Sapratu",
|
"confirmations.quiet_post_quote_info.got_it": "Sapratu",
|
||||||
"confirmations.redraft.confirm": "Dzēst un pārrakstīt",
|
"confirmations.redraft.confirm": "Dzēst un pārrakstīt",
|
||||||
"confirmations.redraft.message": "Vai tiešām vēlies izdzēst šo ierakstu un veidot jaunu tā uzmetumu? Pievienošana izlasēs un pastiprinājumi tiks zaudēti, un sākotnējā ieraksta atbildes paliks bez saiknes ar to.",
|
"confirmations.redraft.message": "Vai tiešām vēlies izdzēst šo ierakstu un veidot jaunu tā uzmetumu? Pievienošana izlasēs un pastiprinājumi tiks zaudēti, un sākotnējā ieraksta atbildes paliks bez saiknes ar to.",
|
||||||
@ -423,6 +413,9 @@
|
|||||||
"home.pending_critical_update.title": "Ir pieejams būtisks drošības atjauninājums.",
|
"home.pending_critical_update.title": "Ir pieejams būtisks drošības atjauninājums.",
|
||||||
"home.show_announcements": "Rādīt paziņojumus",
|
"home.show_announcements": "Rādīt paziņojumus",
|
||||||
"ignore_notifications_modal.ignore": "Neņemt vērā paziņojumus",
|
"ignore_notifications_modal.ignore": "Neņemt vērā paziņojumus",
|
||||||
|
"ignore_notifications_modal.limited_accounts_title": "Neņemt vērā paziņojumus no moderētiem kontiem?",
|
||||||
|
"ignore_notifications_modal.new_accounts_title": "Neņemt vērā paziņojumus no jauniem kontiem?",
|
||||||
|
"ignore_notifications_modal.not_followers_title": "Neņemt vērā paziņojumus no cilvēkiem, kas tev neseko?",
|
||||||
"ignore_notifications_modal.not_following_title": "Neņemt vērā paziņojumus no cilvēkiem, kuriem neseko?",
|
"ignore_notifications_modal.not_following_title": "Neņemt vērā paziņojumus no cilvēkiem, kuriem neseko?",
|
||||||
"info_button.label": "Palīdzība",
|
"info_button.label": "Palīdzība",
|
||||||
"interaction_modal.go": "Aiziet",
|
"interaction_modal.go": "Aiziet",
|
||||||
@ -457,6 +450,7 @@
|
|||||||
"keyboard_shortcuts.open_media": "Atvērt multividi",
|
"keyboard_shortcuts.open_media": "Atvērt multividi",
|
||||||
"keyboard_shortcuts.pinned": "Atvērt piesprausto ierakstu sarakstu",
|
"keyboard_shortcuts.pinned": "Atvērt piesprausto ierakstu sarakstu",
|
||||||
"keyboard_shortcuts.profile": "Atvērt autora profilu",
|
"keyboard_shortcuts.profile": "Atvērt autora profilu",
|
||||||
|
"keyboard_shortcuts.quote": "Citēt ierakstu",
|
||||||
"keyboard_shortcuts.reply": "Atbildēt",
|
"keyboard_shortcuts.reply": "Atbildēt",
|
||||||
"keyboard_shortcuts.requests": "Atvērt sekošanas pieprasījumu sarakstu",
|
"keyboard_shortcuts.requests": "Atvērt sekošanas pieprasījumu sarakstu",
|
||||||
"keyboard_shortcuts.search": "Fokusēt meklēšanas joslu",
|
"keyboard_shortcuts.search": "Fokusēt meklēšanas joslu",
|
||||||
|
|||||||
@ -94,25 +94,11 @@
|
|||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Terangkan untuk OKU penglihatan…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "Terangkan untuk OKU penglihatan…",
|
||||||
"alt_text_modal.done": "Selesai",
|
"alt_text_modal.done": "Selesai",
|
||||||
"announcement.announcement": "Pengumuman",
|
"announcement.announcement": "Pengumuman",
|
||||||
"annual_report.summary.archetype.booster": "Si pencapap",
|
|
||||||
"annual_report.summary.archetype.lurker": "Si penghendap",
|
|
||||||
"annual_report.summary.archetype.oracle": "Si penilik",
|
|
||||||
"annual_report.summary.archetype.pollster": "Si peninjau",
|
|
||||||
"annual_report.summary.archetype.replier": "Si peramah",
|
|
||||||
"annual_report.summary.followers.followers": "pengikut",
|
|
||||||
"annual_report.summary.followers.total": "sebanyak {count}",
|
|
||||||
"annual_report.summary.here_it_is": "Ini ulasan {year} anda:",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "hantaran paling disukai ramai",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "hantaran paling digalak ramai",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "hantaran paling dibalas ramai",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "oleh",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "aplikasi paling banyak digunakan",
|
"annual_report.summary.most_used_app.most_used_app": "aplikasi paling banyak digunakan",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "tanda pagar paling banyak digunakan",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "tanda pagar paling banyak digunakan",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Tiada",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "hantaran baharu",
|
"annual_report.summary.new_posts.new_posts": "hantaran baharu",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Anda berkedudukan</topLabel><percentage></percentage><bottomLabel> pengguna {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Anda berkedudukan</topLabel><percentage></percentage><bottomLabel> pengguna {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Rahsia anda selamat bersama kami. ;)",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Rahsia anda selamat bersama kami. ;)",
|
||||||
"annual_report.summary.thanks": "Terima kasih kerana setia bersama Mastodon!",
|
|
||||||
"attachments_list.unprocessed": "(belum diproses)",
|
"attachments_list.unprocessed": "(belum diproses)",
|
||||||
"audio.hide": "Sembunyikan audio",
|
"audio.hide": "Sembunyikan audio",
|
||||||
"block_modal.remote_users_caveat": "Kami akan meminta pelayan {domain} untuk menghormati keputusan anda. Bagaimanapun, pematuhan tidak dijamin kerana ada pelayan yang mungkin menangani sekatan dengan cara berbeza. Hantaran awam mungkin masih tampak kepada pengguna yang tidak log masuk.",
|
"block_modal.remote_users_caveat": "Kami akan meminta pelayan {domain} untuk menghormati keputusan anda. Bagaimanapun, pematuhan tidak dijamin kerana ada pelayan yang mungkin menangani sekatan dengan cara berbeza. Hantaran awam mungkin masih tampak kepada pengguna yang tidak log masuk.",
|
||||||
|
|||||||
@ -114,29 +114,50 @@
|
|||||||
"alt_text_modal.done": "做好ah",
|
"alt_text_modal.done": "做好ah",
|
||||||
"announcement.announcement": "公告",
|
"announcement.announcement": "公告",
|
||||||
"annual_report.announcement.action_build": "建立我ê Wrapstodon",
|
"annual_report.announcement.action_build": "建立我ê Wrapstodon",
|
||||||
|
"annual_report.announcement.action_dismiss": "毋免,多謝。",
|
||||||
"annual_report.announcement.action_view": "看我ê Wrapstodon",
|
"annual_report.announcement.action_view": "看我ê Wrapstodon",
|
||||||
"annual_report.announcement.description": "發現其他關係lí佇最近tsi̍t年參與Mastodon ê狀況。",
|
"annual_report.announcement.description": "發現其他關係lí佇最近tsi̍t年參與Mastodon ê狀況。",
|
||||||
"annual_report.announcement.title": "Wrapstodon {year} 已經kàu ah",
|
"annual_report.announcement.title": "Wrapstodon {year} 已經kàu ah",
|
||||||
"annual_report.summary.archetype.booster": "追求趣味ê",
|
"annual_report.nav_item.badge": "新ê",
|
||||||
"annual_report.summary.archetype.lurker": "有讀無PO ê",
|
"annual_report.shared_page.donate": "寄付",
|
||||||
"annual_report.summary.archetype.oracle": "先知",
|
"annual_report.shared_page.footer": "由 Mastodon 團隊用 {heart} 產生",
|
||||||
"annual_report.summary.archetype.pollster": "愛發動投票ê",
|
"annual_report.summary.archetype.booster.desc_public": "{name} 不斷走tshuē通轉送 ê PO文,靠完美ê對千,放大其他ê創作者。",
|
||||||
"annual_report.summary.archetype.replier": "社交ê蝴蝶",
|
"annual_report.summary.archetype.booster.desc_self": " Lí不斷走tshuē通轉送 ê PO文,靠完美ê對千,放大其他ê創作者。",
|
||||||
"annual_report.summary.followers.followers": "跟tuè lí ê",
|
"annual_report.summary.archetype.booster.name": "射手",
|
||||||
"annual_report.summary.followers.total": "Lóng總有 {count} ê",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.here_it_is": "下kha是lí {year} 年ê回顧:",
|
"annual_report.summary.archetype.lurker.desc_public": "Guán知 {name} 捌佇某物所在,用伊恬靜ê方法享受Mastodon。",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "Hōo足tsē lâng收藏ê PO文",
|
"annual_report.summary.archetype.lurker.desc_self": "Guán知lí捌佇某物所在,用li恬靜ê方法享受Mastodon。",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "Hōo足tsē lâng轉ê PO文",
|
"annual_report.summary.archetype.lurker.name": "Stoic主義者",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "有上tsē回應ê PO文",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} 發表ê新ê PO文較tsē回應,保持 Mastodon tshinn-tshioh kap面對未來。",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name} ê",
|
"annual_report.summary.archetype.oracle.desc_self": "Lí發表ê新ê PO文較tsē回應,保持 Mastodon tshinn-tshioh kap面對未來。",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "先知",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name} 建立投票較tsē其他PO文類型,佇Mastodon培養好奇。",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Lí建立投票較tsē其他PO文類型,佇Mastodon培養好奇。",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "思考者",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} 定定應別lâng ê PO文,用新ê討論kā Mastodon授粉。",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "You 定定應別lâng ê PO文,用新ê討論kā Mastodon授粉。",
|
||||||
|
"annual_report.summary.archetype.replier.name": "Ia̍h仔",
|
||||||
|
"annual_report.summary.archetype.reveal": "顯露我ê原形",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "感謝lí成做Mastodon ê一部份!Tsit-má tshuē出lí佇 {year} 年表現ê原形。",
|
||||||
|
"annual_report.summary.archetype.title_public": "{name} ê原形",
|
||||||
|
"annual_report.summary.archetype.title_self": "Lí ê原形",
|
||||||
|
"annual_report.summary.close": "關",
|
||||||
|
"annual_report.summary.copy_link": "Khóo-pih連結",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, other {新ê跟tuè ê}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Tsit篇PO文予lâng轉送 {count, plural, other {# kái}}。",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Tsit篇PO文予lâng收藏 {count, plural, other {# kái}}。",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Tsit篇PO文得著 {count, plural, other {# 篇回應}}。",
|
||||||
|
"annual_report.summary.highlighted_post.title": "上hang ê PO文",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "上tsē lâng用ê app",
|
"annual_report.summary.most_used_app.most_used_app": "上tsē lâng用ê app",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "上tsia̍p用ê hashtag",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "上tsia̍p用ê hashtag",
|
||||||
"annual_report.summary.most_used_hashtag.none": "無",
|
"annual_report.summary.most_used_hashtag.used_count": "Lí佇{count, plural, other { # 篇PO文}}內包含tsit ê hashtag。",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} 佇{count, plural, other { # 篇PO文}}內包含tsit ê hashtag。",
|
||||||
"annual_report.summary.new_posts.new_posts": "新ê PO文",
|
"annual_report.summary.new_posts.new_posts": "新ê PO文",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Tse 予lí變做 {domain} ê用戶ê </topLabel><percentage></percentage><bottomLabel></bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Tse 予lí變做 {domain} ê用戶ê </topLabel><percentage></percentage><bottomLabel></bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Gún bē kā Bernie講。",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Gún bē kā Bernie講。",
|
||||||
|
"annual_report.summary.share_elsewhere": "分享kàu別位",
|
||||||
"annual_report.summary.share_message": "我得著 {archetype} ê典型!",
|
"annual_report.summary.share_message": "我得著 {archetype} ê典型!",
|
||||||
"annual_report.summary.thanks": "多謝成做Mastodon ê成員!",
|
"annual_report.summary.share_on_mastodon": "佇Mastodon分享",
|
||||||
"attachments_list.unprocessed": "(Iáu bē處理)",
|
"attachments_list.unprocessed": "(Iáu bē處理)",
|
||||||
"audio.hide": "Tshàng聲音",
|
"audio.hide": "Tshàng聲音",
|
||||||
"block_modal.remote_users_caveat": "Guán ē要求服侍器 {domain} 尊重lí ê決定。但是bô法度保證ta̍k ê服侍器lóng遵守,因為tsi̍t-kuá服侍器huân-sè用別款方法處理封鎖。公開ê PO文可能iáu是ē hōo bô登入ê用者看著。",
|
"block_modal.remote_users_caveat": "Guán ē要求服侍器 {domain} 尊重lí ê決定。但是bô法度保證ta̍k ê服侍器lóng遵守,因為tsi̍t-kuá服侍器huân-sè用別款方法處理封鎖。公開ê PO文可能iáu是ē hōo bô登入ê用者看著。",
|
||||||
|
|||||||
@ -77,8 +77,6 @@
|
|||||||
"alert.unexpected.message": "एउटा अनपेक्षित त्रुटि भयो।",
|
"alert.unexpected.message": "एउटा अनपेक्षित त्रुटि भयो।",
|
||||||
"alt_text_modal.cancel": "रद्द गर्नुहोस्",
|
"alt_text_modal.cancel": "रद्द गर्नुहोस्",
|
||||||
"announcement.announcement": "घोषणा",
|
"announcement.announcement": "घोषणा",
|
||||||
"annual_report.summary.followers.followers": "फलोअरहरु",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "सबैभन्दा बढि बूस्ट गरिएको पोस्ट",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "नयाँ पोस्टहरू",
|
"annual_report.summary.new_posts.new_posts": "नयाँ पोस्टहरू",
|
||||||
"block_modal.remote_users_caveat": "हामी सर्भर {domain} लाई तपाईंको निर्णयको सम्मान गर्न सोध्नेछौं। तर, हामी अनुपालनको ग्यारेन्टी दिन सक्दैनौं किनभने केही सर्भरहरूले ब्लकहरू फरक रूपमा ह्यान्डल गर्न सक्छन्। सार्वजनिक पोस्टहरू लग इन नभएका प्रयोगकर्ताहरूले देख्न सक्छन्।",
|
"block_modal.remote_users_caveat": "हामी सर्भर {domain} लाई तपाईंको निर्णयको सम्मान गर्न सोध्नेछौं। तर, हामी अनुपालनको ग्यारेन्टी दिन सक्दैनौं किनभने केही सर्भरहरूले ब्लकहरू फरक रूपमा ह्यान्डल गर्न सक्छन्। सार्वजनिक पोस्टहरू लग इन नभएका प्रयोगकर्ताहरूले देख्न सक्छन्।",
|
||||||
"block_modal.show_less": "कम देखाउनुहोस्",
|
"block_modal.show_less": "कम देखाउनुहोस्",
|
||||||
|
|||||||
@ -114,29 +114,51 @@
|
|||||||
"alt_text_modal.done": "Klaar",
|
"alt_text_modal.done": "Klaar",
|
||||||
"announcement.announcement": "Mededeling",
|
"announcement.announcement": "Mededeling",
|
||||||
"annual_report.announcement.action_build": "Bouw mijn Wrapstodon",
|
"annual_report.announcement.action_build": "Bouw mijn Wrapstodon",
|
||||||
|
"annual_report.announcement.action_dismiss": "Nee, bedankt",
|
||||||
"annual_report.announcement.action_view": "Bekijk mijn Wrapstodon",
|
"annual_report.announcement.action_view": "Bekijk mijn Wrapstodon",
|
||||||
"annual_report.announcement.description": "Ontdek meer over jouw engagement op Mastodon over het afgelopen jaar.",
|
"annual_report.announcement.description": "Ontdek meer over jouw engagement op Mastodon over het afgelopen jaar.",
|
||||||
"annual_report.announcement.title": "Wrapstodon {year} is gearriveerd",
|
"annual_report.announcement.title": "Wrapstodon {year} is gearriveerd",
|
||||||
"annual_report.summary.archetype.booster": "De cool-hunter",
|
"annual_report.nav_item.badge": "Nieuw",
|
||||||
"annual_report.summary.archetype.lurker": "De lurker",
|
"annual_report.shared_page.donate": "Doneren",
|
||||||
"annual_report.summary.archetype.oracle": "Het orakel",
|
"annual_report.shared_page.footer": "Met {heart} gegenereerd door het Mastodonteam",
|
||||||
"annual_report.summary.archetype.pollster": "De opiniepeiler",
|
"annual_report.shared_page.footer_server_info": "{username} gebruikt {domain}, een van de vele door Mastodon mogelijk gemaakte gemeenschappen.",
|
||||||
"annual_report.summary.archetype.replier": "De sociale vlinder",
|
"annual_report.summary.archetype.booster.desc_public": "{name} bleef op jacht naar berichten om te kunnen boosten, waardoor het geluid van andere gebruikers werd versterkt.",
|
||||||
"annual_report.summary.followers.followers": "volgers",
|
"annual_report.summary.archetype.booster.desc_self": "Jij bleef op jacht naar berichten om te kunnen boosten, waardoor je het geluid van andere gebruikers versterkte.",
|
||||||
"annual_report.summary.followers.total": "totaal {count}",
|
"annual_report.summary.archetype.booster.name": "De Boogschutter",
|
||||||
"annual_report.summary.here_it_is": "Hier is jouw terugblik op {year}:",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "bericht met de meeste favorieten",
|
"annual_report.summary.archetype.lurker.desc_public": "We weten dat {name} ergens in stilte van Mastodon aan het genieten was.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "bericht met de meeste boosts",
|
"annual_report.summary.archetype.lurker.desc_self": "We weten dat je ergens in stilte van Mastodon aan het genieten was.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "bericht met de meeste reacties",
|
"annual_report.summary.archetype.lurker.name": "De Stoïcijn",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}'s",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} heeft meer nieuwe berichten dan reacties geplaatst, waardoor Mastodon fris en toekomstgericht blijft.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Je hebt meer nieuwe berichten dan reacties geplaatst, waardoor Mastodon fris en toekomstgericht blijft.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "Het Orakel",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name} heeft meer polls aangemaakt dan andere soorten berichten, en daarmee de nieuwsgierigheid op Mastodon gecultiveerd.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Je hebt meer polls aangemaakt dan andere soorten berichten, en daarmee de nieuwsgierigheid op Mastodon gecultiveerd.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "De Dromer",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} reageerde regelmatig op berichten van andere mensen, waardoor nieuwe discussies op Mastodon tot bloei kwamen.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Je reageerde regelmatig op berichten van andere mensen, waardoor nieuwe discussies op Mastodon tot bloei kwamen.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "De Vlinder",
|
||||||
|
"annual_report.summary.archetype.reveal": "Onthul mijn archetype",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Bedankt dat je deel uitmaakt van Mastodon! Tijd om te ontdekken welk archetype je in {year} belichaamde.",
|
||||||
|
"annual_report.summary.archetype.title_public": "Het archetype van {name}",
|
||||||
|
"annual_report.summary.archetype.title_self": "Jouw archetype",
|
||||||
|
"annual_report.summary.close": "Sluiten",
|
||||||
|
"annual_report.summary.copy_link": "Link kopiëren",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {nieuwe volger} other {nieuwe volgers}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Dit bericht is {count, plural, one {één keer} other {# keer}} geboost.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Dit bericht is {count, plural, one {één keer} other {# keer}} als favoriet gemarkeerd.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Dit bericht heeft {count, plural, one {één reactie} other {# reacties}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Meest populaire berichten",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "meest gebruikte app",
|
"annual_report.summary.most_used_app.most_used_app": "meest gebruikte app",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "meest gebruikte hashtag",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "meest gebruikte hashtag",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Geen",
|
"annual_report.summary.most_used_hashtag.used_count": "Je hebt deze hashtag in {count, plural, one{één bericht} other {# berichten}} gebruikt.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} heeft deze hashtag in {count, plural, one {één bericht} other {# berichten}} gebruikt.",
|
||||||
"annual_report.summary.new_posts.new_posts": "nieuwe berichten",
|
"annual_report.summary.new_posts.new_posts": "nieuwe berichten",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Hiermee behoor je tot de top</topLabel><percentage></percentage><bottomLabel> van {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Hiermee behoor je tot de top</topLabel><percentage></percentage><bottomLabel> van {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "We zullen Bernie niets vertellen.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "We zullen Bernie niets vertellen.",
|
||||||
|
"annual_report.summary.share_elsewhere": "Ergens anders delen",
|
||||||
"annual_report.summary.share_message": "Ik heb het archetype {archetype}!",
|
"annual_report.summary.share_message": "Ik heb het archetype {archetype}!",
|
||||||
"annual_report.summary.thanks": "Bedankt dat je deel uitmaakt van Mastodon!",
|
"annual_report.summary.share_on_mastodon": "Op Mastodon delen",
|
||||||
"attachments_list.unprocessed": "(niet verwerkt)",
|
"attachments_list.unprocessed": "(niet verwerkt)",
|
||||||
"audio.hide": "Audio verbergen",
|
"audio.hide": "Audio verbergen",
|
||||||
"block_modal.remote_users_caveat": "We vragen de server {domain} om je besluit te respecteren. Het naleven hiervan is echter niet gegarandeerd, omdat sommige servers blokkades anders kunnen interpreteren. Openbare berichten zijn mogelijk nog steeds zichtbaar voor niet-ingelogde gebruikers.",
|
"block_modal.remote_users_caveat": "We vragen de server {domain} om je besluit te respecteren. Het naleven hiervan is echter niet gegarandeerd, omdat sommige servers blokkades anders kunnen interpreteren. Openbare berichten zijn mogelijk nog steeds zichtbaar voor niet-ingelogde gebruikers.",
|
||||||
@ -419,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "Wie te volgen",
|
"follow_suggestions.who_to_follow": "Wie te volgen",
|
||||||
"followed_tags": "Gevolgde hashtags",
|
"followed_tags": "Gevolgde hashtags",
|
||||||
"footer.about": "Over",
|
"footer.about": "Over",
|
||||||
|
"footer.about_mastodon": "Over Mastodon",
|
||||||
|
"footer.about_server": "Over {domain}",
|
||||||
"footer.about_this_server": "Over",
|
"footer.about_this_server": "Over",
|
||||||
"footer.directory": "Gebruikersgids",
|
"footer.directory": "Gebruikersgids",
|
||||||
"footer.get_app": "App downloaden",
|
"footer.get_app": "App downloaden",
|
||||||
|
|||||||
@ -117,25 +117,11 @@
|
|||||||
"annual_report.announcement.action_view": "Sjå min Årstodon",
|
"annual_report.announcement.action_view": "Sjå min Årstodon",
|
||||||
"annual_report.announcement.description": "Sjå meir om kva du har gjort på Mastodon siste året.",
|
"annual_report.announcement.description": "Sjå meir om kva du har gjort på Mastodon siste året.",
|
||||||
"annual_report.announcement.title": "Årstodon {year} er her",
|
"annual_report.announcement.title": "Årstodon {year} er her",
|
||||||
"annual_report.summary.archetype.booster": "Den som jaktar på noko kult",
|
|
||||||
"annual_report.summary.archetype.lurker": "Den som heng på hjørnet",
|
|
||||||
"annual_report.summary.archetype.oracle": "Orakelet",
|
|
||||||
"annual_report.summary.archetype.pollster": "Meiningsmålaren",
|
|
||||||
"annual_report.summary.archetype.replier": "Den sosiale sumarfuglen",
|
|
||||||
"annual_report.summary.followers.followers": "fylgjarar",
|
|
||||||
"annual_report.summary.followers.total": "{count} i alt",
|
|
||||||
"annual_report.summary.here_it_is": "Her er eit gjensyn med {year}:",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "det mest omtykte innlegget",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "det mest framheva innlegget",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "innlegget med flest svar",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "som {name} laga",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "mest brukte app",
|
"annual_report.summary.most_used_app.most_used_app": "mest brukte app",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "mest brukte emneknagg",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "mest brukte emneknagg",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Ingen",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "nye innlegg",
|
"annual_report.summary.new_posts.new_posts": "nye innlegg",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Du er av dei</topLabel><percentage></percentage><bottomLabel>ivrigaste brukarane på {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Du er av dei</topLabel><percentage></percentage><bottomLabel>ivrigaste brukarane på {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Ikkje eit ord til pressa.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Ikkje eit ord til pressa.",
|
||||||
"annual_report.summary.thanks": "Takk for at du er med i Mastodon!",
|
|
||||||
"attachments_list.unprocessed": "(ubehandla)",
|
"attachments_list.unprocessed": "(ubehandla)",
|
||||||
"audio.hide": "Gøym lyd",
|
"audio.hide": "Gøym lyd",
|
||||||
"block_modal.remote_users_caveat": "Me vil be tenaren {domain} om å respektera di avgjerd. Me kan ikkje garantera at det vert gjort, sidan nokre tenarar kan handtera blokkering ulikt. Offentlege innlegg kan framleis vera synlege for ikkje-innlogga brukarar.",
|
"block_modal.remote_users_caveat": "Me vil be tenaren {domain} om å respektera di avgjerd. Me kan ikkje garantera at det vert gjort, sidan nokre tenarar kan handtera blokkering ulikt. Offentlege innlegg kan framleis vera synlege for ikkje-innlogga brukarar.",
|
||||||
|
|||||||
@ -107,25 +107,11 @@
|
|||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Beskriv dette for folk med synsproblemer…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "Beskriv dette for folk med synsproblemer…",
|
||||||
"alt_text_modal.done": "Ferdig",
|
"alt_text_modal.done": "Ferdig",
|
||||||
"announcement.announcement": "Kunngjøring",
|
"announcement.announcement": "Kunngjøring",
|
||||||
"annual_report.summary.archetype.booster": "Den iskalde jeger",
|
|
||||||
"annual_report.summary.archetype.lurker": "Det snikende ullteppe",
|
|
||||||
"annual_report.summary.archetype.oracle": "Allviteren",
|
|
||||||
"annual_report.summary.archetype.pollster": "Meningsmåleren",
|
|
||||||
"annual_report.summary.archetype.replier": "Festens midtpunkt",
|
|
||||||
"annual_report.summary.followers.followers": "følgere",
|
|
||||||
"annual_report.summary.followers.total": "{count} tilsammen",
|
|
||||||
"annual_report.summary.here_it_is": "Her er ditt {year} ditt sett sammlet:",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "mest likte innlegg",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "mest opphøyde innlegg",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "innlegg med de fleste tilbakemeldinger",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "mest brukte applikasjoner",
|
"annual_report.summary.most_used_app.most_used_app": "mest brukte applikasjoner",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "mest brukte evne knagg",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "mest brukte evne knagg",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Ingen",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "nye innlegg",
|
"annual_report.summary.new_posts.new_posts": "nye innlegg",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Det gjør at du er i topp</topLabel><percentage></percentage><bottomLabel>av brukere på {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Det gjør at du er i topp</topLabel><percentage></percentage><bottomLabel>av brukere på {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Vi skal ikke si noe til Bernie.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Vi skal ikke si noe til Bernie.",
|
||||||
"annual_report.summary.thanks": "Takk for at du er med på Mastodon!",
|
|
||||||
"attachments_list.unprocessed": "(ubehandlet)",
|
"attachments_list.unprocessed": "(ubehandlet)",
|
||||||
"audio.hide": "Skjul lyd",
|
"audio.hide": "Skjul lyd",
|
||||||
"block_modal.remote_users_caveat": "Vi vil be serveren {domain} om å respektere din beslutning. Det er imidlertid ingen garanti at det blir overholdt, siden noen servere kan håndtere blokkeringer på forskjellig vis. Offentlige innlegg kan fortsatt være synlige for ikke-innloggede brukere.",
|
"block_modal.remote_users_caveat": "Vi vil be serveren {domain} om å respektere din beslutning. Det er imidlertid ingen garanti at det blir overholdt, siden noen servere kan håndtere blokkeringer på forskjellig vis. Offentlige innlegg kan fortsatt være synlige for ikke-innloggede brukere.",
|
||||||
|
|||||||
@ -91,8 +91,6 @@
|
|||||||
"alt_text_modal.change_thumbnail": "Cambiar de miniatura",
|
"alt_text_modal.change_thumbnail": "Cambiar de miniatura",
|
||||||
"alt_text_modal.done": "Acabat",
|
"alt_text_modal.done": "Acabat",
|
||||||
"announcement.announcement": "Anóncia",
|
"announcement.announcement": "Anóncia",
|
||||||
"annual_report.summary.followers.followers": "seguidors",
|
|
||||||
"annual_report.summary.followers.total": "{count} en total",
|
|
||||||
"attachments_list.unprocessed": "(pas tractat)",
|
"attachments_list.unprocessed": "(pas tractat)",
|
||||||
"audio.hide": "Amagar àudio",
|
"audio.hide": "Amagar àudio",
|
||||||
"block_modal.show_less": "Ne veire mens",
|
"block_modal.show_less": "Ne veire mens",
|
||||||
|
|||||||
@ -85,16 +85,8 @@
|
|||||||
"alt_text_modal.cancel": "ਰੱਦ ਕਰੋ",
|
"alt_text_modal.cancel": "ਰੱਦ ਕਰੋ",
|
||||||
"alt_text_modal.done": "ਮੁਕੰਮਲ",
|
"alt_text_modal.done": "ਮੁਕੰਮਲ",
|
||||||
"announcement.announcement": "ਹੋਕਾ",
|
"announcement.announcement": "ਹੋਕਾ",
|
||||||
"annual_report.summary.followers.followers": "ਫ਼ਾਲੋਅਰ",
|
|
||||||
"annual_report.summary.followers.total": "{count} ਕੁੱਲ",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "ਸਭ ਤੋਂ ਵੱਧ ਪਸੰਦ ਕੀਤੀ ਪੋਸਟ",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "ਸਭ ਤੋਂ ਵੱਧ ਬੂਸਟ ਕੀਤੀ ਪੋਸਟ",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "ਸਭ ਤੋਂ ਵੱਧ ਜਵਾਬ ਦਿੱਤੀ ਗਈ ਪੋਸਟ",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀ ਐਪ",
|
"annual_report.summary.most_used_app.most_used_app": "ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀ ਐਪ",
|
||||||
"annual_report.summary.most_used_hashtag.none": "ਕੋਈ ਨਹੀਂ",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "ਨਵੀਆਂ ਪੋਸਟਾਂ",
|
"annual_report.summary.new_posts.new_posts": "ਨਵੀਆਂ ਪੋਸਟਾਂ",
|
||||||
"annual_report.summary.thanks": "Mastodon ਦਾ ਹਿੱਸਾ ਬਣਨ ਵਾਸਤੇ ਧੰਨਵਾਦ ਹੈ!",
|
|
||||||
"audio.hide": "ਆਡੀਓ ਨੂੰ ਲੁਕਾਓ",
|
"audio.hide": "ਆਡੀਓ ਨੂੰ ਲੁਕਾਓ",
|
||||||
"block_modal.show_less": "ਘੱਟ ਦਿਖਾਓ",
|
"block_modal.show_less": "ਘੱਟ ਦਿਖਾਓ",
|
||||||
"block_modal.show_more": "ਵੱਧ ਦਿਖਾਓ",
|
"block_modal.show_more": "ਵੱਧ ਦਿਖਾਓ",
|
||||||
|
|||||||
@ -113,25 +113,11 @@
|
|||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Opisz to dla osób niedowidzących…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "Opisz to dla osób niedowidzących…",
|
||||||
"alt_text_modal.done": "Gotowe",
|
"alt_text_modal.done": "Gotowe",
|
||||||
"announcement.announcement": "Ogłoszenie",
|
"announcement.announcement": "Ogłoszenie",
|
||||||
"annual_report.summary.archetype.booster": "Łowca treści",
|
|
||||||
"annual_report.summary.archetype.lurker": "Czyhający",
|
|
||||||
"annual_report.summary.archetype.oracle": "Wyrocznia",
|
|
||||||
"annual_report.summary.archetype.pollster": "Ankieter",
|
|
||||||
"annual_report.summary.archetype.replier": "Towarzyski motyl",
|
|
||||||
"annual_report.summary.followers.followers": "obserwujących",
|
|
||||||
"annual_report.summary.followers.total": "łącznie {count}",
|
|
||||||
"annual_report.summary.here_it_is": "Oto przegląd twojego {year} roku:",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "najbardziej lubiany wpis",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "najczęściej podbijany wpis",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "wpis z największą liczbą komentarzy",
|
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "najczęściej używana aplikacja",
|
"annual_report.summary.most_used_app.most_used_app": "najczęściej używana aplikacja",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "najczęściej używany hashtag",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "najczęściej używany hashtag",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Brak",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "nowe wpisy",
|
"annual_report.summary.new_posts.new_posts": "nowe wpisy",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>To plasuje cię w czołówce</topLabel><percentage></percentage><bottomLabel> użytkowników {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>To plasuje cię w czołówce</topLabel><percentage></percentage><bottomLabel> użytkowników {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Nie powiemy Berniemu.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Nie powiemy Berniemu.",
|
||||||
"annual_report.summary.thanks": "Dziękujemy, że jesteś częścią Mastodona!",
|
|
||||||
"attachments_list.unprocessed": "(nieprzetworzone)",
|
"attachments_list.unprocessed": "(nieprzetworzone)",
|
||||||
"audio.hide": "Ukryj dźwięk",
|
"audio.hide": "Ukryj dźwięk",
|
||||||
"block_modal.remote_users_caveat": "Poprosimy serwer {domain} o uszanowanie twojej decyzji. Nie jest to jednak gwarantowane, bo niektóre serwery mogą obsługiwać blokady w inny sposób. Publiczne wpisy mogą być nadal widoczne dla niezalogowanych użytkowników.",
|
"block_modal.remote_users_caveat": "Poprosimy serwer {domain} o uszanowanie twojej decyzji. Nie jest to jednak gwarantowane, bo niektóre serwery mogą obsługiwać blokady w inny sposób. Publiczne wpisy mogą być nadal widoczne dla niezalogowanych użytkowników.",
|
||||||
|
|||||||
@ -11,7 +11,7 @@
|
|||||||
"about.domain_blocks.suspended.title": "Suspenso",
|
"about.domain_blocks.suspended.title": "Suspenso",
|
||||||
"about.language_label": "Idioma",
|
"about.language_label": "Idioma",
|
||||||
"about.not_available": "Esta informação não foi disponibilizada neste servidor.",
|
"about.not_available": "Esta informação não foi disponibilizada neste servidor.",
|
||||||
"about.powered_by": "Redes sociais descentralizadas alimentadas por {mastodon}",
|
"about.powered_by": "Rede social descentralizada baseada no {mastodon}",
|
||||||
"about.rules": "Regras do servidor",
|
"about.rules": "Regras do servidor",
|
||||||
"account.account_note_header": "Nota pessoal",
|
"account.account_note_header": "Nota pessoal",
|
||||||
"account.add_or_remove_from_list": "Adicionar ou remover de listas",
|
"account.add_or_remove_from_list": "Adicionar ou remover de listas",
|
||||||
@ -55,8 +55,8 @@
|
|||||||
"account.follows.empty": "Nada aqui.",
|
"account.follows.empty": "Nada aqui.",
|
||||||
"account.follows_you": "Segue você",
|
"account.follows_you": "Segue você",
|
||||||
"account.go_to_profile": "Ir ao perfil",
|
"account.go_to_profile": "Ir ao perfil",
|
||||||
"account.hide_reblogs": "Ocultar impulsionamentos de @{name}",
|
"account.hide_reblogs": "Ocultar impulsos de @{name}",
|
||||||
"account.in_memoriam": "Em memória.",
|
"account.in_memoriam": "In Memoriam.",
|
||||||
"account.joined_short": "Entrou",
|
"account.joined_short": "Entrou",
|
||||||
"account.languages": "Mudar idiomas inscritos",
|
"account.languages": "Mudar idiomas inscritos",
|
||||||
"account.link_verified_on": "A propriedade deste link foi verificada em {date}",
|
"account.link_verified_on": "A propriedade deste link foi verificada em {date}",
|
||||||
@ -79,7 +79,7 @@
|
|||||||
"account.requested_follow": "{name} quer te seguir",
|
"account.requested_follow": "{name} quer te seguir",
|
||||||
"account.requests_to_follow_you": "Pediu para seguir você",
|
"account.requests_to_follow_you": "Pediu para seguir você",
|
||||||
"account.share": "Compartilhar perfil de @{name}",
|
"account.share": "Compartilhar perfil de @{name}",
|
||||||
"account.show_reblogs": "Mostrar impulsionamentos de @{name}",
|
"account.show_reblogs": "Mostrar impulsos de @{name}",
|
||||||
"account.statuses_counter": "{count, plural, one {{counter} publicação} other {{counter} publicações}}",
|
"account.statuses_counter": "{count, plural, one {{counter} publicação} other {{counter} publicações}}",
|
||||||
"account.unblock": "Desbloquear @{name}",
|
"account.unblock": "Desbloquear @{name}",
|
||||||
"account.unblock_domain": "Desbloquear domínio {domain}",
|
"account.unblock_domain": "Desbloquear domínio {domain}",
|
||||||
@ -106,36 +106,59 @@
|
|||||||
"alert.unexpected.title": "Eita!",
|
"alert.unexpected.title": "Eita!",
|
||||||
"alt_text_badge.title": "Texto alternativo",
|
"alt_text_badge.title": "Texto alternativo",
|
||||||
"alt_text_modal.add_alt_text": "Adicione texto alternativo",
|
"alt_text_modal.add_alt_text": "Adicione texto alternativo",
|
||||||
"alt_text_modal.add_text_from_image": "Adicione texto da imagem",
|
"alt_text_modal.add_text_from_image": "Adicione texto a partir da imagem",
|
||||||
"alt_text_modal.cancel": "Cancelar",
|
"alt_text_modal.cancel": "Cancelar",
|
||||||
"alt_text_modal.change_thumbnail": "Alterar miniatura",
|
"alt_text_modal.change_thumbnail": "Alterar miniatura",
|
||||||
"alt_text_modal.describe_for_people_with_hearing_impairments": "Descreva isso para pessoas com deficiências auditivas…",
|
"alt_text_modal.describe_for_people_with_hearing_impairments": "Descreva isto para pessoas com deficiências auditivas…",
|
||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Descreva isto para pessoas com deficiências visuais…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "Descreva isto para pessoas com deficiências visuais…",
|
||||||
"alt_text_modal.done": "Feito",
|
"alt_text_modal.done": "Feito",
|
||||||
"announcement.announcement": "Comunicados",
|
"announcement.announcement": "Comunicados",
|
||||||
"annual_report.announcement.action_build": "Gerar meu Wrapstodon",
|
"annual_report.announcement.action_build": "Gerar meu Wrapstodon",
|
||||||
|
"annual_report.announcement.action_dismiss": "Não, obrigado/a",
|
||||||
"annual_report.announcement.action_view": "Ver meu Wrapstodon",
|
"annual_report.announcement.action_view": "Ver meu Wrapstodon",
|
||||||
"annual_report.announcement.description": "Descubra mais sobre seu engajamento no Mastodon ao longo do último ano.",
|
"annual_report.announcement.description": "Descubra mais sobre seu engajamento no Mastodon ao longo do último ano.",
|
||||||
"annual_report.announcement.title": "Chegou o Wrapstodon de {year}",
|
"annual_report.announcement.title": "Chegou o Wrapstodon de {year}",
|
||||||
"annual_report.summary.archetype.booster": "Caçador legal",
|
"annual_report.nav_item.badge": "Novo",
|
||||||
"annual_report.summary.archetype.lurker": "O espreitador",
|
"annual_report.shared_page.donate": "Doe",
|
||||||
"annual_report.summary.archetype.oracle": "O oráculo",
|
"annual_report.shared_page.footer": "Criado com {heart} pela equipe do Mastodon",
|
||||||
"annual_report.summary.archetype.pollster": "O pesquisador",
|
"annual_report.shared_page.footer_server_info": "{username} utiliza {domain}, uma das várias comunidades baseadas no Mastodon.",
|
||||||
"annual_report.summary.archetype.replier": "A borboleta social",
|
"annual_report.summary.archetype.booster.desc_public": "{name} se manteve na caça por publicações para impulsionar, amplificando outros criadores com uma mira perfeita.",
|
||||||
"annual_report.summary.followers.followers": "seguidores",
|
"annual_report.summary.archetype.booster.desc_self": "Você se manteve na caça por publicações para impulsionar, amplificando outros criadores com uma mira perfeita.",
|
||||||
"annual_report.summary.followers.total": "{count} total",
|
"annual_report.summary.archetype.booster.name": "O Arqueiro",
|
||||||
"annual_report.summary.here_it_is": "Aqui está seu {year} em retrospectiva:",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "publicação mais favoritada",
|
"annual_report.summary.archetype.lurker.desc_public": "Sabemos que {name} esteve por aí, em algum lugar, aproveitando o Mastodon do seu próprio jeito silencioso.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "publicação mais impulsionada",
|
"annual_report.summary.archetype.lurker.desc_self": "Sabemos que você esteve por aí, em algum lugar, aproveitando o Mastodon do seu próprio jeito silencioso.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "publicação com mais respostas",
|
"annual_report.summary.archetype.lurker.name": "O Estoico",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} criou mais publicações novas que respostas, mantendo o Mastodon fresco e em direção ao futuro.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Você criou mais publicações novas que respostas, mantendo o Mastodon fresco e em direção ao futuro.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "O Oráculo",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name} criou mais enquetes que quaisquer outros tipos de publicações, cultivando curiosidade no Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Você criou mais enquetes que quaisquer outros tipos de publicações, cultivando curiosidade no Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "O Questionador",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} frequentemente respondeu às publicações de outras pessoas, polinizando o Mastodon com novas discussões.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Você frequentemente respondeu às publicações de outras pessoas, polinizando o Mastodon com novas discussões.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "A Borboleta",
|
||||||
|
"annual_report.summary.archetype.reveal": "Revele meu arquétipo",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Obrigado por ser parte do Mastodon! Está na hora de descobrir qual arquétipo você incorporou em {year}.",
|
||||||
|
"annual_report.summary.archetype.title_public": "Arquétipo de {name}",
|
||||||
|
"annual_report.summary.archetype.title_self": "Seu arquétipo",
|
||||||
|
"annual_report.summary.close": "Fechar",
|
||||||
|
"annual_report.summary.copy_link": "Copiar link",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {novo(a) seguidor(a)} other {novos seguidores}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Esta publicação foi impulsionada {count, plural, one {uma vez} other {# vezes}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Esta publicação foi favoritada {count, plural, one {uma vez} other {# vezes}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Esta postagem recebeu {count, plural, one {uma resposta} other {# respostas}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Publicação mais popular",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "aplicativo mais usado",
|
"annual_report.summary.most_used_app.most_used_app": "aplicativo mais usado",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag mais usada",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag mais usada",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Nenhuma",
|
"annual_report.summary.most_used_hashtag.used_count": "Você incluiu esta hashtag em {count, plural, one {uma publicação} other {# publicações}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} incluiu esta hashtag em {count, plural, one {uma publicação} other {# publicações}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "novas publicações",
|
"annual_report.summary.new_posts.new_posts": "novas publicações",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Isso lhe coloca no topo</topLabel><percentage></percentage><bottomLabel>de usuários de {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Isso lhe coloca no topo</topLabel><percentage></percentage><bottomLabel>de usuários de {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Não contaremos ao Bernie.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Não contaremos ao Bernie.",
|
||||||
"annual_report.summary.thanks": "Obrigada por fazer parte do Mastodon!",
|
"annual_report.summary.share_elsewhere": "Compartilhar em outro lugar",
|
||||||
|
"annual_report.summary.share_message": "Eu obtive o arquétipo {archetype}!",
|
||||||
|
"annual_report.summary.share_on_mastodon": "Compartilhar no Mastodon",
|
||||||
"attachments_list.unprocessed": "(não processado)",
|
"attachments_list.unprocessed": "(não processado)",
|
||||||
"audio.hide": "Ocultar áudio",
|
"audio.hide": "Ocultar áudio",
|
||||||
"block_modal.remote_users_caveat": "Pediremos ao servidor {domain} que respeite sua decisão. No entanto, a conformidade não é garantida, já que alguns servidores podem lidar com bloqueios de maneira diferente. As publicações públicas ainda podem estar visíveis para usuários não logados.",
|
"block_modal.remote_users_caveat": "Pediremos ao servidor {domain} que respeite sua decisão. No entanto, a conformidade não é garantida, já que alguns servidores podem lidar com bloqueios de maneira diferente. As publicações públicas ainda podem estar visíveis para usuários não logados.",
|
||||||
@ -145,10 +168,10 @@
|
|||||||
"block_modal.they_cant_see_posts": "Não poderá ver suas publicações e você não verá as dele/a.",
|
"block_modal.they_cant_see_posts": "Não poderá ver suas publicações e você não verá as dele/a.",
|
||||||
"block_modal.they_will_know": "Poderá ver que você bloqueou.",
|
"block_modal.they_will_know": "Poderá ver que você bloqueou.",
|
||||||
"block_modal.title": "Bloquear usuário?",
|
"block_modal.title": "Bloquear usuário?",
|
||||||
"block_modal.you_wont_see_mentions": "Você não verá publicações que mencionem o usuário.",
|
"block_modal.you_wont_see_mentions": "Você não verá publicações que mencionem este usuário.",
|
||||||
"boost_modal.combo": "Pressione {combo} para pular isto na próxima vez",
|
"boost_modal.combo": "Pressione {combo} para pular isto na próxima vez",
|
||||||
"boost_modal.reblog": "Impulsionar a publicação?",
|
"boost_modal.reblog": "Impulsionar a publicação?",
|
||||||
"boost_modal.undo_reblog": "Retirar o impulso do post?",
|
"boost_modal.undo_reblog": "Retirar o impulso da publicação?",
|
||||||
"bundle_column_error.copy_stacktrace": "Copiar relatório do erro",
|
"bundle_column_error.copy_stacktrace": "Copiar relatório do erro",
|
||||||
"bundle_column_error.error.body": "A página solicitada não pôde ser renderizada. Pode ser devido a um erro no nosso código, ou um problema de compatibilidade do seu navegador.",
|
"bundle_column_error.error.body": "A página solicitada não pôde ser renderizada. Pode ser devido a um erro no nosso código, ou um problema de compatibilidade do seu navegador.",
|
||||||
"bundle_column_error.error.title": "Ah, não!",
|
"bundle_column_error.error.title": "Ah, não!",
|
||||||
@ -162,7 +185,7 @@
|
|||||||
"bundle_modal_error.message": "Algo deu errado ao carregar esta tela.",
|
"bundle_modal_error.message": "Algo deu errado ao carregar esta tela.",
|
||||||
"bundle_modal_error.retry": "Tente novamente",
|
"bundle_modal_error.retry": "Tente novamente",
|
||||||
"carousel.current": "<sr>Slide</sr> {current, number} / {max, number}",
|
"carousel.current": "<sr>Slide</sr> {current, number} / {max, number}",
|
||||||
"carousel.slide": "Slide {current, number} of {max, number}",
|
"carousel.slide": "Slide {current, number} de {max, number}",
|
||||||
"closed_registrations.other_server_instructions": "Como o Mastodon é descentralizado, você pode criar uma conta em outro servidor e ainda pode interagir com este.",
|
"closed_registrations.other_server_instructions": "Como o Mastodon é descentralizado, você pode criar uma conta em outro servidor e ainda pode interagir com este.",
|
||||||
"closed_registrations_modal.description": "Não é possível criar uma conta em {domain} no momento, mas atente que você não precisa de uma conta especificamente em {domain} para usar o Mastodon.",
|
"closed_registrations_modal.description": "Não é possível criar uma conta em {domain} no momento, mas atente que você não precisa de uma conta especificamente em {domain} para usar o Mastodon.",
|
||||||
"closed_registrations_modal.find_another_server": "Encontrar outro servidor",
|
"closed_registrations_modal.find_another_server": "Encontrar outro servidor",
|
||||||
@ -179,8 +202,8 @@
|
|||||||
"column.edit_list": "Editar lista",
|
"column.edit_list": "Editar lista",
|
||||||
"column.favourites": "Favoritos",
|
"column.favourites": "Favoritos",
|
||||||
"column.firehose": "Feeds ao vivo",
|
"column.firehose": "Feeds ao vivo",
|
||||||
"column.firehose_local": "Transmissão ao vivo deste servidor",
|
"column.firehose_local": "Feed ao vivo deste servidor",
|
||||||
"column.firehose_singular": "Transmissão ao vivo",
|
"column.firehose_singular": "Feed ao vivo",
|
||||||
"column.follow_requests": "Seguidores pendentes",
|
"column.follow_requests": "Seguidores pendentes",
|
||||||
"column.home": "Página inicial",
|
"column.home": "Página inicial",
|
||||||
"column.list_members": "Gerenciar membros da lista",
|
"column.list_members": "Gerenciar membros da lista",
|
||||||
@ -235,7 +258,7 @@
|
|||||||
"confirmations.delete_list.title": "Excluir lista?",
|
"confirmations.delete_list.title": "Excluir lista?",
|
||||||
"confirmations.discard_draft.confirm": "Descartar e continuar",
|
"confirmations.discard_draft.confirm": "Descartar e continuar",
|
||||||
"confirmations.discard_draft.edit.cancel": "Continuar editando",
|
"confirmations.discard_draft.edit.cancel": "Continuar editando",
|
||||||
"confirmations.discard_draft.edit.message": "Continuar vai descartar quaisquer mudanças feitas à publicação sendo editada.",
|
"confirmations.discard_draft.edit.message": "Continuar descartará quaisquer mudanças feitas à publicação sendo editada.",
|
||||||
"confirmations.discard_draft.edit.title": "Descartar mudanças na sua publicação?",
|
"confirmations.discard_draft.edit.title": "Descartar mudanças na sua publicação?",
|
||||||
"confirmations.discard_draft.post.cancel": "Continuar rascunho",
|
"confirmations.discard_draft.post.cancel": "Continuar rascunho",
|
||||||
"confirmations.discard_draft.post.message": "Continuar eliminará a publicação que está sendo elaborada no momento.",
|
"confirmations.discard_draft.post.message": "Continuar eliminará a publicação que está sendo elaborada no momento.",
|
||||||
@ -263,7 +286,7 @@
|
|||||||
"confirmations.quiet_post_quote_info.message": "Ao citar uma publicação pública silenciosa, sua postagem será oculta das linhas de tempo em tendência.",
|
"confirmations.quiet_post_quote_info.message": "Ao citar uma publicação pública silenciosa, sua postagem será oculta das linhas de tempo em tendência.",
|
||||||
"confirmations.quiet_post_quote_info.title": "Citando publicações públicas silenciadas",
|
"confirmations.quiet_post_quote_info.title": "Citando publicações públicas silenciadas",
|
||||||
"confirmations.redraft.confirm": "Excluir e rascunhar",
|
"confirmations.redraft.confirm": "Excluir e rascunhar",
|
||||||
"confirmations.redraft.message": "Você tem certeza de que quer apagar essa publicação e rascunhá-la? Favoritos e impulsos serão perdidos, e respostas à postagem original ficarão órfãs.",
|
"confirmations.redraft.message": "Você tem certeza de que quer apagar esta publicação e rascunhá-la? Favoritos e impulsos serão perdidos, e respostas à publicação original ficarão órfãs.",
|
||||||
"confirmations.redraft.title": "Excluir e rascunhar publicação?",
|
"confirmations.redraft.title": "Excluir e rascunhar publicação?",
|
||||||
"confirmations.remove_from_followers.confirm": "Remover seguidor",
|
"confirmations.remove_from_followers.confirm": "Remover seguidor",
|
||||||
"confirmations.remove_from_followers.message": "{name} vai parar de te seguir. Tem certeza de que deseja continuar?",
|
"confirmations.remove_from_followers.message": "{name} vai parar de te seguir. Tem certeza de que deseja continuar?",
|
||||||
@ -304,8 +327,8 @@
|
|||||||
"domain_block_modal.title": "Bloquear domínio?",
|
"domain_block_modal.title": "Bloquear domínio?",
|
||||||
"domain_block_modal.you_will_lose_num_followers": "Você perderá {followersCount, plural, one {{followersCountDisplay} seguidor} other {{followersCountDisplay} seguidores}} e {followingCount, plural, one {{followingCountDisplay} pessoa que você segue} other {{followingCountDisplay} pessoas que você segue}}.",
|
"domain_block_modal.you_will_lose_num_followers": "Você perderá {followersCount, plural, one {{followersCountDisplay} seguidor} other {{followersCountDisplay} seguidores}} e {followingCount, plural, one {{followingCountDisplay} pessoa que você segue} other {{followingCountDisplay} pessoas que você segue}}.",
|
||||||
"domain_block_modal.you_will_lose_relationships": "Você irá perder todos os seguidores e pessoas que você segue neste servidor.",
|
"domain_block_modal.you_will_lose_relationships": "Você irá perder todos os seguidores e pessoas que você segue neste servidor.",
|
||||||
"domain_block_modal.you_wont_see_posts": "Você não verá postagens ou notificações de usuários neste servidor.",
|
"domain_block_modal.you_wont_see_posts": "Você não verá publicações ou notificações de usuários neste servidor.",
|
||||||
"domain_pill.activitypub_lets_connect": "Ele permite que você se conecte e interaja com pessoas não apenas no Mastodon, mas também em diferentes aplicativos sociais.",
|
"domain_pill.activitypub_lets_connect": "Permite que você se conecte e interaja com pessoas não apenas no Mastodon, mas também em diferentes aplicativos sociais.",
|
||||||
"domain_pill.activitypub_like_language": "ActivityPub é como a linguagem que o Mastodon fala com outras redes sociais.",
|
"domain_pill.activitypub_like_language": "ActivityPub é como a linguagem que o Mastodon fala com outras redes sociais.",
|
||||||
"domain_pill.server": "Servidor",
|
"domain_pill.server": "Servidor",
|
||||||
"domain_pill.their_handle": "Identificador dele/a:",
|
"domain_pill.their_handle": "Identificador dele/a:",
|
||||||
@ -347,13 +370,13 @@
|
|||||||
"empty_column.bookmarked_statuses": "Nada aqui. Quando você salvar um toot, ele aparecerá aqui.",
|
"empty_column.bookmarked_statuses": "Nada aqui. Quando você salvar um toot, ele aparecerá aqui.",
|
||||||
"empty_column.community": "A linha local está vazia. Publique algo para começar!",
|
"empty_column.community": "A linha local está vazia. Publique algo para começar!",
|
||||||
"empty_column.direct": "Você ainda não tem mensagens privadas. Quando você enviar ou receber uma, será exibida aqui.",
|
"empty_column.direct": "Você ainda não tem mensagens privadas. Quando você enviar ou receber uma, será exibida aqui.",
|
||||||
"empty_column.disabled_feed": "Este feed foi desativado pelos administradores do servidor.",
|
"empty_column.disabled_feed": "Este feed foi desativado pelos administradores de seu servidor.",
|
||||||
"empty_column.domain_blocks": "Nada aqui.",
|
"empty_column.domain_blocks": "Nada aqui.",
|
||||||
"empty_column.explore_statuses": "Nada está em alta no momento. Volte mais tarde!",
|
"empty_column.explore_statuses": "Nada está em alta no momento. Volte mais tarde!",
|
||||||
"empty_column.favourited_statuses": "Você ainda não tem publicações favoritas. Quanto você marcar uma como favorita, ela aparecerá aqui.",
|
"empty_column.favourited_statuses": "Você ainda não tem publicações favoritas. Quanto você marcar uma como favorita, ela aparecerá aqui.",
|
||||||
"empty_column.favourites": "Ninguém marcou esta publicação como favorita até agora. Quando alguém o fizer, será listado aqui.",
|
"empty_column.favourites": "Ninguém marcou esta publicação como favorita até agora. Quando alguém o fizer, será listado aqui.",
|
||||||
"empty_column.follow_requests": "Nada aqui. Quando você tiver seguidores pendentes, eles aparecerão aqui.",
|
"empty_column.follow_requests": "Nada aqui. Quando você tiver seguidores pendentes, eles aparecerão aqui.",
|
||||||
"empty_column.followed_tags": "Você ainda não seguiu nenhuma hashtag. Quando seguir uma, elas serão exibidas aqui.",
|
"empty_column.followed_tags": "Você ainda não seguiu nenhuma hashtag. Quando seguir, elas serão exibidas aqui.",
|
||||||
"empty_column.hashtag": "Nada aqui.",
|
"empty_column.hashtag": "Nada aqui.",
|
||||||
"empty_column.home": "Sua página inicial está vazia! Siga mais pessoas para começar: {suggestions}",
|
"empty_column.home": "Sua página inicial está vazia! Siga mais pessoas para começar: {suggestions}",
|
||||||
"empty_column.list": "Nada aqui. Quando membros da lista tootarem, eles aparecerão aqui.",
|
"empty_column.list": "Nada aqui. Quando membros da lista tootarem, eles aparecerão aqui.",
|
||||||
@ -374,13 +397,13 @@
|
|||||||
"explore.trending_statuses": "Publicações",
|
"explore.trending_statuses": "Publicações",
|
||||||
"explore.trending_tags": "Hashtags",
|
"explore.trending_tags": "Hashtags",
|
||||||
"featured_carousel.current": "<sr>Publicação</sr> {current, number} / {max, number}",
|
"featured_carousel.current": "<sr>Publicação</sr> {current, number} / {max, number}",
|
||||||
"featured_carousel.header": "{count, plural, one {Postagem fixada} other {Postagens fixadas}}",
|
"featured_carousel.header": "{count, plural, one {Publicação fixada} other {Publicações fixadas}}",
|
||||||
"featured_carousel.slide": "Publicação {current, number} of {max, number}",
|
"featured_carousel.slide": "Publicação {current, number} de {max, number}",
|
||||||
"filter_modal.added.context_mismatch_explanation": "Esta categoria de filtro não se aplica ao contexto no qual você acessou esta publicação. Se quiser que a publicação seja filtrada nesse contexto também, você terá que editar o filtro.",
|
"filter_modal.added.context_mismatch_explanation": "Esta categoria de filtro não se aplica ao contexto no qual você acessou esta publicação. Se quiser que a publicação seja filtrada nesse contexto também, você terá que editar o filtro.",
|
||||||
"filter_modal.added.context_mismatch_title": "Incompatibilidade de contexto!",
|
"filter_modal.added.context_mismatch_title": "Incompatibilidade de contexto!",
|
||||||
"filter_modal.added.expired_explanation": "Esta categoria de filtro expirou, você precisará alterar a data de expiração para aplicar.",
|
"filter_modal.added.expired_explanation": "Esta categoria de filtro expirou, você precisará alterar a data de expiração para aplicar.",
|
||||||
"filter_modal.added.expired_title": "Filtro expirado!",
|
"filter_modal.added.expired_title": "Filtro expirado!",
|
||||||
"filter_modal.added.review_and_configure": "Para revisar e configurar ainda mais esta categoria de filtro, vá até {settings_link}.",
|
"filter_modal.added.review_and_configure": "Para revisar e configurar ainda mais esta categoria de filtro, vá para {settings_link}.",
|
||||||
"filter_modal.added.review_and_configure_title": "Configurações de filtro",
|
"filter_modal.added.review_and_configure_title": "Configurações de filtro",
|
||||||
"filter_modal.added.settings_link": "página de configurações",
|
"filter_modal.added.settings_link": "página de configurações",
|
||||||
"filter_modal.added.short_explanation": "Esta publicação foi adicionada à seguinte categoria de filtro: {title}.",
|
"filter_modal.added.short_explanation": "Esta publicação foi adicionada à seguinte categoria de filtro: {title}.",
|
||||||
@ -418,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "Quem seguir",
|
"follow_suggestions.who_to_follow": "Quem seguir",
|
||||||
"followed_tags": "Hashtags seguidas",
|
"followed_tags": "Hashtags seguidas",
|
||||||
"footer.about": "Sobre",
|
"footer.about": "Sobre",
|
||||||
|
"footer.about_mastodon": "Sobre o mastodon",
|
||||||
|
"footer.about_server": "Sobre {domain}",
|
||||||
"footer.about_this_server": "Sobre",
|
"footer.about_this_server": "Sobre",
|
||||||
"footer.directory": "Diretório de perfis",
|
"footer.directory": "Diretório de perfis",
|
||||||
"footer.get_app": "Baixe o app",
|
"footer.get_app": "Baixe o app",
|
||||||
@ -612,7 +637,7 @@
|
|||||||
"notification.admin.report_statuses": "{name} Reportou {target} para {category}",
|
"notification.admin.report_statuses": "{name} Reportou {target} para {category}",
|
||||||
"notification.admin.report_statuses_other": "{name} denunciou {target}",
|
"notification.admin.report_statuses_other": "{name} denunciou {target}",
|
||||||
"notification.admin.sign_up": "{name} se inscreveu",
|
"notification.admin.sign_up": "{name} se inscreveu",
|
||||||
"notification.admin.sign_up.name_and_others": "{name} e {count, plural, one {# other} other {# outros}}",
|
"notification.admin.sign_up.name_and_others": "{name} e {count, plural, one {# outro} other {# outros}} se inscreveram",
|
||||||
"notification.annual_report.message": "O seu #Wrapstodon de {year} está esperando! Desvende seus destaques do ano e momentos memoráveis no Mastodon!",
|
"notification.annual_report.message": "O seu #Wrapstodon de {year} está esperando! Desvende seus destaques do ano e momentos memoráveis no Mastodon!",
|
||||||
"notification.annual_report.view": "Ver #Wrapstodon",
|
"notification.annual_report.view": "Ver #Wrapstodon",
|
||||||
"notification.favourite": "{name} favoritou sua publicação",
|
"notification.favourite": "{name} favoritou sua publicação",
|
||||||
@ -622,7 +647,7 @@
|
|||||||
"notification.follow": "{name} te seguiu",
|
"notification.follow": "{name} te seguiu",
|
||||||
"notification.follow.name_and_others": "{name} e <a>{count, plural, one {# outro} other {# outros}}</a> seguiram você",
|
"notification.follow.name_and_others": "{name} e <a>{count, plural, one {# outro} other {# outros}}</a> seguiram você",
|
||||||
"notification.follow_request": "{name} quer te seguir",
|
"notification.follow_request": "{name} quer te seguir",
|
||||||
"notification.follow_request.name_and_others": "{name} e {count, plural, one {# other} other {# outros}} pediu para seguir você",
|
"notification.follow_request.name_and_others": "{name} e {count, plural, one {# outro} other {# outros}} pediram para seguir você",
|
||||||
"notification.label.mention": "Menção",
|
"notification.label.mention": "Menção",
|
||||||
"notification.label.private_mention": "Menção privada",
|
"notification.label.private_mention": "Menção privada",
|
||||||
"notification.label.private_reply": "Resposta privada",
|
"notification.label.private_reply": "Resposta privada",
|
||||||
|
|||||||
@ -114,28 +114,51 @@
|
|||||||
"alt_text_modal.done": "Concluído",
|
"alt_text_modal.done": "Concluído",
|
||||||
"announcement.announcement": "Mensagem de manutenção",
|
"announcement.announcement": "Mensagem de manutenção",
|
||||||
"annual_report.announcement.action_build": "Criar o meu Wrapstodon",
|
"annual_report.announcement.action_build": "Criar o meu Wrapstodon",
|
||||||
|
"annual_report.announcement.action_dismiss": "Não, obrigado",
|
||||||
"annual_report.announcement.action_view": "Ver o meu Wrapstodon",
|
"annual_report.announcement.action_view": "Ver o meu Wrapstodon",
|
||||||
"annual_report.announcement.description": "Descobre mais sobre o teu envolvimento com o Mastodon durante o último ano.",
|
"annual_report.announcement.description": "Descobre mais sobre o teu envolvimento com o Mastodon durante o último ano.",
|
||||||
"annual_report.announcement.title": "Chegou o Wrapstodon {year}",
|
"annual_report.announcement.title": "Chegou o Wrapstodon {year}",
|
||||||
"annual_report.summary.archetype.booster": "O caçador de tendências",
|
"annual_report.nav_item.badge": "Novo",
|
||||||
"annual_report.summary.archetype.lurker": "O espreitador",
|
"annual_report.shared_page.donate": "Doar",
|
||||||
"annual_report.summary.archetype.oracle": "O oráculo",
|
"annual_report.shared_page.footer": "Gerado com {heart} pela equipa do Mastodon",
|
||||||
"annual_report.summary.archetype.pollster": "O sondagens",
|
"annual_report.shared_page.footer_server_info": "{username} utiliza {domain}, uma das muitas comunidades baseadas no Mastodon.",
|
||||||
"annual_report.summary.archetype.replier": "A borboleta social",
|
"annual_report.summary.archetype.booster.desc_public": "{name} permaneceu à procura de publicações para partilhar, promovendo outros criadores com uma precisão perfeita.",
|
||||||
"annual_report.summary.followers.followers": "seguidores",
|
"annual_report.summary.archetype.booster.desc_self": "Permaneceu à procura de publicações para partilhar, promovendo outros criadores com uma precisão perfeita.",
|
||||||
"annual_report.summary.followers.total": "{count} no total",
|
"annual_report.summary.archetype.booster.name": "O Arqueiro",
|
||||||
"annual_report.summary.here_it_is": "Aqui está um resumo do ano {year}:",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "publicação mais favorita",
|
"annual_report.summary.archetype.lurker.desc_public": "Sabemos que {name} esteve por aí, algures, a apreciar o Mastodon na sua maneira discreta.",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "publicação mais partilhada",
|
"annual_report.summary.archetype.lurker.desc_self": "Sabemos que esteve por aí, algures, a apreciar o Mastodon na sua maneira discreta.",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "publicação com o maior número de respostas",
|
"annual_report.summary.archetype.lurker.name": "O Estoico",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
"annual_report.summary.archetype.oracle.desc_public": "{name} criou mais publicações novas do que respostas, mantendo o Mastodon atualizado e voltado para o futuro.",
|
||||||
|
"annual_report.summary.archetype.oracle.desc_self": "Criou mais publicações novas do que respostas, mantendo o Mastodon atualizado e voltado para o futuro.",
|
||||||
|
"annual_report.summary.archetype.oracle.name": "O Oráculo",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_public": "{name} criou mais sondagens do que outros tipos de publicações, cultivando a curiosidade no Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.desc_self": "Criou mais sondagens do que outros tipos de publicações, cultivando a curiosidade no Mastodon.",
|
||||||
|
"annual_report.summary.archetype.pollster.name": "O Questionador",
|
||||||
|
"annual_report.summary.archetype.replier.desc_public": "{name} respondeu frequentemente às publicações de outras pessoas, polinizando o Mastodon com novas discussões.",
|
||||||
|
"annual_report.summary.archetype.replier.desc_self": "Respondeu frequentemente às publicações de outras pessoas, polinizando o Mastodon com novas discussões.",
|
||||||
|
"annual_report.summary.archetype.replier.name": "A Borboleta",
|
||||||
|
"annual_report.summary.archetype.reveal": "Revelar o meu arquétipo",
|
||||||
|
"annual_report.summary.archetype.reveal_description": "Obrigado por fazer parte do Mastodon! É hora de descobrir qual arquétipo você encarnou em {year}.",
|
||||||
|
"annual_report.summary.archetype.title_public": "Arquétipo de {name}",
|
||||||
|
"annual_report.summary.archetype.title_self": "O seu arquétipo",
|
||||||
|
"annual_report.summary.close": "Fechar",
|
||||||
|
"annual_report.summary.copy_link": "Copiar hiperligação",
|
||||||
|
"annual_report.summary.followers.new_followers": "{count, plural, one {novo seguidor} other {novos seguidores}}",
|
||||||
|
"annual_report.summary.highlighted_post.boost_count": "Esta publicação foi partilhada {count, plural, one {uma vez} other {# vezes}}.",
|
||||||
|
"annual_report.summary.highlighted_post.favourite_count": "Esta publicação foi colocada nos favoritos {count, plural, one {uma vez} other {# vezes}}.",
|
||||||
|
"annual_report.summary.highlighted_post.reply_count": "Esta publicação teve {count, plural, one {uma resposta} other {# respostas}}.",
|
||||||
|
"annual_report.summary.highlighted_post.title": "Publicação mais popular",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "aplicação mais utilizada",
|
"annual_report.summary.most_used_app.most_used_app": "aplicação mais utilizada",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta mais utilizada",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta mais utilizada",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Nenhuma",
|
"annual_report.summary.most_used_hashtag.used_count": "Incluiu esta etiqueta {count, plural, one {numa publicação} other {em # publicações}}.",
|
||||||
|
"annual_report.summary.most_used_hashtag.used_count_public": "{name} incluiu esta etiqueta {count, plural, one {numa publicação} other {em # publicações}}.",
|
||||||
"annual_report.summary.new_posts.new_posts": "novas publicações",
|
"annual_report.summary.new_posts.new_posts": "novas publicações",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Isso coloca-te no topo</topLabel><percentage></percentage><bottomLabel>dos utilizadores de {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Isso coloca-te no topo</topLabel><percentage></percentage><bottomLabel>dos utilizadores de {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Este segredo fica entre nós.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Este segredo fica entre nós.",
|
||||||
"annual_report.summary.thanks": "Obrigado por fazeres parte do Mastodon!",
|
"annual_report.summary.share_elsewhere": "Partilhar noutro local",
|
||||||
|
"annual_report.summary.share_message": "Eu obtive o arquétipo {archetype}!",
|
||||||
|
"annual_report.summary.share_on_mastodon": "Partilhar no Mastodon",
|
||||||
"attachments_list.unprocessed": "(não processado)",
|
"attachments_list.unprocessed": "(não processado)",
|
||||||
"audio.hide": "Ocultar áudio",
|
"audio.hide": "Ocultar áudio",
|
||||||
"block_modal.remote_users_caveat": "Vamos pedir ao servidor {domain} para respeitar a tua decisão. No entanto, não é garantido o seu cumprimento, uma vez que alguns servidores podem tratar os bloqueios de forma diferente. As publicações públicas podem continuar a ser visíveis para utilizadores não autenticados.",
|
"block_modal.remote_users_caveat": "Vamos pedir ao servidor {domain} para respeitar a tua decisão. No entanto, não é garantido o seu cumprimento, uma vez que alguns servidores podem tratar os bloqueios de forma diferente. As publicações públicas podem continuar a ser visíveis para utilizadores não autenticados.",
|
||||||
@ -418,6 +441,8 @@
|
|||||||
"follow_suggestions.who_to_follow": "Quem seguir",
|
"follow_suggestions.who_to_follow": "Quem seguir",
|
||||||
"followed_tags": "Etiquetas seguidas",
|
"followed_tags": "Etiquetas seguidas",
|
||||||
"footer.about": "Sobre",
|
"footer.about": "Sobre",
|
||||||
|
"footer.about_mastodon": "Sobre o Mastodon",
|
||||||
|
"footer.about_server": "Sobre {domain}",
|
||||||
"footer.about_this_server": "Sobre",
|
"footer.about_this_server": "Sobre",
|
||||||
"footer.directory": "Diretório de perfis",
|
"footer.directory": "Diretório de perfis",
|
||||||
"footer.get_app": "Obter a aplicação",
|
"footer.get_app": "Obter a aplicação",
|
||||||
@ -1032,7 +1057,7 @@
|
|||||||
"visibility_modal.helper.privacy_editing": "A visibilidade não pode ser alterada após a publicação ser publicada.",
|
"visibility_modal.helper.privacy_editing": "A visibilidade não pode ser alterada após a publicação ser publicada.",
|
||||||
"visibility_modal.helper.privacy_private_self_quote": "As autocitações de publicações privadas não podem ser tornadas públicas.",
|
"visibility_modal.helper.privacy_private_self_quote": "As autocitações de publicações privadas não podem ser tornadas públicas.",
|
||||||
"visibility_modal.helper.private_quoting": "As publicações apenas para seguidores criadas no Mastodon não podem ser citadas por outras pessoas.",
|
"visibility_modal.helper.private_quoting": "As publicações apenas para seguidores criadas no Mastodon não podem ser citadas por outras pessoas.",
|
||||||
"visibility_modal.helper.unlisted_quoting": "Quando as pessoas o citarem, as publicações delas serão também ocultadas das tendências.",
|
"visibility_modal.helper.unlisted_quoting": "Quando as pessoas o citarem, as respetivas publicações também serão ocultadas dos destaques.",
|
||||||
"visibility_modal.instructions": "Controle quem pode interagir com esta publicação. Também pode definir esta configuração para todas as publicações futuras, em <link>Preferências > Padrões de publicação</link>.",
|
"visibility_modal.instructions": "Controle quem pode interagir com esta publicação. Também pode definir esta configuração para todas as publicações futuras, em <link>Preferências > Padrões de publicação</link>.",
|
||||||
"visibility_modal.privacy_label": "Visibilidade",
|
"visibility_modal.privacy_label": "Visibilidade",
|
||||||
"visibility_modal.quote_followers": "Apenas seguidores",
|
"visibility_modal.quote_followers": "Apenas seguidores",
|
||||||
|
|||||||
@ -82,19 +82,8 @@
|
|||||||
"alert.unexpected.title": "Ups!",
|
"alert.unexpected.title": "Ups!",
|
||||||
"alt_text_badge.title": "Text alternativ",
|
"alt_text_badge.title": "Text alternativ",
|
||||||
"announcement.announcement": "Anunț",
|
"announcement.announcement": "Anunț",
|
||||||
"annual_report.summary.archetype.lurker": "Pânditorul",
|
|
||||||
"annual_report.summary.archetype.oracle": "Oracolul",
|
|
||||||
"annual_report.summary.archetype.pollster": "Sondatorul",
|
|
||||||
"annual_report.summary.archetype.replier": "Fluturele social",
|
|
||||||
"annual_report.summary.followers.followers": "urmăritori",
|
|
||||||
"annual_report.summary.followers.total": "{count} total",
|
|
||||||
"annual_report.summary.here_it_is": "Iată rezumatul dvs. al anului {year}:",
|
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "cea mai favorizată postare",
|
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "cea mai boostată postare",
|
|
||||||
"annual_report.summary.highlighted_post.by_replies": "postarea cu cele mai multe răspunsuri",
|
|
||||||
"annual_report.summary.most_used_app.most_used_app": "cea mai utilizată aplicație",
|
"annual_report.summary.most_used_app.most_used_app": "cea mai utilizată aplicație",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "cel mai utilizat hashtag",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "cel mai utilizat hashtag",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Niciunul",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "postări noi",
|
"annual_report.summary.new_posts.new_posts": "postări noi",
|
||||||
"attachments_list.unprocessed": "(neprocesate)",
|
"attachments_list.unprocessed": "(neprocesate)",
|
||||||
"audio.hide": "Ascunde audio",
|
"audio.hide": "Ascunde audio",
|
||||||
|
|||||||
@ -113,25 +113,25 @@
|
|||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Добавьте описание для людей с нарушениями зрения…",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "Добавьте описание для людей с нарушениями зрения…",
|
||||||
"alt_text_modal.done": "Готово",
|
"alt_text_modal.done": "Готово",
|
||||||
"announcement.announcement": "Объявление",
|
"announcement.announcement": "Объявление",
|
||||||
"annual_report.summary.archetype.booster": "Репостер",
|
"annual_report.announcement.action_dismiss": "Нет, спасибо",
|
||||||
"annual_report.summary.archetype.lurker": "Молчун",
|
"annual_report.announcement.action_view": "Посмотреть мой Wrapstodon",
|
||||||
"annual_report.summary.archetype.oracle": "Гуру",
|
"annual_report.announcement.title": "Wrapstodon {year} уже здесь",
|
||||||
"annual_report.summary.archetype.pollster": "Опросчик",
|
"annual_report.nav_item.badge": "Новый",
|
||||||
"annual_report.summary.archetype.replier": "Душа компании",
|
"annual_report.shared_page.donate": "Пожертвовать",
|
||||||
"annual_report.summary.followers.followers": "подписчиков",
|
"annual_report.shared_page.footer": "Сгенерировано с {heart} командой Mastodon",
|
||||||
"annual_report.summary.followers.total": "{count} за всё время",
|
"annual_report.summary.archetype.die_drei_fragezeichen": "???",
|
||||||
"annual_report.summary.here_it_is": "Вот ваши итоги {year} года:",
|
"annual_report.summary.archetype.reveal": "Показать мой архетип",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "пост с наибольшим количеством звёздочек",
|
"annual_report.summary.archetype.title_public": "Архетип {name}",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "самый популярный пост",
|
"annual_report.summary.archetype.title_self": "Ваш архетип",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "пост с наибольшим количеством ответов",
|
"annual_report.summary.close": "Закрыть",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
"annual_report.summary.copy_link": "Скопировать ссылку",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "наиболее часто используемое приложение",
|
"annual_report.summary.most_used_app.most_used_app": "наиболее часто используемое приложение",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "наиболее часто используемый хештег",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "наиболее часто используемый хештег",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Нет",
|
|
||||||
"annual_report.summary.new_posts.new_posts": "новых постов",
|
"annual_report.summary.new_posts.new_posts": "новых постов",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Всё это помещает вас в топ</topLabel><percentage></percentage><bottomLabel>пользователей {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Всё это помещает вас в топ</topLabel><percentage></percentage><bottomLabel>пользователей {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Роскомнадзор об этом не узнает.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Роскомнадзор об этом не узнает.",
|
||||||
"annual_report.summary.thanks": "Спасибо за то, что были вместе с Mastodon!",
|
"annual_report.summary.share_elsewhere": "Поделиться на других",
|
||||||
|
"annual_report.summary.share_on_mastodon": "Поделиться в Mastodon",
|
||||||
"attachments_list.unprocessed": "(не обработан)",
|
"attachments_list.unprocessed": "(не обработан)",
|
||||||
"audio.hide": "Скрыть аудио",
|
"audio.hide": "Скрыть аудио",
|
||||||
"block_modal.remote_users_caveat": "Мы попросим сервер {domain} уважать ваше решение, однако нельзя гарантировать, что он будет соблюдать блокировку, поскольку некоторые серверы могут по-разному обрабатывать запросы. Публичные посты по-прежнему могут быть видны неавторизованным пользователям.",
|
"block_modal.remote_users_caveat": "Мы попросим сервер {domain} уважать ваше решение, однако нельзя гарантировать, что он будет соблюдать блокировку, поскольку некоторые серверы могут по-разному обрабатывать запросы. Публичные посты по-прежнему могут быть видны неавторизованным пользователям.",
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user