Sync a locale files for JavaScript (#2513)
There are multiple messages missing in en.jsx. It is very troublesome when translating other languages.
This commit is contained in:
parent
1f805a6377
commit
be0a01145b
8 changed files with 55 additions and 24 deletions
|
@ -10,8 +10,8 @@ const messages = defineMessages({
|
||||||
follow: { id: 'account.follow', defaultMessage: 'Follow' },
|
follow: { id: 'account.follow', defaultMessage: 'Follow' },
|
||||||
unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },
|
unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },
|
||||||
requested: { id: 'account.requested', defaultMessage: 'Awaiting approval' },
|
requested: { id: 'account.requested', defaultMessage: 'Awaiting approval' },
|
||||||
unblock: { id: 'account.unblock', defaultMessage: 'Unblock' },
|
unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' },
|
||||||
unmute: { id: 'account.unmute', defaultMessage: 'Unmute' }
|
unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' }
|
||||||
});
|
});
|
||||||
|
|
||||||
class Account extends React.PureComponent {
|
class Account extends React.PureComponent {
|
||||||
|
|
|
@ -53,7 +53,7 @@ class Status extends React.PureComponent {
|
||||||
<div className='status__wrapper'>
|
<div className='status__wrapper'>
|
||||||
<div className='status__prepend'>
|
<div className='status__prepend'>
|
||||||
<div className='status__prepend-icon-wrapper'><i className='fa fa-fw fa-retweet status__prepend-icon' /></div>
|
<div className='status__prepend-icon-wrapper'><i className='fa fa-fw fa-retweet status__prepend-icon' /></div>
|
||||||
<FormattedMessage id='status.reblogged_by' defaultMessage='{name} reblogged' values={{ name: <a onClick={this.handleAccountClick.bind(this, status.getIn(['account', 'id']))} href={status.getIn(['account', 'url'])} className='status__display-name muted'><strong dangerouslySetInnerHTML={displayNameHTML} /></a> }} />
|
<FormattedMessage id='status.reblogged_by' defaultMessage='{name} boosted' values={{ name: <a onClick={this.handleAccountClick.bind(this, status.getIn(['account', 'id']))} href={status.getIn(['account', 'url'])} className='status__display-name muted'><strong dangerouslySetInnerHTML={displayNameHTML} /></a> }} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Status {...other} wrapped={true} status={status.get('reblog')} />
|
<Status {...other} wrapped={true} status={status.get('reblog')} />
|
||||||
|
|
|
@ -11,8 +11,8 @@ const messages = defineMessages({
|
||||||
block: { id: 'account.block', defaultMessage: 'Block @{name}' },
|
block: { id: 'account.block', defaultMessage: 'Block @{name}' },
|
||||||
reply: { id: 'status.reply', defaultMessage: 'Reply' },
|
reply: { id: 'status.reply', defaultMessage: 'Reply' },
|
||||||
replyAll: { id: 'status.replyAll', defaultMessage: 'Reply to thread' },
|
replyAll: { id: 'status.replyAll', defaultMessage: 'Reply to thread' },
|
||||||
reblog: { id: 'status.reblog', defaultMessage: 'Reblog' },
|
reblog: { id: 'status.reblog', defaultMessage: 'Boost' },
|
||||||
cannot_reblog: { id: 'status.cannot_reblog', defaultMessage: 'This post cannot be reblogged' },
|
cannot_reblog: { id: 'status.cannot_reblog', defaultMessage: 'This post cannot be boosted' },
|
||||||
favourite: { id: 'status.favourite', defaultMessage: 'Favourite' },
|
favourite: { id: 'status.favourite', defaultMessage: 'Favourite' },
|
||||||
open: { id: 'status.open', defaultMessage: 'Expand this status' },
|
open: { id: 'status.open', defaultMessage: 'Expand this status' },
|
||||||
report: { id: 'status.report', defaultMessage: 'Report @{name}' }
|
report: { id: 'status.report', defaultMessage: 'Report @{name}' }
|
||||||
|
|
|
@ -4,7 +4,7 @@ import { changeComposeSpoilerness } from '../../../actions/compose';
|
||||||
import { injectIntl, defineMessages } from 'react-intl';
|
import { injectIntl, defineMessages } from 'react-intl';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
title: { id: 'compose_form.spoiler', defaultMessage: 'Hide text behind content warning' }
|
title: { id: 'compose_form.spoiler', defaultMessage: 'Hide text behind warning' }
|
||||||
});
|
});
|
||||||
|
|
||||||
const mapStateToProps = (state, { intl }) => ({
|
const mapStateToProps = (state, { intl }) => ({
|
||||||
|
|
|
@ -29,7 +29,7 @@ const WarningWrapper = ({ needsLeakWarning, needsLockWarning, mentionedDomains }
|
||||||
<Warning
|
<Warning
|
||||||
message={<FormattedMessage
|
message={<FormattedMessage
|
||||||
id='compose_form.privacy_disclaimer'
|
id='compose_form.privacy_disclaimer'
|
||||||
defaultMessage='Your private status will be delivered to mentioned users on {domains}. Do you trust {domainsCount, plural, one {that server} other {those servers}} to not leak your status?'
|
defaultMessage='Your private status will be delivered to mentioned users on {domains}. Do you trust {domainsCount, plural, one {that server} other {those servers}}? Post privacy only works on Mastodon instances. If {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, there will be no indication that your post is private, and it may be boosted or otherwise made visible to unintended recipients.'
|
||||||
values={{ domains: <strong>{mentionedDomains.join(', ')}</strong>, domainsCount: mentionedDomains.length }}
|
values={{ domains: <strong>{mentionedDomains.join(', ')}</strong>, domainsCount: mentionedDomains.length }}
|
||||||
/>}
|
/>}
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -8,8 +8,8 @@ const messages = defineMessages({
|
||||||
delete: { id: 'status.delete', defaultMessage: 'Delete' },
|
delete: { id: 'status.delete', defaultMessage: 'Delete' },
|
||||||
mention: { id: 'status.mention', defaultMessage: 'Mention @{name}' },
|
mention: { id: 'status.mention', defaultMessage: 'Mention @{name}' },
|
||||||
reply: { id: 'status.reply', defaultMessage: 'Reply' },
|
reply: { id: 'status.reply', defaultMessage: 'Reply' },
|
||||||
reblog: { id: 'status.reblog', defaultMessage: 'Reblog' },
|
reblog: { id: 'status.reblog', defaultMessage: 'Boost' },
|
||||||
cannot_reblog: { id: 'status.cannot_reblog', defaultMessage: 'This post cannot be reblogged' },
|
cannot_reblog: { id: 'status.cannot_reblog', defaultMessage: 'This post cannot be boosted' },
|
||||||
favourite: { id: 'status.favourite', defaultMessage: 'Favourite' },
|
favourite: { id: 'status.favourite', defaultMessage: 'Favourite' },
|
||||||
report: { id: 'status.report', defaultMessage: 'Report @{name}' }
|
report: { id: 'status.report', defaultMessage: 'Report @{name}' }
|
||||||
});
|
});
|
||||||
|
|
|
@ -213,7 +213,7 @@ class OnboardingModal extends React.PureComponent {
|
||||||
if(hasMore) {
|
if(hasMore) {
|
||||||
nextOrDoneBtn = <a href='#' onClick={this.handleNext.bind(null, pages.length)} className='onboarding-modal__nav onboarding-modal__next'><FormattedMessage id='onboarding.next' defaultMessage='Next' /></a>;
|
nextOrDoneBtn = <a href='#' onClick={this.handleNext.bind(null, pages.length)} className='onboarding-modal__nav onboarding-modal__next'><FormattedMessage id='onboarding.next' defaultMessage='Next' /></a>;
|
||||||
} else {
|
} else {
|
||||||
nextOrDoneBtn = <a href='#' onClick={this.handleNext.bind(null, pages.length)} className='onboarding-modal__nav onboarding-modal__done'><FormattedMessage id='onboarding.next' defaultMessage='Done' /></a>;
|
nextOrDoneBtn = <a href='#' onClick={this.handleNext.bind(null, pages.length)} className='onboarding-modal__nav onboarding-modal__done'><FormattedMessage id='onboarding.done' defaultMessage='Done' /></a>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const styles = pages.map((page, i) => ({
|
const styles = pages.map((page, i) => ({
|
||||||
|
|
|
@ -14,8 +14,8 @@ const en = {
|
||||||
"account.edit_profile": "Edit profile",
|
"account.edit_profile": "Edit profile",
|
||||||
"account.follow": "Follow",
|
"account.follow": "Follow",
|
||||||
"account.followers": "Followers",
|
"account.followers": "Followers",
|
||||||
"account.follows_you": "Follows you",
|
|
||||||
"account.follows": "Follows",
|
"account.follows": "Follows",
|
||||||
|
"account.follows_you": "Follows you",
|
||||||
"account.mention": "Mention @{name}",
|
"account.mention": "Mention @{name}",
|
||||||
"account.mute": "Mute @{name}",
|
"account.mute": "Mute @{name}",
|
||||||
"account.posts": "Posts",
|
"account.posts": "Posts",
|
||||||
|
@ -34,22 +34,33 @@ const en = {
|
||||||
"column.mutes": "Muted users",
|
"column.mutes": "Muted users",
|
||||||
"column.notifications": "Notifications",
|
"column.notifications": "Notifications",
|
||||||
"column.public": "Federated timeline",
|
"column.public": "Federated timeline",
|
||||||
|
"column_back_button.label": "Back",
|
||||||
|
"column_subheading.navigation": "Navigation",
|
||||||
|
"column_subheading.settings": "Settings",
|
||||||
|
"compose_form.lock_disclaimer.lock": "locked",
|
||||||
"compose_form.placeholder": "What is on your mind?",
|
"compose_form.placeholder": "What is on your mind?",
|
||||||
"compose_form.privacy_disclaimer": "Your private status will be delivered to mentioned users on {domains}. Do you trust {domainsCount, plural, one {that server} other {those servers}}? Post privacy only works on Mastodon instances. If {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, there will be no indication that your post is private, and it may be boosted or otherwise made visible to unintended recipients.",
|
"compose_form.privacy_disclaimer": "Your private status will be delivered to mentioned users on {domains}. Do you trust {domainsCount, plural, one {that server} other {those servers}}? Post privacy only works on Mastodon instances. If {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, there will be no indication that your post is private, and it may be boosted or otherwise made visible to unintended recipients.",
|
||||||
"compose_form.publish": "Toot",
|
"compose_form.publish": "Toot",
|
||||||
"compose_form.sensitive": "Mark media as sensitive",
|
"compose_form.sensitive": "Mark media as sensitive",
|
||||||
"compose_form.spoiler_placeholder": "Content warning",
|
|
||||||
"compose_form.spoiler": "Hide text behind warning",
|
"compose_form.spoiler": "Hide text behind warning",
|
||||||
"emoji_button.label": "Insert emoji",
|
"compose_form.spoiler_placeholder": "Content warning",
|
||||||
"emoji_button.search": "Search...",
|
"confirmation_modal.cancel": "Cancel",
|
||||||
"emoji_button.people": "People",
|
"confirmations.block.confirm": "Block",
|
||||||
"emoji_button.nature": "Nature",
|
"confirmations.block.message": "Are you sure you want to block {name}?",
|
||||||
"emoji_button.food": "Food & Drink",
|
"confirmations.delete.confirm": "Delete",
|
||||||
|
"confirmations.delete.message": "Are you sure you want to delete this status?",
|
||||||
|
"confirmations.mute.confirm": "Mute",
|
||||||
|
"confirmations.mute.message": "Are you sure you want to mute {name}?",
|
||||||
"emoji_button.activity": "Activity",
|
"emoji_button.activity": "Activity",
|
||||||
"emoji_button.travel": "Travel & Places",
|
|
||||||
"emoji_button.objects": "Objects",
|
|
||||||
"emoji_button.symbols": "Symbols",
|
|
||||||
"emoji_button.flags": "Flags",
|
"emoji_button.flags": "Flags",
|
||||||
|
"emoji_button.food": "Food & Drink",
|
||||||
|
"emoji_button.label": "Insert emoji",
|
||||||
|
"emoji_button.nature": "Nature",
|
||||||
|
"emoji_button.objects": "Objects",
|
||||||
|
"emoji_button.people": "People",
|
||||||
|
"emoji_button.search": "Search...",
|
||||||
|
"emoji_button.symbols": "Symbols",
|
||||||
|
"emoji_button.travel": "Travel & Places",
|
||||||
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
|
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
|
||||||
"empty_column.hashtag": "There is nothing in this hashtag yet.",
|
"empty_column.hashtag": "There is nothing in this hashtag yet.",
|
||||||
"empty_column.home.public_timeline": "the public timeline",
|
"empty_column.home.public_timeline": "the public timeline",
|
||||||
|
@ -85,8 +96,8 @@ const en = {
|
||||||
"notification.follow": "{name} followed you",
|
"notification.follow": "{name} followed you",
|
||||||
"notification.mention": "{name} mentioned you",
|
"notification.mention": "{name} mentioned you",
|
||||||
"notification.reblog": "{name} boosted your status",
|
"notification.reblog": "{name} boosted your status",
|
||||||
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
|
|
||||||
"notifications.clear": "Clear notifications",
|
"notifications.clear": "Clear notifications",
|
||||||
|
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
|
||||||
"notifications.column_settings.alert": "Desktop notifications",
|
"notifications.column_settings.alert": "Desktop notifications",
|
||||||
"notifications.column_settings.favourite": "Favourites:",
|
"notifications.column_settings.favourite": "Favourites:",
|
||||||
"notifications.column_settings.follow": "New followers:",
|
"notifications.column_settings.follow": "New followers:",
|
||||||
|
@ -95,6 +106,26 @@ const en = {
|
||||||
"notifications.column_settings.show": "Show in column",
|
"notifications.column_settings.show": "Show in column",
|
||||||
"notifications.column_settings.sound": "Play sound",
|
"notifications.column_settings.sound": "Play sound",
|
||||||
"notifications.settings": "Column settings",
|
"notifications.settings": "Column settings",
|
||||||
|
"onboarding.done": "Done",
|
||||||
|
"onboarding.next": "Next",
|
||||||
|
"onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
|
||||||
|
"onboarding.page_four.home": "The home timeline shows posts from people you follow.",
|
||||||
|
"onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
|
||||||
|
"onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers: <em>Instances</em>",
|
||||||
|
"onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
|
||||||
|
"onboarding.page_one.welcome": "Welcome to Mastodon!",
|
||||||
|
"onboarding.page_six.admin": "Your instance's admin is {admin}.",
|
||||||
|
"onboarding.page_six.almost_done": "Almost done...",
|
||||||
|
"onboarding.page_six.appetoot": "Bon Appetoot!",
|
||||||
|
"onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
|
||||||
|
"onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||||
|
"onboarding.page_six.guidelines": "community guidelines",
|
||||||
|
"onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
|
||||||
|
"onboarding.page_six.various_app": "mobile apps",
|
||||||
|
"onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
|
||||||
|
"onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
|
||||||
|
"onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
|
||||||
|
"onboarding.skip": "Skip",
|
||||||
"privacy.change": "Adjust status privacy",
|
"privacy.change": "Adjust status privacy",
|
||||||
"privacy.direct.long": "Post to mentioned users only",
|
"privacy.direct.long": "Post to mentioned users only",
|
||||||
"privacy.direct.short": "Direct",
|
"privacy.direct.short": "Direct",
|
||||||
|
@ -109,9 +140,10 @@ const en = {
|
||||||
"report.placeholder": "Additional comments",
|
"report.placeholder": "Additional comments",
|
||||||
"report.submit": "Submit",
|
"report.submit": "Submit",
|
||||||
"report.target": "Reporting",
|
"report.target": "Reporting",
|
||||||
"search_results.total": "{count, number} {count, plural, one {result} other {results}}",
|
|
||||||
"search.placeholder": "Search",
|
"search.placeholder": "Search",
|
||||||
"search.status_by": "Status by {name}",
|
"search.status_by": "Status by {name}",
|
||||||
|
"search_results.total": "{count, number} {count, plural, one {result} other {results}}",
|
||||||
|
"status.cannot_reblog": "This post cannot be boosted",
|
||||||
"status.delete": "Delete",
|
"status.delete": "Delete",
|
||||||
"status.favourite": "Favourite",
|
"status.favourite": "Favourite",
|
||||||
"status.load_more": "Load more",
|
"status.load_more": "Load more",
|
||||||
|
@ -119,7 +151,6 @@ const en = {
|
||||||
"status.mention": "Mention @{name}",
|
"status.mention": "Mention @{name}",
|
||||||
"status.open": "Expand this status",
|
"status.open": "Expand this status",
|
||||||
"status.reblog": "Boost",
|
"status.reblog": "Boost",
|
||||||
"status.cannot_reblog": "This status cannot be boosted",
|
|
||||||
"status.reblogged_by": "{name} boosted",
|
"status.reblogged_by": "{name} boosted",
|
||||||
"status.reply": "Reply",
|
"status.reply": "Reply",
|
||||||
"status.replyAll": "Reply to thread",
|
"status.replyAll": "Reply to thread",
|
||||||
|
@ -137,9 +168,9 @@ const en = {
|
||||||
"upload_button.label": "Add media",
|
"upload_button.label": "Add media",
|
||||||
"upload_form.undo": "Undo",
|
"upload_form.undo": "Undo",
|
||||||
"upload_progress.label": "Uploading...",
|
"upload_progress.label": "Uploading...",
|
||||||
|
"video_player.expand": "Expand video",
|
||||||
"video_player.toggle_sound": "Toggle sound",
|
"video_player.toggle_sound": "Toggle sound",
|
||||||
"video_player.toggle_visible": "Toggle visibility",
|
"video_player.toggle_visible": "Toggle visibility",
|
||||||
"video_player.expand": "Expand video",
|
|
||||||
"video_player.video_error": "Video could not be played",
|
"video_player.video_error": "Video could not be played",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue