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_aggregate_reblogs,
|
||||
:setting_show_application,
|
||||
:setting_strip_formatting,
|
||||
notification_emails: %i(follow follow_request reblog favourite mention digest report pending_account),
|
||||
interactions: %i(must_be_follower must_be_following)
|
||||
)
|
||||
|
|
|
@ -132,6 +132,17 @@ module StreamEntriesHelper
|
|||
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)
|
||||
classes = ['entry']
|
||||
classes << 'entry-predecessor' if is_predecessor
|
||||
|
|
|
@ -6,6 +6,7 @@ import { FormattedMessage } from 'react-intl';
|
|||
import Permalink from './permalink';
|
||||
import classnames from 'classnames';
|
||||
import Icon from 'mastodon/components/icon';
|
||||
import { stripFormatting } from 'mastodon/initial_state';
|
||||
|
||||
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-spoiler': status.get('spoiler_text').length > 0,
|
||||
'status__content--collapsed': this.state.collapsed === true,
|
||||
'rich-text': stripFormatting !== 'all',
|
||||
'rich-blocks': stripFormatting === 'none',
|
||||
});
|
||||
|
||||
if (isRtl(status.get('search_index'))) {
|
||||
|
@ -218,7 +221,7 @@ export default class StatusContent extends React.PureComponent {
|
|||
<div
|
||||
tabIndex='0'
|
||||
ref={this.setRef}
|
||||
className='status__content'
|
||||
className={classNames}
|
||||
style={directionStyle}
|
||||
dangerouslySetInnerHTML={content}
|
||||
lang={status.get('language')}
|
||||
|
|
|
@ -19,5 +19,6 @@ export const version = getMeta('version');
|
|||
export const mascot = getMeta('mascot');
|
||||
export const profile_directory = getMeta('profile_directory');
|
||||
export const isStaff = getMeta('is_staff');
|
||||
export const stripFormatting = getMeta('strip_formatting');
|
||||
|
||||
export default initialState;
|
||||
|
|
|
@ -667,10 +667,6 @@
|
|||
|
||||
&.status__content--with-spoiler {
|
||||
white-space: normal;
|
||||
|
||||
.status__content__text {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
}
|
||||
|
||||
.emojione {
|
||||
|
@ -679,7 +675,9 @@
|
|||
margin: -3px 0 0;
|
||||
}
|
||||
|
||||
p {
|
||||
p,
|
||||
pre,
|
||||
blockquote {
|
||||
margin-bottom: 20px;
|
||||
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 {
|
||||
color: $secondary-text-color;
|
||||
text-decoration: none;
|
||||
|
|
|
@ -20,11 +20,13 @@ class Sanitize
|
|||
end
|
||||
|
||||
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: {
|
||||
'a' => %w(href rel class),
|
||||
'span' => %w(class),
|
||||
'a' => %w(href rel class title),
|
||||
'span' => %w(class),
|
||||
'abbr' => %w(title),
|
||||
'blockquote' => %w(cite),
|
||||
},
|
||||
|
||||
add_attributes: {
|
||||
|
@ -35,7 +37,8 @@ class Sanitize
|
|||
},
|
||||
|
||||
protocols: {
|
||||
'a' => { 'href' => HTTP_PROTOCOLS },
|
||||
'a' => { 'href' => HTTP_PROTOCOLS },
|
||||
'blockquote' => { 'cite' => HTTP_PROTOCOLS },
|
||||
},
|
||||
|
||||
transformers: [
|
||||
|
|
|
@ -33,6 +33,7 @@ class UserSettingsDecorator
|
|||
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['show_application'] = show_application_preference if change?('setting_show_application')
|
||||
user.settings['strip_formatting'] = strip_formatting_preference if change?('setting_strip_formatting')
|
||||
end
|
||||
|
||||
def merged_notification_emails
|
||||
|
@ -107,6 +108,10 @@ class UserSettingsDecorator
|
|||
boolean_cast_setting 'setting_aggregate_reblogs'
|
||||
end
|
||||
|
||||
def strip_formatting_preference
|
||||
settings['setting_strip_formatting']
|
||||
end
|
||||
|
||||
def boolean_cast_setting(key)
|
||||
ActiveModel::Type::Boolean.new.cast(settings[key])
|
||||
end
|
||||
|
|
|
@ -104,7 +104,8 @@ class User < ApplicationRecord
|
|||
|
||||
delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :delete_modal,
|
||||
: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_writer :external
|
||||
|
|
|
@ -23,15 +23,16 @@ class InitialStateSerializer < ActiveModel::Serializer
|
|||
}
|
||||
|
||||
if object.current_account
|
||||
store[:me] = object.current_account.id.to_s
|
||||
store[:unfollow_modal] = object.current_account.user.setting_unfollow_modal
|
||||
store[:boost_modal] = object.current_account.user.setting_boost_modal
|
||||
store[:delete_modal] = object.current_account.user.setting_delete_modal
|
||||
store[:auto_play_gif] = object.current_account.user.setting_auto_play_gif
|
||||
store[:display_media] = object.current_account.user.setting_display_media
|
||||
store[:expand_spoilers] = object.current_account.user.setting_expand_spoilers
|
||||
store[:reduce_motion] = object.current_account.user.setting_reduce_motion
|
||||
store[:is_staff] = object.current_account.user.staff?
|
||||
store[:me] = object.current_account.id.to_s
|
||||
store[:unfollow_modal] = object.current_account.user.setting_unfollow_modal
|
||||
store[:boost_modal] = object.current_account.user.setting_boost_modal
|
||||
store[:delete_modal] = object.current_account.user.setting_delete_modal
|
||||
store[:auto_play_gif] = object.current_account.user.setting_auto_play_gif
|
||||
store[:display_media] = object.current_account.user.setting_display_media
|
||||
store[:expand_spoilers] = object.current_account.user.setting_expand_spoilers
|
||||
store[:reduce_motion] = object.current_account.user.setting_reduce_motion
|
||||
store[:is_staff] = object.current_account.user.staff?
|
||||
store[:strip_formatting] = object.current_account.user.setting_strip_formatting
|
||||
end
|
||||
|
||||
store
|
||||
|
|
|
@ -7,6 +7,7 @@ class REST::PreferencesSerializer < ActiveModel::Serializer
|
|||
|
||||
attribute :reading_default_sensitive_media, key: 'reading:expand:media'
|
||||
attribute :reading_default_sensitive_text, key: 'reading:expand:spoilers'
|
||||
attribute :reading_strip_formatting, key: 'reading:formatting:strip'
|
||||
|
||||
def posting_default_privacy
|
||||
object.user.setting_default_privacy
|
||||
|
@ -27,4 +28,8 @@ class REST::PreferencesSerializer < ActiveModel::Serializer
|
|||
def reading_default_sensitive_text
|
||||
object.user.setting_expand_spoilers
|
||||
end
|
||||
|
||||
def reading_strip_formatting
|
||||
object.user.setting_strip_formatting
|
||||
end
|
||||
end
|
||||
|
|
|
@ -55,6 +55,7 @@
|
|||
= f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label
|
||||
|
||||
.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_expand_spoilers, as: :boolean, wrapper: :with_label
|
||||
= f.input :setting_reduce_motion, as: :boolean, wrapper: :with_label
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
= account_action_button(status.account)
|
||||
|
||||
.status__content.emojify<
|
||||
.status__content.emojify{ class: text_formatting_classes }<
|
||||
- if status.spoiler_text?
|
||||
%p{ :style => ('margin-bottom: 0' unless current_account&.user&.setting_expand_spoilers) }<
|
||||
%span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)}
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
%span.display-name__account
|
||||
= acct(status.account)
|
||||
= fa_icon('lock') if status.account.locked?
|
||||
.status__content.emojify<
|
||||
.status__content.emojify{ class: text_formatting_classes }<
|
||||
- if status.spoiler_text?
|
||||
%p{ :style => ('margin-bottom: 0' unless current_account&.user&.setting_expand_spoilers) }<
|
||||
%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
|
||||
title: Custom CSS
|
||||
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
|
||||
mascot:
|
||||
desc_html: Displayed on multiple pages. At least 293×205px recommended. When not set, falls back to default mascot
|
||||
title: Mascot image
|
||||
peers_api_enabled:
|
||||
desc_html: Domain names this instance has encountered in the fediverse
|
||||
title: Publish list of discovered instances
|
||||
desc_html: Domain names this server has encountered in the fediverse
|
||||
title: Publish list of discovered servers
|
||||
preview_sensitive_media:
|
||||
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
|
||||
|
@ -437,20 +437,20 @@ dog:
|
|||
title: Show staff badge
|
||||
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>.
|
||||
title: Instance description
|
||||
title: Server description
|
||||
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
|
||||
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.
|
||||
title: Short 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 server description
|
||||
site_terms:
|
||||
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
|
||||
site_title: Instance name
|
||||
site_title: Server name
|
||||
thumbnail:
|
||||
desc_html: Used for previews via OpenGraph and API. 1200x630px recommended
|
||||
title: Instance thumbnail
|
||||
title: Server thumbnail
|
||||
timeline_preview:
|
||||
desc_html: Display public timeline on landing page
|
||||
title: Timeline preview
|
||||
|
@ -696,7 +696,7 @@ dog:
|
|||
one: 1 use
|
||||
other: "%{count} uses"
|
||||
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:
|
||||
expires_at: Expires
|
||||
uses: Uses
|
||||
|
@ -909,6 +909,13 @@ dog:
|
|||
vote: Vote
|
||||
show_more: Show more
|
||||
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}"'
|
||||
visibilities:
|
||||
private: Followers-only
|
||||
|
@ -1065,7 +1072,7 @@ dog:
|
|||
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.'
|
||||
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_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
|
||||
|
|
|
@ -909,6 +909,13 @@ en:
|
|||
vote: Vote
|
||||
show_more: Show more
|
||||
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}"'
|
||||
visibilities:
|
||||
private: Followers-only
|
||||
|
|
|
@ -399,14 +399,14 @@ lion:
|
|||
desc_html: Modify the look with CSS loaded on every page
|
||||
title: Custom CSS
|
||||
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
|
||||
mascot:
|
||||
desc_html: Displayed on multiple pages. At least 293×205px recommended. When not set, falls back to default mascot
|
||||
title: Mascot image
|
||||
peers_api_enabled:
|
||||
desc_html: Domain names this instance has encountered in the fediverse
|
||||
title: Publish list of discovered instances
|
||||
desc_html: Domain names this server has encountered in the fediverse
|
||||
title: Publish list of discovered servers
|
||||
preview_sensitive_media:
|
||||
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
|
||||
|
@ -437,20 +437,20 @@ lion:
|
|||
title: Show staff badge
|
||||
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>.
|
||||
title: Instance description
|
||||
title: Server description
|
||||
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
|
||||
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.
|
||||
title: Short 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 server description
|
||||
site_terms:
|
||||
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
|
||||
site_title: Instance name
|
||||
site_title: Server name
|
||||
thumbnail:
|
||||
desc_html: Used for previews via OpenGraph and API. 1200x630px recommended
|
||||
title: Instance thumbnail
|
||||
title: Server thumbnail
|
||||
timeline_preview:
|
||||
desc_html: Display public timeline on landing page
|
||||
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.
|
||||
proceed: Delete account
|
||||
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
|
||||
directories:
|
||||
directory: Profile directory
|
||||
|
@ -696,7 +696,7 @@ lion:
|
|||
one: 1 use
|
||||
other: "%{count} uses"
|
||||
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:
|
||||
expires_at: Expires
|
||||
uses: Uses
|
||||
|
@ -909,6 +909,13 @@ lion:
|
|||
vote: Vote
|
||||
show_more: Show more
|
||||
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}"'
|
||||
visibilities:
|
||||
private: Followers-only
|
||||
|
@ -1065,7 +1072,7 @@ lion:
|
|||
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.'
|
||||
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_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
|
||||
|
|
|
@ -106,6 +106,7 @@ dog:
|
|||
setting_noindex: Opt-out of search engine indexing
|
||||
setting_reduce_motion: Reduce motion in animations
|
||||
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_theme: Site theme
|
||||
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
|
||||
|
|
|
@ -106,6 +106,7 @@ en:
|
|||
setting_noindex: Opt-out of search engine indexing
|
||||
setting_reduce_motion: Reduce motion in animations
|
||||
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_theme: Site theme
|
||||
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
|
||||
|
|
|
@ -106,6 +106,7 @@ lion:
|
|||
setting_noindex: Opt-out of search engine indexing
|
||||
setting_reduce_motion: Reduce motion in animations
|
||||
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_theme: Site theme
|
||||
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
|
||||
|
|
|
@ -106,6 +106,7 @@ squeak:
|
|||
setting_noindex: Opt-out of search engine indexing
|
||||
setting_reduce_motion: Reduce motion in animations
|
||||
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_theme: Site theme
|
||||
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
|
||||
title: Custom CSS
|
||||
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
|
||||
mascot:
|
||||
desc_html: Displayed on multiple pages. At least 293×205px recommended. When not set, falls back to default mascot
|
||||
title: Mascot image
|
||||
peers_api_enabled:
|
||||
desc_html: Domain names this instance has encountered in the fediverse
|
||||
title: Publish list of discovered instances
|
||||
desc_html: Domain names this server has encountered in the fediverse
|
||||
title: Publish list of discovered servers
|
||||
preview_sensitive_media:
|
||||
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
|
||||
|
@ -437,20 +437,20 @@ squeak:
|
|||
title: Show staff badge
|
||||
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>.
|
||||
title: Instance description
|
||||
title: Server description
|
||||
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
|
||||
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.
|
||||
title: Short 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 server description
|
||||
site_terms:
|
||||
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
|
||||
site_title: Instance name
|
||||
site_title: Server name
|
||||
thumbnail:
|
||||
desc_html: Used for previews via OpenGraph and API. 1200x630px recommended
|
||||
title: Instance thumbnail
|
||||
title: Server thumbnail
|
||||
timeline_preview:
|
||||
desc_html: Display public timeline on landing page
|
||||
title: Timeline preview
|
||||
|
@ -532,7 +532,7 @@ squeak:
|
|||
cas: CAS
|
||||
saml: SAML
|
||||
register: Sign up
|
||||
register_elsewhere: Sign up on another server
|
||||
registration_closed: "%{instance} is not accepting new members"
|
||||
resend_confirmation: Resend confirmation instructions
|
||||
reset_password: Reset password
|
||||
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.
|
||||
proceed: Delete account
|
||||
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
|
||||
directories:
|
||||
directory: Profile directory
|
||||
|
@ -583,8 +583,8 @@ squeak:
|
|||
other: "%{count} people"
|
||||
errors:
|
||||
'403': You don't have permission to view this page.
|
||||
'404': The page you were looking for doesn't exist.
|
||||
'410': The page you were looking for doesn't exist anymore.
|
||||
'404': The page you are looking for isn't here.
|
||||
'410': The page you were looking for doesn't exist here anymore.
|
||||
'422':
|
||||
content: Security verification failed. Are you blocking cookies?
|
||||
title: Security verification failed
|
||||
|
@ -696,7 +696,7 @@ squeak:
|
|||
one: 1 use
|
||||
other: "%{count} uses"
|
||||
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:
|
||||
expires_at: Expires
|
||||
uses: Uses
|
||||
|
@ -909,6 +909,13 @@ squeak:
|
|||
vote: Vote
|
||||
show_more: Show more
|
||||
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}"'
|
||||
visibilities:
|
||||
private: Followers-only
|
||||
|
@ -1065,7 +1072,7 @@ squeak:
|
|||
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.'
|
||||
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_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
|
||||
|
|
|
@ -31,6 +31,7 @@ defaults: &defaults
|
|||
noindex: false
|
||||
theme: 'mastodon'
|
||||
aggregate_reblogs: true
|
||||
strip_formatting: 'none'
|
||||
notification_emails:
|
||||
follow: false
|
||||
reblog: false
|
||||
|
|
Loading…
Reference in a new issue