Merge branch 'i18n' into 'develop'
i18n: handle plurals See merge request soapbox-pub/soapbox!2222
This commit is contained in:
commit
845ef1c4d4
15 changed files with 29 additions and 29 deletions
|
@ -86,7 +86,7 @@ const COMPOSE_SET_STATUS = 'COMPOSE_SET_STATUS';
|
|||
const messages = defineMessages({
|
||||
exceededImageSizeLimit: { id: 'upload_error.image_size_limit', defaultMessage: 'Image exceeds the current file size limit ({limit})' },
|
||||
exceededVideoSizeLimit: { id: 'upload_error.video_size_limit', defaultMessage: 'Video exceeds the current file size limit ({limit})' },
|
||||
exceededVideoDurationLimit: { id: 'upload_error.video_duration_limit', defaultMessage: 'Video exceeds the current duration limit ({limit} seconds)' },
|
||||
exceededVideoDurationLimit: { id: 'upload_error.video_duration_limit', defaultMessage: 'Video exceeds the current duration limit ({limit, plural, one {# second} other {# seconds}})' },
|
||||
scheduleError: { id: 'compose.invalid_schedule', defaultMessage: 'You must schedule a post at least 5 minutes out.' },
|
||||
success: { id: 'compose.submit_success', defaultMessage: 'Your post was sent' },
|
||||
editSuccess: { id: 'compose.edit_success', defaultMessage: 'Your post was edited' },
|
||||
|
|
|
@ -47,7 +47,7 @@ const MAX_QUEUED_NOTIFICATIONS = 40;
|
|||
|
||||
defineMessages({
|
||||
mention: { id: 'notification.mention', defaultMessage: '{name} mentioned you' },
|
||||
group: { id: 'notifications.group', defaultMessage: '{count} notifications' },
|
||||
group: { id: 'notifications.group', defaultMessage: '{count, plural, one {# notification} other {# notifications}}' },
|
||||
});
|
||||
|
||||
const fetchRelatedRelationships = (dispatch: AppDispatch, notifications: APIEntity[]) => {
|
||||
|
|
|
@ -11,7 +11,7 @@ import { compareId } from 'soapbox/utils/comparators';
|
|||
|
||||
const messages = defineMessages({
|
||||
title: { id: 'admin.latest_accounts_panel.title', defaultMessage: 'Latest Accounts' },
|
||||
expand: { id: 'admin.latest_accounts_panel.more', defaultMessage: 'Click to see {count} {count, plural, one {account} other {accounts}}' },
|
||||
expand: { id: 'admin.latest_accounts_panel.more', defaultMessage: 'Click to see {count, plural, one {# account} other {# accounts}}' },
|
||||
});
|
||||
|
||||
interface ILatestAccountsPanel {
|
||||
|
|
|
@ -19,7 +19,7 @@ const messages = defineMessages({
|
|||
accept: { id: 'chat_message_list_intro.actions.accept', defaultMessage: 'Accept' },
|
||||
leaveChat: { id: 'chat_message_list_intro.actions.leave_chat', defaultMessage: 'Leave chat' },
|
||||
report: { id: 'chat_message_list_intro.actions.report', defaultMessage: 'Report' },
|
||||
messageLifespan: { id: 'chat_message_list_intro.actions.message_lifespan', defaultMessage: 'Messages older than {day} days are deleted.' },
|
||||
messageLifespan: { id: 'chat_message_list_intro.actions.message_lifespan', defaultMessage: 'Messages older than {day, plural, one {# day} other {# days}} are deleted.' },
|
||||
});
|
||||
|
||||
const ChatMessageListIntro = () => {
|
||||
|
|
|
@ -38,8 +38,8 @@ const messages = defineMessages({
|
|||
autoDelete14Days: { id: 'chat_settings.auto_delete.14days', defaultMessage: '14 days' },
|
||||
autoDelete30Days: { id: 'chat_settings.auto_delete.30days', defaultMessage: '30 days' },
|
||||
autoDelete90Days: { id: 'chat_settings.auto_delete.90days', defaultMessage: '90 days' },
|
||||
autoDeleteMessage: { id: 'chat_window.auto_delete_label', defaultMessage: 'Auto-delete after {day} days' },
|
||||
autoDeleteMessageTooltip: { id: 'chat_window.auto_delete_tooltip', defaultMessage: 'Chat messages are set to auto-delete after {day} days upon sending.' },
|
||||
autoDeleteMessage: { id: 'chat_window.auto_delete_label', defaultMessage: 'Auto-delete after {day, plural, one {# day} other {# days}}' },
|
||||
autoDeleteMessageTooltip: { id: 'chat_window.auto_delete_tooltip', defaultMessage: 'Chat messages are set to auto-delete after {day, plural, one {# day} other {# days}} upon sending.' },
|
||||
});
|
||||
|
||||
const ChatPageMain = () => {
|
||||
|
|
|
@ -27,7 +27,7 @@ const messages = defineMessages({
|
|||
unblockUser: { id: 'chat_settings.options.unblock_user', defaultMessage: 'Unblock @{acct}' },
|
||||
leaveChat: { id: 'chat_settings.options.leave_chat', defaultMessage: 'Leave Chat' },
|
||||
autoDeleteLabel: { id: 'chat_settings.auto_delete.label', defaultMessage: 'Auto-delete messages' },
|
||||
autoDeleteDays: { id: 'chat_settings.auto_delete.days', defaultMessage: '{day} days' },
|
||||
autoDeleteDays: { id: 'chat_settings.auto_delete.days', defaultMessage: '{day, plural, one {# day} other {# days}}' },
|
||||
});
|
||||
|
||||
const ChatSettings = () => {
|
||||
|
|
|
@ -13,8 +13,8 @@ import ChatPaneHeader from './chat-pane-header';
|
|||
import ChatSettings from './chat-settings';
|
||||
|
||||
const messages = defineMessages({
|
||||
autoDeleteMessage: { id: 'chat_window.auto_delete_label', defaultMessage: 'Auto-delete after {day} days' },
|
||||
autoDeleteMessageTooltip: { id: 'chat_window.auto_delete_tooltip', defaultMessage: 'Chat messages are set to auto-delete after {day} days upon sending.' },
|
||||
autoDeleteMessage: { id: 'chat_window.auto_delete_label', defaultMessage: 'Auto-delete after {day, plural, one {# day} other {# days}}' },
|
||||
autoDeleteMessageTooltip: { id: 'chat_window.auto_delete_tooltip', defaultMessage: 'Chat messages are set to auto-delete after {day, plural, one {# day} other {# days}} upon sending.' },
|
||||
});
|
||||
|
||||
const LinkWrapper = ({ enabled, to, children }: { enabled: boolean, to: string, children: React.ReactNode }): JSX.Element => {
|
||||
|
|
|
@ -5,7 +5,7 @@ import { length } from 'stringz';
|
|||
import ProgressCircle from 'soapbox/components/progress-circle';
|
||||
|
||||
const messages = defineMessages({
|
||||
title: { id: 'compose.character_counter.title', defaultMessage: 'Used {chars} out of {maxChars} characters' },
|
||||
title: { id: 'compose.character_counter.title', defaultMessage: 'Used {chars} out of {maxChars} {maxChars, plural, one {character} other {characters}}' },
|
||||
});
|
||||
|
||||
interface IVisualCharacterCounter {
|
||||
|
|
|
@ -8,7 +8,7 @@ import { useInstance, useSoapboxConfig } from 'soapbox/hooks';
|
|||
import SiteWallet from './site-wallet';
|
||||
|
||||
const messages = defineMessages({
|
||||
actionTitle: { id: 'crypto_donate_panel.actions.view', defaultMessage: 'Click to see {count} {count, plural, one {wallet} other {wallets}}' },
|
||||
actionTitle: { id: 'crypto_donate_panel.actions.view', defaultMessage: 'Click to see {count, plural, one {# wallet} other {# wallets}}' },
|
||||
});
|
||||
|
||||
interface ICryptoDonatePanel {
|
||||
|
|
|
@ -138,7 +138,7 @@ const buildMessage = (
|
|||
others: totalCount && totalCount > 0 ? (
|
||||
<FormattedMessage
|
||||
id='notification.others'
|
||||
defaultMessage=' + {count} {count, plural, one {other} other {others}}'
|
||||
defaultMessage=' + {count, plural, one {# other} other {# others}}'
|
||||
values={{ count: totalCount - 1 }}
|
||||
/>
|
||||
) : '',
|
||||
|
|
|
@ -57,7 +57,7 @@ const ProfileFamiliarFollowers: React.FC<IProfileFamiliarFollowers> = ({ account
|
|||
<span className='hover:underline cursor-pointer' role='presentation' onClick={openFamiliarFollowersModal}>
|
||||
<FormattedMessage
|
||||
id='account.familiar_followers.more'
|
||||
defaultMessage='{count} {count, plural, one {other} other {others}} you follow'
|
||||
defaultMessage='{count, plural, one {# other} other {# others}} you follow'
|
||||
values={{ count: familiarFollowerIds.size - familiarFollowers.size }}
|
||||
/>
|
||||
</span>,
|
||||
|
|
|
@ -38,7 +38,7 @@ const TrendsPanel = ({ limit }: ITrendsPanel) => {
|
|||
<Widget
|
||||
title={<FormattedMessage id='trends.title' defaultMessage='Trends' />}
|
||||
action={
|
||||
<Link to='/search' onClick={setHashtagsFilter}>
|
||||
<Link className='text-right' to='/search' onClick={setHashtagsFilter}>
|
||||
<Text tag='span' theme='primary' size='sm' className='hover:underline'>
|
||||
{intl.formatMessage(messages.viewAll)}
|
||||
</Text>
|
||||
|
|
|
@ -37,7 +37,7 @@ const WhoToFollowPanel = ({ limit }: IWhoToFollowPanel) => {
|
|||
<Widget
|
||||
title={<FormattedMessage id='who_to_follow.title' defaultMessage='People To Follow' />}
|
||||
action={
|
||||
<Link to='/suggestions'>
|
||||
<Link className='text-right' to='/suggestions'>
|
||||
<Text tag='span' theme='primary' size='sm' className='hover:underline'>
|
||||
<FormattedMessage id='feed_suggestions.view_all' defaultMessage='View all' />
|
||||
</Text>
|
||||
|
|
|
@ -61,7 +61,7 @@ const AgeVerification = () => {
|
|||
<Text theme='muted' size='sm'>
|
||||
<FormattedMessage
|
||||
id='age_verification.body'
|
||||
defaultMessage='{siteTitle} requires users to be at least {ageMinimum} years old to access its platform. Anyone under the age of {ageMinimum} years old cannot access this platform.'
|
||||
defaultMessage='{siteTitle} requires users to be at least {ageMinimum, plural, one {# year} other {# years}} years old to access its platform. Anyone under the age of {ageMinimum, plural, one {# year} other {# years}} old cannot access this platform.'
|
||||
values={{
|
||||
siteTitle: instance.title,
|
||||
ageMinimum,
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
"account.endorse.success": "You are now featuring @{acct} on your profile",
|
||||
"account.familiar_followers": "Followed by {accounts}",
|
||||
"account.familiar_followers.empty": "No one you know follows {name}.",
|
||||
"account.familiar_followers.more": "{count} {count, plural, one {other} other {others}} you follow",
|
||||
"account.familiar_followers.more": "{count, plural, one {# other} other {# others}} you follow",
|
||||
"account.follow": "Follow",
|
||||
"account.followers": "Followers",
|
||||
"account.followers.empty": "No one follows this user yet.",
|
||||
|
@ -102,7 +102,7 @@
|
|||
"admin.dashcounters.user_count_label": "total users",
|
||||
"admin.dashwidgets.email_list_header": "Email list",
|
||||
"admin.dashwidgets.software_header": "Software",
|
||||
"admin.latest_accounts_panel.more": "Click to see {count} {count, plural, one {account} other {accounts}}",
|
||||
"admin.latest_accounts_panel.more": "Click to see {count, plural, one {# account} other {# accounts}}",
|
||||
"admin.latest_accounts_panel.title": "Latest Accounts",
|
||||
"admin.moderation_log.empty_message": "You have not performed any moderation actions yet. When you do, a history will be shown here.",
|
||||
"admin.reports.actions.close": "Close",
|
||||
|
@ -139,7 +139,7 @@
|
|||
"admin_nav.awaiting_approval": "Waitlist",
|
||||
"admin_nav.dashboard": "Dashboard",
|
||||
"admin_nav.reports": "Reports",
|
||||
"age_verification.body": "{siteTitle} requires users to be at least {ageMinimum} years old to access its platform. Anyone under the age of {ageMinimum} years old cannot access this platform.",
|
||||
"age_verification.body": "{siteTitle} requires users to be at least {ageMinimum, plural, one {# year} other {# years}} years old to access its platform. Anyone under the age of {ageMinimum, plural, one {# year} other {# years}} old cannot access this platform.",
|
||||
"age_verification.fail": "You must be {ageMinimum, plural, one {# year} other {# years}} old or older.",
|
||||
"age_verification.header": "Enter your birth date",
|
||||
"alert.unexpected.body": "We're sorry for the interruption. If the problem persists, please reach out to our support team. You may also try to {clearCookies} (this will log you out).",
|
||||
|
@ -215,7 +215,7 @@
|
|||
"chat_message_list.network_failure.title": "Whoops!",
|
||||
"chat_message_list_intro.actions.accept": "Accept",
|
||||
"chat_message_list_intro.actions.leave_chat": "Leave chat",
|
||||
"chat_message_list_intro.actions.message_lifespan": "Messages older than {day} days are deleted.",
|
||||
"chat_message_list_intro.actions.message_lifespan": "Messages older than {day, plural, one {# day} other {# days}} are deleted.",
|
||||
"chat_message_list_intro.actions.report": "Report",
|
||||
"chat_message_list_intro.intro": "wants to start a chat with you",
|
||||
"chat_message_list_intro.leave_chat.confirm": "Leave Chat",
|
||||
|
@ -233,7 +233,7 @@
|
|||
"chat_settings.auto_delete.30days": "30 days",
|
||||
"chat_settings.auto_delete.7days": "7 days",
|
||||
"chat_settings.auto_delete.90days": "90 days",
|
||||
"chat_settings.auto_delete.days": "{day} days",
|
||||
"chat_settings.auto_delete.days": "{day, plural, one {# day} other {# days}}",
|
||||
"chat_settings.auto_delete.hint": "Sent messages will auto-delete after the time period selected",
|
||||
"chat_settings.auto_delete.label": "Auto-delete messages",
|
||||
"chat_settings.block.confirm": "Block",
|
||||
|
@ -250,8 +250,8 @@
|
|||
"chat_settings.unblock.confirm": "Unblock",
|
||||
"chat_settings.unblock.heading": "Unblock @{acct}",
|
||||
"chat_settings.unblock.message": "Unblocking will allow this profile to direct message you and view your content.",
|
||||
"chat_window.auto_delete_label": "Auto-delete after {day} days",
|
||||
"chat_window.auto_delete_tooltip": "Chat messages are set to auto-delete after {day} days upon sending.",
|
||||
"chat_window.auto_delete_label": "Auto-delete after {day, plural, one {# day} other {# days}}",
|
||||
"chat_window.auto_delete_tooltip": "Chat messages are set to auto-delete after {day, plural, one {# day} other {# days}} upon sending.",
|
||||
"chats.actions.copy": "Copy",
|
||||
"chats.actions.delete": "Delete message",
|
||||
"chats.actions.deleteForMe": "Delete for me",
|
||||
|
@ -348,7 +348,7 @@
|
|||
"common.cancel": "Cancel",
|
||||
"common.error": "Something isn't right. Try reloading the page.",
|
||||
"compare_history_modal.header": "Edit history",
|
||||
"compose.character_counter.title": "Used {chars} out of {maxChars} characters",
|
||||
"compose.character_counter.title": "Used {chars} out of {maxChars} {maxChars, plural, one {character} other {characters}}",
|
||||
"compose.edit_success": "Your post was edited",
|
||||
"compose.invalid_schedule": "You must schedule a post at least 5 minutes out.",
|
||||
"compose.submit_success": "Your post was sent!",
|
||||
|
@ -476,7 +476,7 @@
|
|||
"confirmations.unfollow.confirm": "Unfollow",
|
||||
"crypto_donate.explanation_box.message": "{siteTitle} accepts cryptocurrency donations. You may send a donation to any of the addresses below. Thank you for your support!",
|
||||
"crypto_donate.explanation_box.title": "Sending cryptocurrency donations",
|
||||
"crypto_donate_panel.actions.view": "Click to see {count} {count, plural, one {wallet} other {wallets}}",
|
||||
"crypto_donate_panel.actions.view": "Click to see {count, plural, one {# wallet} other {# wallets}}",
|
||||
"crypto_donate_panel.heading": "Donate Cryptocurrency",
|
||||
"crypto_donate_panel.intro.message": "{siteTitle} accepts cryptocurrency donations to fund our service. Thank you for your support!",
|
||||
"datepicker.day": "Day",
|
||||
|
@ -881,7 +881,7 @@
|
|||
"notification.mentioned": "{name} mentioned you",
|
||||
"notification.move": "{name} moved to {targetName}",
|
||||
"notification.name": "{link}{others}",
|
||||
"notification.others": " + {count} {count, plural, one {other} other {others}}",
|
||||
"notification.others": " + {count, plural, one {# other} other {# others}}",
|
||||
"notification.pleroma:chat_mention": "{name} sent you a message",
|
||||
"notification.pleroma:emoji_reaction": "{name} reacted to your post",
|
||||
"notification.pleroma:event_reminder": "An event you are participating in starts soon",
|
||||
|
@ -900,7 +900,7 @@
|
|||
"notifications.filter.mentions": "Mentions",
|
||||
"notifications.filter.polls": "Poll results",
|
||||
"notifications.filter.statuses": "Updates from people you follow",
|
||||
"notifications.group": "{count} notifications",
|
||||
"notifications.group": "{count, plural, one {# notification} other {# notifications}}",
|
||||
"notifications.queue_label": "Click to see {count} new {count, plural, one {notification} other {notifications}}",
|
||||
"oauth_consumer.tooltip": "Sign in with {provider}",
|
||||
"oauth_consumers.title": "Other ways to sign in",
|
||||
|
@ -1325,7 +1325,7 @@
|
|||
"upload_error.image_size_limit": "Image exceeds the current file size limit ({limit})",
|
||||
"upload_error.limit": "File upload limit exceeded.",
|
||||
"upload_error.poll": "File upload not allowed with polls.",
|
||||
"upload_error.video_duration_limit": "Video exceeds the current duration limit ({limit} seconds)",
|
||||
"upload_error.video_duration_limit": "Video exceeds the current duration limit ({limit, plural, one {# second} other {# seconds}})",
|
||||
"upload_error.video_size_limit": "Video exceeds the current file size limit ({limit})",
|
||||
"upload_form.description": "Describe for the visually impaired",
|
||||
"upload_form.preview": "Preview",
|
||||
|
|
Loading…
Reference in a new issue