diff --git a/assets/js/src/common/subscribers_in_plan.tsx b/assets/js/src/common/subscribers_in_plan.tsx index caf5c291b0..a5efb729ce 100644 --- a/assets/js/src/common/subscribers_in_plan.tsx +++ b/assets/js/src/common/subscribers_in_plan.tsx @@ -19,8 +19,8 @@ const SubscribersInPlan = ({ const subscribersInPlanCount = subscribersInPlanLimit ? ( {MailPoet.I18n.t('subscribersInPlanCount') - .replace('%$1d', subscribersInPlan.toLocaleString()) - .replace('%$2d', subscribersInPlanLimit.toLocaleString())} + .replace('%1$d', subscribersInPlan.toLocaleString()) + .replace('%2$d', subscribersInPlanLimit.toLocaleString())} ) : ( {subscribersInPlan} diff --git a/assets/js/src/forms/list.jsx b/assets/js/src/forms/list.jsx index 7c0bb971e5..89b5f8f40b 100644 --- a/assets/js/src/forms/list.jsx +++ b/assets/js/src/forms/list.jsx @@ -48,7 +48,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleFormsTrashed') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -63,7 +63,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleFormsDeleted') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -78,7 +78,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleFormsRestored') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -146,7 +146,7 @@ const itemActions = [ }).done((response) => { const formName = response.data.name ? response.data.name : MailPoet.I18n.t('noName'); MailPoet.Notice.success( - (MailPoet.I18n.t('formDuplicated')).replace('%$1s', formName) + (MailPoet.I18n.t('formDuplicated')).replace('%1$s', formName) ); refresh(); }).fail((response) => { diff --git a/assets/js/src/i18n.js b/assets/js/src/i18n.js index 408d21454a..534dcb9c4e 100644 --- a/assets/js/src/i18n.js +++ b/assets/js/src/i18n.js @@ -9,7 +9,7 @@ MailPoet.I18n = { translations[key] = value; }, t: function t(key) { - return translations[key] || 'TRANSLATION "%$1s" NOT FOUND'.replace('%$1s', key); + return translations[key] || 'TRANSLATION "%1$s" NOT FOUND'.replace('%1$s', key); }, all: function all() { return translations; diff --git a/assets/js/src/listing/notices.jsx b/assets/js/src/listing/notices.jsx index 440329eebb..feb4315c87 100644 --- a/assets/js/src/listing/notices.jsx +++ b/assets/js/src/listing/notices.jsx @@ -41,7 +41,7 @@ const MailerError = (props) => { const code = props.mta_log.error.error_code; if (code) { message += message ? ', ' : ''; - message += MailPoet.I18n.t('mailerErrorCode').replace('%$1s', code); + message += MailPoet.I18n.t('mailerErrorCode').replace('%1$s', code); } // allow tags with some attributes @@ -100,7 +100,7 @@ const MailerError = (props) => {

{ props.mta_log.error.operation === 'send' - ? MailPoet.I18n.t('mailerSendErrorNotice').replace('%$1s', props.mta_method) + ? MailPoet.I18n.t('mailerSendErrorNotice').replace('%1$s', props.mta_method) : MailPoet.I18n.t('mailerConnectionErrorNotice') } : diff --git a/assets/js/src/listing/pages.jsx b/assets/js/src/listing/pages.jsx index 62d2d9b7c4..eb4ed32a2a 100644 --- a/assets/js/src/listing/pages.jsx +++ b/assets/js/src/listing/pages.jsx @@ -216,7 +216,7 @@ class ListingPages extends React.Component { numberOfItemsLabel = MailPoet.I18n.t('numberOfItemsSingular'); } else { numberOfItemsLabel = MailPoet.I18n.t('numberOfItemsMultiple') - .replace('%$1d', parseInt(this.props.count, 10).toLocaleString()); + .replace('%1$d', parseInt(this.props.count, 10).toLocaleString()); } return ( diff --git a/assets/js/src/newsletter_editor/components/save.js b/assets/js/src/newsletter_editor/components/save.js index 9e8bccfc07..2b465c631f 100644 --- a/assets/js/src/newsletter_editor/components/save.js +++ b/assets/js/src/newsletter_editor/components/save.js @@ -535,7 +535,7 @@ Module.NewsletterPreviewView = Marionette.View.extend({ const errors = response.errors.map(function (error) { let errorMessage = `

- ${MailPoet.I18n.t('newsletterPreviewErrorNotice').replace('%$1s', window.config.mtaMethod)}: + ${MailPoet.I18n.t('newsletterPreviewErrorNotice').replace('%1$s', window.config.mtaMethod)}: ${error.message}

`; diff --git a/assets/js/src/newsletters/automatic_emails/listings.jsx b/assets/js/src/newsletters/automatic_emails/listings.jsx index 82514e5a64..5cb9c59f78 100644 --- a/assets/js/src/newsletters/automatic_emails/listings.jsx +++ b/assets/js/src/newsletters/automatic_emails/listings.jsx @@ -29,7 +29,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersTrashed') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -44,7 +44,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersDeleted') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -59,7 +59,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersRestored') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -134,7 +134,7 @@ let newsletterActions = [ id: newsletter.id, }, }).done((response) => { - MailPoet.Notice.success((MailPoet.I18n.t('newsletterDuplicated')).replace('%$1s', response.data.subject)); + MailPoet.Notice.success((MailPoet.I18n.t('newsletterDuplicated')).replace('%1$s', response.data.subject)); refresh(); }).fail((response) => { if (response.errors.length > 0) { @@ -195,7 +195,7 @@ class Listings extends React.Component { renderStatus = (newsletter) => { const totalSent = (parseInt(newsletter.total_sent, 10) > -1) ? MailPoet.I18n.t('sentToXCustomers') - .replace('%$1d', newsletter.total_sent.toLocaleString()) + .replace('%1$d', newsletter.total_sent.toLocaleString()) : null; return ( @@ -263,19 +263,19 @@ class Listings extends React.Component { if (displayText && newsletter.options.afterTimeType !== 'immediate') { switch (newsletter.options.afterTimeType) { case 'minutes': - sendingDelay = MailPoet.I18n.t('sendingDelayMinutes').replace('%$1d', newsletter.options.afterTimeNumber); + sendingDelay = MailPoet.I18n.t('sendingDelayMinutes').replace('%1$d', newsletter.options.afterTimeNumber); break; case 'hours': - sendingDelay = MailPoet.I18n.t('sendingDelayHours').replace('%$1d', newsletter.options.afterTimeNumber); + sendingDelay = MailPoet.I18n.t('sendingDelayHours').replace('%1$d', newsletter.options.afterTimeNumber); break; case 'days': - sendingDelay = MailPoet.I18n.t('sendingDelayDays').replace('%$1d', newsletter.options.afterTimeNumber); + sendingDelay = MailPoet.I18n.t('sendingDelayDays').replace('%1$d', newsletter.options.afterTimeNumber); break; case 'weeks': - sendingDelay = MailPoet.I18n.t('sendingDelayWeeks').replace('%$1d', newsletter.options.afterTimeNumber); + sendingDelay = MailPoet.I18n.t('sendingDelayWeeks').replace('%1$d', newsletter.options.afterTimeNumber); break; default: diff --git a/assets/js/src/newsletters/listings/notification.jsx b/assets/js/src/newsletters/listings/notification.jsx index 73e6751a6e..e07aa41547 100644 --- a/assets/js/src/newsletters/listings/notification.jsx +++ b/assets/js/src/newsletters/listings/notification.jsx @@ -38,7 +38,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersTrashed') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -53,7 +53,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersDeleted') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -68,7 +68,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersRestored') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -146,7 +146,7 @@ const newsletterActions = [ }).done((response) => { MailPoet.Notice.success( (MailPoet.I18n.t('newsletterDuplicated')).replace( - '%$1s', response.data.subject + '%1$s', response.data.subject ) ); refresh(); @@ -235,33 +235,33 @@ class NewsletterListNotification extends React.Component { switch (newsletter.options.intervalType) { case 'daily': sendingFrequency = MailPoet.I18n.t('sendDaily').replace( - '%$1s', timeOfDayValues[newsletter.options.timeOfDay] + '%1$s', timeOfDayValues[newsletter.options.timeOfDay] ); break; case 'weekly': sendingFrequency = MailPoet.I18n.t('sendWeekly').replace( - '%$1s', weekDayValues[newsletter.options.weekDay] + '%1$s', weekDayValues[newsletter.options.weekDay] ).replace( - '%$2s', timeOfDayValues[newsletter.options.timeOfDay] + '%2$s', timeOfDayValues[newsletter.options.timeOfDay] ); break; case 'monthly': sendingFrequency = MailPoet.I18n.t('sendMonthly').replace( - '%$1s', monthDayValues[newsletter.options.monthDay] + '%1$s', monthDayValues[newsletter.options.monthDay] ).replace( - '%$2s', timeOfDayValues[newsletter.options.timeOfDay] + '%2$s', timeOfDayValues[newsletter.options.timeOfDay] ); break; case 'nthWeekDay': sendingFrequency = MailPoet.I18n.t('sendNthWeekDay').replace( - '%$1s', nthWeekDayValues[newsletter.options.nthWeekDay] + '%1$s', nthWeekDayValues[newsletter.options.nthWeekDay] ).replace( - '%$2s', weekDayValues[newsletter.options.weekDay] + '%2$s', weekDayValues[newsletter.options.weekDay] ).replace( - '%$3s', timeOfDayValues[newsletter.options.timeOfDay] + '%3$s', timeOfDayValues[newsletter.options.timeOfDay] ); break; diff --git a/assets/js/src/newsletters/listings/notification_history.jsx b/assets/js/src/newsletters/listings/notification_history.jsx index 72baa541a9..52ecbe3d4d 100644 --- a/assets/js/src/newsletters/listings/notification_history.jsx +++ b/assets/js/src/newsletters/listings/notification_history.jsx @@ -54,7 +54,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersTrashed') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -69,7 +69,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersDeleted') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -84,7 +84,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersRestored') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, diff --git a/assets/js/src/newsletters/listings/re_engagement.jsx b/assets/js/src/newsletters/listings/re_engagement.jsx index 5ec66bddca..0673a9d14f 100644 --- a/assets/js/src/newsletters/listings/re_engagement.jsx +++ b/assets/js/src/newsletters/listings/re_engagement.jsx @@ -32,7 +32,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersTrashed') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -47,7 +47,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersDeleted') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -62,7 +62,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersRestored') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -126,7 +126,7 @@ let newsletterActions = [ id: newsletter.id, }, }).done((response) => { - MailPoet.Notice.success((MailPoet.I18n.t('newsletterDuplicated')).replace('%$1s', response.data.subject)); + MailPoet.Notice.success((MailPoet.I18n.t('newsletterDuplicated')).replace('%1$s', response.data.subject)); refresh(); }).fail((response) => { if (response.errors.length > 0) { @@ -192,7 +192,7 @@ class NewsletterListReEngagement extends React.Component { renderStatus = (newsletter) => { const totalSentMessage = MailPoet.I18n.t('sentToXSubscribers') - .replace('%$1d', newsletter.total_sent.toLocaleString()); + .replace('%1$d', newsletter.total_sent.toLocaleString()); return (
diff --git a/assets/js/src/newsletters/listings/standard.jsx b/assets/js/src/newsletters/listings/standard.jsx index 072f0f665e..fd8359f7c2 100644 --- a/assets/js/src/newsletters/listings/standard.jsx +++ b/assets/js/src/newsletters/listings/standard.jsx @@ -32,7 +32,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersTrashed') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -47,7 +47,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersDeleted') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -62,7 +62,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersRestored') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -152,7 +152,7 @@ let newsletterActions = [ }).done((response) => { MailPoet.Notice.success( (MailPoet.I18n.t('newsletterDuplicated')).replace( - '%$1s', response.data.subject + '%1$s', response.data.subject ) ); refresh(); diff --git a/assets/js/src/newsletters/listings/statistics.jsx b/assets/js/src/newsletters/listings/statistics.jsx index 19b40139df..879d46cc3d 100644 --- a/assets/js/src/newsletters/listings/statistics.jsx +++ b/assets/js/src/newsletters/listings/statistics.jsx @@ -118,7 +118,7 @@ const Statistics = ({ newsletter, isSent, currentTime }) => { {tooEarlyForStats && wrapContentInLink( ( - {MailPoet.I18n.t('checkBackInHours').replace('%$1d', showStatsTimeout - sentHoursAgo)} + {MailPoet.I18n.t('checkBackInHours').replace('%1$d', showStatsTimeout - sentHoursAgo)} ), 'check-back' diff --git a/assets/js/src/newsletters/listings/welcome.jsx b/assets/js/src/newsletters/listings/welcome.jsx index fc34a83bdb..99ec048295 100644 --- a/assets/js/src/newsletters/listings/welcome.jsx +++ b/assets/js/src/newsletters/listings/welcome.jsx @@ -36,7 +36,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersTrashed') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -51,7 +51,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersDeleted') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -66,7 +66,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersRestored') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -130,7 +130,7 @@ let newsletterActions = [ id: newsletter.id, }, }).done((response) => { - MailPoet.Notice.success((MailPoet.I18n.t('newsletterDuplicated')).replace('%$1s', response.data.subject)); + MailPoet.Notice.success((MailPoet.I18n.t('newsletterDuplicated')).replace('%1$s', response.data.subject)); refresh(); }).fail((response) => { if (response.errors.length > 0) { @@ -196,9 +196,9 @@ class NewsletterListWelcome extends React.Component { renderStatus = (newsletter) => { const totalSentMessage = MailPoet.I18n.t('sentToXSubscribers') - .replace('%$1d', newsletter.total_sent.toLocaleString()); + .replace('%1$d', newsletter.total_sent.toLocaleString()); const totalScheduledMessage = MailPoet.I18n.t('scheduledToXSubscribers') - .replace('%$1d', newsletter.total_scheduled.toLocaleString()); + .replace('%1$d', newsletter.total_scheduled.toLocaleString()); return (
@@ -238,7 +238,7 @@ class NewsletterListWelcome extends React.Component { } else { sendingEvent = ReactStringReplace( MailPoet.I18n.t('welcomeEventWPUserWithRole'), - '"%$1s"', + '"%1$s"', (match, i) => ( {mailpoetRoles[newsletter.options.role]} ) @@ -263,7 +263,7 @@ class NewsletterListWelcome extends React.Component { sendingEvent = ReactStringReplace( MailPoet.I18n.t('welcomeEventSegment'), - '"%$1s"', + '"%1$s"', (match, i) => ( {segment.name} ) @@ -278,25 +278,25 @@ class NewsletterListWelcome extends React.Component { switch (newsletter.options.afterTimeType) { case 'minutes': sendingDelay = MailPoet.I18n.t('sendingDelayMinutes').replace( - '%$1d', newsletter.options.afterTimeNumber + '%1$d', newsletter.options.afterTimeNumber ); break; case 'hours': sendingDelay = MailPoet.I18n.t('sendingDelayHours').replace( - '%$1d', newsletter.options.afterTimeNumber + '%1$d', newsletter.options.afterTimeNumber ); break; case 'days': sendingDelay = MailPoet.I18n.t('sendingDelayDays').replace( - '%$1d', newsletter.options.afterTimeNumber + '%1$d', newsletter.options.afterTimeNumber ); break; case 'weeks': sendingDelay = MailPoet.I18n.t('sendingDelayWeeks').replace( - '%$1d', newsletter.options.afterTimeNumber + '%1$d', newsletter.options.afterTimeNumber ); break; diff --git a/assets/js/src/newsletters/scheduling/common.jsx b/assets/js/src/newsletters/scheduling/common.jsx index 06f6f01ef0..684d912ab2 100644 --- a/assets/js/src/newsletters/scheduling/common.jsx +++ b/assets/js/src/newsletters/scheduling/common.jsx @@ -56,7 +56,7 @@ const monthDayValues = _.object( if (labels[day] !== undefined) { label = labels[day]; } else { - label = MailPoet.I18n.t('nth').replace('%$1d', day + 1); + label = MailPoet.I18n.t('nth').replace('%1$d', day + 1); } return [day + 1, label]; } diff --git a/assets/js/src/newsletters/send.jsx b/assets/js/src/newsletters/send.jsx index 183bf1028e..1db80ac83f 100644 --- a/assets/js/src/newsletters/send.jsx +++ b/assets/js/src/newsletters/send.jsx @@ -152,7 +152,7 @@ class NewsletterSend extends React.Component { const fromAddress = this.state.item.sender_address; let errorMessage = ReactStringReplace( MailPoet.I18n.t('newsletterInvalidFromAddress'), - '%$1s', + '%1$s', () => fromAddress ); errorMessage = ReactStringReplace( diff --git a/assets/js/src/newsletters/templates/template_box.jsx b/assets/js/src/newsletters/templates/template_box.jsx index e2c8471198..ca066c047a 100644 --- a/assets/js/src/newsletters/templates/template_box.jsx +++ b/assets/js/src/newsletters/templates/template_box.jsx @@ -47,7 +47,7 @@ class TemplateBox extends React.Component { }); }; confirmAlert({ - message: MailPoet.I18n.t('confirmTemplateDeletion').replace('%$1s', name), + message: MailPoet.I18n.t('confirmTemplateDeletion').replace('%1$s', name), onConfirm, }); } diff --git a/assets/js/src/segments/dynamic/list.jsx b/assets/js/src/segments/dynamic/list.jsx index 00f7288702..327011ca09 100644 --- a/assets/js/src/segments/dynamic/list.jsx +++ b/assets/js/src/segments/dynamic/list.jsx @@ -46,7 +46,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleDynamicSegmentsTrashed') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -61,7 +61,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleDynamicSegmentsDeleted') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -76,7 +76,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleDynamicSegmentsRestored') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, diff --git a/assets/js/src/segments/dynamic/subscribers_counter.tsx b/assets/js/src/segments/dynamic/subscribers_counter.tsx index 255d106c51..7a9bac0b6b 100644 --- a/assets/js/src/segments/dynamic/subscribers_counter.tsx +++ b/assets/js/src/segments/dynamic/subscribers_counter.tsx @@ -89,7 +89,7 @@ const SubscribersCounter: React.FunctionComponent = () => { return (
- {(MailPoet.I18n.t('dynamicSegmentSize')).replace('%$1d', subscribersCount.count.toLocaleString())} + {(MailPoet.I18n.t('dynamicSegmentSize')).replace('%1$d', subscribersCount.count.toLocaleString())}
); diff --git a/assets/js/src/segments/list.jsx b/assets/js/src/segments/list.jsx index d3ad7707b1..cfb7828c8d 100644 --- a/assets/js/src/segments/list.jsx +++ b/assets/js/src/segments/list.jsx @@ -71,7 +71,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleSegmentsTrashed') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -86,7 +86,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleSegmentsDeleted') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -101,7 +101,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleSegmentsRestored') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -146,7 +146,7 @@ const itemActions = [ }, }).done((response) => { MailPoet.Notice.success( - MailPoet.I18n.t('listDuplicated').replace('%$1s', response.data.name) + MailPoet.I18n.t('listDuplicated').replace('%1$s', response.data.name) ); refresh(); }).fail((response) => { @@ -192,7 +192,7 @@ const itemActions = [ }).done(() => { MailPoet.Modal.loading(false); MailPoet.Notice.success( - (MailPoet.I18n.t('listSynchronized')).replace('%$1s', item.name) + (MailPoet.I18n.t('listSynchronized')).replace('%1$s', item.name) ); refresh(); }).fail((response) => { diff --git a/assets/js/src/subscribers/form.jsx b/assets/js/src/subscribers/form.jsx index 425de961c9..c4f4c48d00 100644 --- a/assets/js/src/subscribers/form.jsx +++ b/assets/js/src/subscribers/form.jsx @@ -86,10 +86,10 @@ const fields = [ if (subscription.status === 'unsubscribed') { const unsubscribedAt = MailPoet.Date .format(subscription.updated_at); - label += ' (%$1s)'.replace( - '%$1s', + label += ' (%1$s)'.replace( + '%1$s', MailPoet.I18n.t('unsubscribedOn').replace( - '%$1s', + '%1$s', unsubscribedAt ) ); @@ -178,13 +178,13 @@ function afterFormContent(values) { let message; if (unsubscribe.source === 'admin') { message = MailPoet.I18n.t('unsubscribedAdmin') - .replace('%$1d', date) - .replace('%$2d', unsubscribe.meta); + .replace('%1$d', date) + .replace('%2$d', unsubscribe.meta); } else if (unsubscribe.source === 'manage') { - message = MailPoet.I18n.t('unsubscribedManage').replace('%$1d', date); + message = MailPoet.I18n.t('unsubscribedManage').replace('%1$d', date); } else if (unsubscribe.source === 'newsletter') { message = ReactStringReplace( - MailPoet.I18n.t('unsubscribedNewsletter').replace('%$1d', date), + MailPoet.I18n.t('unsubscribedNewsletter').replace('%1$d', date), /\[link\]/g, (match, i) => (
diff --git a/assets/js/src/subscribers/list.jsx b/assets/js/src/subscribers/list.jsx index 39b923c6f8..36304b2c6f 100644 --- a/assets/js/src/subscribers/list.jsx +++ b/assets/js/src/subscribers/list.jsx @@ -60,7 +60,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleSubscribersTrashed') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -75,7 +75,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleSubscribersDeleted') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -90,7 +90,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleSubscribersRestored') - ).replace('%$1d', count.toLocaleString()); + ).replace('%1$d', count.toLocaleString()); } MailPoet.Notice.success(message); }, @@ -156,8 +156,8 @@ const bulkActions = [ onSuccess: function onSuccess(response) { MailPoet.Notice.success( MailPoet.I18n.t('multipleSubscribersMovedToList') - .replace('%$1d', (Number(response.meta.count)).toLocaleString()) - .replace('%$2s', response.meta.segment) + .replace('%1$d', (Number(response.meta.count)).toLocaleString()) + .replace('%2$s', response.meta.segment) ); }, }, @@ -186,8 +186,8 @@ const bulkActions = [ onSuccess: function onSuccess(response) { MailPoet.Notice.success( MailPoet.I18n.t('multipleSubscribersAddedToList') - .replace('%$1d', (Number(response.meta.count)).toLocaleString()) - .replace('%$2s', response.meta.segment) + .replace('%1$d', (Number(response.meta.count)).toLocaleString()) + .replace('%2$s', response.meta.segment) ); }, }, @@ -216,8 +216,8 @@ const bulkActions = [ onSuccess: function onSuccess(response) { MailPoet.Notice.success( MailPoet.I18n.t('multipleSubscribersRemovedFromList') - .replace('%$1d', (Number(response.meta.count)).toLocaleString()) - .replace('%$2s', response.meta.segment) + .replace('%1$d', (Number(response.meta.count)).toLocaleString()) + .replace('%2$s', response.meta.segment) ); }, }, @@ -227,7 +227,7 @@ const bulkActions = [ onSuccess: function onSuccess(response) { MailPoet.Notice.success( MailPoet.I18n.t('multipleSubscribersRemovedFromAllLists') - .replace('%$1d', (Number(response.meta.count)).toLocaleString()) + .replace('%1$d', (Number(response.meta.count)).toLocaleString()) ); }, }, diff --git a/lib/API/JSON/v1/DynamicSegments.php b/lib/API/JSON/v1/DynamicSegments.php index b058c3d3b1..657ce3fdb1 100644 --- a/lib/API/JSON/v1/DynamicSegments.php +++ b/lib/API/JSON/v1/DynamicSegments.php @@ -173,9 +173,9 @@ class DynamicSegments extends APIEndpoint { if (isset($activelyUsedNewslettersSubjects[$segment->getId()])) { return $this->badRequest([ Error::BAD_REQUEST => str_replace( - '%$1s', + '%1$s', "'" . join("', '", $activelyUsedNewslettersSubjects[$segment->getId()] ) . "'", - _x('Segment cannot be deleted because it’s used for %$1s email', 'Alert shown when trying to delete segment, which is assigned to any automatic emails.', 'mailpoet') + _x('Segment cannot be deleted because it’s used for %1$s email', 'Alert shown when trying to delete segment, which is assigned to any automatic emails.', 'mailpoet') ), ]); } diff --git a/lib/API/JSON/v1/Segments.php b/lib/API/JSON/v1/Segments.php index ae4045219b..a1ee00db20 100644 --- a/lib/API/JSON/v1/Segments.php +++ b/lib/API/JSON/v1/Segments.php @@ -183,9 +183,9 @@ class Segments extends APIEndpoint { if (isset($activelyUsedNewslettersSubjects[$segment->getId()])) { return $this->badRequest([ APIError::BAD_REQUEST => str_replace( - '%$1s', + '%1$s', "'" . join("', '", $activelyUsedNewslettersSubjects[$segment->getId()] ) . "'", - _x('List cannot be deleted because it’s used for %$1s email', 'Alert shown when trying to delete segment, which is assigned to any automatic emails.', 'mailpoet') + _x('List cannot be deleted because it’s used for %1$s email', 'Alert shown when trying to delete segment, which is assigned to any automatic emails.', 'mailpoet') ), ]); } @@ -194,11 +194,11 @@ class Segments extends APIEndpoint { if (isset($activelyUsedFormNames[$segment->getId()])) { return $this->badRequest([ APIError::BAD_REQUEST => str_replace( - '%$1s', + '%1$s', "'" . join("', '", $activelyUsedFormNames[$segment->getId()] ) . "'", _nx( - 'List cannot be deleted because it’s used for %$1s form', - 'List cannot be deleted because it’s used for %$1s forms', + 'List cannot be deleted because it’s used for %1$s form', + 'List cannot be deleted because it’s used for %1$s forms', count($activelyUsedFormNames[$segment->getId()]), 'Alert shown when trying to delete segment, when it is assigned to a form.', 'mailpoet' diff --git a/views/emails/newSubscriberNotification.html b/views/emails/newSubscriberNotification.html index b2017aa0e3..f66ca814a6 100644 --- a/views/emails/newSubscriberNotification.html +++ b/views/emails/newSubscriberNotification.html @@ -1,7 +1,7 @@

<%= __('Howdy,') %> -

<%= __('The subscriber %$1s has just subscribed to your list %$2s!') - |replace({'%$1s': subscriber_email, '%$2s': segments_names}) +

<%= __('The subscriber %1$s has just subscribed to your list %2$s!') + |replace({'%1$s': subscriber_email, '%2$s': segments_names}) %>

<%= __('Cheers,') %> diff --git a/views/emails/newSubscriberNotification.txt b/views/emails/newSubscriberNotification.txt index 1135b9f679..12268beaf9 100644 --- a/views/emails/newSubscriberNotification.txt +++ b/views/emails/newSubscriberNotification.txt @@ -1,7 +1,7 @@ <%= __('Howdy,') %> -<%= __('The subscriber %$1s has just subscribed to your list %$2s!') - |replace({'%$1s': subscriber_email, '%$2s': segments_names}) +<%= __('The subscriber %1$s has just subscribed to your list %2$s!') + |replace({'%1$s': subscriber_email, '%2$s': segments_names}) %> <%= __('Cheers,') %> diff --git a/views/forms.html b/views/forms.html index 93746cbb61..43ea645182 100644 --- a/views/forms.html +++ b/views/forms.html @@ -74,7 +74,7 @@ 'currentPage': __('Current Page'), 'pageOutOf': __('of'), 'numberOfItemsSingular': __('1 item'), - 'numberOfItemsMultiple': __('%$1d items'), + 'numberOfItemsMultiple': __('%1$d items'), 'formName': __('Name'), 'noName': _x('no name', 'fallback for forms without a name in a form list'), @@ -84,14 +84,14 @@ 'signups': __('Sign-ups'), 'updatedAt': __('Modified date'), 'oneFormTrashed': __('1 form was moved to the trash.'), - 'multipleFormsTrashed': __('%$1d forms were moved to the trash.'), + 'multipleFormsTrashed': __('%1$d forms were moved to the trash.'), 'oneFormDeleted': __('1 form was permanently deleted.'), - 'multipleFormsDeleted': __('%$1d forms were permanently deleted.'), + 'multipleFormsDeleted': __('%1$d forms were permanently deleted.'), 'oneFormRestored': __('1 form has been restored from the trash.'), - 'multipleFormsRestored': __('%$1d forms have been restored from the trash.'), + 'multipleFormsRestored': __('%1$d forms have been restored from the trash.'), 'edit': __('Edit'), 'duplicate': __('Duplicate'), - 'formDuplicated': __('Form "%$1s" has been duplicated.'), + 'formDuplicated': __('Form "%1$s" has been duplicated.'), 'trash': __('Trash'), 'moveToTrash': __('Move to trash'), 'new': __('New Form'), diff --git a/views/newsletter/editor.html b/views/newsletter/editor.html index 26df0c1435..970760f377 100644 --- a/views/newsletter/editor.html +++ b/views/newsletter/editor.html @@ -382,7 +382,7 @@ 'automatedLatestContentMissing': _x('Please add an “Automatic Latest Content” widget to the email from the right sidebar.', '(Please reuse the current translation used for the string “Automatic Latest Content”) This Error message is displayed when a user tries to send a “Post Notification” email without any “Automatic Latest Content” widget inside'), 'newsletterPreviewEmailMissing': __('Enter an email address to send the preview newsletter to.'), 'newsletterPreviewError': __('Sorry, there was an error, please try again later.'), - 'newsletterPreviewErrorNotice': __('The email could not be sent due to a technical issue with %$1s'), + 'newsletterPreviewErrorNotice': __('The email could not be sent due to a technical issue with %1$s'), 'newsletterPreviewErrorCheckConfiguration': __('Please check your sending method configuration, you may need to consult with your hosting company.'), 'newsletterPreviewErrorUseSendingService': __('The easy alternative is to send emails with MailPoet Sending Service instead, like thousands of other users do.'), 'newsletterPreviewErrorSignUpForSendingService': __('Sign up for free in minutes'), diff --git a/views/newsletters.html b/views/newsletters.html index 60b203bec2..f0340da2bd 100644 --- a/views/newsletters.html +++ b/views/newsletters.html @@ -133,7 +133,7 @@ 'currentPage': __('Current page'), 'pageOutOf': __('of'), 'numberOfItemsSingular': __('1 item'), - 'numberOfItemsMultiple': __('%$1d items'), + 'numberOfItemsMultiple': __('%1$d items'), 'selectType': __('Select type'), 'events': __('Events'), @@ -154,23 +154,23 @@ 'lastModifiedOn': __('Last modified on'), 'sentOn': __('Sent on'), 'oneNewsletterTrashed': __('1 email was moved to the trash.'), - 'multipleNewslettersTrashed': __('%$1d emails were moved to the trash.'), + 'multipleNewslettersTrashed': __('%1$d emails were moved to the trash.'), 'oneNewsletterDeleted': __('1 email was permanently deleted.'), - 'multipleNewslettersDeleted': __('%$1d emails were permanently deleted.'), + 'multipleNewslettersDeleted': __('%1$d emails were permanently deleted.'), 'oneNewsletterRestored': __('1 email has been restored from the Trash.'), - 'multipleNewslettersRestored': __('%$1d emails have been restored from the Trash.'), + 'multipleNewslettersRestored': __('%1$d emails have been restored from the Trash.'), 'trash': __('Trash'), 'moveToTrash': __('Move to trash'), 'edit': __('Edit'), 'duplicate': __('Duplicate'), - 'newsletterDuplicated': __('Email "%$1s" has been duplicated.'), + 'newsletterDuplicated': __('Email "%1$s" has been duplicated.'), 'notSentYet': __('Not sent yet'), 'scheduledFor': __('Scheduled for'), 'scheduleIt': __('Schedule it'), 'active': __('Active'), 'inactive': __('Not Active'), - 'sentToXSubscribers': _x('%$1d sent', 'number of welcome emails sent'), - 'scheduledToXSubscribers': _x('%$1d scheduled', 'number of welcome emails scheduled to be sent'), + 'sentToXSubscribers': _x('%1$d sent', 'number of welcome emails sent'), + 'scheduledToXSubscribers': _x('%1$d scheduled', 'number of welcome emails scheduled to be sent'), 'resume': __('Resume'), 'pause': __('Pause'), 'paused': __('Paused'), @@ -195,7 +195,7 @@ 'clickedStatTooltip': __('Above 3% is excellent.\\nBetween 1 and 3% is good.\\nUnder 1% is bad.'), 'unsubscribedStatTooltip': __('Under 1% is excellent.\\nBetween 1 and 3% is good.\\nOver 3% is bad.'), 'revenueStatsTooltip': __('Revenues generated by customers who made a purchase within two weeks after they clicked on this email. This is the sum of the order totals including shipping and taxes.'), - 'checkBackInHours': __('Nice job! Check back in %$1d hour(s) for more stats.'), + 'checkBackInHours': __('Nice job! Check back in %1$d hour(s) for more stats.'), 'improveThisLinkText': __('What can I do to improve this?'), 'templateFileMalformedError': __('This template file appears to be damaged. Please try another one.'), @@ -204,7 +204,7 @@ 'helpTooltipTemplateUpload': __('You can only upload .json templates that were originally created with MailPoet 3.'), 'upload': __('Upload'), 'mailpoetGuideTemplateTitle': __("MailPoet's Guide"), - 'confirmTemplateDeletion': __('You are about to delete the template named "%$1s".'), + 'confirmTemplateDeletion': __('You are about to delete the template named "%1$s".'), 'delete': __('Delete'), 'select': _x('Select', 'Verb'), 'preview': __('Preview'), @@ -253,7 +253,7 @@ 'first': __('1st'), 'second': __('2nd'), 'third': __('3rd'), - 'nth': __('%$1dth'), + 'nth': __('%1$dth'), 'last': _x('last', 'e.g. monthly every last Monday'), 'next': _x('Next', 'Button label: Next step'), @@ -295,7 +295,7 @@ 'replyToAddressPlaceholder': __('john.doe@email.com'), 'newsletterUpdated': __('Email was updated successfully!'), 'newsletterAdded': __('Email was added successfully!'), - 'newsletterSendingError': __('An error occurred while trying to send. Please check your settings.'), + 'newsletterSendingError': __('An error occurred while trying to send. Please check your settings.'), 'finalNewsletterStep': __('Final Step: Last Details'), 'saveDraftAndClose': __('Save as draft and close'), 'pendingKeyApprovalNotice': __('You’ll soon be able to send once our team reviews your account. In the meantime, you can send previews to [link]your authorized emails[/link].'), @@ -310,25 +310,25 @@ 'newsletterBeingSent': __('The newsletter is being sent...'), 'newsletterHasBeenScheduled': __('The newsletter has been scheduled.'), 'newsletterSendingHasBeenResumed': __('The newsletter sending has been resumed.'), - 'newsletterInvalidFromAddress': _x('You need to authorize the email address %$1s to be able to send with it. [link]Authorize my email address[/link]', 'Users need to confirm that they own the email address they want to use to send their newsletter'), + 'newsletterInvalidFromAddress': _x('You need to authorize the email address %1$s to be able to send with it. [link]Authorize my email address[/link]', 'Users need to confirm that they own the email address they want to use to send their newsletter'), 'welcomeEmailActivated': __('Your Welcome Email is now activated!'), 'welcomeEmailActivationFailed': __('Your Welcome Email could not be activated, please check the settings.'), 'reEngagementEmailActivated': __('Your ReEngagement Email is now activated!'), 'reEngagementEmailActivationFailed': __('Your ReEngagement Email could not be activated, please check the settings.'), 'postNotificationActivated': __('Your post notification is now active!'), 'postNotificationActivationFailed': __('Your Post Notification could not be activated, check the settings.'), - 'welcomeEventSegment': __('Sent when someone subscribes to the list: "%$1s".'), + 'welcomeEventSegment': __('Sent when someone subscribes to the list: "%1$s".'), 'welcomeEventWPUserAnyRole': __('Sent when a new WordPress user is added to your site.'), - 'welcomeEventWPUserWithRole': __('Sent when a new WordPress user with the role "%$1s" is added to your site.'), - 'sendingDelayMinutes': __('%$1d minute(s) later'), - 'sendingDelayHours': __('%$1d hour(s) later'), - 'sendingDelayDays': __('%$1d day(s) later'), - 'sendingDelayWeeks': __('%$1d week(s) later'), + 'welcomeEventWPUserWithRole': __('Sent when a new WordPress user with the role "%1$s" is added to your site.'), + 'sendingDelayMinutes': __('%1$d minute(s) later'), + 'sendingDelayHours': __('%1$d hour(s) later'), + 'sendingDelayDays': __('%1$d day(s) later'), + 'sendingDelayWeeks': __('%1$d week(s) later'), 'sendingDelayInvalid': __('Invalid sending delay.'), - 'sendDaily': __('Daily at %$1s'), - 'sendWeekly': __('Weekly on %$1s at %$2s'), - 'sendMonthly': __('Monthly on the %$1s at %$2s'), - 'sendNthWeekDay': __('Every %$1s %$2s of the month at %$3s'), + 'sendDaily': __('Daily at %1$s'), + 'sendWeekly': __('Weekly on %1$s at %2$s'), + 'sendMonthly': __('Monthly on the %1$s at %2$s'), + 'sendNthWeekDay': __('Every %1$s %2$s of the month at %3$s'), 'sendImmediately': __('Immediately'), 'sendTo': __("Send to %1$s"), 'sendingToSegmentsNotSpecified': __('You need to select a list to send to.'), @@ -340,12 +340,12 @@ 'transactionalEmailNoticeBody': __('All of your WordPress and WooCommerce emails are sent with your hosting company, unless you have an SMTP plugin. Would you like such emails to be delivered with MailPoet’s active sending method for better deliverability?'), 'transactionalEmailNoticeBodyReadMore': _x('Read more.', 'This is a link that leads to more information about transactional emails'), 'transactionalEmailNoticeCTA': _x('Enable', 'Button, after clicking it we will enable transactional emails'), - 'mailerSendErrorNotice': __('Sending has been paused due to a technical issue with %$1s'), + 'mailerSendErrorNotice': __('Sending has been paused due to a technical issue with %1$s'), 'mailerSendErrorCheckConfiguration': __('Please check your sending method configuration, you may need to consult with your hosting company.'), 'mailerSendErrorUseSendingService': __('The easy alternative is to send emails with MailPoet Sending Service instead, like thousands of other users do.'), 'mailerSendErrorSignUpForSendingService': __('Sign up for free in minutes'), 'mailerConnectionErrorNotice': __('Sending is paused because the following connection issue prevents MailPoet from delivering emails'), - 'mailerErrorCode': __('Error code: %$1s'), + 'mailerErrorCode': __('Error code: %1$s'), 'mailerCheckSettingsNotice': __('Check your [link]sending method settings[/link].'), 'mailerResumeSendingButton': __('Resume sending'), 'mailerResumeSendingAfterUpgradeButton': __('I have upgraded my subscription, resume sending'), @@ -428,7 +428,7 @@ 'automaticEmailActivated': __('Your %1s Automatic Email is now activated!'), 'automaticEmailActivationFailed': __('Your %1s Automatic Email could not be activated, please check the settings.'), 'automaticEmailEventOptionsNotConfigured': __('You need to configure email options before this email can be sent.'), - 'sentToXCustomers': __('Sent to %$1d customers'), + 'sentToXCustomers': __('Sent to %1$d customers'), 'wooCommerceEmailsWarning': __('WooCommerce emails won’t be sent to new customers because the opt-in on checkout is disabled. Enable it so they can immediately get your emails after their first purchase.'), 'wooCommerceEmailsWarningLink': __('Edit WooCommerce settings'), 'reEngagementEmailsDisableIfTrackingIs': __('Re-engagement emails are disabled because [link]open and click tracking[/link] is disabled.'), diff --git a/views/segments.html b/views/segments.html index b406af0a60..9c9a7c79a8 100644 --- a/views/segments.html +++ b/views/segments.html @@ -64,17 +64,17 @@ 'bounced': __('Bounced'), 'createdOn': __('Created on'), 'oneSegmentTrashed': __('1 list was moved to the trash. Note that deleting a list does not delete its subscribers.'), - 'multipleSegmentsTrashed': __('%$1d lists were moved to the trash. Note that deleting a list does not delete its subscribers.'), + 'multipleSegmentsTrashed': __('%1$d lists were moved to the trash. Note that deleting a list does not delete its subscribers.'), 'oneSegmentDeleted': __('1 list was permanently deleted. Note that deleting a list does not delete its subscribers.'), - 'multipleSegmentsDeleted': __('%$1d lists were permanently deleted. Note that deleting a list does not delete its subscribers.'), + 'multipleSegmentsDeleted': __('%1$d lists were permanently deleted. Note that deleting a list does not delete its subscribers.'), 'oneSegmentRestored': __('1 list has been restored from the Trash.'), - 'multipleSegmentsRestored': __('%$1d lists have been restored from the Trash.'), + 'multipleSegmentsRestored': __('%1$d lists have been restored from the Trash.'), 'duplicate': __('Duplicate'), - 'listDuplicated': __('List "%$1s" has been duplicated.'), + 'listDuplicated': __('List "%1$s" has been duplicated.'), 'update': __('Update'), 'forceSync': __('Force Sync'), 'readMore': __('Read More'), - 'listSynchronized': __('List "%$1s" has been synchronized.'), + 'listSynchronized': __('List "%1$s" has been synchronized.'), 'viewSubscribers': __('View Subscribers'), 'new': __('New List'), 'newSegment': __('New Segment'), @@ -97,17 +97,17 @@ 'currentPage': __('Current page'), 'pageOutOf': __('of'), 'numberOfItemsSingular': __('1 item'), - 'numberOfItemsMultiple': __('%$1d items'), + 'numberOfItemsMultiple': __('%1$d items'), 'segmentDescriptionTip': __('This text box is for your own use and is never shown to your subscribers.'), 'backToList': __('Back'), - 'subscribersInPlanCount': _x('%$1d / %$2d', 'count / total subscribers'), + 'subscribersInPlanCount': _x('%1$d / %2$d', 'count / total subscribers'), 'subscribersInPlan': _x('%s subscribers in your plan', 'number of subscribers in a sending plan'), 'subscribersInPlanTooltip': __('This is the total of subscribed, unconfirmed and inactive subscribers we count when you are sending with MailPoet Sending Service. The count excludes unsubscribed and bounced (invalid) email addresses.'), 'mailpoetSubscribers': _x('%s MailPoet subscribers', 'number of subscribers in the plugin'), - 'mailpoetSubscribersTooltipFree': __('This is the total of all subscribers including %$1d WordPress users. To exclude WordPress users, please purchase one of our premium plans.'), + 'mailpoetSubscribersTooltipFree': __('This is the total of all subscribers including %1$d WordPress users. To exclude WordPress users, please purchase one of our premium plans.'), 'mailpoetSubscribersTooltipPremium': __('This is the total of all subscribers excluding all WordPress users.'), 'pageTitleSegments': __('Segments'), @@ -126,7 +126,7 @@ 'loadingDynamicSegmentItems': __('Loading data…'), 'noDynamicSegmentItemsFound': __('No segments found'), 'numberOfItemsSingular': __('1 item'), - 'numberOfItemsMultiple': __('%$1d items'), + 'numberOfItemsMultiple': __('%1$d items'), 'previousPage': __('Previous page'), 'firstPage': __('First page'), 'nextPage': __('Next page'), @@ -178,10 +178,10 @@ 'selectWooSubscription': __('Search subscriptions'), 'oneDynamicSegmentTrashed': __('1 segment was moved to the trash.'), - 'multipleDynamicSegmentsTrashed': __('%$1d segments were moved to the trash.'), + 'multipleDynamicSegmentsTrashed': __('%1$d segments were moved to the trash.'), 'oneDynamicSegmentRestored': __('1 segment has been restored from the Trash.'), - 'multipleDynamicSegmentsRestored': __('%$1d segments have been restored from the Trash.'), - 'multipleDynamicSegmentsDeleted': __('%$1d segments were permanently deleted.'), + 'multipleDynamicSegmentsRestored': __('%1$d segments have been restored from the Trash.'), + 'multipleDynamicSegmentsDeleted': __('%1$d segments were permanently deleted.'), 'oneDynamicSegmentDeleted': __('1 segment was permanently deleted.'), 'wooNumberOfOrders': __('# of orders'), @@ -205,7 +205,7 @@ 'dynamicSegmentSizeIsCalculated': __('Calculating segment size…'), 'dynamicSegmentSizeCalculatingTimeout': __("It's taking longer than usual to generate the segment, which may be due to a complex configuration. Try using fewer or simpler conditions."), - 'dynamicSegmentSize': __('This segment has %$1d subscribers.'), + 'dynamicSegmentSize': __('This segment has %1$d subscribers.'), 'unknownBadgeName': __('Unknown'), 'unknownBadgeTooltip': __('Not enough data.'), diff --git a/views/subscribers/subscribers.html b/views/subscribers/subscribers.html index 8b7b009763..7bfbd076b2 100644 --- a/views/subscribers/subscribers.html +++ b/views/subscribers/subscribers.html @@ -66,9 +66,9 @@ 'currentPage': __('Current Page'), 'pageOutOf': __('of'), 'numberOfItemsSingular': __('1 item'), - 'numberOfItemsMultiple': __('%$1d items'), + 'numberOfItemsMultiple': __('%1$d items'), - 'subscribersInPlanCount': _x('%$1d / %$2d', 'count / total subscribers'), + 'subscribersInPlanCount': _x('%1$d / %2$d', 'count / total subscribers'), 'subscribersInPlan': _x('%s subscribers in your plan', 'number of subscribers in a sending plan'), 'subscribersInPlanTooltip': __('This is the total of subscribed, unconfirmed and inactive subscribers we count when you are sending with MailPoet Sending Service. The count excludes unsubscribed and bounced (invalid) email addresses.'), @@ -82,15 +82,15 @@ 'inactive': __('Inactive'), 'bounced': __('Bounced'), 'selectList': __('Select a list'), - 'unsubscribedOn': __('Unsubscribed on %$1s'), + 'unsubscribedOn': __('Unsubscribed on %1$s'), 'subscriberUpdated': __('Subscriber was updated successfully!'), 'subscriberAdded': __('Subscriber was added successfully!'), 'welcomeEmailTip': __('This subscriber will receive Welcome Emails if any are active for your lists.'), - 'unsubscribedNewsletter': __('Unsubscribed at %$1d, from newsletter [link].'), - 'unsubscribedManage': __('Unsubscribed at %$1d, using the “Manage my Subscription” page.'), - 'unsubscribedAdmin': __('Unsubscribed at %$1d, by admin "%$2d".'), - 'unsubscribedUnknown': __('Unsubscribed at %$1d, for an unknown reason.'), + 'unsubscribedNewsletter': __('Unsubscribed at %1$d, from newsletter [link].'), + 'unsubscribedManage': __('Unsubscribed at %1$d, using the “Manage my Subscription” page.'), + 'unsubscribedAdmin': __('Unsubscribed at %1$d, by admin "%2$d".'), + 'unsubscribedUnknown': __('Unsubscribed at %1$d, for an unknown reason.'), 'subscriber': __('Subscriber'), 'status': __('Status'), @@ -99,21 +99,21 @@ 'subscribedOn': __('Subscribed on'), 'lastModifiedOn': __('Last modified on'), 'oneSubscriberTrashed': __('1 subscriber was moved to the trash.'), - 'multipleSubscribersTrashed': __('%$1d subscribers were moved to the trash.'), + 'multipleSubscribersTrashed': __('%1$d subscribers were moved to the trash.'), 'oneSubscriberDeleted': __('1 subscriber was permanently deleted.'), - 'multipleSubscribersDeleted': __('%$1d subscribers were permanently deleted.'), + 'multipleSubscribersDeleted': __('%1$d subscribers were permanently deleted.'), 'oneSubscriberRestored': __('1 subscriber has been restored from the trash.'), - 'multipleSubscribersRestored': __('%$1d subscribers have been restored from the trash.'), + 'multipleSubscribersRestored': __('%1$d subscribers have been restored from the trash.'), 'moveToList': __('Move to list...'), - 'multipleSubscribersMovedToList': __('%$1d subscribers were moved to list %$2s'), + 'multipleSubscribersMovedToList': __('%1$d subscribers were moved to list %2$s'), 'addToList': __('Add to list...'), - 'multipleSubscribersAddedToList': __('%$1d subscribers were added to list %$2s.'), + 'multipleSubscribersAddedToList': __('%1$d subscribers were added to list %2$s.'), 'removeFromList': __('Remove from list...'), - 'multipleSubscribersRemovedFromList': __('%$1d subscribers were removed from list %$2s'), + 'multipleSubscribersRemovedFromList': __('%1$d subscribers were removed from list %2$s'), 'removeFromAllLists': __('Remove from all lists'), 'unsubscribe': _x('Unsubscribe', 'This is an action on the subscribers page'), 'unsubscribeConfirm': __('This action will unsubscribe %s subscribers from all lists. This action cannot be undone. Are you sure, you want to continue?'), - 'multipleSubscribersRemovedFromAllLists': __('%$1d subscribers were removed from all lists.'), + 'multipleSubscribersRemovedFromAllLists': __('%1$d subscribers were removed from all lists.'), 'resendConfirmationEmail': __('Resend confirmation email'), 'oneConfirmationEmailSent': __('1 confirmation email has been sent.'), 'listsToWhichSubscriberWasSubscribed': __('Lists to which the subscriber was subscribed.'),