mirror of
https://github.com/glitch-soc/mastodon.git
synced 2025-12-15 00:38:27 +00:00
Merge commit '3b52dca4057560c58b260433722d91650fcd5040' into glitch-soc/merge-upstream
Conflicts: - `app/serializers/initial_state_serializer.rb`: Upstream added a `features` attribute where glitch-soc had extra ones. Added `features` like upstream did.
This commit is contained in:
@@ -365,7 +365,7 @@ GEM
|
|||||||
json-ld-preloaded (3.3.1)
|
json-ld-preloaded (3.3.1)
|
||||||
json-ld (~> 3.3)
|
json-ld (~> 3.3)
|
||||||
rdf (~> 3.3)
|
rdf (~> 3.3)
|
||||||
json-schema (5.1.1)
|
json-schema (5.2.1)
|
||||||
addressable (~> 2.8)
|
addressable (~> 2.8)
|
||||||
bigdecimal (~> 3.1)
|
bigdecimal (~> 3.1)
|
||||||
jsonapi-renderer (0.2.2)
|
jsonapi-renderer (0.2.2)
|
||||||
@@ -761,7 +761,7 @@ GEM
|
|||||||
rspec-mocks (~> 3.0)
|
rspec-mocks (~> 3.0)
|
||||||
sidekiq (>= 5, < 9)
|
sidekiq (>= 5, < 9)
|
||||||
rspec-support (3.13.4)
|
rspec-support (3.13.4)
|
||||||
rubocop (1.77.0)
|
rubocop (1.78.0)
|
||||||
json (~> 2.3)
|
json (~> 2.3)
|
||||||
language_server-protocol (~> 3.17.0.2)
|
language_server-protocol (~> 3.17.0.2)
|
||||||
lint_roller (~> 1.1.0)
|
lint_roller (~> 1.1.0)
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ module ApplicationHelper
|
|||||||
|
|
||||||
def provider_sign_in_link(provider)
|
def provider_sign_in_link(provider)
|
||||||
label = Devise.omniauth_configs[provider]&.strategy&.display_name.presence || I18n.t("auth.providers.#{provider}", default: provider.to_s.chomp('_oauth2').capitalize)
|
label = Devise.omniauth_configs[provider]&.strategy&.display_name.presence || I18n.t("auth.providers.#{provider}", default: provider.to_s.chomp('_oauth2').capitalize)
|
||||||
link_to label, omniauth_authorize_path(:user, provider), class: "button button-#{provider}", method: :post
|
link_to label, omniauth_authorize_path(:user, provider), class: "btn button-#{provider}", method: :post
|
||||||
end
|
end
|
||||||
|
|
||||||
def locale_direction
|
def locale_direction
|
||||||
|
|||||||
@@ -27,6 +27,12 @@ module ContextHelper
|
|||||||
suspended: { 'toot' => 'http://joinmastodon.org/ns#', 'suspended' => 'toot:suspended' },
|
suspended: { 'toot' => 'http://joinmastodon.org/ns#', 'suspended' => 'toot:suspended' },
|
||||||
attribution_domains: { 'toot' => 'http://joinmastodon.org/ns#', 'attributionDomains' => { '@id' => 'toot:attributionDomains', '@type' => '@id' } },
|
attribution_domains: { 'toot' => 'http://joinmastodon.org/ns#', 'attributionDomains' => { '@id' => 'toot:attributionDomains', '@type' => '@id' } },
|
||||||
quote_requests: { 'QuoteRequest' => 'https://w3id.org/fep/044f#QuoteRequest' },
|
quote_requests: { 'QuoteRequest' => 'https://w3id.org/fep/044f#QuoteRequest' },
|
||||||
|
quotes: {
|
||||||
|
'quote' => 'https://w3id.org/fep/044f#quote',
|
||||||
|
'quoteUri' => 'http://fedibird.com/ns#quoteUri',
|
||||||
|
'_misskey_quote' => 'https://misskey-hub.net/ns#_misskey_quote',
|
||||||
|
'quoteAuthorization' => 'https://w3id.org/fep/044f#quoteAuthorization',
|
||||||
|
},
|
||||||
interaction_policies: {
|
interaction_policies: {
|
||||||
'gts' => 'https://gotosocial.org/ns#',
|
'gts' => 'https://gotosocial.org/ns#',
|
||||||
'interactionPolicy' => { '@id' => 'gts:interactionPolicy', '@type' => '@id' },
|
'interactionPolicy' => { '@id' => 'gts:interactionPolicy', '@type' => '@id' },
|
||||||
|
|||||||
@@ -1,12 +1,30 @@
|
|||||||
|
import { useCallback } from 'react';
|
||||||
|
|
||||||
import { useLinks } from 'mastodon/hooks/useLinks';
|
import { useLinks } from 'mastodon/hooks/useLinks';
|
||||||
|
|
||||||
export const AccountBio: React.FC<{
|
interface AccountBioProps {
|
||||||
note: string;
|
note: string;
|
||||||
className: string;
|
className: string;
|
||||||
}> = ({ note, className }) => {
|
dropdownAccountId?: string;
|
||||||
const handleClick = useLinks();
|
}
|
||||||
|
|
||||||
if (note.length === 0 || note === '<p></p>') {
|
export const AccountBio: React.FC<AccountBioProps> = ({
|
||||||
|
note,
|
||||||
|
className,
|
||||||
|
dropdownAccountId,
|
||||||
|
}) => {
|
||||||
|
const handleClick = useLinks(!!dropdownAccountId);
|
||||||
|
const handleNodeChange = useCallback(
|
||||||
|
(node: HTMLDivElement | null) => {
|
||||||
|
if (!dropdownAccountId || !node || node.childNodes.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
addDropdownToHashtags(node, dropdownAccountId);
|
||||||
|
},
|
||||||
|
[dropdownAccountId],
|
||||||
|
);
|
||||||
|
|
||||||
|
if (note.length === 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -15,6 +33,28 @@ export const AccountBio: React.FC<{
|
|||||||
className={`${className} translate`}
|
className={`${className} translate`}
|
||||||
dangerouslySetInnerHTML={{ __html: note }}
|
dangerouslySetInnerHTML={{ __html: note }}
|
||||||
onClickCapture={handleClick}
|
onClickCapture={handleClick}
|
||||||
|
ref={handleNodeChange}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function addDropdownToHashtags(node: HTMLElement | null, accountId: string) {
|
||||||
|
if (!node) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (const childNode of node.childNodes) {
|
||||||
|
if (!(childNode instanceof HTMLElement)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
childNode instanceof HTMLAnchorElement &&
|
||||||
|
(childNode.classList.contains('hashtag') ||
|
||||||
|
childNode.innerText.startsWith('#')) &&
|
||||||
|
!childNode.dataset.menuHashtag
|
||||||
|
) {
|
||||||
|
childNode.dataset.menuHashtag = accountId;
|
||||||
|
} else if (childNode.childNodes.length > 0) {
|
||||||
|
addDropdownToHashtags(childNode, accountId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import classNames from 'classnames';
|
|||||||
import { Helmet } from 'react-helmet';
|
import { Helmet } from 'react-helmet';
|
||||||
import { NavLink } from 'react-router-dom';
|
import { NavLink } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { AccountBio } from '@/mastodon/components/account_bio';
|
||||||
import CheckIcon from '@/material-icons/400-24px/check.svg?react';
|
import CheckIcon from '@/material-icons/400-24px/check.svg?react';
|
||||||
import LockIcon from '@/material-icons/400-24px/lock.svg?react';
|
import LockIcon from '@/material-icons/400-24px/lock.svg?react';
|
||||||
import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react';
|
import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react';
|
||||||
@@ -773,7 +774,6 @@ export const AccountHeader: React.FC<{
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const content = { __html: account.note_emojified };
|
|
||||||
const displayNameHtml = { __html: account.display_name_html };
|
const displayNameHtml = { __html: account.display_name_html };
|
||||||
const fields = account.fields;
|
const fields = account.fields;
|
||||||
const isLocal = !account.acct.includes('@');
|
const isLocal = !account.acct.includes('@');
|
||||||
@@ -897,12 +897,11 @@ export const AccountHeader: React.FC<{
|
|||||||
<AccountNote accountId={accountId} />
|
<AccountNote accountId={accountId} />
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{account.note.length > 0 && account.note !== '<p></p>' && (
|
<AccountBio
|
||||||
<div
|
note={account.note_emojified}
|
||||||
className='account__header__content translate'
|
dropdownAccountId={accountId}
|
||||||
dangerouslySetInnerHTML={content}
|
className='account__header__content'
|
||||||
/>
|
/>
|
||||||
)}
|
|
||||||
|
|
||||||
<div className='account__header__fields'>
|
<div className='account__header__fields'>
|
||||||
<dl>
|
<dl>
|
||||||
|
|||||||
@@ -8,13 +8,14 @@ import { openURL } from 'mastodon/actions/search';
|
|||||||
import { useAppDispatch } from 'mastodon/store';
|
import { useAppDispatch } from 'mastodon/store';
|
||||||
|
|
||||||
const isMentionClick = (element: HTMLAnchorElement) =>
|
const isMentionClick = (element: HTMLAnchorElement) =>
|
||||||
element.classList.contains('mention');
|
element.classList.contains('mention') &&
|
||||||
|
!element.classList.contains('hashtag');
|
||||||
|
|
||||||
const isHashtagClick = (element: HTMLAnchorElement) =>
|
const isHashtagClick = (element: HTMLAnchorElement) =>
|
||||||
element.textContent?.[0] === '#' ||
|
element.textContent?.[0] === '#' ||
|
||||||
element.previousSibling?.textContent?.endsWith('#');
|
element.previousSibling?.textContent?.endsWith('#');
|
||||||
|
|
||||||
export const useLinks = () => {
|
export const useLinks = (skipHashtags?: boolean) => {
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
const dispatch = useAppDispatch();
|
const dispatch = useAppDispatch();
|
||||||
|
|
||||||
@@ -61,12 +62,12 @@ export const useLinks = () => {
|
|||||||
if (isMentionClick(target)) {
|
if (isMentionClick(target)) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
void handleMentionClick(target);
|
void handleMentionClick(target);
|
||||||
} else if (isHashtagClick(target)) {
|
} else if (isHashtagClick(target) && !skipHashtags) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
handleHashtagClick(target);
|
handleHashtagClick(target);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[handleMentionClick, handleHashtagClick],
|
[skipHashtags, handleMentionClick, handleHashtagClick],
|
||||||
);
|
);
|
||||||
|
|
||||||
return handleClick;
|
return handleClick;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
// @ts-check
|
// @ts-check
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {[code: string, name: string, localName: string]} InitialStateLanguage
|
* @typedef {[code: string, name: string, localName: string]} InitialStateLanguage
|
||||||
*/
|
*/
|
||||||
@@ -64,6 +63,7 @@
|
|||||||
* @property {boolean=} critical_updates_pending
|
* @property {boolean=} critical_updates_pending
|
||||||
* @property {InitialStateMeta} meta
|
* @property {InitialStateMeta} meta
|
||||||
* @property {Role?} role
|
* @property {Role?} role
|
||||||
|
* @property {string[]} features
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const element = document.getElementById('initial-state');
|
const element = document.getElementById('initial-state');
|
||||||
@@ -140,4 +140,12 @@ export function getAccessToken() {
|
|||||||
return getMeta('access_token');
|
return getMeta('access_token');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} feature
|
||||||
|
* @returns {boolean}
|
||||||
|
*/
|
||||||
|
export function isFeatureEnabled(feature) {
|
||||||
|
return initialState?.features?.includes(feature) || false;
|
||||||
|
}
|
||||||
|
|
||||||
export default initialState;
|
export default initialState;
|
||||||
|
|||||||
@@ -219,6 +219,9 @@
|
|||||||
"confirmations.delete_list.confirm": "Elimina",
|
"confirmations.delete_list.confirm": "Elimina",
|
||||||
"confirmations.delete_list.message": "Segur que vols suprimir permanentment aquesta llista?",
|
"confirmations.delete_list.message": "Segur que vols suprimir permanentment aquesta llista?",
|
||||||
"confirmations.delete_list.title": "Eliminar la llista?",
|
"confirmations.delete_list.title": "Eliminar la llista?",
|
||||||
|
"confirmations.discard_draft.confirm": "Descarta i continua",
|
||||||
|
"confirmations.discard_draft.edit.cancel": "Continua l'edició",
|
||||||
|
"confirmations.discard_draft.post.cancel": "Reprendre l'esborrany",
|
||||||
"confirmations.discard_edit_media.confirm": "Descarta",
|
"confirmations.discard_edit_media.confirm": "Descarta",
|
||||||
"confirmations.discard_edit_media.message": "Tens canvis no desats en la descripció del contingut o en la previsualització, els vols descartar?",
|
"confirmations.discard_edit_media.message": "Tens canvis no desats en la descripció del contingut o en la previsualització, els vols descartar?",
|
||||||
"confirmations.follow_to_list.confirm": "Seguir i afegir a una llista",
|
"confirmations.follow_to_list.confirm": "Seguir i afegir a una llista",
|
||||||
@@ -792,6 +795,7 @@
|
|||||||
"report_notification.categories.violation": "Violació de norma",
|
"report_notification.categories.violation": "Violació de norma",
|
||||||
"report_notification.categories.violation_sentence": "violació de normes",
|
"report_notification.categories.violation_sentence": "violació de normes",
|
||||||
"report_notification.open": "Obre l'informe",
|
"report_notification.open": "Obre l'informe",
|
||||||
|
"search.clear": "Esborra la cerca",
|
||||||
"search.no_recent_searches": "No hi ha cerques recents",
|
"search.no_recent_searches": "No hi ha cerques recents",
|
||||||
"search.placeholder": "Cerca",
|
"search.placeholder": "Cerca",
|
||||||
"search.quick_action.account_search": "Perfils coincidint amb {x}",
|
"search.quick_action.account_search": "Perfils coincidint amb {x}",
|
||||||
|
|||||||
@@ -386,7 +386,7 @@
|
|||||||
"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": "Hashtag, som følges",
|
"followed_tags": "Hashtags, som følges",
|
||||||
"footer.about": "Om",
|
"footer.about": "Om",
|
||||||
"footer.directory": "Profiloversigt",
|
"footer.directory": "Profiloversigt",
|
||||||
"footer.get_app": "Hent appen",
|
"footer.get_app": "Hent appen",
|
||||||
@@ -560,7 +560,7 @@
|
|||||||
"navigation_bar.favourites": "Favoritter",
|
"navigation_bar.favourites": "Favoritter",
|
||||||
"navigation_bar.filters": "Skjulte ord",
|
"navigation_bar.filters": "Skjulte ord",
|
||||||
"navigation_bar.follow_requests": "Følgeanmodninger",
|
"navigation_bar.follow_requests": "Følgeanmodninger",
|
||||||
"navigation_bar.followed_tags": "Hashtag, som følges",
|
"navigation_bar.followed_tags": "Hashtags, som følges",
|
||||||
"navigation_bar.follows_and_followers": "Følges og følgere",
|
"navigation_bar.follows_and_followers": "Følges og følgere",
|
||||||
"navigation_bar.import_export": "Import og eksport",
|
"navigation_bar.import_export": "Import og eksport",
|
||||||
"navigation_bar.lists": "Lister",
|
"navigation_bar.lists": "Lister",
|
||||||
@@ -572,7 +572,7 @@
|
|||||||
"navigation_bar.mutes": "Skjulte brugere",
|
"navigation_bar.mutes": "Skjulte brugere",
|
||||||
"navigation_bar.opened_in_classic_interface": "Indlæg, konti og visse andre sider åbnes som standard i den klassiske webgrænseflade.",
|
"navigation_bar.opened_in_classic_interface": "Indlæg, konti og visse andre sider åbnes som standard i den klassiske webgrænseflade.",
|
||||||
"navigation_bar.preferences": "Præferencer",
|
"navigation_bar.preferences": "Præferencer",
|
||||||
"navigation_bar.privacy_and_reach": "Fortrolighed og udbredelse",
|
"navigation_bar.privacy_and_reach": "Fortrolighed og rækkevidde",
|
||||||
"navigation_bar.search": "Søg",
|
"navigation_bar.search": "Søg",
|
||||||
"navigation_bar.search_trends": "Søg/Trender",
|
"navigation_bar.search_trends": "Søg/Trender",
|
||||||
"navigation_panel.collapse_followed_tags": "Sammenfold menuen Fulgte hashtags",
|
"navigation_panel.collapse_followed_tags": "Sammenfold menuen Fulgte hashtags",
|
||||||
|
|||||||
@@ -569,6 +569,7 @@
|
|||||||
"notification.admin.sign_up.name_and_others": "{name} eta {count, plural, one {erabiltzaile # gehiago} other {# erabiltzaile gehiago}} erregistratu dira",
|
"notification.admin.sign_up.name_and_others": "{name} eta {count, plural, one {erabiltzaile # gehiago} other {# erabiltzaile gehiago}} erregistratu dira",
|
||||||
"notification.favourite": "{name}(e)k zure bidalketa gogoko du",
|
"notification.favourite": "{name}(e)k zure bidalketa gogoko du",
|
||||||
"notification.favourite.name_and_others_with_link": "{name} eta <a>{count, plural, one {erabiltzaile # gehiagok} other {# erabiltzaile gehiagok}}</a> zure bidalketa gogoko dute",
|
"notification.favourite.name_and_others_with_link": "{name} eta <a>{count, plural, one {erabiltzaile # gehiagok} other {# erabiltzaile gehiagok}}</a> zure bidalketa gogoko dute",
|
||||||
|
"notification.favourite_pm": "{name}-ek zure aipamen pribatua gogokoetan jarri du",
|
||||||
"notification.follow": "{name}(e)k jarraitzen dizu",
|
"notification.follow": "{name}(e)k jarraitzen dizu",
|
||||||
"notification.follow_request": "{name}(e)k zu jarraitzeko eskaera egin du",
|
"notification.follow_request": "{name}(e)k zu jarraitzeko eskaera egin du",
|
||||||
"notification.follow_request.name_and_others": "{name} eta {count, plural, one {erabiltzaile # gehiagok} other {# erabiltzaile gehiagok}} zu jarraitzeko eskaera egin dute",
|
"notification.follow_request.name_and_others": "{name} eta {count, plural, one {erabiltzaile # gehiagok} other {# erabiltzaile gehiagok}} zu jarraitzeko eskaera egin dute",
|
||||||
@@ -902,5 +903,7 @@
|
|||||||
"video.hide": "Ezkutatu bideoa",
|
"video.hide": "Ezkutatu bideoa",
|
||||||
"video.pause": "Pausatu",
|
"video.pause": "Pausatu",
|
||||||
"video.play": "Jo",
|
"video.play": "Jo",
|
||||||
|
"video.unmute": "Soinua ezarri",
|
||||||
|
"video.volume_down": "Bolumena jaitsi",
|
||||||
"video.volume_up": "Bolumena Igo"
|
"video.volume_up": "Bolumena Igo"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -356,6 +356,7 @@
|
|||||||
"hashtag.counter_by_accounts": "{count, plural, one {{counter} partisipante} other {{counter} partisipantes}}",
|
"hashtag.counter_by_accounts": "{count, plural, one {{counter} partisipante} other {{counter} partisipantes}}",
|
||||||
"hashtag.counter_by_uses": "{count, plural, one {{counter} publikasyon} other {{counter} publikasyones}}",
|
"hashtag.counter_by_uses": "{count, plural, one {{counter} publikasyon} other {{counter} publikasyones}}",
|
||||||
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} publikasyon} other {{counter} publikasyones}} oy",
|
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} publikasyon} other {{counter} publikasyones}} oy",
|
||||||
|
"hashtag.feature": "Avalia en profil",
|
||||||
"hashtag.follow": "Sige etiketa",
|
"hashtag.follow": "Sige etiketa",
|
||||||
"hashtag.mute": "Silensia #{hashtag}",
|
"hashtag.mute": "Silensia #{hashtag}",
|
||||||
"hashtag.unfeature": "No avalia en profil",
|
"hashtag.unfeature": "No avalia en profil",
|
||||||
@@ -390,6 +391,7 @@
|
|||||||
"interaction_modal.title.reblog": "Repartaja publikasyon de {name}",
|
"interaction_modal.title.reblog": "Repartaja publikasyon de {name}",
|
||||||
"interaction_modal.title.reply": "Arisponde a publikasyon de {name}",
|
"interaction_modal.title.reply": "Arisponde a publikasyon de {name}",
|
||||||
"interaction_modal.title.vote": "Vota en la anketa de {name}",
|
"interaction_modal.title.vote": "Vota en la anketa de {name}",
|
||||||
|
"interaction_modal.username_prompt": "Por enshemplo {example}",
|
||||||
"intervals.full.days": "{number, plural, one {# diya} other {# diyas}}",
|
"intervals.full.days": "{number, plural, one {# diya} other {# diyas}}",
|
||||||
"intervals.full.hours": "{number, plural, one {# ora} other {# oras}}",
|
"intervals.full.hours": "{number, plural, one {# ora} other {# oras}}",
|
||||||
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
|
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
|
||||||
@@ -442,6 +444,7 @@
|
|||||||
"lists.delete": "Efasa lista",
|
"lists.delete": "Efasa lista",
|
||||||
"lists.done": "Fecho",
|
"lists.done": "Fecho",
|
||||||
"lists.edit": "Edita lista",
|
"lists.edit": "Edita lista",
|
||||||
|
"lists.list_name": "Nombre de lista",
|
||||||
"lists.new_list_name": "Nombre de mueva lista",
|
"lists.new_list_name": "Nombre de mueva lista",
|
||||||
"lists.replies_policy.followed": "Kualseker utilizador segido",
|
"lists.replies_policy.followed": "Kualseker utilizador segido",
|
||||||
"lists.replies_policy.list": "Miembros de la lista",
|
"lists.replies_policy.list": "Miembros de la lista",
|
||||||
@@ -738,6 +741,7 @@
|
|||||||
"status.reblogs.empty": "Ainda nadie tiene repartajado esta publikasyon. Kuando algien lo aga, se amostrara aki.",
|
"status.reblogs.empty": "Ainda nadie tiene repartajado esta publikasyon. Kuando algien lo aga, se amostrara aki.",
|
||||||
"status.redraft": "Efasa i eskrive de muevo",
|
"status.redraft": "Efasa i eskrive de muevo",
|
||||||
"status.remove_bookmark": "Kita markador",
|
"status.remove_bookmark": "Kita markador",
|
||||||
|
"status.remove_favourite": "Kita de los favoritos",
|
||||||
"status.replied_in_thread": "Arispondo en filo",
|
"status.replied_in_thread": "Arispondo en filo",
|
||||||
"status.replied_to": "Arispondio a {name}",
|
"status.replied_to": "Arispondio a {name}",
|
||||||
"status.reply": "Arisponde",
|
"status.reply": "Arisponde",
|
||||||
@@ -758,6 +762,7 @@
|
|||||||
"subscribed_languages.save": "Guadra trokamientos",
|
"subscribed_languages.save": "Guadra trokamientos",
|
||||||
"subscribed_languages.target": "Troka linguas abonadas para {target}",
|
"subscribed_languages.target": "Troka linguas abonadas para {target}",
|
||||||
"tabs_bar.home": "Linya prinsipala",
|
"tabs_bar.home": "Linya prinsipala",
|
||||||
|
"tabs_bar.menu": "Menu",
|
||||||
"tabs_bar.notifications": "Avizos",
|
"tabs_bar.notifications": "Avizos",
|
||||||
"tabs_bar.publish": "Mueva publikasyon",
|
"tabs_bar.publish": "Mueva publikasyon",
|
||||||
"tabs_bar.search": "Bushkeda",
|
"tabs_bar.search": "Bushkeda",
|
||||||
|
|||||||
@@ -126,6 +126,9 @@ export function createAccountFromServerJSON(serverJSON: ApiAccountJSON) {
|
|||||||
? accountJSON.username
|
? accountJSON.username
|
||||||
: accountJSON.display_name;
|
: accountJSON.display_name;
|
||||||
|
|
||||||
|
const accountNote =
|
||||||
|
accountJSON.note && accountJSON.note !== '<p></p>' ? accountJSON.note : '';
|
||||||
|
|
||||||
return AccountFactory({
|
return AccountFactory({
|
||||||
...accountJSON,
|
...accountJSON,
|
||||||
moved: moved?.id,
|
moved: moved?.id,
|
||||||
@@ -142,8 +145,8 @@ export function createAccountFromServerJSON(serverJSON: ApiAccountJSON) {
|
|||||||
escapeTextContentForBrowser(displayName),
|
escapeTextContentForBrowser(displayName),
|
||||||
emojiMap,
|
emojiMap,
|
||||||
),
|
),
|
||||||
note_emojified: emojify(accountJSON.note, emojiMap),
|
note_emojified: emojify(accountNote, emojiMap),
|
||||||
note_plain: unescapeHTML(accountJSON.note),
|
note_plain: unescapeHTML(accountNote),
|
||||||
url:
|
url:
|
||||||
accountJSON.url.startsWith('http://') ||
|
accountJSON.url.startsWith('http://') ||
|
||||||
accountJSON.url.startsWith('https://')
|
accountJSON.url.startsWith('https://')
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class AnnualReport::Archetype < AnnualReport::Source
|
|||||||
end
|
end
|
||||||
|
|
||||||
def polls_count
|
def polls_count
|
||||||
@polls_count ||= report_statuses.where.not(poll_id: nil).count
|
@polls_count ||= report_statuses.only_polls.count
|
||||||
end
|
end
|
||||||
|
|
||||||
def reblogs_count
|
def reblogs_count
|
||||||
@@ -36,7 +36,7 @@ class AnnualReport::Archetype < AnnualReport::Source
|
|||||||
end
|
end
|
||||||
|
|
||||||
def replies_count
|
def replies_count
|
||||||
@replies_count ||= report_statuses.where.not(in_reply_to_id: nil).where.not(in_reply_to_account_id: @account.id).count
|
@replies_count ||= report_statuses.where.not(in_reply_to_id: nil).not_replying_to_account(@account).count
|
||||||
end
|
end
|
||||||
|
|
||||||
def standalone_count
|
def standalone_count
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class AnnualReport::CommonlyInteractedWithAccounts < AnnualReport::Source
|
|||||||
private
|
private
|
||||||
|
|
||||||
def commonly_interacted_with_accounts
|
def commonly_interacted_with_accounts
|
||||||
report_statuses.where.not(in_reply_to_account_id: @account.id).group(:in_reply_to_account_id).having(minimum_interaction_count).order(count_all: :desc).limit(SET_SIZE).count
|
report_statuses.not_replying_to_account(@account).group(:in_reply_to_account_id).having(minimum_interaction_count).order(count_all: :desc).limit(SET_SIZE).count
|
||||||
end
|
end
|
||||||
|
|
||||||
def minimum_interaction_count
|
def minimum_interaction_count
|
||||||
|
|||||||
@@ -2,20 +2,44 @@
|
|||||||
|
|
||||||
class AnnualReport::TopStatuses < AnnualReport::Source
|
class AnnualReport::TopStatuses < AnnualReport::Source
|
||||||
def generate
|
def generate
|
||||||
top_reblogs = base_scope.order(reblogs_count: :desc).first&.id
|
|
||||||
top_favourites = base_scope.where.not(id: top_reblogs).order(favourites_count: :desc).first&.id
|
|
||||||
top_replies = base_scope.where.not(id: [top_reblogs, top_favourites]).order(replies_count: :desc).first&.id
|
|
||||||
|
|
||||||
{
|
{
|
||||||
top_statuses: {
|
top_statuses: {
|
||||||
by_reblogs: top_reblogs&.to_s,
|
by_reblogs: status_identifier(most_reblogged_status),
|
||||||
by_favourites: top_favourites&.to_s,
|
by_favourites: status_identifier(most_favourited_status),
|
||||||
by_replies: top_replies&.to_s,
|
by_replies: status_identifier(most_replied_status),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def status_identifier(status)
|
||||||
|
status.id.to_s if status.present?
|
||||||
|
end
|
||||||
|
|
||||||
|
def most_reblogged_status
|
||||||
|
base_scope
|
||||||
|
.order(reblogs_count: :desc)
|
||||||
|
.first
|
||||||
|
end
|
||||||
|
|
||||||
|
def most_favourited_status
|
||||||
|
base_scope
|
||||||
|
.excluding(most_reblogged_status)
|
||||||
|
.order(favourites_count: :desc)
|
||||||
|
.first
|
||||||
|
end
|
||||||
|
|
||||||
|
def most_replied_status
|
||||||
|
base_scope
|
||||||
|
.excluding(most_reblogged_status, most_favourited_status)
|
||||||
|
.order(replies_count: :desc)
|
||||||
|
.first
|
||||||
|
end
|
||||||
|
|
||||||
def base_scope
|
def base_scope
|
||||||
report_statuses.public_visibility.joins(:status_stat)
|
report_statuses
|
||||||
|
.public_visibility
|
||||||
|
.joins(:status_stat)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ class AnnualReport::TypeDistribution < AnnualReport::Source
|
|||||||
type_distribution: {
|
type_distribution: {
|
||||||
total: report_statuses.count,
|
total: report_statuses.count,
|
||||||
reblogs: report_statuses.only_reblogs.count,
|
reblogs: report_statuses.only_reblogs.count,
|
||||||
replies: report_statuses.where.not(in_reply_to_id: nil).where.not(in_reply_to_account_id: @account.id).count,
|
replies: report_statuses.where.not(in_reply_to_id: nil).not_replying_to_account(@account).count,
|
||||||
standalone: report_statuses.without_replies.without_reblogs.count,
|
standalone: report_statuses.without_replies.without_reblogs.count,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ class AccountStatusesCleanupPolicy < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def without_poll_scope
|
def without_poll_scope
|
||||||
Status.where(poll_id: nil)
|
Status.without_polls
|
||||||
end
|
end
|
||||||
|
|
||||||
def without_popular_scope
|
def without_popular_scope
|
||||||
|
|||||||
@@ -10,12 +10,6 @@ module DatabaseViewRecord
|
|||||||
concurrently: true,
|
concurrently: true,
|
||||||
cascade: false
|
cascade: false
|
||||||
)
|
)
|
||||||
rescue ActiveRecord::StatementInvalid
|
|
||||||
Scenic.database.refresh_materialized_view(
|
|
||||||
table_name,
|
|
||||||
concurrently: false,
|
|
||||||
cascade: false
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -4,14 +4,8 @@ module FollowLimitable
|
|||||||
extend ActiveSupport::Concern
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
included do
|
included do
|
||||||
validates_with FollowLimitValidator, on: :create, unless: :bypass_follow_limit?
|
validates_with FollowLimitValidator, on: :create, unless: :bypass_follow_limit
|
||||||
end
|
|
||||||
|
|
||||||
def bypass_follow_limit=(value)
|
attribute :bypass_follow_limit, :boolean, default: false
|
||||||
@bypass_follow_limit = value
|
|
||||||
end
|
|
||||||
|
|
||||||
def bypass_follow_limit?
|
|
||||||
@bypass_follow_limit
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -124,7 +124,10 @@ class Status < ApplicationRecord
|
|||||||
scope :without_replies, -> { not_reply.or(reply_to_account) }
|
scope :without_replies, -> { not_reply.or(reply_to_account) }
|
||||||
scope :not_reply, -> { where(reply: false) }
|
scope :not_reply, -> { where(reply: false) }
|
||||||
scope :only_reblogs, -> { where.not(reblog_of_id: nil) }
|
scope :only_reblogs, -> { where.not(reblog_of_id: nil) }
|
||||||
|
scope :only_polls, -> { where.not(poll_id: nil) }
|
||||||
|
scope :without_polls, -> { where(poll_id: nil) }
|
||||||
scope :reply_to_account, -> { where(arel_table[:in_reply_to_account_id].eq arel_table[:account_id]) }
|
scope :reply_to_account, -> { where(arel_table[:in_reply_to_account_id].eq arel_table[:account_id]) }
|
||||||
|
scope :not_replying_to_account, ->(account) { where.not(in_reply_to_account: account) }
|
||||||
scope :without_reblogs, -> { where(statuses: { reblog_of_id: nil }) }
|
scope :without_reblogs, -> { where(statuses: { reblog_of_id: nil }) }
|
||||||
scope :tagged_with, ->(tag_ids) { joins(:statuses_tags).where(statuses_tags: { tag_id: tag_ids }) }
|
scope :tagged_with, ->(tag_ids) { joins(:statuses_tags).where(statuses_tags: { tag_id: tag_ids }) }
|
||||||
scope :not_excluded_by_account, ->(account) { where.not(account_id: account.excluded_from_timeline_account_ids) }
|
scope :not_excluded_by_account, ->(account) { where.not(account_id: account.excluded_from_timeline_account_ids) }
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ class InitialStateSerializer < ActiveModel::Serializer
|
|||||||
attributes :meta, :compose, :accounts,
|
attributes :meta, :compose, :accounts,
|
||||||
:media_attachments, :settings,
|
:media_attachments, :settings,
|
||||||
:max_feed_hashtags, :poll_limits,
|
:max_feed_hashtags, :poll_limits,
|
||||||
:languages
|
:languages, :features
|
||||||
|
|
||||||
attribute :critical_updates_pending, if: -> { object&.role&.can?(:view_devops) && SoftwareUpdate.check_enabled? }
|
attribute :critical_updates_pending, if: -> { object&.role&.can?(:view_devops) && SoftwareUpdate.check_enabled? }
|
||||||
|
|
||||||
@@ -102,6 +102,10 @@ class InitialStateSerializer < ActiveModel::Serializer
|
|||||||
LanguagesHelper::SUPPORTED_LOCALES.map { |(key, value)| [key, value[0], value[1]] }
|
LanguagesHelper::SUPPORTED_LOCALES.map { |(key, value)| [key, value[0], value[1]] }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def features
|
||||||
|
Mastodon::Feature.enabled_features
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def default_meta_store
|
def default_meta_store
|
||||||
|
|||||||
@@ -578,6 +578,11 @@ ca:
|
|||||||
all: Totes
|
all: Totes
|
||||||
limited: Limitades
|
limited: Limitades
|
||||||
title: Moderació
|
title: Moderació
|
||||||
|
moderation_notes:
|
||||||
|
create: Afegeix una nota de moderació
|
||||||
|
created_msg: S'ha creat la nota de moderació d'instància.
|
||||||
|
destroyed_msg: S'ha esborrat la nota de moderació d'instància.
|
||||||
|
title: Notes de moderació
|
||||||
private_comment: Comentari privat
|
private_comment: Comentari privat
|
||||||
public_comment: Comentari públic
|
public_comment: Comentari públic
|
||||||
purge: Purga
|
purge: Purga
|
||||||
@@ -1339,6 +1344,10 @@ ca:
|
|||||||
basic_information: Informació bàsica
|
basic_information: Informació bàsica
|
||||||
hint_html: "<strong>Personalitza el que la gent veu en el teu perfil públic i a prop dels teus tuts..</strong> És més probable que altres persones et segueixin i interaccionin amb tu quan tens emplenat el teu perfil i amb la teva imatge."
|
hint_html: "<strong>Personalitza el que la gent veu en el teu perfil públic i a prop dels teus tuts..</strong> És més probable que altres persones et segueixin i interaccionin amb tu quan tens emplenat el teu perfil i amb la teva imatge."
|
||||||
other: Altres
|
other: Altres
|
||||||
|
emoji_styles:
|
||||||
|
auto: Automàtic
|
||||||
|
native: Nadiu
|
||||||
|
twemoji: Twemoji
|
||||||
errors:
|
errors:
|
||||||
'400': La sol·licitud que vas emetre no era vàlida o no era correcta.
|
'400': La sol·licitud que vas emetre no era vàlida o no era correcta.
|
||||||
'403': No tens permís per a veure aquesta pàgina.
|
'403': No tens permís per a veure aquesta pàgina.
|
||||||
|
|||||||
@@ -653,7 +653,7 @@ da:
|
|||||||
mark_as_sensitive_description_html: Medierne i det anmeldte indlæg markeres som sensitive, og en advarsel (strike) registreres mhp. eskalering ved evt. fremtidige overtrædelser fra samme konto.
|
mark_as_sensitive_description_html: Medierne i det anmeldte indlæg markeres som sensitive, og en advarsel (strike) registreres mhp. eskalering ved evt. fremtidige overtrædelser fra samme konto.
|
||||||
other_description_html: Se flere muligheder for at kontrollere kontoens adfærd og tilpasse kommunikationen til den anmeldte konto.
|
other_description_html: Se flere muligheder for at kontrollere kontoens adfærd og tilpasse kommunikationen til den anmeldte konto.
|
||||||
resolve_description_html: Ingen foranstaltninger træffes mod den anmeldte konto, ingen advarsel (strike) registreres og anmeldelsen lukkes.
|
resolve_description_html: Ingen foranstaltninger træffes mod den anmeldte konto, ingen advarsel (strike) registreres og anmeldelsen lukkes.
|
||||||
silence_description_html: Kontoen vil kun være synlig for følgerene eller dem, som manuelt slå den op, hvilket markant begrænser dens udbredelse. Kan altid omgøres. Lukker alle indrapporteringer af kontoen.
|
silence_description_html: Kontoen vil kun være synlig for dem, der allerede følger den eller manuelt slår den op, hvilket alvorligt begrænser dens rækkevidde. Kan altid omgøres. Lukker alle indrapporteringer af denne konto.
|
||||||
suspend_description_html: Kontoen inkl. alt indhold utilgængeliggøres og interaktion umuliggøres, og den slettes på et tidspunkt. Kan omgøres inden for 30 dage. Lukker alle indrapporteringer af kontoen.
|
suspend_description_html: Kontoen inkl. alt indhold utilgængeliggøres og interaktion umuliggøres, og den slettes på et tidspunkt. Kan omgøres inden for 30 dage. Lukker alle indrapporteringer af kontoen.
|
||||||
actions_description_html: Afgør, hvilke foranstaltning, der skal træffes for at løse denne anmeldelse. Ved en straffende foranstaltning mod den anmeldte konto, fremsendes en e-mailnotifikation, undtagen når kategorien <strong>Spam</strong> er valgt.
|
actions_description_html: Afgør, hvilke foranstaltning, der skal træffes for at løse denne anmeldelse. Ved en straffende foranstaltning mod den anmeldte konto, fremsendes en e-mailnotifikation, undtagen når kategorien <strong>Spam</strong> er valgt.
|
||||||
actions_description_remote_html: Fastslå en nødvendig handling mhp. at løse denne anmeldelse. Dette vil kun påvirke <strong>din</strong> servers kommunikation med, og indholdshåndtering for, fjernkontoen.
|
actions_description_remote_html: Fastslå en nødvendig handling mhp. at løse denne anmeldelse. Dette vil kun påvirke <strong>din</strong> servers kommunikation med, og indholdshåndtering for, fjernkontoen.
|
||||||
@@ -1266,8 +1266,8 @@ da:
|
|||||||
user_privacy_agreement_html: Jeg accepterer <a href="%{privacy_policy_path}" target="_blank">fortrolighedspolitikken</a>
|
user_privacy_agreement_html: Jeg accepterer <a href="%{privacy_policy_path}" target="_blank">fortrolighedspolitikken</a>
|
||||||
author_attribution:
|
author_attribution:
|
||||||
example_title: Eksempeltekst
|
example_title: Eksempeltekst
|
||||||
hint_html: Skriver du nyheder eller blogartikler uden for Mastodon? Styr, hvordan man bliver krediteret, når disse deles på Mastodon.
|
hint_html: Skriver du nyheder eller blogartikler uden for Mastodon? Styr, hvordan du bliver krediteret, når de bliver delt på Mastodon.
|
||||||
instructions: 'Sørg for, at denne kode er i artikelens HTML:'
|
instructions: 'Sørg for, at denne kode er i din artikels HTML:'
|
||||||
more_from_html: Flere fra %{name}
|
more_from_html: Flere fra %{name}
|
||||||
s_blog: "%{name}s blog"
|
s_blog: "%{name}s blog"
|
||||||
then_instructions: Tilføj dernæst publikationsdomænenavnet i feltet nedenfor.
|
then_instructions: Tilføj dernæst publikationsdomænenavnet i feltet nedenfor.
|
||||||
@@ -1347,7 +1347,7 @@ da:
|
|||||||
your_appeal_rejected: Din appel er afvist
|
your_appeal_rejected: Din appel er afvist
|
||||||
edit_profile:
|
edit_profile:
|
||||||
basic_information: Oplysninger
|
basic_information: Oplysninger
|
||||||
hint_html: "<strong>Tilpas hvad folk ser på din offentlige profil og ved siden af dine indlæg.</strong> Andre personer vil mere sandsynligt følge dig tilbage og interagere med dig, når du har en udfyldt profil og et profilbillede."
|
hint_html: "<strong>Tilpas, hvad folk ser på din offentlige profil og ved siden af dine indlæg.</strong> Andre personer er mere tilbøjelige til at følge dig tilbage og interagere med dig, når du har en udfyldt profil og et profilbillede."
|
||||||
other: Andre
|
other: Andre
|
||||||
emoji_styles:
|
emoji_styles:
|
||||||
auto: Auto
|
auto: Auto
|
||||||
@@ -1718,11 +1718,11 @@ da:
|
|||||||
hint_html: "<strong>Tilpas hvordan din profil og dine indlæg kan findes.</strong> En række funktioner i Mastodon kan hjælpe dig med at nå ud til et bredere publikum, hvis du aktiverer dem. Tjek indstillingerne herunder for at sikre, at de passer til dit brugsscenarie."
|
hint_html: "<strong>Tilpas hvordan din profil og dine indlæg kan findes.</strong> En række funktioner i Mastodon kan hjælpe dig med at nå ud til et bredere publikum, hvis du aktiverer dem. Tjek indstillingerne herunder for at sikre, at de passer til dit brugsscenarie."
|
||||||
privacy: Privatliv
|
privacy: Privatliv
|
||||||
privacy_hint_html: Styr, hvor meget der ønskes synliggjort til gavn for andre. Folk finder interessante profiler og apps ved at tjekke andres følgere ud, samt se hvilke apps de sender fra, men dine præferencer ønskes muligvis ikke synliggjort.
|
privacy_hint_html: Styr, hvor meget der ønskes synliggjort til gavn for andre. Folk finder interessante profiler og apps ved at tjekke andres følgere ud, samt se hvilke apps de sender fra, men dine præferencer ønskes muligvis ikke synliggjort.
|
||||||
reach: Udbredelse
|
reach: Rækkevidde
|
||||||
reach_hint_html: Indstil om du vil blive opdaget og fulgt af nye mennesker. Ønsker du, at dine indlæg skal vises på Udforsk-siden? Ønsker du, at andre skal se dig i deres følg-anbefalinger? Ønsker du at acceptere alle nye følgere automatisk, eller vil du have detaljeret kontrol over hver og en?
|
reach_hint_html: Indstil om du vil blive opdaget og fulgt af nye mennesker. Ønsker du, at dine indlæg skal vises på Udforsk-siden? Ønsker du, at andre skal se dig i deres følg-anbefalinger? Ønsker du at acceptere alle nye følgere automatisk, eller vil du have detaljeret kontrol over hver og en?
|
||||||
search: Søg
|
search: Søgning
|
||||||
search_hint_html: Indstil hvordan du vil findes. Ønsker du, at folk skal finde dig gennem hvad du har skrevet offentligt? Vil du have folk udenfor Mastodon til at finde din profil, når de søger på nettet? Vær opmærksom på, at det ikke kan garanteres at dine offentlige indlæg er udelukket fra alle søgemaskiner.
|
search_hint_html: Indstil hvordan du vil findes. Ønsker du, at folk skal finde dig gennem hvad du har skrevet offentligt? Vil du have folk udenfor Mastodon til at finde din profil, når de søger på nettet? Vær opmærksom på, at det ikke kan garanteres at dine offentlige indlæg er udelukket fra alle søgemaskiner.
|
||||||
title: Fortrolighed og udbredelse
|
title: Fortrolighed og rækkevidde
|
||||||
privacy_policy:
|
privacy_policy:
|
||||||
title: Privatlivspolitik
|
title: Privatlivspolitik
|
||||||
reactions:
|
reactions:
|
||||||
@@ -1923,7 +1923,7 @@ da:
|
|||||||
'7889238': 3 måneder
|
'7889238': 3 måneder
|
||||||
min_age_label: Alderstærskel
|
min_age_label: Alderstærskel
|
||||||
min_favs: Behold indlæg favoritmarkeret mindst
|
min_favs: Behold indlæg favoritmarkeret mindst
|
||||||
min_favs_hint: Sletter ingen dine egne indlæg, som har modtaget minimum dette antal favoritmarkeringer. Lad stå tomt for at slette indlæg uanset antal favoritmarkeringer
|
min_favs_hint: Sletter ingen af dine egne indlæg, som har modtaget minimum dette antal favoritmarkeringer. Lad stå tom for at slette indlæg uanset antal favoritmarkeringer
|
||||||
min_reblogs: Behold indlæg fremhævet mindst
|
min_reblogs: Behold indlæg fremhævet mindst
|
||||||
min_reblogs_hint: Sletter ingen af dine egne indlæg, som er fremhævet flere end dette antal gange. Lad stå tom for at slette indlæg uanset antallet af fremhævelser
|
min_reblogs_hint: Sletter ingen af dine egne indlæg, som er fremhævet flere end dette antal gange. Lad stå tom for at slette indlæg uanset antallet af fremhævelser
|
||||||
stream_entries:
|
stream_entries:
|
||||||
@@ -2095,7 +2095,7 @@ da:
|
|||||||
verification:
|
verification:
|
||||||
extra_instructions_html: <strong>Tip:</strong> Linket på din hjemmeside kan være usynligt. Den vigtige del er <code>rel="me"</code> , som forhindrer impersonation på websteder med brugergenereret indhold. Du kan endda bruge et <code>link</code> tag i overskriften på siden i stedet for <code>a</code>, men HTML skal være tilgængelig uden at udføre JavaScript.
|
extra_instructions_html: <strong>Tip:</strong> Linket på din hjemmeside kan være usynligt. Den vigtige del er <code>rel="me"</code> , som forhindrer impersonation på websteder med brugergenereret indhold. Du kan endda bruge et <code>link</code> tag i overskriften på siden i stedet for <code>a</code>, men HTML skal være tilgængelig uden at udføre JavaScript.
|
||||||
here_is_how: Sådan gør du
|
here_is_how: Sådan gør du
|
||||||
hint_html: "<strong>Bekræftelse af din identitet på Mastodon er for alle.</strong> Baseret på åbne webstandarder, nu og for evigt gratis. Alt du behøver er en personlig hjemmeside, som folk genkende dig ved. Når du linker til denne hjemmeside fra din profil, vi vil kontrollere, at hjemmesiden linker tilbage til din profil og vise en visuel indikator på det."
|
hint_html: "<strong>Verificering af din identitet på Mastodon er for alle.</strong> Baseret på åbne webstandarder, nu og for altid gratis. Alt, hvad du behøver, er en personlig hjemmeside, som folk kender dig fra. Når du linker til denne hjemmeside fra din profil, kontrollerer vi, at hjemmesiden linker tilbage til din profil, og viser en visuel indikator på den."
|
||||||
instructions_html: Kopier og indsæt koden nedenfor i HTML på din hjemmeside. Tilføj derefter adressen på din hjemmeside i et af de ekstra felter på din profil på fanen "Redigér profil" og gem ændringer.
|
instructions_html: Kopier og indsæt koden nedenfor i HTML på din hjemmeside. Tilføj derefter adressen på din hjemmeside i et af de ekstra felter på din profil på fanen "Redigér profil" og gem ændringer.
|
||||||
verification: Bekræftelse
|
verification: Bekræftelse
|
||||||
verified_links: Dine bekræftede links
|
verified_links: Dine bekræftede links
|
||||||
|
|||||||
@@ -1944,7 +1944,7 @@ de:
|
|||||||
contrast: Mastodon (Hoher Kontrast)
|
contrast: Mastodon (Hoher Kontrast)
|
||||||
default: Mastodon (Dunkel)
|
default: Mastodon (Dunkel)
|
||||||
mastodon-light: Mastodon (Hell)
|
mastodon-light: Mastodon (Hell)
|
||||||
system: Automatisch (mit System synchronisieren)
|
system: Automatisch (wie Betriebssystem)
|
||||||
time:
|
time:
|
||||||
formats:
|
formats:
|
||||||
default: "%d. %b %Y, %H:%M Uhr"
|
default: "%d. %b %Y, %H:%M Uhr"
|
||||||
|
|||||||
@@ -467,8 +467,11 @@ eu:
|
|||||||
fasp:
|
fasp:
|
||||||
debug:
|
debug:
|
||||||
callbacks:
|
callbacks:
|
||||||
|
created_at: Sortua hemen
|
||||||
delete: Ezabatu
|
delete: Ezabatu
|
||||||
ip: IP helbidea
|
ip: IP helbidea
|
||||||
|
request_body: Eskaeraren edukia
|
||||||
|
title: Atzera-deiak araztu
|
||||||
providers:
|
providers:
|
||||||
active: Aktibo
|
active: Aktibo
|
||||||
base_url: Oinarrizko URL-a
|
base_url: Oinarrizko URL-a
|
||||||
@@ -822,6 +825,7 @@ eu:
|
|||||||
destroyed_msg: Guneko igoera ongi ezabatu da!
|
destroyed_msg: Guneko igoera ongi ezabatu da!
|
||||||
software_updates:
|
software_updates:
|
||||||
critical_update: Kritikoa — mesedez, eguneratu azkar
|
critical_update: Kritikoa — mesedez, eguneratu azkar
|
||||||
|
description: Gomendagarria da Mastodon instalazioa eguneratuta mantentzea azken konponketa eta funtzioez baliatzeko. Gainera, batzuetan ezinbestekoa da Mastodon garaiz eguneratzea segurtasun arazoak saihesteko. Arrazoi hauengatik, Mastodonek 30 minuturo eguneratzeak egiaztatzen ditu, eta zure posta elektroniko bidezko jakinarazpenen lehentasunen arabera jakinaraziko dizu.
|
||||||
documentation_link: Informazio gehiago
|
documentation_link: Informazio gehiago
|
||||||
release_notes: Bertsio oharrak
|
release_notes: Bertsio oharrak
|
||||||
title: Eguneraketak eskuragarri
|
title: Eguneraketak eskuragarri
|
||||||
|
|||||||
@@ -1851,6 +1851,8 @@ fr-CA:
|
|||||||
limit: Vous avez déjà épinglé le nombre maximum de messages
|
limit: Vous avez déjà épinglé le nombre maximum de messages
|
||||||
ownership: Vous ne pouvez pas épingler un message ne vous appartenant pas
|
ownership: Vous ne pouvez pas épingler un message ne vous appartenant pas
|
||||||
reblog: Un partage ne peut pas être épinglé
|
reblog: Un partage ne peut pas être épinglé
|
||||||
|
quote_policies:
|
||||||
|
followers: Abonné·e·s et utilisateur·trice·s mentionné·e·s
|
||||||
title: "%{name} : « %{quote} »"
|
title: "%{name} : « %{quote} »"
|
||||||
visibilities:
|
visibilities:
|
||||||
direct: Direct
|
direct: Direct
|
||||||
@@ -1904,6 +1906,8 @@ fr-CA:
|
|||||||
does_not_match_previous_name: ne correspond pas au nom précédent
|
does_not_match_previous_name: ne correspond pas au nom précédent
|
||||||
terms_of_service:
|
terms_of_service:
|
||||||
title: Conditions d'utilisation
|
title: Conditions d'utilisation
|
||||||
|
terms_of_service_interstitial:
|
||||||
|
title: Les conditions d'utilisation de %{domain} ont changées
|
||||||
themes:
|
themes:
|
||||||
contrast: Mastodon (Contraste élevé)
|
contrast: Mastodon (Contraste élevé)
|
||||||
default: Mastodon (Sombre)
|
default: Mastodon (Sombre)
|
||||||
|
|||||||
@@ -1851,6 +1851,8 @@ fr:
|
|||||||
limit: Vous avez déjà épinglé le nombre maximum de messages
|
limit: Vous avez déjà épinglé le nombre maximum de messages
|
||||||
ownership: Vous ne pouvez pas épingler un message ne vous appartenant pas
|
ownership: Vous ne pouvez pas épingler un message ne vous appartenant pas
|
||||||
reblog: Un partage ne peut pas être épinglé
|
reblog: Un partage ne peut pas être épinglé
|
||||||
|
quote_policies:
|
||||||
|
followers: Abonné·e·s et utilisateur·trice·s mentionné·e·s
|
||||||
title: "%{name} : « %{quote} »"
|
title: "%{name} : « %{quote} »"
|
||||||
visibilities:
|
visibilities:
|
||||||
direct: Direct
|
direct: Direct
|
||||||
@@ -1904,6 +1906,8 @@ fr:
|
|||||||
does_not_match_previous_name: ne correspond pas au nom précédent
|
does_not_match_previous_name: ne correspond pas au nom précédent
|
||||||
terms_of_service:
|
terms_of_service:
|
||||||
title: Conditions d'utilisation
|
title: Conditions d'utilisation
|
||||||
|
terms_of_service_interstitial:
|
||||||
|
title: Les conditions d'utilisation de %{domain} ont changées
|
||||||
themes:
|
themes:
|
||||||
contrast: Mastodon (Contraste élevé)
|
contrast: Mastodon (Contraste élevé)
|
||||||
default: Mastodon (Sombre)
|
default: Mastodon (Sombre)
|
||||||
|
|||||||
@@ -1406,6 +1406,10 @@ ga:
|
|||||||
basic_information: Eolas bunúsach
|
basic_information: Eolas bunúsach
|
||||||
hint_html: "<strong>Saincheap a bhfeiceann daoine ar do phróifíl phoiblí agus in aice le do phostálacha.</strong> Is dóichí go leanfaidh daoine eile ar ais tú agus go n-idirghníomhóidh siad leat nuair a bhíonn próifíl líonta agus pictiúr próifíle agat."
|
hint_html: "<strong>Saincheap a bhfeiceann daoine ar do phróifíl phoiblí agus in aice le do phostálacha.</strong> Is dóichí go leanfaidh daoine eile ar ais tú agus go n-idirghníomhóidh siad leat nuair a bhíonn próifíl líonta agus pictiúr próifíle agat."
|
||||||
other: Eile
|
other: Eile
|
||||||
|
emoji_styles:
|
||||||
|
auto: Uath
|
||||||
|
native: Dúchasach
|
||||||
|
twemoji: Twemoji
|
||||||
errors:
|
errors:
|
||||||
'400': Bhí an t-iarratas a chuir tú isteach neamhbhailí nó míchumtha.
|
'400': Bhí an t-iarratas a chuir tú isteach neamhbhailí nó míchumtha.
|
||||||
'403': Níl cead agat an leathanach seo a fheiceáil.
|
'403': Níl cead agat an leathanach seo a fheiceáil.
|
||||||
|
|||||||
@@ -1349,6 +1349,10 @@ hu:
|
|||||||
basic_information: Általános információk
|
basic_information: Általános információk
|
||||||
hint_html: "<strong>Tedd egyedivé, mi látnak mások a profilodon és a bejegyzéseid mellett.</strong> Mások nagyobb eséllyel követnek vissza és lépnek veled kapcsolatba, ha van kitöltött profilod és profilképed."
|
hint_html: "<strong>Tedd egyedivé, mi látnak mások a profilodon és a bejegyzéseid mellett.</strong> Mások nagyobb eséllyel követnek vissza és lépnek veled kapcsolatba, ha van kitöltött profilod és profilképed."
|
||||||
other: Egyéb
|
other: Egyéb
|
||||||
|
emoji_styles:
|
||||||
|
auto: Automatikus
|
||||||
|
native: Natív
|
||||||
|
twemoji: Twemoji
|
||||||
errors:
|
errors:
|
||||||
'400': A küldött kérés érvénytelen vagy hibás volt.
|
'400': A küldött kérés érvénytelen vagy hibás volt.
|
||||||
'403': Nincs jogosultságod az oldal megtekintéséhez.
|
'403': Nincs jogosultságod az oldal megtekintéséhez.
|
||||||
|
|||||||
@@ -1351,6 +1351,10 @@ it:
|
|||||||
basic_information: Informazioni di base
|
basic_information: Informazioni di base
|
||||||
hint_html: "<strong>Personalizza ciò che le persone vedono sul tuo profilo pubblico e accanto ai tuoi post.</strong> È più probabile che altre persone ti seguano e interagiscano con te quando hai un profilo compilato e un'immagine del profilo."
|
hint_html: "<strong>Personalizza ciò che le persone vedono sul tuo profilo pubblico e accanto ai tuoi post.</strong> È più probabile che altre persone ti seguano e interagiscano con te quando hai un profilo compilato e un'immagine del profilo."
|
||||||
other: Altro
|
other: Altro
|
||||||
|
emoji_styles:
|
||||||
|
auto: Automatico
|
||||||
|
native: Nativo
|
||||||
|
twemoji: Twemoji
|
||||||
errors:
|
errors:
|
||||||
'400': La richiesta che hai inviato non è valida o non è corretta.
|
'400': La richiesta che hai inviato non è valida o non è corretta.
|
||||||
'403': Non sei autorizzato a visualizzare questa pagina.
|
'403': Non sei autorizzato a visualizzare questa pagina.
|
||||||
|
|||||||
@@ -186,6 +186,7 @@ lad:
|
|||||||
create_domain_block: Kriya bloko de domeno
|
create_domain_block: Kriya bloko de domeno
|
||||||
create_email_domain_block: Kriya bloko de domeno de posta
|
create_email_domain_block: Kriya bloko de domeno de posta
|
||||||
create_ip_block: Kriya regla de IP
|
create_ip_block: Kriya regla de IP
|
||||||
|
create_relay: Kriya relevo
|
||||||
create_unavailable_domain: Kriya domeno no desponivle
|
create_unavailable_domain: Kriya domeno no desponivle
|
||||||
create_user_role: Kriya rolo
|
create_user_role: Kriya rolo
|
||||||
demote_user: Degrada utilizador
|
demote_user: Degrada utilizador
|
||||||
@@ -197,6 +198,7 @@ lad:
|
|||||||
destroy_email_domain_block: Efasa bloko de domeno de posta
|
destroy_email_domain_block: Efasa bloko de domeno de posta
|
||||||
destroy_instance: Efasa domeno
|
destroy_instance: Efasa domeno
|
||||||
destroy_ip_block: Efasa regla de IP
|
destroy_ip_block: Efasa regla de IP
|
||||||
|
destroy_relay: Efasa relevo
|
||||||
destroy_status: Efasa publikasyon
|
destroy_status: Efasa publikasyon
|
||||||
destroy_unavailable_domain: Efasa domeno no desponivle
|
destroy_unavailable_domain: Efasa domeno no desponivle
|
||||||
destroy_user_role: Efasa rolo
|
destroy_user_role: Efasa rolo
|
||||||
@@ -205,6 +207,7 @@ lad:
|
|||||||
disable_sign_in_token_auth_user: Inkapasita la autentifikasyon por token de posta elektronika para el utilizador
|
disable_sign_in_token_auth_user: Inkapasita la autentifikasyon por token de posta elektronika para el utilizador
|
||||||
disable_user: Inkapasita utilizador
|
disable_user: Inkapasita utilizador
|
||||||
enable_custom_emoji: Kapasita emoji personalizados
|
enable_custom_emoji: Kapasita emoji personalizados
|
||||||
|
enable_relay: Aktiva relevo
|
||||||
enable_sign_in_token_auth_user: Kapasita la autentifikasyon por token de posta para el utilizador
|
enable_sign_in_token_auth_user: Kapasita la autentifikasyon por token de posta para el utilizador
|
||||||
enable_user: Kapasita utilizador
|
enable_user: Kapasita utilizador
|
||||||
memorialize_account: Transforma en kuento komemorativo
|
memorialize_account: Transforma en kuento komemorativo
|
||||||
@@ -229,6 +232,7 @@ lad:
|
|||||||
update_custom_emoji: Aktualiza emoji personalizado
|
update_custom_emoji: Aktualiza emoji personalizado
|
||||||
update_domain_block: Aktualiza bloko de domeno
|
update_domain_block: Aktualiza bloko de domeno
|
||||||
update_ip_block: Aktualiza regla de IP
|
update_ip_block: Aktualiza regla de IP
|
||||||
|
update_report: Aktualiza raporto
|
||||||
update_status: Aktualiza publikasyon
|
update_status: Aktualiza publikasyon
|
||||||
update_user_role: Aktualiza rolo
|
update_user_role: Aktualiza rolo
|
||||||
actions:
|
actions:
|
||||||
@@ -466,10 +470,13 @@ lad:
|
|||||||
fasp:
|
fasp:
|
||||||
debug:
|
debug:
|
||||||
callbacks:
|
callbacks:
|
||||||
|
created_at: Kriyado en
|
||||||
delete: Efasa
|
delete: Efasa
|
||||||
|
ip: Adreso IP
|
||||||
providers:
|
providers:
|
||||||
active: Aktivo
|
active: Aktivo
|
||||||
delete: Efasa
|
delete: Efasa
|
||||||
|
finish_registration: Finaliza enrejistrasyon
|
||||||
name: Nombre
|
name: Nombre
|
||||||
registrations:
|
registrations:
|
||||||
confirm: Konfirma
|
confirm: Konfirma
|
||||||
@@ -542,6 +549,12 @@ lad:
|
|||||||
all: Todos
|
all: Todos
|
||||||
limited: Limitado
|
limited: Limitado
|
||||||
title: Moderasyon
|
title: Moderasyon
|
||||||
|
moderation_notes:
|
||||||
|
create: Adjusta nota de moderasyon
|
||||||
|
created_msg: Nota de moderasyon de sirvidor kriyada kon sukseso!
|
||||||
|
description_html: Ve i desha notas a otros moderadores i a tu yo futuro
|
||||||
|
destroyed_msg: Nota de moderasyon de sirvidor efasada kon sukseso!
|
||||||
|
title: Notas de moderasyon
|
||||||
private_comment: Komento privado
|
private_comment: Komento privado
|
||||||
public_comment: Komento publiko
|
public_comment: Komento publiko
|
||||||
purge: Purga
|
purge: Purga
|
||||||
@@ -748,6 +761,7 @@ lad:
|
|||||||
title: Rolos
|
title: Rolos
|
||||||
rules:
|
rules:
|
||||||
add_new: Adjusta regla
|
add_new: Adjusta regla
|
||||||
|
add_translation: Adjusta traduksyon
|
||||||
delete: Efasa
|
delete: Efasa
|
||||||
description_html: Aunke la majorita afirma aver meldado i estar de akodro kon los terminos de servisyo, la djente normalmente no los melda asta dempues de ke surja algun problema. <strong>Az ke sea mas kolay ver las normas de tu sirvidor de un vistazo estipulándolas en una lista de puntos.</strong> Aprova ke kada norma sea corta i kolay, ama sin estar divididas en munchos puntos.
|
description_html: Aunke la majorita afirma aver meldado i estar de akodro kon los terminos de servisyo, la djente normalmente no los melda asta dempues de ke surja algun problema. <strong>Az ke sea mas kolay ver las normas de tu sirvidor de un vistazo estipulándolas en una lista de puntos.</strong> Aprova ke kada norma sea corta i kolay, ama sin estar divididas en munchos puntos.
|
||||||
edit: Edita regla
|
edit: Edita regla
|
||||||
@@ -920,6 +934,9 @@ lad:
|
|||||||
updated_msg: Konfigurasyon de etiketas aktualizada kon sukseso
|
updated_msg: Konfigurasyon de etiketas aktualizada kon sukseso
|
||||||
terms_of_service:
|
terms_of_service:
|
||||||
changelog: Ke troko
|
changelog: Ke troko
|
||||||
|
current: Aktual
|
||||||
|
generates:
|
||||||
|
action: Djenera
|
||||||
history: Istorya
|
history: Istorya
|
||||||
live: En bivo
|
live: En bivo
|
||||||
publish: Publika
|
publish: Publika
|
||||||
@@ -1245,6 +1262,10 @@ lad:
|
|||||||
basic_information: Enformasyon bazika
|
basic_information: Enformasyon bazika
|
||||||
hint_html: "<strong>Personaliza lo ke la djente ve en tu profil publiko i kon tus publikasyones.</strong> Es mas probavle ke otras personas te sigan i enteraktuen kontigo kuando kompletas tu profil i foto."
|
hint_html: "<strong>Personaliza lo ke la djente ve en tu profil publiko i kon tus publikasyones.</strong> Es mas probavle ke otras personas te sigan i enteraktuen kontigo kuando kompletas tu profil i foto."
|
||||||
other: Otros
|
other: Otros
|
||||||
|
emoji_styles:
|
||||||
|
auto: Otomatiko
|
||||||
|
native: Nativo
|
||||||
|
twemoji: Twemoji
|
||||||
errors:
|
errors:
|
||||||
'400': La solisitasyon ke enviates no fue valida o fue malformada.
|
'400': La solisitasyon ke enviates no fue valida o fue malformada.
|
||||||
'403': No tienes permiso para ver esta pajina.
|
'403': No tienes permiso para ver esta pajina.
|
||||||
|
|||||||
@@ -583,7 +583,7 @@ nl:
|
|||||||
created_msg: Aanmaken van servermoderatie-opmerking geslaagd!
|
created_msg: Aanmaken van servermoderatie-opmerking geslaagd!
|
||||||
description_html: Opmerkingen bekijken, en voor jezelf en andere moderatoren achterlaten
|
description_html: Opmerkingen bekijken, en voor jezelf en andere moderatoren achterlaten
|
||||||
destroyed_msg: Verwijderen van servermoderatie-opmerking geslaagd!
|
destroyed_msg: Verwijderen van servermoderatie-opmerking geslaagd!
|
||||||
placeholder: Informatie over deze server, genomen acties of iets anders die jou kunnen helpen om deze server in de toekomst te moderen.
|
placeholder: Informatie over deze server, genomen acties of iets anders die jou kunnen helpen om deze server in de toekomst te modereren.
|
||||||
title: Moderatie-opmerkingen
|
title: Moderatie-opmerkingen
|
||||||
private_comment: Privé-opmerking
|
private_comment: Privé-opmerking
|
||||||
public_comment: Openbare opmerking
|
public_comment: Openbare opmerking
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ ca:
|
|||||||
setting_display_media_default: Amaga el contingut gràfic marcat com a sensible
|
setting_display_media_default: Amaga el contingut gràfic marcat com a sensible
|
||||||
setting_display_media_hide_all: Oculta sempre tot el contingut multimèdia
|
setting_display_media_hide_all: Oculta sempre tot el contingut multimèdia
|
||||||
setting_display_media_show_all: Mostra sempre el contingut gràfic
|
setting_display_media_show_all: Mostra sempre el contingut gràfic
|
||||||
|
setting_emoji_style: Com mostrar els emojis. "Automàtic" provarà de fer servir els emojis nadius, però revertirà a twemojis en els navegadors antics.
|
||||||
setting_system_scrollbars_ui: S'aplica només als navegadors d'escriptori basats en Safari i Chrome
|
setting_system_scrollbars_ui: S'aplica només als navegadors d'escriptori basats en Safari i Chrome
|
||||||
setting_use_blurhash: Els degradats es basen en els colors de les imatges ocultes, però n'enfosqueixen els detalls
|
setting_use_blurhash: Els degradats es basen en els colors de les imatges ocultes, però n'enfosqueixen els detalls
|
||||||
setting_use_pending_items: Amaga les actualitzacions de la línia de temps després de fer un clic, en lloc de desplaçar-les automàticament
|
setting_use_pending_items: Amaga les actualitzacions de la línia de temps després de fer un clic, en lloc de desplaçar-les automàticament
|
||||||
@@ -240,6 +241,7 @@ ca:
|
|||||||
setting_display_media_default: Per defecte
|
setting_display_media_default: Per defecte
|
||||||
setting_display_media_hide_all: Amaga-ho tot
|
setting_display_media_hide_all: Amaga-ho tot
|
||||||
setting_display_media_show_all: Mostra-ho tot
|
setting_display_media_show_all: Mostra-ho tot
|
||||||
|
setting_emoji_style: Estil d'emojis
|
||||||
setting_expand_spoilers: Desplega sempre els tuts marcats amb advertències de contingut
|
setting_expand_spoilers: Desplega sempre els tuts marcats amb advertències de contingut
|
||||||
setting_hide_network: Amaga la teva xarxa
|
setting_hide_network: Amaga la teva xarxa
|
||||||
setting_missing_alt_text_modal: Mostra un diàleg de confirmació abans de publicar contingut sense text alternatiu
|
setting_missing_alt_text_modal: Mostra un diàleg de confirmació abans de publicar contingut sense text alternatiu
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ da:
|
|||||||
setting_display_media_default: Skjul medier med sensitiv-markering
|
setting_display_media_default: Skjul medier med sensitiv-markering
|
||||||
setting_display_media_hide_all: Skjul altid medier
|
setting_display_media_hide_all: Skjul altid medier
|
||||||
setting_display_media_show_all: Vis altid medier
|
setting_display_media_show_all: Vis altid medier
|
||||||
setting_emoji_style: Hvordan emojis skal vises. "Auto" vil forsøge at bruge indbyggede emojis, men skifter tilbage til Twemoji for ældre browsere.
|
setting_emoji_style: Hvordan emojis skal vises. "Auto" vil forsøge at bruge indbyggede emojis, men skifter tilbage til Twemoji i ældre webbrowsere.
|
||||||
setting_system_scrollbars_ui: Gælder kun for computerwebbrowsere baseret på Safari og Chrome
|
setting_system_scrollbars_ui: Gælder kun for computerwebbrowsere baseret på Safari og Chrome
|
||||||
setting_use_blurhash: Gradienter er baseret på de skjulte grafikelementers farver, men slører alle detaljer
|
setting_use_blurhash: Gradienter er baseret på de skjulte grafikelementers farver, men slører alle detaljer
|
||||||
setting_use_pending_items: Skjul tidslinjeopdateringer bag et klik i stedet for brug af auto-feedrulning
|
setting_use_pending_items: Skjul tidslinjeopdateringer bag et klik i stedet for brug af auto-feedrulning
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ de:
|
|||||||
setting_display_media_default: Medien mit Inhaltswarnung ausblenden
|
setting_display_media_default: Medien mit Inhaltswarnung ausblenden
|
||||||
setting_display_media_hide_all: Medien immer ausblenden
|
setting_display_media_hide_all: Medien immer ausblenden
|
||||||
setting_display_media_show_all: Medien mit Inhaltswarnung immer anzeigen
|
setting_display_media_show_all: Medien mit Inhaltswarnung immer anzeigen
|
||||||
setting_emoji_style: Darstellung von Emojis. „Automatisch“ verwendet native Emojis, für ältere Browser jedoch Twemoji.
|
setting_emoji_style: 'Wie Emojis dargestellt werden: „Automatisch“ verwendet native Emojis, für veraltete Browser wird jedoch Twemoji verwendet.'
|
||||||
setting_system_scrollbars_ui: Betrifft nur Desktop-Browser, die auf Chrome oder Safari basieren
|
setting_system_scrollbars_ui: Betrifft nur Desktop-Browser, die auf Chrome oder Safari basieren
|
||||||
setting_use_blurhash: Der Farbverlauf basiert auf den Farben der ausgeblendeten Medien, verschleiert aber jegliche Details
|
setting_use_blurhash: Der Farbverlauf basiert auf den Farben der ausgeblendeten Medien, verschleiert aber jegliche Details
|
||||||
setting_use_pending_items: Neue Beiträge hinter einem Klick verstecken, anstatt automatisch zu scrollen
|
setting_use_pending_items: Neue Beiträge hinter einem Klick verstecken, anstatt automatisch zu scrollen
|
||||||
@@ -248,7 +248,7 @@ de:
|
|||||||
setting_missing_alt_text_modal: Bestätigungsdialog anzeigen, bevor Medien ohne Bildbeschreibung veröffentlicht werden
|
setting_missing_alt_text_modal: Bestätigungsdialog anzeigen, bevor Medien ohne Bildbeschreibung veröffentlicht werden
|
||||||
setting_reduce_motion: Bewegung in Animationen verringern
|
setting_reduce_motion: Bewegung in Animationen verringern
|
||||||
setting_system_font_ui: Standardschriftart des Browsers verwenden
|
setting_system_font_ui: Standardschriftart des Browsers verwenden
|
||||||
setting_system_scrollbars_ui: Bildlaufleiste des Systems verwenden
|
setting_system_scrollbars_ui: Bildlaufleiste des Betriebssystems verwenden
|
||||||
setting_theme: Design
|
setting_theme: Design
|
||||||
setting_trends: Heutige Trends anzeigen
|
setting_trends: Heutige Trends anzeigen
|
||||||
setting_unfollow_modal: Bestätigungsdialog beim Entfolgen eines Profils anzeigen
|
setting_unfollow_modal: Bestätigungsdialog beim Entfolgen eines Profils anzeigen
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ ga:
|
|||||||
setting_display_media_default: Folaigh meáin atá marcáilte mar íogair
|
setting_display_media_default: Folaigh meáin atá marcáilte mar íogair
|
||||||
setting_display_media_hide_all: Folaigh meáin i gcónaí
|
setting_display_media_hide_all: Folaigh meáin i gcónaí
|
||||||
setting_display_media_show_all: Taispeáin meáin i gcónaí
|
setting_display_media_show_all: Taispeáin meáin i gcónaí
|
||||||
|
setting_emoji_style: Conas emojis a thaispeáint. Déanfaidh "Auto" iarracht emoji dúchasacha a úsáid, ach titeann sé ar ais go Twemoji le haghaidh seanbhrabhsálaithe.
|
||||||
setting_system_scrollbars_ui: Ní bhaineann sé ach le brabhsálaithe deisce bunaithe ar Safari agus Chrome
|
setting_system_scrollbars_ui: Ní bhaineann sé ach le brabhsálaithe deisce bunaithe ar Safari agus Chrome
|
||||||
setting_use_blurhash: Tá grádáin bunaithe ar dhathanna na n-amharcanna ceilte ach cuireann siad salach ar aon mhionsonraí
|
setting_use_blurhash: Tá grádáin bunaithe ar dhathanna na n-amharcanna ceilte ach cuireann siad salach ar aon mhionsonraí
|
||||||
setting_use_pending_items: Folaigh nuashonruithe amlíne taobh thiar de chlic seachas an fotha a scrollú go huathoibríoch
|
setting_use_pending_items: Folaigh nuashonruithe amlíne taobh thiar de chlic seachas an fotha a scrollú go huathoibríoch
|
||||||
@@ -244,6 +245,7 @@ ga:
|
|||||||
setting_display_media_default: Réamhshocrú
|
setting_display_media_default: Réamhshocrú
|
||||||
setting_display_media_hide_all: Cuir uile i bhfolach
|
setting_display_media_hide_all: Cuir uile i bhfolach
|
||||||
setting_display_media_show_all: Taispeáin uile
|
setting_display_media_show_all: Taispeáin uile
|
||||||
|
setting_emoji_style: Stíl Emoji
|
||||||
setting_expand_spoilers: Méadaigh postálacha atá marcáilte le rabhaidh inneachair i gcónaí
|
setting_expand_spoilers: Méadaigh postálacha atá marcáilte le rabhaidh inneachair i gcónaí
|
||||||
setting_hide_network: Folaigh do ghraf sóisialta
|
setting_hide_network: Folaigh do ghraf sóisialta
|
||||||
setting_missing_alt_text_modal: Taispeáin dialóg deimhnithe sula bpostálann tú meán gan alt téacs
|
setting_missing_alt_text_modal: Taispeáin dialóg deimhnithe sula bpostálann tú meán gan alt téacs
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ hu:
|
|||||||
setting_display_media_default: Kényes tartalomnak jelölt média elrejtése
|
setting_display_media_default: Kényes tartalomnak jelölt média elrejtése
|
||||||
setting_display_media_hide_all: Média elrejtése mindig
|
setting_display_media_hide_all: Média elrejtése mindig
|
||||||
setting_display_media_show_all: Média megjelenítése mindig
|
setting_display_media_show_all: Média megjelenítése mindig
|
||||||
|
setting_emoji_style: Az emodzsik megjelenítési módja. Az „Automatikus” megpróbálja a natív emodzsikat használni, de az örökölt böngészők esetén a Twemojira vált vissza.
|
||||||
setting_system_scrollbars_ui: Csak Chrome és Safari alapú asztali böngészőkre vonatkozik
|
setting_system_scrollbars_ui: Csak Chrome és Safari alapú asztali böngészőkre vonatkozik
|
||||||
setting_use_blurhash: A kihomályosítás az eredeti képből történik, de minden részletet elrejt
|
setting_use_blurhash: A kihomályosítás az eredeti képből történik, de minden részletet elrejt
|
||||||
setting_use_pending_items: Idővonal frissítése csak kattintásra automatikus görgetés helyett
|
setting_use_pending_items: Idővonal frissítése csak kattintásra automatikus görgetés helyett
|
||||||
@@ -241,6 +242,7 @@ hu:
|
|||||||
setting_display_media_default: Alapértelmezés
|
setting_display_media_default: Alapértelmezés
|
||||||
setting_display_media_hide_all: Mindent elrejt
|
setting_display_media_hide_all: Mindent elrejt
|
||||||
setting_display_media_show_all: Mindent mutat
|
setting_display_media_show_all: Mindent mutat
|
||||||
|
setting_emoji_style: Emodzsistílus
|
||||||
setting_expand_spoilers: Tartalmi figyelmeztetéssel ellátott bejegyzések automatikus kinyitása
|
setting_expand_spoilers: Tartalmi figyelmeztetéssel ellátott bejegyzések automatikus kinyitása
|
||||||
setting_hide_network: Hálózatod elrejtése
|
setting_hide_network: Hálózatod elrejtése
|
||||||
setting_missing_alt_text_modal: Megerősítési párbeszédablak megjelenítése a helyettesítő szöveg nélküli média közzététele előtt
|
setting_missing_alt_text_modal: Megerősítési párbeszédablak megjelenítése a helyettesítő szöveg nélküli média közzététele előtt
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ it:
|
|||||||
setting_display_media_default: Nascondi media segnati come sensibili
|
setting_display_media_default: Nascondi media segnati come sensibili
|
||||||
setting_display_media_hide_all: Nascondi sempre tutti i media
|
setting_display_media_hide_all: Nascondi sempre tutti i media
|
||||||
setting_display_media_show_all: Mostra sempre i media segnati come sensibili
|
setting_display_media_show_all: Mostra sempre i media segnati come sensibili
|
||||||
|
setting_emoji_style: Come visualizzare gli emoji. "Automatico" proverà a usare gli emoji nativi, ma per i browser più vecchi ricorrerà a Twemoji.
|
||||||
setting_system_scrollbars_ui: Si applica solo ai browser desktop basati su Safari e Chrome
|
setting_system_scrollbars_ui: Si applica solo ai browser desktop basati su Safari e Chrome
|
||||||
setting_use_blurhash: I gradienti sono basati sui colori delle immagini nascoste ma offuscano tutti i dettagli
|
setting_use_blurhash: I gradienti sono basati sui colori delle immagini nascoste ma offuscano tutti i dettagli
|
||||||
setting_use_pending_items: Fare clic per mostrare i nuovi messaggi invece di aggiornare la timeline automaticamente
|
setting_use_pending_items: Fare clic per mostrare i nuovi messaggi invece di aggiornare la timeline automaticamente
|
||||||
@@ -241,6 +242,7 @@ it:
|
|||||||
setting_display_media_default: Predefinita
|
setting_display_media_default: Predefinita
|
||||||
setting_display_media_hide_all: Nascondi tutti
|
setting_display_media_hide_all: Nascondi tutti
|
||||||
setting_display_media_show_all: Mostra tutti
|
setting_display_media_show_all: Mostra tutti
|
||||||
|
setting_emoji_style: Stile emoji
|
||||||
setting_expand_spoilers: Espandi sempre post con content warning
|
setting_expand_spoilers: Espandi sempre post con content warning
|
||||||
setting_hide_network: Nascondi la tua rete
|
setting_hide_network: Nascondi la tua rete
|
||||||
setting_missing_alt_text_modal: Chiedi di confermare prima di pubblicare media senza testo alternativo
|
setting_missing_alt_text_modal: Chiedi di confermare prima di pubblicare media senza testo alternativo
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ nl:
|
|||||||
setting_display_media_default: Als gevoelig gemarkeerde media verbergen
|
setting_display_media_default: Als gevoelig gemarkeerde media verbergen
|
||||||
setting_display_media_hide_all: Media altijd verbergen
|
setting_display_media_hide_all: Media altijd verbergen
|
||||||
setting_display_media_show_all: Media altijd tonen
|
setting_display_media_show_all: Media altijd tonen
|
||||||
setting_emoji_style: Waarmee moeten emojis worden weergegeven. "Auto" probeert de systeemeigen emojis te gebruiken, maar valt terug op Twemoji voor oudere webbrowsers.
|
setting_emoji_style: Waarmee moeten emojis worden weergegeven. ‘Auto’ probeert de systeemeigen emojis te gebruiken, maar valt terug op Twemoji voor oudere webbrowsers.
|
||||||
setting_system_scrollbars_ui: Alleen van toepassing op desktopbrowsers gebaseerd op Safari en Chrome
|
setting_system_scrollbars_ui: Alleen van toepassing op desktopbrowsers gebaseerd op Safari en Chrome
|
||||||
setting_use_blurhash: Wazige kleurovergangen zijn gebaseerd op de kleuren van de verborgen media, waarmee elk detail verdwijnt
|
setting_use_blurhash: Wazige kleurovergangen zijn gebaseerd op de kleuren van de verborgen media, waarmee elk detail verdwijnt
|
||||||
setting_use_pending_items: De tijdlijn wordt bijgewerkt door op het aantal nieuwe items te klikken, in plaats van dat deze automatisch wordt bijgewerkt
|
setting_use_pending_items: De tijdlijn wordt bijgewerkt door op het aantal nieuwe items te klikken, in plaats van dat deze automatisch wordt bijgewerkt
|
||||||
|
|||||||
@@ -234,6 +234,7 @@ uk:
|
|||||||
setting_display_media_default: За промовчанням
|
setting_display_media_default: За промовчанням
|
||||||
setting_display_media_hide_all: Сховати всі
|
setting_display_media_hide_all: Сховати всі
|
||||||
setting_display_media_show_all: Показати всі
|
setting_display_media_show_all: Показати всі
|
||||||
|
setting_emoji_style: Стиль емодзі
|
||||||
setting_expand_spoilers: Завжди розгортати дописи з попередженнями про вміст
|
setting_expand_spoilers: Завжди розгортати дописи з попередженнями про вміст
|
||||||
setting_hide_network: Сховати вашу мережу
|
setting_hide_network: Сховати вашу мережу
|
||||||
setting_missing_alt_text_modal: Запитувати перед розміщенням медіа без альтернативного тексту
|
setting_missing_alt_text_modal: Запитувати перед розміщенням медіа без альтернативного тексту
|
||||||
|
|||||||
@@ -1338,6 +1338,9 @@ uk:
|
|||||||
basic_information: Основна інформація
|
basic_information: Основна інформація
|
||||||
hint_html: "<strong>Налаштуйте те, що люди бачитимуть у вашому загальнодоступному профілі та поруч із вашими дописами.</strong> Інші люди з більшою ймовірністю підпишуться на вас та взаємодіятимуть з вами, якщо у вас є заповнений профіль та зображення профілю."
|
hint_html: "<strong>Налаштуйте те, що люди бачитимуть у вашому загальнодоступному профілі та поруч із вашими дописами.</strong> Інші люди з більшою ймовірністю підпишуться на вас та взаємодіятимуть з вами, якщо у вас є заповнений профіль та зображення профілю."
|
||||||
other: Інше
|
other: Інше
|
||||||
|
emoji_styles:
|
||||||
|
auto: Авто
|
||||||
|
native: Рідний
|
||||||
errors:
|
errors:
|
||||||
'400': Ваш запит був недійсним або неправильним.
|
'400': Ваш запит був недійсним або неправильним.
|
||||||
'403': У Вас немає доступу до перегляду даної сторінки.
|
'403': У Вас немає доступу до перегляду даної сторінки.
|
||||||
|
|||||||
@@ -1288,49 +1288,64 @@ RSpec.describe Mastodon::CLI::Accounts do
|
|||||||
|
|
||||||
describe '#prune' do
|
describe '#prune' do
|
||||||
let(:action) { :prune }
|
let(:action) { :prune }
|
||||||
|
let(:viable_attrs) { { domain: 'example.com', bot: false, suspended: false, silenced: false } }
|
||||||
let!(:local_account) { Fabricate(:account) }
|
let!(:local_account) { Fabricate(:account) }
|
||||||
let!(:bot_account) { Fabricate(:account, bot: true, domain: 'example.com') }
|
let!(:bot_account) { Fabricate(:account, bot: true, domain: 'example.com') }
|
||||||
let!(:group_account) { Fabricate(:account, actor_type: 'Group', domain: 'example.com') }
|
let!(:group_account) { Fabricate(:account, actor_type: 'Group', domain: 'example.com') }
|
||||||
let!(:mentioned_account) { Fabricate(:account, domain: 'example.com') }
|
let!(:account_mentioned) { Fabricate(:account, viable_attrs) }
|
||||||
let!(:prunable_accounts) do
|
let!(:account_with_favourite) { Fabricate(:account, viable_attrs) }
|
||||||
Fabricate.times(2, :account, domain: 'example.com', bot: false, suspended_at: nil, silenced_at: nil)
|
let!(:account_with_status) { Fabricate(:account, viable_attrs) }
|
||||||
end
|
let!(:account_with_follow) { Fabricate(:account, viable_attrs) }
|
||||||
|
let!(:account_targeted_follow) { Fabricate(:account, viable_attrs) }
|
||||||
|
let!(:account_with_block) { Fabricate(:account, viable_attrs) }
|
||||||
|
let!(:account_targeted_block) { Fabricate(:account, viable_attrs) }
|
||||||
|
let!(:account_targeted_mute) { Fabricate(:account, viable_attrs) }
|
||||||
|
let!(:account_targeted_report) { Fabricate(:account, viable_attrs) }
|
||||||
|
let!(:account_with_follow_request) { Fabricate(:account, viable_attrs) }
|
||||||
|
let!(:account_targeted_follow_request) { Fabricate(:account, viable_attrs) }
|
||||||
|
let!(:prunable_accounts) { Fabricate.times(2, :account, viable_attrs) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
Fabricate(:mention, account: mentioned_account, status: Fabricate(:status, account: Fabricate(:account)))
|
Fabricate :mention, account: account_mentioned, status: Fabricate(:status, account: Fabricate(:account))
|
||||||
|
Fabricate :favourite, account: account_with_favourite
|
||||||
|
Fabricate :status, account: account_with_status
|
||||||
|
Fabricate :follow, account: account_with_follow
|
||||||
|
Fabricate :follow, target_account: account_targeted_follow
|
||||||
|
Fabricate :block, account: account_with_block
|
||||||
|
Fabricate :block, target_account: account_targeted_block
|
||||||
|
Fabricate :mute, target_account: account_targeted_mute
|
||||||
|
Fabricate :report, target_account: account_targeted_report
|
||||||
|
Fabricate :follow_request, account: account_with_follow_request
|
||||||
|
Fabricate :follow_request, target_account: account_targeted_follow_request
|
||||||
stub_parallelize_with_progress!
|
stub_parallelize_with_progress!
|
||||||
end
|
end
|
||||||
|
|
||||||
def expect_prune_remote_accounts_without_interaction
|
|
||||||
prunable_account_ids = prunable_accounts.pluck(:id)
|
|
||||||
|
|
||||||
expect(Account.where(id: prunable_account_ids).count).to eq(0)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'displays a successful message and handles accounts correctly' do
|
it 'displays a successful message and handles accounts correctly' do
|
||||||
expect { subject }
|
expect { subject }
|
||||||
.to output_results("OK, pruned #{prunable_accounts.size} accounts")
|
.to output_results("OK, pruned #{prunable_accounts.size} accounts")
|
||||||
expect_prune_remote_accounts_without_interaction
|
expect(prunable_account_records)
|
||||||
expect_not_prune_local_accounts
|
.to have_attributes(count: eq(0))
|
||||||
expect_not_prune_bot_accounts
|
expect(Account.all)
|
||||||
expect_not_prune_group_accounts
|
.to include(local_account)
|
||||||
expect_not_prune_mentioned_accounts
|
.and include(bot_account)
|
||||||
|
.and include(group_account)
|
||||||
|
.and include(account_mentioned)
|
||||||
|
.and include(account_with_favourite)
|
||||||
|
.and include(account_with_status)
|
||||||
|
.and include(account_with_follow)
|
||||||
|
.and include(account_targeted_follow)
|
||||||
|
.and include(account_with_block)
|
||||||
|
.and include(account_targeted_block)
|
||||||
|
.and include(account_targeted_mute)
|
||||||
|
.and include(account_targeted_report)
|
||||||
|
.and include(account_with_follow_request)
|
||||||
|
.and include(account_targeted_follow_request)
|
||||||
|
.and not_include(prunable_accounts.first)
|
||||||
|
.and not_include(prunable_accounts.last)
|
||||||
end
|
end
|
||||||
|
|
||||||
def expect_not_prune_local_accounts
|
def prunable_account_records
|
||||||
expect(Account.exists?(id: local_account.id)).to be(true)
|
Account.where(id: prunable_accounts.pluck(:id))
|
||||||
end
|
|
||||||
|
|
||||||
def expect_not_prune_bot_accounts
|
|
||||||
expect(Account.exists?(id: bot_account.id)).to be(true)
|
|
||||||
end
|
|
||||||
|
|
||||||
def expect_not_prune_group_accounts
|
|
||||||
expect(Account.exists?(id: group_account.id)).to be(true)
|
|
||||||
end
|
|
||||||
|
|
||||||
def expect_not_prune_mentioned_accounts
|
|
||||||
expect(Account.exists?(id: mentioned_account.id)).to be true
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with --dry-run option' do
|
context 'with --dry-run option' do
|
||||||
|
|||||||
@@ -191,6 +191,19 @@ RSpec.describe Status do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '.not_replying_to_account' do
|
||||||
|
let(:account) { Fabricate :account }
|
||||||
|
let!(:status_from_account) { Fabricate :status, account: account }
|
||||||
|
let!(:reply_to_account_status) { Fabricate :status, thread: status_from_account }
|
||||||
|
let!(:reply_to_other) { Fabricate :status, thread: Fabricate(:status) }
|
||||||
|
|
||||||
|
it 'returns records not in reply to provided account' do
|
||||||
|
expect(described_class.not_replying_to_account(account))
|
||||||
|
.to not_include(reply_to_account_status)
|
||||||
|
.and include(reply_to_other)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe '#untrusted_favourites_count' do
|
describe '#untrusted_favourites_count' do
|
||||||
before do
|
before do
|
||||||
alice.update(domain: 'example.com')
|
alice.update(domain: 'example.com')
|
||||||
@@ -450,6 +463,28 @@ RSpec.describe Status do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '.only_polls' do
|
||||||
|
let!(:poll_status) { Fabricate :status, poll: Fabricate(:poll) }
|
||||||
|
let!(:no_poll_status) { Fabricate :status }
|
||||||
|
|
||||||
|
it 'returns the expected statuses' do
|
||||||
|
expect(described_class.only_polls)
|
||||||
|
.to include(poll_status)
|
||||||
|
.and not_include(no_poll_status)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '.without_polls' do
|
||||||
|
let!(:poll_status) { Fabricate :status, poll: Fabricate(:poll) }
|
||||||
|
let!(:no_poll_status) { Fabricate :status }
|
||||||
|
|
||||||
|
it 'returns the expected statuses' do
|
||||||
|
expect(described_class.without_polls)
|
||||||
|
.to not_include(poll_status)
|
||||||
|
.and include(no_poll_status)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe '.tagged_with' do
|
describe '.tagged_with' do
|
||||||
let(:tag_cats) { Fabricate(:tag, name: 'cats') }
|
let(:tag_cats) { Fabricate(:tag, name: 'cats') }
|
||||||
let(:tag_dogs) { Fabricate(:tag, name: 'dogs') }
|
let(:tag_dogs) { Fabricate(:tag, name: 'dogs') }
|
||||||
|
|||||||
@@ -6042,9 +6042,9 @@ __metadata:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"core-js@npm:^3.30.2, core-js@npm:^3.41.0":
|
"core-js@npm:^3.30.2, core-js@npm:^3.41.0":
|
||||||
version: 3.43.0
|
version: 3.44.0
|
||||||
resolution: "core-js@npm:3.43.0"
|
resolution: "core-js@npm:3.44.0"
|
||||||
checksum: 10c0/9d4ad66296e60380777de51d019b5c3e6cce023b7999750a5094f9a4b0ea53bf3600beb4ef11c56548f2c8791d43d4056e270d1cf55ba87273011aa7d4597871
|
checksum: 10c0/759bf3dc5f75068e9425dddf895fd5531c38794a11ea1c2b65e5ef7c527fe3652d59e8c287e574a211af9bab3c057c5c3fa6f6a773f4e142af895106efad38a4
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user