mirror of
https://github.com/glitch-soc/mastodon.git
synced 2025-12-18 10:37:45 +00:00
Merge commit 'c87b05282909383353a9561e97b9f18a2db0766d' into glitch-soc/merge-upstream
This commit is contained in:
15
CHANGELOG.md
15
CHANGELOG.md
@@ -2,6 +2,21 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
## [4.5.1] - 2025-11-13
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
|
||||||
|
- Fix Cmd/Ctrl + Enter not submitting Alt text modal on some browsers (#36866 by @diondiondion)
|
||||||
|
- Fix posts coming from public/hashtag streaming being marked as unquotable (#36860 and #36869 by @ClearlyClaire)
|
||||||
|
- Fix old previously-undiscovered posts being treated as new when receiving an `Update` (#36848 by @ClearlyClaire)
|
||||||
|
- Fix blank screen in browsers that don't support `Intl.DisplayNames` (#36847 by @diondiondion)
|
||||||
|
- Fix filters not being applied to quotes in detailed view (#36843 by @ClearlyClaire)
|
||||||
|
- Fix scroll shift caused by fetch-all-replies alerts (#36807 by @diondiondion)
|
||||||
|
- Fix dropdown menu not focusing first item when opened via keyboard (#36804 by @diondiondion)
|
||||||
|
- Fix assets build issue on arch64 (#36781 by @ClearlyClaire)
|
||||||
|
- Fix `/api/v1/statuses/:id/context` sometimes returing `Mastodon-Async-Refresh` without `result_count` (#36779 by @ClearlyClaire)
|
||||||
|
- Fix prepared quote not being discarded with contents when replying (#36778 by @ClearlyClaire)
|
||||||
|
|
||||||
## [4.5.0] - 2025-11-06
|
## [4.5.0] - 2025-11-06
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
@@ -96,8 +96,8 @@ GEM
|
|||||||
ast (2.4.3)
|
ast (2.4.3)
|
||||||
attr_required (1.0.2)
|
attr_required (1.0.2)
|
||||||
aws-eventstream (1.4.0)
|
aws-eventstream (1.4.0)
|
||||||
aws-partitions (1.1180.0)
|
aws-partitions (1.1181.0)
|
||||||
aws-sdk-core (3.236.0)
|
aws-sdk-core (3.237.0)
|
||||||
aws-eventstream (~> 1, >= 1.3.0)
|
aws-eventstream (~> 1, >= 1.3.0)
|
||||||
aws-partitions (~> 1, >= 1.992.0)
|
aws-partitions (~> 1, >= 1.992.0)
|
||||||
aws-sigv4 (~> 1.9)
|
aws-sigv4 (~> 1.9)
|
||||||
@@ -608,7 +608,7 @@ GEM
|
|||||||
premailer (~> 1.7, >= 1.7.9)
|
premailer (~> 1.7, >= 1.7.9)
|
||||||
prettyprint (0.2.0)
|
prettyprint (0.2.0)
|
||||||
prism (1.6.0)
|
prism (1.6.0)
|
||||||
prometheus_exporter (2.3.0)
|
prometheus_exporter (2.3.1)
|
||||||
webrick
|
webrick
|
||||||
propshaft (1.3.1)
|
propshaft (1.3.1)
|
||||||
actionpack (>= 7.0.0)
|
actionpack (>= 7.0.0)
|
||||||
@@ -838,7 +838,7 @@ GEM
|
|||||||
stackprof (0.2.27)
|
stackprof (0.2.27)
|
||||||
starry (0.2.0)
|
starry (0.2.0)
|
||||||
base64
|
base64
|
||||||
stoplight (5.5.0)
|
stoplight (5.6.0)
|
||||||
zeitwerk
|
zeitwerk
|
||||||
stringio (3.1.7)
|
stringio (3.1.7)
|
||||||
strong_migrations (2.5.1)
|
strong_migrations (2.5.1)
|
||||||
|
|||||||
@@ -2,25 +2,25 @@
|
|||||||
|
|
||||||
class DateOfBirthInput < SimpleForm::Inputs::Base
|
class DateOfBirthInput < SimpleForm::Inputs::Base
|
||||||
OPTIONS = [
|
OPTIONS = [
|
||||||
{ autocomplete: 'bday-day', maxlength: 2, pattern: '[0-9]+', placeholder: 'DD' }.freeze,
|
|
||||||
{ autocomplete: 'bday-month', maxlength: 2, pattern: '[0-9]+', placeholder: 'MM' }.freeze,
|
|
||||||
{ autocomplete: 'bday-year', maxlength: 4, pattern: '[0-9]+', placeholder: 'YYYY' }.freeze,
|
{ autocomplete: 'bday-year', maxlength: 4, pattern: '[0-9]+', placeholder: 'YYYY' }.freeze,
|
||||||
|
{ autocomplete: 'bday-month', maxlength: 2, pattern: '[0-9]+', placeholder: 'MM' }.freeze,
|
||||||
|
{ autocomplete: 'bday-day', maxlength: 2, pattern: '[0-9]+', placeholder: 'DD' }.freeze,
|
||||||
].freeze
|
].freeze
|
||||||
|
|
||||||
def input(wrapper_options = nil)
|
def input(wrapper_options = nil)
|
||||||
merged_input_options = merge_wrapper_options(input_html_options, wrapper_options)
|
merged_input_options = merge_wrapper_options(input_html_options, wrapper_options)
|
||||||
merged_input_options[:inputmode] = 'numeric'
|
merged_input_options[:inputmode] = 'numeric'
|
||||||
|
|
||||||
values = (object.public_send(attribute_name) || '').split('.')
|
values = (object.public_send(attribute_name) || '').to_s.split('-')
|
||||||
|
|
||||||
safe_join(Array.new(3) do |index|
|
safe_join(2.downto(0).map do |index|
|
||||||
options = merged_input_options.merge(OPTIONS[index]).merge id: generate_id(index), 'aria-label': I18n.t("simple_form.labels.user.date_of_birth_#{index + 1}i"), value: values[index]
|
options = merged_input_options.merge(OPTIONS[index]).merge id: generate_id(index), 'aria-label': I18n.t("simple_form.labels.user.date_of_birth_#{index + 1}i"), value: values[index]
|
||||||
@builder.text_field("#{attribute_name}(#{index + 1}i)", options)
|
@builder.text_field("#{attribute_name}(#{index + 1}i)", options)
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
def label_target
|
def label_target
|
||||||
"#{attribute_name}_1i"
|
"#{attribute_name}_3i"
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { createRoot } from 'react-dom/client';
|
import { createRoot } from 'react-dom/client';
|
||||||
|
|
||||||
import Rails from '@rails/ujs';
|
|
||||||
import { decode, ValidationError } from 'blurhash';
|
import { decode, ValidationError } from 'blurhash';
|
||||||
|
import { on } from 'delegated-events';
|
||||||
|
|
||||||
import ready from '../mastodon/ready';
|
import ready from '../mastodon/ready';
|
||||||
|
|
||||||
@@ -24,10 +24,9 @@ const setAnnouncementEndsAttributes = (target: HTMLInputElement) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Rails.delegate(
|
on(
|
||||||
document,
|
|
||||||
'input[type="datetime-local"]#announcement_starts_at',
|
|
||||||
'change',
|
'change',
|
||||||
|
'input[type="datetime-local"]#announcement_starts_at',
|
||||||
({ target }) => {
|
({ target }) => {
|
||||||
if (target instanceof HTMLInputElement)
|
if (target instanceof HTMLInputElement)
|
||||||
setAnnouncementEndsAttributes(target);
|
setAnnouncementEndsAttributes(target);
|
||||||
@@ -63,7 +62,7 @@ const hideSelectAll = () => {
|
|||||||
if (hiddenField) hiddenField.value = '0';
|
if (hiddenField) hiddenField.value = '0';
|
||||||
};
|
};
|
||||||
|
|
||||||
Rails.delegate(document, '#batch_checkbox_all', 'change', ({ target }) => {
|
on('change', '#batch_checkbox_all', ({ target }) => {
|
||||||
if (!(target instanceof HTMLInputElement)) return;
|
if (!(target instanceof HTMLInputElement)) return;
|
||||||
|
|
||||||
const selectAllMatchingElement = document.querySelector(
|
const selectAllMatchingElement = document.querySelector(
|
||||||
@@ -85,7 +84,7 @@ Rails.delegate(document, '#batch_checkbox_all', 'change', ({ target }) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Rails.delegate(document, '.batch-table__select-all button', 'click', () => {
|
on('click', '.batch-table__select-all button', () => {
|
||||||
const hiddenField = document.querySelector<HTMLInputElement>(
|
const hiddenField = document.querySelector<HTMLInputElement>(
|
||||||
'#select_all_matching',
|
'#select_all_matching',
|
||||||
);
|
);
|
||||||
@@ -113,7 +112,7 @@ Rails.delegate(document, '.batch-table__select-all button', 'click', () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Rails.delegate(document, batchCheckboxClassName, 'change', () => {
|
on('change', batchCheckboxClassName, () => {
|
||||||
const checkAllElement = document.querySelector<HTMLInputElement>(
|
const checkAllElement = document.querySelector<HTMLInputElement>(
|
||||||
'input#batch_checkbox_all',
|
'input#batch_checkbox_all',
|
||||||
);
|
);
|
||||||
@@ -140,14 +139,9 @@ Rails.delegate(document, batchCheckboxClassName, 'change', () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Rails.delegate(
|
on('change', '.filter-subset--with-select select', ({ target }) => {
|
||||||
document,
|
if (target instanceof HTMLSelectElement) target.form?.submit();
|
||||||
'.filter-subset--with-select select',
|
});
|
||||||
'change',
|
|
||||||
({ target }) => {
|
|
||||||
if (target instanceof HTMLSelectElement) target.form?.submit();
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
const onDomainBlockSeverityChange = (target: HTMLSelectElement) => {
|
const onDomainBlockSeverityChange = (target: HTMLSelectElement) => {
|
||||||
const rejectMediaDiv = document.querySelector(
|
const rejectMediaDiv = document.querySelector(
|
||||||
@@ -168,11 +162,11 @@ const onDomainBlockSeverityChange = (target: HTMLSelectElement) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Rails.delegate(document, '#domain_block_severity', 'change', ({ target }) => {
|
on('change', '#domain_block_severity', ({ target }) => {
|
||||||
if (target instanceof HTMLSelectElement) onDomainBlockSeverityChange(target);
|
if (target instanceof HTMLSelectElement) onDomainBlockSeverityChange(target);
|
||||||
});
|
});
|
||||||
|
|
||||||
const onEnableBootstrapTimelineAccountsChange = (target: HTMLInputElement) => {
|
function onEnableBootstrapTimelineAccountsChange(target: HTMLInputElement) {
|
||||||
const bootstrapTimelineAccountsField =
|
const bootstrapTimelineAccountsField =
|
||||||
document.querySelector<HTMLInputElement>(
|
document.querySelector<HTMLInputElement>(
|
||||||
'#form_admin_settings_bootstrap_timeline_accounts',
|
'#form_admin_settings_bootstrap_timeline_accounts',
|
||||||
@@ -194,12 +188,11 @@ const onEnableBootstrapTimelineAccountsChange = (target: HTMLInputElement) => {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
Rails.delegate(
|
on(
|
||||||
document,
|
|
||||||
'#form_admin_settings_enable_bootstrap_timeline_accounts',
|
|
||||||
'change',
|
'change',
|
||||||
|
'#form_admin_settings_enable_bootstrap_timeline_accounts',
|
||||||
({ target }) => {
|
({ target }) => {
|
||||||
if (target instanceof HTMLInputElement)
|
if (target instanceof HTMLInputElement)
|
||||||
onEnableBootstrapTimelineAccountsChange(target);
|
onEnableBootstrapTimelineAccountsChange(target);
|
||||||
@@ -239,11 +232,11 @@ const onChangeRegistrationMode = (target: HTMLSelectElement) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const convertUTCDateTimeToLocal = (value: string) => {
|
function convertUTCDateTimeToLocal(value: string) {
|
||||||
const date = new Date(value + 'Z');
|
const date = new Date(value + 'Z');
|
||||||
const twoChars = (x: number) => x.toString().padStart(2, '0');
|
const twoChars = (x: number) => x.toString().padStart(2, '0');
|
||||||
return `${date.getFullYear()}-${twoChars(date.getMonth() + 1)}-${twoChars(date.getDate())}T${twoChars(date.getHours())}:${twoChars(date.getMinutes())}`;
|
return `${date.getFullYear()}-${twoChars(date.getMonth() + 1)}-${twoChars(date.getDate())}T${twoChars(date.getHours())}:${twoChars(date.getMinutes())}`;
|
||||||
};
|
}
|
||||||
|
|
||||||
function convertLocalDatetimeToUTC(value: string) {
|
function convertLocalDatetimeToUTC(value: string) {
|
||||||
const date = new Date(value);
|
const date = new Date(value);
|
||||||
@@ -251,14 +244,9 @@ function convertLocalDatetimeToUTC(value: string) {
|
|||||||
return fullISO8601.slice(0, fullISO8601.indexOf('T') + 6);
|
return fullISO8601.slice(0, fullISO8601.indexOf('T') + 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
Rails.delegate(
|
on('change', '#form_admin_settings_registrations_mode', ({ target }) => {
|
||||||
document,
|
if (target instanceof HTMLSelectElement) onChangeRegistrationMode(target);
|
||||||
'#form_admin_settings_registrations_mode',
|
});
|
||||||
'change',
|
|
||||||
({ target }) => {
|
|
||||||
if (target instanceof HTMLSelectElement) onChangeRegistrationMode(target);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
async function mountReactComponent(element: Element) {
|
async function mountReactComponent(element: Element) {
|
||||||
const componentName = element.getAttribute('data-admin-component');
|
const componentName = element.getAttribute('data-admin-component');
|
||||||
@@ -305,7 +293,7 @@ ready(() => {
|
|||||||
if (registrationMode) onChangeRegistrationMode(registrationMode);
|
if (registrationMode) onChangeRegistrationMode(registrationMode);
|
||||||
|
|
||||||
const checkAllElement = document.querySelector<HTMLInputElement>(
|
const checkAllElement = document.querySelector<HTMLInputElement>(
|
||||||
'input#batch_checkbox_all',
|
'#batch_checkbox_all',
|
||||||
);
|
);
|
||||||
if (checkAllElement) {
|
if (checkAllElement) {
|
||||||
const allCheckboxes = Array.from(
|
const allCheckboxes = Array.from(
|
||||||
@@ -318,7 +306,7 @@ ready(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
document
|
document
|
||||||
.querySelector('a#add-instance-button')
|
.querySelector<HTMLAnchorElement>('a#add-instance-button')
|
||||||
?.addEventListener('click', (e) => {
|
?.addEventListener('click', (e) => {
|
||||||
const domain = document.querySelector<HTMLInputElement>(
|
const domain = document.querySelector<HTMLInputElement>(
|
||||||
'input[type="text"]#by_domain',
|
'input[type="text"]#by_domain',
|
||||||
@@ -342,7 +330,7 @@ ready(() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Rails.delegate(document, 'form', 'submit', ({ target }) => {
|
on('submit', 'form', ({ target }) => {
|
||||||
if (target instanceof HTMLFormElement)
|
if (target instanceof HTMLFormElement)
|
||||||
target
|
target
|
||||||
.querySelectorAll<HTMLInputElement>('input[type="datetime-local"]')
|
.querySelectorAll<HTMLInputElement>('input[type="datetime-local"]')
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import { IntlMessageFormat } from 'intl-messageformat';
|
|||||||
import type { MessageDescriptor, PrimitiveType } from 'react-intl';
|
import type { MessageDescriptor, PrimitiveType } from 'react-intl';
|
||||||
import { defineMessages } from 'react-intl';
|
import { defineMessages } from 'react-intl';
|
||||||
|
|
||||||
import Rails from '@rails/ujs';
|
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
|
import { on } from 'delegated-events';
|
||||||
import { throttle } from 'lodash';
|
import { throttle } from 'lodash';
|
||||||
|
|
||||||
import { timeAgoString } from '../mastodon/components/relative_timestamp';
|
import { timeAgoString } from '../mastodon/components/relative_timestamp';
|
||||||
@@ -175,10 +175,9 @@ function loaded() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Rails.delegate(
|
on(
|
||||||
document,
|
|
||||||
'input#user_account_attributes_username',
|
|
||||||
'input',
|
'input',
|
||||||
|
'input#user_account_attributes_username',
|
||||||
throttle(
|
throttle(
|
||||||
({ target }) => {
|
({ target }) => {
|
||||||
if (!(target instanceof HTMLInputElement)) return;
|
if (!(target instanceof HTMLInputElement)) return;
|
||||||
@@ -202,60 +201,47 @@ function loaded() {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
Rails.delegate(
|
on('input', '#user_password,#user_password_confirmation', () => {
|
||||||
document,
|
const password = document.querySelector<HTMLInputElement>(
|
||||||
'#user_password,#user_password_confirmation',
|
'input#user_password',
|
||||||
'input',
|
);
|
||||||
() => {
|
const confirmation = document.querySelector<HTMLInputElement>(
|
||||||
const password = document.querySelector<HTMLInputElement>(
|
'input#user_password_confirmation',
|
||||||
'input#user_password',
|
);
|
||||||
);
|
if (!confirmation || !password) return;
|
||||||
const confirmation = document.querySelector<HTMLInputElement>(
|
|
||||||
'input#user_password_confirmation',
|
|
||||||
);
|
|
||||||
if (!confirmation || !password) return;
|
|
||||||
|
|
||||||
if (
|
if (confirmation.value && confirmation.value.length > password.maxLength) {
|
||||||
confirmation.value &&
|
confirmation.setCustomValidity(
|
||||||
confirmation.value.length > password.maxLength
|
formatMessage(messages.passwordExceedsLength),
|
||||||
) {
|
);
|
||||||
confirmation.setCustomValidity(
|
} else if (password.value && password.value !== confirmation.value) {
|
||||||
formatMessage(messages.passwordExceedsLength),
|
confirmation.setCustomValidity(
|
||||||
);
|
formatMessage(messages.passwordDoesNotMatch),
|
||||||
} else if (password.value && password.value !== confirmation.value) {
|
);
|
||||||
confirmation.setCustomValidity(
|
} else {
|
||||||
formatMessage(messages.passwordDoesNotMatch),
|
confirmation.setCustomValidity('');
|
||||||
);
|
}
|
||||||
} else {
|
});
|
||||||
confirmation.setCustomValidity('');
|
|
||||||
}
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Rails.delegate(
|
on('change', '#edit_profile input[type=file]', ({ target }) => {
|
||||||
document,
|
if (!(target instanceof HTMLInputElement)) return;
|
||||||
'#edit_profile input[type=file]',
|
|
||||||
'change',
|
|
||||||
({ target }) => {
|
|
||||||
if (!(target instanceof HTMLInputElement)) return;
|
|
||||||
|
|
||||||
const avatar = document.querySelector<HTMLImageElement>(
|
const avatar = document.querySelector<HTMLImageElement>(
|
||||||
`img#${target.id}-preview`,
|
`img#${target.id}-preview`,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!avatar) return;
|
if (!avatar) return;
|
||||||
|
|
||||||
let file: File | undefined;
|
let file: File | undefined;
|
||||||
if (target.files) file = target.files[0];
|
if (target.files) file = target.files[0];
|
||||||
|
|
||||||
const url = file ? URL.createObjectURL(file) : avatar.dataset.originalSrc;
|
const url = file ? URL.createObjectURL(file) : avatar.dataset.originalSrc;
|
||||||
|
|
||||||
if (url) avatar.src = url;
|
if (url) avatar.src = url;
|
||||||
},
|
});
|
||||||
);
|
|
||||||
|
|
||||||
Rails.delegate(document, '.input-copy input', 'click', ({ target }) => {
|
on('click', '.input-copy input', ({ target }) => {
|
||||||
if (!(target instanceof HTMLInputElement)) return;
|
if (!(target instanceof HTMLInputElement)) return;
|
||||||
|
|
||||||
target.focus();
|
target.focus();
|
||||||
@@ -263,7 +249,7 @@ Rails.delegate(document, '.input-copy input', 'click', ({ target }) => {
|
|||||||
target.setSelectionRange(0, target.value.length);
|
target.setSelectionRange(0, target.value.length);
|
||||||
});
|
});
|
||||||
|
|
||||||
Rails.delegate(document, '.input-copy button', 'click', ({ target }) => {
|
on('click', '.input-copy button', ({ target }) => {
|
||||||
if (!(target instanceof HTMLButtonElement)) return;
|
if (!(target instanceof HTMLButtonElement)) return;
|
||||||
|
|
||||||
const input = target.parentNode?.querySelector<HTMLInputElement>(
|
const input = target.parentNode?.querySelector<HTMLInputElement>(
|
||||||
@@ -312,22 +298,22 @@ const toggleSidebar = () => {
|
|||||||
sidebar.classList.toggle('visible');
|
sidebar.classList.toggle('visible');
|
||||||
};
|
};
|
||||||
|
|
||||||
Rails.delegate(document, '.sidebar__toggle__icon', 'click', () => {
|
on('click', '.sidebar__toggle__icon', () => {
|
||||||
toggleSidebar();
|
toggleSidebar();
|
||||||
});
|
});
|
||||||
|
|
||||||
Rails.delegate(document, '.sidebar__toggle__icon', 'keydown', (e) => {
|
on('keydown', '.sidebar__toggle__icon', (e) => {
|
||||||
if (e.key === ' ' || e.key === 'Enter') {
|
if (e.key === ' ' || e.key === 'Enter') {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
toggleSidebar();
|
toggleSidebar();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Rails.delegate(document, 'img.custom-emoji', 'mouseover', ({ target }) => {
|
on('mouseover', 'img.custom-emoji', ({ target }) => {
|
||||||
if (target instanceof HTMLImageElement && target.dataset.original)
|
if (target instanceof HTMLImageElement && target.dataset.original)
|
||||||
target.src = target.dataset.original;
|
target.src = target.dataset.original;
|
||||||
});
|
});
|
||||||
Rails.delegate(document, 'img.custom-emoji', 'mouseout', ({ target }) => {
|
on('mouseout', 'img.custom-emoji', ({ target }) => {
|
||||||
if (target instanceof HTMLImageElement && target.dataset.static)
|
if (target instanceof HTMLImageElement && target.dataset.static)
|
||||||
target.src = target.dataset.static;
|
target.src = target.dataset.static;
|
||||||
});
|
});
|
||||||
@@ -376,22 +362,17 @@ const setInputHint = (
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Rails.delegate(
|
on('change', '#account_statuses_cleanup_policy_enabled', ({ target }) => {
|
||||||
document,
|
if (!(target instanceof HTMLInputElement) || !target.form) return;
|
||||||
'#account_statuses_cleanup_policy_enabled',
|
|
||||||
'change',
|
|
||||||
({ target }) => {
|
|
||||||
if (!(target instanceof HTMLInputElement) || !target.form) return;
|
|
||||||
|
|
||||||
target.form
|
target.form
|
||||||
.querySelectorAll<
|
.querySelectorAll<
|
||||||
HTMLInputElement | HTMLSelectElement
|
HTMLInputElement | HTMLSelectElement
|
||||||
>('input:not([type=hidden], #account_statuses_cleanup_policy_enabled), select')
|
>('input:not([type=hidden], #account_statuses_cleanup_policy_enabled), select')
|
||||||
.forEach((input) => {
|
.forEach((input) => {
|
||||||
setInputDisabled(input, !target.checked);
|
setInputDisabled(input, !target.checked);
|
||||||
});
|
});
|
||||||
},
|
});
|
||||||
);
|
|
||||||
|
|
||||||
const updateDefaultQuotePrivacyFromPrivacy = (
|
const updateDefaultQuotePrivacyFromPrivacy = (
|
||||||
privacySelect: EventTarget | null,
|
privacySelect: EventTarget | null,
|
||||||
@@ -414,18 +395,13 @@ const updateDefaultQuotePrivacyFromPrivacy = (
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Rails.delegate(
|
on('change', '#user_settings_attributes_default_privacy', ({ target }) => {
|
||||||
document,
|
updateDefaultQuotePrivacyFromPrivacy(target);
|
||||||
'#user_settings_attributes_default_privacy',
|
});
|
||||||
'change',
|
|
||||||
({ target }) => {
|
|
||||||
updateDefaultQuotePrivacyFromPrivacy(target);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
// Empty the honeypot fields in JS in case something like an extension
|
// Empty the honeypot fields in JS in case something like an extension
|
||||||
// automatically filled them.
|
// automatically filled them.
|
||||||
Rails.delegate(document, '#registration_new_user,#new_user', 'submit', () => {
|
on('submit', '#registration_new_user,#new_user', () => {
|
||||||
[
|
[
|
||||||
'user_website',
|
'user_website',
|
||||||
'user_confirm_password',
|
'user_confirm_password',
|
||||||
@@ -439,7 +415,7 @@ Rails.delegate(document, '#registration_new_user,#new_user', 'submit', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
Rails.delegate(document, '.rules-list button', 'click', ({ target }) => {
|
on('click', '.rules-list button', ({ target }) => {
|
||||||
if (!(target instanceof HTMLElement)) {
|
if (!(target instanceof HTMLElement)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -675,8 +675,8 @@ export function selectComposeSuggestion(position, token, suggestion, path) {
|
|||||||
|
|
||||||
dispatch(useEmoji(suggestion));
|
dispatch(useEmoji(suggestion));
|
||||||
} else if (suggestion.type === 'hashtag') {
|
} else if (suggestion.type === 'hashtag') {
|
||||||
completion = suggestion.name.slice(token.length - 1);
|
completion = token + suggestion.name.slice(token.length - 1);
|
||||||
startPosition = position + token.length;
|
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'])}`;
|
||||||
startPosition = position - 1;
|
startPosition = position - 1;
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ export function normalizeStatus(status, normalOldStatus, { bogusQuotePolicy = fa
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (normalOldStatus) {
|
if (normalOldStatus) {
|
||||||
normalStatus.quote_approval ||= normalOldStatus.quote_approval;
|
normalStatus.quote_approval ||= normalOldStatus.get('quote_approval');
|
||||||
|
|
||||||
const list = normalOldStatus.get('media_attachments');
|
const list = normalOldStatus.get('media_attachments');
|
||||||
if (normalStatus.media_attachments && list) {
|
if (normalStatus.media_attachments && list) {
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ const AutosuggestTextarea = forwardRef(({
|
|||||||
onKeyUp,
|
onKeyUp,
|
||||||
onKeyDown,
|
onKeyDown,
|
||||||
onPaste,
|
onPaste,
|
||||||
|
onDrop,
|
||||||
onFocus,
|
onFocus,
|
||||||
autoFocus = true,
|
autoFocus = true,
|
||||||
lang,
|
lang,
|
||||||
@@ -153,6 +154,12 @@ const AutosuggestTextarea = forwardRef(({
|
|||||||
onPaste(e);
|
onPaste(e);
|
||||||
}, [onPaste]);
|
}, [onPaste]);
|
||||||
|
|
||||||
|
const handleDrop = useCallback((e) => {
|
||||||
|
if (onDrop) {
|
||||||
|
onDrop(e);
|
||||||
|
}
|
||||||
|
}, [onDrop]);
|
||||||
|
|
||||||
// Show the suggestions again whenever they change and the textarea is focused
|
// Show the suggestions again whenever they change and the textarea is focused
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (suggestions.size > 0 && textareaRef.current === document.activeElement) {
|
if (suggestions.size > 0 && textareaRef.current === document.activeElement) {
|
||||||
@@ -204,6 +211,7 @@ const AutosuggestTextarea = forwardRef(({
|
|||||||
onFocus={handleFocus}
|
onFocus={handleFocus}
|
||||||
onBlur={handleBlur}
|
onBlur={handleBlur}
|
||||||
onPaste={handlePaste}
|
onPaste={handlePaste}
|
||||||
|
onDrop={handleDrop}
|
||||||
dir='auto'
|
dir='auto'
|
||||||
aria-autocomplete='list'
|
aria-autocomplete='list'
|
||||||
aria-label={placeholder}
|
aria-label={placeholder}
|
||||||
@@ -235,6 +243,7 @@ AutosuggestTextarea.propTypes = {
|
|||||||
onKeyUp: PropTypes.func,
|
onKeyUp: PropTypes.func,
|
||||||
onKeyDown: PropTypes.func,
|
onKeyDown: PropTypes.func,
|
||||||
onPaste: PropTypes.func.isRequired,
|
onPaste: PropTypes.func.isRequired,
|
||||||
|
onDrop: PropTypes.func,
|
||||||
onFocus:PropTypes.func,
|
onFocus:PropTypes.func,
|
||||||
autoFocus: PropTypes.bool,
|
autoFocus: PropTypes.bool,
|
||||||
lang: PropTypes.string,
|
lang: PropTypes.string,
|
||||||
|
|||||||
@@ -27,12 +27,14 @@ export const HandledLink: FC<HandledLinkProps & ComponentProps<'a'>> = ({
|
|||||||
}) => {
|
}) => {
|
||||||
// Handle hashtags
|
// Handle hashtags
|
||||||
if (
|
if (
|
||||||
text.startsWith('#') ||
|
(text.startsWith('#') ||
|
||||||
prevText?.endsWith('#') ||
|
prevText?.endsWith('#') ||
|
||||||
text.startsWith('#') ||
|
text.startsWith('#') ||
|
||||||
prevText?.endsWith('#')
|
prevText?.endsWith('#')) &&
|
||||||
|
!text.includes('%')
|
||||||
) {
|
) {
|
||||||
const hashtag = text.slice(1).trim();
|
const hashtag = text.slice(1).trim();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Link
|
<Link
|
||||||
className={classNames('mention hashtag', className)}
|
className={classNames('mention hashtag', className)}
|
||||||
@@ -69,7 +71,7 @@ export const HandledLink: FC<HandledLinkProps & ComponentProps<'a'>> = ({
|
|||||||
return (
|
return (
|
||||||
<a
|
<a
|
||||||
{...props}
|
{...props}
|
||||||
href={href}
|
href={encodeURI(href)}
|
||||||
title={href}
|
title={href}
|
||||||
className={classNames('unhandled-link', className)}
|
className={classNames('unhandled-link', className)}
|
||||||
target='_blank'
|
target='_blank'
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ class ComposeForm extends ImmutablePureComponent {
|
|||||||
onSuggestionSelected: PropTypes.func.isRequired,
|
onSuggestionSelected: PropTypes.func.isRequired,
|
||||||
onChangeSpoilerText: PropTypes.func.isRequired,
|
onChangeSpoilerText: PropTypes.func.isRequired,
|
||||||
onPaste: PropTypes.func.isRequired,
|
onPaste: PropTypes.func.isRequired,
|
||||||
|
onDrop: PropTypes.func.isRequired,
|
||||||
onPickEmoji: PropTypes.func.isRequired,
|
onPickEmoji: PropTypes.func.isRequired,
|
||||||
autoFocus: PropTypes.bool,
|
autoFocus: PropTypes.bool,
|
||||||
withoutNavigation: PropTypes.bool,
|
withoutNavigation: PropTypes.bool,
|
||||||
@@ -102,6 +103,7 @@ class ComposeForm extends ImmutablePureComponent {
|
|||||||
handleKeyDownPost = (e) => {
|
handleKeyDownPost = (e) => {
|
||||||
if (e.key.toLowerCase() === 'enter' && (e.ctrlKey || e.metaKey)) {
|
if (e.key.toLowerCase() === 'enter' && (e.ctrlKey || e.metaKey)) {
|
||||||
this.handleSubmit();
|
this.handleSubmit();
|
||||||
|
e.preventDefault();
|
||||||
}
|
}
|
||||||
this.blurOnEscape(e);
|
this.blurOnEscape(e);
|
||||||
};
|
};
|
||||||
@@ -248,7 +250,7 @@ class ComposeForm extends ImmutablePureComponent {
|
|||||||
};
|
};
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
const { intl, onPaste, autoFocus, withoutNavigation, maxChars, isSubmitting } = this.props;
|
const { intl, onPaste, onDrop, autoFocus, withoutNavigation, maxChars, isSubmitting } = this.props;
|
||||||
const { highlighted } = this.state;
|
const { highlighted } = this.state;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -304,6 +306,7 @@ class ComposeForm extends ImmutablePureComponent {
|
|||||||
onSuggestionsClearRequested={this.onSuggestionsClearRequested}
|
onSuggestionsClearRequested={this.onSuggestionsClearRequested}
|
||||||
onSuggestionSelected={this.onSuggestionSelected}
|
onSuggestionSelected={this.onSuggestionSelected}
|
||||||
onPaste={onPaste}
|
onPaste={onPaste}
|
||||||
|
onDrop={onDrop}
|
||||||
autoFocus={autoFocus}
|
autoFocus={autoFocus}
|
||||||
lang={this.props.lang}
|
lang={this.props.lang}
|
||||||
className='compose-form__input'
|
className='compose-form__input'
|
||||||
|
|||||||
@@ -18,6 +18,23 @@ import ComposeForm from '../components/compose_form';
|
|||||||
|
|
||||||
const urlLikeRegex = /^https?:\/\/[^\s]+\/[^\s]+$/i;
|
const urlLikeRegex = /^https?:\/\/[^\s]+\/[^\s]+$/i;
|
||||||
|
|
||||||
|
const processPasteOrDrop = (transfer, e, dispatch) => {
|
||||||
|
if (transfer && transfer.files.length === 1) {
|
||||||
|
dispatch(uploadCompose(transfer.files));
|
||||||
|
e.preventDefault();
|
||||||
|
} else if (transfer && transfer.files.length === 0) {
|
||||||
|
const data = transfer.getData('text/plain');
|
||||||
|
if (!data.match(urlLikeRegex)) return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const url = new URL(data);
|
||||||
|
dispatch(pasteLinkCompose({ url }));
|
||||||
|
} catch {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const mapStateToProps = state => ({
|
const mapStateToProps = state => ({
|
||||||
text: state.getIn(['compose', 'text']),
|
text: state.getIn(['compose', 'text']),
|
||||||
suggestions: state.getIn(['compose', 'suggestions']),
|
suggestions: state.getIn(['compose', 'suggestions']),
|
||||||
@@ -85,20 +102,11 @@ const mapDispatchToProps = (dispatch, props) => ({
|
|||||||
},
|
},
|
||||||
|
|
||||||
onPaste (e) {
|
onPaste (e) {
|
||||||
if (e.clipboardData && e.clipboardData.files.length === 1) {
|
processPasteOrDrop(e.clipboardData, e, dispatch);
|
||||||
dispatch(uploadCompose(e.clipboardData.files));
|
},
|
||||||
e.preventDefault();
|
|
||||||
} else if (e.clipboardData && e.clipboardData.files.length === 0) {
|
|
||||||
const data = e.clipboardData.getData('text/plain');
|
|
||||||
if (!data.match(urlLikeRegex)) return;
|
|
||||||
|
|
||||||
try {
|
onDrop (e) {
|
||||||
const url = new URL(data);
|
processPasteOrDrop(e.dataTransfer, e, dispatch);
|
||||||
dispatch(pasteLinkCompose({ url }));
|
|
||||||
} catch {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
onPickEmoji (position, data, needsSpace) {
|
onPickEmoji (position, data, needsSpace) {
|
||||||
|
|||||||
@@ -157,6 +157,8 @@
|
|||||||
"bundle_modal_error.close": "Tanca",
|
"bundle_modal_error.close": "Tanca",
|
||||||
"bundle_modal_error.message": "S'ha produït un error en carregar aquesta pantalla.",
|
"bundle_modal_error.message": "S'ha produït un error en carregar aquesta pantalla.",
|
||||||
"bundle_modal_error.retry": "Torna-ho a provar",
|
"bundle_modal_error.retry": "Torna-ho a provar",
|
||||||
|
"carousel.current": "<sr>Diapositiva</sr> {current, number} / {max, number}",
|
||||||
|
"carousel.slide": "Diapositiva {current, number} de {max, number}",
|
||||||
"closed_registrations.other_server_instructions": "Com que Mastodon és descentralitzat, pots crear un compte en un altre servidor i continuar interactuant amb aquest.",
|
"closed_registrations.other_server_instructions": "Com que Mastodon és descentralitzat, pots crear un compte en un altre servidor i continuar interactuant amb aquest.",
|
||||||
"closed_registrations_modal.description": "No es pot crear un compte a {domain} ara mateix, però tingues en compte que no necessites específicament un compte a {domain} per a usar Mastodon.",
|
"closed_registrations_modal.description": "No es pot crear un compte a {domain} ara mateix, però tingues en compte que no necessites específicament un compte a {domain} per a usar Mastodon.",
|
||||||
"closed_registrations_modal.find_another_server": "Troba un altre servidor",
|
"closed_registrations_modal.find_another_server": "Troba un altre servidor",
|
||||||
@@ -173,6 +175,8 @@
|
|||||||
"column.edit_list": "Edita la llista",
|
"column.edit_list": "Edita la llista",
|
||||||
"column.favourites": "Favorits",
|
"column.favourites": "Favorits",
|
||||||
"column.firehose": "Tuts en directe",
|
"column.firehose": "Tuts en directe",
|
||||||
|
"column.firehose_local": "Canal en directe per a aquest servidor",
|
||||||
|
"column.firehose_singular": "Canal en directe",
|
||||||
"column.follow_requests": "Peticions de seguir-te",
|
"column.follow_requests": "Peticions de seguir-te",
|
||||||
"column.home": "Inici",
|
"column.home": "Inici",
|
||||||
"column.list_members": "Gestiona els membres de la llista",
|
"column.list_members": "Gestiona els membres de la llista",
|
||||||
@@ -245,8 +249,13 @@
|
|||||||
"confirmations.missing_alt_text.secondary": "Publica-la igualment",
|
"confirmations.missing_alt_text.secondary": "Publica-la igualment",
|
||||||
"confirmations.missing_alt_text.title": "Hi voleu afegir text alternatiu?",
|
"confirmations.missing_alt_text.title": "Hi voleu afegir text alternatiu?",
|
||||||
"confirmations.mute.confirm": "Silencia",
|
"confirmations.mute.confirm": "Silencia",
|
||||||
|
"confirmations.private_quote_notify.cancel": "Torna a l'edició",
|
||||||
|
"confirmations.private_quote_notify.message": "La persona que citeu i altres mencionades rebran una notificació i podran veure la vostra publicació, encara que no us segueixen.",
|
||||||
|
"confirmations.private_quote_notify.title": "Voleu compartir amb seguidors i usuaris mencionats?",
|
||||||
"confirmations.quiet_post_quote_info.dismiss": "No m'ho tornis a recordar",
|
"confirmations.quiet_post_quote_info.dismiss": "No m'ho tornis a recordar",
|
||||||
"confirmations.quiet_post_quote_info.got_it": "Entesos",
|
"confirmations.quiet_post_quote_info.got_it": "Entesos",
|
||||||
|
"confirmations.quiet_post_quote_info.message": "Quan citeu una publicació pública en mode silenciós, la vostra publicació s'amagarà de les línies de temps de tendències.",
|
||||||
|
"confirmations.quiet_post_quote_info.title": "Citació d'una publicació pública en mode silenciós",
|
||||||
"confirmations.redraft.confirm": "Esborra i reescriu",
|
"confirmations.redraft.confirm": "Esborra i reescriu",
|
||||||
"confirmations.redraft.message": "Segur que vols eliminar aquest tut i tornar a escriure'l? Es perdran tots els impulsos i els favorits, i les respostes al tut original quedaran aïllades.",
|
"confirmations.redraft.message": "Segur que vols eliminar aquest tut i tornar a escriure'l? Es perdran tots els impulsos i els favorits, i les respostes al tut original quedaran aïllades.",
|
||||||
"confirmations.redraft.title": "Esborrar i reescriure la publicació?",
|
"confirmations.redraft.title": "Esborrar i reescriure la publicació?",
|
||||||
@@ -332,6 +341,7 @@
|
|||||||
"empty_column.bookmarked_statuses": "Encara no has marcat cap tut. Quan en marquis un, apareixerà aquí.",
|
"empty_column.bookmarked_statuses": "Encara no has marcat cap tut. Quan en marquis un, apareixerà aquí.",
|
||||||
"empty_column.community": "La línia de temps local és buida. Escriu alguna cosa públicament per posar-ho tot en marxa!",
|
"empty_column.community": "La línia de temps local és buida. Escriu alguna cosa públicament per posar-ho tot en marxa!",
|
||||||
"empty_column.direct": "Encara no tens mencions privades. Quan n'enviïs o en rebis una, et sortirà aquí.",
|
"empty_column.direct": "Encara no tens mencions privades. Quan n'enviïs o en rebis una, et sortirà aquí.",
|
||||||
|
"empty_column.disabled_feed": "Aquest canal ha estat desactivat per l'administració del vostre servidor.",
|
||||||
"empty_column.domain_blocks": "Encara no hi ha dominis blocats.",
|
"empty_column.domain_blocks": "Encara no hi ha dominis blocats.",
|
||||||
"empty_column.explore_statuses": "No hi ha res en tendència ara mateix. Revisa-ho més tard!",
|
"empty_column.explore_statuses": "No hi ha res en tendència ara mateix. Revisa-ho més tard!",
|
||||||
"empty_column.favourited_statuses": "Encara no has afavorit cap tut. Quan ho facis, apareixerà aquí.",
|
"empty_column.favourited_statuses": "Encara no has afavorit cap tut. Quan ho facis, apareixerà aquí.",
|
||||||
@@ -357,6 +367,7 @@
|
|||||||
"explore.trending_statuses": "Tuts",
|
"explore.trending_statuses": "Tuts",
|
||||||
"explore.trending_tags": "Etiquetes",
|
"explore.trending_tags": "Etiquetes",
|
||||||
"featured_carousel.header": "{count, plural, one {Publicació fixada} other {Publicacions fixades}}",
|
"featured_carousel.header": "{count, plural, one {Publicació fixada} other {Publicacions fixades}}",
|
||||||
|
"featured_carousel.slide": "Publicació {current, number} de {max, number}",
|
||||||
"filter_modal.added.context_mismatch_explanation": "Aquesta categoria de filtre no s'aplica al context en què has accedit a aquest tut. Si també vols que el tut es filtri en aquest context, hauràs d'editar el filtre.",
|
"filter_modal.added.context_mismatch_explanation": "Aquesta categoria de filtre no s'aplica al context en què has accedit a aquest tut. Si també vols que el tut es filtri en aquest context, hauràs d'editar el filtre.",
|
||||||
"filter_modal.added.context_mismatch_title": "El context no coincideix!",
|
"filter_modal.added.context_mismatch_title": "El context no coincideix!",
|
||||||
"filter_modal.added.expired_explanation": "La categoria d'aquest filtre ha caducat, necessitaràs canviar la seva data de caducitat per a aplicar-la.",
|
"filter_modal.added.expired_explanation": "La categoria d'aquest filtre ha caducat, necessitaràs canviar la seva data de caducitat per a aplicar-la.",
|
||||||
@@ -456,6 +467,7 @@
|
|||||||
"ignore_notifications_modal.not_following_title": "Voleu ignorar les notificacions de qui no seguiu?",
|
"ignore_notifications_modal.not_following_title": "Voleu ignorar les notificacions de qui no seguiu?",
|
||||||
"ignore_notifications_modal.private_mentions_title": "Voleu ignorar les notificacions de mencions privades no sol·licitades?",
|
"ignore_notifications_modal.private_mentions_title": "Voleu ignorar les notificacions de mencions privades no sol·licitades?",
|
||||||
"info_button.label": "Ajuda",
|
"info_button.label": "Ajuda",
|
||||||
|
"info_button.what_is_alt_text": "<h1>Què és el text alternatiu?</h1> <p>El text alternatiu proporciona descripcions d'imatges per a persones amb discapacitat visual, connexions de poca amplada de banda o aquelles que busquen un context addicional.</p> <p>Podeu millorar l'accessibilitat i la comprensió per a tothom escrivint un text alternatiu clar, concís i objectiu.</p> <ul> <li>Descriviu els elements importants</li> <li>Utilitzeu frases senzilles</li> <li>Resumiu el text en imatges</li> <li>Eviteu la informació redundant</li> <li>Centreu-vos en les tendències i els aspectes clau dels elements visuals complexos (com ara diagrames o mapes)</li> </ul>",
|
||||||
"interaction_modal.action": "Per a interactuar amb la publicació de {name} cal que inicieu la sessió en el servidor que feu servir.",
|
"interaction_modal.action": "Per a interactuar amb la publicació de {name} cal que inicieu la sessió en el servidor que feu servir.",
|
||||||
"interaction_modal.go": "Endavant",
|
"interaction_modal.go": "Endavant",
|
||||||
"interaction_modal.no_account_yet": "Encara no teniu cap compte?",
|
"interaction_modal.no_account_yet": "Encara no teniu cap compte?",
|
||||||
@@ -1000,10 +1012,14 @@
|
|||||||
"video.volume_down": "Abaixa el volum",
|
"video.volume_down": "Abaixa el volum",
|
||||||
"video.volume_up": "Apuja el volum",
|
"video.volume_up": "Apuja el volum",
|
||||||
"visibility_modal.button_title": "Establiu la visibilitat",
|
"visibility_modal.button_title": "Establiu la visibilitat",
|
||||||
|
"visibility_modal.direct_quote_warning.text": "Si deseu la configuració actual, la cita incrustada es convertirà en un enllaç.",
|
||||||
|
"visibility_modal.direct_quote_warning.title": "Les cites no es poden incrustar a les mencions privades",
|
||||||
"visibility_modal.header": "Visibilitat i interacció",
|
"visibility_modal.header": "Visibilitat i interacció",
|
||||||
"visibility_modal.helper.direct_quoting": "No es poden citar mencions privades fetes a Mastondon.",
|
"visibility_modal.helper.direct_quoting": "No es poden citar mencions privades fetes a Mastondon.",
|
||||||
|
"visibility_modal.helper.privacy_editing": "La visibilitat no es pot canviar després de publicar una publicació.",
|
||||||
|
"visibility_modal.helper.privacy_private_self_quote": "Les autocites de publicacions privades no es poden fer públiques.",
|
||||||
"visibility_modal.helper.private_quoting": "No es poden citar publicacions fetes a Mastodon només per a seguidors.",
|
"visibility_modal.helper.private_quoting": "No es poden citar publicacions fetes a Mastodon només per a seguidors.",
|
||||||
"visibility_modal.helper.unlisted_quoting": "Quan la gent et citi les seves publicacions estaran amagades de les línies de temps de tendències.",
|
"visibility_modal.helper.unlisted_quoting": "Quan la gent us citi, les seves publicacions quedaran amagades de les línies de temps de tendències.",
|
||||||
"visibility_modal.instructions": "Controleu qui pot interactuar amb aquesta publicació. També podeu aplicar la configuració a totes les publicacions futures navegant a <link>Preferències > Valors per defecte de publicació</link>.",
|
"visibility_modal.instructions": "Controleu qui pot interactuar amb aquesta publicació. També podeu aplicar la configuració a totes les publicacions futures navegant a <link>Preferències > Valors per defecte de publicació</link>.",
|
||||||
"visibility_modal.privacy_label": "Visibilitat",
|
"visibility_modal.privacy_label": "Visibilitat",
|
||||||
"visibility_modal.quote_followers": "Només seguidors",
|
"visibility_modal.quote_followers": "Només seguidors",
|
||||||
|
|||||||
@@ -110,7 +110,7 @@
|
|||||||
"alt_text_modal.cancel": "Abbrechen",
|
"alt_text_modal.cancel": "Abbrechen",
|
||||||
"alt_text_modal.change_thumbnail": "Vorschaubild ändern",
|
"alt_text_modal.change_thumbnail": "Vorschaubild ändern",
|
||||||
"alt_text_modal.describe_for_people_with_hearing_impairments": "Beschreibe den Inhalt für Menschen mit Schwerhörigkeit …",
|
"alt_text_modal.describe_for_people_with_hearing_impairments": "Beschreibe den Inhalt für Menschen mit Schwerhörigkeit …",
|
||||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Beschreibe den Inhalt für Menschen mit Sehschwäche …",
|
"alt_text_modal.describe_for_people_with_visual_impairments": "Beschreibe den Inhalt für Menschen, die blind oder sehbehindert sind …",
|
||||||
"alt_text_modal.done": "Fertig",
|
"alt_text_modal.done": "Fertig",
|
||||||
"announcement.announcement": "Ankündigung",
|
"announcement.announcement": "Ankündigung",
|
||||||
"annual_report.summary.archetype.booster": "Trendjäger*in",
|
"annual_report.summary.archetype.booster": "Trendjäger*in",
|
||||||
@@ -245,7 +245,7 @@
|
|||||||
"confirmations.logout.message": "Möchtest du dich wirklich abmelden?",
|
"confirmations.logout.message": "Möchtest du dich wirklich abmelden?",
|
||||||
"confirmations.logout.title": "Abmelden?",
|
"confirmations.logout.title": "Abmelden?",
|
||||||
"confirmations.missing_alt_text.confirm": "Bildbeschreibung hinzufügen",
|
"confirmations.missing_alt_text.confirm": "Bildbeschreibung hinzufügen",
|
||||||
"confirmations.missing_alt_text.message": "Dein Beitrag enthält Medien ohne Bildbeschreibung. Mit Alt-Texten erreichst du auch Menschen mit einer Sehschwäche.",
|
"confirmations.missing_alt_text.message": "Dein Beitrag enthält Medien ohne Bildbeschreibung. Mit ALT-Texten erreichst Du auch Menschen, die blind oder sehbehindert sind.",
|
||||||
"confirmations.missing_alt_text.secondary": "Trotzdem veröffentlichen",
|
"confirmations.missing_alt_text.secondary": "Trotzdem veröffentlichen",
|
||||||
"confirmations.missing_alt_text.title": "Bildbeschreibung hinzufügen?",
|
"confirmations.missing_alt_text.title": "Bildbeschreibung hinzufügen?",
|
||||||
"confirmations.mute.confirm": "Stummschalten",
|
"confirmations.mute.confirm": "Stummschalten",
|
||||||
@@ -470,7 +470,7 @@
|
|||||||
"ignore_notifications_modal.not_following_title": "Benachrichtigungen von Profilen ignorieren, denen du nicht folgst?",
|
"ignore_notifications_modal.not_following_title": "Benachrichtigungen von Profilen ignorieren, denen du nicht folgst?",
|
||||||
"ignore_notifications_modal.private_mentions_title": "Benachrichtigungen von unerwünschten privaten Erwähnungen ignorieren?",
|
"ignore_notifications_modal.private_mentions_title": "Benachrichtigungen von unerwünschten privaten Erwähnungen ignorieren?",
|
||||||
"info_button.label": "Hilfe",
|
"info_button.label": "Hilfe",
|
||||||
"info_button.what_is_alt_text": "<h1>Was ist Alt-Text?</h1> <p>Alt-Text bietet Bildbeschreibungen für Personen mit einer Sehschwäche, einer schlechten Internetverbindung und für alle, die zusätzlichen Kontext möchten.</p> <p>Du kannst die Zugänglichkeit und die Verständlichkeit für alle verbessern, indem du eine klare, genaue und objektive Bildbeschreibung hinzufügst.</p> <ul> <li>Erfasse wichtige Elemente</li> <li>Fasse Text in Bildern zusammen</li> <li>Verwende einen korrekten Satzbau</li> <li>Vermeide unwichtige Informationen</li> <li>Konzentriere dich bei komplexen Darstellungen (z. B. Diagramme oder Karten) auf Trends und wichtige Erkenntnisse</li> </ul>",
|
"info_button.what_is_alt_text": "<h1>Was ist Alt-Text?</h1> <p>Der Alt-Text bietet Bildbeschreibungen für blinde und sehbehinderte Menschen, aber auch für alle mit einer schlechten Internetverbindung und wer einen zusätzlichen Kontext möchten.</p> <p>Du kannst die Barrierefreiheit und Verständlichkeit für alle verbessern, indem du eine klare, genaue und objektive Bildbeschreibung erstellst.</p> <ul> <li>Erfasse wichtige Elemente</li> <li>Fasse Texte bildlich zusammen</li> <li>Verwende einen korrekten Satzbau</li> <li>Vermeide unwichtige und überflüssige Informationen</li> <li>Konzentriere dich bei komplexen Darstellungen (z. B. bei Diagrammen oder Karten) auf Veränderungen und Schlüsselwörter</li> </ul>",
|
||||||
"interaction_modal.action": "Melde dich auf deinem Mastodon-Server an, damit du mit dem Beitrag von {name} interagieren kannst.",
|
"interaction_modal.action": "Melde dich auf deinem Mastodon-Server an, damit du mit dem Beitrag von {name} interagieren kannst.",
|
||||||
"interaction_modal.go": "Los",
|
"interaction_modal.go": "Los",
|
||||||
"interaction_modal.no_account_yet": "Du hast noch kein Konto?",
|
"interaction_modal.no_account_yet": "Du hast noch kein Konto?",
|
||||||
|
|||||||
@@ -1029,7 +1029,7 @@
|
|||||||
"visibility_modal.helper.unlisted_quoting": "Cuando otras cuentas te citen, sus publicaciones también se ocultarán de las líneas temporales de tendencias.",
|
"visibility_modal.helper.unlisted_quoting": "Cuando otras cuentas te citen, sus publicaciones también se ocultarán de las líneas temporales de tendencias.",
|
||||||
"visibility_modal.instructions": "Controlá quién puede interactuar con este mensaje. También podés aplicar los ajustes para todos los mensajes futuros accediendo a <link>«Configuración» > «Configuración predeterminada de mensajes»</link>.",
|
"visibility_modal.instructions": "Controlá quién puede interactuar con este mensaje. También podés aplicar los ajustes para todos los mensajes futuros accediendo a <link>«Configuración» > «Configuración predeterminada de mensajes»</link>.",
|
||||||
"visibility_modal.privacy_label": "Visibilidad",
|
"visibility_modal.privacy_label": "Visibilidad",
|
||||||
"visibility_modal.quote_followers": "Solo para seguidores",
|
"visibility_modal.quote_followers": "Solo seguidores",
|
||||||
"visibility_modal.quote_label": "Quién puede citar",
|
"visibility_modal.quote_label": "Quién puede citar",
|
||||||
"visibility_modal.quote_nobody": "Solo yo",
|
"visibility_modal.quote_nobody": "Solo yo",
|
||||||
"visibility_modal.quote_public": "Cualquier cuenta",
|
"visibility_modal.quote_public": "Cualquier cuenta",
|
||||||
|
|||||||
@@ -903,6 +903,7 @@
|
|||||||
"status.edited_x_times": "Curtha in eagar {count, plural, one {{count} uair amháin} two {{count} uair} few {{count} uair} many {{count} uair} other {{count} uair}}",
|
"status.edited_x_times": "Curtha in eagar {count, plural, one {{count} uair amháin} two {{count} uair} few {{count} uair} many {{count} uair} other {{count} uair}}",
|
||||||
"status.embed": "Faigh cód leabú",
|
"status.embed": "Faigh cód leabú",
|
||||||
"status.favourite": "Is fearr leat",
|
"status.favourite": "Is fearr leat",
|
||||||
|
"status.favourites_count": "{count, plural,\n one {{counter} cheanán}\n two {{counter} cheanáin}\n few {{counter} ceanáin}\n many {{counter} ceanán}\n other {{counter} ceanáin}\n}",
|
||||||
"status.filter": "Déan scagadh ar an bpostáil seo",
|
"status.filter": "Déan scagadh ar an bpostáil seo",
|
||||||
"status.history.created": "Chruthaigh {name} {date}",
|
"status.history.created": "Chruthaigh {name} {date}",
|
||||||
"status.history.edited": "Curtha in eagar ag {name} in {date}",
|
"status.history.edited": "Curtha in eagar ag {name} in {date}",
|
||||||
@@ -937,12 +938,14 @@
|
|||||||
"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.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",
|
||||||
"status.reblog_private": "Roinn arís le do leanúna",
|
"status.reblog_private": "Roinn arís le do leanúna",
|
||||||
"status.reblogged_by": "Mhol {name}",
|
"status.reblogged_by": "Mhol {name}",
|
||||||
"status.reblogs.empty": "Níor mhol éinne an phostáil seo fós. Nuair a mholfaidh duine éigin í, taispeánfar anseo é sin.",
|
"status.reblogs.empty": "Níor mhol éinne an phostáil seo fós. Nuair a mholfaidh duine éigin í, taispeánfar anseo é sin.",
|
||||||
|
"status.reblogs_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.redraft": "Scrios ⁊ athdhréachtaigh",
|
"status.redraft": "Scrios ⁊ athdhréachtaigh",
|
||||||
"status.remove_bookmark": "Bain leabharmharc",
|
"status.remove_bookmark": "Bain leabharmharc",
|
||||||
"status.remove_favourite": "Bain ó cheanáin",
|
"status.remove_favourite": "Bain ó cheanáin",
|
||||||
|
|||||||
@@ -903,6 +903,7 @@
|
|||||||
"status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}",
|
"status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}",
|
||||||
"status.embed": "O código a incluír",
|
"status.embed": "O código a incluír",
|
||||||
"status.favourite": "Favorecer",
|
"status.favourite": "Favorecer",
|
||||||
|
"status.favourites_count": "{count, plural, one {{counter} favorecemento} other {{counter} favorecementos}}",
|
||||||
"status.filter": "Filtrar esta publicación",
|
"status.filter": "Filtrar esta publicación",
|
||||||
"status.history.created": "{name} creouno o {date}",
|
"status.history.created": "{name} creouno o {date}",
|
||||||
"status.history.edited": "{name} editouno o {date}",
|
"status.history.edited": "{name} editouno o {date}",
|
||||||
@@ -937,12 +938,14 @@
|
|||||||
"status.quotes.empty": "Aínda ninguén citou esta publicación. Cando alguén o faga aparecerá aquí.",
|
"status.quotes.empty": "Aínda ninguén citou esta publicación. Cando alguén o faga aparecerá aquí.",
|
||||||
"status.quotes.local_other_disclaimer": "Non se mostrarán as citas rexeitadas pola autora.",
|
"status.quotes.local_other_disclaimer": "Non se mostrarán as citas rexeitadas pola autora.",
|
||||||
"status.quotes.remote_other_disclaimer": "Só se garante que se mostren as citas do dominio {domain}. Non se mostrarán as citas rexeitadas pola persoa autora.",
|
"status.quotes.remote_other_disclaimer": "Só se garante que se mostren as citas do dominio {domain}. Non se mostrarán as citas rexeitadas pola persoa autora.",
|
||||||
|
"status.quotes_count": "{count, plural, one {{counter} cita} other {{counter} citas}}",
|
||||||
"status.read_more": "Ler máis",
|
"status.read_more": "Ler máis",
|
||||||
"status.reblog": "Promover",
|
"status.reblog": "Promover",
|
||||||
"status.reblog_or_quote": "Promover ou citar",
|
"status.reblog_or_quote": "Promover ou citar",
|
||||||
"status.reblog_private": "Volver a compartir coas túas seguidoras",
|
"status.reblog_private": "Volver a compartir coas túas seguidoras",
|
||||||
"status.reblogged_by": "{name} promoveu",
|
"status.reblogged_by": "{name} promoveu",
|
||||||
"status.reblogs.empty": "Aínda ninguén promoveu esta publicación. Cando alguén o faga, amosarase aquí.",
|
"status.reblogs.empty": "Aínda ninguén promoveu esta publicación. Cando alguén o faga, amosarase aquí.",
|
||||||
|
"status.reblogs_count": "{count, plural, one {{counter} promoción} other {{counter} promocións}}",
|
||||||
"status.redraft": "Eliminar e reescribir",
|
"status.redraft": "Eliminar e reescribir",
|
||||||
"status.remove_bookmark": "Eliminar marcador",
|
"status.remove_bookmark": "Eliminar marcador",
|
||||||
"status.remove_favourite": "Retirar das favoritas",
|
"status.remove_favourite": "Retirar das favoritas",
|
||||||
|
|||||||
@@ -880,6 +880,7 @@
|
|||||||
"status.quote_error.filtered": "あなたのフィルター設定によって非表示になっています",
|
"status.quote_error.filtered": "あなたのフィルター設定によって非表示になっています",
|
||||||
"status.quote_error.pending_approval": "承認待ちの投稿",
|
"status.quote_error.pending_approval": "承認待ちの投稿",
|
||||||
"status.quote_noun": "引用",
|
"status.quote_noun": "引用",
|
||||||
|
"status.quote_policy_change": "引用できるユーザーの変更",
|
||||||
"status.quote_post_author": "{name} の投稿を引用",
|
"status.quote_post_author": "{name} の投稿を引用",
|
||||||
"status.quote_private": "非公開の投稿は引用できません",
|
"status.quote_private": "非公開の投稿は引用できません",
|
||||||
"status.quotes.local_other_disclaimer": "投稿者が拒否した引用は表示されません。",
|
"status.quotes.local_other_disclaimer": "投稿者が拒否した引用は表示されません。",
|
||||||
|
|||||||
@@ -252,6 +252,7 @@
|
|||||||
"confirmations.private_quote_notify.cancel": "편집으로 돌아가기",
|
"confirmations.private_quote_notify.cancel": "편집으로 돌아가기",
|
||||||
"confirmations.private_quote_notify.confirm": "게시",
|
"confirmations.private_quote_notify.confirm": "게시",
|
||||||
"confirmations.private_quote_notify.do_not_show_again": "이 메시지를 다시 표시하지 않음",
|
"confirmations.private_quote_notify.do_not_show_again": "이 메시지를 다시 표시하지 않음",
|
||||||
|
"confirmations.private_quote_notify.message": "인용하려는 사람과 멘션된 사람들은 나를 팔로우하지 않더라도 게시물에 대한 알림을 받으며 내용을 볼 수 있습니다.",
|
||||||
"confirmations.quiet_post_quote_info.dismiss": "다시 보지 않기",
|
"confirmations.quiet_post_quote_info.dismiss": "다시 보지 않기",
|
||||||
"confirmations.quiet_post_quote_info.got_it": "알겠습니다",
|
"confirmations.quiet_post_quote_info.got_it": "알겠습니다",
|
||||||
"confirmations.quiet_post_quote_info.message": "조용한 공개 게시물을 인용하면 그 게시물은 유행 타임라인에서 나타나지 않을 것입니다.",
|
"confirmations.quiet_post_quote_info.message": "조용한 공개 게시물을 인용하면 그 게시물은 유행 타임라인에서 나타나지 않을 것입니다.",
|
||||||
|
|||||||
@@ -639,7 +639,7 @@
|
|||||||
"privacy.private.long": "Tikai Tavi sekotāji",
|
"privacy.private.long": "Tikai Tavi sekotāji",
|
||||||
"privacy.private.short": "Sekotāji",
|
"privacy.private.short": "Sekotāji",
|
||||||
"privacy.public.long": "Jebkurš Mastodon un ārpus tā",
|
"privacy.public.long": "Jebkurš Mastodon un ārpus tā",
|
||||||
"privacy.public.short": "Redzams visiem",
|
"privacy.public.short": "Publisks",
|
||||||
"privacy.quote.anyone": "{visibility}, jebkurš var citēt",
|
"privacy.quote.anyone": "{visibility}, jebkurš var citēt",
|
||||||
"privacy.quote.disabled": "{visibility}, aizliegta citēšana",
|
"privacy.quote.disabled": "{visibility}, aizliegta citēšana",
|
||||||
"privacy.quote.limited": "{visibility}, ierobežota citēšana",
|
"privacy.quote.limited": "{visibility}, ierobežota citēšana",
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"about.default_locale": "Padrão",
|
"about.default_locale": "Padrão",
|
||||||
"about.disclaimer": "Mastodon é um software de código aberto e livre, e uma marca registrada de Mastodon gGmbH.",
|
"about.disclaimer": "Mastodon é um software de código aberto e livre, e uma marca registrada de Mastodon gGmbH.",
|
||||||
"about.domain_blocks.no_reason_available": "Razão não disponível",
|
"about.domain_blocks.no_reason_available": "Razão não disponível",
|
||||||
"about.domain_blocks.preamble": "O Mastodon geralmente permite que você veja o conteúdo e interaja com usuários de qualquer outro servidor no fediverso. Estas são as exceções deste servidor em específico.",
|
"about.domain_blocks.preamble": "O \"Mastodon\" geralmente permite que você veja o conteúdo e interaja com usuários de qualquer outro servidor no \"fediverso\". Estas são as exceções deste servidor em específico.",
|
||||||
"about.domain_blocks.silenced.explanation": "Você geralmente não verá perfis e conteúdo deste servidor, a menos que você o procure explicitamente ou opte por seguir.",
|
"about.domain_blocks.silenced.explanation": "Você geralmente não verá perfis e conteúdo deste servidor, a menos que você o procure explicitamente ou opte por seguir.",
|
||||||
"about.domain_blocks.silenced.title": "Limitado",
|
"about.domain_blocks.silenced.title": "Limitado",
|
||||||
"about.domain_blocks.suspended.explanation": "Nenhum dado desse servidor será processado, armazenado ou trocado, impossibilitando qualquer interação ou comunicação com os usuários deste servidor.",
|
"about.domain_blocks.suspended.explanation": "Nenhum dado desse servidor será processado, armazenado ou trocado, impossibilitando qualquer interação ou comunicação com os usuários deste servidor.",
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
"account.familiar_followers_two": "Seguido por {name1} e {name2}",
|
"account.familiar_followers_two": "Seguido por {name1} e {name2}",
|
||||||
"account.featured": "Em destaque",
|
"account.featured": "Em destaque",
|
||||||
"account.featured.accounts": "Perfis",
|
"account.featured.accounts": "Perfis",
|
||||||
"account.featured.hashtags": "Hashtags",
|
"account.featured.hashtags": "\"Hashtags\"",
|
||||||
"account.featured_tags.last_status_at": "Última publicação em {date}",
|
"account.featured_tags.last_status_at": "Última publicação em {date}",
|
||||||
"account.featured_tags.last_status_never": "Sem publicações",
|
"account.featured_tags.last_status_never": "Sem publicações",
|
||||||
"account.follow": "Seguir",
|
"account.follow": "Seguir",
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
"account.followers": "Seguidores",
|
"account.followers": "Seguidores",
|
||||||
"account.followers.empty": "Nada aqui.",
|
"account.followers.empty": "Nada aqui.",
|
||||||
"account.followers_counter": "{count, plural, one {{counter} seguidor} other {{counter} seguidores}}",
|
"account.followers_counter": "{count, plural, one {{counter} seguidor} other {{counter} seguidores}}",
|
||||||
"account.followers_you_know_counter": "{counter} que você sabe",
|
"account.followers_you_know_counter": "{counter} que você conhece",
|
||||||
"account.following": "Seguindo",
|
"account.following": "Seguindo",
|
||||||
"account.following_counter": "{count, plural, one {{counter} seguindo} other {{counter} seguindo}}",
|
"account.following_counter": "{count, plural, one {{counter} seguindo} other {{counter} seguindo}}",
|
||||||
"account.follows.empty": "Nada aqui.",
|
"account.follows.empty": "Nada aqui.",
|
||||||
@@ -903,6 +903,7 @@
|
|||||||
"status.edited_x_times": "Editado {count, plural, one {{count} hora} other {{count} vezes}}",
|
"status.edited_x_times": "Editado {count, plural, one {{count} hora} other {{count} vezes}}",
|
||||||
"status.embed": "Obter código de incorporação",
|
"status.embed": "Obter código de incorporação",
|
||||||
"status.favourite": "Favorita",
|
"status.favourite": "Favorita",
|
||||||
|
"status.favourites_count": "{count, plural, one {{counter} favorito} other {{counter} favoritos}}",
|
||||||
"status.filter": "Filtrar esta publicação",
|
"status.filter": "Filtrar esta publicação",
|
||||||
"status.history.created": "{name} criou {date}",
|
"status.history.created": "{name} criou {date}",
|
||||||
"status.history.edited": "{name} editou {date}",
|
"status.history.edited": "{name} editou {date}",
|
||||||
@@ -937,12 +938,14 @@
|
|||||||
"status.quotes.empty": "Ninguém citou essa publicação até agora. Quando alguém citar aparecerá aqui.",
|
"status.quotes.empty": "Ninguém citou essa publicação até agora. Quando alguém citar aparecerá aqui.",
|
||||||
"status.quotes.local_other_disclaimer": "Citações rejeitadas pelo autor não serão exibidas.",
|
"status.quotes.local_other_disclaimer": "Citações rejeitadas pelo autor não serão exibidas.",
|
||||||
"status.quotes.remote_other_disclaimer": "Apenas citações do {domain} têm a garantia de serem exibidas aqui. Citações rejeitadas pelo autor não serão exibidas.",
|
"status.quotes.remote_other_disclaimer": "Apenas citações do {domain} têm a garantia de serem exibidas aqui. Citações rejeitadas pelo autor não serão exibidas.",
|
||||||
|
"status.quotes_count": "{count, plural, one {{counter} mencionar} other {{counter} menções}}",
|
||||||
"status.read_more": "Ler mais",
|
"status.read_more": "Ler mais",
|
||||||
"status.reblog": "Dar boost",
|
"status.reblog": "Dar boost",
|
||||||
"status.reblog_or_quote": "Acelerar ou citar",
|
"status.reblog_or_quote": "Acelerar ou citar",
|
||||||
"status.reblog_private": "Compartilhar novamente com seus seguidores",
|
"status.reblog_private": "Compartilhar novamente com seus seguidores",
|
||||||
"status.reblogged_by": "{name} deu boost",
|
"status.reblogged_by": "{name} deu boost",
|
||||||
"status.reblogs.empty": "Nada aqui. Quando alguém der boost, o usuário aparecerá aqui.",
|
"status.reblogs.empty": "Nada aqui. Quando alguém der boost, o usuário aparecerá aqui.",
|
||||||
|
"status.reblogs_count": "{count, plural, one {{counter} impulsionar} other {{counter} impulsionados}}",
|
||||||
"status.redraft": "Excluir e rascunhar",
|
"status.redraft": "Excluir e rascunhar",
|
||||||
"status.remove_bookmark": "Remover do Salvos",
|
"status.remove_bookmark": "Remover do Salvos",
|
||||||
"status.remove_favourite": "Remover dos favoritos",
|
"status.remove_favourite": "Remover dos favoritos",
|
||||||
|
|||||||
@@ -131,11 +131,12 @@ class User < ApplicationRecord
|
|||||||
|
|
||||||
delegate :can?, to: :role
|
delegate :can?, to: :role
|
||||||
|
|
||||||
attr_reader :invite_code, :date_of_birth
|
attr_reader :invite_code
|
||||||
attr_writer :current_account
|
attr_writer :current_account
|
||||||
|
|
||||||
attribute :external, :boolean, default: false
|
attribute :external, :boolean, default: false
|
||||||
attribute :bypass_registration_checks, :boolean, default: false
|
attribute :bypass_registration_checks, :boolean, default: false
|
||||||
|
attribute :date_of_birth, :date
|
||||||
|
|
||||||
def self.those_who_can(*any_of_privileges)
|
def self.those_who_can(*any_of_privileges)
|
||||||
matching_role_ids = UserRole.that_can(*any_of_privileges).map(&:id)
|
matching_role_ids = UserRole.that_can(*any_of_privileges).map(&:id)
|
||||||
@@ -151,17 +152,6 @@ class User < ApplicationRecord
|
|||||||
Rails.env.local?
|
Rails.env.local?
|
||||||
end
|
end
|
||||||
|
|
||||||
def date_of_birth=(hash_or_string)
|
|
||||||
@date_of_birth = begin
|
|
||||||
if hash_or_string.is_a?(Hash)
|
|
||||||
day, month, year = hash_or_string.values_at(1, 2, 3)
|
|
||||||
"#{day}.#{month}.#{year}"
|
|
||||||
else
|
|
||||||
hash_or_string
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def role
|
def role
|
||||||
if role_id.nil?
|
if role_id.nil?
|
||||||
UserRole.everyone
|
UserRole.everyone
|
||||||
|
|||||||
@@ -819,6 +819,8 @@ fr-CA:
|
|||||||
preamble: Fournissez des informations détaillées sur le fonctionnement, la modération et le financement du serveur.
|
preamble: Fournissez des informations détaillées sur le fonctionnement, la modération et le financement du serveur.
|
||||||
rules_hint: Il y a un espace dédié pour les règles auxquelles vos utilisateurs sont invités à adhérer.
|
rules_hint: Il y a un espace dédié pour les règles auxquelles vos utilisateurs sont invités à adhérer.
|
||||||
title: À propos
|
title: À propos
|
||||||
|
allow_referrer_origin:
|
||||||
|
title: Autoriser les sites externes à voir votre serveur Mastodon comme une source de trafic
|
||||||
appearance:
|
appearance:
|
||||||
preamble: Personnaliser l'interface web de Mastodon.
|
preamble: Personnaliser l'interface web de Mastodon.
|
||||||
title: Apparence
|
title: Apparence
|
||||||
@@ -857,7 +859,7 @@ fr-CA:
|
|||||||
local_feed: Fil local
|
local_feed: Fil local
|
||||||
trends: Tendances
|
trends: Tendances
|
||||||
registrations:
|
registrations:
|
||||||
moderation_recommandation: Veuillez vous assurer d'avoir une équipe de modération adéquate et réactive avant d'ouvrir les inscriptions à tout le monde!
|
moderation_recommandation: Veuillez vous assurer d'avoir une équipe de modération adéquate et réactive avant d'ouvrir les inscriptions à tout le monde !
|
||||||
preamble: Affecte qui peut créer un compte sur votre serveur.
|
preamble: Affecte qui peut créer un compte sur votre serveur.
|
||||||
title: Inscriptions
|
title: Inscriptions
|
||||||
registrations_mode:
|
registrations_mode:
|
||||||
|
|||||||
@@ -819,6 +819,8 @@ fr:
|
|||||||
preamble: Fournissez des informations détaillées sur le fonctionnement, la modération et le financement du serveur.
|
preamble: Fournissez des informations détaillées sur le fonctionnement, la modération et le financement du serveur.
|
||||||
rules_hint: Il y a un espace dédié pour les règles auxquelles vos utilisateurs sont invités à adhérer.
|
rules_hint: Il y a un espace dédié pour les règles auxquelles vos utilisateurs sont invités à adhérer.
|
||||||
title: À propos
|
title: À propos
|
||||||
|
allow_referrer_origin:
|
||||||
|
title: Autoriser les sites externes à voir votre serveur Mastodon comme une source de trafic
|
||||||
appearance:
|
appearance:
|
||||||
preamble: Personnaliser l'interface web de Mastodon.
|
preamble: Personnaliser l'interface web de Mastodon.
|
||||||
title: Apparence
|
title: Apparence
|
||||||
@@ -857,7 +859,7 @@ fr:
|
|||||||
local_feed: Fil local
|
local_feed: Fil local
|
||||||
trends: Tendances
|
trends: Tendances
|
||||||
registrations:
|
registrations:
|
||||||
moderation_recommandation: Veuillez vous assurer d'avoir une équipe de modération adéquate et réactive avant d'ouvrir les inscriptions à tout le monde!
|
moderation_recommandation: Veuillez vous assurer d'avoir une équipe de modération adéquate et réactive avant d'ouvrir les inscriptions à tout le monde !
|
||||||
preamble: Affecte qui peut créer un compte sur votre serveur.
|
preamble: Affecte qui peut créer un compte sur votre serveur.
|
||||||
title: Inscriptions
|
title: Inscriptions
|
||||||
registrations_mode:
|
registrations_mode:
|
||||||
|
|||||||
@@ -222,7 +222,7 @@ ru:
|
|||||||
enable_user: Разморозка пользователей
|
enable_user: Разморозка пользователей
|
||||||
memorialize_account: Присвоение пользователям статуса «мемориала»
|
memorialize_account: Присвоение пользователям статуса «мемориала»
|
||||||
promote_user: Повышение пользователей
|
promote_user: Повышение пользователей
|
||||||
publish_terms_of_service: Опубликование пользовательского соглашения
|
publish_terms_of_service: Публикация пользовательского соглашения
|
||||||
reject_appeal: Отклонение обжалований
|
reject_appeal: Отклонение обжалований
|
||||||
reject_user: Отклонение регистраций
|
reject_user: Отклонение регистраций
|
||||||
remove_avatar_user: Удаление аватаров
|
remove_avatar_user: Удаление аватаров
|
||||||
@@ -1016,9 +1016,9 @@ ru:
|
|||||||
draft: Черновик
|
draft: Черновик
|
||||||
generate: Использовать шаблон
|
generate: Использовать шаблон
|
||||||
generates:
|
generates:
|
||||||
action: Генерировать
|
action: Сгенерировать
|
||||||
chance_to_review_html: "<strong>Сгенерированное пользовательское соглашение не будет опубликовано автоматически.</strong> У вас будет возможность просмотреть результат. Введите все необходимые сведения, чтобы продолжить."
|
chance_to_review_html: "<strong>Сгенерированное пользовательское соглашение не будет опубликовано автоматически.</strong> У вас будет возможность просмотреть результат. Введите все необходимые сведения, чтобы продолжить."
|
||||||
explanation_html: Шаблон пользовательского соглашения приводится исключительно в ознакомительных целях, и не может рассматриваться как юридическая консультация по тому или иному вопросу. Обратитесь к своему юрисконсульту насчёт вашей ситуации и имеющихся правовых вопросов.
|
explanation_html: Шаблон пользовательского соглашения приводится исключительно в ознакомительных целях и не может рассматриваться как юридическая консультация по тому или иному вопросу. Обратитесь к своему юрисконсульту насчёт вашей ситуации и имеющихся правовых вопросов.
|
||||||
title: Создание пользовательского соглашения
|
title: Создание пользовательского соглашения
|
||||||
going_live_on_html: Вступило в силу с %{date}
|
going_live_on_html: Вступило в силу с %{date}
|
||||||
history: История
|
history: История
|
||||||
@@ -1028,8 +1028,8 @@ ru:
|
|||||||
notified_on_html: 'Дата уведомления пользователей: %{date}'
|
notified_on_html: 'Дата уведомления пользователей: %{date}'
|
||||||
notify_users: Уведомить пользователей
|
notify_users: Уведомить пользователей
|
||||||
preview:
|
preview:
|
||||||
explanation_html: 'Сообщение будет отравлено <strong>%{display_count} пользователям</strong>, которые зарегистрировались до %{date}. В теле письма будет указан следующий текст:'
|
explanation_html: 'Сообщение будет отравлено <strong>%{display_count} пользователям</strong>, которые зарегистрировались до %{date}. Письмо будет содержать следующий текст:'
|
||||||
send_preview: Отправить предпросмотр на %{email}
|
send_preview: Отправить тестовое уведомление на %{email}
|
||||||
send_to_all:
|
send_to_all:
|
||||||
few: Отправить %{display_count} сообщения
|
few: Отправить %{display_count} сообщения
|
||||||
many: Отправить %{display_count} сообщений
|
many: Отправить %{display_count} сообщений
|
||||||
@@ -2031,7 +2031,7 @@ ru:
|
|||||||
terms_of_service_interstitial:
|
terms_of_service_interstitial:
|
||||||
past_preamble_html: Мы изменили наше пользовательское соглашение с момента вашего последнего посещения. Мы рекомендуем вам ознакомиться с обновленным соглашением.
|
past_preamble_html: Мы изменили наше пользовательское соглашение с момента вашего последнего посещения. Мы рекомендуем вам ознакомиться с обновленным соглашением.
|
||||||
review_link: Посмотреть пользовательское соглашение
|
review_link: Посмотреть пользовательское соглашение
|
||||||
title: Изменяется пользовательское соглашение %{domain}
|
title: Изменяется пользовательское соглашение на сервере %{domain}
|
||||||
themes:
|
themes:
|
||||||
contrast: Mastodon (высококонтрастная)
|
contrast: Mastodon (высококонтрастная)
|
||||||
default: Mastodon (тёмная)
|
default: Mastodon (тёмная)
|
||||||
@@ -2098,12 +2098,12 @@ ru:
|
|||||||
title: Выполнен вход
|
title: Выполнен вход
|
||||||
terms_of_service_changed:
|
terms_of_service_changed:
|
||||||
agreement: Продолжая использовать %{domain}, вы соглашаетесь с этими условиями. Если вы не согласны с новыми условиями, вы в любой момент можете удалить вашу учётную запись на %{domain}.
|
agreement: Продолжая использовать %{domain}, вы соглашаетесь с этими условиями. Если вы не согласны с новыми условиями, вы в любой момент можете удалить вашу учётную запись на %{domain}.
|
||||||
changelog: 'Вот что обновление условий будет значит для вас в общих чертах:'
|
changelog: 'Вот что обновление условий будет значить для вас в общих чертах:'
|
||||||
description: 'Вы получили это сообщение, потому что мы внесли некоторые изменения в пользовательское соглашение %{domain}. Эти изменения вступят в силу %{date}. Рекомендуем вам ознакомиться с обновлёнными условиями по ссылке:'
|
description: 'Вы получили это сообщение, потому что мы внесли некоторые изменения в пользовательское соглашение сервера %{domain}. Эти изменения вступят в силу %{date}. Рекомендуем вам ознакомиться с обновлёнными условиями по ссылке:'
|
||||||
description_html: Вы получили это сообщение, потому что мы внесли некоторые изменения в пользовательское соглашение %{domain}. Эти изменения вступят в силу <strong>%{date}</strong>. Рекомендуем вам ознакомиться с <a href="%{path}" target="_blank">обновлёнными условиями</a>.
|
description_html: Вы получили это сообщение, потому что мы внесли некоторые изменения в пользовательское соглашение сервера %{domain}. Эти изменения вступят в силу <strong>%{date}</strong>. Рекомендуем вам ознакомиться с <a href="%{path}" target="_blank">обновлёнными условиями</a>.
|
||||||
sign_off: Ваш %{domain}
|
sign_off: Ваш %{domain}
|
||||||
subject: Обновления наших условий использования
|
subject: Мы обновляем наше пользовательское соглашение
|
||||||
subtitle: На %{domain} изменилось пользовательское соглашение
|
subtitle: Изменяется пользовательское соглашение на сервере %{domain}
|
||||||
title: Важное обновление
|
title: Важное обновление
|
||||||
warning:
|
warning:
|
||||||
appeal: Обжаловать
|
appeal: Обжаловать
|
||||||
|
|||||||
@@ -347,9 +347,7 @@ ar:
|
|||||||
jurisdiction: الاختصاص القانوني
|
jurisdiction: الاختصاص القانوني
|
||||||
min_age: الحد الإدنى للعمر
|
min_age: الحد الإدنى للعمر
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: يوم
|
|
||||||
date_of_birth_2i: شهر
|
date_of_birth_2i: شهر
|
||||||
date_of_birth_3i: سنة
|
|
||||||
role: الدور
|
role: الدور
|
||||||
time_zone: النطاق الزمني
|
time_zone: النطاق الزمني
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -374,9 +374,7 @@ be:
|
|||||||
jurisdiction: Юрысдыкцыя
|
jurisdiction: Юрысдыкцыя
|
||||||
min_age: Мінімальны ўзрост
|
min_age: Мінімальны ўзрост
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Дзень
|
|
||||||
date_of_birth_2i: Месяц
|
date_of_birth_2i: Месяц
|
||||||
date_of_birth_3i: Год
|
|
||||||
role: Роля
|
role: Роля
|
||||||
time_zone: Часавы пояс
|
time_zone: Часавы пояс
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -354,9 +354,7 @@ bg:
|
|||||||
jurisdiction: Законова юрисдикция
|
jurisdiction: Законова юрисдикция
|
||||||
min_age: Минимална възраст
|
min_age: Минимална възраст
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Ден
|
|
||||||
date_of_birth_2i: Месец
|
date_of_birth_2i: Месец
|
||||||
date_of_birth_3i: Година
|
|
||||||
role: Роля
|
role: Роля
|
||||||
time_zone: Часова зона
|
time_zone: Часова зона
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -109,9 +109,7 @@ br:
|
|||||||
domain: Domani
|
domain: Domani
|
||||||
jurisdiction: Barnadurezh
|
jurisdiction: Barnadurezh
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Devezh
|
|
||||||
date_of_birth_2i: Mizvezh
|
date_of_birth_2i: Mizvezh
|
||||||
date_of_birth_3i: Bloavezh
|
|
||||||
role: Roll
|
role: Roll
|
||||||
time_zone: Gwerzhid eur
|
time_zone: Gwerzhid eur
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -353,9 +353,7 @@ ca:
|
|||||||
jurisdiction: Jurisdicció
|
jurisdiction: Jurisdicció
|
||||||
min_age: Edat mínima
|
min_age: Edat mínima
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Dia
|
|
||||||
date_of_birth_2i: Mes
|
date_of_birth_2i: Mes
|
||||||
date_of_birth_3i: Any
|
|
||||||
role: Rol
|
role: Rol
|
||||||
time_zone: Zona horària
|
time_zone: Zona horària
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -374,9 +374,7 @@ cs:
|
|||||||
jurisdiction: Právní příslušnost
|
jurisdiction: Právní příslušnost
|
||||||
min_age: Věková hranice
|
min_age: Věková hranice
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Den
|
|
||||||
date_of_birth_2i: Měsíc
|
date_of_birth_2i: Měsíc
|
||||||
date_of_birth_3i: Rok
|
|
||||||
role: Role
|
role: Role
|
||||||
time_zone: Časové pásmo
|
time_zone: Časové pásmo
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -376,9 +376,7 @@ cy:
|
|||||||
jurisdiction: Awdurdodaeth gyfreithiol
|
jurisdiction: Awdurdodaeth gyfreithiol
|
||||||
min_age: Isafswm oedran
|
min_age: Isafswm oedran
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Dydd
|
|
||||||
date_of_birth_2i: Mis
|
date_of_birth_2i: Mis
|
||||||
date_of_birth_3i: Blwyddyn
|
|
||||||
role: Rôl
|
role: Rôl
|
||||||
time_zone: Cylchfa amser
|
time_zone: Cylchfa amser
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,7 @@ da:
|
|||||||
jurisdiction: Juridisk jurisdiktion
|
jurisdiction: Juridisk jurisdiktion
|
||||||
min_age: Minimumsalder
|
min_age: Minimumsalder
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Dag
|
|
||||||
date_of_birth_2i: Måned
|
date_of_birth_2i: Måned
|
||||||
date_of_birth_3i: År
|
|
||||||
role: Rolle
|
role: Rolle
|
||||||
time_zone: Tidszone
|
time_zone: Tidszone
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,7 @@ de:
|
|||||||
jurisdiction: Gerichtsstand
|
jurisdiction: Gerichtsstand
|
||||||
min_age: Mindestalter
|
min_age: Mindestalter
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Tag
|
|
||||||
date_of_birth_2i: Monat
|
date_of_birth_2i: Monat
|
||||||
date_of_birth_3i: Jahr
|
|
||||||
role: Rolle
|
role: Rolle
|
||||||
time_zone: Zeitzone
|
time_zone: Zeitzone
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,7 @@ el:
|
|||||||
jurisdiction: Νομική δικαιοδοσία
|
jurisdiction: Νομική δικαιοδοσία
|
||||||
min_age: Ελάχιστη ηλικία
|
min_age: Ελάχιστη ηλικία
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Ημέρα
|
|
||||||
date_of_birth_2i: Μήνας
|
date_of_birth_2i: Μήνας
|
||||||
date_of_birth_3i: Έτος
|
|
||||||
role: Ρόλος
|
role: Ρόλος
|
||||||
time_zone: Ζώνη ώρας
|
time_zone: Ζώνη ώρας
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -346,9 +346,7 @@ en-GB:
|
|||||||
jurisdiction: Legal jurisdiction
|
jurisdiction: Legal jurisdiction
|
||||||
min_age: Minimum age
|
min_age: Minimum age
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Day
|
|
||||||
date_of_birth_2i: Month
|
date_of_birth_2i: Month
|
||||||
date_of_birth_3i: Year
|
|
||||||
role: Role
|
role: Role
|
||||||
time_zone: Time Zone
|
time_zone: Time Zone
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,9 @@ en:
|
|||||||
jurisdiction: Legal jurisdiction
|
jurisdiction: Legal jurisdiction
|
||||||
min_age: Minimum age
|
min_age: Minimum age
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Day
|
date_of_birth_1i: Year
|
||||||
date_of_birth_2i: Month
|
date_of_birth_2i: Month
|
||||||
date_of_birth_3i: Year
|
date_of_birth_3i: Day
|
||||||
role: Role
|
role: Role
|
||||||
time_zone: Time zone
|
time_zone: Time zone
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -353,9 +353,7 @@ eo:
|
|||||||
jurisdiction: Laŭleĝa jurisdikcio
|
jurisdiction: Laŭleĝa jurisdikcio
|
||||||
min_age: Minimuma aĝo
|
min_age: Minimuma aĝo
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Tago
|
|
||||||
date_of_birth_2i: Monato
|
date_of_birth_2i: Monato
|
||||||
date_of_birth_3i: Jaro
|
|
||||||
role: Rolo
|
role: Rolo
|
||||||
time_zone: Horzono
|
time_zone: Horzono
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,7 @@ es-AR:
|
|||||||
jurisdiction: Jurisdicción legal
|
jurisdiction: Jurisdicción legal
|
||||||
min_age: Edad mínima
|
min_age: Edad mínima
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Día
|
|
||||||
date_of_birth_2i: Mes
|
date_of_birth_2i: Mes
|
||||||
date_of_birth_3i: Año
|
|
||||||
role: Rol
|
role: Rol
|
||||||
time_zone: Zona horaria
|
time_zone: Zona horaria
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,7 @@ es-MX:
|
|||||||
jurisdiction: Jurisdicción legal
|
jurisdiction: Jurisdicción legal
|
||||||
min_age: Edad mínima
|
min_age: Edad mínima
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Día
|
|
||||||
date_of_birth_2i: Mes
|
date_of_birth_2i: Mes
|
||||||
date_of_birth_3i: Año
|
|
||||||
role: Rol
|
role: Rol
|
||||||
time_zone: Zona horaria
|
time_zone: Zona horaria
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,7 @@ es:
|
|||||||
jurisdiction: Jurisdicción legal
|
jurisdiction: Jurisdicción legal
|
||||||
min_age: Edad mínima
|
min_age: Edad mínima
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Día
|
|
||||||
date_of_birth_2i: Mes
|
date_of_birth_2i: Mes
|
||||||
date_of_birth_3i: Año
|
|
||||||
role: Rol
|
role: Rol
|
||||||
time_zone: Zona horaria
|
time_zone: Zona horaria
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,7 @@ et:
|
|||||||
jurisdiction: Jurisdiktsioon
|
jurisdiction: Jurisdiktsioon
|
||||||
min_age: Vanuse alampiir
|
min_age: Vanuse alampiir
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Päev
|
|
||||||
date_of_birth_2i: Kuu
|
date_of_birth_2i: Kuu
|
||||||
date_of_birth_3i: Aasta
|
|
||||||
role: Roll
|
role: Roll
|
||||||
time_zone: Ajavöönd
|
time_zone: Ajavöönd
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -325,9 +325,7 @@ eu:
|
|||||||
terms_of_service_generator:
|
terms_of_service_generator:
|
||||||
domain: Domeinua
|
domain: Domeinua
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Eguna
|
|
||||||
date_of_birth_2i: Hilabetea
|
date_of_birth_2i: Hilabetea
|
||||||
date_of_birth_3i: Urtea
|
|
||||||
role: Rola
|
role: Rola
|
||||||
time_zone: Ordu zona
|
time_zone: Ordu zona
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,7 @@ fa:
|
|||||||
jurisdiction: صلاحیت قانونی
|
jurisdiction: صلاحیت قانونی
|
||||||
min_age: کمینهٔ زمان
|
min_age: کمینهٔ زمان
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: روز
|
|
||||||
date_of_birth_2i: ماه
|
date_of_birth_2i: ماه
|
||||||
date_of_birth_3i: سال
|
|
||||||
role: نقش
|
role: نقش
|
||||||
time_zone: منطقهٔ زمانی
|
time_zone: منطقهٔ زمانی
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,7 @@ fi:
|
|||||||
jurisdiction: Lainkäyttöalue
|
jurisdiction: Lainkäyttöalue
|
||||||
min_age: Vähimmäisikä
|
min_age: Vähimmäisikä
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Päivä
|
|
||||||
date_of_birth_2i: Kuukausi
|
date_of_birth_2i: Kuukausi
|
||||||
date_of_birth_3i: Vuosi
|
|
||||||
role: Rooli
|
role: Rooli
|
||||||
time_zone: Aikavyöhyke
|
time_zone: Aikavyöhyke
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,7 @@ fo:
|
|||||||
jurisdiction: Løgdømi
|
jurisdiction: Løgdømi
|
||||||
min_age: Lægsti aldur
|
min_age: Lægsti aldur
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Dagur
|
|
||||||
date_of_birth_2i: Mánaði
|
date_of_birth_2i: Mánaði
|
||||||
date_of_birth_3i: Ár
|
|
||||||
role: Leiklutur
|
role: Leiklutur
|
||||||
time_zone: Tíðarsona
|
time_zone: Tíðarsona
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -152,6 +152,8 @@ fr-CA:
|
|||||||
name: Nom public du rôle, si le rôle est configuré pour être affiché avec un badge
|
name: Nom public du rôle, si le rôle est configuré pour être affiché avec un badge
|
||||||
permissions_as_keys: Les utilisateur·rice·s ayant ce rôle auront accès à …
|
permissions_as_keys: Les utilisateur·rice·s ayant ce rôle auront accès à …
|
||||||
position: Dans certaines situations, un rôle supérieur peut trancher la résolution d'un conflit. Mais certaines opérations ne peuvent être effectuées que sur des rôles ayant une priorité inférieure
|
position: Dans certaines situations, un rôle supérieur peut trancher la résolution d'un conflit. Mais certaines opérations ne peuvent être effectuées que sur des rôles ayant une priorité inférieure
|
||||||
|
username_block:
|
||||||
|
comparison: Veuillez garder à l'esprit le problème de Scunthorpe lors du blocage des correspondances partielles
|
||||||
webhook:
|
webhook:
|
||||||
events: Sélectionnez les événements à envoyer
|
events: Sélectionnez les événements à envoyer
|
||||||
template: Écrivez votre propre bloc JSON avec la possibilité d’utiliser de l’interpolation de variables. Laissez vide pour le bloc JSON par défaut.
|
template: Écrivez votre propre bloc JSON avec la possibilité d’utiliser de l’interpolation de variables. Laissez vide pour le bloc JSON par défaut.
|
||||||
@@ -353,9 +355,7 @@ fr-CA:
|
|||||||
jurisdiction: Juridiction
|
jurisdiction: Juridiction
|
||||||
min_age: Âge minimum
|
min_age: Âge minimum
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Jour
|
|
||||||
date_of_birth_2i: Mois
|
date_of_birth_2i: Mois
|
||||||
date_of_birth_3i: Année
|
|
||||||
role: Rôle
|
role: Rôle
|
||||||
time_zone: Fuseau horaire
|
time_zone: Fuseau horaire
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -152,6 +152,8 @@ fr:
|
|||||||
name: Nom public du rôle, si le rôle est configuré pour être affiché avec un badge
|
name: Nom public du rôle, si le rôle est configuré pour être affiché avec un badge
|
||||||
permissions_as_keys: Les utilisateur·rice·s ayant ce rôle auront accès à …
|
permissions_as_keys: Les utilisateur·rice·s ayant ce rôle auront accès à …
|
||||||
position: Dans certaines situations, un rôle supérieur peut trancher la résolution d'un conflit. Mais certaines opérations ne peuvent être effectuées que sur des rôles ayant une priorité inférieure
|
position: Dans certaines situations, un rôle supérieur peut trancher la résolution d'un conflit. Mais certaines opérations ne peuvent être effectuées que sur des rôles ayant une priorité inférieure
|
||||||
|
username_block:
|
||||||
|
comparison: Veuillez garder à l'esprit le problème de Scunthorpe lors du blocage des correspondances partielles
|
||||||
webhook:
|
webhook:
|
||||||
events: Sélectionnez les événements à envoyer
|
events: Sélectionnez les événements à envoyer
|
||||||
template: Écrivez votre propre bloc JSON avec la possibilité d’utiliser de l’interpolation de variables. Laissez vider pour utiliser le bloc JSON par défaut.
|
template: Écrivez votre propre bloc JSON avec la possibilité d’utiliser de l’interpolation de variables. Laissez vider pour utiliser le bloc JSON par défaut.
|
||||||
@@ -353,9 +355,7 @@ fr:
|
|||||||
jurisdiction: Juridiction
|
jurisdiction: Juridiction
|
||||||
min_age: Âge minimum
|
min_age: Âge minimum
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Jour
|
|
||||||
date_of_birth_2i: Mois
|
date_of_birth_2i: Mois
|
||||||
date_of_birth_3i: Année
|
|
||||||
role: Rôle
|
role: Rôle
|
||||||
time_zone: Fuseau horaire
|
time_zone: Fuseau horaire
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -349,9 +349,7 @@ fy:
|
|||||||
jurisdiction: Rjochtsgebiet
|
jurisdiction: Rjochtsgebiet
|
||||||
min_age: Minimum leeftiid
|
min_age: Minimum leeftiid
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Dei
|
|
||||||
date_of_birth_2i: Moanne
|
date_of_birth_2i: Moanne
|
||||||
date_of_birth_3i: Jier
|
|
||||||
role: Rol
|
role: Rol
|
||||||
time_zone: Tiidsône
|
time_zone: Tiidsône
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -375,9 +375,7 @@ ga:
|
|||||||
jurisdiction: Dlínse dhlíthiúil
|
jurisdiction: Dlínse dhlíthiúil
|
||||||
min_age: Aois íosta
|
min_age: Aois íosta
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Lá
|
|
||||||
date_of_birth_2i: Mí
|
date_of_birth_2i: Mí
|
||||||
date_of_birth_3i: Bliain
|
|
||||||
role: Ról
|
role: Ról
|
||||||
time_zone: Crios ama
|
time_zone: Crios ama
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -373,9 +373,7 @@ gd:
|
|||||||
jurisdiction: Uachdranas laghail
|
jurisdiction: Uachdranas laghail
|
||||||
min_age: An aois as lugha
|
min_age: An aois as lugha
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Latha
|
|
||||||
date_of_birth_2i: Mìos
|
date_of_birth_2i: Mìos
|
||||||
date_of_birth_3i: Bliadhna
|
|
||||||
role: Dreuchd
|
role: Dreuchd
|
||||||
time_zone: Roinn-tìde
|
time_zone: Roinn-tìde
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,7 @@ gl:
|
|||||||
jurisdiction: Xurisdición legal
|
jurisdiction: Xurisdición legal
|
||||||
min_age: Idade mínima
|
min_age: Idade mínima
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Día
|
|
||||||
date_of_birth_2i: Mes
|
date_of_birth_2i: Mes
|
||||||
date_of_birth_3i: Ano
|
|
||||||
role: Rol
|
role: Rol
|
||||||
time_zone: Fuso horario
|
time_zone: Fuso horario
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -374,9 +374,7 @@ he:
|
|||||||
jurisdiction: איזור השיפוט
|
jurisdiction: איזור השיפוט
|
||||||
min_age: גיל מינימלי
|
min_age: גיל מינימלי
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: יום
|
|
||||||
date_of_birth_2i: חודש
|
date_of_birth_2i: חודש
|
||||||
date_of_birth_3i: שנה
|
|
||||||
role: תפקיד
|
role: תפקיד
|
||||||
time_zone: אזור זמן
|
time_zone: אזור זמן
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -371,9 +371,7 @@ hu:
|
|||||||
jurisdiction: Joghatóság
|
jurisdiction: Joghatóság
|
||||||
min_age: Minimális életkor
|
min_age: Minimális életkor
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Nap
|
|
||||||
date_of_birth_2i: Hónap
|
date_of_birth_2i: Hónap
|
||||||
date_of_birth_3i: Év
|
|
||||||
role: Szerep
|
role: Szerep
|
||||||
time_zone: Időzóna
|
time_zone: Időzóna
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -370,9 +370,7 @@ ia:
|
|||||||
jurisdiction: Jurisdiction
|
jurisdiction: Jurisdiction
|
||||||
min_age: Etate minime
|
min_age: Etate minime
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Die
|
|
||||||
date_of_birth_2i: Mense
|
date_of_birth_2i: Mense
|
||||||
date_of_birth_3i: Anno
|
|
||||||
role: Rolo
|
role: Rolo
|
||||||
time_zone: Fuso horari
|
time_zone: Fuso horari
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,7 @@ is:
|
|||||||
jurisdiction: Lögsagnarumdæmi
|
jurisdiction: Lögsagnarumdæmi
|
||||||
min_age: Lágmarksaldur
|
min_age: Lágmarksaldur
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Dagur
|
|
||||||
date_of_birth_2i: Mánuður
|
date_of_birth_2i: Mánuður
|
||||||
date_of_birth_3i: Ár
|
|
||||||
role: Hlutverk
|
role: Hlutverk
|
||||||
time_zone: Tímabelti
|
time_zone: Tímabelti
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,7 @@ it:
|
|||||||
jurisdiction: Giurisdizione legale
|
jurisdiction: Giurisdizione legale
|
||||||
min_age: Età minima
|
min_age: Età minima
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Giorno
|
|
||||||
date_of_birth_2i: Mese
|
date_of_birth_2i: Mese
|
||||||
date_of_birth_3i: Anno
|
|
||||||
role: Ruolo
|
role: Ruolo
|
||||||
time_zone: Fuso orario
|
time_zone: Fuso orario
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -348,9 +348,7 @@ ja:
|
|||||||
jurisdiction: 裁判管轄
|
jurisdiction: 裁判管轄
|
||||||
min_age: 登録可能な最低年齢
|
min_age: 登録可能な最低年齢
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: 日
|
|
||||||
date_of_birth_2i: 月
|
date_of_birth_2i: 月
|
||||||
date_of_birth_3i: 年
|
|
||||||
role: ロール
|
role: ロール
|
||||||
time_zone: タイムゾーン
|
time_zone: タイムゾーン
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -158,9 +158,7 @@ kab:
|
|||||||
terms_of_service_generator:
|
terms_of_service_generator:
|
||||||
domain: Taɣult
|
domain: Taɣult
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Ass
|
|
||||||
date_of_birth_2i: Ayyur
|
date_of_birth_2i: Ayyur
|
||||||
date_of_birth_3i: Aseggas
|
|
||||||
role: Tamlilt
|
role: Tamlilt
|
||||||
time_zone: Tamnaḍt tasragant
|
time_zone: Tamnaḍt tasragant
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ ko:
|
|||||||
featured_tag:
|
featured_tag:
|
||||||
name: '이것들은 최근에 많이 쓰인 해시태그들입니다:'
|
name: '이것들은 최근에 많이 쓰인 해시태그들입니다:'
|
||||||
filters:
|
filters:
|
||||||
|
action: 게시물이 필터에 걸러질 때 어떤 동작을 수행할 지 고르세요
|
||||||
actions:
|
actions:
|
||||||
blur: 텍스트는 숨기지 않고 그대로 둔 채 경고 뒤에 미디어를 숨김니다
|
blur: 텍스트는 숨기지 않고 그대로 둔 채 경고 뒤에 미디어를 숨김니다
|
||||||
hide: 필터에 걸러진 글을 처음부터 없었던 것처럼 완전히 가리기
|
hide: 필터에 걸러진 글을 처음부터 없었던 것처럼 완전히 가리기
|
||||||
@@ -366,9 +367,7 @@ ko:
|
|||||||
jurisdiction: 법적 관할권
|
jurisdiction: 법적 관할권
|
||||||
min_age: 최소 연령
|
min_age: 최소 연령
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: 일
|
|
||||||
date_of_birth_2i: 월
|
date_of_birth_2i: 월
|
||||||
date_of_birth_3i: 년
|
|
||||||
role: 역할
|
role: 역할
|
||||||
time_zone: 시간대
|
time_zone: 시간대
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -313,9 +313,7 @@ lad:
|
|||||||
domain: Domeno
|
domain: Domeno
|
||||||
min_age: Edad minima
|
min_age: Edad minima
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Diya
|
|
||||||
date_of_birth_2i: Mez
|
date_of_birth_2i: Mez
|
||||||
date_of_birth_3i: Anyo
|
|
||||||
role: Rolo
|
role: Rolo
|
||||||
time_zone: Zona de tiempo
|
time_zone: Zona de tiempo
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -246,9 +246,7 @@ lt:
|
|||||||
jurisdiction: Teisinis teismingumas
|
jurisdiction: Teisinis teismingumas
|
||||||
min_age: Mažiausias amžius
|
min_age: Mažiausias amžius
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Diena
|
|
||||||
date_of_birth_2i: Mėnuo
|
date_of_birth_2i: Mėnuo
|
||||||
date_of_birth_3i: Metai
|
|
||||||
role: Vaidmuo
|
role: Vaidmuo
|
||||||
time_zone: Laiko juosta
|
time_zone: Laiko juosta
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -335,9 +335,7 @@ lv:
|
|||||||
domain: Domēna vārds
|
domain: Domēna vārds
|
||||||
min_age: Mazākais pieļaujamais vecums
|
min_age: Mazākais pieļaujamais vecums
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Diena
|
|
||||||
date_of_birth_2i: Mēnesis
|
date_of_birth_2i: Mēnesis
|
||||||
date_of_birth_3i: Gads
|
|
||||||
role: Loma
|
role: Loma
|
||||||
time_zone: Laika josla
|
time_zone: Laika josla
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,7 @@ nl:
|
|||||||
jurisdiction: Jurisdictie
|
jurisdiction: Jurisdictie
|
||||||
min_age: Minimumleeftijd
|
min_age: Minimumleeftijd
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Dag
|
|
||||||
date_of_birth_2i: Maand
|
date_of_birth_2i: Maand
|
||||||
date_of_birth_3i: Jaar
|
|
||||||
role: Rol
|
role: Rol
|
||||||
time_zone: Tijdzone
|
time_zone: Tijdzone
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,7 @@ nn:
|
|||||||
jurisdiction: Rettskrins
|
jurisdiction: Rettskrins
|
||||||
min_age: Minstealder
|
min_age: Minstealder
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Dag
|
|
||||||
date_of_birth_2i: Månad
|
date_of_birth_2i: Månad
|
||||||
date_of_birth_3i: År
|
|
||||||
role: Rolle
|
role: Rolle
|
||||||
time_zone: Tidssone
|
time_zone: Tidssone
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -370,9 +370,7 @@ pl:
|
|||||||
jurisdiction: Jurysdykcja
|
jurisdiction: Jurysdykcja
|
||||||
min_age: Wiek minimalny
|
min_age: Wiek minimalny
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Dzień
|
|
||||||
date_of_birth_2i: Miesiąc
|
date_of_birth_2i: Miesiąc
|
||||||
date_of_birth_3i: Rok
|
|
||||||
role: Rola
|
role: Rola
|
||||||
time_zone: Strefa czasowa
|
time_zone: Strefa czasowa
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,7 @@ pt-BR:
|
|||||||
jurisdiction: Jurisdição legal
|
jurisdiction: Jurisdição legal
|
||||||
min_age: Idade mínima
|
min_age: Idade mínima
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Dia
|
|
||||||
date_of_birth_2i: Mês
|
date_of_birth_2i: Mês
|
||||||
date_of_birth_3i: Ano
|
|
||||||
role: Cargo
|
role: Cargo
|
||||||
time_zone: Fuso horário
|
time_zone: Fuso horário
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,7 @@ pt-PT:
|
|||||||
jurisdiction: Jurisdição legal
|
jurisdiction: Jurisdição legal
|
||||||
min_age: Idade mínima
|
min_age: Idade mínima
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Dia
|
|
||||||
date_of_birth_2i: Mês
|
date_of_birth_2i: Mês
|
||||||
date_of_birth_3i: Ano
|
|
||||||
role: Função
|
role: Função
|
||||||
time_zone: Fuso horário
|
time_zone: Fuso horário
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ ru:
|
|||||||
activity_api_enabled: Еженедельная выгрузка количества локальных постов, активных пользователей и новых регистраций
|
activity_api_enabled: Еженедельная выгрузка количества локальных постов, активных пользователей и новых регистраций
|
||||||
app_icon: WEBP, PNG, GIF или JPG. Заменяет значок приложения на мобильных устройствах по умолчанию вашим значком.
|
app_icon: WEBP, PNG, GIF или JPG. Заменяет значок приложения на мобильных устройствах по умолчанию вашим значком.
|
||||||
backups_retention_period: Пользователи могут запустить создание архива своих постов, чтобы скачать его позже. Если задать положительное значение, эти архивы будут автоматически удалены с вашего хранилища через указанное число дней.
|
backups_retention_period: Пользователи могут запустить создание архива своих постов, чтобы скачать его позже. Если задать положительное значение, эти архивы будут автоматически удалены с вашего хранилища через указанное число дней.
|
||||||
|
bootstrap_timeline_accounts: Эти учётные записи будут закреплены в начале списка рекомендуемых профилей для новых пользователей. Список учётных записей нужно вводить через запятую.
|
||||||
closed_registrations_message: Отображается, когда регистрация закрыта
|
closed_registrations_message: Отображается, когда регистрация закрыта
|
||||||
content_cache_retention_period: Все сообщения с других серверов (включая бусты и ответы) будут удалены через указанное количество дней, независимо от того, как локальный пользователь взаимодействовал с этими сообщениями. Это касается и тех сообщений, которые локальный пользователь пометил в закладки или избранное. Приватные упоминания между пользователями из разных инстансов также будут потеряны и не смогут быть восстановлены. Использование этой настройки предназначено для экземпляров специального назначения и нарушает многие ожидания пользователей при использовании в общих целях.
|
content_cache_retention_period: Все сообщения с других серверов (включая бусты и ответы) будут удалены через указанное количество дней, независимо от того, как локальный пользователь взаимодействовал с этими сообщениями. Это касается и тех сообщений, которые локальный пользователь пометил в закладки или избранное. Приватные упоминания между пользователями из разных инстансов также будут потеряны и не смогут быть восстановлены. Использование этой настройки предназначено для экземпляров специального назначения и нарушает многие ожидания пользователей при использовании в общих целях.
|
||||||
custom_css: Вы можете применять пользовательские стили в веб-версии Mastodon.
|
custom_css: Вы можете применять пользовательские стили в веб-версии Mastodon.
|
||||||
@@ -138,12 +139,12 @@ ru:
|
|||||||
admin_email: Юридические уведомления включают в себя встречные уведомления, постановления суда, запросы на удаление и запросы правоохранительных органов.
|
admin_email: Юридические уведомления включают в себя встречные уведомления, постановления суда, запросы на удаление и запросы правоохранительных органов.
|
||||||
arbitration_address: Может совпадать с почтовым адресом, указанным выше, либо «N/A» в случае электронной почты.
|
arbitration_address: Может совпадать с почтовым адресом, указанным выше, либо «N/A» в случае электронной почты.
|
||||||
arbitration_website: Веб-форма или «N/A» в случае электронной почты.
|
arbitration_website: Веб-форма или «N/A» в случае электронной почты.
|
||||||
choice_of_law: Город, регион, территория или государство, внутреннее материальное право которого регулирует любые претензии.
|
choice_of_law: Город, регион, территория или государство, внутреннее материальное право которого будет регулировать любые претензии.
|
||||||
dmca_address: Находящиеся в США операторы должны использовать адрес, зарегистрированный в DMCA Designated Agent Directory. Использовать абонентский ящик возможно при обращении в соответствующей просьбой, для чего нужно с помощью DMCA Designated Agent Post Office Box Waiver Request написать сообщение в Copyright Office и объяснить, что вы занимаетесь модерацией контента из дома и опасаетесь мести за свои действия, поэтому должны использовать абонентский ящик, чтобы убрать ваш домашний адрес из общего доступа.
|
dmca_address: Находящиеся в США операторы должны использовать адрес, зарегистрированный в DMCA Designated Agent Directory. Использовать абонентский ящик возможно при обращении в соответствующей просьбой, для чего нужно с помощью DMCA Designated Agent Post Office Box Waiver Request написать сообщение в Copyright Office и объяснить, что вы занимаетесь модерацией контента из дома и опасаетесь мести за свои действия, поэтому должны использовать абонентский ящик, чтобы убрать ваш домашний адрес из общего доступа.
|
||||||
dmca_email: Может совпадать с адресом электронной почты для юридических уведомлений, указанным выше.
|
dmca_email: Может совпадать с адресом электронной почты для юридических уведомлений, указанным выше.
|
||||||
domain: Имя, позволяющее уникально идентифицировать ваш онлайн-ресурс.
|
domain: Имя, позволяющее уникально идентифицировать ваш онлайн-ресурс.
|
||||||
jurisdiction: Впишите страну, где находится лицо, оплачивающее счета. Если это компания либо организация, впишите страну инкорпорации, включая город, регион, территорию или штат, если это необходимо.
|
jurisdiction: Впишите страну, где находится лицо, оплачивающее счета. Если это компания либо организация, впишите страну инкорпорации, включая город, регион, территорию или штат, если это необходимо.
|
||||||
min_age: Не меньше минимального возраста, требуемого по закону в вашей юрисдикции.
|
min_age: Не меньше минимального возраста, требуемого по закону в вашей стране.
|
||||||
user:
|
user:
|
||||||
chosen_languages: Отметьте языки, на которых вы желаете видеть посты в публичных лентах. Оставьте выбор пустым, чтобы не фильтровать посты по языку
|
chosen_languages: Отметьте языки, на которых вы желаете видеть посты в публичных лентах. Оставьте выбор пустым, чтобы не фильтровать посты по языку
|
||||||
date_of_birth:
|
date_of_birth:
|
||||||
@@ -350,17 +351,15 @@ ru:
|
|||||||
terms_of_service_generator:
|
terms_of_service_generator:
|
||||||
admin_email: Адрес электронной почты для юридических уведомлений
|
admin_email: Адрес электронной почты для юридических уведомлений
|
||||||
arbitration_address: Почтовый адрес для уведомлений об арбитраже
|
arbitration_address: Почтовый адрес для уведомлений об арбитраже
|
||||||
arbitration_website: Вебсайт для подачи уведомления об арбитраже
|
arbitration_website: Веб-сайт для подачи уведомления об арбитраже
|
||||||
choice_of_law: Юрисдикция
|
choice_of_law: Выбор права
|
||||||
dmca_address: Почтовый адрес для обращений правообладателей
|
dmca_address: Почтовый адрес для обращений правообладателей
|
||||||
dmca_email: Адрес электронной почты для обращений правообладателей
|
dmca_email: Адрес электронной почты для обращений правообладателей
|
||||||
domain: Доменное имя
|
domain: Доменное имя
|
||||||
jurisdiction: Юрисдикция
|
jurisdiction: Юрисдикция
|
||||||
min_age: Минимальный возраст
|
min_age: Минимальный возраст
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: День
|
|
||||||
date_of_birth_2i: Месяц
|
date_of_birth_2i: Месяц
|
||||||
date_of_birth_3i: Год
|
|
||||||
role: Роль
|
role: Роль
|
||||||
time_zone: Часовой пояс
|
time_zone: Часовой пояс
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -344,9 +344,7 @@ si:
|
|||||||
jurisdiction: නීතිමය අධිකරණ බලය
|
jurisdiction: නීතිමය අධිකරණ බලය
|
||||||
min_age: අවම වයස
|
min_age: අවම වයස
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: දහවල
|
|
||||||
date_of_birth_2i: මාසය
|
date_of_birth_2i: මාසය
|
||||||
date_of_birth_3i: වර්ෂය
|
|
||||||
role: භූමිකාව
|
role: භූමිකාව
|
||||||
time_zone: වේලා කලාපය
|
time_zone: වේලා කලාපය
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -340,9 +340,7 @@ sl:
|
|||||||
jurisdiction: Pravna pristojnost
|
jurisdiction: Pravna pristojnost
|
||||||
min_age: Najmanjša starost
|
min_age: Najmanjša starost
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Dan
|
|
||||||
date_of_birth_2i: Mesec
|
date_of_birth_2i: Mesec
|
||||||
date_of_birth_3i: Leto
|
|
||||||
role: Vloga
|
role: Vloga
|
||||||
time_zone: Časovni pas
|
time_zone: Časovni pas
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -371,9 +371,7 @@ sq:
|
|||||||
jurisdiction: Juridiksion ligjor
|
jurisdiction: Juridiksion ligjor
|
||||||
min_age: Mosha minimale
|
min_age: Mosha minimale
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Ditë
|
|
||||||
date_of_birth_2i: Muaj
|
date_of_birth_2i: Muaj
|
||||||
date_of_birth_3i: Vit
|
|
||||||
role: Rol
|
role: Rol
|
||||||
time_zone: Zonë kohore
|
time_zone: Zonë kohore
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -354,9 +354,7 @@ sv:
|
|||||||
jurisdiction: Rättslig jurisdiktion
|
jurisdiction: Rättslig jurisdiktion
|
||||||
min_age: Minimiålder
|
min_age: Minimiålder
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Dag
|
|
||||||
date_of_birth_2i: Månad
|
date_of_birth_2i: Månad
|
||||||
date_of_birth_3i: År
|
|
||||||
role: Roll
|
role: Roll
|
||||||
time_zone: Tidszon
|
time_zone: Tidszon
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -314,9 +314,7 @@ th:
|
|||||||
terms_of_service_generator:
|
terms_of_service_generator:
|
||||||
domain: โดเมน
|
domain: โดเมน
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: วัน
|
|
||||||
date_of_birth_2i: เดือน
|
date_of_birth_2i: เดือน
|
||||||
date_of_birth_3i: ปี
|
|
||||||
role: บทบาท
|
role: บทบาท
|
||||||
time_zone: โซนเวลา
|
time_zone: โซนเวลา
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -372,9 +372,7 @@ tr:
|
|||||||
jurisdiction: Yasal yetki alanı
|
jurisdiction: Yasal yetki alanı
|
||||||
min_age: Minimum yaş
|
min_age: Minimum yaş
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Gün
|
|
||||||
date_of_birth_2i: Ay
|
date_of_birth_2i: Ay
|
||||||
date_of_birth_3i: Yıl
|
|
||||||
role: Rol
|
role: Rol
|
||||||
time_zone: Zaman dilimi
|
time_zone: Zaman dilimi
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -342,9 +342,7 @@ uk:
|
|||||||
jurisdiction: Правова юрисдикція
|
jurisdiction: Правова юрисдикція
|
||||||
min_age: Мінімальний вік
|
min_age: Мінімальний вік
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: День
|
|
||||||
date_of_birth_2i: Місяць
|
date_of_birth_2i: Місяць
|
||||||
date_of_birth_3i: Рік
|
|
||||||
role: Роль
|
role: Роль
|
||||||
time_zone: Часовий пояс
|
time_zone: Часовий пояс
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -371,9 +371,7 @@ vi:
|
|||||||
jurisdiction: Quyền tài phán pháp lý
|
jurisdiction: Quyền tài phán pháp lý
|
||||||
min_age: Độ tuổi tối thiểu
|
min_age: Độ tuổi tối thiểu
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: Ngày
|
|
||||||
date_of_birth_2i: Tháng
|
date_of_birth_2i: Tháng
|
||||||
date_of_birth_3i: Năm
|
|
||||||
role: Vai trò
|
role: Vai trò
|
||||||
time_zone: Múi giờ
|
time_zone: Múi giờ
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -371,9 +371,7 @@ zh-CN:
|
|||||||
jurisdiction: 法律管辖区
|
jurisdiction: 法律管辖区
|
||||||
min_age: 最低年龄
|
min_age: 最低年龄
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: 日
|
|
||||||
date_of_birth_2i: 月
|
date_of_birth_2i: 月
|
||||||
date_of_birth_3i: 年
|
|
||||||
role: 角色
|
role: 角色
|
||||||
time_zone: 时区
|
time_zone: 时区
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -305,9 +305,7 @@ zh-HK:
|
|||||||
terms_of_service_generator:
|
terms_of_service_generator:
|
||||||
domain: 域名
|
domain: 域名
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: 日
|
|
||||||
date_of_birth_2i: 月
|
date_of_birth_2i: 月
|
||||||
date_of_birth_3i: 年
|
|
||||||
role: 角色
|
role: 角色
|
||||||
time_zone: 時區
|
time_zone: 時區
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -371,9 +371,7 @@ zh-TW:
|
|||||||
jurisdiction: 司法管轄區
|
jurisdiction: 司法管轄區
|
||||||
min_age: 最低年齡
|
min_age: 最低年齡
|
||||||
user:
|
user:
|
||||||
date_of_birth_1i: 日
|
|
||||||
date_of_birth_2i: 月
|
date_of_birth_2i: 月
|
||||||
date_of_birth_3i: 年
|
|
||||||
role: 角色
|
role: 角色
|
||||||
time_zone: 時區
|
time_zone: 時區
|
||||||
user_role:
|
user_role:
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ services:
|
|||||||
web:
|
web:
|
||||||
# You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes
|
# You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes
|
||||||
# build: .
|
# build: .
|
||||||
image: ghcr.io/glitch-soc/mastodon:v4.5.0
|
image: ghcr.io/glitch-soc/mastodon:v4.5.1
|
||||||
restart: always
|
restart: always
|
||||||
env_file: .env.production
|
env_file: .env.production
|
||||||
command: bundle exec puma -C config/puma.rb
|
command: bundle exec puma -C config/puma.rb
|
||||||
@@ -83,7 +83,7 @@ services:
|
|||||||
# build:
|
# build:
|
||||||
# dockerfile: ./streaming/Dockerfile
|
# dockerfile: ./streaming/Dockerfile
|
||||||
# context: .
|
# context: .
|
||||||
image: ghcr.io/glitch-soc/mastodon-streaming:v4.5.0
|
image: ghcr.io/glitch-soc/mastodon-streaming:v4.5.1
|
||||||
restart: always
|
restart: always
|
||||||
env_file: .env.production
|
env_file: .env.production
|
||||||
command: node ./streaming/index.js
|
command: node ./streaming/index.js
|
||||||
@@ -102,7 +102,7 @@ services:
|
|||||||
sidekiq:
|
sidekiq:
|
||||||
# You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes
|
# You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes
|
||||||
# build: .
|
# build: .
|
||||||
image: ghcr.io/glitch-soc/mastodon:v4.5.0
|
image: ghcr.io/glitch-soc/mastodon:v4.5.1
|
||||||
restart: always
|
restart: always
|
||||||
env_file: .env.production
|
env_file: .env.production
|
||||||
command: bundle exec sidekiq
|
command: bundle exec sidekiq
|
||||||
@@ -115,7 +115,7 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ./public/system:/mastodon/public/system
|
- ./public/system:/mastodon/public/system
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ [78]' || false"]
|
test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ 8' || false"]
|
||||||
|
|
||||||
## Uncomment to enable federation with tor instances along with adding the following ENV variables
|
## Uncomment to enable federation with tor instances along with adding the following ENV variables
|
||||||
## http_hidden_proxy=http://privoxy:8118
|
## http_hidden_proxy=http://privoxy:8118
|
||||||
|
|||||||
@@ -107,6 +107,7 @@ module ViteRails::TagHelpers::IntegrityExtension
|
|||||||
stylesheet,
|
stylesheet,
|
||||||
integrity: vite_manifest.integrity_hash_for_file(stylesheet),
|
integrity: vite_manifest.integrity_hash_for_file(stylesheet),
|
||||||
media: media,
|
media: media,
|
||||||
|
crossorigin: crossorigin,
|
||||||
**options
|
**options
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -67,6 +67,7 @@
|
|||||||
"core-js": "^3.30.2",
|
"core-js": "^3.30.2",
|
||||||
"cross-env": "^10.0.0",
|
"cross-env": "^10.0.0",
|
||||||
"debug": "^4.4.1",
|
"debug": "^4.4.1",
|
||||||
|
"delegated-events": "^1.1.2",
|
||||||
"detect-passive-events": "^2.0.3",
|
"detect-passive-events": "^2.0.3",
|
||||||
"emoji-mart": "npm:emoji-mart-lazyload@latest",
|
"emoji-mart": "npm:emoji-mart-lazyload@latest",
|
||||||
"emojibase": "^16.0.0",
|
"emojibase": "^16.0.0",
|
||||||
|
|||||||
23
yarn.lock
23
yarn.lock
@@ -2765,6 +2765,7 @@ __metadata:
|
|||||||
core-js: "npm:^3.30.2"
|
core-js: "npm:^3.30.2"
|
||||||
cross-env: "npm:^10.0.0"
|
cross-env: "npm:^10.0.0"
|
||||||
debug: "npm:^4.4.1"
|
debug: "npm:^4.4.1"
|
||||||
|
delegated-events: "npm:^1.1.2"
|
||||||
detect-passive-events: "npm:^2.0.3"
|
detect-passive-events: "npm:^2.0.3"
|
||||||
emoji-mart: "npm:emoji-mart-lazyload@latest"
|
emoji-mart: "npm:emoji-mart-lazyload@latest"
|
||||||
emojibase: "npm:^16.0.0"
|
emojibase: "npm:^16.0.0"
|
||||||
@@ -6397,6 +6398,15 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"delegated-events@npm:^1.1.2":
|
||||||
|
version: 1.1.2
|
||||||
|
resolution: "delegated-events@npm:1.1.2"
|
||||||
|
dependencies:
|
||||||
|
selector-set: "npm:^1.1.5"
|
||||||
|
checksum: 10c0/b295a6d6c6cef4b9312bfd4132ac3a1255f3c2fadf3692a04cf7ddf8f0d472bfce9de06323faa75e922d20e5674d45022e1a5378b8500cd7d573ffa0cf7ca602
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"denque@npm:^2.1.0":
|
"denque@npm:^2.1.0":
|
||||||
version: 2.1.0
|
version: 2.1.0
|
||||||
resolution: "denque@npm:2.1.0"
|
resolution: "denque@npm:2.1.0"
|
||||||
@@ -8881,13 +8891,13 @@ __metadata:
|
|||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"js-yaml@npm:^4.1.0":
|
"js-yaml@npm:^4.1.0":
|
||||||
version: 4.1.0
|
version: 4.1.1
|
||||||
resolution: "js-yaml@npm:4.1.0"
|
resolution: "js-yaml@npm:4.1.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
argparse: "npm:^2.0.1"
|
argparse: "npm:^2.0.1"
|
||||||
bin:
|
bin:
|
||||||
js-yaml: bin/js-yaml.js
|
js-yaml: bin/js-yaml.js
|
||||||
checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f
|
checksum: 10c0/561c7d7088c40a9bb53cc75becbfb1df6ae49b34b5e6e5a81744b14ae8667ec564ad2527709d1a6e7d5e5fa6d483aa0f373a50ad98d42fde368ec4a190d4fae7
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@@ -12169,6 +12179,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"selector-set@npm:^1.1.5":
|
||||||
|
version: 1.1.5
|
||||||
|
resolution: "selector-set@npm:1.1.5"
|
||||||
|
checksum: 10c0/4835907846eb8496c2cc4e5ce48355cce1ef3b55e82789542739dcdc71ebfb756e133d1d7f7ec9f0cf4b1c11fc0375a1d3b99a482d9c973493ca85a6d4b012ab
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"semver@npm:^5.6.0":
|
"semver@npm:^5.6.0":
|
||||||
version: 5.7.2
|
version: 5.7.2
|
||||||
resolution: "semver@npm:5.7.2"
|
resolution: "semver@npm:5.7.2"
|
||||||
|
|||||||
Reference in New Issue
Block a user