Version Description
- 2017-03-07 =
- Improved: sending very large emails with our sending service is less likely to time out. Thanks Mark!;
- Fixed: WordPress warnings are no longer displayed in the editor's contents;
- Small, little and tiny improvements to show we pay attention to details;
- British scientists say people whose sites run on PHP below version 7 have the lowest quality of life.
Download this release
Release Info
| Developer | wysija |
| Plugin | |
| Version | 3.0.0-beta.22 |
| Comparing to | |
| See all releases | |
Code changes from version 3.0.0-beta.21 to 3.0.0-beta.22
- assets/css/newsletter_editor.css +1 -0
- assets/js/mailpoet.js +253 -197
- assets/js/public.js +253 -197
- lang/index.php +3 -0
- lang/mailpoet-fr_FR.po +0 -4648
- lang/mailpoet.pot +66 -66
- lib/Cron/Workers/SendingQueue/SendingQueue.php +1 -1
- mailpoet.php +3 -3
- readme.txt +12 -6
- vendor/autoload.php +1 -1
- vendor/composer/ClassLoader.php +5 -31
- vendor/composer/autoload_real.php +8 -8
- vendor/composer/autoload_static.php +5 -5
- vendor/composer/installed.json +12 -12
- views/newsletter/editor.html +3 -0
- views/settings/mta.html +1 -5
assets/css/newsletter_editor.css
CHANGED
|
@@ -2461,6 +2461,7 @@ body {
|
|
| 2461 |
display: none;
|
| 2462 |
}
|
| 2463 |
.wrap > .mailpoet_notice,
|
|
|
|
| 2464 |
.update-nag {
|
| 2465 |
margin-left: 17px !important;
|
| 2466 |
}
|
| 2461 |
display: none;
|
| 2462 |
}
|
| 2463 |
.wrap > .mailpoet_notice,
|
| 2464 |
+
.notice,
|
| 2465 |
.update-nag {
|
| 2466 |
margin-left: 17px !important;
|
| 2467 |
}
|
assets/js/mailpoet.js
CHANGED
|
@@ -18093,7 +18093,7 @@ webpackJsonp([2],[
|
|
| 18093 |
|
| 18094 |
/* WEBPACK VAR INJECTION */(function(global) {/*!
|
| 18095 |
* Parsley.js
|
| 18096 |
-
* Version 2.
|
| 18097 |
* http://parsleyjs.org
|
| 18098 |
* Guillaume Potier - <guillaume@wisembly.com>
|
| 18099 |
* Marc-Andre Lafortune - <petroselinum@marc-andre.ca>
|
|
@@ -18105,6 +18105,8 @@ webpackJsonp([2],[
|
|
| 18105 |
//
|
| 18106 |
var _slice = Array.prototype.slice;
|
| 18107 |
|
|
|
|
|
|
|
| 18108 |
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
|
| 18109 |
|
| 18110 |
(function (global, factory) {
|
|
@@ -18115,7 +18117,7 @@ webpackJsonp([2],[
|
|
| 18115 |
var globalID = 1;
|
| 18116 |
var pastWarnings = {};
|
| 18117 |
|
| 18118 |
-
var
|
| 18119 |
// Parsley DOM-API
|
| 18120 |
// returns object from dom attributes and values
|
| 18121 |
attr: function attr($element, namespace, obj) {
|
|
@@ -18202,6 +18204,70 @@ webpackJsonp([2],[
|
|
| 18202 |
return string.replace(/^\s+|\s+$/g, '');
|
| 18203 |
},
|
| 18204 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18205 |
namespaceEvents: function namespaceEvents(events, namespace) {
|
| 18206 |
events = this.trimString(events || '').split(/\s+/);
|
| 18207 |
if (!events[0]) return '';
|
|
@@ -18245,14 +18311,14 @@ webpackJsonp([2],[
|
|
| 18245 |
_SubmitSelector: 'input[type="submit"], button:submit'
|
| 18246 |
};
|
| 18247 |
|
| 18248 |
-
var
|
| 18249 |
|
| 18250 |
// All these options could be overriden and specified directly in DOM using
|
| 18251 |
// `data-parsley-` default DOM-API
|
| 18252 |
// eg: `inputs` can be set in DOM using `data-parsley-inputs="input, textarea"`
|
| 18253 |
// eg: `data-parsley-stop-on-first-failing-constraint="false"`
|
| 18254 |
|
| 18255 |
-
var
|
| 18256 |
// ### General
|
| 18257 |
|
| 18258 |
// Default data-namespace for DOM API
|
|
@@ -18299,11 +18365,11 @@ webpackJsonp([2],[
|
|
| 18299 |
|
| 18300 |
// Return the `$element` that will receive these above success or error classes
|
| 18301 |
// Could also be (and given directly from DOM) a valid selector like `'#div'`
|
| 18302 |
-
classHandler: function classHandler(
|
| 18303 |
|
| 18304 |
// Return the `$element` where errors will be appended
|
| 18305 |
// Could also be (and given directly from DOM) a valid selector like `'#div'`
|
| 18306 |
-
errorsContainer: function errorsContainer(
|
| 18307 |
|
| 18308 |
// ul elem that would receive errors' list
|
| 18309 |
errorsWrapper: '<ul class="parsley-errors-list"></ul>',
|
|
@@ -18312,11 +18378,11 @@ webpackJsonp([2],[
|
|
| 18312 |
errorTemplate: '<li></li>'
|
| 18313 |
};
|
| 18314 |
|
| 18315 |
-
var
|
| 18316 |
-
this.__id__ =
|
| 18317 |
};
|
| 18318 |
|
| 18319 |
-
|
| 18320 |
asyncSupport: true, // Deprecated
|
| 18321 |
|
| 18322 |
_pipeAccordingToValidationResult: function _pipeAccordingToValidationResult() {
|
|
@@ -18331,14 +18397,14 @@ webpackJsonp([2],[
|
|
| 18331 |
},
|
| 18332 |
|
| 18333 |
actualizeOptions: function actualizeOptions() {
|
| 18334 |
-
|
| 18335 |
if (this.parent && this.parent.actualizeOptions) this.parent.actualizeOptions();
|
| 18336 |
return this;
|
| 18337 |
},
|
| 18338 |
|
| 18339 |
_resetOptions: function _resetOptions(initOptions) {
|
| 18340 |
-
this.domOptions =
|
| 18341 |
-
this.options =
|
| 18342 |
// Shallow copy of ownProperties of initOptions:
|
| 18343 |
for (var i in initOptions) {
|
| 18344 |
if (initOptions.hasOwnProperty(i)) this.options[i] = initOptions[i];
|
|
@@ -18404,7 +18470,7 @@ webpackJsonp([2],[
|
|
| 18404 |
},
|
| 18405 |
|
| 18406 |
asyncIsValid: function asyncIsValid(group, force) {
|
| 18407 |
-
|
| 18408 |
return this.whenValid({ group: group, force: force });
|
| 18409 |
},
|
| 18410 |
|
|
@@ -18413,73 +18479,24 @@ webpackJsonp([2],[
|
|
| 18413 |
}
|
| 18414 |
};
|
| 18415 |
|
| 18416 |
-
var requirementConverters = {
|
| 18417 |
-
string: function string(_string) {
|
| 18418 |
-
return _string;
|
| 18419 |
-
},
|
| 18420 |
-
integer: function integer(string) {
|
| 18421 |
-
if (isNaN(string)) throw 'Requirement is not an integer: "' + string + '"';
|
| 18422 |
-
return parseInt(string, 10);
|
| 18423 |
-
},
|
| 18424 |
-
number: function number(string) {
|
| 18425 |
-
if (isNaN(string)) throw 'Requirement is not a number: "' + string + '"';
|
| 18426 |
-
return parseFloat(string);
|
| 18427 |
-
},
|
| 18428 |
-
reference: function reference(string) {
|
| 18429 |
-
// Unused for now
|
| 18430 |
-
var result = $(string);
|
| 18431 |
-
if (result.length === 0) throw 'No such reference: "' + string + '"';
|
| 18432 |
-
return result;
|
| 18433 |
-
},
|
| 18434 |
-
'boolean': function _boolean(string) {
|
| 18435 |
-
return string !== 'false';
|
| 18436 |
-
},
|
| 18437 |
-
object: function object(string) {
|
| 18438 |
-
return ParsleyUtils__default.deserializeValue(string);
|
| 18439 |
-
},
|
| 18440 |
-
regexp: function regexp(_regexp) {
|
| 18441 |
-
var flags = '';
|
| 18442 |
-
|
| 18443 |
-
// Test if RegExp is literal, if not, nothing to be done, otherwise, we need to isolate flags and pattern
|
| 18444 |
-
if (/^\/.*\/(?:[gimy]*)$/.test(_regexp)) {
|
| 18445 |
-
// Replace the regexp literal string with the first match group: ([gimy]*)
|
| 18446 |
-
// If no flag is present, this will be a blank string
|
| 18447 |
-
flags = _regexp.replace(/.*\/([gimy]*)$/, '$1');
|
| 18448 |
-
// Again, replace the regexp literal string with the first match group:
|
| 18449 |
-
// everything excluding the opening and closing slashes and the flags
|
| 18450 |
-
_regexp = _regexp.replace(new RegExp('^/(.*?)/' + flags + '$'), '$1');
|
| 18451 |
-
} else {
|
| 18452 |
-
// Anchor regexp:
|
| 18453 |
-
_regexp = '^' + _regexp + '$';
|
| 18454 |
-
}
|
| 18455 |
-
return new RegExp(_regexp, flags);
|
| 18456 |
-
}
|
| 18457 |
-
};
|
| 18458 |
-
|
| 18459 |
var convertArrayRequirement = function convertArrayRequirement(string, length) {
|
| 18460 |
var m = string.match(/^\s*\[(.*)\]\s*$/);
|
| 18461 |
if (!m) throw 'Requirement is not an array: "' + string + '"';
|
| 18462 |
-
var values = m[1].split(',').map(
|
| 18463 |
if (values.length !== length) throw 'Requirement has ' + values.length + ' values when ' + length + ' are needed';
|
| 18464 |
return values;
|
| 18465 |
};
|
| 18466 |
|
| 18467 |
-
var convertRequirement = function convertRequirement(requirementType, string) {
|
| 18468 |
-
var converter = requirementConverters[requirementType || 'string'];
|
| 18469 |
-
if (!converter) throw 'Unknown requirement specification: "' + requirementType + '"';
|
| 18470 |
-
return converter(string);
|
| 18471 |
-
};
|
| 18472 |
-
|
| 18473 |
var convertExtraOptionRequirement = function convertExtraOptionRequirement(requirementSpec, string, extraOptionReader) {
|
| 18474 |
var main = null;
|
| 18475 |
var extra = {};
|
| 18476 |
for (var key in requirementSpec) {
|
| 18477 |
if (key) {
|
| 18478 |
var value = extraOptionReader(key);
|
| 18479 |
-
if ('string' === typeof value) value =
|
| 18480 |
extra[key] = value;
|
| 18481 |
} else {
|
| 18482 |
-
main =
|
| 18483 |
}
|
| 18484 |
}
|
| 18485 |
return [main, extra];
|
|
@@ -18487,11 +18504,11 @@ webpackJsonp([2],[
|
|
| 18487 |
|
| 18488 |
// A Validator needs to implement the methods `validate` and `parseRequirements`
|
| 18489 |
|
| 18490 |
-
var
|
| 18491 |
$.extend(true, this, spec);
|
| 18492 |
};
|
| 18493 |
|
| 18494 |
-
|
| 18495 |
// Returns `true` iff the given `value` is valid according the given requirements.
|
| 18496 |
validate: function validate(value, requirementFirstArg) {
|
| 18497 |
if (this.fn) {
|
|
@@ -18506,6 +18523,12 @@ webpackJsonp([2],[
|
|
| 18506 |
if (!this.validateMultiple) throw 'Validator `' + this.name + '` does not handle multiple values';
|
| 18507 |
return this.validateMultiple.apply(this, arguments);
|
| 18508 |
} else {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18509 |
if (this.validateNumber) {
|
| 18510 |
if (isNaN(value)) return false;
|
| 18511 |
arguments[0] = parseFloat(arguments[0]);
|
|
@@ -18529,12 +18552,12 @@ webpackJsonp([2],[
|
|
| 18529 |
var type = this.requirementType;
|
| 18530 |
if ($.isArray(type)) {
|
| 18531 |
var values = convertArrayRequirement(requirements, type.length);
|
| 18532 |
-
for (var i = 0; i < values.length; i++) values[i] =
|
| 18533 |
return values;
|
| 18534 |
} else if ($.isPlainObject(type)) {
|
| 18535 |
return convertExtraOptionRequirement(type, requirements, extraOptionReader);
|
| 18536 |
} else {
|
| 18537 |
-
return [
|
| 18538 |
}
|
| 18539 |
},
|
| 18540 |
// Defaults:
|
|
@@ -18544,8 +18567,8 @@ webpackJsonp([2],[
|
|
| 18544 |
|
| 18545 |
};
|
| 18546 |
|
| 18547 |
-
var
|
| 18548 |
-
this.__class__ = '
|
| 18549 |
|
| 18550 |
// Default Parsley locale is en
|
| 18551 |
this.locale = 'en';
|
|
@@ -18553,7 +18576,7 @@ webpackJsonp([2],[
|
|
| 18553 |
this.init(validators || {}, catalog || {});
|
| 18554 |
};
|
| 18555 |
|
| 18556 |
-
var
|
| 18557 |
email: /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,
|
| 18558 |
|
| 18559 |
// Follow https://www.w3.org/TR/html5/infrastructure.html#floating-point-numbers
|
|
@@ -18565,6 +18588,12 @@ webpackJsonp([2],[
|
|
| 18565 |
|
| 18566 |
alphanum: /^\w+$/i,
|
| 18567 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18568 |
url: new RegExp("^" +
|
| 18569 |
// protocol identifier
|
| 18570 |
"(?:(?:https?|ftp)://)?" + // ** mod: make scheme optional
|
|
@@ -18592,7 +18621,7 @@ webpackJsonp([2],[
|
|
| 18592 |
// resource path
|
| 18593 |
"(?:/\\S*)?" + "$", 'i')
|
| 18594 |
};
|
| 18595 |
-
|
| 18596 |
|
| 18597 |
// See http://stackoverflow.com/a/10454560/8279
|
| 18598 |
var decimalPlaces = function decimalPlaces(num) {
|
|
@@ -18607,7 +18636,32 @@ webpackJsonp([2],[
|
|
| 18607 |
match[2] ? +match[2] : 0));
|
| 18608 |
};
|
| 18609 |
|
| 18610 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18611 |
init: function init(validators, catalog) {
|
| 18612 |
this.catalog = catalog;
|
| 18613 |
// Copy prototype's validators:
|
|
@@ -18667,8 +18721,8 @@ webpackJsonp([2],[
|
|
| 18667 |
// Old API was addValidator(name, function, priority)
|
| 18668 |
//
|
| 18669 |
addValidator: function addValidator(name, arg1, arg2) {
|
| 18670 |
-
if (this.validators[name])
|
| 18671 |
-
|
| 18672 |
return;
|
| 18673 |
}
|
| 18674 |
return this._setValidator.apply(this, arguments);
|
|
@@ -18676,14 +18730,14 @@ webpackJsonp([2],[
|
|
| 18676 |
|
| 18677 |
updateValidator: function updateValidator(name, arg1, arg2) {
|
| 18678 |
if (!this.validators[name]) {
|
| 18679 |
-
|
| 18680 |
return this.addValidator.apply(this, arguments);
|
| 18681 |
}
|
| 18682 |
return this._setValidator.apply(this, arguments);
|
| 18683 |
},
|
| 18684 |
|
| 18685 |
removeValidator: function removeValidator(name) {
|
| 18686 |
-
if (!this.validators[name])
|
| 18687 |
|
| 18688 |
delete this.validators[name];
|
| 18689 |
|
|
@@ -18699,7 +18753,7 @@ webpackJsonp([2],[
|
|
| 18699 |
};
|
| 18700 |
}
|
| 18701 |
if (!validator.validate) {
|
| 18702 |
-
validator = new
|
| 18703 |
}
|
| 18704 |
this.validators[name] = validator;
|
| 18705 |
|
|
@@ -18765,11 +18819,11 @@ webpackJsonp([2],[
|
|
| 18765 |
var _ref$base = _ref.base;
|
| 18766 |
var base = _ref$base === undefined ? 0 : _ref$base;
|
| 18767 |
|
| 18768 |
-
var
|
| 18769 |
-
if (!
|
| 18770 |
throw new Error('validator type `' + type + '` is not supported');
|
| 18771 |
}
|
| 18772 |
-
if (!
|
| 18773 |
if ('number' === type) {
|
| 18774 |
if (!/^any$/i.test(step || '')) {
|
| 18775 |
var nb = Number(value);
|
|
@@ -18841,27 +18895,15 @@ webpackJsonp([2],[
|
|
| 18841 |
requirementType: ['integer', 'integer'],
|
| 18842 |
priority: 30
|
| 18843 |
},
|
| 18844 |
-
min: {
|
| 18845 |
-
|
| 18846 |
-
|
| 18847 |
-
|
| 18848 |
-
|
| 18849 |
-
|
| 18850 |
-
|
| 18851 |
-
|
| 18852 |
-
|
| 18853 |
-
return value <= requirement;
|
| 18854 |
-
},
|
| 18855 |
-
requirementType: 'number',
|
| 18856 |
-
priority: 30
|
| 18857 |
-
},
|
| 18858 |
-
range: {
|
| 18859 |
-
validateNumber: function validateNumber(value, min, max) {
|
| 18860 |
-
return value >= min && value <= max;
|
| 18861 |
-
},
|
| 18862 |
-
requirementType: ['number', 'number'],
|
| 18863 |
-
priority: 30
|
| 18864 |
-
},
|
| 18865 |
equalto: {
|
| 18866 |
validateString: function validateString(value, refOrValue) {
|
| 18867 |
var $reference = $(refOrValue);
|
|
@@ -18872,7 +18914,7 @@ webpackJsonp([2],[
|
|
| 18872 |
}
|
| 18873 |
};
|
| 18874 |
|
| 18875 |
-
var
|
| 18876 |
|
| 18877 |
var diffResults = function diffResults(newResult, oldResult, deep) {
|
| 18878 |
var added = [];
|
|
@@ -18896,7 +18938,7 @@ webpackJsonp([2],[
|
|
| 18896 |
};
|
| 18897 |
};
|
| 18898 |
|
| 18899 |
-
|
| 18900 |
|
| 18901 |
_actualizeTriggers: function _actualizeTriggers() {
|
| 18902 |
var _this2 = this;
|
|
@@ -18904,7 +18946,7 @@ webpackJsonp([2],[
|
|
| 18904 |
this.$element.on('submit.Parsley', function (evt) {
|
| 18905 |
_this2.onSubmitValidate(evt);
|
| 18906 |
});
|
| 18907 |
-
this.$element.on('click.Parsley',
|
| 18908 |
_this2.onSubmitButton(evt);
|
| 18909 |
});
|
| 18910 |
|
|
@@ -18939,7 +18981,7 @@ webpackJsonp([2],[
|
|
| 18939 |
|
| 18940 |
};
|
| 18941 |
|
| 18942 |
-
|
| 18943 |
|
| 18944 |
_reflowUI: function _reflowUI() {
|
| 18945 |
this._buildUI();
|
|
@@ -19135,7 +19177,7 @@ webpackJsonp([2],[
|
|
| 19135 |
if (0 !== this._ui.$errorsWrapper.parent().length) return this._ui.$errorsWrapper.parent();
|
| 19136 |
|
| 19137 |
if ('string' === typeof this.options.errorsContainer) {
|
| 19138 |
-
if ($(this.options.errorsContainer).length) return $(this.options.errorsContainer).append(this._ui.$errorsWrapper);else
|
| 19139 |
} else if ('function' === typeof this.options.errorsContainer) $errorsContainer = this.options.errorsContainer.call(this, this);
|
| 19140 |
|
| 19141 |
if ('undefined' !== typeof $errorsContainer && $errorsContainer.length) return $errorsContainer.append(this._ui.$errorsWrapper);
|
|
@@ -19151,9 +19193,9 @@ webpackJsonp([2],[
|
|
| 19151 |
|
| 19152 |
// Remove Parsley events already bound on this field
|
| 19153 |
$toBind.off('.Parsley');
|
| 19154 |
-
if (this._failedOnce) $toBind.on(
|
| 19155 |
_this3._validateIfNeeded();
|
| 19156 |
-
});else if (trigger =
|
| 19157 |
$toBind.on(trigger, function (event) {
|
| 19158 |
_this3._validateIfNeeded(event);
|
| 19159 |
});
|
|
@@ -19216,8 +19258,8 @@ webpackJsonp([2],[
|
|
| 19216 |
}
|
| 19217 |
};
|
| 19218 |
|
| 19219 |
-
var
|
| 19220 |
-
this.__class__ = '
|
| 19221 |
|
| 19222 |
this.$element = $(element);
|
| 19223 |
this.domOptions = domOptions;
|
|
@@ -19228,9 +19270,9 @@ webpackJsonp([2],[
|
|
| 19228 |
this.validationResult = null;
|
| 19229 |
};
|
| 19230 |
|
| 19231 |
-
var
|
| 19232 |
|
| 19233 |
-
|
| 19234 |
onSubmitValidate: function onSubmitValidate(event) {
|
| 19235 |
var _this5 = this;
|
| 19236 |
|
|
@@ -19238,7 +19280,7 @@ webpackJsonp([2],[
|
|
| 19238 |
if (true === event.parsley) return;
|
| 19239 |
|
| 19240 |
// If we didn't come here through a submit button, use the first one in the form
|
| 19241 |
-
var $submitSource = this._$submitSource || this.$element.find(
|
| 19242 |
this._$submitSource = null;
|
| 19243 |
this.$element.find('.parsley-synthetic-submit-button').prop('disabled', true);
|
| 19244 |
if ($submitSource.is('[formnovalidate]')) return;
|
|
@@ -19286,7 +19328,7 @@ webpackJsonp([2],[
|
|
| 19286 |
// Consider using `whenValidate` instead.
|
| 19287 |
validate: function validate(options) {
|
| 19288 |
if (arguments.length >= 1 && !$.isPlainObject(options)) {
|
| 19289 |
-
|
| 19290 |
|
| 19291 |
var _arguments = _slice.call(arguments);
|
| 19292 |
|
|
@@ -19296,11 +19338,11 @@ webpackJsonp([2],[
|
|
| 19296 |
|
| 19297 |
options = { group: group, force: force, event: event };
|
| 19298 |
}
|
| 19299 |
-
return
|
| 19300 |
},
|
| 19301 |
|
| 19302 |
whenValidate: function whenValidate() {
|
| 19303 |
-
var
|
| 19304 |
_this6 = this;
|
| 19305 |
|
| 19306 |
var _ref7 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
|
|
@@ -19312,7 +19354,7 @@ webpackJsonp([2],[
|
|
| 19312 |
this.submitEvent = event;
|
| 19313 |
if (event) {
|
| 19314 |
this.submitEvent = $.extend({}, event, { preventDefault: function preventDefault() {
|
| 19315 |
-
|
| 19316 |
_this6.validationResult = false;
|
| 19317 |
} });
|
| 19318 |
}
|
|
@@ -19330,7 +19372,7 @@ webpackJsonp([2],[
|
|
| 19330 |
});
|
| 19331 |
});
|
| 19332 |
|
| 19333 |
-
return (
|
| 19334 |
_this6._trigger('success');
|
| 19335 |
}).fail(function () {
|
| 19336 |
_this6.validationResult = false;
|
|
@@ -19338,7 +19380,7 @@ webpackJsonp([2],[
|
|
| 19338 |
_this6._trigger('error');
|
| 19339 |
}).always(function () {
|
| 19340 |
_this6._trigger('validated');
|
| 19341 |
-
})).pipe.apply(
|
| 19342 |
},
|
| 19343 |
|
| 19344 |
// Iterate over refreshed fields, and stop on first failure.
|
|
@@ -19347,7 +19389,7 @@ webpackJsonp([2],[
|
|
| 19347 |
// Prefer using `whenValid` instead.
|
| 19348 |
isValid: function isValid(options) {
|
| 19349 |
if (arguments.length >= 1 && !$.isPlainObject(options)) {
|
| 19350 |
-
|
| 19351 |
|
| 19352 |
var _arguments2 = _slice.call(arguments);
|
| 19353 |
|
|
@@ -19356,7 +19398,7 @@ webpackJsonp([2],[
|
|
| 19356 |
|
| 19357 |
options = { group: group, force: force };
|
| 19358 |
}
|
| 19359 |
-
return
|
| 19360 |
},
|
| 19361 |
|
| 19362 |
// Iterate over refreshed fields and validate them.
|
|
@@ -19377,7 +19419,7 @@ webpackJsonp([2],[
|
|
| 19377 |
return field.whenValid({ group: group, force: force });
|
| 19378 |
});
|
| 19379 |
});
|
| 19380 |
-
return
|
| 19381 |
},
|
| 19382 |
|
| 19383 |
// Reset UI
|
|
@@ -19416,8 +19458,8 @@ webpackJsonp([2],[
|
|
| 19416 |
_this8.$element.find(_this8.options.inputs).not(_this8.options.excluded).each(function (_, element) {
|
| 19417 |
var fieldInstance = new window.Parsley.Factory(element, {}, _this8);
|
| 19418 |
|
| 19419 |
-
// Only add valid and not excluded `
|
| 19420 |
-
if (('
|
| 19421 |
var uniqueId = fieldInstance.__class__ + '-' + fieldInstance.__id__;
|
| 19422 |
if ('undefined' === typeof _this8.fieldsMappedById[uniqueId]) {
|
| 19423 |
_this8.fieldsMappedById[uniqueId] = fieldInstance;
|
|
@@ -19426,7 +19468,7 @@ webpackJsonp([2],[
|
|
| 19426 |
}
|
| 19427 |
});
|
| 19428 |
|
| 19429 |
-
$.each(
|
| 19430 |
field.reset();
|
| 19431 |
});
|
| 19432 |
});
|
|
@@ -19461,7 +19503,7 @@ webpackJsonp([2],[
|
|
| 19461 |
|
| 19462 |
var Constraint = function Constraint(parsleyField, name, requirements, priority, isDomConstraint) {
|
| 19463 |
var validatorSpec = window.Parsley._validatorRegistry.validators[name];
|
| 19464 |
-
var validator = new
|
| 19465 |
|
| 19466 |
$.extend(this, {
|
| 19467 |
validator: validator,
|
|
@@ -19494,8 +19536,8 @@ webpackJsonp([2],[
|
|
| 19494 |
}
|
| 19495 |
};
|
| 19496 |
|
| 19497 |
-
var
|
| 19498 |
-
this.__class__ = '
|
| 19499 |
|
| 19500 |
this.$element = $(field);
|
| 19501 |
|
|
@@ -19518,14 +19560,14 @@ webpackJsonp([2],[
|
|
| 19518 |
|
| 19519 |
var parsley_field__statusMapping = { pending: null, resolved: true, rejected: false };
|
| 19520 |
|
| 19521 |
-
|
| 19522 |
// # Public API
|
| 19523 |
-
// Validate field and trigger some events for mainly `
|
| 19524 |
// @returns `true`, an array of the validators that failed, or
|
| 19525 |
// `null` if validation is not finished. Prefer using whenValidate
|
| 19526 |
validate: function validate(options) {
|
| 19527 |
if (arguments.length >= 1 && !$.isPlainObject(options)) {
|
| 19528 |
-
|
| 19529 |
options = { options: options };
|
| 19530 |
}
|
| 19531 |
var promise = this.whenValidate(options);
|
|
@@ -19541,7 +19583,7 @@ webpackJsonp([2],[
|
|
| 19541 |
}
|
| 19542 |
},
|
| 19543 |
|
| 19544 |
-
// Validate field and trigger some events for mainly `
|
| 19545 |
// @returns a promise that succeeds only when all validations do
|
| 19546 |
// or `undefined` if field is not in the given `group`.
|
| 19547 |
whenValidate: function whenValidate() {
|
|
@@ -19599,7 +19641,7 @@ webpackJsonp([2],[
|
|
| 19599 |
// See also `whenValid`.
|
| 19600 |
isValid: function isValid(options) {
|
| 19601 |
if (arguments.length >= 1 && !$.isPlainObject(options)) {
|
| 19602 |
-
|
| 19603 |
|
| 19604 |
var _arguments3 = _slice.call(arguments);
|
| 19605 |
|
|
@@ -19650,13 +19692,13 @@ webpackJsonp([2],[
|
|
| 19650 |
$.each(groupedConstraints, function (_, constraints) {
|
| 19651 |
// Process one group of constraints at a time, we validate the constraints
|
| 19652 |
// and combine the promises together.
|
| 19653 |
-
var promise =
|
| 19654 |
return _this11._validateConstraint(value, constraint);
|
| 19655 |
}));
|
| 19656 |
promises.push(promise);
|
| 19657 |
if (promise.state() === 'rejected') return false; // Interrupt processing if a group has already failed
|
| 19658 |
});
|
| 19659 |
-
return
|
| 19660 |
},
|
| 19661 |
|
| 19662 |
// @returns a promise
|
|
@@ -19667,7 +19709,7 @@ webpackJsonp([2],[
|
|
| 19667 |
// Map false to a failed promise
|
| 19668 |
if (false === result) result = $.Deferred().reject();
|
| 19669 |
// Make sure we return a promise and that we record failures
|
| 19670 |
-
return
|
| 19671 |
if (!(_this12.validationResult instanceof Array)) _this12.validationResult = [];
|
| 19672 |
_this12.validationResult.push({
|
| 19673 |
assert: constraint,
|
|
@@ -19700,7 +19742,7 @@ webpackJsonp([2],[
|
|
| 19700 |
// Field case: emit destroy event to clean UI and then destroy stored instance
|
| 19701 |
this._destroyUI();
|
| 19702 |
this.$element.removeData('Parsley');
|
| 19703 |
-
this.$element.removeData('
|
| 19704 |
this._trigger('destroy');
|
| 19705 |
},
|
| 19706 |
|
|
@@ -19782,13 +19824,13 @@ webpackJsonp([2],[
|
|
| 19782 |
if ('string' === typeof this.$element.attr('pattern')) this.addConstraint('pattern', this.$element.attr('pattern'), undefined, true);
|
| 19783 |
|
| 19784 |
// range
|
| 19785 |
-
if (
|
| 19786 |
|
| 19787 |
// HTML5 min
|
| 19788 |
-
else if (
|
| 19789 |
|
| 19790 |
// HTML5 max
|
| 19791 |
-
else if (
|
| 19792 |
|
| 19793 |
// length
|
| 19794 |
if ('undefined' !== typeof this.$element.attr('minlength') && 'undefined' !== typeof this.$element.attr('maxlength')) this.addConstraint('length', [this.$element.attr('minlength'), this.$element.attr('maxlength')], undefined, true);
|
|
@@ -19811,7 +19853,7 @@ webpackJsonp([2],[
|
|
| 19811 |
base: this.$element.attr('min') || this.$element.attr('value')
|
| 19812 |
}], undefined, true);
|
| 19813 |
// Regular other HTML5 supported types
|
| 19814 |
-
} else if (/^(email|url|range)$/i.test(type)) {
|
| 19815 |
return this.addConstraint('type', type, undefined, true);
|
| 19816 |
}
|
| 19817 |
return this;
|
|
@@ -19836,15 +19878,20 @@ webpackJsonp([2],[
|
|
| 19836 |
// Use `data-parsley-whitespace="squish"` to auto squish input value
|
| 19837 |
// Use `data-parsley-whitespace="trim"` to auto trim input value
|
| 19838 |
_handleWhitespace: function _handleWhitespace(value) {
|
| 19839 |
-
if (true === this.options.trimValue)
|
| 19840 |
|
| 19841 |
if ('squish' === this.options.whitespace) value = value.replace(/\s{2,}/g, ' ');
|
| 19842 |
|
| 19843 |
-
if ('trim' === this.options.whitespace || 'squish' === this.options.whitespace || true === this.options.trimValue) value =
|
| 19844 |
|
| 19845 |
return value;
|
| 19846 |
},
|
| 19847 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19848 |
// Internal only.
|
| 19849 |
// Returns the constraints, grouped by descending priority.
|
| 19850 |
// The result is thus an array of arrays of constraints.
|
|
@@ -19870,13 +19917,13 @@ webpackJsonp([2],[
|
|
| 19870 |
|
| 19871 |
};
|
| 19872 |
|
| 19873 |
-
var parsley_field =
|
| 19874 |
|
| 19875 |
-
var
|
| 19876 |
-
this.__class__ = '
|
| 19877 |
};
|
| 19878 |
|
| 19879 |
-
|
| 19880 |
// Add new `$element` sibling for multiple field
|
| 19881 |
addElement: function addElement($element) {
|
| 19882 |
this.$elements.push($element);
|
|
@@ -19884,7 +19931,7 @@ webpackJsonp([2],[
|
|
| 19884 |
return this;
|
| 19885 |
},
|
| 19886 |
|
| 19887 |
-
// See `
|
| 19888 |
refreshConstraints: function refreshConstraints() {
|
| 19889 |
var fieldConstraints;
|
| 19890 |
|
|
@@ -19906,7 +19953,7 @@ webpackJsonp([2],[
|
|
| 19906 |
continue;
|
| 19907 |
}
|
| 19908 |
|
| 19909 |
-
fieldConstraints = this.$elements[i].data('
|
| 19910 |
|
| 19911 |
for (var j = 0; j < fieldConstraints.length; j++) this.addConstraint(fieldConstraints[j].name, fieldConstraints[j].requirements, fieldConstraints[j].priority, fieldConstraints[j].isDomConstraint);
|
| 19912 |
}
|
|
@@ -19914,7 +19961,7 @@ webpackJsonp([2],[
|
|
| 19914 |
return this;
|
| 19915 |
},
|
| 19916 |
|
| 19917 |
-
// See `
|
| 19918 |
getValue: function getValue() {
|
| 19919 |
// Value could be overriden in DOM
|
| 19920 |
if ('function' === typeof this.options.value) return this.options.value(this);else if ('undefined' !== typeof this.options.value) return this.options.value;
|
|
@@ -19947,14 +19994,14 @@ webpackJsonp([2],[
|
|
| 19947 |
}
|
| 19948 |
};
|
| 19949 |
|
| 19950 |
-
var
|
| 19951 |
this.$element = $(element);
|
| 19952 |
|
| 19953 |
// If the element has already been bound, returns its saved Parsley instance
|
| 19954 |
var savedparsleyFormInstance = this.$element.data('Parsley');
|
| 19955 |
if (savedparsleyFormInstance) {
|
| 19956 |
|
| 19957 |
-
// If the saved instance has been bound without a
|
| 19958 |
if ('undefined' !== typeof parsleyFormInstance && savedparsleyFormInstance.parent === window.Parsley) {
|
| 19959 |
savedparsleyFormInstance.parent = parsleyFormInstance;
|
| 19960 |
savedparsleyFormInstance._resetOptions(savedparsleyFormInstance.options);
|
|
@@ -19970,25 +20017,25 @@ webpackJsonp([2],[
|
|
| 19970 |
// Parsley must be instantiated with a DOM element or jQuery $element
|
| 19971 |
if (!this.$element.length) throw new Error('You must bind Parsley on an existing element.');
|
| 19972 |
|
| 19973 |
-
if ('undefined' !== typeof parsleyFormInstance && '
|
| 19974 |
|
| 19975 |
this.parent = parsleyFormInstance || window.Parsley;
|
| 19976 |
return this.init(options);
|
| 19977 |
};
|
| 19978 |
|
| 19979 |
-
|
| 19980 |
init: function init(options) {
|
| 19981 |
this.__class__ = 'Parsley';
|
| 19982 |
-
this.__version__ = '2.
|
| 19983 |
-
this.__id__ =
|
| 19984 |
|
| 19985 |
// Pre-compute options
|
| 19986 |
this._resetOptions(options);
|
| 19987 |
|
| 19988 |
-
// A
|
| 19989 |
-
if (this.$element.is('form') ||
|
| 19990 |
|
| 19991 |
-
// Every other element is bound as a `
|
| 19992 |
return this.isMultiple() ? this.handleMultiple() : this.bind('parsleyField');
|
| 19993 |
},
|
| 19994 |
|
|
@@ -20016,7 +20063,7 @@ webpackJsonp([2],[
|
|
| 20016 |
|
| 20017 |
// Else for radio / checkboxes, we need a `name` or `data-parsley-multiple` to properly bind it
|
| 20018 |
} else if (!this.options.multiple) {
|
| 20019 |
-
|
| 20020 |
return this;
|
| 20021 |
}
|
| 20022 |
|
|
@@ -20036,7 +20083,7 @@ webpackJsonp([2],[
|
|
| 20036 |
parsleyMultipleInstance = $($previouslyRelated.get(i)).data('Parsley');
|
| 20037 |
if ('undefined' !== typeof parsleyMultipleInstance) {
|
| 20038 |
|
| 20039 |
-
if (!this.$element.data('
|
| 20040 |
parsleyMultipleInstance.addElement(this.$element);
|
| 20041 |
}
|
| 20042 |
|
|
@@ -20044,35 +20091,35 @@ webpackJsonp([2],[
|
|
| 20044 |
}
|
| 20045 |
}
|
| 20046 |
|
| 20047 |
-
// Create a secret
|
| 20048 |
-
// And will be useful later to access classic `
|
| 20049 |
this.bind('parsleyField', true);
|
| 20050 |
|
| 20051 |
return parsleyMultipleInstance || this.bind('parsleyFieldMultiple');
|
| 20052 |
},
|
| 20053 |
|
| 20054 |
-
// Return proper `
|
| 20055 |
bind: function bind(type, doNotStore) {
|
| 20056 |
var parsleyInstance;
|
| 20057 |
|
| 20058 |
switch (type) {
|
| 20059 |
case 'parsleyForm':
|
| 20060 |
-
parsleyInstance = $.extend(new
|
| 20061 |
break;
|
| 20062 |
case 'parsleyField':
|
| 20063 |
-
parsleyInstance = $.extend(new parsley_field(this.$element, this.domOptions, this.options, this.parent), new
|
| 20064 |
break;
|
| 20065 |
case 'parsleyFieldMultiple':
|
| 20066 |
-
parsleyInstance = $.extend(new parsley_field(this.$element, this.domOptions, this.options, this.parent), new
|
| 20067 |
break;
|
| 20068 |
default:
|
| 20069 |
throw new Error(type + 'is not a supported Parsley type');
|
| 20070 |
}
|
| 20071 |
|
| 20072 |
-
if (this.options.multiple)
|
| 20073 |
|
| 20074 |
if ('undefined' !== typeof doNotStore) {
|
| 20075 |
-
this.$element.data('
|
| 20076 |
|
| 20077 |
return parsleyInstance;
|
| 20078 |
}
|
|
@@ -20080,7 +20127,7 @@ webpackJsonp([2],[
|
|
| 20080 |
// Store the freshly bound instance in a DOM element for later access using jQuery `data()`
|
| 20081 |
this.$element.data('Parsley', parsleyInstance);
|
| 20082 |
|
| 20083 |
-
// Tell the world we have a new
|
| 20084 |
parsleyInstance._actualizeTriggers();
|
| 20085 |
parsleyInstance._trigger('init');
|
| 20086 |
|
|
@@ -20093,23 +20140,23 @@ webpackJsonp([2],[
|
|
| 20093 |
throw "The loaded version of jQuery is too old. Please upgrade to 1.8.x or better.";
|
| 20094 |
}
|
| 20095 |
if (!vernums.forEach) {
|
| 20096 |
-
|
| 20097 |
}
|
| 20098 |
// Inherit `on`, `off` & `trigger` to Parsley:
|
| 20099 |
-
var Parsley = $.extend(new
|
| 20100 |
$element: $(document),
|
| 20101 |
actualizeOptions: null,
|
| 20102 |
_resetOptions: null,
|
| 20103 |
-
Factory:
|
| 20104 |
-
version: '2.
|
| 20105 |
});
|
| 20106 |
|
| 20107 |
-
// Supplement
|
| 20108 |
// This way, the constructors will have access to those methods
|
| 20109 |
-
$.extend(parsley_field.prototype,
|
| 20110 |
-
$.extend(
|
| 20111 |
// Inherit actualizeOptions and _resetOptions:
|
| 20112 |
-
$.extend(
|
| 20113 |
|
| 20114 |
// ### jQuery API
|
| 20115 |
// `$('.elem').parsley(options)` or `$('.elem').psly(options)`
|
|
@@ -20126,58 +20173,67 @@ webpackJsonp([2],[
|
|
| 20126 |
|
| 20127 |
// Return undefined if applied to non existing DOM element
|
| 20128 |
if (!$(this).length) {
|
| 20129 |
-
|
| 20130 |
|
| 20131 |
return;
|
| 20132 |
}
|
| 20133 |
|
| 20134 |
-
return new
|
| 20135 |
};
|
| 20136 |
|
| 20137 |
-
// ###
|
| 20138 |
// Ensure the extension is now defined if it wasn't previously
|
| 20139 |
if ('undefined' === typeof window.ParsleyExtend) window.ParsleyExtend = {};
|
| 20140 |
|
| 20141 |
// ### Parsley config
|
| 20142 |
// Inherit from ParsleyDefault, and copy over any existing values
|
| 20143 |
-
Parsley.options = $.extend(
|
| 20144 |
window.ParsleyConfig = Parsley.options; // Old way of accessing global options
|
| 20145 |
|
| 20146 |
// ### Globals
|
| 20147 |
window.Parsley = window.psly = Parsley;
|
| 20148 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20149 |
|
| 20150 |
// ### Define methods that forward to the registry, and deprecate all access except through window.Parsley
|
| 20151 |
-
var registry = window.Parsley._validatorRegistry = new
|
| 20152 |
window.ParsleyValidator = {};
|
| 20153 |
$.each('setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator'.split(' '), function (i, method) {
|
| 20154 |
window.Parsley[method] = $.proxy(registry, method);
|
| 20155 |
window.ParsleyValidator[method] = function () {
|
| 20156 |
var _window$Parsley;
|
| 20157 |
|
| 20158 |
-
|
| 20159 |
return (_window$Parsley = window.Parsley)[method].apply(_window$Parsley, arguments);
|
| 20160 |
};
|
| 20161 |
});
|
| 20162 |
|
| 20163 |
-
// ###
|
| 20164 |
// Deprecated global object
|
| 20165 |
-
window.Parsley.UI =
|
| 20166 |
window.ParsleyUI = {
|
| 20167 |
removeError: function removeError(instance, name, doNotUpdateClass) {
|
| 20168 |
var updateClass = true !== doNotUpdateClass;
|
| 20169 |
-
|
| 20170 |
return instance.removeError(name, { updateClass: updateClass });
|
| 20171 |
},
|
| 20172 |
getErrorsMessages: function getErrorsMessages(instance) {
|
| 20173 |
-
|
| 20174 |
return instance.getErrorsMessages();
|
| 20175 |
}
|
| 20176 |
};
|
| 20177 |
$.each('addError updateError'.split(' '), function (i, method) {
|
| 20178 |
window.ParsleyUI[method] = function (instance, name, message, assert, doNotUpdateClass) {
|
| 20179 |
var updateClass = true !== doNotUpdateClass;
|
| 20180 |
-
|
| 20181 |
return instance[method](name, { message: message, assert: assert, updateClass: updateClass });
|
| 20182 |
};
|
| 20183 |
});
|
|
@@ -20193,7 +20249,7 @@ webpackJsonp([2],[
|
|
| 20193 |
|
| 20194 |
var o = $({});
|
| 20195 |
var deprecated = function deprecated() {
|
| 20196 |
-
|
| 20197 |
};
|
| 20198 |
|
| 20199 |
// Returns an event handler that calls `fn` with the arguments it expects
|
|
@@ -20232,7 +20288,7 @@ webpackJsonp([2],[
|
|
| 20232 |
|
| 20233 |
$.listenTo = function (instance, name, fn) {
|
| 20234 |
deprecated();
|
| 20235 |
-
if (!(instance instanceof parsley_field) && !(instance instanceof
|
| 20236 |
|
| 20237 |
if ('string' !== typeof name || 'function' !== typeof fn) throw new Error('Wrong parameters');
|
| 20238 |
|
|
@@ -20247,7 +20303,7 @@ webpackJsonp([2],[
|
|
| 20247 |
|
| 20248 |
$.unsubscribeTo = function (instance, name) {
|
| 20249 |
deprecated();
|
| 20250 |
-
if (!(instance instanceof parsley_field) && !(instance instanceof
|
| 20251 |
instance.off(eventName(name));
|
| 20252 |
};
|
| 20253 |
|
|
@@ -20267,7 +20323,7 @@ webpackJsonp([2],[
|
|
| 20267 |
var _instance;
|
| 20268 |
|
| 20269 |
deprecated();
|
| 20270 |
-
var instanceGiven = instance instanceof parsley_field || instance instanceof
|
| 20271 |
var args = Array.prototype.slice.call(arguments, instanceGiven ? 2 : 1);
|
| 20272 |
args.unshift(eventName(name));
|
| 20273 |
if (!instanceGiven) {
|
|
@@ -20375,7 +20431,7 @@ webpackJsonp([2],[
|
|
| 20375 |
});
|
| 20376 |
|
| 20377 |
window.ParsleyExtend.addAsyncValidator = function () {
|
| 20378 |
-
|
| 20379 |
return Parsley.addAsyncValidator.apply(Parsley, arguments);
|
| 20380 |
};
|
| 20381 |
|
| 18093 |
|
| 18094 |
/* WEBPACK VAR INJECTION */(function(global) {/*!
|
| 18095 |
* Parsley.js
|
| 18096 |
+
* Version 2.7.0 - built Wed, Mar 1st 2017, 3:53 pm
|
| 18097 |
* http://parsleyjs.org
|
| 18098 |
* Guillaume Potier - <guillaume@wisembly.com>
|
| 18099 |
* Marc-Andre Lafortune - <petroselinum@marc-andre.ca>
|
| 18105 |
//
|
| 18106 |
var _slice = Array.prototype.slice;
|
| 18107 |
|
| 18108 |
+
var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();
|
| 18109 |
+
|
| 18110 |
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
|
| 18111 |
|
| 18112 |
(function (global, factory) {
|
| 18117 |
var globalID = 1;
|
| 18118 |
var pastWarnings = {};
|
| 18119 |
|
| 18120 |
+
var Utils__Utils = {
|
| 18121 |
// Parsley DOM-API
|
| 18122 |
// returns object from dom attributes and values
|
| 18123 |
attr: function attr($element, namespace, obj) {
|
| 18204 |
return string.replace(/^\s+|\s+$/g, '');
|
| 18205 |
},
|
| 18206 |
|
| 18207 |
+
parse: {
|
| 18208 |
+
date: function date(string) {
|
| 18209 |
+
var parsed = string.match(/^(\d{4,})-(\d\d)-(\d\d)$/);
|
| 18210 |
+
if (!parsed) return null;
|
| 18211 |
+
|
| 18212 |
+
var _parsed$map = parsed.map(function (x) {
|
| 18213 |
+
return parseInt(x, 10);
|
| 18214 |
+
});
|
| 18215 |
+
|
| 18216 |
+
var _parsed$map2 = _slicedToArray(_parsed$map, 4);
|
| 18217 |
+
|
| 18218 |
+
var _ = _parsed$map2[0];
|
| 18219 |
+
var year = _parsed$map2[1];
|
| 18220 |
+
var month = _parsed$map2[2];
|
| 18221 |
+
var day = _parsed$map2[3];
|
| 18222 |
+
|
| 18223 |
+
var date = new Date(year, month - 1, day);
|
| 18224 |
+
if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) return null;
|
| 18225 |
+
return date;
|
| 18226 |
+
},
|
| 18227 |
+
string: function string(_string) {
|
| 18228 |
+
return _string;
|
| 18229 |
+
},
|
| 18230 |
+
integer: function integer(string) {
|
| 18231 |
+
if (isNaN(string)) return null;
|
| 18232 |
+
return parseInt(string, 10);
|
| 18233 |
+
},
|
| 18234 |
+
number: function number(string) {
|
| 18235 |
+
if (isNaN(string)) throw null;
|
| 18236 |
+
return parseFloat(string);
|
| 18237 |
+
},
|
| 18238 |
+
'boolean': function _boolean(string) {
|
| 18239 |
+
return !/^\s*false\s*$/i.test(string);
|
| 18240 |
+
},
|
| 18241 |
+
object: function object(string) {
|
| 18242 |
+
return Utils__Utils.deserializeValue(string);
|
| 18243 |
+
},
|
| 18244 |
+
regexp: function regexp(_regexp) {
|
| 18245 |
+
var flags = '';
|
| 18246 |
+
|
| 18247 |
+
// Test if RegExp is literal, if not, nothing to be done, otherwise, we need to isolate flags and pattern
|
| 18248 |
+
if (/^\/.*\/(?:[gimy]*)$/.test(_regexp)) {
|
| 18249 |
+
// Replace the regexp literal string with the first match group: ([gimy]*)
|
| 18250 |
+
// If no flag is present, this will be a blank string
|
| 18251 |
+
flags = _regexp.replace(/.*\/([gimy]*)$/, '$1');
|
| 18252 |
+
// Again, replace the regexp literal string with the first match group:
|
| 18253 |
+
// everything excluding the opening and closing slashes and the flags
|
| 18254 |
+
_regexp = _regexp.replace(new RegExp('^/(.*?)/' + flags + '$'), '$1');
|
| 18255 |
+
} else {
|
| 18256 |
+
// Anchor regexp:
|
| 18257 |
+
_regexp = '^' + _regexp + '$';
|
| 18258 |
+
}
|
| 18259 |
+
return new RegExp(_regexp, flags);
|
| 18260 |
+
}
|
| 18261 |
+
},
|
| 18262 |
+
|
| 18263 |
+
parseRequirement: function parseRequirement(requirementType, string) {
|
| 18264 |
+
var converter = this.parse[requirementType || 'string'];
|
| 18265 |
+
if (!converter) throw 'Unknown requirement specification: "' + requirementType + '"';
|
| 18266 |
+
var converted = converter(string);
|
| 18267 |
+
if (converted === null) throw 'Requirement is not a ' + requirementType + ': "' + string + '"';
|
| 18268 |
+
return converted;
|
| 18269 |
+
},
|
| 18270 |
+
|
| 18271 |
namespaceEvents: function namespaceEvents(events, namespace) {
|
| 18272 |
events = this.trimString(events || '').split(/\s+/);
|
| 18273 |
if (!events[0]) return '';
|
| 18311 |
_SubmitSelector: 'input[type="submit"], button:submit'
|
| 18312 |
};
|
| 18313 |
|
| 18314 |
+
var Utils__default = Utils__Utils;
|
| 18315 |
|
| 18316 |
// All these options could be overriden and specified directly in DOM using
|
| 18317 |
// `data-parsley-` default DOM-API
|
| 18318 |
// eg: `inputs` can be set in DOM using `data-parsley-inputs="input, textarea"`
|
| 18319 |
// eg: `data-parsley-stop-on-first-failing-constraint="false"`
|
| 18320 |
|
| 18321 |
+
var Defaults = {
|
| 18322 |
// ### General
|
| 18323 |
|
| 18324 |
// Default data-namespace for DOM API
|
| 18365 |
|
| 18366 |
// Return the `$element` that will receive these above success or error classes
|
| 18367 |
// Could also be (and given directly from DOM) a valid selector like `'#div'`
|
| 18368 |
+
classHandler: function classHandler(Field) {},
|
| 18369 |
|
| 18370 |
// Return the `$element` where errors will be appended
|
| 18371 |
// Could also be (and given directly from DOM) a valid selector like `'#div'`
|
| 18372 |
+
errorsContainer: function errorsContainer(Field) {},
|
| 18373 |
|
| 18374 |
// ul elem that would receive errors' list
|
| 18375 |
errorsWrapper: '<ul class="parsley-errors-list"></ul>',
|
| 18378 |
errorTemplate: '<li></li>'
|
| 18379 |
};
|
| 18380 |
|
| 18381 |
+
var Base = function Base() {
|
| 18382 |
+
this.__id__ = Utils__default.generateID();
|
| 18383 |
};
|
| 18384 |
|
| 18385 |
+
Base.prototype = {
|
| 18386 |
asyncSupport: true, // Deprecated
|
| 18387 |
|
| 18388 |
_pipeAccordingToValidationResult: function _pipeAccordingToValidationResult() {
|
| 18397 |
},
|
| 18398 |
|
| 18399 |
actualizeOptions: function actualizeOptions() {
|
| 18400 |
+
Utils__default.attr(this.$element, this.options.namespace, this.domOptions);
|
| 18401 |
if (this.parent && this.parent.actualizeOptions) this.parent.actualizeOptions();
|
| 18402 |
return this;
|
| 18403 |
},
|
| 18404 |
|
| 18405 |
_resetOptions: function _resetOptions(initOptions) {
|
| 18406 |
+
this.domOptions = Utils__default.objectCreate(this.parent.options);
|
| 18407 |
+
this.options = Utils__default.objectCreate(this.domOptions);
|
| 18408 |
// Shallow copy of ownProperties of initOptions:
|
| 18409 |
for (var i in initOptions) {
|
| 18410 |
if (initOptions.hasOwnProperty(i)) this.options[i] = initOptions[i];
|
| 18470 |
},
|
| 18471 |
|
| 18472 |
asyncIsValid: function asyncIsValid(group, force) {
|
| 18473 |
+
Utils__default.warnOnce("asyncIsValid is deprecated; please use whenValid instead");
|
| 18474 |
return this.whenValid({ group: group, force: force });
|
| 18475 |
},
|
| 18476 |
|
| 18479 |
}
|
| 18480 |
};
|
| 18481 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18482 |
var convertArrayRequirement = function convertArrayRequirement(string, length) {
|
| 18483 |
var m = string.match(/^\s*\[(.*)\]\s*$/);
|
| 18484 |
if (!m) throw 'Requirement is not an array: "' + string + '"';
|
| 18485 |
+
var values = m[1].split(',').map(Utils__default.trimString);
|
| 18486 |
if (values.length !== length) throw 'Requirement has ' + values.length + ' values when ' + length + ' are needed';
|
| 18487 |
return values;
|
| 18488 |
};
|
| 18489 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18490 |
var convertExtraOptionRequirement = function convertExtraOptionRequirement(requirementSpec, string, extraOptionReader) {
|
| 18491 |
var main = null;
|
| 18492 |
var extra = {};
|
| 18493 |
for (var key in requirementSpec) {
|
| 18494 |
if (key) {
|
| 18495 |
var value = extraOptionReader(key);
|
| 18496 |
+
if ('string' === typeof value) value = Utils__default.parseRequirement(requirementSpec[key], value);
|
| 18497 |
extra[key] = value;
|
| 18498 |
} else {
|
| 18499 |
+
main = Utils__default.parseRequirement(requirementSpec[key], string);
|
| 18500 |
}
|
| 18501 |
}
|
| 18502 |
return [main, extra];
|
| 18504 |
|
| 18505 |
// A Validator needs to implement the methods `validate` and `parseRequirements`
|
| 18506 |
|
| 18507 |
+
var Validator = function Validator(spec) {
|
| 18508 |
$.extend(true, this, spec);
|
| 18509 |
};
|
| 18510 |
|
| 18511 |
+
Validator.prototype = {
|
| 18512 |
// Returns `true` iff the given `value` is valid according the given requirements.
|
| 18513 |
validate: function validate(value, requirementFirstArg) {
|
| 18514 |
if (this.fn) {
|
| 18523 |
if (!this.validateMultiple) throw 'Validator `' + this.name + '` does not handle multiple values';
|
| 18524 |
return this.validateMultiple.apply(this, arguments);
|
| 18525 |
} else {
|
| 18526 |
+
var instance = arguments[arguments.length - 1];
|
| 18527 |
+
if (this.validateDate && instance._isDateInput()) {
|
| 18528 |
+
arguments[0] = Utils__default.parse.date(arguments[0]);
|
| 18529 |
+
if (arguments[0] === null) return false;
|
| 18530 |
+
return this.validateDate.apply(this, arguments);
|
| 18531 |
+
}
|
| 18532 |
if (this.validateNumber) {
|
| 18533 |
if (isNaN(value)) return false;
|
| 18534 |
arguments[0] = parseFloat(arguments[0]);
|
| 18552 |
var type = this.requirementType;
|
| 18553 |
if ($.isArray(type)) {
|
| 18554 |
var values = convertArrayRequirement(requirements, type.length);
|
| 18555 |
+
for (var i = 0; i < values.length; i++) values[i] = Utils__default.parseRequirement(type[i], values[i]);
|
| 18556 |
return values;
|
| 18557 |
} else if ($.isPlainObject(type)) {
|
| 18558 |
return convertExtraOptionRequirement(type, requirements, extraOptionReader);
|
| 18559 |
} else {
|
| 18560 |
+
return [Utils__default.parseRequirement(type, requirements)];
|
| 18561 |
}
|
| 18562 |
},
|
| 18563 |
// Defaults:
|
| 18567 |
|
| 18568 |
};
|
| 18569 |
|
| 18570 |
+
var ValidatorRegistry = function ValidatorRegistry(validators, catalog) {
|
| 18571 |
+
this.__class__ = 'ValidatorRegistry';
|
| 18572 |
|
| 18573 |
// Default Parsley locale is en
|
| 18574 |
this.locale = 'en';
|
| 18576 |
this.init(validators || {}, catalog || {});
|
| 18577 |
};
|
| 18578 |
|
| 18579 |
+
var typeTesters = {
|
| 18580 |
email: /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,
|
| 18581 |
|
| 18582 |
// Follow https://www.w3.org/TR/html5/infrastructure.html#floating-point-numbers
|
| 18588 |
|
| 18589 |
alphanum: /^\w+$/i,
|
| 18590 |
|
| 18591 |
+
date: {
|
| 18592 |
+
test: function test(value) {
|
| 18593 |
+
return Utils__default.parse.date(value) !== null;
|
| 18594 |
+
}
|
| 18595 |
+
},
|
| 18596 |
+
|
| 18597 |
url: new RegExp("^" +
|
| 18598 |
// protocol identifier
|
| 18599 |
"(?:(?:https?|ftp)://)?" + // ** mod: make scheme optional
|
| 18621 |
// resource path
|
| 18622 |
"(?:/\\S*)?" + "$", 'i')
|
| 18623 |
};
|
| 18624 |
+
typeTesters.range = typeTesters.number;
|
| 18625 |
|
| 18626 |
// See http://stackoverflow.com/a/10454560/8279
|
| 18627 |
var decimalPlaces = function decimalPlaces(num) {
|
| 18636 |
match[2] ? +match[2] : 0));
|
| 18637 |
};
|
| 18638 |
|
| 18639 |
+
// parseArguments('number', ['1', '2']) => [1, 2]
|
| 18640 |
+
var ValidatorRegistry__parseArguments = function ValidatorRegistry__parseArguments(type, args) {
|
| 18641 |
+
return args.map(Utils__default.parse[type]);
|
| 18642 |
+
};
|
| 18643 |
+
// operatorToValidator returns a validating function for an operator function, applied to the given type
|
| 18644 |
+
var ValidatorRegistry__operatorToValidator = function ValidatorRegistry__operatorToValidator(type, operator) {
|
| 18645 |
+
return function (value) {
|
| 18646 |
+
for (var _len = arguments.length, requirementsAndInput = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
| 18647 |
+
requirementsAndInput[_key - 1] = arguments[_key];
|
| 18648 |
+
}
|
| 18649 |
+
|
| 18650 |
+
requirementsAndInput.pop(); // Get rid of `input` argument
|
| 18651 |
+
return operator.apply(undefined, [value].concat(_toConsumableArray(ValidatorRegistry__parseArguments(type, requirementsAndInput))));
|
| 18652 |
+
};
|
| 18653 |
+
};
|
| 18654 |
+
|
| 18655 |
+
var ValidatorRegistry__comparisonOperator = function ValidatorRegistry__comparisonOperator(operator) {
|
| 18656 |
+
return {
|
| 18657 |
+
validateDate: ValidatorRegistry__operatorToValidator('date', operator),
|
| 18658 |
+
validateNumber: ValidatorRegistry__operatorToValidator('number', operator),
|
| 18659 |
+
requirementType: operator.length <= 2 ? 'string' : ['string', 'string'], // Support operators with a 1 or 2 requirement(s)
|
| 18660 |
+
priority: 30
|
| 18661 |
+
};
|
| 18662 |
+
};
|
| 18663 |
+
|
| 18664 |
+
ValidatorRegistry.prototype = {
|
| 18665 |
init: function init(validators, catalog) {
|
| 18666 |
this.catalog = catalog;
|
| 18667 |
// Copy prototype's validators:
|
| 18721 |
// Old API was addValidator(name, function, priority)
|
| 18722 |
//
|
| 18723 |
addValidator: function addValidator(name, arg1, arg2) {
|
| 18724 |
+
if (this.validators[name]) Utils__default.warn('Validator "' + name + '" is already defined.');else if (Defaults.hasOwnProperty(name)) {
|
| 18725 |
+
Utils__default.warn('"' + name + '" is a restricted keyword and is not a valid validator name.');
|
| 18726 |
return;
|
| 18727 |
}
|
| 18728 |
return this._setValidator.apply(this, arguments);
|
| 18730 |
|
| 18731 |
updateValidator: function updateValidator(name, arg1, arg2) {
|
| 18732 |
if (!this.validators[name]) {
|
| 18733 |
+
Utils__default.warn('Validator "' + name + '" is not already defined.');
|
| 18734 |
return this.addValidator.apply(this, arguments);
|
| 18735 |
}
|
| 18736 |
return this._setValidator.apply(this, arguments);
|
| 18737 |
},
|
| 18738 |
|
| 18739 |
removeValidator: function removeValidator(name) {
|
| 18740 |
+
if (!this.validators[name]) Utils__default.warn('Validator "' + name + '" is not defined.');
|
| 18741 |
|
| 18742 |
delete this.validators[name];
|
| 18743 |
|
| 18753 |
};
|
| 18754 |
}
|
| 18755 |
if (!validator.validate) {
|
| 18756 |
+
validator = new Validator(validator);
|
| 18757 |
}
|
| 18758 |
this.validators[name] = validator;
|
| 18759 |
|
| 18819 |
var _ref$base = _ref.base;
|
| 18820 |
var base = _ref$base === undefined ? 0 : _ref$base;
|
| 18821 |
|
| 18822 |
+
var tester = typeTesters[type];
|
| 18823 |
+
if (!tester) {
|
| 18824 |
throw new Error('validator type `' + type + '` is not supported');
|
| 18825 |
}
|
| 18826 |
+
if (!tester.test(value)) return false;
|
| 18827 |
if ('number' === type) {
|
| 18828 |
if (!/^any$/i.test(step || '')) {
|
| 18829 |
var nb = Number(value);
|
| 18895 |
requirementType: ['integer', 'integer'],
|
| 18896 |
priority: 30
|
| 18897 |
},
|
| 18898 |
+
min: ValidatorRegistry__comparisonOperator(function (value, requirement) {
|
| 18899 |
+
return value >= requirement;
|
| 18900 |
+
}),
|
| 18901 |
+
max: ValidatorRegistry__comparisonOperator(function (value, requirement) {
|
| 18902 |
+
return value <= requirement;
|
| 18903 |
+
}),
|
| 18904 |
+
range: ValidatorRegistry__comparisonOperator(function (value, min, max) {
|
| 18905 |
+
return value >= min && value <= max;
|
| 18906 |
+
}),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18907 |
equalto: {
|
| 18908 |
validateString: function validateString(value, refOrValue) {
|
| 18909 |
var $reference = $(refOrValue);
|
| 18914 |
}
|
| 18915 |
};
|
| 18916 |
|
| 18917 |
+
var UI = {};
|
| 18918 |
|
| 18919 |
var diffResults = function diffResults(newResult, oldResult, deep) {
|
| 18920 |
var added = [];
|
| 18938 |
};
|
| 18939 |
};
|
| 18940 |
|
| 18941 |
+
UI.Form = {
|
| 18942 |
|
| 18943 |
_actualizeTriggers: function _actualizeTriggers() {
|
| 18944 |
var _this2 = this;
|
| 18946 |
this.$element.on('submit.Parsley', function (evt) {
|
| 18947 |
_this2.onSubmitValidate(evt);
|
| 18948 |
});
|
| 18949 |
+
this.$element.on('click.Parsley', Utils__default._SubmitSelector, function (evt) {
|
| 18950 |
_this2.onSubmitButton(evt);
|
| 18951 |
});
|
| 18952 |
|
| 18981 |
|
| 18982 |
};
|
| 18983 |
|
| 18984 |
+
UI.Field = {
|
| 18985 |
|
| 18986 |
_reflowUI: function _reflowUI() {
|
| 18987 |
this._buildUI();
|
| 19177 |
if (0 !== this._ui.$errorsWrapper.parent().length) return this._ui.$errorsWrapper.parent();
|
| 19178 |
|
| 19179 |
if ('string' === typeof this.options.errorsContainer) {
|
| 19180 |
+
if ($(this.options.errorsContainer).length) return $(this.options.errorsContainer).append(this._ui.$errorsWrapper);else Utils__default.warn('The errors container `' + this.options.errorsContainer + '` does not exist in DOM');
|
| 19181 |
} else if ('function' === typeof this.options.errorsContainer) $errorsContainer = this.options.errorsContainer.call(this, this);
|
| 19182 |
|
| 19183 |
if ('undefined' !== typeof $errorsContainer && $errorsContainer.length) return $errorsContainer.append(this._ui.$errorsWrapper);
|
| 19193 |
|
| 19194 |
// Remove Parsley events already bound on this field
|
| 19195 |
$toBind.off('.Parsley');
|
| 19196 |
+
if (this._failedOnce) $toBind.on(Utils__default.namespaceEvents(this.options.triggerAfterFailure, 'Parsley'), function () {
|
| 19197 |
_this3._validateIfNeeded();
|
| 19198 |
+
});else if (trigger = Utils__default.namespaceEvents(this.options.trigger, 'Parsley')) {
|
| 19199 |
$toBind.on(trigger, function (event) {
|
| 19200 |
_this3._validateIfNeeded(event);
|
| 19201 |
});
|
| 19258 |
}
|
| 19259 |
};
|
| 19260 |
|
| 19261 |
+
var Form = function Form(element, domOptions, options) {
|
| 19262 |
+
this.__class__ = 'Form';
|
| 19263 |
|
| 19264 |
this.$element = $(element);
|
| 19265 |
this.domOptions = domOptions;
|
| 19270 |
this.validationResult = null;
|
| 19271 |
};
|
| 19272 |
|
| 19273 |
+
var Form__statusMapping = { pending: null, resolved: true, rejected: false };
|
| 19274 |
|
| 19275 |
+
Form.prototype = {
|
| 19276 |
onSubmitValidate: function onSubmitValidate(event) {
|
| 19277 |
var _this5 = this;
|
| 19278 |
|
| 19280 |
if (true === event.parsley) return;
|
| 19281 |
|
| 19282 |
// If we didn't come here through a submit button, use the first one in the form
|
| 19283 |
+
var $submitSource = this._$submitSource || this.$element.find(Utils__default._SubmitSelector).first();
|
| 19284 |
this._$submitSource = null;
|
| 19285 |
this.$element.find('.parsley-synthetic-submit-button').prop('disabled', true);
|
| 19286 |
if ($submitSource.is('[formnovalidate]')) return;
|
| 19328 |
// Consider using `whenValidate` instead.
|
| 19329 |
validate: function validate(options) {
|
| 19330 |
if (arguments.length >= 1 && !$.isPlainObject(options)) {
|
| 19331 |
+
Utils__default.warnOnce('Calling validate on a parsley form without passing arguments as an object is deprecated.');
|
| 19332 |
|
| 19333 |
var _arguments = _slice.call(arguments);
|
| 19334 |
|
| 19338 |
|
| 19339 |
options = { group: group, force: force, event: event };
|
| 19340 |
}
|
| 19341 |
+
return Form__statusMapping[this.whenValidate(options).state()];
|
| 19342 |
},
|
| 19343 |
|
| 19344 |
whenValidate: function whenValidate() {
|
| 19345 |
+
var _Utils__default$all$done$fail$always,
|
| 19346 |
_this6 = this;
|
| 19347 |
|
| 19348 |
var _ref7 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
|
| 19354 |
this.submitEvent = event;
|
| 19355 |
if (event) {
|
| 19356 |
this.submitEvent = $.extend({}, event, { preventDefault: function preventDefault() {
|
| 19357 |
+
Utils__default.warnOnce("Using `this.submitEvent.preventDefault()` is deprecated; instead, call `this.validationResult = false`");
|
| 19358 |
_this6.validationResult = false;
|
| 19359 |
} });
|
| 19360 |
}
|
| 19372 |
});
|
| 19373 |
});
|
| 19374 |
|
| 19375 |
+
return (_Utils__default$all$done$fail$always = Utils__default.all(promises).done(function () {
|
| 19376 |
_this6._trigger('success');
|
| 19377 |
}).fail(function () {
|
| 19378 |
_this6.validationResult = false;
|
| 19380 |
_this6._trigger('error');
|
| 19381 |
}).always(function () {
|
| 19382 |
_this6._trigger('validated');
|
| 19383 |
+
})).pipe.apply(_Utils__default$all$done$fail$always, _toConsumableArray(this._pipeAccordingToValidationResult()));
|
| 19384 |
},
|
| 19385 |
|
| 19386 |
// Iterate over refreshed fields, and stop on first failure.
|
| 19389 |
// Prefer using `whenValid` instead.
|
| 19390 |
isValid: function isValid(options) {
|
| 19391 |
if (arguments.length >= 1 && !$.isPlainObject(options)) {
|
| 19392 |
+
Utils__default.warnOnce('Calling isValid on a parsley form without passing arguments as an object is deprecated.');
|
| 19393 |
|
| 19394 |
var _arguments2 = _slice.call(arguments);
|
| 19395 |
|
| 19398 |
|
| 19399 |
options = { group: group, force: force };
|
| 19400 |
}
|
| 19401 |
+
return Form__statusMapping[this.whenValid(options).state()];
|
| 19402 |
},
|
| 19403 |
|
| 19404 |
// Iterate over refreshed fields and validate them.
|
| 19419 |
return field.whenValid({ group: group, force: force });
|
| 19420 |
});
|
| 19421 |
});
|
| 19422 |
+
return Utils__default.all(promises);
|
| 19423 |
},
|
| 19424 |
|
| 19425 |
// Reset UI
|
| 19458 |
_this8.$element.find(_this8.options.inputs).not(_this8.options.excluded).each(function (_, element) {
|
| 19459 |
var fieldInstance = new window.Parsley.Factory(element, {}, _this8);
|
| 19460 |
|
| 19461 |
+
// Only add valid and not excluded `Field` and `FieldMultiple` children
|
| 19462 |
+
if (('Field' === fieldInstance.__class__ || 'FieldMultiple' === fieldInstance.__class__) && true !== fieldInstance.options.excluded) {
|
| 19463 |
var uniqueId = fieldInstance.__class__ + '-' + fieldInstance.__id__;
|
| 19464 |
if ('undefined' === typeof _this8.fieldsMappedById[uniqueId]) {
|
| 19465 |
_this8.fieldsMappedById[uniqueId] = fieldInstance;
|
| 19468 |
}
|
| 19469 |
});
|
| 19470 |
|
| 19471 |
+
$.each(Utils__default.difference(oldFields, _this8.fields), function (_, field) {
|
| 19472 |
field.reset();
|
| 19473 |
});
|
| 19474 |
});
|
| 19503 |
|
| 19504 |
var Constraint = function Constraint(parsleyField, name, requirements, priority, isDomConstraint) {
|
| 19505 |
var validatorSpec = window.Parsley._validatorRegistry.validators[name];
|
| 19506 |
+
var validator = new Validator(validatorSpec);
|
| 19507 |
|
| 19508 |
$.extend(this, {
|
| 19509 |
validator: validator,
|
| 19536 |
}
|
| 19537 |
};
|
| 19538 |
|
| 19539 |
+
var Field = function Field(field, domOptions, options, parsleyFormInstance) {
|
| 19540 |
+
this.__class__ = 'Field';
|
| 19541 |
|
| 19542 |
this.$element = $(field);
|
| 19543 |
|
| 19560 |
|
| 19561 |
var parsley_field__statusMapping = { pending: null, resolved: true, rejected: false };
|
| 19562 |
|
| 19563 |
+
Field.prototype = {
|
| 19564 |
// # Public API
|
| 19565 |
+
// Validate field and trigger some events for mainly `UI`
|
| 19566 |
// @returns `true`, an array of the validators that failed, or
|
| 19567 |
// `null` if validation is not finished. Prefer using whenValidate
|
| 19568 |
validate: function validate(options) {
|
| 19569 |
if (arguments.length >= 1 && !$.isPlainObject(options)) {
|
| 19570 |
+
Utils__default.warnOnce('Calling validate on a parsley field without passing arguments as an object is deprecated.');
|
| 19571 |
options = { options: options };
|
| 19572 |
}
|
| 19573 |
var promise = this.whenValidate(options);
|
| 19583 |
}
|
| 19584 |
},
|
| 19585 |
|
| 19586 |
+
// Validate field and trigger some events for mainly `UI`
|
| 19587 |
// @returns a promise that succeeds only when all validations do
|
| 19588 |
// or `undefined` if field is not in the given `group`.
|
| 19589 |
whenValidate: function whenValidate() {
|
| 19641 |
// See also `whenValid`.
|
| 19642 |
isValid: function isValid(options) {
|
| 19643 |
if (arguments.length >= 1 && !$.isPlainObject(options)) {
|
| 19644 |
+
Utils__default.warnOnce('Calling isValid on a parsley field without passing arguments as an object is deprecated.');
|
| 19645 |
|
| 19646 |
var _arguments3 = _slice.call(arguments);
|
| 19647 |
|
| 19692 |
$.each(groupedConstraints, function (_, constraints) {
|
| 19693 |
// Process one group of constraints at a time, we validate the constraints
|
| 19694 |
// and combine the promises together.
|
| 19695 |
+
var promise = Utils__default.all($.map(constraints, function (constraint) {
|
| 19696 |
return _this11._validateConstraint(value, constraint);
|
| 19697 |
}));
|
| 19698 |
promises.push(promise);
|
| 19699 |
if (promise.state() === 'rejected') return false; // Interrupt processing if a group has already failed
|
| 19700 |
});
|
| 19701 |
+
return Utils__default.all(promises);
|
| 19702 |
},
|
| 19703 |
|
| 19704 |
// @returns a promise
|
| 19709 |
// Map false to a failed promise
|
| 19710 |
if (false === result) result = $.Deferred().reject();
|
| 19711 |
// Make sure we return a promise and that we record failures
|
| 19712 |
+
return Utils__default.all([result]).fail(function (errorMessage) {
|
| 19713 |
if (!(_this12.validationResult instanceof Array)) _this12.validationResult = [];
|
| 19714 |
_this12.validationResult.push({
|
| 19715 |
assert: constraint,
|
| 19742 |
// Field case: emit destroy event to clean UI and then destroy stored instance
|
| 19743 |
this._destroyUI();
|
| 19744 |
this.$element.removeData('Parsley');
|
| 19745 |
+
this.$element.removeData('FieldMultiple');
|
| 19746 |
this._trigger('destroy');
|
| 19747 |
},
|
| 19748 |
|
| 19824 |
if ('string' === typeof this.$element.attr('pattern')) this.addConstraint('pattern', this.$element.attr('pattern'), undefined, true);
|
| 19825 |
|
| 19826 |
// range
|
| 19827 |
+
if ('undefined' !== typeof this.$element.attr('min') && 'undefined' !== typeof this.$element.attr('max')) this.addConstraint('range', [this.$element.attr('min'), this.$element.attr('max')], undefined, true);
|
| 19828 |
|
| 19829 |
// HTML5 min
|
| 19830 |
+
else if ('undefined' !== typeof this.$element.attr('min')) this.addConstraint('min', this.$element.attr('min'), undefined, true);
|
| 19831 |
|
| 19832 |
// HTML5 max
|
| 19833 |
+
else if ('undefined' !== typeof this.$element.attr('max')) this.addConstraint('max', this.$element.attr('max'), undefined, true);
|
| 19834 |
|
| 19835 |
// length
|
| 19836 |
if ('undefined' !== typeof this.$element.attr('minlength') && 'undefined' !== typeof this.$element.attr('maxlength')) this.addConstraint('length', [this.$element.attr('minlength'), this.$element.attr('maxlength')], undefined, true);
|
| 19853 |
base: this.$element.attr('min') || this.$element.attr('value')
|
| 19854 |
}], undefined, true);
|
| 19855 |
// Regular other HTML5 supported types
|
| 19856 |
+
} else if (/^(email|url|range|date)$/i.test(type)) {
|
| 19857 |
return this.addConstraint('type', type, undefined, true);
|
| 19858 |
}
|
| 19859 |
return this;
|
| 19878 |
// Use `data-parsley-whitespace="squish"` to auto squish input value
|
| 19879 |
// Use `data-parsley-whitespace="trim"` to auto trim input value
|
| 19880 |
_handleWhitespace: function _handleWhitespace(value) {
|
| 19881 |
+
if (true === this.options.trimValue) Utils__default.warnOnce('data-parsley-trim-value="true" is deprecated, please use data-parsley-whitespace="trim"');
|
| 19882 |
|
| 19883 |
if ('squish' === this.options.whitespace) value = value.replace(/\s{2,}/g, ' ');
|
| 19884 |
|
| 19885 |
+
if ('trim' === this.options.whitespace || 'squish' === this.options.whitespace || true === this.options.trimValue) value = Utils__default.trimString(value);
|
| 19886 |
|
| 19887 |
return value;
|
| 19888 |
},
|
| 19889 |
|
| 19890 |
+
_isDateInput: function _isDateInput() {
|
| 19891 |
+
var c = this.constraintsByName.type;
|
| 19892 |
+
return c && c.requirements === 'date';
|
| 19893 |
+
},
|
| 19894 |
+
|
| 19895 |
// Internal only.
|
| 19896 |
// Returns the constraints, grouped by descending priority.
|
| 19897 |
// The result is thus an array of arrays of constraints.
|
| 19917 |
|
| 19918 |
};
|
| 19919 |
|
| 19920 |
+
var parsley_field = Field;
|
| 19921 |
|
| 19922 |
+
var Multiple = function Multiple() {
|
| 19923 |
+
this.__class__ = 'FieldMultiple';
|
| 19924 |
};
|
| 19925 |
|
| 19926 |
+
Multiple.prototype = {
|
| 19927 |
// Add new `$element` sibling for multiple field
|
| 19928 |
addElement: function addElement($element) {
|
| 19929 |
this.$elements.push($element);
|
| 19931 |
return this;
|
| 19932 |
},
|
| 19933 |
|
| 19934 |
+
// See `Field.refreshConstraints()`
|
| 19935 |
refreshConstraints: function refreshConstraints() {
|
| 19936 |
var fieldConstraints;
|
| 19937 |
|
| 19953 |
continue;
|
| 19954 |
}
|
| 19955 |
|
| 19956 |
+
fieldConstraints = this.$elements[i].data('FieldMultiple').refreshConstraints().constraints;
|
| 19957 |
|
| 19958 |
for (var j = 0; j < fieldConstraints.length; j++) this.addConstraint(fieldConstraints[j].name, fieldConstraints[j].requirements, fieldConstraints[j].priority, fieldConstraints[j].isDomConstraint);
|
| 19959 |
}
|
| 19961 |
return this;
|
| 19962 |
},
|
| 19963 |
|
| 19964 |
+
// See `Field.getValue()`
|
| 19965 |
getValue: function getValue() {
|
| 19966 |
// Value could be overriden in DOM
|
| 19967 |
if ('function' === typeof this.options.value) return this.options.value(this);else if ('undefined' !== typeof this.options.value) return this.options.value;
|
| 19994 |
}
|
| 19995 |
};
|
| 19996 |
|
| 19997 |
+
var Factory = function Factory(element, options, parsleyFormInstance) {
|
| 19998 |
this.$element = $(element);
|
| 19999 |
|
| 20000 |
// If the element has already been bound, returns its saved Parsley instance
|
| 20001 |
var savedparsleyFormInstance = this.$element.data('Parsley');
|
| 20002 |
if (savedparsleyFormInstance) {
|
| 20003 |
|
| 20004 |
+
// If the saved instance has been bound without a Form parent and there is one given in this call, add it
|
| 20005 |
if ('undefined' !== typeof parsleyFormInstance && savedparsleyFormInstance.parent === window.Parsley) {
|
| 20006 |
savedparsleyFormInstance.parent = parsleyFormInstance;
|
| 20007 |
savedparsleyFormInstance._resetOptions(savedparsleyFormInstance.options);
|
| 20017 |
// Parsley must be instantiated with a DOM element or jQuery $element
|
| 20018 |
if (!this.$element.length) throw new Error('You must bind Parsley on an existing element.');
|
| 20019 |
|
| 20020 |
+
if ('undefined' !== typeof parsleyFormInstance && 'Form' !== parsleyFormInstance.__class__) throw new Error('Parent instance must be a Form instance');
|
| 20021 |
|
| 20022 |
this.parent = parsleyFormInstance || window.Parsley;
|
| 20023 |
return this.init(options);
|
| 20024 |
};
|
| 20025 |
|
| 20026 |
+
Factory.prototype = {
|
| 20027 |
init: function init(options) {
|
| 20028 |
this.__class__ = 'Parsley';
|
| 20029 |
+
this.__version__ = '2.7.0';
|
| 20030 |
+
this.__id__ = Utils__default.generateID();
|
| 20031 |
|
| 20032 |
// Pre-compute options
|
| 20033 |
this._resetOptions(options);
|
| 20034 |
|
| 20035 |
+
// A Form instance is obviously a `<form>` element but also every node that is not an input and has the `data-parsley-validate` attribute
|
| 20036 |
+
if (this.$element.is('form') || Utils__default.checkAttr(this.$element, this.options.namespace, 'validate') && !this.$element.is(this.options.inputs)) return this.bind('parsleyForm');
|
| 20037 |
|
| 20038 |
+
// Every other element is bound as a `Field` or `FieldMultiple`
|
| 20039 |
return this.isMultiple() ? this.handleMultiple() : this.bind('parsleyField');
|
| 20040 |
},
|
| 20041 |
|
| 20063 |
|
| 20064 |
// Else for radio / checkboxes, we need a `name` or `data-parsley-multiple` to properly bind it
|
| 20065 |
} else if (!this.options.multiple) {
|
| 20066 |
+
Utils__default.warn('To be bound by Parsley, a radio, a checkbox and a multiple select input must have either a name or a multiple option.', this.$element);
|
| 20067 |
return this;
|
| 20068 |
}
|
| 20069 |
|
| 20083 |
parsleyMultipleInstance = $($previouslyRelated.get(i)).data('Parsley');
|
| 20084 |
if ('undefined' !== typeof parsleyMultipleInstance) {
|
| 20085 |
|
| 20086 |
+
if (!this.$element.data('FieldMultiple')) {
|
| 20087 |
parsleyMultipleInstance.addElement(this.$element);
|
| 20088 |
}
|
| 20089 |
|
| 20091 |
}
|
| 20092 |
}
|
| 20093 |
|
| 20094 |
+
// Create a secret Field instance for every multiple field. It will be stored in `data('FieldMultiple')`
|
| 20095 |
+
// And will be useful later to access classic `Field` stuff while being in a `FieldMultiple` instance
|
| 20096 |
this.bind('parsleyField', true);
|
| 20097 |
|
| 20098 |
return parsleyMultipleInstance || this.bind('parsleyFieldMultiple');
|
| 20099 |
},
|
| 20100 |
|
| 20101 |
+
// Return proper `Form`, `Field` or `FieldMultiple`
|
| 20102 |
bind: function bind(type, doNotStore) {
|
| 20103 |
var parsleyInstance;
|
| 20104 |
|
| 20105 |
switch (type) {
|
| 20106 |
case 'parsleyForm':
|
| 20107 |
+
parsleyInstance = $.extend(new Form(this.$element, this.domOptions, this.options), new Base(), window.ParsleyExtend)._bindFields();
|
| 20108 |
break;
|
| 20109 |
case 'parsleyField':
|
| 20110 |
+
parsleyInstance = $.extend(new parsley_field(this.$element, this.domOptions, this.options, this.parent), new Base(), window.ParsleyExtend);
|
| 20111 |
break;
|
| 20112 |
case 'parsleyFieldMultiple':
|
| 20113 |
+
parsleyInstance = $.extend(new parsley_field(this.$element, this.domOptions, this.options, this.parent), new Multiple(), new Base(), window.ParsleyExtend)._init();
|
| 20114 |
break;
|
| 20115 |
default:
|
| 20116 |
throw new Error(type + 'is not a supported Parsley type');
|
| 20117 |
}
|
| 20118 |
|
| 20119 |
+
if (this.options.multiple) Utils__default.setAttr(this.$element, this.options.namespace, 'multiple', this.options.multiple);
|
| 20120 |
|
| 20121 |
if ('undefined' !== typeof doNotStore) {
|
| 20122 |
+
this.$element.data('FieldMultiple', parsleyInstance);
|
| 20123 |
|
| 20124 |
return parsleyInstance;
|
| 20125 |
}
|
| 20127 |
// Store the freshly bound instance in a DOM element for later access using jQuery `data()`
|
| 20128 |
this.$element.data('Parsley', parsleyInstance);
|
| 20129 |
|
| 20130 |
+
// Tell the world we have a new Form or Field instance!
|
| 20131 |
parsleyInstance._actualizeTriggers();
|
| 20132 |
parsleyInstance._trigger('init');
|
| 20133 |
|
| 20140 |
throw "The loaded version of jQuery is too old. Please upgrade to 1.8.x or better.";
|
| 20141 |
}
|
| 20142 |
if (!vernums.forEach) {
|
| 20143 |
+
Utils__default.warn('Parsley requires ES5 to run properly. Please include https://github.com/es-shims/es5-shim');
|
| 20144 |
}
|
| 20145 |
// Inherit `on`, `off` & `trigger` to Parsley:
|
| 20146 |
+
var Parsley = $.extend(new Base(), {
|
| 20147 |
$element: $(document),
|
| 20148 |
actualizeOptions: null,
|
| 20149 |
_resetOptions: null,
|
| 20150 |
+
Factory: Factory,
|
| 20151 |
+
version: '2.7.0'
|
| 20152 |
});
|
| 20153 |
|
| 20154 |
+
// Supplement Field and Form with Base
|
| 20155 |
// This way, the constructors will have access to those methods
|
| 20156 |
+
$.extend(parsley_field.prototype, UI.Field, Base.prototype);
|
| 20157 |
+
$.extend(Form.prototype, UI.Form, Base.prototype);
|
| 20158 |
// Inherit actualizeOptions and _resetOptions:
|
| 20159 |
+
$.extend(Factory.prototype, Base.prototype);
|
| 20160 |
|
| 20161 |
// ### jQuery API
|
| 20162 |
// `$('.elem').parsley(options)` or `$('.elem').psly(options)`
|
| 20173 |
|
| 20174 |
// Return undefined if applied to non existing DOM element
|
| 20175 |
if (!$(this).length) {
|
| 20176 |
+
Utils__default.warn('You must bind Parsley on an existing element.');
|
| 20177 |
|
| 20178 |
return;
|
| 20179 |
}
|
| 20180 |
|
| 20181 |
+
return new Factory(this, options);
|
| 20182 |
};
|
| 20183 |
|
| 20184 |
+
// ### Field and Form extension
|
| 20185 |
// Ensure the extension is now defined if it wasn't previously
|
| 20186 |
if ('undefined' === typeof window.ParsleyExtend) window.ParsleyExtend = {};
|
| 20187 |
|
| 20188 |
// ### Parsley config
|
| 20189 |
// Inherit from ParsleyDefault, and copy over any existing values
|
| 20190 |
+
Parsley.options = $.extend(Utils__default.objectCreate(Defaults), window.ParsleyConfig);
|
| 20191 |
window.ParsleyConfig = Parsley.options; // Old way of accessing global options
|
| 20192 |
|
| 20193 |
// ### Globals
|
| 20194 |
window.Parsley = window.psly = Parsley;
|
| 20195 |
+
Parsley.Utils = Utils__default;
|
| 20196 |
+
window.ParsleyUtils = {};
|
| 20197 |
+
$.each(Utils__default, function (key, value) {
|
| 20198 |
+
if ('function' === typeof value) {
|
| 20199 |
+
window.ParsleyUtils[key] = function () {
|
| 20200 |
+
Utils__default.warnOnce('Accessing `window.ParsleyUtils` is deprecated. Use `window.Parsley.Utils` instead.');
|
| 20201 |
+
return Utils__default[key].apply(Utils__default, arguments);
|
| 20202 |
+
};
|
| 20203 |
+
}
|
| 20204 |
+
});
|
| 20205 |
|
| 20206 |
// ### Define methods that forward to the registry, and deprecate all access except through window.Parsley
|
| 20207 |
+
var registry = window.Parsley._validatorRegistry = new ValidatorRegistry(window.ParsleyConfig.validators, window.ParsleyConfig.i18n);
|
| 20208 |
window.ParsleyValidator = {};
|
| 20209 |
$.each('setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator'.split(' '), function (i, method) {
|
| 20210 |
window.Parsley[method] = $.proxy(registry, method);
|
| 20211 |
window.ParsleyValidator[method] = function () {
|
| 20212 |
var _window$Parsley;
|
| 20213 |
|
| 20214 |
+
Utils__default.warnOnce('Accessing the method \'' + method + '\' through Validator is deprecated. Simply call \'window.Parsley.' + method + '(...)\'');
|
| 20215 |
return (_window$Parsley = window.Parsley)[method].apply(_window$Parsley, arguments);
|
| 20216 |
};
|
| 20217 |
});
|
| 20218 |
|
| 20219 |
+
// ### UI
|
| 20220 |
// Deprecated global object
|
| 20221 |
+
window.Parsley.UI = UI;
|
| 20222 |
window.ParsleyUI = {
|
| 20223 |
removeError: function removeError(instance, name, doNotUpdateClass) {
|
| 20224 |
var updateClass = true !== doNotUpdateClass;
|
| 20225 |
+
Utils__default.warnOnce('Accessing UI is deprecated. Call \'removeError\' on the instance directly. Please comment in issue 1073 as to your need to call this method.');
|
| 20226 |
return instance.removeError(name, { updateClass: updateClass });
|
| 20227 |
},
|
| 20228 |
getErrorsMessages: function getErrorsMessages(instance) {
|
| 20229 |
+
Utils__default.warnOnce('Accessing UI is deprecated. Call \'getErrorsMessages\' on the instance directly.');
|
| 20230 |
return instance.getErrorsMessages();
|
| 20231 |
}
|
| 20232 |
};
|
| 20233 |
$.each('addError updateError'.split(' '), function (i, method) {
|
| 20234 |
window.ParsleyUI[method] = function (instance, name, message, assert, doNotUpdateClass) {
|
| 20235 |
var updateClass = true !== doNotUpdateClass;
|
| 20236 |
+
Utils__default.warnOnce('Accessing UI is deprecated. Call \'' + method + '\' on the instance directly. Please comment in issue 1073 as to your need to call this method.');
|
| 20237 |
return instance[method](name, { message: message, assert: assert, updateClass: updateClass });
|
| 20238 |
};
|
| 20239 |
});
|
| 20249 |
|
| 20250 |
var o = $({});
|
| 20251 |
var deprecated = function deprecated() {
|
| 20252 |
+
Utils__default.warnOnce("Parsley's pubsub module is deprecated; use the 'on' and 'off' methods on parsley instances or window.Parsley");
|
| 20253 |
};
|
| 20254 |
|
| 20255 |
// Returns an event handler that calls `fn` with the arguments it expects
|
| 20288 |
|
| 20289 |
$.listenTo = function (instance, name, fn) {
|
| 20290 |
deprecated();
|
| 20291 |
+
if (!(instance instanceof parsley_field) && !(instance instanceof Form)) throw new Error('Must give Parsley instance');
|
| 20292 |
|
| 20293 |
if ('string' !== typeof name || 'function' !== typeof fn) throw new Error('Wrong parameters');
|
| 20294 |
|
| 20303 |
|
| 20304 |
$.unsubscribeTo = function (instance, name) {
|
| 20305 |
deprecated();
|
| 20306 |
+
if (!(instance instanceof parsley_field) && !(instance instanceof Form)) throw new Error('Must give Parsley instance');
|
| 20307 |
instance.off(eventName(name));
|
| 20308 |
};
|
| 20309 |
|
| 20323 |
var _instance;
|
| 20324 |
|
| 20325 |
deprecated();
|
| 20326 |
+
var instanceGiven = instance instanceof parsley_field || instance instanceof Form;
|
| 20327 |
var args = Array.prototype.slice.call(arguments, instanceGiven ? 2 : 1);
|
| 20328 |
args.unshift(eventName(name));
|
| 20329 |
if (!instanceGiven) {
|
| 20431 |
});
|
| 20432 |
|
| 20433 |
window.ParsleyExtend.addAsyncValidator = function () {
|
| 20434 |
+
Utils.warnOnce('Accessing the method `addAsyncValidator` through an instance is deprecated. Simply call `Parsley.addAsyncValidator(...)`');
|
| 20435 |
return Parsley.addAsyncValidator.apply(Parsley, arguments);
|
| 20436 |
};
|
| 20437 |
|
assets/js/public.js
CHANGED
|
@@ -1945,7 +1945,7 @@
|
|
| 1945 |
|
| 1946 |
/* WEBPACK VAR INJECTION */(function(global) {/*!
|
| 1947 |
* Parsley.js
|
| 1948 |
-
* Version 2.
|
| 1949 |
* http://parsleyjs.org
|
| 1950 |
* Guillaume Potier - <guillaume@wisembly.com>
|
| 1951 |
* Marc-Andre Lafortune - <petroselinum@marc-andre.ca>
|
|
@@ -1957,6 +1957,8 @@
|
|
| 1957 |
//
|
| 1958 |
var _slice = Array.prototype.slice;
|
| 1959 |
|
|
|
|
|
|
|
| 1960 |
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
|
| 1961 |
|
| 1962 |
(function (global, factory) {
|
|
@@ -1967,7 +1969,7 @@
|
|
| 1967 |
var globalID = 1;
|
| 1968 |
var pastWarnings = {};
|
| 1969 |
|
| 1970 |
-
var
|
| 1971 |
// Parsley DOM-API
|
| 1972 |
// returns object from dom attributes and values
|
| 1973 |
attr: function attr($element, namespace, obj) {
|
|
@@ -2054,6 +2056,70 @@
|
|
| 2054 |
return string.replace(/^\s+|\s+$/g, '');
|
| 2055 |
},
|
| 2056 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2057 |
namespaceEvents: function namespaceEvents(events, namespace) {
|
| 2058 |
events = this.trimString(events || '').split(/\s+/);
|
| 2059 |
if (!events[0]) return '';
|
|
@@ -2097,14 +2163,14 @@
|
|
| 2097 |
_SubmitSelector: 'input[type="submit"], button:submit'
|
| 2098 |
};
|
| 2099 |
|
| 2100 |
-
var
|
| 2101 |
|
| 2102 |
// All these options could be overriden and specified directly in DOM using
|
| 2103 |
// `data-parsley-` default DOM-API
|
| 2104 |
// eg: `inputs` can be set in DOM using `data-parsley-inputs="input, textarea"`
|
| 2105 |
// eg: `data-parsley-stop-on-first-failing-constraint="false"`
|
| 2106 |
|
| 2107 |
-
var
|
| 2108 |
// ### General
|
| 2109 |
|
| 2110 |
// Default data-namespace for DOM API
|
|
@@ -2151,11 +2217,11 @@
|
|
| 2151 |
|
| 2152 |
// Return the `$element` that will receive these above success or error classes
|
| 2153 |
// Could also be (and given directly from DOM) a valid selector like `'#div'`
|
| 2154 |
-
classHandler: function classHandler(
|
| 2155 |
|
| 2156 |
// Return the `$element` where errors will be appended
|
| 2157 |
// Could also be (and given directly from DOM) a valid selector like `'#div'`
|
| 2158 |
-
errorsContainer: function errorsContainer(
|
| 2159 |
|
| 2160 |
// ul elem that would receive errors' list
|
| 2161 |
errorsWrapper: '<ul class="parsley-errors-list"></ul>',
|
|
@@ -2164,11 +2230,11 @@
|
|
| 2164 |
errorTemplate: '<li></li>'
|
| 2165 |
};
|
| 2166 |
|
| 2167 |
-
var
|
| 2168 |
-
this.__id__ =
|
| 2169 |
};
|
| 2170 |
|
| 2171 |
-
|
| 2172 |
asyncSupport: true, // Deprecated
|
| 2173 |
|
| 2174 |
_pipeAccordingToValidationResult: function _pipeAccordingToValidationResult() {
|
|
@@ -2183,14 +2249,14 @@
|
|
| 2183 |
},
|
| 2184 |
|
| 2185 |
actualizeOptions: function actualizeOptions() {
|
| 2186 |
-
|
| 2187 |
if (this.parent && this.parent.actualizeOptions) this.parent.actualizeOptions();
|
| 2188 |
return this;
|
| 2189 |
},
|
| 2190 |
|
| 2191 |
_resetOptions: function _resetOptions(initOptions) {
|
| 2192 |
-
this.domOptions =
|
| 2193 |
-
this.options =
|
| 2194 |
// Shallow copy of ownProperties of initOptions:
|
| 2195 |
for (var i in initOptions) {
|
| 2196 |
if (initOptions.hasOwnProperty(i)) this.options[i] = initOptions[i];
|
|
@@ -2256,7 +2322,7 @@
|
|
| 2256 |
},
|
| 2257 |
|
| 2258 |
asyncIsValid: function asyncIsValid(group, force) {
|
| 2259 |
-
|
| 2260 |
return this.whenValid({ group: group, force: force });
|
| 2261 |
},
|
| 2262 |
|
|
@@ -2265,73 +2331,24 @@
|
|
| 2265 |
}
|
| 2266 |
};
|
| 2267 |
|
| 2268 |
-
var requirementConverters = {
|
| 2269 |
-
string: function string(_string) {
|
| 2270 |
-
return _string;
|
| 2271 |
-
},
|
| 2272 |
-
integer: function integer(string) {
|
| 2273 |
-
if (isNaN(string)) throw 'Requirement is not an integer: "' + string + '"';
|
| 2274 |
-
return parseInt(string, 10);
|
| 2275 |
-
},
|
| 2276 |
-
number: function number(string) {
|
| 2277 |
-
if (isNaN(string)) throw 'Requirement is not a number: "' + string + '"';
|
| 2278 |
-
return parseFloat(string);
|
| 2279 |
-
},
|
| 2280 |
-
reference: function reference(string) {
|
| 2281 |
-
// Unused for now
|
| 2282 |
-
var result = $(string);
|
| 2283 |
-
if (result.length === 0) throw 'No such reference: "' + string + '"';
|
| 2284 |
-
return result;
|
| 2285 |
-
},
|
| 2286 |
-
'boolean': function _boolean(string) {
|
| 2287 |
-
return string !== 'false';
|
| 2288 |
-
},
|
| 2289 |
-
object: function object(string) {
|
| 2290 |
-
return ParsleyUtils__default.deserializeValue(string);
|
| 2291 |
-
},
|
| 2292 |
-
regexp: function regexp(_regexp) {
|
| 2293 |
-
var flags = '';
|
| 2294 |
-
|
| 2295 |
-
// Test if RegExp is literal, if not, nothing to be done, otherwise, we need to isolate flags and pattern
|
| 2296 |
-
if (/^\/.*\/(?:[gimy]*)$/.test(_regexp)) {
|
| 2297 |
-
// Replace the regexp literal string with the first match group: ([gimy]*)
|
| 2298 |
-
// If no flag is present, this will be a blank string
|
| 2299 |
-
flags = _regexp.replace(/.*\/([gimy]*)$/, '$1');
|
| 2300 |
-
// Again, replace the regexp literal string with the first match group:
|
| 2301 |
-
// everything excluding the opening and closing slashes and the flags
|
| 2302 |
-
_regexp = _regexp.replace(new RegExp('^/(.*?)/' + flags + '$'), '$1');
|
| 2303 |
-
} else {
|
| 2304 |
-
// Anchor regexp:
|
| 2305 |
-
_regexp = '^' + _regexp + '$';
|
| 2306 |
-
}
|
| 2307 |
-
return new RegExp(_regexp, flags);
|
| 2308 |
-
}
|
| 2309 |
-
};
|
| 2310 |
-
|
| 2311 |
var convertArrayRequirement = function convertArrayRequirement(string, length) {
|
| 2312 |
var m = string.match(/^\s*\[(.*)\]\s*$/);
|
| 2313 |
if (!m) throw 'Requirement is not an array: "' + string + '"';
|
| 2314 |
-
var values = m[1].split(',').map(
|
| 2315 |
if (values.length !== length) throw 'Requirement has ' + values.length + ' values when ' + length + ' are needed';
|
| 2316 |
return values;
|
| 2317 |
};
|
| 2318 |
|
| 2319 |
-
var convertRequirement = function convertRequirement(requirementType, string) {
|
| 2320 |
-
var converter = requirementConverters[requirementType || 'string'];
|
| 2321 |
-
if (!converter) throw 'Unknown requirement specification: "' + requirementType + '"';
|
| 2322 |
-
return converter(string);
|
| 2323 |
-
};
|
| 2324 |
-
|
| 2325 |
var convertExtraOptionRequirement = function convertExtraOptionRequirement(requirementSpec, string, extraOptionReader) {
|
| 2326 |
var main = null;
|
| 2327 |
var extra = {};
|
| 2328 |
for (var key in requirementSpec) {
|
| 2329 |
if (key) {
|
| 2330 |
var value = extraOptionReader(key);
|
| 2331 |
-
if ('string' === typeof value) value =
|
| 2332 |
extra[key] = value;
|
| 2333 |
} else {
|
| 2334 |
-
main =
|
| 2335 |
}
|
| 2336 |
}
|
| 2337 |
return [main, extra];
|
|
@@ -2339,11 +2356,11 @@
|
|
| 2339 |
|
| 2340 |
// A Validator needs to implement the methods `validate` and `parseRequirements`
|
| 2341 |
|
| 2342 |
-
var
|
| 2343 |
$.extend(true, this, spec);
|
| 2344 |
};
|
| 2345 |
|
| 2346 |
-
|
| 2347 |
// Returns `true` iff the given `value` is valid according the given requirements.
|
| 2348 |
validate: function validate(value, requirementFirstArg) {
|
| 2349 |
if (this.fn) {
|
|
@@ -2358,6 +2375,12 @@
|
|
| 2358 |
if (!this.validateMultiple) throw 'Validator `' + this.name + '` does not handle multiple values';
|
| 2359 |
return this.validateMultiple.apply(this, arguments);
|
| 2360 |
} else {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2361 |
if (this.validateNumber) {
|
| 2362 |
if (isNaN(value)) return false;
|
| 2363 |
arguments[0] = parseFloat(arguments[0]);
|
|
@@ -2381,12 +2404,12 @@
|
|
| 2381 |
var type = this.requirementType;
|
| 2382 |
if ($.isArray(type)) {
|
| 2383 |
var values = convertArrayRequirement(requirements, type.length);
|
| 2384 |
-
for (var i = 0; i < values.length; i++) values[i] =
|
| 2385 |
return values;
|
| 2386 |
} else if ($.isPlainObject(type)) {
|
| 2387 |
return convertExtraOptionRequirement(type, requirements, extraOptionReader);
|
| 2388 |
} else {
|
| 2389 |
-
return [
|
| 2390 |
}
|
| 2391 |
},
|
| 2392 |
// Defaults:
|
|
@@ -2396,8 +2419,8 @@
|
|
| 2396 |
|
| 2397 |
};
|
| 2398 |
|
| 2399 |
-
var
|
| 2400 |
-
this.__class__ = '
|
| 2401 |
|
| 2402 |
// Default Parsley locale is en
|
| 2403 |
this.locale = 'en';
|
|
@@ -2405,7 +2428,7 @@
|
|
| 2405 |
this.init(validators || {}, catalog || {});
|
| 2406 |
};
|
| 2407 |
|
| 2408 |
-
var
|
| 2409 |
email: /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,
|
| 2410 |
|
| 2411 |
// Follow https://www.w3.org/TR/html5/infrastructure.html#floating-point-numbers
|
|
@@ -2417,6 +2440,12 @@
|
|
| 2417 |
|
| 2418 |
alphanum: /^\w+$/i,
|
| 2419 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2420 |
url: new RegExp("^" +
|
| 2421 |
// protocol identifier
|
| 2422 |
"(?:(?:https?|ftp)://)?" + // ** mod: make scheme optional
|
|
@@ -2444,7 +2473,7 @@
|
|
| 2444 |
// resource path
|
| 2445 |
"(?:/\\S*)?" + "$", 'i')
|
| 2446 |
};
|
| 2447 |
-
|
| 2448 |
|
| 2449 |
// See http://stackoverflow.com/a/10454560/8279
|
| 2450 |
var decimalPlaces = function decimalPlaces(num) {
|
|
@@ -2459,7 +2488,32 @@
|
|
| 2459 |
match[2] ? +match[2] : 0));
|
| 2460 |
};
|
| 2461 |
|
| 2462 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2463 |
init: function init(validators, catalog) {
|
| 2464 |
this.catalog = catalog;
|
| 2465 |
// Copy prototype's validators:
|
|
@@ -2519,8 +2573,8 @@
|
|
| 2519 |
// Old API was addValidator(name, function, priority)
|
| 2520 |
//
|
| 2521 |
addValidator: function addValidator(name, arg1, arg2) {
|
| 2522 |
-
if (this.validators[name])
|
| 2523 |
-
|
| 2524 |
return;
|
| 2525 |
}
|
| 2526 |
return this._setValidator.apply(this, arguments);
|
|
@@ -2528,14 +2582,14 @@
|
|
| 2528 |
|
| 2529 |
updateValidator: function updateValidator(name, arg1, arg2) {
|
| 2530 |
if (!this.validators[name]) {
|
| 2531 |
-
|
| 2532 |
return this.addValidator.apply(this, arguments);
|
| 2533 |
}
|
| 2534 |
return this._setValidator.apply(this, arguments);
|
| 2535 |
},
|
| 2536 |
|
| 2537 |
removeValidator: function removeValidator(name) {
|
| 2538 |
-
if (!this.validators[name])
|
| 2539 |
|
| 2540 |
delete this.validators[name];
|
| 2541 |
|
|
@@ -2551,7 +2605,7 @@
|
|
| 2551 |
};
|
| 2552 |
}
|
| 2553 |
if (!validator.validate) {
|
| 2554 |
-
validator = new
|
| 2555 |
}
|
| 2556 |
this.validators[name] = validator;
|
| 2557 |
|
|
@@ -2617,11 +2671,11 @@
|
|
| 2617 |
var _ref$base = _ref.base;
|
| 2618 |
var base = _ref$base === undefined ? 0 : _ref$base;
|
| 2619 |
|
| 2620 |
-
var
|
| 2621 |
-
if (!
|
| 2622 |
throw new Error('validator type `' + type + '` is not supported');
|
| 2623 |
}
|
| 2624 |
-
if (!
|
| 2625 |
if ('number' === type) {
|
| 2626 |
if (!/^any$/i.test(step || '')) {
|
| 2627 |
var nb = Number(value);
|
|
@@ -2693,27 +2747,15 @@
|
|
| 2693 |
requirementType: ['integer', 'integer'],
|
| 2694 |
priority: 30
|
| 2695 |
},
|
| 2696 |
-
min: {
|
| 2697 |
-
|
| 2698 |
-
|
| 2699 |
-
|
| 2700 |
-
|
| 2701 |
-
|
| 2702 |
-
|
| 2703 |
-
|
| 2704 |
-
|
| 2705 |
-
return value <= requirement;
|
| 2706 |
-
},
|
| 2707 |
-
requirementType: 'number',
|
| 2708 |
-
priority: 30
|
| 2709 |
-
},
|
| 2710 |
-
range: {
|
| 2711 |
-
validateNumber: function validateNumber(value, min, max) {
|
| 2712 |
-
return value >= min && value <= max;
|
| 2713 |
-
},
|
| 2714 |
-
requirementType: ['number', 'number'],
|
| 2715 |
-
priority: 30
|
| 2716 |
-
},
|
| 2717 |
equalto: {
|
| 2718 |
validateString: function validateString(value, refOrValue) {
|
| 2719 |
var $reference = $(refOrValue);
|
|
@@ -2724,7 +2766,7 @@
|
|
| 2724 |
}
|
| 2725 |
};
|
| 2726 |
|
| 2727 |
-
var
|
| 2728 |
|
| 2729 |
var diffResults = function diffResults(newResult, oldResult, deep) {
|
| 2730 |
var added = [];
|
|
@@ -2748,7 +2790,7 @@
|
|
| 2748 |
};
|
| 2749 |
};
|
| 2750 |
|
| 2751 |
-
|
| 2752 |
|
| 2753 |
_actualizeTriggers: function _actualizeTriggers() {
|
| 2754 |
var _this2 = this;
|
|
@@ -2756,7 +2798,7 @@
|
|
| 2756 |
this.$element.on('submit.Parsley', function (evt) {
|
| 2757 |
_this2.onSubmitValidate(evt);
|
| 2758 |
});
|
| 2759 |
-
this.$element.on('click.Parsley',
|
| 2760 |
_this2.onSubmitButton(evt);
|
| 2761 |
});
|
| 2762 |
|
|
@@ -2791,7 +2833,7 @@
|
|
| 2791 |
|
| 2792 |
};
|
| 2793 |
|
| 2794 |
-
|
| 2795 |
|
| 2796 |
_reflowUI: function _reflowUI() {
|
| 2797 |
this._buildUI();
|
|
@@ -2987,7 +3029,7 @@
|
|
| 2987 |
if (0 !== this._ui.$errorsWrapper.parent().length) return this._ui.$errorsWrapper.parent();
|
| 2988 |
|
| 2989 |
if ('string' === typeof this.options.errorsContainer) {
|
| 2990 |
-
if ($(this.options.errorsContainer).length) return $(this.options.errorsContainer).append(this._ui.$errorsWrapper);else
|
| 2991 |
} else if ('function' === typeof this.options.errorsContainer) $errorsContainer = this.options.errorsContainer.call(this, this);
|
| 2992 |
|
| 2993 |
if ('undefined' !== typeof $errorsContainer && $errorsContainer.length) return $errorsContainer.append(this._ui.$errorsWrapper);
|
|
@@ -3003,9 +3045,9 @@
|
|
| 3003 |
|
| 3004 |
// Remove Parsley events already bound on this field
|
| 3005 |
$toBind.off('.Parsley');
|
| 3006 |
-
if (this._failedOnce) $toBind.on(
|
| 3007 |
_this3._validateIfNeeded();
|
| 3008 |
-
});else if (trigger =
|
| 3009 |
$toBind.on(trigger, function (event) {
|
| 3010 |
_this3._validateIfNeeded(event);
|
| 3011 |
});
|
|
@@ -3068,8 +3110,8 @@
|
|
| 3068 |
}
|
| 3069 |
};
|
| 3070 |
|
| 3071 |
-
var
|
| 3072 |
-
this.__class__ = '
|
| 3073 |
|
| 3074 |
this.$element = $(element);
|
| 3075 |
this.domOptions = domOptions;
|
|
@@ -3080,9 +3122,9 @@
|
|
| 3080 |
this.validationResult = null;
|
| 3081 |
};
|
| 3082 |
|
| 3083 |
-
var
|
| 3084 |
|
| 3085 |
-
|
| 3086 |
onSubmitValidate: function onSubmitValidate(event) {
|
| 3087 |
var _this5 = this;
|
| 3088 |
|
|
@@ -3090,7 +3132,7 @@
|
|
| 3090 |
if (true === event.parsley) return;
|
| 3091 |
|
| 3092 |
// If we didn't come here through a submit button, use the first one in the form
|
| 3093 |
-
var $submitSource = this._$submitSource || this.$element.find(
|
| 3094 |
this._$submitSource = null;
|
| 3095 |
this.$element.find('.parsley-synthetic-submit-button').prop('disabled', true);
|
| 3096 |
if ($submitSource.is('[formnovalidate]')) return;
|
|
@@ -3138,7 +3180,7 @@
|
|
| 3138 |
// Consider using `whenValidate` instead.
|
| 3139 |
validate: function validate(options) {
|
| 3140 |
if (arguments.length >= 1 && !$.isPlainObject(options)) {
|
| 3141 |
-
|
| 3142 |
|
| 3143 |
var _arguments = _slice.call(arguments);
|
| 3144 |
|
|
@@ -3148,11 +3190,11 @@
|
|
| 3148 |
|
| 3149 |
options = { group: group, force: force, event: event };
|
| 3150 |
}
|
| 3151 |
-
return
|
| 3152 |
},
|
| 3153 |
|
| 3154 |
whenValidate: function whenValidate() {
|
| 3155 |
-
var
|
| 3156 |
_this6 = this;
|
| 3157 |
|
| 3158 |
var _ref7 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
|
|
@@ -3164,7 +3206,7 @@
|
|
| 3164 |
this.submitEvent = event;
|
| 3165 |
if (event) {
|
| 3166 |
this.submitEvent = $.extend({}, event, { preventDefault: function preventDefault() {
|
| 3167 |
-
|
| 3168 |
_this6.validationResult = false;
|
| 3169 |
} });
|
| 3170 |
}
|
|
@@ -3182,7 +3224,7 @@
|
|
| 3182 |
});
|
| 3183 |
});
|
| 3184 |
|
| 3185 |
-
return (
|
| 3186 |
_this6._trigger('success');
|
| 3187 |
}).fail(function () {
|
| 3188 |
_this6.validationResult = false;
|
|
@@ -3190,7 +3232,7 @@
|
|
| 3190 |
_this6._trigger('error');
|
| 3191 |
}).always(function () {
|
| 3192 |
_this6._trigger('validated');
|
| 3193 |
-
})).pipe.apply(
|
| 3194 |
},
|
| 3195 |
|
| 3196 |
// Iterate over refreshed fields, and stop on first failure.
|
|
@@ -3199,7 +3241,7 @@
|
|
| 3199 |
// Prefer using `whenValid` instead.
|
| 3200 |
isValid: function isValid(options) {
|
| 3201 |
if (arguments.length >= 1 && !$.isPlainObject(options)) {
|
| 3202 |
-
|
| 3203 |
|
| 3204 |
var _arguments2 = _slice.call(arguments);
|
| 3205 |
|
|
@@ -3208,7 +3250,7 @@
|
|
| 3208 |
|
| 3209 |
options = { group: group, force: force };
|
| 3210 |
}
|
| 3211 |
-
return
|
| 3212 |
},
|
| 3213 |
|
| 3214 |
// Iterate over refreshed fields and validate them.
|
|
@@ -3229,7 +3271,7 @@
|
|
| 3229 |
return field.whenValid({ group: group, force: force });
|
| 3230 |
});
|
| 3231 |
});
|
| 3232 |
-
return
|
| 3233 |
},
|
| 3234 |
|
| 3235 |
// Reset UI
|
|
@@ -3268,8 +3310,8 @@
|
|
| 3268 |
_this8.$element.find(_this8.options.inputs).not(_this8.options.excluded).each(function (_, element) {
|
| 3269 |
var fieldInstance = new window.Parsley.Factory(element, {}, _this8);
|
| 3270 |
|
| 3271 |
-
// Only add valid and not excluded `
|
| 3272 |
-
if (('
|
| 3273 |
var uniqueId = fieldInstance.__class__ + '-' + fieldInstance.__id__;
|
| 3274 |
if ('undefined' === typeof _this8.fieldsMappedById[uniqueId]) {
|
| 3275 |
_this8.fieldsMappedById[uniqueId] = fieldInstance;
|
|
@@ -3278,7 +3320,7 @@
|
|
| 3278 |
}
|
| 3279 |
});
|
| 3280 |
|
| 3281 |
-
$.each(
|
| 3282 |
field.reset();
|
| 3283 |
});
|
| 3284 |
});
|
|
@@ -3313,7 +3355,7 @@
|
|
| 3313 |
|
| 3314 |
var Constraint = function Constraint(parsleyField, name, requirements, priority, isDomConstraint) {
|
| 3315 |
var validatorSpec = window.Parsley._validatorRegistry.validators[name];
|
| 3316 |
-
var validator = new
|
| 3317 |
|
| 3318 |
$.extend(this, {
|
| 3319 |
validator: validator,
|
|
@@ -3346,8 +3388,8 @@
|
|
| 3346 |
}
|
| 3347 |
};
|
| 3348 |
|
| 3349 |
-
var
|
| 3350 |
-
this.__class__ = '
|
| 3351 |
|
| 3352 |
this.$element = $(field);
|
| 3353 |
|
|
@@ -3370,14 +3412,14 @@
|
|
| 3370 |
|
| 3371 |
var parsley_field__statusMapping = { pending: null, resolved: true, rejected: false };
|
| 3372 |
|
| 3373 |
-
|
| 3374 |
// # Public API
|
| 3375 |
-
// Validate field and trigger some events for mainly `
|
| 3376 |
// @returns `true`, an array of the validators that failed, or
|
| 3377 |
// `null` if validation is not finished. Prefer using whenValidate
|
| 3378 |
validate: function validate(options) {
|
| 3379 |
if (arguments.length >= 1 && !$.isPlainObject(options)) {
|
| 3380 |
-
|
| 3381 |
options = { options: options };
|
| 3382 |
}
|
| 3383 |
var promise = this.whenValidate(options);
|
|
@@ -3393,7 +3435,7 @@
|
|
| 3393 |
}
|
| 3394 |
},
|
| 3395 |
|
| 3396 |
-
// Validate field and trigger some events for mainly `
|
| 3397 |
// @returns a promise that succeeds only when all validations do
|
| 3398 |
// or `undefined` if field is not in the given `group`.
|
| 3399 |
whenValidate: function whenValidate() {
|
|
@@ -3451,7 +3493,7 @@
|
|
| 3451 |
// See also `whenValid`.
|
| 3452 |
isValid: function isValid(options) {
|
| 3453 |
if (arguments.length >= 1 && !$.isPlainObject(options)) {
|
| 3454 |
-
|
| 3455 |
|
| 3456 |
var _arguments3 = _slice.call(arguments);
|
| 3457 |
|
|
@@ -3502,13 +3544,13 @@
|
|
| 3502 |
$.each(groupedConstraints, function (_, constraints) {
|
| 3503 |
// Process one group of constraints at a time, we validate the constraints
|
| 3504 |
// and combine the promises together.
|
| 3505 |
-
var promise =
|
| 3506 |
return _this11._validateConstraint(value, constraint);
|
| 3507 |
}));
|
| 3508 |
promises.push(promise);
|
| 3509 |
if (promise.state() === 'rejected') return false; // Interrupt processing if a group has already failed
|
| 3510 |
});
|
| 3511 |
-
return
|
| 3512 |
},
|
| 3513 |
|
| 3514 |
// @returns a promise
|
|
@@ -3519,7 +3561,7 @@
|
|
| 3519 |
// Map false to a failed promise
|
| 3520 |
if (false === result) result = $.Deferred().reject();
|
| 3521 |
// Make sure we return a promise and that we record failures
|
| 3522 |
-
return
|
| 3523 |
if (!(_this12.validationResult instanceof Array)) _this12.validationResult = [];
|
| 3524 |
_this12.validationResult.push({
|
| 3525 |
assert: constraint,
|
|
@@ -3552,7 +3594,7 @@
|
|
| 3552 |
// Field case: emit destroy event to clean UI and then destroy stored instance
|
| 3553 |
this._destroyUI();
|
| 3554 |
this.$element.removeData('Parsley');
|
| 3555 |
-
this.$element.removeData('
|
| 3556 |
this._trigger('destroy');
|
| 3557 |
},
|
| 3558 |
|
|
@@ -3634,13 +3676,13 @@
|
|
| 3634 |
if ('string' === typeof this.$element.attr('pattern')) this.addConstraint('pattern', this.$element.attr('pattern'), undefined, true);
|
| 3635 |
|
| 3636 |
// range
|
| 3637 |
-
if (
|
| 3638 |
|
| 3639 |
// HTML5 min
|
| 3640 |
-
else if (
|
| 3641 |
|
| 3642 |
// HTML5 max
|
| 3643 |
-
else if (
|
| 3644 |
|
| 3645 |
// length
|
| 3646 |
if ('undefined' !== typeof this.$element.attr('minlength') && 'undefined' !== typeof this.$element.attr('maxlength')) this.addConstraint('length', [this.$element.attr('minlength'), this.$element.attr('maxlength')], undefined, true);
|
|
@@ -3663,7 +3705,7 @@
|
|
| 3663 |
base: this.$element.attr('min') || this.$element.attr('value')
|
| 3664 |
}], undefined, true);
|
| 3665 |
// Regular other HTML5 supported types
|
| 3666 |
-
} else if (/^(email|url|range)$/i.test(type)) {
|
| 3667 |
return this.addConstraint('type', type, undefined, true);
|
| 3668 |
}
|
| 3669 |
return this;
|
|
@@ -3688,15 +3730,20 @@
|
|
| 3688 |
// Use `data-parsley-whitespace="squish"` to auto squish input value
|
| 3689 |
// Use `data-parsley-whitespace="trim"` to auto trim input value
|
| 3690 |
_handleWhitespace: function _handleWhitespace(value) {
|
| 3691 |
-
if (true === this.options.trimValue)
|
| 3692 |
|
| 3693 |
if ('squish' === this.options.whitespace) value = value.replace(/\s{2,}/g, ' ');
|
| 3694 |
|
| 3695 |
-
if ('trim' === this.options.whitespace || 'squish' === this.options.whitespace || true === this.options.trimValue) value =
|
| 3696 |
|
| 3697 |
return value;
|
| 3698 |
},
|
| 3699 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3700 |
// Internal only.
|
| 3701 |
// Returns the constraints, grouped by descending priority.
|
| 3702 |
// The result is thus an array of arrays of constraints.
|
|
@@ -3722,13 +3769,13 @@
|
|
| 3722 |
|
| 3723 |
};
|
| 3724 |
|
| 3725 |
-
var parsley_field =
|
| 3726 |
|
| 3727 |
-
var
|
| 3728 |
-
this.__class__ = '
|
| 3729 |
};
|
| 3730 |
|
| 3731 |
-
|
| 3732 |
// Add new `$element` sibling for multiple field
|
| 3733 |
addElement: function addElement($element) {
|
| 3734 |
this.$elements.push($element);
|
|
@@ -3736,7 +3783,7 @@
|
|
| 3736 |
return this;
|
| 3737 |
},
|
| 3738 |
|
| 3739 |
-
// See `
|
| 3740 |
refreshConstraints: function refreshConstraints() {
|
| 3741 |
var fieldConstraints;
|
| 3742 |
|
|
@@ -3758,7 +3805,7 @@
|
|
| 3758 |
continue;
|
| 3759 |
}
|
| 3760 |
|
| 3761 |
-
fieldConstraints = this.$elements[i].data('
|
| 3762 |
|
| 3763 |
for (var j = 0; j < fieldConstraints.length; j++) this.addConstraint(fieldConstraints[j].name, fieldConstraints[j].requirements, fieldConstraints[j].priority, fieldConstraints[j].isDomConstraint);
|
| 3764 |
}
|
|
@@ -3766,7 +3813,7 @@
|
|
| 3766 |
return this;
|
| 3767 |
},
|
| 3768 |
|
| 3769 |
-
// See `
|
| 3770 |
getValue: function getValue() {
|
| 3771 |
// Value could be overriden in DOM
|
| 3772 |
if ('function' === typeof this.options.value) return this.options.value(this);else if ('undefined' !== typeof this.options.value) return this.options.value;
|
|
@@ -3799,14 +3846,14 @@
|
|
| 3799 |
}
|
| 3800 |
};
|
| 3801 |
|
| 3802 |
-
var
|
| 3803 |
this.$element = $(element);
|
| 3804 |
|
| 3805 |
// If the element has already been bound, returns its saved Parsley instance
|
| 3806 |
var savedparsleyFormInstance = this.$element.data('Parsley');
|
| 3807 |
if (savedparsleyFormInstance) {
|
| 3808 |
|
| 3809 |
-
// If the saved instance has been bound without a
|
| 3810 |
if ('undefined' !== typeof parsleyFormInstance && savedparsleyFormInstance.parent === window.Parsley) {
|
| 3811 |
savedparsleyFormInstance.parent = parsleyFormInstance;
|
| 3812 |
savedparsleyFormInstance._resetOptions(savedparsleyFormInstance.options);
|
|
@@ -3822,25 +3869,25 @@
|
|
| 3822 |
// Parsley must be instantiated with a DOM element or jQuery $element
|
| 3823 |
if (!this.$element.length) throw new Error('You must bind Parsley on an existing element.');
|
| 3824 |
|
| 3825 |
-
if ('undefined' !== typeof parsleyFormInstance && '
|
| 3826 |
|
| 3827 |
this.parent = parsleyFormInstance || window.Parsley;
|
| 3828 |
return this.init(options);
|
| 3829 |
};
|
| 3830 |
|
| 3831 |
-
|
| 3832 |
init: function init(options) {
|
| 3833 |
this.__class__ = 'Parsley';
|
| 3834 |
-
this.__version__ = '2.
|
| 3835 |
-
this.__id__ =
|
| 3836 |
|
| 3837 |
// Pre-compute options
|
| 3838 |
this._resetOptions(options);
|
| 3839 |
|
| 3840 |
-
// A
|
| 3841 |
-
if (this.$element.is('form') ||
|
| 3842 |
|
| 3843 |
-
// Every other element is bound as a `
|
| 3844 |
return this.isMultiple() ? this.handleMultiple() : this.bind('parsleyField');
|
| 3845 |
},
|
| 3846 |
|
|
@@ -3868,7 +3915,7 @@
|
|
| 3868 |
|
| 3869 |
// Else for radio / checkboxes, we need a `name` or `data-parsley-multiple` to properly bind it
|
| 3870 |
} else if (!this.options.multiple) {
|
| 3871 |
-
|
| 3872 |
return this;
|
| 3873 |
}
|
| 3874 |
|
|
@@ -3888,7 +3935,7 @@
|
|
| 3888 |
parsleyMultipleInstance = $($previouslyRelated.get(i)).data('Parsley');
|
| 3889 |
if ('undefined' !== typeof parsleyMultipleInstance) {
|
| 3890 |
|
| 3891 |
-
if (!this.$element.data('
|
| 3892 |
parsleyMultipleInstance.addElement(this.$element);
|
| 3893 |
}
|
| 3894 |
|
|
@@ -3896,35 +3943,35 @@
|
|
| 3896 |
}
|
| 3897 |
}
|
| 3898 |
|
| 3899 |
-
// Create a secret
|
| 3900 |
-
// And will be useful later to access classic `
|
| 3901 |
this.bind('parsleyField', true);
|
| 3902 |
|
| 3903 |
return parsleyMultipleInstance || this.bind('parsleyFieldMultiple');
|
| 3904 |
},
|
| 3905 |
|
| 3906 |
-
// Return proper `
|
| 3907 |
bind: function bind(type, doNotStore) {
|
| 3908 |
var parsleyInstance;
|
| 3909 |
|
| 3910 |
switch (type) {
|
| 3911 |
case 'parsleyForm':
|
| 3912 |
-
parsleyInstance = $.extend(new
|
| 3913 |
break;
|
| 3914 |
case 'parsleyField':
|
| 3915 |
-
parsleyInstance = $.extend(new parsley_field(this.$element, this.domOptions, this.options, this.parent), new
|
| 3916 |
break;
|
| 3917 |
case 'parsleyFieldMultiple':
|
| 3918 |
-
parsleyInstance = $.extend(new parsley_field(this.$element, this.domOptions, this.options, this.parent), new
|
| 3919 |
break;
|
| 3920 |
default:
|
| 3921 |
throw new Error(type + 'is not a supported Parsley type');
|
| 3922 |
}
|
| 3923 |
|
| 3924 |
-
if (this.options.multiple)
|
| 3925 |
|
| 3926 |
if ('undefined' !== typeof doNotStore) {
|
| 3927 |
-
this.$element.data('
|
| 3928 |
|
| 3929 |
return parsleyInstance;
|
| 3930 |
}
|
|
@@ -3932,7 +3979,7 @@
|
|
| 3932 |
// Store the freshly bound instance in a DOM element for later access using jQuery `data()`
|
| 3933 |
this.$element.data('Parsley', parsleyInstance);
|
| 3934 |
|
| 3935 |
-
// Tell the world we have a new
|
| 3936 |
parsleyInstance._actualizeTriggers();
|
| 3937 |
parsleyInstance._trigger('init');
|
| 3938 |
|
|
@@ -3945,23 +3992,23 @@
|
|
| 3945 |
throw "The loaded version of jQuery is too old. Please upgrade to 1.8.x or better.";
|
| 3946 |
}
|
| 3947 |
if (!vernums.forEach) {
|
| 3948 |
-
|
| 3949 |
}
|
| 3950 |
// Inherit `on`, `off` & `trigger` to Parsley:
|
| 3951 |
-
var Parsley = $.extend(new
|
| 3952 |
$element: $(document),
|
| 3953 |
actualizeOptions: null,
|
| 3954 |
_resetOptions: null,
|
| 3955 |
-
Factory:
|
| 3956 |
-
version: '2.
|
| 3957 |
});
|
| 3958 |
|
| 3959 |
-
// Supplement
|
| 3960 |
// This way, the constructors will have access to those methods
|
| 3961 |
-
$.extend(parsley_field.prototype,
|
| 3962 |
-
$.extend(
|
| 3963 |
// Inherit actualizeOptions and _resetOptions:
|
| 3964 |
-
$.extend(
|
| 3965 |
|
| 3966 |
// ### jQuery API
|
| 3967 |
// `$('.elem').parsley(options)` or `$('.elem').psly(options)`
|
|
@@ -3978,58 +4025,67 @@
|
|
| 3978 |
|
| 3979 |
// Return undefined if applied to non existing DOM element
|
| 3980 |
if (!$(this).length) {
|
| 3981 |
-
|
| 3982 |
|
| 3983 |
return;
|
| 3984 |
}
|
| 3985 |
|
| 3986 |
-
return new
|
| 3987 |
};
|
| 3988 |
|
| 3989 |
-
// ###
|
| 3990 |
// Ensure the extension is now defined if it wasn't previously
|
| 3991 |
if ('undefined' === typeof window.ParsleyExtend) window.ParsleyExtend = {};
|
| 3992 |
|
| 3993 |
// ### Parsley config
|
| 3994 |
// Inherit from ParsleyDefault, and copy over any existing values
|
| 3995 |
-
Parsley.options = $.extend(
|
| 3996 |
window.ParsleyConfig = Parsley.options; // Old way of accessing global options
|
| 3997 |
|
| 3998 |
// ### Globals
|
| 3999 |
window.Parsley = window.psly = Parsley;
|
| 4000 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4001 |
|
| 4002 |
// ### Define methods that forward to the registry, and deprecate all access except through window.Parsley
|
| 4003 |
-
var registry = window.Parsley._validatorRegistry = new
|
| 4004 |
window.ParsleyValidator = {};
|
| 4005 |
$.each('setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator'.split(' '), function (i, method) {
|
| 4006 |
window.Parsley[method] = $.proxy(registry, method);
|
| 4007 |
window.ParsleyValidator[method] = function () {
|
| 4008 |
var _window$Parsley;
|
| 4009 |
|
| 4010 |
-
|
| 4011 |
return (_window$Parsley = window.Parsley)[method].apply(_window$Parsley, arguments);
|
| 4012 |
};
|
| 4013 |
});
|
| 4014 |
|
| 4015 |
-
// ###
|
| 4016 |
// Deprecated global object
|
| 4017 |
-
window.Parsley.UI =
|
| 4018 |
window.ParsleyUI = {
|
| 4019 |
removeError: function removeError(instance, name, doNotUpdateClass) {
|
| 4020 |
var updateClass = true !== doNotUpdateClass;
|
| 4021 |
-
|
| 4022 |
return instance.removeError(name, { updateClass: updateClass });
|
| 4023 |
},
|
| 4024 |
getErrorsMessages: function getErrorsMessages(instance) {
|
| 4025 |
-
|
| 4026 |
return instance.getErrorsMessages();
|
| 4027 |
}
|
| 4028 |
};
|
| 4029 |
$.each('addError updateError'.split(' '), function (i, method) {
|
| 4030 |
window.ParsleyUI[method] = function (instance, name, message, assert, doNotUpdateClass) {
|
| 4031 |
var updateClass = true !== doNotUpdateClass;
|
| 4032 |
-
|
| 4033 |
return instance[method](name, { message: message, assert: assert, updateClass: updateClass });
|
| 4034 |
};
|
| 4035 |
});
|
|
@@ -4045,7 +4101,7 @@
|
|
| 4045 |
|
| 4046 |
var o = $({});
|
| 4047 |
var deprecated = function deprecated() {
|
| 4048 |
-
|
| 4049 |
};
|
| 4050 |
|
| 4051 |
// Returns an event handler that calls `fn` with the arguments it expects
|
|
@@ -4084,7 +4140,7 @@
|
|
| 4084 |
|
| 4085 |
$.listenTo = function (instance, name, fn) {
|
| 4086 |
deprecated();
|
| 4087 |
-
if (!(instance instanceof parsley_field) && !(instance instanceof
|
| 4088 |
|
| 4089 |
if ('string' !== typeof name || 'function' !== typeof fn) throw new Error('Wrong parameters');
|
| 4090 |
|
|
@@ -4099,7 +4155,7 @@
|
|
| 4099 |
|
| 4100 |
$.unsubscribeTo = function (instance, name) {
|
| 4101 |
deprecated();
|
| 4102 |
-
if (!(instance instanceof parsley_field) && !(instance instanceof
|
| 4103 |
instance.off(eventName(name));
|
| 4104 |
};
|
| 4105 |
|
|
@@ -4119,7 +4175,7 @@
|
|
| 4119 |
var _instance;
|
| 4120 |
|
| 4121 |
deprecated();
|
| 4122 |
-
var instanceGiven = instance instanceof parsley_field || instance instanceof
|
| 4123 |
var args = Array.prototype.slice.call(arguments, instanceGiven ? 2 : 1);
|
| 4124 |
args.unshift(eventName(name));
|
| 4125 |
if (!instanceGiven) {
|
|
@@ -4227,7 +4283,7 @@
|
|
| 4227 |
});
|
| 4228 |
|
| 4229 |
window.ParsleyExtend.addAsyncValidator = function () {
|
| 4230 |
-
|
| 4231 |
return Parsley.addAsyncValidator.apply(Parsley, arguments);
|
| 4232 |
};
|
| 4233 |
|
| 1945 |
|
| 1946 |
/* WEBPACK VAR INJECTION */(function(global) {/*!
|
| 1947 |
* Parsley.js
|
| 1948 |
+
* Version 2.7.0 - built Wed, Mar 1st 2017, 3:53 pm
|
| 1949 |
* http://parsleyjs.org
|
| 1950 |
* Guillaume Potier - <guillaume@wisembly.com>
|
| 1951 |
* Marc-Andre Lafortune - <petroselinum@marc-andre.ca>
|
| 1957 |
//
|
| 1958 |
var _slice = Array.prototype.slice;
|
| 1959 |
|
| 1960 |
+
var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();
|
| 1961 |
+
|
| 1962 |
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
|
| 1963 |
|
| 1964 |
(function (global, factory) {
|
| 1969 |
var globalID = 1;
|
| 1970 |
var pastWarnings = {};
|
| 1971 |
|
| 1972 |
+
var Utils__Utils = {
|
| 1973 |
// Parsley DOM-API
|
| 1974 |
// returns object from dom attributes and values
|
| 1975 |
attr: function attr($element, namespace, obj) {
|
| 2056 |
return string.replace(/^\s+|\s+$/g, '');
|
| 2057 |
},
|
| 2058 |
|
| 2059 |
+
parse: {
|
| 2060 |
+
date: function date(string) {
|
| 2061 |
+
var parsed = string.match(/^(\d{4,})-(\d\d)-(\d\d)$/);
|
| 2062 |
+
if (!parsed) return null;
|
| 2063 |
+
|
| 2064 |
+
var _parsed$map = parsed.map(function (x) {
|
| 2065 |
+
return parseInt(x, 10);
|
| 2066 |
+
});
|
| 2067 |
+
|
| 2068 |
+
var _parsed$map2 = _slicedToArray(_parsed$map, 4);
|
| 2069 |
+
|
| 2070 |
+
var _ = _parsed$map2[0];
|
| 2071 |
+
var year = _parsed$map2[1];
|
| 2072 |
+
var month = _parsed$map2[2];
|
| 2073 |
+
var day = _parsed$map2[3];
|
| 2074 |
+
|
| 2075 |
+
var date = new Date(year, month - 1, day);
|
| 2076 |
+
if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) return null;
|
| 2077 |
+
return date;
|
| 2078 |
+
},
|
| 2079 |
+
string: function string(_string) {
|
| 2080 |
+
return _string;
|
| 2081 |
+
},
|
| 2082 |
+
integer: function integer(string) {
|
| 2083 |
+
if (isNaN(string)) return null;
|
| 2084 |
+
return parseInt(string, 10);
|
| 2085 |
+
},
|
| 2086 |
+
number: function number(string) {
|
| 2087 |
+
if (isNaN(string)) throw null;
|
| 2088 |
+
return parseFloat(string);
|
| 2089 |
+
},
|
| 2090 |
+
'boolean': function _boolean(string) {
|
| 2091 |
+
return !/^\s*false\s*$/i.test(string);
|
| 2092 |
+
},
|
| 2093 |
+
object: function object(string) {
|
| 2094 |
+
return Utils__Utils.deserializeValue(string);
|
| 2095 |
+
},
|
| 2096 |
+
regexp: function regexp(_regexp) {
|
| 2097 |
+
var flags = '';
|
| 2098 |
+
|
| 2099 |
+
// Test if RegExp is literal, if not, nothing to be done, otherwise, we need to isolate flags and pattern
|
| 2100 |
+
if (/^\/.*\/(?:[gimy]*)$/.test(_regexp)) {
|
| 2101 |
+
// Replace the regexp literal string with the first match group: ([gimy]*)
|
| 2102 |
+
// If no flag is present, this will be a blank string
|
| 2103 |
+
flags = _regexp.replace(/.*\/([gimy]*)$/, '$1');
|
| 2104 |
+
// Again, replace the regexp literal string with the first match group:
|
| 2105 |
+
// everything excluding the opening and closing slashes and the flags
|
| 2106 |
+
_regexp = _regexp.replace(new RegExp('^/(.*?)/' + flags + '$'), '$1');
|
| 2107 |
+
} else {
|
| 2108 |
+
// Anchor regexp:
|
| 2109 |
+
_regexp = '^' + _regexp + '$';
|
| 2110 |
+
}
|
| 2111 |
+
return new RegExp(_regexp, flags);
|
| 2112 |
+
}
|
| 2113 |
+
},
|
| 2114 |
+
|
| 2115 |
+
parseRequirement: function parseRequirement(requirementType, string) {
|
| 2116 |
+
var converter = this.parse[requirementType || 'string'];
|
| 2117 |
+
if (!converter) throw 'Unknown requirement specification: "' + requirementType + '"';
|
| 2118 |
+
var converted = converter(string);
|
| 2119 |
+
if (converted === null) throw 'Requirement is not a ' + requirementType + ': "' + string + '"';
|
| 2120 |
+
return converted;
|
| 2121 |
+
},
|
| 2122 |
+
|
| 2123 |
namespaceEvents: function namespaceEvents(events, namespace) {
|
| 2124 |
events = this.trimString(events || '').split(/\s+/);
|
| 2125 |
if (!events[0]) return '';
|
| 2163 |
_SubmitSelector: 'input[type="submit"], button:submit'
|
| 2164 |
};
|
| 2165 |
|
| 2166 |
+
var Utils__default = Utils__Utils;
|
| 2167 |
|
| 2168 |
// All these options could be overriden and specified directly in DOM using
|
| 2169 |
// `data-parsley-` default DOM-API
|
| 2170 |
// eg: `inputs` can be set in DOM using `data-parsley-inputs="input, textarea"`
|
| 2171 |
// eg: `data-parsley-stop-on-first-failing-constraint="false"`
|
| 2172 |
|
| 2173 |
+
var Defaults = {
|
| 2174 |
// ### General
|
| 2175 |
|
| 2176 |
// Default data-namespace for DOM API
|
| 2217 |
|
| 2218 |
// Return the `$element` that will receive these above success or error classes
|
| 2219 |
// Could also be (and given directly from DOM) a valid selector like `'#div'`
|
| 2220 |
+
classHandler: function classHandler(Field) {},
|
| 2221 |
|
| 2222 |
// Return the `$element` where errors will be appended
|
| 2223 |
// Could also be (and given directly from DOM) a valid selector like `'#div'`
|
| 2224 |
+
errorsContainer: function errorsContainer(Field) {},
|
| 2225 |
|
| 2226 |
// ul elem that would receive errors' list
|
| 2227 |
errorsWrapper: '<ul class="parsley-errors-list"></ul>',
|
| 2230 |
errorTemplate: '<li></li>'
|
| 2231 |
};
|
| 2232 |
|
| 2233 |
+
var Base = function Base() {
|
| 2234 |
+
this.__id__ = Utils__default.generateID();
|
| 2235 |
};
|
| 2236 |
|
| 2237 |
+
Base.prototype = {
|
| 2238 |
asyncSupport: true, // Deprecated
|
| 2239 |
|
| 2240 |
_pipeAccordingToValidationResult: function _pipeAccordingToValidationResult() {
|
| 2249 |
},
|
| 2250 |
|
| 2251 |
actualizeOptions: function actualizeOptions() {
|
| 2252 |
+
Utils__default.attr(this.$element, this.options.namespace, this.domOptions);
|
| 2253 |
if (this.parent && this.parent.actualizeOptions) this.parent.actualizeOptions();
|
| 2254 |
return this;
|
| 2255 |
},
|
| 2256 |
|
| 2257 |
_resetOptions: function _resetOptions(initOptions) {
|
| 2258 |
+
this.domOptions = Utils__default.objectCreate(this.parent.options);
|
| 2259 |
+
this.options = Utils__default.objectCreate(this.domOptions);
|
| 2260 |
// Shallow copy of ownProperties of initOptions:
|
| 2261 |
for (var i in initOptions) {
|
| 2262 |
if (initOptions.hasOwnProperty(i)) this.options[i] = initOptions[i];
|
| 2322 |
},
|
| 2323 |
|
| 2324 |
asyncIsValid: function asyncIsValid(group, force) {
|
| 2325 |
+
Utils__default.warnOnce("asyncIsValid is deprecated; please use whenValid instead");
|
| 2326 |
return this.whenValid({ group: group, force: force });
|
| 2327 |
},
|
| 2328 |
|
| 2331 |
}
|
| 2332 |
};
|
| 2333 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2334 |
var convertArrayRequirement = function convertArrayRequirement(string, length) {
|
| 2335 |
var m = string.match(/^\s*\[(.*)\]\s*$/);
|
| 2336 |
if (!m) throw 'Requirement is not an array: "' + string + '"';
|
| 2337 |
+
var values = m[1].split(',').map(Utils__default.trimString);
|
| 2338 |
if (values.length !== length) throw 'Requirement has ' + values.length + ' values when ' + length + ' are needed';
|
| 2339 |
return values;
|
| 2340 |
};
|
| 2341 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2342 |
var convertExtraOptionRequirement = function convertExtraOptionRequirement(requirementSpec, string, extraOptionReader) {
|
| 2343 |
var main = null;
|
| 2344 |
var extra = {};
|
| 2345 |
for (var key in requirementSpec) {
|
| 2346 |
if (key) {
|
| 2347 |
var value = extraOptionReader(key);
|
| 2348 |
+
if ('string' === typeof value) value = Utils__default.parseRequirement(requirementSpec[key], value);
|
| 2349 |
extra[key] = value;
|
| 2350 |
} else {
|
| 2351 |
+
main = Utils__default.parseRequirement(requirementSpec[key], string);
|
| 2352 |
}
|
| 2353 |
}
|
| 2354 |
return [main, extra];
|
| 2356 |
|
| 2357 |
// A Validator needs to implement the methods `validate` and `parseRequirements`
|
| 2358 |
|
| 2359 |
+
var Validator = function Validator(spec) {
|
| 2360 |
$.extend(true, this, spec);
|
| 2361 |
};
|
| 2362 |
|
| 2363 |
+
Validator.prototype = {
|
| 2364 |
// Returns `true` iff the given `value` is valid according the given requirements.
|
| 2365 |
validate: function validate(value, requirementFirstArg) {
|
| 2366 |
if (this.fn) {
|
| 2375 |
if (!this.validateMultiple) throw 'Validator `' + this.name + '` does not handle multiple values';
|
| 2376 |
return this.validateMultiple.apply(this, arguments);
|
| 2377 |
} else {
|
| 2378 |
+
var instance = arguments[arguments.length - 1];
|
| 2379 |
+
if (this.validateDate && instance._isDateInput()) {
|
| 2380 |
+
arguments[0] = Utils__default.parse.date(arguments[0]);
|
| 2381 |
+
if (arguments[0] === null) return false;
|
| 2382 |
+
return this.validateDate.apply(this, arguments);
|
| 2383 |
+
}
|
| 2384 |
if (this.validateNumber) {
|
| 2385 |
if (isNaN(value)) return false;
|
| 2386 |
arguments[0] = parseFloat(arguments[0]);
|
| 2404 |
var type = this.requirementType;
|
| 2405 |
if ($.isArray(type)) {
|
| 2406 |
var values = convertArrayRequirement(requirements, type.length);
|
| 2407 |
+
for (var i = 0; i < values.length; i++) values[i] = Utils__default.parseRequirement(type[i], values[i]);
|
| 2408 |
return values;
|
| 2409 |
} else if ($.isPlainObject(type)) {
|
| 2410 |
return convertExtraOptionRequirement(type, requirements, extraOptionReader);
|
| 2411 |
} else {
|
| 2412 |
+
return [Utils__default.parseRequirement(type, requirements)];
|
| 2413 |
}
|
| 2414 |
},
|
| 2415 |
// Defaults:
|
| 2419 |
|
| 2420 |
};
|
| 2421 |
|
| 2422 |
+
var ValidatorRegistry = function ValidatorRegistry(validators, catalog) {
|
| 2423 |
+
this.__class__ = 'ValidatorRegistry';
|
| 2424 |
|
| 2425 |
// Default Parsley locale is en
|
| 2426 |
this.locale = 'en';
|
| 2428 |
this.init(validators || {}, catalog || {});
|
| 2429 |
};
|
| 2430 |
|
| 2431 |
+
var typeTesters = {
|
| 2432 |
email: /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,
|
| 2433 |
|
| 2434 |
// Follow https://www.w3.org/TR/html5/infrastructure.html#floating-point-numbers
|
| 2440 |
|
| 2441 |
alphanum: /^\w+$/i,
|
| 2442 |
|
| 2443 |
+
date: {
|
| 2444 |
+
test: function test(value) {
|
| 2445 |
+
return Utils__default.parse.date(value) !== null;
|
| 2446 |
+
}
|
| 2447 |
+
},
|
| 2448 |
+
|
| 2449 |
url: new RegExp("^" +
|
| 2450 |
// protocol identifier
|
| 2451 |
"(?:(?:https?|ftp)://)?" + // ** mod: make scheme optional
|
| 2473 |
// resource path
|
| 2474 |
"(?:/\\S*)?" + "$", 'i')
|
| 2475 |
};
|
| 2476 |
+
typeTesters.range = typeTesters.number;
|
| 2477 |
|
| 2478 |
// See http://stackoverflow.com/a/10454560/8279
|
| 2479 |
var decimalPlaces = function decimalPlaces(num) {
|
| 2488 |
match[2] ? +match[2] : 0));
|
| 2489 |
};
|
| 2490 |
|
| 2491 |
+
// parseArguments('number', ['1', '2']) => [1, 2]
|
| 2492 |
+
var ValidatorRegistry__parseArguments = function ValidatorRegistry__parseArguments(type, args) {
|
| 2493 |
+
return args.map(Utils__default.parse[type]);
|
| 2494 |
+
};
|
| 2495 |
+
// operatorToValidator returns a validating function for an operator function, applied to the given type
|
| 2496 |
+
var ValidatorRegistry__operatorToValidator = function ValidatorRegistry__operatorToValidator(type, operator) {
|
| 2497 |
+
return function (value) {
|
| 2498 |
+
for (var _len = arguments.length, requirementsAndInput = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
| 2499 |
+
requirementsAndInput[_key - 1] = arguments[_key];
|
| 2500 |
+
}
|
| 2501 |
+
|
| 2502 |
+
requirementsAndInput.pop(); // Get rid of `input` argument
|
| 2503 |
+
return operator.apply(undefined, [value].concat(_toConsumableArray(ValidatorRegistry__parseArguments(type, requirementsAndInput))));
|
| 2504 |
+
};
|
| 2505 |
+
};
|
| 2506 |
+
|
| 2507 |
+
var ValidatorRegistry__comparisonOperator = function ValidatorRegistry__comparisonOperator(operator) {
|
| 2508 |
+
return {
|
| 2509 |
+
validateDate: ValidatorRegistry__operatorToValidator('date', operator),
|
| 2510 |
+
validateNumber: ValidatorRegistry__operatorToValidator('number', operator),
|
| 2511 |
+
requirementType: operator.length <= 2 ? 'string' : ['string', 'string'], // Support operators with a 1 or 2 requirement(s)
|
| 2512 |
+
priority: 30
|
| 2513 |
+
};
|
| 2514 |
+
};
|
| 2515 |
+
|
| 2516 |
+
ValidatorRegistry.prototype = {
|
| 2517 |
init: function init(validators, catalog) {
|
| 2518 |
this.catalog = catalog;
|
| 2519 |
// Copy prototype's validators:
|
| 2573 |
// Old API was addValidator(name, function, priority)
|
| 2574 |
//
|
| 2575 |
addValidator: function addValidator(name, arg1, arg2) {
|
| 2576 |
+
if (this.validators[name]) Utils__default.warn('Validator "' + name + '" is already defined.');else if (Defaults.hasOwnProperty(name)) {
|
| 2577 |
+
Utils__default.warn('"' + name + '" is a restricted keyword and is not a valid validator name.');
|
| 2578 |
return;
|
| 2579 |
}
|
| 2580 |
return this._setValidator.apply(this, arguments);
|
| 2582 |
|
| 2583 |
updateValidator: function updateValidator(name, arg1, arg2) {
|
| 2584 |
if (!this.validators[name]) {
|
| 2585 |
+
Utils__default.warn('Validator "' + name + '" is not already defined.');
|
| 2586 |
return this.addValidator.apply(this, arguments);
|
| 2587 |
}
|
| 2588 |
return this._setValidator.apply(this, arguments);
|
| 2589 |
},
|
| 2590 |
|
| 2591 |
removeValidator: function removeValidator(name) {
|
| 2592 |
+
if (!this.validators[name]) Utils__default.warn('Validator "' + name + '" is not defined.');
|
| 2593 |
|
| 2594 |
delete this.validators[name];
|
| 2595 |
|
| 2605 |
};
|
| 2606 |
}
|
| 2607 |
if (!validator.validate) {
|
| 2608 |
+
validator = new Validator(validator);
|
| 2609 |
}
|
| 2610 |
this.validators[name] = validator;
|
| 2611 |
|
| 2671 |
var _ref$base = _ref.base;
|
| 2672 |
var base = _ref$base === undefined ? 0 : _ref$base;
|
| 2673 |
|
| 2674 |
+
var tester = typeTesters[type];
|
| 2675 |
+
if (!tester) {
|
| 2676 |
throw new Error('validator type `' + type + '` is not supported');
|
| 2677 |
}
|
| 2678 |
+
if (!tester.test(value)) return false;
|
| 2679 |
if ('number' === type) {
|
| 2680 |
if (!/^any$/i.test(step || '')) {
|
| 2681 |
var nb = Number(value);
|
| 2747 |
requirementType: ['integer', 'integer'],
|
| 2748 |
priority: 30
|
| 2749 |
},
|
| 2750 |
+
min: ValidatorRegistry__comparisonOperator(function (value, requirement) {
|
| 2751 |
+
return value >= requirement;
|
| 2752 |
+
}),
|
| 2753 |
+
max: ValidatorRegistry__comparisonOperator(function (value, requirement) {
|
| 2754 |
+
return value <= requirement;
|
| 2755 |
+
}),
|
| 2756 |
+
range: ValidatorRegistry__comparisonOperator(function (value, min, max) {
|
| 2757 |
+
return value >= min && value <= max;
|
| 2758 |
+
}),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2759 |
equalto: {
|
| 2760 |
validateString: function validateString(value, refOrValue) {
|
| 2761 |
var $reference = $(refOrValue);
|
| 2766 |
}
|
| 2767 |
};
|
| 2768 |
|
| 2769 |
+
var UI = {};
|
| 2770 |
|
| 2771 |
var diffResults = function diffResults(newResult, oldResult, deep) {
|
| 2772 |
var added = [];
|
| 2790 |
};
|
| 2791 |
};
|
| 2792 |
|
| 2793 |
+
UI.Form = {
|
| 2794 |
|
| 2795 |
_actualizeTriggers: function _actualizeTriggers() {
|
| 2796 |
var _this2 = this;
|
| 2798 |
this.$element.on('submit.Parsley', function (evt) {
|
| 2799 |
_this2.onSubmitValidate(evt);
|
| 2800 |
});
|
| 2801 |
+
this.$element.on('click.Parsley', Utils__default._SubmitSelector, function (evt) {
|
| 2802 |
_this2.onSubmitButton(evt);
|
| 2803 |
});
|
| 2804 |
|
| 2833 |
|
| 2834 |
};
|
| 2835 |
|
| 2836 |
+
UI.Field = {
|
| 2837 |
|
| 2838 |
_reflowUI: function _reflowUI() {
|
| 2839 |
this._buildUI();
|
| 3029 |
if (0 !== this._ui.$errorsWrapper.parent().length) return this._ui.$errorsWrapper.parent();
|
| 3030 |
|
| 3031 |
if ('string' === typeof this.options.errorsContainer) {
|
| 3032 |
+
if ($(this.options.errorsContainer).length) return $(this.options.errorsContainer).append(this._ui.$errorsWrapper);else Utils__default.warn('The errors container `' + this.options.errorsContainer + '` does not exist in DOM');
|
| 3033 |
} else if ('function' === typeof this.options.errorsContainer) $errorsContainer = this.options.errorsContainer.call(this, this);
|
| 3034 |
|
| 3035 |
if ('undefined' !== typeof $errorsContainer && $errorsContainer.length) return $errorsContainer.append(this._ui.$errorsWrapper);
|
| 3045 |
|
| 3046 |
// Remove Parsley events already bound on this field
|
| 3047 |
$toBind.off('.Parsley');
|
| 3048 |
+
if (this._failedOnce) $toBind.on(Utils__default.namespaceEvents(this.options.triggerAfterFailure, 'Parsley'), function () {
|
| 3049 |
_this3._validateIfNeeded();
|
| 3050 |
+
});else if (trigger = Utils__default.namespaceEvents(this.options.trigger, 'Parsley')) {
|
| 3051 |
$toBind.on(trigger, function (event) {
|
| 3052 |
_this3._validateIfNeeded(event);
|
| 3053 |
});
|
| 3110 |
}
|
| 3111 |
};
|
| 3112 |
|
| 3113 |
+
var Form = function Form(element, domOptions, options) {
|
| 3114 |
+
this.__class__ = 'Form';
|
| 3115 |
|
| 3116 |
this.$element = $(element);
|
| 3117 |
this.domOptions = domOptions;
|
| 3122 |
this.validationResult = null;
|
| 3123 |
};
|
| 3124 |
|
| 3125 |
+
var Form__statusMapping = { pending: null, resolved: true, rejected: false };
|
| 3126 |
|
| 3127 |
+
Form.prototype = {
|
| 3128 |
onSubmitValidate: function onSubmitValidate(event) {
|
| 3129 |
var _this5 = this;
|
| 3130 |
|
| 3132 |
if (true === event.parsley) return;
|
| 3133 |
|
| 3134 |
// If we didn't come here through a submit button, use the first one in the form
|
| 3135 |
+
var $submitSource = this._$submitSource || this.$element.find(Utils__default._SubmitSelector).first();
|
| 3136 |
this._$submitSource = null;
|
| 3137 |
this.$element.find('.parsley-synthetic-submit-button').prop('disabled', true);
|
| 3138 |
if ($submitSource.is('[formnovalidate]')) return;
|
| 3180 |
// Consider using `whenValidate` instead.
|
| 3181 |
validate: function validate(options) {
|
| 3182 |
if (arguments.length >= 1 && !$.isPlainObject(options)) {
|
| 3183 |
+
Utils__default.warnOnce('Calling validate on a parsley form without passing arguments as an object is deprecated.');
|
| 3184 |
|
| 3185 |
var _arguments = _slice.call(arguments);
|
| 3186 |
|
| 3190 |
|
| 3191 |
options = { group: group, force: force, event: event };
|
| 3192 |
}
|
| 3193 |
+
return Form__statusMapping[this.whenValidate(options).state()];
|
| 3194 |
},
|
| 3195 |
|
| 3196 |
whenValidate: function whenValidate() {
|
| 3197 |
+
var _Utils__default$all$done$fail$always,
|
| 3198 |
_this6 = this;
|
| 3199 |
|
| 3200 |
var _ref7 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
|
| 3206 |
this.submitEvent = event;
|
| 3207 |
if (event) {
|
| 3208 |
this.submitEvent = $.extend({}, event, { preventDefault: function preventDefault() {
|
| 3209 |
+
Utils__default.warnOnce("Using `this.submitEvent.preventDefault()` is deprecated; instead, call `this.validationResult = false`");
|
| 3210 |
_this6.validationResult = false;
|
| 3211 |
} });
|
| 3212 |
}
|
| 3224 |
});
|
| 3225 |
});
|
| 3226 |
|
| 3227 |
+
return (_Utils__default$all$done$fail$always = Utils__default.all(promises).done(function () {
|
| 3228 |
_this6._trigger('success');
|
| 3229 |
}).fail(function () {
|
| 3230 |
_this6.validationResult = false;
|
| 3232 |
_this6._trigger('error');
|
| 3233 |
}).always(function () {
|
| 3234 |
_this6._trigger('validated');
|
| 3235 |
+
})).pipe.apply(_Utils__default$all$done$fail$always, _toConsumableArray(this._pipeAccordingToValidationResult()));
|
| 3236 |
},
|
| 3237 |
|
| 3238 |
// Iterate over refreshed fields, and stop on first failure.
|
| 3241 |
// Prefer using `whenValid` instead.
|
| 3242 |
isValid: function isValid(options) {
|
| 3243 |
if (arguments.length >= 1 && !$.isPlainObject(options)) {
|
| 3244 |
+
Utils__default.warnOnce('Calling isValid on a parsley form without passing arguments as an object is deprecated.');
|
| 3245 |
|
| 3246 |
var _arguments2 = _slice.call(arguments);
|
| 3247 |
|
| 3250 |
|
| 3251 |
options = { group: group, force: force };
|
| 3252 |
}
|
| 3253 |
+
return Form__statusMapping[this.whenValid(options).state()];
|
| 3254 |
},
|
| 3255 |
|
| 3256 |
// Iterate over refreshed fields and validate them.
|
| 3271 |
return field.whenValid({ group: group, force: force });
|
| 3272 |
});
|
| 3273 |
});
|
| 3274 |
+
return Utils__default.all(promises);
|
| 3275 |
},
|
| 3276 |
|
| 3277 |
// Reset UI
|
| 3310 |
_this8.$element.find(_this8.options.inputs).not(_this8.options.excluded).each(function (_, element) {
|
| 3311 |
var fieldInstance = new window.Parsley.Factory(element, {}, _this8);
|
| 3312 |
|
| 3313 |
+
// Only add valid and not excluded `Field` and `FieldMultiple` children
|
| 3314 |
+
if (('Field' === fieldInstance.__class__ || 'FieldMultiple' === fieldInstance.__class__) && true !== fieldInstance.options.excluded) {
|
| 3315 |
var uniqueId = fieldInstance.__class__ + '-' + fieldInstance.__id__;
|
| 3316 |
if ('undefined' === typeof _this8.fieldsMappedById[uniqueId]) {
|
| 3317 |
_this8.fieldsMappedById[uniqueId] = fieldInstance;
|
| 3320 |
}
|
| 3321 |
});
|
| 3322 |
|
| 3323 |
+
$.each(Utils__default.difference(oldFields, _this8.fields), function (_, field) {
|
| 3324 |
field.reset();
|
| 3325 |
});
|
| 3326 |
});
|
| 3355 |
|
| 3356 |
var Constraint = function Constraint(parsleyField, name, requirements, priority, isDomConstraint) {
|
| 3357 |
var validatorSpec = window.Parsley._validatorRegistry.validators[name];
|
| 3358 |
+
var validator = new Validator(validatorSpec);
|
| 3359 |
|
| 3360 |
$.extend(this, {
|
| 3361 |
validator: validator,
|
| 3388 |
}
|
| 3389 |
};
|
| 3390 |
|
| 3391 |
+
var Field = function Field(field, domOptions, options, parsleyFormInstance) {
|
| 3392 |
+
this.__class__ = 'Field';
|
| 3393 |
|
| 3394 |
this.$element = $(field);
|
| 3395 |
|
| 3412 |
|
| 3413 |
var parsley_field__statusMapping = { pending: null, resolved: true, rejected: false };
|
| 3414 |
|
| 3415 |
+
Field.prototype = {
|
| 3416 |
// # Public API
|
| 3417 |
+
// Validate field and trigger some events for mainly `UI`
|
| 3418 |
// @returns `true`, an array of the validators that failed, or
|
| 3419 |
// `null` if validation is not finished. Prefer using whenValidate
|
| 3420 |
validate: function validate(options) {
|
| 3421 |
if (arguments.length >= 1 && !$.isPlainObject(options)) {
|
| 3422 |
+
Utils__default.warnOnce('Calling validate on a parsley field without passing arguments as an object is deprecated.');
|
| 3423 |
options = { options: options };
|
| 3424 |
}
|
| 3425 |
var promise = this.whenValidate(options);
|
| 3435 |
}
|
| 3436 |
},
|
| 3437 |
|
| 3438 |
+
// Validate field and trigger some events for mainly `UI`
|
| 3439 |
// @returns a promise that succeeds only when all validations do
|
| 3440 |
// or `undefined` if field is not in the given `group`.
|
| 3441 |
whenValidate: function whenValidate() {
|
| 3493 |
// See also `whenValid`.
|
| 3494 |
isValid: function isValid(options) {
|
| 3495 |
if (arguments.length >= 1 && !$.isPlainObject(options)) {
|
| 3496 |
+
Utils__default.warnOnce('Calling isValid on a parsley field without passing arguments as an object is deprecated.');
|
| 3497 |
|
| 3498 |
var _arguments3 = _slice.call(arguments);
|
| 3499 |
|
| 3544 |
$.each(groupedConstraints, function (_, constraints) {
|
| 3545 |
// Process one group of constraints at a time, we validate the constraints
|
| 3546 |
// and combine the promises together.
|
| 3547 |
+
var promise = Utils__default.all($.map(constraints, function (constraint) {
|
| 3548 |
return _this11._validateConstraint(value, constraint);
|
| 3549 |
}));
|
| 3550 |
promises.push(promise);
|
| 3551 |
if (promise.state() === 'rejected') return false; // Interrupt processing if a group has already failed
|
| 3552 |
});
|
| 3553 |
+
return Utils__default.all(promises);
|
| 3554 |
},
|
| 3555 |
|
| 3556 |
// @returns a promise
|
| 3561 |
// Map false to a failed promise
|
| 3562 |
if (false === result) result = $.Deferred().reject();
|
| 3563 |
// Make sure we return a promise and that we record failures
|
| 3564 |
+
return Utils__default.all([result]).fail(function (errorMessage) {
|
| 3565 |
if (!(_this12.validationResult instanceof Array)) _this12.validationResult = [];
|
| 3566 |
_this12.validationResult.push({
|
| 3567 |
assert: constraint,
|
| 3594 |
// Field case: emit destroy event to clean UI and then destroy stored instance
|
| 3595 |
this._destroyUI();
|
| 3596 |
this.$element.removeData('Parsley');
|
| 3597 |
+
this.$element.removeData('FieldMultiple');
|
| 3598 |
this._trigger('destroy');
|
| 3599 |
},
|
| 3600 |
|
| 3676 |
if ('string' === typeof this.$element.attr('pattern')) this.addConstraint('pattern', this.$element.attr('pattern'), undefined, true);
|
| 3677 |
|
| 3678 |
// range
|
| 3679 |
+
if ('undefined' !== typeof this.$element.attr('min') && 'undefined' !== typeof this.$element.attr('max')) this.addConstraint('range', [this.$element.attr('min'), this.$element.attr('max')], undefined, true);
|
| 3680 |
|
| 3681 |
// HTML5 min
|
| 3682 |
+
else if ('undefined' !== typeof this.$element.attr('min')) this.addConstraint('min', this.$element.attr('min'), undefined, true);
|
| 3683 |
|
| 3684 |
// HTML5 max
|
| 3685 |
+
else if ('undefined' !== typeof this.$element.attr('max')) this.addConstraint('max', this.$element.attr('max'), undefined, true);
|
| 3686 |
|
| 3687 |
// length
|
| 3688 |
if ('undefined' !== typeof this.$element.attr('minlength') && 'undefined' !== typeof this.$element.attr('maxlength')) this.addConstraint('length', [this.$element.attr('minlength'), this.$element.attr('maxlength')], undefined, true);
|
| 3705 |
base: this.$element.attr('min') || this.$element.attr('value')
|
| 3706 |
}], undefined, true);
|
| 3707 |
// Regular other HTML5 supported types
|
| 3708 |
+
} else if (/^(email|url|range|date)$/i.test(type)) {
|
| 3709 |
return this.addConstraint('type', type, undefined, true);
|
| 3710 |
}
|
| 3711 |
return this;
|
| 3730 |
// Use `data-parsley-whitespace="squish"` to auto squish input value
|
| 3731 |
// Use `data-parsley-whitespace="trim"` to auto trim input value
|
| 3732 |
_handleWhitespace: function _handleWhitespace(value) {
|
| 3733 |
+
if (true === this.options.trimValue) Utils__default.warnOnce('data-parsley-trim-value="true" is deprecated, please use data-parsley-whitespace="trim"');
|
| 3734 |
|
| 3735 |
if ('squish' === this.options.whitespace) value = value.replace(/\s{2,}/g, ' ');
|
| 3736 |
|
| 3737 |
+
if ('trim' === this.options.whitespace || 'squish' === this.options.whitespace || true === this.options.trimValue) value = Utils__default.trimString(value);
|
| 3738 |
|
| 3739 |
return value;
|
| 3740 |
},
|
| 3741 |
|
| 3742 |
+
_isDateInput: function _isDateInput() {
|
| 3743 |
+
var c = this.constraintsByName.type;
|
| 3744 |
+
return c && c.requirements === 'date';
|
| 3745 |
+
},
|
| 3746 |
+
|
| 3747 |
// Internal only.
|
| 3748 |
// Returns the constraints, grouped by descending priority.
|
| 3749 |
// The result is thus an array of arrays of constraints.
|
| 3769 |
|
| 3770 |
};
|
| 3771 |
|
| 3772 |
+
var parsley_field = Field;
|
| 3773 |
|
| 3774 |
+
var Multiple = function Multiple() {
|
| 3775 |
+
this.__class__ = 'FieldMultiple';
|
| 3776 |
};
|
| 3777 |
|
| 3778 |
+
Multiple.prototype = {
|
| 3779 |
// Add new `$element` sibling for multiple field
|
| 3780 |
addElement: function addElement($element) {
|
| 3781 |
this.$elements.push($element);
|
| 3783 |
return this;
|
| 3784 |
},
|
| 3785 |
|
| 3786 |
+
// See `Field.refreshConstraints()`
|
| 3787 |
refreshConstraints: function refreshConstraints() {
|
| 3788 |
var fieldConstraints;
|
| 3789 |
|
| 3805 |
continue;
|
| 3806 |
}
|
| 3807 |
|
| 3808 |
+
fieldConstraints = this.$elements[i].data('FieldMultiple').refreshConstraints().constraints;
|
| 3809 |
|
| 3810 |
for (var j = 0; j < fieldConstraints.length; j++) this.addConstraint(fieldConstraints[j].name, fieldConstraints[j].requirements, fieldConstraints[j].priority, fieldConstraints[j].isDomConstraint);
|
| 3811 |
}
|
| 3813 |
return this;
|
| 3814 |
},
|
| 3815 |
|
| 3816 |
+
// See `Field.getValue()`
|
| 3817 |
getValue: function getValue() {
|
| 3818 |
// Value could be overriden in DOM
|
| 3819 |
if ('function' === typeof this.options.value) return this.options.value(this);else if ('undefined' !== typeof this.options.value) return this.options.value;
|
| 3846 |
}
|
| 3847 |
};
|
| 3848 |
|
| 3849 |
+
var Factory = function Factory(element, options, parsleyFormInstance) {
|
| 3850 |
this.$element = $(element);
|
| 3851 |
|
| 3852 |
// If the element has already been bound, returns its saved Parsley instance
|
| 3853 |
var savedparsleyFormInstance = this.$element.data('Parsley');
|
| 3854 |
if (savedparsleyFormInstance) {
|
| 3855 |
|
| 3856 |
+
// If the saved instance has been bound without a Form parent and there is one given in this call, add it
|
| 3857 |
if ('undefined' !== typeof parsleyFormInstance && savedparsleyFormInstance.parent === window.Parsley) {
|
| 3858 |
savedparsleyFormInstance.parent = parsleyFormInstance;
|
| 3859 |
savedparsleyFormInstance._resetOptions(savedparsleyFormInstance.options);
|
| 3869 |
// Parsley must be instantiated with a DOM element or jQuery $element
|
| 3870 |
if (!this.$element.length) throw new Error('You must bind Parsley on an existing element.');
|
| 3871 |
|
| 3872 |
+
if ('undefined' !== typeof parsleyFormInstance && 'Form' !== parsleyFormInstance.__class__) throw new Error('Parent instance must be a Form instance');
|
| 3873 |
|
| 3874 |
this.parent = parsleyFormInstance || window.Parsley;
|
| 3875 |
return this.init(options);
|
| 3876 |
};
|
| 3877 |
|
| 3878 |
+
Factory.prototype = {
|
| 3879 |
init: function init(options) {
|
| 3880 |
this.__class__ = 'Parsley';
|
| 3881 |
+
this.__version__ = '2.7.0';
|
| 3882 |
+
this.__id__ = Utils__default.generateID();
|
| 3883 |
|
| 3884 |
// Pre-compute options
|
| 3885 |
this._resetOptions(options);
|
| 3886 |
|
| 3887 |
+
// A Form instance is obviously a `<form>` element but also every node that is not an input and has the `data-parsley-validate` attribute
|
| 3888 |
+
if (this.$element.is('form') || Utils__default.checkAttr(this.$element, this.options.namespace, 'validate') && !this.$element.is(this.options.inputs)) return this.bind('parsleyForm');
|
| 3889 |
|
| 3890 |
+
// Every other element is bound as a `Field` or `FieldMultiple`
|
| 3891 |
return this.isMultiple() ? this.handleMultiple() : this.bind('parsleyField');
|
| 3892 |
},
|
| 3893 |
|
| 3915 |
|
| 3916 |
// Else for radio / checkboxes, we need a `name` or `data-parsley-multiple` to properly bind it
|
| 3917 |
} else if (!this.options.multiple) {
|
| 3918 |
+
Utils__default.warn('To be bound by Parsley, a radio, a checkbox and a multiple select input must have either a name or a multiple option.', this.$element);
|
| 3919 |
return this;
|
| 3920 |
}
|
| 3921 |
|
| 3935 |
parsleyMultipleInstance = $($previouslyRelated.get(i)).data('Parsley');
|
| 3936 |
if ('undefined' !== typeof parsleyMultipleInstance) {
|
| 3937 |
|
| 3938 |
+
if (!this.$element.data('FieldMultiple')) {
|
| 3939 |
parsleyMultipleInstance.addElement(this.$element);
|
| 3940 |
}
|
| 3941 |
|
| 3943 |
}
|
| 3944 |
}
|
| 3945 |
|
| 3946 |
+
// Create a secret Field instance for every multiple field. It will be stored in `data('FieldMultiple')`
|
| 3947 |
+
// And will be useful later to access classic `Field` stuff while being in a `FieldMultiple` instance
|
| 3948 |
this.bind('parsleyField', true);
|
| 3949 |
|
| 3950 |
return parsleyMultipleInstance || this.bind('parsleyFieldMultiple');
|
| 3951 |
},
|
| 3952 |
|
| 3953 |
+
// Return proper `Form`, `Field` or `FieldMultiple`
|
| 3954 |
bind: function bind(type, doNotStore) {
|
| 3955 |
var parsleyInstance;
|
| 3956 |
|
| 3957 |
switch (type) {
|
| 3958 |
case 'parsleyForm':
|
| 3959 |
+
parsleyInstance = $.extend(new Form(this.$element, this.domOptions, this.options), new Base(), window.ParsleyExtend)._bindFields();
|
| 3960 |
break;
|
| 3961 |
case 'parsleyField':
|
| 3962 |
+
parsleyInstance = $.extend(new parsley_field(this.$element, this.domOptions, this.options, this.parent), new Base(), window.ParsleyExtend);
|
| 3963 |
break;
|
| 3964 |
case 'parsleyFieldMultiple':
|
| 3965 |
+
parsleyInstance = $.extend(new parsley_field(this.$element, this.domOptions, this.options, this.parent), new Multiple(), new Base(), window.ParsleyExtend)._init();
|
| 3966 |
break;
|
| 3967 |
default:
|
| 3968 |
throw new Error(type + 'is not a supported Parsley type');
|
| 3969 |
}
|
| 3970 |
|
| 3971 |
+
if (this.options.multiple) Utils__default.setAttr(this.$element, this.options.namespace, 'multiple', this.options.multiple);
|
| 3972 |
|
| 3973 |
if ('undefined' !== typeof doNotStore) {
|
| 3974 |
+
this.$element.data('FieldMultiple', parsleyInstance);
|
| 3975 |
|
| 3976 |
return parsleyInstance;
|
| 3977 |
}
|
| 3979 |
// Store the freshly bound instance in a DOM element for later access using jQuery `data()`
|
| 3980 |
this.$element.data('Parsley', parsleyInstance);
|
| 3981 |
|
| 3982 |
+
// Tell the world we have a new Form or Field instance!
|
| 3983 |
parsleyInstance._actualizeTriggers();
|
| 3984 |
parsleyInstance._trigger('init');
|
| 3985 |
|
| 3992 |
throw "The loaded version of jQuery is too old. Please upgrade to 1.8.x or better.";
|
| 3993 |
}
|
| 3994 |
if (!vernums.forEach) {
|
| 3995 |
+
Utils__default.warn('Parsley requires ES5 to run properly. Please include https://github.com/es-shims/es5-shim');
|
| 3996 |
}
|
| 3997 |
// Inherit `on`, `off` & `trigger` to Parsley:
|
| 3998 |
+
var Parsley = $.extend(new Base(), {
|
| 3999 |
$element: $(document),
|
| 4000 |
actualizeOptions: null,
|
| 4001 |
_resetOptions: null,
|
| 4002 |
+
Factory: Factory,
|
| 4003 |
+
version: '2.7.0'
|
| 4004 |
});
|
| 4005 |
|
| 4006 |
+
// Supplement Field and Form with Base
|
| 4007 |
// This way, the constructors will have access to those methods
|
| 4008 |
+
$.extend(parsley_field.prototype, UI.Field, Base.prototype);
|
| 4009 |
+
$.extend(Form.prototype, UI.Form, Base.prototype);
|
| 4010 |
// Inherit actualizeOptions and _resetOptions:
|
| 4011 |
+
$.extend(Factory.prototype, Base.prototype);
|
| 4012 |
|
| 4013 |
// ### jQuery API
|
| 4014 |
// `$('.elem').parsley(options)` or `$('.elem').psly(options)`
|
| 4025 |
|
| 4026 |
// Return undefined if applied to non existing DOM element
|
| 4027 |
if (!$(this).length) {
|
| 4028 |
+
Utils__default.warn('You must bind Parsley on an existing element.');
|
| 4029 |
|
| 4030 |
return;
|
| 4031 |
}
|
| 4032 |
|
| 4033 |
+
return new Factory(this, options);
|
| 4034 |
};
|
| 4035 |
|
| 4036 |
+
// ### Field and Form extension
|
| 4037 |
// Ensure the extension is now defined if it wasn't previously
|
| 4038 |
if ('undefined' === typeof window.ParsleyExtend) window.ParsleyExtend = {};
|
| 4039 |
|
| 4040 |
// ### Parsley config
|
| 4041 |
// Inherit from ParsleyDefault, and copy over any existing values
|
| 4042 |
+
Parsley.options = $.extend(Utils__default.objectCreate(Defaults), window.ParsleyConfig);
|
| 4043 |
window.ParsleyConfig = Parsley.options; // Old way of accessing global options
|
| 4044 |
|
| 4045 |
// ### Globals
|
| 4046 |
window.Parsley = window.psly = Parsley;
|
| 4047 |
+
Parsley.Utils = Utils__default;
|
| 4048 |
+
window.ParsleyUtils = {};
|
| 4049 |
+
$.each(Utils__default, function (key, value) {
|
| 4050 |
+
if ('function' === typeof value) {
|
| 4051 |
+
window.ParsleyUtils[key] = function () {
|
| 4052 |
+
Utils__default.warnOnce('Accessing `window.ParsleyUtils` is deprecated. Use `window.Parsley.Utils` instead.');
|
| 4053 |
+
return Utils__default[key].apply(Utils__default, arguments);
|
| 4054 |
+
};
|
| 4055 |
+
}
|
| 4056 |
+
});
|
| 4057 |
|
| 4058 |
// ### Define methods that forward to the registry, and deprecate all access except through window.Parsley
|
| 4059 |
+
var registry = window.Parsley._validatorRegistry = new ValidatorRegistry(window.ParsleyConfig.validators, window.ParsleyConfig.i18n);
|
| 4060 |
window.ParsleyValidator = {};
|
| 4061 |
$.each('setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator'.split(' '), function (i, method) {
|
| 4062 |
window.Parsley[method] = $.proxy(registry, method);
|
| 4063 |
window.ParsleyValidator[method] = function () {
|
| 4064 |
var _window$Parsley;
|
| 4065 |
|
| 4066 |
+
Utils__default.warnOnce('Accessing the method \'' + method + '\' through Validator is deprecated. Simply call \'window.Parsley.' + method + '(...)\'');
|
| 4067 |
return (_window$Parsley = window.Parsley)[method].apply(_window$Parsley, arguments);
|
| 4068 |
};
|
| 4069 |
});
|
| 4070 |
|
| 4071 |
+
// ### UI
|
| 4072 |
// Deprecated global object
|
| 4073 |
+
window.Parsley.UI = UI;
|
| 4074 |
window.ParsleyUI = {
|
| 4075 |
removeError: function removeError(instance, name, doNotUpdateClass) {
|
| 4076 |
var updateClass = true !== doNotUpdateClass;
|
| 4077 |
+
Utils__default.warnOnce('Accessing UI is deprecated. Call \'removeError\' on the instance directly. Please comment in issue 1073 as to your need to call this method.');
|
| 4078 |
return instance.removeError(name, { updateClass: updateClass });
|
| 4079 |
},
|
| 4080 |
getErrorsMessages: function getErrorsMessages(instance) {
|
| 4081 |
+
Utils__default.warnOnce('Accessing UI is deprecated. Call \'getErrorsMessages\' on the instance directly.');
|
| 4082 |
return instance.getErrorsMessages();
|
| 4083 |
}
|
| 4084 |
};
|
| 4085 |
$.each('addError updateError'.split(' '), function (i, method) {
|
| 4086 |
window.ParsleyUI[method] = function (instance, name, message, assert, doNotUpdateClass) {
|
| 4087 |
var updateClass = true !== doNotUpdateClass;
|
| 4088 |
+
Utils__default.warnOnce('Accessing UI is deprecated. Call \'' + method + '\' on the instance directly. Please comment in issue 1073 as to your need to call this method.');
|
| 4089 |
return instance[method](name, { message: message, assert: assert, updateClass: updateClass });
|
| 4090 |
};
|
| 4091 |
});
|
| 4101 |
|
| 4102 |
var o = $({});
|
| 4103 |
var deprecated = function deprecated() {
|
| 4104 |
+
Utils__default.warnOnce("Parsley's pubsub module is deprecated; use the 'on' and 'off' methods on parsley instances or window.Parsley");
|
| 4105 |
};
|
| 4106 |
|
| 4107 |
// Returns an event handler that calls `fn` with the arguments it expects
|
| 4140 |
|
| 4141 |
$.listenTo = function (instance, name, fn) {
|
| 4142 |
deprecated();
|
| 4143 |
+
if (!(instance instanceof parsley_field) && !(instance instanceof Form)) throw new Error('Must give Parsley instance');
|
| 4144 |
|
| 4145 |
if ('string' !== typeof name || 'function' !== typeof fn) throw new Error('Wrong parameters');
|
| 4146 |
|
| 4155 |
|
| 4156 |
$.unsubscribeTo = function (instance, name) {
|
| 4157 |
deprecated();
|
| 4158 |
+
if (!(instance instanceof parsley_field) && !(instance instanceof Form)) throw new Error('Must give Parsley instance');
|
| 4159 |
instance.off(eventName(name));
|
| 4160 |
};
|
| 4161 |
|
| 4175 |
var _instance;
|
| 4176 |
|
| 4177 |
deprecated();
|
| 4178 |
+
var instanceGiven = instance instanceof parsley_field || instance instanceof Form;
|
| 4179 |
var args = Array.prototype.slice.call(arguments, instanceGiven ? 2 : 1);
|
| 4180 |
args.unshift(eventName(name));
|
| 4181 |
if (!instanceGiven) {
|
| 4283 |
});
|
| 4284 |
|
| 4285 |
window.ParsleyExtend.addAsyncValidator = function () {
|
| 4286 |
+
Utils.warnOnce('Accessing the method `addAsyncValidator` through an instance is deprecated. Simply call `Parsley.addAsyncValidator(...)`');
|
| 4287 |
return Parsley.addAsyncValidator.apply(Parsley, arguments);
|
| 4288 |
};
|
| 4289 |
|
lang/index.php
CHANGED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
// Silence is golden
|
lang/mailpoet-fr_FR.po
DELETED
|
@@ -1,4648 +0,0 @@
|
|
| 1 |
-
# Copyright (C) 2017
|
| 2 |
-
# This file is distributed under the same license as the package.
|
| 3 |
-
# Translators:
|
| 4 |
-
# FX Bénard <fxb@wp-translations.org>, 2015-2017
|
| 5 |
-
# FX Bénard <fxb@wp-translations.org>, 2015
|
| 6 |
-
# Ⓦolforg <contact@wolforg.eu>, 2016-2017
|
| 7 |
-
msgid ""
|
| 8 |
-
msgstr ""
|
| 9 |
-
"Project-Id-Version: MP3\n"
|
| 10 |
-
"Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
|
| 11 |
-
"POT-Creation-Date: 2017-02-02 17:45:58+00:00\n"
|
| 12 |
-
"PO-Revision-Date: 2017-02-13 09:31+0000\n"
|
| 13 |
-
"Last-Translator: Ⓦolforg <contact@wolforg.eu>\n"
|
| 14 |
-
"Language-Team: French (France) (http://www.transifex.com/wysija/mp3/language/fr_FR/)\n"
|
| 15 |
-
"MIME-Version: 1.0\n"
|
| 16 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
| 17 |
-
"Content-Transfer-Encoding: 8bit\n"
|
| 18 |
-
"Language: fr_FR\n"
|
| 19 |
-
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
| 20 |
-
"X-Generator: grunt-wp-i18n 0.5.2\n"
|
| 21 |
-
"X-Poedit-Basepath: ../\n"
|
| 22 |
-
"X-Poedit-Bookmarks: \n"
|
| 23 |
-
"X-Poedit-Country: United States\n"
|
| 24 |
-
"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
|
| 25 |
-
"X-Poedit-SearchPath-0: .\n"
|
| 26 |
-
"X-Poedit-SourceCharset: UTF-8\n"
|
| 27 |
-
"X-Textdomain-Support: yes\n"
|
| 28 |
-
|
| 29 |
-
#: lib/API/API.php:41 lib/API/API.php:67
|
| 30 |
-
msgid "Invalid request"
|
| 31 |
-
msgstr "Requête non valide."
|
| 32 |
-
|
| 33 |
-
#: lib/API/API.php:114
|
| 34 |
-
msgid "You do not have the required permissions."
|
| 35 |
-
msgstr "Vous n’avez pas les permissions nécessaires."
|
| 36 |
-
|
| 37 |
-
#: lib/API/Endpoint.php:21
|
| 38 |
-
msgid "An unknown error occurred."
|
| 39 |
-
msgstr "Une erreur inconnue s’est produite."
|
| 40 |
-
|
| 41 |
-
#: lib/API/Endpoint.php:30
|
| 42 |
-
msgid "Invalid request parameters"
|
| 43 |
-
msgstr "Paramètres de la requête non valides."
|
| 44 |
-
|
| 45 |
-
#: lib/API/Endpoints/CustomFields.php:24 lib/API/Endpoints/CustomFields.php:51
|
| 46 |
-
msgid "This custom field does not exist."
|
| 47 |
-
msgstr "Ce champ personnalisé n’existe pas."
|
| 48 |
-
|
| 49 |
-
#: lib/API/Endpoints/Forms.php:20 lib/API/Endpoints/Forms.php:127
|
| 50 |
-
#: lib/API/Endpoints/Forms.php:209 lib/API/Endpoints/Forms.php:225
|
| 51 |
-
#: lib/API/Endpoints/Forms.php:241 lib/API/Endpoints/Forms.php:255
|
| 52 |
-
msgid "This form does not exist."
|
| 53 |
-
msgstr "Ce formulaire n’existe pas."
|
| 54 |
-
|
| 55 |
-
#: lib/API/Endpoints/Forms.php:60 lib/API/Endpoints/Forms.php:139
|
| 56 |
-
msgid "New form"
|
| 57 |
-
msgstr "Nouveau formulaire"
|
| 58 |
-
|
| 59 |
-
#: lib/API/Endpoints/Forms.php:64 lib/API/Endpoints/Forms.php:68
|
| 60 |
-
#: lib/Subscribers/ImportExport/ImportExportFactory.php:32
|
| 61 |
-
#: views/newsletter/editor.html:920 views/newsletter/editor.html:921
|
| 62 |
-
msgid "Email"
|
| 63 |
-
msgstr "E-mail"
|
| 64 |
-
|
| 65 |
-
#: lib/API/Endpoints/Forms.php:74
|
| 66 |
-
msgid "Submit"
|
| 67 |
-
msgstr "Envoyer"
|
| 68 |
-
|
| 69 |
-
#: lib/API/Endpoints/Forms.php:78
|
| 70 |
-
msgid "Subscribe!"
|
| 71 |
-
msgstr "Je m’abonne !"
|
| 72 |
-
|
| 73 |
-
#: lib/API/Endpoints/Forms.php:84
|
| 74 |
-
msgid "Check your inbox or spam folder to confirm your subscription."
|
| 75 |
-
msgstr "Vérifiez votre boite de réception ou votre répertoire d’indésirables pour confirmer votre abonnement."
|
| 76 |
-
|
| 77 |
-
#: lib/API/Endpoints/Forms.php:259 lib/API/Endpoints/Newsletters.php:188
|
| 78 |
-
#: lib/API/Endpoints/Segments.php:119
|
| 79 |
-
msgid "Copy of %s"
|
| 80 |
-
msgstr "Copie de %s"
|
| 81 |
-
|
| 82 |
-
#: lib/API/Endpoints/Mailer.php:26 lib/API/Endpoints/Newsletters.php:286
|
| 83 |
-
msgid "The email could not be sent: %s"
|
| 84 |
-
msgstr "L’e-mail n’a pas pu être envoyé : %s"
|
| 85 |
-
|
| 86 |
-
#: lib/API/Endpoints/NewsletterTemplates.php:16
|
| 87 |
-
#: lib/API/Endpoints/NewsletterTemplates.php:52
|
| 88 |
-
msgid "This template does not exist."
|
| 89 |
-
msgstr "Ce modèle n’existe pas."
|
| 90 |
-
|
| 91 |
-
#: lib/API/Endpoints/Newsletters.php:28 lib/API/Endpoints/Newsletters.php:117
|
| 92 |
-
#: lib/API/Endpoints/Newsletters.php:138 lib/API/Endpoints/Newsletters.php:154
|
| 93 |
-
#: lib/API/Endpoints/Newsletters.php:170 lib/API/Endpoints/Newsletters.php:184
|
| 94 |
-
#: lib/API/Endpoints/Newsletters.php:216 lib/API/Endpoints/Newsletters.php:247
|
| 95 |
-
#: lib/API/Endpoints/SendingQueue.php:28
|
| 96 |
-
#: lib/API/Endpoints/SendingQueue.php:118
|
| 97 |
-
#: lib/API/Endpoints/SendingQueue.php:144
|
| 98 |
-
msgid "This newsletter does not exist."
|
| 99 |
-
msgstr "Cette newsletter n’existe pas."
|
| 100 |
-
|
| 101 |
-
#: lib/API/Endpoints/Newsletters.php:108
|
| 102 |
-
msgid "You need to specify a status."
|
| 103 |
-
msgstr "Vous devez spécifier un état."
|
| 104 |
-
|
| 105 |
-
#: lib/API/Endpoints/Newsletters.php:207
|
| 106 |
-
msgid "Newsletter data is missing."
|
| 107 |
-
msgstr "Les données de la newsletter sont absentes."
|
| 108 |
-
|
| 109 |
-
#: lib/API/Endpoints/Newsletters.php:238
|
| 110 |
-
msgid "Please specify receiver information."
|
| 111 |
-
msgstr "Veuillez spécifier les informations du destinataire."
|
| 112 |
-
|
| 113 |
-
#: lib/API/Endpoints/Segments.php:18 lib/API/Endpoints/Segments.php:69
|
| 114 |
-
#: lib/API/Endpoints/Segments.php:85 lib/API/Endpoints/Segments.php:101
|
| 115 |
-
#: lib/API/Endpoints/Segments.php:115
|
| 116 |
-
msgid "This list does not exist."
|
| 117 |
-
msgstr "Cette liste n’existe pas."
|
| 118 |
-
|
| 119 |
-
#: lib/API/Endpoints/SendingQueue.php:48
|
| 120 |
-
msgid "This newsletter is already being sent."
|
| 121 |
-
msgstr "Cette newsletter a déjà été envoyée."
|
| 122 |
-
|
| 123 |
-
#: lib/API/Endpoints/SendingQueue.php:82
|
| 124 |
-
msgid "There are no subscribers in that list!"
|
| 125 |
-
msgstr "Il n’y a aucun abonné dans cette liste !"
|
| 126 |
-
|
| 127 |
-
#: lib/API/Endpoints/SendingQueue.php:125
|
| 128 |
-
#: lib/API/Endpoints/SendingQueue.php:151
|
| 129 |
-
msgid "This newsletter has not been sent yet."
|
| 130 |
-
msgstr "Cette newsletter n’a pas encore été envoyée."
|
| 131 |
-
|
| 132 |
-
#: lib/API/Endpoints/Services.php:23
|
| 133 |
-
msgid "Please specify a key."
|
| 134 |
-
msgstr "Veuillez spécifier une clé."
|
| 135 |
-
|
| 136 |
-
#: lib/API/Endpoints/Services.php:39
|
| 137 |
-
msgid "Your MailPoet API key is valid!"
|
| 138 |
-
msgstr "Votre clé d’API MailPoet n’est pas valide."
|
| 139 |
-
|
| 140 |
-
#: lib/API/Endpoints/Services.php:42
|
| 141 |
-
msgid "Your MailPoet key expires on %s!"
|
| 142 |
-
msgstr "Votre clé MailPoet expire le %s !"
|
| 143 |
-
|
| 144 |
-
#: lib/API/Endpoints/Services.php:54
|
| 145 |
-
msgid "Your MailPoet key is invalid!"
|
| 146 |
-
msgstr "Votre clé MailPoet n’est pas valide !"
|
| 147 |
-
|
| 148 |
-
#: lib/API/Endpoints/Services.php:59
|
| 149 |
-
msgid "Error validating API key, please try again later (code: %s)"
|
| 150 |
-
msgstr "Erreur de validation de la clé API, veuillez réessayer ultérieurement (code : %s)"
|
| 151 |
-
|
| 152 |
-
#: lib/API/Endpoints/Settings.php:19
|
| 153 |
-
msgid "You have not specified any settings to be saved."
|
| 154 |
-
msgstr "Vous n’avez spécifié aucun réglage à enregistrer."
|
| 155 |
-
|
| 156 |
-
#: lib/API/Endpoints/Subscribers.php:25 lib/API/Endpoints/Subscribers.php:139
|
| 157 |
-
#: lib/API/Endpoints/Subscribers.php:155 lib/API/Endpoints/Subscribers.php:171
|
| 158 |
-
msgid "This subscriber does not exist."
|
| 159 |
-
msgstr "Cet abonné n’existe pas."
|
| 160 |
-
|
| 161 |
-
#: lib/API/Endpoints/Subscribers.php:66
|
| 162 |
-
msgid "Please specify a valid form ID."
|
| 163 |
-
msgstr "Veuillez spécifier un ID de formulaire valide."
|
| 164 |
-
|
| 165 |
-
#: lib/API/Endpoints/Subscribers.php:79 views/form/editor.html:57
|
| 166 |
-
msgid "Please select a list."
|
| 167 |
-
msgstr "Veuillez sélectionner une liste."
|
| 168 |
-
|
| 169 |
-
#: lib/Config/Hooks.php:149
|
| 170 |
-
msgid "MailPoet Newsletter"
|
| 171 |
-
msgstr "MailPoet Newsletter"
|
| 172 |
-
|
| 173 |
-
#: lib/Config/Menu.php:63 lib/Config/Menu.php:64 views/newsletters.html:23
|
| 174 |
-
msgid "Emails"
|
| 175 |
-
msgstr "E-mails"
|
| 176 |
-
|
| 177 |
-
#: lib/Config/Menu.php:86 lib/Config/Menu.php:87 views/forms.html:16
|
| 178 |
-
msgid "Forms"
|
| 179 |
-
msgstr "Formulaires"
|
| 180 |
-
|
| 181 |
-
#: lib/Config/Menu.php:108 lib/Config/Menu.php:109
|
| 182 |
-
#: views/subscribers/subscribers.html:17
|
| 183 |
-
msgid "Subscribers"
|
| 184 |
-
msgstr "Abonnés"
|
| 185 |
-
|
| 186 |
-
#: lib/Config/Menu.php:130 lib/Config/Menu.php:131 views/forms.html:43
|
| 187 |
-
#: views/newsletters.html:63 views/newsletters.html:150 views/segments.html:13
|
| 188 |
-
#: views/subscribers/subscribers.html:62
|
| 189 |
-
msgid "Lists"
|
| 190 |
-
msgstr "Listes"
|
| 191 |
-
|
| 192 |
-
#: lib/Config/Menu.php:153 lib/Config/Menu.php:154 views/form/editor.html:37
|
| 193 |
-
#: views/newsletters.html:64 views/settings.html:6
|
| 194 |
-
msgid "Settings"
|
| 195 |
-
msgstr "Réglages"
|
| 196 |
-
|
| 197 |
-
#: lib/Config/Menu.php:164 lib/Config/Menu.php:165
|
| 198 |
-
#: views/subscribers/importExport/import.html:7
|
| 199 |
-
#: views/subscribers/subscribers.html:90
|
| 200 |
-
msgid "Import"
|
| 201 |
-
msgstr "Importer"
|
| 202 |
-
|
| 203 |
-
#: lib/Config/Menu.php:176 lib/Config/Menu.php:177
|
| 204 |
-
#: views/subscribers/importExport/export.html:6
|
| 205 |
-
#: views/subscribers/importExport/export.html:96
|
| 206 |
-
#: views/subscribers/subscribers.html:91
|
| 207 |
-
msgid "Export"
|
| 208 |
-
msgstr "Exporter"
|
| 209 |
-
|
| 210 |
-
#: lib/Config/Menu.php:188 lib/Config/Menu.php:189 views/update.html:20
|
| 211 |
-
#: views/welcome.html:29
|
| 212 |
-
msgid "Welcome"
|
| 213 |
-
msgstr "Bienvenue"
|
| 214 |
-
|
| 215 |
-
#: lib/Config/Menu.php:200 lib/Config/Menu.php:201 views/segments.html:43
|
| 216 |
-
msgid "Update"
|
| 217 |
-
msgstr "Mettre à jour"
|
| 218 |
-
|
| 219 |
-
#: lib/Config/Menu.php:212 lib/Config/Menu.php:213
|
| 220 |
-
msgid "Form Editor"
|
| 221 |
-
msgstr "Éditeur de formulaire"
|
| 222 |
-
|
| 223 |
-
#: lib/Config/Menu.php:224 lib/Newsletter/Shortcodes/ShortcodesHelper.php:32
|
| 224 |
-
#: views/newsletter/templates/components/sidebar/styles.hbs:74
|
| 225 |
-
#: views/newsletters.html:106
|
| 226 |
-
msgid "Newsletter"
|
| 227 |
-
msgstr "Newsletter"
|
| 228 |
-
|
| 229 |
-
#: lib/Config/Menu.php:225
|
| 230 |
-
msgid "Newsletter Editor"
|
| 231 |
-
msgstr "Éditeur de newsletter"
|
| 232 |
-
|
| 233 |
-
#: lib/Config/Menu.php:404
|
| 234 |
-
msgid "In any WordPress role"
|
| 235 |
-
msgstr "Peu importe le rôle"
|
| 236 |
-
|
| 237 |
-
#: lib/Config/Menu.php:479
|
| 238 |
-
msgid "MailPoet"
|
| 239 |
-
msgstr "MailPoet"
|
| 240 |
-
|
| 241 |
-
#: lib/Config/Populator.php:139
|
| 242 |
-
msgid "My First List"
|
| 243 |
-
msgstr "Ma première liste"
|
| 244 |
-
|
| 245 |
-
#: lib/Config/Populator.php:141
|
| 246 |
-
msgid "This list is automatically created when you install MailPoet."
|
| 247 |
-
msgstr "Cette liste a été créée automatiquement lors de l’installation de MailPoet."
|
| 248 |
-
|
| 249 |
-
#: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:16
|
| 250 |
-
msgid "Frank's Roast House"
|
| 251 |
-
msgstr "Franck - Maison de torréfaction"
|
| 252 |
-
|
| 253 |
-
#: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:17
|
| 254 |
-
msgid ""
|
| 255 |
-
"Think of this as your sandbox. Play around with this example newsletter to "
|
| 256 |
-
"see what MailPoet can do for you."
|
| 257 |
-
msgstr "Pensez à ceci comme à un bac à sable. Jouez avec cet exemple de newsletter pour voir ce que MailPoet peut faire pour vous."
|
| 258 |
-
|
| 259 |
-
#: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:49
|
| 260 |
-
msgid ""
|
| 261 |
-
"<a href=\"[link:newsletter_view_in_browser_url]\">Open this email in your "
|
| 262 |
-
"web browser.</a>"
|
| 263 |
-
msgstr "<a href=\"[link:newsletter_view_in_browser_url]\">Ouvrir cet e-mail dans votre navigateur.</a>"
|
| 264 |
-
|
| 265 |
-
#: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:70
|
| 266 |
-
msgid "Frank's Café"
|
| 267 |
-
msgstr "Le café de Franck"
|
| 268 |
-
|
| 269 |
-
#: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:91
|
| 270 |
-
msgid ""
|
| 271 |
-
"<p>Hi there [subscriber:firstname | default:coffee drinker]</p>\n"
|
| 272 |
-
"<p></p>\n"
|
| 273 |
-
"<p>Sit back and enjoy your favorite roast as you read this week's newsletter. </p>"
|
| 274 |
-
msgstr "<p>Bonjour [subscriber:firstname | default:amateur de café]</p>\n<p></p>\n<p>Installez-vous confortablement et savourez votre café préféré en lisant la newsletter de cette semaine. </p>"
|
| 275 |
-
|
| 276 |
-
#: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:97
|
| 277 |
-
msgid "Coffee grain"
|
| 278 |
-
msgstr "Grain de café"
|
| 279 |
-
|
| 280 |
-
#: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:109
|
| 281 |
-
msgid ""
|
| 282 |
-
"<h1 style=\"text-align: center;\">--- Guest Coffee Roaster: <em>Brew Bros. ---</em></h1>\n"
|
| 283 |
-
"<p><em></em></p>\n"
|
| 284 |
-
"<p>Visit our Center Avenue store to try the latest guest coffee from Brew Bros, a local coffee roaster. This young duo started only two years ago, but have quickly gained popularity through pop-up shops, local events, and collaborations with food trucks.</p>\n"
|
| 285 |
-
"<p></p>\n"
|
| 286 |
-
"<blockquote>\n"
|
| 287 |
-
"<p><span style=\"color: #ff6600;\"><em>Tasting notes: A rich, caramel flavor with subtle hints of molasses. The perfect wake-up morning espresso!</em></span></p>\n"
|
| 288 |
-
"</blockquote>"
|
| 289 |
-
msgstr "<h1 style=\"text-align: center;\">--- Torréfacteurs de café invités : <em>Les frères Moulu. ---</em></h1>\n<p><em></em></p>\n<p>Visitez notre boutique du centre pour gouter les derniers cafés des frères Moulu, torréfacteurs de café régionaux. Ce jeune duo lancé depuis moins de deux ans a gagné rapidement en popularité grâce à leurs participations à des évènements locaux et à leurs partenariats avec des food trucks.</p>\n<p></p>\n<blockquote>\n<p><span style=\"color: #ff6600;\"><em>Notes gustatives : Un goût riche, caramélisé avec des touches subtiles de mélasse. L’expresso parfait pour partir du bon pied le matin !</em></span></p>\n</blockquote>"
|
| 290 |
-
|
| 291 |
-
#: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:135
|
| 292 |
-
msgid "<h2>Sandwich Competition</h2>"
|
| 293 |
-
msgstr "<h2>Compétition de sandwich</h2>"
|
| 294 |
-
|
| 295 |
-
#: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:141
|
| 296 |
-
msgid "Sandwich"
|
| 297 |
-
msgstr "Sandwich"
|
| 298 |
-
|
| 299 |
-
#: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:153
|
| 300 |
-
msgid ""
|
| 301 |
-
"<p>Have an idea for the Next Great Sandwich? Tell us! We're offering free lunch for a month if you can invent an awesome new sandwich for our menu.</p>\n"
|
| 302 |
-
"<p></p>\n"
|
| 303 |
-
"<p></p>\n"
|
| 304 |
-
"<p>Simply tweet your ideas to <a href=\"http://www.example.com\" title=\"This isn't a real twitter account\">@franksroasthouse</a> and use #sandwichcomp and we'll let you know if you're a winner.</p>"
|
| 305 |
-
msgstr "<p>Vous avez une idée pour notre prochain sandwich ? Dites-le-nous ! Nous vous offrons des repas gratuits pendant un mois si vous pouvez inventer le nouveau sandwich de notre menu.</p>\n<p></p>\n<p></p>\n<p>Tweetez vos idées à <a href=\"http://www.example.com\" title=\"Ceci n’est pas un compte Twitter réel\">@francksroasthouse</a>, utilisez #sandwichcomp et nous vous tiendrons informé si vous avez gagné.</p>"
|
| 306 |
-
|
| 307 |
-
#: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:178
|
| 308 |
-
msgid "<h3 style=\"text-align: center;\">Follow Us</h3>"
|
| 309 |
-
msgstr "<h3 style=\"text-align: center;\">Suivez-nous</h3>"
|
| 310 |
-
|
| 311 |
-
#: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:235
|
| 312 |
-
msgid "<h2>New Store Opening!</h2>"
|
| 313 |
-
msgstr "<h2>Nouveaux horaires d’ouverture !</h2>"
|
| 314 |
-
|
| 315 |
-
#: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:241
|
| 316 |
-
msgid "Map"
|
| 317 |
-
msgstr "Carte"
|
| 318 |
-
|
| 319 |
-
#: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:253
|
| 320 |
-
msgid ""
|
| 321 |
-
"<p>Watch out Broad Street, we're coming to you very soon! </p>\n"
|
| 322 |
-
"<p></p>\n"
|
| 323 |
-
"<p>Keep an eye on your inbox, as we'll have some special offers for our email subscribers plus an exclusive launch party invite!<br /><br /></p>"
|
| 324 |
-
msgstr "<p>Découvrez Broad Street, nous serons près de chez vous très bientôt !</p>\n<p></p>\n<p>Gardez un œil sur votre boîte de réception car nous allons offrir à nos abonnés une invitation exclusive à notre soirée d’ouverture !<br /><br /></p>"
|
| 325 |
-
|
| 326 |
-
#: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:257
|
| 327 |
-
msgid ""
|
| 328 |
-
"<h2>New and Improved Hours!</h2>\n"
|
| 329 |
-
"<p></p>\n"
|
| 330 |
-
"<p>Frank's is now open even later, so you can get your caffeine fix all day (and night) long! Here's our new opening hours:</p>\n"
|
| 331 |
-
"<p></p>\n"
|
| 332 |
-
"<ul>\n"
|
| 333 |
-
"<li>Monday - Thursday: 6am - 12am</li>\n"
|
| 334 |
-
"<li>Friday - Saturday: 6am - 1:30am</li>\n"
|
| 335 |
-
"<li>Sunday: 7:30am - 11pm</li>\n"
|
| 336 |
-
"</ul>"
|
| 337 |
-
msgstr "<h2>Nouveaux horaires !</h2>\n<p></p>\n<p>Franck reste ouvert plus tard, vous pouvez donc avoir votre dose de caféine toute la journée (et en soirée) ! Voici nos nouveaux horaires d’ouverture :</p>\n<p></p>\n<ul>\n<li>Du lundi au jeudi : 6 h - 12 h</li>\n<li>Les vendredi et samedi : 6 h - 13 h 30</li>\n<li>Le dimanche : 7 h 30 - 23 h</li>\n</ul>"
|
| 338 |
-
|
| 339 |
-
#: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:283
|
| 340 |
-
msgid ""
|
| 341 |
-
"<p><a href=\"[link:subscription_unsubscribe_url]\">Unsubscribe</a> | <a "
|
| 342 |
-
"href=\"[link:subscription_manage_url]\">Manage subscription</a><br />12345 "
|
| 343 |
-
"MailPoet Drive, EmailVille, 76543</p>"
|
| 344 |
-
msgstr "<p><a href=\"[link:subscription_unsubscribe_url]\">Se désabonner</a> | <a href=\"[link:subscription_manage_url]\">Gérer votre abonnement</a><br />12345 MailPoet Drive, EmailVille, 76543</p>"
|
| 345 |
-
|
| 346 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:16
|
| 347 |
-
msgid "Newsletter: Blank 1:2:1 Column"
|
| 348 |
-
msgstr "Newsletter : Vide, Colonne 1:2:1"
|
| 349 |
-
|
| 350 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:17
|
| 351 |
-
msgid "A blank Newsletter template with a 1:2:1 column layout."
|
| 352 |
-
msgstr "Un modèle de newsletter vide avec une mise en page en colonne 1:2:1."
|
| 353 |
-
|
| 354 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:55
|
| 355 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:55
|
| 356 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:55
|
| 357 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank1Column.php:55
|
| 358 |
-
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:55
|
| 359 |
-
#: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:55
|
| 360 |
-
#: lib/Config/PopulatorData/Templates/WelcomeBlank1Column.php:55
|
| 361 |
-
msgid ""
|
| 362 |
-
"Display problems? <a href=\"[link:newsletter_view_in_browser_url]\">Open "
|
| 363 |
-
"this email in your web browser.</a>"
|
| 364 |
-
msgstr "Problèmes d’affichage ? <a href=\"[link:newsletter_view_in_browser_url]\">Ouvrir cet e-mail dans votre navigateur.</a>"
|
| 365 |
-
|
| 366 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:107
|
| 367 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:107
|
| 368 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank1Column.php:107
|
| 369 |
-
#: lib/Config/PopulatorData/Templates/SimpleText.php:66
|
| 370 |
-
#: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:107
|
| 371 |
-
#: lib/Config/PopulatorData/Templates/WelcomeBlank1Column.php:107
|
| 372 |
-
msgid "Fake logo"
|
| 373 |
-
msgstr "Faux logo"
|
| 374 |
-
|
| 375 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:119
|
| 376 |
-
msgid ""
|
| 377 |
-
"<h1 style=\"text-align: center;\"><strong>Let's Get Started!</strong></h1>\n"
|
| 378 |
-
"<p>It's time to design your newsletter! In the right sidebar, you'll find four menu items that will help you customize your newsletter:</p>\n"
|
| 379 |
-
"<ol>\n"
|
| 380 |
-
"<li>Content</li>\n"
|
| 381 |
-
"<li>Layout</li>\n"
|
| 382 |
-
"<li>Styles</li>\n"
|
| 383 |
-
"<li>Preview</li>\n"
|
| 384 |
-
"</ol>"
|
| 385 |
-
msgstr "<h1 style=\"text-align: center;\"><strong>C’est parti !</strong></h1>\n<p>Il est temps de concevoir votre newsletter ! Dans la colonne latérale de droite vous trouverez 4 éléments de menu qui vous aideront à personnaliser votre newsletter :</p>\n<ol>\n<li>Contenu</li>\n<li>Mise en page</li>\n<li>Styles</li>\n<li>Aperçu</li>\n</ol>"
|
| 386 |
-
|
| 387 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:157
|
| 388 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:157
|
| 389 |
-
msgid "<h2>This template has...</h2>"
|
| 390 |
-
msgstr "<h2>Ce modèle utilise…</h2>"
|
| 391 |
-
|
| 392 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:161
|
| 393 |
-
msgid ""
|
| 394 |
-
"<p>In the right sidebar, you can add layout blocks to your email:</p>\n"
|
| 395 |
-
"<ul>\n"
|
| 396 |
-
"<li>1 column</li>\n"
|
| 397 |
-
"<li>2 columns</li>\n"
|
| 398 |
-
"<li>3 columns</li>\n"
|
| 399 |
-
"</ul>"
|
| 400 |
-
msgstr "<p>Dans la colonne latérale de droite, vous pouvez ajouter des blocs de mise en page pour votre e-mail :</p>\n<ul>\n<li>1 colonne</li>\n<li>2 colonnes</li>\n<li>3 colonnes</li>\n</ul>"
|
| 401 |
-
|
| 402 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:176
|
| 403 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:176
|
| 404 |
-
msgid "<h2>... a 2-column layout.</h2>"
|
| 405 |
-
msgstr "<h2>... une mise en page sur 2 colonnes.</h2>"
|
| 406 |
-
|
| 407 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:180
|
| 408 |
-
msgid ""
|
| 409 |
-
"<p>You can change a layout's background color by clicking on the settings "
|
| 410 |
-
"icon on the right edge of the Designer. Simply hover over this area to see "
|
| 411 |
-
"the Settings (gear) icon.</p>"
|
| 412 |
-
msgstr "<p>Vous pouvez changer la couleur d’arrière-plan d’une mise en page en cliquant sur l’icône des réglages sur la droite du Designer. Survolez simplement cette zone pour voir l’icône des réglages (engrenage).</p>"
|
| 413 |
-
|
| 414 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:240
|
| 415 |
-
msgid ""
|
| 416 |
-
"<h3 style=\"text-align: center;\"><span style=\"font-weight: 600;\">Let's end with a single column. </span></h3>\n"
|
| 417 |
-
"<p style=\"line-height: 25.6px;\">In the right sidebar, you can add these layout blocks to your email:</p>\n"
|
| 418 |
-
"<p style=\"line-height: 25.6px;\"></p>\n"
|
| 419 |
-
"<ul style=\"line-height: 25.6px;\">\n"
|
| 420 |
-
"<li>1 column</li>\n"
|
| 421 |
-
"<li>2 columns</li>\n"
|
| 422 |
-
"<li>3 columns</li>\n"
|
| 423 |
-
"</ul>"
|
| 424 |
-
msgstr "<h3 style=\"text-align: center;\"><span style=\"font-weight: 600;\">Terminons avec une seule colonne.</span></h3>\n<p style=\"line-height: 25.6px;\">Depuis la colonne latérale de droite, vous pouvez ajouter dans votre e-mail des mises en page en :</p>\n<p style=\"line-height: 25.6px;\"></p>\n<ul style=\"line-height: 25.6px;\">\n<li>1 colonne</li>\n<li>2 colonnes</li>\n<li>3 colonnes</li>\n</ul>"
|
| 425 |
-
|
| 426 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:314
|
| 427 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:254
|
| 428 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:277
|
| 429 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank1Column.php:193
|
| 430 |
-
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:301
|
| 431 |
-
#: lib/Config/PopulatorData/Templates/SimpleText.php:138
|
| 432 |
-
#: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:284
|
| 433 |
-
#: lib/Config/PopulatorData/Templates/WelcomeBlank1Column.php:193
|
| 434 |
-
msgid ""
|
| 435 |
-
"<p><a href=\"[link:subscription_unsubscribe_url]\">Unsubscribe</a> | <a "
|
| 436 |
-
"href=\"[link:subscription_manage_url]\">Manage your subscription</a><br "
|
| 437 |
-
"/>Add your postal address here!</p>"
|
| 438 |
-
msgstr "<p><a href=\"[link:subscription_unsubscribe_url]\">Se désabonner</a> | <a href=\"[link:subscription_manage_url]\">Gérer votre abonnement</a><br />Ajoutez votre adresse postale ici !</p>"
|
| 439 |
-
|
| 440 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:16
|
| 441 |
-
msgid "Newsletter: Blank 1:2 Column"
|
| 442 |
-
msgstr "Newsletter : Vide, Colonne 1:2"
|
| 443 |
-
|
| 444 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:17
|
| 445 |
-
msgid "A blank Newsletter template with a 1:2 column layout."
|
| 446 |
-
msgstr "Un modèle de newsletter vide avec une mise en page en colonne 1:2."
|
| 447 |
-
|
| 448 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:107
|
| 449 |
-
msgid "Fake Logo"
|
| 450 |
-
msgstr "Faux logo"
|
| 451 |
-
|
| 452 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:119
|
| 453 |
-
msgid ""
|
| 454 |
-
"<h1 style=\"text-align: center;\"><strong>Let's Get Started!</strong></h1>\n"
|
| 455 |
-
"<p></p>\n"
|
| 456 |
-
"<p>It's time to design your newsletter! In the right sidebar, you'll find 4 menu items that will help you customize your newsletter:</p>\n"
|
| 457 |
-
"<ol>\n"
|
| 458 |
-
"<li>Content</li>\n"
|
| 459 |
-
"<li>Layout</li>\n"
|
| 460 |
-
"<li>Styles</li>\n"
|
| 461 |
-
"<li>Preview</li>\n"
|
| 462 |
-
"</ol>"
|
| 463 |
-
msgstr "<h1 style=\"text-align: center;\"><strong>C’est parti !</strong></h1>\n<p></p>\n<p>Il est temps de concevoir votre newsletter ! Dans la colonne latérale de droite vous trouverez 4 éléments de menu qui vous aideront à personnaliser votre newsletter :</p>\n<ol>\n<li>Contenu</li>\n<li>Mise en page</li>\n<li>Styles</li>\n<li>Aperçu</li>\n</ol>"
|
| 464 |
-
|
| 465 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:161
|
| 466 |
-
msgid ""
|
| 467 |
-
"<p>In the right sidebar, you can add these layout blocks to your email:</p>\n"
|
| 468 |
-
"<ul>\n"
|
| 469 |
-
"<li>1 column</li>\n"
|
| 470 |
-
"<li>2 columns</li>\n"
|
| 471 |
-
"<li>3 columns</li>\n"
|
| 472 |
-
"</ul>"
|
| 473 |
-
msgstr "<p>Dans la colonne latérale de droite, vous pouvez ajouter ces blocs de mise en page dans votre e-mail :</p>\n<ul>\n<li>1 colonne</li>\n<li>2 colonnes</li>\n<li>3 colonnes</li>\n</ul>"
|
| 474 |
-
|
| 475 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:180
|
| 476 |
-
msgid ""
|
| 477 |
-
"<p><span style=\"line-height: 25.6px;\">You can change a layout's background"
|
| 478 |
-
" color by clicking on the settings icon on the right edge of the Designer. "
|
| 479 |
-
"Simply hover over this area to see the Settings (gear) icon.</span></p>"
|
| 480 |
-
msgstr "<p><span style=\"line-height: 25.6px;\">Vous pouvez changer la couleur d’arrière-plan d’une mise en page en cliquant sur l’icône des réglages sur la droite du Designer. Survolez simplement cette zone pour voir l’icône des réglages (engrenage).</span></p>"
|
| 481 |
-
|
| 482 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:16
|
| 483 |
-
msgid "Newsletter: Blank 1:3 Column"
|
| 484 |
-
msgstr "Newsletter : Vide, Colonne 1:3"
|
| 485 |
-
|
| 486 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:17
|
| 487 |
-
msgid "A blank Newsletter template with a 1:3 column layout."
|
| 488 |
-
msgstr "Un modèle de newsletter vide avec une mise en page en colonne 1:3."
|
| 489 |
-
|
| 490 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:119
|
| 491 |
-
msgid ""
|
| 492 |
-
"<h1 style=\"text-align: center;\"><strong>Let's Get Started! </strong></h1>\n"
|
| 493 |
-
"<p></p>\n"
|
| 494 |
-
"<p>It's time to design your newsletter! In the right sidebar, you'll find four menu items that will help you customize your newsletter:</p>\n"
|
| 495 |
-
"<ol>\n"
|
| 496 |
-
"<li>Content</li>\n"
|
| 497 |
-
"<li>Layout</li>\n"
|
| 498 |
-
"<li>Styles</li>\n"
|
| 499 |
-
"<li>Preview</li>\n"
|
| 500 |
-
"</ol>"
|
| 501 |
-
msgstr "<h1 style=\"text-align: center;\"><strong>C’est parti !</strong></h1>\n<p></p>\n<p>Il est temps de concevoir votre newsletter ! Dans la colonne latérale de droite vous trouverez 4 éléments de menu qui vous aideront à personnaliser votre newsletter :</p>\n<ol>\n<li>Contenu</li>\n<li>Mise en page</li>\n<li>Styles</li>\n<li>Aperçu</li>\n</ol>"
|
| 502 |
-
|
| 503 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:157
|
| 504 |
-
msgid "<h3>This template... </h3>"
|
| 505 |
-
msgstr "<h3>Ce modèle…</h3>"
|
| 506 |
-
|
| 507 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:161
|
| 508 |
-
msgid ""
|
| 509 |
-
"<p>In the right sidebar, you can add layout blocks to your newsletter.</p>"
|
| 510 |
-
msgstr "<p>Dans la colonne latérale de droite vous pouvez ajouter des blocs de mise en page pour votre newsletter.</p>"
|
| 511 |
-
|
| 512 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:176
|
| 513 |
-
msgid "<h3>... has a... </h3>"
|
| 514 |
-
msgstr "<h3>… utilise une…</h3>"
|
| 515 |
-
|
| 516 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:180
|
| 517 |
-
msgid ""
|
| 518 |
-
"<p>You have the choice of:</p>\n"
|
| 519 |
-
"<ul>\n"
|
| 520 |
-
"<li>1 column</li>\n"
|
| 521 |
-
"<li>2 columns</li>\n"
|
| 522 |
-
"<li>3 columns</li>\n"
|
| 523 |
-
"</ul>"
|
| 524 |
-
msgstr "<p>Vous avez le choix entre :</p>\n<ul>\n<li>1 colonne</li>\n<li>2 colonnes</li>\n<li>3 colonnes</li>\n</ul>"
|
| 525 |
-
|
| 526 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:195
|
| 527 |
-
msgid "<h3>3-column layout.</h3>"
|
| 528 |
-
msgstr "<h3>une mise en page en 3 colonnes.</h3>"
|
| 529 |
-
|
| 530 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:199
|
| 531 |
-
msgid "<p>You can add as many layout blocks as you want!</p>"
|
| 532 |
-
msgstr "<p>Vous pouvez ajouter autant de blocs de mise en page que vous voulez !</p>"
|
| 533 |
-
|
| 534 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank1Column.php:16
|
| 535 |
-
msgid "Newsletter: Blank 1 Column"
|
| 536 |
-
msgstr "Newsletter : Vide, 1 Colonne"
|
| 537 |
-
|
| 538 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank1Column.php:17
|
| 539 |
-
msgid "A blank Newsletter template with a 1 column layout."
|
| 540 |
-
msgstr "Un modèle de newsletter vide avec une mise en page en 1 colonne."
|
| 541 |
-
|
| 542 |
-
#: lib/Config/PopulatorData/Templates/NewsletterBlank1Column.php:119
|
| 543 |
-
msgid ""
|
| 544 |
-
"<h1 style=\"text-align: center;\"><strong>Let's Get Started! </strong></h1>\n"
|
| 545 |
-
"<p></p>\n"
|
| 546 |
-
"<p>It's time to design your newsletter! In the right sidebar, you'll find 4 menu items that will help you customize your newsletter:</p>\n"
|
| 547 |
-
"<ol>\n"
|
| 548 |
-
"<li>Content</li>\n"
|
| 549 |
-
"<li>Layout</li>\n"
|
| 550 |
-
"<li>Styles</li>\n"
|
| 551 |
-
"<li>Preview</li>\n"
|
| 552 |
-
"</ol>"
|
| 553 |
-
msgstr "<h1 style=\"text-align: center;\"><strong>C’est parti !</strong></h1>\n<p></p>\n<p>Il est temps de concevoir votre newsletter ! Dans la colonne latérale de droite vous trouverez 4 éléments de menu qui vous aideront à personnaliser votre newsletter :</p>\n<ol>\n<li>Contenu</li>\n<li>Mise en page</li>\n<li>Styles</li>\n<li>Aperçu</li>\n</ol>"
|
| 554 |
-
|
| 555 |
-
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:16
|
| 556 |
-
msgid "Post Notifications: Blank 1 Column"
|
| 557 |
-
msgstr "Notifications d’article : Vide, 1 Colonne"
|
| 558 |
-
|
| 559 |
-
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:17
|
| 560 |
-
msgid "A blank Post Notifications template with a 1 column layout."
|
| 561 |
-
msgstr "Un modèle de notifications vide d’article avec une mise en page en 1 colonne."
|
| 562 |
-
|
| 563 |
-
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:119
|
| 564 |
-
msgid ""
|
| 565 |
-
"<h1 style=\"text-align: center;\"><strong>Check Out Our New Blog Posts! </strong></h1>\n"
|
| 566 |
-
"<p></p>\n"
|
| 567 |
-
"<p>MailPoet can <span style=\"line-height: 1.6em; background-color: inherit;\"><em>automatically</em> </span><span style=\"line-height: 1.6em; background-color: inherit;\">send your new blog posts to your subscribers.</span></p>\n"
|
| 568 |
-
"<p><span style=\"line-height: 1.6em; background-color: inherit;\"></span></p>\n"
|
| 569 |
-
"<p><span style=\"line-height: 1.6em; background-color: inherit;\">Below, you'll find three recent posts, which are displayed automatically, thanks to the <em>Automatic Latest Content</em> widget, which can be found in the right sidebar, under <em>Content</em>.</span></p>\n"
|
| 570 |
-
"<p><span style=\"line-height: 1.6em; background-color: inherit;\"></span></p>\n"
|
| 571 |
-
"<p><span style=\"line-height: 1.6em; background-color: inherit;\">To edit the settings and styles of your post, simply click on a post below.</span></p>"
|
| 572 |
-
msgstr "<h1 style=\"text-align: center;\"><strong>Découvrez nos nouveaux articles de blog ! </strong></h1>\n<p></p>\n<p>MailPoet peut <span style=\"line-height: 1.6em; background-color: inherit;\"><em>automatiquement</em> </span><span style=\"line-height: 1.6em; background-color: inherit;\">envoyer vos nouveaux articles de blog à vos abonnés.</span></p>\n<p><span style=\"line-height: 1.6em; background-color: inherit;\"></span></p>\n<p><span style=\"line-height: 1.6em; background-color: inherit;\">Ci-dessous vous trouverez trois articles récents, qui sont affichés automatiquement, merci au widget de <em>Dernier contenu automatique</em> disponible dans la colonne latérale de droite, sous <em>Contenu</em>.</span></p>\n<p><span style=\"line-height: 1.6em; background-color: inherit;\"></span></p>\n<p><span style=\"line-height: 1.6em; background-color: inherit;\">Pour modifier les réglages et les styles de votre article, cliquez simplement sur un article ci-dessous.</span></p>"
|
| 573 |
-
|
| 574 |
-
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:177
|
| 575 |
-
#: views/newsletter/editor.html:957 views/newsletter/editor.html:1079
|
| 576 |
-
msgid "Author:"
|
| 577 |
-
msgstr "Auteur :"
|
| 578 |
-
|
| 579 |
-
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:179
|
| 580 |
-
#: views/newsletter/editor.html:959 views/newsletter/editor.html:1081
|
| 581 |
-
msgid "Categories:"
|
| 582 |
-
msgstr "Catégories :"
|
| 583 |
-
|
| 584 |
-
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:184
|
| 585 |
-
msgid "Read the post"
|
| 586 |
-
msgstr "Lire l’article"
|
| 587 |
-
|
| 588 |
-
#: lib/Config/PopulatorData/Templates/Restaurant.php:16
|
| 589 |
-
msgid "Restaurant"
|
| 590 |
-
msgstr "Restaurant"
|
| 591 |
-
|
| 592 |
-
#: lib/Config/PopulatorData/Templates/Restaurant.php:17
|
| 593 |
-
msgid "What's fresh on the menu?"
|
| 594 |
-
msgstr "Quoi de nouveau au menu ?"
|
| 595 |
-
|
| 596 |
-
#: lib/Config/PopulatorData/Templates/SimpleText.php:16
|
| 597 |
-
msgid "Simple Text"
|
| 598 |
-
msgstr "Texte simple"
|
| 599 |
-
|
| 600 |
-
#: lib/Config/PopulatorData/Templates/SimpleText.php:17
|
| 601 |
-
msgid "A simple plain text template - just like a regular email."
|
| 602 |
-
msgstr "Un modèle simple d’e-mail en texte brut - comme un e-mail ordinaire."
|
| 603 |
-
|
| 604 |
-
#: lib/Config/PopulatorData/Templates/SimpleText.php:78
|
| 605 |
-
msgid ""
|
| 606 |
-
"<p style=\"text-align: left;\">Hi [subscriber:firstname | default:subscriber],</p>\n"
|
| 607 |
-
"<p style=\"text-align: left;\"></p>\n"
|
| 608 |
-
"<p style=\"text-align: left;\">In MailPoet, you can write emails in plain text, just like in a regular email. This can make your email newsletters more personal and attention-grabbing.</p>\n"
|
| 609 |
-
"<p style=\"text-align: left;\"></p>\n"
|
| 610 |
-
"<p style=\"text-align: left;\">Is this too simple? You can still style your text with basic formatting, like <strong>bold</strong> or <em>italics.</em></p>\n"
|
| 611 |
-
"<p style=\"text-align: left;\"></p>\n"
|
| 612 |
-
"<p style=\"text-align: left;\">Finally, you can also add a call-to-action button between 2 blocks of text, like this:</p>"
|
| 613 |
-
msgstr "<p style=\"text-align: left;\">Bonjour [subscriber:firstname | default:abonné],</p>\n<p style=\"text-align: left;\"></p>\n<p style=\"text-align: left;\">Dans MailPoet, vous pouvez rédiger des e-mails en texte brut, comme un e-mail ordinaire. Ceci peut rendre votre e-mail de newsletter plus personnel et attractif.</p>\n<p style=\"text-align: left;\"></p>\n<p style=\"text-align: left;\">Cela reste trop simple ? Vous pouvez toujours personnaliser votre texte avec du formatage simple comme du <strong>gras</strong> ou de l’<em>italique.</em></p>\n<p style=\"text-align: left;\"></p>\n<p style=\"text-align: left;\">Enfin, vous pouvez ajouter un bouton d’appel à l’action entre deux blocs de texte, comme ceci :</p>"
|
| 614 |
-
|
| 615 |
-
#: lib/Config/PopulatorData/Templates/SimpleText.php:113
|
| 616 |
-
msgid "It's time to take action!"
|
| 617 |
-
msgstr "C’est le moment de passer à l’action !"
|
| 618 |
-
|
| 619 |
-
#: lib/Config/PopulatorData/Templates/SimpleText.php:134
|
| 620 |
-
msgid ""
|
| 621 |
-
"<p>Thanks for reading. See you soon!</p>\n"
|
| 622 |
-
"<p></p>\n"
|
| 623 |
-
"<p><strong><em>The MailPoet Team</em></strong></p>"
|
| 624 |
-
msgstr "<p>Merci pour votre attention et à très bientôt !</p>\n<p></p>\n<p><strong><em>L’équipe MailPoet</em></strong></p>"
|
| 625 |
-
|
| 626 |
-
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:16
|
| 627 |
-
msgid "Store Discount"
|
| 628 |
-
msgstr "Opération solde"
|
| 629 |
-
|
| 630 |
-
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:17
|
| 631 |
-
msgid "Store discount email with coupon and shopping suggestions"
|
| 632 |
-
msgstr "E-mail de promotion et de suggestions d’achat dans un magasin"
|
| 633 |
-
|
| 634 |
-
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:62
|
| 635 |
-
msgid "bicycle-header3"
|
| 636 |
-
msgstr "velo-en-tete3"
|
| 637 |
-
|
| 638 |
-
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:73
|
| 639 |
-
msgid ""
|
| 640 |
-
"<p></p>\n"
|
| 641 |
-
"<p>Hi [subscriber:firstname | default:reader]</p>\n"
|
| 642 |
-
"<p class=\"\"></p>\n"
|
| 643 |
-
"<p>Fancy 15% off your next order? Use this coupon on any product in our store. Expires Wednesday! To apply the discount, enter the code on the payments page.</p>"
|
| 644 |
-
msgstr "<p></p>\n<p>Bonjour [subscriber:firstname | default:lecteur]</p>\n<p class=\"\"></p>\n<p>15% de remise sur votre prochaine commande ? Utilisez ce code promo sur le produit de votre choix dans notre magasin. Fin de l’opération vendredi ! Pour appliquer la remise, saisissez le code sur la page des paiements.</p>"
|
| 645 |
-
|
| 646 |
-
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:113
|
| 647 |
-
msgid ""
|
| 648 |
-
"<h1 style=\"text-align: center;\"><em><strong>Get a 15% off your next "
|
| 649 |
-
"order</strong></em></h1>"
|
| 650 |
-
msgstr "<h1 style=\"text-align: center;\"><em><strong>Obtenez 15% de remise sur votre prochaine commande</strong></em></h1>"
|
| 651 |
-
|
| 652 |
-
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:116
|
| 653 |
-
msgid ""
|
| 654 |
-
"<h2 style=\"text-align: center;\"><strong>USE CODE: "
|
| 655 |
-
"WELOVEMAILPOET</strong></h2>"
|
| 656 |
-
msgstr "<h2 style=\"text-align: center;\"><strong>UTILISEZ LE CODE : WELOVEMAILPOET</strong></h2>"
|
| 657 |
-
|
| 658 |
-
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:156
|
| 659 |
-
msgid "SHOP NOW"
|
| 660 |
-
msgstr "ACHETEZ MAINTENANT"
|
| 661 |
-
|
| 662 |
-
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:176
|
| 663 |
-
msgid ""
|
| 664 |
-
"<h1 style=\"text-align: center;\"><strong><em>Use your discount on these "
|
| 665 |
-
"great products...</em></strong></h1>"
|
| 666 |
-
msgstr "<h1 style=\"text-align: center;\"><strong><em>Utilisez votre remise sur ces superbes produits…</em></strong></h1>"
|
| 667 |
-
|
| 668 |
-
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:207
|
| 669 |
-
msgid "red-bicycle"
|
| 670 |
-
msgstr "velo-rouge"
|
| 671 |
-
|
| 672 |
-
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:218
|
| 673 |
-
msgid ""
|
| 674 |
-
"<h3 style=\"text-align: center;\">Lovely Red Bicycle</h3>\n"
|
| 675 |
-
"<p>What can we say? It's a totally awesome red bike, and it's the first of its kind in our collection. No sweat!</p>\n"
|
| 676 |
-
"<h3 style=\"text-align: center;\"><strong><span style=\"color: #488e88;\">$289.99</span></strong></h3>"
|
| 677 |
-
msgstr "<h3 style=\"text-align: center;\">Joli vélo rouge</h3>\n<p>Que dire ? C’est un superbe vélo rouge et c’est le premier de notre collection.</p>\n<h3 style=\"text-align: center;\"><strong><span style=\"color: #488e88;\">289.99 €</span></strong></h3>"
|
| 678 |
-
|
| 679 |
-
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:221
|
| 680 |
-
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:266
|
| 681 |
-
msgid "Buy"
|
| 682 |
-
msgstr "Acheter"
|
| 683 |
-
|
| 684 |
-
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:252
|
| 685 |
-
msgid "orange-bicycle"
|
| 686 |
-
msgstr "velo-orange"
|
| 687 |
-
|
| 688 |
-
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:263
|
| 689 |
-
msgid ""
|
| 690 |
-
"<h3 style=\"text-align: center;\">Little Orange Bicycle</h3>\n"
|
| 691 |
-
"<p>Another product that's just as awesome but it's the second type, and more orange, with some blue. Cool beans!</p>\n"
|
| 692 |
-
"<h3 style=\"line-height: 22.4px; text-align: center;\"><span style=\"color: #488e88;\"><strong>$209.99</strong></span></h3>"
|
| 693 |
-
msgstr "<h3 style=\"text-align: center;\">Petit vélo orange</h3>\n<p>Un autre produit qui est tout aussi intéressant, plus orange avec un peu de bleu. Vous allez l’adorer</p>\n<h3 style=\"line-height: 22.4px; text-align: center;\"><span style=\"color: #488e88;\"><strong>209.99 €</strong></span></h3>"
|
| 694 |
-
|
| 695 |
-
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:323
|
| 696 |
-
msgid ""
|
| 697 |
-
"<p><em>Terms and Conditions:</em></p>\n"
|
| 698 |
-
"<ul>\n"
|
| 699 |
-
"<li><span style=\"line-height: 1.6em; background-color: inherit;\">Must be used by midnight EST December 15 2016.</span></li>\n"
|
| 700 |
-
"<li><span style=\"line-height: 1.6em; background-color: inherit;\">Discount does not include shipping.</span></li>\n"
|
| 701 |
-
"<li><span style=\"line-height: 1.6em; background-color: inherit;\">Cannot be used in conjunction with any other offer.</span></li>\n"
|
| 702 |
-
"</ul>"
|
| 703 |
-
msgstr "<p><em>Conditions d’utilisation :</em></p>\n<ul>\n<li><span style=\"line-height: 1.6em; background-color: inherit;\">Doit être utilisé avant minuit le 15 décembre 2016.</span></li>\n<li><span style=\"line-height: 1.6em; background-color: inherit;\">La remise n’inclut pas les frais de livraison.</span></li>\n<li><span style=\"line-height: 1.6em; background-color: inherit;\">Ne peut pas être utilisé avec une autre offre.</span></li>\n</ul>"
|
| 704 |
-
|
| 705 |
-
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:334
|
| 706 |
-
#: views/newsletter/editor.html:1132
|
| 707 |
-
msgid "Facebook"
|
| 708 |
-
msgstr "Facebook"
|
| 709 |
-
|
| 710 |
-
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:342
|
| 711 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:84
|
| 712 |
-
#: views/newsletter/editor.html:1143
|
| 713 |
-
msgid "Twitter"
|
| 714 |
-
msgstr "Twitter"
|
| 715 |
-
|
| 716 |
-
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:346
|
| 717 |
-
msgid ""
|
| 718 |
-
"<p><a href=\"[link:subscription_unsubscribe_url]\">Unsubscribe</a> | <a href=\"[link:subscription_manage_url]\">Manage subscription</a></p>\n"
|
| 719 |
-
"<p>1 Store Street, Shopville, CA 1345</p>"
|
| 720 |
-
msgstr "<p><a href=\"[link:subscription_unsubscribe_url]\">Se désabonner</a> | <a href=\"[link:subscription_manage_url]\">Gérer votre abonnement</a></p>\n<p>1 rue de la Boutique, Achatville, CA 1345</p>"
|
| 721 |
-
|
| 722 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:16
|
| 723 |
-
msgid "Travel email"
|
| 724 |
-
msgstr "E-mail de voyage"
|
| 725 |
-
|
| 726 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:17
|
| 727 |
-
msgid "A little postcard from your trip"
|
| 728 |
-
msgstr "Une petite carte postale de notre voyage"
|
| 729 |
-
|
| 730 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:54
|
| 731 |
-
msgid "Travelling Tales with Jane & Steven"
|
| 732 |
-
msgstr "Récits de voyage avec Jane & Steven"
|
| 733 |
-
|
| 734 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:73
|
| 735 |
-
msgid ""
|
| 736 |
-
"<h1 style=\"text-align: center;\">Hi [subscriber:firstname | default:reader]!</h1>\n"
|
| 737 |
-
"<p></p>\n"
|
| 738 |
-
"<p>Greetings from New Zealand! We're here enjoying the sights, sounds, and smells of Rotarua! Yesterday, we visited the local hot springs, and today, we're going swimming.</p>\n"
|
| 739 |
-
"<p>Don't forget to stay updated with Twitter!</p>"
|
| 740 |
-
msgstr "<h1 style=\"text-align: center;\">Bonjour [subscriber:firstname | default:lecteur] !</h1>\n<p></p>\n<p>Bonjour de Nouvelle-Zélande ! Nous sommes à Roturua et apprécions ses paysages, ambiances et odeurs ! Hier, nous avons visité les sources thermales locales, et aujourd’hui, nous sommes aller nager.</p>\n<p>N’oubliez pas de nous suivre sur Twitter !</p>"
|
| 741 |
-
|
| 742 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:88
|
| 743 |
-
msgid ""
|
| 744 |
-
"<h1 style=\"text-align: center;\"><strong>Photos from Rotarua</strong></h1>"
|
| 745 |
-
msgstr "<h1 style=\"text-align: center;\"><strong>Photos de Rotarua</strong></h1>"
|
| 746 |
-
|
| 747 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:119
|
| 748 |
-
msgid "hot thermals"
|
| 749 |
-
msgstr "thermes chaudes"
|
| 750 |
-
|
| 751 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:149
|
| 752 |
-
msgid "The view from our campsite"
|
| 753 |
-
msgstr "La vue depuis notre camping"
|
| 754 |
-
|
| 755 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:188
|
| 756 |
-
msgid "Red sky at night"
|
| 757 |
-
msgstr "Ciel rouge la nuit"
|
| 758 |
-
|
| 759 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:210
|
| 760 |
-
msgid "Don't go chasing waterfalls"
|
| 761 |
-
msgstr "Don't go chasing waterfalls"
|
| 762 |
-
|
| 763 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:247
|
| 764 |
-
msgid "View NZ Photo Gallery"
|
| 765 |
-
msgstr "Voir la galerie photo de NZ"
|
| 766 |
-
|
| 767 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:296
|
| 768 |
-
msgid "<h2><em>Here's our top recommendations in Rotarua</em></h2>"
|
| 769 |
-
msgstr "<h2><em>Voici nos meilleures recommandations dans Rotarua</em></h2>"
|
| 770 |
-
|
| 771 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:327
|
| 772 |
-
msgid "Glowworms, Waitomo Caves"
|
| 773 |
-
msgstr "Vers luisants, grottes de Waitomo"
|
| 774 |
-
|
| 775 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:338
|
| 776 |
-
msgid ""
|
| 777 |
-
"<p><em><a href=\"http://www.waitomo.com/Waitomo-Glowworm-"
|
| 778 |
-
"Caves/Pages/default.aspx\"><strong>Waitomo GlowWorm "
|
| 779 |
-
"Caves</strong></a></em></p>"
|
| 780 |
-
msgstr "<p><em><a href=\"http://www.waitomo.com/Waitomo-Glowworm-Caves/Pages/default.aspx\"><strong>Grottes aux vers luisants de Waitomo</strong></a></em></p>"
|
| 781 |
-
|
| 782 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:352
|
| 783 |
-
msgid "luge"
|
| 784 |
-
msgstr "luge"
|
| 785 |
-
|
| 786 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:363
|
| 787 |
-
msgid ""
|
| 788 |
-
"<p><em><strong><a "
|
| 789 |
-
"href=\"http://www.skyline.co.nz/rotorua/ssr_luge/\">Luge!</a></strong></em></p>"
|
| 790 |
-
msgstr "<p><em><strong><a href=\"http://www.skyline.co.nz/rotorua/ssr_luge/\">Luge !</a></strong></em></p>"
|
| 791 |
-
|
| 792 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:377
|
| 793 |
-
msgid "holiday-park"
|
| 794 |
-
msgstr "parc-vacances"
|
| 795 |
-
|
| 796 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:388
|
| 797 |
-
msgid ""
|
| 798 |
-
"<p><em><strong><a href=\"http://rotoruathermal.co.nz/\">Roturua Thermal "
|
| 799 |
-
"Holiday Park</a></strong></em></p>"
|
| 800 |
-
msgstr "<p><em><strong><a href=\"http://rotoruathermal.co.nz/\">Centre thermal de Roturua</a></strong></em></p>"
|
| 801 |
-
|
| 802 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:417
|
| 803 |
-
msgid ""
|
| 804 |
-
"<p>Tomorrow we're heading towards Taupo where we'll visit the 'Craters of the moon' and go prawn fishing! Hopefully the weather will stay good.</p>\n"
|
| 805 |
-
"<p></p>\n"
|
| 806 |
-
"<p>Keep on travellin'</p>\n"
|
| 807 |
-
"<p>Jane & Steven</p>"
|
| 808 |
-
msgstr "<p>Demain, nous irons à Taupo où nous visiterons les « Cratères de la Lune ». Ensuite direction la pêche aux crevettes ! Nous espérons que la météo restera de la partie.</p>\n<p></p>\n<p>En route</p>\n<p>Jane & Steven</p>"
|
| 809 |
-
|
| 810 |
-
#: lib/Config/PopulatorData/Templates/TravelEmail.php:467
|
| 811 |
-
msgid ""
|
| 812 |
-
"<p><a href=\"[link:subscription_unsubscribe_url]\">Unsubscribe</a> | <a "
|
| 813 |
-
"href=\"[link:subscription_manage_url]\">Manage subscription</a></p>"
|
| 814 |
-
msgstr "<p><a href=\"[link:subscription_unsubscribe_url]\">Se désabonner</a> | <a href=\"[link:subscription_manage_url]\">Gérer votre abonnement</a></p>"
|
| 815 |
-
|
| 816 |
-
#: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:16
|
| 817 |
-
msgid "Welcome Email: Blank 1:2 Column"
|
| 818 |
-
msgstr "E-mail de bienvenue : Vide, Colonne 1:2"
|
| 819 |
-
|
| 820 |
-
#: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:17
|
| 821 |
-
msgid "A blank Welcome Email template with a 1:2 column layout."
|
| 822 |
-
msgstr "Un modèle d’e-mail de bienvenue vide avec une mise en page en colonne 1:2."
|
| 823 |
-
|
| 824 |
-
#: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:119
|
| 825 |
-
msgid ""
|
| 826 |
-
"<h1 style=\"text-align: center;\"><strong>Hi, new subscriber!</strong></h1>\n"
|
| 827 |
-
"<p></p>\n"
|
| 828 |
-
"<p>[subscriber:firstname | default:Subscriber],</p>\n"
|
| 829 |
-
"<p></p>\n"
|
| 830 |
-
"<p>You recently joined our list and we'd like to give you a warm welcome!</p>"
|
| 831 |
-
msgstr "<h1 style=\"text-align: center;\"><strong>Bonjour !</strong></h1>\n<p></p>\n<p>[subscriber:firstname | default:Abonné],</p>\n<p></p>\n<p>Vous avez récemment rejoint notre liste et nous vous souhaitons la bienvenue !</p>"
|
| 832 |
-
|
| 833 |
-
#: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:166
|
| 834 |
-
msgid "<h3>Our Most Popular Posts</h3>"
|
| 835 |
-
msgstr "<h3>Nos articles les plus populaires</h3>"
|
| 836 |
-
|
| 837 |
-
#: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:170
|
| 838 |
-
msgid ""
|
| 839 |
-
"<ul>\n"
|
| 840 |
-
"<li><a href=\"http://www.mailpoet.com/the-importance-of-focus-when-writing/\">The Importance of Focus When Writing</a></li>\n"
|
| 841 |
-
"<li><a href=\"http://www.mailpoet.com/write-great-subject-line/\">How to Write a Great Subject Line</a></li>\n"
|
| 842 |
-
"<li><a href=\"http://www.mailpoet.com/just-sit-write-advice-motivation-ernest-hemingway/\">Just Sit Down and Write – Advice on Motivation from Ernest Hemingway</a></li>\n"
|
| 843 |
-
"</ul>"
|
| 844 |
-
msgstr "<ul>\n<li><a href=\"http://www.mailpoet.com/the-importance-of-focus-when-writing/\">L’importance de la concentration pendant la rédaction</a></li>\n<li><a href=\"http://www.mailpoet.com/write-great-subject-line/\">Comment rédiger une bonne ligne de sujet</a></li>\n<li><a href=\"http://www.mailpoet.com/just-sit-write-advice-motivation-ernest-hemingway/\">Installez-vous et écrivez – Conseil sur la motivation par Ernest Hemingway</a></li>\n</ul>"
|
| 845 |
-
|
| 846 |
-
#: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:185
|
| 847 |
-
msgid "<h3>What's Next?</h3>"
|
| 848 |
-
msgstr "<h3>Et ensuite ?</h3>"
|
| 849 |
-
|
| 850 |
-
#: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:189
|
| 851 |
-
msgid ""
|
| 852 |
-
"<p>Add a single button to your newsletter in order to have one clear call-"
|
| 853 |
-
"to-action, which will increase your click rates.</p>"
|
| 854 |
-
msgstr "<p>Ajoutez un seul bouton à votre newsletter afin de créer un appel à action clair, ce qui augmentera votre taux de clic.</p>"
|
| 855 |
-
|
| 856 |
-
#: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:193
|
| 857 |
-
msgid "Read up!"
|
| 858 |
-
msgstr "Renseignez vous !"
|
| 859 |
-
|
| 860 |
-
#: lib/Config/PopulatorData/Templates/WelcomeBlank1Column.php:16
|
| 861 |
-
msgid "Welcome Email: Blank 1 Column"
|
| 862 |
-
msgstr "E-mail de bienvenue : Vide, 1 Colonne"
|
| 863 |
-
|
| 864 |
-
#: lib/Config/PopulatorData/Templates/WelcomeBlank1Column.php:17
|
| 865 |
-
msgid "A blank Welcome Email template with a 1 column layout."
|
| 866 |
-
msgstr "Un modèle d’e-mail de bienvenue vide avec une mise en page en 1 colonne."
|
| 867 |
-
|
| 868 |
-
#: lib/Config/PopulatorData/Templates/WelcomeBlank1Column.php:119
|
| 869 |
-
msgid ""
|
| 870 |
-
"<h1 style=\"text-align: center;\"><strong>Hi, new subscriber!</strong></h1>\n"
|
| 871 |
-
"<p></p>\n"
|
| 872 |
-
"<p>[subscriber:firstname | default:Subscriber],</p>\n"
|
| 873 |
-
"<p></p>\n"
|
| 874 |
-
"<p>You recently joined our list and we'd like to give you a warm welcome!</p>\n"
|
| 875 |
-
"<p></p>\n"
|
| 876 |
-
"<p>Want to get to know us better? Check out some of our most popular articles: </p>\n"
|
| 877 |
-
"<ol>\n"
|
| 878 |
-
"<li><a href=\"http://www.mailpoet.com/the-importance-of-focus-when-writing/\">The Importance of Focus When Writing</a></li>\n"
|
| 879 |
-
"<li><a href=\"http://www.mailpoet.com/write-great-subject-line/\">How to Write a Great Subject Line</a></li>\n"
|
| 880 |
-
"<li><a href=\"http://www.mailpoet.com/just-sit-write-advice-motivation-ernest-hemingway/\">Just Sit Down and Write – Advice on Motivation from Ernest Hemingway</a></li>\n"
|
| 881 |
-
"</ol>"
|
| 882 |
-
msgstr "<h1 style=\"text-align: center;\"><strong>Bonjour !</strong></h1>\n<p></p>\n<p>[subscriber:firstname | default:Abonné],</p>\n<p></p>\n<p>Vous avez récemment rejoint notre liste et nous vous souhaitons la bienvenue !</p>\n<p></p>\n<p>Vous voulez mieux nous connaître ? Découvrez quelques-uns de nos articles les plus populaires :</p>\n<ol>\n<li><a href=\"http://www.mailpoet.com/the-importance-of-focus-when-writing/\">L’importance de la concentration pendant la rédaction</a></li>\n<li><a href=\"http://www.mailpoet.com/write-great-subject-line/\">Comment rédiger une bonne ligne de sujet</a></li>\n<li><a href=\"http://www.mailpoet.com/just-sit-write-advice-motivation-ernest-hemingway/\">Installez-vous et écrivez – Conseil sur la motivation par Ernest Hemingway</a></li>\n</ol>"
|
| 883 |
-
|
| 884 |
-
#: lib/Config/Renderer.php:88
|
| 885 |
-
msgid ""
|
| 886 |
-
"Failed to render template \"%s\". Please ensure the template cache folder "
|
| 887 |
-
"\"%s\" exists and has write permissions. Terminated with error: \"%s\""
|
| 888 |
-
msgstr "Erreur de rendu du modèle « %s ». Veuillez vous assurer que le répertoire de cache du modèle « %s » existe et que des permissions d’écriture lui sont accordées. Terminé avec l’erreur : « %s »"
|
| 889 |
-
|
| 890 |
-
#: lib/Config/RequirementsChecker.php:64
|
| 891 |
-
msgid ""
|
| 892 |
-
"This plugin requires write permissions inside the /wp-content/uploads "
|
| 893 |
-
"folder. Please read our [link]instructions[/link] on how to resolve this "
|
| 894 |
-
"issue."
|
| 895 |
-
msgstr "Cette extension nécessite des permissions en écriture sur le répertoire /wp-content/uploads. Veuillez lire nos [link]instructions[/link] sur la façon de corriger ce problème."
|
| 896 |
-
|
| 897 |
-
#: lib/Config/RequirementsChecker.php:84
|
| 898 |
-
msgid ""
|
| 899 |
-
"This plugin requires the PDO_MYSQL PHP extension. Please read our "
|
| 900 |
-
"[link]instructions[/link] on how to resolve this issue."
|
| 901 |
-
msgstr "Cette extension nécessite l’extension PDO_MYSQL_PHP. Veuillez lire nos [link]instructions[/link] sur la façon de corriger ce problème."
|
| 902 |
-
|
| 903 |
-
#: lib/Config/RequirementsChecker.php:102
|
| 904 |
-
msgid ""
|
| 905 |
-
"A MailPoet dependency (%s) does not appear to be loaded correctly, thus "
|
| 906 |
-
"MailPoet will not work correctly. Please reinstall the plugin."
|
| 907 |
-
msgstr "Une dépendance de MailPoet (%s) ne semble pas être correctement chargée, MailPoet ne fonctionnera pas correctement. Veuillez réinstaller l’extension."
|
| 908 |
-
|
| 909 |
-
#: lib/Config/RequirementsChecker.php:113
|
| 910 |
-
msgid ""
|
| 911 |
-
"MailPoet has detected a dependency conflict (%s) with another plugin (%s), "
|
| 912 |
-
"which may cause unexpected behavior. Please disable the offending plugin to "
|
| 913 |
-
"fix this issue."
|
| 914 |
-
msgstr "MailPoet a détecté un conflit de dépendance (%s) avec une autre extension (%s) ce qui peut causer un comportement inattendu. Veuillez désactiver l’extension en cause pour corriger ce problème."
|
| 915 |
-
|
| 916 |
-
#: lib/Config/ServicesChecker.php:25
|
| 917 |
-
msgid ""
|
| 918 |
-
"All sending is currently paused! Your key to send with MailPoet is invalid. "
|
| 919 |
-
"[link]Visit MailPoet.com to purchase a key[/link]"
|
| 920 |
-
msgstr "Tous les envois sont actuellement suspendus ! Votre clé pour envoyer avec MailPoet n’est pas valide. [link]Rendez-vous sur MailPoet.com pour acheter une clé[/link]"
|
| 921 |
-
|
| 922 |
-
#: lib/Config/ServicesChecker.php:37
|
| 923 |
-
msgid ""
|
| 924 |
-
"Your newsletters are awesome! Don't forget to [link]upgrade your MailPoet "
|
| 925 |
-
"email plan[/link] by %s to keep sending them to your subscribers."
|
| 926 |
-
msgstr "Vos newsletters sont formidables ! N’oubliez pas de [link]mettre à jour votre formule d’e-mail MailPoet[/link] par %s pour continuer à les envoyer à vos abonnés."
|
| 927 |
-
|
| 928 |
-
#: lib/Config/Shortcodes.php:85
|
| 929 |
-
msgid "Oops! There are no newsletters to display."
|
| 930 |
-
msgstr "Aie ! Il n’y a aucune newsletter à afficher."
|
| 931 |
-
|
| 932 |
-
#: lib/Config/Shortcodes.php:125
|
| 933 |
-
msgid "Preview in a new tab"
|
| 934 |
-
msgstr "Aperçu dans un nouvel onglet"
|
| 935 |
-
|
| 936 |
-
#: lib/Cron/CronHelper.php:99
|
| 937 |
-
msgid "Site URL is unreachable."
|
| 938 |
-
msgstr "L’URL du site est inaccessible."
|
| 939 |
-
|
| 940 |
-
#: lib/Cron/CronHelper.php:105
|
| 941 |
-
msgid "Maximum execution time has been reached."
|
| 942 |
-
msgstr "Le temps maximum d’exécution a été atteint."
|
| 943 |
-
|
| 944 |
-
#: lib/Cron/Daemon.php:31
|
| 945 |
-
msgid "Invalid or missing request data."
|
| 946 |
-
msgstr "Données de requête non valides ou manquantes."
|
| 947 |
-
|
| 948 |
-
#: lib/Cron/Daemon.php:34
|
| 949 |
-
msgid "Daemon does not exist."
|
| 950 |
-
msgstr "Le démon n’existe pas."
|
| 951 |
-
|
| 952 |
-
#: lib/Form/Block/Base.php:10
|
| 953 |
-
msgid "Please specify a valid email address."
|
| 954 |
-
msgstr "Veuillez spécifier une adresse de messagerie valide."
|
| 955 |
-
|
| 956 |
-
#: lib/Form/Block/Base.php:18 views/form/editor.html:55
|
| 957 |
-
#: views/newsletters.html:153
|
| 958 |
-
msgid "Please select a list"
|
| 959 |
-
msgstr "Veuillez sélectionner une liste"
|
| 960 |
-
|
| 961 |
-
#: lib/Form/Block/Base.php:28
|
| 962 |
-
msgid "Please specify a valid phone number"
|
| 963 |
-
msgstr "Veuillez spécifier un numéro de téléphone valide"
|
| 964 |
-
|
| 965 |
-
#: lib/Form/Block/Base.php:37
|
| 966 |
-
msgid "Please select at least one option"
|
| 967 |
-
msgstr "Veuillez sélectionner au moins une option"
|
| 968 |
-
|
| 969 |
-
#: lib/Form/Block/Date.php:75
|
| 970 |
-
msgid "Please select a day"
|
| 971 |
-
msgstr "Veuillez sélectionner un jour"
|
| 972 |
-
|
| 973 |
-
#: lib/Form/Block/Date.php:77 lib/Form/Block/Date.php:199
|
| 974 |
-
#: views/form/templates/blocks/date_days.hbs:3 views/settings/bounce.html:252
|
| 975 |
-
#: views/subscribers/subscribers.html:88
|
| 976 |
-
msgid "Day"
|
| 977 |
-
msgstr "Jour"
|
| 978 |
-
|
| 979 |
-
#: lib/Form/Block/Date.php:84
|
| 980 |
-
msgid "Please select a month"
|
| 981 |
-
msgstr "Veuillez sélectionner un mois"
|
| 982 |
-
|
| 983 |
-
#: lib/Form/Block/Date.php:86 lib/Form/Block/Date.php:143
|
| 984 |
-
#: views/form/templates/blocks/date_months.hbs:3
|
| 985 |
-
#: views/subscribers/subscribers.html:87
|
| 986 |
-
msgid "Month"
|
| 987 |
-
msgstr "Mois"
|
| 988 |
-
|
| 989 |
-
#: lib/Form/Block/Date.php:93
|
| 990 |
-
msgid "Please select a year"
|
| 991 |
-
msgstr "Veuillez sélectionner une année"
|
| 992 |
-
|
| 993 |
-
#: lib/Form/Block/Date.php:95 lib/Form/Block/Date.php:111
|
| 994 |
-
#: lib/Form/Block/Date.php:173
|
| 995 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:74
|
| 996 |
-
#: views/form/templates/blocks/date_years.hbs:5
|
| 997 |
-
#: views/subscribers/subscribers.html:86
|
| 998 |
-
msgid "Year"
|
| 999 |
-
msgstr "Année"
|
| 1000 |
-
|
| 1001 |
-
#: lib/Form/Block/Date.php:108
|
| 1002 |
-
msgid "Year, month, day"
|
| 1003 |
-
msgstr "Année, mois, jour"
|
| 1004 |
-
|
| 1005 |
-
#: lib/Form/Block/Date.php:109
|
| 1006 |
-
msgid "Year, month"
|
| 1007 |
-
msgstr "Année, mois"
|
| 1008 |
-
|
| 1009 |
-
#: lib/Form/Block/Date.php:110
|
| 1010 |
-
msgid "Month (January, February,...)"
|
| 1011 |
-
msgstr "Mois (janvier, février…)"
|
| 1012 |
-
|
| 1013 |
-
#: lib/Form/Block/Date.php:124 views/newsletters.html:175
|
| 1014 |
-
#: views/subscribers/importExport/import.html:56
|
| 1015 |
-
msgid "January"
|
| 1016 |
-
msgstr "janvier"
|
| 1017 |
-
|
| 1018 |
-
#: lib/Form/Block/Date.php:124 views/newsletters.html:176
|
| 1019 |
-
#: views/subscribers/importExport/import.html:57
|
| 1020 |
-
msgid "February"
|
| 1021 |
-
msgstr "février"
|
| 1022 |
-
|
| 1023 |
-
#: lib/Form/Block/Date.php:124 views/newsletters.html:177
|
| 1024 |
-
#: views/subscribers/importExport/import.html:58
|
| 1025 |
-
msgid "March"
|
| 1026 |
-
msgstr "mars"
|
| 1027 |
-
|
| 1028 |
-
#: lib/Form/Block/Date.php:124 views/newsletters.html:178
|
| 1029 |
-
#: views/subscribers/importExport/import.html:59
|
| 1030 |
-
msgid "April"
|
| 1031 |
-
msgstr "avril"
|
| 1032 |
-
|
| 1033 |
-
#: lib/Form/Block/Date.php:125 views/newsletters.html:179
|
| 1034 |
-
#: views/newsletters.html:191 views/subscribers/importExport/import.html:60
|
| 1035 |
-
msgid "May"
|
| 1036 |
-
msgstr "mai"
|
| 1037 |
-
|
| 1038 |
-
#: lib/Form/Block/Date.php:125 views/newsletters.html:180
|
| 1039 |
-
#: views/subscribers/importExport/import.html:61
|
| 1040 |
-
msgid "June"
|
| 1041 |
-
msgstr "juin"
|
| 1042 |
-
|
| 1043 |
-
#: lib/Form/Block/Date.php:125 views/newsletters.html:181
|
| 1044 |
-
#: views/subscribers/importExport/import.html:62
|
| 1045 |
-
msgid "July"
|
| 1046 |
-
msgstr "juillet"
|
| 1047 |
-
|
| 1048 |
-
#: lib/Form/Block/Date.php:125 views/newsletters.html:182
|
| 1049 |
-
#: views/subscribers/importExport/import.html:63
|
| 1050 |
-
msgid "August"
|
| 1051 |
-
msgstr "août"
|
| 1052 |
-
|
| 1053 |
-
#: lib/Form/Block/Date.php:125 views/newsletters.html:183
|
| 1054 |
-
#: views/subscribers/importExport/import.html:64
|
| 1055 |
-
msgid "September"
|
| 1056 |
-
msgstr "septembre"
|
| 1057 |
-
|
| 1058 |
-
#: lib/Form/Block/Date.php:126 views/newsletters.html:184
|
| 1059 |
-
#: views/subscribers/importExport/import.html:65
|
| 1060 |
-
msgid "October"
|
| 1061 |
-
msgstr "octobre"
|
| 1062 |
-
|
| 1063 |
-
#: lib/Form/Block/Date.php:126 views/newsletters.html:185
|
| 1064 |
-
#: views/subscribers/importExport/import.html:66
|
| 1065 |
-
msgid "November"
|
| 1066 |
-
msgstr "novembre"
|
| 1067 |
-
|
| 1068 |
-
#: lib/Form/Block/Date.php:126 views/newsletters.html:186
|
| 1069 |
-
#: views/subscribers/importExport/import.html:67
|
| 1070 |
-
msgid "December"
|
| 1071 |
-
msgstr "décembre"
|
| 1072 |
-
|
| 1073 |
-
#: lib/Form/Util/Export.php:55
|
| 1074 |
-
msgid "BEGIN Scripts: you should place them in the header of your theme"
|
| 1075 |
-
msgstr "DÉBUT des scripts : vous devez les placer dans l’en-tête de votre thème "
|
| 1076 |
-
|
| 1077 |
-
#: lib/Form/Util/Export.php:87
|
| 1078 |
-
msgid "END Scripts"
|
| 1079 |
-
msgstr "Fin des scripts"
|
| 1080 |
-
|
| 1081 |
-
#: lib/Form/Widget.php:14
|
| 1082 |
-
msgid "MailPoet Form"
|
| 1083 |
-
msgstr "Formulaire MailPoet"
|
| 1084 |
-
|
| 1085 |
-
#: lib/Form/Widget.php:16
|
| 1086 |
-
msgid "Add a newsletter subscription form"
|
| 1087 |
-
msgstr "Ajouter un formulaire d’abonnement de newsletter"
|
| 1088 |
-
|
| 1089 |
-
#: lib/Form/Widget.php:39
|
| 1090 |
-
msgid "Subscribe to Our Newsletter"
|
| 1091 |
-
msgstr "Abonnez-vous à notre newsletter"
|
| 1092 |
-
|
| 1093 |
-
#: lib/Form/Widget.php:54
|
| 1094 |
-
msgid "Title:"
|
| 1095 |
-
msgstr "Titre :"
|
| 1096 |
-
|
| 1097 |
-
#: lib/Form/Widget.php:74
|
| 1098 |
-
msgid "Create a new form"
|
| 1099 |
-
msgstr "Créer un nouveau formulaire"
|
| 1100 |
-
|
| 1101 |
-
#: lib/Mailer/Mailer.php:83
|
| 1102 |
-
msgid "Mailing method does not exist."
|
| 1103 |
-
msgstr "La méthode de publipostage n’existe pas."
|
| 1104 |
-
|
| 1105 |
-
#: lib/Mailer/Mailer.php:91
|
| 1106 |
-
msgid "Mailer is not configured."
|
| 1107 |
-
msgstr "Le mailer n’est pas configuré."
|
| 1108 |
-
|
| 1109 |
-
#: lib/Mailer/Mailer.php:108
|
| 1110 |
-
msgid "Sender name and email are not configured."
|
| 1111 |
-
msgstr "Le nom et l’e-mail de l’expéditeur ne sont pas configurés."
|
| 1112 |
-
|
| 1113 |
-
#: lib/Mailer/MailerLog.php:51
|
| 1114 |
-
msgid "Sending has been paused."
|
| 1115 |
-
msgstr "L’envoi a été suspendu."
|
| 1116 |
-
|
| 1117 |
-
#: lib/Mailer/MailerLog.php:55
|
| 1118 |
-
msgid "Sending is waiting to be retried."
|
| 1119 |
-
msgstr "L’envoi est en attente de nouvel essai."
|
| 1120 |
-
|
| 1121 |
-
#: lib/Mailer/MailerLog.php:63
|
| 1122 |
-
msgid "Sending frequency limit has been reached."
|
| 1123 |
-
msgstr "La limite de fréquence d’envoi a été atteinte."
|
| 1124 |
-
|
| 1125 |
-
#: lib/Mailer/Methods/AmazonSES.php:35
|
| 1126 |
-
msgid "Unsupported Amazon SES region"
|
| 1127 |
-
msgstr "Région Amazon SES non supportée."
|
| 1128 |
-
|
| 1129 |
-
#: lib/Mailer/Methods/AmazonSES.php:64 lib/Mailer/Methods/PHPMail.php:33
|
| 1130 |
-
#: lib/Mailer/Methods/SMTP.php:47 lib/Mailer/Methods/SendGrid.php:32
|
| 1131 |
-
msgid "%s has returned an unknown error."
|
| 1132 |
-
msgstr "%s a retourné une erreur inconnue."
|
| 1133 |
-
|
| 1134 |
-
#: lib/Mailer/Methods/MailPoet.php:26
|
| 1135 |
-
msgid "MailPoet API key is invalid!"
|
| 1136 |
-
msgstr "Votre clé MailPoet n’est pas valide !"
|
| 1137 |
-
|
| 1138 |
-
#: lib/Models/CustomField.php:14 lib/Models/Form.php:13
|
| 1139 |
-
#: lib/Models/NewsletterOptionField.php:12
|
| 1140 |
-
#: lib/Models/NewsletterTemplate.php:13 lib/Models/Segment.php:13
|
| 1141 |
-
#: lib/Models/Setting.php:22
|
| 1142 |
-
msgid "Please specify a name."
|
| 1143 |
-
msgstr "Veuillez spécifier un nom."
|
| 1144 |
-
|
| 1145 |
-
#: lib/Models/CustomField.php:17 lib/Models/Newsletter.php:27
|
| 1146 |
-
msgid "Please specify a type."
|
| 1147 |
-
msgstr "Veuillez spécifier un type."
|
| 1148 |
-
|
| 1149 |
-
#: lib/Models/Form.php:93 lib/Models/Newsletter.php:464
|
| 1150 |
-
#: lib/Models/Segment.php:126 lib/Models/Subscriber.php:343
|
| 1151 |
-
msgid "All"
|
| 1152 |
-
msgstr "Toutes"
|
| 1153 |
-
|
| 1154 |
-
#: lib/Models/Form.php:98 lib/Models/Newsletter.php:534
|
| 1155 |
-
#: lib/Models/Segment.php:131 lib/Models/Subscriber.php:368
|
| 1156 |
-
#: views/forms.html:56 views/newsletters.html:75 views/segments.html:50
|
| 1157 |
-
#: views/subscribers/subscribers.html:34
|
| 1158 |
-
msgid "Trash"
|
| 1159 |
-
msgstr "Corbeille"
|
| 1160 |
-
|
| 1161 |
-
#: lib/Models/Model.php:53
|
| 1162 |
-
#: views/subscribers/importExport/import/step2.html:140
|
| 1163 |
-
msgid "Another record already exists. Please specify a different \"%1$s\"."
|
| 1164 |
-
msgstr "Un autre enregistrement existe déjà. Veuillez spécifier un « %1$s » différent."
|
| 1165 |
-
|
| 1166 |
-
#: lib/Models/Newsletter.php:229
|
| 1167 |
-
msgid "Deleted list"
|
| 1168 |
-
msgstr "Liste supprimée"
|
| 1169 |
-
|
| 1170 |
-
#: lib/Models/Newsletter.php:365 lib/Models/Subscriber.php:279
|
| 1171 |
-
#: lib/Subscribers/ImportExport/Export/Export.php:170
|
| 1172 |
-
msgid "All Lists"
|
| 1173 |
-
msgstr "Toutes les listes"
|
| 1174 |
-
|
| 1175 |
-
#: lib/Models/Newsletter.php:476
|
| 1176 |
-
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:12
|
| 1177 |
-
msgid "Draft"
|
| 1178 |
-
msgstr "Brouillon"
|
| 1179 |
-
|
| 1180 |
-
#: lib/Models/Newsletter.php:484
|
| 1181 |
-
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:11
|
| 1182 |
-
msgid "Scheduled"
|
| 1183 |
-
msgstr "Planifié"
|
| 1184 |
-
|
| 1185 |
-
#: lib/Models/Newsletter.php:492
|
| 1186 |
-
msgid "Sending"
|
| 1187 |
-
msgstr "En cours d’envoi"
|
| 1188 |
-
|
| 1189 |
-
#: lib/Models/Newsletter.php:500
|
| 1190 |
-
msgid "Sent"
|
| 1191 |
-
msgstr "Envoyé"
|
| 1192 |
-
|
| 1193 |
-
#: lib/Models/Newsletter.php:514 views/newsletters.html:83
|
| 1194 |
-
msgid "Active"
|
| 1195 |
-
msgstr "Activé"
|
| 1196 |
-
|
| 1197 |
-
#: lib/Models/Newsletter.php:522
|
| 1198 |
-
msgid "Not active"
|
| 1199 |
-
msgstr "Désactivé"
|
| 1200 |
-
|
| 1201 |
-
#: lib/Models/NewsletterOptionField.php:15
|
| 1202 |
-
msgid "Please specify a newsletter type."
|
| 1203 |
-
msgstr "Veuillez spécifier un type de newsletter."
|
| 1204 |
-
|
| 1205 |
-
#: lib/Models/NewsletterTemplate.php:16
|
| 1206 |
-
msgid "The template body cannot be empty."
|
| 1207 |
-
msgstr "Le corps du modèle ne peut pas être vide."
|
| 1208 |
-
|
| 1209 |
-
#: lib/Models/Segment.php:107 views/subscribers/subscribers.html:82
|
| 1210 |
-
msgid "WordPress Users"
|
| 1211 |
-
msgstr "Utilisateurs WordPress"
|
| 1212 |
-
|
| 1213 |
-
#: lib/Models/Segment.php:109
|
| 1214 |
-
msgid "This list contains all of your WordPress users."
|
| 1215 |
-
msgstr "Cette liste contient tous vos utilisateurs WordPress."
|
| 1216 |
-
|
| 1217 |
-
#: lib/Models/Segment.php:193
|
| 1218 |
-
msgid "Not in a List"
|
| 1219 |
-
msgstr "Dans aucune liste"
|
| 1220 |
-
|
| 1221 |
-
#: lib/Models/Setting.php:48
|
| 1222 |
-
msgid "Confirm your subscription to %1$s"
|
| 1223 |
-
msgstr "Confirmation de votre abonnement à %1$s"
|
| 1224 |
-
|
| 1225 |
-
#: lib/Models/Setting.php:49
|
| 1226 |
-
msgid ""
|
| 1227 |
-
"Hello!\n"
|
| 1228 |
-
"\n"
|
| 1229 |
-
"Hurray! You've subscribed to our site.\n"
|
| 1230 |
-
"\n"
|
| 1231 |
-
"Please confirm your subscription to the list(s): [lists_to_confirm] by clicking the link below: \n"
|
| 1232 |
-
"\n"
|
| 1233 |
-
"[activation_link]Click here to confirm your subscription.[/activation_link]\n"
|
| 1234 |
-
"\n"
|
| 1235 |
-
"Thank you,\n"
|
| 1236 |
-
"\n"
|
| 1237 |
-
"The Team"
|
| 1238 |
-
msgstr "Bonjour ! \n\nFélicitations ! Vous êtes abonné(e) à notre site.\n\nVous devez cependant activer votre abonnement à [lists_to_confirm] en cliquant sur le lien ci-dessous : \n\n[activation_link]Cliquez ici pour confirmer votre abonnement.[/activation_link]\n\nMerci, \n\nL’équipe !"
|
| 1239 |
-
|
| 1240 |
-
#: lib/Models/Subscriber.php:24
|
| 1241 |
-
msgid "Please enter your email address"
|
| 1242 |
-
msgstr "Veuillez saisir votre adresse e-mail."
|
| 1243 |
-
|
| 1244 |
-
#: lib/Models/Subscriber.php:25
|
| 1245 |
-
msgid "Your email address is invalid!"
|
| 1246 |
-
msgstr "Votre adresse e-mail n’est pas valide !"
|
| 1247 |
-
|
| 1248 |
-
#: lib/Models/Subscriber.php:193
|
| 1249 |
-
msgid "You need to wait before subscribing again."
|
| 1250 |
-
msgstr "Vous devez attendre avant de vous abonner à nouveau."
|
| 1251 |
-
|
| 1252 |
-
#: lib/Models/Subscriber.php:287
|
| 1253 |
-
msgid "Subscribers without a list (%s)"
|
| 1254 |
-
msgstr "Abonnés dans aucune liste (%s)"
|
| 1255 |
-
|
| 1256 |
-
#: lib/Models/Subscriber.php:348 lib/Subscription/Pages.php:289
|
| 1257 |
-
#: views/segments.html:30 views/subscribers/subscribers.html:52
|
| 1258 |
-
msgid "Subscribed"
|
| 1259 |
-
msgstr "Abonné"
|
| 1260 |
-
|
| 1261 |
-
#: lib/Models/Subscriber.php:353 views/segments.html:31
|
| 1262 |
-
#: views/subscribers/subscribers.html:51
|
| 1263 |
-
msgid "Unconfirmed"
|
| 1264 |
-
msgstr "Non confirmé"
|
| 1265 |
-
|
| 1266 |
-
#: lib/Models/Subscriber.php:358 lib/Subscription/Pages.php:297
|
| 1267 |
-
#: views/segments.html:32 views/subscribers/subscribers.html:53
|
| 1268 |
-
msgid "Unsubscribed"
|
| 1269 |
-
msgstr "Désabonné"
|
| 1270 |
-
|
| 1271 |
-
#: lib/Models/Subscriber.php:363 lib/Subscription/Pages.php:305
|
| 1272 |
-
#: views/segments.html:33 views/subscribers/subscribers.html:54
|
| 1273 |
-
msgid "Bounced"
|
| 1274 |
-
msgstr "Retourné"
|
| 1275 |
-
|
| 1276 |
-
#: lib/Newsletter/Editor/PostContentManager.php:81
|
| 1277 |
-
msgid "Click here to view media."
|
| 1278 |
-
msgstr "Cliquez-ici pour voir le média."
|
| 1279 |
-
|
| 1280 |
-
#: lib/Newsletter/Shortcodes/Categories/Link.php:32
|
| 1281 |
-
#: views/newsletter/editor.html:1037
|
| 1282 |
-
msgid "Unsubscribe"
|
| 1283 |
-
msgstr "Se désabonner"
|
| 1284 |
-
|
| 1285 |
-
#: lib/Newsletter/Shortcodes/Categories/Link.php:53
|
| 1286 |
-
#: views/newsletter/editor.html:1037
|
| 1287 |
-
msgid "Manage subscription"
|
| 1288 |
-
msgstr "Gestion de l’abonnement"
|
| 1289 |
-
|
| 1290 |
-
#: lib/Newsletter/Shortcodes/Categories/Link.php:77
|
| 1291 |
-
msgid "View in your browser"
|
| 1292 |
-
msgstr "Afficher dans votre navigateur"
|
| 1293 |
-
|
| 1294 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:10
|
| 1295 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:95
|
| 1296 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:96
|
| 1297 |
-
#: views/subscribers/subscribers.html:60
|
| 1298 |
-
msgid "Subscriber"
|
| 1299 |
-
msgstr "Abonné"
|
| 1300 |
-
|
| 1301 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:12
|
| 1302 |
-
msgid "First Name"
|
| 1303 |
-
msgstr "Prénom"
|
| 1304 |
-
|
| 1305 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:16
|
| 1306 |
-
msgid "Last Name"
|
| 1307 |
-
msgstr "Nom"
|
| 1308 |
-
|
| 1309 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:20
|
| 1310 |
-
msgid "Email Address"
|
| 1311 |
-
msgstr "Adresse e-mail"
|
| 1312 |
-
|
| 1313 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:24
|
| 1314 |
-
msgid "WordPress User Display Name"
|
| 1315 |
-
msgstr "Nom d’affichage de l’utilisateur WordPress"
|
| 1316 |
-
|
| 1317 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:28
|
| 1318 |
-
msgid "Total Number of Subscribers"
|
| 1319 |
-
msgstr "Nombre total d’abonnés"
|
| 1320 |
-
|
| 1321 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:34
|
| 1322 |
-
msgid "Newsletter Subject"
|
| 1323 |
-
msgstr "Sujet de la newsletter"
|
| 1324 |
-
|
| 1325 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:38 views/newsletters.html:27
|
| 1326 |
-
msgid "Post Notifications"
|
| 1327 |
-
msgstr "Notifications d’article"
|
| 1328 |
-
|
| 1329 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:40
|
| 1330 |
-
msgid "Total Number of Posts or Pages"
|
| 1331 |
-
msgstr "Nombre total d’articles ou de pages"
|
| 1332 |
-
|
| 1333 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:44
|
| 1334 |
-
msgid "Most Recent Post Title"
|
| 1335 |
-
msgstr "Titre de l’article le plus récent"
|
| 1336 |
-
|
| 1337 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:48
|
| 1338 |
-
msgid "Issue Number"
|
| 1339 |
-
msgstr "Le numéro"
|
| 1340 |
-
|
| 1341 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:52
|
| 1342 |
-
#: views/form/templates/settings/field_form.hbs:41
|
| 1343 |
-
msgid "Date"
|
| 1344 |
-
msgstr "Date"
|
| 1345 |
-
|
| 1346 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:54
|
| 1347 |
-
msgid "Current day of the month number"
|
| 1348 |
-
msgstr "Le chiffre du jour en cours"
|
| 1349 |
-
|
| 1350 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:58
|
| 1351 |
-
msgid "Current day of the month in ordinal form, i.e. 2nd, 3rd, 4th, etc."
|
| 1352 |
-
msgstr "Le jour actuel du mois en forme ordinale. Ex : 2nd, 3ème, 4ème, etc."
|
| 1353 |
-
|
| 1354 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:62
|
| 1355 |
-
msgid "Full name of current day"
|
| 1356 |
-
msgstr "Le nom complet du jour en cours"
|
| 1357 |
-
|
| 1358 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:66
|
| 1359 |
-
msgid "Current month number"
|
| 1360 |
-
msgstr "Le chiffre du mois en cours"
|
| 1361 |
-
|
| 1362 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:70
|
| 1363 |
-
msgid "Full name of current month"
|
| 1364 |
-
msgstr "Le nom complet du mois en cours"
|
| 1365 |
-
|
| 1366 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:78
|
| 1367 |
-
#: views/newsletter/templates/blocks/footer/settings.hbs:22
|
| 1368 |
-
#: views/newsletter/templates/blocks/header/settings.hbs:22
|
| 1369 |
-
#: views/newsletter/templates/components/sidebar/styles.hbs:68
|
| 1370 |
-
msgid "Links"
|
| 1371 |
-
msgstr "Liens"
|
| 1372 |
-
|
| 1373 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:80
|
| 1374 |
-
msgid "Unsubscribe link"
|
| 1375 |
-
msgstr "Le lien du Désabonnement"
|
| 1376 |
-
|
| 1377 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:84
|
| 1378 |
-
msgid "Edit subscription page link"
|
| 1379 |
-
msgstr "Modifier le lien de la page d’abonnements"
|
| 1380 |
-
|
| 1381 |
-
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:88
|
| 1382 |
-
msgid "View in browser link"
|
| 1383 |
-
msgstr "Lien pour voir dans le navigateur"
|
| 1384 |
-
|
| 1385 |
-
#: lib/Router/Router.php:34
|
| 1386 |
-
msgid "Invalid router endpoint"
|
| 1387 |
-
msgstr "Point de terminaison de routeur non valide"
|
| 1388 |
-
|
| 1389 |
-
#: lib/Router/Router.php:38
|
| 1390 |
-
msgid "Invalid router endpoint action"
|
| 1391 |
-
msgstr "Action de point de terminaison de routeur non valide"
|
| 1392 |
-
|
| 1393 |
-
#: lib/Settings/Pages.php:12 lib/Settings/Pages.php:13
|
| 1394 |
-
#: lib/Settings/Pages.php:37 lib/Subscription/Pages.php:94
|
| 1395 |
-
msgid "MailPoet Page"
|
| 1396 |
-
msgstr "Page MailPoet"
|
| 1397 |
-
|
| 1398 |
-
#: lib/Subscribers/ImportExport/Export/Export.php:50
|
| 1399 |
-
msgid "The export file could not be saved on the server."
|
| 1400 |
-
msgstr "Impossible d’enregistrer le fichier d’exportation sur le serveur."
|
| 1401 |
-
|
| 1402 |
-
#: lib/Subscribers/ImportExport/Export/Export.php:53
|
| 1403 |
-
msgid "Export requires a ZIP extension to be installed on the host."
|
| 1404 |
-
msgstr "L’exportation nécessite qu’une extension ZIP soit installée sur l’hôte."
|
| 1405 |
-
|
| 1406 |
-
#: lib/Subscribers/ImportExport/Export/Export.php:82 views/segments.html:29
|
| 1407 |
-
msgid "List"
|
| 1408 |
-
msgstr "Liste"
|
| 1409 |
-
|
| 1410 |
-
#: lib/Subscribers/ImportExport/Export/Export.php:203
|
| 1411 |
-
msgid "Not In Segment"
|
| 1412 |
-
msgstr "Pas dans le segment"
|
| 1413 |
-
|
| 1414 |
-
#: lib/Subscribers/ImportExport/Import/Import.php:58
|
| 1415 |
-
msgid "Missing or invalid subscriber data."
|
| 1416 |
-
msgstr "Donnée d’abonné non valide ou manquante."
|
| 1417 |
-
|
| 1418 |
-
#: lib/Subscribers/ImportExport/Import/Import.php:111
|
| 1419 |
-
msgid "Unable to save imported subscribers."
|
| 1420 |
-
msgstr "Impossible d’enregistrer les abonnés importés."
|
| 1421 |
-
|
| 1422 |
-
#: lib/Subscribers/ImportExport/Import/MailChimp.php:128
|
| 1423 |
-
msgid "Invalid API Key."
|
| 1424 |
-
msgstr "Clé API non valide."
|
| 1425 |
-
|
| 1426 |
-
#: lib/Subscribers/ImportExport/Import/MailChimp.php:131
|
| 1427 |
-
msgid "Could not connect to your MailChimp account."
|
| 1428 |
-
msgstr "Impossible de se connecter à votre compte MailChimp."
|
| 1429 |
-
|
| 1430 |
-
#: lib/Subscribers/ImportExport/Import/MailChimp.php:134
|
| 1431 |
-
msgid "The selected lists do not have matching columns (headers)."
|
| 1432 |
-
msgstr "Les listes sélectionnées n’ont pas de colonnes correspondantes (en-têtes)."
|
| 1433 |
-
|
| 1434 |
-
#: lib/Subscribers/ImportExport/Import/MailChimp.php:137
|
| 1435 |
-
msgid ""
|
| 1436 |
-
"The information received from MailChimp is too large for processing. Please "
|
| 1437 |
-
"limit the number of lists!"
|
| 1438 |
-
msgstr "Les informations reçues depuis MailChimp sont trop grosses pour être traitées. Veuillez limiter le nombre de listes !"
|
| 1439 |
-
|
| 1440 |
-
#: lib/Subscribers/ImportExport/Import/MailChimp.php:140
|
| 1441 |
-
msgid "Did not find any active subscribers."
|
| 1442 |
-
msgstr "Impossible de trouver un abonné actif."
|
| 1443 |
-
|
| 1444 |
-
#: lib/Subscribers/ImportExport/Import/MailChimp.php:143
|
| 1445 |
-
msgid "Did not find any valid lists."
|
| 1446 |
-
msgstr "Impossible de trouver une liste valide."
|
| 1447 |
-
|
| 1448 |
-
#: lib/Subscribers/ImportExport/ImportExportFactory.php:20
|
| 1449 |
-
msgid "Not In List"
|
| 1450 |
-
msgstr "Non listé"
|
| 1451 |
-
|
| 1452 |
-
#: lib/Subscribers/ImportExport/ImportExportFactory.php:33
|
| 1453 |
-
#: lib/Subscription/Pages.php:266 views/form/editor.html:227
|
| 1454 |
-
#: views/form/editor.html:230 views/subscribers/subscribers.html:48
|
| 1455 |
-
msgid "First name"
|
| 1456 |
-
msgstr "Prénom"
|
| 1457 |
-
|
| 1458 |
-
#: lib/Subscribers/ImportExport/ImportExportFactory.php:34
|
| 1459 |
-
#: lib/Subscription/Pages.php:275 views/form/editor.html:236
|
| 1460 |
-
#: views/form/editor.html:239 views/subscribers/subscribers.html:49
|
| 1461 |
-
msgid "Last name"
|
| 1462 |
-
msgstr "Nom"
|
| 1463 |
-
|
| 1464 |
-
#: lib/Subscribers/ImportExport/ImportExportFactory.php:35
|
| 1465 |
-
#: lib/Subscription/Pages.php:285 views/newsletters.html:61
|
| 1466 |
-
#: views/subscribers/subscribers.html:50 views/subscribers/subscribers.html:61
|
| 1467 |
-
msgid "Status"
|
| 1468 |
-
msgstr "État"
|
| 1469 |
-
|
| 1470 |
-
#: lib/Subscribers/ImportExport/ImportExportFactory.php:74
|
| 1471 |
-
msgid "Ignore field..."
|
| 1472 |
-
msgstr "Ignorer le champ..."
|
| 1473 |
-
|
| 1474 |
-
#: lib/Subscribers/ImportExport/ImportExportFactory.php:78
|
| 1475 |
-
msgid "Create new field..."
|
| 1476 |
-
msgstr "Créer un nouveau champ..."
|
| 1477 |
-
|
| 1478 |
-
#: lib/Subscribers/ImportExport/ImportExportFactory.php:84
|
| 1479 |
-
msgid "Select all..."
|
| 1480 |
-
msgstr "Tout sélectionner…"
|
| 1481 |
-
|
| 1482 |
-
#: lib/Subscribers/ImportExport/ImportExportFactory.php:88
|
| 1483 |
-
msgid "Deselect all..."
|
| 1484 |
-
msgstr "Tout désélectionner…"
|
| 1485 |
-
|
| 1486 |
-
#: lib/Subscribers/ImportExport/ImportExportFactory.php:93
|
| 1487 |
-
msgid "Actions"
|
| 1488 |
-
msgstr "Actions"
|
| 1489 |
-
|
| 1490 |
-
#: lib/Subscribers/ImportExport/ImportExportFactory.php:97
|
| 1491 |
-
msgid "System fields"
|
| 1492 |
-
msgstr "Champs système"
|
| 1493 |
-
|
| 1494 |
-
#: lib/Subscribers/ImportExport/ImportExportFactory.php:103
|
| 1495 |
-
#: views/subscribers/importExport/import.html:52
|
| 1496 |
-
msgid "User fields"
|
| 1497 |
-
msgstr "Champs utilisateur"
|
| 1498 |
-
|
| 1499 |
-
#: lib/Subscription/Comment.php:23 lib/Subscription/Registration.php:11
|
| 1500 |
-
msgid "Yes, please add me to your mailing list."
|
| 1501 |
-
msgstr "Oui, veuillez m’ajouter à votre liste de diffusion."
|
| 1502 |
-
|
| 1503 |
-
#: lib/Subscription/Pages.php:90
|
| 1504 |
-
msgid "Hmmm... we don't have a record of you."
|
| 1505 |
-
msgstr "Hummm… nous n’avons aucune trace de vous."
|
| 1506 |
-
|
| 1507 |
-
#: lib/Subscription/Pages.php:120
|
| 1508 |
-
msgid ""
|
| 1509 |
-
"Your email address doesn't appear in our lists anymore. Sign up again or "
|
| 1510 |
-
"contact us if this appears to be a mistake."
|
| 1511 |
-
msgstr "Votre adresse e-mail n’apparaît plus dans nos listes. Inscrivez-vous à nouveau ou contactez-nous si cela semble être une erreur."
|
| 1512 |
-
|
| 1513 |
-
#: lib/Subscription/Pages.php:164 lib/Subscription/Pages.php:176
|
| 1514 |
-
msgid "You have subscribed to: %s"
|
| 1515 |
-
msgstr "Vous venez de vous abonner à : %s"
|
| 1516 |
-
|
| 1517 |
-
#: lib/Subscription/Pages.php:173
|
| 1518 |
-
msgid "You are now subscribed!"
|
| 1519 |
-
msgstr "Vous êtes maintenant abonné(e) !"
|
| 1520 |
-
|
| 1521 |
-
#: lib/Subscription/Pages.php:186 lib/Subscription/Pages.php:404
|
| 1522 |
-
msgid "Manage your subscription"
|
| 1523 |
-
msgstr "Gérer votre abonnement"
|
| 1524 |
-
|
| 1525 |
-
#: lib/Subscription/Pages.php:192
|
| 1526 |
-
msgid "You are now unsubscribed."
|
| 1527 |
-
msgstr "Vous êtes maintenant désabonné(e)."
|
| 1528 |
-
|
| 1529 |
-
#: lib/Subscription/Pages.php:199
|
| 1530 |
-
msgid "Yup, we've added you to our email list. You'll hear from us shortly."
|
| 1531 |
-
msgstr "Nous vous avons ajouté(e) à notre liste. Vous recevrez notre prochaine newsletter."
|
| 1532 |
-
|
| 1533 |
-
#: lib/Subscription/Pages.php:328
|
| 1534 |
-
msgid "Your lists"
|
| 1535 |
-
msgstr "Vos listes"
|
| 1536 |
-
|
| 1537 |
-
#: lib/Subscription/Pages.php:336 views/form/editor.html:29
|
| 1538 |
-
#: views/form/editor.html:383 views/newsletter/templates/components/save.hbs:3
|
| 1539 |
-
#: views/segments.html:56 views/subscribers/subscribers.html:92
|
| 1540 |
-
msgid "Save"
|
| 1541 |
-
msgstr "Enregistrer"
|
| 1542 |
-
|
| 1543 |
-
#: lib/Subscription/Pages.php:368
|
| 1544 |
-
msgid "[link]Edit your profile[/link] to update your email."
|
| 1545 |
-
msgstr "[link]Modifier votre profil[/link] pour mettre à jour votre e-mail."
|
| 1546 |
-
|
| 1547 |
-
#: lib/Subscription/Pages.php:374
|
| 1548 |
-
msgid "[link]Log in to your account[/link] to update your email."
|
| 1549 |
-
msgstr "[link]Connectez-vous à votre compte[/link] pour mettre à jour votre e-mail."
|
| 1550 |
-
|
| 1551 |
-
#: lib/Subscription/Pages.php:378
|
| 1552 |
-
msgid ""
|
| 1553 |
-
"Need to change your email address? Unsubscribe here, then simply sign up "
|
| 1554 |
-
"again."
|
| 1555 |
-
msgstr "Besoin de modifier votre adresse e-mail ? Désabonnez-vous ici et réinscrivez-vous simplement à nouveau."
|
| 1556 |
-
|
| 1557 |
-
#: lib/Subscription/Pages.php:392
|
| 1558 |
-
msgid "Accidentally unsubscribed?"
|
| 1559 |
-
msgstr "Accidentellement désabonné ?"
|
| 1560 |
-
|
| 1561 |
-
#: lib/Twig/Functions.php:78 views/settings/mta.html:1053
|
| 1562 |
-
msgid "every minute"
|
| 1563 |
-
msgstr "toutes les minutes"
|
| 1564 |
-
|
| 1565 |
-
#: lib/Twig/Functions.php:79 views/settings/mta.html:1054
|
| 1566 |
-
msgid "every %1$d minutes"
|
| 1567 |
-
msgstr "toutes les %1$d minutes"
|
| 1568 |
-
|
| 1569 |
-
#: lib/Twig/Functions.php:80 views/settings/mta.html:1055
|
| 1570 |
-
msgid "every hour"
|
| 1571 |
-
msgstr "toutes les heures"
|
| 1572 |
-
|
| 1573 |
-
#: lib/Twig/Functions.php:81 views/settings/mta.html:1056
|
| 1574 |
-
msgid "every %1$d hours"
|
| 1575 |
-
msgstr "toutes les %1$d heures"
|
| 1576 |
-
|
| 1577 |
-
#: lib/WP/Notice.php:22
|
| 1578 |
-
msgid "MailPoet Error:"
|
| 1579 |
-
msgstr "Erreur MailPoet :"
|
| 1580 |
-
|
| 1581 |
-
#: mailpoet.php:51
|
| 1582 |
-
msgid ""
|
| 1583 |
-
"MailPoet plugin requires PHP version 5.3 or newer. Please read our "
|
| 1584 |
-
"[link]instructions[/link] on how to resolve this issue."
|
| 1585 |
-
msgstr "L’extension MailPoet nécessite PHP en version 5.3 ou supérieure. Veuillez lire nos [link]instructions[/link] sur la façon de corriger ce problème."
|
| 1586 |
-
|
| 1587 |
-
#: mailpoet.php:67
|
| 1588 |
-
msgid ""
|
| 1589 |
-
"MailPoet cannot start because it is missing core files. Please reinstall the"
|
| 1590 |
-
" plugin."
|
| 1591 |
-
msgstr "MailPoet ne peut pas démarrer car il manque des fichiers du core. Veuillez réinstaller l’extension."
|
| 1592 |
-
|
| 1593 |
-
#: views/form/editor.html:5
|
| 1594 |
-
msgid "Form"
|
| 1595 |
-
msgstr "Formulaire"
|
| 1596 |
-
|
| 1597 |
-
#: views/form/editor.html:6 views/segments.html:67
|
| 1598 |
-
#: views/subscribers/subscribers.html:93
|
| 1599 |
-
msgid "Back"
|
| 1600 |
-
msgstr "Retour"
|
| 1601 |
-
|
| 1602 |
-
#: views/form/editor.html:11
|
| 1603 |
-
msgid "Click here to change the name"
|
| 1604 |
-
msgstr "Cliquez ici pour changer le nom"
|
| 1605 |
-
|
| 1606 |
-
#: views/form/editor.html:50
|
| 1607 |
-
msgid "This form adds the subscribers to these lists:"
|
| 1608 |
-
msgstr "Ce formulaire ajoute les abonnés à ces listes :"
|
| 1609 |
-
|
| 1610 |
-
#: views/form/editor.html:69
|
| 1611 |
-
msgid "After submit..."
|
| 1612 |
-
msgstr "Après l’adhésion…"
|
| 1613 |
-
|
| 1614 |
-
#: views/form/editor.html:78
|
| 1615 |
-
msgid "Show message"
|
| 1616 |
-
msgstr "Afficher le message"
|
| 1617 |
-
|
| 1618 |
-
#: views/form/editor.html:89
|
| 1619 |
-
msgid "Go to Page"
|
| 1620 |
-
msgstr "Aller à la page"
|
| 1621 |
-
|
| 1622 |
-
#: views/form/editor.html:96
|
| 1623 |
-
msgid "Check your inbox to confirm your subscription."
|
| 1624 |
-
msgstr "Vérifiez votre boîte de réception pour confirmer votre abonnement."
|
| 1625 |
-
|
| 1626 |
-
#: views/form/editor.html:126
|
| 1627 |
-
msgid "Form Placement"
|
| 1628 |
-
msgstr "Mise en place du formulaire"
|
| 1629 |
-
|
| 1630 |
-
#: views/form/editor.html:131
|
| 1631 |
-
msgid ""
|
| 1632 |
-
"Add this form to your sidebar or footer on the [link]Widgets page[/link]."
|
| 1633 |
-
msgstr "Ajoutez ce formulaire à votre colonne latérale ou à votre pied de page sur la [link]page des widgets[/link]."
|
| 1634 |
-
|
| 1635 |
-
#: views/form/editor.html:140
|
| 1636 |
-
msgid "Copy and paste this [link]shortcode[/link] on to a post or page."
|
| 1637 |
-
msgstr "Copiez et collez ce [link]code court[/link] dans un article ou une page."
|
| 1638 |
-
|
| 1639 |
-
#: views/form/editor.html:149
|
| 1640 |
-
msgid "%sHTML%s, %sPHP%s and %siFrame%s versions are also available."
|
| 1641 |
-
msgstr "Des versions %sHTML%s, %sPHP%s et %siFrame%s sont aussi disponibles."
|
| 1642 |
-
|
| 1643 |
-
#: views/form/editor.html:170
|
| 1644 |
-
msgid "Fields"
|
| 1645 |
-
msgstr "Champs"
|
| 1646 |
-
|
| 1647 |
-
#: views/form/editor.html:176
|
| 1648 |
-
msgid "Add New Field"
|
| 1649 |
-
msgstr "Ajouter un nouveau champ"
|
| 1650 |
-
|
| 1651 |
-
#: views/form/editor.html:185
|
| 1652 |
-
#: views/newsletter/templates/blocks/social/settings.hbs:3
|
| 1653 |
-
#: views/newsletter/templates/components/sidebar/styles.hbs:2
|
| 1654 |
-
msgid "Styles"
|
| 1655 |
-
msgstr "Styles"
|
| 1656 |
-
|
| 1657 |
-
#: views/form/editor.html:195
|
| 1658 |
-
#: views/newsletter/templates/components/sidebar/preview.hbs:2
|
| 1659 |
-
#: views/newsletters.html:101 views/settings/basics.html:242
|
| 1660 |
-
#: views/settings/basics.html:299 views/settings/signup.html:177
|
| 1661 |
-
msgid "Preview"
|
| 1662 |
-
msgstr "Aperçu"
|
| 1663 |
-
|
| 1664 |
-
#: views/form/editor.html:220
|
| 1665 |
-
#: views/newsletter/templates/blocks/divider/widget.hbs:4
|
| 1666 |
-
msgid "Divider"
|
| 1667 |
-
msgstr "Séparateur"
|
| 1668 |
-
|
| 1669 |
-
#: views/form/editor.html:245
|
| 1670 |
-
msgid "List selection"
|
| 1671 |
-
msgstr "Sélection de liste"
|
| 1672 |
-
|
| 1673 |
-
#: views/form/editor.html:248
|
| 1674 |
-
msgid "Select list(s):"
|
| 1675 |
-
msgstr "Sélectionner une ou plusieurs listes :"
|
| 1676 |
-
|
| 1677 |
-
#: views/form/editor.html:254
|
| 1678 |
-
msgid "Random text or HTML"
|
| 1679 |
-
msgstr "Texte ou code HTML"
|
| 1680 |
-
|
| 1681 |
-
#: views/form/editor.html:257
|
| 1682 |
-
msgid ""
|
| 1683 |
-
"Subscribe to our newsletter and join [mailpoet_subscribers_count] other "
|
| 1684 |
-
"subscribers."
|
| 1685 |
-
msgstr "Abonnez-vous à notre newsletter et rejoignez les [mailpoet_subscribers_count] autres abonnés."
|
| 1686 |
-
|
| 1687 |
-
#: views/form/editor.html:401
|
| 1688 |
-
msgid "Edit name"
|
| 1689 |
-
msgstr "Modifier le nom"
|
| 1690 |
-
|
| 1691 |
-
#: views/form/editor.html:414
|
| 1692 |
-
msgid "The form name was successfully updated!"
|
| 1693 |
-
msgstr "Le nom du formulaire a bien été mis à jour !"
|
| 1694 |
-
|
| 1695 |
-
#: views/form/editor.html:461
|
| 1696 |
-
msgid "Form preview"
|
| 1697 |
-
msgstr "Aperçu du formulaire"
|
| 1698 |
-
|
| 1699 |
-
#: views/form/editor.html:507
|
| 1700 |
-
msgid "Saved! The changes are now active in your widget."
|
| 1701 |
-
msgstr "Enregistré ! Les changements sont maintenant activés dans votre widget."
|
| 1702 |
-
|
| 1703 |
-
#: views/form/editor.html:509
|
| 1704 |
-
msgid "Saved! Add this form to %1$sa widget%2$s."
|
| 1705 |
-
msgstr "Enregistré ! Ajoutez ce formulaire dans %1$sun widget%2$s."
|
| 1706 |
-
|
| 1707 |
-
#: views/form/editor.html:581 views/subscribers/importExport/import.html:50
|
| 1708 |
-
msgid "Add new field"
|
| 1709 |
-
msgstr "Ajouter un nouveau champ"
|
| 1710 |
-
|
| 1711 |
-
#: views/form/editor.html:600 views/form/templates/toolbar/fields.hbs:14
|
| 1712 |
-
msgid "Edit field"
|
| 1713 |
-
msgstr "Modifier le champ"
|
| 1714 |
-
|
| 1715 |
-
#: views/form/editor.html:621
|
| 1716 |
-
msgid "This field will be deleted for all your subscribers. Are you sure?"
|
| 1717 |
-
msgstr "Voulez-vous vraiment supprimer ce champ pour tous vos abonnés ?"
|
| 1718 |
-
|
| 1719 |
-
#: views/form/editor.html:638
|
| 1720 |
-
msgid "Removed custom field “\"+name+\"“"
|
| 1721 |
-
msgstr "Champ personnalisé “\"+name+\"“ retiré"
|
| 1722 |
-
|
| 1723 |
-
#: views/form/iframe.html:15
|
| 1724 |
-
msgid "MailPoet Subscription Form"
|
| 1725 |
-
msgstr "Formulaire d’abonnement MailPoet"
|
| 1726 |
-
|
| 1727 |
-
#: views/form/templates/blocks/container.hbs:10
|
| 1728 |
-
msgid "Edit display"
|
| 1729 |
-
msgstr "Modifier l’affichage"
|
| 1730 |
-
|
| 1731 |
-
#: views/form/templates/blocks/segment.hbs:2
|
| 1732 |
-
#: views/subscribers/importExport/import.html:48
|
| 1733 |
-
msgid "Please select at least one list"
|
| 1734 |
-
msgstr "Veuillez sélectionner au moins une liste"
|
| 1735 |
-
|
| 1736 |
-
#: views/form/templates/preview.hbs:4
|
| 1737 |
-
msgid "This is a success message."
|
| 1738 |
-
msgstr "Ceci est un message de succès."
|
| 1739 |
-
|
| 1740 |
-
#: views/form/templates/preview.hbs:5
|
| 1741 |
-
msgid "This is an error message."
|
| 1742 |
-
msgstr "Ceci est un message d’erreur."
|
| 1743 |
-
|
| 1744 |
-
#: views/form/templates/settings/date_default.hbs:2
|
| 1745 |
-
msgid "Preselect today's date:"
|
| 1746 |
-
msgstr "Présélectionner la date d’aujourd'hui :"
|
| 1747 |
-
|
| 1748 |
-
#: views/form/templates/settings/date_default.hbs:11
|
| 1749 |
-
#: views/form/templates/settings/label_within.hbs:5
|
| 1750 |
-
#: views/form/templates/settings/required.hbs:9
|
| 1751 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:124
|
| 1752 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:281
|
| 1753 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:79
|
| 1754 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:221
|
| 1755 |
-
#: views/settings/advanced.html:90 views/settings/advanced.html:130
|
| 1756 |
-
#: views/settings/bounce.html:190 views/settings/mta.html:591
|
| 1757 |
-
#: views/settings/signup.html:34 views/subscribers/importExport/export.html:33
|
| 1758 |
-
#: views/subscribers/importExport/import/step2.html:66
|
| 1759 |
-
msgid "Yes"
|
| 1760 |
-
msgstr "Oui"
|
| 1761 |
-
|
| 1762 |
-
#: views/form/templates/settings/date_default.hbs:20
|
| 1763 |
-
#: views/form/templates/settings/label_within.hbs:8
|
| 1764 |
-
#: views/form/templates/settings/required.hbs:17
|
| 1765 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:130
|
| 1766 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:183
|
| 1767 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:209
|
| 1768 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:287
|
| 1769 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:85
|
| 1770 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:139
|
| 1771 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:165
|
| 1772 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:227
|
| 1773 |
-
#: views/settings/advanced.html:101 views/settings/advanced.html:141
|
| 1774 |
-
#: views/settings/bounce.html:148 views/settings/bounce.html:179
|
| 1775 |
-
#: views/settings/mta.html:554 views/settings/mta.html:602
|
| 1776 |
-
#: views/settings/signup.html:46 views/subscribers/importExport/export.html:38
|
| 1777 |
-
#: views/subscribers/importExport/import/step2.html:70
|
| 1778 |
-
msgid "No"
|
| 1779 |
-
msgstr "Non"
|
| 1780 |
-
|
| 1781 |
-
#: views/form/templates/settings/date_formats.hbs:9
|
| 1782 |
-
msgid "Order"
|
| 1783 |
-
msgstr "Ordre"
|
| 1784 |
-
|
| 1785 |
-
#: views/form/templates/settings/date_types.hbs:2
|
| 1786 |
-
msgid "Type of date"
|
| 1787 |
-
msgstr "Type de date"
|
| 1788 |
-
|
| 1789 |
-
#: views/form/templates/settings/field.hbs:19
|
| 1790 |
-
msgid "Number of lines:"
|
| 1791 |
-
msgstr "Nombre de lignes :"
|
| 1792 |
-
|
| 1793 |
-
#: views/form/templates/settings/field.hbs:61
|
| 1794 |
-
msgid "Automatically add paragraphs"
|
| 1795 |
-
msgstr "Créer automatiquement les paragraphes"
|
| 1796 |
-
|
| 1797 |
-
#: views/form/templates/settings/field.hbs:24
|
| 1798 |
-
msgid "1 line"
|
| 1799 |
-
msgid_plural "%d lines"
|
| 1800 |
-
msgstr[0] "1 ligne"
|
| 1801 |
-
msgstr[1] "%d lignes"
|
| 1802 |
-
|
| 1803 |
-
#: views/form/templates/settings/field_form.hbs:11
|
| 1804 |
-
msgid "Select a field type:"
|
| 1805 |
-
msgstr "Sélectionner un type de champ :"
|
| 1806 |
-
|
| 1807 |
-
#: views/form/templates/settings/field_form.hbs:16
|
| 1808 |
-
msgid "Please specify a type"
|
| 1809 |
-
msgstr "Veuillez spécifier un type."
|
| 1810 |
-
|
| 1811 |
-
#: views/form/templates/settings/field_form.hbs:21
|
| 1812 |
-
msgid "Text Input"
|
| 1813 |
-
msgstr "Texte"
|
| 1814 |
-
|
| 1815 |
-
#: views/form/templates/settings/field_form.hbs:25
|
| 1816 |
-
msgid "Text Area"
|
| 1817 |
-
msgstr "Zone de texte"
|
| 1818 |
-
|
| 1819 |
-
#: views/form/templates/settings/field_form.hbs:29
|
| 1820 |
-
msgid "Radio buttons"
|
| 1821 |
-
msgstr "Boutons radio"
|
| 1822 |
-
|
| 1823 |
-
#: views/form/templates/settings/field_form.hbs:33
|
| 1824 |
-
msgid "Checkbox"
|
| 1825 |
-
msgstr "Case à cocher"
|
| 1826 |
-
|
| 1827 |
-
#: views/form/templates/settings/field_form.hbs:46
|
| 1828 |
-
msgid "Field name:"
|
| 1829 |
-
msgstr "Nom du champ :"
|
| 1830 |
-
|
| 1831 |
-
#: views/form/templates/settings/field_form.hbs:53
|
| 1832 |
-
#: views/subscribers/importExport/import/step2.html:137
|
| 1833 |
-
msgid "Please specify a name"
|
| 1834 |
-
msgstr "Veuillez spécifier un nom."
|
| 1835 |
-
|
| 1836 |
-
#: views/form/templates/settings/field_form.hbs:61
|
| 1837 |
-
#: views/form/templates/settings/submit.hbs:2
|
| 1838 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:299
|
| 1839 |
-
#: views/newsletter/templates/blocks/button/settings.hbs:117
|
| 1840 |
-
#: views/newsletter/templates/blocks/container/settings.hbs:14
|
| 1841 |
-
#: views/newsletter/templates/blocks/divider/settings.hbs:37
|
| 1842 |
-
#: views/newsletter/templates/blocks/footer/settings.hbs:59
|
| 1843 |
-
#: views/newsletter/templates/blocks/header/settings.hbs:59
|
| 1844 |
-
#: views/newsletter/templates/blocks/image/settings.hbs:40
|
| 1845 |
-
#: views/newsletter/templates/blocks/social/settings.hbs:6
|
| 1846 |
-
#: views/newsletter/templates/blocks/spacer/settings.hbs:10
|
| 1847 |
-
#: views/subscribers/importExport/import/step2.html:151
|
| 1848 |
-
msgid "Done"
|
| 1849 |
-
msgstr "Terminé"
|
| 1850 |
-
|
| 1851 |
-
#: views/form/templates/settings/field_form.hbs:93
|
| 1852 |
-
msgid "Updated custom field “\"+data.name+\"“"
|
| 1853 |
-
msgstr "Champ personnalisé “\"+data.name+\"“ mis à jour"
|
| 1854 |
-
|
| 1855 |
-
#: views/form/templates/settings/field_form.hbs:97
|
| 1856 |
-
msgid "Added custom field “\"+data.name+\"“"
|
| 1857 |
-
msgstr "Champ personnalisé “\"+data.name+\"“ ajouté"
|
| 1858 |
-
|
| 1859 |
-
#: views/form/templates/settings/label.hbs:2
|
| 1860 |
-
msgid "Label:"
|
| 1861 |
-
msgstr "Libellé :"
|
| 1862 |
-
|
| 1863 |
-
#: views/form/templates/settings/label_within.hbs:2
|
| 1864 |
-
msgid "Display label within input:"
|
| 1865 |
-
msgstr "Afficher le libellé dans le champs :"
|
| 1866 |
-
|
| 1867 |
-
#: views/form/templates/settings/required.hbs:2
|
| 1868 |
-
msgid "Is this field mandatory?"
|
| 1869 |
-
msgstr "Ce champ est-il obligatoire ?"
|
| 1870 |
-
|
| 1871 |
-
#: views/form/templates/settings/segment_selection.hbs:4
|
| 1872 |
-
msgid "Select the segment that you want to add:"
|
| 1873 |
-
msgstr "Sélectionner le segment que vous voulez ajouter :"
|
| 1874 |
-
|
| 1875 |
-
#: views/form/templates/settings/segment_selection.hbs:8
|
| 1876 |
-
msgid "Add"
|
| 1877 |
-
msgstr "Ajouter"
|
| 1878 |
-
|
| 1879 |
-
#: views/form/templates/settings/segment_selection_item.hbs:10
|
| 1880 |
-
#: views/form/templates/settings/values_item.hbs:20
|
| 1881 |
-
msgid "Remove"
|
| 1882 |
-
msgstr "Supprimer"
|
| 1883 |
-
|
| 1884 |
-
#: views/form/templates/settings/segment_selection_item.hbs:11
|
| 1885 |
-
msgid "Move"
|
| 1886 |
-
msgstr "Déplacer"
|
| 1887 |
-
|
| 1888 |
-
#: views/form/templates/settings/validate.hbs:2
|
| 1889 |
-
msgid "Validate for:"
|
| 1890 |
-
msgstr "Validé pour :"
|
| 1891 |
-
|
| 1892 |
-
#: views/form/templates/settings/validate.hbs:6
|
| 1893 |
-
msgid "Nothing"
|
| 1894 |
-
msgstr "Rien"
|
| 1895 |
-
|
| 1896 |
-
#: views/form/templates/settings/validate.hbs:11
|
| 1897 |
-
msgid "Numbers only"
|
| 1898 |
-
msgstr "Uniquement des chiffres"
|
| 1899 |
-
|
| 1900 |
-
#: views/form/templates/settings/validate.hbs:16
|
| 1901 |
-
msgid "Alphanumerical"
|
| 1902 |
-
msgstr "Alphanumérique"
|
| 1903 |
-
|
| 1904 |
-
#: views/form/templates/settings/validate.hbs:21
|
| 1905 |
-
msgid "Phone number, (+,-,#,(,) and spaces allowed)"
|
| 1906 |
-
msgstr "Numéro de téléphone, (+,-,#,(,) et espaces autorisés)"
|
| 1907 |
-
|
| 1908 |
-
#: views/form/templates/settings/values.hbs:4
|
| 1909 |
-
msgid "Add item"
|
| 1910 |
-
msgstr "Ajouter un élément"
|
| 1911 |
-
|
| 1912 |
-
#: views/form/templates/toolbar/fields.hbs:20
|
| 1913 |
-
msgid "Delete field"
|
| 1914 |
-
msgstr "Supprimer le champ"
|
| 1915 |
-
|
| 1916 |
-
#: views/form/widget.html:34
|
| 1917 |
-
msgid "An error occurred, make sure you have filled all the required fields."
|
| 1918 |
-
msgstr "Une erreur s’est produite, veuillez vous assurer que vous avez rempli tous les champs nécessaires."
|
| 1919 |
-
|
| 1920 |
-
#: views/forms.html:17 views/newsletters.html:29 views/segments.html:14
|
| 1921 |
-
#: views/subscribers/subscribers.html:18
|
| 1922 |
-
msgid "Search"
|
| 1923 |
-
msgstr "Rechercher"
|
| 1924 |
-
|
| 1925 |
-
#: views/forms.html:18
|
| 1926 |
-
msgid "Loading forms..."
|
| 1927 |
-
msgstr "Chargement des formulaires…"
|
| 1928 |
-
|
| 1929 |
-
#: views/forms.html:19
|
| 1930 |
-
msgid "No forms were found. Why not create a new one?"
|
| 1931 |
-
msgstr "Aucun formulaire trouvé. Pourquoi ne pas en créer un ?"
|
| 1932 |
-
|
| 1933 |
-
#: views/forms.html:20
|
| 1934 |
-
msgid "All forms on this page are selected."
|
| 1935 |
-
msgstr "Tous les formulaires de cette page sont sélectionnés."
|
| 1936 |
-
|
| 1937 |
-
#: views/forms.html:21
|
| 1938 |
-
msgid "All %d forms are selected."
|
| 1939 |
-
msgstr "Tous les %d formulaires sont sélectionnés."
|
| 1940 |
-
|
| 1941 |
-
#: views/forms.html:22
|
| 1942 |
-
msgid "Select all forms on all pages"
|
| 1943 |
-
msgstr "Sélectionner tous les formulaires de toutes les pages"
|
| 1944 |
-
|
| 1945 |
-
#: views/forms.html:23 views/newsletters.html:35 views/segments.html:20
|
| 1946 |
-
#: views/subscribers/subscribers.html:24
|
| 1947 |
-
msgid "Clear selection"
|
| 1948 |
-
msgstr "Réinitialiser la sélection"
|
| 1949 |
-
|
| 1950 |
-
#: views/forms.html:24
|
| 1951 |
-
msgid "%d forms permanently deleted"
|
| 1952 |
-
msgstr "%d formulaires supprimés définitivement."
|
| 1953 |
-
|
| 1954 |
-
#: views/forms.html:25 views/newsletters.html:37 views/segments.html:22
|
| 1955 |
-
#: views/subscribers/subscribers.html:26
|
| 1956 |
-
msgid "Select bulk action"
|
| 1957 |
-
msgstr "Sélectionner une action groupée"
|
| 1958 |
-
|
| 1959 |
-
#: views/forms.html:26 views/newsletters.html:38 views/segments.html:23
|
| 1960 |
-
#: views/subscribers/subscribers.html:27
|
| 1961 |
-
msgid "Bulk Actions"
|
| 1962 |
-
msgstr "Actions groupées"
|
| 1963 |
-
|
| 1964 |
-
#: views/forms.html:27 views/newsletters.html:39 views/segments.html:24
|
| 1965 |
-
#: views/subscribers/subscribers.html:28
|
| 1966 |
-
msgid "Apply"
|
| 1967 |
-
msgstr "Appliquer"
|
| 1968 |
-
|
| 1969 |
-
#: views/forms.html:28 views/newsletters.html:40
|
| 1970 |
-
#: views/subscribers/subscribers.html:29
|
| 1971 |
-
msgid "Filter"
|
| 1972 |
-
msgstr "Filtrer"
|
| 1973 |
-
|
| 1974 |
-
#: views/forms.html:29 views/newsletters.html:41 views/segments.html:52
|
| 1975 |
-
#: views/subscribers/subscribers.html:30
|
| 1976 |
-
msgid "Empty Trash"
|
| 1977 |
-
msgstr "Vider la corbeille"
|
| 1978 |
-
|
| 1979 |
-
#: views/forms.html:30 views/newsletters.html:42 views/segments.html:53
|
| 1980 |
-
#: views/subscribers/subscribers.html:31
|
| 1981 |
-
msgid "Select All"
|
| 1982 |
-
msgstr "Tout sélectionner"
|
| 1983 |
-
|
| 1984 |
-
#: views/forms.html:31 views/newsletters.html:43 views/segments.html:54
|
| 1985 |
-
#: views/subscribers/subscribers.html:33
|
| 1986 |
-
msgid "Restore"
|
| 1987 |
-
msgstr "Restaurer"
|
| 1988 |
-
|
| 1989 |
-
#: views/forms.html:32 views/newsletters.html:44
|
| 1990 |
-
#: views/subscribers/subscribers.html:36
|
| 1991 |
-
msgid "Delete Permanently"
|
| 1992 |
-
msgstr "Supprimer définitivement"
|
| 1993 |
-
|
| 1994 |
-
#: views/forms.html:34 views/newsletters.html:47 views/segments.html:58
|
| 1995 |
-
#: views/subscribers/subscribers.html:39
|
| 1996 |
-
msgid "Previous page"
|
| 1997 |
-
msgstr "Page précédente"
|
| 1998 |
-
|
| 1999 |
-
#: views/forms.html:35 views/newsletters.html:48 views/segments.html:59
|
| 2000 |
-
#: views/subscribers/subscribers.html:40
|
| 2001 |
-
msgid "First page"
|
| 2002 |
-
msgstr "Première page"
|
| 2003 |
-
|
| 2004 |
-
#: views/forms.html:36 views/newsletters.html:49 views/segments.html:60
|
| 2005 |
-
#: views/subscribers/subscribers.html:41
|
| 2006 |
-
msgid "Next page"
|
| 2007 |
-
msgstr "Page suivante"
|
| 2008 |
-
|
| 2009 |
-
#: views/forms.html:37 views/newsletters.html:50 views/segments.html:61
|
| 2010 |
-
#: views/subscribers/subscribers.html:42
|
| 2011 |
-
msgid "Last page"
|
| 2012 |
-
msgstr "Dernière page"
|
| 2013 |
-
|
| 2014 |
-
#: views/forms.html:38 views/subscribers/subscribers.html:43
|
| 2015 |
-
msgid "Current Page"
|
| 2016 |
-
msgstr "Page actuelle"
|
| 2017 |
-
|
| 2018 |
-
#: views/forms.html:39 views/newsletters.html:52 views/segments.html:63
|
| 2019 |
-
#: views/subscribers/subscribers.html:44
|
| 2020 |
-
msgid "of"
|
| 2021 |
-
msgstr "de"
|
| 2022 |
-
|
| 2023 |
-
#: views/forms.html:40 views/newsletters.html:53 views/segments.html:64
|
| 2024 |
-
#: views/subscribers/subscribers.html:45
|
| 2025 |
-
msgid "%$1d item(s)"
|
| 2026 |
-
msgstr "%$1d élément(s)"
|
| 2027 |
-
|
| 2028 |
-
#: views/forms.html:42 views/segments.html:25
|
| 2029 |
-
#: views/subscribers/importExport/import/step2.html:133
|
| 2030 |
-
msgid "Name"
|
| 2031 |
-
msgstr "Nom"
|
| 2032 |
-
|
| 2033 |
-
#: views/forms.html:44
|
| 2034 |
-
msgid "User choice:"
|
| 2035 |
-
msgstr "Choix de l’utilisateur :"
|
| 2036 |
-
|
| 2037 |
-
#: views/forms.html:45
|
| 2038 |
-
msgid "Sign-ups"
|
| 2039 |
-
msgstr "Inscriptions"
|
| 2040 |
-
|
| 2041 |
-
#: views/forms.html:46
|
| 2042 |
-
msgid "Created On"
|
| 2043 |
-
msgstr "Créé le"
|
| 2044 |
-
|
| 2045 |
-
#: views/forms.html:47
|
| 2046 |
-
msgid "1 form was moved to the trash."
|
| 2047 |
-
msgstr "1 formulaire a été déplacé dans la corbeille."
|
| 2048 |
-
|
| 2049 |
-
#: views/forms.html:48
|
| 2050 |
-
msgid "%$1d forms were moved to the trash."
|
| 2051 |
-
msgstr "%$1d formulaires ont été déplacés dans la corbeille."
|
| 2052 |
-
|
| 2053 |
-
#: views/forms.html:49
|
| 2054 |
-
msgid "1 form was permanently deleted."
|
| 2055 |
-
msgstr "1 formulaire a été définitivement supprimé."
|
| 2056 |
-
|
| 2057 |
-
#: views/forms.html:50
|
| 2058 |
-
msgid "%$1d forms were permanently deleted."
|
| 2059 |
-
msgstr "%$1d formulaires ont été définitivement supprimés."
|
| 2060 |
-
|
| 2061 |
-
#: views/forms.html:51
|
| 2062 |
-
msgid "1 form has been restored from the trash."
|
| 2063 |
-
msgstr "1 formulaire a été restauré depuis la corbeille."
|
| 2064 |
-
|
| 2065 |
-
#: views/forms.html:52
|
| 2066 |
-
msgid "%$1d forms have been restored from the trash."
|
| 2067 |
-
msgstr "%$1d formulaires ont été restaurés depuis la corbeille."
|
| 2068 |
-
|
| 2069 |
-
#: views/forms.html:53 views/newsletters.html:77 views/segments.html:49
|
| 2070 |
-
#: views/subscribers/subscribers.html:32
|
| 2071 |
-
msgid "Edit"
|
| 2072 |
-
msgstr "Modifier"
|
| 2073 |
-
|
| 2074 |
-
#: views/forms.html:54 views/newsletters.html:78 views/segments.html:41
|
| 2075 |
-
msgid "Duplicate"
|
| 2076 |
-
msgstr "Dupliquer"
|
| 2077 |
-
|
| 2078 |
-
#: views/forms.html:55
|
| 2079 |
-
msgid "Form \"%$1s\" has been duplicated."
|
| 2080 |
-
msgstr "Le formulaire « %$1s » a été dupliqué."
|
| 2081 |
-
|
| 2082 |
-
#: views/forms.html:57 views/newsletters.html:76 views/segments.html:51
|
| 2083 |
-
#: views/subscribers/subscribers.html:35
|
| 2084 |
-
msgid "Move to trash"
|
| 2085 |
-
msgstr "Déplacer dans la corbeille"
|
| 2086 |
-
|
| 2087 |
-
#: views/forms.html:58 views/newsletters.html:90 views/segments.html:48
|
| 2088 |
-
#: views/subscribers/subscribers.html:89
|
| 2089 |
-
msgid "Add New"
|
| 2090 |
-
msgstr "Ajouter"
|
| 2091 |
-
|
| 2092 |
-
#: views/index.html:5
|
| 2093 |
-
msgid " %sSet up%s MailPoet and start sending."
|
| 2094 |
-
msgstr "%sConfigurez MailPoet%s et commencez vos envois."
|
| 2095 |
-
|
| 2096 |
-
#: views/invalidkey.html:6
|
| 2097 |
-
msgid "All sending is currently paused!"
|
| 2098 |
-
msgstr "Tous les envois sont actuellement suspendus !"
|
| 2099 |
-
|
| 2100 |
-
#: views/invalidkey.html:9
|
| 2101 |
-
msgid "Your key to send with MailPoet is invalid."
|
| 2102 |
-
msgstr "Votre clé pour envoyer avec MailPoet n’est pas valide !"
|
| 2103 |
-
|
| 2104 |
-
#: views/invalidkey.html:13
|
| 2105 |
-
msgid "Visit MailPoet.com to purchase a key"
|
| 2106 |
-
msgstr "Rendez-vous sur MailPoet.com pour acheter une clé"
|
| 2107 |
-
|
| 2108 |
-
#: views/layout.html:64
|
| 2109 |
-
msgid ""
|
| 2110 |
-
"Want to give feedback to the MailPoet team? Contact us here. Please provide "
|
| 2111 |
-
"as much information as possible!"
|
| 2112 |
-
msgstr "Vous voulez envoyer un retour d’expérience à l’équipe MailPoet ? Contactez-nous ici. Veuillez fournir le plus d’informations possible !"
|
| 2113 |
-
|
| 2114 |
-
#: views/limit.html:6
|
| 2115 |
-
msgid "You've reached the %d subscribers limit!"
|
| 2116 |
-
msgstr "Vous avez atteint la limite de %d abonnés !"
|
| 2117 |
-
|
| 2118 |
-
#: views/limit.html:9
|
| 2119 |
-
msgid "MailPoet 3 is currently limited to %d subscribers."
|
| 2120 |
-
msgstr "MailPoet 3 est actuellement limité à %d abonnés."
|
| 2121 |
-
|
| 2122 |
-
#: views/limit.html:19
|
| 2123 |
-
msgid "Immediately, you can:"
|
| 2124 |
-
msgstr "Immédiatement, vous pouvez :"
|
| 2125 |
-
|
| 2126 |
-
#: views/limit.html:21
|
| 2127 |
-
msgid "Delete unconfirmed subscribers to have less than %d subscribers."
|
| 2128 |
-
msgstr "Supprimez les abonnés non confirmés pour avoir moins de %d abonnés."
|
| 2129 |
-
|
| 2130 |
-
#: views/limit.html:23
|
| 2131 |
-
msgid "Contact us"
|
| 2132 |
-
msgstr "Nous contacter"
|
| 2133 |
-
|
| 2134 |
-
#: views/limit.html:24
|
| 2135 |
-
msgid "to become a Premium beta tester."
|
| 2136 |
-
msgstr "pour devenir un bêta testeur Premium."
|
| 2137 |
-
|
| 2138 |
-
#: views/newsletter/editor.html:230 views/newsletters.html:55
|
| 2139 |
-
msgid "Select type"
|
| 2140 |
-
msgstr "Sélectionner le type"
|
| 2141 |
-
|
| 2142 |
-
#: views/newsletter/editor.html:230 views/newsletters.html:56
|
| 2143 |
-
msgid "Template"
|
| 2144 |
-
msgstr "Modèle"
|
| 2145 |
-
|
| 2146 |
-
#: views/newsletter/editor.html:230 views/newsletters.html:57
|
| 2147 |
-
msgid "Designer"
|
| 2148 |
-
msgstr "Concepteur"
|
| 2149 |
-
|
| 2150 |
-
#: views/newsletter/editor.html:230 views/newsletters.html:58
|
| 2151 |
-
msgid "Send"
|
| 2152 |
-
msgstr "Envoyer"
|
| 2153 |
-
|
| 2154 |
-
#: views/newsletter/editor.html:259
|
| 2155 |
-
msgid "Insert/edit link"
|
| 2156 |
-
msgstr "Insérer/modifier le lien"
|
| 2157 |
-
|
| 2158 |
-
#: views/newsletter/editor.html:266
|
| 2159 |
-
msgid "Type"
|
| 2160 |
-
msgstr "Type"
|
| 2161 |
-
|
| 2162 |
-
#: views/newsletter/editor.html:268
|
| 2163 |
-
msgid "Link to a web page"
|
| 2164 |
-
msgstr "Lien vers une page web"
|
| 2165 |
-
|
| 2166 |
-
#: views/newsletter/editor.html:269
|
| 2167 |
-
msgid "Browser version"
|
| 2168 |
-
msgstr "Version du navigateur"
|
| 2169 |
-
|
| 2170 |
-
#: views/newsletter/editor.html:270
|
| 2171 |
-
msgid "Unsubcribe page"
|
| 2172 |
-
msgstr "Page de désabonnement"
|
| 2173 |
-
|
| 2174 |
-
#: views/newsletter/editor.html:271
|
| 2175 |
-
msgid "Manage your subscription page"
|
| 2176 |
-
msgstr "Page de gestion de votre abonnement"
|
| 2177 |
-
|
| 2178 |
-
#: views/newsletter/editor.html:276 views/newsletter/editor.html:896
|
| 2179 |
-
#: views/newsletter/editor.html:901 views/newsletter/editor.html:906
|
| 2180 |
-
#: views/newsletter/editor.html:911 views/newsletter/editor.html:916
|
| 2181 |
-
#: views/newsletter/editor.html:926 views/newsletter/editor.html:931
|
| 2182 |
-
#: views/newsletter/editor.html:936 views/newsletter/editor.html:941
|
| 2183 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:237
|
| 2184 |
-
#: views/newsletter/templates/blocks/button/settings.hbs:14
|
| 2185 |
-
#: views/newsletter/templates/blocks/image/settings.hbs:4
|
| 2186 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:193
|
| 2187 |
-
msgid "Link"
|
| 2188 |
-
msgstr "Lien"
|
| 2189 |
-
|
| 2190 |
-
#: views/newsletter/editor.html:279
|
| 2191 |
-
msgid "Title"
|
| 2192 |
-
msgstr "Titre"
|
| 2193 |
-
|
| 2194 |
-
#: views/newsletter/editor.html:282
|
| 2195 |
-
msgid "Open link in a new window/tab"
|
| 2196 |
-
msgstr "Ouvrir le lien dans une nouvelle fenêtre/onglet"
|
| 2197 |
-
|
| 2198 |
-
#: views/newsletter/editor.html:288
|
| 2199 |
-
msgid "Search your content"
|
| 2200 |
-
msgstr "Recherchez votre contenu"
|
| 2201 |
-
|
| 2202 |
-
#: views/newsletter/editor.html:300
|
| 2203 |
-
msgid "No search term specified. Showing recent items."
|
| 2204 |
-
msgstr "Aucun terme de recherche spécifié. Affichage des éléments récents."
|
| 2205 |
-
|
| 2206 |
-
#: views/newsletter/editor.html:310
|
| 2207 |
-
msgid "Add Link"
|
| 2208 |
-
msgstr "Ajouter un lien"
|
| 2209 |
-
|
| 2210 |
-
#: views/newsletter/editor.html:313
|
| 2211 |
-
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
|
| 2212 |
-
#: views/subscribers/importExport/import/step2.html:153
|
| 2213 |
-
msgid "Cancel"
|
| 2214 |
-
msgstr "Annuler"
|
| 2215 |
-
|
| 2216 |
-
#: views/newsletter/editor.html:322
|
| 2217 |
-
msgid "Failed to fetch available posts"
|
| 2218 |
-
msgstr "Erreur de récupération des articles disponibles"
|
| 2219 |
-
|
| 2220 |
-
#: views/newsletter/editor.html:323
|
| 2221 |
-
msgid "Failed to fetch rendered posts"
|
| 2222 |
-
msgstr "Erreur de récupération des articles"
|
| 2223 |
-
|
| 2224 |
-
#: views/newsletter/editor.html:324
|
| 2225 |
-
msgid "Select a shortcode"
|
| 2226 |
-
msgstr "Sélectionner un code court"
|
| 2227 |
-
|
| 2228 |
-
#: views/newsletter/editor.html:325
|
| 2229 |
-
msgid ""
|
| 2230 |
-
"All emails must include an \"Unsubscribe\" link. Add a footer widget to your"
|
| 2231 |
-
" email to continue."
|
| 2232 |
-
msgstr "Tous les e-mails doivent contenir le lien de « Désabonnement ». Ajoutez un widget de pied de page à votre e-mail pour continuer."
|
| 2233 |
-
|
| 2234 |
-
#: views/newsletter/editor.html:326
|
| 2235 |
-
msgid "Enter an email address to send the preview newsletter to."
|
| 2236 |
-
msgstr "Saisissez une adresse e-mail pour recevoir l’aperçu de la newsletter."
|
| 2237 |
-
|
| 2238 |
-
#: views/newsletter/editor.html:327
|
| 2239 |
-
msgid "Your test email has been sent!"
|
| 2240 |
-
msgstr "Votre e-mail de test a été envoyé !"
|
| 2241 |
-
|
| 2242 |
-
#: views/newsletter/editor.html:328
|
| 2243 |
-
msgid "Please add a template name"
|
| 2244 |
-
msgstr "Veuillez ajouter un nom de modèle"
|
| 2245 |
-
|
| 2246 |
-
#: views/newsletter/editor.html:329
|
| 2247 |
-
msgid "Please add a template description"
|
| 2248 |
-
msgstr "Veuillez ajouter une description de modèle"
|
| 2249 |
-
|
| 2250 |
-
#: views/newsletter/editor.html:330
|
| 2251 |
-
msgid "Template has been saved."
|
| 2252 |
-
msgstr "Le modèle a été enregistré."
|
| 2253 |
-
|
| 2254 |
-
#: views/newsletter/editor.html:331
|
| 2255 |
-
msgid "Template has not been saved, please try again"
|
| 2256 |
-
msgstr "Le modèle n’a pas été enregistré. Veuillez essayer à nouveau."
|
| 2257 |
-
|
| 2258 |
-
#: views/newsletter/editor.html:332
|
| 2259 |
-
msgid "Categories & tags"
|
| 2260 |
-
msgstr "Catégories & étiquettes"
|
| 2261 |
-
|
| 2262 |
-
#: views/newsletter/editor.html:333
|
| 2263 |
-
msgid "There is no content to display."
|
| 2264 |
-
msgstr "Il n’y a aucun contenu à afficher."
|
| 2265 |
-
|
| 2266 |
-
#: views/newsletter/editor.html:334
|
| 2267 |
-
msgid ""
|
| 2268 |
-
"Your preview should open in a new tab. Please ensure your browser is not "
|
| 2269 |
-
"blocking popups from this page."
|
| 2270 |
-
msgstr "Votre aperçu doit s’ouvrir dans un nouvel onglet. Veuillez vous assurer que votre navigateur ne bloque pas les popups de cette page."
|
| 2271 |
-
|
| 2272 |
-
#: views/newsletter/editor.html:335
|
| 2273 |
-
msgid "Newsletter Preview"
|
| 2274 |
-
msgstr "Aperçu de la newsletter"
|
| 2275 |
-
|
| 2276 |
-
#: views/newsletter/editor.html:915
|
| 2277 |
-
msgid "Website"
|
| 2278 |
-
msgstr "Site Web"
|
| 2279 |
-
|
| 2280 |
-
#: views/newsletter/editor.html:940
|
| 2281 |
-
msgid "Custom"
|
| 2282 |
-
msgstr "Personnalisé"
|
| 2283 |
-
|
| 2284 |
-
#: views/newsletter/editor.html:963 views/newsletter/editor.html:1085
|
| 2285 |
-
msgid "Read more"
|
| 2286 |
-
msgstr "Lire la suite"
|
| 2287 |
-
|
| 2288 |
-
#: views/newsletter/editor.html:999
|
| 2289 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:243
|
| 2290 |
-
#: views/newsletter/templates/blocks/button/settings.hbs:1
|
| 2291 |
-
#: views/newsletter/templates/blocks/button/widget.hbs:4
|
| 2292 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:199
|
| 2293 |
-
msgid "Button"
|
| 2294 |
-
msgstr "Bouton"
|
| 2295 |
-
|
| 2296 |
-
#: views/newsletter/editor.html:1037
|
| 2297 |
-
msgid "Add your postal address here!"
|
| 2298 |
-
msgstr "Ajoutez votre adresse postale ici !"
|
| 2299 |
-
|
| 2300 |
-
#: views/newsletter/editor.html:1057
|
| 2301 |
-
msgid "An image of..."
|
| 2302 |
-
msgstr "Une image de…"
|
| 2303 |
-
|
| 2304 |
-
#: views/newsletter/editor.html:1156
|
| 2305 |
-
msgid "Edit this to insert text."
|
| 2306 |
-
msgstr "Modifiez ceci pour insérer votre texte."
|
| 2307 |
-
|
| 2308 |
-
#: views/newsletter/editor.html:1159
|
| 2309 |
-
msgid "Display problems?"
|
| 2310 |
-
msgstr "Afficher les problèmes ?"
|
| 2311 |
-
|
| 2312 |
-
#: views/newsletter/editor.html:1160
|
| 2313 |
-
msgid "Open this email in your web browser."
|
| 2314 |
-
msgstr "Ouvrir cet e-mail dans votre navigateur."
|
| 2315 |
-
|
| 2316 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:1
|
| 2317 |
-
#: views/newsletter/templates/blocks/posts/settings.hbs:1
|
| 2318 |
-
msgid "Post selection"
|
| 2319 |
-
msgstr "Sélection d’article"
|
| 2320 |
-
|
| 2321 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:4
|
| 2322 |
-
msgid "Show:"
|
| 2323 |
-
msgstr "Afficher :"
|
| 2324 |
-
|
| 2325 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:8
|
| 2326 |
-
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:6
|
| 2327 |
-
#: views/newsletter/templates/blocks/posts/widget.hbs:4
|
| 2328 |
-
msgid "Posts"
|
| 2329 |
-
msgstr "Articles"
|
| 2330 |
-
|
| 2331 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:9
|
| 2332 |
-
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:7
|
| 2333 |
-
msgid "Pages"
|
| 2334 |
-
msgstr "Pages"
|
| 2335 |
-
|
| 2336 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:10
|
| 2337 |
-
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:8
|
| 2338 |
-
msgid "MailPoet pages"
|
| 2339 |
-
msgstr "Pages MailPoet"
|
| 2340 |
-
|
| 2341 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:26
|
| 2342 |
-
msgid "Include"
|
| 2343 |
-
msgstr "Inclure"
|
| 2344 |
-
|
| 2345 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:32
|
| 2346 |
-
msgid "Exclude"
|
| 2347 |
-
msgstr "Exclure"
|
| 2348 |
-
|
| 2349 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:41
|
| 2350 |
-
#: views/newsletter/templates/blocks/posts/settings.hbs:7
|
| 2351 |
-
msgid "Display options"
|
| 2352 |
-
msgstr "Afficher les options"
|
| 2353 |
-
|
| 2354 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:45
|
| 2355 |
-
msgid "Hide display options"
|
| 2356 |
-
msgstr "Masquer les options d’affichage"
|
| 2357 |
-
|
| 2358 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:52
|
| 2359 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:5
|
| 2360 |
-
msgid "Excerpt"
|
| 2361 |
-
msgstr "Extrait"
|
| 2362 |
-
|
| 2363 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:58
|
| 2364 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:11
|
| 2365 |
-
msgid "Full post"
|
| 2366 |
-
msgstr "Article complet"
|
| 2367 |
-
|
| 2368 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:64
|
| 2369 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:17
|
| 2370 |
-
msgid "Title only"
|
| 2371 |
-
msgstr "Titre uniquement"
|
| 2372 |
-
|
| 2373 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:70
|
| 2374 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:25
|
| 2375 |
-
msgid "Title Format"
|
| 2376 |
-
msgstr "Format du titre"
|
| 2377 |
-
|
| 2378 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:74
|
| 2379 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:29
|
| 2380 |
-
#: views/newsletter/templates/components/sidebar/styles.hbs:33
|
| 2381 |
-
msgid "Heading 1"
|
| 2382 |
-
msgstr "Titre 1"
|
| 2383 |
-
|
| 2384 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:80
|
| 2385 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:35
|
| 2386 |
-
#: views/newsletter/templates/components/sidebar/styles.hbs:48
|
| 2387 |
-
msgid "Heading 2"
|
| 2388 |
-
msgstr "Titre 2"
|
| 2389 |
-
|
| 2390 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:86
|
| 2391 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:41
|
| 2392 |
-
#: views/newsletter/templates/components/sidebar/styles.hbs:63
|
| 2393 |
-
msgid "Heading 3"
|
| 2394 |
-
msgstr "Titre 3"
|
| 2395 |
-
|
| 2396 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:92
|
| 2397 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:47
|
| 2398 |
-
msgid "Show as list"
|
| 2399 |
-
msgstr "Afficher en liste"
|
| 2400 |
-
|
| 2401 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:98
|
| 2402 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:53
|
| 2403 |
-
msgid "Title Alignment"
|
| 2404 |
-
msgstr "Alignement du titre"
|
| 2405 |
-
|
| 2406 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:102
|
| 2407 |
-
#: views/newsletter/templates/blocks/button/settings.hbs:27
|
| 2408 |
-
#: views/newsletter/templates/blocks/footer/settings.hbs:41
|
| 2409 |
-
#: views/newsletter/templates/blocks/header/settings.hbs:41
|
| 2410 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:57
|
| 2411 |
-
msgid "Left"
|
| 2412 |
-
msgstr "À gauche"
|
| 2413 |
-
|
| 2414 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:108
|
| 2415 |
-
#: views/newsletter/templates/blocks/button/settings.hbs:33
|
| 2416 |
-
#: views/newsletter/templates/blocks/footer/settings.hbs:47
|
| 2417 |
-
#: views/newsletter/templates/blocks/header/settings.hbs:47
|
| 2418 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:63
|
| 2419 |
-
msgid "Center"
|
| 2420 |
-
msgstr "Centré"
|
| 2421 |
-
|
| 2422 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:114
|
| 2423 |
-
#: views/newsletter/templates/blocks/button/settings.hbs:39
|
| 2424 |
-
#: views/newsletter/templates/blocks/footer/settings.hbs:53
|
| 2425 |
-
#: views/newsletter/templates/blocks/header/settings.hbs:53
|
| 2426 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:69
|
| 2427 |
-
msgid "Right"
|
| 2428 |
-
msgstr "À droite"
|
| 2429 |
-
|
| 2430 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:120
|
| 2431 |
-
msgid "Title as links"
|
| 2432 |
-
msgstr "Titre en tant que lien"
|
| 2433 |
-
|
| 2434 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:138
|
| 2435 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:95
|
| 2436 |
-
msgid "Featured image position"
|
| 2437 |
-
msgstr "Position de l’image mise en avant"
|
| 2438 |
-
|
| 2439 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:142
|
| 2440 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:99
|
| 2441 |
-
msgid "Below title"
|
| 2442 |
-
msgstr "Sous le titre"
|
| 2443 |
-
|
| 2444 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:148
|
| 2445 |
-
msgid "Above title"
|
| 2446 |
-
msgstr "Au-dessus du titre"
|
| 2447 |
-
|
| 2448 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:154
|
| 2449 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:111
|
| 2450 |
-
msgid "None"
|
| 2451 |
-
msgstr "Aucun"
|
| 2452 |
-
|
| 2453 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:161
|
| 2454 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:117
|
| 2455 |
-
msgid "Image width"
|
| 2456 |
-
msgstr "Largeur de l’image"
|
| 2457 |
-
|
| 2458 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:165
|
| 2459 |
-
#: views/newsletter/templates/blocks/image/settings.hbs:30
|
| 2460 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:121
|
| 2461 |
-
msgid "Full width"
|
| 2462 |
-
msgstr "Pleine largeur"
|
| 2463 |
-
|
| 2464 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:171
|
| 2465 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:127
|
| 2466 |
-
msgid "Padded"
|
| 2467 |
-
msgstr "Retrait"
|
| 2468 |
-
|
| 2469 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:179
|
| 2470 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:135
|
| 2471 |
-
msgid "Show author"
|
| 2472 |
-
msgstr "Afficher l’auteur"
|
| 2473 |
-
|
| 2474 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:189
|
| 2475 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:215
|
| 2476 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:145
|
| 2477 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:171
|
| 2478 |
-
msgid "Above text"
|
| 2479 |
-
msgstr "Au-dessus du texte"
|
| 2480 |
-
|
| 2481 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:195
|
| 2482 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:221
|
| 2483 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:151
|
| 2484 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:177
|
| 2485 |
-
msgid "Below text"
|
| 2486 |
-
msgstr "Sous le texte"
|
| 2487 |
-
|
| 2488 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:198
|
| 2489 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:224
|
| 2490 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:154
|
| 2491 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:180
|
| 2492 |
-
msgid "Preceded by:"
|
| 2493 |
-
msgstr "Précédé par :"
|
| 2494 |
-
|
| 2495 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:205
|
| 2496 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:161
|
| 2497 |
-
msgid "Show categories"
|
| 2498 |
-
msgstr "Afficher les catégories"
|
| 2499 |
-
|
| 2500 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:233
|
| 2501 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:189
|
| 2502 |
-
msgid "\"Read more\" text"
|
| 2503 |
-
msgstr "Texte du « Lire la suite »"
|
| 2504 |
-
|
| 2505 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:252
|
| 2506 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:208
|
| 2507 |
-
msgid "Design a button"
|
| 2508 |
-
msgstr "Concevoir un bouton"
|
| 2509 |
-
|
| 2510 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:260
|
| 2511 |
-
msgid "Sort by"
|
| 2512 |
-
msgstr "Trier par"
|
| 2513 |
-
|
| 2514 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:264
|
| 2515 |
-
msgid "Newest"
|
| 2516 |
-
msgstr "Plus récente"
|
| 2517 |
-
|
| 2518 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:270
|
| 2519 |
-
msgid "Oldest"
|
| 2520 |
-
msgstr "Plus ancienne"
|
| 2521 |
-
|
| 2522 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:277
|
| 2523 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:217
|
| 2524 |
-
msgid "Show divider between posts"
|
| 2525 |
-
msgstr "Afficher les séparateurs entre les articles"
|
| 2526 |
-
|
| 2527 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:291
|
| 2528 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:231
|
| 2529 |
-
msgid "Select divider"
|
| 2530 |
-
msgstr "Sélectionner le séparateur"
|
| 2531 |
-
|
| 2532 |
-
#: views/newsletter/templates/blocks/automatedLatestContent/widget.hbs:4
|
| 2533 |
-
msgid "Automatic Latest Content"
|
| 2534 |
-
msgstr "Contenu récent automatique"
|
| 2535 |
-
|
| 2536 |
-
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:2
|
| 2537 |
-
msgid "Switch editing layer"
|
| 2538 |
-
msgstr "Basculer vers modification de calque"
|
| 2539 |
-
|
| 2540 |
-
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:4
|
| 2541 |
-
msgid "Edit settings"
|
| 2542 |
-
msgstr "Modifier les réglages"
|
| 2543 |
-
|
| 2544 |
-
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
|
| 2545 |
-
#: views/newsletters.html:99
|
| 2546 |
-
msgid "Delete"
|
| 2547 |
-
msgstr "Supprimer"
|
| 2548 |
-
|
| 2549 |
-
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
|
| 2550 |
-
msgid "Confirm deletion"
|
| 2551 |
-
msgstr "Confirmer la suppression"
|
| 2552 |
-
|
| 2553 |
-
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
|
| 2554 |
-
msgid "Cancel deletion"
|
| 2555 |
-
msgstr "Annuler la suppression"
|
| 2556 |
-
|
| 2557 |
-
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
|
| 2558 |
-
msgid "Drag to move"
|
| 2559 |
-
msgstr "Glissez pour déplacer"
|
| 2560 |
-
|
| 2561 |
-
#: views/newsletter/templates/blocks/button/settings.hbs:4
|
| 2562 |
-
msgid "Label"
|
| 2563 |
-
msgstr "Libellé"
|
| 2564 |
-
|
| 2565 |
-
#: views/newsletter/templates/blocks/button/settings.hbs:23
|
| 2566 |
-
msgid "Alignment"
|
| 2567 |
-
msgstr "Alignement"
|
| 2568 |
-
|
| 2569 |
-
#: views/newsletter/templates/blocks/button/settings.hbs:57
|
| 2570 |
-
#: views/newsletter/templates/blocks/footer/settings.hbs:16
|
| 2571 |
-
#: views/newsletter/templates/blocks/header/settings.hbs:16
|
| 2572 |
-
#: views/newsletter/templates/blocks/social/settingsIcon.hbs:55
|
| 2573 |
-
#: views/newsletter/templates/blocks/text/settings.hbs:1
|
| 2574 |
-
#: views/newsletter/templates/blocks/text/settings.hbs:2
|
| 2575 |
-
#: views/newsletter/templates/blocks/text/widget.hbs:4
|
| 2576 |
-
#: views/newsletter/templates/components/sidebar/styles.hbs:18
|
| 2577 |
-
msgid "Text"
|
| 2578 |
-
msgstr "Texte "
|
| 2579 |
-
|
| 2580 |
-
#: views/newsletter/templates/blocks/button/settings.hbs:63
|
| 2581 |
-
msgid "Bold"
|
| 2582 |
-
msgstr "Gras"
|
| 2583 |
-
|
| 2584 |
-
#: views/newsletter/templates/blocks/button/settings.hbs:71
|
| 2585 |
-
#: views/newsletter/templates/blocks/container/settings.hbs:7
|
| 2586 |
-
#: views/newsletter/templates/blocks/divider/settings.hbs:28
|
| 2587 |
-
#: views/newsletter/templates/blocks/footer/settings.hbs:34
|
| 2588 |
-
#: views/newsletter/templates/blocks/header/settings.hbs:34
|
| 2589 |
-
#: views/newsletter/templates/blocks/spacer/settings.hbs:6
|
| 2590 |
-
#: views/newsletter/templates/components/sidebar/styles.hbs:79
|
| 2591 |
-
msgid "Background"
|
| 2592 |
-
msgstr "Arrière-plan"
|
| 2593 |
-
|
| 2594 |
-
#: views/newsletter/templates/blocks/button/settings.hbs:77
|
| 2595 |
-
msgid "Border"
|
| 2596 |
-
msgstr "Bordure"
|
| 2597 |
-
|
| 2598 |
-
#: views/newsletter/templates/blocks/button/settings.hbs:85
|
| 2599 |
-
msgid "Rounded corners"
|
| 2600 |
-
msgstr "Coins arrondis"
|
| 2601 |
-
|
| 2602 |
-
#: views/newsletter/templates/blocks/button/settings.hbs:94
|
| 2603 |
-
msgid "Width"
|
| 2604 |
-
msgstr "Largeur"
|
| 2605 |
-
|
| 2606 |
-
#: views/newsletter/templates/blocks/button/settings.hbs:103
|
| 2607 |
-
msgid "Height"
|
| 2608 |
-
msgstr "Hauteur"
|
| 2609 |
-
|
| 2610 |
-
#: views/newsletter/templates/blocks/button/settings.hbs:112
|
| 2611 |
-
msgid "Apply styles to all buttons"
|
| 2612 |
-
msgstr "Appliquer les styles à tous les boutons"
|
| 2613 |
-
|
| 2614 |
-
#: views/newsletter/templates/blocks/container/emptyBlock.hbs:1
|
| 2615 |
-
msgid "Add a column block here."
|
| 2616 |
-
msgstr "Ajouter un bloc de colonne ici."
|
| 2617 |
-
|
| 2618 |
-
#: views/newsletter/templates/blocks/container/emptyBlock.hbs:1
|
| 2619 |
-
msgid "Add a content block here."
|
| 2620 |
-
msgstr "Ajouter un bloc de contenu ici."
|
| 2621 |
-
|
| 2622 |
-
#: views/newsletter/templates/blocks/container/oneColumnLayoutWidget.hbs:4
|
| 2623 |
-
msgid "1 column"
|
| 2624 |
-
msgstr "1 colonne"
|
| 2625 |
-
|
| 2626 |
-
#: views/newsletter/templates/blocks/container/settings.hbs:1
|
| 2627 |
-
#: views/newsletter/templates/components/sidebar/layout.hbs:2
|
| 2628 |
-
msgid "Columns"
|
| 2629 |
-
msgstr "Colonnes"
|
| 2630 |
-
|
| 2631 |
-
#: views/newsletter/templates/blocks/container/threeColumnLayoutWidget.hbs:4
|
| 2632 |
-
msgid "3 columns"
|
| 2633 |
-
msgstr "3 colonnes"
|
| 2634 |
-
|
| 2635 |
-
#: views/newsletter/templates/blocks/container/twoColumnLayoutWidget.hbs:4
|
| 2636 |
-
msgid "2 columns"
|
| 2637 |
-
msgstr "2 colonnes"
|
| 2638 |
-
|
| 2639 |
-
#: views/newsletter/templates/blocks/divider/settings.hbs:1
|
| 2640 |
-
msgid "Dividers"
|
| 2641 |
-
msgstr "Séparateurs"
|
| 2642 |
-
|
| 2643 |
-
#: views/newsletter/templates/blocks/divider/settings.hbs:15
|
| 2644 |
-
msgid "Divider height"
|
| 2645 |
-
msgstr "Hauteur du séparateur"
|
| 2646 |
-
|
| 2647 |
-
#: views/newsletter/templates/blocks/divider/settings.hbs:22
|
| 2648 |
-
msgid "Divider color"
|
| 2649 |
-
msgstr "Couleur du séparateur"
|
| 2650 |
-
|
| 2651 |
-
#: views/newsletter/templates/blocks/divider/settings.hbs:32
|
| 2652 |
-
msgid "Apply to all dividers"
|
| 2653 |
-
msgstr "Appliquer à tous les séparateurs"
|
| 2654 |
-
|
| 2655 |
-
#: views/newsletter/templates/blocks/footer/settings.hbs:1
|
| 2656 |
-
#: views/newsletter/templates/blocks/footer/widget.hbs:4
|
| 2657 |
-
msgid "Footer"
|
| 2658 |
-
msgstr "Pied de page"
|
| 2659 |
-
|
| 2660 |
-
#: views/newsletter/templates/blocks/footer/settings.hbs:25
|
| 2661 |
-
#: views/newsletter/templates/blocks/header/settings.hbs:25
|
| 2662 |
-
#: views/newsletter/templates/components/sidebar/styles.hbs:68
|
| 2663 |
-
msgid "Underline"
|
| 2664 |
-
msgstr "Souligner"
|
| 2665 |
-
|
| 2666 |
-
#: views/newsletter/templates/blocks/header/settings.hbs:1
|
| 2667 |
-
#: views/newsletter/templates/blocks/header/widget.hbs:4
|
| 2668 |
-
msgid "Header"
|
| 2669 |
-
msgstr "En-tête"
|
| 2670 |
-
|
| 2671 |
-
#: views/newsletter/templates/blocks/image/settings.hbs:1
|
| 2672 |
-
#: views/newsletter/templates/blocks/image/widget.hbs:4
|
| 2673 |
-
#: views/newsletter/templates/blocks/social/settingsIcon.hbs:27
|
| 2674 |
-
msgid "Image"
|
| 2675 |
-
msgstr "Image"
|
| 2676 |
-
|
| 2677 |
-
#: views/newsletter/templates/blocks/image/settings.hbs:4
|
| 2678 |
-
msgid "Optional"
|
| 2679 |
-
msgstr "Facultatif"
|
| 2680 |
-
|
| 2681 |
-
#: views/newsletter/templates/blocks/image/settings.hbs:12
|
| 2682 |
-
msgid "Address"
|
| 2683 |
-
msgstr "Adresse"
|
| 2684 |
-
|
| 2685 |
-
#: views/newsletter/templates/blocks/image/settings.hbs:20
|
| 2686 |
-
msgid "Alternative text"
|
| 2687 |
-
msgstr "Texte alternatif"
|
| 2688 |
-
|
| 2689 |
-
#: views/newsletter/templates/blocks/image/settings.hbs:36
|
| 2690 |
-
msgid "Select another image"
|
| 2691 |
-
msgstr "Sélectionner une autre image"
|
| 2692 |
-
|
| 2693 |
-
#: views/newsletter/templates/blocks/posts/settings.hbs:6
|
| 2694 |
-
msgid "Back to selection"
|
| 2695 |
-
msgstr "Retour à la sélection"
|
| 2696 |
-
|
| 2697 |
-
#: views/newsletter/templates/blocks/posts/settings.hbs:9
|
| 2698 |
-
msgid "Insert selected"
|
| 2699 |
-
msgstr "Insérer la sélection"
|
| 2700 |
-
|
| 2701 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:75
|
| 2702 |
-
msgid "Make the post title into a link"
|
| 2703 |
-
msgstr "Faire un lien du titre de l’article"
|
| 2704 |
-
|
| 2705 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:105
|
| 2706 |
-
msgid "Above block"
|
| 2707 |
-
msgstr "Au-dessus du bloc"
|
| 2708 |
-
|
| 2709 |
-
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:3
|
| 2710 |
-
msgid "Search..."
|
| 2711 |
-
msgstr "Rechercher…"
|
| 2712 |
-
|
| 2713 |
-
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:10
|
| 2714 |
-
msgid "Published"
|
| 2715 |
-
msgstr "Publié"
|
| 2716 |
-
|
| 2717 |
-
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:13
|
| 2718 |
-
msgid "Pending Review"
|
| 2719 |
-
msgstr "En attente de relecture"
|
| 2720 |
-
|
| 2721 |
-
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:14
|
| 2722 |
-
msgid "Private"
|
| 2723 |
-
msgstr "Privé"
|
| 2724 |
-
|
| 2725 |
-
#: views/newsletter/templates/blocks/posts/settingsSelectionEmpty.hbs:1
|
| 2726 |
-
msgid "No posts available"
|
| 2727 |
-
msgstr "Aucun article disponible"
|
| 2728 |
-
|
| 2729 |
-
#: views/newsletter/templates/blocks/social/settings.hbs:1
|
| 2730 |
-
msgid "Select icons"
|
| 2731 |
-
msgstr "Sélectionner des icônes"
|
| 2732 |
-
|
| 2733 |
-
#: views/newsletter/templates/blocks/social/settingsIconSelector.hbs:2
|
| 2734 |
-
msgid "Add another social network"
|
| 2735 |
-
msgstr "Ajouter un autre réseau social"
|
| 2736 |
-
|
| 2737 |
-
#: views/newsletter/templates/blocks/social/widget.hbs:2
|
| 2738 |
-
msgid "Social"
|
| 2739 |
-
msgstr "Réseaux sociaux"
|
| 2740 |
-
|
| 2741 |
-
#: views/newsletter/templates/blocks/spacer/settings.hbs:1
|
| 2742 |
-
#: views/newsletter/templates/blocks/spacer/widget.hbs:4
|
| 2743 |
-
msgid "Spacer"
|
| 2744 |
-
msgstr "Espacement"
|
| 2745 |
-
|
| 2746 |
-
#: views/newsletter/templates/components/heading.hbs:6
|
| 2747 |
-
msgid "Click here to change the subject!"
|
| 2748 |
-
msgstr "Cliquez ici pour changer le sujet !"
|
| 2749 |
-
|
| 2750 |
-
#: views/newsletter/templates/components/heading.hbs:13
|
| 2751 |
-
msgid ""
|
| 2752 |
-
"Preview text (usually displayed underneath the subject line in the inbox)"
|
| 2753 |
-
msgstr "Texte d’aperçu (habituellement sous la ligne de sujet dans la boîte de réception)"
|
| 2754 |
-
|
| 2755 |
-
#: views/newsletter/templates/components/save.hbs:5 views/newsletters.html:136
|
| 2756 |
-
#: views/newsletters.html:213
|
| 2757 |
-
msgid "Next"
|
| 2758 |
-
msgstr "Suivant"
|
| 2759 |
-
|
| 2760 |
-
#: views/newsletter/templates/components/save.hbs:7
|
| 2761 |
-
msgid "Autosaved"
|
| 2762 |
-
msgstr "Auto-enregistré"
|
| 2763 |
-
|
| 2764 |
-
#: views/newsletter/templates/components/save.hbs:10
|
| 2765 |
-
#: views/newsletter/templates/components/save.hbs:15
|
| 2766 |
-
#: views/newsletter/templates/components/save.hbs:18
|
| 2767 |
-
msgid "Save as template"
|
| 2768 |
-
msgstr "Enregistrer comme modèle"
|
| 2769 |
-
|
| 2770 |
-
#: views/newsletter/templates/components/save.hbs:11
|
| 2771 |
-
msgid "Export as template"
|
| 2772 |
-
msgstr "Exporter comme modèle"
|
| 2773 |
-
|
| 2774 |
-
#: views/newsletter/templates/components/save.hbs:16
|
| 2775 |
-
msgid "Insert template name"
|
| 2776 |
-
msgstr "Insérer le nom du modèle"
|
| 2777 |
-
|
| 2778 |
-
#: views/newsletter/templates/components/save.hbs:17
|
| 2779 |
-
msgid "Insert template description"
|
| 2780 |
-
msgstr "Insérer la description du modèle"
|
| 2781 |
-
|
| 2782 |
-
#: views/newsletter/templates/components/save.hbs:21
|
| 2783 |
-
#: views/newsletter/templates/components/save.hbs:24
|
| 2784 |
-
msgid "Export template"
|
| 2785 |
-
msgstr "Exporter le modèle"
|
| 2786 |
-
|
| 2787 |
-
#: views/newsletter/templates/components/save.hbs:22
|
| 2788 |
-
msgid "Template name"
|
| 2789 |
-
msgstr "Nom du modèle"
|
| 2790 |
-
|
| 2791 |
-
#: views/newsletter/templates/components/save.hbs:23
|
| 2792 |
-
msgid "Template description"
|
| 2793 |
-
msgstr "Description du modèle"
|
| 2794 |
-
|
| 2795 |
-
#: views/newsletter/templates/components/sidebar/content.hbs:2
|
| 2796 |
-
msgid "Content"
|
| 2797 |
-
msgstr "Contenu"
|
| 2798 |
-
|
| 2799 |
-
#: views/newsletter/templates/components/sidebar/preview.hbs:8
|
| 2800 |
-
msgid "Send preview to"
|
| 2801 |
-
msgstr "Envoyer l’aperçu à"
|
| 2802 |
-
|
| 2803 |
-
#: views/newsletter/templates/components/sidebar/preview.hbs:14
|
| 2804 |
-
msgid "Send preview"
|
| 2805 |
-
msgstr "Envoyer un aperçu"
|
| 2806 |
-
|
| 2807 |
-
#: views/newsletter/templates/components/sidebar/preview.hbs:20
|
| 2808 |
-
msgid "View in browser"
|
| 2809 |
-
msgstr "Afficher dans le navigateur"
|
| 2810 |
-
|
| 2811 |
-
#: views/newsletter/templates/components/sidebar/styles.hbs:1
|
| 2812 |
-
msgid "Click to toggle"
|
| 2813 |
-
msgstr "Cliquez pour basculer"
|
| 2814 |
-
|
| 2815 |
-
#: views/newsletters.html:25
|
| 2816 |
-
msgid "Newsletters"
|
| 2817 |
-
msgstr "Newsletters"
|
| 2818 |
-
|
| 2819 |
-
#: views/newsletters.html:26
|
| 2820 |
-
msgid "Welcome Emails"
|
| 2821 |
-
msgstr "E-mails de bienvenue"
|
| 2822 |
-
|
| 2823 |
-
#: views/newsletters.html:30
|
| 2824 |
-
msgid "Loading newsletters..."
|
| 2825 |
-
msgstr "Chargement des newsletters…"
|
| 2826 |
-
|
| 2827 |
-
#: views/newsletters.html:31
|
| 2828 |
-
msgid ""
|
| 2829 |
-
"Nothing here yet! But, don't fret - there's no reason to get upset. Pretty "
|
| 2830 |
-
"soon, you’ll be sending emails faster than a turbo-jet."
|
| 2831 |
-
msgstr "Rien ici actuellement ! Mais ne vous inquiétez pas - Il n’y a aucune raison de s’énerver. Très rapidement vous enverrez des e-mails à la vitesse de la lumière."
|
| 2832 |
-
|
| 2833 |
-
#: views/newsletters.html:32
|
| 2834 |
-
msgid "All newsletters on this page are selected."
|
| 2835 |
-
msgstr "Toutes les newsletters de cette page sont sélectionnées."
|
| 2836 |
-
|
| 2837 |
-
#: views/newsletters.html:33
|
| 2838 |
-
msgid "All %d newsletters are selected."
|
| 2839 |
-
msgstr "Toutes les %d newsletters sont sélectionnées."
|
| 2840 |
-
|
| 2841 |
-
#: views/newsletters.html:34
|
| 2842 |
-
msgid "Select all newsletters on all pages"
|
| 2843 |
-
msgstr "Sélectionner toutes les newsletters sur toutes les pages"
|
| 2844 |
-
|
| 2845 |
-
#: views/newsletters.html:36
|
| 2846 |
-
msgid "%d newsletters were permanently deleted."
|
| 2847 |
-
msgstr "%d newsletters ont été définitivement supprimées."
|
| 2848 |
-
|
| 2849 |
-
#: views/newsletters.html:45
|
| 2850 |
-
#: views/subscribers/importExport/import/step2.html:8
|
| 2851 |
-
#: views/subscribers/importExport/import.html:47
|
| 2852 |
-
#: views/subscribers/subscribers.html:37
|
| 2853 |
-
msgid "Show more details"
|
| 2854 |
-
msgstr "Afficher plus de détails"
|
| 2855 |
-
|
| 2856 |
-
#: views/newsletters.html:51 views/segments.html:62
|
| 2857 |
-
msgid "Current page"
|
| 2858 |
-
msgstr "Page actuelle"
|
| 2859 |
-
|
| 2860 |
-
#: views/newsletters.html:60 views/newsletters.html:104
|
| 2861 |
-
msgid "Subject"
|
| 2862 |
-
msgstr "Sujet"
|
| 2863 |
-
|
| 2864 |
-
#: views/newsletters.html:62
|
| 2865 |
-
msgid "Opened, Clicked, Unsubscribed"
|
| 2866 |
-
msgstr "Ouvert, cliqué, désabonné"
|
| 2867 |
-
|
| 2868 |
-
#: views/newsletters.html:65
|
| 2869 |
-
msgid "History"
|
| 2870 |
-
msgstr "Historique"
|
| 2871 |
-
|
| 2872 |
-
#: views/newsletters.html:66
|
| 2873 |
-
msgid "View history"
|
| 2874 |
-
msgstr "Voir l’historique"
|
| 2875 |
-
|
| 2876 |
-
#: views/newsletters.html:67 views/segments.html:34
|
| 2877 |
-
msgid "Created on"
|
| 2878 |
-
msgstr "Date de création"
|
| 2879 |
-
|
| 2880 |
-
#: views/newsletters.html:68 views/subscribers/subscribers.html:64
|
| 2881 |
-
msgid "Last modified on"
|
| 2882 |
-
msgstr "Dernière modification le"
|
| 2883 |
-
|
| 2884 |
-
#: views/newsletters.html:69
|
| 2885 |
-
msgid "1 newsletter was moved to the trash."
|
| 2886 |
-
msgstr "1 newsletter a été déplacée dans la corbeille."
|
| 2887 |
-
|
| 2888 |
-
#: views/newsletters.html:70
|
| 2889 |
-
msgid "%$1d newsletters were moved to the trash."
|
| 2890 |
-
msgstr "%$1d newsletters ont été déplacées dans la corbeille."
|
| 2891 |
-
|
| 2892 |
-
#: views/newsletters.html:71
|
| 2893 |
-
msgid "1 newsletter was permanently deleted."
|
| 2894 |
-
msgstr "1 newsletter a été définitivement supprimée."
|
| 2895 |
-
|
| 2896 |
-
#: views/newsletters.html:72
|
| 2897 |
-
msgid "%$1d newsletters were permanently deleted."
|
| 2898 |
-
msgstr "%$1d newsletters ont été définitivement supprimées."
|
| 2899 |
-
|
| 2900 |
-
#: views/newsletters.html:73
|
| 2901 |
-
msgid "1 newsletter has been recovered from the trash."
|
| 2902 |
-
msgstr "1 newsletter a été récupéré depuis la corbeille."
|
| 2903 |
-
|
| 2904 |
-
#: views/newsletters.html:74
|
| 2905 |
-
msgid "%$1d newsletters have been recovered from the trash."
|
| 2906 |
-
msgstr "%$1d newsletters ont été récupérées depuis la corbeille."
|
| 2907 |
-
|
| 2908 |
-
#: views/newsletters.html:79
|
| 2909 |
-
msgid "Email \"%$1s\" has been duplicated."
|
| 2910 |
-
msgstr "L’e-mail « %$1s » a été dupliqué."
|
| 2911 |
-
|
| 2912 |
-
#: views/newsletters.html:80
|
| 2913 |
-
msgid "Not sent yet"
|
| 2914 |
-
msgstr "Pas encore envoyé"
|
| 2915 |
-
|
| 2916 |
-
#: views/newsletters.html:81
|
| 2917 |
-
msgid "Scheduled for"
|
| 2918 |
-
msgstr "Planifié pour"
|
| 2919 |
-
|
| 2920 |
-
#: views/newsletters.html:82
|
| 2921 |
-
msgid "Schedule it"
|
| 2922 |
-
msgstr "Planifier l’envoi"
|
| 2923 |
-
|
| 2924 |
-
#: views/newsletters.html:84
|
| 2925 |
-
msgid "Not Active"
|
| 2926 |
-
msgstr "Désactivé"
|
| 2927 |
-
|
| 2928 |
-
#: views/newsletters.html:85
|
| 2929 |
-
msgid "Sent to %$1d of %$2d"
|
| 2930 |
-
msgstr "Envoyé à %$1d sur %$2d"
|
| 2931 |
-
|
| 2932 |
-
#: views/newsletters.html:86
|
| 2933 |
-
msgid "Sent to %$1d subscribers"
|
| 2934 |
-
msgstr "Envoyé à %$1d abonnés"
|
| 2935 |
-
|
| 2936 |
-
#: views/newsletters.html:87
|
| 2937 |
-
msgid "Resume"
|
| 2938 |
-
msgstr "Reprendre"
|
| 2939 |
-
|
| 2940 |
-
#: views/newsletters.html:88
|
| 2941 |
-
msgid "Pause"
|
| 2942 |
-
msgstr "Pause"
|
| 2943 |
-
|
| 2944 |
-
#: views/newsletters.html:89
|
| 2945 |
-
msgid "Paused"
|
| 2946 |
-
msgstr "En pause"
|
| 2947 |
-
|
| 2948 |
-
#: views/newsletters.html:92
|
| 2949 |
-
msgid "This template file appears to be damaged. Please try another one."
|
| 2950 |
-
msgstr "Ce fichier de modèle semble endommagé. Veuillez en essayer un autre."
|
| 2951 |
-
|
| 2952 |
-
#: views/newsletters.html:93
|
| 2953 |
-
msgid "Import a template"
|
| 2954 |
-
msgstr "Importer un modèle"
|
| 2955 |
-
|
| 2956 |
-
#: views/newsletters.html:94
|
| 2957 |
-
msgid "Select a .json file to upload"
|
| 2958 |
-
msgstr "Sélectionner un fichier .json à mettre en ligne"
|
| 2959 |
-
|
| 2960 |
-
#: views/newsletters.html:95
|
| 2961 |
-
msgid "Upload"
|
| 2962 |
-
msgstr "Mettre en ligne"
|
| 2963 |
-
|
| 2964 |
-
#: views/newsletters.html:96
|
| 2965 |
-
msgid "MailPoet's Guide"
|
| 2966 |
-
msgstr "Guide de MailPoet"
|
| 2967 |
-
|
| 2968 |
-
#: views/newsletters.html:97
|
| 2969 |
-
msgid "This is the standard template that comes with MailPoet."
|
| 2970 |
-
msgstr "Ceci est le modèle standard fourni avec MailPoet."
|
| 2971 |
-
|
| 2972 |
-
#: views/newsletters.html:98
|
| 2973 |
-
msgid "You are about to delete the template named \"%$1s\"."
|
| 2974 |
-
msgstr "Vous êtes sur le point de supprimer le modèle « %1$s »."
|
| 2975 |
-
|
| 2976 |
-
#: views/newsletters.html:102
|
| 2977 |
-
msgid "Select a responsive template"
|
| 2978 |
-
msgstr "Sélectionner une modèle responsive"
|
| 2979 |
-
|
| 2980 |
-
#: views/newsletters.html:105
|
| 2981 |
-
msgid "Select type of email"
|
| 2982 |
-
msgstr "Sélectionner le type d’e-mail"
|
| 2983 |
-
|
| 2984 |
-
#: views/newsletters.html:107
|
| 2985 |
-
msgid ""
|
| 2986 |
-
"Send a newsletter with images, buttons, dividers, and social bookmarks. Or, "
|
| 2987 |
-
"just send a basic text email."
|
| 2988 |
-
msgstr "Envoyez une newsletter avec des images, des boutons, des séparateurs et des liens vers les réseaux sociaux. Ou envoyez un e-mail basique en texte."
|
| 2989 |
-
|
| 2990 |
-
#: views/newsletters.html:108
|
| 2991 |
-
msgid "Create"
|
| 2992 |
-
msgstr "Créer"
|
| 2993 |
-
|
| 2994 |
-
#: views/newsletters.html:109
|
| 2995 |
-
msgid "Welcome Email"
|
| 2996 |
-
msgstr "E-mail de bienvenue"
|
| 2997 |
-
|
| 2998 |
-
#: views/newsletters.html:110
|
| 2999 |
-
msgid ""
|
| 3000 |
-
"Automatically send an email (or series of emails) to new subscribers or "
|
| 3001 |
-
"WordPress users. Send a day, a week, or a month after they sign up."
|
| 3002 |
-
msgstr "Envoi automatique d’un e-mail (ou de séries d’e-mails) aux nouveaux abonnés ou utilisateurs WordPress. Envoi un jour, une semaine ou un mois après leur inscription."
|
| 3003 |
-
|
| 3004 |
-
#: views/newsletters.html:111
|
| 3005 |
-
msgid "Set up"
|
| 3006 |
-
msgstr "Configuration"
|
| 3007 |
-
|
| 3008 |
-
#: views/newsletters.html:112
|
| 3009 |
-
msgid "Latest Post Notifications"
|
| 3010 |
-
msgstr "Notifications d’article récent"
|
| 3011 |
-
|
| 3012 |
-
#: views/newsletters.html:113
|
| 3013 |
-
msgid ""
|
| 3014 |
-
"Let MailPoet email your subscribers with your latest content. You can send "
|
| 3015 |
-
"daily, weekly, monthly, or even immediately after publication."
|
| 3016 |
-
msgstr "Envoyez un e-mail à vos abonnés avec vos contenus récents quotidiennement, hebdomadairement, mensuellement ou immédiatement après publication."
|
| 3017 |
-
|
| 3018 |
-
#: views/newsletters.html:114
|
| 3019 |
-
msgid "Select a frequency"
|
| 3020 |
-
msgstr "Sélectionner une fréquence"
|
| 3021 |
-
|
| 3022 |
-
#: views/newsletters.html:115
|
| 3023 |
-
msgid ""
|
| 3024 |
-
"Insert [newsletter:total] to show number of posts, [newsletter:post_title] "
|
| 3025 |
-
"to show the latest post's title & [newsletter:number] to display the issue "
|
| 3026 |
-
"number."
|
| 3027 |
-
msgstr "Afficher le nombre d’articles avec [newsletter:total], le titre du dernier article avec [newsletter:post_title] et le numéro de l’envoi avec [newsletter:number]."
|
| 3028 |
-
|
| 3029 |
-
#: views/newsletters.html:116 views/settings/mta.html:657
|
| 3030 |
-
msgid "Activate"
|
| 3031 |
-
msgstr "Activer"
|
| 3032 |
-
|
| 3033 |
-
#: views/newsletters.html:117
|
| 3034 |
-
msgid "Send this Welcome Email when..."
|
| 3035 |
-
msgstr "Envoyer cet e-mail de bienvenue lorsque…"
|
| 3036 |
-
|
| 3037 |
-
#: views/newsletters.html:119
|
| 3038 |
-
msgid "Once a day at..."
|
| 3039 |
-
msgstr "Une fois par jour à…"
|
| 3040 |
-
|
| 3041 |
-
#: views/newsletters.html:120
|
| 3042 |
-
msgid "Weekly on..."
|
| 3043 |
-
msgstr "Hebdomadairement le…"
|
| 3044 |
-
|
| 3045 |
-
#: views/newsletters.html:121
|
| 3046 |
-
msgid "Monthly on the..."
|
| 3047 |
-
msgstr "Mensuellement le…"
|
| 3048 |
-
|
| 3049 |
-
#: views/newsletters.html:122
|
| 3050 |
-
msgid "Monthly every..."
|
| 3051 |
-
msgstr "Mensuellement chaque…"
|
| 3052 |
-
|
| 3053 |
-
#: views/newsletters.html:123
|
| 3054 |
-
msgid "Immediately."
|
| 3055 |
-
msgstr "Immédiatement."
|
| 3056 |
-
|
| 3057 |
-
#: views/newsletters.html:124
|
| 3058 |
-
msgid "Sunday"
|
| 3059 |
-
msgstr "dimanche"
|
| 3060 |
-
|
| 3061 |
-
#: views/newsletters.html:125
|
| 3062 |
-
msgid "Monday"
|
| 3063 |
-
msgstr "lundi"
|
| 3064 |
-
|
| 3065 |
-
#: views/newsletters.html:126
|
| 3066 |
-
msgid "Tuesday"
|
| 3067 |
-
msgstr "mardi"
|
| 3068 |
-
|
| 3069 |
-
#: views/newsletters.html:127
|
| 3070 |
-
msgid "Wednesday"
|
| 3071 |
-
msgstr "mercredi"
|
| 3072 |
-
|
| 3073 |
-
#: views/newsletters.html:128
|
| 3074 |
-
msgid "Thursday"
|
| 3075 |
-
msgstr "jeudi"
|
| 3076 |
-
|
| 3077 |
-
#: views/newsletters.html:129
|
| 3078 |
-
msgid "Friday"
|
| 3079 |
-
msgstr "vendredi"
|
| 3080 |
-
|
| 3081 |
-
#: views/newsletters.html:130
|
| 3082 |
-
msgid "Saturday"
|
| 3083 |
-
msgstr "samedi"
|
| 3084 |
-
|
| 3085 |
-
#: views/newsletters.html:131
|
| 3086 |
-
msgid "1st"
|
| 3087 |
-
msgstr "1er"
|
| 3088 |
-
|
| 3089 |
-
#: views/newsletters.html:132
|
| 3090 |
-
msgid "2nd"
|
| 3091 |
-
msgstr "2ème"
|
| 3092 |
-
|
| 3093 |
-
#: views/newsletters.html:133
|
| 3094 |
-
msgid "3rd"
|
| 3095 |
-
msgstr "3ème"
|
| 3096 |
-
|
| 3097 |
-
#: views/newsletters.html:134
|
| 3098 |
-
msgid "%$1dth"
|
| 3099 |
-
msgstr "%$1dth"
|
| 3100 |
-
|
| 3101 |
-
#: views/newsletters.html:135
|
| 3102 |
-
msgid "last"
|
| 3103 |
-
msgstr "dernier"
|
| 3104 |
-
|
| 3105 |
-
#: views/newsletters.html:138
|
| 3106 |
-
msgid "When is this Welcome Email sent?"
|
| 3107 |
-
msgstr "Quand cet e-mail de bienvenue est-il envoyé ?"
|
| 3108 |
-
|
| 3109 |
-
#: views/newsletters.html:140
|
| 3110 |
-
msgid "When someone subscribes to the list..."
|
| 3111 |
-
msgstr "Lorsque quelqu’un s’inscrit à la liste..."
|
| 3112 |
-
|
| 3113 |
-
#: views/newsletters.html:141
|
| 3114 |
-
msgid "When a new WordPress user is added to your site..."
|
| 3115 |
-
msgstr "Lorsqu’un nouvel utilisateur WordPress est ajouté à votre site..."
|
| 3116 |
-
|
| 3117 |
-
#: views/newsletters.html:142
|
| 3118 |
-
msgid "immediately"
|
| 3119 |
-
msgstr "immédiatement"
|
| 3120 |
-
|
| 3121 |
-
#: views/newsletters.html:143
|
| 3122 |
-
msgid "hour(s) later"
|
| 3123 |
-
msgstr "heure(s) après"
|
| 3124 |
-
|
| 3125 |
-
#: views/newsletters.html:144
|
| 3126 |
-
msgid "day(s) later"
|
| 3127 |
-
msgstr "jour(s) après"
|
| 3128 |
-
|
| 3129 |
-
#: views/newsletters.html:145
|
| 3130 |
-
msgid "week(s) later"
|
| 3131 |
-
msgstr "semaine(s) après"
|
| 3132 |
-
|
| 3133 |
-
#: views/newsletters.html:147
|
| 3134 |
-
msgid "Subject line"
|
| 3135 |
-
msgstr "Sujet"
|
| 3136 |
-
|
| 3137 |
-
#: views/newsletters.html:148
|
| 3138 |
-
msgid ""
|
| 3139 |
-
"Be creative! It's the first thing that your subscribers see. Tempt them to "
|
| 3140 |
-
"open your email."
|
| 3141 |
-
msgstr "Soyez créatif ! C’est la première chose que vos abonnés voient. Donnez leur envie d’ouvrir votre e-mail."
|
| 3142 |
-
|
| 3143 |
-
#: views/newsletters.html:149
|
| 3144 |
-
msgid "Please specify a subject"
|
| 3145 |
-
msgstr "Veuillez spécifier un sujet"
|
| 3146 |
-
|
| 3147 |
-
#: views/newsletters.html:151
|
| 3148 |
-
msgid "This subscriber segment will be used for this email."
|
| 3149 |
-
msgstr "Ce segment d’abonné sera utilisé pour cet e-mail."
|
| 3150 |
-
|
| 3151 |
-
#: views/newsletters.html:152 views/subscribers/subscribers.html:55
|
| 3152 |
-
msgid "Select a list"
|
| 3153 |
-
msgstr "Sélectionner une liste"
|
| 3154 |
-
|
| 3155 |
-
#: views/newsletters.html:154
|
| 3156 |
-
msgid "Sender"
|
| 3157 |
-
msgstr "Expéditeur"
|
| 3158 |
-
|
| 3159 |
-
#: views/newsletters.html:155
|
| 3160 |
-
msgid "Your name and email"
|
| 3161 |
-
msgstr "Votre nom et votre e-mail"
|
| 3162 |
-
|
| 3163 |
-
#: views/newsletters.html:156 views/newsletters.html:160
|
| 3164 |
-
msgid "John Doe"
|
| 3165 |
-
msgstr "Pierre Untel"
|
| 3166 |
-
|
| 3167 |
-
#: views/newsletters.html:157 views/newsletters.html:161
|
| 3168 |
-
msgid "john.doe@email.com"
|
| 3169 |
-
msgstr "pierre.untel@e-mail.fr"
|
| 3170 |
-
|
| 3171 |
-
#: views/newsletters.html:158 views/settings/basics.html:29
|
| 3172 |
-
#: views/settings/signup.html:85
|
| 3173 |
-
msgid "Reply-to"
|
| 3174 |
-
msgstr "Répondre à"
|
| 3175 |
-
|
| 3176 |
-
#: views/newsletters.html:159
|
| 3177 |
-
msgid ""
|
| 3178 |
-
"When your subscribers reply to your newsletter, their emails will go to this"
|
| 3179 |
-
" address."
|
| 3180 |
-
msgstr "Lorsque vos abonnés répondent à votre newsletter, leurs e-mails seront envoyés à cette adresse."
|
| 3181 |
-
|
| 3182 |
-
#: views/newsletters.html:162
|
| 3183 |
-
msgid "Newsletter was updated successfully!"
|
| 3184 |
-
msgstr "La newsletter a bien été mise à jour !"
|
| 3185 |
-
|
| 3186 |
-
#: views/newsletters.html:163
|
| 3187 |
-
msgid "Newsletter was added successfully!"
|
| 3188 |
-
msgstr "La newsletter a bien été ajoutée !"
|
| 3189 |
-
|
| 3190 |
-
#: views/newsletters.html:164
|
| 3191 |
-
msgid ""
|
| 3192 |
-
"An error occurred while trying to send. <a href=\"%$1s\">Please check your "
|
| 3193 |
-
"settings</a>."
|
| 3194 |
-
msgstr "Une erreur s’est produite lors de la tentative d’envoi. <a href=\"%$1s\">Veuillez vérifier vos réglages</a>."
|
| 3195 |
-
|
| 3196 |
-
#: views/newsletters.html:165
|
| 3197 |
-
msgid "Final Step: Last Details"
|
| 3198 |
-
msgstr "Étape finale : Derniers détails"
|
| 3199 |
-
|
| 3200 |
-
#: views/newsletters.html:166
|
| 3201 |
-
msgid "Save as draft and close"
|
| 3202 |
-
msgstr "Enregistrer comme brouillon et fermer"
|
| 3203 |
-
|
| 3204 |
-
#: views/newsletters.html:167
|
| 3205 |
-
msgid "or simply"
|
| 3206 |
-
msgstr "ou simplement"
|
| 3207 |
-
|
| 3208 |
-
#: views/newsletters.html:168
|
| 3209 |
-
msgid "go back to the Design page"
|
| 3210 |
-
msgstr "Retour à la page de conception"
|
| 3211 |
-
|
| 3212 |
-
#: views/newsletters.html:169
|
| 3213 |
-
msgid "Your website’s time is"
|
| 3214 |
-
msgstr "L’heure de votre site est"
|
| 3215 |
-
|
| 3216 |
-
#: views/newsletters.html:170
|
| 3217 |
-
msgid "Please enter the scheduled date."
|
| 3218 |
-
msgstr "Veuillez saisir la date de planification."
|
| 3219 |
-
|
| 3220 |
-
#: views/newsletters.html:171
|
| 3221 |
-
msgid "Schedule"
|
| 3222 |
-
msgstr "Planifier"
|
| 3223 |
-
|
| 3224 |
-
#: views/newsletters.html:173
|
| 3225 |
-
msgid "Close"
|
| 3226 |
-
msgstr "Fermer"
|
| 3227 |
-
|
| 3228 |
-
#: views/newsletters.html:174
|
| 3229 |
-
msgid "Today"
|
| 3230 |
-
msgstr "Aujourd’hui"
|
| 3231 |
-
|
| 3232 |
-
#: views/newsletters.html:187
|
| 3233 |
-
msgid "Jan"
|
| 3234 |
-
msgstr "Jan"
|
| 3235 |
-
|
| 3236 |
-
#: views/newsletters.html:188
|
| 3237 |
-
msgid "Feb"
|
| 3238 |
-
msgstr "Fév"
|
| 3239 |
-
|
| 3240 |
-
#: views/newsletters.html:189
|
| 3241 |
-
msgid "Mar"
|
| 3242 |
-
msgstr "Mars"
|
| 3243 |
-
|
| 3244 |
-
#: views/newsletters.html:190
|
| 3245 |
-
msgid "Apr"
|
| 3246 |
-
msgstr "Avr"
|
| 3247 |
-
|
| 3248 |
-
#: views/newsletters.html:192
|
| 3249 |
-
msgid "Jun"
|
| 3250 |
-
msgstr "Juin"
|
| 3251 |
-
|
| 3252 |
-
#: views/newsletters.html:193
|
| 3253 |
-
msgid "Jul"
|
| 3254 |
-
msgstr "Juil"
|
| 3255 |
-
|
| 3256 |
-
#: views/newsletters.html:194
|
| 3257 |
-
msgid "Aug"
|
| 3258 |
-
msgstr "Aoû"
|
| 3259 |
-
|
| 3260 |
-
#: views/newsletters.html:195
|
| 3261 |
-
msgid "Sep"
|
| 3262 |
-
msgstr "Sept"
|
| 3263 |
-
|
| 3264 |
-
#: views/newsletters.html:196
|
| 3265 |
-
msgid "Oct"
|
| 3266 |
-
msgstr "Oct"
|
| 3267 |
-
|
| 3268 |
-
#: views/newsletters.html:197
|
| 3269 |
-
msgid "Nov"
|
| 3270 |
-
msgstr "Nov"
|
| 3271 |
-
|
| 3272 |
-
#: views/newsletters.html:198
|
| 3273 |
-
msgid "Dec"
|
| 3274 |
-
msgstr "Déc"
|
| 3275 |
-
|
| 3276 |
-
#: views/newsletters.html:199
|
| 3277 |
-
msgid "Sun"
|
| 3278 |
-
msgstr "Dim"
|
| 3279 |
-
|
| 3280 |
-
#: views/newsletters.html:200
|
| 3281 |
-
msgid "Mon"
|
| 3282 |
-
msgstr "Lun"
|
| 3283 |
-
|
| 3284 |
-
#: views/newsletters.html:201
|
| 3285 |
-
msgid "Tue"
|
| 3286 |
-
msgstr "Mar"
|
| 3287 |
-
|
| 3288 |
-
#: views/newsletters.html:202
|
| 3289 |
-
msgid "Wed"
|
| 3290 |
-
msgstr "Mer"
|
| 3291 |
-
|
| 3292 |
-
#: views/newsletters.html:203
|
| 3293 |
-
msgid "Thu"
|
| 3294 |
-
msgstr "Jeu"
|
| 3295 |
-
|
| 3296 |
-
#: views/newsletters.html:204
|
| 3297 |
-
msgid "Fri"
|
| 3298 |
-
msgstr "Ven"
|
| 3299 |
-
|
| 3300 |
-
#: views/newsletters.html:205
|
| 3301 |
-
msgid "Sat"
|
| 3302 |
-
msgstr "Sam"
|
| 3303 |
-
|
| 3304 |
-
#: views/newsletters.html:214
|
| 3305 |
-
msgid "Previous"
|
| 3306 |
-
msgstr "Précedent"
|
| 3307 |
-
|
| 3308 |
-
#: views/newsletters.html:215
|
| 3309 |
-
msgid "The newsletter is being sent..."
|
| 3310 |
-
msgstr "La newsletter est en cours d’envoi…"
|
| 3311 |
-
|
| 3312 |
-
#: views/newsletters.html:216
|
| 3313 |
-
msgid "The newsletter has been scheduled."
|
| 3314 |
-
msgstr "La newsletter a bien été planifiée."
|
| 3315 |
-
|
| 3316 |
-
#: views/newsletters.html:217
|
| 3317 |
-
msgid "Your Welcome Email is now activated!"
|
| 3318 |
-
msgstr "Votre e-mail de bienvenue est maintenant activé !"
|
| 3319 |
-
|
| 3320 |
-
#: views/newsletters.html:218
|
| 3321 |
-
msgid "Your Welcome Email could not be activated, please check the settings."
|
| 3322 |
-
msgstr "Votre e-mail de bienvenue ne peut pas être activé. Veuillez vérifier vos réglages."
|
| 3323 |
-
|
| 3324 |
-
#: views/newsletters.html:219
|
| 3325 |
-
msgid "Your post notification is now active!"
|
| 3326 |
-
msgstr "Votre notification d’article est maintenant activée !"
|
| 3327 |
-
|
| 3328 |
-
#: views/newsletters.html:220
|
| 3329 |
-
msgid "Your Post Notification could not be activated, check the settings."
|
| 3330 |
-
msgstr "Votre notification d’article ne peut pas être activée. Veuillez vérifier vos réglages."
|
| 3331 |
-
|
| 3332 |
-
#: views/newsletters.html:221
|
| 3333 |
-
msgid "This newsletter is sent when someone subscribes to the list: \"%$1s\""
|
| 3334 |
-
msgstr "Cette newsletter est envoyée lorsque quelqu’un s’abonne à la liste : « %$1s »"
|
| 3335 |
-
|
| 3336 |
-
#: views/newsletters.html:222
|
| 3337 |
-
msgid ""
|
| 3338 |
-
"This newsletter is sent when a new WordPress user is added to your site"
|
| 3339 |
-
msgstr "Cette newsletter est envoyée lorsqu’un nouvel utilisateur WordPress est ajouté à votre site"
|
| 3340 |
-
|
| 3341 |
-
#: views/newsletters.html:223
|
| 3342 |
-
msgid ""
|
| 3343 |
-
"This newsletter is sent when a new WordPress user with the role \"%$1s\" is "
|
| 3344 |
-
"added to your site"
|
| 3345 |
-
msgstr "Cette newsletter est envoyée lorsqu’un nouvel utilisateur WordPress avec le rôle « %$1s » est ajouté à votre site"
|
| 3346 |
-
|
| 3347 |
-
#: views/newsletters.html:224
|
| 3348 |
-
msgid "%$1d hour(s) later"
|
| 3349 |
-
msgstr "%$1d heure(s) après"
|
| 3350 |
-
|
| 3351 |
-
#: views/newsletters.html:225
|
| 3352 |
-
msgid "%$1d day(s) later"
|
| 3353 |
-
msgstr "%$1d jour(s) après"
|
| 3354 |
-
|
| 3355 |
-
#: views/newsletters.html:226
|
| 3356 |
-
msgid "%$1d week(s) later"
|
| 3357 |
-
msgstr "%$1d semaine(s) après"
|
| 3358 |
-
|
| 3359 |
-
#: views/newsletters.html:227
|
| 3360 |
-
msgid "Send daily at %$1s"
|
| 3361 |
-
msgstr "Envoyer quotidiennement à %$1s"
|
| 3362 |
-
|
| 3363 |
-
#: views/newsletters.html:228
|
| 3364 |
-
msgid "Send weekly on %$1s at %$2s"
|
| 3365 |
-
msgstr "Envoyer hebdomadairement le %$1s à %$2s"
|
| 3366 |
-
|
| 3367 |
-
#: views/newsletters.html:229
|
| 3368 |
-
msgid "Send monthly on the %$1s at %$2s"
|
| 3369 |
-
msgstr "Envoyer mensuellement le %$1s à %$2s"
|
| 3370 |
-
|
| 3371 |
-
#: views/newsletters.html:230
|
| 3372 |
-
msgid "Send every %$1s %$2s of the month at %$3s"
|
| 3373 |
-
msgstr "Envoyer chaque %$1s %$2s du mois à %$3s"
|
| 3374 |
-
|
| 3375 |
-
#: views/newsletters.html:231
|
| 3376 |
-
msgid "Send immediately"
|
| 3377 |
-
msgstr "Envoyer immédiatement"
|
| 3378 |
-
|
| 3379 |
-
#: views/newsletters.html:232
|
| 3380 |
-
msgid "if there's new content to %$1s."
|
| 3381 |
-
msgstr "s’il y a du nouveau contenu pour %$1s."
|
| 3382 |
-
|
| 3383 |
-
#: views/newsletters.html:233
|
| 3384 |
-
msgid "You need to select a list to send to."
|
| 3385 |
-
msgstr "Vous devez sélectionner une liste à laquelle envoyer."
|
| 3386 |
-
|
| 3387 |
-
#: views/newsletters.html:235
|
| 3388 |
-
msgid "Back to Post notifications"
|
| 3389 |
-
msgstr "Retour aux notifications d’article"
|
| 3390 |
-
|
| 3391 |
-
#: views/newsletters.html:236
|
| 3392 |
-
msgid "Sent on"
|
| 3393 |
-
msgstr "Envoyé le"
|
| 3394 |
-
|
| 3395 |
-
#: views/newsletters.html:237
|
| 3396 |
-
msgid "No subscribers!"
|
| 3397 |
-
msgstr "Aucun abonné !"
|
| 3398 |
-
|
| 3399 |
-
#: views/newsletters.html:239
|
| 3400 |
-
msgid ""
|
| 3401 |
-
"Sending is paused because %$1s prevents MailPoet from delivering emails with"
|
| 3402 |
-
" the following error: %$2s"
|
| 3403 |
-
msgstr "L’envoi est suspendu car %1$s empêche MailPoet d’envoyer les e-mails avec l’erreur suivante : %2$s."
|
| 3404 |
-
|
| 3405 |
-
#: views/newsletters.html:240
|
| 3406 |
-
msgid ""
|
| 3407 |
-
"Sending is paused because the following connection issue prevents MailPoet "
|
| 3408 |
-
"from delivering emails: %$1s"
|
| 3409 |
-
msgstr "L’envoi est suspendu car l’erreur de connexion suivante empêche MailPoet d’envoyer les e-mails : %1$s"
|
| 3410 |
-
|
| 3411 |
-
#: views/newsletters.html:241
|
| 3412 |
-
msgid "Check your [link]sending method settings[/link]."
|
| 3413 |
-
msgstr "Vérifiez vos [link]réglages de méthode d’envoi[/link]."
|
| 3414 |
-
|
| 3415 |
-
#: views/newsletters.html:242
|
| 3416 |
-
msgid "Resume sending"
|
| 3417 |
-
msgstr "Reprendre l’envoi"
|
| 3418 |
-
|
| 3419 |
-
#: views/newsletters.html:243
|
| 3420 |
-
msgid "Sending has been resumed."
|
| 3421 |
-
msgstr "L’envoi a été relancé."
|
| 3422 |
-
|
| 3423 |
-
#: views/segments.html:15
|
| 3424 |
-
msgid "Loading lists..."
|
| 3425 |
-
msgstr "Chargement des listes…"
|
| 3426 |
-
|
| 3427 |
-
#: views/segments.html:16
|
| 3428 |
-
msgid "No lists found"
|
| 3429 |
-
msgstr "Aucune liste trouvée"
|
| 3430 |
-
|
| 3431 |
-
#: views/segments.html:17
|
| 3432 |
-
msgid "All lists on this page are selected."
|
| 3433 |
-
msgstr "Toutes les listes de cette page sont sélectionnées."
|
| 3434 |
-
|
| 3435 |
-
#: views/segments.html:18
|
| 3436 |
-
msgid "All %d lists are selected."
|
| 3437 |
-
msgstr "Toutes les %d listes sont sélectionnées."
|
| 3438 |
-
|
| 3439 |
-
#: views/segments.html:19
|
| 3440 |
-
msgid "Select all lists on all pages"
|
| 3441 |
-
msgstr "Sélectionner toutes les listes de toutes les pages"
|
| 3442 |
-
|
| 3443 |
-
#: views/segments.html:21
|
| 3444 |
-
msgid "%d lists were permanently deleted."
|
| 3445 |
-
msgstr "%$1d listes ont été définitivement supprimées."
|
| 3446 |
-
|
| 3447 |
-
#: views/segments.html:26 views/subscribers/importExport/import/step2.html:143
|
| 3448 |
-
msgid "Description"
|
| 3449 |
-
msgstr "Description"
|
| 3450 |
-
|
| 3451 |
-
#: views/segments.html:27
|
| 3452 |
-
msgid "List successfully updated!"
|
| 3453 |
-
msgstr "La liste a bien été mise à jour !"
|
| 3454 |
-
|
| 3455 |
-
#: views/segments.html:28
|
| 3456 |
-
msgid "List successfully added!"
|
| 3457 |
-
msgstr "La liste a bien été ajoutée !"
|
| 3458 |
-
|
| 3459 |
-
#: views/segments.html:35
|
| 3460 |
-
msgid "1 list was moved to the trash"
|
| 3461 |
-
msgstr "1 liste a été déplacée dans la corbeille"
|
| 3462 |
-
|
| 3463 |
-
#: views/segments.html:36
|
| 3464 |
-
msgid "%$1d lists were moved to the trash"
|
| 3465 |
-
msgstr "%$1d listes ont été déplacées dans la corbeille"
|
| 3466 |
-
|
| 3467 |
-
#: views/segments.html:37
|
| 3468 |
-
msgid "1 list was permanently deleted"
|
| 3469 |
-
msgstr "1 liste a été définitivement supprimée"
|
| 3470 |
-
|
| 3471 |
-
#: views/segments.html:38
|
| 3472 |
-
msgid "%$1d lists were permanently deleted."
|
| 3473 |
-
msgstr "%$1d formulaires ont été définitivement supprimés."
|
| 3474 |
-
|
| 3475 |
-
#: views/segments.html:39
|
| 3476 |
-
msgid "1 list has been restored from the trash"
|
| 3477 |
-
msgstr "1 liste a été restaurée depuis la corbeille"
|
| 3478 |
-
|
| 3479 |
-
#: views/segments.html:40
|
| 3480 |
-
msgid "%$1d lists have been restored from the trash"
|
| 3481 |
-
msgstr "%$1d listes ont été restaurées depuis la corbeille"
|
| 3482 |
-
|
| 3483 |
-
#: views/segments.html:42
|
| 3484 |
-
msgid "List \"%$1s\" has been duplicated"
|
| 3485 |
-
msgstr "La liste « %$1s » a été dupliquée"
|
| 3486 |
-
|
| 3487 |
-
#: views/segments.html:44
|
| 3488 |
-
msgid "Force Sync"
|
| 3489 |
-
msgstr "Forcer la synchro"
|
| 3490 |
-
|
| 3491 |
-
#: views/segments.html:45
|
| 3492 |
-
msgid "Read More"
|
| 3493 |
-
msgstr "En savoir plus"
|
| 3494 |
-
|
| 3495 |
-
#: views/segments.html:46
|
| 3496 |
-
msgid "List \"%$1s\" has been synchronized."
|
| 3497 |
-
msgstr "La liste « %$1s » a été synchronisée."
|
| 3498 |
-
|
| 3499 |
-
#: views/segments.html:47
|
| 3500 |
-
msgid "View Subscribers"
|
| 3501 |
-
msgstr "Voir les abonnés"
|
| 3502 |
-
|
| 3503 |
-
#: views/segments.html:55
|
| 3504 |
-
msgid "Delete permanently"
|
| 3505 |
-
msgstr "Supprimer définitivement"
|
| 3506 |
-
|
| 3507 |
-
#: views/segments.html:66
|
| 3508 |
-
msgid ""
|
| 3509 |
-
"This text box is for your own use and is never shown to your subscribers."
|
| 3510 |
-
msgstr "Cette boîte de texte est pour votre usage personnel et ne sera jamais affichée à vos abonnés."
|
| 3511 |
-
|
| 3512 |
-
#: views/settings/advanced.html:7
|
| 3513 |
-
msgid "Bounce email address"
|
| 3514 |
-
msgstr "Adresse e-mail de rebond"
|
| 3515 |
-
|
| 3516 |
-
#: views/settings/advanced.html:10
|
| 3517 |
-
msgid "Your bounced emails will be sent to this address."
|
| 3518 |
-
msgstr "Vos e-mails de rebond seront envoyés à cette adresse."
|
| 3519 |
-
|
| 3520 |
-
#: views/settings/advanced.html:28
|
| 3521 |
-
msgid "Newsletter task scheduler (cron)"
|
| 3522 |
-
msgstr "Planificateur de tâche de newsletter (cron)"
|
| 3523 |
-
|
| 3524 |
-
#: views/settings/advanced.html:31
|
| 3525 |
-
msgid "Select what will activate your newsletter queue."
|
| 3526 |
-
msgstr "Sélectionner ce qui activera la file d’attente de votre newsletter."
|
| 3527 |
-
|
| 3528 |
-
#: views/settings/advanced.html:34 views/settings/advanced.html:117
|
| 3529 |
-
#: views/settings/mta.html:127
|
| 3530 |
-
msgid "Read more."
|
| 3531 |
-
msgstr "Lire la suite."
|
| 3532 |
-
|
| 3533 |
-
#: views/settings/advanced.html:47
|
| 3534 |
-
msgid "Visitors to your website (recommended)"
|
| 3535 |
-
msgstr "Visiteurs de votre site (recommandé)"
|
| 3536 |
-
|
| 3537 |
-
#: views/settings/advanced.html:59
|
| 3538 |
-
msgid "MailPoet's own script. Doesn't work with [link]these hosts[/link]."
|
| 3539 |
-
msgstr "Script propriétaire de MailPoet. Ne fonctionne pas avec [link]ces hébergeurs[/link]."
|
| 3540 |
-
|
| 3541 |
-
#: views/settings/advanced.html:74
|
| 3542 |
-
msgid "Open and click tracking"
|
| 3543 |
-
msgstr "Suivi d’ouverture et de clic"
|
| 3544 |
-
|
| 3545 |
-
#: views/settings/advanced.html:77
|
| 3546 |
-
msgid "Enable or disable open and click tracking."
|
| 3547 |
-
msgstr "Activer ou désactiver le suivi d’ouverture et de clic."
|
| 3548 |
-
|
| 3549 |
-
#: views/settings/advanced.html:110
|
| 3550 |
-
msgid "Share anonymous data"
|
| 3551 |
-
msgstr "Partage de données anonymes"
|
| 3552 |
-
|
| 3553 |
-
#: views/settings/advanced.html:113
|
| 3554 |
-
msgid ""
|
| 3555 |
-
"Share anonymous data and help us improve the plugin. We appreciate your "
|
| 3556 |
-
"help!"
|
| 3557 |
-
msgstr "Partagez anonymement vos données et aidez-nous à améliorer l’extension. Nous apprécions votre aide !"
|
| 3558 |
-
|
| 3559 |
-
#: views/settings/advanced.html:149
|
| 3560 |
-
msgid "Reinstall from scratch"
|
| 3561 |
-
msgstr "Réinstallation complète"
|
| 3562 |
-
|
| 3563 |
-
#: views/settings/advanced.html:151
|
| 3564 |
-
msgid ""
|
| 3565 |
-
"Want to start from the beginning? This will completely delete MailPoet and "
|
| 3566 |
-
"reinstall it from scratch. Remember: you will lose all of your data!"
|
| 3567 |
-
msgstr "Vous voulez repartir de zéro ? Ceci supprimera et réinstallera totalement MailPoet. Rappel : Toutes vos données seront perdues !"
|
| 3568 |
-
|
| 3569 |
-
#: views/settings/advanced.html:159
|
| 3570 |
-
msgid "Reinstall now..."
|
| 3571 |
-
msgstr "Réinstaller maintenant..."
|
| 3572 |
-
|
| 3573 |
-
#: views/settings/advanced.html:171
|
| 3574 |
-
msgid ""
|
| 3575 |
-
"Are you sure? All of your MailPoet data will be permanently erased "
|
| 3576 |
-
"(newsletters, statistics, subscribers, etc.)"
|
| 3577 |
-
msgstr "Confirmez-vous ? Toutes vos données de MailPoet seront définitivement effacées (newsletters, statistiques, abonnés, etc.)."
|
| 3578 |
-
|
| 3579 |
-
#: views/settings/basics.html:6
|
| 3580 |
-
msgid "Default sender"
|
| 3581 |
-
msgstr "Expéditeur par défaut"
|
| 3582 |
-
|
| 3583 |
-
#: views/settings/basics.html:9
|
| 3584 |
-
msgid "These email addresses will be selected by default for each new email."
|
| 3585 |
-
msgstr "Ces adresses e-mails seront sélectionnées par défaut pour chaque nouvel e-mail."
|
| 3586 |
-
|
| 3587 |
-
#: views/settings/basics.html:15 views/settings/signup.html:59
|
| 3588 |
-
msgid "From"
|
| 3589 |
-
msgstr "De "
|
| 3590 |
-
|
| 3591 |
-
#: views/settings/basics.html:20 views/settings/basics.html:34
|
| 3592 |
-
#: views/settings/signup.html:69 views/settings/signup.html:95
|
| 3593 |
-
msgid "Your name"
|
| 3594 |
-
msgstr "Votre nom"
|
| 3595 |
-
|
| 3596 |
-
#: views/settings/basics.html:47
|
| 3597 |
-
msgid "Email notifications"
|
| 3598 |
-
msgstr "Notifications par e-mail"
|
| 3599 |
-
|
| 3600 |
-
#: views/settings/basics.html:50
|
| 3601 |
-
msgid ""
|
| 3602 |
-
"These email addresses will receive notifications (separate each address with"
|
| 3603 |
-
" a comma)"
|
| 3604 |
-
msgstr "Ces adresses e-mails recevront les notifications (séparez chaque adresse par une virgule)."
|
| 3605 |
-
|
| 3606 |
-
#: views/settings/basics.html:68
|
| 3607 |
-
msgid "When someone subscribes"
|
| 3608 |
-
msgstr "Lorsque quelqu’un s’abonne"
|
| 3609 |
-
|
| 3610 |
-
#: views/settings/basics.html:78
|
| 3611 |
-
msgid "When someone unsubscribes"
|
| 3612 |
-
msgstr "Lorsque quelqu’un se désabonne"
|
| 3613 |
-
|
| 3614 |
-
#: views/settings/basics.html:88
|
| 3615 |
-
msgid "Subscribe in comments"
|
| 3616 |
-
msgstr "Inscription dans les commentaires"
|
| 3617 |
-
|
| 3618 |
-
#: views/settings/basics.html:91
|
| 3619 |
-
msgid ""
|
| 3620 |
-
"Visitors that comment on a post can subscribe to your list via a checkbox."
|
| 3621 |
-
msgstr "Les visiteurs qui commentent un article peuvent s’abonner à une liste via une case à cocher."
|
| 3622 |
-
|
| 3623 |
-
#: views/settings/basics.html:115 views/settings/basics.html:179
|
| 3624 |
-
msgid "Yes, add me to your mailing list"
|
| 3625 |
-
msgstr "Oui, ajoutez-moi à votre liste de diffusion."
|
| 3626 |
-
|
| 3627 |
-
#: views/settings/basics.html:120 views/settings/basics.html:184
|
| 3628 |
-
msgid "Users will be subscribed to these lists:"
|
| 3629 |
-
msgstr "Les utilisateurs seront abonnés à ces listes :"
|
| 3630 |
-
|
| 3631 |
-
#: views/settings/basics.html:126 views/settings/basics.html:190
|
| 3632 |
-
msgid "Choose a list"
|
| 3633 |
-
msgstr "Choisir une liste"
|
| 3634 |
-
|
| 3635 |
-
#: views/settings/basics.html:148
|
| 3636 |
-
msgid "Subscribe in registration form"
|
| 3637 |
-
msgstr "Abonnement dans le formulaire d’inscription"
|
| 3638 |
-
|
| 3639 |
-
#: views/settings/basics.html:151
|
| 3640 |
-
msgid ""
|
| 3641 |
-
"Allow users who register as a WordPress user on your website to subscribe to"
|
| 3642 |
-
" a MailPoet list (in addition to the \"WordPress Users\" list.)"
|
| 3643 |
-
msgstr "Autoriser les utilisateurs enregistrés sur votre site en tant qu’utilisateur à s’abonner à une liste MailPoet (en plus de la liste des « Utilisateurs WordPress »)."
|
| 3644 |
-
|
| 3645 |
-
#: views/settings/basics.html:206
|
| 3646 |
-
msgid "Registration is disabled on this site."
|
| 3647 |
-
msgstr "Les inscriptions sont désactivées sur ce site."
|
| 3648 |
-
|
| 3649 |
-
#: views/settings/basics.html:215
|
| 3650 |
-
msgid "Manage Subscription page"
|
| 3651 |
-
msgstr "Page de gestion d’abonnement"
|
| 3652 |
-
|
| 3653 |
-
#: views/settings/basics.html:218
|
| 3654 |
-
msgid ""
|
| 3655 |
-
"When your subscribers click the \"Manage your subscription\" link, they will"
|
| 3656 |
-
" be directed to this page."
|
| 3657 |
-
msgstr "Lorsque vos abonnés cliquent sur le lien « Gérer votre abonnement », ils seront redirigés vers cette page."
|
| 3658 |
-
|
| 3659 |
-
#: views/settings/basics.html:241 views/settings/basics.html:298
|
| 3660 |
-
#: views/settings/signup.html:176
|
| 3661 |
-
msgid "Preview page"
|
| 3662 |
-
msgstr "Prévisualiser la page"
|
| 3663 |
-
|
| 3664 |
-
#: views/settings/basics.html:245
|
| 3665 |
-
msgid "Subscribers can choose from these lists:"
|
| 3666 |
-
msgstr "Les abonnés peuvent choisir parmi ces listes :"
|
| 3667 |
-
|
| 3668 |
-
#: views/settings/basics.html:251 views/settings/basics.html:329
|
| 3669 |
-
#: views/settings/basics.html:365
|
| 3670 |
-
msgid "Leave this field empty to display all lists"
|
| 3671 |
-
msgstr "Laissez ce champ vide pour afficher toutes les listes"
|
| 3672 |
-
|
| 3673 |
-
#: views/settings/basics.html:270
|
| 3674 |
-
msgid "Unsubscribe page"
|
| 3675 |
-
msgstr "Page de désabonnement"
|
| 3676 |
-
|
| 3677 |
-
#: views/settings/basics.html:273
|
| 3678 |
-
msgid ""
|
| 3679 |
-
"When your subscribers click the \"Unsubscribe\" link, they will be directed "
|
| 3680 |
-
"to this page."
|
| 3681 |
-
msgstr "Lorsque vos abonnés cliquent sur le lien « Se désabonner », ils seront redirigés vers cette page."
|
| 3682 |
-
|
| 3683 |
-
#: views/settings/basics.html:275
|
| 3684 |
-
msgid ""
|
| 3685 |
-
"If you want to use a custom Unsubscribe page, simply paste this shortcode on"
|
| 3686 |
-
" to a WordPress page: [mailpoet_manage text=\"Manage your subscription\"]"
|
| 3687 |
-
msgstr "Si vous voulez utiliser une page de désabonnement personnalisée, collez simplement ce code court dans la page : [mailpoet_manage_text=\"Gérer votre abonnement\"]"
|
| 3688 |
-
|
| 3689 |
-
#: views/settings/basics.html:307
|
| 3690 |
-
msgid "Archive page shortcode"
|
| 3691 |
-
msgstr "Code court de la page d’archive"
|
| 3692 |
-
|
| 3693 |
-
#: views/settings/basics.html:310
|
| 3694 |
-
msgid "Paste this shortcode on a page to display a list of past newsletters."
|
| 3695 |
-
msgstr "Collez ce code court dans une page pour afficher une liste des newsletters précédentes."
|
| 3696 |
-
|
| 3697 |
-
#: views/settings/basics.html:343
|
| 3698 |
-
msgid "Shortcode to display total number of subscribers"
|
| 3699 |
-
msgstr "Code court pour afficher le nombre total d’abonnés"
|
| 3700 |
-
|
| 3701 |
-
#: views/settings/basics.html:346
|
| 3702 |
-
msgid ""
|
| 3703 |
-
"Paste this shortcode on a post or page to display the total number of "
|
| 3704 |
-
"confirmed subscribers."
|
| 3705 |
-
msgstr "Collez ce code court dans une page ou un article pour afficher le nombre total des abonnés confirmés."
|
| 3706 |
-
|
| 3707 |
-
#: views/settings/bounce.html:1
|
| 3708 |
-
msgid "How Does This Work?"
|
| 3709 |
-
msgstr "Comment cela fonctionne-t-il ?"
|
| 3710 |
-
|
| 3711 |
-
#: views/settings/bounce.html:4
|
| 3712 |
-
msgid "Create an email account dedicated solely to handling bounced emails."
|
| 3713 |
-
msgstr "Créez un compte e-mail dédié uniquement à la gestion des e-mails de rebond."
|
| 3714 |
-
|
| 3715 |
-
#: views/settings/bounce.html:7
|
| 3716 |
-
msgid "Fill out the form below so that we can connect to it."
|
| 3717 |
-
msgstr "Remplissez le formulaire ci-dessous pour que nous puissions nous y connecter."
|
| 3718 |
-
|
| 3719 |
-
#: views/settings/bounce.html:10
|
| 3720 |
-
msgid "Sit back, relax, and let the plugin do the rest."
|
| 3721 |
-
msgstr "Installez-vous confortablement, soufflez et laissez l’extension s’occuper du reste."
|
| 3722 |
-
|
| 3723 |
-
#: views/settings/bounce.html:16
|
| 3724 |
-
msgid "Need help? Check out %1$sour guide%2$s on how to fill out this form."
|
| 3725 |
-
msgstr "Besoin d’aide ? Lisez %1$snotre guide%2$s sur la façon de remplir ce formulaire."
|
| 3726 |
-
|
| 3727 |
-
#: views/settings/bounce.html:32
|
| 3728 |
-
msgid "Hostname"
|
| 3729 |
-
msgstr "Nom d’hôte"
|
| 3730 |
-
|
| 3731 |
-
#: views/settings/bounce.html:50 views/settings/mta.html:515
|
| 3732 |
-
msgid "Login"
|
| 3733 |
-
msgstr "Identifiant"
|
| 3734 |
-
|
| 3735 |
-
#: views/settings/bounce.html:67 views/settings/mta.html:532
|
| 3736 |
-
msgid "Password"
|
| 3737 |
-
msgstr "Mot de passe"
|
| 3738 |
-
|
| 3739 |
-
#: views/settings/bounce.html:84
|
| 3740 |
-
msgid "Connection method"
|
| 3741 |
-
msgstr "Méthode de connexion"
|
| 3742 |
-
|
| 3743 |
-
#: views/settings/bounce.html:110
|
| 3744 |
-
msgid "POP3 without IMAP extension"
|
| 3745 |
-
msgstr "POP3 sans extension IMAP"
|
| 3746 |
-
|
| 3747 |
-
#: views/settings/bounce.html:125
|
| 3748 |
-
msgid "Port"
|
| 3749 |
-
msgstr "Port"
|
| 3750 |
-
|
| 3751 |
-
#: views/settings/bounce.html:143
|
| 3752 |
-
msgid "Secure connection"
|
| 3753 |
-
msgstr "Connexion sécurisée"
|
| 3754 |
-
|
| 3755 |
-
#: views/settings/bounce.html:167
|
| 3756 |
-
msgid "Self-signed certificate"
|
| 3757 |
-
msgstr "Certificat auto-signé"
|
| 3758 |
-
|
| 3759 |
-
#: views/settings/bounce.html:198
|
| 3760 |
-
msgid "Activate bounce and check every..."
|
| 3761 |
-
msgstr "Activez et vérifiez comme vous voulez : "
|
| 3762 |
-
|
| 3763 |
-
#: views/settings/bounce.html:222
|
| 3764 |
-
msgid "15 minutes"
|
| 3765 |
-
msgstr "15 minutes"
|
| 3766 |
-
|
| 3767 |
-
#: views/settings/bounce.html:228
|
| 3768 |
-
msgid "30 minutes"
|
| 3769 |
-
msgstr "30 minutes"
|
| 3770 |
-
|
| 3771 |
-
#: views/settings/bounce.html:234
|
| 3772 |
-
msgid "1 hour"
|
| 3773 |
-
msgstr "1 heure"
|
| 3774 |
-
|
| 3775 |
-
#: views/settings/bounce.html:240
|
| 3776 |
-
msgid "2 hours"
|
| 3777 |
-
msgstr "2 heures"
|
| 3778 |
-
|
| 3779 |
-
#: views/settings/bounce.html:246
|
| 3780 |
-
msgid "Twice daily"
|
| 3781 |
-
msgstr "Deux fois par jour"
|
| 3782 |
-
|
| 3783 |
-
#: views/settings/bounce.html:266
|
| 3784 |
-
msgid "Is it working? Try to connect"
|
| 3785 |
-
msgstr "Cela fonctionne ? Essayez de vous connecter"
|
| 3786 |
-
|
| 3787 |
-
#: views/settings/mta.html:61
|
| 3788 |
-
msgid "You're now sending with MailPoet!"
|
| 3789 |
-
msgstr "Vous effectuez maintenant vos envois avec MailPoet !"
|
| 3790 |
-
|
| 3791 |
-
#: views/settings/mta.html:63
|
| 3792 |
-
msgid ""
|
| 3793 |
-
"Great, you're all set up. Your emails will now be sent quickly and reliably!"
|
| 3794 |
-
msgstr "Bravo, la configuration est terminée. Vos e-mails vont maintenant être envoyés rapidement et de manière fiable !"
|
| 3795 |
-
|
| 3796 |
-
#: views/settings/mta.html:70
|
| 3797 |
-
msgid "Solve all of your sending problems!"
|
| 3798 |
-
msgstr "Réglez tous vos problèmes d’envoi !"
|
| 3799 |
-
|
| 3800 |
-
#: views/settings/mta.html:72
|
| 3801 |
-
msgid ""
|
| 3802 |
-
"We offer affordable email packages with speeds up to 50 times faster than "
|
| 3803 |
-
"the competition."
|
| 3804 |
-
msgstr "Nous offrons des forfaits e-mail abordables allant jusqu'à 50 fois plus vite que la concurrence."
|
| 3805 |
-
|
| 3806 |
-
#: views/settings/mta.html:79
|
| 3807 |
-
msgid "View Email Plans"
|
| 3808 |
-
msgstr "Voir les formules d’e-mail"
|
| 3809 |
-
|
| 3810 |
-
#: views/settings/mta.html:83 views/settings/mta.html:105
|
| 3811 |
-
#: views/settings/mta.html:131
|
| 3812 |
-
msgid "Activated"
|
| 3813 |
-
msgstr "Activé"
|
| 3814 |
-
|
| 3815 |
-
#: views/settings/mta.html:89 views/settings/mta.html:111
|
| 3816 |
-
#: views/settings/mta.html:137
|
| 3817 |
-
msgid "Configure"
|
| 3818 |
-
msgstr "Configurer"
|
| 3819 |
-
|
| 3820 |
-
#: views/settings/mta.html:96
|
| 3821 |
-
msgid "Your web host / web server"
|
| 3822 |
-
msgstr "Votre hébergeur/serveur web"
|
| 3823 |
-
|
| 3824 |
-
#: views/settings/mta.html:99
|
| 3825 |
-
msgid "Free, but not recommended"
|
| 3826 |
-
msgstr "Gratuit, mais non recommandé"
|
| 3827 |
-
|
| 3828 |
-
#: views/settings/mta.html:101
|
| 3829 |
-
msgid ""
|
| 3830 |
-
"Web hosts generally have a bad reputation as a sender. Your newsletter will "
|
| 3831 |
-
"probably be considered spam."
|
| 3832 |
-
msgstr "Les hébergeurs ont souvent une mauvaise réputation d’expéditeur. Votre newsletter sera probablement considérée comme un indésirable."
|
| 3833 |
-
|
| 3834 |
-
#: views/settings/mta.html:118
|
| 3835 |
-
msgid "Third-party"
|
| 3836 |
-
msgstr "Tiers"
|
| 3837 |
-
|
| 3838 |
-
#: views/settings/mta.html:121
|
| 3839 |
-
msgid "For SMTP, SendGrid or Amazon SES"
|
| 3840 |
-
msgstr "Pour SMTP, SendGrid ou Amazon SES"
|
| 3841 |
-
|
| 3842 |
-
#: views/settings/mta.html:123
|
| 3843 |
-
msgid ""
|
| 3844 |
-
"We only recommend using a third-party service if you are a technical user. "
|
| 3845 |
-
"Tread carefully."
|
| 3846 |
-
msgstr "Nous recommandons l’utilisation de services tiers uniquement aux techniciens. À utiliser avec prudence."
|
| 3847 |
-
|
| 3848 |
-
#: views/settings/mta.html:149
|
| 3849 |
-
msgid "Already have a key?"
|
| 3850 |
-
msgstr "Vous avez déjà votre clé ?"
|
| 3851 |
-
|
| 3852 |
-
#: views/settings/mta.html:155
|
| 3853 |
-
msgid "Your key"
|
| 3854 |
-
msgstr "Votre clé"
|
| 3855 |
-
|
| 3856 |
-
#: views/settings/mta.html:169
|
| 3857 |
-
#: views/subscribers/importExport/import/step1.html:84
|
| 3858 |
-
msgid "Verify"
|
| 3859 |
-
msgstr "Vérifier"
|
| 3860 |
-
|
| 3861 |
-
#: views/settings/mta.html:186 views/settings/mta.html:319
|
| 3862 |
-
msgid "Sending frequency"
|
| 3863 |
-
msgstr "Fréquence d’envoi"
|
| 3864 |
-
|
| 3865 |
-
#: views/settings/mta.html:197
|
| 3866 |
-
msgid "Safe default values"
|
| 3867 |
-
msgstr "Valeur sure par défaut"
|
| 3868 |
-
|
| 3869 |
-
#: views/settings/mta.html:205
|
| 3870 |
-
msgid "I'll set my own frequency"
|
| 3871 |
-
msgstr "Je règlerai ma propre fréquence"
|
| 3872 |
-
|
| 3873 |
-
#: views/settings/mta.html:210
|
| 3874 |
-
msgid "Input your host's recommended sending frequency"
|
| 3875 |
-
msgstr "Sélectionner la fréquence recommandée par votre hébergeur."
|
| 3876 |
-
|
| 3877 |
-
#: views/settings/mta.html:243 views/settings/mta.html:336
|
| 3878 |
-
msgid "emails"
|
| 3879 |
-
msgstr "e-mails"
|
| 3880 |
-
|
| 3881 |
-
#: views/settings/mta.html:260 views/settings/mta.html:353
|
| 3882 |
-
msgid "recommended"
|
| 3883 |
-
msgstr "recommandé"
|
| 3884 |
-
|
| 3885 |
-
#: views/settings/mta.html:269
|
| 3886 |
-
msgid ""
|
| 3887 |
-
"<strong>Warning!</strong> Sending more than the recommended amount of "
|
| 3888 |
-
"emails? You may break the terms of your web host or provider!"
|
| 3889 |
-
msgstr "<strong>Avertissement !</strong> Vous envoyez plus d’e-mails que le nombre recommandé ? Vous pourriez rompre les termes de votre contrat avec votre hébergeur ou fournisseur !"
|
| 3890 |
-
|
| 3891 |
-
#: views/settings/mta.html:271
|
| 3892 |
-
msgid ""
|
| 3893 |
-
"Please ask your host for the maximum number of emails you are allowed to "
|
| 3894 |
-
"send per day."
|
| 3895 |
-
msgstr "Veuillez demander à votre hébergeur le nombre maximum d’e-mails que vous êtes autorisé à envoyer par jour."
|
| 3896 |
-
|
| 3897 |
-
#: views/settings/mta.html:287
|
| 3898 |
-
msgid "Provider"
|
| 3899 |
-
msgstr "Fournisseur"
|
| 3900 |
-
|
| 3901 |
-
#: views/settings/mta.html:297
|
| 3902 |
-
msgid "Custom SMTP"
|
| 3903 |
-
msgstr "SMTP personnalisé"
|
| 3904 |
-
|
| 3905 |
-
#: views/settings/mta.html:300
|
| 3906 |
-
msgid "Select your provider"
|
| 3907 |
-
msgstr "Sélectionnez votre fournisseur"
|
| 3908 |
-
|
| 3909 |
-
#: views/settings/mta.html:366
|
| 3910 |
-
msgid "SMTP Hostname"
|
| 3911 |
-
msgstr "Nom d’hôte SMTP"
|
| 3912 |
-
|
| 3913 |
-
#: views/settings/mta.html:369 views/settings/mta.html:480
|
| 3914 |
-
msgid "e.g.: smtp.mydomain.com"
|
| 3915 |
-
msgstr "p.ex. : smtp.mondomaine.com"
|
| 3916 |
-
|
| 3917 |
-
#: views/settings/mta.html:385
|
| 3918 |
-
msgid "SMTP Port"
|
| 3919 |
-
msgstr "Port SMTP"
|
| 3920 |
-
|
| 3921 |
-
#: views/settings/mta.html:406
|
| 3922 |
-
msgid "Region"
|
| 3923 |
-
msgstr "Région"
|
| 3924 |
-
|
| 3925 |
-
#: views/settings/mta.html:435
|
| 3926 |
-
msgid "Access Key"
|
| 3927 |
-
msgstr "Clé d’accès"
|
| 3928 |
-
|
| 3929 |
-
#: views/settings/mta.html:456
|
| 3930 |
-
msgid "Secret Key"
|
| 3931 |
-
msgstr "Clé secrète"
|
| 3932 |
-
|
| 3933 |
-
#: views/settings/mta.html:477
|
| 3934 |
-
msgid "Domain"
|
| 3935 |
-
msgstr "Domaine"
|
| 3936 |
-
|
| 3937 |
-
#: views/settings/mta.html:497
|
| 3938 |
-
msgid "API Key"
|
| 3939 |
-
msgstr "Clé API"
|
| 3940 |
-
|
| 3941 |
-
#: views/settings/mta.html:549
|
| 3942 |
-
msgid "Secure Connection"
|
| 3943 |
-
msgstr "Connexion sécurisée"
|
| 3944 |
-
|
| 3945 |
-
#: views/settings/mta.html:574
|
| 3946 |
-
msgid "Authentication"
|
| 3947 |
-
msgstr "Authentification"
|
| 3948 |
-
|
| 3949 |
-
#: views/settings/mta.html:577
|
| 3950 |
-
msgid ""
|
| 3951 |
-
"Leave this option set to Yes. Only a tiny portion of SMTP services prefer "
|
| 3952 |
-
"Authentication to be turned off."
|
| 3953 |
-
msgstr "Laissez cette option sur Oui. Seul un petit nombre de services préfère que l’authentification soit désactivée."
|
| 3954 |
-
|
| 3955 |
-
#: views/settings/mta.html:616
|
| 3956 |
-
msgid "SPF Signature (Highly recommended!)"
|
| 3957 |
-
msgstr "Signature SPF (hautement recommandé !)"
|
| 3958 |
-
|
| 3959 |
-
#: views/settings/mta.html:619
|
| 3960 |
-
msgid ""
|
| 3961 |
-
"This improves your delivery rate by verifying that you're allowed to send "
|
| 3962 |
-
"emails from your domain."
|
| 3963 |
-
msgstr "Cela améliore votre taux de délivrabilité en vérifiant que vous êtes autorisé à envoyer des e-mails depuis votre domaine."
|
| 3964 |
-
|
| 3965 |
-
#: views/settings/mta.html:624
|
| 3966 |
-
msgid ""
|
| 3967 |
-
"SPF is set up in your DNS. Read your host's support documentation for more "
|
| 3968 |
-
"information."
|
| 3969 |
-
msgstr "Le protocole SPF est configuré dans votre DNS. Référez-vous à la documentation de votre hébergeur pour plus d’informations."
|
| 3970 |
-
|
| 3971 |
-
#: views/settings/mta.html:632
|
| 3972 |
-
msgid "Test the sending method"
|
| 3973 |
-
msgstr "Test de la méthode d’envoi"
|
| 3974 |
-
|
| 3975 |
-
#: views/settings/mta.html:646
|
| 3976 |
-
msgid "Send a test email"
|
| 3977 |
-
msgstr "Envoyer un e-mail de test"
|
| 3978 |
-
|
| 3979 |
-
#: views/settings/mta.html:662
|
| 3980 |
-
msgid "or Cancel"
|
| 3981 |
-
msgstr "ou annuler"
|
| 3982 |
-
|
| 3983 |
-
#: views/settings/mta.html:707
|
| 3984 |
-
msgid ""
|
| 3985 |
-
"The email could not be sent. Make sure the option \"Email notifications\" "
|
| 3986 |
-
"has a FROM email address in the Basics tab."
|
| 3987 |
-
msgstr "L’e-mail n’a pas pu être envoyé. Assurez vous que l’option « Notifications par e-mail » possède une adresse e-mail DE dans l’onglet Essentiels."
|
| 3988 |
-
|
| 3989 |
-
#: views/settings/mta.html:719
|
| 3990 |
-
msgid "This is a Sending Method Test"
|
| 3991 |
-
msgstr "Ceci est un test de la méthode d’envoi"
|
| 3992 |
-
|
| 3993 |
-
#: views/settings/mta.html:721
|
| 3994 |
-
msgid "Yup, it works! You can start blasting away emails to the moon."
|
| 3995 |
-
msgstr "Parfait, cela fonctionne ! Vous pouvez commencer à envoyer des e-mails vers la Lune."
|
| 3996 |
-
|
| 3997 |
-
#: views/settings/mta.html:734
|
| 3998 |
-
msgid "The email has been sent! Check your inbox."
|
| 3999 |
-
msgstr "L’e-mail a bien été envoyé ! Vérifiez votre boîte de réception."
|
| 4000 |
-
|
| 4001 |
-
#: views/settings/mta.html:755
|
| 4002 |
-
msgid "Please specify an API key before validating it."
|
| 4003 |
-
msgstr "Veuillez spécifier une clé API avant de valider ceci."
|
| 4004 |
-
|
| 4005 |
-
#: views/settings/mta.html:815
|
| 4006 |
-
msgid "You have selected an invalid sending method."
|
| 4007 |
-
msgstr "Vous avez sélectionné une méthode d’envoi non valide."
|
| 4008 |
-
|
| 4009 |
-
#: views/settings/mta.html:823
|
| 4010 |
-
msgid "You need to specify a MailPoet account key."
|
| 4011 |
-
msgstr "Vous devez spécifier une clé de compte MailPoet."
|
| 4012 |
-
|
| 4013 |
-
#: views/settings/signup.html:7
|
| 4014 |
-
msgid "Enable sign-up confirmation"
|
| 4015 |
-
msgstr "Activer la confirmation d’abonnement"
|
| 4016 |
-
|
| 4017 |
-
#: views/settings/signup.html:10
|
| 4018 |
-
msgid ""
|
| 4019 |
-
"If you enable this option, your subscribers will first receive a "
|
| 4020 |
-
"confirmation email after they subscribe. Once they confirm their "
|
| 4021 |
-
"subscription (via this email), they will be marked as 'confirmed' and will "
|
| 4022 |
-
"begin to receive your email newsletters."
|
| 4023 |
-
msgstr "Si vous activez cette option, vos abonnés recevront un e-mail de confirmation après leur inscription. Une fois leur inscription confirmée (depuis cet e-mail), ils seront marqués comme « confirmé » et commenceront à recevoir vos newsletters."
|
| 4024 |
-
|
| 4025 |
-
#: views/settings/signup.html:11
|
| 4026 |
-
msgid "Read more about Double Opt-in confirmation."
|
| 4027 |
-
msgstr "En savoir plus à propos de la double confirmation."
|
| 4028 |
-
|
| 4029 |
-
#: views/settings/signup.html:19
|
| 4030 |
-
msgid ""
|
| 4031 |
-
"Sign-up confirmation is mandatory when using the MailPoet Sending Service."
|
| 4032 |
-
msgstr "La confirmation d’inscription est obligatoire pour l’utilisation du service d’envoi de MailPoet."
|
| 4033 |
-
|
| 4034 |
-
#: views/settings/signup.html:111
|
| 4035 |
-
msgid "Email subject"
|
| 4036 |
-
msgstr "Sujet de l’e-mail"
|
| 4037 |
-
|
| 4038 |
-
#: views/settings/signup.html:130
|
| 4039 |
-
msgid "Email content"
|
| 4040 |
-
msgstr "Contenu de l’e-mail"
|
| 4041 |
-
|
| 4042 |
-
#: views/settings/signup.html:133
|
| 4043 |
-
msgid ""
|
| 4044 |
-
"Don't forget to include:<br /><br />[activation_link]Confirm your "
|
| 4045 |
-
"subscription.[/activation_link].<br /><br />Optional: [lists_to_confirm]."
|
| 4046 |
-
msgstr "N’oubliez pas d’inclure :<br /><br />[activation_link]Confirmer votre abonnement.[/activation_link].<br /><br />Facultatif : [lists_to_confirm]."
|
| 4047 |
-
|
| 4048 |
-
#: views/settings/signup.html:151
|
| 4049 |
-
msgid "Confirmation page"
|
| 4050 |
-
msgstr "Page de confirmation"
|
| 4051 |
-
|
| 4052 |
-
#: views/settings/signup.html:154
|
| 4053 |
-
msgid ""
|
| 4054 |
-
"When subscribers click on the activation link, they will be redirected to "
|
| 4055 |
-
"this page."
|
| 4056 |
-
msgstr "Lorsque les abonnés cliquent sur le lien d’activation, ils seront redirigés vers cette page."
|
| 4057 |
-
|
| 4058 |
-
#: views/settings/signup.html:195
|
| 4059 |
-
msgid ""
|
| 4060 |
-
"Subscribers will need to activate their subscription via email in order to "
|
| 4061 |
-
"receive your newsletters. This is highly recommended!"
|
| 4062 |
-
msgstr "Les abonnés devront activer leur abonnement depuis l’e-mail afin de recevoir vos newsletters. Ceci est fortement recommandée."
|
| 4063 |
-
|
| 4064 |
-
#: views/settings/signup.html:197
|
| 4065 |
-
msgid ""
|
| 4066 |
-
"New subscribers will be automatically confirmed, without having to confirm "
|
| 4067 |
-
"their subscription. This is not recommended!"
|
| 4068 |
-
msgstr "Les nouveaux abonnés seront automatiquement confirmés sans avoir à confirmer leur abonnement. Ceci n’est pas recommandé !"
|
| 4069 |
-
|
| 4070 |
-
#: views/settings/templates/sending_frequency.hbs:4
|
| 4071 |
-
msgid "%1$s emails"
|
| 4072 |
-
msgstr "%1$s e-mails"
|
| 4073 |
-
|
| 4074 |
-
#: views/settings/templates/sending_frequency.hbs:11
|
| 4075 |
-
msgid "That's <strong>%1$s emails</strong> per day"
|
| 4076 |
-
msgstr "Cela correspond à <strong>%1$s e-mails</strong> par jour."
|
| 4077 |
-
|
| 4078 |
-
#: views/settings/templates/sending_frequency.hbs:20
|
| 4079 |
-
msgid ""
|
| 4080 |
-
"That's %1$s emails per second. <strong>We highly recommend to send 1 email "
|
| 4081 |
-
"per second, at the absolute maximum.</strong> MailPoet needs at least one "
|
| 4082 |
-
"second to process and send a single email (on most hosts.) "
|
| 4083 |
-
"<strong>Alternatively, send with MailPoet, which can be up to 50 times "
|
| 4084 |
-
"faster.</strong>"
|
| 4085 |
-
msgstr "C’est %1$s e-mails par seconde. <strong>Nous recommandons fortement d’envoyer un e-mail par seconde au maximum.</strong> MailPoet a besoin d’au moins une seconde pour traiter et envoyer un e-mail (sur la plupart des hébergeurs).<strong> Vous pouvez également envoyer avec MailPoet, ce qui peut être jusqu'à 50 fois plus rapide.</strong>"
|
| 4086 |
-
|
| 4087 |
-
#: views/settings.html:18
|
| 4088 |
-
msgid "Basics"
|
| 4089 |
-
msgstr "Essentiels"
|
| 4090 |
-
|
| 4091 |
-
#: views/settings.html:19
|
| 4092 |
-
msgid "Sign-up Confirmation"
|
| 4093 |
-
msgstr "Confirmation d’abonnement"
|
| 4094 |
-
|
| 4095 |
-
#: views/settings.html:20
|
| 4096 |
-
msgid "Send With..."
|
| 4097 |
-
msgstr "Envoyez avec…"
|
| 4098 |
-
|
| 4099 |
-
#: views/settings.html:21
|
| 4100 |
-
msgid "Advanced"
|
| 4101 |
-
msgstr "Avancés"
|
| 4102 |
-
|
| 4103 |
-
#: views/settings.html:84
|
| 4104 |
-
msgid "Settings saved"
|
| 4105 |
-
msgstr "Réglages enregistrées"
|
| 4106 |
-
|
| 4107 |
-
#: views/subscribers/importExport/export.html:7
|
| 4108 |
-
#: views/subscribers/importExport/import.html:8
|
| 4109 |
-
msgid "Back to Subscribers"
|
| 4110 |
-
msgstr "Retour aux abonnés"
|
| 4111 |
-
|
| 4112 |
-
#: views/subscribers/importExport/export.html:11
|
| 4113 |
-
msgid "Yikes! Couldn't find any subscribers"
|
| 4114 |
-
msgstr "Aïe ! Impossible de trouver un seul abonné"
|
| 4115 |
-
|
| 4116 |
-
#: views/subscribers/importExport/export.html:27
|
| 4117 |
-
msgid "Export confirmed subscribers only"
|
| 4118 |
-
msgstr "Exporter uniquement les abonnés confirmés"
|
| 4119 |
-
|
| 4120 |
-
#: views/subscribers/importExport/export.html:48
|
| 4121 |
-
msgid "Pick a list"
|
| 4122 |
-
msgstr "Sélectionner une liste"
|
| 4123 |
-
|
| 4124 |
-
#: views/subscribers/importExport/export.html:59
|
| 4125 |
-
msgid "List of fields to export"
|
| 4126 |
-
msgstr "Liste des champs à exporter"
|
| 4127 |
-
|
| 4128 |
-
#: views/subscribers/importExport/export.html:69
|
| 4129 |
-
msgid "Group subscribers by list"
|
| 4130 |
-
msgstr "Grouper les abonnés par liste"
|
| 4131 |
-
|
| 4132 |
-
#: views/subscribers/importExport/export.html:78
|
| 4133 |
-
msgid "Format"
|
| 4134 |
-
msgstr "Format"
|
| 4135 |
-
|
| 4136 |
-
#: views/subscribers/importExport/export.html:84
|
| 4137 |
-
msgid "CSV file"
|
| 4138 |
-
msgstr "Fichier CSV"
|
| 4139 |
-
|
| 4140 |
-
#: views/subscribers/importExport/export.html:89
|
| 4141 |
-
msgid "Excel file"
|
| 4142 |
-
msgstr "Fichier Excel"
|
| 4143 |
-
|
| 4144 |
-
#: views/subscribers/importExport/export.html:124
|
| 4145 |
-
#: views/subscribers/importExport/import.html:36
|
| 4146 |
-
msgid "Server error:"
|
| 4147 |
-
msgstr "Erreur serveur :"
|
| 4148 |
-
|
| 4149 |
-
#: views/subscribers/importExport/export.html:125
|
| 4150 |
-
msgid ""
|
| 4151 |
-
"%1$s subscribers were exported. Get the exported file [link]here[/link]."
|
| 4152 |
-
msgstr "%1$s abonnés ont été exportés. Récupérez le fichier d’exportation [link]ici[/link]."
|
| 4153 |
-
|
| 4154 |
-
#: views/subscribers/importExport/import/step1.html:8
|
| 4155 |
-
msgid "How would you like to import subscribers?"
|
| 4156 |
-
msgstr "Comment voulez-vous importer vos abonnés ?"
|
| 4157 |
-
|
| 4158 |
-
#: views/subscribers/importExport/import/step1.html:13
|
| 4159 |
-
msgid "Paste the data into a text box"
|
| 4160 |
-
msgstr "Coller les données dans une boîte de texte"
|
| 4161 |
-
|
| 4162 |
-
#: views/subscribers/importExport/import/step1.html:15
|
| 4163 |
-
#: views/subscribers/importExport/import/step1.html:55
|
| 4164 |
-
msgid "Upload a file"
|
| 4165 |
-
msgstr "Importer un fichier"
|
| 4166 |
-
|
| 4167 |
-
#: views/subscribers/importExport/import/step1.html:17
|
| 4168 |
-
msgid "Import from MailChimp"
|
| 4169 |
-
msgstr "Importer depuis MailChimp"
|
| 4170 |
-
|
| 4171 |
-
#: views/subscribers/importExport/import/step1.html:31
|
| 4172 |
-
msgid "Copy and paste your subscribers from Excel/Spreadsheets"
|
| 4173 |
-
msgstr "Copiez et collez vos abonnés depuis Excel/Feuille de calcul"
|
| 4174 |
-
|
| 4175 |
-
#: views/subscribers/importExport/import/step1.html:79
|
| 4176 |
-
msgid "Enter your MailChimp API key"
|
| 4177 |
-
msgstr "Saisissez votre clé API MailChimp"
|
| 4178 |
-
|
| 4179 |
-
#: views/subscribers/importExport/import/step1.html:91
|
| 4180 |
-
msgid "Select list(s)"
|
| 4181 |
-
msgstr "Sélectionner une ou plusieurs listes"
|
| 4182 |
-
|
| 4183 |
-
#: views/subscribers/importExport/import/step1.html:116
|
| 4184 |
-
msgid "[link]Read more at our Knowledge Base[/link]"
|
| 4185 |
-
msgstr "[link]En savoir plus dans notre base de connaissances[/link]"
|
| 4186 |
-
|
| 4187 |
-
#: views/subscribers/importExport/import/step2.html:36
|
| 4188 |
-
msgid "Pick one or more list(s)"
|
| 4189 |
-
msgstr "Choisissez une ou plusieurs listes"
|
| 4190 |
-
|
| 4191 |
-
#: views/subscribers/importExport/import/step2.html:37
|
| 4192 |
-
msgid "Pick the list that you want to import these subscribers to."
|
| 4193 |
-
msgstr "Choisissez la liste dans laquelle vous voulez importer ces abonnés."
|
| 4194 |
-
|
| 4195 |
-
#: views/subscribers/importExport/import/step2.html:42
|
| 4196 |
-
msgid "Create a new list"
|
| 4197 |
-
msgstr "Créer un nouvelle liste"
|
| 4198 |
-
|
| 4199 |
-
#: views/subscribers/importExport/import/step2.html:48
|
| 4200 |
-
msgid "To add subscribers to a mailing segment, [link]create a list[/link]."
|
| 4201 |
-
msgstr "Pour ajouter des abonnés à un segment de mailing, [link]créez une liste[/link]."
|
| 4202 |
-
|
| 4203 |
-
#: views/subscribers/importExport/import/step2.html:60
|
| 4204 |
-
msgid "Update existing subscribers' information"
|
| 4205 |
-
msgstr "Mettre à jour les informations de cet abonné"
|
| 4206 |
-
|
| 4207 |
-
#: views/subscribers/importExport/import/step2.html:77
|
| 4208 |
-
msgid "Previous step"
|
| 4209 |
-
msgstr "Étape précédente"
|
| 4210 |
-
|
| 4211 |
-
#: views/subscribers/importExport/import/step2.html:80
|
| 4212 |
-
msgid "Next step"
|
| 4213 |
-
msgstr "Étape suivante"
|
| 4214 |
-
|
| 4215 |
-
#: views/subscribers/importExport/import/step2.html:90
|
| 4216 |
-
msgid "Match data"
|
| 4217 |
-
msgstr "Correspondance des champs"
|
| 4218 |
-
|
| 4219 |
-
#: views/subscribers/importExport/import/step3.html:11
|
| 4220 |
-
msgid "Import again"
|
| 4221 |
-
msgstr "Importer à nouveau"
|
| 4222 |
-
|
| 4223 |
-
#: views/subscribers/importExport/import/step3.html:14
|
| 4224 |
-
msgid "View subscribers"
|
| 4225 |
-
msgstr "Afficher les abonnés"
|
| 4226 |
-
|
| 4227 |
-
#: views/subscribers/importExport/import/step3.html:28
|
| 4228 |
-
msgid "No subscribers were added or updated."
|
| 4229 |
-
msgstr "Aucun nouvel abonné n’a été ajouté ou mis à jour."
|
| 4230 |
-
|
| 4231 |
-
#: views/subscribers/importExport/import/step3.html:31
|
| 4232 |
-
msgid "Note: Imported subscribers will not receive any Welcome Emails"
|
| 4233 |
-
msgstr "Note : Les abonnés importés ne recevront aucun e-mail de bienvenue."
|
| 4234 |
-
|
| 4235 |
-
#: views/subscribers/importExport/import.html:1
|
| 4236 |
-
msgid ""
|
| 4237 |
-
"This file needs to be formatted in a CSV style (comma-separated-values.) "
|
| 4238 |
-
"Look at some [link]examples on our support site[/link]."
|
| 4239 |
-
msgstr "Ce fichier doit être au format CSV (séparé par des virgules). Consultez quelques [link]exemples sur notre site de support[/link]."
|
| 4240 |
-
|
| 4241 |
-
#: views/subscribers/importExport/import.html:35
|
| 4242 |
-
msgid "No active lists found"
|
| 4243 |
-
msgstr "Aucune liste active trouvée"
|
| 4244 |
-
|
| 4245 |
-
#: views/subscribers/importExport/import.html:37
|
| 4246 |
-
msgid "Selecto"
|
| 4247 |
-
msgstr "Sélection"
|
| 4248 |
-
|
| 4249 |
-
#: views/subscribers/importExport/import.html:39
|
| 4250 |
-
msgid "Only comma-separated (CSV) file formats are supported."
|
| 4251 |
-
msgstr "Seuls les fichiers au format CSV (séparé par des virgules) sont pris en charge."
|
| 4252 |
-
|
| 4253 |
-
#: views/subscribers/importExport/import.html:40
|
| 4254 |
-
msgid ""
|
| 4255 |
-
"Your CSV is over %s and is too big to process. Please split the file into "
|
| 4256 |
-
"two or more sections."
|
| 4257 |
-
msgstr "Votre fichier CSV dépasse les %s et il est trop volumineux pour être traité correctement. Veuillez le découper en deux, ou plus si nécessaire."
|
| 4258 |
-
|
| 4259 |
-
#: views/subscribers/importExport/import.html:41
|
| 4260 |
-
msgid ""
|
| 4261 |
-
"Your data could not be processed. Please make sure it is in the correct "
|
| 4262 |
-
"format."
|
| 4263 |
-
msgstr "Vos données ne peuvent pas être traitées. Veuillez vous assurer qu’elles sont au bon format."
|
| 4264 |
-
|
| 4265 |
-
#: views/subscribers/importExport/import.html:42
|
| 4266 |
-
msgid ""
|
| 4267 |
-
"No valid records were found. This file needs to be formatted in a CSV style "
|
| 4268 |
-
"(comma-separated.) Look at some [link]examples on our support site.[/link]"
|
| 4269 |
-
msgstr "Aucun enregistrement valide n’a été trouvé. Ce fichier doit être au format CSV (séparé par des virgules). Consultez quelques [link]exemples sur notre site de support[/link]."
|
| 4270 |
-
|
| 4271 |
-
#: views/subscribers/importExport/import.html:43
|
| 4272 |
-
msgid "%1$s records had issues and were skipped."
|
| 4273 |
-
msgstr "%1$s enregistrements avaient des erreurs et ont été ignorés."
|
| 4274 |
-
|
| 4275 |
-
#: views/subscribers/importExport/import.html:44
|
| 4276 |
-
msgid "%1$s emails are not valid: %2$s"
|
| 4277 |
-
msgstr "%1$s e-mails ne sont pas valides : %2$s"
|
| 4278 |
-
|
| 4279 |
-
#: views/subscribers/importExport/import.html:45
|
| 4280 |
-
msgid "%1$s emails appear more than once in your file: %2$s"
|
| 4281 |
-
msgstr "%1$s e-mails apparaissent plus d’une fois dans votre fichier : %2$s."
|
| 4282 |
-
|
| 4283 |
-
#: views/subscribers/importExport/import.html:46
|
| 4284 |
-
msgid "Hide details"
|
| 4285 |
-
msgstr "Masquer les détails"
|
| 4286 |
-
|
| 4287 |
-
#: views/subscribers/importExport/import.html:49
|
| 4288 |
-
#: views/subscribers/importExport/import.html:51
|
| 4289 |
-
msgid "Add new list"
|
| 4290 |
-
msgstr "Ajouter une nouvelle liste"
|
| 4291 |
-
|
| 4292 |
-
#: views/subscribers/importExport/import.html:53
|
| 4293 |
-
msgid "The selected value is already matched to another field."
|
| 4294 |
-
msgstr "La valeur sélectionnée correspond déjà à un autre champ."
|
| 4295 |
-
|
| 4296 |
-
#: views/subscribers/importExport/import.html:54
|
| 4297 |
-
msgid "Confirm that this field corresponds to the selected field."
|
| 4298 |
-
msgstr "Confirmez que ce champ correspond au champ sélectionné."
|
| 4299 |
-
|
| 4300 |
-
#: views/subscribers/importExport/import.html:55
|
| 4301 |
-
msgid ""
|
| 4302 |
-
"One of the fields contains an invalid email. Please fix it before "
|
| 4303 |
-
"continuing."
|
| 4304 |
-
msgstr "Un de ces champs contient un e-mail non valide. Veuillez le corriger avant de continuer."
|
| 4305 |
-
|
| 4306 |
-
#: views/subscribers/importExport/import.html:68
|
| 4307 |
-
msgid ""
|
| 4308 |
-
"Do not match as a 'date field' if most of the rows for that field return the"
|
| 4309 |
-
" same error."
|
| 4310 |
-
msgstr "Ne correspond pas à un « champ de date » si la plupart des lignes de ce champ retournent la même erreur."
|
| 4311 |
-
|
| 4312 |
-
#: views/subscribers/importExport/import.html:69
|
| 4313 |
-
msgid "First row date cannot be empty."
|
| 4314 |
-
msgstr "La première ligne de date ne peut pas être vide."
|
| 4315 |
-
|
| 4316 |
-
#: views/subscribers/importExport/import.html:70
|
| 4317 |
-
msgid "Verify that the date in blue matches the original date."
|
| 4318 |
-
msgstr "Vérifiez que la date en bleu correspond à la date d’origine."
|
| 4319 |
-
|
| 4320 |
-
#: views/subscribers/importExport/import.html:71
|
| 4321 |
-
msgid "PM"
|
| 4322 |
-
msgstr "PM"
|
| 4323 |
-
|
| 4324 |
-
#: views/subscribers/importExport/import.html:72
|
| 4325 |
-
msgid "AM"
|
| 4326 |
-
msgstr "AM"
|
| 4327 |
-
|
| 4328 |
-
#: views/subscribers/importExport/import.html:73
|
| 4329 |
-
msgid "Error matching date"
|
| 4330 |
-
msgstr "Erreur de correspondance de date"
|
| 4331 |
-
|
| 4332 |
-
#: views/subscribers/importExport/import.html:74
|
| 4333 |
-
msgid ""
|
| 4334 |
-
"One of the fields contains an invalid date. Please fix before continuing."
|
| 4335 |
-
msgstr "Un de ces champs contient une date non valide. Veuillez le corriger avant de continuer."
|
| 4336 |
-
|
| 4337 |
-
#: views/subscribers/importExport/import.html:75
|
| 4338 |
-
msgid "Error adding a new list:"
|
| 4339 |
-
msgstr "Erreur d’ajout de la nouvelle liste :"
|
| 4340 |
-
|
| 4341 |
-
#: views/subscribers/importExport/import.html:76
|
| 4342 |
-
msgid ""
|
| 4343 |
-
"One of the fields contains an invalid email. Please fix before continuing."
|
| 4344 |
-
msgstr "Un de ces champs contient un e-mail non valide. Veuillez le corriger avant de continuer."
|
| 4345 |
-
|
| 4346 |
-
#: views/subscribers/importExport/import.html:77
|
| 4347 |
-
msgid "Custom field could not be created"
|
| 4348 |
-
msgstr "Le champ personnalisé n’a pas pu être créé"
|
| 4349 |
-
|
| 4350 |
-
#: views/subscribers/importExport/import.html:78
|
| 4351 |
-
msgid "%1$s subscribers added to %2$s."
|
| 4352 |
-
msgstr "%1$s abonnés ont été ajoutés à %2$s."
|
| 4353 |
-
|
| 4354 |
-
#: views/subscribers/importExport/import.html:79
|
| 4355 |
-
msgid "%1$s existing subscribers were updated and added to %2$s."
|
| 4356 |
-
msgstr "%1$s abonnés existants ont été mis à jour et ajoutés à %2$s."
|
| 4357 |
-
|
| 4358 |
-
#: views/subscribers/subscribers.html:19
|
| 4359 |
-
msgid "Loading subscribers..."
|
| 4360 |
-
msgstr "Chargement des abonnés…"
|
| 4361 |
-
|
| 4362 |
-
#: views/subscribers/subscribers.html:20
|
| 4363 |
-
msgid "No subscribers were found."
|
| 4364 |
-
msgstr "Aucun abonné n’a été trouvé."
|
| 4365 |
-
|
| 4366 |
-
#: views/subscribers/subscribers.html:21
|
| 4367 |
-
msgid "All subscribers on this page are selected."
|
| 4368 |
-
msgstr "Tous les abonnés de cette page sont sélectionnés."
|
| 4369 |
-
|
| 4370 |
-
#: views/subscribers/subscribers.html:22
|
| 4371 |
-
msgid "All %d subscribers are selected."
|
| 4372 |
-
msgstr "Les %1$s abonnés sont sélectionnés."
|
| 4373 |
-
|
| 4374 |
-
#: views/subscribers/subscribers.html:23
|
| 4375 |
-
msgid "Select all subscribers on all pages."
|
| 4376 |
-
msgstr "Sélectionner tous les abonnés de toutes les pages."
|
| 4377 |
-
|
| 4378 |
-
#: views/subscribers/subscribers.html:25
|
| 4379 |
-
msgid "%d subscribers were permanently deleted."
|
| 4380 |
-
msgstr "%d abonnés ont été définitivement supprimés."
|
| 4381 |
-
|
| 4382 |
-
#: views/subscribers/subscribers.html:47
|
| 4383 |
-
msgid "E-mail"
|
| 4384 |
-
msgstr "E-mail"
|
| 4385 |
-
|
| 4386 |
-
#: views/subscribers/subscribers.html:56
|
| 4387 |
-
msgid "Unsubscribed on %$1s"
|
| 4388 |
-
msgstr "Désabonné le %1$s"
|
| 4389 |
-
|
| 4390 |
-
#: views/subscribers/subscribers.html:57
|
| 4391 |
-
msgid "Subscriber was updated successfully!"
|
| 4392 |
-
msgstr "L’abonné a bien été mis à jour !"
|
| 4393 |
-
|
| 4394 |
-
#: views/subscribers/subscribers.html:58
|
| 4395 |
-
msgid "Subscriber was added successfully!"
|
| 4396 |
-
msgstr "L’abonné a bien été ajouté !"
|
| 4397 |
-
|
| 4398 |
-
#: views/subscribers/subscribers.html:63
|
| 4399 |
-
msgid "Subscribed on"
|
| 4400 |
-
msgstr "Abonné le"
|
| 4401 |
-
|
| 4402 |
-
#: views/subscribers/subscribers.html:65
|
| 4403 |
-
msgid "1 subscriber was moved to the trash."
|
| 4404 |
-
msgstr "1 abonné a été déplacé dans la corbeille."
|
| 4405 |
-
|
| 4406 |
-
#: views/subscribers/subscribers.html:66
|
| 4407 |
-
msgid "%$1d subscribers were moved to the trash."
|
| 4408 |
-
msgstr "%$1d abonnés ont été déplacés dans la corbeille."
|
| 4409 |
-
|
| 4410 |
-
#: views/subscribers/subscribers.html:67
|
| 4411 |
-
msgid "1 subscriber was permanently deleted."
|
| 4412 |
-
msgstr "1 abonné a été définitivement supprimé."
|
| 4413 |
-
|
| 4414 |
-
#: views/subscribers/subscribers.html:68
|
| 4415 |
-
msgid "%$1d subscribers were permanently deleted."
|
| 4416 |
-
msgstr "%$1d abonnés ont été définitivement supprimés."
|
| 4417 |
-
|
| 4418 |
-
#: views/subscribers/subscribers.html:69
|
| 4419 |
-
msgid "1 subscriber has been restored from the trash."
|
| 4420 |
-
msgstr "1 abonné a été restauré depuis la corbeille."
|
| 4421 |
-
|
| 4422 |
-
#: views/subscribers/subscribers.html:70
|
| 4423 |
-
msgid "%$1d subscribers have been restored from the trash."
|
| 4424 |
-
msgstr "%$1d abonnés ont été restaurés depuis la corbeille."
|
| 4425 |
-
|
| 4426 |
-
#: views/subscribers/subscribers.html:71
|
| 4427 |
-
msgid "Move to list..."
|
| 4428 |
-
msgstr "Déplacer dans la liste…"
|
| 4429 |
-
|
| 4430 |
-
#: views/subscribers/subscribers.html:72
|
| 4431 |
-
msgid "%$1d subscribers were moved to list <strong>%$2s</strong>"
|
| 4432 |
-
msgstr "%$1d abonnés ont été déplacés dans la liste <strong>%2$s</strong>"
|
| 4433 |
-
|
| 4434 |
-
#: views/subscribers/subscribers.html:73
|
| 4435 |
-
msgid "Add to list..."
|
| 4436 |
-
msgstr "Ajouter à la liste…"
|
| 4437 |
-
|
| 4438 |
-
#: views/subscribers/subscribers.html:74
|
| 4439 |
-
msgid "%$1d subscribers were added to list <strong>%$2s</strong>."
|
| 4440 |
-
msgstr "%$1d abonnés ont été ajoutés à la liste <strong>%$2s</strong>."
|
| 4441 |
-
|
| 4442 |
-
#: views/subscribers/subscribers.html:75
|
| 4443 |
-
msgid "Remove from list..."
|
| 4444 |
-
msgstr "Retirer de la liste…"
|
| 4445 |
-
|
| 4446 |
-
#: views/subscribers/subscribers.html:76
|
| 4447 |
-
msgid "%$1d subscribers were removed from list <strong>%$2s</strong>"
|
| 4448 |
-
msgstr "%$1d abonnés ont été retirés de la liste <strong>%$2s</strong>"
|
| 4449 |
-
|
| 4450 |
-
#: views/subscribers/subscribers.html:77
|
| 4451 |
-
msgid "Remove from all lists"
|
| 4452 |
-
msgstr "Retirer de toutes les listes"
|
| 4453 |
-
|
| 4454 |
-
#: views/subscribers/subscribers.html:78
|
| 4455 |
-
msgid "%$1d subscribers were removed from all lists."
|
| 4456 |
-
msgstr "%$1d abonnés ont été retirés de toutes les listes."
|
| 4457 |
-
|
| 4458 |
-
#: views/subscribers/subscribers.html:79
|
| 4459 |
-
msgid "Resend confirmation email"
|
| 4460 |
-
msgstr "Renvoyer l’e-mail de confirmation"
|
| 4461 |
-
|
| 4462 |
-
#: views/subscribers/subscribers.html:80
|
| 4463 |
-
msgid "%$1d confirmation emails have been sent."
|
| 4464 |
-
msgstr "%$1d e-mails de confirmation ont été envoyés."
|
| 4465 |
-
|
| 4466 |
-
#: views/subscribers/subscribers.html:81
|
| 4467 |
-
msgid "Lists to which the subscriber was subscribed."
|
| 4468 |
-
msgstr "Listes auxquelles l’abonné à été abonné."
|
| 4469 |
-
|
| 4470 |
-
#: views/subscribers/subscribers.html:83
|
| 4471 |
-
msgid ""
|
| 4472 |
-
"This subscriber is a registered WordPress user. [link]Edit his/her "
|
| 4473 |
-
"profile[/link] to change his/her email."
|
| 4474 |
-
msgstr "Cet abonné est un utilisateur WordPress enregistré. [link]Modifiez son profil[/link] pour changer son e-mail."
|
| 4475 |
-
|
| 4476 |
-
#: views/subscribers/subscribers.html:84
|
| 4477 |
-
msgid "Tip:"
|
| 4478 |
-
msgstr "Conseil :"
|
| 4479 |
-
|
| 4480 |
-
#: views/subscribers/subscribers.html:85
|
| 4481 |
-
msgid ""
|
| 4482 |
-
"Need to add new fields, like a telephone number or street address? You can "
|
| 4483 |
-
"add custom fields by editing the subscription form on the Forms page."
|
| 4484 |
-
msgstr "Besoin d’ajouter de nouveaux champs comme un numéro de téléphone ou une adresse postale ? Vous pouvez ajouter des champs personnalisés en modifiant le formulaire d’abonnement sur la page des formulaires."
|
| 4485 |
-
|
| 4486 |
-
#: views/update.html:13 views/welcome.html:22
|
| 4487 |
-
msgid "Welcome to MailPoet"
|
| 4488 |
-
msgstr "Bienvenue dans MailPoet"
|
| 4489 |
-
|
| 4490 |
-
#: views/update.html:15 views/welcome.html:24
|
| 4491 |
-
msgid ""
|
| 4492 |
-
"Thank you for helping us test and improve this new version of MailPoet. "
|
| 4493 |
-
"You're one of our extra-special beta testers. We really appreciate your "
|
| 4494 |
-
"help!"
|
| 4495 |
-
msgstr "Merci de nous aider à tester et améliorer cette nouvelle version de MailPoet. Vous faites partie de notre équipe de bêta testeurs et votre aide est vraiment appréciable !"
|
| 4496 |
-
|
| 4497 |
-
#: views/update.html:21
|
| 4498 |
-
msgid "What's New"
|
| 4499 |
-
msgstr "Quoi de neuf"
|
| 4500 |
-
|
| 4501 |
-
#: views/update.html:25
|
| 4502 |
-
msgid "List of Changes"
|
| 4503 |
-
msgstr "Liste des modifications"
|
| 4504 |
-
|
| 4505 |
-
#: views/update.html:37
|
| 4506 |
-
msgid "See readme.txt for a changelog."
|
| 4507 |
-
msgstr "Consultez le readme.txt pour la liste complète des modifications."
|
| 4508 |
-
|
| 4509 |
-
#: views/update.html:45 views/welcome.html:76
|
| 4510 |
-
msgid "Awesome! Now, take me to MailPoet"
|
| 4511 |
-
msgstr "Parfait ! Maintenant direction MailPoet"
|
| 4512 |
-
|
| 4513 |
-
#: views/update.html:45
|
| 4514 |
-
msgid "View all changes"
|
| 4515 |
-
msgstr "Voir toutes les modifications"
|
| 4516 |
-
|
| 4517 |
-
#: views/welcome.html:26
|
| 4518 |
-
msgid "MailPoet Logo"
|
| 4519 |
-
msgstr "Logo de MailPoet"
|
| 4520 |
-
|
| 4521 |
-
#: views/welcome.html:30
|
| 4522 |
-
msgid "What's new"
|
| 4523 |
-
msgstr "Quoi de neuf"
|
| 4524 |
-
|
| 4525 |
-
#: views/welcome.html:42
|
| 4526 |
-
msgid "Help Us Improve MailPoet"
|
| 4527 |
-
msgstr "Aidez-nous à améliorer MailPoet"
|
| 4528 |
-
|
| 4529 |
-
#: views/welcome.html:44
|
| 4530 |
-
msgid "We Need Your Feedback"
|
| 4531 |
-
msgstr "Donnez-nous votre avis"
|
| 4532 |
-
|
| 4533 |
-
#: views/welcome.html:45
|
| 4534 |
-
msgid ""
|
| 4535 |
-
"As a beta tester, you have a very important job: to tell us what you think "
|
| 4536 |
-
"of this new version. If you love it or absolutely hate it, tell us! Any and "
|
| 4537 |
-
"all feedback is useful."
|
| 4538 |
-
msgstr "En tant que bêta testeur, vous avez un rôle très important : celui de nous dire ce que vous pensez de cette nouvelle version. Si vous l’aimez ou la détestez, exprimez-vous ! Tous vos retours nous sont utiles."
|
| 4539 |
-
|
| 4540 |
-
#: views/welcome.html:46
|
| 4541 |
-
msgid "To get in touch with us, simply click on this blue circle"
|
| 4542 |
-
msgstr "Pour nous contacter, cliquez simplement sur le cercle bleu"
|
| 4543 |
-
|
| 4544 |
-
#: views/welcome.html:46
|
| 4545 |
-
msgid ""
|
| 4546 |
-
"in the bottom right corner of your screen. This button is visible on all "
|
| 4547 |
-
"MailPoet pages on your WordPress dashboard."
|
| 4548 |
-
msgstr "dans le coin inférieur droit de votre écran. Ce bouton est visible sur toutes les pages MailPoet de votre tableau de bord WordPress."
|
| 4549 |
-
|
| 4550 |
-
#: views/welcome.html:49
|
| 4551 |
-
msgid "Share Your Data With Us"
|
| 4552 |
-
msgstr "Partagez vos données"
|
| 4553 |
-
|
| 4554 |
-
#: views/welcome.html:50
|
| 4555 |
-
msgid ""
|
| 4556 |
-
"By sharing your data <i>anonymously</i> with us, you can help us understand "
|
| 4557 |
-
"how people use MailPoet and what sort of features they like and don't like."
|
| 4558 |
-
msgstr "En partageant vos données <i>anonynement</i> avec nous, vous pouvez nous aider à comprendre comment MailPoet est utilisé et les fonctionnalités que nos utilisateurs aiment et n’aiment pas."
|
| 4559 |
-
|
| 4560 |
-
#: views/welcome.html:50
|
| 4561 |
-
msgid "Find out more"
|
| 4562 |
-
msgstr "En savoir plus"
|
| 4563 |
-
|
| 4564 |
-
#: views/welcome.html:55
|
| 4565 |
-
msgid "Yes, I want to help!"
|
| 4566 |
-
msgstr "Oui, je veux vous aider !"
|
| 4567 |
-
|
| 4568 |
-
#: views/welcome.html:64
|
| 4569 |
-
msgid "Subscribe To Our Newsletter"
|
| 4570 |
-
msgstr "Abonnez-vous à notre newsletter"
|
| 4571 |
-
|
| 4572 |
-
#: views/welcome.html:65
|
| 4573 |
-
msgid "About once a month, we send out a pretty cool newsletter ourselves."
|
| 4574 |
-
msgstr "À peu près une fois par mois nous vous enverrons une jolie newsletter."
|
| 4575 |
-
|
| 4576 |
-
#: views/welcome.html:66
|
| 4577 |
-
msgid ""
|
| 4578 |
-
"Sign up to get: Tips and tricks, special offers and important plugin "
|
| 4579 |
-
"updates!"
|
| 4580 |
-
msgstr "Inscrivez-vous pour recevoir : nos conseils, astuces, offres spéciales et les mises à jour importantes !"
|
| 4581 |
-
|
| 4582 |
-
#: lib/Config/Menu.php:76
|
| 4583 |
-
msgctxt "newsletters per page (screen options)"
|
| 4584 |
-
msgid "Number of newsletters per page"
|
| 4585 |
-
msgstr "Nombre de newsletters par page"
|
| 4586 |
-
|
| 4587 |
-
#: lib/Config/Menu.php:98
|
| 4588 |
-
msgctxt "forms per page (screen options)"
|
| 4589 |
-
msgid "Number of forms per page"
|
| 4590 |
-
msgstr "Nombre de formulaires par page"
|
| 4591 |
-
|
| 4592 |
-
#: lib/Config/Menu.php:120
|
| 4593 |
-
msgctxt "subscribers per page (screen options)"
|
| 4594 |
-
msgid "Number of subscribers per page"
|
| 4595 |
-
msgstr "Nombre d’abonnés par page"
|
| 4596 |
-
|
| 4597 |
-
#: lib/Config/Menu.php:143
|
| 4598 |
-
msgctxt "segments per page (screen options)"
|
| 4599 |
-
msgid "Number of segments per page"
|
| 4600 |
-
msgstr "Nombre de segments par page"
|
| 4601 |
-
|
| 4602 |
-
#: views/form/templates/settings/field_form.hbs:37
|
| 4603 |
-
msgctxt "Form input type"
|
| 4604 |
-
msgid "Select"
|
| 4605 |
-
msgstr "Sélectionner"
|
| 4606 |
-
|
| 4607 |
-
#: views/newsletters.html:100 views/subscribers/importExport/export.html:52
|
| 4608 |
-
#: views/subscribers/importExport/export.html:63
|
| 4609 |
-
#: views/subscribers/importExport/import/step1.html:95
|
| 4610 |
-
#: views/subscribers/importExport/import/step2.html:41
|
| 4611 |
-
msgctxt "Verb"
|
| 4612 |
-
msgid "Select"
|
| 4613 |
-
msgstr "Sélection"
|
| 4614 |
-
|
| 4615 |
-
#: views/newsletters.html:206
|
| 4616 |
-
msgctxt "Sunday - one letter abbreviation"
|
| 4617 |
-
msgid "S"
|
| 4618 |
-
msgstr "D"
|
| 4619 |
-
|
| 4620 |
-
#: views/newsletters.html:207
|
| 4621 |
-
msgctxt "Monday - one letter abbreviation"
|
| 4622 |
-
msgid "M"
|
| 4623 |
-
msgstr "L"
|
| 4624 |
-
|
| 4625 |
-
#: views/newsletters.html:208
|
| 4626 |
-
msgctxt "Tuesday - one letter abbreviation"
|
| 4627 |
-
msgid "T"
|
| 4628 |
-
msgstr "M"
|
| 4629 |
-
|
| 4630 |
-
#: views/newsletters.html:209
|
| 4631 |
-
msgctxt "Wednesday - one letter abbreviation"
|
| 4632 |
-
msgid "W"
|
| 4633 |
-
msgstr "M"
|
| 4634 |
-
|
| 4635 |
-
#: views/newsletters.html:210
|
| 4636 |
-
msgctxt "Thursday - one letter abbreviation"
|
| 4637 |
-
msgid "T"
|
| 4638 |
-
msgstr "J"
|
| 4639 |
-
|
| 4640 |
-
#: views/newsletters.html:211
|
| 4641 |
-
msgctxt "Friday - one letter abbreviation"
|
| 4642 |
-
msgid "F"
|
| 4643 |
-
msgstr "V"
|
| 4644 |
-
|
| 4645 |
-
#: views/newsletters.html:212
|
| 4646 |
-
msgctxt "Saturday - one letter abbreviation"
|
| 4647 |
-
msgid "S"
|
| 4648 |
-
msgstr "S"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lang/mailpoet.pot
CHANGED
|
@@ -4,7 +4,7 @@ msgid ""
|
|
| 4 |
msgstr ""
|
| 5 |
"Project-Id-Version: \n"
|
| 6 |
"Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
|
| 7 |
-
"POT-Creation-Date: 2017-
|
| 8 |
"MIME-Version: 1.0\n"
|
| 9 |
"Content-Type: text/plain; charset=utf-8\n"
|
| 10 |
"Content-Transfer-Encoding: 8bit\n"
|
|
@@ -58,7 +58,7 @@ msgstr ""
|
|
| 58 |
|
| 59 |
#: lib/API/Endpoints/Forms.php:64 lib/API/Endpoints/Forms.php:68
|
| 60 |
#: lib/Subscribers/ImportExport/ImportExportFactory.php:32
|
| 61 |
-
#: views/newsletter/editor.html:
|
| 62 |
msgid "Email"
|
| 63 |
msgstr ""
|
| 64 |
|
|
@@ -225,7 +225,7 @@ msgstr ""
|
|
| 225 |
msgid "Newsletter"
|
| 226 |
msgstr ""
|
| 227 |
|
| 228 |
-
#: lib/Config/Menu.php:229
|
| 229 |
msgid "Newsletter Editor"
|
| 230 |
msgstr ""
|
| 231 |
|
|
@@ -601,12 +601,12 @@ msgid ""
|
|
| 601 |
msgstr ""
|
| 602 |
|
| 603 |
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:178
|
| 604 |
-
#: views/newsletter/editor.html:
|
| 605 |
msgid "Author:"
|
| 606 |
msgstr ""
|
| 607 |
|
| 608 |
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:180
|
| 609 |
-
#: views/newsletter/editor.html:
|
| 610 |
msgid "Categories:"
|
| 611 |
msgstr ""
|
| 612 |
|
|
@@ -747,13 +747,13 @@ msgid ""
|
|
| 747 |
msgstr ""
|
| 748 |
|
| 749 |
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:335
|
| 750 |
-
#: views/newsletter/editor.html:
|
| 751 |
msgid "Facebook"
|
| 752 |
msgstr ""
|
| 753 |
|
| 754 |
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:343
|
| 755 |
#: lib/Config/PopulatorData/Templates/TravelEmail.php:85
|
| 756 |
-
#: views/newsletter/editor.html:
|
| 757 |
msgid "Twitter"
|
| 758 |
msgstr ""
|
| 759 |
|
|
@@ -1349,12 +1349,12 @@ msgid "Click here to view media."
|
|
| 1349 |
msgstr ""
|
| 1350 |
|
| 1351 |
#: lib/Newsletter/Shortcodes/Categories/Link.php:32
|
| 1352 |
-
#: views/newsletter/editor.html:
|
| 1353 |
msgid "Unsubscribe"
|
| 1354 |
msgstr ""
|
| 1355 |
|
| 1356 |
#: lib/Newsletter/Shortcodes/Categories/Link.php:53
|
| 1357 |
-
#: views/newsletter/editor.html:
|
| 1358 |
msgid "Manage subscription"
|
| 1359 |
msgstr ""
|
| 1360 |
|
|
@@ -1629,19 +1629,19 @@ msgstr ""
|
|
| 1629 |
msgid "Accidentally unsubscribed?"
|
| 1630 |
msgstr ""
|
| 1631 |
|
| 1632 |
-
#: lib/Twig/Functions.php:83 views/settings/mta.html:
|
| 1633 |
msgid "every minute"
|
| 1634 |
msgstr ""
|
| 1635 |
|
| 1636 |
-
#: lib/Twig/Functions.php:84 views/settings/mta.html:
|
| 1637 |
msgid "every %1$d minutes"
|
| 1638 |
msgstr ""
|
| 1639 |
|
| 1640 |
-
#: lib/Twig/Functions.php:85 views/settings/mta.html:
|
| 1641 |
msgid "every hour"
|
| 1642 |
msgstr ""
|
| 1643 |
|
| 1644 |
-
#: lib/Twig/Functions.php:86 views/settings/mta.html:
|
| 1645 |
msgid "every %1$d hours"
|
| 1646 |
msgstr ""
|
| 1647 |
|
|
@@ -2205,51 +2205,51 @@ msgstr ""
|
|
| 2205 |
msgid "to become a Premium beta tester."
|
| 2206 |
msgstr ""
|
| 2207 |
|
| 2208 |
-
#: views/newsletter/editor.html:
|
| 2209 |
msgid "Select type"
|
| 2210 |
msgstr ""
|
| 2211 |
|
| 2212 |
-
#: views/newsletter/editor.html:
|
| 2213 |
msgid "Template"
|
| 2214 |
msgstr ""
|
| 2215 |
|
| 2216 |
-
#: views/newsletter/editor.html:
|
| 2217 |
msgid "Designer"
|
| 2218 |
msgstr ""
|
| 2219 |
|
| 2220 |
-
#: views/newsletter/editor.html:
|
| 2221 |
msgid "Send"
|
| 2222 |
msgstr ""
|
| 2223 |
|
| 2224 |
-
#: views/newsletter/editor.html:
|
| 2225 |
msgid "Insert/edit link"
|
| 2226 |
msgstr ""
|
| 2227 |
|
| 2228 |
-
#: views/newsletter/editor.html:
|
| 2229 |
msgid "Type"
|
| 2230 |
msgstr ""
|
| 2231 |
|
| 2232 |
-
#: views/newsletter/editor.html:
|
| 2233 |
msgid "Link to a web page"
|
| 2234 |
msgstr ""
|
| 2235 |
|
| 2236 |
-
#: views/newsletter/editor.html:
|
| 2237 |
msgid "Browser version"
|
| 2238 |
msgstr ""
|
| 2239 |
|
| 2240 |
-
#: views/newsletter/editor.html:
|
| 2241 |
msgid "Unsubcribe page"
|
| 2242 |
msgstr ""
|
| 2243 |
|
| 2244 |
-
#: views/newsletter/editor.html:
|
| 2245 |
msgid "Manage your subscription page"
|
| 2246 |
msgstr ""
|
| 2247 |
|
| 2248 |
-
#: views/newsletter/editor.html:
|
| 2249 |
-
#: views/newsletter/editor.html:
|
| 2250 |
-
#: views/newsletter/editor.html:
|
| 2251 |
-
#: views/newsletter/editor.html:
|
| 2252 |
-
#: views/newsletter/editor.html:
|
| 2253 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:237
|
| 2254 |
#: views/newsletter/templates/blocks/button/settings.hbs:14
|
| 2255 |
#: views/newsletter/templates/blocks/image/settings.hbs:4
|
|
@@ -2257,120 +2257,120 @@ msgstr ""
|
|
| 2257 |
msgid "Link"
|
| 2258 |
msgstr ""
|
| 2259 |
|
| 2260 |
-
#: views/newsletter/editor.html:
|
| 2261 |
msgid "Title"
|
| 2262 |
msgstr ""
|
| 2263 |
|
| 2264 |
-
#: views/newsletter/editor.html:
|
| 2265 |
msgid "Open link in a new window/tab"
|
| 2266 |
msgstr ""
|
| 2267 |
|
| 2268 |
-
#: views/newsletter/editor.html:
|
| 2269 |
msgid "Search your content"
|
| 2270 |
msgstr ""
|
| 2271 |
|
| 2272 |
-
#: views/newsletter/editor.html:
|
| 2273 |
msgid "No search term specified. Showing recent items."
|
| 2274 |
msgstr ""
|
| 2275 |
|
| 2276 |
-
#: views/newsletter/editor.html:
|
| 2277 |
msgid "Add Link"
|
| 2278 |
msgstr ""
|
| 2279 |
|
| 2280 |
-
#: views/newsletter/editor.html:
|
| 2281 |
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
|
| 2282 |
#: views/subscribers/importExport/import/step2.html:153
|
| 2283 |
msgid "Cancel"
|
| 2284 |
msgstr ""
|
| 2285 |
|
| 2286 |
-
#: views/newsletter/editor.html:
|
| 2287 |
msgid "Failed to fetch available posts"
|
| 2288 |
msgstr ""
|
| 2289 |
|
| 2290 |
-
#: views/newsletter/editor.html:
|
| 2291 |
msgid "Failed to fetch rendered posts"
|
| 2292 |
msgstr ""
|
| 2293 |
|
| 2294 |
-
#: views/newsletter/editor.html:
|
| 2295 |
msgid "Select a shortcode"
|
| 2296 |
msgstr ""
|
| 2297 |
|
| 2298 |
-
#: views/newsletter/editor.html:
|
| 2299 |
msgid ""
|
| 2300 |
"All emails must include an \"Unsubscribe\" link. Add a footer widget to "
|
| 2301 |
"your email to continue."
|
| 2302 |
msgstr ""
|
| 2303 |
|
| 2304 |
-
#: views/newsletter/editor.html:
|
| 2305 |
msgid "Enter an email address to send the preview newsletter to."
|
| 2306 |
msgstr ""
|
| 2307 |
|
| 2308 |
-
#: views/newsletter/editor.html:
|
| 2309 |
msgid "Your test email has been sent!"
|
| 2310 |
msgstr ""
|
| 2311 |
|
| 2312 |
-
#: views/newsletter/editor.html:
|
| 2313 |
msgid "Please add a template name"
|
| 2314 |
msgstr ""
|
| 2315 |
|
| 2316 |
-
#: views/newsletter/editor.html:
|
| 2317 |
msgid "Please add a template description"
|
| 2318 |
msgstr ""
|
| 2319 |
|
| 2320 |
-
#: views/newsletter/editor.html:
|
| 2321 |
msgid "Template has been saved."
|
| 2322 |
msgstr ""
|
| 2323 |
|
| 2324 |
-
#: views/newsletter/editor.html:
|
| 2325 |
msgid "Template has not been saved, please try again"
|
| 2326 |
msgstr ""
|
| 2327 |
|
| 2328 |
-
#: views/newsletter/editor.html:
|
| 2329 |
msgid "Categories & tags"
|
| 2330 |
msgstr ""
|
| 2331 |
|
| 2332 |
-
#: views/newsletter/editor.html:
|
| 2333 |
msgid "There is no content to display."
|
| 2334 |
msgstr ""
|
| 2335 |
|
| 2336 |
-
#: views/newsletter/editor.html:
|
| 2337 |
msgid ""
|
| 2338 |
"Your preview should open in a new tab. Please ensure your browser is not "
|
| 2339 |
"blocking popups from this page."
|
| 2340 |
msgstr ""
|
| 2341 |
|
| 2342 |
-
#: views/newsletter/editor.html:
|
| 2343 |
msgid "Newsletter Preview"
|
| 2344 |
msgstr ""
|
| 2345 |
|
| 2346 |
-
#: views/newsletter/editor.html:
|
| 2347 |
msgid ""
|
| 2348 |
"Contents of this newsletter are corrupted and may be lost, you may need to "
|
| 2349 |
"add new content to this newsletter, or create a new one. If possible, "
|
| 2350 |
"please contact us and report this issue."
|
| 2351 |
msgstr ""
|
| 2352 |
|
| 2353 |
-
#: views/newsletter/editor.html:
|
| 2354 |
msgid "Saving..."
|
| 2355 |
msgstr ""
|
| 2356 |
|
| 2357 |
-
#: views/newsletter/editor.html:
|
| 2358 |
msgid "There are unsaved changes which will be lost if you leave this page."
|
| 2359 |
msgstr ""
|
| 2360 |
|
| 2361 |
-
#: views/newsletter/editor.html:
|
| 2362 |
msgid "Website"
|
| 2363 |
msgstr ""
|
| 2364 |
|
| 2365 |
-
#: views/newsletter/editor.html:
|
| 2366 |
msgid "Custom"
|
| 2367 |
msgstr ""
|
| 2368 |
|
| 2369 |
-
#: views/newsletter/editor.html:
|
| 2370 |
msgid "Read more"
|
| 2371 |
msgstr ""
|
| 2372 |
|
| 2373 |
-
#: views/newsletter/editor.html:
|
| 2374 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:243
|
| 2375 |
#: views/newsletter/templates/blocks/button/settings.hbs:1
|
| 2376 |
#: views/newsletter/templates/blocks/button/widget.hbs:4
|
|
@@ -2378,23 +2378,23 @@ msgstr ""
|
|
| 2378 |
msgid "Button"
|
| 2379 |
msgstr ""
|
| 2380 |
|
| 2381 |
-
#: views/newsletter/editor.html:
|
| 2382 |
msgid "Add your postal address here!"
|
| 2383 |
msgstr ""
|
| 2384 |
|
| 2385 |
-
#: views/newsletter/editor.html:
|
| 2386 |
msgid "An image of..."
|
| 2387 |
msgstr ""
|
| 2388 |
|
| 2389 |
-
#: views/newsletter/editor.html:
|
| 2390 |
msgid "Edit this to insert text."
|
| 2391 |
msgstr ""
|
| 2392 |
|
| 2393 |
-
#: views/newsletter/editor.html:
|
| 2394 |
msgid "Display problems?"
|
| 2395 |
msgstr ""
|
| 2396 |
|
| 2397 |
-
#: views/newsletter/editor.html:
|
| 2398 |
msgid "Open this email in your web browser."
|
| 2399 |
msgstr ""
|
| 2400 |
|
|
@@ -4061,19 +4061,19 @@ msgstr ""
|
|
| 4061 |
msgid "Yup, it works! You can start blasting away emails to the moon."
|
| 4062 |
msgstr ""
|
| 4063 |
|
| 4064 |
-
#: views/settings/mta.html:
|
| 4065 |
msgid "The email has been sent! Check your inbox."
|
| 4066 |
msgstr ""
|
| 4067 |
|
| 4068 |
-
#: views/settings/mta.html:
|
| 4069 |
msgid "Please specify an API key before validating it."
|
| 4070 |
msgstr ""
|
| 4071 |
|
| 4072 |
-
#: views/settings/mta.html:
|
| 4073 |
msgid "You have selected an invalid sending method."
|
| 4074 |
msgstr ""
|
| 4075 |
|
| 4076 |
-
#: views/settings/mta.html:
|
| 4077 |
msgid "You need to specify a MailPoet account key."
|
| 4078 |
msgstr ""
|
| 4079 |
|
|
@@ -4680,12 +4680,12 @@ msgctxt "Form input type"
|
|
| 4680 |
msgid "Select"
|
| 4681 |
msgstr ""
|
| 4682 |
|
| 4683 |
-
#: views/newsletter/editor.html:
|
| 4684 |
msgctxt "select color"
|
| 4685 |
msgid "Select"
|
| 4686 |
msgstr ""
|
| 4687 |
|
| 4688 |
-
#: views/newsletter/editor.html:
|
| 4689 |
msgctxt "cancel color selection"
|
| 4690 |
msgid "Cancel"
|
| 4691 |
msgstr ""
|
| 4 |
msgstr ""
|
| 5 |
"Project-Id-Version: \n"
|
| 6 |
"Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
|
| 7 |
+
"POT-Creation-Date: 2017-03-07 14:26:40+00:00\n"
|
| 8 |
"MIME-Version: 1.0\n"
|
| 9 |
"Content-Type: text/plain; charset=utf-8\n"
|
| 10 |
"Content-Transfer-Encoding: 8bit\n"
|
| 58 |
|
| 59 |
#: lib/API/Endpoints/Forms.php:64 lib/API/Endpoints/Forms.php:68
|
| 60 |
#: lib/Subscribers/ImportExport/ImportExportFactory.php:32
|
| 61 |
+
#: views/newsletter/editor.html:928 views/newsletter/editor.html:929
|
| 62 |
msgid "Email"
|
| 63 |
msgstr ""
|
| 64 |
|
| 225 |
msgid "Newsletter"
|
| 226 |
msgstr ""
|
| 227 |
|
| 228 |
+
#: lib/Config/Menu.php:229 views/newsletter/editor.html:228
|
| 229 |
msgid "Newsletter Editor"
|
| 230 |
msgstr ""
|
| 231 |
|
| 601 |
msgstr ""
|
| 602 |
|
| 603 |
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:178
|
| 604 |
+
#: views/newsletter/editor.html:965 views/newsletter/editor.html:1087
|
| 605 |
msgid "Author:"
|
| 606 |
msgstr ""
|
| 607 |
|
| 608 |
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:180
|
| 609 |
+
#: views/newsletter/editor.html:967 views/newsletter/editor.html:1089
|
| 610 |
msgid "Categories:"
|
| 611 |
msgstr ""
|
| 612 |
|
| 747 |
msgstr ""
|
| 748 |
|
| 749 |
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:335
|
| 750 |
+
#: views/newsletter/editor.html:1140
|
| 751 |
msgid "Facebook"
|
| 752 |
msgstr ""
|
| 753 |
|
| 754 |
#: lib/Config/PopulatorData/Templates/StoreDiscount.php:343
|
| 755 |
#: lib/Config/PopulatorData/Templates/TravelEmail.php:85
|
| 756 |
+
#: views/newsletter/editor.html:1151
|
| 757 |
msgid "Twitter"
|
| 758 |
msgstr ""
|
| 759 |
|
| 1349 |
msgstr ""
|
| 1350 |
|
| 1351 |
#: lib/Newsletter/Shortcodes/Categories/Link.php:32
|
| 1352 |
+
#: views/newsletter/editor.html:1045
|
| 1353 |
msgid "Unsubscribe"
|
| 1354 |
msgstr ""
|
| 1355 |
|
| 1356 |
#: lib/Newsletter/Shortcodes/Categories/Link.php:53
|
| 1357 |
+
#: views/newsletter/editor.html:1045
|
| 1358 |
msgid "Manage subscription"
|
| 1359 |
msgstr ""
|
| 1360 |
|
| 1629 |
msgid "Accidentally unsubscribed?"
|
| 1630 |
msgstr ""
|
| 1631 |
|
| 1632 |
+
#: lib/Twig/Functions.php:83 views/settings/mta.html:1045
|
| 1633 |
msgid "every minute"
|
| 1634 |
msgstr ""
|
| 1635 |
|
| 1636 |
+
#: lib/Twig/Functions.php:84 views/settings/mta.html:1046
|
| 1637 |
msgid "every %1$d minutes"
|
| 1638 |
msgstr ""
|
| 1639 |
|
| 1640 |
+
#: lib/Twig/Functions.php:85 views/settings/mta.html:1047
|
| 1641 |
msgid "every hour"
|
| 1642 |
msgstr ""
|
| 1643 |
|
| 1644 |
+
#: lib/Twig/Functions.php:86 views/settings/mta.html:1048
|
| 1645 |
msgid "every %1$d hours"
|
| 1646 |
msgstr ""
|
| 1647 |
|
| 2205 |
msgid "to become a Premium beta tester."
|
| 2206 |
msgstr ""
|
| 2207 |
|
| 2208 |
+
#: views/newsletter/editor.html:233 views/newsletters.html:56
|
| 2209 |
msgid "Select type"
|
| 2210 |
msgstr ""
|
| 2211 |
|
| 2212 |
+
#: views/newsletter/editor.html:233 views/newsletters.html:57
|
| 2213 |
msgid "Template"
|
| 2214 |
msgstr ""
|
| 2215 |
|
| 2216 |
+
#: views/newsletter/editor.html:233 views/newsletters.html:58
|
| 2217 |
msgid "Designer"
|
| 2218 |
msgstr ""
|
| 2219 |
|
| 2220 |
+
#: views/newsletter/editor.html:233 views/newsletters.html:59
|
| 2221 |
msgid "Send"
|
| 2222 |
msgstr ""
|
| 2223 |
|
| 2224 |
+
#: views/newsletter/editor.html:262
|
| 2225 |
msgid "Insert/edit link"
|
| 2226 |
msgstr ""
|
| 2227 |
|
| 2228 |
+
#: views/newsletter/editor.html:269
|
| 2229 |
msgid "Type"
|
| 2230 |
msgstr ""
|
| 2231 |
|
| 2232 |
+
#: views/newsletter/editor.html:271
|
| 2233 |
msgid "Link to a web page"
|
| 2234 |
msgstr ""
|
| 2235 |
|
| 2236 |
+
#: views/newsletter/editor.html:272
|
| 2237 |
msgid "Browser version"
|
| 2238 |
msgstr ""
|
| 2239 |
|
| 2240 |
+
#: views/newsletter/editor.html:273
|
| 2241 |
msgid "Unsubcribe page"
|
| 2242 |
msgstr ""
|
| 2243 |
|
| 2244 |
+
#: views/newsletter/editor.html:274
|
| 2245 |
msgid "Manage your subscription page"
|
| 2246 |
msgstr ""
|
| 2247 |
|
| 2248 |
+
#: views/newsletter/editor.html:279 views/newsletter/editor.html:904
|
| 2249 |
+
#: views/newsletter/editor.html:909 views/newsletter/editor.html:914
|
| 2250 |
+
#: views/newsletter/editor.html:919 views/newsletter/editor.html:924
|
| 2251 |
+
#: views/newsletter/editor.html:934 views/newsletter/editor.html:939
|
| 2252 |
+
#: views/newsletter/editor.html:944 views/newsletter/editor.html:949
|
| 2253 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:237
|
| 2254 |
#: views/newsletter/templates/blocks/button/settings.hbs:14
|
| 2255 |
#: views/newsletter/templates/blocks/image/settings.hbs:4
|
| 2257 |
msgid "Link"
|
| 2258 |
msgstr ""
|
| 2259 |
|
| 2260 |
+
#: views/newsletter/editor.html:282
|
| 2261 |
msgid "Title"
|
| 2262 |
msgstr ""
|
| 2263 |
|
| 2264 |
+
#: views/newsletter/editor.html:285
|
| 2265 |
msgid "Open link in a new window/tab"
|
| 2266 |
msgstr ""
|
| 2267 |
|
| 2268 |
+
#: views/newsletter/editor.html:291
|
| 2269 |
msgid "Search your content"
|
| 2270 |
msgstr ""
|
| 2271 |
|
| 2272 |
+
#: views/newsletter/editor.html:303
|
| 2273 |
msgid "No search term specified. Showing recent items."
|
| 2274 |
msgstr ""
|
| 2275 |
|
| 2276 |
+
#: views/newsletter/editor.html:313
|
| 2277 |
msgid "Add Link"
|
| 2278 |
msgstr ""
|
| 2279 |
|
| 2280 |
+
#: views/newsletter/editor.html:316
|
| 2281 |
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
|
| 2282 |
#: views/subscribers/importExport/import/step2.html:153
|
| 2283 |
msgid "Cancel"
|
| 2284 |
msgstr ""
|
| 2285 |
|
| 2286 |
+
#: views/newsletter/editor.html:325
|
| 2287 |
msgid "Failed to fetch available posts"
|
| 2288 |
msgstr ""
|
| 2289 |
|
| 2290 |
+
#: views/newsletter/editor.html:326
|
| 2291 |
msgid "Failed to fetch rendered posts"
|
| 2292 |
msgstr ""
|
| 2293 |
|
| 2294 |
+
#: views/newsletter/editor.html:327
|
| 2295 |
msgid "Select a shortcode"
|
| 2296 |
msgstr ""
|
| 2297 |
|
| 2298 |
+
#: views/newsletter/editor.html:328
|
| 2299 |
msgid ""
|
| 2300 |
"All emails must include an \"Unsubscribe\" link. Add a footer widget to "
|
| 2301 |
"your email to continue."
|
| 2302 |
msgstr ""
|
| 2303 |
|
| 2304 |
+
#: views/newsletter/editor.html:329
|
| 2305 |
msgid "Enter an email address to send the preview newsletter to."
|
| 2306 |
msgstr ""
|
| 2307 |
|
| 2308 |
+
#: views/newsletter/editor.html:330
|
| 2309 |
msgid "Your test email has been sent!"
|
| 2310 |
msgstr ""
|
| 2311 |
|
| 2312 |
+
#: views/newsletter/editor.html:331
|
| 2313 |
msgid "Please add a template name"
|
| 2314 |
msgstr ""
|
| 2315 |
|
| 2316 |
+
#: views/newsletter/editor.html:332
|
| 2317 |
msgid "Please add a template description"
|
| 2318 |
msgstr ""
|
| 2319 |
|
| 2320 |
+
#: views/newsletter/editor.html:333
|
| 2321 |
msgid "Template has been saved."
|
| 2322 |
msgstr ""
|
| 2323 |
|
| 2324 |
+
#: views/newsletter/editor.html:334
|
| 2325 |
msgid "Template has not been saved, please try again"
|
| 2326 |
msgstr ""
|
| 2327 |
|
| 2328 |
+
#: views/newsletter/editor.html:335
|
| 2329 |
msgid "Categories & tags"
|
| 2330 |
msgstr ""
|
| 2331 |
|
| 2332 |
+
#: views/newsletter/editor.html:336
|
| 2333 |
msgid "There is no content to display."
|
| 2334 |
msgstr ""
|
| 2335 |
|
| 2336 |
+
#: views/newsletter/editor.html:337
|
| 2337 |
msgid ""
|
| 2338 |
"Your preview should open in a new tab. Please ensure your browser is not "
|
| 2339 |
"blocking popups from this page."
|
| 2340 |
msgstr ""
|
| 2341 |
|
| 2342 |
+
#: views/newsletter/editor.html:338
|
| 2343 |
msgid "Newsletter Preview"
|
| 2344 |
msgstr ""
|
| 2345 |
|
| 2346 |
+
#: views/newsletter/editor.html:339
|
| 2347 |
msgid ""
|
| 2348 |
"Contents of this newsletter are corrupted and may be lost, you may need to "
|
| 2349 |
"add new content to this newsletter, or create a new one. If possible, "
|
| 2350 |
"please contact us and report this issue."
|
| 2351 |
msgstr ""
|
| 2352 |
|
| 2353 |
+
#: views/newsletter/editor.html:340
|
| 2354 |
msgid "Saving..."
|
| 2355 |
msgstr ""
|
| 2356 |
|
| 2357 |
+
#: views/newsletter/editor.html:341
|
| 2358 |
msgid "There are unsaved changes which will be lost if you leave this page."
|
| 2359 |
msgstr ""
|
| 2360 |
|
| 2361 |
+
#: views/newsletter/editor.html:923
|
| 2362 |
msgid "Website"
|
| 2363 |
msgstr ""
|
| 2364 |
|
| 2365 |
+
#: views/newsletter/editor.html:948
|
| 2366 |
msgid "Custom"
|
| 2367 |
msgstr ""
|
| 2368 |
|
| 2369 |
+
#: views/newsletter/editor.html:971 views/newsletter/editor.html:1093
|
| 2370 |
msgid "Read more"
|
| 2371 |
msgstr ""
|
| 2372 |
|
| 2373 |
+
#: views/newsletter/editor.html:1007
|
| 2374 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:243
|
| 2375 |
#: views/newsletter/templates/blocks/button/settings.hbs:1
|
| 2376 |
#: views/newsletter/templates/blocks/button/widget.hbs:4
|
| 2378 |
msgid "Button"
|
| 2379 |
msgstr ""
|
| 2380 |
|
| 2381 |
+
#: views/newsletter/editor.html:1045
|
| 2382 |
msgid "Add your postal address here!"
|
| 2383 |
msgstr ""
|
| 2384 |
|
| 2385 |
+
#: views/newsletter/editor.html:1065
|
| 2386 |
msgid "An image of..."
|
| 2387 |
msgstr ""
|
| 2388 |
|
| 2389 |
+
#: views/newsletter/editor.html:1164
|
| 2390 |
msgid "Edit this to insert text."
|
| 2391 |
msgstr ""
|
| 2392 |
|
| 2393 |
+
#: views/newsletter/editor.html:1167
|
| 2394 |
msgid "Display problems?"
|
| 2395 |
msgstr ""
|
| 2396 |
|
| 2397 |
+
#: views/newsletter/editor.html:1168
|
| 2398 |
msgid "Open this email in your web browser."
|
| 2399 |
msgstr ""
|
| 2400 |
|
| 4061 |
msgid "Yup, it works! You can start blasting away emails to the moon."
|
| 4062 |
msgstr ""
|
| 4063 |
|
| 4064 |
+
#: views/settings/mta.html:726
|
| 4065 |
msgid "The email has been sent! Check your inbox."
|
| 4066 |
msgstr ""
|
| 4067 |
|
| 4068 |
+
#: views/settings/mta.html:747
|
| 4069 |
msgid "Please specify an API key before validating it."
|
| 4070 |
msgstr ""
|
| 4071 |
|
| 4072 |
+
#: views/settings/mta.html:807
|
| 4073 |
msgid "You have selected an invalid sending method."
|
| 4074 |
msgstr ""
|
| 4075 |
|
| 4076 |
+
#: views/settings/mta.html:815
|
| 4077 |
msgid "You need to specify a MailPoet account key."
|
| 4078 |
msgstr ""
|
| 4079 |
|
| 4680 |
msgid "Select"
|
| 4681 |
msgstr ""
|
| 4682 |
|
| 4683 |
+
#: views/newsletter/editor.html:342
|
| 4684 |
msgctxt "select color"
|
| 4685 |
msgid "Select"
|
| 4686 |
msgstr ""
|
| 4687 |
|
| 4688 |
+
#: views/newsletter/editor.html:343
|
| 4689 |
msgctxt "cancel color selection"
|
| 4690 |
msgid "Cancel"
|
| 4691 |
msgstr ""
|
lib/Cron/Workers/SendingQueue/SendingQueue.php
CHANGED
|
@@ -15,7 +15,7 @@ class SendingQueue {
|
|
| 15 |
public $mailer_task;
|
| 16 |
public $newsletter_task;
|
| 17 |
public $timer;
|
| 18 |
-
const BATCH_SIZE =
|
| 19 |
|
| 20 |
function __construct($timer = false, $mailer_task = false, $newsletter_task = false) {
|
| 21 |
$this->mailer_task = ($mailer_task) ? $mailer_task : new MailerTask();
|
| 15 |
public $mailer_task;
|
| 16 |
public $newsletter_task;
|
| 17 |
public $timer;
|
| 18 |
+
const BATCH_SIZE = 20;
|
| 19 |
|
| 20 |
function __construct($timer = false, $mailer_task = false, $newsletter_task = false) {
|
| 21 |
$this->mailer_task = ($mailer_task) ? $mailer_task : new MailerTask();
|
mailpoet.php
CHANGED
|
@@ -4,13 +4,13 @@ if(!defined('ABSPATH')) exit;
|
|
| 4 |
|
| 5 |
/*
|
| 6 |
* Plugin Name: MailPoet
|
| 7 |
-
* Version: 3.0.0-beta.
|
| 8 |
* Plugin URI: http://www.mailpoet.com
|
| 9 |
* Description: Create and send beautiful email newsletters, autoresponders, and post notifications without leaving WordPress. This is a beta version of our brand new plugin!
|
| 10 |
* Author: MailPoet
|
| 11 |
* Author URI: http://www.mailpoet.com
|
| 12 |
* Requires at least: 4.6
|
| 13 |
-
* Tested up to: 4.7.
|
| 14 |
*
|
| 15 |
* Text Domain: mailpoet
|
| 16 |
* Domain Path: /lang/
|
|
@@ -21,7 +21,7 @@ if(!defined('ABSPATH')) exit;
|
|
| 21 |
*/
|
| 22 |
|
| 23 |
$mailpoet_plugin = array(
|
| 24 |
-
'version' => '3.0.0-beta.
|
| 25 |
'filename' => __FILE__,
|
| 26 |
'path' => dirname(__FILE__),
|
| 27 |
'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
|
| 4 |
|
| 5 |
/*
|
| 6 |
* Plugin Name: MailPoet
|
| 7 |
+
* Version: 3.0.0-beta.22
|
| 8 |
* Plugin URI: http://www.mailpoet.com
|
| 9 |
* Description: Create and send beautiful email newsletters, autoresponders, and post notifications without leaving WordPress. This is a beta version of our brand new plugin!
|
| 10 |
* Author: MailPoet
|
| 11 |
* Author URI: http://www.mailpoet.com
|
| 12 |
* Requires at least: 4.6
|
| 13 |
+
* Tested up to: 4.7.3
|
| 14 |
*
|
| 15 |
* Text Domain: mailpoet
|
| 16 |
* Domain Path: /lang/
|
| 21 |
*/
|
| 22 |
|
| 23 |
$mailpoet_plugin = array(
|
| 24 |
+
'version' => '3.0.0-beta.22',
|
| 25 |
'filename' => __FILE__,
|
| 26 |
'path' => dirname(__FILE__),
|
| 27 |
'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
|
readme.txt
CHANGED
|
@@ -2,8 +2,8 @@
|
|
| 2 |
Contributors: mailpoet, wysija
|
| 3 |
Tags: newsletter, email, welcome email, post notification, autoresponder, signup, smtp
|
| 4 |
Requires at least: 4.6
|
| 5 |
-
Tested up to: 4.7.
|
| 6 |
-
Stable tag: 3.0.0-beta.
|
| 7 |
Create and send beautiful emails and newsletters from WordPress.
|
| 8 |
|
| 9 |
== Description ==
|
|
@@ -83,11 +83,17 @@ Our [support site](https://docs.mailpoet.com/) has plenty of articles. You can w
|
|
| 83 |
|
| 84 |
== Changelog ==
|
| 85 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 86 |
= 3.0.0-beta.21 - 2017-02-28 =
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
|
| 92 |
= 3.0.0-beta.20 - 2017-02-23 =
|
| 93 |
* Fixed: scheduling options are properly saved when creating a new or re-saving an existing email. Thx Oskar!;
|
| 2 |
Contributors: mailpoet, wysija
|
| 3 |
Tags: newsletter, email, welcome email, post notification, autoresponder, signup, smtp
|
| 4 |
Requires at least: 4.6
|
| 5 |
+
Tested up to: 4.7.3
|
| 6 |
+
Stable tag: 3.0.0-beta.22
|
| 7 |
Create and send beautiful emails and newsletters from WordPress.
|
| 8 |
|
| 9 |
== Description ==
|
| 83 |
|
| 84 |
== Changelog ==
|
| 85 |
|
| 86 |
+
= 3.0.0-beta.22 - 2017-03-07 =
|
| 87 |
+
* Improved: sending very large emails with our sending service is less likely to time out. Thanks Mark!;
|
| 88 |
+
* Fixed: WordPress warnings are no longer displayed in the editor's contents;
|
| 89 |
+
* Small, little and tiny improvements to show we pay attention to details;
|
| 90 |
+
* British scientists say people whose sites run on PHP below version 7 have the lowest quality of life.
|
| 91 |
+
|
| 92 |
= 3.0.0-beta.21 - 2017-02-28 =
|
| 93 |
+
* Fixed: newsletter sending process will fully stop when sending is paused. Thanks Terry!
|
| 94 |
+
* Fixed: MailPoet sending method will work on sites using PHP 5.3. Thanks Jeff!
|
| 95 |
+
* Fixed: bulk trashing and restoring newsletters and forms will work on sites using PHP 5.3. Thanks Scott!
|
| 96 |
+
* We recommend all of you to upgrade to PHP 7. It's faster, more reliable, and safer. It's just a question of asking your host to switch.
|
| 97 |
|
| 98 |
= 3.0.0-beta.20 - 2017-02-23 =
|
| 99 |
* Fixed: scheduling options are properly saved when creating a new or re-saving an existing email. Thx Oskar!;
|
vendor/autoload.php
CHANGED
|
@@ -4,4 +4,4 @@
|
|
| 4 |
|
| 5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
| 6 |
|
| 7 |
-
return
|
| 4 |
|
| 5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
| 6 |
|
| 7 |
+
return ComposerAutoloaderInit15efd7c5cfbd30e491652e9955de99b6::getLoader();
|
vendor/composer/ClassLoader.php
CHANGED
|
@@ -55,7 +55,6 @@ class ClassLoader
|
|
| 55 |
private $classMap = array();
|
| 56 |
private $classMapAuthoritative = false;
|
| 57 |
private $missingClasses = array();
|
| 58 |
-
private $apcuPrefix;
|
| 59 |
|
| 60 |
public function getPrefixes()
|
| 61 |
{
|
|
@@ -272,26 +271,6 @@ class ClassLoader
|
|
| 272 |
return $this->classMapAuthoritative;
|
| 273 |
}
|
| 274 |
|
| 275 |
-
/**
|
| 276 |
-
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
|
| 277 |
-
*
|
| 278 |
-
* @param string|null $apcuPrefix
|
| 279 |
-
*/
|
| 280 |
-
public function setApcuPrefix($apcuPrefix)
|
| 281 |
-
{
|
| 282 |
-
$this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
|
| 283 |
-
}
|
| 284 |
-
|
| 285 |
-
/**
|
| 286 |
-
* The APCu prefix in use, or null if APCu caching is not enabled.
|
| 287 |
-
*
|
| 288 |
-
* @return string|null
|
| 289 |
-
*/
|
| 290 |
-
public function getApcuPrefix()
|
| 291 |
-
{
|
| 292 |
-
return $this->apcuPrefix;
|
| 293 |
-
}
|
| 294 |
-
|
| 295 |
/**
|
| 296 |
* Registers this instance as an autoloader.
|
| 297 |
*
|
|
@@ -334,6 +313,11 @@ class ClassLoader
|
|
| 334 |
*/
|
| 335 |
public function findFile($class)
|
| 336 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 337 |
// class map lookup
|
| 338 |
if (isset($this->classMap[$class])) {
|
| 339 |
return $this->classMap[$class];
|
|
@@ -341,12 +325,6 @@ class ClassLoader
|
|
| 341 |
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
|
| 342 |
return false;
|
| 343 |
}
|
| 344 |
-
if (null !== $this->apcuPrefix) {
|
| 345 |
-
$file = apcu_fetch($this->apcuPrefix.$class, $hit);
|
| 346 |
-
if ($hit) {
|
| 347 |
-
return $file;
|
| 348 |
-
}
|
| 349 |
-
}
|
| 350 |
|
| 351 |
$file = $this->findFileWithExtension($class, '.php');
|
| 352 |
|
|
@@ -355,10 +333,6 @@ class ClassLoader
|
|
| 355 |
$file = $this->findFileWithExtension($class, '.hh');
|
| 356 |
}
|
| 357 |
|
| 358 |
-
if (null !== $this->apcuPrefix) {
|
| 359 |
-
apcu_add($this->apcuPrefix.$class, $file);
|
| 360 |
-
}
|
| 361 |
-
|
| 362 |
if (false === $file) {
|
| 363 |
// Remember that this class does not exist.
|
| 364 |
$this->missingClasses[$class] = true;
|
| 55 |
private $classMap = array();
|
| 56 |
private $classMapAuthoritative = false;
|
| 57 |
private $missingClasses = array();
|
|
|
|
| 58 |
|
| 59 |
public function getPrefixes()
|
| 60 |
{
|
| 271 |
return $this->classMapAuthoritative;
|
| 272 |
}
|
| 273 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 274 |
/**
|
| 275 |
* Registers this instance as an autoloader.
|
| 276 |
*
|
| 313 |
*/
|
| 314 |
public function findFile($class)
|
| 315 |
{
|
| 316 |
+
// work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
|
| 317 |
+
if ('\\' == $class[0]) {
|
| 318 |
+
$class = substr($class, 1);
|
| 319 |
+
}
|
| 320 |
+
|
| 321 |
// class map lookup
|
| 322 |
if (isset($this->classMap[$class])) {
|
| 323 |
return $this->classMap[$class];
|
| 325 |
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
|
| 326 |
return false;
|
| 327 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 328 |
|
| 329 |
$file = $this->findFileWithExtension($class, '.php');
|
| 330 |
|
| 333 |
$file = $this->findFileWithExtension($class, '.hh');
|
| 334 |
}
|
| 335 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 336 |
if (false === $file) {
|
| 337 |
// Remember that this class does not exist.
|
| 338 |
$this->missingClasses[$class] = true;
|
vendor/composer/autoload_real.php
CHANGED
|
@@ -2,7 +2,7 @@
|
|
| 2 |
|
| 3 |
// autoload_real.php @generated by Composer
|
| 4 |
|
| 5 |
-
class
|
| 6 |
{
|
| 7 |
private static $loader;
|
| 8 |
|
|
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit7e578735926a71ed928f2bb5dfff326c
|
|
| 19 |
return self::$loader;
|
| 20 |
}
|
| 21 |
|
| 22 |
-
spl_autoload_register(array('
|
| 23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
| 24 |
-
spl_autoload_unregister(array('
|
| 25 |
|
| 26 |
-
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION')
|
| 27 |
if ($useStaticLoader) {
|
| 28 |
require_once __DIR__ . '/autoload_static.php';
|
| 29 |
|
| 30 |
-
call_user_func(\Composer\Autoload\
|
| 31 |
} else {
|
| 32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
| 33 |
foreach ($map as $namespace => $path) {
|
|
@@ -48,19 +48,19 @@ class ComposerAutoloaderInit7e578735926a71ed928f2bb5dfff326c
|
|
| 48 |
$loader->register(true);
|
| 49 |
|
| 50 |
if ($useStaticLoader) {
|
| 51 |
-
$includeFiles = Composer\Autoload\
|
| 52 |
} else {
|
| 53 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
| 54 |
}
|
| 55 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
| 56 |
-
|
| 57 |
}
|
| 58 |
|
| 59 |
return $loader;
|
| 60 |
}
|
| 61 |
}
|
| 62 |
|
| 63 |
-
function
|
| 64 |
{
|
| 65 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
| 66 |
require $file;
|
| 2 |
|
| 3 |
// autoload_real.php @generated by Composer
|
| 4 |
|
| 5 |
+
class ComposerAutoloaderInit15efd7c5cfbd30e491652e9955de99b6
|
| 6 |
{
|
| 7 |
private static $loader;
|
| 8 |
|
| 19 |
return self::$loader;
|
| 20 |
}
|
| 21 |
|
| 22 |
+
spl_autoload_register(array('ComposerAutoloaderInit15efd7c5cfbd30e491652e9955de99b6', 'loadClassLoader'), true, true);
|
| 23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
| 24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit15efd7c5cfbd30e491652e9955de99b6', 'loadClassLoader'));
|
| 25 |
|
| 26 |
+
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION');
|
| 27 |
if ($useStaticLoader) {
|
| 28 |
require_once __DIR__ . '/autoload_static.php';
|
| 29 |
|
| 30 |
+
call_user_func(\Composer\Autoload\ComposerStaticInit15efd7c5cfbd30e491652e9955de99b6::getInitializer($loader));
|
| 31 |
} else {
|
| 32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
| 33 |
foreach ($map as $namespace => $path) {
|
| 48 |
$loader->register(true);
|
| 49 |
|
| 50 |
if ($useStaticLoader) {
|
| 51 |
+
$includeFiles = Composer\Autoload\ComposerStaticInit15efd7c5cfbd30e491652e9955de99b6::$files;
|
| 52 |
} else {
|
| 53 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
| 54 |
}
|
| 55 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
| 56 |
+
composerRequire15efd7c5cfbd30e491652e9955de99b6($fileIdentifier, $file);
|
| 57 |
}
|
| 58 |
|
| 59 |
return $loader;
|
| 60 |
}
|
| 61 |
}
|
| 62 |
|
| 63 |
+
function composerRequire15efd7c5cfbd30e491652e9955de99b6($fileIdentifier, $file)
|
| 64 |
{
|
| 65 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
| 66 |
require $file;
|
vendor/composer/autoload_static.php
CHANGED
|
@@ -4,7 +4,7 @@
|
|
| 4 |
|
| 5 |
namespace Composer\Autoload;
|
| 6 |
|
| 7 |
-
class
|
| 8 |
{
|
| 9 |
public static $files = array (
|
| 10 |
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
|
@@ -608,10 +608,10 @@ class ComposerStaticInit7e578735926a71ed928f2bb5dfff326c
|
|
| 608 |
public static function getInitializer(ClassLoader $loader)
|
| 609 |
{
|
| 610 |
return \Closure::bind(function () use ($loader) {
|
| 611 |
-
$loader->prefixLengthsPsr4 =
|
| 612 |
-
$loader->prefixDirsPsr4 =
|
| 613 |
-
$loader->prefixesPsr0 =
|
| 614 |
-
$loader->classMap =
|
| 615 |
|
| 616 |
}, null, ClassLoader::class);
|
| 617 |
}
|
| 4 |
|
| 5 |
namespace Composer\Autoload;
|
| 6 |
|
| 7 |
+
class ComposerStaticInit15efd7c5cfbd30e491652e9955de99b6
|
| 8 |
{
|
| 9 |
public static $files = array (
|
| 10 |
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
| 608 |
public static function getInitializer(ClassLoader $loader)
|
| 609 |
{
|
| 610 |
return \Closure::bind(function () use ($loader) {
|
| 611 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit15efd7c5cfbd30e491652e9955de99b6::$prefixLengthsPsr4;
|
| 612 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit15efd7c5cfbd30e491652e9955de99b6::$prefixDirsPsr4;
|
| 613 |
+
$loader->prefixesPsr0 = ComposerStaticInit15efd7c5cfbd30e491652e9955de99b6::$prefixesPsr0;
|
| 614 |
+
$loader->classMap = ComposerStaticInit15efd7c5cfbd30e491652e9955de99b6::$classMap;
|
| 615 |
|
| 616 |
}, null, ClassLoader::class);
|
| 617 |
}
|
vendor/composer/installed.json
CHANGED
|
@@ -14,7 +14,7 @@
|
|
| 14 |
"reference": "b0c1bda3be5a35da44ba1ac28cc61c67d2ada465",
|
| 15 |
"shasum": ""
|
| 16 |
},
|
| 17 |
-
"time": "2015-11-
|
| 18 |
"type": "library",
|
| 19 |
"installation-source": "dist",
|
| 20 |
"autoload": {
|
|
@@ -55,7 +55,7 @@
|
|
| 55 |
"require-dev": {
|
| 56 |
"phpunit/phpunit": "^5.6"
|
| 57 |
},
|
| 58 |
-
"time": "2016-12-
|
| 59 |
"type": "library",
|
| 60 |
"installation-source": "dist",
|
| 61 |
"autoload": {
|
|
@@ -116,7 +116,7 @@
|
|
| 116 |
"j4mie/idiorm": "1.5.*",
|
| 117 |
"php": ">=5.2.0"
|
| 118 |
},
|
| 119 |
-
"time": "2014-09-
|
| 120 |
"type": "library",
|
| 121 |
"installation-source": "dist",
|
| 122 |
"autoload": {
|
|
@@ -180,7 +180,7 @@
|
|
| 180 |
"require-dev": {
|
| 181 |
"phpunit/phpunit": "~4.0|~5.0"
|
| 182 |
},
|
| 183 |
-
"time": "2017-01-
|
| 184 |
"type": "library",
|
| 185 |
"installation-source": "dist",
|
| 186 |
"autoload": {
|
|
@@ -226,7 +226,7 @@
|
|
| 226 |
"suggest": {
|
| 227 |
"ext-mbstring": "For best performance"
|
| 228 |
},
|
| 229 |
-
"time": "2016-11-
|
| 230 |
"type": "library",
|
| 231 |
"extra": {
|
| 232 |
"branch-alias": {
|
|
@@ -299,7 +299,7 @@
|
|
| 299 |
"symfony/config": "",
|
| 300 |
"symfony/yaml": ""
|
| 301 |
},
|
| 302 |
-
"time": "2017-01-
|
| 303 |
"type": "library",
|
| 304 |
"extra": {
|
| 305 |
"branch-alias": {
|
|
@@ -355,7 +355,7 @@
|
|
| 355 |
"friendsofphp/php-cs-fixer": "~2",
|
| 356 |
"phpunit/phpunit": "~4.0 || ~5.0"
|
| 357 |
},
|
| 358 |
-
"time": "2017-01-
|
| 359 |
"type": "library",
|
| 360 |
"extra": {
|
| 361 |
"branch-alias": {
|
|
@@ -408,7 +408,7 @@
|
|
| 408 |
"require-dev": {
|
| 409 |
"phpunit/phpunit": "*"
|
| 410 |
},
|
| 411 |
-
"time": "2016-07-
|
| 412 |
"type": "library",
|
| 413 |
"installation-source": "dist",
|
| 414 |
"autoload": {
|
|
@@ -457,7 +457,7 @@
|
|
| 457 |
"phpunit/phpunit": ">=4.0",
|
| 458 |
"soundasleep/component-tests": "dev-master"
|
| 459 |
},
|
| 460 |
-
"time": "2016-07-
|
| 461 |
"type": "library",
|
| 462 |
"installation-source": "dist",
|
| 463 |
"autoload": {
|
|
@@ -510,7 +510,7 @@
|
|
| 510 |
"mockery/mockery": "~0.9.1",
|
| 511 |
"symfony/phpunit-bridge": "~3.2"
|
| 512 |
},
|
| 513 |
-
"time": "2016-12-
|
| 514 |
"type": "library",
|
| 515 |
"extra": {
|
| 516 |
"branch-alias": {
|
|
@@ -565,7 +565,7 @@
|
|
| 565 |
"require-dev": {
|
| 566 |
"htmlawed/htmlawed": "dev-master"
|
| 567 |
},
|
| 568 |
-
"time": "2016-01-
|
| 569 |
"type": "library",
|
| 570 |
"installation-source": "dist",
|
| 571 |
"autoload": {
|
|
@@ -620,7 +620,7 @@
|
|
| 620 |
"symfony/debug": "~2.7",
|
| 621 |
"symfony/phpunit-bridge": "~3.2"
|
| 622 |
},
|
| 623 |
-
"time": "2017-01-
|
| 624 |
"type": "library",
|
| 625 |
"extra": {
|
| 626 |
"branch-alias": {
|
| 14 |
"reference": "b0c1bda3be5a35da44ba1ac28cc61c67d2ada465",
|
| 15 |
"shasum": ""
|
| 16 |
},
|
| 17 |
+
"time": "2015-11-28 21:47:43",
|
| 18 |
"type": "library",
|
| 19 |
"installation-source": "dist",
|
| 20 |
"autoload": {
|
| 55 |
"require-dev": {
|
| 56 |
"phpunit/phpunit": "^5.6"
|
| 57 |
},
|
| 58 |
+
"time": "2016-12-14 06:28:26",
|
| 59 |
"type": "library",
|
| 60 |
"installation-source": "dist",
|
| 61 |
"autoload": {
|
| 116 |
"j4mie/idiorm": "1.5.*",
|
| 117 |
"php": ">=5.2.0"
|
| 118 |
},
|
| 119 |
+
"time": "2014-09-23 10:49:36",
|
| 120 |
"type": "library",
|
| 121 |
"installation-source": "dist",
|
| 122 |
"autoload": {
|
| 180 |
"require-dev": {
|
| 181 |
"phpunit/phpunit": "~4.0|~5.0"
|
| 182 |
},
|
| 183 |
+
"time": "2017-01-23 04:29:33",
|
| 184 |
"type": "library",
|
| 185 |
"installation-source": "dist",
|
| 186 |
"autoload": {
|
| 226 |
"suggest": {
|
| 227 |
"ext-mbstring": "For best performance"
|
| 228 |
},
|
| 229 |
+
"time": "2016-11-14 01:06:16",
|
| 230 |
"type": "library",
|
| 231 |
"extra": {
|
| 232 |
"branch-alias": {
|
| 299 |
"symfony/config": "",
|
| 300 |
"symfony/yaml": ""
|
| 301 |
},
|
| 302 |
+
"time": "2017-01-21 16:59:38",
|
| 303 |
"type": "library",
|
| 304 |
"extra": {
|
| 305 |
"branch-alias": {
|
| 355 |
"friendsofphp/php-cs-fixer": "~2",
|
| 356 |
"phpunit/phpunit": "~4.0 || ~5.0"
|
| 357 |
},
|
| 358 |
+
"time": "2017-01-16 07:55:07",
|
| 359 |
"type": "library",
|
| 360 |
"extra": {
|
| 361 |
"branch-alias": {
|
| 408 |
"require-dev": {
|
| 409 |
"phpunit/phpunit": "*"
|
| 410 |
},
|
| 411 |
+
"time": "2016-07-19 19:14:21",
|
| 412 |
"type": "library",
|
| 413 |
"installation-source": "dist",
|
| 414 |
"autoload": {
|
| 457 |
"phpunit/phpunit": ">=4.0",
|
| 458 |
"soundasleep/component-tests": "dev-master"
|
| 459 |
},
|
| 460 |
+
"time": "2016-07-28 01:09:53",
|
| 461 |
"type": "library",
|
| 462 |
"installation-source": "dist",
|
| 463 |
"autoload": {
|
| 510 |
"mockery/mockery": "~0.9.1",
|
| 511 |
"symfony/phpunit-bridge": "~3.2"
|
| 512 |
},
|
| 513 |
+
"time": "2016-12-29 10:02:40",
|
| 514 |
"type": "library",
|
| 515 |
"extra": {
|
| 516 |
"branch-alias": {
|
| 565 |
"require-dev": {
|
| 566 |
"htmlawed/htmlawed": "dev-master"
|
| 567 |
},
|
| 568 |
+
"time": "2016-01-14 20:55:00",
|
| 569 |
"type": "library",
|
| 570 |
"installation-source": "dist",
|
| 571 |
"autoload": {
|
| 620 |
"symfony/debug": "~2.7",
|
| 621 |
"symfony/phpunit-bridge": "~3.2"
|
| 622 |
},
|
| 623 |
+
"time": "2017-01-11 19:36:15",
|
| 624 |
"type": "library",
|
| 625 |
"extra": {
|
| 626 |
"branch-alias": {
|
views/newsletter/editor.html
CHANGED
|
@@ -224,6 +224,9 @@
|
|
| 224 |
<% endblock %>
|
| 225 |
|
| 226 |
<% block content %>
|
|
|
|
|
|
|
|
|
|
| 227 |
<div id="mailpoet_editor">
|
| 228 |
<div id="mailpoet_editor_heading"></div>
|
| 229 |
<div class="mailpoet_breadcrumbs">
|
| 224 |
<% endblock %>
|
| 225 |
|
| 226 |
<% block content %>
|
| 227 |
+
<!-- Hidden heading for notices to appear under -->
|
| 228 |
+
<h1 style="display:none"><%= __('Newsletter Editor') %></h1>
|
| 229 |
+
|
| 230 |
<div id="mailpoet_editor">
|
| 231 |
<div id="mailpoet_editor_heading"></div>
|
| 232 |
<div class="mailpoet_breadcrumbs">
|
views/settings/mta.html
CHANGED
|
@@ -717,11 +717,7 @@
|
|
| 717 |
text: "<%= __('Yup, it works! You can start blasting away emails to the moon.') %>"
|
| 718 |
}
|
| 719 |
},
|
| 720 |
-
subscriber:
|
| 721 |
-
first_name: "<%= current_user.display_name %>",
|
| 722 |
-
last_name: "",
|
| 723 |
-
email: recipient
|
| 724 |
-
}
|
| 725 |
}
|
| 726 |
}).always(function() {
|
| 727 |
MailPoet.Modal.loading(false);
|
| 717 |
text: "<%= __('Yup, it works! You can start blasting away emails to the moon.') %>"
|
| 718 |
}
|
| 719 |
},
|
| 720 |
+
subscriber: recipient
|
|
|
|
|
|
|
|
|
|
|
|
|
| 721 |
}
|
| 722 |
}).always(function() {
|
| 723 |
MailPoet.Modal.loading(false);
|
