diff --git a/assets/js/src/newsletters/breadcrumb.jsx b/assets/js/src/newsletters/breadcrumb.jsx index f32cadb44d..60515a6d18 100644 --- a/assets/js/src/newsletters/breadcrumb.jsx +++ b/assets/js/src/newsletters/breadcrumb.jsx @@ -2,12 +2,14 @@ define( [ 'react', 'react-router', - 'classnames' + 'classnames', + 'mailpoet' ], function( React, Router, - classNames + classNames, + MailPoet ) { var Link = Router.Link; @@ -21,20 +23,20 @@ define( steps: [ { name: 'type', - label: 'Select type', + label: MailPoet.I18n.t('selectType'), link: '/new' }, { name: 'template', - label: 'Template' + label: MailPoet.I18n.t('template') }, { name: 'editor', - label: 'Designer' + label: MailPoet.I18n.t('designer') }, { name: 'send', - label: 'Send' + label: MailPoet.I18n.t('send') } ] }; @@ -73,4 +75,4 @@ define( return Breadcrumb; } -); \ No newline at end of file +); diff --git a/assets/js/src/newsletters/list.jsx b/assets/js/src/newsletters/list.jsx index 01616eac8a..67a8e613f1 100644 --- a/assets/js/src/newsletters/list.jsx +++ b/assets/js/src/newsletters/list.jsx @@ -4,39 +4,41 @@ define( 'react-router', 'listing/listing.jsx', 'classnames', - 'jquery' + 'jquery', + 'mailpoet' ], function( React, Router, Listing, classNames, - jQuery + jQuery, + MailPoet ) { var Link = Router.Link; var columns = [ { name: 'subject', - label: 'Subject', + label: MailPoet.I18n.t('subject'), sortable: true }, { name: 'status', - label: 'Status' + label: MailPoet.I18n.t('status') }, { name: 'segments', - label: 'Lists' + label: MailPoet.I18n.t('lists') }, { name: 'created_at', - label: 'Created on', + label: MailPoet.I18n.t('createdOn'), sortable: true }, { name: 'updated_at', - label: 'Last modified on', + label: MailPoet.I18n.t('lastModifiedOn'), sortable: true } ]; @@ -48,11 +50,11 @@ define( if(count === 1) { message = ( - '1 newsletter was moved to the trash.' + MailPoet.I18n.t('oneNewsletterTrashed') ); } else { message = ( - '%$1d newsletters were moved to the trash.' + MailPoet.I18n.t('multipleNewslettersTrashed') ).replace('%$1d', count); } MailPoet.Notice.success(message); @@ -63,11 +65,11 @@ define( if(count === 1) { message = ( - '1 newsletter was permanently deleted.' + MailPoet.I18n.t('oneNewsletterDeleted') ); } else { message = ( - '%$1d newsletters were permanently deleted.' + MailPoet.I18n.t('multipleNewslettersDeleted') ).replace('%$1d', count); } MailPoet.Notice.success(message); @@ -78,11 +80,11 @@ define( if(count === 1) { message = ( - '1 newsletter has been restored from the trash.' + MailPoet.I18n.t('oneNewsletterRestored') ); } else { message = ( - '%$1d newsletters have been restored from the trash.' + MailPoet.I18n.t('multipleNewslettersRestored') ).replace('%$1d', count); } MailPoet.Notice.success(message); @@ -92,7 +94,7 @@ define( var bulk_actions = [ { name: 'trash', - label: 'Trash', + label: MailPoet.I18n.t('trash'), onSuccess: messages.onTrash } ]; @@ -103,7 +105,7 @@ define( link: function(item) { return ( - Edit + {MailPoet.I18n.t('edit')} ); } @@ -137,7 +139,7 @@ define( renderStatus: function(item) { if(!item.queue) { return ( - Not sent yet. + {MailPoet.I18n.t('notSentYet')} ); } else { var progressClasses = classNames( @@ -155,9 +157,11 @@ define( if(item.queue.status === 'completed') { label = ( - Sent to { - item.queue.count_processed - item.queue.count_failed - } out of { item.queue.count_total }. + { + MailPoet.I18n.t('newsletterQueueCompleted') + .replace("%$1d", item.queue.count_processed - item.queue.count_failed) + .replace("%$2d", item.queue.count_total) + } ); } else { @@ -171,14 +175,14 @@ define( style={{ display: (item.queue.status === 'paused') ? 'inline-block': 'none' }} href="javascript:;" onClick={ this.resumeSending.bind(null, item) } - >Resume + >{MailPoet.I18n.t('resume')} Pause + >{MailPoet.I18n.t('pause')} ); } @@ -239,7 +243,7 @@ define( return (

- Newsletters New + {MailPoet.I18n.t('pageTitle')} {MailPoet.I18n.t('new')}

Check your settings.' + MailPoet.I18n.t('newsletterSendingError').replace("%$1s", '?page=mailpoet-settings') ); } } @@ -157,7 +154,7 @@ define( render: function() { return (
-

Final step: last details

+

{MailPoet.I18n.t('finalNewsletterStep')}

@@ -174,18 +171,18 @@ define( className="button button-primary" type="button" onClick={ this.handleSend } - value="Send" /> + value={MailPoet.I18n.t('send')} />   -  or simply  + value={MailPoet.I18n.t('saveDraftAndClose')} /> +  {MailPoet.I18n.t('orSimply')}  - go back to design + {MailPoet.I18n.t('goBackToDesign')} .

@@ -196,4 +193,4 @@ define( return NewsletterSend; } -); \ No newline at end of file +); diff --git a/assets/js/src/newsletters/templates.jsx b/assets/js/src/newsletters/templates.jsx index 041033e8fb..cfe7a67be5 100644 --- a/assets/js/src/newsletters/templates.jsx +++ b/assets/js/src/newsletters/templates.jsx @@ -54,7 +54,7 @@ define( try { saveTemplate(JSON.parse(e.target.result)); } catch (err) { - MailPoet.Notice.error('This template file appears to be malformed. Please try another one.'); + MailPoet.Notice.error(MailPoet.I18n.t('templateFileMalformedError')); } }.bind(this); @@ -63,15 +63,15 @@ define( render: function() { return (
-

Import a template

+

{MailPoet.I18n.t('importTemplateTitle')}

- +

+ value={MailPoet.I18n.t('upload')} />

@@ -108,9 +108,9 @@ define( response = [ { name: - "MailPoet's Guide", + MailPoet.I18n.t('mailpoetGuideTemplateTitle'), description: - "This is the standard template that comes with MailPoet.", + MailPoet.I18n.t('mailpoetGuideTemplateDescription'), readonly: "1" } ] @@ -155,7 +155,9 @@ define( this.setState({ loading: true }); if( window.confirm( - 'You are about to delete the template named "'+ template.name +'"' + ( + MailPoet.I18n.t('confirmTemplateDeletion') + ).replace("%$1s", template.name) ) ) { MailPoet.Ajax.post({ @@ -187,7 +189,7 @@ define( href="javascript:;" onClick={ this.handleDeleteTemplate.bind(null, template) } > - Delete + {MailPoet.I18n.t('delete')}
), thumbnail = ''; @@ -218,7 +220,7 @@ define( className="button button-primary" onClick={ this.handleSelectTemplate.bind(null, template) } > - Select + {MailPoet.I18n.t('select')}   - Preview + {MailPoet.I18n.t('preview')}
{ (template.readonly === "1") ? false : deleteLink } @@ -242,7 +244,7 @@ define( return (
-

Select a template

+

{MailPoet.I18n.t('selectTemplateTitle')}

diff --git a/assets/js/src/newsletters/types.jsx b/assets/js/src/newsletters/types.jsx index 351e58e3a9..b4f5deb5f6 100644 --- a/assets/js/src/newsletters/types.jsx +++ b/assets/js/src/newsletters/types.jsx @@ -26,7 +26,7 @@ define( action: 'create', data: { type: type, - subject: 'Draft newsletter', + subject: MailPoet.I18n.t('draftNewsletterTitle'), } }).done(function(response) { if(response.result && response.newsletter.id) { @@ -43,7 +43,7 @@ define( render: function() { return (
-

Pick a type of campaign

+

{MailPoet.I18n.t('pickCampaignType')}

@@ -52,10 +52,9 @@ define(
-

Newsletter

+

{MailPoet.I18n.t('regularNewsletterTypeTitle')}

- Send a newsletter with images, buttons, dividers, - and social bookmarks. Or a simple email. + {MailPoet.I18n.t('regularNewsletterTypeDescription')}

@@ -64,7 +63,7 @@ define( className="button button-primary" onClick={ this.createNewsletter.bind(null, 'standard') } > - Create + {MailPoet.I18n.t('create')}
@@ -73,9 +72,9 @@ define(
-

Welcome email

+

{MailPoet.I18n.t('welcomeNewsletterTypeTitle')}

- Send an email for new users. + {MailPoet.I18n.t('welcomeNewsletterTypeDescription')}

@@ -84,7 +83,7 @@ define( className="button button-primary" onClick={ this.setupNewsletter.bind(null, 'welcome') } > - Set up + {MailPoet.I18n.t('setUp')}
@@ -93,9 +92,9 @@ define(
-

Post notifications

+

{MailPoet.I18n.t('postNotificationNewsletterTypeTitle')}

- Automatically send posts immediately, daily, weekly or monthly. Filter by categories, if you like. + {MailPoet.I18n.t('postNotificationsNewsletterTypeDescription')}

@@ -104,7 +103,7 @@ define( className="button button-primary" onClick={ this.setupNewsletter.bind(null, 'notification') } > - Set up + {MailPoet.I18n.t('setUp')} diff --git a/assets/js/src/newsletters/types/notification.jsx b/assets/js/src/newsletters/types/notification.jsx index 9952590994..2d5b787e6a 100644 --- a/assets/js/src/newsletters/types/notification.jsx +++ b/assets/js/src/newsletters/types/notification.jsx @@ -25,11 +25,11 @@ define( var intervalField = { name: 'interval', values: { - 'daily': 'Once a day at...', - 'weekly': 'Weekly on...', - 'monthly': 'Monthly on the...', - 'nthWeekDay': 'Monthly every...', - 'immediately': 'Immediately.', + 'daily': MailPoet.I18n.t('daily'), + 'weekly': MailPoet.I18n.t('weekly'), + 'monthly': MailPoet.I18n.t('monthly'), + 'nthWeekDay': MailPoet.I18n.t('monthlyEvery'), + 'immediately': MailPoet.I18n.t('immediately'), }, }; @@ -53,13 +53,13 @@ define( var weekDayField = { name: 'weekDay', values: { - 0: 'Sunday', - 1: 'Monday', - 2: 'Tuesday', - 3: 'Wednesday', - 4: 'Thursday', - 5: 'Friday', - 6: 'Saturday' + 0: MailPoet.I18n.t('sunday'), + 1: MailPoet.I18n.t('monday'), + 2: MailPoet.I18n.t('tuesday'), + 3: MailPoet.I18n.t('wednesday'), + 4: MailPoet.I18n.t('thursday'), + 5: MailPoet.I18n.t('friday'), + 6: MailPoet.I18n.t('saturday') }, }; @@ -69,14 +69,19 @@ define( values: _.object(_.map( _.times(NUMBER_OF_DAYS_IN_MONTH, function(day) { return day; }), function(day) { - var suffixes = { - 0: 'st', - 1: 'nd', - 2: 'rd' - }; - var suffix = suffixes[day] || 'th'; + var labels = { + 0: MailPoet.I18n.t('first'), + 1: MailPoet.I18n.t('second'), + 2: MailPoet.I18n.t('third') + }, + label; + if (labels[day] !== undefined) { + label = labels[day]; + } else { + label = MailPoet.I18n.t('nth').replace("%$1d", day + 1); + } - return [day, (day + 1).toString() + suffix]; + return [day, label]; }, )), }; @@ -84,10 +89,10 @@ define( var nthWeekDayField = { name: 'nthWeekDay', values: { - '1': '1st', - '2': '2nd', - '3': '3rd', - 'L': 'last', + '1': MailPoet.I18n.t('first'), + '2': MailPoet.I18n.t('second'), + '3': MailPoet.I18n.t('third'), + 'L': MailPoet.I18n.t('last'), }, }; @@ -197,7 +202,7 @@ define( return (
-

Post notifications

+

{MailPoet.I18n.t('postNotificationNewsletterTypeTitle')}