Replace wrong placeholders in translatable strings

[MAILPOET-3863]
This commit is contained in:
wxa
2021-10-19 11:57:44 +03:00
committed by Ján Mikláš
parent ad261eb02a
commit d8bfcb64bb
30 changed files with 156 additions and 156 deletions

View File

@ -19,8 +19,8 @@ const SubscribersInPlan = ({
const subscribersInPlanCount = subscribersInPlanLimit ? (
<b key="subscribers_count">
{MailPoet.I18n.t('subscribersInPlanCount')
.replace('%$1d', subscribersInPlan.toLocaleString())
.replace('%$2d', subscribersInPlanLimit.toLocaleString())}
.replace('%1$d', subscribersInPlan.toLocaleString())
.replace('%2$d', subscribersInPlanLimit.toLocaleString())}
</b>
) : (
<b key="subscribers_count">{subscribersInPlan}</b>

View File

@ -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) => {

View File

@ -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;

View File

@ -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 <a> tags with some attributes
@ -100,7 +100,7 @@ const MailerError = (props) => {
<p>
{
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')
}
:

View File

@ -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 (

View File

@ -535,7 +535,7 @@ Module.NewsletterPreviewView = Marionette.View.extend({
const errors = response.errors.map(function (error) {
let errorMessage = `
<p>
${MailPoet.I18n.t('newsletterPreviewErrorNotice').replace('%$1s', window.config.mtaMethod)}:
${MailPoet.I18n.t('newsletterPreviewErrorNotice').replace('%1$s', window.config.mtaMethod)}:
<i>${error.message}</i>
</p>
`;

View File

@ -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:

View File

@ -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;

View File

@ -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);
},

View File

@ -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 (
<div>

View File

@ -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();

View File

@ -118,7 +118,7 @@ const Statistics = ({ newsletter, isSent, currentTime }) => {
{tooEarlyForStats && wrapContentInLink(
(
<Tag className="mailpoet-listing-stats-too-early" dimension="large" variant="excellent" isInverted>
{MailPoet.I18n.t('checkBackInHours').replace('%$1d', showStatsTimeout - sentHoursAgo)}
{MailPoet.I18n.t('checkBackInHours').replace('%1$d', showStatsTimeout - sentHoursAgo)}
</Tag>
),
'check-back'

View File

@ -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 (
<div>
@ -238,7 +238,7 @@ class NewsletterListWelcome extends React.Component {
} else {
sendingEvent = ReactStringReplace(
MailPoet.I18n.t('welcomeEventWPUserWithRole'),
'"%$1s"',
'"%1$s"',
(match, i) => (
<Tag variant="list" key={i}>{mailpoetRoles[newsletter.options.role]}</Tag>
)
@ -263,7 +263,7 @@ class NewsletterListWelcome extends React.Component {
sendingEvent = ReactStringReplace(
MailPoet.I18n.t('welcomeEventSegment'),
'"%$1s"',
'"%1$s"',
(match, i) => (
<Tag variant="list" key={i}>{segment.name}</Tag>
)
@ -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;

View File

@ -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];
}

View File

@ -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(

View File

@ -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,
});
}

View File

@ -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);
},

View File

@ -89,7 +89,7 @@ const SubscribersCounter: React.FunctionComponent = () => {
return (
<div className="mailpoet-form-field">
<span className="mailpoet-form-notice-message">
{(MailPoet.I18n.t('dynamicSegmentSize')).replace('%$1d', subscribersCount.count.toLocaleString())}
{(MailPoet.I18n.t('dynamicSegmentSize')).replace('%1$d', subscribersCount.count.toLocaleString())}
</span>
</div>
);

View File

@ -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) => {

View File

@ -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) => (
<a
@ -196,7 +196,7 @@ function afterFormContent(values) {
)
);
} else {
message = MailPoet.I18n.t('unsubscribedUnknown').replace('%$1d', date);
message = MailPoet.I18n.t('unsubscribedUnknown').replace('%1$d', date);
}
return (
<p className="description" key={message}>

View File

@ -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())
);
},
},

View File

@ -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 its 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 its used for %1$s email', 'Alert shown when trying to delete segment, which is assigned to any automatic emails.', 'mailpoet')
),
]);
}

View File

@ -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 its 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 its 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 its used for %$1s form',
'List cannot be deleted because its used for %$1s forms',
'List cannot be deleted because its used for %1$s form',
'List cannot be deleted because its used for %1$s forms',
count($activelyUsedFormNames[$segment->getId()]),
'Alert shown when trying to delete segment, when it is assigned to a form.',
'mailpoet'

View File

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

View File

@ -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,') %>

View File

@ -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'),

View File

@ -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 <b>send emails with MailPoet Sending Service</b> instead, like thousands of other users do.'),
'newsletterPreviewErrorSignUpForSendingService': __('Sign up for free in minutes'),

View File

@ -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. <a href="%$1s">Please check your settings</a>.'),
'newsletterSendingError': __('An error occurred while trying to send. <a href="%1$s">Please check your settings</a>.'),
'finalNewsletterStep': __('Final Step: Last Details'),
'saveDraftAndClose': __('Save as draft and close'),
'pendingKeyApprovalNotice': __('Youll 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 <i>%$1s</i> 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 <i>%1$s</i> 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 MailPoets 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 <b>send emails with MailPoet Sending Service</b> 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 wont 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.'),

View File

@ -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.'),

View File

@ -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 <strong>%$2s</strong>'),
'multipleSubscribersMovedToList': __('%1$d subscribers were moved to list <strong>%2$s</strong>'),
'addToList': __('Add to list...'),
'multipleSubscribersAddedToList': __('%$1d subscribers were added to list <strong>%$2s</strong>.'),
'multipleSubscribersAddedToList': __('%1$d subscribers were added to list <strong>%2$s</strong>.'),
'removeFromList': __('Remove from list...'),
'multipleSubscribersRemovedFromList': __('%$1d subscribers were removed from list <strong>%$2s</strong>'),
'multipleSubscribersRemovedFromList': __('%1$d subscribers were removed from list <strong>%2$s</strong>'),
'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.'),