@ -142,11 +142,8 @@ class CommunityTimeline extends PureComponent {
<ColumnSettingsContainercolumnId={columnId}/>
</ColumnHeader>
<DismissableBannerid='community_timeline'>
<FormattedMessageid='dismissable_banner.community_timeline'defaultMessage='These are the most recent public posts from people whose accounts are hosted by {domain}.'values={{domain}}/>
</DismissableBanner>
<StatusListContainer
prepend={<DismissableBannerid='community_timeline'><FormattedMessageid='dismissable_banner.community_timeline'defaultMessage='These are the most recent public posts from people whose accounts are hosted by {domain}.'values={{domain}}/></DismissableBanner>}
@ -35,7 +35,7 @@ class Links extends PureComponent {
constbanner=(
<DismissableBannerid='explore/links'>
<FormattedMessageid='dismissable_banner.explore_links'defaultMessage='These news stories are being talked about by people on this and other servers of the decentralized network right now.' />
<FormattedMessageid='dismissable_banner.explore_links'defaultMessage='These are news stories being shared the most on the social web today. Newer news stories posted by more different people are ranked higher.' />
@ -46,7 +47,7 @@ class Statuses extends PureComponent {
return(
<>
<DismissableBannerid='explore/statuses'>
<FormattedMessageid='dismissable_banner.explore_statuses'defaultMessage='These posts from this and other servers in the decentralized network are gaining traction on this server right now.' />
<FormattedMessageid='dismissable_banner.explore_statuses'defaultMessage='These are posts from across the social web that are gaining traction today. Newer posts with more boosts and favourites are ranked higher.' />
@ -36,7 +36,7 @@ class Tags extends PureComponent {
constbanner=(
<DismissableBannerid='explore/tags'>
<FormattedMessageid='dismissable_banner.explore_tags'defaultMessage='These hashtags are gaining traction among people on this and other servers of the decentralized network right now.' />
<FormattedMessageid='dismissable_banner.explore_tags'defaultMessage='These are hashtags that are gaining traction on the social web today. Hashtags that are used by more different people are ranked higher.' />
<h1><FormattedMessageid='home.explore_prompt.title'defaultMessage='This is your home base within Mastodon.'/></h1>
<p><FormattedMessageid='home.explore_prompt.body'defaultMessage="Your home feed will have a mix of posts from the hashtags you've chosen to follow, the people you've chosen to follow, and the posts they boost. It's looking pretty quiet right now, so how about:"/></p>
<Linkto='/explore/suggestions'className='button button-tertiary'><FormattedMessageid='home.actions.go_to_suggestions'defaultMessage='Find people to follow'/></Link>
@ -161,11 +190,13 @@ class HomeTimeline extends PureComponent {
{signedIn?(
<StatusListContainer
prepend={banner}
alwaysPrepend
trackScroll={!pinned}
scrollKey={`home_timeline-${columnId}`}
onLoadMore={this.handleLoadMore}
timelineId='home'
emptyMessage={<FormattedMessageid='empty_column.home'defaultMessage='Your home timeline is empty! Follow more people to fill it up. {suggestions}'values={{suggestions:<Linkto='/start'><FormattedMessageid='empty_column.home.suggestions'defaultMessage='See some suggestions'/></Link>}}/>}
emptyMessage={<FormattedMessageid='empty_column.home'defaultMessage='Your home timeline is empty! Follow more people to fill it up.' />}
@ -146,11 +146,8 @@ class PublicTimeline extends PureComponent {
<ColumnSettingsContainercolumnId={columnId}/>
</ColumnHeader>
<DismissableBannerid='public_timeline'>
<FormattedMessageid='dismissable_banner.public_timeline'defaultMessage='These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.'/>
</DismissableBanner>
<StatusListContainer
prepend={<DismissableBannerid='public_timeline'><FormattedMessageid='dismissable_banner.public_timeline'defaultMessage='These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.'/></DismissableBanner>}
@ -140,11 +140,8 @@ class CommunityTimeline extends PureComponent {
<ColumnSettingsContainercolumnId={columnId}/>
</ColumnHeader>
<DismissableBannerid='community_timeline'>
<FormattedMessageid='dismissable_banner.community_timeline'defaultMessage='These are the most recent public posts from people whose accounts are hosted by {domain}.'values={{domain}}/>
</DismissableBanner>
<StatusListContainer
prepend={<DismissableBannerid='community_timeline'><FormattedMessageid='dismissable_banner.community_timeline'defaultMessage='These are the most recent public posts from people whose accounts are hosted by {domain}.'values={{domain}}/></DismissableBanner>}
@ -35,7 +35,7 @@ class Links extends PureComponent {
constbanner=(
<DismissableBannerid='explore/links'>
<FormattedMessageid='dismissable_banner.explore_links'defaultMessage='These news stories are being talked about by people on this and other servers of the decentralized network right now.' />
<FormattedMessageid='dismissable_banner.explore_links'defaultMessage='These are news stories being shared the most on the social web today. Newer news stories posted by more different people are ranked higher.' />
@ -46,7 +47,7 @@ class Statuses extends PureComponent {
return(
<>
<DismissableBannerid='explore/statuses'>
<FormattedMessageid='dismissable_banner.explore_statuses'defaultMessage='These posts from this and other servers in the decentralized network are gaining traction on this server right now.' />
<FormattedMessageid='dismissable_banner.explore_statuses'defaultMessage='These are posts from across the social web that are gaining traction today. Newer posts with more boosts and favourites are ranked higher.' />
@ -34,7 +34,7 @@ class Tags extends PureComponent {
constbanner=(
<DismissableBannerid='explore/tags'>
<FormattedMessageid='dismissable_banner.explore_tags'defaultMessage='These hashtags are gaining traction among people on this and other servers of the decentralized network right now.' />
<FormattedMessageid='dismissable_banner.explore_tags'defaultMessage='These are hashtags that are gaining traction on the social web today. Hashtags that are used by more different people are ranked higher.' />
<h1><FormattedMessageid='home.explore_prompt.title'defaultMessage='This is your home base within Mastodon.'/></h1>
<p><FormattedMessageid='home.explore_prompt.body'defaultMessage="Your home feed will have a mix of posts from the hashtags you've chosen to follow, the people you've chosen to follow, and the posts they boost. It's looking pretty quiet right now, so how about:"/></p>
<Linkto='/explore/suggestions'className='button button-tertiary'><FormattedMessageid='home.actions.go_to_suggestions'defaultMessage='Find people to follow'/></Link>
@ -160,11 +189,13 @@ class HomeTimeline extends PureComponent {
{signedIn?(
<StatusListContainer
prepend={banner}
alwaysPrepend
trackScroll={!pinned}
scrollKey={`home_timeline-${columnId}`}
onLoadMore={this.handleLoadMore}
timelineId='home'
emptyMessage={<FormattedMessageid='empty_column.home'defaultMessage='Your home timeline is empty! Follow more people to fill it up. {suggestions}'values={{suggestions:<Linkto='/start'><FormattedMessageid='empty_column.home.suggestions'defaultMessage='See some suggestions'/></Link>}}/>}
emptyMessage={<FormattedMessageid='empty_column.home'defaultMessage='Your home timeline is empty! Follow more people to fill it up.' />}
@ -58,7 +48,7 @@ class Follows extends PureComponent {
}elseif(suggestions.isEmpty()){
loadedContent=<divclassName='follow-recommendations__empty'><FormattedMessageid='onboarding.follows.empty'defaultMessage='Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.'/></div>;
@ -71,8 +61,6 @@ class Follows extends PureComponent {
<p><FormattedMessageid='onboarding.follows.lead'defaultMessage='You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!'/></p>
@ -122,21 +123,22 @@ class Onboarding extends ImmutablePureComponent {
<divclassName='onboarding__steps'>
<SteponClick={this.handleProfileClick}href='/settings/profile'completed={(!account.get('avatar').endsWith('missing.png'))||(account.get('display_name').length>0&&account.get('note').length>0)}icon='address-book-o'label={<FormattedMessageid='onboarding.steps.setup_profile.title'defaultMessage='Customize your profile'/>}description={<FormattedMessageid='onboarding.steps.setup_profile.body'defaultMessage='Others are more likely to interact with you with a filled out profile.'/>}/>
<SteponClick={this.handleFollowClick}completed={(account.get('following_count')*1)>=7}icon='user-plus'label={<FormattedMessageid='onboarding.steps.follow_people.title'defaultMessage='Find at least {count, plural, one {one person} other {# people}} to follow'values={{count:7}}/>}description={<FormattedMessageid='onboarding.steps.follow_people.body'defaultMessage="You curate your own home feed. Let's fill it with interesting people."/>}/>
<SteponClick={this.handleComposeClick}completed={(account.get('statuses_count')*1)>=1}icon='pencil-square-o'label={<FormattedMessageid='onboarding.steps.publish_status.title'defaultMessage='Make your first post'/>}description={<FormattedMessageid='onboarding.steps.publish_status.body'defaultMessage='Say hello to the world.'/>}/>
<SteponClick={this.handleComposeClick}completed={(account.get('statuses_count')*1)>=1}icon='pencil-square-o'label={<FormattedMessageid='onboarding.steps.publish_status.title'defaultMessage='Make your first post'/>}description={<FormattedMessageid='onboarding.steps.publish_status.body'defaultMessage='Say hello to the world.'values={{emoji:<imgclassName='emojione'alt='🐘'src={`${assetHost}/emoji/1f418.svg`}/>}}/>}/>
<SteponClick={this.handleShareClick}completed={shareClicked}icon='copy'label={<FormattedMessageid='onboarding.steps.share_profile.title'defaultMessage='Share your profile'/>}description={<FormattedMessageid='onboarding.steps.share_profile.body'defaultMessage='Let your friends know how to find you on Mastodon!'/>}/>
</div>
<pclassName='onboarding__lead'><FormattedMessageid='onboarding.start.skip'defaultMessage='Want to skip right ahead?'/></p>
<pclassName='onboarding__lead'><FormattedMessageid='onboarding.start.skip'defaultMessage="Don't need help getting started?"/></p>
<divclassName='onboarding__links'>
<Linkto='/explore'className='onboarding__link'>
<FormattedMessageid='onboarding.actions.go_to_explore'defaultMessage='Take me to trending'/>
<buttonclassName='link-button'onClick={this.handleClose}><FormattedMessageid='onboarding.actions.close'defaultMessage="Don't show this screen again"/></button>
<Linkto='/home'className='onboarding__link'>
<FormattedMessageid='onboarding.actions.go_to_home'defaultMessage='Take me to my home feed'/>
@ -142,11 +142,8 @@ class PublicTimeline extends PureComponent {
<ColumnSettingsContainercolumnId={columnId}/>
</ColumnHeader>
<DismissableBannerid='public_timeline'>
<FormattedMessageid='dismissable_banner.public_timeline'defaultMessage='These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.'/>
</DismissableBanner>
<StatusListContainer
prepend={<DismissableBannerid='public_timeline'><FormattedMessageid='dismissable_banner.public_timeline'defaultMessage='These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.'/></DismissableBanner>}
"account.open_original_page":"Open original page",
"account.posts":"Posts",
"account.posts_with_replies":"Posts and replies",
@ -197,9 +198,9 @@
"disabled_account_banner.text":"Your account {disabledAccount} is currently disabled.",
"dismissable_banner.community_timeline":"These are the most recent public posts from people whose accounts are hosted by {domain}.",
"dismissable_banner.dismiss":"Dismiss",
"dismissable_banner.explore_links":"These news stories are being talked about by people on this and other servers of the decentralized network right now.",
"dismissable_banner.explore_statuses":"These posts from this and other servers in the decentralized network are gaining traction on this server right now.",
"dismissable_banner.explore_tags":"These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
"dismissable_banner.explore_links":"These are news stories being shared the most on the social web today. Newer news stories posted by more different people are ranked higher.",
"dismissable_banner.explore_statuses":"These are posts from across the social web that are gaining traction today. Newer posts with more boosts and favourites are ranked higher.",
"dismissable_banner.explore_tags":"These are hashtags that are gaining traction on the social web today. Hashtags that are used by more different people are ranked higher.",
"dismissable_banner.public_timeline":"These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.",
"embed.instructions":"Embed this post on your website by copying the code below.",
"embed.preview":"Here is what it will look like:",
@ -232,8 +233,7 @@
"empty_column.follow_requests":"You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.followed_tags":"You have not followed any hashtags yet. When you do, they will show up here.",
"empty_column.hashtag":"There is nothing in this hashtag yet.",
"empty_column.home":"Your home timeline is empty! Follow more people to fill it up. {suggestions}",
"empty_column.home.suggestions":"See some suggestions",
"empty_column.home":"Your home timeline is empty! Follow more people to fill it up.",
"empty_column.list":"There is nothing in this list yet. When members of this list publish new posts, they will appear here.",
"empty_column.lists":"You don't have any lists yet. When you create one, it will show up here.",
"empty_column.mutes":"You haven't muted any users yet.",
@ -292,9 +292,13 @@
"hashtag.column_settings.tag_toggle":"Include additional tags for this column",
"home.explore_prompt.body":"Your home feed will have a mix of posts from the hashtags you've chosen to follow, the people you've chosen to follow, and the posts they boost. It's looking pretty quiet right now, so how about:",
"home.explore_prompt.title":"This is your home base within Mastodon.",
"home.hide_announcements":"Hide announcements",
"home.show_announcements":"Show announcements",
"interaction_modal.description.favourite":"With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.",
@ -449,28 +453,27 @@
"notifications_permission_banner.title":"Never miss a thing",
"onboarding.action.back":"Take me back",
"onboarding.actions.back":"Take me back",
"onboarding.actions.close":"Don't show this screen again",
"onboarding.actions.go_to_home":"Go to your home feed",
"onboarding.actions.go_to_explore":"Take me to trending",
"onboarding.actions.go_to_home":"Take me to my home feed",
"onboarding.compose.template":"Hello #Mastodon!",
"onboarding.follows.empty":"Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead":"You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title":"Popular on Mastodon",
"onboarding.follows.lead":"Your home feed is the primary way to experience Mastodon. The more people you follow, the more active and interesting it will be. To get you started, here are some suggestions:",
"onboarding.follows.title":"Personalize your home feed",
"onboarding.share.lead":"Let people know how they can find you on Mastodon!",
"onboarding.share.message":"I'm {username} on #Mastodon! Come follow me at {url}",
"onboarding.share.next_steps":"Possible next steps:",
"onboarding.share.title":"Share your profile",
"onboarding.start.lead":"Your new Mastodon account is ready to go. Here's how you can make the most of it:",
"onboarding.start.skip":"Want to skip right ahead?",
"onboarding.start.lead":"You're now part of Mastodon, a unique, decentralized social media platform where you—not an algorithm—curate your own experience. Let's get you started on this new social frontier:",
"onboarding.start.skip":"Don't need help getting started?",
"onboarding.start.title":"You've made it!",
"onboarding.steps.follow_people.body":"You curate your own home feed. Let's fill it with interesting people.",
"onboarding.steps.follow_people.title":"Find at least {count, plural, one {one person} other {# people}} to follow",
"onboarding.steps.publish_status.body":"Say hello to the world.",
"onboarding.steps.follow_people.body":"Following interesting people is what Mastodon is all about.",
"onboarding.steps.follow_people.title":"Personalize your home feed",
"onboarding.steps.publish_status.body":"Say hello to the world with text, photos, videos, or polls {emoji}",
"onboarding.steps.publish_status.title":"Make your first post",
"onboarding.steps.setup_profile.body":"Others are more likely to interact with you with a filled out profile.",
"onboarding.steps.setup_profile.title":"Customize your profile",
"onboarding.steps.share_profile.body":"Let your friends know how to find you on Mastodon!",
"onboarding.steps.share_profile.title":"Share your profile",
"onboarding.steps.setup_profile.body":"Boost your interactions by having a comprehensive profile.",
"onboarding.steps.setup_profile.title":"Personalize your profile",
"onboarding.steps.share_profile.body":"Let your friends know how to find you on Mastodon",
"onboarding.steps.share_profile.title":"Share your Mastodon profile",
"onboarding.tips.2fa":"<strong>Did you know?</strong> You can secure your account by setting up two-factor authentication in your account settings. It works with any TOTP app of your choice, no phone number necessary!",
"onboarding.tips.accounts_from_other_servers":"<strong>Did you know?</strong> Since Mastodon is decentralized, some profiles you come across will be hosted on servers other than yours. And yet you can interact with them seamlessly! Their server is in the second half of their username!",
"onboarding.tips.migration":"<strong>Did you know?</strong> If you feel like {domain} is not a great server choice for you in the future, you can move to another Mastodon server without losing your followers. You can even host your own server!",
raiseArgumentError,"Invalid value for setting #{key}: #{typecast_value}"ifsetting_definition.in.present?&&setting_definition.in.exclude?(typecast_value)