Localized strings
This commit is contained in:
parent
3d956ec141
commit
19fe5331d2
13 changed files with 123 additions and 80 deletions
|
@ -117,14 +117,14 @@ export default class Statistics extends Component {
|
|||
<div>
|
||||
<Title>{t('campaignStatistics')}</Title>
|
||||
|
||||
{renderMetrics('total', t('Total'), false)}
|
||||
{renderMetrics('delivered', t('Delivered'))}
|
||||
{renderMetrics('blacklisted', t('Blacklisted'), false)}
|
||||
{renderMetricsWithProgress('bounced', t('Bounced'), 'info')}
|
||||
{renderMetricsWithProgress('complained', t('Complaints'), 'danger')}
|
||||
{renderMetricsWithProgress('unsubscribed', t('Unsubscribed'), 'warning')}
|
||||
{!entity.open_tracking_disabled && renderMetricsWithProgress('opened', t('Opened'), 'success')}
|
||||
{!entity.click_tracking_disabled && renderMetricsWithProgress('clicks', t('Clicked'), 'success')}
|
||||
{renderMetrics('total', t('total'), false)}
|
||||
{renderMetrics('delivered', t('delivered'))}
|
||||
{renderMetrics('blacklisted', t('blacklisted'), false)}
|
||||
{renderMetricsWithProgress('bounced', t('bounced'), 'info')}
|
||||
{renderMetricsWithProgress('complained', t('complaints'), 'danger')}
|
||||
{renderMetricsWithProgress('unsubscribed', t('unsubscribed'), 'warning')}
|
||||
{!entity.open_tracking_disabled && renderMetricsWithProgress('opened', t('opened'), 'success')}
|
||||
{!entity.click_tracking_disabled && renderMetricsWithProgress('clicks', t('clicked'), 'success')}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -36,14 +36,14 @@ export default class StatisticsLinkClicks extends Component {
|
|||
const t = this.props.t;
|
||||
|
||||
const linksColumns = [
|
||||
{ data: 0, title: t('URL'), render: data => <code>{data}</code> },
|
||||
{ data: 1, title: t('Unique visitors') },
|
||||
{ data: 2, title: t('Total clicks') }
|
||||
{ data: 0, title: t('url'), render: data => <code>{data}</code> },
|
||||
{ data: 1, title: t('uniqueVisitors') },
|
||||
{ data: 2, title: t('totalClicks') }
|
||||
];
|
||||
|
||||
return (
|
||||
<div>
|
||||
<Title>{t('Campaign links')}</Title>
|
||||
<Title>{t('campaignLinks')}</Title>
|
||||
|
||||
<Table ref={node => this.table = node} withHeader dataUrl={`rest/campaigns-link-clicks-table/${this.props.entity.id}`} columns={linksColumns} />
|
||||
</div>
|
||||
|
|
|
@ -99,12 +99,12 @@ export default class StatisticsOpened extends Component {
|
|||
const stats = this.state.statisticsOpened;
|
||||
|
||||
const subscribersColumns = [
|
||||
{ data: 0, title: t('Email') },
|
||||
{ data: 0, title: t('email') },
|
||||
{ data: 1, title: t('subscriptionId'), render: data => <code>{data}</code> },
|
||||
{ data: 2, title: t('listId'), render: data => <code>{data}</code> },
|
||||
{ data: 3, title: t('list') },
|
||||
{ data: 4, title: t('listNamespace') },
|
||||
{ data: 5, title: t('Opens count') }
|
||||
{ data: 5, title: t('opensCount') }
|
||||
];
|
||||
|
||||
console.log(this.state.statisticsOpened);
|
||||
|
@ -117,8 +117,8 @@ export default class StatisticsOpened extends Component {
|
|||
|
||||
const navPills = (
|
||||
<ul className={`nav nav-pills ${styles.navPills}`}>
|
||||
{renderNavPill('countries', t('Countries'))}
|
||||
{renderNavPill('devices', t('Devices'))}
|
||||
{renderNavPill('countries', t('countries'))}
|
||||
{renderNavPill('devices', t('devices'))}
|
||||
</ul>
|
||||
);
|
||||
|
||||
|
@ -126,28 +126,28 @@ export default class StatisticsOpened extends Component {
|
|||
let charts = null;
|
||||
|
||||
const deviceTypes = {
|
||||
desktop: t('Desktop'),
|
||||
tv: t('TV'),
|
||||
tablet: t('Tablet'),
|
||||
phone: t('Phone'),
|
||||
bot: t('Bot'),
|
||||
car: t('Car'),
|
||||
console: t('Console')
|
||||
desktop: t('desktop'),
|
||||
tv: t('tv'),
|
||||
tablet: t('tablet'),
|
||||
phone: t('phone'),
|
||||
bot: t('bot'),
|
||||
car: t('car'),
|
||||
console: t('console')
|
||||
};
|
||||
|
||||
if (agg === 'devices') {
|
||||
charts = (
|
||||
<div className={styles.charts}>
|
||||
{navPills}
|
||||
<h4 className={styles.chartTitle}>{t('Distribution by device type')}</h4>
|
||||
<h4 className={styles.chartTitle}>{t('distributionByDeviceType')}</h4>
|
||||
<Chart
|
||||
width="100%"
|
||||
height="380px"
|
||||
chartType="PieChart"
|
||||
loader={<div>{t('Loading chart')}</div>}
|
||||
loader={<div>{t('loadingChart')}</div>}
|
||||
data={[
|
||||
[t('Device type'), t('Count')],
|
||||
...stats.devices.map(entry => [deviceTypes[entry.key] || t('Unknown'), entry.count])
|
||||
[t('deviceType'), t('count')],
|
||||
...stats.devices.map(entry => [deviceTypes[entry.key] || t('unknown'), entry.count])
|
||||
]}
|
||||
options={{
|
||||
chartArea: {
|
||||
|
@ -174,17 +174,17 @@ export default class StatisticsOpened extends Component {
|
|||
charts = (
|
||||
<div className={styles.charts}>
|
||||
{navPills}
|
||||
<h4 className={styles.sectionTitle}>{t('Distribution by country')}</h4>
|
||||
<h4 className={styles.sectionTitle}>{t('distributionByCountry')}</h4>
|
||||
<div className="row">
|
||||
<div className={`col-md-6 ${styles.chart}`}>
|
||||
<Chart
|
||||
width="100%"
|
||||
height="380px"
|
||||
chartType="PieChart"
|
||||
loader={<div>{t('Loading chart')}</div>}
|
||||
loader={<div>{t('loadingChart')}</div>}
|
||||
data={[
|
||||
[t('Country'), t('Count')],
|
||||
...stats.countries.map(entry => [entry.key || t('Unknown'), entry.count])
|
||||
[t('country'), t('count')],
|
||||
...stats.countries.map(entry => [entry.key || t('unknown'), entry.count])
|
||||
]}
|
||||
options={{
|
||||
chartArea: {
|
||||
|
@ -213,7 +213,7 @@ export default class StatisticsOpened extends Component {
|
|||
chartType="GeoChart"
|
||||
data={[
|
||||
['Country', 'Count'],
|
||||
...stats.countries.map(entry => [entry.key || t('Unknown'), entry.count])
|
||||
...stats.countries.map(entry => [entry.key || t('unknown'), entry.count])
|
||||
]}
|
||||
mapsApiKey={mailtrainConfig.mapsApiKey}
|
||||
/>
|
||||
|
@ -227,13 +227,13 @@ export default class StatisticsOpened extends Component {
|
|||
|
||||
return (
|
||||
<div>
|
||||
<Title>{t('Detailed Statistics')}</Title>
|
||||
<Title>{t('detailedStatistics')}</Title>
|
||||
|
||||
{charts}
|
||||
|
||||
<hr/>
|
||||
|
||||
<h4 className={styles.sectionTitle}>{t('List of subscribers that opened the campaign')}</h4>
|
||||
<h4 className={styles.sectionTitle}>{t('listOfSubscribersThatOpenedTheCampaign')}</h4>
|
||||
<Table ref={node => this.table = node} withHeader dataUrl={`rest/campaigns-opens-table/${entity.id}`} columns={subscribersColumns} />
|
||||
</div>
|
||||
);
|
||||
|
|
|
@ -37,7 +37,7 @@ export default class StatisticsSubsList extends Component {
|
|||
const t = this.props.t;
|
||||
|
||||
const subscribersColumns = [
|
||||
{ data: 0, title: t('Email') },
|
||||
{ data: 0, title: t('email') },
|
||||
{ data: 1, title: t('subscriptionId'), render: data => <code>{data}</code> },
|
||||
{ data: 2, title: t('listId'), render: data => <code>{data}</code> },
|
||||
{ data: 3, title: t('list') },
|
||||
|
|
|
@ -217,8 +217,8 @@ class SendControls extends Component {
|
|||
async resetAsync() {
|
||||
const t = this.props.t;
|
||||
this.actionDialog(
|
||||
t('Confirm reset'),
|
||||
t('Do you want to reset the campaign? All statistics and the track of delivered messages will be lost.'),
|
||||
t('confirmReset'),
|
||||
t('doYouWantToResetTheCampaign?All'),
|
||||
async () => {
|
||||
await this.postAndMaskStateError(`rest/campaign-reset/${this.props.entity.id}`);
|
||||
await this.refreshEntity();
|
||||
|
@ -479,7 +479,7 @@ export default class Status extends Component {
|
|||
<Title>{t('campaignStatus')}</Title>
|
||||
|
||||
<AlignedRow label={t('name')}>{entity.name}</AlignedRow>
|
||||
<AlignedRow label={t('Delivered')}>{entity.delivered}</AlignedRow>
|
||||
<AlignedRow label={t('delivered')}>{entity.delivered}</AlignedRow>
|
||||
<AlignedRow label={t('status')}>{this.campaignStatusLabels[entity.status]}</AlignedRow>
|
||||
|
||||
{sendSettings}
|
||||
|
|
|
@ -37,8 +37,8 @@ import StatisticsLinkClicks
|
|||
|
||||
function getMenus(t) {
|
||||
const aggLabels = {
|
||||
'countries': t('Countries'),
|
||||
'devices': t('Devices')
|
||||
'countries': t('countries'),
|
||||
'devices': t('devices')
|
||||
};
|
||||
|
||||
return {
|
||||
|
@ -67,27 +67,27 @@ function getMenus(t) {
|
|||
panelRender: props => <Statistics entity={props.resolved.campaign} />,
|
||||
children: {
|
||||
delivered: {
|
||||
title: t('Delivered'),
|
||||
title: t('delivered'),
|
||||
link: params => `/campaigns/${params.campaignId}/statistics/delivered`,
|
||||
panelRender: props => <StatisticsSubsList entity={props.resolved.campaign} title={t('Delivered Emails')} status={SubscriptionStatus.SUBSCRIBED} />
|
||||
panelRender: props => <StatisticsSubsList entity={props.resolved.campaign} title={t('deliveredEmails')} status={SubscriptionStatus.SUBSCRIBED} />
|
||||
},
|
||||
complained: {
|
||||
title: t('Complained'),
|
||||
title: t('complained'),
|
||||
link: params => `/campaigns/${params.campaignId}/statistics/complained`,
|
||||
panelRender: props => <StatisticsSubsList entity={props.resolved.campaign} title={t('Subscribers that Complained')} status={SubscriptionStatus.COMPLAINED} />
|
||||
panelRender: props => <StatisticsSubsList entity={props.resolved.campaign} title={t('subscribersThatComplained')} status={SubscriptionStatus.COMPLAINED} />
|
||||
},
|
||||
bounced: {
|
||||
title: t('Bounced'),
|
||||
title: t('bounced'),
|
||||
link: params => `/campaigns/${params.campaignId}/statistics/bounced`,
|
||||
panelRender: props => <StatisticsSubsList entity={props.resolved.campaign} title={t('Emails that Bounced')} status={SubscriptionStatus.BOUNCED} />
|
||||
panelRender: props => <StatisticsSubsList entity={props.resolved.campaign} title={t('emailsThatBounced')} status={SubscriptionStatus.BOUNCED} />
|
||||
},
|
||||
unsubscribed: {
|
||||
title: t('Unsubscribed'),
|
||||
title: t('unsubscribed'),
|
||||
link: params => `/campaigns/${params.campaignId}/statistics/unsubscribed`,
|
||||
panelRender: props => <StatisticsSubsList entity={props.resolved.campaign} title={t('Subscribers that Unsubscribed')} status={SubscriptionStatus.UNSUBSCRIBED} />
|
||||
panelRender: props => <StatisticsSubsList entity={props.resolved.campaign} title={t('subscribersThatUnsubscribed')} status={SubscriptionStatus.UNSUBSCRIBED} />
|
||||
},
|
||||
'opened': {
|
||||
title: t('Opened'),
|
||||
title: t('opened'),
|
||||
resolve: {
|
||||
statisticsOpened: params => `rest/campaign-statistics/${params.campaignId}/opened`
|
||||
},
|
||||
|
@ -101,7 +101,7 @@ function getMenus(t) {
|
|||
}
|
||||
},
|
||||
'clicks': {
|
||||
title: t('Clicks'),
|
||||
title: t('clicks'),
|
||||
link: params => `/campaigns/${params.campaignId}/statistics/clicks`,
|
||||
panelRender: props => <StatisticsLinkClicks entity={props.resolved.campaign} />
|
||||
}
|
||||
|
|
|
@ -216,7 +216,7 @@ export default class CUD extends Component {
|
|||
|
||||
<TextArea id="description" label={t('description')}/>
|
||||
|
||||
<InputField id="contact_email" label={t('contactEmail')} help={t('Contact email shown in the list subscription and management forms. If no contact email is given, the admin email from Global settings is used.')}/>
|
||||
<InputField id="contact_email" label={t('contactEmail')} help={t('contactEmailShownInTheListSubscription')}/>
|
||||
<InputField id="homepage" label={t('homepage')} help={t('homepageUrlUsedInSubscriptionFormsAnd')}/>
|
||||
<InputField id="to_name" label={t('recipientsNameTemplate')} help={t('specifyUsingMergeTagsOfThisListHowTo')}/>
|
||||
<TableSelect id="send_configuration" label={t('sendConfiguration')} withHeader dropdown dataUrl='rest/send-configurations-table' columns={sendConfigurationsColumns} selectionLabelIndex={1} help={t('sendConfigurationThatWillBeUsedFor')}/>
|
||||
|
|
|
@ -473,7 +473,7 @@ export default class CUD extends Component {
|
|||
<AlignedRow>
|
||||
<div className="help-block">
|
||||
<small>
|
||||
{t('Note: These links are solely for a quick preview. To get the address of the subscription form, go to the list\'s subscribers and click on "Subscription Form".')}
|
||||
{t('noteTheseLinksAreSolelyForAQuickPreview')}
|
||||
</small>
|
||||
</div>
|
||||
<p>
|
||||
|
@ -504,7 +504,7 @@ export default class CUD extends Component {
|
|||
<div className={this.state.previewFullscreen ? formsStyles.editorFullscreen : formsStyles.editor}>
|
||||
<div className={formsStyles.navbar}>
|
||||
{this.state.fullscreen && <img className={formsStyles.logo} src={getTrustedUrl('static/mailtrain-notext.png')}/>}
|
||||
<div className={formsStyles.title}>{t('Form preview:') + ' ' + this.state.previewLabel}</div>
|
||||
<div className={formsStyles.title}>{t('formPreview') + ' ' + this.state.previewLabel}</div>
|
||||
<a className={formsStyles.btn} onClick={() => this.setState({previewContents: null, previewFullscreen: false})}><Icon icon="remove"/></a>
|
||||
<a className={formsStyles.btn} onClick={() => this.setState({previewFullscreen: !this.state.previewFullscreen})}><Icon icon="fullscreen"/></a>
|
||||
</div>
|
||||
|
|
|
@ -105,7 +105,7 @@ export default class ViewAndOutput extends Component {
|
|||
if (this.state.report.state === ReportState.FINISHED) {
|
||||
reportContent = viewType.getContent(this.state.content);
|
||||
} else if (this.state.report.state === ReportState.SCHEDULED || this.state.report.state === ReportState.PROCESSING) {
|
||||
reportContent = <div className="alert alert-info" role="alert">{t('Report is being generated')}</div>;
|
||||
reportContent = <div className="alert alert-info" role="alert">{t('reportIsBeingGenerated')}</div>;
|
||||
} else {
|
||||
reportContent = <div className="alert alert-danger" role="alert">{t('reportNotGenerated')}</div>;
|
||||
}
|
||||
|
@ -113,7 +113,7 @@ export default class ViewAndOutput extends Component {
|
|||
return (
|
||||
<div>
|
||||
<Toolbar>
|
||||
<Button className="btn-primary" icon="repeat" label={t('Refresh')} onClickAsync={::this.refresh}/>
|
||||
<Button className="btn-primary" icon="repeat" label={t('refresh')} onClickAsync={::this.refresh}/>
|
||||
</Toolbar>
|
||||
|
||||
<Title>{viewType.getTitle(this.state.report.name)}</Title>
|
||||
|
|
|
@ -88,9 +88,9 @@ export default class List extends Component {
|
|||
<Toolbar>
|
||||
<DropdownMenu className="btn-primary" label={t('createReportTemplate')}>
|
||||
<MenuLink to="/reports/templates/create">{t('blank')}</MenuLink>
|
||||
<MenuLink to="/reports/templates/create/open-counts">{t('Open counts')}</MenuLink>
|
||||
<MenuLink to="/reports/templates/create/open-counts-csv">{t('Open counts as CSV')}</MenuLink>
|
||||
<MenuLink to="/reports/templates/create/aggregated-open-counts">{t('Aggregrated open counts')}</MenuLink>
|
||||
<MenuLink to="/reports/templates/create/open-counts">{t('openCounts')}</MenuLink>
|
||||
<MenuLink to="/reports/templates/create/open-counts-csv">{t('openCountsAsCsv')}</MenuLink>
|
||||
<MenuLink to="/reports/templates/create/aggregated-open-counts">{t('aggregratedOpenCounts')}</MenuLink>
|
||||
</DropdownMenu>
|
||||
</Toolbar>
|
||||
}
|
||||
|
|
|
@ -154,11 +154,11 @@ export function getMailerTypes(t) {
|
|||
const zoneMtaTypeOptions = [];
|
||||
|
||||
if (mailtrainConfig.builtinZoneMTAEnabled) {
|
||||
zoneMtaTypeOptions.push({ key: ZoneMTAType.BUILTIN, label: t('Built-in ZoneMTA')});
|
||||
zoneMtaTypeOptions.push({ key: ZoneMTAType.BUILTIN, label: t('builtinZoneMta')});
|
||||
}
|
||||
zoneMtaTypeOptions.push({ key: ZoneMTAType.WITH_MAILTRAIN_HEADER_CONF, label: t('Dynamic configuration of DKIM keys via ZoneMTA\'s Mailtrain plugin (use this option for builtin ZoneMTA)')});
|
||||
zoneMtaTypeOptions.push({ key: ZoneMTAType.WITH_HTTP_CONF, label: t('Dynamic configuration of DKIM keys via ZoneMTA\'s HTTP config plugin')});
|
||||
zoneMtaTypeOptions.push({ key: ZoneMTAType.REGULAR, label: t('No dynamic configuration of DKIM keys')});
|
||||
zoneMtaTypeOptions.push({ key: ZoneMTAType.WITH_MAILTRAIN_HEADER_CONF, label: t('dynamicConfigurationOfDkimKeysViaZoneMt')});
|
||||
zoneMtaTypeOptions.push({ key: ZoneMTAType.WITH_HTTP_CONF, label: t('dynamicConfigurationOfDkimKeysViaZoneMt-1')});
|
||||
zoneMtaTypeOptions.push({ key: ZoneMTAType.REGULAR, label: t('noDynamicConfigurationOfDkimKeys')});
|
||||
|
||||
mailerTypes[MailerType.GENERIC_SMTP] = {
|
||||
typeName: typeNames[MailerType.GENERIC_SMTP],
|
||||
|
@ -211,7 +211,7 @@ export function getMailerTypes(t) {
|
|||
<div>
|
||||
<Fieldset label={t('mailerSettings')}>
|
||||
<Dropdown id="mailer_type" label={t('mailerType')} options={typeOptions}/>
|
||||
<Dropdown id="zoneMtaType" label={t('Dynamic configuration')} options={zoneMtaTypeOptions}/>
|
||||
<Dropdown id="zoneMtaType" label={t('dynamicConfiguration')} options={zoneMtaTypeOptions}/>
|
||||
{(zoneMtaType === ZoneMTAType.REGULAR || zoneMtaType === ZoneMTAType.WITH_MAILTRAIN_HEADER_CONF || zoneMtaType === ZoneMTAType.WITH_HTTP_CONF) &&
|
||||
<div>
|
||||
<InputField id="smtpHostname" label={t('hostname')} placeholder={t('hostnameEgSmtpexamplecom')}/>
|
||||
|
|
|
@ -79,7 +79,7 @@ export default class Update extends Component {
|
|||
<InputField id="defaultHomepage" label={t('defaultHomepageUrl')} help={t('thisUrlWillBeUsedInListSubscriptionForms')}/>
|
||||
|
||||
<InputField id="uaCode" label={t('trackingId')} placeholder={t('uaxxxxxxx')} help={t('enterGoogleAnalyticsTrackingCode')}/>
|
||||
<InputField id="mapsApiKey" label={t('Google Maps API Key')} placeholder={t('XXXXXX')} help={t('The map overview in campaign statistics requires a Google Maps API key. Please enter it here. If no key is given, Google may throttle map requests, which will result in occassional unavailability of the map in the campaign statistics.')}/>
|
||||
<InputField id="mapsApiKey" label={t('googleMapsApiKey')} placeholder={t('xxxxxx')} help={t('theMapOverviewInCampaignStatistics')}/>
|
||||
|
||||
<TextArea id="shoutout" label={t('frontpageShoutOut')} help={t('htmlCodeShownInTheFrontPageHeaderSection')}/>
|
||||
|
||||
|
|
|
@ -203,16 +203,50 @@
|
|||
"triggered": "Triggered",
|
||||
"campaigns": "Campaigns",
|
||||
"campaignStatistics": "Campaign Statistics",
|
||||
"subscriptionHasToBeSelectedToShowThe": "Subscription has to be selected to show the campaign for a test user.",
|
||||
"total": "Total",
|
||||
"delivered": "Delivered",
|
||||
"blacklisted": "Blacklisted",
|
||||
"bounced": "Bounced",
|
||||
"complaints": "Complaints",
|
||||
"unsubscribed": "Unsubscribed",
|
||||
"opened": "Opened",
|
||||
"clicked": "Clicked",
|
||||
"uniqueVisitors": "Unique visitors",
|
||||
"totalClicks": "Total clicks",
|
||||
"campaignLinks": "Campaign links",
|
||||
"subscriptionId": "Subscription ID",
|
||||
"listId": "List ID",
|
||||
"listNamespace": "List namespace",
|
||||
"opensCount": "Opens count",
|
||||
"countries": "Countries",
|
||||
"devices": "Devices",
|
||||
"desktop": "Desktop",
|
||||
"tv": "TV",
|
||||
"tablet": "Tablet",
|
||||
"phone": "Phone",
|
||||
"bot": "Bot",
|
||||
"car": "Car",
|
||||
"console": "Console",
|
||||
"distributionByDeviceType": "Distribution by device type",
|
||||
"loadingChart": "Loading chart",
|
||||
"deviceType": "Device type",
|
||||
"count": "Count",
|
||||
"unknown": "Unknown",
|
||||
"distributionByCountry": "Distribution by country",
|
||||
"country": "Country",
|
||||
"detailedStatistics": "Detailed Statistics",
|
||||
"listOfSubscribersThatOpenedTheCampaign": "List of subscribers that opened the campaign",
|
||||
"subscriptionHasToBeSelectedToShowThe": "Subscription has to be selected to show the campaign for a test user.",
|
||||
"previewCampaignAs": "Preview campaign as",
|
||||
"preview": "Preview",
|
||||
"dateMustNotBeEmpty": "Date must not be empty",
|
||||
"dateIsInvalid": "Date is invalid",
|
||||
"timeMustNotBeEmpty": "Time must not be empty",
|
||||
"timeIsInvalid": "Time is invalid",
|
||||
"confirmReset": "Confirm reset",
|
||||
"doYouWantToResetTheCampaign?All": "Do you want to reset the campaign? All statistics and the track of delivered messages will be lost.",
|
||||
"no": "No",
|
||||
"yes": "Yes",
|
||||
"subscribers-1": "subscribers",
|
||||
"sendStatus": "Send status",
|
||||
"campaignIsScheduledForDelivery": "Campaign is scheduled for delivery.",
|
||||
|
@ -236,7 +270,6 @@
|
|||
"yourCampaignIsEnabledAndSendingMessages": "Your campaign is enabled and sending messages.",
|
||||
"disable": "Disable",
|
||||
"campaignStatus": "Campaign Status",
|
||||
"computing": "computing ...",
|
||||
"targetListssegments": "Target lists/segments",
|
||||
"ifANewEntryIsFoundFromCampaignFeedANew": "If a new entry is found from campaign feed a new subcampaign is created of that entry and it will be listed here",
|
||||
"sendingTestEmail": "Sending test email",
|
||||
|
@ -251,6 +284,12 @@
|
|||
"inactive": "Inactive",
|
||||
"active": "Active",
|
||||
"campaignName": "Campaign \"{{name}}\"",
|
||||
"deliveredEmails": "Delivered Emails",
|
||||
"complained": "Complained",
|
||||
"subscribersThatComplained": "Subscribers that Complained",
|
||||
"emailsThatBounced": "Emails that Bounced",
|
||||
"subscribersThatUnsubscribed": "Subscribers that Unsubscribed",
|
||||
"clicks": "Clicks",
|
||||
"theseFilesArePubliclyAvailableViaHttpSo": "These files are publicly available via HTTP so that they can be linked to from the content of the campaign.",
|
||||
"theseFilesWillBeAttachedToTheCampaign": "These files will be attached to the campaign emails as proper attachments. This means they count towards to the eventual size of the email.",
|
||||
"triggerName": "Trigger \"{{name}}\"",
|
||||
|
@ -270,13 +309,8 @@
|
|||
"selectTheEventThatTriggersSendingThe": "Select the event that triggers sending the campaign.",
|
||||
"enabled": "Enabled",
|
||||
"daysAfter": "Days after",
|
||||
"yes": "Yes",
|
||||
"no": "No",
|
||||
"latestOpen": "Latest open",
|
||||
"latestClick": "Latest click",
|
||||
"delivered": "Delivered",
|
||||
"opened": "Opened",
|
||||
"clicked": "Clicked",
|
||||
"notOpened": "Not opened",
|
||||
"notClicked": "Not clicked",
|
||||
"close": "Close",
|
||||
|
@ -339,7 +373,7 @@
|
|||
"createList": "Create List",
|
||||
"thisIsTheListIdDisplayedToTheSubscribers": "This is the list ID displayed to the subscribers",
|
||||
"contactEmail": "Contact email",
|
||||
"contactEmailUsedInSubscriptionFormsAnd": "Contact email used in subscription forms and emails that are sent out. If not filled in, the admin email from the global settings will be used.",
|
||||
"contactEmailShownInTheListSubscription": "Contact email shown in the list subscription and management forms. If no contact email is given, the admin email from Global settings is used.",
|
||||
"homepage": "Homepage",
|
||||
"homepageUrlUsedInSubscriptionFormsAnd": "Homepage URL used in subscription forms and emails that are sent out. If not filled in, the default homepage from global settings will be used.",
|
||||
"recipientsNameTemplate": "Recipients name template",
|
||||
|
@ -451,6 +485,8 @@
|
|||
"formsPreview": "Forms Preview",
|
||||
"listToPreviewOn": "List To Preview On",
|
||||
"selectListWhoseFieldsWillBeUsedToPreview": "Select list whose fields will be used to preview the forms.",
|
||||
"noteTheseLinksAreSolelyForAQuickPreview": "Note: These links are solely for a quick preview. To get the address of the subscription form, go to the list\\'s subscribers and click on \"Subscription Form\".",
|
||||
"formPreview": "Form preview:",
|
||||
"templates": "Templates",
|
||||
"customFormsUseMjmlForFormattingSeeThe": "Custom forms use MJML for formatting. See the MJML documentation <1>here</1>",
|
||||
"createCustomForm": "Create Custom Form",
|
||||
|
@ -628,7 +664,6 @@
|
|||
"testUser?": "Test user?",
|
||||
"ifCheckedThenThisSubscriptionCanBeUsed": "If checked then this subscription can be used for previewing campaign messages",
|
||||
"erased": "[ERASED]",
|
||||
"blacklisted": "Blacklisted",
|
||||
"confirmUnsubscription": "Confirm Unsubscription",
|
||||
"areYouSureYouWantToUnsubscribeEmail?": "Are you sure you want to unsubscribe {{email}}?",
|
||||
"unsubscribingEmail": "Unsubscribing {{email}}",
|
||||
|
@ -643,8 +678,6 @@
|
|||
"addSubscriber": "Add Subscriber",
|
||||
"subscribed": "Subscribed",
|
||||
"unubscribed": "Unubscribed",
|
||||
"bounced": "Bounced",
|
||||
"complained": "Complained",
|
||||
"parentNamespaceMustBeSelected": "Parent Namespace must be selected",
|
||||
"namespaceSaved": "Namespace saved",
|
||||
"thereHasBeenALoopDetectedInTheAssignment": "There has been a loop detected in the assignment of the parent namespace. This is most likely because someone else has changed the parent of some namespace in the meantime. Refresh your page to start anew. Please note that your changes will be lost.",
|
||||
|
@ -678,11 +711,13 @@
|
|||
"viewConsoleOutput": "View console output",
|
||||
"reportTemplates": "Report Templates",
|
||||
"reports": "Reports",
|
||||
"reportName": "Report {{name}}",
|
||||
"loadingReport": "Loading report ...",
|
||||
"outputForReportName": "Output for report {{name}}",
|
||||
"loadingReportOutput": "Loading report output ...",
|
||||
"reportName": "Report {{name}}",
|
||||
"reportIsBeingGenerated": "Report is being generated",
|
||||
"reportNotGenerated": "Report not generated",
|
||||
"loadingReport": "Loading report ...",
|
||||
"refresh": "Refresh",
|
||||
"reportName-1": "Report \"{{name}}\"",
|
||||
"output": "Output",
|
||||
"templateName": "Template \"{{name}}\"",
|
||||
|
@ -701,9 +736,9 @@
|
|||
"writeTheBodyOfTheJavaScriptFunctionWith": "Write the body of the JavaScript function with signature <1>function(inputs, callback)</1> that returns an object to be rendered by the Handlebars template below.",
|
||||
"useHtmlWithHandlebarsSyntaxSee": "Use HTML with Handlebars syntax. See documentation <1>here</1>.",
|
||||
"blank": "Blank",
|
||||
"allSubscribers": "All Subscribers",
|
||||
"groupedSubscribers": "Grouped Subscribers",
|
||||
"exportListAsCsv": "Export List as CSV",
|
||||
"openCounts": "Open counts",
|
||||
"openCountsAsCsv": "Open counts as CSV",
|
||||
"aggregratedOpenCounts": "Aggregrated open counts",
|
||||
"current": "(current)",
|
||||
"toggleNavigation": "Toggle navigation",
|
||||
"administration": "Administration",
|
||||
|
@ -748,6 +783,10 @@
|
|||
"useast1": "US-EAST-1",
|
||||
"uswest2": "US-WEST-2",
|
||||
"euwest1": "EU-WEST-1",
|
||||
"builtinZoneMta": "Built-in ZoneMTA",
|
||||
"dynamicConfigurationOfDkimKeysViaZoneMt": "Dynamic configuration of DKIM keys via ZoneMTA\\'s Mailtrain plugin (use this option for builtin ZoneMTA)",
|
||||
"dynamicConfigurationOfDkimKeysViaZoneMt-1": "Dynamic configuration of DKIM keys via ZoneMTA\\'s HTTP config plugin",
|
||||
"noDynamicConfigurationOfDkimKeys": "No dynamic configuration of DKIM keys",
|
||||
"mailerSettings": "Mailer Settings",
|
||||
"mailerType": "Mailer type",
|
||||
"hostname": "Hostname",
|
||||
|
@ -769,6 +808,7 @@
|
|||
"throttling": "Throttling",
|
||||
"messagesPerHourEg1000": "Messages per hour eg. 1000",
|
||||
"maximumNumberOfMessagesToSendInAnHour": "Maximum number of messages to send in an hour. Leave empty or zero for no throttling. If your provider uses a different speed limit (messages/minute or messages/second) then convert this limit into messages/hour (1m/s => 3600m/h). This limit is per sending process.",
|
||||
"dynamicConfiguration": "Dynamic configuration",
|
||||
"dkimSigning": "DKIM Signing",
|
||||
"zoneMtaDkimApiKey": "ZoneMTA DKIM API key",
|
||||
"secretValueKnownToZoneMtaForRequesting": "Secret value known to ZoneMTA for requesting DKIM key information. If this value was generated by the Mailtrain installation script then you can keep it as it is.",
|
||||
|
@ -793,6 +833,9 @@
|
|||
"trackingId": "Tracking ID",
|
||||
"uaxxxxxxx": "UA-XXXXX-XX",
|
||||
"enterGoogleAnalyticsTrackingCode": "Enter Google Analytics tracking code",
|
||||
"googleMapsApiKey": "Google Maps API Key",
|
||||
"xxxxxx": "XXXXXX",
|
||||
"theMapOverviewInCampaignStatistics": "The map overview in campaign statistics requires a Google Maps API key. Please enter it here. If no key is given, Google may throttle map requests, which will result in occassional unavailability of the map in the campaign statistics.",
|
||||
"frontpageShoutOut": "Frontpage shout out",
|
||||
"htmlCodeShownInTheFrontPageHeaderSection": "HTML code shown in the front page header section",
|
||||
"gpgSigning": "GPG Signing",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue