Merge branch 'asonix/accept-rich-text' of asonix/mastodon into asonix/changes

This commit is contained in:
Arlo (Hyena) 2019-05-05 00:44:49 +00:00 committed by Gitea
commit 20c2125afa
22 changed files with 292 additions and 60 deletions

View file

@ -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)
) )

View file

@ -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

View file

@ -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')}

View file

@ -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;

View file

@ -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;

View file

@ -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: [

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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)}&nbsp; %span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)}&nbsp;

View file

@ -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)}&nbsp; %span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)}&nbsp;

View file

@ -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>&lt;a&gt;</code> and <code>&lt;em&gt;</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>&lt;a&gt;</code> and <code>&lt;em&gt;</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 youd like your posts to default to. If you dont 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 youd like your posts to default to. If you dont have motion sickness, you could choose to enable GIF autoplay.
subject: Welcome to Mastodon subject: Welcome to Mastodon

View file

@ -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

View file

@ -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>&lt;a&gt;</code> and <code>&lt;em&gt;</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>&lt;a&gt;</code> and <code>&lt;em&gt;</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 youd like your posts to default to. If you dont 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 youd like your posts to default to. If you dont have motion sickness, you could choose to enable GIF autoplay.
subject: Welcome to Mastodon subject: Welcome to Mastodon

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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>&lt;a&gt;</code> and <code>&lt;em&gt;</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>&lt;a&gt;</code> and <code>&lt;em&gt;</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 youd like your posts to default to. If you dont 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 youd like your posts to default to. If you dont have motion sickness, you could choose to enable GIF autoplay.
subject: Welcome to Mastodon subject: Welcome to Mastodon

View file

@ -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