Updated translation support

This commit is contained in:
Andris Reinman 2017-03-07 16:30:56 +02:00
parent b1e8cd68cd
commit d25565b6f8
114 changed files with 42095 additions and 1902 deletions

View file

@ -12,6 +12,7 @@ let feed = require('../feed');
let log = require('npmlog');
let mailer = require('../mailer');
let humanize = require('humanize');
let _ = require('../translate')._;
let allowedKeys = ['description', 'from', 'address', 'reply_to', 'subject', 'editor_name', 'editor_data', 'template', 'source_url', 'list', 'segment', 'html', 'text', 'tracking_disabled'];
@ -267,7 +268,7 @@ module.exports.filterStatusSubscribers = (campaign, status, request, columns, ca
module.exports.getByCid = (cid, callback) => {
cid = (cid || '').toString().trim();
if (!cid) {
return callback(new Error('Missing Campaign ID'));
return callback(new Error(_('Missing Campaign ID')));
}
db.getConnection((err, connection) => {
if (err) {
@ -294,7 +295,7 @@ module.exports.get = (id, withSegment, callback) => {
id = Number(id) || 0;
if (id < 1) {
return callback(new Error('Missing Campaign ID'));
return callback(new Error(_('Missing Campaign ID')));
}
db.getConnection((err, connection) => {
@ -367,7 +368,7 @@ module.exports.getAttachments = (campaign, callback) => {
campaign = Number(campaign) || 0;
if (campaign < 1) {
return callback(new Error('Missing Campaign ID'));
return callback(new Error(_('Missing Campaign ID')));
}
db.getConnection((err, connection) => {
@ -403,7 +404,7 @@ module.exports.addAttachment = (id, attachment, callback) => {
let size = attachment.content ? attachment.content.length : 0;
if (!size) {
return callback(new Error('Emtpy or too large attahcment'));
return callback(new Error(_('Emtpy or too large attahcment')));
}
db.getConnection((err, connection) => {
if (err) {
@ -490,7 +491,7 @@ module.exports.getLinks = (id, linkId, callback) => {
linkId = Number(linkId) || 0;
if (id < 1) {
return callback(new Error('Missing Campaign ID'));
return callback(new Error(_('Missing Campaign ID')));
}
db.getConnection((err, connection) => {
@ -569,11 +570,11 @@ module.exports.create = (campaign, opts, callback) => {
campaign.template = Number(campaign.template) || 0;
if (!name) {
return callback(new Error('Campaign Name must be set'));
return callback(new Error(_('Campaign Name must be set')));
}
if (campaign.type === 2 && (!campaign.sourceUrl || !isUrl(campaign.sourceUrl))) {
return callback(new Error('RSS URL must be set and needs to be a valid URL'));
return callback(new Error(_('RSS URL must be set and needs to be a valid URL')));
}
let getList = (listId, callback) => {
@ -726,7 +727,7 @@ module.exports.create = (campaign, opts, callback) => {
return callback(err);
}
if (!template) {
return callback(new Error('Selected template not found'));
return callback(new Error(_('Selected template not found')));
}
campaign.editorName = template.editorName;
@ -748,7 +749,7 @@ module.exports.update = (id, updates, callback) => {
id = Number(id) || 0;
if (id < 1) {
return callback(new Error('Missing Campaign ID'));
return callback(new Error(_('Missing Campaign ID')));
}
let campaign = tools.convertKeys(updates);
@ -757,7 +758,7 @@ module.exports.update = (id, updates, callback) => {
campaign.trackingDisabled = campaign.trackingDisabled ? 1 : 0;
if (!name) {
return callback(new Error('Campaign Name must be set'));
return callback(new Error(_('Campaign Name must be set')));
}
if (/^\d+:\d+$/.test(campaign.list)) {
@ -877,7 +878,7 @@ module.exports.delete = (id, callback) => {
id = Number(id) || 0;
if (id < 1) {
return callback(new Error('Missing Campaign ID'));
return callback(new Error(_('Missing Campaign ID')));
}
db.getConnection((err, connection) => {
@ -1078,7 +1079,7 @@ module.exports.getMail = (campaignId, listId, subscriptionId, callback) => {
subscriptionId = Number(subscriptionId) || 0;
if (campaignId < 1 || listId < 1 || subscriptionId < 1) {
return callback(new Error('Invalid or missing message ID'));
return callback(new Error(_('Invalid or missing message ID')));
}
db.getConnection((err, connection) => {

View file

@ -6,26 +6,28 @@ let slugify = require('slugify');
let lists = require('./lists');
let shortid = require('shortid');
let Handlebars = require('handlebars');
let _ = require('../translate')._;
let util = require('util');
let allowedKeys = ['name', 'key', 'default_value', 'group', 'group_template', 'visible'];
let allowedTypes;
module.exports.grouped = ['radio', 'checkbox', 'dropdown'];
module.exports.types = {
text: 'Text',
website: 'Website',
longtext: 'Multi-line text',
gpg: 'GPG Public Key',
number: 'Number',
radio: 'Radio Buttons',
checkbox: 'Checkboxes',
dropdown: 'Drop Down',
'date-us': 'Date (MM/DD/YYY)',
'date-eur': 'Date (DD/MM/YYYY)',
'birthday-us': 'Birthday (MM/DD)',
'birthday-eur': 'Birthday (DD/MM)',
json: 'JSON value for custom rendering',
option: 'Option'
text: _('Text'),
website: _('Website'),
longtext: _('Multi-line text'),
gpg: _('GPG Public Key'),
number: _('Number'),
radio: _('Radio Buttons'),
checkbox: _('Checkboxes'),
dropdown: _('Drop Down'),
'date-us': _('Date (MM/DD/YYY)'),
'date-eur': _('Date (DD/MM/YYYY)'),
'birthday-us': _('Birthday (MM/DD)'),
'birthday-eur': _('Birthday (DD/MM)'),
json: _('JSON value for custom rendering'),
option: _('Option')
};
module.exports.allowedTypes = allowedTypes = Object.keys(module.exports.types);
@ -48,7 +50,7 @@ module.exports.list = (listId, callback) => {
listId = Number(listId) || 0;
if (listId < 1) {
return callback(new Error('Missing List ID'));
return callback(new Error(_('Missing List ID')));
}
db.getConnection((err, connection) => {
@ -93,7 +95,7 @@ module.exports.get = (id, callback) => {
id = Number(id) || 0;
if (id < 1) {
return callback(new Error('Missing List ID'));
return callback(new Error(_('Missing List ID')));
}
db.getConnection((err, connection) => {
@ -118,13 +120,13 @@ module.exports.create = (listId, field, callback) => {
listId = Number(listId) || 0;
if (listId < 1) {
return callback(new Error('Missing List ID'));
return callback(new Error(_('Missing List ID')));
}
field = tools.convertKeys(field);
if (field.type === 'option' && !field.group) {
return callback(new Error('Option field requires a group to be selected'));
return callback(new Error(_('Option field requires a group to be selected')));
}
if (field.type !== 'option') {
@ -144,11 +146,11 @@ module.exports.update = (id, updates, callback) => {
updates = tools.convertKeys(updates);
if (id < 1) {
return callback(new Error('Missing Field ID'));
return callback(new Error(_('Missing Field ID')));
}
if (!(updates.name || '').toString().trim()) {
return callback(new Error('Field Name must be set'));
return callback(new Error(_('Field Name must be set')));
}
if (updates.key) {
@ -194,7 +196,7 @@ module.exports.delete = (fieldId, callback) => {
fieldId = Number(fieldId) || 0;
if (fieldId < 1) {
return callback(new Error('Missing Field ID'));
return callback(new Error(_('Missing Field ID')));
}
db.getConnection((err, connection) => {
@ -211,7 +213,7 @@ module.exports.delete = (fieldId, callback) => {
if (!rows || !rows.length) {
connection.release();
return callback(new Error('Custom field not found'));
return callback(new Error(_('Custom field not found')));
}
let field = tools.convertKeys(rows[0]);
@ -284,15 +286,15 @@ function addCustomField(listId, name, defaultValue, type, group, groupTemplate,
let key = slugify('merge ' + name, '_').toUpperCase();
if (allowedTypes.indexOf(type) < 0) {
return callback(new Error('Unknown column type ' + type));
return callback(new Error(util.format(_('Unknown column type %s'), type)));
}
if (!name) {
return callback(new Error('Missing column name'));
return callback(new Error(_('Missing column name')));
}
if (listId <= 0) {
return callback(new Error('Missing list ID'));
return callback(new Error(_('Missing list ID')));
}
lists.get(listId, (err, list) => {
@ -300,7 +302,7 @@ function addCustomField(listId, name, defaultValue, type, group, groupTemplate,
return callback(err);
}
if (!list) {
return callback('Provided List ID not found');
return callback(_('Provided List ID not found'));
}
db.getConnection((err, connection) => {

View file

@ -3,6 +3,7 @@
let db = require('../db');
let shortid = require('shortid');
let util = require('util');
let _ = require('../translate')._;
let geoip = require('geoip-ultralight');
let campaigns = require('./campaigns');
@ -324,7 +325,7 @@ function getSubscriptionData(campaignCid, listCid, subscriptionCid, callback) {
return callback(err);
}
if (!campaign) {
return callback(new Error('Campaign not found'));
return callback(new Error(_('Campaign not found')));
}
lists.getByCid(listCid, (err, list) => {
@ -332,7 +333,7 @@ function getSubscriptionData(campaignCid, listCid, subscriptionCid, callback) {
return callback(err);
}
if (!list) {
return callback(new Error('Campaign not found'));
return callback(new Error(_('List not found')));
}
subscriptions.get(list.id, subscriptionCid, (err, subscription) => {
@ -340,7 +341,7 @@ function getSubscriptionData(campaignCid, listCid, subscriptionCid, callback) {
return callback(err);
}
if (!subscription) {
return callback(new Error('Subscription not found'));
return callback(new Error(_('Subscription not found')));
}
return callback(null, {

View file

@ -4,6 +4,7 @@ let db = require('../db');
let tools = require('../tools');
let shortid = require('shortid');
let segments = require('./segments');
let _ = require('../translate')._;
let allowedKeys = ['description'];
@ -77,7 +78,7 @@ module.exports.get = (id, callback) => {
id = Number(id) || 0;
if (id < 1) {
return callback(new Error('Missing List ID'));
return callback(new Error(_('Missing List ID')));
}
db.getConnection((err, connection) => {
@ -113,7 +114,7 @@ module.exports.create = (list, callback) => {
let name = (data.name || '').toString().trim();
if (!data) {
return callback(new Error('List Name must be set'));
return callback(new Error(_('List Name must be set')));
}
let keys = ['name'];
@ -171,11 +172,11 @@ module.exports.update = (id, updates, callback) => {
let values = [name];
if (id < 1) {
return callback(new Error('Missing List ID'));
return callback(new Error(_('Missing List ID')));
}
if (!name) {
return callback(new Error('List Name must be set'));
return callback(new Error(_('List Name must be set')));
}
Object.keys(updates).forEach(key => {
@ -208,7 +209,7 @@ module.exports.delete = (id, callback) => {
id = Number(id) || 0;
if (id < 1) {
return callback(new Error('Missing List ID'));
return callback(new Error(_('Missing List ID')));
}
db.getConnection((err, connection) => {
@ -237,7 +238,7 @@ module.exports.delete = (id, callback) => {
function resolveCid(cid, callback) {
cid = (cid || '').toString().trim();
if (!cid) {
return callback(new Error('Missing List CID'));
return callback(new Error(_('Missing List CID')));
}
db.getConnection((err, connection) => {

View file

@ -3,34 +3,36 @@
let tools = require('../tools');
let db = require('../db');
let fields = require('./fields');
let util = require('util');
let _ = require('../translate')._;
module.exports.defaultColumns = [{
column: 'email',
name: 'Email address',
name: _('Email address'),
type: 'string'
}, {
column: 'opt_in_country',
name: 'Signup country',
name: _('Signup country'),
type: 'string'
}, {
column: 'created',
name: 'Sign up date',
name: _('Sign up date'),
type: 'date'
}, {
column: 'latest_open',
name: 'Latest open',
name: _('Latest open'),
type: 'date'
}, {
column: 'latest_click',
name: 'Latest click',
name: _('Latest click'),
type: 'date'
}, {
column: 'first_name',
name: 'First name',
name: _('First name'),
type: 'string'
}, {
column: 'last_name',
name: 'Last name',
name: _('Last name'),
type: 'string'
}];
@ -38,7 +40,7 @@ module.exports.list = (listId, callback) => {
listId = Number(listId) || 0;
if (listId < 1) {
return callback(new Error('Missing List ID'));
return callback(new Error(_('Missing List ID')));
}
@ -64,7 +66,7 @@ module.exports.get = (id, callback) => {
id = Number(id) || 0;
if (id < 1) {
return callback(new Error('Missing Segment ID'));
return callback(new Error(_('Missing Segment ID')));
}
db.getConnection((err, connection) => {
@ -80,7 +82,7 @@ module.exports.get = (id, callback) => {
}
if (!rows || !rows.length) {
connection.release();
return callback(new Error('Segment not found'));
return callback(new Error(_('Segment not found')));
}
let segment = tools.convertKeys(rows[0]);
@ -141,7 +143,9 @@ module.exports.get = (id, callback) => {
case 'date':
case 'birthday':
if (rule.value.relativeRange) {
rule.formatted = (rule.value.start ? rule.value.start + ' days ' + (rule.value.startDirection ? 'after' : 'before') + ' today' : 'today') + ' … ' + (rule.value.end ? rule.value.end + ' days ' + (rule.value.endDirection ? 'after' : 'before') + ' today' : 'today');
let startString = rule.value.startDirection ? util.format(_('%s days after today'), rule.value.start) : util.format(_('%s days before today'), rule.value.start);
let endString = rule.value.endDirection ? util.format(_('%s days after today'), rule.value.end) : util.format(_('%s days before today'), rule.value.end);
rule.formatted = (rule.value.start ? startString : _('today')) + ' … ' + (rule.value.end ? endString : _('today'));
} else if (rule.value.range) {
rule.formatted = (rule.value.start || '') + ' … ' + (rule.value.end || '');
} else {
@ -149,7 +153,7 @@ module.exports.get = (id, callback) => {
}
break;
case 'boolean':
rule.formatted = rule.value.value ? 'Selected' : 'Not selected';
rule.formatted = rule.value.value ? _('Selected') : _('Not selected');
break;
default:
rule.formatted = rule.value.value || '';
@ -169,7 +173,7 @@ module.exports.create = (listId, segment, callback) => {
listId = Number(listId) || 0;
if (listId < 1) {
return callback(new Error('Missing List ID'));
return callback(new Error(_('Missing List ID')));
}
segment = tools.convertKeys(segment);
@ -178,11 +182,11 @@ module.exports.create = (listId, segment, callback) => {
segment.type = Number(segment.type) || 0;
if (!segment.name) {
return callback(new Error('Field Name must be set'));
return callback(new Error(_('Field Name must be set')));
}
if (segment.type <= 0) {
return callback(new Error('Invalid segment rule type'));
return callback(new Error(_('Invalid segment rule type')));
}
let keys = ['list', 'name', 'type'];
@ -209,7 +213,7 @@ module.exports.update = (id, updates, callback) => {
id = Number(id) || 0;
if (id < 1) {
return callback(new Error('Missing Segment ID'));
return callback(new Error(_('Missing Segment ID')));
}
let segment = tools.convertKeys(updates);
@ -218,11 +222,11 @@ module.exports.update = (id, updates, callback) => {
segment.type = Number(segment.type) || 0;
if (!segment.name) {
return callback(new Error('Field Name must be set'));
return callback(new Error(_('Field Name must be set')));
}
if (segment.type <= 0) {
return callback(new Error('Invalid segment rule type'));
return callback(new Error(_('Invalid segment rule type')));
}
let keys = ['name', 'type'];
@ -249,7 +253,7 @@ module.exports.delete = (id, callback) => {
id = Number(id) || 0;
if (id < 1) {
return callback(new Error('Missing Segment ID'));
return callback(new Error(_('Missing Segment ID')));
}
db.getConnection((err, connection) => {
@ -271,7 +275,7 @@ module.exports.createRule = (segmentId, rule, callback) => {
segmentId = Number(segmentId) || 0;
if (segmentId < 1) {
return callback(new Error('Missing Segment ID'));
return callback(new Error(_('Missing Segment ID')));
}
rule = tools.convertKeys(rule);
@ -282,12 +286,12 @@ module.exports.createRule = (segmentId, rule, callback) => {
}
if (!segment) {
return callback(new Error('Selected segment not found'));
return callback(new Error(_('Selected segment not found')));
}
let column = segment.columns.filter(column => column.column === rule.column).pop();
if (!column) {
return callback(new Error('Invalid rule type'));
return callback(new Error(_('Invalid rule type')));
}
let value;
@ -351,7 +355,7 @@ module.exports.getRule = (id, callback) => {
id = Number(id) || 0;
if (id < 1) {
return callback(new Error('Missing Rule ID'));
return callback(new Error(_('Missing Rule ID')));
}
db.getConnection((err, connection) => {
@ -367,7 +371,7 @@ module.exports.getRule = (id, callback) => {
}
if (!rows || !rows.length) {
return callback(new Error('Specified rule not found'));
return callback(new Error(_('Specified rule not found')));
}
let rule = tools.convertKeys(rows[0]);
@ -378,7 +382,7 @@ module.exports.getRule = (id, callback) => {
}
if (!segment) {
return callback(new Error('Specified segment not found'));
return callback(new Error(_('Specified segment not found')));
}
if (rule.value) {
@ -400,7 +404,10 @@ module.exports.getRule = (id, callback) => {
case 'date':
case 'birthday':
if (rule.value.relativeRange) {
rule.formatted = (rule.value.start ? rule.value.start + ' days ' + (rule.value.startDirection ? 'after' : 'before') + ' today' : 'today') + ' … ' + (rule.value.end ? rule.value.end + ' days ' + (rule.value.endDirection ? 'after' : 'before') + ' today' : 'today');
let startString = rule.value.startDirection ? util.format(_('%s days after today'), rule.value.start) : util.format(_('%s days before today'), rule.value.start);
let endString = rule.value.endDirection ? util.format(_('%s days after today'), rule.value.end) : util.format(_('%s days before today'), rule.value.end);
rule.formatted = (rule.value.start ? startString : _('today')) + ' … ' + (rule.value.end ? endString : _('today'));
} else if (rule.value.range) {
rule.formatted = (rule.value.start || '') + ' … ' + (rule.value.end || '');
} else {
@ -408,7 +415,7 @@ module.exports.getRule = (id, callback) => {
}
break;
case 'boolean':
rule.formatted = rule.value.value ? 'Selected' : 'Not selected';
rule.formatted = rule.value.value ? _('Selected') : _('Not selected');
break;
default:
rule.formatted = rule.value.value || '';
@ -424,7 +431,7 @@ module.exports.updateRule = (id, rule, callback) => {
id = Number(id) || 0;
if (id < 1) {
return callback(new Error('Missing Rule ID'));
return callback(new Error(_('Missing Rule ID')));
}
rule = tools.convertKeys(rule);
@ -435,7 +442,7 @@ module.exports.updateRule = (id, rule, callback) => {
}
if (!existingRule) {
return callback(new Error('Selected rule not found'));
return callback(new Error(_('Selected rule not found')));
}
module.exports.get(existingRule.segment, (err, segment) => {
@ -444,12 +451,12 @@ module.exports.updateRule = (id, rule, callback) => {
}
if (!segment) {
return callback(new Error('Selected segment not found'));
return callback(new Error(_('Selected segment not found')));
}
let column = segment.columns.filter(column => column.column === existingRule.column).pop();
if (!column) {
return callback(new Error('Invalid rule type'));
return callback(new Error(_('Invalid rule type')));
}
let value;
@ -514,7 +521,7 @@ module.exports.deleteRule = (id, callback) => {
id = Number(id) || 0;
if (id < 1) {
return callback(new Error('Missing Rule ID'));
return callback(new Error(_('Missing Rule ID')));
}
db.getConnection((err, connection) => {
@ -539,7 +546,7 @@ module.exports.getQuery = (id, prefix, callback) => {
}
if (!segment) {
return callback(new Error('Segment not found'));
return callback(new Error(_('Segment not found')));
}
prefix = prefix ? prefix + '.' : '';
@ -648,7 +655,7 @@ module.exports.subscribers = (id, onlySubscribed, callback) => {
return callback(err);
}
if (!segment) {
return callback(new Error('Segment not found'));
return callback(new Error(_('Segment not found')));
}
module.exports.getQuery(id, false, (err, queryData) => {
if (err) {

View file

@ -10,6 +10,8 @@ let settings = require('./settings');
let mailer = require('../mailer');
let urllib = require('url');
let log = require('npmlog');
let _ = require('../translate')._;
let util = require('util');
module.exports.list = (listId, start, limit, callback) => {
listId = Number(listId) || 0;
@ -83,7 +85,7 @@ module.exports.filter = (listId, request, columns, segmentId, callback) => {
segmentId = Number(segmentId) || 0;
if (!listId) {
return callback(new Error('Missing List ID'));
return callback(new Error(_('Missing List ID')));
}
let processQuery = queryData => {
@ -228,7 +230,7 @@ module.exports.addConfirmation = (list, email, optInIp, data, callback) => {
name: [].concat(data.firstName || []).concat(data.lastName || []).join(' '),
address: email
},
subject: list.name + ': Please Confirm Subscription',
subject: util.format(_('%s: Please Confirm Subscription'),list.name),
encryptionKeys
}, {
html: 'emails/confirm-html.hbs',
@ -319,7 +321,7 @@ module.exports.subscribe = (cid, optInIp, callback) => {
}
if (!result.entryId) {
return callback(new Error('Could not save subscription'));
return callback(new Error(_('Could not save subscription')));
}
db.getConnection((err, connection) => {
@ -502,7 +504,7 @@ module.exports.get = (listId, cid, callback) => {
cid = (cid || '').toString().trim();
if (!cid) {
return callback(new Error('Missing Subbscription ID'));
return callback(new Error(_('Missing Subbscription ID')));
}
db.getConnection((err, connection) => {
@ -532,7 +534,7 @@ module.exports.getById = (listId, id, callback) => {
id = Number(id) || 0;
if (!id) {
return callback(new Error('Missing Subbscription ID'));
return callback(new Error(_('Missing Subbscription ID')));
}
db.getConnection((err, connection) => {
@ -560,7 +562,7 @@ module.exports.getById = (listId, id, callback) => {
module.exports.getByEmail = (listId, email, callback) => {
if (!email) {
return callback(new Error('Missing Subbscription email address'));
return callback(new Error(_('Missing Subbscription email address')));
}
db.getConnection((err, connection) => {
@ -635,11 +637,11 @@ module.exports.update = (listId, cid, updates, allowEmail, callback) => {
let values = [];
if (listId < 1) {
return callback(new Error('Missing List ID'));
return callback(new Error(_('Missing List ID')));
}
if (!cid) {
return callback(new Error('Missing subscription ID'));
return callback(new Error(_('Missing subscription ID')));
}
fields.list(listId, (err, fieldList) => {
@ -698,11 +700,11 @@ module.exports.unsubscribe = (listId, email, campaignId, callback) => {
campaignId = (campaignId || '').toString().trim() || false;
if (listId < 1) {
return callback(new Error('Missing List ID'));
return callback(new Error(_('Missing List ID')));
}
if (!email) {
return callback(new Error('Missing email address'));
return callback(new Error(_('Missing email address')));
}
db.getConnection((err, connection) => {
@ -884,11 +886,11 @@ module.exports.delete = (listId, cid, callback) => {
cid = (cid || '').toString().trim();
if (listId < 1) {
return callback(new Error('Missing List ID'));
return callback(new Error(_('Missing List ID')));
}
if (!cid) {
return callback(new Error('Missing subscription ID'));
return callback(new Error(_('Missing subscription ID')));
}
db.getConnection((err, connection) => {
@ -987,11 +989,11 @@ module.exports.updateImport = (listId, importId, data, callback) => {
importId = Number(importId) || 0;
if (listId < 1) {
return callback(new Error('Missing List ID'));
return callback(new Error(_('Missing List ID')));
}
if (importId < 1) {
return callback(new Error('Missing Import ID'));
return callback(new Error(_('Missing Import ID')));
}
let keys = [];
@ -1041,11 +1043,11 @@ module.exports.getImport = (listId, importId, callback) => {
importId = Number(importId) || 0;
if (listId < 1) {
return callback(new Error('Missing List ID'));
return callback(new Error(_('Missing List ID')));
}
if (importId < 1) {
return callback(new Error('Missing Import ID'));
return callback(new Error(_('Missing Import ID')));
}
db.getConnection((err, connection) => {
@ -1081,7 +1083,7 @@ module.exports.getFailedImports = (importId, callback) => {
importId = Number(importId) || 0;
if (importId < 1) {
return callback(new Error('Missing Import ID'));
return callback(new Error(_('Missing Import ID')));
}
db.getConnection((err, connection) => {
@ -1104,7 +1106,7 @@ module.exports.listImports = (listId, callback) => {
listId = Number(listId) || 0;
if (listId < 1) {
return callback(new Error('Missing List ID'));
return callback(new Error(_('Missing List ID')));
}
db.getConnection((err, connection) => {
@ -1147,11 +1149,11 @@ module.exports.updateAddress = (list, cid, updates, optInIp, callback) => {
let emailNew = (updates.emailNew || '').toString().trim();
if (!list || !list.id) {
return callback(new Error('Missing List ID'));
return callback(new Error(_('Missing List ID')));
}
if (!cid) {
return callback(new Error('Missing subscription ID'));
return callback(new Error(_('Missing subscription ID')));
}
tools.validateEmail(emailNew, false, err => {
@ -1173,12 +1175,12 @@ module.exports.updateAddress = (list, cid, updates, optInIp, callback) => {
}
if (!rows || !rows.length) {
connection.release();
return callback(new Error('Unknown subscription ID'));
return callback(new Error(_('Unknown subscription ID')));
}
if (rows[0].email === emailNew) {
connection.release();
return callback(new Error('Nothing seems to be changed'));
return callback(new Error(_('Nothing seems to be changed')));
}
let old = rows[0];
@ -1192,7 +1194,7 @@ module.exports.updateAddress = (list, cid, updates, optInIp, callback) => {
}
if (rows && rows[0] && rows[0].id) {
return callback(new Error('This address is already registered by someone else'));
return callback(new Error(_('This address is already registered by someone else')));
}
module.exports.addConfirmation(list, emailNew, optInIp, {

View file

@ -2,6 +2,7 @@
let db = require('../db');
let tools = require('../tools');
let _ = require('../translate')._;
let allowedKeys = ['description', 'editor_name', 'editor_data', 'html', 'text'];
@ -47,7 +48,7 @@ module.exports.get = (id, callback) => {
id = Number(id) || 0;
if (id < 1) {
return callback(new Error('Missing Template ID'));
return callback(new Error(_('Missing Template ID')));
}
db.getConnection((err, connection) => {
@ -76,7 +77,7 @@ module.exports.create = (template, callback) => {
let data = tools.convertKeys(template);
if (!(data.name || '').toString().trim()) {
return callback(new Error('Template Name must be set'));
return callback(new Error(_('Template Name must be set')));
}
let name = (template.name || '').toString().trim();
@ -118,11 +119,11 @@ module.exports.update = (id, updates, callback) => {
let data = tools.convertKeys(updates);
if (id < 1) {
return callback(new Error('Missing Template ID'));
return callback(new Error(_('Missing Template ID')));
}
if (!(data.name || '').toString().trim()) {
return callback(new Error('Template Name must be set'));
return callback(new Error(_('Template Name must be set')));
}
let name = (updates.name || '').toString().trim();
@ -159,7 +160,7 @@ module.exports.delete = (id, callback) => {
id = Number(id) || 0;
if (id < 1) {
return callback(new Error('Missing Template ID'));
return callback(new Error(_('Missing Template ID')));
}
db.getConnection((err, connection) => {

View file

@ -4,36 +4,37 @@ let tools = require('../tools');
let db = require('../db');
let lists = require('./lists');
let util = require('util');
let _ = require('../translate')._;
module.exports.defaultColumns = [{
column: 'created',
name: 'Sign up date',
name: _('Sign up date'),
type: 'date'
}, {
column: 'latest_open',
name: 'Latest open',
name: _('Latest open'),
type: 'date'
}, {
column: 'latest_click',
name: 'Latest click',
name: _('Latest click'),
type: 'date'
}];
module.exports.defaultCampaignEvents = [{
option: 'delivered',
name: 'Delivered'
name: _('Delivered')
}, {
option: 'opened',
name: 'Has Opened'
name: _('Has Opened')
}, {
option: 'clicked',
name: 'Has Clicked'
name: _('Has Clicked')
}, {
option: 'not_opened',
name: 'Not Opened'
name: _('Not Opened')
}, {
option: 'not_clicked',
name: 'Not Clicked'
name: _('Not Clicked')
}];
let defaultColumnMap = {};
@ -170,36 +171,36 @@ module.exports.create = (trigger, callback) => {
let column;
if (!listId) {
return callback(new Error('Missing or invalid list ID'));
return callback(new Error(_('Missing or invalid list ID')));
}
if (seconds < 0) {
return callback(new Error('Days in the past are not allowed'));
return callback(new Error(_('Days in the past are not allowed')));
}
if (!rule || ['campaign', 'subscription'].indexOf(rule) < 0) {
return callback(new Error('Missing or invalid trigger rule'));
return callback(new Error(_('Missing or invalid trigger rule')));
}
switch (rule) {
case 'subscription':
column = (trigger.column || '').toString().toLowerCase().trim();
if (!column) {
return callback(new Error('Invalid subscription configuration'));
return callback(new Error(_('Invalid subscription configuration')));
}
break;
case 'campaign':
column = (trigger.campaignOption || '').toString().toLowerCase().trim();
sourceCampaign = Number(trigger.sourceCampaign) || 0;
if (!column || !sourceCampaign) {
return callback(new Error('Invalid campaign configuration'));
return callback(new Error(_('Invalid campaign configuration')));
}
if (sourceCampaign === destCampaign) {
return callback(new Error('A campaing can not be a target for itself'));
return callback(new Error(_('A campaing can not be a target for itself')));
}
break;
default:
return callback(new Error('Missing or invalid trigger rule'));
return callback(new Error(_('Missing or invalid trigger rule')));
}
lists.get(listId, (err, list) => {
@ -207,7 +208,7 @@ module.exports.create = (trigger, callback) => {
return callback(err);
}
if (!list) {
return callback(new Error('Missing or invalid list ID'));
return callback(new Error(_('Missing or invalid list ID')));
}
db.getConnection((err, connection) => {
@ -228,7 +229,7 @@ module.exports.create = (trigger, callback) => {
let id = result && result.insertId;
if (!id) {
return callback(new Error('Could not store trigger row'));
return callback(new Error(_('Could not store trigger row')));
}
createTriggerTable(id, err => {
@ -245,7 +246,7 @@ module.exports.create = (trigger, callback) => {
module.exports.update = (id, trigger, callback) => {
id = Number(id) || 0;
if (id < 1) {
return callback(new Error('Missing or invalid Trigger ID'));
return callback(new Error(_('Missing or invalid Trigger ID')));
}
trigger = tools.convertKeys(trigger);
@ -259,32 +260,32 @@ module.exports.update = (id, trigger, callback) => {
let column;
if (seconds < 0) {
return callback(new Error('Days in the past are not allowed'));
return callback(new Error(_('Days in the past are not allowed')));
}
if (!rule || ['campaign', 'subscription'].indexOf(rule) < 0) {
return callback(new Error('Missing or invalid trigger rule'));
return callback(new Error(_('Missing or invalid trigger rule')));
}
switch (rule) {
case 'subscription':
column = (trigger.column || '').toString().toLowerCase().trim();
if (!column) {
return callback(new Error('Invalid subscription configuration'));
return callback(new Error(_('Invalid subscription configuration')));
}
break;
case 'campaign':
column = (trigger.campaignOption || '').toString().toLowerCase().trim();
sourceCampaign = Number(trigger.sourceCampaign) || 0;
if (!column || !sourceCampaign) {
return callback(new Error('Invalid campaign configuration'));
return callback(new Error(_('Invalid campaign configuration')));
}
if (sourceCampaign === destCampaign) {
return callback(new Error('A campaing can not be a target for itself'));
return callback(new Error(_('A campaing can not be a target for itself')));
}
break;
default:
return callback(new Error('Missing or invalid trigger rule'));
return callback(new Error(_('Missing or invalid trigger rule')));
}
db.getConnection((err, connection) => {
@ -312,7 +313,7 @@ module.exports.delete = (id, callback) => {
id = Number(id) || 0;
if (id < 1) {
return callback(new Error('Missing Trigger ID'));
return callback(new Error(_('Missing Trigger ID')));
}
db.getConnection((err, connection) => {

View file

@ -9,6 +9,7 @@ let mailer = require('../mailer');
let settings = require('./settings');
let crypto = require('crypto');
let urllib = require('url');
let _ = require('../translate')._;
/**
* Fetches user by ID value
@ -99,7 +100,7 @@ module.exports.add = (username, password, email, callback) => {
let id = result && result.insertId;
if (!id) {
return callback(new Error('Could not store user row'));
return callback(new Error(_('Could not store user row')));
}
return callback(null, id);
@ -169,7 +170,7 @@ module.exports.authenticate = (username, password, callback) => {
module.exports.update = (id, updates, callback) => {
if (!updates.email) {
return callback(new Error('Email Address must be set'));
return callback(new Error(_('Email Address must be set')));
}
let update = (connection, callback) => {
@ -180,7 +181,7 @@ module.exports.update = (id, updates, callback) => {
}
if (!rows.length) {
return callback('Failed to check user data');
return callback(_('Failed to check user data'));
}
let keys = ['email'];
@ -191,7 +192,7 @@ module.exports.update = (id, updates, callback) => {
connection.query('UPDATE users SET ' + keys.map(key => key + '=?').join(', ') + ' WHERE id=? LIMIT 1', values, (err, result) => {
if (err) {
if (err.code === 'ER_DUP_ENTRY') {
err = new Error('Can\'t change email as another user with the same email address already exists');
err = new Error(_('Can\'t change email as another user with the same email address already exists'));
}
return callback(err);
}
@ -208,15 +209,15 @@ module.exports.update = (id, updates, callback) => {
return callback(err);
}
if (!result) {
return callback('Incorrect current password');
return callback(_('Incorrect current password'));
}
if (!updates.password) {
return callback(new Error('New password not set'));
return callback(new Error(_('New password not set')));
}
if (updates.password !== updates.password2) {
return callback(new Error('Passwords do not match'));
return callback(new Error(_('Passwords do not match')));
}
bcrypt.hash(updates.password, null, null, (err, hash) => {
@ -254,7 +255,7 @@ module.exports.resetToken = (id, callback) => {
id = Number(id) || 0;
if (!id) {
return callback(new Error('User ID not set'));
return callback(new Error(_('User ID not set')));
}
db.getConnection((err, connection) => {
@ -282,7 +283,7 @@ module.exports.sendReset = (username, callback) => {
username = (username || '').toString().trim();
if (!username) {
return callback(new Error('Username must be set'));
return callback(new Error(_('Username must be set')));
}
db.getConnection((err, connection) => {
@ -319,7 +320,7 @@ module.exports.sendReset = (username, callback) => {
to: {
address: rows[0].email
},
subject: 'Mailer password change request'
subject: _('Mailer password change request')
}, {
html: 'emails/password-reset-html.hbs',
text: 'emails/password-reset-text.hbs',
@ -343,7 +344,7 @@ module.exports.sendReset = (username, callback) => {
module.exports.checkResetToken = (username, resetToken, callback) => {
if (!username || !resetToken) {
return callback(new Error('Missing username or reset token'));
return callback(new Error(_('Missing username or reset token')));
}
db.getConnection((err, connection) => {
if (err) {
@ -363,11 +364,11 @@ module.exports.resetPassword = (data, callback) => {
let updates = tools.convertKeys(data);
if (!updates.username || !updates.resetToken) {
return callback(new Error('Missing username or reset token'));
return callback(new Error(_('Missing username or reset token')));
}
if (!updates.password || !updates.password2 || updates.password !== updates.password2) {
return callback(new Error('Invalid new password'));
return callback(new Error(_('Invalid new password')));
}
bcrypt.hash(updates.password, null, null, (err, hash) => {