Merge branch 'asonix/accept-rich-text' of asonix/mastodon into asonix/changes
This commit is contained in:
commit
20c2125afa
|
@ -49,6 +49,7 @@ class Settings::PreferencesController < Settings::BaseController
|
||||||
:setting_hide_network,
|
:setting_hide_network,
|
||||||
:setting_aggregate_reblogs,
|
:setting_aggregate_reblogs,
|
||||||
:setting_show_application,
|
:setting_show_application,
|
||||||
|
:setting_strip_formatting,
|
||||||
notification_emails: %i(follow follow_request reblog favourite mention digest report pending_account),
|
notification_emails: %i(follow follow_request reblog favourite mention digest report pending_account),
|
||||||
interactions: %i(must_be_follower must_be_following)
|
interactions: %i(must_be_follower must_be_following)
|
||||||
)
|
)
|
||||||
|
|
|
@ -132,6 +132,17 @@ module StreamEntriesHelper
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def text_formatting_classes
|
||||||
|
case current_user&.setting_strip_formatting
|
||||||
|
when 'none', nil
|
||||||
|
'rich-text rich-blocks'
|
||||||
|
when 'blocks'
|
||||||
|
'rich-text'
|
||||||
|
when 'all'
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def style_classes(status, is_predecessor, is_successor, include_threads)
|
def style_classes(status, is_predecessor, is_successor, include_threads)
|
||||||
classes = ['entry']
|
classes = ['entry']
|
||||||
classes << 'entry-predecessor' if is_predecessor
|
classes << 'entry-predecessor' if is_predecessor
|
||||||
|
|
|
@ -6,6 +6,7 @@ import { FormattedMessage } from 'react-intl';
|
||||||
import Permalink from './permalink';
|
import Permalink from './permalink';
|
||||||
import classnames from 'classnames';
|
import classnames from 'classnames';
|
||||||
import Icon from 'mastodon/components/icon';
|
import Icon from 'mastodon/components/icon';
|
||||||
|
import { stripFormatting } from 'mastodon/initial_state';
|
||||||
|
|
||||||
const MAX_HEIGHT = 642; // 20px * 32 (+ 2px padding at the top)
|
const MAX_HEIGHT = 642; // 20px * 32 (+ 2px padding at the top)
|
||||||
|
|
||||||
|
@ -153,6 +154,8 @@ export default class StatusContent extends React.PureComponent {
|
||||||
'status__content--with-action': this.props.onClick && this.context.router,
|
'status__content--with-action': this.props.onClick && this.context.router,
|
||||||
'status__content--with-spoiler': status.get('spoiler_text').length > 0,
|
'status__content--with-spoiler': status.get('spoiler_text').length > 0,
|
||||||
'status__content--collapsed': this.state.collapsed === true,
|
'status__content--collapsed': this.state.collapsed === true,
|
||||||
|
'rich-text': stripFormatting !== 'all',
|
||||||
|
'rich-blocks': stripFormatting === 'none',
|
||||||
});
|
});
|
||||||
|
|
||||||
if (isRtl(status.get('search_index'))) {
|
if (isRtl(status.get('search_index'))) {
|
||||||
|
@ -218,7 +221,7 @@ export default class StatusContent extends React.PureComponent {
|
||||||
<div
|
<div
|
||||||
tabIndex='0'
|
tabIndex='0'
|
||||||
ref={this.setRef}
|
ref={this.setRef}
|
||||||
className='status__content'
|
className={classNames}
|
||||||
style={directionStyle}
|
style={directionStyle}
|
||||||
dangerouslySetInnerHTML={content}
|
dangerouslySetInnerHTML={content}
|
||||||
lang={status.get('language')}
|
lang={status.get('language')}
|
||||||
|
|
|
@ -19,5 +19,6 @@ export const version = getMeta('version');
|
||||||
export const mascot = getMeta('mascot');
|
export const mascot = getMeta('mascot');
|
||||||
export const profile_directory = getMeta('profile_directory');
|
export const profile_directory = getMeta('profile_directory');
|
||||||
export const isStaff = getMeta('is_staff');
|
export const isStaff = getMeta('is_staff');
|
||||||
|
export const stripFormatting = getMeta('strip_formatting');
|
||||||
|
|
||||||
export default initialState;
|
export default initialState;
|
||||||
|
|
|
@ -667,10 +667,6 @@
|
||||||
|
|
||||||
&.status__content--with-spoiler {
|
&.status__content--with-spoiler {
|
||||||
white-space: normal;
|
white-space: normal;
|
||||||
|
|
||||||
.status__content__text {
|
|
||||||
white-space: pre-wrap;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.emojione {
|
.emojione {
|
||||||
|
@ -679,7 +675,9 @@
|
||||||
margin: -3px 0 0;
|
margin: -3px 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p,
|
||||||
|
pre,
|
||||||
|
blockquote {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
|
|
||||||
|
@ -688,6 +686,175 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5 {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
white-space: normal;
|
||||||
|
|
||||||
|
p:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ul,
|
||||||
|
ol {
|
||||||
|
p {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(.rich-text) {
|
||||||
|
del {
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
&::before,
|
||||||
|
&::after {
|
||||||
|
content: '~~';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
font-family: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
u {
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
&::before,
|
||||||
|
&::after {
|
||||||
|
content: '__';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h1::before {
|
||||||
|
content: '# ';
|
||||||
|
}
|
||||||
|
|
||||||
|
h2::before {
|
||||||
|
content: '## ';
|
||||||
|
}
|
||||||
|
|
||||||
|
h3::before {
|
||||||
|
content: '### ';
|
||||||
|
}
|
||||||
|
|
||||||
|
h4::before {
|
||||||
|
content: '#### ';
|
||||||
|
}
|
||||||
|
|
||||||
|
h5::before {
|
||||||
|
content: '##### ';
|
||||||
|
}
|
||||||
|
|
||||||
|
b,
|
||||||
|
strong {
|
||||||
|
&::before,
|
||||||
|
&::after {
|
||||||
|
content: '**';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
em,
|
||||||
|
i {
|
||||||
|
&::before,
|
||||||
|
&::after {
|
||||||
|
content: '*';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(.rich-blocks) {
|
||||||
|
blockquote {
|
||||||
|
position: relative;
|
||||||
|
padding-left: 1em;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote::before {
|
||||||
|
position: absolute;
|
||||||
|
content: '>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a';
|
||||||
|
white-space: pre-wrap;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
li::before {
|
||||||
|
position: absolute;
|
||||||
|
content: '*';
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
position: relative;
|
||||||
|
padding-left: 1em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.rich-text {
|
||||||
|
h1,
|
||||||
|
h2 {
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5 {
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
b,
|
||||||
|
strong {
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
em,
|
||||||
|
i {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub {
|
||||||
|
font-size: smaller;
|
||||||
|
text-align: sub;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.rich-blocks {
|
||||||
|
h1,
|
||||||
|
h2 {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
padding-left: 10px;
|
||||||
|
border-left: 3px solid $darker-text-color;
|
||||||
|
color: $darker-text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul,
|
||||||
|
ol {
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style-type: disc;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
list-style-type: decimal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: $secondary-text-color;
|
color: $secondary-text-color;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
|
|
@ -20,11 +20,13 @@ class Sanitize
|
||||||
end
|
end
|
||||||
|
|
||||||
MASTODON_STRICT ||= freeze_config(
|
MASTODON_STRICT ||= freeze_config(
|
||||||
elements: %w(p br span a),
|
elements: %w(p br span a abbr del pre blockquote code b strong u sub i em h1 h2 h3 h4 h5 ul ol li),
|
||||||
|
|
||||||
attributes: {
|
attributes: {
|
||||||
'a' => %w(href rel class),
|
'a' => %w(href rel class title),
|
||||||
'span' => %w(class),
|
'span' => %w(class),
|
||||||
|
'abbr' => %w(title),
|
||||||
|
'blockquote' => %w(cite),
|
||||||
},
|
},
|
||||||
|
|
||||||
add_attributes: {
|
add_attributes: {
|
||||||
|
@ -35,7 +37,8 @@ class Sanitize
|
||||||
},
|
},
|
||||||
|
|
||||||
protocols: {
|
protocols: {
|
||||||
'a' => { 'href' => HTTP_PROTOCOLS },
|
'a' => { 'href' => HTTP_PROTOCOLS },
|
||||||
|
'blockquote' => { 'cite' => HTTP_PROTOCOLS },
|
||||||
},
|
},
|
||||||
|
|
||||||
transformers: [
|
transformers: [
|
||||||
|
|
|
@ -33,6 +33,7 @@ class UserSettingsDecorator
|
||||||
user.settings['hide_network'] = hide_network_preference if change?('setting_hide_network')
|
user.settings['hide_network'] = hide_network_preference if change?('setting_hide_network')
|
||||||
user.settings['aggregate_reblogs'] = aggregate_reblogs_preference if change?('setting_aggregate_reblogs')
|
user.settings['aggregate_reblogs'] = aggregate_reblogs_preference if change?('setting_aggregate_reblogs')
|
||||||
user.settings['show_application'] = show_application_preference if change?('setting_show_application')
|
user.settings['show_application'] = show_application_preference if change?('setting_show_application')
|
||||||
|
user.settings['strip_formatting'] = strip_formatting_preference if change?('setting_strip_formatting')
|
||||||
end
|
end
|
||||||
|
|
||||||
def merged_notification_emails
|
def merged_notification_emails
|
||||||
|
@ -107,6 +108,10 @@ class UserSettingsDecorator
|
||||||
boolean_cast_setting 'setting_aggregate_reblogs'
|
boolean_cast_setting 'setting_aggregate_reblogs'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def strip_formatting_preference
|
||||||
|
settings['setting_strip_formatting']
|
||||||
|
end
|
||||||
|
|
||||||
def boolean_cast_setting(key)
|
def boolean_cast_setting(key)
|
||||||
ActiveModel::Type::Boolean.new.cast(settings[key])
|
ActiveModel::Type::Boolean.new.cast(settings[key])
|
||||||
end
|
end
|
||||||
|
|
|
@ -104,7 +104,8 @@ class User < ApplicationRecord
|
||||||
|
|
||||||
delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :delete_modal,
|
delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :delete_modal,
|
||||||
:reduce_motion, :system_font_ui, :noindex, :theme, :display_media, :hide_network,
|
:reduce_motion, :system_font_ui, :noindex, :theme, :display_media, :hide_network,
|
||||||
:expand_spoilers, :default_language, :aggregate_reblogs, :show_application, to: :settings, prefix: :setting, allow_nil: false
|
:expand_spoilers, :default_language, :aggregate_reblogs, :show_application,
|
||||||
|
:strip_formatting, to: :settings, prefix: :setting, allow_nil: false
|
||||||
|
|
||||||
attr_reader :invite_code
|
attr_reader :invite_code
|
||||||
attr_writer :external
|
attr_writer :external
|
||||||
|
|
|
@ -23,15 +23,16 @@ class InitialStateSerializer < ActiveModel::Serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
if object.current_account
|
if object.current_account
|
||||||
store[:me] = object.current_account.id.to_s
|
store[:me] = object.current_account.id.to_s
|
||||||
store[:unfollow_modal] = object.current_account.user.setting_unfollow_modal
|
store[:unfollow_modal] = object.current_account.user.setting_unfollow_modal
|
||||||
store[:boost_modal] = object.current_account.user.setting_boost_modal
|
store[:boost_modal] = object.current_account.user.setting_boost_modal
|
||||||
store[:delete_modal] = object.current_account.user.setting_delete_modal
|
store[:delete_modal] = object.current_account.user.setting_delete_modal
|
||||||
store[:auto_play_gif] = object.current_account.user.setting_auto_play_gif
|
store[:auto_play_gif] = object.current_account.user.setting_auto_play_gif
|
||||||
store[:display_media] = object.current_account.user.setting_display_media
|
store[:display_media] = object.current_account.user.setting_display_media
|
||||||
store[:expand_spoilers] = object.current_account.user.setting_expand_spoilers
|
store[:expand_spoilers] = object.current_account.user.setting_expand_spoilers
|
||||||
store[:reduce_motion] = object.current_account.user.setting_reduce_motion
|
store[:reduce_motion] = object.current_account.user.setting_reduce_motion
|
||||||
store[:is_staff] = object.current_account.user.staff?
|
store[:is_staff] = object.current_account.user.staff?
|
||||||
|
store[:strip_formatting] = object.current_account.user.setting_strip_formatting
|
||||||
end
|
end
|
||||||
|
|
||||||
store
|
store
|
||||||
|
|
|
@ -7,6 +7,7 @@ class REST::PreferencesSerializer < ActiveModel::Serializer
|
||||||
|
|
||||||
attribute :reading_default_sensitive_media, key: 'reading:expand:media'
|
attribute :reading_default_sensitive_media, key: 'reading:expand:media'
|
||||||
attribute :reading_default_sensitive_text, key: 'reading:expand:spoilers'
|
attribute :reading_default_sensitive_text, key: 'reading:expand:spoilers'
|
||||||
|
attribute :reading_strip_formatting, key: 'reading:formatting:strip'
|
||||||
|
|
||||||
def posting_default_privacy
|
def posting_default_privacy
|
||||||
object.user.setting_default_privacy
|
object.user.setting_default_privacy
|
||||||
|
@ -27,4 +28,8 @@ class REST::PreferencesSerializer < ActiveModel::Serializer
|
||||||
def reading_default_sensitive_text
|
def reading_default_sensitive_text
|
||||||
object.user.setting_expand_spoilers
|
object.user.setting_expand_spoilers
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def reading_strip_formatting
|
||||||
|
object.user.setting_strip_formatting
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
= f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label
|
= f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label
|
||||||
|
|
||||||
.fields-group
|
.fields-group
|
||||||
|
= f.input :setting_strip_formatting, collection: ['none', 'blocks', 'all'], wrapper: :with_floating_label, include_blank: false, label_method: lambda { |value| safe_join([I18n.t("statuses.strip_formatting.#{value}"), content_tag(:span, I18n.t("statuses.strip_formatting.#{value}_long"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', hint: false
|
||||||
= f.input :setting_auto_play_gif, as: :boolean, wrapper: :with_label
|
= f.input :setting_auto_play_gif, as: :boolean, wrapper: :with_label
|
||||||
= f.input :setting_expand_spoilers, as: :boolean, wrapper: :with_label
|
= f.input :setting_expand_spoilers, as: :boolean, wrapper: :with_label
|
||||||
= f.input :setting_reduce_motion, as: :boolean, wrapper: :with_label
|
= f.input :setting_reduce_motion, as: :boolean, wrapper: :with_label
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
= account_action_button(status.account)
|
= account_action_button(status.account)
|
||||||
|
|
||||||
.status__content.emojify<
|
.status__content.emojify{ class: text_formatting_classes }<
|
||||||
- if status.spoiler_text?
|
- if status.spoiler_text?
|
||||||
%p{ :style => ('margin-bottom: 0' unless current_account&.user&.setting_expand_spoilers) }<
|
%p{ :style => ('margin-bottom: 0' unless current_account&.user&.setting_expand_spoilers) }<
|
||||||
%span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)}
|
%span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)}
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
%span.display-name__account
|
%span.display-name__account
|
||||||
= acct(status.account)
|
= acct(status.account)
|
||||||
= fa_icon('lock') if status.account.locked?
|
= fa_icon('lock') if status.account.locked?
|
||||||
.status__content.emojify<
|
.status__content.emojify{ class: text_formatting_classes }<
|
||||||
- if status.spoiler_text?
|
- if status.spoiler_text?
|
||||||
%p{ :style => ('margin-bottom: 0' unless current_account&.user&.setting_expand_spoilers) }<
|
%p{ :style => ('margin-bottom: 0' unless current_account&.user&.setting_expand_spoilers) }<
|
||||||
%span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)}
|
%span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)}
|
||||||
|
|
|
@ -399,14 +399,14 @@ dog:
|
||||||
desc_html: Modify the look with CSS loaded on every page
|
desc_html: Modify the look with CSS loaded on every page
|
||||||
title: Custom CSS
|
title: Custom CSS
|
||||||
hero:
|
hero:
|
||||||
desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to instance thumbnail
|
desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to server thumbnail
|
||||||
title: Hero image
|
title: Hero image
|
||||||
mascot:
|
mascot:
|
||||||
desc_html: Displayed on multiple pages. At least 293×205px recommended. When not set, falls back to default mascot
|
desc_html: Displayed on multiple pages. At least 293×205px recommended. When not set, falls back to default mascot
|
||||||
title: Mascot image
|
title: Mascot image
|
||||||
peers_api_enabled:
|
peers_api_enabled:
|
||||||
desc_html: Domain names this instance has encountered in the fediverse
|
desc_html: Domain names this server has encountered in the fediverse
|
||||||
title: Publish list of discovered instances
|
title: Publish list of discovered servers
|
||||||
preview_sensitive_media:
|
preview_sensitive_media:
|
||||||
desc_html: Link previews on other websites will display a thumbnail even if the media is marked as sensitive
|
desc_html: Link previews on other websites will display a thumbnail even if the media is marked as sensitive
|
||||||
title: Show sensitive media in OpenGraph previews
|
title: Show sensitive media in OpenGraph previews
|
||||||
|
@ -437,20 +437,20 @@ dog:
|
||||||
title: Show staff badge
|
title: Show staff badge
|
||||||
site_description:
|
site_description:
|
||||||
desc_html: Introductory paragraph on the frontpage. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular <code><a></code> and <code><em></code>.
|
desc_html: Introductory paragraph on the frontpage. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular <code><a></code> and <code><em></code>.
|
||||||
title: Instance description
|
title: Server description
|
||||||
site_description_extended:
|
site_description_extended:
|
||||||
desc_html: A good place for your code of conduct, rules, guidelines and other things that set your instance apart. You can use HTML tags
|
desc_html: A good place for your code of conduct, rules, guidelines and other things that set your server apart. You can use HTML tags
|
||||||
title: Custom extended information
|
title: Custom extended information
|
||||||
site_short_description:
|
site_short_description:
|
||||||
desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph. If empty, defaults to instance description.
|
desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph.
|
||||||
title: Short instance description
|
title: Short server description
|
||||||
site_terms:
|
site_terms:
|
||||||
desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML tags
|
desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML tags
|
||||||
title: Custom terms of service
|
title: Custom terms of service
|
||||||
site_title: Instance name
|
site_title: Server name
|
||||||
thumbnail:
|
thumbnail:
|
||||||
desc_html: Used for previews via OpenGraph and API. 1200x630px recommended
|
desc_html: Used for previews via OpenGraph and API. 1200x630px recommended
|
||||||
title: Instance thumbnail
|
title: Server thumbnail
|
||||||
timeline_preview:
|
timeline_preview:
|
||||||
desc_html: Display public timeline on landing page
|
desc_html: Display public timeline on landing page
|
||||||
title: Timeline preview
|
title: Timeline preview
|
||||||
|
@ -696,7 +696,7 @@ dog:
|
||||||
one: 1 use
|
one: 1 use
|
||||||
other: "%{count} uses"
|
other: "%{count} uses"
|
||||||
max_uses_prompt: No limit
|
max_uses_prompt: No limit
|
||||||
prompt: Generate and share links with others to grant access to this instance
|
prompt: Generate and share links with others to grant access to this server
|
||||||
table:
|
table:
|
||||||
expires_at: Expires
|
expires_at: Expires
|
||||||
uses: Uses
|
uses: Uses
|
||||||
|
@ -909,6 +909,13 @@ dog:
|
||||||
vote: Vote
|
vote: Vote
|
||||||
show_more: Show more
|
show_more: Show more
|
||||||
sign_in_to_participate: Sign in to participate in the conversation
|
sign_in_to_participate: Sign in to participate in the conversation
|
||||||
|
strip_formatting:
|
||||||
|
all: All
|
||||||
|
all_long: Strip all advanced formatting
|
||||||
|
blocks: Block elements
|
||||||
|
blocks_long: Strip formatting for title headers and block quotes
|
||||||
|
none: None
|
||||||
|
none_long: Do not strip any formatting supported by Mastodon
|
||||||
title: '%{name}: "%{quote}"'
|
title: '%{name}: "%{quote}"'
|
||||||
visibilities:
|
visibilities:
|
||||||
private: Followers-only
|
private: Followers-only
|
||||||
|
@ -1065,7 +1072,7 @@ dog:
|
||||||
final_action: Start posting
|
final_action: Start posting
|
||||||
final_step: 'Start posting! Even without followers your public messages may be seen by others, for example on the local timeline and in hashtags. You may want to introduce yourself on the #introductions hashtag.'
|
final_step: 'Start posting! Even without followers your public messages may be seen by others, for example on the local timeline and in hashtags. You may want to introduce yourself on the #introductions hashtag.'
|
||||||
full_handle: Your full handle
|
full_handle: Your full handle
|
||||||
full_handle_hint: This is what you would tell your friends so they can message or follow you from another instance.
|
full_handle_hint: This is what you would tell your friends so they can message or follow you from another server.
|
||||||
review_preferences_action: Change preferences
|
review_preferences_action: Change preferences
|
||||||
review_preferences_step: Make sure to set your preferences, such as which emails you'd like to receive, or what privacy level you’d like your posts to default to. If you don’t have motion sickness, you could choose to enable GIF autoplay.
|
review_preferences_step: Make sure to set your preferences, such as which emails you'd like to receive, or what privacy level you’d like your posts to default to. If you don’t have motion sickness, you could choose to enable GIF autoplay.
|
||||||
subject: Welcome to Mastodon
|
subject: Welcome to Mastodon
|
||||||
|
|
|
@ -909,6 +909,13 @@ en:
|
||||||
vote: Vote
|
vote: Vote
|
||||||
show_more: Show more
|
show_more: Show more
|
||||||
sign_in_to_participate: Sign in to participate in the conversation
|
sign_in_to_participate: Sign in to participate in the conversation
|
||||||
|
strip_formatting:
|
||||||
|
all: All
|
||||||
|
all_long: Strip all advanced formatting
|
||||||
|
blocks: Block elements
|
||||||
|
blocks_long: Strip formatting for title headers and block quotes
|
||||||
|
none: None
|
||||||
|
none_long: Do not strip any formatting supported by Mastodon
|
||||||
title: '%{name}: "%{quote}"'
|
title: '%{name}: "%{quote}"'
|
||||||
visibilities:
|
visibilities:
|
||||||
private: Followers-only
|
private: Followers-only
|
||||||
|
|
|
@ -399,14 +399,14 @@ lion:
|
||||||
desc_html: Modify the look with CSS loaded on every page
|
desc_html: Modify the look with CSS loaded on every page
|
||||||
title: Custom CSS
|
title: Custom CSS
|
||||||
hero:
|
hero:
|
||||||
desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to instance thumbnail
|
desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to server thumbnail
|
||||||
title: Hero image
|
title: Hero image
|
||||||
mascot:
|
mascot:
|
||||||
desc_html: Displayed on multiple pages. At least 293×205px recommended. When not set, falls back to default mascot
|
desc_html: Displayed on multiple pages. At least 293×205px recommended. When not set, falls back to default mascot
|
||||||
title: Mascot image
|
title: Mascot image
|
||||||
peers_api_enabled:
|
peers_api_enabled:
|
||||||
desc_html: Domain names this instance has encountered in the fediverse
|
desc_html: Domain names this server has encountered in the fediverse
|
||||||
title: Publish list of discovered instances
|
title: Publish list of discovered servers
|
||||||
preview_sensitive_media:
|
preview_sensitive_media:
|
||||||
desc_html: Link previews on other websites will display a thumbnail even if the media is marked as sensitive
|
desc_html: Link previews on other websites will display a thumbnail even if the media is marked as sensitive
|
||||||
title: Show sensitive media in OpenGraph previews
|
title: Show sensitive media in OpenGraph previews
|
||||||
|
@ -437,20 +437,20 @@ lion:
|
||||||
title: Show staff badge
|
title: Show staff badge
|
||||||
site_description:
|
site_description:
|
||||||
desc_html: Introductory paragraph on the frontpage. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular <code><a></code> and <code><em></code>.
|
desc_html: Introductory paragraph on the frontpage. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular <code><a></code> and <code><em></code>.
|
||||||
title: Instance description
|
title: Server description
|
||||||
site_description_extended:
|
site_description_extended:
|
||||||
desc_html: A good place for your code of conduct, rules, guidelines and other things that set your instance apart. You can use HTML tags
|
desc_html: A good place for your code of conduct, rules, guidelines and other things that set your server apart. You can use HTML tags
|
||||||
title: Custom extended information
|
title: Custom extended information
|
||||||
site_short_description:
|
site_short_description:
|
||||||
desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph. If empty, defaults to instance description.
|
desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph.
|
||||||
title: Short instance description
|
title: Short server description
|
||||||
site_terms:
|
site_terms:
|
||||||
desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML tags
|
desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML tags
|
||||||
title: Custom terms of service
|
title: Custom terms of service
|
||||||
site_title: Instance name
|
site_title: Server name
|
||||||
thumbnail:
|
thumbnail:
|
||||||
desc_html: Used for previews via OpenGraph and API. 1200x630px recommended
|
desc_html: Used for previews via OpenGraph and API. 1200x630px recommended
|
||||||
title: Instance thumbnail
|
title: Server thumbnail
|
||||||
timeline_preview:
|
timeline_preview:
|
||||||
desc_html: Display public timeline on landing page
|
desc_html: Display public timeline on landing page
|
||||||
title: Timeline preview
|
title: Timeline preview
|
||||||
|
@ -569,7 +569,7 @@ lion:
|
||||||
description_html: This will <strong>permanently, irreversibly</strong> remove content from your account and deactivate it. Your username will remain reserved to prevent future impersonations.
|
description_html: This will <strong>permanently, irreversibly</strong> remove content from your account and deactivate it. Your username will remain reserved to prevent future impersonations.
|
||||||
proceed: Delete account
|
proceed: Delete account
|
||||||
success_msg: Your account was successfully deleted
|
success_msg: Your account was successfully deleted
|
||||||
warning_html: Only deletion of content from this particular instance is guaranteed. Content that has been widely shared is likely to leave traces. Offline servers and servers that have unsubscribed from your updates will not update their databases.
|
warning_html: Only deletion of content from this particular server is guaranteed. Content that has been widely shared is likely to leave traces. Offline servers and servers that have unsubscribed from your updates will not update their databases.
|
||||||
warning_title: Disseminated content availability
|
warning_title: Disseminated content availability
|
||||||
directories:
|
directories:
|
||||||
directory: Profile directory
|
directory: Profile directory
|
||||||
|
@ -696,7 +696,7 @@ lion:
|
||||||
one: 1 use
|
one: 1 use
|
||||||
other: "%{count} uses"
|
other: "%{count} uses"
|
||||||
max_uses_prompt: No limit
|
max_uses_prompt: No limit
|
||||||
prompt: Generate and share links with others to grant access to this instance
|
prompt: Generate and share links with others to grant access to this server
|
||||||
table:
|
table:
|
||||||
expires_at: Expires
|
expires_at: Expires
|
||||||
uses: Uses
|
uses: Uses
|
||||||
|
@ -909,6 +909,13 @@ lion:
|
||||||
vote: Vote
|
vote: Vote
|
||||||
show_more: Show more
|
show_more: Show more
|
||||||
sign_in_to_participate: Sign in to participate in the conversation
|
sign_in_to_participate: Sign in to participate in the conversation
|
||||||
|
strip_formatting:
|
||||||
|
all: All
|
||||||
|
all_long: Strip all advanced formatting
|
||||||
|
blocks: Block elements
|
||||||
|
blocks_long: Strip formatting for title headers and block quotes
|
||||||
|
none: None
|
||||||
|
none_long: Do not strip any formatting supported by Mastodon
|
||||||
title: '%{name}: "%{quote}"'
|
title: '%{name}: "%{quote}"'
|
||||||
visibilities:
|
visibilities:
|
||||||
private: Followers-only
|
private: Followers-only
|
||||||
|
@ -1065,7 +1072,7 @@ lion:
|
||||||
final_action: Start posting
|
final_action: Start posting
|
||||||
final_step: 'Start posting! Even without followers your public messages may be seen by others, for example on the local timeline and in hashtags. You may want to introduce yourself on the #introductions hashtag.'
|
final_step: 'Start posting! Even without followers your public messages may be seen by others, for example on the local timeline and in hashtags. You may want to introduce yourself on the #introductions hashtag.'
|
||||||
full_handle: Your full handle
|
full_handle: Your full handle
|
||||||
full_handle_hint: This is what you would tell your friends so they can message or follow you from another instance.
|
full_handle_hint: This is what you would tell your friends so they can message or follow you from another server.
|
||||||
review_preferences_action: Change preferences
|
review_preferences_action: Change preferences
|
||||||
review_preferences_step: Make sure to set your preferences, such as which emails you'd like to receive, or what privacy level you’d like your posts to default to. If you don’t have motion sickness, you could choose to enable GIF autoplay.
|
review_preferences_step: Make sure to set your preferences, such as which emails you'd like to receive, or what privacy level you’d like your posts to default to. If you don’t have motion sickness, you could choose to enable GIF autoplay.
|
||||||
subject: Welcome to Mastodon
|
subject: Welcome to Mastodon
|
||||||
|
|
|
@ -106,6 +106,7 @@ dog:
|
||||||
setting_noindex: Opt-out of search engine indexing
|
setting_noindex: Opt-out of search engine indexing
|
||||||
setting_reduce_motion: Reduce motion in animations
|
setting_reduce_motion: Reduce motion in animations
|
||||||
setting_show_application: Disclose application used to send toots
|
setting_show_application: Disclose application used to send toots
|
||||||
|
setting_strip_formatting: Strip advanced formatting from toots
|
||||||
setting_system_font_ui: Use system's default font
|
setting_system_font_ui: Use system's default font
|
||||||
setting_theme: Site theme
|
setting_theme: Site theme
|
||||||
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
|
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
|
||||||
|
|
|
@ -106,6 +106,7 @@ en:
|
||||||
setting_noindex: Opt-out of search engine indexing
|
setting_noindex: Opt-out of search engine indexing
|
||||||
setting_reduce_motion: Reduce motion in animations
|
setting_reduce_motion: Reduce motion in animations
|
||||||
setting_show_application: Disclose application used to send toots
|
setting_show_application: Disclose application used to send toots
|
||||||
|
setting_strip_formatting: Strip advanced formatting from toots
|
||||||
setting_system_font_ui: Use system's default font
|
setting_system_font_ui: Use system's default font
|
||||||
setting_theme: Site theme
|
setting_theme: Site theme
|
||||||
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
|
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
|
||||||
|
|
|
@ -106,6 +106,7 @@ lion:
|
||||||
setting_noindex: Opt-out of search engine indexing
|
setting_noindex: Opt-out of search engine indexing
|
||||||
setting_reduce_motion: Reduce motion in animations
|
setting_reduce_motion: Reduce motion in animations
|
||||||
setting_show_application: Disclose application used to send toots
|
setting_show_application: Disclose application used to send toots
|
||||||
|
setting_strip_formatting: Strip advanced formatting from toots
|
||||||
setting_system_font_ui: Use system's default font
|
setting_system_font_ui: Use system's default font
|
||||||
setting_theme: Site theme
|
setting_theme: Site theme
|
||||||
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
|
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
|
||||||
|
|
|
@ -106,6 +106,7 @@ squeak:
|
||||||
setting_noindex: Opt-out of search engine indexing
|
setting_noindex: Opt-out of search engine indexing
|
||||||
setting_reduce_motion: Reduce motion in animations
|
setting_reduce_motion: Reduce motion in animations
|
||||||
setting_show_application: Disclose application used to send toots
|
setting_show_application: Disclose application used to send toots
|
||||||
|
setting_strip_formatting: Strip advanced formatting from toots
|
||||||
setting_system_font_ui: Use system's default font
|
setting_system_font_ui: Use system's default font
|
||||||
setting_theme: Site theme
|
setting_theme: Site theme
|
||||||
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
|
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
|
||||||
|
|
|
@ -399,14 +399,14 @@ squeak:
|
||||||
desc_html: Modify the look with CSS loaded on every page
|
desc_html: Modify the look with CSS loaded on every page
|
||||||
title: Custom CSS
|
title: Custom CSS
|
||||||
hero:
|
hero:
|
||||||
desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to instance thumbnail
|
desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to server thumbnail
|
||||||
title: Hero image
|
title: Hero image
|
||||||
mascot:
|
mascot:
|
||||||
desc_html: Displayed on multiple pages. At least 293×205px recommended. When not set, falls back to default mascot
|
desc_html: Displayed on multiple pages. At least 293×205px recommended. When not set, falls back to default mascot
|
||||||
title: Mascot image
|
title: Mascot image
|
||||||
peers_api_enabled:
|
peers_api_enabled:
|
||||||
desc_html: Domain names this instance has encountered in the fediverse
|
desc_html: Domain names this server has encountered in the fediverse
|
||||||
title: Publish list of discovered instances
|
title: Publish list of discovered servers
|
||||||
preview_sensitive_media:
|
preview_sensitive_media:
|
||||||
desc_html: Link previews on other websites will display a thumbnail even if the media is marked as sensitive
|
desc_html: Link previews on other websites will display a thumbnail even if the media is marked as sensitive
|
||||||
title: Show sensitive media in OpenGraph previews
|
title: Show sensitive media in OpenGraph previews
|
||||||
|
@ -437,20 +437,20 @@ squeak:
|
||||||
title: Show staff badge
|
title: Show staff badge
|
||||||
site_description:
|
site_description:
|
||||||
desc_html: Introductory paragraph on the frontpage. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular <code><a></code> and <code><em></code>.
|
desc_html: Introductory paragraph on the frontpage. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular <code><a></code> and <code><em></code>.
|
||||||
title: Instance description
|
title: Server description
|
||||||
site_description_extended:
|
site_description_extended:
|
||||||
desc_html: A good place for your code of conduct, rules, guidelines and other things that set your instance apart. You can use HTML tags
|
desc_html: A good place for your code of conduct, rules, guidelines and other things that set your server apart. You can use HTML tags
|
||||||
title: Custom extended information
|
title: Custom extended information
|
||||||
site_short_description:
|
site_short_description:
|
||||||
desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph. If empty, defaults to instance description.
|
desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph.
|
||||||
title: Short instance description
|
title: Short server description
|
||||||
site_terms:
|
site_terms:
|
||||||
desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML tags
|
desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML tags
|
||||||
title: Custom terms of service
|
title: Custom terms of service
|
||||||
site_title: Instance name
|
site_title: Server name
|
||||||
thumbnail:
|
thumbnail:
|
||||||
desc_html: Used for previews via OpenGraph and API. 1200x630px recommended
|
desc_html: Used for previews via OpenGraph and API. 1200x630px recommended
|
||||||
title: Instance thumbnail
|
title: Server thumbnail
|
||||||
timeline_preview:
|
timeline_preview:
|
||||||
desc_html: Display public timeline on landing page
|
desc_html: Display public timeline on landing page
|
||||||
title: Timeline preview
|
title: Timeline preview
|
||||||
|
@ -532,7 +532,7 @@ squeak:
|
||||||
cas: CAS
|
cas: CAS
|
||||||
saml: SAML
|
saml: SAML
|
||||||
register: Sign up
|
register: Sign up
|
||||||
register_elsewhere: Sign up on another server
|
registration_closed: "%{instance} is not accepting new members"
|
||||||
resend_confirmation: Resend confirmation instructions
|
resend_confirmation: Resend confirmation instructions
|
||||||
reset_password: Reset password
|
reset_password: Reset password
|
||||||
security: Security
|
security: Security
|
||||||
|
@ -569,7 +569,7 @@ squeak:
|
||||||
description_html: This will <strong>permanently, irreversibly</strong> remove content from your account and deactivate it. Your username will remain reserved to prevent future impersonations.
|
description_html: This will <strong>permanently, irreversibly</strong> remove content from your account and deactivate it. Your username will remain reserved to prevent future impersonations.
|
||||||
proceed: Delete account
|
proceed: Delete account
|
||||||
success_msg: Your account was successfully deleted
|
success_msg: Your account was successfully deleted
|
||||||
warning_html: Only deletion of content from this particular instance is guaranteed. Content that has been widely shared is likely to leave traces. Offline servers and servers that have unsubscribed from your updates will not update their databases.
|
warning_html: Only deletion of content from this particular server is guaranteed. Content that has been widely shared is likely to leave traces. Offline servers and servers that have unsubscribed from your updates will not update their databases.
|
||||||
warning_title: Disseminated content availability
|
warning_title: Disseminated content availability
|
||||||
directories:
|
directories:
|
||||||
directory: Profile directory
|
directory: Profile directory
|
||||||
|
@ -583,8 +583,8 @@ squeak:
|
||||||
other: "%{count} people"
|
other: "%{count} people"
|
||||||
errors:
|
errors:
|
||||||
'403': You don't have permission to view this page.
|
'403': You don't have permission to view this page.
|
||||||
'404': The page you were looking for doesn't exist.
|
'404': The page you are looking for isn't here.
|
||||||
'410': The page you were looking for doesn't exist anymore.
|
'410': The page you were looking for doesn't exist here anymore.
|
||||||
'422':
|
'422':
|
||||||
content: Security verification failed. Are you blocking cookies?
|
content: Security verification failed. Are you blocking cookies?
|
||||||
title: Security verification failed
|
title: Security verification failed
|
||||||
|
@ -696,7 +696,7 @@ squeak:
|
||||||
one: 1 use
|
one: 1 use
|
||||||
other: "%{count} uses"
|
other: "%{count} uses"
|
||||||
max_uses_prompt: No limit
|
max_uses_prompt: No limit
|
||||||
prompt: Generate and share links with others to grant access to this instance
|
prompt: Generate and share links with others to grant access to this server
|
||||||
table:
|
table:
|
||||||
expires_at: Expires
|
expires_at: Expires
|
||||||
uses: Uses
|
uses: Uses
|
||||||
|
@ -909,6 +909,13 @@ squeak:
|
||||||
vote: Vote
|
vote: Vote
|
||||||
show_more: Show more
|
show_more: Show more
|
||||||
sign_in_to_participate: Sign in to participate in the conversation
|
sign_in_to_participate: Sign in to participate in the conversation
|
||||||
|
strip_formatting:
|
||||||
|
all: All
|
||||||
|
all_long: Strip all advanced formatting
|
||||||
|
blocks: Block elements
|
||||||
|
blocks_long: Strip formatting for title headers and block quotes
|
||||||
|
none: None
|
||||||
|
none_long: Do not strip any formatting supported by Mastodon
|
||||||
title: '%{name}: "%{quote}"'
|
title: '%{name}: "%{quote}"'
|
||||||
visibilities:
|
visibilities:
|
||||||
private: Followers-only
|
private: Followers-only
|
||||||
|
@ -1065,7 +1072,7 @@ squeak:
|
||||||
final_action: Start posting
|
final_action: Start posting
|
||||||
final_step: 'Start posting! Even without followers your public messages may be seen by others, for example on the local timeline and in hashtags. You may want to introduce yourself on the #introductions hashtag.'
|
final_step: 'Start posting! Even without followers your public messages may be seen by others, for example on the local timeline and in hashtags. You may want to introduce yourself on the #introductions hashtag.'
|
||||||
full_handle: Your full handle
|
full_handle: Your full handle
|
||||||
full_handle_hint: This is what you would tell your friends so they can message or follow you from another instance.
|
full_handle_hint: This is what you would tell your friends so they can message or follow you from another server.
|
||||||
review_preferences_action: Change preferences
|
review_preferences_action: Change preferences
|
||||||
review_preferences_step: Make sure to set your preferences, such as which emails you'd like to receive, or what privacy level you’d like your posts to default to. If you don’t have motion sickness, you could choose to enable GIF autoplay.
|
review_preferences_step: Make sure to set your preferences, such as which emails you'd like to receive, or what privacy level you’d like your posts to default to. If you don’t have motion sickness, you could choose to enable GIF autoplay.
|
||||||
subject: Welcome to Mastodon
|
subject: Welcome to Mastodon
|
||||||
|
|
|
@ -31,6 +31,7 @@ defaults: &defaults
|
||||||
noindex: false
|
noindex: false
|
||||||
theme: 'mastodon'
|
theme: 'mastodon'
|
||||||
aggregate_reblogs: true
|
aggregate_reblogs: true
|
||||||
|
strip_formatting: 'none'
|
||||||
notification_emails:
|
notification_emails:
|
||||||
follow: false
|
follow: false
|
||||||
reblog: false
|
reblog: false
|
||||||
|
|
Loading…
Reference in a new issue