</h2>
<div class="changelog point-releases">
- <h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 1 ); ?></h3>
+ <h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 2 ); ?></h3>
+ <p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
+ '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 17 ), '4.4.2', number_format_i18n( 17 ) ); ?>
+ <?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.4.2' ); ?>
+ </p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
'<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 52 ), '4.4.1', number_format_i18n( 52 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.4.1' ); ?>
}
}
- foreach ( $meta as &$value ) {
- if ( is_string( $value ) ) {
- $value = wp_kses_post( $value );
+ foreach ( $meta['keywords'] as $key => $keyword ) {
+ if ( ! seems_utf8( $keyword ) ) {
+ $meta['keywords'][ $key ] = utf8_encode( $keyword );
}
}
+ $meta = wp_kses_post_deep( $meta );
+
/**
* Filter the array of meta data read from an image's exif data.
*
}
}
);
+ // Prevent submitting the form when pressing Enter on a focused field.
+ return false;
},
revert : function() {
-window.wp=window.wp||{};var inlineEditTax;!function(a,b){inlineEditTax={init:function(){var b=this,c=a("#inline-edit");b.type=a("#the-list").attr("data-wp-lists").substr(5),b.what="#"+b.type+"-",a("#the-list").on("click","a.editinline",function(){return inlineEditTax.edit(this),!1}),c.keyup(function(a){return 27===a.which?inlineEditTax.revert():void 0}),a(".cancel",c).click(function(){return inlineEditTax.revert()}),a(".save",c).click(function(){return inlineEditTax.save(this)}),a("input, select",c).keydown(function(a){return 13===a.which?inlineEditTax.save(this):void 0}),a('#posts-filter input[type="submit"]').mousedown(function(){b.revert()})},toggle:function(b){var c=this;"none"===a(c.what+c.getId(b)).css("display")?c.revert():c.edit(b)},edit:function(b){var c,d,e,f=this;return f.revert(),"object"==typeof b&&(b=f.getId(b)),c=a("#inline-edit").clone(!0),d=a("#inline_"+b),a("td",c).attr("colspan",a("th:visible, td:visible",".widefat:first thead").length),a(f.what+b).hide().after(c).after('<tr class="hidden"></tr>'),e=a(".name",d),e.find("img").replaceWith(function(){return this.alt}),e=e.text(),a(':input[name="name"]',c).val(e),e=a(".slug",d),e.find("img").replaceWith(function(){return this.alt}),e=e.text(),a(':input[name="slug"]',c).val(e),a(c).attr("id","edit-"+b).addClass("inline-editor").show(),a(".ptitle",c).eq(0).focus(),!1},save:function(c){var d,e,f=a('input[name="taxonomy"]').val()||"";"object"==typeof c&&(c=this.getId(c)),a("table.widefat .spinner").addClass("is-active"),d={action:"inline-save-tax",tax_type:this.type,tax_ID:c,taxonomy:f},e=a("#edit-"+c).find(":input").serialize(),d=e+"&"+a.param(d),a.post(ajaxurl,d,function(d){var e,f,g,h=a("#edit-"+c+" .inline-edit-save .error");a("table.widefat .spinner").removeClass("is-active"),d?-1!==d.indexOf("<tr")?(a(inlineEditTax.what+c).siblings("tr.hidden").addBack().remove(),f=a(d).attr("id"),a("#edit-"+c).before(d).remove(),f?(g=f.replace(inlineEditTax.type+"-",""),e=a("#"+f)):(g=c,e=a(inlineEditTax.what+c)),a("#parent").find("option[value="+g+"]").text(e.find(".row-title").text()),e.hide().fadeIn(400,function(){e.find(".row-title").focus(),b.a11y.speak(inlineEditL10n.saved)})):(h.html(d).show(),b.a11y.speak(h.text())):(h.html(inlineEditL10n.error).show(),b.a11y.speak(inlineEditL10n.error))})},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");b&&(a("table.widefat .spinner").removeClass("is-active"),a("#"+b).siblings("tr.hidden").addBack().remove(),b=b.substr(b.lastIndexOf("-")+1),a(this.what+b).show().find(".row-title").focus())},getId:function(b){var c="TR"===b.tagName?b.id:a(b).parents("tr").attr("id"),d=c.split("-");return d[d.length-1]}},a(document).ready(function(){inlineEditTax.init()})}(jQuery,window.wp);
\ No newline at end of file
+window.wp=window.wp||{};var inlineEditTax;!function(a,b){inlineEditTax={init:function(){var b=this,c=a("#inline-edit");b.type=a("#the-list").attr("data-wp-lists").substr(5),b.what="#"+b.type+"-",a("#the-list").on("click","a.editinline",function(){return inlineEditTax.edit(this),!1}),c.keyup(function(a){return 27===a.which?inlineEditTax.revert():void 0}),a(".cancel",c).click(function(){return inlineEditTax.revert()}),a(".save",c).click(function(){return inlineEditTax.save(this)}),a("input, select",c).keydown(function(a){return 13===a.which?inlineEditTax.save(this):void 0}),a('#posts-filter input[type="submit"]').mousedown(function(){b.revert()})},toggle:function(b){var c=this;"none"===a(c.what+c.getId(b)).css("display")?c.revert():c.edit(b)},edit:function(b){var c,d,e,f=this;return f.revert(),"object"==typeof b&&(b=f.getId(b)),c=a("#inline-edit").clone(!0),d=a("#inline_"+b),a("td",c).attr("colspan",a("th:visible, td:visible",".widefat:first thead").length),a(f.what+b).hide().after(c).after('<tr class="hidden"></tr>'),e=a(".name",d),e.find("img").replaceWith(function(){return this.alt}),e=e.text(),a(':input[name="name"]',c).val(e),e=a(".slug",d),e.find("img").replaceWith(function(){return this.alt}),e=e.text(),a(':input[name="slug"]',c).val(e),a(c).attr("id","edit-"+b).addClass("inline-editor").show(),a(".ptitle",c).eq(0).focus(),!1},save:function(c){var d,e,f=a('input[name="taxonomy"]').val()||"";return"object"==typeof c&&(c=this.getId(c)),a("table.widefat .spinner").addClass("is-active"),d={action:"inline-save-tax",tax_type:this.type,tax_ID:c,taxonomy:f},e=a("#edit-"+c).find(":input").serialize(),d=e+"&"+a.param(d),a.post(ajaxurl,d,function(d){var e,f,g,h=a("#edit-"+c+" .inline-edit-save .error");a("table.widefat .spinner").removeClass("is-active"),d?-1!==d.indexOf("<tr")?(a(inlineEditTax.what+c).siblings("tr.hidden").addBack().remove(),f=a(d).attr("id"),a("#edit-"+c).before(d).remove(),f?(g=f.replace(inlineEditTax.type+"-",""),e=a("#"+f)):(g=c,e=a(inlineEditTax.what+c)),a("#parent").find("option[value="+g+"]").text(e.find(".row-title").text()),e.hide().fadeIn(400,function(){e.find(".row-title").focus(),b.a11y.speak(inlineEditL10n.saved)})):(h.html(d).show(),b.a11y.speak(h.text())):(h.html(inlineEditL10n.error).show(),b.a11y.speak(inlineEditL10n.error))}),!1},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");b&&(a("table.widefat .spinner").removeClass("is-active"),a("#"+b).siblings("tr.hidden").addBack().remove(),b=b.substr(b.lastIndexOf("-")+1),a(this.what+b).show().find(".row-title").focus())},getId:function(b){var c="TR"===b.tagName?b.id:a(b).parents("tr").attr("id"),d=c.split("-");return d[d.length-1]}},a(document).ready(function(){inlineEditTax.init()})}(jQuery,window.wp);
\ No newline at end of file
if ( !empty( $registered_sidebar['class'] ) )
$wrap_class .= ' ' . $registered_sidebar['class'];
+ $is_inactive_widgets = 'wp_inactive_widgets' == $registered_sidebar['id'];
?>
<div class="<?php echo esc_attr( $wrap_class ); ?>">
<div class="widget-holder inactive">
<?php wp_list_widget_controls( $registered_sidebar['id'], $registered_sidebar['name'] ); ?>
+
+ <?php if ( $is_inactive_widgets ) { ?>
<div class="remove-inactive-widgets">
<form action="" method="post">
<p>
<?php wp_nonce_field( 'remove-inactive-widgets', '_wpnonce_remove_inactive_widgets' ); ?>
</form>
</div>
+ <?php } ?>
</div>
+ <?php if ( $is_inactive_widgets ) { ?>
<p class="description"><?php _e( 'This will clear all items from the inactive widgets list. You will not be able to restore any customizations.' ); ?></p>
+ <?php } ?>
</div>
<?php
#. translators: 1: WP_Term class name, WP_Comment class name, WP_Network class
#. name
-#: wp-admin/about.php:185
+#: wp-admin/about.php:189
msgid "New %1$s, %2$s, and %3$s objects make interacting with terms, comments, and networks more predictable and intuitive in code."
msgstr "Les nouveaux objets %1$s, %2$s et %3$s rendent la gestion par le code des termes, commentaires et réseaux plus prévisible et intuitive."
#. translators: WP_Comment_Query class name
-#: wp-admin/about.php:178
+#: wp-admin/about.php:182
msgid "Comment queries now have cache handling to improve performance. New arguments in %s make crafting robust comment queries simpler."
msgstr "Les requêtes de commentaires disposent désormais d’un gestionnaire de cache pour améliorer les performances. Les nouveaux arguments de %s simplifient la mise en place de requêtes de commentaires robustes."
-#: wp-admin/about.php:182
+#: wp-admin/about.php:186
msgid "Term, comment, and network objects"
msgstr "Objets pour les termes, commentaires et réseaux"
-#: wp-admin/about.php:175
+#: wp-admin/about.php:179
msgid "Comment query improvements"
msgstr "Amélioration des requêtes de commentaires"
#. translators: 1: add_term_meta() docs link, 2: get_term_meta() docs link, 3:
#. update_term_meta() docs link
-#: wp-admin/about.php:167
+#: wp-admin/about.php:171
msgid "Terms now support metadata, just like posts. See %1$s, %2$s, and %3$s for more information."
msgstr "Les termes disposent désormais de métadonnées, tout comme les articles. Lisez la documentation de %1$s, %2$s et %3$s pour plus d'information."
-#: wp-admin/about.php:164
+#: wp-admin/about.php:168
msgid "Term meta"
msgstr "Méta des termes"
#. translators: WordPress REST API plugin link
-#: wp-admin/about.php:156
+#: wp-admin/about.php:160
msgid "Infrastructure is the first part of a multi-stage rollout for the REST API. Inclusion of core endpoints is targeted for an upcoming release. To get a sneak peek of the core endpoints, and for more information on extending the REST API, check out the official %s plugin."
msgstr "L’infrastructure est la première partie d’une mise en place en plusieurs étapes de l’API REST. L’inclusion des points d’accès est prévue pour une prochaine version. Pour avoir un aperçu des principaux points d’accès, et pour obtenir plus d’information sur la manière d’étendre l’API REST, découvrez l’extension officielle %s."
-#: wp-admin/about.php:139
+#: wp-admin/about.php:143
msgid "Infrastructure for the REST API has been integrated into core, marking a new era in developing with WordPress. The REST API serves to provide developers with a path forward for building and extending RESTful APIs on top of WordPress."
msgstr "L’infrastructure de l’API REST a été intégrée au cœur de WordPress, ouvrant ainsi une nouvelle ère pour le développement avec le logiciel. L’API REST a été conçue pour offrir aux développeurs une manière centrale de construire et d’étendre des API RESTful basées sur le socle WordPress."
-#: wp-admin/about.php:126
+#: wp-admin/about.php:130
msgid "In addition to post embeds, WordPress 4.4 also adds support for five new oEmbed providers: Cloudup, Reddit Comments, ReverbNation, Speaker Deck, and VideoPress."
msgstr "En plus de l’insertion de contenu, WordPress 4.4 apporte la reconnaissance de cinq nouveaux fournisseurs oEmbed : Cloudup, Reddit Comments, ReverbNation, Speaker Deck et VideoPress."
-#: wp-admin/about.php:137
+#: wp-admin/about.php:141
msgid "REST API infrastructure"
msgstr "Infrastructure de l’API REST"
-#: wp-admin/about.php:112
+#: wp-admin/about.php:116
msgid "Now you can embed your posts on other sites, even other WordPress sites. Simply drop a post URL into the editor and see an instant embed preview, complete with the title, excerpt, and featured image if you’ve set one. We’ll even include your site icon and links for comments and sharing."
msgstr "Vous pouvez désormais insérer vos articles dans d’autres sites, et même dans d’autres sites WordPress. Collez simplement l’adresse du contenu dans l’éditeur, et une prévisualisation s’affichera instantanément, avec titre, extrait, et l’image de Une si vous avez mise une. Vous y trouverez même l’icône de votre site et les liens pour commenter et partager."
-#: wp-admin/about.php:125
+#: wp-admin/about.php:129
msgid "Even more embed providers"
msgstr "Encore plus de fournisseurs de contenus distants"
-#: wp-admin/about.php:111
+#: wp-admin/about.php:115
msgid "Embed your WordPress content"
msgstr "Intégrez votre contenu WordPress"
-#: wp-admin/about.php:98
+#: wp-admin/about.php:102
msgid "WordPress now takes a smarter approach to displaying appropriate image sizes on any device, ensuring a perfect fit every time. You don’t need to do anything to your theme, it just works."
msgstr "WordPress approche désormais l’affichage des images de manière plus intelligente, utilisant à chaque fois la taille d’image la plus pertinente en fonction de l’appareil utilisé. Vous n’avez rien à changer à votre thème : ça fonctionne, c’est tout."
-#: wp-admin/about.php:97
+#: wp-admin/about.php:101
msgid "Responsive images"
msgstr "Images adaptatives"
-#: wp-admin/about.php:75
+#: wp-admin/about.php:79
msgid "Twenty Sixteen was built to look great on any device. A fluid grid design, flexible header, fun color schemes, and more, will make your content shine."
msgstr "Twenty Sixteen a été conçu pour être superbe sur tous les appareils. Avec son design en grille fluide, son en-tête flexible et ses jeux de couleurs joyeux, il mettra en valeur votre contenu."
-#: wp-admin/about.php:74
+#: wp-admin/about.php:78
msgid "Our newest default theme, Twenty Sixteen, is a modern take on a classic blog design."
msgstr "Notre nouveau thème par défaut, Twenty Sixteen, est une modernisation d’un thème de blog classique."
-#: wp-admin/about.php:67
+#: wp-admin/about.php:71
msgid "Twenty Sixteen"
msgstr "Twenty Sixteen"
msgstr "(Actuellement réglé sur : %s)"
#. translators: %s: WordPress version number
-#: wp-admin/about.php:222
+#: wp-admin/about.php:226
msgid "<strong>Version %s</strong> addressed one security issue."
msgstr "La <strong>version %s</strong> a corrigé un problème de sécurité."
msgid "Profile Picture"
msgstr "Illustration du profil"
-#: wp-admin/about.php:216
+#: wp-admin/about.php:220
msgid "Security Releases"
msgstr "Mises à jour de sécurité"
-#: wp-admin/about.php:213
+#: wp-admin/about.php:217
msgid "Maintenance Releases"
msgstr "Mises à jour de maintenance"
-#: wp-admin/about.php:219
+#: wp-admin/about.php:223
msgid "Maintenance and Security Releases"
msgstr "Mises à jour de maintenance et de sécurité"
msgid "You are not allowed to manage these items."
msgstr "Vous n’êtes pas autorisé à modifier ces éléments."
-#: wp-admin/widgets.php:431
+#: wp-admin/widgets.php:436
msgid "This will clear all items from the inactive widgets list. You will not be able to restore any customizations."
msgstr "Cela supprimera tous les éléments de la liste des widgets désactivés. Vous ne pourrez récupérer aucune personnalisation."
msgid "Users list navigation"
msgstr "Navigation de la liste des utilisateurs"
-#: wp-admin/widgets.php:423
+#: wp-admin/widgets.php:426
msgid "Clear Inactive Widgets"
msgstr "Vider les widgets désactivés"
msgid "Log Out Everywhere"
msgstr "Déconnexion globale"
-#: wp-admin/about.php:73
+#: wp-admin/about.php:77
msgid "Introducing Twenty Sixteen"
msgstr "Présentation de Twenty Sixteen"
msgid "Show next theme"
msgstr "Afficher le thème suivant"
-#: wp-admin/widgets.php:498
+#: wp-admin/widgets.php:504
msgid "Add Widget"
msgstr "Ajouter le widget"
msgstr "Afficher la barre d’outils lorsque vous visitez le site"
#. translators: %s: Codex URL
-#: wp-admin/about.php:55 wp-admin/about.php:239
+#: wp-admin/about.php:55 wp-admin/about.php:59 wp-admin/about.php:243
msgid "For more information, see <a href=\"%s\">the release notes</a>."
msgstr "Pour plus d’informations, consultez les <a href=\"%s\">notes de publication</a>."
#. translators: 1: WordPress version number, 2: plural number of bugs. Singular
#. security issue.
-#: wp-admin/about.php:231
+#: wp-admin/about.php:235
msgid "<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bug."
msgid_plural "<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bugs."
msgstr[0] "La <strong>version %1$s</strong> a corrigé un problème de sécurité et %2$s bug."
#. translators: 1: WordPress version number, 2: plural number of bugs. More
#. than one security issue.
-#: wp-admin/about.php:53 wp-admin/about.php:235
+#: wp-admin/about.php:53 wp-admin/about.php:57 wp-admin/about.php:239
msgid "<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug."
msgid_plural "<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs."
msgstr[0] "La <strong>version %1$s</strong> a corrigé quelques problèmes de sécurité et %2$s bug."
msgstr[1] "La <strong>version %1$s</strong> a corrigé quelques problèmes de sécurité et %2$s bugs."
#. translators: 1: WordPress version number, 2: plural number of bugs.
-#: wp-admin/about.php:227
+#: wp-admin/about.php:231
msgid "<strong>Version %1$s</strong> addressed %2$s bug."
msgid_plural "<strong>Version %1$s</strong> addressed %2$s bugs."
msgstr[0] "La <strong>version %1$s</strong> a corrigé %2$s bug."
msgid "Welcome to your WordPress Dashboard! This is the screen you will see when you log in to your site, and gives you access to all the site management features of WordPress. You can get help for any screen by clicking the Help tab in the upper corner."
msgstr "Bienvenu dans votre tableau de bord WordPress ! Ceci est l’écran que vous verrez lorsque vous vous connectez à votre site, et qui vous donne accès à l’ensemble des fonctionnalités de gestion de WordPress. Vous pouvez obtenir de l’aide dans n’importe quel écran en cliquant sur l’onglet « Aide » présent en haut à droite de votre navigateur."
-#: wp-admin/about.php:212
+#: wp-admin/about.php:216
msgid "Maintenance Release"
msgstr "Mise à jour de maintenance"
-#: wp-admin/about.php:215
+#: wp-admin/about.php:219
msgid "Security Release"
msgstr "Mise à jour de sécurité"
-#: wp-admin/about.php:52 wp-admin/about.php:218
+#: wp-admin/about.php:52 wp-admin/about.php:222
msgid "Maintenance and Security Release"
msgid_plural "Maintenance and Security Releases"
msgstr[0] "Mise à jour de maintenance et de sécurité"
msgstr "Nouveautés"
#. translators: %s: WordPress version number
-#: wp-admin/about.php:224
+#: wp-admin/about.php:228
msgid "<strong>Version %s</strong> addressed some security issues."
msgstr "La <strong>version %s</strong> a corrigé quelques problèmes de sécurité."
msgid "This screen allows you to choose your permalink structure. You can choose from common settings or create custom URL structures."
msgstr "Cet écran vous permet de choisir la structure de permalien par défaut. Vous pouvez choisir les réglages les plus courants, ou créer votre propre structure de liens."
-#: wp-admin/about.php:197
+#: wp-admin/about.php:201
msgid "Return to Updates"
msgstr "Retourner aux mises à jour"
msgid "Welcome to WordPress %s"
msgstr "Bienvenue dans WordPress %s"
-#: wp-admin/about.php:197
+#: wp-admin/about.php:201
msgid "Return to Dashboard → Updates"
msgstr "Retourner aux mises à jour"
-#: wp-admin/about.php:200
+#: wp-admin/about.php:204
msgid "Go to Dashboard → Home"
msgstr "Aller sur l’accueil"
msgid "Core Developers"
msgstr "Développeurs principaux"
-#: wp-admin/about.php:133
+#: wp-admin/about.php:137
msgid "Under the Hood"
msgstr "Sous le capot"
msgstr[0] "Drop-ins <span class=\"count\">(%s)</span>"
msgstr[1] "Drop-ins <span class=\"count\">(%s)</span>"
-#: wp-admin/about.php:200
+#: wp-admin/about.php:204
msgid "Go to Dashboard"
msgstr "Aller sur le tableau de bord"
# This file is distributed under the same license as the Development (4.4.x) package.
msgid ""
msgstr ""
-"PO-Revision-Date: 2015-12-08 17:55:57+0000\n"
+"PO-Revision-Date: 2016-02-11 10:20:56+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Embedded WordPress Post"
msgstr "Inclure un article WordPress"
-#: wp-includes/comment-template.php:2143
+#: wp-includes/comment-template.php:2171
msgid "<a href=\"%1$s\" aria-label=\"Logged in as %2$s. Edit your profile.\">Logged in as %2$s</a>. <a href=\"%3$s\">Log out?</a>"
msgstr "<a href=\"%1$s\" aria-label=\"Connecté en tant que %2$s. Modifiez votre profil.\">Connecté en tant que %2$s</a>. <a href=\"%3$s\">Se déconnecter ?</a>"
msgid "Add new image"
msgstr "Ajouter une nouvelle image"
-#: wp-includes/class-wp-customize-manager.php:1828
+#: wp-includes/class-wp-customize-manager.php:1830
msgid "Site Icon"
msgstr "Icône du site"
msgid "Expand Sidebar"
msgstr "Étendre la colonne latérale"
-#: wp-includes/class-wp-customize-manager.php:1829
+#: wp-includes/class-wp-customize-manager.php:1831
msgid "The Site Icon is used as a browser and app icon for your site. Icons must be square, and at least 512px wide and tall."
msgstr "L’icône du site est utilisée pour représenter votre site en tant qu’icône de navigateur (favicon) et icône d’application. Les icônes doivent être au format carré, et mesurer au moins 512px en largeur comme en hauteur. "
-#: wp-includes/class-wp-customize-manager.php:1795
+#: wp-includes/class-wp-customize-manager.php:1797
msgid "Site Identity"
msgstr "Identité du site"
msgid "Your password reset link has expired. Please request a new link below."
msgstr "Votre lien de réinitialisation de mot de passe semble avoir expiré. Veuillez demander un nouveau lien ci-dessous."
-#: wp-includes/pluggable.php:1780
+#: wp-includes/pluggable.php:1789
msgid "To set your password, visit the following address:"
msgstr "Pour configurer votre mot de passe, rendez-vous à l'adresse suivante :"
msgid "Allow link notifications from other blogs (pingbacks and trackbacks) on new articles"
msgstr "Autoriser les liens de notification d'autres blogs (pings et rétroliens) sur les nouveaux articles"
-#: wp-includes/widgets/class-wp-widget-text.php:107
-msgid "Content:"
-msgstr "Contient :"
-
#: wp-includes/class-wp-editor.php:1051
msgid "Ctrl + letter:"
msgstr "Ctrl + lettre :"
msgid "Additional shortcuts,"
msgstr "Raccourcis supplémentaires,"
+#: wp-includes/widgets/class-wp-widget-text.php:107
+msgid "Content:"
+msgstr "Contenu :"
+
#: wp-includes/class-wp-customize-section.php:236
#: wp-includes/customize/class-wp-customize-themes-section.php:55
msgid "Customizing"
msgstr "j F Y à G \\h i \\m\\i\\n"
#. translators: 1: website name, 2: website IP, 3: website hostname
-#: wp-includes/pluggable.php:1466 wp-includes/pluggable.php:1476
-#: wp-includes/pluggable.php:1619 wp-includes/pluggable.php:1627
+#: wp-includes/pluggable.php:1475 wp-includes/pluggable.php:1485
+#: wp-includes/pluggable.php:1628 wp-includes/pluggable.php:1636
msgid "Website: %1$s (IP: %2$s, %3$s)"
msgstr "Site web : %1$s (IP : %2$s, %3$s)"
#. translators: 1: comment author, 2: author IP, 3: author domain
-#: wp-includes/pluggable.php:1486 wp-includes/pluggable.php:1634
+#: wp-includes/pluggable.php:1495 wp-includes/pluggable.php:1643
msgid "Author: %1$s (IP: %2$s, %3$s)"
msgstr "Auteur : %1$s (IP : %2$s, %3$s)"
msgstr "L'option %1$s est obsolète pour l'ensemble des fonctions %2$s. Utilisez plutôt l'option %3$s."
#. translators: %s: post title
-#: wp-includes/comment-template.php:1468
+#: wp-includes/comment-template.php:1480
msgid "1 Comment<span class=\"screen-reader-text\"> on %s</span>"
msgstr "Un commentaire <span class=\"screen-reader-text\"> sur %s</span>"
#. translators: 1: Number of comments 2: post title
-#: wp-includes/comment-template.php:1473
+#: wp-includes/comment-template.php:1485
msgid "%1$s Comment<span class=\"screen-reader-text\"> on %2$s</span>"
msgid_plural "%1$s Comments<span class=\"screen-reader-text\"> on %2$s</span>"
msgstr[0] "%1$s commentaire <span class=\"screen-reader-text\"> sur %2$s</span>"
msgstr[1] "%1$s commentaires <span class=\"screen-reader-text\"> sur %2$s</span>"
#. translators: %s: post title
-#: wp-includes/comment-template.php:1479
+#: wp-includes/comment-template.php:1491
msgid "Comments Off<span class=\"screen-reader-text\"> on %s</span>"
msgstr "Commentaires fermés<span class=\"screen-reader-text\"> sur %s</span>"
#. translators: %s: post title
-#: wp-includes/comment-template.php:1463
+#: wp-includes/comment-template.php:1475
msgid "No Comments<span class=\"screen-reader-text\"> on %s</span>"
msgstr "Aucun commentaire<span class=\"screen-reader-text\"> sur %s</span>"
msgid "Installed"
msgstr "Installé"
-#: wp-includes/pluggable.php:1479
+#: wp-includes/pluggable.php:1488
msgid "You can see all pingbacks on this post here:"
msgstr "Vous pouvez voir tous les pings de cet article ici : "
-#: wp-includes/pluggable.php:1469
+#: wp-includes/pluggable.php:1478
msgid "You can see all trackbacks on this post here:"
msgstr "Vous pouvez voir tous les rétroliens de cet article ici :"
-#: wp-includes/pluggable.php:1468 wp-includes/pluggable.php:1478
-#: wp-includes/pluggable.php:1489 wp-includes/pluggable.php:1637
+#: wp-includes/pluggable.php:1477 wp-includes/pluggable.php:1487
+#: wp-includes/pluggable.php:1498 wp-includes/pluggable.php:1646
msgid "Comment: %s"
msgstr "Commentaire : %s"
-#: wp-includes/pluggable.php:1490
+#: wp-includes/pluggable.php:1499
msgid "You can see all comments on this post here:"
msgstr "Vous pouvez lire tous les commentaires de cet article ici :"
-#: wp-includes/pluggable.php:1467 wp-includes/pluggable.php:1477
-#: wp-includes/pluggable.php:1488 wp-includes/pluggable.php:1620
-#: wp-includes/pluggable.php:1628 wp-includes/pluggable.php:1636
+#: wp-includes/pluggable.php:1476 wp-includes/pluggable.php:1486
+#: wp-includes/pluggable.php:1497 wp-includes/pluggable.php:1629
+#: wp-includes/pluggable.php:1637 wp-includes/pluggable.php:1645
msgid "URL: %s"
msgstr "Adresse web : %s"
msgid "Do not pass style tags to wp_add_inline_style()."
msgstr "Ne passez pas de balises de style dans wp_add_inline_style()."
-#: wp-includes/comment-template.php:1570
+#: wp-includes/comment-template.php:1582
msgid "Reply to %s"
msgstr "Répondre à %s"
msgid "Hex Value"
msgstr "Valeur hexadécimale"
-#: wp-includes/class-wp-customize-manager.php:1862
+#: wp-includes/class-wp-customize-manager.php:1864
msgid "Header Text Color"
msgstr "Couleur du texte d’en-tête"
-#: wp-includes/class-wp-customize-manager.php:1839
+#: wp-includes/class-wp-customize-manager.php:1841
msgid "Colors"
msgstr "Couleurs"
msgid "Sorry, you cannot stick a private post."
msgstr "Désolé, vous ne pouvez pas mettre en avant un article privé."
-#: wp-includes/class-wp-customize-manager.php:1885
+#: wp-includes/class-wp-customize-manager.php:1887
#: wp-includes/customize/class-wp-customize-header-image-control.php:31
msgid "Header Image"
msgstr "Image d’en-tête"
msgid "Please enter a site title."
msgstr "Veuillez saisir un titre de site."
-#: wp-includes/class-wp-customize-manager.php:2002
+#: wp-includes/class-wp-customize-manager.php:2004
msgid "A static page"
msgstr "Une page statique"
-#: wp-includes/class-wp-customize-manager.php:1877
+#: wp-includes/class-wp-customize-manager.php:1879
msgid "Background Color"
msgstr "Couleur d’arrière-plan"
-#: wp-includes/class-wp-customize-manager.php:1927
+#: wp-includes/class-wp-customize-manager.php:1929
msgid "Background Repeat"
msgstr "Répétition de l’arrière-plan"
-#: wp-includes/class-wp-customize-manager.php:1944
+#: wp-includes/class-wp-customize-manager.php:1946
msgid "Background Position"
msgstr "Position d’arrière-plan"
-#: wp-includes/class-wp-customize-manager.php:1855
+#: wp-includes/class-wp-customize-manager.php:1857
msgid "Display Header Text"
msgstr "Afficher le texte d’en-tête"
-#: wp-includes/class-wp-customize-manager.php:1960
+#: wp-includes/class-wp-customize-manager.php:1962
msgid "Background Attachment"
msgstr "Image d’arrière-plan"
-#: wp-includes/class-wp-customize-manager.php:1905
+#: wp-includes/class-wp-customize-manager.php:1907
#: wp-includes/customize/class-wp-customize-background-image-control.php:30
msgid "Background Image"
msgstr "Image d’arrière-plan"
msgid "Sorry, you are not allowed to edit this post type."
msgstr "Désolé, vous n’avez pas l’autorisation de modifier ce type de contenu."
-#: wp-includes/class-wp-customize-manager.php:1931
+#: wp-includes/class-wp-customize-manager.php:1933
msgid "No Repeat"
msgstr "Pas de répétition"
-#: wp-includes/class-wp-customize-manager.php:1932
+#: wp-includes/class-wp-customize-manager.php:1934
msgid "Tile"
msgstr "Motif répété"
-#: wp-includes/class-wp-customize-manager.php:1933
+#: wp-includes/class-wp-customize-manager.php:1935
msgid "Tile Horizontally"
msgstr "Répétition horizontale"
-#: wp-includes/class-wp-customize-manager.php:1934
+#: wp-includes/class-wp-customize-manager.php:1936
msgid "Tile Vertically"
msgstr "Répétition verticale"
-#: wp-includes/class-wp-customize-manager.php:1965
+#: wp-includes/class-wp-customize-manager.php:1967
msgid "Fixed"
msgstr "Fixe"
-#: wp-includes/class-wp-customize-manager.php:1964
+#: wp-includes/class-wp-customize-manager.php:1966
msgid "Scroll"
msgstr "Défilant"
-#: wp-includes/class-wp-customize-manager.php:2013
+#: wp-includes/class-wp-customize-manager.php:2015
msgid "Front page"
msgstr "Page d’accueil"
-#: wp-includes/class-wp-customize-manager.php:2025
+#: wp-includes/class-wp-customize-manager.php:2027
msgid "Posts page"
msgstr "Page des articles"
msgid "— Select —"
msgstr "— Sélectionner —"
-#: wp-includes/class-wp-customize-manager.php:1983
+#: wp-includes/class-wp-customize-manager.php:1985
msgid "Static Front Page"
msgstr "Page d’accueil statique"
-#: wp-includes/class-wp-customize-manager.php:1986
+#: wp-includes/class-wp-customize-manager.php:1988
msgid "Your theme supports a static front page."
msgstr "Le thème actuel accepte les pages statiques."
-#: wp-includes/class-wp-customize-manager.php:1997
+#: wp-includes/class-wp-customize-manager.php:1999
msgid "Front page displays"
msgstr "La page d’accueil affiche"
-#: wp-includes/class-wp-customize-manager.php:2001
+#: wp-includes/class-wp-customize-manager.php:2003
msgid "Your latest posts"
msgstr "Les derniers articles"
-#: wp-includes/class-wp-customize-manager.php:1817
+#: wp-includes/class-wp-customize-manager.php:1819
msgid "Tagline"
msgstr "Slogan"
msgid "Sorry, you cannot publish this post."
msgstr "Désolé, vous ne pouvez pas publier cet article."
-#: wp-includes/pluggable.php:1496
+#: wp-includes/pluggable.php:1505
msgid "Permalink: %s"
msgstr "Permalien : %s"
msgstr "Aucune page trouvée."
#: wp-includes/post.php:1369
-msgid "No posts found in Trash."
-msgstr "Aucun article trouvé dans la corbeille."
+msgid "No pages found in Trash."
+msgstr "Aucune page trouvée dans la Corbeille."
#: wp-includes/post.php:1369
-msgid "No pages found in Trash."
-msgstr "Aucune page trouvée dans la corbeille."
+msgid "No posts found in Trash."
+msgstr "Aucun article trouvé dans la Corbeille."
#: wp-includes/admin-bar.php:530
msgid "Shortlink"
msgid "Invalid taxonomy: %s."
msgstr "Taxinomie non valide : %s"
-#: wp-includes/query.php:2549
+#: wp-includes/query.php:2552
msgid "\"caller_get_posts\" is deprecated. Use \"ignore_sticky_posts\" instead."
msgstr "« caller_get_posts » n’est plus recommandé. Utilisez « ignore_sticky_posts » à la place."
msgid "<strong>ERROR</strong>: This username is invalid because it uses illegal characters. Please enter a valid username."
msgstr "<strong>ERREUR</strong> : cet identifiant n’est pas valide, car il utilise des caractères non autorisés. Merci d’utiliser un identifiant valide."
-#: wp-includes/comment-template.php:2127
+#: wp-includes/comment-template.php:2155
msgid "Required fields are marked %s"
msgstr "Les champs obligatoires sont indiqués avec %s"
msgid "New %1$s Site: %2$s"
msgstr "Nouveau site %1$s : %2$s"
-#: wp-includes/pluggable.php:1754
+#: wp-includes/pluggable.php:1763
msgid "New user registration on your site %s:"
msgstr "Inscription d'un nouvel utilisateur sur votre site %s :"
msgid "This file is too big. Files must be less than %d KB in size."
msgstr "Ce fichier est trop gros. La taille des fichiers doit être inférieure %d Ko."
-#: wp-includes/comment-template.php:2144
+#: wp-includes/comment-template.php:2172
msgid "Your email address will not be published."
msgstr "Votre adresse de messagerie ne sera pas publiée."
msgid "Site registration has been disabled."
msgstr "Les inscriptions de sites sont désactivées."
-#: wp-includes/pluggable.php:1616
+#: wp-includes/pluggable.php:1625
msgid "A new trackback on the post \"%s\" is waiting for your approval"
msgstr "Un nouveau rétrolien sur l'article « %s » attend votre approbation"
msgid "If you’re not going to use a great site domain, leave it for a new user. Now have at it!"
msgstr "Si vous ne comptez pas utiliser ce superbe nom de domaine, laissez-le à un autre utilisateur. Et maintenant, lancez-vous !"
-#: wp-includes/pluggable.php:1484
+#: wp-includes/pluggable.php:1493
msgid "New comment on your post \"%s\""
msgstr "Nouveau commentaire sur votre article « %s »"
-#: wp-includes/pluggable.php:1464
+#: wp-includes/pluggable.php:1473
msgid "New trackback on your post \"%s\""
msgstr "Nouveau rétrolien sur votre article « %s »"
-#: wp-includes/pluggable.php:1474
+#: wp-includes/pluggable.php:1483
msgid "New pingback on your post \"%s\""
msgstr "Nouveau ping sur votre article « %s »"
-#: wp-includes/pluggable.php:1624
+#: wp-includes/pluggable.php:1633
msgid "A new pingback on the post \"%s\" is waiting for your approval"
msgstr "Un nouveau ping sur l'article « %s » attend votre approbation"
-#: wp-includes/pluggable.php:1632
+#: wp-includes/pluggable.php:1641
msgid "A new comment on the post \"%s\" is waiting for your approval"
msgstr "Un nouveau commentaire sur l'article « %s » attend votre approbation"
msgid "Too many redirects."
msgstr "Trop de redirections."
-#: wp-includes/comment-template.php:2157
+#: wp-includes/comment-template.php:2185
msgid "Cancel reply"
msgstr "Annuler la réponse."
-#: wp-includes/comment-template.php:2158
+#: wp-includes/comment-template.php:2186
msgid "Post Comment"
msgstr "Laisser un commentaire"
msgid "<strong>ERROR</strong>: Invalid username or incorrect password."
msgstr "<strong>ERREUR</strong> : l’identifiant ou le mot de passe n’est pas valide."
-#: wp-includes/pluggable.php:1502 wp-includes/pluggable.php:1645
+#: wp-includes/pluggable.php:1511 wp-includes/pluggable.php:1654
msgid "Delete it: %s"
msgstr "Le supprimer : %s"
-#: wp-includes/pluggable.php:1504 wp-includes/pluggable.php:1646
+#: wp-includes/pluggable.php:1513 wp-includes/pluggable.php:1655
msgid "Spam it: %s"
msgstr "Le marquer comme indésirable : %s"
-#: wp-includes/pluggable.php:1621
+#: wp-includes/pluggable.php:1630
msgid "Trackback excerpt: "
msgstr "Extrait du rétrolien :"
-#: wp-includes/pluggable.php:1629
+#: wp-includes/pluggable.php:1638
msgid "Pingback excerpt: "
msgstr "Extrait du ping :"
-#: wp-includes/pluggable.php:1641
+#: wp-includes/pluggable.php:1650
msgid "Approve it: %s"
msgstr "L'approuver : %s"
-#: wp-includes/pluggable.php:1648
+#: wp-includes/pluggable.php:1657
msgid "Currently %s comment is waiting for approval. Please visit the moderation panel:"
msgid_plural "Currently %s comments are waiting for approval. Please visit the moderation panel:"
msgstr[0] "En ce moment, %s commentaire attend votre approbation. Veuillez vous rendre sur le panneau de modération :"
msgstr[1] "En ce moment, %s commentaires attendent vos approbations. Veuillez vous rendre sur le panneau de modération :"
-#: wp-includes/pluggable.php:1715
+#: wp-includes/pluggable.php:1724
msgid "Password Lost and Changed for user: %s"
msgstr "Mot de passe oublié et changé pour l'utilisateur : %s"
-#: wp-includes/pluggable.php:1719
+#: wp-includes/pluggable.php:1728
msgid "[%s] Password Lost/Changed"
msgstr "[%s] Mot de passe oublié et changé"
-#: wp-includes/pluggable.php:1755 wp-includes/pluggable.php:1779
+#: wp-includes/pluggable.php:1764 wp-includes/pluggable.php:1788
#: wp-login.php:324
msgid "Username: %s"
msgstr "Identifiant : %s"
-#: wp-includes/pluggable.php:1758
+#: wp-includes/pluggable.php:1767
msgid "[%s] New User Registration"
msgstr "[%s] Inscription d'un nouvel utilisateur"
msgstr "Désolé, cet identifiant existe déjà !"
#. translators: 1: blog name, 2: post title
-#: wp-includes/pluggable.php:1481
+#: wp-includes/pluggable.php:1490
msgid "[%1$s] Pingback: \"%2$s\""
msgstr "[%1$s] Ping : « %2$s »"
-#: wp-includes/pluggable.php:1652
+#: wp-includes/pluggable.php:1661
msgid "[%1$s] Please moderate: \"%2$s\""
msgstr "[%1$s] Demande de modération pour « %2$s »"
msgid "%1$s was called with an argument that is <strong>deprecated</strong> since version %2$s with no alternative available."
msgstr "%1$s est appelé avec un argument qui est <strong>déprécié</strong> depuis la version %2$s, aucune alternative n’est disponible."
-#: wp-includes/pluggable.php:1500 wp-includes/pluggable.php:1643
+#: wp-includes/pluggable.php:1509 wp-includes/pluggable.php:1652
msgid "Trash it: %s"
msgstr "Le mettre dans la Corbeille : %s"
msgid "By: %s"
msgstr "Par : %s"
-#: wp-includes/pluggable.php:1785
+#: wp-includes/pluggable.php:1794
msgid "[%s] Your username and password info"
msgstr "[%s] Votre identifiant et votre mot de passe"
msgstr "vendredi"
#. translators: 1: blog name, 2: post title
-#: wp-includes/pluggable.php:1471
+#: wp-includes/pluggable.php:1480
msgid "[%1$s] Trackback: \"%2$s\""
msgstr "[%1$s] Rétrolien : « %2$s »"
#. translators: 1: blog name, 2: post title
-#: wp-includes/pluggable.php:1492
+#: wp-includes/pluggable.php:1501
msgid "[%1$s] Comment: \"%2$s\""
msgstr "[%1$s] Commentaire : « %2$s »"
msgid "First Post"
msgstr "Premier article"
-#: wp-includes/class-wp-customize-manager.php:1806
+#: wp-includes/class-wp-customize-manager.php:1808
#: wp-includes/class-wp-xmlrpc-server.php:467
msgid "Site Title"
msgstr "Titre du site"
msgid "(required)"
msgstr "(obligatoire)"
-#: wp-includes/comment-template.php:2123
+#: wp-includes/comment-template.php:2151
#: wp-includes/theme-compat/comments.php:102
msgid "Website"
msgstr "Site web"
msgid "Powered by WordPress, state-of-the-art semantic personal publishing platform."
msgstr "Propulsé par WordPress, plate-forme de publication personnelle sémantique de pointe."
-#: wp-includes/comment-template.php:1488
+#: wp-includes/comment-template.php:1500
msgid "Enter your password to view comments."
msgstr "Saisissez votre mot de passe pour accéder aux commentaires."
msgid "Feed for all posts filed under %s"
msgstr "Flux pour tous les articles classés dans %s"
-#: wp-includes/comment-template.php:1571
+#: wp-includes/comment-template.php:1583
msgid "Log in to Reply"
msgstr "Connectez-vous pour répondre"
-#: wp-includes/comment-template.php:1682
+#: wp-includes/comment-template.php:1694
msgid "Leave a Comment"
msgstr "Laisser un commentaire"
-#: wp-includes/comment-template.php:1683
+#: wp-includes/comment-template.php:1695
msgid "Log in to leave a Comment"
msgstr "Connectez-vous pour laisser un commentaire"
-#: wp-includes/comment-template.php:1838 wp-includes/comment-template.php:2151
+#: wp-includes/comment-template.php:1850 wp-includes/comment-template.php:2179
#: wp-includes/theme-compat/comments.php:75
msgid "Leave a Reply"
msgstr "Laisser un commentaire"
-#: wp-includes/comment-template.php:1839 wp-includes/comment-template.php:2152
+#: wp-includes/comment-template.php:1851 wp-includes/comment-template.php:2180
#: wp-includes/theme-compat/comments.php:75
msgid "Leave a Reply to %s"
msgstr "Répondre à %s"
msgid "Valid <abbr title=\"eXtensible HyperText Markup Language\">XHTML</abbr>"
msgstr "<abbr title=\"eXtensible HyperText Markup Language\">XHTML</abbr> valide"
-#: wp-includes/comment-template.php:1751
+#: wp-includes/comment-template.php:1763
msgid "Click here to cancel reply."
msgstr "Cliquez ici pour annuler la réponse."
msgid "<strong>ERROR</strong>: Please enter a username."
msgstr "<strong>ERREUR</strong> : veuillez renseigner l’identifiant."
-#: wp-includes/comment-template.php:2121
+#: wp-includes/comment-template.php:2149
#: wp-includes/theme-compat/comments-popup.php:81 wp-login.php:720
msgid "Email"
msgstr "Adresse de contact"
msgid "Tags: "
msgstr "Étiquettes : "
-#: wp-includes/comment-template.php:2141
+#: wp-includes/comment-template.php:2169
#: wp-includes/theme-compat/comments.php:82
msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
msgstr "Vous devez <a href=\"%s\">être connecté(e)</a> pour rédiger un commentaire."
msgid "URL"
msgstr "Adresse web"
-#: wp-includes/comment-template.php:1041 wp-includes/comment-template.php:2139
+#: wp-includes/comment-template.php:1041 wp-includes/comment-template.php:2167
msgctxt "noun"
msgid "Comment"
msgstr "Commentaire"
msgid "No"
msgstr "Non"
-#: wp-includes/class-wp-customize-manager.php:1948
+#: wp-includes/class-wp-customize-manager.php:1950
#: wp-includes/class-wp-editor.php:988 wp-includes/media-template.php:613
#: wp-includes/media-template.php:844 wp-includes/media-template.php:910
msgid "Left"
msgstr "Gauche"
-#: wp-includes/class-wp-customize-manager.php:1949
+#: wp-includes/class-wp-customize-manager.php:1951
#: wp-includes/class-wp-editor.php:989 wp-includes/media-template.php:616
#: wp-includes/media-template.php:847 wp-includes/media-template.php:913
msgid "Center"
msgstr "Centre"
-#: wp-includes/class-wp-customize-manager.php:1950
+#: wp-includes/class-wp-customize-manager.php:1952
#: wp-includes/class-wp-editor.php:990 wp-includes/media-template.php:619
#: wp-includes/media-template.php:850 wp-includes/media-template.php:916
msgid "Right"
msgid "Advanced"
msgstr "Avancé"
-#: wp-includes/comment-template.php:2119
+#: wp-includes/comment-template.php:2147
#: wp-includes/theme-compat/comments-popup.php:76
#: wp-includes/theme-compat/comments.php:96
msgid "Name"
msgid "No comments yet."
msgstr "Pas encore de commentaire."
-#: wp-includes/comment-template.php:1569 wp-includes/script-loader.php:488
+#: wp-includes/comment-template.php:1581 wp-includes/script-loader.php:488
msgid "Reply"
msgstr "Répondre"
msgid "Dismiss"
msgstr "Fermer"
-#: wp-includes/pluggable.php:1487 wp-includes/pluggable.php:1635
-#: wp-includes/pluggable.php:1756
+#: wp-includes/pluggable.php:1496 wp-includes/pluggable.php:1644
+#: wp-includes/pluggable.php:1765
msgid "Email: %s"
msgstr "E-mail : %s"
# This file is distributed under the same license as the Stable (latest release) package.
msgid ""
msgstr ""
-"PO-Revision-Date: 2015-11-19 09:23:43+0000\n"
+"PO-Revision-Date: 2016-02-19 15:30:23+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: GlotPress/1.0-alpha-1100\n"
"Project-Id-Version: Stable (latest release)\n"
+#. translators: %1$s expands to OnPage.org
+#: admin/pages/dashboard.php:251
+msgid "Enable %1$s indexability check"
+msgstr "Activer la vérification d’indexabilité de %1$s"
+
#. translators: 1: opens a link to a related knowledge base article. 2: closes
#. the link
#: admin/views/dashboard-widget.php:83
msgid "Yoast SEO has %1$snot fetched your site’s indexability status%2$s yet from OnPage.org"
-msgstr "Yoast SEO n'a pas encore pu %1$srécupérer l'état d'indexibilité de votre site%2$s sur OnPage.org."
-
-#: admin/views/dashboard-widget.php:58
-msgid "Your homepage can be indexed by search engines."
-msgstr "Votre page d’accueil peut être indexée par les moteurs de recherche."
+msgstr "Yoast SEO %1$sn’a pas encore récupéré l’état d’indexabilité de votre site%2$s depuis OnPage.org"
#. translators: %s$s expands to the taxonomy name and %2$s to the current index
#. value
msgid "If you want to use an image for sharing on %1$s, you can upload / choose an image or add the image URL here."
msgstr "Si vous souhaitez utiliser une image pour partager sur %1$s, vous pouvez télécharger / choisir une image ou ajouter son url ici."
-#. translators: %1$s expands to the social network name
-#: admin/taxonomy/class-taxonomy-social-fields.php:54
-msgid "If you don't want to use the meta description for sharing on %1$s but want another description there, write it here."
-msgstr "Si vous ne voulez pas utiliser la méta description pour le partage de l'article sur %1$s, mais plutôt une autre description, écrivez-la ici."
-
#. translators: %1$s expands to the social network name
#: admin/taxonomy/class-taxonomy-social-fields.php:46
msgid "If you don't want to use the title for sharing on %1$s but instead want another title there, write it here."
msgid "Strip the category base (usually %s) from the category URL."
msgstr "Retire la base de la catégorie (généralement %s) de l’URL de la catégorie."
-#: admin/views/dashboard-widget.php:93
-msgid "Fetch the current status"
-msgstr "Récupérer le statut actuel"
-
#: inc/class-wpseo-rank.php:102
msgid "No index"
msgstr "No index"
msgid "The separator defined in your theme's %s tag."
msgstr "Le séparateur défini dans la balise %s de votre thème."
-#. translators: 1: expands to OnPage.org
-#: admin/views/dashboard-widget.php:45
-msgid "Indexability check by %1$s"
-msgstr "Indexibilité vérifiée par %1$s"
-
#. translators: %1$s expands to the taxonomy name
#: admin/taxonomy/class-taxonomy-settings-fields.php:65
msgid "Include %1$s in sitemap?"
#. the link
#: admin/views/dashboard-widget.php:74
msgid "Yoast SEO has %1$snot been able to fetch your site’s indexability status%2$s from OnPage.org"
-msgstr "Yoast SEO %1$sn'a pas pu récupérer l'état de l'indexibilité de votre site%2$s depuis onPage.org."
+msgstr "Yoast SEO %1$sn’a pas pu récupérer l’état d’indexibilité de votre site%2$s depuis onPage.org."
-#: admin/onpage/class-onpage.php:54
-msgid "Once Weekly"
-msgstr "Une fois par semaine"
+#. translators: 1: expands to OnPage.org
+#: admin/views/dashboard-widget.php:45
+msgid "Indexability check by %1$s"
+msgstr "Indexibilité vérifiée par %1$s"
-#. translators: 1: expands to get_option( 'home' ).
-#: admin/onpage/class-onpage-email-presenter.php:103
-msgid "Yoast SEO has detected that %1$s can be indexed."
-msgstr "Yoast SEO a détecté que %1$s peut être indexé."
+#: admin/views/dashboard-widget.php:58
+msgid "Your homepage can be indexed by search engines."
+msgstr "Votre page d’accueil peut être indexée par les moteurs de recherche."
-#. translators: 1: expands to get_option( 'home' ).
-#: admin/onpage/class-onpage-email-presenter.php:79
-msgid "Yoast SEO has detected that %1$s can be indexed again."
-msgstr "Yoast SEO a détecté que %1$s peut à nouveau être indexé."
+#: admin/views/dashboard-widget.php:93
+msgid "Fetch the current status"
+msgstr "Récupérer l’état actuel"
-#. translators: 1: expands to get_option( 'home' ). 2: opens a link to a
-#. related knowledge base article. 3: closes the link
-#: admin/onpage/class-onpage-email-presenter.php:72
-msgid "Yoast SEO has detected that %1$s can no longer be indexed. Please note that this will make it impossible for search engines like Google and Bing to index your site. %2$sRead more about this error on our knowledge base%3$s."
-msgstr "Yoast SEO a détecté que %1$s ne pouvait plus être indexé. Veuillez noter qd’il sera impossible pour les moteurs de recherche comme Google et Bing d'indexer votre site. %2$sEn savoir plus sur cette erreur dans notre base de connaissances%3$s."
+#. translators: %1$s expands to the social network name
+#: admin/taxonomy/class-taxonomy-social-fields.php:54
+msgid "If you don't want to use the meta description for sharing on %1$s but want another description there, write it here."
+msgstr "Si vous ne voulez pas utiliser la méta description pour le partage de l’article sur %1$s, mais plutôt une autre description, écrivez-la ici."
-#. translators: 1: expands to get_option( 'home' ). 2: opens a link to a
-#. related knowledge base article. 3: closes the link
-#: admin/onpage/class-onpage-email-presenter.php:96
-msgid "Yoast SEO has detected that %1$s can not be indexed. Please note that this will make it impossible for search engines like Google and Bing to index your site. %2$sRead more about this error on our knowledge base%3$s."
-msgstr "Yoast SEO a détecté que %1$s ne peut pas être indexé. Veuillez noter qu'il sera impossible pour les moteurs de recherche comme Google ou Bing d'indexer votre site. %2$sLire plus au sujet de cette erreur dans notre base de connaissances%3$s."
+#: admin/onpage/class-onpage.php:56
+msgid "Once Weekly"
+msgstr "Une fois par semaine"
#: admin/pages/tools.php:43
msgid "Recalculate SEO scores for all pieces of content with a focus keyword."
msgid "Facebook / Opengraph metadata"
msgstr "métadonnées Facebook / Opengraph"
-#. translators: 1: opens a link to yoast.com. 2: closes the link 3: opens a
-#. link to onpage.org
-#: admin/onpage/class-onpage-email-presenter.php:54
-msgid "Indexing powered by %1$sYoast%2$s and %3$sOnPage.org%2$s."
-msgstr "Indexation propulsée par %1$sYoast%2$s et %3$sOnPage.org%2$s."
-
-#. translators: 1: expands to get_option( 'home' ).
-#: admin/onpage/class-onpage-email-presenter.php:147
-msgid "Yoast SEO alert fixed: Search engines can index %1$s."
-msgstr "Fin d'alerte Yoast SEO : les moteurs de recherche peuvent indexer %1$s."
-
-#. translators: 1: expands to get_option( 'home' ).
-#: admin/onpage/class-onpage-email-presenter.php:125
-msgid "Yoast SEO alert fixed: Search engines can index %1$s again."
-msgstr "Fin d'alerte Yoast SEO : les moteurs de recherche peuvent à nouveau indexer %1$s."
-
-#. translators: 1: expands to get_option( 'home' ).
-#: admin/onpage/class-onpage-email-presenter.php:120
-msgid "Yoast SEO alert: Search engines can no longer index %1$s!"
-msgstr "Alerte Yoast SEO : les moteurs de recherche ne peuvent plus indexer %1$s !"
-
-#. translators: 1: expands to get_option( 'home' ).
-#: admin/onpage/class-onpage-email-presenter.php:142
-msgid "Yoast SEO alert: Search engines cannot index %1$s!"
-msgstr "Alerte Yoast SEO : les moteurs de recherche ne peuvent pas indexer %1$s !"
-
-#: admin/metabox/class-metabox.php:447 admin/metabox/class-metabox.php:448
+#: admin/metabox/class-metabox.php:448 admin/metabox/class-metabox.php:449
msgid "Add-ons"
msgstr "Add-ons"
#. translators: 1: opens a link to a related knowledge base article. 2: closes
#. the link
-#: admin/onpage/class-onpage.php:97 admin/views/dashboard-widget.php:65
+#: admin/onpage/class-onpage.php:99 admin/views/dashboard-widget.php:65
msgid "%1$sYour homepage cannot be indexed by search engines%2$s. This is very bad for SEO and should be fixed."
-msgstr "%1$sVotre page d'accueil ne peut pas être indexée par les moteurs de recherche%2$s. C'est très mauvais pour le SEO et doit être résolu."
+msgstr "%1$sVotre page d’accueil ne peut pas être indexée par les moteurs de recherche%2$s. C’est très mauvais pour le SEO et doit être résolu."
-#: admin/metabox/class-metabox.php:387 admin/metabox/class-metabox.php:390
-#: admin/metabox/class-metabox.php:401 admin/metabox/class-metabox.php:402
+#: admin/metabox/class-metabox.php:388 admin/metabox/class-metabox.php:391
+#: admin/metabox/class-metabox.php:402 admin/metabox/class-metabox.php:403
#: admin/taxonomy/class-taxonomy-metabox.php:99
#: admin/taxonomy/class-taxonomy-metabox.php:102
#: admin/taxonomy/class-taxonomy-metabox.php:111
msgid "SEO score"
msgstr "Score SEO"
-#: admin/class-recalculate-scores.php:46
-msgid "Recalculating SEO scores for all pieces of content with a focus keyword."
-msgstr "Recalcule des scores SEO pour tous les contenus avec un mot-clé."
-
#. Translators: %1$s: expands to 'Yoast SEO Premium', %2$s: links to Yoast SEO
#. Premium plugin page.
#: admin/metabox/class-metabox-add-keyword-tab.php:34
#. translators: 1: is a link to 'admin_url /
#. admin.php?page=wpseo_tools&recalculate=1' 2: closing link tag
-#: admin/class-admin-init.php:186
+#: admin/class-admin-init.php:191
msgid "We've updated our SEO score algorithm. %1$sClick here to recalculate the SEO scores%2$s for all posts and pages."
msgstr "Nous avons mis à jour l’algorithme de calcul de nos scores SEO. %1$sCliquez ici pour les recalculer%2$s pour l’ensemble de vos articles et pages."
msgid "Snippet Editor"
msgstr "Éditeur de snippet"
-#: admin/metabox/class-metabox.php:54
-#: admin/taxonomy/class-taxonomy-content-fields.php:29
-msgid "This is the content analysis, a collection of content checks that analyze the content of your page. Read %sthis post%s for more info."
-msgstr "Ceci est l’analyse du contenu, un ensemble de vérifications sur celui-ci pour analyser son contenu. Référez-vous à %scet article%s pour plus d'informations."
-
#: admin/metabox/class-metabox.php:53
#: admin/taxonomy/class-taxonomy-content-fields.php:28
msgid "Content Analysis"
msgid "Buy %s »"
msgstr "Achetez %s »"
-#: admin/class-admin-init.php:372
+#: admin/class-admin-init.php:377
msgid "%s filter/action"
msgstr "%s filtre/action"
msgid "%1$s of %2$s done."
msgstr "%1$s de %2$s effectué."
-#: inc/options/class-wpseo-option-xml.php:166
-msgid "\"Max entries per sitemap page\" should be a positive number, which %s is not. Please correct."
-msgstr "\"Entrées maximum par page du sitemap\" doit être un nombre positif, %s ne l'est pas. Veuillez corriger."
+#: admin/class-recalculate-scores.php:46
+msgid "Recalculating SEO scores for all pieces of content with a focus keyword."
+msgstr "Recalcule en cours des scores SEO pour tous les contenus avec un mot-clé."
-#. translators: %1$s expands to the option name and %2$sexpands to Yoast SEO
-#: inc/options/class-wpseo-option-ms.php:153
-msgid "%1$s is not a valid choice for who should be allowed access to the %2$s settings. Value reset to the default."
-msgstr "%1$s n'est pas un choix valide pour ceux qui devraient être autorisés d'accéder aux réglages de %2$s. La valeur par défaut a été remise."
+#: admin/metabox/class-metabox.php:54
+#: admin/taxonomy/class-taxonomy-content-fields.php:29
+msgid "This is the content analysis, a collection of content checks that analyze the content of your page. Read %sthis post%s for more info."
+msgstr "Ceci est l’analyse du contenu, un ensemble de vérifications sur celui-ci pour analyser son contenu. Référez-vous à %scet article%s pour plus d’informations."
#: inc/options/class-wpseo-option-titles.php:212
msgid "%s Archive"
msgid "%s failed to check for updates because of the following error: <em>%s</em>"
msgstr "Erreur de mise à jour pour %s en raison des erreurs suivantes:<em>%s</em>"
-#: vendor/yoast/license-manager/class-plugin-license-manager.php:75
-msgid "%s is network activated, please contact your site administrator to manage the license."
-msgstr "%s nécessite une activation réseau, veuillez contacter l'administrateur de votre site pour gérer la licence."
-
-#: vendor/yoast/license-manager/class-plugin-license-manager.php:73
-msgid "%s is network activated, you can manage your license in the <a href=\"%s\">network admin license page</a>."
-msgstr "%s est activé sur tout le réseau, vous pouvez gérer votre licence sur la <a href=\"%s\">Page du réseau d'administration des licences</a>."
-
-#: inc/options/class-wpseo-option-titles.php:178
-msgid "%s, Author at %s"
-msgstr "%s, Auteur à %s"
-
#: vendor/yoast/license-manager/class-license-manager.php:430
msgid "%s: License Settings"
msgstr "%s : Réglages de la licence"
msgid "%sRenew your license now%s."
msgstr "%sRenouveler votre licence maintenant%s."
-#: vendor/yoast/license-manager/views/form.php:46
-msgid "(deactivate your license so you can activate it on another WordPress site)"
-msgstr "(désactivez votre licence pour pouvoir l'activer sur un autre site WordPress)"
-
#: vendor/yoast/license-manager/class-license-manager.php:190
msgid "<a href=\"%s\">Did you know you can upgrade your license?</a>"
msgstr "<a href=\"%s\">Saviez-vous que vous pouvez mettre à jour votre licence ?</a>"
msgid "<a href=\"%s\">Your license is expiring in %d days, would you like to extend it?</a>"
msgstr "<a href=\"%s\">Votre licence expire dans %d jours, voulez vous une extension pour votre licence ?</a>"
-#: vendor/yoast/license-manager/class-license-manager.php:138
-msgid "<b>Warning!</b> You're blocking external requests which means you won't be able to get %s updates. Please add %s to %s."
-msgstr "<b>Attention !</b> Vous bloquez des requêtes externes, ce qui signifie que vous ne serez pas en mesure d'obtenir les mises à jour de %s. Merci d'ajouter %s à %s."
-
#: vendor/yoast/license-manager/class-theme-update-manager.php:101
msgid "<strong>%s version %s</strong> is available. <a href=\"%s\" class=\"thickbox\" title=\"%s\">Check out what's new</a> or <a href=\"%s\" %s>update now</a>."
msgstr "<strong>%s la version de %s</strong> est disponible. <a href=\"%s\" class=\"thickbox\" title=\"%s\"> Découvrez les nouveautés </a> ou <a href=\"%s\" %s> mettez à jour maintenant </a>."
msgid "Activate License"
msgstr "Activer la licence"
-#: wp-seo-main.php:439
-msgid "Activation failed:"
-msgstr "Échec de l'activation :"
-
#: inc/wpseo-non-ajax-functions.php:269
msgid "AdWords External"
msgstr "AdWords External"
msgid "Facebook Debugger"
msgstr "Facebook Debugger"
-#: vendor/yoast/license-manager/class-license-manager.php:209
-msgid "Failed to activate your license, your license key seems to be invalid."
-msgstr "Impossible d'activer votre licence, votre clé de licence semble invalide."
-
#: vendor/yoast/license-manager/class-license-manager.php:235
msgid "Failed to deactivate your %s license."
msgstr "Impossible de désactiver votre licence %s."
msgid "Pinterest Rich Pins Validator"
msgstr "Validateur de Rich Pins Pinterest"
-#: vendor/yoast/license-manager/views/form.php:52
-msgid "Please enter a license key in the field below first."
-msgstr "Veuillez d'abord saisir une clé de licence dans le champ ci-dessous."
-
-#: inc/options/class-wpseo-option-internallinks.php:204
-msgid "Please select a valid post type for taxonomy \"%s\""
-msgstr "Veuillez choisir un type de contenu valide pour la taxonomie \"%s\""
-
-#: inc/options/class-wpseo-option-internallinks.php:165
-msgid "Please select a valid taxonomy for post type \"%s\""
-msgstr "Veuillez choisir une taxonomie valide pour le type de contenu \"%s\""
-
-#: vendor/yoast/i18n-module/i18n-module.php:199
-msgid "Register now »"
-msgstr "S'enregistrer maintenant »"
-
#: vendor/yoast/license-manager/class-license-manager.php:271
msgid "Request error: \"%s\" (%scommon license notices%s)"
msgstr "Erreur dans la requête :\"%s\" (%scommon notices%s de licence)"
msgid "Summary with large image"
msgstr "Résumé avec grande image"
-#. Author of the plugin/theme
-msgid "Team Yoast"
-msgstr "L'équipe Yoast"
-
-#. translators: %1$s expands to Yoast SEO, %2$s / %3$s: links to the
-#. installation manual in the Readme for the Yoast SEO code repository on
-#. GitHub
-#: wp-seo-main.php:405
-msgid "The %1$s plugin installation is incomplete. Please refer to %2$sinstallation instructions%3$s."
-msgstr "L'installation de l'extension %1$s est incomplète. Veuillez vous référer %2$saux informations d'installation%3$s."
-
#: wp-seo-main.php:383
msgid "The Standard PHP Library (SPL) extension seem to be unavailable. Please ask your web host to enable it."
msgstr "Les extensions de la Librairie Standard PHP (SPL) semblent ne pas être disponibles.Demandez à votre hébergeur de les activer."
-#: inc/options/class-wpseo-option-ms.php:173
-#: inc/options/class-wpseo-option-ms.php:183
-msgid "The default blog setting must be the numeric blog id of the blog you want to use as default."
-msgstr "Le réglage par défaut du blog doit être l'identifiant numérique du blog que vous souhaitez utiliser par défaut."
-
-#: wp-seo-main.php:429
-msgid "The filter extension seem to be unavailable. Please ask your web host to enable it."
-msgstr "L'extension \"filter\" semble indisponible. Veuillez demander à votre hébergeur de l'activer."
-
-#. Description of the plugin/theme
-msgid "The first true all-in-one SEO solution for WordPress, including on-page content analysis, XML sitemaps and much more."
-msgstr "La première solution SEO tout-en-un pour WordPress, y compris l'analyse des pages de contenu, les sitemaps XML et bien plus encore."
-
-#: admin/import/class-import-aioseo-hooks.php:28
-msgid "The plugin All-In-One-SEO has been detected. Do you want to %simport its settings%s?"
-msgstr "L'extension All-In-One-SEO a été détectée. Voulez-vous %simporter ses réglages%s ?"
-
#: admin/import/class-import-robots-meta-hooks.php:28
msgid "The plugin Robots-Meta has been detected. Do you want to %simport its settings%s."
msgstr "Le plugin Robots-Meta a été détecté. Voulez-vous %simporter sa configuration%s."
msgid "Theme License"
msgstr "Licence du thème"
-#: inc/options/class-wpseo-option-ms.php:173
-msgid "This must be an existing blog. Blog %s does not exist or has been marked as deleted."
-msgstr "Blog inexistant. Le blog %s n'existe pas ou a été marqué comme étant supprimé."
-
-#: vendor/yoast/license-manager/class-update-manager.php:153
-msgid "This site has not been activated properly on yoast.com and thus cannot check for future updates. Please activate your site with a valid license key."
-msgstr "Ce site n'a pas été activé correctement sur yoast.com et donc ne peut donc vérifier les futures mises à jour. Merci d'activer votre site avec une licence valide"
-
-#: vendor/yoast/license-manager/views/form.php:41
-msgid "Toggle license status"
-msgstr "Changer l'état de la licence"
-
#: vendor/yoast/i18n-module/i18n-module.php:194
msgid "Translation of %s"
msgstr "Traduction de %s"
msgid "Updating this theme will lose any customizations you have made. 'Cancel' to stop, 'OK' to update."
msgstr "La mise à jour du thème supprimera toutes les personalisations que vous avez faites. \"Abandonner\" pour arrêter, \"OK\" pour mettre à jour."
-#: vendor/yoast/license-manager/views/form.php:15
-msgid "We couldn't create a connection to our API to verify your license key(s). Please ask your hosting company to allow outgoing connections from your server to %s."
-msgstr "Nous n'arrivons pas à créer de connexion avec notre API pour vérifier votre clé de licence. Veuillez demander à votre hébergeur d'autoriser les connexions sortantes de votre serveur vers %s."
-
#. Plugin Name of the plugin/theme
msgid "Yoast SEO"
msgstr "Yoast SEO"
msgid "You searched for %s"
msgstr "Vous avez cherché %s"
-#: vendor/yoast/i18n-module/i18n-module.php:172
-msgid "You're using WordPress in %1$s. While %2$s has been translated to %1$s for %3$d%%, it's not been shipped with the plugin yet. You can help! Register at %4$s to help complete the translation to %1$s!"
-msgstr "Vous utilisez WordPress en %1$s. Alors que %2$s a été traduit en %1$s à %3$d%%, elle n'est donc pas encore disponible dans l'extension. Vous pouvez nous aider ! Enregistrez-vous sur %4$s pour nous aider à terminer la traduction à %1$s !"
-
-#: vendor/yoast/i18n-module/i18n-module.php:174
-msgid "You're using WordPress in a language we don't support yet. We'd love for %2$s to be translated in that language too, but unfortunately, it isn't right now. You can change that! Register at %4$s to help translate it!"
-msgstr "Vous utilisez WordPress dans une langue que nous ne supportons pas encore. Nous aimerions beaucoup que %2$s soit traduit dans cette langue, mais malheureusement ce n'est pas le cas. Vous pouvez changer cet état de fait ! Enregistrez-vous sur %4$s pour nous aider à traduire ! "
-
-#: vendor/yoast/license-manager/class-license-manager.php:203
-msgid "You've reached your activation limit. You must <a href=\"%s\">upgrade your license</a> to use it on this site."
-msgstr "Vous avez atteint votre limite d'activation. Vous devez <a href=\"%s\">mettre à jour votre licence</a> pour l'utiliser sur ce site."
-
#: vendor/yoast/license-manager/class-license-manager.php:179
msgid "Your %s license has been activated. "
msgstr "Votre licence %s a été activée."
msgid "https://yoast.com/wordpress/plugins/seo/#utm_source=wpadmin&utm_medium=plugin&utm_campaign=wpseoplugin"
msgstr "https://yoast.com/wordpress/plugins/seo/#utm_source=wpadmin&utm_medium=plugin&utm_campaign=wpseoplugin"
+#. translators: %1$s expands to Yoast SEO, %2$s / %3$s: links to the
+#. installation manual in the Readme for the Yoast SEO code repository on
+#. GitHub
+#: wp-seo-main.php:405
+msgid "The %1$s plugin installation is incomplete. Please refer to %2$sinstallation instructions%3$s."
+msgstr "L’installation de l’extension %1$s est incomplète. Veuillez vous référer %2$saux informations d’installation%3$s."
+
+#: vendor/yoast/license-manager/views/form.php:15
+msgid "We couldn't create a connection to our API to verify your license key(s). Please ask your hosting company to allow outgoing connections from your server to %s."
+msgstr "Nous n’arrivons pas à créer de connexion avec notre API pour vérifier votre clé de licence. Veuillez demander à votre hébergeur d’autoriser les connexions sortantes de votre serveur vers %s."
+
+#: wp-seo-main.php:439
+msgid "Activation failed:"
+msgstr "Échec de l’activation :"
+
+#: wp-seo-main.php:429
+msgid "The filter extension seem to be unavailable. Please ask your web host to enable it."
+msgstr "L’extension \"filter\" semble indisponible. Veuillez demander à votre hébergeur de l’activer."
+
+#: admin/import/class-import-aioseo-hooks.php:28
+msgid "The plugin All-In-One-SEO has been detected. Do you want to %simport its settings%s?"
+msgstr "L’extension All-In-One-SEO a été détectée. Voulez-vous %simporter ses réglages%s ?"
+
+#: vendor/yoast/i18n-module/i18n-module.php:172
+msgid "You're using WordPress in %1$s. While %2$s has been translated to %1$s for %3$d%%, it's not been shipped with the plugin yet. You can help! Register at %4$s to help complete the translation to %1$s!"
+msgstr "Vous utilisez WordPress en %1$s. Alors que %2$s a été traduit en %1$s à %3$d%%, elle n’est donc pas encore disponible dans l’extension. Vous pouvez nous aider ! Enregistrez-vous sur %4$s pour nous aider à terminer la traduction à %1$s !"
+
+#: vendor/yoast/i18n-module/i18n-module.php:174
+msgid "You're using WordPress in a language we don't support yet. We'd love for %2$s to be translated in that language too, but unfortunately, it isn't right now. You can change that! Register at %4$s to help translate it!"
+msgstr "Vous utilisez WordPress dans une langue que nous ne supportons pas encore. Nous aimerions beaucoup que %2$s soit traduit dans cette langue, mais malheureusement ce n’est pas le cas. Vous pouvez changer cet état de fait ! Enregistrez-vous sur %4$s pour nous aider à traduire ! "
+
+#: vendor/yoast/i18n-module/i18n-module.php:199
+msgid "Register now »"
+msgstr "S’enregistrer maintenant »"
+
+#. Author of the plugin/theme
+msgid "Team Yoast"
+msgstr "L’équipe Yoast"
+
+#: vendor/yoast/license-manager/class-license-manager.php:138
+msgid "<b>Warning!</b> You're blocking external requests which means you won't be able to get %s updates. Please add %s to %s."
+msgstr "<b>Attention !</b> Vous bloquez des requêtes externes, ce qui signifie que vous ne serez pas en mesure d’obtenir les mises à jour de %s. Merci d’ajouter %s à %s."
+
#: vendor/yoast/license-manager/class-license-manager.php:206
msgid "Your license has expired. You must <a href=\"%s\">extend your license</a> in order to use it again."
-msgstr "Votre licence a expiré. Vous devez <a href=\"%s\">renouveler votre licence</a> pour l'utiliser à nouveau."
+msgstr "Votre licence a expiré. Vous devez <a href=\"%s\">renouveler votre licence</a> pour l’utiliser à nouveau."
+
+#: vendor/yoast/license-manager/class-plugin-license-manager.php:73
+msgid "%s is network activated, you can manage your license in the <a href=\"%s\">network admin license page</a>."
+msgstr "%s est activé sur tout le réseau, vous pouvez gérer votre licence sur la <a href=\"%s\">Page du réseau d’administration des licences</a>."
+
+#: vendor/yoast/license-manager/class-plugin-license-manager.php:75
+msgid "%s is network activated, please contact your site administrator to manage the license."
+msgstr "%s nécessite une activation réseau, veuillez contacter l’administrateur de votre site pour gérer la licence."
+
+#: vendor/yoast/license-manager/class-update-manager.php:153
+msgid "This site has not been activated properly on yoast.com and thus cannot check for future updates. Please activate your site with a valid license key."
+msgstr "Ce site n’a pas été activé correctement sur yoast.com et donc ne peut donc vérifier les futures mises à jour. Merci d’activer votre site avec une licence valide"
+
+#. Description of the plugin/theme
+msgid "The first true all-in-one SEO solution for WordPress, including on-page content analysis, XML sitemaps and much more."
+msgstr "La première solution SEO tout-en-un pour WordPress, y compris l’analyse des pages de contenu, les sitemaps XML et bien plus encore."
+
+#: inc/options/class-wpseo-option-internallinks.php:165
+msgid "Please select a valid taxonomy for post type \"%s\""
+msgstr "Veuillez choisir une taxinomie valide pour le type de contenu \"%s\""
+
+#: vendor/yoast/license-manager/class-license-manager.php:203
+msgid "You've reached your activation limit. You must <a href=\"%s\">upgrade your license</a> to use it on this site."
+msgstr "Vous avez atteint votre limite d’activation. Vous devez <a href=\"%s\">mettre à jour votre licence</a> pour l’utiliser sur ce site."
+
+#: vendor/yoast/license-manager/class-license-manager.php:209
+msgid "Failed to activate your license, your license key seems to be invalid."
+msgstr "Impossible d’activer votre licence, votre clé de licence semble invalide."
+
+#: vendor/yoast/license-manager/views/form.php:41
+msgid "Toggle license status"
+msgstr "Changer l’état de la licence"
+
+#: vendor/yoast/license-manager/views/form.php:46
+msgid "(deactivate your license so you can activate it on another WordPress site)"
+msgstr "(désactivez votre licence pour pouvoir l’activer sur un autre site WordPress)"
+
+#: vendor/yoast/license-manager/views/form.php:52
+msgid "Please enter a license key in the field below first."
+msgstr "Veuillez d’abord saisir une clé de licence dans le champ ci-dessous."
+
+#: inc/options/class-wpseo-option-internallinks.php:204
+msgid "Please select a valid post type for taxonomy \"%s\""
+msgstr "Veuillez choisir un type de contenu valide pour la taxinomie \"%s\""
+
+#: inc/options/class-wpseo-option-xml.php:166
+msgid "\"Max entries per sitemap page\" should be a positive number, which %s is not. Please correct."
+msgstr "\"Entrées maximum par page du sitemap\" doit être un nombre positif, %s ne l’est pas. Veuillez corriger."
+
+#. translators: %1$s expands to the option name and %2$sexpands to Yoast SEO
+#: inc/options/class-wpseo-option-ms.php:153
+msgid "%1$s is not a valid choice for who should be allowed access to the %2$s settings. Value reset to the default."
+msgstr "%1$s n’est pas un choix valide pour ceux qui devraient être autorisés d’accéder aux réglages de %2$s. La valeur par défaut a été remise."
+
+#: inc/options/class-wpseo-option-ms.php:173
+#: inc/options/class-wpseo-option-ms.php:183
+msgid "The default blog setting must be the numeric blog id of the blog you want to use as default."
+msgstr "Le réglage par défaut du blog doit être l’identifiant numérique du blog que vous souhaitez utiliser par défaut."
+
+#: inc/options/class-wpseo-option-ms.php:173
+msgid "This must be an existing blog. Blog %s does not exist or has been marked as deleted."
+msgstr "Blog inexistant. Le blog %s n’existe pas ou a été marqué comme étant supprimé."
+
+#: inc/options/class-wpseo-option-titles.php:178
+msgid "%s, Author at %s"
+msgstr "%s, Auteur à %s"
#. translators: %1$s expands to Yoast SEO
-#: admin/pages/tools.php:52
+#: admin/pages/tools.php:51
msgid "%1$s comes with some very powerful built-in tools:"
msgstr "%1$s propose des outils intégrés très puissants :"
msgid "%s Archives"
msgstr "%s Archives"
-#: admin/pages/tools.php:71
+#: admin/pages/tools.php:70
msgid "« Back to Tools page"
msgstr "« Retour à la page Outils"
msgid ".htaccess file"
msgstr "fichier .htaccess"
-#: admin/views/tab-rss.php:29
-msgid "A link to the archive for the post author, with the authors name as anchor text."
-msgstr "Un lien vers les archives de l'auteur, avec le nom de l'auteur comme texte d'ancrage."
-
-#: admin/views/tab-rss.php:33
-msgid "A link to the post, with the title as anchor text."
-msgstr "Un lien vers l'article, avec le titre comme texte d'ancrage."
-
-#: admin/views/tab-rss.php:41
-msgid "A link to your site, with your site's name and description as anchor text."
-msgstr "Un lien vers votre site, avec le nom de votre site et la description comme texte d'ancrage."
-
-#: admin/views/tab-rss.php:37
-msgid "A link to your site, with your site's name as anchor text."
-msgstr "Un lien vers votre site, avec le nom de votre site comme texte d'ancrage."
-
-#: inc/class-wpseo-replace-vars.php:109
-msgid "A replacement variable can not start with \"%%cf_\" or \"%%ct_\" as these are reserved for the WPSEO standard variable variables for custom fields and custom taxonomies. Try making your variable name unique."
-msgstr "Une variable de remplacement ne peut commencer par \"%%cf_\" ou \"%%ct_\" car ces préfixes sont réservés aux variables standards de WPSEO pour les champs et les taxonomies personnalisés. Essayez d'utiliser un nom de variable unique."
-
#: inc/class-wpseo-replace-vars.php:106
msgid "A replacement variable can only contain alphanumeric characters, an underscore or a dash. Try renaming your variable."
msgstr "Une variable de remplacement ne peut contenir que des caractères alpha-numériques, un souligné ou un tiret. Veuillez renommer votre variable"
-#: inc/class-wpseo-replace-vars.php:118
-msgid "A replacement variable with the same name has already been registered. Try making your variable name more unique."
-msgstr "Une variable de remplacement portant le même nom est déjà enregistrée. Essayez d'utiliser un nom de variable unique."
-
#: admin/pages/social.php:118
msgid "Add Google+ specific post meta data"
msgstr "Ajouter des méta données spécifiques à Google+ "
msgid "Add Open Graph meta data"
msgstr "Ajouter les métadonnées OpenGraph"
-#. translators: %s expands to <code><head></code>
-#: admin/pages/social.php:50
-msgid "Add Open Graph meta data to your site's %s section, Facebook and other social networks use this data when your pages are shared."
-msgstr "Ajouter les méta-données d'Open Graph à la section %s de votre site, Facebook et les autres réseaux sociaux utilisent ces données lorsque vos pages sont partagées."
-
#: admin/pages/social.php:90
msgid "Add Twitter card meta data"
msgstr "Ajoute les métadonnées de carte Twitter"
msgid "Add Twitter card meta data to your site's %s section."
msgstr "Ajouter les méta-données des cartes Twitter à la section %s de votre site."
-#: frontend/class-frontend.php:1253
-msgid "Admin only notice: this page doesn't show a meta description because it doesn't have one, either write it for this page specifically or go into the SEO -> Titles menu and set up a template."
-msgstr "Avis pour l'administrateur : cette page n'affiche pas de méta description car elle n'en a pas. Vous pouvez donc soit l'ajouter spécifiquement pour cette page soit vous rendre dans vos réglages (SEO -> Titres) pour configurer un modèle."
-
-#: admin/views/tab-breadcrumbs.php:22
-msgid "Anchor text for the Homepage"
-msgstr "Texte d'ancrage pour la page d'accueil "
-
#: inc/class-wpseo-replace-vars.php:1109
msgid "Attachment caption"
msgstr "Légende de la pièce-jointe"
-#: admin/views/tab-permalinks.php:20
-msgid "Attachments to posts are stored in the database as posts, this means they're accessible under their own URL's if you do not redirect them, enabling this will redirect them to the post they were attached to."
-msgstr "Les pièces jointes des articles sont stockées dans la base de données en tant qu'articles, ce qui signifie qu'elles sont accessibles par leurs propres URL (si celle-ci ne sont pas déjà redirigées), activer cette option les redirigera vers l'article auquel elles sont attachées."
-
-#: admin/views/dashboard-widget.php:16
-msgid "Below are your published posts’ SEO scores. Now is as good a time as any to start improving some of your posts!"
-msgstr "Ci-dessous retrouvez les scores SEO de vos articles publiés. C'est le moment de commencer à améliorer certains d'entre eux !"
-
#: admin/views/tab-breadcrumbs.php:59
msgid "Blog"
msgstr "Blog"
msgid "Bold the last page in the breadcrumb"
msgstr "Mettre en gras la dernière page du fil d'Ariane"
-#: admin/views/tab-breadcrumbs.php:26
-msgid "Breadcrumb for 404 Page"
-msgstr "Fil d'Ariane pour la page 404 "
-
#: admin/pages/tools.php:24
msgid "Bulk editor"
msgstr "Éditeur par lot"
msgid "Default settings"
msgstr "Réglages par défaut"
-#: admin/views/tool-import-export.php:162
-msgid "Delete the old data after import? (recommended)"
-msgstr "Supprimer les anciennes données après l'importation ? (recommandé)"
-
#: admin/pages/social.php:62 admin/views/tool-bulk-editor.php:35
msgid "Description"
msgstr "Description "
msgid "Edit the content of your robots.txt:"
msgstr "Modifier le contenu de votre fichier robots.txt :"
-#: admin/views/tab-breadcrumbs.php:17
-msgid "Enable Breadcrumbs"
-msgstr "Activer le fil d'Ariane"
-
-#: admin/views/tab-permalinks.php:34
-msgid "Enforce a trailing slash on all category and tag URL's"
-msgstr "Forcer l'ajout d'une barre oblique à la fin de toutes les URL des catégories et des mots-clés"
-
#: admin/pages/xml-sitemaps.php:63
msgid "Entries per page"
msgstr "Entrées par page"
msgid "File editor"
msgstr "Éditeur de fichiers"
-#: admin/pages/social.php:30
-msgid "For each, pick the main account associated with this site and please enter them below:"
-msgstr "Pour chacun d'eux, choisissez le compte principal associé à ce site et enregistrez-le ci-dessous :"
-
#: admin/pages/social.php:57
msgid "Frontpage settings"
msgstr "Réglages généraux"
-#: admin/views/about.php:116
-msgid "Go to the General settings page →"
-msgstr "Aller à la page des Réglages généraux →"
-
#: admin/pages/social.php:123
msgid "Google Publisher Page"
msgstr "Page Google Publisher"
msgid "Hide WLW Manifest Links"
msgstr "Masquer les liens manifestes WLW"
-#: admin/views/tab-breadcrumbs.php:79
-msgid "How to insert breadcrumbs in your theme"
-msgstr "Comment insérer un fil d'Ariane dans votre thème ?"
-
-#. translators: %s expands to <code>.html</code>
-#: admin/views/tab-permalinks.php:33
-msgid "If you choose a permalink for your posts with %1$s, or anything else but a %2$s at the end, this will force WordPress to add a trailing slash to non-post pages nonetheless."
-msgstr "Si vous choisissez un permalien pour vos articles avec %1$s ou quelque chose d'autre qu'un \"%2$s\" à la fin, cette option va tout de même forcer WordPress à ajouter une barre oblique \"/\" à tous les articles."
-
-#: admin/views/tool-file-editor.php:140
-msgid "If you had a .htaccess file and it was editable, you could edit it from here."
-msgstr "Si vous aviez un fichier .htaccess et qu'il était modifiable, vous pourriez le modifier à partir d'ici."
-
-#: admin/views/tool-file-editor.php:88
-msgid "If you had a robots.txt file and it was editable, you could edit it from here."
-msgstr "Si vous aviez un fichier robots.txt et qu'il était modifiable, vous pourriez le modifier à partir d'ici."
-
#: admin/pages/social.php:121
msgid "If you have a Google+ page for your business, add that URL here and link it on your Google+ page's about page."
msgstr "Si vous avez une page Google+ pour votre entreprise, ajoutez cette URL ici et reliez la à votre page à propos de Google+."
-#. translators: %s expands to <code>?utm_</code>
-#: admin/views/tab-permalinks.php:44
-msgid "If you use Google Analytics campaign parameters starting with %s, check this box. However, you're advised not to use these. Instead, use the version with a hash."
-msgstr "Si vous utilisez des réglages de campagne Google Analytics commençant par %s, cochez cette case. Cependant, il n'est pas recommandé de les utiliser. Vous devriez plutôt utiliser la version avec un hash."
-
#: admin/views/tool-import-export.php:173
msgid "If you want to import data from (by now ancient) Yoast plugins, you can do so here:"
msgstr "Si vous souhaitez importer des données depuis votre (désormais ancienne) extension Yoast, vous pouvez le faire ici :"
msgid "If you've used another SEO plugin, try the %sSEO Data Transporter%s plugin to move your data into this plugin, it rocks!"
msgstr "Si vous avez utilisé une autre extension SEO auparavant, essayez %sSEO Data Transporter%s pour importer vos données, ça pulse !"
-#: admin/views/tool-file-editor.php:127
-msgid "If your .htaccess were writable, you could edit it from here."
-msgstr "Si votre fichier .htaccess était accessible en écriture, vous pourriez le modifier à partir d'ici."
-
-#: admin/views/tool-file-editor.php:101
-msgid "If your robots.txt were writable, you could edit it from here."
-msgstr "Si votre fichier robots.txt était accessible en écriture, vous pourriez le modifier à partir d'ici."
-
#: admin/pages/social.php:60 admin/pages/social.php:72
msgid "Image URL"
msgstr "URL de l’image "
msgid "Import from Yoast Breadcrumbs?"
msgstr "Importer depuis Yoast Breadcrumbs ?"
-#: admin/views/tool-import-export.php:104
-msgid "Import from other SEO plugins"
-msgstr "Importer à partir d'autres extensions de SEO"
-
-#: admin/views/tool-import-export.php:106
-msgid "Import from other plugins"
-msgstr "Importer à partir d'autres extensions"
-
#: admin/views/tool-import-export.php:126
msgid "Import settings"
msgstr "Importer les réglages"
msgid "Import settings by locating <em>settings.zip</em> and clicking \"Import settings\""
msgstr "Importer les réglages en localisant le fichier<em>settings.zip</em> et en cliquant sur \"Importer les réglages\""
-#: admin/pages/tools.php:29
-msgid "Import settings from other SEO plugins and export your settings for re-use on (another) blog."
-msgstr "Importez les réglages d'autres extensions de référencement et exportez les vôtres pour les réutiliser sur un autre site."
-
#: admin/pages/social.php:35
msgid "Instagram URL"
msgstr "URL Instagram"
msgid "LinkedIn URL"
msgstr "URL LinkedIn"
-#: admin/pages/xml-sitemaps.php:68
-msgid "Max entries per sitemap"
-msgstr "Nombre d'entrées maximal par sitemap"
-
#: admin/views/user-profile.php:25
msgid "Meta description to use for Author page"
msgstr "Méta description à utiliser pour la page Auteur"
msgid "MySpace URL"
msgstr "URL MySpace"
-#: admin/views/tool-import-export.php:146
-msgid "No doubt you've used an SEO plugin before if this site isn't new. Let's make it easy on you, you can import the data below. If you want, you can import first, check if it was imported correctly, and then import & delete. No duplicate data will be imported."
-msgstr "Vous avez probablement utilisé une autre extension SEO auparavant. Pour vous faciliter la vie, vous pouvez importer les données de votre ancienne extension SEO. Si vous voulez le faire, vous pouvez d'abord les importer, vérifiez si les données ont été importées correctement, et puis importer & supprimer. Aucune donnée en double ne sera importée."
-
#: admin/views/tab-permalinks.php:48
msgid "Other variables not to clean"
msgstr "Autres variables à ne pas nettoyer"
msgid "Page %1$d of %2$d"
msgstr "Page %1$d de %2$d"
-#: frontend/class-frontend.php:558
-#: inc/options/class-wpseo-option-titles.php:180
-msgid "Page not found"
-msgstr "La page est introuvable"
-
-#: admin/views/tab-permalinks.php:36
-msgid "People make mistakes in their links towards you sometimes, or unwanted parameters are added to the end of your URLs, this allows you to redirect them all away. Please note that while this is a feature that is actively maintained, it is known to break several plugins, and should for that reason be the first feature you disable when you encounter issues after installing this plugin."
-msgstr "Il est possible que les gens fassent des erreurs s'ils font des liens vers votre site, ou bien des paramètres indésirables sont ajoutés à vos URL. Cette option vous permet de les rediriger ailleurs. Veuillez noter que même si cette option est activement mise à jour, elle est aussi reconnue pour causer des problèmes avec d'autres extensions et donc, si vous avez un problème, il est recommandé de désactiver cette option d'abord."
-
#: admin/pages/social.php:38
msgid "Pinterest URL"
msgstr "URL Pinterest"
msgid "Please check the appropriate box below if there's a post type that you do <strong>NOT</strong> want to include in your sitemap:"
msgstr "Veuillez cocher la case appropriée ci-dessous s'il y a un type de contenu que vous ne voulez <strong>PAS</strong> inclure dans votre fichier sitemap :"
-#: admin/pages/xml-sitemaps.php:119
-msgid "Please check the appropriate box below if there's a taxonomy that you do <strong>NOT</strong> want to include in your sitemap:"
-msgstr "Veuillez cocher la case appropriée ci-dessous s'il y a une taxonomie que vous ne voulez <strong>PAS</strong> inclure dans votre fichier sitemap :"
-
#: admin/pages/xml-sitemaps.php:83
msgid "Please check the appropriate box below if there's a user role that you do <strong>NOT</strong> want to include in your sitemap:"
msgstr "Merci de cocher la case appropriée ci-dessous si un rôle d'utilisateur ne doit <strong>pas </strong> être inclus dans le plan de votre site :"
-#: admin/pages/xml-sitemaps.php:64
-msgid "Please enter the maximum number of entries per sitemap page (defaults to %s, you might want to lower this to prevent memory issues on some installs):"
-msgstr "Merci de saisir le nombre maximal d'entrées par page de sitemap (par défaut %s, vous pouvez réduire ce nombre pour éviter les problèmes de mémoire sur certaines installations) :"
-
#: admin/pages/xml-sitemaps.php:110
msgid "Posts to exclude"
msgstr "Article à exclure"
-#: admin/views/tab-breadcrumbs.php:24
-msgid "Prefix for Archive breadcrumbs"
-msgstr "Préfixe pour le fil d'Ariane des archives "
-
-#: admin/views/tab-breadcrumbs.php:25
-msgid "Prefix for Search Page breadcrumbs"
-msgstr "Préfixe pour le fil d'Ariane des pages de recherche "
-
-#: admin/views/tab-breadcrumbs.php:23
-msgid "Prefix for the breadcrumb path"
-msgstr "Préfixe pour le fil d'Ariane "
-
#: admin/views/tab-permalinks.php:45
msgid "Prevent cleaning out Google Analytics Campaign & Google AdWords Parameters."
msgstr "Evite la suppression des paramètres des campagnes Google Analytics & Google AdWords"
msgid "QA & Translations Manager"
msgstr "Responsable des traductions et des questions/réponses"
-#: admin/views/tab-permalinks.php:21
-msgid "Redirect attachment URL's to parent post URL."
-msgstr "Rediriger l'URL des pièces-jointes vers l'URL de l'article parent."
-
#: admin/views/tab-permalinks.php:37
msgid "Redirect ugly URL's to clean permalinks. (Not recommended in many cases!)"
msgstr ""
msgid "Remove Blog page from Breadcrumbs"
msgstr "Supprimer la page Blog du fil d'Ariane"
-#: admin/views/tab-permalinks.php:25
-msgid "Remove stop words from slugs."
-msgstr "Retirer les mots d'arrêts (stop words) des identifiants."
-
#: inc/class-wpseo-replace-vars.php:1114
msgid "Replaced with a custom taxonomies description"
msgstr "Remplacé par une description des taxinomies personnalisées."
msgid "Replaced with a posts custom field value"
msgstr "Remplacé par une valeur de champ personnalisé"
-#: inc/class-wpseo-replace-vars.php:1113
-msgid "Replaced with a posts custom taxonomies, comma separated."
-msgstr "Remplacé par la(les) catégorie(s) de l'article, séparé par des virgules"
-
#: inc/class-wpseo-replace-vars.php:1076
msgid "Replaced with the category description"
msgstr "Remplacé par la description de la catégorie"
msgid "Replaced with the current tag/tags"
msgstr "Remplacé par le(les) mot(s)-clé(s)"
-#: inc/class-wpseo-replace-vars.php:1101
-msgid "Replaced with the current time"
-msgstr "Remplacé par l'heure actuelle"
-
-#: inc/class-wpseo-replace-vars.php:1105
-msgid "Replaced with the current year"
-msgstr "Remplacé par l'année en cours"
-
-#: inc/class-wpseo-replace-vars.php:1067
-msgid "Replaced with the date of the post/page"
-msgstr "Remplacé par la date de l'article / de la page"
-
-#: inc/class-wpseo-replace-vars.php:1075
-msgid "Replaced with the post categories (comma separated)"
-msgstr "Remplacé par la(les) catégorie(s) de l'article (séparées par des virgules)"
-
-#: inc/class-wpseo-replace-vars.php:1095
-msgid "Replaced with the post type plural label"
-msgstr "Remplacé par l'intitulé au pluriel du type de contenu"
-
-#: inc/class-wpseo-replace-vars.php:1094
-msgid "Replaced with the post type single label"
-msgstr "Remplacé par l'intitulé au singulier du type de contenu"
-
-#: inc/class-wpseo-replace-vars.php:1097
-msgid "Replaced with the post/page ID"
-msgstr "Remplacé par l'ID de l'article / de la page"
-
-#: inc/class-wpseo-replace-vars.php:1099
-msgid "Replaced with the post/page author's 'Biographical Info'"
-msgstr "Remplacé par 'les informations biographiques' de l'auteur de l'article ou de la page"
-
-#: inc/class-wpseo-replace-vars.php:1098
-msgid "Replaced with the post/page author's 'nicename'"
-msgstr "Remplacé par le nom 'plus joli' de l'auteur de l'article / de la page"
-
-#: inc/class-wpseo-replace-vars.php:1100
-msgid "Replaced with the post/page author's userid"
-msgstr "Remplacé par l'ID de l'auteur de l'article / de la page"
-
-#: inc/class-wpseo-replace-vars.php:1072
-msgid "Replaced with the post/page excerpt (or auto-generated if it does not exist)"
-msgstr "Remplacé par l'extrait de l'article / page (ou auto-généré, si l'extrait n'existe pas)"
-
-#: inc/class-wpseo-replace-vars.php:1073
-msgid "Replaced with the post/page excerpt (without auto-generation)"
-msgstr "Remplacé par l'extrait de l'article / page (sans auto-génération)"
-
-#: inc/class-wpseo-replace-vars.php:1096
-msgid "Replaced with the post/page modified time"
-msgstr "Remplacé par l'heure de modification de l'article / de la page"
-
-#: inc/class-wpseo-replace-vars.php:1110
-msgid "Replaced with the posts focus keyword"
-msgstr "Remplacé par le mot-clé principal de l'article"
-
-#: inc/class-wpseo-replace-vars.php:1111
-msgid "Replaced with the slug which caused the 404"
-msgstr "Remplacé par l'identifiant qui a causé l'erreur 404"
-
#: inc/class-wpseo-replace-vars.php:1077
msgid "Replaced with the tag description"
msgstr "Remplacé par la description du mot-clé"
msgid "Replaced with the title of the parent page of the current page"
msgstr "Remplacé par le titre de la page parent de la présente page"
-#: inc/class-wpseo-replace-vars.php:1068
-msgid "Replaced with the title of the post/page"
-msgstr "Remplacé par le titre de l'article / de la page"
-
#: admin/views/tool-file-editor.php:77
msgid "Robots.txt"
msgstr "Robots.txt"
msgid "Search for \"%s\""
msgstr "Recherche pour \"%s\""
-#: admin/views/tab-breadcrumbs.php:21
-msgid "Separator between breadcrumbs"
-msgstr "Séparateur pour le fil d'Ariane "
-
-#. translators: %1$s expands to Yoast SEO
-#: admin/views/about.php:32
-msgid "Thank you for updating %1$s!"
-msgstr "Merci d'avoir mis à jour %1$s !"
-
#: admin/pages/social.php:93
msgid "The default card type to use"
msgstr "Le type de carte à utiliser par défaut "
msgid "The site's tag line / description"
msgstr "Slogan / Description du site"
-#: admin/pages/social.php:58
-msgid "These are the title, description and image used in the Open Graph meta tags on the front page of your site."
-msgstr "Voici le titre, la description et l'image utilisés dans le meta tag Open Graph sur la page d'accueil de votre site."
-
-#: admin/views/tab-rss.php:15
-msgid "This feature is used to automatically add content to your RSS, more specifically, it's meant to add links back to your blog and your blog posts, so dumb scrapers will automatically add these links too, helping search engines identify you as the original source of the content."
-msgstr "Cette fonctionnalité est utilisée pour ajouter automatiquement du contenu à vos flux RSS, plus spécifiquement, pour ajouter des liens vers votre blog et vos articles. Les agrégateurs de contenus vont également ajouter ces liens, aidant ainsi les moteurs de recherche à identifier votre site comme étant l'origine du contenu."
-
-#: admin/views/tab-permalinks.php:24
-msgid "This helps you to create cleaner URLs by automatically removing the stopwords from them."
-msgstr "Cela vous permet de créer des URLs plus propres en retirant automatiquement les mots d'arrêts (stop words) des URLs."
-
-#: admin/pages/social.php:74
-msgid "This image is used if the post/page being shared does not contain any images."
-msgstr "Cette image est utilisée si l'article/page partagé ne contient aucune image."
-
-#: admin/views/tab-permalinks.php:27
-msgid "This prevents threaded replies from working when the user has JavaScript disabled, but on a large site can mean a <em>huge</em> improvement in crawl efficiency for search engines when you have a lot of comments."
-msgstr "Cela empêche les commentaires imbriqués de fonctionner lorsque l'utilisateur a désactivé JavaScript, mais sur un grand site cela peut représenter une <em>énorme</em> amélioration de l'efficacité d'analyse pour les moteurs de recherche lorsque vous avez beaucoup de commentaires."
-
#: admin/pages/tools.php:35
msgid "This tool allows you to quickly change important files for your SEO, like your robots.txt and, if you have one, your .htaccess file."
msgstr "Cet outil vous permet de modifier rapidement des fichiers importants pour votre référencement, comme le fichier robots.txt ou le fichier .htaccess si vous en avez un."
-#: admin/pages/tools.php:25
-msgid "This tool allows you to quickly change titles and descriptions of your posts and pages without having to go into the editor for each page."
-msgstr "Cet outil vous permet de modifier rapidement les titres et les descriptions de vos articles et de vos pages, sans avoir à aller dans l'éditeur de chaque page."
-
#: admin/views/user-profile.php:16
msgid "Title to use for Author page"
msgstr "Titre à utiliser pour la page Auteur"
msgid "To inform Google about your social profiles, we need to know their URLs."
msgstr "Pour informer Google sur vos profils sociaux, nous avons besoin de connaître leurs URLs."
-#: admin/pages/social.php:34
-msgid "Twitter Username"
-msgstr "Nom d'utilisateur Twitter"
-
#: admin/views/tool-file-editor.php:44
msgid "Updated Robots.txt"
msgstr "Robots.txt mis à jour"
-#. translators: %1$s / %2$s: links to the breadcrumbs implementation page on
-#. the Yoast knowledgebase
-#: admin/views/tab-breadcrumbs.php:83
-msgid "Usage of this breadcrumbs feature is explained in %1$sour knowledge-base article on breadcrumbs implementation%2$s."
-msgstr "L'utilisation de la fonctionnalité du fil d'Ariane est expliquée dans l'article %1$sde notre base de connaissances sur l'intégration du fil d'Ariane%2$s."
-
#: admin/pages/xml-sitemaps.php:38
msgid "User sitemap"
msgstr "Sitemap utilisateur"
msgid "What’s new in %s"
msgstr "Quoi de neuf dans la %s"
-#. translators: %1$s and %2$s expands to anchor tags, %3$s expands to Yoast SEO
-#: admin/views/about.php:126
-msgid "While most of the development team is at %1$sYoast%2$s in the Netherlands, %3$s is created by a worldwide team."
-msgstr "Bien que presque toute l'équipe de développement de %1$sYoast%2$s soit basée aux Pays-Bas, %3$s est créé par une équipe internationale."
-
-#. Translators: %1$s: expands to '<code>1,2,99,100</code>'
-#: admin/pages/xml-sitemaps.php:109
-msgid "You can exclude posts from the sitemap by entering a comma separated string with the Post ID's. The format will become something like: %1$s."
-msgstr "Vous pouvez exclure des articles de votre sitemap en saisissant une série d'ID séparée par des virgules. Le format devrait ressemblé à cela : %1$s"
-
#: admin/pages/xml-sitemaps.php:51
msgid "You can find your XML Sitemap here: %sXML Sitemap%s"
msgstr "Vous pouvez trouver votre fichier sitemap XML ici : %sXML Sitemap%s"
msgid "You cannot edit the robots.txt file."
msgstr "Vous ne pouvez pas modifier le fichier robots.txt."
-#: inc/class-wpseo-replace-vars.php:122
-msgid "You cannot overrule a WPSEO standard variable replacement by registering a variable with the same name. Use the \"wpseo_replacements\" filter instead to adjust the replacement value."
-msgstr "Vous ne pouvez pas annuler une variable de remplacement standard de WPSEO en enregistrant une variable avec le même nom. Utilisez le filtre \"wpseo_replacements\" au lieu d'ajuster la valeur de remplacement."
-
-#: admin/pages/xml-sitemaps.php:54
-msgid "You do <strong>not</strong> need to generate the XML sitemap, nor will it take up time to generate after publishing a post."
-msgstr "Vous n'avez <strong>pas</strong> besoin de générer le fichier sitemap XML, pas plus qu'il ne faudra de temps pour le mettre à jour à chaque nouvel article."
-
-#: admin/views/tool-file-editor.php:83
-msgid "You don't have a robots.txt file, create one here:"
-msgstr "Vous n'avez pas de fichier robots.txt, vous pouvez en créer un ici :"
-
-#: admin/views/tab-permalinks.php:47
-msgid "You might have extra variables you want to prevent from cleaning out, add them here, comma separated."
-msgstr "Vous avez peut-être d'autres variables que vous ne voulez pas nettoyer, ajouter les simplement dans ici, séparées par des virgules."
-
#: admin/pages/social.php:39
msgid "YouTube URL"
msgstr "URL YouTube"
msgid "Post type archive to show in breadcrumbs for taxonomies"
msgstr "Type de contenu d’archive à afficher dans le fil d’Ariane pour les taxinomies"
-#: admin/views/tab-breadcrumbs.php:36
-msgid "Taxonomy to show in breadcrumbs for post types"
-msgstr "Taxonomie à afficher dans le fil d'Ariane pour les types de contenu"
-
-#: admin/pages/social.php:100
-msgid "Pinterest uses Open Graph metadata just like Facebook, so be sure to keep the Open Graph checkbox on the Facebook tab checked if you want to optimize your site for Pinterest."
-msgstr "Pinterest, tout comme Facebook, utilise les métadonnées Open Graph. Assurez-vous donc d'avoir coché la case Open Graph dans l'onglet Facebook si vous souhaitez optimiser votre site pour Pinterest."
-
-#: admin/views/tool-import-export.php:89
-msgid "The old data of the imported plugin was deleted successfully."
-msgstr "Les anciennes données de l'extension importée ont bien été effacées."
-
#: admin/views/tool-import-export.php:135
msgid "Include Taxonomy Metadata"
msgstr "Inclure les métadonnées des taxinomies."
-#. translators: %1$s expands to Yoast SEO
-#: admin/pages/licenses.php:73
-msgid "%1$s Extensions"
-msgstr "Extensions de %1$s"
+#: admin/pages/xml-sitemaps.php:119
+msgid "Please check the appropriate box below if there's a taxonomy that you do <strong>NOT</strong> want to include in your sitemap:"
+msgstr "Veuillez cocher la case appropriée ci-dessous s’il y a une taxinomie que vous ne voulez <strong>PAS</strong> inclure dans votre fichier sitemap :"
-#: admin/pages/metas.php:111 admin/pages/metas.php:171
-msgid "%1$s Meta Box"
-msgstr "%1$s Méta Box"
+#: admin/views/tab-breadcrumbs.php:36
+msgid "Taxonomy to show in breadcrumbs for post types"
+msgstr "Taxinomie à afficher dans le fil d’Ariane pour les types de contenu"
-#. translators: %1$s expands to Yoast SEO, %2$s expands to Google Analytics by
-#. Yoast
-#: admin/google_search_console/class-gsc-service.php:146
-msgid "%1$s detected you’re using a version of %2$s which is not compatible with %1$s. Please update %2$s to the latest version to use this feature."
-msgstr "%1$s a détecté que vous utiliser une version de %2$s qui est incompatible avec %1$s. Veuillez mettre à jour %2$s pour utiliser cette fonctionnalité."
+#: inc/class-wpseo-replace-vars.php:109
+msgid "A replacement variable can not start with \"%%cf_\" or \"%%ct_\" as these are reserved for the WPSEO standard variable variables for custom fields and custom taxonomies. Try making your variable name unique."
+msgstr "Une variable de remplacement ne peut commencer par \"%%cf_\" ou \"%%ct_\" car ces préfixes sont réservés aux variables standards de WPSEO pour les champs et les taxinomies personnalisés. Essayez d’utiliser un nom de variable unique."
-#. translators: %1$s expands to Yoast SEO
-#: admin/pages/metas.php:42
-msgid "%1$s has auto-detected whether it needs to force rewrite the titles for your pages, if you think it's wrong and you know what you're doing, you can change the setting here."
-msgstr "%1$s détecte automatiquement s'il a besoin de forcer la réécriture des titres de vos pages, si vous pensez que c'est incorrect et que vous savez ce que vous faites, vous pouvez modifier ce réglage ici."
+#: admin/views/dashboard-widget.php:16
+msgid "Below are your published posts’ SEO scores. Now is as good a time as any to start improving some of your posts!"
+msgstr "Ci-dessous retrouvez les scores SEO de vos articles publiés. C’est le moment de commencer à améliorer certains d’entre eux !"
-#: admin/pages/network.php:35
-msgid "%s restored to default SEO settings."
-msgstr "%s a été rétabli au réglages SEO par défaut."
+#. translators: %s expands to <code>?utm_</code>
+#: admin/views/tab-permalinks.php:44
+msgid "If you use Google Analytics campaign parameters starting with %s, check this box. However, you're advised not to use these. Instead, use the version with a hash."
+msgstr "Si vous utilisez des réglages de campagne Google Analytics commençant par %s, cochez cette case. Cependant, il n’est pas recommandé de les utiliser. Vous devriez plutôt utiliser la version avec un hash."
-#: admin/pages/metas.php:220
-msgid "404 pages"
-msgstr "Pages 404"
+#. Translators: %1$s: expands to '<code>1,2,99,100</code>'
+#: admin/pages/xml-sitemaps.php:109
+msgid "You can exclude posts from the sitemap by entering a comma separated string with the Post ID's. The format will become something like: %1$s."
+msgstr "Vous pouvez exclure des articles de votre sitemap en saisissant une série d’ID séparée par des virgules. Le format devrait ressemblé à cela : %1$s"
-#: admin/pages/social.php:20
-msgid "Accounts"
-msgstr "Comptes"
+#. translators: %1$s expands to Yoast SEO
+#: admin/views/about.php:32
+msgid "Thank you for updating %1$s!"
+msgstr "Merci d’avoir mis à jour %1$s !"
-#. translators: %s expands to <code>noodp</code>
-#. translators: %s expands to <code>noydir</code>
-#: admin/pages/metas.php:238 admin/pages/metas.php:242
-msgid "Add %s meta robots tag sitewide"
-msgstr "Ajouter des méta étiquettes de robots %s sur tout le site"
+#. translators: %s expands to <code><head></code>
+#: admin/pages/social.php:50
+msgid "Add Open Graph meta data to your site's %s section, Facebook and other social networks use this data when your pages are shared."
+msgstr "Ajouter les méta-données d’Open Graph à la section %s de votre site, Facebook et les autres réseaux sociaux utilisent ces données lorsque vos pages sont partagées."
-#. translators: %s expands to <code>noindex, follow</code>
-#: admin/pages/metas.php:203
-msgid "Add %s to the author archives"
-msgstr "Ajouter %s aux archives de l'auteur"
+#. translators: %1$s / %2$s: links to the breadcrumbs implementation page on
+#. the Yoast knowledgebase
+#: admin/views/tab-breadcrumbs.php:83
+msgid "Usage of this breadcrumbs feature is explained in %1$sour knowledge-base article on breadcrumbs implementation%2$s."
+msgstr "L’utilisation de la fonctionnalité du fil d’Ariane est expliquée dans l’article %1$sde notre base de connaissances sur l’intégration du fil d’Ariane%2$s."
-#. translators: %s expands to <code>noindex, follow</code>
-#: admin/pages/metas.php:209
-msgid "Add %s to the date-based archives"
-msgstr "Ajoutez %s aux archives basées sur la date"
+#: admin/pages/social.php:30
+msgid "For each, pick the main account associated with this site and please enter them below:"
+msgstr "Pour chacun d’eux, choisissez le compte principal associé à ce site et enregistrez-le ci-dessous :"
-#: admin/pages/dashboard.php:234
-msgid "Alexa Verification ID"
-msgstr "ID de vérification Alexa "
+#: admin/pages/social.php:34
+msgid "Twitter Username"
+msgstr "Nom d’utilisateur Twitter"
-#: admin/pages/dashboard.php:203
-msgid "Alternate name"
-msgstr "Autre nom"
+#: admin/pages/social.php:100
+msgid "Pinterest uses Open Graph metadata just like Facebook, so be sure to keep the Open Graph checkbox on the Facebook tab checked if you want to optimize your site for Pinterest."
+msgstr "Pinterest, tout comme Facebook, utilise les métadonnées Open Graph. Assurez-vous donc d’avoir coché la case Open Graph dans l’onglet Facebook si vous souhaitez optimiser votre site pour Pinterest."
-#: admin/pages/licenses.php:30
-msgid "Are you in Google News? Increase your traffic from Google News by optimizing for it!"
-msgstr "Etes vous sur Google News ? Augmentez le trafic de Google News grâce à l'optimisation!"
+#: admin/pages/tools.php:25
+msgid "This tool allows you to quickly change titles and descriptions of your posts and pages without having to go into the editor for each page."
+msgstr "Cet outil vous permet de modifier rapidement les titres et les descriptions de vos articles et de vos pages, sans avoir à aller dans l’éditeur de chaque page."
-#: admin/pages/dashboard.php:190
-msgid "Are you sure you want to reset your SEO settings?"
-msgstr "Êtes vous sûr de vouloir réinitialiser vos réglages de SEO ?"
+#: admin/pages/tools.php:29
+msgid "Import settings from other SEO plugins and export your settings for re-use on (another) blog."
+msgstr "Importez les réglages d’autres extensions de référencement et exportez les vôtres pour les réutiliser sur un autre site."
-#: admin/pages/metas.php:99
-msgid "As you are redirecting attachment URLs to parent post URLs, these settings will currently only have an effect on <strong>unattached</strong> media items!"
-msgstr "Comme vous redirigre l'URL de la pièce jointe vers l'URL parent, ces paramètres n'auront d'effet que sur les médias <strong>non inclus</strong>"
+#: admin/pages/xml-sitemaps.php:68
+msgid "Max entries per sitemap"
+msgstr "Nombre d’entrées maximal par sitemap"
-#: admin/google_search_console/views/gsc-display.php:40
-msgid "Authenticate"
-msgstr "S'authentifier"
+#: admin/views/about.php:116
+msgid "Go to the General settings page →"
+msgstr "Aller aux Réglages généraux →"
-#: admin/pages/metas.php:182
-msgid "Author Archives"
-msgstr "Archives de l'auteur"
+#. translators: %1$s and %2$s expands to anchor tags, %3$s expands to Yoast SEO
+#: admin/views/about.php:126
+msgid "While most of the development team is at %1$sYoast%2$s in the Netherlands, %3$s is created by a worldwide team."
+msgstr "Bien que presque toute l’équipe de développement de %1$sYoast%2$s soit basée aux Pays-Bas, %3$s est créé par une équipe internationale."
+
+#: admin/views/tool-import-export.php:104
+msgid "Import from other SEO plugins"
+msgstr "Importer à partir d’autres extensions de SEO"
+
+#: admin/views/tool-import-export.php:106
+msgid "Import from other plugins"
+msgstr "Importer à partir d’autres extensions"
+
+#: admin/views/tool-import-export.php:89
+msgid "The old data of the imported plugin was deleted successfully."
+msgstr "Les anciennes données de l’extension importée ont bien été effacées."
+
+#: inc/class-wpseo-replace-vars.php:1099
+msgid "Replaced with the post/page author's 'Biographical Info'"
+msgstr "Remplacé par ’les informations biographiques’ de l’auteur de l’article ou de la page"
+
+#: admin/pages/social.php:58
+msgid "These are the title, description and image used in the Open Graph meta tags on the front page of your site."
+msgstr "Voici le titre, la description et l’image utilisés dans le meta tag Open Graph sur la page d’accueil de votre site."
+
+#: inc/class-wpseo-replace-vars.php:118
+msgid "A replacement variable with the same name has already been registered. Try making your variable name more unique."
+msgstr "Une variable de remplacement portant le même nom est déjà enregistrée. Essayez d’utiliser un nom de variable unique."
+
+#: inc/class-wpseo-replace-vars.php:122
+msgid "You cannot overrule a WPSEO standard variable replacement by registering a variable with the same name. Use the \"wpseo_replacements\" filter instead to adjust the replacement value."
+msgstr "Vous ne pouvez pas annuler une variable de remplacement standard de WPSEO en enregistrant une variable avec le même nom. Utilisez le filtre \"wpseo_replacements\" au lieu d’ajuster la valeur de remplacement."
+
+#: admin/views/tool-file-editor.php:83
+msgid "You don't have a robots.txt file, create one here:"
+msgstr "Vous n’avez pas de fichier robots.txt, vous pouvez en créer un ici :"
+
+#: admin/views/tab-permalinks.php:47
+msgid "You might have extra variables you want to prevent from cleaning out, add them here, comma separated."
+msgstr "Vous avez peut-être d’autres variables que vous ne voulez pas nettoyer, ajouter les simplement dans ici, séparées par des virgules."
+
+#: admin/pages/xml-sitemaps.php:64
+msgid "Please enter the maximum number of entries per sitemap page (defaults to %s, you might want to lower this to prevent memory issues on some installs):"
+msgstr "Merci de saisir le nombre maximal d’entrées par page de sitemap (par défaut %s, vous pouvez réduire ce nombre pour éviter les problèmes de mémoire sur certaines installations) :"
+
+#: admin/views/tab-permalinks.php:24
+msgid "This helps you to create cleaner URLs by automatically removing the stopwords from them."
+msgstr "Cela vous permet de créer des URLs plus propres en retirant automatiquement les mots d’arrêts (stop words) des URLs."
+
+#: admin/views/tab-permalinks.php:25
+msgid "Remove stop words from slugs."
+msgstr "Retirer les mots d’arrêts (stop words) des identifiants."
+
+#: inc/class-wpseo-replace-vars.php:1111
+msgid "Replaced with the slug which caused the 404"
+msgstr "Remplacé par l’identifiant qui a causé l’erreur 404"
+
+#: admin/views/tool-file-editor.php:140
+msgid "If you had a .htaccess file and it was editable, you could edit it from here."
+msgstr "Si vous aviez un fichier .htaccess et qu’il était modifiable, vous pourriez le modifier à partir d’ici."
+
+#: admin/views/tool-file-editor.php:88
+msgid "If you had a robots.txt file and it was editable, you could edit it from here."
+msgstr "Si vous aviez un fichier robots.txt et qu’il était modifiable, vous pourriez le modifier à partir d’ici."
+
+#: admin/views/tab-permalinks.php:27
+msgid "This prevents threaded replies from working when the user has JavaScript disabled, but on a large site can mean a <em>huge</em> improvement in crawl efficiency for search engines when you have a lot of comments."
+msgstr "Cela empêche les commentaires imbriqués de fonctionner lorsque l’utilisateur a désactivé JavaScript, mais sur un grand site cela peut représenter une <em>énorme</em> amélioration de l’efficacité d’analyse pour les moteurs de recherche lorsque vous avez beaucoup de commentaires."
+
+#: inc/class-wpseo-replace-vars.php:1094
+msgid "Replaced with the post type single label"
+msgstr "Remplacé par l’intitulé au singulier du type de contenu"
+
+#: inc/class-wpseo-replace-vars.php:1095
+msgid "Replaced with the post type plural label"
+msgstr "Remplacé par l’intitulé au pluriel du type de contenu"
+
+#: inc/class-wpseo-replace-vars.php:1113
+msgid "Replaced with a posts custom taxonomies, comma separated."
+msgstr "Remplacé par la(les) catégorie(s) de l’article, séparé par des virgules"
+
+#: admin/pages/social.php:74
+msgid "This image is used if the post/page being shared does not contain any images."
+msgstr "Cette image est utilisée si l’article/page partagé ne contient aucune image."
+
+#: admin/views/tool-import-export.php:146
+msgid "No doubt you've used an SEO plugin before if this site isn't new. Let's make it easy on you, you can import the data below. If you want, you can import first, check if it was imported correctly, and then import & delete. No duplicate data will be imported."
+msgstr "Vous avez probablement utilisé une autre extension SEO auparavant. Pour vous faciliter la vie, vous pouvez importer les données de votre ancienne extension SEO. Si vous voulez le faire, vous pouvez d’abord les importer, vérifiez si les données ont été importées correctement, et puis importer & supprimer. Aucune donnée en double ne sera importée."
+
+#: admin/views/tool-import-export.php:162
+msgid "Delete the old data after import? (recommended)"
+msgstr "Supprimer les anciennes données après l’importation ? (recommandé)"
+
+#: inc/class-wpseo-replace-vars.php:1067
+msgid "Replaced with the date of the post/page"
+msgstr "Remplacé par la date de l’article / de la page"
+
+#: inc/class-wpseo-replace-vars.php:1068
+msgid "Replaced with the title of the post/page"
+msgstr "Remplacé par le titre de l’article / de la page"
+
+#: inc/class-wpseo-replace-vars.php:1072
+msgid "Replaced with the post/page excerpt (or auto-generated if it does not exist)"
+msgstr "Remplacé par l’extrait de l’article / page (ou auto-généré, si l’extrait n’existe pas)"
+
+#: inc/class-wpseo-replace-vars.php:1073
+msgid "Replaced with the post/page excerpt (without auto-generation)"
+msgstr "Remplacé par l’extrait de l’article / page (sans auto-génération)"
+
+#: inc/class-wpseo-replace-vars.php:1075
+msgid "Replaced with the post categories (comma separated)"
+msgstr "Remplacé par la(les) catégorie(s) de l’article (séparées par des virgules)"
+
+#: inc/class-wpseo-replace-vars.php:1096
+msgid "Replaced with the post/page modified time"
+msgstr "Remplacé par l’heure de modification de l’article / de la page"
+
+#: inc/class-wpseo-replace-vars.php:1097
+msgid "Replaced with the post/page ID"
+msgstr "Remplacé par l’ID de l’article / de la page"
+
+#: inc/class-wpseo-replace-vars.php:1098
+msgid "Replaced with the post/page author's 'nicename'"
+msgstr "Remplacé par le nom ’plus joli’ de l’auteur de l’article / de la page"
+
+#: inc/class-wpseo-replace-vars.php:1100
+msgid "Replaced with the post/page author's userid"
+msgstr "Remplacé par l’ID de l’auteur de l’article / de la page"
+
+#: inc/class-wpseo-replace-vars.php:1101
+msgid "Replaced with the current time"
+msgstr "Remplacé par l’heure actuelle"
+
+#: inc/class-wpseo-replace-vars.php:1105
+msgid "Replaced with the current year"
+msgstr "Remplacé par l’année en cours"
+
+#: inc/class-wpseo-replace-vars.php:1110
+msgid "Replaced with the posts focus keyword"
+msgstr "Remplacé par le mot-clé principal de l’article"
+
+#: admin/views/tab-permalinks.php:34
+msgid "Enforce a trailing slash on all category and tag URL's"
+msgstr "Forcer l’ajout d’une barre oblique à la fin de toutes les URL des catégories et des mots-clés"
+
+#. translators: %s expands to <code>.html</code>
+#: admin/views/tab-permalinks.php:33
+msgid "If you choose a permalink for your posts with %1$s, or anything else but a %2$s at the end, this will force WordPress to add a trailing slash to non-post pages nonetheless."
+msgstr "Si vous choisissez un permalien pour vos articles avec %1$s ou quelque chose d’autre qu’un \"%2$s\" à la fin, cette option va tout de même forcer WordPress à ajouter une barre oblique \"/\" à tous les articles."
+
+#: admin/views/tab-permalinks.php:21
+msgid "Redirect attachment URL's to parent post URL."
+msgstr "Rediriger l’URL des pièces-jointes vers l’URL de l’article parent."
+
+#: admin/views/tab-permalinks.php:20
+msgid "Attachments to posts are stored in the database as posts, this means they're accessible under their own URL's if you do not redirect them, enabling this will redirect them to the post they were attached to."
+msgstr "Les pièces jointes des articles sont stockées dans la base de données en tant qu’articles, ce qui signifie qu’elles sont accessibles par leurs propres URL (si celle-ci ne sont pas déjà redirigées), activer cette option les redirigera vers l’article auquel elles sont attachées."
+
+#: admin/views/tab-permalinks.php:36
+msgid "People make mistakes in their links towards you sometimes, or unwanted parameters are added to the end of your URLs, this allows you to redirect them all away. Please note that while this is a feature that is actively maintained, it is known to break several plugins, and should for that reason be the first feature you disable when you encounter issues after installing this plugin."
+msgstr "Il est possible que les gens fassent des erreurs s’ils font des liens vers votre site, ou bien des paramètres indésirables sont ajoutés à vos URL. Cette option vous permet de les rediriger ailleurs. Veuillez noter que même si cette option est activement mise à jour, elle est aussi reconnue pour causer des problèmes avec d’autres extensions et donc, si vous avez un problème, il est recommandé de désactiver cette option d’abord."
+
+#: admin/views/tab-breadcrumbs.php:17
+msgid "Enable Breadcrumbs"
+msgstr "Activer le fil d’Ariane"
+
+#: admin/views/tab-breadcrumbs.php:21
+msgid "Separator between breadcrumbs"
+msgstr "Séparateur pour le fil d’Ariane "
+
+#: admin/views/tab-breadcrumbs.php:22
+msgid "Anchor text for the Homepage"
+msgstr "Texte d’ancrage pour la page d’accueil "
+
+#: admin/views/tab-breadcrumbs.php:23
+msgid "Prefix for the breadcrumb path"
+msgstr "Préfixe pour le fil d’Ariane "
+
+#: admin/views/tab-breadcrumbs.php:24
+msgid "Prefix for Archive breadcrumbs"
+msgstr "Préfixe pour le fil d’Ariane des archives "
+
+#: admin/views/tab-breadcrumbs.php:25
+msgid "Prefix for Search Page breadcrumbs"
+msgstr "Préfixe pour le fil d’Ariane des pages de recherche "
+
+#: admin/views/tab-breadcrumbs.php:26
+msgid "Breadcrumb for 404 Page"
+msgstr "Fil d’Ariane pour la page 404 "
+
+#: admin/views/tab-breadcrumbs.php:79
+msgid "How to insert breadcrumbs in your theme"
+msgstr "Comment insérer un fil d’Ariane dans votre thème ?"
+
+#: admin/views/tool-file-editor.php:101
+msgid "If your robots.txt were writable, you could edit it from here."
+msgstr "Si votre fichier robots.txt était accessible en écriture, vous pourriez le modifier à partir d’ici."
+
+#: admin/views/tool-file-editor.php:127
+msgid "If your .htaccess were writable, you could edit it from here."
+msgstr "Si votre fichier .htaccess était accessible en écriture, vous pourriez le modifier à partir d’ici."
+
+#: admin/views/tab-rss.php:15
+msgid "This feature is used to automatically add content to your RSS, more specifically, it's meant to add links back to your blog and your blog posts, so dumb scrapers will automatically add these links too, helping search engines identify you as the original source of the content."
+msgstr "Cette fonctionnalité est utilisée pour ajouter automatiquement du contenu à vos flux RSS, plus spécifiquement, pour ajouter des liens vers votre blog et vos articles. Les agrégateurs de contenus vont également ajouter ces liens, aidant ainsi les moteurs de recherche à identifier votre site comme étant l’origine du contenu."
+
+#: admin/views/tab-rss.php:29
+msgid "A link to the archive for the post author, with the authors name as anchor text."
+msgstr "Un lien vers les archives de l’auteur, avec le nom de l’auteur comme texte d’ancrage."
+
+#: admin/views/tab-rss.php:33
+msgid "A link to the post, with the title as anchor text."
+msgstr "Un lien vers l’article, avec le titre comme texte d’ancrage."
+
+#: admin/views/tab-rss.php:37
+msgid "A link to your site, with your site's name as anchor text."
+msgstr "Un lien vers votre site, avec le nom de votre site comme texte d’ancrage."
+
+#: admin/views/tab-rss.php:41
+msgid "A link to your site, with your site's name and description as anchor text."
+msgstr "Un lien vers votre site, avec le nom de votre site et la description comme texte d’ancrage."
+
+#: admin/pages/xml-sitemaps.php:54
+msgid "You do <strong>not</strong> need to generate the XML sitemap, nor will it take up time to generate after publishing a post."
+msgstr "Vous n’avez <strong>pas</strong> besoin de générer le fichier sitemap XML, pas plus qu’il ne faudra de temps pour le mettre à jour à chaque nouvel article."
+
+#: frontend/class-frontend.php:558
+#: inc/options/class-wpseo-option-titles.php:180
+msgid "Page not found"
+msgstr "Page non trouvée"
+
+#: frontend/class-frontend.php:1253
+msgid "Admin only notice: this page doesn't show a meta description because it doesn't have one, either write it for this page specifically or go into the SEO -> Titles menu and set up a template."
+msgstr "Avis pour l’administrateur : cette page n’affiche pas de méta description car elle n’en a pas. Vous pouvez donc soit l’ajouter spécifiquement pour cette page soit vous rendre dans vos réglages (SEO -> Titres) pour configurer un modèle."
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/pages/licenses.php:73
+msgid "%1$s Extensions"
+msgstr "Extensions de %1$s"
+
+#: admin/pages/metas.php:111 admin/pages/metas.php:171
+msgid "%1$s Meta Box"
+msgstr "%1$s Méta Box"
+
+#. translators: %1$s expands to Yoast SEO, %2$s expands to Google Analytics by
+#. Yoast
+#: admin/google_search_console/class-gsc-service.php:146
+msgid "%1$s detected you’re using a version of %2$s which is not compatible with %1$s. Please update %2$s to the latest version to use this feature."
+msgstr "%1$s a détecté que vous utiliser une version de %2$s qui est incompatible avec %1$s. Veuillez mettre à jour %2$s pour utiliser cette fonctionnalité."
+
+#: admin/pages/network.php:35
+msgid "%s restored to default SEO settings."
+msgstr "%s a été rétabli au réglages SEO par défaut."
+
+#: admin/pages/metas.php:220
+msgid "404 pages"
+msgstr "Pages 404"
+
+#: admin/pages/social.php:20
+msgid "Accounts"
+msgstr "Comptes"
+
+#. translators: %s expands to <code>noodp</code>
+#. translators: %s expands to <code>noydir</code>
+#: admin/pages/metas.php:238 admin/pages/metas.php:242
+msgid "Add %s meta robots tag sitewide"
+msgstr "Ajouter des méta étiquettes de robots %s sur tout le site"
+
+#. translators: %s expands to <code>noindex, follow</code>
+#: admin/pages/metas.php:203
+msgid "Add %s to the author archives"
+msgstr "Ajouter %s aux archives de l'auteur"
+
+#. translators: %s expands to <code>noindex, follow</code>
+#: admin/pages/metas.php:209
+msgid "Add %s to the date-based archives"
+msgstr "Ajoutez %s aux archives basées sur la date"
#: admin/pages/dashboard.php:235
-msgid "Bing Webmaster Tools"
-msgstr "Outils pour webmasters de Bing "
+msgid "Alexa Verification ID"
+msgstr "ID de vérification Alexa "
+
+#: admin/pages/dashboard.php:204
+msgid "Alternate name"
+msgstr "Autre nom"
+
+#: admin/pages/dashboard.php:191
+msgid "Are you sure you want to reset your SEO settings?"
+msgstr "Êtes vous sûr de vouloir réinitialiser vos réglages de SEO ?"
#: admin/pages/network.php:38
msgid "Blog %s not found."
msgid "Blog ID"
msgstr "ID du blog"
-#: admin/pages/advanced.php:16
-msgid "Breadcrumbs"
-msgstr "Fils d'Ariane"
-
-#: admin/pages/network.php:109
-msgid "Choose the site whose settings you want to use as default for all sites that are added to your network. If you choose 'None', the normal plugin defaults will be used."
-msgstr "Choisissez le site dont les réglages serviront de base à tous les nouveaux sites de votre réseau. Si vous choisissez 'Aucun', les réglages par défaut de WordPress SEO seront utilisés."
-
-#: admin/pages/metas.php:56
-msgid "Choose the symbol to use as your title separator. This will display, for instance, between your post title and site name."
-msgstr "Choisisssez le symbole à utiliser en temps que séparateur. Il apparaîtra, par exemple, entre le titre de l'article et le nom du site."
-
-#: admin/pages/dashboard.php:214
+#: admin/pages/dashboard.php:215
msgid "Choose whether you're a company or person"
msgstr "Précisez si vous êtes une société ou une personne"
-#: admin/pages/dashboard.php:215 admin/pages/dashboard.php:220
+#: admin/pages/dashboard.php:216 admin/pages/dashboard.php:221
msgid "Company"
msgstr "Société"
msgid "Company Info"
msgstr "Informations sur la société"
-#: admin/pages/dashboard.php:223
+#: admin/pages/dashboard.php:224
msgid "Company Logo"
msgstr "Logo de la société"
-#: admin/pages/dashboard.php:222
+#: admin/pages/dashboard.php:223
msgid "Company Name"
msgstr "Nom de la société"
-#: admin/pages/dashboard.php:205 admin/pages/dashboard.php:213
+#: admin/pages/dashboard.php:206 admin/pages/dashboard.php:214
msgid "Company or person"
msgstr "Société ou personne "
-#: admin/google_search_console/class-gsc.php:128
-msgid "Crawl errors per page"
-msgstr "Erreurs d'exploration par page"
-
#: admin/google_search_console/class-gsc-table.php:206
msgid "Create a redirect"
msgstr "Créer une redirection"
msgid "Date Archives"
msgstr "Archives par date"
-#: admin/pages/metas.php:109
-msgid "Date in Snippet Preview"
-msgstr "Date dans la prévisualisation de l'élément "
-
#: admin/pages/metas.php:206
msgid "Date-based archives could in some cases also be seen as duplicate content."
msgstr "Les archives basées sur la date pourraient, dans certains cas également être considérées comme du contenu dupliqué."
msgstr "Ordinateur"
#. translators: %1$s expands to Yoast SEO
-#: admin/pages/dashboard.php:244
+#: admin/pages/dashboard.php:245
msgid "Disable the Advanced part of the %1$s meta box"
msgstr "Désactiver les options avancées de la boite méta de %1$s."
msgid "Duplicate content prevention"
msgstr "Prévention de contenu dupliqué"
-#: admin/pages/dashboard.php:72
-msgid "Earlier found meta description was not found in file. Renewed the description test data."
-msgstr "Les méta descriptions précédentes n'ont pas été trouvé dans le fichier.Mise en place des données de test."
-
-#. translators: %1$s expands to Yoast SEO
-#: admin/pages/dashboard.php:112
-msgid "Either delete them (this can be done with the \"Fix it\" button) or disable %1$s XML sitemaps."
-msgstr "Vous pouvez soit les supprimer (ce qui peut être fait avec le bouton \"Corriger\") soit désactiver les sitemaps XML de %1$s."
-
#: admin/pages/metas.php:40
msgid "Enable force rewrite titles"
msgstr "Activer la réécriture forcée des titres "
-#: admin/pages/network.php:113
-msgid "Enter the %sSite ID%s for the site whose settings you want to use as default for all sites that are added to your network. Leave empty for none (i.e. the normal plugin defaults will be used)."
-msgstr "Saisissez '%sID du site%s que vous utiliserez comme base pour les réglages de tous les nouveaux sites ajoutés à votre réseau. Laissez vide pour n'en choisir aucun. (Les réglages par défaut de WordPress SEO seront alors utilisés)."
-
#: admin/google_search_console/views/gsc-create-redirect.php:46
msgid "Error: a redirect for this URL already exists"
msgstr "Erreur : une redirection pour cette adresse existe déjà."
-#: admin/google_search_console/class-gsc.php:282
-msgid "Errors that occurred only when your site was crawled by Googlebot-Mobile (errors didn't appear for desktop)."
-msgstr "Les erreurs qui se sont produites lors de l'exploration du Googlebot (les erreurs n'apparaissent pas pour les desktops)."
-
-#: admin/google_search_console/class-gsc.php:281
-msgid "Errors that occurred when your site was crawled by Googlebot."
-msgstr "Les erreurs qui se sont produites lors de l'exploration du Googlebot."
-
-#: admin/google_search_console/class-gsc.php:283
-msgid "Errors that only occurred when your site was crawled by Googlebot for feature phones (errors didn't appear for desktop)."
-msgstr "Les erreurs qui se sont produites lors de l'exploration du Googlebot pour les téléphones portables (les erreurs n'apparaissent pas dans les desktops)."
-
#: admin/pages/dashboard.php:65
msgid "Failed to remove hardcoded meta description."
msgstr "Impossible de supprimer la méta description saisie en dur."
msgid "First detected"
msgstr "Premier détecté"
-#: admin/pages/dashboard.php:104 admin/pages/dashboard.php:119
-#: admin/pages/dashboard.php:130 admin/pages/dashboard.php:137
-msgid "Fix it."
-msgstr "Corriger."
-
#: admin/pages/metas.php:36
msgid "Force rewrite titles"
msgstr "Forcer la réécriture des titres"
-#: admin/google_search_console/views/gsc-display.php:34
-msgid "Get Google Authorization Code"
-msgstr "Obtenir un Code d'Autorisation Google"
-
#: admin/pages/licenses.php:99
msgid "Get this extension"
msgstr "Obtenez cette extension"
-#: admin/pages/dashboard.php:198
-msgid "Google shows your website's name in the search results, we will default to your site name but you can adapt it here. You can also provide an alternate website name you want Google to consider."
-msgstr "Google affiche le nom de votre site web, nous nous basons sur votre nom de site mais vous pouvez l'adapter ici. Vous pouvez également fournir un nom de site web alternatif si vous souhaitez que Google le prenne en considération aussi."
-
#. translators: %1$s expands to Yoast SEO
#: admin/pages/metas.php:111 admin/pages/metas.php:171
msgid "Hide"
msgstr "Masquer"
-#: admin/pages/metas.php:21 admin/pages/metas.php:65
-msgid "Homepage"
-msgstr "Page d'accueil"
-
-#: admin/pages/metas.php:74
-msgid "Homepage & Front page"
-msgstr "Page d'accueil & Première page"
-
#: admin/pages/metas.php:233
msgid "I don't know why you'd want to use meta keywords, but if you want to, check this box."
msgstr "Je ne sais pas pourquoi vous voulez utiliser les méta keywords, mais si vous voulez le faire, cochez cette case."
-#. translators: %s expands to <code>noindex, follow</code>
-#: admin/pages/metas.php:200
-msgid "If this is the case on your site, you can choose to either disable it (which makes it redirect to the homepage), or to add %s to it so it doesn't show up in the search results."
-msgstr "Si c'est le cas pour votre site, vous pouvez choisir de le désactiver (ce qui la redirigera vers la page d'accueil), ou d'y ajouter %s, de sorte qu'il n'apparaisse pas dans les résultats de recherche."
-
-#: admin/pages/metas.php:230
-msgid "If you want to prevent /page/2/ and further of any archive to show up in the search results, enable this."
-msgstr "Si vous voulez éviter /page/2/ et les suivantes d'une archive d'apparaître dans les résultats de la recherche, activez cette option."
-
#. translators: %s expands to Yoast SEO
-#: admin/pages/dashboard.php:185
+#: admin/pages/dashboard.php:186
msgid "If you want to restore a site to the default %s settings, press this button."
msgstr "Si vous souhaitez réinitialiser les réglages de %s de votre site, appuyez sur ce bouton."
-#. translators: %1$s / %2$s: links to an article about duplicate content on
-#. yoast.com
-#: admin/pages/metas.php:197
-msgid "If you're running a one author blog, the author archive will be exactly the same as your homepage. This is what's called a %1$sduplicate content problem%2$s."
-msgstr "Si vous administrez un blog avec un seul auteur, la page d'archive de l'auteur sera exactement identique à votre page d'accueil. C'est ce qu'on appelle un %1$sproblème de contenu dupliqué%2$s."
-
#: admin/pages/dashboard.php:131 admin/pages/dashboard.php:138
msgid "Ignore."
msgstr "Ignorer."
-#: admin/google_search_console/class-gsc.php:223
-msgid "Incorrect Google Authorization Code."
-msgstr "Code d'autorisation de Google incorrect."
-
-#: admin/pages/dashboard.php:156
+#: admin/pages/dashboard.php:157
msgid "Introduction Tour"
msgstr "Visite guidée"
msgid "Last crawled"
msgstr "Dernière exploration"
-#: admin/pages/dashboard.php:168
+#: admin/pages/dashboard.php:169
msgid "Latest Changes"
msgstr "Derniers changements"
msgid "Noindex subpages of archives"
msgstr "Ne pas indexer les sous-pages des archives"
-#: admin/pages/metas.php:134
-msgid "Note: instead of templates these are the actual titles and meta descriptions for these custom post type archive pages."
-msgstr "Remarque : au lieu d'utiliser les modèles, ce sont les vrais titres et méta descriptions pour les pages archives des articles de type personnalisé."
-
-#: admin/pages/licenses.php:24
-msgid "Optimize your videos to show them off in search results and get more clicks!"
-msgstr "Optimisez vos vidéos pour qu'elles apparaissent dans les résultats des recherches et obtenir plus de clics !"
-
-#: admin/pages/dashboard.php:139
-msgid "Paging comments is enabled, this is not needed in 999 out of 1000 cases, so the suggestion is to disable it, to do that, simply uncheck the box before \"Break comments into pages...\""
-msgstr "La pagination des commentaires est activée, ce qui n'est pas nécessaire dans 999 cas sur 1000, donc la suggestion est de le désactiver. Pour le faire, il suffit de décocher la case \"Diviser les commentaires en pages...\" dans les réglages de discussion."
-
#: admin/pages/advanced.php:20
msgid "Permalinks"
msgstr "Permaliens"
-#: admin/pages/dashboard.php:216 admin/pages/dashboard.php:227
-msgid "Person"
-msgstr "Personne"
-
-#: admin/google_search_console/views/gsc-display.php:36
-msgid "Please enter the Google Authorization Code in the field below and press the Authenticate button."
-msgstr "Veuillez saisir le code d'autorisation dans le champ ci-dessous et appuyez sur le bouton d'authentification."
-
-#: admin/pages/metas.php:236
-msgid "Prevents search engines from using the DMOZ description for pages from this site in the search results."
-msgstr "Empêche les moteurs de recherche d'utiliser la description de DMOZ pour les pages de ce site dans les résultats de recherche."
-
-#: admin/pages/metas.php:240
-msgid "Prevents search engines from using the Yahoo! directory description for pages from this site in the search results."
-msgstr "Empêche les moteurs de recherche d'utiliser la description du répertoire de Yahoo! pour les pages de ce site dans les résultats de recherche."
+#: admin/pages/dashboard.php:217 admin/pages/dashboard.php:228
+msgid "Person"
+msgstr "Personne"
#: admin/pages/network.php:115
msgid "Privacy sensitive (FB admins and such), theme specific (title rewrite) and a few very site specific settings will not be imported to new blogs."
msgid "Reauthenticate with Google "
msgstr "Se ré-authentifier avec Google"
-#: admin/google_search_console/views/gsc-create-redirect.php:21
-msgid "Redirect this broken URL and fix the error"
-msgstr "Rediriger cette adresse cassé et réglé l'erreur."
-
-#: admin/google_search_console/views/gsc-display.php:16
-msgid "Reload crawl issues"
-msgstr "Recharger les problèmes d'exploration"
-
#: admin/pages/dashboard.php:59
msgid "Removed hardcoded meta description."
msgstr "La méta description codée en dure a été supprimée."
msgid "Response code"
msgstr "Code de réponse"
-#: admin/pages/dashboard.php:182 admin/pages/dashboard.php:190
+#: admin/pages/dashboard.php:183 admin/pages/dashboard.php:191
msgid "Restore Default Settings"
msgstr "Restaurer les réglages par défaut"
msgid "Take note:"
msgstr "À savoir :"
-#: admin/pages/dashboard.php:157
+#: admin/pages/dashboard.php:158
msgid "Take this tour to quickly learn about the use of this plugin."
msgstr "Profitez de cette visite guidée pour apprendre rapidement comment utiliser cette extension."
-#: admin/pages/metas.php:23 admin/pages/xml-sitemaps.php:43
-msgid "Taxonomies"
-msgstr "Taxonomies"
-
#. Translators: %1$s: expands to Google Search Console.
#: admin/google_search_console/class-gsc.php:179
msgid "The %1$s data has been removed. You will have to reauthenticate if you want to retrieve the data again."
msgstr "La %1$s a été supprimée. Vous devrez vous réauthentifier si vous voulez retrouvez vos données."
-#: admin/pages/dashboard.php:105
-msgid "The following file(s) is/are blocking your XML sitemaps from working properly:"
-msgstr "Le(s) fichier(s) suivant(s) empêche(nt) vos sitemaps XML de fonctionner correctement :"
-
#. translators: %1$s expands to Yoast SEO
#: admin/pages/licenses.php:18
msgid "The premium version of %1$s with more features & support."
msgstr "La version Premium de %1$s avec plus de fonctionnalités & de support."
-#: admin/google_search_console/class-gsc-category-filters.php:121
-msgid "The target URL doesn't exist, but your server is not returning a 404 (file not found) error."
-msgstr "L'URL cible n'existe pas mais le serveur ne retourne pas d'erreur 404 (fichier non trouvé)."
-
-#: admin/google_search_console/views/gsc-display.php:72
-msgid "There were no profiles found"
-msgstr "Aucun profil n'a été trouvé. "
-
-#. translators: %s expands to <code>noindex, follow</code>
-#: admin/pages/metas.php:216
-msgid "These pages will be %s by default, so they will never show up in search results."
-msgstr "Ces pages seront réglées sur %s par défaut, donc elles n'apparaitront jamais dans les résultats de recherche."
-
-#: admin/pages/licenses.php:117
-msgid "This is where you would enter the license keys for one of our premium plugins, should you activate one."
-msgstr "Enregistrez ici la clé de licence de l'une de vos extensions premium si vous voulez l'activer."
-
#: admin/pages/metas.php:140 admin/pages/social.php:61
#: admin/views/tool-bulk-editor.php:33
msgid "Title"
msgid "URL"
msgstr "URL"
-#: admin/pages/dashboard.php:242
+#: admin/pages/dashboard.php:243
msgid "Unchecking this box allows authors and editors to redirect posts, noindex them and do other things you might not want if you don't trust your authors."
msgstr "Décocher cette case permet aux auteurs et aux éditeurs de rediriger les articles, ne pas les indexer (noindex) et faire d'autres choses que vous pourriez ne pas vouloir si vous n'avez pas confiance en eux."
msgid "Using this form you can reset a site to the default SEO settings."
msgstr "Grâce à ce formulaire, vous pouvez réinitialiser les réglages SEO de votre site aux réglages par défaut."
-#: admin/pages/dashboard.php:176
+#: admin/pages/dashboard.php:177
msgid "View Changes"
msgstr "Voir les changements"
#. translators: %s expands to Yoast SEO
-#: admin/pages/dashboard.php:171
+#: admin/pages/dashboard.php:172
msgid "We've summarized the most recent changes in %s."
msgstr "Nous avons résumé les changements les plus récents dans %s."
msgid "Webmaster Tools"
msgstr "Outils pour les webmasters"
-#: admin/pages/dashboard.php:195 admin/pages/dashboard.php:202
+#: admin/pages/dashboard.php:196 admin/pages/dashboard.php:203
msgid "Website name"
msgstr "Nom du Site Web"
msgid "Who should have access to the %1$s settings"
msgstr "Qui devrait avoir accès aux réglages de %1$s"
-#: admin/pages/dashboard.php:237
+#: admin/pages/dashboard.php:238
msgid "Yandex Webmaster Tools"
msgstr "Outils pour webmaster de Yandex "
-#: admin/google_search_console/class-gsc-service.php:137
-msgid "Yoast plugins share some code between them to make your site faster. As a result of that, we need all Yoast plugins to be up to date. We've detected this isn't the case, so please update the Yoast plugins that aren't up to date yet."
-msgstr "Les extensions de Yoast partagent du code entre elles pour les rendre plus rapide. Cela suppose qu'elles soient toutes à jour. Nous avons détecté que ce n'est pas le cas, donc veuillez mettre à jour toutes les extensions de Yoast qui ne le sont pas."
-
#: admin/pages/metas.php:78
msgid "You can determine the title and description for the blog page by %sediting the blog page itself »%s"
msgstr "Vous pouvez définir le titre et la description pour la page du blog en %smodifiant la page de blog directement »%s"
-#: admin/pages/metas.php:75
-msgid "You can determine the title and description for the front page by %sediting the front page itself »%s"
-msgstr "Vous pouvez déterminer le titre et la description de la page d'accueil en %smodifiant la page d'accueil directement »%s"
-
-#: admin/pages/dashboard.php:233
-msgid "You can use the boxes below to verify with the different Webmaster Tools, if your site is already verified, you can just forget about these. Enter the verify meta values for:"
-msgstr "Vous pouvez utiliser les cases ci-dessous pour permettre la vérification de votre site avec différents outils pour webmasters. Si votre site l'est déjà, vous pouvez simplement les oublier. Entrez les valeurs de vérification méta pour :"
-
-#. Translators: %1$s: expands to the current url and %2$s expands to url the
-#. redirects points to.
-#: admin/google_search_console/views/gsc-create-redirect.php:51
-msgid "You do not have to create a redirect for URL %1$s because a redirect already exists. The existing redirect points to %2$s. If this is fine you can mark this issue as fixed. If not, please go to the redirects page and change the target URL."
-msgstr "Vous n'avez pas à créer une redirection pour l'adresse %1$s car la redirection existe déjà. La redirection existante pointe vers %2$s. Si c'est bon, vous pouvez marquer ce problème comme réglé. Si ça ne l'est pas, rendez-vous dans la page des redirections et modifiez l'url cible."
-
-#: admin/pages/dashboard.php:132
-msgid "You do not have your postname in the URL of your posts and pages, it is highly recommended that you do. Consider setting your permalink structure to <strong>/%postname%/</strong>."
-msgstr "Vous n'avez pas le nom de l'article dans l'URL de vos articles et pages. Il est fortement recommandé de l'avoir. Il est suggéré d'ajuster la structure de vos permaliens pour <strong>/%postname%/</strong>."
-
#: admin/pages/dashboard.php:147
msgid "Your Info"
msgstr "Vos informations"
-#: admin/pages/dashboard.php:228
+#: admin/pages/dashboard.php:229
msgid "Your name"
msgstr "Votre nom "
msgid "To be able to create a redirect and fix this issue, you need %1$s. You can buy the plugin, including one year of support and updates, on %2$s."
msgstr "Pour pouvoir créer une redirection et régler ce problème, vous avez besoin de %1$s. Vous pouvez acheter l’extension, incluant un an de support et de mises à jour, sur %2$s."
-#: admin/google_search_console/class-gsc.php:79
-msgid "Don't miss your crawl errors: %1$sconnect with Google Search Console here%2$s."
-msgstr "Ne ratez pas vos erreurs d'exploration : %1$sconnectez-vous avec votre Google Search Console ici%2$s."
-
#: admin/google_search_console/class-gsc.php:192
msgid "The issues have been successfully reloaded!"
msgstr "Les problèmes ont bien été rechargés !"
-#: admin/pages/dashboard.php:209
+#: admin/pages/metas.php:23 admin/pages/xml-sitemaps.php:43
+msgid "Taxonomies"
+msgstr "Taxinomies"
+
+#: admin/google_search_console/class-gsc.php:79
+msgid "Don't miss your crawl errors: %1$sconnect with Google Search Console here%2$s."
+msgstr "Ne ratez pas vos erreurs d’exploration : %1$sconnectez-vous avec votre Google Search Console ici%2$s."
+
+#: admin/google_search_console/views/gsc-create-redirect.php:21
+msgid "Redirect this broken URL and fix the error"
+msgstr "Rediriger cette adresse cassé et réglé l’erreur."
+
+#: admin/google_search_console/views/gsc-display.php:16
+msgid "Reload crawl issues"
+msgstr "Recharger les problèmes d’exploration"
+
+#: admin/google_search_console/views/gsc-display.php:34
+msgid "Get Google Authorization Code"
+msgstr "Obtenir un Code d’Autorisation Google"
+
+#: admin/google_search_console/views/gsc-display.php:36
+msgid "Please enter the Google Authorization Code in the field below and press the Authenticate button."
+msgstr "Veuillez saisir le code d’autorisation dans le champ ci-dessous et appuyez sur le bouton d’authentification."
+
+#: admin/google_search_console/views/gsc-display.php:40
+msgid "Authenticate"
+msgstr "S’authentifier"
+
+#: admin/google_search_console/views/gsc-display.php:72
+msgid "There were no profiles found"
+msgstr "Aucun profil n’a été trouvé. "
+
+#. Translators: %1$s: expands to the current url and %2$s expands to url the
+#. redirects points to.
+#: admin/google_search_console/views/gsc-create-redirect.php:51
+msgid "You do not have to create a redirect for URL %1$s because a redirect already exists. The existing redirect points to %2$s. If this is fine you can mark this issue as fixed. If not, please go to the redirects page and change the target URL."
+msgstr "Vous n’avez pas à créer une redirection pour l’adresse %1$s car la redirection existe déjà. La redirection existante pointe vers %2$s. Si c’est bon, vous pouvez marquer ce problème comme réglé. Si ça ne l’est pas, rendez-vous dans la page des redirections et modifiez l’url cible."
+
+#: admin/google_search_console/class-gsc-service.php:137
+msgid "Yoast plugins share some code between them to make your site faster. As a result of that, we need all Yoast plugins to be up to date. We've detected this isn't the case, so please update the Yoast plugins that aren't up to date yet."
+msgstr "Les extensions de Yoast partagent du code entre elles pour les rendre plus rapide. Cela suppose qu’elles soient toutes à jour. Nous avons détecté que ce n’est pas le cas, donc veuillez mettre à jour toutes les extensions de Yoast qui ne le sont pas."
+
+#: admin/google_search_console/class-gsc.php:128
+msgid "Crawl errors per page"
+msgstr "Erreurs d’exploration par page"
+
+#: admin/google_search_console/class-gsc.php:223
+msgid "Incorrect Google Authorization Code."
+msgstr "Code d’autorisation de Google incorrect."
+
+#: admin/google_search_console/class-gsc.php:281
+msgid "Errors that occurred when your site was crawled by Googlebot."
+msgstr "Les erreurs qui se sont produites lors de l’exploration du Googlebot."
+
+#: admin/google_search_console/class-gsc.php:282
+msgid "Errors that occurred only when your site was crawled by Googlebot-Mobile (errors didn't appear for desktop)."
+msgstr "Les erreurs qui se sont produites lors de l’exploration du Googlebot (les erreurs n’apparaissent pas pour les desktops)."
+
+#: admin/google_search_console/class-gsc.php:283
+msgid "Errors that only occurred when your site was crawled by Googlebot for feature phones (errors didn't appear for desktop)."
+msgstr "Les erreurs qui se sont produites lors de l’exploration du Googlebot pour les téléphones portables (les erreurs n’apparaissent pas dans les desktops)."
+
+#: admin/google_search_console/class-gsc-category-filters.php:121
+msgid "The target URL doesn't exist, but your server is not returning a 404 (file not found) error."
+msgstr "L’URL cible n’existe pas mais le serveur ne retourne pas d’erreur 404 (fichier non trouvé)."
+
+#: admin/pages/dashboard.php:199
+msgid "Google shows your website's name in the search results, we will default to your site name but you can adapt it here. You can also provide an alternate website name you want Google to consider."
+msgstr "Google affiche le nom de votre site web, nous nous basons sur votre nom de site mais vous pouvez l’adapter ici. Vous pouvez également fournir un nom de site web alternatif si vous souhaitez que Google le prenne en considération aussi."
+
+#. translators: %1$s / %2$s: links to an article about duplicate content on
+#. yoast.com
+#: admin/pages/metas.php:197
+msgid "If you're running a one author blog, the author archive will be exactly the same as your homepage. This is what's called a %1$sduplicate content problem%2$s."
+msgstr "Si vous administrez un blog avec un seul auteur, la page d’archive de l’auteur sera exactement identique à votre page d’accueil. C’est ce qu’on appelle un %1$sproblème de contenu dupliqué%2$s."
+
+#. translators: %s expands to <code>noindex, follow</code>
+#: admin/pages/metas.php:200
+msgid "If this is the case on your site, you can choose to either disable it (which makes it redirect to the homepage), or to add %s to it so it doesn't show up in the search results."
+msgstr "Si c’est le cas pour votre site, vous pouvez choisir de le désactiver (ce qui la redirigera vers la page d’accueil), ou d’y ajouter %s, de sorte qu’il n’apparaisse pas dans les résultats de recherche."
+
+#: admin/pages/advanced.php:16
+msgid "Breadcrumbs"
+msgstr "Fils d’Ariane"
+
+#: admin/pages/dashboard.php:210
msgid "This data is shown as metadata in your site. It is intended to appear in Google's Knowledge Graph. You can be either a company, or a person, choose either:"
-msgstr "Cette donnée est affichée comme une métadonnée dans votre site. Elle apparaît dans le Knowledge Graph de Google. Vous pouvez être une société ou une personne, choisissez l’un ou l'autre :"
+msgstr "Cette donnée est affichée comme une métadonnée dans votre site. Elle apparaît dans le Knowledge Graph de Google. Vous pouvez être une société ou une personne, choisissez l’un ou l’autre :"
+
+#: admin/pages/licenses.php:117
+msgid "This is where you would enter the license keys for one of our premium plugins, should you activate one."
+msgstr "Enregistrez ici la clé de licence de l’une de vos extensions premium si vous voulez l’activer."
+
+#: admin/pages/metas.php:56
+msgid "Choose the symbol to use as your title separator. This will display, for instance, between your post title and site name."
+msgstr "Choisisssez le symbole à utiliser en temps que séparateur. Il apparaîtra, par exemple, entre le titre de l’article et le nom du site."
+
+#: admin/pages/metas.php:99
+msgid "As you are redirecting attachment URLs to parent post URLs, these settings will currently only have an effect on <strong>unattached</strong> media items!"
+msgstr "Comme vous redirigre l’URL de la pièce jointe vers l’URL parent, ces paramètres n’auront d’effet que sur les médias <strong>non inclus</strong>"
+
+#: admin/pages/network.php:109
+msgid "Choose the site whose settings you want to use as default for all sites that are added to your network. If you choose 'None', the normal plugin defaults will be used."
+msgstr "Choisissez le site dont les réglages serviront de base à tous les nouveaux sites de votre réseau. Si vous choisissez ’Aucun’, les réglages par défaut de WordPress SEO seront utilisés."
+
+#: admin/pages/network.php:113
+msgid "Enter the %sSite ID%s for the site whose settings you want to use as default for all sites that are added to your network. Leave empty for none (i.e. the normal plugin defaults will be used)."
+msgstr "Saisissez ’%sID du site%s que vous utiliserez comme base pour les réglages de tous les nouveaux sites ajoutés à votre réseau. Laissez vide pour n’en choisir aucun. (Les réglages par défaut de WordPress SEO seront alors utilisés)."
+
+#: admin/pages/licenses.php:24
+msgid "Optimize your videos to show them off in search results and get more clicks!"
+msgstr "Optimisez vos vidéos pour qu’elles apparaissent dans les résultats des recherches et obtenir plus de clics !"
+
+#: admin/pages/licenses.php:30
+msgid "Are you in Google News? Increase your traffic from Google News by optimizing for it!"
+msgstr "Etes vous sur Google News ? Augmentez le trafic de Google News grâce à l’optimisation!"
+
+#: admin/pages/dashboard.php:72
+msgid "Earlier found meta description was not found in file. Renewed the description test data."
+msgstr "Les méta descriptions précédentes n’ont pas été trouvé dans le fichier.Mise en place des données de test."
+
+#: admin/pages/metas.php:109
+msgid "Date in Snippet Preview"
+msgstr "Date dans la prévisualisation de l’élément "
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/pages/metas.php:42
+msgid "%1$s has auto-detected whether it needs to force rewrite the titles for your pages, if you think it's wrong and you know what you're doing, you can change the setting here."
+msgstr "%1$s détecte automatiquement s’il a besoin de forcer la réécriture des titres de vos pages, si vous pensez que c’est incorrect et que vous savez ce que vous faites, vous pouvez modifier ce réglage ici."
+
+#: admin/pages/metas.php:230
+msgid "If you want to prevent /page/2/ and further of any archive to show up in the search results, enable this."
+msgstr "Si vous voulez éviter /page/2/ et les suivantes d’une archive d’apparaître dans les résultats de la recherche, activez cette option."
+
+#. translators: %s expands to <code>noindex, follow</code>
+#: admin/pages/metas.php:216
+msgid "These pages will be %s by default, so they will never show up in search results."
+msgstr "Ces pages seront réglées sur %s par défaut, donc elles n’apparaitront jamais dans les résultats de recherche."
+
+#: admin/pages/metas.php:21 admin/pages/metas.php:65
+msgid "Homepage"
+msgstr "Page d’accueil"
+
+#: admin/pages/metas.php:74
+msgid "Homepage & Front page"
+msgstr "Page d’accueil & Première page"
+
+#: admin/pages/metas.php:75
+msgid "You can determine the title and description for the front page by %sediting the front page itself »%s"
+msgstr "Vous pouvez déterminer le titre et la description de la page d’accueil en %smodifiant la page d’accueil directement »%s"
+
+#: admin/pages/metas.php:182
+msgid "Author Archives"
+msgstr "Archives de l’auteur"
+
+#: admin/pages/metas.php:134
+msgid "Note: instead of templates these are the actual titles and meta descriptions for these custom post type archive pages."
+msgstr "Remarque : au lieu d’utiliser les modèles, ce sont les vrais titres et méta descriptions pour les pages archives des articles de type personnalisé."
+
+#: admin/pages/metas.php:236
+msgid "Prevents search engines from using the DMOZ description for pages from this site in the search results."
+msgstr "Empêche les moteurs de recherche d’utiliser la description de DMOZ pour les pages de ce site dans les résultats de recherche."
+
+#: admin/pages/metas.php:240
+msgid "Prevents search engines from using the Yahoo! directory description for pages from this site in the search results."
+msgstr "Empêche les moteurs de recherche d’utiliser la description du répertoire de Yahoo! pour les pages de ce site dans les résultats de recherche."
+
+#: admin/pages/dashboard.php:104 admin/pages/dashboard.php:119
+#: admin/pages/dashboard.php:130 admin/pages/dashboard.php:137
+msgid "Fix it."
+msgstr "Réparez."
+
+#: admin/pages/dashboard.php:105
+msgid "The following file(s) is/are blocking your XML sitemaps from working properly:"
+msgstr "Le(s) fichier(s) suivant(s) empêche(nt) votre plan de site XML de fonctionner correctement :"
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/pages/dashboard.php:112
+msgid "Either delete them (this can be done with the \"Fix it\" button) or disable %1$s XML sitemaps."
+msgstr "Vous pouvez soit les supprimer (ce qui peut être fait avec le bouton « Réparez ») soit désactiver le plan de site XML de %1$s."
+
+#: admin/pages/dashboard.php:132
+msgid "You do not have your postname in the URL of your posts and pages, it is highly recommended that you do. Consider setting your permalink structure to <strong>/%postname%/</strong>."
+msgstr "Vous n’avez pas le nom de l’article dans l’URL de vos articles et pages. Il est fortement recommandé de l’avoir. Il est suggéré d’ajuster la structure de vos permaliens pour <strong>/%postname%/</strong>."
+
+#: admin/pages/dashboard.php:139
+msgid "Paging comments is enabled, this is not needed in 999 out of 1000 cases, so the suggestion is to disable it, to do that, simply uncheck the box before \"Break comments into pages...\""
+msgstr "La pagination des commentaires est activée, ce qui n’est pas nécessaire dans 999 cas sur 1000, donc la suggestion est de le désactiver. Pour le faire, il suffit de décocher la case \"Diviser les commentaires en pages...\" dans les réglages de discussion."
+
+#: admin/pages/dashboard.php:234
+msgid "You can use the boxes below to verify with the different Webmaster Tools, if your site is already verified, you can just forget about these. Enter the verify meta values for:"
+msgstr "Vous pouvez utiliser les cases ci-dessous pour permettre la vérification de votre site avec différents outils pour webmasters. Si votre site l’est déjà, vous pouvez simplement les oublier. Entrez les valeurs de vérification méta pour :"
+
+#: admin/pages/dashboard.php:236
+msgid "Bing Webmaster Tools"
+msgstr "Outils de Bing pour webmasters"
#. translators: %1$s expands to Yoast SEO
#: admin/taxonomy/class-taxonomy-metabox.php:55
msgid "%s Image"
msgstr "%s Image"
-#. translators: %s is the plugin name
-#: admin/class-yoast-dashboard-widget.php:41
-msgid "%s Posts Overview"
-msgstr "Vue d'ensemble des articles de %s"
-
#. translators: %s expands to the social network name
#: admin/class-social-admin.php:63
#: admin/taxonomy/class-taxonomy-social-fields.php:44
msgid "%s Title"
msgstr "%s Titre"
-#: admin/class-pointers.php:301
-msgid "A Sitemap is an XML file that lists the URLs for a site. It allows webmasters to include additional information about each URL: when it was last updated, how often it changes, and how important it is in relation to other URLs in the site. This allows search engines to crawl the site more intelligently."
-msgstr "Un plan de site est un fichier XML qui recense les URLs d'un site. Il permet aux webmasters d'inclure des informations complémentaires à propos de chaque URL: quand il a été mis à jour pour la dernière fois, à quelle fréquence il change, son importance par rapport aux autres URLs du site. Cela permet aux moteurs de recherche de parcourir le site de manière plus intelligente."
-
#: admin/google_search_console/class-gsc-category-filters.php:113
msgid "Access denied"
msgstr "Accès refusé"
msgid "Add some info here needed for Google's Knowledge Graph."
msgstr "Ajouter quelques informations nécessaire pour le Knowledge Graph de Google ici."
-#: admin/class-social-facebook.php:329
-msgid "Admin's Facebook user ID:"
-msgstr "ID d'utilisateur Facebook de l'administrateur :"
-
-#: admin/class-social-facebook.php:325
-msgid "Admin's name:"
-msgstr "Nom de l'administrateur :"
-
#: admin/class-pointers.php:317
msgid "Advanced Settings"
msgstr "Réglages avancés"
msgid "Blocked"
msgstr "Bloqué"
-#. translators: %1$s expands to Yoast SEO, %2$s: 'Google XML Sitemaps' plugin
-#. name of possibly conflicting plugin with regard to the creation of sitemaps
-#: admin/class-plugin-conflict.php:135
-msgid "Both %1$s and %2$s can create XML sitemaps. Having two XML sitemaps is not beneficial for search engines, yet might slow down your site."
-msgstr "%1$s et %2$s peuvent créer des sitemaps XML. Avoir deux sitemaps XML n'est pas recommandé pour les moteurs de recherche, et pourrait même ralentir votre site."
-
-#. translators: %1$s expands to Yoast SEO, %2%s: 'Facebook' plugin name of
-#. possibly conflicting plugin with regard to creating OpenGraph output
-#: admin/class-plugin-conflict.php:128
-msgid "Both %1$s and %2$s create OpenGraph output, which might make Facebook, Twitter, LinkedIn and other social networks use the wrong texts and images when your pages are being shared."
-msgstr "%1$s et %2$s créent des sorties OpenGraph, ce qui pourrait faire que Facebook, Twitter, LinkedIn et d'autres réseaux sociaux utilisent de mauvais textes et de mauvaises images lorsque vos pages sont partagées."
-
-#: admin/pages/metas.php:146
-#: admin/taxonomy/class-taxonomy-settings-fields.php:48
-msgid "Breadcrumbs title"
-msgstr "Titre du fil d'Ariane"
-
#: admin/taxonomy/class-taxonomy-settings-fields.php:44
msgid "Canonical"
msgstr "Canonique"
msgid "Close"
msgstr "Fermer"
-#. translators: %1$s expands to Yoast SEO
-#: admin/class-plugin-conflict.php:132
-msgid "Configure %1$s's OpenGraph settings"
-msgstr "Configurer les réglages de l'OpenGraph de %1$s"
-
#. translators: %1$s expands to Yoast SEO
#: admin/class-plugin-conflict.php:139
msgid "Configure %1$s's XML Sitemap settings"
msgid "Debug Information"
msgstr "Information de débug"
-#: admin/class-pointers.php:235
-msgid "Determine who has access to the plugins advanced settings on the post edit screen."
-msgstr "Définit qui a accès aux réglages avancés des extensions dans le menu d'édition d'un article."
-
#: admin/class-pointers.php:248
msgid "Email"
msgstr "E-mail"
msgstr "Facebook Insights et Admins"
#: admin/google_search_console/class-gsc-category-filters.php:114
-msgid "Faulty redirects"
-msgstr "Redirections défectueuses"
-
-#: admin/class-meta-columns.php:46
-msgid "Focus KW"
-msgstr "Mot-clé principal"
-
-#: admin/class-meta-columns.php:335
-msgid "Focus keyword not set."
-msgstr "Mot-clé principal non défini."
-
-#: admin/class-pointers.php:230
-msgid "General settings"
-msgstr "Réglages généraux"
-
-#: admin/google_search_console/class-gsc-category-filters.php:117
-msgid "Google was unable to crawl this URL due to an undetermined issue."
-msgstr "Google n'a pas pu exploré cette adresse en raison d'un problème indéterminé."
-
-#: admin/google_search_console/class-gsc-category-filters.php:119
-msgid "Googlebot could access your site, but certain URLs are blocked for Googlebot in your %1$s file. This block could either be for all Googlebots or even specifically for Googlebot-mobile."
-msgstr "Le Googlebot pourrait accéder à votre site, mais l'accès à certaines adresses est bloqué dans votre %1$s. Ce blocage pourrait être pour tous les Googlebot ou uniquement pour le Googlebot-mobile."
-
-#. translators: %1$s and %2$s expand to a link to the Yoast Knowledge Base
-#: admin/class-social-facebook.php:322
-msgid "If you don't know where to find the needed ID, see %1$sthis knowledge base article%2$s."
-msgstr "Si vous ne savez pas où trouver l'ID nécessaire, référez-vous à %1$scet article de notre base de connaissance%2$s."
-
-#. translators: %s expands to the social network's name
-#: admin/class-social-admin.php:36
-msgid "If you don't want to use the meta description for sharing the post on %s but want another description there, write it here."
-msgstr "Si vous ne souhaitez pas utiliser la méta description pour partager l'article sur %s mais voulez une autre description, inscrivez-la ici."
+msgid "Faulty redirects"
+msgstr "Redirections défectueuses"
-#. translators: %s expands to the social network's name
-#: admin/class-social-admin.php:34
-msgid "If you don't want to use the post title for sharing the post on %s but instead want another title there, write it here."
-msgstr "Si vous ne souhaitez pas utiliser le titre de l'article sur %s mais voulez au contraire un autre titre, enregistrez-le ici."
+#: admin/class-meta-columns.php:46
+msgid "Focus KW"
+msgstr "Mot-clé principal"
-#: admin/class-pointers.php:303
-msgid "If you want to exclude certain post types and/or taxonomies, you can also set that on this page."
-msgstr "Si vous souhaitez exclure certains types de contenu et/ou des taxonomies, vous pouvez également le faire sur cette page."
+#: admin/class-meta-columns.php:335
+msgid "Focus keyword not set."
+msgstr "Mot-clé principal non défini."
-#. translators: %s expands to the social network's name
-#: admin/class-social-admin.php:38
-msgid "If you want to override the image used on %s for this post, upload / choose an image or add the URL here."
-msgstr "Si vous voulez remplacer l'image utilisée pour cet article sur %s, téléchargez/choisissez une image ou ajoutez son URL ici."
+#: admin/class-pointers.php:230
+msgid "General settings"
+msgstr "Réglages généraux"
#. translators: %1$s expands to Yoast SEO
#: admin/class-pointers.php:245
msgid "If you would like us to keep you up-to-date regarding %1$s and other plugins by Yoast, subscribe to our newsletter:"
msgstr "Si vous voulez être tenu informé des nouveautés relatives à %1$s et aux autres extensions de Yoast, abonnez-vous à notre newsletter :"
-#: admin/class-pointers.php:304
-msgid "Is your webserver low on memory? Decrease the entries per sitemap (default: 1000) to reduce load."
-msgstr "Est-ce que votre serveur manque de mémoire ? Diminuez le nombre d'entrées du plan du site (par défaut : 1000) pour réduire la charge."
-
#: admin/class-pointers.php:335 admin/pages/licenses.php:78
msgid "Licenses"
msgstr "Licences"
msgid "Meta Desc."
msgstr "Méta Desc."
-#: admin/taxonomy/class-taxonomy-settings-fields.php:38
-msgid "Meta keywords used on the archive page for this term."
-msgstr "Meta keywords utilisé sur la page d'archive pour ce terme."
-
#. translators: %1$s expands to Yoast SEO
#: admin/class-pointers.php:238
msgid "More %1$s"
msgstr "En savoir plus sur %1$s"
-#. translators: %1$s and %2$s expand to a link to the Yoast Knowledge Base
-#: admin/class-social-facebook.php:301
-msgid "More info can be found %1$son our knowledge base%2$s."
-msgstr "Retrouvez plus d'information %1$sdans notre base de connaissance%2$s."
-
#: admin/taxonomy/class-taxonomy-settings-fields.php:92
#: admin/taxonomy/class-taxonomy.php:61
msgid "Never include"
msgid "OK"
msgstr "OK"
-#: admin/class-pointers.php:269
-msgid "On the Other tab you can change sitewide meta settings, like enable meta keywords."
-msgstr "Dans l'onglet Autre, vous pouvez modifier les réglages des méta pour tout le site, comme par exemple, activer les méta keywords."
-
-#: admin/class-pointers.php:268
-msgid "On the archives tab you can set templates for specific pages like author archives, search results and more."
-msgstr "Dans l'onglet des archives vous pouvez maintenant créer des modèles pour des pages spécifiques comme celles des archives d'auteur, des résultats de recherche et bien d'autres."
-
-#: admin/class-pointers.php:283
-msgid "On this tab you can enable the %1$sFacebook Open Graph%2$s functionality from this plugin, as well as assign a Facebook user or Application to be the admin of your site, so you can view the Facebook insights."
-msgstr "Dans cet onglet, vous pouvez activer la fonctionnalité de l'%1$sOpen Graph de Facebook%2$s, afin d'affecter à un utilisateur Facebook ou à une Application l'administration de votre site, et que vous puissiez voir les statistiques de Facebook."
-
#: admin/class-pointers.php:286
msgid "On this tab you can verify your site with Pinterest and enter your Pinterest account."
msgstr "Dans cet onglet, vous pouvez vérifier votre site avec Pinterest et saisir les données de votre compte Pinterest."
-#. translators: %1$s expands to Yoast SEO Premium
-#: admin/class-pointers.php:337
-msgid "Once you’ve purchased %1$s or any other premium Yoast plugin, you’ll have to enter a license key. You can do so on the Licenses-tab. Once you’ve activated your premium plugin, you can use all its powerful features."
-msgstr "Après l'achat de %1$s ou d'une autre extension premium de Yoast, vous devrez entrer une clé de licence. Vous pouvez le faire dans l'onglet Licences. Une fois votre extension premium activée, vous pouvez utiliser toutes ses puissantes fonctionnalités."
-
#: admin/class-pointers.php:269
#: admin/google_search_console/class-gsc-category-filters.php:117
#: admin/pages/metas.php:25
msgstr "Merci de vous assurez que les deux champs soient remplis."
#. translators: %s expands to <code>noindex</code>
-#: admin/class-yoast-dashboard-widget.php:155
+#: admin/class-yoast-dashboard-widget.php:158
msgid "Posts that are set to %s"
msgstr "Les articles sont réglés sur %s."
-#: admin/class-yoast-dashboard-widget.php:152
+#: admin/class-yoast-dashboard-widget.php:155
msgid "Posts with OK SEO score"
msgstr "Articles avec un score SEO OK"
-#: admin/class-yoast-dashboard-widget.php:151
+#: admin/class-yoast-dashboard-widget.php:154
msgid "Posts with bad SEO score"
msgstr "articles avec un mauvais score SEO "
-#: admin/class-yoast-dashboard-widget.php:153
+#: admin/class-yoast-dashboard-widget.php:156
msgid "Posts with good SEO score"
msgstr "Articles avec un bon score SEO"
-#: admin/class-yoast-dashboard-widget.php:150
+#: admin/class-yoast-dashboard-widget.php:153
msgid "Posts without focus keyword"
msgstr "Articles sans mot clé principal"
msgid "SEO: Post Noindexed"
msgstr "SEO : Article non indexé"
-#: admin/google_search_console/class-gsc-category-filters.php:113
-msgid "Server requires authentication or is blocking Googlebot from accessing the site."
-msgstr "Le serveur nécessite une authentification ou bloque l'accès au site au Googlebot."
-
#: admin/class-pointers.php:266
msgid "Sitewide settings"
msgstr "Réglages au niveau du site"
-#: admin/class-pointers.php:339
-msgid "So, we’ve come to the end of the tour. If you like the plugin, please %srate it 5 stars on WordPress.org%s!"
-msgstr "Nous sommes arrivés à la fin de la visite. Si vous aimez l'extension, s'il vous plaît %sdonnez-lui 5 étoiles sur WordPress.org%s !"
-
#: admin/class-pointers.php:282
msgid "Social settings"
msgstr "Réglages réseaux sociaux"
-#: admin/class-pointers.php:182 admin/pages/dashboard.php:161
+#: admin/class-pointers.php:182 admin/pages/dashboard.php:162
msgid "Start Tour"
msgstr "Commencer la visite"
msgid "Templates and settings"
msgstr "Modèles et réglages"
-#: admin/class-pointers.php:340
-msgid "Thank you for using our plugin and good luck with your SEO!<br/><br/>Best,<br/>Team Yoast - %1$sYoast.com%2$s"
-msgstr "Merci d'utiliser notre extension et bonne chance avec votre référencement !<br/><br/>Cordialement<br/>L'équipe Yoast - %1$sYoast.com%2$s"
-
-#. translators: %1$s: 'Facebook & Open Graph' plugin name(s) of possibly
-#. conflicting plugin(s), %2$s to Yoast SEO
-#: admin/class-yoast-plugin-conflict.php:163
-msgid "The %1$s plugin(s) might cause issues when used in conjunction with %2$s."
-msgstr "L'extension(s) %1$s pourrai(en)t provoquer des problèmes si utiliser en conjonction avec %2$s."
-
-#. translators: %s expands to the taxonomy name
-#: admin/taxonomy/class-taxonomy-settings-fields.php:50
-msgid "The Breadcrumbs title is used in the breadcrumbs where this %s appears."
-msgstr "Le titre est utilisé dans le fil d'Ariane où %s apparaît."
-
-#: admin/taxonomy/class-taxonomy-settings-fields.php:45
-msgid "The canonical link is shown on the archive page for this term."
-msgstr "Le lien canonique s'affiche sur la page d'archive pour ce terme."
-
-#: admin/metabox/class-metabox.php:745
-msgid "The featured image should be at least 200x200 pixels to be picked up by Facebook and other social media sites."
-msgstr "L'image à la Une doit être au moins de 200 x 200 pixels pour être capté par Facebook et d'autres sites de médias sociaux."
-
-#: admin/class-pointers.php:266
-msgid "The first tab will show you site-wide settings for titles, normally you'll only need to change the Title Separator."
-msgstr "Le premier onglet présente les réglages généraux pour les titres, normalement vous n'aurez besoin de modifier que le séparateur de titres."
-
-#: admin/class-pointers.php:284
-msgid "The frontpage settings allow you to set meta-data for your homepage, whereas the default settings allow you to set a fallback for all posts/pages without images. "
-msgstr "Les paramètres de première page vous permettent de définir des méta-données pour votre page d'accueil, alors que les paramètres par défaut vous permettent de définir une configuration pour tous les articles / pages sans images."
-
-#. translators: %1$s expands to Yoast SEO, %2$s to Yoast SEO Premium, %3$s and
-#. %4$s to an anchor with link about our premium plugins
-#: admin/class-pointers.php:333
-msgid "The powerful functions of %1$s can be extended with %3$sYoast premium plugins%4$s. These premium plugins require the installation of %1$s or %2$s and add specific functionality. You can read all about the Yoast Premium Plugins %3$shere%4$s."
-msgstr "Les puissantes fonctions de %1$s peuvent être encore améliorées avec les %3$sPlugins Yoast Premium%4$s. Ces extensions premium nécessitent l'installation de %1$s ou de %2$s et ajoutent des fonctionnalités spécifiques. Vous pouvez en savoir plus au sujet de ces extensions Yoast Premium en cliquant %3$sici%4$s."
-
-#. translators: %1$s expands to the social network, %2$s to the recommended
-#. image size
-#. translators: %1$s expands to the social network name, %2$s expands to the
-#. image size
-#: admin/class-social-admin.php:40
-#: admin/taxonomy/class-taxonomy-social-fields.php:63
-msgid "The recommended image size for %1$s is %2$spx."
-msgstr "La taille d'image recommandée pour %1$s est de %2$spx."
-
-#: admin/class-pointers.php:267
-msgid "The templates are built using variables. You can find all these variables in the help tab (in the top-right corner of the page). The settings allow you to set specific behavior for the post types."
-msgstr "Les modèles sont construits à base de variables. Vous pouvez retrouvez l'ensemble des variables dans l'onglet Aide (en haut à droite de la page). Les paramètres vous permettent de définir un comportement spécifique pour les types de contenu."
-
-#: admin/class-pointers.php:241
-msgid "There’s more to learn about WordPress & SEO than just using this plugin. A great start is our article %1$sthe definitive guide to WordPress SEO%2$s."
-msgstr "Il existe d'autres ressources concernant WordPress et le SEO qui dépassent l'usage de cette extension. Un très bon début est notre article %1$sle guide ultime du SEO pour WordPress%2$s"
-
#. translators: %1$s expands to Yoast SEO
#: admin/class-pointers.php:232
msgid "These are the General settings for %1$s, here you can restart this tour or revert the %1$s settings to default."
msgstr "Ce sont les réglages généraux de %1$s, vous pouvez relancer la présentation ou revenir aux réglages de %1$s par défaut."
-#. translators: %s expands to taxonomy name
-#: admin/taxonomy/class-taxonomy-settings-fields.php:59
-msgid "This %s follows the indexation rules set under Metas and Titles, you can override it here."
-msgstr "Ce %s suit les règles d'indexation définies dans les Métas et Titres, vous pouvez les remplacer ici."
-
#: admin/class-social-facebook.php:119
msgid "This Facebook user has already been added as an admin."
msgstr "Cet utilisateur Facebook a déjà été ajouté comme administrateur."
msgid "This plugin adds XML sitemaps to your site. The sitemaps are automatically updated when you publish a new post, page or custom post and Google and Bing will be automatically notified."
msgstr "Cette extension ajoute des cartes XML à votre site. Ces cartes sont automatiquement mises à jour lorsque vous publiez un nouvel article, une nouvelle page ou que vous modifiez un article. Les modifications sont automatiquement répercutées sur Google et Bing."
-#: admin/class-pointers.php:287
-msgid "This tab allows you to add specific post meta data for Google+. And if you have a Google+ page for your business, add that URL here and link it on your %1$sGoogle+%2$s page’s about page."
-msgstr "Cet onglet vous permet d'ajouter des méta-données spécifiques à soumettre à Google+. Et si vous avez une page Google+ pour votre entreprise, ajoutez l'URL ici et reliez-la à la page A propos de votre page %1$sGoogle+%2$"
-
#. translators: %1$s expands to Yoast SEO
#: admin/class-yoast-plugin-conflict.php:176
msgid "This warning is generated by %1$s."
msgid "Title & Metas settings"
msgstr "Réglages Titre et Métas"
-#. translators: %1$s and %2$s expand to a link to Facebook Insights
-#: admin/class-social-facebook.php:318
-msgid "To be able to access %1$sFacebook Insights%2$s, you need to add a user here. The name is used for reference only, the ID is used for verification."
-msgstr "Pour être en mesure d'accéder à %1$sFacebook Insights%2$s, vous devez ajouter un utilisateur ici. Le nom est utilisé à titre indicatif, l'ID est utilisée pour la vérification."
-
#: admin/class-social-facebook.php:293
msgid "To be able to access %sFacebook Insights%s for your site, you need to specify a Facebook Admin. This can be a user. If you have an app for your site, you could use that as well."
msgstr "Pour pouvoir accéder à %sFacebook Insights %s pour votre site, vous devez spécifier un administrateur Facebook. Cela peut être un utilisateur. Si vous avez une application pour votre site, vous pouvez aussi l'utiliser."
msgid "Twitter"
msgstr "Twitter"
-#: admin/google_search_console/class-gsc-category-filters.php:116
-msgid "URL points to a non-existent page."
-msgstr "L'adresse pointe vers une page inexistante."
-
#. translators: %1$s expands to Yoast SEO Premium
#: admin/class-yoast-form.php:235
msgid "Upgrade to %1$s »"
msgid "What are XML sitemaps?"
msgstr "En quoi consistent les plans de site au format XML ?"
-#: admin/class-pointers.php:302
-msgid "What does the plugin do with XML Sitemaps?"
-msgstr "Que fait l'extension avec les Sitemaps XML ?"
-
#: admin/class-pointers.php:285
msgid "With %1$sTwitter Cards%2$s, you can attach rich photos, videos and media experience to tweets that drive traffic to your website. Simply check the box, sign up for the service, and users who Tweet links to your content will have a “Card” added to the tweet that’s visible to all of their followers."
msgstr "Avec les %1$sCartes Twitter %2$s, vous pouvez joindre des photos, des vidéos et autres médias à vos tweets qui génèrent du trafic vers votre site. Il suffit de cocher la case, enregistrez-vous pour le service et les utilisateurs qui tweetent des liens vers votre contenu auront une “Carte” ajoutée dans leur tweet qui sera visible à tous leurs contacts. "
msgid "You can add the verification codes for the different Webmaster Tools programs here. We highly encourage you to check out both Google and Bing’s Webmaster Tools."
msgstr "Vous pouvez ajouter ici les codes de vérification des différents programmes de Webmaster Tools. Nous vous encourageons vivement à vérifier les outils pour Webmaster de Google et de Bing."
-#. translators: %1$s expands to Yoast SEO
-#: admin/class-pointers.php:176
-msgid "You’ve just installed %1$s! Click “Start Tour” to view a quick introduction of this plugin’s core functionality."
-msgstr "Vous venez d'installer %1$s ! Cliquez sur \"Commencer la visite\" pour afficher une rapide introduction des fonctions de base de l'extension."
+#: admin/class-social-facebook.php:116
+msgid "Your input contains invalid characters. Please make sure both fields are filled in correctly."
+msgstr "Votre saisie contient des caractères non valides. Veuillez vérifier que les deux champs soient correctement remplis."
+
+#: admin/class-pointers.php:303
+msgid "If you want to exclude certain post types and/or taxonomies, you can also set that on this page."
+msgstr "Si vous souhaitez exclure certains types de contenu et/ou des taxinomies, vous pouvez également le faire sur cette page."
+
+#. translators: %1$s and %2$s expand to a link to the Yoast Knowledge Base
+#: admin/class-social-facebook.php:322
+msgid "If you don't know where to find the needed ID, see %1$sthis knowledge base article%2$s."
+msgstr "Si vous ne savez pas où trouver l’ID nécessaire, référez-vous à %1$scet article de notre base de connaissance%2$s."
+
+#. translators: %s is the plugin name
+#: admin/class-yoast-dashboard-widget.php:41
+msgid "%s Posts Overview"
+msgstr "Vue d’ensemble des articles de %s"
+
+#. translators: %1$s: 'Facebook & Open Graph' plugin name(s) of possibly
+#. conflicting plugin(s), %2$s to Yoast SEO
+#: admin/class-yoast-plugin-conflict.php:163
+msgid "The %1$s plugin(s) might cause issues when used in conjunction with %2$s."
+msgstr "L’extension(s) %1$s pourrai(en)t provoquer des problèmes si utiliser en conjonction avec %2$s."
+
+#: admin/google_search_console/class-gsc-category-filters.php:113
+msgid "Server requires authentication or is blocking Googlebot from accessing the site."
+msgstr "Le serveur nécessite une authentification ou bloque l’accès au site au Googlebot."
+
+#: admin/google_search_console/class-gsc-category-filters.php:116
+msgid "URL points to a non-existent page."
+msgstr "L’adresse pointe vers une page inexistante."
+
+#: admin/google_search_console/class-gsc-category-filters.php:117
+msgid "Google was unable to crawl this URL due to an undetermined issue."
+msgstr "Google n’a pas pu exploré cette adresse en raison d’un problème indéterminé."
+
+#: admin/google_search_console/class-gsc-category-filters.php:119
+msgid "Googlebot could access your site, but certain URLs are blocked for Googlebot in your %1$s file. This block could either be for all Googlebots or even specifically for Googlebot-mobile."
+msgstr "Le Googlebot pourrait accéder à votre site, mais l’accès à certaines adresses est bloqué dans votre %1$s. Ce blocage pourrait être pour tous les Googlebot ou uniquement pour le Googlebot-mobile."
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/class-plugin-conflict.php:132
+msgid "Configure %1$s's OpenGraph settings"
+msgstr "Configurer les réglages de l’OpenGraph de %1$s"
+
+#. translators: %1$s and %2$s expand to a link to the Yoast Knowledge Base
+#: admin/class-social-facebook.php:301
+msgid "More info can be found %1$son our knowledge base%2$s."
+msgstr "Retrouvez plus d’information %1$sdans notre base de connaissance%2$s."
+
+#. translators: %1$s and %2$s expand to a link to Facebook Insights
+#: admin/class-social-facebook.php:318
+msgid "To be able to access %1$sFacebook Insights%2$s, you need to add a user here. The name is used for reference only, the ID is used for verification."
+msgstr "Pour être en mesure d’accéder à %1$sFacebook Insights%2$s, vous devez ajouter un utilisateur ici. Le nom est utilisé à titre indicatif, l’ID est utilisée pour la vérification."
+
+#: admin/class-social-facebook.php:325
+msgid "Admin's name:"
+msgstr "Nom de l’administrateur :"
+
+#: admin/class-social-facebook.php:329
+msgid "Admin's Facebook user ID:"
+msgstr "ID d’utilisateur Facebook de l’administrateur :"
+
+#. translators: %1$s expands to the social network, %2$s to the recommended
+#. image size
+#. translators: %1$s expands to the social network name, %2$s expands to the
+#. image size
+#: admin/class-social-admin.php:40
+#: admin/taxonomy/class-taxonomy-social-fields.php:63
+msgid "The recommended image size for %1$s is %2$spx."
+msgstr "La taille d’image recommandée pour %1$s est de %2$spx."
+
+#: admin/metabox/class-metabox.php:746
+msgid "The featured image should be at least 200x200 pixels to be picked up by Facebook and other social media sites."
+msgstr "L’image à la Une doit être au moins de 200 x 200 pixels pour être capté par Facebook et d’autres sites de médias sociaux."
+
+#. translators: %1$s expands to Yoast SEO, %2%s: 'Facebook' plugin name of
+#. possibly conflicting plugin with regard to creating OpenGraph output
+#: admin/class-plugin-conflict.php:128
+msgid "Both %1$s and %2$s create OpenGraph output, which might make Facebook, Twitter, LinkedIn and other social networks use the wrong texts and images when your pages are being shared."
+msgstr "%1$s et %2$s créent des sorties OpenGraph, ce qui pourrait faire que Facebook, Twitter, LinkedIn et d’autres réseaux sociaux utilisent de mauvais textes et de mauvaises images lorsque vos pages sont partagées."
+
+#. translators: %1$s expands to Yoast SEO, %2$s: 'Google XML Sitemaps' plugin
+#. name of possibly conflicting plugin with regard to the creation of sitemaps
+#: admin/class-plugin-conflict.php:135
+msgid "Both %1$s and %2$s can create XML sitemaps. Having two XML sitemaps is not beneficial for search engines, yet might slow down your site."
+msgstr "%1$s et %2$s peuvent créer des sitemaps XML. Avoir deux sitemaps XML n’est pas recommandé pour les moteurs de recherche, et pourrait même ralentir votre site."
+
+#: admin/class-pointers.php:235
+msgid "Determine who has access to the plugins advanced settings on the post edit screen."
+msgstr "Définit qui a accès aux réglages avancés des extensions dans le menu d’édition d’un article."
+
+#: admin/class-pointers.php:266
+msgid "The first tab will show you site-wide settings for titles, normally you'll only need to change the Title Separator."
+msgstr "Le premier onglet présente les réglages généraux pour les titres, normalement vous n’aurez besoin de modifier que le séparateur de titres."
+
+#: admin/class-pointers.php:268
+msgid "On the archives tab you can set templates for specific pages like author archives, search results and more."
+msgstr "Dans l’onglet des archives vous pouvez maintenant créer des modèles pour des pages spécifiques comme celles des archives d’auteur, des résultats de recherche et bien d’autres."
+
+#: admin/class-pointers.php:269
+msgid "On the Other tab you can change sitewide meta settings, like enable meta keywords."
+msgstr "Dans l’onglet Autre, vous pouvez modifier les réglages des méta pour tout le site, comme par exemple, activer les méta keywords."
+
+#. translators: %1$s expands to Yoast SEO, %2$s to Yoast SEO Premium, %3$s and
+#. %4$s to an anchor with link about our premium plugins
+#: admin/class-pointers.php:333
+msgid "The powerful functions of %1$s can be extended with %3$sYoast premium plugins%4$s. These premium plugins require the installation of %1$s or %2$s and add specific functionality. You can read all about the Yoast Premium Plugins %3$shere%4$s."
+msgstr "Les puissantes fonctions de %1$s peuvent être encore améliorées avec les %3$sPlugins Yoast Premium%4$s. Ces extensions premium nécessitent l’installation de %1$s ou de %2$s et ajoutent des fonctionnalités spécifiques. Vous pouvez en savoir plus au sujet de ces extensions Yoast Premium en cliquant %3$sici%4$s."
+
+#: admin/class-pointers.php:340
+msgid "Thank you for using our plugin and good luck with your SEO!<br/><br/>Best,<br/>Team Yoast - %1$sYoast.com%2$s"
+msgstr "Merci d’utiliser notre extension et bonne chance avec votre référencement !<br/><br/>Cordialement<br/>L’équipe Yoast - %1$sYoast.com%2$s"
+
+#. translators: %s expands to the social network's name
+#: admin/class-social-admin.php:34
+msgid "If you don't want to use the post title for sharing the post on %s but instead want another title there, write it here."
+msgstr "Si vous ne souhaitez pas utiliser le titre de l’article sur %s mais voulez au contraire un autre titre, enregistrez-le ici."
+
+#. translators: %s expands to the social network's name
+#: admin/class-social-admin.php:36
+msgid "If you don't want to use the meta description for sharing the post on %s but want another description there, write it here."
+msgstr "Si vous ne souhaitez pas utiliser la méta description pour partager l’article sur %s mais voulez une autre description, inscrivez-la ici."
+
+#. translators: %s expands to the social network's name
+#: admin/class-social-admin.php:38
+msgid "If you want to override the image used on %s for this post, upload / choose an image or add the URL here."
+msgstr "Si vous voulez remplacer l’image utilisée pour cet article sur %s, téléchargez/choisissez une image ou ajoutez son URL ici."
+
+#: admin/class-pointers.php:241
+msgid "There’s more to learn about WordPress & SEO than just using this plugin. A great start is our article %1$sthe definitive guide to WordPress SEO%2$s."
+msgstr "Il existe d’autres ressources concernant WordPress et le SEO qui dépassent l’usage de cette extension. Un très bon début est notre article %1$sle guide ultime du SEO pour WordPress%2$s"
+
+#: admin/class-pointers.php:265
+msgid "This is where you\tset the titles and meta-information for all your post types, taxonomies, archives, special pages and for your homepage. The page is divided into different tabs. Make sure you check ’em all out!"
+msgstr "Vous pouvez définir ici les titres et les méta-informations pour vos types de contenus, taxinomies, archives, pages spéciales, et page d’accueil. Cette page est divisée en plusieurs onglets, pensez à tous les visiter !"
+
+#: admin/class-pointers.php:267
+msgid "The templates are built using variables. You can find all these variables in the help tab (in the top-right corner of the page). The settings allow you to set specific behavior for the post types."
+msgstr "Les modèles sont construits à base de variables. Vous pouvez retrouvez l’ensemble des variables dans l’onglet Aide (en haut à droite de la page). Les paramètres vous permettent de définir un comportement spécifique pour les types de contenu."
+
+#: admin/class-pointers.php:283
+msgid "On this tab you can enable the %1$sFacebook Open Graph%2$s functionality from this plugin, as well as assign a Facebook user or Application to be the admin of your site, so you can view the Facebook insights."
+msgstr "Dans cet onglet, vous pouvez activer la fonctionnalité de l’%1$sOpen Graph de Facebook%2$s, afin d’affecter à un utilisateur Facebook ou à une Application l’administration de votre site, et que vous puissiez voir les statistiques de Facebook."
+
+#: admin/class-pointers.php:284
+msgid "The frontpage settings allow you to set meta-data for your homepage, whereas the default settings allow you to set a fallback for all posts/pages without images. "
+msgstr "Les paramètres de première page vous permettent de définir des méta-données pour votre page d’accueil, alors que les paramètres par défaut vous permettent de définir une configuration pour tous les articles / pages sans images."
+
+#: admin/class-pointers.php:287
+msgid "This tab allows you to add specific post meta data for Google+. And if you have a Google+ page for your business, add that URL here and link it on your %1$sGoogle+%2$s page’s about page."
+msgstr "Cet onglet vous permet d’ajouter des méta-données spécifiques à soumettre à Google+. Et si vous avez une page Google+ pour votre entreprise, ajoutez l’URL ici et reliez-la à la page A propos de votre page %1$sGoogle+%2$"
+
+#: admin/class-pointers.php:301
+msgid "A Sitemap is an XML file that lists the URLs for a site. It allows webmasters to include additional information about each URL: when it was last updated, how often it changes, and how important it is in relation to other URLs in the site. This allows search engines to crawl the site more intelligently."
+msgstr "Un plan de site est un fichier XML qui recense les URLs d’un site. Il permet aux webmasters d’inclure des informations complémentaires à propos de chaque URL: quand il a été mis à jour pour la dernière fois, à quelle fréquence il change, son importance par rapport aux autres URLs du site. Cela permet aux moteurs de recherche de parcourir le site de manière plus intelligente."
+
+#: admin/class-pointers.php:302
+msgid "What does the plugin do with XML Sitemaps?"
+msgstr "Que fait l’extension avec les Sitemaps XML ?"
+
+#: admin/class-pointers.php:304
+msgid "Is your webserver low on memory? Decrease the entries per sitemap (default: 1000) to reduce load."
+msgstr "Est-ce que votre serveur manque de mémoire ? Diminuez le nombre d’entrées du plan du site (par défaut : 1000) pour réduire la charge."
+
+#. translators: %1$s expands to Yoast SEO Premium
+#: admin/class-pointers.php:337
+msgid "Once you’ve purchased %1$s or any other premium Yoast plugin, you’ll have to enter a license key. You can do so on the Licenses-tab. Once you’ve activated your premium plugin, you can use all its powerful features."
+msgstr "Après l’achat de %1$s ou d’une autre extension premium de Yoast, vous devrez entrer une clé de licence. Vous pouvez le faire dans l’onglet Licences. Une fois votre extension premium activée, vous pouvez utiliser toutes ses puissantes fonctionnalités."
+
+#: admin/class-pointers.php:339
+msgid "So, we’ve come to the end of the tour. If you like the plugin, please %srate it 5 stars on WordPress.org%s!"
+msgstr "Nous sommes arrivés à la fin de la visite. Si vous aimez l’extension, s’il vous plaît %sdonnez-lui 5 étoiles sur WordPress.org%s !"
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/class-pointers.php:176
+msgid "You’ve just installed %1$s! Click “Start Tour” to view a quick introduction of this plugin’s core functionality."
+msgstr "Vous venez d’installer %1$s ! Cliquez sur \"Commencer la visite\" pour afficher une rapide introduction des fonctions de base de l’extension."
+
+#. translators: %s expands to taxonomy name
+#: admin/taxonomy/class-taxonomy-settings-fields.php:59
+msgid "This %s follows the indexation rules set under Metas and Titles, you can override it here."
+msgstr "Ce %s suit les règles d’indexation définies dans les Métas et Titres, vous pouvez les remplacer ici."
+
+#: admin/taxonomy/class-taxonomy-settings-fields.php:38
+msgid "Meta keywords used on the archive page for this term."
+msgstr "Meta keywords utilisé sur la page d’archive pour ce terme."
+
+#: admin/taxonomy/class-taxonomy-settings-fields.php:45
+msgid "The canonical link is shown on the archive page for this term."
+msgstr "Le lien canonique s’affiche sur la page d’archive pour ce terme."
-#: admin/class-social-facebook.php:116
-msgid "Your input contains invalid characters. Please make sure both fields are filled in correctly."
-msgstr "Votre saisie contient des caractères non valides. Veuillez vérifier que les deux champs soient correctement remplis."
+#. translators: %s expands to the taxonomy name
+#: admin/taxonomy/class-taxonomy-settings-fields.php:50
+msgid "The Breadcrumbs title is used in the breadcrumbs where this %s appears."
+msgstr "Le titre est utilisé dans le fil d’Ariane où %s apparaît."
-#: admin/class-pointers.php:265
-msgid "This is where you\tset the titles and meta-information for all your post types, taxonomies, archives, special pages and for your homepage. The page is divided into different tabs. Make sure you check ’em all out!"
-msgstr "Vous pouvez définir ici les titres et les méta-informations pour vos types de contenus, taxinomies, archives, pages spéciales, et page d'accueil. Cette page est divisée en plusieurs onglets, pensez à tous les visiter !"
+#: admin/pages/metas.php:146
+#: admin/taxonomy/class-taxonomy-settings-fields.php:48
+msgid "Breadcrumbs title"
+msgstr "Titre du fil d’Ariane"
#. translators: %1$s expands to Yoast SEO, %2$s expands to 5.4.3, %3$s expands
#. to Google Analytics by Yoast
msgid "%1$s has been updated to version %2$s. %3$sClick here%4$s to find out what's new!"
msgstr "%1$s a été mis à jour en version %2$s. %3$sCliquez ici%4$s pour découvrir toutes les nouveautés !"
-#. translators: %s is the name of the plugin
-#: admin/class-customizer.php:52
-msgid "%s Breadcrumbs"
-msgstr "Fil d'Ariane de %s"
-
-#: admin/metabox/class-metabox.php:297 admin/taxonomy/class-taxonomy.php:257
+#: admin/metabox/class-metabox.php:298 admin/taxonomy/class-taxonomy.php:258
msgid "(no parent)"
msgstr "(aucun parent)"
msgid "Action"
msgstr "Action"
-#: admin/class-admin.php:154 admin/metabox/class-metabox.php:418
-#: admin/metabox/class-metabox.php:420 admin/metabox/class-metabox.php:429
-#: admin/metabox/class-metabox.php:430 inc/wpseo-non-ajax-functions.php:426
+#: admin/class-admin.php:154 admin/metabox/class-metabox.php:419
+#: admin/metabox/class-metabox.php:421 admin/metabox/class-metabox.php:430
+#: admin/metabox/class-metabox.php:431 inc/wpseo-non-ajax-functions.php:426
msgid "Advanced"
msgstr "Avancé"
msgid "Advanced Variables"
msgstr "Variable Premium"
-#: admin/class-customizer.php:146
-msgid "Anchor text for the homepage:"
-msgstr "Texte d'ancrage pour la page d'accueil"
-
#: admin/class-admin.php:255 admin/class-admin.php:256
msgid "Basic Variables"
msgstr "Variables de base"
-#: admin/class-customizer.php:246
-msgid "Breadcrumb for 404 pages:"
-msgstr "Fil d'Ariane pour la page 404 "
-
-#: admin/metabox/class-metabox.php:89
-msgid "Breadcrumbs Title"
-msgstr "Titre pour le fil d'Ariane"
-
-#: admin/class-customizer.php:121
-msgid "Breadcrumbs separator:"
-msgstr "Séparateur pour le fil d'Ariane :"
-
#: admin/metabox/class-metabox.php:92
msgid "Canonical URL"
msgstr "URL canonique"
msgid "Check"
msgstr "Vérifier"
-#: admin/class-export.php:102
-msgid "Could not write settings to file."
-msgstr "Impossible d'écrire les réglages dans le fichier."
-
#: admin/class-export.php:97
msgid "Could not zip settings-file."
msgstr "Impossible de compresser (ZIP) le fichier des réglages."
msgid "Edit this item"
msgstr "Modifier cet objet"
-#. translators: %1$s expands to Yoast SEO
-#: admin/class-export.php:71
-msgid "Error creating %1$s export: "
-msgstr "Erreur de création de l'export de %1$s : "
-
#: admin/class-import-external.php:120
msgid "Error: no Robots Meta data found to import."
msgstr "Erreur : aucune métadonnée pour les robots à importer."
msgid "Follow"
msgstr "Suivre"
-#: admin/class-admin.php:238
-msgid "For more information:"
-msgstr "Pour plus d'information :"
-
#: admin/class-admin.php:211 admin/pages/dashboard.php:145
#: admin/pages/metas.php:20 admin/pages/xml-sitemaps.php:36
#: inc/wpseo-non-ajax-functions.php:402
msgid "HeadSpace2 data successfully imported"
msgstr "Les données de HeadSpace2 ont bien été importées."
-#: admin/class-admin.php:402
-msgid "Huge SEO Issue: You're blocking access to robots."
-msgstr "Important problème SEO : Vous bloquez actuellement l'accès aux robots des moteurs de recherche. "
-
-#: admin/class-admin.php:405 admin/class-admin.php:440
-msgid "I know, don't bug me."
-msgstr "Je sais, ne plus m'avertir."
-
#: admin/metabox/class-metabox.php:64
msgid "If you type something above it will override your %smeta keywords template%s."
msgstr "Si vous entrez quelque chose dans cette case, cela va remplacer votre %smodèle de méta keywords%s."
msgid "No Archive"
msgstr "Aucune archive"
-#: admin/metabox/class-metabox.php:85
-msgid "No Image Index"
-msgstr "Pas d'index pour l'image"
-
-#: admin/metabox/class-metabox.php:87
-msgid "No Snippet"
-msgstr "Pas d'aperçu"
-
#: admin/metabox/class-metabox.php:157
msgid "No focus keyword set."
msgstr "Mot-clé principal non défini."
-#: admin/class-import.php:151
-msgid "No settings found in file."
-msgstr "Aucun réglage n'a été trouvé dans le fichier."
-
#: admin/metabox/class-metabox.php:77
msgid "Nofollow"
msgstr "Ne pas suivre"
msgid "Page URL/Slug"
msgstr "URL/Identifiant de la page"
-#: admin/metabox/class-metabox.php:57
-#: admin/taxonomy/class-taxonomy-content-fields.php:25
-msgid "Pick the main keyword or keyphrase that this post/page is about.<br/><br/>Read %sthis post%s for more info."
-msgstr "Choisissez le mot-clé principal ou la phrase-clé principale de cet article/cette page.<br/><br/>Lisez %scet article%s pour plus d'infos."
-
-#: admin/class-bulk-editor-list-table.php:922
-msgid "Post Status"
-msgstr "État de l'article"
-
#: admin/class-bulk-editor-list-table.php:921
msgid "Post Type"
msgstr "Type de contenu"
-#: admin/ajax.php:218
-msgid "Post doesn't exist."
-msgstr "L'article n'existe pas."
-
-#: admin/ajax.php:227
-msgid "Post has an invalid Post Type: %s."
-msgstr "L'article a un type de contenu non valide : %s."
-
-#: admin/class-meta-columns.php:330 admin/metabox/class-metabox.php:150
-msgid "Post is set to noindex."
-msgstr "L'article est réglé sur noindex."
-
#: admin/class-admin.php:355
msgid "Posts"
msgstr "Articles"
-#: admin/class-customizer.php:196
-msgid "Prefix for archive pages:"
-msgstr "Préfixe pour les pages d'archive :"
-
-#: admin/class-customizer.php:171
-msgid "Prefix for breadcrumbs:"
-msgstr "Préfixe pour le fil d'Ariane :"
-
#: admin/class-customizer.php:221
msgid "Prefix for search result pages:"
msgstr "Préfixe pour les pages de résultats de recherche :"
msgid "RSS Footer options imported successfully."
msgstr "Les options de pied de page du fil RSS ont été importées avec succès."
-#: admin/class-customizer.php:86
-msgid "Remove blog page from breadcrumbs"
-msgstr "Retirer la page de blog du fil d'Ariane"
-
#: admin/class-admin.php:117 admin/class-admin.php:276
#: admin/class-meta-columns.php:43 inc/wpseo-non-ajax-functions.php:257
msgid "SEO"
msgid "SEO:"
msgstr "SEO :"
-#: admin/class-config.php:116
-msgid "See the help tab for more info."
-msgstr "Voir l'onglet d'aide pour plus d'informations."
-
-#: admin/class-import.php:173
-msgid "Setting \"%s\" is no longer used and has been discarded."
-msgstr "Le paramètre \"%s\" n'est plus disponible et a été désactivé"
-
#: admin/class-admin.php:456
#: admin/google_search_console/class-gsc-platform-tabs.php:40
#: admin/taxonomy/class-taxonomy-metabox.php:129
msgid "Settings"
msgstr "Réglages"
-#: admin/class-import.php:76 admin/class-import.php:82
-#: admin/class-import.php:88 admin/class-import.php:120
-#: admin/class-import.php:127 admin/class-import.php:151
-msgid "Settings could not be imported:"
-msgstr "Les réglagles n'ont pas été importés :"
-
#: admin/class-import.php:148
msgid "Settings successfully imported."
msgstr "Les réglages ont été importés avec succès."
msgid "Social"
msgstr "Réseaux sociaux"
-#: admin/ajax.php:119
-msgid "Some files could not be removed. Please remove them via FTP."
-msgstr "Plusieurs fichiers n'ont pas pu être supprimés. Veuillez le faire par le biais de votre logiciel FTP."
-
#: admin/class-admin.php:246
msgid "Template explanation"
msgstr "Explication des modèles"
-#: admin/metabox/class-metabox.php:96
-msgid "The URL that this page should redirect to."
-msgstr "L'URL vers laquelle cette page devrait rediriger."
-
-#: admin/metabox/class-metabox.php:93
-msgid "The canonical URL that this page should point to, leave empty to default to permalink. %sCross domain canonical%s supported too."
-msgstr "L'URL canonique qui devrait pointer sur cette page, laissez cette case vide pour utiliser le permalien par défaut. Les %sURLs canoniques vers d'autres domaines%s sont aussi supportées."
-
#. translators: %1$s expands to Yoast SEO
#: admin/class-admin.php:248
msgid "The title & metas settings for %1$s are made up of variables that are replaced by specific values from the page when the page is displayed. The tabs on the left explain the available variables."
msgstr "Les réglages des titres & métas pour %1$s utilisent des variables qui sont remplacées par des valeurs spécifiques de la page quand la page est affichée. Les onglets de gauche donnent des explications sur les variables disponibles."
-#: admin/metabox/class-metabox.php:51
-#: admin/taxonomy/class-taxonomy-content-fields.php:20
-msgid "This is a rendering of what this post might look like in Google's search results.<br/><br/>Read %sthis post%s for more info."
-msgstr "Voici une prévisualisation des résultats de recherche pour votre article sur Google.<br/><br/>Lire %sl'article%s pour plus d'informations."
-
-#. translators: %1$s expands to Yoast SEO
-#: admin/class-export.php:112
-msgid "This is a settings export file for the %1$s plugin by Yoast.com"
-msgstr "Ceci est un fichier d'exportation des réglages de l'extension %1$s de Yoast.com"
-
-#: admin/class-admin.php:239
-msgid "Title optimization"
-msgstr "Optimisation d'un titre"
-
-#: admin/metabox/class-metabox.php:90
-msgid "Title to use for this page in breadcrumb paths"
-msgstr "Titre à utiliser pour cette page dans le fil d'Ariane"
-
#: admin/class-admin.php:127 inc/wpseo-non-ajax-functions.php:408
msgid "Titles & Metas"
msgstr "Titres & Métas"
msgid "Unzipping failed - file settings.ini not found."
msgstr "Échec de la décompression - le fichier settings.ini est introuvable."
-#: admin/class-import.php:120
-msgid "Unzipping failed with error \"%s\"."
-msgstr "Échec de la décompression avec l'erreur \"%s\"."
-
-#: admin/class-import.php:88
-msgid "Upload failed."
-msgstr "L'envoi a échoué."
-
-#: admin/class-config.php:102 admin/metabox/class-metabox.php:758
-#: admin/taxonomy/class-taxonomy.php:101
-msgid "Use Image"
-msgstr "Utiliser l'image"
-
#: admin/class-bulk-editor-list-table.php:758
#: admin/google_search_console/class-gsc-table.php:209
msgid "View"
msgid "WP Page Title"
msgstr "Titre de la page"
-#: admin/metabox/class-metabox.php:69
-#: admin/taxonomy/class-taxonomy-settings-fields.php:105
-msgid "Warning: even though you can set the meta robots setting here, the entire site is set to noindex in the sitewide privacy settings, so these settings won't have an effect."
-msgstr "Attention : même si vous pouvez modifier les méta \"robots\" ici, tout votre site est réglé en mode \"noindex\" dans les réglages de vie privée, toute modification effectuée ici n'aura donc aucun effet. "
-
#. translators: %s: '%%term_title%%' variable used in titles and meta's
#. template that's not compatible with the given template
#: admin/class-config.php:116
msgid "Warning: the variable %s cannot be used in this template."
msgstr "Attention : la variable %s ne peut pas être utilisée avec ce modèle."
-#: admin/class-admin.php:240
-msgid "Why Google won't display the right page title"
-msgstr "Pourquoi Google n'affichera pas le bon titre de la page"
-
#: admin/class-import-woothemes-seo.php:29
msgid "WooThemes SEO framework settings & data successfully imported."
msgstr "Les réglages du framework WooThemes SEO ont bien été importés."
msgid "Yoast Breadcrumbs options imported successfully."
msgstr "Les options de Yoast Breadcrumbs ont été importées avec succès."
-#: admin/class-bulk-editor-list-table.php:133
-msgid "You are not allowed to access this page."
-msgstr "Vous n'êtes pas autorisé à accéder à cette page."
-
#: admin/ajax.php:243
msgid "You can't edit %s that aren't yours."
msgstr "Vous ne pouvez pas modifier les %s qui ne sont pas à/de vous."
msgid "This export includes taxonomy metadata"
msgstr "Cet export inclut les métadonnées des taxinomies."
+#: admin/class-customizer.php:196
+msgid "Prefix for archive pages:"
+msgstr "Préfixe pour les pages d’archive :"
+
+#: admin/class-customizer.php:171
+msgid "Prefix for breadcrumbs:"
+msgstr "Préfixe pour le fil d’Ariane :"
+
+#: admin/class-customizer.php:146
+msgid "Anchor text for the homepage:"
+msgstr "Texte d’ancrage pour la page d’accueil"
+
+#: admin/class-customizer.php:86
+msgid "Remove blog page from breadcrumbs"
+msgstr "Retirer la page de blog du fil d’Ariane"
+
+#. translators: %s is the name of the plugin
+#: admin/class-customizer.php:52
+msgid "%s Breadcrumbs"
+msgstr "Fil d’Ariane de %s"
+
+#: admin/class-customizer.php:121
+msgid "Breadcrumbs separator:"
+msgstr "Séparateur pour le fil d’Ariane :"
+
+#: admin/class-customizer.php:246
+msgid "Breadcrumb for 404 pages:"
+msgstr "Fil d’Ariane pour la page 404 "
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/class-export.php:71
+msgid "Error creating %1$s export: "
+msgstr "Erreur de création de l’export de %1$s : "
+
+#: admin/class-config.php:116
+msgid "See the help tab for more info."
+msgstr "Voir l’onglet d’aide pour plus d’informations."
+
+#: admin/class-export.php:102
+msgid "Could not write settings to file."
+msgstr "Impossible d’écrire les réglages dans le fichier."
+
#: admin/class-export.php:181
msgid "No taxonomy metadata found"
-msgstr "Aucune métadonnée de taxinomie n'a été trouvée."
+msgstr "Aucune métadonnée de taxinomie n’a été trouvée."
+
+#: admin/class-bulk-editor-list-table.php:133
+msgid "You are not allowed to access this page."
+msgstr "Vous n’êtes pas autorisé à accéder à cette page."
+
+#: admin/metabox/class-metabox.php:85
+msgid "No Image Index"
+msgstr "Pas d’index pour l’image"
+
+#: admin/metabox/class-metabox.php:51
+#: admin/taxonomy/class-taxonomy-content-fields.php:20
+msgid "This is a rendering of what this post might look like in Google's search results.<br/><br/>Read %sthis post%s for more info."
+msgstr "Voici une prévisualisation des résultats de recherche pour votre article sur Google.<br/><br/>Lire %sl’article%s pour plus d’informations."
+
+#: admin/metabox/class-metabox.php:69
+#: admin/taxonomy/class-taxonomy-settings-fields.php:105
+msgid "Warning: even though you can set the meta robots setting here, the entire site is set to noindex in the sitewide privacy settings, so these settings won't have an effect."
+msgstr "Attention : même si vous pouvez modifier les méta \"robots\" ici, tout votre site est réglé en mode \"noindex\" dans les réglages de vie privée, toute modification effectuée ici n’aura donc aucun effet. "
+
+#: admin/ajax.php:218
+msgid "Post doesn't exist."
+msgstr "L’article n’existe pas."
+
+#: admin/ajax.php:227
+msgid "Post has an invalid Post Type: %s."
+msgstr "L’article a un type de contenu non valide : %s."
+
+#: admin/class-bulk-editor-list-table.php:922
+msgid "Post Status"
+msgstr "État de l’article"
+
+#: admin/class-import.php:173
+msgid "Setting \"%s\" is no longer used and has been discarded."
+msgstr "Le paramètre \"%s\" n’est plus disponible et a été désactivé"
+
+#: admin/class-import.php:151
+msgid "No settings found in file."
+msgstr "Aucun réglage n’a été trouvé dans le fichier."
+
+#: admin/class-import.php:120
+msgid "Unzipping failed with error \"%s\"."
+msgstr "Échec de la décompression avec l’erreur \"%s\"."
+
+#: admin/class-admin.php:239
+msgid "Title optimization"
+msgstr "Optimisation d’un titre"
+
+#: admin/class-admin.php:238
+msgid "For more information:"
+msgstr "Pour plus d’information :"
+
+#: admin/class-config.php:102 admin/metabox/class-metabox.php:759
+#: admin/taxonomy/class-taxonomy.php:101
+msgid "Use Image"
+msgstr "Utiliser l’image"
+
+#: admin/class-admin.php:240
+msgid "Why Google won't display the right page title"
+msgstr "Pourquoi Google n’affichera pas le bon titre de la page"
+
+#: admin/metabox/class-metabox.php:57
+#: admin/taxonomy/class-taxonomy-content-fields.php:25
+msgid "Pick the main keyword or keyphrase that this post/page is about.<br/><br/>Read %sthis post%s for more info."
+msgstr "Choisissez le mot-clé principal ou la phrase-clé principale de cet article/cette page.<br/><br/>Lisez %scet article%s pour plus d’infos."
+
+#: admin/class-meta-columns.php:330 admin/metabox/class-metabox.php:150
+msgid "Post is set to noindex."
+msgstr "L’article est réglé sur noindex."
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/class-export.php:112
+msgid "This is a settings export file for the %1$s plugin by Yoast.com"
+msgstr "Ceci est un fichier d’exportation des réglages de l’extension %1$s de Yoast.com"
+
+#: admin/ajax.php:119
+msgid "Some files could not be removed. Please remove them via FTP."
+msgstr "Plusieurs fichiers n’ont pas pu être supprimés. Veuillez le faire par le biais de votre logiciel FTP."
+
+#: admin/class-admin.php:402
+msgid "Huge SEO Issue: You're blocking access to robots."
+msgstr "Important problème SEO : Vous bloquez actuellement l’accès aux robots des moteurs de recherche. "
+
+#: admin/class-admin.php:405 admin/class-admin.php:440
+msgid "I know, don't bug me."
+msgstr "Je sais, ne plus m’avertir."
+
+#: admin/class-import.php:76 admin/class-import.php:82
+#: admin/class-import.php:88 admin/class-import.php:120
+#: admin/class-import.php:127 admin/class-import.php:151
+msgid "Settings could not be imported:"
+msgstr "Les réglagles n’ont pas été importés :"
+
+#: admin/class-import.php:88
+msgid "Upload failed."
+msgstr "L’envoi a échoué."
+
+#: admin/metabox/class-metabox.php:89
+msgid "Breadcrumbs Title"
+msgstr "Titre pour le fil d’Ariane"
+
+#: admin/metabox/class-metabox.php:87
+msgid "No Snippet"
+msgstr "Pas d’aperçu"
+
+#: admin/metabox/class-metabox.php:90
+msgid "Title to use for this page in breadcrumb paths"
+msgstr "Titre à utiliser pour cette page dans le fil d’Ariane"
+
+#: admin/metabox/class-metabox.php:93
+msgid "The canonical URL that this page should point to, leave empty to default to permalink. %sCross domain canonical%s supported too."
+msgstr "L’URL canonique qui devrait pointer sur cette page, laissez cette case vide pour utiliser le permalien par défaut. Les %sURLs canoniques vers d’autres domaines%s sont aussi supportées."
+
+#: admin/metabox/class-metabox.php:96
+msgid "The URL that this page should redirect to."
+msgstr "L’URL vers laquelle cette page devrait rediriger."
# This file is distributed under the same license as the Twenty Sixteen package.
msgid ""
msgstr ""
-"PO-Revision-Date: 2016-01-13 10:42:07+0000\n"
+"PO-Revision-Date: 2016-01-25 15:05:48+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Description of the plugin/theme
msgid "Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere."
-msgstr "Twenty Sixteen revisite en le modernisant une mise en page WordPress toujours aussi populaire : l’entête horizontal avec une barre latérale facultative, qui fonctionne tout aussi pour les blogs que pour les sites. Il dispose d'options de couleurs avec de superbes jeux de couleurs par défaut, une composition en grille fluide et harmonieuse utilisant l'approche \"mobile-first\", et un soin apporté jusque dans les moindres détails. Twenty Sixteen vous donnera un site WordPress magnifique dans toutes les situations."
+msgstr "Twenty Sixteen revisite en la modernisant une mise en page WordPress toujours aussi populaire : l’entête horizontal avec une barre latérale facultative, qui fonctionne tout aussi bien pour les blogs que pour les sites. Il dispose d'options de couleurs avec de superbes jeux de couleurs par défaut, une composition en grille fluide et harmonieuse utilisant l'approche \"mobile-first\", et un soin apporté jusque dans les moindres détails. Twenty Sixteen vous donnera un site WordPress magnifique dans toutes les situations."
#. translators: %s: Name of current post
#: image.php:84 template-parts/content-page.php:37
add_action( 'admin_menu', 'wpcf7_admin_menu', 9 );
function wpcf7_admin_menu() {
- add_object_page( __( 'Contact Form 7', 'contact-form-7' ),
+ global $_wp_last_object_menu;
+
+ $_wp_last_object_menu++;
+
+ add_menu_page( __( 'Contact Form 7', 'contact-form-7' ),
__( 'Contact', 'contact-form-7' ),
'wpcf7_read_contact_forms', 'wpcf7',
- 'wpcf7_admin_management_page', 'dashicons-email' );
+ 'wpcf7_admin_management_page', 'dashicons-email',
+ $_wp_last_object_menu );
$edit = add_submenu_page( 'wpcf7',
__( 'Edit Contact Form', 'contact-form-7' ),
exit();
}
+ if ( 'validate' == $action && wpcf7_validate_configuration() ) {
+ if ( 'POST' == $_SERVER['REQUEST_METHOD'] ) {
+ check_admin_referer( 'wpcf7-bulk-validate' );
+
+ if ( ! current_user_can( 'wpcf7_edit_contact_forms' ) ) {
+ wp_die( __( "You are not allowed to validate configuration.", 'contact-form-7' ) );
+ }
+
+ $contact_forms = WPCF7_ContactForm::find();
+ $result = array(
+ 'timestamp' => current_time( 'timestamp' ),
+ 'version' => WPCF7_VERSION,
+ 'count_valid' => 0,
+ 'count_invalid' => 0 );
+
+ foreach ( $contact_forms as $contact_form ) {
+ $contact_form->validate_configuration();
+
+ if ( $contact_form->get_config_errors() ) {
+ $result['count_invalid'] += 1;
+ } else {
+ $result['count_valid'] += 1;
+ }
+ }
+
+ WPCF7::update_option( 'bulk_validate', $result );
+
+ $query = array(
+ 'message' => 'validated' );
+
+ $redirect_to = add_query_arg( $query, menu_page_url( 'wpcf7', false ) );
+ wp_safe_redirect( $redirect_to );
+ exit();
+ }
+ }
+
$_GET['post'] = isset( $_GET['post'] ) ? $_GET['post'] : '';
$post = null;
- if ( 'wpcf7-new' == $plugin_page && isset( $_GET['locale'] ) ) {
+ if ( 'wpcf7-new' == $plugin_page ) {
$post = WPCF7_ContactForm::get_template( array(
- 'locale' => $_GET['locale'] ) );
+ 'locale' => isset( $_GET['locale'] ) ? $_GET['locale'] : null ) );
} elseif ( ! empty( $_GET['post'] ) ) {
$post = WPCF7_ContactForm::get_instance( $_GET['post'] );
}
if ( $post && current_user_can( 'wpcf7_edit_contact_form', $post->id() ) ) {
$help_tabs->set_help_tabs( 'edit' );
-
- } else if ( 'wpcf7-new' == $plugin_page ) {
- $help_tabs->set_help_tabs( 'add_new' );
-
} else {
$help_tabs->set_help_tabs( 'list' );
return;
}
+ if ( 'validate' == wpcf7_current_action()
+ && wpcf7_validate_configuration()
+ && current_user_can( 'wpcf7_edit_contact_forms' ) ) {
+ wpcf7_admin_bulk_validate_page();
+ return;
+ }
+
$list_table = new WPCF7_Contact_Form_List_Table();
$list_table->prepare_items();
?>
<div class="wrap">
-<h2><?php
+<h1><?php
echo esc_html( __( 'Contact Forms', 'contact-form-7' ) );
if ( current_user_can( 'wpcf7_edit_contact_forms' ) ) {
. __( 'Search results for “%s”', 'contact-form-7' )
. '</span>', esc_html( $_REQUEST['s'] ) );
}
-?></h2>
+?></h1>
<?php do_action( 'wpcf7_admin_notices' ); ?>
<?php
}
-function wpcf7_admin_add_new_page() {
- if ( $post = wpcf7_get_current_contact_form() ) {
- $post_id = -1;
-
- require_once WPCF7_PLUGIN_DIR . '/admin/includes/editor.php';
- require_once WPCF7_PLUGIN_DIR . '/admin/edit-contact-form.php';
- return;
- }
-
- $available_locales = wpcf7_l10n();
- $default_locale = get_locale();
+function wpcf7_admin_bulk_validate_page() {
+ $contact_forms = WPCF7_ContactForm::find();
+ $count = WPCF7_ContactForm::count();
- if ( ! isset( $available_locales[$default_locale] ) ) {
- $default_locale = 'en_US';
- }
+ $submit_text = sprintf(
+ _n(
+ "Validate %s Contact Form Now",
+ "Validate %s Contact Forms Now",
+ $count, 'contact-form-7' ),
+ number_format_i18n( $count ) );
?>
<div class="wrap">
-<h2><?php echo esc_html( __( 'Add New Contact Form', 'contact-form-7' ) ); ?></h2>
-
-<?php do_action( 'wpcf7_admin_notices' ); ?>
+<h1><?php echo esc_html( __( 'Validate Configuration', 'contact-form-7' ) ); ?></h1>
-<h3><?php echo esc_html( sprintf( __( 'Use the default language (%s)', 'contact-form-7' ), $available_locales[$default_locale] ) ); ?></h3>
-<p><a href="<?php echo esc_url( add_query_arg( array( 'locale' => $default_locale ), menu_page_url( 'wpcf7-new', false ) ) ); ?>" class="button button-primary" /><?php echo esc_html( __( 'Add New', 'contact-form-7' ) ); ?></a></p>
-
-<?php unset( $available_locales[$default_locale] ); ?>
-<h3><?php echo esc_html( __( 'Or', 'contact-form-7' ) ); ?></h3>
-<form action="" method="get">
-<input type="hidden" name="page" value="wpcf7-new" />
-<select name="locale">
-<option value="" selected="selected"><?php echo esc_html( __( '(select language)', 'contact-form-7' ) ); ?></option>
-<?php foreach ( $available_locales as $code => $locale ) : ?>
-<option value="<?php echo esc_attr( $code ); ?>"><?php echo esc_html( $locale ); ?></option>
-<?php endforeach; ?>
-</select>
-<input type="submit" class="button" value="<?php echo esc_attr( __( 'Add New', 'contact-form-7' ) ); ?>" />
+<form method="post" action="">
+ <input type="hidden" name="action" value="validate" />
+ <?php wp_nonce_field( 'wpcf7-bulk-validate' ); ?>
+ <p><input type="submit" class="button" value="<?php echo esc_attr( $submit_text ); ?>" /></p>
</form>
+
</div>
<?php
}
+function wpcf7_admin_add_new_page() {
+ $post = wpcf7_get_current_contact_form();
+
+ if ( ! $post ) {
+ $post = WPCF7_ContactForm::get_template();
+ }
+
+ $post_id = -1;
+
+ require_once WPCF7_PLUGIN_DIR . '/admin/includes/editor.php';
+ require_once WPCF7_PLUGIN_DIR . '/admin/edit-contact-form.php';
+}
+
function wpcf7_load_integration_page() {
$integration = WPCF7_Integration::get_instance();
?>
<div class="wrap">
-<h2><?php echo esc_html( __( 'Integration with Other Services', 'contact-form-7' ) ); ?></h2>
+<h1><?php echo esc_html( __( 'Integration with Other Services', 'contact-form-7' ) ); ?></h1>
<?php do_action( 'wpcf7_admin_notices' ); ?>
}
if ( 'created' == $_REQUEST['message'] ) {
- $updated_message = __( 'Contact form created.', 'contact-form-7' );
+ $updated_message = __( "Contact form created.", 'contact-form-7' );
} elseif ( 'saved' == $_REQUEST['message'] ) {
- $updated_message = __( 'Contact form saved.', 'contact-form-7' );
+ $updated_message = __( "Contact form saved.", 'contact-form-7' );
} elseif ( 'deleted' == $_REQUEST['message'] ) {
- $updated_message = __( 'Contact form deleted.', 'contact-form-7' );
+ $updated_message = __( "Contact form deleted.", 'contact-form-7' );
+ } elseif ( 'validated' == $_REQUEST['message'] ) {
+ $bulk_validate = WPCF7::get_option( 'bulk_validate', array() );
+ $count_invalid = isset( $bulk_validate['count_invalid'] )
+ ? absint( $bulk_validate['count_invalid'] ) : 0;
+
+ if ( $count_invalid ) {
+ $updated_message = sprintf(
+ _n(
+ "Configuration validation completed. An invalid contact form was found.",
+ "Configuration validation completed. %s invalid contact forms were found.",
+ $count_invalid, 'contact-form-7' ),
+ number_format_i18n( $count_invalid ) );
+ } else {
+ $updated_message = __( "Configuration validation completed. No invalid contact form was found.", 'contact-form-7' );
+ }
}
if ( ! empty( $updated_message ) ) {
<div class="welcome-panel-content">
<div class="welcome-panel-column-container">
<div class="welcome-panel-column">
- <h4><?php echo esc_html( __( 'Contact Form 7 Needs Your Support', 'contact-form-7' ) ); ?></h4>
+ <h3><?php echo esc_html( __( 'Contact Form 7 Needs Your Support', 'contact-form-7' ) ); ?></h3>
<p class="message"><?php echo esc_html( __( "It is hard to continue development and support for this plugin without contributions from users like you. If you enjoy using Contact Form 7 and find it useful, please consider making a donation.", 'contact-form-7' ) ); ?></p>
<p><?php echo wpcf7_link( __( 'http://contactform7.com/donate/', 'contact-form-7' ), __( 'Donate', 'contact-form-7' ), array( 'class' => 'button button-primary' ) ); ?></p>
</div>
<div class="welcome-panel-column">
- <h4><?php echo esc_html( __( 'Get Started', 'contact-form-7' ) ); ?></h4>
+ <h3><?php echo esc_html( __( 'Get Started', 'contact-form-7' ) ); ?></h3>
<ul>
<li><?php echo wpcf7_link( __( 'http://contactform7.com/getting-started-with-contact-form-7/', 'contact-form-7' ), __( 'Getting Started with Contact Form 7', 'contact-form-7' ) ); ?></li>
<li><?php echo wpcf7_link( __( 'http://contactform7.com/admin-screen/', 'contact-form-7' ), __( 'Admin Screen', 'contact-form-7' ) ); ?></li>
</div>
<div class="welcome-panel-column">
- <h4><?php echo esc_html( __( 'Did You Know?', 'contact-form-7' ) ); ?></h4>
+ <h3><?php echo esc_html( __( 'Did You Know?', 'contact-form-7' ) ); ?></h3>
<ul>
<li><?php echo wpcf7_link( __( 'http://contactform7.com/spam-filtering-with-akismet/', 'contact-form-7' ), __( 'Spam Filtering with Akismet', 'contact-form-7' ) ); ?></li>
<li><?php echo wpcf7_link( __( 'http://contactform7.com/save-submitted-messages-with-flamingo/', 'contact-form-7' ), __( 'Save Messages with Flamingo', 'contact-form-7' ) ); ?></li>
'<div class="notice notice-warning is-dismissible"><p>%s</p></div>',
esc_html( $message ) );
}
+
+add_action( 'wpcf7_admin_notices', 'wpcf7_notice_config_errors' );
+
+function wpcf7_notice_config_errors() {
+ if ( ! $contact_form = wpcf7_get_current_contact_form() ) {
+ return;
+ }
+
+ if ( ! wpcf7_validate_configuration()
+ || ! current_user_can( 'wpcf7_edit_contact_form', $contact_form->id() ) ) {
+ return;
+ }
+
+ if ( $config_errors = $contact_form->get_config_errors() ) {
+ $message = sprintf(
+ _n(
+ "This contact form has a configuration error.",
+ "This contact form has %s configuration errors.",
+ count( $config_errors ), 'contact-form-7' ),
+ number_format_i18n( count( $config_errors ) ) );
+
+ $link = wpcf7_link(
+ __( 'http://contactform7.com/configuration-errors/', 'contact-form-7' ),
+ __( 'How to Resolve Configuration Errors', 'contact-form-7' ) );
+
+ echo sprintf( '<div class="notice notice-error is-dismissible"><p>%s » %s</p></div>', esc_html( $message ), $link );
+ }
+}
+
+add_action( 'admin_notices', 'wpcf7_notice_bulk_validate_config' );
+
+function wpcf7_notice_bulk_validate_config() {
+ if ( ! wpcf7_validate_configuration()
+ || ! current_user_can( 'wpcf7_edit_contact_forms' ) ) {
+ return;
+ }
+
+ if ( isset( $_GET['page'] ) && 'wpcf7' == $_GET['page']
+ && isset( $_GET['action'] ) && 'validate' == $_GET['action'] ) {
+ return;
+ }
+
+ if ( WPCF7::get_option( 'bulk_validate' ) ) { // already done.
+ return;
+ }
+
+ $link = add_query_arg(
+ array( 'action' => 'validate' ),
+ menu_page_url( 'wpcf7', false ) );
+
+ $link = sprintf( '<a href="%s">%s</a>', $link, esc_html( __( 'Validate Contact Form 7 Configuration', 'contact-form-7' ) ) );
+
+ $message = __( "Misconfiguration leads to mail delivery failure or other troubles. Validate your contact forms now.", 'contact-form-7' );
+
+ echo sprintf( '<div class="notice notice-warning is-dismissible"><p>%s » %s</p></div>', esc_html( $message ), $link );
+}
margin: 8px -8px 8px 8px;
}
-.card h3.title {
+.card h2.title {
float: right;
}
color: #a00;
}
+#submitpost input.delete:hover {
+ color: #f00;
+}
+
#submitpost input.delete:focus {
outline: thin dotted;
}
color: #23282d;
}
+div.config-error, span.config-error {
+ color: #d00;
+ font-style: normal;
+ font-size: 13px;
+}
+
/*
* Tabs
*/
color: #000;
}
-#contact-form-editor .contact-form-editor-panel h3 {
+#contact-form-editor .contact-form-editor-panel h2 {
font-size: 18px;
font-weight: 400;
line-height: 24px;
color: #666;
}
+/*
+ * Messages Panel
+ */
+#messages-panel p.description {
+ margin: 5px 0 10px;
+}
+
/*
* List Table
*/
/*
* Welcome Panel
*/
+.welcome-panel h3 {
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 2.1em;
+ margin: 1.33em 0 0;
+}
+
.welcome-panel p.message {
line-height: 1.4em;
margin-right: 25px;
margin: 8px 8px 8px -8px;
}
-.card h3.title {
+.card h2.title {
float: left;
max-width: 240px;
+ font-size: 1.3em;
+ font-weight: 600;
}
.card .infobox {
?><div class="wrap">
-<h2><?php
+<h1><?php
if ( $post->initial() ) {
echo esc_html( __( 'Add New Contact Form', 'contact-form-7' ) );
} else {
echo ' <a href="' . esc_url( menu_page_url( 'wpcf7-new', false ) ) . '" class="add-new-h2">' . esc_html( __( 'Add New', 'contact-form-7' ) ) . '</a>';
}
}
-?></h2>
+?></h1>
<?php do_action( 'wpcf7_admin_notices' ); ?>
}
if ( isset( $_POST['wpcf7-mail-additional-headers'] ) ) {
- $mail['additional_headers'] = trim( $_POST['wpcf7-mail-additional-headers'] );
+ $headers = '';
+ $tempheaders = str_replace(
+ "\r\n", "\n", $_POST['wpcf7-mail-additional-headers'] );
+ $tempheaders = explode( "\n", $tempheaders );
+
+ foreach ( $tempheaders as $header ) {
+ $header = trim( $header );
+
+ if ( '' !== $header ) {
+ $headers .= $header . "\n";
+ }
+ }
+
+ $mail['additional_headers'] = trim( $headers );
}
if ( isset( $_POST['wpcf7-mail-attachments'] ) ) {
}
if ( isset( $_POST['wpcf7-mail-2-additional-headers'] ) ) {
- $mail_2['additional_headers'] = trim(
- $_POST['wpcf7-mail-2-additional-headers'] );
+ $headers = '';
+ $tempheaders = str_replace(
+ "\r\n", "\n", $_POST['wpcf7-mail-2-additional-headers'] );
+ $tempheaders = explode( "\n", $tempheaders );
+
+ foreach ( $tempheaders as $header ) {
+ $header = trim( $header );
+
+ if ( '' !== $header ) {
+ $headers .= $header . "\n";
+ }
+ }
+
+ $mail_2['additional_headers'] = trim( $headers );
}
if ( isset( $_POST['wpcf7-mail-2-attachments'] ) ) {
do_action( 'wpcf7_save_contact_form', $contact_form );
- return $contact_form->save();
+ $post_id = $contact_form->save();
+
+ if ( wpcf7_validate_configuration() ) {
+ $contact_form->validate_configuration();
+ }
+
+ return $post_id;
}
$url = admin_url( 'admin.php?page=wpcf7&post=' . absint( $item->id() ) );
$edit_link = add_query_arg( array( 'action' => 'edit' ), $url );
+ $output = sprintf(
+ '<a class="row-title" href="%1$s" title="%2$s">%3$s</a>',
+ esc_url( $edit_link ),
+ esc_attr( sprintf( __( 'Edit “%s”', 'contact-form-7' ),
+ $item->title() ) ),
+ esc_html( $item->title() ) );
+
+ $output = sprintf( '<strong>%s</strong>', $output );
+
+ if ( wpcf7_validate_configuration()
+ && current_user_can( 'wpcf7_edit_contact_form', $item->id() )
+ && $config_errors = $item->get_config_errors() ) {
+ $error_notice = sprintf(
+ _n(
+ '%s configuration error found',
+ '%s configuration errors found',
+ count( $config_errors ), 'contact-form-7' ),
+ number_format_i18n( count( $config_errors ) ) );
+ $output .= sprintf(
+ '<div class="config-error">%s</div>',
+ $error_notice );
+ }
+
$actions = array(
'edit' => sprintf( '<a href="%1$s">%2$s</a>',
esc_url( $edit_link ),
esc_html( __( 'Duplicate', 'contact-form-7' ) ) ) ) );
}
- $a = sprintf( '<a class="row-title" href="%1$s" title="%2$s">%3$s</a>',
- esc_url( $edit_link ),
- esc_attr( sprintf( __( 'Edit “%s”', 'contact-form-7' ),
- $item->title() ) ),
- esc_html( $item->title() ) );
+ $output .= $this->row_actions( $actions );
- return '<strong>' . $a . '</strong> ' . $this->row_actions( $actions );
+ return $output;
}
function column_author( $item ) {
function wpcf7_editor_panel_form( $post ) {
?>
-<h3><?php echo esc_html( __( 'Form', 'contact-form-7' ) ); ?></h3>
+<h2><?php echo esc_html( __( 'Form', 'contact-form-7' ) ); ?></h2>
<?php
$tag_generator = WPCF7_TagGenerator::get_instance();
'subject' => '', 'body' => '', 'additional_headers' => '',
'attachments' => '', 'use_html' => false, 'exclude_blank' => false ) );
+ $do_validate = wpcf7_validate_configuration();
+
?>
<div class="contact-form-editor-box-mail" id="<?php echo $id; ?>">
-<h3><?php echo esc_html( $args['title'] ); ?></h3>
+<h2><?php echo esc_html( $args['title'] ); ?></h2>
<?php
if ( ! empty( $args['use'] ) ) :
<label for="<?php echo $id; ?>-recipient"><?php echo esc_html( __( 'To', 'contact-form-7' ) ); ?></label>
</th>
<td>
- <input type="text" id="<?php echo $id; ?>-recipient" name="<?php echo $id; ?>-recipient" class="large-text code" size="70" value="<?php echo esc_attr( $mail['recipient'] ); ?>" />
+ <?php $config_error = $post->config_error(
+ sprintf( '%s.recipient', $args['name'] ) ); ?>
+ <input type="text" id="<?php echo $id; ?>-recipient" name="<?php echo $id; ?>-recipient" class="large-text code" size="70" value="<?php echo esc_attr( $mail['recipient'] ); ?>"<?php if ( $do_validate && $config_error ) { echo ' aria-invalid="true"'; } ?> />
+ <?php if ( $do_validate && $config_error ) {
+ echo sprintf( '<br /><span role="alert" class="config-error">%s</span>', $config_error );
+ } ?>
</td>
</tr>
<label for="<?php echo $id; ?>-sender"><?php echo esc_html( __( 'From', 'contact-form-7' ) ); ?></label>
</th>
<td>
- <input type="text" id="<?php echo $id; ?>-sender" name="<?php echo $id; ?>-sender" class="large-text code" size="70" value="<?php echo esc_attr( $mail['sender'] ); ?>" />
+ <?php $config_error = $post->config_error(
+ sprintf( '%s.sender', $args['name'] ) ); ?>
+ <input type="text" id="<?php echo $id; ?>-sender" name="<?php echo $id; ?>-sender" class="large-text code" size="70" value="<?php echo esc_attr( $mail['sender'] ); ?>"<?php if ( $do_validate && $config_error ) { echo ' aria-invalid="true"'; } ?> />
+ <?php if ( $do_validate && $config_error ) {
+ echo sprintf( '<br /><span role="alert" class="config-error">%s</span>', $config_error );
+ } ?>
</td>
</tr>
<label for="<?php echo $id; ?>-subject"><?php echo esc_html( __( 'Subject', 'contact-form-7' ) ); ?></label>
</th>
<td>
- <input type="text" id="<?php echo $id; ?>-subject" name="<?php echo $id; ?>-subject" class="large-text code" size="70" value="<?php echo esc_attr( $mail['subject'] ); ?>" />
+ <?php $config_error = $post->config_error(
+ sprintf( '%s.subject', $args['name'] ) ); ?>
+ <input type="text" id="<?php echo $id; ?>-subject" name="<?php echo $id; ?>-subject" class="large-text code" size="70" value="<?php echo esc_attr( $mail['subject'] ); ?>"<?php if ( $do_validate && $config_error ) { echo ' aria-invalid="true"'; } ?> />
+ <?php if ( $do_validate && $config_error ) {
+ echo sprintf( '<br /><span role="alert" class="config-error">%s</span>', $config_error );
+ } ?>
</td>
</tr>
<label for="<?php echo $id; ?>-additional-headers"><?php echo esc_html( __( 'Additional Headers', 'contact-form-7' ) ); ?></label>
</th>
<td>
- <textarea id="<?php echo $id; ?>-additional-headers" name="<?php echo $id; ?>-additional-headers" cols="100" rows="4" class="large-text code"><?php echo esc_textarea( $mail['additional_headers'] ); ?></textarea>
+ <?php $config_error = $post->config_error(
+ sprintf( '%s.additional_headers', $args['name'] ) ); ?>
+ <textarea id="<?php echo $id; ?>-additional-headers" name="<?php echo $id; ?>-additional-headers" cols="100" rows="4" class="large-text code"<?php if ( $do_validate && $config_error ) { echo ' aria-invalid="true"'; } ?>><?php echo esc_textarea( $mail['additional_headers'] ); ?></textarea>
+ <?php if ( $do_validate && $config_error ) {
+ echo sprintf( '<br /><span role="alert" class="config-error">%s</span>', $config_error );
+ } ?>
</td>
</tr>
<label for="<?php echo $id; ?>-body"><?php echo esc_html( __( 'Message Body', 'contact-form-7' ) ); ?></label>
</th>
<td>
- <textarea id="<?php echo $id; ?>-body" name="<?php echo $id; ?>-body" cols="100" rows="18" class="large-text code"><?php echo esc_textarea( $mail['body'] ); ?></textarea>
+ <?php $config_error = $post->config_error(
+ sprintf( '%s.body', $args['name'] ) ); ?>
+ <textarea id="<?php echo $id; ?>-body" name="<?php echo $id; ?>-body" cols="100" rows="18" class="large-text code"<?php if ( $do_validate && $config_error ) { echo ' aria-invalid="true"'; } ?>><?php echo esc_textarea( $mail['body'] ); ?></textarea>
+ <?php if ( $do_validate && $config_error ) {
+ echo sprintf( '<br /><span role="alert" class="config-error">%s</span>', $config_error );
+ } ?>
<p><label for="<?php echo $id; ?>-exclude-blank"><input type="checkbox" id="<?php echo $id; ?>-exclude-blank" name="<?php echo $id; ?>-exclude-blank" value="1"<?php echo ( ! empty( $mail['exclude_blank'] ) ) ? ' checked="checked"' : ''; ?> /> <?php echo esc_html( __( 'Exclude lines with blank mail-tags from output', 'contact-form-7' ) ); ?></label></p>
unset( $messages['captcha_not_match'] );
}
+ $do_validate = wpcf7_validate_configuration();
+
?>
-<h3><?php echo esc_html( __( 'Messages', 'contact-form-7' ) ); ?></h3>
+<h2><?php echo esc_html( __( 'Messages', 'contact-form-7' ) ); ?></h2>
<fieldset>
<legend><?php echo esc_html( __( 'Edit messages used in the following situations.', 'contact-form-7' ) ); ?></legend>
<?php
foreach ( $messages as $key => $arr ) {
$field_name = 'wpcf7-message-' . strtr( $key, '_', '-' );
+
+ $config_error = $do_validate
+ ? $post->config_error( sprintf( 'messages.%s', $key ) ) : '';
+
?>
<p class="description">
<label for="<?php echo $field_name; ?>"><?php echo esc_html( $arr['description'] ); ?><br />
-<input type="text" id="<?php echo $field_name; ?>" name="<?php echo $field_name; ?>" class="large-text" size="70" value="<?php echo esc_attr( $post->message( $key, false ) ); ?>" />
+<input type="text" id="<?php echo $field_name; ?>" name="<?php echo $field_name; ?>" class="large-text" size="70" value="<?php echo esc_attr( $post->message( $key, false ) ); ?>"<?php echo $config_error ? ' aria-invalid="true"' : ''; ?> />
+<?php
+ if ( $config_error ) {
+ echo sprintf( '<br /><span role="alert" class="config-error">%s</span>', $config_error );
+ }
+?>
</label>
</p>
<?php
$description = sprintf( esc_html( $description ), $desc_link );
?>
-<h3><?php echo esc_html( __( 'Additional Settings', 'contact-form-7' ) ); ?></h3>
+<h2><?php echo esc_html( __( 'Additional Settings', 'contact-form-7' ) ); ?></h2>
<fieldset>
<legend><?php echo $description; ?></legend>
<textarea id="wpcf7-additional-settings" name="wpcf7-additional-settings" cols="100" rows="8" class="large-text"><?php echo esc_textarea( $post->prop( 'additional_settings' ) ); ?></textarea>
$this->sidebar();
- return;
- case 'add_new':
- $this->screen->add_help_tab( array(
- 'id' => 'add_new',
- 'title' => __( 'Adding A New Contact Form', 'contact-form-7' ),
- 'content' => $this->content( 'add_new' ) ) );
-
- $this->sidebar();
-
return;
case 'edit':
$this->screen->add_help_tab( array(
$content['list_available_actions'] .= '<p>' . __( "<strong>Edit</strong> - Navigates to the editing screen for that contact form. You can also reach that screen by clicking on the contact form title.", 'contact-form-7' ) . '</p>';
$content['list_available_actions'] .= '<p>' . __( "<strong>Duplicate</strong> - Clones that contact form. A cloned contact form inherits all content from the original, but has a different ID.", 'contact-form-7' ) . '</p>';
- $content['add_new'] = '<p>' . __( "You can add a new contact form on this screen. You can create a contact form in your language, which is set WordPress local settings, or in a language that you select from available options.", 'contact-form-7' ) . '</p>';
-
$content['edit_overview'] = '<p>' . __( "On this screen, you can edit a contact form. A contact form is comprised of the following components:", 'contact-form-7' ) . '</p>';
$content['edit_overview'] .= '<p>' . __( "<strong>Title</strong> is the title of a contact form. This title is only used for labeling a contact form, and can be edited.", 'contact-form-7' ) . '</p>';
$content['edit_overview'] .= '<p>' . __( "<strong>Form</strong> is a content of HTML form. You can use arbitrary HTML, which is allowed inside a form element. You can also use Contact Form 7’s form-tags here.", 'contact-form-7' ) . '</p>';
}
});
+ if ('radio' == tagType) {
+ options.push('default:1');
+ }
+
options = (options.length > 0) ? options.join(' ') : '';
var value = '';
--- /dev/null
+<?php
+
+class WPCF7_ConfigValidator {
+
+ const error_maybe_empty = 101;
+ const error_invalid_syntax = 102;
+ const error_email_not_in_site_domain = 103;
+ const error_html_in_message = 104;
+
+ private $contact_form;
+ private $errors = array();
+
+ public function __construct( WPCF7_ContactForm $contact_form ) {
+ $this->contact_form = $contact_form;
+ $this->errors = (array) get_post_meta(
+ $this->contact_form->id(), '_config_errors', true );
+ $this->errors = array_filter( $this->errors );
+ }
+
+ public function is_valid() {
+ return ! $this->errors;
+ }
+
+ public function get_errors() {
+ return $this->errors;
+ }
+
+ public function get_error( $section ) {
+ if ( isset( $this->errors[$section] ) ) {
+ return $this->errors[$section];
+ }
+
+ return null;
+ }
+
+ public function get_error_message( $section ) {
+ $code = $this->get_error( $section );
+
+ switch ( $code ) {
+ case self::error_maybe_empty:
+ return __( "This field can be empty depending on user input.", 'contact-form-7' );
+ case self::error_invalid_syntax:
+ return __( "This field has syntax errors.", 'contact-form-7' );
+ case self::error_email_not_in_site_domain:
+ return __( "This email address does not belong to the same domain as the site.", 'contact-form-7' );
+ case self::error_html_in_message:
+ return __( "HTML tags are not allowed in a message.", 'contact-form-7' );
+ default:
+ return '';
+ }
+ }
+
+ private function add_error( $section, $error ) {
+ $this->errors[$section] = $error;
+ }
+
+ public function validate() {
+ $this->errors = array();
+
+ $this->validate_mail( 'mail' );
+ $this->validate_mail( 'mail_2' );
+ $this->validate_messages();
+
+ delete_post_meta( $this->contact_form->id(), '_config_errors' );
+
+ if ( $this->errors ) {
+ update_post_meta( $this->contact_form->id(), '_config_errors',
+ $this->errors );
+ return false;
+ }
+
+ return true;
+ }
+
+ public function validate_mail( $template = 'mail' ) {
+ $components = (array) $this->contact_form->prop( $template );
+
+ if ( ! $components ) {
+ return;
+ }
+
+ if ( 'mail' != $template && empty( $components['active'] ) ) {
+ return;
+ }
+
+ $components = wp_parse_args( $components, array(
+ 'subject' => '',
+ 'sender' => '',
+ 'recipient' => '',
+ 'additional_headers' => '',
+ 'body' => '' ) );
+
+ $callback = array( $this, 'replace_mail_tags_with_minimum_input' );
+
+ $subject = $components['subject'];
+ $subject = new WPCF7_MailTaggedText( $subject,
+ array( 'callback' => $callback ) );
+ $subject = $subject->replace_tags();
+ $subject = wpcf7_strip_newline( $subject );
+
+ if ( '' === $subject ) {
+ $this->add_error( sprintf( '%s.subject', $template ),
+ self::error_maybe_empty );
+ }
+
+ $sender = $components['sender'];
+ $sender = new WPCF7_MailTaggedText( $sender,
+ array( 'callback' => $callback ) );
+ $sender = $sender->replace_tags();
+ $sender = wpcf7_strip_newline( $sender );
+
+ if ( ! $this->test_from_field_syntax( $sender ) ) {
+ $this->add_error( sprintf( '%s.sender', $template ),
+ self::error_invalid_syntax );
+ } elseif ( ! $this->test_email_in_site_domain( $sender ) ) {
+ $this->add_error( sprintf( '%s.sender', $template ),
+ self::error_email_not_in_site_domain );
+ }
+
+ $recipient = $components['recipient'];
+ $recipient = new WPCF7_MailTaggedText( $recipient,
+ array( 'callback' => $callback ) );
+ $recipient = $recipient->replace_tags();
+ $recipient = wpcf7_strip_newline( $recipient );
+
+ if ( ! $this->test_to_field_syntax( $recipient ) ) {
+ $this->add_error( sprintf( '%s.recipient', $template ),
+ self::error_invalid_syntax );
+ }
+
+ $additional_headers = $components['additional_headers'];
+ $additional_headers = new WPCF7_MailTaggedText( $additional_headers,
+ array( 'callback' => $callback ) );
+ $additional_headers = $additional_headers->replace_tags();
+
+ if ( ! $this->test_additional_headers_syntax( $additional_headers ) ) {
+ $this->add_error( sprintf( '%s.additional_headers', $template ),
+ self::error_invalid_syntax );
+ }
+
+ $body = $components['body'];
+ $body = new WPCF7_MailTaggedText( $body,
+ array( 'callback' => $callback ) );
+ $body = $body->replace_tags();
+
+ if ( '' === $body ) {
+ $this->add_error( sprintf( '%s.body', $template ),
+ self::error_maybe_empty );
+ }
+ }
+
+ public function test_from_field_syntax( $content ) {
+ $content = trim( $content );
+
+ if ( preg_match( '/<(.+)>$/', $content, $matches ) ) {
+ $email = $matches[1];
+ } else {
+ $email = $content;
+ }
+
+ return wpcf7_is_email( $email );
+ }
+
+ public function test_email_in_site_domain( $content ) {
+ if ( wpcf7_is_localhost() ) {
+ return true;
+ }
+
+ $site_domain = strtolower( $_SERVER['SERVER_NAME'] );
+
+ if ( substr( $site_domain, 0, 4 ) == 'www.' ) {
+ $site_domain = substr( $site_domain, 4 );
+ }
+
+ $content = trim( $content );
+
+ if ( preg_match( '/<(.+)>$/', $content, $matches ) ) {
+ $email = strtolower( $matches[1] );
+ } else {
+ $email = strtolower( $content );
+ }
+
+ return ( substr( $email, - strlen( $site_domain ) ) == $site_domain );
+ }
+
+ public function test_to_field_syntax( $content ) {
+ $tos = explode( ',', $content );
+
+ foreach ( $tos as $to ) {
+ $to = trim( $to );
+
+ if ( preg_match( '/<(.+)>$/', $to, $matches ) ) {
+ $to = $matches[1];
+ }
+
+ if ( ! wpcf7_is_email( $to ) ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public function test_additional_headers_syntax( $content ) {
+ $headers = explode( "\n", $content );
+
+ foreach ( $headers as $header ) {
+ $header = trim( $header );
+
+ if ( '' === $header ) {
+ continue;
+ }
+
+ if ( ! preg_match( '/^[0-9A-Za-z-]+:.+$/', $header ) ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public function validate_messages() {
+ $messages = (array) $this->contact_form->prop( 'messages' );
+
+ if ( ! $messages ) {
+ return;
+ }
+
+ foreach ( $messages as $key => $message ) {
+ $stripped = wp_strip_all_tags( $message );
+
+ if ( $stripped != $message ) {
+ $this->add_error( sprintf( 'messages.%s', $key ),
+ self::error_html_in_message );
+ }
+ }
+ }
+
+ public function replace_mail_tags_with_minimum_input( $matches ) {
+ // allow [[foo]] syntax for escaping a tag
+ if ( $matches[1] == '[' && $matches[4] == ']' ) {
+ return substr( $matches[0], 1, -1 );
+ }
+
+ $tag = $matches[0];
+ $tagname = $matches[2];
+ $values = $matches[3];
+
+ if ( ! empty( $values ) ) {
+ preg_match_all( '/"[^"]*"|\'[^\']*\'/', $values, $matches );
+ $values = wpcf7_strip_quote_deep( $matches[0] );
+ }
+
+ $do_not_heat = false;
+
+ if ( preg_match( '/^_raw_(.+)$/', $tagname, $matches ) ) {
+ $tagname = trim( $matches[1] );
+ $do_not_heat = true;
+ }
+
+ $format = '';
+
+ if ( preg_match( '/^_format_(.+)$/', $tagname, $matches ) ) {
+ $tagname = trim( $matches[1] );
+ $format = $values[0];
+ }
+
+ $example_email = 'example@example.com';
+ $example_text = 'example';
+ $example_blank = '';
+
+ $form_tags = $this->contact_form->form_scan_shortcode(
+ array( 'name' => $tagname ) );
+
+ if ( $form_tags ) {
+ $form_tag = new WPCF7_Shortcode( $form_tags[0] );
+
+ $is_required = ( $form_tag->is_required() || 'radio' == $form_tag->type );
+
+ if ( ! $is_required ) {
+ return $example_blank;
+ }
+
+ $is_selectable = in_array( $form_tag->basetype,
+ array( 'radio', 'checkbox', 'select' ) );
+
+ if ( $is_selectable ) {
+ if ( $form_tag->pipes instanceof WPCF7_Pipes ) {
+ if ( $do_not_heat ) {
+ $before_pipes = $form_tag->pipes->collect_befores();
+ $last_item = array_pop( $before_pipes );
+ } else {
+ $after_pipes = $form_tag->pipes->collect_afters();
+ $last_item = array_pop( $after_pipes );
+ }
+ } else {
+ $last_item = array_pop( $form_tag->values );
+ }
+
+ if ( $last_item && wpcf7_is_email( $last_item ) ) {
+ return $example_email;
+ } else {
+ return $example_text;
+ }
+ }
+
+ if ( 'email' == $form_tag->basetype ) {
+ return $example_email;
+ } else {
+ return $example_text;
+ }
+
+ } else {
+ $tagname = preg_replace( '/^wpcf7\./', '_', $tagname ); // for back-compat
+
+ if ( '_post_author_email' == $tagname ) {
+ return $example_email;
+ } elseif ( '_' == substr( $tagname, 0, 1 ) ) { // maybe special mail tag
+ return $example_text;
+ }
+ }
+
+ return $tag;
+ }
+}
public static function mail() {
$template = array(
- 'subject' => '[your-subject]',
+ 'subject' => sprintf(
+ _x( '%1$s "%2$s"', 'mail subject', 'contact-form-7' ),
+ get_bloginfo( 'name' ), '[your-subject]' ),
'sender' => sprintf( '[your-name] <%s>', self::from_email() ),
'body' =>
sprintf( __( 'From: %s', 'contact-form-7' ),
public static function mail_2() {
$template = array(
'active' => false,
- 'subject' => '[your-subject]',
+ 'subject' => sprintf(
+ _x( '%1$s "%2$s"', 'mail subject', 'contact-form-7' ),
+ get_bloginfo( 'name' ), '[your-subject]' ),
'sender' => sprintf( '%s <%s>',
get_bloginfo( 'name' ), self::from_email() ),
'body' =>
'description'
=> __( "Sender's message was sent successfully", 'contact-form-7' ),
'default'
- => __( 'Your message was sent successfully. Thanks.', 'contact-form-7' )
+ => __( "Thank you for your message. It has been sent.", 'contact-form-7' )
),
'mail_sent_ng' => array(
'description'
- => __( "Sender's message was failed to send", 'contact-form-7' ),
+ => __( "Sender's message failed to send", 'contact-form-7' ),
'default'
- => __( 'Failed to send your message. Please try later or contact the administrator by another method.', 'contact-form-7' )
+ => __( "There was an error trying to send your message. Please try again later.", 'contact-form-7' )
),
'validation_error' => array(
'description'
=> __( "Validation errors occurred", 'contact-form-7' ),
'default'
- => __( 'Validation errors occurred. Please confirm the fields and submit it again.', 'contact-form-7' )
+ => __( "One or more fields have an error. Please check and try again.", 'contact-form-7' )
),
'spam' => array(
'description'
=> __( "Submission was referred to as spam", 'contact-form-7' ),
'default'
- => __( 'Failed to send your message. Please try later or contact the administrator by another method.', 'contact-form-7' )
+ => __( "There was an error trying to send your message. Please try again later.", 'contact-form-7' )
),
'accept_terms' => array(
'description'
=> __( "There are terms that the sender must accept", 'contact-form-7' ),
'default'
- => __( 'Please accept the terms to proceed.', 'contact-form-7' )
+ => __( "You must accept the terms and conditions before sending your message.", 'contact-form-7' )
),
'invalid_required' => array(
'description'
=> __( "There is a field that the sender must fill in", 'contact-form-7' ),
'default'
- => __( 'Please fill in the required field.', 'contact-form-7' )
+ => __( "The field is required.", 'contact-form-7' )
),
'invalid_too_long' => array(
'description'
- => __( "There is a field that the user input is longer than the maximum allowed length", 'contact-form-7' ),
+ => __( "There is a field with input that is longer than the maximum allowed length", 'contact-form-7' ),
'default'
- => __( 'This input is too long.', 'contact-form-7' )
+ => __( "The field is too long.", 'contact-form-7' )
),
'invalid_too_short' => array(
'description'
- => __( "There is a field that the user input is shorter than the minimum allowed length", 'contact-form-7' ),
+ => __( "There is a field with input that is shorter than the minimum allowed length", 'contact-form-7' ),
'default'
- => __( 'This input is too short.', 'contact-form-7' )
+ => __( "The field is too short.", 'contact-form-7' )
)
);
private $unit_tag;
private $responses_count = 0;
private $scanned_form_tags;
+ private $config_validator;
public static function count() {
return self::$found_items;
$message = isset( $messages[$status] ) ? $messages[$status] : '';
if ( $filter ) {
+ $message = wp_strip_all_tags( $message );
$message = wpcf7_mail_replace_tags( $message, array( 'html' => true ) );
$message = apply_filters( 'wpcf7_display_message', $message, $status );
}
return apply_filters( 'wpcf7_contact_form_shortcode', $shortcode, $args, $this );
}
+
+ public function validate_configuration() {
+ if ( ! $this->initial() ) {
+ if ( ! $this->config_validator ) {
+ $this->config_validator = new WPCF7_ConfigValidator( $this );
+ }
+
+ $this->config_validator->validate();
+ }
+ }
+
+ public function get_config_errors() {
+ if ( ! $this->initial() ) {
+ if ( ! $this->config_validator ) {
+ $this->config_validator = new WPCF7_ConfigValidator( $this );
+ }
+
+ return $this->config_validator->get_errors();
+ }
+
+ return array();
+ }
+
+ public function config_error( $section ) {
+ if ( ! $this->initial() ) {
+ if ( ! $this->config_validator ) {
+ $this->config_validator = new WPCF7_ConfigValidator( $this );
+ }
+
+ return $this->config_validator->get_error_message( $section );
+ }
+
+ return '';
+ }
+
}
function wpcf7_contact_form( $id ) {
WPCF7_USE_REALLY_SIMPLE_CAPTCHA );
}
+function wpcf7_validate_configuration() {
+ return apply_filters( 'wpcf7_validate_configuration',
+ WPCF7_VALIDATE_CONFIGURATION );
+}
+
function wpcf7_load_js() {
return apply_filters( 'wpcf7_load_js', WPCF7_LOAD_JS );
}
?>
<div class="card<?php echo $service->is_active() ? ' active' : ''; ?>" id="<?php echo esc_attr( $name ); ?>">
<?php $service->icon(); ?>
-<h3 class="title"><?php echo esc_html( $service->get_title() ); ?></h3>
+<h2 class="title"><?php echo esc_html( $service->get_title() ); ?></h2>
<div class="infobox">
<?php echo esc_html( implode( ', ', $cats ) ); ?>
<br />
return $l10n;
}
- $l10n = array(
- 'af' => __( 'Afrikaans', 'contact-form-7' ),
- 'sq' => __( 'Albanian', 'contact-form-7' ),
- 'ar' => __( 'Arabic', 'contact-form-7' ),
- 'hy_AM' => __( 'Armenian', 'contact-form-7' ),
- 'az' => __( 'Azerbaijani', 'contact-form-7' ),
- 'bn_BD' => __( 'Bangla', 'contact-form-7' ),
- 'eu' => __( 'Basque', 'contact-form-7' ),
- 'be_BY' => __( 'Belarusian', 'contact-form-7' ),
- 'bs_BA' => __( 'Bosnian', 'contact-form-7' ),
- 'bg_BG' => __( 'Bulgarian', 'contact-form-7' ),
- 'ca' => __( 'Catalan', 'contact-form-7' ),
- 'ckb' => __( 'Central Kurdish', 'contact-form-7' ),
- 'zh_CN' => __( 'Chinese (China)', 'contact-form-7' ),
- 'zh_TW' => __( 'Chinese (Taiwan)', 'contact-form-7' ),
- 'hr' => __( 'Croatian', 'contact-form-7' ),
- 'cs_CZ' => __( 'Czech', 'contact-form-7' ),
- 'da_DK' => __( 'Danish', 'contact-form-7' ),
- 'nl_NL' => __( 'Dutch', 'contact-form-7' ),
- 'en_US' => __( 'English (United States)', 'contact-form-7' ),
- 'eo_EO' => __( 'Esperanto', 'contact-form-7' ),
- 'et' => __( 'Estonian', 'contact-form-7' ),
- 'fi' => __( 'Finnish', 'contact-form-7' ),
- 'fr_FR' => __( 'French (France)', 'contact-form-7' ),
- 'gl_ES' => __( 'Galician', 'contact-form-7' ),
- 'gu_IN' => __( 'Gujarati', 'contact-form-7' ),
- 'ka_GE' => __( 'Georgian', 'contact-form-7' ),
- 'de_DE' => __( 'German', 'contact-form-7' ),
- 'el' => __( 'Greek', 'contact-form-7' ),
- 'ht' => __( 'Haitian', 'contact-form-7' ),
- 'he_IL' => __( 'Hebrew', 'contact-form-7' ),
- 'hi_IN' => __( 'Hindi', 'contact-form-7' ),
- 'hu_HU' => __( 'Hungarian', 'contact-form-7' ),
- 'bn_IN' => __( 'Indian Bengali', 'contact-form-7' ),
- 'id_ID' => __( 'Indonesian', 'contact-form-7' ),
- 'ga_IE' => __( 'Irish', 'contact-form-7' ),
- 'it_IT' => __( 'Italian', 'contact-form-7' ),
- 'ja' => __( 'Japanese', 'contact-form-7' ),
- 'ko_KR' => __( 'Korean', 'contact-form-7' ),
- 'lv' => __( 'Latvian', 'contact-form-7' ),
- 'lt_LT' => __( 'Lithuanian', 'contact-form-7' ),
- 'mk_MK' => __( 'Macedonian', 'contact-form-7' ),
- 'ms_MY' => __( 'Malay', 'contact-form-7' ),
- 'ml_IN' => __( 'Malayalam', 'contact-form-7' ),
- 'mt_MT' => __( 'Maltese', 'contact-form-7' ),
- 'nb_NO' => __( 'Norwegian (Bokmål)', 'contact-form-7' ),
- 'fa_IR' => __( 'Persian', 'contact-form-7' ),
- 'pl_PL' => __( 'Polish', 'contact-form-7' ),
- 'pt_BR' => __( 'Portuguese (Brazil)', 'contact-form-7' ),
- 'pt_PT' => __( 'Portuguese (Portugal)', 'contact-form-7' ),
- 'pa_IN' => __( 'Punjabi', 'contact-form-7' ),
- 'ru_RU' => __( 'Russian', 'contact-form-7' ),
- 'ro_RO' => __( 'Romanian', 'contact-form-7' ),
- 'sr_RS' => __( 'Serbian', 'contact-form-7' ),
- 'si_LK' => __( 'Sinhala', 'contact-form-7' ),
- 'sk_SK' => __( 'Slovak', 'contact-form-7' ),
- 'sl_SI' => __( 'Slovene', 'contact-form-7' ),
- 'es_ES' => __( 'Spanish (Spain)', 'contact-form-7' ),
- 'sv_SE' => __( 'Swedish', 'contact-form-7' ),
- 'ta' => __( 'Tamil', 'contact-form-7' ),
- 'th' => __( 'Thai', 'contact-form-7' ),
- 'tl' => __( 'Tagalog', 'contact-form-7' ),
- 'tr_TR' => __( 'Turkish', 'contact-form-7' ),
- 'uk' => __( 'Ukrainian', 'contact-form-7' ),
- 'vi' => __( 'Vietnamese', 'contact-form-7' )
- );
+ if ( ! is_admin() ) {
+ return $l10n;
+ }
+
+ require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
+
+ $api = translations_api( 'plugins', array(
+ 'slug' => 'contact-form-7',
+ 'version' => WPCF7_VERSION ) );
+
+ if ( is_wp_error( $api ) || empty( $api['translations'] ) ) {
+ return $l10n;
+ }
+
+ foreach ( (array) $api['translations'] as $translation ) {
+ if ( ! empty( $translation['language'] )
+ && ! empty( $translation['english_name'] ) ) {
+ $l10n[$translation['language']] = $translation['english_name'];
+ }
+ }
return $l10n;
}
function wpcf7_is_valid_locale( $locale ) {
- $l10n = wpcf7_l10n();
- return isset( $l10n[$locale] );
+ $pattern = '/^[a-z]{2,3}(?:_[a-zA-Z_]{2,})?$/';
+ return (bool) preg_match( $pattern, $locale );
}
function wpcf7_is_rtl( $locale = '' ) {
if ( $use_html ) {
$headers .= "Content-Type: text/html\n";
+ $headers .= "X-WPCF7-Content-Type: text/html\n";
+ } else {
+ $headers .= "X-WPCF7-Content-Type: text/plain\n";
}
if ( $additional_headers ) {
return $content;
}
+add_action( 'phpmailer_init', 'wpcf7_phpmailer_init' );
+
+function wpcf7_phpmailer_init( $phpmailer ) {
+ $wpcf7_content_type = false;
+
+ foreach ( (array) $phpmailer->getCustomHeaders() as $custom_header ) {
+ if ( 'X-WPCF7-Content-Type' == $custom_header[0] ) {
+ $wpcf7_content_type = trim( $custom_header[1] );
+ break;
+ }
+ }
+
+ if ( 'text/html' == $wpcf7_content_type ) {
+ $phpmailer->msgHTML( $phpmailer->Body );
+ }
+}
+
class WPCF7_MailTaggedText {
private $html = false;
+ private $callback = null;
private $content = '';
private $replaced_tags = array();
public function __construct( $content, $args = '' ) {
- $args = wp_parse_args( $args, array( 'html' => false ) );
+ $args = wp_parse_args( $args, array(
+ 'html' => false,
+ 'callback' => null ) );
$this->html = (bool) $args['html'];
+
+ if ( null !== $args['callback'] && is_callable( $args['callback'] ) ) {
+ $this->callback = $args['callback'];
+ } elseif ( $this->html ) {
+ $this->callback = array( $this, 'replace_tags_callback_html' );
+ } else {
+ $this->callback = array( $this, 'replace_tags_callback' );
+ }
+
$this->content = $content;
}
. '((?:[\t ]+"[^"]*"|[\t ]+\'[^\']*\')*)' // [3] = values
. '[\t ]*\](\]?)/';
- if ( $this->html ) {
- $callback = array( $this, 'replace_tags_callback_html' );
- } else {
- $callback = array( $this, 'replace_tags_callback' );
- }
-
- return preg_replace_callback( $regex, $callback, $this->content );
+ return preg_replace_callback( $regex, $this->callback, $this->content );
}
private function replace_tags_callback_html( $matches ) {
return $output;
}
-?>
\ No newline at end of file
+?>
msgstr ""
"Project-Id-Version: Contact Form 7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-24 01:46+0900\n"
+"POT-Creation-Date: 2016-02-20 13:50+0900\n"
"PO-Revision-Date: 2015-05-18 21:49+0900\n"
"Last-Translator: Takayuki Miyoshi <takayukister@gmail.com>\n"
"Language-Team: \n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: UTF-8\n"
-"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_c\n"
+"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_c;_n:1,2;_x\n"
"X-Poedit-Basepath: ../..\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 1.8.6\n"
msgid "Just another contact form plugin. Simple but flexible."
msgstr ""
-#: contact-form-7/admin/admin.php:16 contact-form-7/modules/flamingo.php:136
+#: contact-form-7/admin/admin.php:20 contact-form-7/modules/flamingo.php:137
msgid "Contact Form 7"
msgstr ""
-#: contact-form-7/admin/admin.php:17
+#: contact-form-7/admin/admin.php:21
msgid "Contact"
msgstr ""
-#: contact-form-7/admin/admin.php:22
+#: contact-form-7/admin/admin.php:27
#: contact-form-7/admin/edit-contact-form.php:38
msgid "Edit Contact Form"
msgstr ""
-#: contact-form-7/admin/admin.php:23 contact-form-7/admin/admin.php:239
-#: contact-form-7/includes/contact-form.php:29
+#: contact-form-7/admin/admin.php:28 contact-form-7/admin/admin.php:283
+#: contact-form-7/includes/contact-form.php:30
msgid "Contact Forms"
msgstr ""
-#: contact-form-7/admin/admin.php:30 contact-form-7/admin/admin.php:283
+#: contact-form-7/admin/admin.php:35
#: contact-form-7/admin/edit-contact-form.php:36
msgid "Add New Contact Form"
msgstr ""
-#: contact-form-7/admin/admin.php:31 contact-form-7/admin/admin.php:242
-#: contact-form-7/admin/admin.php:288 contact-form-7/admin/admin.php:300
+#: contact-form-7/admin/admin.php:36 contact-form-7/admin/admin.php:286
#: contact-form-7/admin/edit-contact-form.php:41
msgid "Add New"
msgstr ""
-#: contact-form-7/admin/admin.php:41 contact-form-7/admin/admin.php:325
+#: contact-form-7/admin/admin.php:46 contact-form-7/admin/admin.php:366
msgid "Integration with Other Services"
msgstr ""
-#: contact-form-7/admin/admin.php:42
+#: contact-form-7/admin/admin.php:47
msgid "Integration"
msgstr ""
-#: contact-form-7/admin/admin.php:72 contact-form-7/admin/admin.php:94
+#: contact-form-7/admin/admin.php:77 contact-form-7/admin/admin.php:99
msgid "You are not allowed to edit this item."
msgstr ""
-#: contact-form-7/admin/admin.php:133
+#: contact-form-7/admin/admin.php:138
msgid "You are not allowed to delete this item."
msgstr ""
-#: contact-form-7/admin/admin.php:136
+#: contact-form-7/admin/admin.php:141
msgid "Error in deleting."
msgstr ""
-#: contact-form-7/admin/admin.php:213
+#: contact-form-7/admin/admin.php:162
+msgid "You are not allowed to validate configuration."
+msgstr ""
+
+#: contact-form-7/admin/admin.php:250
msgid "The changes you made will be lost if you navigate away from this page."
msgstr ""
-#: contact-form-7/admin/admin.php:247
+#: contact-form-7/admin/admin.php:291
#, php-format
msgid "Search results for “%s”"
msgstr ""
-#: contact-form-7/admin/admin.php:256
+#: contact-form-7/admin/admin.php:300
msgid "Search Contact Forms"
msgstr ""
-#: contact-form-7/admin/admin.php:287
+#: contact-form-7/admin/admin.php:314
#, php-format
-msgid "Use the default language (%s)"
-msgstr ""
-
-#: contact-form-7/admin/admin.php:291
-msgid "Or"
-msgstr ""
+msgid "Validate %s Contact Form Now"
+msgid_plural "Validate %s Contact Forms Now"
+msgstr[0] ""
-#: contact-form-7/admin/admin.php:295
-msgid "(select language)"
+#: contact-form-7/admin/admin.php:322
+msgid "Validate Configuration"
msgstr ""
-#: contact-form-7/admin/admin.php:354
+#: contact-form-7/admin/admin.php:395
msgid "Contact form created."
msgstr ""
-#: contact-form-7/admin/admin.php:356
+#: contact-form-7/admin/admin.php:397
msgid "Contact form saved."
msgstr ""
-#: contact-form-7/admin/admin.php:358
+#: contact-form-7/admin/admin.php:399
msgid "Contact form deleted."
msgstr ""
-#: contact-form-7/admin/admin.php:373
+#: contact-form-7/admin/admin.php:408
+#, php-format
+msgid "Configuration validation completed. An invalid contact form was found."
+msgid_plural ""
+"Configuration validation completed. %s invalid contact forms were found."
+msgstr[0] ""
+
+#: contact-form-7/admin/admin.php:413
+msgid "Configuration validation completed. No invalid contact form was found."
+msgstr ""
+
+#: contact-form-7/admin/admin.php:429
msgid "Settings"
msgstr ""
-#: contact-form-7/admin/admin.php:391
+#: contact-form-7/admin/admin.php:447
#, php-format
msgid ""
"<strong>Contact Form 7 %1$s requires WordPress %2$s or higher.</strong> "
"Please <a href=\"%3$s\">update WordPress</a> first."
msgstr ""
-#: contact-form-7/admin/admin.php:417
+#: contact-form-7/admin/admin.php:473
msgid "Dismiss"
msgstr ""
-#: contact-form-7/admin/admin.php:422
+#: contact-form-7/admin/admin.php:478
msgid "Contact Form 7 Needs Your Support"
msgstr ""
-#: contact-form-7/admin/admin.php:423
+#: contact-form-7/admin/admin.php:479
msgid ""
"It is hard to continue development and support for this plugin without "
"contributions from users like you. If you enjoy using Contact Form 7 and "
"find it useful, please consider making a donation."
msgstr ""
-#: contact-form-7/admin/admin.php:424
+#: contact-form-7/admin/admin.php:480
msgid "http://contactform7.com/donate/"
msgstr ""
-#: contact-form-7/admin/admin.php:424
+#: contact-form-7/admin/admin.php:480
msgid "Donate"
msgstr ""
-#: contact-form-7/admin/admin.php:428
+#: contact-form-7/admin/admin.php:484
msgid "Get Started"
msgstr ""
-#: contact-form-7/admin/admin.php:430
+#: contact-form-7/admin/admin.php:486
msgid "http://contactform7.com/getting-started-with-contact-form-7/"
msgstr ""
-#: contact-form-7/admin/admin.php:430
+#: contact-form-7/admin/admin.php:486
msgid "Getting Started with Contact Form 7"
msgstr ""
-#: contact-form-7/admin/admin.php:431
+#: contact-form-7/admin/admin.php:487
msgid "http://contactform7.com/admin-screen/"
msgstr ""
-#: contact-form-7/admin/admin.php:431
+#: contact-form-7/admin/admin.php:487
msgid "Admin Screen"
msgstr ""
-#: contact-form-7/admin/admin.php:432
+#: contact-form-7/admin/admin.php:488
msgid "http://contactform7.com/tag-syntax/"
msgstr ""
-#: contact-form-7/admin/admin.php:432
+#: contact-form-7/admin/admin.php:488
msgid "How Tags Work"
msgstr ""
-#: contact-form-7/admin/admin.php:433
+#: contact-form-7/admin/admin.php:489
msgid "http://contactform7.com/setting-up-mail/"
msgstr ""
-#: contact-form-7/admin/admin.php:433
+#: contact-form-7/admin/admin.php:489
msgid "Setting Up Mail"
msgstr ""
-#: contact-form-7/admin/admin.php:438
+#: contact-form-7/admin/admin.php:494
msgid "Did You Know?"
msgstr ""
-#: contact-form-7/admin/admin.php:440
+#: contact-form-7/admin/admin.php:496
msgid "http://contactform7.com/spam-filtering-with-akismet/"
msgstr ""
-#: contact-form-7/admin/admin.php:440
+#: contact-form-7/admin/admin.php:496
msgid "Spam Filtering with Akismet"
msgstr ""
-#: contact-form-7/admin/admin.php:441
+#: contact-form-7/admin/admin.php:497
msgid "http://contactform7.com/save-submitted-messages-with-flamingo/"
msgstr ""
-#: contact-form-7/admin/admin.php:441
+#: contact-form-7/admin/admin.php:497
msgid "Save Messages with Flamingo"
msgstr ""
-#: contact-form-7/admin/admin.php:442
+#: contact-form-7/admin/admin.php:498
msgid "http://contactform7.com/selectable-recipient-with-pipes/"
msgstr ""
-#: contact-form-7/admin/admin.php:442
+#: contact-form-7/admin/admin.php:498
msgid "Selectable Recipient with Pipes"
msgstr ""
-#: contact-form-7/admin/admin.php:443
+#: contact-form-7/admin/admin.php:499
msgid ""
"http://contactform7.com/tracking-form-submissions-with-google-analytics/"
msgstr ""
-#: contact-form-7/admin/admin.php:443
+#: contact-form-7/admin/admin.php:499
msgid "Tracking with Google Analytics"
msgstr ""
-#: contact-form-7/admin/admin.php:488
+#: contact-form-7/admin/admin.php:544
msgid "You are not allowed to edit this contact form."
msgstr ""
+#: contact-form-7/admin/admin.php:567
+#, php-format
+msgid "This contact form has a configuration error."
+msgid_plural "This contact form has %s configuration errors."
+msgstr[0] ""
+
+#: contact-form-7/admin/admin.php:573
+msgid "http://contactform7.com/configuration-errors/"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:574
+msgid "How to Resolve Configuration Errors"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:601
+msgid "Validate Contact Form 7 Configuration"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:603
+msgid ""
+"Misconfiguration leads to mail delivery failure or other troubles. Validate "
+"your contact forms now."
+msgstr ""
+
#: contact-form-7/admin/edit-contact-form.php:26
#: contact-form-7/admin/edit-contact-form.php:124
#: contact-form-7/modules/recaptcha.php:206
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:131
-#: contact-form-7/admin/includes/class-contact-forms-list-table.php:116
+#: contact-form-7/admin/includes/class-contact-forms-list-table.php:139
msgid "Duplicate"
msgstr ""
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:161
-#: contact-form-7/admin/includes/help-tabs.php:103
+#: contact-form-7/admin/includes/help-tabs.php:92
msgid "http://contactform7.com/docs/"
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:161
-#: contact-form-7/admin/includes/help-tabs.php:103
+#: contact-form-7/admin/includes/help-tabs.php:92
msgid "Docs"
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:162
-#: contact-form-7/admin/includes/help-tabs.php:104
+#: contact-form-7/admin/includes/help-tabs.php:93
msgid "http://contactform7.com/faq/"
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:162
-#: contact-form-7/admin/includes/help-tabs.php:104
+#: contact-form-7/admin/includes/help-tabs.php:93
msgid "FAQ"
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:163
-#: contact-form-7/admin/includes/help-tabs.php:105
+#: contact-form-7/admin/includes/help-tabs.php:94
msgid "http://contactform7.com/support/"
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:163
-#: contact-form-7/admin/includes/help-tabs.php:105
+#: contact-form-7/admin/includes/help-tabs.php:94
msgid "Support"
msgstr ""
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:188
-#: contact-form-7/admin/includes/editor.php:172
+#: contact-form-7/admin/includes/editor.php:201
msgid "Messages"
msgstr ""
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:201
-#: contact-form-7/admin/includes/editor.php:195
-#: contact-form-7/admin/includes/editor.php:200
+#: contact-form-7/admin/includes/editor.php:233
+#: contact-form-7/admin/includes/editor.php:238
msgid "Additional Settings"
msgstr ""
msgstr ""
#: contact-form-7/admin/includes/class-contact-forms-list-table.php:106
-msgid "Edit"
+#, php-format
+msgid "Edit “%s”"
msgstr ""
-#: contact-form-7/admin/includes/class-contact-forms-list-table.php:121
+#: contact-form-7/admin/includes/class-contact-forms-list-table.php:117
#, php-format
-msgid "Edit “%s”"
+msgid "%s configuration error found"
+msgid_plural "%s configuration errors found"
+msgstr[0] ""
+
+#: contact-form-7/admin/includes/class-contact-forms-list-table.php:129
+msgid "Edit"
msgstr ""
-#: contact-form-7/admin/includes/class-contact-forms-list-table.php:165
+#: contact-form-7/admin/includes/class-contact-forms-list-table.php:184
msgid "Y/m/d g:i:s A"
msgstr ""
-#: contact-form-7/admin/includes/class-contact-forms-list-table.php:172
+#: contact-form-7/admin/includes/class-contact-forms-list-table.php:191
#, php-format
msgid "%s ago"
msgstr ""
-#: contact-form-7/admin/includes/class-contact-forms-list-table.php:174
+#: contact-form-7/admin/includes/class-contact-forms-list-table.php:193
msgid "Y/m/d"
msgstr ""
msgid "Use Mail (2)"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:90
+#: contact-form-7/admin/includes/editor.php:92
msgid "Mail (2) is an additional mail template often used as an autoresponder."
msgstr ""
-#: contact-form-7/admin/includes/editor.php:96
+#: contact-form-7/admin/includes/editor.php:98
msgid "In the following fields, you can use these mail-tags:"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:102
+#: contact-form-7/admin/includes/editor.php:104
msgid "To"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:111
+#: contact-form-7/admin/includes/editor.php:118
msgid "From"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:120
+#: contact-form-7/admin/includes/editor.php:132
#: contact-form-7/includes/contact-form-template.php:29
msgid "Subject"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:129
+#: contact-form-7/admin/includes/editor.php:146
msgid "Additional Headers"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:138
+#: contact-form-7/admin/includes/editor.php:160
msgid "Message Body"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:143
+#: contact-form-7/admin/includes/editor.php:170
msgid "Exclude lines with blank mail-tags from output"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:145
+#: contact-form-7/admin/includes/editor.php:172
msgid "Use HTML content type"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:151
+#: contact-form-7/admin/includes/editor.php:178
msgid "File Attachments"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:174
+#: contact-form-7/admin/includes/editor.php:203
msgid "Edit messages used in the following situations."
msgstr ""
-#: contact-form-7/admin/includes/editor.php:194
+#: contact-form-7/admin/includes/editor.php:232
msgid "http://contactform7.com/additional-settings/"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:196
+#: contact-form-7/admin/includes/editor.php:234
#, php-format
msgid "You can add customization code snippets here. For details, see %s."
msgstr ""
#: contact-form-7/admin/includes/help-tabs.php:16
-#: contact-form-7/admin/includes/help-tabs.php:39
-#: contact-form-7/admin/includes/help-tabs.php:58
+#: contact-form-7/admin/includes/help-tabs.php:30
+#: contact-form-7/admin/includes/help-tabs.php:49
msgid "Overview"
msgstr ""
msgid "Available Actions"
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:30
-msgid "Adding A New Contact Form"
-msgstr ""
-
-#: contact-form-7/admin/includes/help-tabs.php:44
+#: contact-form-7/admin/includes/help-tabs.php:35
msgid "Form-tags"
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:49
+#: contact-form-7/admin/includes/help-tabs.php:40
msgid "Mail-tags"
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:70
+#: contact-form-7/admin/includes/help-tabs.php:61
msgid ""
"On this screen, you can manage contact forms provided by Contact Form 7. You "
"can manage an unlimited number of contact forms. Each contact form has a "
"target."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:72
+#: contact-form-7/admin/includes/help-tabs.php:63
msgid ""
"Hovering over a row in the contact forms list will display action links that "
"allow you to manage your contact form. You can perform the following actions:"
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:73
+#: contact-form-7/admin/includes/help-tabs.php:64
msgid ""
"<strong>Edit</strong> - Navigates to the editing screen for that contact "
"form. You can also reach that screen by clicking on the contact form title."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:74
+#: contact-form-7/admin/includes/help-tabs.php:65
msgid ""
"<strong>Duplicate</strong> - Clones that contact form. A cloned contact form "
"inherits all content from the original, but has a different ID."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:76
-msgid ""
-"You can add a new contact form on this screen. You can create a contact form "
-"in your language, which is set WordPress local settings, or in a language "
-"that you select from available options."
-msgstr ""
-
-#: contact-form-7/admin/includes/help-tabs.php:78
+#: contact-form-7/admin/includes/help-tabs.php:67
msgid ""
"On this screen, you can edit a contact form. A contact form is comprised of "
"the following components:"
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:79
+#: contact-form-7/admin/includes/help-tabs.php:68
msgid ""
"<strong>Title</strong> is the title of a contact form. This title is only "
"used for labeling a contact form, and can be edited."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:80
+#: contact-form-7/admin/includes/help-tabs.php:69
msgid ""
"<strong>Form</strong> is a content of HTML form. You can use arbitrary HTML, "
"which is allowed inside a form element. You can also use Contact Form "
"7’s form-tags here."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:81
+#: contact-form-7/admin/includes/help-tabs.php:70
msgid ""
"<strong>Mail</strong> manages a mail template (headers and message body) "
"that this contact form will send when users submit it. You can use Contact "
"Form 7’s mail-tags here."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:82
+#: contact-form-7/admin/includes/help-tabs.php:71
msgid ""
"<strong>Mail (2)</strong> is an additional mail template that works similar "
"to Mail. Mail (2) is different in that it is sent only when Mail has been "
"sent successfully."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:83
+#: contact-form-7/admin/includes/help-tabs.php:72
msgid ""
"In <strong>Messages</strong>, you can edit various types of messages used "
"for this contact form. These messages are relatively short messages, like a "
"validation error message you see when you leave a required field blank."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:84
+#: contact-form-7/admin/includes/help-tabs.php:73
msgid ""
"<strong>Additional Settings</strong> provides a place where you can "
"customize the behavior of this contact form by adding code snippets."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:86
+#: contact-form-7/admin/includes/help-tabs.php:75
msgid ""
"A form-tag is a short code enclosed in square brackets used in a form "
"content. A form-tag generally represents an input field, and its components "
"fields, CAPTCHAs, and quiz fields."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:87
+#: contact-form-7/admin/includes/help-tabs.php:76
msgid ""
"While form-tags have a comparatively complex syntax, you don’t need to "
"know the syntax to add form-tags because you can use the straightforward tag "
"generator (<strong>Generate Tag</strong> button on this screen)."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:89
+#: contact-form-7/admin/includes/help-tabs.php:78
msgid ""
"A mail-tag is also a short code enclosed in square brackets that you can use "
"in every Mail and Mail (2) field. A mail-tag represents a user input value "
"through an input field of a corresponding form-tag."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:90
+#: contact-form-7/admin/includes/help-tabs.php:79
msgid ""
"There are also special mail-tags that have specific names, but don’t "
"have corresponding form-tags. They are used to represent meta information of "
"page."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:92
+#: contact-form-7/admin/includes/help-tabs.php:81
msgid ""
"On this screen, you can manage services that are available through Contact "
"Form 7. Using API will allow you to collaborate with any services that are "
"available."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:93
+#: contact-form-7/admin/includes/help-tabs.php:82
msgid ""
"You may need to first sign up for an account with the service that you plan "
"to use. When you do so, you would need to authorize Contact Form 7 to access "
"the service with your account."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:94
+#: contact-form-7/admin/includes/help-tabs.php:83
msgid ""
"Any information you provide will not be shared with service providers "
"without your authorization."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:102
+#: contact-form-7/admin/includes/help-tabs.php:91
msgid "For more information:"
msgstr ""
msgid "Form-tag Generator: %s"
msgstr ""
+#: contact-form-7/includes/config-validator.php:41
+msgid "This field can be empty depending on user input."
+msgstr ""
+
+#: contact-form-7/includes/config-validator.php:43
+msgid "This field has syntax errors."
+msgstr ""
+
+#: contact-form-7/includes/config-validator.php:45
+msgid "This email address does not belong to the same domain as the site."
+msgstr ""
+
+#: contact-form-7/includes/config-validator.php:47
+msgid "HTML tags are not allowed in a message."
+msgstr ""
+
#: contact-form-7/includes/contact-form-template.php:23
msgid "Your Name"
msgstr ""
msgid "Send"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:43
+#: contact-form-7/includes/contact-form-template.php:41
+#: contact-form-7/includes/contact-form-template.php:67
#, php-format
-msgid "From: %s"
+msgid "%1$s \"%2$s\""
msgstr ""
#: contact-form-7/includes/contact-form-template.php:45
#, php-format
-msgid "Subject: %s"
+msgid "From: %s"
msgstr ""
#: contact-form-7/includes/contact-form-template.php:47
-#: contact-form-7/includes/contact-form-template.php:68
+#, php-format
+msgid "Subject: %s"
+msgstr ""
+
+#: contact-form-7/includes/contact-form-template.php:49
+#: contact-form-7/includes/contact-form-template.php:72
msgid "Message Body:"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:50
-#: contact-form-7/includes/contact-form-template.php:71
+#: contact-form-7/includes/contact-form-template.php:52
+#: contact-form-7/includes/contact-form-template.php:75
#, php-format
msgid "This e-mail was sent from a contact form on %1$s (%2$s)"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:117
+#: contact-form-7/includes/contact-form-template.php:121
msgid "Sender's message was sent successfully"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:119
-msgid "Your message was sent successfully. Thanks."
+#: contact-form-7/includes/contact-form-template.php:123
+msgid "Thank you for your message. It has been sent."
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:124
-msgid "Sender's message was failed to send"
+#: contact-form-7/includes/contact-form-template.php:128
+msgid "Sender's message failed to send"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:126
-#: contact-form-7/includes/contact-form-template.php:140
-msgid ""
-"Failed to send your message. Please try later or contact the administrator "
-"by another method."
+#: contact-form-7/includes/contact-form-template.php:130
+#: contact-form-7/includes/contact-form-template.php:144
+msgid "There was an error trying to send your message. Please try again later."
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:131
+#: contact-form-7/includes/contact-form-template.php:135
msgid "Validation errors occurred"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:133
-msgid ""
-"Validation errors occurred. Please confirm the fields and submit it again."
+#: contact-form-7/includes/contact-form-template.php:137
+msgid "One or more fields have an error. Please check and try again."
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:138
+#: contact-form-7/includes/contact-form-template.php:142
msgid "Submission was referred to as spam"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:145
+#: contact-form-7/includes/contact-form-template.php:149
msgid "There are terms that the sender must accept"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:147
-msgid "Please accept the terms to proceed."
+#: contact-form-7/includes/contact-form-template.php:151
+msgid "You must accept the terms and conditions before sending your message."
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:152
+#: contact-form-7/includes/contact-form-template.php:156
msgid "There is a field that the sender must fill in"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:154
-msgid "Please fill in the required field."
+#: contact-form-7/includes/contact-form-template.php:158
+msgid "The field is required."
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:159
+#: contact-form-7/includes/contact-form-template.php:163
msgid ""
-"There is a field that the user input is longer than the maximum allowed "
-"length"
+"There is a field with input that is longer than the maximum allowed length"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:161
-msgid "This input is too long."
+#: contact-form-7/includes/contact-form-template.php:165
+msgid "The field is too long."
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:166
+#: contact-form-7/includes/contact-form-template.php:170
msgid ""
-"There is a field that the user input is shorter than the minimum allowed "
-"length"
+"There is a field with input that is shorter than the minimum allowed length"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:168
-msgid "This input is too short."
+#: contact-form-7/includes/contact-form-template.php:172
+msgid "The field is too short."
msgstr ""
-#: contact-form-7/includes/contact-form.php:30
+#: contact-form-7/includes/contact-form.php:31
msgid "Contact Form"
msgstr ""
-#: contact-form-7/includes/contact-form.php:76
-#: contact-form-7/includes/contact-form.php:226
+#: contact-form-7/includes/contact-form.php:77
+#: contact-form-7/includes/contact-form.php:227
msgid "Untitled"
msgstr ""
-#: contact-form-7/includes/contact-form.php:152
+#: contact-form-7/includes/contact-form.php:153
#, php-format
msgid ""
"<code>%1$s</code> property of a <code>WPCF7_ContactForm</code> object is "
msgid "Sending ..."
msgstr ""
-#: contact-form-7/includes/l10n.php:11
-msgid "Afrikaans"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:12
-msgid "Albanian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:13
-msgid "Arabic"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:14
-msgid "Armenian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:15
-msgid "Azerbaijani"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:16
-msgid "Bangla"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:17
-msgid "Basque"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:18
-msgid "Belarusian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:19
-msgid "Bosnian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:20
-msgid "Bulgarian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:21
-msgid "Catalan"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:22
-msgid "Central Kurdish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:23
-msgid "Chinese (China)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:24
-msgid "Chinese (Taiwan)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:25
-msgid "Croatian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:26
-msgid "Czech"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:27
-msgid "Danish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:28
-msgid "Dutch"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:29
-msgid "English (United States)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:30
-msgid "Esperanto"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:31
-msgid "Estonian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:32
-msgid "Finnish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:33
-msgid "French (France)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:34
-msgid "Galician"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:35
-msgid "Gujarati"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:36
-msgid "Georgian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:37
-msgid "German"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:38
-msgid "Greek"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:39
-msgid "Haitian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:40
-msgid "Hebrew"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:41
-msgid "Hindi"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:42
-msgid "Hungarian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:43
-msgid "Indian Bengali"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:44
-msgid "Indonesian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:45
-msgid "Irish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:46
-msgid "Italian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:47
-msgid "Japanese"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:48
-msgid "Korean"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:49
-msgid "Latvian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:50
-msgid "Lithuanian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:51
-msgid "Macedonian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:52
-msgid "Malay"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:53
-msgid "Malayalam"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:54
-msgid "Maltese"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:55
-msgid "Norwegian (Bokmål)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:56
-msgid "Persian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:57
-msgid "Polish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:58
-msgid "Portuguese (Brazil)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:59
-msgid "Portuguese (Portugal)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:60
-msgid "Punjabi"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:61
-msgid "Russian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:62
-msgid "Romanian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:63
-msgid "Serbian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:64
-msgid "Sinhala"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:65
-msgid "Slovak"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:66
-msgid "Slovene"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:67
-msgid "Spanish (Spain)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:68
-msgid "Swedish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:69
-msgid "Tamil"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:70
-msgid "Thai"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:71
-msgid "Tagalog"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:72
-msgid "Turkish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:73
-msgid "Ukrainian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:74
-msgid "Vietnamese"
-msgstr ""
-
#: contact-form-7/modules/acceptance.php:130
msgid "acceptance"
msgstr ""
msgstr ""
#: contact-form-7/modules/date.php:118
-msgid "Date format seems invalid."
+msgid "The date format is incorrect."
msgstr ""
#: contact-form-7/modules/date.php:122
msgstr ""
#: contact-form-7/modules/date.php:123
-msgid "This date is too early."
+msgid "The date is before the earliest one allowed."
msgstr ""
#: contact-form-7/modules/date.php:127
msgstr ""
#: contact-form-7/modules/date.php:128
-msgid "This date is too late."
+msgid "The date is after the latest one allowed."
msgstr ""
#: contact-form-7/modules/date.php:139
msgstr ""
#: contact-form-7/modules/file.php:196
-msgid "Failed to upload file."
+msgid "There was an unknown error uploading the file."
msgstr ""
#: contact-form-7/modules/file.php:200
-msgid "Uploaded file is not allowed file type"
+msgid "Uploaded file is not allowed for file type"
msgstr ""
#: contact-form-7/modules/file.php:201
-msgid "This file type is not allowed."
+msgid "You are not allowed to upload files of this type."
msgstr ""
#: contact-form-7/modules/file.php:205
msgstr ""
#: contact-form-7/modules/file.php:206
-msgid "This file is too large."
+msgid "The file is too big."
msgstr ""
#: contact-form-7/modules/file.php:210
msgstr ""
#: contact-form-7/modules/file.php:211
-msgid "Failed to upload file. Error occurred."
+msgid "There was an error uploading the file."
msgstr ""
#: contact-form-7/modules/file.php:223
"folder or change its permission manually."
msgstr ""
-#: contact-form-7/modules/jetpack.php:20
-msgid "http://contactform7.com/jetpack-overrides-contact-forms/"
-msgstr ""
-
-#: contact-form-7/modules/jetpack.php:20
-msgid "Jetpack Overrides Contact Forms"
-msgstr ""
-
-#: contact-form-7/modules/jetpack.php:24
-#, php-format
-msgid ""
-"Jetpack may cause problems for other plugins in certain cases. For more "
-"details, see %s."
-msgstr ""
-
#: contact-form-7/modules/number.php:120
msgid "Number format that the sender entered is invalid"
msgstr ""
#: contact-form-7/modules/number.php:121
-msgid "Number format seems invalid."
+msgid "The number format is invalid."
msgstr ""
#: contact-form-7/modules/number.php:125
msgstr ""
#: contact-form-7/modules/number.php:126
-msgid "This number is too small."
+msgid "The number is smaller than the minimum allowed."
msgstr ""
#: contact-form-7/modules/number.php:130
msgstr ""
#: contact-form-7/modules/number.php:131
-msgid "This number is too large."
+msgid "The number is larger than the maximum allowed."
msgstr ""
#: contact-form-7/modules/number.php:142
msgstr ""
#: contact-form-7/modules/quiz.php:150
-msgid "Your answer is not correct."
+msgid "The answer to the quiz is incorrect."
msgstr ""
#: contact-form-7/modules/quiz.php:161
msgstr ""
#: contact-form-7/modules/text.php:170
-msgid "Email address seems invalid."
+msgid "The e-mail address entered is invalid."
msgstr ""
#: contact-form-7/modules/text.php:174
msgstr ""
#: contact-form-7/modules/text.php:175
-msgid "URL seems invalid."
+msgid "The URL is invalid."
msgstr ""
#: contact-form-7/modules/text.php:179
msgstr ""
#: contact-form-7/modules/text.php:180
-msgid "Telephone number seems invalid."
+msgid "The telephone number is invalid."
msgstr ""
#: contact-form-7/modules/text.php:191
-Contact Form 7 WordPress Plugin, 2007-2015 Takayuki Miyoshi
+Contact Form 7 WordPress Plugin, 2007-2016 Takayuki Miyoshi
Contact Form 7 is distributed under the terms of the GNU GPL
This program is free software; you can redistribute it and/or modify
return array_merge( $messages, array(
'invalid_date' => array(
'description' => __( "Date format that the sender entered is invalid", 'contact-form-7' ),
- 'default' => __( 'Date format seems invalid.', 'contact-form-7' )
+ 'default' => __( "The date format is incorrect.", 'contact-form-7' )
),
'date_too_early' => array(
'description' => __( "Date is earlier than minimum limit", 'contact-form-7' ),
- 'default' => __( 'This date is too early.', 'contact-form-7' )
+ 'default' => __( "The date is before the earliest one allowed.", 'contact-form-7' )
),
'date_too_late' => array(
'description' => __( "Date is later than maximum limit", 'contact-form-7' ),
- 'default' => __( 'This date is too late.', 'contact-form-7' )
+ 'default' => __( "The date is after the latest one allowed.", 'contact-form-7' )
) ) );
}
return array_merge( $messages, array(
'upload_failed' => array(
'description' => __( "Uploading a file fails for any reason", 'contact-form-7' ),
- 'default' => __( 'Failed to upload file.', 'contact-form-7' )
+ 'default' => __( "There was an unknown error uploading the file.", 'contact-form-7' )
),
'upload_file_type_invalid' => array(
- 'description' => __( "Uploaded file is not allowed file type", 'contact-form-7' ),
- 'default' => __( 'This file type is not allowed.', 'contact-form-7' )
+ 'description' => __( "Uploaded file is not allowed for file type", 'contact-form-7' ),
+ 'default' => __( "You are not allowed to upload files of this type.", 'contact-form-7' )
),
'upload_file_too_large' => array(
'description' => __( "Uploaded file is too large", 'contact-form-7' ),
- 'default' => __( 'This file is too large.', 'contact-form-7' )
+ 'default' => __( "The file is too big.", 'contact-form-7' )
),
'upload_failed_php_error' => array(
'description' => __( "Uploading a file fails for PHP error", 'contact-form-7' ),
- 'default' => __( 'Failed to upload file. Error occurred.', 'contact-form-7' )
+ 'default' => __( "There was an error uploading the file.", 'contact-form-7' )
)
) );
}
return;
}
- if ( $contactform->in_demo_mode() ) {
+ if ( $contactform->in_demo_mode()
+ || $contactform->is_true( 'do_not_store' ) ) {
return;
}
return array_merge( $messages, array(
'invalid_number' => array(
'description' => __( "Number format that the sender entered is invalid", 'contact-form-7' ),
- 'default' => __( 'Number format seems invalid.', 'contact-form-7' )
+ 'default' => __( "The number format is invalid.", 'contact-form-7' )
),
'number_too_small' => array(
'description' => __( "Number is smaller than minimum limit", 'contact-form-7' ),
- 'default' => __( 'This number is too small.', 'contact-form-7' )
+ 'default' => __( "The number is smaller than the minimum allowed.", 'contact-form-7' )
),
'number_too_large' => array(
'description' => __( "Number is larger than maximum limit", 'contact-form-7' ),
- 'default' => __( 'This number is too large.', 'contact-form-7' )
+ 'default' => __( "The number is larger than the maximum allowed.", 'contact-form-7' )
) ) );
}
function wpcf7_quiz_messages( $messages ) {
return array_merge( $messages, array( 'quiz_answer_not_correct' => array(
'description' => __( "Sender doesn't enter the correct answer to the quiz", 'contact-form-7' ),
- 'default' => __( 'Your answer is not correct.', 'contact-form-7' )
+ 'default' => __( "The answer to the quiz is incorrect.", 'contact-form-7' )
) ) );
}
return array_merge( $messages, array(
'invalid_email' => array(
'description' => __( "Email address that the sender entered is invalid", 'contact-form-7' ),
- 'default' => __( 'Email address seems invalid.', 'contact-form-7' )
+ 'default' => __( "The e-mail address entered is invalid.", 'contact-form-7' )
),
'invalid_url' => array(
'description' => __( "URL that the sender entered is invalid", 'contact-form-7' ),
- 'default' => __( 'URL seems invalid.', 'contact-form-7' )
+ 'default' => __( "The URL is invalid.", 'contact-form-7' )
),
'invalid_tel' => array(
'description' => __( "Telephone number that the sender entered is invalid", 'contact-form-7' ),
- 'default' => __( 'Telephone number seems invalid.', 'contact-form-7' )
+ 'default' => __( "The telephone number is invalid.", 'contact-form-7' )
) ) );
}
Contributors: takayukister
Donate link: http://contactform7.com/donate/
Tags: contact, form, contact form, feedback, email, ajax, captcha, akismet, multilingual
-Requires at least: 4.2
-Tested up to: 4.4
-Stable tag: 4.3.1
+Requires at least: 4.3
+Tested up to: 4.4.2
+Stable tag: 4.4
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
The following plugins are recommended for Contact Form 7 users:
-* [Flamingo](http://wordpress.org/extend/plugins/flamingo/) by Takayuki Miyoshi - With Flamingo, you can save submitted messages via contact forms in the database.
+* [Flamingo](https://wordpress.org/plugins/flamingo/) by Takayuki Miyoshi - With Flamingo, you can save submitted messages via contact forms in the database.
* [Postman](https://wordpress.org/plugins/postman-smtp/) by
Jason Hendriks - Postman is a next-generation SMTP Mailer, software that assists in the delivery of email generated by your WordPress site.
* [Contact Form 7: Accessible Defaults](https://wordpress.org/plugins/contact-form-7-accessible-defaults/) by Joe Dolson - Replaces the default Contact Form 7 form with an accessible equivalent and provides a suite of selectable base forms.
-* [Bogo](http://wordpress.org/extend/plugins/bogo/) by Takayuki Miyoshi - Bogo is a straight-forward multilingual plugin that doesn't cause headaches.
-
-= Translators =
-
-* Afrikaans (af) - Schalk Burger
-* Albanian (sq) - Olgi Zenullari
-* Arabic (ar) - Tarek Chaaban, Muhammed Lardi, Yaser Maadan
-* Armenian (hy_AM) - Emmanuelle Traduction
-* Azerbaijani (az) - Zaur Bayramov
-* Bangla (bn_BD) - SM Mehdi Akram
-* Basque (Euskara; eu) - karrikas
-* Belarusian (be_BY) - Igor Dubilei
-* Bosnian (bs_BA) - Vedran
-* Bulgarian (bg_BG) - Iliyan Darganov
-* Catalan (ca) - Jordi Sancho, Robert Buj, Jaume Aragay Badia, luba lee
-* Central Kurdish (ckb) - Mahr Hassan
-* Chinese (China; zh_CN) - Soz, Keefe Dunn, Stella Hu
-* Chinese (Taiwan; zh_TW) - James Wu
-* Croatian (hr) - tolingo Translation Services, Marko Puskaric, Sanjin Barac
-* Czech (cs_CZ) - Korry, Radovan Fiser, Tomas Vesely, Pavel Bilek, Vladislav Šenk
-* Danish (da_DK) - Jens Griebel, Georg S. Adamsen, Thomas Blomberg Hansen
-* Dutch (nl_NL) - Chris Devriese, Martin Hein, Rene, TenSheep, Tim de Hoog, Henk Buma
-* Esperanto (eo_EO) - Arkadiusz Zychewicz
-* Estonian (et) - Peeter Rahuvarm, Egon Elbre, Tanel Jüris
-* Finnish (fi) - Miika Turunen, Mediajalostamo, Jani Alha
-* French (fr_FR) - Jillij, Oncle Tom, Maître Mô, Emmanuel Simond, Hédi Sellami
-* Galician (gl_ES) - Arume Desenvolvementos Informáticos
-* Georgian (ka_GE) - Nodar Rocko Davituri
-* German (de_DE) - Marcel Spitau, Ivan Graf
-* Greek (el) - Nick Mouratidis, Pr. friedlich, John D. Dimoferlias
-* Gujarati (gu_IN) - Apoto
-* Haitian (ht) - Lam Tu Do
-* Hebrew (he_IL) - Yaron Ofer, Arik Galansky, Ahrale
-* Hindi (hi_IN) - Tarun Joshi, Ashish
-* Hungarian (hu_HU) - Andras Hirschler, János Csárdi-Braunstein, Farkas Győző
-* Indian Bengali (bn_IN) - Suman Manna
-* Indonesian (Bahasa Indonesia; id_ID) - Hendry Lee, Belajar Seo Indonesia
-* Irish (ga_IE) - Vikas Arora
-* Italian (it_IT) - Bruno, Gianni Diurno
-* Japanese (ja) - Takayuki Miyoshi
-* Korean (ko_KR) - Seong Eun Lee, Jong-In Kim, martian36
-* Latvian (lv) - Sandis Veinbergs
-* Lithuanian (lt_LT) - Ernestas Kardzys, Vincent G, Mantas Malcius
-* Macedonian (mk_MK) - Darko
-* Malay (ms_MY) - Zairul Azmil
-* Malayalam (ml_IN) - RAHUL.S.A
-* Maltese (mt_MT) - Ajoft Technologies
-* Norwegian (nb_NO) - Kjetil M. Bergem, aanvik.net, Peter Holme
-* Persian (Farsi; fa_IR) - Mohammad Musavi, Mohsen Firoozmandan, Ghaem Omidi, Ehsan Np
-* Polish (pl_PL) - Zbigniew Czernik, Daniel Fruzynski, RafalDesign, Bartosz Arendt
-* Portuguese (Brazil; pt_BR) - Leonardo Pinheiro, Henrique Vianna, Caciano Gabriel Batista, Gervásio Antônio, Gilvanilson Santos
-* Portuguese (Portugal; pt_PT) - Hugo Baeta, Pedro Nave, Pedro Mendonça
-* Punjabi (pa_IN) - Jasvinder Sing
-* Russian (ru_RU) - Dmitry Volotovich, Denis Voituk, twisted tits, kg69design
-* Romanian (ro_RO) - Stas Sushkov, Anunturi Jibo, Marius Olar, Inbox Translation
-* Serbian (sr_RS) - Vedran, Aleksandar Urošević
-* Sinhala (si_LK) - Nitin Aggarwal
-* Slovak (sk_SK) - Patrik Bóna, WordPress Slovakia
-* Slovene (sl_SI) - Mihael Simonič, Jani Roskar, Marko Ambrožič
-* Spanish (es_ES) - Jordi Sancho, Vladimir Prieto, Federico Mikaelian, Matias Baldanza, Carlos Agnese, Lourdes Cuesta, Carlos Oropesa, Ana Ayelén Martínez
-* Swedish (sv_SE) - Fredrik Jonsson, the Swedish community
-* Tagalog (tl) - Rupert Agnew Lanuza, Hanne, Language Connect
-* Tamil (ta) - Nitin Aggarwal
-* Thai (th) - ToshiK, kazama, TG Knowledge
-* Turkish (tr_TR) - Roman Neumuller, Hasan Yılmaz, Emin Buğra Saral, Burak Yavuz
-* Ukrainian (uk) - Andrey Kovba, Ukrainian WordPress localization team, Myroslava Pabyrivska
-* Vietnamese (vi) - Thanh Hải, Hà, Khang Minh
-
-If you have created your own language pack, or have an update of an existing one, you can send [gettext PO and MO files](http://codex.wordpress.org/Translating_WordPress) to [me](http://ideasilo.wordpress.com/about/) so that I can bundle it into Contact Form 7. You can download the latest [POT file](http://plugins.svn.wordpress.org/contact-form-7/trunk/languages/contact-form-7.pot), and [PO files in each language](http://plugins.svn.wordpress.org/contact-form-7/branches/languages/).
+* [Bogo](https://wordpress.org/plugins/bogo/) by Takayuki Miyoshi - Bogo is a straight-forward multilingual plugin that doesn't cause headaches.
+
+= Translations =
+
+You can [translate Contact Form 7](http://contactform7.com/translating-contact-form-7/) on [__translate.wordpress.org__](https://translate.wordpress.org/projects/wp-plugins/contact-form-7).
== Installation ==
For more information, see [Releases](http://contactform7.com/category/releases/).
+= 4.4 =
+
+* The configuration validator has been introduced.
+* The language selector has been removed from Add New Contact Form screen.
+* Attach a plain text version of the message when sending HTML mail.
+* Added do_not_store additional setting to tell data storage add-ons not to store data through the contact form.
+* The minimum required WordPress version has been changed from 4.2 to 4.3.
+
= 4.3.1 =
* Use wp_loaded action hook instead of init to initialize the controller process.
require_once WPCF7_PLUGIN_DIR . '/includes/submission.php';
require_once WPCF7_PLUGIN_DIR . '/includes/upgrade.php';
require_once WPCF7_PLUGIN_DIR . '/includes/integration.php';
+require_once WPCF7_PLUGIN_DIR . '/includes/config-validator.php';
if ( is_admin() ) {
require_once WPCF7_PLUGIN_DIR . '/admin/admin.php';
self::load_module( 'date' );
self::load_module( 'file' );
self::load_module( 'flamingo' );
- self::load_module( 'jetpack' );
self::load_module( 'listo' );
self::load_module( 'number' );
self::load_module( 'quiz' );
Author URI: http://ideasilo.wordpress.com/
Text Domain: contact-form-7
Domain Path: /languages/
-Version: 4.3.1
+Version: 4.4
*/
-define( 'WPCF7_VERSION', '4.3.1' );
+define( 'WPCF7_VERSION', '4.4' );
-define( 'WPCF7_REQUIRED_WP_VERSION', '4.2' );
+define( 'WPCF7_REQUIRED_WP_VERSION', '4.3' );
define( 'WPCF7_PLUGIN', __FILE__ );
define( 'WPCF7_USE_REALLY_SIMPLE_CAPTCHA', false );
}
+if ( ! defined( 'WPCF7_VALIDATE_CONFIGURATION' ) ) {
+ define( 'WPCF7_VALIDATE_CONFIGURATION', true );
+}
+
// Deprecated, not used in the plugin core. Use wpcf7_plugin_url() instead.
define( 'WPCF7_PLUGIN_URL', untrailingslashit( plugins_url( '', WPCF7_PLUGIN ) ) );
background-color: #ffffe0;
border: 1px solid #ffd975;
border-width: 1px 1px 1px 10px;
+}
+
+.wf-premium-callout {
+ border: 1px solid #00709E;
+ background-color: #ffffff;
+ padding: 16px;
+ margin: 20px 0 0;
+ max-width: 860px;
+}
+.wf-premium-callout h3 {
+ margin: 0 0 8px;
+ color: #11967A;
+}
+.wf-premium-callout ul {
+ margin: 8px 0;
+ padding: 0 0 0 15px;
+}
+.wf-premium-callout ul li {
+ list-style-type: disc;
+ margin: 0;
+ padding: 0;
+}
+.wf-premium-callout .center {
+ text-align: center;
+ margin: 0;
+}
+.wf-premium-callout .button-primary {
+ text-align: center;
+ text-transform: uppercase;
+ font-weight: bold;
+ background-color: #00709E;
}
\ No newline at end of file
<?php if($IPMsg){ echo "\n$IPMsg\n"; } ?>
<?php if(! $isPaid){ ?>
-NOTE: You are using the free version of Wordfence. Upgrading to the paid version of Wordfence gives you
-two factor authentication (sign-in via cellphone) and country blocking which are both effective methods to block attacks.
-A Premium Wordfence license also includes remote scanning with each scan of your site which can detect
-several additional website infections. Premium members can also schedule when website scans occur and
-can scan more than once per day.
+NOTE: You are using the free version of Wordfence. Upgrade to Premium today for less than $5 per month!
+ - Advanced features like IP reputation monitoring, country blocking, an advanced comment spam filter and cell phone sign-in give you the best protection available
+ - Remote, frequent and scheduled scans
+ - Access to Premium Support
+ - Discounts of up to 90% for multiyear and multi-license purchases
-As a Premium member you also get access to our priority support system located at http://support.wordfence.com/ and can file
-priority support tickets using our ticketing system.
-
-Click here to sign-up for the Premium version of Wordfence now.
+Click here to upgrade to Wordfence Premium:
https://www.wordfence.com/zz1/wordfence-signup/
-
<?php } ?>
--
<?php if(! $isPaid){ ?>
-<p>NOTE: You are using the free version of Wordfence. Upgrading to the paid version of Wordfence gives you
-two factor authentication (sign-in via cellphone) and country blocking which are both effective methods to block attacks.
-A Premium Wordfence license also includes remote scanning with each scan of your site which can detect
-several additional website infections. Premium members can also schedule when website scans occur and
-can scan more than once per day.</p>
-
-<p>As a Premium member you also get access to our priority support system located at http://support.wordfence.com/ and can file
-priority support tickets using our ticketing system. </p>
-
-<p>Click here to sign-up for the Premium version of Wordfence now.<br>
-<a href="https://www.wordfence.com/zz2/wordfence-signup/">https://www.wordfence.com/zz2/wordfence-signup/</a></p>
-
+ <p>NOTE: You are using the free version of Wordfence. Upgrade to Premium today for less than $5 per month!</p>
+ <ul>
+ <li>Advanced features like IP reputation monitoring, country blocking, an advanced comment spam filter and cell phone sign-in give you the best protection available</li>
+ <li>Remote, frequent and scheduled scans</li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% for multiyear and multi-license purchases</li>
+ </ul>
+
+ <p>
+ Click here to upgrade to Wordfence Premium:<br>
+ <a href="https://www.wordfence.com/zz2/wordfence-signup/">https://www.wordfence.com/zz2/wordfence-signup/</a>
+ </p>
<?php } ?>
<?php require('menuHeader.php'); ?>
<?php $pageTitle = "Block Selected Countries from Accessing your Site"; $helpLink="http://docs.wordfence.com/en/Country_blocking"; $helpLabel="Learn more about Country Blocking"; include('pageTitle.php'); ?>
<?php if(! wfConfig::get('isPaid')){ ?>
- <div class="wfPaidOnlyNotice">
- <strong>Country Blocking is only available to Premium Members at this time</strong><br /><br />
- Country Blocking is a premium feature because we have licensed a very accurate commercial geolocation database to provide this feature. If you would like to
- activate this feature, simply <a href="https://www.wordfence.com/gnl1countryBlock1/wordfence-signup/" target="_blank">click here and get a premium Wordfence API Key</a>, and then copy and paste it into your options page. You can <a href="http://docs.wordfence.com/en/Country_blocking" target="_blank">learn more about Country Blocking on our documentation website</a>.
- </div>
+ <div class="wf-premium-callout" style="margin: 20px">
+ <h3>Country Blocking is only available to Premium Members</h3>
+ <p>Country Blocking is a premium feature because we have licensed a very accurate commercial geolocation
+ database to provide this feature. Upgrade to Premium today:</p>
+ <ul>
+ <li>You can upgrade now for less than $5 per month</li>
+ <li>Other advanced features like IP reputation monitoring, an advanced comment spam filter, advanced
+ scanning options and cell phone sign-in give you the best protection available
+ </li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% available for multiyear and multi-license purchases</li>
+ </ul>
+ <p class="center"><a class="button button-primary"
+ href="https://www.wordfence.com/gnl1countryBlock1/wordfence-signup/">Get Premium</a></p>
+ </div>
<?php } ?>
<?php if(wfConfig::get('cacheType') == 'falcon'){ ?>
<div class="wfFalconNotice">
</tr>
<tr>
<td colspan="2">
- <?php if ( wfConfig::get( 'isPaid' ) ) { ?>
+ <?php if (wfConfig::get('isPaid')): ?>
<table border="0">
<tr>
<td><a href="https://www.wordfence.com/gnl1optMngKys/manage-wordfence-api-keys/"
onclick="WFAD.downgradeLicense();"/></td>
</tr>
</table>
- <?php } ?>
-
-
+ <?php else: ?>
+ <div class="wf-premium-callout">
+ <h3>Upgrade to Wordfence Premium today for less than $5 per month</h3>
+ <ul>
+ <li>Advanced features like IP reputation monitoring, country blocking, an advanced
+ comment spam filter and cell phone sign-in give you the best protection available
+ </li>
+ <li>Remote, frequent and scheduled scans</li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% for multiyear and multi-license purchases</li>
+ </ul>
+ <p class="center">
+ <a class="button button-primary"
+ href="https://www.wordfence.com/gnl1optCallout1/wordfence-signup/">
+ Get Premium</a></p>
+ </div>
+ <?php endif ?>
+ </td>
+ </tr>
<tr>
<td colspan="2"><h2>Basic Options<a href="http://docs.wordfence.com/en/Wordfence_options#Basic_Options"
target="_blank" class="wfhelp"></a></h2></td>
$helpLabel = "Learn more about Password Auditing";
include('pageTitle.php'); ?>
<?php if (!wfConfig::get('isPaid')) { ?>
- <div class="wfPaidOnlyNotice">
- <strong>Password Auditing is only available to Premium Members at this time</strong><br/><br/>
- Wordfence Password Auditing uses our high performance password auditing cluster to test the strength of your admin and user passwords.
- We securely simulate a high-performance password cracking attack on your password database and will alert you to weak passwords.
- We then provide a way to change weak passwords or alert members that they need to improve their password strength.
- To activate this feature, simply
- <a href="https://www.wordfence.com/gnl1pwAuditUp1/wordfence-signup/" target="_blank">click here and get a premium Wordfence API Key</a>, and then copy and paste it into your options page. You can
- <a href="http://docs.wordfence.com/en/Wordfence_Password_Auditing" target="_blank">learn more about Password Auditing on our Documentation Website</a>.
+ <div class="wf-premium-callout" style="margin: 20px 0 20px 20px; width: 700px;">
+ <h3>Password Auditing is only available to Premium Members</h3>
+ <p>Wordfence Password Auditing uses our high performance password auditing cluster to test the strength of your admin and user passwords. We securely simulate a high-performance password cracking attack on your password database and will alert you to weak passwords. We then provide a way to change weak passwords or alert members that they need to improve their password strength. Upgrade to Premium today:</p>
+ <ul>
+ <li>You can upgrade now for less than $5 per month</li>
+ <li>Other advanced features like IP reputation monitoring, an advanced comment spam filter, advanced scanning options, cell phone sign-in and country blocking give you the best protection available</li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% available for multiyear and multi-license purchases</li>
+ </ul>
+
+ <p class="center"><a class="button button-primary" href="https://www.wordfence.com/gnl1pwAuditUp1/wordfence-signup/">Get Premium</a></p>
</div>
<?php } ?>
Premium scanning enabled.
</div>
<?php } else { ?>
- <div style="margin: 0 0 20px 5px; width: 795px;">
- <strong style="color: #F00;">How to upgrade:</strong> If you would like access to our <a href="http://support.wordfence.com/" target="_blank">Premium Support help system</a> and features like Cellphone Sign-in, Country Blocking, external site scanning and the ability to schedule scans, simply <a href="https://www.wordfence.com/gnl1scanUpgrade/wordfence-signup/" target="_blank">visit our Wordfence Premium sign-up page</a> and sign up for a Premium Wordfence API key. Then go to the Wordfence options page on this site and replace your free API key with your new premium key. You will immediately be upgraded to Wordfence Premium with all the features it includes and you will have instant access to our ticketing system on <a href="http://support.wordfence.com/" target="_blank">support.wordfence.com</a>.
- </div>
+ <div class="wf-premium-callout" style="margin: 20px 0 20px 2px;width: 765px;">
+ <h3>Upgrade to Wordfence Premium today for less than $5 per month</h3>
+ <ul>
+ <li>Advanced features like IP reputation monitoring, country blocking, an advanced comment spam
+ filter and cell phone sign-in give you the best protection available
+ </li>
+ <li>Remote, frequent and scheduled scans</li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% for multiyear and multi-license purchases</li>
+ </ul>
+ <p class="center"><a class="button button-primary"
+ href="https://www.wordfence.com/gnl1scanUpgrade/wordfence-signup/">
+ Get Premium</a></p>
+ </div>
+
<?php } ?>
<div class="consoleHead" style="margin-top: 20px;">
<?php require('menuHeader.php'); ?>
<?php $pageTitle = "Schedule when Wordfence Scans Occur"; $helpLink="http://docs.wordfence.com/en/Wordfence_scan_scheduling"; $helpLabel="Learn more about Scheduling Wordfence Scans"; include('pageTitle.php'); ?>
<?php if(! wfConfig::get('isPaid')){ ?>
- <div class="wfPaidOnlyNotice">
- <strong>Scan Scheduling is only available to Premium Members at this time</strong><br /><br />
- Scan Scheduling is a premium feature because it places additional load on our scanning servers. If you would like to
- activate this feature, simply <a href="https://www.wordfence.com/gnl1scanSched1/wordfence-signup/" target="_blank">click here and get a premium Wordfence API Key</a>, and then copy and paste it into your options
- page.
- </div>
+ <div class="wf-premium-callout" style="margin: 20px;">
+ <h3>Scan Scheduling is only available to Premium Members</h3>
+ <p>Scan Scheduling is a premium feature because it places additional load on our scanning servers. Premium users
+ can increase their WordPress protection by controlling scan frequency up to once per hour. Premium also
+ allows you to control when Wordfence initiates a scan, selecting optimal times that don’t interfere with
+ high-traffic or optimal usage of your site. Upgrade to Premium today:</p>
+ <ul>
+ <li>You can upgrade now for less than $5 per month</li>
+ <li>Other advanced features like IP reputation monitoring, an advanced comment spam filter, country blocking
+ and cell phone sign-in give you the best protection available
+ </li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% available for multiyear and multi-license purchases</li>
+ </ul>
+ <p class="center"><a class="button button-primary"
+ href="https://www.wordfence.com/gnl1scanSched1/wordfence-signup/">Get Premium</a></p>
+ </div>
<?php } ?>
<div class="wordfenceWrap" style="margin: 20px 20px 20px 30px;">
<?php require('menuHeader.php'); ?>
<?php $pageTitle = "Cellphone Sign-in"; $helpLink="http://docs.wordfence.com/en/Cellphone_sign-in"; $helpLabel="Learn more about Cellphone Sign-in"; include('pageTitle.php'); ?>
<?php if(! wfConfig::get('isPaid')){ ?>
- <div class="wfPaidOnlyNotice">
- <strong>Cellphone Sign-in is only available to Premium Members at this time</strong><br /><br />
- Cellphone Sign-in is a premium feature because we are charged per SMS we send when a user signs in. If you would like to
- activate this feature, simply <a href="https://www.wordfence.com/gnl1twoFac1/wordfence-signup/" target="_blank">click here and get a premium Wordfence API Key</a>, and then copy and paste it into your options page.
- <br /><br />
- Wordfence's Cellphone Sign-in uses a technique called "Two Factor Authentication" which is used by banks, government agencies and military world-wide as one of the most secure forms of remote system authentication. It's now available from Wordfence for your WordPress website. We recommend you enable Cellphone Sign-in for all Administrator level accounts. You can <a href="http://docs.wordfence.com/en/Cellphone_sign-in" target="_blank">learn more about Cellphone Sign-in on our documentation website</a>.
- </div>
+ <div class="wf-premium-callout" style="margin: 20px 0 20px 20px; width: 700px;">
+ <h3>Cellphone Sign-in is only available to Premium Members</h3>
+
+ <p>This is a premium feature because we are charged per SMS we send when a user signs in. Upgrade to Premium
+ today:</p>
+ <ul>
+ <li>You can upgrade now for less than $5 per month</li>
+ <li>Other advanced features like IP reputation monitoring, an advanced comment spam filter, advanced
+ scanning options and country blocking give you the best protection available
+ </li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% available for multiyear and multi-license purchases</li>
+ </ul>
+ <p>Wordfence's Cellphone Sign-in uses a technique called "Two Factor Authentication" which is used by banks,
+ government agencies and military world-wide as one of the most secure forms of remote system authentication.
+ It's now available from Wordfence for your WordPress website. We recommend you enable Cellphone Sign-in for
+ all Administrator level accounts.</p>
+
+ <p class="center"><a class="button button-primary"
+ href="https://www.wordfence.com/gnl1twoFac1/wordfence-signup/">Get Premium</a></p>
+ </div>
+
<?php } ?>
<div class="wordfenceWrap" style="margin: 20px 20px 20px 30px;">
}
/**
- * Generate SQL from the whitelist. Uses the return format from wfLog::getWhitelistedIPs
+ * Generate SQL from the whitelist. Uses the return format from wfUtils::getIPWhitelist
*
- * @see wfLog::getWhitelistedIPs
+ * @see wfUtils::getIPWhitelist
* @param array $whitelisted_ips
* @return string
*/
public function getBlockedIPWhitelistWhereClause($whitelisted_ips = null) {
if ($whitelisted_ips === null) {
- $whitelisted_ips = wordfence::getLog()->getWhitelistedIPs();
+ $whitelisted_ips = wfUtils::getIPWhitelist();
}
if (!is_array($whitelisted_ips)) {
return false;
}
$where = '';
- /** @var array|wfUserIPRange|string $ip_range */
+
foreach ($whitelisted_ips as $ip_range) {
- if (is_array($ip_range) && count($ip_range) == 2) {
- $where .= $this->db->prepare('IP BETWEEN %s AND %s', $ip_range[0], $ip_range[1]) . ' OR ';
- } elseif (is_a($ip_range, 'wfUserIPRange')) {
- $where .= $ip_range->toSQL('IP') . ' OR ';
- } elseif (is_string($ip_range) || is_numeric($ip_range)) {
- $where .= $this->db->prepare('IP = %s', $ip_range) . ' OR ';
+ if (!is_a($ip_range, 'wfUserIPRange')) {
+ $ip_range = wfUtils::CIDR2wfUserIPRange($ip_range);
}
+
+ $where .= $ip_range->toSQL('IP') . ' OR ';
}
if ($where) {
// remove the extra ' OR '
--- /dev/null
+<?php
+/**
+ * Addresses should be in human readable format as a single IP (e.g. 1.2.3.4) or CIDR (e.g. 1.2.3.4/32)
+ */
+$wfIPWhitelist = array(
+ 'private' => array(
+ //We've modified this and removed some addresses which may be routable on the Net and cause auto-whitelisting.
+ //'0.0.0.0/8', #Broadcast addr
+ '10.0.0.0/8', #Private addrs
+ //'100.64.0.0/10', #carrier-grade-nat for comms between ISP and subscribers
+ '127.0.0.0/8', #loopback
+ //'169.254.0.0/16', #link-local when DHCP fails e.g. os x
+ '172.16.0.0/12', #private addrs
+ '192.0.0.0/29', #used for NAT with IPv6, so basically a private addr
+ //'192.0.2.0/24', #Only for use in docs and examples, not for public use
+ //'192.88.99.0/24', #Used by 6to4 anycast relays
+ '192.168.0.0/16', #Used for local communications within a private network
+ //'198.18.0.0/15', #Used for testing of inter-network communications between two separate subnets
+ //'198.51.100.0/24', #Assigned as "TEST-NET-2" in RFC 5737 for use solely in documentation and example source code and should not be used publicly.
+ //'203.0.113.0/24', #Assigned as "TEST-NET-3" in RFC 5737 for use solely in documentation and example source code and should not be used publicly.
+ //'224.0.0.0/4', #Reserved for multicast assignments as specified in RFC 5771
+ //'240.0.0.0/4', #Reserved for future use, as specified by RFC 6890
+ //'255.255.255.255/32', #Reserved for the "limited broadcast" destination address, as specified by RFC 6890
+ ),
+ 'wordfence' => array(
+ // 69.46.36.1 - 69.46.36.32
+ '69.46.36.1/32',
+ '69.46.36.2/31',
+ '69.46.36.4/30',
+ '69.46.36.8/29',
+ '69.46.36.16/28',
+ '69.46.36.32/32',
+ ),
+ 'sucuri' => array(
+ '97.74.127.171',
+ '69.164.203.172',
+ '173.230.128.135',
+ '66.228.34.49',
+ '66.228.40.185',
+ '50.116.36.92',
+ '50.116.36.93',
+ '50.116.3.171',
+ '198.58.96.212',
+ '50.116.63.221',
+ '192.155.92.112',
+ '192.81.128.31',
+ '198.58.106.244',
+ '192.155.95.139',
+ '23.239.9.227',
+ '198.58.112.103',
+ '192.155.94.43',
+ '162.216.16.33',
+ '173.255.233.124',
+ '173.255.233.124',
+ '192.155.90.179',
+ '50.116.41.217',
+ '192.81.129.227',
+ '198.58.111.80',
+ '162.216.19.183',
+ ),
+ 'facebook' => array(
+ '204.15.20.0/22',
+ '69.63.176.0/20',
+ '66.220.144.0/20',
+ '66.220.144.0/21',
+ '69.63.184.0/21',
+ '69.63.176.0/21',
+ '74.119.76.0/22',
+ '69.171.255.0/24',
+ '173.252.64.0/18',
+ '69.171.224.0/19',
+ '69.171.224.0/20',
+ '103.4.96.0/22',
+ '69.63.176.0/24',
+ '173.252.64.0/19',
+ '173.252.70.0/24',
+ '31.13.64.0/18',
+ '31.13.24.0/21',
+ '66.220.152.0/21',
+ '66.220.159.0/24',
+ '69.171.239.0/24',
+ '69.171.240.0/20',
+ '31.13.64.0/19',
+ '31.13.64.0/24',
+ '31.13.65.0/24',
+ '31.13.67.0/24',
+ '31.13.68.0/24',
+ '31.13.69.0/24',
+ '31.13.70.0/24',
+ '31.13.71.0/24',
+ '31.13.72.0/24',
+ '31.13.73.0/24',
+ '31.13.74.0/24',
+ '31.13.75.0/24',
+ '31.13.76.0/24',
+ '31.13.77.0/24',
+ '31.13.96.0/19',
+ '31.13.66.0/24',
+ '173.252.96.0/19',
+ '69.63.178.0/24',
+ '31.13.78.0/24',
+ '31.13.79.0/24',
+ '31.13.80.0/24',
+ '31.13.82.0/24',
+ '31.13.83.0/24',
+ '31.13.84.0/24',
+ '31.13.85.0/24',
+ '31.13.86.0/24',
+ '31.13.87.0/24',
+ '31.13.88.0/24',
+ '31.13.89.0/24',
+ '31.13.90.0/24',
+ '31.13.91.0/24',
+ '31.13.92.0/24',
+ '31.13.93.0/24',
+ '31.13.94.0/24',
+ '31.13.95.0/24',
+ '69.171.253.0/24',
+ '69.63.186.0/24',
+ '31.13.81.0/24',
+ '179.60.192.0/22',
+ '179.60.192.0/24',
+ '179.60.193.0/24',
+ '179.60.194.0/24',
+ '179.60.195.0/24',
+ '185.60.216.0/22',
+ '45.64.40.0/22',
+ '185.60.216.0/24',
+ '185.60.217.0/24',
+ '185.60.218.0/24',
+ '185.60.219.0/24',
+ '129.134.0.0/16',
+ '157.240.0.0/16',
+ '204.15.20.0/22',
+ '69.63.176.0/20',
+ '69.63.176.0/21',
+ '69.63.184.0/21',
+ '66.220.144.0/20',
+ '69.63.176.0/20',
+ '2620:0:1c00::/40',
+ '2a03:2880::/32',
+ '2a03:2880:fffe::/48',
+ '2a03:2880:ffff::/48',
+ '2620:0:1cff::/48',
+ '2a03:2880:f000::/48',
+ '2a03:2880:f001::/48',
+ '2a03:2880:f002::/48',
+ '2a03:2880:f003::/48',
+ '2a03:2880:f004::/48',
+ '2a03:2880:f005::/48',
+ '2a03:2880:f006::/48',
+ '2a03:2880:f007::/48',
+ '2a03:2880:f008::/48',
+ '2a03:2880:f009::/48',
+ '2a03:2880:f00a::/48',
+ '2a03:2880:f00b::/48',
+ '2a03:2880:f00c::/48',
+ '2a03:2880:f00d::/48',
+ '2a03:2880:f00e::/48',
+ '2a03:2880:f00f::/48',
+ '2a03:2880:f010::/48',
+ '2a03:2880:f011::/48',
+ '2a03:2880:f012::/48',
+ '2a03:2880:f013::/48',
+ '2a03:2880:f014::/48',
+ '2a03:2880:f015::/48',
+ '2a03:2880:f016::/48',
+ '2a03:2880:f017::/48',
+ '2a03:2880:f018::/48',
+ '2a03:2880:f019::/48',
+ '2a03:2880:f01a::/48',
+ '2a03:2880:f01b::/48',
+ '2a03:2880:f01c::/48',
+ '2a03:2880:f01d::/48',
+ '2a03:2880:f01e::/48',
+ '2a03:2880:f01f::/48',
+ '2a03:2880:1000::/36',
+ '2a03:2880:2000::/36',
+ '2a03:2880:3000::/36',
+ '2a03:2880:4000::/36',
+ '2a03:2880:5000::/36',
+ '2a03:2880:6000::/36',
+ '2a03:2880:7000::/36',
+ '2a03:2880:f020::/48',
+ '2a03:2880:f021::/48',
+ '2a03:2880:f022::/48',
+ '2a03:2880:f023::/48',
+ '2a03:2880:f024::/48',
+ '2a03:2880:f025::/48',
+ '2a03:2880:f026::/48',
+ '2a03:2880:f027::/48',
+ '2a03:2880:f028::/48',
+ '2a03:2880:f029::/48',
+ '2a03:2880:f02a::/48',
+ '2a03:2880:f02b::/48',
+ '2a03:2880:f02c::/48',
+ '2a03:2880:f02d::/48',
+ '2a03:2880:f02e::/48',
+ '2a03:2880:f02f::/48',
+ '2a03:2880:f030::/48',
+ '2a03:2880:f031::/48',
+ '2a03:2880:f032::/48',
+ '2a03:2880:f033::/48',
+ '2a03:2880:f034::/48',
+ '2a03:2880:f035::/48',
+ '2a03:2880:f036::/48',
+ '2a03:2880:f037::/48',
+ '2a03:2880:f038::/48',
+ '2a03:2880:f039::/48',
+ '2a03:2880:f03a::/48',
+ '2a03:2880:f03b::/48',
+ '2a03:2880:f03c::/48',
+ '2a03:2880:f03d::/48',
+ '2a03:2880:f03e::/48',
+ '2a03:2880:f03f::/48',
+ '2401:db00::/32',
+ '2a03:2880::/36',
+ '2803:6080::/32',
+ ),
+);
\ No newline at end of file
* @return bool
*/
public function isWhitelisted($IP) {
- $wfIPBlock = new wfUserIPRange('69.46.36.[1-32]');
- if ($wfIPBlock->isIPInRange($IP)) { //IP is in Wordfence's IP block which would prevent our scanning server manually kicking off scans that are stuck
- return true;
- }
- //We now whitelist all private addrs
- if (wfUtils::isPrivateAddress($IP)) {
- return true;
- }
- //These belong to sucuri's scanning servers which will get blocked by Wordfence as a false positive if you try a scan. So we whitelisted them.
- $externalWhite = array('97.74.127.171', '69.164.203.172', '173.230.128.135', '66.228.34.49', '66.228.40.185', '50.116.36.92', '50.116.36.93', '50.116.3.171', '198.58.96.212', '50.116.63.221', '192.155.92.112', '192.81.128.31', '198.58.106.244', '192.155.95.139', '23.239.9.227', '198.58.112.103', '192.155.94.43', '162.216.16.33', '173.255.233.124', '173.255.233.124', '192.155.90.179', '50.116.41.217', '192.81.129.227', '198.58.111.80', '162.216.19.183');
- if (in_array($IP, $externalWhite)) {
- return true;
- }
- $list = wfConfig::get('whitelisted');
- if (!$list) {
- return false;
- }
- $list = explode(',', $list);
- if (sizeof($list) < 1) {
- return false;
- }
- foreach ($list as $whiteIP) {
- $white_ip_block = new wfUserIPRange($whiteIP);
- if ($white_ip_block->isIPInRange($IP)) {
+ foreach (wfUtils::getIPWhitelist() as $subnet) {
+ if ($subnet instanceof wfUserIPRange) {
+ if ($subnet->isIPInRange($IP)) {
+ return true;
+ }
+ } elseif (wfUtils::subnetContainsIP($subnet, $IP)) {
return true;
}
}
- return false;
- }
-
- /**
- * Get an array of static IPs, tuple for a numeric IP range, or a wfUserIPRange object to define and test a range
- * like [127-128].0.0.[1-40]
- *
- * @see wfUserIPRange
- * @param null $user_whitelisted
- * @return array
- */
- public function getWhitelistedIPs($user_whitelisted = null) {
- $white_listed_ips = array();
- // Wordfence's IP block which would prevent our scanning server manually kicking off scans that are stuck
- $white_listed_ips[] = array(1160651777, 1160651808);
-
- // Private range
- $private_range = wfUtils::getPrivateAddrs();
- foreach ($private_range as $ip_range) {
- $white_listed_ips[] = array($ip_range[1], $ip_range[2]);
- }
-
- // These belong to sucuri's scanning servers which will get blocked by Wordfence as a false positive if you try a scan. So we whitelisted them.
- $white_listed_ips = array_merge($white_listed_ips, array_map(array('wfUtils', 'inet_pton'), array('97.74.127.171', '69.164.203.172', '173.230.128.135', '66.228.34.49', '66.228.40.185', '50.116.36.92', '50.116.36.93', '50.116.3.171', '198.58.96.212', '50.116.63.221', '192.155.92.112', '192.81.128.31', '198.58.106.244', '192.155.95.139', '23.239.9.227', '198.58.112.103', '192.155.94.43', '162.216.16.33', '173.255.233.124', '173.255.233.124', '192.155.90.179', '50.116.41.217', '192.81.129.227', '198.58.111.80', '162.216.19.183')));
-
- if ($user_whitelisted === null) {
- $user_whitelisted = wfConfig::get('whitelisted');
- }
-
- if ($user_whitelisted) {
- $user_whitelisted = explode(',', $user_whitelisted);
- foreach ($user_whitelisted as $whiteIP) {
- $white_listed_ips[] = new wfUserIPRange($whiteIP);
- }
- }
- return $white_listed_ips;
+ return false;
}
public function unblockAllIPs(){
require_once('wfConfig.php');
require_once('wfCountryMap.php');
class wfUtils {
- #We've modified this and removed some addresses which may be routable on the Net and cause auto-whitelisting.
- private static $privateAddrs = array(
- //array('0.0.0.0/8',0,16777215), #Broadcast addr
- array('10.0.0.0/8',167772160,184549375), #Private addrs
- //array('100.64.0.0/10',1681915904,1686110207), #carrier-grade-nat for comms between ISP and subscribers
- array('127.0.0.0/8',2130706432,2147483647), #loopback
- //array('169.254.0.0/16',2851995648,2852061183), #link-local when DHCP fails e.g. os x
- array('172.16.0.0/12',2886729728,2887778303), #private addrs
- array('192.0.0.0/29',3221225472,3221225479), #used for NAT with IPv6, so basically a private addr
- //array('192.0.2.0/24',3221225984,3221226239), #Only for use in docs and examples, not for public use
- //array('192.88.99.0/24',3227017984,3227018239), #Used by 6to4 anycast relays
- array('192.168.0.0/16',3232235520,3232301055), #Used for local communications within a private network
- //array('198.18.0.0/15',3323068416,3323199487), #Used for testing of inter-network communications between two separate subnets
- //array('198.51.100.0/24',3325256704,3325256959), #Assigned as "TEST-NET-2" in RFC 5737 for use solely in documentation and example source code and should not be used publicly.
- //array('203.0.113.0/24',3405803776,3405804031), #Assigned as "TEST-NET-3" in RFC 5737 for use solely in documentation and example source code and should not be used publicly.
- //array('224.0.0.0/4',3758096384,4026531839), #Reserved for multicast assignments as specified in RFC 5771
- //array('240.0.0.0/4',4026531840,4294967295), #Reserved for future use, as specified by RFC 6890
- //array('255.255.255.255/32',4294967295,4294967295) #Reserved for the "limited broadcast" destination address, as specified by RFC 6890
- );
private static $isWindows = false;
public static $scanLockFH = false;
private static $lastErrorReporting = false;
return round($bytes, $precision) . ' ' . $units[$pow];
}
+ /**
+ * Check if an IP address is in a network block
+ *
+ * @param string $subnet Single IP or subnet in CIDR notation (e.g. '192.168.100.0' or '192.168.100.0/22')
+ * @param string $ip IPv4 or IPv6 address in dot or colon notation
+ * @return boolean
+ */
+ public static function subnetContainsIP($subnet, $ip) {
+ list($network, $prefix) = array_pad(explode('/', $subnet, 2), 2, null);
+
+ if (filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
+ // If no prefix was supplied, 32 is implied for IPv4
+ if ($prefix === null) {
+ $prefix = 32;
+ }
+
+ // Validate the IPv4 network prefix
+ if ($prefix < 0 || $prefix > 32) {
+ return false;
+ }
+
+ // Increase the IPv4 network prefix to work in the IPv6 address space
+ $prefix += 96;
+ } else {
+ // If no prefix was supplied, 128 is implied for IPv6
+ if ($prefix === null) {
+ $prefix = 128;
+ }
+
+ // Validate the IPv6 network prefix
+ if ($prefix < 1 || $prefix > 128) {
+ return false;
+ }
+ }
+
+ // Convert human readable addresses to 128 bit (IPv6) binary strings
+ // Note: self::inet_pton converts IPv4 addresses to IPv6 compatible versions
+ $binary_network = str_pad(wfHelperBin::bin2str(self::inet_pton($network)), 128, '0', STR_PAD_LEFT);
+ $binary_ip = str_pad(wfHelperBin::bin2str(self::inet_pton($ip)), 128, '0', STR_PAD_LEFT);
+
+ return 0 === substr_compare($binary_ip, $binary_network, 0, $prefix);
+ }
+
+ /**
+ * Convert CIDR notation to a wfUserIPRange object
+ *
+ * @param string $cidr
+ * @return wfUserIPRange
+ */
+ public static function CIDR2wfUserIPRange($cidr) {
+ list($network, $prefix) = array_pad(explode('/', $cidr, 2), 2, null);
+ $ip_range = new wfUserIPRange();
+
+ if (filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
+ // If no prefix was supplied, 32 is implied for IPv4
+ if ($prefix === null) {
+ $prefix = 32;
+ }
+
+ // Validate the IPv4 network prefix
+ if ($prefix < 0 || $prefix > 32) {
+ return $ip_range;
+ }
+
+ // Increase the IPv4 network prefix to work in the IPv6 address space
+ $prefix += 96;
+ } else {
+ // If no prefix was supplied, 128 is implied for IPv6
+ if ($prefix === null) {
+ $prefix = 128;
+ }
+
+ // Validate the IPv6 network prefix
+ if ($prefix < 1 || $prefix > 128) {
+ return $ip_range;
+ }
+ }
+
+ // Convert human readable address to 128 bit (IPv6) binary string
+ // Note: self::inet_pton converts IPv4 addresses to IPv6 compatible versions
+ $binary_network = self::inet_pton($network);
+ $binary_mask = wfHelperBin::str2bin(str_pad(str_repeat('1', $prefix), 128, '0', STR_PAD_RIGHT));
+
+ // Calculate first and last address
+ $binary_first = $binary_network & $binary_mask;
+ $binary_last = $binary_network | ~ $binary_mask;
+
+ // Convert binary addresses back to human readable strings
+ $first = self::inet_ntop($binary_first);
+ $last = self::inet_ntop($binary_last);
+
+ // Split addresses into segments
+ $first_array = preg_split('/[\.\:]/', $first);
+ $last_array = preg_split('/[\.\:]/', $last);
+
+ // Make sure arrays are the same size. IPv6 '::' could cause problems otherwise.
+ // The strlen filter should leave zeros in place
+ $first_array = array_pad(array_filter($first_array, 'strlen'), count($last_array), '0');
+
+ $range_segments = array();
+
+ foreach ($first_array as $index => $segment) {
+ if ($segment === $last_array[$index]) {
+ $range_segments[] = $segment;
+ } else if ($segment === '' || $last_array[$index] === '') {
+ $range_segments[] = '';
+ } else {
+ $range_segments[] = "[{$segment}-{$last_array[$index]}]";
+ }
+ }
+
+ $delimiter = filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ? '.' : ':';
+
+ $ip_range->setIPString(implode($delimiter, $range_segments));
+
+ return $ip_range;
+ }
+
/**
* Return dot notation of IPv4 address.
*
return rand(11,230) . '.' . rand(0,255) . '.' . rand(0,255) . '.' . rand(0,255);
}
+ /**
+ * Get the list of whitelisted IPs and networks
+ *
+ * Results may include wfUserIPRange objects for now. Ideally everything would be in CIDR notation.
+ *
+ * @param string $filter Group name to filter whitelist by
+ * @return array
+ */
+ public static function getIPWhitelist($filter = null) {
+ static $wfIPWhitelist;
+
+ if (!isset($wfIPWhitelist)) {
+ include('wfIPWhitelist.php');
+
+ // Memoize user defined whitelist IPs and ranges
+ // TODO: Convert everything to CIDR
+ $wfIPWhitelist['user'] = array();
+
+ foreach (array_filter(explode(',', wfConfig::get('whitelisted'))) as $ip) {
+ $wfIPWhitelist['user'][] = new wfUserIPRange($ip);
+ }
+ }
+
+ $whitelist = array();
+
+ foreach ($wfIPWhitelist as $group => $values) {
+ if ($filter === null || $group === $filter) {
+ $whitelist = array_merge($whitelist, $values);
+ }
+ }
+
+ return $whitelist;
+ }
+
/**
* @param string $addr Should be in dot or colon notation (127.0.0.1 or ::1)
* @return bool
public static function isPrivateAddress($addr) {
// Run this through the preset list for IPv4 addresses.
if (filter_var($addr, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false) {
- $num = self::inet_aton($addr);
- foreach (self::$privateAddrs as $a) {
- if ($num >= $a[1] && $num <= $a[2]) {
+ foreach (self::getIPWhitelist('private') as $a) {
+ if (self::subnetContainsIP($a, $addr)) {
return true;
}
}
}
}
- /**
- * @return array
- */
- public static function getPrivateAddrs() {
- return self::$privateAddrs;
- }
-
/**
* @param string $host
* @return array
Tags: wordpress, security, performance, speed, caching, cache, caching plugin, wordpress cache, wordpress caching, wordpress security, security plugin, secure, anti-virus, malware, firewall, antivirus, virus, google safe browsing, phishing, scrapers, hacking, wordfence, securty, secrity, secure, two factor, cellphone sign-in, cellphone signin, cellphone, twofactor, security, secure, htaccess, login, log, users, login alerts, lock, chmod, maintenance, plugin, private, privacy, protection, permissions, 503, base64, injection, code, encode, script, attack, hack, hackers, block, blocked, prevent, prevention, RFI, XSS, CRLF, CSRF, SQL Injection, vulnerability, website security, WordPress security, security log, logging, HTTP log, error log, login security, personal security, infrastructure security, firewall security, front-end security, web server security, proxy security, reverse proxy security, secure website, secure login, two factor security, maximum login security, heartbleed, heart bleed, heartbleed vulnerability, openssl vulnerability, nginx, litespeed, php5-fpm, woocommerce support, woocommerce caching, IPv6, IP version 6
Requires at least: 3.9
Tested up to: 4.4.1
-Stable tag: 6.0.23
+Stable tag: 6.0.24
The Wordfence WordPress security plugin provides free enterprise-class WordPress security, protecting your website from hacks and malware.
== Description ==
== Changelog ==
+= 6.0.24 =
+* Enhancement: Added automatic whitelisting for Facebook crawlers.
+* Improvement: Added styling to premium callouts.
+* Improvement: Updated local GeoIP database.
+* Improvement: Updated local browser data cache to support newer browsers and user-agents.
+
= 6.0.23 =
* Improvement: Updated local GeoIP database.
* Improvement: Updated local browser data cache to support newer browsers and user-agents.
<?php
/* Wordfence temporary file security header */
echo "Nothing to see here!\n"; exit(0);
-?>a:24:{s:9:"cacheType";s:0:"";s:9:"howGetIPs";s:0:"";s:6:"apiKey";s:160:"ac1ea75064535887de3d18d99323d911b6d103f37950fc976fc039a56bfb5d55849c16b502469079d2d827e8ad810d96ca89d0b0b368edb321fadc4eda64349bf034113c4396bf5b61e7bc50bb566a4a";s:20:"loginSec_lockoutMins";s:1:"5";s:19:"other_hideWPVersion";s:1:"1";s:15:"firewallEnabled";s:1:"1";s:11:"whitelisted";s:0:"";s:6:"isPaid";s:0:"";s:11:"blockedTime";s:3:"300";s:12:"neverBlockBG";s:18:"neverBlockVerified";s:13:"blockFakeBots";s:1:"0";s:10:"bannedURLs";s:0:"";s:18:"other_blockBadPOST";s:1:"0";s:18:"liveTrafficEnabled";s:1:"1";s:14:"disableCookies";s:1:"0";s:10:"tourClosed";s:1:"1";s:10:"autoUpdate";s:1:"1";s:11:"alertEmails";s:36:"test+cesaretleonie@cubedesigners.com";s:17:"actUpdateInterval";s:1:"2";s:7:"debugOn";s:1:"0";s:13:"welcomeClosed";s:1:"1";s:38:"email_summary_dashboard_widget_enabled";s:1:"1";s:22:"email_summary_interval";s:8:"biweekly";s:11:"other_WFNet";s:1:"1";}
\ No newline at end of file
+?>a:29:{s:9:"cacheType";s:0:"";s:9:"howGetIPs";s:0:"";s:11:"whitelisted";s:0:"";s:6:"apiKey";s:160:"ac1ea75064535887de3d18d99323d911b6d103f37950fc976fc039a56bfb5d55849c16b502469079d2d827e8ad810d96ca89d0b0b368edb321fadc4eda64349bf034113c4396bf5b61e7bc50bb566a4a";s:20:"loginSec_lockoutMins";s:1:"5";s:19:"other_hideWPVersion";s:1:"1";s:15:"firewallEnabled";s:1:"1";s:6:"isPaid";s:0:"";s:11:"blockedTime";s:3:"300";s:12:"neverBlockBG";s:18:"neverBlockVerified";s:13:"blockFakeBots";s:1:"0";s:10:"bannedURLs";s:0:"";s:18:"other_blockBadPOST";s:1:"0";s:18:"liveTrafficEnabled";s:1:"1";s:14:"disableCookies";s:1:"0";s:10:"tourClosed";s:1:"1";s:10:"autoUpdate";s:1:"1";s:11:"alertEmails";s:36:"test+cesaretleonie@cubedesigners.com";s:17:"actUpdateInterval";s:1:"2";s:7:"debugOn";s:1:"0";s:13:"welcomeClosed";s:1:"1";s:38:"email_summary_dashboard_widget_enabled";s:1:"1";s:22:"email_summary_interval";s:8:"biweekly";s:26:"loginSec_disableAuthorScan";s:1:"1";s:18:"liveTraf_ignoreIPs";s:0:"";s:17:"liveTraf_ignoreUA";s:0:"";s:17:"maxGlobalRequests";s:8:"DISABLED";s:17:"maxRequestsHumans";s:8:"DISABLED";s:6:"encKey";s:16:"542ce9d33e8dcf20";}
\ No newline at end of file
Plugin URI: http://www.wordfence.com/
Description: Wordfence Security - Anti-virus, Firewall and High Speed Cache
Author: Wordfence
-Version: 6.0.23
+Version: 6.0.24
Author URI: http://www.wordfence.com/
*/
if(defined('WP_INSTALLING') && WP_INSTALLING){
return;
}
-define('WORDFENCE_VERSION', '6.0.23');
+define('WORDFENCE_VERSION', '6.0.24');
if(get_option('wordfenceActivated') != 1){
add_action('activated_plugin','wordfence_save_activation_error'); function wordfence_save_activation_error(){ update_option('wf_plugin_act_error', ob_get_contents()); }
}
'limits' => '',
);
+ /**
+ * SQL WHERE clause.
+ *
+ * Stored after the 'comments_clauses' filter is run on the compiled WHERE sub-clauses.
+ *
+ * @since 4.4.2
+ * @access protected
+ * @var string
+ */
+ protected $filtered_where_clause;
+
/**
* Date query container
*
foreach ( $post_fields as $field_name => $field_value ) {
// $field_value may be an array.
$esses = array_fill( 0, count( (array) $field_value ), '%s' );
- $this->sql_clauses['where']['post_fields'] = $wpdb->prepare( " {$wpdb->posts}.{$field_name} IN (" . implode( ',', $esses ) . ')', $field_value );
+ $this->sql_clauses['where'][ $field_name ] = $wpdb->prepare( " {$wpdb->posts}.{$field_name} IN (" . implode( ',', $esses ) . ')', $field_value );
}
}
$limits = isset( $clauses[ 'limits' ] ) ? $clauses[ 'limits' ] : '';
$groupby = isset( $clauses[ 'groupby' ] ) ? $clauses[ 'groupby' ] : '';
+ $this->filtered_where_clause = $where;
+
if ( $where ) {
$where = 'WHERE ' . $where;
}
0 => wp_list_pluck( $comments, 'comment_ID' ),
);
- $where_clauses = $this->sql_clauses['where'];
- unset(
- $where_clauses['parent'],
- $where_clauses['parent__in'],
- $where_clauses['parent__not_in']
- );
+ /*
+ * The WHERE clause for the descendant query is the same as for the top-level
+ * query, minus the `parent`, `parent__in`, and `parent__not_in` sub-clauses.
+ */
+ $_where = $this->filtered_where_clause;
+ $exclude_keys = array( 'parent', 'parent__in', 'parent__not_in' );
+ foreach ( $exclude_keys as $exclude_key ) {
+ if ( isset( $this->sql_clauses['where'][ $exclude_key ] ) ) {
+ $clause = $this->sql_clauses['where'][ $exclude_key ];
+
+ // Strip the clause as well as any adjacent ANDs.
+ $pattern = '|(?:AND)?\s*' . $clause . '\s*(?:AND)?|';
+ $_where_parts = preg_split( $pattern, $_where );
+
+ // Remove empties.
+ $_where_parts = array_filter( array_map( 'trim', $_where_parts ) );
+
+ // Reassemble with an AND.
+ $_where = implode( ' AND ', $_where_parts );
+ }
+ }
// Fetch an entire level of the descendant tree at a time.
$level = 0;
break;
}
- $where = 'WHERE ' . implode( ' AND ', $where_clauses ) . ' AND comment_parent IN (' . implode( ',', array_map( 'intval', $parent_ids ) ) . ')';
+ $where = 'WHERE ' . $_where . ' AND comment_parent IN (' . implode( ',', array_map( 'intval', $parent_ids ) ) . ')';
$comment_ids = $wpdb->get_col( "{$this->sql_clauses['select']} {$this->sql_clauses['from']} {$where} {$this->sql_clauses['groupby']} ORDER BY comment_date_gmt ASC, comment_ID ASC" );
$level++;
*/
public function get_return_url() {
$referer = wp_get_referer();
+ $excluded_referer_basenames = array( 'customize.php', 'wp-login.php' );
+
if ( $this->return_url ) {
$return_url = $this->return_url;
- } else if ( $referer && 'customize.php' !== basename( parse_url( $referer, PHP_URL_PATH ) ) ) {
+ } else if ( $referer && ! in_array( basename( parse_url( $referer, PHP_URL_PATH ) ), $excluded_referer_basenames, true ) ) {
$return_url = $referer;
} else if ( $this->preview_url ) {
$return_url = $this->preview_url;
'order' => 'ASC',
'status' => 'approve',
'post_id' => $post->ID,
- 'hierarchical' => 'threaded',
'no_found_rows' => false,
'update_comment_meta_cache' => false, // We lazy-load comment meta for performance.
);
+ if ( get_option('thread_comments') ) {
+ $comment_args['hierarchical'] = 'threaded';
+ } else {
+ $comment_args['hierarchical'] = false;
+ }
+
if ( $user_ID ) {
$comment_args['include_unapproved'] = array( $user_ID );
} elseif ( ! empty( $comment_author_email ) ) {
'count' => true,
'orderby' => false,
'post_id' => $post->ID,
- 'parent' => 0,
'status' => 'approve',
);
+ if ( $comment_args['hierarchical'] ) {
+ $top_level_args['parent'] = 0;
+ }
+
if ( isset( $comment_args['include_unapproved'] ) ) {
$top_level_args['include_unapproved'] = $comment_args['include_unapproved'];
}
$_comments = $comment_query->comments;
// Trees must be flattened before they're passed to the walker.
- $comments_flat = array();
- foreach ( $_comments as $_comment ) {
- $comments_flat[] = $_comment;
- $comment_children = $_comment->get_children( array(
- 'format' => 'flat',
- 'status' => $comment_args['status'],
- 'orderby' => $comment_args['orderby']
- ) );
-
- foreach ( $comment_children as $comment_child ) {
- $comments_flat[] = $comment_child;
+ if ( $comment_args['hierarchical'] ) {
+ $comments_flat = array();
+ foreach ( $_comments as $_comment ) {
+ $comments_flat[] = $_comment;
+ $comment_children = $_comment->get_children( array(
+ 'format' => 'flat',
+ 'status' => $comment_args['status'],
+ 'orderby' => $comment_args['orderby']
+ ) );
+
+ foreach ( $comment_children as $comment_child ) {
+ $comments_flat[] = $comment_child;
+ }
}
+ } else {
+ $comments_flat = $_comments;
}
/**
*/
$r = apply_filters( 'wp_list_comments_args', $r );
- /*
- * If 'page' or 'per_page' has been passed, and does not match what's in $wp_query,
- * perform a separate comment query and allow Walker_Comment to paginate.
- */
- if ( is_singular() && ( $r['page'] || $r['per_page'] ) ) {
- $current_cpage = get_query_var( 'cpage' );
- if ( ! $current_cpage ) {
- $current_cpage = 'newest' === get_option( 'default_comments_page' ) ? 1 : $wp_query->max_num_comment_pages;
- }
-
- $current_per_page = get_query_var( 'comments_per_page' );
- if ( $r['page'] != $current_cpage || $r['per_page'] != $current_per_page ) {
- $comments = get_comments( array(
- 'post_id' => get_queried_object_id(),
- 'orderby' => 'comment_date_gmt',
- 'order' => 'ASC',
- 'status' => 'all',
- ) );
- }
- }
-
// Figure out what comments we'll be looping through ($_comments)
if ( null !== $comments ) {
$comments = (array) $comments;
$_comments = $comments;
}
} else {
- if ( empty($wp_query->comments) )
- return;
- if ( 'all' != $r['type'] ) {
- if ( empty($wp_query->comments_by_type) )
- $wp_query->comments_by_type = separate_comments($wp_query->comments);
- if ( empty($wp_query->comments_by_type[$r['type']]) )
- return;
- $_comments = $wp_query->comments_by_type[$r['type']];
- } else {
- $_comments = $wp_query->comments;
- }
+ /*
+ * If 'page' or 'per_page' has been passed, and does not match what's in $wp_query,
+ * perform a separate comment query and allow Walker_Comment to paginate.
+ */
+ if ( $r['page'] || $r['per_page'] ) {
+ $current_cpage = get_query_var( 'cpage' );
+ if ( ! $current_cpage ) {
+ $current_cpage = 'newest' === get_option( 'default_comments_page' ) ? 1 : $wp_query->max_num_comment_pages;
+ }
+
+ $current_per_page = get_query_var( 'comments_per_page' );
+ if ( $r['page'] != $current_cpage || $r['per_page'] != $current_per_page ) {
+
+ $comments = get_comments( array(
+ 'post_id' => get_the_ID(),
+ 'orderby' => 'comment_date_gmt',
+ 'order' => 'ASC',
+ 'status' => 'all',
+ ) );
- // Pagination is already handled by `WP_Comment_Query`, so we tell Walker not to bother.
- if ( $wp_query->max_num_comment_pages ) {
- $default_comments_page = get_option( 'default_comments_page' );
- $cpage = get_query_var( 'cpage' );
- if ( 'newest' === $default_comments_page ) {
- $r['cpage'] = $cpage;
+ if ( 'all' != $r['type'] ) {
+ $comments_by_type = separate_comments( $comments );
+ if ( empty( $comments_by_type[ $r['type'] ] ) ) {
+ return;
+ }
+
+ $_comments = $comments_by_type[ $r['type'] ];
+ } else {
+ $_comments = $comments;
+ }
+ }
- // When first page shows oldest comments, post permalink is the same as the comment permalink.
- } elseif ( $cpage == 1 ) {
- $r['cpage'] = '';
+ // Otherwise, fall back on the comments from `$wp_query->comments`.
+ } else {
+ if ( empty($wp_query->comments) )
+ return;
+ if ( 'all' != $r['type'] ) {
+ if ( empty($wp_query->comments_by_type) )
+ $wp_query->comments_by_type = separate_comments($wp_query->comments);
+ if ( empty($wp_query->comments_by_type[$r['type']]) )
+ return;
+ $_comments = $wp_query->comments_by_type[$r['type']];
} else {
- $r['cpage'] = $cpage;
+ $_comments = $wp_query->comments;
}
- $r['page'] = 0;
- $r['per_page'] = 0;
+ if ( $wp_query->max_num_comment_pages ) {
+ $default_comments_page = get_option( 'default_comments_page' );
+ $cpage = get_query_var( 'cpage' );
+ if ( 'newest' === $default_comments_page ) {
+ $r['cpage'] = $cpage;
+
+ /*
+ * When first page shows oldest comments, post permalink is the same as
+ * the comment permalink.
+ */
+ } elseif ( $cpage == 1 ) {
+ $r['cpage'] = '';
+ } else {
+ $r['cpage'] = $cpage;
+ }
+
+ $r['page'] = 0;
+ $r['per_page'] = 0;
+ }
}
}
*
* @param string The emoji base URL.
*/
- 'baseUrl' => apply_filters( 'emoji_url', set_url_scheme( '//s.w.org/images/core/emoji/72x72/' ) ),
+ 'baseUrl' => apply_filters( 'emoji_url', 'https://s.w.org/images/core/emoji/72x72/' ),
/**
* Filter the extension of the emoji files.
?>
<script type="text/javascript">
window._wpemojiSettings = <?php echo wp_json_encode( $settings ); ?>;
- !function(a,b,c){function d(a){var c,d=b.createElement("canvas"),e=d.getContext&&d.getContext("2d");return e&&e.fillText?(e.textBaseline="top",e.font="600 32px Arial","flag"===a?(e.fillText(String.fromCharCode(55356,56806,55356,56826),0,0),d.toDataURL().length>3e3):"diversity"===a?(e.fillText(String.fromCharCode(55356,57221),0,0),c=e.getImageData(16,16,1,1).data.toString(),e.fillText(String.fromCharCode(55356,57221,55356,57343),0,0),c!==e.getImageData(16,16,1,1).data.toString()):("simple"===a?e.fillText(String.fromCharCode(55357,56835),0,0):e.fillText(String.fromCharCode(55356,57135),0,0),0!==e.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g;c.supports={simple:d("simple"),flag:d("flag"),unicode8:d("unicode8"),diversity:d("diversity")},c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.simple&&c.supports.flag&&c.supports.unicode8&&c.supports.diversity||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
+ !function(a,b,c){function d(a){var c,d=b.createElement("canvas"),e=d.getContext&&d.getContext("2d"),f=String.fromCharCode;return e&&e.fillText?(e.textBaseline="top",e.font="600 32px Arial","flag"===a?(e.fillText(f(55356,56806,55356,56826),0,0),d.toDataURL().length>3e3):"diversity"===a?(e.fillText(f(55356,57221),0,0),c=e.getImageData(16,16,1,1).data.toString(),e.fillText(f(55356,57221,55356,57343),0,0),c!==e.getImageData(16,16,1,1).data.toString()):("simple"===a?e.fillText(f(55357,56835),0,0):e.fillText(f(55356,57135),0,0),0!==e.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g;c.supports={simple:d("simple"),flag:d("flag"),unicode8:d("unicode8"),diversity:d("diversity")},c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.simple&&c.supports.flag&&c.supports.unicode8&&c.supports.diversity||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
</script>
<?php
}
$text = wp_encode_emoji( $text );
/** This filter is documented in wp-includes/formatting.php */
- $cdn_url = apply_filters( 'emoji_url', set_url_scheme( '//s.w.org/images/core/emoji/72x72/' ) );
+ $cdn_url = apply_filters( 'emoji_url', 'https://s.w.org/images/core/emoji/72x72/' );
/** This filter is documented in wp-includes/formatting.php */
$ext = apply_filters( 'emoji_ext', '.png' );
}
if ( $ip ) {
$parts = array_map( 'intval', explode( '.', $ip ) );
- if ( 127 === $parts[0] || 10 === $parts[0]
+ if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0]
|| ( 172 === $parts[0] && 16 <= $parts[1] && 31 >= $parts[1] )
|| ( 192 === $parts[0] && 168 === $parts[1] )
) {
function browserSupportsEmoji( type ) {
var canvas = document.createElement( 'canvas' ),
context = canvas.getContext && canvas.getContext( '2d' ),
+ stringFromCharCode = String.fromCharCode,
tone;
if ( ! context || ! context.fillText ) {
* The first two will encode to small images (1-2KB data URLs), the third will encode
* to a larger image (4-5KB data URL).
*/
- context.fillText( String.fromCharCode( 55356, 56806, 55356, 56826 ), 0, 0 );
+ context.fillText( stringFromCharCode( 55356, 56806, 55356, 56826 ), 0, 0 );
return canvas.toDataURL().length > 3000;
} else if ( 'diversity' === type ) {
/*
* emoji with no skin tone specified (in this case, Santa). It then adds a skin tone, and
* compares if the emoji rendering has changed.
*/
- context.fillText( String.fromCharCode( 55356, 57221 ), 0, 0 );
+ context.fillText( stringFromCharCode( 55356, 57221 ), 0, 0 );
tone = context.getImageData( 16, 16, 1, 1 ).data.toString();
- context.fillText( String.fromCharCode( 55356, 57221, 55356, 57343 ), 0, 0 );
+ context.fillText( stringFromCharCode( 55356, 57221, 55356, 57343 ), 0, 0 );
// Chrome has issues comparing arrays, so we compare it as a string, instead.
return tone !== context.getImageData( 16, 16, 1, 1 ).data.toString();
} else {
* center pixel. In browsers that don't support emoji, the character will be rendered
* as an empty square, so the center pixel will be blank.
*/
- context.fillText( String.fromCharCode( 55357, 56835 ), 0, 0 );
+ context.fillText( stringFromCharCode( 55357, 56835 ), 0, 0 );
} else {
/*
* To check for Unicode 8 support, let's try rendering the most important advancement
* that the Unicode Consortium have made in years: the burrito.
*/
- context.fillText( String.fromCharCode( 55356, 57135 ), 0, 0 );
+ context.fillText( stringFromCharCode( 55356, 57135 ), 0, 0 );
}
return context.getImageData( 16, 16, 1, 1 ).data[0] !== 0;
}
-!function(a,b,c){function d(a){var c,d=b.createElement("canvas"),e=d.getContext&&d.getContext("2d");return e&&e.fillText?(e.textBaseline="top",e.font="600 32px Arial","flag"===a?(e.fillText(String.fromCharCode(55356,56806,55356,56826),0,0),d.toDataURL().length>3e3):"diversity"===a?(e.fillText(String.fromCharCode(55356,57221),0,0),c=e.getImageData(16,16,1,1).data.toString(),e.fillText(String.fromCharCode(55356,57221,55356,57343),0,0),c!==e.getImageData(16,16,1,1).data.toString()):("simple"===a?e.fillText(String.fromCharCode(55357,56835),0,0):e.fillText(String.fromCharCode(55356,57135),0,0),0!==e.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g;c.supports={simple:d("simple"),flag:d("flag"),unicode8:d("unicode8"),diversity:d("diversity")},c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.simple&&c.supports.flag&&c.supports.unicode8&&c.supports.diversity||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
\ No newline at end of file
+!function(a,b,c){function d(a){var c,d=b.createElement("canvas"),e=d.getContext&&d.getContext("2d"),f=String.fromCharCode;return e&&e.fillText?(e.textBaseline="top",e.font="600 32px Arial","flag"===a?(e.fillText(f(55356,56806,55356,56826),0,0),d.toDataURL().length>3e3):"diversity"===a?(e.fillText(f(55356,57221),0,0),c=e.getImageData(16,16,1,1).data.toString(),e.fillText(f(55356,57221,55356,57343),0,0),c!==e.getImageData(16,16,1,1).data.toString()):("simple"===a?e.fillText(f(55357,56835),0,0):e.fillText(f(55356,57135),0,0),0!==e.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g;c.supports={simple:d("simple"),flag:d("flag"),unicode8:d("unicode8"),diversity:d("diversity")},c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.simple&&c.supports.flag&&c.supports.unicode8&&c.supports.diversity||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
\ No newline at end of file
return wp_kses( $data, 'post' );
}
+/**
+ * Navigates through an array, object, or scalar, and sanitizes content for
+ * allowed HTML tags for post content.
+ *
+ * @since 4.4.2
+ *
+ * @param mixed $value The array or string to filter.
+ * @return mixed $value The filtered content.
+ */
+function wp_kses_post_deep( $data ) {
+ return map_deep( $data, 'wp_kses_post' );
+}
+
/**
* Strips all of the HTML in the content.
*
wp_cache_init();
if ( function_exists( 'wp_cache_add_global_groups' ) ) {
- wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache' ) );
+ wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks' ) );
wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) );
}
}
if ( is_array( $global_groups ) ) {
wp_cache_add_global_groups( $global_groups );
} else {
- wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache' ) );
+ wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks' ) );
}
wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) );
}
if ( is_array( $global_groups ) ) {
wp_cache_add_global_groups( $global_groups );
} else {
- wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache' ) );
+ wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks' ) );
}
wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) );
}
// In php 5 parse_url may fail if the URL query part contains http://, bug #38143
$test = ( $cut = strpos($location, '?') ) ? substr( $location, 0, $cut ) : $location;
- $lp = parse_url($test);
+ // @-operator is used to prevent possible warnings in PHP < 5.3.3.
+ $lp = @parse_url($test);
// Give up if malformed URL
if ( false === $lp )
if ( isset($lp['scheme']) && !('http' == $lp['scheme'] || 'https' == $lp['scheme']) )
return $default;
- // Reject if scheme is set but host is not. This catches urls like https:host.com for which parse_url does not set the host field.
- if ( isset($lp['scheme']) && !isset($lp['host']) )
+ // Reject if certain components are set but host is not. This catches urls like https:host.com for which parse_url does not set the host field.
+ if ( ! isset( $lp['host'] ) && ( isset( $lp['scheme'] ) || isset( $lp['user'] ) || isset( $lp['pass'] ) || isset( $lp['port'] ) ) ) {
return $default;
+ }
+
+ // Reject malformed components parse_url() can return on odd inputs
+ foreach ( array( 'user', 'pass', 'host' ) as $component ) {
+ if ( isset( $lp[ $component ] ) && strpbrk( $lp[ $component ], ':/?#@' ) ) {
+ return $default;
+ }
+ }
$wpp = parse_url(home_url());
$like = '%' . $wpdb->esc_like( $q['s'] ) . '%';
}
- $search_orderby = '(CASE ';
+ $search_orderby = '';
// sentence match in 'post_title'
if ( $like ) {
if ( $like ) {
$search_orderby .= $wpdb->prepare( "WHEN $wpdb->posts.post_content LIKE %s THEN 4 ", $like );
}
- $search_orderby .= 'ELSE 5 END)';
+
+ if ( $search_orderby ) {
+ $search_orderby = '(CASE ' . $search_orderby . 'ELSE 5 END)';
+ }
} else {
// single word or sentence search
$search_orderby = reset( $q['search_orderby_title'] ) . ' DESC';
*
* @global WP_Query $wp_query Global WP_Query instance.
* @global wpdb $wpdb WordPress database abstraction object.
- * @global WP_Rewrite $wp_rewrite WordPress rewrite component.
*/
function wp_old_slug_redirect() {
- global $wp_query, $wp_rewrite;
-
- if ( get_queried_object() ) {
- return;
- }
+ global $wp_query;
- if ( '' !== $wp_query->query_vars['name'] ) :
+ if ( is_404() && '' !== $wp_query->query_vars['name'] ) :
global $wpdb;
// Guess the current post_type based on the query vars.
$link = get_permalink( $id );
- if ( is_feed() ) {
- $link = user_trailingslashit( trailingslashit( $link ) . 'feed' );
- } elseif ( isset( $GLOBALS['wp_query']->query_vars['paged'] ) && $GLOBALS['wp_query']->query_vars['paged'] > 1 ) {
+ if ( isset( $GLOBALS['wp_query']->query_vars['paged'] ) && $GLOBALS['wp_query']->query_vars['paged'] > 1 ) {
$link = user_trailingslashit( trailingslashit( $link ) . 'page/' . $GLOBALS['wp_query']->query_vars['paged'] );
} elseif( is_embed() ) {
$link = user_trailingslashit( trailingslashit( $link ) . 'embed' );
- } elseif ( is_404() ) {
- // Add rewrite endpoints if necessary.
- foreach ( $wp_rewrite->endpoints as $endpoint ) {
- if ( $endpoint[2] && false !== get_query_var( $endpoint[2], false ) ) {
- $link = user_trailingslashit( trailingslashit( $link ) . $endpoint[1] );
- }
- }
}
/**
*
* See ERRATA.md for our reasoning behind this particular order
*/
- if (extension_loaded('libsodium')) {
+ if (PHP_VERSION_ID >= 50300 && extension_loaded('libsodium') && function_exists('\\Sodium\\randombytes_buf')) {
// See random_bytes_libsodium.php
require_once $RandomCompatDIR.'/random_bytes_libsodium.php';
}
function update_term_cache( $terms, $taxonomy = '' ) {
foreach ( (array) $terms as $term ) {
// Create a copy in case the array was passed by reference.
- $_term = $term;
+ $_term = clone $term;
// Object ID should not be cached.
unset( $_term->object_id );
*
* @global string $wp_version
*/
-$wp_version = '4.4.1';
+$wp_version = '4.4.2';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
</h2>
<div class="changelog point-releases">
- <h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 1 ); ?></h3>
+ <h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 2 ); ?></h3>
+ <p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
+ '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 17 ), '4.4.2', number_format_i18n( 17 ) ); ?>
+ <?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.4.2' ); ?>
+ </p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
'<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 52 ), '4.4.1', number_format_i18n( 52 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.4.1' ); ?>
}
}
- foreach ( $meta as &$value ) {
- if ( is_string( $value ) ) {
- $value = wp_kses_post( $value );
+ foreach ( $meta['keywords'] as $key => $keyword ) {
+ if ( ! seems_utf8( $keyword ) ) {
+ $meta['keywords'][ $key ] = utf8_encode( $keyword );
}
}
+ $meta = wp_kses_post_deep( $meta );
+
/**
* Filter the array of meta data read from an image's exif data.
*
}
}
);
+ // Prevent submitting the form when pressing Enter on a focused field.
+ return false;
},
revert : function() {
-window.wp=window.wp||{};var inlineEditTax;!function(a,b){inlineEditTax={init:function(){var b=this,c=a("#inline-edit");b.type=a("#the-list").attr("data-wp-lists").substr(5),b.what="#"+b.type+"-",a("#the-list").on("click","a.editinline",function(){return inlineEditTax.edit(this),!1}),c.keyup(function(a){return 27===a.which?inlineEditTax.revert():void 0}),a(".cancel",c).click(function(){return inlineEditTax.revert()}),a(".save",c).click(function(){return inlineEditTax.save(this)}),a("input, select",c).keydown(function(a){return 13===a.which?inlineEditTax.save(this):void 0}),a('#posts-filter input[type="submit"]').mousedown(function(){b.revert()})},toggle:function(b){var c=this;"none"===a(c.what+c.getId(b)).css("display")?c.revert():c.edit(b)},edit:function(b){var c,d,e,f=this;return f.revert(),"object"==typeof b&&(b=f.getId(b)),c=a("#inline-edit").clone(!0),d=a("#inline_"+b),a("td",c).attr("colspan",a("th:visible, td:visible",".widefat:first thead").length),a(f.what+b).hide().after(c).after('<tr class="hidden"></tr>'),e=a(".name",d),e.find("img").replaceWith(function(){return this.alt}),e=e.text(),a(':input[name="name"]',c).val(e),e=a(".slug",d),e.find("img").replaceWith(function(){return this.alt}),e=e.text(),a(':input[name="slug"]',c).val(e),a(c).attr("id","edit-"+b).addClass("inline-editor").show(),a(".ptitle",c).eq(0).focus(),!1},save:function(c){var d,e,f=a('input[name="taxonomy"]').val()||"";"object"==typeof c&&(c=this.getId(c)),a("table.widefat .spinner").addClass("is-active"),d={action:"inline-save-tax",tax_type:this.type,tax_ID:c,taxonomy:f},e=a("#edit-"+c).find(":input").serialize(),d=e+"&"+a.param(d),a.post(ajaxurl,d,function(d){var e,f,g,h=a("#edit-"+c+" .inline-edit-save .error");a("table.widefat .spinner").removeClass("is-active"),d?-1!==d.indexOf("<tr")?(a(inlineEditTax.what+c).siblings("tr.hidden").addBack().remove(),f=a(d).attr("id"),a("#edit-"+c).before(d).remove(),f?(g=f.replace(inlineEditTax.type+"-",""),e=a("#"+f)):(g=c,e=a(inlineEditTax.what+c)),a("#parent").find("option[value="+g+"]").text(e.find(".row-title").text()),e.hide().fadeIn(400,function(){e.find(".row-title").focus(),b.a11y.speak(inlineEditL10n.saved)})):(h.html(d).show(),b.a11y.speak(h.text())):(h.html(inlineEditL10n.error).show(),b.a11y.speak(inlineEditL10n.error))})},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");b&&(a("table.widefat .spinner").removeClass("is-active"),a("#"+b).siblings("tr.hidden").addBack().remove(),b=b.substr(b.lastIndexOf("-")+1),a(this.what+b).show().find(".row-title").focus())},getId:function(b){var c="TR"===b.tagName?b.id:a(b).parents("tr").attr("id"),d=c.split("-");return d[d.length-1]}},a(document).ready(function(){inlineEditTax.init()})}(jQuery,window.wp);
\ No newline at end of file
+window.wp=window.wp||{};var inlineEditTax;!function(a,b){inlineEditTax={init:function(){var b=this,c=a("#inline-edit");b.type=a("#the-list").attr("data-wp-lists").substr(5),b.what="#"+b.type+"-",a("#the-list").on("click","a.editinline",function(){return inlineEditTax.edit(this),!1}),c.keyup(function(a){return 27===a.which?inlineEditTax.revert():void 0}),a(".cancel",c).click(function(){return inlineEditTax.revert()}),a(".save",c).click(function(){return inlineEditTax.save(this)}),a("input, select",c).keydown(function(a){return 13===a.which?inlineEditTax.save(this):void 0}),a('#posts-filter input[type="submit"]').mousedown(function(){b.revert()})},toggle:function(b){var c=this;"none"===a(c.what+c.getId(b)).css("display")?c.revert():c.edit(b)},edit:function(b){var c,d,e,f=this;return f.revert(),"object"==typeof b&&(b=f.getId(b)),c=a("#inline-edit").clone(!0),d=a("#inline_"+b),a("td",c).attr("colspan",a("th:visible, td:visible",".widefat:first thead").length),a(f.what+b).hide().after(c).after('<tr class="hidden"></tr>'),e=a(".name",d),e.find("img").replaceWith(function(){return this.alt}),e=e.text(),a(':input[name="name"]',c).val(e),e=a(".slug",d),e.find("img").replaceWith(function(){return this.alt}),e=e.text(),a(':input[name="slug"]',c).val(e),a(c).attr("id","edit-"+b).addClass("inline-editor").show(),a(".ptitle",c).eq(0).focus(),!1},save:function(c){var d,e,f=a('input[name="taxonomy"]').val()||"";return"object"==typeof c&&(c=this.getId(c)),a("table.widefat .spinner").addClass("is-active"),d={action:"inline-save-tax",tax_type:this.type,tax_ID:c,taxonomy:f},e=a("#edit-"+c).find(":input").serialize(),d=e+"&"+a.param(d),a.post(ajaxurl,d,function(d){var e,f,g,h=a("#edit-"+c+" .inline-edit-save .error");a("table.widefat .spinner").removeClass("is-active"),d?-1!==d.indexOf("<tr")?(a(inlineEditTax.what+c).siblings("tr.hidden").addBack().remove(),f=a(d).attr("id"),a("#edit-"+c).before(d).remove(),f?(g=f.replace(inlineEditTax.type+"-",""),e=a("#"+f)):(g=c,e=a(inlineEditTax.what+c)),a("#parent").find("option[value="+g+"]").text(e.find(".row-title").text()),e.hide().fadeIn(400,function(){e.find(".row-title").focus(),b.a11y.speak(inlineEditL10n.saved)})):(h.html(d).show(),b.a11y.speak(h.text())):(h.html(inlineEditL10n.error).show(),b.a11y.speak(inlineEditL10n.error))}),!1},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");b&&(a("table.widefat .spinner").removeClass("is-active"),a("#"+b).siblings("tr.hidden").addBack().remove(),b=b.substr(b.lastIndexOf("-")+1),a(this.what+b).show().find(".row-title").focus())},getId:function(b){var c="TR"===b.tagName?b.id:a(b).parents("tr").attr("id"),d=c.split("-");return d[d.length-1]}},a(document).ready(function(){inlineEditTax.init()})}(jQuery,window.wp);
\ No newline at end of file
if ( !empty( $registered_sidebar['class'] ) )
$wrap_class .= ' ' . $registered_sidebar['class'];
+ $is_inactive_widgets = 'wp_inactive_widgets' == $registered_sidebar['id'];
?>
<div class="<?php echo esc_attr( $wrap_class ); ?>">
<div class="widget-holder inactive">
<?php wp_list_widget_controls( $registered_sidebar['id'], $registered_sidebar['name'] ); ?>
+
+ <?php if ( $is_inactive_widgets ) { ?>
<div class="remove-inactive-widgets">
<form action="" method="post">
<p>
<?php wp_nonce_field( 'remove-inactive-widgets', '_wpnonce_remove_inactive_widgets' ); ?>
</form>
</div>
+ <?php } ?>
</div>
+ <?php if ( $is_inactive_widgets ) { ?>
<p class="description"><?php _e( 'This will clear all items from the inactive widgets list. You will not be able to restore any customizations.' ); ?></p>
+ <?php } ?>
</div>
<?php
#. translators: 1: WP_Term class name, WP_Comment class name, WP_Network class
#. name
-#: wp-admin/about.php:185
+#: wp-admin/about.php:189
msgid "New %1$s, %2$s, and %3$s objects make interacting with terms, comments, and networks more predictable and intuitive in code."
msgstr "Les nouveaux objets %1$s, %2$s et %3$s rendent la gestion par le code des termes, commentaires et réseaux plus prévisible et intuitive."
#. translators: WP_Comment_Query class name
-#: wp-admin/about.php:178
+#: wp-admin/about.php:182
msgid "Comment queries now have cache handling to improve performance. New arguments in %s make crafting robust comment queries simpler."
msgstr "Les requêtes de commentaires disposent désormais d’un gestionnaire de cache pour améliorer les performances. Les nouveaux arguments de %s simplifient la mise en place de requêtes de commentaires robustes."
-#: wp-admin/about.php:182
+#: wp-admin/about.php:186
msgid "Term, comment, and network objects"
msgstr "Objets pour les termes, commentaires et réseaux"
-#: wp-admin/about.php:175
+#: wp-admin/about.php:179
msgid "Comment query improvements"
msgstr "Amélioration des requêtes de commentaires"
#. translators: 1: add_term_meta() docs link, 2: get_term_meta() docs link, 3:
#. update_term_meta() docs link
-#: wp-admin/about.php:167
+#: wp-admin/about.php:171
msgid "Terms now support metadata, just like posts. See %1$s, %2$s, and %3$s for more information."
msgstr "Les termes disposent désormais de métadonnées, tout comme les articles. Lisez la documentation de %1$s, %2$s et %3$s pour plus d'information."
-#: wp-admin/about.php:164
+#: wp-admin/about.php:168
msgid "Term meta"
msgstr "Méta des termes"
#. translators: WordPress REST API plugin link
-#: wp-admin/about.php:156
+#: wp-admin/about.php:160
msgid "Infrastructure is the first part of a multi-stage rollout for the REST API. Inclusion of core endpoints is targeted for an upcoming release. To get a sneak peek of the core endpoints, and for more information on extending the REST API, check out the official %s plugin."
msgstr "L’infrastructure est la première partie d’une mise en place en plusieurs étapes de l’API REST. L’inclusion des points d’accès est prévue pour une prochaine version. Pour avoir un aperçu des principaux points d’accès, et pour obtenir plus d’information sur la manière d’étendre l’API REST, découvrez l’extension officielle %s."
-#: wp-admin/about.php:139
+#: wp-admin/about.php:143
msgid "Infrastructure for the REST API has been integrated into core, marking a new era in developing with WordPress. The REST API serves to provide developers with a path forward for building and extending RESTful APIs on top of WordPress."
msgstr "L’infrastructure de l’API REST a été intégrée au cœur de WordPress, ouvrant ainsi une nouvelle ère pour le développement avec le logiciel. L’API REST a été conçue pour offrir aux développeurs une manière centrale de construire et d’étendre des API RESTful basées sur le socle WordPress."
-#: wp-admin/about.php:126
+#: wp-admin/about.php:130
msgid "In addition to post embeds, WordPress 4.4 also adds support for five new oEmbed providers: Cloudup, Reddit Comments, ReverbNation, Speaker Deck, and VideoPress."
msgstr "En plus de l’insertion de contenu, WordPress 4.4 apporte la reconnaissance de cinq nouveaux fournisseurs oEmbed : Cloudup, Reddit Comments, ReverbNation, Speaker Deck et VideoPress."
-#: wp-admin/about.php:137
+#: wp-admin/about.php:141
msgid "REST API infrastructure"
msgstr "Infrastructure de l’API REST"
-#: wp-admin/about.php:112
+#: wp-admin/about.php:116
msgid "Now you can embed your posts on other sites, even other WordPress sites. Simply drop a post URL into the editor and see an instant embed preview, complete with the title, excerpt, and featured image if you’ve set one. We’ll even include your site icon and links for comments and sharing."
msgstr "Vous pouvez désormais insérer vos articles dans d’autres sites, et même dans d’autres sites WordPress. Collez simplement l’adresse du contenu dans l’éditeur, et une prévisualisation s’affichera instantanément, avec titre, extrait, et l’image de Une si vous avez mise une. Vous y trouverez même l’icône de votre site et les liens pour commenter et partager."
-#: wp-admin/about.php:125
+#: wp-admin/about.php:129
msgid "Even more embed providers"
msgstr "Encore plus de fournisseurs de contenus distants"
-#: wp-admin/about.php:111
+#: wp-admin/about.php:115
msgid "Embed your WordPress content"
msgstr "Intégrez votre contenu WordPress"
-#: wp-admin/about.php:98
+#: wp-admin/about.php:102
msgid "WordPress now takes a smarter approach to displaying appropriate image sizes on any device, ensuring a perfect fit every time. You don’t need to do anything to your theme, it just works."
msgstr "WordPress approche désormais l’affichage des images de manière plus intelligente, utilisant à chaque fois la taille d’image la plus pertinente en fonction de l’appareil utilisé. Vous n’avez rien à changer à votre thème : ça fonctionne, c’est tout."
-#: wp-admin/about.php:97
+#: wp-admin/about.php:101
msgid "Responsive images"
msgstr "Images adaptatives"
-#: wp-admin/about.php:75
+#: wp-admin/about.php:79
msgid "Twenty Sixteen was built to look great on any device. A fluid grid design, flexible header, fun color schemes, and more, will make your content shine."
msgstr "Twenty Sixteen a été conçu pour être superbe sur tous les appareils. Avec son design en grille fluide, son en-tête flexible et ses jeux de couleurs joyeux, il mettra en valeur votre contenu."
-#: wp-admin/about.php:74
+#: wp-admin/about.php:78
msgid "Our newest default theme, Twenty Sixteen, is a modern take on a classic blog design."
msgstr "Notre nouveau thème par défaut, Twenty Sixteen, est une modernisation d’un thème de blog classique."
-#: wp-admin/about.php:67
+#: wp-admin/about.php:71
msgid "Twenty Sixteen"
msgstr "Twenty Sixteen"
msgstr "(Actuellement réglé sur : %s)"
#. translators: %s: WordPress version number
-#: wp-admin/about.php:222
+#: wp-admin/about.php:226
msgid "<strong>Version %s</strong> addressed one security issue."
msgstr "La <strong>version %s</strong> a corrigé un problème de sécurité."
msgid "Profile Picture"
msgstr "Illustration du profil"
-#: wp-admin/about.php:216
+#: wp-admin/about.php:220
msgid "Security Releases"
msgstr "Mises à jour de sécurité"
-#: wp-admin/about.php:213
+#: wp-admin/about.php:217
msgid "Maintenance Releases"
msgstr "Mises à jour de maintenance"
-#: wp-admin/about.php:219
+#: wp-admin/about.php:223
msgid "Maintenance and Security Releases"
msgstr "Mises à jour de maintenance et de sécurité"
msgid "You are not allowed to manage these items."
msgstr "Vous n’êtes pas autorisé à modifier ces éléments."
-#: wp-admin/widgets.php:431
+#: wp-admin/widgets.php:436
msgid "This will clear all items from the inactive widgets list. You will not be able to restore any customizations."
msgstr "Cela supprimera tous les éléments de la liste des widgets désactivés. Vous ne pourrez récupérer aucune personnalisation."
msgid "Users list navigation"
msgstr "Navigation de la liste des utilisateurs"
-#: wp-admin/widgets.php:423
+#: wp-admin/widgets.php:426
msgid "Clear Inactive Widgets"
msgstr "Vider les widgets désactivés"
msgid "Log Out Everywhere"
msgstr "Déconnexion globale"
-#: wp-admin/about.php:73
+#: wp-admin/about.php:77
msgid "Introducing Twenty Sixteen"
msgstr "Présentation de Twenty Sixteen"
msgid "Show next theme"
msgstr "Afficher le thème suivant"
-#: wp-admin/widgets.php:498
+#: wp-admin/widgets.php:504
msgid "Add Widget"
msgstr "Ajouter le widget"
msgstr "Afficher la barre d’outils lorsque vous visitez le site"
#. translators: %s: Codex URL
-#: wp-admin/about.php:55 wp-admin/about.php:239
+#: wp-admin/about.php:55 wp-admin/about.php:59 wp-admin/about.php:243
msgid "For more information, see <a href=\"%s\">the release notes</a>."
msgstr "Pour plus d’informations, consultez les <a href=\"%s\">notes de publication</a>."
#. translators: 1: WordPress version number, 2: plural number of bugs. Singular
#. security issue.
-#: wp-admin/about.php:231
+#: wp-admin/about.php:235
msgid "<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bug."
msgid_plural "<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bugs."
msgstr[0] "La <strong>version %1$s</strong> a corrigé un problème de sécurité et %2$s bug."
#. translators: 1: WordPress version number, 2: plural number of bugs. More
#. than one security issue.
-#: wp-admin/about.php:53 wp-admin/about.php:235
+#: wp-admin/about.php:53 wp-admin/about.php:57 wp-admin/about.php:239
msgid "<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug."
msgid_plural "<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs."
msgstr[0] "La <strong>version %1$s</strong> a corrigé quelques problèmes de sécurité et %2$s bug."
msgstr[1] "La <strong>version %1$s</strong> a corrigé quelques problèmes de sécurité et %2$s bugs."
#. translators: 1: WordPress version number, 2: plural number of bugs.
-#: wp-admin/about.php:227
+#: wp-admin/about.php:231
msgid "<strong>Version %1$s</strong> addressed %2$s bug."
msgid_plural "<strong>Version %1$s</strong> addressed %2$s bugs."
msgstr[0] "La <strong>version %1$s</strong> a corrigé %2$s bug."
msgid "Welcome to your WordPress Dashboard! This is the screen you will see when you log in to your site, and gives you access to all the site management features of WordPress. You can get help for any screen by clicking the Help tab in the upper corner."
msgstr "Bienvenu dans votre tableau de bord WordPress ! Ceci est l’écran que vous verrez lorsque vous vous connectez à votre site, et qui vous donne accès à l’ensemble des fonctionnalités de gestion de WordPress. Vous pouvez obtenir de l’aide dans n’importe quel écran en cliquant sur l’onglet « Aide » présent en haut à droite de votre navigateur."
-#: wp-admin/about.php:212
+#: wp-admin/about.php:216
msgid "Maintenance Release"
msgstr "Mise à jour de maintenance"
-#: wp-admin/about.php:215
+#: wp-admin/about.php:219
msgid "Security Release"
msgstr "Mise à jour de sécurité"
-#: wp-admin/about.php:52 wp-admin/about.php:218
+#: wp-admin/about.php:52 wp-admin/about.php:222
msgid "Maintenance and Security Release"
msgid_plural "Maintenance and Security Releases"
msgstr[0] "Mise à jour de maintenance et de sécurité"
msgstr "Nouveautés"
#. translators: %s: WordPress version number
-#: wp-admin/about.php:224
+#: wp-admin/about.php:228
msgid "<strong>Version %s</strong> addressed some security issues."
msgstr "La <strong>version %s</strong> a corrigé quelques problèmes de sécurité."
msgid "This screen allows you to choose your permalink structure. You can choose from common settings or create custom URL structures."
msgstr "Cet écran vous permet de choisir la structure de permalien par défaut. Vous pouvez choisir les réglages les plus courants, ou créer votre propre structure de liens."
-#: wp-admin/about.php:197
+#: wp-admin/about.php:201
msgid "Return to Updates"
msgstr "Retourner aux mises à jour"
msgid "Welcome to WordPress %s"
msgstr "Bienvenue dans WordPress %s"
-#: wp-admin/about.php:197
+#: wp-admin/about.php:201
msgid "Return to Dashboard → Updates"
msgstr "Retourner aux mises à jour"
-#: wp-admin/about.php:200
+#: wp-admin/about.php:204
msgid "Go to Dashboard → Home"
msgstr "Aller sur l’accueil"
msgid "Core Developers"
msgstr "Développeurs principaux"
-#: wp-admin/about.php:133
+#: wp-admin/about.php:137
msgid "Under the Hood"
msgstr "Sous le capot"
msgstr[0] "Drop-ins <span class=\"count\">(%s)</span>"
msgstr[1] "Drop-ins <span class=\"count\">(%s)</span>"
-#: wp-admin/about.php:200
+#: wp-admin/about.php:204
msgid "Go to Dashboard"
msgstr "Aller sur le tableau de bord"
# This file is distributed under the same license as the Development (4.4.x) package.
msgid ""
msgstr ""
-"PO-Revision-Date: 2015-12-08 17:55:57+0000\n"
+"PO-Revision-Date: 2016-02-11 10:20:56+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Embedded WordPress Post"
msgstr "Inclure un article WordPress"
-#: wp-includes/comment-template.php:2143
+#: wp-includes/comment-template.php:2171
msgid "<a href=\"%1$s\" aria-label=\"Logged in as %2$s. Edit your profile.\">Logged in as %2$s</a>. <a href=\"%3$s\">Log out?</a>"
msgstr "<a href=\"%1$s\" aria-label=\"Connecté en tant que %2$s. Modifiez votre profil.\">Connecté en tant que %2$s</a>. <a href=\"%3$s\">Se déconnecter ?</a>"
msgid "Add new image"
msgstr "Ajouter une nouvelle image"
-#: wp-includes/class-wp-customize-manager.php:1828
+#: wp-includes/class-wp-customize-manager.php:1830
msgid "Site Icon"
msgstr "Icône du site"
msgid "Expand Sidebar"
msgstr "Étendre la colonne latérale"
-#: wp-includes/class-wp-customize-manager.php:1829
+#: wp-includes/class-wp-customize-manager.php:1831
msgid "The Site Icon is used as a browser and app icon for your site. Icons must be square, and at least 512px wide and tall."
msgstr "L’icône du site est utilisée pour représenter votre site en tant qu’icône de navigateur (favicon) et icône d’application. Les icônes doivent être au format carré, et mesurer au moins 512px en largeur comme en hauteur. "
-#: wp-includes/class-wp-customize-manager.php:1795
+#: wp-includes/class-wp-customize-manager.php:1797
msgid "Site Identity"
msgstr "Identité du site"
msgid "Your password reset link has expired. Please request a new link below."
msgstr "Votre lien de réinitialisation de mot de passe semble avoir expiré. Veuillez demander un nouveau lien ci-dessous."
-#: wp-includes/pluggable.php:1780
+#: wp-includes/pluggable.php:1789
msgid "To set your password, visit the following address:"
msgstr "Pour configurer votre mot de passe, rendez-vous à l'adresse suivante :"
msgid "Allow link notifications from other blogs (pingbacks and trackbacks) on new articles"
msgstr "Autoriser les liens de notification d'autres blogs (pings et rétroliens) sur les nouveaux articles"
-#: wp-includes/widgets/class-wp-widget-text.php:107
-msgid "Content:"
-msgstr "Contient :"
-
#: wp-includes/class-wp-editor.php:1051
msgid "Ctrl + letter:"
msgstr "Ctrl + lettre :"
msgid "Additional shortcuts,"
msgstr "Raccourcis supplémentaires,"
+#: wp-includes/widgets/class-wp-widget-text.php:107
+msgid "Content:"
+msgstr "Contenu :"
+
#: wp-includes/class-wp-customize-section.php:236
#: wp-includes/customize/class-wp-customize-themes-section.php:55
msgid "Customizing"
msgstr "j F Y à G \\h i \\m\\i\\n"
#. translators: 1: website name, 2: website IP, 3: website hostname
-#: wp-includes/pluggable.php:1466 wp-includes/pluggable.php:1476
-#: wp-includes/pluggable.php:1619 wp-includes/pluggable.php:1627
+#: wp-includes/pluggable.php:1475 wp-includes/pluggable.php:1485
+#: wp-includes/pluggable.php:1628 wp-includes/pluggable.php:1636
msgid "Website: %1$s (IP: %2$s, %3$s)"
msgstr "Site web : %1$s (IP : %2$s, %3$s)"
#. translators: 1: comment author, 2: author IP, 3: author domain
-#: wp-includes/pluggable.php:1486 wp-includes/pluggable.php:1634
+#: wp-includes/pluggable.php:1495 wp-includes/pluggable.php:1643
msgid "Author: %1$s (IP: %2$s, %3$s)"
msgstr "Auteur : %1$s (IP : %2$s, %3$s)"
msgstr "L'option %1$s est obsolète pour l'ensemble des fonctions %2$s. Utilisez plutôt l'option %3$s."
#. translators: %s: post title
-#: wp-includes/comment-template.php:1468
+#: wp-includes/comment-template.php:1480
msgid "1 Comment<span class=\"screen-reader-text\"> on %s</span>"
msgstr "Un commentaire <span class=\"screen-reader-text\"> sur %s</span>"
#. translators: 1: Number of comments 2: post title
-#: wp-includes/comment-template.php:1473
+#: wp-includes/comment-template.php:1485
msgid "%1$s Comment<span class=\"screen-reader-text\"> on %2$s</span>"
msgid_plural "%1$s Comments<span class=\"screen-reader-text\"> on %2$s</span>"
msgstr[0] "%1$s commentaire <span class=\"screen-reader-text\"> sur %2$s</span>"
msgstr[1] "%1$s commentaires <span class=\"screen-reader-text\"> sur %2$s</span>"
#. translators: %s: post title
-#: wp-includes/comment-template.php:1479
+#: wp-includes/comment-template.php:1491
msgid "Comments Off<span class=\"screen-reader-text\"> on %s</span>"
msgstr "Commentaires fermés<span class=\"screen-reader-text\"> sur %s</span>"
#. translators: %s: post title
-#: wp-includes/comment-template.php:1463
+#: wp-includes/comment-template.php:1475
msgid "No Comments<span class=\"screen-reader-text\"> on %s</span>"
msgstr "Aucun commentaire<span class=\"screen-reader-text\"> sur %s</span>"
msgid "Installed"
msgstr "Installé"
-#: wp-includes/pluggable.php:1479
+#: wp-includes/pluggable.php:1488
msgid "You can see all pingbacks on this post here:"
msgstr "Vous pouvez voir tous les pings de cet article ici : "
-#: wp-includes/pluggable.php:1469
+#: wp-includes/pluggable.php:1478
msgid "You can see all trackbacks on this post here:"
msgstr "Vous pouvez voir tous les rétroliens de cet article ici :"
-#: wp-includes/pluggable.php:1468 wp-includes/pluggable.php:1478
-#: wp-includes/pluggable.php:1489 wp-includes/pluggable.php:1637
+#: wp-includes/pluggable.php:1477 wp-includes/pluggable.php:1487
+#: wp-includes/pluggable.php:1498 wp-includes/pluggable.php:1646
msgid "Comment: %s"
msgstr "Commentaire : %s"
-#: wp-includes/pluggable.php:1490
+#: wp-includes/pluggable.php:1499
msgid "You can see all comments on this post here:"
msgstr "Vous pouvez lire tous les commentaires de cet article ici :"
-#: wp-includes/pluggable.php:1467 wp-includes/pluggable.php:1477
-#: wp-includes/pluggable.php:1488 wp-includes/pluggable.php:1620
-#: wp-includes/pluggable.php:1628 wp-includes/pluggable.php:1636
+#: wp-includes/pluggable.php:1476 wp-includes/pluggable.php:1486
+#: wp-includes/pluggable.php:1497 wp-includes/pluggable.php:1629
+#: wp-includes/pluggable.php:1637 wp-includes/pluggable.php:1645
msgid "URL: %s"
msgstr "Adresse web : %s"
msgid "Do not pass style tags to wp_add_inline_style()."
msgstr "Ne passez pas de balises de style dans wp_add_inline_style()."
-#: wp-includes/comment-template.php:1570
+#: wp-includes/comment-template.php:1582
msgid "Reply to %s"
msgstr "Répondre à %s"
msgid "Hex Value"
msgstr "Valeur hexadécimale"
-#: wp-includes/class-wp-customize-manager.php:1862
+#: wp-includes/class-wp-customize-manager.php:1864
msgid "Header Text Color"
msgstr "Couleur du texte d’en-tête"
-#: wp-includes/class-wp-customize-manager.php:1839
+#: wp-includes/class-wp-customize-manager.php:1841
msgid "Colors"
msgstr "Couleurs"
msgid "Sorry, you cannot stick a private post."
msgstr "Désolé, vous ne pouvez pas mettre en avant un article privé."
-#: wp-includes/class-wp-customize-manager.php:1885
+#: wp-includes/class-wp-customize-manager.php:1887
#: wp-includes/customize/class-wp-customize-header-image-control.php:31
msgid "Header Image"
msgstr "Image d’en-tête"
msgid "Please enter a site title."
msgstr "Veuillez saisir un titre de site."
-#: wp-includes/class-wp-customize-manager.php:2002
+#: wp-includes/class-wp-customize-manager.php:2004
msgid "A static page"
msgstr "Une page statique"
-#: wp-includes/class-wp-customize-manager.php:1877
+#: wp-includes/class-wp-customize-manager.php:1879
msgid "Background Color"
msgstr "Couleur d’arrière-plan"
-#: wp-includes/class-wp-customize-manager.php:1927
+#: wp-includes/class-wp-customize-manager.php:1929
msgid "Background Repeat"
msgstr "Répétition de l’arrière-plan"
-#: wp-includes/class-wp-customize-manager.php:1944
+#: wp-includes/class-wp-customize-manager.php:1946
msgid "Background Position"
msgstr "Position d’arrière-plan"
-#: wp-includes/class-wp-customize-manager.php:1855
+#: wp-includes/class-wp-customize-manager.php:1857
msgid "Display Header Text"
msgstr "Afficher le texte d’en-tête"
-#: wp-includes/class-wp-customize-manager.php:1960
+#: wp-includes/class-wp-customize-manager.php:1962
msgid "Background Attachment"
msgstr "Image d’arrière-plan"
-#: wp-includes/class-wp-customize-manager.php:1905
+#: wp-includes/class-wp-customize-manager.php:1907
#: wp-includes/customize/class-wp-customize-background-image-control.php:30
msgid "Background Image"
msgstr "Image d’arrière-plan"
msgid "Sorry, you are not allowed to edit this post type."
msgstr "Désolé, vous n’avez pas l’autorisation de modifier ce type de contenu."
-#: wp-includes/class-wp-customize-manager.php:1931
+#: wp-includes/class-wp-customize-manager.php:1933
msgid "No Repeat"
msgstr "Pas de répétition"
-#: wp-includes/class-wp-customize-manager.php:1932
+#: wp-includes/class-wp-customize-manager.php:1934
msgid "Tile"
msgstr "Motif répété"
-#: wp-includes/class-wp-customize-manager.php:1933
+#: wp-includes/class-wp-customize-manager.php:1935
msgid "Tile Horizontally"
msgstr "Répétition horizontale"
-#: wp-includes/class-wp-customize-manager.php:1934
+#: wp-includes/class-wp-customize-manager.php:1936
msgid "Tile Vertically"
msgstr "Répétition verticale"
-#: wp-includes/class-wp-customize-manager.php:1965
+#: wp-includes/class-wp-customize-manager.php:1967
msgid "Fixed"
msgstr "Fixe"
-#: wp-includes/class-wp-customize-manager.php:1964
+#: wp-includes/class-wp-customize-manager.php:1966
msgid "Scroll"
msgstr "Défilant"
-#: wp-includes/class-wp-customize-manager.php:2013
+#: wp-includes/class-wp-customize-manager.php:2015
msgid "Front page"
msgstr "Page d’accueil"
-#: wp-includes/class-wp-customize-manager.php:2025
+#: wp-includes/class-wp-customize-manager.php:2027
msgid "Posts page"
msgstr "Page des articles"
msgid "— Select —"
msgstr "— Sélectionner —"
-#: wp-includes/class-wp-customize-manager.php:1983
+#: wp-includes/class-wp-customize-manager.php:1985
msgid "Static Front Page"
msgstr "Page d’accueil statique"
-#: wp-includes/class-wp-customize-manager.php:1986
+#: wp-includes/class-wp-customize-manager.php:1988
msgid "Your theme supports a static front page."
msgstr "Le thème actuel accepte les pages statiques."
-#: wp-includes/class-wp-customize-manager.php:1997
+#: wp-includes/class-wp-customize-manager.php:1999
msgid "Front page displays"
msgstr "La page d’accueil affiche"
-#: wp-includes/class-wp-customize-manager.php:2001
+#: wp-includes/class-wp-customize-manager.php:2003
msgid "Your latest posts"
msgstr "Les derniers articles"
-#: wp-includes/class-wp-customize-manager.php:1817
+#: wp-includes/class-wp-customize-manager.php:1819
msgid "Tagline"
msgstr "Slogan"
msgid "Sorry, you cannot publish this post."
msgstr "Désolé, vous ne pouvez pas publier cet article."
-#: wp-includes/pluggable.php:1496
+#: wp-includes/pluggable.php:1505
msgid "Permalink: %s"
msgstr "Permalien : %s"
msgstr "Aucune page trouvée."
#: wp-includes/post.php:1369
-msgid "No posts found in Trash."
-msgstr "Aucun article trouvé dans la corbeille."
+msgid "No pages found in Trash."
+msgstr "Aucune page trouvée dans la Corbeille."
#: wp-includes/post.php:1369
-msgid "No pages found in Trash."
-msgstr "Aucune page trouvée dans la corbeille."
+msgid "No posts found in Trash."
+msgstr "Aucun article trouvé dans la Corbeille."
#: wp-includes/admin-bar.php:530
msgid "Shortlink"
msgid "Invalid taxonomy: %s."
msgstr "Taxinomie non valide : %s"
-#: wp-includes/query.php:2549
+#: wp-includes/query.php:2552
msgid "\"caller_get_posts\" is deprecated. Use \"ignore_sticky_posts\" instead."
msgstr "« caller_get_posts » n’est plus recommandé. Utilisez « ignore_sticky_posts » à la place."
msgid "<strong>ERROR</strong>: This username is invalid because it uses illegal characters. Please enter a valid username."
msgstr "<strong>ERREUR</strong> : cet identifiant n’est pas valide, car il utilise des caractères non autorisés. Merci d’utiliser un identifiant valide."
-#: wp-includes/comment-template.php:2127
+#: wp-includes/comment-template.php:2155
msgid "Required fields are marked %s"
msgstr "Les champs obligatoires sont indiqués avec %s"
msgid "New %1$s Site: %2$s"
msgstr "Nouveau site %1$s : %2$s"
-#: wp-includes/pluggable.php:1754
+#: wp-includes/pluggable.php:1763
msgid "New user registration on your site %s:"
msgstr "Inscription d'un nouvel utilisateur sur votre site %s :"
msgid "This file is too big. Files must be less than %d KB in size."
msgstr "Ce fichier est trop gros. La taille des fichiers doit être inférieure %d Ko."
-#: wp-includes/comment-template.php:2144
+#: wp-includes/comment-template.php:2172
msgid "Your email address will not be published."
msgstr "Votre adresse de messagerie ne sera pas publiée."
msgid "Site registration has been disabled."
msgstr "Les inscriptions de sites sont désactivées."
-#: wp-includes/pluggable.php:1616
+#: wp-includes/pluggable.php:1625
msgid "A new trackback on the post \"%s\" is waiting for your approval"
msgstr "Un nouveau rétrolien sur l'article « %s » attend votre approbation"
msgid "If you’re not going to use a great site domain, leave it for a new user. Now have at it!"
msgstr "Si vous ne comptez pas utiliser ce superbe nom de domaine, laissez-le à un autre utilisateur. Et maintenant, lancez-vous !"
-#: wp-includes/pluggable.php:1484
+#: wp-includes/pluggable.php:1493
msgid "New comment on your post \"%s\""
msgstr "Nouveau commentaire sur votre article « %s »"
-#: wp-includes/pluggable.php:1464
+#: wp-includes/pluggable.php:1473
msgid "New trackback on your post \"%s\""
msgstr "Nouveau rétrolien sur votre article « %s »"
-#: wp-includes/pluggable.php:1474
+#: wp-includes/pluggable.php:1483
msgid "New pingback on your post \"%s\""
msgstr "Nouveau ping sur votre article « %s »"
-#: wp-includes/pluggable.php:1624
+#: wp-includes/pluggable.php:1633
msgid "A new pingback on the post \"%s\" is waiting for your approval"
msgstr "Un nouveau ping sur l'article « %s » attend votre approbation"
-#: wp-includes/pluggable.php:1632
+#: wp-includes/pluggable.php:1641
msgid "A new comment on the post \"%s\" is waiting for your approval"
msgstr "Un nouveau commentaire sur l'article « %s » attend votre approbation"
msgid "Too many redirects."
msgstr "Trop de redirections."
-#: wp-includes/comment-template.php:2157
+#: wp-includes/comment-template.php:2185
msgid "Cancel reply"
msgstr "Annuler la réponse."
-#: wp-includes/comment-template.php:2158
+#: wp-includes/comment-template.php:2186
msgid "Post Comment"
msgstr "Laisser un commentaire"
msgid "<strong>ERROR</strong>: Invalid username or incorrect password."
msgstr "<strong>ERREUR</strong> : l’identifiant ou le mot de passe n’est pas valide."
-#: wp-includes/pluggable.php:1502 wp-includes/pluggable.php:1645
+#: wp-includes/pluggable.php:1511 wp-includes/pluggable.php:1654
msgid "Delete it: %s"
msgstr "Le supprimer : %s"
-#: wp-includes/pluggable.php:1504 wp-includes/pluggable.php:1646
+#: wp-includes/pluggable.php:1513 wp-includes/pluggable.php:1655
msgid "Spam it: %s"
msgstr "Le marquer comme indésirable : %s"
-#: wp-includes/pluggable.php:1621
+#: wp-includes/pluggable.php:1630
msgid "Trackback excerpt: "
msgstr "Extrait du rétrolien :"
-#: wp-includes/pluggable.php:1629
+#: wp-includes/pluggable.php:1638
msgid "Pingback excerpt: "
msgstr "Extrait du ping :"
-#: wp-includes/pluggable.php:1641
+#: wp-includes/pluggable.php:1650
msgid "Approve it: %s"
msgstr "L'approuver : %s"
-#: wp-includes/pluggable.php:1648
+#: wp-includes/pluggable.php:1657
msgid "Currently %s comment is waiting for approval. Please visit the moderation panel:"
msgid_plural "Currently %s comments are waiting for approval. Please visit the moderation panel:"
msgstr[0] "En ce moment, %s commentaire attend votre approbation. Veuillez vous rendre sur le panneau de modération :"
msgstr[1] "En ce moment, %s commentaires attendent vos approbations. Veuillez vous rendre sur le panneau de modération :"
-#: wp-includes/pluggable.php:1715
+#: wp-includes/pluggable.php:1724
msgid "Password Lost and Changed for user: %s"
msgstr "Mot de passe oublié et changé pour l'utilisateur : %s"
-#: wp-includes/pluggable.php:1719
+#: wp-includes/pluggable.php:1728
msgid "[%s] Password Lost/Changed"
msgstr "[%s] Mot de passe oublié et changé"
-#: wp-includes/pluggable.php:1755 wp-includes/pluggable.php:1779
+#: wp-includes/pluggable.php:1764 wp-includes/pluggable.php:1788
#: wp-login.php:324
msgid "Username: %s"
msgstr "Identifiant : %s"
-#: wp-includes/pluggable.php:1758
+#: wp-includes/pluggable.php:1767
msgid "[%s] New User Registration"
msgstr "[%s] Inscription d'un nouvel utilisateur"
msgstr "Désolé, cet identifiant existe déjà !"
#. translators: 1: blog name, 2: post title
-#: wp-includes/pluggable.php:1481
+#: wp-includes/pluggable.php:1490
msgid "[%1$s] Pingback: \"%2$s\""
msgstr "[%1$s] Ping : « %2$s »"
-#: wp-includes/pluggable.php:1652
+#: wp-includes/pluggable.php:1661
msgid "[%1$s] Please moderate: \"%2$s\""
msgstr "[%1$s] Demande de modération pour « %2$s »"
msgid "%1$s was called with an argument that is <strong>deprecated</strong> since version %2$s with no alternative available."
msgstr "%1$s est appelé avec un argument qui est <strong>déprécié</strong> depuis la version %2$s, aucune alternative n’est disponible."
-#: wp-includes/pluggable.php:1500 wp-includes/pluggable.php:1643
+#: wp-includes/pluggable.php:1509 wp-includes/pluggable.php:1652
msgid "Trash it: %s"
msgstr "Le mettre dans la Corbeille : %s"
msgid "By: %s"
msgstr "Par : %s"
-#: wp-includes/pluggable.php:1785
+#: wp-includes/pluggable.php:1794
msgid "[%s] Your username and password info"
msgstr "[%s] Votre identifiant et votre mot de passe"
msgstr "vendredi"
#. translators: 1: blog name, 2: post title
-#: wp-includes/pluggable.php:1471
+#: wp-includes/pluggable.php:1480
msgid "[%1$s] Trackback: \"%2$s\""
msgstr "[%1$s] Rétrolien : « %2$s »"
#. translators: 1: blog name, 2: post title
-#: wp-includes/pluggable.php:1492
+#: wp-includes/pluggable.php:1501
msgid "[%1$s] Comment: \"%2$s\""
msgstr "[%1$s] Commentaire : « %2$s »"
msgid "First Post"
msgstr "Premier article"
-#: wp-includes/class-wp-customize-manager.php:1806
+#: wp-includes/class-wp-customize-manager.php:1808
#: wp-includes/class-wp-xmlrpc-server.php:467
msgid "Site Title"
msgstr "Titre du site"
msgid "(required)"
msgstr "(obligatoire)"
-#: wp-includes/comment-template.php:2123
+#: wp-includes/comment-template.php:2151
#: wp-includes/theme-compat/comments.php:102
msgid "Website"
msgstr "Site web"
msgid "Powered by WordPress, state-of-the-art semantic personal publishing platform."
msgstr "Propulsé par WordPress, plate-forme de publication personnelle sémantique de pointe."
-#: wp-includes/comment-template.php:1488
+#: wp-includes/comment-template.php:1500
msgid "Enter your password to view comments."
msgstr "Saisissez votre mot de passe pour accéder aux commentaires."
msgid "Feed for all posts filed under %s"
msgstr "Flux pour tous les articles classés dans %s"
-#: wp-includes/comment-template.php:1571
+#: wp-includes/comment-template.php:1583
msgid "Log in to Reply"
msgstr "Connectez-vous pour répondre"
-#: wp-includes/comment-template.php:1682
+#: wp-includes/comment-template.php:1694
msgid "Leave a Comment"
msgstr "Laisser un commentaire"
-#: wp-includes/comment-template.php:1683
+#: wp-includes/comment-template.php:1695
msgid "Log in to leave a Comment"
msgstr "Connectez-vous pour laisser un commentaire"
-#: wp-includes/comment-template.php:1838 wp-includes/comment-template.php:2151
+#: wp-includes/comment-template.php:1850 wp-includes/comment-template.php:2179
#: wp-includes/theme-compat/comments.php:75
msgid "Leave a Reply"
msgstr "Laisser un commentaire"
-#: wp-includes/comment-template.php:1839 wp-includes/comment-template.php:2152
+#: wp-includes/comment-template.php:1851 wp-includes/comment-template.php:2180
#: wp-includes/theme-compat/comments.php:75
msgid "Leave a Reply to %s"
msgstr "Répondre à %s"
msgid "Valid <abbr title=\"eXtensible HyperText Markup Language\">XHTML</abbr>"
msgstr "<abbr title=\"eXtensible HyperText Markup Language\">XHTML</abbr> valide"
-#: wp-includes/comment-template.php:1751
+#: wp-includes/comment-template.php:1763
msgid "Click here to cancel reply."
msgstr "Cliquez ici pour annuler la réponse."
msgid "<strong>ERROR</strong>: Please enter a username."
msgstr "<strong>ERREUR</strong> : veuillez renseigner l’identifiant."
-#: wp-includes/comment-template.php:2121
+#: wp-includes/comment-template.php:2149
#: wp-includes/theme-compat/comments-popup.php:81 wp-login.php:720
msgid "Email"
msgstr "Adresse de contact"
msgid "Tags: "
msgstr "Étiquettes : "
-#: wp-includes/comment-template.php:2141
+#: wp-includes/comment-template.php:2169
#: wp-includes/theme-compat/comments.php:82
msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
msgstr "Vous devez <a href=\"%s\">être connecté(e)</a> pour rédiger un commentaire."
msgid "URL"
msgstr "Adresse web"
-#: wp-includes/comment-template.php:1041 wp-includes/comment-template.php:2139
+#: wp-includes/comment-template.php:1041 wp-includes/comment-template.php:2167
msgctxt "noun"
msgid "Comment"
msgstr "Commentaire"
msgid "No"
msgstr "Non"
-#: wp-includes/class-wp-customize-manager.php:1948
+#: wp-includes/class-wp-customize-manager.php:1950
#: wp-includes/class-wp-editor.php:988 wp-includes/media-template.php:613
#: wp-includes/media-template.php:844 wp-includes/media-template.php:910
msgid "Left"
msgstr "Gauche"
-#: wp-includes/class-wp-customize-manager.php:1949
+#: wp-includes/class-wp-customize-manager.php:1951
#: wp-includes/class-wp-editor.php:989 wp-includes/media-template.php:616
#: wp-includes/media-template.php:847 wp-includes/media-template.php:913
msgid "Center"
msgstr "Centre"
-#: wp-includes/class-wp-customize-manager.php:1950
+#: wp-includes/class-wp-customize-manager.php:1952
#: wp-includes/class-wp-editor.php:990 wp-includes/media-template.php:619
#: wp-includes/media-template.php:850 wp-includes/media-template.php:916
msgid "Right"
msgid "Advanced"
msgstr "Avancé"
-#: wp-includes/comment-template.php:2119
+#: wp-includes/comment-template.php:2147
#: wp-includes/theme-compat/comments-popup.php:76
#: wp-includes/theme-compat/comments.php:96
msgid "Name"
msgid "No comments yet."
msgstr "Pas encore de commentaire."
-#: wp-includes/comment-template.php:1569 wp-includes/script-loader.php:488
+#: wp-includes/comment-template.php:1581 wp-includes/script-loader.php:488
msgid "Reply"
msgstr "Répondre"
msgid "Dismiss"
msgstr "Fermer"
-#: wp-includes/pluggable.php:1487 wp-includes/pluggable.php:1635
-#: wp-includes/pluggable.php:1756
+#: wp-includes/pluggable.php:1496 wp-includes/pluggable.php:1644
+#: wp-includes/pluggable.php:1765
msgid "Email: %s"
msgstr "E-mail : %s"
# This file is distributed under the same license as the Stable (latest release) package.
msgid ""
msgstr ""
-"PO-Revision-Date: 2015-11-19 09:23:43+0000\n"
+"PO-Revision-Date: 2016-02-19 15:30:23+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: GlotPress/1.0-alpha-1100\n"
"Project-Id-Version: Stable (latest release)\n"
+#. translators: %1$s expands to OnPage.org
+#: admin/pages/dashboard.php:251
+msgid "Enable %1$s indexability check"
+msgstr "Activer la vérification d’indexabilité de %1$s"
+
#. translators: 1: opens a link to a related knowledge base article. 2: closes
#. the link
#: admin/views/dashboard-widget.php:83
msgid "Yoast SEO has %1$snot fetched your site’s indexability status%2$s yet from OnPage.org"
-msgstr "Yoast SEO n'a pas encore pu %1$srécupérer l'état d'indexibilité de votre site%2$s sur OnPage.org."
-
-#: admin/views/dashboard-widget.php:58
-msgid "Your homepage can be indexed by search engines."
-msgstr "Votre page d’accueil peut être indexée par les moteurs de recherche."
+msgstr "Yoast SEO %1$sn’a pas encore récupéré l’état d’indexabilité de votre site%2$s depuis OnPage.org"
#. translators: %s$s expands to the taxonomy name and %2$s to the current index
#. value
msgid "If you want to use an image for sharing on %1$s, you can upload / choose an image or add the image URL here."
msgstr "Si vous souhaitez utiliser une image pour partager sur %1$s, vous pouvez télécharger / choisir une image ou ajouter son url ici."
-#. translators: %1$s expands to the social network name
-#: admin/taxonomy/class-taxonomy-social-fields.php:54
-msgid "If you don't want to use the meta description for sharing on %1$s but want another description there, write it here."
-msgstr "Si vous ne voulez pas utiliser la méta description pour le partage de l'article sur %1$s, mais plutôt une autre description, écrivez-la ici."
-
#. translators: %1$s expands to the social network name
#: admin/taxonomy/class-taxonomy-social-fields.php:46
msgid "If you don't want to use the title for sharing on %1$s but instead want another title there, write it here."
msgid "Strip the category base (usually %s) from the category URL."
msgstr "Retire la base de la catégorie (généralement %s) de l’URL de la catégorie."
-#: admin/views/dashboard-widget.php:93
-msgid "Fetch the current status"
-msgstr "Récupérer le statut actuel"
-
#: inc/class-wpseo-rank.php:102
msgid "No index"
msgstr "No index"
msgid "The separator defined in your theme's %s tag."
msgstr "Le séparateur défini dans la balise %s de votre thème."
-#. translators: 1: expands to OnPage.org
-#: admin/views/dashboard-widget.php:45
-msgid "Indexability check by %1$s"
-msgstr "Indexibilité vérifiée par %1$s"
-
#. translators: %1$s expands to the taxonomy name
#: admin/taxonomy/class-taxonomy-settings-fields.php:65
msgid "Include %1$s in sitemap?"
#. the link
#: admin/views/dashboard-widget.php:74
msgid "Yoast SEO has %1$snot been able to fetch your site’s indexability status%2$s from OnPage.org"
-msgstr "Yoast SEO %1$sn'a pas pu récupérer l'état de l'indexibilité de votre site%2$s depuis onPage.org."
+msgstr "Yoast SEO %1$sn’a pas pu récupérer l’état d’indexibilité de votre site%2$s depuis onPage.org."
-#: admin/onpage/class-onpage.php:54
-msgid "Once Weekly"
-msgstr "Une fois par semaine"
+#. translators: 1: expands to OnPage.org
+#: admin/views/dashboard-widget.php:45
+msgid "Indexability check by %1$s"
+msgstr "Indexibilité vérifiée par %1$s"
-#. translators: 1: expands to get_option( 'home' ).
-#: admin/onpage/class-onpage-email-presenter.php:103
-msgid "Yoast SEO has detected that %1$s can be indexed."
-msgstr "Yoast SEO a détecté que %1$s peut être indexé."
+#: admin/views/dashboard-widget.php:58
+msgid "Your homepage can be indexed by search engines."
+msgstr "Votre page d’accueil peut être indexée par les moteurs de recherche."
-#. translators: 1: expands to get_option( 'home' ).
-#: admin/onpage/class-onpage-email-presenter.php:79
-msgid "Yoast SEO has detected that %1$s can be indexed again."
-msgstr "Yoast SEO a détecté que %1$s peut à nouveau être indexé."
+#: admin/views/dashboard-widget.php:93
+msgid "Fetch the current status"
+msgstr "Récupérer l’état actuel"
-#. translators: 1: expands to get_option( 'home' ). 2: opens a link to a
-#. related knowledge base article. 3: closes the link
-#: admin/onpage/class-onpage-email-presenter.php:72
-msgid "Yoast SEO has detected that %1$s can no longer be indexed. Please note that this will make it impossible for search engines like Google and Bing to index your site. %2$sRead more about this error on our knowledge base%3$s."
-msgstr "Yoast SEO a détecté que %1$s ne pouvait plus être indexé. Veuillez noter qd’il sera impossible pour les moteurs de recherche comme Google et Bing d'indexer votre site. %2$sEn savoir plus sur cette erreur dans notre base de connaissances%3$s."
+#. translators: %1$s expands to the social network name
+#: admin/taxonomy/class-taxonomy-social-fields.php:54
+msgid "If you don't want to use the meta description for sharing on %1$s but want another description there, write it here."
+msgstr "Si vous ne voulez pas utiliser la méta description pour le partage de l’article sur %1$s, mais plutôt une autre description, écrivez-la ici."
-#. translators: 1: expands to get_option( 'home' ). 2: opens a link to a
-#. related knowledge base article. 3: closes the link
-#: admin/onpage/class-onpage-email-presenter.php:96
-msgid "Yoast SEO has detected that %1$s can not be indexed. Please note that this will make it impossible for search engines like Google and Bing to index your site. %2$sRead more about this error on our knowledge base%3$s."
-msgstr "Yoast SEO a détecté que %1$s ne peut pas être indexé. Veuillez noter qu'il sera impossible pour les moteurs de recherche comme Google ou Bing d'indexer votre site. %2$sLire plus au sujet de cette erreur dans notre base de connaissances%3$s."
+#: admin/onpage/class-onpage.php:56
+msgid "Once Weekly"
+msgstr "Une fois par semaine"
#: admin/pages/tools.php:43
msgid "Recalculate SEO scores for all pieces of content with a focus keyword."
msgid "Facebook / Opengraph metadata"
msgstr "métadonnées Facebook / Opengraph"
-#. translators: 1: opens a link to yoast.com. 2: closes the link 3: opens a
-#. link to onpage.org
-#: admin/onpage/class-onpage-email-presenter.php:54
-msgid "Indexing powered by %1$sYoast%2$s and %3$sOnPage.org%2$s."
-msgstr "Indexation propulsée par %1$sYoast%2$s et %3$sOnPage.org%2$s."
-
-#. translators: 1: expands to get_option( 'home' ).
-#: admin/onpage/class-onpage-email-presenter.php:147
-msgid "Yoast SEO alert fixed: Search engines can index %1$s."
-msgstr "Fin d'alerte Yoast SEO : les moteurs de recherche peuvent indexer %1$s."
-
-#. translators: 1: expands to get_option( 'home' ).
-#: admin/onpage/class-onpage-email-presenter.php:125
-msgid "Yoast SEO alert fixed: Search engines can index %1$s again."
-msgstr "Fin d'alerte Yoast SEO : les moteurs de recherche peuvent à nouveau indexer %1$s."
-
-#. translators: 1: expands to get_option( 'home' ).
-#: admin/onpage/class-onpage-email-presenter.php:120
-msgid "Yoast SEO alert: Search engines can no longer index %1$s!"
-msgstr "Alerte Yoast SEO : les moteurs de recherche ne peuvent plus indexer %1$s !"
-
-#. translators: 1: expands to get_option( 'home' ).
-#: admin/onpage/class-onpage-email-presenter.php:142
-msgid "Yoast SEO alert: Search engines cannot index %1$s!"
-msgstr "Alerte Yoast SEO : les moteurs de recherche ne peuvent pas indexer %1$s !"
-
-#: admin/metabox/class-metabox.php:447 admin/metabox/class-metabox.php:448
+#: admin/metabox/class-metabox.php:448 admin/metabox/class-metabox.php:449
msgid "Add-ons"
msgstr "Add-ons"
#. translators: 1: opens a link to a related knowledge base article. 2: closes
#. the link
-#: admin/onpage/class-onpage.php:97 admin/views/dashboard-widget.php:65
+#: admin/onpage/class-onpage.php:99 admin/views/dashboard-widget.php:65
msgid "%1$sYour homepage cannot be indexed by search engines%2$s. This is very bad for SEO and should be fixed."
-msgstr "%1$sVotre page d'accueil ne peut pas être indexée par les moteurs de recherche%2$s. C'est très mauvais pour le SEO et doit être résolu."
+msgstr "%1$sVotre page d’accueil ne peut pas être indexée par les moteurs de recherche%2$s. C’est très mauvais pour le SEO et doit être résolu."
-#: admin/metabox/class-metabox.php:387 admin/metabox/class-metabox.php:390
-#: admin/metabox/class-metabox.php:401 admin/metabox/class-metabox.php:402
+#: admin/metabox/class-metabox.php:388 admin/metabox/class-metabox.php:391
+#: admin/metabox/class-metabox.php:402 admin/metabox/class-metabox.php:403
#: admin/taxonomy/class-taxonomy-metabox.php:99
#: admin/taxonomy/class-taxonomy-metabox.php:102
#: admin/taxonomy/class-taxonomy-metabox.php:111
msgid "SEO score"
msgstr "Score SEO"
-#: admin/class-recalculate-scores.php:46
-msgid "Recalculating SEO scores for all pieces of content with a focus keyword."
-msgstr "Recalcule des scores SEO pour tous les contenus avec un mot-clé."
-
#. Translators: %1$s: expands to 'Yoast SEO Premium', %2$s: links to Yoast SEO
#. Premium plugin page.
#: admin/metabox/class-metabox-add-keyword-tab.php:34
#. translators: 1: is a link to 'admin_url /
#. admin.php?page=wpseo_tools&recalculate=1' 2: closing link tag
-#: admin/class-admin-init.php:186
+#: admin/class-admin-init.php:191
msgid "We've updated our SEO score algorithm. %1$sClick here to recalculate the SEO scores%2$s for all posts and pages."
msgstr "Nous avons mis à jour l’algorithme de calcul de nos scores SEO. %1$sCliquez ici pour les recalculer%2$s pour l’ensemble de vos articles et pages."
msgid "Snippet Editor"
msgstr "Éditeur de snippet"
-#: admin/metabox/class-metabox.php:54
-#: admin/taxonomy/class-taxonomy-content-fields.php:29
-msgid "This is the content analysis, a collection of content checks that analyze the content of your page. Read %sthis post%s for more info."
-msgstr "Ceci est l’analyse du contenu, un ensemble de vérifications sur celui-ci pour analyser son contenu. Référez-vous à %scet article%s pour plus d'informations."
-
#: admin/metabox/class-metabox.php:53
#: admin/taxonomy/class-taxonomy-content-fields.php:28
msgid "Content Analysis"
msgid "Buy %s »"
msgstr "Achetez %s »"
-#: admin/class-admin-init.php:372
+#: admin/class-admin-init.php:377
msgid "%s filter/action"
msgstr "%s filtre/action"
msgid "%1$s of %2$s done."
msgstr "%1$s de %2$s effectué."
-#: inc/options/class-wpseo-option-xml.php:166
-msgid "\"Max entries per sitemap page\" should be a positive number, which %s is not. Please correct."
-msgstr "\"Entrées maximum par page du sitemap\" doit être un nombre positif, %s ne l'est pas. Veuillez corriger."
+#: admin/class-recalculate-scores.php:46
+msgid "Recalculating SEO scores for all pieces of content with a focus keyword."
+msgstr "Recalcule en cours des scores SEO pour tous les contenus avec un mot-clé."
-#. translators: %1$s expands to the option name and %2$sexpands to Yoast SEO
-#: inc/options/class-wpseo-option-ms.php:153
-msgid "%1$s is not a valid choice for who should be allowed access to the %2$s settings. Value reset to the default."
-msgstr "%1$s n'est pas un choix valide pour ceux qui devraient être autorisés d'accéder aux réglages de %2$s. La valeur par défaut a été remise."
+#: admin/metabox/class-metabox.php:54
+#: admin/taxonomy/class-taxonomy-content-fields.php:29
+msgid "This is the content analysis, a collection of content checks that analyze the content of your page. Read %sthis post%s for more info."
+msgstr "Ceci est l’analyse du contenu, un ensemble de vérifications sur celui-ci pour analyser son contenu. Référez-vous à %scet article%s pour plus d’informations."
#: inc/options/class-wpseo-option-titles.php:212
msgid "%s Archive"
msgid "%s failed to check for updates because of the following error: <em>%s</em>"
msgstr "Erreur de mise à jour pour %s en raison des erreurs suivantes:<em>%s</em>"
-#: vendor/yoast/license-manager/class-plugin-license-manager.php:75
-msgid "%s is network activated, please contact your site administrator to manage the license."
-msgstr "%s nécessite une activation réseau, veuillez contacter l'administrateur de votre site pour gérer la licence."
-
-#: vendor/yoast/license-manager/class-plugin-license-manager.php:73
-msgid "%s is network activated, you can manage your license in the <a href=\"%s\">network admin license page</a>."
-msgstr "%s est activé sur tout le réseau, vous pouvez gérer votre licence sur la <a href=\"%s\">Page du réseau d'administration des licences</a>."
-
-#: inc/options/class-wpseo-option-titles.php:178
-msgid "%s, Author at %s"
-msgstr "%s, Auteur à %s"
-
#: vendor/yoast/license-manager/class-license-manager.php:430
msgid "%s: License Settings"
msgstr "%s : Réglages de la licence"
msgid "%sRenew your license now%s."
msgstr "%sRenouveler votre licence maintenant%s."
-#: vendor/yoast/license-manager/views/form.php:46
-msgid "(deactivate your license so you can activate it on another WordPress site)"
-msgstr "(désactivez votre licence pour pouvoir l'activer sur un autre site WordPress)"
-
#: vendor/yoast/license-manager/class-license-manager.php:190
msgid "<a href=\"%s\">Did you know you can upgrade your license?</a>"
msgstr "<a href=\"%s\">Saviez-vous que vous pouvez mettre à jour votre licence ?</a>"
msgid "<a href=\"%s\">Your license is expiring in %d days, would you like to extend it?</a>"
msgstr "<a href=\"%s\">Votre licence expire dans %d jours, voulez vous une extension pour votre licence ?</a>"
-#: vendor/yoast/license-manager/class-license-manager.php:138
-msgid "<b>Warning!</b> You're blocking external requests which means you won't be able to get %s updates. Please add %s to %s."
-msgstr "<b>Attention !</b> Vous bloquez des requêtes externes, ce qui signifie que vous ne serez pas en mesure d'obtenir les mises à jour de %s. Merci d'ajouter %s à %s."
-
#: vendor/yoast/license-manager/class-theme-update-manager.php:101
msgid "<strong>%s version %s</strong> is available. <a href=\"%s\" class=\"thickbox\" title=\"%s\">Check out what's new</a> or <a href=\"%s\" %s>update now</a>."
msgstr "<strong>%s la version de %s</strong> est disponible. <a href=\"%s\" class=\"thickbox\" title=\"%s\"> Découvrez les nouveautés </a> ou <a href=\"%s\" %s> mettez à jour maintenant </a>."
msgid "Activate License"
msgstr "Activer la licence"
-#: wp-seo-main.php:439
-msgid "Activation failed:"
-msgstr "Échec de l'activation :"
-
#: inc/wpseo-non-ajax-functions.php:269
msgid "AdWords External"
msgstr "AdWords External"
msgid "Facebook Debugger"
msgstr "Facebook Debugger"
-#: vendor/yoast/license-manager/class-license-manager.php:209
-msgid "Failed to activate your license, your license key seems to be invalid."
-msgstr "Impossible d'activer votre licence, votre clé de licence semble invalide."
-
#: vendor/yoast/license-manager/class-license-manager.php:235
msgid "Failed to deactivate your %s license."
msgstr "Impossible de désactiver votre licence %s."
msgid "Pinterest Rich Pins Validator"
msgstr "Validateur de Rich Pins Pinterest"
-#: vendor/yoast/license-manager/views/form.php:52
-msgid "Please enter a license key in the field below first."
-msgstr "Veuillez d'abord saisir une clé de licence dans le champ ci-dessous."
-
-#: inc/options/class-wpseo-option-internallinks.php:204
-msgid "Please select a valid post type for taxonomy \"%s\""
-msgstr "Veuillez choisir un type de contenu valide pour la taxonomie \"%s\""
-
-#: inc/options/class-wpseo-option-internallinks.php:165
-msgid "Please select a valid taxonomy for post type \"%s\""
-msgstr "Veuillez choisir une taxonomie valide pour le type de contenu \"%s\""
-
-#: vendor/yoast/i18n-module/i18n-module.php:199
-msgid "Register now »"
-msgstr "S'enregistrer maintenant »"
-
#: vendor/yoast/license-manager/class-license-manager.php:271
msgid "Request error: \"%s\" (%scommon license notices%s)"
msgstr "Erreur dans la requête :\"%s\" (%scommon notices%s de licence)"
msgid "Summary with large image"
msgstr "Résumé avec grande image"
-#. Author of the plugin/theme
-msgid "Team Yoast"
-msgstr "L'équipe Yoast"
-
-#. translators: %1$s expands to Yoast SEO, %2$s / %3$s: links to the
-#. installation manual in the Readme for the Yoast SEO code repository on
-#. GitHub
-#: wp-seo-main.php:405
-msgid "The %1$s plugin installation is incomplete. Please refer to %2$sinstallation instructions%3$s."
-msgstr "L'installation de l'extension %1$s est incomplète. Veuillez vous référer %2$saux informations d'installation%3$s."
-
#: wp-seo-main.php:383
msgid "The Standard PHP Library (SPL) extension seem to be unavailable. Please ask your web host to enable it."
msgstr "Les extensions de la Librairie Standard PHP (SPL) semblent ne pas être disponibles.Demandez à votre hébergeur de les activer."
-#: inc/options/class-wpseo-option-ms.php:173
-#: inc/options/class-wpseo-option-ms.php:183
-msgid "The default blog setting must be the numeric blog id of the blog you want to use as default."
-msgstr "Le réglage par défaut du blog doit être l'identifiant numérique du blog que vous souhaitez utiliser par défaut."
-
-#: wp-seo-main.php:429
-msgid "The filter extension seem to be unavailable. Please ask your web host to enable it."
-msgstr "L'extension \"filter\" semble indisponible. Veuillez demander à votre hébergeur de l'activer."
-
-#. Description of the plugin/theme
-msgid "The first true all-in-one SEO solution for WordPress, including on-page content analysis, XML sitemaps and much more."
-msgstr "La première solution SEO tout-en-un pour WordPress, y compris l'analyse des pages de contenu, les sitemaps XML et bien plus encore."
-
-#: admin/import/class-import-aioseo-hooks.php:28
-msgid "The plugin All-In-One-SEO has been detected. Do you want to %simport its settings%s?"
-msgstr "L'extension All-In-One-SEO a été détectée. Voulez-vous %simporter ses réglages%s ?"
-
#: admin/import/class-import-robots-meta-hooks.php:28
msgid "The plugin Robots-Meta has been detected. Do you want to %simport its settings%s."
msgstr "Le plugin Robots-Meta a été détecté. Voulez-vous %simporter sa configuration%s."
msgid "Theme License"
msgstr "Licence du thème"
-#: inc/options/class-wpseo-option-ms.php:173
-msgid "This must be an existing blog. Blog %s does not exist or has been marked as deleted."
-msgstr "Blog inexistant. Le blog %s n'existe pas ou a été marqué comme étant supprimé."
-
-#: vendor/yoast/license-manager/class-update-manager.php:153
-msgid "This site has not been activated properly on yoast.com and thus cannot check for future updates. Please activate your site with a valid license key."
-msgstr "Ce site n'a pas été activé correctement sur yoast.com et donc ne peut donc vérifier les futures mises à jour. Merci d'activer votre site avec une licence valide"
-
-#: vendor/yoast/license-manager/views/form.php:41
-msgid "Toggle license status"
-msgstr "Changer l'état de la licence"
-
#: vendor/yoast/i18n-module/i18n-module.php:194
msgid "Translation of %s"
msgstr "Traduction de %s"
msgid "Updating this theme will lose any customizations you have made. 'Cancel' to stop, 'OK' to update."
msgstr "La mise à jour du thème supprimera toutes les personalisations que vous avez faites. \"Abandonner\" pour arrêter, \"OK\" pour mettre à jour."
-#: vendor/yoast/license-manager/views/form.php:15
-msgid "We couldn't create a connection to our API to verify your license key(s). Please ask your hosting company to allow outgoing connections from your server to %s."
-msgstr "Nous n'arrivons pas à créer de connexion avec notre API pour vérifier votre clé de licence. Veuillez demander à votre hébergeur d'autoriser les connexions sortantes de votre serveur vers %s."
-
#. Plugin Name of the plugin/theme
msgid "Yoast SEO"
msgstr "Yoast SEO"
msgid "You searched for %s"
msgstr "Vous avez cherché %s"
-#: vendor/yoast/i18n-module/i18n-module.php:172
-msgid "You're using WordPress in %1$s. While %2$s has been translated to %1$s for %3$d%%, it's not been shipped with the plugin yet. You can help! Register at %4$s to help complete the translation to %1$s!"
-msgstr "Vous utilisez WordPress en %1$s. Alors que %2$s a été traduit en %1$s à %3$d%%, elle n'est donc pas encore disponible dans l'extension. Vous pouvez nous aider ! Enregistrez-vous sur %4$s pour nous aider à terminer la traduction à %1$s !"
-
-#: vendor/yoast/i18n-module/i18n-module.php:174
-msgid "You're using WordPress in a language we don't support yet. We'd love for %2$s to be translated in that language too, but unfortunately, it isn't right now. You can change that! Register at %4$s to help translate it!"
-msgstr "Vous utilisez WordPress dans une langue que nous ne supportons pas encore. Nous aimerions beaucoup que %2$s soit traduit dans cette langue, mais malheureusement ce n'est pas le cas. Vous pouvez changer cet état de fait ! Enregistrez-vous sur %4$s pour nous aider à traduire ! "
-
-#: vendor/yoast/license-manager/class-license-manager.php:203
-msgid "You've reached your activation limit. You must <a href=\"%s\">upgrade your license</a> to use it on this site."
-msgstr "Vous avez atteint votre limite d'activation. Vous devez <a href=\"%s\">mettre à jour votre licence</a> pour l'utiliser sur ce site."
-
#: vendor/yoast/license-manager/class-license-manager.php:179
msgid "Your %s license has been activated. "
msgstr "Votre licence %s a été activée."
msgid "https://yoast.com/wordpress/plugins/seo/#utm_source=wpadmin&utm_medium=plugin&utm_campaign=wpseoplugin"
msgstr "https://yoast.com/wordpress/plugins/seo/#utm_source=wpadmin&utm_medium=plugin&utm_campaign=wpseoplugin"
+#. translators: %1$s expands to Yoast SEO, %2$s / %3$s: links to the
+#. installation manual in the Readme for the Yoast SEO code repository on
+#. GitHub
+#: wp-seo-main.php:405
+msgid "The %1$s plugin installation is incomplete. Please refer to %2$sinstallation instructions%3$s."
+msgstr "L’installation de l’extension %1$s est incomplète. Veuillez vous référer %2$saux informations d’installation%3$s."
+
+#: vendor/yoast/license-manager/views/form.php:15
+msgid "We couldn't create a connection to our API to verify your license key(s). Please ask your hosting company to allow outgoing connections from your server to %s."
+msgstr "Nous n’arrivons pas à créer de connexion avec notre API pour vérifier votre clé de licence. Veuillez demander à votre hébergeur d’autoriser les connexions sortantes de votre serveur vers %s."
+
+#: wp-seo-main.php:439
+msgid "Activation failed:"
+msgstr "Échec de l’activation :"
+
+#: wp-seo-main.php:429
+msgid "The filter extension seem to be unavailable. Please ask your web host to enable it."
+msgstr "L’extension \"filter\" semble indisponible. Veuillez demander à votre hébergeur de l’activer."
+
+#: admin/import/class-import-aioseo-hooks.php:28
+msgid "The plugin All-In-One-SEO has been detected. Do you want to %simport its settings%s?"
+msgstr "L’extension All-In-One-SEO a été détectée. Voulez-vous %simporter ses réglages%s ?"
+
+#: vendor/yoast/i18n-module/i18n-module.php:172
+msgid "You're using WordPress in %1$s. While %2$s has been translated to %1$s for %3$d%%, it's not been shipped with the plugin yet. You can help! Register at %4$s to help complete the translation to %1$s!"
+msgstr "Vous utilisez WordPress en %1$s. Alors que %2$s a été traduit en %1$s à %3$d%%, elle n’est donc pas encore disponible dans l’extension. Vous pouvez nous aider ! Enregistrez-vous sur %4$s pour nous aider à terminer la traduction à %1$s !"
+
+#: vendor/yoast/i18n-module/i18n-module.php:174
+msgid "You're using WordPress in a language we don't support yet. We'd love for %2$s to be translated in that language too, but unfortunately, it isn't right now. You can change that! Register at %4$s to help translate it!"
+msgstr "Vous utilisez WordPress dans une langue que nous ne supportons pas encore. Nous aimerions beaucoup que %2$s soit traduit dans cette langue, mais malheureusement ce n’est pas le cas. Vous pouvez changer cet état de fait ! Enregistrez-vous sur %4$s pour nous aider à traduire ! "
+
+#: vendor/yoast/i18n-module/i18n-module.php:199
+msgid "Register now »"
+msgstr "S’enregistrer maintenant »"
+
+#. Author of the plugin/theme
+msgid "Team Yoast"
+msgstr "L’équipe Yoast"
+
+#: vendor/yoast/license-manager/class-license-manager.php:138
+msgid "<b>Warning!</b> You're blocking external requests which means you won't be able to get %s updates. Please add %s to %s."
+msgstr "<b>Attention !</b> Vous bloquez des requêtes externes, ce qui signifie que vous ne serez pas en mesure d’obtenir les mises à jour de %s. Merci d’ajouter %s à %s."
+
#: vendor/yoast/license-manager/class-license-manager.php:206
msgid "Your license has expired. You must <a href=\"%s\">extend your license</a> in order to use it again."
-msgstr "Votre licence a expiré. Vous devez <a href=\"%s\">renouveler votre licence</a> pour l'utiliser à nouveau."
+msgstr "Votre licence a expiré. Vous devez <a href=\"%s\">renouveler votre licence</a> pour l’utiliser à nouveau."
+
+#: vendor/yoast/license-manager/class-plugin-license-manager.php:73
+msgid "%s is network activated, you can manage your license in the <a href=\"%s\">network admin license page</a>."
+msgstr "%s est activé sur tout le réseau, vous pouvez gérer votre licence sur la <a href=\"%s\">Page du réseau d’administration des licences</a>."
+
+#: vendor/yoast/license-manager/class-plugin-license-manager.php:75
+msgid "%s is network activated, please contact your site administrator to manage the license."
+msgstr "%s nécessite une activation réseau, veuillez contacter l’administrateur de votre site pour gérer la licence."
+
+#: vendor/yoast/license-manager/class-update-manager.php:153
+msgid "This site has not been activated properly on yoast.com and thus cannot check for future updates. Please activate your site with a valid license key."
+msgstr "Ce site n’a pas été activé correctement sur yoast.com et donc ne peut donc vérifier les futures mises à jour. Merci d’activer votre site avec une licence valide"
+
+#. Description of the plugin/theme
+msgid "The first true all-in-one SEO solution for WordPress, including on-page content analysis, XML sitemaps and much more."
+msgstr "La première solution SEO tout-en-un pour WordPress, y compris l’analyse des pages de contenu, les sitemaps XML et bien plus encore."
+
+#: inc/options/class-wpseo-option-internallinks.php:165
+msgid "Please select a valid taxonomy for post type \"%s\""
+msgstr "Veuillez choisir une taxinomie valide pour le type de contenu \"%s\""
+
+#: vendor/yoast/license-manager/class-license-manager.php:203
+msgid "You've reached your activation limit. You must <a href=\"%s\">upgrade your license</a> to use it on this site."
+msgstr "Vous avez atteint votre limite d’activation. Vous devez <a href=\"%s\">mettre à jour votre licence</a> pour l’utiliser sur ce site."
+
+#: vendor/yoast/license-manager/class-license-manager.php:209
+msgid "Failed to activate your license, your license key seems to be invalid."
+msgstr "Impossible d’activer votre licence, votre clé de licence semble invalide."
+
+#: vendor/yoast/license-manager/views/form.php:41
+msgid "Toggle license status"
+msgstr "Changer l’état de la licence"
+
+#: vendor/yoast/license-manager/views/form.php:46
+msgid "(deactivate your license so you can activate it on another WordPress site)"
+msgstr "(désactivez votre licence pour pouvoir l’activer sur un autre site WordPress)"
+
+#: vendor/yoast/license-manager/views/form.php:52
+msgid "Please enter a license key in the field below first."
+msgstr "Veuillez d’abord saisir une clé de licence dans le champ ci-dessous."
+
+#: inc/options/class-wpseo-option-internallinks.php:204
+msgid "Please select a valid post type for taxonomy \"%s\""
+msgstr "Veuillez choisir un type de contenu valide pour la taxinomie \"%s\""
+
+#: inc/options/class-wpseo-option-xml.php:166
+msgid "\"Max entries per sitemap page\" should be a positive number, which %s is not. Please correct."
+msgstr "\"Entrées maximum par page du sitemap\" doit être un nombre positif, %s ne l’est pas. Veuillez corriger."
+
+#. translators: %1$s expands to the option name and %2$sexpands to Yoast SEO
+#: inc/options/class-wpseo-option-ms.php:153
+msgid "%1$s is not a valid choice for who should be allowed access to the %2$s settings. Value reset to the default."
+msgstr "%1$s n’est pas un choix valide pour ceux qui devraient être autorisés d’accéder aux réglages de %2$s. La valeur par défaut a été remise."
+
+#: inc/options/class-wpseo-option-ms.php:173
+#: inc/options/class-wpseo-option-ms.php:183
+msgid "The default blog setting must be the numeric blog id of the blog you want to use as default."
+msgstr "Le réglage par défaut du blog doit être l’identifiant numérique du blog que vous souhaitez utiliser par défaut."
+
+#: inc/options/class-wpseo-option-ms.php:173
+msgid "This must be an existing blog. Blog %s does not exist or has been marked as deleted."
+msgstr "Blog inexistant. Le blog %s n’existe pas ou a été marqué comme étant supprimé."
+
+#: inc/options/class-wpseo-option-titles.php:178
+msgid "%s, Author at %s"
+msgstr "%s, Auteur à %s"
#. translators: %1$s expands to Yoast SEO
-#: admin/pages/tools.php:52
+#: admin/pages/tools.php:51
msgid "%1$s comes with some very powerful built-in tools:"
msgstr "%1$s propose des outils intégrés très puissants :"
msgid "%s Archives"
msgstr "%s Archives"
-#: admin/pages/tools.php:71
+#: admin/pages/tools.php:70
msgid "« Back to Tools page"
msgstr "« Retour à la page Outils"
msgid ".htaccess file"
msgstr "fichier .htaccess"
-#: admin/views/tab-rss.php:29
-msgid "A link to the archive for the post author, with the authors name as anchor text."
-msgstr "Un lien vers les archives de l'auteur, avec le nom de l'auteur comme texte d'ancrage."
-
-#: admin/views/tab-rss.php:33
-msgid "A link to the post, with the title as anchor text."
-msgstr "Un lien vers l'article, avec le titre comme texte d'ancrage."
-
-#: admin/views/tab-rss.php:41
-msgid "A link to your site, with your site's name and description as anchor text."
-msgstr "Un lien vers votre site, avec le nom de votre site et la description comme texte d'ancrage."
-
-#: admin/views/tab-rss.php:37
-msgid "A link to your site, with your site's name as anchor text."
-msgstr "Un lien vers votre site, avec le nom de votre site comme texte d'ancrage."
-
-#: inc/class-wpseo-replace-vars.php:109
-msgid "A replacement variable can not start with \"%%cf_\" or \"%%ct_\" as these are reserved for the WPSEO standard variable variables for custom fields and custom taxonomies. Try making your variable name unique."
-msgstr "Une variable de remplacement ne peut commencer par \"%%cf_\" ou \"%%ct_\" car ces préfixes sont réservés aux variables standards de WPSEO pour les champs et les taxonomies personnalisés. Essayez d'utiliser un nom de variable unique."
-
#: inc/class-wpseo-replace-vars.php:106
msgid "A replacement variable can only contain alphanumeric characters, an underscore or a dash. Try renaming your variable."
msgstr "Une variable de remplacement ne peut contenir que des caractères alpha-numériques, un souligné ou un tiret. Veuillez renommer votre variable"
-#: inc/class-wpseo-replace-vars.php:118
-msgid "A replacement variable with the same name has already been registered. Try making your variable name more unique."
-msgstr "Une variable de remplacement portant le même nom est déjà enregistrée. Essayez d'utiliser un nom de variable unique."
-
#: admin/pages/social.php:118
msgid "Add Google+ specific post meta data"
msgstr "Ajouter des méta données spécifiques à Google+ "
msgid "Add Open Graph meta data"
msgstr "Ajouter les métadonnées OpenGraph"
-#. translators: %s expands to <code><head></code>
-#: admin/pages/social.php:50
-msgid "Add Open Graph meta data to your site's %s section, Facebook and other social networks use this data when your pages are shared."
-msgstr "Ajouter les méta-données d'Open Graph à la section %s de votre site, Facebook et les autres réseaux sociaux utilisent ces données lorsque vos pages sont partagées."
-
#: admin/pages/social.php:90
msgid "Add Twitter card meta data"
msgstr "Ajoute les métadonnées de carte Twitter"
msgid "Add Twitter card meta data to your site's %s section."
msgstr "Ajouter les méta-données des cartes Twitter à la section %s de votre site."
-#: frontend/class-frontend.php:1253
-msgid "Admin only notice: this page doesn't show a meta description because it doesn't have one, either write it for this page specifically or go into the SEO -> Titles menu and set up a template."
-msgstr "Avis pour l'administrateur : cette page n'affiche pas de méta description car elle n'en a pas. Vous pouvez donc soit l'ajouter spécifiquement pour cette page soit vous rendre dans vos réglages (SEO -> Titres) pour configurer un modèle."
-
-#: admin/views/tab-breadcrumbs.php:22
-msgid "Anchor text for the Homepage"
-msgstr "Texte d'ancrage pour la page d'accueil "
-
#: inc/class-wpseo-replace-vars.php:1109
msgid "Attachment caption"
msgstr "Légende de la pièce-jointe"
-#: admin/views/tab-permalinks.php:20
-msgid "Attachments to posts are stored in the database as posts, this means they're accessible under their own URL's if you do not redirect them, enabling this will redirect them to the post they were attached to."
-msgstr "Les pièces jointes des articles sont stockées dans la base de données en tant qu'articles, ce qui signifie qu'elles sont accessibles par leurs propres URL (si celle-ci ne sont pas déjà redirigées), activer cette option les redirigera vers l'article auquel elles sont attachées."
-
-#: admin/views/dashboard-widget.php:16
-msgid "Below are your published posts’ SEO scores. Now is as good a time as any to start improving some of your posts!"
-msgstr "Ci-dessous retrouvez les scores SEO de vos articles publiés. C'est le moment de commencer à améliorer certains d'entre eux !"
-
#: admin/views/tab-breadcrumbs.php:59
msgid "Blog"
msgstr "Blog"
msgid "Bold the last page in the breadcrumb"
msgstr "Mettre en gras la dernière page du fil d'Ariane"
-#: admin/views/tab-breadcrumbs.php:26
-msgid "Breadcrumb for 404 Page"
-msgstr "Fil d'Ariane pour la page 404 "
-
#: admin/pages/tools.php:24
msgid "Bulk editor"
msgstr "Éditeur par lot"
msgid "Default settings"
msgstr "Réglages par défaut"
-#: admin/views/tool-import-export.php:162
-msgid "Delete the old data after import? (recommended)"
-msgstr "Supprimer les anciennes données après l'importation ? (recommandé)"
-
#: admin/pages/social.php:62 admin/views/tool-bulk-editor.php:35
msgid "Description"
msgstr "Description "
msgid "Edit the content of your robots.txt:"
msgstr "Modifier le contenu de votre fichier robots.txt :"
-#: admin/views/tab-breadcrumbs.php:17
-msgid "Enable Breadcrumbs"
-msgstr "Activer le fil d'Ariane"
-
-#: admin/views/tab-permalinks.php:34
-msgid "Enforce a trailing slash on all category and tag URL's"
-msgstr "Forcer l'ajout d'une barre oblique à la fin de toutes les URL des catégories et des mots-clés"
-
#: admin/pages/xml-sitemaps.php:63
msgid "Entries per page"
msgstr "Entrées par page"
msgid "File editor"
msgstr "Éditeur de fichiers"
-#: admin/pages/social.php:30
-msgid "For each, pick the main account associated with this site and please enter them below:"
-msgstr "Pour chacun d'eux, choisissez le compte principal associé à ce site et enregistrez-le ci-dessous :"
-
#: admin/pages/social.php:57
msgid "Frontpage settings"
msgstr "Réglages généraux"
-#: admin/views/about.php:116
-msgid "Go to the General settings page →"
-msgstr "Aller à la page des Réglages généraux →"
-
#: admin/pages/social.php:123
msgid "Google Publisher Page"
msgstr "Page Google Publisher"
msgid "Hide WLW Manifest Links"
msgstr "Masquer les liens manifestes WLW"
-#: admin/views/tab-breadcrumbs.php:79
-msgid "How to insert breadcrumbs in your theme"
-msgstr "Comment insérer un fil d'Ariane dans votre thème ?"
-
-#. translators: %s expands to <code>.html</code>
-#: admin/views/tab-permalinks.php:33
-msgid "If you choose a permalink for your posts with %1$s, or anything else but a %2$s at the end, this will force WordPress to add a trailing slash to non-post pages nonetheless."
-msgstr "Si vous choisissez un permalien pour vos articles avec %1$s ou quelque chose d'autre qu'un \"%2$s\" à la fin, cette option va tout de même forcer WordPress à ajouter une barre oblique \"/\" à tous les articles."
-
-#: admin/views/tool-file-editor.php:140
-msgid "If you had a .htaccess file and it was editable, you could edit it from here."
-msgstr "Si vous aviez un fichier .htaccess et qu'il était modifiable, vous pourriez le modifier à partir d'ici."
-
-#: admin/views/tool-file-editor.php:88
-msgid "If you had a robots.txt file and it was editable, you could edit it from here."
-msgstr "Si vous aviez un fichier robots.txt et qu'il était modifiable, vous pourriez le modifier à partir d'ici."
-
#: admin/pages/social.php:121
msgid "If you have a Google+ page for your business, add that URL here and link it on your Google+ page's about page."
msgstr "Si vous avez une page Google+ pour votre entreprise, ajoutez cette URL ici et reliez la à votre page à propos de Google+."
-#. translators: %s expands to <code>?utm_</code>
-#: admin/views/tab-permalinks.php:44
-msgid "If you use Google Analytics campaign parameters starting with %s, check this box. However, you're advised not to use these. Instead, use the version with a hash."
-msgstr "Si vous utilisez des réglages de campagne Google Analytics commençant par %s, cochez cette case. Cependant, il n'est pas recommandé de les utiliser. Vous devriez plutôt utiliser la version avec un hash."
-
#: admin/views/tool-import-export.php:173
msgid "If you want to import data from (by now ancient) Yoast plugins, you can do so here:"
msgstr "Si vous souhaitez importer des données depuis votre (désormais ancienne) extension Yoast, vous pouvez le faire ici :"
msgid "If you've used another SEO plugin, try the %sSEO Data Transporter%s plugin to move your data into this plugin, it rocks!"
msgstr "Si vous avez utilisé une autre extension SEO auparavant, essayez %sSEO Data Transporter%s pour importer vos données, ça pulse !"
-#: admin/views/tool-file-editor.php:127
-msgid "If your .htaccess were writable, you could edit it from here."
-msgstr "Si votre fichier .htaccess était accessible en écriture, vous pourriez le modifier à partir d'ici."
-
-#: admin/views/tool-file-editor.php:101
-msgid "If your robots.txt were writable, you could edit it from here."
-msgstr "Si votre fichier robots.txt était accessible en écriture, vous pourriez le modifier à partir d'ici."
-
#: admin/pages/social.php:60 admin/pages/social.php:72
msgid "Image URL"
msgstr "URL de l’image "
msgid "Import from Yoast Breadcrumbs?"
msgstr "Importer depuis Yoast Breadcrumbs ?"
-#: admin/views/tool-import-export.php:104
-msgid "Import from other SEO plugins"
-msgstr "Importer à partir d'autres extensions de SEO"
-
-#: admin/views/tool-import-export.php:106
-msgid "Import from other plugins"
-msgstr "Importer à partir d'autres extensions"
-
#: admin/views/tool-import-export.php:126
msgid "Import settings"
msgstr "Importer les réglages"
msgid "Import settings by locating <em>settings.zip</em> and clicking \"Import settings\""
msgstr "Importer les réglages en localisant le fichier<em>settings.zip</em> et en cliquant sur \"Importer les réglages\""
-#: admin/pages/tools.php:29
-msgid "Import settings from other SEO plugins and export your settings for re-use on (another) blog."
-msgstr "Importez les réglages d'autres extensions de référencement et exportez les vôtres pour les réutiliser sur un autre site."
-
#: admin/pages/social.php:35
msgid "Instagram URL"
msgstr "URL Instagram"
msgid "LinkedIn URL"
msgstr "URL LinkedIn"
-#: admin/pages/xml-sitemaps.php:68
-msgid "Max entries per sitemap"
-msgstr "Nombre d'entrées maximal par sitemap"
-
#: admin/views/user-profile.php:25
msgid "Meta description to use for Author page"
msgstr "Méta description à utiliser pour la page Auteur"
msgid "MySpace URL"
msgstr "URL MySpace"
-#: admin/views/tool-import-export.php:146
-msgid "No doubt you've used an SEO plugin before if this site isn't new. Let's make it easy on you, you can import the data below. If you want, you can import first, check if it was imported correctly, and then import & delete. No duplicate data will be imported."
-msgstr "Vous avez probablement utilisé une autre extension SEO auparavant. Pour vous faciliter la vie, vous pouvez importer les données de votre ancienne extension SEO. Si vous voulez le faire, vous pouvez d'abord les importer, vérifiez si les données ont été importées correctement, et puis importer & supprimer. Aucune donnée en double ne sera importée."
-
#: admin/views/tab-permalinks.php:48
msgid "Other variables not to clean"
msgstr "Autres variables à ne pas nettoyer"
msgid "Page %1$d of %2$d"
msgstr "Page %1$d de %2$d"
-#: frontend/class-frontend.php:558
-#: inc/options/class-wpseo-option-titles.php:180
-msgid "Page not found"
-msgstr "La page est introuvable"
-
-#: admin/views/tab-permalinks.php:36
-msgid "People make mistakes in their links towards you sometimes, or unwanted parameters are added to the end of your URLs, this allows you to redirect them all away. Please note that while this is a feature that is actively maintained, it is known to break several plugins, and should for that reason be the first feature you disable when you encounter issues after installing this plugin."
-msgstr "Il est possible que les gens fassent des erreurs s'ils font des liens vers votre site, ou bien des paramètres indésirables sont ajoutés à vos URL. Cette option vous permet de les rediriger ailleurs. Veuillez noter que même si cette option est activement mise à jour, elle est aussi reconnue pour causer des problèmes avec d'autres extensions et donc, si vous avez un problème, il est recommandé de désactiver cette option d'abord."
-
#: admin/pages/social.php:38
msgid "Pinterest URL"
msgstr "URL Pinterest"
msgid "Please check the appropriate box below if there's a post type that you do <strong>NOT</strong> want to include in your sitemap:"
msgstr "Veuillez cocher la case appropriée ci-dessous s'il y a un type de contenu que vous ne voulez <strong>PAS</strong> inclure dans votre fichier sitemap :"
-#: admin/pages/xml-sitemaps.php:119
-msgid "Please check the appropriate box below if there's a taxonomy that you do <strong>NOT</strong> want to include in your sitemap:"
-msgstr "Veuillez cocher la case appropriée ci-dessous s'il y a une taxonomie que vous ne voulez <strong>PAS</strong> inclure dans votre fichier sitemap :"
-
#: admin/pages/xml-sitemaps.php:83
msgid "Please check the appropriate box below if there's a user role that you do <strong>NOT</strong> want to include in your sitemap:"
msgstr "Merci de cocher la case appropriée ci-dessous si un rôle d'utilisateur ne doit <strong>pas </strong> être inclus dans le plan de votre site :"
-#: admin/pages/xml-sitemaps.php:64
-msgid "Please enter the maximum number of entries per sitemap page (defaults to %s, you might want to lower this to prevent memory issues on some installs):"
-msgstr "Merci de saisir le nombre maximal d'entrées par page de sitemap (par défaut %s, vous pouvez réduire ce nombre pour éviter les problèmes de mémoire sur certaines installations) :"
-
#: admin/pages/xml-sitemaps.php:110
msgid "Posts to exclude"
msgstr "Article à exclure"
-#: admin/views/tab-breadcrumbs.php:24
-msgid "Prefix for Archive breadcrumbs"
-msgstr "Préfixe pour le fil d'Ariane des archives "
-
-#: admin/views/tab-breadcrumbs.php:25
-msgid "Prefix for Search Page breadcrumbs"
-msgstr "Préfixe pour le fil d'Ariane des pages de recherche "
-
-#: admin/views/tab-breadcrumbs.php:23
-msgid "Prefix for the breadcrumb path"
-msgstr "Préfixe pour le fil d'Ariane "
-
#: admin/views/tab-permalinks.php:45
msgid "Prevent cleaning out Google Analytics Campaign & Google AdWords Parameters."
msgstr "Evite la suppression des paramètres des campagnes Google Analytics & Google AdWords"
msgid "QA & Translations Manager"
msgstr "Responsable des traductions et des questions/réponses"
-#: admin/views/tab-permalinks.php:21
-msgid "Redirect attachment URL's to parent post URL."
-msgstr "Rediriger l'URL des pièces-jointes vers l'URL de l'article parent."
-
#: admin/views/tab-permalinks.php:37
msgid "Redirect ugly URL's to clean permalinks. (Not recommended in many cases!)"
msgstr ""
msgid "Remove Blog page from Breadcrumbs"
msgstr "Supprimer la page Blog du fil d'Ariane"
-#: admin/views/tab-permalinks.php:25
-msgid "Remove stop words from slugs."
-msgstr "Retirer les mots d'arrêts (stop words) des identifiants."
-
#: inc/class-wpseo-replace-vars.php:1114
msgid "Replaced with a custom taxonomies description"
msgstr "Remplacé par une description des taxinomies personnalisées."
msgid "Replaced with a posts custom field value"
msgstr "Remplacé par une valeur de champ personnalisé"
-#: inc/class-wpseo-replace-vars.php:1113
-msgid "Replaced with a posts custom taxonomies, comma separated."
-msgstr "Remplacé par la(les) catégorie(s) de l'article, séparé par des virgules"
-
#: inc/class-wpseo-replace-vars.php:1076
msgid "Replaced with the category description"
msgstr "Remplacé par la description de la catégorie"
msgid "Replaced with the current tag/tags"
msgstr "Remplacé par le(les) mot(s)-clé(s)"
-#: inc/class-wpseo-replace-vars.php:1101
-msgid "Replaced with the current time"
-msgstr "Remplacé par l'heure actuelle"
-
-#: inc/class-wpseo-replace-vars.php:1105
-msgid "Replaced with the current year"
-msgstr "Remplacé par l'année en cours"
-
-#: inc/class-wpseo-replace-vars.php:1067
-msgid "Replaced with the date of the post/page"
-msgstr "Remplacé par la date de l'article / de la page"
-
-#: inc/class-wpseo-replace-vars.php:1075
-msgid "Replaced with the post categories (comma separated)"
-msgstr "Remplacé par la(les) catégorie(s) de l'article (séparées par des virgules)"
-
-#: inc/class-wpseo-replace-vars.php:1095
-msgid "Replaced with the post type plural label"
-msgstr "Remplacé par l'intitulé au pluriel du type de contenu"
-
-#: inc/class-wpseo-replace-vars.php:1094
-msgid "Replaced with the post type single label"
-msgstr "Remplacé par l'intitulé au singulier du type de contenu"
-
-#: inc/class-wpseo-replace-vars.php:1097
-msgid "Replaced with the post/page ID"
-msgstr "Remplacé par l'ID de l'article / de la page"
-
-#: inc/class-wpseo-replace-vars.php:1099
-msgid "Replaced with the post/page author's 'Biographical Info'"
-msgstr "Remplacé par 'les informations biographiques' de l'auteur de l'article ou de la page"
-
-#: inc/class-wpseo-replace-vars.php:1098
-msgid "Replaced with the post/page author's 'nicename'"
-msgstr "Remplacé par le nom 'plus joli' de l'auteur de l'article / de la page"
-
-#: inc/class-wpseo-replace-vars.php:1100
-msgid "Replaced with the post/page author's userid"
-msgstr "Remplacé par l'ID de l'auteur de l'article / de la page"
-
-#: inc/class-wpseo-replace-vars.php:1072
-msgid "Replaced with the post/page excerpt (or auto-generated if it does not exist)"
-msgstr "Remplacé par l'extrait de l'article / page (ou auto-généré, si l'extrait n'existe pas)"
-
-#: inc/class-wpseo-replace-vars.php:1073
-msgid "Replaced with the post/page excerpt (without auto-generation)"
-msgstr "Remplacé par l'extrait de l'article / page (sans auto-génération)"
-
-#: inc/class-wpseo-replace-vars.php:1096
-msgid "Replaced with the post/page modified time"
-msgstr "Remplacé par l'heure de modification de l'article / de la page"
-
-#: inc/class-wpseo-replace-vars.php:1110
-msgid "Replaced with the posts focus keyword"
-msgstr "Remplacé par le mot-clé principal de l'article"
-
-#: inc/class-wpseo-replace-vars.php:1111
-msgid "Replaced with the slug which caused the 404"
-msgstr "Remplacé par l'identifiant qui a causé l'erreur 404"
-
#: inc/class-wpseo-replace-vars.php:1077
msgid "Replaced with the tag description"
msgstr "Remplacé par la description du mot-clé"
msgid "Replaced with the title of the parent page of the current page"
msgstr "Remplacé par le titre de la page parent de la présente page"
-#: inc/class-wpseo-replace-vars.php:1068
-msgid "Replaced with the title of the post/page"
-msgstr "Remplacé par le titre de l'article / de la page"
-
#: admin/views/tool-file-editor.php:77
msgid "Robots.txt"
msgstr "Robots.txt"
msgid "Search for \"%s\""
msgstr "Recherche pour \"%s\""
-#: admin/views/tab-breadcrumbs.php:21
-msgid "Separator between breadcrumbs"
-msgstr "Séparateur pour le fil d'Ariane "
-
-#. translators: %1$s expands to Yoast SEO
-#: admin/views/about.php:32
-msgid "Thank you for updating %1$s!"
-msgstr "Merci d'avoir mis à jour %1$s !"
-
#: admin/pages/social.php:93
msgid "The default card type to use"
msgstr "Le type de carte à utiliser par défaut "
msgid "The site's tag line / description"
msgstr "Slogan / Description du site"
-#: admin/pages/social.php:58
-msgid "These are the title, description and image used in the Open Graph meta tags on the front page of your site."
-msgstr "Voici le titre, la description et l'image utilisés dans le meta tag Open Graph sur la page d'accueil de votre site."
-
-#: admin/views/tab-rss.php:15
-msgid "This feature is used to automatically add content to your RSS, more specifically, it's meant to add links back to your blog and your blog posts, so dumb scrapers will automatically add these links too, helping search engines identify you as the original source of the content."
-msgstr "Cette fonctionnalité est utilisée pour ajouter automatiquement du contenu à vos flux RSS, plus spécifiquement, pour ajouter des liens vers votre blog et vos articles. Les agrégateurs de contenus vont également ajouter ces liens, aidant ainsi les moteurs de recherche à identifier votre site comme étant l'origine du contenu."
-
-#: admin/views/tab-permalinks.php:24
-msgid "This helps you to create cleaner URLs by automatically removing the stopwords from them."
-msgstr "Cela vous permet de créer des URLs plus propres en retirant automatiquement les mots d'arrêts (stop words) des URLs."
-
-#: admin/pages/social.php:74
-msgid "This image is used if the post/page being shared does not contain any images."
-msgstr "Cette image est utilisée si l'article/page partagé ne contient aucune image."
-
-#: admin/views/tab-permalinks.php:27
-msgid "This prevents threaded replies from working when the user has JavaScript disabled, but on a large site can mean a <em>huge</em> improvement in crawl efficiency for search engines when you have a lot of comments."
-msgstr "Cela empêche les commentaires imbriqués de fonctionner lorsque l'utilisateur a désactivé JavaScript, mais sur un grand site cela peut représenter une <em>énorme</em> amélioration de l'efficacité d'analyse pour les moteurs de recherche lorsque vous avez beaucoup de commentaires."
-
#: admin/pages/tools.php:35
msgid "This tool allows you to quickly change important files for your SEO, like your robots.txt and, if you have one, your .htaccess file."
msgstr "Cet outil vous permet de modifier rapidement des fichiers importants pour votre référencement, comme le fichier robots.txt ou le fichier .htaccess si vous en avez un."
-#: admin/pages/tools.php:25
-msgid "This tool allows you to quickly change titles and descriptions of your posts and pages without having to go into the editor for each page."
-msgstr "Cet outil vous permet de modifier rapidement les titres et les descriptions de vos articles et de vos pages, sans avoir à aller dans l'éditeur de chaque page."
-
#: admin/views/user-profile.php:16
msgid "Title to use for Author page"
msgstr "Titre à utiliser pour la page Auteur"
msgid "To inform Google about your social profiles, we need to know their URLs."
msgstr "Pour informer Google sur vos profils sociaux, nous avons besoin de connaître leurs URLs."
-#: admin/pages/social.php:34
-msgid "Twitter Username"
-msgstr "Nom d'utilisateur Twitter"
-
#: admin/views/tool-file-editor.php:44
msgid "Updated Robots.txt"
msgstr "Robots.txt mis à jour"
-#. translators: %1$s / %2$s: links to the breadcrumbs implementation page on
-#. the Yoast knowledgebase
-#: admin/views/tab-breadcrumbs.php:83
-msgid "Usage of this breadcrumbs feature is explained in %1$sour knowledge-base article on breadcrumbs implementation%2$s."
-msgstr "L'utilisation de la fonctionnalité du fil d'Ariane est expliquée dans l'article %1$sde notre base de connaissances sur l'intégration du fil d'Ariane%2$s."
-
#: admin/pages/xml-sitemaps.php:38
msgid "User sitemap"
msgstr "Sitemap utilisateur"
msgid "What’s new in %s"
msgstr "Quoi de neuf dans la %s"
-#. translators: %1$s and %2$s expands to anchor tags, %3$s expands to Yoast SEO
-#: admin/views/about.php:126
-msgid "While most of the development team is at %1$sYoast%2$s in the Netherlands, %3$s is created by a worldwide team."
-msgstr "Bien que presque toute l'équipe de développement de %1$sYoast%2$s soit basée aux Pays-Bas, %3$s est créé par une équipe internationale."
-
-#. Translators: %1$s: expands to '<code>1,2,99,100</code>'
-#: admin/pages/xml-sitemaps.php:109
-msgid "You can exclude posts from the sitemap by entering a comma separated string with the Post ID's. The format will become something like: %1$s."
-msgstr "Vous pouvez exclure des articles de votre sitemap en saisissant une série d'ID séparée par des virgules. Le format devrait ressemblé à cela : %1$s"
-
#: admin/pages/xml-sitemaps.php:51
msgid "You can find your XML Sitemap here: %sXML Sitemap%s"
msgstr "Vous pouvez trouver votre fichier sitemap XML ici : %sXML Sitemap%s"
msgid "You cannot edit the robots.txt file."
msgstr "Vous ne pouvez pas modifier le fichier robots.txt."
-#: inc/class-wpseo-replace-vars.php:122
-msgid "You cannot overrule a WPSEO standard variable replacement by registering a variable with the same name. Use the \"wpseo_replacements\" filter instead to adjust the replacement value."
-msgstr "Vous ne pouvez pas annuler une variable de remplacement standard de WPSEO en enregistrant une variable avec le même nom. Utilisez le filtre \"wpseo_replacements\" au lieu d'ajuster la valeur de remplacement."
-
-#: admin/pages/xml-sitemaps.php:54
-msgid "You do <strong>not</strong> need to generate the XML sitemap, nor will it take up time to generate after publishing a post."
-msgstr "Vous n'avez <strong>pas</strong> besoin de générer le fichier sitemap XML, pas plus qu'il ne faudra de temps pour le mettre à jour à chaque nouvel article."
-
-#: admin/views/tool-file-editor.php:83
-msgid "You don't have a robots.txt file, create one here:"
-msgstr "Vous n'avez pas de fichier robots.txt, vous pouvez en créer un ici :"
-
-#: admin/views/tab-permalinks.php:47
-msgid "You might have extra variables you want to prevent from cleaning out, add them here, comma separated."
-msgstr "Vous avez peut-être d'autres variables que vous ne voulez pas nettoyer, ajouter les simplement dans ici, séparées par des virgules."
-
#: admin/pages/social.php:39
msgid "YouTube URL"
msgstr "URL YouTube"
msgid "Post type archive to show in breadcrumbs for taxonomies"
msgstr "Type de contenu d’archive à afficher dans le fil d’Ariane pour les taxinomies"
-#: admin/views/tab-breadcrumbs.php:36
-msgid "Taxonomy to show in breadcrumbs for post types"
-msgstr "Taxonomie à afficher dans le fil d'Ariane pour les types de contenu"
-
-#: admin/pages/social.php:100
-msgid "Pinterest uses Open Graph metadata just like Facebook, so be sure to keep the Open Graph checkbox on the Facebook tab checked if you want to optimize your site for Pinterest."
-msgstr "Pinterest, tout comme Facebook, utilise les métadonnées Open Graph. Assurez-vous donc d'avoir coché la case Open Graph dans l'onglet Facebook si vous souhaitez optimiser votre site pour Pinterest."
-
-#: admin/views/tool-import-export.php:89
-msgid "The old data of the imported plugin was deleted successfully."
-msgstr "Les anciennes données de l'extension importée ont bien été effacées."
-
#: admin/views/tool-import-export.php:135
msgid "Include Taxonomy Metadata"
msgstr "Inclure les métadonnées des taxinomies."
-#. translators: %1$s expands to Yoast SEO
-#: admin/pages/licenses.php:73
-msgid "%1$s Extensions"
-msgstr "Extensions de %1$s"
+#: admin/pages/xml-sitemaps.php:119
+msgid "Please check the appropriate box below if there's a taxonomy that you do <strong>NOT</strong> want to include in your sitemap:"
+msgstr "Veuillez cocher la case appropriée ci-dessous s’il y a une taxinomie que vous ne voulez <strong>PAS</strong> inclure dans votre fichier sitemap :"
-#: admin/pages/metas.php:111 admin/pages/metas.php:171
-msgid "%1$s Meta Box"
-msgstr "%1$s Méta Box"
+#: admin/views/tab-breadcrumbs.php:36
+msgid "Taxonomy to show in breadcrumbs for post types"
+msgstr "Taxinomie à afficher dans le fil d’Ariane pour les types de contenu"
-#. translators: %1$s expands to Yoast SEO, %2$s expands to Google Analytics by
-#. Yoast
-#: admin/google_search_console/class-gsc-service.php:146
-msgid "%1$s detected you’re using a version of %2$s which is not compatible with %1$s. Please update %2$s to the latest version to use this feature."
-msgstr "%1$s a détecté que vous utiliser une version de %2$s qui est incompatible avec %1$s. Veuillez mettre à jour %2$s pour utiliser cette fonctionnalité."
+#: inc/class-wpseo-replace-vars.php:109
+msgid "A replacement variable can not start with \"%%cf_\" or \"%%ct_\" as these are reserved for the WPSEO standard variable variables for custom fields and custom taxonomies. Try making your variable name unique."
+msgstr "Une variable de remplacement ne peut commencer par \"%%cf_\" ou \"%%ct_\" car ces préfixes sont réservés aux variables standards de WPSEO pour les champs et les taxinomies personnalisés. Essayez d’utiliser un nom de variable unique."
-#. translators: %1$s expands to Yoast SEO
-#: admin/pages/metas.php:42
-msgid "%1$s has auto-detected whether it needs to force rewrite the titles for your pages, if you think it's wrong and you know what you're doing, you can change the setting here."
-msgstr "%1$s détecte automatiquement s'il a besoin de forcer la réécriture des titres de vos pages, si vous pensez que c'est incorrect et que vous savez ce que vous faites, vous pouvez modifier ce réglage ici."
+#: admin/views/dashboard-widget.php:16
+msgid "Below are your published posts’ SEO scores. Now is as good a time as any to start improving some of your posts!"
+msgstr "Ci-dessous retrouvez les scores SEO de vos articles publiés. C’est le moment de commencer à améliorer certains d’entre eux !"
-#: admin/pages/network.php:35
-msgid "%s restored to default SEO settings."
-msgstr "%s a été rétabli au réglages SEO par défaut."
+#. translators: %s expands to <code>?utm_</code>
+#: admin/views/tab-permalinks.php:44
+msgid "If you use Google Analytics campaign parameters starting with %s, check this box. However, you're advised not to use these. Instead, use the version with a hash."
+msgstr "Si vous utilisez des réglages de campagne Google Analytics commençant par %s, cochez cette case. Cependant, il n’est pas recommandé de les utiliser. Vous devriez plutôt utiliser la version avec un hash."
-#: admin/pages/metas.php:220
-msgid "404 pages"
-msgstr "Pages 404"
+#. Translators: %1$s: expands to '<code>1,2,99,100</code>'
+#: admin/pages/xml-sitemaps.php:109
+msgid "You can exclude posts from the sitemap by entering a comma separated string with the Post ID's. The format will become something like: %1$s."
+msgstr "Vous pouvez exclure des articles de votre sitemap en saisissant une série d’ID séparée par des virgules. Le format devrait ressemblé à cela : %1$s"
-#: admin/pages/social.php:20
-msgid "Accounts"
-msgstr "Comptes"
+#. translators: %1$s expands to Yoast SEO
+#: admin/views/about.php:32
+msgid "Thank you for updating %1$s!"
+msgstr "Merci d’avoir mis à jour %1$s !"
-#. translators: %s expands to <code>noodp</code>
-#. translators: %s expands to <code>noydir</code>
-#: admin/pages/metas.php:238 admin/pages/metas.php:242
-msgid "Add %s meta robots tag sitewide"
-msgstr "Ajouter des méta étiquettes de robots %s sur tout le site"
+#. translators: %s expands to <code><head></code>
+#: admin/pages/social.php:50
+msgid "Add Open Graph meta data to your site's %s section, Facebook and other social networks use this data when your pages are shared."
+msgstr "Ajouter les méta-données d’Open Graph à la section %s de votre site, Facebook et les autres réseaux sociaux utilisent ces données lorsque vos pages sont partagées."
-#. translators: %s expands to <code>noindex, follow</code>
-#: admin/pages/metas.php:203
-msgid "Add %s to the author archives"
-msgstr "Ajouter %s aux archives de l'auteur"
+#. translators: %1$s / %2$s: links to the breadcrumbs implementation page on
+#. the Yoast knowledgebase
+#: admin/views/tab-breadcrumbs.php:83
+msgid "Usage of this breadcrumbs feature is explained in %1$sour knowledge-base article on breadcrumbs implementation%2$s."
+msgstr "L’utilisation de la fonctionnalité du fil d’Ariane est expliquée dans l’article %1$sde notre base de connaissances sur l’intégration du fil d’Ariane%2$s."
-#. translators: %s expands to <code>noindex, follow</code>
-#: admin/pages/metas.php:209
-msgid "Add %s to the date-based archives"
-msgstr "Ajoutez %s aux archives basées sur la date"
+#: admin/pages/social.php:30
+msgid "For each, pick the main account associated with this site and please enter them below:"
+msgstr "Pour chacun d’eux, choisissez le compte principal associé à ce site et enregistrez-le ci-dessous :"
-#: admin/pages/dashboard.php:234
-msgid "Alexa Verification ID"
-msgstr "ID de vérification Alexa "
+#: admin/pages/social.php:34
+msgid "Twitter Username"
+msgstr "Nom d’utilisateur Twitter"
-#: admin/pages/dashboard.php:203
-msgid "Alternate name"
-msgstr "Autre nom"
+#: admin/pages/social.php:100
+msgid "Pinterest uses Open Graph metadata just like Facebook, so be sure to keep the Open Graph checkbox on the Facebook tab checked if you want to optimize your site for Pinterest."
+msgstr "Pinterest, tout comme Facebook, utilise les métadonnées Open Graph. Assurez-vous donc d’avoir coché la case Open Graph dans l’onglet Facebook si vous souhaitez optimiser votre site pour Pinterest."
-#: admin/pages/licenses.php:30
-msgid "Are you in Google News? Increase your traffic from Google News by optimizing for it!"
-msgstr "Etes vous sur Google News ? Augmentez le trafic de Google News grâce à l'optimisation!"
+#: admin/pages/tools.php:25
+msgid "This tool allows you to quickly change titles and descriptions of your posts and pages without having to go into the editor for each page."
+msgstr "Cet outil vous permet de modifier rapidement les titres et les descriptions de vos articles et de vos pages, sans avoir à aller dans l’éditeur de chaque page."
-#: admin/pages/dashboard.php:190
-msgid "Are you sure you want to reset your SEO settings?"
-msgstr "Êtes vous sûr de vouloir réinitialiser vos réglages de SEO ?"
+#: admin/pages/tools.php:29
+msgid "Import settings from other SEO plugins and export your settings for re-use on (another) blog."
+msgstr "Importez les réglages d’autres extensions de référencement et exportez les vôtres pour les réutiliser sur un autre site."
-#: admin/pages/metas.php:99
-msgid "As you are redirecting attachment URLs to parent post URLs, these settings will currently only have an effect on <strong>unattached</strong> media items!"
-msgstr "Comme vous redirigre l'URL de la pièce jointe vers l'URL parent, ces paramètres n'auront d'effet que sur les médias <strong>non inclus</strong>"
+#: admin/pages/xml-sitemaps.php:68
+msgid "Max entries per sitemap"
+msgstr "Nombre d’entrées maximal par sitemap"
-#: admin/google_search_console/views/gsc-display.php:40
-msgid "Authenticate"
-msgstr "S'authentifier"
+#: admin/views/about.php:116
+msgid "Go to the General settings page →"
+msgstr "Aller aux Réglages généraux →"
-#: admin/pages/metas.php:182
-msgid "Author Archives"
-msgstr "Archives de l'auteur"
+#. translators: %1$s and %2$s expands to anchor tags, %3$s expands to Yoast SEO
+#: admin/views/about.php:126
+msgid "While most of the development team is at %1$sYoast%2$s in the Netherlands, %3$s is created by a worldwide team."
+msgstr "Bien que presque toute l’équipe de développement de %1$sYoast%2$s soit basée aux Pays-Bas, %3$s est créé par une équipe internationale."
+
+#: admin/views/tool-import-export.php:104
+msgid "Import from other SEO plugins"
+msgstr "Importer à partir d’autres extensions de SEO"
+
+#: admin/views/tool-import-export.php:106
+msgid "Import from other plugins"
+msgstr "Importer à partir d’autres extensions"
+
+#: admin/views/tool-import-export.php:89
+msgid "The old data of the imported plugin was deleted successfully."
+msgstr "Les anciennes données de l’extension importée ont bien été effacées."
+
+#: inc/class-wpseo-replace-vars.php:1099
+msgid "Replaced with the post/page author's 'Biographical Info'"
+msgstr "Remplacé par ’les informations biographiques’ de l’auteur de l’article ou de la page"
+
+#: admin/pages/social.php:58
+msgid "These are the title, description and image used in the Open Graph meta tags on the front page of your site."
+msgstr "Voici le titre, la description et l’image utilisés dans le meta tag Open Graph sur la page d’accueil de votre site."
+
+#: inc/class-wpseo-replace-vars.php:118
+msgid "A replacement variable with the same name has already been registered. Try making your variable name more unique."
+msgstr "Une variable de remplacement portant le même nom est déjà enregistrée. Essayez d’utiliser un nom de variable unique."
+
+#: inc/class-wpseo-replace-vars.php:122
+msgid "You cannot overrule a WPSEO standard variable replacement by registering a variable with the same name. Use the \"wpseo_replacements\" filter instead to adjust the replacement value."
+msgstr "Vous ne pouvez pas annuler une variable de remplacement standard de WPSEO en enregistrant une variable avec le même nom. Utilisez le filtre \"wpseo_replacements\" au lieu d’ajuster la valeur de remplacement."
+
+#: admin/views/tool-file-editor.php:83
+msgid "You don't have a robots.txt file, create one here:"
+msgstr "Vous n’avez pas de fichier robots.txt, vous pouvez en créer un ici :"
+
+#: admin/views/tab-permalinks.php:47
+msgid "You might have extra variables you want to prevent from cleaning out, add them here, comma separated."
+msgstr "Vous avez peut-être d’autres variables que vous ne voulez pas nettoyer, ajouter les simplement dans ici, séparées par des virgules."
+
+#: admin/pages/xml-sitemaps.php:64
+msgid "Please enter the maximum number of entries per sitemap page (defaults to %s, you might want to lower this to prevent memory issues on some installs):"
+msgstr "Merci de saisir le nombre maximal d’entrées par page de sitemap (par défaut %s, vous pouvez réduire ce nombre pour éviter les problèmes de mémoire sur certaines installations) :"
+
+#: admin/views/tab-permalinks.php:24
+msgid "This helps you to create cleaner URLs by automatically removing the stopwords from them."
+msgstr "Cela vous permet de créer des URLs plus propres en retirant automatiquement les mots d’arrêts (stop words) des URLs."
+
+#: admin/views/tab-permalinks.php:25
+msgid "Remove stop words from slugs."
+msgstr "Retirer les mots d’arrêts (stop words) des identifiants."
+
+#: inc/class-wpseo-replace-vars.php:1111
+msgid "Replaced with the slug which caused the 404"
+msgstr "Remplacé par l’identifiant qui a causé l’erreur 404"
+
+#: admin/views/tool-file-editor.php:140
+msgid "If you had a .htaccess file and it was editable, you could edit it from here."
+msgstr "Si vous aviez un fichier .htaccess et qu’il était modifiable, vous pourriez le modifier à partir d’ici."
+
+#: admin/views/tool-file-editor.php:88
+msgid "If you had a robots.txt file and it was editable, you could edit it from here."
+msgstr "Si vous aviez un fichier robots.txt et qu’il était modifiable, vous pourriez le modifier à partir d’ici."
+
+#: admin/views/tab-permalinks.php:27
+msgid "This prevents threaded replies from working when the user has JavaScript disabled, but on a large site can mean a <em>huge</em> improvement in crawl efficiency for search engines when you have a lot of comments."
+msgstr "Cela empêche les commentaires imbriqués de fonctionner lorsque l’utilisateur a désactivé JavaScript, mais sur un grand site cela peut représenter une <em>énorme</em> amélioration de l’efficacité d’analyse pour les moteurs de recherche lorsque vous avez beaucoup de commentaires."
+
+#: inc/class-wpseo-replace-vars.php:1094
+msgid "Replaced with the post type single label"
+msgstr "Remplacé par l’intitulé au singulier du type de contenu"
+
+#: inc/class-wpseo-replace-vars.php:1095
+msgid "Replaced with the post type plural label"
+msgstr "Remplacé par l’intitulé au pluriel du type de contenu"
+
+#: inc/class-wpseo-replace-vars.php:1113
+msgid "Replaced with a posts custom taxonomies, comma separated."
+msgstr "Remplacé par la(les) catégorie(s) de l’article, séparé par des virgules"
+
+#: admin/pages/social.php:74
+msgid "This image is used if the post/page being shared does not contain any images."
+msgstr "Cette image est utilisée si l’article/page partagé ne contient aucune image."
+
+#: admin/views/tool-import-export.php:146
+msgid "No doubt you've used an SEO plugin before if this site isn't new. Let's make it easy on you, you can import the data below. If you want, you can import first, check if it was imported correctly, and then import & delete. No duplicate data will be imported."
+msgstr "Vous avez probablement utilisé une autre extension SEO auparavant. Pour vous faciliter la vie, vous pouvez importer les données de votre ancienne extension SEO. Si vous voulez le faire, vous pouvez d’abord les importer, vérifiez si les données ont été importées correctement, et puis importer & supprimer. Aucune donnée en double ne sera importée."
+
+#: admin/views/tool-import-export.php:162
+msgid "Delete the old data after import? (recommended)"
+msgstr "Supprimer les anciennes données après l’importation ? (recommandé)"
+
+#: inc/class-wpseo-replace-vars.php:1067
+msgid "Replaced with the date of the post/page"
+msgstr "Remplacé par la date de l’article / de la page"
+
+#: inc/class-wpseo-replace-vars.php:1068
+msgid "Replaced with the title of the post/page"
+msgstr "Remplacé par le titre de l’article / de la page"
+
+#: inc/class-wpseo-replace-vars.php:1072
+msgid "Replaced with the post/page excerpt (or auto-generated if it does not exist)"
+msgstr "Remplacé par l’extrait de l’article / page (ou auto-généré, si l’extrait n’existe pas)"
+
+#: inc/class-wpseo-replace-vars.php:1073
+msgid "Replaced with the post/page excerpt (without auto-generation)"
+msgstr "Remplacé par l’extrait de l’article / page (sans auto-génération)"
+
+#: inc/class-wpseo-replace-vars.php:1075
+msgid "Replaced with the post categories (comma separated)"
+msgstr "Remplacé par la(les) catégorie(s) de l’article (séparées par des virgules)"
+
+#: inc/class-wpseo-replace-vars.php:1096
+msgid "Replaced with the post/page modified time"
+msgstr "Remplacé par l’heure de modification de l’article / de la page"
+
+#: inc/class-wpseo-replace-vars.php:1097
+msgid "Replaced with the post/page ID"
+msgstr "Remplacé par l’ID de l’article / de la page"
+
+#: inc/class-wpseo-replace-vars.php:1098
+msgid "Replaced with the post/page author's 'nicename'"
+msgstr "Remplacé par le nom ’plus joli’ de l’auteur de l’article / de la page"
+
+#: inc/class-wpseo-replace-vars.php:1100
+msgid "Replaced with the post/page author's userid"
+msgstr "Remplacé par l’ID de l’auteur de l’article / de la page"
+
+#: inc/class-wpseo-replace-vars.php:1101
+msgid "Replaced with the current time"
+msgstr "Remplacé par l’heure actuelle"
+
+#: inc/class-wpseo-replace-vars.php:1105
+msgid "Replaced with the current year"
+msgstr "Remplacé par l’année en cours"
+
+#: inc/class-wpseo-replace-vars.php:1110
+msgid "Replaced with the posts focus keyword"
+msgstr "Remplacé par le mot-clé principal de l’article"
+
+#: admin/views/tab-permalinks.php:34
+msgid "Enforce a trailing slash on all category and tag URL's"
+msgstr "Forcer l’ajout d’une barre oblique à la fin de toutes les URL des catégories et des mots-clés"
+
+#. translators: %s expands to <code>.html</code>
+#: admin/views/tab-permalinks.php:33
+msgid "If you choose a permalink for your posts with %1$s, or anything else but a %2$s at the end, this will force WordPress to add a trailing slash to non-post pages nonetheless."
+msgstr "Si vous choisissez un permalien pour vos articles avec %1$s ou quelque chose d’autre qu’un \"%2$s\" à la fin, cette option va tout de même forcer WordPress à ajouter une barre oblique \"/\" à tous les articles."
+
+#: admin/views/tab-permalinks.php:21
+msgid "Redirect attachment URL's to parent post URL."
+msgstr "Rediriger l’URL des pièces-jointes vers l’URL de l’article parent."
+
+#: admin/views/tab-permalinks.php:20
+msgid "Attachments to posts are stored in the database as posts, this means they're accessible under their own URL's if you do not redirect them, enabling this will redirect them to the post they were attached to."
+msgstr "Les pièces jointes des articles sont stockées dans la base de données en tant qu’articles, ce qui signifie qu’elles sont accessibles par leurs propres URL (si celle-ci ne sont pas déjà redirigées), activer cette option les redirigera vers l’article auquel elles sont attachées."
+
+#: admin/views/tab-permalinks.php:36
+msgid "People make mistakes in their links towards you sometimes, or unwanted parameters are added to the end of your URLs, this allows you to redirect them all away. Please note that while this is a feature that is actively maintained, it is known to break several plugins, and should for that reason be the first feature you disable when you encounter issues after installing this plugin."
+msgstr "Il est possible que les gens fassent des erreurs s’ils font des liens vers votre site, ou bien des paramètres indésirables sont ajoutés à vos URL. Cette option vous permet de les rediriger ailleurs. Veuillez noter que même si cette option est activement mise à jour, elle est aussi reconnue pour causer des problèmes avec d’autres extensions et donc, si vous avez un problème, il est recommandé de désactiver cette option d’abord."
+
+#: admin/views/tab-breadcrumbs.php:17
+msgid "Enable Breadcrumbs"
+msgstr "Activer le fil d’Ariane"
+
+#: admin/views/tab-breadcrumbs.php:21
+msgid "Separator between breadcrumbs"
+msgstr "Séparateur pour le fil d’Ariane "
+
+#: admin/views/tab-breadcrumbs.php:22
+msgid "Anchor text for the Homepage"
+msgstr "Texte d’ancrage pour la page d’accueil "
+
+#: admin/views/tab-breadcrumbs.php:23
+msgid "Prefix for the breadcrumb path"
+msgstr "Préfixe pour le fil d’Ariane "
+
+#: admin/views/tab-breadcrumbs.php:24
+msgid "Prefix for Archive breadcrumbs"
+msgstr "Préfixe pour le fil d’Ariane des archives "
+
+#: admin/views/tab-breadcrumbs.php:25
+msgid "Prefix for Search Page breadcrumbs"
+msgstr "Préfixe pour le fil d’Ariane des pages de recherche "
+
+#: admin/views/tab-breadcrumbs.php:26
+msgid "Breadcrumb for 404 Page"
+msgstr "Fil d’Ariane pour la page 404 "
+
+#: admin/views/tab-breadcrumbs.php:79
+msgid "How to insert breadcrumbs in your theme"
+msgstr "Comment insérer un fil d’Ariane dans votre thème ?"
+
+#: admin/views/tool-file-editor.php:101
+msgid "If your robots.txt were writable, you could edit it from here."
+msgstr "Si votre fichier robots.txt était accessible en écriture, vous pourriez le modifier à partir d’ici."
+
+#: admin/views/tool-file-editor.php:127
+msgid "If your .htaccess were writable, you could edit it from here."
+msgstr "Si votre fichier .htaccess était accessible en écriture, vous pourriez le modifier à partir d’ici."
+
+#: admin/views/tab-rss.php:15
+msgid "This feature is used to automatically add content to your RSS, more specifically, it's meant to add links back to your blog and your blog posts, so dumb scrapers will automatically add these links too, helping search engines identify you as the original source of the content."
+msgstr "Cette fonctionnalité est utilisée pour ajouter automatiquement du contenu à vos flux RSS, plus spécifiquement, pour ajouter des liens vers votre blog et vos articles. Les agrégateurs de contenus vont également ajouter ces liens, aidant ainsi les moteurs de recherche à identifier votre site comme étant l’origine du contenu."
+
+#: admin/views/tab-rss.php:29
+msgid "A link to the archive for the post author, with the authors name as anchor text."
+msgstr "Un lien vers les archives de l’auteur, avec le nom de l’auteur comme texte d’ancrage."
+
+#: admin/views/tab-rss.php:33
+msgid "A link to the post, with the title as anchor text."
+msgstr "Un lien vers l’article, avec le titre comme texte d’ancrage."
+
+#: admin/views/tab-rss.php:37
+msgid "A link to your site, with your site's name as anchor text."
+msgstr "Un lien vers votre site, avec le nom de votre site comme texte d’ancrage."
+
+#: admin/views/tab-rss.php:41
+msgid "A link to your site, with your site's name and description as anchor text."
+msgstr "Un lien vers votre site, avec le nom de votre site et la description comme texte d’ancrage."
+
+#: admin/pages/xml-sitemaps.php:54
+msgid "You do <strong>not</strong> need to generate the XML sitemap, nor will it take up time to generate after publishing a post."
+msgstr "Vous n’avez <strong>pas</strong> besoin de générer le fichier sitemap XML, pas plus qu’il ne faudra de temps pour le mettre à jour à chaque nouvel article."
+
+#: frontend/class-frontend.php:558
+#: inc/options/class-wpseo-option-titles.php:180
+msgid "Page not found"
+msgstr "Page non trouvée"
+
+#: frontend/class-frontend.php:1253
+msgid "Admin only notice: this page doesn't show a meta description because it doesn't have one, either write it for this page specifically or go into the SEO -> Titles menu and set up a template."
+msgstr "Avis pour l’administrateur : cette page n’affiche pas de méta description car elle n’en a pas. Vous pouvez donc soit l’ajouter spécifiquement pour cette page soit vous rendre dans vos réglages (SEO -> Titres) pour configurer un modèle."
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/pages/licenses.php:73
+msgid "%1$s Extensions"
+msgstr "Extensions de %1$s"
+
+#: admin/pages/metas.php:111 admin/pages/metas.php:171
+msgid "%1$s Meta Box"
+msgstr "%1$s Méta Box"
+
+#. translators: %1$s expands to Yoast SEO, %2$s expands to Google Analytics by
+#. Yoast
+#: admin/google_search_console/class-gsc-service.php:146
+msgid "%1$s detected you’re using a version of %2$s which is not compatible with %1$s. Please update %2$s to the latest version to use this feature."
+msgstr "%1$s a détecté que vous utiliser une version de %2$s qui est incompatible avec %1$s. Veuillez mettre à jour %2$s pour utiliser cette fonctionnalité."
+
+#: admin/pages/network.php:35
+msgid "%s restored to default SEO settings."
+msgstr "%s a été rétabli au réglages SEO par défaut."
+
+#: admin/pages/metas.php:220
+msgid "404 pages"
+msgstr "Pages 404"
+
+#: admin/pages/social.php:20
+msgid "Accounts"
+msgstr "Comptes"
+
+#. translators: %s expands to <code>noodp</code>
+#. translators: %s expands to <code>noydir</code>
+#: admin/pages/metas.php:238 admin/pages/metas.php:242
+msgid "Add %s meta robots tag sitewide"
+msgstr "Ajouter des méta étiquettes de robots %s sur tout le site"
+
+#. translators: %s expands to <code>noindex, follow</code>
+#: admin/pages/metas.php:203
+msgid "Add %s to the author archives"
+msgstr "Ajouter %s aux archives de l'auteur"
+
+#. translators: %s expands to <code>noindex, follow</code>
+#: admin/pages/metas.php:209
+msgid "Add %s to the date-based archives"
+msgstr "Ajoutez %s aux archives basées sur la date"
#: admin/pages/dashboard.php:235
-msgid "Bing Webmaster Tools"
-msgstr "Outils pour webmasters de Bing "
+msgid "Alexa Verification ID"
+msgstr "ID de vérification Alexa "
+
+#: admin/pages/dashboard.php:204
+msgid "Alternate name"
+msgstr "Autre nom"
+
+#: admin/pages/dashboard.php:191
+msgid "Are you sure you want to reset your SEO settings?"
+msgstr "Êtes vous sûr de vouloir réinitialiser vos réglages de SEO ?"
#: admin/pages/network.php:38
msgid "Blog %s not found."
msgid "Blog ID"
msgstr "ID du blog"
-#: admin/pages/advanced.php:16
-msgid "Breadcrumbs"
-msgstr "Fils d'Ariane"
-
-#: admin/pages/network.php:109
-msgid "Choose the site whose settings you want to use as default for all sites that are added to your network. If you choose 'None', the normal plugin defaults will be used."
-msgstr "Choisissez le site dont les réglages serviront de base à tous les nouveaux sites de votre réseau. Si vous choisissez 'Aucun', les réglages par défaut de WordPress SEO seront utilisés."
-
-#: admin/pages/metas.php:56
-msgid "Choose the symbol to use as your title separator. This will display, for instance, between your post title and site name."
-msgstr "Choisisssez le symbole à utiliser en temps que séparateur. Il apparaîtra, par exemple, entre le titre de l'article et le nom du site."
-
-#: admin/pages/dashboard.php:214
+#: admin/pages/dashboard.php:215
msgid "Choose whether you're a company or person"
msgstr "Précisez si vous êtes une société ou une personne"
-#: admin/pages/dashboard.php:215 admin/pages/dashboard.php:220
+#: admin/pages/dashboard.php:216 admin/pages/dashboard.php:221
msgid "Company"
msgstr "Société"
msgid "Company Info"
msgstr "Informations sur la société"
-#: admin/pages/dashboard.php:223
+#: admin/pages/dashboard.php:224
msgid "Company Logo"
msgstr "Logo de la société"
-#: admin/pages/dashboard.php:222
+#: admin/pages/dashboard.php:223
msgid "Company Name"
msgstr "Nom de la société"
-#: admin/pages/dashboard.php:205 admin/pages/dashboard.php:213
+#: admin/pages/dashboard.php:206 admin/pages/dashboard.php:214
msgid "Company or person"
msgstr "Société ou personne "
-#: admin/google_search_console/class-gsc.php:128
-msgid "Crawl errors per page"
-msgstr "Erreurs d'exploration par page"
-
#: admin/google_search_console/class-gsc-table.php:206
msgid "Create a redirect"
msgstr "Créer une redirection"
msgid "Date Archives"
msgstr "Archives par date"
-#: admin/pages/metas.php:109
-msgid "Date in Snippet Preview"
-msgstr "Date dans la prévisualisation de l'élément "
-
#: admin/pages/metas.php:206
msgid "Date-based archives could in some cases also be seen as duplicate content."
msgstr "Les archives basées sur la date pourraient, dans certains cas également être considérées comme du contenu dupliqué."
msgstr "Ordinateur"
#. translators: %1$s expands to Yoast SEO
-#: admin/pages/dashboard.php:244
+#: admin/pages/dashboard.php:245
msgid "Disable the Advanced part of the %1$s meta box"
msgstr "Désactiver les options avancées de la boite méta de %1$s."
msgid "Duplicate content prevention"
msgstr "Prévention de contenu dupliqué"
-#: admin/pages/dashboard.php:72
-msgid "Earlier found meta description was not found in file. Renewed the description test data."
-msgstr "Les méta descriptions précédentes n'ont pas été trouvé dans le fichier.Mise en place des données de test."
-
-#. translators: %1$s expands to Yoast SEO
-#: admin/pages/dashboard.php:112
-msgid "Either delete them (this can be done with the \"Fix it\" button) or disable %1$s XML sitemaps."
-msgstr "Vous pouvez soit les supprimer (ce qui peut être fait avec le bouton \"Corriger\") soit désactiver les sitemaps XML de %1$s."
-
#: admin/pages/metas.php:40
msgid "Enable force rewrite titles"
msgstr "Activer la réécriture forcée des titres "
-#: admin/pages/network.php:113
-msgid "Enter the %sSite ID%s for the site whose settings you want to use as default for all sites that are added to your network. Leave empty for none (i.e. the normal plugin defaults will be used)."
-msgstr "Saisissez '%sID du site%s que vous utiliserez comme base pour les réglages de tous les nouveaux sites ajoutés à votre réseau. Laissez vide pour n'en choisir aucun. (Les réglages par défaut de WordPress SEO seront alors utilisés)."
-
#: admin/google_search_console/views/gsc-create-redirect.php:46
msgid "Error: a redirect for this URL already exists"
msgstr "Erreur : une redirection pour cette adresse existe déjà."
-#: admin/google_search_console/class-gsc.php:282
-msgid "Errors that occurred only when your site was crawled by Googlebot-Mobile (errors didn't appear for desktop)."
-msgstr "Les erreurs qui se sont produites lors de l'exploration du Googlebot (les erreurs n'apparaissent pas pour les desktops)."
-
-#: admin/google_search_console/class-gsc.php:281
-msgid "Errors that occurred when your site was crawled by Googlebot."
-msgstr "Les erreurs qui se sont produites lors de l'exploration du Googlebot."
-
-#: admin/google_search_console/class-gsc.php:283
-msgid "Errors that only occurred when your site was crawled by Googlebot for feature phones (errors didn't appear for desktop)."
-msgstr "Les erreurs qui se sont produites lors de l'exploration du Googlebot pour les téléphones portables (les erreurs n'apparaissent pas dans les desktops)."
-
#: admin/pages/dashboard.php:65
msgid "Failed to remove hardcoded meta description."
msgstr "Impossible de supprimer la méta description saisie en dur."
msgid "First detected"
msgstr "Premier détecté"
-#: admin/pages/dashboard.php:104 admin/pages/dashboard.php:119
-#: admin/pages/dashboard.php:130 admin/pages/dashboard.php:137
-msgid "Fix it."
-msgstr "Corriger."
-
#: admin/pages/metas.php:36
msgid "Force rewrite titles"
msgstr "Forcer la réécriture des titres"
-#: admin/google_search_console/views/gsc-display.php:34
-msgid "Get Google Authorization Code"
-msgstr "Obtenir un Code d'Autorisation Google"
-
#: admin/pages/licenses.php:99
msgid "Get this extension"
msgstr "Obtenez cette extension"
-#: admin/pages/dashboard.php:198
-msgid "Google shows your website's name in the search results, we will default to your site name but you can adapt it here. You can also provide an alternate website name you want Google to consider."
-msgstr "Google affiche le nom de votre site web, nous nous basons sur votre nom de site mais vous pouvez l'adapter ici. Vous pouvez également fournir un nom de site web alternatif si vous souhaitez que Google le prenne en considération aussi."
-
#. translators: %1$s expands to Yoast SEO
#: admin/pages/metas.php:111 admin/pages/metas.php:171
msgid "Hide"
msgstr "Masquer"
-#: admin/pages/metas.php:21 admin/pages/metas.php:65
-msgid "Homepage"
-msgstr "Page d'accueil"
-
-#: admin/pages/metas.php:74
-msgid "Homepage & Front page"
-msgstr "Page d'accueil & Première page"
-
#: admin/pages/metas.php:233
msgid "I don't know why you'd want to use meta keywords, but if you want to, check this box."
msgstr "Je ne sais pas pourquoi vous voulez utiliser les méta keywords, mais si vous voulez le faire, cochez cette case."
-#. translators: %s expands to <code>noindex, follow</code>
-#: admin/pages/metas.php:200
-msgid "If this is the case on your site, you can choose to either disable it (which makes it redirect to the homepage), or to add %s to it so it doesn't show up in the search results."
-msgstr "Si c'est le cas pour votre site, vous pouvez choisir de le désactiver (ce qui la redirigera vers la page d'accueil), ou d'y ajouter %s, de sorte qu'il n'apparaisse pas dans les résultats de recherche."
-
-#: admin/pages/metas.php:230
-msgid "If you want to prevent /page/2/ and further of any archive to show up in the search results, enable this."
-msgstr "Si vous voulez éviter /page/2/ et les suivantes d'une archive d'apparaître dans les résultats de la recherche, activez cette option."
-
#. translators: %s expands to Yoast SEO
-#: admin/pages/dashboard.php:185
+#: admin/pages/dashboard.php:186
msgid "If you want to restore a site to the default %s settings, press this button."
msgstr "Si vous souhaitez réinitialiser les réglages de %s de votre site, appuyez sur ce bouton."
-#. translators: %1$s / %2$s: links to an article about duplicate content on
-#. yoast.com
-#: admin/pages/metas.php:197
-msgid "If you're running a one author blog, the author archive will be exactly the same as your homepage. This is what's called a %1$sduplicate content problem%2$s."
-msgstr "Si vous administrez un blog avec un seul auteur, la page d'archive de l'auteur sera exactement identique à votre page d'accueil. C'est ce qu'on appelle un %1$sproblème de contenu dupliqué%2$s."
-
#: admin/pages/dashboard.php:131 admin/pages/dashboard.php:138
msgid "Ignore."
msgstr "Ignorer."
-#: admin/google_search_console/class-gsc.php:223
-msgid "Incorrect Google Authorization Code."
-msgstr "Code d'autorisation de Google incorrect."
-
-#: admin/pages/dashboard.php:156
+#: admin/pages/dashboard.php:157
msgid "Introduction Tour"
msgstr "Visite guidée"
msgid "Last crawled"
msgstr "Dernière exploration"
-#: admin/pages/dashboard.php:168
+#: admin/pages/dashboard.php:169
msgid "Latest Changes"
msgstr "Derniers changements"
msgid "Noindex subpages of archives"
msgstr "Ne pas indexer les sous-pages des archives"
-#: admin/pages/metas.php:134
-msgid "Note: instead of templates these are the actual titles and meta descriptions for these custom post type archive pages."
-msgstr "Remarque : au lieu d'utiliser les modèles, ce sont les vrais titres et méta descriptions pour les pages archives des articles de type personnalisé."
-
-#: admin/pages/licenses.php:24
-msgid "Optimize your videos to show them off in search results and get more clicks!"
-msgstr "Optimisez vos vidéos pour qu'elles apparaissent dans les résultats des recherches et obtenir plus de clics !"
-
-#: admin/pages/dashboard.php:139
-msgid "Paging comments is enabled, this is not needed in 999 out of 1000 cases, so the suggestion is to disable it, to do that, simply uncheck the box before \"Break comments into pages...\""
-msgstr "La pagination des commentaires est activée, ce qui n'est pas nécessaire dans 999 cas sur 1000, donc la suggestion est de le désactiver. Pour le faire, il suffit de décocher la case \"Diviser les commentaires en pages...\" dans les réglages de discussion."
-
#: admin/pages/advanced.php:20
msgid "Permalinks"
msgstr "Permaliens"
-#: admin/pages/dashboard.php:216 admin/pages/dashboard.php:227
-msgid "Person"
-msgstr "Personne"
-
-#: admin/google_search_console/views/gsc-display.php:36
-msgid "Please enter the Google Authorization Code in the field below and press the Authenticate button."
-msgstr "Veuillez saisir le code d'autorisation dans le champ ci-dessous et appuyez sur le bouton d'authentification."
-
-#: admin/pages/metas.php:236
-msgid "Prevents search engines from using the DMOZ description for pages from this site in the search results."
-msgstr "Empêche les moteurs de recherche d'utiliser la description de DMOZ pour les pages de ce site dans les résultats de recherche."
-
-#: admin/pages/metas.php:240
-msgid "Prevents search engines from using the Yahoo! directory description for pages from this site in the search results."
-msgstr "Empêche les moteurs de recherche d'utiliser la description du répertoire de Yahoo! pour les pages de ce site dans les résultats de recherche."
+#: admin/pages/dashboard.php:217 admin/pages/dashboard.php:228
+msgid "Person"
+msgstr "Personne"
#: admin/pages/network.php:115
msgid "Privacy sensitive (FB admins and such), theme specific (title rewrite) and a few very site specific settings will not be imported to new blogs."
msgid "Reauthenticate with Google "
msgstr "Se ré-authentifier avec Google"
-#: admin/google_search_console/views/gsc-create-redirect.php:21
-msgid "Redirect this broken URL and fix the error"
-msgstr "Rediriger cette adresse cassé et réglé l'erreur."
-
-#: admin/google_search_console/views/gsc-display.php:16
-msgid "Reload crawl issues"
-msgstr "Recharger les problèmes d'exploration"
-
#: admin/pages/dashboard.php:59
msgid "Removed hardcoded meta description."
msgstr "La méta description codée en dure a été supprimée."
msgid "Response code"
msgstr "Code de réponse"
-#: admin/pages/dashboard.php:182 admin/pages/dashboard.php:190
+#: admin/pages/dashboard.php:183 admin/pages/dashboard.php:191
msgid "Restore Default Settings"
msgstr "Restaurer les réglages par défaut"
msgid "Take note:"
msgstr "À savoir :"
-#: admin/pages/dashboard.php:157
+#: admin/pages/dashboard.php:158
msgid "Take this tour to quickly learn about the use of this plugin."
msgstr "Profitez de cette visite guidée pour apprendre rapidement comment utiliser cette extension."
-#: admin/pages/metas.php:23 admin/pages/xml-sitemaps.php:43
-msgid "Taxonomies"
-msgstr "Taxonomies"
-
#. Translators: %1$s: expands to Google Search Console.
#: admin/google_search_console/class-gsc.php:179
msgid "The %1$s data has been removed. You will have to reauthenticate if you want to retrieve the data again."
msgstr "La %1$s a été supprimée. Vous devrez vous réauthentifier si vous voulez retrouvez vos données."
-#: admin/pages/dashboard.php:105
-msgid "The following file(s) is/are blocking your XML sitemaps from working properly:"
-msgstr "Le(s) fichier(s) suivant(s) empêche(nt) vos sitemaps XML de fonctionner correctement :"
-
#. translators: %1$s expands to Yoast SEO
#: admin/pages/licenses.php:18
msgid "The premium version of %1$s with more features & support."
msgstr "La version Premium de %1$s avec plus de fonctionnalités & de support."
-#: admin/google_search_console/class-gsc-category-filters.php:121
-msgid "The target URL doesn't exist, but your server is not returning a 404 (file not found) error."
-msgstr "L'URL cible n'existe pas mais le serveur ne retourne pas d'erreur 404 (fichier non trouvé)."
-
-#: admin/google_search_console/views/gsc-display.php:72
-msgid "There were no profiles found"
-msgstr "Aucun profil n'a été trouvé. "
-
-#. translators: %s expands to <code>noindex, follow</code>
-#: admin/pages/metas.php:216
-msgid "These pages will be %s by default, so they will never show up in search results."
-msgstr "Ces pages seront réglées sur %s par défaut, donc elles n'apparaitront jamais dans les résultats de recherche."
-
-#: admin/pages/licenses.php:117
-msgid "This is where you would enter the license keys for one of our premium plugins, should you activate one."
-msgstr "Enregistrez ici la clé de licence de l'une de vos extensions premium si vous voulez l'activer."
-
#: admin/pages/metas.php:140 admin/pages/social.php:61
#: admin/views/tool-bulk-editor.php:33
msgid "Title"
msgid "URL"
msgstr "URL"
-#: admin/pages/dashboard.php:242
+#: admin/pages/dashboard.php:243
msgid "Unchecking this box allows authors and editors to redirect posts, noindex them and do other things you might not want if you don't trust your authors."
msgstr "Décocher cette case permet aux auteurs et aux éditeurs de rediriger les articles, ne pas les indexer (noindex) et faire d'autres choses que vous pourriez ne pas vouloir si vous n'avez pas confiance en eux."
msgid "Using this form you can reset a site to the default SEO settings."
msgstr "Grâce à ce formulaire, vous pouvez réinitialiser les réglages SEO de votre site aux réglages par défaut."
-#: admin/pages/dashboard.php:176
+#: admin/pages/dashboard.php:177
msgid "View Changes"
msgstr "Voir les changements"
#. translators: %s expands to Yoast SEO
-#: admin/pages/dashboard.php:171
+#: admin/pages/dashboard.php:172
msgid "We've summarized the most recent changes in %s."
msgstr "Nous avons résumé les changements les plus récents dans %s."
msgid "Webmaster Tools"
msgstr "Outils pour les webmasters"
-#: admin/pages/dashboard.php:195 admin/pages/dashboard.php:202
+#: admin/pages/dashboard.php:196 admin/pages/dashboard.php:203
msgid "Website name"
msgstr "Nom du Site Web"
msgid "Who should have access to the %1$s settings"
msgstr "Qui devrait avoir accès aux réglages de %1$s"
-#: admin/pages/dashboard.php:237
+#: admin/pages/dashboard.php:238
msgid "Yandex Webmaster Tools"
msgstr "Outils pour webmaster de Yandex "
-#: admin/google_search_console/class-gsc-service.php:137
-msgid "Yoast plugins share some code between them to make your site faster. As a result of that, we need all Yoast plugins to be up to date. We've detected this isn't the case, so please update the Yoast plugins that aren't up to date yet."
-msgstr "Les extensions de Yoast partagent du code entre elles pour les rendre plus rapide. Cela suppose qu'elles soient toutes à jour. Nous avons détecté que ce n'est pas le cas, donc veuillez mettre à jour toutes les extensions de Yoast qui ne le sont pas."
-
#: admin/pages/metas.php:78
msgid "You can determine the title and description for the blog page by %sediting the blog page itself »%s"
msgstr "Vous pouvez définir le titre et la description pour la page du blog en %smodifiant la page de blog directement »%s"
-#: admin/pages/metas.php:75
-msgid "You can determine the title and description for the front page by %sediting the front page itself »%s"
-msgstr "Vous pouvez déterminer le titre et la description de la page d'accueil en %smodifiant la page d'accueil directement »%s"
-
-#: admin/pages/dashboard.php:233
-msgid "You can use the boxes below to verify with the different Webmaster Tools, if your site is already verified, you can just forget about these. Enter the verify meta values for:"
-msgstr "Vous pouvez utiliser les cases ci-dessous pour permettre la vérification de votre site avec différents outils pour webmasters. Si votre site l'est déjà, vous pouvez simplement les oublier. Entrez les valeurs de vérification méta pour :"
-
-#. Translators: %1$s: expands to the current url and %2$s expands to url the
-#. redirects points to.
-#: admin/google_search_console/views/gsc-create-redirect.php:51
-msgid "You do not have to create a redirect for URL %1$s because a redirect already exists. The existing redirect points to %2$s. If this is fine you can mark this issue as fixed. If not, please go to the redirects page and change the target URL."
-msgstr "Vous n'avez pas à créer une redirection pour l'adresse %1$s car la redirection existe déjà. La redirection existante pointe vers %2$s. Si c'est bon, vous pouvez marquer ce problème comme réglé. Si ça ne l'est pas, rendez-vous dans la page des redirections et modifiez l'url cible."
-
-#: admin/pages/dashboard.php:132
-msgid "You do not have your postname in the URL of your posts and pages, it is highly recommended that you do. Consider setting your permalink structure to <strong>/%postname%/</strong>."
-msgstr "Vous n'avez pas le nom de l'article dans l'URL de vos articles et pages. Il est fortement recommandé de l'avoir. Il est suggéré d'ajuster la structure de vos permaliens pour <strong>/%postname%/</strong>."
-
#: admin/pages/dashboard.php:147
msgid "Your Info"
msgstr "Vos informations"
-#: admin/pages/dashboard.php:228
+#: admin/pages/dashboard.php:229
msgid "Your name"
msgstr "Votre nom "
msgid "To be able to create a redirect and fix this issue, you need %1$s. You can buy the plugin, including one year of support and updates, on %2$s."
msgstr "Pour pouvoir créer une redirection et régler ce problème, vous avez besoin de %1$s. Vous pouvez acheter l’extension, incluant un an de support et de mises à jour, sur %2$s."
-#: admin/google_search_console/class-gsc.php:79
-msgid "Don't miss your crawl errors: %1$sconnect with Google Search Console here%2$s."
-msgstr "Ne ratez pas vos erreurs d'exploration : %1$sconnectez-vous avec votre Google Search Console ici%2$s."
-
#: admin/google_search_console/class-gsc.php:192
msgid "The issues have been successfully reloaded!"
msgstr "Les problèmes ont bien été rechargés !"
-#: admin/pages/dashboard.php:209
+#: admin/pages/metas.php:23 admin/pages/xml-sitemaps.php:43
+msgid "Taxonomies"
+msgstr "Taxinomies"
+
+#: admin/google_search_console/class-gsc.php:79
+msgid "Don't miss your crawl errors: %1$sconnect with Google Search Console here%2$s."
+msgstr "Ne ratez pas vos erreurs d’exploration : %1$sconnectez-vous avec votre Google Search Console ici%2$s."
+
+#: admin/google_search_console/views/gsc-create-redirect.php:21
+msgid "Redirect this broken URL and fix the error"
+msgstr "Rediriger cette adresse cassé et réglé l’erreur."
+
+#: admin/google_search_console/views/gsc-display.php:16
+msgid "Reload crawl issues"
+msgstr "Recharger les problèmes d’exploration"
+
+#: admin/google_search_console/views/gsc-display.php:34
+msgid "Get Google Authorization Code"
+msgstr "Obtenir un Code d’Autorisation Google"
+
+#: admin/google_search_console/views/gsc-display.php:36
+msgid "Please enter the Google Authorization Code in the field below and press the Authenticate button."
+msgstr "Veuillez saisir le code d’autorisation dans le champ ci-dessous et appuyez sur le bouton d’authentification."
+
+#: admin/google_search_console/views/gsc-display.php:40
+msgid "Authenticate"
+msgstr "S’authentifier"
+
+#: admin/google_search_console/views/gsc-display.php:72
+msgid "There were no profiles found"
+msgstr "Aucun profil n’a été trouvé. "
+
+#. Translators: %1$s: expands to the current url and %2$s expands to url the
+#. redirects points to.
+#: admin/google_search_console/views/gsc-create-redirect.php:51
+msgid "You do not have to create a redirect for URL %1$s because a redirect already exists. The existing redirect points to %2$s. If this is fine you can mark this issue as fixed. If not, please go to the redirects page and change the target URL."
+msgstr "Vous n’avez pas à créer une redirection pour l’adresse %1$s car la redirection existe déjà. La redirection existante pointe vers %2$s. Si c’est bon, vous pouvez marquer ce problème comme réglé. Si ça ne l’est pas, rendez-vous dans la page des redirections et modifiez l’url cible."
+
+#: admin/google_search_console/class-gsc-service.php:137
+msgid "Yoast plugins share some code between them to make your site faster. As a result of that, we need all Yoast plugins to be up to date. We've detected this isn't the case, so please update the Yoast plugins that aren't up to date yet."
+msgstr "Les extensions de Yoast partagent du code entre elles pour les rendre plus rapide. Cela suppose qu’elles soient toutes à jour. Nous avons détecté que ce n’est pas le cas, donc veuillez mettre à jour toutes les extensions de Yoast qui ne le sont pas."
+
+#: admin/google_search_console/class-gsc.php:128
+msgid "Crawl errors per page"
+msgstr "Erreurs d’exploration par page"
+
+#: admin/google_search_console/class-gsc.php:223
+msgid "Incorrect Google Authorization Code."
+msgstr "Code d’autorisation de Google incorrect."
+
+#: admin/google_search_console/class-gsc.php:281
+msgid "Errors that occurred when your site was crawled by Googlebot."
+msgstr "Les erreurs qui se sont produites lors de l’exploration du Googlebot."
+
+#: admin/google_search_console/class-gsc.php:282
+msgid "Errors that occurred only when your site was crawled by Googlebot-Mobile (errors didn't appear for desktop)."
+msgstr "Les erreurs qui se sont produites lors de l’exploration du Googlebot (les erreurs n’apparaissent pas pour les desktops)."
+
+#: admin/google_search_console/class-gsc.php:283
+msgid "Errors that only occurred when your site was crawled by Googlebot for feature phones (errors didn't appear for desktop)."
+msgstr "Les erreurs qui se sont produites lors de l’exploration du Googlebot pour les téléphones portables (les erreurs n’apparaissent pas dans les desktops)."
+
+#: admin/google_search_console/class-gsc-category-filters.php:121
+msgid "The target URL doesn't exist, but your server is not returning a 404 (file not found) error."
+msgstr "L’URL cible n’existe pas mais le serveur ne retourne pas d’erreur 404 (fichier non trouvé)."
+
+#: admin/pages/dashboard.php:199
+msgid "Google shows your website's name in the search results, we will default to your site name but you can adapt it here. You can also provide an alternate website name you want Google to consider."
+msgstr "Google affiche le nom de votre site web, nous nous basons sur votre nom de site mais vous pouvez l’adapter ici. Vous pouvez également fournir un nom de site web alternatif si vous souhaitez que Google le prenne en considération aussi."
+
+#. translators: %1$s / %2$s: links to an article about duplicate content on
+#. yoast.com
+#: admin/pages/metas.php:197
+msgid "If you're running a one author blog, the author archive will be exactly the same as your homepage. This is what's called a %1$sduplicate content problem%2$s."
+msgstr "Si vous administrez un blog avec un seul auteur, la page d’archive de l’auteur sera exactement identique à votre page d’accueil. C’est ce qu’on appelle un %1$sproblème de contenu dupliqué%2$s."
+
+#. translators: %s expands to <code>noindex, follow</code>
+#: admin/pages/metas.php:200
+msgid "If this is the case on your site, you can choose to either disable it (which makes it redirect to the homepage), or to add %s to it so it doesn't show up in the search results."
+msgstr "Si c’est le cas pour votre site, vous pouvez choisir de le désactiver (ce qui la redirigera vers la page d’accueil), ou d’y ajouter %s, de sorte qu’il n’apparaisse pas dans les résultats de recherche."
+
+#: admin/pages/advanced.php:16
+msgid "Breadcrumbs"
+msgstr "Fils d’Ariane"
+
+#: admin/pages/dashboard.php:210
msgid "This data is shown as metadata in your site. It is intended to appear in Google's Knowledge Graph. You can be either a company, or a person, choose either:"
-msgstr "Cette donnée est affichée comme une métadonnée dans votre site. Elle apparaît dans le Knowledge Graph de Google. Vous pouvez être une société ou une personne, choisissez l’un ou l'autre :"
+msgstr "Cette donnée est affichée comme une métadonnée dans votre site. Elle apparaît dans le Knowledge Graph de Google. Vous pouvez être une société ou une personne, choisissez l’un ou l’autre :"
+
+#: admin/pages/licenses.php:117
+msgid "This is where you would enter the license keys for one of our premium plugins, should you activate one."
+msgstr "Enregistrez ici la clé de licence de l’une de vos extensions premium si vous voulez l’activer."
+
+#: admin/pages/metas.php:56
+msgid "Choose the symbol to use as your title separator. This will display, for instance, between your post title and site name."
+msgstr "Choisisssez le symbole à utiliser en temps que séparateur. Il apparaîtra, par exemple, entre le titre de l’article et le nom du site."
+
+#: admin/pages/metas.php:99
+msgid "As you are redirecting attachment URLs to parent post URLs, these settings will currently only have an effect on <strong>unattached</strong> media items!"
+msgstr "Comme vous redirigre l’URL de la pièce jointe vers l’URL parent, ces paramètres n’auront d’effet que sur les médias <strong>non inclus</strong>"
+
+#: admin/pages/network.php:109
+msgid "Choose the site whose settings you want to use as default for all sites that are added to your network. If you choose 'None', the normal plugin defaults will be used."
+msgstr "Choisissez le site dont les réglages serviront de base à tous les nouveaux sites de votre réseau. Si vous choisissez ’Aucun’, les réglages par défaut de WordPress SEO seront utilisés."
+
+#: admin/pages/network.php:113
+msgid "Enter the %sSite ID%s for the site whose settings you want to use as default for all sites that are added to your network. Leave empty for none (i.e. the normal plugin defaults will be used)."
+msgstr "Saisissez ’%sID du site%s que vous utiliserez comme base pour les réglages de tous les nouveaux sites ajoutés à votre réseau. Laissez vide pour n’en choisir aucun. (Les réglages par défaut de WordPress SEO seront alors utilisés)."
+
+#: admin/pages/licenses.php:24
+msgid "Optimize your videos to show them off in search results and get more clicks!"
+msgstr "Optimisez vos vidéos pour qu’elles apparaissent dans les résultats des recherches et obtenir plus de clics !"
+
+#: admin/pages/licenses.php:30
+msgid "Are you in Google News? Increase your traffic from Google News by optimizing for it!"
+msgstr "Etes vous sur Google News ? Augmentez le trafic de Google News grâce à l’optimisation!"
+
+#: admin/pages/dashboard.php:72
+msgid "Earlier found meta description was not found in file. Renewed the description test data."
+msgstr "Les méta descriptions précédentes n’ont pas été trouvé dans le fichier.Mise en place des données de test."
+
+#: admin/pages/metas.php:109
+msgid "Date in Snippet Preview"
+msgstr "Date dans la prévisualisation de l’élément "
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/pages/metas.php:42
+msgid "%1$s has auto-detected whether it needs to force rewrite the titles for your pages, if you think it's wrong and you know what you're doing, you can change the setting here."
+msgstr "%1$s détecte automatiquement s’il a besoin de forcer la réécriture des titres de vos pages, si vous pensez que c’est incorrect et que vous savez ce que vous faites, vous pouvez modifier ce réglage ici."
+
+#: admin/pages/metas.php:230
+msgid "If you want to prevent /page/2/ and further of any archive to show up in the search results, enable this."
+msgstr "Si vous voulez éviter /page/2/ et les suivantes d’une archive d’apparaître dans les résultats de la recherche, activez cette option."
+
+#. translators: %s expands to <code>noindex, follow</code>
+#: admin/pages/metas.php:216
+msgid "These pages will be %s by default, so they will never show up in search results."
+msgstr "Ces pages seront réglées sur %s par défaut, donc elles n’apparaitront jamais dans les résultats de recherche."
+
+#: admin/pages/metas.php:21 admin/pages/metas.php:65
+msgid "Homepage"
+msgstr "Page d’accueil"
+
+#: admin/pages/metas.php:74
+msgid "Homepage & Front page"
+msgstr "Page d’accueil & Première page"
+
+#: admin/pages/metas.php:75
+msgid "You can determine the title and description for the front page by %sediting the front page itself »%s"
+msgstr "Vous pouvez déterminer le titre et la description de la page d’accueil en %smodifiant la page d’accueil directement »%s"
+
+#: admin/pages/metas.php:182
+msgid "Author Archives"
+msgstr "Archives de l’auteur"
+
+#: admin/pages/metas.php:134
+msgid "Note: instead of templates these are the actual titles and meta descriptions for these custom post type archive pages."
+msgstr "Remarque : au lieu d’utiliser les modèles, ce sont les vrais titres et méta descriptions pour les pages archives des articles de type personnalisé."
+
+#: admin/pages/metas.php:236
+msgid "Prevents search engines from using the DMOZ description for pages from this site in the search results."
+msgstr "Empêche les moteurs de recherche d’utiliser la description de DMOZ pour les pages de ce site dans les résultats de recherche."
+
+#: admin/pages/metas.php:240
+msgid "Prevents search engines from using the Yahoo! directory description for pages from this site in the search results."
+msgstr "Empêche les moteurs de recherche d’utiliser la description du répertoire de Yahoo! pour les pages de ce site dans les résultats de recherche."
+
+#: admin/pages/dashboard.php:104 admin/pages/dashboard.php:119
+#: admin/pages/dashboard.php:130 admin/pages/dashboard.php:137
+msgid "Fix it."
+msgstr "Réparez."
+
+#: admin/pages/dashboard.php:105
+msgid "The following file(s) is/are blocking your XML sitemaps from working properly:"
+msgstr "Le(s) fichier(s) suivant(s) empêche(nt) votre plan de site XML de fonctionner correctement :"
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/pages/dashboard.php:112
+msgid "Either delete them (this can be done with the \"Fix it\" button) or disable %1$s XML sitemaps."
+msgstr "Vous pouvez soit les supprimer (ce qui peut être fait avec le bouton « Réparez ») soit désactiver le plan de site XML de %1$s."
+
+#: admin/pages/dashboard.php:132
+msgid "You do not have your postname in the URL of your posts and pages, it is highly recommended that you do. Consider setting your permalink structure to <strong>/%postname%/</strong>."
+msgstr "Vous n’avez pas le nom de l’article dans l’URL de vos articles et pages. Il est fortement recommandé de l’avoir. Il est suggéré d’ajuster la structure de vos permaliens pour <strong>/%postname%/</strong>."
+
+#: admin/pages/dashboard.php:139
+msgid "Paging comments is enabled, this is not needed in 999 out of 1000 cases, so the suggestion is to disable it, to do that, simply uncheck the box before \"Break comments into pages...\""
+msgstr "La pagination des commentaires est activée, ce qui n’est pas nécessaire dans 999 cas sur 1000, donc la suggestion est de le désactiver. Pour le faire, il suffit de décocher la case \"Diviser les commentaires en pages...\" dans les réglages de discussion."
+
+#: admin/pages/dashboard.php:234
+msgid "You can use the boxes below to verify with the different Webmaster Tools, if your site is already verified, you can just forget about these. Enter the verify meta values for:"
+msgstr "Vous pouvez utiliser les cases ci-dessous pour permettre la vérification de votre site avec différents outils pour webmasters. Si votre site l’est déjà, vous pouvez simplement les oublier. Entrez les valeurs de vérification méta pour :"
+
+#: admin/pages/dashboard.php:236
+msgid "Bing Webmaster Tools"
+msgstr "Outils de Bing pour webmasters"
#. translators: %1$s expands to Yoast SEO
#: admin/taxonomy/class-taxonomy-metabox.php:55
msgid "%s Image"
msgstr "%s Image"
-#. translators: %s is the plugin name
-#: admin/class-yoast-dashboard-widget.php:41
-msgid "%s Posts Overview"
-msgstr "Vue d'ensemble des articles de %s"
-
#. translators: %s expands to the social network name
#: admin/class-social-admin.php:63
#: admin/taxonomy/class-taxonomy-social-fields.php:44
msgid "%s Title"
msgstr "%s Titre"
-#: admin/class-pointers.php:301
-msgid "A Sitemap is an XML file that lists the URLs for a site. It allows webmasters to include additional information about each URL: when it was last updated, how often it changes, and how important it is in relation to other URLs in the site. This allows search engines to crawl the site more intelligently."
-msgstr "Un plan de site est un fichier XML qui recense les URLs d'un site. Il permet aux webmasters d'inclure des informations complémentaires à propos de chaque URL: quand il a été mis à jour pour la dernière fois, à quelle fréquence il change, son importance par rapport aux autres URLs du site. Cela permet aux moteurs de recherche de parcourir le site de manière plus intelligente."
-
#: admin/google_search_console/class-gsc-category-filters.php:113
msgid "Access denied"
msgstr "Accès refusé"
msgid "Add some info here needed for Google's Knowledge Graph."
msgstr "Ajouter quelques informations nécessaire pour le Knowledge Graph de Google ici."
-#: admin/class-social-facebook.php:329
-msgid "Admin's Facebook user ID:"
-msgstr "ID d'utilisateur Facebook de l'administrateur :"
-
-#: admin/class-social-facebook.php:325
-msgid "Admin's name:"
-msgstr "Nom de l'administrateur :"
-
#: admin/class-pointers.php:317
msgid "Advanced Settings"
msgstr "Réglages avancés"
msgid "Blocked"
msgstr "Bloqué"
-#. translators: %1$s expands to Yoast SEO, %2$s: 'Google XML Sitemaps' plugin
-#. name of possibly conflicting plugin with regard to the creation of sitemaps
-#: admin/class-plugin-conflict.php:135
-msgid "Both %1$s and %2$s can create XML sitemaps. Having two XML sitemaps is not beneficial for search engines, yet might slow down your site."
-msgstr "%1$s et %2$s peuvent créer des sitemaps XML. Avoir deux sitemaps XML n'est pas recommandé pour les moteurs de recherche, et pourrait même ralentir votre site."
-
-#. translators: %1$s expands to Yoast SEO, %2%s: 'Facebook' plugin name of
-#. possibly conflicting plugin with regard to creating OpenGraph output
-#: admin/class-plugin-conflict.php:128
-msgid "Both %1$s and %2$s create OpenGraph output, which might make Facebook, Twitter, LinkedIn and other social networks use the wrong texts and images when your pages are being shared."
-msgstr "%1$s et %2$s créent des sorties OpenGraph, ce qui pourrait faire que Facebook, Twitter, LinkedIn et d'autres réseaux sociaux utilisent de mauvais textes et de mauvaises images lorsque vos pages sont partagées."
-
-#: admin/pages/metas.php:146
-#: admin/taxonomy/class-taxonomy-settings-fields.php:48
-msgid "Breadcrumbs title"
-msgstr "Titre du fil d'Ariane"
-
#: admin/taxonomy/class-taxonomy-settings-fields.php:44
msgid "Canonical"
msgstr "Canonique"
msgid "Close"
msgstr "Fermer"
-#. translators: %1$s expands to Yoast SEO
-#: admin/class-plugin-conflict.php:132
-msgid "Configure %1$s's OpenGraph settings"
-msgstr "Configurer les réglages de l'OpenGraph de %1$s"
-
#. translators: %1$s expands to Yoast SEO
#: admin/class-plugin-conflict.php:139
msgid "Configure %1$s's XML Sitemap settings"
msgid "Debug Information"
msgstr "Information de débug"
-#: admin/class-pointers.php:235
-msgid "Determine who has access to the plugins advanced settings on the post edit screen."
-msgstr "Définit qui a accès aux réglages avancés des extensions dans le menu d'édition d'un article."
-
#: admin/class-pointers.php:248
msgid "Email"
msgstr "E-mail"
msgstr "Facebook Insights et Admins"
#: admin/google_search_console/class-gsc-category-filters.php:114
-msgid "Faulty redirects"
-msgstr "Redirections défectueuses"
-
-#: admin/class-meta-columns.php:46
-msgid "Focus KW"
-msgstr "Mot-clé principal"
-
-#: admin/class-meta-columns.php:335
-msgid "Focus keyword not set."
-msgstr "Mot-clé principal non défini."
-
-#: admin/class-pointers.php:230
-msgid "General settings"
-msgstr "Réglages généraux"
-
-#: admin/google_search_console/class-gsc-category-filters.php:117
-msgid "Google was unable to crawl this URL due to an undetermined issue."
-msgstr "Google n'a pas pu exploré cette adresse en raison d'un problème indéterminé."
-
-#: admin/google_search_console/class-gsc-category-filters.php:119
-msgid "Googlebot could access your site, but certain URLs are blocked for Googlebot in your %1$s file. This block could either be for all Googlebots or even specifically for Googlebot-mobile."
-msgstr "Le Googlebot pourrait accéder à votre site, mais l'accès à certaines adresses est bloqué dans votre %1$s. Ce blocage pourrait être pour tous les Googlebot ou uniquement pour le Googlebot-mobile."
-
-#. translators: %1$s and %2$s expand to a link to the Yoast Knowledge Base
-#: admin/class-social-facebook.php:322
-msgid "If you don't know where to find the needed ID, see %1$sthis knowledge base article%2$s."
-msgstr "Si vous ne savez pas où trouver l'ID nécessaire, référez-vous à %1$scet article de notre base de connaissance%2$s."
-
-#. translators: %s expands to the social network's name
-#: admin/class-social-admin.php:36
-msgid "If you don't want to use the meta description for sharing the post on %s but want another description there, write it here."
-msgstr "Si vous ne souhaitez pas utiliser la méta description pour partager l'article sur %s mais voulez une autre description, inscrivez-la ici."
+msgid "Faulty redirects"
+msgstr "Redirections défectueuses"
-#. translators: %s expands to the social network's name
-#: admin/class-social-admin.php:34
-msgid "If you don't want to use the post title for sharing the post on %s but instead want another title there, write it here."
-msgstr "Si vous ne souhaitez pas utiliser le titre de l'article sur %s mais voulez au contraire un autre titre, enregistrez-le ici."
+#: admin/class-meta-columns.php:46
+msgid "Focus KW"
+msgstr "Mot-clé principal"
-#: admin/class-pointers.php:303
-msgid "If you want to exclude certain post types and/or taxonomies, you can also set that on this page."
-msgstr "Si vous souhaitez exclure certains types de contenu et/ou des taxonomies, vous pouvez également le faire sur cette page."
+#: admin/class-meta-columns.php:335
+msgid "Focus keyword not set."
+msgstr "Mot-clé principal non défini."
-#. translators: %s expands to the social network's name
-#: admin/class-social-admin.php:38
-msgid "If you want to override the image used on %s for this post, upload / choose an image or add the URL here."
-msgstr "Si vous voulez remplacer l'image utilisée pour cet article sur %s, téléchargez/choisissez une image ou ajoutez son URL ici."
+#: admin/class-pointers.php:230
+msgid "General settings"
+msgstr "Réglages généraux"
#. translators: %1$s expands to Yoast SEO
#: admin/class-pointers.php:245
msgid "If you would like us to keep you up-to-date regarding %1$s and other plugins by Yoast, subscribe to our newsletter:"
msgstr "Si vous voulez être tenu informé des nouveautés relatives à %1$s et aux autres extensions de Yoast, abonnez-vous à notre newsletter :"
-#: admin/class-pointers.php:304
-msgid "Is your webserver low on memory? Decrease the entries per sitemap (default: 1000) to reduce load."
-msgstr "Est-ce que votre serveur manque de mémoire ? Diminuez le nombre d'entrées du plan du site (par défaut : 1000) pour réduire la charge."
-
#: admin/class-pointers.php:335 admin/pages/licenses.php:78
msgid "Licenses"
msgstr "Licences"
msgid "Meta Desc."
msgstr "Méta Desc."
-#: admin/taxonomy/class-taxonomy-settings-fields.php:38
-msgid "Meta keywords used on the archive page for this term."
-msgstr "Meta keywords utilisé sur la page d'archive pour ce terme."
-
#. translators: %1$s expands to Yoast SEO
#: admin/class-pointers.php:238
msgid "More %1$s"
msgstr "En savoir plus sur %1$s"
-#. translators: %1$s and %2$s expand to a link to the Yoast Knowledge Base
-#: admin/class-social-facebook.php:301
-msgid "More info can be found %1$son our knowledge base%2$s."
-msgstr "Retrouvez plus d'information %1$sdans notre base de connaissance%2$s."
-
#: admin/taxonomy/class-taxonomy-settings-fields.php:92
#: admin/taxonomy/class-taxonomy.php:61
msgid "Never include"
msgid "OK"
msgstr "OK"
-#: admin/class-pointers.php:269
-msgid "On the Other tab you can change sitewide meta settings, like enable meta keywords."
-msgstr "Dans l'onglet Autre, vous pouvez modifier les réglages des méta pour tout le site, comme par exemple, activer les méta keywords."
-
-#: admin/class-pointers.php:268
-msgid "On the archives tab you can set templates for specific pages like author archives, search results and more."
-msgstr "Dans l'onglet des archives vous pouvez maintenant créer des modèles pour des pages spécifiques comme celles des archives d'auteur, des résultats de recherche et bien d'autres."
-
-#: admin/class-pointers.php:283
-msgid "On this tab you can enable the %1$sFacebook Open Graph%2$s functionality from this plugin, as well as assign a Facebook user or Application to be the admin of your site, so you can view the Facebook insights."
-msgstr "Dans cet onglet, vous pouvez activer la fonctionnalité de l'%1$sOpen Graph de Facebook%2$s, afin d'affecter à un utilisateur Facebook ou à une Application l'administration de votre site, et que vous puissiez voir les statistiques de Facebook."
-
#: admin/class-pointers.php:286
msgid "On this tab you can verify your site with Pinterest and enter your Pinterest account."
msgstr "Dans cet onglet, vous pouvez vérifier votre site avec Pinterest et saisir les données de votre compte Pinterest."
-#. translators: %1$s expands to Yoast SEO Premium
-#: admin/class-pointers.php:337
-msgid "Once you’ve purchased %1$s or any other premium Yoast plugin, you’ll have to enter a license key. You can do so on the Licenses-tab. Once you’ve activated your premium plugin, you can use all its powerful features."
-msgstr "Après l'achat de %1$s ou d'une autre extension premium de Yoast, vous devrez entrer une clé de licence. Vous pouvez le faire dans l'onglet Licences. Une fois votre extension premium activée, vous pouvez utiliser toutes ses puissantes fonctionnalités."
-
#: admin/class-pointers.php:269
#: admin/google_search_console/class-gsc-category-filters.php:117
#: admin/pages/metas.php:25
msgstr "Merci de vous assurez que les deux champs soient remplis."
#. translators: %s expands to <code>noindex</code>
-#: admin/class-yoast-dashboard-widget.php:155
+#: admin/class-yoast-dashboard-widget.php:158
msgid "Posts that are set to %s"
msgstr "Les articles sont réglés sur %s."
-#: admin/class-yoast-dashboard-widget.php:152
+#: admin/class-yoast-dashboard-widget.php:155
msgid "Posts with OK SEO score"
msgstr "Articles avec un score SEO OK"
-#: admin/class-yoast-dashboard-widget.php:151
+#: admin/class-yoast-dashboard-widget.php:154
msgid "Posts with bad SEO score"
msgstr "articles avec un mauvais score SEO "
-#: admin/class-yoast-dashboard-widget.php:153
+#: admin/class-yoast-dashboard-widget.php:156
msgid "Posts with good SEO score"
msgstr "Articles avec un bon score SEO"
-#: admin/class-yoast-dashboard-widget.php:150
+#: admin/class-yoast-dashboard-widget.php:153
msgid "Posts without focus keyword"
msgstr "Articles sans mot clé principal"
msgid "SEO: Post Noindexed"
msgstr "SEO : Article non indexé"
-#: admin/google_search_console/class-gsc-category-filters.php:113
-msgid "Server requires authentication or is blocking Googlebot from accessing the site."
-msgstr "Le serveur nécessite une authentification ou bloque l'accès au site au Googlebot."
-
#: admin/class-pointers.php:266
msgid "Sitewide settings"
msgstr "Réglages au niveau du site"
-#: admin/class-pointers.php:339
-msgid "So, we’ve come to the end of the tour. If you like the plugin, please %srate it 5 stars on WordPress.org%s!"
-msgstr "Nous sommes arrivés à la fin de la visite. Si vous aimez l'extension, s'il vous plaît %sdonnez-lui 5 étoiles sur WordPress.org%s !"
-
#: admin/class-pointers.php:282
msgid "Social settings"
msgstr "Réglages réseaux sociaux"
-#: admin/class-pointers.php:182 admin/pages/dashboard.php:161
+#: admin/class-pointers.php:182 admin/pages/dashboard.php:162
msgid "Start Tour"
msgstr "Commencer la visite"
msgid "Templates and settings"
msgstr "Modèles et réglages"
-#: admin/class-pointers.php:340
-msgid "Thank you for using our plugin and good luck with your SEO!<br/><br/>Best,<br/>Team Yoast - %1$sYoast.com%2$s"
-msgstr "Merci d'utiliser notre extension et bonne chance avec votre référencement !<br/><br/>Cordialement<br/>L'équipe Yoast - %1$sYoast.com%2$s"
-
-#. translators: %1$s: 'Facebook & Open Graph' plugin name(s) of possibly
-#. conflicting plugin(s), %2$s to Yoast SEO
-#: admin/class-yoast-plugin-conflict.php:163
-msgid "The %1$s plugin(s) might cause issues when used in conjunction with %2$s."
-msgstr "L'extension(s) %1$s pourrai(en)t provoquer des problèmes si utiliser en conjonction avec %2$s."
-
-#. translators: %s expands to the taxonomy name
-#: admin/taxonomy/class-taxonomy-settings-fields.php:50
-msgid "The Breadcrumbs title is used in the breadcrumbs where this %s appears."
-msgstr "Le titre est utilisé dans le fil d'Ariane où %s apparaît."
-
-#: admin/taxonomy/class-taxonomy-settings-fields.php:45
-msgid "The canonical link is shown on the archive page for this term."
-msgstr "Le lien canonique s'affiche sur la page d'archive pour ce terme."
-
-#: admin/metabox/class-metabox.php:745
-msgid "The featured image should be at least 200x200 pixels to be picked up by Facebook and other social media sites."
-msgstr "L'image à la Une doit être au moins de 200 x 200 pixels pour être capté par Facebook et d'autres sites de médias sociaux."
-
-#: admin/class-pointers.php:266
-msgid "The first tab will show you site-wide settings for titles, normally you'll only need to change the Title Separator."
-msgstr "Le premier onglet présente les réglages généraux pour les titres, normalement vous n'aurez besoin de modifier que le séparateur de titres."
-
-#: admin/class-pointers.php:284
-msgid "The frontpage settings allow you to set meta-data for your homepage, whereas the default settings allow you to set a fallback for all posts/pages without images. "
-msgstr "Les paramètres de première page vous permettent de définir des méta-données pour votre page d'accueil, alors que les paramètres par défaut vous permettent de définir une configuration pour tous les articles / pages sans images."
-
-#. translators: %1$s expands to Yoast SEO, %2$s to Yoast SEO Premium, %3$s and
-#. %4$s to an anchor with link about our premium plugins
-#: admin/class-pointers.php:333
-msgid "The powerful functions of %1$s can be extended with %3$sYoast premium plugins%4$s. These premium plugins require the installation of %1$s or %2$s and add specific functionality. You can read all about the Yoast Premium Plugins %3$shere%4$s."
-msgstr "Les puissantes fonctions de %1$s peuvent être encore améliorées avec les %3$sPlugins Yoast Premium%4$s. Ces extensions premium nécessitent l'installation de %1$s ou de %2$s et ajoutent des fonctionnalités spécifiques. Vous pouvez en savoir plus au sujet de ces extensions Yoast Premium en cliquant %3$sici%4$s."
-
-#. translators: %1$s expands to the social network, %2$s to the recommended
-#. image size
-#. translators: %1$s expands to the social network name, %2$s expands to the
-#. image size
-#: admin/class-social-admin.php:40
-#: admin/taxonomy/class-taxonomy-social-fields.php:63
-msgid "The recommended image size for %1$s is %2$spx."
-msgstr "La taille d'image recommandée pour %1$s est de %2$spx."
-
-#: admin/class-pointers.php:267
-msgid "The templates are built using variables. You can find all these variables in the help tab (in the top-right corner of the page). The settings allow you to set specific behavior for the post types."
-msgstr "Les modèles sont construits à base de variables. Vous pouvez retrouvez l'ensemble des variables dans l'onglet Aide (en haut à droite de la page). Les paramètres vous permettent de définir un comportement spécifique pour les types de contenu."
-
-#: admin/class-pointers.php:241
-msgid "There’s more to learn about WordPress & SEO than just using this plugin. A great start is our article %1$sthe definitive guide to WordPress SEO%2$s."
-msgstr "Il existe d'autres ressources concernant WordPress et le SEO qui dépassent l'usage de cette extension. Un très bon début est notre article %1$sle guide ultime du SEO pour WordPress%2$s"
-
#. translators: %1$s expands to Yoast SEO
#: admin/class-pointers.php:232
msgid "These are the General settings for %1$s, here you can restart this tour or revert the %1$s settings to default."
msgstr "Ce sont les réglages généraux de %1$s, vous pouvez relancer la présentation ou revenir aux réglages de %1$s par défaut."
-#. translators: %s expands to taxonomy name
-#: admin/taxonomy/class-taxonomy-settings-fields.php:59
-msgid "This %s follows the indexation rules set under Metas and Titles, you can override it here."
-msgstr "Ce %s suit les règles d'indexation définies dans les Métas et Titres, vous pouvez les remplacer ici."
-
#: admin/class-social-facebook.php:119
msgid "This Facebook user has already been added as an admin."
msgstr "Cet utilisateur Facebook a déjà été ajouté comme administrateur."
msgid "This plugin adds XML sitemaps to your site. The sitemaps are automatically updated when you publish a new post, page or custom post and Google and Bing will be automatically notified."
msgstr "Cette extension ajoute des cartes XML à votre site. Ces cartes sont automatiquement mises à jour lorsque vous publiez un nouvel article, une nouvelle page ou que vous modifiez un article. Les modifications sont automatiquement répercutées sur Google et Bing."
-#: admin/class-pointers.php:287
-msgid "This tab allows you to add specific post meta data for Google+. And if you have a Google+ page for your business, add that URL here and link it on your %1$sGoogle+%2$s page’s about page."
-msgstr "Cet onglet vous permet d'ajouter des méta-données spécifiques à soumettre à Google+. Et si vous avez une page Google+ pour votre entreprise, ajoutez l'URL ici et reliez-la à la page A propos de votre page %1$sGoogle+%2$"
-
#. translators: %1$s expands to Yoast SEO
#: admin/class-yoast-plugin-conflict.php:176
msgid "This warning is generated by %1$s."
msgid "Title & Metas settings"
msgstr "Réglages Titre et Métas"
-#. translators: %1$s and %2$s expand to a link to Facebook Insights
-#: admin/class-social-facebook.php:318
-msgid "To be able to access %1$sFacebook Insights%2$s, you need to add a user here. The name is used for reference only, the ID is used for verification."
-msgstr "Pour être en mesure d'accéder à %1$sFacebook Insights%2$s, vous devez ajouter un utilisateur ici. Le nom est utilisé à titre indicatif, l'ID est utilisée pour la vérification."
-
#: admin/class-social-facebook.php:293
msgid "To be able to access %sFacebook Insights%s for your site, you need to specify a Facebook Admin. This can be a user. If you have an app for your site, you could use that as well."
msgstr "Pour pouvoir accéder à %sFacebook Insights %s pour votre site, vous devez spécifier un administrateur Facebook. Cela peut être un utilisateur. Si vous avez une application pour votre site, vous pouvez aussi l'utiliser."
msgid "Twitter"
msgstr "Twitter"
-#: admin/google_search_console/class-gsc-category-filters.php:116
-msgid "URL points to a non-existent page."
-msgstr "L'adresse pointe vers une page inexistante."
-
#. translators: %1$s expands to Yoast SEO Premium
#: admin/class-yoast-form.php:235
msgid "Upgrade to %1$s »"
msgid "What are XML sitemaps?"
msgstr "En quoi consistent les plans de site au format XML ?"
-#: admin/class-pointers.php:302
-msgid "What does the plugin do with XML Sitemaps?"
-msgstr "Que fait l'extension avec les Sitemaps XML ?"
-
#: admin/class-pointers.php:285
msgid "With %1$sTwitter Cards%2$s, you can attach rich photos, videos and media experience to tweets that drive traffic to your website. Simply check the box, sign up for the service, and users who Tweet links to your content will have a “Card” added to the tweet that’s visible to all of their followers."
msgstr "Avec les %1$sCartes Twitter %2$s, vous pouvez joindre des photos, des vidéos et autres médias à vos tweets qui génèrent du trafic vers votre site. Il suffit de cocher la case, enregistrez-vous pour le service et les utilisateurs qui tweetent des liens vers votre contenu auront une “Carte” ajoutée dans leur tweet qui sera visible à tous leurs contacts. "
msgid "You can add the verification codes for the different Webmaster Tools programs here. We highly encourage you to check out both Google and Bing’s Webmaster Tools."
msgstr "Vous pouvez ajouter ici les codes de vérification des différents programmes de Webmaster Tools. Nous vous encourageons vivement à vérifier les outils pour Webmaster de Google et de Bing."
-#. translators: %1$s expands to Yoast SEO
-#: admin/class-pointers.php:176
-msgid "You’ve just installed %1$s! Click “Start Tour” to view a quick introduction of this plugin’s core functionality."
-msgstr "Vous venez d'installer %1$s ! Cliquez sur \"Commencer la visite\" pour afficher une rapide introduction des fonctions de base de l'extension."
+#: admin/class-social-facebook.php:116
+msgid "Your input contains invalid characters. Please make sure both fields are filled in correctly."
+msgstr "Votre saisie contient des caractères non valides. Veuillez vérifier que les deux champs soient correctement remplis."
+
+#: admin/class-pointers.php:303
+msgid "If you want to exclude certain post types and/or taxonomies, you can also set that on this page."
+msgstr "Si vous souhaitez exclure certains types de contenu et/ou des taxinomies, vous pouvez également le faire sur cette page."
+
+#. translators: %1$s and %2$s expand to a link to the Yoast Knowledge Base
+#: admin/class-social-facebook.php:322
+msgid "If you don't know where to find the needed ID, see %1$sthis knowledge base article%2$s."
+msgstr "Si vous ne savez pas où trouver l’ID nécessaire, référez-vous à %1$scet article de notre base de connaissance%2$s."
+
+#. translators: %s is the plugin name
+#: admin/class-yoast-dashboard-widget.php:41
+msgid "%s Posts Overview"
+msgstr "Vue d’ensemble des articles de %s"
+
+#. translators: %1$s: 'Facebook & Open Graph' plugin name(s) of possibly
+#. conflicting plugin(s), %2$s to Yoast SEO
+#: admin/class-yoast-plugin-conflict.php:163
+msgid "The %1$s plugin(s) might cause issues when used in conjunction with %2$s."
+msgstr "L’extension(s) %1$s pourrai(en)t provoquer des problèmes si utiliser en conjonction avec %2$s."
+
+#: admin/google_search_console/class-gsc-category-filters.php:113
+msgid "Server requires authentication or is blocking Googlebot from accessing the site."
+msgstr "Le serveur nécessite une authentification ou bloque l’accès au site au Googlebot."
+
+#: admin/google_search_console/class-gsc-category-filters.php:116
+msgid "URL points to a non-existent page."
+msgstr "L’adresse pointe vers une page inexistante."
+
+#: admin/google_search_console/class-gsc-category-filters.php:117
+msgid "Google was unable to crawl this URL due to an undetermined issue."
+msgstr "Google n’a pas pu exploré cette adresse en raison d’un problème indéterminé."
+
+#: admin/google_search_console/class-gsc-category-filters.php:119
+msgid "Googlebot could access your site, but certain URLs are blocked for Googlebot in your %1$s file. This block could either be for all Googlebots or even specifically for Googlebot-mobile."
+msgstr "Le Googlebot pourrait accéder à votre site, mais l’accès à certaines adresses est bloqué dans votre %1$s. Ce blocage pourrait être pour tous les Googlebot ou uniquement pour le Googlebot-mobile."
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/class-plugin-conflict.php:132
+msgid "Configure %1$s's OpenGraph settings"
+msgstr "Configurer les réglages de l’OpenGraph de %1$s"
+
+#. translators: %1$s and %2$s expand to a link to the Yoast Knowledge Base
+#: admin/class-social-facebook.php:301
+msgid "More info can be found %1$son our knowledge base%2$s."
+msgstr "Retrouvez plus d’information %1$sdans notre base de connaissance%2$s."
+
+#. translators: %1$s and %2$s expand to a link to Facebook Insights
+#: admin/class-social-facebook.php:318
+msgid "To be able to access %1$sFacebook Insights%2$s, you need to add a user here. The name is used for reference only, the ID is used for verification."
+msgstr "Pour être en mesure d’accéder à %1$sFacebook Insights%2$s, vous devez ajouter un utilisateur ici. Le nom est utilisé à titre indicatif, l’ID est utilisée pour la vérification."
+
+#: admin/class-social-facebook.php:325
+msgid "Admin's name:"
+msgstr "Nom de l’administrateur :"
+
+#: admin/class-social-facebook.php:329
+msgid "Admin's Facebook user ID:"
+msgstr "ID d’utilisateur Facebook de l’administrateur :"
+
+#. translators: %1$s expands to the social network, %2$s to the recommended
+#. image size
+#. translators: %1$s expands to the social network name, %2$s expands to the
+#. image size
+#: admin/class-social-admin.php:40
+#: admin/taxonomy/class-taxonomy-social-fields.php:63
+msgid "The recommended image size for %1$s is %2$spx."
+msgstr "La taille d’image recommandée pour %1$s est de %2$spx."
+
+#: admin/metabox/class-metabox.php:746
+msgid "The featured image should be at least 200x200 pixels to be picked up by Facebook and other social media sites."
+msgstr "L’image à la Une doit être au moins de 200 x 200 pixels pour être capté par Facebook et d’autres sites de médias sociaux."
+
+#. translators: %1$s expands to Yoast SEO, %2%s: 'Facebook' plugin name of
+#. possibly conflicting plugin with regard to creating OpenGraph output
+#: admin/class-plugin-conflict.php:128
+msgid "Both %1$s and %2$s create OpenGraph output, which might make Facebook, Twitter, LinkedIn and other social networks use the wrong texts and images when your pages are being shared."
+msgstr "%1$s et %2$s créent des sorties OpenGraph, ce qui pourrait faire que Facebook, Twitter, LinkedIn et d’autres réseaux sociaux utilisent de mauvais textes et de mauvaises images lorsque vos pages sont partagées."
+
+#. translators: %1$s expands to Yoast SEO, %2$s: 'Google XML Sitemaps' plugin
+#. name of possibly conflicting plugin with regard to the creation of sitemaps
+#: admin/class-plugin-conflict.php:135
+msgid "Both %1$s and %2$s can create XML sitemaps. Having two XML sitemaps is not beneficial for search engines, yet might slow down your site."
+msgstr "%1$s et %2$s peuvent créer des sitemaps XML. Avoir deux sitemaps XML n’est pas recommandé pour les moteurs de recherche, et pourrait même ralentir votre site."
+
+#: admin/class-pointers.php:235
+msgid "Determine who has access to the plugins advanced settings on the post edit screen."
+msgstr "Définit qui a accès aux réglages avancés des extensions dans le menu d’édition d’un article."
+
+#: admin/class-pointers.php:266
+msgid "The first tab will show you site-wide settings for titles, normally you'll only need to change the Title Separator."
+msgstr "Le premier onglet présente les réglages généraux pour les titres, normalement vous n’aurez besoin de modifier que le séparateur de titres."
+
+#: admin/class-pointers.php:268
+msgid "On the archives tab you can set templates for specific pages like author archives, search results and more."
+msgstr "Dans l’onglet des archives vous pouvez maintenant créer des modèles pour des pages spécifiques comme celles des archives d’auteur, des résultats de recherche et bien d’autres."
+
+#: admin/class-pointers.php:269
+msgid "On the Other tab you can change sitewide meta settings, like enable meta keywords."
+msgstr "Dans l’onglet Autre, vous pouvez modifier les réglages des méta pour tout le site, comme par exemple, activer les méta keywords."
+
+#. translators: %1$s expands to Yoast SEO, %2$s to Yoast SEO Premium, %3$s and
+#. %4$s to an anchor with link about our premium plugins
+#: admin/class-pointers.php:333
+msgid "The powerful functions of %1$s can be extended with %3$sYoast premium plugins%4$s. These premium plugins require the installation of %1$s or %2$s and add specific functionality. You can read all about the Yoast Premium Plugins %3$shere%4$s."
+msgstr "Les puissantes fonctions de %1$s peuvent être encore améliorées avec les %3$sPlugins Yoast Premium%4$s. Ces extensions premium nécessitent l’installation de %1$s ou de %2$s et ajoutent des fonctionnalités spécifiques. Vous pouvez en savoir plus au sujet de ces extensions Yoast Premium en cliquant %3$sici%4$s."
+
+#: admin/class-pointers.php:340
+msgid "Thank you for using our plugin and good luck with your SEO!<br/><br/>Best,<br/>Team Yoast - %1$sYoast.com%2$s"
+msgstr "Merci d’utiliser notre extension et bonne chance avec votre référencement !<br/><br/>Cordialement<br/>L’équipe Yoast - %1$sYoast.com%2$s"
+
+#. translators: %s expands to the social network's name
+#: admin/class-social-admin.php:34
+msgid "If you don't want to use the post title for sharing the post on %s but instead want another title there, write it here."
+msgstr "Si vous ne souhaitez pas utiliser le titre de l’article sur %s mais voulez au contraire un autre titre, enregistrez-le ici."
+
+#. translators: %s expands to the social network's name
+#: admin/class-social-admin.php:36
+msgid "If you don't want to use the meta description for sharing the post on %s but want another description there, write it here."
+msgstr "Si vous ne souhaitez pas utiliser la méta description pour partager l’article sur %s mais voulez une autre description, inscrivez-la ici."
+
+#. translators: %s expands to the social network's name
+#: admin/class-social-admin.php:38
+msgid "If you want to override the image used on %s for this post, upload / choose an image or add the URL here."
+msgstr "Si vous voulez remplacer l’image utilisée pour cet article sur %s, téléchargez/choisissez une image ou ajoutez son URL ici."
+
+#: admin/class-pointers.php:241
+msgid "There’s more to learn about WordPress & SEO than just using this plugin. A great start is our article %1$sthe definitive guide to WordPress SEO%2$s."
+msgstr "Il existe d’autres ressources concernant WordPress et le SEO qui dépassent l’usage de cette extension. Un très bon début est notre article %1$sle guide ultime du SEO pour WordPress%2$s"
+
+#: admin/class-pointers.php:265
+msgid "This is where you\tset the titles and meta-information for all your post types, taxonomies, archives, special pages and for your homepage. The page is divided into different tabs. Make sure you check ’em all out!"
+msgstr "Vous pouvez définir ici les titres et les méta-informations pour vos types de contenus, taxinomies, archives, pages spéciales, et page d’accueil. Cette page est divisée en plusieurs onglets, pensez à tous les visiter !"
+
+#: admin/class-pointers.php:267
+msgid "The templates are built using variables. You can find all these variables in the help tab (in the top-right corner of the page). The settings allow you to set specific behavior for the post types."
+msgstr "Les modèles sont construits à base de variables. Vous pouvez retrouvez l’ensemble des variables dans l’onglet Aide (en haut à droite de la page). Les paramètres vous permettent de définir un comportement spécifique pour les types de contenu."
+
+#: admin/class-pointers.php:283
+msgid "On this tab you can enable the %1$sFacebook Open Graph%2$s functionality from this plugin, as well as assign a Facebook user or Application to be the admin of your site, so you can view the Facebook insights."
+msgstr "Dans cet onglet, vous pouvez activer la fonctionnalité de l’%1$sOpen Graph de Facebook%2$s, afin d’affecter à un utilisateur Facebook ou à une Application l’administration de votre site, et que vous puissiez voir les statistiques de Facebook."
+
+#: admin/class-pointers.php:284
+msgid "The frontpage settings allow you to set meta-data for your homepage, whereas the default settings allow you to set a fallback for all posts/pages without images. "
+msgstr "Les paramètres de première page vous permettent de définir des méta-données pour votre page d’accueil, alors que les paramètres par défaut vous permettent de définir une configuration pour tous les articles / pages sans images."
+
+#: admin/class-pointers.php:287
+msgid "This tab allows you to add specific post meta data for Google+. And if you have a Google+ page for your business, add that URL here and link it on your %1$sGoogle+%2$s page’s about page."
+msgstr "Cet onglet vous permet d’ajouter des méta-données spécifiques à soumettre à Google+. Et si vous avez une page Google+ pour votre entreprise, ajoutez l’URL ici et reliez-la à la page A propos de votre page %1$sGoogle+%2$"
+
+#: admin/class-pointers.php:301
+msgid "A Sitemap is an XML file that lists the URLs for a site. It allows webmasters to include additional information about each URL: when it was last updated, how often it changes, and how important it is in relation to other URLs in the site. This allows search engines to crawl the site more intelligently."
+msgstr "Un plan de site est un fichier XML qui recense les URLs d’un site. Il permet aux webmasters d’inclure des informations complémentaires à propos de chaque URL: quand il a été mis à jour pour la dernière fois, à quelle fréquence il change, son importance par rapport aux autres URLs du site. Cela permet aux moteurs de recherche de parcourir le site de manière plus intelligente."
+
+#: admin/class-pointers.php:302
+msgid "What does the plugin do with XML Sitemaps?"
+msgstr "Que fait l’extension avec les Sitemaps XML ?"
+
+#: admin/class-pointers.php:304
+msgid "Is your webserver low on memory? Decrease the entries per sitemap (default: 1000) to reduce load."
+msgstr "Est-ce que votre serveur manque de mémoire ? Diminuez le nombre d’entrées du plan du site (par défaut : 1000) pour réduire la charge."
+
+#. translators: %1$s expands to Yoast SEO Premium
+#: admin/class-pointers.php:337
+msgid "Once you’ve purchased %1$s or any other premium Yoast plugin, you’ll have to enter a license key. You can do so on the Licenses-tab. Once you’ve activated your premium plugin, you can use all its powerful features."
+msgstr "Après l’achat de %1$s ou d’une autre extension premium de Yoast, vous devrez entrer une clé de licence. Vous pouvez le faire dans l’onglet Licences. Une fois votre extension premium activée, vous pouvez utiliser toutes ses puissantes fonctionnalités."
+
+#: admin/class-pointers.php:339
+msgid "So, we’ve come to the end of the tour. If you like the plugin, please %srate it 5 stars on WordPress.org%s!"
+msgstr "Nous sommes arrivés à la fin de la visite. Si vous aimez l’extension, s’il vous plaît %sdonnez-lui 5 étoiles sur WordPress.org%s !"
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/class-pointers.php:176
+msgid "You’ve just installed %1$s! Click “Start Tour” to view a quick introduction of this plugin’s core functionality."
+msgstr "Vous venez d’installer %1$s ! Cliquez sur \"Commencer la visite\" pour afficher une rapide introduction des fonctions de base de l’extension."
+
+#. translators: %s expands to taxonomy name
+#: admin/taxonomy/class-taxonomy-settings-fields.php:59
+msgid "This %s follows the indexation rules set under Metas and Titles, you can override it here."
+msgstr "Ce %s suit les règles d’indexation définies dans les Métas et Titres, vous pouvez les remplacer ici."
+
+#: admin/taxonomy/class-taxonomy-settings-fields.php:38
+msgid "Meta keywords used on the archive page for this term."
+msgstr "Meta keywords utilisé sur la page d’archive pour ce terme."
+
+#: admin/taxonomy/class-taxonomy-settings-fields.php:45
+msgid "The canonical link is shown on the archive page for this term."
+msgstr "Le lien canonique s’affiche sur la page d’archive pour ce terme."
-#: admin/class-social-facebook.php:116
-msgid "Your input contains invalid characters. Please make sure both fields are filled in correctly."
-msgstr "Votre saisie contient des caractères non valides. Veuillez vérifier que les deux champs soient correctement remplis."
+#. translators: %s expands to the taxonomy name
+#: admin/taxonomy/class-taxonomy-settings-fields.php:50
+msgid "The Breadcrumbs title is used in the breadcrumbs where this %s appears."
+msgstr "Le titre est utilisé dans le fil d’Ariane où %s apparaît."
-#: admin/class-pointers.php:265
-msgid "This is where you\tset the titles and meta-information for all your post types, taxonomies, archives, special pages and for your homepage. The page is divided into different tabs. Make sure you check ’em all out!"
-msgstr "Vous pouvez définir ici les titres et les méta-informations pour vos types de contenus, taxinomies, archives, pages spéciales, et page d'accueil. Cette page est divisée en plusieurs onglets, pensez à tous les visiter !"
+#: admin/pages/metas.php:146
+#: admin/taxonomy/class-taxonomy-settings-fields.php:48
+msgid "Breadcrumbs title"
+msgstr "Titre du fil d’Ariane"
#. translators: %1$s expands to Yoast SEO, %2$s expands to 5.4.3, %3$s expands
#. to Google Analytics by Yoast
msgid "%1$s has been updated to version %2$s. %3$sClick here%4$s to find out what's new!"
msgstr "%1$s a été mis à jour en version %2$s. %3$sCliquez ici%4$s pour découvrir toutes les nouveautés !"
-#. translators: %s is the name of the plugin
-#: admin/class-customizer.php:52
-msgid "%s Breadcrumbs"
-msgstr "Fil d'Ariane de %s"
-
-#: admin/metabox/class-metabox.php:297 admin/taxonomy/class-taxonomy.php:257
+#: admin/metabox/class-metabox.php:298 admin/taxonomy/class-taxonomy.php:258
msgid "(no parent)"
msgstr "(aucun parent)"
msgid "Action"
msgstr "Action"
-#: admin/class-admin.php:154 admin/metabox/class-metabox.php:418
-#: admin/metabox/class-metabox.php:420 admin/metabox/class-metabox.php:429
-#: admin/metabox/class-metabox.php:430 inc/wpseo-non-ajax-functions.php:426
+#: admin/class-admin.php:154 admin/metabox/class-metabox.php:419
+#: admin/metabox/class-metabox.php:421 admin/metabox/class-metabox.php:430
+#: admin/metabox/class-metabox.php:431 inc/wpseo-non-ajax-functions.php:426
msgid "Advanced"
msgstr "Avancé"
msgid "Advanced Variables"
msgstr "Variable Premium"
-#: admin/class-customizer.php:146
-msgid "Anchor text for the homepage:"
-msgstr "Texte d'ancrage pour la page d'accueil"
-
#: admin/class-admin.php:255 admin/class-admin.php:256
msgid "Basic Variables"
msgstr "Variables de base"
-#: admin/class-customizer.php:246
-msgid "Breadcrumb for 404 pages:"
-msgstr "Fil d'Ariane pour la page 404 "
-
-#: admin/metabox/class-metabox.php:89
-msgid "Breadcrumbs Title"
-msgstr "Titre pour le fil d'Ariane"
-
-#: admin/class-customizer.php:121
-msgid "Breadcrumbs separator:"
-msgstr "Séparateur pour le fil d'Ariane :"
-
#: admin/metabox/class-metabox.php:92
msgid "Canonical URL"
msgstr "URL canonique"
msgid "Check"
msgstr "Vérifier"
-#: admin/class-export.php:102
-msgid "Could not write settings to file."
-msgstr "Impossible d'écrire les réglages dans le fichier."
-
#: admin/class-export.php:97
msgid "Could not zip settings-file."
msgstr "Impossible de compresser (ZIP) le fichier des réglages."
msgid "Edit this item"
msgstr "Modifier cet objet"
-#. translators: %1$s expands to Yoast SEO
-#: admin/class-export.php:71
-msgid "Error creating %1$s export: "
-msgstr "Erreur de création de l'export de %1$s : "
-
#: admin/class-import-external.php:120
msgid "Error: no Robots Meta data found to import."
msgstr "Erreur : aucune métadonnée pour les robots à importer."
msgid "Follow"
msgstr "Suivre"
-#: admin/class-admin.php:238
-msgid "For more information:"
-msgstr "Pour plus d'information :"
-
#: admin/class-admin.php:211 admin/pages/dashboard.php:145
#: admin/pages/metas.php:20 admin/pages/xml-sitemaps.php:36
#: inc/wpseo-non-ajax-functions.php:402
msgid "HeadSpace2 data successfully imported"
msgstr "Les données de HeadSpace2 ont bien été importées."
-#: admin/class-admin.php:402
-msgid "Huge SEO Issue: You're blocking access to robots."
-msgstr "Important problème SEO : Vous bloquez actuellement l'accès aux robots des moteurs de recherche. "
-
-#: admin/class-admin.php:405 admin/class-admin.php:440
-msgid "I know, don't bug me."
-msgstr "Je sais, ne plus m'avertir."
-
#: admin/metabox/class-metabox.php:64
msgid "If you type something above it will override your %smeta keywords template%s."
msgstr "Si vous entrez quelque chose dans cette case, cela va remplacer votre %smodèle de méta keywords%s."
msgid "No Archive"
msgstr "Aucune archive"
-#: admin/metabox/class-metabox.php:85
-msgid "No Image Index"
-msgstr "Pas d'index pour l'image"
-
-#: admin/metabox/class-metabox.php:87
-msgid "No Snippet"
-msgstr "Pas d'aperçu"
-
#: admin/metabox/class-metabox.php:157
msgid "No focus keyword set."
msgstr "Mot-clé principal non défini."
-#: admin/class-import.php:151
-msgid "No settings found in file."
-msgstr "Aucun réglage n'a été trouvé dans le fichier."
-
#: admin/metabox/class-metabox.php:77
msgid "Nofollow"
msgstr "Ne pas suivre"
msgid "Page URL/Slug"
msgstr "URL/Identifiant de la page"
-#: admin/metabox/class-metabox.php:57
-#: admin/taxonomy/class-taxonomy-content-fields.php:25
-msgid "Pick the main keyword or keyphrase that this post/page is about.<br/><br/>Read %sthis post%s for more info."
-msgstr "Choisissez le mot-clé principal ou la phrase-clé principale de cet article/cette page.<br/><br/>Lisez %scet article%s pour plus d'infos."
-
-#: admin/class-bulk-editor-list-table.php:922
-msgid "Post Status"
-msgstr "État de l'article"
-
#: admin/class-bulk-editor-list-table.php:921
msgid "Post Type"
msgstr "Type de contenu"
-#: admin/ajax.php:218
-msgid "Post doesn't exist."
-msgstr "L'article n'existe pas."
-
-#: admin/ajax.php:227
-msgid "Post has an invalid Post Type: %s."
-msgstr "L'article a un type de contenu non valide : %s."
-
-#: admin/class-meta-columns.php:330 admin/metabox/class-metabox.php:150
-msgid "Post is set to noindex."
-msgstr "L'article est réglé sur noindex."
-
#: admin/class-admin.php:355
msgid "Posts"
msgstr "Articles"
-#: admin/class-customizer.php:196
-msgid "Prefix for archive pages:"
-msgstr "Préfixe pour les pages d'archive :"
-
-#: admin/class-customizer.php:171
-msgid "Prefix for breadcrumbs:"
-msgstr "Préfixe pour le fil d'Ariane :"
-
#: admin/class-customizer.php:221
msgid "Prefix for search result pages:"
msgstr "Préfixe pour les pages de résultats de recherche :"
msgid "RSS Footer options imported successfully."
msgstr "Les options de pied de page du fil RSS ont été importées avec succès."
-#: admin/class-customizer.php:86
-msgid "Remove blog page from breadcrumbs"
-msgstr "Retirer la page de blog du fil d'Ariane"
-
#: admin/class-admin.php:117 admin/class-admin.php:276
#: admin/class-meta-columns.php:43 inc/wpseo-non-ajax-functions.php:257
msgid "SEO"
msgid "SEO:"
msgstr "SEO :"
-#: admin/class-config.php:116
-msgid "See the help tab for more info."
-msgstr "Voir l'onglet d'aide pour plus d'informations."
-
-#: admin/class-import.php:173
-msgid "Setting \"%s\" is no longer used and has been discarded."
-msgstr "Le paramètre \"%s\" n'est plus disponible et a été désactivé"
-
#: admin/class-admin.php:456
#: admin/google_search_console/class-gsc-platform-tabs.php:40
#: admin/taxonomy/class-taxonomy-metabox.php:129
msgid "Settings"
msgstr "Réglages"
-#: admin/class-import.php:76 admin/class-import.php:82
-#: admin/class-import.php:88 admin/class-import.php:120
-#: admin/class-import.php:127 admin/class-import.php:151
-msgid "Settings could not be imported:"
-msgstr "Les réglagles n'ont pas été importés :"
-
#: admin/class-import.php:148
msgid "Settings successfully imported."
msgstr "Les réglages ont été importés avec succès."
msgid "Social"
msgstr "Réseaux sociaux"
-#: admin/ajax.php:119
-msgid "Some files could not be removed. Please remove them via FTP."
-msgstr "Plusieurs fichiers n'ont pas pu être supprimés. Veuillez le faire par le biais de votre logiciel FTP."
-
#: admin/class-admin.php:246
msgid "Template explanation"
msgstr "Explication des modèles"
-#: admin/metabox/class-metabox.php:96
-msgid "The URL that this page should redirect to."
-msgstr "L'URL vers laquelle cette page devrait rediriger."
-
-#: admin/metabox/class-metabox.php:93
-msgid "The canonical URL that this page should point to, leave empty to default to permalink. %sCross domain canonical%s supported too."
-msgstr "L'URL canonique qui devrait pointer sur cette page, laissez cette case vide pour utiliser le permalien par défaut. Les %sURLs canoniques vers d'autres domaines%s sont aussi supportées."
-
#. translators: %1$s expands to Yoast SEO
#: admin/class-admin.php:248
msgid "The title & metas settings for %1$s are made up of variables that are replaced by specific values from the page when the page is displayed. The tabs on the left explain the available variables."
msgstr "Les réglages des titres & métas pour %1$s utilisent des variables qui sont remplacées par des valeurs spécifiques de la page quand la page est affichée. Les onglets de gauche donnent des explications sur les variables disponibles."
-#: admin/metabox/class-metabox.php:51
-#: admin/taxonomy/class-taxonomy-content-fields.php:20
-msgid "This is a rendering of what this post might look like in Google's search results.<br/><br/>Read %sthis post%s for more info."
-msgstr "Voici une prévisualisation des résultats de recherche pour votre article sur Google.<br/><br/>Lire %sl'article%s pour plus d'informations."
-
-#. translators: %1$s expands to Yoast SEO
-#: admin/class-export.php:112
-msgid "This is a settings export file for the %1$s plugin by Yoast.com"
-msgstr "Ceci est un fichier d'exportation des réglages de l'extension %1$s de Yoast.com"
-
-#: admin/class-admin.php:239
-msgid "Title optimization"
-msgstr "Optimisation d'un titre"
-
-#: admin/metabox/class-metabox.php:90
-msgid "Title to use for this page in breadcrumb paths"
-msgstr "Titre à utiliser pour cette page dans le fil d'Ariane"
-
#: admin/class-admin.php:127 inc/wpseo-non-ajax-functions.php:408
msgid "Titles & Metas"
msgstr "Titres & Métas"
msgid "Unzipping failed - file settings.ini not found."
msgstr "Échec de la décompression - le fichier settings.ini est introuvable."
-#: admin/class-import.php:120
-msgid "Unzipping failed with error \"%s\"."
-msgstr "Échec de la décompression avec l'erreur \"%s\"."
-
-#: admin/class-import.php:88
-msgid "Upload failed."
-msgstr "L'envoi a échoué."
-
-#: admin/class-config.php:102 admin/metabox/class-metabox.php:758
-#: admin/taxonomy/class-taxonomy.php:101
-msgid "Use Image"
-msgstr "Utiliser l'image"
-
#: admin/class-bulk-editor-list-table.php:758
#: admin/google_search_console/class-gsc-table.php:209
msgid "View"
msgid "WP Page Title"
msgstr "Titre de la page"
-#: admin/metabox/class-metabox.php:69
-#: admin/taxonomy/class-taxonomy-settings-fields.php:105
-msgid "Warning: even though you can set the meta robots setting here, the entire site is set to noindex in the sitewide privacy settings, so these settings won't have an effect."
-msgstr "Attention : même si vous pouvez modifier les méta \"robots\" ici, tout votre site est réglé en mode \"noindex\" dans les réglages de vie privée, toute modification effectuée ici n'aura donc aucun effet. "
-
#. translators: %s: '%%term_title%%' variable used in titles and meta's
#. template that's not compatible with the given template
#: admin/class-config.php:116
msgid "Warning: the variable %s cannot be used in this template."
msgstr "Attention : la variable %s ne peut pas être utilisée avec ce modèle."
-#: admin/class-admin.php:240
-msgid "Why Google won't display the right page title"
-msgstr "Pourquoi Google n'affichera pas le bon titre de la page"
-
#: admin/class-import-woothemes-seo.php:29
msgid "WooThemes SEO framework settings & data successfully imported."
msgstr "Les réglages du framework WooThemes SEO ont bien été importés."
msgid "Yoast Breadcrumbs options imported successfully."
msgstr "Les options de Yoast Breadcrumbs ont été importées avec succès."
-#: admin/class-bulk-editor-list-table.php:133
-msgid "You are not allowed to access this page."
-msgstr "Vous n'êtes pas autorisé à accéder à cette page."
-
#: admin/ajax.php:243
msgid "You can't edit %s that aren't yours."
msgstr "Vous ne pouvez pas modifier les %s qui ne sont pas à/de vous."
msgid "This export includes taxonomy metadata"
msgstr "Cet export inclut les métadonnées des taxinomies."
+#: admin/class-customizer.php:196
+msgid "Prefix for archive pages:"
+msgstr "Préfixe pour les pages d’archive :"
+
+#: admin/class-customizer.php:171
+msgid "Prefix for breadcrumbs:"
+msgstr "Préfixe pour le fil d’Ariane :"
+
+#: admin/class-customizer.php:146
+msgid "Anchor text for the homepage:"
+msgstr "Texte d’ancrage pour la page d’accueil"
+
+#: admin/class-customizer.php:86
+msgid "Remove blog page from breadcrumbs"
+msgstr "Retirer la page de blog du fil d’Ariane"
+
+#. translators: %s is the name of the plugin
+#: admin/class-customizer.php:52
+msgid "%s Breadcrumbs"
+msgstr "Fil d’Ariane de %s"
+
+#: admin/class-customizer.php:121
+msgid "Breadcrumbs separator:"
+msgstr "Séparateur pour le fil d’Ariane :"
+
+#: admin/class-customizer.php:246
+msgid "Breadcrumb for 404 pages:"
+msgstr "Fil d’Ariane pour la page 404 "
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/class-export.php:71
+msgid "Error creating %1$s export: "
+msgstr "Erreur de création de l’export de %1$s : "
+
+#: admin/class-config.php:116
+msgid "See the help tab for more info."
+msgstr "Voir l’onglet d’aide pour plus d’informations."
+
+#: admin/class-export.php:102
+msgid "Could not write settings to file."
+msgstr "Impossible d’écrire les réglages dans le fichier."
+
#: admin/class-export.php:181
msgid "No taxonomy metadata found"
-msgstr "Aucune métadonnée de taxinomie n'a été trouvée."
+msgstr "Aucune métadonnée de taxinomie n’a été trouvée."
+
+#: admin/class-bulk-editor-list-table.php:133
+msgid "You are not allowed to access this page."
+msgstr "Vous n’êtes pas autorisé à accéder à cette page."
+
+#: admin/metabox/class-metabox.php:85
+msgid "No Image Index"
+msgstr "Pas d’index pour l’image"
+
+#: admin/metabox/class-metabox.php:51
+#: admin/taxonomy/class-taxonomy-content-fields.php:20
+msgid "This is a rendering of what this post might look like in Google's search results.<br/><br/>Read %sthis post%s for more info."
+msgstr "Voici une prévisualisation des résultats de recherche pour votre article sur Google.<br/><br/>Lire %sl’article%s pour plus d’informations."
+
+#: admin/metabox/class-metabox.php:69
+#: admin/taxonomy/class-taxonomy-settings-fields.php:105
+msgid "Warning: even though you can set the meta robots setting here, the entire site is set to noindex in the sitewide privacy settings, so these settings won't have an effect."
+msgstr "Attention : même si vous pouvez modifier les méta \"robots\" ici, tout votre site est réglé en mode \"noindex\" dans les réglages de vie privée, toute modification effectuée ici n’aura donc aucun effet. "
+
+#: admin/ajax.php:218
+msgid "Post doesn't exist."
+msgstr "L’article n’existe pas."
+
+#: admin/ajax.php:227
+msgid "Post has an invalid Post Type: %s."
+msgstr "L’article a un type de contenu non valide : %s."
+
+#: admin/class-bulk-editor-list-table.php:922
+msgid "Post Status"
+msgstr "État de l’article"
+
+#: admin/class-import.php:173
+msgid "Setting \"%s\" is no longer used and has been discarded."
+msgstr "Le paramètre \"%s\" n’est plus disponible et a été désactivé"
+
+#: admin/class-import.php:151
+msgid "No settings found in file."
+msgstr "Aucun réglage n’a été trouvé dans le fichier."
+
+#: admin/class-import.php:120
+msgid "Unzipping failed with error \"%s\"."
+msgstr "Échec de la décompression avec l’erreur \"%s\"."
+
+#: admin/class-admin.php:239
+msgid "Title optimization"
+msgstr "Optimisation d’un titre"
+
+#: admin/class-admin.php:238
+msgid "For more information:"
+msgstr "Pour plus d’information :"
+
+#: admin/class-config.php:102 admin/metabox/class-metabox.php:759
+#: admin/taxonomy/class-taxonomy.php:101
+msgid "Use Image"
+msgstr "Utiliser l’image"
+
+#: admin/class-admin.php:240
+msgid "Why Google won't display the right page title"
+msgstr "Pourquoi Google n’affichera pas le bon titre de la page"
+
+#: admin/metabox/class-metabox.php:57
+#: admin/taxonomy/class-taxonomy-content-fields.php:25
+msgid "Pick the main keyword or keyphrase that this post/page is about.<br/><br/>Read %sthis post%s for more info."
+msgstr "Choisissez le mot-clé principal ou la phrase-clé principale de cet article/cette page.<br/><br/>Lisez %scet article%s pour plus d’infos."
+
+#: admin/class-meta-columns.php:330 admin/metabox/class-metabox.php:150
+msgid "Post is set to noindex."
+msgstr "L’article est réglé sur noindex."
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/class-export.php:112
+msgid "This is a settings export file for the %1$s plugin by Yoast.com"
+msgstr "Ceci est un fichier d’exportation des réglages de l’extension %1$s de Yoast.com"
+
+#: admin/ajax.php:119
+msgid "Some files could not be removed. Please remove them via FTP."
+msgstr "Plusieurs fichiers n’ont pas pu être supprimés. Veuillez le faire par le biais de votre logiciel FTP."
+
+#: admin/class-admin.php:402
+msgid "Huge SEO Issue: You're blocking access to robots."
+msgstr "Important problème SEO : Vous bloquez actuellement l’accès aux robots des moteurs de recherche. "
+
+#: admin/class-admin.php:405 admin/class-admin.php:440
+msgid "I know, don't bug me."
+msgstr "Je sais, ne plus m’avertir."
+
+#: admin/class-import.php:76 admin/class-import.php:82
+#: admin/class-import.php:88 admin/class-import.php:120
+#: admin/class-import.php:127 admin/class-import.php:151
+msgid "Settings could not be imported:"
+msgstr "Les réglagles n’ont pas été importés :"
+
+#: admin/class-import.php:88
+msgid "Upload failed."
+msgstr "L’envoi a échoué."
+
+#: admin/metabox/class-metabox.php:89
+msgid "Breadcrumbs Title"
+msgstr "Titre pour le fil d’Ariane"
+
+#: admin/metabox/class-metabox.php:87
+msgid "No Snippet"
+msgstr "Pas d’aperçu"
+
+#: admin/metabox/class-metabox.php:90
+msgid "Title to use for this page in breadcrumb paths"
+msgstr "Titre à utiliser pour cette page dans le fil d’Ariane"
+
+#: admin/metabox/class-metabox.php:93
+msgid "The canonical URL that this page should point to, leave empty to default to permalink. %sCross domain canonical%s supported too."
+msgstr "L’URL canonique qui devrait pointer sur cette page, laissez cette case vide pour utiliser le permalien par défaut. Les %sURLs canoniques vers d’autres domaines%s sont aussi supportées."
+
+#: admin/metabox/class-metabox.php:96
+msgid "The URL that this page should redirect to."
+msgstr "L’URL vers laquelle cette page devrait rediriger."
# This file is distributed under the same license as the Twenty Sixteen package.
msgid ""
msgstr ""
-"PO-Revision-Date: 2016-01-13 10:42:07+0000\n"
+"PO-Revision-Date: 2016-01-25 15:05:48+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Description of the plugin/theme
msgid "Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere."
-msgstr "Twenty Sixteen revisite en le modernisant une mise en page WordPress toujours aussi populaire : l’entête horizontal avec une barre latérale facultative, qui fonctionne tout aussi pour les blogs que pour les sites. Il dispose d'options de couleurs avec de superbes jeux de couleurs par défaut, une composition en grille fluide et harmonieuse utilisant l'approche \"mobile-first\", et un soin apporté jusque dans les moindres détails. Twenty Sixteen vous donnera un site WordPress magnifique dans toutes les situations."
+msgstr "Twenty Sixteen revisite en la modernisant une mise en page WordPress toujours aussi populaire : l’entête horizontal avec une barre latérale facultative, qui fonctionne tout aussi bien pour les blogs que pour les sites. Il dispose d'options de couleurs avec de superbes jeux de couleurs par défaut, une composition en grille fluide et harmonieuse utilisant l'approche \"mobile-first\", et un soin apporté jusque dans les moindres détails. Twenty Sixteen vous donnera un site WordPress magnifique dans toutes les situations."
#. translators: %s: Name of current post
#: image.php:84 template-parts/content-page.php:37
add_action( 'admin_menu', 'wpcf7_admin_menu', 9 );
function wpcf7_admin_menu() {
- add_object_page( __( 'Contact Form 7', 'contact-form-7' ),
+ global $_wp_last_object_menu;
+
+ $_wp_last_object_menu++;
+
+ add_menu_page( __( 'Contact Form 7', 'contact-form-7' ),
__( 'Contact', 'contact-form-7' ),
'wpcf7_read_contact_forms', 'wpcf7',
- 'wpcf7_admin_management_page', 'dashicons-email' );
+ 'wpcf7_admin_management_page', 'dashicons-email',
+ $_wp_last_object_menu );
$edit = add_submenu_page( 'wpcf7',
__( 'Edit Contact Form', 'contact-form-7' ),
exit();
}
+ if ( 'validate' == $action && wpcf7_validate_configuration() ) {
+ if ( 'POST' == $_SERVER['REQUEST_METHOD'] ) {
+ check_admin_referer( 'wpcf7-bulk-validate' );
+
+ if ( ! current_user_can( 'wpcf7_edit_contact_forms' ) ) {
+ wp_die( __( "You are not allowed to validate configuration.", 'contact-form-7' ) );
+ }
+
+ $contact_forms = WPCF7_ContactForm::find();
+ $result = array(
+ 'timestamp' => current_time( 'timestamp' ),
+ 'version' => WPCF7_VERSION,
+ 'count_valid' => 0,
+ 'count_invalid' => 0 );
+
+ foreach ( $contact_forms as $contact_form ) {
+ $contact_form->validate_configuration();
+
+ if ( $contact_form->get_config_errors() ) {
+ $result['count_invalid'] += 1;
+ } else {
+ $result['count_valid'] += 1;
+ }
+ }
+
+ WPCF7::update_option( 'bulk_validate', $result );
+
+ $query = array(
+ 'message' => 'validated' );
+
+ $redirect_to = add_query_arg( $query, menu_page_url( 'wpcf7', false ) );
+ wp_safe_redirect( $redirect_to );
+ exit();
+ }
+ }
+
$_GET['post'] = isset( $_GET['post'] ) ? $_GET['post'] : '';
$post = null;
- if ( 'wpcf7-new' == $plugin_page && isset( $_GET['locale'] ) ) {
+ if ( 'wpcf7-new' == $plugin_page ) {
$post = WPCF7_ContactForm::get_template( array(
- 'locale' => $_GET['locale'] ) );
+ 'locale' => isset( $_GET['locale'] ) ? $_GET['locale'] : null ) );
} elseif ( ! empty( $_GET['post'] ) ) {
$post = WPCF7_ContactForm::get_instance( $_GET['post'] );
}
if ( $post && current_user_can( 'wpcf7_edit_contact_form', $post->id() ) ) {
$help_tabs->set_help_tabs( 'edit' );
-
- } else if ( 'wpcf7-new' == $plugin_page ) {
- $help_tabs->set_help_tabs( 'add_new' );
-
} else {
$help_tabs->set_help_tabs( 'list' );
return;
}
+ if ( 'validate' == wpcf7_current_action()
+ && wpcf7_validate_configuration()
+ && current_user_can( 'wpcf7_edit_contact_forms' ) ) {
+ wpcf7_admin_bulk_validate_page();
+ return;
+ }
+
$list_table = new WPCF7_Contact_Form_List_Table();
$list_table->prepare_items();
?>
<div class="wrap">
-<h2><?php
+<h1><?php
echo esc_html( __( 'Contact Forms', 'contact-form-7' ) );
if ( current_user_can( 'wpcf7_edit_contact_forms' ) ) {
. __( 'Search results for “%s”', 'contact-form-7' )
. '</span>', esc_html( $_REQUEST['s'] ) );
}
-?></h2>
+?></h1>
<?php do_action( 'wpcf7_admin_notices' ); ?>
<?php
}
-function wpcf7_admin_add_new_page() {
- if ( $post = wpcf7_get_current_contact_form() ) {
- $post_id = -1;
-
- require_once WPCF7_PLUGIN_DIR . '/admin/includes/editor.php';
- require_once WPCF7_PLUGIN_DIR . '/admin/edit-contact-form.php';
- return;
- }
-
- $available_locales = wpcf7_l10n();
- $default_locale = get_locale();
+function wpcf7_admin_bulk_validate_page() {
+ $contact_forms = WPCF7_ContactForm::find();
+ $count = WPCF7_ContactForm::count();
- if ( ! isset( $available_locales[$default_locale] ) ) {
- $default_locale = 'en_US';
- }
+ $submit_text = sprintf(
+ _n(
+ "Validate %s Contact Form Now",
+ "Validate %s Contact Forms Now",
+ $count, 'contact-form-7' ),
+ number_format_i18n( $count ) );
?>
<div class="wrap">
-<h2><?php echo esc_html( __( 'Add New Contact Form', 'contact-form-7' ) ); ?></h2>
-
-<?php do_action( 'wpcf7_admin_notices' ); ?>
+<h1><?php echo esc_html( __( 'Validate Configuration', 'contact-form-7' ) ); ?></h1>
-<h3><?php echo esc_html( sprintf( __( 'Use the default language (%s)', 'contact-form-7' ), $available_locales[$default_locale] ) ); ?></h3>
-<p><a href="<?php echo esc_url( add_query_arg( array( 'locale' => $default_locale ), menu_page_url( 'wpcf7-new', false ) ) ); ?>" class="button button-primary" /><?php echo esc_html( __( 'Add New', 'contact-form-7' ) ); ?></a></p>
-
-<?php unset( $available_locales[$default_locale] ); ?>
-<h3><?php echo esc_html( __( 'Or', 'contact-form-7' ) ); ?></h3>
-<form action="" method="get">
-<input type="hidden" name="page" value="wpcf7-new" />
-<select name="locale">
-<option value="" selected="selected"><?php echo esc_html( __( '(select language)', 'contact-form-7' ) ); ?></option>
-<?php foreach ( $available_locales as $code => $locale ) : ?>
-<option value="<?php echo esc_attr( $code ); ?>"><?php echo esc_html( $locale ); ?></option>
-<?php endforeach; ?>
-</select>
-<input type="submit" class="button" value="<?php echo esc_attr( __( 'Add New', 'contact-form-7' ) ); ?>" />
+<form method="post" action="">
+ <input type="hidden" name="action" value="validate" />
+ <?php wp_nonce_field( 'wpcf7-bulk-validate' ); ?>
+ <p><input type="submit" class="button" value="<?php echo esc_attr( $submit_text ); ?>" /></p>
</form>
+
</div>
<?php
}
+function wpcf7_admin_add_new_page() {
+ $post = wpcf7_get_current_contact_form();
+
+ if ( ! $post ) {
+ $post = WPCF7_ContactForm::get_template();
+ }
+
+ $post_id = -1;
+
+ require_once WPCF7_PLUGIN_DIR . '/admin/includes/editor.php';
+ require_once WPCF7_PLUGIN_DIR . '/admin/edit-contact-form.php';
+}
+
function wpcf7_load_integration_page() {
$integration = WPCF7_Integration::get_instance();
?>
<div class="wrap">
-<h2><?php echo esc_html( __( 'Integration with Other Services', 'contact-form-7' ) ); ?></h2>
+<h1><?php echo esc_html( __( 'Integration with Other Services', 'contact-form-7' ) ); ?></h1>
<?php do_action( 'wpcf7_admin_notices' ); ?>
}
if ( 'created' == $_REQUEST['message'] ) {
- $updated_message = __( 'Contact form created.', 'contact-form-7' );
+ $updated_message = __( "Contact form created.", 'contact-form-7' );
} elseif ( 'saved' == $_REQUEST['message'] ) {
- $updated_message = __( 'Contact form saved.', 'contact-form-7' );
+ $updated_message = __( "Contact form saved.", 'contact-form-7' );
} elseif ( 'deleted' == $_REQUEST['message'] ) {
- $updated_message = __( 'Contact form deleted.', 'contact-form-7' );
+ $updated_message = __( "Contact form deleted.", 'contact-form-7' );
+ } elseif ( 'validated' == $_REQUEST['message'] ) {
+ $bulk_validate = WPCF7::get_option( 'bulk_validate', array() );
+ $count_invalid = isset( $bulk_validate['count_invalid'] )
+ ? absint( $bulk_validate['count_invalid'] ) : 0;
+
+ if ( $count_invalid ) {
+ $updated_message = sprintf(
+ _n(
+ "Configuration validation completed. An invalid contact form was found.",
+ "Configuration validation completed. %s invalid contact forms were found.",
+ $count_invalid, 'contact-form-7' ),
+ number_format_i18n( $count_invalid ) );
+ } else {
+ $updated_message = __( "Configuration validation completed. No invalid contact form was found.", 'contact-form-7' );
+ }
}
if ( ! empty( $updated_message ) ) {
<div class="welcome-panel-content">
<div class="welcome-panel-column-container">
<div class="welcome-panel-column">
- <h4><?php echo esc_html( __( 'Contact Form 7 Needs Your Support', 'contact-form-7' ) ); ?></h4>
+ <h3><?php echo esc_html( __( 'Contact Form 7 Needs Your Support', 'contact-form-7' ) ); ?></h3>
<p class="message"><?php echo esc_html( __( "It is hard to continue development and support for this plugin without contributions from users like you. If you enjoy using Contact Form 7 and find it useful, please consider making a donation.", 'contact-form-7' ) ); ?></p>
<p><?php echo wpcf7_link( __( 'http://contactform7.com/donate/', 'contact-form-7' ), __( 'Donate', 'contact-form-7' ), array( 'class' => 'button button-primary' ) ); ?></p>
</div>
<div class="welcome-panel-column">
- <h4><?php echo esc_html( __( 'Get Started', 'contact-form-7' ) ); ?></h4>
+ <h3><?php echo esc_html( __( 'Get Started', 'contact-form-7' ) ); ?></h3>
<ul>
<li><?php echo wpcf7_link( __( 'http://contactform7.com/getting-started-with-contact-form-7/', 'contact-form-7' ), __( 'Getting Started with Contact Form 7', 'contact-form-7' ) ); ?></li>
<li><?php echo wpcf7_link( __( 'http://contactform7.com/admin-screen/', 'contact-form-7' ), __( 'Admin Screen', 'contact-form-7' ) ); ?></li>
</div>
<div class="welcome-panel-column">
- <h4><?php echo esc_html( __( 'Did You Know?', 'contact-form-7' ) ); ?></h4>
+ <h3><?php echo esc_html( __( 'Did You Know?', 'contact-form-7' ) ); ?></h3>
<ul>
<li><?php echo wpcf7_link( __( 'http://contactform7.com/spam-filtering-with-akismet/', 'contact-form-7' ), __( 'Spam Filtering with Akismet', 'contact-form-7' ) ); ?></li>
<li><?php echo wpcf7_link( __( 'http://contactform7.com/save-submitted-messages-with-flamingo/', 'contact-form-7' ), __( 'Save Messages with Flamingo', 'contact-form-7' ) ); ?></li>
'<div class="notice notice-warning is-dismissible"><p>%s</p></div>',
esc_html( $message ) );
}
+
+add_action( 'wpcf7_admin_notices', 'wpcf7_notice_config_errors' );
+
+function wpcf7_notice_config_errors() {
+ if ( ! $contact_form = wpcf7_get_current_contact_form() ) {
+ return;
+ }
+
+ if ( ! wpcf7_validate_configuration()
+ || ! current_user_can( 'wpcf7_edit_contact_form', $contact_form->id() ) ) {
+ return;
+ }
+
+ if ( $config_errors = $contact_form->get_config_errors() ) {
+ $message = sprintf(
+ _n(
+ "This contact form has a configuration error.",
+ "This contact form has %s configuration errors.",
+ count( $config_errors ), 'contact-form-7' ),
+ number_format_i18n( count( $config_errors ) ) );
+
+ $link = wpcf7_link(
+ __( 'http://contactform7.com/configuration-errors/', 'contact-form-7' ),
+ __( 'How to Resolve Configuration Errors', 'contact-form-7' ) );
+
+ echo sprintf( '<div class="notice notice-error is-dismissible"><p>%s » %s</p></div>', esc_html( $message ), $link );
+ }
+}
+
+add_action( 'admin_notices', 'wpcf7_notice_bulk_validate_config' );
+
+function wpcf7_notice_bulk_validate_config() {
+ if ( ! wpcf7_validate_configuration()
+ || ! current_user_can( 'wpcf7_edit_contact_forms' ) ) {
+ return;
+ }
+
+ if ( isset( $_GET['page'] ) && 'wpcf7' == $_GET['page']
+ && isset( $_GET['action'] ) && 'validate' == $_GET['action'] ) {
+ return;
+ }
+
+ if ( WPCF7::get_option( 'bulk_validate' ) ) { // already done.
+ return;
+ }
+
+ $link = add_query_arg(
+ array( 'action' => 'validate' ),
+ menu_page_url( 'wpcf7', false ) );
+
+ $link = sprintf( '<a href="%s">%s</a>', $link, esc_html( __( 'Validate Contact Form 7 Configuration', 'contact-form-7' ) ) );
+
+ $message = __( "Misconfiguration leads to mail delivery failure or other troubles. Validate your contact forms now.", 'contact-form-7' );
+
+ echo sprintf( '<div class="notice notice-warning is-dismissible"><p>%s » %s</p></div>', esc_html( $message ), $link );
+}
margin: 8px -8px 8px 8px;
}
-.card h3.title {
+.card h2.title {
float: right;
}
color: #a00;
}
+#submitpost input.delete:hover {
+ color: #f00;
+}
+
#submitpost input.delete:focus {
outline: thin dotted;
}
color: #23282d;
}
+div.config-error, span.config-error {
+ color: #d00;
+ font-style: normal;
+ font-size: 13px;
+}
+
/*
* Tabs
*/
color: #000;
}
-#contact-form-editor .contact-form-editor-panel h3 {
+#contact-form-editor .contact-form-editor-panel h2 {
font-size: 18px;
font-weight: 400;
line-height: 24px;
color: #666;
}
+/*
+ * Messages Panel
+ */
+#messages-panel p.description {
+ margin: 5px 0 10px;
+}
+
/*
* List Table
*/
/*
* Welcome Panel
*/
+.welcome-panel h3 {
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 2.1em;
+ margin: 1.33em 0 0;
+}
+
.welcome-panel p.message {
line-height: 1.4em;
margin-right: 25px;
margin: 8px 8px 8px -8px;
}
-.card h3.title {
+.card h2.title {
float: left;
max-width: 240px;
+ font-size: 1.3em;
+ font-weight: 600;
}
.card .infobox {
?><div class="wrap">
-<h2><?php
+<h1><?php
if ( $post->initial() ) {
echo esc_html( __( 'Add New Contact Form', 'contact-form-7' ) );
} else {
echo ' <a href="' . esc_url( menu_page_url( 'wpcf7-new', false ) ) . '" class="add-new-h2">' . esc_html( __( 'Add New', 'contact-form-7' ) ) . '</a>';
}
}
-?></h2>
+?></h1>
<?php do_action( 'wpcf7_admin_notices' ); ?>
}
if ( isset( $_POST['wpcf7-mail-additional-headers'] ) ) {
- $mail['additional_headers'] = trim( $_POST['wpcf7-mail-additional-headers'] );
+ $headers = '';
+ $tempheaders = str_replace(
+ "\r\n", "\n", $_POST['wpcf7-mail-additional-headers'] );
+ $tempheaders = explode( "\n", $tempheaders );
+
+ foreach ( $tempheaders as $header ) {
+ $header = trim( $header );
+
+ if ( '' !== $header ) {
+ $headers .= $header . "\n";
+ }
+ }
+
+ $mail['additional_headers'] = trim( $headers );
}
if ( isset( $_POST['wpcf7-mail-attachments'] ) ) {
}
if ( isset( $_POST['wpcf7-mail-2-additional-headers'] ) ) {
- $mail_2['additional_headers'] = trim(
- $_POST['wpcf7-mail-2-additional-headers'] );
+ $headers = '';
+ $tempheaders = str_replace(
+ "\r\n", "\n", $_POST['wpcf7-mail-2-additional-headers'] );
+ $tempheaders = explode( "\n", $tempheaders );
+
+ foreach ( $tempheaders as $header ) {
+ $header = trim( $header );
+
+ if ( '' !== $header ) {
+ $headers .= $header . "\n";
+ }
+ }
+
+ $mail_2['additional_headers'] = trim( $headers );
}
if ( isset( $_POST['wpcf7-mail-2-attachments'] ) ) {
do_action( 'wpcf7_save_contact_form', $contact_form );
- return $contact_form->save();
+ $post_id = $contact_form->save();
+
+ if ( wpcf7_validate_configuration() ) {
+ $contact_form->validate_configuration();
+ }
+
+ return $post_id;
}
$url = admin_url( 'admin.php?page=wpcf7&post=' . absint( $item->id() ) );
$edit_link = add_query_arg( array( 'action' => 'edit' ), $url );
+ $output = sprintf(
+ '<a class="row-title" href="%1$s" title="%2$s">%3$s</a>',
+ esc_url( $edit_link ),
+ esc_attr( sprintf( __( 'Edit “%s”', 'contact-form-7' ),
+ $item->title() ) ),
+ esc_html( $item->title() ) );
+
+ $output = sprintf( '<strong>%s</strong>', $output );
+
+ if ( wpcf7_validate_configuration()
+ && current_user_can( 'wpcf7_edit_contact_form', $item->id() )
+ && $config_errors = $item->get_config_errors() ) {
+ $error_notice = sprintf(
+ _n(
+ '%s configuration error found',
+ '%s configuration errors found',
+ count( $config_errors ), 'contact-form-7' ),
+ number_format_i18n( count( $config_errors ) ) );
+ $output .= sprintf(
+ '<div class="config-error">%s</div>',
+ $error_notice );
+ }
+
$actions = array(
'edit' => sprintf( '<a href="%1$s">%2$s</a>',
esc_url( $edit_link ),
esc_html( __( 'Duplicate', 'contact-form-7' ) ) ) ) );
}
- $a = sprintf( '<a class="row-title" href="%1$s" title="%2$s">%3$s</a>',
- esc_url( $edit_link ),
- esc_attr( sprintf( __( 'Edit “%s”', 'contact-form-7' ),
- $item->title() ) ),
- esc_html( $item->title() ) );
+ $output .= $this->row_actions( $actions );
- return '<strong>' . $a . '</strong> ' . $this->row_actions( $actions );
+ return $output;
}
function column_author( $item ) {
function wpcf7_editor_panel_form( $post ) {
?>
-<h3><?php echo esc_html( __( 'Form', 'contact-form-7' ) ); ?></h3>
+<h2><?php echo esc_html( __( 'Form', 'contact-form-7' ) ); ?></h2>
<?php
$tag_generator = WPCF7_TagGenerator::get_instance();
'subject' => '', 'body' => '', 'additional_headers' => '',
'attachments' => '', 'use_html' => false, 'exclude_blank' => false ) );
+ $do_validate = wpcf7_validate_configuration();
+
?>
<div class="contact-form-editor-box-mail" id="<?php echo $id; ?>">
-<h3><?php echo esc_html( $args['title'] ); ?></h3>
+<h2><?php echo esc_html( $args['title'] ); ?></h2>
<?php
if ( ! empty( $args['use'] ) ) :
<label for="<?php echo $id; ?>-recipient"><?php echo esc_html( __( 'To', 'contact-form-7' ) ); ?></label>
</th>
<td>
- <input type="text" id="<?php echo $id; ?>-recipient" name="<?php echo $id; ?>-recipient" class="large-text code" size="70" value="<?php echo esc_attr( $mail['recipient'] ); ?>" />
+ <?php $config_error = $post->config_error(
+ sprintf( '%s.recipient', $args['name'] ) ); ?>
+ <input type="text" id="<?php echo $id; ?>-recipient" name="<?php echo $id; ?>-recipient" class="large-text code" size="70" value="<?php echo esc_attr( $mail['recipient'] ); ?>"<?php if ( $do_validate && $config_error ) { echo ' aria-invalid="true"'; } ?> />
+ <?php if ( $do_validate && $config_error ) {
+ echo sprintf( '<br /><span role="alert" class="config-error">%s</span>', $config_error );
+ } ?>
</td>
</tr>
<label for="<?php echo $id; ?>-sender"><?php echo esc_html( __( 'From', 'contact-form-7' ) ); ?></label>
</th>
<td>
- <input type="text" id="<?php echo $id; ?>-sender" name="<?php echo $id; ?>-sender" class="large-text code" size="70" value="<?php echo esc_attr( $mail['sender'] ); ?>" />
+ <?php $config_error = $post->config_error(
+ sprintf( '%s.sender', $args['name'] ) ); ?>
+ <input type="text" id="<?php echo $id; ?>-sender" name="<?php echo $id; ?>-sender" class="large-text code" size="70" value="<?php echo esc_attr( $mail['sender'] ); ?>"<?php if ( $do_validate && $config_error ) { echo ' aria-invalid="true"'; } ?> />
+ <?php if ( $do_validate && $config_error ) {
+ echo sprintf( '<br /><span role="alert" class="config-error">%s</span>', $config_error );
+ } ?>
</td>
</tr>
<label for="<?php echo $id; ?>-subject"><?php echo esc_html( __( 'Subject', 'contact-form-7' ) ); ?></label>
</th>
<td>
- <input type="text" id="<?php echo $id; ?>-subject" name="<?php echo $id; ?>-subject" class="large-text code" size="70" value="<?php echo esc_attr( $mail['subject'] ); ?>" />
+ <?php $config_error = $post->config_error(
+ sprintf( '%s.subject', $args['name'] ) ); ?>
+ <input type="text" id="<?php echo $id; ?>-subject" name="<?php echo $id; ?>-subject" class="large-text code" size="70" value="<?php echo esc_attr( $mail['subject'] ); ?>"<?php if ( $do_validate && $config_error ) { echo ' aria-invalid="true"'; } ?> />
+ <?php if ( $do_validate && $config_error ) {
+ echo sprintf( '<br /><span role="alert" class="config-error">%s</span>', $config_error );
+ } ?>
</td>
</tr>
<label for="<?php echo $id; ?>-additional-headers"><?php echo esc_html( __( 'Additional Headers', 'contact-form-7' ) ); ?></label>
</th>
<td>
- <textarea id="<?php echo $id; ?>-additional-headers" name="<?php echo $id; ?>-additional-headers" cols="100" rows="4" class="large-text code"><?php echo esc_textarea( $mail['additional_headers'] ); ?></textarea>
+ <?php $config_error = $post->config_error(
+ sprintf( '%s.additional_headers', $args['name'] ) ); ?>
+ <textarea id="<?php echo $id; ?>-additional-headers" name="<?php echo $id; ?>-additional-headers" cols="100" rows="4" class="large-text code"<?php if ( $do_validate && $config_error ) { echo ' aria-invalid="true"'; } ?>><?php echo esc_textarea( $mail['additional_headers'] ); ?></textarea>
+ <?php if ( $do_validate && $config_error ) {
+ echo sprintf( '<br /><span role="alert" class="config-error">%s</span>', $config_error );
+ } ?>
</td>
</tr>
<label for="<?php echo $id; ?>-body"><?php echo esc_html( __( 'Message Body', 'contact-form-7' ) ); ?></label>
</th>
<td>
- <textarea id="<?php echo $id; ?>-body" name="<?php echo $id; ?>-body" cols="100" rows="18" class="large-text code"><?php echo esc_textarea( $mail['body'] ); ?></textarea>
+ <?php $config_error = $post->config_error(
+ sprintf( '%s.body', $args['name'] ) ); ?>
+ <textarea id="<?php echo $id; ?>-body" name="<?php echo $id; ?>-body" cols="100" rows="18" class="large-text code"<?php if ( $do_validate && $config_error ) { echo ' aria-invalid="true"'; } ?>><?php echo esc_textarea( $mail['body'] ); ?></textarea>
+ <?php if ( $do_validate && $config_error ) {
+ echo sprintf( '<br /><span role="alert" class="config-error">%s</span>', $config_error );
+ } ?>
<p><label for="<?php echo $id; ?>-exclude-blank"><input type="checkbox" id="<?php echo $id; ?>-exclude-blank" name="<?php echo $id; ?>-exclude-blank" value="1"<?php echo ( ! empty( $mail['exclude_blank'] ) ) ? ' checked="checked"' : ''; ?> /> <?php echo esc_html( __( 'Exclude lines with blank mail-tags from output', 'contact-form-7' ) ); ?></label></p>
unset( $messages['captcha_not_match'] );
}
+ $do_validate = wpcf7_validate_configuration();
+
?>
-<h3><?php echo esc_html( __( 'Messages', 'contact-form-7' ) ); ?></h3>
+<h2><?php echo esc_html( __( 'Messages', 'contact-form-7' ) ); ?></h2>
<fieldset>
<legend><?php echo esc_html( __( 'Edit messages used in the following situations.', 'contact-form-7' ) ); ?></legend>
<?php
foreach ( $messages as $key => $arr ) {
$field_name = 'wpcf7-message-' . strtr( $key, '_', '-' );
+
+ $config_error = $do_validate
+ ? $post->config_error( sprintf( 'messages.%s', $key ) ) : '';
+
?>
<p class="description">
<label for="<?php echo $field_name; ?>"><?php echo esc_html( $arr['description'] ); ?><br />
-<input type="text" id="<?php echo $field_name; ?>" name="<?php echo $field_name; ?>" class="large-text" size="70" value="<?php echo esc_attr( $post->message( $key, false ) ); ?>" />
+<input type="text" id="<?php echo $field_name; ?>" name="<?php echo $field_name; ?>" class="large-text" size="70" value="<?php echo esc_attr( $post->message( $key, false ) ); ?>"<?php echo $config_error ? ' aria-invalid="true"' : ''; ?> />
+<?php
+ if ( $config_error ) {
+ echo sprintf( '<br /><span role="alert" class="config-error">%s</span>', $config_error );
+ }
+?>
</label>
</p>
<?php
$description = sprintf( esc_html( $description ), $desc_link );
?>
-<h3><?php echo esc_html( __( 'Additional Settings', 'contact-form-7' ) ); ?></h3>
+<h2><?php echo esc_html( __( 'Additional Settings', 'contact-form-7' ) ); ?></h2>
<fieldset>
<legend><?php echo $description; ?></legend>
<textarea id="wpcf7-additional-settings" name="wpcf7-additional-settings" cols="100" rows="8" class="large-text"><?php echo esc_textarea( $post->prop( 'additional_settings' ) ); ?></textarea>
$this->sidebar();
- return;
- case 'add_new':
- $this->screen->add_help_tab( array(
- 'id' => 'add_new',
- 'title' => __( 'Adding A New Contact Form', 'contact-form-7' ),
- 'content' => $this->content( 'add_new' ) ) );
-
- $this->sidebar();
-
return;
case 'edit':
$this->screen->add_help_tab( array(
$content['list_available_actions'] .= '<p>' . __( "<strong>Edit</strong> - Navigates to the editing screen for that contact form. You can also reach that screen by clicking on the contact form title.", 'contact-form-7' ) . '</p>';
$content['list_available_actions'] .= '<p>' . __( "<strong>Duplicate</strong> - Clones that contact form. A cloned contact form inherits all content from the original, but has a different ID.", 'contact-form-7' ) . '</p>';
- $content['add_new'] = '<p>' . __( "You can add a new contact form on this screen. You can create a contact form in your language, which is set WordPress local settings, or in a language that you select from available options.", 'contact-form-7' ) . '</p>';
-
$content['edit_overview'] = '<p>' . __( "On this screen, you can edit a contact form. A contact form is comprised of the following components:", 'contact-form-7' ) . '</p>';
$content['edit_overview'] .= '<p>' . __( "<strong>Title</strong> is the title of a contact form. This title is only used for labeling a contact form, and can be edited.", 'contact-form-7' ) . '</p>';
$content['edit_overview'] .= '<p>' . __( "<strong>Form</strong> is a content of HTML form. You can use arbitrary HTML, which is allowed inside a form element. You can also use Contact Form 7’s form-tags here.", 'contact-form-7' ) . '</p>';
}
});
+ if ('radio' == tagType) {
+ options.push('default:1');
+ }
+
options = (options.length > 0) ? options.join(' ') : '';
var value = '';
--- /dev/null
+<?php
+
+class WPCF7_ConfigValidator {
+
+ const error_maybe_empty = 101;
+ const error_invalid_syntax = 102;
+ const error_email_not_in_site_domain = 103;
+ const error_html_in_message = 104;
+
+ private $contact_form;
+ private $errors = array();
+
+ public function __construct( WPCF7_ContactForm $contact_form ) {
+ $this->contact_form = $contact_form;
+ $this->errors = (array) get_post_meta(
+ $this->contact_form->id(), '_config_errors', true );
+ $this->errors = array_filter( $this->errors );
+ }
+
+ public function is_valid() {
+ return ! $this->errors;
+ }
+
+ public function get_errors() {
+ return $this->errors;
+ }
+
+ public function get_error( $section ) {
+ if ( isset( $this->errors[$section] ) ) {
+ return $this->errors[$section];
+ }
+
+ return null;
+ }
+
+ public function get_error_message( $section ) {
+ $code = $this->get_error( $section );
+
+ switch ( $code ) {
+ case self::error_maybe_empty:
+ return __( "This field can be empty depending on user input.", 'contact-form-7' );
+ case self::error_invalid_syntax:
+ return __( "This field has syntax errors.", 'contact-form-7' );
+ case self::error_email_not_in_site_domain:
+ return __( "This email address does not belong to the same domain as the site.", 'contact-form-7' );
+ case self::error_html_in_message:
+ return __( "HTML tags are not allowed in a message.", 'contact-form-7' );
+ default:
+ return '';
+ }
+ }
+
+ private function add_error( $section, $error ) {
+ $this->errors[$section] = $error;
+ }
+
+ public function validate() {
+ $this->errors = array();
+
+ $this->validate_mail( 'mail' );
+ $this->validate_mail( 'mail_2' );
+ $this->validate_messages();
+
+ delete_post_meta( $this->contact_form->id(), '_config_errors' );
+
+ if ( $this->errors ) {
+ update_post_meta( $this->contact_form->id(), '_config_errors',
+ $this->errors );
+ return false;
+ }
+
+ return true;
+ }
+
+ public function validate_mail( $template = 'mail' ) {
+ $components = (array) $this->contact_form->prop( $template );
+
+ if ( ! $components ) {
+ return;
+ }
+
+ if ( 'mail' != $template && empty( $components['active'] ) ) {
+ return;
+ }
+
+ $components = wp_parse_args( $components, array(
+ 'subject' => '',
+ 'sender' => '',
+ 'recipient' => '',
+ 'additional_headers' => '',
+ 'body' => '' ) );
+
+ $callback = array( $this, 'replace_mail_tags_with_minimum_input' );
+
+ $subject = $components['subject'];
+ $subject = new WPCF7_MailTaggedText( $subject,
+ array( 'callback' => $callback ) );
+ $subject = $subject->replace_tags();
+ $subject = wpcf7_strip_newline( $subject );
+
+ if ( '' === $subject ) {
+ $this->add_error( sprintf( '%s.subject', $template ),
+ self::error_maybe_empty );
+ }
+
+ $sender = $components['sender'];
+ $sender = new WPCF7_MailTaggedText( $sender,
+ array( 'callback' => $callback ) );
+ $sender = $sender->replace_tags();
+ $sender = wpcf7_strip_newline( $sender );
+
+ if ( ! $this->test_from_field_syntax( $sender ) ) {
+ $this->add_error( sprintf( '%s.sender', $template ),
+ self::error_invalid_syntax );
+ } elseif ( ! $this->test_email_in_site_domain( $sender ) ) {
+ $this->add_error( sprintf( '%s.sender', $template ),
+ self::error_email_not_in_site_domain );
+ }
+
+ $recipient = $components['recipient'];
+ $recipient = new WPCF7_MailTaggedText( $recipient,
+ array( 'callback' => $callback ) );
+ $recipient = $recipient->replace_tags();
+ $recipient = wpcf7_strip_newline( $recipient );
+
+ if ( ! $this->test_to_field_syntax( $recipient ) ) {
+ $this->add_error( sprintf( '%s.recipient', $template ),
+ self::error_invalid_syntax );
+ }
+
+ $additional_headers = $components['additional_headers'];
+ $additional_headers = new WPCF7_MailTaggedText( $additional_headers,
+ array( 'callback' => $callback ) );
+ $additional_headers = $additional_headers->replace_tags();
+
+ if ( ! $this->test_additional_headers_syntax( $additional_headers ) ) {
+ $this->add_error( sprintf( '%s.additional_headers', $template ),
+ self::error_invalid_syntax );
+ }
+
+ $body = $components['body'];
+ $body = new WPCF7_MailTaggedText( $body,
+ array( 'callback' => $callback ) );
+ $body = $body->replace_tags();
+
+ if ( '' === $body ) {
+ $this->add_error( sprintf( '%s.body', $template ),
+ self::error_maybe_empty );
+ }
+ }
+
+ public function test_from_field_syntax( $content ) {
+ $content = trim( $content );
+
+ if ( preg_match( '/<(.+)>$/', $content, $matches ) ) {
+ $email = $matches[1];
+ } else {
+ $email = $content;
+ }
+
+ return wpcf7_is_email( $email );
+ }
+
+ public function test_email_in_site_domain( $content ) {
+ if ( wpcf7_is_localhost() ) {
+ return true;
+ }
+
+ $site_domain = strtolower( $_SERVER['SERVER_NAME'] );
+
+ if ( substr( $site_domain, 0, 4 ) == 'www.' ) {
+ $site_domain = substr( $site_domain, 4 );
+ }
+
+ $content = trim( $content );
+
+ if ( preg_match( '/<(.+)>$/', $content, $matches ) ) {
+ $email = strtolower( $matches[1] );
+ } else {
+ $email = strtolower( $content );
+ }
+
+ return ( substr( $email, - strlen( $site_domain ) ) == $site_domain );
+ }
+
+ public function test_to_field_syntax( $content ) {
+ $tos = explode( ',', $content );
+
+ foreach ( $tos as $to ) {
+ $to = trim( $to );
+
+ if ( preg_match( '/<(.+)>$/', $to, $matches ) ) {
+ $to = $matches[1];
+ }
+
+ if ( ! wpcf7_is_email( $to ) ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public function test_additional_headers_syntax( $content ) {
+ $headers = explode( "\n", $content );
+
+ foreach ( $headers as $header ) {
+ $header = trim( $header );
+
+ if ( '' === $header ) {
+ continue;
+ }
+
+ if ( ! preg_match( '/^[0-9A-Za-z-]+:.+$/', $header ) ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public function validate_messages() {
+ $messages = (array) $this->contact_form->prop( 'messages' );
+
+ if ( ! $messages ) {
+ return;
+ }
+
+ foreach ( $messages as $key => $message ) {
+ $stripped = wp_strip_all_tags( $message );
+
+ if ( $stripped != $message ) {
+ $this->add_error( sprintf( 'messages.%s', $key ),
+ self::error_html_in_message );
+ }
+ }
+ }
+
+ public function replace_mail_tags_with_minimum_input( $matches ) {
+ // allow [[foo]] syntax for escaping a tag
+ if ( $matches[1] == '[' && $matches[4] == ']' ) {
+ return substr( $matches[0], 1, -1 );
+ }
+
+ $tag = $matches[0];
+ $tagname = $matches[2];
+ $values = $matches[3];
+
+ if ( ! empty( $values ) ) {
+ preg_match_all( '/"[^"]*"|\'[^\']*\'/', $values, $matches );
+ $values = wpcf7_strip_quote_deep( $matches[0] );
+ }
+
+ $do_not_heat = false;
+
+ if ( preg_match( '/^_raw_(.+)$/', $tagname, $matches ) ) {
+ $tagname = trim( $matches[1] );
+ $do_not_heat = true;
+ }
+
+ $format = '';
+
+ if ( preg_match( '/^_format_(.+)$/', $tagname, $matches ) ) {
+ $tagname = trim( $matches[1] );
+ $format = $values[0];
+ }
+
+ $example_email = 'example@example.com';
+ $example_text = 'example';
+ $example_blank = '';
+
+ $form_tags = $this->contact_form->form_scan_shortcode(
+ array( 'name' => $tagname ) );
+
+ if ( $form_tags ) {
+ $form_tag = new WPCF7_Shortcode( $form_tags[0] );
+
+ $is_required = ( $form_tag->is_required() || 'radio' == $form_tag->type );
+
+ if ( ! $is_required ) {
+ return $example_blank;
+ }
+
+ $is_selectable = in_array( $form_tag->basetype,
+ array( 'radio', 'checkbox', 'select' ) );
+
+ if ( $is_selectable ) {
+ if ( $form_tag->pipes instanceof WPCF7_Pipes ) {
+ if ( $do_not_heat ) {
+ $before_pipes = $form_tag->pipes->collect_befores();
+ $last_item = array_pop( $before_pipes );
+ } else {
+ $after_pipes = $form_tag->pipes->collect_afters();
+ $last_item = array_pop( $after_pipes );
+ }
+ } else {
+ $last_item = array_pop( $form_tag->values );
+ }
+
+ if ( $last_item && wpcf7_is_email( $last_item ) ) {
+ return $example_email;
+ } else {
+ return $example_text;
+ }
+ }
+
+ if ( 'email' == $form_tag->basetype ) {
+ return $example_email;
+ } else {
+ return $example_text;
+ }
+
+ } else {
+ $tagname = preg_replace( '/^wpcf7\./', '_', $tagname ); // for back-compat
+
+ if ( '_post_author_email' == $tagname ) {
+ return $example_email;
+ } elseif ( '_' == substr( $tagname, 0, 1 ) ) { // maybe special mail tag
+ return $example_text;
+ }
+ }
+
+ return $tag;
+ }
+}
public static function mail() {
$template = array(
- 'subject' => '[your-subject]',
+ 'subject' => sprintf(
+ _x( '%1$s "%2$s"', 'mail subject', 'contact-form-7' ),
+ get_bloginfo( 'name' ), '[your-subject]' ),
'sender' => sprintf( '[your-name] <%s>', self::from_email() ),
'body' =>
sprintf( __( 'From: %s', 'contact-form-7' ),
public static function mail_2() {
$template = array(
'active' => false,
- 'subject' => '[your-subject]',
+ 'subject' => sprintf(
+ _x( '%1$s "%2$s"', 'mail subject', 'contact-form-7' ),
+ get_bloginfo( 'name' ), '[your-subject]' ),
'sender' => sprintf( '%s <%s>',
get_bloginfo( 'name' ), self::from_email() ),
'body' =>
'description'
=> __( "Sender's message was sent successfully", 'contact-form-7' ),
'default'
- => __( 'Your message was sent successfully. Thanks.', 'contact-form-7' )
+ => __( "Thank you for your message. It has been sent.", 'contact-form-7' )
),
'mail_sent_ng' => array(
'description'
- => __( "Sender's message was failed to send", 'contact-form-7' ),
+ => __( "Sender's message failed to send", 'contact-form-7' ),
'default'
- => __( 'Failed to send your message. Please try later or contact the administrator by another method.', 'contact-form-7' )
+ => __( "There was an error trying to send your message. Please try again later.", 'contact-form-7' )
),
'validation_error' => array(
'description'
=> __( "Validation errors occurred", 'contact-form-7' ),
'default'
- => __( 'Validation errors occurred. Please confirm the fields and submit it again.', 'contact-form-7' )
+ => __( "One or more fields have an error. Please check and try again.", 'contact-form-7' )
),
'spam' => array(
'description'
=> __( "Submission was referred to as spam", 'contact-form-7' ),
'default'
- => __( 'Failed to send your message. Please try later or contact the administrator by another method.', 'contact-form-7' )
+ => __( "There was an error trying to send your message. Please try again later.", 'contact-form-7' )
),
'accept_terms' => array(
'description'
=> __( "There are terms that the sender must accept", 'contact-form-7' ),
'default'
- => __( 'Please accept the terms to proceed.', 'contact-form-7' )
+ => __( "You must accept the terms and conditions before sending your message.", 'contact-form-7' )
),
'invalid_required' => array(
'description'
=> __( "There is a field that the sender must fill in", 'contact-form-7' ),
'default'
- => __( 'Please fill in the required field.', 'contact-form-7' )
+ => __( "The field is required.", 'contact-form-7' )
),
'invalid_too_long' => array(
'description'
- => __( "There is a field that the user input is longer than the maximum allowed length", 'contact-form-7' ),
+ => __( "There is a field with input that is longer than the maximum allowed length", 'contact-form-7' ),
'default'
- => __( 'This input is too long.', 'contact-form-7' )
+ => __( "The field is too long.", 'contact-form-7' )
),
'invalid_too_short' => array(
'description'
- => __( "There is a field that the user input is shorter than the minimum allowed length", 'contact-form-7' ),
+ => __( "There is a field with input that is shorter than the minimum allowed length", 'contact-form-7' ),
'default'
- => __( 'This input is too short.', 'contact-form-7' )
+ => __( "The field is too short.", 'contact-form-7' )
)
);
private $unit_tag;
private $responses_count = 0;
private $scanned_form_tags;
+ private $config_validator;
public static function count() {
return self::$found_items;
$message = isset( $messages[$status] ) ? $messages[$status] : '';
if ( $filter ) {
+ $message = wp_strip_all_tags( $message );
$message = wpcf7_mail_replace_tags( $message, array( 'html' => true ) );
$message = apply_filters( 'wpcf7_display_message', $message, $status );
}
return apply_filters( 'wpcf7_contact_form_shortcode', $shortcode, $args, $this );
}
+
+ public function validate_configuration() {
+ if ( ! $this->initial() ) {
+ if ( ! $this->config_validator ) {
+ $this->config_validator = new WPCF7_ConfigValidator( $this );
+ }
+
+ $this->config_validator->validate();
+ }
+ }
+
+ public function get_config_errors() {
+ if ( ! $this->initial() ) {
+ if ( ! $this->config_validator ) {
+ $this->config_validator = new WPCF7_ConfigValidator( $this );
+ }
+
+ return $this->config_validator->get_errors();
+ }
+
+ return array();
+ }
+
+ public function config_error( $section ) {
+ if ( ! $this->initial() ) {
+ if ( ! $this->config_validator ) {
+ $this->config_validator = new WPCF7_ConfigValidator( $this );
+ }
+
+ return $this->config_validator->get_error_message( $section );
+ }
+
+ return '';
+ }
+
}
function wpcf7_contact_form( $id ) {
WPCF7_USE_REALLY_SIMPLE_CAPTCHA );
}
+function wpcf7_validate_configuration() {
+ return apply_filters( 'wpcf7_validate_configuration',
+ WPCF7_VALIDATE_CONFIGURATION );
+}
+
function wpcf7_load_js() {
return apply_filters( 'wpcf7_load_js', WPCF7_LOAD_JS );
}
?>
<div class="card<?php echo $service->is_active() ? ' active' : ''; ?>" id="<?php echo esc_attr( $name ); ?>">
<?php $service->icon(); ?>
-<h3 class="title"><?php echo esc_html( $service->get_title() ); ?></h3>
+<h2 class="title"><?php echo esc_html( $service->get_title() ); ?></h2>
<div class="infobox">
<?php echo esc_html( implode( ', ', $cats ) ); ?>
<br />
return $l10n;
}
- $l10n = array(
- 'af' => __( 'Afrikaans', 'contact-form-7' ),
- 'sq' => __( 'Albanian', 'contact-form-7' ),
- 'ar' => __( 'Arabic', 'contact-form-7' ),
- 'hy_AM' => __( 'Armenian', 'contact-form-7' ),
- 'az' => __( 'Azerbaijani', 'contact-form-7' ),
- 'bn_BD' => __( 'Bangla', 'contact-form-7' ),
- 'eu' => __( 'Basque', 'contact-form-7' ),
- 'be_BY' => __( 'Belarusian', 'contact-form-7' ),
- 'bs_BA' => __( 'Bosnian', 'contact-form-7' ),
- 'bg_BG' => __( 'Bulgarian', 'contact-form-7' ),
- 'ca' => __( 'Catalan', 'contact-form-7' ),
- 'ckb' => __( 'Central Kurdish', 'contact-form-7' ),
- 'zh_CN' => __( 'Chinese (China)', 'contact-form-7' ),
- 'zh_TW' => __( 'Chinese (Taiwan)', 'contact-form-7' ),
- 'hr' => __( 'Croatian', 'contact-form-7' ),
- 'cs_CZ' => __( 'Czech', 'contact-form-7' ),
- 'da_DK' => __( 'Danish', 'contact-form-7' ),
- 'nl_NL' => __( 'Dutch', 'contact-form-7' ),
- 'en_US' => __( 'English (United States)', 'contact-form-7' ),
- 'eo_EO' => __( 'Esperanto', 'contact-form-7' ),
- 'et' => __( 'Estonian', 'contact-form-7' ),
- 'fi' => __( 'Finnish', 'contact-form-7' ),
- 'fr_FR' => __( 'French (France)', 'contact-form-7' ),
- 'gl_ES' => __( 'Galician', 'contact-form-7' ),
- 'gu_IN' => __( 'Gujarati', 'contact-form-7' ),
- 'ka_GE' => __( 'Georgian', 'contact-form-7' ),
- 'de_DE' => __( 'German', 'contact-form-7' ),
- 'el' => __( 'Greek', 'contact-form-7' ),
- 'ht' => __( 'Haitian', 'contact-form-7' ),
- 'he_IL' => __( 'Hebrew', 'contact-form-7' ),
- 'hi_IN' => __( 'Hindi', 'contact-form-7' ),
- 'hu_HU' => __( 'Hungarian', 'contact-form-7' ),
- 'bn_IN' => __( 'Indian Bengali', 'contact-form-7' ),
- 'id_ID' => __( 'Indonesian', 'contact-form-7' ),
- 'ga_IE' => __( 'Irish', 'contact-form-7' ),
- 'it_IT' => __( 'Italian', 'contact-form-7' ),
- 'ja' => __( 'Japanese', 'contact-form-7' ),
- 'ko_KR' => __( 'Korean', 'contact-form-7' ),
- 'lv' => __( 'Latvian', 'contact-form-7' ),
- 'lt_LT' => __( 'Lithuanian', 'contact-form-7' ),
- 'mk_MK' => __( 'Macedonian', 'contact-form-7' ),
- 'ms_MY' => __( 'Malay', 'contact-form-7' ),
- 'ml_IN' => __( 'Malayalam', 'contact-form-7' ),
- 'mt_MT' => __( 'Maltese', 'contact-form-7' ),
- 'nb_NO' => __( 'Norwegian (Bokmål)', 'contact-form-7' ),
- 'fa_IR' => __( 'Persian', 'contact-form-7' ),
- 'pl_PL' => __( 'Polish', 'contact-form-7' ),
- 'pt_BR' => __( 'Portuguese (Brazil)', 'contact-form-7' ),
- 'pt_PT' => __( 'Portuguese (Portugal)', 'contact-form-7' ),
- 'pa_IN' => __( 'Punjabi', 'contact-form-7' ),
- 'ru_RU' => __( 'Russian', 'contact-form-7' ),
- 'ro_RO' => __( 'Romanian', 'contact-form-7' ),
- 'sr_RS' => __( 'Serbian', 'contact-form-7' ),
- 'si_LK' => __( 'Sinhala', 'contact-form-7' ),
- 'sk_SK' => __( 'Slovak', 'contact-form-7' ),
- 'sl_SI' => __( 'Slovene', 'contact-form-7' ),
- 'es_ES' => __( 'Spanish (Spain)', 'contact-form-7' ),
- 'sv_SE' => __( 'Swedish', 'contact-form-7' ),
- 'ta' => __( 'Tamil', 'contact-form-7' ),
- 'th' => __( 'Thai', 'contact-form-7' ),
- 'tl' => __( 'Tagalog', 'contact-form-7' ),
- 'tr_TR' => __( 'Turkish', 'contact-form-7' ),
- 'uk' => __( 'Ukrainian', 'contact-form-7' ),
- 'vi' => __( 'Vietnamese', 'contact-form-7' )
- );
+ if ( ! is_admin() ) {
+ return $l10n;
+ }
+
+ require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
+
+ $api = translations_api( 'plugins', array(
+ 'slug' => 'contact-form-7',
+ 'version' => WPCF7_VERSION ) );
+
+ if ( is_wp_error( $api ) || empty( $api['translations'] ) ) {
+ return $l10n;
+ }
+
+ foreach ( (array) $api['translations'] as $translation ) {
+ if ( ! empty( $translation['language'] )
+ && ! empty( $translation['english_name'] ) ) {
+ $l10n[$translation['language']] = $translation['english_name'];
+ }
+ }
return $l10n;
}
function wpcf7_is_valid_locale( $locale ) {
- $l10n = wpcf7_l10n();
- return isset( $l10n[$locale] );
+ $pattern = '/^[a-z]{2,3}(?:_[a-zA-Z_]{2,})?$/';
+ return (bool) preg_match( $pattern, $locale );
}
function wpcf7_is_rtl( $locale = '' ) {
if ( $use_html ) {
$headers .= "Content-Type: text/html\n";
+ $headers .= "X-WPCF7-Content-Type: text/html\n";
+ } else {
+ $headers .= "X-WPCF7-Content-Type: text/plain\n";
}
if ( $additional_headers ) {
return $content;
}
+add_action( 'phpmailer_init', 'wpcf7_phpmailer_init' );
+
+function wpcf7_phpmailer_init( $phpmailer ) {
+ $wpcf7_content_type = false;
+
+ foreach ( (array) $phpmailer->getCustomHeaders() as $custom_header ) {
+ if ( 'X-WPCF7-Content-Type' == $custom_header[0] ) {
+ $wpcf7_content_type = trim( $custom_header[1] );
+ break;
+ }
+ }
+
+ if ( 'text/html' == $wpcf7_content_type ) {
+ $phpmailer->msgHTML( $phpmailer->Body );
+ }
+}
+
class WPCF7_MailTaggedText {
private $html = false;
+ private $callback = null;
private $content = '';
private $replaced_tags = array();
public function __construct( $content, $args = '' ) {
- $args = wp_parse_args( $args, array( 'html' => false ) );
+ $args = wp_parse_args( $args, array(
+ 'html' => false,
+ 'callback' => null ) );
$this->html = (bool) $args['html'];
+
+ if ( null !== $args['callback'] && is_callable( $args['callback'] ) ) {
+ $this->callback = $args['callback'];
+ } elseif ( $this->html ) {
+ $this->callback = array( $this, 'replace_tags_callback_html' );
+ } else {
+ $this->callback = array( $this, 'replace_tags_callback' );
+ }
+
$this->content = $content;
}
. '((?:[\t ]+"[^"]*"|[\t ]+\'[^\']*\')*)' // [3] = values
. '[\t ]*\](\]?)/';
- if ( $this->html ) {
- $callback = array( $this, 'replace_tags_callback_html' );
- } else {
- $callback = array( $this, 'replace_tags_callback' );
- }
-
- return preg_replace_callback( $regex, $callback, $this->content );
+ return preg_replace_callback( $regex, $this->callback, $this->content );
}
private function replace_tags_callback_html( $matches ) {
return $output;
}
-?>
\ No newline at end of file
+?>
msgstr ""
"Project-Id-Version: Contact Form 7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-24 01:46+0900\n"
+"POT-Creation-Date: 2016-02-20 13:50+0900\n"
"PO-Revision-Date: 2015-05-18 21:49+0900\n"
"Last-Translator: Takayuki Miyoshi <takayukister@gmail.com>\n"
"Language-Team: \n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: UTF-8\n"
-"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_c\n"
+"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_c;_n:1,2;_x\n"
"X-Poedit-Basepath: ../..\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 1.8.6\n"
msgid "Just another contact form plugin. Simple but flexible."
msgstr ""
-#: contact-form-7/admin/admin.php:16 contact-form-7/modules/flamingo.php:136
+#: contact-form-7/admin/admin.php:20 contact-form-7/modules/flamingo.php:137
msgid "Contact Form 7"
msgstr ""
-#: contact-form-7/admin/admin.php:17
+#: contact-form-7/admin/admin.php:21
msgid "Contact"
msgstr ""
-#: contact-form-7/admin/admin.php:22
+#: contact-form-7/admin/admin.php:27
#: contact-form-7/admin/edit-contact-form.php:38
msgid "Edit Contact Form"
msgstr ""
-#: contact-form-7/admin/admin.php:23 contact-form-7/admin/admin.php:239
-#: contact-form-7/includes/contact-form.php:29
+#: contact-form-7/admin/admin.php:28 contact-form-7/admin/admin.php:283
+#: contact-form-7/includes/contact-form.php:30
msgid "Contact Forms"
msgstr ""
-#: contact-form-7/admin/admin.php:30 contact-form-7/admin/admin.php:283
+#: contact-form-7/admin/admin.php:35
#: contact-form-7/admin/edit-contact-form.php:36
msgid "Add New Contact Form"
msgstr ""
-#: contact-form-7/admin/admin.php:31 contact-form-7/admin/admin.php:242
-#: contact-form-7/admin/admin.php:288 contact-form-7/admin/admin.php:300
+#: contact-form-7/admin/admin.php:36 contact-form-7/admin/admin.php:286
#: contact-form-7/admin/edit-contact-form.php:41
msgid "Add New"
msgstr ""
-#: contact-form-7/admin/admin.php:41 contact-form-7/admin/admin.php:325
+#: contact-form-7/admin/admin.php:46 contact-form-7/admin/admin.php:366
msgid "Integration with Other Services"
msgstr ""
-#: contact-form-7/admin/admin.php:42
+#: contact-form-7/admin/admin.php:47
msgid "Integration"
msgstr ""
-#: contact-form-7/admin/admin.php:72 contact-form-7/admin/admin.php:94
+#: contact-form-7/admin/admin.php:77 contact-form-7/admin/admin.php:99
msgid "You are not allowed to edit this item."
msgstr ""
-#: contact-form-7/admin/admin.php:133
+#: contact-form-7/admin/admin.php:138
msgid "You are not allowed to delete this item."
msgstr ""
-#: contact-form-7/admin/admin.php:136
+#: contact-form-7/admin/admin.php:141
msgid "Error in deleting."
msgstr ""
-#: contact-form-7/admin/admin.php:213
+#: contact-form-7/admin/admin.php:162
+msgid "You are not allowed to validate configuration."
+msgstr ""
+
+#: contact-form-7/admin/admin.php:250
msgid "The changes you made will be lost if you navigate away from this page."
msgstr ""
-#: contact-form-7/admin/admin.php:247
+#: contact-form-7/admin/admin.php:291
#, php-format
msgid "Search results for “%s”"
msgstr ""
-#: contact-form-7/admin/admin.php:256
+#: contact-form-7/admin/admin.php:300
msgid "Search Contact Forms"
msgstr ""
-#: contact-form-7/admin/admin.php:287
+#: contact-form-7/admin/admin.php:314
#, php-format
-msgid "Use the default language (%s)"
-msgstr ""
-
-#: contact-form-7/admin/admin.php:291
-msgid "Or"
-msgstr ""
+msgid "Validate %s Contact Form Now"
+msgid_plural "Validate %s Contact Forms Now"
+msgstr[0] ""
-#: contact-form-7/admin/admin.php:295
-msgid "(select language)"
+#: contact-form-7/admin/admin.php:322
+msgid "Validate Configuration"
msgstr ""
-#: contact-form-7/admin/admin.php:354
+#: contact-form-7/admin/admin.php:395
msgid "Contact form created."
msgstr ""
-#: contact-form-7/admin/admin.php:356
+#: contact-form-7/admin/admin.php:397
msgid "Contact form saved."
msgstr ""
-#: contact-form-7/admin/admin.php:358
+#: contact-form-7/admin/admin.php:399
msgid "Contact form deleted."
msgstr ""
-#: contact-form-7/admin/admin.php:373
+#: contact-form-7/admin/admin.php:408
+#, php-format
+msgid "Configuration validation completed. An invalid contact form was found."
+msgid_plural ""
+"Configuration validation completed. %s invalid contact forms were found."
+msgstr[0] ""
+
+#: contact-form-7/admin/admin.php:413
+msgid "Configuration validation completed. No invalid contact form was found."
+msgstr ""
+
+#: contact-form-7/admin/admin.php:429
msgid "Settings"
msgstr ""
-#: contact-form-7/admin/admin.php:391
+#: contact-form-7/admin/admin.php:447
#, php-format
msgid ""
"<strong>Contact Form 7 %1$s requires WordPress %2$s or higher.</strong> "
"Please <a href=\"%3$s\">update WordPress</a> first."
msgstr ""
-#: contact-form-7/admin/admin.php:417
+#: contact-form-7/admin/admin.php:473
msgid "Dismiss"
msgstr ""
-#: contact-form-7/admin/admin.php:422
+#: contact-form-7/admin/admin.php:478
msgid "Contact Form 7 Needs Your Support"
msgstr ""
-#: contact-form-7/admin/admin.php:423
+#: contact-form-7/admin/admin.php:479
msgid ""
"It is hard to continue development and support for this plugin without "
"contributions from users like you. If you enjoy using Contact Form 7 and "
"find it useful, please consider making a donation."
msgstr ""
-#: contact-form-7/admin/admin.php:424
+#: contact-form-7/admin/admin.php:480
msgid "http://contactform7.com/donate/"
msgstr ""
-#: contact-form-7/admin/admin.php:424
+#: contact-form-7/admin/admin.php:480
msgid "Donate"
msgstr ""
-#: contact-form-7/admin/admin.php:428
+#: contact-form-7/admin/admin.php:484
msgid "Get Started"
msgstr ""
-#: contact-form-7/admin/admin.php:430
+#: contact-form-7/admin/admin.php:486
msgid "http://contactform7.com/getting-started-with-contact-form-7/"
msgstr ""
-#: contact-form-7/admin/admin.php:430
+#: contact-form-7/admin/admin.php:486
msgid "Getting Started with Contact Form 7"
msgstr ""
-#: contact-form-7/admin/admin.php:431
+#: contact-form-7/admin/admin.php:487
msgid "http://contactform7.com/admin-screen/"
msgstr ""
-#: contact-form-7/admin/admin.php:431
+#: contact-form-7/admin/admin.php:487
msgid "Admin Screen"
msgstr ""
-#: contact-form-7/admin/admin.php:432
+#: contact-form-7/admin/admin.php:488
msgid "http://contactform7.com/tag-syntax/"
msgstr ""
-#: contact-form-7/admin/admin.php:432
+#: contact-form-7/admin/admin.php:488
msgid "How Tags Work"
msgstr ""
-#: contact-form-7/admin/admin.php:433
+#: contact-form-7/admin/admin.php:489
msgid "http://contactform7.com/setting-up-mail/"
msgstr ""
-#: contact-form-7/admin/admin.php:433
+#: contact-form-7/admin/admin.php:489
msgid "Setting Up Mail"
msgstr ""
-#: contact-form-7/admin/admin.php:438
+#: contact-form-7/admin/admin.php:494
msgid "Did You Know?"
msgstr ""
-#: contact-form-7/admin/admin.php:440
+#: contact-form-7/admin/admin.php:496
msgid "http://contactform7.com/spam-filtering-with-akismet/"
msgstr ""
-#: contact-form-7/admin/admin.php:440
+#: contact-form-7/admin/admin.php:496
msgid "Spam Filtering with Akismet"
msgstr ""
-#: contact-form-7/admin/admin.php:441
+#: contact-form-7/admin/admin.php:497
msgid "http://contactform7.com/save-submitted-messages-with-flamingo/"
msgstr ""
-#: contact-form-7/admin/admin.php:441
+#: contact-form-7/admin/admin.php:497
msgid "Save Messages with Flamingo"
msgstr ""
-#: contact-form-7/admin/admin.php:442
+#: contact-form-7/admin/admin.php:498
msgid "http://contactform7.com/selectable-recipient-with-pipes/"
msgstr ""
-#: contact-form-7/admin/admin.php:442
+#: contact-form-7/admin/admin.php:498
msgid "Selectable Recipient with Pipes"
msgstr ""
-#: contact-form-7/admin/admin.php:443
+#: contact-form-7/admin/admin.php:499
msgid ""
"http://contactform7.com/tracking-form-submissions-with-google-analytics/"
msgstr ""
-#: contact-form-7/admin/admin.php:443
+#: contact-form-7/admin/admin.php:499
msgid "Tracking with Google Analytics"
msgstr ""
-#: contact-form-7/admin/admin.php:488
+#: contact-form-7/admin/admin.php:544
msgid "You are not allowed to edit this contact form."
msgstr ""
+#: contact-form-7/admin/admin.php:567
+#, php-format
+msgid "This contact form has a configuration error."
+msgid_plural "This contact form has %s configuration errors."
+msgstr[0] ""
+
+#: contact-form-7/admin/admin.php:573
+msgid "http://contactform7.com/configuration-errors/"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:574
+msgid "How to Resolve Configuration Errors"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:601
+msgid "Validate Contact Form 7 Configuration"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:603
+msgid ""
+"Misconfiguration leads to mail delivery failure or other troubles. Validate "
+"your contact forms now."
+msgstr ""
+
#: contact-form-7/admin/edit-contact-form.php:26
#: contact-form-7/admin/edit-contact-form.php:124
#: contact-form-7/modules/recaptcha.php:206
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:131
-#: contact-form-7/admin/includes/class-contact-forms-list-table.php:116
+#: contact-form-7/admin/includes/class-contact-forms-list-table.php:139
msgid "Duplicate"
msgstr ""
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:161
-#: contact-form-7/admin/includes/help-tabs.php:103
+#: contact-form-7/admin/includes/help-tabs.php:92
msgid "http://contactform7.com/docs/"
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:161
-#: contact-form-7/admin/includes/help-tabs.php:103
+#: contact-form-7/admin/includes/help-tabs.php:92
msgid "Docs"
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:162
-#: contact-form-7/admin/includes/help-tabs.php:104
+#: contact-form-7/admin/includes/help-tabs.php:93
msgid "http://contactform7.com/faq/"
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:162
-#: contact-form-7/admin/includes/help-tabs.php:104
+#: contact-form-7/admin/includes/help-tabs.php:93
msgid "FAQ"
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:163
-#: contact-form-7/admin/includes/help-tabs.php:105
+#: contact-form-7/admin/includes/help-tabs.php:94
msgid "http://contactform7.com/support/"
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:163
-#: contact-form-7/admin/includes/help-tabs.php:105
+#: contact-form-7/admin/includes/help-tabs.php:94
msgid "Support"
msgstr ""
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:188
-#: contact-form-7/admin/includes/editor.php:172
+#: contact-form-7/admin/includes/editor.php:201
msgid "Messages"
msgstr ""
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:201
-#: contact-form-7/admin/includes/editor.php:195
-#: contact-form-7/admin/includes/editor.php:200
+#: contact-form-7/admin/includes/editor.php:233
+#: contact-form-7/admin/includes/editor.php:238
msgid "Additional Settings"
msgstr ""
msgstr ""
#: contact-form-7/admin/includes/class-contact-forms-list-table.php:106
-msgid "Edit"
+#, php-format
+msgid "Edit “%s”"
msgstr ""
-#: contact-form-7/admin/includes/class-contact-forms-list-table.php:121
+#: contact-form-7/admin/includes/class-contact-forms-list-table.php:117
#, php-format
-msgid "Edit “%s”"
+msgid "%s configuration error found"
+msgid_plural "%s configuration errors found"
+msgstr[0] ""
+
+#: contact-form-7/admin/includes/class-contact-forms-list-table.php:129
+msgid "Edit"
msgstr ""
-#: contact-form-7/admin/includes/class-contact-forms-list-table.php:165
+#: contact-form-7/admin/includes/class-contact-forms-list-table.php:184
msgid "Y/m/d g:i:s A"
msgstr ""
-#: contact-form-7/admin/includes/class-contact-forms-list-table.php:172
+#: contact-form-7/admin/includes/class-contact-forms-list-table.php:191
#, php-format
msgid "%s ago"
msgstr ""
-#: contact-form-7/admin/includes/class-contact-forms-list-table.php:174
+#: contact-form-7/admin/includes/class-contact-forms-list-table.php:193
msgid "Y/m/d"
msgstr ""
msgid "Use Mail (2)"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:90
+#: contact-form-7/admin/includes/editor.php:92
msgid "Mail (2) is an additional mail template often used as an autoresponder."
msgstr ""
-#: contact-form-7/admin/includes/editor.php:96
+#: contact-form-7/admin/includes/editor.php:98
msgid "In the following fields, you can use these mail-tags:"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:102
+#: contact-form-7/admin/includes/editor.php:104
msgid "To"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:111
+#: contact-form-7/admin/includes/editor.php:118
msgid "From"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:120
+#: contact-form-7/admin/includes/editor.php:132
#: contact-form-7/includes/contact-form-template.php:29
msgid "Subject"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:129
+#: contact-form-7/admin/includes/editor.php:146
msgid "Additional Headers"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:138
+#: contact-form-7/admin/includes/editor.php:160
msgid "Message Body"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:143
+#: contact-form-7/admin/includes/editor.php:170
msgid "Exclude lines with blank mail-tags from output"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:145
+#: contact-form-7/admin/includes/editor.php:172
msgid "Use HTML content type"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:151
+#: contact-form-7/admin/includes/editor.php:178
msgid "File Attachments"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:174
+#: contact-form-7/admin/includes/editor.php:203
msgid "Edit messages used in the following situations."
msgstr ""
-#: contact-form-7/admin/includes/editor.php:194
+#: contact-form-7/admin/includes/editor.php:232
msgid "http://contactform7.com/additional-settings/"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:196
+#: contact-form-7/admin/includes/editor.php:234
#, php-format
msgid "You can add customization code snippets here. For details, see %s."
msgstr ""
#: contact-form-7/admin/includes/help-tabs.php:16
-#: contact-form-7/admin/includes/help-tabs.php:39
-#: contact-form-7/admin/includes/help-tabs.php:58
+#: contact-form-7/admin/includes/help-tabs.php:30
+#: contact-form-7/admin/includes/help-tabs.php:49
msgid "Overview"
msgstr ""
msgid "Available Actions"
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:30
-msgid "Adding A New Contact Form"
-msgstr ""
-
-#: contact-form-7/admin/includes/help-tabs.php:44
+#: contact-form-7/admin/includes/help-tabs.php:35
msgid "Form-tags"
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:49
+#: contact-form-7/admin/includes/help-tabs.php:40
msgid "Mail-tags"
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:70
+#: contact-form-7/admin/includes/help-tabs.php:61
msgid ""
"On this screen, you can manage contact forms provided by Contact Form 7. You "
"can manage an unlimited number of contact forms. Each contact form has a "
"target."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:72
+#: contact-form-7/admin/includes/help-tabs.php:63
msgid ""
"Hovering over a row in the contact forms list will display action links that "
"allow you to manage your contact form. You can perform the following actions:"
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:73
+#: contact-form-7/admin/includes/help-tabs.php:64
msgid ""
"<strong>Edit</strong> - Navigates to the editing screen for that contact "
"form. You can also reach that screen by clicking on the contact form title."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:74
+#: contact-form-7/admin/includes/help-tabs.php:65
msgid ""
"<strong>Duplicate</strong> - Clones that contact form. A cloned contact form "
"inherits all content from the original, but has a different ID."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:76
-msgid ""
-"You can add a new contact form on this screen. You can create a contact form "
-"in your language, which is set WordPress local settings, or in a language "
-"that you select from available options."
-msgstr ""
-
-#: contact-form-7/admin/includes/help-tabs.php:78
+#: contact-form-7/admin/includes/help-tabs.php:67
msgid ""
"On this screen, you can edit a contact form. A contact form is comprised of "
"the following components:"
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:79
+#: contact-form-7/admin/includes/help-tabs.php:68
msgid ""
"<strong>Title</strong> is the title of a contact form. This title is only "
"used for labeling a contact form, and can be edited."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:80
+#: contact-form-7/admin/includes/help-tabs.php:69
msgid ""
"<strong>Form</strong> is a content of HTML form. You can use arbitrary HTML, "
"which is allowed inside a form element. You can also use Contact Form "
"7’s form-tags here."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:81
+#: contact-form-7/admin/includes/help-tabs.php:70
msgid ""
"<strong>Mail</strong> manages a mail template (headers and message body) "
"that this contact form will send when users submit it. You can use Contact "
"Form 7’s mail-tags here."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:82
+#: contact-form-7/admin/includes/help-tabs.php:71
msgid ""
"<strong>Mail (2)</strong> is an additional mail template that works similar "
"to Mail. Mail (2) is different in that it is sent only when Mail has been "
"sent successfully."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:83
+#: contact-form-7/admin/includes/help-tabs.php:72
msgid ""
"In <strong>Messages</strong>, you can edit various types of messages used "
"for this contact form. These messages are relatively short messages, like a "
"validation error message you see when you leave a required field blank."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:84
+#: contact-form-7/admin/includes/help-tabs.php:73
msgid ""
"<strong>Additional Settings</strong> provides a place where you can "
"customize the behavior of this contact form by adding code snippets."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:86
+#: contact-form-7/admin/includes/help-tabs.php:75
msgid ""
"A form-tag is a short code enclosed in square brackets used in a form "
"content. A form-tag generally represents an input field, and its components "
"fields, CAPTCHAs, and quiz fields."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:87
+#: contact-form-7/admin/includes/help-tabs.php:76
msgid ""
"While form-tags have a comparatively complex syntax, you don’t need to "
"know the syntax to add form-tags because you can use the straightforward tag "
"generator (<strong>Generate Tag</strong> button on this screen)."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:89
+#: contact-form-7/admin/includes/help-tabs.php:78
msgid ""
"A mail-tag is also a short code enclosed in square brackets that you can use "
"in every Mail and Mail (2) field. A mail-tag represents a user input value "
"through an input field of a corresponding form-tag."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:90
+#: contact-form-7/admin/includes/help-tabs.php:79
msgid ""
"There are also special mail-tags that have specific names, but don’t "
"have corresponding form-tags. They are used to represent meta information of "
"page."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:92
+#: contact-form-7/admin/includes/help-tabs.php:81
msgid ""
"On this screen, you can manage services that are available through Contact "
"Form 7. Using API will allow you to collaborate with any services that are "
"available."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:93
+#: contact-form-7/admin/includes/help-tabs.php:82
msgid ""
"You may need to first sign up for an account with the service that you plan "
"to use. When you do so, you would need to authorize Contact Form 7 to access "
"the service with your account."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:94
+#: contact-form-7/admin/includes/help-tabs.php:83
msgid ""
"Any information you provide will not be shared with service providers "
"without your authorization."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:102
+#: contact-form-7/admin/includes/help-tabs.php:91
msgid "For more information:"
msgstr ""
msgid "Form-tag Generator: %s"
msgstr ""
+#: contact-form-7/includes/config-validator.php:41
+msgid "This field can be empty depending on user input."
+msgstr ""
+
+#: contact-form-7/includes/config-validator.php:43
+msgid "This field has syntax errors."
+msgstr ""
+
+#: contact-form-7/includes/config-validator.php:45
+msgid "This email address does not belong to the same domain as the site."
+msgstr ""
+
+#: contact-form-7/includes/config-validator.php:47
+msgid "HTML tags are not allowed in a message."
+msgstr ""
+
#: contact-form-7/includes/contact-form-template.php:23
msgid "Your Name"
msgstr ""
msgid "Send"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:43
+#: contact-form-7/includes/contact-form-template.php:41
+#: contact-form-7/includes/contact-form-template.php:67
#, php-format
-msgid "From: %s"
+msgid "%1$s \"%2$s\""
msgstr ""
#: contact-form-7/includes/contact-form-template.php:45
#, php-format
-msgid "Subject: %s"
+msgid "From: %s"
msgstr ""
#: contact-form-7/includes/contact-form-template.php:47
-#: contact-form-7/includes/contact-form-template.php:68
+#, php-format
+msgid "Subject: %s"
+msgstr ""
+
+#: contact-form-7/includes/contact-form-template.php:49
+#: contact-form-7/includes/contact-form-template.php:72
msgid "Message Body:"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:50
-#: contact-form-7/includes/contact-form-template.php:71
+#: contact-form-7/includes/contact-form-template.php:52
+#: contact-form-7/includes/contact-form-template.php:75
#, php-format
msgid "This e-mail was sent from a contact form on %1$s (%2$s)"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:117
+#: contact-form-7/includes/contact-form-template.php:121
msgid "Sender's message was sent successfully"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:119
-msgid "Your message was sent successfully. Thanks."
+#: contact-form-7/includes/contact-form-template.php:123
+msgid "Thank you for your message. It has been sent."
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:124
-msgid "Sender's message was failed to send"
+#: contact-form-7/includes/contact-form-template.php:128
+msgid "Sender's message failed to send"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:126
-#: contact-form-7/includes/contact-form-template.php:140
-msgid ""
-"Failed to send your message. Please try later or contact the administrator "
-"by another method."
+#: contact-form-7/includes/contact-form-template.php:130
+#: contact-form-7/includes/contact-form-template.php:144
+msgid "There was an error trying to send your message. Please try again later."
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:131
+#: contact-form-7/includes/contact-form-template.php:135
msgid "Validation errors occurred"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:133
-msgid ""
-"Validation errors occurred. Please confirm the fields and submit it again."
+#: contact-form-7/includes/contact-form-template.php:137
+msgid "One or more fields have an error. Please check and try again."
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:138
+#: contact-form-7/includes/contact-form-template.php:142
msgid "Submission was referred to as spam"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:145
+#: contact-form-7/includes/contact-form-template.php:149
msgid "There are terms that the sender must accept"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:147
-msgid "Please accept the terms to proceed."
+#: contact-form-7/includes/contact-form-template.php:151
+msgid "You must accept the terms and conditions before sending your message."
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:152
+#: contact-form-7/includes/contact-form-template.php:156
msgid "There is a field that the sender must fill in"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:154
-msgid "Please fill in the required field."
+#: contact-form-7/includes/contact-form-template.php:158
+msgid "The field is required."
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:159
+#: contact-form-7/includes/contact-form-template.php:163
msgid ""
-"There is a field that the user input is longer than the maximum allowed "
-"length"
+"There is a field with input that is longer than the maximum allowed length"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:161
-msgid "This input is too long."
+#: contact-form-7/includes/contact-form-template.php:165
+msgid "The field is too long."
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:166
+#: contact-form-7/includes/contact-form-template.php:170
msgid ""
-"There is a field that the user input is shorter than the minimum allowed "
-"length"
+"There is a field with input that is shorter than the minimum allowed length"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:168
-msgid "This input is too short."
+#: contact-form-7/includes/contact-form-template.php:172
+msgid "The field is too short."
msgstr ""
-#: contact-form-7/includes/contact-form.php:30
+#: contact-form-7/includes/contact-form.php:31
msgid "Contact Form"
msgstr ""
-#: contact-form-7/includes/contact-form.php:76
-#: contact-form-7/includes/contact-form.php:226
+#: contact-form-7/includes/contact-form.php:77
+#: contact-form-7/includes/contact-form.php:227
msgid "Untitled"
msgstr ""
-#: contact-form-7/includes/contact-form.php:152
+#: contact-form-7/includes/contact-form.php:153
#, php-format
msgid ""
"<code>%1$s</code> property of a <code>WPCF7_ContactForm</code> object is "
msgid "Sending ..."
msgstr ""
-#: contact-form-7/includes/l10n.php:11
-msgid "Afrikaans"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:12
-msgid "Albanian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:13
-msgid "Arabic"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:14
-msgid "Armenian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:15
-msgid "Azerbaijani"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:16
-msgid "Bangla"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:17
-msgid "Basque"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:18
-msgid "Belarusian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:19
-msgid "Bosnian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:20
-msgid "Bulgarian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:21
-msgid "Catalan"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:22
-msgid "Central Kurdish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:23
-msgid "Chinese (China)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:24
-msgid "Chinese (Taiwan)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:25
-msgid "Croatian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:26
-msgid "Czech"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:27
-msgid "Danish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:28
-msgid "Dutch"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:29
-msgid "English (United States)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:30
-msgid "Esperanto"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:31
-msgid "Estonian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:32
-msgid "Finnish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:33
-msgid "French (France)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:34
-msgid "Galician"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:35
-msgid "Gujarati"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:36
-msgid "Georgian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:37
-msgid "German"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:38
-msgid "Greek"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:39
-msgid "Haitian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:40
-msgid "Hebrew"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:41
-msgid "Hindi"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:42
-msgid "Hungarian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:43
-msgid "Indian Bengali"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:44
-msgid "Indonesian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:45
-msgid "Irish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:46
-msgid "Italian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:47
-msgid "Japanese"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:48
-msgid "Korean"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:49
-msgid "Latvian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:50
-msgid "Lithuanian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:51
-msgid "Macedonian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:52
-msgid "Malay"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:53
-msgid "Malayalam"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:54
-msgid "Maltese"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:55
-msgid "Norwegian (Bokmål)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:56
-msgid "Persian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:57
-msgid "Polish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:58
-msgid "Portuguese (Brazil)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:59
-msgid "Portuguese (Portugal)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:60
-msgid "Punjabi"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:61
-msgid "Russian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:62
-msgid "Romanian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:63
-msgid "Serbian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:64
-msgid "Sinhala"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:65
-msgid "Slovak"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:66
-msgid "Slovene"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:67
-msgid "Spanish (Spain)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:68
-msgid "Swedish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:69
-msgid "Tamil"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:70
-msgid "Thai"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:71
-msgid "Tagalog"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:72
-msgid "Turkish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:73
-msgid "Ukrainian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:74
-msgid "Vietnamese"
-msgstr ""
-
#: contact-form-7/modules/acceptance.php:130
msgid "acceptance"
msgstr ""
msgstr ""
#: contact-form-7/modules/date.php:118
-msgid "Date format seems invalid."
+msgid "The date format is incorrect."
msgstr ""
#: contact-form-7/modules/date.php:122
msgstr ""
#: contact-form-7/modules/date.php:123
-msgid "This date is too early."
+msgid "The date is before the earliest one allowed."
msgstr ""
#: contact-form-7/modules/date.php:127
msgstr ""
#: contact-form-7/modules/date.php:128
-msgid "This date is too late."
+msgid "The date is after the latest one allowed."
msgstr ""
#: contact-form-7/modules/date.php:139
msgstr ""
#: contact-form-7/modules/file.php:196
-msgid "Failed to upload file."
+msgid "There was an unknown error uploading the file."
msgstr ""
#: contact-form-7/modules/file.php:200
-msgid "Uploaded file is not allowed file type"
+msgid "Uploaded file is not allowed for file type"
msgstr ""
#: contact-form-7/modules/file.php:201
-msgid "This file type is not allowed."
+msgid "You are not allowed to upload files of this type."
msgstr ""
#: contact-form-7/modules/file.php:205
msgstr ""
#: contact-form-7/modules/file.php:206
-msgid "This file is too large."
+msgid "The file is too big."
msgstr ""
#: contact-form-7/modules/file.php:210
msgstr ""
#: contact-form-7/modules/file.php:211
-msgid "Failed to upload file. Error occurred."
+msgid "There was an error uploading the file."
msgstr ""
#: contact-form-7/modules/file.php:223
"folder or change its permission manually."
msgstr ""
-#: contact-form-7/modules/jetpack.php:20
-msgid "http://contactform7.com/jetpack-overrides-contact-forms/"
-msgstr ""
-
-#: contact-form-7/modules/jetpack.php:20
-msgid "Jetpack Overrides Contact Forms"
-msgstr ""
-
-#: contact-form-7/modules/jetpack.php:24
-#, php-format
-msgid ""
-"Jetpack may cause problems for other plugins in certain cases. For more "
-"details, see %s."
-msgstr ""
-
#: contact-form-7/modules/number.php:120
msgid "Number format that the sender entered is invalid"
msgstr ""
#: contact-form-7/modules/number.php:121
-msgid "Number format seems invalid."
+msgid "The number format is invalid."
msgstr ""
#: contact-form-7/modules/number.php:125
msgstr ""
#: contact-form-7/modules/number.php:126
-msgid "This number is too small."
+msgid "The number is smaller than the minimum allowed."
msgstr ""
#: contact-form-7/modules/number.php:130
msgstr ""
#: contact-form-7/modules/number.php:131
-msgid "This number is too large."
+msgid "The number is larger than the maximum allowed."
msgstr ""
#: contact-form-7/modules/number.php:142
msgstr ""
#: contact-form-7/modules/quiz.php:150
-msgid "Your answer is not correct."
+msgid "The answer to the quiz is incorrect."
msgstr ""
#: contact-form-7/modules/quiz.php:161
msgstr ""
#: contact-form-7/modules/text.php:170
-msgid "Email address seems invalid."
+msgid "The e-mail address entered is invalid."
msgstr ""
#: contact-form-7/modules/text.php:174
msgstr ""
#: contact-form-7/modules/text.php:175
-msgid "URL seems invalid."
+msgid "The URL is invalid."
msgstr ""
#: contact-form-7/modules/text.php:179
msgstr ""
#: contact-form-7/modules/text.php:180
-msgid "Telephone number seems invalid."
+msgid "The telephone number is invalid."
msgstr ""
#: contact-form-7/modules/text.php:191
-Contact Form 7 WordPress Plugin, 2007-2015 Takayuki Miyoshi
+Contact Form 7 WordPress Plugin, 2007-2016 Takayuki Miyoshi
Contact Form 7 is distributed under the terms of the GNU GPL
This program is free software; you can redistribute it and/or modify
return array_merge( $messages, array(
'invalid_date' => array(
'description' => __( "Date format that the sender entered is invalid", 'contact-form-7' ),
- 'default' => __( 'Date format seems invalid.', 'contact-form-7' )
+ 'default' => __( "The date format is incorrect.", 'contact-form-7' )
),
'date_too_early' => array(
'description' => __( "Date is earlier than minimum limit", 'contact-form-7' ),
- 'default' => __( 'This date is too early.', 'contact-form-7' )
+ 'default' => __( "The date is before the earliest one allowed.", 'contact-form-7' )
),
'date_too_late' => array(
'description' => __( "Date is later than maximum limit", 'contact-form-7' ),
- 'default' => __( 'This date is too late.', 'contact-form-7' )
+ 'default' => __( "The date is after the latest one allowed.", 'contact-form-7' )
) ) );
}
return array_merge( $messages, array(
'upload_failed' => array(
'description' => __( "Uploading a file fails for any reason", 'contact-form-7' ),
- 'default' => __( 'Failed to upload file.', 'contact-form-7' )
+ 'default' => __( "There was an unknown error uploading the file.", 'contact-form-7' )
),
'upload_file_type_invalid' => array(
- 'description' => __( "Uploaded file is not allowed file type", 'contact-form-7' ),
- 'default' => __( 'This file type is not allowed.', 'contact-form-7' )
+ 'description' => __( "Uploaded file is not allowed for file type", 'contact-form-7' ),
+ 'default' => __( "You are not allowed to upload files of this type.", 'contact-form-7' )
),
'upload_file_too_large' => array(
'description' => __( "Uploaded file is too large", 'contact-form-7' ),
- 'default' => __( 'This file is too large.', 'contact-form-7' )
+ 'default' => __( "The file is too big.", 'contact-form-7' )
),
'upload_failed_php_error' => array(
'description' => __( "Uploading a file fails for PHP error", 'contact-form-7' ),
- 'default' => __( 'Failed to upload file. Error occurred.', 'contact-form-7' )
+ 'default' => __( "There was an error uploading the file.", 'contact-form-7' )
)
) );
}
return;
}
- if ( $contactform->in_demo_mode() ) {
+ if ( $contactform->in_demo_mode()
+ || $contactform->is_true( 'do_not_store' ) ) {
return;
}
return array_merge( $messages, array(
'invalid_number' => array(
'description' => __( "Number format that the sender entered is invalid", 'contact-form-7' ),
- 'default' => __( 'Number format seems invalid.', 'contact-form-7' )
+ 'default' => __( "The number format is invalid.", 'contact-form-7' )
),
'number_too_small' => array(
'description' => __( "Number is smaller than minimum limit", 'contact-form-7' ),
- 'default' => __( 'This number is too small.', 'contact-form-7' )
+ 'default' => __( "The number is smaller than the minimum allowed.", 'contact-form-7' )
),
'number_too_large' => array(
'description' => __( "Number is larger than maximum limit", 'contact-form-7' ),
- 'default' => __( 'This number is too large.', 'contact-form-7' )
+ 'default' => __( "The number is larger than the maximum allowed.", 'contact-form-7' )
) ) );
}
function wpcf7_quiz_messages( $messages ) {
return array_merge( $messages, array( 'quiz_answer_not_correct' => array(
'description' => __( "Sender doesn't enter the correct answer to the quiz", 'contact-form-7' ),
- 'default' => __( 'Your answer is not correct.', 'contact-form-7' )
+ 'default' => __( "The answer to the quiz is incorrect.", 'contact-form-7' )
) ) );
}
return array_merge( $messages, array(
'invalid_email' => array(
'description' => __( "Email address that the sender entered is invalid", 'contact-form-7' ),
- 'default' => __( 'Email address seems invalid.', 'contact-form-7' )
+ 'default' => __( "The e-mail address entered is invalid.", 'contact-form-7' )
),
'invalid_url' => array(
'description' => __( "URL that the sender entered is invalid", 'contact-form-7' ),
- 'default' => __( 'URL seems invalid.', 'contact-form-7' )
+ 'default' => __( "The URL is invalid.", 'contact-form-7' )
),
'invalid_tel' => array(
'description' => __( "Telephone number that the sender entered is invalid", 'contact-form-7' ),
- 'default' => __( 'Telephone number seems invalid.', 'contact-form-7' )
+ 'default' => __( "The telephone number is invalid.", 'contact-form-7' )
) ) );
}
Contributors: takayukister
Donate link: http://contactform7.com/donate/
Tags: contact, form, contact form, feedback, email, ajax, captcha, akismet, multilingual
-Requires at least: 4.2
-Tested up to: 4.4
-Stable tag: 4.3.1
+Requires at least: 4.3
+Tested up to: 4.4.2
+Stable tag: 4.4
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
The following plugins are recommended for Contact Form 7 users:
-* [Flamingo](http://wordpress.org/extend/plugins/flamingo/) by Takayuki Miyoshi - With Flamingo, you can save submitted messages via contact forms in the database.
+* [Flamingo](https://wordpress.org/plugins/flamingo/) by Takayuki Miyoshi - With Flamingo, you can save submitted messages via contact forms in the database.
* [Postman](https://wordpress.org/plugins/postman-smtp/) by
Jason Hendriks - Postman is a next-generation SMTP Mailer, software that assists in the delivery of email generated by your WordPress site.
* [Contact Form 7: Accessible Defaults](https://wordpress.org/plugins/contact-form-7-accessible-defaults/) by Joe Dolson - Replaces the default Contact Form 7 form with an accessible equivalent and provides a suite of selectable base forms.
-* [Bogo](http://wordpress.org/extend/plugins/bogo/) by Takayuki Miyoshi - Bogo is a straight-forward multilingual plugin that doesn't cause headaches.
-
-= Translators =
-
-* Afrikaans (af) - Schalk Burger
-* Albanian (sq) - Olgi Zenullari
-* Arabic (ar) - Tarek Chaaban, Muhammed Lardi, Yaser Maadan
-* Armenian (hy_AM) - Emmanuelle Traduction
-* Azerbaijani (az) - Zaur Bayramov
-* Bangla (bn_BD) - SM Mehdi Akram
-* Basque (Euskara; eu) - karrikas
-* Belarusian (be_BY) - Igor Dubilei
-* Bosnian (bs_BA) - Vedran
-* Bulgarian (bg_BG) - Iliyan Darganov
-* Catalan (ca) - Jordi Sancho, Robert Buj, Jaume Aragay Badia, luba lee
-* Central Kurdish (ckb) - Mahr Hassan
-* Chinese (China; zh_CN) - Soz, Keefe Dunn, Stella Hu
-* Chinese (Taiwan; zh_TW) - James Wu
-* Croatian (hr) - tolingo Translation Services, Marko Puskaric, Sanjin Barac
-* Czech (cs_CZ) - Korry, Radovan Fiser, Tomas Vesely, Pavel Bilek, Vladislav Šenk
-* Danish (da_DK) - Jens Griebel, Georg S. Adamsen, Thomas Blomberg Hansen
-* Dutch (nl_NL) - Chris Devriese, Martin Hein, Rene, TenSheep, Tim de Hoog, Henk Buma
-* Esperanto (eo_EO) - Arkadiusz Zychewicz
-* Estonian (et) - Peeter Rahuvarm, Egon Elbre, Tanel Jüris
-* Finnish (fi) - Miika Turunen, Mediajalostamo, Jani Alha
-* French (fr_FR) - Jillij, Oncle Tom, Maître Mô, Emmanuel Simond, Hédi Sellami
-* Galician (gl_ES) - Arume Desenvolvementos Informáticos
-* Georgian (ka_GE) - Nodar Rocko Davituri
-* German (de_DE) - Marcel Spitau, Ivan Graf
-* Greek (el) - Nick Mouratidis, Pr. friedlich, John D. Dimoferlias
-* Gujarati (gu_IN) - Apoto
-* Haitian (ht) - Lam Tu Do
-* Hebrew (he_IL) - Yaron Ofer, Arik Galansky, Ahrale
-* Hindi (hi_IN) - Tarun Joshi, Ashish
-* Hungarian (hu_HU) - Andras Hirschler, János Csárdi-Braunstein, Farkas Győző
-* Indian Bengali (bn_IN) - Suman Manna
-* Indonesian (Bahasa Indonesia; id_ID) - Hendry Lee, Belajar Seo Indonesia
-* Irish (ga_IE) - Vikas Arora
-* Italian (it_IT) - Bruno, Gianni Diurno
-* Japanese (ja) - Takayuki Miyoshi
-* Korean (ko_KR) - Seong Eun Lee, Jong-In Kim, martian36
-* Latvian (lv) - Sandis Veinbergs
-* Lithuanian (lt_LT) - Ernestas Kardzys, Vincent G, Mantas Malcius
-* Macedonian (mk_MK) - Darko
-* Malay (ms_MY) - Zairul Azmil
-* Malayalam (ml_IN) - RAHUL.S.A
-* Maltese (mt_MT) - Ajoft Technologies
-* Norwegian (nb_NO) - Kjetil M. Bergem, aanvik.net, Peter Holme
-* Persian (Farsi; fa_IR) - Mohammad Musavi, Mohsen Firoozmandan, Ghaem Omidi, Ehsan Np
-* Polish (pl_PL) - Zbigniew Czernik, Daniel Fruzynski, RafalDesign, Bartosz Arendt
-* Portuguese (Brazil; pt_BR) - Leonardo Pinheiro, Henrique Vianna, Caciano Gabriel Batista, Gervásio Antônio, Gilvanilson Santos
-* Portuguese (Portugal; pt_PT) - Hugo Baeta, Pedro Nave, Pedro Mendonça
-* Punjabi (pa_IN) - Jasvinder Sing
-* Russian (ru_RU) - Dmitry Volotovich, Denis Voituk, twisted tits, kg69design
-* Romanian (ro_RO) - Stas Sushkov, Anunturi Jibo, Marius Olar, Inbox Translation
-* Serbian (sr_RS) - Vedran, Aleksandar Urošević
-* Sinhala (si_LK) - Nitin Aggarwal
-* Slovak (sk_SK) - Patrik Bóna, WordPress Slovakia
-* Slovene (sl_SI) - Mihael Simonič, Jani Roskar, Marko Ambrožič
-* Spanish (es_ES) - Jordi Sancho, Vladimir Prieto, Federico Mikaelian, Matias Baldanza, Carlos Agnese, Lourdes Cuesta, Carlos Oropesa, Ana Ayelén Martínez
-* Swedish (sv_SE) - Fredrik Jonsson, the Swedish community
-* Tagalog (tl) - Rupert Agnew Lanuza, Hanne, Language Connect
-* Tamil (ta) - Nitin Aggarwal
-* Thai (th) - ToshiK, kazama, TG Knowledge
-* Turkish (tr_TR) - Roman Neumuller, Hasan Yılmaz, Emin Buğra Saral, Burak Yavuz
-* Ukrainian (uk) - Andrey Kovba, Ukrainian WordPress localization team, Myroslava Pabyrivska
-* Vietnamese (vi) - Thanh Hải, Hà, Khang Minh
-
-If you have created your own language pack, or have an update of an existing one, you can send [gettext PO and MO files](http://codex.wordpress.org/Translating_WordPress) to [me](http://ideasilo.wordpress.com/about/) so that I can bundle it into Contact Form 7. You can download the latest [POT file](http://plugins.svn.wordpress.org/contact-form-7/trunk/languages/contact-form-7.pot), and [PO files in each language](http://plugins.svn.wordpress.org/contact-form-7/branches/languages/).
+* [Bogo](https://wordpress.org/plugins/bogo/) by Takayuki Miyoshi - Bogo is a straight-forward multilingual plugin that doesn't cause headaches.
+
+= Translations =
+
+You can [translate Contact Form 7](http://contactform7.com/translating-contact-form-7/) on [__translate.wordpress.org__](https://translate.wordpress.org/projects/wp-plugins/contact-form-7).
== Installation ==
For more information, see [Releases](http://contactform7.com/category/releases/).
+= 4.4 =
+
+* The configuration validator has been introduced.
+* The language selector has been removed from Add New Contact Form screen.
+* Attach a plain text version of the message when sending HTML mail.
+* Added do_not_store additional setting to tell data storage add-ons not to store data through the contact form.
+* The minimum required WordPress version has been changed from 4.2 to 4.3.
+
= 4.3.1 =
* Use wp_loaded action hook instead of init to initialize the controller process.
require_once WPCF7_PLUGIN_DIR . '/includes/submission.php';
require_once WPCF7_PLUGIN_DIR . '/includes/upgrade.php';
require_once WPCF7_PLUGIN_DIR . '/includes/integration.php';
+require_once WPCF7_PLUGIN_DIR . '/includes/config-validator.php';
if ( is_admin() ) {
require_once WPCF7_PLUGIN_DIR . '/admin/admin.php';
self::load_module( 'date' );
self::load_module( 'file' );
self::load_module( 'flamingo' );
- self::load_module( 'jetpack' );
self::load_module( 'listo' );
self::load_module( 'number' );
self::load_module( 'quiz' );
Author URI: http://ideasilo.wordpress.com/
Text Domain: contact-form-7
Domain Path: /languages/
-Version: 4.3.1
+Version: 4.4
*/
-define( 'WPCF7_VERSION', '4.3.1' );
+define( 'WPCF7_VERSION', '4.4' );
-define( 'WPCF7_REQUIRED_WP_VERSION', '4.2' );
+define( 'WPCF7_REQUIRED_WP_VERSION', '4.3' );
define( 'WPCF7_PLUGIN', __FILE__ );
define( 'WPCF7_USE_REALLY_SIMPLE_CAPTCHA', false );
}
+if ( ! defined( 'WPCF7_VALIDATE_CONFIGURATION' ) ) {
+ define( 'WPCF7_VALIDATE_CONFIGURATION', true );
+}
+
// Deprecated, not used in the plugin core. Use wpcf7_plugin_url() instead.
define( 'WPCF7_PLUGIN_URL', untrailingslashit( plugins_url( '', WPCF7_PLUGIN ) ) );
background-color: #ffffe0;
border: 1px solid #ffd975;
border-width: 1px 1px 1px 10px;
+}
+
+.wf-premium-callout {
+ border: 1px solid #00709E;
+ background-color: #ffffff;
+ padding: 16px;
+ margin: 20px 0 0;
+ max-width: 860px;
+}
+.wf-premium-callout h3 {
+ margin: 0 0 8px;
+ color: #11967A;
+}
+.wf-premium-callout ul {
+ margin: 8px 0;
+ padding: 0 0 0 15px;
+}
+.wf-premium-callout ul li {
+ list-style-type: disc;
+ margin: 0;
+ padding: 0;
+}
+.wf-premium-callout .center {
+ text-align: center;
+ margin: 0;
+}
+.wf-premium-callout .button-primary {
+ text-align: center;
+ text-transform: uppercase;
+ font-weight: bold;
+ background-color: #00709E;
}
\ No newline at end of file
<?php if($IPMsg){ echo "\n$IPMsg\n"; } ?>
<?php if(! $isPaid){ ?>
-NOTE: You are using the free version of Wordfence. Upgrading to the paid version of Wordfence gives you
-two factor authentication (sign-in via cellphone) and country blocking which are both effective methods to block attacks.
-A Premium Wordfence license also includes remote scanning with each scan of your site which can detect
-several additional website infections. Premium members can also schedule when website scans occur and
-can scan more than once per day.
+NOTE: You are using the free version of Wordfence. Upgrade to Premium today for less than $5 per month!
+ - Advanced features like IP reputation monitoring, country blocking, an advanced comment spam filter and cell phone sign-in give you the best protection available
+ - Remote, frequent and scheduled scans
+ - Access to Premium Support
+ - Discounts of up to 90% for multiyear and multi-license purchases
-As a Premium member you also get access to our priority support system located at http://support.wordfence.com/ and can file
-priority support tickets using our ticketing system.
-
-Click here to sign-up for the Premium version of Wordfence now.
+Click here to upgrade to Wordfence Premium:
https://www.wordfence.com/zz1/wordfence-signup/
-
<?php } ?>
--
<?php if(! $isPaid){ ?>
-<p>NOTE: You are using the free version of Wordfence. Upgrading to the paid version of Wordfence gives you
-two factor authentication (sign-in via cellphone) and country blocking which are both effective methods to block attacks.
-A Premium Wordfence license also includes remote scanning with each scan of your site which can detect
-several additional website infections. Premium members can also schedule when website scans occur and
-can scan more than once per day.</p>
-
-<p>As a Premium member you also get access to our priority support system located at http://support.wordfence.com/ and can file
-priority support tickets using our ticketing system. </p>
-
-<p>Click here to sign-up for the Premium version of Wordfence now.<br>
-<a href="https://www.wordfence.com/zz2/wordfence-signup/">https://www.wordfence.com/zz2/wordfence-signup/</a></p>
-
+ <p>NOTE: You are using the free version of Wordfence. Upgrade to Premium today for less than $5 per month!</p>
+ <ul>
+ <li>Advanced features like IP reputation monitoring, country blocking, an advanced comment spam filter and cell phone sign-in give you the best protection available</li>
+ <li>Remote, frequent and scheduled scans</li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% for multiyear and multi-license purchases</li>
+ </ul>
+
+ <p>
+ Click here to upgrade to Wordfence Premium:<br>
+ <a href="https://www.wordfence.com/zz2/wordfence-signup/">https://www.wordfence.com/zz2/wordfence-signup/</a>
+ </p>
<?php } ?>
<?php require('menuHeader.php'); ?>
<?php $pageTitle = "Block Selected Countries from Accessing your Site"; $helpLink="http://docs.wordfence.com/en/Country_blocking"; $helpLabel="Learn more about Country Blocking"; include('pageTitle.php'); ?>
<?php if(! wfConfig::get('isPaid')){ ?>
- <div class="wfPaidOnlyNotice">
- <strong>Country Blocking is only available to Premium Members at this time</strong><br /><br />
- Country Blocking is a premium feature because we have licensed a very accurate commercial geolocation database to provide this feature. If you would like to
- activate this feature, simply <a href="https://www.wordfence.com/gnl1countryBlock1/wordfence-signup/" target="_blank">click here and get a premium Wordfence API Key</a>, and then copy and paste it into your options page. You can <a href="http://docs.wordfence.com/en/Country_blocking" target="_blank">learn more about Country Blocking on our documentation website</a>.
- </div>
+ <div class="wf-premium-callout" style="margin: 20px">
+ <h3>Country Blocking is only available to Premium Members</h3>
+ <p>Country Blocking is a premium feature because we have licensed a very accurate commercial geolocation
+ database to provide this feature. Upgrade to Premium today:</p>
+ <ul>
+ <li>You can upgrade now for less than $5 per month</li>
+ <li>Other advanced features like IP reputation monitoring, an advanced comment spam filter, advanced
+ scanning options and cell phone sign-in give you the best protection available
+ </li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% available for multiyear and multi-license purchases</li>
+ </ul>
+ <p class="center"><a class="button button-primary"
+ href="https://www.wordfence.com/gnl1countryBlock1/wordfence-signup/">Get Premium</a></p>
+ </div>
<?php } ?>
<?php if(wfConfig::get('cacheType') == 'falcon'){ ?>
<div class="wfFalconNotice">
</tr>
<tr>
<td colspan="2">
- <?php if ( wfConfig::get( 'isPaid' ) ) { ?>
+ <?php if (wfConfig::get('isPaid')): ?>
<table border="0">
<tr>
<td><a href="https://www.wordfence.com/gnl1optMngKys/manage-wordfence-api-keys/"
onclick="WFAD.downgradeLicense();"/></td>
</tr>
</table>
- <?php } ?>
-
-
+ <?php else: ?>
+ <div class="wf-premium-callout">
+ <h3>Upgrade to Wordfence Premium today for less than $5 per month</h3>
+ <ul>
+ <li>Advanced features like IP reputation monitoring, country blocking, an advanced
+ comment spam filter and cell phone sign-in give you the best protection available
+ </li>
+ <li>Remote, frequent and scheduled scans</li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% for multiyear and multi-license purchases</li>
+ </ul>
+ <p class="center">
+ <a class="button button-primary"
+ href="https://www.wordfence.com/gnl1optCallout1/wordfence-signup/">
+ Get Premium</a></p>
+ </div>
+ <?php endif ?>
+ </td>
+ </tr>
<tr>
<td colspan="2"><h2>Basic Options<a href="http://docs.wordfence.com/en/Wordfence_options#Basic_Options"
target="_blank" class="wfhelp"></a></h2></td>
$helpLabel = "Learn more about Password Auditing";
include('pageTitle.php'); ?>
<?php if (!wfConfig::get('isPaid')) { ?>
- <div class="wfPaidOnlyNotice">
- <strong>Password Auditing is only available to Premium Members at this time</strong><br/><br/>
- Wordfence Password Auditing uses our high performance password auditing cluster to test the strength of your admin and user passwords.
- We securely simulate a high-performance password cracking attack on your password database and will alert you to weak passwords.
- We then provide a way to change weak passwords or alert members that they need to improve their password strength.
- To activate this feature, simply
- <a href="https://www.wordfence.com/gnl1pwAuditUp1/wordfence-signup/" target="_blank">click here and get a premium Wordfence API Key</a>, and then copy and paste it into your options page. You can
- <a href="http://docs.wordfence.com/en/Wordfence_Password_Auditing" target="_blank">learn more about Password Auditing on our Documentation Website</a>.
+ <div class="wf-premium-callout" style="margin: 20px 0 20px 20px; width: 700px;">
+ <h3>Password Auditing is only available to Premium Members</h3>
+ <p>Wordfence Password Auditing uses our high performance password auditing cluster to test the strength of your admin and user passwords. We securely simulate a high-performance password cracking attack on your password database and will alert you to weak passwords. We then provide a way to change weak passwords or alert members that they need to improve their password strength. Upgrade to Premium today:</p>
+ <ul>
+ <li>You can upgrade now for less than $5 per month</li>
+ <li>Other advanced features like IP reputation monitoring, an advanced comment spam filter, advanced scanning options, cell phone sign-in and country blocking give you the best protection available</li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% available for multiyear and multi-license purchases</li>
+ </ul>
+
+ <p class="center"><a class="button button-primary" href="https://www.wordfence.com/gnl1pwAuditUp1/wordfence-signup/">Get Premium</a></p>
</div>
<?php } ?>
Premium scanning enabled.
</div>
<?php } else { ?>
- <div style="margin: 0 0 20px 5px; width: 795px;">
- <strong style="color: #F00;">How to upgrade:</strong> If you would like access to our <a href="http://support.wordfence.com/" target="_blank">Premium Support help system</a> and features like Cellphone Sign-in, Country Blocking, external site scanning and the ability to schedule scans, simply <a href="https://www.wordfence.com/gnl1scanUpgrade/wordfence-signup/" target="_blank">visit our Wordfence Premium sign-up page</a> and sign up for a Premium Wordfence API key. Then go to the Wordfence options page on this site and replace your free API key with your new premium key. You will immediately be upgraded to Wordfence Premium with all the features it includes and you will have instant access to our ticketing system on <a href="http://support.wordfence.com/" target="_blank">support.wordfence.com</a>.
- </div>
+ <div class="wf-premium-callout" style="margin: 20px 0 20px 2px;width: 765px;">
+ <h3>Upgrade to Wordfence Premium today for less than $5 per month</h3>
+ <ul>
+ <li>Advanced features like IP reputation monitoring, country blocking, an advanced comment spam
+ filter and cell phone sign-in give you the best protection available
+ </li>
+ <li>Remote, frequent and scheduled scans</li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% for multiyear and multi-license purchases</li>
+ </ul>
+ <p class="center"><a class="button button-primary"
+ href="https://www.wordfence.com/gnl1scanUpgrade/wordfence-signup/">
+ Get Premium</a></p>
+ </div>
+
<?php } ?>
<div class="consoleHead" style="margin-top: 20px;">
<?php require('menuHeader.php'); ?>
<?php $pageTitle = "Schedule when Wordfence Scans Occur"; $helpLink="http://docs.wordfence.com/en/Wordfence_scan_scheduling"; $helpLabel="Learn more about Scheduling Wordfence Scans"; include('pageTitle.php'); ?>
<?php if(! wfConfig::get('isPaid')){ ?>
- <div class="wfPaidOnlyNotice">
- <strong>Scan Scheduling is only available to Premium Members at this time</strong><br /><br />
- Scan Scheduling is a premium feature because it places additional load on our scanning servers. If you would like to
- activate this feature, simply <a href="https://www.wordfence.com/gnl1scanSched1/wordfence-signup/" target="_blank">click here and get a premium Wordfence API Key</a>, and then copy and paste it into your options
- page.
- </div>
+ <div class="wf-premium-callout" style="margin: 20px;">
+ <h3>Scan Scheduling is only available to Premium Members</h3>
+ <p>Scan Scheduling is a premium feature because it places additional load on our scanning servers. Premium users
+ can increase their WordPress protection by controlling scan frequency up to once per hour. Premium also
+ allows you to control when Wordfence initiates a scan, selecting optimal times that don’t interfere with
+ high-traffic or optimal usage of your site. Upgrade to Premium today:</p>
+ <ul>
+ <li>You can upgrade now for less than $5 per month</li>
+ <li>Other advanced features like IP reputation monitoring, an advanced comment spam filter, country blocking
+ and cell phone sign-in give you the best protection available
+ </li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% available for multiyear and multi-license purchases</li>
+ </ul>
+ <p class="center"><a class="button button-primary"
+ href="https://www.wordfence.com/gnl1scanSched1/wordfence-signup/">Get Premium</a></p>
+ </div>
<?php } ?>
<div class="wordfenceWrap" style="margin: 20px 20px 20px 30px;">
<?php require('menuHeader.php'); ?>
<?php $pageTitle = "Cellphone Sign-in"; $helpLink="http://docs.wordfence.com/en/Cellphone_sign-in"; $helpLabel="Learn more about Cellphone Sign-in"; include('pageTitle.php'); ?>
<?php if(! wfConfig::get('isPaid')){ ?>
- <div class="wfPaidOnlyNotice">
- <strong>Cellphone Sign-in is only available to Premium Members at this time</strong><br /><br />
- Cellphone Sign-in is a premium feature because we are charged per SMS we send when a user signs in. If you would like to
- activate this feature, simply <a href="https://www.wordfence.com/gnl1twoFac1/wordfence-signup/" target="_blank">click here and get a premium Wordfence API Key</a>, and then copy and paste it into your options page.
- <br /><br />
- Wordfence's Cellphone Sign-in uses a technique called "Two Factor Authentication" which is used by banks, government agencies and military world-wide as one of the most secure forms of remote system authentication. It's now available from Wordfence for your WordPress website. We recommend you enable Cellphone Sign-in for all Administrator level accounts. You can <a href="http://docs.wordfence.com/en/Cellphone_sign-in" target="_blank">learn more about Cellphone Sign-in on our documentation website</a>.
- </div>
+ <div class="wf-premium-callout" style="margin: 20px 0 20px 20px; width: 700px;">
+ <h3>Cellphone Sign-in is only available to Premium Members</h3>
+
+ <p>This is a premium feature because we are charged per SMS we send when a user signs in. Upgrade to Premium
+ today:</p>
+ <ul>
+ <li>You can upgrade now for less than $5 per month</li>
+ <li>Other advanced features like IP reputation monitoring, an advanced comment spam filter, advanced
+ scanning options and country blocking give you the best protection available
+ </li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% available for multiyear and multi-license purchases</li>
+ </ul>
+ <p>Wordfence's Cellphone Sign-in uses a technique called "Two Factor Authentication" which is used by banks,
+ government agencies and military world-wide as one of the most secure forms of remote system authentication.
+ It's now available from Wordfence for your WordPress website. We recommend you enable Cellphone Sign-in for
+ all Administrator level accounts.</p>
+
+ <p class="center"><a class="button button-primary"
+ href="https://www.wordfence.com/gnl1twoFac1/wordfence-signup/">Get Premium</a></p>
+ </div>
+
<?php } ?>
<div class="wordfenceWrap" style="margin: 20px 20px 20px 30px;">
}
/**
- * Generate SQL from the whitelist. Uses the return format from wfLog::getWhitelistedIPs
+ * Generate SQL from the whitelist. Uses the return format from wfUtils::getIPWhitelist
*
- * @see wfLog::getWhitelistedIPs
+ * @see wfUtils::getIPWhitelist
* @param array $whitelisted_ips
* @return string
*/
public function getBlockedIPWhitelistWhereClause($whitelisted_ips = null) {
if ($whitelisted_ips === null) {
- $whitelisted_ips = wordfence::getLog()->getWhitelistedIPs();
+ $whitelisted_ips = wfUtils::getIPWhitelist();
}
if (!is_array($whitelisted_ips)) {
return false;
}
$where = '';
- /** @var array|wfUserIPRange|string $ip_range */
+
foreach ($whitelisted_ips as $ip_range) {
- if (is_array($ip_range) && count($ip_range) == 2) {
- $where .= $this->db->prepare('IP BETWEEN %s AND %s', $ip_range[0], $ip_range[1]) . ' OR ';
- } elseif (is_a($ip_range, 'wfUserIPRange')) {
- $where .= $ip_range->toSQL('IP') . ' OR ';
- } elseif (is_string($ip_range) || is_numeric($ip_range)) {
- $where .= $this->db->prepare('IP = %s', $ip_range) . ' OR ';
+ if (!is_a($ip_range, 'wfUserIPRange')) {
+ $ip_range = wfUtils::CIDR2wfUserIPRange($ip_range);
}
+
+ $where .= $ip_range->toSQL('IP') . ' OR ';
}
if ($where) {
// remove the extra ' OR '
--- /dev/null
+<?php
+/**
+ * Addresses should be in human readable format as a single IP (e.g. 1.2.3.4) or CIDR (e.g. 1.2.3.4/32)
+ */
+$wfIPWhitelist = array(
+ 'private' => array(
+ //We've modified this and removed some addresses which may be routable on the Net and cause auto-whitelisting.
+ //'0.0.0.0/8', #Broadcast addr
+ '10.0.0.0/8', #Private addrs
+ //'100.64.0.0/10', #carrier-grade-nat for comms between ISP and subscribers
+ '127.0.0.0/8', #loopback
+ //'169.254.0.0/16', #link-local when DHCP fails e.g. os x
+ '172.16.0.0/12', #private addrs
+ '192.0.0.0/29', #used for NAT with IPv6, so basically a private addr
+ //'192.0.2.0/24', #Only for use in docs and examples, not for public use
+ //'192.88.99.0/24', #Used by 6to4 anycast relays
+ '192.168.0.0/16', #Used for local communications within a private network
+ //'198.18.0.0/15', #Used for testing of inter-network communications between two separate subnets
+ //'198.51.100.0/24', #Assigned as "TEST-NET-2" in RFC 5737 for use solely in documentation and example source code and should not be used publicly.
+ //'203.0.113.0/24', #Assigned as "TEST-NET-3" in RFC 5737 for use solely in documentation and example source code and should not be used publicly.
+ //'224.0.0.0/4', #Reserved for multicast assignments as specified in RFC 5771
+ //'240.0.0.0/4', #Reserved for future use, as specified by RFC 6890
+ //'255.255.255.255/32', #Reserved for the "limited broadcast" destination address, as specified by RFC 6890
+ ),
+ 'wordfence' => array(
+ // 69.46.36.1 - 69.46.36.32
+ '69.46.36.1/32',
+ '69.46.36.2/31',
+ '69.46.36.4/30',
+ '69.46.36.8/29',
+ '69.46.36.16/28',
+ '69.46.36.32/32',
+ ),
+ 'sucuri' => array(
+ '97.74.127.171',
+ '69.164.203.172',
+ '173.230.128.135',
+ '66.228.34.49',
+ '66.228.40.185',
+ '50.116.36.92',
+ '50.116.36.93',
+ '50.116.3.171',
+ '198.58.96.212',
+ '50.116.63.221',
+ '192.155.92.112',
+ '192.81.128.31',
+ '198.58.106.244',
+ '192.155.95.139',
+ '23.239.9.227',
+ '198.58.112.103',
+ '192.155.94.43',
+ '162.216.16.33',
+ '173.255.233.124',
+ '173.255.233.124',
+ '192.155.90.179',
+ '50.116.41.217',
+ '192.81.129.227',
+ '198.58.111.80',
+ '162.216.19.183',
+ ),
+ 'facebook' => array(
+ '204.15.20.0/22',
+ '69.63.176.0/20',
+ '66.220.144.0/20',
+ '66.220.144.0/21',
+ '69.63.184.0/21',
+ '69.63.176.0/21',
+ '74.119.76.0/22',
+ '69.171.255.0/24',
+ '173.252.64.0/18',
+ '69.171.224.0/19',
+ '69.171.224.0/20',
+ '103.4.96.0/22',
+ '69.63.176.0/24',
+ '173.252.64.0/19',
+ '173.252.70.0/24',
+ '31.13.64.0/18',
+ '31.13.24.0/21',
+ '66.220.152.0/21',
+ '66.220.159.0/24',
+ '69.171.239.0/24',
+ '69.171.240.0/20',
+ '31.13.64.0/19',
+ '31.13.64.0/24',
+ '31.13.65.0/24',
+ '31.13.67.0/24',
+ '31.13.68.0/24',
+ '31.13.69.0/24',
+ '31.13.70.0/24',
+ '31.13.71.0/24',
+ '31.13.72.0/24',
+ '31.13.73.0/24',
+ '31.13.74.0/24',
+ '31.13.75.0/24',
+ '31.13.76.0/24',
+ '31.13.77.0/24',
+ '31.13.96.0/19',
+ '31.13.66.0/24',
+ '173.252.96.0/19',
+ '69.63.178.0/24',
+ '31.13.78.0/24',
+ '31.13.79.0/24',
+ '31.13.80.0/24',
+ '31.13.82.0/24',
+ '31.13.83.0/24',
+ '31.13.84.0/24',
+ '31.13.85.0/24',
+ '31.13.86.0/24',
+ '31.13.87.0/24',
+ '31.13.88.0/24',
+ '31.13.89.0/24',
+ '31.13.90.0/24',
+ '31.13.91.0/24',
+ '31.13.92.0/24',
+ '31.13.93.0/24',
+ '31.13.94.0/24',
+ '31.13.95.0/24',
+ '69.171.253.0/24',
+ '69.63.186.0/24',
+ '31.13.81.0/24',
+ '179.60.192.0/22',
+ '179.60.192.0/24',
+ '179.60.193.0/24',
+ '179.60.194.0/24',
+ '179.60.195.0/24',
+ '185.60.216.0/22',
+ '45.64.40.0/22',
+ '185.60.216.0/24',
+ '185.60.217.0/24',
+ '185.60.218.0/24',
+ '185.60.219.0/24',
+ '129.134.0.0/16',
+ '157.240.0.0/16',
+ '204.15.20.0/22',
+ '69.63.176.0/20',
+ '69.63.176.0/21',
+ '69.63.184.0/21',
+ '66.220.144.0/20',
+ '69.63.176.0/20',
+ '2620:0:1c00::/40',
+ '2a03:2880::/32',
+ '2a03:2880:fffe::/48',
+ '2a03:2880:ffff::/48',
+ '2620:0:1cff::/48',
+ '2a03:2880:f000::/48',
+ '2a03:2880:f001::/48',
+ '2a03:2880:f002::/48',
+ '2a03:2880:f003::/48',
+ '2a03:2880:f004::/48',
+ '2a03:2880:f005::/48',
+ '2a03:2880:f006::/48',
+ '2a03:2880:f007::/48',
+ '2a03:2880:f008::/48',
+ '2a03:2880:f009::/48',
+ '2a03:2880:f00a::/48',
+ '2a03:2880:f00b::/48',
+ '2a03:2880:f00c::/48',
+ '2a03:2880:f00d::/48',
+ '2a03:2880:f00e::/48',
+ '2a03:2880:f00f::/48',
+ '2a03:2880:f010::/48',
+ '2a03:2880:f011::/48',
+ '2a03:2880:f012::/48',
+ '2a03:2880:f013::/48',
+ '2a03:2880:f014::/48',
+ '2a03:2880:f015::/48',
+ '2a03:2880:f016::/48',
+ '2a03:2880:f017::/48',
+ '2a03:2880:f018::/48',
+ '2a03:2880:f019::/48',
+ '2a03:2880:f01a::/48',
+ '2a03:2880:f01b::/48',
+ '2a03:2880:f01c::/48',
+ '2a03:2880:f01d::/48',
+ '2a03:2880:f01e::/48',
+ '2a03:2880:f01f::/48',
+ '2a03:2880:1000::/36',
+ '2a03:2880:2000::/36',
+ '2a03:2880:3000::/36',
+ '2a03:2880:4000::/36',
+ '2a03:2880:5000::/36',
+ '2a03:2880:6000::/36',
+ '2a03:2880:7000::/36',
+ '2a03:2880:f020::/48',
+ '2a03:2880:f021::/48',
+ '2a03:2880:f022::/48',
+ '2a03:2880:f023::/48',
+ '2a03:2880:f024::/48',
+ '2a03:2880:f025::/48',
+ '2a03:2880:f026::/48',
+ '2a03:2880:f027::/48',
+ '2a03:2880:f028::/48',
+ '2a03:2880:f029::/48',
+ '2a03:2880:f02a::/48',
+ '2a03:2880:f02b::/48',
+ '2a03:2880:f02c::/48',
+ '2a03:2880:f02d::/48',
+ '2a03:2880:f02e::/48',
+ '2a03:2880:f02f::/48',
+ '2a03:2880:f030::/48',
+ '2a03:2880:f031::/48',
+ '2a03:2880:f032::/48',
+ '2a03:2880:f033::/48',
+ '2a03:2880:f034::/48',
+ '2a03:2880:f035::/48',
+ '2a03:2880:f036::/48',
+ '2a03:2880:f037::/48',
+ '2a03:2880:f038::/48',
+ '2a03:2880:f039::/48',
+ '2a03:2880:f03a::/48',
+ '2a03:2880:f03b::/48',
+ '2a03:2880:f03c::/48',
+ '2a03:2880:f03d::/48',
+ '2a03:2880:f03e::/48',
+ '2a03:2880:f03f::/48',
+ '2401:db00::/32',
+ '2a03:2880::/36',
+ '2803:6080::/32',
+ ),
+);
\ No newline at end of file
* @return bool
*/
public function isWhitelisted($IP) {
- $wfIPBlock = new wfUserIPRange('69.46.36.[1-32]');
- if ($wfIPBlock->isIPInRange($IP)) { //IP is in Wordfence's IP block which would prevent our scanning server manually kicking off scans that are stuck
- return true;
- }
- //We now whitelist all private addrs
- if (wfUtils::isPrivateAddress($IP)) {
- return true;
- }
- //These belong to sucuri's scanning servers which will get blocked by Wordfence as a false positive if you try a scan. So we whitelisted them.
- $externalWhite = array('97.74.127.171', '69.164.203.172', '173.230.128.135', '66.228.34.49', '66.228.40.185', '50.116.36.92', '50.116.36.93', '50.116.3.171', '198.58.96.212', '50.116.63.221', '192.155.92.112', '192.81.128.31', '198.58.106.244', '192.155.95.139', '23.239.9.227', '198.58.112.103', '192.155.94.43', '162.216.16.33', '173.255.233.124', '173.255.233.124', '192.155.90.179', '50.116.41.217', '192.81.129.227', '198.58.111.80', '162.216.19.183');
- if (in_array($IP, $externalWhite)) {
- return true;
- }
- $list = wfConfig::get('whitelisted');
- if (!$list) {
- return false;
- }
- $list = explode(',', $list);
- if (sizeof($list) < 1) {
- return false;
- }
- foreach ($list as $whiteIP) {
- $white_ip_block = new wfUserIPRange($whiteIP);
- if ($white_ip_block->isIPInRange($IP)) {
+ foreach (wfUtils::getIPWhitelist() as $subnet) {
+ if ($subnet instanceof wfUserIPRange) {
+ if ($subnet->isIPInRange($IP)) {
+ return true;
+ }
+ } elseif (wfUtils::subnetContainsIP($subnet, $IP)) {
return true;
}
}
- return false;
- }
-
- /**
- * Get an array of static IPs, tuple for a numeric IP range, or a wfUserIPRange object to define and test a range
- * like [127-128].0.0.[1-40]
- *
- * @see wfUserIPRange
- * @param null $user_whitelisted
- * @return array
- */
- public function getWhitelistedIPs($user_whitelisted = null) {
- $white_listed_ips = array();
- // Wordfence's IP block which would prevent our scanning server manually kicking off scans that are stuck
- $white_listed_ips[] = array(1160651777, 1160651808);
-
- // Private range
- $private_range = wfUtils::getPrivateAddrs();
- foreach ($private_range as $ip_range) {
- $white_listed_ips[] = array($ip_range[1], $ip_range[2]);
- }
-
- // These belong to sucuri's scanning servers which will get blocked by Wordfence as a false positive if you try a scan. So we whitelisted them.
- $white_listed_ips = array_merge($white_listed_ips, array_map(array('wfUtils', 'inet_pton'), array('97.74.127.171', '69.164.203.172', '173.230.128.135', '66.228.34.49', '66.228.40.185', '50.116.36.92', '50.116.36.93', '50.116.3.171', '198.58.96.212', '50.116.63.221', '192.155.92.112', '192.81.128.31', '198.58.106.244', '192.155.95.139', '23.239.9.227', '198.58.112.103', '192.155.94.43', '162.216.16.33', '173.255.233.124', '173.255.233.124', '192.155.90.179', '50.116.41.217', '192.81.129.227', '198.58.111.80', '162.216.19.183')));
-
- if ($user_whitelisted === null) {
- $user_whitelisted = wfConfig::get('whitelisted');
- }
-
- if ($user_whitelisted) {
- $user_whitelisted = explode(',', $user_whitelisted);
- foreach ($user_whitelisted as $whiteIP) {
- $white_listed_ips[] = new wfUserIPRange($whiteIP);
- }
- }
- return $white_listed_ips;
+ return false;
}
public function unblockAllIPs(){
require_once('wfConfig.php');
require_once('wfCountryMap.php');
class wfUtils {
- #We've modified this and removed some addresses which may be routable on the Net and cause auto-whitelisting.
- private static $privateAddrs = array(
- //array('0.0.0.0/8',0,16777215), #Broadcast addr
- array('10.0.0.0/8',167772160,184549375), #Private addrs
- //array('100.64.0.0/10',1681915904,1686110207), #carrier-grade-nat for comms between ISP and subscribers
- array('127.0.0.0/8',2130706432,2147483647), #loopback
- //array('169.254.0.0/16',2851995648,2852061183), #link-local when DHCP fails e.g. os x
- array('172.16.0.0/12',2886729728,2887778303), #private addrs
- array('192.0.0.0/29',3221225472,3221225479), #used for NAT with IPv6, so basically a private addr
- //array('192.0.2.0/24',3221225984,3221226239), #Only for use in docs and examples, not for public use
- //array('192.88.99.0/24',3227017984,3227018239), #Used by 6to4 anycast relays
- array('192.168.0.0/16',3232235520,3232301055), #Used for local communications within a private network
- //array('198.18.0.0/15',3323068416,3323199487), #Used for testing of inter-network communications between two separate subnets
- //array('198.51.100.0/24',3325256704,3325256959), #Assigned as "TEST-NET-2" in RFC 5737 for use solely in documentation and example source code and should not be used publicly.
- //array('203.0.113.0/24',3405803776,3405804031), #Assigned as "TEST-NET-3" in RFC 5737 for use solely in documentation and example source code and should not be used publicly.
- //array('224.0.0.0/4',3758096384,4026531839), #Reserved for multicast assignments as specified in RFC 5771
- //array('240.0.0.0/4',4026531840,4294967295), #Reserved for future use, as specified by RFC 6890
- //array('255.255.255.255/32',4294967295,4294967295) #Reserved for the "limited broadcast" destination address, as specified by RFC 6890
- );
private static $isWindows = false;
public static $scanLockFH = false;
private static $lastErrorReporting = false;
return round($bytes, $precision) . ' ' . $units[$pow];
}
+ /**
+ * Check if an IP address is in a network block
+ *
+ * @param string $subnet Single IP or subnet in CIDR notation (e.g. '192.168.100.0' or '192.168.100.0/22')
+ * @param string $ip IPv4 or IPv6 address in dot or colon notation
+ * @return boolean
+ */
+ public static function subnetContainsIP($subnet, $ip) {
+ list($network, $prefix) = array_pad(explode('/', $subnet, 2), 2, null);
+
+ if (filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
+ // If no prefix was supplied, 32 is implied for IPv4
+ if ($prefix === null) {
+ $prefix = 32;
+ }
+
+ // Validate the IPv4 network prefix
+ if ($prefix < 0 || $prefix > 32) {
+ return false;
+ }
+
+ // Increase the IPv4 network prefix to work in the IPv6 address space
+ $prefix += 96;
+ } else {
+ // If no prefix was supplied, 128 is implied for IPv6
+ if ($prefix === null) {
+ $prefix = 128;
+ }
+
+ // Validate the IPv6 network prefix
+ if ($prefix < 1 || $prefix > 128) {
+ return false;
+ }
+ }
+
+ // Convert human readable addresses to 128 bit (IPv6) binary strings
+ // Note: self::inet_pton converts IPv4 addresses to IPv6 compatible versions
+ $binary_network = str_pad(wfHelperBin::bin2str(self::inet_pton($network)), 128, '0', STR_PAD_LEFT);
+ $binary_ip = str_pad(wfHelperBin::bin2str(self::inet_pton($ip)), 128, '0', STR_PAD_LEFT);
+
+ return 0 === substr_compare($binary_ip, $binary_network, 0, $prefix);
+ }
+
+ /**
+ * Convert CIDR notation to a wfUserIPRange object
+ *
+ * @param string $cidr
+ * @return wfUserIPRange
+ */
+ public static function CIDR2wfUserIPRange($cidr) {
+ list($network, $prefix) = array_pad(explode('/', $cidr, 2), 2, null);
+ $ip_range = new wfUserIPRange();
+
+ if (filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
+ // If no prefix was supplied, 32 is implied for IPv4
+ if ($prefix === null) {
+ $prefix = 32;
+ }
+
+ // Validate the IPv4 network prefix
+ if ($prefix < 0 || $prefix > 32) {
+ return $ip_range;
+ }
+
+ // Increase the IPv4 network prefix to work in the IPv6 address space
+ $prefix += 96;
+ } else {
+ // If no prefix was supplied, 128 is implied for IPv6
+ if ($prefix === null) {
+ $prefix = 128;
+ }
+
+ // Validate the IPv6 network prefix
+ if ($prefix < 1 || $prefix > 128) {
+ return $ip_range;
+ }
+ }
+
+ // Convert human readable address to 128 bit (IPv6) binary string
+ // Note: self::inet_pton converts IPv4 addresses to IPv6 compatible versions
+ $binary_network = self::inet_pton($network);
+ $binary_mask = wfHelperBin::str2bin(str_pad(str_repeat('1', $prefix), 128, '0', STR_PAD_RIGHT));
+
+ // Calculate first and last address
+ $binary_first = $binary_network & $binary_mask;
+ $binary_last = $binary_network | ~ $binary_mask;
+
+ // Convert binary addresses back to human readable strings
+ $first = self::inet_ntop($binary_first);
+ $last = self::inet_ntop($binary_last);
+
+ // Split addresses into segments
+ $first_array = preg_split('/[\.\:]/', $first);
+ $last_array = preg_split('/[\.\:]/', $last);
+
+ // Make sure arrays are the same size. IPv6 '::' could cause problems otherwise.
+ // The strlen filter should leave zeros in place
+ $first_array = array_pad(array_filter($first_array, 'strlen'), count($last_array), '0');
+
+ $range_segments = array();
+
+ foreach ($first_array as $index => $segment) {
+ if ($segment === $last_array[$index]) {
+ $range_segments[] = $segment;
+ } else if ($segment === '' || $last_array[$index] === '') {
+ $range_segments[] = '';
+ } else {
+ $range_segments[] = "[{$segment}-{$last_array[$index]}]";
+ }
+ }
+
+ $delimiter = filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ? '.' : ':';
+
+ $ip_range->setIPString(implode($delimiter, $range_segments));
+
+ return $ip_range;
+ }
+
/**
* Return dot notation of IPv4 address.
*
return rand(11,230) . '.' . rand(0,255) . '.' . rand(0,255) . '.' . rand(0,255);
}
+ /**
+ * Get the list of whitelisted IPs and networks
+ *
+ * Results may include wfUserIPRange objects for now. Ideally everything would be in CIDR notation.
+ *
+ * @param string $filter Group name to filter whitelist by
+ * @return array
+ */
+ public static function getIPWhitelist($filter = null) {
+ static $wfIPWhitelist;
+
+ if (!isset($wfIPWhitelist)) {
+ include('wfIPWhitelist.php');
+
+ // Memoize user defined whitelist IPs and ranges
+ // TODO: Convert everything to CIDR
+ $wfIPWhitelist['user'] = array();
+
+ foreach (array_filter(explode(',', wfConfig::get('whitelisted'))) as $ip) {
+ $wfIPWhitelist['user'][] = new wfUserIPRange($ip);
+ }
+ }
+
+ $whitelist = array();
+
+ foreach ($wfIPWhitelist as $group => $values) {
+ if ($filter === null || $group === $filter) {
+ $whitelist = array_merge($whitelist, $values);
+ }
+ }
+
+ return $whitelist;
+ }
+
/**
* @param string $addr Should be in dot or colon notation (127.0.0.1 or ::1)
* @return bool
public static function isPrivateAddress($addr) {
// Run this through the preset list for IPv4 addresses.
if (filter_var($addr, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false) {
- $num = self::inet_aton($addr);
- foreach (self::$privateAddrs as $a) {
- if ($num >= $a[1] && $num <= $a[2]) {
+ foreach (self::getIPWhitelist('private') as $a) {
+ if (self::subnetContainsIP($a, $addr)) {
return true;
}
}
}
}
- /**
- * @return array
- */
- public static function getPrivateAddrs() {
- return self::$privateAddrs;
- }
-
/**
* @param string $host
* @return array
Tags: wordpress, security, performance, speed, caching, cache, caching plugin, wordpress cache, wordpress caching, wordpress security, security plugin, secure, anti-virus, malware, firewall, antivirus, virus, google safe browsing, phishing, scrapers, hacking, wordfence, securty, secrity, secure, two factor, cellphone sign-in, cellphone signin, cellphone, twofactor, security, secure, htaccess, login, log, users, login alerts, lock, chmod, maintenance, plugin, private, privacy, protection, permissions, 503, base64, injection, code, encode, script, attack, hack, hackers, block, blocked, prevent, prevention, RFI, XSS, CRLF, CSRF, SQL Injection, vulnerability, website security, WordPress security, security log, logging, HTTP log, error log, login security, personal security, infrastructure security, firewall security, front-end security, web server security, proxy security, reverse proxy security, secure website, secure login, two factor security, maximum login security, heartbleed, heart bleed, heartbleed vulnerability, openssl vulnerability, nginx, litespeed, php5-fpm, woocommerce support, woocommerce caching, IPv6, IP version 6
Requires at least: 3.9
Tested up to: 4.4.1
-Stable tag: 6.0.23
+Stable tag: 6.0.24
The Wordfence WordPress security plugin provides free enterprise-class WordPress security, protecting your website from hacks and malware.
== Description ==
== Changelog ==
+= 6.0.24 =
+* Enhancement: Added automatic whitelisting for Facebook crawlers.
+* Improvement: Added styling to premium callouts.
+* Improvement: Updated local GeoIP database.
+* Improvement: Updated local browser data cache to support newer browsers and user-agents.
+
= 6.0.23 =
* Improvement: Updated local GeoIP database.
* Improvement: Updated local browser data cache to support newer browsers and user-agents.
<?php
/* Wordfence temporary file security header */
echo "Nothing to see here!\n"; exit(0);
-?>a:30:{s:9:"cacheType";s:0:"";s:9:"howGetIPs";s:0:"";s:6:"apiKey";s:160:"7d20f751ed7b891bb7fbb2ca5502acf8dd2015ef83448efcd0f6677c370af784e66c41493b253d0df361c24057214e8165ee139e7592b033d9f08a6a5aac78420402d84ca9d31c8938425bbbaad1686d";s:20:"loginSec_lockoutMins";s:1:"5";s:19:"other_hideWPVersion";s:1:"1";s:15:"firewallEnabled";s:1:"1";s:11:"whitelisted";s:0:"";s:6:"isPaid";s:0:"";s:11:"blockedTime";s:3:"300";s:12:"neverBlockBG";s:18:"neverBlockVerified";s:13:"blockFakeBots";s:1:"0";s:10:"bannedURLs";s:0:"";s:18:"other_blockBadPOST";s:1:"0";s:18:"liveTrafficEnabled";s:1:"1";s:14:"disableCookies";s:1:"0";s:10:"tourClosed";s:1:"1";s:10:"autoUpdate";s:1:"1";s:11:"alertEmails";s:35:"test+mdryvescouzy@cubedesigners.com";s:17:"actUpdateInterval";s:1:"2";s:7:"debugOn";s:1:"0";s:13:"welcomeClosed";s:1:"1";s:38:"email_summary_dashboard_widget_enabled";s:1:"1";s:22:"email_summary_interval";s:8:"biweekly";s:22:"scansEnabled_highSense";s:1:"0";s:14:"wf_scanRunning";s:0:"";s:21:"scheduledScansEnabled";s:1:"1";s:17:"lastScanCompleted";s:2:"ok";s:26:"loginSec_disableAuthorScan";s:1:"1";s:25:"liveTraf_ignorePublishers";s:1:"1";s:10:"ssl_verify";s:1:"1";}
\ No newline at end of file
+?>a:30:{s:9:"cacheType";s:0:"";s:9:"howGetIPs";s:0:"";s:11:"whitelisted";s:0:"";s:6:"apiKey";s:160:"7d20f751ed7b891bb7fbb2ca5502acf8dd2015ef83448efcd0f6677c370af784e66c41493b253d0df361c24057214e8165ee139e7592b033d9f08a6a5aac78420402d84ca9d31c8938425bbbaad1686d";s:20:"loginSec_lockoutMins";s:1:"5";s:19:"other_hideWPVersion";s:1:"1";s:15:"firewallEnabled";s:1:"1";s:6:"isPaid";s:0:"";s:11:"blockedTime";s:3:"300";s:12:"neverBlockBG";s:18:"neverBlockVerified";s:13:"blockFakeBots";s:1:"0";s:10:"bannedURLs";s:0:"";s:18:"other_blockBadPOST";s:1:"0";s:18:"liveTrafficEnabled";s:1:"1";s:14:"disableCookies";s:1:"0";s:10:"tourClosed";s:1:"1";s:10:"autoUpdate";s:1:"1";s:11:"alertEmails";s:35:"test+mdryvescouzy@cubedesigners.com";s:17:"actUpdateInterval";s:1:"2";s:7:"debugOn";s:1:"0";s:13:"welcomeClosed";s:1:"1";s:38:"email_summary_dashboard_widget_enabled";s:1:"1";s:22:"email_summary_interval";s:8:"biweekly";s:26:"loginSec_disableAuthorScan";s:1:"1";s:25:"liveTraf_ignorePublishers";s:1:"1";s:18:"liveTraf_ignoreIPs";s:0:"";s:17:"liveTraf_ignoreUA";s:0:"";s:17:"maxGlobalRequests";s:8:"DISABLED";s:17:"maxRequestsHumans";s:8:"DISABLED";s:6:"encKey";s:16:"779eea7873029ce1";}
\ No newline at end of file
Plugin URI: http://www.wordfence.com/
Description: Wordfence Security - Anti-virus, Firewall and High Speed Cache
Author: Wordfence
-Version: 6.0.23
+Version: 6.0.24
Author URI: http://www.wordfence.com/
*/
if(defined('WP_INSTALLING') && WP_INSTALLING){
return;
}
-define('WORDFENCE_VERSION', '6.0.23');
+define('WORDFENCE_VERSION', '6.0.24');
if(get_option('wordfenceActivated') != 1){
add_action('activated_plugin','wordfence_save_activation_error'); function wordfence_save_activation_error(){ update_option('wf_plugin_act_error', ob_get_contents()); }
}
'limits' => '',
);
+ /**
+ * SQL WHERE clause.
+ *
+ * Stored after the 'comments_clauses' filter is run on the compiled WHERE sub-clauses.
+ *
+ * @since 4.4.2
+ * @access protected
+ * @var string
+ */
+ protected $filtered_where_clause;
+
/**
* Date query container
*
foreach ( $post_fields as $field_name => $field_value ) {
// $field_value may be an array.
$esses = array_fill( 0, count( (array) $field_value ), '%s' );
- $this->sql_clauses['where']['post_fields'] = $wpdb->prepare( " {$wpdb->posts}.{$field_name} IN (" . implode( ',', $esses ) . ')', $field_value );
+ $this->sql_clauses['where'][ $field_name ] = $wpdb->prepare( " {$wpdb->posts}.{$field_name} IN (" . implode( ',', $esses ) . ')', $field_value );
}
}
$limits = isset( $clauses[ 'limits' ] ) ? $clauses[ 'limits' ] : '';
$groupby = isset( $clauses[ 'groupby' ] ) ? $clauses[ 'groupby' ] : '';
+ $this->filtered_where_clause = $where;
+
if ( $where ) {
$where = 'WHERE ' . $where;
}
0 => wp_list_pluck( $comments, 'comment_ID' ),
);
- $where_clauses = $this->sql_clauses['where'];
- unset(
- $where_clauses['parent'],
- $where_clauses['parent__in'],
- $where_clauses['parent__not_in']
- );
+ /*
+ * The WHERE clause for the descendant query is the same as for the top-level
+ * query, minus the `parent`, `parent__in`, and `parent__not_in` sub-clauses.
+ */
+ $_where = $this->filtered_where_clause;
+ $exclude_keys = array( 'parent', 'parent__in', 'parent__not_in' );
+ foreach ( $exclude_keys as $exclude_key ) {
+ if ( isset( $this->sql_clauses['where'][ $exclude_key ] ) ) {
+ $clause = $this->sql_clauses['where'][ $exclude_key ];
+
+ // Strip the clause as well as any adjacent ANDs.
+ $pattern = '|(?:AND)?\s*' . $clause . '\s*(?:AND)?|';
+ $_where_parts = preg_split( $pattern, $_where );
+
+ // Remove empties.
+ $_where_parts = array_filter( array_map( 'trim', $_where_parts ) );
+
+ // Reassemble with an AND.
+ $_where = implode( ' AND ', $_where_parts );
+ }
+ }
// Fetch an entire level of the descendant tree at a time.
$level = 0;
break;
}
- $where = 'WHERE ' . implode( ' AND ', $where_clauses ) . ' AND comment_parent IN (' . implode( ',', array_map( 'intval', $parent_ids ) ) . ')';
+ $where = 'WHERE ' . $_where . ' AND comment_parent IN (' . implode( ',', array_map( 'intval', $parent_ids ) ) . ')';
$comment_ids = $wpdb->get_col( "{$this->sql_clauses['select']} {$this->sql_clauses['from']} {$where} {$this->sql_clauses['groupby']} ORDER BY comment_date_gmt ASC, comment_ID ASC" );
$level++;
*/
public function get_return_url() {
$referer = wp_get_referer();
+ $excluded_referer_basenames = array( 'customize.php', 'wp-login.php' );
+
if ( $this->return_url ) {
$return_url = $this->return_url;
- } else if ( $referer && 'customize.php' !== basename( parse_url( $referer, PHP_URL_PATH ) ) ) {
+ } else if ( $referer && ! in_array( basename( parse_url( $referer, PHP_URL_PATH ) ), $excluded_referer_basenames, true ) ) {
$return_url = $referer;
} else if ( $this->preview_url ) {
$return_url = $this->preview_url;
'order' => 'ASC',
'status' => 'approve',
'post_id' => $post->ID,
- 'hierarchical' => 'threaded',
'no_found_rows' => false,
'update_comment_meta_cache' => false, // We lazy-load comment meta for performance.
);
+ if ( get_option('thread_comments') ) {
+ $comment_args['hierarchical'] = 'threaded';
+ } else {
+ $comment_args['hierarchical'] = false;
+ }
+
if ( $user_ID ) {
$comment_args['include_unapproved'] = array( $user_ID );
} elseif ( ! empty( $comment_author_email ) ) {
'count' => true,
'orderby' => false,
'post_id' => $post->ID,
- 'parent' => 0,
'status' => 'approve',
);
+ if ( $comment_args['hierarchical'] ) {
+ $top_level_args['parent'] = 0;
+ }
+
if ( isset( $comment_args['include_unapproved'] ) ) {
$top_level_args['include_unapproved'] = $comment_args['include_unapproved'];
}
$_comments = $comment_query->comments;
// Trees must be flattened before they're passed to the walker.
- $comments_flat = array();
- foreach ( $_comments as $_comment ) {
- $comments_flat[] = $_comment;
- $comment_children = $_comment->get_children( array(
- 'format' => 'flat',
- 'status' => $comment_args['status'],
- 'orderby' => $comment_args['orderby']
- ) );
-
- foreach ( $comment_children as $comment_child ) {
- $comments_flat[] = $comment_child;
+ if ( $comment_args['hierarchical'] ) {
+ $comments_flat = array();
+ foreach ( $_comments as $_comment ) {
+ $comments_flat[] = $_comment;
+ $comment_children = $_comment->get_children( array(
+ 'format' => 'flat',
+ 'status' => $comment_args['status'],
+ 'orderby' => $comment_args['orderby']
+ ) );
+
+ foreach ( $comment_children as $comment_child ) {
+ $comments_flat[] = $comment_child;
+ }
}
+ } else {
+ $comments_flat = $_comments;
}
/**
*/
$r = apply_filters( 'wp_list_comments_args', $r );
- /*
- * If 'page' or 'per_page' has been passed, and does not match what's in $wp_query,
- * perform a separate comment query and allow Walker_Comment to paginate.
- */
- if ( is_singular() && ( $r['page'] || $r['per_page'] ) ) {
- $current_cpage = get_query_var( 'cpage' );
- if ( ! $current_cpage ) {
- $current_cpage = 'newest' === get_option( 'default_comments_page' ) ? 1 : $wp_query->max_num_comment_pages;
- }
-
- $current_per_page = get_query_var( 'comments_per_page' );
- if ( $r['page'] != $current_cpage || $r['per_page'] != $current_per_page ) {
- $comments = get_comments( array(
- 'post_id' => get_queried_object_id(),
- 'orderby' => 'comment_date_gmt',
- 'order' => 'ASC',
- 'status' => 'all',
- ) );
- }
- }
-
// Figure out what comments we'll be looping through ($_comments)
if ( null !== $comments ) {
$comments = (array) $comments;
$_comments = $comments;
}
} else {
- if ( empty($wp_query->comments) )
- return;
- if ( 'all' != $r['type'] ) {
- if ( empty($wp_query->comments_by_type) )
- $wp_query->comments_by_type = separate_comments($wp_query->comments);
- if ( empty($wp_query->comments_by_type[$r['type']]) )
- return;
- $_comments = $wp_query->comments_by_type[$r['type']];
- } else {
- $_comments = $wp_query->comments;
- }
+ /*
+ * If 'page' or 'per_page' has been passed, and does not match what's in $wp_query,
+ * perform a separate comment query and allow Walker_Comment to paginate.
+ */
+ if ( $r['page'] || $r['per_page'] ) {
+ $current_cpage = get_query_var( 'cpage' );
+ if ( ! $current_cpage ) {
+ $current_cpage = 'newest' === get_option( 'default_comments_page' ) ? 1 : $wp_query->max_num_comment_pages;
+ }
+
+ $current_per_page = get_query_var( 'comments_per_page' );
+ if ( $r['page'] != $current_cpage || $r['per_page'] != $current_per_page ) {
+
+ $comments = get_comments( array(
+ 'post_id' => get_the_ID(),
+ 'orderby' => 'comment_date_gmt',
+ 'order' => 'ASC',
+ 'status' => 'all',
+ ) );
- // Pagination is already handled by `WP_Comment_Query`, so we tell Walker not to bother.
- if ( $wp_query->max_num_comment_pages ) {
- $default_comments_page = get_option( 'default_comments_page' );
- $cpage = get_query_var( 'cpage' );
- if ( 'newest' === $default_comments_page ) {
- $r['cpage'] = $cpage;
+ if ( 'all' != $r['type'] ) {
+ $comments_by_type = separate_comments( $comments );
+ if ( empty( $comments_by_type[ $r['type'] ] ) ) {
+ return;
+ }
+
+ $_comments = $comments_by_type[ $r['type'] ];
+ } else {
+ $_comments = $comments;
+ }
+ }
- // When first page shows oldest comments, post permalink is the same as the comment permalink.
- } elseif ( $cpage == 1 ) {
- $r['cpage'] = '';
+ // Otherwise, fall back on the comments from `$wp_query->comments`.
+ } else {
+ if ( empty($wp_query->comments) )
+ return;
+ if ( 'all' != $r['type'] ) {
+ if ( empty($wp_query->comments_by_type) )
+ $wp_query->comments_by_type = separate_comments($wp_query->comments);
+ if ( empty($wp_query->comments_by_type[$r['type']]) )
+ return;
+ $_comments = $wp_query->comments_by_type[$r['type']];
} else {
- $r['cpage'] = $cpage;
+ $_comments = $wp_query->comments;
}
- $r['page'] = 0;
- $r['per_page'] = 0;
+ if ( $wp_query->max_num_comment_pages ) {
+ $default_comments_page = get_option( 'default_comments_page' );
+ $cpage = get_query_var( 'cpage' );
+ if ( 'newest' === $default_comments_page ) {
+ $r['cpage'] = $cpage;
+
+ /*
+ * When first page shows oldest comments, post permalink is the same as
+ * the comment permalink.
+ */
+ } elseif ( $cpage == 1 ) {
+ $r['cpage'] = '';
+ } else {
+ $r['cpage'] = $cpage;
+ }
+
+ $r['page'] = 0;
+ $r['per_page'] = 0;
+ }
}
}
*
* @param string The emoji base URL.
*/
- 'baseUrl' => apply_filters( 'emoji_url', set_url_scheme( '//s.w.org/images/core/emoji/72x72/' ) ),
+ 'baseUrl' => apply_filters( 'emoji_url', 'https://s.w.org/images/core/emoji/72x72/' ),
/**
* Filter the extension of the emoji files.
?>
<script type="text/javascript">
window._wpemojiSettings = <?php echo wp_json_encode( $settings ); ?>;
- !function(a,b,c){function d(a){var c,d=b.createElement("canvas"),e=d.getContext&&d.getContext("2d");return e&&e.fillText?(e.textBaseline="top",e.font="600 32px Arial","flag"===a?(e.fillText(String.fromCharCode(55356,56806,55356,56826),0,0),d.toDataURL().length>3e3):"diversity"===a?(e.fillText(String.fromCharCode(55356,57221),0,0),c=e.getImageData(16,16,1,1).data.toString(),e.fillText(String.fromCharCode(55356,57221,55356,57343),0,0),c!==e.getImageData(16,16,1,1).data.toString()):("simple"===a?e.fillText(String.fromCharCode(55357,56835),0,0):e.fillText(String.fromCharCode(55356,57135),0,0),0!==e.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g;c.supports={simple:d("simple"),flag:d("flag"),unicode8:d("unicode8"),diversity:d("diversity")},c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.simple&&c.supports.flag&&c.supports.unicode8&&c.supports.diversity||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
+ !function(a,b,c){function d(a){var c,d=b.createElement("canvas"),e=d.getContext&&d.getContext("2d"),f=String.fromCharCode;return e&&e.fillText?(e.textBaseline="top",e.font="600 32px Arial","flag"===a?(e.fillText(f(55356,56806,55356,56826),0,0),d.toDataURL().length>3e3):"diversity"===a?(e.fillText(f(55356,57221),0,0),c=e.getImageData(16,16,1,1).data.toString(),e.fillText(f(55356,57221,55356,57343),0,0),c!==e.getImageData(16,16,1,1).data.toString()):("simple"===a?e.fillText(f(55357,56835),0,0):e.fillText(f(55356,57135),0,0),0!==e.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g;c.supports={simple:d("simple"),flag:d("flag"),unicode8:d("unicode8"),diversity:d("diversity")},c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.simple&&c.supports.flag&&c.supports.unicode8&&c.supports.diversity||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
</script>
<?php
}
$text = wp_encode_emoji( $text );
/** This filter is documented in wp-includes/formatting.php */
- $cdn_url = apply_filters( 'emoji_url', set_url_scheme( '//s.w.org/images/core/emoji/72x72/' ) );
+ $cdn_url = apply_filters( 'emoji_url', 'https://s.w.org/images/core/emoji/72x72/' );
/** This filter is documented in wp-includes/formatting.php */
$ext = apply_filters( 'emoji_ext', '.png' );
}
if ( $ip ) {
$parts = array_map( 'intval', explode( '.', $ip ) );
- if ( 127 === $parts[0] || 10 === $parts[0]
+ if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0]
|| ( 172 === $parts[0] && 16 <= $parts[1] && 31 >= $parts[1] )
|| ( 192 === $parts[0] && 168 === $parts[1] )
) {
function browserSupportsEmoji( type ) {
var canvas = document.createElement( 'canvas' ),
context = canvas.getContext && canvas.getContext( '2d' ),
+ stringFromCharCode = String.fromCharCode,
tone;
if ( ! context || ! context.fillText ) {
* The first two will encode to small images (1-2KB data URLs), the third will encode
* to a larger image (4-5KB data URL).
*/
- context.fillText( String.fromCharCode( 55356, 56806, 55356, 56826 ), 0, 0 );
+ context.fillText( stringFromCharCode( 55356, 56806, 55356, 56826 ), 0, 0 );
return canvas.toDataURL().length > 3000;
} else if ( 'diversity' === type ) {
/*
* emoji with no skin tone specified (in this case, Santa). It then adds a skin tone, and
* compares if the emoji rendering has changed.
*/
- context.fillText( String.fromCharCode( 55356, 57221 ), 0, 0 );
+ context.fillText( stringFromCharCode( 55356, 57221 ), 0, 0 );
tone = context.getImageData( 16, 16, 1, 1 ).data.toString();
- context.fillText( String.fromCharCode( 55356, 57221, 55356, 57343 ), 0, 0 );
+ context.fillText( stringFromCharCode( 55356, 57221, 55356, 57343 ), 0, 0 );
// Chrome has issues comparing arrays, so we compare it as a string, instead.
return tone !== context.getImageData( 16, 16, 1, 1 ).data.toString();
} else {
* center pixel. In browsers that don't support emoji, the character will be rendered
* as an empty square, so the center pixel will be blank.
*/
- context.fillText( String.fromCharCode( 55357, 56835 ), 0, 0 );
+ context.fillText( stringFromCharCode( 55357, 56835 ), 0, 0 );
} else {
/*
* To check for Unicode 8 support, let's try rendering the most important advancement
* that the Unicode Consortium have made in years: the burrito.
*/
- context.fillText( String.fromCharCode( 55356, 57135 ), 0, 0 );
+ context.fillText( stringFromCharCode( 55356, 57135 ), 0, 0 );
}
return context.getImageData( 16, 16, 1, 1 ).data[0] !== 0;
}
-!function(a,b,c){function d(a){var c,d=b.createElement("canvas"),e=d.getContext&&d.getContext("2d");return e&&e.fillText?(e.textBaseline="top",e.font="600 32px Arial","flag"===a?(e.fillText(String.fromCharCode(55356,56806,55356,56826),0,0),d.toDataURL().length>3e3):"diversity"===a?(e.fillText(String.fromCharCode(55356,57221),0,0),c=e.getImageData(16,16,1,1).data.toString(),e.fillText(String.fromCharCode(55356,57221,55356,57343),0,0),c!==e.getImageData(16,16,1,1).data.toString()):("simple"===a?e.fillText(String.fromCharCode(55357,56835),0,0):e.fillText(String.fromCharCode(55356,57135),0,0),0!==e.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g;c.supports={simple:d("simple"),flag:d("flag"),unicode8:d("unicode8"),diversity:d("diversity")},c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.simple&&c.supports.flag&&c.supports.unicode8&&c.supports.diversity||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
\ No newline at end of file
+!function(a,b,c){function d(a){var c,d=b.createElement("canvas"),e=d.getContext&&d.getContext("2d"),f=String.fromCharCode;return e&&e.fillText?(e.textBaseline="top",e.font="600 32px Arial","flag"===a?(e.fillText(f(55356,56806,55356,56826),0,0),d.toDataURL().length>3e3):"diversity"===a?(e.fillText(f(55356,57221),0,0),c=e.getImageData(16,16,1,1).data.toString(),e.fillText(f(55356,57221,55356,57343),0,0),c!==e.getImageData(16,16,1,1).data.toString()):("simple"===a?e.fillText(f(55357,56835),0,0):e.fillText(f(55356,57135),0,0),0!==e.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g;c.supports={simple:d("simple"),flag:d("flag"),unicode8:d("unicode8"),diversity:d("diversity")},c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.simple&&c.supports.flag&&c.supports.unicode8&&c.supports.diversity||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
\ No newline at end of file
return wp_kses( $data, 'post' );
}
+/**
+ * Navigates through an array, object, or scalar, and sanitizes content for
+ * allowed HTML tags for post content.
+ *
+ * @since 4.4.2
+ *
+ * @param mixed $value The array or string to filter.
+ * @return mixed $value The filtered content.
+ */
+function wp_kses_post_deep( $data ) {
+ return map_deep( $data, 'wp_kses_post' );
+}
+
/**
* Strips all of the HTML in the content.
*
wp_cache_init();
if ( function_exists( 'wp_cache_add_global_groups' ) ) {
- wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache' ) );
+ wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks' ) );
wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) );
}
}
if ( is_array( $global_groups ) ) {
wp_cache_add_global_groups( $global_groups );
} else {
- wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache' ) );
+ wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks' ) );
}
wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) );
}
if ( is_array( $global_groups ) ) {
wp_cache_add_global_groups( $global_groups );
} else {
- wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache' ) );
+ wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks' ) );
}
wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) );
}
// In php 5 parse_url may fail if the URL query part contains http://, bug #38143
$test = ( $cut = strpos($location, '?') ) ? substr( $location, 0, $cut ) : $location;
- $lp = parse_url($test);
+ // @-operator is used to prevent possible warnings in PHP < 5.3.3.
+ $lp = @parse_url($test);
// Give up if malformed URL
if ( false === $lp )
if ( isset($lp['scheme']) && !('http' == $lp['scheme'] || 'https' == $lp['scheme']) )
return $default;
- // Reject if scheme is set but host is not. This catches urls like https:host.com for which parse_url does not set the host field.
- if ( isset($lp['scheme']) && !isset($lp['host']) )
+ // Reject if certain components are set but host is not. This catches urls like https:host.com for which parse_url does not set the host field.
+ if ( ! isset( $lp['host'] ) && ( isset( $lp['scheme'] ) || isset( $lp['user'] ) || isset( $lp['pass'] ) || isset( $lp['port'] ) ) ) {
return $default;
+ }
+
+ // Reject malformed components parse_url() can return on odd inputs
+ foreach ( array( 'user', 'pass', 'host' ) as $component ) {
+ if ( isset( $lp[ $component ] ) && strpbrk( $lp[ $component ], ':/?#@' ) ) {
+ return $default;
+ }
+ }
$wpp = parse_url(home_url());
$like = '%' . $wpdb->esc_like( $q['s'] ) . '%';
}
- $search_orderby = '(CASE ';
+ $search_orderby = '';
// sentence match in 'post_title'
if ( $like ) {
if ( $like ) {
$search_orderby .= $wpdb->prepare( "WHEN $wpdb->posts.post_content LIKE %s THEN 4 ", $like );
}
- $search_orderby .= 'ELSE 5 END)';
+
+ if ( $search_orderby ) {
+ $search_orderby = '(CASE ' . $search_orderby . 'ELSE 5 END)';
+ }
} else {
// single word or sentence search
$search_orderby = reset( $q['search_orderby_title'] ) . ' DESC';
*
* @global WP_Query $wp_query Global WP_Query instance.
* @global wpdb $wpdb WordPress database abstraction object.
- * @global WP_Rewrite $wp_rewrite WordPress rewrite component.
*/
function wp_old_slug_redirect() {
- global $wp_query, $wp_rewrite;
-
- if ( get_queried_object() ) {
- return;
- }
+ global $wp_query;
- if ( '' !== $wp_query->query_vars['name'] ) :
+ if ( is_404() && '' !== $wp_query->query_vars['name'] ) :
global $wpdb;
// Guess the current post_type based on the query vars.
$link = get_permalink( $id );
- if ( is_feed() ) {
- $link = user_trailingslashit( trailingslashit( $link ) . 'feed' );
- } elseif ( isset( $GLOBALS['wp_query']->query_vars['paged'] ) && $GLOBALS['wp_query']->query_vars['paged'] > 1 ) {
+ if ( isset( $GLOBALS['wp_query']->query_vars['paged'] ) && $GLOBALS['wp_query']->query_vars['paged'] > 1 ) {
$link = user_trailingslashit( trailingslashit( $link ) . 'page/' . $GLOBALS['wp_query']->query_vars['paged'] );
} elseif( is_embed() ) {
$link = user_trailingslashit( trailingslashit( $link ) . 'embed' );
- } elseif ( is_404() ) {
- // Add rewrite endpoints if necessary.
- foreach ( $wp_rewrite->endpoints as $endpoint ) {
- if ( $endpoint[2] && false !== get_query_var( $endpoint[2], false ) ) {
- $link = user_trailingslashit( trailingslashit( $link ) . $endpoint[1] );
- }
- }
}
/**
*
* See ERRATA.md for our reasoning behind this particular order
*/
- if (extension_loaded('libsodium')) {
+ if (PHP_VERSION_ID >= 50300 && extension_loaded('libsodium') && function_exists('\\Sodium\\randombytes_buf')) {
// See random_bytes_libsodium.php
require_once $RandomCompatDIR.'/random_bytes_libsodium.php';
}
function update_term_cache( $terms, $taxonomy = '' ) {
foreach ( (array) $terms as $term ) {
// Create a copy in case the array was passed by reference.
- $_term = $term;
+ $_term = clone $term;
// Object ID should not be cached.
unset( $_term->object_id );
*
* @global string $wp_version
*/
-$wp_version = '4.4.1';
+$wp_version = '4.4.2';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
WordPress - Web publishing software\r
\r
-Copyright 2015 by the contributors\r
+Copyright 2016 by the contributors\r
\r
This program is free software; you can redistribute it and/or modify\r
it under the terms of the GNU General Public License as published by\r
-<!DOCTYPE html> \r
-<html> \r
-<head>\r
- <meta name="viewport" content="width=device-width" /> \r
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\r
- <title>WordPress › À lire</title>\r
- <link rel="stylesheet" href="wp-admin/css/install.css?ver=20100228" type="text/css" />\r
-</head>\r
-<body>\r
-<h1 id="logo">\r
- <a href="https://wordpress.org/"><img alt="WordPress" src="wp-admin/images/wordpress-logo.png" /></a> \r
- <br />Version 4.4\r
-\r
-</h1>\r
-<p style="text-align: center">Plateforme de publication sémantique personnelle</p>\r
-\r
-<h2>Préambule</h2>\r
-<p>Bienvenue. WordPress est un projet très spécial pour moi. Chaque développeur et contributeur ajoute quelque chose d'unique à ce projet, et ensemble nous créons quelque chose de beau, et dont je suis fier de faire partie. Nous avons passé des milliers d'heures sur le développement de WordPress, et nous nous attachons tous les jours à vous faciliter la vie. Merci à vous d'en faire une partie de votre monde.</p>\r
-<p style="text-align: right">— Matt Mullenweg</p>\r
-\r
-<h2>Installation : la fameuse installation en 5 minutes</h2>\r
-<ol>\r
- <li>Décompressez l'archive dans un dossier vide de votre ordinateur, puis mettez tous ces fichiers en ligne ;</li>\r
- <li>Ouvrez le fichier <code>wp-config-sample.php</code> avec votre éditeur de texte préféré, comme WordPad ou similaire, et complétez les informations liées à votre base de données ;</li>\r
- <li>Sauvegardez le fichier sous le nom <code>wp-config.php</code> ;</li>\r
- <li>Envoyez le tout sur votre hébergement via un logiciel client FTP ;</li>\r
- <li>Ouvrez le fichier <span class="file"><a href="wp-admin/install.php">/wp-admin/install.php</a></span> dans votre navigateur. Celui-ci vous guidera dans la création du fichier <code>wp-config.php</code>, qui contient les détails de connexion à votre base de données ;\r
- <ol>\r
- <li>Si cela ne marchait pas, ne vous inquiétez pas : certains hébergeurs n'autorisent pas la création de fichier. Ouvrez le fichier <code>wp-config.php</code> avec un éditeur de texte, et saisissez-y directement les détails de connexion à votre base de données ;</li>\r
- <li>Enregistrez le fichier sous le nom <code>wp-config.php</code> et mettez-le en ligne ;</li>\r
- <li>Ouvrez le fichier <span class="file"><a href="wp-admin/install.php">wp-admin/install.php</a></span> dans votre navigateur ;</li>\r
- </ol>\r
- </li>\r
- <li>Une fois le fichier de configuration correctement rempli, l'installateur met en place les tables nécessaires à votre blog. Si vous obtenez une erreur, vérifiez le contenu du fichier <span class="file"><code>wp-config.php</code></span>, et réessayez. Si cela échoue encore une fois, rendez-vous sur les <a href="http://www.wordpress-fr.net/support/">forums d'entraide</a> et soyez le plus précis possible dans vos explications. Si tout se passe bien, passez à l'étape suivante ;</li>\r
- <li><strong>Si vous n'avez pas précisé de mot de passe, notez bien celui qui vous est donné.</strong> Si vous n'avez pas précisé d'identifiant utilisateur, ce sera <code>admin</code> ;</li>\r
- <li>Une fois l'installation terminée, le script d'installation vous renverra vers la <a href="wp-login.php">page de connexion</a>. Connectez-vous avec l'identifiant et le mot de passe précisés (ou générés) durant l'installation. Si le mot de passe a été généré pour vous, cliquez sur "Profil" pour le modifier.</li>\r
-</ol>\r
-\r
-<h2>Mise à jour</h2>\r
-<h3>A l'aide de l'outil de mise à jour automatique</h3>\r
-<p>Si votre version de WordPress est égale ou supérieure à 2.7, vous pouvez utiliser l'outil de mise à jour automatique :</p>\r
-<ol>\r
- <li>Ouvrez la page <span class="file"><a href="wp-admin/update-core.php">wp-admin/update-core.php</a></span> dans votre navigateur, et suivez les instructions ;</li>\r
- <li>Vous pensiez qu'il y aurait d'autres étapes ? C'est tout !</li>\r
-</ol>\r
-\r
-<h3>Mise à jour manuelle (obligatoire pour les versions de WordPress inférieures à 2.7) :</h3>\r
-<ol>\r
- <li>Avant tout, assurez-vous bien de disposer de copies de sauvegarde de tous les fichiers que vous avez modifiés, par exemple <code>index.php</code>.</li>\r
- <li>Effacez vos anciens fichiers WordPress, sauf ceux que vous avez modifié, comme <span class="file"><code>wp-config.php</code></span> ou le contenu du dossier <span class="file"><code>/wp-content/</code></span>.</li>\r
- <li>Mettez en ligne les nouveaux fichiers en provenance de l'archive de WordPress.</li>\r
- <li>Allez sur la page <code><span class="file"><a href="wp-admin/upgrade.php">/wp-admin/upgrade.php</a></span></code> avec votre navigateur internet.</li>\r
-</ol>\r
-\r
-<h2>Migrer depuis d'autres logiciels/plates-formes</h2> \r
-<p>WordPress peut <a href="https://codex.wordpress.org/Importing_Content">importer les articles en provenance de nombreux autres outils (en)</a>. Vous devez d'abord installer WordPress comme expliqué plus haut, puis utiliser <a href="wp-admin/import.php" title="Importer dans WordPress">un des importateurs</a>.</p>\r
-\r
-<h2>Prérequis fonctionnels</h2> \r
-<ul>\r
- <li><a href="http://php.net/">PHP</a> version <strong>5.2.4</strong> ou plus ;</li>\r
- <li><a href="http://www.mysql.com/">MySQL</a> version <strong>5.0</strong> ou plus.</li>\r
-</ul>\r
-\r
-<h2>Recommandations</h2> \r
-<ul>\r
- <li><a href="http://php.net/">PHP</a> version <strong>5.6</strong> ou plus ;</li>\r
- <li><a href="http://www.mysql.com/">MySQL</a> version <strong>5.6</strong> ou plus.</li>\r
- <li>Le module <a href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html">mod_rewrite</a> d'Apache.</li>\r
- <li>Un lien vers <a href="https://wordpress.org/">wordpress.org</a> sure votre site.</li>\r
-</ul>\r
-\r
-<h2>Ressources en ligne</h2>\r
-<p>Si vous vous posez des questions dont les réponses ne figurent pas sur ce document, vous disposez de nombreuses ressources en ligne :</p>\r
-<dl>\r
- <dt><a href="https://codex.wordpress.org/">Le Codex WordPress</a></dt>\r
- <dd>Le Codex est l'encyclopédie liée à tout le fonctionnement de WordPress. Il s'agit de la source d'informations la plus complète qui soit.</dd>\r
- <dt><a href="https://wordpress.org/blog/">Le blog de WordPress</a></dt>\r
- <dd>C'est ici que vous trouverez les dernières informations, les annonces et les nouveautés de WordPress. Les derniers articles de ce blog sont affichés dans le Tableau de Bord de WordPress par défaut.</dd>\r
- <dt><a href="https://planet.wordpress.org/">Planète WordPress</a></dt>\r
- <dd>La Planète WordPress est un agrégateur de news qui distille les articles de plusieurs blogs WordPress à travers le web.</dd>\r
- <dt><a href="http://wordpress-fr.net/support/">Support WordPress Francophone</a></dt>\r
- <dd>Si vous avez cherché partout et que malgré cela vous n'avez trouvé aucune réponse, les forums sont très actifs et son immense communauté sera prête à vous aider. Pour un traitement efficace de votre problème, faites en sorte d'utiliser, lors de la création de votre sujet, un titre et une description aussi pertinents et clairs que possible.</dd>\r
- <dt><a href="https://codex.wordpress.org/IRC">Canal <abbr title="Internet Relay Chat">IRC</abbr> WordPress</a></dt>\r
- <dd>Il existe un canal IRC qui est le rendez-vous des utilisateurs WordPress, et occasionnellement, propose son aide aux sujets liés au support. La page Wiki devrait vous indiquer la bonne direction.</dd>\r
-</dl>\r
-\r
-<h2>Pour finir</h2>\r
-<ul>\r
- <li>Si vous avez des suggestions, des idées, des commentaires ou si vous avez trouvé un bug (oups !), venez nous rejoindre sur les <a href="https://wordpress.org/support/">forums anglophones</a>.</li>\r
- <li>WordPress possède une <abbr title="Application Programming Interface">API</abbr> d'extension robuste, qui permet d'étendre les possibilités de son code de manière simple. Si vous êtes un développeur intéressé par son utilisation, rendez-vous sur la <a href="https://codex.wordpress.org/Plugin_API">documentation des extensions sur le Codex</a>. Vous ne devriez pas avoir à modifier une partie du code original.</li>\r
-</ul>\r
-\r
-<h2>Faites connaître WordPress !</h2>\r
-<p>WordPress ne possède pas une kyrielle de millions de dollars pour s'offrir une campagne marketing, ni de célèbres sponsors, mais nous avons bien mieux : VOUS. Si vous appréciez WordPress, n'hésitez pas à en parler à votre entourage, vos amis, en aidant d'autres personnes ayant un niveau inférieur au vôtre, ou encore écrire un article faisant référence à notre travail.</p>\r
-\r
-<p>WordPress est la reprise officielle de <a href="http://cafelog.com/">b2/cafélog</a>, provenant de Michel V. Le travail a continué d'être assuré par <a href="https://wordpress.org/about/">les développeurs WordPress</a>. Si vous voulez apporter votre soutien à WordPress, n'hésitez pas à <a href="https://wordpress.org/donate/">faire un don</a>.</p>\r
-\r
-<h2>Licence</h2>\r
-<p>WordPress est un logiciel libre, mis à disposition sous les termes de la licence <abbr title="GNU Public License">GPL</abbr> version 2, ou de toute version suivante, au choix (voir <a href="license.txt">license.txt</a> (en anglais)).</p>\r
-\r
-</body>\r
+<!DOCTYPE html>
+<html>
+<head>
+ <meta name="viewport" content="width=device-width" />
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>WordPress › À lire</title>
+ <link rel="stylesheet" href="wp-admin/css/install.css?ver=20100228" type="text/css" />
+</head>
+<body>
+<h1 id="logo">
+ <a href="https://wordpress.org/"><img alt="WordPress" src="wp-admin/images/wordpress-logo.png" /></a>
+ <br />Version 4.4
+
+</h1>
+<p style="text-align: center">Plateforme de publication sémantique personnelle</p>
+
+<h2>Préambule</h2>
+<p>Bienvenue. WordPress est un projet très spécial pour moi. Chaque développeur et contributeur ajoute quelque chose d'unique à ce projet, et ensemble nous créons quelque chose de beau, et dont je suis fier de faire partie. Nous avons passé des milliers d'heures sur le développement de WordPress, et nous nous attachons tous les jours à vous faciliter la vie. Merci à vous d'en faire une partie de votre monde.</p>
+<p style="text-align: right">— Matt Mullenweg</p>
+
+<h2>Installation : la fameuse installation en 5 minutes</h2>
+<ol>
+ <li>Décompressez l'archive dans un dossier vide de votre ordinateur, puis mettez tous ces fichiers en ligne ;</li>
+ <li>Ouvrez le fichier <code>wp-config-sample.php</code> avec votre éditeur de texte préféré, comme WordPad ou similaire, et complétez les informations liées à votre base de données ;</li>
+ <li>Sauvegardez le fichier sous le nom <code>wp-config.php</code> ;</li>
+ <li>Envoyez le tout sur votre hébergement via un logiciel client FTP ;</li>
+ <li>Ouvrez le fichier <span class="file"><a href="wp-admin/install.php">/wp-admin/install.php</a></span> dans votre navigateur. Celui-ci vous guidera dans la création du fichier <code>wp-config.php</code>, qui contient les détails de connexion à votre base de données ;
+ <ol>
+ <li>Si cela ne marchait pas, ne vous inquiétez pas : certains hébergeurs n'autorisent pas la création de fichier. Ouvrez le fichier <code>wp-config.php</code> avec un éditeur de texte, et saisissez-y directement les détails de connexion à votre base de données ;</li>
+ <li>Enregistrez le fichier sous le nom <code>wp-config.php</code> et mettez-le en ligne ;</li>
+ <li>Ouvrez le fichier <span class="file"><a href="wp-admin/install.php">wp-admin/install.php</a></span> dans votre navigateur ;</li>
+ </ol>
+ </li>
+ <li>Une fois le fichier de configuration correctement rempli, l'installateur met en place les tables nécessaires à votre blog. Si vous obtenez une erreur, vérifiez le contenu du fichier <span class="file"><code>wp-config.php</code></span>, et réessayez. Si cela échoue encore une fois, rendez-vous sur les <a href="http://www.wordpress-fr.net/support/">forums d'entraide</a> et soyez le plus précis possible dans vos explications. Si tout se passe bien, passez à l'étape suivante ;</li>
+ <li><strong>Si vous n'avez pas précisé de mot de passe, notez bien celui qui vous est donné.</strong> Si vous n'avez pas précisé d'identifiant utilisateur, ce sera <code>admin</code> ;</li>
+ <li>Une fois l'installation terminée, le script d'installation vous renverra vers la <a href="wp-login.php">page de connexion</a>. Connectez-vous avec l'identifiant et le mot de passe précisés (ou générés) durant l'installation. Si le mot de passe a été généré pour vous, cliquez sur "Profil" pour le modifier.</li>
+</ol>
+
+<h2>Mise à jour</h2>
+<h3>A l'aide de l'outil de mise à jour automatique</h3>
+<p>Si votre version de WordPress est égale ou supérieure à 2.7, vous pouvez utiliser l'outil de mise à jour automatique :</p>
+<ol>
+ <li>Ouvrez la page <span class="file"><a href="wp-admin/update-core.php">wp-admin/update-core.php</a></span> dans votre navigateur, et suivez les instructions ;</li>
+ <li>Vous pensiez qu'il y aurait d'autres étapes ? C'est tout !</li>
+</ol>
+
+<h3>Mise à jour manuelle (obligatoire pour les versions de WordPress inférieures à 2.7) :</h3>
+<ol>
+ <li>Avant tout, assurez-vous bien de disposer de copies de sauvegarde de tous les fichiers que vous avez modifiés, par exemple <code>index.php</code>.</li>
+ <li>Effacez vos anciens fichiers WordPress, sauf ceux que vous avez modifié, comme <span class="file"><code>wp-config.php</code></span> ou le contenu du dossier <span class="file"><code>/wp-content/</code></span>.</li>
+ <li>Mettez en ligne les nouveaux fichiers en provenance de l'archive de WordPress.</li>
+ <li>Allez sur la page <code><span class="file"><a href="wp-admin/upgrade.php">/wp-admin/upgrade.php</a></span></code> avec votre navigateur internet.</li>
+</ol>
+
+<h2>Migrer depuis d'autres logiciels/plates-formes</h2>
+<p>WordPress peut <a href="https://codex.wordpress.org/Importing_Content">importer les articles en provenance de nombreux autres outils (en)</a>. Vous devez d'abord installer WordPress comme expliqué plus haut, puis utiliser <a href="wp-admin/import.php" title="Importer dans WordPress">un des importateurs</a>.</p>
+
+<h2>Prérequis fonctionnels</h2>
+<ul>
+ <li><a href="http://php.net/">PHP</a> version <strong>5.2.4</strong> ou plus ;</li>
+ <li><a href="http://www.mysql.com/">MySQL</a> version <strong>5.0</strong> ou plus.</li>
+</ul>
+
+<h2>Recommandations</h2>
+<ul>
+ <li><a href="http://php.net/">PHP</a> version <strong>5.6</strong> ou plus ;</li>
+ <li><a href="http://www.mysql.com/">MySQL</a> version <strong>5.6</strong> ou plus.</li>
+ <li>Le module <a href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html">mod_rewrite</a> d'Apache.</li>
+ <li>Un lien vers <a href="https://wordpress.org/">wordpress.org</a> sure votre site.</li>
+</ul>
+
+<h2>Ressources en ligne</h2>
+<p>Si vous vous posez des questions dont les réponses ne figurent pas sur ce document, vous disposez de nombreuses ressources en ligne :</p>
+<dl>
+ <dt><a href="https://codex.wordpress.org/">Le Codex WordPress</a></dt>
+ <dd>Le Codex est l'encyclopédie liée à tout le fonctionnement de WordPress. Il s'agit de la source d'informations la plus complète qui soit.</dd>
+ <dt><a href="https://wordpress.org/blog/">Le blog de WordPress</a></dt>
+ <dd>C'est ici que vous trouverez les dernières informations, les annonces et les nouveautés de WordPress. Les derniers articles de ce blog sont affichés dans le Tableau de Bord de WordPress par défaut.</dd>
+ <dt><a href="https://planet.wordpress.org/">Planète WordPress</a></dt>
+ <dd>La Planète WordPress est un agrégateur de news qui distille les articles de plusieurs blogs WordPress à travers le web.</dd>
+ <dt><a href="http://wordpress-fr.net/support/">Support WordPress Francophone</a></dt>
+ <dd>Si vous avez cherché partout et que malgré cela vous n'avez trouvé aucune réponse, les forums sont très actifs et son immense communauté sera prête à vous aider. Pour un traitement efficace de votre problème, faites en sorte d'utiliser, lors de la création de votre sujet, un titre et une description aussi pertinents et clairs que possible.</dd>
+ <dt><a href="https://codex.wordpress.org/IRC">Canal <abbr title="Internet Relay Chat">IRC</abbr> WordPress</a></dt>
+ <dd>Il existe un canal IRC qui est le rendez-vous des utilisateurs WordPress, et occasionnellement, propose son aide aux sujets liés au support. La page Wiki devrait vous indiquer la bonne direction.</dd>
+</dl>
+
+<h2>Pour finir</h2>
+<ul>
+ <li>Si vous avez des suggestions, des idées, des commentaires ou si vous avez trouvé un bug (oups !), venez nous rejoindre sur les <a href="https://wordpress.org/support/">forums anglophones</a>.</li>
+ <li>WordPress possède une <abbr title="Application Programming Interface">API</abbr> d'extension robuste, qui permet d'étendre les possibilités de son code de manière simple. Si vous êtes un développeur intéressé par son utilisation, rendez-vous sur la <a href="https://codex.wordpress.org/Plugin_API">documentation des extensions sur le Codex</a>. Vous ne devriez pas avoir à modifier une partie du code original.</li>
+</ul>
+
+<h2>Faites connaître WordPress !</h2>
+<p>WordPress ne possède pas une kyrielle de millions de dollars pour s'offrir une campagne marketing, ni de célèbres sponsors, mais nous avons bien mieux : VOUS. Si vous appréciez WordPress, n'hésitez pas à en parler à votre entourage, vos amis, en aidant d'autres personnes ayant un niveau inférieur au vôtre, ou encore écrire un article faisant référence à notre travail.</p>
+
+<p>WordPress est la reprise officielle de <a href="http://cafelog.com/">b2/cafélog</a>, provenant de Michel V. Le travail a continué d'être assuré par <a href="https://wordpress.org/about/">les développeurs WordPress</a>. Si vous voulez apporter votre soutien à WordPress, n'hésitez pas à <a href="https://wordpress.org/donate/">faire un don</a>.</p>
+
+<h2>Licence</h2>
+<p>WordPress est un logiciel libre, mis à disposition sous les termes de la licence <abbr title="GNU Public License">GPL</abbr> version 2, ou de toute version suivante, au choix (voir <a href="license.txt">license.txt</a> (en anglais)).</p>
+
+</body>
</html>
\ No newline at end of file
<a href="freedoms.php" class="nav-tab"><?php _e( 'Freedoms' ); ?></a>
</h2>
+ <div class="changelog point-releases">
+ <h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 2 ); ?></h3>
+ <p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
+ '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 17 ), '4.4.2', number_format_i18n( 17 ) ); ?>
+ <?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.4.2' ); ?>
+ </p>
+ <p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
+ '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 52 ), '4.4.1', number_format_i18n( 52 ) ); ?>
+ <?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.4.1' ); ?>
+ </p>
+ </div>
+
<div class="headline-feature feature-video">
<iframe width="1050" height="591" src="<?php echo esc_url( $video_url ); ?>" frameborder="0" allowfullscreen></iframe>
<script src="https://videopress.com/videopress-iframe.js"></script>
<p><?php _e( 'Twenty Sixteen was built to look great on any device. A fluid grid design, flexible header, fun color schemes, and more, will make your content shine.' ); ?></p>
<div class="horizontal-image">
<div class="content">
- <img class="feature-image horizontal-screen" src="https://s.w.org/images/core/4.4/twenty-sixteen-dark-fullsize-2x.png" alt="" srcset="https://s.w.org/images/core/4.4/twenty-sixteen-dark-smartphone-1x.png 268w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-smartphone-2x.png 535w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-desktop-1x.png 558w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-fullsize-1x.png 783w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-desktop-2x.png 1116w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-fullsize-2x.png 1566w" sizes="(max-width: 500px) calc((100vw - 40px) * .8), (max-width: 782px) calc((100vw - 70px) * .8), (max-width: 960px) calc((100vw - 116px) * .5216), (max-width: 1290px) calc((100vw - 240px) * .5216), 548px" />
+ <img class="feature-image horizontal-screen" src="https://s.w.org/images/core/4.4/twenty-sixteen-dark-fullsize-2x.png?2" alt="" srcset="https://s.w.org/images/core/4.4/twenty-sixteen-dark-smartphone-1x.png?2 268w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-smartphone-2x.png?2 535w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-desktop-1x.png?2 558w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-fullsize-1x.png?2 783w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-desktop-2x.png?2 1116w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-fullsize-2x.png?2 1566w" sizes="(max-width: 500px) calc((100vw - 40px) * .8), (max-width: 782px) calc((100vw - 70px) * .8), (max-width: 960px) calc((100vw - 116px) * .5216), (max-width: 1290px) calc((100vw - 240px) * .5216), 548px" />
</div>
</div>
</div>
* @param string $file
* @return bool
*/
- public function exists( $file ) {
- $path = dirname( $file );
- $filename = basename( $file );
+ public function exists($file) {
+ $list = @ftp_nlist($this->link, $file);
- $file_list = @ftp_nlist( $this->link, '-a ' . $path );
- if ( $file_list ) {
- $file_list = array_map( 'basename', $file_list );
+ if ( empty( $list ) && $this->is_dir( $file ) ) {
+ return true; // File is an empty directory.
}
- return $file_list && in_array( $filename, $file_list );
+ return !empty($list); //empty list = no file, so invert.
}
/**
* @return bool
*/
public function exists( $file ) {
- $list = $this->ftp->rawlist( $file, '-a' );
+ $list = $this->ftp->nlist( $file );
if ( empty( $list ) && $this->is_dir( $file ) ) {
return true; // File is an empty directory.
}
}
- sort( $priorities );
+ ksort( $priorities );
$sorted = array();
foreach ( $priorities as $list ) {
* Filter whether to show the Screen Options submit button.
*
* @since 4.4.0
- *
+ *
* @param bool $show_button Whether to show Screen Options submit button.
* Default false.
* @param WP_Screen $this Current WP_Screen instance.
$id = "$column-hide";
echo '<label>';
- echo '<input class="hide-column-tog" name="' . $id . '" type="checkbox" value="' . $column . '"' . checked( ! in_array( $column, $hidden ), true, false ) . ' />';
+ echo '<input class="hide-column-tog" name="' . $id . '" type="checkbox" id="' . $id . '" value="' . $column . '"' . checked( ! in_array( $column, $hidden ), true, false ) . ' />';
echo "$title</label>\n";
}
?>
}
}
- foreach ( $meta as &$value ) {
- if ( is_string( $value ) ) {
- $value = wp_kses_post( $value );
+ foreach ( $meta['keywords'] as $key => $keyword ) {
+ if ( ! seems_utf8( $keyword ) ) {
+ $meta['keywords'][ $key ] = utf8_encode( $keyword );
}
}
+ $meta = wp_kses_post_deep( $meta );
+
/**
* Filter the array of meta data read from an image's exif data.
*
$hidden = get_user_option( 'manage' . $screen->id . 'columnshidden' );
- if ( ! $hidden ) {
+ $use_defaults = ! is_array( $hidden );
+
+ if ( $use_defaults ) {
$hidden = array();
/**
* Filter the list of hidden columns.
*
* @since 4.4.0
+ * @since 4.4.1 Added the `use_defaults` parameter.
*
* @param array $hidden An array of hidden columns.
* @param WP_Screen $screen WP_Screen object of the current screen.
+ * @param bool $use_defaults Whether to show the default columns.
*/
- return apply_filters( 'hidden_columns', $hidden, $screen );
+ return apply_filters( 'hidden_columns', $hidden, $screen, $use_defaults );
}
/**
* The `.below-h2` class is here just for backwards compatibility with plugins
* that are (incorrectly) using it. Do not use. Use `.inline` instead. See #34570.
*/
- $( 'div.updated, div.error, div.notice' ).not( '.inline, .below-h2' ).insertAfter( $( '.wrap' ).children( ':header' ).first() );
+ $( 'div.updated, div.error, div.notice' ).not( '.inline, .below-h2' ).insertAfter( $( '.wrap h1, .wrap h2' ).first() );
// Make notices dismissible
function makeNoticesDismissible() {
-var showNotice,adminMenu,columns,validateForm,screenMeta;!function(a,b,c){var d=a(document),e=a(b),f=a(document.body);adminMenu={init:function(){},fold:function(){},restoreMenuState:function(){},toggle:function(){},favorites:function(){}},columns={init:function(){var b=this;a(".hide-column-tog","#adv-settings").click(function(){var c=a(this),d=c.val();c.prop("checked")?b.checked(d):b.unchecked(d),columns.saveManageColumnsState()})},saveManageColumnsState:function(){var b=this.hidden();a.post(ajaxurl,{action:"hidden-columns",hidden:b,screenoptionnonce:a("#screenoptionnonce").val(),page:pagenow})},checked:function(b){a(".column-"+b).removeClass("hidden"),this.colSpanChange(1)},unchecked:function(b){a(".column-"+b).addClass("hidden"),this.colSpanChange(-1)},hidden:function(){return a(".manage-column[id]").filter(":hidden").map(function(){return this.id}).get().join(",")},useCheckboxesForHidden:function(){this.hidden=function(){return a(".hide-column-tog").not(":checked").map(function(){var a=this.id;return a.substring(a,a.length-5)}).get().join(",")}},colSpanChange:function(b){var c,d=a("table").find(".colspanchange");d.length&&(c=parseInt(d.attr("colspan"),10)+b,d.attr("colspan",c.toString()))}},d.ready(function(){columns.init()}),validateForm=function(b){return!a(b).find(".form-required").filter(function(){return""===a("input:visible",this).val()}).addClass("form-invalid").find("input:visible").change(function(){a(this).closest(".form-invalid").removeClass("form-invalid")}).size()},showNotice={warn:function(){var a=commonL10n.warnDelete||"";return confirm(a)?!0:!1},note:function(a){alert(a)}},screenMeta={element:null,toggles:null,page:null,init:function(){this.element=a("#screen-meta"),this.toggles=a("#screen-meta-links").find(".show-settings"),this.page=a("#wpcontent"),this.toggles.click(this.toggleEvent)},toggleEvent:function(){var b=a("#"+a(this).attr("aria-controls"));b.length&&(b.is(":visible")?screenMeta.close(b,a(this)):screenMeta.open(b,a(this)))},open:function(b,c){a("#screen-meta-links").find(".screen-meta-toggle").not(c.parent()).css("visibility","hidden"),b.parent().show(),b.slideDown("fast",function(){b.focus(),c.addClass("screen-meta-active").attr("aria-expanded",!0)}),d.trigger("screen:options:open")},close:function(b,c){b.slideUp("fast",function(){c.removeClass("screen-meta-active").attr("aria-expanded",!1),a(".screen-meta-toggle").css("visibility",""),b.parent().hide()}),d.trigger("screen:options:close")}},a(".contextual-help-tabs").delegate("a","click",function(b){var c,d=a(this);return b.preventDefault(),d.is(".active a")?!1:(a(".contextual-help-tabs .active").removeClass("active"),d.parent("li").addClass("active"),c=a(d.attr("href")),a(".help-tab-content").not(c).removeClass("active").hide(),void c.addClass("active").show())}),d.ready(function(){function c(){var c,d=a("a.wp-has-current-submenu");c=b.innerWidth?Math.max(b.innerWidth,document.documentElement.clientWidth):961,f.hasClass("folded")||f.hasClass("auto-fold")&&c&&960>=c&&c>782?d.attr("aria-haspopup","true"):d.attr("aria-haspopup","false")}function g(a){var b,c,d,f,g,h,i,j=a.find(".wp-submenu");g=a.offset().top,h=e.scrollTop(),i=g-h-30,b=g+j.height()+1,c=B.height(),d=60+b-c,f=e.height()+h-50,b-d>f&&(d=b-f),d>i&&(d=i),d>1?j.css("margin-top","-"+d+"px"):j.css("margin-top","")}function h(){a(".notice.is-dismissible").each(function(){var b=a(this),c=a('<button type="button" class="notice-dismiss"><span class="screen-reader-text"></span></button>'),d=commonL10n.dismiss||"";c.find(".screen-reader-text").text(d),c.on("click.wp-dismiss-notice",function(a){a.preventDefault(),b.fadeTo(100,0,function(){b.slideUp(100,function(){b.remove()})})}),b.append(c)})}function i(a){var b=e.scrollTop(),c=!a||"scroll"!==a.type;if(!(x||z||C.data("wp-responsive"))){if(O.menu+O.adminbar<O.window||O.menu+O.adminbar+20>O.wpwrap)return void k();if(N=!0,O.menu+O.adminbar>O.window){if(0>b)return void(K||(K=!0,L=!1,A.css({position:"fixed",top:"",bottom:""})));if(b+O.window>d.height()-1)return void(L||(L=!0,K=!1,A.css({position:"fixed",top:"",bottom:0})));b>J?K?(K=!1,M=A.offset().top-O.adminbar-(b-J),M+O.menu+O.adminbar<b+O.window&&(M=b+O.window-O.menu-O.adminbar),A.css({position:"absolute",top:M,bottom:""})):!L&&A.offset().top+O.menu<b+O.window&&(L=!0,A.css({position:"fixed",top:"",bottom:0})):J>b?L?(L=!1,M=A.offset().top-O.adminbar+(J-b),M+O.menu>b+O.window&&(M=b),A.css({position:"absolute",top:M,bottom:""})):!K&&A.offset().top>=b+O.adminbar&&(K=!0,A.css({position:"fixed",top:"",bottom:""})):c&&(K=L=!1,M=b+O.window-O.menu-O.adminbar-1,M>0?A.css({position:"absolute",top:M,bottom:""}):k())}J=b}}function j(){O={window:e.height(),wpwrap:B.height(),adminbar:I.height(),menu:A.height()}}function k(){!x&&N&&(K=L=N=!1,A.css({position:"",top:"",bottom:""}))}function l(){j(),C.data("wp-responsive")?(f.removeClass("sticky-menu"),k()):O.menu+O.adminbar>O.window?(i(),f.removeClass("sticky-menu")):(f.addClass("sticky-menu"),k())}var m,n,o,p,q,r,s,t,u=!1,v=a("input.current-page"),w=v.val(),x=/iPhone|iPad|iPod/.test(navigator.userAgent),y=-1!==navigator.userAgent.indexOf("Android"),z=a(document.documentElement).hasClass("ie8"),A=a("#adminmenuwrap"),B=a("#wpwrap"),C=a("#adminmenu"),D=a("#wp-responsive-overlay"),E=a("#wp-toolbar"),F=E.find('a[aria-haspopup="true"]'),G=a(".meta-box-sortables"),H=!1,I=a("#wpadminbar"),J=0,K=!1,L=!1,M=0,N=!1,O={window:e.height(),wpwrap:B.height(),adminbar:I.height(),menu:A.height()};C.on("click.wp-submenu-head",".wp-submenu-head",function(b){a(b.target).parent().siblings("a").get(0).click()}),a("#collapse-menu").on("click.collapse-menu",function(){var e,g;a("#adminmenu div.wp-submenu").css("margin-top",""),e=b.innerWidth?Math.max(b.innerWidth,document.documentElement.clientWidth):961,e&&960>e?f.hasClass("auto-fold")?(f.removeClass("auto-fold").removeClass("folded"),setUserSetting("unfold",1),setUserSetting("mfold","o"),g="open"):(f.addClass("auto-fold"),setUserSetting("unfold",0),g="folded"):f.hasClass("folded")?(f.removeClass("folded"),setUserSetting("mfold","o"),g="open"):(f.addClass("folded"),setUserSetting("mfold","f"),g="folded"),c(),d.trigger("wp-collapse-menu",{state:g})}),d.on("wp-window-resized wp-responsive-activate wp-responsive-deactivate",c),("ontouchstart"in b||/IEMobile\/[1-9]/.test(navigator.userAgent))&&(r=x?"touchstart":"click",f.on(r+".wp-mobile-hover",function(b){C.data("wp-responsive")||a(b.target).closest("#adminmenu").length||C.find("li.opensub").removeClass("opensub")}),C.find("a.wp-has-submenu").on(r+".wp-mobile-hover",function(b){var c=a(this).parent();C.data("wp-responsive")||c.hasClass("opensub")||c.hasClass("wp-menu-open")&&!(c.width()<40)||(b.preventDefault(),g(c),C.find("li.opensub").removeClass("opensub"),c.addClass("opensub"))})),x||y||(C.find("li.wp-has-submenu").hoverIntent({over:function(){var b=a(this),c=b.find(".wp-submenu"),d=parseInt(c.css("top"),10);isNaN(d)||d>-5||C.data("wp-responsive")||(g(b),C.find("li.opensub").removeClass("opensub"),b.addClass("opensub"))},out:function(){C.data("wp-responsive")||a(this).removeClass("opensub").find(".wp-submenu").css("margin-top","")},timeout:200,sensitivity:7,interval:90}),C.on("focus.adminmenu",".wp-submenu a",function(b){C.data("wp-responsive")||a(b.target).closest("li.menu-top").addClass("opensub")}).on("blur.adminmenu",".wp-submenu a",function(b){C.data("wp-responsive")||a(b.target).closest("li.menu-top").removeClass("opensub")}).find("li.wp-has-submenu.wp-not-current-submenu").on("focusin.adminmenu",function(){g(a(this))})),a("div.updated, div.error, div.notice").not(".inline, .below-h2").insertAfter(a(".wrap").children(":header").first()),d.on("wp-plugin-update-error",function(){h()}),screenMeta.init(),a("tbody").children().children(".check-column").find(":checkbox").click(function(b){if("undefined"==b.shiftKey)return!0;if(b.shiftKey){if(!u)return!0;m=a(u).closest("form").find(":checkbox").filter(":visible:enabled"),n=m.index(u),o=m.index(this),p=a(this).prop("checked"),n>0&&o>0&&n!=o&&(q=o>n?m.slice(n,o):m.slice(o,n),q.prop("checked",function(){return a(this).closest("tr").is(":visible")?p:!1}))}u=this;var c=a(this).closest("tbody").find(":checkbox").filter(":visible:enabled").not(":checked");return a(this).closest("table").children("thead, tfoot").find(":checkbox").prop("checked",function(){return 0===c.length}),!0}),a("thead, tfoot").find(".check-column :checkbox").on("click.wp-toggle-checkboxes",function(b){var c=a(this),d=c.closest("table"),e=c.prop("checked"),f=b.shiftKey||c.data("wp-toggle");d.children("tbody").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){return a(this).is(":hidden,:disabled")?!1:f?!a(this).prop("checked"):e?!0:!1}),d.children("thead, tfoot").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){return f?!1:e?!0:!1})}),a("#wpbody-content").on({focusin:function(){clearTimeout(s),t=a(this).find(".row-actions"),a(".row-actions").not(this).removeClass("visible"),t.addClass("visible")},focusout:function(){s=setTimeout(function(){t.removeClass("visible")},30)}},".has-row-actions"),a("tbody").on("click",".toggle-row",function(){a(this).closest("tr").toggleClass("is-expanded")}),a("#default-password-nag-no").click(function(){return setUserSetting("default_password_nag","hide"),a("div.default-password-nag").hide(),!1}),a("#newcontent").bind("keydown.wpevent_InsertTab",function(b){var c,d,e,f,g,h=b.target;if(27==b.keyCode)return b.preventDefault(),void a(h).data("tab-out",!0);if(!(9!=b.keyCode||b.ctrlKey||b.altKey||b.shiftKey)){if(a(h).data("tab-out"))return void a(h).data("tab-out",!1);c=h.selectionStart,d=h.selectionEnd,e=h.value,document.selection?(h.focus(),g=document.selection.createRange(),g.text=" "):c>=0&&(f=this.scrollTop,h.value=e.substring(0,c).concat(" ",e.substring(d)),h.selectionStart=h.selectionEnd=c+1,this.scrollTop=f),b.stopPropagation&&b.stopPropagation(),b.preventDefault&&b.preventDefault()}}),v.length&&v.closest("form").submit(function(){-1==a('select[name="action"]').val()&&-1==a('select[name="action2"]').val()&&v.val()==w&&v.val("1")}),a('.search-box input[type="search"], .search-box input[type="submit"]').mousedown(function(){a('select[name^="action"]').val("-1")}),a("#contextual-help-link, #show-settings-link").on("focus.scroll-into-view",function(a){a.target.scrollIntoView&&a.target.scrollIntoView(!1)}),function(){function b(){c.prop("disabled",""===d.map(function(){return a(this).val()}).get().join(""))}var c,d,e=a("form.wp-upload-form");e.length&&(c=e.find('input[type="submit"]'),d=e.find('input[type="file"]'),b(),d.on("change",b))}(),x||(e.on("scroll.pin-menu",i),d.on("tinymce-editor-init.pin-menu",function(a,b){b.on("wp-autoresize",j)})),b.wpResponsive={init:function(){var c=this;d.on("wp-responsive-activate.wp-responsive",function(){c.activate()}).on("wp-responsive-deactivate.wp-responsive",function(){c.deactivate()}),a("#wp-admin-bar-menu-toggle a").attr("aria-expanded","false"),a("#wp-admin-bar-menu-toggle").on("click.wp-responsive",function(b){b.preventDefault(),I.find(".hover").removeClass("hover"),B.toggleClass("wp-responsive-open"),B.hasClass("wp-responsive-open")?(a(this).find("a").attr("aria-expanded","true"),a("#adminmenu a:first").focus()):a(this).find("a").attr("aria-expanded","false")}),C.on("click.wp-responsive","li.wp-has-submenu > a",function(b){C.data("wp-responsive")&&(a(this).parent("li").toggleClass("selected"),b.preventDefault())}),c.trigger(),d.on("wp-window-resized.wp-responsive",a.proxy(this.trigger,this)),e.on("load.wp-responsive",function(){var a=navigator.userAgent.indexOf("AppleWebKit/")>-1?e.width():b.innerWidth;782>=a&&c.disableSortables()})},activate:function(){l(),f.hasClass("auto-fold")||f.addClass("auto-fold"),C.data("wp-responsive",1),this.disableSortables()},deactivate:function(){l(),C.removeData("wp-responsive"),this.enableSortables()},trigger:function(){var a;b.innerWidth&&(a=Math.max(b.innerWidth,document.documentElement.clientWidth),782>=a?H||(d.trigger("wp-responsive-activate"),H=!0):H&&(d.trigger("wp-responsive-deactivate"),H=!1),480>=a?this.enableOverlay():this.disableOverlay())},enableOverlay:function(){0===D.length&&(D=a('<div id="wp-responsive-overlay"></div>').insertAfter("#wpcontent").hide().on("click.wp-responsive",function(){E.find(".menupop.hover").removeClass("hover"),a(this).hide()})),F.on("click.wp-responsive",function(){D.show()})},disableOverlay:function(){F.off("click.wp-responsive"),D.hide()},disableSortables:function(){if(G.length)try{G.sortable("disable")}catch(a){}},enableSortables:function(){if(G.length)try{G.sortable("enable")}catch(a){}}},b.wpResponsive.init(),l(),c(),h(),d.on("wp-pin-menu wp-window-resized.pin-menu postboxes-columnchange.pin-menu postbox-toggled.pin-menu wp-collapse-menu.pin-menu wp-scroll-start.pin-menu",l)}),function(){function a(){d.trigger("wp-window-resized")}function c(){b.clearTimeout(f),f=b.setTimeout(a,200)}var f;e.on("resize.wp-fire-once",c)}(),function(){if("-ms-user-select"in document.documentElement.style&&navigator.userAgent.match(/IEMobile\/10\.0/)){var a=document.createElement("style");a.appendChild(document.createTextNode("@-ms-viewport{width:auto!important}")),document.getElementsByTagName("head")[0].appendChild(a)}}()}(jQuery,window);
\ No newline at end of file
+var showNotice,adminMenu,columns,validateForm,screenMeta;!function(a,b,c){var d=a(document),e=a(b),f=a(document.body);adminMenu={init:function(){},fold:function(){},restoreMenuState:function(){},toggle:function(){},favorites:function(){}},columns={init:function(){var b=this;a(".hide-column-tog","#adv-settings").click(function(){var c=a(this),d=c.val();c.prop("checked")?b.checked(d):b.unchecked(d),columns.saveManageColumnsState()})},saveManageColumnsState:function(){var b=this.hidden();a.post(ajaxurl,{action:"hidden-columns",hidden:b,screenoptionnonce:a("#screenoptionnonce").val(),page:pagenow})},checked:function(b){a(".column-"+b).removeClass("hidden"),this.colSpanChange(1)},unchecked:function(b){a(".column-"+b).addClass("hidden"),this.colSpanChange(-1)},hidden:function(){return a(".manage-column[id]").filter(":hidden").map(function(){return this.id}).get().join(",")},useCheckboxesForHidden:function(){this.hidden=function(){return a(".hide-column-tog").not(":checked").map(function(){var a=this.id;return a.substring(a,a.length-5)}).get().join(",")}},colSpanChange:function(b){var c,d=a("table").find(".colspanchange");d.length&&(c=parseInt(d.attr("colspan"),10)+b,d.attr("colspan",c.toString()))}},d.ready(function(){columns.init()}),validateForm=function(b){return!a(b).find(".form-required").filter(function(){return""===a("input:visible",this).val()}).addClass("form-invalid").find("input:visible").change(function(){a(this).closest(".form-invalid").removeClass("form-invalid")}).size()},showNotice={warn:function(){var a=commonL10n.warnDelete||"";return confirm(a)?!0:!1},note:function(a){alert(a)}},screenMeta={element:null,toggles:null,page:null,init:function(){this.element=a("#screen-meta"),this.toggles=a("#screen-meta-links").find(".show-settings"),this.page=a("#wpcontent"),this.toggles.click(this.toggleEvent)},toggleEvent:function(){var b=a("#"+a(this).attr("aria-controls"));b.length&&(b.is(":visible")?screenMeta.close(b,a(this)):screenMeta.open(b,a(this)))},open:function(b,c){a("#screen-meta-links").find(".screen-meta-toggle").not(c.parent()).css("visibility","hidden"),b.parent().show(),b.slideDown("fast",function(){b.focus(),c.addClass("screen-meta-active").attr("aria-expanded",!0)}),d.trigger("screen:options:open")},close:function(b,c){b.slideUp("fast",function(){c.removeClass("screen-meta-active").attr("aria-expanded",!1),a(".screen-meta-toggle").css("visibility",""),b.parent().hide()}),d.trigger("screen:options:close")}},a(".contextual-help-tabs").delegate("a","click",function(b){var c,d=a(this);return b.preventDefault(),d.is(".active a")?!1:(a(".contextual-help-tabs .active").removeClass("active"),d.parent("li").addClass("active"),c=a(d.attr("href")),a(".help-tab-content").not(c).removeClass("active").hide(),void c.addClass("active").show())}),d.ready(function(){function c(){var c,d=a("a.wp-has-current-submenu");c=b.innerWidth?Math.max(b.innerWidth,document.documentElement.clientWidth):961,f.hasClass("folded")||f.hasClass("auto-fold")&&c&&960>=c&&c>782?d.attr("aria-haspopup","true"):d.attr("aria-haspopup","false")}function g(a){var b,c,d,f,g,h,i,j=a.find(".wp-submenu");g=a.offset().top,h=e.scrollTop(),i=g-h-30,b=g+j.height()+1,c=B.height(),d=60+b-c,f=e.height()+h-50,b-d>f&&(d=b-f),d>i&&(d=i),d>1?j.css("margin-top","-"+d+"px"):j.css("margin-top","")}function h(){a(".notice.is-dismissible").each(function(){var b=a(this),c=a('<button type="button" class="notice-dismiss"><span class="screen-reader-text"></span></button>'),d=commonL10n.dismiss||"";c.find(".screen-reader-text").text(d),c.on("click.wp-dismiss-notice",function(a){a.preventDefault(),b.fadeTo(100,0,function(){b.slideUp(100,function(){b.remove()})})}),b.append(c)})}function i(a){var b=e.scrollTop(),c=!a||"scroll"!==a.type;if(!(x||z||C.data("wp-responsive"))){if(O.menu+O.adminbar<O.window||O.menu+O.adminbar+20>O.wpwrap)return void k();if(N=!0,O.menu+O.adminbar>O.window){if(0>b)return void(K||(K=!0,L=!1,A.css({position:"fixed",top:"",bottom:""})));if(b+O.window>d.height()-1)return void(L||(L=!0,K=!1,A.css({position:"fixed",top:"",bottom:0})));b>J?K?(K=!1,M=A.offset().top-O.adminbar-(b-J),M+O.menu+O.adminbar<b+O.window&&(M=b+O.window-O.menu-O.adminbar),A.css({position:"absolute",top:M,bottom:""})):!L&&A.offset().top+O.menu<b+O.window&&(L=!0,A.css({position:"fixed",top:"",bottom:0})):J>b?L?(L=!1,M=A.offset().top-O.adminbar+(J-b),M+O.menu>b+O.window&&(M=b),A.css({position:"absolute",top:M,bottom:""})):!K&&A.offset().top>=b+O.adminbar&&(K=!0,A.css({position:"fixed",top:"",bottom:""})):c&&(K=L=!1,M=b+O.window-O.menu-O.adminbar-1,M>0?A.css({position:"absolute",top:M,bottom:""}):k())}J=b}}function j(){O={window:e.height(),wpwrap:B.height(),adminbar:I.height(),menu:A.height()}}function k(){!x&&N&&(K=L=N=!1,A.css({position:"",top:"",bottom:""}))}function l(){j(),C.data("wp-responsive")?(f.removeClass("sticky-menu"),k()):O.menu+O.adminbar>O.window?(i(),f.removeClass("sticky-menu")):(f.addClass("sticky-menu"),k())}var m,n,o,p,q,r,s,t,u=!1,v=a("input.current-page"),w=v.val(),x=/iPhone|iPad|iPod/.test(navigator.userAgent),y=-1!==navigator.userAgent.indexOf("Android"),z=a(document.documentElement).hasClass("ie8"),A=a("#adminmenuwrap"),B=a("#wpwrap"),C=a("#adminmenu"),D=a("#wp-responsive-overlay"),E=a("#wp-toolbar"),F=E.find('a[aria-haspopup="true"]'),G=a(".meta-box-sortables"),H=!1,I=a("#wpadminbar"),J=0,K=!1,L=!1,M=0,N=!1,O={window:e.height(),wpwrap:B.height(),adminbar:I.height(),menu:A.height()};C.on("click.wp-submenu-head",".wp-submenu-head",function(b){a(b.target).parent().siblings("a").get(0).click()}),a("#collapse-menu").on("click.collapse-menu",function(){var e,g;a("#adminmenu div.wp-submenu").css("margin-top",""),e=b.innerWidth?Math.max(b.innerWidth,document.documentElement.clientWidth):961,e&&960>e?f.hasClass("auto-fold")?(f.removeClass("auto-fold").removeClass("folded"),setUserSetting("unfold",1),setUserSetting("mfold","o"),g="open"):(f.addClass("auto-fold"),setUserSetting("unfold",0),g="folded"):f.hasClass("folded")?(f.removeClass("folded"),setUserSetting("mfold","o"),g="open"):(f.addClass("folded"),setUserSetting("mfold","f"),g="folded"),c(),d.trigger("wp-collapse-menu",{state:g})}),d.on("wp-window-resized wp-responsive-activate wp-responsive-deactivate",c),("ontouchstart"in b||/IEMobile\/[1-9]/.test(navigator.userAgent))&&(r=x?"touchstart":"click",f.on(r+".wp-mobile-hover",function(b){C.data("wp-responsive")||a(b.target).closest("#adminmenu").length||C.find("li.opensub").removeClass("opensub")}),C.find("a.wp-has-submenu").on(r+".wp-mobile-hover",function(b){var c=a(this).parent();C.data("wp-responsive")||c.hasClass("opensub")||c.hasClass("wp-menu-open")&&!(c.width()<40)||(b.preventDefault(),g(c),C.find("li.opensub").removeClass("opensub"),c.addClass("opensub"))})),x||y||(C.find("li.wp-has-submenu").hoverIntent({over:function(){var b=a(this),c=b.find(".wp-submenu"),d=parseInt(c.css("top"),10);isNaN(d)||d>-5||C.data("wp-responsive")||(g(b),C.find("li.opensub").removeClass("opensub"),b.addClass("opensub"))},out:function(){C.data("wp-responsive")||a(this).removeClass("opensub").find(".wp-submenu").css("margin-top","")},timeout:200,sensitivity:7,interval:90}),C.on("focus.adminmenu",".wp-submenu a",function(b){C.data("wp-responsive")||a(b.target).closest("li.menu-top").addClass("opensub")}).on("blur.adminmenu",".wp-submenu a",function(b){C.data("wp-responsive")||a(b.target).closest("li.menu-top").removeClass("opensub")}).find("li.wp-has-submenu.wp-not-current-submenu").on("focusin.adminmenu",function(){g(a(this))})),a("div.updated, div.error, div.notice").not(".inline, .below-h2").insertAfter(a(".wrap h1, .wrap h2").first()),d.on("wp-plugin-update-error",function(){h()}),screenMeta.init(),a("tbody").children().children(".check-column").find(":checkbox").click(function(b){if("undefined"==b.shiftKey)return!0;if(b.shiftKey){if(!u)return!0;m=a(u).closest("form").find(":checkbox").filter(":visible:enabled"),n=m.index(u),o=m.index(this),p=a(this).prop("checked"),n>0&&o>0&&n!=o&&(q=o>n?m.slice(n,o):m.slice(o,n),q.prop("checked",function(){return a(this).closest("tr").is(":visible")?p:!1}))}u=this;var c=a(this).closest("tbody").find(":checkbox").filter(":visible:enabled").not(":checked");return a(this).closest("table").children("thead, tfoot").find(":checkbox").prop("checked",function(){return 0===c.length}),!0}),a("thead, tfoot").find(".check-column :checkbox").on("click.wp-toggle-checkboxes",function(b){var c=a(this),d=c.closest("table"),e=c.prop("checked"),f=b.shiftKey||c.data("wp-toggle");d.children("tbody").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){return a(this).is(":hidden,:disabled")?!1:f?!a(this).prop("checked"):e?!0:!1}),d.children("thead, tfoot").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){return f?!1:e?!0:!1})}),a("#wpbody-content").on({focusin:function(){clearTimeout(s),t=a(this).find(".row-actions"),a(".row-actions").not(this).removeClass("visible"),t.addClass("visible")},focusout:function(){s=setTimeout(function(){t.removeClass("visible")},30)}},".has-row-actions"),a("tbody").on("click",".toggle-row",function(){a(this).closest("tr").toggleClass("is-expanded")}),a("#default-password-nag-no").click(function(){return setUserSetting("default_password_nag","hide"),a("div.default-password-nag").hide(),!1}),a("#newcontent").bind("keydown.wpevent_InsertTab",function(b){var c,d,e,f,g,h=b.target;if(27==b.keyCode)return b.preventDefault(),void a(h).data("tab-out",!0);if(!(9!=b.keyCode||b.ctrlKey||b.altKey||b.shiftKey)){if(a(h).data("tab-out"))return void a(h).data("tab-out",!1);c=h.selectionStart,d=h.selectionEnd,e=h.value,document.selection?(h.focus(),g=document.selection.createRange(),g.text=" "):c>=0&&(f=this.scrollTop,h.value=e.substring(0,c).concat(" ",e.substring(d)),h.selectionStart=h.selectionEnd=c+1,this.scrollTop=f),b.stopPropagation&&b.stopPropagation(),b.preventDefault&&b.preventDefault()}}),v.length&&v.closest("form").submit(function(){-1==a('select[name="action"]').val()&&-1==a('select[name="action2"]').val()&&v.val()==w&&v.val("1")}),a('.search-box input[type="search"], .search-box input[type="submit"]').mousedown(function(){a('select[name^="action"]').val("-1")}),a("#contextual-help-link, #show-settings-link").on("focus.scroll-into-view",function(a){a.target.scrollIntoView&&a.target.scrollIntoView(!1)}),function(){function b(){c.prop("disabled",""===d.map(function(){return a(this).val()}).get().join(""))}var c,d,e=a("form.wp-upload-form");e.length&&(c=e.find('input[type="submit"]'),d=e.find('input[type="file"]'),b(),d.on("change",b))}(),x||(e.on("scroll.pin-menu",i),d.on("tinymce-editor-init.pin-menu",function(a,b){b.on("wp-autoresize",j)})),b.wpResponsive={init:function(){var c=this;d.on("wp-responsive-activate.wp-responsive",function(){c.activate()}).on("wp-responsive-deactivate.wp-responsive",function(){c.deactivate()}),a("#wp-admin-bar-menu-toggle a").attr("aria-expanded","false"),a("#wp-admin-bar-menu-toggle").on("click.wp-responsive",function(b){b.preventDefault(),I.find(".hover").removeClass("hover"),B.toggleClass("wp-responsive-open"),B.hasClass("wp-responsive-open")?(a(this).find("a").attr("aria-expanded","true"),a("#adminmenu a:first").focus()):a(this).find("a").attr("aria-expanded","false")}),C.on("click.wp-responsive","li.wp-has-submenu > a",function(b){C.data("wp-responsive")&&(a(this).parent("li").toggleClass("selected"),b.preventDefault())}),c.trigger(),d.on("wp-window-resized.wp-responsive",a.proxy(this.trigger,this)),e.on("load.wp-responsive",function(){var a=navigator.userAgent.indexOf("AppleWebKit/")>-1?e.width():b.innerWidth;782>=a&&c.disableSortables()})},activate:function(){l(),f.hasClass("auto-fold")||f.addClass("auto-fold"),C.data("wp-responsive",1),this.disableSortables()},deactivate:function(){l(),C.removeData("wp-responsive"),this.enableSortables()},trigger:function(){var a;b.innerWidth&&(a=Math.max(b.innerWidth,document.documentElement.clientWidth),782>=a?H||(d.trigger("wp-responsive-activate"),H=!0):H&&(d.trigger("wp-responsive-deactivate"),H=!1),480>=a?this.enableOverlay():this.disableOverlay())},enableOverlay:function(){0===D.length&&(D=a('<div id="wp-responsive-overlay"></div>').insertAfter("#wpcontent").hide().on("click.wp-responsive",function(){E.find(".menupop.hover").removeClass("hover"),a(this).hide()})),F.on("click.wp-responsive",function(){D.show()})},disableOverlay:function(){F.off("click.wp-responsive"),D.hide()},disableSortables:function(){if(G.length)try{G.sortable("disable")}catch(a){}},enableSortables:function(){if(G.length)try{G.sortable("enable")}catch(a){}}},b.wpResponsive.init(),l(),c(),h(),d.on("wp-pin-menu wp-window-resized.pin-menu postboxes-columnchange.pin-menu postbox-toggled.pin-menu wp-collapse-menu.pin-menu wp-scroll-start.pin-menu",l)}),function(){function a(){d.trigger("wp-window-resized")}function c(){b.clearTimeout(f),f=b.setTimeout(a,200)}var f;e.on("resize.wp-fire-once",c)}(),function(){if("-ms-user-select"in document.documentElement.style&&navigator.userAgent.match(/IEMobile\/10\.0/)){var a=document.createElement("style");a.appendChild(document.createTextNode("@-ms-viewport{width:auto!important}")),document.getElementsByTagName("head")[0].appendChild(a)}}()}(jQuery,window);
\ No newline at end of file
}
}
);
+ // Prevent submitting the form when pressing Enter on a focused field.
+ return false;
},
revert : function() {
-window.wp=window.wp||{};var inlineEditTax;!function(a,b){inlineEditTax={init:function(){var b=this,c=a("#inline-edit");b.type=a("#the-list").attr("data-wp-lists").substr(5),b.what="#"+b.type+"-",a("#the-list").on("click","a.editinline",function(){return inlineEditTax.edit(this),!1}),c.keyup(function(a){return 27===a.which?inlineEditTax.revert():void 0}),a(".cancel",c).click(function(){return inlineEditTax.revert()}),a(".save",c).click(function(){return inlineEditTax.save(this)}),a("input, select",c).keydown(function(a){return 13===a.which?inlineEditTax.save(this):void 0}),a('#posts-filter input[type="submit"]').mousedown(function(){b.revert()})},toggle:function(b){var c=this;"none"===a(c.what+c.getId(b)).css("display")?c.revert():c.edit(b)},edit:function(b){var c,d,e,f=this;return f.revert(),"object"==typeof b&&(b=f.getId(b)),c=a("#inline-edit").clone(!0),d=a("#inline_"+b),a("td",c).attr("colspan",a("th:visible, td:visible",".widefat:first thead").length),a(f.what+b).hide().after(c).after('<tr class="hidden"></tr>'),e=a(".name",d),e.find("img").replaceWith(function(){return this.alt}),e=e.text(),a(':input[name="name"]',c).val(e),e=a(".slug",d),e.find("img").replaceWith(function(){return this.alt}),e=e.text(),a(':input[name="slug"]',c).val(e),a(c).attr("id","edit-"+b).addClass("inline-editor").show(),a(".ptitle",c).eq(0).focus(),!1},save:function(c){var d,e,f=a('input[name="taxonomy"]').val()||"";"object"==typeof c&&(c=this.getId(c)),a("table.widefat .spinner").addClass("is-active"),d={action:"inline-save-tax",tax_type:this.type,tax_ID:c,taxonomy:f},e=a("#edit-"+c).find(":input").serialize(),d=e+"&"+a.param(d),a.post(ajaxurl,d,function(d){var e,f,g,h=a("#edit-"+c+" .inline-edit-save .error");a("table.widefat .spinner").removeClass("is-active"),d?-1!==d.indexOf("<tr")?(a(inlineEditTax.what+c).siblings("tr.hidden").addBack().remove(),f=a(d).attr("id"),a("#edit-"+c).before(d).remove(),f?(g=f.replace(inlineEditTax.type+"-",""),e=a("#"+f)):(g=c,e=a(inlineEditTax.what+c)),a("#parent").find("option[value="+g+"]").text(e.find(".row-title").text()),e.hide().fadeIn(400,function(){e.find(".row-title").focus(),b.a11y.speak(inlineEditL10n.saved)})):(h.html(d).show(),b.a11y.speak(h.text())):(h.html(inlineEditL10n.error).show(),b.a11y.speak(inlineEditL10n.error))})},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");b&&(a("table.widefat .spinner").removeClass("is-active"),a("#"+b).siblings("tr.hidden").addBack().remove(),b=b.substr(b.lastIndexOf("-")+1),a(this.what+b).show().find(".row-title").focus())},getId:function(b){var c="TR"===b.tagName?b.id:a(b).parents("tr").attr("id"),d=c.split("-");return d[d.length-1]}},a(document).ready(function(){inlineEditTax.init()})}(jQuery,window.wp);
\ No newline at end of file
+window.wp=window.wp||{};var inlineEditTax;!function(a,b){inlineEditTax={init:function(){var b=this,c=a("#inline-edit");b.type=a("#the-list").attr("data-wp-lists").substr(5),b.what="#"+b.type+"-",a("#the-list").on("click","a.editinline",function(){return inlineEditTax.edit(this),!1}),c.keyup(function(a){return 27===a.which?inlineEditTax.revert():void 0}),a(".cancel",c).click(function(){return inlineEditTax.revert()}),a(".save",c).click(function(){return inlineEditTax.save(this)}),a("input, select",c).keydown(function(a){return 13===a.which?inlineEditTax.save(this):void 0}),a('#posts-filter input[type="submit"]').mousedown(function(){b.revert()})},toggle:function(b){var c=this;"none"===a(c.what+c.getId(b)).css("display")?c.revert():c.edit(b)},edit:function(b){var c,d,e,f=this;return f.revert(),"object"==typeof b&&(b=f.getId(b)),c=a("#inline-edit").clone(!0),d=a("#inline_"+b),a("td",c).attr("colspan",a("th:visible, td:visible",".widefat:first thead").length),a(f.what+b).hide().after(c).after('<tr class="hidden"></tr>'),e=a(".name",d),e.find("img").replaceWith(function(){return this.alt}),e=e.text(),a(':input[name="name"]',c).val(e),e=a(".slug",d),e.find("img").replaceWith(function(){return this.alt}),e=e.text(),a(':input[name="slug"]',c).val(e),a(c).attr("id","edit-"+b).addClass("inline-editor").show(),a(".ptitle",c).eq(0).focus(),!1},save:function(c){var d,e,f=a('input[name="taxonomy"]').val()||"";return"object"==typeof c&&(c=this.getId(c)),a("table.widefat .spinner").addClass("is-active"),d={action:"inline-save-tax",tax_type:this.type,tax_ID:c,taxonomy:f},e=a("#edit-"+c).find(":input").serialize(),d=e+"&"+a.param(d),a.post(ajaxurl,d,function(d){var e,f,g,h=a("#edit-"+c+" .inline-edit-save .error");a("table.widefat .spinner").removeClass("is-active"),d?-1!==d.indexOf("<tr")?(a(inlineEditTax.what+c).siblings("tr.hidden").addBack().remove(),f=a(d).attr("id"),a("#edit-"+c).before(d).remove(),f?(g=f.replace(inlineEditTax.type+"-",""),e=a("#"+f)):(g=c,e=a(inlineEditTax.what+c)),a("#parent").find("option[value="+g+"]").text(e.find(".row-title").text()),e.hide().fadeIn(400,function(){e.find(".row-title").focus(),b.a11y.speak(inlineEditL10n.saved)})):(h.html(d).show(),b.a11y.speak(h.text())):(h.html(inlineEditL10n.error).show(),b.a11y.speak(inlineEditL10n.error))}),!1},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");b&&(a("table.widefat .spinner").removeClass("is-active"),a("#"+b).siblings("tr.hidden").addBack().remove(),b=b.substr(b.lastIndexOf("-")+1),a(this.what+b).show().find(".row-title").focus())},getId:function(b){var c="TR"===b.tagName?b.id:a(b).parents("tr").attr("id"),d=c.split("-");return d[d.length-1]}},a(document).ready(function(){inlineEditTax.init()})}(jQuery,window.wp);
\ No newline at end of file
this.page = page;
this.init( page, args );
- $handles.on( 'click.postboxes', this.handle_click );
+ $handles.on( 'click.postboxes', this.handle_click );
$('.postbox .hndle a').click( function(e) {
e.stopPropagation();
},
save_state : function(page) {
- var closed = $('.postbox').filter('.closed').map(function() { return this.id; }).get().join(','),
- hidden = $('.postbox').filter(':hidden').map(function() { return this.id; }).get().join(',');
+ var closed, hidden;
+
+ // Return on the nav-menus.php screen, see #35112.
+ if ( 'nav-menus' === page ) {
+ return;
+ }
+
+ closed = $( '.postbox' ).filter( '.closed' ).map( function() { return this.id; } ).get().join( ',' );
+ hidden = $( '.postbox' ).filter( ':hidden' ).map( function() { return this.id; } ).get().join( ',' );
$.post(ajaxurl, {
action: 'closed-postboxes',
-var postboxes;!function(a){var b=a(document);postboxes={handle_click:function(){var c,d=a(this),e=d.parent(".postbox"),f=e.attr("id");"dashboard_browser_nag"!==f&&(e.toggleClass("closed"),c=!e.hasClass("closed"),d.hasClass("handlediv")?d.attr("aria-expanded",c):d.closest(".postbox").find("button.handlediv").attr("aria-expanded",c),"press-this"!==postboxes.page&&postboxes.save_state(postboxes.page),f&&(!e.hasClass("closed")&&a.isFunction(postboxes.pbshow)?postboxes.pbshow(f):e.hasClass("closed")&&a.isFunction(postboxes.pbhide)&&postboxes.pbhide(f)),b.trigger("postbox-toggled",e))},add_postbox_toggles:function(c,d){var e=a(".postbox .hndle, .postbox .handlediv");this.page=c,this.init(c,d),e.on("click.postboxes",this.handle_click),a(".postbox .hndle a").click(function(a){a.stopPropagation()}),a(".postbox a.dismiss").on("click.postboxes",function(b){var c=a(this).parents(".postbox").attr("id")+"-hide";b.preventDefault(),a("#"+c).prop("checked",!1).triggerHandler("click")}),a(".hide-postbox-tog").bind("click.postboxes",function(){var d=a(this),e=d.val(),f=a("#"+e);d.prop("checked")?(f.show(),a.isFunction(postboxes.pbshow)&&postboxes.pbshow(e)):(f.hide(),a.isFunction(postboxes.pbhide)&&postboxes.pbhide(e)),postboxes.save_state(c),postboxes._mark_area(),b.trigger("postbox-toggled",f)}),a('.columns-prefs input[type="radio"]').bind("click.postboxes",function(){var b=parseInt(a(this).val(),10);b&&(postboxes._pb_edit(b),postboxes.save_order(c))})},init:function(b,c){var d=a(document.body).hasClass("mobile"),e=a(".postbox .handlediv");a.extend(this,c||{}),a("#wpbody-content").css("overflow","hidden"),a(".meta-box-sortables").sortable({placeholder:"sortable-placeholder",connectWith:".meta-box-sortables",items:".postbox",handle:".hndle",cursor:"move",delay:d?200:0,distance:2,tolerance:"pointer",forcePlaceholderSize:!0,helper:"clone",opacity:.65,stop:function(){var c=a(this);return c.find("#dashboard_browser_nag").is(":visible")&&"dashboard_browser_nag"!=this.firstChild.id?void c.sortable("cancel"):void postboxes.save_order(b)},receive:function(b,c){"dashboard_browser_nag"==c.item[0].id&&a(c.sender).sortable("cancel"),postboxes._mark_area()}}),d&&(a(document.body).bind("orientationchange.postboxes",function(){postboxes._pb_change()}),this._pb_change()),this._mark_area(),e.each(function(){var b=a(this);b.attr("aria-expanded",!b.parent(".postbox").hasClass("closed"))})},save_state:function(b){var c=a(".postbox").filter(".closed").map(function(){return this.id}).get().join(","),d=a(".postbox").filter(":hidden").map(function(){return this.id}).get().join(",");a.post(ajaxurl,{action:"closed-postboxes",closed:c,hidden:d,closedpostboxesnonce:jQuery("#closedpostboxesnonce").val(),page:b})},save_order:function(b){var c,d=a(".columns-prefs input:checked").val()||0;c={action:"meta-box-order",_ajax_nonce:a("#meta-box-order-nonce").val(),page_columns:d,page:b},a(".meta-box-sortables").each(function(){c["order["+this.id.split("-")[0]+"]"]=a(this).sortable("toArray").join(",")}),a.post(ajaxurl,c)},_mark_area:function(){var b=a("div.postbox:visible").length,c=a("#post-body #side-sortables");a("#dashboard-widgets .meta-box-sortables:visible").each(function(){var c=a(this);1==b||c.children(".postbox:visible").length?c.removeClass("empty-container"):c.addClass("empty-container")}),c.length&&(c.children(".postbox:visible").length?c.removeClass("empty-container"):"280px"==a("#postbox-container-1").css("width")&&c.addClass("empty-container"))},_pb_edit:function(b){var c=a(".metabox-holder").get(0);c&&(c.className=c.className.replace(/columns-\d+/,"columns-"+b)),a(document).trigger("postboxes-columnchange")},_pb_change:function(){var b=a('label.columns-prefs-1 input[type="radio"]');switch(window.orientation){case 90:case-90:b.length&&b.is(":checked")||this._pb_edit(2);break;case 0:case 180:a("#poststuff").length?this._pb_edit(1):b.length&&b.is(":checked")||this._pb_edit(2)}},pbshow:!1,pbhide:!1}}(jQuery);
\ No newline at end of file
+var postboxes;!function(a){var b=a(document);postboxes={handle_click:function(){var c,d=a(this),e=d.parent(".postbox"),f=e.attr("id");"dashboard_browser_nag"!==f&&(e.toggleClass("closed"),c=!e.hasClass("closed"),d.hasClass("handlediv")?d.attr("aria-expanded",c):d.closest(".postbox").find("button.handlediv").attr("aria-expanded",c),"press-this"!==postboxes.page&&postboxes.save_state(postboxes.page),f&&(!e.hasClass("closed")&&a.isFunction(postboxes.pbshow)?postboxes.pbshow(f):e.hasClass("closed")&&a.isFunction(postboxes.pbhide)&&postboxes.pbhide(f)),b.trigger("postbox-toggled",e))},add_postbox_toggles:function(c,d){var e=a(".postbox .hndle, .postbox .handlediv");this.page=c,this.init(c,d),e.on("click.postboxes",this.handle_click),a(".postbox .hndle a").click(function(a){a.stopPropagation()}),a(".postbox a.dismiss").on("click.postboxes",function(b){var c=a(this).parents(".postbox").attr("id")+"-hide";b.preventDefault(),a("#"+c).prop("checked",!1).triggerHandler("click")}),a(".hide-postbox-tog").bind("click.postboxes",function(){var d=a(this),e=d.val(),f=a("#"+e);d.prop("checked")?(f.show(),a.isFunction(postboxes.pbshow)&&postboxes.pbshow(e)):(f.hide(),a.isFunction(postboxes.pbhide)&&postboxes.pbhide(e)),postboxes.save_state(c),postboxes._mark_area(),b.trigger("postbox-toggled",f)}),a('.columns-prefs input[type="radio"]').bind("click.postboxes",function(){var b=parseInt(a(this).val(),10);b&&(postboxes._pb_edit(b),postboxes.save_order(c))})},init:function(b,c){var d=a(document.body).hasClass("mobile"),e=a(".postbox .handlediv");a.extend(this,c||{}),a("#wpbody-content").css("overflow","hidden"),a(".meta-box-sortables").sortable({placeholder:"sortable-placeholder",connectWith:".meta-box-sortables",items:".postbox",handle:".hndle",cursor:"move",delay:d?200:0,distance:2,tolerance:"pointer",forcePlaceholderSize:!0,helper:"clone",opacity:.65,stop:function(){var c=a(this);return c.find("#dashboard_browser_nag").is(":visible")&&"dashboard_browser_nag"!=this.firstChild.id?void c.sortable("cancel"):void postboxes.save_order(b)},receive:function(b,c){"dashboard_browser_nag"==c.item[0].id&&a(c.sender).sortable("cancel"),postboxes._mark_area()}}),d&&(a(document.body).bind("orientationchange.postboxes",function(){postboxes._pb_change()}),this._pb_change()),this._mark_area(),e.each(function(){var b=a(this);b.attr("aria-expanded",!b.parent(".postbox").hasClass("closed"))})},save_state:function(b){var c,d;"nav-menus"!==b&&(c=a(".postbox").filter(".closed").map(function(){return this.id}).get().join(","),d=a(".postbox").filter(":hidden").map(function(){return this.id}).get().join(","),a.post(ajaxurl,{action:"closed-postboxes",closed:c,hidden:d,closedpostboxesnonce:jQuery("#closedpostboxesnonce").val(),page:b}))},save_order:function(b){var c,d=a(".columns-prefs input:checked").val()||0;c={action:"meta-box-order",_ajax_nonce:a("#meta-box-order-nonce").val(),page_columns:d,page:b},a(".meta-box-sortables").each(function(){c["order["+this.id.split("-")[0]+"]"]=a(this).sortable("toArray").join(",")}),a.post(ajaxurl,c)},_mark_area:function(){var b=a("div.postbox:visible").length,c=a("#post-body #side-sortables");a("#dashboard-widgets .meta-box-sortables:visible").each(function(){var c=a(this);1==b||c.children(".postbox:visible").length?c.removeClass("empty-container"):c.addClass("empty-container")}),c.length&&(c.children(".postbox:visible").length?c.removeClass("empty-container"):"280px"==a("#postbox-container-1").css("width")&&c.addClass("empty-container"))},_pb_edit:function(b){var c=a(".metabox-holder").get(0);c&&(c.className=c.className.replace(/columns-\d+/,"columns-"+b)),a(document).trigger("postboxes-columnchange")},_pb_change:function(){var b=a('label.columns-prefs-1 input[type="radio"]');switch(window.orientation){case 90:case-90:b.length&&b.is(":checked")||this._pb_edit(2);break;case 0:case 180:a("#poststuff").length?this._pb_edit(1):b.length&&b.is(":checked")||this._pb_edit(2)}},pbshow:!1,pbhide:!1}}(jQuery);
\ No newline at end of file
else
$userids = array_map( 'intval', (array) $_REQUEST['users'] );
- $users_posts = new WP_Query( array(
- 'post_type' => 'any',
- 'author' => implode( ',', $userids ),
- 'posts_per_page' => 1
- ) );
+ $users_have_content = false;
+ if ( $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE post_author IN( " . implode( ',', $userids ) . " ) LIMIT 1" ) ) {
+ $users_have_content = true;
+ } elseif ( $wpdb->get_var( "SELECT link_id FROM {$wpdb->links} WHERE link_owner IN( " . implode( ',', $userids ) . " ) LIMIT 1" ) ) {
+ $users_have_content = true;
+ }
- if ( $users_posts->have_posts() ) {
+ if ( $users_have_content ) {
add_action( 'admin_head', 'delete_users_add_js' );
}
</ul>
<?php if ( $go_delete ) :
- if ( ! $users_posts->have_posts() ) : ?>
+ if ( ! $users_have_content ) : ?>
<input type="hidden" name="delete_option" value="delete" />
<?php else: ?>
<?php if ( 1 == $go_delete ) : ?>
if ( !empty( $registered_sidebar['class'] ) )
$wrap_class .= ' ' . $registered_sidebar['class'];
+ $is_inactive_widgets = 'wp_inactive_widgets' == $registered_sidebar['id'];
?>
<div class="<?php echo esc_attr( $wrap_class ); ?>">
<div class="widget-holder inactive">
<?php wp_list_widget_controls( $registered_sidebar['id'], $registered_sidebar['name'] ); ?>
+
+ <?php if ( $is_inactive_widgets ) { ?>
<div class="remove-inactive-widgets">
<form action="" method="post">
<p>
<?php wp_nonce_field( 'remove-inactive-widgets', '_wpnonce_remove_inactive_widgets' ); ?>
</form>
</div>
+ <?php } ?>
</div>
+ <?php if ( $is_inactive_widgets ) { ?>
<p class="description"><?php _e( 'This will clear all items from the inactive widgets list. You will not be able to restore any customizations.' ); ?></p>
+ <?php } ?>
</div>
<?php
*
* Ce fichier contient les réglages de configuration suivants : réglages MySQL,
* préfixe de table, clefs secrètes, langue utilisée, et ABSPATH.
- * Vous pouvez en savoir plus à leur sujet en allant sur
+ * Vous pouvez en savoir plus à leur sujet en allant sur
* {@link http://codex.wordpress.org/fr:Modifier_wp-config.php Modifier
* wp-config.php}. C'est votre hébergeur qui doit vous donner vos
* codes MySQL.
/** Jeu de caractères à utiliser par la base de données lors de la création des tables. */
define('DB_CHARSET', 'utf8');
-/** Type de collation de la base de données.
- * N'y touchez que si vous savez ce que vous faites.
+/** Type de collation de la base de données.
+ * N'y touchez que si vous savez ce que vous faites.
*/
define('DB_COLLATE', '');
* Clefs uniques d'authentification et salage.
*
* Remplacez les valeurs par défaut par des phrases uniques !
- * Vous pouvez générer des phrases aléatoires en utilisant
+ * Vous pouvez générer des phrases aléatoires en utilisant
* {@link https://api.wordpress.org/secret-key/1.1/salt/ le service de clefs secrètes de WordPress.org}.
* Vous pouvez modifier ces phrases à n'importe quel moment, afin d'invalider tous les cookies existants.
* Cela forcera également tous les utilisateurs à se reconnecter.
*
* @since 2.6.0
*/
-define('AUTH_KEY', 'put your unique phrase here');
-define('SECURE_AUTH_KEY', 'put your unique phrase here');
-define('LOGGED_IN_KEY', 'put your unique phrase here');
-define('NONCE_KEY', 'put your unique phrase here');
-define('AUTH_SALT', 'put your unique phrase here');
-define('SECURE_AUTH_SALT', 'put your unique phrase here');
-define('LOGGED_IN_SALT', 'put your unique phrase here');
-define('NONCE_SALT', 'put your unique phrase here');
+define('AUTH_KEY', 'put your unique phrase here');
+define('SECURE_AUTH_KEY', 'put your unique phrase here');
+define('LOGGED_IN_KEY', 'put your unique phrase here');
+define('NONCE_KEY', 'put your unique phrase here');
+define('AUTH_SALT', 'put your unique phrase here');
+define('SECURE_AUTH_SALT', 'put your unique phrase here');
+define('LOGGED_IN_SALT', 'put your unique phrase here');
+define('NONCE_SALT', 'put your unique phrase here');
/**#@-*/
/**
* Préfixe de base de données pour les tables de WordPress.
*
* Vous pouvez installer plusieurs WordPress sur une seule base de données
- * si vous leur donnez chacune un préfixe unique.
+ * si vous leur donnez chacune un préfixe unique.
* N'utilisez que des chiffres, des lettres non-accentuées, et des caractères soulignés!
*/
$table_prefix = 'wp_';
-/**
- * Pour les développeurs : le mode deboguage de WordPress.
- *
+/**
+ * Pour les développeurs : le mode déboguage de WordPress.
+ *
* En passant la valeur suivante à "true", vous activez l'affichage des
- * notifications d'erreurs pendant votre essais.
+ * notifications d'erreurs pendant vos essais.
* Il est fortemment recommandé que les développeurs d'extensions et
- * de thèmes se servent de WP_DEBUG dans leur environnement de
+ * de thèmes se servent de WP_DEBUG dans leur environnement de
* développement.
- */
-define('WP_DEBUG', false);
+ */
+define('WP_DEBUG', false);
/* C'est tout, ne touchez pas à ce qui suit ! Bon blogging ! */
# This file is distributed under the same license as the Administration package.
msgid ""
msgstr ""
-"PO-Revision-Date: 2015-12-22 14:45:38+0000\n"
+"PO-Revision-Date: 2016-01-18 14:36:47+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. translators: 1: WP_Term class name, WP_Comment class name, WP_Network class
#. name
-#: wp-admin/about.php:177
+#: wp-admin/about.php:189
msgid "New %1$s, %2$s, and %3$s objects make interacting with terms, comments, and networks more predictable and intuitive in code."
msgstr "Les nouveaux objets %1$s, %2$s et %3$s rendent la gestion par le code des termes, commentaires et réseaux plus prévisible et intuitive."
#. translators: WP_Comment_Query class name
-#: wp-admin/about.php:170
+#: wp-admin/about.php:182
msgid "Comment queries now have cache handling to improve performance. New arguments in %s make crafting robust comment queries simpler."
msgstr "Les requêtes de commentaires disposent désormais d’un gestionnaire de cache pour améliorer les performances. Les nouveaux arguments de %s simplifient la mise en place de requêtes de commentaires robustes."
-#: wp-admin/about.php:174
+#: wp-admin/about.php:186
msgid "Term, comment, and network objects"
msgstr "Objets pour les termes, commentaires et réseaux"
-#: wp-admin/about.php:167
+#: wp-admin/about.php:179
msgid "Comment query improvements"
msgstr "Amélioration des requêtes de commentaires"
#. translators: 1: add_term_meta() docs link, 2: get_term_meta() docs link, 3:
#. update_term_meta() docs link
-#: wp-admin/about.php:159
+#: wp-admin/about.php:171
msgid "Terms now support metadata, just like posts. See %1$s, %2$s, and %3$s for more information."
msgstr "Les termes disposent désormais de métadonnées, tout comme les articles. Lisez la documentation de %1$s, %2$s et %3$s pour plus d'information."
-#: wp-admin/about.php:156
+#: wp-admin/about.php:168
msgid "Term meta"
msgstr "Méta des termes"
#. translators: WordPress REST API plugin link
-#: wp-admin/about.php:148
+#: wp-admin/about.php:160
msgid "Infrastructure is the first part of a multi-stage rollout for the REST API. Inclusion of core endpoints is targeted for an upcoming release. To get a sneak peek of the core endpoints, and for more information on extending the REST API, check out the official %s plugin."
msgstr "L’infrastructure est la première partie d’une mise en place en plusieurs étapes de l’API REST. L’inclusion des points d’accès est prévue pour une prochaine version. Pour avoir un aperçu des principaux points d’accès, et pour obtenir plus d’information sur la manière d’étendre l’API REST, découvrez l’extension officielle %s."
-#: wp-admin/about.php:131
+#: wp-admin/about.php:143
msgid "Infrastructure for the REST API has been integrated into core, marking a new era in developing with WordPress. The REST API serves to provide developers with a path forward for building and extending RESTful APIs on top of WordPress."
msgstr "L’infrastructure de l’API REST a été intégrée au cœur de WordPress, ouvrant ainsi une nouvelle ère pour le développement avec le logiciel. L’API REST a été conçue pour offrir aux développeurs une manière centrale de construire et d’étendre des API RESTful basées sur le socle WordPress."
-#: wp-admin/about.php:118
+#: wp-admin/about.php:130
msgid "In addition to post embeds, WordPress 4.4 also adds support for five new oEmbed providers: Cloudup, Reddit Comments, ReverbNation, Speaker Deck, and VideoPress."
msgstr "En plus de l’insertion de contenu, WordPress 4.4 apporte la reconnaissance de cinq nouveaux fournisseurs oEmbed : Cloudup, Reddit Comments, ReverbNation, Speaker Deck et VideoPress."
-#: wp-admin/about.php:129
+#: wp-admin/about.php:141
msgid "REST API infrastructure"
msgstr "Infrastructure de l’API REST"
-#: wp-admin/about.php:104
+#: wp-admin/about.php:116
msgid "Now you can embed your posts on other sites, even other WordPress sites. Simply drop a post URL into the editor and see an instant embed preview, complete with the title, excerpt, and featured image if you’ve set one. We’ll even include your site icon and links for comments and sharing."
msgstr "Vous pouvez désormais insérer vos articles dans d’autres sites, et même dans d’autres sites WordPress. Collez simplement l’adresse du contenu dans l’éditeur, et une prévisualisation s’affichera instantanément, avec titre, extrait, et l’image de Une si vous avez mise une. Vous y trouverez même l’icône de votre site et les liens pour commenter et partager."
-#: wp-admin/about.php:117
+#: wp-admin/about.php:129
msgid "Even more embed providers"
msgstr "Encore plus de fournisseurs de contenus distants"
-#: wp-admin/about.php:103
+#: wp-admin/about.php:115
msgid "Embed your WordPress content"
msgstr "Intégrez votre contenu WordPress"
-#: wp-admin/about.php:90
+#: wp-admin/about.php:102
msgid "WordPress now takes a smarter approach to displaying appropriate image sizes on any device, ensuring a perfect fit every time. You don’t need to do anything to your theme, it just works."
msgstr "WordPress approche désormais l’affichage des images de manière plus intelligente, utilisant à chaque fois la taille d’image la plus pertinente en fonction de l’appareil utilisé. Vous n’avez rien à changer à votre thème : ça fonctionne, c’est tout."
-#: wp-admin/about.php:89
+#: wp-admin/about.php:101
msgid "Responsive images"
msgstr "Images adaptatives"
-#: wp-admin/about.php:67
+#: wp-admin/about.php:79
msgid "Twenty Sixteen was built to look great on any device. A fluid grid design, flexible header, fun color schemes, and more, will make your content shine."
msgstr "Twenty Sixteen a été conçu pour être superbe sur tous les appareils. Avec son design en grille fluide, son en-tête flexible et ses jeux de couleurs joyeux, il mettra en valeur votre contenu."
-#: wp-admin/about.php:66
+#: wp-admin/about.php:78
msgid "Our newest default theme, Twenty Sixteen, is a modern take on a classic blog design."
msgstr "Notre nouveau thème par défaut, Twenty Sixteen, est une modernisation d’un thème de blog classique."
-#: wp-admin/about.php:59
+#: wp-admin/about.php:71
msgid "Twenty Sixteen"
msgstr "Twenty Sixteen"
msgstr "(Actuellement réglé sur : %s)"
#. translators: %s: WordPress version number
-#: wp-admin/about.php:214
+#: wp-admin/about.php:226
msgid "<strong>Version %s</strong> addressed one security issue."
msgstr "La <strong>version %s</strong> a corrigé un problème de sécurité."
msgid "Profile Picture"
msgstr "Illustration du profil"
-#: wp-admin/about.php:208
+#: wp-admin/about.php:220
msgid "Security Releases"
msgstr "Mises à jour de sécurité"
-#: wp-admin/about.php:205
+#: wp-admin/about.php:217
msgid "Maintenance Releases"
msgstr "Mises à jour de maintenance"
-#: wp-admin/about.php:211
+#: wp-admin/about.php:223
msgid "Maintenance and Security Releases"
msgstr "Mises à jour de maintenance et de sécurité"
msgid "You are not allowed to manage these items."
msgstr "Vous n’êtes pas autorisé à modifier ces éléments."
-#: wp-admin/widgets.php:431
+#: wp-admin/widgets.php:436
msgid "This will clear all items from the inactive widgets list. You will not be able to restore any customizations."
msgstr "Cela supprimera tous les éléments de la liste des widgets désactivés. Vous ne pourrez récupérer aucune personnalisation."
msgid "Users list navigation"
msgstr "Navigation de la liste des utilisateurs"
-#: wp-admin/widgets.php:423
+#: wp-admin/widgets.php:426
msgid "Clear Inactive Widgets"
msgstr "Vider les widgets désactivés"
msgid "You’re using the auto-generated password for your account. Would you like to change it?"
msgstr "Vous utilisez le mot de passe auto-généré pour votre compte. Voulez-vous le changer ?"
-#: wp-admin/users.php:360
+#: wp-admin/users.php:361
msgid "You have specified this user for removal:"
msgstr "Vous avez indiqué que cet utilisateur devait être supprimé :"
msgstr[0] "%d fichier média déplacé dans la Corbeille."
msgstr[1] "%d fichiers médias déplacés dans la Corbeille."
-#: wp-admin/users.php:266
+#: wp-admin/users.php:267
msgid "What should be done with content owned by these users?"
msgstr "Que doit-il arriver aux contenus appartenant à ces utilisateurs ?"
-#: wp-admin/users.php:419
+#: wp-admin/users.php:420
msgid "%s user deleted."
msgid_plural "%s users deleted."
msgstr[0] "%s utilisateur supprimé."
msgstr[1] "%s utilisateurs supprimés."
-#: wp-admin/users.php:241
+#: wp-admin/users.php:242
msgid "You have specified these users for deletion:"
msgstr "Vous avez indiqué que vous voulez supprimer ces utilisateurs :"
msgid "Log Out Everywhere"
msgstr "Déconnexion globale"
-#: wp-admin/about.php:65
+#: wp-admin/about.php:77
msgid "Introducing Twenty Sixteen"
msgstr "Présentation de Twenty Sixteen"
msgid "Enable full-height editor and distraction-free functionality."
msgstr "Activer l'éditeur plein-écran et la fonctionnalité d'écriture sans distraction."
-#: wp-admin/includes/dashboard.php:1066
-msgid "https://planet.wordpress.org/feed/"
-msgstr "http://feeds.feedburner.com/feedburner/cjgL"
-
#: wp-admin/includes/dashboard.php:1057
msgid "https://planet.wordpress.org/"
msgstr "http://www.wordpress-fr.net/planet/"
msgid "Untested with your version of WordPress"
msgstr "Non-testé avec votre version de WordPress"
+#: wp-admin/includes/dashboard.php:1066
+msgid "https://planet.wordpress.org/feed/"
+msgstr "http://feeds.feedburner.com/wordpress-fr/RaoY"
+
#: wp-admin/custom-header.php:461
msgid "You can now manage and live-preview Custom Header in the <a href=\"%1$s\">Customizer</a>."
msgstr "Vous pouvez gérer et prévisualiser l'en-tête personnalisée dans l'<a href=\"%1$s\">outil de personnalisation</a>."
msgid "To delete media items, click the Bulk Select button at the top of the screen. Select any items you wish to delete, then click the Delete Selected button. Clicking the Cancel Selection button takes you back to viewing your media."
msgstr "Pour supprimer des éléments de la liste des médias, cliquez sur le bouton de Sélection multiple en haut de l’écran. Sélectionnez tous les éléments à supprimer, puis cliquez sur le bouton Supprimer la sélection. En cliquant sur le bouton Annuler la sélection vous reviendrez sur la vue normale des médias."
-#: wp-admin/upload.php:59
-msgid "Clicking an item will display an Attachment Details dialog, which allows you to preview media and make quick edits. Any changes you make to the attachment details will be automatically saved."
-msgstr "Cliquer sur un élément affichera une fenêtre avec les détails du fichier, ce qui vous permettra de prévisualiser le média et réaliser de rapides modifications. Tous les changements que vous ferez dans les détails du média seront automatiquement sauvegardés."
-
#: wp-admin/upload.php:61
msgid "You can also delete individual items and access the extended edit screen from the details dialog."
msgstr "Vous pouvez aussi supprimer les éléments individuellement et accéder à l’écran de modifications étendues par la fenêtre des détails."
msgid "You can view your media in a simple visual grid or a list with columns. Switch between these views using the icons to the left above the media."
msgstr "Vous pouvez voir vos médias dans une grille ou dans une liste avec des colonnes. Passez de l’un à l’autre en utilisant les icônes en haut à gauche des médias."
+#: wp-admin/upload.php:59
+msgid "Clicking an item will display an Attachment Details dialog, which allows you to preview media and make quick edits. Any changes you make to the attachment details will be automatically saved."
+msgstr "Cliquer sur un élément affichera une fenêtre avec les détails du fichier, ce qui vous permettra de prévisualiser le média et réaliser de rapides modifications. Toutes les modifications que vous ferez dans les détails du média seront automatiquement enregistrées."
+
#: wp-admin/plugin-install.php:80
msgid "If you just want to get an idea of what’s available, you can browse Featured and Popular plugins by using the links in the upper left of the screen. These sections rotate regularly."
msgstr "Si vous voulez juste vous faire une idée de ce qui est disponible, vous pouvez parcourir les rubriques Mises en avant et Populaires en utilisant les liens en haut à gauche de l’écran. Ces sections sont régulièrement renouvelées."
msgid "Latest"
msgstr "Derniers en date"
-#: wp-admin/includes/ms.php:1055 wp-admin/users.php:270
+#: wp-admin/includes/ms.php:1055 wp-admin/users.php:271
msgid "Delete all content."
msgstr "Supprimer tout le contenu."
msgid "Delete brings you to the Delete Users screen for confirmation, where you can permanently remove a user from your site and delete their content. You can also delete multiple users at once by using Bulk Actions."
msgstr "« Supprimer » vous amène à l’écran de suppression des utilisateurs pour confirmer votre action, d’où vous pouvez retirer un utilisateur de manière permanente et supprimer son contenu. Vous pouvez également supprimer plusieurs utilisateurs à la fois avec les Actions Groupées."
-#: wp-admin/includes/ms.php:1057 wp-admin/users.php:272
+#: wp-admin/includes/ms.php:1057 wp-admin/users.php:273
msgid "Attribute all content to:"
msgstr "Attribuer tout le contenu à :"
-#: wp-admin/users.php:264
+#: wp-admin/users.php:265
msgid "What should be done with content owned by this user?"
msgstr "Que faire du contenu ayant cet utilisateur pour propriétaire ?"
msgid "Tap or hover on any theme then click the Live Preview button to see a live preview of that theme and change theme options in a separate, full-screen view. You can also find a Live Preview button at the bottom of the theme details screen. Any installed theme can be previewed and customized in this way."
msgstr "Touchez ou survolez n’importe quel thème puis cliquez sur le bouton Prévisualisation pour voir une prévisualisation de ce thème et changer les options du thème dans un vie séparée et plein écran. Vous pouvez également trouver un bouton Prévisualisation au bas de l’écran de détails du thème. Tout thème installé peut être prévisualisé et personnalisé de cette manière."
-#: wp-admin/themes.php:107
-msgid "When previewing on smaller monitors, you can use the collapse icon at the bottom of the left-hand pane. This will hide the pane, giving you more room to preview your site in the new theme. To bring the pane back, click on the collapse icon again."
-msgstr "Lors de la prévisualisation sur de petits écrans, vous pouvez utiliser l’icône de réduction en bas à gauche du panneau. Cela cachera le panneau, vous donnant ainsi plus de place pour prévisualiser le site avec le nouveau thème. Pour ramener le panneau, cliquez à nouveau sur l’icône de réduction."
-
#: wp-admin/themes.php:75
msgid "Click on the theme to see the theme name, version, author, description, tags, and the Delete link"
msgstr "Cliquez sur le thème pour voir le nom du thème, sa version, son auteur, sa description, ses étiquettes et le bouton Supprimer."
+#: wp-admin/themes.php:107
+msgid "When previewing on smaller monitors, you can use the collapse icon at the bottom of the left-hand pane. This will hide the pane, giving you more room to preview your site in the new theme. To bring the pane back, click on the collapse icon again."
+msgstr "Lors de la prévisualisation sur de petits écrans, vous pouvez utiliser l’icône de réduction en bas à gauche du panneau. Cela masquera le panneau, vous donnant ainsi plus de place pour prévisualiser le site avec le nouveau thème. Pour ramener le panneau, cliquez à nouveau sur l’icône de réduction."
+
#: wp-admin/widgets.php:390
msgid "To activate a widget drag it to a sidebar or click on it. To deactivate a widget and delete its settings, drag it back."
msgstr "Pour activer un widget, glissez-le dans la barre latérale ou cliquez dessus. Pour désactiver un widget et supprimer ses réglages, enlevez-le de la barre latérale."
msgid "Show next theme"
msgstr "Afficher le thème suivant"
-#: wp-admin/widgets.php:498
+#: wp-admin/widgets.php:504
msgid "Add Widget"
msgstr "Ajouter le widget"
msgid "To use a background image, simply upload it or choose an image that has already been uploaded to your Media Library by clicking the “Choose Image” button. You can display a single instance of your image, or tile it to fill the screen. You can have your background fixed in place, so your site content moves on top of it, or you can have it scroll with your site."
msgstr "Pour utiliser une image de fond, mettez-la simplement en ligne ou choisissez une image déjà mise en ligne dans votre Bibliothèque de Médias en cliquant sur le bouton « Choisir l’image ». Vous pouvez n’afficher qu’une occurrence de l’image, ou la répéter afin de remplir l’écran. Vous pouvez choisir de garder le fond en place quand vous faites défiler le contenu, ou au contraire faire que le fond défile en même temps."
-#: wp-admin/edit-form-advanced.php:356
-msgid "The title field and the big Post Editing Area are fixed in place, but you can reposition all the other boxes using drag and drop. You can also minimize or expand them by clicking the title bar of each box. Use the Screen Options tab to unhide more boxes (Excerpt, Send Trackbacks, Custom Fields, Discussion, Slug, Author) or to choose a 1- or 2-column layout for this screen."
-msgstr "Le champ du titre et la zone d’édition de l’article sont inamovibles, mais vous pouvez déplacer toutes les autres blocs par simple glisser/déposer. Vous pouvez également les fermer/ouvrir en cliquant sur la barre de titre de chaque boite. Utilisez l’onglet « Options de l’écran » pour cacher d’autres boites (Extrait, Envoyer des rétroliens, Champs personnalisés, Discussion, Identifiant, Auteur) ou pour choisir un affichage sur une ou deux colonnes pour cet écran."
-
#: wp-admin/widgets.php:69
msgid "When changing themes, there is often some variation in the number and setup of widget areas/sidebars and sometimes these conflicts make the transition a bit less smooth. If you changed themes and seem to be missing widgets, scroll down on this screen to the Inactive Widgets area, where all of your widgets and their settings will have been saved."
msgstr "En changeant de thèmes, il y a souvent des variations sur le nombre et l’agencement des zones de widgets et des barres latérales, et parfois tout cela entre en conflit, rendant la transition moins aisée. Si vous avec changé de thème et que certains widgets semblent manquer, faites défiler cet écran jusqu’en bas pour les retrouver dans la zone des widgets inactifs, où ils ont été conservés avec leurs derniers réglages."
msgid "<strong>Parent</strong> — Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have child categories for Bebop and Big Band. Totally optional. To create a subcategory, just choose another category from the Parent dropdown."
msgstr "<strong>Parent</strong> — Les catégories, contrairement aux étiquettes, peuvent avoir une hiérarchie. Vous pouvez avoir une catégorie nommée « Jazz », et à l’intérieur, plusieurs catégories comme « Bebop » et « Big Band ». Le fait d’avoir une hiérarchie est totalement facultatif. Pour créer une sous-catégorie, choisissez juste une autre catégorie depuis la liste déroulante « Parente » ."
+#: wp-admin/edit-form-advanced.php:356
+msgid "The title field and the big Post Editing Area are fixed in place, but you can reposition all the other boxes using drag and drop. You can also minimize or expand them by clicking the title bar of each box. Use the Screen Options tab to unhide more boxes (Excerpt, Send Trackbacks, Custom Fields, Discussion, Slug, Author) or to choose a 1- or 2-column layout for this screen."
+msgstr "Le champ du titre et la zone d’édition de l’article sont inamovibles, mais vous pouvez déplacer toutes les autres blocs par simple glisser/déposer. Vous pouvez également les fermer/ouvrir en cliquant sur la barre de titre de chaque boite. Utilisez l’onglet « Options de l’écran » pour masquer d’autres boites (Extrait, Envoyer des rétroliens, Champs personnalisés, Discussion, Identifiant, Auteur) ou pour choisir un affichage sur une ou deux colonnes pour cet écran."
+
#: wp-admin/includes/media.php:2629
msgid "You are using the multi-file uploader. Problems? Try the <a href=\"%1$s\" target=\"%2$s\">browser uploader</a> instead."
msgstr "Vous utilisez l’outil de mise en ligne multi-fichiers. Si vous rencontrez des problèmes, essayez la <a href=\"#\">méthode du navigateur</a> à la place."
#: wp-admin/custom-header.php:121
msgid "In the Header Text section of this page, you can choose whether to display this text or hide it. You can also choose a color for the text by clicking the Select Color button and either typing in a legitimate HTML hex value, e.g. “#ff0000” for red, or by choosing a color using the color picker."
-msgstr "Dans la section « Texte d’en-tête » de cette page, vous pouvez choisir d’afficher ce texte ou de le cacher. Vous pouvez également choisir une couleur pour ce texte en cliquant sur le bouton « Sélecteur de couleur » et soit en saisissant une valeur HTML valide (ex. : <code>#ff0000</code> pour du rouge) ou en cliquant sur le sélecteur de couleur."
+msgstr "Dans la section « Texte d’en-tête » de cette page, vous pouvez choisir d’afficher ce texte ou de le masquer. Vous pouvez également choisir une couleur pour ce texte en cliquant sur le bouton « Sélecteur de couleur » et soit en saisissant une valeur HTML valide (ex. : <code>#ff0000</code> pour du rouge) ou en cliquant sur le sélecteur de couleur."
#: wp-admin/options-reading.php:32
msgid "You can choose whether or not your site will be crawled by robots, ping services, and spiders. If you want those services to ignore your site, click the checkbox next to “Discourage search engines from indexing this site” and click the Save Changes button at the bottom of the screen. Note that your privacy is not complete; your site is still visible on the web."
msgid "Used: %1$s%% of %2$s"
msgstr "Taux d’utilisation : %1$s%% sur %2$s"
-#: wp-admin/users.php:250
+#: wp-admin/users.php:251
msgid "ID #%1$s: %2$s <strong>The current user will not be deleted.</strong>"
msgstr "ID n°%1$s : %2$s <strong>L’utilisateur actuel ne sera pas supprimé.</strong>"
-#: wp-admin/users.php:252 wp-admin/users.php:376
+#: wp-admin/users.php:253 wp-admin/users.php:377
msgid "ID #%1$s: %2$s"
msgstr "ID n°%1$s : %2$s"
-#: wp-admin/users.php:372
+#: wp-admin/users.php:373
msgid "ID #%1$s: %2$s <strong>The current user will not be removed.</strong>"
msgstr "ID n°%1$s : %2$s <strong>l’utilisateur actuel ne sera pas supprimé.</strong>"
-#: wp-admin/users.php:374
+#: wp-admin/users.php:375
msgid "ID #%1$s: %2$s <strong>You don't have permission to remove this user.</strong>"
msgstr "ID n°%1$s : %2$s <strong>vous n’avez pas l’autorisation de supprimer cet utilisateur.</strong>"
-#: wp-admin/users.php:234
+#: wp-admin/users.php:235
msgid "Please select an option."
msgstr "Veuillez choisir une option."
msgid "Revert to the <strong>Browser Uploader</strong> by clicking the link below the drag and drop box."
msgstr "Revenez à l’<strong>outil de mise en ligne du navigateur</strong> en cliquant sur le lien sous la zone de glisser-déposer."
-#: wp-admin/users.php:425
+#: wp-admin/users.php:426
msgid "New user created. <a href=\"%s\">Edit user</a>"
msgstr "Nouvel utilisateur créé. <a href=\"%s\">Modifier l’utilisateur</a>"
-#: wp-admin/users.php:417
+#: wp-admin/users.php:418
msgid "User deleted."
msgstr "Utilisateur supprimé."
#. Description of the plugin/theme
msgid "This is not just a plugin, it symbolizes the hope and enthusiasm of an entire generation summed up in two words sung most famously by Louis Armstrong: Hello, Dolly. When activated you will randomly see a lyric from <cite>Hello, Dolly</cite> in the upper right of your admin screen on every page."
-msgstr "Ce n'est pas qu'une extension. Elle symbolise l'espoir et l'enthousiasme de toute une génération, résumé en deux mots, qu'a notamment chanté Louis Armstrong : Hello, Dolly. Une fois activé, elle affichera une ligne aléatoirement des paroles de la chanson <cite>Hello, Dolly</cite>, en haut à droite de toutes les pages de l'administration."
+msgstr "Ce n’est pas qu'une extension. Elle symbolise l’espoir et l'enthousiasme de toute une génération, résumé en deux mots, qu’a notamment chanté Louis Armstrong : Hello, Dolly. Une fois activée, elle affichera une ligne aléatoirement des paroles de la chanson <cite>Hello, Dolly</cite>, en haut à droite de toutes les pages de l’administration."
#: wp-admin/index.php:76
msgid "<strong>Welcome</strong> — Shows links for some of the most common tasks when setting up a new site."
msgstr "Afficher la barre d’outils lorsque vous visitez le site"
#. translators: %s: Codex URL
-#: wp-admin/about.php:231
+#: wp-admin/about.php:55 wp-admin/about.php:59 wp-admin/about.php:243
msgid "For more information, see <a href=\"%s\">the release notes</a>."
msgstr "Pour plus d’informations, consultez les <a href=\"%s\">notes de publication</a>."
#. translators: 1: WordPress version number, 2: plural number of bugs. Singular
#. security issue.
-#: wp-admin/about.php:223
+#: wp-admin/about.php:235
msgid "<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bug."
msgid_plural "<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bugs."
msgstr[0] "La <strong>version %1$s</strong> a corrigé un problème de sécurité et %2$s bug."
#. translators: 1: WordPress version number, 2: plural number of bugs. More
#. than one security issue.
-#: wp-admin/about.php:227
+#: wp-admin/about.php:53 wp-admin/about.php:57 wp-admin/about.php:239
msgid "<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug."
msgid_plural "<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs."
msgstr[0] "La <strong>version %1$s</strong> a corrigé quelques problèmes de sécurité et %2$s bug."
msgstr[1] "La <strong>version %1$s</strong> a corrigé quelques problèmes de sécurité et %2$s bugs."
#. translators: 1: WordPress version number, 2: plural number of bugs.
-#: wp-admin/about.php:219
+#: wp-admin/about.php:231
msgid "<strong>Version %1$s</strong> addressed %2$s bug."
msgid_plural "<strong>Version %1$s</strong> addressed %2$s bugs."
msgstr[0] "La <strong>version %1$s</strong> a corrigé %2$s bug."
msgid "Welcome to your WordPress Dashboard! This is the screen you will see when you log in to your site, and gives you access to all the site management features of WordPress. You can get help for any screen by clicking the Help tab in the upper corner."
msgstr "Bienvenu dans votre tableau de bord WordPress ! Ceci est l’écran que vous verrez lorsque vous vous connectez à votre site, et qui vous donne accès à l’ensemble des fonctionnalités de gestion de WordPress. Vous pouvez obtenir de l’aide dans n’importe quel écran en cliquant sur l’onglet « Aide » présent en haut à droite de votre navigateur."
-#: wp-admin/about.php:204
+#: wp-admin/about.php:216
msgid "Maintenance Release"
msgstr "Mise à jour de maintenance"
-#: wp-admin/about.php:207
+#: wp-admin/about.php:219
msgid "Security Release"
msgstr "Mise à jour de sécurité"
-#: wp-admin/about.php:210
+#: wp-admin/about.php:52 wp-admin/about.php:222
msgid "Maintenance and Security Release"
-msgstr "Mise à jour de maintenance et de sécurité"
+msgid_plural "Maintenance and Security Releases"
+msgstr[0] "Mise à jour de maintenance et de sécurité"
+msgstr[1] "Mises à jour de maintenance et de sécurité"
#: wp-admin/about.php:46 wp-admin/credits.php:28 wp-admin/freedoms.php:27
msgid "What’s New"
msgstr "Nouveautés"
#. translators: %s: WordPress version number
-#: wp-admin/about.php:216
+#: wp-admin/about.php:228
msgid "<strong>Version %s</strong> addressed some security issues."
msgstr "La <strong>version %s</strong> a corrigé quelques problèmes de sécurité."
msgid "This screen allows you to choose your permalink structure. You can choose from common settings or create custom URL structures."
msgstr "Cet écran vous permet de choisir la structure de permalien par défaut. Vous pouvez choisir les réglages les plus courants, ou créer votre propre structure de liens."
-#: wp-admin/about.php:189
+#: wp-admin/about.php:201
msgid "Return to Updates"
msgstr "Retourner aux mises à jour"
#: wp-admin/user-edit.php:40
msgid "You can change your password, turn on keyboard shortcuts, change the color scheme of your WordPress administration screens, and turn off the WYSIWYG (Visual) editor, among other things. You can hide the Toolbar (formerly called the Admin Bar) from the front end of your site, however it cannot be disabled on the admin screens."
-msgstr "Vous pouvez modifier votre mot de passe, activer les raccourcis clavier, modifier la combinaison de couleurs des écrans de l’administration, et désactiver l’éditeur visuel (WYSIWYG), entre autres choses. Vous pouvez également cacher la barre d’outils (anciennement « barre d’administration ») sur la partie publique de votre site, mais elle ne peut pas être enlevée des écrans d’administration."
+msgstr "Vous pouvez modifier votre mot de passe, activer les raccourcis clavier, modifier la combinaison de couleurs des écrans de l’administration, et désactiver l’éditeur visuel (WYSIWYG), entre autres choses. Vous pouvez également masquer la barre d’outils (anciennement « barre d’administration ») sur la partie publique de votre site, mais elle ne peut pas être enlevée des écrans d’administration."
#: wp-admin/widgets.php:95
msgid "Inactive Sidebar (not used)"
msgid "Managing Pages"
msgstr "Gestion de pages"
-#: wp-admin/users.php:41
-msgid "You can hide/display columns based on your needs and decide how many users to list per screen using the Screen Options tab."
-msgstr "Vous pouvez cacher/afficher les colonnes en fonction de vos besoins, et décider du nombre d’articles à afficher par écran à l’aide de l’onglet « Options de l’écran »."
-
#: wp-admin/users.php:47
msgid "Hovering over a row in the users list will display action links that allow you to manage users. You can perform the following actions:"
msgstr "Passer la souris au-dessus d’une ligne de la liste des utilisateurs, fera s’afficher des liens vous permettant de gérer l’utilisateur. Vous pouvez lancer les actions suivantes :"
msgid "You can view all posts made by a user by clicking on the number under the Posts column."
msgstr "Vous pouvez afficher tous les articles faits par un même utilisateur en cliquant sur le nombre sous la colonne « Articles »."
+#: wp-admin/users.php:41
+msgid "You can hide/display columns based on your needs and decide how many users to list per screen using the Screen Options tab."
+msgstr "Vous pouvez masquer/afficher les colonnes en fonction de vos besoins, et décider du nombre d’articles à afficher par écran à l’aide de l’onglet « Options de l’écran »."
+
#: wp-admin/user-new.php:171
msgid "Because this is a multisite installation, you may add accounts that already exist on the Network by specifying a username or email, and defining a role. For more options, such as specifying a password, you have to be a Network Administrator and use the hover link under an existing user’s name to Edit the user profile under Network Admin > All Users."
msgstr "Parce qu’il s’agit d’une installation multisite, vous pouvez ajouter des comptes qui existent déjà sur le Réseau, en indiquant un nom d’utilisateur ou une adresse de messagerie, et en assignant un rôle. Pour avoir plus d’options, telle que le choix du mot de passe, vous devez être Administrateur du Réseau, et utiliser les liens qui apparaissent au survol sous le nom de l’utilisateur pour modifier son profil utilisateur, depuis l’écran « Tous les utilisateurs »."
msgid "Welcome to WordPress %s"
msgstr "Bienvenue dans WordPress %s"
-#: wp-admin/about.php:189
+#: wp-admin/about.php:201
msgid "Return to Dashboard → Updates"
msgstr "Retourner aux mises à jour"
-#: wp-admin/about.php:192
+#: wp-admin/about.php:204
msgid "Go to Dashboard → Home"
msgstr "Aller sur l’accueil"
msgid "Core Developers"
msgstr "Développeurs principaux"
-#: wp-admin/about.php:125
+#: wp-admin/about.php:137
msgid "Under the Hood"
msgstr "Sous le capot"
#. translators: %s: search keywords
#: wp-admin/edit-comments.php:197 wp-admin/edit-tags.php:311
#: wp-admin/edit.php:307 wp-admin/link-manager.php:78 wp-admin/plugins.php:515
-#: wp-admin/upload.php:224 wp-admin/users.php:480
+#: wp-admin/upload.php:224 wp-admin/users.php:481
msgid "Search results for “%s”"
msgstr "Résultats de recherche pour « %s »"
msgstr "Rôle"
#: wp-admin/includes/dashboard.php:406 wp-admin/includes/dashboard.php:408
-#: wp-admin/users.php:487
+#: wp-admin/users.php:488
msgid "Search Users"
msgstr "Chercher un utilisateur"
msgstr "Tous les utilisateurs"
#: wp-admin/menu.php:220 wp-admin/menu.php:222 wp-admin/user-edit.php:194
-#: wp-admin/users.php:474
+#: wp-admin/users.php:475
msgctxt "user"
msgid "Add New"
msgstr "Ajouter"
msgid "Add Existing User"
msgstr "Ajouter un utilisateur existant"
-#: wp-admin/includes/ms.php:1085 wp-admin/users.php:286
+#: wp-admin/includes/ms.php:1085 wp-admin/users.php:287
msgid "Confirm Deletion"
msgstr "Confirmer la suppression"
-#: wp-admin/users.php:300 wp-admin/users.php:308 wp-admin/users.php:335
-#: wp-admin/users.php:343
+#: wp-admin/users.php:301 wp-admin/users.php:309 wp-admin/users.php:336
+#: wp-admin/users.php:344
msgid "You can’t remove users."
msgstr "Vous ne pouvez pas supprimer ces utilisateurs."
-#: wp-admin/users.php:433
+#: wp-admin/users.php:434
msgid "Changed roles."
msgstr "Rôles modifiés."
-#: wp-admin/users.php:444
+#: wp-admin/users.php:445
msgid "User removed from this site."
msgstr "Utilisateur supprimé de ce site."
msgid "Layout"
msgstr "Arrangement"
-#: wp-admin/users.php:239
+#: wp-admin/users.php:240
msgid "You have specified this user for deletion:"
msgstr "Vous avez choisi de supprimer cet utilisateur :"
msgid "This plugin may be active on other sites in the network."
msgstr "Cette extension peut uniquement être activée sur l’ensemble des sites du réseau."
-#: wp-admin/user-edit.php:196 wp-admin/users.php:476
+#: wp-admin/user-edit.php:196 wp-admin/users.php:477
msgctxt "user"
msgid "Add Existing"
msgstr "Ajouter un utilisateur existant"
#: wp-admin/edit-link-form.php:59
msgid "The boxes for link name, web address, and description have fixed positions, while the others may be repositioned using drag and drop. You can also hide boxes you don’t use in the Screen Options tab, or minimize boxes by clicking on the title bar of the box."
-msgstr "Les blocs pour le nom, l’adresse web et la description sont fixes, tandis que les autres peuvent être repositionnés par glisser/déposer. Vous pouvez également cacher les blocs que vous n’utilisez pas via l’onglet « Options de l’écran », et fermer les blocs en cliquant sur leur barre de titre."
+msgstr "Les blocs pour le nom, l’adresse web et la description sont fixes, tandis que les autres peuvent être repositionnés par glisser/déposer. Vous pouvez également masquer les blocs que vous n’utilisez pas via l’onglet « Options de l’écran », et fermer les blocs en cliquant sur leur barre de titre."
#: wp-admin/update-core.php:163
msgid "You have the latest version of WordPress."
msgstr "Accueil : %s"
#: wp-admin/import.php:57 wp-admin/includes/network.php:105
-#: wp-admin/includes/network.php:122 wp-admin/users.php:234
+#: wp-admin/includes/network.php:122 wp-admin/users.php:235
msgid "ERROR:"
msgstr "ERREUR :"
msgid "When adding a new category on this screen, you’ll fill in the following fields:"
msgstr "Quand vous ajoutez une nouvelle catégorie via cet écran, vous devez remplir les champs suivants :"
-#: wp-admin/edit-tags.php:260
-msgid "You can change the display of this screen using the Screen Options tab to set how many items are displayed per screen and to display/hide columns in the table."
-msgstr "Vous pouvez modifier l’affichage de cet écran via l’onglet « Options de l’écran », afin de définir le nombre d’éléments à afficher par écran, et afficher/cacher les colonnes du tableau."
-
#: wp-admin/edit-tags.php:226
msgid "You can use categories to define sections of your site and group related posts. The default category is “Uncategorized” until you change it in your <a href=\"%s\">writing settings</a>."
msgstr "Vous pouvez utiliser les catégories pour donner des sections à votre site, et grouper les articles connexes. La catégorie par défaut est « Non classé » ; vous pouvez la modifier dans vos <a href=\"%s\">options d’écriture</a>."
msgid "<strong>Name</strong> — The name is how it appears on your site."
msgstr "<strong>Nom</strong> — Le nom est utilisé un peu partout sur votre site ;"
+#: wp-admin/edit-tags.php:260
+msgid "You can change the display of this screen using the Screen Options tab to set how many items are displayed per screen and to display/hide columns in the table."
+msgstr "Vous pouvez modifier l’affichage de cet écran via l’onglet « Options de l’écran », afin de définir le nombre d’éléments à afficher par écran, et afficher/masquer les colonnes du tableau."
+
#: wp-admin/upload.php:185
msgid "You can narrow the list by file type/status using the text link filters at the top of the screen. You also can refine the list by date using the dropdown menu above the media table."
msgstr "Vous pouvez limiter cette liste par type de fichier ou par état à l’aide des filtres en haut de l’écran. Vous pouvez également affiner la liste par défaut à l’aide du menu déroulant au dessus du tableau."
msgid "You can filter the list of posts by post status using the text links in the upper left to show All, Published, Draft, or Trashed posts. The default view is to show all posts."
msgstr "Vous pouvez filtrer la liste des articles par état, à l’aide des liens textuels en haut à gauche, afin d’afficher tous les articles, ou seulement les articles publiés, les brouillons, etc. Par défaut, tous les articles sont affichés ;"
-#: wp-admin/edit.php:196
-msgid "You can hide/display columns based on your needs and decide how many posts to list per screen using the Screen Options tab."
-msgstr "Vous pouvez cacher/afficher les colonnes en fonction de vos besoins, et décider du nombre d’articles à afficher par écran à l’aide de l’onglet « Options de l’écran » ;"
-
#: wp-admin/edit.php:199
msgid "You can refine the list to show only posts in a specific category or from a specific month by using the dropdown menus above the posts list. Click the Filter button after making your selection. You also can refine the list by clicking on the post author, category or tag in the posts list."
msgstr "Vous pouvez affiner la liste pour qu’elle n’affiche que les articles d’une catégorie spécifique ou d’un mois donné, à l’aide du menu déroulant situé au-dessus de la liste. Cliquez sur le bouton « Filtrer » après avoir fait votre choix. Vous pouvez également affiner la liste en cliquant sur l’auteur d’un article, sa catégorie ou une étiquette."
+#: wp-admin/edit.php:196
+msgid "You can hide/display columns based on your needs and decide how many posts to list per screen using the Screen Options tab."
+msgstr "Vous pouvez afficher/masquer les colonnes en fonction de vos besoins, et décider du nombre d’articles à afficher par écran à l’aide de l’onglet « Options de l’écran » ;"
+
#: wp-admin/plugins.php:537
msgid "Search Installed Plugins"
msgstr "Chercher parmi les extensions installées"
msgid "— No role for this site —"
msgstr "— Pas de rôle sur ce site —"
-#: wp-admin/users.php:357
+#: wp-admin/users.php:358
msgid "Remove Users from Site"
msgstr "Supprimer des utilisateurs de ce site"
msgid "User deletion is not allowed from this screen."
msgstr "La suppression d’un utilisateur n’est pas autorisée depuis cet écran."
-#: wp-admin/users.php:362
+#: wp-admin/users.php:363
msgid "You have specified these users for removal:"
msgstr "Vous avez choisi de supprimer ces utilisateurs :"
-#: wp-admin/users.php:384
+#: wp-admin/users.php:385
msgid "Confirm Removal"
msgstr "Confirmer la suppression"
-#: wp-admin/users.php:386
+#: wp-admin/users.php:387
msgid "There are no valid users selected for removal."
msgstr "Aucun utilisateur valide n’est sélectionné pour la suppression."
-#: wp-admin/users.php:447
+#: wp-admin/users.php:448
msgid "You can't remove the current user."
msgstr "Vous ne pouvez pas supprimer l’utilisateur courant."
-#: wp-admin/users.php:448
+#: wp-admin/users.php:449
msgid "Other users have been removed."
msgstr "Les autres utilisateurs ont été supprimés."
#: wp-admin/includes/class-wp-upgrader-skins.php:289
msgid "Hide Details"
-msgstr "Cacher les détails"
+msgstr "Masquer les détails"
#: wp-admin/includes/upgrade.php:80
msgid "Your chosen password."
msgstr[0] "Drop-ins <span class=\"count\">(%s)</span>"
msgstr[1] "Drop-ins <span class=\"count\">(%s)</span>"
-#: wp-admin/about.php:192
+#: wp-admin/about.php:204
msgid "Go to Dashboard"
msgstr "Aller sur le tableau de bord"
msgid "You can’t delete users."
msgstr "Vous ne pouvez pas supprimer d’utilisateurs."
-#: wp-admin/users.php:231
+#: wp-admin/users.php:232
msgid "Delete Users"
msgstr "Supprimer des utilisateurs"
-#: wp-admin/users.php:288
+#: wp-admin/users.php:289
msgid "There are no valid users selected for deletion."
msgstr "Aucun utilisateur valide n’est sélectionné pour la suppression."
-#: wp-admin/users.php:429
+#: wp-admin/users.php:430
msgid "New user created."
msgstr "Le nouvel utilisateur a été créé."
-#: wp-admin/users.php:436
+#: wp-admin/users.php:437
msgid "The current user’s role must have user editing capabilities."
msgstr "L’utilisateur courant doit avoir un niveau lui permettant de modifier les utilisateurs."
-#: wp-admin/users.php:437
+#: wp-admin/users.php:438
msgid "Other user roles have been changed."
msgstr "Les rôles des autres utilisateurs ont été modifiés."
-#: wp-admin/users.php:440
+#: wp-admin/users.php:441
msgid "You can’t delete the current user."
msgstr "Vous ne pouvez pas supprimer l’utilisateur courant."
-#: wp-admin/users.php:441
+#: wp-admin/users.php:442
msgid "Other users have been deleted."
msgstr "Les autres utilisateurs ont été supprimés."
msgid "Private Key:"
msgstr "Clé privée :"
-#: wp-admin/includes/image-edit.php:70
-msgid "Discard any changes and restore the original image."
-msgstr "Abandonner tout changement et rétablir l’image originale."
-
#: wp-admin/includes/image-edit.php:77
msgid "Restore image"
msgstr "Rétablir l’image"
msgid "Failed to connect to SSH2 Server %s"
msgstr "Impossible de se connecter au serveur SSH2 %s"
+#: wp-admin/includes/image-edit.php:70
+msgid "Discard any changes and restore the original image."
+msgstr "Abandonner toutes modifications et rétablir l’image originale."
+
#: wp-admin/includes/media.php:2429 wp-admin/includes/nav-menu.php:346
#: wp-admin/includes/nav-menu.php:620
msgid "«"
# This file is distributed under the same license as the Development (4.4.x) package.
msgid ""
msgstr ""
-"PO-Revision-Date: 2015-12-08 17:55:57+0000\n"
+"PO-Revision-Date: 2016-02-11 10:20:56+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Read the <a href=\"%s\" target=\"_blank\">bug report</a> page. Some of the guidelines there may help you figure out what went wrong."
msgstr "Lisez la <a href=\"%s\" target=\"_blank\">page des rapports de bug</a>. Elle contient des bonnes pratiques qui peuvent vous permettre de comprendre ce qui ne marche pas."
-#: wp-includes/functions.php:3785
+#: wp-includes/functions.php:3790
msgid "https://codex.wordpress.org/Debugging_in_WordPress"
msgstr "https://codex.wordpress.org/Debugging_in_WordPress"
#. translators: %s: Codex URL
-#: wp-includes/functions.php:3784
+#: wp-includes/functions.php:3789
msgid "Please see <a href=\"%s\">Debugging in WordPress</a> for more information."
msgstr "Veuillez lire <a href=\"%s\">Débugger dans WordPress</a> (en) pour plus d'informations."
msgid "December"
msgstr "Décembre"
-#: wp-includes/taxonomy.php:1581 wp-includes/taxonomy.php:1663
+#: wp-includes/taxonomy.php:1584 wp-includes/taxonomy.php:1666
msgid "Term meta cannot be added to terms that are shared between taxonomies."
msgstr "Les méta de termes ne peuvent pas être ajoutés à des termes partagés entre plusieurs taxinomies."
#. translators: If months in your language require a genitive case, translate
#. this to 'on'. Do not translate into your own language.
-#: wp-includes/functions.php:178
+#: wp-includes/functions.php:183
msgctxt "decline months names: on or off"
msgid "off"
msgstr "off"
msgid "Could not save password reset key to database."
msgstr "Impossible d’enregistrer la clé de mise à zéro du mot de passe dans la base de données."
-#: wp-includes/taxonomy.php:539
+#: wp-includes/taxonomy.php:542
msgid "Tags list"
msgstr "Liste des étiquettes"
-#: wp-includes/taxonomy.php:539
+#: wp-includes/taxonomy.php:542
msgid "Categories list"
msgstr "Liste des catégories"
msgid "<strong>ERROR</strong>: Invalid username."
msgstr "<strong>ERREUR</strong> : Nom d’utilisateur non valide."
-#: wp-includes/taxonomy.php:538
+#: wp-includes/taxonomy.php:541
msgid "Tags list navigation"
msgstr "Navigation de la liste des étiquettes"
-#: wp-includes/taxonomy.php:538
+#: wp-includes/taxonomy.php:541
msgid "Categories list navigation"
msgstr "Navigation de la liste des catégories"
msgstr "Les noms d’utilisateurs ne peuvent contenir que des minuscules (a-z) et des chiffres."
#. translators: playlist item title
-#: wp-includes/media.php:1749 wp-includes/media.php:1764
+#: wp-includes/media.php:1777 wp-includes/media.php:1792
msgctxt "playlist item title"
msgid "“%s”"
msgstr "« %s »"
msgid "Older comments"
msgstr "Commentaires plus anciens"
-#: wp-includes/general-template.php:1950
+#: wp-includes/general-template.php:1946
msgid "Posts published on %s"
msgstr "Publications publiées sur %s"
msgid "Embedded WordPress Post"
msgstr "Inclure un article WordPress"
-#: wp-includes/comment-template.php:2122
+#: wp-includes/comment-template.php:2171
msgid "<a href=\"%1$s\" aria-label=\"Logged in as %2$s. Edit your profile.\">Logged in as %2$s</a>. <a href=\"%3$s\">Log out?</a>"
msgstr "<a href=\"%1$s\" aria-label=\"Connecté en tant que %2$s. Modifiez votre profil.\">Connecté en tant que %2$s</a>. <a href=\"%3$s\">Se déconnecter ?</a>"
msgid "Add new image"
msgstr "Ajouter une nouvelle image"
-#: wp-includes/class-wp-customize-manager.php:1828
+#: wp-includes/class-wp-customize-manager.php:1830
msgid "Site Icon"
msgstr "Icône du site"
msgid "Expand Sidebar"
msgstr "Étendre la colonne latérale"
-#: wp-includes/class-wp-customize-manager.php:1829
+#: wp-includes/class-wp-customize-manager.php:1831
msgid "The Site Icon is used as a browser and app icon for your site. Icons must be square, and at least 512px wide and tall."
msgstr "L’icône du site est utilisée pour représenter votre site en tant qu’icône de navigateur (favicon) et icône d’application. Les icônes doivent être au format carré, et mesurer au moins 512px en largeur comme en hauteur. "
-#: wp-includes/class-wp-customize-manager.php:1795
+#: wp-includes/class-wp-customize-manager.php:1797
msgid "Site Identity"
msgstr "Identité du site"
msgid "Your password reset link has expired. Please request a new link below."
msgstr "Votre lien de réinitialisation de mot de passe semble avoir expiré. Veuillez demander un nouveau lien ci-dessous."
-#: wp-includes/pluggable.php:1780
+#: wp-includes/pluggable.php:1789
msgid "To set your password, visit the following address:"
msgstr "Pour configurer votre mot de passe, rendez-vous à l'adresse suivante :"
msgid "Reorder mode enabled"
msgstr "Mode de réarrangement activé"
-#: wp-includes/functions.php:3619
+#: wp-includes/functions.php:3624
msgid "The called constructor method for %1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead."
msgstr "La méthode constructor appelée pour %1$s est <strong>obsolète</strong> depuis la version %2$s ! Veuillez utiliser %3$s à la place."
msgid "Close numbered list tag"
msgstr "Fermer la baliste de liste numérotée"
-#: wp-includes/taxonomy.php:537
+#: wp-includes/taxonomy.php:540
msgid "No tags"
msgstr "Aucune étiquette"
msgid "Allow link notifications from other blogs (pingbacks and trackbacks) on new articles"
msgstr "Autoriser les liens de notification d'autres blogs (pings et rétroliens) sur les nouveaux articles"
-#: wp-includes/widgets/class-wp-widget-text.php:107
-msgid "Content:"
-msgstr "Contient :"
-
#: wp-includes/class-wp-editor.php:1051
msgid "Ctrl + letter:"
msgstr "Ctrl + lettre :"
msgid "Additional shortcuts,"
msgstr "Raccourcis supplémentaires,"
+#: wp-includes/widgets/class-wp-widget-text.php:107
+msgid "Content:"
+msgstr "Contenu :"
+
#: wp-includes/class-wp-customize-section.php:236
#: wp-includes/customize/class-wp-customize-themes-section.php:55
msgid "Customizing"
msgid "Suggested image #%d"
msgstr "Image suggérée #%d"
-#: wp-includes/taxonomy.php:3968
+#: wp-includes/taxonomy.php:3971
msgid "Could not split shared term."
msgstr "Impossible de séparer les termes partagés."
msgstr "j F Y à G \\h i \\m\\i\\n"
#. translators: 1: website name, 2: website IP, 3: website hostname
-#: wp-includes/pluggable.php:1466 wp-includes/pluggable.php:1476
-#: wp-includes/pluggable.php:1619 wp-includes/pluggable.php:1627
+#: wp-includes/pluggable.php:1475 wp-includes/pluggable.php:1485
+#: wp-includes/pluggable.php:1628 wp-includes/pluggable.php:1636
msgid "Website: %1$s (IP: %2$s, %3$s)"
msgstr "Site web : %1$s (IP : %2$s, %3$s)"
#. translators: 1: comment author, 2: author IP, 3: author domain
-#: wp-includes/pluggable.php:1486 wp-includes/pluggable.php:1634
+#: wp-includes/pluggable.php:1495 wp-includes/pluggable.php:1643
msgid "Author: %1$s (IP: %2$s, %3$s)"
msgstr "Auteur : %1$s (IP : %2$s, %3$s)"
msgid "Post type names must be between 1 and 20 characters in length."
msgstr "Le nom d'un type d'article doit contenir entre 1 et 20 caractères."
-#: wp-includes/media.php:3315
+#: wp-includes/media.php:3343
msgid "Drag and drop to reorder media files."
msgstr "Glissez/déplacez les médias pour les réorganiser."
msgstr "L'option %1$s est obsolète pour l'ensemble des fonctions %2$s. Utilisez plutôt l'option %3$s."
#. translators: %s: post title
-#: wp-includes/comment-template.php:1468
+#: wp-includes/comment-template.php:1480
msgid "1 Comment<span class=\"screen-reader-text\"> on %s</span>"
msgstr "Un commentaire <span class=\"screen-reader-text\"> sur %s</span>"
#. translators: 1: Number of comments 2: post title
-#: wp-includes/comment-template.php:1473
+#: wp-includes/comment-template.php:1485
msgid "%1$s Comment<span class=\"screen-reader-text\"> on %2$s</span>"
msgid_plural "%1$s Comments<span class=\"screen-reader-text\"> on %2$s</span>"
msgstr[0] "%1$s commentaire <span class=\"screen-reader-text\"> sur %2$s</span>"
msgstr[1] "%1$s commentaires <span class=\"screen-reader-text\"> sur %2$s</span>"
#. translators: %s: post title
-#: wp-includes/comment-template.php:1479
+#: wp-includes/comment-template.php:1491
msgid "Comments Off<span class=\"screen-reader-text\"> on %s</span>"
msgstr "Commentaires fermés<span class=\"screen-reader-text\"> sur %s</span>"
#. translators: %s: post title
-#: wp-includes/comment-template.php:1463
+#: wp-includes/comment-template.php:1475
msgid "No Comments<span class=\"screen-reader-text\"> on %s</span>"
msgstr "Aucun commentaire<span class=\"screen-reader-text\"> sur %s</span>"
msgid "Previous"
msgstr "Article précédent"
-#: wp-includes/taxonomy.php:536
+#: wp-includes/taxonomy.php:539
msgid "No categories found."
msgstr "Aucune catégorie trouvée."
msgid "%s must set a database connection for use with escaping."
msgstr "%s doit mettre en place une connexion à la base de données pour l’utiliser avec l’échappement"
-#: wp-includes/taxonomy.php:2649
+#: wp-includes/taxonomy.php:2652
msgid "A term with the name provided already exists in this taxonomy."
msgstr "Un terme avec ce nom et cet identifiant existe déjà dans cette taxinomie."
msgid "Trash"
msgstr "Corbeille"
-#: wp-includes/media.php:3333
+#: wp-includes/media.php:3361
msgctxt "noun"
msgid "Trash"
msgstr "Corbeille"
msgid "Installed"
msgstr "Installé"
-#: wp-includes/pluggable.php:1479
+#: wp-includes/pluggable.php:1488
msgid "You can see all pingbacks on this post here:"
msgstr "Vous pouvez voir tous les pings de cet article ici : "
-#: wp-includes/pluggable.php:1469
+#: wp-includes/pluggable.php:1478
msgid "You can see all trackbacks on this post here:"
msgstr "Vous pouvez voir tous les rétroliens de cet article ici :"
-#: wp-includes/pluggable.php:1468 wp-includes/pluggable.php:1478
-#: wp-includes/pluggable.php:1489 wp-includes/pluggable.php:1637
+#: wp-includes/pluggable.php:1477 wp-includes/pluggable.php:1487
+#: wp-includes/pluggable.php:1498 wp-includes/pluggable.php:1646
msgid "Comment: %s"
msgstr "Commentaire : %s"
-#: wp-includes/pluggable.php:1490
+#: wp-includes/pluggable.php:1499
msgid "You can see all comments on this post here:"
msgstr "Vous pouvez lire tous les commentaires de cet article ici :"
-#: wp-includes/pluggable.php:1467 wp-includes/pluggable.php:1477
-#: wp-includes/pluggable.php:1488 wp-includes/pluggable.php:1620
-#: wp-includes/pluggable.php:1628 wp-includes/pluggable.php:1636
+#: wp-includes/pluggable.php:1476 wp-includes/pluggable.php:1486
+#: wp-includes/pluggable.php:1497 wp-includes/pluggable.php:1629
+#: wp-includes/pluggable.php:1637 wp-includes/pluggable.php:1645
msgid "URL: %s"
msgstr "Adresse web : %s"
-#: wp-includes/general-template.php:1351
+#: wp-includes/general-template.php:1347
msgid "Category: %s"
msgstr "Catégorie : %s"
-#: wp-includes/general-template.php:1357
+#: wp-includes/general-template.php:1353
msgid "Year: %s"
msgstr "Année : %s"
-#: wp-includes/general-template.php:1355
+#: wp-includes/general-template.php:1351
msgid "Author: %s"
msgstr "Auteur : %s"
-#: wp-includes/general-template.php:1353
+#: wp-includes/general-template.php:1349
msgid "Tag: %s"
msgstr "Étiquette : %s"
-#: wp-includes/general-template.php:1361
+#: wp-includes/general-template.php:1357
msgid "Day: %s"
msgstr "Jour : %s"
-#: wp-includes/general-template.php:1359
+#: wp-includes/general-template.php:1355
msgid "Month: %s"
msgstr "Mois : %s"
#. translators: 1: Taxonomy singular name, 2: Current taxonomy term
-#: wp-includes/general-template.php:1387
+#: wp-includes/general-template.php:1383
msgid "%1$s: %2$s"
msgstr "%1$s : %2$s"
-#: wp-includes/general-template.php:1383
+#: wp-includes/general-template.php:1379
msgid "Archives: %s"
msgstr "Archives : %s"
msgid "No alignment"
msgstr "Pas d'alignement"
-#: wp-includes/general-template.php:1378
+#: wp-includes/general-template.php:1374
msgctxt "post format archive title"
msgid "Audio"
msgstr "Audio"
-#: wp-includes/general-template.php:1380
+#: wp-includes/general-template.php:1376
msgctxt "post format archive title"
msgid "Chats"
msgstr "Discussions"
-#: wp-includes/general-template.php:1376
+#: wp-includes/general-template.php:1372
msgctxt "post format archive title"
msgid "Statuses"
msgstr "États"
-#: wp-includes/general-template.php:1374
+#: wp-includes/general-template.php:1370
msgctxt "post format archive title"
msgid "Links"
msgstr "Liens"
-#: wp-includes/general-template.php:1370
+#: wp-includes/general-template.php:1366
msgctxt "post format archive title"
msgid "Videos"
msgstr "Vidéos"
-#: wp-includes/general-template.php:1372
+#: wp-includes/general-template.php:1368
msgctxt "post format archive title"
msgid "Quotes"
msgstr "Citations"
-#: wp-includes/general-template.php:1366
+#: wp-includes/general-template.php:1362
msgctxt "post format archive title"
msgid "Galleries"
msgstr "Galeries"
-#: wp-includes/general-template.php:1368
+#: wp-includes/general-template.php:1364
msgctxt "post format archive title"
msgid "Images"
msgstr "Images"
-#: wp-includes/general-template.php:1361 wp-includes/general-template.php:1949
+#: wp-includes/general-template.php:1357 wp-includes/general-template.php:1945
msgctxt "daily archives date format"
msgid "F j, Y"
msgstr "j F Y"
-#: wp-includes/general-template.php:1364
+#: wp-includes/general-template.php:1360
msgctxt "post format archive title"
msgid "Asides"
msgstr "En passant"
msgid "Do not pass style tags to wp_add_inline_style()."
msgstr "Ne passez pas de balises de style dans wp_add_inline_style()."
-#: wp-includes/comment-template.php:1570
+#: wp-includes/comment-template.php:1582
msgid "Reply to %s"
msgstr "Répondre à %s"
msgid "<strong>You have successfully updated WordPress!</strong> Please log back in to see what’s new."
msgstr "<strong>WordPress a bien été mis à jour !</strong> Veuillez vous reconnecter pour voir les nouveautés."
-#: wp-includes/media.php:3340
+#: wp-includes/media.php:3368
msgid "Trash Selected"
msgstr "Mettre la sélection à la Corbeille"
-#: wp-includes/media.php:3341
+#: wp-includes/media.php:3369
msgid "Untrash Selected"
msgstr "Retirer la sélection de la Corbeille"
-#: wp-includes/media.php:3337
+#: wp-includes/media.php:3365
msgid ""
"You are about to trash these items.\n"
" 'Cancel' to stop, 'OK' to delete."
msgid "Press return or enter to open this panel"
msgstr "Appuyer sur Entrée pour ouvrir ce panneau"
-#: wp-includes/media.php:3339
+#: wp-includes/media.php:3367
msgid "Cancel Selection"
msgstr "Annuler la sélection"
-#: wp-includes/media.php:3342
+#: wp-includes/media.php:3370
msgid "Delete Selected"
msgstr "Supprimer la sélection"
-#: wp-includes/media.php:3338
+#: wp-includes/media.php:3366
msgid "Bulk Select"
msgstr "Sélection en masse"
#. translators: %s: taxonomy label, %l: list of terms formatted as per
#. $term_template
-#: wp-includes/taxonomy.php:4454
+#: wp-includes/taxonomy.php:4457
msgid "%s: %l."
msgstr "%s : %l."
-#: wp-includes/media.php:3336 wp-includes/script-loader.php:82
+#: wp-includes/media.php:3364 wp-includes/script-loader.php:82
msgid ""
"You are about to permanently delete these items.\n"
" 'Cancel' to stop, 'OK' to delete."
"Vous êtes sur le point de supprimer définitivement ces éléments.\n"
"« Annuler » pour arrêter, « OK » pour continuer."
-#: wp-includes/media.php:3347
+#: wp-includes/media.php:3375
msgid "Search Media"
msgstr "Rechercher un fichier média"
msgid "Search or use up and down arrow keys to select an item."
msgstr "Cherchez ou utilisez les flèches haut et bas pour choisir un élément."
-#: wp-includes/media.php:2104
+#: wp-includes/media.php:2132
msgid "Bitrate"
msgstr "Débit"
msgid "Edit more details"
msgstr " Indiquer plus de détails"
-#: wp-includes/media.php:2105
+#: wp-includes/media.php:2133
msgid "Bitrate Mode"
msgstr "Mode de débit"
-#: wp-includes/media.php:3329
+#: wp-includes/media.php:3357
msgid "All dates"
msgstr "Toutes les dates"
-#: wp-includes/media.php:3332
+#: wp-includes/media.php:3360
msgid "Unattached"
msgstr "Non-attaché"
-#: wp-includes/media.php:3345
+#: wp-includes/media.php:3373
msgid "Filter by date"
msgstr "Filtrer par date"
-#: wp-includes/media.php:3346
+#: wp-includes/media.php:3374
msgid "Filter by type"
msgstr "Filtrer par type"
msgstr "Classe CSS de l’image"
#: wp-includes/media-template.php:383 wp-includes/media-template.php:562
-#: wp-includes/media.php:2095
+#: wp-includes/media.php:2123
msgid "Artist"
msgstr "Artiste"
#: wp-includes/media-template.php:384 wp-includes/media-template.php:563
-#: wp-includes/media.php:2096
+#: wp-includes/media.php:2124
msgid "Album"
msgstr "Album"
-#: wp-includes/media.php:2100
+#: wp-includes/media.php:2128
msgid "Genre"
msgstr "Genre"
-#: wp-includes/media.php:2101
+#: wp-includes/media.php:2129
msgid "Year"
msgstr "Année"
-#: wp-includes/media.php:2102
+#: wp-includes/media.php:2130
msgctxt "video or audio"
msgid "Length"
msgstr "Durée"
-#: wp-includes/media.php:3384
+#: wp-includes/media.php:3412
msgid "There has been an error cropping your image."
msgstr "Une erreur est survenue lors du recadrage de votre image."
-#: wp-includes/media.php:3403
+#: wp-includes/media.php:3431
msgid "Edit Audio Playlist"
msgstr "Modifier la liste de lecture audio"
-#: wp-includes/media.php:3404
+#: wp-includes/media.php:3432
msgid "← Cancel Audio Playlist"
msgstr "← Annuler la liste de lecture audio"
-#: wp-includes/media.php:3405
+#: wp-includes/media.php:3433
msgid "Insert audio playlist"
msgstr "Insérer une liste de lecture audio"
-#: wp-includes/media.php:3406
+#: wp-includes/media.php:3434
msgid "Update audio playlist"
msgstr "Mettre à jour la liste de lecture audio"
-#: wp-includes/media.php:3407
+#: wp-includes/media.php:3435
msgid "Add to audio playlist"
msgstr "Ajouter à la liste de lecture audio"
-#: wp-includes/media.php:3408
+#: wp-includes/media.php:3436
msgid "Add to Audio Playlist"
msgstr "Ajouter à la liste de lecture audio"
msgid "Image Title Attribute"
msgstr "Attribut « Title » de l’image"
-#: wp-includes/media-template.php:238 wp-includes/media.php:3383
+#: wp-includes/media-template.php:238 wp-includes/media.php:3411
msgid "Suggested image dimensions:"
msgstr "Dimensions d’image suggérées :"
msgid "Tracks (subtitles, captions, descriptions, chapters, or metadata)"
msgstr "Pistes (sous-titres, légendes, descriptions, chapitres ou métadonnées)"
-#: wp-includes/media.php:3382
+#: wp-includes/media.php:3410
msgid "Cropping…"
msgstr "Recadrage…"
msgstr "Ajoutez des sources alternatives pour une lecture optimale avec HTML5 :"
#: wp-includes/customize/class-wp-customize-image-control.php:41
-#: wp-includes/media.php:3377
+#: wp-includes/media.php:3405
msgid "Choose Image"
msgstr "Choisir une image"
#: wp-includes/class-wp-customize-section.php:356
#: wp-includes/class-wp-customize-widgets.php:711
#: wp-includes/customize/class-wp-customize-nav-menus-panel.php:82
-#: wp-includes/media.php:3309
+#: wp-includes/media.php:3337
msgid "Back"
msgstr "Retour"
#. translators: used to join last two items in a list with more than 2 times
-#: wp-includes/formatting.php:4070
+#: wp-includes/formatting.php:4076
msgid "%s, and %s"
msgstr "%s et %s"
#. translators: used to join items in a list with only 2 items
-#: wp-includes/formatting.php:4072
+#: wp-includes/formatting.php:4078
msgid "%s and %s"
msgstr "%s et %s"
msgid "Poster Image"
msgstr "Image de couverture"
-#: wp-includes/media.php:3325
+#: wp-includes/media.php:3353
msgid "Create a new playlist"
msgstr "Créer une nouvelle liste de lecture"
-#: wp-includes/media.php:3326
+#: wp-includes/media.php:3354
msgid "Create a new video playlist"
msgstr "Créer une nouvelle liste de lecture vidéo"
-#: wp-includes/media.php:3378
+#: wp-includes/media.php:3406
msgid "Select and Crop"
msgstr "Sélectionner et rogner"
-#: wp-includes/media.php:3402
+#: wp-includes/media.php:3430
msgid "Create Audio Playlist"
msgstr "Créer une liste de lecture audio"
-#: wp-includes/media.php:3411
+#: wp-includes/media.php:3439
msgid "Drag and drop to reorder videos."
msgstr "Glisser-déposer pour réorganiser les vidéos."
-#: wp-includes/media.php:3412
+#: wp-includes/media.php:3440
msgid "Create Video Playlist"
msgstr "Créer une liste de lecture vidéo"
-#: wp-includes/media.php:3413
+#: wp-includes/media.php:3441
msgid "Edit Video Playlist"
msgstr "Modifier une liste de lecture vidéo"
-#: wp-includes/media.php:3414
+#: wp-includes/media.php:3442
msgid "← Cancel Video Playlist"
msgstr "← Annuler la liste de lecture vidéo"
-#: wp-includes/media.php:3415
+#: wp-includes/media.php:3443
msgid "Insert video playlist"
msgstr "Insérer une liste de lecture vidéo"
-#: wp-includes/media.php:3416
+#: wp-includes/media.php:3444
msgid "Update video playlist"
msgstr "Mettre à jour la liste de lecture vidéo"
-#: wp-includes/media.php:3417
+#: wp-includes/media.php:3445
msgid "Add to video playlist"
msgstr "Ajouter à la liste de lecture vidéo"
-#: wp-includes/media.php:3418
+#: wp-includes/media.php:3446
msgid "Add to Video Playlist"
msgstr "Ajouter à la liste de lecture vidéo"
-#: wp-includes/media.php:3380
+#: wp-includes/media.php:3408
msgid "Crop Image"
msgstr "Recadrer l’image"
-#: wp-includes/media.php:3381
+#: wp-includes/media.php:3409
msgid "Crop your image"
msgstr "Recadrer votre image"
-#: wp-includes/media.php:3395
+#: wp-includes/media.php:3423
msgid "Add Video Source"
msgstr "Ajouter une source vidéo"
#. translators: used to join items in a list with more than 2 items
-#: wp-includes/formatting.php:4068
+#: wp-includes/formatting.php:4074
msgid "%s, %s"
msgstr "%s, %s"
msgid "Autoplay"
msgstr "Lecture automatique"
-#: wp-includes/media.php:3398
+#: wp-includes/media.php:3426
msgid "Add Subtitles"
msgstr "Ajouter des sous-titres"
-#: wp-includes/media.php:3401
+#: wp-includes/media.php:3429
msgid "Drag and drop to reorder tracks."
msgstr "Glisser-déposer pour réorganiser les pistes."
-#: wp-includes/media.php:3397
+#: wp-includes/media.php:3425
msgid "Select Poster Image"
msgstr "Choisir une image de couverture"
-#: wp-includes/media.php:3387
+#: wp-includes/media.php:3415
msgid "Audio Details"
msgstr "Détails audio"
-#: wp-includes/media.php:3393
+#: wp-includes/media.php:3421
msgid "Video Details"
msgstr "Détails de la vidéo"
msgid "Invalid menu ID."
msgstr "Menu ID invalide."
-#: wp-includes/media.php:3373 wp-includes/media.php:3390
-#: wp-includes/media.php:3396
+#: wp-includes/media.php:3401 wp-includes/media.php:3418
+#: wp-includes/media.php:3424
msgid "Cancel Edit"
msgstr "Annuler la modification"
-#: wp-includes/media.php:3389
+#: wp-includes/media.php:3417
msgid "Add Audio Source"
msgstr "Ajouter une source audio"
-#: wp-includes/media.php:3388
+#: wp-includes/media.php:3416
msgid "Replace Audio"
msgstr "Remplacer le son"
-#: wp-includes/media.php:3394
+#: wp-includes/media.php:3422
msgid "Replace Video"
msgstr "Remplacer la vidéo"
-#: wp-includes/media.php:3379
+#: wp-includes/media.php:3407
msgid "Skip Cropping"
msgstr "Pas de recadrage"
-#: wp-includes/media.php:3371
+#: wp-includes/media.php:3399
msgid "Image Details"
msgstr "Détails de l’image"
msgid "There are no associated subtitles."
msgstr "Il n’y a pas de sous-titres associés."
-#: wp-includes/media.php:3372
+#: wp-includes/media.php:3400
msgid "Replace Image"
msgstr "Remplacer l’image"
msgid "Show invisible characters"
msgstr "Voir les caractères invisibles"
-#: wp-includes/media-template.php:885 wp-includes/media.php:3307
+#: wp-includes/media-template.php:885 wp-includes/media.php:3335
msgid "Replace"
msgstr "Remplacer"
msgid "Select an area to move this widget into:"
msgstr "Sélectionner une zone vers laquelle déplacer ce widget :"
-#: wp-includes/general-template.php:3146
+#: wp-includes/general-template.php:3142
msgctxt "admin color scheme"
msgid "Sunrise"
msgstr "Lever du soleil"
-#: wp-includes/general-template.php:3152
+#: wp-includes/general-template.php:3148
msgctxt "admin color scheme"
msgid "Ectoplasm"
msgstr "Ectoplasme"
-#: wp-includes/general-template.php:3158
+#: wp-includes/general-template.php:3154
msgctxt "admin color scheme"
msgid "Ocean"
msgstr "Océan"
-#: wp-includes/general-template.php:3164
+#: wp-includes/general-template.php:3160
msgctxt "admin color scheme"
msgid "Coffee"
msgstr "Café"
msgid "no-subset"
msgstr "no-subset"
-#: wp-includes/general-template.php:3118
+#: wp-includes/general-template.php:3114
msgctxt "admin color scheme"
msgid "Default"
msgstr "Par défaut"
-#: wp-includes/general-template.php:3140
+#: wp-includes/general-template.php:3136
msgctxt "admin color scheme"
msgid "Midnight"
msgstr "Minuit"
msgid "Use commas instead of %s to separate excluded terms."
msgstr "Utilisez des virgules au lieu de %s pour séparer les termes exclus."
-#: wp-includes/general-template.php:3128
+#: wp-includes/general-template.php:3124
msgctxt "admin color scheme"
msgid "Light"
msgstr "Lumineux"
msgid "The theme directory \"%s\" does not exist."
msgstr "Le répertoire du thème « %s » n’existe pas."
-#: wp-includes/functions.php:1216
+#: wp-includes/functions.php:1221
msgid "ERROR: This is not a valid feed template."
msgstr "ERREUR : ce n’est pas un flux valide."
msgid "The site you were looking for, %s, does not exist, but you can create it now!"
msgstr "Le site que vous cherchez (<strong>%s</strong>) n’existe pas, mais vous pouvez le créer dès à présent !"
-#: wp-includes/functions.php:4945
+#: wp-includes/functions.php:4950
msgid "The login page will open in a new window. After logging in you can close it and return to this page."
msgstr "La page de connexion s’ouvrira dans une nouvelle fenêtre. Après vous être connecté(e), vous pourrez la fermer et revenir à cette page."
msgid "Search for:"
msgstr "Rechercher :"
-#: wp-includes/functions.php:4943 wp-includes/script-loader.php:443
+#: wp-includes/functions.php:4948 wp-includes/script-loader.php:443
msgid "Session expired"
msgstr "La session a expiré"
-#: wp-includes/taxonomy.php:536
+#: wp-includes/taxonomy.php:539
msgid "No tags found."
msgstr "Aucune étiquette trouvée."
#. If there is not a word you can use in your language to avoid issues with
#. the lack of plural support here, turn it into "selected: %d" then
#. translate it.
-#: wp-includes/media.php:3314
+#: wp-includes/media.php:3342
msgid "%d selected"
msgstr "%d sélection(s)"
-#: wp-includes/media.php:3354
+#: wp-includes/media.php:3382
msgid "Insert from URL"
msgstr "Insérer à partir d’une adresse web"
msgid "Random"
msgstr "Aléatoire"
-#: wp-includes/media-template.php:1229 wp-includes/media.php:3330
+#: wp-includes/media-template.php:1229 wp-includes/media.php:3358
msgid "No items found."
msgstr "Aucun élément trouvé."
-#: wp-includes/media.php:3367
+#: wp-includes/media.php:3395
msgid "Add to Gallery"
msgstr "Ajouter à la galerie"
-#: wp-includes/media.php:3368
+#: wp-includes/media.php:3396
msgid "Reverse order"
msgstr "Inverser l’ordre"
msgid "Sorry, that file cannot be edited."
msgstr "Désolé, ce fichier ne peut pas être modifié."
-#: wp-includes/media.php:3335
+#: wp-includes/media.php:3363
msgid ""
"You are about to permanently delete this item.\n"
" 'Cancel' to stop, 'OK' to delete."
" « Annuler » pour abandonner, « OK » pour le supprimer."
#: wp-includes/media-template.php:436 wp-includes/media-template.php:537
-#: wp-includes/media.php:3343
+#: wp-includes/media.php:3371
msgid "Delete Permanently"
msgstr "Supprimer définitivement"
msgid "Uploading"
msgstr "Mise en ligne"
-#: wp-includes/media.php:2823
+#: wp-includes/media.php:2851
msgid "No editor could be selected."
msgstr "Aucun éditeur n’a pas pu être sélectionné."
msgid "Uploaded to this page"
msgstr "Mis en ligne sur cette page"
-#: wp-includes/media.php:3328
+#: wp-includes/media.php:3356
msgid "All media items"
msgstr "Tous les éléments média"
msgid "Audio"
msgstr "Sons"
-#: wp-includes/media.php:3327
+#: wp-includes/media.php:3355
msgid "← Return to library"
msgstr "← Revenir à la bibliothèque"
msgid "Custom URL"
msgstr "Lien personnalisé"
-#: wp-includes/media-template.php:494 wp-includes/media.php:3351
+#: wp-includes/media-template.php:494 wp-includes/media.php:3379
msgid "Attachment Details"
msgstr "Détails du fichier attaché"
msgstr "Colonnes"
#: wp-includes/media-template.php:689 wp-includes/media-template.php:764
-#: wp-includes/media-template.php:938 wp-includes/media.php:3062
+#: wp-includes/media-template.php:938 wp-includes/media.php:3090
msgid "Large"
msgstr "Grande"
-#: wp-includes/media.php:3319
+#: wp-includes/media.php:3347
msgid "Upload Images"
msgstr "Envoyer des images"
-#: wp-includes/media.php:3363
+#: wp-includes/media.php:3391
msgid "← Cancel Gallery"
msgstr "← Annuler la galerie"
msgid "WordPress › Success"
msgstr "WordPress » Réussite"
-#: wp-includes/media.php:3318
+#: wp-includes/media.php:3346
msgid "Upload Files"
msgstr "Envoyer des fichiers"
msgid "Drop files anywhere to upload"
msgstr "Déposez vos fichiers n’importe où pour les mettre en ligne"
-#: wp-includes/media.php:3364
+#: wp-includes/media.php:3392
msgid "Insert gallery"
msgstr "Insérer la galerie"
msgid "Drop files to upload"
msgstr "Déposez vos fichiers pour les mettre en ligne"
-#: wp-includes/media.php:3322
+#: wp-includes/media.php:3350
msgid "Media Library"
msgstr "Bibliothèque de médias"
-#: wp-includes/media.php:3361
+#: wp-includes/media.php:3389
msgid "Create Gallery"
msgstr "Créer une galerie"
msgid "Describe this media file…"
msgstr "Décrivez ce fichier média…"
-#: wp-includes/media.php:3365
+#: wp-includes/media.php:3393
msgid "Update gallery"
msgstr "Mettre à jour la galerie"
msgid "Image Editor Save Failed"
msgstr "L’enregistrement de l’éditeur d’images a échoué."
-#: wp-includes/media.php:3323
+#: wp-includes/media.php:3351
msgid "Insert Media"
msgstr "Insérer un média"
-#: wp-includes/media.php:3324
+#: wp-includes/media.php:3352
msgid "Create a new gallery"
msgstr "Créer une nouvelle galerie"
-#: wp-includes/media.php:3366
+#: wp-includes/media.php:3394
msgid "Add to gallery"
msgstr "Ajouter à la galerie"
msgid "Whoops, the provided date is invalid."
msgstr "Oups, la date fournie n’est pas valable."
-#: wp-includes/taxonomy.php:2875
+#: wp-includes/taxonomy.php:2878
msgid "Could not insert term relationship into the database"
msgstr "Impossible d’insérer le terme associé dans la base de données"
msgstr "Afficher la date du contenu ?"
#. translators: 1: blog name, 2: separator(raquo), 3: post type name
-#: wp-includes/general-template.php:2522
+#: wp-includes/general-template.php:2518
msgid "%1$s %2$s %3$s Feed"
msgstr "%1$s %2$s Flux pour %3$s"
msgid "Hex Value"
msgstr "Valeur hexadécimale"
-#: wp-includes/class-wp-customize-manager.php:1862
+#: wp-includes/class-wp-customize-manager.php:1864
msgid "Header Text Color"
msgstr "Couleur du texte d’en-tête"
-#: wp-includes/class-wp-customize-manager.php:1839
+#: wp-includes/class-wp-customize-manager.php:1841
msgid "Colors"
msgstr "Couleurs"
msgid "Sorry, you cannot stick a private post."
msgstr "Désolé, vous ne pouvez pas mettre en avant un article privé."
-#: wp-includes/class-wp-customize-manager.php:1885
+#: wp-includes/class-wp-customize-manager.php:1887
#: wp-includes/customize/class-wp-customize-header-image-control.php:31
msgid "Header Image"
msgstr "Image d’en-tête"
msgid "Please enter a site title."
msgstr "Veuillez saisir un titre de site."
-#: wp-includes/class-wp-customize-manager.php:2002
+#: wp-includes/class-wp-customize-manager.php:2004
msgid "A static page"
msgstr "Une page statique"
-#: wp-includes/class-wp-customize-manager.php:1877
+#: wp-includes/class-wp-customize-manager.php:1879
msgid "Background Color"
msgstr "Couleur d’arrière-plan"
-#: wp-includes/class-wp-customize-manager.php:1927
+#: wp-includes/class-wp-customize-manager.php:1929
msgid "Background Repeat"
msgstr "Répétition de l’arrière-plan"
-#: wp-includes/class-wp-customize-manager.php:1944
+#: wp-includes/class-wp-customize-manager.php:1946
msgid "Background Position"
msgstr "Position d’arrière-plan"
-#: wp-includes/class-wp-customize-manager.php:1855
+#: wp-includes/class-wp-customize-manager.php:1857
msgid "Display Header Text"
msgstr "Afficher le texte d’en-tête"
-#: wp-includes/class-wp-customize-manager.php:1960
+#: wp-includes/class-wp-customize-manager.php:1962
msgid "Background Attachment"
msgstr "Image d’arrière-plan"
-#: wp-includes/class-wp-customize-manager.php:1905
+#: wp-includes/class-wp-customize-manager.php:1907
#: wp-includes/customize/class-wp-customize-background-image-control.php:30
msgid "Background Image"
msgstr "Image d’arrière-plan"
msgid "Sorry, you are not allowed to edit this post type."
msgstr "Désolé, vous n’avez pas l’autorisation de modifier ce type de contenu."
-#: wp-includes/class-wp-customize-manager.php:1931
+#: wp-includes/class-wp-customize-manager.php:1933
msgid "No Repeat"
msgstr "Pas de répétition"
-#: wp-includes/class-wp-customize-manager.php:1932
+#: wp-includes/class-wp-customize-manager.php:1934
msgid "Tile"
msgstr "Motif répété"
-#: wp-includes/class-wp-customize-manager.php:1933
+#: wp-includes/class-wp-customize-manager.php:1935
msgid "Tile Horizontally"
msgstr "Répétition horizontale"
-#: wp-includes/class-wp-customize-manager.php:1934
+#: wp-includes/class-wp-customize-manager.php:1936
msgid "Tile Vertically"
msgstr "Répétition verticale"
-#: wp-includes/class-wp-customize-manager.php:1965
+#: wp-includes/class-wp-customize-manager.php:1967
msgid "Fixed"
msgstr "Fixe"
-#: wp-includes/class-wp-customize-manager.php:1964
+#: wp-includes/class-wp-customize-manager.php:1966
msgid "Scroll"
msgstr "Défilant"
-#: wp-includes/class-wp-customize-manager.php:2013
+#: wp-includes/class-wp-customize-manager.php:2015
msgid "Front page"
msgstr "Page d’accueil"
-#: wp-includes/class-wp-customize-manager.php:2025
+#: wp-includes/class-wp-customize-manager.php:2027
msgid "Posts page"
msgstr "Page des articles"
#: wp-includes/customize/class-wp-customize-image-control.php:37
#: wp-includes/customize/class-wp-customize-media-control.php:62
#: wp-includes/customize/class-wp-customize-nav-menu-item-control.php:141
-#: wp-includes/media-template.php:467 wp-includes/media.php:3308
+#: wp-includes/media-template.php:467 wp-includes/media.php:3336
msgid "Remove"
msgstr "Supprimer"
msgstr "Cette taxinomie n’est pas hiérarchique."
#: wp-includes/class-wp-xmlrpc-server.php:1878
-#: wp-includes/class-wp-xmlrpc-server.php:1976 wp-includes/taxonomy.php:2572
-#: wp-includes/taxonomy.php:3164
+#: wp-includes/class-wp-xmlrpc-server.php:1976 wp-includes/taxonomy.php:2575
+#: wp-includes/taxonomy.php:3167
msgid "Parent term does not exist."
msgstr "Le terme parent n’existe pas."
msgid "— Select —"
msgstr "— Sélectionner —"
-#: wp-includes/class-wp-customize-manager.php:1983
+#: wp-includes/class-wp-customize-manager.php:1985
msgid "Static Front Page"
msgstr "Page d’accueil statique"
-#: wp-includes/class-wp-customize-manager.php:1986
+#: wp-includes/class-wp-customize-manager.php:1988
msgid "Your theme supports a static front page."
msgstr "Le thème actuel accepte les pages statiques."
-#: wp-includes/class-wp-customize-manager.php:1997
+#: wp-includes/class-wp-customize-manager.php:1999
msgid "Front page displays"
msgstr "La page d’accueil affiche"
-#: wp-includes/class-wp-customize-manager.php:2001
+#: wp-includes/class-wp-customize-manager.php:2003
msgid "Your latest posts"
msgstr "Les derniers articles"
-#: wp-includes/class-wp-customize-manager.php:1817
+#: wp-includes/class-wp-customize-manager.php:1819
msgid "Tagline"
msgstr "Slogan"
msgid "You are not allowed to edit posts in this post type."
msgstr "Désolé, vous n’avez pas l’autorisation de modifier les entrées dans ce type de contenu"
-#: wp-includes/general-template.php:895 wp-includes/general-template.php:1359
+#: wp-includes/general-template.php:891 wp-includes/general-template.php:1355
msgctxt "monthly archives date format"
msgid "F Y"
msgstr "F Y"
-#: wp-includes/general-template.php:892 wp-includes/general-template.php:1357
+#: wp-includes/general-template.php:888 wp-includes/general-template.php:1353
msgctxt "yearly archives date format"
msgid "Y"
msgstr "Y"
#. translators: opening curly double quote
-#: wp-includes/formatting.php:88 wp-includes/formatting.php:4319
+#: wp-includes/formatting.php:88 wp-includes/formatting.php:4325
msgctxt "opening curly double quote"
msgid "“"
msgstr "« "
msgid "<a href=\"%1$s\">%2$s</a> is your new site. <a href=\"%3$s\">Log in</a> as “%4$s” using your existing password."
msgstr "<a href=\"http://%1$s\">http://%2$s</a> est votre nouveau site. <a href=\"%3$s\">Connectez-vous</a> avec l’identifiant « %4$s », à l’aide de votre mot de passe actuel."
-#: wp-includes/functions.php:1397
+#: wp-includes/functions.php:1402
msgid "One or more database tables are unavailable. The database may need to be <a href=\"%s\">repaired</a>."
msgstr "Une ou plusieurs tables de votre base de données sont indisponibles. La base de données a peut-être besoin d’être <a href=\"%s\">réparée</a>."
msgid "Support Forums"
msgstr "Forums d’entraide"
-#: wp-includes/formatting.php:2953 wp-includes/general-template.php:3040
+#: wp-includes/formatting.php:2953 wp-includes/general-template.php:3036
msgid "…"
msgstr "…"
-#: wp-includes/functions.php:3504
+#: wp-includes/functions.php:3509
msgid "Database Error"
msgstr "Erreur de la base de données"
-#: wp-includes/functions.php:3508 wp-includes/ms-load.php:286
+#: wp-includes/functions.php:3513 wp-includes/ms-load.php:286
#: wp-includes/wp-db.php:1533
msgid "Error establishing a database connection"
msgstr "Erreur lors de la connexion à la base de données"
msgid "Network Admin: %s"
msgstr "Admin du réseau : %s"
-#: wp-includes/taxonomy.php:521
+#: wp-includes/taxonomy.php:524
msgctxt "taxonomy general name"
msgid "Tags"
msgstr "Étiquettes"
-#: wp-includes/taxonomy.php:522
+#: wp-includes/taxonomy.php:525
msgctxt "taxonomy singular name"
msgid "Tag"
msgstr "Étiquette"
msgid "This is larger than the maximum size. Please try another."
msgstr "Ce fichier est plus grand que la taille maximale. Merci d’en envoyer un autre."
-#: wp-includes/general-template.php:3134
+#: wp-includes/general-template.php:3130
msgctxt "admin color scheme"
msgid "Blue"
msgstr "Bleu"
msgid "You should specify a nonce action to be verified by using the first parameter."
msgstr "Vous devriez préciser une action de type « nonce », qui sera vérifiée par le premier paramètre."
-#: wp-includes/taxonomy.php:529
+#: wp-includes/taxonomy.php:532
msgid "View Tag"
msgstr "Voir l’étiquette"
-#: wp-includes/taxonomy.php:529
+#: wp-includes/taxonomy.php:532
msgid "View Category"
msgstr "Voir la catégorie"
msgid "The user is already active."
msgstr "Cet utilisateur est déjà activé."
-#: wp-includes/functions.php:3782
+#: wp-includes/functions.php:3787
msgid "(This message was added in version %s.)"
msgstr "(Ce message a été ajouté à la version %s.)"
-#: wp-includes/functions.php:3787
+#: wp-includes/functions.php:3792
msgid "%1$s was called <strong>incorrectly</strong>. %2$s %3$s"
msgstr "%1$s est appelée de la mauvaise manière. %2$s %3$s"
msgid "Sorry, you cannot publish this post."
msgstr "Désolé, vous ne pouvez pas publier cet article."
-#: wp-includes/pluggable.php:1496
+#: wp-includes/pluggable.php:1505
msgid "Permalink: %s"
msgstr "Permalien : %s"
msgstr "Aucune page trouvée."
#: wp-includes/post.php:1369
-msgid "No posts found in Trash."
-msgstr "Aucun article trouvé dans la corbeille."
+msgid "No pages found in Trash."
+msgstr "Aucune page trouvée dans la Corbeille."
#: wp-includes/post.php:1369
-msgid "No pages found in Trash."
-msgstr "Aucune page trouvée dans la corbeille."
+msgid "No posts found in Trash."
+msgstr "Aucun article trouvé dans la Corbeille."
#: wp-includes/admin-bar.php:530
msgid "Shortlink"
msgid "Invalid taxonomy: %s."
msgstr "Taxinomie non valide : %s"
-#: wp-includes/query.php:2549
+#: wp-includes/query.php:2552
msgid "\"caller_get_posts\" is deprecated. Use \"ignore_sticky_posts\" instead."
msgstr "« caller_get_posts » n’est plus recommandé. Utilisez « ignore_sticky_posts » à la place."
msgid "You have searched the %1$s blog archives for <strong>‘%2$s’</strong>. If you are unable to find anything in these search results, you can try one of these links."
msgstr "Vous avez lancé une recherche dans les archives du site %1$s avec la requête <strong>« %2$s »</strong>. Si les résultats ne vous conviennent pas, vous pouvez essayer l’un de ces liens."
-#: wp-includes/taxonomy.php:535
+#: wp-includes/taxonomy.php:538
msgid "Choose from the most used tags"
msgstr "Choisir parmi les étiquettes les plus utilisées"
-#: wp-includes/taxonomy.php:521
+#: wp-includes/taxonomy.php:524
msgctxt "taxonomy general name"
msgid "Categories"
msgstr "Catégories"
-#: wp-includes/taxonomy.php:522
+#: wp-includes/taxonomy.php:525
msgctxt "taxonomy singular name"
msgid "Category"
msgstr "Catégorie"
-#: wp-includes/taxonomy.php:526
+#: wp-includes/taxonomy.php:529
msgid "Parent Category"
msgstr "Catégorie parente"
-#: wp-includes/taxonomy.php:527
+#: wp-includes/taxonomy.php:530
msgid "Parent Category:"
msgstr "Catégorie parente :"
-#: wp-includes/taxonomy.php:532
+#: wp-includes/taxonomy.php:535
msgid "New Category Name"
msgstr "Nom de la nouvelle catégorie"
-#: wp-includes/taxonomy.php:531
+#: wp-includes/taxonomy.php:534
msgid "Add New Category"
msgstr "Ajouter une nouvelle catégorie"
-#: wp-includes/taxonomy.php:523
+#: wp-includes/taxonomy.php:526
msgid "Search Tags"
msgstr "Rechercher dans les étiquettes"
-#: wp-includes/taxonomy.php:525
+#: wp-includes/taxonomy.php:528
msgid "All Tags"
msgstr "Toutes les étiquettes"
-#: wp-includes/taxonomy.php:532
+#: wp-includes/taxonomy.php:535
msgid "New Tag Name"
msgstr "Nom du nouveau étiquette"
-#: wp-includes/taxonomy.php:531
+#: wp-includes/taxonomy.php:534
msgid "Add New Tag"
msgstr "Ajouter une nouvelle étiquette"
-#: wp-includes/taxonomy.php:530
+#: wp-includes/taxonomy.php:533
msgid "Update Tag"
msgstr "Mettre à jour l’étiquette"
-#: wp-includes/taxonomy.php:524
+#: wp-includes/taxonomy.php:527
msgid "Popular Tags"
msgstr "Étiquettes populaires"
msgid "<strong>ERROR</strong>: This username is invalid because it uses illegal characters. Please enter a valid username."
msgstr "<strong>ERREUR</strong> : cet identifiant n’est pas valide, car il utilise des caractères non autorisés. Merci d’utiliser un identifiant valide."
-#: wp-includes/comment-template.php:2106
+#: wp-includes/comment-template.php:2155
msgid "Required fields are marked %s"
msgstr "Les champs obligatoires sont indiqués avec %s"
msgid "New %1$s Site: %2$s"
msgstr "Nouveau site %1$s : %2$s"
-#: wp-includes/pluggable.php:1754
+#: wp-includes/pluggable.php:1763
msgid "New user registration on your site %s:"
msgstr "Inscription d'un nouvel utilisateur sur votre site %s :"
msgid "The Site address you entered did not appear to be a valid URL. Please enter a valid URL."
msgstr "L’adresse de site que vous avez saisie ne semble pas être valide. Veuillez entrer une adresse valide."
-#: wp-includes/taxonomy.php:2646
+#: wp-includes/taxonomy.php:2649
msgid "A term with the name provided already exists with this parent."
msgstr "Un terme avec ce nom existe déjà pour ce parent."
msgid "This file is too big. Files must be less than %d KB in size."
msgstr "Ce fichier est trop gros. La taille des fichiers doit être inférieure %d Ko."
-#: wp-includes/comment-template.php:2123
+#: wp-includes/comment-template.php:2172
msgid "Your email address will not be published."
msgstr "Votre adresse de messagerie ne sera pas publiée."
msgid "Use as featured image"
msgstr "Utiliser comme image à la Une"
-#: wp-includes/general-template.php:903
+#: wp-includes/general-template.php:899
msgid "Page %s"
msgstr "Page %s"
"Vous êtes sur le point de supprimer définitivement ce menu.\n"
" « Annuler » pour abandonner, « OK » pour le supprimer."
-#: wp-includes/link-template.php:3643
+#: wp-includes/link-template.php:3647
msgid "This is the short link."
msgstr "Ceci est un lien court."
msgid "Site registration has been disabled."
msgstr "Les inscriptions de sites sont désactivées."
-#: wp-includes/pluggable.php:1616
+#: wp-includes/pluggable.php:1625
msgid "A new trackback on the post \"%s\" is waiting for your approval"
msgstr "Un nouveau rétrolien sur l'article « %s » attend votre approbation"
msgid "If you’re not going to use a great site domain, leave it for a new user. Now have at it!"
msgstr "Si vous ne comptez pas utiliser ce superbe nom de domaine, laissez-le à un autre utilisateur. Et maintenant, lancez-vous !"
-#: wp-includes/pluggable.php:1484
+#: wp-includes/pluggable.php:1493
msgid "New comment on your post \"%s\""
msgstr "Nouveau commentaire sur votre article « %s »"
-#: wp-includes/pluggable.php:1464
+#: wp-includes/pluggable.php:1473
msgid "New trackback on your post \"%s\""
msgstr "Nouveau rétrolien sur votre article « %s »"
-#: wp-includes/pluggable.php:1474
+#: wp-includes/pluggable.php:1483
msgid "New pingback on your post \"%s\""
msgstr "Nouveau ping sur votre article « %s »"
-#: wp-includes/pluggable.php:1624
+#: wp-includes/pluggable.php:1633
msgid "A new pingback on the post \"%s\" is waiting for your approval"
msgstr "Un nouveau ping sur l'article « %s » attend votre approbation"
-#: wp-includes/pluggable.php:1632
+#: wp-includes/pluggable.php:1641
msgid "A new comment on the post \"%s\" is waiting for your approval"
msgstr "Un nouveau commentaire sur l'article « %s » attend votre approbation"
msgid "Too many redirects."
msgstr "Trop de redirections."
-#: wp-includes/comment-template.php:2136
+#: wp-includes/comment-template.php:2185
msgid "Cancel reply"
msgstr "Annuler la réponse."
-#: wp-includes/comment-template.php:2137
+#: wp-includes/comment-template.php:2186
msgid "Post Comment"
msgstr "Laisser un commentaire"
msgid "%s is a protected WP option and may not be modified"
msgstr "%s est une option protégée de WordPress, et ne peut être modifiée"
-#: wp-includes/functions.php:1921 wp-includes/functions.php:2058
+#: wp-includes/functions.php:1926 wp-includes/functions.php:2063
msgid "Unable to create directory %s. Is its parent directory writable by the server?"
msgstr "Impossible de créer le dossier %s. Son dossier parent est-il accessible en écriture par le serveur ?"
-#: wp-includes/functions.php:2022
+#: wp-includes/functions.php:2027
msgid "Empty filename"
msgstr "Pas de nom de fichier"
-#: wp-includes/functions.php:2064
+#: wp-includes/functions.php:2069
msgid "Could not write file %s"
msgstr "Impossible d’écrire le fichier %s"
-#: wp-includes/functions.php:2405
+#: wp-includes/functions.php:2410
msgid "You are attempting to log out of %s"
msgstr "Vous êtes en train de vous déconnecter de %s."
-#: wp-includes/functions.php:2414
+#: wp-includes/functions.php:2419
msgid "WordPress Failure Notice"
msgstr "Avertissement d’échec de WordPress"
-#: wp-includes/functions.php:2407
+#: wp-includes/functions.php:2412
msgid "Do you really want to <a href='%s'>log out</a>?"
msgstr "Voulez-vous réellement <a href='%s'>vous déconnecter</a> ?"
-#: wp-includes/functions.php:2533
+#: wp-includes/functions.php:2538
msgid "« Back"
msgstr "« Retour"
-#: wp-includes/functions.php:2545 wp-load.php:92
+#: wp-includes/functions.php:2550 wp-load.php:92
msgid "WordPress › Error"
msgstr "WordPress » Erreur"
-#: wp-includes/functions.php:3568 wp-includes/functions.php:3672
+#: wp-includes/functions.php:3573 wp-includes/functions.php:3677
msgid "%1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead."
msgstr "%1$s est <strong>déprécié</strong> depuis la version %2$s! Utilisez %3$s à la place."
-#: wp-includes/functions.php:3570 wp-includes/functions.php:3674
+#: wp-includes/functions.php:3575 wp-includes/functions.php:3679
msgid "%1$s is <strong>deprecated</strong> since version %2$s with no alternative available."
msgstr "%1$s est <strong>déprécié</strong> depuis la version %2$s, aucune alternative n’est disponible."
-#: wp-includes/functions.php:4339 wp-includes/functions.php:4343
+#: wp-includes/functions.php:4344 wp-includes/functions.php:4348
msgid "UTC"
msgstr "UTC"
msgstr "Admin. du Site"
#. translators: 1: separator, 2: search phrase
-#: wp-includes/general-template.php:1066
+#: wp-includes/general-template.php:1062
msgid "Search Results %1$s %2$s"
msgstr "Résultats de recherche %1$s %2$s"
-#: wp-includes/general-template.php:852 wp-includes/general-template.php:1071
+#: wp-includes/general-template.php:852 wp-includes/general-template.php:1067
msgid "Page not found"
msgstr "Page non trouvée"
#. translators: 1: month name, 2: 4-digit year
-#: wp-includes/general-template.php:1632 wp-includes/media.php:3243
+#: wp-includes/general-template.php:1628 wp-includes/media.php:3271
msgid "%1$s %2$d"
msgstr "%1$s %2$d"
#. translators: Calendar caption: 1: month name, 2: 4-digit year
-#: wp-includes/general-template.php:1857
+#: wp-includes/general-template.php:1853
msgctxt "calendar caption"
msgid "%1$s %2$s"
msgstr "%1$s %2$s"
#. translators: Separator between blog name and feed type in feed links
-#: wp-includes/general-template.php:2468 wp-includes/general-template.php:2510
+#: wp-includes/general-template.php:2464 wp-includes/general-template.php:2506
msgctxt "feed link"
msgid "»"
msgstr "»"
#. translators: 1: blog title, 2: separator (raquo)
-#: wp-includes/general-template.php:2470
+#: wp-includes/general-template.php:2466
msgid "%1$s %2$s Feed"
msgstr "%1$s %2$s Flux"
#. translators: 1: blog title, 2: separator (raquo)
-#: wp-includes/general-template.php:2472
+#: wp-includes/general-template.php:2468
msgid "%1$s %2$s Comments Feed"
msgstr "%1$s %2$s Flux des commentaires"
#. translators: 1: blog name, 2: separator(raquo), 3: post title
-#: wp-includes/general-template.php:2512
+#: wp-includes/general-template.php:2508
msgid "%1$s %2$s %3$s Comments Feed"
msgstr "%1$s %2$s %3$s Flux des commentaires"
#. translators: 1: blog name, 2: separator(raquo), 3: category name
-#: wp-includes/general-template.php:2514
+#: wp-includes/general-template.php:2510
msgid "%1$s %2$s %3$s Category Feed"
msgstr "%1$s %2$s Flux de la catégorie %3$s"
#. translators: 1: blog name, 2: separator(raquo), 3: author name
-#: wp-includes/general-template.php:2518
+#: wp-includes/general-template.php:2514
msgid "%1$s %2$s Posts by %3$s Feed"
msgstr "%1$s %2$s Flux des articles écrits par %3$s"
#. translators: 1: blog name, 2: separator(raquo), 3: search phrase
-#: wp-includes/general-template.php:2520
+#: wp-includes/general-template.php:2516
msgid "%1$s %2$s Search Results for “%3$s” Feed"
msgstr "%1$s %2$s Flux de résultats de la recherche pour "%3$s""
-#: wp-includes/general-template.php:2954
+#: wp-includes/general-template.php:2950
msgid "« Previous"
msgstr "« Précédent"
-#: wp-includes/general-template.php:2955
+#: wp-includes/general-template.php:2951
msgid "Next »"
msgstr "Suivant »"
msgid "Mute"
msgstr "Muet"
-#: wp-includes/media.php:3362
+#: wp-includes/media.php:3390
msgid "Edit Gallery"
msgstr "Modifier la galerie"
msgid "<strong>ERROR</strong>: Invalid username or incorrect password."
msgstr "<strong>ERREUR</strong> : l’identifiant ou le mot de passe n’est pas valide."
-#: wp-includes/pluggable.php:1502 wp-includes/pluggable.php:1645
+#: wp-includes/pluggable.php:1511 wp-includes/pluggable.php:1654
msgid "Delete it: %s"
msgstr "Le supprimer : %s"
-#: wp-includes/pluggable.php:1504 wp-includes/pluggable.php:1646
+#: wp-includes/pluggable.php:1513 wp-includes/pluggable.php:1655
msgid "Spam it: %s"
msgstr "Le marquer comme indésirable : %s"
-#: wp-includes/pluggable.php:1621
+#: wp-includes/pluggable.php:1630
msgid "Trackback excerpt: "
msgstr "Extrait du rétrolien :"
-#: wp-includes/pluggable.php:1629
+#: wp-includes/pluggable.php:1638
msgid "Pingback excerpt: "
msgstr "Extrait du ping :"
-#: wp-includes/pluggable.php:1641
+#: wp-includes/pluggable.php:1650
msgid "Approve it: %s"
msgstr "L'approuver : %s"
-#: wp-includes/pluggable.php:1648
+#: wp-includes/pluggable.php:1657
msgid "Currently %s comment is waiting for approval. Please visit the moderation panel:"
msgid_plural "Currently %s comments are waiting for approval. Please visit the moderation panel:"
msgstr[0] "En ce moment, %s commentaire attend votre approbation. Veuillez vous rendre sur le panneau de modération :"
msgstr[1] "En ce moment, %s commentaires attendent vos approbations. Veuillez vous rendre sur le panneau de modération :"
-#: wp-includes/pluggable.php:1715
+#: wp-includes/pluggable.php:1724
msgid "Password Lost and Changed for user: %s"
msgstr "Mot de passe oublié et changé pour l'utilisateur : %s"
-#: wp-includes/pluggable.php:1719
+#: wp-includes/pluggable.php:1728
msgid "[%s] Password Lost/Changed"
msgstr "[%s] Mot de passe oublié et changé"
-#: wp-includes/pluggable.php:1755 wp-includes/pluggable.php:1779
+#: wp-includes/pluggable.php:1764 wp-includes/pluggable.php:1788
#: wp-login.php:324
msgid "Username: %s"
msgstr "Identifiant : %s"
-#: wp-includes/pluggable.php:1758
+#: wp-includes/pluggable.php:1767
msgid "[%s] New User Registration"
msgstr "[%s] Inscription d'un nouvel utilisateur"
msgid "Saving Draft…"
msgstr "Enregistrement du brouillon…"
-#: wp-includes/taxonomy.php:2928
+#: wp-includes/taxonomy.php:2931
msgid "Invalid Taxonomy"
msgstr "Taxinomie invalide"
-#: wp-includes/taxonomy.php:750 wp-includes/taxonomy.php:3137
-#: wp-includes/taxonomy.php:4322
+#: wp-includes/taxonomy.php:753 wp-includes/taxonomy.php:3140
+#: wp-includes/taxonomy.php:4325
msgid "Empty Term"
msgstr "Pas de terme"
#: wp-includes/class-wp-xmlrpc-server.php:1404
#: wp-includes/class-wp-xmlrpc-server.php:1956
#: wp-includes/class-wp-xmlrpc-server.php:2047
-#: wp-includes/class-wp-xmlrpc-server.php:2118 wp-includes/taxonomy.php:2563
+#: wp-includes/class-wp-xmlrpc-server.php:2118 wp-includes/taxonomy.php:2566
msgid "Invalid term ID"
msgstr "l’ID du terme est invalide"
-#: wp-includes/taxonomy.php:2566 wp-includes/taxonomy.php:3161
+#: wp-includes/taxonomy.php:2569 wp-includes/taxonomy.php:3164
msgid "A name is required for this term"
msgstr "Un nom est requis pour ce terme"
-#: wp-includes/taxonomy.php:2657
+#: wp-includes/taxonomy.php:2660
msgid "Could not insert term into the database"
msgstr "Impossible d’insérer le terme dans la base de données"
-#: wp-includes/taxonomy.php:3221
+#: wp-includes/taxonomy.php:3224
msgid "The slug “%s” is already in use by another term"
msgstr "L’identifiant « %s » est déjà utilisé par un autre terme"
-#: wp-includes/taxonomy.php:4525
+#: wp-includes/taxonomy.php:4528
msgid "Invalid object ID"
msgstr "Identifiant d’objet non valide."
msgid "Entries <abbr title=\"Really Simple Syndication\">RSS</abbr>"
msgstr "Flux <abbr title=\"Really Simple Syndication\">RSS</abbr> des articles"
-#: wp-includes/functions.php:3732
+#: wp-includes/functions.php:3737
msgid "%1$s was called with an argument that is <strong>deprecated</strong> since version %2$s! %3$s"
msgstr "%1$s est appelé avec un argument qui est <strong>déprécié</strong> depuis la version %2$s ! %3$s"
-#: wp-includes/functions.php:4347
+#: wp-includes/functions.php:4352
msgid "Manual Offsets"
msgstr "Décalages manuels"
msgstr "Désolé, cet identifiant existe déjà !"
#. translators: 1: blog name, 2: post title
-#: wp-includes/pluggable.php:1481
+#: wp-includes/pluggable.php:1490
msgid "[%1$s] Pingback: \"%2$s\""
msgstr "[%1$s] Ping : « %2$s »"
-#: wp-includes/pluggable.php:1652
+#: wp-includes/pluggable.php:1661
msgid "[%1$s] Please moderate: \"%2$s\""
msgstr "[%1$s] Demande de modération pour « %2$s »"
msgid "Page IDs, separated by commas."
msgstr "IDs de pages, séparés par une virgule."
-#: wp-includes/functions.php:3734
+#: wp-includes/functions.php:3739
msgid "%1$s was called with an argument that is <strong>deprecated</strong> since version %2$s with no alternative available."
msgstr "%1$s est appelé avec un argument qui est <strong>déprécié</strong> depuis la version %2$s, aucune alternative n’est disponible."
-#: wp-includes/pluggable.php:1500 wp-includes/pluggable.php:1643
+#: wp-includes/pluggable.php:1509 wp-includes/pluggable.php:1652
msgid "Trash it: %s"
msgstr "Le mettre dans la Corbeille : %s"
msgid "Could not open handle for fopen() to %s"
msgstr "Impossible d’ouvrir le gestionnaire de fopen() pour %s"
-#: wp-includes/functions.php:2411 wp-includes/ms-functions.php:1910
+#: wp-includes/functions.php:2416 wp-includes/ms-functions.php:1910
msgid "Please try again."
msgstr "Veuillez réessayer."
msgid "There was a configuration error. Please contact the server administrator."
msgstr "Il y a une erreur de configuration. Veuillez contacter l’administrateur de votre serveur."
-#: wp-includes/functions.php:4944 wp-includes/user.php:206
+#: wp-includes/functions.php:4949 wp-includes/user.php:206
msgid "Please log in again."
msgstr "Veuillez vous reconnecter."
msgid "By: %s"
msgstr "Par : %s"
-#: wp-includes/pluggable.php:1785
+#: wp-includes/pluggable.php:1794
msgid "[%s] Your username and password info"
msgstr "[%s] Votre identifiant et votre mot de passe"
msgstr "Nuage d’étiquettes"
#. translators: 1: blog name, 2: separator(raquo), 3: tag name
-#: wp-includes/general-template.php:2516
+#: wp-includes/general-template.php:2512
msgid "%1$s %2$s %3$s Tag Feed"
msgstr "%1$s %2$s Flux de l’étiquette %3$s"
msgstr "vendredi"
#. translators: 1: blog name, 2: post title
-#: wp-includes/pluggable.php:1471
+#: wp-includes/pluggable.php:1480
msgid "[%1$s] Trackback: \"%2$s\""
msgstr "[%1$s] Rétrolien : « %2$s »"
#. translators: 1: blog name, 2: post title
-#: wp-includes/pluggable.php:1492
+#: wp-includes/pluggable.php:1501
msgid "[%1$s] Comment: \"%2$s\""
msgstr "[%1$s] Commentaire : « %2$s »"
msgid "Select Category"
msgstr "Sélectionner une catégorie"
-#: wp-includes/functions.php:4294
+#: wp-includes/functions.php:4299
msgid "Select a city"
msgstr "Sélectionner une ville"
msgid "Log In"
msgstr "Se connecter"
-#: wp-includes/taxonomy.php:528
+#: wp-includes/taxonomy.php:531
msgid "Edit Category"
msgstr "Modifier la catégorie"
msgid "First Post"
msgstr "Premier article"
-#: wp-includes/class-wp-customize-manager.php:1806
+#: wp-includes/class-wp-customize-manager.php:1808
#: wp-includes/class-wp-xmlrpc-server.php:467
msgid "Site Title"
msgstr "Titre du site"
msgid "(required)"
msgstr "(obligatoire)"
-#: wp-includes/comment-template.php:2102
+#: wp-includes/comment-template.php:2151
#: wp-includes/theme-compat/comments.php:102
msgid "Website"
msgstr "Site web"
#: wp-includes/admin-bar.php:735 wp-includes/class-wp-customize-widgets.php:359
-#: wp-includes/functions.php:3445
+#: wp-includes/functions.php:3450
msgid "Widgets"
msgstr "Widgets"
msgid "Powered by WordPress, state-of-the-art semantic personal publishing platform."
msgstr "Propulsé par WordPress, plate-forme de publication personnelle sémantique de pointe."
-#: wp-includes/comment-template.php:1488
+#: wp-includes/comment-template.php:1500
msgid "Enter your password to view comments."
msgstr "Saisissez votre mot de passe pour accéder aux commentaires."
msgid "Feed for all posts filed under %s"
msgstr "Flux pour tous les articles classés dans %s"
-#: wp-includes/comment-template.php:1571
+#: wp-includes/comment-template.php:1583
msgid "Log in to Reply"
msgstr "Connectez-vous pour répondre"
-#: wp-includes/comment-template.php:1682
+#: wp-includes/comment-template.php:1694
msgid "Leave a Comment"
msgstr "Laisser un commentaire"
-#: wp-includes/comment-template.php:1683
+#: wp-includes/comment-template.php:1695
msgid "Log in to leave a Comment"
msgstr "Connectez-vous pour laisser un commentaire"
-#: wp-includes/comment-template.php:1838 wp-includes/comment-template.php:2130
+#: wp-includes/comment-template.php:1850 wp-includes/comment-template.php:2179
#: wp-includes/theme-compat/comments.php:75
msgid "Leave a Reply"
msgstr "Laisser un commentaire"
-#: wp-includes/comment-template.php:1839 wp-includes/comment-template.php:2131
+#: wp-includes/comment-template.php:1851 wp-includes/comment-template.php:2180
#: wp-includes/theme-compat/comments.php:75
msgid "Leave a Reply to %s"
msgstr "Répondre à %s"
msgid "Valid <abbr title=\"eXtensible HyperText Markup Language\">XHTML</abbr>"
msgstr "<abbr title=\"eXtensible HyperText Markup Language\">XHTML</abbr> valide"
-#: wp-includes/comment-template.php:1751
+#: wp-includes/comment-template.php:1763
msgid "Click here to cancel reply."
msgstr "Cliquez ici pour annuler la réponse."
msgid "<strong>ERROR</strong>: Please enter a username."
msgstr "<strong>ERREUR</strong> : veuillez renseigner l’identifiant."
-#: wp-includes/comment-template.php:2100
+#: wp-includes/comment-template.php:2149
#: wp-includes/theme-compat/comments-popup.php:81 wp-login.php:720
msgid "Email"
msgstr "Adresse de contact"
msgid "Allow people to post comments on new articles"
msgstr "Autoriser les lecteurs à publier des commentaires sur les nouveaux articles"
-#: wp-includes/category-template.php:528 wp-includes/taxonomy.php:537
+#: wp-includes/category-template.php:528 wp-includes/taxonomy.php:540
msgid "No categories"
msgstr "Aucune catégorie"
msgid "Tags: "
msgstr "Étiquettes : "
-#: wp-includes/comment-template.php:2120
+#: wp-includes/comment-template.php:2169
#: wp-includes/theme-compat/comments.php:82
msgid "You must be <a href=\"%s\">logged in</a> to post a comment."
msgstr "Vous devez <a href=\"%s\">être connecté(e)</a> pour rédiger un commentaire."
msgid "Strength indicator"
msgstr "Indicateur de robustesse"
-#: wp-includes/taxonomy.php:533
+#: wp-includes/taxonomy.php:536
msgid "Separate tags with commas"
msgstr "Séparez les étiquettes par des virgules"
#: wp-includes/class-wp-editor.php:1408
#: wp-includes/customize/class-wp-customize-nav-menu-item-control.php:91
#: wp-includes/media-template.php:371 wp-includes/media-template.php:550
-#: wp-includes/media.php:3301
+#: wp-includes/media.php:3329
msgid "URL"
msgstr "Adresse web"
-#: wp-includes/comment-template.php:1041 wp-includes/comment-template.php:2118
+#: wp-includes/comment-template.php:1041 wp-includes/comment-template.php:2167
msgctxt "noun"
msgid "Comment"
msgstr "Commentaire"
msgid "No"
msgstr "Non"
-#: wp-includes/class-wp-customize-manager.php:1948
+#: wp-includes/class-wp-customize-manager.php:1950
#: wp-includes/class-wp-editor.php:988 wp-includes/media-template.php:613
#: wp-includes/media-template.php:844 wp-includes/media-template.php:910
msgid "Left"
msgstr "Gauche"
-#: wp-includes/class-wp-customize-manager.php:1949
+#: wp-includes/class-wp-customize-manager.php:1951
#: wp-includes/class-wp-editor.php:989 wp-includes/media-template.php:616
#: wp-includes/media-template.php:847 wp-includes/media-template.php:913
msgid "Center"
msgstr "Centre"
-#: wp-includes/class-wp-customize-manager.php:1950
+#: wp-includes/class-wp-customize-manager.php:1952
#: wp-includes/class-wp-editor.php:990 wp-includes/media-template.php:619
#: wp-includes/media-template.php:850 wp-includes/media-template.php:916
msgid "Right"
msgid "Undo"
msgstr "Annuler"
-#: wp-includes/class-wp-customize-widgets.php:669 wp-includes/media.php:3344
+#: wp-includes/class-wp-customize-widgets.php:669 wp-includes/media.php:3372
msgid "Apply"
msgstr "Appliquer"
msgid "Edit Link Category"
msgstr "Modifier la catégorie de lien"
-#: wp-includes/taxonomy.php:530
+#: wp-includes/taxonomy.php:533
msgid "Update Category"
msgstr "Mettre à jour la catégorie"
msgid "Advanced"
msgstr "Avancé"
-#: wp-includes/comment-template.php:2098
+#: wp-includes/comment-template.php:2147
#: wp-includes/theme-compat/comments-popup.php:76
#: wp-includes/theme-compat/comments.php:96
msgid "Name"
#: wp-includes/class-wp-xmlrpc-server.php:2034
#: wp-includes/class-wp-xmlrpc-server.php:2105
#: wp-includes/class-wp-xmlrpc-server.php:2163
-#: wp-includes/class-wp-xmlrpc-server.php:2258 wp-includes/taxonomy.php:665
-#: wp-includes/taxonomy.php:754 wp-includes/taxonomy.php:905
-#: wp-includes/taxonomy.php:1078 wp-includes/taxonomy.php:2297
-#: wp-includes/taxonomy.php:2548 wp-includes/taxonomy.php:2791
-#: wp-includes/taxonomy.php:3124
+#: wp-includes/class-wp-xmlrpc-server.php:2258 wp-includes/taxonomy.php:668
+#: wp-includes/taxonomy.php:757 wp-includes/taxonomy.php:908
+#: wp-includes/taxonomy.php:1081 wp-includes/taxonomy.php:2300
+#: wp-includes/taxonomy.php:2551 wp-includes/taxonomy.php:2794
+#: wp-includes/taxonomy.php:3127
msgid "Invalid taxonomy"
msgstr "La taxinomie est invalide"
msgid "Edit Post"
msgstr "Modifier l’article"
-#: wp-includes/taxonomy.php:525
+#: wp-includes/taxonomy.php:528
msgid "All Categories"
msgstr "Toutes"
msgid "RSS"
msgstr "Flux"
-#: wp-includes/functions.php:2026
+#: wp-includes/functions.php:2031
msgid "Invalid file type"
msgstr "Type du fichier non valide"
msgstr "Extensions"
#: wp-includes/class-wp-editor.php:861 wp-includes/class-wp-editor.php:1446
-#: wp-includes/media.php:3305 wp-includes/script-loader.php:390
+#: wp-includes/media.php:3333 wp-includes/script-loader.php:390
#: wp-includes/script-loader.php:438 wp-includes/script-loader.php:507
msgid "Cancel"
msgstr "Annuler"
msgid "No comments yet."
msgstr "Pas encore de commentaire."
-#: wp-includes/comment-template.php:1569 wp-includes/script-loader.php:488
+#: wp-includes/comment-template.php:1581 wp-includes/script-loader.php:488
msgid "Reply"
msgstr "Répondre"
msgid "Sidebar"
msgstr "Colonne latérale"
-#: wp-includes/general-template.php:1389
+#: wp-includes/general-template.php:1385
#: wp-includes/theme-compat/sidebar.php:92
#: wp-includes/widgets/class-wp-widget-archives.php:27
#: wp-includes/widgets/class-wp-widget-archives.php:45
msgstr "Rétablir"
#: wp-includes/media-template.php:687 wp-includes/media-template.php:762
-#: wp-includes/media-template.php:936 wp-includes/media.php:3060
+#: wp-includes/media-template.php:936 wp-includes/media.php:3088
msgid "Thumbnail"
msgstr "Miniature"
msgid "File “%s” is not an image."
msgstr "Le fichier « %s » n’est pas une image."
-#: wp-includes/media.php:3302
+#: wp-includes/media.php:3330
msgid "Add Media"
msgstr "Ajouter un média"
msgstr "Enregistré."
#: wp-includes/media-template.php:688 wp-includes/media-template.php:763
-#: wp-includes/media-template.php:937 wp-includes/media.php:3061
+#: wp-includes/media-template.php:937 wp-includes/media.php:3089
msgid "Medium"
msgstr "Moyenne"
#: wp-includes/media-template.php:690 wp-includes/media-template.php:765
-#: wp-includes/media-template.php:939 wp-includes/media.php:3063
+#: wp-includes/media-template.php:939 wp-includes/media.php:3091
msgid "Full Size"
msgstr "Taille originale"
msgstr "Légende"
#: wp-includes/media-template.php:327 wp-includes/media-template.php:521
-#: wp-includes/media.php:3374
+#: wp-includes/media.php:3402
msgid "Edit Image"
msgstr "Modifier l’image"
msgid "Schedule"
msgstr "Planifier"
-#: wp-includes/media.php:3306 wp-includes/script-loader.php:404
+#: wp-includes/media.php:3334 wp-includes/script-loader.php:404
#: wp-includes/script-loader.php:517
msgid "Update"
msgstr "Mettre à jour"
#: wp-includes/admin-bar.php:809 wp-includes/admin-bar.php:810
-#: wp-includes/class-wp-editor.php:1421 wp-includes/media.php:3303
+#: wp-includes/class-wp-editor.php:1421 wp-includes/media.php:3331
msgid "Search"
msgstr "Recherche"
msgstr "Non classé"
#: wp-includes/class-wp-editor.php:862 wp-includes/class-wp-editor.php:1402
-#: wp-includes/functions.php:4932 wp-includes/script-loader.php:256
+#: wp-includes/functions.php:4937 wp-includes/script-loader.php:256
#: wp-includes/script-loader.php:337 wp-includes/script-loader.php:439
msgid "Close"
msgstr "Fermer"
-#: wp-includes/media.php:3304
+#: wp-includes/media.php:3332
msgid "Select"
msgstr "Sélectionner"
msgid "New Page"
msgstr "Nouvelle page"
-#: wp-includes/media.php:3028 wp-includes/script-loader.php:406
+#: wp-includes/media.php:3056 wp-includes/script-loader.php:406
#: wp-includes/script-loader.php:564
msgid "(no title)"
msgstr "(pas de titre)"
-#: wp-includes/deprecated.php:3082 wp-includes/functions.php:2409
+#: wp-includes/deprecated.php:3082 wp-includes/functions.php:2414
msgid "Are you sure you want to do this?"
msgstr "Voulez-vous vraiment faire cela ?"
msgid "Dismiss"
msgstr "Fermer"
-#: wp-includes/pluggable.php:1487 wp-includes/pluggable.php:1635
-#: wp-includes/pluggable.php:1756
+#: wp-includes/pluggable.php:1496 wp-includes/pluggable.php:1644
+#: wp-includes/pluggable.php:1765
msgid "Email: %s"
msgstr "E-mail : %s"
-#: wp-includes/media.php:3348
+#: wp-includes/media.php:3376
msgid "No media attachments found."
msgstr "Il n’y a pas de fichier média attaché."
-#: wp-includes/taxonomy.php:523
+#: wp-includes/taxonomy.php:526
msgid "Search Categories"
msgstr "Rechercher dans les catégories"
-#: wp-includes/taxonomy.php:528
+#: wp-includes/taxonomy.php:531
msgid "Edit Tag"
msgstr "Modifier l’étiquette"
msgid "Tags"
msgstr "Étiquettes"
-#: wp-includes/taxonomy.php:534
+#: wp-includes/taxonomy.php:537
msgid "Add or remove tags"
msgstr "Ajouter ou retirer des étiquettes"
# This file is distributed under the same license as the Stable (latest release) package.
msgid ""
msgstr ""
-"PO-Revision-Date: 2015-12-14 11:37:27+0000\n"
+"PO-Revision-Date: 2016-01-05 07:31:33+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: GlotPress/1.0-alpha-1100\n"
"Project-Id-Version: Stable (latest release)\n"
+#: views/config.php:30
+msgid "%s missed spam"
+msgid_plural "%s missed spam"
+msgstr[0] "%s indésirable manqué"
+msgstr[1] "%s indésirables manqués"
+
+#: views/config.php:32
+msgid "%s false positive"
+msgid_plural "%s false positives"
+msgstr[0] "%s faux positif"
+msgstr[1] "%s faux positifs"
+
#: views/start.php:59
msgid "Use this option to use Akismet independently of your Jetpack connection."
msgstr "Utilisez cette option pour utiliser Akismet indépendamment de votre connexion à Jetpack."
msgid "Sign up for a plan with a different email address"
msgstr "Inscrivez-vous à un plan avec une adresse de messagerie différente."
-#: views/notice.php:93
+#: views/notice.php:90
msgid "Akismet is now activated. Happy blogging!"
msgstr "Akismet est maintenant activé. Bon blogging !"
msgid "Register for Akismet"
msgstr "Enregistrement pour Akismet"
-#: views/notice.php:59
+#: views/notice.php:56
msgid "Please update your payment information."
msgstr "Merci de mettre à jour vos informations de paiement."
-#: views/notice.php:60
+#: views/notice.php:57
msgid "We cannot process your payment. Please <a href=\"%s\" target=\"_blank\">update your payment details</a>."
msgstr "Nous ne pouvons traiter votre paiement. Merci de <a href=\"%s\" target=\"_blank\">mettre à jour vos détails de paiement</a>."
-#: views/notice.php:64
+#: views/notice.php:61
msgid "Your Akismet plan has been cancelled."
msgstr "Votre plan Akismet a été annulé."
-#: views/notice.php:69
+#: views/notice.php:66
msgid "Your Akismet subscription is suspended."
msgstr "Votre inscription Akismet est suspendue."
-#: views/notice.php:84
+#: views/notice.php:81
msgid "You don’t have an Akismet plan."
msgstr "Vous n’avez pas de plan Akismet."
-#: class.akismet-admin.php:149 class.akismet-admin.php:187
-#: class.akismet-admin.php:200
+#: class.akismet-admin.php:150 class.akismet-admin.php:188
+#: class.akismet-admin.php:201
msgid "Akismet filters out spam, so you can focus on more important things."
msgstr "Akismet filtre les indésirables, vous pouvez donc vous concentrer sur des choses plus importantes."
-#: views/notice.php:14
+#: views/notice.php:11
msgid "<strong>Almost done</strong> - activate Akismet and say goodbye to spam"
msgstr "<strong>C'est presque fini</strong> - activez Akismet et dîtes adieu aux indésirables."
-#: views/notice.php:113
+#: class.akismet-admin.php:893
+msgid "Akismet has saved you %d hour!"
+msgid_plural "Akismet has saved you %d hours!"
+msgstr[0] "Akismet vous a fait gagner %d heure !"
+msgstr[1] "Akismet vous a fait gagner %d heures !"
+
+#: class.akismet-admin.php:895
+msgid "Akismet has saved you %d minute!"
+msgid_plural "Akismet has saved you %d minutes!"
+msgstr[0] "Akismet vous a fait gagner %d minute !"
+msgstr[1] "Akismet vous a fait gagner %d minutes !"
+
+#: class.akismet-admin.php:891
+msgid "Akismet has saved you %s day!"
+msgid_plural "Akismet has saved you %s days!"
+msgstr[0] "Akismet vous a fait gagner %s jour !"
+msgstr[1] "Akismet vous a fait gagner %s jours !"
+
+#: views/notice.php:110
msgid "Your Pro subscription allows the use of Akismet on only one site. Please <a href=\"%s\" target=\"_blank\">purchase additional Pro subscriptions</a> or upgrade to an Enterprise subscription that allows the use of Akismet on unlimited sites."
msgstr "Votre abonnement Pro ne vous permet d'utiliser Akismet que sur un seul site. Veuillez <a href=\"%s\" target=\"_blank\"> acheter des abonnements Pro supplémentaires</a> ou mettez à niveau vers un abonnement Entreprise qui vous permettra d'utiliser Akismet sur un nombre de sites illimité."
-#: views/notice.php:120
+#: views/notice.php:117
msgid "To continue your service, <a href=\"%s\" target=\"_blank\">upgrade to an Enterprise subscription</a>, which covers an unlimited number of sites."
msgstr "Pour continuer votre service <a href=\"%s\" target=\"_blank\">migrez vers un abonnement Entreprise</a>, qui autorise un nombre de sites illimités."
-#: views/notice.php:88 views/notice.php:115 views/notice.php:122
+#: views/notice.php:85 views/notice.php:112 views/notice.php:119
msgid "Please <a href=\"%s\" target=\"_blank\">contact our support team</a> with any questions."
msgstr "Merci de <a href=\"%s\" target=\"_blank\">contacter notre équipe de support</a> si vous avez des questions."
-#: views/notice.php:101
+#: views/notice.php:98
msgid "Your API key is no longer valid. Please enter a new key or contact support@akismet.com."
msgstr "Votre clé API n'est plus valide. Veuillez saisir une nouvelle clé ou nous contacter via support@akismet.com."
+#: views/notice.php:102
+msgid "The API key you entered could not be verified."
+msgstr "La clé API que vous avez saisie n’a pas pu être vérifiée."
+
+#: views/notice.php:103
+msgid "The connection to akismet.com could not be established. Please refer to <a href=\"%s\" target=\"_blank\">our guide about firewalls</a> and check your server configuration."
+msgstr "La connexion avec akismet.com ne peut pas être établie. Merci de vous référer à <a href=\"%s\" target=\"_blank\">notre guide concernant les firewalls</a> et de vérifier la configuration de votre serveur."
+
+#: views/notice.php:83
+msgid "In 2012, Akismet began using subscription plans for all accounts (even free ones). A plan has not been assigned to your account, and we’d appreciate it if you’d <a href=\"%s\" target=\"_blank\">sign into your account</a> and choose one."
+msgstr "En 2012, Akismet a commencé à utiliser des formules d’abonnement pour tous les comptes (même les gratuits). Aucune formule n’a été assignée à votre compte et nous vous serions reconnaissant si vous vous <a href=\"%s\" target=\"_blank\">connectiez-à votre compte</a> et que vous en choisissiez une."
+
#: views/config.php:91
msgid "All systems functional."
msgstr "Tous les systèmes fonctionnent."
msgid "Disabled."
msgstr "Désactivé."
-#: class.akismet-admin.php:558
+#: class.akismet-admin.php:559
msgid "This comment was reported as not spam."
msgstr "Ce commentaire a été rapporté comme acceptable."
msgid "Akismet encountered a problem with a previous SSL request and disabled it temporarily. It will begin using SSL for requests again shortly."
msgstr "Akismet a rencontré un problème avec une requête SSL précédente et l’a désactivée momentanément. Il devrait très rapidement recommencé à utiliser le SSL pour les prochaines requêtes. "
-#: class.akismet-admin.php:550
+#: class.akismet-admin.php:551
msgid "This comment was reported as spam."
msgstr "Ce commentaire a été rapporté comme indésirable."
msgid "http://akismet.com/"
msgstr "http://akismet.com/"
-#: class.akismet-admin.php:792
+#: class.akismet-admin.php:793
msgid "Please check your <a href=\"%s\">Akismet configuration</a> and contact your web host if problems persist."
msgstr "Veuillez vérifier votre <a href=\"%s\">configuration Akismet</a> et contacter votre hébergeur si le problème persiste."
-#: views/notice.php:21
+#: views/notice.php:18
msgid "Some comments have not yet been checked for spam by Akismet. They have been temporarily held for moderation and will automatically be rechecked later."
msgstr "Certains commentaires n'ont pas encore été vérifiés par Akismet. Ils ont été temporairement mis en modération et seront vérifiés automatiquement plus tard."
msgid "Active"
msgstr "Activé"
-#: class.akismet-admin.php:213 views/config.php:110
+#: class.akismet-admin.php:214 views/config.php:110
msgid "Strictness"
msgstr "Sévérité"
-#: class.akismet-admin.php:213
+#: class.akismet-admin.php:214
msgid "Choose to either discard the worst spam automatically or to always put all spam in spam folder."
msgstr "Choisissez d'éliminer directement les indésirables, ou de toujours les mettre dans le dossier Indésirables."
msgid "Always put spam in the Spam folder for review."
msgstr "Toujours mettre les indésirables dans le dossier Indésirables pour vérification."
-#: class.akismet-admin.php:212 views/config.php:101
+#: class.akismet-admin.php:213 views/config.php:101
msgid "Comments"
msgstr "Commentaires"
-#: views/notice.php:30
+#: views/notice.php:27
msgid "Akismet Error Code: %s"
msgstr "Code d’erreur Akismet : %s"
#. translators: the placeholder is a clickable URL that leads to more
#. information regarding an error code.
-#: views/notice.php:35
+#: views/notice.php:32
msgid "For more information: %s"
msgstr "Pour plus d'information : %s"
-#: views/notice.php:27
+#: views/notice.php:24
msgid "Akismet %s requires WordPress 3.0 or higher."
msgstr "Akismet %s nécessite la version 3.0 de WordPress ou supérieure."
-#: views/notice.php:97
+#: views/notice.php:94
msgid "The key you entered is invalid. Please double-check it."
msgstr "Votre clé ne semble pas être valide. Veuillez la vérifier."
-#: views/notice.php:49
+#: views/notice.php:46
msgid "Network functions are disabled."
msgstr "Les fonctionnalités réseau sont désactivées."
-#: views/notice.php:20
+#: views/notice.php:17
msgid "Akismet has detected a problem."
msgstr "Akismet a détecté un problème."
-#: views/notice.php:70 views/notice.php:80
+#: views/notice.php:67 views/notice.php:77
msgid "Please contact <a href=\"%s\" target=\"_blank\">Akismet support</a> for assistance."
msgstr "Veuillez contacter <a href=\"%s\" target=\"_blank\">le service support d'Akismet</a> pour obtenir de l'aide."
-#: views/notice.php:75
+#: views/notice.php:72
msgid "You can help us fight spam and upgrade your account by <a href=\"%s\" target=\"_blank\">contributing a token amount</a>."
msgstr "Vous pouvez nous aider à combattre les messages indésirables et passer à un compte supérieur <a href=\"%s\" target=\"_blank\">avec un montant symbolique</a>."
msgid "Connected via Jetpack"
msgstr "Connecté via Jetpack"
-#: views/start.php:86
-msgid "Manually enter an API key"
-msgstr "Saisissez votre clé d'API à la main"
-
#: views/start.php:72 views/start.php:93
msgid "Use this key"
msgstr "Utiliser cette clé"
msgid "http://automattic.com/wordpress-plugins/"
msgstr "http://automattic.com/wordpress-plugins/"
-#: class.akismet-admin.php:234
+#: class.akismet-admin.php:235
msgid "Akismet Support"
msgstr "Support d'Askimet"
-#: class.akismet-admin.php:303
+#: class.akismet-admin.php:304
msgid "<a href=\"%1$s\">Akismet</a> has protected your site from <a href=\"%2$s\">%3$s spam comment</a>."
msgid_plural "<a href=\"%1$s\">Akismet</a> has protected your site from <a href=\"%2$s\">%3$s spam comments</a>."
msgstr[0] "<a href=\"%1$s\">Akismet</a> a déjà protégé votre site de <a href=\"%2$s\">%3$s commentaire indésirable</a>."
msgstr[1] "<a href=\"%1$s\">Akismet</a> a déjà protégé votre site de <a href=\"%2$s\">%3$s commentaires indésirables</a>."
-#: class.akismet-admin.php:319
+#: class.akismet-admin.php:320
msgid "<a href=\"%s\">Akismet</a> blocks spam from getting to your blog. "
msgstr "<a href=\"%s\">Akismet</a> a bloqué les commentaires indésirables de votre site. "
-#: class.akismet-admin.php:121
+#: class.akismet-admin.php:122
msgid "Remove this URL"
msgstr "Supprimer cette URL"
-#: class.akismet-admin.php:122
+#: class.akismet-admin.php:123
msgid "Removing..."
msgstr "Suppression..."
-#: class.akismet-admin.php:123
+#: class.akismet-admin.php:124
msgid "URL removed"
msgstr "URL supprimée"
-#: class.akismet-admin.php:124
+#: class.akismet-admin.php:125
msgid "(undo)"
msgstr "(annuler)"
-#: class.akismet-admin.php:148 class.akismet-admin.php:159
-#: class.akismet-admin.php:170
+#: class.akismet-admin.php:149 class.akismet-admin.php:160
+#: class.akismet-admin.php:171
msgid "Akismet Setup"
msgstr "Configuration d'Askimet"
-#: class.akismet-admin.php:150
+#: class.akismet-admin.php:151
msgid "On this page, you are able to set up the Akismet plugin."
msgstr "Sur cette page, vous pouvez configurer l’extension Akismet."
-#: class.akismet-admin.php:157
+#: class.akismet-admin.php:158
msgid "New to Akismet"
msgstr "Nouveau avec Akismet"
-#: class.akismet-admin.php:160
+#: class.akismet-admin.php:161
msgid "You need to enter an API key to activate the Akismet service on your site."
msgstr "Vous avez besoin d'une clé API pour activer le service Akismet sur votre site."
-#: class.akismet-admin.php:161
+#: class.akismet-admin.php:162
msgid "Sign up for an account on %s to get an API Key."
msgstr "Créez-vous un compte sur %s pour obtenir une clé API."
-#: class.akismet-admin.php:168
+#: class.akismet-admin.php:169
msgid "Enter an API Key"
msgstr "Saisissez une clé API"
-#: class.akismet-admin.php:171
+#: class.akismet-admin.php:172
msgid "If you already have an API key"
msgstr "Si vous avez déjà une clé API"
-#: class.akismet-admin.php:173
+#: class.akismet-admin.php:174
msgid "Copy and paste the API key into the text field."
msgstr "Copiez et collez la clé API dans le champ de texte."
-#: class.akismet-admin.php:174
+#: class.akismet-admin.php:175
msgid "Click the Use this Key button."
msgstr "Cliquez sur le bouton \"Utilisez cette clé\"."
-#: class.akismet-admin.php:188
+#: class.akismet-admin.php:189
msgid "On this page, you are able to view stats on spam filtered on your site."
msgstr "Sur cette page, vous pouvez voir les statistiques des commentaires indésirables filtrés sur votre site."
-#: class.akismet-admin.php:201
+#: class.akismet-admin.php:202
msgid "On this page, you are able to enter/remove an API key, view account information and view spam stats."
msgstr "Sur cette page, vous pouvez saisir/supprimer une clé API, voir vos informations de compte et voir les statistiques des commentaires indésirables."
-#: class.akismet-admin.php:211 views/config.php:63
+#: class.akismet-admin.php:212 views/config.php:63
msgid "API Key"
msgstr "Clé API"
-#: class.akismet-admin.php:211
+#: class.akismet-admin.php:212
msgid "Enter/remove an API key."
msgstr "Saisir/supprimer une clé API."
msgid "Show the number of approved comments beside each comment author"
msgstr "Montrer le nombre de commentaires approuvés devant chaque auteur de commentaires"
-#: class.akismet-admin.php:212
+#: class.akismet-admin.php:213
msgid "Show the number of approved comments beside each comment author in the comments list page."
msgstr "Montrer le nombre de commentaires approuvés devant chaque auteur de commentaires dans la page listant les commentaires."
-#: class.akismet-admin.php:220 views/config.php:161
+#: class.akismet-admin.php:221 views/config.php:161
msgid "Account"
msgstr "Compte"
-#: class.akismet-admin.php:331
+#: class.akismet-admin.php:332
msgid "There’s nothing in your <a href='%s'>spam queue</a> at the moment."
msgstr "Il n’y a rien dans votre <a href='%s'>file d'attente d'indésirables</a> pour le moment."
-#: class.akismet-admin.php:887
+#: class.akismet-admin.php:888
msgid "Cleaning up spam takes time."
msgstr "Nettoyer les commentaires indésirables prend du temps."
-#: class.akismet.php:1028
+#: class.akismet.php:1037
msgid "Akismet %s requires WordPress %s or higher."
msgstr "Akismet %s requiert WordPress %s ou supérieur."
msgid "Disconnect this account"
msgstr "Déconnecter ce compte"
-#: views/config.php:204
-msgid "Upgrade"
-msgstr "Mise à jour"
-
-#: views/notice.php:11
+#: views/notice.php:8
msgid "Activate your Akismet account"
msgstr "Activez votre compte Akismet"
msgid "Save Changes"
msgstr "Enregistrer les modifications"
-#: class.akismet-admin.php:462
+#: class.akismet-admin.php:463
msgid "Awaiting spam check"
msgstr "En attente de vérification"
msgstr[0] "<strong class=\"count\">%1$s indésirable</strong> bloqué par <strong>Akismet</strong>"
msgstr[1] "<strong class=\"count\">%1$s indésirables</strong> bloqués par <strong>Akismet</strong>"
-#: class.akismet-admin.php:86 class.akismet-admin.php:208
-#: class.akismet-admin.php:608 views/config.php:56 views/stats.php:2
+#: class.akismet-admin.php:86 class.akismet-admin.php:209
+#: class.akismet-admin.php:609 views/config.php:56 views/stats.php:2
msgid "Settings"
msgstr "Réglages"
-#: class.akismet-admin.php:313
+#: class.akismet-admin.php:314
msgid "<a href=\"%1$s\">Akismet</a> has protected your site from %2$s spam comment already. "
msgid_plural "<a href=\"%1$s\">Akismet</a> has protected your site from %2$s spam comments already. "
msgstr[0] "<a href=\"%1$s\">Akismet</a> a déjà protégé votre site de %2$s commentaire indésirable."
msgstr[1] "<a href=\"%1$s\">Akismet</a> a déjà protégé votre site de %2$s commentaires indésirables."
-#: class.akismet-admin.php:466
+#: class.akismet-admin.php:467
msgid "Flagged as spam by Akismet"
msgstr "Marqué comme indésirable par Akismet"
-#: class.akismet-admin.php:486
+#: class.akismet-admin.php:487
msgid "History"
msgstr "Historique"
-#: class.akismet-admin.php:301
+#: class.akismet-admin.php:302
msgctxt "comments"
msgid "Spam"
msgstr "Indésirable"
-#: class.akismet-admin.php:468
+#: class.akismet-admin.php:469
msgid "Cleared by Akismet"
msgstr "Validé par Akismet"
-#: class.akismet-admin.php:502
+#: class.akismet-admin.php:503
msgid "%s approved"
msgid_plural "%s approved"
msgstr[0] "%s approuvé"
msgstr[1] "%s approuvés"
-#: class.akismet-admin.php:562
+#: class.akismet-admin.php:563
msgid "Akismet caught this comment as spam during an automatic retry."
msgstr "Akismet a revérifié ce commentaire et considéré qu’il s’agit d’un indésirable."
-#: class.akismet-admin.php:582
+#: class.akismet-admin.php:583
msgid "Comment status was changed to %s"
msgstr "L’état du commentaire a été changé en %s"
-#: class.akismet-admin.php:565
+#: class.akismet-admin.php:566
msgid "Akismet cleared this comment during an automatic retry."
msgstr "Akismet a validé ce commentaire suite à une revérification automatique."
-#: class.akismet-admin.php:486 class.akismet-admin.php:494
+#: class.akismet-admin.php:487 class.akismet-admin.php:495
msgid "View comment history"
msgstr "Voir l’historique du commentaire"
-#. #-#-#-#-# tmp-akismet.pot (Akismet 3.1.6) #-#-#-#-#
+#. #-#-#-#-# tmp-akismet.pot (Akismet 3.1.7) #-#-#-#-#
#. Plugin Name of the plugin/theme
#: class.akismet-admin.php:93 class.akismet-admin.php:95
-#: class.akismet-admin.php:849 views/config.php:3
+#: class.akismet-admin.php:850 views/config.php:3
msgid "Akismet"
msgstr "Akismet"
-#: class.akismet-admin.php:472
+#: class.akismet-admin.php:473
msgid "Flagged as spam by %s"
msgstr "Marqué comme indésirable par %s"
-#: class.akismet-admin.php:474
+#: class.akismet-admin.php:475
msgid "Un-spammed by %s"
msgstr "Marqué comme légitime par %s"
msgid "Spam Blocked"
msgstr "Indésirable bloqué"
-#: class.akismet-admin.php:232
+#: class.akismet-admin.php:233
msgid "For more information:"
msgstr "Plus d’informations :"
msgid "Title:"
msgstr "Titre :"
-#: class.akismet-admin.php:199 class.akismet-admin.php:210
-#: class.akismet-admin.php:222
+#: class.akismet-admin.php:200 class.akismet-admin.php:211
+#: class.akismet-admin.php:223
msgid "Akismet Configuration"
msgstr "Configuration Akismet"
-#: class.akismet-admin.php:186 views/stats.php:2
+#: class.akismet-admin.php:187 views/stats.php:2
msgid "Akismet Stats"
msgstr "Statistiques Akismet"
-#: class.akismet-admin.php:351
+#: class.akismet-admin.php:352
msgid "Check for Spam"
msgstr "Vérifier les commentaires indésirables"
-#: class.akismet-admin.php:596
+#: class.akismet-admin.php:597
msgid "%s ago"
msgstr "il y a %s"
-#: class.akismet-admin.php:240
+#: class.akismet-admin.php:241
msgid "Cheatin’ uh?"
msgstr "Alors, on triche ?"
-#: class.akismet-admin.php:146 class.akismet-admin.php:184
-#: class.akismet-admin.php:197
+#: class.akismet-admin.php:147 class.akismet-admin.php:185
+#: class.akismet-admin.php:198
msgid "Overview"
msgstr "Vue d’ensemble"
-#: class.akismet-admin.php:224 views/config.php:173
+#: class.akismet-admin.php:225 views/config.php:173
msgid "Status"
msgstr "État"
msgid "Note:"
msgstr "Note :"
-#: class.akismet-admin.php:125
+#: class.akismet-admin.php:126
msgid "Re-adding..."
msgstr "Rajout en cours..."
-#: class.akismet-admin.php:223 views/config.php:166
+#: class.akismet-admin.php:224 views/config.php:166
msgid "Subscription Type"
msgstr "Type d'abonnement "
-#: class.akismet-admin.php:223
+#: class.akismet-admin.php:224
msgid "The Akismet subscription plan"
msgstr "Les abonnements d'Akismet"
-#: class.akismet-admin.php:224
+#: class.akismet-admin.php:225
msgid "The subscription status - active, cancelled or suspended"
msgstr "L'état de l'abonnement - actif, annulé ou suspendu"
-#: class.akismet-admin.php:233
+#: class.akismet-admin.php:234
msgid "Akismet FAQ"
msgstr "FAQ d'Askimet"
-#: class.akismet.php:1028 views/notice.php:27
+#: class.akismet.php:1037 views/notice.php:24
msgid "Please <a href=\"%1$s\">upgrade WordPress</a> to a current version, or <a href=\"%2$s\">downgrade to version 2.4 of the Akismet plugin</a>."
msgstr "Veuillez passer à la <a href=\"%1$s\">dernière version de WordPress</a> ou <a href=\"%2$s\">revenir à la version 2.4 de l'extension Akismet</a>."
msgid "Next Billing Date"
msgstr "Prochaine date de facturation"
-#: class.akismet-admin.php:325
+#: class.akismet-admin.php:326
msgid "There’s <a href=\"%2$s\">%1$s comment</a> in your spam queue right now."
msgid_plural "There are <a href=\"%2$s\">%1$s comments</a> in your spam queue right now."
msgstr[0] "Il y a actuellement <a href=\"%2$s\">%1$s commentaire</a> dans votre file d'indésirables."
msgstr[1] "Il y a actuellement <a href=\"%2$s\">%1$s commentaires</a> dans votre file d'indésirables."
-#: views/notice.php:111
+#: views/notice.php:108
msgid "You’re using your Akismet key on more sites than your Pro subscription allows."
msgstr "Vous utilisez votre clé Askismet sur plus de sites que votre abonnement Pro n'en autorise."
-#: class.akismet-admin.php:574
+#: class.akismet-admin.php:575
msgid "Akismet was unable to recheck this comment (response: %s)."
msgstr "Akismet a été incapable de revérifier ce commentaire (réponse : %s)."
-#: class.akismet-admin.php:588
+#: class.akismet-admin.php:589
msgid "%1$s changed the comment status to %2$s."
msgstr "%1$s a changé l’état du commentaire en %2$s."
-#: class.akismet-admin.php:569
+#: class.akismet-admin.php:570
msgid "Akismet was unable to check this comment (response: %s) but will automatically retry later."
msgstr "Akismet a été incapable de revérifier ce commentaire (réponse : %s) mais réessayera automatiquement plus tard."
-#: class.akismet-admin.php:555
+#: class.akismet-admin.php:556
msgid "%s reported this comment as not spam."
msgstr "%s a rapporté ce commentaire comme acceptable."
-#: class.akismet-admin.php:547
+#: class.akismet-admin.php:548
msgid "%s reported this comment as spam."
msgstr "%s a rapporté ce commentaire comme indédirable."
-#: class.akismet-admin.php:540
+#: class.akismet-admin.php:541
msgid "Akismet cleared this comment."
msgstr "Akismet a effacé de commentaire."
-#: class.akismet-admin.php:543
+#: class.akismet-admin.php:544
msgid "Comment was caught by wp_blacklist_check."
msgstr "Commentaire capté par wp_blacklist_check."
-#: class.akismet-admin.php:531
+#: class.akismet-admin.php:532
msgid "Akismet re-checked and caught this comment as spam."
msgstr "Akismet a revérifié et marqué ce commentaire comme indésirable."
-#: class.akismet-admin.php:534
+#: class.akismet-admin.php:535
msgid "Akismet caught this comment as spam."
msgstr "Akismet a marqué ce commentaire comme indésirable."
-#: class.akismet-admin.php:537
+#: class.akismet-admin.php:538
msgid "Akismet re-checked and cleared this comment."
msgstr "Akismet a revérifié et effacé ce commentaire."
-#: views/notice.php:118
+#: views/notice.php:115
msgid "You’re using Akismet on far too many sites for your Pro subscription."
msgstr "Vous utilisez Akismet sur bien trop de sites pour votre abonnement Pro."
+#. Description of the plugin/theme
+msgid "Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from spam</strong>. It keeps your site protected even while you sleep. To get started: 1) Click the \"Activate\" link to the left of this description, 2) <a href=\"http://akismet.com/get/\">Sign up for an Akismet plan</a> to get an API key, and 3) Go to your Akismet configuration page, and save your API key."
+msgstr "Utilisé par des millions de sites, Akismet est très probablement la meilleure méthode au monde pour <strong>protéger votre blog contre les commentaires et les rétroliens abusifs</strong>. Il maintient votre site protégé contre le spam, même pendant votre sommeil. Pour vous lancer : 1) Cliquez sur le lien « Activer » à gauche de cette description, 2) <a href=\"http://akismet.com/get/\">Inscrivez-vous pour récupérer votre clé d’API Akismet</a>, 3) Accédez à la page de configuration Akismet de votre blog, et renseignez votre clé d’API."
+
+#: views/config.php:204
+msgid "Upgrade"
+msgstr "Mettre à jour"
+
+#: views/notice.php:47
+msgid "Your web host or server administrator has disabled PHP’s <code>gethostbynamel</code> function. <strong>Akismet cannot work correctly until this is fixed.</strong> Please contact your web host or firewall administrator and give them <a href=\"%s\" target=\"_blank\">this information about Akismet’s system requirements</a>."
+msgstr "Votre hébergeur web ou administrateur de serveur a désactivé les fonctions <code>gethostbynamel</code> de PHP. <strong>Akismet ne peut pas fonctionner correctement tant qu’elles ne seront pas réactivées</strong>. Veuillez contacter votre hébergeur web ou l’administrateur de votre pare-feu et lui donner <a href=\"%s\" target=\"_blank\">ces informations à propos des prérequis systèmes d’Akismet</a>."
+
+#: views/notice.php:51
+msgid "Akismet can’t connect to your site."
+msgstr "Akismet ne peut se connecter à votre site."
+
+#: views/notice.php:52
+msgid "Your firewall may be blocking Akismet. Please contact your host and refer to <a href=\"%s\" target=\"_blank\">our guide about firewalls</a>."
+msgstr "Votre pare-feu peut être en train de nous bloquer. Veuillez contacter votre hébergeur et indiquez-lui notre <a href=\"%s\" target=\"_blank\">guide pour les pares-feu</a> (en anglais)."
+
+#: views/notice.php:62
+msgid "Please visit your <a href=\"%s\" target=\"_blank\">Akismet account page</a> to reactivate your subscription."
+msgstr "Veuillez vous rendre sur <a href=\"%s\" target=\"_blank\">la page de votre compte Akismet</a> pour réactiver votre abonnement."
+
+#: views/notice.php:76
+msgid "There is a problem with your API key."
+msgstr "Il y a un problème avec votre clé API."
+
+#: views/start.php:38
+msgid "No worries! Get in touch and we’ll sort this out."
+msgstr "Pas de crainte à avoir ! Contactez-nous et nous arrangerons les choses."
+
+#: views/start.php:86
+msgid "Manually enter an API key"
+msgstr "Saisissez votre clé d’API manuellement"
+
#: class.akismet-admin.php:70
msgid "Comment History"
msgstr "Voir l’historique du commentaire"
# This file is distributed under the same license as the Stable (latest release) package.
msgid ""
msgstr ""
-"PO-Revision-Date: 2015-11-19 09:23:43+0000\n"
+"PO-Revision-Date: 2016-02-19 15:30:23+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: GlotPress/1.0-alpha-1100\n"
"Project-Id-Version: Stable (latest release)\n"
+#. translators: %1$s expands to OnPage.org
+#: admin/pages/dashboard.php:251
+msgid "Enable %1$s indexability check"
+msgstr "Activer la vérification d’indexabilité de %1$s"
+
#. translators: 1: opens a link to a related knowledge base article. 2: closes
#. the link
#: admin/views/dashboard-widget.php:83
msgid "Yoast SEO has %1$snot fetched your site’s indexability status%2$s yet from OnPage.org"
-msgstr "Yoast SEO n'a pas encore pu %1$srécupérer l'état d'indexibilité de votre site%2$s sur OnPage.org."
-
-#: admin/views/dashboard-widget.php:58
-msgid "Your homepage can be indexed by search engines."
-msgstr "Votre page d’accueil peut être indexée par les moteurs de recherche."
+msgstr "Yoast SEO %1$sn’a pas encore récupéré l’état d’indexabilité de votre site%2$s depuis OnPage.org"
#. translators: %s$s expands to the taxonomy name and %2$s to the current index
#. value
msgid "If you want to use an image for sharing on %1$s, you can upload / choose an image or add the image URL here."
msgstr "Si vous souhaitez utiliser une image pour partager sur %1$s, vous pouvez télécharger / choisir une image ou ajouter son url ici."
-#. translators: %1$s expands to the social network name
-#: admin/taxonomy/class-taxonomy-social-fields.php:54
-msgid "If you don't want to use the meta description for sharing on %1$s but want another description there, write it here."
-msgstr "Si vous ne voulez pas utiliser la méta description pour le partage de l'article sur %1$s, mais plutôt une autre description, écrivez-la ici."
-
#. translators: %1$s expands to the social network name
#: admin/taxonomy/class-taxonomy-social-fields.php:46
msgid "If you don't want to use the title for sharing on %1$s but instead want another title there, write it here."
msgid "Strip the category base (usually %s) from the category URL."
msgstr "Retire la base de la catégorie (généralement %s) de l’URL de la catégorie."
-#: admin/views/dashboard-widget.php:93
-msgid "Fetch the current status"
-msgstr "Récupérer le statut actuel"
-
#: inc/class-wpseo-rank.php:102
msgid "No index"
msgstr "No index"
msgid "The separator defined in your theme's %s tag."
msgstr "Le séparateur défini dans la balise %s de votre thème."
-#. translators: 1: expands to OnPage.org
-#: admin/views/dashboard-widget.php:45
-msgid "Indexability check by %1$s"
-msgstr "Indexibilité vérifiée par %1$s"
-
#. translators: %1$s expands to the taxonomy name
#: admin/taxonomy/class-taxonomy-settings-fields.php:65
msgid "Include %1$s in sitemap?"
#. the link
#: admin/views/dashboard-widget.php:74
msgid "Yoast SEO has %1$snot been able to fetch your site’s indexability status%2$s from OnPage.org"
-msgstr "Yoast SEO %1$sn'a pas pu récupérer l'état de l'indexibilité de votre site%2$s depuis onPage.org."
+msgstr "Yoast SEO %1$sn’a pas pu récupérer l’état d’indexibilité de votre site%2$s depuis onPage.org."
-#: admin/onpage/class-onpage.php:54
-msgid "Once Weekly"
-msgstr "Une fois par semaine"
+#. translators: 1: expands to OnPage.org
+#: admin/views/dashboard-widget.php:45
+msgid "Indexability check by %1$s"
+msgstr "Indexibilité vérifiée par %1$s"
-#. translators: 1: expands to get_option( 'home' ).
-#: admin/onpage/class-onpage-email-presenter.php:103
-msgid "Yoast SEO has detected that %1$s can be indexed."
-msgstr "Yoast SEO a détecté que %1$s peut être indexé."
+#: admin/views/dashboard-widget.php:58
+msgid "Your homepage can be indexed by search engines."
+msgstr "Votre page d’accueil peut être indexée par les moteurs de recherche."
-#. translators: 1: expands to get_option( 'home' ).
-#: admin/onpage/class-onpage-email-presenter.php:79
-msgid "Yoast SEO has detected that %1$s can be indexed again."
-msgstr "Yoast SEO a détecté que %1$s peut à nouveau être indexé."
+#: admin/views/dashboard-widget.php:93
+msgid "Fetch the current status"
+msgstr "Récupérer l’état actuel"
-#. translators: 1: expands to get_option( 'home' ). 2: opens a link to a
-#. related knowledge base article. 3: closes the link
-#: admin/onpage/class-onpage-email-presenter.php:72
-msgid "Yoast SEO has detected that %1$s can no longer be indexed. Please note that this will make it impossible for search engines like Google and Bing to index your site. %2$sRead more about this error on our knowledge base%3$s."
-msgstr "Yoast SEO a détecté que %1$s ne pouvait plus être indexé. Veuillez noter qd’il sera impossible pour les moteurs de recherche comme Google et Bing d'indexer votre site. %2$sEn savoir plus sur cette erreur dans notre base de connaissances%3$s."
+#. translators: %1$s expands to the social network name
+#: admin/taxonomy/class-taxonomy-social-fields.php:54
+msgid "If you don't want to use the meta description for sharing on %1$s but want another description there, write it here."
+msgstr "Si vous ne voulez pas utiliser la méta description pour le partage de l’article sur %1$s, mais plutôt une autre description, écrivez-la ici."
-#. translators: 1: expands to get_option( 'home' ). 2: opens a link to a
-#. related knowledge base article. 3: closes the link
-#: admin/onpage/class-onpage-email-presenter.php:96
-msgid "Yoast SEO has detected that %1$s can not be indexed. Please note that this will make it impossible for search engines like Google and Bing to index your site. %2$sRead more about this error on our knowledge base%3$s."
-msgstr "Yoast SEO a détecté que %1$s ne peut pas être indexé. Veuillez noter qu'il sera impossible pour les moteurs de recherche comme Google ou Bing d'indexer votre site. %2$sLire plus au sujet de cette erreur dans notre base de connaissances%3$s."
+#: admin/onpage/class-onpage.php:56
+msgid "Once Weekly"
+msgstr "Une fois par semaine"
#: admin/pages/tools.php:43
msgid "Recalculate SEO scores for all pieces of content with a focus keyword."
msgid "Facebook / Opengraph metadata"
msgstr "métadonnées Facebook / Opengraph"
-#. translators: 1: opens a link to yoast.com. 2: closes the link 3: opens a
-#. link to onpage.org
-#: admin/onpage/class-onpage-email-presenter.php:54
-msgid "Indexing powered by %1$sYoast%2$s and %3$sOnPage.org%2$s."
-msgstr "Indexation propulsée par %1$sYoast%2$s et %3$sOnPage.org%2$s."
-
-#. translators: 1: expands to get_option( 'home' ).
-#: admin/onpage/class-onpage-email-presenter.php:147
-msgid "Yoast SEO alert fixed: Search engines can index %1$s."
-msgstr "Fin d'alerte Yoast SEO : les moteurs de recherche peuvent indexer %1$s."
-
-#. translators: 1: expands to get_option( 'home' ).
-#: admin/onpage/class-onpage-email-presenter.php:125
-msgid "Yoast SEO alert fixed: Search engines can index %1$s again."
-msgstr "Fin d'alerte Yoast SEO : les moteurs de recherche peuvent à nouveau indexer %1$s."
-
-#. translators: 1: expands to get_option( 'home' ).
-#: admin/onpage/class-onpage-email-presenter.php:120
-msgid "Yoast SEO alert: Search engines can no longer index %1$s!"
-msgstr "Alerte Yoast SEO : les moteurs de recherche ne peuvent plus indexer %1$s !"
-
-#. translators: 1: expands to get_option( 'home' ).
-#: admin/onpage/class-onpage-email-presenter.php:142
-msgid "Yoast SEO alert: Search engines cannot index %1$s!"
-msgstr "Alerte Yoast SEO : les moteurs de recherche ne peuvent pas indexer %1$s !"
-
-#: admin/metabox/class-metabox.php:447 admin/metabox/class-metabox.php:448
+#: admin/metabox/class-metabox.php:448 admin/metabox/class-metabox.php:449
msgid "Add-ons"
msgstr "Add-ons"
#. translators: 1: opens a link to a related knowledge base article. 2: closes
#. the link
-#: admin/onpage/class-onpage.php:97 admin/views/dashboard-widget.php:65
+#: admin/onpage/class-onpage.php:99 admin/views/dashboard-widget.php:65
msgid "%1$sYour homepage cannot be indexed by search engines%2$s. This is very bad for SEO and should be fixed."
-msgstr "%1$sVotre page d'accueil ne peut pas être indexée par les moteurs de recherche%2$s. C'est très mauvais pour le SEO et doit être résolu."
+msgstr "%1$sVotre page d’accueil ne peut pas être indexée par les moteurs de recherche%2$s. C’est très mauvais pour le SEO et doit être résolu."
-#: admin/metabox/class-metabox.php:387 admin/metabox/class-metabox.php:390
-#: admin/metabox/class-metabox.php:401 admin/metabox/class-metabox.php:402
+#: admin/metabox/class-metabox.php:388 admin/metabox/class-metabox.php:391
+#: admin/metabox/class-metabox.php:402 admin/metabox/class-metabox.php:403
#: admin/taxonomy/class-taxonomy-metabox.php:99
#: admin/taxonomy/class-taxonomy-metabox.php:102
#: admin/taxonomy/class-taxonomy-metabox.php:111
msgid "SEO score"
msgstr "Score SEO"
-#: admin/class-recalculate-scores.php:46
-msgid "Recalculating SEO scores for all pieces of content with a focus keyword."
-msgstr "Recalcule des scores SEO pour tous les contenus avec un mot-clé."
-
#. Translators: %1$s: expands to 'Yoast SEO Premium', %2$s: links to Yoast SEO
#. Premium plugin page.
#: admin/metabox/class-metabox-add-keyword-tab.php:34
#. translators: 1: is a link to 'admin_url /
#. admin.php?page=wpseo_tools&recalculate=1' 2: closing link tag
-#: admin/class-admin-init.php:186
+#: admin/class-admin-init.php:191
msgid "We've updated our SEO score algorithm. %1$sClick here to recalculate the SEO scores%2$s for all posts and pages."
msgstr "Nous avons mis à jour l’algorithme de calcul de nos scores SEO. %1$sCliquez ici pour les recalculer%2$s pour l’ensemble de vos articles et pages."
msgid "Snippet Editor"
msgstr "Éditeur de snippet"
-#: admin/metabox/class-metabox.php:54
-#: admin/taxonomy/class-taxonomy-content-fields.php:29
-msgid "This is the content analysis, a collection of content checks that analyze the content of your page. Read %sthis post%s for more info."
-msgstr "Ceci est l’analyse du contenu, un ensemble de vérifications sur celui-ci pour analyser son contenu. Référez-vous à %scet article%s pour plus d'informations."
-
#: admin/metabox/class-metabox.php:53
#: admin/taxonomy/class-taxonomy-content-fields.php:28
msgid "Content Analysis"
msgid "Buy %s »"
msgstr "Achetez %s »"
-#: admin/class-admin-init.php:372
+#: admin/class-admin-init.php:377
msgid "%s filter/action"
msgstr "%s filtre/action"
msgid "%1$s of %2$s done."
msgstr "%1$s de %2$s effectué."
-#: inc/options/class-wpseo-option-xml.php:166
-msgid "\"Max entries per sitemap page\" should be a positive number, which %s is not. Please correct."
-msgstr "\"Entrées maximum par page du sitemap\" doit être un nombre positif, %s ne l'est pas. Veuillez corriger."
+#: admin/class-recalculate-scores.php:46
+msgid "Recalculating SEO scores for all pieces of content with a focus keyword."
+msgstr "Recalcule en cours des scores SEO pour tous les contenus avec un mot-clé."
-#. translators: %1$s expands to the option name and %2$sexpands to Yoast SEO
-#: inc/options/class-wpseo-option-ms.php:153
-msgid "%1$s is not a valid choice for who should be allowed access to the %2$s settings. Value reset to the default."
-msgstr "%1$s n'est pas un choix valide pour ceux qui devraient être autorisés d'accéder aux réglages de %2$s. La valeur par défaut a été remise."
+#: admin/metabox/class-metabox.php:54
+#: admin/taxonomy/class-taxonomy-content-fields.php:29
+msgid "This is the content analysis, a collection of content checks that analyze the content of your page. Read %sthis post%s for more info."
+msgstr "Ceci est l’analyse du contenu, un ensemble de vérifications sur celui-ci pour analyser son contenu. Référez-vous à %scet article%s pour plus d’informations."
#: inc/options/class-wpseo-option-titles.php:212
msgid "%s Archive"
msgid "%s failed to check for updates because of the following error: <em>%s</em>"
msgstr "Erreur de mise à jour pour %s en raison des erreurs suivantes:<em>%s</em>"
-#: vendor/yoast/license-manager/class-plugin-license-manager.php:75
-msgid "%s is network activated, please contact your site administrator to manage the license."
-msgstr "%s nécessite une activation réseau, veuillez contacter l'administrateur de votre site pour gérer la licence."
-
-#: vendor/yoast/license-manager/class-plugin-license-manager.php:73
-msgid "%s is network activated, you can manage your license in the <a href=\"%s\">network admin license page</a>."
-msgstr "%s est activé sur tout le réseau, vous pouvez gérer votre licence sur la <a href=\"%s\">Page du réseau d'administration des licences</a>."
-
-#: inc/options/class-wpseo-option-titles.php:178
-msgid "%s, Author at %s"
-msgstr "%s, Auteur à %s"
-
#: vendor/yoast/license-manager/class-license-manager.php:430
msgid "%s: License Settings"
msgstr "%s : Réglages de la licence"
msgid "%sRenew your license now%s."
msgstr "%sRenouveler votre licence maintenant%s."
-#: vendor/yoast/license-manager/views/form.php:46
-msgid "(deactivate your license so you can activate it on another WordPress site)"
-msgstr "(désactivez votre licence pour pouvoir l'activer sur un autre site WordPress)"
-
#: vendor/yoast/license-manager/class-license-manager.php:190
msgid "<a href=\"%s\">Did you know you can upgrade your license?</a>"
msgstr "<a href=\"%s\">Saviez-vous que vous pouvez mettre à jour votre licence ?</a>"
msgid "<a href=\"%s\">Your license is expiring in %d days, would you like to extend it?</a>"
msgstr "<a href=\"%s\">Votre licence expire dans %d jours, voulez vous une extension pour votre licence ?</a>"
-#: vendor/yoast/license-manager/class-license-manager.php:138
-msgid "<b>Warning!</b> You're blocking external requests which means you won't be able to get %s updates. Please add %s to %s."
-msgstr "<b>Attention !</b> Vous bloquez des requêtes externes, ce qui signifie que vous ne serez pas en mesure d'obtenir les mises à jour de %s. Merci d'ajouter %s à %s."
-
#: vendor/yoast/license-manager/class-theme-update-manager.php:101
msgid "<strong>%s version %s</strong> is available. <a href=\"%s\" class=\"thickbox\" title=\"%s\">Check out what's new</a> or <a href=\"%s\" %s>update now</a>."
msgstr "<strong>%s la version de %s</strong> est disponible. <a href=\"%s\" class=\"thickbox\" title=\"%s\"> Découvrez les nouveautés </a> ou <a href=\"%s\" %s> mettez à jour maintenant </a>."
msgid "Activate License"
msgstr "Activer la licence"
-#: wp-seo-main.php:439
-msgid "Activation failed:"
-msgstr "Échec de l'activation :"
-
#: inc/wpseo-non-ajax-functions.php:269
msgid "AdWords External"
msgstr "AdWords External"
msgid "Facebook Debugger"
msgstr "Facebook Debugger"
-#: vendor/yoast/license-manager/class-license-manager.php:209
-msgid "Failed to activate your license, your license key seems to be invalid."
-msgstr "Impossible d'activer votre licence, votre clé de licence semble invalide."
-
#: vendor/yoast/license-manager/class-license-manager.php:235
msgid "Failed to deactivate your %s license."
msgstr "Impossible de désactiver votre licence %s."
msgid "Pinterest Rich Pins Validator"
msgstr "Validateur de Rich Pins Pinterest"
-#: vendor/yoast/license-manager/views/form.php:52
-msgid "Please enter a license key in the field below first."
-msgstr "Veuillez d'abord saisir une clé de licence dans le champ ci-dessous."
-
-#: inc/options/class-wpseo-option-internallinks.php:204
-msgid "Please select a valid post type for taxonomy \"%s\""
-msgstr "Veuillez choisir un type de contenu valide pour la taxonomie \"%s\""
-
-#: inc/options/class-wpseo-option-internallinks.php:165
-msgid "Please select a valid taxonomy for post type \"%s\""
-msgstr "Veuillez choisir une taxonomie valide pour le type de contenu \"%s\""
-
-#: vendor/yoast/i18n-module/i18n-module.php:199
-msgid "Register now »"
-msgstr "S'enregistrer maintenant »"
-
#: vendor/yoast/license-manager/class-license-manager.php:271
msgid "Request error: \"%s\" (%scommon license notices%s)"
msgstr "Erreur dans la requête :\"%s\" (%scommon notices%s de licence)"
msgid "Summary with large image"
msgstr "Résumé avec grande image"
-#. Author of the plugin/theme
-msgid "Team Yoast"
-msgstr "L'équipe Yoast"
-
-#. translators: %1$s expands to Yoast SEO, %2$s / %3$s: links to the
-#. installation manual in the Readme for the Yoast SEO code repository on
-#. GitHub
-#: wp-seo-main.php:405
-msgid "The %1$s plugin installation is incomplete. Please refer to %2$sinstallation instructions%3$s."
-msgstr "L'installation de l'extension %1$s est incomplète. Veuillez vous référer %2$saux informations d'installation%3$s."
-
#: wp-seo-main.php:383
msgid "The Standard PHP Library (SPL) extension seem to be unavailable. Please ask your web host to enable it."
msgstr "Les extensions de la Librairie Standard PHP (SPL) semblent ne pas être disponibles.Demandez à votre hébergeur de les activer."
-#: inc/options/class-wpseo-option-ms.php:173
-#: inc/options/class-wpseo-option-ms.php:183
-msgid "The default blog setting must be the numeric blog id of the blog you want to use as default."
-msgstr "Le réglage par défaut du blog doit être l'identifiant numérique du blog que vous souhaitez utiliser par défaut."
-
-#: wp-seo-main.php:429
-msgid "The filter extension seem to be unavailable. Please ask your web host to enable it."
-msgstr "L'extension \"filter\" semble indisponible. Veuillez demander à votre hébergeur de l'activer."
-
-#. Description of the plugin/theme
-msgid "The first true all-in-one SEO solution for WordPress, including on-page content analysis, XML sitemaps and much more."
-msgstr "La première solution SEO tout-en-un pour WordPress, y compris l'analyse des pages de contenu, les sitemaps XML et bien plus encore."
-
-#: admin/import/class-import-aioseo-hooks.php:28
-msgid "The plugin All-In-One-SEO has been detected. Do you want to %simport its settings%s?"
-msgstr "L'extension All-In-One-SEO a été détectée. Voulez-vous %simporter ses réglages%s ?"
-
#: admin/import/class-import-robots-meta-hooks.php:28
msgid "The plugin Robots-Meta has been detected. Do you want to %simport its settings%s."
msgstr "Le plugin Robots-Meta a été détecté. Voulez-vous %simporter sa configuration%s."
msgid "Theme License"
msgstr "Licence du thème"
-#: inc/options/class-wpseo-option-ms.php:173
-msgid "This must be an existing blog. Blog %s does not exist or has been marked as deleted."
-msgstr "Blog inexistant. Le blog %s n'existe pas ou a été marqué comme étant supprimé."
-
-#: vendor/yoast/license-manager/class-update-manager.php:153
-msgid "This site has not been activated properly on yoast.com and thus cannot check for future updates. Please activate your site with a valid license key."
-msgstr "Ce site n'a pas été activé correctement sur yoast.com et donc ne peut donc vérifier les futures mises à jour. Merci d'activer votre site avec une licence valide"
-
-#: vendor/yoast/license-manager/views/form.php:41
-msgid "Toggle license status"
-msgstr "Changer l'état de la licence"
-
#: vendor/yoast/i18n-module/i18n-module.php:194
msgid "Translation of %s"
msgstr "Traduction de %s"
msgid "Updating this theme will lose any customizations you have made. 'Cancel' to stop, 'OK' to update."
msgstr "La mise à jour du thème supprimera toutes les personalisations que vous avez faites. \"Abandonner\" pour arrêter, \"OK\" pour mettre à jour."
-#: vendor/yoast/license-manager/views/form.php:15
-msgid "We couldn't create a connection to our API to verify your license key(s). Please ask your hosting company to allow outgoing connections from your server to %s."
-msgstr "Nous n'arrivons pas à créer de connexion avec notre API pour vérifier votre clé de licence. Veuillez demander à votre hébergeur d'autoriser les connexions sortantes de votre serveur vers %s."
-
#. Plugin Name of the plugin/theme
msgid "Yoast SEO"
msgstr "Yoast SEO"
msgid "You searched for %s"
msgstr "Vous avez cherché %s"
-#: vendor/yoast/i18n-module/i18n-module.php:172
-msgid "You're using WordPress in %1$s. While %2$s has been translated to %1$s for %3$d%%, it's not been shipped with the plugin yet. You can help! Register at %4$s to help complete the translation to %1$s!"
-msgstr "Vous utilisez WordPress en %1$s. Alors que %2$s a été traduit en %1$s à %3$d%%, elle n'est donc pas encore disponible dans l'extension. Vous pouvez nous aider ! Enregistrez-vous sur %4$s pour nous aider à terminer la traduction à %1$s !"
-
-#: vendor/yoast/i18n-module/i18n-module.php:174
-msgid "You're using WordPress in a language we don't support yet. We'd love for %2$s to be translated in that language too, but unfortunately, it isn't right now. You can change that! Register at %4$s to help translate it!"
-msgstr "Vous utilisez WordPress dans une langue que nous ne supportons pas encore. Nous aimerions beaucoup que %2$s soit traduit dans cette langue, mais malheureusement ce n'est pas le cas. Vous pouvez changer cet état de fait ! Enregistrez-vous sur %4$s pour nous aider à traduire ! "
-
-#: vendor/yoast/license-manager/class-license-manager.php:203
-msgid "You've reached your activation limit. You must <a href=\"%s\">upgrade your license</a> to use it on this site."
-msgstr "Vous avez atteint votre limite d'activation. Vous devez <a href=\"%s\">mettre à jour votre licence</a> pour l'utiliser sur ce site."
-
#: vendor/yoast/license-manager/class-license-manager.php:179
msgid "Your %s license has been activated. "
msgstr "Votre licence %s a été activée."
msgid "https://yoast.com/wordpress/plugins/seo/#utm_source=wpadmin&utm_medium=plugin&utm_campaign=wpseoplugin"
msgstr "https://yoast.com/wordpress/plugins/seo/#utm_source=wpadmin&utm_medium=plugin&utm_campaign=wpseoplugin"
+#. translators: %1$s expands to Yoast SEO, %2$s / %3$s: links to the
+#. installation manual in the Readme for the Yoast SEO code repository on
+#. GitHub
+#: wp-seo-main.php:405
+msgid "The %1$s plugin installation is incomplete. Please refer to %2$sinstallation instructions%3$s."
+msgstr "L’installation de l’extension %1$s est incomplète. Veuillez vous référer %2$saux informations d’installation%3$s."
+
+#: vendor/yoast/license-manager/views/form.php:15
+msgid "We couldn't create a connection to our API to verify your license key(s). Please ask your hosting company to allow outgoing connections from your server to %s."
+msgstr "Nous n’arrivons pas à créer de connexion avec notre API pour vérifier votre clé de licence. Veuillez demander à votre hébergeur d’autoriser les connexions sortantes de votre serveur vers %s."
+
+#: wp-seo-main.php:439
+msgid "Activation failed:"
+msgstr "Échec de l’activation :"
+
+#: wp-seo-main.php:429
+msgid "The filter extension seem to be unavailable. Please ask your web host to enable it."
+msgstr "L’extension \"filter\" semble indisponible. Veuillez demander à votre hébergeur de l’activer."
+
+#: admin/import/class-import-aioseo-hooks.php:28
+msgid "The plugin All-In-One-SEO has been detected. Do you want to %simport its settings%s?"
+msgstr "L’extension All-In-One-SEO a été détectée. Voulez-vous %simporter ses réglages%s ?"
+
+#: vendor/yoast/i18n-module/i18n-module.php:172
+msgid "You're using WordPress in %1$s. While %2$s has been translated to %1$s for %3$d%%, it's not been shipped with the plugin yet. You can help! Register at %4$s to help complete the translation to %1$s!"
+msgstr "Vous utilisez WordPress en %1$s. Alors que %2$s a été traduit en %1$s à %3$d%%, elle n’est donc pas encore disponible dans l’extension. Vous pouvez nous aider ! Enregistrez-vous sur %4$s pour nous aider à terminer la traduction à %1$s !"
+
+#: vendor/yoast/i18n-module/i18n-module.php:174
+msgid "You're using WordPress in a language we don't support yet. We'd love for %2$s to be translated in that language too, but unfortunately, it isn't right now. You can change that! Register at %4$s to help translate it!"
+msgstr "Vous utilisez WordPress dans une langue que nous ne supportons pas encore. Nous aimerions beaucoup que %2$s soit traduit dans cette langue, mais malheureusement ce n’est pas le cas. Vous pouvez changer cet état de fait ! Enregistrez-vous sur %4$s pour nous aider à traduire ! "
+
+#: vendor/yoast/i18n-module/i18n-module.php:199
+msgid "Register now »"
+msgstr "S’enregistrer maintenant »"
+
+#. Author of the plugin/theme
+msgid "Team Yoast"
+msgstr "L’équipe Yoast"
+
+#: vendor/yoast/license-manager/class-license-manager.php:138
+msgid "<b>Warning!</b> You're blocking external requests which means you won't be able to get %s updates. Please add %s to %s."
+msgstr "<b>Attention !</b> Vous bloquez des requêtes externes, ce qui signifie que vous ne serez pas en mesure d’obtenir les mises à jour de %s. Merci d’ajouter %s à %s."
+
#: vendor/yoast/license-manager/class-license-manager.php:206
msgid "Your license has expired. You must <a href=\"%s\">extend your license</a> in order to use it again."
-msgstr "Votre licence a expiré. Vous devez <a href=\"%s\">renouveler votre licence</a> pour l'utiliser à nouveau."
+msgstr "Votre licence a expiré. Vous devez <a href=\"%s\">renouveler votre licence</a> pour l’utiliser à nouveau."
+
+#: vendor/yoast/license-manager/class-plugin-license-manager.php:73
+msgid "%s is network activated, you can manage your license in the <a href=\"%s\">network admin license page</a>."
+msgstr "%s est activé sur tout le réseau, vous pouvez gérer votre licence sur la <a href=\"%s\">Page du réseau d’administration des licences</a>."
+
+#: vendor/yoast/license-manager/class-plugin-license-manager.php:75
+msgid "%s is network activated, please contact your site administrator to manage the license."
+msgstr "%s nécessite une activation réseau, veuillez contacter l’administrateur de votre site pour gérer la licence."
+
+#: vendor/yoast/license-manager/class-update-manager.php:153
+msgid "This site has not been activated properly on yoast.com and thus cannot check for future updates. Please activate your site with a valid license key."
+msgstr "Ce site n’a pas été activé correctement sur yoast.com et donc ne peut donc vérifier les futures mises à jour. Merci d’activer votre site avec une licence valide"
+
+#. Description of the plugin/theme
+msgid "The first true all-in-one SEO solution for WordPress, including on-page content analysis, XML sitemaps and much more."
+msgstr "La première solution SEO tout-en-un pour WordPress, y compris l’analyse des pages de contenu, les sitemaps XML et bien plus encore."
+
+#: inc/options/class-wpseo-option-internallinks.php:165
+msgid "Please select a valid taxonomy for post type \"%s\""
+msgstr "Veuillez choisir une taxinomie valide pour le type de contenu \"%s\""
+
+#: vendor/yoast/license-manager/class-license-manager.php:203
+msgid "You've reached your activation limit. You must <a href=\"%s\">upgrade your license</a> to use it on this site."
+msgstr "Vous avez atteint votre limite d’activation. Vous devez <a href=\"%s\">mettre à jour votre licence</a> pour l’utiliser sur ce site."
+
+#: vendor/yoast/license-manager/class-license-manager.php:209
+msgid "Failed to activate your license, your license key seems to be invalid."
+msgstr "Impossible d’activer votre licence, votre clé de licence semble invalide."
+
+#: vendor/yoast/license-manager/views/form.php:41
+msgid "Toggle license status"
+msgstr "Changer l’état de la licence"
+
+#: vendor/yoast/license-manager/views/form.php:46
+msgid "(deactivate your license so you can activate it on another WordPress site)"
+msgstr "(désactivez votre licence pour pouvoir l’activer sur un autre site WordPress)"
+
+#: vendor/yoast/license-manager/views/form.php:52
+msgid "Please enter a license key in the field below first."
+msgstr "Veuillez d’abord saisir une clé de licence dans le champ ci-dessous."
+
+#: inc/options/class-wpseo-option-internallinks.php:204
+msgid "Please select a valid post type for taxonomy \"%s\""
+msgstr "Veuillez choisir un type de contenu valide pour la taxinomie \"%s\""
+
+#: inc/options/class-wpseo-option-xml.php:166
+msgid "\"Max entries per sitemap page\" should be a positive number, which %s is not. Please correct."
+msgstr "\"Entrées maximum par page du sitemap\" doit être un nombre positif, %s ne l’est pas. Veuillez corriger."
+
+#. translators: %1$s expands to the option name and %2$sexpands to Yoast SEO
+#: inc/options/class-wpseo-option-ms.php:153
+msgid "%1$s is not a valid choice for who should be allowed access to the %2$s settings. Value reset to the default."
+msgstr "%1$s n’est pas un choix valide pour ceux qui devraient être autorisés d’accéder aux réglages de %2$s. La valeur par défaut a été remise."
+
+#: inc/options/class-wpseo-option-ms.php:173
+#: inc/options/class-wpseo-option-ms.php:183
+msgid "The default blog setting must be the numeric blog id of the blog you want to use as default."
+msgstr "Le réglage par défaut du blog doit être l’identifiant numérique du blog que vous souhaitez utiliser par défaut."
+
+#: inc/options/class-wpseo-option-ms.php:173
+msgid "This must be an existing blog. Blog %s does not exist or has been marked as deleted."
+msgstr "Blog inexistant. Le blog %s n’existe pas ou a été marqué comme étant supprimé."
+
+#: inc/options/class-wpseo-option-titles.php:178
+msgid "%s, Author at %s"
+msgstr "%s, Auteur à %s"
#. translators: %1$s expands to Yoast SEO
-#: admin/pages/tools.php:52
+#: admin/pages/tools.php:51
msgid "%1$s comes with some very powerful built-in tools:"
msgstr "%1$s propose des outils intégrés très puissants :"
msgid "%s Archives"
msgstr "%s Archives"
-#: admin/pages/tools.php:71
+#: admin/pages/tools.php:70
msgid "« Back to Tools page"
msgstr "« Retour à la page Outils"
msgid ".htaccess file"
msgstr "fichier .htaccess"
-#: admin/views/tab-rss.php:29
-msgid "A link to the archive for the post author, with the authors name as anchor text."
-msgstr "Un lien vers les archives de l'auteur, avec le nom de l'auteur comme texte d'ancrage."
-
-#: admin/views/tab-rss.php:33
-msgid "A link to the post, with the title as anchor text."
-msgstr "Un lien vers l'article, avec le titre comme texte d'ancrage."
-
-#: admin/views/tab-rss.php:41
-msgid "A link to your site, with your site's name and description as anchor text."
-msgstr "Un lien vers votre site, avec le nom de votre site et la description comme texte d'ancrage."
-
-#: admin/views/tab-rss.php:37
-msgid "A link to your site, with your site's name as anchor text."
-msgstr "Un lien vers votre site, avec le nom de votre site comme texte d'ancrage."
-
-#: inc/class-wpseo-replace-vars.php:109
-msgid "A replacement variable can not start with \"%%cf_\" or \"%%ct_\" as these are reserved for the WPSEO standard variable variables for custom fields and custom taxonomies. Try making your variable name unique."
-msgstr "Une variable de remplacement ne peut commencer par \"%%cf_\" ou \"%%ct_\" car ces préfixes sont réservés aux variables standards de WPSEO pour les champs et les taxonomies personnalisés. Essayez d'utiliser un nom de variable unique."
-
#: inc/class-wpseo-replace-vars.php:106
msgid "A replacement variable can only contain alphanumeric characters, an underscore or a dash. Try renaming your variable."
msgstr "Une variable de remplacement ne peut contenir que des caractères alpha-numériques, un souligné ou un tiret. Veuillez renommer votre variable"
-#: inc/class-wpseo-replace-vars.php:118
-msgid "A replacement variable with the same name has already been registered. Try making your variable name more unique."
-msgstr "Une variable de remplacement portant le même nom est déjà enregistrée. Essayez d'utiliser un nom de variable unique."
-
#: admin/pages/social.php:118
msgid "Add Google+ specific post meta data"
msgstr "Ajouter des méta données spécifiques à Google+ "
msgid "Add Open Graph meta data"
msgstr "Ajouter les métadonnées OpenGraph"
-#. translators: %s expands to <code><head></code>
-#: admin/pages/social.php:50
-msgid "Add Open Graph meta data to your site's %s section, Facebook and other social networks use this data when your pages are shared."
-msgstr "Ajouter les méta-données d'Open Graph à la section %s de votre site, Facebook et les autres réseaux sociaux utilisent ces données lorsque vos pages sont partagées."
-
#: admin/pages/social.php:90
msgid "Add Twitter card meta data"
msgstr "Ajoute les métadonnées de carte Twitter"
msgid "Add Twitter card meta data to your site's %s section."
msgstr "Ajouter les méta-données des cartes Twitter à la section %s de votre site."
-#: frontend/class-frontend.php:1253
-msgid "Admin only notice: this page doesn't show a meta description because it doesn't have one, either write it for this page specifically or go into the SEO -> Titles menu and set up a template."
-msgstr "Avis pour l'administrateur : cette page n'affiche pas de méta description car elle n'en a pas. Vous pouvez donc soit l'ajouter spécifiquement pour cette page soit vous rendre dans vos réglages (SEO -> Titres) pour configurer un modèle."
-
-#: admin/views/tab-breadcrumbs.php:22
-msgid "Anchor text for the Homepage"
-msgstr "Texte d'ancrage pour la page d'accueil "
-
#: inc/class-wpseo-replace-vars.php:1109
msgid "Attachment caption"
msgstr "Légende de la pièce-jointe"
-#: admin/views/tab-permalinks.php:20
-msgid "Attachments to posts are stored in the database as posts, this means they're accessible under their own URL's if you do not redirect them, enabling this will redirect them to the post they were attached to."
-msgstr "Les pièces jointes des articles sont stockées dans la base de données en tant qu'articles, ce qui signifie qu'elles sont accessibles par leurs propres URL (si celle-ci ne sont pas déjà redirigées), activer cette option les redirigera vers l'article auquel elles sont attachées."
-
-#: admin/views/dashboard-widget.php:16
-msgid "Below are your published posts’ SEO scores. Now is as good a time as any to start improving some of your posts!"
-msgstr "Ci-dessous retrouvez les scores SEO de vos articles publiés. C'est le moment de commencer à améliorer certains d'entre eux !"
-
#: admin/views/tab-breadcrumbs.php:59
msgid "Blog"
msgstr "Blog"
msgid "Bold the last page in the breadcrumb"
msgstr "Mettre en gras la dernière page du fil d'Ariane"
-#: admin/views/tab-breadcrumbs.php:26
-msgid "Breadcrumb for 404 Page"
-msgstr "Fil d'Ariane pour la page 404 "
-
#: admin/pages/tools.php:24
msgid "Bulk editor"
msgstr "Éditeur par lot"
msgid "Default settings"
msgstr "Réglages par défaut"
-#: admin/views/tool-import-export.php:162
-msgid "Delete the old data after import? (recommended)"
-msgstr "Supprimer les anciennes données après l'importation ? (recommandé)"
-
#: admin/pages/social.php:62 admin/views/tool-bulk-editor.php:35
msgid "Description"
msgstr "Description "
msgid "Edit the content of your robots.txt:"
msgstr "Modifier le contenu de votre fichier robots.txt :"
-#: admin/views/tab-breadcrumbs.php:17
-msgid "Enable Breadcrumbs"
-msgstr "Activer le fil d'Ariane"
-
-#: admin/views/tab-permalinks.php:34
-msgid "Enforce a trailing slash on all category and tag URL's"
-msgstr "Forcer l'ajout d'une barre oblique à la fin de toutes les URL des catégories et des mots-clés"
-
#: admin/pages/xml-sitemaps.php:63
msgid "Entries per page"
msgstr "Entrées par page"
msgid "File editor"
msgstr "Éditeur de fichiers"
-#: admin/pages/social.php:30
-msgid "For each, pick the main account associated with this site and please enter them below:"
-msgstr "Pour chacun d'eux, choisissez le compte principal associé à ce site et enregistrez-le ci-dessous :"
-
#: admin/pages/social.php:57
msgid "Frontpage settings"
msgstr "Réglages généraux"
-#: admin/views/about.php:116
-msgid "Go to the General settings page →"
-msgstr "Aller à la page des Réglages généraux →"
-
#: admin/pages/social.php:123
msgid "Google Publisher Page"
msgstr "Page Google Publisher"
msgid "Hide WLW Manifest Links"
msgstr "Masquer les liens manifestes WLW"
-#: admin/views/tab-breadcrumbs.php:79
-msgid "How to insert breadcrumbs in your theme"
-msgstr "Comment insérer un fil d'Ariane dans votre thème ?"
-
-#. translators: %s expands to <code>.html</code>
-#: admin/views/tab-permalinks.php:33
-msgid "If you choose a permalink for your posts with %1$s, or anything else but a %2$s at the end, this will force WordPress to add a trailing slash to non-post pages nonetheless."
-msgstr "Si vous choisissez un permalien pour vos articles avec %1$s ou quelque chose d'autre qu'un \"%2$s\" à la fin, cette option va tout de même forcer WordPress à ajouter une barre oblique \"/\" à tous les articles."
-
-#: admin/views/tool-file-editor.php:140
-msgid "If you had a .htaccess file and it was editable, you could edit it from here."
-msgstr "Si vous aviez un fichier .htaccess et qu'il était modifiable, vous pourriez le modifier à partir d'ici."
-
-#: admin/views/tool-file-editor.php:88
-msgid "If you had a robots.txt file and it was editable, you could edit it from here."
-msgstr "Si vous aviez un fichier robots.txt et qu'il était modifiable, vous pourriez le modifier à partir d'ici."
-
#: admin/pages/social.php:121
msgid "If you have a Google+ page for your business, add that URL here and link it on your Google+ page's about page."
msgstr "Si vous avez une page Google+ pour votre entreprise, ajoutez cette URL ici et reliez la à votre page à propos de Google+."
-#. translators: %s expands to <code>?utm_</code>
-#: admin/views/tab-permalinks.php:44
-msgid "If you use Google Analytics campaign parameters starting with %s, check this box. However, you're advised not to use these. Instead, use the version with a hash."
-msgstr "Si vous utilisez des réglages de campagne Google Analytics commençant par %s, cochez cette case. Cependant, il n'est pas recommandé de les utiliser. Vous devriez plutôt utiliser la version avec un hash."
-
#: admin/views/tool-import-export.php:173
msgid "If you want to import data from (by now ancient) Yoast plugins, you can do so here:"
msgstr "Si vous souhaitez importer des données depuis votre (désormais ancienne) extension Yoast, vous pouvez le faire ici :"
msgid "If you've used another SEO plugin, try the %sSEO Data Transporter%s plugin to move your data into this plugin, it rocks!"
msgstr "Si vous avez utilisé une autre extension SEO auparavant, essayez %sSEO Data Transporter%s pour importer vos données, ça pulse !"
-#: admin/views/tool-file-editor.php:127
-msgid "If your .htaccess were writable, you could edit it from here."
-msgstr "Si votre fichier .htaccess était accessible en écriture, vous pourriez le modifier à partir d'ici."
-
-#: admin/views/tool-file-editor.php:101
-msgid "If your robots.txt were writable, you could edit it from here."
-msgstr "Si votre fichier robots.txt était accessible en écriture, vous pourriez le modifier à partir d'ici."
-
#: admin/pages/social.php:60 admin/pages/social.php:72
msgid "Image URL"
msgstr "URL de l’image "
msgid "Import from Yoast Breadcrumbs?"
msgstr "Importer depuis Yoast Breadcrumbs ?"
-#: admin/views/tool-import-export.php:104
-msgid "Import from other SEO plugins"
-msgstr "Importer à partir d'autres extensions de SEO"
-
-#: admin/views/tool-import-export.php:106
-msgid "Import from other plugins"
-msgstr "Importer à partir d'autres extensions"
-
#: admin/views/tool-import-export.php:126
msgid "Import settings"
msgstr "Importer les réglages"
msgid "Import settings by locating <em>settings.zip</em> and clicking \"Import settings\""
msgstr "Importer les réglages en localisant le fichier<em>settings.zip</em> et en cliquant sur \"Importer les réglages\""
-#: admin/pages/tools.php:29
-msgid "Import settings from other SEO plugins and export your settings for re-use on (another) blog."
-msgstr "Importez les réglages d'autres extensions de référencement et exportez les vôtres pour les réutiliser sur un autre site."
-
#: admin/pages/social.php:35
msgid "Instagram URL"
msgstr "URL Instagram"
msgid "LinkedIn URL"
msgstr "URL LinkedIn"
-#: admin/pages/xml-sitemaps.php:68
-msgid "Max entries per sitemap"
-msgstr "Nombre d'entrées maximal par sitemap"
-
#: admin/views/user-profile.php:25
msgid "Meta description to use for Author page"
msgstr "Méta description à utiliser pour la page Auteur"
msgid "MySpace URL"
msgstr "URL MySpace"
-#: admin/views/tool-import-export.php:146
-msgid "No doubt you've used an SEO plugin before if this site isn't new. Let's make it easy on you, you can import the data below. If you want, you can import first, check if it was imported correctly, and then import & delete. No duplicate data will be imported."
-msgstr "Vous avez probablement utilisé une autre extension SEO auparavant. Pour vous faciliter la vie, vous pouvez importer les données de votre ancienne extension SEO. Si vous voulez le faire, vous pouvez d'abord les importer, vérifiez si les données ont été importées correctement, et puis importer & supprimer. Aucune donnée en double ne sera importée."
-
#: admin/views/tab-permalinks.php:48
msgid "Other variables not to clean"
msgstr "Autres variables à ne pas nettoyer"
msgid "Page %1$d of %2$d"
msgstr "Page %1$d de %2$d"
-#: frontend/class-frontend.php:558
-#: inc/options/class-wpseo-option-titles.php:180
-msgid "Page not found"
-msgstr "La page est introuvable"
-
-#: admin/views/tab-permalinks.php:36
-msgid "People make mistakes in their links towards you sometimes, or unwanted parameters are added to the end of your URLs, this allows you to redirect them all away. Please note that while this is a feature that is actively maintained, it is known to break several plugins, and should for that reason be the first feature you disable when you encounter issues after installing this plugin."
-msgstr "Il est possible que les gens fassent des erreurs s'ils font des liens vers votre site, ou bien des paramètres indésirables sont ajoutés à vos URL. Cette option vous permet de les rediriger ailleurs. Veuillez noter que même si cette option est activement mise à jour, elle est aussi reconnue pour causer des problèmes avec d'autres extensions et donc, si vous avez un problème, il est recommandé de désactiver cette option d'abord."
-
#: admin/pages/social.php:38
msgid "Pinterest URL"
msgstr "URL Pinterest"
msgid "Please check the appropriate box below if there's a post type that you do <strong>NOT</strong> want to include in your sitemap:"
msgstr "Veuillez cocher la case appropriée ci-dessous s'il y a un type de contenu que vous ne voulez <strong>PAS</strong> inclure dans votre fichier sitemap :"
-#: admin/pages/xml-sitemaps.php:119
-msgid "Please check the appropriate box below if there's a taxonomy that you do <strong>NOT</strong> want to include in your sitemap:"
-msgstr "Veuillez cocher la case appropriée ci-dessous s'il y a une taxonomie que vous ne voulez <strong>PAS</strong> inclure dans votre fichier sitemap :"
-
#: admin/pages/xml-sitemaps.php:83
msgid "Please check the appropriate box below if there's a user role that you do <strong>NOT</strong> want to include in your sitemap:"
msgstr "Merci de cocher la case appropriée ci-dessous si un rôle d'utilisateur ne doit <strong>pas </strong> être inclus dans le plan de votre site :"
-#: admin/pages/xml-sitemaps.php:64
-msgid "Please enter the maximum number of entries per sitemap page (defaults to %s, you might want to lower this to prevent memory issues on some installs):"
-msgstr "Merci de saisir le nombre maximal d'entrées par page de sitemap (par défaut %s, vous pouvez réduire ce nombre pour éviter les problèmes de mémoire sur certaines installations) :"
-
#: admin/pages/xml-sitemaps.php:110
msgid "Posts to exclude"
msgstr "Article à exclure"
-#: admin/views/tab-breadcrumbs.php:24
-msgid "Prefix for Archive breadcrumbs"
-msgstr "Préfixe pour le fil d'Ariane des archives "
-
-#: admin/views/tab-breadcrumbs.php:25
-msgid "Prefix for Search Page breadcrumbs"
-msgstr "Préfixe pour le fil d'Ariane des pages de recherche "
-
-#: admin/views/tab-breadcrumbs.php:23
-msgid "Prefix for the breadcrumb path"
-msgstr "Préfixe pour le fil d'Ariane "
-
#: admin/views/tab-permalinks.php:45
msgid "Prevent cleaning out Google Analytics Campaign & Google AdWords Parameters."
msgstr "Evite la suppression des paramètres des campagnes Google Analytics & Google AdWords"
msgid "QA & Translations Manager"
msgstr "Responsable des traductions et des questions/réponses"
-#: admin/views/tab-permalinks.php:21
-msgid "Redirect attachment URL's to parent post URL."
-msgstr "Rediriger l'URL des pièces-jointes vers l'URL de l'article parent."
-
#: admin/views/tab-permalinks.php:37
msgid "Redirect ugly URL's to clean permalinks. (Not recommended in many cases!)"
msgstr ""
msgid "Remove Blog page from Breadcrumbs"
msgstr "Supprimer la page Blog du fil d'Ariane"
-#: admin/views/tab-permalinks.php:25
-msgid "Remove stop words from slugs."
-msgstr "Retirer les mots d'arrêts (stop words) des identifiants."
-
#: inc/class-wpseo-replace-vars.php:1114
msgid "Replaced with a custom taxonomies description"
msgstr "Remplacé par une description des taxinomies personnalisées."
msgid "Replaced with a posts custom field value"
msgstr "Remplacé par une valeur de champ personnalisé"
-#: inc/class-wpseo-replace-vars.php:1113
-msgid "Replaced with a posts custom taxonomies, comma separated."
-msgstr "Remplacé par la(les) catégorie(s) de l'article, séparé par des virgules"
-
#: inc/class-wpseo-replace-vars.php:1076
msgid "Replaced with the category description"
msgstr "Remplacé par la description de la catégorie"
msgid "Replaced with the current tag/tags"
msgstr "Remplacé par le(les) mot(s)-clé(s)"
-#: inc/class-wpseo-replace-vars.php:1101
-msgid "Replaced with the current time"
-msgstr "Remplacé par l'heure actuelle"
-
-#: inc/class-wpseo-replace-vars.php:1105
-msgid "Replaced with the current year"
-msgstr "Remplacé par l'année en cours"
-
-#: inc/class-wpseo-replace-vars.php:1067
-msgid "Replaced with the date of the post/page"
-msgstr "Remplacé par la date de l'article / de la page"
-
-#: inc/class-wpseo-replace-vars.php:1075
-msgid "Replaced with the post categories (comma separated)"
-msgstr "Remplacé par la(les) catégorie(s) de l'article (séparées par des virgules)"
-
-#: inc/class-wpseo-replace-vars.php:1095
-msgid "Replaced with the post type plural label"
-msgstr "Remplacé par l'intitulé au pluriel du type de contenu"
-
-#: inc/class-wpseo-replace-vars.php:1094
-msgid "Replaced with the post type single label"
-msgstr "Remplacé par l'intitulé au singulier du type de contenu"
-
-#: inc/class-wpseo-replace-vars.php:1097
-msgid "Replaced with the post/page ID"
-msgstr "Remplacé par l'ID de l'article / de la page"
-
-#: inc/class-wpseo-replace-vars.php:1099
-msgid "Replaced with the post/page author's 'Biographical Info'"
-msgstr "Remplacé par 'les informations biographiques' de l'auteur de l'article ou de la page"
-
-#: inc/class-wpseo-replace-vars.php:1098
-msgid "Replaced with the post/page author's 'nicename'"
-msgstr "Remplacé par le nom 'plus joli' de l'auteur de l'article / de la page"
-
-#: inc/class-wpseo-replace-vars.php:1100
-msgid "Replaced with the post/page author's userid"
-msgstr "Remplacé par l'ID de l'auteur de l'article / de la page"
-
-#: inc/class-wpseo-replace-vars.php:1072
-msgid "Replaced with the post/page excerpt (or auto-generated if it does not exist)"
-msgstr "Remplacé par l'extrait de l'article / page (ou auto-généré, si l'extrait n'existe pas)"
-
-#: inc/class-wpseo-replace-vars.php:1073
-msgid "Replaced with the post/page excerpt (without auto-generation)"
-msgstr "Remplacé par l'extrait de l'article / page (sans auto-génération)"
-
-#: inc/class-wpseo-replace-vars.php:1096
-msgid "Replaced with the post/page modified time"
-msgstr "Remplacé par l'heure de modification de l'article / de la page"
-
-#: inc/class-wpseo-replace-vars.php:1110
-msgid "Replaced with the posts focus keyword"
-msgstr "Remplacé par le mot-clé principal de l'article"
-
-#: inc/class-wpseo-replace-vars.php:1111
-msgid "Replaced with the slug which caused the 404"
-msgstr "Remplacé par l'identifiant qui a causé l'erreur 404"
-
#: inc/class-wpseo-replace-vars.php:1077
msgid "Replaced with the tag description"
msgstr "Remplacé par la description du mot-clé"
msgid "Replaced with the title of the parent page of the current page"
msgstr "Remplacé par le titre de la page parent de la présente page"
-#: inc/class-wpseo-replace-vars.php:1068
-msgid "Replaced with the title of the post/page"
-msgstr "Remplacé par le titre de l'article / de la page"
-
#: admin/views/tool-file-editor.php:77
msgid "Robots.txt"
msgstr "Robots.txt"
msgid "Search for \"%s\""
msgstr "Recherche pour \"%s\""
-#: admin/views/tab-breadcrumbs.php:21
-msgid "Separator between breadcrumbs"
-msgstr "Séparateur pour le fil d'Ariane "
-
-#. translators: %1$s expands to Yoast SEO
-#: admin/views/about.php:32
-msgid "Thank you for updating %1$s!"
-msgstr "Merci d'avoir mis à jour %1$s !"
-
#: admin/pages/social.php:93
msgid "The default card type to use"
msgstr "Le type de carte à utiliser par défaut "
msgid "The site's tag line / description"
msgstr "Slogan / Description du site"
-#: admin/pages/social.php:58
-msgid "These are the title, description and image used in the Open Graph meta tags on the front page of your site."
-msgstr "Voici le titre, la description et l'image utilisés dans le meta tag Open Graph sur la page d'accueil de votre site."
-
-#: admin/views/tab-rss.php:15
-msgid "This feature is used to automatically add content to your RSS, more specifically, it's meant to add links back to your blog and your blog posts, so dumb scrapers will automatically add these links too, helping search engines identify you as the original source of the content."
-msgstr "Cette fonctionnalité est utilisée pour ajouter automatiquement du contenu à vos flux RSS, plus spécifiquement, pour ajouter des liens vers votre blog et vos articles. Les agrégateurs de contenus vont également ajouter ces liens, aidant ainsi les moteurs de recherche à identifier votre site comme étant l'origine du contenu."
-
-#: admin/views/tab-permalinks.php:24
-msgid "This helps you to create cleaner URLs by automatically removing the stopwords from them."
-msgstr "Cela vous permet de créer des URLs plus propres en retirant automatiquement les mots d'arrêts (stop words) des URLs."
-
-#: admin/pages/social.php:74
-msgid "This image is used if the post/page being shared does not contain any images."
-msgstr "Cette image est utilisée si l'article/page partagé ne contient aucune image."
-
-#: admin/views/tab-permalinks.php:27
-msgid "This prevents threaded replies from working when the user has JavaScript disabled, but on a large site can mean a <em>huge</em> improvement in crawl efficiency for search engines when you have a lot of comments."
-msgstr "Cela empêche les commentaires imbriqués de fonctionner lorsque l'utilisateur a désactivé JavaScript, mais sur un grand site cela peut représenter une <em>énorme</em> amélioration de l'efficacité d'analyse pour les moteurs de recherche lorsque vous avez beaucoup de commentaires."
-
#: admin/pages/tools.php:35
msgid "This tool allows you to quickly change important files for your SEO, like your robots.txt and, if you have one, your .htaccess file."
msgstr "Cet outil vous permet de modifier rapidement des fichiers importants pour votre référencement, comme le fichier robots.txt ou le fichier .htaccess si vous en avez un."
-#: admin/pages/tools.php:25
-msgid "This tool allows you to quickly change titles and descriptions of your posts and pages without having to go into the editor for each page."
-msgstr "Cet outil vous permet de modifier rapidement les titres et les descriptions de vos articles et de vos pages, sans avoir à aller dans l'éditeur de chaque page."
-
#: admin/views/user-profile.php:16
msgid "Title to use for Author page"
msgstr "Titre à utiliser pour la page Auteur"
msgid "To inform Google about your social profiles, we need to know their URLs."
msgstr "Pour informer Google sur vos profils sociaux, nous avons besoin de connaître leurs URLs."
-#: admin/pages/social.php:34
-msgid "Twitter Username"
-msgstr "Nom d'utilisateur Twitter"
-
#: admin/views/tool-file-editor.php:44
msgid "Updated Robots.txt"
msgstr "Robots.txt mis à jour"
-#. translators: %1$s / %2$s: links to the breadcrumbs implementation page on
-#. the Yoast knowledgebase
-#: admin/views/tab-breadcrumbs.php:83
-msgid "Usage of this breadcrumbs feature is explained in %1$sour knowledge-base article on breadcrumbs implementation%2$s."
-msgstr "L'utilisation de la fonctionnalité du fil d'Ariane est expliquée dans l'article %1$sde notre base de connaissances sur l'intégration du fil d'Ariane%2$s."
-
#: admin/pages/xml-sitemaps.php:38
msgid "User sitemap"
msgstr "Sitemap utilisateur"
msgid "What’s new in %s"
msgstr "Quoi de neuf dans la %s"
-#. translators: %1$s and %2$s expands to anchor tags, %3$s expands to Yoast SEO
-#: admin/views/about.php:126
-msgid "While most of the development team is at %1$sYoast%2$s in the Netherlands, %3$s is created by a worldwide team."
-msgstr "Bien que presque toute l'équipe de développement de %1$sYoast%2$s soit basée aux Pays-Bas, %3$s est créé par une équipe internationale."
-
-#. Translators: %1$s: expands to '<code>1,2,99,100</code>'
-#: admin/pages/xml-sitemaps.php:109
-msgid "You can exclude posts from the sitemap by entering a comma separated string with the Post ID's. The format will become something like: %1$s."
-msgstr "Vous pouvez exclure des articles de votre sitemap en saisissant une série d'ID séparée par des virgules. Le format devrait ressemblé à cela : %1$s"
-
#: admin/pages/xml-sitemaps.php:51
msgid "You can find your XML Sitemap here: %sXML Sitemap%s"
msgstr "Vous pouvez trouver votre fichier sitemap XML ici : %sXML Sitemap%s"
msgid "You cannot edit the robots.txt file."
msgstr "Vous ne pouvez pas modifier le fichier robots.txt."
-#: inc/class-wpseo-replace-vars.php:122
-msgid "You cannot overrule a WPSEO standard variable replacement by registering a variable with the same name. Use the \"wpseo_replacements\" filter instead to adjust the replacement value."
-msgstr "Vous ne pouvez pas annuler une variable de remplacement standard de WPSEO en enregistrant une variable avec le même nom. Utilisez le filtre \"wpseo_replacements\" au lieu d'ajuster la valeur de remplacement."
-
-#: admin/pages/xml-sitemaps.php:54
-msgid "You do <strong>not</strong> need to generate the XML sitemap, nor will it take up time to generate after publishing a post."
-msgstr "Vous n'avez <strong>pas</strong> besoin de générer le fichier sitemap XML, pas plus qu'il ne faudra de temps pour le mettre à jour à chaque nouvel article."
-
-#: admin/views/tool-file-editor.php:83
-msgid "You don't have a robots.txt file, create one here:"
-msgstr "Vous n'avez pas de fichier robots.txt, vous pouvez en créer un ici :"
-
-#: admin/views/tab-permalinks.php:47
-msgid "You might have extra variables you want to prevent from cleaning out, add them here, comma separated."
-msgstr "Vous avez peut-être d'autres variables que vous ne voulez pas nettoyer, ajouter les simplement dans ici, séparées par des virgules."
-
#: admin/pages/social.php:39
msgid "YouTube URL"
msgstr "URL YouTube"
msgid "Post type archive to show in breadcrumbs for taxonomies"
msgstr "Type de contenu d’archive à afficher dans le fil d’Ariane pour les taxinomies"
-#: admin/views/tab-breadcrumbs.php:36
-msgid "Taxonomy to show in breadcrumbs for post types"
-msgstr "Taxonomie à afficher dans le fil d'Ariane pour les types de contenu"
-
-#: admin/pages/social.php:100
-msgid "Pinterest uses Open Graph metadata just like Facebook, so be sure to keep the Open Graph checkbox on the Facebook tab checked if you want to optimize your site for Pinterest."
-msgstr "Pinterest, tout comme Facebook, utilise les métadonnées Open Graph. Assurez-vous donc d'avoir coché la case Open Graph dans l'onglet Facebook si vous souhaitez optimiser votre site pour Pinterest."
-
-#: admin/views/tool-import-export.php:89
-msgid "The old data of the imported plugin was deleted successfully."
-msgstr "Les anciennes données de l'extension importée ont bien été effacées."
-
#: admin/views/tool-import-export.php:135
msgid "Include Taxonomy Metadata"
msgstr "Inclure les métadonnées des taxinomies."
-#. translators: %1$s expands to Yoast SEO
-#: admin/pages/licenses.php:73
-msgid "%1$s Extensions"
-msgstr "Extensions de %1$s"
+#: admin/pages/xml-sitemaps.php:119
+msgid "Please check the appropriate box below if there's a taxonomy that you do <strong>NOT</strong> want to include in your sitemap:"
+msgstr "Veuillez cocher la case appropriée ci-dessous s’il y a une taxinomie que vous ne voulez <strong>PAS</strong> inclure dans votre fichier sitemap :"
-#: admin/pages/metas.php:111 admin/pages/metas.php:171
-msgid "%1$s Meta Box"
-msgstr "%1$s Méta Box"
+#: admin/views/tab-breadcrumbs.php:36
+msgid "Taxonomy to show in breadcrumbs for post types"
+msgstr "Taxinomie à afficher dans le fil d’Ariane pour les types de contenu"
-#. translators: %1$s expands to Yoast SEO, %2$s expands to Google Analytics by
-#. Yoast
-#: admin/google_search_console/class-gsc-service.php:146
-msgid "%1$s detected you’re using a version of %2$s which is not compatible with %1$s. Please update %2$s to the latest version to use this feature."
-msgstr "%1$s a détecté que vous utiliser une version de %2$s qui est incompatible avec %1$s. Veuillez mettre à jour %2$s pour utiliser cette fonctionnalité."
+#: inc/class-wpseo-replace-vars.php:109
+msgid "A replacement variable can not start with \"%%cf_\" or \"%%ct_\" as these are reserved for the WPSEO standard variable variables for custom fields and custom taxonomies. Try making your variable name unique."
+msgstr "Une variable de remplacement ne peut commencer par \"%%cf_\" ou \"%%ct_\" car ces préfixes sont réservés aux variables standards de WPSEO pour les champs et les taxinomies personnalisés. Essayez d’utiliser un nom de variable unique."
-#. translators: %1$s expands to Yoast SEO
-#: admin/pages/metas.php:42
-msgid "%1$s has auto-detected whether it needs to force rewrite the titles for your pages, if you think it's wrong and you know what you're doing, you can change the setting here."
-msgstr "%1$s détecte automatiquement s'il a besoin de forcer la réécriture des titres de vos pages, si vous pensez que c'est incorrect et que vous savez ce que vous faites, vous pouvez modifier ce réglage ici."
+#: admin/views/dashboard-widget.php:16
+msgid "Below are your published posts’ SEO scores. Now is as good a time as any to start improving some of your posts!"
+msgstr "Ci-dessous retrouvez les scores SEO de vos articles publiés. C’est le moment de commencer à améliorer certains d’entre eux !"
-#: admin/pages/network.php:35
-msgid "%s restored to default SEO settings."
-msgstr "%s a été rétabli au réglages SEO par défaut."
+#. translators: %s expands to <code>?utm_</code>
+#: admin/views/tab-permalinks.php:44
+msgid "If you use Google Analytics campaign parameters starting with %s, check this box. However, you're advised not to use these. Instead, use the version with a hash."
+msgstr "Si vous utilisez des réglages de campagne Google Analytics commençant par %s, cochez cette case. Cependant, il n’est pas recommandé de les utiliser. Vous devriez plutôt utiliser la version avec un hash."
-#: admin/pages/metas.php:220
-msgid "404 pages"
-msgstr "Pages 404"
+#. Translators: %1$s: expands to '<code>1,2,99,100</code>'
+#: admin/pages/xml-sitemaps.php:109
+msgid "You can exclude posts from the sitemap by entering a comma separated string with the Post ID's. The format will become something like: %1$s."
+msgstr "Vous pouvez exclure des articles de votre sitemap en saisissant une série d’ID séparée par des virgules. Le format devrait ressemblé à cela : %1$s"
-#: admin/pages/social.php:20
-msgid "Accounts"
-msgstr "Comptes"
+#. translators: %1$s expands to Yoast SEO
+#: admin/views/about.php:32
+msgid "Thank you for updating %1$s!"
+msgstr "Merci d’avoir mis à jour %1$s !"
-#. translators: %s expands to <code>noodp</code>
-#. translators: %s expands to <code>noydir</code>
-#: admin/pages/metas.php:238 admin/pages/metas.php:242
-msgid "Add %s meta robots tag sitewide"
-msgstr "Ajouter des méta étiquettes de robots %s sur tout le site"
+#. translators: %s expands to <code><head></code>
+#: admin/pages/social.php:50
+msgid "Add Open Graph meta data to your site's %s section, Facebook and other social networks use this data when your pages are shared."
+msgstr "Ajouter les méta-données d’Open Graph à la section %s de votre site, Facebook et les autres réseaux sociaux utilisent ces données lorsque vos pages sont partagées."
-#. translators: %s expands to <code>noindex, follow</code>
-#: admin/pages/metas.php:203
-msgid "Add %s to the author archives"
-msgstr "Ajouter %s aux archives de l'auteur"
+#. translators: %1$s / %2$s: links to the breadcrumbs implementation page on
+#. the Yoast knowledgebase
+#: admin/views/tab-breadcrumbs.php:83
+msgid "Usage of this breadcrumbs feature is explained in %1$sour knowledge-base article on breadcrumbs implementation%2$s."
+msgstr "L’utilisation de la fonctionnalité du fil d’Ariane est expliquée dans l’article %1$sde notre base de connaissances sur l’intégration du fil d’Ariane%2$s."
-#. translators: %s expands to <code>noindex, follow</code>
-#: admin/pages/metas.php:209
-msgid "Add %s to the date-based archives"
-msgstr "Ajoutez %s aux archives basées sur la date"
+#: admin/pages/social.php:30
+msgid "For each, pick the main account associated with this site and please enter them below:"
+msgstr "Pour chacun d’eux, choisissez le compte principal associé à ce site et enregistrez-le ci-dessous :"
-#: admin/pages/dashboard.php:234
-msgid "Alexa Verification ID"
-msgstr "ID de vérification Alexa "
+#: admin/pages/social.php:34
+msgid "Twitter Username"
+msgstr "Nom d’utilisateur Twitter"
-#: admin/pages/dashboard.php:203
-msgid "Alternate name"
-msgstr "Autre nom"
+#: admin/pages/social.php:100
+msgid "Pinterest uses Open Graph metadata just like Facebook, so be sure to keep the Open Graph checkbox on the Facebook tab checked if you want to optimize your site for Pinterest."
+msgstr "Pinterest, tout comme Facebook, utilise les métadonnées Open Graph. Assurez-vous donc d’avoir coché la case Open Graph dans l’onglet Facebook si vous souhaitez optimiser votre site pour Pinterest."
-#: admin/pages/licenses.php:30
-msgid "Are you in Google News? Increase your traffic from Google News by optimizing for it!"
-msgstr "Etes vous sur Google News ? Augmentez le trafic de Google News grâce à l'optimisation!"
+#: admin/pages/tools.php:25
+msgid "This tool allows you to quickly change titles and descriptions of your posts and pages without having to go into the editor for each page."
+msgstr "Cet outil vous permet de modifier rapidement les titres et les descriptions de vos articles et de vos pages, sans avoir à aller dans l’éditeur de chaque page."
-#: admin/pages/dashboard.php:190
-msgid "Are you sure you want to reset your SEO settings?"
-msgstr "Êtes vous sûr de vouloir réinitialiser vos réglages de SEO ?"
+#: admin/pages/tools.php:29
+msgid "Import settings from other SEO plugins and export your settings for re-use on (another) blog."
+msgstr "Importez les réglages d’autres extensions de référencement et exportez les vôtres pour les réutiliser sur un autre site."
-#: admin/pages/metas.php:99
-msgid "As you are redirecting attachment URLs to parent post URLs, these settings will currently only have an effect on <strong>unattached</strong> media items!"
-msgstr "Comme vous redirigre l'URL de la pièce jointe vers l'URL parent, ces paramètres n'auront d'effet que sur les médias <strong>non inclus</strong>"
+#: admin/pages/xml-sitemaps.php:68
+msgid "Max entries per sitemap"
+msgstr "Nombre d’entrées maximal par sitemap"
-#: admin/google_search_console/views/gsc-display.php:40
-msgid "Authenticate"
-msgstr "S'authentifier"
+#: admin/views/about.php:116
+msgid "Go to the General settings page →"
+msgstr "Aller aux Réglages généraux →"
-#: admin/pages/metas.php:182
-msgid "Author Archives"
-msgstr "Archives de l'auteur"
+#. translators: %1$s and %2$s expands to anchor tags, %3$s expands to Yoast SEO
+#: admin/views/about.php:126
+msgid "While most of the development team is at %1$sYoast%2$s in the Netherlands, %3$s is created by a worldwide team."
+msgstr "Bien que presque toute l’équipe de développement de %1$sYoast%2$s soit basée aux Pays-Bas, %3$s est créé par une équipe internationale."
+
+#: admin/views/tool-import-export.php:104
+msgid "Import from other SEO plugins"
+msgstr "Importer à partir d’autres extensions de SEO"
+
+#: admin/views/tool-import-export.php:106
+msgid "Import from other plugins"
+msgstr "Importer à partir d’autres extensions"
+
+#: admin/views/tool-import-export.php:89
+msgid "The old data of the imported plugin was deleted successfully."
+msgstr "Les anciennes données de l’extension importée ont bien été effacées."
+
+#: inc/class-wpseo-replace-vars.php:1099
+msgid "Replaced with the post/page author's 'Biographical Info'"
+msgstr "Remplacé par ’les informations biographiques’ de l’auteur de l’article ou de la page"
+
+#: admin/pages/social.php:58
+msgid "These are the title, description and image used in the Open Graph meta tags on the front page of your site."
+msgstr "Voici le titre, la description et l’image utilisés dans le meta tag Open Graph sur la page d’accueil de votre site."
+
+#: inc/class-wpseo-replace-vars.php:118
+msgid "A replacement variable with the same name has already been registered. Try making your variable name more unique."
+msgstr "Une variable de remplacement portant le même nom est déjà enregistrée. Essayez d’utiliser un nom de variable unique."
+
+#: inc/class-wpseo-replace-vars.php:122
+msgid "You cannot overrule a WPSEO standard variable replacement by registering a variable with the same name. Use the \"wpseo_replacements\" filter instead to adjust the replacement value."
+msgstr "Vous ne pouvez pas annuler une variable de remplacement standard de WPSEO en enregistrant une variable avec le même nom. Utilisez le filtre \"wpseo_replacements\" au lieu d’ajuster la valeur de remplacement."
+
+#: admin/views/tool-file-editor.php:83
+msgid "You don't have a robots.txt file, create one here:"
+msgstr "Vous n’avez pas de fichier robots.txt, vous pouvez en créer un ici :"
+
+#: admin/views/tab-permalinks.php:47
+msgid "You might have extra variables you want to prevent from cleaning out, add them here, comma separated."
+msgstr "Vous avez peut-être d’autres variables que vous ne voulez pas nettoyer, ajouter les simplement dans ici, séparées par des virgules."
+
+#: admin/pages/xml-sitemaps.php:64
+msgid "Please enter the maximum number of entries per sitemap page (defaults to %s, you might want to lower this to prevent memory issues on some installs):"
+msgstr "Merci de saisir le nombre maximal d’entrées par page de sitemap (par défaut %s, vous pouvez réduire ce nombre pour éviter les problèmes de mémoire sur certaines installations) :"
+
+#: admin/views/tab-permalinks.php:24
+msgid "This helps you to create cleaner URLs by automatically removing the stopwords from them."
+msgstr "Cela vous permet de créer des URLs plus propres en retirant automatiquement les mots d’arrêts (stop words) des URLs."
+
+#: admin/views/tab-permalinks.php:25
+msgid "Remove stop words from slugs."
+msgstr "Retirer les mots d’arrêts (stop words) des identifiants."
+
+#: inc/class-wpseo-replace-vars.php:1111
+msgid "Replaced with the slug which caused the 404"
+msgstr "Remplacé par l’identifiant qui a causé l’erreur 404"
+
+#: admin/views/tool-file-editor.php:140
+msgid "If you had a .htaccess file and it was editable, you could edit it from here."
+msgstr "Si vous aviez un fichier .htaccess et qu’il était modifiable, vous pourriez le modifier à partir d’ici."
+
+#: admin/views/tool-file-editor.php:88
+msgid "If you had a robots.txt file and it was editable, you could edit it from here."
+msgstr "Si vous aviez un fichier robots.txt et qu’il était modifiable, vous pourriez le modifier à partir d’ici."
+
+#: admin/views/tab-permalinks.php:27
+msgid "This prevents threaded replies from working when the user has JavaScript disabled, but on a large site can mean a <em>huge</em> improvement in crawl efficiency for search engines when you have a lot of comments."
+msgstr "Cela empêche les commentaires imbriqués de fonctionner lorsque l’utilisateur a désactivé JavaScript, mais sur un grand site cela peut représenter une <em>énorme</em> amélioration de l’efficacité d’analyse pour les moteurs de recherche lorsque vous avez beaucoup de commentaires."
+
+#: inc/class-wpseo-replace-vars.php:1094
+msgid "Replaced with the post type single label"
+msgstr "Remplacé par l’intitulé au singulier du type de contenu"
+
+#: inc/class-wpseo-replace-vars.php:1095
+msgid "Replaced with the post type plural label"
+msgstr "Remplacé par l’intitulé au pluriel du type de contenu"
+
+#: inc/class-wpseo-replace-vars.php:1113
+msgid "Replaced with a posts custom taxonomies, comma separated."
+msgstr "Remplacé par la(les) catégorie(s) de l’article, séparé par des virgules"
+
+#: admin/pages/social.php:74
+msgid "This image is used if the post/page being shared does not contain any images."
+msgstr "Cette image est utilisée si l’article/page partagé ne contient aucune image."
+
+#: admin/views/tool-import-export.php:146
+msgid "No doubt you've used an SEO plugin before if this site isn't new. Let's make it easy on you, you can import the data below. If you want, you can import first, check if it was imported correctly, and then import & delete. No duplicate data will be imported."
+msgstr "Vous avez probablement utilisé une autre extension SEO auparavant. Pour vous faciliter la vie, vous pouvez importer les données de votre ancienne extension SEO. Si vous voulez le faire, vous pouvez d’abord les importer, vérifiez si les données ont été importées correctement, et puis importer & supprimer. Aucune donnée en double ne sera importée."
+
+#: admin/views/tool-import-export.php:162
+msgid "Delete the old data after import? (recommended)"
+msgstr "Supprimer les anciennes données après l’importation ? (recommandé)"
+
+#: inc/class-wpseo-replace-vars.php:1067
+msgid "Replaced with the date of the post/page"
+msgstr "Remplacé par la date de l’article / de la page"
+
+#: inc/class-wpseo-replace-vars.php:1068
+msgid "Replaced with the title of the post/page"
+msgstr "Remplacé par le titre de l’article / de la page"
+
+#: inc/class-wpseo-replace-vars.php:1072
+msgid "Replaced with the post/page excerpt (or auto-generated if it does not exist)"
+msgstr "Remplacé par l’extrait de l’article / page (ou auto-généré, si l’extrait n’existe pas)"
+
+#: inc/class-wpseo-replace-vars.php:1073
+msgid "Replaced with the post/page excerpt (without auto-generation)"
+msgstr "Remplacé par l’extrait de l’article / page (sans auto-génération)"
+
+#: inc/class-wpseo-replace-vars.php:1075
+msgid "Replaced with the post categories (comma separated)"
+msgstr "Remplacé par la(les) catégorie(s) de l’article (séparées par des virgules)"
+
+#: inc/class-wpseo-replace-vars.php:1096
+msgid "Replaced with the post/page modified time"
+msgstr "Remplacé par l’heure de modification de l’article / de la page"
+
+#: inc/class-wpseo-replace-vars.php:1097
+msgid "Replaced with the post/page ID"
+msgstr "Remplacé par l’ID de l’article / de la page"
+
+#: inc/class-wpseo-replace-vars.php:1098
+msgid "Replaced with the post/page author's 'nicename'"
+msgstr "Remplacé par le nom ’plus joli’ de l’auteur de l’article / de la page"
+
+#: inc/class-wpseo-replace-vars.php:1100
+msgid "Replaced with the post/page author's userid"
+msgstr "Remplacé par l’ID de l’auteur de l’article / de la page"
+
+#: inc/class-wpseo-replace-vars.php:1101
+msgid "Replaced with the current time"
+msgstr "Remplacé par l’heure actuelle"
+
+#: inc/class-wpseo-replace-vars.php:1105
+msgid "Replaced with the current year"
+msgstr "Remplacé par l’année en cours"
+
+#: inc/class-wpseo-replace-vars.php:1110
+msgid "Replaced with the posts focus keyword"
+msgstr "Remplacé par le mot-clé principal de l’article"
+
+#: admin/views/tab-permalinks.php:34
+msgid "Enforce a trailing slash on all category and tag URL's"
+msgstr "Forcer l’ajout d’une barre oblique à la fin de toutes les URL des catégories et des mots-clés"
+
+#. translators: %s expands to <code>.html</code>
+#: admin/views/tab-permalinks.php:33
+msgid "If you choose a permalink for your posts with %1$s, or anything else but a %2$s at the end, this will force WordPress to add a trailing slash to non-post pages nonetheless."
+msgstr "Si vous choisissez un permalien pour vos articles avec %1$s ou quelque chose d’autre qu’un \"%2$s\" à la fin, cette option va tout de même forcer WordPress à ajouter une barre oblique \"/\" à tous les articles."
+
+#: admin/views/tab-permalinks.php:21
+msgid "Redirect attachment URL's to parent post URL."
+msgstr "Rediriger l’URL des pièces-jointes vers l’URL de l’article parent."
+
+#: admin/views/tab-permalinks.php:20
+msgid "Attachments to posts are stored in the database as posts, this means they're accessible under their own URL's if you do not redirect them, enabling this will redirect them to the post they were attached to."
+msgstr "Les pièces jointes des articles sont stockées dans la base de données en tant qu’articles, ce qui signifie qu’elles sont accessibles par leurs propres URL (si celle-ci ne sont pas déjà redirigées), activer cette option les redirigera vers l’article auquel elles sont attachées."
+
+#: admin/views/tab-permalinks.php:36
+msgid "People make mistakes in their links towards you sometimes, or unwanted parameters are added to the end of your URLs, this allows you to redirect them all away. Please note that while this is a feature that is actively maintained, it is known to break several plugins, and should for that reason be the first feature you disable when you encounter issues after installing this plugin."
+msgstr "Il est possible que les gens fassent des erreurs s’ils font des liens vers votre site, ou bien des paramètres indésirables sont ajoutés à vos URL. Cette option vous permet de les rediriger ailleurs. Veuillez noter que même si cette option est activement mise à jour, elle est aussi reconnue pour causer des problèmes avec d’autres extensions et donc, si vous avez un problème, il est recommandé de désactiver cette option d’abord."
+
+#: admin/views/tab-breadcrumbs.php:17
+msgid "Enable Breadcrumbs"
+msgstr "Activer le fil d’Ariane"
+
+#: admin/views/tab-breadcrumbs.php:21
+msgid "Separator between breadcrumbs"
+msgstr "Séparateur pour le fil d’Ariane "
+
+#: admin/views/tab-breadcrumbs.php:22
+msgid "Anchor text for the Homepage"
+msgstr "Texte d’ancrage pour la page d’accueil "
+
+#: admin/views/tab-breadcrumbs.php:23
+msgid "Prefix for the breadcrumb path"
+msgstr "Préfixe pour le fil d’Ariane "
+
+#: admin/views/tab-breadcrumbs.php:24
+msgid "Prefix for Archive breadcrumbs"
+msgstr "Préfixe pour le fil d’Ariane des archives "
+
+#: admin/views/tab-breadcrumbs.php:25
+msgid "Prefix for Search Page breadcrumbs"
+msgstr "Préfixe pour le fil d’Ariane des pages de recherche "
+
+#: admin/views/tab-breadcrumbs.php:26
+msgid "Breadcrumb for 404 Page"
+msgstr "Fil d’Ariane pour la page 404 "
+
+#: admin/views/tab-breadcrumbs.php:79
+msgid "How to insert breadcrumbs in your theme"
+msgstr "Comment insérer un fil d’Ariane dans votre thème ?"
+
+#: admin/views/tool-file-editor.php:101
+msgid "If your robots.txt were writable, you could edit it from here."
+msgstr "Si votre fichier robots.txt était accessible en écriture, vous pourriez le modifier à partir d’ici."
+
+#: admin/views/tool-file-editor.php:127
+msgid "If your .htaccess were writable, you could edit it from here."
+msgstr "Si votre fichier .htaccess était accessible en écriture, vous pourriez le modifier à partir d’ici."
+
+#: admin/views/tab-rss.php:15
+msgid "This feature is used to automatically add content to your RSS, more specifically, it's meant to add links back to your blog and your blog posts, so dumb scrapers will automatically add these links too, helping search engines identify you as the original source of the content."
+msgstr "Cette fonctionnalité est utilisée pour ajouter automatiquement du contenu à vos flux RSS, plus spécifiquement, pour ajouter des liens vers votre blog et vos articles. Les agrégateurs de contenus vont également ajouter ces liens, aidant ainsi les moteurs de recherche à identifier votre site comme étant l’origine du contenu."
+
+#: admin/views/tab-rss.php:29
+msgid "A link to the archive for the post author, with the authors name as anchor text."
+msgstr "Un lien vers les archives de l’auteur, avec le nom de l’auteur comme texte d’ancrage."
+
+#: admin/views/tab-rss.php:33
+msgid "A link to the post, with the title as anchor text."
+msgstr "Un lien vers l’article, avec le titre comme texte d’ancrage."
+
+#: admin/views/tab-rss.php:37
+msgid "A link to your site, with your site's name as anchor text."
+msgstr "Un lien vers votre site, avec le nom de votre site comme texte d’ancrage."
+
+#: admin/views/tab-rss.php:41
+msgid "A link to your site, with your site's name and description as anchor text."
+msgstr "Un lien vers votre site, avec le nom de votre site et la description comme texte d’ancrage."
+
+#: admin/pages/xml-sitemaps.php:54
+msgid "You do <strong>not</strong> need to generate the XML sitemap, nor will it take up time to generate after publishing a post."
+msgstr "Vous n’avez <strong>pas</strong> besoin de générer le fichier sitemap XML, pas plus qu’il ne faudra de temps pour le mettre à jour à chaque nouvel article."
+
+#: frontend/class-frontend.php:558
+#: inc/options/class-wpseo-option-titles.php:180
+msgid "Page not found"
+msgstr "Page non trouvée"
+
+#: frontend/class-frontend.php:1253
+msgid "Admin only notice: this page doesn't show a meta description because it doesn't have one, either write it for this page specifically or go into the SEO -> Titles menu and set up a template."
+msgstr "Avis pour l’administrateur : cette page n’affiche pas de méta description car elle n’en a pas. Vous pouvez donc soit l’ajouter spécifiquement pour cette page soit vous rendre dans vos réglages (SEO -> Titres) pour configurer un modèle."
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/pages/licenses.php:73
+msgid "%1$s Extensions"
+msgstr "Extensions de %1$s"
+
+#: admin/pages/metas.php:111 admin/pages/metas.php:171
+msgid "%1$s Meta Box"
+msgstr "%1$s Méta Box"
+
+#. translators: %1$s expands to Yoast SEO, %2$s expands to Google Analytics by
+#. Yoast
+#: admin/google_search_console/class-gsc-service.php:146
+msgid "%1$s detected you’re using a version of %2$s which is not compatible with %1$s. Please update %2$s to the latest version to use this feature."
+msgstr "%1$s a détecté que vous utiliser une version de %2$s qui est incompatible avec %1$s. Veuillez mettre à jour %2$s pour utiliser cette fonctionnalité."
+
+#: admin/pages/network.php:35
+msgid "%s restored to default SEO settings."
+msgstr "%s a été rétabli au réglages SEO par défaut."
+
+#: admin/pages/metas.php:220
+msgid "404 pages"
+msgstr "Pages 404"
+
+#: admin/pages/social.php:20
+msgid "Accounts"
+msgstr "Comptes"
+
+#. translators: %s expands to <code>noodp</code>
+#. translators: %s expands to <code>noydir</code>
+#: admin/pages/metas.php:238 admin/pages/metas.php:242
+msgid "Add %s meta robots tag sitewide"
+msgstr "Ajouter des méta étiquettes de robots %s sur tout le site"
+
+#. translators: %s expands to <code>noindex, follow</code>
+#: admin/pages/metas.php:203
+msgid "Add %s to the author archives"
+msgstr "Ajouter %s aux archives de l'auteur"
+
+#. translators: %s expands to <code>noindex, follow</code>
+#: admin/pages/metas.php:209
+msgid "Add %s to the date-based archives"
+msgstr "Ajoutez %s aux archives basées sur la date"
#: admin/pages/dashboard.php:235
-msgid "Bing Webmaster Tools"
-msgstr "Outils pour webmasters de Bing "
+msgid "Alexa Verification ID"
+msgstr "ID de vérification Alexa "
+
+#: admin/pages/dashboard.php:204
+msgid "Alternate name"
+msgstr "Autre nom"
+
+#: admin/pages/dashboard.php:191
+msgid "Are you sure you want to reset your SEO settings?"
+msgstr "Êtes vous sûr de vouloir réinitialiser vos réglages de SEO ?"
#: admin/pages/network.php:38
msgid "Blog %s not found."
msgid "Blog ID"
msgstr "ID du blog"
-#: admin/pages/advanced.php:16
-msgid "Breadcrumbs"
-msgstr "Fils d'Ariane"
-
-#: admin/pages/network.php:109
-msgid "Choose the site whose settings you want to use as default for all sites that are added to your network. If you choose 'None', the normal plugin defaults will be used."
-msgstr "Choisissez le site dont les réglages serviront de base à tous les nouveaux sites de votre réseau. Si vous choisissez 'Aucun', les réglages par défaut de WordPress SEO seront utilisés."
-
-#: admin/pages/metas.php:56
-msgid "Choose the symbol to use as your title separator. This will display, for instance, between your post title and site name."
-msgstr "Choisisssez le symbole à utiliser en temps que séparateur. Il apparaîtra, par exemple, entre le titre de l'article et le nom du site."
-
-#: admin/pages/dashboard.php:214
+#: admin/pages/dashboard.php:215
msgid "Choose whether you're a company or person"
msgstr "Précisez si vous êtes une société ou une personne"
-#: admin/pages/dashboard.php:215 admin/pages/dashboard.php:220
+#: admin/pages/dashboard.php:216 admin/pages/dashboard.php:221
msgid "Company"
msgstr "Société"
msgid "Company Info"
msgstr "Informations sur la société"
-#: admin/pages/dashboard.php:223
+#: admin/pages/dashboard.php:224
msgid "Company Logo"
msgstr "Logo de la société"
-#: admin/pages/dashboard.php:222
+#: admin/pages/dashboard.php:223
msgid "Company Name"
msgstr "Nom de la société"
-#: admin/pages/dashboard.php:205 admin/pages/dashboard.php:213
+#: admin/pages/dashboard.php:206 admin/pages/dashboard.php:214
msgid "Company or person"
msgstr "Société ou personne "
-#: admin/google_search_console/class-gsc.php:128
-msgid "Crawl errors per page"
-msgstr "Erreurs d'exploration par page"
-
#: admin/google_search_console/class-gsc-table.php:206
msgid "Create a redirect"
msgstr "Créer une redirection"
msgid "Date Archives"
msgstr "Archives par date"
-#: admin/pages/metas.php:109
-msgid "Date in Snippet Preview"
-msgstr "Date dans la prévisualisation de l'élément "
-
#: admin/pages/metas.php:206
msgid "Date-based archives could in some cases also be seen as duplicate content."
msgstr "Les archives basées sur la date pourraient, dans certains cas également être considérées comme du contenu dupliqué."
msgstr "Ordinateur"
#. translators: %1$s expands to Yoast SEO
-#: admin/pages/dashboard.php:244
+#: admin/pages/dashboard.php:245
msgid "Disable the Advanced part of the %1$s meta box"
msgstr "Désactiver les options avancées de la boite méta de %1$s."
msgid "Duplicate content prevention"
msgstr "Prévention de contenu dupliqué"
-#: admin/pages/dashboard.php:72
-msgid "Earlier found meta description was not found in file. Renewed the description test data."
-msgstr "Les méta descriptions précédentes n'ont pas été trouvé dans le fichier.Mise en place des données de test."
-
-#. translators: %1$s expands to Yoast SEO
-#: admin/pages/dashboard.php:112
-msgid "Either delete them (this can be done with the \"Fix it\" button) or disable %1$s XML sitemaps."
-msgstr "Vous pouvez soit les supprimer (ce qui peut être fait avec le bouton \"Corriger\") soit désactiver les sitemaps XML de %1$s."
-
#: admin/pages/metas.php:40
msgid "Enable force rewrite titles"
msgstr "Activer la réécriture forcée des titres "
-#: admin/pages/network.php:113
-msgid "Enter the %sSite ID%s for the site whose settings you want to use as default for all sites that are added to your network. Leave empty for none (i.e. the normal plugin defaults will be used)."
-msgstr "Saisissez '%sID du site%s que vous utiliserez comme base pour les réglages de tous les nouveaux sites ajoutés à votre réseau. Laissez vide pour n'en choisir aucun. (Les réglages par défaut de WordPress SEO seront alors utilisés)."
-
#: admin/google_search_console/views/gsc-create-redirect.php:46
msgid "Error: a redirect for this URL already exists"
msgstr "Erreur : une redirection pour cette adresse existe déjà."
-#: admin/google_search_console/class-gsc.php:282
-msgid "Errors that occurred only when your site was crawled by Googlebot-Mobile (errors didn't appear for desktop)."
-msgstr "Les erreurs qui se sont produites lors de l'exploration du Googlebot (les erreurs n'apparaissent pas pour les desktops)."
-
-#: admin/google_search_console/class-gsc.php:281
-msgid "Errors that occurred when your site was crawled by Googlebot."
-msgstr "Les erreurs qui se sont produites lors de l'exploration du Googlebot."
-
-#: admin/google_search_console/class-gsc.php:283
-msgid "Errors that only occurred when your site was crawled by Googlebot for feature phones (errors didn't appear for desktop)."
-msgstr "Les erreurs qui se sont produites lors de l'exploration du Googlebot pour les téléphones portables (les erreurs n'apparaissent pas dans les desktops)."
-
#: admin/pages/dashboard.php:65
msgid "Failed to remove hardcoded meta description."
msgstr "Impossible de supprimer la méta description saisie en dur."
msgid "First detected"
msgstr "Premier détecté"
-#: admin/pages/dashboard.php:104 admin/pages/dashboard.php:119
-#: admin/pages/dashboard.php:130 admin/pages/dashboard.php:137
-msgid "Fix it."
-msgstr "Corriger."
-
#: admin/pages/metas.php:36
msgid "Force rewrite titles"
msgstr "Forcer la réécriture des titres"
-#: admin/google_search_console/views/gsc-display.php:34
-msgid "Get Google Authorization Code"
-msgstr "Obtenir un Code d'Autorisation Google"
-
#: admin/pages/licenses.php:99
msgid "Get this extension"
msgstr "Obtenez cette extension"
-#: admin/pages/dashboard.php:198
-msgid "Google shows your website's name in the search results, we will default to your site name but you can adapt it here. You can also provide an alternate website name you want Google to consider."
-msgstr "Google affiche le nom de votre site web, nous nous basons sur votre nom de site mais vous pouvez l'adapter ici. Vous pouvez également fournir un nom de site web alternatif si vous souhaitez que Google le prenne en considération aussi."
-
#. translators: %1$s expands to Yoast SEO
#: admin/pages/metas.php:111 admin/pages/metas.php:171
msgid "Hide"
msgstr "Masquer"
-#: admin/pages/metas.php:21 admin/pages/metas.php:65
-msgid "Homepage"
-msgstr "Page d'accueil"
-
-#: admin/pages/metas.php:74
-msgid "Homepage & Front page"
-msgstr "Page d'accueil & Première page"
-
#: admin/pages/metas.php:233
msgid "I don't know why you'd want to use meta keywords, but if you want to, check this box."
msgstr "Je ne sais pas pourquoi vous voulez utiliser les méta keywords, mais si vous voulez le faire, cochez cette case."
-#. translators: %s expands to <code>noindex, follow</code>
-#: admin/pages/metas.php:200
-msgid "If this is the case on your site, you can choose to either disable it (which makes it redirect to the homepage), or to add %s to it so it doesn't show up in the search results."
-msgstr "Si c'est le cas pour votre site, vous pouvez choisir de le désactiver (ce qui la redirigera vers la page d'accueil), ou d'y ajouter %s, de sorte qu'il n'apparaisse pas dans les résultats de recherche."
-
-#: admin/pages/metas.php:230
-msgid "If you want to prevent /page/2/ and further of any archive to show up in the search results, enable this."
-msgstr "Si vous voulez éviter /page/2/ et les suivantes d'une archive d'apparaître dans les résultats de la recherche, activez cette option."
-
#. translators: %s expands to Yoast SEO
-#: admin/pages/dashboard.php:185
+#: admin/pages/dashboard.php:186
msgid "If you want to restore a site to the default %s settings, press this button."
msgstr "Si vous souhaitez réinitialiser les réglages de %s de votre site, appuyez sur ce bouton."
-#. translators: %1$s / %2$s: links to an article about duplicate content on
-#. yoast.com
-#: admin/pages/metas.php:197
-msgid "If you're running a one author blog, the author archive will be exactly the same as your homepage. This is what's called a %1$sduplicate content problem%2$s."
-msgstr "Si vous administrez un blog avec un seul auteur, la page d'archive de l'auteur sera exactement identique à votre page d'accueil. C'est ce qu'on appelle un %1$sproblème de contenu dupliqué%2$s."
-
#: admin/pages/dashboard.php:131 admin/pages/dashboard.php:138
msgid "Ignore."
msgstr "Ignorer."
-#: admin/google_search_console/class-gsc.php:223
-msgid "Incorrect Google Authorization Code."
-msgstr "Code d'autorisation de Google incorrect."
-
-#: admin/pages/dashboard.php:156
+#: admin/pages/dashboard.php:157
msgid "Introduction Tour"
msgstr "Visite guidée"
msgid "Last crawled"
msgstr "Dernière exploration"
-#: admin/pages/dashboard.php:168
+#: admin/pages/dashboard.php:169
msgid "Latest Changes"
msgstr "Derniers changements"
msgid "Noindex subpages of archives"
msgstr "Ne pas indexer les sous-pages des archives"
-#: admin/pages/metas.php:134
-msgid "Note: instead of templates these are the actual titles and meta descriptions for these custom post type archive pages."
-msgstr "Remarque : au lieu d'utiliser les modèles, ce sont les vrais titres et méta descriptions pour les pages archives des articles de type personnalisé."
-
-#: admin/pages/licenses.php:24
-msgid "Optimize your videos to show them off in search results and get more clicks!"
-msgstr "Optimisez vos vidéos pour qu'elles apparaissent dans les résultats des recherches et obtenir plus de clics !"
-
-#: admin/pages/dashboard.php:139
-msgid "Paging comments is enabled, this is not needed in 999 out of 1000 cases, so the suggestion is to disable it, to do that, simply uncheck the box before \"Break comments into pages...\""
-msgstr "La pagination des commentaires est activée, ce qui n'est pas nécessaire dans 999 cas sur 1000, donc la suggestion est de le désactiver. Pour le faire, il suffit de décocher la case \"Diviser les commentaires en pages...\" dans les réglages de discussion."
-
#: admin/pages/advanced.php:20
msgid "Permalinks"
msgstr "Permaliens"
-#: admin/pages/dashboard.php:216 admin/pages/dashboard.php:227
-msgid "Person"
-msgstr "Personne"
-
-#: admin/google_search_console/views/gsc-display.php:36
-msgid "Please enter the Google Authorization Code in the field below and press the Authenticate button."
-msgstr "Veuillez saisir le code d'autorisation dans le champ ci-dessous et appuyez sur le bouton d'authentification."
-
-#: admin/pages/metas.php:236
-msgid "Prevents search engines from using the DMOZ description for pages from this site in the search results."
-msgstr "Empêche les moteurs de recherche d'utiliser la description de DMOZ pour les pages de ce site dans les résultats de recherche."
-
-#: admin/pages/metas.php:240
-msgid "Prevents search engines from using the Yahoo! directory description for pages from this site in the search results."
-msgstr "Empêche les moteurs de recherche d'utiliser la description du répertoire de Yahoo! pour les pages de ce site dans les résultats de recherche."
+#: admin/pages/dashboard.php:217 admin/pages/dashboard.php:228
+msgid "Person"
+msgstr "Personne"
#: admin/pages/network.php:115
msgid "Privacy sensitive (FB admins and such), theme specific (title rewrite) and a few very site specific settings will not be imported to new blogs."
msgid "Reauthenticate with Google "
msgstr "Se ré-authentifier avec Google"
-#: admin/google_search_console/views/gsc-create-redirect.php:21
-msgid "Redirect this broken URL and fix the error"
-msgstr "Rediriger cette adresse cassé et réglé l'erreur."
-
-#: admin/google_search_console/views/gsc-display.php:16
-msgid "Reload crawl issues"
-msgstr "Recharger les problèmes d'exploration"
-
#: admin/pages/dashboard.php:59
msgid "Removed hardcoded meta description."
msgstr "La méta description codée en dure a été supprimée."
msgid "Response code"
msgstr "Code de réponse"
-#: admin/pages/dashboard.php:182 admin/pages/dashboard.php:190
+#: admin/pages/dashboard.php:183 admin/pages/dashboard.php:191
msgid "Restore Default Settings"
msgstr "Restaurer les réglages par défaut"
msgid "Take note:"
msgstr "À savoir :"
-#: admin/pages/dashboard.php:157
+#: admin/pages/dashboard.php:158
msgid "Take this tour to quickly learn about the use of this plugin."
msgstr "Profitez de cette visite guidée pour apprendre rapidement comment utiliser cette extension."
-#: admin/pages/metas.php:23 admin/pages/xml-sitemaps.php:43
-msgid "Taxonomies"
-msgstr "Taxonomies"
-
#. Translators: %1$s: expands to Google Search Console.
#: admin/google_search_console/class-gsc.php:179
msgid "The %1$s data has been removed. You will have to reauthenticate if you want to retrieve the data again."
msgstr "La %1$s a été supprimée. Vous devrez vous réauthentifier si vous voulez retrouvez vos données."
-#: admin/pages/dashboard.php:105
-msgid "The following file(s) is/are blocking your XML sitemaps from working properly:"
-msgstr "Le(s) fichier(s) suivant(s) empêche(nt) vos sitemaps XML de fonctionner correctement :"
-
#. translators: %1$s expands to Yoast SEO
#: admin/pages/licenses.php:18
msgid "The premium version of %1$s with more features & support."
msgstr "La version Premium de %1$s avec plus de fonctionnalités & de support."
-#: admin/google_search_console/class-gsc-category-filters.php:121
-msgid "The target URL doesn't exist, but your server is not returning a 404 (file not found) error."
-msgstr "L'URL cible n'existe pas mais le serveur ne retourne pas d'erreur 404 (fichier non trouvé)."
-
-#: admin/google_search_console/views/gsc-display.php:72
-msgid "There were no profiles found"
-msgstr "Aucun profil n'a été trouvé. "
-
-#. translators: %s expands to <code>noindex, follow</code>
-#: admin/pages/metas.php:216
-msgid "These pages will be %s by default, so they will never show up in search results."
-msgstr "Ces pages seront réglées sur %s par défaut, donc elles n'apparaitront jamais dans les résultats de recherche."
-
-#: admin/pages/licenses.php:117
-msgid "This is where you would enter the license keys for one of our premium plugins, should you activate one."
-msgstr "Enregistrez ici la clé de licence de l'une de vos extensions premium si vous voulez l'activer."
-
#: admin/pages/metas.php:140 admin/pages/social.php:61
#: admin/views/tool-bulk-editor.php:33
msgid "Title"
msgid "URL"
msgstr "URL"
-#: admin/pages/dashboard.php:242
+#: admin/pages/dashboard.php:243
msgid "Unchecking this box allows authors and editors to redirect posts, noindex them and do other things you might not want if you don't trust your authors."
msgstr "Décocher cette case permet aux auteurs et aux éditeurs de rediriger les articles, ne pas les indexer (noindex) et faire d'autres choses que vous pourriez ne pas vouloir si vous n'avez pas confiance en eux."
msgid "Using this form you can reset a site to the default SEO settings."
msgstr "Grâce à ce formulaire, vous pouvez réinitialiser les réglages SEO de votre site aux réglages par défaut."
-#: admin/pages/dashboard.php:176
+#: admin/pages/dashboard.php:177
msgid "View Changes"
msgstr "Voir les changements"
#. translators: %s expands to Yoast SEO
-#: admin/pages/dashboard.php:171
+#: admin/pages/dashboard.php:172
msgid "We've summarized the most recent changes in %s."
msgstr "Nous avons résumé les changements les plus récents dans %s."
msgid "Webmaster Tools"
msgstr "Outils pour les webmasters"
-#: admin/pages/dashboard.php:195 admin/pages/dashboard.php:202
+#: admin/pages/dashboard.php:196 admin/pages/dashboard.php:203
msgid "Website name"
msgstr "Nom du Site Web"
msgid "Who should have access to the %1$s settings"
msgstr "Qui devrait avoir accès aux réglages de %1$s"
-#: admin/pages/dashboard.php:237
+#: admin/pages/dashboard.php:238
msgid "Yandex Webmaster Tools"
msgstr "Outils pour webmaster de Yandex "
-#: admin/google_search_console/class-gsc-service.php:137
-msgid "Yoast plugins share some code between them to make your site faster. As a result of that, we need all Yoast plugins to be up to date. We've detected this isn't the case, so please update the Yoast plugins that aren't up to date yet."
-msgstr "Les extensions de Yoast partagent du code entre elles pour les rendre plus rapide. Cela suppose qu'elles soient toutes à jour. Nous avons détecté que ce n'est pas le cas, donc veuillez mettre à jour toutes les extensions de Yoast qui ne le sont pas."
-
#: admin/pages/metas.php:78
msgid "You can determine the title and description for the blog page by %sediting the blog page itself »%s"
msgstr "Vous pouvez définir le titre et la description pour la page du blog en %smodifiant la page de blog directement »%s"
-#: admin/pages/metas.php:75
-msgid "You can determine the title and description for the front page by %sediting the front page itself »%s"
-msgstr "Vous pouvez déterminer le titre et la description de la page d'accueil en %smodifiant la page d'accueil directement »%s"
-
-#: admin/pages/dashboard.php:233
-msgid "You can use the boxes below to verify with the different Webmaster Tools, if your site is already verified, you can just forget about these. Enter the verify meta values for:"
-msgstr "Vous pouvez utiliser les cases ci-dessous pour permettre la vérification de votre site avec différents outils pour webmasters. Si votre site l'est déjà, vous pouvez simplement les oublier. Entrez les valeurs de vérification méta pour :"
-
-#. Translators: %1$s: expands to the current url and %2$s expands to url the
-#. redirects points to.
-#: admin/google_search_console/views/gsc-create-redirect.php:51
-msgid "You do not have to create a redirect for URL %1$s because a redirect already exists. The existing redirect points to %2$s. If this is fine you can mark this issue as fixed. If not, please go to the redirects page and change the target URL."
-msgstr "Vous n'avez pas à créer une redirection pour l'adresse %1$s car la redirection existe déjà. La redirection existante pointe vers %2$s. Si c'est bon, vous pouvez marquer ce problème comme réglé. Si ça ne l'est pas, rendez-vous dans la page des redirections et modifiez l'url cible."
-
-#: admin/pages/dashboard.php:132
-msgid "You do not have your postname in the URL of your posts and pages, it is highly recommended that you do. Consider setting your permalink structure to <strong>/%postname%/</strong>."
-msgstr "Vous n'avez pas le nom de l'article dans l'URL de vos articles et pages. Il est fortement recommandé de l'avoir. Il est suggéré d'ajuster la structure de vos permaliens pour <strong>/%postname%/</strong>."
-
#: admin/pages/dashboard.php:147
msgid "Your Info"
msgstr "Vos informations"
-#: admin/pages/dashboard.php:228
+#: admin/pages/dashboard.php:229
msgid "Your name"
msgstr "Votre nom "
msgid "To be able to create a redirect and fix this issue, you need %1$s. You can buy the plugin, including one year of support and updates, on %2$s."
msgstr "Pour pouvoir créer une redirection et régler ce problème, vous avez besoin de %1$s. Vous pouvez acheter l’extension, incluant un an de support et de mises à jour, sur %2$s."
-#: admin/google_search_console/class-gsc.php:79
-msgid "Don't miss your crawl errors: %1$sconnect with Google Search Console here%2$s."
-msgstr "Ne ratez pas vos erreurs d'exploration : %1$sconnectez-vous avec votre Google Search Console ici%2$s."
-
#: admin/google_search_console/class-gsc.php:192
msgid "The issues have been successfully reloaded!"
msgstr "Les problèmes ont bien été rechargés !"
-#: admin/pages/dashboard.php:209
+#: admin/pages/metas.php:23 admin/pages/xml-sitemaps.php:43
+msgid "Taxonomies"
+msgstr "Taxinomies"
+
+#: admin/google_search_console/class-gsc.php:79
+msgid "Don't miss your crawl errors: %1$sconnect with Google Search Console here%2$s."
+msgstr "Ne ratez pas vos erreurs d’exploration : %1$sconnectez-vous avec votre Google Search Console ici%2$s."
+
+#: admin/google_search_console/views/gsc-create-redirect.php:21
+msgid "Redirect this broken URL and fix the error"
+msgstr "Rediriger cette adresse cassé et réglé l’erreur."
+
+#: admin/google_search_console/views/gsc-display.php:16
+msgid "Reload crawl issues"
+msgstr "Recharger les problèmes d’exploration"
+
+#: admin/google_search_console/views/gsc-display.php:34
+msgid "Get Google Authorization Code"
+msgstr "Obtenir un Code d’Autorisation Google"
+
+#: admin/google_search_console/views/gsc-display.php:36
+msgid "Please enter the Google Authorization Code in the field below and press the Authenticate button."
+msgstr "Veuillez saisir le code d’autorisation dans le champ ci-dessous et appuyez sur le bouton d’authentification."
+
+#: admin/google_search_console/views/gsc-display.php:40
+msgid "Authenticate"
+msgstr "S’authentifier"
+
+#: admin/google_search_console/views/gsc-display.php:72
+msgid "There were no profiles found"
+msgstr "Aucun profil n’a été trouvé. "
+
+#. Translators: %1$s: expands to the current url and %2$s expands to url the
+#. redirects points to.
+#: admin/google_search_console/views/gsc-create-redirect.php:51
+msgid "You do not have to create a redirect for URL %1$s because a redirect already exists. The existing redirect points to %2$s. If this is fine you can mark this issue as fixed. If not, please go to the redirects page and change the target URL."
+msgstr "Vous n’avez pas à créer une redirection pour l’adresse %1$s car la redirection existe déjà. La redirection existante pointe vers %2$s. Si c’est bon, vous pouvez marquer ce problème comme réglé. Si ça ne l’est pas, rendez-vous dans la page des redirections et modifiez l’url cible."
+
+#: admin/google_search_console/class-gsc-service.php:137
+msgid "Yoast plugins share some code between them to make your site faster. As a result of that, we need all Yoast plugins to be up to date. We've detected this isn't the case, so please update the Yoast plugins that aren't up to date yet."
+msgstr "Les extensions de Yoast partagent du code entre elles pour les rendre plus rapide. Cela suppose qu’elles soient toutes à jour. Nous avons détecté que ce n’est pas le cas, donc veuillez mettre à jour toutes les extensions de Yoast qui ne le sont pas."
+
+#: admin/google_search_console/class-gsc.php:128
+msgid "Crawl errors per page"
+msgstr "Erreurs d’exploration par page"
+
+#: admin/google_search_console/class-gsc.php:223
+msgid "Incorrect Google Authorization Code."
+msgstr "Code d’autorisation de Google incorrect."
+
+#: admin/google_search_console/class-gsc.php:281
+msgid "Errors that occurred when your site was crawled by Googlebot."
+msgstr "Les erreurs qui se sont produites lors de l’exploration du Googlebot."
+
+#: admin/google_search_console/class-gsc.php:282
+msgid "Errors that occurred only when your site was crawled by Googlebot-Mobile (errors didn't appear for desktop)."
+msgstr "Les erreurs qui se sont produites lors de l’exploration du Googlebot (les erreurs n’apparaissent pas pour les desktops)."
+
+#: admin/google_search_console/class-gsc.php:283
+msgid "Errors that only occurred when your site was crawled by Googlebot for feature phones (errors didn't appear for desktop)."
+msgstr "Les erreurs qui se sont produites lors de l’exploration du Googlebot pour les téléphones portables (les erreurs n’apparaissent pas dans les desktops)."
+
+#: admin/google_search_console/class-gsc-category-filters.php:121
+msgid "The target URL doesn't exist, but your server is not returning a 404 (file not found) error."
+msgstr "L’URL cible n’existe pas mais le serveur ne retourne pas d’erreur 404 (fichier non trouvé)."
+
+#: admin/pages/dashboard.php:199
+msgid "Google shows your website's name in the search results, we will default to your site name but you can adapt it here. You can also provide an alternate website name you want Google to consider."
+msgstr "Google affiche le nom de votre site web, nous nous basons sur votre nom de site mais vous pouvez l’adapter ici. Vous pouvez également fournir un nom de site web alternatif si vous souhaitez que Google le prenne en considération aussi."
+
+#. translators: %1$s / %2$s: links to an article about duplicate content on
+#. yoast.com
+#: admin/pages/metas.php:197
+msgid "If you're running a one author blog, the author archive will be exactly the same as your homepage. This is what's called a %1$sduplicate content problem%2$s."
+msgstr "Si vous administrez un blog avec un seul auteur, la page d’archive de l’auteur sera exactement identique à votre page d’accueil. C’est ce qu’on appelle un %1$sproblème de contenu dupliqué%2$s."
+
+#. translators: %s expands to <code>noindex, follow</code>
+#: admin/pages/metas.php:200
+msgid "If this is the case on your site, you can choose to either disable it (which makes it redirect to the homepage), or to add %s to it so it doesn't show up in the search results."
+msgstr "Si c’est le cas pour votre site, vous pouvez choisir de le désactiver (ce qui la redirigera vers la page d’accueil), ou d’y ajouter %s, de sorte qu’il n’apparaisse pas dans les résultats de recherche."
+
+#: admin/pages/advanced.php:16
+msgid "Breadcrumbs"
+msgstr "Fils d’Ariane"
+
+#: admin/pages/dashboard.php:210
msgid "This data is shown as metadata in your site. It is intended to appear in Google's Knowledge Graph. You can be either a company, or a person, choose either:"
-msgstr "Cette donnée est affichée comme une métadonnée dans votre site. Elle apparaît dans le Knowledge Graph de Google. Vous pouvez être une société ou une personne, choisissez l’un ou l'autre :"
+msgstr "Cette donnée est affichée comme une métadonnée dans votre site. Elle apparaît dans le Knowledge Graph de Google. Vous pouvez être une société ou une personne, choisissez l’un ou l’autre :"
+
+#: admin/pages/licenses.php:117
+msgid "This is where you would enter the license keys for one of our premium plugins, should you activate one."
+msgstr "Enregistrez ici la clé de licence de l’une de vos extensions premium si vous voulez l’activer."
+
+#: admin/pages/metas.php:56
+msgid "Choose the symbol to use as your title separator. This will display, for instance, between your post title and site name."
+msgstr "Choisisssez le symbole à utiliser en temps que séparateur. Il apparaîtra, par exemple, entre le titre de l’article et le nom du site."
+
+#: admin/pages/metas.php:99
+msgid "As you are redirecting attachment URLs to parent post URLs, these settings will currently only have an effect on <strong>unattached</strong> media items!"
+msgstr "Comme vous redirigre l’URL de la pièce jointe vers l’URL parent, ces paramètres n’auront d’effet que sur les médias <strong>non inclus</strong>"
+
+#: admin/pages/network.php:109
+msgid "Choose the site whose settings you want to use as default for all sites that are added to your network. If you choose 'None', the normal plugin defaults will be used."
+msgstr "Choisissez le site dont les réglages serviront de base à tous les nouveaux sites de votre réseau. Si vous choisissez ’Aucun’, les réglages par défaut de WordPress SEO seront utilisés."
+
+#: admin/pages/network.php:113
+msgid "Enter the %sSite ID%s for the site whose settings you want to use as default for all sites that are added to your network. Leave empty for none (i.e. the normal plugin defaults will be used)."
+msgstr "Saisissez ’%sID du site%s que vous utiliserez comme base pour les réglages de tous les nouveaux sites ajoutés à votre réseau. Laissez vide pour n’en choisir aucun. (Les réglages par défaut de WordPress SEO seront alors utilisés)."
+
+#: admin/pages/licenses.php:24
+msgid "Optimize your videos to show them off in search results and get more clicks!"
+msgstr "Optimisez vos vidéos pour qu’elles apparaissent dans les résultats des recherches et obtenir plus de clics !"
+
+#: admin/pages/licenses.php:30
+msgid "Are you in Google News? Increase your traffic from Google News by optimizing for it!"
+msgstr "Etes vous sur Google News ? Augmentez le trafic de Google News grâce à l’optimisation!"
+
+#: admin/pages/dashboard.php:72
+msgid "Earlier found meta description was not found in file. Renewed the description test data."
+msgstr "Les méta descriptions précédentes n’ont pas été trouvé dans le fichier.Mise en place des données de test."
+
+#: admin/pages/metas.php:109
+msgid "Date in Snippet Preview"
+msgstr "Date dans la prévisualisation de l’élément "
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/pages/metas.php:42
+msgid "%1$s has auto-detected whether it needs to force rewrite the titles for your pages, if you think it's wrong and you know what you're doing, you can change the setting here."
+msgstr "%1$s détecte automatiquement s’il a besoin de forcer la réécriture des titres de vos pages, si vous pensez que c’est incorrect et que vous savez ce que vous faites, vous pouvez modifier ce réglage ici."
+
+#: admin/pages/metas.php:230
+msgid "If you want to prevent /page/2/ and further of any archive to show up in the search results, enable this."
+msgstr "Si vous voulez éviter /page/2/ et les suivantes d’une archive d’apparaître dans les résultats de la recherche, activez cette option."
+
+#. translators: %s expands to <code>noindex, follow</code>
+#: admin/pages/metas.php:216
+msgid "These pages will be %s by default, so they will never show up in search results."
+msgstr "Ces pages seront réglées sur %s par défaut, donc elles n’apparaitront jamais dans les résultats de recherche."
+
+#: admin/pages/metas.php:21 admin/pages/metas.php:65
+msgid "Homepage"
+msgstr "Page d’accueil"
+
+#: admin/pages/metas.php:74
+msgid "Homepage & Front page"
+msgstr "Page d’accueil & Première page"
+
+#: admin/pages/metas.php:75
+msgid "You can determine the title and description for the front page by %sediting the front page itself »%s"
+msgstr "Vous pouvez déterminer le titre et la description de la page d’accueil en %smodifiant la page d’accueil directement »%s"
+
+#: admin/pages/metas.php:182
+msgid "Author Archives"
+msgstr "Archives de l’auteur"
+
+#: admin/pages/metas.php:134
+msgid "Note: instead of templates these are the actual titles and meta descriptions for these custom post type archive pages."
+msgstr "Remarque : au lieu d’utiliser les modèles, ce sont les vrais titres et méta descriptions pour les pages archives des articles de type personnalisé."
+
+#: admin/pages/metas.php:236
+msgid "Prevents search engines from using the DMOZ description for pages from this site in the search results."
+msgstr "Empêche les moteurs de recherche d’utiliser la description de DMOZ pour les pages de ce site dans les résultats de recherche."
+
+#: admin/pages/metas.php:240
+msgid "Prevents search engines from using the Yahoo! directory description for pages from this site in the search results."
+msgstr "Empêche les moteurs de recherche d’utiliser la description du répertoire de Yahoo! pour les pages de ce site dans les résultats de recherche."
+
+#: admin/pages/dashboard.php:104 admin/pages/dashboard.php:119
+#: admin/pages/dashboard.php:130 admin/pages/dashboard.php:137
+msgid "Fix it."
+msgstr "Réparez."
+
+#: admin/pages/dashboard.php:105
+msgid "The following file(s) is/are blocking your XML sitemaps from working properly:"
+msgstr "Le(s) fichier(s) suivant(s) empêche(nt) votre plan de site XML de fonctionner correctement :"
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/pages/dashboard.php:112
+msgid "Either delete them (this can be done with the \"Fix it\" button) or disable %1$s XML sitemaps."
+msgstr "Vous pouvez soit les supprimer (ce qui peut être fait avec le bouton « Réparez ») soit désactiver le plan de site XML de %1$s."
+
+#: admin/pages/dashboard.php:132
+msgid "You do not have your postname in the URL of your posts and pages, it is highly recommended that you do. Consider setting your permalink structure to <strong>/%postname%/</strong>."
+msgstr "Vous n’avez pas le nom de l’article dans l’URL de vos articles et pages. Il est fortement recommandé de l’avoir. Il est suggéré d’ajuster la structure de vos permaliens pour <strong>/%postname%/</strong>."
+
+#: admin/pages/dashboard.php:139
+msgid "Paging comments is enabled, this is not needed in 999 out of 1000 cases, so the suggestion is to disable it, to do that, simply uncheck the box before \"Break comments into pages...\""
+msgstr "La pagination des commentaires est activée, ce qui n’est pas nécessaire dans 999 cas sur 1000, donc la suggestion est de le désactiver. Pour le faire, il suffit de décocher la case \"Diviser les commentaires en pages...\" dans les réglages de discussion."
+
+#: admin/pages/dashboard.php:234
+msgid "You can use the boxes below to verify with the different Webmaster Tools, if your site is already verified, you can just forget about these. Enter the verify meta values for:"
+msgstr "Vous pouvez utiliser les cases ci-dessous pour permettre la vérification de votre site avec différents outils pour webmasters. Si votre site l’est déjà, vous pouvez simplement les oublier. Entrez les valeurs de vérification méta pour :"
+
+#: admin/pages/dashboard.php:236
+msgid "Bing Webmaster Tools"
+msgstr "Outils de Bing pour webmasters"
#. translators: %1$s expands to Yoast SEO
#: admin/taxonomy/class-taxonomy-metabox.php:55
msgid "%s Image"
msgstr "%s Image"
-#. translators: %s is the plugin name
-#: admin/class-yoast-dashboard-widget.php:41
-msgid "%s Posts Overview"
-msgstr "Vue d'ensemble des articles de %s"
-
#. translators: %s expands to the social network name
#: admin/class-social-admin.php:63
#: admin/taxonomy/class-taxonomy-social-fields.php:44
msgid "%s Title"
msgstr "%s Titre"
-#: admin/class-pointers.php:301
-msgid "A Sitemap is an XML file that lists the URLs for a site. It allows webmasters to include additional information about each URL: when it was last updated, how often it changes, and how important it is in relation to other URLs in the site. This allows search engines to crawl the site more intelligently."
-msgstr "Un plan de site est un fichier XML qui recense les URLs d'un site. Il permet aux webmasters d'inclure des informations complémentaires à propos de chaque URL: quand il a été mis à jour pour la dernière fois, à quelle fréquence il change, son importance par rapport aux autres URLs du site. Cela permet aux moteurs de recherche de parcourir le site de manière plus intelligente."
-
#: admin/google_search_console/class-gsc-category-filters.php:113
msgid "Access denied"
msgstr "Accès refusé"
msgid "Add some info here needed for Google's Knowledge Graph."
msgstr "Ajouter quelques informations nécessaire pour le Knowledge Graph de Google ici."
-#: admin/class-social-facebook.php:329
-msgid "Admin's Facebook user ID:"
-msgstr "ID d'utilisateur Facebook de l'administrateur :"
-
-#: admin/class-social-facebook.php:325
-msgid "Admin's name:"
-msgstr "Nom de l'administrateur :"
-
#: admin/class-pointers.php:317
msgid "Advanced Settings"
msgstr "Réglages avancés"
msgid "Blocked"
msgstr "Bloqué"
-#. translators: %1$s expands to Yoast SEO, %2$s: 'Google XML Sitemaps' plugin
-#. name of possibly conflicting plugin with regard to the creation of sitemaps
-#: admin/class-plugin-conflict.php:135
-msgid "Both %1$s and %2$s can create XML sitemaps. Having two XML sitemaps is not beneficial for search engines, yet might slow down your site."
-msgstr "%1$s et %2$s peuvent créer des sitemaps XML. Avoir deux sitemaps XML n'est pas recommandé pour les moteurs de recherche, et pourrait même ralentir votre site."
-
-#. translators: %1$s expands to Yoast SEO, %2%s: 'Facebook' plugin name of
-#. possibly conflicting plugin with regard to creating OpenGraph output
-#: admin/class-plugin-conflict.php:128
-msgid "Both %1$s and %2$s create OpenGraph output, which might make Facebook, Twitter, LinkedIn and other social networks use the wrong texts and images when your pages are being shared."
-msgstr "%1$s et %2$s créent des sorties OpenGraph, ce qui pourrait faire que Facebook, Twitter, LinkedIn et d'autres réseaux sociaux utilisent de mauvais textes et de mauvaises images lorsque vos pages sont partagées."
-
-#: admin/pages/metas.php:146
-#: admin/taxonomy/class-taxonomy-settings-fields.php:48
-msgid "Breadcrumbs title"
-msgstr "Titre du fil d'Ariane"
-
#: admin/taxonomy/class-taxonomy-settings-fields.php:44
msgid "Canonical"
msgstr "Canonique"
msgid "Close"
msgstr "Fermer"
-#. translators: %1$s expands to Yoast SEO
-#: admin/class-plugin-conflict.php:132
-msgid "Configure %1$s's OpenGraph settings"
-msgstr "Configurer les réglages de l'OpenGraph de %1$s"
-
#. translators: %1$s expands to Yoast SEO
#: admin/class-plugin-conflict.php:139
msgid "Configure %1$s's XML Sitemap settings"
msgid "Debug Information"
msgstr "Information de débug"
-#: admin/class-pointers.php:235
-msgid "Determine who has access to the plugins advanced settings on the post edit screen."
-msgstr "Définit qui a accès aux réglages avancés des extensions dans le menu d'édition d'un article."
-
#: admin/class-pointers.php:248
msgid "Email"
msgstr "E-mail"
msgstr "Facebook Insights et Admins"
#: admin/google_search_console/class-gsc-category-filters.php:114
-msgid "Faulty redirects"
-msgstr "Redirections défectueuses"
-
-#: admin/class-meta-columns.php:46
-msgid "Focus KW"
-msgstr "Mot-clé principal"
-
-#: admin/class-meta-columns.php:335
-msgid "Focus keyword not set."
-msgstr "Mot-clé principal non défini."
-
-#: admin/class-pointers.php:230
-msgid "General settings"
-msgstr "Réglages généraux"
-
-#: admin/google_search_console/class-gsc-category-filters.php:117
-msgid "Google was unable to crawl this URL due to an undetermined issue."
-msgstr "Google n'a pas pu exploré cette adresse en raison d'un problème indéterminé."
-
-#: admin/google_search_console/class-gsc-category-filters.php:119
-msgid "Googlebot could access your site, but certain URLs are blocked for Googlebot in your %1$s file. This block could either be for all Googlebots or even specifically for Googlebot-mobile."
-msgstr "Le Googlebot pourrait accéder à votre site, mais l'accès à certaines adresses est bloqué dans votre %1$s. Ce blocage pourrait être pour tous les Googlebot ou uniquement pour le Googlebot-mobile."
-
-#. translators: %1$s and %2$s expand to a link to the Yoast Knowledge Base
-#: admin/class-social-facebook.php:322
-msgid "If you don't know where to find the needed ID, see %1$sthis knowledge base article%2$s."
-msgstr "Si vous ne savez pas où trouver l'ID nécessaire, référez-vous à %1$scet article de notre base de connaissance%2$s."
-
-#. translators: %s expands to the social network's name
-#: admin/class-social-admin.php:36
-msgid "If you don't want to use the meta description for sharing the post on %s but want another description there, write it here."
-msgstr "Si vous ne souhaitez pas utiliser la méta description pour partager l'article sur %s mais voulez une autre description, inscrivez-la ici."
+msgid "Faulty redirects"
+msgstr "Redirections défectueuses"
-#. translators: %s expands to the social network's name
-#: admin/class-social-admin.php:34
-msgid "If you don't want to use the post title for sharing the post on %s but instead want another title there, write it here."
-msgstr "Si vous ne souhaitez pas utiliser le titre de l'article sur %s mais voulez au contraire un autre titre, enregistrez-le ici."
+#: admin/class-meta-columns.php:46
+msgid "Focus KW"
+msgstr "Mot-clé principal"
-#: admin/class-pointers.php:303
-msgid "If you want to exclude certain post types and/or taxonomies, you can also set that on this page."
-msgstr "Si vous souhaitez exclure certains types de contenu et/ou des taxonomies, vous pouvez également le faire sur cette page."
+#: admin/class-meta-columns.php:335
+msgid "Focus keyword not set."
+msgstr "Mot-clé principal non défini."
-#. translators: %s expands to the social network's name
-#: admin/class-social-admin.php:38
-msgid "If you want to override the image used on %s for this post, upload / choose an image or add the URL here."
-msgstr "Si vous voulez remplacer l'image utilisée pour cet article sur %s, téléchargez/choisissez une image ou ajoutez son URL ici."
+#: admin/class-pointers.php:230
+msgid "General settings"
+msgstr "Réglages généraux"
#. translators: %1$s expands to Yoast SEO
#: admin/class-pointers.php:245
msgid "If you would like us to keep you up-to-date regarding %1$s and other plugins by Yoast, subscribe to our newsletter:"
msgstr "Si vous voulez être tenu informé des nouveautés relatives à %1$s et aux autres extensions de Yoast, abonnez-vous à notre newsletter :"
-#: admin/class-pointers.php:304
-msgid "Is your webserver low on memory? Decrease the entries per sitemap (default: 1000) to reduce load."
-msgstr "Est-ce que votre serveur manque de mémoire ? Diminuez le nombre d'entrées du plan du site (par défaut : 1000) pour réduire la charge."
-
#: admin/class-pointers.php:335 admin/pages/licenses.php:78
msgid "Licenses"
msgstr "Licences"
msgid "Meta Desc."
msgstr "Méta Desc."
-#: admin/taxonomy/class-taxonomy-settings-fields.php:38
-msgid "Meta keywords used on the archive page for this term."
-msgstr "Meta keywords utilisé sur la page d'archive pour ce terme."
-
#. translators: %1$s expands to Yoast SEO
#: admin/class-pointers.php:238
msgid "More %1$s"
msgstr "En savoir plus sur %1$s"
-#. translators: %1$s and %2$s expand to a link to the Yoast Knowledge Base
-#: admin/class-social-facebook.php:301
-msgid "More info can be found %1$son our knowledge base%2$s."
-msgstr "Retrouvez plus d'information %1$sdans notre base de connaissance%2$s."
-
#: admin/taxonomy/class-taxonomy-settings-fields.php:92
#: admin/taxonomy/class-taxonomy.php:61
msgid "Never include"
msgid "OK"
msgstr "OK"
-#: admin/class-pointers.php:269
-msgid "On the Other tab you can change sitewide meta settings, like enable meta keywords."
-msgstr "Dans l'onglet Autre, vous pouvez modifier les réglages des méta pour tout le site, comme par exemple, activer les méta keywords."
-
-#: admin/class-pointers.php:268
-msgid "On the archives tab you can set templates for specific pages like author archives, search results and more."
-msgstr "Dans l'onglet des archives vous pouvez maintenant créer des modèles pour des pages spécifiques comme celles des archives d'auteur, des résultats de recherche et bien d'autres."
-
-#: admin/class-pointers.php:283
-msgid "On this tab you can enable the %1$sFacebook Open Graph%2$s functionality from this plugin, as well as assign a Facebook user or Application to be the admin of your site, so you can view the Facebook insights."
-msgstr "Dans cet onglet, vous pouvez activer la fonctionnalité de l'%1$sOpen Graph de Facebook%2$s, afin d'affecter à un utilisateur Facebook ou à une Application l'administration de votre site, et que vous puissiez voir les statistiques de Facebook."
-
#: admin/class-pointers.php:286
msgid "On this tab you can verify your site with Pinterest and enter your Pinterest account."
msgstr "Dans cet onglet, vous pouvez vérifier votre site avec Pinterest et saisir les données de votre compte Pinterest."
-#. translators: %1$s expands to Yoast SEO Premium
-#: admin/class-pointers.php:337
-msgid "Once you’ve purchased %1$s or any other premium Yoast plugin, you’ll have to enter a license key. You can do so on the Licenses-tab. Once you’ve activated your premium plugin, you can use all its powerful features."
-msgstr "Après l'achat de %1$s ou d'une autre extension premium de Yoast, vous devrez entrer une clé de licence. Vous pouvez le faire dans l'onglet Licences. Une fois votre extension premium activée, vous pouvez utiliser toutes ses puissantes fonctionnalités."
-
#: admin/class-pointers.php:269
#: admin/google_search_console/class-gsc-category-filters.php:117
#: admin/pages/metas.php:25
msgstr "Merci de vous assurez que les deux champs soient remplis."
#. translators: %s expands to <code>noindex</code>
-#: admin/class-yoast-dashboard-widget.php:155
+#: admin/class-yoast-dashboard-widget.php:158
msgid "Posts that are set to %s"
msgstr "Les articles sont réglés sur %s."
-#: admin/class-yoast-dashboard-widget.php:152
+#: admin/class-yoast-dashboard-widget.php:155
msgid "Posts with OK SEO score"
msgstr "Articles avec un score SEO OK"
-#: admin/class-yoast-dashboard-widget.php:151
+#: admin/class-yoast-dashboard-widget.php:154
msgid "Posts with bad SEO score"
msgstr "articles avec un mauvais score SEO "
-#: admin/class-yoast-dashboard-widget.php:153
+#: admin/class-yoast-dashboard-widget.php:156
msgid "Posts with good SEO score"
msgstr "Articles avec un bon score SEO"
-#: admin/class-yoast-dashboard-widget.php:150
+#: admin/class-yoast-dashboard-widget.php:153
msgid "Posts without focus keyword"
msgstr "Articles sans mot clé principal"
msgid "SEO: Post Noindexed"
msgstr "SEO : Article non indexé"
-#: admin/google_search_console/class-gsc-category-filters.php:113
-msgid "Server requires authentication or is blocking Googlebot from accessing the site."
-msgstr "Le serveur nécessite une authentification ou bloque l'accès au site au Googlebot."
-
#: admin/class-pointers.php:266
msgid "Sitewide settings"
msgstr "Réglages au niveau du site"
-#: admin/class-pointers.php:339
-msgid "So, we’ve come to the end of the tour. If you like the plugin, please %srate it 5 stars on WordPress.org%s!"
-msgstr "Nous sommes arrivés à la fin de la visite. Si vous aimez l'extension, s'il vous plaît %sdonnez-lui 5 étoiles sur WordPress.org%s !"
-
#: admin/class-pointers.php:282
msgid "Social settings"
msgstr "Réglages réseaux sociaux"
-#: admin/class-pointers.php:182 admin/pages/dashboard.php:161
+#: admin/class-pointers.php:182 admin/pages/dashboard.php:162
msgid "Start Tour"
msgstr "Commencer la visite"
msgid "Templates and settings"
msgstr "Modèles et réglages"
-#: admin/class-pointers.php:340
-msgid "Thank you for using our plugin and good luck with your SEO!<br/><br/>Best,<br/>Team Yoast - %1$sYoast.com%2$s"
-msgstr "Merci d'utiliser notre extension et bonne chance avec votre référencement !<br/><br/>Cordialement<br/>L'équipe Yoast - %1$sYoast.com%2$s"
-
-#. translators: %1$s: 'Facebook & Open Graph' plugin name(s) of possibly
-#. conflicting plugin(s), %2$s to Yoast SEO
-#: admin/class-yoast-plugin-conflict.php:163
-msgid "The %1$s plugin(s) might cause issues when used in conjunction with %2$s."
-msgstr "L'extension(s) %1$s pourrai(en)t provoquer des problèmes si utiliser en conjonction avec %2$s."
-
-#. translators: %s expands to the taxonomy name
-#: admin/taxonomy/class-taxonomy-settings-fields.php:50
-msgid "The Breadcrumbs title is used in the breadcrumbs where this %s appears."
-msgstr "Le titre est utilisé dans le fil d'Ariane où %s apparaît."
-
-#: admin/taxonomy/class-taxonomy-settings-fields.php:45
-msgid "The canonical link is shown on the archive page for this term."
-msgstr "Le lien canonique s'affiche sur la page d'archive pour ce terme."
-
-#: admin/metabox/class-metabox.php:745
-msgid "The featured image should be at least 200x200 pixels to be picked up by Facebook and other social media sites."
-msgstr "L'image à la Une doit être au moins de 200 x 200 pixels pour être capté par Facebook et d'autres sites de médias sociaux."
-
-#: admin/class-pointers.php:266
-msgid "The first tab will show you site-wide settings for titles, normally you'll only need to change the Title Separator."
-msgstr "Le premier onglet présente les réglages généraux pour les titres, normalement vous n'aurez besoin de modifier que le séparateur de titres."
-
-#: admin/class-pointers.php:284
-msgid "The frontpage settings allow you to set meta-data for your homepage, whereas the default settings allow you to set a fallback for all posts/pages without images. "
-msgstr "Les paramètres de première page vous permettent de définir des méta-données pour votre page d'accueil, alors que les paramètres par défaut vous permettent de définir une configuration pour tous les articles / pages sans images."
-
-#. translators: %1$s expands to Yoast SEO, %2$s to Yoast SEO Premium, %3$s and
-#. %4$s to an anchor with link about our premium plugins
-#: admin/class-pointers.php:333
-msgid "The powerful functions of %1$s can be extended with %3$sYoast premium plugins%4$s. These premium plugins require the installation of %1$s or %2$s and add specific functionality. You can read all about the Yoast Premium Plugins %3$shere%4$s."
-msgstr "Les puissantes fonctions de %1$s peuvent être encore améliorées avec les %3$sPlugins Yoast Premium%4$s. Ces extensions premium nécessitent l'installation de %1$s ou de %2$s et ajoutent des fonctionnalités spécifiques. Vous pouvez en savoir plus au sujet de ces extensions Yoast Premium en cliquant %3$sici%4$s."
-
-#. translators: %1$s expands to the social network, %2$s to the recommended
-#. image size
-#. translators: %1$s expands to the social network name, %2$s expands to the
-#. image size
-#: admin/class-social-admin.php:40
-#: admin/taxonomy/class-taxonomy-social-fields.php:63
-msgid "The recommended image size for %1$s is %2$spx."
-msgstr "La taille d'image recommandée pour %1$s est de %2$spx."
-
-#: admin/class-pointers.php:267
-msgid "The templates are built using variables. You can find all these variables in the help tab (in the top-right corner of the page). The settings allow you to set specific behavior for the post types."
-msgstr "Les modèles sont construits à base de variables. Vous pouvez retrouvez l'ensemble des variables dans l'onglet Aide (en haut à droite de la page). Les paramètres vous permettent de définir un comportement spécifique pour les types de contenu."
-
-#: admin/class-pointers.php:241
-msgid "There’s more to learn about WordPress & SEO than just using this plugin. A great start is our article %1$sthe definitive guide to WordPress SEO%2$s."
-msgstr "Il existe d'autres ressources concernant WordPress et le SEO qui dépassent l'usage de cette extension. Un très bon début est notre article %1$sle guide ultime du SEO pour WordPress%2$s"
-
#. translators: %1$s expands to Yoast SEO
#: admin/class-pointers.php:232
msgid "These are the General settings for %1$s, here you can restart this tour or revert the %1$s settings to default."
msgstr "Ce sont les réglages généraux de %1$s, vous pouvez relancer la présentation ou revenir aux réglages de %1$s par défaut."
-#. translators: %s expands to taxonomy name
-#: admin/taxonomy/class-taxonomy-settings-fields.php:59
-msgid "This %s follows the indexation rules set under Metas and Titles, you can override it here."
-msgstr "Ce %s suit les règles d'indexation définies dans les Métas et Titres, vous pouvez les remplacer ici."
-
#: admin/class-social-facebook.php:119
msgid "This Facebook user has already been added as an admin."
msgstr "Cet utilisateur Facebook a déjà été ajouté comme administrateur."
msgid "This plugin adds XML sitemaps to your site. The sitemaps are automatically updated when you publish a new post, page or custom post and Google and Bing will be automatically notified."
msgstr "Cette extension ajoute des cartes XML à votre site. Ces cartes sont automatiquement mises à jour lorsque vous publiez un nouvel article, une nouvelle page ou que vous modifiez un article. Les modifications sont automatiquement répercutées sur Google et Bing."
-#: admin/class-pointers.php:287
-msgid "This tab allows you to add specific post meta data for Google+. And if you have a Google+ page for your business, add that URL here and link it on your %1$sGoogle+%2$s page’s about page."
-msgstr "Cet onglet vous permet d'ajouter des méta-données spécifiques à soumettre à Google+. Et si vous avez une page Google+ pour votre entreprise, ajoutez l'URL ici et reliez-la à la page A propos de votre page %1$sGoogle+%2$"
-
#. translators: %1$s expands to Yoast SEO
#: admin/class-yoast-plugin-conflict.php:176
msgid "This warning is generated by %1$s."
msgid "Title & Metas settings"
msgstr "Réglages Titre et Métas"
-#. translators: %1$s and %2$s expand to a link to Facebook Insights
-#: admin/class-social-facebook.php:318
-msgid "To be able to access %1$sFacebook Insights%2$s, you need to add a user here. The name is used for reference only, the ID is used for verification."
-msgstr "Pour être en mesure d'accéder à %1$sFacebook Insights%2$s, vous devez ajouter un utilisateur ici. Le nom est utilisé à titre indicatif, l'ID est utilisée pour la vérification."
-
#: admin/class-social-facebook.php:293
msgid "To be able to access %sFacebook Insights%s for your site, you need to specify a Facebook Admin. This can be a user. If you have an app for your site, you could use that as well."
msgstr "Pour pouvoir accéder à %sFacebook Insights %s pour votre site, vous devez spécifier un administrateur Facebook. Cela peut être un utilisateur. Si vous avez une application pour votre site, vous pouvez aussi l'utiliser."
msgid "Twitter"
msgstr "Twitter"
-#: admin/google_search_console/class-gsc-category-filters.php:116
-msgid "URL points to a non-existent page."
-msgstr "L'adresse pointe vers une page inexistante."
-
#. translators: %1$s expands to Yoast SEO Premium
#: admin/class-yoast-form.php:235
msgid "Upgrade to %1$s »"
msgid "What are XML sitemaps?"
msgstr "En quoi consistent les plans de site au format XML ?"
-#: admin/class-pointers.php:302
-msgid "What does the plugin do with XML Sitemaps?"
-msgstr "Que fait l'extension avec les Sitemaps XML ?"
-
#: admin/class-pointers.php:285
msgid "With %1$sTwitter Cards%2$s, you can attach rich photos, videos and media experience to tweets that drive traffic to your website. Simply check the box, sign up for the service, and users who Tweet links to your content will have a “Card” added to the tweet that’s visible to all of their followers."
msgstr "Avec les %1$sCartes Twitter %2$s, vous pouvez joindre des photos, des vidéos et autres médias à vos tweets qui génèrent du trafic vers votre site. Il suffit de cocher la case, enregistrez-vous pour le service et les utilisateurs qui tweetent des liens vers votre contenu auront une “Carte” ajoutée dans leur tweet qui sera visible à tous leurs contacts. "
msgid "You can add the verification codes for the different Webmaster Tools programs here. We highly encourage you to check out both Google and Bing’s Webmaster Tools."
msgstr "Vous pouvez ajouter ici les codes de vérification des différents programmes de Webmaster Tools. Nous vous encourageons vivement à vérifier les outils pour Webmaster de Google et de Bing."
-#. translators: %1$s expands to Yoast SEO
-#: admin/class-pointers.php:176
-msgid "You’ve just installed %1$s! Click “Start Tour” to view a quick introduction of this plugin’s core functionality."
-msgstr "Vous venez d'installer %1$s ! Cliquez sur \"Commencer la visite\" pour afficher une rapide introduction des fonctions de base de l'extension."
+#: admin/class-social-facebook.php:116
+msgid "Your input contains invalid characters. Please make sure both fields are filled in correctly."
+msgstr "Votre saisie contient des caractères non valides. Veuillez vérifier que les deux champs soient correctement remplis."
+
+#: admin/class-pointers.php:303
+msgid "If you want to exclude certain post types and/or taxonomies, you can also set that on this page."
+msgstr "Si vous souhaitez exclure certains types de contenu et/ou des taxinomies, vous pouvez également le faire sur cette page."
+
+#. translators: %1$s and %2$s expand to a link to the Yoast Knowledge Base
+#: admin/class-social-facebook.php:322
+msgid "If you don't know where to find the needed ID, see %1$sthis knowledge base article%2$s."
+msgstr "Si vous ne savez pas où trouver l’ID nécessaire, référez-vous à %1$scet article de notre base de connaissance%2$s."
+
+#. translators: %s is the plugin name
+#: admin/class-yoast-dashboard-widget.php:41
+msgid "%s Posts Overview"
+msgstr "Vue d’ensemble des articles de %s"
+
+#. translators: %1$s: 'Facebook & Open Graph' plugin name(s) of possibly
+#. conflicting plugin(s), %2$s to Yoast SEO
+#: admin/class-yoast-plugin-conflict.php:163
+msgid "The %1$s plugin(s) might cause issues when used in conjunction with %2$s."
+msgstr "L’extension(s) %1$s pourrai(en)t provoquer des problèmes si utiliser en conjonction avec %2$s."
+
+#: admin/google_search_console/class-gsc-category-filters.php:113
+msgid "Server requires authentication or is blocking Googlebot from accessing the site."
+msgstr "Le serveur nécessite une authentification ou bloque l’accès au site au Googlebot."
+
+#: admin/google_search_console/class-gsc-category-filters.php:116
+msgid "URL points to a non-existent page."
+msgstr "L’adresse pointe vers une page inexistante."
+
+#: admin/google_search_console/class-gsc-category-filters.php:117
+msgid "Google was unable to crawl this URL due to an undetermined issue."
+msgstr "Google n’a pas pu exploré cette adresse en raison d’un problème indéterminé."
+
+#: admin/google_search_console/class-gsc-category-filters.php:119
+msgid "Googlebot could access your site, but certain URLs are blocked for Googlebot in your %1$s file. This block could either be for all Googlebots or even specifically for Googlebot-mobile."
+msgstr "Le Googlebot pourrait accéder à votre site, mais l’accès à certaines adresses est bloqué dans votre %1$s. Ce blocage pourrait être pour tous les Googlebot ou uniquement pour le Googlebot-mobile."
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/class-plugin-conflict.php:132
+msgid "Configure %1$s's OpenGraph settings"
+msgstr "Configurer les réglages de l’OpenGraph de %1$s"
+
+#. translators: %1$s and %2$s expand to a link to the Yoast Knowledge Base
+#: admin/class-social-facebook.php:301
+msgid "More info can be found %1$son our knowledge base%2$s."
+msgstr "Retrouvez plus d’information %1$sdans notre base de connaissance%2$s."
+
+#. translators: %1$s and %2$s expand to a link to Facebook Insights
+#: admin/class-social-facebook.php:318
+msgid "To be able to access %1$sFacebook Insights%2$s, you need to add a user here. The name is used for reference only, the ID is used for verification."
+msgstr "Pour être en mesure d’accéder à %1$sFacebook Insights%2$s, vous devez ajouter un utilisateur ici. Le nom est utilisé à titre indicatif, l’ID est utilisée pour la vérification."
+
+#: admin/class-social-facebook.php:325
+msgid "Admin's name:"
+msgstr "Nom de l’administrateur :"
+
+#: admin/class-social-facebook.php:329
+msgid "Admin's Facebook user ID:"
+msgstr "ID d’utilisateur Facebook de l’administrateur :"
+
+#. translators: %1$s expands to the social network, %2$s to the recommended
+#. image size
+#. translators: %1$s expands to the social network name, %2$s expands to the
+#. image size
+#: admin/class-social-admin.php:40
+#: admin/taxonomy/class-taxonomy-social-fields.php:63
+msgid "The recommended image size for %1$s is %2$spx."
+msgstr "La taille d’image recommandée pour %1$s est de %2$spx."
+
+#: admin/metabox/class-metabox.php:746
+msgid "The featured image should be at least 200x200 pixels to be picked up by Facebook and other social media sites."
+msgstr "L’image à la Une doit être au moins de 200 x 200 pixels pour être capté par Facebook et d’autres sites de médias sociaux."
+
+#. translators: %1$s expands to Yoast SEO, %2%s: 'Facebook' plugin name of
+#. possibly conflicting plugin with regard to creating OpenGraph output
+#: admin/class-plugin-conflict.php:128
+msgid "Both %1$s and %2$s create OpenGraph output, which might make Facebook, Twitter, LinkedIn and other social networks use the wrong texts and images when your pages are being shared."
+msgstr "%1$s et %2$s créent des sorties OpenGraph, ce qui pourrait faire que Facebook, Twitter, LinkedIn et d’autres réseaux sociaux utilisent de mauvais textes et de mauvaises images lorsque vos pages sont partagées."
+
+#. translators: %1$s expands to Yoast SEO, %2$s: 'Google XML Sitemaps' plugin
+#. name of possibly conflicting plugin with regard to the creation of sitemaps
+#: admin/class-plugin-conflict.php:135
+msgid "Both %1$s and %2$s can create XML sitemaps. Having two XML sitemaps is not beneficial for search engines, yet might slow down your site."
+msgstr "%1$s et %2$s peuvent créer des sitemaps XML. Avoir deux sitemaps XML n’est pas recommandé pour les moteurs de recherche, et pourrait même ralentir votre site."
+
+#: admin/class-pointers.php:235
+msgid "Determine who has access to the plugins advanced settings on the post edit screen."
+msgstr "Définit qui a accès aux réglages avancés des extensions dans le menu d’édition d’un article."
+
+#: admin/class-pointers.php:266
+msgid "The first tab will show you site-wide settings for titles, normally you'll only need to change the Title Separator."
+msgstr "Le premier onglet présente les réglages généraux pour les titres, normalement vous n’aurez besoin de modifier que le séparateur de titres."
+
+#: admin/class-pointers.php:268
+msgid "On the archives tab you can set templates for specific pages like author archives, search results and more."
+msgstr "Dans l’onglet des archives vous pouvez maintenant créer des modèles pour des pages spécifiques comme celles des archives d’auteur, des résultats de recherche et bien d’autres."
+
+#: admin/class-pointers.php:269
+msgid "On the Other tab you can change sitewide meta settings, like enable meta keywords."
+msgstr "Dans l’onglet Autre, vous pouvez modifier les réglages des méta pour tout le site, comme par exemple, activer les méta keywords."
+
+#. translators: %1$s expands to Yoast SEO, %2$s to Yoast SEO Premium, %3$s and
+#. %4$s to an anchor with link about our premium plugins
+#: admin/class-pointers.php:333
+msgid "The powerful functions of %1$s can be extended with %3$sYoast premium plugins%4$s. These premium plugins require the installation of %1$s or %2$s and add specific functionality. You can read all about the Yoast Premium Plugins %3$shere%4$s."
+msgstr "Les puissantes fonctions de %1$s peuvent être encore améliorées avec les %3$sPlugins Yoast Premium%4$s. Ces extensions premium nécessitent l’installation de %1$s ou de %2$s et ajoutent des fonctionnalités spécifiques. Vous pouvez en savoir plus au sujet de ces extensions Yoast Premium en cliquant %3$sici%4$s."
+
+#: admin/class-pointers.php:340
+msgid "Thank you for using our plugin and good luck with your SEO!<br/><br/>Best,<br/>Team Yoast - %1$sYoast.com%2$s"
+msgstr "Merci d’utiliser notre extension et bonne chance avec votre référencement !<br/><br/>Cordialement<br/>L’équipe Yoast - %1$sYoast.com%2$s"
+
+#. translators: %s expands to the social network's name
+#: admin/class-social-admin.php:34
+msgid "If you don't want to use the post title for sharing the post on %s but instead want another title there, write it here."
+msgstr "Si vous ne souhaitez pas utiliser le titre de l’article sur %s mais voulez au contraire un autre titre, enregistrez-le ici."
+
+#. translators: %s expands to the social network's name
+#: admin/class-social-admin.php:36
+msgid "If you don't want to use the meta description for sharing the post on %s but want another description there, write it here."
+msgstr "Si vous ne souhaitez pas utiliser la méta description pour partager l’article sur %s mais voulez une autre description, inscrivez-la ici."
+
+#. translators: %s expands to the social network's name
+#: admin/class-social-admin.php:38
+msgid "If you want to override the image used on %s for this post, upload / choose an image or add the URL here."
+msgstr "Si vous voulez remplacer l’image utilisée pour cet article sur %s, téléchargez/choisissez une image ou ajoutez son URL ici."
+
+#: admin/class-pointers.php:241
+msgid "There’s more to learn about WordPress & SEO than just using this plugin. A great start is our article %1$sthe definitive guide to WordPress SEO%2$s."
+msgstr "Il existe d’autres ressources concernant WordPress et le SEO qui dépassent l’usage de cette extension. Un très bon début est notre article %1$sle guide ultime du SEO pour WordPress%2$s"
+
+#: admin/class-pointers.php:265
+msgid "This is where you\tset the titles and meta-information for all your post types, taxonomies, archives, special pages and for your homepage. The page is divided into different tabs. Make sure you check ’em all out!"
+msgstr "Vous pouvez définir ici les titres et les méta-informations pour vos types de contenus, taxinomies, archives, pages spéciales, et page d’accueil. Cette page est divisée en plusieurs onglets, pensez à tous les visiter !"
+
+#: admin/class-pointers.php:267
+msgid "The templates are built using variables. You can find all these variables in the help tab (in the top-right corner of the page). The settings allow you to set specific behavior for the post types."
+msgstr "Les modèles sont construits à base de variables. Vous pouvez retrouvez l’ensemble des variables dans l’onglet Aide (en haut à droite de la page). Les paramètres vous permettent de définir un comportement spécifique pour les types de contenu."
+
+#: admin/class-pointers.php:283
+msgid "On this tab you can enable the %1$sFacebook Open Graph%2$s functionality from this plugin, as well as assign a Facebook user or Application to be the admin of your site, so you can view the Facebook insights."
+msgstr "Dans cet onglet, vous pouvez activer la fonctionnalité de l’%1$sOpen Graph de Facebook%2$s, afin d’affecter à un utilisateur Facebook ou à une Application l’administration de votre site, et que vous puissiez voir les statistiques de Facebook."
+
+#: admin/class-pointers.php:284
+msgid "The frontpage settings allow you to set meta-data for your homepage, whereas the default settings allow you to set a fallback for all posts/pages without images. "
+msgstr "Les paramètres de première page vous permettent de définir des méta-données pour votre page d’accueil, alors que les paramètres par défaut vous permettent de définir une configuration pour tous les articles / pages sans images."
+
+#: admin/class-pointers.php:287
+msgid "This tab allows you to add specific post meta data for Google+. And if you have a Google+ page for your business, add that URL here and link it on your %1$sGoogle+%2$s page’s about page."
+msgstr "Cet onglet vous permet d’ajouter des méta-données spécifiques à soumettre à Google+. Et si vous avez une page Google+ pour votre entreprise, ajoutez l’URL ici et reliez-la à la page A propos de votre page %1$sGoogle+%2$"
+
+#: admin/class-pointers.php:301
+msgid "A Sitemap is an XML file that lists the URLs for a site. It allows webmasters to include additional information about each URL: when it was last updated, how often it changes, and how important it is in relation to other URLs in the site. This allows search engines to crawl the site more intelligently."
+msgstr "Un plan de site est un fichier XML qui recense les URLs d’un site. Il permet aux webmasters d’inclure des informations complémentaires à propos de chaque URL: quand il a été mis à jour pour la dernière fois, à quelle fréquence il change, son importance par rapport aux autres URLs du site. Cela permet aux moteurs de recherche de parcourir le site de manière plus intelligente."
+
+#: admin/class-pointers.php:302
+msgid "What does the plugin do with XML Sitemaps?"
+msgstr "Que fait l’extension avec les Sitemaps XML ?"
+
+#: admin/class-pointers.php:304
+msgid "Is your webserver low on memory? Decrease the entries per sitemap (default: 1000) to reduce load."
+msgstr "Est-ce que votre serveur manque de mémoire ? Diminuez le nombre d’entrées du plan du site (par défaut : 1000) pour réduire la charge."
+
+#. translators: %1$s expands to Yoast SEO Premium
+#: admin/class-pointers.php:337
+msgid "Once you’ve purchased %1$s or any other premium Yoast plugin, you’ll have to enter a license key. You can do so on the Licenses-tab. Once you’ve activated your premium plugin, you can use all its powerful features."
+msgstr "Après l’achat de %1$s ou d’une autre extension premium de Yoast, vous devrez entrer une clé de licence. Vous pouvez le faire dans l’onglet Licences. Une fois votre extension premium activée, vous pouvez utiliser toutes ses puissantes fonctionnalités."
+
+#: admin/class-pointers.php:339
+msgid "So, we’ve come to the end of the tour. If you like the plugin, please %srate it 5 stars on WordPress.org%s!"
+msgstr "Nous sommes arrivés à la fin de la visite. Si vous aimez l’extension, s’il vous plaît %sdonnez-lui 5 étoiles sur WordPress.org%s !"
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/class-pointers.php:176
+msgid "You’ve just installed %1$s! Click “Start Tour” to view a quick introduction of this plugin’s core functionality."
+msgstr "Vous venez d’installer %1$s ! Cliquez sur \"Commencer la visite\" pour afficher une rapide introduction des fonctions de base de l’extension."
+
+#. translators: %s expands to taxonomy name
+#: admin/taxonomy/class-taxonomy-settings-fields.php:59
+msgid "This %s follows the indexation rules set under Metas and Titles, you can override it here."
+msgstr "Ce %s suit les règles d’indexation définies dans les Métas et Titres, vous pouvez les remplacer ici."
+
+#: admin/taxonomy/class-taxonomy-settings-fields.php:38
+msgid "Meta keywords used on the archive page for this term."
+msgstr "Meta keywords utilisé sur la page d’archive pour ce terme."
+
+#: admin/taxonomy/class-taxonomy-settings-fields.php:45
+msgid "The canonical link is shown on the archive page for this term."
+msgstr "Le lien canonique s’affiche sur la page d’archive pour ce terme."
-#: admin/class-social-facebook.php:116
-msgid "Your input contains invalid characters. Please make sure both fields are filled in correctly."
-msgstr "Votre saisie contient des caractères non valides. Veuillez vérifier que les deux champs soient correctement remplis."
+#. translators: %s expands to the taxonomy name
+#: admin/taxonomy/class-taxonomy-settings-fields.php:50
+msgid "The Breadcrumbs title is used in the breadcrumbs where this %s appears."
+msgstr "Le titre est utilisé dans le fil d’Ariane où %s apparaît."
-#: admin/class-pointers.php:265
-msgid "This is where you\tset the titles and meta-information for all your post types, taxonomies, archives, special pages and for your homepage. The page is divided into different tabs. Make sure you check ’em all out!"
-msgstr "Vous pouvez définir ici les titres et les méta-informations pour vos types de contenus, taxinomies, archives, pages spéciales, et page d'accueil. Cette page est divisée en plusieurs onglets, pensez à tous les visiter !"
+#: admin/pages/metas.php:146
+#: admin/taxonomy/class-taxonomy-settings-fields.php:48
+msgid "Breadcrumbs title"
+msgstr "Titre du fil d’Ariane"
#. translators: %1$s expands to Yoast SEO, %2$s expands to 5.4.3, %3$s expands
#. to Google Analytics by Yoast
msgid "%1$s has been updated to version %2$s. %3$sClick here%4$s to find out what's new!"
msgstr "%1$s a été mis à jour en version %2$s. %3$sCliquez ici%4$s pour découvrir toutes les nouveautés !"
-#. translators: %s is the name of the plugin
-#: admin/class-customizer.php:52
-msgid "%s Breadcrumbs"
-msgstr "Fil d'Ariane de %s"
-
-#: admin/metabox/class-metabox.php:297 admin/taxonomy/class-taxonomy.php:257
+#: admin/metabox/class-metabox.php:298 admin/taxonomy/class-taxonomy.php:258
msgid "(no parent)"
msgstr "(aucun parent)"
msgid "Action"
msgstr "Action"
-#: admin/class-admin.php:154 admin/metabox/class-metabox.php:418
-#: admin/metabox/class-metabox.php:420 admin/metabox/class-metabox.php:429
-#: admin/metabox/class-metabox.php:430 inc/wpseo-non-ajax-functions.php:426
+#: admin/class-admin.php:154 admin/metabox/class-metabox.php:419
+#: admin/metabox/class-metabox.php:421 admin/metabox/class-metabox.php:430
+#: admin/metabox/class-metabox.php:431 inc/wpseo-non-ajax-functions.php:426
msgid "Advanced"
msgstr "Avancé"
msgid "Advanced Variables"
msgstr "Variable Premium"
-#: admin/class-customizer.php:146
-msgid "Anchor text for the homepage:"
-msgstr "Texte d'ancrage pour la page d'accueil"
-
#: admin/class-admin.php:255 admin/class-admin.php:256
msgid "Basic Variables"
msgstr "Variables de base"
-#: admin/class-customizer.php:246
-msgid "Breadcrumb for 404 pages:"
-msgstr "Fil d'Ariane pour la page 404 "
-
-#: admin/metabox/class-metabox.php:89
-msgid "Breadcrumbs Title"
-msgstr "Titre pour le fil d'Ariane"
-
-#: admin/class-customizer.php:121
-msgid "Breadcrumbs separator:"
-msgstr "Séparateur pour le fil d'Ariane :"
-
#: admin/metabox/class-metabox.php:92
msgid "Canonical URL"
msgstr "URL canonique"
msgid "Check"
msgstr "Vérifier"
-#: admin/class-export.php:102
-msgid "Could not write settings to file."
-msgstr "Impossible d'écrire les réglages dans le fichier."
-
#: admin/class-export.php:97
msgid "Could not zip settings-file."
msgstr "Impossible de compresser (ZIP) le fichier des réglages."
msgid "Edit this item"
msgstr "Modifier cet objet"
-#. translators: %1$s expands to Yoast SEO
-#: admin/class-export.php:71
-msgid "Error creating %1$s export: "
-msgstr "Erreur de création de l'export de %1$s : "
-
#: admin/class-import-external.php:120
msgid "Error: no Robots Meta data found to import."
msgstr "Erreur : aucune métadonnée pour les robots à importer."
msgid "Follow"
msgstr "Suivre"
-#: admin/class-admin.php:238
-msgid "For more information:"
-msgstr "Pour plus d'information :"
-
#: admin/class-admin.php:211 admin/pages/dashboard.php:145
#: admin/pages/metas.php:20 admin/pages/xml-sitemaps.php:36
#: inc/wpseo-non-ajax-functions.php:402
msgid "HeadSpace2 data successfully imported"
msgstr "Les données de HeadSpace2 ont bien été importées."
-#: admin/class-admin.php:402
-msgid "Huge SEO Issue: You're blocking access to robots."
-msgstr "Important problème SEO : Vous bloquez actuellement l'accès aux robots des moteurs de recherche. "
-
-#: admin/class-admin.php:405 admin/class-admin.php:440
-msgid "I know, don't bug me."
-msgstr "Je sais, ne plus m'avertir."
-
#: admin/metabox/class-metabox.php:64
msgid "If you type something above it will override your %smeta keywords template%s."
msgstr "Si vous entrez quelque chose dans cette case, cela va remplacer votre %smodèle de méta keywords%s."
msgid "No Archive"
msgstr "Aucune archive"
-#: admin/metabox/class-metabox.php:85
-msgid "No Image Index"
-msgstr "Pas d'index pour l'image"
-
-#: admin/metabox/class-metabox.php:87
-msgid "No Snippet"
-msgstr "Pas d'aperçu"
-
#: admin/metabox/class-metabox.php:157
msgid "No focus keyword set."
msgstr "Mot-clé principal non défini."
-#: admin/class-import.php:151
-msgid "No settings found in file."
-msgstr "Aucun réglage n'a été trouvé dans le fichier."
-
#: admin/metabox/class-metabox.php:77
msgid "Nofollow"
msgstr "Ne pas suivre"
msgid "Page URL/Slug"
msgstr "URL/Identifiant de la page"
-#: admin/metabox/class-metabox.php:57
-#: admin/taxonomy/class-taxonomy-content-fields.php:25
-msgid "Pick the main keyword or keyphrase that this post/page is about.<br/><br/>Read %sthis post%s for more info."
-msgstr "Choisissez le mot-clé principal ou la phrase-clé principale de cet article/cette page.<br/><br/>Lisez %scet article%s pour plus d'infos."
-
-#: admin/class-bulk-editor-list-table.php:922
-msgid "Post Status"
-msgstr "État de l'article"
-
#: admin/class-bulk-editor-list-table.php:921
msgid "Post Type"
msgstr "Type de contenu"
-#: admin/ajax.php:218
-msgid "Post doesn't exist."
-msgstr "L'article n'existe pas."
-
-#: admin/ajax.php:227
-msgid "Post has an invalid Post Type: %s."
-msgstr "L'article a un type de contenu non valide : %s."
-
-#: admin/class-meta-columns.php:330 admin/metabox/class-metabox.php:150
-msgid "Post is set to noindex."
-msgstr "L'article est réglé sur noindex."
-
#: admin/class-admin.php:355
msgid "Posts"
msgstr "Articles"
-#: admin/class-customizer.php:196
-msgid "Prefix for archive pages:"
-msgstr "Préfixe pour les pages d'archive :"
-
-#: admin/class-customizer.php:171
-msgid "Prefix for breadcrumbs:"
-msgstr "Préfixe pour le fil d'Ariane :"
-
#: admin/class-customizer.php:221
msgid "Prefix for search result pages:"
msgstr "Préfixe pour les pages de résultats de recherche :"
msgid "RSS Footer options imported successfully."
msgstr "Les options de pied de page du fil RSS ont été importées avec succès."
-#: admin/class-customizer.php:86
-msgid "Remove blog page from breadcrumbs"
-msgstr "Retirer la page de blog du fil d'Ariane"
-
#: admin/class-admin.php:117 admin/class-admin.php:276
#: admin/class-meta-columns.php:43 inc/wpseo-non-ajax-functions.php:257
msgid "SEO"
msgid "SEO:"
msgstr "SEO :"
-#: admin/class-config.php:116
-msgid "See the help tab for more info."
-msgstr "Voir l'onglet d'aide pour plus d'informations."
-
-#: admin/class-import.php:173
-msgid "Setting \"%s\" is no longer used and has been discarded."
-msgstr "Le paramètre \"%s\" n'est plus disponible et a été désactivé"
-
#: admin/class-admin.php:456
#: admin/google_search_console/class-gsc-platform-tabs.php:40
#: admin/taxonomy/class-taxonomy-metabox.php:129
msgid "Settings"
msgstr "Réglages"
-#: admin/class-import.php:76 admin/class-import.php:82
-#: admin/class-import.php:88 admin/class-import.php:120
-#: admin/class-import.php:127 admin/class-import.php:151
-msgid "Settings could not be imported:"
-msgstr "Les réglagles n'ont pas été importés :"
-
#: admin/class-import.php:148
msgid "Settings successfully imported."
msgstr "Les réglages ont été importés avec succès."
msgid "Social"
msgstr "Réseaux sociaux"
-#: admin/ajax.php:119
-msgid "Some files could not be removed. Please remove them via FTP."
-msgstr "Plusieurs fichiers n'ont pas pu être supprimés. Veuillez le faire par le biais de votre logiciel FTP."
-
#: admin/class-admin.php:246
msgid "Template explanation"
msgstr "Explication des modèles"
-#: admin/metabox/class-metabox.php:96
-msgid "The URL that this page should redirect to."
-msgstr "L'URL vers laquelle cette page devrait rediriger."
-
-#: admin/metabox/class-metabox.php:93
-msgid "The canonical URL that this page should point to, leave empty to default to permalink. %sCross domain canonical%s supported too."
-msgstr "L'URL canonique qui devrait pointer sur cette page, laissez cette case vide pour utiliser le permalien par défaut. Les %sURLs canoniques vers d'autres domaines%s sont aussi supportées."
-
#. translators: %1$s expands to Yoast SEO
#: admin/class-admin.php:248
msgid "The title & metas settings for %1$s are made up of variables that are replaced by specific values from the page when the page is displayed. The tabs on the left explain the available variables."
msgstr "Les réglages des titres & métas pour %1$s utilisent des variables qui sont remplacées par des valeurs spécifiques de la page quand la page est affichée. Les onglets de gauche donnent des explications sur les variables disponibles."
-#: admin/metabox/class-metabox.php:51
-#: admin/taxonomy/class-taxonomy-content-fields.php:20
-msgid "This is a rendering of what this post might look like in Google's search results.<br/><br/>Read %sthis post%s for more info."
-msgstr "Voici une prévisualisation des résultats de recherche pour votre article sur Google.<br/><br/>Lire %sl'article%s pour plus d'informations."
-
-#. translators: %1$s expands to Yoast SEO
-#: admin/class-export.php:112
-msgid "This is a settings export file for the %1$s plugin by Yoast.com"
-msgstr "Ceci est un fichier d'exportation des réglages de l'extension %1$s de Yoast.com"
-
-#: admin/class-admin.php:239
-msgid "Title optimization"
-msgstr "Optimisation d'un titre"
-
-#: admin/metabox/class-metabox.php:90
-msgid "Title to use for this page in breadcrumb paths"
-msgstr "Titre à utiliser pour cette page dans le fil d'Ariane"
-
#: admin/class-admin.php:127 inc/wpseo-non-ajax-functions.php:408
msgid "Titles & Metas"
msgstr "Titres & Métas"
msgid "Unzipping failed - file settings.ini not found."
msgstr "Échec de la décompression - le fichier settings.ini est introuvable."
-#: admin/class-import.php:120
-msgid "Unzipping failed with error \"%s\"."
-msgstr "Échec de la décompression avec l'erreur \"%s\"."
-
-#: admin/class-import.php:88
-msgid "Upload failed."
-msgstr "L'envoi a échoué."
-
-#: admin/class-config.php:102 admin/metabox/class-metabox.php:758
-#: admin/taxonomy/class-taxonomy.php:101
-msgid "Use Image"
-msgstr "Utiliser l'image"
-
#: admin/class-bulk-editor-list-table.php:758
#: admin/google_search_console/class-gsc-table.php:209
msgid "View"
msgid "WP Page Title"
msgstr "Titre de la page"
-#: admin/metabox/class-metabox.php:69
-#: admin/taxonomy/class-taxonomy-settings-fields.php:105
-msgid "Warning: even though you can set the meta robots setting here, the entire site is set to noindex in the sitewide privacy settings, so these settings won't have an effect."
-msgstr "Attention : même si vous pouvez modifier les méta \"robots\" ici, tout votre site est réglé en mode \"noindex\" dans les réglages de vie privée, toute modification effectuée ici n'aura donc aucun effet. "
-
#. translators: %s: '%%term_title%%' variable used in titles and meta's
#. template that's not compatible with the given template
#: admin/class-config.php:116
msgid "Warning: the variable %s cannot be used in this template."
msgstr "Attention : la variable %s ne peut pas être utilisée avec ce modèle."
-#: admin/class-admin.php:240
-msgid "Why Google won't display the right page title"
-msgstr "Pourquoi Google n'affichera pas le bon titre de la page"
-
#: admin/class-import-woothemes-seo.php:29
msgid "WooThemes SEO framework settings & data successfully imported."
msgstr "Les réglages du framework WooThemes SEO ont bien été importés."
msgid "Yoast Breadcrumbs options imported successfully."
msgstr "Les options de Yoast Breadcrumbs ont été importées avec succès."
-#: admin/class-bulk-editor-list-table.php:133
-msgid "You are not allowed to access this page."
-msgstr "Vous n'êtes pas autorisé à accéder à cette page."
-
#: admin/ajax.php:243
msgid "You can't edit %s that aren't yours."
msgstr "Vous ne pouvez pas modifier les %s qui ne sont pas à/de vous."
msgid "This export includes taxonomy metadata"
msgstr "Cet export inclut les métadonnées des taxinomies."
+#: admin/class-customizer.php:196
+msgid "Prefix for archive pages:"
+msgstr "Préfixe pour les pages d’archive :"
+
+#: admin/class-customizer.php:171
+msgid "Prefix for breadcrumbs:"
+msgstr "Préfixe pour le fil d’Ariane :"
+
+#: admin/class-customizer.php:146
+msgid "Anchor text for the homepage:"
+msgstr "Texte d’ancrage pour la page d’accueil"
+
+#: admin/class-customizer.php:86
+msgid "Remove blog page from breadcrumbs"
+msgstr "Retirer la page de blog du fil d’Ariane"
+
+#. translators: %s is the name of the plugin
+#: admin/class-customizer.php:52
+msgid "%s Breadcrumbs"
+msgstr "Fil d’Ariane de %s"
+
+#: admin/class-customizer.php:121
+msgid "Breadcrumbs separator:"
+msgstr "Séparateur pour le fil d’Ariane :"
+
+#: admin/class-customizer.php:246
+msgid "Breadcrumb for 404 pages:"
+msgstr "Fil d’Ariane pour la page 404 "
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/class-export.php:71
+msgid "Error creating %1$s export: "
+msgstr "Erreur de création de l’export de %1$s : "
+
+#: admin/class-config.php:116
+msgid "See the help tab for more info."
+msgstr "Voir l’onglet d’aide pour plus d’informations."
+
+#: admin/class-export.php:102
+msgid "Could not write settings to file."
+msgstr "Impossible d’écrire les réglages dans le fichier."
+
#: admin/class-export.php:181
msgid "No taxonomy metadata found"
-msgstr "Aucune métadonnée de taxinomie n'a été trouvée."
+msgstr "Aucune métadonnée de taxinomie n’a été trouvée."
+
+#: admin/class-bulk-editor-list-table.php:133
+msgid "You are not allowed to access this page."
+msgstr "Vous n’êtes pas autorisé à accéder à cette page."
+
+#: admin/metabox/class-metabox.php:85
+msgid "No Image Index"
+msgstr "Pas d’index pour l’image"
+
+#: admin/metabox/class-metabox.php:51
+#: admin/taxonomy/class-taxonomy-content-fields.php:20
+msgid "This is a rendering of what this post might look like in Google's search results.<br/><br/>Read %sthis post%s for more info."
+msgstr "Voici une prévisualisation des résultats de recherche pour votre article sur Google.<br/><br/>Lire %sl’article%s pour plus d’informations."
+
+#: admin/metabox/class-metabox.php:69
+#: admin/taxonomy/class-taxonomy-settings-fields.php:105
+msgid "Warning: even though you can set the meta robots setting here, the entire site is set to noindex in the sitewide privacy settings, so these settings won't have an effect."
+msgstr "Attention : même si vous pouvez modifier les méta \"robots\" ici, tout votre site est réglé en mode \"noindex\" dans les réglages de vie privée, toute modification effectuée ici n’aura donc aucun effet. "
+
+#: admin/ajax.php:218
+msgid "Post doesn't exist."
+msgstr "L’article n’existe pas."
+
+#: admin/ajax.php:227
+msgid "Post has an invalid Post Type: %s."
+msgstr "L’article a un type de contenu non valide : %s."
+
+#: admin/class-bulk-editor-list-table.php:922
+msgid "Post Status"
+msgstr "État de l’article"
+
+#: admin/class-import.php:173
+msgid "Setting \"%s\" is no longer used and has been discarded."
+msgstr "Le paramètre \"%s\" n’est plus disponible et a été désactivé"
+
+#: admin/class-import.php:151
+msgid "No settings found in file."
+msgstr "Aucun réglage n’a été trouvé dans le fichier."
+
+#: admin/class-import.php:120
+msgid "Unzipping failed with error \"%s\"."
+msgstr "Échec de la décompression avec l’erreur \"%s\"."
+
+#: admin/class-admin.php:239
+msgid "Title optimization"
+msgstr "Optimisation d’un titre"
+
+#: admin/class-admin.php:238
+msgid "For more information:"
+msgstr "Pour plus d’information :"
+
+#: admin/class-config.php:102 admin/metabox/class-metabox.php:759
+#: admin/taxonomy/class-taxonomy.php:101
+msgid "Use Image"
+msgstr "Utiliser l’image"
+
+#: admin/class-admin.php:240
+msgid "Why Google won't display the right page title"
+msgstr "Pourquoi Google n’affichera pas le bon titre de la page"
+
+#: admin/metabox/class-metabox.php:57
+#: admin/taxonomy/class-taxonomy-content-fields.php:25
+msgid "Pick the main keyword or keyphrase that this post/page is about.<br/><br/>Read %sthis post%s for more info."
+msgstr "Choisissez le mot-clé principal ou la phrase-clé principale de cet article/cette page.<br/><br/>Lisez %scet article%s pour plus d’infos."
+
+#: admin/class-meta-columns.php:330 admin/metabox/class-metabox.php:150
+msgid "Post is set to noindex."
+msgstr "L’article est réglé sur noindex."
+
+#. translators: %1$s expands to Yoast SEO
+#: admin/class-export.php:112
+msgid "This is a settings export file for the %1$s plugin by Yoast.com"
+msgstr "Ceci est un fichier d’exportation des réglages de l’extension %1$s de Yoast.com"
+
+#: admin/ajax.php:119
+msgid "Some files could not be removed. Please remove them via FTP."
+msgstr "Plusieurs fichiers n’ont pas pu être supprimés. Veuillez le faire par le biais de votre logiciel FTP."
+
+#: admin/class-admin.php:402
+msgid "Huge SEO Issue: You're blocking access to robots."
+msgstr "Important problème SEO : Vous bloquez actuellement l’accès aux robots des moteurs de recherche. "
+
+#: admin/class-admin.php:405 admin/class-admin.php:440
+msgid "I know, don't bug me."
+msgstr "Je sais, ne plus m’avertir."
+
+#: admin/class-import.php:76 admin/class-import.php:82
+#: admin/class-import.php:88 admin/class-import.php:120
+#: admin/class-import.php:127 admin/class-import.php:151
+msgid "Settings could not be imported:"
+msgstr "Les réglagles n’ont pas été importés :"
+
+#: admin/class-import.php:88
+msgid "Upload failed."
+msgstr "L’envoi a échoué."
+
+#: admin/metabox/class-metabox.php:89
+msgid "Breadcrumbs Title"
+msgstr "Titre pour le fil d’Ariane"
+
+#: admin/metabox/class-metabox.php:87
+msgid "No Snippet"
+msgstr "Pas d’aperçu"
+
+#: admin/metabox/class-metabox.php:90
+msgid "Title to use for this page in breadcrumb paths"
+msgstr "Titre à utiliser pour cette page dans le fil d’Ariane"
+
+#: admin/metabox/class-metabox.php:93
+msgid "The canonical URL that this page should point to, leave empty to default to permalink. %sCross domain canonical%s supported too."
+msgstr "L’URL canonique qui devrait pointer sur cette page, laissez cette case vide pour utiliser le permalien par défaut. Les %sURLs canoniques vers d’autres domaines%s sont aussi supportées."
+
+#: admin/metabox/class-metabox.php:96
+msgid "The URL that this page should redirect to."
+msgstr "L’URL vers laquelle cette page devrait rediriger."
# This file is distributed under the same license as the Twenty Sixteen package.
msgid ""
msgstr ""
-"PO-Revision-Date: 2015-11-23 09:32:56+0000\n"
+"PO-Revision-Date: 2016-01-25 15:05:48+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Description of the plugin/theme
msgid "Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere."
-msgstr "Twenty Sixteen revisite en le modernisant une mise en page WordPress toujours aussi populaire : l’entête horizontal avec une barre latérale facultative, qui fonctionne tout aussi pour les blogs que pour les sites. Il dispose d'options de couleurs avec de superbes jeux de couleurs par défaut, une composition en grille fluide et harmonieuse utilisant l'approche \"mobile-first\", et un soin apporté jusque dans les moindres détails. Twenty Sixteen vous donnera un site WordPress magnifique dans toutes les situations."
+msgstr "Twenty Sixteen revisite en la modernisant une mise en page WordPress toujours aussi populaire : l’entête horizontal avec une barre latérale facultative, qui fonctionne tout aussi bien pour les blogs que pour les sites. Il dispose d'options de couleurs avec de superbes jeux de couleurs par défaut, une composition en grille fluide et harmonieuse utilisant l'approche \"mobile-first\", et un soin apporté jusque dans les moindres détails. Twenty Sixteen vous donnera un site WordPress magnifique dans toutes les situations."
#. translators: %s: Name of current post
#: image.php:84 template-parts/content-page.php:37
#. translators: %s: Name of current post
#: inc/template-tags.php:184 template-parts/content.php:28
msgid "Continue reading<span class=\"screen-reader-text\"> \"%s\"</span>"
-msgstr "Continuer la lecture de<span class=\"screen-reader-text\"> « %s &rquo;</span>"
+msgstr "Continuer la lecture<span class=\"screen-reader-text\"> de « %s »</span>"
#: inc/customizer.php:246
msgid "Red"
msgid "the WordPress team"
msgstr "l'équipe WordPress"
-#. #-#-#-#-# twentysixteen.pot (Twenty Sixteen 1.0) #-#-#-#-#
+#. #-#-#-#-# twentysixteen.pot (Twenty Sixteen 1.1) #-#-#-#-#
#. Author URI of the plugin/theme
#: footer.php:51
msgid "https://wordpress.org/"
add_action( 'admin_menu', 'wpcf7_admin_menu', 9 );
function wpcf7_admin_menu() {
- add_object_page( __( 'Contact Form 7', 'contact-form-7' ),
+ global $_wp_last_object_menu;
+
+ $_wp_last_object_menu++;
+
+ add_menu_page( __( 'Contact Form 7', 'contact-form-7' ),
__( 'Contact', 'contact-form-7' ),
'wpcf7_read_contact_forms', 'wpcf7',
- 'wpcf7_admin_management_page', 'dashicons-email' );
+ 'wpcf7_admin_management_page', 'dashicons-email',
+ $_wp_last_object_menu );
$edit = add_submenu_page( 'wpcf7',
__( 'Edit Contact Form', 'contact-form-7' ),
exit();
}
+ if ( 'validate' == $action && wpcf7_validate_configuration() ) {
+ if ( 'POST' == $_SERVER['REQUEST_METHOD'] ) {
+ check_admin_referer( 'wpcf7-bulk-validate' );
+
+ if ( ! current_user_can( 'wpcf7_edit_contact_forms' ) ) {
+ wp_die( __( "You are not allowed to validate configuration.", 'contact-form-7' ) );
+ }
+
+ $contact_forms = WPCF7_ContactForm::find();
+ $result = array(
+ 'timestamp' => current_time( 'timestamp' ),
+ 'version' => WPCF7_VERSION,
+ 'count_valid' => 0,
+ 'count_invalid' => 0 );
+
+ foreach ( $contact_forms as $contact_form ) {
+ $contact_form->validate_configuration();
+
+ if ( $contact_form->get_config_errors() ) {
+ $result['count_invalid'] += 1;
+ } else {
+ $result['count_valid'] += 1;
+ }
+ }
+
+ WPCF7::update_option( 'bulk_validate', $result );
+
+ $query = array(
+ 'message' => 'validated' );
+
+ $redirect_to = add_query_arg( $query, menu_page_url( 'wpcf7', false ) );
+ wp_safe_redirect( $redirect_to );
+ exit();
+ }
+ }
+
$_GET['post'] = isset( $_GET['post'] ) ? $_GET['post'] : '';
$post = null;
- if ( 'wpcf7-new' == $plugin_page && isset( $_GET['locale'] ) ) {
+ if ( 'wpcf7-new' == $plugin_page ) {
$post = WPCF7_ContactForm::get_template( array(
- 'locale' => $_GET['locale'] ) );
+ 'locale' => isset( $_GET['locale'] ) ? $_GET['locale'] : null ) );
} elseif ( ! empty( $_GET['post'] ) ) {
$post = WPCF7_ContactForm::get_instance( $_GET['post'] );
}
if ( $post && current_user_can( 'wpcf7_edit_contact_form', $post->id() ) ) {
$help_tabs->set_help_tabs( 'edit' );
-
- } else if ( 'wpcf7-new' == $plugin_page ) {
- $help_tabs->set_help_tabs( 'add_new' );
-
} else {
$help_tabs->set_help_tabs( 'list' );
return;
}
+ if ( 'validate' == wpcf7_current_action()
+ && wpcf7_validate_configuration()
+ && current_user_can( 'wpcf7_edit_contact_forms' ) ) {
+ wpcf7_admin_bulk_validate_page();
+ return;
+ }
+
$list_table = new WPCF7_Contact_Form_List_Table();
$list_table->prepare_items();
?>
<div class="wrap">
-<h2><?php
+<h1><?php
echo esc_html( __( 'Contact Forms', 'contact-form-7' ) );
if ( current_user_can( 'wpcf7_edit_contact_forms' ) ) {
. __( 'Search results for “%s”', 'contact-form-7' )
. '</span>', esc_html( $_REQUEST['s'] ) );
}
-?></h2>
+?></h1>
<?php do_action( 'wpcf7_admin_notices' ); ?>
<?php
}
-function wpcf7_admin_add_new_page() {
- if ( $post = wpcf7_get_current_contact_form() ) {
- $post_id = -1;
-
- require_once WPCF7_PLUGIN_DIR . '/admin/includes/editor.php';
- require_once WPCF7_PLUGIN_DIR . '/admin/edit-contact-form.php';
- return;
- }
-
- $available_locales = wpcf7_l10n();
- $default_locale = get_locale();
+function wpcf7_admin_bulk_validate_page() {
+ $contact_forms = WPCF7_ContactForm::find();
+ $count = WPCF7_ContactForm::count();
- if ( ! isset( $available_locales[$default_locale] ) ) {
- $default_locale = 'en_US';
- }
+ $submit_text = sprintf(
+ _n(
+ "Validate %s Contact Form Now",
+ "Validate %s Contact Forms Now",
+ $count, 'contact-form-7' ),
+ number_format_i18n( $count ) );
?>
<div class="wrap">
-<h2><?php echo esc_html( __( 'Add New Contact Form', 'contact-form-7' ) ); ?></h2>
-
-<?php do_action( 'wpcf7_admin_notices' ); ?>
+<h1><?php echo esc_html( __( 'Validate Configuration', 'contact-form-7' ) ); ?></h1>
-<h3><?php echo esc_html( sprintf( __( 'Use the default language (%s)', 'contact-form-7' ), $available_locales[$default_locale] ) ); ?></h3>
-<p><a href="<?php echo esc_url( add_query_arg( array( 'locale' => $default_locale ), menu_page_url( 'wpcf7-new', false ) ) ); ?>" class="button button-primary" /><?php echo esc_html( __( 'Add New', 'contact-form-7' ) ); ?></a></p>
-
-<?php unset( $available_locales[$default_locale] ); ?>
-<h3><?php echo esc_html( __( 'Or', 'contact-form-7' ) ); ?></h3>
-<form action="" method="get">
-<input type="hidden" name="page" value="wpcf7-new" />
-<select name="locale">
-<option value="" selected="selected"><?php echo esc_html( __( '(select language)', 'contact-form-7' ) ); ?></option>
-<?php foreach ( $available_locales as $code => $locale ) : ?>
-<option value="<?php echo esc_attr( $code ); ?>"><?php echo esc_html( $locale ); ?></option>
-<?php endforeach; ?>
-</select>
-<input type="submit" class="button" value="<?php echo esc_attr( __( 'Add New', 'contact-form-7' ) ); ?>" />
+<form method="post" action="">
+ <input type="hidden" name="action" value="validate" />
+ <?php wp_nonce_field( 'wpcf7-bulk-validate' ); ?>
+ <p><input type="submit" class="button" value="<?php echo esc_attr( $submit_text ); ?>" /></p>
</form>
+
</div>
<?php
}
+function wpcf7_admin_add_new_page() {
+ $post = wpcf7_get_current_contact_form();
+
+ if ( ! $post ) {
+ $post = WPCF7_ContactForm::get_template();
+ }
+
+ $post_id = -1;
+
+ require_once WPCF7_PLUGIN_DIR . '/admin/includes/editor.php';
+ require_once WPCF7_PLUGIN_DIR . '/admin/edit-contact-form.php';
+}
+
function wpcf7_load_integration_page() {
$integration = WPCF7_Integration::get_instance();
?>
<div class="wrap">
-<h2><?php echo esc_html( __( 'Integration with Other Services', 'contact-form-7' ) ); ?></h2>
+<h1><?php echo esc_html( __( 'Integration with Other Services', 'contact-form-7' ) ); ?></h1>
<?php do_action( 'wpcf7_admin_notices' ); ?>
}
if ( 'created' == $_REQUEST['message'] ) {
- $updated_message = __( 'Contact form created.', 'contact-form-7' );
+ $updated_message = __( "Contact form created.", 'contact-form-7' );
} elseif ( 'saved' == $_REQUEST['message'] ) {
- $updated_message = __( 'Contact form saved.', 'contact-form-7' );
+ $updated_message = __( "Contact form saved.", 'contact-form-7' );
} elseif ( 'deleted' == $_REQUEST['message'] ) {
- $updated_message = __( 'Contact form deleted.', 'contact-form-7' );
+ $updated_message = __( "Contact form deleted.", 'contact-form-7' );
+ } elseif ( 'validated' == $_REQUEST['message'] ) {
+ $bulk_validate = WPCF7::get_option( 'bulk_validate', array() );
+ $count_invalid = isset( $bulk_validate['count_invalid'] )
+ ? absint( $bulk_validate['count_invalid'] ) : 0;
+
+ if ( $count_invalid ) {
+ $updated_message = sprintf(
+ _n(
+ "Configuration validation completed. An invalid contact form was found.",
+ "Configuration validation completed. %s invalid contact forms were found.",
+ $count_invalid, 'contact-form-7' ),
+ number_format_i18n( $count_invalid ) );
+ } else {
+ $updated_message = __( "Configuration validation completed. No invalid contact form was found.", 'contact-form-7' );
+ }
}
if ( ! empty( $updated_message ) ) {
<div class="welcome-panel-content">
<div class="welcome-panel-column-container">
<div class="welcome-panel-column">
- <h4><?php echo esc_html( __( 'Contact Form 7 Needs Your Support', 'contact-form-7' ) ); ?></h4>
+ <h3><?php echo esc_html( __( 'Contact Form 7 Needs Your Support', 'contact-form-7' ) ); ?></h3>
<p class="message"><?php echo esc_html( __( "It is hard to continue development and support for this plugin without contributions from users like you. If you enjoy using Contact Form 7 and find it useful, please consider making a donation.", 'contact-form-7' ) ); ?></p>
<p><?php echo wpcf7_link( __( 'http://contactform7.com/donate/', 'contact-form-7' ), __( 'Donate', 'contact-form-7' ), array( 'class' => 'button button-primary' ) ); ?></p>
</div>
<div class="welcome-panel-column">
- <h4><?php echo esc_html( __( 'Get Started', 'contact-form-7' ) ); ?></h4>
+ <h3><?php echo esc_html( __( 'Get Started', 'contact-form-7' ) ); ?></h3>
<ul>
<li><?php echo wpcf7_link( __( 'http://contactform7.com/getting-started-with-contact-form-7/', 'contact-form-7' ), __( 'Getting Started with Contact Form 7', 'contact-form-7' ) ); ?></li>
<li><?php echo wpcf7_link( __( 'http://contactform7.com/admin-screen/', 'contact-form-7' ), __( 'Admin Screen', 'contact-form-7' ) ); ?></li>
</div>
<div class="welcome-panel-column">
- <h4><?php echo esc_html( __( 'Did You Know?', 'contact-form-7' ) ); ?></h4>
+ <h3><?php echo esc_html( __( 'Did You Know?', 'contact-form-7' ) ); ?></h3>
<ul>
<li><?php echo wpcf7_link( __( 'http://contactform7.com/spam-filtering-with-akismet/', 'contact-form-7' ), __( 'Spam Filtering with Akismet', 'contact-form-7' ) ); ?></li>
<li><?php echo wpcf7_link( __( 'http://contactform7.com/save-submitted-messages-with-flamingo/', 'contact-form-7' ), __( 'Save Messages with Flamingo', 'contact-form-7' ) ); ?></li>
'<div class="notice notice-warning is-dismissible"><p>%s</p></div>',
esc_html( $message ) );
}
+
+add_action( 'wpcf7_admin_notices', 'wpcf7_notice_config_errors' );
+
+function wpcf7_notice_config_errors() {
+ if ( ! $contact_form = wpcf7_get_current_contact_form() ) {
+ return;
+ }
+
+ if ( ! wpcf7_validate_configuration()
+ || ! current_user_can( 'wpcf7_edit_contact_form', $contact_form->id() ) ) {
+ return;
+ }
+
+ if ( $config_errors = $contact_form->get_config_errors() ) {
+ $message = sprintf(
+ _n(
+ "This contact form has a configuration error.",
+ "This contact form has %s configuration errors.",
+ count( $config_errors ), 'contact-form-7' ),
+ number_format_i18n( count( $config_errors ) ) );
+
+ $link = wpcf7_link(
+ __( 'http://contactform7.com/configuration-errors/', 'contact-form-7' ),
+ __( 'How to Resolve Configuration Errors', 'contact-form-7' ) );
+
+ echo sprintf( '<div class="notice notice-error is-dismissible"><p>%s » %s</p></div>', esc_html( $message ), $link );
+ }
+}
+
+add_action( 'admin_notices', 'wpcf7_notice_bulk_validate_config' );
+
+function wpcf7_notice_bulk_validate_config() {
+ if ( ! wpcf7_validate_configuration()
+ || ! current_user_can( 'wpcf7_edit_contact_forms' ) ) {
+ return;
+ }
+
+ if ( isset( $_GET['page'] ) && 'wpcf7' == $_GET['page']
+ && isset( $_GET['action'] ) && 'validate' == $_GET['action'] ) {
+ return;
+ }
+
+ if ( WPCF7::get_option( 'bulk_validate' ) ) { // already done.
+ return;
+ }
+
+ $link = add_query_arg(
+ array( 'action' => 'validate' ),
+ menu_page_url( 'wpcf7', false ) );
+
+ $link = sprintf( '<a href="%s">%s</a>', $link, esc_html( __( 'Validate Contact Form 7 Configuration', 'contact-form-7' ) ) );
+
+ $message = __( "Misconfiguration leads to mail delivery failure or other troubles. Validate your contact forms now.", 'contact-form-7' );
+
+ echo sprintf( '<div class="notice notice-warning is-dismissible"><p>%s » %s</p></div>', esc_html( $message ), $link );
+}
margin: 8px -8px 8px 8px;
}
-.card h3.title {
+.card h2.title {
float: right;
}
color: #a00;
}
+#submitpost input.delete:hover {
+ color: #f00;
+}
+
#submitpost input.delete:focus {
outline: thin dotted;
}
color: #23282d;
}
+div.config-error, span.config-error {
+ color: #d00;
+ font-style: normal;
+ font-size: 13px;
+}
+
/*
* Tabs
*/
color: #000;
}
-#contact-form-editor .contact-form-editor-panel h3 {
+#contact-form-editor .contact-form-editor-panel h2 {
font-size: 18px;
font-weight: 400;
line-height: 24px;
color: #666;
}
+/*
+ * Messages Panel
+ */
+#messages-panel p.description {
+ margin: 5px 0 10px;
+}
+
/*
* List Table
*/
/*
* Welcome Panel
*/
+.welcome-panel h3 {
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 2.1em;
+ margin: 1.33em 0 0;
+}
+
.welcome-panel p.message {
line-height: 1.4em;
margin-right: 25px;
margin: 8px 8px 8px -8px;
}
-.card h3.title {
+.card h2.title {
float: left;
max-width: 240px;
+ font-size: 1.3em;
+ font-weight: 600;
}
.card .infobox {
?><div class="wrap">
-<h2><?php
+<h1><?php
if ( $post->initial() ) {
echo esc_html( __( 'Add New Contact Form', 'contact-form-7' ) );
} else {
echo ' <a href="' . esc_url( menu_page_url( 'wpcf7-new', false ) ) . '" class="add-new-h2">' . esc_html( __( 'Add New', 'contact-form-7' ) ) . '</a>';
}
}
-?></h2>
+?></h1>
<?php do_action( 'wpcf7_admin_notices' ); ?>
}
if ( isset( $_POST['wpcf7-mail-additional-headers'] ) ) {
- $mail['additional_headers'] = trim( $_POST['wpcf7-mail-additional-headers'] );
+ $headers = '';
+ $tempheaders = str_replace(
+ "\r\n", "\n", $_POST['wpcf7-mail-additional-headers'] );
+ $tempheaders = explode( "\n", $tempheaders );
+
+ foreach ( $tempheaders as $header ) {
+ $header = trim( $header );
+
+ if ( '' !== $header ) {
+ $headers .= $header . "\n";
+ }
+ }
+
+ $mail['additional_headers'] = trim( $headers );
}
if ( isset( $_POST['wpcf7-mail-attachments'] ) ) {
}
if ( isset( $_POST['wpcf7-mail-2-additional-headers'] ) ) {
- $mail_2['additional_headers'] = trim(
- $_POST['wpcf7-mail-2-additional-headers'] );
+ $headers = '';
+ $tempheaders = str_replace(
+ "\r\n", "\n", $_POST['wpcf7-mail-2-additional-headers'] );
+ $tempheaders = explode( "\n", $tempheaders );
+
+ foreach ( $tempheaders as $header ) {
+ $header = trim( $header );
+
+ if ( '' !== $header ) {
+ $headers .= $header . "\n";
+ }
+ }
+
+ $mail_2['additional_headers'] = trim( $headers );
}
if ( isset( $_POST['wpcf7-mail-2-attachments'] ) ) {
do_action( 'wpcf7_save_contact_form', $contact_form );
- return $contact_form->save();
+ $post_id = $contact_form->save();
+
+ if ( wpcf7_validate_configuration() ) {
+ $contact_form->validate_configuration();
+ }
+
+ return $post_id;
}
$url = admin_url( 'admin.php?page=wpcf7&post=' . absint( $item->id() ) );
$edit_link = add_query_arg( array( 'action' => 'edit' ), $url );
+ $output = sprintf(
+ '<a class="row-title" href="%1$s" title="%2$s">%3$s</a>',
+ esc_url( $edit_link ),
+ esc_attr( sprintf( __( 'Edit “%s”', 'contact-form-7' ),
+ $item->title() ) ),
+ esc_html( $item->title() ) );
+
+ $output = sprintf( '<strong>%s</strong>', $output );
+
+ if ( wpcf7_validate_configuration()
+ && current_user_can( 'wpcf7_edit_contact_form', $item->id() )
+ && $config_errors = $item->get_config_errors() ) {
+ $error_notice = sprintf(
+ _n(
+ '%s configuration error found',
+ '%s configuration errors found',
+ count( $config_errors ), 'contact-form-7' ),
+ number_format_i18n( count( $config_errors ) ) );
+ $output .= sprintf(
+ '<div class="config-error">%s</div>',
+ $error_notice );
+ }
+
$actions = array(
'edit' => sprintf( '<a href="%1$s">%2$s</a>',
esc_url( $edit_link ),
esc_html( __( 'Duplicate', 'contact-form-7' ) ) ) ) );
}
- $a = sprintf( '<a class="row-title" href="%1$s" title="%2$s">%3$s</a>',
- esc_url( $edit_link ),
- esc_attr( sprintf( __( 'Edit “%s”', 'contact-form-7' ),
- $item->title() ) ),
- esc_html( $item->title() ) );
+ $output .= $this->row_actions( $actions );
- return '<strong>' . $a . '</strong> ' . $this->row_actions( $actions );
+ return $output;
}
function column_author( $item ) {
function wpcf7_editor_panel_form( $post ) {
?>
-<h3><?php echo esc_html( __( 'Form', 'contact-form-7' ) ); ?></h3>
+<h2><?php echo esc_html( __( 'Form', 'contact-form-7' ) ); ?></h2>
<?php
$tag_generator = WPCF7_TagGenerator::get_instance();
'subject' => '', 'body' => '', 'additional_headers' => '',
'attachments' => '', 'use_html' => false, 'exclude_blank' => false ) );
+ $do_validate = wpcf7_validate_configuration();
+
?>
<div class="contact-form-editor-box-mail" id="<?php echo $id; ?>">
-<h3><?php echo esc_html( $args['title'] ); ?></h3>
+<h2><?php echo esc_html( $args['title'] ); ?></h2>
<?php
if ( ! empty( $args['use'] ) ) :
<label for="<?php echo $id; ?>-recipient"><?php echo esc_html( __( 'To', 'contact-form-7' ) ); ?></label>
</th>
<td>
- <input type="text" id="<?php echo $id; ?>-recipient" name="<?php echo $id; ?>-recipient" class="large-text code" size="70" value="<?php echo esc_attr( $mail['recipient'] ); ?>" />
+ <?php $config_error = $post->config_error(
+ sprintf( '%s.recipient', $args['name'] ) ); ?>
+ <input type="text" id="<?php echo $id; ?>-recipient" name="<?php echo $id; ?>-recipient" class="large-text code" size="70" value="<?php echo esc_attr( $mail['recipient'] ); ?>"<?php if ( $do_validate && $config_error ) { echo ' aria-invalid="true"'; } ?> />
+ <?php if ( $do_validate && $config_error ) {
+ echo sprintf( '<br /><span role="alert" class="config-error">%s</span>', $config_error );
+ } ?>
</td>
</tr>
<label for="<?php echo $id; ?>-sender"><?php echo esc_html( __( 'From', 'contact-form-7' ) ); ?></label>
</th>
<td>
- <input type="text" id="<?php echo $id; ?>-sender" name="<?php echo $id; ?>-sender" class="large-text code" size="70" value="<?php echo esc_attr( $mail['sender'] ); ?>" />
+ <?php $config_error = $post->config_error(
+ sprintf( '%s.sender', $args['name'] ) ); ?>
+ <input type="text" id="<?php echo $id; ?>-sender" name="<?php echo $id; ?>-sender" class="large-text code" size="70" value="<?php echo esc_attr( $mail['sender'] ); ?>"<?php if ( $do_validate && $config_error ) { echo ' aria-invalid="true"'; } ?> />
+ <?php if ( $do_validate && $config_error ) {
+ echo sprintf( '<br /><span role="alert" class="config-error">%s</span>', $config_error );
+ } ?>
</td>
</tr>
<label for="<?php echo $id; ?>-subject"><?php echo esc_html( __( 'Subject', 'contact-form-7' ) ); ?></label>
</th>
<td>
- <input type="text" id="<?php echo $id; ?>-subject" name="<?php echo $id; ?>-subject" class="large-text code" size="70" value="<?php echo esc_attr( $mail['subject'] ); ?>" />
+ <?php $config_error = $post->config_error(
+ sprintf( '%s.subject', $args['name'] ) ); ?>
+ <input type="text" id="<?php echo $id; ?>-subject" name="<?php echo $id; ?>-subject" class="large-text code" size="70" value="<?php echo esc_attr( $mail['subject'] ); ?>"<?php if ( $do_validate && $config_error ) { echo ' aria-invalid="true"'; } ?> />
+ <?php if ( $do_validate && $config_error ) {
+ echo sprintf( '<br /><span role="alert" class="config-error">%s</span>', $config_error );
+ } ?>
</td>
</tr>
<label for="<?php echo $id; ?>-additional-headers"><?php echo esc_html( __( 'Additional Headers', 'contact-form-7' ) ); ?></label>
</th>
<td>
- <textarea id="<?php echo $id; ?>-additional-headers" name="<?php echo $id; ?>-additional-headers" cols="100" rows="4" class="large-text code"><?php echo esc_textarea( $mail['additional_headers'] ); ?></textarea>
+ <?php $config_error = $post->config_error(
+ sprintf( '%s.additional_headers', $args['name'] ) ); ?>
+ <textarea id="<?php echo $id; ?>-additional-headers" name="<?php echo $id; ?>-additional-headers" cols="100" rows="4" class="large-text code"<?php if ( $do_validate && $config_error ) { echo ' aria-invalid="true"'; } ?>><?php echo esc_textarea( $mail['additional_headers'] ); ?></textarea>
+ <?php if ( $do_validate && $config_error ) {
+ echo sprintf( '<br /><span role="alert" class="config-error">%s</span>', $config_error );
+ } ?>
</td>
</tr>
<label for="<?php echo $id; ?>-body"><?php echo esc_html( __( 'Message Body', 'contact-form-7' ) ); ?></label>
</th>
<td>
- <textarea id="<?php echo $id; ?>-body" name="<?php echo $id; ?>-body" cols="100" rows="18" class="large-text code"><?php echo esc_textarea( $mail['body'] ); ?></textarea>
+ <?php $config_error = $post->config_error(
+ sprintf( '%s.body', $args['name'] ) ); ?>
+ <textarea id="<?php echo $id; ?>-body" name="<?php echo $id; ?>-body" cols="100" rows="18" class="large-text code"<?php if ( $do_validate && $config_error ) { echo ' aria-invalid="true"'; } ?>><?php echo esc_textarea( $mail['body'] ); ?></textarea>
+ <?php if ( $do_validate && $config_error ) {
+ echo sprintf( '<br /><span role="alert" class="config-error">%s</span>', $config_error );
+ } ?>
<p><label for="<?php echo $id; ?>-exclude-blank"><input type="checkbox" id="<?php echo $id; ?>-exclude-blank" name="<?php echo $id; ?>-exclude-blank" value="1"<?php echo ( ! empty( $mail['exclude_blank'] ) ) ? ' checked="checked"' : ''; ?> /> <?php echo esc_html( __( 'Exclude lines with blank mail-tags from output', 'contact-form-7' ) ); ?></label></p>
unset( $messages['captcha_not_match'] );
}
+ $do_validate = wpcf7_validate_configuration();
+
?>
-<h3><?php echo esc_html( __( 'Messages', 'contact-form-7' ) ); ?></h3>
+<h2><?php echo esc_html( __( 'Messages', 'contact-form-7' ) ); ?></h2>
<fieldset>
<legend><?php echo esc_html( __( 'Edit messages used in the following situations.', 'contact-form-7' ) ); ?></legend>
<?php
foreach ( $messages as $key => $arr ) {
$field_name = 'wpcf7-message-' . strtr( $key, '_', '-' );
+
+ $config_error = $do_validate
+ ? $post->config_error( sprintf( 'messages.%s', $key ) ) : '';
+
?>
<p class="description">
<label for="<?php echo $field_name; ?>"><?php echo esc_html( $arr['description'] ); ?><br />
-<input type="text" id="<?php echo $field_name; ?>" name="<?php echo $field_name; ?>" class="large-text" size="70" value="<?php echo esc_attr( $post->message( $key, false ) ); ?>" />
+<input type="text" id="<?php echo $field_name; ?>" name="<?php echo $field_name; ?>" class="large-text" size="70" value="<?php echo esc_attr( $post->message( $key, false ) ); ?>"<?php echo $config_error ? ' aria-invalid="true"' : ''; ?> />
+<?php
+ if ( $config_error ) {
+ echo sprintf( '<br /><span role="alert" class="config-error">%s</span>', $config_error );
+ }
+?>
</label>
</p>
<?php
$description = sprintf( esc_html( $description ), $desc_link );
?>
-<h3><?php echo esc_html( __( 'Additional Settings', 'contact-form-7' ) ); ?></h3>
+<h2><?php echo esc_html( __( 'Additional Settings', 'contact-form-7' ) ); ?></h2>
<fieldset>
<legend><?php echo $description; ?></legend>
<textarea id="wpcf7-additional-settings" name="wpcf7-additional-settings" cols="100" rows="8" class="large-text"><?php echo esc_textarea( $post->prop( 'additional_settings' ) ); ?></textarea>
$this->sidebar();
- return;
- case 'add_new':
- $this->screen->add_help_tab( array(
- 'id' => 'add_new',
- 'title' => __( 'Adding A New Contact Form', 'contact-form-7' ),
- 'content' => $this->content( 'add_new' ) ) );
-
- $this->sidebar();
-
return;
case 'edit':
$this->screen->add_help_tab( array(
$content['list_available_actions'] .= '<p>' . __( "<strong>Edit</strong> - Navigates to the editing screen for that contact form. You can also reach that screen by clicking on the contact form title.", 'contact-form-7' ) . '</p>';
$content['list_available_actions'] .= '<p>' . __( "<strong>Duplicate</strong> - Clones that contact form. A cloned contact form inherits all content from the original, but has a different ID.", 'contact-form-7' ) . '</p>';
- $content['add_new'] = '<p>' . __( "You can add a new contact form on this screen. You can create a contact form in your language, which is set WordPress local settings, or in a language that you select from available options.", 'contact-form-7' ) . '</p>';
-
$content['edit_overview'] = '<p>' . __( "On this screen, you can edit a contact form. A contact form is comprised of the following components:", 'contact-form-7' ) . '</p>';
$content['edit_overview'] .= '<p>' . __( "<strong>Title</strong> is the title of a contact form. This title is only used for labeling a contact form, and can be edited.", 'contact-form-7' ) . '</p>';
$content['edit_overview'] .= '<p>' . __( "<strong>Form</strong> is a content of HTML form. You can use arbitrary HTML, which is allowed inside a form element. You can also use Contact Form 7’s form-tags here.", 'contact-form-7' ) . '</p>';
}
});
+ if ('radio' == tagType) {
+ options.push('default:1');
+ }
+
options = (options.length > 0) ? options.join(' ') : '';
var value = '';
--- /dev/null
+<?php
+
+class WPCF7_ConfigValidator {
+
+ const error_maybe_empty = 101;
+ const error_invalid_syntax = 102;
+ const error_email_not_in_site_domain = 103;
+ const error_html_in_message = 104;
+
+ private $contact_form;
+ private $errors = array();
+
+ public function __construct( WPCF7_ContactForm $contact_form ) {
+ $this->contact_form = $contact_form;
+ $this->errors = (array) get_post_meta(
+ $this->contact_form->id(), '_config_errors', true );
+ $this->errors = array_filter( $this->errors );
+ }
+
+ public function is_valid() {
+ return ! $this->errors;
+ }
+
+ public function get_errors() {
+ return $this->errors;
+ }
+
+ public function get_error( $section ) {
+ if ( isset( $this->errors[$section] ) ) {
+ return $this->errors[$section];
+ }
+
+ return null;
+ }
+
+ public function get_error_message( $section ) {
+ $code = $this->get_error( $section );
+
+ switch ( $code ) {
+ case self::error_maybe_empty:
+ return __( "This field can be empty depending on user input.", 'contact-form-7' );
+ case self::error_invalid_syntax:
+ return __( "This field has syntax errors.", 'contact-form-7' );
+ case self::error_email_not_in_site_domain:
+ return __( "This email address does not belong to the same domain as the site.", 'contact-form-7' );
+ case self::error_html_in_message:
+ return __( "HTML tags are not allowed in a message.", 'contact-form-7' );
+ default:
+ return '';
+ }
+ }
+
+ private function add_error( $section, $error ) {
+ $this->errors[$section] = $error;
+ }
+
+ public function validate() {
+ $this->errors = array();
+
+ $this->validate_mail( 'mail' );
+ $this->validate_mail( 'mail_2' );
+ $this->validate_messages();
+
+ delete_post_meta( $this->contact_form->id(), '_config_errors' );
+
+ if ( $this->errors ) {
+ update_post_meta( $this->contact_form->id(), '_config_errors',
+ $this->errors );
+ return false;
+ }
+
+ return true;
+ }
+
+ public function validate_mail( $template = 'mail' ) {
+ $components = (array) $this->contact_form->prop( $template );
+
+ if ( ! $components ) {
+ return;
+ }
+
+ if ( 'mail' != $template && empty( $components['active'] ) ) {
+ return;
+ }
+
+ $components = wp_parse_args( $components, array(
+ 'subject' => '',
+ 'sender' => '',
+ 'recipient' => '',
+ 'additional_headers' => '',
+ 'body' => '' ) );
+
+ $callback = array( $this, 'replace_mail_tags_with_minimum_input' );
+
+ $subject = $components['subject'];
+ $subject = new WPCF7_MailTaggedText( $subject,
+ array( 'callback' => $callback ) );
+ $subject = $subject->replace_tags();
+ $subject = wpcf7_strip_newline( $subject );
+
+ if ( '' === $subject ) {
+ $this->add_error( sprintf( '%s.subject', $template ),
+ self::error_maybe_empty );
+ }
+
+ $sender = $components['sender'];
+ $sender = new WPCF7_MailTaggedText( $sender,
+ array( 'callback' => $callback ) );
+ $sender = $sender->replace_tags();
+ $sender = wpcf7_strip_newline( $sender );
+
+ if ( ! $this->test_from_field_syntax( $sender ) ) {
+ $this->add_error( sprintf( '%s.sender', $template ),
+ self::error_invalid_syntax );
+ } elseif ( ! $this->test_email_in_site_domain( $sender ) ) {
+ $this->add_error( sprintf( '%s.sender', $template ),
+ self::error_email_not_in_site_domain );
+ }
+
+ $recipient = $components['recipient'];
+ $recipient = new WPCF7_MailTaggedText( $recipient,
+ array( 'callback' => $callback ) );
+ $recipient = $recipient->replace_tags();
+ $recipient = wpcf7_strip_newline( $recipient );
+
+ if ( ! $this->test_to_field_syntax( $recipient ) ) {
+ $this->add_error( sprintf( '%s.recipient', $template ),
+ self::error_invalid_syntax );
+ }
+
+ $additional_headers = $components['additional_headers'];
+ $additional_headers = new WPCF7_MailTaggedText( $additional_headers,
+ array( 'callback' => $callback ) );
+ $additional_headers = $additional_headers->replace_tags();
+
+ if ( ! $this->test_additional_headers_syntax( $additional_headers ) ) {
+ $this->add_error( sprintf( '%s.additional_headers', $template ),
+ self::error_invalid_syntax );
+ }
+
+ $body = $components['body'];
+ $body = new WPCF7_MailTaggedText( $body,
+ array( 'callback' => $callback ) );
+ $body = $body->replace_tags();
+
+ if ( '' === $body ) {
+ $this->add_error( sprintf( '%s.body', $template ),
+ self::error_maybe_empty );
+ }
+ }
+
+ public function test_from_field_syntax( $content ) {
+ $content = trim( $content );
+
+ if ( preg_match( '/<(.+)>$/', $content, $matches ) ) {
+ $email = $matches[1];
+ } else {
+ $email = $content;
+ }
+
+ return wpcf7_is_email( $email );
+ }
+
+ public function test_email_in_site_domain( $content ) {
+ if ( wpcf7_is_localhost() ) {
+ return true;
+ }
+
+ $site_domain = strtolower( $_SERVER['SERVER_NAME'] );
+
+ if ( substr( $site_domain, 0, 4 ) == 'www.' ) {
+ $site_domain = substr( $site_domain, 4 );
+ }
+
+ $content = trim( $content );
+
+ if ( preg_match( '/<(.+)>$/', $content, $matches ) ) {
+ $email = strtolower( $matches[1] );
+ } else {
+ $email = strtolower( $content );
+ }
+
+ return ( substr( $email, - strlen( $site_domain ) ) == $site_domain );
+ }
+
+ public function test_to_field_syntax( $content ) {
+ $tos = explode( ',', $content );
+
+ foreach ( $tos as $to ) {
+ $to = trim( $to );
+
+ if ( preg_match( '/<(.+)>$/', $to, $matches ) ) {
+ $to = $matches[1];
+ }
+
+ if ( ! wpcf7_is_email( $to ) ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public function test_additional_headers_syntax( $content ) {
+ $headers = explode( "\n", $content );
+
+ foreach ( $headers as $header ) {
+ $header = trim( $header );
+
+ if ( '' === $header ) {
+ continue;
+ }
+
+ if ( ! preg_match( '/^[0-9A-Za-z-]+:.+$/', $header ) ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public function validate_messages() {
+ $messages = (array) $this->contact_form->prop( 'messages' );
+
+ if ( ! $messages ) {
+ return;
+ }
+
+ foreach ( $messages as $key => $message ) {
+ $stripped = wp_strip_all_tags( $message );
+
+ if ( $stripped != $message ) {
+ $this->add_error( sprintf( 'messages.%s', $key ),
+ self::error_html_in_message );
+ }
+ }
+ }
+
+ public function replace_mail_tags_with_minimum_input( $matches ) {
+ // allow [[foo]] syntax for escaping a tag
+ if ( $matches[1] == '[' && $matches[4] == ']' ) {
+ return substr( $matches[0], 1, -1 );
+ }
+
+ $tag = $matches[0];
+ $tagname = $matches[2];
+ $values = $matches[3];
+
+ if ( ! empty( $values ) ) {
+ preg_match_all( '/"[^"]*"|\'[^\']*\'/', $values, $matches );
+ $values = wpcf7_strip_quote_deep( $matches[0] );
+ }
+
+ $do_not_heat = false;
+
+ if ( preg_match( '/^_raw_(.+)$/', $tagname, $matches ) ) {
+ $tagname = trim( $matches[1] );
+ $do_not_heat = true;
+ }
+
+ $format = '';
+
+ if ( preg_match( '/^_format_(.+)$/', $tagname, $matches ) ) {
+ $tagname = trim( $matches[1] );
+ $format = $values[0];
+ }
+
+ $example_email = 'example@example.com';
+ $example_text = 'example';
+ $example_blank = '';
+
+ $form_tags = $this->contact_form->form_scan_shortcode(
+ array( 'name' => $tagname ) );
+
+ if ( $form_tags ) {
+ $form_tag = new WPCF7_Shortcode( $form_tags[0] );
+
+ $is_required = ( $form_tag->is_required() || 'radio' == $form_tag->type );
+
+ if ( ! $is_required ) {
+ return $example_blank;
+ }
+
+ $is_selectable = in_array( $form_tag->basetype,
+ array( 'radio', 'checkbox', 'select' ) );
+
+ if ( $is_selectable ) {
+ if ( $form_tag->pipes instanceof WPCF7_Pipes ) {
+ if ( $do_not_heat ) {
+ $before_pipes = $form_tag->pipes->collect_befores();
+ $last_item = array_pop( $before_pipes );
+ } else {
+ $after_pipes = $form_tag->pipes->collect_afters();
+ $last_item = array_pop( $after_pipes );
+ }
+ } else {
+ $last_item = array_pop( $form_tag->values );
+ }
+
+ if ( $last_item && wpcf7_is_email( $last_item ) ) {
+ return $example_email;
+ } else {
+ return $example_text;
+ }
+ }
+
+ if ( 'email' == $form_tag->basetype ) {
+ return $example_email;
+ } else {
+ return $example_text;
+ }
+
+ } else {
+ $tagname = preg_replace( '/^wpcf7\./', '_', $tagname ); // for back-compat
+
+ if ( '_post_author_email' == $tagname ) {
+ return $example_email;
+ } elseif ( '_' == substr( $tagname, 0, 1 ) ) { // maybe special mail tag
+ return $example_text;
+ }
+ }
+
+ return $tag;
+ }
+}
public static function mail() {
$template = array(
- 'subject' => '[your-subject]',
+ 'subject' => sprintf(
+ _x( '%1$s "%2$s"', 'mail subject', 'contact-form-7' ),
+ get_bloginfo( 'name' ), '[your-subject]' ),
'sender' => sprintf( '[your-name] <%s>', self::from_email() ),
'body' =>
sprintf( __( 'From: %s', 'contact-form-7' ),
public static function mail_2() {
$template = array(
'active' => false,
- 'subject' => '[your-subject]',
+ 'subject' => sprintf(
+ _x( '%1$s "%2$s"', 'mail subject', 'contact-form-7' ),
+ get_bloginfo( 'name' ), '[your-subject]' ),
'sender' => sprintf( '%s <%s>',
get_bloginfo( 'name' ), self::from_email() ),
'body' =>
'description'
=> __( "Sender's message was sent successfully", 'contact-form-7' ),
'default'
- => __( 'Your message was sent successfully. Thanks.', 'contact-form-7' )
+ => __( "Thank you for your message. It has been sent.", 'contact-form-7' )
),
'mail_sent_ng' => array(
'description'
- => __( "Sender's message was failed to send", 'contact-form-7' ),
+ => __( "Sender's message failed to send", 'contact-form-7' ),
'default'
- => __( 'Failed to send your message. Please try later or contact the administrator by another method.', 'contact-form-7' )
+ => __( "There was an error trying to send your message. Please try again later.", 'contact-form-7' )
),
'validation_error' => array(
'description'
=> __( "Validation errors occurred", 'contact-form-7' ),
'default'
- => __( 'Validation errors occurred. Please confirm the fields and submit it again.', 'contact-form-7' )
+ => __( "One or more fields have an error. Please check and try again.", 'contact-form-7' )
),
'spam' => array(
'description'
=> __( "Submission was referred to as spam", 'contact-form-7' ),
'default'
- => __( 'Failed to send your message. Please try later or contact the administrator by another method.', 'contact-form-7' )
+ => __( "There was an error trying to send your message. Please try again later.", 'contact-form-7' )
),
'accept_terms' => array(
'description'
=> __( "There are terms that the sender must accept", 'contact-form-7' ),
'default'
- => __( 'Please accept the terms to proceed.', 'contact-form-7' )
+ => __( "You must accept the terms and conditions before sending your message.", 'contact-form-7' )
),
'invalid_required' => array(
'description'
=> __( "There is a field that the sender must fill in", 'contact-form-7' ),
'default'
- => __( 'Please fill in the required field.', 'contact-form-7' )
+ => __( "The field is required.", 'contact-form-7' )
),
'invalid_too_long' => array(
'description'
- => __( "There is a field that the user input is longer than the maximum allowed length", 'contact-form-7' ),
+ => __( "There is a field with input that is longer than the maximum allowed length", 'contact-form-7' ),
'default'
- => __( 'This input is too long.', 'contact-form-7' )
+ => __( "The field is too long.", 'contact-form-7' )
),
'invalid_too_short' => array(
'description'
- => __( "There is a field that the user input is shorter than the minimum allowed length", 'contact-form-7' ),
+ => __( "There is a field with input that is shorter than the minimum allowed length", 'contact-form-7' ),
'default'
- => __( 'This input is too short.', 'contact-form-7' )
+ => __( "The field is too short.", 'contact-form-7' )
)
);
private $unit_tag;
private $responses_count = 0;
private $scanned_form_tags;
+ private $config_validator;
public static function count() {
return self::$found_items;
$message = isset( $messages[$status] ) ? $messages[$status] : '';
if ( $filter ) {
+ $message = wp_strip_all_tags( $message );
$message = wpcf7_mail_replace_tags( $message, array( 'html' => true ) );
$message = apply_filters( 'wpcf7_display_message', $message, $status );
}
return apply_filters( 'wpcf7_contact_form_shortcode', $shortcode, $args, $this );
}
+
+ public function validate_configuration() {
+ if ( ! $this->initial() ) {
+ if ( ! $this->config_validator ) {
+ $this->config_validator = new WPCF7_ConfigValidator( $this );
+ }
+
+ $this->config_validator->validate();
+ }
+ }
+
+ public function get_config_errors() {
+ if ( ! $this->initial() ) {
+ if ( ! $this->config_validator ) {
+ $this->config_validator = new WPCF7_ConfigValidator( $this );
+ }
+
+ return $this->config_validator->get_errors();
+ }
+
+ return array();
+ }
+
+ public function config_error( $section ) {
+ if ( ! $this->initial() ) {
+ if ( ! $this->config_validator ) {
+ $this->config_validator = new WPCF7_ConfigValidator( $this );
+ }
+
+ return $this->config_validator->get_error_message( $section );
+ }
+
+ return '';
+ }
+
}
function wpcf7_contact_form( $id ) {
WPCF7_USE_REALLY_SIMPLE_CAPTCHA );
}
+function wpcf7_validate_configuration() {
+ return apply_filters( 'wpcf7_validate_configuration',
+ WPCF7_VALIDATE_CONFIGURATION );
+}
+
function wpcf7_load_js() {
return apply_filters( 'wpcf7_load_js', WPCF7_LOAD_JS );
}
?>
<div class="card<?php echo $service->is_active() ? ' active' : ''; ?>" id="<?php echo esc_attr( $name ); ?>">
<?php $service->icon(); ?>
-<h3 class="title"><?php echo esc_html( $service->get_title() ); ?></h3>
+<h2 class="title"><?php echo esc_html( $service->get_title() ); ?></h2>
<div class="infobox">
<?php echo esc_html( implode( ', ', $cats ) ); ?>
<br />
return $l10n;
}
- $l10n = array(
- 'af' => __( 'Afrikaans', 'contact-form-7' ),
- 'sq' => __( 'Albanian', 'contact-form-7' ),
- 'ar' => __( 'Arabic', 'contact-form-7' ),
- 'hy_AM' => __( 'Armenian', 'contact-form-7' ),
- 'az' => __( 'Azerbaijani', 'contact-form-7' ),
- 'bn_BD' => __( 'Bangla', 'contact-form-7' ),
- 'eu' => __( 'Basque', 'contact-form-7' ),
- 'be_BY' => __( 'Belarusian', 'contact-form-7' ),
- 'bs_BA' => __( 'Bosnian', 'contact-form-7' ),
- 'bg_BG' => __( 'Bulgarian', 'contact-form-7' ),
- 'ca' => __( 'Catalan', 'contact-form-7' ),
- 'ckb' => __( 'Central Kurdish', 'contact-form-7' ),
- 'zh_CN' => __( 'Chinese (China)', 'contact-form-7' ),
- 'zh_TW' => __( 'Chinese (Taiwan)', 'contact-form-7' ),
- 'hr' => __( 'Croatian', 'contact-form-7' ),
- 'cs_CZ' => __( 'Czech', 'contact-form-7' ),
- 'da_DK' => __( 'Danish', 'contact-form-7' ),
- 'nl_NL' => __( 'Dutch', 'contact-form-7' ),
- 'en_US' => __( 'English (United States)', 'contact-form-7' ),
- 'eo_EO' => __( 'Esperanto', 'contact-form-7' ),
- 'et' => __( 'Estonian', 'contact-form-7' ),
- 'fi' => __( 'Finnish', 'contact-form-7' ),
- 'fr_FR' => __( 'French (France)', 'contact-form-7' ),
- 'gl_ES' => __( 'Galician', 'contact-form-7' ),
- 'gu_IN' => __( 'Gujarati', 'contact-form-7' ),
- 'ka_GE' => __( 'Georgian', 'contact-form-7' ),
- 'de_DE' => __( 'German', 'contact-form-7' ),
- 'el' => __( 'Greek', 'contact-form-7' ),
- 'ht' => __( 'Haitian', 'contact-form-7' ),
- 'he_IL' => __( 'Hebrew', 'contact-form-7' ),
- 'hi_IN' => __( 'Hindi', 'contact-form-7' ),
- 'hu_HU' => __( 'Hungarian', 'contact-form-7' ),
- 'bn_IN' => __( 'Indian Bengali', 'contact-form-7' ),
- 'id_ID' => __( 'Indonesian', 'contact-form-7' ),
- 'ga_IE' => __( 'Irish', 'contact-form-7' ),
- 'it_IT' => __( 'Italian', 'contact-form-7' ),
- 'ja' => __( 'Japanese', 'contact-form-7' ),
- 'ko_KR' => __( 'Korean', 'contact-form-7' ),
- 'lv' => __( 'Latvian', 'contact-form-7' ),
- 'lt_LT' => __( 'Lithuanian', 'contact-form-7' ),
- 'mk_MK' => __( 'Macedonian', 'contact-form-7' ),
- 'ms_MY' => __( 'Malay', 'contact-form-7' ),
- 'ml_IN' => __( 'Malayalam', 'contact-form-7' ),
- 'mt_MT' => __( 'Maltese', 'contact-form-7' ),
- 'nb_NO' => __( 'Norwegian (Bokmål)', 'contact-form-7' ),
- 'fa_IR' => __( 'Persian', 'contact-form-7' ),
- 'pl_PL' => __( 'Polish', 'contact-form-7' ),
- 'pt_BR' => __( 'Portuguese (Brazil)', 'contact-form-7' ),
- 'pt_PT' => __( 'Portuguese (Portugal)', 'contact-form-7' ),
- 'pa_IN' => __( 'Punjabi', 'contact-form-7' ),
- 'ru_RU' => __( 'Russian', 'contact-form-7' ),
- 'ro_RO' => __( 'Romanian', 'contact-form-7' ),
- 'sr_RS' => __( 'Serbian', 'contact-form-7' ),
- 'si_LK' => __( 'Sinhala', 'contact-form-7' ),
- 'sk_SK' => __( 'Slovak', 'contact-form-7' ),
- 'sl_SI' => __( 'Slovene', 'contact-form-7' ),
- 'es_ES' => __( 'Spanish (Spain)', 'contact-form-7' ),
- 'sv_SE' => __( 'Swedish', 'contact-form-7' ),
- 'ta' => __( 'Tamil', 'contact-form-7' ),
- 'th' => __( 'Thai', 'contact-form-7' ),
- 'tl' => __( 'Tagalog', 'contact-form-7' ),
- 'tr_TR' => __( 'Turkish', 'contact-form-7' ),
- 'uk' => __( 'Ukrainian', 'contact-form-7' ),
- 'vi' => __( 'Vietnamese', 'contact-form-7' )
- );
+ if ( ! is_admin() ) {
+ return $l10n;
+ }
+
+ require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
+
+ $api = translations_api( 'plugins', array(
+ 'slug' => 'contact-form-7',
+ 'version' => WPCF7_VERSION ) );
+
+ if ( is_wp_error( $api ) || empty( $api['translations'] ) ) {
+ return $l10n;
+ }
+
+ foreach ( (array) $api['translations'] as $translation ) {
+ if ( ! empty( $translation['language'] )
+ && ! empty( $translation['english_name'] ) ) {
+ $l10n[$translation['language']] = $translation['english_name'];
+ }
+ }
return $l10n;
}
function wpcf7_is_valid_locale( $locale ) {
- $l10n = wpcf7_l10n();
- return isset( $l10n[$locale] );
+ $pattern = '/^[a-z]{2,3}(?:_[a-zA-Z_]{2,})?$/';
+ return (bool) preg_match( $pattern, $locale );
}
function wpcf7_is_rtl( $locale = '' ) {
if ( $use_html ) {
$headers .= "Content-Type: text/html\n";
+ $headers .= "X-WPCF7-Content-Type: text/html\n";
+ } else {
+ $headers .= "X-WPCF7-Content-Type: text/plain\n";
}
if ( $additional_headers ) {
return $content;
}
+add_action( 'phpmailer_init', 'wpcf7_phpmailer_init' );
+
+function wpcf7_phpmailer_init( $phpmailer ) {
+ $wpcf7_content_type = false;
+
+ foreach ( (array) $phpmailer->getCustomHeaders() as $custom_header ) {
+ if ( 'X-WPCF7-Content-Type' == $custom_header[0] ) {
+ $wpcf7_content_type = trim( $custom_header[1] );
+ break;
+ }
+ }
+
+ if ( 'text/html' == $wpcf7_content_type ) {
+ $phpmailer->msgHTML( $phpmailer->Body );
+ }
+}
+
class WPCF7_MailTaggedText {
private $html = false;
+ private $callback = null;
private $content = '';
private $replaced_tags = array();
public function __construct( $content, $args = '' ) {
- $args = wp_parse_args( $args, array( 'html' => false ) );
+ $args = wp_parse_args( $args, array(
+ 'html' => false,
+ 'callback' => null ) );
$this->html = (bool) $args['html'];
+
+ if ( null !== $args['callback'] && is_callable( $args['callback'] ) ) {
+ $this->callback = $args['callback'];
+ } elseif ( $this->html ) {
+ $this->callback = array( $this, 'replace_tags_callback_html' );
+ } else {
+ $this->callback = array( $this, 'replace_tags_callback' );
+ }
+
$this->content = $content;
}
. '((?:[\t ]+"[^"]*"|[\t ]+\'[^\']*\')*)' // [3] = values
. '[\t ]*\](\]?)/';
- if ( $this->html ) {
- $callback = array( $this, 'replace_tags_callback_html' );
- } else {
- $callback = array( $this, 'replace_tags_callback' );
- }
-
- return preg_replace_callback( $regex, $callback, $this->content );
+ return preg_replace_callback( $regex, $this->callback, $this->content );
}
private function replace_tags_callback_html( $matches ) {
return $output;
}
-?>
\ No newline at end of file
+?>
msgstr ""
"Project-Id-Version: Contact Form 7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-24 01:46+0900\n"
+"POT-Creation-Date: 2016-02-20 13:50+0900\n"
"PO-Revision-Date: 2015-05-18 21:49+0900\n"
"Last-Translator: Takayuki Miyoshi <takayukister@gmail.com>\n"
"Language-Team: \n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: UTF-8\n"
-"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_c\n"
+"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_c;_n:1,2;_x\n"
"X-Poedit-Basepath: ../..\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 1.8.6\n"
msgid "Just another contact form plugin. Simple but flexible."
msgstr ""
-#: contact-form-7/admin/admin.php:16 contact-form-7/modules/flamingo.php:136
+#: contact-form-7/admin/admin.php:20 contact-form-7/modules/flamingo.php:137
msgid "Contact Form 7"
msgstr ""
-#: contact-form-7/admin/admin.php:17
+#: contact-form-7/admin/admin.php:21
msgid "Contact"
msgstr ""
-#: contact-form-7/admin/admin.php:22
+#: contact-form-7/admin/admin.php:27
#: contact-form-7/admin/edit-contact-form.php:38
msgid "Edit Contact Form"
msgstr ""
-#: contact-form-7/admin/admin.php:23 contact-form-7/admin/admin.php:239
-#: contact-form-7/includes/contact-form.php:29
+#: contact-form-7/admin/admin.php:28 contact-form-7/admin/admin.php:283
+#: contact-form-7/includes/contact-form.php:30
msgid "Contact Forms"
msgstr ""
-#: contact-form-7/admin/admin.php:30 contact-form-7/admin/admin.php:283
+#: contact-form-7/admin/admin.php:35
#: contact-form-7/admin/edit-contact-form.php:36
msgid "Add New Contact Form"
msgstr ""
-#: contact-form-7/admin/admin.php:31 contact-form-7/admin/admin.php:242
-#: contact-form-7/admin/admin.php:288 contact-form-7/admin/admin.php:300
+#: contact-form-7/admin/admin.php:36 contact-form-7/admin/admin.php:286
#: contact-form-7/admin/edit-contact-form.php:41
msgid "Add New"
msgstr ""
-#: contact-form-7/admin/admin.php:41 contact-form-7/admin/admin.php:325
+#: contact-form-7/admin/admin.php:46 contact-form-7/admin/admin.php:366
msgid "Integration with Other Services"
msgstr ""
-#: contact-form-7/admin/admin.php:42
+#: contact-form-7/admin/admin.php:47
msgid "Integration"
msgstr ""
-#: contact-form-7/admin/admin.php:72 contact-form-7/admin/admin.php:94
+#: contact-form-7/admin/admin.php:77 contact-form-7/admin/admin.php:99
msgid "You are not allowed to edit this item."
msgstr ""
-#: contact-form-7/admin/admin.php:133
+#: contact-form-7/admin/admin.php:138
msgid "You are not allowed to delete this item."
msgstr ""
-#: contact-form-7/admin/admin.php:136
+#: contact-form-7/admin/admin.php:141
msgid "Error in deleting."
msgstr ""
-#: contact-form-7/admin/admin.php:213
+#: contact-form-7/admin/admin.php:162
+msgid "You are not allowed to validate configuration."
+msgstr ""
+
+#: contact-form-7/admin/admin.php:250
msgid "The changes you made will be lost if you navigate away from this page."
msgstr ""
-#: contact-form-7/admin/admin.php:247
+#: contact-form-7/admin/admin.php:291
#, php-format
msgid "Search results for “%s”"
msgstr ""
-#: contact-form-7/admin/admin.php:256
+#: contact-form-7/admin/admin.php:300
msgid "Search Contact Forms"
msgstr ""
-#: contact-form-7/admin/admin.php:287
+#: contact-form-7/admin/admin.php:314
#, php-format
-msgid "Use the default language (%s)"
-msgstr ""
-
-#: contact-form-7/admin/admin.php:291
-msgid "Or"
-msgstr ""
+msgid "Validate %s Contact Form Now"
+msgid_plural "Validate %s Contact Forms Now"
+msgstr[0] ""
-#: contact-form-7/admin/admin.php:295
-msgid "(select language)"
+#: contact-form-7/admin/admin.php:322
+msgid "Validate Configuration"
msgstr ""
-#: contact-form-7/admin/admin.php:354
+#: contact-form-7/admin/admin.php:395
msgid "Contact form created."
msgstr ""
-#: contact-form-7/admin/admin.php:356
+#: contact-form-7/admin/admin.php:397
msgid "Contact form saved."
msgstr ""
-#: contact-form-7/admin/admin.php:358
+#: contact-form-7/admin/admin.php:399
msgid "Contact form deleted."
msgstr ""
-#: contact-form-7/admin/admin.php:373
+#: contact-form-7/admin/admin.php:408
+#, php-format
+msgid "Configuration validation completed. An invalid contact form was found."
+msgid_plural ""
+"Configuration validation completed. %s invalid contact forms were found."
+msgstr[0] ""
+
+#: contact-form-7/admin/admin.php:413
+msgid "Configuration validation completed. No invalid contact form was found."
+msgstr ""
+
+#: contact-form-7/admin/admin.php:429
msgid "Settings"
msgstr ""
-#: contact-form-7/admin/admin.php:391
+#: contact-form-7/admin/admin.php:447
#, php-format
msgid ""
"<strong>Contact Form 7 %1$s requires WordPress %2$s or higher.</strong> "
"Please <a href=\"%3$s\">update WordPress</a> first."
msgstr ""
-#: contact-form-7/admin/admin.php:417
+#: contact-form-7/admin/admin.php:473
msgid "Dismiss"
msgstr ""
-#: contact-form-7/admin/admin.php:422
+#: contact-form-7/admin/admin.php:478
msgid "Contact Form 7 Needs Your Support"
msgstr ""
-#: contact-form-7/admin/admin.php:423
+#: contact-form-7/admin/admin.php:479
msgid ""
"It is hard to continue development and support for this plugin without "
"contributions from users like you. If you enjoy using Contact Form 7 and "
"find it useful, please consider making a donation."
msgstr ""
-#: contact-form-7/admin/admin.php:424
+#: contact-form-7/admin/admin.php:480
msgid "http://contactform7.com/donate/"
msgstr ""
-#: contact-form-7/admin/admin.php:424
+#: contact-form-7/admin/admin.php:480
msgid "Donate"
msgstr ""
-#: contact-form-7/admin/admin.php:428
+#: contact-form-7/admin/admin.php:484
msgid "Get Started"
msgstr ""
-#: contact-form-7/admin/admin.php:430
+#: contact-form-7/admin/admin.php:486
msgid "http://contactform7.com/getting-started-with-contact-form-7/"
msgstr ""
-#: contact-form-7/admin/admin.php:430
+#: contact-form-7/admin/admin.php:486
msgid "Getting Started with Contact Form 7"
msgstr ""
-#: contact-form-7/admin/admin.php:431
+#: contact-form-7/admin/admin.php:487
msgid "http://contactform7.com/admin-screen/"
msgstr ""
-#: contact-form-7/admin/admin.php:431
+#: contact-form-7/admin/admin.php:487
msgid "Admin Screen"
msgstr ""
-#: contact-form-7/admin/admin.php:432
+#: contact-form-7/admin/admin.php:488
msgid "http://contactform7.com/tag-syntax/"
msgstr ""
-#: contact-form-7/admin/admin.php:432
+#: contact-form-7/admin/admin.php:488
msgid "How Tags Work"
msgstr ""
-#: contact-form-7/admin/admin.php:433
+#: contact-form-7/admin/admin.php:489
msgid "http://contactform7.com/setting-up-mail/"
msgstr ""
-#: contact-form-7/admin/admin.php:433
+#: contact-form-7/admin/admin.php:489
msgid "Setting Up Mail"
msgstr ""
-#: contact-form-7/admin/admin.php:438
+#: contact-form-7/admin/admin.php:494
msgid "Did You Know?"
msgstr ""
-#: contact-form-7/admin/admin.php:440
+#: contact-form-7/admin/admin.php:496
msgid "http://contactform7.com/spam-filtering-with-akismet/"
msgstr ""
-#: contact-form-7/admin/admin.php:440
+#: contact-form-7/admin/admin.php:496
msgid "Spam Filtering with Akismet"
msgstr ""
-#: contact-form-7/admin/admin.php:441
+#: contact-form-7/admin/admin.php:497
msgid "http://contactform7.com/save-submitted-messages-with-flamingo/"
msgstr ""
-#: contact-form-7/admin/admin.php:441
+#: contact-form-7/admin/admin.php:497
msgid "Save Messages with Flamingo"
msgstr ""
-#: contact-form-7/admin/admin.php:442
+#: contact-form-7/admin/admin.php:498
msgid "http://contactform7.com/selectable-recipient-with-pipes/"
msgstr ""
-#: contact-form-7/admin/admin.php:442
+#: contact-form-7/admin/admin.php:498
msgid "Selectable Recipient with Pipes"
msgstr ""
-#: contact-form-7/admin/admin.php:443
+#: contact-form-7/admin/admin.php:499
msgid ""
"http://contactform7.com/tracking-form-submissions-with-google-analytics/"
msgstr ""
-#: contact-form-7/admin/admin.php:443
+#: contact-form-7/admin/admin.php:499
msgid "Tracking with Google Analytics"
msgstr ""
-#: contact-form-7/admin/admin.php:488
+#: contact-form-7/admin/admin.php:544
msgid "You are not allowed to edit this contact form."
msgstr ""
+#: contact-form-7/admin/admin.php:567
+#, php-format
+msgid "This contact form has a configuration error."
+msgid_plural "This contact form has %s configuration errors."
+msgstr[0] ""
+
+#: contact-form-7/admin/admin.php:573
+msgid "http://contactform7.com/configuration-errors/"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:574
+msgid "How to Resolve Configuration Errors"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:601
+msgid "Validate Contact Form 7 Configuration"
+msgstr ""
+
+#: contact-form-7/admin/admin.php:603
+msgid ""
+"Misconfiguration leads to mail delivery failure or other troubles. Validate "
+"your contact forms now."
+msgstr ""
+
#: contact-form-7/admin/edit-contact-form.php:26
#: contact-form-7/admin/edit-contact-form.php:124
#: contact-form-7/modules/recaptcha.php:206
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:131
-#: contact-form-7/admin/includes/class-contact-forms-list-table.php:116
+#: contact-form-7/admin/includes/class-contact-forms-list-table.php:139
msgid "Duplicate"
msgstr ""
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:161
-#: contact-form-7/admin/includes/help-tabs.php:103
+#: contact-form-7/admin/includes/help-tabs.php:92
msgid "http://contactform7.com/docs/"
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:161
-#: contact-form-7/admin/includes/help-tabs.php:103
+#: contact-form-7/admin/includes/help-tabs.php:92
msgid "Docs"
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:162
-#: contact-form-7/admin/includes/help-tabs.php:104
+#: contact-form-7/admin/includes/help-tabs.php:93
msgid "http://contactform7.com/faq/"
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:162
-#: contact-form-7/admin/includes/help-tabs.php:104
+#: contact-form-7/admin/includes/help-tabs.php:93
msgid "FAQ"
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:163
-#: contact-form-7/admin/includes/help-tabs.php:105
+#: contact-form-7/admin/includes/help-tabs.php:94
msgid "http://contactform7.com/support/"
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:163
-#: contact-form-7/admin/includes/help-tabs.php:105
+#: contact-form-7/admin/includes/help-tabs.php:94
msgid "Support"
msgstr ""
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:188
-#: contact-form-7/admin/includes/editor.php:172
+#: contact-form-7/admin/includes/editor.php:201
msgid "Messages"
msgstr ""
msgstr ""
#: contact-form-7/admin/edit-contact-form.php:201
-#: contact-form-7/admin/includes/editor.php:195
-#: contact-form-7/admin/includes/editor.php:200
+#: contact-form-7/admin/includes/editor.php:233
+#: contact-form-7/admin/includes/editor.php:238
msgid "Additional Settings"
msgstr ""
msgstr ""
#: contact-form-7/admin/includes/class-contact-forms-list-table.php:106
-msgid "Edit"
+#, php-format
+msgid "Edit “%s”"
msgstr ""
-#: contact-form-7/admin/includes/class-contact-forms-list-table.php:121
+#: contact-form-7/admin/includes/class-contact-forms-list-table.php:117
#, php-format
-msgid "Edit “%s”"
+msgid "%s configuration error found"
+msgid_plural "%s configuration errors found"
+msgstr[0] ""
+
+#: contact-form-7/admin/includes/class-contact-forms-list-table.php:129
+msgid "Edit"
msgstr ""
-#: contact-form-7/admin/includes/class-contact-forms-list-table.php:165
+#: contact-form-7/admin/includes/class-contact-forms-list-table.php:184
msgid "Y/m/d g:i:s A"
msgstr ""
-#: contact-form-7/admin/includes/class-contact-forms-list-table.php:172
+#: contact-form-7/admin/includes/class-contact-forms-list-table.php:191
#, php-format
msgid "%s ago"
msgstr ""
-#: contact-form-7/admin/includes/class-contact-forms-list-table.php:174
+#: contact-form-7/admin/includes/class-contact-forms-list-table.php:193
msgid "Y/m/d"
msgstr ""
msgid "Use Mail (2)"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:90
+#: contact-form-7/admin/includes/editor.php:92
msgid "Mail (2) is an additional mail template often used as an autoresponder."
msgstr ""
-#: contact-form-7/admin/includes/editor.php:96
+#: contact-form-7/admin/includes/editor.php:98
msgid "In the following fields, you can use these mail-tags:"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:102
+#: contact-form-7/admin/includes/editor.php:104
msgid "To"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:111
+#: contact-form-7/admin/includes/editor.php:118
msgid "From"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:120
+#: contact-form-7/admin/includes/editor.php:132
#: contact-form-7/includes/contact-form-template.php:29
msgid "Subject"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:129
+#: contact-form-7/admin/includes/editor.php:146
msgid "Additional Headers"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:138
+#: contact-form-7/admin/includes/editor.php:160
msgid "Message Body"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:143
+#: contact-form-7/admin/includes/editor.php:170
msgid "Exclude lines with blank mail-tags from output"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:145
+#: contact-form-7/admin/includes/editor.php:172
msgid "Use HTML content type"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:151
+#: contact-form-7/admin/includes/editor.php:178
msgid "File Attachments"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:174
+#: contact-form-7/admin/includes/editor.php:203
msgid "Edit messages used in the following situations."
msgstr ""
-#: contact-form-7/admin/includes/editor.php:194
+#: contact-form-7/admin/includes/editor.php:232
msgid "http://contactform7.com/additional-settings/"
msgstr ""
-#: contact-form-7/admin/includes/editor.php:196
+#: contact-form-7/admin/includes/editor.php:234
#, php-format
msgid "You can add customization code snippets here. For details, see %s."
msgstr ""
#: contact-form-7/admin/includes/help-tabs.php:16
-#: contact-form-7/admin/includes/help-tabs.php:39
-#: contact-form-7/admin/includes/help-tabs.php:58
+#: contact-form-7/admin/includes/help-tabs.php:30
+#: contact-form-7/admin/includes/help-tabs.php:49
msgid "Overview"
msgstr ""
msgid "Available Actions"
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:30
-msgid "Adding A New Contact Form"
-msgstr ""
-
-#: contact-form-7/admin/includes/help-tabs.php:44
+#: contact-form-7/admin/includes/help-tabs.php:35
msgid "Form-tags"
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:49
+#: contact-form-7/admin/includes/help-tabs.php:40
msgid "Mail-tags"
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:70
+#: contact-form-7/admin/includes/help-tabs.php:61
msgid ""
"On this screen, you can manage contact forms provided by Contact Form 7. You "
"can manage an unlimited number of contact forms. Each contact form has a "
"target."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:72
+#: contact-form-7/admin/includes/help-tabs.php:63
msgid ""
"Hovering over a row in the contact forms list will display action links that "
"allow you to manage your contact form. You can perform the following actions:"
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:73
+#: contact-form-7/admin/includes/help-tabs.php:64
msgid ""
"<strong>Edit</strong> - Navigates to the editing screen for that contact "
"form. You can also reach that screen by clicking on the contact form title."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:74
+#: contact-form-7/admin/includes/help-tabs.php:65
msgid ""
"<strong>Duplicate</strong> - Clones that contact form. A cloned contact form "
"inherits all content from the original, but has a different ID."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:76
-msgid ""
-"You can add a new contact form on this screen. You can create a contact form "
-"in your language, which is set WordPress local settings, or in a language "
-"that you select from available options."
-msgstr ""
-
-#: contact-form-7/admin/includes/help-tabs.php:78
+#: contact-form-7/admin/includes/help-tabs.php:67
msgid ""
"On this screen, you can edit a contact form. A contact form is comprised of "
"the following components:"
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:79
+#: contact-form-7/admin/includes/help-tabs.php:68
msgid ""
"<strong>Title</strong> is the title of a contact form. This title is only "
"used for labeling a contact form, and can be edited."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:80
+#: contact-form-7/admin/includes/help-tabs.php:69
msgid ""
"<strong>Form</strong> is a content of HTML form. You can use arbitrary HTML, "
"which is allowed inside a form element. You can also use Contact Form "
"7’s form-tags here."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:81
+#: contact-form-7/admin/includes/help-tabs.php:70
msgid ""
"<strong>Mail</strong> manages a mail template (headers and message body) "
"that this contact form will send when users submit it. You can use Contact "
"Form 7’s mail-tags here."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:82
+#: contact-form-7/admin/includes/help-tabs.php:71
msgid ""
"<strong>Mail (2)</strong> is an additional mail template that works similar "
"to Mail. Mail (2) is different in that it is sent only when Mail has been "
"sent successfully."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:83
+#: contact-form-7/admin/includes/help-tabs.php:72
msgid ""
"In <strong>Messages</strong>, you can edit various types of messages used "
"for this contact form. These messages are relatively short messages, like a "
"validation error message you see when you leave a required field blank."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:84
+#: contact-form-7/admin/includes/help-tabs.php:73
msgid ""
"<strong>Additional Settings</strong> provides a place where you can "
"customize the behavior of this contact form by adding code snippets."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:86
+#: contact-form-7/admin/includes/help-tabs.php:75
msgid ""
"A form-tag is a short code enclosed in square brackets used in a form "
"content. A form-tag generally represents an input field, and its components "
"fields, CAPTCHAs, and quiz fields."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:87
+#: contact-form-7/admin/includes/help-tabs.php:76
msgid ""
"While form-tags have a comparatively complex syntax, you don’t need to "
"know the syntax to add form-tags because you can use the straightforward tag "
"generator (<strong>Generate Tag</strong> button on this screen)."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:89
+#: contact-form-7/admin/includes/help-tabs.php:78
msgid ""
"A mail-tag is also a short code enclosed in square brackets that you can use "
"in every Mail and Mail (2) field. A mail-tag represents a user input value "
"through an input field of a corresponding form-tag."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:90
+#: contact-form-7/admin/includes/help-tabs.php:79
msgid ""
"There are also special mail-tags that have specific names, but don’t "
"have corresponding form-tags. They are used to represent meta information of "
"page."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:92
+#: contact-form-7/admin/includes/help-tabs.php:81
msgid ""
"On this screen, you can manage services that are available through Contact "
"Form 7. Using API will allow you to collaborate with any services that are "
"available."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:93
+#: contact-form-7/admin/includes/help-tabs.php:82
msgid ""
"You may need to first sign up for an account with the service that you plan "
"to use. When you do so, you would need to authorize Contact Form 7 to access "
"the service with your account."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:94
+#: contact-form-7/admin/includes/help-tabs.php:83
msgid ""
"Any information you provide will not be shared with service providers "
"without your authorization."
msgstr ""
-#: contact-form-7/admin/includes/help-tabs.php:102
+#: contact-form-7/admin/includes/help-tabs.php:91
msgid "For more information:"
msgstr ""
msgid "Form-tag Generator: %s"
msgstr ""
+#: contact-form-7/includes/config-validator.php:41
+msgid "This field can be empty depending on user input."
+msgstr ""
+
+#: contact-form-7/includes/config-validator.php:43
+msgid "This field has syntax errors."
+msgstr ""
+
+#: contact-form-7/includes/config-validator.php:45
+msgid "This email address does not belong to the same domain as the site."
+msgstr ""
+
+#: contact-form-7/includes/config-validator.php:47
+msgid "HTML tags are not allowed in a message."
+msgstr ""
+
#: contact-form-7/includes/contact-form-template.php:23
msgid "Your Name"
msgstr ""
msgid "Send"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:43
+#: contact-form-7/includes/contact-form-template.php:41
+#: contact-form-7/includes/contact-form-template.php:67
#, php-format
-msgid "From: %s"
+msgid "%1$s \"%2$s\""
msgstr ""
#: contact-form-7/includes/contact-form-template.php:45
#, php-format
-msgid "Subject: %s"
+msgid "From: %s"
msgstr ""
#: contact-form-7/includes/contact-form-template.php:47
-#: contact-form-7/includes/contact-form-template.php:68
+#, php-format
+msgid "Subject: %s"
+msgstr ""
+
+#: contact-form-7/includes/contact-form-template.php:49
+#: contact-form-7/includes/contact-form-template.php:72
msgid "Message Body:"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:50
-#: contact-form-7/includes/contact-form-template.php:71
+#: contact-form-7/includes/contact-form-template.php:52
+#: contact-form-7/includes/contact-form-template.php:75
#, php-format
msgid "This e-mail was sent from a contact form on %1$s (%2$s)"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:117
+#: contact-form-7/includes/contact-form-template.php:121
msgid "Sender's message was sent successfully"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:119
-msgid "Your message was sent successfully. Thanks."
+#: contact-form-7/includes/contact-form-template.php:123
+msgid "Thank you for your message. It has been sent."
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:124
-msgid "Sender's message was failed to send"
+#: contact-form-7/includes/contact-form-template.php:128
+msgid "Sender's message failed to send"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:126
-#: contact-form-7/includes/contact-form-template.php:140
-msgid ""
-"Failed to send your message. Please try later or contact the administrator "
-"by another method."
+#: contact-form-7/includes/contact-form-template.php:130
+#: contact-form-7/includes/contact-form-template.php:144
+msgid "There was an error trying to send your message. Please try again later."
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:131
+#: contact-form-7/includes/contact-form-template.php:135
msgid "Validation errors occurred"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:133
-msgid ""
-"Validation errors occurred. Please confirm the fields and submit it again."
+#: contact-form-7/includes/contact-form-template.php:137
+msgid "One or more fields have an error. Please check and try again."
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:138
+#: contact-form-7/includes/contact-form-template.php:142
msgid "Submission was referred to as spam"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:145
+#: contact-form-7/includes/contact-form-template.php:149
msgid "There are terms that the sender must accept"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:147
-msgid "Please accept the terms to proceed."
+#: contact-form-7/includes/contact-form-template.php:151
+msgid "You must accept the terms and conditions before sending your message."
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:152
+#: contact-form-7/includes/contact-form-template.php:156
msgid "There is a field that the sender must fill in"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:154
-msgid "Please fill in the required field."
+#: contact-form-7/includes/contact-form-template.php:158
+msgid "The field is required."
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:159
+#: contact-form-7/includes/contact-form-template.php:163
msgid ""
-"There is a field that the user input is longer than the maximum allowed "
-"length"
+"There is a field with input that is longer than the maximum allowed length"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:161
-msgid "This input is too long."
+#: contact-form-7/includes/contact-form-template.php:165
+msgid "The field is too long."
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:166
+#: contact-form-7/includes/contact-form-template.php:170
msgid ""
-"There is a field that the user input is shorter than the minimum allowed "
-"length"
+"There is a field with input that is shorter than the minimum allowed length"
msgstr ""
-#: contact-form-7/includes/contact-form-template.php:168
-msgid "This input is too short."
+#: contact-form-7/includes/contact-form-template.php:172
+msgid "The field is too short."
msgstr ""
-#: contact-form-7/includes/contact-form.php:30
+#: contact-form-7/includes/contact-form.php:31
msgid "Contact Form"
msgstr ""
-#: contact-form-7/includes/contact-form.php:76
-#: contact-form-7/includes/contact-form.php:226
+#: contact-form-7/includes/contact-form.php:77
+#: contact-form-7/includes/contact-form.php:227
msgid "Untitled"
msgstr ""
-#: contact-form-7/includes/contact-form.php:152
+#: contact-form-7/includes/contact-form.php:153
#, php-format
msgid ""
"<code>%1$s</code> property of a <code>WPCF7_ContactForm</code> object is "
msgid "Sending ..."
msgstr ""
-#: contact-form-7/includes/l10n.php:11
-msgid "Afrikaans"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:12
-msgid "Albanian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:13
-msgid "Arabic"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:14
-msgid "Armenian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:15
-msgid "Azerbaijani"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:16
-msgid "Bangla"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:17
-msgid "Basque"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:18
-msgid "Belarusian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:19
-msgid "Bosnian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:20
-msgid "Bulgarian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:21
-msgid "Catalan"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:22
-msgid "Central Kurdish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:23
-msgid "Chinese (China)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:24
-msgid "Chinese (Taiwan)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:25
-msgid "Croatian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:26
-msgid "Czech"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:27
-msgid "Danish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:28
-msgid "Dutch"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:29
-msgid "English (United States)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:30
-msgid "Esperanto"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:31
-msgid "Estonian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:32
-msgid "Finnish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:33
-msgid "French (France)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:34
-msgid "Galician"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:35
-msgid "Gujarati"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:36
-msgid "Georgian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:37
-msgid "German"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:38
-msgid "Greek"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:39
-msgid "Haitian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:40
-msgid "Hebrew"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:41
-msgid "Hindi"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:42
-msgid "Hungarian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:43
-msgid "Indian Bengali"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:44
-msgid "Indonesian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:45
-msgid "Irish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:46
-msgid "Italian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:47
-msgid "Japanese"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:48
-msgid "Korean"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:49
-msgid "Latvian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:50
-msgid "Lithuanian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:51
-msgid "Macedonian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:52
-msgid "Malay"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:53
-msgid "Malayalam"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:54
-msgid "Maltese"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:55
-msgid "Norwegian (Bokmål)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:56
-msgid "Persian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:57
-msgid "Polish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:58
-msgid "Portuguese (Brazil)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:59
-msgid "Portuguese (Portugal)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:60
-msgid "Punjabi"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:61
-msgid "Russian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:62
-msgid "Romanian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:63
-msgid "Serbian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:64
-msgid "Sinhala"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:65
-msgid "Slovak"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:66
-msgid "Slovene"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:67
-msgid "Spanish (Spain)"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:68
-msgid "Swedish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:69
-msgid "Tamil"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:70
-msgid "Thai"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:71
-msgid "Tagalog"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:72
-msgid "Turkish"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:73
-msgid "Ukrainian"
-msgstr ""
-
-#: contact-form-7/includes/l10n.php:74
-msgid "Vietnamese"
-msgstr ""
-
#: contact-form-7/modules/acceptance.php:130
msgid "acceptance"
msgstr ""
msgstr ""
#: contact-form-7/modules/date.php:118
-msgid "Date format seems invalid."
+msgid "The date format is incorrect."
msgstr ""
#: contact-form-7/modules/date.php:122
msgstr ""
#: contact-form-7/modules/date.php:123
-msgid "This date is too early."
+msgid "The date is before the earliest one allowed."
msgstr ""
#: contact-form-7/modules/date.php:127
msgstr ""
#: contact-form-7/modules/date.php:128
-msgid "This date is too late."
+msgid "The date is after the latest one allowed."
msgstr ""
#: contact-form-7/modules/date.php:139
msgstr ""
#: contact-form-7/modules/file.php:196
-msgid "Failed to upload file."
+msgid "There was an unknown error uploading the file."
msgstr ""
#: contact-form-7/modules/file.php:200
-msgid "Uploaded file is not allowed file type"
+msgid "Uploaded file is not allowed for file type"
msgstr ""
#: contact-form-7/modules/file.php:201
-msgid "This file type is not allowed."
+msgid "You are not allowed to upload files of this type."
msgstr ""
#: contact-form-7/modules/file.php:205
msgstr ""
#: contact-form-7/modules/file.php:206
-msgid "This file is too large."
+msgid "The file is too big."
msgstr ""
#: contact-form-7/modules/file.php:210
msgstr ""
#: contact-form-7/modules/file.php:211
-msgid "Failed to upload file. Error occurred."
+msgid "There was an error uploading the file."
msgstr ""
#: contact-form-7/modules/file.php:223
"folder or change its permission manually."
msgstr ""
-#: contact-form-7/modules/jetpack.php:20
-msgid "http://contactform7.com/jetpack-overrides-contact-forms/"
-msgstr ""
-
-#: contact-form-7/modules/jetpack.php:20
-msgid "Jetpack Overrides Contact Forms"
-msgstr ""
-
-#: contact-form-7/modules/jetpack.php:24
-#, php-format
-msgid ""
-"Jetpack may cause problems for other plugins in certain cases. For more "
-"details, see %s."
-msgstr ""
-
#: contact-form-7/modules/number.php:120
msgid "Number format that the sender entered is invalid"
msgstr ""
#: contact-form-7/modules/number.php:121
-msgid "Number format seems invalid."
+msgid "The number format is invalid."
msgstr ""
#: contact-form-7/modules/number.php:125
msgstr ""
#: contact-form-7/modules/number.php:126
-msgid "This number is too small."
+msgid "The number is smaller than the minimum allowed."
msgstr ""
#: contact-form-7/modules/number.php:130
msgstr ""
#: contact-form-7/modules/number.php:131
-msgid "This number is too large."
+msgid "The number is larger than the maximum allowed."
msgstr ""
#: contact-form-7/modules/number.php:142
msgstr ""
#: contact-form-7/modules/quiz.php:150
-msgid "Your answer is not correct."
+msgid "The answer to the quiz is incorrect."
msgstr ""
#: contact-form-7/modules/quiz.php:161
msgstr ""
#: contact-form-7/modules/text.php:170
-msgid "Email address seems invalid."
+msgid "The e-mail address entered is invalid."
msgstr ""
#: contact-form-7/modules/text.php:174
msgstr ""
#: contact-form-7/modules/text.php:175
-msgid "URL seems invalid."
+msgid "The URL is invalid."
msgstr ""
#: contact-form-7/modules/text.php:179
msgstr ""
#: contact-form-7/modules/text.php:180
-msgid "Telephone number seems invalid."
+msgid "The telephone number is invalid."
msgstr ""
#: contact-form-7/modules/text.php:191
-Contact Form 7 WordPress Plugin, 2007-2015 Takayuki Miyoshi
+Contact Form 7 WordPress Plugin, 2007-2016 Takayuki Miyoshi
Contact Form 7 is distributed under the terms of the GNU GPL
This program is free software; you can redistribute it and/or modify
return array_merge( $messages, array(
'invalid_date' => array(
'description' => __( "Date format that the sender entered is invalid", 'contact-form-7' ),
- 'default' => __( 'Date format seems invalid.', 'contact-form-7' )
+ 'default' => __( "The date format is incorrect.", 'contact-form-7' )
),
'date_too_early' => array(
'description' => __( "Date is earlier than minimum limit", 'contact-form-7' ),
- 'default' => __( 'This date is too early.', 'contact-form-7' )
+ 'default' => __( "The date is before the earliest one allowed.", 'contact-form-7' )
),
'date_too_late' => array(
'description' => __( "Date is later than maximum limit", 'contact-form-7' ),
- 'default' => __( 'This date is too late.', 'contact-form-7' )
+ 'default' => __( "The date is after the latest one allowed.", 'contact-form-7' )
) ) );
}
return array_merge( $messages, array(
'upload_failed' => array(
'description' => __( "Uploading a file fails for any reason", 'contact-form-7' ),
- 'default' => __( 'Failed to upload file.', 'contact-form-7' )
+ 'default' => __( "There was an unknown error uploading the file.", 'contact-form-7' )
),
'upload_file_type_invalid' => array(
- 'description' => __( "Uploaded file is not allowed file type", 'contact-form-7' ),
- 'default' => __( 'This file type is not allowed.', 'contact-form-7' )
+ 'description' => __( "Uploaded file is not allowed for file type", 'contact-form-7' ),
+ 'default' => __( "You are not allowed to upload files of this type.", 'contact-form-7' )
),
'upload_file_too_large' => array(
'description' => __( "Uploaded file is too large", 'contact-form-7' ),
- 'default' => __( 'This file is too large.', 'contact-form-7' )
+ 'default' => __( "The file is too big.", 'contact-form-7' )
),
'upload_failed_php_error' => array(
'description' => __( "Uploading a file fails for PHP error", 'contact-form-7' ),
- 'default' => __( 'Failed to upload file. Error occurred.', 'contact-form-7' )
+ 'default' => __( "There was an error uploading the file.", 'contact-form-7' )
)
) );
}
return;
}
- if ( $contactform->in_demo_mode() ) {
+ if ( $contactform->in_demo_mode()
+ || $contactform->is_true( 'do_not_store' ) ) {
return;
}
return array_merge( $messages, array(
'invalid_number' => array(
'description' => __( "Number format that the sender entered is invalid", 'contact-form-7' ),
- 'default' => __( 'Number format seems invalid.', 'contact-form-7' )
+ 'default' => __( "The number format is invalid.", 'contact-form-7' )
),
'number_too_small' => array(
'description' => __( "Number is smaller than minimum limit", 'contact-form-7' ),
- 'default' => __( 'This number is too small.', 'contact-form-7' )
+ 'default' => __( "The number is smaller than the minimum allowed.", 'contact-form-7' )
),
'number_too_large' => array(
'description' => __( "Number is larger than maximum limit", 'contact-form-7' ),
- 'default' => __( 'This number is too large.', 'contact-form-7' )
+ 'default' => __( "The number is larger than the maximum allowed.", 'contact-form-7' )
) ) );
}
function wpcf7_quiz_messages( $messages ) {
return array_merge( $messages, array( 'quiz_answer_not_correct' => array(
'description' => __( "Sender doesn't enter the correct answer to the quiz", 'contact-form-7' ),
- 'default' => __( 'Your answer is not correct.', 'contact-form-7' )
+ 'default' => __( "The answer to the quiz is incorrect.", 'contact-form-7' )
) ) );
}
return array_merge( $messages, array(
'invalid_email' => array(
'description' => __( "Email address that the sender entered is invalid", 'contact-form-7' ),
- 'default' => __( 'Email address seems invalid.', 'contact-form-7' )
+ 'default' => __( "The e-mail address entered is invalid.", 'contact-form-7' )
),
'invalid_url' => array(
'description' => __( "URL that the sender entered is invalid", 'contact-form-7' ),
- 'default' => __( 'URL seems invalid.', 'contact-form-7' )
+ 'default' => __( "The URL is invalid.", 'contact-form-7' )
),
'invalid_tel' => array(
'description' => __( "Telephone number that the sender entered is invalid", 'contact-form-7' ),
- 'default' => __( 'Telephone number seems invalid.', 'contact-form-7' )
+ 'default' => __( "The telephone number is invalid.", 'contact-form-7' )
) ) );
}
Contributors: takayukister
Donate link: http://contactform7.com/donate/
Tags: contact, form, contact form, feedback, email, ajax, captcha, akismet, multilingual
-Requires at least: 4.2
-Tested up to: 4.4
-Stable tag: 4.3.1
+Requires at least: 4.3
+Tested up to: 4.4.2
+Stable tag: 4.4
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
The following plugins are recommended for Contact Form 7 users:
-* [Flamingo](http://wordpress.org/extend/plugins/flamingo/) by Takayuki Miyoshi - With Flamingo, you can save submitted messages via contact forms in the database.
+* [Flamingo](https://wordpress.org/plugins/flamingo/) by Takayuki Miyoshi - With Flamingo, you can save submitted messages via contact forms in the database.
* [Postman](https://wordpress.org/plugins/postman-smtp/) by
Jason Hendriks - Postman is a next-generation SMTP Mailer, software that assists in the delivery of email generated by your WordPress site.
* [Contact Form 7: Accessible Defaults](https://wordpress.org/plugins/contact-form-7-accessible-defaults/) by Joe Dolson - Replaces the default Contact Form 7 form with an accessible equivalent and provides a suite of selectable base forms.
-* [Bogo](http://wordpress.org/extend/plugins/bogo/) by Takayuki Miyoshi - Bogo is a straight-forward multilingual plugin that doesn't cause headaches.
-
-= Translators =
-
-* Afrikaans (af) - Schalk Burger
-* Albanian (sq) - Olgi Zenullari
-* Arabic (ar) - Tarek Chaaban, Muhammed Lardi, Yaser Maadan
-* Armenian (hy_AM) - Emmanuelle Traduction
-* Azerbaijani (az) - Zaur Bayramov
-* Bangla (bn_BD) - SM Mehdi Akram
-* Basque (Euskara; eu) - karrikas
-* Belarusian (be_BY) - Igor Dubilei
-* Bosnian (bs_BA) - Vedran
-* Bulgarian (bg_BG) - Iliyan Darganov
-* Catalan (ca) - Jordi Sancho, Robert Buj, Jaume Aragay Badia, luba lee
-* Central Kurdish (ckb) - Mahr Hassan
-* Chinese (China; zh_CN) - Soz, Keefe Dunn, Stella Hu
-* Chinese (Taiwan; zh_TW) - James Wu
-* Croatian (hr) - tolingo Translation Services, Marko Puskaric, Sanjin Barac
-* Czech (cs_CZ) - Korry, Radovan Fiser, Tomas Vesely, Pavel Bilek, Vladislav Šenk
-* Danish (da_DK) - Jens Griebel, Georg S. Adamsen, Thomas Blomberg Hansen
-* Dutch (nl_NL) - Chris Devriese, Martin Hein, Rene, TenSheep, Tim de Hoog, Henk Buma
-* Esperanto (eo_EO) - Arkadiusz Zychewicz
-* Estonian (et) - Peeter Rahuvarm, Egon Elbre, Tanel Jüris
-* Finnish (fi) - Miika Turunen, Mediajalostamo, Jani Alha
-* French (fr_FR) - Jillij, Oncle Tom, Maître Mô, Emmanuel Simond, Hédi Sellami
-* Galician (gl_ES) - Arume Desenvolvementos Informáticos
-* Georgian (ka_GE) - Nodar Rocko Davituri
-* German (de_DE) - Marcel Spitau, Ivan Graf
-* Greek (el) - Nick Mouratidis, Pr. friedlich, John D. Dimoferlias
-* Gujarati (gu_IN) - Apoto
-* Haitian (ht) - Lam Tu Do
-* Hebrew (he_IL) - Yaron Ofer, Arik Galansky, Ahrale
-* Hindi (hi_IN) - Tarun Joshi, Ashish
-* Hungarian (hu_HU) - Andras Hirschler, János Csárdi-Braunstein, Farkas Győző
-* Indian Bengali (bn_IN) - Suman Manna
-* Indonesian (Bahasa Indonesia; id_ID) - Hendry Lee, Belajar Seo Indonesia
-* Irish (ga_IE) - Vikas Arora
-* Italian (it_IT) - Bruno, Gianni Diurno
-* Japanese (ja) - Takayuki Miyoshi
-* Korean (ko_KR) - Seong Eun Lee, Jong-In Kim, martian36
-* Latvian (lv) - Sandis Veinbergs
-* Lithuanian (lt_LT) - Ernestas Kardzys, Vincent G, Mantas Malcius
-* Macedonian (mk_MK) - Darko
-* Malay (ms_MY) - Zairul Azmil
-* Malayalam (ml_IN) - RAHUL.S.A
-* Maltese (mt_MT) - Ajoft Technologies
-* Norwegian (nb_NO) - Kjetil M. Bergem, aanvik.net, Peter Holme
-* Persian (Farsi; fa_IR) - Mohammad Musavi, Mohsen Firoozmandan, Ghaem Omidi, Ehsan Np
-* Polish (pl_PL) - Zbigniew Czernik, Daniel Fruzynski, RafalDesign, Bartosz Arendt
-* Portuguese (Brazil; pt_BR) - Leonardo Pinheiro, Henrique Vianna, Caciano Gabriel Batista, Gervásio Antônio, Gilvanilson Santos
-* Portuguese (Portugal; pt_PT) - Hugo Baeta, Pedro Nave, Pedro Mendonça
-* Punjabi (pa_IN) - Jasvinder Sing
-* Russian (ru_RU) - Dmitry Volotovich, Denis Voituk, twisted tits, kg69design
-* Romanian (ro_RO) - Stas Sushkov, Anunturi Jibo, Marius Olar, Inbox Translation
-* Serbian (sr_RS) - Vedran, Aleksandar Urošević
-* Sinhala (si_LK) - Nitin Aggarwal
-* Slovak (sk_SK) - Patrik Bóna, WordPress Slovakia
-* Slovene (sl_SI) - Mihael Simonič, Jani Roskar, Marko Ambrožič
-* Spanish (es_ES) - Jordi Sancho, Vladimir Prieto, Federico Mikaelian, Matias Baldanza, Carlos Agnese, Lourdes Cuesta, Carlos Oropesa, Ana Ayelén Martínez
-* Swedish (sv_SE) - Fredrik Jonsson, the Swedish community
-* Tagalog (tl) - Rupert Agnew Lanuza, Hanne, Language Connect
-* Tamil (ta) - Nitin Aggarwal
-* Thai (th) - ToshiK, kazama, TG Knowledge
-* Turkish (tr_TR) - Roman Neumuller, Hasan Yılmaz, Emin Buğra Saral, Burak Yavuz
-* Ukrainian (uk) - Andrey Kovba, Ukrainian WordPress localization team, Myroslava Pabyrivska
-* Vietnamese (vi) - Thanh Hải, Hà, Khang Minh
-
-If you have created your own language pack, or have an update of an existing one, you can send [gettext PO and MO files](http://codex.wordpress.org/Translating_WordPress) to [me](http://ideasilo.wordpress.com/about/) so that I can bundle it into Contact Form 7. You can download the latest [POT file](http://plugins.svn.wordpress.org/contact-form-7/trunk/languages/contact-form-7.pot), and [PO files in each language](http://plugins.svn.wordpress.org/contact-form-7/branches/languages/).
+* [Bogo](https://wordpress.org/plugins/bogo/) by Takayuki Miyoshi - Bogo is a straight-forward multilingual plugin that doesn't cause headaches.
+
+= Translations =
+
+You can [translate Contact Form 7](http://contactform7.com/translating-contact-form-7/) on [__translate.wordpress.org__](https://translate.wordpress.org/projects/wp-plugins/contact-form-7).
== Installation ==
For more information, see [Releases](http://contactform7.com/category/releases/).
+= 4.4 =
+
+* The configuration validator has been introduced.
+* The language selector has been removed from Add New Contact Form screen.
+* Attach a plain text version of the message when sending HTML mail.
+* Added do_not_store additional setting to tell data storage add-ons not to store data through the contact form.
+* The minimum required WordPress version has been changed from 4.2 to 4.3.
+
= 4.3.1 =
* Use wp_loaded action hook instead of init to initialize the controller process.
require_once WPCF7_PLUGIN_DIR . '/includes/submission.php';
require_once WPCF7_PLUGIN_DIR . '/includes/upgrade.php';
require_once WPCF7_PLUGIN_DIR . '/includes/integration.php';
+require_once WPCF7_PLUGIN_DIR . '/includes/config-validator.php';
if ( is_admin() ) {
require_once WPCF7_PLUGIN_DIR . '/admin/admin.php';
self::load_module( 'date' );
self::load_module( 'file' );
self::load_module( 'flamingo' );
- self::load_module( 'jetpack' );
self::load_module( 'listo' );
self::load_module( 'number' );
self::load_module( 'quiz' );
Author URI: http://ideasilo.wordpress.com/
Text Domain: contact-form-7
Domain Path: /languages/
-Version: 4.3.1
+Version: 4.4
*/
-define( 'WPCF7_VERSION', '4.3.1' );
+define( 'WPCF7_VERSION', '4.4' );
-define( 'WPCF7_REQUIRED_WP_VERSION', '4.2' );
+define( 'WPCF7_REQUIRED_WP_VERSION', '4.3' );
define( 'WPCF7_PLUGIN', __FILE__ );
define( 'WPCF7_USE_REALLY_SIMPLE_CAPTCHA', false );
}
+if ( ! defined( 'WPCF7_VALIDATE_CONFIGURATION' ) ) {
+ define( 'WPCF7_VALIDATE_CONFIGURATION', true );
+}
+
// Deprecated, not used in the plugin core. Use wpcf7_plugin_url() instead.
define( 'WPCF7_PLUGIN_URL', untrailingslashit( plugins_url( '', WPCF7_PLUGIN ) ) );
background-color: #ffffe0;
border: 1px solid #ffd975;
border-width: 1px 1px 1px 10px;
+}
+
+.wf-premium-callout {
+ border: 1px solid #00709E;
+ background-color: #ffffff;
+ padding: 16px;
+ margin: 20px 0 0;
+ max-width: 860px;
+}
+.wf-premium-callout h3 {
+ margin: 0 0 8px;
+ color: #11967A;
+}
+.wf-premium-callout ul {
+ margin: 8px 0;
+ padding: 0 0 0 15px;
+}
+.wf-premium-callout ul li {
+ list-style-type: disc;
+ margin: 0;
+ padding: 0;
+}
+.wf-premium-callout .center {
+ text-align: center;
+ margin: 0;
+}
+.wf-premium-callout .button-primary {
+ text-align: center;
+ text-transform: uppercase;
+ font-weight: bold;
+ background-color: #00709E;
}
\ No newline at end of file
<?php if($IPMsg){ echo "\n$IPMsg\n"; } ?>
<?php if(! $isPaid){ ?>
-NOTE: You are using the free version of Wordfence. Upgrading to the paid version of Wordfence gives you
-two factor authentication (sign-in via cellphone) and country blocking which are both effective methods to block attacks.
-A Premium Wordfence license also includes remote scanning with each scan of your site which can detect
-several additional website infections. Premium members can also schedule when website scans occur and
-can scan more than once per day.
+NOTE: You are using the free version of Wordfence. Upgrade to Premium today for less than $5 per month!
+ - Advanced features like IP reputation monitoring, country blocking, an advanced comment spam filter and cell phone sign-in give you the best protection available
+ - Remote, frequent and scheduled scans
+ - Access to Premium Support
+ - Discounts of up to 90% for multiyear and multi-license purchases
-As a Premium member you also get access to our priority support system located at http://support.wordfence.com/ and can file
-priority support tickets using our ticketing system.
-
-Click here to sign-up for the Premium version of Wordfence now.
+Click here to upgrade to Wordfence Premium:
https://www.wordfence.com/zz1/wordfence-signup/
-
<?php } ?>
--
<?php if(! $isPaid){ ?>
-<p>NOTE: You are using the free version of Wordfence. Upgrading to the paid version of Wordfence gives you
-two factor authentication (sign-in via cellphone) and country blocking which are both effective methods to block attacks.
-A Premium Wordfence license also includes remote scanning with each scan of your site which can detect
-several additional website infections. Premium members can also schedule when website scans occur and
-can scan more than once per day.</p>
-
-<p>As a Premium member you also get access to our priority support system located at http://support.wordfence.com/ and can file
-priority support tickets using our ticketing system. </p>
-
-<p>Click here to sign-up for the Premium version of Wordfence now.<br>
-<a href="https://www.wordfence.com/zz2/wordfence-signup/">https://www.wordfence.com/zz2/wordfence-signup/</a></p>
-
+ <p>NOTE: You are using the free version of Wordfence. Upgrade to Premium today for less than $5 per month!</p>
+ <ul>
+ <li>Advanced features like IP reputation monitoring, country blocking, an advanced comment spam filter and cell phone sign-in give you the best protection available</li>
+ <li>Remote, frequent and scheduled scans</li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% for multiyear and multi-license purchases</li>
+ </ul>
+
+ <p>
+ Click here to upgrade to Wordfence Premium:<br>
+ <a href="https://www.wordfence.com/zz2/wordfence-signup/">https://www.wordfence.com/zz2/wordfence-signup/</a>
+ </p>
<?php } ?>
<?php require('menuHeader.php'); ?>
<?php $pageTitle = "Block Selected Countries from Accessing your Site"; $helpLink="http://docs.wordfence.com/en/Country_blocking"; $helpLabel="Learn more about Country Blocking"; include('pageTitle.php'); ?>
<?php if(! wfConfig::get('isPaid')){ ?>
- <div class="wfPaidOnlyNotice">
- <strong>Country Blocking is only available to Premium Members at this time</strong><br /><br />
- Country Blocking is a premium feature because we have licensed a very accurate commercial geolocation database to provide this feature. If you would like to
- activate this feature, simply <a href="https://www.wordfence.com/gnl1countryBlock1/wordfence-signup/" target="_blank">click here and get a premium Wordfence API Key</a>, and then copy and paste it into your options page. You can <a href="http://docs.wordfence.com/en/Country_blocking" target="_blank">learn more about Country Blocking on our documentation website</a>.
- </div>
+ <div class="wf-premium-callout" style="margin: 20px">
+ <h3>Country Blocking is only available to Premium Members</h3>
+ <p>Country Blocking is a premium feature because we have licensed a very accurate commercial geolocation
+ database to provide this feature. Upgrade to Premium today:</p>
+ <ul>
+ <li>You can upgrade now for less than $5 per month</li>
+ <li>Other advanced features like IP reputation monitoring, an advanced comment spam filter, advanced
+ scanning options and cell phone sign-in give you the best protection available
+ </li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% available for multiyear and multi-license purchases</li>
+ </ul>
+ <p class="center"><a class="button button-primary"
+ href="https://www.wordfence.com/gnl1countryBlock1/wordfence-signup/">Get Premium</a></p>
+ </div>
<?php } ?>
<?php if(wfConfig::get('cacheType') == 'falcon'){ ?>
<div class="wfFalconNotice">
</tr>
<tr>
<td colspan="2">
- <?php if ( wfConfig::get( 'isPaid' ) ) { ?>
+ <?php if (wfConfig::get('isPaid')): ?>
<table border="0">
<tr>
<td><a href="https://www.wordfence.com/gnl1optMngKys/manage-wordfence-api-keys/"
onclick="WFAD.downgradeLicense();"/></td>
</tr>
</table>
- <?php } ?>
-
-
+ <?php else: ?>
+ <div class="wf-premium-callout">
+ <h3>Upgrade to Wordfence Premium today for less than $5 per month</h3>
+ <ul>
+ <li>Advanced features like IP reputation monitoring, country blocking, an advanced
+ comment spam filter and cell phone sign-in give you the best protection available
+ </li>
+ <li>Remote, frequent and scheduled scans</li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% for multiyear and multi-license purchases</li>
+ </ul>
+ <p class="center">
+ <a class="button button-primary"
+ href="https://www.wordfence.com/gnl1optCallout1/wordfence-signup/">
+ Get Premium</a></p>
+ </div>
+ <?php endif ?>
+ </td>
+ </tr>
<tr>
<td colspan="2"><h2>Basic Options<a href="http://docs.wordfence.com/en/Wordfence_options#Basic_Options"
target="_blank" class="wfhelp"></a></h2></td>
$helpLabel = "Learn more about Password Auditing";
include('pageTitle.php'); ?>
<?php if (!wfConfig::get('isPaid')) { ?>
- <div class="wfPaidOnlyNotice">
- <strong>Password Auditing is only available to Premium Members at this time</strong><br/><br/>
- Wordfence Password Auditing uses our high performance password auditing cluster to test the strength of your admin and user passwords.
- We securely simulate a high-performance password cracking attack on your password database and will alert you to weak passwords.
- We then provide a way to change weak passwords or alert members that they need to improve their password strength.
- To activate this feature, simply
- <a href="https://www.wordfence.com/gnl1pwAuditUp1/wordfence-signup/" target="_blank">click here and get a premium Wordfence API Key</a>, and then copy and paste it into your options page. You can
- <a href="http://docs.wordfence.com/en/Wordfence_Password_Auditing" target="_blank">learn more about Password Auditing on our Documentation Website</a>.
+ <div class="wf-premium-callout" style="margin: 20px 0 20px 20px; width: 700px;">
+ <h3>Password Auditing is only available to Premium Members</h3>
+ <p>Wordfence Password Auditing uses our high performance password auditing cluster to test the strength of your admin and user passwords. We securely simulate a high-performance password cracking attack on your password database and will alert you to weak passwords. We then provide a way to change weak passwords or alert members that they need to improve their password strength. Upgrade to Premium today:</p>
+ <ul>
+ <li>You can upgrade now for less than $5 per month</li>
+ <li>Other advanced features like IP reputation monitoring, an advanced comment spam filter, advanced scanning options, cell phone sign-in and country blocking give you the best protection available</li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% available for multiyear and multi-license purchases</li>
+ </ul>
+
+ <p class="center"><a class="button button-primary" href="https://www.wordfence.com/gnl1pwAuditUp1/wordfence-signup/">Get Premium</a></p>
</div>
<?php } ?>
Premium scanning enabled.
</div>
<?php } else { ?>
- <div style="margin: 0 0 20px 5px; width: 795px;">
- <strong style="color: #F00;">How to upgrade:</strong> If you would like access to our <a href="http://support.wordfence.com/" target="_blank">Premium Support help system</a> and features like Cellphone Sign-in, Country Blocking, external site scanning and the ability to schedule scans, simply <a href="https://www.wordfence.com/gnl1scanUpgrade/wordfence-signup/" target="_blank">visit our Wordfence Premium sign-up page</a> and sign up for a Premium Wordfence API key. Then go to the Wordfence options page on this site and replace your free API key with your new premium key. You will immediately be upgraded to Wordfence Premium with all the features it includes and you will have instant access to our ticketing system on <a href="http://support.wordfence.com/" target="_blank">support.wordfence.com</a>.
- </div>
+ <div class="wf-premium-callout" style="margin: 20px 0 20px 2px;width: 765px;">
+ <h3>Upgrade to Wordfence Premium today for less than $5 per month</h3>
+ <ul>
+ <li>Advanced features like IP reputation monitoring, country blocking, an advanced comment spam
+ filter and cell phone sign-in give you the best protection available
+ </li>
+ <li>Remote, frequent and scheduled scans</li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% for multiyear and multi-license purchases</li>
+ </ul>
+ <p class="center"><a class="button button-primary"
+ href="https://www.wordfence.com/gnl1scanUpgrade/wordfence-signup/">
+ Get Premium</a></p>
+ </div>
+
<?php } ?>
<div class="consoleHead" style="margin-top: 20px;">
<?php require('menuHeader.php'); ?>
<?php $pageTitle = "Schedule when Wordfence Scans Occur"; $helpLink="http://docs.wordfence.com/en/Wordfence_scan_scheduling"; $helpLabel="Learn more about Scheduling Wordfence Scans"; include('pageTitle.php'); ?>
<?php if(! wfConfig::get('isPaid')){ ?>
- <div class="wfPaidOnlyNotice">
- <strong>Scan Scheduling is only available to Premium Members at this time</strong><br /><br />
- Scan Scheduling is a premium feature because it places additional load on our scanning servers. If you would like to
- activate this feature, simply <a href="https://www.wordfence.com/gnl1scanSched1/wordfence-signup/" target="_blank">click here and get a premium Wordfence API Key</a>, and then copy and paste it into your options
- page.
- </div>
+ <div class="wf-premium-callout" style="margin: 20px;">
+ <h3>Scan Scheduling is only available to Premium Members</h3>
+ <p>Scan Scheduling is a premium feature because it places additional load on our scanning servers. Premium users
+ can increase their WordPress protection by controlling scan frequency up to once per hour. Premium also
+ allows you to control when Wordfence initiates a scan, selecting optimal times that don’t interfere with
+ high-traffic or optimal usage of your site. Upgrade to Premium today:</p>
+ <ul>
+ <li>You can upgrade now for less than $5 per month</li>
+ <li>Other advanced features like IP reputation monitoring, an advanced comment spam filter, country blocking
+ and cell phone sign-in give you the best protection available
+ </li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% available for multiyear and multi-license purchases</li>
+ </ul>
+ <p class="center"><a class="button button-primary"
+ href="https://www.wordfence.com/gnl1scanSched1/wordfence-signup/">Get Premium</a></p>
+ </div>
<?php } ?>
<div class="wordfenceWrap" style="margin: 20px 20px 20px 30px;">
<?php require('menuHeader.php'); ?>
<?php $pageTitle = "Cellphone Sign-in"; $helpLink="http://docs.wordfence.com/en/Cellphone_sign-in"; $helpLabel="Learn more about Cellphone Sign-in"; include('pageTitle.php'); ?>
<?php if(! wfConfig::get('isPaid')){ ?>
- <div class="wfPaidOnlyNotice">
- <strong>Cellphone Sign-in is only available to Premium Members at this time</strong><br /><br />
- Cellphone Sign-in is a premium feature because we are charged per SMS we send when a user signs in. If you would like to
- activate this feature, simply <a href="https://www.wordfence.com/gnl1twoFac1/wordfence-signup/" target="_blank">click here and get a premium Wordfence API Key</a>, and then copy and paste it into your options page.
- <br /><br />
- Wordfence's Cellphone Sign-in uses a technique called "Two Factor Authentication" which is used by banks, government agencies and military world-wide as one of the most secure forms of remote system authentication. It's now available from Wordfence for your WordPress website. We recommend you enable Cellphone Sign-in for all Administrator level accounts. You can <a href="http://docs.wordfence.com/en/Cellphone_sign-in" target="_blank">learn more about Cellphone Sign-in on our documentation website</a>.
- </div>
+ <div class="wf-premium-callout" style="margin: 20px 0 20px 20px; width: 700px;">
+ <h3>Cellphone Sign-in is only available to Premium Members</h3>
+
+ <p>This is a premium feature because we are charged per SMS we send when a user signs in. Upgrade to Premium
+ today:</p>
+ <ul>
+ <li>You can upgrade now for less than $5 per month</li>
+ <li>Other advanced features like IP reputation monitoring, an advanced comment spam filter, advanced
+ scanning options and country blocking give you the best protection available
+ </li>
+ <li>Access to Premium Support</li>
+ <li>Discounts of up to 90% available for multiyear and multi-license purchases</li>
+ </ul>
+ <p>Wordfence's Cellphone Sign-in uses a technique called "Two Factor Authentication" which is used by banks,
+ government agencies and military world-wide as one of the most secure forms of remote system authentication.
+ It's now available from Wordfence for your WordPress website. We recommend you enable Cellphone Sign-in for
+ all Administrator level accounts.</p>
+
+ <p class="center"><a class="button button-primary"
+ href="https://www.wordfence.com/gnl1twoFac1/wordfence-signup/">Get Premium</a></p>
+ </div>
+
<?php } ?>
<div class="wordfenceWrap" style="margin: 20px 20px 20px 30px;">
}
/**
- * Generate SQL from the whitelist. Uses the return format from wfLog::getWhitelistedIPs
+ * Generate SQL from the whitelist. Uses the return format from wfUtils::getIPWhitelist
*
- * @see wfLog::getWhitelistedIPs
+ * @see wfUtils::getIPWhitelist
* @param array $whitelisted_ips
* @return string
*/
public function getBlockedIPWhitelistWhereClause($whitelisted_ips = null) {
if ($whitelisted_ips === null) {
- $whitelisted_ips = wordfence::getLog()->getWhitelistedIPs();
+ $whitelisted_ips = wfUtils::getIPWhitelist();
}
if (!is_array($whitelisted_ips)) {
return false;
}
$where = '';
- /** @var array|wfUserIPRange|string $ip_range */
+
foreach ($whitelisted_ips as $ip_range) {
- if (is_array($ip_range) && count($ip_range) == 2) {
- $where .= $this->db->prepare('IP BETWEEN %s AND %s', $ip_range[0], $ip_range[1]) . ' OR ';
- } elseif (is_a($ip_range, 'wfUserIPRange')) {
- $where .= $ip_range->toSQL('IP') . ' OR ';
- } elseif (is_string($ip_range) || is_numeric($ip_range)) {
- $where .= $this->db->prepare('IP = %s', $ip_range) . ' OR ';
+ if (!is_a($ip_range, 'wfUserIPRange')) {
+ $ip_range = wfUtils::CIDR2wfUserIPRange($ip_range);
}
+
+ $where .= $ip_range->toSQL('IP') . ' OR ';
}
if ($where) {
// remove the extra ' OR '
--- /dev/null
+<?php
+/**
+ * Addresses should be in human readable format as a single IP (e.g. 1.2.3.4) or CIDR (e.g. 1.2.3.4/32)
+ */
+$wfIPWhitelist = array(
+ 'private' => array(
+ //We've modified this and removed some addresses which may be routable on the Net and cause auto-whitelisting.
+ //'0.0.0.0/8', #Broadcast addr
+ '10.0.0.0/8', #Private addrs
+ //'100.64.0.0/10', #carrier-grade-nat for comms between ISP and subscribers
+ '127.0.0.0/8', #loopback
+ //'169.254.0.0/16', #link-local when DHCP fails e.g. os x
+ '172.16.0.0/12', #private addrs
+ '192.0.0.0/29', #used for NAT with IPv6, so basically a private addr
+ //'192.0.2.0/24', #Only for use in docs and examples, not for public use
+ //'192.88.99.0/24', #Used by 6to4 anycast relays
+ '192.168.0.0/16', #Used for local communications within a private network
+ //'198.18.0.0/15', #Used for testing of inter-network communications between two separate subnets
+ //'198.51.100.0/24', #Assigned as "TEST-NET-2" in RFC 5737 for use solely in documentation and example source code and should not be used publicly.
+ //'203.0.113.0/24', #Assigned as "TEST-NET-3" in RFC 5737 for use solely in documentation and example source code and should not be used publicly.
+ //'224.0.0.0/4', #Reserved for multicast assignments as specified in RFC 5771
+ //'240.0.0.0/4', #Reserved for future use, as specified by RFC 6890
+ //'255.255.255.255/32', #Reserved for the "limited broadcast" destination address, as specified by RFC 6890
+ ),
+ 'wordfence' => array(
+ // 69.46.36.1 - 69.46.36.32
+ '69.46.36.1/32',
+ '69.46.36.2/31',
+ '69.46.36.4/30',
+ '69.46.36.8/29',
+ '69.46.36.16/28',
+ '69.46.36.32/32',
+ ),
+ 'sucuri' => array(
+ '97.74.127.171',
+ '69.164.203.172',
+ '173.230.128.135',
+ '66.228.34.49',
+ '66.228.40.185',
+ '50.116.36.92',
+ '50.116.36.93',
+ '50.116.3.171',
+ '198.58.96.212',
+ '50.116.63.221',
+ '192.155.92.112',
+ '192.81.128.31',
+ '198.58.106.244',
+ '192.155.95.139',
+ '23.239.9.227',
+ '198.58.112.103',
+ '192.155.94.43',
+ '162.216.16.33',
+ '173.255.233.124',
+ '173.255.233.124',
+ '192.155.90.179',
+ '50.116.41.217',
+ '192.81.129.227',
+ '198.58.111.80',
+ '162.216.19.183',
+ ),
+ 'facebook' => array(
+ '204.15.20.0/22',
+ '69.63.176.0/20',
+ '66.220.144.0/20',
+ '66.220.144.0/21',
+ '69.63.184.0/21',
+ '69.63.176.0/21',
+ '74.119.76.0/22',
+ '69.171.255.0/24',
+ '173.252.64.0/18',
+ '69.171.224.0/19',
+ '69.171.224.0/20',
+ '103.4.96.0/22',
+ '69.63.176.0/24',
+ '173.252.64.0/19',
+ '173.252.70.0/24',
+ '31.13.64.0/18',
+ '31.13.24.0/21',
+ '66.220.152.0/21',
+ '66.220.159.0/24',
+ '69.171.239.0/24',
+ '69.171.240.0/20',
+ '31.13.64.0/19',
+ '31.13.64.0/24',
+ '31.13.65.0/24',
+ '31.13.67.0/24',
+ '31.13.68.0/24',
+ '31.13.69.0/24',
+ '31.13.70.0/24',
+ '31.13.71.0/24',
+ '31.13.72.0/24',
+ '31.13.73.0/24',
+ '31.13.74.0/24',
+ '31.13.75.0/24',
+ '31.13.76.0/24',
+ '31.13.77.0/24',
+ '31.13.96.0/19',
+ '31.13.66.0/24',
+ '173.252.96.0/19',
+ '69.63.178.0/24',
+ '31.13.78.0/24',
+ '31.13.79.0/24',
+ '31.13.80.0/24',
+ '31.13.82.0/24',
+ '31.13.83.0/24',
+ '31.13.84.0/24',
+ '31.13.85.0/24',
+ '31.13.86.0/24',
+ '31.13.87.0/24',
+ '31.13.88.0/24',
+ '31.13.89.0/24',
+ '31.13.90.0/24',
+ '31.13.91.0/24',
+ '31.13.92.0/24',
+ '31.13.93.0/24',
+ '31.13.94.0/24',
+ '31.13.95.0/24',
+ '69.171.253.0/24',
+ '69.63.186.0/24',
+ '31.13.81.0/24',
+ '179.60.192.0/22',
+ '179.60.192.0/24',
+ '179.60.193.0/24',
+ '179.60.194.0/24',
+ '179.60.195.0/24',
+ '185.60.216.0/22',
+ '45.64.40.0/22',
+ '185.60.216.0/24',
+ '185.60.217.0/24',
+ '185.60.218.0/24',
+ '185.60.219.0/24',
+ '129.134.0.0/16',
+ '157.240.0.0/16',
+ '204.15.20.0/22',
+ '69.63.176.0/20',
+ '69.63.176.0/21',
+ '69.63.184.0/21',
+ '66.220.144.0/20',
+ '69.63.176.0/20',
+ '2620:0:1c00::/40',
+ '2a03:2880::/32',
+ '2a03:2880:fffe::/48',
+ '2a03:2880:ffff::/48',
+ '2620:0:1cff::/48',
+ '2a03:2880:f000::/48',
+ '2a03:2880:f001::/48',
+ '2a03:2880:f002::/48',
+ '2a03:2880:f003::/48',
+ '2a03:2880:f004::/48',
+ '2a03:2880:f005::/48',
+ '2a03:2880:f006::/48',
+ '2a03:2880:f007::/48',
+ '2a03:2880:f008::/48',
+ '2a03:2880:f009::/48',
+ '2a03:2880:f00a::/48',
+ '2a03:2880:f00b::/48',
+ '2a03:2880:f00c::/48',
+ '2a03:2880:f00d::/48',
+ '2a03:2880:f00e::/48',
+ '2a03:2880:f00f::/48',
+ '2a03:2880:f010::/48',
+ '2a03:2880:f011::/48',
+ '2a03:2880:f012::/48',
+ '2a03:2880:f013::/48',
+ '2a03:2880:f014::/48',
+ '2a03:2880:f015::/48',
+ '2a03:2880:f016::/48',
+ '2a03:2880:f017::/48',
+ '2a03:2880:f018::/48',
+ '2a03:2880:f019::/48',
+ '2a03:2880:f01a::/48',
+ '2a03:2880:f01b::/48',
+ '2a03:2880:f01c::/48',
+ '2a03:2880:f01d::/48',
+ '2a03:2880:f01e::/48',
+ '2a03:2880:f01f::/48',
+ '2a03:2880:1000::/36',
+ '2a03:2880:2000::/36',
+ '2a03:2880:3000::/36',
+ '2a03:2880:4000::/36',
+ '2a03:2880:5000::/36',
+ '2a03:2880:6000::/36',
+ '2a03:2880:7000::/36',
+ '2a03:2880:f020::/48',
+ '2a03:2880:f021::/48',
+ '2a03:2880:f022::/48',
+ '2a03:2880:f023::/48',
+ '2a03:2880:f024::/48',
+ '2a03:2880:f025::/48',
+ '2a03:2880:f026::/48',
+ '2a03:2880:f027::/48',
+ '2a03:2880:f028::/48',
+ '2a03:2880:f029::/48',
+ '2a03:2880:f02a::/48',
+ '2a03:2880:f02b::/48',
+ '2a03:2880:f02c::/48',
+ '2a03:2880:f02d::/48',
+ '2a03:2880:f02e::/48',
+ '2a03:2880:f02f::/48',
+ '2a03:2880:f030::/48',
+ '2a03:2880:f031::/48',
+ '2a03:2880:f032::/48',
+ '2a03:2880:f033::/48',
+ '2a03:2880:f034::/48',
+ '2a03:2880:f035::/48',
+ '2a03:2880:f036::/48',
+ '2a03:2880:f037::/48',
+ '2a03:2880:f038::/48',
+ '2a03:2880:f039::/48',
+ '2a03:2880:f03a::/48',
+ '2a03:2880:f03b::/48',
+ '2a03:2880:f03c::/48',
+ '2a03:2880:f03d::/48',
+ '2a03:2880:f03e::/48',
+ '2a03:2880:f03f::/48',
+ '2401:db00::/32',
+ '2a03:2880::/36',
+ '2803:6080::/32',
+ ),
+);
\ No newline at end of file
* @return bool
*/
public function isWhitelisted($IP) {
- $wfIPBlock = new wfUserIPRange('69.46.36.[1-32]');
- if ($wfIPBlock->isIPInRange($IP)) { //IP is in Wordfence's IP block which would prevent our scanning server manually kicking off scans that are stuck
- return true;
- }
- //We now whitelist all private addrs
- if (wfUtils::isPrivateAddress($IP)) {
- return true;
- }
- //These belong to sucuri's scanning servers which will get blocked by Wordfence as a false positive if you try a scan. So we whitelisted them.
- $externalWhite = array('97.74.127.171', '69.164.203.172', '173.230.128.135', '66.228.34.49', '66.228.40.185', '50.116.36.92', '50.116.36.93', '50.116.3.171', '198.58.96.212', '50.116.63.221', '192.155.92.112', '192.81.128.31', '198.58.106.244', '192.155.95.139', '23.239.9.227', '198.58.112.103', '192.155.94.43', '162.216.16.33', '173.255.233.124', '173.255.233.124', '192.155.90.179', '50.116.41.217', '192.81.129.227', '198.58.111.80', '162.216.19.183');
- if (in_array($IP, $externalWhite)) {
- return true;
- }
- $list = wfConfig::get('whitelisted');
- if (!$list) {
- return false;
- }
- $list = explode(',', $list);
- if (sizeof($list) < 1) {
- return false;
- }
- foreach ($list as $whiteIP) {
- $white_ip_block = new wfUserIPRange($whiteIP);
- if ($white_ip_block->isIPInRange($IP)) {
+ foreach (wfUtils::getIPWhitelist() as $subnet) {
+ if ($subnet instanceof wfUserIPRange) {
+ if ($subnet->isIPInRange($IP)) {
+ return true;
+ }
+ } elseif (wfUtils::subnetContainsIP($subnet, $IP)) {
return true;
}
}
- return false;
- }
-
- /**
- * Get an array of static IPs, tuple for a numeric IP range, or a wfUserIPRange object to define and test a range
- * like [127-128].0.0.[1-40]
- *
- * @see wfUserIPRange
- * @param null $user_whitelisted
- * @return array
- */
- public function getWhitelistedIPs($user_whitelisted = null) {
- $white_listed_ips = array();
- // Wordfence's IP block which would prevent our scanning server manually kicking off scans that are stuck
- $white_listed_ips[] = array(1160651777, 1160651808);
-
- // Private range
- $private_range = wfUtils::getPrivateAddrs();
- foreach ($private_range as $ip_range) {
- $white_listed_ips[] = array($ip_range[1], $ip_range[2]);
- }
-
- // These belong to sucuri's scanning servers which will get blocked by Wordfence as a false positive if you try a scan. So we whitelisted them.
- $white_listed_ips = array_merge($white_listed_ips, array_map(array('wfUtils', 'inet_pton'), array('97.74.127.171', '69.164.203.172', '173.230.128.135', '66.228.34.49', '66.228.40.185', '50.116.36.92', '50.116.36.93', '50.116.3.171', '198.58.96.212', '50.116.63.221', '192.155.92.112', '192.81.128.31', '198.58.106.244', '192.155.95.139', '23.239.9.227', '198.58.112.103', '192.155.94.43', '162.216.16.33', '173.255.233.124', '173.255.233.124', '192.155.90.179', '50.116.41.217', '192.81.129.227', '198.58.111.80', '162.216.19.183')));
-
- if ($user_whitelisted === null) {
- $user_whitelisted = wfConfig::get('whitelisted');
- }
-
- if ($user_whitelisted) {
- $user_whitelisted = explode(',', $user_whitelisted);
- foreach ($user_whitelisted as $whiteIP) {
- $white_listed_ips[] = new wfUserIPRange($whiteIP);
- }
- }
- return $white_listed_ips;
+ return false;
}
public function unblockAllIPs(){
require_once('wfConfig.php');
require_once('wfCountryMap.php');
class wfUtils {
- #We've modified this and removed some addresses which may be routable on the Net and cause auto-whitelisting.
- private static $privateAddrs = array(
- //array('0.0.0.0/8',0,16777215), #Broadcast addr
- array('10.0.0.0/8',167772160,184549375), #Private addrs
- //array('100.64.0.0/10',1681915904,1686110207), #carrier-grade-nat for comms between ISP and subscribers
- array('127.0.0.0/8',2130706432,2147483647), #loopback
- //array('169.254.0.0/16',2851995648,2852061183), #link-local when DHCP fails e.g. os x
- array('172.16.0.0/12',2886729728,2887778303), #private addrs
- array('192.0.0.0/29',3221225472,3221225479), #used for NAT with IPv6, so basically a private addr
- //array('192.0.2.0/24',3221225984,3221226239), #Only for use in docs and examples, not for public use
- //array('192.88.99.0/24',3227017984,3227018239), #Used by 6to4 anycast relays
- array('192.168.0.0/16',3232235520,3232301055), #Used for local communications within a private network
- //array('198.18.0.0/15',3323068416,3323199487), #Used for testing of inter-network communications between two separate subnets
- //array('198.51.100.0/24',3325256704,3325256959), #Assigned as "TEST-NET-2" in RFC 5737 for use solely in documentation and example source code and should not be used publicly.
- //array('203.0.113.0/24',3405803776,3405804031), #Assigned as "TEST-NET-3" in RFC 5737 for use solely in documentation and example source code and should not be used publicly.
- //array('224.0.0.0/4',3758096384,4026531839), #Reserved for multicast assignments as specified in RFC 5771
- //array('240.0.0.0/4',4026531840,4294967295), #Reserved for future use, as specified by RFC 6890
- //array('255.255.255.255/32',4294967295,4294967295) #Reserved for the "limited broadcast" destination address, as specified by RFC 6890
- );
private static $isWindows = false;
public static $scanLockFH = false;
private static $lastErrorReporting = false;
return round($bytes, $precision) . ' ' . $units[$pow];
}
+ /**
+ * Check if an IP address is in a network block
+ *
+ * @param string $subnet Single IP or subnet in CIDR notation (e.g. '192.168.100.0' or '192.168.100.0/22')
+ * @param string $ip IPv4 or IPv6 address in dot or colon notation
+ * @return boolean
+ */
+ public static function subnetContainsIP($subnet, $ip) {
+ list($network, $prefix) = array_pad(explode('/', $subnet, 2), 2, null);
+
+ if (filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
+ // If no prefix was supplied, 32 is implied for IPv4
+ if ($prefix === null) {
+ $prefix = 32;
+ }
+
+ // Validate the IPv4 network prefix
+ if ($prefix < 0 || $prefix > 32) {
+ return false;
+ }
+
+ // Increase the IPv4 network prefix to work in the IPv6 address space
+ $prefix += 96;
+ } else {
+ // If no prefix was supplied, 128 is implied for IPv6
+ if ($prefix === null) {
+ $prefix = 128;
+ }
+
+ // Validate the IPv6 network prefix
+ if ($prefix < 1 || $prefix > 128) {
+ return false;
+ }
+ }
+
+ // Convert human readable addresses to 128 bit (IPv6) binary strings
+ // Note: self::inet_pton converts IPv4 addresses to IPv6 compatible versions
+ $binary_network = str_pad(wfHelperBin::bin2str(self::inet_pton($network)), 128, '0', STR_PAD_LEFT);
+ $binary_ip = str_pad(wfHelperBin::bin2str(self::inet_pton($ip)), 128, '0', STR_PAD_LEFT);
+
+ return 0 === substr_compare($binary_ip, $binary_network, 0, $prefix);
+ }
+
+ /**
+ * Convert CIDR notation to a wfUserIPRange object
+ *
+ * @param string $cidr
+ * @return wfUserIPRange
+ */
+ public static function CIDR2wfUserIPRange($cidr) {
+ list($network, $prefix) = array_pad(explode('/', $cidr, 2), 2, null);
+ $ip_range = new wfUserIPRange();
+
+ if (filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
+ // If no prefix was supplied, 32 is implied for IPv4
+ if ($prefix === null) {
+ $prefix = 32;
+ }
+
+ // Validate the IPv4 network prefix
+ if ($prefix < 0 || $prefix > 32) {
+ return $ip_range;
+ }
+
+ // Increase the IPv4 network prefix to work in the IPv6 address space
+ $prefix += 96;
+ } else {
+ // If no prefix was supplied, 128 is implied for IPv6
+ if ($prefix === null) {
+ $prefix = 128;
+ }
+
+ // Validate the IPv6 network prefix
+ if ($prefix < 1 || $prefix > 128) {
+ return $ip_range;
+ }
+ }
+
+ // Convert human readable address to 128 bit (IPv6) binary string
+ // Note: self::inet_pton converts IPv4 addresses to IPv6 compatible versions
+ $binary_network = self::inet_pton($network);
+ $binary_mask = wfHelperBin::str2bin(str_pad(str_repeat('1', $prefix), 128, '0', STR_PAD_RIGHT));
+
+ // Calculate first and last address
+ $binary_first = $binary_network & $binary_mask;
+ $binary_last = $binary_network | ~ $binary_mask;
+
+ // Convert binary addresses back to human readable strings
+ $first = self::inet_ntop($binary_first);
+ $last = self::inet_ntop($binary_last);
+
+ // Split addresses into segments
+ $first_array = preg_split('/[\.\:]/', $first);
+ $last_array = preg_split('/[\.\:]/', $last);
+
+ // Make sure arrays are the same size. IPv6 '::' could cause problems otherwise.
+ // The strlen filter should leave zeros in place
+ $first_array = array_pad(array_filter($first_array, 'strlen'), count($last_array), '0');
+
+ $range_segments = array();
+
+ foreach ($first_array as $index => $segment) {
+ if ($segment === $last_array[$index]) {
+ $range_segments[] = $segment;
+ } else if ($segment === '' || $last_array[$index] === '') {
+ $range_segments[] = '';
+ } else {
+ $range_segments[] = "[{$segment}-{$last_array[$index]}]";
+ }
+ }
+
+ $delimiter = filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ? '.' : ':';
+
+ $ip_range->setIPString(implode($delimiter, $range_segments));
+
+ return $ip_range;
+ }
+
/**
* Return dot notation of IPv4 address.
*
return rand(11,230) . '.' . rand(0,255) . '.' . rand(0,255) . '.' . rand(0,255);
}
+ /**
+ * Get the list of whitelisted IPs and networks
+ *
+ * Results may include wfUserIPRange objects for now. Ideally everything would be in CIDR notation.
+ *
+ * @param string $filter Group name to filter whitelist by
+ * @return array
+ */
+ public static function getIPWhitelist($filter = null) {
+ static $wfIPWhitelist;
+
+ if (!isset($wfIPWhitelist)) {
+ include('wfIPWhitelist.php');
+
+ // Memoize user defined whitelist IPs and ranges
+ // TODO: Convert everything to CIDR
+ $wfIPWhitelist['user'] = array();
+
+ foreach (array_filter(explode(',', wfConfig::get('whitelisted'))) as $ip) {
+ $wfIPWhitelist['user'][] = new wfUserIPRange($ip);
+ }
+ }
+
+ $whitelist = array();
+
+ foreach ($wfIPWhitelist as $group => $values) {
+ if ($filter === null || $group === $filter) {
+ $whitelist = array_merge($whitelist, $values);
+ }
+ }
+
+ return $whitelist;
+ }
+
/**
* @param string $addr Should be in dot or colon notation (127.0.0.1 or ::1)
* @return bool
public static function isPrivateAddress($addr) {
// Run this through the preset list for IPv4 addresses.
if (filter_var($addr, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false) {
- $num = self::inet_aton($addr);
- foreach (self::$privateAddrs as $a) {
- if ($num >= $a[1] && $num <= $a[2]) {
+ foreach (self::getIPWhitelist('private') as $a) {
+ if (self::subnetContainsIP($a, $addr)) {
return true;
}
}
}
}
- /**
- * @return array
- */
- public static function getPrivateAddrs() {
- return self::$privateAddrs;
- }
-
/**
* @param string $host
* @return array
Tags: wordpress, security, performance, speed, caching, cache, caching plugin, wordpress cache, wordpress caching, wordpress security, security plugin, secure, anti-virus, malware, firewall, antivirus, virus, google safe browsing, phishing, scrapers, hacking, wordfence, securty, secrity, secure, two factor, cellphone sign-in, cellphone signin, cellphone, twofactor, security, secure, htaccess, login, log, users, login alerts, lock, chmod, maintenance, plugin, private, privacy, protection, permissions, 503, base64, injection, code, encode, script, attack, hack, hackers, block, blocked, prevent, prevention, RFI, XSS, CRLF, CSRF, SQL Injection, vulnerability, website security, WordPress security, security log, logging, HTTP log, error log, login security, personal security, infrastructure security, firewall security, front-end security, web server security, proxy security, reverse proxy security, secure website, secure login, two factor security, maximum login security, heartbleed, heart bleed, heartbleed vulnerability, openssl vulnerability, nginx, litespeed, php5-fpm, woocommerce support, woocommerce caching, IPv6, IP version 6
Requires at least: 3.9
Tested up to: 4.4.1
-Stable tag: 6.0.23
+Stable tag: 6.0.24
The Wordfence WordPress security plugin provides free enterprise-class WordPress security, protecting your website from hacks and malware.
== Description ==
== Changelog ==
+= 6.0.24 =
+* Enhancement: Added automatic whitelisting for Facebook crawlers.
+* Improvement: Added styling to premium callouts.
+* Improvement: Updated local GeoIP database.
+* Improvement: Updated local browser data cache to support newer browsers and user-agents.
+
= 6.0.23 =
* Improvement: Updated local GeoIP database.
* Improvement: Updated local browser data cache to support newer browsers and user-agents.
<?php
/* Wordfence temporary file security header */
echo "Nothing to see here!\n"; exit(0);
-?>a:22:{s:9:"cacheType";s:0:"";s:9:"howGetIPs";s:0:"";s:6:"apiKey";s:160:"39772cda7687ebf11c5ac11e91d5acf12c8e8cd0385aa1855ec379bd4cd5b9b8d725891c199356e4fccabde3e21f59bb5134b72f33c46680ad30d6cf3531d8d8a64957380db8f97c8728654983c03f87";s:20:"loginSec_lockoutMins";s:1:"5";s:19:"other_hideWPVersion";s:1:"1";s:15:"firewallEnabled";s:1:"1";s:11:"whitelisted";s:0:"";s:6:"isPaid";s:0:"";s:11:"blockedTime";s:3:"300";s:12:"neverBlockBG";s:18:"neverBlockVerified";s:18:"liveTrafficEnabled";s:1:"1";s:14:"disableCookies";s:1:"0";s:26:"loginSec_disableAuthorScan";s:1:"1";s:13:"blockFakeBots";s:1:"0";s:10:"bannedURLs";s:0:"";s:18:"other_blockBadPOST";s:1:"0";s:11:"other_WFNet";s:1:"1";s:18:"liveTraf_ignoreIPs";s:0:"";s:17:"liveTraf_ignoreUA";s:0:"";s:17:"maxGlobalRequests";s:8:"DISABLED";s:17:"maxRequestsHumans";s:8:"DISABLED";s:6:"encKey";s:16:"11965ebd75a856a8";}
\ No newline at end of file
+?>a:23:{s:9:"cacheType";s:0:"";s:9:"howGetIPs";s:0:"";s:11:"whitelisted";s:0:"";s:6:"apiKey";s:160:"39772cda7687ebf11c5ac11e91d5acf12c8e8cd0385aa1855ec379bd4cd5b9b8d725891c199356e4fccabde3e21f59bb5134b72f33c46680ad30d6cf3531d8d8a64957380db8f97c8728654983c03f87";s:20:"loginSec_lockoutMins";s:1:"5";s:19:"other_hideWPVersion";s:1:"1";s:15:"firewallEnabled";s:1:"1";s:6:"isPaid";s:0:"";s:11:"blockedTime";s:3:"300";s:12:"neverBlockBG";s:18:"neverBlockVerified";s:13:"blockFakeBots";s:1:"0";s:10:"bannedURLs";s:0:"";s:18:"other_blockBadPOST";s:1:"0";s:18:"liveTrafficEnabled";s:1:"1";s:14:"disableCookies";s:1:"0";s:10:"tourClosed";s:1:"1";s:10:"autoUpdate";s:1:"1";s:11:"alertEmails";s:40:"test+pavillonmadeleine@cubedesigners.com";s:17:"actUpdateInterval";s:1:"2";s:7:"debugOn";s:1:"0";s:13:"welcomeClosed";s:1:"1";s:38:"email_summary_dashboard_widget_enabled";s:1:"1";s:22:"email_summary_interval";s:8:"biweekly";}
\ No newline at end of file
Plugin URI: http://www.wordfence.com/
Description: Wordfence Security - Anti-virus, Firewall and High Speed Cache
Author: Wordfence
-Version: 6.0.23
+Version: 6.0.24
Author URI: http://www.wordfence.com/
*/
if(defined('WP_INSTALLING') && WP_INSTALLING){
return;
}
-define('WORDFENCE_VERSION', '6.0.23');
+define('WORDFENCE_VERSION', '6.0.24');
if(get_option('wordfenceActivated') != 1){
add_action('activated_plugin','wordfence_save_activation_error'); function wordfence_save_activation_error(){ update_option('wf_plugin_act_error', ob_get_contents()); }
}
$exclude_tree = array();
if ( $r['exclude_tree'] ) {
- $exclude_tree = array_merge( $exclude_tree, (array) $r['exclude_tree'] );
+ $exclude_tree = array_merge( $exclude_tree, wp_parse_id_list( $r['exclude_tree'] ) );
}
if ( $r['exclude'] ) {
- $exclude_tree = array_merge( $exclude_tree, (array) $r['exclude'] );
+ $exclude_tree = array_merge( $exclude_tree, wp_parse_id_list( $r['exclude'] ) );
}
$r['exclude_tree'] = $exclude_tree;
$terms = get_object_term_cache( $post->ID, $taxonomy );
if ( false === $terms ) {
$terms = wp_get_object_terms( $post->ID, $taxonomy );
- $to_cache = array();
- foreach ( $terms as $key => $term ) {
- $to_cache[ $key ] = $term->data;
+ if ( ! is_wp_error( $terms ) ) {
+ $to_cache = array();
+ foreach ( $terms as $key => $term ) {
+ $to_cache[ $key ] = $term->data;
+ }
+ wp_cache_add( $post->ID, $to_cache, $taxonomy . '_relationships' );
}
- wp_cache_add( $post->ID, $to_cache, $taxonomy . '_relationships' );
}
- $terms = array_map( 'get_term', $terms );
+ if ( ! is_wp_error( $terms ) ) {
+ $terms = array_map( 'get_term', $terms );
+ }
/**
* Filter the list of terms attached to the given post.
## Bundle of CA Root Certificates
##
## Certificate data from Mozilla as of: Wed Sep 16 08:58:11 2015
+## Includes a WordPress Modification - We include the 'legacy' 1024bit certificates
+## for backwards compatibility. See https://core.trac.wordpress.org/ticket/34935#comment:10
##
## This is a bundle of X.509 certificates of public Certificate Authorities
## (CA). These were automatically extracted from Mozilla's root certificates
dcGWxZ0=
-----END CERTIFICATE-----
+GTE CyberTrust Global Root
+==========================
+-----BEGIN CERTIFICATE-----
+MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
+Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
+A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
+MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
+Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
+IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
+sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
+HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
+AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
+M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
+NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
+-----END CERTIFICATE-----
+
+Thawte Server CA
+================
+-----BEGIN CERTIFICATE-----
+MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
+DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
+dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
+AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
+b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
+BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
+c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
+A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
+ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
+/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
+1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
+MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
+GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
+GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
+-----END CERTIFICATE-----
+
+Thawte Premium Server CA
+========================
+-----BEGIN CERTIFICATE-----
+MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
+DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
+dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
+AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
+ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
+AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
+VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
+aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
+cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
+aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
+Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
+qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
+SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
+8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
+UCemDaYj+bvLpgcUQg==
+-----END CERTIFICATE-----
+
Equifax Secure CA
=================
-----BEGIN CERTIFICATE-----
70+sB3c4
-----END CERTIFICATE-----
+Verisign Class 3 Public Primary Certification Authority
+=======================================================
+-----BEGIN CERTIFICATE-----
+MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
+FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
+IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
+XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
+IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
+A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
+f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
+hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
+TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
+WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
+Tqj/ZA1k
+-----END CERTIFICATE-----
+
+Verisign Class 3 Public Primary Certification Authority - G2
+============================================================
+-----BEGIN CERTIFICATE-----
+MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
+MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
+eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
+biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
+dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
+MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
+eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
+biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
+dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
+FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
+lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
+MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
+1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
+Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
+-----END CERTIFICATE-----
+
GlobalSign Root CA
==================
-----BEGIN CERTIFICATE-----
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
-----END CERTIFICATE-----
+
+ValiCert Class 1 VA
+===================
+-----BEGIN CERTIFICATE-----
+MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
+b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
+YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
+bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy
+MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
+d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg
+UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
+LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
+A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi
+GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm
+DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG
+lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX
+icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP
+Orf1LXLI
+-----END CERTIFICATE-----
+
+ValiCert Class 2 VA
+===================
+-----BEGIN CERTIFICATE-----
+MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
+b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
+YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
+bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
+MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
+d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg
+UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
+LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
+A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC
+CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf
+ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ
+SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV
+UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8
+W9ViH0Pd
+-----END CERTIFICATE-----
+
+RSA Root Certificate 1
+======================
+-----BEGIN CERTIFICATE-----
+MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
+b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
+YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
+bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
+MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
+d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg
+UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
+LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
+A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td
+3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H
+BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs
+3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF
+V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r
+on+jjBXu
+-----END CERTIFICATE-----
+
Verisign Class 3 Public Primary Certification Authority - G3
============================================================
-----BEGIN CERTIFICATE-----
UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
-----END CERTIFICATE-----
+Entrust.net Secure Server CA
+============================
+-----BEGIN CERTIFICATE-----
+MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV
+BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg
+cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
+ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv
+cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG
+A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi
+eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p
+dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0
+aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ
+aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5
+gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw
+ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw
+CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l
+dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
+bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
+cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
+dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw
+NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow
+HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA
+BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN
+Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9
+n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
+-----END CERTIFICATE-----
+
Entrust.net Premium 2048 Secure Server CA
=========================================
-----BEGIN CERTIFICATE-----
RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
-----END CERTIFICATE-----
+Equifax Secure Global eBusiness CA
+==================================
+-----BEGIN CERTIFICATE-----
+MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
+RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
+bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
+HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
+b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
+PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
+qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
+hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
+BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
+MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
+I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
+NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
+-----END CERTIFICATE-----
+
+Equifax Secure eBusiness CA 1
+=============================
+-----BEGIN CERTIFICATE-----
+MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
+RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
+LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
+ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
+IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
+1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
+IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
+MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
+Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
+AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
+lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
+KpYrtWKmpj29f5JZzVoqgrI3eQ==
+-----END CERTIFICATE-----
+
AddTrust Low-Value Services Root
================================
-----BEGIN CERTIFICATE-----
X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
-----END CERTIFICATE-----
+
+America Online Root Certification Authority 1
+=============================================
+-----BEGIN CERTIFICATE-----
+MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
+QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
+Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
+A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
+T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
+ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
+v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
+DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
+sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
+8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
+AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
+o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
+GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
+VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
+3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
+Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
+sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
+-----END CERTIFICATE-----
+
+America Online Root Certification Authority 2
+=============================================
+-----BEGIN CERTIFICATE-----
+MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
+QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
+Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG
+A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
+T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD
+ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en
+fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8
+f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO
+qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN
+RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0
+gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn
+6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid
+FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6
+Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj
+B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op
+aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE
+AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY
+T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p
++DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg
+JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy
+zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO
+ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh
+1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf
+GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff
+Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP
+cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
+-----END CERTIFICATE-----
+
Visa eCommerce Root
===================
-----BEGIN CERTIFICATE-----
8CgHrTwXZoi1/baI
-----END CERTIFICATE-----
+
+NetLock Business (Class B) Root
+===============================
+-----BEGIN CERTIFICATE-----
+MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
+CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
+BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg
+VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD
+VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv
+bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg
+VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
+iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S
+o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr
+1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
+HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ
+RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh
+dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0
+ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv
+c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg
+YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
+c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz
+Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA
+bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl
+IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2
+YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj
+cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM
+43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR
+stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI
+-----END CERTIFICATE-----
+
+NetLock Express (Class C) Root
+==============================
+-----BEGIN CERTIFICATE-----
+MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT
+CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
+BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD
+KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ
+BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
+dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j
+ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB
+jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z
+W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63
+euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw
+DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN
+RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn
+YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB
+IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i
+aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0
+ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
+ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo
+dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y
+emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k
+IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ
+UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg
+YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2
+xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW
+gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A==
+-----END CERTIFICATE-----
+
XRamp Global CA Root
====================
-----BEGIN CERTIFICATE-----
tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA==
-----END CERTIFICATE-----
+Verisign Class 3 Public Primary Certification Authority
+=======================================================
+-----BEGIN CERTIFICATE-----
+MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
+FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
+IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
+XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
+IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
+A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
+f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
+hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky
+CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX
+bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/
+D/xwzoiQ
+-----END CERTIFICATE-----
+
Microsec e-Szigno Root CA 2009
==============================
-----BEGIN CERTIFICATE-----
var $_value;
var $_currentTag;
var $_currentTagContents;
- var $_valueHasType = false;
// The XML parser
var $_parser;
$this->_arraystructstypes[] = 'struct';
$this->_arraystructs[] = array();
break;
- case 'value':
- $this->_valueHasType = false;
}
}
break;
case 'value':
// "If no type is indicated, the type is string."
- if ( !$this->_valueHasType ) {
- $value = trim( $this->_currentTagContents );
+ if (trim($this->_currentTagContents) != '') {
+ $value = (string)$this->_currentTagContents;
$valueFlag = true;
}
break;
}
if ($valueFlag) {
- $this->_valueHasType = true;
-
if (count($this->_arraystructs) > 0) {
// Add value to struct or array
if ($this->_arraystructstypes[count($this->_arraystructstypes)-1] == 'struct') {
'#https?://(www\.)?soundcloud\.com/.*#i' => array( 'http://soundcloud.com/oembed', true ),
'#https?://(.+?\.)?slideshare\.net/.*#i' => array( 'https://www.slideshare.net/api/oembed/2', true ),
'#https?://(www\.)?instagr(\.am|am\.com)/p/.*#i' => array( 'https://api.instagram.com/oembed', true ),
- '#https?://(www\.)?rdio\.com/.*#i' => array( 'http://www.rdio.com/api/oembed/', true ),
- '#https?://rd\.io/x/.*#i' => array( 'http://www.rdio.com/api/oembed/', true ),
'#https?://(open|play)\.spotify\.com/.*#i' => array( 'https://embed.spotify.com/oembed/', true ),
'#https?://(.+\.)?imgur\.com/.*#i' => array( 'http://api.imgur.com/oembed', true ),
'#https?://(www\.)?meetu(\.ps|p\.com)/.*#i' => array( 'http://api.meetup.com/oembed', true ),
* | SoundCloud | soundcloud.com | Yes | 3.5.0 |
* | Dailymotion | dai.ly | No | 3.6.0 |
* | Flickr | flic.kr | Yes | 3.6.0 |
- * | Rdio | rdio.com | Yes | 3.6.0 |
- * | Rdio | rd.io | Yes | 3.6.0 |
* | Spotify | spotify.com | Yes | 3.6.0 |
* | Imgur | imgur.com | Yes | 3.9.0 |
* | Meetup.com | meetup.com | Yes | 3.9.0 |
* | Viddler | viddler.com | Yes | 2.9.0 | 4.0.0 |
* | Revision3 | revision3.com | No | 2.9.0 | 4.2.0 |
* | Blip | blip.tv | No | 2.9.0 | 4.4.0 |
+ * | Rdio | rdio.com | Yes | 3.6.0 | 4.4.1 |
+ * | Rdio | rd.io | Yes | 3.6.0 | 4.4.1 |
*
* @see wp_oembed_add_provider()
*
{
/**
* The PHPMailer Version number.
- * @type string
+ * @var string
*/
- public $Version = '5.2.10';
+ public $Version = '5.2.14';
/**
* Email priority.
- * Options: 1 = High, 3 = Normal, 5 = low.
- * @type integer
+ * Options: null (default), 1 = High, 3 = Normal, 5 = low.
+ * When null, the header is not set at all.
+ * @var integer
*/
- public $Priority = 3;
+ public $Priority = null;
/**
* The character set of the message.
- * @type string
+ * @var string
*/
public $CharSet = 'iso-8859-1';
/**
* The MIME Content-type of the message.
- * @type string
+ * @var string
*/
public $ContentType = 'text/plain';
/**
* The message encoding.
* Options: "8bit", "7bit", "binary", "base64", and "quoted-printable".
- * @type string
+ * @var string
*/
public $Encoding = '8bit';
/**
* Holds the most recent mailer error message.
- * @type string
+ * @var string
*/
public $ErrorInfo = '';
/**
* The From email address for the message.
- * @type string
+ * @var string
*/
public $From = 'root@localhost';
/**
* The From name of the message.
- * @type string
+ * @var string
*/
public $FromName = 'Root User';
/**
* The Sender email (Return-Path) of the message.
* If not empty, will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode.
- * @type string
+ * @var string
*/
public $Sender = '';
/**
* The Return-Path of the message.
* If empty, it will be set to either From or Sender.
- * @type string
+ * @var string
* @deprecated Email senders should never set a return-path header;
* it's the receiver's job (RFC5321 section 4.4), so this no longer does anything.
* @link https://tools.ietf.org/html/rfc5321#section-4.4 RFC5321 reference
/**
* The Subject of the message.
- * @type string
+ * @var string
*/
public $Subject = '';
/**
* An HTML or plain text message body.
* If HTML then call isHTML(true).
- * @type string
+ * @var string
*/
public $Body = '';
* This body can be read by mail clients that do not have HTML email
* capability such as mutt & Eudora.
* Clients that can read HTML will view the normal Body.
- * @type string
+ * @var string
*/
public $AltBody = '';
* To generate iCal events, use the bundled extras/EasyPeasyICS.php class or iCalcreator
* @link http://sprain.ch/blog/downloads/php-class-easypeasyics-create-ical-files-with-php/
* @link http://kigkonsult.se/iCalcreator/
- * @type string
+ * @var string
*/
public $Ical = '';
/**
* The complete compiled MIME message body.
* @access protected
- * @type string
+ * @var string
*/
protected $MIMEBody = '';
/**
* The complete compiled MIME message headers.
- * @type string
+ * @var string
* @access protected
*/
protected $MIMEHeader = '';
/**
* Extra headers that createHeader() doesn't fold in.
- * @type string
+ * @var string
* @access protected
*/
protected $mailHeader = '';
/**
* Word-wrap the message body to this number of chars.
* Set to 0 to not wrap. A useful value here is 78, for RFC2822 section 2.1.1 compliance.
- * @type integer
+ * @var integer
*/
public $WordWrap = 0;
/**
* Which method to use to send mail.
* Options: "mail", "sendmail", or "smtp".
- * @type string
+ * @var string
*/
public $Mailer = 'mail';
/**
* The path to the sendmail program.
- * @type string
+ * @var string
*/
public $Sendmail = '/usr/sbin/sendmail';
/**
* Whether mail() uses a fully sendmail-compatible MTA.
* One which supports sendmail's "-oi -f" options.
- * @type boolean
+ * @var boolean
*/
public $UseSendmailOptions = true;
/**
* Path to PHPMailer plugins.
* Useful if the SMTP class is not in the PHP include path.
- * @type string
+ * @var string
* @deprecated Should not be needed now there is an autoloader.
*/
public $PluginDir = '';
/**
- * The email address that a reading confirmation should be sent to.
- * @type string
+ * The email address that a reading confirmation should be sent to, also known as read receipt.
+ * @var string
*/
public $ConfirmReadingTo = '';
/**
- * The hostname to use in Message-Id and Received headers
- * and as default HELO string.
- * If empty, the value returned
- * by SERVER_NAME is used or 'localhost.localdomain'.
- * @type string
+ * The hostname to use in the Message-ID header and as default HELO string.
+ * If empty, PHPMailer attempts to find one with, in order,
+ * $_SERVER['SERVER_NAME'], gethostname(), php_uname('n'), or the value
+ * 'localhost.localdomain'.
+ * @var string
*/
public $Hostname = '';
/**
- * An ID to be used in the Message-Id header.
+ * An ID to be used in the Message-ID header.
* If empty, a unique id will be generated.
- * @type string
+ * @var string
*/
public $MessageID = '';
/**
* The message Date to be used in the Date header.
* If empty, the current date will be added.
- * @type string
+ * @var string
*/
public $MessageDate = '';
* You can also specify encryption type, for example:
* (e.g. "tls://smtp1.example.com:587;ssl://smtp2.example.com:465").
* Hosts will be tried in order.
- * @type string
+ * @var string
*/
public $Host = 'localhost';
/**
* The default SMTP server port.
- * @type integer
+ * @var integer
* @TODO Why is this needed when the SMTP class takes care of it?
*/
public $Port = 25;
/**
* The SMTP HELO of the message.
- * Default is $Hostname.
- * @type string
+ * Default is $Hostname. If $Hostname is empty, PHPMailer attempts to find
+ * one with the same method described above for $Hostname.
+ * @var string
* @see PHPMailer::$Hostname
*/
public $Helo = '';
/**
* What kind of encryption to use on the SMTP connection.
* Options: '', 'ssl' or 'tls'
- * @type string
+ * @var string
*/
public $SMTPSecure = '';
* Whether to enable TLS encryption automatically if a server supports it,
* even if `SMTPSecure` is not set to 'tls'.
* Be aware that in PHP >= 5.6 this requires that the server's certificates are valid.
- * @type boolean
+ * @var boolean
*/
public $SMTPAutoTLS = true;
/**
* Whether to use SMTP authentication.
* Uses the Username and Password properties.
- * @type boolean
+ * @var boolean
* @see PHPMailer::$Username
* @see PHPMailer::$Password
*/
/**
* Options array passed to stream_context_create when connecting via SMTP.
- * @type array
+ * @var array
*/
public $SMTPOptions = array();
/**
* SMTP username.
- * @type string
+ * @var string
*/
public $Username = '';
/**
* SMTP password.
- * @type string
+ * @var string
*/
public $Password = '';
/**
* SMTP auth type.
* Options are LOGIN (default), PLAIN, NTLM, CRAM-MD5
- * @type string
+ * @var string
*/
public $AuthType = '';
/**
* SMTP realm.
* Used for NTLM auth
- * @type string
+ * @var string
*/
public $Realm = '';
/**
* SMTP workstation.
* Used for NTLM auth
- * @type string
+ * @var string
*/
public $Workstation = '';
/**
* The SMTP server timeout in seconds.
* Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2
- * @type integer
+ * @var integer
*/
public $Timeout = 300;
* * `2` Data and commands
* * `3` As 2 plus connection status
* * `4` Low-level data output
- * @type integer
+ * @var integer
* @see SMTP::$do_debug
*/
public $SMTPDebug = 0;
* <code>
* $mail->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";};
* </code>
- * @type string|callable
+ * @var string|callable
* @see SMTP::$Debugoutput
*/
public $Debugoutput = 'echo';
* Whether to keep SMTP connection open after each message.
* If this is set to true then to close the connection
* requires an explicit call to smtpClose().
- * @type boolean
+ * @var boolean
*/
public $SMTPKeepAlive = false;
/**
* Whether to split multiple to addresses into multiple messages
* or send them all in one message.
- * @type boolean
+ * @var boolean
*/
public $SingleTo = false;
/**
* Storage for addresses when SingleTo is enabled.
- * @type array
+ * @var array
* @TODO This should really not be public
*/
public $SingleToArray = array();
/**
* Whether to generate VERP addresses on send.
* Only applicable when sending via SMTP.
- * @link http://en.wikipedia.org/wiki/Variable_envelope_return_path
+ * @link https://en.wikipedia.org/wiki/Variable_envelope_return_path
* @link http://www.postfix.org/VERP_README.html Postfix VERP info
- * @type boolean
+ * @var boolean
*/
public $do_verp = false;
/**
* Whether to allow sending messages with an empty body.
- * @type boolean
+ * @var boolean
*/
public $AllowEmpty = false;
* The default line ending.
* @note The default remains "\n". We force CRLF where we know
* it must be used via self::CRLF.
- * @type string
+ * @var string
*/
public $LE = "\n";
/**
* DKIM selector.
- * @type string
+ * @var string
*/
public $DKIM_selector = '';
/**
* DKIM Identity.
* Usually the email address used as the source of the email
- * @type string
+ * @var string
*/
public $DKIM_identity = '';
/**
* DKIM passphrase.
* Used if your key is encrypted.
- * @type string
+ * @var string
*/
public $DKIM_passphrase = '';
/**
* DKIM signing domain name.
* @example 'example.com'
- * @type string
+ * @var string
*/
public $DKIM_domain = '';
/**
* DKIM private key file path.
- * @type string
+ * @var string
*/
public $DKIM_private = '';
* string $subject the subject
* string $body the email body
* string $from email address of sender
- * @type string
+ * @var string
*/
public $action_function = '';
/**
* What to put in the X-Mailer header.
* Options: An empty string for PHPMailer default, whitespace for none, or a string to use
- * @type string
+ * @var string
*/
public $XMailer = '';
/**
* An instance of the SMTP sender class.
- * @type SMTP
+ * @var SMTP
* @access protected
*/
protected $smtp = null;
/**
- * The array of 'to' addresses.
- * @type array
+ * The array of 'to' names and addresses.
+ * @var array
* @access protected
*/
protected $to = array();
/**
- * The array of 'cc' addresses.
- * @type array
+ * The array of 'cc' names and addresses.
+ * @var array
* @access protected
*/
protected $cc = array();
/**
- * The array of 'bcc' addresses.
- * @type array
+ * The array of 'bcc' names and addresses.
+ * @var array
* @access protected
*/
protected $bcc = array();
/**
* The array of reply-to names and addresses.
- * @type array
+ * @var array
* @access protected
*/
protected $ReplyTo = array();
/**
* An array of all kinds of addresses.
* Includes all of $to, $cc, $bcc
- * @type array
+ * @var array
* @access protected
+ * @see PHPMailer::$to @see PHPMailer::$cc @see PHPMailer::$bcc
*/
protected $all_recipients = array();
+ /**
+ * An array of names and addresses queued for validation.
+ * In send(), valid and non duplicate entries are moved to $all_recipients
+ * and one of $to, $cc, or $bcc.
+ * This array is used only for addresses with IDN.
+ * @var array
+ * @access protected
+ * @see PHPMailer::$to @see PHPMailer::$cc @see PHPMailer::$bcc
+ * @see PHPMailer::$all_recipients
+ */
+ protected $RecipientsQueue = array();
+
+ /**
+ * An array of reply-to names and addresses queued for validation.
+ * In send(), valid and non duplicate entries are moved to $ReplyTo.
+ * This array is used only for addresses with IDN.
+ * @var array
+ * @access protected
+ * @see PHPMailer::$ReplyTo
+ */
+ protected $ReplyToQueue = array();
+
/**
* The array of attachments.
- * @type array
+ * @var array
* @access protected
*/
protected $attachment = array();
/**
* The array of custom headers.
- * @type array
+ * @var array
* @access protected
*/
protected $CustomHeader = array();
/**
* The most recent Message-ID (including angular brackets).
- * @type string
+ * @var string
* @access protected
*/
protected $lastMessageID = '';
/**
* The message's MIME type.
- * @type string
+ * @var string
* @access protected
*/
protected $message_type = '';
/**
* The array of MIME boundary strings.
- * @type array
+ * @var array
* @access protected
*/
protected $boundary = array();
/**
* The array of available languages.
- * @type array
+ * @var array
* @access protected
*/
protected $language = array();
/**
* The number of errors encountered.
- * @type integer
+ * @var integer
* @access protected
*/
protected $error_count = 0;
/**
* The S/MIME certificate file path.
- * @type string
+ * @var string
* @access protected
*/
protected $sign_cert_file = '';
/**
* The S/MIME key file path.
- * @type string
+ * @var string
* @access protected
*/
protected $sign_key_file = '';
/**
* The optional S/MIME extra certificates ("CA Chain") file path.
- * @type string
+ * @var string
* @access protected
*/
protected $sign_extracerts_file = '';
/**
* The S/MIME password for the key.
* Used only if the key is encrypted.
- * @type string
+ * @var string
* @access protected
*/
protected $sign_key_pass = '';
/**
* Whether to throw exceptions for errors.
- * @type boolean
+ * @var boolean
* @access protected
*/
protected $exceptions = false;
/**
* Unique ID used for message ID and boundaries.
- * @type string
+ * @var string
* @access protected
*/
protected $uniqueid = '';
/**
* The maximum line length allowed by RFC 2822 section 2.1.1
- * @type integer
+ * @var integer
*/
const MAX_LINE_LENGTH = 998;
/**
* Add a "To" address.
- * @param string $address
+ * @param string $address The email address to send to
* @param string $name
- * @return boolean true on success, false if address already used
+ * @return boolean true on success, false if address already used or invalid in some way
*/
public function addAddress($address, $name = '')
{
- return $this->addAnAddress('to', $address, $name);
+ return $this->addOrEnqueueAnAddress('to', $address, $name);
}
/**
* Add a "CC" address.
* @note: This function works with the SMTP mailer on win32, not with the "mail" mailer.
- * @param string $address
+ * @param string $address The email address to send to
* @param string $name
- * @return boolean true on success, false if address already used
+ * @return boolean true on success, false if address already used or invalid in some way
*/
public function addCC($address, $name = '')
{
- return $this->addAnAddress('cc', $address, $name);
+ return $this->addOrEnqueueAnAddress('cc', $address, $name);
}
/**
* Add a "BCC" address.
* @note: This function works with the SMTP mailer on win32, not with the "mail" mailer.
- * @param string $address
+ * @param string $address The email address to send to
* @param string $name
- * @return boolean true on success, false if address already used
+ * @return boolean true on success, false if address already used or invalid in some way
*/
public function addBCC($address, $name = '')
{
- return $this->addAnAddress('bcc', $address, $name);
+ return $this->addOrEnqueueAnAddress('bcc', $address, $name);
}
/**
- * Add a "Reply-to" address.
- * @param string $address
+ * Add a "Reply-To" address.
+ * @param string $address The email address to reply to
* @param string $name
- * @return boolean
+ * @return boolean true on success, false if address already used or invalid in some way
*/
public function addReplyTo($address, $name = '')
{
- return $this->addAnAddress('Reply-To', $address, $name);
+ return $this->addOrEnqueueAnAddress('Reply-To', $address, $name);
}
/**
- * Add an address to one of the recipient arrays.
- * Addresses that have been added already return false, but do not throw exceptions
- * @param string $kind One of 'to', 'cc', 'bcc', 'ReplyTo'
- * @param string $address The email address to send to
+ * Add an address to one of the recipient arrays or to the ReplyTo array. Because PHPMailer
+ * can't validate addresses with an IDN without knowing the PHPMailer::$CharSet (that can still
+ * be modified after calling this function), addition of such addresses is delayed until send().
+ * Addresses that have been added already return false, but do not throw exceptions.
+ * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo'
+ * @param string $address The email address to send, resp. to reply to
+ * @param string $name
+ * @throws phpmailerException
+ * @return boolean true on success, false if address already used or invalid in some way
+ * @access protected
+ */
+ protected function addOrEnqueueAnAddress($kind, $address, $name)
+ {
+ $address = trim($address);
+ $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
+ if (($pos = strrpos($address, '@')) === false) {
+ // At-sign is misssing.
+ $error_message = $this->lang('invalid_address') . $address;
+ $this->setError($error_message);
+ $this->edebug($error_message);
+ if ($this->exceptions) {
+ throw new phpmailerException($error_message);
+ }
+ return false;
+ }
+ $params = array($kind, $address, $name);
+ // Enqueue addresses with IDN until we know the PHPMailer::$CharSet.
+ if ($this->has8bitChars(substr($address, ++$pos)) and $this->idnSupported()) {
+ if ($kind != 'Reply-To') {
+ if (!array_key_exists($address, $this->RecipientsQueue)) {
+ $this->RecipientsQueue[$address] = $params;
+ return true;
+ }
+ } else {
+ if (!array_key_exists($address, $this->ReplyToQueue)) {
+ $this->ReplyToQueue[$address] = $params;
+ return true;
+ }
+ }
+ return false;
+ }
+ // Immediately add standard addresses without IDN.
+ return call_user_func_array(array($this, 'addAnAddress'), $params);
+ }
+
+ /**
+ * Add an address to one of the recipient arrays or to the ReplyTo array.
+ * Addresses that have been added already return false, but do not throw exceptions.
+ * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo'
+ * @param string $address The email address to send, resp. to reply to
* @param string $name
* @throws phpmailerException
* @return boolean true on success, false if address already used or invalid in some way
*/
protected function addAnAddress($kind, $address, $name = '')
{
- if (!preg_match('/^(to|cc|bcc|Reply-To)$/', $kind)) {
- $this->setError($this->lang('Invalid recipient array') . ': ' . $kind);
- $this->edebug($this->lang('Invalid recipient array') . ': ' . $kind);
+ if (!in_array($kind, array('to', 'cc', 'bcc', 'Reply-To'))) {
+ $error_message = $this->lang('Invalid recipient kind: ') . $kind;
+ $this->setError($error_message);
+ $this->edebug($error_message);
if ($this->exceptions) {
- throw new phpmailerException('Invalid recipient array: ' . $kind);
+ throw new phpmailerException($error_message);
}
return false;
}
- $address = trim($address);
- $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
if (!$this->validateAddress($address)) {
- $this->setError($this->lang('invalid_address') . ': ' . $address);
- $this->edebug($this->lang('invalid_address') . ': ' . $address);
+ $error_message = $this->lang('invalid_address') . $address;
+ $this->setError($error_message);
+ $this->edebug($error_message);
if ($this->exceptions) {
- throw new phpmailerException($this->lang('invalid_address') . ': ' . $address);
+ throw new phpmailerException($error_message);
}
return false;
}
if ($kind != 'Reply-To') {
- if (!isset($this->all_recipients[strtolower($address)])) {
+ if (!array_key_exists(strtolower($address), $this->all_recipients)) {
array_push($this->$kind, array($address, $name));
$this->all_recipients[strtolower($address)] = true;
return true;
{
$address = trim($address);
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
- if (!$this->validateAddress($address)) {
- $this->setError($this->lang('invalid_address') . ': ' . $address);
- $this->edebug($this->lang('invalid_address') . ': ' . $address);
+ // Don't validate now addresses with IDN. Will be done in send().
+ if (($pos = strrpos($address, '@')) === false or
+ (!$this->has8bitChars(substr($address, ++$pos)) or !$this->idnSupported()) and
+ !$this->validateAddress($address)) {
+ $error_message = $this->lang('invalid_address') . $address;
+ $this->setError($error_message);
+ $this->edebug($error_message);
if ($this->exceptions) {
- throw new phpmailerException($this->lang('invalid_address') . ': ' . $address);
+ throw new phpmailerException($error_message);
}
return false;
}
* Check that a string looks like an email address.
* @param string $address The email address to check
* @param string $patternselect A selector for the validation pattern to use :
- * * `auto` Pick strictest one automatically;
+ * * `auto` Pick best pattern automatically;
* * `pcre8` Use the squiloople.com pattern, requires PCRE > 8.0, PHP >= 5.3.2, 5.2.14;
* * `pcre` Use old PCRE implementation;
- * * `php` Use PHP built-in FILTER_VALIDATE_EMAIL; same as pcre8 but does not allow 'dotless' domains;
+ * * `php` Use PHP built-in FILTER_VALIDATE_EMAIL;
* * `html5` Use the pattern given by the HTML5 spec for 'email' type form input elements.
* * `noregex` Don't use a regex: super fast, really dumb.
* @return boolean
*/
public static function validateAddress($address, $patternselect = 'auto')
{
+ //Reject line breaks in addresses; it's valid RFC5322, but not RFC5321
+ if (strpos($address, "\n") !== false or strpos($address, "\r") !== false) {
+ return false;
+ }
if (!$patternselect or $patternselect == 'auto') {
//Check this constant first so it works when extension_loaded() is disabled by safe mode
//Constant was added in PHP 5.2.4
}
}
+ /**
+ * Tells whether IDNs (Internationalized Domain Names) are supported or not. This requires the
+ * "intl" and "mbstring" PHP extensions.
+ * @return bool "true" if required functions for IDN support are present
+ */
+ public function idnSupported()
+ {
+ // @TODO: Write our own "idn_to_ascii" function for PHP <= 5.2.
+ return function_exists('idn_to_ascii') and function_exists('mb_convert_encoding');
+ }
+
+ /**
+ * Converts IDN in given email address to its ASCII form, also known as punycode, if possible.
+ * Important: Address must be passed in same encoding as currently set in PHPMailer::$CharSet.
+ * This function silently returns unmodified address if:
+ * - No conversion is necessary (i.e. domain name is not an IDN, or is already in ASCII form)
+ * - Conversion to punycode is impossible (e.g. required PHP functions are not available)
+ * or fails for any reason (e.g. domain has characters not allowed in an IDN)
+ * @see PHPMailer::$CharSet
+ * @param string $address The email address to convert
+ * @return string The encoded address in ASCII form
+ */
+ public function punyencodeAddress($address)
+ {
+ // Verify we have required functions, CharSet, and at-sign.
+ if ($this->idnSupported() and
+ !empty($this->CharSet) and
+ ($pos = strrpos($address, '@')) !== false) {
+ $domain = substr($address, ++$pos);
+ // Verify CharSet string is a valid one, and domain properly encoded in this CharSet.
+ if ($this->has8bitChars($domain) and @mb_check_encoding($domain, $this->CharSet)) {
+ $domain = mb_convert_encoding($domain, 'UTF-8', $this->CharSet);
+ if (($punycode = defined('INTL_IDNA_VARIANT_UTS46') ?
+ idn_to_ascii($domain, 0, INTL_IDNA_VARIANT_UTS46) :
+ idn_to_ascii($domain)) !== false) {
+ return substr($address, 0, $pos) . $punycode;
+ }
+ }
+ }
+ return $address;
+ }
+
/**
* Create a message and send it.
* Uses the sending method specified by $Mailer.
public function preSend()
{
try {
+ $this->error_count = 0; // Reset errors
$this->mailHeader = '';
+
+ // Dequeue recipient and Reply-To addresses with IDN
+ foreach (array_merge($this->RecipientsQueue, $this->ReplyToQueue) as $params) {
+ $params[1] = $this->punyencodeAddress($params[1]);
+ call_user_func_array(array($this, 'addAnAddress'), $params);
+ }
if ((count($this->to) + count($this->cc) + count($this->bcc)) < 1) {
throw new phpmailerException($this->lang('provide_address'), self::STOP_CRITICAL);
}
+ // Validate From, Sender, and ConfirmReadingTo addresses
+ foreach (array('From', 'Sender', 'ConfirmReadingTo') as $address_kind) {
+ $this->$address_kind = trim($this->$address_kind);
+ if (empty($this->$address_kind)) {
+ continue;
+ }
+ $this->$address_kind = $this->punyencodeAddress($this->$address_kind);
+ if (!$this->validateAddress($this->$address_kind)) {
+ $error_message = $this->lang('invalid_address') . $this->$address_kind;
+ $this->setError($error_message);
+ $this->edebug($error_message);
+ if ($this->exceptions) {
+ throw new phpmailerException($error_message);
+ }
+ return false;
+ }
+ }
+
// Set whether the message is multipart/alternative
if (!empty($this->AltBody)) {
$this->ContentType = 'multipart/alternative';
}
- $this->error_count = 0; // Reset errors
$this->setMessageType();
// Refuse to send an empty message unless we are specifically allowing it
if (!$this->AllowEmpty and empty($this->Body)) {
fputs($mail, $header);
fputs($mail, $body);
$result = pclose($mail);
- $this->doCallback(($result == 0), $this->to, $this->cc, $this->bcc, $this->Subject, $body, $this->From);
+ $this->doCallback(
+ ($result == 0),
+ $this->to,
+ $this->cc,
+ $this->bcc,
+ $this->Subject,
+ $body,
+ $this->From
+ );
if ($result != 0) {
throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
}
'file_open' => 'File Error: Could not open file: ',
'from_failed' => 'The following From address failed: ',
'instantiate' => 'Could not instantiate mail function.',
- 'invalid_address' => 'Invalid address',
+ 'invalid_address' => 'Invalid address: ',
'mailer_not_supported' => ' mailer is not supported.',
'provide_address' => 'You must provide at least one recipient email address.',
'recipients_failed' => 'SMTP Error: The following recipients failed: ',
}
$result .= $this->headerLine('Date', $this->MessageDate);
-
// To be created automatically by mail()
if ($this->SingleTo) {
if ($this->Mailer != 'mail') {
if ($this->MessageID != '') {
$this->lastMessageID = $this->MessageID;
} else {
- $this->lastMessageID = sprintf('<%s@%s>', $this->uniqueid, $this->ServerHostname());
+ $this->lastMessageID = sprintf('<%s@%s>', $this->uniqueid, $this->serverHostname());
}
$result .= $this->headerLine('Message-ID', $this->lastMessageID);
- $result .= $this->headerLine('X-Priority', $this->Priority);
+ if (!is_null($this->Priority)) {
+ $result .= $this->headerLine('X-Priority', $this->Priority);
+ }
if ($this->XMailer == '') {
$result .= $this->headerLine(
'X-Mailer',
- 'PHPMailer ' . $this->Version . ' (https://github.com/PHPMailer/PHPMailer/)'
+ 'PHPMailer ' . $this->Version . ' (https://github.com/PHPMailer/PHPMailer)'
);
} else {
$myXmailer = trim($this->XMailer);
}
if ($this->ConfirmReadingTo != '') {
- $result .= $this->headerLine('Disposition-Notification-To', '<' . trim($this->ConfirmReadingTo) . '>');
+ $result .= $this->headerLine('Disposition-Notification-To', '<' . $this->ConfirmReadingTo . '>');
}
// Add custom headers
$type = $attachment[4];
$disposition = $attachment[6];
$cid = $attachment[7];
- if ($disposition == 'inline' && isset($cidUniq[$cid])) {
+ if ($disposition == 'inline' && array_key_exists($cid, $cidUniq)) {
continue;
}
$cidUniq[$cid] = true;
$mime[] = sprintf('--%s%s', $boundary, $this->LE);
- $mime[] = sprintf(
- 'Content-Type: %s; name="%s"%s',
- $type,
- $this->encodeHeader($this->secureHeader($name)),
- $this->LE
- );
+ //Only include a filename property if we have one
+ if (!empty($name)) {
+ $mime[] = sprintf(
+ 'Content-Type: %s; name="%s"%s',
+ $type,
+ $this->encodeHeader($this->secureHeader($name)),
+ $this->LE
+ );
+ } else {
+ $mime[] = sprintf(
+ 'Content-Type: %s%s',
+ $type,
+ $this->LE
+ );
+ }
// RFC1341 part 5 says 7bit is assumed if not specified
if ($encoding != '7bit') {
$mime[] = sprintf('Content-Transfer-Encoding: %s%s', $encoding, $this->LE);
$this->LE . $this->LE
);
} else {
- $mime[] = sprintf(
- 'Content-Disposition: %s; filename=%s%s',
- $disposition,
- $encoded_name,
- $this->LE . $this->LE
- );
+ if (!empty($encoded_name)) {
+ $mime[] = sprintf(
+ 'Content-Disposition: %s; filename=%s%s',
+ $disposition,
+ $encoded_name,
+ $this->LE . $this->LE
+ );
+ } else {
+ $mime[] = sprintf(
+ 'Content-Disposition: %s%s',
+ $disposition,
+ $this->LE . $this->LE
+ );
+ }
}
} else {
$mime[] = $this->LE;
* @param string $path The full path to the file
* @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable'
* @throws phpmailerException
- * @see EncodeFile(encodeFile
* @access protected
* @return string
*/
{
// Use native function if it's available (>= PHP5.3)
if (function_exists('quoted_printable_encode')) {
- return $this->fixEOL(quoted_printable_encode($string));
+ return quoted_printable_encode($string);
}
// Fall back to a pure PHP implementation
$string = str_replace(
array(' ', "\r\n=2E", "\r\n", '='),
rawurlencode($string)
);
- $string = preg_replace('/[^\r\n]{' . ($line_max - 3) . '}[^=\r\n]{2}/', "$0=\r\n", $string);
- return $this->fixEOL($string);
+ return preg_replace('/[^\r\n]{' . ($line_max - 3) . '}[^=\r\n]{2}/', "$0=\r\n", $string);
}
/**
return str_replace(' ', '_', $encoded);
}
-
/**
* Add a string or binary attachment (non-filesystem).
* This method can be used to attach ascii or binary data,
$disposition = 'inline'
) {
// If a MIME type is not specified, try to work it out from the name
- if ($type == '') {
+ if ($type == '' and !empty($name)) {
$type = self::filenameToType($name);
}
return !empty($this->AltBody);
}
+ /**
+ * Clear queued addresses of given kind.
+ * @access protected
+ * @param string $kind 'to', 'cc', or 'bcc'
+ * @return void
+ */
+ public function clearQueuedAddresses($kind)
+ {
+ $RecipientsQueue = $this->RecipientsQueue;
+ foreach ($RecipientsQueue as $address => $params) {
+ if ($params[0] == $kind) {
+ unset($this->RecipientsQueue[$address]);
+ }
+ }
+ }
+
/**
* Clear all To recipients.
* @return void
unset($this->all_recipients[strtolower($to[0])]);
}
$this->to = array();
+ $this->clearQueuedAddresses('to');
}
/**
unset($this->all_recipients[strtolower($cc[0])]);
}
$this->cc = array();
+ $this->clearQueuedAddresses('cc');
}
/**
unset($this->all_recipients[strtolower($bcc[0])]);
}
$this->bcc = array();
+ $this->clearQueuedAddresses('bcc');
}
/**
public function clearReplyTos()
{
$this->ReplyTo = array();
+ $this->ReplyToQueue = array();
}
/**
$this->cc = array();
$this->bcc = array();
$this->all_recipients = array();
+ $this->RecipientsQueue = array();
}
/**
}
/**
- * Returns all custom headers
- *
+ * Returns all custom headers.
* @return array
*/
public function getCustomHeaders()
* @param string $message HTML message string
* @param string $basedir baseline directory for path
* @param boolean|callable $advanced Whether to use the internal HTML to text converter
- * or your own custom converter @see html2text()
+ * or your own custom converter @see PHPMailer::html2text()
* @return string $message
*/
public function msgHTML($message, $basedir = '', $advanced = false)
{
preg_match_all('/(src|background)=["\'](.*)["\']/Ui', $message, $images);
- if (isset($images[2])) {
+ if (array_key_exists(2, $images)) {
foreach ($images[2] as $imgindex => $url) {
// Convert data URIs into embedded images
if (preg_match('#^data:(image[^;,]*)(;base64)?,#', $url, $match)) {
$data = rawurldecode($data);
}
$cid = md5($url) . '@phpmailer.0'; // RFC2392 S 2
- if ($this->addStringEmbeddedImage($data, $cid, '', 'base64', $match[1])) {
+ if ($this->addStringEmbeddedImage($data, $cid, 'embed' . $imgindex, 'base64', $match[1])) {
$message = str_replace(
$images[0][$imgindex],
$images[1][$imgindex] . '="cid:' . $cid . '"',
$message
);
}
- } elseif (!preg_match('#^[A-z]+://#', $url)) {
+ } elseif (substr($url, 0, 4) !== 'cid:' && !preg_match('#^[A-z]+://#', $url)) {
// Do not change urls for absolute images (thanks to corvuscorax)
+ // Do not change urls that are already inline images
$filename = basename($url);
$directory = dirname($url);
if ($directory == '.') {
'bin' => 'application/macbinary',
'doc' => 'application/msword',
'word' => 'application/msword',
+ 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+ 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
+ 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
+ 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
+ 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
+ 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide',
+ 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
+ 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
+ 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12',
+ 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
'class' => 'application/octet-stream',
'dll' => 'application/octet-stream',
'dms' => 'application/octet-stream',
return preg_replace('/(\r\n|\r|\n)/ms', $breaktype, $text);
}
-
/**
* Set the public and private key files and password for S/MIME signing.
* @access public
"\tbh=" . $DKIMb64 . ";\r\n" .
"\tb=";
$toSign = $this->DKIM_HeaderC(
- $from_header . "\r\n" . $to_header . "\r\n" . $subject_header . "\r\n" . $dkimhdrs
+ $from_header . "\r\n" .
+ $to_header . "\r\n" .
+ $subject_header . "\r\n" .
+ $dkimhdrs
);
$signed = $this->DKIM_Sign($toSign);
return $dkimhdrs . $signed . "\r\n";
/**
* Allows for public read access to 'to' property.
+ * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included.
* @access public
* @return array
*/
/**
* Allows for public read access to 'cc' property.
+ * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included.
* @access public
* @return array
*/
/**
* Allows for public read access to 'bcc' property.
+ * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included.
* @access public
* @return array
*/
/**
* Allows for public read access to 'ReplyTo' property.
+ * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included.
* @access public
* @return array
*/
/**
* Allows for public read access to 'all_recipients' property.
+ * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included.
* @access public
* @return array
*/
{
/**
* The PHPMailer SMTP version number.
- * @type string
+ * @var string
*/
- const VERSION = '5.2.10';
+ const VERSION = '5.2.14';
/**
* SMTP line break constant.
- * @type string
+ * @var string
*/
const CRLF = "\r\n";
/**
* The SMTP port to use if one is not specified.
- * @type integer
+ * @var integer
*/
const DEFAULT_SMTP_PORT = 25;
/**
* The maximum line length allowed by RFC 2822 section 2.1.1
- * @type integer
+ * @var integer
*/
const MAX_LINE_LENGTH = 998;
/**
* The PHPMailer SMTP Version number.
- * @type string
+ * @var string
* @deprecated Use the `VERSION` constant instead
* @see SMTP::VERSION
*/
- public $Version = '5.2.10';
+ public $Version = '5.2.14';
/**
* SMTP server port number.
- * @type integer
+ * @var integer
* @deprecated This is only ever used as a default value, so use the `DEFAULT_SMTP_PORT` constant instead
* @see SMTP::DEFAULT_SMTP_PORT
*/
/**
* SMTP reply line ending.
- * @type string
+ * @var string
* @deprecated Use the `CRLF` constant instead
* @see SMTP::CRLF
*/
* * self::DEBUG_SERVER (`2`) Client commands and server responses
* * self::DEBUG_CONNECTION (`3`) As DEBUG_SERVER plus connection status
* * self::DEBUG_LOWLEVEL (`4`) Low-level data output, all messages
- * @type integer
+ * @var integer
*/
public $do_debug = self::DEBUG_OFF;
* <code>
* $smtp->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";};
* </code>
- * @type string|callable
+ * @var string|callable
*/
public $Debugoutput = 'echo';
* Whether to use VERP.
* @link http://en.wikipedia.org/wiki/Variable_envelope_return_path
* @link http://www.postfix.org/VERP_README.html Info on VERP
- * @type boolean
+ * @var boolean
*/
public $do_verp = false;
* Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2
* This needs to be quite high to function correctly with hosts using greetdelay as an anti-spam measure.
* @link http://tools.ietf.org/html/rfc2821#section-4.5.3.2
- * @type integer
+ * @var integer
*/
public $Timeout = 300;
/**
* How long to wait for commands to complete, in seconds.
* Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2
- * @type integer
+ * @var integer
*/
public $Timelimit = 300;
/**
* The socket for the server connection.
- * @type resource
+ * @var resource
*/
protected $smtp_conn;
/**
* Error information, if any, for the last SMTP command.
- * @type array
+ * @var array
*/
protected $error = array(
'error' => '',
/**
* The reply the server sent to us for HELO.
* If null, no HELO string has yet been received.
- * @type string|null
+ * @var string|null
*/
protected $helo_rply = null;
* represents the server name. In case of HELO it is the only element of the array.
* Other values can be boolean TRUE or an array containing extension options.
* If null, no HELO/EHLO string has yet been received.
- * @type array|null
+ * @var array|null
*/
protected $server_caps = null;
/**
* The most recent reply received from the server.
- * @type string
+ * @var string
*/
protected $last_reply = '';
* Perform SMTP authentication.
* Must be run after hello().
* @see hello()
- * @param string $username The user name
- * @param string $password The password
- * @param string $authtype The auth type (PLAIN, LOGIN, NTLM, CRAM-MD5)
- * @param string $realm The auth realm for NTLM
+ * @param string $username The user name
+ * @param string $password The password
+ * @param string $authtype The auth type (PLAIN, LOGIN, NTLM, CRAM-MD5, XOAUTH2)
+ * @param string $realm The auth realm for NTLM
* @param string $workstation The auth workstation for NTLM
- * @access public
- * @return boolean True if successfully authenticated.
+ * @param null|OAuth $OAuth An optional OAuth instance (@see PHPMailerOAuth)
+ * @return bool True if successfully authenticated.* @access public
*/
public function authenticate(
$username,
$password,
$authtype = null,
$realm = '',
- $workstation = ''
+ $workstation = '',
+ $OAuth = null
) {
if (!$this->server_caps) {
$this->setError('Authentication is not allowed before HELO/EHLO');
{
$this->server_caps = array();
$lines = explode("\n", $this->last_reply);
+
foreach ($lines as $n => $s) {
+ //First 4 chars contain response code followed by - or space
$s = trim(substr($s, 4));
- if (!$s) {
+ if (empty($s)) {
continue;
}
$fields = explode(' ', $s);
$fields = $fields[0];
} else {
$name = array_shift($fields);
- if ($name == 'SIZE') {
- $fields = ($fields) ? $fields[0] : 0;
+ switch ($name) {
+ case 'SIZE':
+ $fields = ($fields ? $fields[0] : 0);
+ break;
+ case 'AUTH':
+ if (!is_array($fields)) {
+ $fields = array();
+ }
+ break;
+ default:
+ $fields = true;
}
}
- $this->server_caps[$name] = ($fields ? $fields : true);
+ $this->server_caps[$name] = $fields;
}
}
}
* Sets the TO argument to $toaddr.
* Returns true if the recipient was accepted false if it was rejected.
* Implements from rfc 821: RCPT <SP> TO:<forward-path> <CRLF>
- * @param string $toaddr The address the message is being sent to
+ * @param string $address The address the message is being sent to
* @access public
* @return boolean
*/
- public function recipient($toaddr)
+ public function recipient($address)
{
return $this->sendCommand(
'RCPT TO',
- 'RCPT TO:<' . $toaddr . '>',
+ 'RCPT TO:<' . $address . '>',
array(250, 251)
);
}
/**
* Send a command to an SMTP server and check its return code.
- * @param string $command The command name - not sent to the server
+ * @param string $command The command name - not sent to the server
* @param string $commandstring The actual command to send
- * @param integer|array $expect One or more expected integer success codes
+ * @param integer|array $expect One or more expected integer success codes
* @access protected
* @return boolean True on success.
*/
$this->setError("Called $command without being connected");
return false;
}
+ //Reject line breaks in all commands
+ if (strpos($commandstring, "\n") !== false or strpos($commandstring, "\r") !== false) {
+ $this->setError("Command '$command' contained line breaks");
+ return false;
+ }
$this->client_send($commandstring . self::CRLF);
$this->last_reply = $this->get_lines();
}
while (is_resource($this->smtp_conn) && !feof($this->smtp_conn)) {
$str = @fgets($this->smtp_conn, 515);
- $this->edebug("SMTP -> get_lines(): \$data was \"$data\"", self::DEBUG_LOWLEVEL);
- $this->edebug("SMTP -> get_lines(): \$str is \"$str\"", self::DEBUG_LOWLEVEL);
- $data .= $str;
$this->edebug("SMTP -> get_lines(): \$data is \"$data\"", self::DEBUG_LOWLEVEL);
+ $this->edebug("SMTP -> get_lines(): \$str is \"$str\"", self::DEBUG_LOWLEVEL);
+ $data .= $str;
// If 4th character is a space, we are done reading, break the loop, micro-optimisation over strlen
if ((isset($str[3]) and $str[3] == ' ')) {
break;
'limits' => '',
);
+ /**
+ * SQL WHERE clause.
+ *
+ * Stored after the 'comments_clauses' filter is run on the compiled WHERE sub-clauses.
+ *
+ * @since 4.4.2
+ * @access protected
+ * @var string
+ */
+ protected $filtered_where_clause;
+
/**
* Date query container
*
foreach ( $post_fields as $field_name => $field_value ) {
// $field_value may be an array.
$esses = array_fill( 0, count( (array) $field_value ), '%s' );
- $this->sql_clauses['where']['post_fields'] = $wpdb->prepare( " {$wpdb->posts}.{$field_name} IN (" . implode( ',', $esses ) . ')', $field_value );
+ $this->sql_clauses['where'][ $field_name ] = $wpdb->prepare( " {$wpdb->posts}.{$field_name} IN (" . implode( ',', $esses ) . ')', $field_value );
}
}
$limits = isset( $clauses[ 'limits' ] ) ? $clauses[ 'limits' ] : '';
$groupby = isset( $clauses[ 'groupby' ] ) ? $clauses[ 'groupby' ] : '';
+ $this->filtered_where_clause = $where;
+
if ( $where ) {
$where = 'WHERE ' . $where;
}
0 => wp_list_pluck( $comments, 'comment_ID' ),
);
- $where_clauses = $this->sql_clauses['where'];
- unset(
- $where_clauses['parent'],
- $where_clauses['parent__in'],
- $where_clauses['parent__not_in']
- );
+ /*
+ * The WHERE clause for the descendant query is the same as for the top-level
+ * query, minus the `parent`, `parent__in`, and `parent__not_in` sub-clauses.
+ */
+ $_where = $this->filtered_where_clause;
+ $exclude_keys = array( 'parent', 'parent__in', 'parent__not_in' );
+ foreach ( $exclude_keys as $exclude_key ) {
+ if ( isset( $this->sql_clauses['where'][ $exclude_key ] ) ) {
+ $clause = $this->sql_clauses['where'][ $exclude_key ];
+
+ // Strip the clause as well as any adjacent ANDs.
+ $pattern = '|(?:AND)?\s*' . $clause . '\s*(?:AND)?|';
+ $_where_parts = preg_split( $pattern, $_where );
+
+ // Remove empties.
+ $_where_parts = array_filter( array_map( 'trim', $_where_parts ) );
+
+ // Reassemble with an AND.
+ $_where = implode( ' AND ', $_where_parts );
+ }
+ }
// Fetch an entire level of the descendant tree at a time.
$level = 0;
break;
}
- $where = 'WHERE ' . implode( ' AND ', $where_clauses ) . ' AND comment_parent IN (' . implode( ',', array_map( 'intval', $parent_ids ) ) . ')';
+ $where = 'WHERE ' . $_where . ' AND comment_parent IN (' . implode( ',', array_map( 'intval', $parent_ids ) ) . ')';
$comment_ids = $wpdb->get_col( "{$this->sql_clauses['select']} {$this->sql_clauses['from']} {$where} {$this->sql_clauses['groupby']} ORDER BY comment_date_gmt ASC, comment_ID ASC" );
$level++;
*/
public function get_return_url() {
$referer = wp_get_referer();
+ $excluded_referer_basenames = array( 'customize.php', 'wp-login.php' );
+
if ( $this->return_url ) {
$return_url = $this->return_url;
- } else if ( $referer && 'customize.php' !== basename( parse_url( $referer, PHP_URL_PATH ) ) ) {
+ } else if ( $referer && ! in_array( basename( parse_url( $referer, PHP_URL_PATH ) ), $excluded_referer_basenames, true ) ) {
$return_url = $referer;
} else if ( $this->preview_url ) {
$return_url = $this->preview_url;
} elseif ( ! file_exists( $this->theme_root . '/' . $theme_file ) ) {
$this->headers['Name'] = $this->stylesheet;
if ( ! file_exists( $this->theme_root . '/' . $this->stylesheet ) )
- $this->errors = new WP_Error( 'theme_not_found', sprintf( __( 'The theme directory "%s" does not exist.' ), $this->stylesheet ) );
+ $this->errors = new WP_Error( 'theme_not_found', sprintf( __( 'The theme directory "%s" does not exist.' ), esc_html( $this->stylesheet ) ) );
else
$this->errors = new WP_Error( 'theme_no_stylesheet', __( 'Stylesheet is missing.' ) );
$this->template = $this->stylesheet;
$theme_root_template = $directories[ $this->template ]['theme_root'];
} else {
// Parent theme is missing.
- $this->errors = new WP_Error( 'theme_no_parent', sprintf( __( 'The parent theme is missing. Please install the "%s" parent theme.' ), $this->template ) );
+ $this->errors = new WP_Error( 'theme_no_parent', sprintf( __( 'The parent theme is missing. Please install the "%s" parent theme.' ), esc_html( $this->template ) ) );
$this->cache_add( 'theme', array( 'headers' => $this->headers, 'errors' => $this->errors, 'stylesheet' => $this->stylesheet, 'template' => $this->template ) );
$this->parent = new WP_Theme( $this->template, $this->theme_root, $this );
return;
// If we are a parent, then there is a problem. Only two generations allowed! Cancel things out.
if ( $_child instanceof WP_Theme && $_child->template == $this->stylesheet ) {
$_child->parent = null;
- $_child->errors = new WP_Error( 'theme_parent_invalid', sprintf( __( 'The "%s" theme is not a valid parent theme.' ), $_child->template ) );
+ $_child->errors = new WP_Error( 'theme_parent_invalid', sprintf( __( 'The "%s" theme is not a valid parent theme.' ), esc_html( $_child->template ) ) );
$_child->cache_add( 'theme', array( 'headers' => $_child->headers, 'errors' => $_child->errors, 'stylesheet' => $_child->stylesheet, 'template' => $_child->template ) );
// The two themes actually reference each other with the Template header.
if ( $_child->stylesheet == $this->template ) {
- $this->errors = new WP_Error( 'theme_parent_invalid', sprintf( __( 'The "%s" theme is not a valid parent theme.' ), $this->template ) );
+ $this->errors = new WP_Error( 'theme_parent_invalid', sprintf( __( 'The "%s" theme is not a valid parent theme.' ), esc_html( $this->template ) ) );
$this->cache_add( 'theme', array( 'headers' => $this->headers, 'errors' => $this->errors, 'stylesheet' => $this->stylesheet, 'template' => $this->template ) );
}
return;
$top_level_elements = array();
$children_elements = array();
foreach ( $elements as $e) {
- if ( 0 == $e->$parent_field )
+ if ( empty( $e->$parent_field ) )
$top_level_elements[] = $e;
else
$children_elements[ $e->$parent_field ][] = $e;
}
if ( ! empty( $dateCreated ) ) {
- $post_data['post_date'] = iso8601_to_datetime( $dateCreated );
- $post_data['post_date_gmt'] = get_gmt_from_date( $post_data['post_date'] );
+ $post_data['post_date'] = get_date_from_gmt( iso8601_to_datetime( $dateCreated ) );
+ $post_data['post_date_gmt'] = iso8601_to_datetime( $dateCreated, 'GMT' );
}
if ( ! isset( $post_data['ID'] ) )
if ( !empty( $content_struct['date_created_gmt'] ) ) {
// We know this is supposed to be GMT, so we're going to slap that Z on there by force
$dateCreated = rtrim( $content_struct['date_created_gmt']->getIso(), 'Z' ) . 'Z';
- $comment_date = iso8601_to_datetime( $dateCreated );
- $comment_date_gmt = get_gmt_from_date( $comment_date );
+ $comment_date = get_date_from_gmt(iso8601_to_datetime($dateCreated));
+ $comment_date_gmt = iso8601_to_datetime($dateCreated, 'GMT');
}
if ( isset($content_struct['content']) )
$dateCreated = $content_struct['dateCreated']->getIso();
if ( !empty( $dateCreated ) ) {
- $post_date = iso8601_to_datetime( $dateCreated );
- $post_date_gmt = get_gmt_from_date( $post_date );
+ $post_date = get_date_from_gmt(iso8601_to_datetime($dateCreated));
+ $post_date_gmt = iso8601_to_datetime($dateCreated, 'GMT');
} else {
$post_date = '';
$post_date_gmt = '';
$dateCreated = $content_struct['dateCreated']->getIso();
if ( !empty( $dateCreated ) ) {
- $post_date = iso8601_to_datetime( $dateCreated );
- $post_date_gmt = get_gmt_from_date( $post_date, 'GMT' );
+ $post_date = get_date_from_gmt(iso8601_to_datetime($dateCreated));
+ $post_date_gmt = iso8601_to_datetime($dateCreated, 'GMT');
} else {
$post_date = $postdata['post_date'];
$post_date_gmt = $postdata['post_date_gmt'];
* @access public
* @var array
*/
- public $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage', 'post_type', 'title', 'embed' );
+ public $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage', 'post_type', 'embed' );
/**
* Private query variables.
* @since 2.0.0
* @var array
*/
- public $private_query_vars = array( 'offset', 'posts_per_page', 'posts_per_archive_page', 'showposts', 'nopaging', 'post_type', 'post_status', 'category__in', 'category__not_in', 'category__and', 'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and', 'tag_id', 'post_mime_type', 'perm', 'comments_per_page', 'post__in', 'post__not_in', 'post_parent', 'post_parent__in', 'post_parent__not_in' );
+ public $private_query_vars = array( 'offset', 'posts_per_page', 'posts_per_archive_page', 'showposts', 'nopaging', 'post_type', 'post_status', 'category__in', 'category__not_in', 'category__and', 'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and', 'tag_id', 'post_mime_type', 'perm', 'comments_per_page', 'post__in', 'post__not_in', 'post_parent', 'post_parent__in', 'post_parent__not_in', 'title' );
/**
* Extra query variables set by the user.
$success = true;
if ( is_singular() ) {
- $p = clone $wp_query->post;
+ $p = false;
+
+ if ( $wp_query->post instanceof WP_Post ) {
+ $p = clone $wp_query->post;
+ }
+
// Only set X-Pingback for single posts that allow pings.
if ( $p && pings_open( $p ) ) {
@header( 'X-Pingback: ' . get_bloginfo( 'pingback_url' ) );
}
}
- if ( $cpage ) {
+ if ( $cpage && get_option( 'page_comments' ) ) {
if ( $wp_rewrite->using_permalinks() ) {
if ( $cpage ) {
$link = trailingslashit( $link ) . $wp_rewrite->comments_pagination_base . '-' . $cpage;
'order' => 'ASC',
'status' => 'approve',
'post_id' => $post->ID,
- 'hierarchical' => 'threaded',
'no_found_rows' => false,
'update_comment_meta_cache' => false, // We lazy-load comment meta for performance.
);
+ if ( get_option('thread_comments') ) {
+ $comment_args['hierarchical'] = 'threaded';
+ } else {
+ $comment_args['hierarchical'] = false;
+ }
+
if ( $user_ID ) {
$comment_args['include_unapproved'] = array( $user_ID );
} elseif ( ! empty( $comment_author_email ) ) {
} else {
// If fetching the first page of 'newest', we need a top-level comment count.
$top_level_query = new WP_Comment_Query();
- $top_level_count = $top_level_query->query( array(
+ $top_level_args = array(
'count' => true,
'orderby' => false,
'post_id' => $post->ID,
- 'parent' => 0,
- ) );
+ 'status' => 'approve',
+ );
+
+ if ( $comment_args['hierarchical'] ) {
+ $top_level_args['parent'] = 0;
+ }
+
+ if ( isset( $comment_args['include_unapproved'] ) ) {
+ $top_level_args['include_unapproved'] = $comment_args['include_unapproved'];
+ }
+
+ $top_level_count = $top_level_query->query( $top_level_args );
$comment_args['offset'] = ( ceil( $top_level_count / $per_page ) - 1 ) * $per_page;
}
$_comments = $comment_query->comments;
// Trees must be flattened before they're passed to the walker.
- $comments_flat = array();
- foreach ( $_comments as $_comment ) {
- $comments_flat = array_merge( $comments_flat, array( $_comment ), $_comment->get_children( array(
- 'format' => 'flat',
- 'status' => $comment_args['status'],
- 'orderby' => $comment_args['orderby']
- ) ) );
+ if ( $comment_args['hierarchical'] ) {
+ $comments_flat = array();
+ foreach ( $_comments as $_comment ) {
+ $comments_flat[] = $_comment;
+ $comment_children = $_comment->get_children( array(
+ 'format' => 'flat',
+ 'status' => $comment_args['status'],
+ 'orderby' => $comment_args['orderby']
+ ) );
+
+ foreach ( $comment_children as $comment_child ) {
+ $comments_flat[] = $comment_child;
+ }
+ }
+ } else {
+ $comments_flat = $_comments;
}
/**
$_comments = $comments;
}
} else {
- if ( empty($wp_query->comments) )
- return;
- if ( 'all' != $r['type'] ) {
- if ( empty($wp_query->comments_by_type) )
- $wp_query->comments_by_type = separate_comments($wp_query->comments);
- if ( empty($wp_query->comments_by_type[$r['type']]) )
- return;
- $_comments = $wp_query->comments_by_type[$r['type']];
- } else {
- $_comments = $wp_query->comments;
- }
+ /*
+ * If 'page' or 'per_page' has been passed, and does not match what's in $wp_query,
+ * perform a separate comment query and allow Walker_Comment to paginate.
+ */
+ if ( $r['page'] || $r['per_page'] ) {
+ $current_cpage = get_query_var( 'cpage' );
+ if ( ! $current_cpage ) {
+ $current_cpage = 'newest' === get_option( 'default_comments_page' ) ? 1 : $wp_query->max_num_comment_pages;
+ }
+
+ $current_per_page = get_query_var( 'comments_per_page' );
+ if ( $r['page'] != $current_cpage || $r['per_page'] != $current_per_page ) {
+
+ $comments = get_comments( array(
+ 'post_id' => get_the_ID(),
+ 'orderby' => 'comment_date_gmt',
+ 'order' => 'ASC',
+ 'status' => 'all',
+ ) );
+
+ if ( 'all' != $r['type'] ) {
+ $comments_by_type = separate_comments( $comments );
+ if ( empty( $comments_by_type[ $r['type'] ] ) ) {
+ return;
+ }
- // Pagination is already handled by `WP_Comment_Query`, so we tell Walker not to bother.
- if ( $wp_query->max_num_comment_pages ) {
- $default_comments_page = get_option( 'default_comments_page' );
- $cpage = get_query_var( 'cpage' );
- if ( 'newest' === $default_comments_page ) {
- $r['cpage'] = $cpage;
+ $_comments = $comments_by_type[ $r['type'] ];
+ } else {
+ $_comments = $comments;
+ }
+ }
- // When first page shows oldest comments, post permalink is the same as the comment permalink.
- } elseif ( $cpage == 1 ) {
- $r['cpage'] = '';
+ // Otherwise, fall back on the comments from `$wp_query->comments`.
+ } else {
+ if ( empty($wp_query->comments) )
+ return;
+ if ( 'all' != $r['type'] ) {
+ if ( empty($wp_query->comments_by_type) )
+ $wp_query->comments_by_type = separate_comments($wp_query->comments);
+ if ( empty($wp_query->comments_by_type[$r['type']]) )
+ return;
+ $_comments = $wp_query->comments_by_type[$r['type']];
} else {
- $r['cpage'] = $cpage;
+ $_comments = $wp_query->comments;
}
- $r['page'] = 0;
- $r['per_page'] = 0;
+ if ( $wp_query->max_num_comment_pages ) {
+ $default_comments_page = get_option( 'default_comments_page' );
+ $cpage = get_query_var( 'cpage' );
+ if ( 'newest' === $default_comments_page ) {
+ $r['cpage'] = $cpage;
+
+ /*
+ * When first page shows oldest comments, post permalink is the same as
+ * the comment permalink.
+ */
+ } elseif ( $cpage == 1 ) {
+ $r['cpage'] = '';
+ } else {
+ $r['cpage'] = $cpage;
+ }
+
+ $r['page'] = 0;
+ $r['per_page'] = 0;
+ }
}
}
}
// Only send notifications for approved comments.
- if ( ! isset( $comment->comment_approved ) || 'spam' === $comment->comment_approved || ! $comment->comment_approved ) {
+ if ( ! isset( $comment->comment_approved ) || '1' != $comment->comment_approved ) {
return false;
}
$comment_author = $user->display_name;
$comment_author_email = $user->user_email;
$comment_author_url = $user->user_url;
- $user_id = $user->ID;
+ $user_ID = $user->ID;
if ( current_user_can( 'unfiltered_html' ) ) {
if ( ! isset( $comment_data['_wp_unfiltered_html_comment'] )
|| ! wp_verify_nonce( $comment_data['_wp_unfiltered_html_comment'], 'unfiltered-html-comment_' . $comment_post_ID )
'comment_content',
'comment_type',
'comment_parent',
- 'user_id'
+ 'user_ID'
);
$comment_id = wp_new_comment( wp_slash( $commentdata ) );
}
?>
- <?php if ( count( $this->controls ) > 1 ) : ?>
+ <?php if ( count( $this->controls ) > 0 ) : ?>
<button type="button" class="button change-theme" tabindex="0"><?php _ex( 'Change', 'theme' ); ?></button>
<?php endif; ?>
</h3>
$image_size = 'full'; // Fallback.
$meta = wp_get_attachment_metadata( $thumbnail_id );
- if ( is_array( $meta ) ) {
+ if ( ! empty( $meta['sizes'] ) ) {
foreach ( $meta['sizes'] as $size => $data ) {
if ( $data['width'] / $data['height'] > $aspect_ratio ) {
$aspect_ratio = $data['width'] / $data['height'];
function wp_oembed_add_discovery_links() {
$output = '';
- if ( is_singular() ) {
+ if ( is_singular() && ! is_front_page() ) {
$output .= '<link rel="alternate" type="application/json+oembed" href="' . esc_url( get_oembed_endpoint_url( get_permalink() ) ) . '" />' . "\n";
if ( class_exists( 'SimpleXMLElement' ) ) {
// Look for shortcodes and HTML elements.
- preg_match_all( '@\[/?([^<>&/\[\]\x00-\x20]++)@', $text, $matches );
+ preg_match_all( '@\[/?([^<>&/\[\]\x00-\x20=]++)@', $text, $matches );
$tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] );
$found_shortcodes = ! empty( $tagnames );
$shortcode_regex = $found_shortcodes ? _get_wptexturize_shortcode_regex( $tagnames ) : '';
continue;
} else {
// This is an HTML element delimiter.
+
+ // Replace each & with & unless it already looks like an entity.
+ $curl = preg_replace( '/&(?!#(?:\d+|x[a-f0-9]+);|[a-z1-4]{1,8};)/i', '&', $curl );
+
_wptexturize_pushpop_element( $curl, $no_texturize_tags_stack, $no_texturize_tags );
}
* @return The value with the callback applied to all non-arrays and non-objects inside it.
*/
function map_deep( $value, $callback ) {
- if ( is_array( $value ) || is_object( $value ) ) {
- foreach ( $value as &$item ) {
- $item = map_deep( $item, $callback );
+ if ( is_array( $value ) ) {
+ foreach ( $value as $index => $item ) {
+ $value[ $index ] = map_deep( $item, $callback );
+ }
+ } elseif ( is_object( $value ) ) {
+ $object_vars = get_object_vars( $value );
+ foreach ( $object_vars as $property_name => $property_value ) {
+ $value->$property_name = map_deep( $property_value, $callback );
}
- return $value;
} else {
- return call_user_func( $callback, $value );
+ $value = call_user_func( $callback, $value );
}
+
+ return $value;
}
/**
*
* @param string The emoji base URL.
*/
- 'baseUrl' => apply_filters( 'emoji_url', set_url_scheme( '//s.w.org/images/core/emoji/72x72/' ) ),
+ 'baseUrl' => apply_filters( 'emoji_url', 'https://s.w.org/images/core/emoji/72x72/' ),
/**
* Filter the extension of the emoji files.
?>
<script type="text/javascript">
window._wpemojiSettings = <?php echo wp_json_encode( $settings ); ?>;
- !function(a,b,c){function d(a){var c=b.createElement("canvas"),d=c.getContext&&c.getContext("2d");return d&&d.fillText?(d.textBaseline="top",d.font="600 32px Arial","flag"===a?(d.fillText(String.fromCharCode(55356,56806,55356,56826),0,0),c.toDataURL().length>3e3):("simple"===a?d.fillText(String.fromCharCode(55357,56835),0,0):d.fillText(String.fromCharCode(55356,57135),0,0),0!==d.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g;c.supports={simple:d("simple"),flag:d("flag"),unicode8:d("unicode8")},c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.simple&&c.supports.flag&&c.supports.unicode8||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
+ !function(a,b,c){function d(a){var c,d=b.createElement("canvas"),e=d.getContext&&d.getContext("2d"),f=String.fromCharCode;return e&&e.fillText?(e.textBaseline="top",e.font="600 32px Arial","flag"===a?(e.fillText(f(55356,56806,55356,56826),0,0),d.toDataURL().length>3e3):"diversity"===a?(e.fillText(f(55356,57221),0,0),c=e.getImageData(16,16,1,1).data.toString(),e.fillText(f(55356,57221,55356,57343),0,0),c!==e.getImageData(16,16,1,1).data.toString()):("simple"===a?e.fillText(f(55357,56835),0,0):e.fillText(f(55356,57135),0,0),0!==e.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g;c.supports={simple:d("simple"),flag:d("flag"),unicode8:d("unicode8"),diversity:d("diversity")},c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.simple&&c.supports.flag&&c.supports.unicode8&&c.supports.diversity||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
</script>
<?php
}
$text = wp_encode_emoji( $text );
/** This filter is documented in wp-includes/formatting.php */
- $cdn_url = apply_filters( 'emoji_url', set_url_scheme( '//s.w.org/images/core/emoji/72x72/' ) );
+ $cdn_url = apply_filters( 'emoji_url', 'https://s.w.org/images/core/emoji/72x72/' );
/** This filter is documented in wp-includes/formatting.php */
$ext = apply_filters( 'emoji_ext', '.png' );
$short_url = substr( $short_url, 0, $length - 3 ) . '…';
}
return $short_url;
-}
\ No newline at end of file
+}
+
+/**
+ * 4.4.x hotfix for hidden configure links on admin dashboard.
+ *
+ * @ignore
+ */
+function _wp_441_dashboard_display_configure_links_css() {
+ echo '<style type="text/css">
+ .postbox .button-link .edit-box { display: none; }
+ .wp-admin .edit-box { display: block; opacity: 0; }
+ .hndle:hover .edit-box, .edit-box:focus { opacity: 1; }
+ #dashboard-widgets h2 a { text-decoration: underline; }
+ #dashboard-widgets .hndle .postbox-title-action { float: right; line-height: 1.2; }
+ </style>';
+}
+add_action( 'admin_print_styles-index.php', '_wp_441_dashboard_display_configure_links_css' );
\ No newline at end of file
function wp_maybe_decline_date( $date ) {
global $wp_locale;
+ // i18n functions are not available in SHORTINIT mode
+ if ( ! function_exists( '_x' ) ) {
+ return $date;
+ }
+
/* translators: If months in your language require a genitive case,
* translate this to 'on'. Do not translate into your own language.
*/
$login_form_bottom = apply_filters( 'login_form_bottom', '', $args );
$form = '
- <form name="' . $args['form_id'] . '" id="' . $args['form_id'] . '" action="' . esc_url( wp_login_url() ) . '" method="post">
+ <form name="' . $args['form_id'] . '" id="' . $args['form_id'] . '" action="' . esc_url( site_url( 'wp-login.php', 'login_post' ) ) . '" method="post">
' . $login_form_top . '
<p class="login-username">
<label for="' . esc_attr( $args['id_username'] ) . '">' . esc_html( $args['label_username'] ) . '</label>
/* translators: %s: search phrase */
$title['title'] = sprintf( __( 'Search Results for “%s”' ), get_search_query() );
- // If on the home or front page, use the site title.
- } elseif ( is_home() && is_front_page() ) {
+ // If on the front page, use the site title.
+ } elseif ( is_front_page() ) {
$title['title'] = get_bloginfo( 'name', 'display' );
// If on a post type archive, use the post type archive title.
$title['title'] = single_term_title( '', false );
/*
- * If we're on the blog page and that page is not the homepage or a single
- * page that is designated as the homepage, use the container page's title.
+ * If we're on the blog page that is not the homepage or
+ * a single post of any post type, use the post title.
*/
- } elseif ( ( is_home() && ! is_front_page() ) || ( ! is_home() && is_front_page() ) ) {
- $title['title'] = single_post_title( '', false );
-
- // If on a single post of any post type, use the post title.
- } elseif ( is_singular() ) {
+ } elseif ( is_home() || is_singular() ) {
$title['title'] = single_post_title( '', false );
// If on a category or tag archive, use the term title.
}
// Append the description or site title to give context.
- if ( is_home() && is_front_page() ) {
+ if ( is_front_page() ) {
$title['tagline'] = get_bloginfo( 'description', 'display' );
} else {
$title['site'] = get_bloginfo( 'name', 'display' );
}
if ( $ip ) {
$parts = array_map( 'intval', explode( '.', $ip ) );
- if ( 127 === $parts[0] || 10 === $parts[0]
+ if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0]
|| ( 172 === $parts[0] && 16 <= $parts[1] && 31 >= $parts[1] )
|| ( 192 === $parts[0] && 168 === $parts[1] )
) {
};
$notice = $( '#local-storage-notice' )
- .insertAfter( $( '.wrap' ).children( ':header' ).first() )
+ .insertAfter( $( '.wrap h1, .wrap h2' ).first() )
.addClass( 'notice-warning' )
.show();
-window.autosave=function(){return!0},function(a,b){function c(){function c(b){var c,d,e,f=(new Date).getTime(),g=[],h="undefined"!=typeof tinymce&&tinymce.get("content");return h&&!h.isHidden()&&f-3e3>j&&(h.save(),j=f),e={post_id:a("#post_ID").val()||0,post_type:a("#post_type").val()||"",post_author:a("#post_author").val()||"",post_title:a("#title").val()||"",content:a("#content").val()||"",excerpt:a("#excerpt").val()||""},"local"===b?e:(a('input[id^="in-category-"]:checked').each(function(){g.push(this.value)}),e.catslist=g.join(","),(c=a("#post_name").val())&&(e.post_name=c),(d=a("#parent_id").val())&&(e.parent_id=d),a("#comment_status").prop("checked")&&(e.comment_status="open"),a("#ping_status").prop("checked")&&(e.ping_status="open"),"1"===a("#auto_draft").val()&&(e.auto_draft="1"),e)}function d(b){return"object"==typeof b?(b.post_title||"")+"::"+(b.content||"")+"::"+(b.excerpt||""):(a("#title").val()||"")+"::"+(a("#content").val()||"")+"::"+(a("#excerpt").val()||"")}function e(){k.trigger("autosave-disable-buttons"),setTimeout(f,5e3)}function f(){k.trigger("autosave-enable-buttons")}function g(){function e(){var a=Math.random().toString(),c=!1;try{b.sessionStorage.setItem("wp-test",a),c=b.sessionStorage.getItem("wp-test")===a,b.sessionStorage.removeItem("wp-test")}catch(d){}return w=c,c}function f(){var a=!1;return w&&u&&(a=sessionStorage.getItem("wp-autosave-"+u),a=a?JSON.parse(a):{}),a}function g(a){var b;return w&&u?(b="wp-autosave-"+u,sessionStorage.setItem(b,JSON.stringify(a)),null!==sessionStorage.getItem(b)):!1}function h(){var a=f();return a&&v?a["post_"+v]||!1:!1}function j(a){var b=f();if(!b||!v)return!1;if(a)b["post_"+v]=a;else{if(!b.hasOwnProperty("post_"+v))return!1;delete b["post_"+v]}return g(b)}function l(){z=!0}function m(){z=!1}function n(b){var e,f,g=!1;return z||!w?!1:(b?(e=h()||{},a.extend(e,b)):e=c("local"),f=d(e),"undefined"==typeof y&&(y=i),f===y?!1:(e.save_time=(new Date).getTime(),e.status=a("#post_status").val()||"",g=j(e),g&&(y=f),g))}function o(){v=a("#post_ID").val()||0,a("#wp-content-wrap").hasClass("tmce-active")?k.on("tinymce-editor-init.autosave",function(){b.setTimeout(function(){q()},1500)}):q(),x=b.setInterval(n,15e3),a("form#post").on("submit.autosave-local",function(){var c="undefined"!=typeof tinymce&&tinymce.get("content"),d=a("#post_ID").val()||0;c&&!c.isHidden()?c.on("submit",function(){n({post_title:a("#title").val()||"",content:a("#content").val()||"",excerpt:a("#excerpt").val()||""})}):n({post_title:a("#title").val()||"",content:a("#content").val()||"",excerpt:a("#excerpt").val()||""});var e="https:"===b.location.protocol;wpCookies.set("wp-saving-post",d+"-check",86400,!1,!1,e)})}function p(a,b){function c(a){return a.toString().replace(/[\x20\t\r\n\f]+/g,"")}return c(a||"")===c(b||"")}function q(){var b,c,d,e,f=h(),g=wpCookies.get("wp-saving-post");return g===v+"-saved"?(wpCookies.remove("wp-saving-post"),void j(!1)):void(f&&(a("#has-newer-autosave").length||(b=a("#content").val()||"",c=a("#title").val()||"",d=a("#excerpt").val()||"",p(b,f.content)&&p(c,f.post_title)&&p(d,f.excerpt)||(s=f,t={content:b,post_title:c,excerpt:d},e=a("#local-storage-notice").insertAfter(a(".wrap").children(":header").first()).addClass("notice-warning").show(),e.on("click.autosave-local",function(b){var c=a(b.target);c.hasClass("restore-backup")?(r(s),c.parent().hide(),a(this).find("p.undo-restore").show(),e.removeClass("notice-warning").addClass("notice-success")):c.hasClass("undo-restore-backup")&&(r(t),c.parent().hide(),a(this).find("p.local-restore").show(),e.removeClass("notice-success").addClass("notice-warning")),b.preventDefault()})))))}function r(b){var c;return b?(y=d(b),a("#title").val()!==b.post_title&&a("#title").focus().val(b.post_title||""),a("#excerpt").val(b.excerpt||""),c="undefined"!=typeof tinymce&&tinymce.get("content"),c&&!c.isHidden()&&"undefined"!=typeof switchEditors?(c.undoManager.add(),c.setContent(b.content?switchEditors.wpautop(b.content):"")):(a("#content-html").click(),a("#content").val(b.content)),!0):!1}var s,t,u,v,w,x,y,z=!1;return u="undefined"!=typeof b.autosaveL10n&&b.autosaveL10n.blog_id,e()&&u&&(a("#content").length||a("#excerpt").length)&&k.ready(o),{hasStorage:w,getSavedPostData:h,save:n,suspend:l,resume:m}}function h(){function g(){q=!0,b.clearTimeout(r),r=b.setTimeout(function(){q=!1},1e4)}function h(){v=!0}function j(){v=!1}function l(b){p(),q=!1,t=s,s="",k.trigger("after-autosave",[b]),f(),b.success&&a("#auto_draft").val("")}function m(){u=0,wp.heartbeat.connectNow()}function n(){return d()!==i}function o(){var f,h;return v||q||!b.autosave()?!1:(new Date).getTime()<u?!1:(f=c(),h=d(f),"undefined"==typeof t&&(t=i),h===t?!1:(s=h,g(),e(),k.trigger("wpcountwords",[f.content]).trigger("before-autosave",[f]),f._wpnonce=a("#_wpnonce").val()||"",f))}function p(){u=(new Date).getTime()+1e3*autosaveL10n.autosaveInterval||6e4}var q,r,s,t,u=0,v=!1;return k.on("heartbeat-send.autosave",function(a,b){var c=o();c&&(b.wp_autosave=c)}).on("heartbeat-tick.autosave",function(a,b){b.wp_autosave&&l(b.wp_autosave)}).on("heartbeat-connection-lost.autosave",function(b,c,d){if("timeout"===c||603===d){var f=a("#lost-connection-notice");wp.autosave.local.hasStorage||f.find(".hide-if-no-sessionstorage").hide(),f.show(),e()}}).on("heartbeat-connection-restored.autosave",function(){a("#lost-connection-notice").hide(),f()}).ready(function(){p()}),{tempBlockSave:g,triggerSave:m,postChanged:n,suspend:h,resume:j}}var i,j=0,k=a(document);return k.on("tinymce-editor-init.autosave",function(a,c){"content"===c.id&&b.setTimeout(function(){c.save(),i=d()},1e3)}).ready(function(){i=d()}),{getPostData:c,getCompareString:d,disableButtons:e,enableButtons:f,local:g(),server:h()}}b.wp=b.wp||{},b.wp.autosave=c()}(jQuery,window);
\ No newline at end of file
+window.autosave=function(){return!0},function(a,b){function c(){function c(b){var c,d,e,f=(new Date).getTime(),g=[],h="undefined"!=typeof tinymce&&tinymce.get("content");return h&&!h.isHidden()&&f-3e3>j&&(h.save(),j=f),e={post_id:a("#post_ID").val()||0,post_type:a("#post_type").val()||"",post_author:a("#post_author").val()||"",post_title:a("#title").val()||"",content:a("#content").val()||"",excerpt:a("#excerpt").val()||""},"local"===b?e:(a('input[id^="in-category-"]:checked').each(function(){g.push(this.value)}),e.catslist=g.join(","),(c=a("#post_name").val())&&(e.post_name=c),(d=a("#parent_id").val())&&(e.parent_id=d),a("#comment_status").prop("checked")&&(e.comment_status="open"),a("#ping_status").prop("checked")&&(e.ping_status="open"),"1"===a("#auto_draft").val()&&(e.auto_draft="1"),e)}function d(b){return"object"==typeof b?(b.post_title||"")+"::"+(b.content||"")+"::"+(b.excerpt||""):(a("#title").val()||"")+"::"+(a("#content").val()||"")+"::"+(a("#excerpt").val()||"")}function e(){k.trigger("autosave-disable-buttons"),setTimeout(f,5e3)}function f(){k.trigger("autosave-enable-buttons")}function g(){function e(){var a=Math.random().toString(),c=!1;try{b.sessionStorage.setItem("wp-test",a),c=b.sessionStorage.getItem("wp-test")===a,b.sessionStorage.removeItem("wp-test")}catch(d){}return w=c,c}function f(){var a=!1;return w&&u&&(a=sessionStorage.getItem("wp-autosave-"+u),a=a?JSON.parse(a):{}),a}function g(a){var b;return w&&u?(b="wp-autosave-"+u,sessionStorage.setItem(b,JSON.stringify(a)),null!==sessionStorage.getItem(b)):!1}function h(){var a=f();return a&&v?a["post_"+v]||!1:!1}function j(a){var b=f();if(!b||!v)return!1;if(a)b["post_"+v]=a;else{if(!b.hasOwnProperty("post_"+v))return!1;delete b["post_"+v]}return g(b)}function l(){z=!0}function m(){z=!1}function n(b){var e,f,g=!1;return z||!w?!1:(b?(e=h()||{},a.extend(e,b)):e=c("local"),f=d(e),"undefined"==typeof y&&(y=i),f===y?!1:(e.save_time=(new Date).getTime(),e.status=a("#post_status").val()||"",g=j(e),g&&(y=f),g))}function o(){v=a("#post_ID").val()||0,a("#wp-content-wrap").hasClass("tmce-active")?k.on("tinymce-editor-init.autosave",function(){b.setTimeout(function(){q()},1500)}):q(),x=b.setInterval(n,15e3),a("form#post").on("submit.autosave-local",function(){var c="undefined"!=typeof tinymce&&tinymce.get("content"),d=a("#post_ID").val()||0;c&&!c.isHidden()?c.on("submit",function(){n({post_title:a("#title").val()||"",content:a("#content").val()||"",excerpt:a("#excerpt").val()||""})}):n({post_title:a("#title").val()||"",content:a("#content").val()||"",excerpt:a("#excerpt").val()||""});var e="https:"===b.location.protocol;wpCookies.set("wp-saving-post",d+"-check",86400,!1,!1,e)})}function p(a,b){function c(a){return a.toString().replace(/[\x20\t\r\n\f]+/g,"")}return c(a||"")===c(b||"")}function q(){var b,c,d,e,f=h(),g=wpCookies.get("wp-saving-post");return g===v+"-saved"?(wpCookies.remove("wp-saving-post"),void j(!1)):void(f&&(a("#has-newer-autosave").length||(b=a("#content").val()||"",c=a("#title").val()||"",d=a("#excerpt").val()||"",p(b,f.content)&&p(c,f.post_title)&&p(d,f.excerpt)||(s=f,t={content:b,post_title:c,excerpt:d},e=a("#local-storage-notice").insertAfter(a(".wrap h1, .wrap h2").first()).addClass("notice-warning").show(),e.on("click.autosave-local",function(b){var c=a(b.target);c.hasClass("restore-backup")?(r(s),c.parent().hide(),a(this).find("p.undo-restore").show(),e.removeClass("notice-warning").addClass("notice-success")):c.hasClass("undo-restore-backup")&&(r(t),c.parent().hide(),a(this).find("p.local-restore").show(),e.removeClass("notice-success").addClass("notice-warning")),b.preventDefault()})))))}function r(b){var c;return b?(y=d(b),a("#title").val()!==b.post_title&&a("#title").focus().val(b.post_title||""),a("#excerpt").val(b.excerpt||""),c="undefined"!=typeof tinymce&&tinymce.get("content"),c&&!c.isHidden()&&"undefined"!=typeof switchEditors?(c.undoManager.add(),c.setContent(b.content?switchEditors.wpautop(b.content):"")):(a("#content-html").click(),a("#content").val(b.content)),!0):!1}var s,t,u,v,w,x,y,z=!1;return u="undefined"!=typeof b.autosaveL10n&&b.autosaveL10n.blog_id,e()&&u&&(a("#content").length||a("#excerpt").length)&&k.ready(o),{hasStorage:w,getSavedPostData:h,save:n,suspend:l,resume:m}}function h(){function g(){q=!0,b.clearTimeout(r),r=b.setTimeout(function(){q=!1},1e4)}function h(){v=!0}function j(){v=!1}function l(b){p(),q=!1,t=s,s="",k.trigger("after-autosave",[b]),f(),b.success&&a("#auto_draft").val("")}function m(){u=0,wp.heartbeat.connectNow()}function n(){return d()!==i}function o(){var f,h;return v||q||!b.autosave()?!1:(new Date).getTime()<u?!1:(f=c(),h=d(f),"undefined"==typeof t&&(t=i),h===t?!1:(s=h,g(),e(),k.trigger("wpcountwords",[f.content]).trigger("before-autosave",[f]),f._wpnonce=a("#_wpnonce").val()||"",f))}function p(){u=(new Date).getTime()+1e3*autosaveL10n.autosaveInterval||6e4}var q,r,s,t,u=0,v=!1;return k.on("heartbeat-send.autosave",function(a,b){var c=o();c&&(b.wp_autosave=c)}).on("heartbeat-tick.autosave",function(a,b){b.wp_autosave&&l(b.wp_autosave)}).on("heartbeat-connection-lost.autosave",function(b,c,d){if("timeout"===c||603===d){var f=a("#lost-connection-notice");wp.autosave.local.hasStorage||f.find(".hide-if-no-sessionstorage").hide(),f.show(),e()}}).on("heartbeat-connection-restored.autosave",function(){a("#lost-connection-notice").hide(),f()}).ready(function(){p()}),{tempBlockSave:g,triggerSave:m,postChanged:n,suspend:h,resume:j}}var i,j=0,k=a(document);return k.on("tinymce-editor-init.autosave",function(a,c){"content"===c.id&&b.setTimeout(function(){c.save(),i=d()},1e3)}).ready(function(){i=d()}),{getPostData:c,getCompareString:d,disableButtons:e,enableButtons:f,local:g(),server:h()}}b.wp=b.wp||{},b.wp.autosave=c()}(jQuery,window);
\ No newline at end of file
* @returns {Object}
*/
defaultDisplaySettings: function( attachment ) {
- var settings = this._defaultDisplaySettings;
+ var settings = _.clone( this._defaultDisplaySettings );
+
if ( settings.canEmbed = this.canEmbed( attachment ) ) {
settings.link = 'embed';
+ } else if ( ! this.isImageAttachment( attachment ) && settings.link === 'none' ) {
+ settings.link = 'file';
}
+
return settings;
},
+ /**
+ * Whether an attachment is image.
+ *
+ * @since 4.4.1
+ *
+ * @param {wp.media.model.Attachment} attachment
+ * @returns {Boolean}
+ */
+ isImageAttachment: function( attachment ) {
+ // If uploading, we know the filename but not the mime type.
+ if ( attachment.get('uploading') ) {
+ return /\.(jpe?g|png|gif)$/i.test( attachment.get('filename') );
+ }
+
+ return attachment.get('type') === 'image';
+ },
+
/**
* Whether an attachment can be embedded (audio or video).
*
-!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){var d,e=wp.media.model.Selection,f=wp.media.controller.Library;d=f.extend({defaults:_.defaults({multiple:"add",filterable:"uploaded",priority:100,syncSelection:!1},f.prototype.defaults),initialize:function(){var a=this.get("collectionType");"video"===this.get("type")&&(a="video-"+a),this.set("id",a+"-library"),this.set("toolbar",a+"-add"),this.set("menu",a),this.get("library")||this.set("library",wp.media.query({type:this.get("type")})),f.prototype.initialize.apply(this,arguments)},activate:function(){var a=this.get("library"),b=this.get("editLibrary"),c=this.frame.state(this.get("collectionType")+"-edit").get("library");b&&b!==c&&a.unobserve(b),a.validator=function(a){return!!this.mirroring.get(a.cid)&&!c.get(a.cid)&&e.prototype.validator.apply(this,arguments)},a.reset(a.mirroring.models,{silent:!0}),a.observe(c),this.set("editLibrary",c),f.prototype.activate.apply(this,arguments)}}),b.exports=d},{}],2:[function(a,b,c){var d,e=wp.media.controller.Library,f=wp.media.view.l10n,g=jQuery;d=e.extend({defaults:{multiple:!1,sortable:!0,date:!1,searchable:!1,content:"browse",describe:!0,dragInfo:!0,idealColumnWidth:170,editing:!1,priority:60,SettingsView:!1,syncSelection:!1},initialize:function(){var a=this.get("collectionType");"video"===this.get("type")&&(a="video-"+a),this.set("id",a+"-edit"),this.set("toolbar",a+"-edit"),this.get("library")||this.set("library",new wp.media.model.Selection),this.get("AttachmentView")||this.set("AttachmentView",wp.media.view.Attachment.EditLibrary),e.prototype.initialize.apply(this,arguments)},activate:function(){var a=this.get("library");a.props.set("type",this.get("type")),this.get("library").observe(wp.Uploader.queue),this.frame.on("content:render:browse",this.renderSettings,this),e.prototype.activate.apply(this,arguments)},deactivate:function(){this.get("library").unobserve(wp.Uploader.queue),this.frame.off("content:render:browse",this.renderSettings,this),e.prototype.deactivate.apply(this,arguments)},renderSettings:function(a){var b=this.get("library"),c=this.get("collectionType"),d=this.get("dragInfoText"),e=this.get("SettingsView"),h={};b&&a&&(b[c]=b[c]||new Backbone.Model,h[c]=new e({controller:this,model:b[c],priority:40}),a.sidebar.set(h),d&&a.toolbar.set("dragInfo",new wp.media.View({el:g('<div class="instructions">'+d+"</div>")[0],priority:-40})),a.toolbar.set("reverse",{text:f.reverseOrder,priority:80,click:function(){b.reset(b.toArray().reverse())}}))}}),b.exports=d},{}],3:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.controller.State.extend({defaults:{id:"cropper",title:e.cropImage,toolbar:"crop",content:"crop",router:!1,canSkipCrop:!1},activate:function(){this.frame.on("content:create:crop",this.createCropContent,this),this.frame.on("close",this.removeCropper,this),this.set("selection",new Backbone.Collection(this.frame._selection.single))},deactivate:function(){this.frame.toolbar.mode("browse")},createCropContent:function(){this.cropperView=new wp.media.view.Cropper({controller:this,attachment:this.get("selection").first()}),this.cropperView.on("image-loaded",this.createCropToolbar,this),this.frame.content.set(this.cropperView)},removeCropper:function(){this.imgSelect.cancelSelection(),this.imgSelect.setOptions({remove:!0}),this.imgSelect.update(),this.cropperView.remove()},createCropToolbar:function(){var a,b;a=this.get("canSkipCrop")||!1,b={controller:this.frame,items:{insert:{style:"primary",text:e.cropImage,priority:80,requires:{library:!1,selection:!1},click:function(){var a,b=this.controller;a=b.state().get("selection").first(),a.set({cropDetails:b.state().imgSelect.getSelection()}),this.$el.text(e.cropping),this.$el.attr("disabled",!0),b.state().doCrop(a).done(function(a){b.trigger("cropped",a),b.close()}).fail(function(){b.trigger("content:error:crop")})}}}},a&&_.extend(b.items,{skip:{style:"secondary",text:e.skipCropping,priority:70,requires:{library:!1,selection:!1},click:function(){var a=this.controller.state().get("selection").first();this.controller.state().cropperView.remove(),this.controller.trigger("skippedcrop",a),this.controller.close()}}}),this.frame.toolbar.set(new wp.media.view.Toolbar(b))},doCrop:function(a){return wp.ajax.post("custom-header-crop",{nonce:a.get("nonces").edit,id:a.get("id"),cropDetails:a.get("cropDetails")})}}),b.exports=d},{}],4:[function(a,b,c){var d,e=wp.media.controller;d=e.Cropper.extend({doCrop:function(a){var b=a.get("cropDetails"),c=this.get("control");return b.dst_width=c.params.width,b.dst_height=c.params.height,wp.ajax.post("crop-image",{wp_customize:"on",nonce:a.get("nonces").edit,id:a.get("id"),context:c.id,cropDetails:b})}}),b.exports=d},{}],5:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.controller.State.extend({defaults:{id:"edit-image",title:e.editImage,menu:!1,toolbar:"edit-image",content:"edit-image",url:""},activate:function(){this.listenTo(this.frame,"toolbar:render:edit-image",this.toolbar)},deactivate:function(){this.stopListening(this.frame)},toolbar:function(){var a=this.frame,b=a.lastState(),c=b&&b.id;a.toolbar.set(new wp.media.view.Toolbar({controller:a,items:{back:{style:"primary",text:e.back,priority:20,click:function(){c?a.setState(c):a.close()}}}}))}}),b.exports=d},{}],6:[function(a,b,c){var d,e=wp.media.view.l10n,f=Backbone.$;d=wp.media.controller.State.extend({defaults:{id:"embed",title:e.insertFromUrlTitle,content:"embed",menu:"default",toolbar:"main-embed",priority:120,type:"link",url:"",metadata:{}},sensitivity:400,initialize:function(a){this.metadata=a.metadata,this.debouncedScan=_.debounce(_.bind(this.scan,this),this.sensitivity),this.props=new Backbone.Model(this.metadata||{url:""}),this.props.on("change:url",this.debouncedScan,this),this.props.on("change:url",this.refresh,this),this.on("scan",this.scanImage,this)},scan:function(){var a,b=this,c={type:"link",scanners:[]};this.props.get("url")&&this.trigger("scan",c),c.scanners.length?(a=c.scanners=f.when.apply(f,c.scanners),a.always(function(){b.get("scanners")===a&&b.set("loading",!1)})):c.scanners=null,c.loading=!!c.scanners,this.set(c)},scanImage:function(a){var b=this.frame,c=this,d=this.props.get("url"),e=new Image,g=f.Deferred();a.scanners.push(g.promise()),e.onload=function(){g.resolve(),c===b.state()&&d===c.props.get("url")&&(c.set({type:"image"}),c.props.set({width:e.width,height:e.height}))},e.onerror=g.reject,e.src=d},refresh:function(){this.frame.toolbar.get().refresh()},reset:function(){this.props.clear().set({url:""}),this.active&&this.refresh()}}),b.exports=d},{}],7:[function(a,b,c){var d,e=wp.media.model.Attachment,f=wp.media.controller.Library,g=wp.media.view.l10n;d=f.extend({defaults:_.defaults({id:"featured-image",title:g.setFeaturedImageTitle,multiple:!1,filterable:"uploaded",toolbar:"featured-image",priority:60,syncSelection:!0},f.prototype.defaults),initialize:function(){var a,b;this.get("library")||this.set("library",wp.media.query({type:"image"})),f.prototype.initialize.apply(this,arguments),a=this.get("library"),b=a.comparator,a.comparator=function(a,c){var d=!!this.mirroring.get(a.cid),e=!!this.mirroring.get(c.cid);return!d&&e?-1:d&&!e?1:b.apply(this,arguments)},a.observe(this.get("selection"))},activate:function(){this.updateSelection(),this.frame.on("open",this.updateSelection,this),f.prototype.activate.apply(this,arguments)},deactivate:function(){this.frame.off("open",this.updateSelection,this),f.prototype.deactivate.apply(this,arguments)},updateSelection:function(){var a,b=this.get("selection"),c=wp.media.view.settings.post.featuredImageId;""!==c&&-1!==c&&(a=e.get(c),a.fetch()),b.reset(a?[a]:[])}}),b.exports=d},{}],8:[function(a,b,c){var d,e=wp.media.model.Selection,f=wp.media.controller.Library,g=wp.media.view.l10n;d=f.extend({defaults:_.defaults({id:"gallery-library",title:g.addToGalleryTitle,multiple:"add",filterable:"uploaded",menu:"gallery",toolbar:"gallery-add",priority:100,syncSelection:!1},f.prototype.defaults),initialize:function(){this.get("library")||this.set("library",wp.media.query({type:"image"})),f.prototype.initialize.apply(this,arguments)},activate:function(){var a=this.get("library"),b=this.frame.state("gallery-edit").get("library");this.editLibrary&&this.editLibrary!==b&&a.unobserve(this.editLibrary),a.validator=function(a){return!!this.mirroring.get(a.cid)&&!b.get(a.cid)&&e.prototype.validator.apply(this,arguments)},a.reset(a.mirroring.models,{silent:!0}),a.observe(b),this.editLibrary=b,f.prototype.activate.apply(this,arguments)}}),b.exports=d},{}],9:[function(a,b,c){var d,e=wp.media.controller.Library,f=wp.media.view.l10n;d=e.extend({defaults:{id:"gallery-edit",title:f.editGalleryTitle,multiple:!1,searchable:!1,sortable:!0,date:!1,display:!1,content:"browse",toolbar:"gallery-edit",describe:!0,displaySettings:!0,dragInfo:!0,idealColumnWidth:170,editing:!1,priority:60,syncSelection:!1},initialize:function(){this.get("library")||this.set("library",new wp.media.model.Selection),this.get("AttachmentView")||this.set("AttachmentView",wp.media.view.Attachment.EditLibrary),e.prototype.initialize.apply(this,arguments)},activate:function(){var a=this.get("library");a.props.set("type","image"),this.get("library").observe(wp.Uploader.queue),this.frame.on("content:render:browse",this.gallerySettings,this),e.prototype.activate.apply(this,arguments)},deactivate:function(){this.get("library").unobserve(wp.Uploader.queue),this.frame.off("content:render:browse",this.gallerySettings,this),e.prototype.deactivate.apply(this,arguments)},gallerySettings:function(a){if(this.get("displaySettings")){var b=this.get("library");b&&a&&(b.gallery=b.gallery||new Backbone.Model,a.sidebar.set({gallery:new wp.media.view.Settings.Gallery({controller:this,model:b.gallery,priority:40})}),a.toolbar.set("reverse",{text:f.reverseOrder,priority:80,click:function(){b.reset(b.toArray().reverse())}}))}}}),b.exports=d},{}],10:[function(a,b,c){var d,e=wp.media.controller.State,f=wp.media.controller.Library,g=wp.media.view.l10n;d=e.extend({defaults:_.defaults({id:"image-details",title:g.imageDetailsTitle,content:"image-details",menu:!1,router:!1,toolbar:"image-details",editing:!1,priority:60},f.prototype.defaults),initialize:function(a){this.image=a.image,e.prototype.initialize.apply(this,arguments)},activate:function(){this.frame.modal.$el.addClass("image-details")}}),b.exports=d},{}],11:[function(a,b,c){var d,e=wp.media.view.l10n,f=window.getUserSetting,g=window.setUserSetting;d=wp.media.controller.State.extend({defaults:{id:"library",title:e.mediaLibraryTitle,multiple:!1,content:"upload",menu:"default",router:"browse",toolbar:"select",searchable:!0,filterable:!1,sortable:!0,autoSelect:!0,describe:!1,contentUserSetting:!0,syncSelection:!0},initialize:function(){var a,b=this.get("selection");this.get("library")||this.set("library",wp.media.query()),b instanceof wp.media.model.Selection||(a=b,a||(a=this.get("library").props.toJSON(),a=_.omit(a,"orderby","query")),this.set("selection",new wp.media.model.Selection(null,{multiple:this.get("multiple"),props:a}))),this.resetDisplays()},activate:function(){this.syncSelection(),wp.Uploader.queue.on("add",this.uploading,this),this.get("selection").on("add remove reset",this.refreshContent,this),this.get("router")&&this.get("contentUserSetting")&&(this.frame.on("content:activate",this.saveContentMode,this),this.set("content",f("libraryContent",this.get("content"))))},deactivate:function(){this.recordSelection(),this.frame.off("content:activate",this.saveContentMode,this),this.get("selection").off(null,null,this),wp.Uploader.queue.off(null,null,this)},reset:function(){this.get("selection").reset(),this.resetDisplays(),this.refreshContent()},resetDisplays:function(){var a=wp.media.view.settings.defaultProps;this._displays=[],this._defaultDisplaySettings={align:f("align",a.align)||"none",size:f("imgsize",a.size)||"medium",link:f("urlbutton",a.link)||"none"}},display:function(a){var b=this._displays;return b[a.cid]||(b[a.cid]=new Backbone.Model(this.defaultDisplaySettings(a))),b[a.cid]},defaultDisplaySettings:function(a){var b=this._defaultDisplaySettings;return(b.canEmbed=this.canEmbed(a))&&(b.link="embed"),b},canEmbed:function(a){if(!a.get("uploading")){var b=a.get("type");if("audio"!==b&&"video"!==b)return!1}return _.contains(wp.media.view.settings.embedExts,a.get("filename").split(".").pop())},refreshContent:function(){var a=this.get("selection"),b=this.frame,c=b.router.get(),d=b.content.mode();this.active&&!a.length&&c&&!c.get(d)&&this.frame.content.render(this.get("content"))},uploading:function(a){var b=this.frame.content;"upload"===b.mode()&&this.frame.content.mode("browse"),this.get("autoSelect")&&(this.get("selection").add(a),this.frame.trigger("library:selection:add"))},saveContentMode:function(){if("browse"===this.get("router")){var a=this.frame.content.mode(),b=this.frame.router.get();b&&b.get(a)&&g("libraryContent",a)}}}),_.extend(d.prototype,wp.media.selectionSync),b.exports=d},{}],12:[function(a,b,c){var d,e=wp.media.controller.Library;d=e.extend({defaults:_.defaults({filterable:"uploaded",displaySettings:!1,priority:80,syncSelection:!1},e.prototype.defaults),initialize:function(a){this.media=a.media,this.type=a.type,this.set("library",wp.media.query({type:this.type})),e.prototype.initialize.apply(this,arguments)},activate:function(){wp.media.frame.lastMime&&(this.set("library",wp.media.query({type:wp.media.frame.lastMime})),delete wp.media.frame.lastMime),e.prototype.activate.apply(this,arguments)}}),b.exports=d},{}],13:[function(a,b,c){var d=function(a){_.extend(this,_.pick(a||{},"id","view","selector"))};d.extend=Backbone.Model.extend,_.extend(d.prototype,{mode:function(a){return a?a===this._mode?this:(this.trigger("deactivate"),this._mode=a,this.render(a),this.trigger("activate"),this):this._mode},render:function(a){if(a&&a!==this._mode)return this.mode(a);var b,c={view:null};return this.trigger("create",c),b=c.view,this.trigger("render",b),b&&this.set(b),this},get:function(){return this.view.views.first(this.selector)},set:function(a,b){return b&&(b.add=!1),this.view.views.set(this.selector,a,b)},trigger:function(a){var b,c;if(this._mode)return c=_.toArray(arguments),b=this.id+":"+a,c[0]=b+":"+this._mode,this.view.trigger.apply(this.view,c),c[0]=b,this.view.trigger.apply(this.view,c),this}}),b.exports=d},{}],14:[function(a,b,c){var d,e=wp.media.controller.Library,f=wp.media.view.l10n;d=e.extend({defaults:_.defaults({id:"replace-image",title:f.replaceImageTitle,multiple:!1,filterable:"uploaded",toolbar:"replace",menu:!1,priority:60,syncSelection:!0},e.prototype.defaults),initialize:function(a){var b,c;this.image=a.image,this.get("library")||this.set("library",wp.media.query({type:"image"})),e.prototype.initialize.apply(this,arguments),b=this.get("library"),c=b.comparator,b.comparator=function(a,b){var d=!!this.mirroring.get(a.cid),e=!!this.mirroring.get(b.cid);return!d&&e?-1:d&&!e?1:c.apply(this,arguments)},b.observe(this.get("selection"))},activate:function(){this.updateSelection(),e.prototype.activate.apply(this,arguments)},updateSelection:function(){var a=this.get("selection"),b=this.image.attachment;a.reset(b?[b]:[])}}),b.exports=d},{}],15:[function(a,b,c){var d,e=wp.media.controller;d=e.Cropper.extend({activate:function(){this.frame.on("content:create:crop",this.createCropContent,this),this.frame.on("close",this.removeCropper,this),this.set("selection",new Backbone.Collection(this.frame._selection.single))},createCropContent:function(){this.cropperView=new wp.media.view.SiteIconCropper({controller:this,attachment:this.get("selection").first()}),this.cropperView.on("image-loaded",this.createCropToolbar,this),this.frame.content.set(this.cropperView)},doCrop:function(a){var b=a.get("cropDetails"),c=this.get("control");return b.dst_width=c.params.width,b.dst_height=c.params.height,wp.ajax.post("crop-image",{nonce:a.get("nonces").edit,id:a.get("id"),context:"site-icon",cropDetails:b})}}),b.exports=d},{}],16:[function(a,b,c){var d=function(a){this.states=new Backbone.Collection(a)};d.extend=Backbone.Model.extend,_.extend(d.prototype,Backbone.Events,{state:function(a){return this.states=this.states||new Backbone.Collection,a=a||this._state,a&&!this.states.get(a)&&this.states.add({id:a}),this.states.get(a)},setState:function(a){var b=this.state();return b&&a===b.id||!this.states||!this.states.get(a)?this:(b&&(b.trigger("deactivate"),this._lastState=b.id),this._state=a,this.state().trigger("activate"),this)},lastState:function(){return this._lastState?this.state(this._lastState):void 0}}),_.each(["on","off","trigger"],function(a){d.prototype[a]=function(){return this.states=this.states||new Backbone.Collection,this.states[a].apply(this.states,arguments),this}}),b.exports=d},{}],17:[function(a,b,c){var d=Backbone.Model.extend({constructor:function(){this.on("activate",this._preActivate,this),this.on("activate",this.activate,this),this.on("activate",this._postActivate,this),this.on("deactivate",this._deactivate,this),this.on("deactivate",this.deactivate,this),this.on("reset",this.reset,this),this.on("ready",this._ready,this),this.on("ready",this.ready,this),Backbone.Model.apply(this,arguments),this.on("change:menu",this._updateMenu,this)},ready:function(){},activate:function(){},deactivate:function(){},reset:function(){},_ready:function(){this._updateMenu()},_preActivate:function(){this.active=!0},_postActivate:function(){this.on("change:menu",this._menu,this),this.on("change:titleMode",this._title,this),this.on("change:content",this._content,this),this.on("change:toolbar",this._toolbar,this),this.frame.on("title:render:default",this._renderTitle,this),this._title(),this._menu(),this._toolbar(),this._content(),this._router()},_deactivate:function(){this.active=!1,this.frame.off("title:render:default",this._renderTitle,this),this.off("change:menu",this._menu,this),this.off("change:titleMode",this._title,this),this.off("change:content",this._content,this),this.off("change:toolbar",this._toolbar,this)},_title:function(){this.frame.title.render(this.get("titleMode")||"default")},_renderTitle:function(a){a.$el.text(this.get("title")||"")},_router:function(){var a,b=this.frame.router,c=this.get("router");this.frame.$el.toggleClass("hide-router",!c),c&&(this.frame.router.render(c),a=b.get(),a&&a.select&&a.select(this.frame.content.mode()))},_menu:function(){var a,b=this.frame.menu,c=this.get("menu");this.frame.$el.toggleClass("hide-menu",!c),c&&(b.mode(c),a=b.get(),a&&a.select&&a.select(this.id))},_updateMenu:function(){var a=this.previous("menu"),b=this.get("menu");a&&this.frame.off("menu:render:"+a,this._renderMenu,this),b&&this.frame.on("menu:render:"+b,this._renderMenu,this)},_renderMenu:function(a){var b=this.get("menuItem"),c=this.get("title"),d=this.get("priority");!b&&c&&(b={text:c},d&&(b.priority=d)),b&&a.set(this.id,b)}});_.each(["toolbar","content"],function(a){d.prototype["_"+a]=function(){var b=this.get(a);b&&this.frame[a].render(b)}}),b.exports=d},{}],18:[function(a,b,c){var d={syncSelection:function(){var a=this.get("selection"),b=this.frame._selection;this.get("syncSelection")&&b&&a&&(a.multiple&&(a.reset([],{silent:!0}),a.validateAll(b.attachments),b.difference=_.difference(b.attachments.models,a.models)),a.single(b.single))},recordSelection:function(){var a=this.get("selection"),b=this.frame._selection;this.get("syncSelection")&&b&&a&&(a.multiple?(b.attachments.reset(a.toArray().concat(b.difference)),b.difference=[]):b.attachments.add(a.toArray()),b.single=a._single)}};b.exports=d},{}],19:[function(a,b,c){var d,e=wp.media,f=jQuery;e.isTouchDevice="ontouchend"in document,d=e.view.l10n=window._wpMediaViewsL10n||{},e.view.settings=d.settings||{},delete d.settings,e.model.settings.post=e.view.settings.post,f.support.transition=function(){var a,b=document.documentElement.style,c={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};return a=_.find(_.keys(c),function(a){return!_.isUndefined(b[a])}),a&&{end:c[a]}}(),e.events=_.extend({},Backbone.Events),e.transition=function(a,b){var c=f.Deferred();return b=b||2e3,f.support.transition?(a instanceof f||(a=f(a)),a.first().one(f.support.transition.end,c.resolve),_.delay(c.resolve,b)):c.resolve(),c.promise()},e.controller.Region=a("./controllers/region.js"),e.controller.StateMachine=a("./controllers/state-machine.js"),e.controller.State=a("./controllers/state.js"),e.selectionSync=a("./utils/selection-sync.js"),e.controller.Library=a("./controllers/library.js"),e.controller.ImageDetails=a("./controllers/image-details.js"),e.controller.GalleryEdit=a("./controllers/gallery-edit.js"),e.controller.GalleryAdd=a("./controllers/gallery-add.js"),e.controller.CollectionEdit=a("./controllers/collection-edit.js"),e.controller.CollectionAdd=a("./controllers/collection-add.js"),e.controller.FeaturedImage=a("./controllers/featured-image.js"),e.controller.ReplaceImage=a("./controllers/replace-image.js"),e.controller.EditImage=a("./controllers/edit-image.js"),e.controller.MediaLibrary=a("./controllers/media-library.js"),e.controller.Embed=a("./controllers/embed.js"),e.controller.Cropper=a("./controllers/cropper.js"),e.controller.CustomizeImageCropper=a("./controllers/customize-image-cropper.js"),e.controller.SiteIconCropper=a("./controllers/site-icon-cropper.js"),e.View=a("./views/view.js"),e.view.Frame=a("./views/frame.js"),e.view.MediaFrame=a("./views/media-frame.js"),e.view.MediaFrame.Select=a("./views/frame/select.js"),e.view.MediaFrame.Post=a("./views/frame/post.js"),e.view.MediaFrame.ImageDetails=a("./views/frame/image-details.js"),e.view.Modal=a("./views/modal.js"),e.view.FocusManager=a("./views/focus-manager.js"),e.view.UploaderWindow=a("./views/uploader/window.js"),e.view.EditorUploader=a("./views/uploader/editor.js"),e.view.UploaderInline=a("./views/uploader/inline.js"),e.view.UploaderStatus=a("./views/uploader/status.js"),e.view.UploaderStatusError=a("./views/uploader/status-error.js"),e.view.Toolbar=a("./views/toolbar.js"),e.view.Toolbar.Select=a("./views/toolbar/select.js"),e.view.Toolbar.Embed=a("./views/toolbar/embed.js"),e.view.Button=a("./views/button.js"),e.view.ButtonGroup=a("./views/button-group.js"),e.view.PriorityList=a("./views/priority-list.js"),e.view.MenuItem=a("./views/menu-item.js"),e.view.Menu=a("./views/menu.js"),e.view.RouterItem=a("./views/router-item.js"),e.view.Router=a("./views/router.js"),e.view.Sidebar=a("./views/sidebar.js"),e.view.Attachment=a("./views/attachment.js"),e.view.Attachment.Library=a("./views/attachment/library.js"),e.view.Attachment.EditLibrary=a("./views/attachment/edit-library.js"),e.view.Attachments=a("./views/attachments.js"),e.view.Search=a("./views/search.js"),e.view.AttachmentFilters=a("./views/attachment-filters.js"),e.view.DateFilter=a("./views/attachment-filters/date.js"),e.view.AttachmentFilters.Uploaded=a("./views/attachment-filters/uploaded.js"),e.view.AttachmentFilters.All=a("./views/attachment-filters/all.js"),e.view.AttachmentsBrowser=a("./views/attachments/browser.js"),e.view.Selection=a("./views/selection.js"),e.view.Attachment.Selection=a("./views/attachment/selection.js"),e.view.Attachments.Selection=a("./views/attachments/selection.js"),e.view.Attachment.EditSelection=a("./views/attachment/edit-selection.js"),e.view.Settings=a("./views/settings.js"),e.view.Settings.AttachmentDisplay=a("./views/settings/attachment-display.js"),e.view.Settings.Gallery=a("./views/settings/gallery.js"),e.view.Settings.Playlist=a("./views/settings/playlist.js"),e.view.Attachment.Details=a("./views/attachment/details.js"),e.view.AttachmentCompat=a("./views/attachment-compat.js"),e.view.Iframe=a("./views/iframe.js"),e.view.Embed=a("./views/embed.js"),e.view.Label=a("./views/label.js"),e.view.EmbedUrl=a("./views/embed/url.js"),e.view.EmbedLink=a("./views/embed/link.js"),e.view.EmbedImage=a("./views/embed/image.js"),e.view.ImageDetails=a("./views/image-details.js"),e.view.Cropper=a("./views/cropper.js"),e.view.SiteIconCropper=a("./views/site-icon-cropper.js"),e.view.SiteIconPreview=a("./views/site-icon-preview.js"),e.view.EditImage=a("./views/edit-image.js"),e.view.Spinner=a("./views/spinner.js")},{"./controllers/collection-add.js":1,"./controllers/collection-edit.js":2,"./controllers/cropper.js":3,"./controllers/customize-image-cropper.js":4,"./controllers/edit-image.js":5,"./controllers/embed.js":6,"./controllers/featured-image.js":7,"./controllers/gallery-add.js":8,"./controllers/gallery-edit.js":9,"./controllers/image-details.js":10,"./controllers/library.js":11,"./controllers/media-library.js":12,"./controllers/region.js":13,"./controllers/replace-image.js":14,"./controllers/site-icon-cropper.js":15,"./controllers/state-machine.js":16,"./controllers/state.js":17,"./utils/selection-sync.js":18,"./views/attachment-compat.js":20,"./views/attachment-filters.js":21,"./views/attachment-filters/all.js":22,"./views/attachment-filters/date.js":23,"./views/attachment-filters/uploaded.js":24,"./views/attachment.js":25,"./views/attachment/details.js":26,"./views/attachment/edit-library.js":27,"./views/attachment/edit-selection.js":28,"./views/attachment/library.js":29,"./views/attachment/selection.js":30,"./views/attachments.js":31,"./views/attachments/browser.js":32,"./views/attachments/selection.js":33,"./views/button-group.js":34,"./views/button.js":35,"./views/cropper.js":36,"./views/edit-image.js":37,"./views/embed.js":38,"./views/embed/image.js":39,"./views/embed/link.js":40,"./views/embed/url.js":41,"./views/focus-manager.js":42,"./views/frame.js":43,"./views/frame/image-details.js":44,"./views/frame/post.js":45,"./views/frame/select.js":46,"./views/iframe.js":47,"./views/image-details.js":48,"./views/label.js":49,"./views/media-frame.js":50,"./views/menu-item.js":51,"./views/menu.js":52,"./views/modal.js":53,"./views/priority-list.js":54,"./views/router-item.js":55,"./views/router.js":56,"./views/search.js":57,"./views/selection.js":58,"./views/settings.js":59,"./views/settings/attachment-display.js":60,"./views/settings/gallery.js":61,"./views/settings/playlist.js":62,"./views/sidebar.js":63,"./views/site-icon-cropper.js":64,"./views/site-icon-preview.js":65,"./views/spinner.js":66,"./views/toolbar.js":67,"./views/toolbar/embed.js":68,"./views/toolbar/select.js":69,"./views/uploader/editor.js":70,"./views/uploader/inline.js":71,"./views/uploader/status-error.js":72,"./views/uploader/status.js":73,"./views/uploader/window.js":74,"./views/view.js":75}],20:[function(a,b,c){var d,e=wp.media.View;d=e.extend({tagName:"form",className:"compat-item",events:{submit:"preventDefault","change input":"save","change select":"save","change textarea":"save"},initialize:function(){this.listenTo(this.model,"change:compat",this.render)},dispose:function(){return this.$(":focus").length&&this.save(),e.prototype.dispose.apply(this,arguments)},render:function(){var a=this.model.get("compat");if(a&&a.item)return this.views.detach(),this.$el.html(a.item),this.views.render(),this},preventDefault:function(a){a.preventDefault()},save:function(a){var b={};a&&a.preventDefault(),_.each(this.$el.serializeArray(),function(a){b[a.name]=a.value}),this.controller.trigger("attachment:compat:waiting",["waiting"]),this.model.saveCompat(b).always(_.bind(this.postSave,this))},postSave:function(){this.controller.trigger("attachment:compat:ready",["ready"])}}),b.exports=d},{}],21:[function(a,b,c){var d,e=jQuery;d=wp.media.View.extend({tagName:"select",className:"attachment-filters",id:"media-attachment-filters",events:{change:"change"},keys:[],initialize:function(){this.createFilters(),_.extend(this.filters,this.options.filters),this.$el.html(_.chain(this.filters).map(function(a,b){return{el:e("<option></option>").val(b).html(a.text)[0],priority:a.priority||50}},this).sortBy("priority").pluck("el").value()),this.listenTo(this.model,"change",this.select),this.select()},createFilters:function(){this.filters={}},change:function(){var a=this.filters[this.el.value];a&&this.model.set(a.props)},select:function(){var a=this.model,b="all",c=a.toJSON();_.find(this.filters,function(a,d){var e=_.all(a.props,function(a,b){return a===(_.isUndefined(c[b])?null:c[b])});return e?b=d:void 0}),this.$el.val(b)}}),b.exports=d},{}],22:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.view.AttachmentFilters.extend({createFilters:function(){var a={};_.each(wp.media.view.settings.mimeTypes||{},function(b,c){a[c]={text:b,props:{status:null,type:c,uploadedTo:null,orderby:"date",order:"DESC"}}}),a.all={text:e.allMediaItems,props:{status:null,type:null,uploadedTo:null,orderby:"date",order:"DESC"},priority:10},wp.media.view.settings.post.id&&(a.uploaded={text:e.uploadedToThisPost,props:{status:null,type:null,uploadedTo:wp.media.view.settings.post.id,orderby:"menuOrder",order:"ASC"},priority:20}),a.unattached={text:e.unattached,props:{status:null,uploadedTo:0,type:null,orderby:"menuOrder",order:"ASC"},priority:50},wp.media.view.settings.mediaTrash&&this.controller.isModeActive("grid")&&(a.trash={text:e.trash,props:{uploadedTo:null,status:"trash",type:null,orderby:"date",order:"DESC"},priority:50}),this.filters=a}}),b.exports=d},{}],23:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.view.AttachmentFilters.extend({id:"media-attachment-date-filters",createFilters:function(){var a={};_.each(wp.media.view.settings.months||{},function(b,c){a[c]={text:b.text,props:{year:b.year,monthnum:b.month}}}),a.all={text:e.allDates,props:{monthnum:!1,year:!1},priority:10},this.filters=a}}),b.exports=d},{}],24:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.view.AttachmentFilters.extend({createFilters:function(){var a,b=this.model.get("type"),c=wp.media.view.settings.mimeTypes;c&&b&&(a=c[b]),this.filters={all:{text:a||e.allMediaItems,props:{uploadedTo:null,orderby:"date",order:"DESC"},priority:10},uploaded:{text:e.uploadedToThisPost,props:{uploadedTo:wp.media.view.settings.post.id,orderby:"menuOrder",order:"ASC"},priority:20},unattached:{text:e.unattached,props:{uploadedTo:0,orderby:"menuOrder",order:"ASC"},priority:50}}}}),b.exports=d},{}],25:[function(a,b,c){var d,e=wp.media.View,f=jQuery;d=e.extend({tagName:"li",className:"attachment",template:wp.template("attachment"),attributes:function(){return{tabIndex:0,role:"checkbox","aria-label":this.model.get("title"),"aria-checked":!1,"data-id":this.model.get("id")}},events:{"click .js--select-attachment":"toggleSelectionHandler","change [data-setting]":"updateSetting","change [data-setting] input":"updateSetting","change [data-setting] select":"updateSetting","change [data-setting] textarea":"updateSetting","click .attachment-close":"removeFromLibrary","click .check":"checkClickHandler",keydown:"toggleSelectionHandler"},buttons:{},initialize:function(){var a=this.options.selection,b=_.defaults(this.options,{rerenderOnModelChange:!0});b.rerenderOnModelChange?this.listenTo(this.model,"change",this.render):this.listenTo(this.model,"change:percent",this.progress),this.listenTo(this.model,"change:title",this._syncTitle),this.listenTo(this.model,"change:caption",this._syncCaption),this.listenTo(this.model,"change:artist",this._syncArtist),this.listenTo(this.model,"change:album",this._syncAlbum),this.listenTo(this.model,"add",this.select),this.listenTo(this.model,"remove",this.deselect),a&&(a.on("reset",this.updateSelect,this),this.listenTo(this.model,"selection:single selection:unsingle",this.details),this.details(this.model,this.controller.state().get("selection"))),this.listenTo(this.controller,"attachment:compat:waiting attachment:compat:ready",this.updateSave)},dispose:function(){var a=this.options.selection;return this.updateAll(),a&&a.off(null,null,this),
-e.prototype.dispose.apply(this,arguments),this},render:function(){var a=_.defaults(this.model.toJSON(),{orientation:"landscape",uploading:!1,type:"",subtype:"",icon:"",filename:"",caption:"",title:"",dateFormatted:"",width:"",height:"",compat:!1,alt:"",description:""},this.options);return a.buttons=this.buttons,a.describe=this.controller.state().get("describe"),"image"===a.type&&(a.size=this.imageSize()),a.can={},a.nonces&&(a.can.remove=!!a.nonces["delete"],a.can.save=!!a.nonces.update),this.controller.state().get("allowLocalEdits")&&(a.allowLocalEdits=!0),a.uploading&&!a.percent&&(a.percent=0),this.views.detach(),this.$el.html(this.template(a)),this.$el.toggleClass("uploading",a.uploading),a.uploading?this.$bar=this.$(".media-progress-bar div"):delete this.$bar,this.updateSelect(),this.updateSave(),this.views.render(),this},progress:function(){this.$bar&&this.$bar.length&&this.$bar.width(this.model.get("percent")+"%")},toggleSelectionHandler:function(a){var b;if("INPUT"!==a.target.nodeName&&"BUTTON"!==a.target.nodeName){if(37===a.keyCode||38===a.keyCode||39===a.keyCode||40===a.keyCode)return void this.controller.trigger("attachment:keydown:arrow",a);if("keydown"!==a.type||13===a.keyCode||32===a.keyCode){if(a.preventDefault(),this.controller.isModeActive("grid")){if(this.controller.isModeActive("edit"))return void this.controller.trigger("edit:attachment",this.model,a.currentTarget);this.controller.isModeActive("select")&&(b="toggle")}a.shiftKey?b="between":(a.ctrlKey||a.metaKey)&&(b="toggle"),this.toggleSelection({method:b}),this.controller.trigger("selection:toggle")}}},toggleSelection:function(a){var b,c,d,e,f=this.collection,g=this.options.selection,h=this.model,i=a&&a.method;if(g){if(b=g.single(),i=_.isUndefined(i)?g.multiple:i,"between"===i&&b&&g.multiple){if(b===h)return;return d=f.indexOf(b),e=f.indexOf(this.model),c=e>d?f.models.slice(d,e+1):f.models.slice(e,d+1),g.add(c),void g.single(h)}if("toggle"===i)return g[this.selected()?"remove":"add"](h),void g.single(h);if("add"===i)return g.add(h),void g.single(h);i||(i="add"),"add"!==i&&(i="reset"),this.selected()?g[b===h?"remove":"single"](h):(g[i](h),g.single(h))}},updateSelect:function(){this[this.selected()?"select":"deselect"]()},selected:function(){var a=this.options.selection;return a?!!a.get(this.model.cid):void 0},select:function(a,b){var c=this.options.selection,d=this.controller;!c||b&&b!==c||this.$el.hasClass("selected")||(this.$el.addClass("selected").attr("aria-checked",!0),d.isModeActive("grid")&&d.isModeActive("select")||this.$(".check").attr("tabindex","0"))},deselect:function(a,b){var c=this.options.selection;!c||b&&b!==c||this.$el.removeClass("selected").attr("aria-checked",!1).find(".check").attr("tabindex","-1")},details:function(a,b){var c,d=this.options.selection;d===b&&(c=d.single(),this.$el.toggleClass("details",c===this.model))},imageSize:function(a){var b=this.model.get("sizes"),c=!1;return a=a||"medium",b&&(b[a]?c=b[a]:b.large?c=b.large:b.thumbnail?c=b.thumbnail:b.full&&(c=b.full),c)?_.clone(c):{url:this.model.get("url"),width:this.model.get("width"),height:this.model.get("height"),orientation:this.model.get("orientation")}},updateSetting:function(a){var b,c,d=f(a.target).closest("[data-setting]");d.length&&(b=d.data("setting"),c=a.target.value,this.model.get(b)!==c&&this.save(b,c))},save:function(){var a=this,b=this._save=this._save||{status:"ready"},c=this.model.save.apply(this.model,arguments),d=b.requests?f.when(c,b.requests):c;b.savedTimer&&clearTimeout(b.savedTimer),this.updateSave("waiting"),b.requests=d,d.always(function(){b.requests===d&&(a.updateSave("resolved"===d.state()?"complete":"error"),b.savedTimer=setTimeout(function(){a.updateSave("ready"),delete b.savedTimer},2e3))})},updateSave:function(a){var b=this._save=this._save||{status:"ready"};return a&&a!==b.status&&(this.$el.removeClass("save-"+b.status),b.status=a),this.$el.addClass("save-"+b.status),this},updateAll:function(){var a,b=this.$("[data-setting]"),c=this.model;a=_.chain(b).map(function(a){var b,d,e=f("input, textarea, select, [value]",a);if(e.length)return b=f(a).data("setting"),d=e.val(),c.get(b)!==d?[b,d]:void 0}).compact().object().value(),_.isEmpty(a)||c.save(a)},removeFromLibrary:function(a){("keydown"!==a.type||13===a.keyCode||32===a.keyCode)&&(a.stopPropagation(),this.collection.remove(this.model))},checkClickHandler:function(a){var b=this.options.selection;b&&(a.stopPropagation(),b.where({id:this.model.get("id")}).length?(b.remove(this.model),this.$el.focus()):b.add(this.model))}}),_.each({caption:"_syncCaption",title:"_syncTitle",artist:"_syncArtist",album:"_syncAlbum"},function(a,b){d.prototype[a]=function(a,c){var d=this.$('[data-setting="'+b+'"]');return d.length?c===d.find("input, textarea, select, [value]").val()?this:this.render():this}}),b.exports=d},{}],26:[function(a,b,c){var d,e=wp.media.view.Attachment,f=wp.media.view.l10n;d=e.extend({tagName:"div",className:"attachment-details",template:wp.template("attachment-details"),attributes:function(){return{tabIndex:0,"data-id":this.model.get("id")}},events:{"change [data-setting]":"updateSetting","change [data-setting] input":"updateSetting","change [data-setting] select":"updateSetting","change [data-setting] textarea":"updateSetting","click .delete-attachment":"deleteAttachment","click .trash-attachment":"trashAttachment","click .untrash-attachment":"untrashAttachment","click .edit-attachment":"editAttachment",keydown:"toggleSelectionHandler"},initialize:function(){this.options=_.defaults(this.options,{rerenderOnModelChange:!1}),this.on("ready",this.initialFocus),e.prototype.initialize.apply(this,arguments)},initialFocus:function(){wp.media.isTouchDevice||this.$('input[type="text"]').eq(0).focus()},deleteAttachment:function(a){a.preventDefault(),window.confirm(f.warnDelete)&&(this.model.destroy(),this.controller.modal.focusManager.focus())},trashAttachment:function(a){var b=this.controller.library;a.preventDefault(),wp.media.view.settings.mediaTrash&&"edit-metadata"===this.controller.content.mode()?(this.model.set("status","trash"),this.model.save().done(function(){b._requery(!0)})):this.model.destroy()},untrashAttachment:function(a){var b=this.controller.library;a.preventDefault(),this.model.set("status","inherit"),this.model.save().done(function(){b._requery(!0)})},editAttachment:function(a){var b=this.controller.states.get("edit-image");window.imageEdit&&b?(a.preventDefault(),b.set("image",this.model),this.controller.setState("edit-image")):this.$el.addClass("needs-refresh")},toggleSelectionHandler:function(a){return"keydown"===a.type&&9===a.keyCode&&a.shiftKey&&a.target===this.$(":tabbable").get(0)?(this.controller.trigger("attachment:details:shift-tab",a),!1):37===a.keyCode||38===a.keyCode||39===a.keyCode||40===a.keyCode?void this.controller.trigger("attachment:keydown:arrow",a):void 0}}),b.exports=d},{}],27:[function(a,b,c){var d=wp.media.view.Attachment.extend({buttons:{close:!0}});b.exports=d},{}],28:[function(a,b,c){var d=wp.media.view.Attachment.Selection.extend({buttons:{close:!0}});b.exports=d},{}],29:[function(a,b,c){var d=wp.media.view.Attachment.extend({buttons:{check:!0}});b.exports=d},{}],30:[function(a,b,c){var d=wp.media.view.Attachment.extend({className:"attachment selection",toggleSelection:function(){this.options.selection.single(this.model)}});b.exports=d},{}],31:[function(a,b,c){var d,e=wp.media.View,f=jQuery;d=e.extend({tagName:"ul",className:"attachments",attributes:{tabIndex:-1},initialize:function(){this.el.id=_.uniqueId("__attachments-view-"),_.defaults(this.options,{refreshSensitivity:wp.media.isTouchDevice?300:200,refreshThreshold:3,AttachmentView:wp.media.view.Attachment,sortable:!1,resize:!0,idealColumnWidth:f(window).width()<640?135:150}),this._viewsByCid={},this.$window=f(window),this.resizeEvent="resize.media-modal-columns",this.collection.on("add",function(a){this.views.add(this.createAttachmentView(a),{at:this.collection.indexOf(a)})},this),this.collection.on("remove",function(a){var b=this._viewsByCid[a.cid];delete this._viewsByCid[a.cid],b&&b.remove()},this),this.collection.on("reset",this.render,this),this.listenTo(this.controller,"library:selection:add",this.attachmentFocus),this.scroll=_.chain(this.scroll).bind(this).throttle(this.options.refreshSensitivity).value(),this.options.scrollElement=this.options.scrollElement||this.el,f(this.options.scrollElement).on("scroll",this.scroll),this.initSortable(),_.bindAll(this,"setColumns"),this.options.resize&&(this.on("ready",this.bindEvents),this.controller.on("open",this.setColumns),_.defer(this.setColumns,this))},bindEvents:function(){this.$window.off(this.resizeEvent).on(this.resizeEvent,_.debounce(this.setColumns,50))},attachmentFocus:function(){this.$("li:first").focus()},restoreFocus:function(){this.$("li.selected:first").focus()},arrowEvent:function(a){var b=this.$el.children("li"),c=this.columns,d=b.filter(":focus").index(),e=c>=d+1?1:Math.ceil((d+1)/c);if(-1!==d){if(37===a.keyCode){if(0===d)return;b.eq(d-1).focus()}if(38===a.keyCode){if(1===e)return;b.eq(d-c).focus()}if(39===a.keyCode){if(b.length===d)return;b.eq(d+1).focus()}if(40===a.keyCode){if(Math.ceil(b.length/c)===e)return;b.eq(d+c).focus()}}},dispose:function(){this.collection.props.off(null,null,this),this.options.resize&&this.$window.off(this.resizeEvent),e.prototype.dispose.apply(this,arguments)},setColumns:function(){var a=this.columns,b=this.$el.width();b&&(this.columns=Math.min(Math.round(b/this.options.idealColumnWidth),12)||1,a&&a===this.columns||this.$el.closest(".media-frame-content").attr("data-columns",this.columns))},initSortable:function(){var a=this.collection;!wp.media.isTouchDevice&&this.options.sortable&&f.fn.sortable&&(this.$el.sortable(_.extend({disabled:!!a.comparator,tolerance:"pointer",start:function(a,b){b.item.data("sortableIndexStart",b.item.index())},update:function(b,c){var d=a.at(c.item.data("sortableIndexStart")),e=a.comparator;delete a.comparator,a.remove(d,{silent:!0}),a.add(d,{silent:!0,at:c.item.index()}),a.comparator=e,a.trigger("reset",a),a.saveMenuOrder()}},this.options.sortable)),a.props.on("change:orderby",function(){this.$el.sortable("option","disabled",!!a.comparator)},this),this.collection.props.on("change:orderby",this.refreshSortable,this),this.refreshSortable())},refreshSortable:function(){if(!wp.media.isTouchDevice&&this.options.sortable&&f.fn.sortable){var a=this.collection,b=a.props.get("orderby"),c="menuOrder"===b||!a.comparator;this.$el.sortable("option","disabled",!c)}},createAttachmentView:function(a){var b=new this.options.AttachmentView({controller:this.controller,model:a,collection:this.collection,selection:this.options.selection});return this._viewsByCid[a.cid]=b},prepare:function(){this.collection.length?this.views.set(this.collection.map(this.createAttachmentView,this)):(this.views.unset(),this.collection.more().done(this.scroll))},ready:function(){this.scroll()},scroll:function(){var a,b=this,c=this.options.scrollElement,d=c.scrollTop;c===document&&(c=document.body,d=f(document).scrollTop()),f(c).is(":visible")&&this.collection.hasMore()&&(a=this.views.parent.toolbar,c.scrollHeight-(d+c.clientHeight)<c.clientHeight/3&&a.get("spinner").show(),c.scrollHeight<d+c.clientHeight*this.options.refreshThreshold&&this.collection.more().done(function(){b.scroll(),a.get("spinner").hide()}))}}),b.exports=d},{}],32:[function(a,b,c){var d,e=wp.media.View,f=wp.media.view.settings.mediaTrash,g=wp.media.view.l10n,h=jQuery;d=e.extend({tagName:"div",className:"attachments-browser",initialize:function(){_.defaults(this.options,{filters:!1,search:!0,date:!0,display:!1,sidebar:!0,AttachmentView:wp.media.view.Attachment.Library}),this.listenTo(this.controller,"toggle:upload:attachment",_.bind(this.toggleUploader,this)),this.controller.on("edit:selection",this.editSelection),this.createToolbar(),this.options.sidebar&&this.createSidebar(),this.createUploader(),this.createAttachments(),this.updateContent(),this.options.sidebar&&"errors"!==this.options.sidebar||(this.$el.addClass("hide-sidebar"),"errors"===this.options.sidebar&&this.$el.addClass("sidebar-for-errors")),this.collection.on("add remove reset",this.updateContent,this)},editSelection:function(a){a.$(".media-button-backToLibrary").focus()},dispose:function(){return this.options.selection.off(null,null,this),e.prototype.dispose.apply(this,arguments),this},createToolbar:function(){var a,b,c;c={controller:this.controller},this.controller.isModeActive("grid")&&(c.className="media-toolbar wp-filter"),this.toolbar=new wp.media.view.Toolbar(c),this.views.add(this.toolbar),this.toolbar.set("spinner",new wp.media.view.Spinner({priority:-60})),-1!==h.inArray(this.options.filters,["uploaded","all"])&&(this.toolbar.set("filtersLabel",new wp.media.view.Label({value:g.filterByType,attributes:{"for":"media-attachment-filters"},priority:-80}).render()),"uploaded"===this.options.filters?this.toolbar.set("filters",new wp.media.view.AttachmentFilters.Uploaded({controller:this.controller,model:this.collection.props,priority:-80}).render()):(b=new wp.media.view.AttachmentFilters.All({controller:this.controller,model:this.collection.props,priority:-80}),this.toolbar.set("filters",b.render()))),this.controller.isModeActive("grid")?(a=e.extend({className:"view-switch media-grid-view-switch",template:wp.template("media-library-view-switcher")}),this.toolbar.set("libraryViewSwitcher",new a({controller:this.controller,priority:-90}).render()),this.toolbar.set("dateFilterLabel",new wp.media.view.Label({value:g.filterByDate,attributes:{"for":"media-attachment-date-filters"},priority:-75}).render()),this.toolbar.set("dateFilter",new wp.media.view.DateFilter({controller:this.controller,model:this.collection.props,priority:-75}).render()),this.toolbar.set("selectModeToggleButton",new wp.media.view.SelectModeToggleButton({text:g.bulkSelect,controller:this.controller,priority:-70}).render()),this.toolbar.set("deleteSelectedButton",new wp.media.view.DeleteSelectedButton({filters:b,style:"primary",disabled:!0,text:f?g.trashSelected:g.deleteSelected,controller:this.controller,priority:-60,click:function(){var a=[],b=[],c=this.controller.state().get("selection"),d=this.controller.state().get("library");c.length&&(f||window.confirm(g.warnBulkDelete))&&(!f||"trash"===c.at(0).get("status")||window.confirm(g.warnBulkTrash))&&(c.each(function(c){return c.get("nonces")["delete"]?void(f&&"trash"===c.get("status")?(c.set("status","inherit"),a.push(c.save()),b.push(c)):f?(c.set("status","trash"),a.push(c.save()),b.push(c)):c.destroy({wait:!0})):void b.push(c)}),a.length?(c.remove(b),h.when.apply(null,a).then(_.bind(function(){d._requery(!0),this.controller.trigger("selection:action:done")},this))):this.controller.trigger("selection:action:done"))}}).render()),f&&this.toolbar.set("deleteSelectedPermanentlyButton",new wp.media.view.DeleteSelectedPermanentlyButton({filters:b,style:"primary",disabled:!0,text:g.deleteSelected,controller:this.controller,priority:-55,click:function(){var a=[],b=this.controller.state().get("selection");b.length&&window.confirm(g.warnBulkDelete)&&(b.each(function(b){return b.get("nonces")["delete"]?void b.destroy():void a.push(b)}),b.remove(a),this.controller.trigger("selection:action:done"))}}).render())):this.options.date&&(this.toolbar.set("dateFilterLabel",new wp.media.view.Label({value:g.filterByDate,attributes:{"for":"media-attachment-date-filters"},priority:-75}).render()),this.toolbar.set("dateFilter",new wp.media.view.DateFilter({controller:this.controller,model:this.collection.props,priority:-75}).render())),this.options.search&&(this.toolbar.set("searchLabel",new wp.media.view.Label({value:g.searchMediaLabel,attributes:{"for":"media-search-input"},priority:60}).render()),this.toolbar.set("search",new wp.media.view.Search({controller:this.controller,model:this.collection.props,priority:60}).render())),this.options.dragInfo&&this.toolbar.set("dragInfo",new e({el:h('<div class="instructions">'+g.dragInfo+"</div>")[0],priority:-40})),this.options.suggestedWidth&&this.options.suggestedHeight&&this.toolbar.set("suggestedDimensions",new e({el:h('<div class="instructions">'+g.suggestedDimensions+" "+this.options.suggestedWidth+" × "+this.options.suggestedHeight+"</div>")[0],priority:-40}))},updateContent:function(){var a,b=this;a=this.controller.isModeActive("grid")?b.attachmentsNoResults:b.uploader,this.collection.length?(a.$el.addClass("hidden"),b.toolbar.get("spinner").hide()):(this.toolbar.get("spinner").show(),this.dfd=this.collection.more().done(function(){b.collection.length?a.$el.addClass("hidden"):a.$el.removeClass("hidden"),b.toolbar.get("spinner").hide()}))},createUploader:function(){this.uploader=new wp.media.view.UploaderInline({controller:this.controller,status:!1,message:this.controller.isModeActive("grid")?"":g.noItemsFound,canClose:this.controller.isModeActive("grid")}),this.uploader.hide(),this.views.add(this.uploader)},toggleUploader:function(){this.uploader.$el.hasClass("hidden")?this.uploader.show():this.uploader.hide()},createAttachments:function(){this.attachments=new wp.media.view.Attachments({controller:this.controller,collection:this.collection,selection:this.options.selection,model:this.model,sortable:this.options.sortable,scrollElement:this.options.scrollElement,idealColumnWidth:this.options.idealColumnWidth,AttachmentView:this.options.AttachmentView}),this.attachments.listenTo(this.controller,"attachment:keydown:arrow",this.attachments.arrowEvent),this.attachments.listenTo(this.controller,"attachment:details:shift-tab",this.attachments.restoreFocus),this.views.add(this.attachments),this.controller.isModeActive("grid")&&(this.attachmentsNoResults=new e({controller:this.controller,tagName:"p"}),this.attachmentsNoResults.$el.addClass("hidden no-media"),this.attachmentsNoResults.$el.html(g.noMedia),this.views.add(this.attachmentsNoResults))},createSidebar:function(){var a=this.options,b=a.selection,c=this.sidebar=new wp.media.view.Sidebar({controller:this.controller});this.views.add(c),this.controller.uploader&&c.set("uploads",new wp.media.view.UploaderStatus({controller:this.controller,priority:40})),b.on("selection:single",this.createSingle,this),b.on("selection:unsingle",this.disposeSingle,this),b.single()&&this.createSingle()},createSingle:function(){var a=this.sidebar,b=this.options.selection.single();a.set("details",new wp.media.view.Attachment.Details({controller:this.controller,model:b,priority:80})),a.set("compat",new wp.media.view.AttachmentCompat({controller:this.controller,model:b,priority:120})),this.options.display&&a.set("display",new wp.media.view.Settings.AttachmentDisplay({controller:this.controller,model:this.model.display(b),attachment:b,priority:160,userSettings:this.model.get("displayUserSettings")})),"insert"===this.model.id&&a.$el.addClass("visible")},disposeSingle:function(){var a=this.sidebar;a.unset("details"),a.unset("compat"),a.unset("display"),a.$el.removeClass("visible")}}),b.exports=d},{}],33:[function(a,b,c){var d,e=wp.media.view.Attachments;d=e.extend({events:{},initialize:function(){return _.defaults(this.options,{sortable:!1,resize:!1,AttachmentView:wp.media.view.Attachment.Selection}),e.prototype.initialize.apply(this,arguments)}}),b.exports=d},{}],34:[function(a,b,c){var d,e=Backbone.$;d=wp.media.View.extend({tagName:"div",className:"button-group button-large media-button-group",initialize:function(){this.buttons=_.map(this.options.buttons||[],function(a){return a instanceof Backbone.View?a:new wp.media.view.Button(a).render()}),delete this.options.buttons,this.options.classes&&this.$el.addClass(this.options.classes)},render:function(){return this.$el.html(e(_.pluck(this.buttons,"el")).detach()),this}}),b.exports=d},{}],35:[function(a,b,c){var d=wp.media.View.extend({tagName:"button",className:"media-button",attributes:{type:"button"},events:{click:"click"},defaults:{text:"",style:"",size:"large",disabled:!1},initialize:function(){this.model=new Backbone.Model(this.defaults),_.each(this.defaults,function(a,b){var c=this.options[b];_.isUndefined(c)||(this.model.set(b,c),delete this.options[b])},this),this.listenTo(this.model,"change",this.render)},render:function(){var a=["button",this.className],b=this.model.toJSON();return b.style&&a.push("button-"+b.style),b.size&&a.push("button-"+b.size),a=_.uniq(a.concat(this.options.classes)),this.el.className=a.join(" "),this.$el.attr("disabled",b.disabled),this.$el.text(this.model.get("text")),this},click:function(a){"#"===this.attributes.href&&a.preventDefault(),this.options.click&&!this.model.get("disabled")&&this.options.click.apply(this,arguments)}});b.exports=d},{}],36:[function(a,b,c){var d,e=wp.media.View,f=wp.media.view.UploaderStatus,g=wp.media.view.l10n,h=jQuery;d=e.extend({className:"crop-content",template:wp.template("crop-content"),initialize:function(){_.bindAll(this,"onImageLoad")},ready:function(){this.controller.frame.on("content:error:crop",this.onError,this),this.$image=this.$el.find(".crop-image"),this.$image.on("load",this.onImageLoad),h(window).on("resize.cropper",_.debounce(this.onImageLoad,250))},remove:function(){h(window).off("resize.cropper"),this.$el.remove(),this.$el.off(),e.prototype.remove.apply(this,arguments)},prepare:function(){return{title:g.cropYourImage,url:this.options.attachment.get("url")}},onImageLoad:function(){var a=this.controller.get("imgSelectOptions");"function"==typeof a&&(a=a(this.options.attachment,this.controller)),a=_.extend(a,{parent:this.$el}),this.trigger("image-loaded"),this.controller.imgSelect=this.$image.imgAreaSelect(a)},onError:function(){var a=this.options.attachment.get("filename");this.views.add(".upload-errors",new wp.media.view.UploaderStatusError({filename:f.prototype.filename(a),message:window._wpMediaViewsL10n.cropError}),{at:0})}}),b.exports=d},{}],37:[function(a,b,c){var d,e=wp.media.View;d=e.extend({className:"image-editor",template:wp.template("image-editor"),initialize:function(a){this.editor=window.imageEdit,this.controller=a.controller,e.prototype.initialize.apply(this,arguments)},prepare:function(){return this.model.toJSON()},loadEditor:function(){var a=this.editor.open(this.model.get("id"),this.model.get("nonces").edit,this);a.done(_.bind(this.focus,this))},focus:function(){this.$(".imgedit-submit .button").eq(0).focus()},back:function(){var a=this.controller.lastState();this.controller.setState(a)},refresh:function(){this.model.fetch()},save:function(){var a=this.controller.lastState();this.model.fetch().done(_.bind(function(){this.controller.setState(a)},this))}}),b.exports=d},{}],38:[function(a,b,c){var d=wp.media.View.extend({className:"media-embed",initialize:function(){this.url=new wp.media.view.EmbedUrl({controller:this.controller,model:this.model.props}).render(),this.views.set([this.url]),this.refresh(),this.listenTo(this.model,"change:type",this.refresh),this.listenTo(this.model,"change:loading",this.loading)},settings:function(a){this._settings&&this._settings.remove(),this._settings=a,this.views.add(a)},refresh:function(){var a,b=this.model.get("type");if("image"===b)a=wp.media.view.EmbedImage;else{if("link"!==b)return;a=wp.media.view.EmbedLink}this.settings(new a({controller:this.controller,model:this.model.props,priority:40}))},loading:function(){this.$el.toggleClass("embed-loading",this.model.get("loading"))}});b.exports=d},{}],39:[function(a,b,c){var d,e=wp.media.view.Settings.AttachmentDisplay;d=e.extend({className:"embed-media-settings",template:wp.template("embed-image-settings"),initialize:function(){e.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change:url",this.updateImage)},updateImage:function(){this.$("img").attr("src",this.model.get("url"))}}),b.exports=d},{}],40:[function(a,b,c){var d,e=jQuery;d=wp.media.view.Settings.extend({className:"embed-link-settings",template:wp.template("embed-link-settings"),initialize:function(){this.listenTo(this.model,"change:url",this.updateoEmbed)},updateoEmbed:_.debounce(function(){var a=this.model.get("url");this.$(".embed-container").hide().find(".embed-preview").empty(),this.$(".setting").hide(),a&&(a.length<11||!a.match(/^http(s)?:\/\//))||this.fetch()},wp.media.controller.Embed.sensitivity),fetch:function(){var a;e("#embed-url-field").val()===this.model.get("url")&&(this.dfd&&"pending"===this.dfd.state()&&this.dfd.abort(),a=new wp.shortcode({tag:"embed",attrs:_.pick(this.model.attributes,["width","height","src"]),content:this.model.get("url")}),this.dfd=e.ajax({type:"POST",url:wp.ajax.settings.url,context:this,data:{action:"parse-embed",post_ID:wp.media.view.settings.post.id,shortcode:a.string()}}).done(this.renderoEmbed).fail(this.renderFail))},renderFail:function(a,b){"abort"!==b&&this.$(".link-text").show()},renderoEmbed:function(a){var b=a&&a.data&&a.data.body||"";b?this.$(".embed-container").show().find(".embed-preview").html(b):this.renderFail()}}),b.exports=d},{}],41:[function(a,b,c){var d,e=wp.media.View,f=jQuery;d=e.extend({tagName:"label",className:"embed-url",events:{input:"url",keyup:"url",change:"url"},initialize:function(){this.$input=f('<input id="embed-url-field" type="url" />').val(this.model.get("url")),this.input=this.$input[0],this.spinner=f('<span class="spinner" />')[0],this.$el.append([this.input,this.spinner]),this.listenTo(this.model,"change:url",this.render),this.model.get("url")&&_.delay(_.bind(function(){this.model.trigger("change:url")},this),500)},render:function(){var a=this.$input;if(!a.is(":focus"))return this.input.value=this.model.get("url")||"http://",e.prototype.render.apply(this,arguments),this},ready:function(){wp.media.isTouchDevice||this.focus()},url:function(a){this.model.set("url",a.target.value)},focus:function(){var a=this.$input;a.is(":visible")&&a.focus()[0].select()}}),b.exports=d},{}],42:[function(a,b,c){var d=wp.media.View.extend({events:{keydown:"constrainTabbing"},focus:function(){this.$(".media-menu-item").first().focus()},constrainTabbing:function(a){var b;if(9===a.keyCode)return b=this.$(":tabbable").not('.moxie-shim input[type="file"]'),b.last()[0]!==a.target||a.shiftKey?b.first()[0]===a.target&&a.shiftKey?(b.last().focus(),!1):void 0:(b.first().focus(),!1)}});b.exports=d},{}],43:[function(a,b,c){var d=wp.media.View.extend({initialize:function(){_.defaults(this.options,{mode:["select"]}),this._createRegions(),this._createStates(),this._createModes()},_createRegions:function(){this.regions=this.regions?this.regions.slice():[],_.each(this.regions,function(a){this[a]=new wp.media.controller.Region({view:this,id:a,selector:".media-frame-"+a})},this)},_createStates:function(){this.states=new Backbone.Collection(null,{model:wp.media.controller.State}),this.states.on("add",function(a){a.frame=this,a.trigger("ready")},this),this.options.states&&this.states.add(this.options.states)},_createModes:function(){this.activeModes=new Backbone.Collection,this.activeModes.on("add remove reset",_.bind(this.triggerModeEvents,this)),_.each(this.options.mode,function(a){this.activateMode(a)},this)},reset:function(){return this.states.invoke("trigger","reset"),this},triggerModeEvents:function(a,b,c){var d,e,f={add:"activate",remove:"deactivate"};_.each(c,function(a,b){a&&(d=b)}),_.has(f,d)&&(e=a.get("id")+":"+f[d],this.trigger(e))},activateMode:function(a){return this.isModeActive(a)?void 0:(this.activeModes.add([{id:a}]),this.$el.addClass("mode-"+a),this)},deactivateMode:function(a){return this.isModeActive(a)?(this.activeModes.remove(this.activeModes.where({id:a})),this.$el.removeClass("mode-"+a),this.trigger(a+":deactivate"),this):this},isModeActive:function(a){return Boolean(this.activeModes.where({id:a}).length)}});_.extend(d.prototype,wp.media.controller.StateMachine.prototype),b.exports=d},{}],44:[function(a,b,c){var d,e=wp.media.view.MediaFrame.Select,f=wp.media.view.l10n;d=e.extend({defaults:{id:"image",url:"",menu:"image-details",content:"image-details",toolbar:"image-details",type:"link",title:f.imageDetailsTitle,priority:120},initialize:function(a){this.image=new wp.media.model.PostImage(a.metadata),this.options.selection=new wp.media.model.Selection(this.image.attachment,{multiple:!1}),e.prototype.initialize.apply(this,arguments)},bindHandlers:function(){e.prototype.bindHandlers.apply(this,arguments),this.on("menu:create:image-details",this.createMenu,this),this.on("content:create:image-details",this.imageDetailsContent,this),this.on("content:render:edit-image",this.editImageContent,this),this.on("toolbar:render:image-details",this.renderImageDetailsToolbar,this),this.on("toolbar:render:replace",this.renderReplaceImageToolbar,this)},createStates:function(){this.states.add([new wp.media.controller.ImageDetails({image:this.image,editable:!1}),new wp.media.controller.ReplaceImage({id:"replace-image",library:wp.media.query({type:"image"}),image:this.image,multiple:!1,title:f.imageReplaceTitle,toolbar:"replace",priority:80,displaySettings:!0}),new wp.media.controller.EditImage({image:this.image,selection:this.options.selection})])},imageDetailsContent:function(a){a.view=new wp.media.view.ImageDetails({controller:this,model:this.state().image,attachment:this.state().image.attachment})},editImageContent:function(){var a,b=this.state(),c=b.get("image");c&&(a=new wp.media.view.EditImage({model:c,controller:this}).render(),this.content.set(a),a.loadEditor())},renderImageDetailsToolbar:function(){this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{select:{style:"primary",text:f.update,priority:80,click:function(){var a=this.controller,b=a.state();a.close(),b.trigger("update",a.image.toJSON()),a.setState(a.options.state),a.reset()}}}}))},renderReplaceImageToolbar:function(){var a=this,b=a.lastState(),c=b&&b.id;this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{back:{text:f.back,priority:20,click:function(){c?a.setState(c):a.close()}},replace:{style:"primary",text:f.replace,priority:80,click:function(){var a=this.controller,b=a.state(),c=b.get("selection"),d=c.single();a.close(),a.image.changeAttachment(d,b.display(d)),b.trigger("replace",a.image.toJSON()),a.setState(a.options.state),a.reset()}}}}))}}),b.exports=d},{}],45:[function(a,b,c){var d,e=wp.media.view.MediaFrame.Select,f=wp.media.controller.Library,g=wp.media.view.l10n;d=e.extend({initialize:function(){this.counts={audio:{count:wp.media.view.settings.attachmentCounts.audio,state:"playlist"},video:{count:wp.media.view.settings.attachmentCounts.video,state:"video-playlist"}},_.defaults(this.options,{multiple:!0,editing:!1,state:"insert",metadata:{}}),e.prototype.initialize.apply(this,arguments),this.createIframeStates()},createStates:function(){var a=this.options;this.states.add([new f({id:"insert",title:g.insertMediaTitle,priority:20,toolbar:"main-insert",filterable:"all",library:wp.media.query(a.library),multiple:a.multiple?"reset":!1,editable:!0,allowLocalEdits:!0,displaySettings:!0,displayUserSettings:!0}),new f({id:"gallery",title:g.createGalleryTitle,priority:40,toolbar:"main-gallery",filterable:"uploaded",multiple:"add",editable:!1,library:wp.media.query(_.defaults({type:"image"},a.library))}),new wp.media.controller.Embed({metadata:a.metadata}),new wp.media.controller.EditImage({model:a.editImage}),new wp.media.controller.GalleryEdit({library:a.selection,editing:a.editing,menu:"gallery"}),new wp.media.controller.GalleryAdd,new f({id:"playlist",title:g.createPlaylistTitle,priority:60,toolbar:"main-playlist",filterable:"uploaded",multiple:"add",editable:!1,library:wp.media.query(_.defaults({type:"audio"},a.library))}),new wp.media.controller.CollectionEdit({type:"audio",collectionType:"playlist",title:g.editPlaylistTitle,SettingsView:wp.media.view.Settings.Playlist,library:a.selection,editing:a.editing,menu:"playlist",dragInfoText:g.playlistDragInfo,dragInfo:!1}),new wp.media.controller.CollectionAdd({type:"audio",collectionType:"playlist",title:g.addToPlaylistTitle}),new f({id:"video-playlist",title:g.createVideoPlaylistTitle,priority:60,toolbar:"main-video-playlist",filterable:"uploaded",multiple:"add",editable:!1,library:wp.media.query(_.defaults({
-type:"video"},a.library))}),new wp.media.controller.CollectionEdit({type:"video",collectionType:"playlist",title:g.editVideoPlaylistTitle,SettingsView:wp.media.view.Settings.Playlist,library:a.selection,editing:a.editing,menu:"video-playlist",dragInfoText:g.videoPlaylistDragInfo,dragInfo:!1}),new wp.media.controller.CollectionAdd({type:"video",collectionType:"playlist",title:g.addToVideoPlaylistTitle})]),wp.media.view.settings.post.featuredImageId&&this.states.add(new wp.media.controller.FeaturedImage)},bindHandlers:function(){var a,b;e.prototype.bindHandlers.apply(this,arguments),this.on("activate",this.activate,this),b=_.find(this.counts,function(a){return 0===a.count}),"undefined"!=typeof b&&this.listenTo(wp.media.model.Attachments.all,"change:type",this.mediaTypeCounts),this.on("menu:create:gallery",this.createMenu,this),this.on("menu:create:playlist",this.createMenu,this),this.on("menu:create:video-playlist",this.createMenu,this),this.on("toolbar:create:main-insert",this.createToolbar,this),this.on("toolbar:create:main-gallery",this.createToolbar,this),this.on("toolbar:create:main-playlist",this.createToolbar,this),this.on("toolbar:create:main-video-playlist",this.createToolbar,this),this.on("toolbar:create:featured-image",this.featuredImageToolbar,this),this.on("toolbar:create:main-embed",this.mainEmbedToolbar,this),a={menu:{"default":"mainMenu",gallery:"galleryMenu",playlist:"playlistMenu","video-playlist":"videoPlaylistMenu"},content:{embed:"embedContent","edit-image":"editImageContent","edit-selection":"editSelectionContent"},toolbar:{"main-insert":"mainInsertToolbar","main-gallery":"mainGalleryToolbar","gallery-edit":"galleryEditToolbar","gallery-add":"galleryAddToolbar","main-playlist":"mainPlaylistToolbar","playlist-edit":"playlistEditToolbar","playlist-add":"playlistAddToolbar","main-video-playlist":"mainVideoPlaylistToolbar","video-playlist-edit":"videoPlaylistEditToolbar","video-playlist-add":"videoPlaylistAddToolbar"}},_.each(a,function(a,b){_.each(a,function(a,c){this.on(b+":render:"+c,this[a],this)},this)},this)},activate:function(){_.each(this.counts,function(a){a.count<1&&this.menuItemVisibility(a.state,"hide")},this)},mediaTypeCounts:function(a,b){"undefined"!=typeof this.counts[b]&&this.counts[b].count<1&&(this.counts[b].count++,this.menuItemVisibility(this.counts[b].state,"show"))},mainMenu:function(a){a.set({"library-separator":new wp.media.View({className:"separator",priority:100})})},menuItemVisibility:function(a,b){var c=this.menu.get();"hide"===b?c.hide(a):"show"===b&&c.show(a)},galleryMenu:function(a){var b=this.lastState(),c=b&&b.id,d=this;a.set({cancel:{text:g.cancelGalleryTitle,priority:20,click:function(){c?d.setState(c):d.close(),this.controller.modal.focusManager.focus()}},separateCancel:new wp.media.View({className:"separator",priority:40})})},playlistMenu:function(a){var b=this.lastState(),c=b&&b.id,d=this;a.set({cancel:{text:g.cancelPlaylistTitle,priority:20,click:function(){c?d.setState(c):d.close()}},separateCancel:new wp.media.View({className:"separator",priority:40})})},videoPlaylistMenu:function(a){var b=this.lastState(),c=b&&b.id,d=this;a.set({cancel:{text:g.cancelVideoPlaylistTitle,priority:20,click:function(){c?d.setState(c):d.close()}},separateCancel:new wp.media.View({className:"separator",priority:40})})},embedContent:function(){var a=new wp.media.view.Embed({controller:this,model:this.state()}).render();this.content.set(a),wp.media.isTouchDevice||a.url.focus()},editSelectionContent:function(){var a,b=this.state(),c=b.get("selection");a=new wp.media.view.AttachmentsBrowser({controller:this,collection:c,selection:c,model:b,sortable:!0,search:!1,date:!1,dragInfo:!0,AttachmentView:wp.media.view.Attachments.EditSelection}).render(),a.toolbar.set("backToLibrary",{text:g.returnToLibrary,priority:-100,click:function(){this.controller.content.mode("browse")}}),this.content.set(a),this.trigger("edit:selection",this)},editImageContent:function(){var a=this.state().get("image"),b=new wp.media.view.EditImage({model:a,controller:this}).render();this.content.set(b),b.loadEditor()},selectionStatusToolbar:function(a){var b=this.state().get("editable");a.set("selection",new wp.media.view.Selection({controller:this,collection:this.state().get("selection"),priority:-40,editable:b&&function(){this.controller.content.mode("edit-selection")}}).render())},mainInsertToolbar:function(a){var b=this;this.selectionStatusToolbar(a),a.set("insert",{style:"primary",priority:80,text:g.insertIntoPost,requires:{selection:!0},click:function(){var a=b.state(),c=a.get("selection");b.close(),a.trigger("insert",c).reset()}})},mainGalleryToolbar:function(a){var b=this;this.selectionStatusToolbar(a),a.set("gallery",{style:"primary",text:g.createNewGallery,priority:60,requires:{selection:!0},click:function(){var a=b.state().get("selection"),c=b.state("gallery-edit"),d=a.where({type:"image"});c.set("library",new wp.media.model.Selection(d,{props:a.props.toJSON(),multiple:!0})),this.controller.setState("gallery-edit"),this.controller.modal.focusManager.focus()}})},mainPlaylistToolbar:function(a){var b=this;this.selectionStatusToolbar(a),a.set("playlist",{style:"primary",text:g.createNewPlaylist,priority:100,requires:{selection:!0},click:function(){var a=b.state().get("selection"),c=b.state("playlist-edit"),d=a.where({type:"audio"});c.set("library",new wp.media.model.Selection(d,{props:a.props.toJSON(),multiple:!0})),this.controller.setState("playlist-edit"),this.controller.modal.focusManager.focus()}})},mainVideoPlaylistToolbar:function(a){var b=this;this.selectionStatusToolbar(a),a.set("video-playlist",{style:"primary",text:g.createNewVideoPlaylist,priority:100,requires:{selection:!0},click:function(){var a=b.state().get("selection"),c=b.state("video-playlist-edit"),d=a.where({type:"video"});c.set("library",new wp.media.model.Selection(d,{props:a.props.toJSON(),multiple:!0})),this.controller.setState("video-playlist-edit"),this.controller.modal.focusManager.focus()}})},featuredImageToolbar:function(a){this.createSelectToolbar(a,{text:g.setFeaturedImage,state:this.options.state})},mainEmbedToolbar:function(a){a.view=new wp.media.view.Toolbar.Embed({controller:this})},galleryEditToolbar:function(){var a=this.state().get("editing");this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:a?g.updateGallery:g.insertGallery,priority:80,requires:{library:!0},click:function(){var a=this.controller,b=a.state();a.close(),b.trigger("update",b.get("library")),a.setState(a.options.state),a.reset()}}}}))},galleryAddToolbar:function(){this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:g.addToGallery,priority:80,requires:{selection:!0},click:function(){var a=this.controller,b=a.state(),c=a.state("gallery-edit");c.get("library").add(b.get("selection").models),b.trigger("reset"),a.setState("gallery-edit")}}}}))},playlistEditToolbar:function(){var a=this.state().get("editing");this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:a?g.updatePlaylist:g.insertPlaylist,priority:80,requires:{library:!0},click:function(){var a=this.controller,b=a.state();a.close(),b.trigger("update",b.get("library")),a.setState(a.options.state),a.reset()}}}}))},playlistAddToolbar:function(){this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:g.addToPlaylist,priority:80,requires:{selection:!0},click:function(){var a=this.controller,b=a.state(),c=a.state("playlist-edit");c.get("library").add(b.get("selection").models),b.trigger("reset"),a.setState("playlist-edit")}}}}))},videoPlaylistEditToolbar:function(){var a=this.state().get("editing");this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:a?g.updateVideoPlaylist:g.insertVideoPlaylist,priority:140,requires:{library:!0},click:function(){var a=this.controller,b=a.state(),c=b.get("library");c.type="video",a.close(),b.trigger("update",c),a.setState(a.options.state),a.reset()}}}}))},videoPlaylistAddToolbar:function(){this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:g.addToVideoPlaylist,priority:140,requires:{selection:!0},click:function(){var a=this.controller,b=a.state(),c=a.state("video-playlist-edit");c.get("library").add(b.get("selection").models),b.trigger("reset"),a.setState("video-playlist-edit")}}}}))}}),b.exports=d},{}],46:[function(a,b,c){var d,e=wp.media.view.MediaFrame,f=wp.media.view.l10n;d=e.extend({initialize:function(){e.prototype.initialize.apply(this,arguments),_.defaults(this.options,{selection:[],library:{},multiple:!1,state:"library"}),this.createSelection(),this.createStates(),this.bindHandlers()},createSelection:function(){var a=this.options.selection;a instanceof wp.media.model.Selection||(this.options.selection=new wp.media.model.Selection(a,{multiple:this.options.multiple})),this._selection={attachments:new wp.media.model.Attachments,difference:[]}},createStates:function(){var a=this.options;this.options.states||this.states.add([new wp.media.controller.Library({library:wp.media.query(a.library),multiple:a.multiple,title:a.title,priority:20})])},bindHandlers:function(){this.on("router:create:browse",this.createRouter,this),this.on("router:render:browse",this.browseRouter,this),this.on("content:create:browse",this.browseContent,this),this.on("content:render:upload",this.uploadContent,this),this.on("toolbar:create:select",this.createSelectToolbar,this)},browseRouter:function(a){a.set({upload:{text:f.uploadFilesTitle,priority:20},browse:{text:f.mediaLibraryTitle,priority:40}})},browseContent:function(a){var b=this.state();this.$el.removeClass("hide-toolbar"),a.view=new wp.media.view.AttachmentsBrowser({controller:this,collection:b.get("library"),selection:b.get("selection"),model:b,sortable:b.get("sortable"),search:b.get("searchable"),filters:b.get("filterable"),date:b.get("date"),display:b.has("display")?b.get("display"):b.get("displaySettings"),dragInfo:b.get("dragInfo"),idealColumnWidth:b.get("idealColumnWidth"),suggestedWidth:b.get("suggestedWidth"),suggestedHeight:b.get("suggestedHeight"),AttachmentView:b.get("AttachmentView")})},uploadContent:function(){this.$el.removeClass("hide-toolbar"),this.content.set(new wp.media.view.UploaderInline({controller:this}))},createSelectToolbar:function(a,b){b=b||this.options.button||{},b.controller=this,a.view=new wp.media.view.Toolbar.Select(b)}}),b.exports=d},{}],47:[function(a,b,c){var d=wp.media.View.extend({className:"media-iframe",render:function(){return this.views.detach(),this.$el.html('<iframe src="'+this.controller.state().get("src")+'" />'),this.views.render(),this}});b.exports=d},{}],48:[function(a,b,c){var d,e=wp.media.view.Settings.AttachmentDisplay,f=jQuery;d=e.extend({className:"image-details",template:wp.template("image-details"),events:_.defaults(e.prototype.events,{"click .edit-attachment":"editAttachment","click .replace-attachment":"replaceAttachment","click .advanced-toggle":"onToggleAdvanced",'change [data-setting="customWidth"]':"onCustomSize",'change [data-setting="customHeight"]':"onCustomSize",'keyup [data-setting="customWidth"]':"onCustomSize",'keyup [data-setting="customHeight"]':"onCustomSize"}),initialize:function(){this.options.attachment=this.model.attachment,this.listenTo(this.model,"change:url",this.updateUrl),this.listenTo(this.model,"change:link",this.toggleLinkSettings),this.listenTo(this.model,"change:size",this.toggleCustomSize),e.prototype.initialize.apply(this,arguments)},prepare:function(){var a=!1;return this.model.attachment&&(a=this.model.attachment.toJSON()),_.defaults({model:this.model.toJSON(),attachment:a},this.options)},render:function(){var a=arguments;return this.model.attachment&&"pending"===this.model.dfd.state()?this.model.dfd.done(_.bind(function(){e.prototype.render.apply(this,a),this.postRender()},this)).fail(_.bind(function(){this.model.attachment=!1,e.prototype.render.apply(this,a),this.postRender()},this)):(e.prototype.render.apply(this,arguments),this.postRender()),this},postRender:function(){setTimeout(_.bind(this.resetFocus,this),10),this.toggleLinkSettings(),"show"===window.getUserSetting("advImgDetails")&&this.toggleAdvanced(!0),this.trigger("post-render")},resetFocus:function(){this.$(".link-to-custom").blur(),this.$(".embed-media-settings").scrollTop(0)},updateUrl:function(){this.$(".image img").attr("src",this.model.get("url")),this.$(".url").val(this.model.get("url"))},toggleLinkSettings:function(){"none"===this.model.get("link")?this.$(".link-settings").addClass("hidden"):this.$(".link-settings").removeClass("hidden")},toggleCustomSize:function(){"custom"!==this.model.get("size")?this.$(".custom-size").addClass("hidden"):this.$(".custom-size").removeClass("hidden")},onCustomSize:function(a){var b,c=f(a.target).data("setting"),d=f(a.target).val();return!/^\d+/.test(d)||parseInt(d,10)<1?void a.preventDefault():void("customWidth"===c?(b=Math.round(1/this.model.get("aspectRatio")*d),this.model.set("customHeight",b,{silent:!0}),this.$('[data-setting="customHeight"]').val(b)):(b=Math.round(this.model.get("aspectRatio")*d),this.model.set("customWidth",b,{silent:!0}),this.$('[data-setting="customWidth"]').val(b)))},onToggleAdvanced:function(a){a.preventDefault(),this.toggleAdvanced()},toggleAdvanced:function(a){var b,c=this.$el.find(".advanced-section");c.hasClass("advanced-visible")||a===!1?(c.removeClass("advanced-visible"),c.find(".advanced-settings").addClass("hidden"),b="hide"):(c.addClass("advanced-visible"),c.find(".advanced-settings").removeClass("hidden"),b="show"),window.setUserSetting("advImgDetails",b)},editAttachment:function(a){var b=this.controller.states.get("edit-image");window.imageEdit&&b&&(a.preventDefault(),b.set("image",this.model.attachment),this.controller.setState("edit-image"))},replaceAttachment:function(a){a.preventDefault(),this.controller.setState("replace-image")}}),b.exports=d},{}],49:[function(a,b,c){var d=wp.media.View.extend({tagName:"label",className:"screen-reader-text",initialize:function(){this.value=this.options.value},render:function(){return this.$el.html(this.value),this}});b.exports=d},{}],50:[function(a,b,c){var d,e=wp.media.view.Frame,f=jQuery;d=e.extend({className:"media-frame",template:wp.template("media-frame"),regions:["menu","title","content","toolbar","router"],events:{"click div.media-frame-title h1":"toggleMenu"},initialize:function(){e.prototype.initialize.apply(this,arguments),_.defaults(this.options,{title:"",modal:!0,uploader:!0}),this.$el.addClass("wp-core-ui"),this.options.modal&&(this.modal=new wp.media.view.Modal({controller:this,title:this.options.title}),this.modal.content(this)),(wp.Uploader.limitExceeded||!wp.Uploader.browser.supported)&&(this.options.uploader=!1),this.options.uploader&&(this.uploader=new wp.media.view.UploaderWindow({controller:this,uploader:{dropzone:this.modal?this.modal.$el:this.$el,container:this.$el}}),this.views.set(".media-frame-uploader",this.uploader)),this.on("attach",_.bind(this.views.ready,this.views),this),this.on("title:create:default",this.createTitle,this),this.title.mode("default"),this.on("title:render",function(a){a.$el.append('<span class="dashicons dashicons-arrow-down"></span>')}),this.on("menu:create:default",this.createMenu,this)},render:function(){return!this.state()&&this.options.state&&this.setState(this.options.state),e.prototype.render.apply(this,arguments)},createTitle:function(a){a.view=new wp.media.View({controller:this,tagName:"h1"})},createMenu:function(a){a.view=new wp.media.view.Menu({controller:this})},toggleMenu:function(){this.$el.find(".media-menu").toggleClass("visible")},createToolbar:function(a){a.view=new wp.media.view.Toolbar({controller:this})},createRouter:function(a){a.view=new wp.media.view.Router({controller:this})},createIframeStates:function(a){var b,c=wp.media.view.settings,d=c.tabs,e=c.tabUrl;d&&e&&(b=f("#post_ID"),b.length&&(e+="&post_id="+b.val()),_.each(d,function(b,c){this.state("iframe:"+c).set(_.defaults({tab:c,src:e+"&tab="+c,title:b,content:"iframe",menu:"default"},a))},this),this.on("content:create:iframe",this.iframeContent,this),this.on("content:deactivate:iframe",this.iframeContentCleanup,this),this.on("menu:render:default",this.iframeMenu,this),this.on("open",this.hijackThickbox,this),this.on("close",this.restoreThickbox,this))},iframeContent:function(a){this.$el.addClass("hide-toolbar"),a.view=new wp.media.view.Iframe({controller:this})},iframeContentCleanup:function(){this.$el.removeClass("hide-toolbar")},iframeMenu:function(a){var b={};a&&(_.each(wp.media.view.settings.tabs,function(a,c){b["iframe:"+c]={text:this.state("iframe:"+c).get("title"),priority:200}},this),a.set(b))},hijackThickbox:function(){var a=this;window.tb_remove&&!this._tb_remove&&(this._tb_remove=window.tb_remove,window.tb_remove=function(){a.close(),a.reset(),a.setState(a.options.state),a._tb_remove.call(window)})},restoreThickbox:function(){this._tb_remove&&(window.tb_remove=this._tb_remove,delete this._tb_remove)}}),_.each(["open","close","attach","detach","escape"],function(a){d.prototype[a]=function(){return this.modal&&this.modal[a].apply(this.modal,arguments),this}}),b.exports=d},{}],51:[function(a,b,c){var d,e=jQuery;d=wp.media.View.extend({tagName:"a",className:"media-menu-item",attributes:{href:"#"},events:{click:"_click"},_click:function(a){var b=this.options.click;a&&a.preventDefault(),b?b.call(this):this.click(),wp.media.isTouchDevice||e(".media-frame-content input").first().focus()},click:function(){var a=this.options.state;a&&(this.controller.setState(a),this.views.parent.$el.removeClass("visible"))},render:function(){var a=this.options;return a.text?this.$el.text(a.text):a.html&&this.$el.html(a.html),this}}),b.exports=d},{}],52:[function(a,b,c){var d,e=wp.media.view.MenuItem,f=wp.media.view.PriorityList;d=f.extend({tagName:"div",className:"media-menu",property:"state",ItemView:e,region:"menu",toView:function(a,b){return a=a||{},a[this.property]=a[this.property]||b,new this.ItemView(a).render()},ready:function(){f.prototype.ready.apply(this,arguments),this.visibility()},set:function(){f.prototype.set.apply(this,arguments),this.visibility()},unset:function(){f.prototype.unset.apply(this,arguments),this.visibility()},visibility:function(){var a=this.region,b=this.controller[a].get(),c=this.views.get(),d=!c||c.length<2;this===b&&this.controller.$el.toggleClass("hide-"+a,d)},select:function(a){var b=this.get(a);b&&(this.deselect(),b.$el.addClass("active"))},deselect:function(){this.$el.children().removeClass("active")},hide:function(a){var b=this.get(a);b&&b.$el.addClass("hidden")},show:function(a){var b=this.get(a);b&&b.$el.removeClass("hidden")}}),b.exports=d},{}],53:[function(a,b,c){var d,e=jQuery;d=wp.media.View.extend({tagName:"div",template:wp.template("media-modal"),attributes:{tabindex:0},events:{"click .media-modal-backdrop, .media-modal-close":"escapeHandler",keydown:"keydown"},initialize:function(){_.defaults(this.options,{container:document.body,title:"",propagate:!0,freeze:!0}),this.focusManager=new wp.media.view.FocusManager({el:this.el})},prepare:function(){return{title:this.options.title}},attach:function(){return this.views.attached?this:(this.views.rendered||this.render(),this.$el.appendTo(this.options.container),this.views.attached=!0,this.views.ready(),this.propagate("attach"))},detach:function(){return this.$el.is(":visible")&&this.close(),this.$el.detach(),this.views.attached=!1,this.propagate("detach")},open:function(){var a,b=this.$el,c=this.options;return b.is(":visible")?this:(this.views.attached||this.attach(),c.freeze&&(this._freeze={scrollTop:e(window).scrollTop()}),e("body").addClass("modal-open"),b.show(),"ontouchend"in document&&(a=window.tinymce&&window.tinymce.activeEditor)&&!a.isHidden()&&a.iframeElement&&(a.iframeElement.focus(),a.iframeElement.blur(),setTimeout(function(){a.iframeElement.blur()},100)),this.$el.focus(),this.propagate("open"))},close:function(a){var b=this._freeze;return this.views.attached&&this.$el.is(":visible")?(e("body").removeClass("modal-open"),this.$el.hide().undelegate("keydown"),e("#wpbody-content").focus(),this.propagate("close"),b&&e(window).scrollTop(b.scrollTop),a&&a.escape&&this.propagate("escape"),this):this},escape:function(){return this.close({escape:!0})},escapeHandler:function(a){a.preventDefault(),this.escape()},content:function(a){return this.views.set(".media-modal-content",a),this},propagate:function(a){return this.trigger(a),this.options.propagate&&this.controller.trigger(a),this},keydown:function(a){27===a.which&&this.$el.is(":visible")&&(this.escape(),a.stopImmediatePropagation())}}),b.exports=d},{}],54:[function(a,b,c){var d=wp.media.View.extend({tagName:"div",initialize:function(){this._views={},this.set(_.extend({},this._views,this.options.views),{silent:!0}),delete this.options.views,this.options.silent||this.render()},set:function(a,b,c){var d,e,f;return c=c||{},_.isObject(a)?(_.each(a,function(a,b){this.set(b,a)},this),this):(b instanceof Backbone.View||(b=this.toView(b,a,c)),b.controller=b.controller||this.controller,this.unset(a),d=b.options.priority||10,e=this.views.get()||[],_.find(e,function(a,b){return a.options.priority>d?(f=b,!0):void 0}),this._views[a]=b,this.views.add(b,{at:_.isNumber(f)?f:e.length||0}),this)},get:function(a){return this._views[a]},unset:function(a){var b=this.get(a);return b&&b.remove(),delete this._views[a],this},toView:function(a){return new wp.media.View(a)}});b.exports=d},{}],55:[function(a,b,c){var d=wp.media.view.MenuItem.extend({click:function(){var a=this.options.contentMode;a&&this.controller.content.mode(a)}});b.exports=d},{}],56:[function(a,b,c){var d,e=wp.media.view.Menu;d=e.extend({tagName:"div",className:"media-router",property:"contentMode",ItemView:wp.media.view.RouterItem,region:"router",initialize:function(){this.controller.on("content:render",this.update,this),e.prototype.initialize.apply(this,arguments)},update:function(){var a=this.controller.content.mode();a&&this.select(a)}}),b.exports=d},{}],57:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.View.extend({tagName:"input",className:"search",id:"media-search-input",attributes:{type:"search",placeholder:e.search},events:{input:"search",keyup:"search",change:"search",search:"search"},render:function(){return this.el.value=this.model.escape("search"),this},search:function(a){a.target.value?this.model.set("search",a.target.value):this.model.unset("search")}}),b.exports=d},{}],58:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.View.extend({tagName:"div",className:"media-selection",template:wp.template("media-selection"),events:{"click .edit-selection":"edit","click .clear-selection":"clear"},initialize:function(){_.defaults(this.options,{editable:!1,clearable:!0}),this.attachments=new wp.media.view.Attachments.Selection({controller:this.controller,collection:this.collection,selection:this.collection,model:new Backbone.Model}),this.views.set(".selection-view",this.attachments),this.collection.on("add remove reset",this.refresh,this),this.controller.on("content:activate",this.refresh,this)},ready:function(){this.refresh()},refresh:function(){if(this.$el.children().length){var a=this.collection,b="edit-selection"===this.controller.content.mode();this.$el.toggleClass("empty",!a.length),this.$el.toggleClass("one",1===a.length),this.$el.toggleClass("editing",b),this.$(".count").text(e.selected.replace("%d",a.length))}},edit:function(a){a.preventDefault(),this.options.editable&&this.options.editable.call(this,this.collection)},clear:function(a){a.preventDefault(),this.collection.reset(),this.controller.modal.focusManager.focus()}}),b.exports=d},{}],59:[function(a,b,c){var d,e=wp.media.View,f=Backbone.$;d=e.extend({events:{"click button":"updateHandler","change input":"updateHandler","change select":"updateHandler","change textarea":"updateHandler"},initialize:function(){this.model=this.model||new Backbone.Model,this.listenTo(this.model,"change",this.updateChanges)},prepare:function(){return _.defaults({model:this.model.toJSON()},this.options)},render:function(){return e.prototype.render.apply(this,arguments),_(this.model.attributes).chain().keys().each(this.update,this),this},update:function(a){var b,c,d=this.model.get(a),e=this.$('[data-setting="'+a+'"]');e.length&&(e.is("select")?(c=e.find('[value="'+d+'"]'),c.length?(e.find("option").prop("selected",!1),c.prop("selected",!0)):this.model.set(a,e.find(":selected").val())):e.hasClass("button-group")?(b=e.find("button").removeClass("active"),b.filter('[value="'+d+'"]').addClass("active")):e.is('input[type="text"], textarea')?e.is(":focus")||e.val(d):e.is('input[type="checkbox"]')&&e.prop("checked",!!d&&"false"!==d))},updateHandler:function(a){var b,c=f(a.target).closest("[data-setting]"),d=a.target.value;a.preventDefault(),c.length&&(c.is('input[type="checkbox"]')&&(d=c[0].checked),this.model.set(c.data("setting"),d),(b=c.data("userSetting"))&&window.setUserSetting(b,d))},updateChanges:function(a){a.hasChanged()&&_(a.changed).chain().keys().each(this.update,this)}}),b.exports=d},{}],60:[function(a,b,c){var d,e=wp.media.view.Settings;d=e.extend({className:"attachment-display-settings",template:wp.template("attachment-display-settings"),initialize:function(){var a=this.options.attachment;_.defaults(this.options,{userSettings:!1}),e.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change:link",this.updateLinkTo),a&&a.on("change:uploading",this.render,this)},dispose:function(){var a=this.options.attachment;a&&a.off(null,null,this),e.prototype.dispose.apply(this,arguments)},render:function(){var a=this.options.attachment;return a&&_.extend(this.options,{sizes:a.get("sizes"),type:a.get("type")}),e.prototype.render.call(this),this.updateLinkTo(),this},updateLinkTo:function(){var a=this.model.get("link"),b=this.$(".link-to-custom"),c=this.options.attachment;return"none"===a||"embed"===a||!c&&"custom"!==a?void b.addClass("hidden"):(c&&("post"===a?b.val(c.get("link")):"file"===a?b.val(c.get("url")):this.model.get("linkUrl")||b.val("http://"),b.prop("readonly","custom"!==a)),b.removeClass("hidden"),void(!wp.media.isTouchDevice&&b.is(":visible")&&b.focus()[0].select()))}}),b.exports=d},{}],61:[function(a,b,c){var d=wp.media.view.Settings.extend({className:"collection-settings gallery-settings",template:wp.template("gallery-settings")});b.exports=d},{}],62:[function(a,b,c){var d=wp.media.view.Settings.extend({className:"collection-settings playlist-settings",template:wp.template("playlist-settings")});b.exports=d},{}],63:[function(a,b,c){var d=wp.media.view.PriorityList.extend({className:"media-sidebar"});b.exports=d},{}],64:[function(a,b,c){var d,e=wp.media.view;d=e.Cropper.extend({className:"crop-content site-icon",ready:function(){e.Cropper.prototype.ready.apply(this,arguments),this.$(".crop-image").on("load",_.bind(this.addSidebar,this))},addSidebar:function(){this.sidebar=new wp.media.view.Sidebar({controller:this.controller}),this.sidebar.set("preview",new wp.media.view.SiteIconPreview({controller:this.controller,attachment:this.options.attachment})),this.controller.cropperView.views.add(this.sidebar)}}),b.exports=d},{}],65:[function(a,b,c){var d,e=wp.media.View,f=jQuery;d=e.extend({className:"site-icon-preview",template:wp.template("site-icon-preview"),ready:function(){this.controller.imgSelect.setOptions({onInit:this.updatePreview,onSelectChange:this.updatePreview})},prepare:function(){return{url:this.options.attachment.get("url")}},updatePreview:function(a,b){var c=64/b.width,d=64/b.height,e=16/b.width,g=16/b.height;f("#preview-app-icon").css({width:Math.round(c*this.imageWidth)+"px",height:Math.round(d*this.imageHeight)+"px",marginLeft:"-"+Math.round(c*b.x1)+"px",marginTop:"-"+Math.round(d*b.y1)+"px"}),f("#preview-favicon").css({width:Math.round(e*this.imageWidth)+"px",height:Math.round(g*this.imageHeight)+"px",marginLeft:"-"+Math.round(e*b.x1)+"px",marginTop:"-"+Math.floor(g*b.y1)+"px"})}}),b.exports=d},{}],66:[function(a,b,c){var d=wp.media.View.extend({tagName:"span",className:"spinner",spinnerTimeout:!1,delay:400,show:function(){return this.spinnerTimeout||(this.spinnerTimeout=_.delay(function(a){a.addClass("is-active")},this.delay,this.$el)),this},hide:function(){return this.$el.removeClass("is-active"),this.spinnerTimeout=clearTimeout(this.spinnerTimeout),this}});b.exports=d},{}],67:[function(a,b,c){var d,e=wp.media.View;d=e.extend({tagName:"div",className:"media-toolbar",initialize:function(){var a=this.controller.state(),b=this.selection=a.get("selection"),c=this.library=a.get("library");this._views={},this.primary=new wp.media.view.PriorityList,this.secondary=new wp.media.view.PriorityList,this.primary.$el.addClass("media-toolbar-primary search-form"),this.secondary.$el.addClass("media-toolbar-secondary"),this.views.set([this.secondary,this.primary]),this.options.items&&this.set(this.options.items,{silent:!0}),this.options.silent||this.render(),b&&b.on("add remove reset",this.refresh,this),c&&c.on("add remove reset",this.refresh,this)},dispose:function(){return this.selection&&this.selection.off(null,null,this),this.library&&this.library.off(null,null,this),e.prototype.dispose.apply(this,arguments)},ready:function(){this.refresh()},set:function(a,b,c){var d;return c=c||{},_.isObject(a)?_.each(a,function(a,b){this.set(b,a,{silent:!0})},this):(b instanceof Backbone.View||(b.classes=["media-button-"+a].concat(b.classes||[]),b=new wp.media.view.Button(b).render()),b.controller=b.controller||this.controller,this._views[a]=b,d=b.options.priority<0?"secondary":"primary",this[d].set(a,b,c)),c.silent||this.refresh(),this},get:function(a){return this._views[a]},unset:function(a,b){return delete this._views[a],this.primary.unset(a,b),this.secondary.unset(a,b),b&&b.silent||this.refresh(),this},refresh:function(){var a=this.controller.state(),b=a.get("library"),c=a.get("selection");_.each(this._views,function(a){if(a.model&&a.options&&a.options.requires){var d=a.options.requires,e=!1;e=_.some(c.models,function(a){return a.get("uploading")===!0}),d.selection&&c&&!c.length?e=!0:d.library&&b&&!b.length&&(e=!0),a.model.set("disabled",e)}})}}),b.exports=d},{}],68:[function(a,b,c){var d,e=wp.media.view.Toolbar.Select,f=wp.media.view.l10n;d=e.extend({initialize:function(){_.defaults(this.options,{text:f.insertIntoPost,requires:!1}),e.prototype.initialize.apply(this,arguments)},refresh:function(){var a=this.controller.state().props.get("url");this.get("select").model.set("disabled",!a||"http://"===a),e.prototype.refresh.apply(this,arguments)}}),b.exports=d},{}],69:[function(a,b,c){var d,e=wp.media.view.Toolbar,f=wp.media.view.l10n;d=e.extend({initialize:function(){var a=this.options;_.bindAll(this,"clickSelect"),_.defaults(a,{event:"select",state:!1,reset:!0,close:!0,text:f.select,requires:{selection:!0}}),a.items=_.defaults(a.items||{},{select:{style:"primary",text:a.text,priority:80,click:this.clickSelect,requires:a.requires}}),e.prototype.initialize.apply(this,arguments)},clickSelect:function(){var a=this.options,b=this.controller;a.close&&b.close(),a.event&&b.state().trigger(a.event),a.state&&b.setState(a.state),a.reset&&b.reset()}}),b.exports=d},{}],70:[function(a,b,c){var d,e=wp.media.View,f=wp.media.view.l10n,g=jQuery;d=e.extend({tagName:"div",className:"uploader-editor",template:wp.template("uploader-editor"),localDrag:!1,overContainer:!1,overDropzone:!1,draggingFile:null,initialize:function(){return this.initialized=!1,window.tinyMCEPreInit&&window.tinyMCEPreInit.dragDropUpload&&this.browserSupport()?(this.$document=g(document),this.dropzones=[],this.files=[],this.$document.on("drop",".uploader-editor",_.bind(this.drop,this)),this.$document.on("dragover",".uploader-editor",_.bind(this.dropzoneDragover,this)),this.$document.on("dragleave",".uploader-editor",_.bind(this.dropzoneDragleave,this)),this.$document.on("click",".uploader-editor",_.bind(this.click,this)),this.$document.on("dragover",_.bind(this.containerDragover,this)),
-this.$document.on("dragleave",_.bind(this.containerDragleave,this)),this.$document.on("dragstart dragend drop",_.bind(function(a){this.localDrag="dragstart"===a.type,"drop"===a.type&&this.containerDragleave()},this)),this.initialized=!0,this):this},browserSupport:function(){var a=!1,b=document.createElement("div");return a="draggable"in b||"ondragstart"in b&&"ondrop"in b,a=a&&!!(window.File&&window.FileList&&window.FileReader)},isDraggingFile:function(a){return null!==this.draggingFile?this.draggingFile:_.isUndefined(a.originalEvent)||_.isUndefined(a.originalEvent.dataTransfer)?!1:(this.draggingFile=_.indexOf(a.originalEvent.dataTransfer.types,"Files")>-1&&-1===_.indexOf(a.originalEvent.dataTransfer.types,"text/plain"),this.draggingFile)},refresh:function(a){var b;for(b in this.dropzones)this.dropzones[b].toggle(this.overContainer||this.overDropzone);return _.isUndefined(a)||g(a.target).closest(".uploader-editor").toggleClass("droppable",this.overDropzone),this.overContainer||this.overDropzone||(this.draggingFile=null),this},render:function(){return this.initialized?(e.prototype.render.apply(this,arguments),g(".wp-editor-wrap").each(_.bind(this.attach,this)),this):this},attach:function(a,b){var c=this.$el.clone();return this.dropzones.push(c),g(b).append(c),this},drop:function(a){var b,c;return this.containerDragleave(a),this.dropzoneDragleave(a),this.files=a.originalEvent.dataTransfer.files,this.files.length<1?void 0:(b=g(a.target).parents(".wp-editor-wrap"),b.length>0&&b[0].id&&(window.wpActiveEditor=b[0].id.slice(3,-5)),this.workflow?(this.workflow.state().reset(),this.addFiles.apply(this),this.workflow.open()):(this.workflow=wp.media.editor.open(window.wpActiveEditor,{frame:"post",state:"insert",title:f.addMedia,multiple:!0}),c=this.workflow.uploader,c.uploader&&c.uploader.ready?this.addFiles.apply(this):this.workflow.on("uploader:ready",this.addFiles,this)),!1)},addFiles:function(){return this.files.length&&(this.workflow.uploader.uploader.uploader.addFile(_.toArray(this.files)),this.files=[]),this},containerDragover:function(a){!this.localDrag&&this.isDraggingFile(a)&&(this.overContainer=!0,this.refresh())},containerDragleave:function(){this.overContainer=!1,_.delay(_.bind(this.refresh,this),50)},dropzoneDragover:function(a){return!this.localDrag&&this.isDraggingFile(a)?(this.overDropzone=!0,this.refresh(a),!1):void 0},dropzoneDragleave:function(a){this.overDropzone=!1,_.delay(_.bind(this.refresh,this,a),50)},click:function(a){this.containerDragleave(a),this.dropzoneDragleave(a),this.localDrag=!1}}),b.exports=d},{}],71:[function(a,b,c){var d,e=wp.media.View;d=e.extend({tagName:"div",className:"uploader-inline",template:wp.template("uploader-inline"),events:{"click .close":"hide"},initialize:function(){_.defaults(this.options,{message:"",status:!0,canClose:!1}),!this.options.$browser&&this.controller.uploader&&(this.options.$browser=this.controller.uploader.$browser),_.isUndefined(this.options.postId)&&(this.options.postId=wp.media.view.settings.post.id),this.options.status&&this.views.set(".upload-inline-status",new wp.media.view.UploaderStatus({controller:this.controller}))},prepare:function(){var a=this.controller.state().get("suggestedWidth"),b=this.controller.state().get("suggestedHeight"),c={};return c.message=this.options.message,c.canClose=this.options.canClose,a&&b&&(c.suggestedWidth=a,c.suggestedHeight=b),c},dispose:function(){return this.disposing?e.prototype.dispose.apply(this,arguments):(this.disposing=!0,this.remove())},remove:function(){var a=e.prototype.remove.apply(this,arguments);return _.defer(_.bind(this.refresh,this)),a},refresh:function(){var a=this.controller.uploader;a&&a.refresh()},ready:function(){var a,b=this.options.$browser;if(this.controller.uploader){if(a=this.$(".browser"),a[0]===b[0])return;b.detach().text(a.text()),b[0].className=a[0].className,a.replaceWith(b.show())}return this.refresh(),this},show:function(){this.$el.removeClass("hidden")},hide:function(){this.$el.addClass("hidden")}}),b.exports=d},{}],72:[function(a,b,c){var d=wp.media.View.extend({className:"upload-error",template:wp.template("uploader-status-error")});b.exports=d},{}],73:[function(a,b,c){var d,e=wp.media.View;d=e.extend({className:"media-uploader-status",template:wp.template("uploader-status"),events:{"click .upload-dismiss-errors":"dismiss"},initialize:function(){this.queue=wp.Uploader.queue,this.queue.on("add remove reset",this.visibility,this),this.queue.on("add remove reset change:percent",this.progress,this),this.queue.on("add remove reset change:uploading",this.info,this),this.errors=wp.Uploader.errors,this.errors.reset(),this.errors.on("add remove reset",this.visibility,this),this.errors.on("add",this.error,this)},dispose:function(){return wp.Uploader.queue.off(null,null,this),e.prototype.dispose.apply(this,arguments),this},visibility:function(){this.$el.toggleClass("uploading",!!this.queue.length),this.$el.toggleClass("errors",!!this.errors.length),this.$el.toggle(!!this.queue.length||!!this.errors.length)},ready:function(){_.each({$bar:".media-progress-bar div",$index:".upload-index",$total:".upload-total",$filename:".upload-filename"},function(a,b){this[b]=this.$(a)},this),this.visibility(),this.progress(),this.info()},progress:function(){var a=this.queue,b=this.$bar;b&&a.length&&b.width(a.reduce(function(a,b){if(!b.get("uploading"))return a+100;var c=b.get("percent");return a+(_.isNumber(c)?c:100)},0)/a.length+"%")},info:function(){var a,b=this.queue,c=0;b.length&&(a=this.queue.find(function(a,b){return c=b,a.get("uploading")}),this.$index.text(c+1),this.$total.text(b.length),this.$filename.html(a?this.filename(a.get("filename")):""))},filename:function(a){return _.escape(a)},error:function(a){this.views.add(".upload-errors",new wp.media.view.UploaderStatusError({filename:this.filename(a.get("file").name),message:a.get("message")}),{at:0})},dismiss:function(a){var b=this.views.get(".upload-errors");a.preventDefault(),b&&_.invoke(b,"remove"),wp.Uploader.errors.reset()}}),b.exports=d},{}],74:[function(a,b,c){var d,e=jQuery;d=wp.media.View.extend({tagName:"div",className:"uploader-window",template:wp.template("uploader-window"),initialize:function(){var a;this.$browser=e('<a href="#" class="browser" />').hide().appendTo("body"),a=this.options.uploader=_.defaults(this.options.uploader||{},{dropzone:this.$el,browser:this.$browser,params:{}}),!a.dropzone||a.dropzone instanceof e||(a.dropzone=e(a.dropzone)),this.controller.on("activate",this.refresh,this),this.controller.on("detach",function(){this.$browser.remove()},this)},refresh:function(){this.uploader&&this.uploader.refresh()},ready:function(){var a,b=wp.media.view.settings.post.id;this.uploader||(b&&(this.options.uploader.params.post_id=b),this.uploader=new wp.Uploader(this.options.uploader),a=this.uploader.dropzone,a.on("dropzone:enter",_.bind(this.show,this)),a.on("dropzone:leave",_.bind(this.hide,this)),e(this.uploader).on("uploader:ready",_.bind(this._ready,this)))},_ready:function(){this.controller.trigger("uploader:ready")},show:function(){var a=this.$el.show();_.defer(function(){a.css({opacity:1})})},hide:function(){var a=this.$el.css({opacity:0});wp.media.transition(a).done(function(){"0"===a.css("opacity")&&a.hide()}),_.delay(function(){"0"===a.css("opacity")&&a.is(":visible")&&a.hide()},500)}}),b.exports=d},{}],75:[function(a,b,c){var d=wp.Backbone.View.extend({constructor:function(a){a&&a.controller&&(this.controller=a.controller),wp.Backbone.View.apply(this,arguments)},dispose:function(){return this.undelegateEvents(),this.model&&this.model.off&&this.model.off(null,null,this),this.collection&&this.collection.off&&this.collection.off(null,null,this),this.controller&&this.controller.off&&this.controller.off(null,null,this),this},remove:function(){return this.dispose(),wp.Backbone.View.prototype.remove.apply(this,arguments)}});b.exports=d},{}]},{},[19]);
\ No newline at end of file
+!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){var d,e=wp.media.model.Selection,f=wp.media.controller.Library;d=f.extend({defaults:_.defaults({multiple:"add",filterable:"uploaded",priority:100,syncSelection:!1},f.prototype.defaults),initialize:function(){var a=this.get("collectionType");"video"===this.get("type")&&(a="video-"+a),this.set("id",a+"-library"),this.set("toolbar",a+"-add"),this.set("menu",a),this.get("library")||this.set("library",wp.media.query({type:this.get("type")})),f.prototype.initialize.apply(this,arguments)},activate:function(){var a=this.get("library"),b=this.get("editLibrary"),c=this.frame.state(this.get("collectionType")+"-edit").get("library");b&&b!==c&&a.unobserve(b),a.validator=function(a){return!!this.mirroring.get(a.cid)&&!c.get(a.cid)&&e.prototype.validator.apply(this,arguments)},a.reset(a.mirroring.models,{silent:!0}),a.observe(c),this.set("editLibrary",c),f.prototype.activate.apply(this,arguments)}}),b.exports=d},{}],2:[function(a,b,c){var d,e=wp.media.controller.Library,f=wp.media.view.l10n,g=jQuery;d=e.extend({defaults:{multiple:!1,sortable:!0,date:!1,searchable:!1,content:"browse",describe:!0,dragInfo:!0,idealColumnWidth:170,editing:!1,priority:60,SettingsView:!1,syncSelection:!1},initialize:function(){var a=this.get("collectionType");"video"===this.get("type")&&(a="video-"+a),this.set("id",a+"-edit"),this.set("toolbar",a+"-edit"),this.get("library")||this.set("library",new wp.media.model.Selection),this.get("AttachmentView")||this.set("AttachmentView",wp.media.view.Attachment.EditLibrary),e.prototype.initialize.apply(this,arguments)},activate:function(){var a=this.get("library");a.props.set("type",this.get("type")),this.get("library").observe(wp.Uploader.queue),this.frame.on("content:render:browse",this.renderSettings,this),e.prototype.activate.apply(this,arguments)},deactivate:function(){this.get("library").unobserve(wp.Uploader.queue),this.frame.off("content:render:browse",this.renderSettings,this),e.prototype.deactivate.apply(this,arguments)},renderSettings:function(a){var b=this.get("library"),c=this.get("collectionType"),d=this.get("dragInfoText"),e=this.get("SettingsView"),h={};b&&a&&(b[c]=b[c]||new Backbone.Model,h[c]=new e({controller:this,model:b[c],priority:40}),a.sidebar.set(h),d&&a.toolbar.set("dragInfo",new wp.media.View({el:g('<div class="instructions">'+d+"</div>")[0],priority:-40})),a.toolbar.set("reverse",{text:f.reverseOrder,priority:80,click:function(){b.reset(b.toArray().reverse())}}))}}),b.exports=d},{}],3:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.controller.State.extend({defaults:{id:"cropper",title:e.cropImage,toolbar:"crop",content:"crop",router:!1,canSkipCrop:!1},activate:function(){this.frame.on("content:create:crop",this.createCropContent,this),this.frame.on("close",this.removeCropper,this),this.set("selection",new Backbone.Collection(this.frame._selection.single))},deactivate:function(){this.frame.toolbar.mode("browse")},createCropContent:function(){this.cropperView=new wp.media.view.Cropper({controller:this,attachment:this.get("selection").first()}),this.cropperView.on("image-loaded",this.createCropToolbar,this),this.frame.content.set(this.cropperView)},removeCropper:function(){this.imgSelect.cancelSelection(),this.imgSelect.setOptions({remove:!0}),this.imgSelect.update(),this.cropperView.remove()},createCropToolbar:function(){var a,b;a=this.get("canSkipCrop")||!1,b={controller:this.frame,items:{insert:{style:"primary",text:e.cropImage,priority:80,requires:{library:!1,selection:!1},click:function(){var a,b=this.controller;a=b.state().get("selection").first(),a.set({cropDetails:b.state().imgSelect.getSelection()}),this.$el.text(e.cropping),this.$el.attr("disabled",!0),b.state().doCrop(a).done(function(a){b.trigger("cropped",a),b.close()}).fail(function(){b.trigger("content:error:crop")})}}}},a&&_.extend(b.items,{skip:{style:"secondary",text:e.skipCropping,priority:70,requires:{library:!1,selection:!1},click:function(){var a=this.controller.state().get("selection").first();this.controller.state().cropperView.remove(),this.controller.trigger("skippedcrop",a),this.controller.close()}}}),this.frame.toolbar.set(new wp.media.view.Toolbar(b))},doCrop:function(a){return wp.ajax.post("custom-header-crop",{nonce:a.get("nonces").edit,id:a.get("id"),cropDetails:a.get("cropDetails")})}}),b.exports=d},{}],4:[function(a,b,c){var d,e=wp.media.controller;d=e.Cropper.extend({doCrop:function(a){var b=a.get("cropDetails"),c=this.get("control");return b.dst_width=c.params.width,b.dst_height=c.params.height,wp.ajax.post("crop-image",{wp_customize:"on",nonce:a.get("nonces").edit,id:a.get("id"),context:c.id,cropDetails:b})}}),b.exports=d},{}],5:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.controller.State.extend({defaults:{id:"edit-image",title:e.editImage,menu:!1,toolbar:"edit-image",content:"edit-image",url:""},activate:function(){this.listenTo(this.frame,"toolbar:render:edit-image",this.toolbar)},deactivate:function(){this.stopListening(this.frame)},toolbar:function(){var a=this.frame,b=a.lastState(),c=b&&b.id;a.toolbar.set(new wp.media.view.Toolbar({controller:a,items:{back:{style:"primary",text:e.back,priority:20,click:function(){c?a.setState(c):a.close()}}}}))}}),b.exports=d},{}],6:[function(a,b,c){var d,e=wp.media.view.l10n,f=Backbone.$;d=wp.media.controller.State.extend({defaults:{id:"embed",title:e.insertFromUrlTitle,content:"embed",menu:"default",toolbar:"main-embed",priority:120,type:"link",url:"",metadata:{}},sensitivity:400,initialize:function(a){this.metadata=a.metadata,this.debouncedScan=_.debounce(_.bind(this.scan,this),this.sensitivity),this.props=new Backbone.Model(this.metadata||{url:""}),this.props.on("change:url",this.debouncedScan,this),this.props.on("change:url",this.refresh,this),this.on("scan",this.scanImage,this)},scan:function(){var a,b=this,c={type:"link",scanners:[]};this.props.get("url")&&this.trigger("scan",c),c.scanners.length?(a=c.scanners=f.when.apply(f,c.scanners),a.always(function(){b.get("scanners")===a&&b.set("loading",!1)})):c.scanners=null,c.loading=!!c.scanners,this.set(c)},scanImage:function(a){var b=this.frame,c=this,d=this.props.get("url"),e=new Image,g=f.Deferred();a.scanners.push(g.promise()),e.onload=function(){g.resolve(),c===b.state()&&d===c.props.get("url")&&(c.set({type:"image"}),c.props.set({width:e.width,height:e.height}))},e.onerror=g.reject,e.src=d},refresh:function(){this.frame.toolbar.get().refresh()},reset:function(){this.props.clear().set({url:""}),this.active&&this.refresh()}}),b.exports=d},{}],7:[function(a,b,c){var d,e=wp.media.model.Attachment,f=wp.media.controller.Library,g=wp.media.view.l10n;d=f.extend({defaults:_.defaults({id:"featured-image",title:g.setFeaturedImageTitle,multiple:!1,filterable:"uploaded",toolbar:"featured-image",priority:60,syncSelection:!0},f.prototype.defaults),initialize:function(){var a,b;this.get("library")||this.set("library",wp.media.query({type:"image"})),f.prototype.initialize.apply(this,arguments),a=this.get("library"),b=a.comparator,a.comparator=function(a,c){var d=!!this.mirroring.get(a.cid),e=!!this.mirroring.get(c.cid);return!d&&e?-1:d&&!e?1:b.apply(this,arguments)},a.observe(this.get("selection"))},activate:function(){this.updateSelection(),this.frame.on("open",this.updateSelection,this),f.prototype.activate.apply(this,arguments)},deactivate:function(){this.frame.off("open",this.updateSelection,this),f.prototype.deactivate.apply(this,arguments)},updateSelection:function(){var a,b=this.get("selection"),c=wp.media.view.settings.post.featuredImageId;""!==c&&-1!==c&&(a=e.get(c),a.fetch()),b.reset(a?[a]:[])}}),b.exports=d},{}],8:[function(a,b,c){var d,e=wp.media.model.Selection,f=wp.media.controller.Library,g=wp.media.view.l10n;d=f.extend({defaults:_.defaults({id:"gallery-library",title:g.addToGalleryTitle,multiple:"add",filterable:"uploaded",menu:"gallery",toolbar:"gallery-add",priority:100,syncSelection:!1},f.prototype.defaults),initialize:function(){this.get("library")||this.set("library",wp.media.query({type:"image"})),f.prototype.initialize.apply(this,arguments)},activate:function(){var a=this.get("library"),b=this.frame.state("gallery-edit").get("library");this.editLibrary&&this.editLibrary!==b&&a.unobserve(this.editLibrary),a.validator=function(a){return!!this.mirroring.get(a.cid)&&!b.get(a.cid)&&e.prototype.validator.apply(this,arguments)},a.reset(a.mirroring.models,{silent:!0}),a.observe(b),this.editLibrary=b,f.prototype.activate.apply(this,arguments)}}),b.exports=d},{}],9:[function(a,b,c){var d,e=wp.media.controller.Library,f=wp.media.view.l10n;d=e.extend({defaults:{id:"gallery-edit",title:f.editGalleryTitle,multiple:!1,searchable:!1,sortable:!0,date:!1,display:!1,content:"browse",toolbar:"gallery-edit",describe:!0,displaySettings:!0,dragInfo:!0,idealColumnWidth:170,editing:!1,priority:60,syncSelection:!1},initialize:function(){this.get("library")||this.set("library",new wp.media.model.Selection),this.get("AttachmentView")||this.set("AttachmentView",wp.media.view.Attachment.EditLibrary),e.prototype.initialize.apply(this,arguments)},activate:function(){var a=this.get("library");a.props.set("type","image"),this.get("library").observe(wp.Uploader.queue),this.frame.on("content:render:browse",this.gallerySettings,this),e.prototype.activate.apply(this,arguments)},deactivate:function(){this.get("library").unobserve(wp.Uploader.queue),this.frame.off("content:render:browse",this.gallerySettings,this),e.prototype.deactivate.apply(this,arguments)},gallerySettings:function(a){if(this.get("displaySettings")){var b=this.get("library");b&&a&&(b.gallery=b.gallery||new Backbone.Model,a.sidebar.set({gallery:new wp.media.view.Settings.Gallery({controller:this,model:b.gallery,priority:40})}),a.toolbar.set("reverse",{text:f.reverseOrder,priority:80,click:function(){b.reset(b.toArray().reverse())}}))}}}),b.exports=d},{}],10:[function(a,b,c){var d,e=wp.media.controller.State,f=wp.media.controller.Library,g=wp.media.view.l10n;d=e.extend({defaults:_.defaults({id:"image-details",title:g.imageDetailsTitle,content:"image-details",menu:!1,router:!1,toolbar:"image-details",editing:!1,priority:60},f.prototype.defaults),initialize:function(a){this.image=a.image,e.prototype.initialize.apply(this,arguments)},activate:function(){this.frame.modal.$el.addClass("image-details")}}),b.exports=d},{}],11:[function(a,b,c){var d,e=wp.media.view.l10n,f=window.getUserSetting,g=window.setUserSetting;d=wp.media.controller.State.extend({defaults:{id:"library",title:e.mediaLibraryTitle,multiple:!1,content:"upload",menu:"default",router:"browse",toolbar:"select",searchable:!0,filterable:!1,sortable:!0,autoSelect:!0,describe:!1,contentUserSetting:!0,syncSelection:!0},initialize:function(){var a,b=this.get("selection");this.get("library")||this.set("library",wp.media.query()),b instanceof wp.media.model.Selection||(a=b,a||(a=this.get("library").props.toJSON(),a=_.omit(a,"orderby","query")),this.set("selection",new wp.media.model.Selection(null,{multiple:this.get("multiple"),props:a}))),this.resetDisplays()},activate:function(){this.syncSelection(),wp.Uploader.queue.on("add",this.uploading,this),this.get("selection").on("add remove reset",this.refreshContent,this),this.get("router")&&this.get("contentUserSetting")&&(this.frame.on("content:activate",this.saveContentMode,this),this.set("content",f("libraryContent",this.get("content"))))},deactivate:function(){this.recordSelection(),this.frame.off("content:activate",this.saveContentMode,this),this.get("selection").off(null,null,this),wp.Uploader.queue.off(null,null,this)},reset:function(){this.get("selection").reset(),this.resetDisplays(),this.refreshContent()},resetDisplays:function(){var a=wp.media.view.settings.defaultProps;this._displays=[],this._defaultDisplaySettings={align:f("align",a.align)||"none",size:f("imgsize",a.size)||"medium",link:f("urlbutton",a.link)||"none"}},display:function(a){var b=this._displays;return b[a.cid]||(b[a.cid]=new Backbone.Model(this.defaultDisplaySettings(a))),b[a.cid]},defaultDisplaySettings:function(a){var b=_.clone(this._defaultDisplaySettings);return(b.canEmbed=this.canEmbed(a))?b.link="embed":this.isImageAttachment(a)||"none"!==b.link||(b.link="file"),b},isImageAttachment:function(a){return a.get("uploading")?/\.(jpe?g|png|gif)$/i.test(a.get("filename")):"image"===a.get("type")},canEmbed:function(a){if(!a.get("uploading")){var b=a.get("type");if("audio"!==b&&"video"!==b)return!1}return _.contains(wp.media.view.settings.embedExts,a.get("filename").split(".").pop())},refreshContent:function(){var a=this.get("selection"),b=this.frame,c=b.router.get(),d=b.content.mode();this.active&&!a.length&&c&&!c.get(d)&&this.frame.content.render(this.get("content"))},uploading:function(a){var b=this.frame.content;"upload"===b.mode()&&this.frame.content.mode("browse"),this.get("autoSelect")&&(this.get("selection").add(a),this.frame.trigger("library:selection:add"))},saveContentMode:function(){if("browse"===this.get("router")){var a=this.frame.content.mode(),b=this.frame.router.get();b&&b.get(a)&&g("libraryContent",a)}}}),_.extend(d.prototype,wp.media.selectionSync),b.exports=d},{}],12:[function(a,b,c){var d,e=wp.media.controller.Library;d=e.extend({defaults:_.defaults({filterable:"uploaded",displaySettings:!1,priority:80,syncSelection:!1},e.prototype.defaults),initialize:function(a){this.media=a.media,this.type=a.type,this.set("library",wp.media.query({type:this.type})),e.prototype.initialize.apply(this,arguments)},activate:function(){wp.media.frame.lastMime&&(this.set("library",wp.media.query({type:wp.media.frame.lastMime})),delete wp.media.frame.lastMime),e.prototype.activate.apply(this,arguments)}}),b.exports=d},{}],13:[function(a,b,c){var d=function(a){_.extend(this,_.pick(a||{},"id","view","selector"))};d.extend=Backbone.Model.extend,_.extend(d.prototype,{mode:function(a){return a?a===this._mode?this:(this.trigger("deactivate"),this._mode=a,this.render(a),this.trigger("activate"),this):this._mode},render:function(a){if(a&&a!==this._mode)return this.mode(a);var b,c={view:null};return this.trigger("create",c),b=c.view,this.trigger("render",b),b&&this.set(b),this},get:function(){return this.view.views.first(this.selector)},set:function(a,b){return b&&(b.add=!1),this.view.views.set(this.selector,a,b)},trigger:function(a){var b,c;if(this._mode)return c=_.toArray(arguments),b=this.id+":"+a,c[0]=b+":"+this._mode,this.view.trigger.apply(this.view,c),c[0]=b,this.view.trigger.apply(this.view,c),this}}),b.exports=d},{}],14:[function(a,b,c){var d,e=wp.media.controller.Library,f=wp.media.view.l10n;d=e.extend({defaults:_.defaults({id:"replace-image",title:f.replaceImageTitle,multiple:!1,filterable:"uploaded",toolbar:"replace",menu:!1,priority:60,syncSelection:!0},e.prototype.defaults),initialize:function(a){var b,c;this.image=a.image,this.get("library")||this.set("library",wp.media.query({type:"image"})),e.prototype.initialize.apply(this,arguments),b=this.get("library"),c=b.comparator,b.comparator=function(a,b){var d=!!this.mirroring.get(a.cid),e=!!this.mirroring.get(b.cid);return!d&&e?-1:d&&!e?1:c.apply(this,arguments)},b.observe(this.get("selection"))},activate:function(){this.updateSelection(),e.prototype.activate.apply(this,arguments)},updateSelection:function(){var a=this.get("selection"),b=this.image.attachment;a.reset(b?[b]:[])}}),b.exports=d},{}],15:[function(a,b,c){var d,e=wp.media.controller;d=e.Cropper.extend({activate:function(){this.frame.on("content:create:crop",this.createCropContent,this),this.frame.on("close",this.removeCropper,this),this.set("selection",new Backbone.Collection(this.frame._selection.single))},createCropContent:function(){this.cropperView=new wp.media.view.SiteIconCropper({controller:this,attachment:this.get("selection").first()}),this.cropperView.on("image-loaded",this.createCropToolbar,this),this.frame.content.set(this.cropperView)},doCrop:function(a){var b=a.get("cropDetails"),c=this.get("control");return b.dst_width=c.params.width,b.dst_height=c.params.height,wp.ajax.post("crop-image",{nonce:a.get("nonces").edit,id:a.get("id"),context:"site-icon",cropDetails:b})}}),b.exports=d},{}],16:[function(a,b,c){var d=function(a){this.states=new Backbone.Collection(a)};d.extend=Backbone.Model.extend,_.extend(d.prototype,Backbone.Events,{state:function(a){return this.states=this.states||new Backbone.Collection,a=a||this._state,a&&!this.states.get(a)&&this.states.add({id:a}),this.states.get(a)},setState:function(a){var b=this.state();return b&&a===b.id||!this.states||!this.states.get(a)?this:(b&&(b.trigger("deactivate"),this._lastState=b.id),this._state=a,this.state().trigger("activate"),this)},lastState:function(){return this._lastState?this.state(this._lastState):void 0}}),_.each(["on","off","trigger"],function(a){d.prototype[a]=function(){return this.states=this.states||new Backbone.Collection,this.states[a].apply(this.states,arguments),this}}),b.exports=d},{}],17:[function(a,b,c){var d=Backbone.Model.extend({constructor:function(){this.on("activate",this._preActivate,this),this.on("activate",this.activate,this),this.on("activate",this._postActivate,this),this.on("deactivate",this._deactivate,this),this.on("deactivate",this.deactivate,this),this.on("reset",this.reset,this),this.on("ready",this._ready,this),this.on("ready",this.ready,this),Backbone.Model.apply(this,arguments),this.on("change:menu",this._updateMenu,this)},ready:function(){},activate:function(){},deactivate:function(){},reset:function(){},_ready:function(){this._updateMenu()},_preActivate:function(){this.active=!0},_postActivate:function(){this.on("change:menu",this._menu,this),this.on("change:titleMode",this._title,this),this.on("change:content",this._content,this),this.on("change:toolbar",this._toolbar,this),this.frame.on("title:render:default",this._renderTitle,this),this._title(),this._menu(),this._toolbar(),this._content(),this._router()},_deactivate:function(){this.active=!1,this.frame.off("title:render:default",this._renderTitle,this),this.off("change:menu",this._menu,this),this.off("change:titleMode",this._title,this),this.off("change:content",this._content,this),this.off("change:toolbar",this._toolbar,this)},_title:function(){this.frame.title.render(this.get("titleMode")||"default")},_renderTitle:function(a){a.$el.text(this.get("title")||"")},_router:function(){var a,b=this.frame.router,c=this.get("router");this.frame.$el.toggleClass("hide-router",!c),c&&(this.frame.router.render(c),a=b.get(),a&&a.select&&a.select(this.frame.content.mode()))},_menu:function(){var a,b=this.frame.menu,c=this.get("menu");this.frame.$el.toggleClass("hide-menu",!c),c&&(b.mode(c),a=b.get(),a&&a.select&&a.select(this.id))},_updateMenu:function(){var a=this.previous("menu"),b=this.get("menu");a&&this.frame.off("menu:render:"+a,this._renderMenu,this),b&&this.frame.on("menu:render:"+b,this._renderMenu,this)},_renderMenu:function(a){var b=this.get("menuItem"),c=this.get("title"),d=this.get("priority");!b&&c&&(b={text:c},d&&(b.priority=d)),b&&a.set(this.id,b)}});_.each(["toolbar","content"],function(a){d.prototype["_"+a]=function(){var b=this.get(a);b&&this.frame[a].render(b)}}),b.exports=d},{}],18:[function(a,b,c){var d={syncSelection:function(){var a=this.get("selection"),b=this.frame._selection;this.get("syncSelection")&&b&&a&&(a.multiple&&(a.reset([],{silent:!0}),a.validateAll(b.attachments),b.difference=_.difference(b.attachments.models,a.models)),a.single(b.single))},recordSelection:function(){var a=this.get("selection"),b=this.frame._selection;this.get("syncSelection")&&b&&a&&(a.multiple?(b.attachments.reset(a.toArray().concat(b.difference)),b.difference=[]):b.attachments.add(a.toArray()),b.single=a._single)}};b.exports=d},{}],19:[function(a,b,c){var d,e=wp.media,f=jQuery;e.isTouchDevice="ontouchend"in document,d=e.view.l10n=window._wpMediaViewsL10n||{},e.view.settings=d.settings||{},delete d.settings,e.model.settings.post=e.view.settings.post,f.support.transition=function(){var a,b=document.documentElement.style,c={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};return a=_.find(_.keys(c),function(a){return!_.isUndefined(b[a])}),a&&{end:c[a]}}(),e.events=_.extend({},Backbone.Events),e.transition=function(a,b){var c=f.Deferred();return b=b||2e3,f.support.transition?(a instanceof f||(a=f(a)),a.first().one(f.support.transition.end,c.resolve),_.delay(c.resolve,b)):c.resolve(),c.promise()},e.controller.Region=a("./controllers/region.js"),e.controller.StateMachine=a("./controllers/state-machine.js"),e.controller.State=a("./controllers/state.js"),e.selectionSync=a("./utils/selection-sync.js"),e.controller.Library=a("./controllers/library.js"),e.controller.ImageDetails=a("./controllers/image-details.js"),e.controller.GalleryEdit=a("./controllers/gallery-edit.js"),e.controller.GalleryAdd=a("./controllers/gallery-add.js"),e.controller.CollectionEdit=a("./controllers/collection-edit.js"),e.controller.CollectionAdd=a("./controllers/collection-add.js"),e.controller.FeaturedImage=a("./controllers/featured-image.js"),e.controller.ReplaceImage=a("./controllers/replace-image.js"),e.controller.EditImage=a("./controllers/edit-image.js"),e.controller.MediaLibrary=a("./controllers/media-library.js"),e.controller.Embed=a("./controllers/embed.js"),e.controller.Cropper=a("./controllers/cropper.js"),e.controller.CustomizeImageCropper=a("./controllers/customize-image-cropper.js"),e.controller.SiteIconCropper=a("./controllers/site-icon-cropper.js"),e.View=a("./views/view.js"),e.view.Frame=a("./views/frame.js"),e.view.MediaFrame=a("./views/media-frame.js"),e.view.MediaFrame.Select=a("./views/frame/select.js"),e.view.MediaFrame.Post=a("./views/frame/post.js"),e.view.MediaFrame.ImageDetails=a("./views/frame/image-details.js"),e.view.Modal=a("./views/modal.js"),e.view.FocusManager=a("./views/focus-manager.js"),e.view.UploaderWindow=a("./views/uploader/window.js"),e.view.EditorUploader=a("./views/uploader/editor.js"),e.view.UploaderInline=a("./views/uploader/inline.js"),e.view.UploaderStatus=a("./views/uploader/status.js"),e.view.UploaderStatusError=a("./views/uploader/status-error.js"),e.view.Toolbar=a("./views/toolbar.js"),e.view.Toolbar.Select=a("./views/toolbar/select.js"),e.view.Toolbar.Embed=a("./views/toolbar/embed.js"),e.view.Button=a("./views/button.js"),e.view.ButtonGroup=a("./views/button-group.js"),e.view.PriorityList=a("./views/priority-list.js"),e.view.MenuItem=a("./views/menu-item.js"),e.view.Menu=a("./views/menu.js"),e.view.RouterItem=a("./views/router-item.js"),e.view.Router=a("./views/router.js"),e.view.Sidebar=a("./views/sidebar.js"),e.view.Attachment=a("./views/attachment.js"),e.view.Attachment.Library=a("./views/attachment/library.js"),e.view.Attachment.EditLibrary=a("./views/attachment/edit-library.js"),e.view.Attachments=a("./views/attachments.js"),e.view.Search=a("./views/search.js"),e.view.AttachmentFilters=a("./views/attachment-filters.js"),e.view.DateFilter=a("./views/attachment-filters/date.js"),e.view.AttachmentFilters.Uploaded=a("./views/attachment-filters/uploaded.js"),e.view.AttachmentFilters.All=a("./views/attachment-filters/all.js"),e.view.AttachmentsBrowser=a("./views/attachments/browser.js"),e.view.Selection=a("./views/selection.js"),e.view.Attachment.Selection=a("./views/attachment/selection.js"),e.view.Attachments.Selection=a("./views/attachments/selection.js"),e.view.Attachment.EditSelection=a("./views/attachment/edit-selection.js"),e.view.Settings=a("./views/settings.js"),e.view.Settings.AttachmentDisplay=a("./views/settings/attachment-display.js"),e.view.Settings.Gallery=a("./views/settings/gallery.js"),e.view.Settings.Playlist=a("./views/settings/playlist.js"),e.view.Attachment.Details=a("./views/attachment/details.js"),e.view.AttachmentCompat=a("./views/attachment-compat.js"),e.view.Iframe=a("./views/iframe.js"),e.view.Embed=a("./views/embed.js"),e.view.Label=a("./views/label.js"),e.view.EmbedUrl=a("./views/embed/url.js"),e.view.EmbedLink=a("./views/embed/link.js"),e.view.EmbedImage=a("./views/embed/image.js"),e.view.ImageDetails=a("./views/image-details.js"),e.view.Cropper=a("./views/cropper.js"),e.view.SiteIconCropper=a("./views/site-icon-cropper.js"),e.view.SiteIconPreview=a("./views/site-icon-preview.js"),e.view.EditImage=a("./views/edit-image.js"),e.view.Spinner=a("./views/spinner.js")},{"./controllers/collection-add.js":1,"./controllers/collection-edit.js":2,"./controllers/cropper.js":3,"./controllers/customize-image-cropper.js":4,"./controllers/edit-image.js":5,"./controllers/embed.js":6,"./controllers/featured-image.js":7,"./controllers/gallery-add.js":8,"./controllers/gallery-edit.js":9,"./controllers/image-details.js":10,"./controllers/library.js":11,"./controllers/media-library.js":12,"./controllers/region.js":13,"./controllers/replace-image.js":14,"./controllers/site-icon-cropper.js":15,"./controllers/state-machine.js":16,"./controllers/state.js":17,"./utils/selection-sync.js":18,"./views/attachment-compat.js":20,"./views/attachment-filters.js":21,"./views/attachment-filters/all.js":22,"./views/attachment-filters/date.js":23,"./views/attachment-filters/uploaded.js":24,"./views/attachment.js":25,"./views/attachment/details.js":26,"./views/attachment/edit-library.js":27,"./views/attachment/edit-selection.js":28,"./views/attachment/library.js":29,"./views/attachment/selection.js":30,"./views/attachments.js":31,"./views/attachments/browser.js":32,"./views/attachments/selection.js":33,"./views/button-group.js":34,"./views/button.js":35,"./views/cropper.js":36,"./views/edit-image.js":37,"./views/embed.js":38,"./views/embed/image.js":39,"./views/embed/link.js":40,"./views/embed/url.js":41,"./views/focus-manager.js":42,"./views/frame.js":43,"./views/frame/image-details.js":44,"./views/frame/post.js":45,"./views/frame/select.js":46,"./views/iframe.js":47,"./views/image-details.js":48,"./views/label.js":49,"./views/media-frame.js":50,"./views/menu-item.js":51,"./views/menu.js":52,"./views/modal.js":53,"./views/priority-list.js":54,"./views/router-item.js":55,"./views/router.js":56,"./views/search.js":57,"./views/selection.js":58,"./views/settings.js":59,"./views/settings/attachment-display.js":60,"./views/settings/gallery.js":61,"./views/settings/playlist.js":62,"./views/sidebar.js":63,"./views/site-icon-cropper.js":64,"./views/site-icon-preview.js":65,"./views/spinner.js":66,"./views/toolbar.js":67,"./views/toolbar/embed.js":68,"./views/toolbar/select.js":69,"./views/uploader/editor.js":70,"./views/uploader/inline.js":71,"./views/uploader/status-error.js":72,"./views/uploader/status.js":73,"./views/uploader/window.js":74,"./views/view.js":75}],20:[function(a,b,c){var d,e=wp.media.View;d=e.extend({tagName:"form",className:"compat-item",events:{submit:"preventDefault","change input":"save","change select":"save","change textarea":"save"},initialize:function(){this.listenTo(this.model,"change:compat",this.render)},dispose:function(){return this.$(":focus").length&&this.save(),e.prototype.dispose.apply(this,arguments)},render:function(){var a=this.model.get("compat");if(a&&a.item)return this.views.detach(),this.$el.html(a.item),this.views.render(),this},preventDefault:function(a){a.preventDefault()},save:function(a){var b={};a&&a.preventDefault(),_.each(this.$el.serializeArray(),function(a){b[a.name]=a.value}),this.controller.trigger("attachment:compat:waiting",["waiting"]),this.model.saveCompat(b).always(_.bind(this.postSave,this))},postSave:function(){this.controller.trigger("attachment:compat:ready",["ready"])}}),b.exports=d},{}],21:[function(a,b,c){var d,e=jQuery;d=wp.media.View.extend({tagName:"select",className:"attachment-filters",id:"media-attachment-filters",events:{change:"change"},keys:[],initialize:function(){this.createFilters(),_.extend(this.filters,this.options.filters),this.$el.html(_.chain(this.filters).map(function(a,b){return{el:e("<option></option>").val(b).html(a.text)[0],priority:a.priority||50}},this).sortBy("priority").pluck("el").value()),this.listenTo(this.model,"change",this.select),this.select()},createFilters:function(){this.filters={}},change:function(){var a=this.filters[this.el.value];a&&this.model.set(a.props)},select:function(){var a=this.model,b="all",c=a.toJSON();_.find(this.filters,function(a,d){var e=_.all(a.props,function(a,b){return a===(_.isUndefined(c[b])?null:c[b])});return e?b=d:void 0}),this.$el.val(b)}}),b.exports=d},{}],22:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.view.AttachmentFilters.extend({createFilters:function(){var a={};_.each(wp.media.view.settings.mimeTypes||{},function(b,c){a[c]={text:b,props:{status:null,type:c,uploadedTo:null,orderby:"date",order:"DESC"}}}),a.all={text:e.allMediaItems,props:{status:null,type:null,uploadedTo:null,orderby:"date",order:"DESC"},priority:10},wp.media.view.settings.post.id&&(a.uploaded={text:e.uploadedToThisPost,props:{status:null,type:null,uploadedTo:wp.media.view.settings.post.id,orderby:"menuOrder",order:"ASC"},priority:20}),a.unattached={text:e.unattached,props:{status:null,uploadedTo:0,type:null,orderby:"menuOrder",order:"ASC"},priority:50},wp.media.view.settings.mediaTrash&&this.controller.isModeActive("grid")&&(a.trash={text:e.trash,props:{uploadedTo:null,status:"trash",type:null,orderby:"date",order:"DESC"},priority:50}),this.filters=a}}),b.exports=d},{}],23:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.view.AttachmentFilters.extend({id:"media-attachment-date-filters",createFilters:function(){var a={};_.each(wp.media.view.settings.months||{},function(b,c){a[c]={text:b.text,props:{year:b.year,monthnum:b.month}}}),a.all={text:e.allDates,props:{monthnum:!1,year:!1},priority:10},this.filters=a}}),b.exports=d},{}],24:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.view.AttachmentFilters.extend({createFilters:function(){var a,b=this.model.get("type"),c=wp.media.view.settings.mimeTypes;c&&b&&(a=c[b]),this.filters={all:{text:a||e.allMediaItems,props:{uploadedTo:null,orderby:"date",order:"DESC"},priority:10},uploaded:{text:e.uploadedToThisPost,props:{uploadedTo:wp.media.view.settings.post.id,orderby:"menuOrder",order:"ASC"},priority:20},unattached:{text:e.unattached,props:{uploadedTo:0,orderby:"menuOrder",order:"ASC"},priority:50}}}}),b.exports=d},{}],25:[function(a,b,c){var d,e=wp.media.View,f=jQuery;d=e.extend({tagName:"li",className:"attachment",template:wp.template("attachment"),attributes:function(){return{tabIndex:0,role:"checkbox","aria-label":this.model.get("title"),"aria-checked":!1,"data-id":this.model.get("id")}},events:{"click .js--select-attachment":"toggleSelectionHandler","change [data-setting]":"updateSetting","change [data-setting] input":"updateSetting","change [data-setting] select":"updateSetting","change [data-setting] textarea":"updateSetting","click .attachment-close":"removeFromLibrary","click .check":"checkClickHandler",keydown:"toggleSelectionHandler"},buttons:{},initialize:function(){var a=this.options.selection,b=_.defaults(this.options,{rerenderOnModelChange:!0});b.rerenderOnModelChange?this.listenTo(this.model,"change",this.render):this.listenTo(this.model,"change:percent",this.progress),this.listenTo(this.model,"change:title",this._syncTitle),this.listenTo(this.model,"change:caption",this._syncCaption),this.listenTo(this.model,"change:artist",this._syncArtist),this.listenTo(this.model,"change:album",this._syncAlbum),this.listenTo(this.model,"add",this.select),this.listenTo(this.model,"remove",this.deselect),a&&(a.on("reset",this.updateSelect,this),this.listenTo(this.model,"selection:single selection:unsingle",this.details),this.details(this.model,this.controller.state().get("selection"))),
+this.listenTo(this.controller,"attachment:compat:waiting attachment:compat:ready",this.updateSave)},dispose:function(){var a=this.options.selection;return this.updateAll(),a&&a.off(null,null,this),e.prototype.dispose.apply(this,arguments),this},render:function(){var a=_.defaults(this.model.toJSON(),{orientation:"landscape",uploading:!1,type:"",subtype:"",icon:"",filename:"",caption:"",title:"",dateFormatted:"",width:"",height:"",compat:!1,alt:"",description:""},this.options);return a.buttons=this.buttons,a.describe=this.controller.state().get("describe"),"image"===a.type&&(a.size=this.imageSize()),a.can={},a.nonces&&(a.can.remove=!!a.nonces["delete"],a.can.save=!!a.nonces.update),this.controller.state().get("allowLocalEdits")&&(a.allowLocalEdits=!0),a.uploading&&!a.percent&&(a.percent=0),this.views.detach(),this.$el.html(this.template(a)),this.$el.toggleClass("uploading",a.uploading),a.uploading?this.$bar=this.$(".media-progress-bar div"):delete this.$bar,this.updateSelect(),this.updateSave(),this.views.render(),this},progress:function(){this.$bar&&this.$bar.length&&this.$bar.width(this.model.get("percent")+"%")},toggleSelectionHandler:function(a){var b;if("INPUT"!==a.target.nodeName&&"BUTTON"!==a.target.nodeName){if(37===a.keyCode||38===a.keyCode||39===a.keyCode||40===a.keyCode)return void this.controller.trigger("attachment:keydown:arrow",a);if("keydown"!==a.type||13===a.keyCode||32===a.keyCode){if(a.preventDefault(),this.controller.isModeActive("grid")){if(this.controller.isModeActive("edit"))return void this.controller.trigger("edit:attachment",this.model,a.currentTarget);this.controller.isModeActive("select")&&(b="toggle")}a.shiftKey?b="between":(a.ctrlKey||a.metaKey)&&(b="toggle"),this.toggleSelection({method:b}),this.controller.trigger("selection:toggle")}}},toggleSelection:function(a){var b,c,d,e,f=this.collection,g=this.options.selection,h=this.model,i=a&&a.method;if(g){if(b=g.single(),i=_.isUndefined(i)?g.multiple:i,"between"===i&&b&&g.multiple){if(b===h)return;return d=f.indexOf(b),e=f.indexOf(this.model),c=e>d?f.models.slice(d,e+1):f.models.slice(e,d+1),g.add(c),void g.single(h)}if("toggle"===i)return g[this.selected()?"remove":"add"](h),void g.single(h);if("add"===i)return g.add(h),void g.single(h);i||(i="add"),"add"!==i&&(i="reset"),this.selected()?g[b===h?"remove":"single"](h):(g[i](h),g.single(h))}},updateSelect:function(){this[this.selected()?"select":"deselect"]()},selected:function(){var a=this.options.selection;return a?!!a.get(this.model.cid):void 0},select:function(a,b){var c=this.options.selection,d=this.controller;!c||b&&b!==c||this.$el.hasClass("selected")||(this.$el.addClass("selected").attr("aria-checked",!0),d.isModeActive("grid")&&d.isModeActive("select")||this.$(".check").attr("tabindex","0"))},deselect:function(a,b){var c=this.options.selection;!c||b&&b!==c||this.$el.removeClass("selected").attr("aria-checked",!1).find(".check").attr("tabindex","-1")},details:function(a,b){var c,d=this.options.selection;d===b&&(c=d.single(),this.$el.toggleClass("details",c===this.model))},imageSize:function(a){var b=this.model.get("sizes"),c=!1;return a=a||"medium",b&&(b[a]?c=b[a]:b.large?c=b.large:b.thumbnail?c=b.thumbnail:b.full&&(c=b.full),c)?_.clone(c):{url:this.model.get("url"),width:this.model.get("width"),height:this.model.get("height"),orientation:this.model.get("orientation")}},updateSetting:function(a){var b,c,d=f(a.target).closest("[data-setting]");d.length&&(b=d.data("setting"),c=a.target.value,this.model.get(b)!==c&&this.save(b,c))},save:function(){var a=this,b=this._save=this._save||{status:"ready"},c=this.model.save.apply(this.model,arguments),d=b.requests?f.when(c,b.requests):c;b.savedTimer&&clearTimeout(b.savedTimer),this.updateSave("waiting"),b.requests=d,d.always(function(){b.requests===d&&(a.updateSave("resolved"===d.state()?"complete":"error"),b.savedTimer=setTimeout(function(){a.updateSave("ready"),delete b.savedTimer},2e3))})},updateSave:function(a){var b=this._save=this._save||{status:"ready"};return a&&a!==b.status&&(this.$el.removeClass("save-"+b.status),b.status=a),this.$el.addClass("save-"+b.status),this},updateAll:function(){var a,b=this.$("[data-setting]"),c=this.model;a=_.chain(b).map(function(a){var b,d,e=f("input, textarea, select, [value]",a);if(e.length)return b=f(a).data("setting"),d=e.val(),c.get(b)!==d?[b,d]:void 0}).compact().object().value(),_.isEmpty(a)||c.save(a)},removeFromLibrary:function(a){("keydown"!==a.type||13===a.keyCode||32===a.keyCode)&&(a.stopPropagation(),this.collection.remove(this.model))},checkClickHandler:function(a){var b=this.options.selection;b&&(a.stopPropagation(),b.where({id:this.model.get("id")}).length?(b.remove(this.model),this.$el.focus()):b.add(this.model))}}),_.each({caption:"_syncCaption",title:"_syncTitle",artist:"_syncArtist",album:"_syncAlbum"},function(a,b){d.prototype[a]=function(a,c){var d=this.$('[data-setting="'+b+'"]');return d.length?c===d.find("input, textarea, select, [value]").val()?this:this.render():this}}),b.exports=d},{}],26:[function(a,b,c){var d,e=wp.media.view.Attachment,f=wp.media.view.l10n;d=e.extend({tagName:"div",className:"attachment-details",template:wp.template("attachment-details"),attributes:function(){return{tabIndex:0,"data-id":this.model.get("id")}},events:{"change [data-setting]":"updateSetting","change [data-setting] input":"updateSetting","change [data-setting] select":"updateSetting","change [data-setting] textarea":"updateSetting","click .delete-attachment":"deleteAttachment","click .trash-attachment":"trashAttachment","click .untrash-attachment":"untrashAttachment","click .edit-attachment":"editAttachment",keydown:"toggleSelectionHandler"},initialize:function(){this.options=_.defaults(this.options,{rerenderOnModelChange:!1}),this.on("ready",this.initialFocus),e.prototype.initialize.apply(this,arguments)},initialFocus:function(){wp.media.isTouchDevice||this.$('input[type="text"]').eq(0).focus()},deleteAttachment:function(a){a.preventDefault(),window.confirm(f.warnDelete)&&(this.model.destroy(),this.controller.modal.focusManager.focus())},trashAttachment:function(a){var b=this.controller.library;a.preventDefault(),wp.media.view.settings.mediaTrash&&"edit-metadata"===this.controller.content.mode()?(this.model.set("status","trash"),this.model.save().done(function(){b._requery(!0)})):this.model.destroy()},untrashAttachment:function(a){var b=this.controller.library;a.preventDefault(),this.model.set("status","inherit"),this.model.save().done(function(){b._requery(!0)})},editAttachment:function(a){var b=this.controller.states.get("edit-image");window.imageEdit&&b?(a.preventDefault(),b.set("image",this.model),this.controller.setState("edit-image")):this.$el.addClass("needs-refresh")},toggleSelectionHandler:function(a){return"keydown"===a.type&&9===a.keyCode&&a.shiftKey&&a.target===this.$(":tabbable").get(0)?(this.controller.trigger("attachment:details:shift-tab",a),!1):37===a.keyCode||38===a.keyCode||39===a.keyCode||40===a.keyCode?void this.controller.trigger("attachment:keydown:arrow",a):void 0}}),b.exports=d},{}],27:[function(a,b,c){var d=wp.media.view.Attachment.extend({buttons:{close:!0}});b.exports=d},{}],28:[function(a,b,c){var d=wp.media.view.Attachment.Selection.extend({buttons:{close:!0}});b.exports=d},{}],29:[function(a,b,c){var d=wp.media.view.Attachment.extend({buttons:{check:!0}});b.exports=d},{}],30:[function(a,b,c){var d=wp.media.view.Attachment.extend({className:"attachment selection",toggleSelection:function(){this.options.selection.single(this.model)}});b.exports=d},{}],31:[function(a,b,c){var d,e=wp.media.View,f=jQuery;d=e.extend({tagName:"ul",className:"attachments",attributes:{tabIndex:-1},initialize:function(){this.el.id=_.uniqueId("__attachments-view-"),_.defaults(this.options,{refreshSensitivity:wp.media.isTouchDevice?300:200,refreshThreshold:3,AttachmentView:wp.media.view.Attachment,sortable:!1,resize:!0,idealColumnWidth:f(window).width()<640?135:150}),this._viewsByCid={},this.$window=f(window),this.resizeEvent="resize.media-modal-columns",this.collection.on("add",function(a){this.views.add(this.createAttachmentView(a),{at:this.collection.indexOf(a)})},this),this.collection.on("remove",function(a){var b=this._viewsByCid[a.cid];delete this._viewsByCid[a.cid],b&&b.remove()},this),this.collection.on("reset",this.render,this),this.listenTo(this.controller,"library:selection:add",this.attachmentFocus),this.scroll=_.chain(this.scroll).bind(this).throttle(this.options.refreshSensitivity).value(),this.options.scrollElement=this.options.scrollElement||this.el,f(this.options.scrollElement).on("scroll",this.scroll),this.initSortable(),_.bindAll(this,"setColumns"),this.options.resize&&(this.on("ready",this.bindEvents),this.controller.on("open",this.setColumns),_.defer(this.setColumns,this))},bindEvents:function(){this.$window.off(this.resizeEvent).on(this.resizeEvent,_.debounce(this.setColumns,50))},attachmentFocus:function(){this.$("li:first").focus()},restoreFocus:function(){this.$("li.selected:first").focus()},arrowEvent:function(a){var b=this.$el.children("li"),c=this.columns,d=b.filter(":focus").index(),e=c>=d+1?1:Math.ceil((d+1)/c);if(-1!==d){if(37===a.keyCode){if(0===d)return;b.eq(d-1).focus()}if(38===a.keyCode){if(1===e)return;b.eq(d-c).focus()}if(39===a.keyCode){if(b.length===d)return;b.eq(d+1).focus()}if(40===a.keyCode){if(Math.ceil(b.length/c)===e)return;b.eq(d+c).focus()}}},dispose:function(){this.collection.props.off(null,null,this),this.options.resize&&this.$window.off(this.resizeEvent),e.prototype.dispose.apply(this,arguments)},setColumns:function(){var a=this.columns,b=this.$el.width();b&&(this.columns=Math.min(Math.round(b/this.options.idealColumnWidth),12)||1,a&&a===this.columns||this.$el.closest(".media-frame-content").attr("data-columns",this.columns))},initSortable:function(){var a=this.collection;!wp.media.isTouchDevice&&this.options.sortable&&f.fn.sortable&&(this.$el.sortable(_.extend({disabled:!!a.comparator,tolerance:"pointer",start:function(a,b){b.item.data("sortableIndexStart",b.item.index())},update:function(b,c){var d=a.at(c.item.data("sortableIndexStart")),e=a.comparator;delete a.comparator,a.remove(d,{silent:!0}),a.add(d,{silent:!0,at:c.item.index()}),a.comparator=e,a.trigger("reset",a),a.saveMenuOrder()}},this.options.sortable)),a.props.on("change:orderby",function(){this.$el.sortable("option","disabled",!!a.comparator)},this),this.collection.props.on("change:orderby",this.refreshSortable,this),this.refreshSortable())},refreshSortable:function(){if(!wp.media.isTouchDevice&&this.options.sortable&&f.fn.sortable){var a=this.collection,b=a.props.get("orderby"),c="menuOrder"===b||!a.comparator;this.$el.sortable("option","disabled",!c)}},createAttachmentView:function(a){var b=new this.options.AttachmentView({controller:this.controller,model:a,collection:this.collection,selection:this.options.selection});return this._viewsByCid[a.cid]=b},prepare:function(){this.collection.length?this.views.set(this.collection.map(this.createAttachmentView,this)):(this.views.unset(),this.collection.more().done(this.scroll))},ready:function(){this.scroll()},scroll:function(){var a,b=this,c=this.options.scrollElement,d=c.scrollTop;c===document&&(c=document.body,d=f(document).scrollTop()),f(c).is(":visible")&&this.collection.hasMore()&&(a=this.views.parent.toolbar,c.scrollHeight-(d+c.clientHeight)<c.clientHeight/3&&a.get("spinner").show(),c.scrollHeight<d+c.clientHeight*this.options.refreshThreshold&&this.collection.more().done(function(){b.scroll(),a.get("spinner").hide()}))}}),b.exports=d},{}],32:[function(a,b,c){var d,e=wp.media.View,f=wp.media.view.settings.mediaTrash,g=wp.media.view.l10n,h=jQuery;d=e.extend({tagName:"div",className:"attachments-browser",initialize:function(){_.defaults(this.options,{filters:!1,search:!0,date:!0,display:!1,sidebar:!0,AttachmentView:wp.media.view.Attachment.Library}),this.listenTo(this.controller,"toggle:upload:attachment",_.bind(this.toggleUploader,this)),this.controller.on("edit:selection",this.editSelection),this.createToolbar(),this.options.sidebar&&this.createSidebar(),this.createUploader(),this.createAttachments(),this.updateContent(),this.options.sidebar&&"errors"!==this.options.sidebar||(this.$el.addClass("hide-sidebar"),"errors"===this.options.sidebar&&this.$el.addClass("sidebar-for-errors")),this.collection.on("add remove reset",this.updateContent,this)},editSelection:function(a){a.$(".media-button-backToLibrary").focus()},dispose:function(){return this.options.selection.off(null,null,this),e.prototype.dispose.apply(this,arguments),this},createToolbar:function(){var a,b,c;c={controller:this.controller},this.controller.isModeActive("grid")&&(c.className="media-toolbar wp-filter"),this.toolbar=new wp.media.view.Toolbar(c),this.views.add(this.toolbar),this.toolbar.set("spinner",new wp.media.view.Spinner({priority:-60})),-1!==h.inArray(this.options.filters,["uploaded","all"])&&(this.toolbar.set("filtersLabel",new wp.media.view.Label({value:g.filterByType,attributes:{"for":"media-attachment-filters"},priority:-80}).render()),"uploaded"===this.options.filters?this.toolbar.set("filters",new wp.media.view.AttachmentFilters.Uploaded({controller:this.controller,model:this.collection.props,priority:-80}).render()):(b=new wp.media.view.AttachmentFilters.All({controller:this.controller,model:this.collection.props,priority:-80}),this.toolbar.set("filters",b.render()))),this.controller.isModeActive("grid")?(a=e.extend({className:"view-switch media-grid-view-switch",template:wp.template("media-library-view-switcher")}),this.toolbar.set("libraryViewSwitcher",new a({controller:this.controller,priority:-90}).render()),this.toolbar.set("dateFilterLabel",new wp.media.view.Label({value:g.filterByDate,attributes:{"for":"media-attachment-date-filters"},priority:-75}).render()),this.toolbar.set("dateFilter",new wp.media.view.DateFilter({controller:this.controller,model:this.collection.props,priority:-75}).render()),this.toolbar.set("selectModeToggleButton",new wp.media.view.SelectModeToggleButton({text:g.bulkSelect,controller:this.controller,priority:-70}).render()),this.toolbar.set("deleteSelectedButton",new wp.media.view.DeleteSelectedButton({filters:b,style:"primary",disabled:!0,text:f?g.trashSelected:g.deleteSelected,controller:this.controller,priority:-60,click:function(){var a=[],b=[],c=this.controller.state().get("selection"),d=this.controller.state().get("library");c.length&&(f||window.confirm(g.warnBulkDelete))&&(!f||"trash"===c.at(0).get("status")||window.confirm(g.warnBulkTrash))&&(c.each(function(c){return c.get("nonces")["delete"]?void(f&&"trash"===c.get("status")?(c.set("status","inherit"),a.push(c.save()),b.push(c)):f?(c.set("status","trash"),a.push(c.save()),b.push(c)):c.destroy({wait:!0})):void b.push(c)}),a.length?(c.remove(b),h.when.apply(null,a).then(_.bind(function(){d._requery(!0),this.controller.trigger("selection:action:done")},this))):this.controller.trigger("selection:action:done"))}}).render()),f&&this.toolbar.set("deleteSelectedPermanentlyButton",new wp.media.view.DeleteSelectedPermanentlyButton({filters:b,style:"primary",disabled:!0,text:g.deleteSelected,controller:this.controller,priority:-55,click:function(){var a=[],b=this.controller.state().get("selection");b.length&&window.confirm(g.warnBulkDelete)&&(b.each(function(b){return b.get("nonces")["delete"]?void b.destroy():void a.push(b)}),b.remove(a),this.controller.trigger("selection:action:done"))}}).render())):this.options.date&&(this.toolbar.set("dateFilterLabel",new wp.media.view.Label({value:g.filterByDate,attributes:{"for":"media-attachment-date-filters"},priority:-75}).render()),this.toolbar.set("dateFilter",new wp.media.view.DateFilter({controller:this.controller,model:this.collection.props,priority:-75}).render())),this.options.search&&(this.toolbar.set("searchLabel",new wp.media.view.Label({value:g.searchMediaLabel,attributes:{"for":"media-search-input"},priority:60}).render()),this.toolbar.set("search",new wp.media.view.Search({controller:this.controller,model:this.collection.props,priority:60}).render())),this.options.dragInfo&&this.toolbar.set("dragInfo",new e({el:h('<div class="instructions">'+g.dragInfo+"</div>")[0],priority:-40})),this.options.suggestedWidth&&this.options.suggestedHeight&&this.toolbar.set("suggestedDimensions",new e({el:h('<div class="instructions">'+g.suggestedDimensions+" "+this.options.suggestedWidth+" × "+this.options.suggestedHeight+"</div>")[0],priority:-40}))},updateContent:function(){var a,b=this;a=this.controller.isModeActive("grid")?b.attachmentsNoResults:b.uploader,this.collection.length?(a.$el.addClass("hidden"),b.toolbar.get("spinner").hide()):(this.toolbar.get("spinner").show(),this.dfd=this.collection.more().done(function(){b.collection.length?a.$el.addClass("hidden"):a.$el.removeClass("hidden"),b.toolbar.get("spinner").hide()}))},createUploader:function(){this.uploader=new wp.media.view.UploaderInline({controller:this.controller,status:!1,message:this.controller.isModeActive("grid")?"":g.noItemsFound,canClose:this.controller.isModeActive("grid")}),this.uploader.hide(),this.views.add(this.uploader)},toggleUploader:function(){this.uploader.$el.hasClass("hidden")?this.uploader.show():this.uploader.hide()},createAttachments:function(){this.attachments=new wp.media.view.Attachments({controller:this.controller,collection:this.collection,selection:this.options.selection,model:this.model,sortable:this.options.sortable,scrollElement:this.options.scrollElement,idealColumnWidth:this.options.idealColumnWidth,AttachmentView:this.options.AttachmentView}),this.attachments.listenTo(this.controller,"attachment:keydown:arrow",this.attachments.arrowEvent),this.attachments.listenTo(this.controller,"attachment:details:shift-tab",this.attachments.restoreFocus),this.views.add(this.attachments),this.controller.isModeActive("grid")&&(this.attachmentsNoResults=new e({controller:this.controller,tagName:"p"}),this.attachmentsNoResults.$el.addClass("hidden no-media"),this.attachmentsNoResults.$el.html(g.noMedia),this.views.add(this.attachmentsNoResults))},createSidebar:function(){var a=this.options,b=a.selection,c=this.sidebar=new wp.media.view.Sidebar({controller:this.controller});this.views.add(c),this.controller.uploader&&c.set("uploads",new wp.media.view.UploaderStatus({controller:this.controller,priority:40})),b.on("selection:single",this.createSingle,this),b.on("selection:unsingle",this.disposeSingle,this),b.single()&&this.createSingle()},createSingle:function(){var a=this.sidebar,b=this.options.selection.single();a.set("details",new wp.media.view.Attachment.Details({controller:this.controller,model:b,priority:80})),a.set("compat",new wp.media.view.AttachmentCompat({controller:this.controller,model:b,priority:120})),this.options.display&&a.set("display",new wp.media.view.Settings.AttachmentDisplay({controller:this.controller,model:this.model.display(b),attachment:b,priority:160,userSettings:this.model.get("displayUserSettings")})),"insert"===this.model.id&&a.$el.addClass("visible")},disposeSingle:function(){var a=this.sidebar;a.unset("details"),a.unset("compat"),a.unset("display"),a.$el.removeClass("visible")}}),b.exports=d},{}],33:[function(a,b,c){var d,e=wp.media.view.Attachments;d=e.extend({events:{},initialize:function(){return _.defaults(this.options,{sortable:!1,resize:!1,AttachmentView:wp.media.view.Attachment.Selection}),e.prototype.initialize.apply(this,arguments)}}),b.exports=d},{}],34:[function(a,b,c){var d,e=Backbone.$;d=wp.media.View.extend({tagName:"div",className:"button-group button-large media-button-group",initialize:function(){this.buttons=_.map(this.options.buttons||[],function(a){return a instanceof Backbone.View?a:new wp.media.view.Button(a).render()}),delete this.options.buttons,this.options.classes&&this.$el.addClass(this.options.classes)},render:function(){return this.$el.html(e(_.pluck(this.buttons,"el")).detach()),this}}),b.exports=d},{}],35:[function(a,b,c){var d=wp.media.View.extend({tagName:"button",className:"media-button",attributes:{type:"button"},events:{click:"click"},defaults:{text:"",style:"",size:"large",disabled:!1},initialize:function(){this.model=new Backbone.Model(this.defaults),_.each(this.defaults,function(a,b){var c=this.options[b];_.isUndefined(c)||(this.model.set(b,c),delete this.options[b])},this),this.listenTo(this.model,"change",this.render)},render:function(){var a=["button",this.className],b=this.model.toJSON();return b.style&&a.push("button-"+b.style),b.size&&a.push("button-"+b.size),a=_.uniq(a.concat(this.options.classes)),this.el.className=a.join(" "),this.$el.attr("disabled",b.disabled),this.$el.text(this.model.get("text")),this},click:function(a){"#"===this.attributes.href&&a.preventDefault(),this.options.click&&!this.model.get("disabled")&&this.options.click.apply(this,arguments)}});b.exports=d},{}],36:[function(a,b,c){var d,e=wp.media.View,f=wp.media.view.UploaderStatus,g=wp.media.view.l10n,h=jQuery;d=e.extend({className:"crop-content",template:wp.template("crop-content"),initialize:function(){_.bindAll(this,"onImageLoad")},ready:function(){this.controller.frame.on("content:error:crop",this.onError,this),this.$image=this.$el.find(".crop-image"),this.$image.on("load",this.onImageLoad),h(window).on("resize.cropper",_.debounce(this.onImageLoad,250))},remove:function(){h(window).off("resize.cropper"),this.$el.remove(),this.$el.off(),e.prototype.remove.apply(this,arguments)},prepare:function(){return{title:g.cropYourImage,url:this.options.attachment.get("url")}},onImageLoad:function(){var a=this.controller.get("imgSelectOptions");"function"==typeof a&&(a=a(this.options.attachment,this.controller)),a=_.extend(a,{parent:this.$el}),this.trigger("image-loaded"),this.controller.imgSelect=this.$image.imgAreaSelect(a)},onError:function(){var a=this.options.attachment.get("filename");this.views.add(".upload-errors",new wp.media.view.UploaderStatusError({filename:f.prototype.filename(a),message:window._wpMediaViewsL10n.cropError}),{at:0})}}),b.exports=d},{}],37:[function(a,b,c){var d,e=wp.media.View;d=e.extend({className:"image-editor",template:wp.template("image-editor"),initialize:function(a){this.editor=window.imageEdit,this.controller=a.controller,e.prototype.initialize.apply(this,arguments)},prepare:function(){return this.model.toJSON()},loadEditor:function(){var a=this.editor.open(this.model.get("id"),this.model.get("nonces").edit,this);a.done(_.bind(this.focus,this))},focus:function(){this.$(".imgedit-submit .button").eq(0).focus()},back:function(){var a=this.controller.lastState();this.controller.setState(a)},refresh:function(){this.model.fetch()},save:function(){var a=this.controller.lastState();this.model.fetch().done(_.bind(function(){this.controller.setState(a)},this))}}),b.exports=d},{}],38:[function(a,b,c){var d=wp.media.View.extend({className:"media-embed",initialize:function(){this.url=new wp.media.view.EmbedUrl({controller:this.controller,model:this.model.props}).render(),this.views.set([this.url]),this.refresh(),this.listenTo(this.model,"change:type",this.refresh),this.listenTo(this.model,"change:loading",this.loading)},settings:function(a){this._settings&&this._settings.remove(),this._settings=a,this.views.add(a)},refresh:function(){var a,b=this.model.get("type");if("image"===b)a=wp.media.view.EmbedImage;else{if("link"!==b)return;a=wp.media.view.EmbedLink}this.settings(new a({controller:this.controller,model:this.model.props,priority:40}))},loading:function(){this.$el.toggleClass("embed-loading",this.model.get("loading"))}});b.exports=d},{}],39:[function(a,b,c){var d,e=wp.media.view.Settings.AttachmentDisplay;d=e.extend({className:"embed-media-settings",template:wp.template("embed-image-settings"),initialize:function(){e.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change:url",this.updateImage)},updateImage:function(){this.$("img").attr("src",this.model.get("url"))}}),b.exports=d},{}],40:[function(a,b,c){var d,e=jQuery;d=wp.media.view.Settings.extend({className:"embed-link-settings",template:wp.template("embed-link-settings"),initialize:function(){this.listenTo(this.model,"change:url",this.updateoEmbed)},updateoEmbed:_.debounce(function(){var a=this.model.get("url");this.$(".embed-container").hide().find(".embed-preview").empty(),this.$(".setting").hide(),a&&(a.length<11||!a.match(/^http(s)?:\/\//))||this.fetch()},wp.media.controller.Embed.sensitivity),fetch:function(){var a;e("#embed-url-field").val()===this.model.get("url")&&(this.dfd&&"pending"===this.dfd.state()&&this.dfd.abort(),a=new wp.shortcode({tag:"embed",attrs:_.pick(this.model.attributes,["width","height","src"]),content:this.model.get("url")}),this.dfd=e.ajax({type:"POST",url:wp.ajax.settings.url,context:this,data:{action:"parse-embed",post_ID:wp.media.view.settings.post.id,shortcode:a.string()}}).done(this.renderoEmbed).fail(this.renderFail))},renderFail:function(a,b){"abort"!==b&&this.$(".link-text").show()},renderoEmbed:function(a){var b=a&&a.data&&a.data.body||"";b?this.$(".embed-container").show().find(".embed-preview").html(b):this.renderFail()}}),b.exports=d},{}],41:[function(a,b,c){var d,e=wp.media.View,f=jQuery;d=e.extend({tagName:"label",className:"embed-url",events:{input:"url",keyup:"url",change:"url"},initialize:function(){this.$input=f('<input id="embed-url-field" type="url" />').val(this.model.get("url")),this.input=this.$input[0],this.spinner=f('<span class="spinner" />')[0],this.$el.append([this.input,this.spinner]),this.listenTo(this.model,"change:url",this.render),this.model.get("url")&&_.delay(_.bind(function(){this.model.trigger("change:url")},this),500)},render:function(){var a=this.$input;if(!a.is(":focus"))return this.input.value=this.model.get("url")||"http://",e.prototype.render.apply(this,arguments),this},ready:function(){wp.media.isTouchDevice||this.focus()},url:function(a){this.model.set("url",a.target.value)},focus:function(){var a=this.$input;a.is(":visible")&&a.focus()[0].select()}}),b.exports=d},{}],42:[function(a,b,c){var d=wp.media.View.extend({events:{keydown:"constrainTabbing"},focus:function(){this.$(".media-menu-item").first().focus()},constrainTabbing:function(a){var b;if(9===a.keyCode)return b=this.$(":tabbable").not('.moxie-shim input[type="file"]'),b.last()[0]!==a.target||a.shiftKey?b.first()[0]===a.target&&a.shiftKey?(b.last().focus(),!1):void 0:(b.first().focus(),!1)}});b.exports=d},{}],43:[function(a,b,c){var d=wp.media.View.extend({initialize:function(){_.defaults(this.options,{mode:["select"]}),this._createRegions(),this._createStates(),this._createModes()},_createRegions:function(){this.regions=this.regions?this.regions.slice():[],_.each(this.regions,function(a){this[a]=new wp.media.controller.Region({view:this,id:a,selector:".media-frame-"+a})},this)},_createStates:function(){this.states=new Backbone.Collection(null,{model:wp.media.controller.State}),this.states.on("add",function(a){a.frame=this,a.trigger("ready")},this),this.options.states&&this.states.add(this.options.states)},_createModes:function(){this.activeModes=new Backbone.Collection,this.activeModes.on("add remove reset",_.bind(this.triggerModeEvents,this)),_.each(this.options.mode,function(a){this.activateMode(a)},this)},reset:function(){return this.states.invoke("trigger","reset"),this},triggerModeEvents:function(a,b,c){var d,e,f={add:"activate",remove:"deactivate"};_.each(c,function(a,b){a&&(d=b)}),_.has(f,d)&&(e=a.get("id")+":"+f[d],this.trigger(e))},activateMode:function(a){return this.isModeActive(a)?void 0:(this.activeModes.add([{id:a}]),this.$el.addClass("mode-"+a),this)},deactivateMode:function(a){return this.isModeActive(a)?(this.activeModes.remove(this.activeModes.where({id:a})),this.$el.removeClass("mode-"+a),this.trigger(a+":deactivate"),this):this},isModeActive:function(a){return Boolean(this.activeModes.where({id:a}).length)}});_.extend(d.prototype,wp.media.controller.StateMachine.prototype),b.exports=d},{}],44:[function(a,b,c){var d,e=wp.media.view.MediaFrame.Select,f=wp.media.view.l10n;d=e.extend({defaults:{id:"image",url:"",menu:"image-details",content:"image-details",toolbar:"image-details",type:"link",title:f.imageDetailsTitle,priority:120},initialize:function(a){this.image=new wp.media.model.PostImage(a.metadata),this.options.selection=new wp.media.model.Selection(this.image.attachment,{multiple:!1}),e.prototype.initialize.apply(this,arguments)},bindHandlers:function(){e.prototype.bindHandlers.apply(this,arguments),this.on("menu:create:image-details",this.createMenu,this),this.on("content:create:image-details",this.imageDetailsContent,this),this.on("content:render:edit-image",this.editImageContent,this),this.on("toolbar:render:image-details",this.renderImageDetailsToolbar,this),this.on("toolbar:render:replace",this.renderReplaceImageToolbar,this)},createStates:function(){this.states.add([new wp.media.controller.ImageDetails({image:this.image,editable:!1}),new wp.media.controller.ReplaceImage({id:"replace-image",library:wp.media.query({type:"image"}),image:this.image,multiple:!1,title:f.imageReplaceTitle,toolbar:"replace",priority:80,displaySettings:!0}),new wp.media.controller.EditImage({image:this.image,selection:this.options.selection})])},imageDetailsContent:function(a){a.view=new wp.media.view.ImageDetails({controller:this,model:this.state().image,attachment:this.state().image.attachment})},editImageContent:function(){var a,b=this.state(),c=b.get("image");c&&(a=new wp.media.view.EditImage({model:c,controller:this}).render(),this.content.set(a),a.loadEditor())},renderImageDetailsToolbar:function(){this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{select:{style:"primary",text:f.update,priority:80,click:function(){var a=this.controller,b=a.state();a.close(),b.trigger("update",a.image.toJSON()),a.setState(a.options.state),a.reset()}}}}))},renderReplaceImageToolbar:function(){var a=this,b=a.lastState(),c=b&&b.id;this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{back:{text:f.back,priority:20,click:function(){c?a.setState(c):a.close()}},replace:{style:"primary",text:f.replace,priority:80,click:function(){var a=this.controller,b=a.state(),c=b.get("selection"),d=c.single();a.close(),a.image.changeAttachment(d,b.display(d)),b.trigger("replace",a.image.toJSON()),a.setState(a.options.state),a.reset()}}}}))}}),b.exports=d},{}],45:[function(a,b,c){var d,e=wp.media.view.MediaFrame.Select,f=wp.media.controller.Library,g=wp.media.view.l10n;d=e.extend({initialize:function(){this.counts={audio:{count:wp.media.view.settings.attachmentCounts.audio,state:"playlist"},video:{count:wp.media.view.settings.attachmentCounts.video,state:"video-playlist"}},_.defaults(this.options,{multiple:!0,editing:!1,state:"insert",metadata:{}}),e.prototype.initialize.apply(this,arguments),this.createIframeStates()},createStates:function(){var a=this.options;this.states.add([new f({id:"insert",title:g.insertMediaTitle,priority:20,toolbar:"main-insert",filterable:"all",library:wp.media.query(a.library),multiple:a.multiple?"reset":!1,editable:!0,allowLocalEdits:!0,displaySettings:!0,displayUserSettings:!0}),new f({id:"gallery",title:g.createGalleryTitle,priority:40,toolbar:"main-gallery",filterable:"uploaded",multiple:"add",editable:!1,library:wp.media.query(_.defaults({type:"image"},a.library))}),new wp.media.controller.Embed({metadata:a.metadata}),new wp.media.controller.EditImage({model:a.editImage}),new wp.media.controller.GalleryEdit({library:a.selection,editing:a.editing,menu:"gallery"}),new wp.media.controller.GalleryAdd,new f({id:"playlist",title:g.createPlaylistTitle,priority:60,toolbar:"main-playlist",filterable:"uploaded",multiple:"add",editable:!1,library:wp.media.query(_.defaults({type:"audio"},a.library))}),new wp.media.controller.CollectionEdit({type:"audio",collectionType:"playlist",title:g.editPlaylistTitle,SettingsView:wp.media.view.Settings.Playlist,library:a.selection,editing:a.editing,menu:"playlist",dragInfoText:g.playlistDragInfo,dragInfo:!1}),new wp.media.controller.CollectionAdd({type:"audio",collectionType:"playlist",title:g.addToPlaylistTitle
+}),new f({id:"video-playlist",title:g.createVideoPlaylistTitle,priority:60,toolbar:"main-video-playlist",filterable:"uploaded",multiple:"add",editable:!1,library:wp.media.query(_.defaults({type:"video"},a.library))}),new wp.media.controller.CollectionEdit({type:"video",collectionType:"playlist",title:g.editVideoPlaylistTitle,SettingsView:wp.media.view.Settings.Playlist,library:a.selection,editing:a.editing,menu:"video-playlist",dragInfoText:g.videoPlaylistDragInfo,dragInfo:!1}),new wp.media.controller.CollectionAdd({type:"video",collectionType:"playlist",title:g.addToVideoPlaylistTitle})]),wp.media.view.settings.post.featuredImageId&&this.states.add(new wp.media.controller.FeaturedImage)},bindHandlers:function(){var a,b;e.prototype.bindHandlers.apply(this,arguments),this.on("activate",this.activate,this),b=_.find(this.counts,function(a){return 0===a.count}),"undefined"!=typeof b&&this.listenTo(wp.media.model.Attachments.all,"change:type",this.mediaTypeCounts),this.on("menu:create:gallery",this.createMenu,this),this.on("menu:create:playlist",this.createMenu,this),this.on("menu:create:video-playlist",this.createMenu,this),this.on("toolbar:create:main-insert",this.createToolbar,this),this.on("toolbar:create:main-gallery",this.createToolbar,this),this.on("toolbar:create:main-playlist",this.createToolbar,this),this.on("toolbar:create:main-video-playlist",this.createToolbar,this),this.on("toolbar:create:featured-image",this.featuredImageToolbar,this),this.on("toolbar:create:main-embed",this.mainEmbedToolbar,this),a={menu:{"default":"mainMenu",gallery:"galleryMenu",playlist:"playlistMenu","video-playlist":"videoPlaylistMenu"},content:{embed:"embedContent","edit-image":"editImageContent","edit-selection":"editSelectionContent"},toolbar:{"main-insert":"mainInsertToolbar","main-gallery":"mainGalleryToolbar","gallery-edit":"galleryEditToolbar","gallery-add":"galleryAddToolbar","main-playlist":"mainPlaylistToolbar","playlist-edit":"playlistEditToolbar","playlist-add":"playlistAddToolbar","main-video-playlist":"mainVideoPlaylistToolbar","video-playlist-edit":"videoPlaylistEditToolbar","video-playlist-add":"videoPlaylistAddToolbar"}},_.each(a,function(a,b){_.each(a,function(a,c){this.on(b+":render:"+c,this[a],this)},this)},this)},activate:function(){_.each(this.counts,function(a){a.count<1&&this.menuItemVisibility(a.state,"hide")},this)},mediaTypeCounts:function(a,b){"undefined"!=typeof this.counts[b]&&this.counts[b].count<1&&(this.counts[b].count++,this.menuItemVisibility(this.counts[b].state,"show"))},mainMenu:function(a){a.set({"library-separator":new wp.media.View({className:"separator",priority:100})})},menuItemVisibility:function(a,b){var c=this.menu.get();"hide"===b?c.hide(a):"show"===b&&c.show(a)},galleryMenu:function(a){var b=this.lastState(),c=b&&b.id,d=this;a.set({cancel:{text:g.cancelGalleryTitle,priority:20,click:function(){c?d.setState(c):d.close(),this.controller.modal.focusManager.focus()}},separateCancel:new wp.media.View({className:"separator",priority:40})})},playlistMenu:function(a){var b=this.lastState(),c=b&&b.id,d=this;a.set({cancel:{text:g.cancelPlaylistTitle,priority:20,click:function(){c?d.setState(c):d.close()}},separateCancel:new wp.media.View({className:"separator",priority:40})})},videoPlaylistMenu:function(a){var b=this.lastState(),c=b&&b.id,d=this;a.set({cancel:{text:g.cancelVideoPlaylistTitle,priority:20,click:function(){c?d.setState(c):d.close()}},separateCancel:new wp.media.View({className:"separator",priority:40})})},embedContent:function(){var a=new wp.media.view.Embed({controller:this,model:this.state()}).render();this.content.set(a),wp.media.isTouchDevice||a.url.focus()},editSelectionContent:function(){var a,b=this.state(),c=b.get("selection");a=new wp.media.view.AttachmentsBrowser({controller:this,collection:c,selection:c,model:b,sortable:!0,search:!1,date:!1,dragInfo:!0,AttachmentView:wp.media.view.Attachments.EditSelection}).render(),a.toolbar.set("backToLibrary",{text:g.returnToLibrary,priority:-100,click:function(){this.controller.content.mode("browse")}}),this.content.set(a),this.trigger("edit:selection",this)},editImageContent:function(){var a=this.state().get("image"),b=new wp.media.view.EditImage({model:a,controller:this}).render();this.content.set(b),b.loadEditor()},selectionStatusToolbar:function(a){var b=this.state().get("editable");a.set("selection",new wp.media.view.Selection({controller:this,collection:this.state().get("selection"),priority:-40,editable:b&&function(){this.controller.content.mode("edit-selection")}}).render())},mainInsertToolbar:function(a){var b=this;this.selectionStatusToolbar(a),a.set("insert",{style:"primary",priority:80,text:g.insertIntoPost,requires:{selection:!0},click:function(){var a=b.state(),c=a.get("selection");b.close(),a.trigger("insert",c).reset()}})},mainGalleryToolbar:function(a){var b=this;this.selectionStatusToolbar(a),a.set("gallery",{style:"primary",text:g.createNewGallery,priority:60,requires:{selection:!0},click:function(){var a=b.state().get("selection"),c=b.state("gallery-edit"),d=a.where({type:"image"});c.set("library",new wp.media.model.Selection(d,{props:a.props.toJSON(),multiple:!0})),this.controller.setState("gallery-edit"),this.controller.modal.focusManager.focus()}})},mainPlaylistToolbar:function(a){var b=this;this.selectionStatusToolbar(a),a.set("playlist",{style:"primary",text:g.createNewPlaylist,priority:100,requires:{selection:!0},click:function(){var a=b.state().get("selection"),c=b.state("playlist-edit"),d=a.where({type:"audio"});c.set("library",new wp.media.model.Selection(d,{props:a.props.toJSON(),multiple:!0})),this.controller.setState("playlist-edit"),this.controller.modal.focusManager.focus()}})},mainVideoPlaylistToolbar:function(a){var b=this;this.selectionStatusToolbar(a),a.set("video-playlist",{style:"primary",text:g.createNewVideoPlaylist,priority:100,requires:{selection:!0},click:function(){var a=b.state().get("selection"),c=b.state("video-playlist-edit"),d=a.where({type:"video"});c.set("library",new wp.media.model.Selection(d,{props:a.props.toJSON(),multiple:!0})),this.controller.setState("video-playlist-edit"),this.controller.modal.focusManager.focus()}})},featuredImageToolbar:function(a){this.createSelectToolbar(a,{text:g.setFeaturedImage,state:this.options.state})},mainEmbedToolbar:function(a){a.view=new wp.media.view.Toolbar.Embed({controller:this})},galleryEditToolbar:function(){var a=this.state().get("editing");this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:a?g.updateGallery:g.insertGallery,priority:80,requires:{library:!0},click:function(){var a=this.controller,b=a.state();a.close(),b.trigger("update",b.get("library")),a.setState(a.options.state),a.reset()}}}}))},galleryAddToolbar:function(){this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:g.addToGallery,priority:80,requires:{selection:!0},click:function(){var a=this.controller,b=a.state(),c=a.state("gallery-edit");c.get("library").add(b.get("selection").models),b.trigger("reset"),a.setState("gallery-edit")}}}}))},playlistEditToolbar:function(){var a=this.state().get("editing");this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:a?g.updatePlaylist:g.insertPlaylist,priority:80,requires:{library:!0},click:function(){var a=this.controller,b=a.state();a.close(),b.trigger("update",b.get("library")),a.setState(a.options.state),a.reset()}}}}))},playlistAddToolbar:function(){this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:g.addToPlaylist,priority:80,requires:{selection:!0},click:function(){var a=this.controller,b=a.state(),c=a.state("playlist-edit");c.get("library").add(b.get("selection").models),b.trigger("reset"),a.setState("playlist-edit")}}}}))},videoPlaylistEditToolbar:function(){var a=this.state().get("editing");this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:a?g.updateVideoPlaylist:g.insertVideoPlaylist,priority:140,requires:{library:!0},click:function(){var a=this.controller,b=a.state(),c=b.get("library");c.type="video",a.close(),b.trigger("update",c),a.setState(a.options.state),a.reset()}}}}))},videoPlaylistAddToolbar:function(){this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:g.addToVideoPlaylist,priority:140,requires:{selection:!0},click:function(){var a=this.controller,b=a.state(),c=a.state("video-playlist-edit");c.get("library").add(b.get("selection").models),b.trigger("reset"),a.setState("video-playlist-edit")}}}}))}}),b.exports=d},{}],46:[function(a,b,c){var d,e=wp.media.view.MediaFrame,f=wp.media.view.l10n;d=e.extend({initialize:function(){e.prototype.initialize.apply(this,arguments),_.defaults(this.options,{selection:[],library:{},multiple:!1,state:"library"}),this.createSelection(),this.createStates(),this.bindHandlers()},createSelection:function(){var a=this.options.selection;a instanceof wp.media.model.Selection||(this.options.selection=new wp.media.model.Selection(a,{multiple:this.options.multiple})),this._selection={attachments:new wp.media.model.Attachments,difference:[]}},createStates:function(){var a=this.options;this.options.states||this.states.add([new wp.media.controller.Library({library:wp.media.query(a.library),multiple:a.multiple,title:a.title,priority:20})])},bindHandlers:function(){this.on("router:create:browse",this.createRouter,this),this.on("router:render:browse",this.browseRouter,this),this.on("content:create:browse",this.browseContent,this),this.on("content:render:upload",this.uploadContent,this),this.on("toolbar:create:select",this.createSelectToolbar,this)},browseRouter:function(a){a.set({upload:{text:f.uploadFilesTitle,priority:20},browse:{text:f.mediaLibraryTitle,priority:40}})},browseContent:function(a){var b=this.state();this.$el.removeClass("hide-toolbar"),a.view=new wp.media.view.AttachmentsBrowser({controller:this,collection:b.get("library"),selection:b.get("selection"),model:b,sortable:b.get("sortable"),search:b.get("searchable"),filters:b.get("filterable"),date:b.get("date"),display:b.has("display")?b.get("display"):b.get("displaySettings"),dragInfo:b.get("dragInfo"),idealColumnWidth:b.get("idealColumnWidth"),suggestedWidth:b.get("suggestedWidth"),suggestedHeight:b.get("suggestedHeight"),AttachmentView:b.get("AttachmentView")})},uploadContent:function(){this.$el.removeClass("hide-toolbar"),this.content.set(new wp.media.view.UploaderInline({controller:this}))},createSelectToolbar:function(a,b){b=b||this.options.button||{},b.controller=this,a.view=new wp.media.view.Toolbar.Select(b)}}),b.exports=d},{}],47:[function(a,b,c){var d=wp.media.View.extend({className:"media-iframe",render:function(){return this.views.detach(),this.$el.html('<iframe src="'+this.controller.state().get("src")+'" />'),this.views.render(),this}});b.exports=d},{}],48:[function(a,b,c){var d,e=wp.media.view.Settings.AttachmentDisplay,f=jQuery;d=e.extend({className:"image-details",template:wp.template("image-details"),events:_.defaults(e.prototype.events,{"click .edit-attachment":"editAttachment","click .replace-attachment":"replaceAttachment","click .advanced-toggle":"onToggleAdvanced",'change [data-setting="customWidth"]':"onCustomSize",'change [data-setting="customHeight"]':"onCustomSize",'keyup [data-setting="customWidth"]':"onCustomSize",'keyup [data-setting="customHeight"]':"onCustomSize"}),initialize:function(){this.options.attachment=this.model.attachment,this.listenTo(this.model,"change:url",this.updateUrl),this.listenTo(this.model,"change:link",this.toggleLinkSettings),this.listenTo(this.model,"change:size",this.toggleCustomSize),e.prototype.initialize.apply(this,arguments)},prepare:function(){var a=!1;return this.model.attachment&&(a=this.model.attachment.toJSON()),_.defaults({model:this.model.toJSON(),attachment:a},this.options)},render:function(){var a=arguments;return this.model.attachment&&"pending"===this.model.dfd.state()?this.model.dfd.done(_.bind(function(){e.prototype.render.apply(this,a),this.postRender()},this)).fail(_.bind(function(){this.model.attachment=!1,e.prototype.render.apply(this,a),this.postRender()},this)):(e.prototype.render.apply(this,arguments),this.postRender()),this},postRender:function(){setTimeout(_.bind(this.resetFocus,this),10),this.toggleLinkSettings(),"show"===window.getUserSetting("advImgDetails")&&this.toggleAdvanced(!0),this.trigger("post-render")},resetFocus:function(){this.$(".link-to-custom").blur(),this.$(".embed-media-settings").scrollTop(0)},updateUrl:function(){this.$(".image img").attr("src",this.model.get("url")),this.$(".url").val(this.model.get("url"))},toggleLinkSettings:function(){"none"===this.model.get("link")?this.$(".link-settings").addClass("hidden"):this.$(".link-settings").removeClass("hidden")},toggleCustomSize:function(){"custom"!==this.model.get("size")?this.$(".custom-size").addClass("hidden"):this.$(".custom-size").removeClass("hidden")},onCustomSize:function(a){var b,c=f(a.target).data("setting"),d=f(a.target).val();return!/^\d+/.test(d)||parseInt(d,10)<1?void a.preventDefault():void("customWidth"===c?(b=Math.round(1/this.model.get("aspectRatio")*d),this.model.set("customHeight",b,{silent:!0}),this.$('[data-setting="customHeight"]').val(b)):(b=Math.round(this.model.get("aspectRatio")*d),this.model.set("customWidth",b,{silent:!0}),this.$('[data-setting="customWidth"]').val(b)))},onToggleAdvanced:function(a){a.preventDefault(),this.toggleAdvanced()},toggleAdvanced:function(a){var b,c=this.$el.find(".advanced-section");c.hasClass("advanced-visible")||a===!1?(c.removeClass("advanced-visible"),c.find(".advanced-settings").addClass("hidden"),b="hide"):(c.addClass("advanced-visible"),c.find(".advanced-settings").removeClass("hidden"),b="show"),window.setUserSetting("advImgDetails",b)},editAttachment:function(a){var b=this.controller.states.get("edit-image");window.imageEdit&&b&&(a.preventDefault(),b.set("image",this.model.attachment),this.controller.setState("edit-image"))},replaceAttachment:function(a){a.preventDefault(),this.controller.setState("replace-image")}}),b.exports=d},{}],49:[function(a,b,c){var d=wp.media.View.extend({tagName:"label",className:"screen-reader-text",initialize:function(){this.value=this.options.value},render:function(){return this.$el.html(this.value),this}});b.exports=d},{}],50:[function(a,b,c){var d,e=wp.media.view.Frame,f=jQuery;d=e.extend({className:"media-frame",template:wp.template("media-frame"),regions:["menu","title","content","toolbar","router"],events:{"click div.media-frame-title h1":"toggleMenu"},initialize:function(){e.prototype.initialize.apply(this,arguments),_.defaults(this.options,{title:"",modal:!0,uploader:!0}),this.$el.addClass("wp-core-ui"),this.options.modal&&(this.modal=new wp.media.view.Modal({controller:this,title:this.options.title}),this.modal.content(this)),(wp.Uploader.limitExceeded||!wp.Uploader.browser.supported)&&(this.options.uploader=!1),this.options.uploader&&(this.uploader=new wp.media.view.UploaderWindow({controller:this,uploader:{dropzone:this.modal?this.modal.$el:this.$el,container:this.$el}}),this.views.set(".media-frame-uploader",this.uploader)),this.on("attach",_.bind(this.views.ready,this.views),this),this.on("title:create:default",this.createTitle,this),this.title.mode("default"),this.on("title:render",function(a){a.$el.append('<span class="dashicons dashicons-arrow-down"></span>')}),this.on("menu:create:default",this.createMenu,this)},render:function(){return!this.state()&&this.options.state&&this.setState(this.options.state),e.prototype.render.apply(this,arguments)},createTitle:function(a){a.view=new wp.media.View({controller:this,tagName:"h1"})},createMenu:function(a){a.view=new wp.media.view.Menu({controller:this})},toggleMenu:function(){this.$el.find(".media-menu").toggleClass("visible")},createToolbar:function(a){a.view=new wp.media.view.Toolbar({controller:this})},createRouter:function(a){a.view=new wp.media.view.Router({controller:this})},createIframeStates:function(a){var b,c=wp.media.view.settings,d=c.tabs,e=c.tabUrl;d&&e&&(b=f("#post_ID"),b.length&&(e+="&post_id="+b.val()),_.each(d,function(b,c){this.state("iframe:"+c).set(_.defaults({tab:c,src:e+"&tab="+c,title:b,content:"iframe",menu:"default"},a))},this),this.on("content:create:iframe",this.iframeContent,this),this.on("content:deactivate:iframe",this.iframeContentCleanup,this),this.on("menu:render:default",this.iframeMenu,this),this.on("open",this.hijackThickbox,this),this.on("close",this.restoreThickbox,this))},iframeContent:function(a){this.$el.addClass("hide-toolbar"),a.view=new wp.media.view.Iframe({controller:this})},iframeContentCleanup:function(){this.$el.removeClass("hide-toolbar")},iframeMenu:function(a){var b={};a&&(_.each(wp.media.view.settings.tabs,function(a,c){b["iframe:"+c]={text:this.state("iframe:"+c).get("title"),priority:200}},this),a.set(b))},hijackThickbox:function(){var a=this;window.tb_remove&&!this._tb_remove&&(this._tb_remove=window.tb_remove,window.tb_remove=function(){a.close(),a.reset(),a.setState(a.options.state),a._tb_remove.call(window)})},restoreThickbox:function(){this._tb_remove&&(window.tb_remove=this._tb_remove,delete this._tb_remove)}}),_.each(["open","close","attach","detach","escape"],function(a){d.prototype[a]=function(){return this.modal&&this.modal[a].apply(this.modal,arguments),this}}),b.exports=d},{}],51:[function(a,b,c){var d,e=jQuery;d=wp.media.View.extend({tagName:"a",className:"media-menu-item",attributes:{href:"#"},events:{click:"_click"},_click:function(a){var b=this.options.click;a&&a.preventDefault(),b?b.call(this):this.click(),wp.media.isTouchDevice||e(".media-frame-content input").first().focus()},click:function(){var a=this.options.state;a&&(this.controller.setState(a),this.views.parent.$el.removeClass("visible"))},render:function(){var a=this.options;return a.text?this.$el.text(a.text):a.html&&this.$el.html(a.html),this}}),b.exports=d},{}],52:[function(a,b,c){var d,e=wp.media.view.MenuItem,f=wp.media.view.PriorityList;d=f.extend({tagName:"div",className:"media-menu",property:"state",ItemView:e,region:"menu",toView:function(a,b){return a=a||{},a[this.property]=a[this.property]||b,new this.ItemView(a).render()},ready:function(){f.prototype.ready.apply(this,arguments),this.visibility()},set:function(){f.prototype.set.apply(this,arguments),this.visibility()},unset:function(){f.prototype.unset.apply(this,arguments),this.visibility()},visibility:function(){var a=this.region,b=this.controller[a].get(),c=this.views.get(),d=!c||c.length<2;this===b&&this.controller.$el.toggleClass("hide-"+a,d)},select:function(a){var b=this.get(a);b&&(this.deselect(),b.$el.addClass("active"))},deselect:function(){this.$el.children().removeClass("active")},hide:function(a){var b=this.get(a);b&&b.$el.addClass("hidden")},show:function(a){var b=this.get(a);b&&b.$el.removeClass("hidden")}}),b.exports=d},{}],53:[function(a,b,c){var d,e=jQuery;d=wp.media.View.extend({tagName:"div",template:wp.template("media-modal"),attributes:{tabindex:0},events:{"click .media-modal-backdrop, .media-modal-close":"escapeHandler",keydown:"keydown"},initialize:function(){_.defaults(this.options,{container:document.body,title:"",propagate:!0,freeze:!0}),this.focusManager=new wp.media.view.FocusManager({el:this.el})},prepare:function(){return{title:this.options.title}},attach:function(){return this.views.attached?this:(this.views.rendered||this.render(),this.$el.appendTo(this.options.container),this.views.attached=!0,this.views.ready(),this.propagate("attach"))},detach:function(){return this.$el.is(":visible")&&this.close(),this.$el.detach(),this.views.attached=!1,this.propagate("detach")},open:function(){var a,b=this.$el,c=this.options;return b.is(":visible")?this:(this.views.attached||this.attach(),c.freeze&&(this._freeze={scrollTop:e(window).scrollTop()}),e("body").addClass("modal-open"),b.show(),"ontouchend"in document&&(a=window.tinymce&&window.tinymce.activeEditor)&&!a.isHidden()&&a.iframeElement&&(a.iframeElement.focus(),a.iframeElement.blur(),setTimeout(function(){a.iframeElement.blur()},100)),this.$el.focus(),this.propagate("open"))},close:function(a){var b=this._freeze;return this.views.attached&&this.$el.is(":visible")?(e("body").removeClass("modal-open"),this.$el.hide().undelegate("keydown"),e("#wpbody-content").focus(),this.propagate("close"),b&&e(window).scrollTop(b.scrollTop),a&&a.escape&&this.propagate("escape"),this):this},escape:function(){return this.close({escape:!0})},escapeHandler:function(a){a.preventDefault(),this.escape()},content:function(a){return this.views.set(".media-modal-content",a),this},propagate:function(a){return this.trigger(a),this.options.propagate&&this.controller.trigger(a),this},keydown:function(a){27===a.which&&this.$el.is(":visible")&&(this.escape(),a.stopImmediatePropagation())}}),b.exports=d},{}],54:[function(a,b,c){var d=wp.media.View.extend({tagName:"div",initialize:function(){this._views={},this.set(_.extend({},this._views,this.options.views),{silent:!0}),delete this.options.views,this.options.silent||this.render()},set:function(a,b,c){var d,e,f;return c=c||{},_.isObject(a)?(_.each(a,function(a,b){this.set(b,a)},this),this):(b instanceof Backbone.View||(b=this.toView(b,a,c)),b.controller=b.controller||this.controller,this.unset(a),d=b.options.priority||10,e=this.views.get()||[],_.find(e,function(a,b){return a.options.priority>d?(f=b,!0):void 0}),this._views[a]=b,this.views.add(b,{at:_.isNumber(f)?f:e.length||0}),this)},get:function(a){return this._views[a]},unset:function(a){var b=this.get(a);return b&&b.remove(),delete this._views[a],this},toView:function(a){return new wp.media.View(a)}});b.exports=d},{}],55:[function(a,b,c){var d=wp.media.view.MenuItem.extend({click:function(){var a=this.options.contentMode;a&&this.controller.content.mode(a)}});b.exports=d},{}],56:[function(a,b,c){var d,e=wp.media.view.Menu;d=e.extend({tagName:"div",className:"media-router",property:"contentMode",ItemView:wp.media.view.RouterItem,region:"router",initialize:function(){this.controller.on("content:render",this.update,this),e.prototype.initialize.apply(this,arguments)},update:function(){var a=this.controller.content.mode();a&&this.select(a)}}),b.exports=d},{}],57:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.View.extend({tagName:"input",className:"search",id:"media-search-input",attributes:{type:"search",placeholder:e.search},events:{input:"search",keyup:"search",change:"search",search:"search"},render:function(){return this.el.value=this.model.escape("search"),this},search:function(a){a.target.value?this.model.set("search",a.target.value):this.model.unset("search")}}),b.exports=d},{}],58:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.View.extend({tagName:"div",className:"media-selection",template:wp.template("media-selection"),events:{"click .edit-selection":"edit","click .clear-selection":"clear"},initialize:function(){_.defaults(this.options,{editable:!1,clearable:!0}),this.attachments=new wp.media.view.Attachments.Selection({controller:this.controller,collection:this.collection,selection:this.collection,model:new Backbone.Model}),this.views.set(".selection-view",this.attachments),this.collection.on("add remove reset",this.refresh,this),this.controller.on("content:activate",this.refresh,this)},ready:function(){this.refresh()},refresh:function(){if(this.$el.children().length){var a=this.collection,b="edit-selection"===this.controller.content.mode();this.$el.toggleClass("empty",!a.length),this.$el.toggleClass("one",1===a.length),this.$el.toggleClass("editing",b),this.$(".count").text(e.selected.replace("%d",a.length))}},edit:function(a){a.preventDefault(),this.options.editable&&this.options.editable.call(this,this.collection)},clear:function(a){a.preventDefault(),this.collection.reset(),this.controller.modal.focusManager.focus()}}),b.exports=d},{}],59:[function(a,b,c){var d,e=wp.media.View,f=Backbone.$;d=e.extend({events:{"click button":"updateHandler","change input":"updateHandler","change select":"updateHandler","change textarea":"updateHandler"},initialize:function(){this.model=this.model||new Backbone.Model,this.listenTo(this.model,"change",this.updateChanges)},prepare:function(){return _.defaults({model:this.model.toJSON()},this.options)},render:function(){return e.prototype.render.apply(this,arguments),_(this.model.attributes).chain().keys().each(this.update,this),this},update:function(a){var b,c,d=this.model.get(a),e=this.$('[data-setting="'+a+'"]');e.length&&(e.is("select")?(c=e.find('[value="'+d+'"]'),c.length?(e.find("option").prop("selected",!1),c.prop("selected",!0)):this.model.set(a,e.find(":selected").val())):e.hasClass("button-group")?(b=e.find("button").removeClass("active"),b.filter('[value="'+d+'"]').addClass("active")):e.is('input[type="text"], textarea')?e.is(":focus")||e.val(d):e.is('input[type="checkbox"]')&&e.prop("checked",!!d&&"false"!==d))},updateHandler:function(a){var b,c=f(a.target).closest("[data-setting]"),d=a.target.value;a.preventDefault(),c.length&&(c.is('input[type="checkbox"]')&&(d=c[0].checked),this.model.set(c.data("setting"),d),(b=c.data("userSetting"))&&window.setUserSetting(b,d))},updateChanges:function(a){a.hasChanged()&&_(a.changed).chain().keys().each(this.update,this)}}),b.exports=d},{}],60:[function(a,b,c){var d,e=wp.media.view.Settings;d=e.extend({className:"attachment-display-settings",template:wp.template("attachment-display-settings"),initialize:function(){var a=this.options.attachment;_.defaults(this.options,{userSettings:!1}),e.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change:link",this.updateLinkTo),a&&a.on("change:uploading",this.render,this)},dispose:function(){var a=this.options.attachment;a&&a.off(null,null,this),e.prototype.dispose.apply(this,arguments)},render:function(){var a=this.options.attachment;return a&&_.extend(this.options,{sizes:a.get("sizes"),type:a.get("type")}),e.prototype.render.call(this),this.updateLinkTo(),this},updateLinkTo:function(){var a=this.model.get("link"),b=this.$(".link-to-custom"),c=this.options.attachment;return"none"===a||"embed"===a||!c&&"custom"!==a?void b.addClass("hidden"):(c&&("post"===a?b.val(c.get("link")):"file"===a?b.val(c.get("url")):this.model.get("linkUrl")||b.val("http://"),b.prop("readonly","custom"!==a)),b.removeClass("hidden"),void(!wp.media.isTouchDevice&&b.is(":visible")&&b.focus()[0].select()))}}),b.exports=d},{}],61:[function(a,b,c){var d=wp.media.view.Settings.extend({className:"collection-settings gallery-settings",template:wp.template("gallery-settings")});b.exports=d},{}],62:[function(a,b,c){var d=wp.media.view.Settings.extend({className:"collection-settings playlist-settings",template:wp.template("playlist-settings")});b.exports=d},{}],63:[function(a,b,c){var d=wp.media.view.PriorityList.extend({className:"media-sidebar"});b.exports=d},{}],64:[function(a,b,c){var d,e=wp.media.view;d=e.Cropper.extend({className:"crop-content site-icon",ready:function(){e.Cropper.prototype.ready.apply(this,arguments),this.$(".crop-image").on("load",_.bind(this.addSidebar,this))},addSidebar:function(){this.sidebar=new wp.media.view.Sidebar({controller:this.controller}),this.sidebar.set("preview",new wp.media.view.SiteIconPreview({controller:this.controller,attachment:this.options.attachment})),this.controller.cropperView.views.add(this.sidebar)}}),b.exports=d},{}],65:[function(a,b,c){var d,e=wp.media.View,f=jQuery;d=e.extend({className:"site-icon-preview",template:wp.template("site-icon-preview"),ready:function(){this.controller.imgSelect.setOptions({onInit:this.updatePreview,onSelectChange:this.updatePreview})},prepare:function(){return{url:this.options.attachment.get("url")}},updatePreview:function(a,b){var c=64/b.width,d=64/b.height,e=16/b.width,g=16/b.height;f("#preview-app-icon").css({width:Math.round(c*this.imageWidth)+"px",height:Math.round(d*this.imageHeight)+"px",marginLeft:"-"+Math.round(c*b.x1)+"px",marginTop:"-"+Math.round(d*b.y1)+"px"}),f("#preview-favicon").css({width:Math.round(e*this.imageWidth)+"px",height:Math.round(g*this.imageHeight)+"px",marginLeft:"-"+Math.round(e*b.x1)+"px",marginTop:"-"+Math.floor(g*b.y1)+"px"})}}),b.exports=d},{}],66:[function(a,b,c){var d=wp.media.View.extend({tagName:"span",className:"spinner",spinnerTimeout:!1,delay:400,show:function(){return this.spinnerTimeout||(this.spinnerTimeout=_.delay(function(a){a.addClass("is-active")},this.delay,this.$el)),this},hide:function(){return this.$el.removeClass("is-active"),this.spinnerTimeout=clearTimeout(this.spinnerTimeout),this}});b.exports=d},{}],67:[function(a,b,c){var d,e=wp.media.View;d=e.extend({tagName:"div",className:"media-toolbar",initialize:function(){var a=this.controller.state(),b=this.selection=a.get("selection"),c=this.library=a.get("library");this._views={},this.primary=new wp.media.view.PriorityList,this.secondary=new wp.media.view.PriorityList,this.primary.$el.addClass("media-toolbar-primary search-form"),this.secondary.$el.addClass("media-toolbar-secondary"),this.views.set([this.secondary,this.primary]),this.options.items&&this.set(this.options.items,{silent:!0}),this.options.silent||this.render(),b&&b.on("add remove reset",this.refresh,this),c&&c.on("add remove reset",this.refresh,this)},dispose:function(){return this.selection&&this.selection.off(null,null,this),this.library&&this.library.off(null,null,this),e.prototype.dispose.apply(this,arguments)},ready:function(){this.refresh()},set:function(a,b,c){var d;return c=c||{},_.isObject(a)?_.each(a,function(a,b){this.set(b,a,{silent:!0})},this):(b instanceof Backbone.View||(b.classes=["media-button-"+a].concat(b.classes||[]),b=new wp.media.view.Button(b).render()),b.controller=b.controller||this.controller,this._views[a]=b,d=b.options.priority<0?"secondary":"primary",this[d].set(a,b,c)),c.silent||this.refresh(),this},get:function(a){return this._views[a]},unset:function(a,b){return delete this._views[a],this.primary.unset(a,b),this.secondary.unset(a,b),b&&b.silent||this.refresh(),this},refresh:function(){var a=this.controller.state(),b=a.get("library"),c=a.get("selection");_.each(this._views,function(a){if(a.model&&a.options&&a.options.requires){var d=a.options.requires,e=!1;e=_.some(c.models,function(a){return a.get("uploading")===!0}),d.selection&&c&&!c.length?e=!0:d.library&&b&&!b.length&&(e=!0),a.model.set("disabled",e)}})}}),b.exports=d},{}],68:[function(a,b,c){var d,e=wp.media.view.Toolbar.Select,f=wp.media.view.l10n;d=e.extend({initialize:function(){_.defaults(this.options,{text:f.insertIntoPost,requires:!1}),e.prototype.initialize.apply(this,arguments)},refresh:function(){var a=this.controller.state().props.get("url");this.get("select").model.set("disabled",!a||"http://"===a),e.prototype.refresh.apply(this,arguments)}}),b.exports=d},{}],69:[function(a,b,c){var d,e=wp.media.view.Toolbar,f=wp.media.view.l10n;d=e.extend({initialize:function(){var a=this.options;_.bindAll(this,"clickSelect"),_.defaults(a,{event:"select",state:!1,reset:!0,close:!0,text:f.select,requires:{selection:!0}}),a.items=_.defaults(a.items||{},{select:{style:"primary",text:a.text,priority:80,click:this.clickSelect,requires:a.requires}}),e.prototype.initialize.apply(this,arguments)},clickSelect:function(){var a=this.options,b=this.controller;a.close&&b.close(),a.event&&b.state().trigger(a.event),a.state&&b.setState(a.state),a.reset&&b.reset()}}),b.exports=d},{}],70:[function(a,b,c){var d,e=wp.media.View,f=wp.media.view.l10n,g=jQuery;d=e.extend({tagName:"div",className:"uploader-editor",template:wp.template("uploader-editor"),localDrag:!1,overContainer:!1,overDropzone:!1,draggingFile:null,initialize:function(){return this.initialized=!1,window.tinyMCEPreInit&&window.tinyMCEPreInit.dragDropUpload&&this.browserSupport()?(this.$document=g(document),this.dropzones=[],this.files=[],this.$document.on("drop",".uploader-editor",_.bind(this.drop,this)),this.$document.on("dragover",".uploader-editor",_.bind(this.dropzoneDragover,this)),this.$document.on("dragleave",".uploader-editor",_.bind(this.dropzoneDragleave,this)),
+this.$document.on("click",".uploader-editor",_.bind(this.click,this)),this.$document.on("dragover",_.bind(this.containerDragover,this)),this.$document.on("dragleave",_.bind(this.containerDragleave,this)),this.$document.on("dragstart dragend drop",_.bind(function(a){this.localDrag="dragstart"===a.type,"drop"===a.type&&this.containerDragleave()},this)),this.initialized=!0,this):this},browserSupport:function(){var a=!1,b=document.createElement("div");return a="draggable"in b||"ondragstart"in b&&"ondrop"in b,a=a&&!!(window.File&&window.FileList&&window.FileReader)},isDraggingFile:function(a){return null!==this.draggingFile?this.draggingFile:_.isUndefined(a.originalEvent)||_.isUndefined(a.originalEvent.dataTransfer)?!1:(this.draggingFile=_.indexOf(a.originalEvent.dataTransfer.types,"Files")>-1&&-1===_.indexOf(a.originalEvent.dataTransfer.types,"text/plain"),this.draggingFile)},refresh:function(a){var b;for(b in this.dropzones)this.dropzones[b].toggle(this.overContainer||this.overDropzone);return _.isUndefined(a)||g(a.target).closest(".uploader-editor").toggleClass("droppable",this.overDropzone),this.overContainer||this.overDropzone||(this.draggingFile=null),this},render:function(){return this.initialized?(e.prototype.render.apply(this,arguments),g(".wp-editor-wrap").each(_.bind(this.attach,this)),this):this},attach:function(a,b){var c=this.$el.clone();return this.dropzones.push(c),g(b).append(c),this},drop:function(a){var b,c;return this.containerDragleave(a),this.dropzoneDragleave(a),this.files=a.originalEvent.dataTransfer.files,this.files.length<1?void 0:(b=g(a.target).parents(".wp-editor-wrap"),b.length>0&&b[0].id&&(window.wpActiveEditor=b[0].id.slice(3,-5)),this.workflow?(this.workflow.state().reset(),this.addFiles.apply(this),this.workflow.open()):(this.workflow=wp.media.editor.open(window.wpActiveEditor,{frame:"post",state:"insert",title:f.addMedia,multiple:!0}),c=this.workflow.uploader,c.uploader&&c.uploader.ready?this.addFiles.apply(this):this.workflow.on("uploader:ready",this.addFiles,this)),!1)},addFiles:function(){return this.files.length&&(this.workflow.uploader.uploader.uploader.addFile(_.toArray(this.files)),this.files=[]),this},containerDragover:function(a){!this.localDrag&&this.isDraggingFile(a)&&(this.overContainer=!0,this.refresh())},containerDragleave:function(){this.overContainer=!1,_.delay(_.bind(this.refresh,this),50)},dropzoneDragover:function(a){return!this.localDrag&&this.isDraggingFile(a)?(this.overDropzone=!0,this.refresh(a),!1):void 0},dropzoneDragleave:function(a){this.overDropzone=!1,_.delay(_.bind(this.refresh,this,a),50)},click:function(a){this.containerDragleave(a),this.dropzoneDragleave(a),this.localDrag=!1}}),b.exports=d},{}],71:[function(a,b,c){var d,e=wp.media.View;d=e.extend({tagName:"div",className:"uploader-inline",template:wp.template("uploader-inline"),events:{"click .close":"hide"},initialize:function(){_.defaults(this.options,{message:"",status:!0,canClose:!1}),!this.options.$browser&&this.controller.uploader&&(this.options.$browser=this.controller.uploader.$browser),_.isUndefined(this.options.postId)&&(this.options.postId=wp.media.view.settings.post.id),this.options.status&&this.views.set(".upload-inline-status",new wp.media.view.UploaderStatus({controller:this.controller}))},prepare:function(){var a=this.controller.state().get("suggestedWidth"),b=this.controller.state().get("suggestedHeight"),c={};return c.message=this.options.message,c.canClose=this.options.canClose,a&&b&&(c.suggestedWidth=a,c.suggestedHeight=b),c},dispose:function(){return this.disposing?e.prototype.dispose.apply(this,arguments):(this.disposing=!0,this.remove())},remove:function(){var a=e.prototype.remove.apply(this,arguments);return _.defer(_.bind(this.refresh,this)),a},refresh:function(){var a=this.controller.uploader;a&&a.refresh()},ready:function(){var a,b=this.options.$browser;if(this.controller.uploader){if(a=this.$(".browser"),a[0]===b[0])return;b.detach().text(a.text()),b[0].className=a[0].className,a.replaceWith(b.show())}return this.refresh(),this},show:function(){this.$el.removeClass("hidden")},hide:function(){this.$el.addClass("hidden")}}),b.exports=d},{}],72:[function(a,b,c){var d=wp.media.View.extend({className:"upload-error",template:wp.template("uploader-status-error")});b.exports=d},{}],73:[function(a,b,c){var d,e=wp.media.View;d=e.extend({className:"media-uploader-status",template:wp.template("uploader-status"),events:{"click .upload-dismiss-errors":"dismiss"},initialize:function(){this.queue=wp.Uploader.queue,this.queue.on("add remove reset",this.visibility,this),this.queue.on("add remove reset change:percent",this.progress,this),this.queue.on("add remove reset change:uploading",this.info,this),this.errors=wp.Uploader.errors,this.errors.reset(),this.errors.on("add remove reset",this.visibility,this),this.errors.on("add",this.error,this)},dispose:function(){return wp.Uploader.queue.off(null,null,this),e.prototype.dispose.apply(this,arguments),this},visibility:function(){this.$el.toggleClass("uploading",!!this.queue.length),this.$el.toggleClass("errors",!!this.errors.length),this.$el.toggle(!!this.queue.length||!!this.errors.length)},ready:function(){_.each({$bar:".media-progress-bar div",$index:".upload-index",$total:".upload-total",$filename:".upload-filename"},function(a,b){this[b]=this.$(a)},this),this.visibility(),this.progress(),this.info()},progress:function(){var a=this.queue,b=this.$bar;b&&a.length&&b.width(a.reduce(function(a,b){if(!b.get("uploading"))return a+100;var c=b.get("percent");return a+(_.isNumber(c)?c:100)},0)/a.length+"%")},info:function(){var a,b=this.queue,c=0;b.length&&(a=this.queue.find(function(a,b){return c=b,a.get("uploading")}),this.$index.text(c+1),this.$total.text(b.length),this.$filename.html(a?this.filename(a.get("filename")):""))},filename:function(a){return _.escape(a)},error:function(a){this.views.add(".upload-errors",new wp.media.view.UploaderStatusError({filename:this.filename(a.get("file").name),message:a.get("message")}),{at:0})},dismiss:function(a){var b=this.views.get(".upload-errors");a.preventDefault(),b&&_.invoke(b,"remove"),wp.Uploader.errors.reset()}}),b.exports=d},{}],74:[function(a,b,c){var d,e=jQuery;d=wp.media.View.extend({tagName:"div",className:"uploader-window",template:wp.template("uploader-window"),initialize:function(){var a;this.$browser=e('<a href="#" class="browser" />').hide().appendTo("body"),a=this.options.uploader=_.defaults(this.options.uploader||{},{dropzone:this.$el,browser:this.$browser,params:{}}),!a.dropzone||a.dropzone instanceof e||(a.dropzone=e(a.dropzone)),this.controller.on("activate",this.refresh,this),this.controller.on("detach",function(){this.$browser.remove()},this)},refresh:function(){this.uploader&&this.uploader.refresh()},ready:function(){var a,b=wp.media.view.settings.post.id;this.uploader||(b&&(this.options.uploader.params.post_id=b),this.uploader=new wp.Uploader(this.options.uploader),a=this.uploader.dropzone,a.on("dropzone:enter",_.bind(this.show,this)),a.on("dropzone:leave",_.bind(this.hide,this)),e(this.uploader).on("uploader:ready",_.bind(this._ready,this)))},_ready:function(){this.controller.trigger("uploader:ready")},show:function(){var a=this.$el.show();_.defer(function(){a.css({opacity:1})})},hide:function(){var a=this.$el.css({opacity:0});wp.media.transition(a).done(function(){"0"===a.css("opacity")&&a.hide()}),_.delay(function(){"0"===a.css("opacity")&&a.is(":visible")&&a.hide()},500)}}),b.exports=d},{}],75:[function(a,b,c){var d=wp.Backbone.View.extend({constructor:function(a){a&&a.controller&&(this.controller=a.controller),wp.Backbone.View.apply(this,arguments)},dispose:function(){return this.undelegateEvents(),this.model&&this.model.off&&this.model.off(null,null,this),this.collection&&this.collection.off&&this.collection.off(null,null,this),this.controller&&this.controller.off&&this.controller.off(null,null,this),this},remove:function(){return this.dispose(),wp.Backbone.View.prototype.remove.apply(this,arguments)}});b.exports=d},{}]},{},[19]);
\ No newline at end of file
// RegExp based on emoji's official Unicode standards
// http://www.unicode.org/Public/UNIDATA/EmojiSources.txt
- re = /((?:\u0039\ufe0f\u20e3|\u0038\ufe0f\u20e3|\u0037\ufe0f\u20e3|\u0036\ufe0f\u20e3|\u0035\ufe0f\u20e3|\u0034\ufe0f\u20e3|\u0033\ufe0f\u20e3|\u0032\ufe0f\u20e3|\u0031\ufe0f\u20e3|\u0030\ufe0f\u20e3|\u0023\ufe0f\u20e3|\ud83c\uddea\ud83c\uddf8|\ud83c\uddeb\ud83c\uddf7|\ud83c\uddec\ud83c\udde7|\ud83c\uddee\ud83c\uddf9|\ud83c\uddef\ud83c\uddf5|\ud83c\uddf0\ud83c\uddf7|\ud83c\uddf7\ud83c\uddfa|\ud83c\uddfa\ud83c\uddf8|\ud83c\uddea\ud83c\udde8|\ud83c\udde9\ud83c\uddff|\ud83c\uddf9\ud83c\uddf7|\ud83c\udde8\ud83c\uddf7|\ud83c\uddfa\ud83c\uddfe|\ud83c\udde8\ud83c\udde6|\ud83c\uddf8\ud83c\uddec|\ud83c\udde7\ud83c\uddf7|\ud83c\uddf8\ud83c\udde6|\ud83c\udde6\ud83c\uddfa|\ud83c\uddf5\ud83c\uddf9|\ud83c\uddf2\ud83c\uddfd|\ud83c\uddee\ud83c\uddf7|\ud83c\uddee\ud83c\uddf3|\ud83c\udded\ud83c\uddf7|\ud83c\udde8\ud83c\uddf3|\ud83c\udde9\ud83c\uddea|\ud83c\udde6\ud83c\uddf7|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\ud83d\ude1b|\ud83d\ude19|\ud83d\ude17|\ud83d\ude15|\ud83d\ude11|\ud83d\ude10|\ud83d\ude0e|\ud83d\ude08|\ud83d\ude07|\ud83d\ude00|\ud83d\udd67|\ud83d\udd66|\ud83d\udd65|\ud83d\udd64|\ud83d\udd63|\ud83d\udd62|\ud83d\udd61|\ud83d\udd60|\ud83d\udd5f|\ud83d\udd5e|\ud83d\udd5d|\ud83d\udd5c|\ud83d\udd2d|\ud83d\udd2c|\ud83d\udd15|\ud83d\udd09|\ud83d\udd08|\ud83d\udd07|\ud83d\udd06|\ud83d\udd05|\ud83d\udd04|\ud83d\udd02|\ud83d\udd01|\ud83d\udd00|\ud83d\udcf5|\ud83d\udcef|\ud83d\udced|\ud83d\udcec|\ud83d\udcb7|\ud83d\udcb6|\ud83d\udcad|\ud83d\udc6d|\ud83d\udc6c|\ud83d\udc65|\ud83d\udc2a|\ud83d\udc16|\ud83d\udc15|\ud83d\udc13|\ud83d\udc10|\ud83d\udc0f|\ud83d\udc0b|\ud83d\udc0a|\ud83d\udc09|\ud83d\udc08|\ud83d\udc07|\ud83d\udc06|\ud83d\udc05|\ud83d\udc04|\ud83d\udc03|\ud83d\udc02|\ud83d\udc01|\ud83d\udc00|\ud83c\udfff|\ud83c\udffe|\ud83c\udffd|\ud83c\udffc|\ud83c\udffb|\ud83c\udfe4|\ud83c\udfd2|\ud83c\udfd0|\ud83c\udfcf|\ud83c\udccf|\ud83c\udd8e|\ud83c\udd91|\ud83c\udd92|\ud83c\udd93|\ud83c\udd94|\ud83c\udd95|\ud83c\udd96|\ud83c\udd97|\ud83c\udd98|\ud83c\udd99|\ud83c\udd9a|\ud83d\udc94|\ud83e\udd18|\ud83e\udd16|\ud83e\udd15|\ud83d\udecf|\ud83d\udec5|\ud83d\udec4|\ud83d\udec3|\ud83d\udec2|\ud83d\udec1|\ud83c\ude01|\ud83c\ude32|\ud83c\ude33|\ud83c\ude34|\ud83c\ude35|\ud83c\ude36|\ud83c\ude38|\ud83c\ude39|\ud83c\ude3a|\ud83c\ude50|\ud83c\ude51|\ud83c\udf00|\ud83c\udf01|\ud83c\udf02|\ud83c\udf03|\ud83c\udf04|\ud83c\udf05|\ud83c\udf06|\ud83c\udf07|\ud83c\udf08|\ud83c\udf09|\ud83c\udf0a|\ud83c\udf0b|\ud83c\udf0c|\ud83c\udf0f|\ud83c\udf11|\ud83c\udf13|\ud83c\udf14|\ud83c\udf15|\ud83c\udf19|\ud83c\udf1b|\ud83c\udf1f|\ud83c\udf20|\ud83c\udf30|\ud83c\udf31|\ud83c\udf34|\ud83c\udf35|\ud83c\udf37|\ud83c\udf38|\ud83c\udf39|\ud83c\udf3a|\ud83c\udf3b|\ud83c\udf3c|\ud83c\udf3d|\ud83c\udf3e|\ud83c\udf3f|\ud83c\udf40|\ud83c\udf41|\ud83c\udf42|\ud83c\udf43|\ud83c\udf44|\ud83c\udf45|\ud83c\udf46|\ud83c\udf47|\ud83c\udf48|\ud83c\udf49|\ud83c\udf4a|\ud83c\udf4c|\ud83c\udf4d|\ud83c\udf4e|\ud83c\udf4f|\ud83c\udf51|\ud83c\udf52|\ud83c\udf53|\ud83c\udf54|\ud83c\udf55|\ud83c\udf56|\ud83c\udf57|\ud83c\udf58|\ud83c\udf59|\ud83c\udf5a|\ud83c\udf5b|\ud83c\udf5c|\ud83c\udf5d|\ud83c\udf5e|\ud83c\udf5f|\ud83c\udf60|\ud83c\udf61|\ud83c\udf62|\ud83c\udf63|\ud83c\udf64|\ud83c\udf65|\ud83c\udf66|\ud83c\udf67|\ud83c\udf68|\ud83c\udf69|\ud83c\udf6a|\ud83c\udf6b|\ud83c\udf6c|\ud83c\udf6d|\ud83c\udf6e|\ud83c\udf6f|\ud83c\udf70|\ud83c\udf71|\ud83c\udf72|\ud83c\udf73|\ud83c\udf74|\ud83c\udf75|\ud83c\udf76|\ud83c\udf77|\ud83c\udf78|\ud83c\udf79|\ud83c\udf7a|\ud83c\udf7b|\ud83c\udf80|\ud83c\udf81|\ud83c\udf82|\ud83c\udf83|\ud83c\udf84|\ud83c\udf85|\ud83c\udf86|\ud83c\udf87|\ud83c\udf88|\ud83c\udf89|\ud83c\udf8a|\ud83c\udf8b|\ud83c\udf8c|\ud83c\udf8d|\ud83c\udf8e|\ud83c\udf8f|\ud83c\udf90|\ud83c\udf91|\ud83c\udf92|\ud83c\udf93|\ud83c\udfa0|\ud83c\udfa1|\ud83c\udfa2|\ud83c\udfa3|\ud83c\udfa4|\ud83c\udfa5|\ud83c\udfa6|\ud83c\udfa7|\ud83c\udfa8|\ud83c\udfa9|\ud83c\udfaa|\ud83c\udfab|\ud83c\udfac|\ud83c\udfad|\ud83c\udfae|\ud83c\udfaf|\ud83c\udfb0|\ud83c\udfb1|\ud83c\udfb2|\ud83c\udfb3|\ud83c\udfb4|\ud83c\udfb5|\ud83c\udfb6|\ud83c\udfb7|\ud83c\udfb8|\ud83c\udfb9|\ud83c\udfba|\ud83c\udfbb|\ud83c\udfbc|\ud83c\udfbd|\ud83c\udfbe|\ud83c\udfbf|\ud83c\udfc0|\ud83c\udfc1|\ud83c\udfc2|\ud83c\udfc3|\ud83c\udfc4|\ud83c\udfc6|\ud83c\udfc8|\ud83c\udfca|\ud83c\udfe0|\ud83c\udfe1|\ud83c\udfe2|\ud83c\udfe3|\ud83c\udfe5|\ud83c\udfe6|\ud83c\udfe7|\ud83c\udfe8|\ud83c\udfe9|\ud83c\udfea|\ud83c\udfeb|\ud83c\udfec|\ud83c\udfed|\ud83c\udfee|\ud83c\udfef|\ud83c\udff0|\ud83d\udc0c|\ud83d\udc0d|\ud83d\udc0e|\ud83d\udc11|\ud83d\udc12|\ud83d\udc14|\ud83d\udc17|\ud83d\udc18|\ud83d\udc19|\ud83d\udc1a|\ud83d\udc1b|\ud83d\udc1c|\ud83d\udc1d|\ud83d\udc1e|\ud83d\udc1f|\ud83d\udc20|\ud83d\udc21|\ud83d\udc22|\ud83d\udc23|\ud83d\udc24|\ud83d\udc25|\ud83d\udc26|\ud83d\udc27|\ud83d\udc28|\ud83d\udc29|\ud83d\udc2b|\ud83d\udc2c|\ud83d\udc2d|\ud83d\udc2e|\ud83d\udc2f|\ud83d\udc30|\ud83d\udc31|\ud83d\udc32|\ud83d\udc33|\ud83d\udc34|\ud83d\udc35|\ud83d\udc36|\ud83d\udc37|\ud83d\udc38|\ud83d\udc39|\ud83d\udc3a|\ud83d\udc3b|\ud83d\udc3c|\ud83d\udc3d|\ud83d\udc3e|\ud83d\udc40|\ud83d\udc42|\ud83d\udc43|\ud83d\udc44|\ud83d\udc45|\ud83d\udc46|\ud83d\udc47|\ud83d\udc48|\ud83d\udc49|\ud83d\udc4a|\ud83d\udc4b|\ud83d\udc4c|\ud83d\udc4d|\ud83d\udc4e|\ud83d\udc4f|\ud83d\udc50|\ud83d\udc51|\ud83d\udc52|\ud83d\udc53|\ud83d\udc54|\ud83d\udc55|\ud83d\udc56|\ud83d\udc57|\ud83d\udc58|\ud83d\udc59|\ud83d\udc5a|\ud83d\udc5b|\ud83d\udc5c|\ud83d\udc5d|\ud83d\udc5e|\ud83d\udc5f|\ud83d\udc60|\ud83d\udc61|\ud83d\udc62|\ud83d\udc63|\ud83d\udc64|\ud83d\udc66|\ud83d\udc67|\ud83d\udc68|\ud83d\udc69|\ud83d\udc6a|\ud83d\udc6b|\ud83d\udc6e|\ud83d\udc6f|\ud83d\udc70|\ud83d\udc71|\ud83d\udc72|\ud83d\udc73|\ud83d\udc74|\ud83d\udc75|\ud83d\udc76|\ud83d\udc77|\ud83d\udc78|\ud83d\udc79|\ud83d\udc7a|\ud83d\udc7b|\ud83d\udc7c|\ud83d\udc7d|\ud83d\udc7e|\ud83d\udc7f|\ud83d\udc80|\ud83d\udc81|\ud83d\udc82|\ud83d\udc83|\ud83d\udc84|\ud83d\udc85|\ud83d\udc86|\ud83d\udc87|\ud83d\udc88|\ud83d\udc89|\ud83d\udc8a|\ud83d\udc8b|\ud83d\udc8c|\ud83d\udc8d|\ud83d\udc8e|\ud83d\udc8f|\ud83d\udc90|\ud83d\udc91|\ud83d\udc92|\ud83d\udc93|\ud83d\udebf|\ud83d\udc95|\ud83d\udc96|\ud83d\udc97|\ud83d\udc98|\ud83d\udc99|\ud83d\udc9a|\ud83d\udc9b|\ud83d\udc9c|\ud83d\udc9d|\ud83d\udc9e|\ud83d\udc9f|\ud83d\udca0|\ud83d\udca1|\ud83d\udca2|\ud83d\udca3|\ud83d\udca4|\ud83d\udca5|\ud83d\udca6|\ud83d\udca7|\ud83d\udca8|\ud83d\udca9|\ud83d\udcaa|\ud83d\udcab|\ud83d\udcac|\ud83d\udcae|\ud83d\udcaf|\ud83d\udcb0|\ud83d\udcb1|\ud83d\udcb2|\ud83d\udcb3|\ud83d\udcb4|\ud83d\udcb5|\ud83d\udcb8|\ud83d\udcb9|\ud83d\udcba|\ud83d\udcbb|\ud83d\udcbc|\ud83d\udcbd|\ud83d\udcbe|\ud83d\udcbf|\ud83d\udcc0|\ud83d\udcc1|\ud83d\udcc2|\ud83d\udcc3|\ud83d\udcc4|\ud83d\udcc5|\ud83d\udcc6|\ud83d\udcc7|\ud83d\udcc8|\ud83d\udcc9|\ud83d\udcca|\ud83d\udccb|\ud83d\udccc|\ud83d\udccd|\ud83d\udcce|\ud83d\udccf|\ud83d\udcd0|\ud83d\udcd1|\ud83d\udcd2|\ud83d\udcd3|\ud83d\udcd4|\ud83d\udcd5|\ud83d\udcd6|\ud83d\udcd7|\ud83d\udcd8|\ud83d\udcd9|\ud83d\udcda|\ud83d\udcdb|\ud83d\udcdc|\ud83d\udcdd|\ud83d\udcde|\ud83d\udcdf|\ud83d\udce0|\ud83d\udce1|\ud83d\udce2|\ud83d\udce3|\ud83d\udce4|\ud83d\udce5|\ud83d\udce6|\ud83d\udce7|\ud83d\udce8|\ud83d\udce9|\ud83d\udcea|\ud83d\udceb|\ud83d\udcee|\ud83d\udcf0|\ud83d\udcf1|\ud83d\udcf2|\ud83d\udcf3|\ud83d\udcf4|\ud83d\udcf6|\ud83d\udcf7|\ud83d\udcf9|\ud83d\udcfa|\ud83d\udcfb|\ud83d\udcfc|\ud83d\udd03|\ud83d\udd0a|\ud83d\udd0b|\ud83d\udd0c|\ud83d\udd0d|\ud83d\udd0e|\ud83d\udd0f|\ud83d\udd10|\ud83d\udd11|\ud83d\udd12|\ud83d\udd13|\ud83d\udd14|\ud83d\udd16|\ud83d\udd17|\ud83d\udd18|\ud83d\udd19|\ud83d\udd1a|\ud83d\udd1b|\ud83d\udd1c|\ud83d\udd1d|\ud83d\udd1e|\ud83d\udd1f|\ud83d\udd20|\ud83d\udd21|\ud83d\udd22|\ud83d\udd23|\ud83d\udd24|\ud83d\udd25|\ud83d\udd26|\ud83d\udd27|\ud83d\udd28|\ud83d\udd29|\ud83d\udd2a|\ud83d\udd2b|\ud83d\udd2e|\ud83d\udd2f|\ud83d\udd30|\ud83d\udd31|\ud83d\udd32|\ud83d\udd33|\ud83d\udd34|\ud83d\udd35|\ud83d\udd36|\ud83d\udd37|\ud83d\udd38|\ud83d\udd39|\ud83d\udd3a|\ud83d\udd3b|\ud83d\udd3c|\ud83d\udd3d|\ud83d\udd50|\ud83d\udd51|\ud83d\udd52|\ud83d\udd53|\ud83d\udd54|\ud83d\udd55|\ud83d\udd56|\ud83d\udd57|\ud83d\udd58|\ud83d\udd59|\ud83d\udd5a|\ud83d\udd5b|\ud83d\uddfb|\ud83d\uddfc|\ud83d\uddfd|\ud83d\uddfe|\ud83d\uddff|\ud83d\ude01|\ud83d\ude02|\ud83d\ude03|\ud83d\ude04|\ud83d\ude05|\ud83d\ude06|\ud83d\ude09|\ud83d\ude0a|\ud83d\ude0b|\ud83d\ude0c|\ud83d\ude0d|\ud83d\ude0f|\ud83d\ude12|\ud83d\ude13|\ud83d\ude14|\ud83d\ude16|\ud83d\ude18|\ud83d\ude1a|\ud83d\ude1c|\ud83d\ude1d|\ud83d\ude1e|\ud83d\ude20|\ud83d\ude21|\ud83d\ude22|\ud83d\ude23|\ud83d\ude24|\ud83d\ude25|\ud83d\ude28|\ud83d\ude29|\ud83d\ude2a|\ud83d\ude2b|\ud83d\ude2d|\ud83d\ude30|\ud83d\ude31|\ud83d\ude32|\ud83d\ude33|\ud83d\ude35|\ud83d\ude37|\ud83d\ude38|\ud83d\ude39|\ud83d\ude3a|\ud83d\ude3b|\ud83d\ude3c|\ud83d\ude3d|\ud83d\ude3e|\ud83d\ude3f|\ud83d\ude40|\ud83d\ude45|\ud83d\ude46|\ud83d\ude47|\ud83d\ude48|\ud83d\ude49|\ud83d\ude4a|\ud83d\ude4b|\ud83d\ude4c|\ud83d\ude4d|\ud83d\ude4e|\ud83d\ude4f|\ud83d\ude80|\ud83d\ude83|\ud83d\ude84|\ud83d\ude85|\ud83d\ude87|\ud83d\ude89|\ud83d\ude8c|\ud83d\ude8f|\ud83d\ude91|\ud83d\ude92|\ud83d\ude93|\ud83d\ude95|\ud83d\ude97|\ud83d\ude99|\ud83d\ude9a|\ud83d\udea2|\ud83d\udea4|\ud83d\udea5|\ud83d\udea7|\ud83d\udea8|\ud83d\udea9|\ud83d\udeaa|\ud83d\udeab|\ud83d\udeac|\ud83d\udead|\ud83d\udeb2|\ud83d\udeb6|\ud83d\udeb9|\ud83d\udeba|\ud83d\udebb|\ud83d\udebc|\ud83d\udebd|\ud83d\udebe|\ud83d\udec0|\ud83c\udfce|\ud83d\udeb8|\ud83d\udeb7|\ud83d\udeb5|\ud83d\udeb4|\ud83d\udeb3|\ud83d\udeb1|\ud83d\udeb0|\ud83d\udeaf|\ud83d\udeae|\ud83d\udea6|\ud83d\udea3|\ud83d\udea1|\ud83d\udea0|\ud83d\ude9f|\ud83d\ude9e|\ud83d\ude9d|\ud83d\ude9c|\ud83d\ude9b|\ud83d\ude98|\ud83d\ude96|\ud83d\ude94|\ud83d\ude90|\ud83d\ude8e|\ud83d\ude8d|\ud83c\udde6|\ud83d\ude8b|\ud83c\udde7|\ud83d\ude8a|\ud83d\ude88|\ud83c\udde8|\ud83d\ude86|\ud83c\udde9|\ud83d\ude82|\ud83c\uddea|\ud83c\uddeb|\ud83c\uddec|\ud83d\ude81|\ud83c\udded|\ud83d\ude36|\ud83d\ude34|\ud83c\uddee|\ud83c\uddef|\ud83c\uddf0|\ud83c\uddf1|\ud83d\ude2f|\ud83c\uddf2|\ud83c\uddf3|\ud83c\uddf4|\ud83d\ude2e|\ud83c\uddf5|\ud83c\uddf6|\ud83c\uddf7|\ud83d\ude2c|\ud83d\ude27|\ud83c\uddf8|\ud83d\ude26|\ud83c\uddf9|\ud83d\ude1f|\ud83c\uddfa|\ud83c\uddfb|\ud83c\uddfc|\ud83c\uddfd|\ud83c\uddfe|\ud83c\uddff|\ud83c\udf0d|\ud83c\udf0e|\ud83c\udf10|\ud83c\udf12|\ud83c\udf16|\ud83c\udf17|\ud83c\udf18|\ud83c\udf1a|\ud83c\udf1c|\ud83c\udf1d|\ud83c\udf1e|\ud83c\udf2d|\ud83c\udf2e|\ud83c\udf2f|\ud83c\udf32|\ud83c\udf33|\ud83c\udf4b|\ud83c\udf50|\ud83c\udf7c|\ud83c\udfc7|\ud83c\udfc9|\ue50a|\u2797|\u2796|\u2795|\u2755|\u2754|\u2753|\u2728|\u2705|\u274c|\u274e|\u270a|\u270b|\u269c|\u27bf|\u27b0|\u26f8|\u26ce|\u23e9|\u23ea|\u23eb|\u23ec|\u23f0|\u23f3|\u00a9|\u00ae|\ud800\udc00)|(?:(?:\ud83c\udc04|\ud83c\udd70|\ud83c\udd71|\ud83c\udd7e|\ud83c\udd7f|\ud83c\ude02|\ud83c\ude1a|\ud83c\ude2f|\ud83c\ude37|\u3299|\u3297|\u3030|\u2935|\u2934|\u2764|\u2757|\u2747|\u2744|\u2734|\u2733|\u2716|\u2714|\u2712|\u2709|\u2708|\u2702|\u2693|\u2668|\u2666|\u2665|\u2663|\u2660|\u2653|\u2652|\u2651|\u2650|\u2649|\u2648|\u2615|\u2614|\u2611|\u2601|\u2600|\u2199|\u2198|\u2197|\u2196|\u2195|\u2194|\u2139|\u2122|\u2049|\u303d|\u270c|\u270f|\u267f|\u267b|\u264e|\u264d|\u264c|\u264b|\u264f|\u264a|\u263a|\u261d|\u260e|\u231b|\u231a|\u203c|\u27a1|\u26fd|\u26f5|\u26fa|\u26a1|\u26aa|\u26ab|\u26bd|\u26be|\u26d4|\u26c4|\u26c5|\u26a0|\u26f2|\u26f3|\u26ea|\u25ab|\u25aa|\u25fd|\u25b6|\u25fb|\u25c0|\u25fe|\u25fc|\u24c2|\u21a9|\u21aa|\u2b07|\u2b05|\u2b06|\u2b50|\u2b55|\u2b1c|\u2b1b)([\uFE0E\uFE0F]?)))/g,
+ re = /((?:\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67|\ud83c\uddf7\ud83c\uddf8|\ud83d\udd95\ud83c\udffd|\ud83d\udd95\ud83c\udffc|\ud83d\udd95\ud83c\udffb|\ud83d\udd90\ud83c\udfff|\ud83d\udd90\ud83c\udffe|\ud83d\udd90\ud83c\udffd|\ud83d\udd90\ud83c\udffc|\ud83d\udd90\ud83c\udffb|\ud83d\udcaa\ud83c\udfff|\ud83d\udcaa\ud83c\udffe|\ud83d\udcaa\ud83c\udffd|\ud83d\udcaa\ud83c\udffc|\ud83d\udcaa\ud83c\udffb|\ud83d\udc87\ud83c\udfff|\ud83d\udc87\ud83c\udffe|\ud83d\udc87\ud83c\udffd|\ud83d\udc87\ud83c\udffc|\ud83d\udc87\ud83c\udffb|\ud83d\udc86\ud83c\udfff|\ud83d\udc86\ud83c\udffe|\ud83d\udc86\ud83c\udffd|\ud83e\udd18\ud83c\udfff|\ud83e\udd18\ud83c\udffe|\ud83e\udd18\ud83c\udffd|\ud83e\udd18\ud83c\udffc|\ud83e\udd18\ud83c\udffb|\ud83d\udec0\ud83c\udfff|\ud83d\udec0\ud83c\udffe|\ud83d\udec0\ud83c\udffd|\ud83d\udec0\ud83c\udffc|\ud83d\udec0\ud83c\udffb|\ud83d\udeb6\ud83c\udfff|\ud83d\udeb6\ud83c\udffe|\ud83d\udeb6\ud83c\udffd|\ud83d\udeb6\ud83c\udffc|\ud83d\udeb6\ud83c\udffb|\ud83d\udeb5\ud83c\udfff|\ud83d\udeb5\ud83c\udffe|\ud83d\udeb5\ud83c\udffd|\ud83d\udeb5\ud83c\udffc|\ud83d\udeb5\ud83c\udffb|\ud83d\udeb4\ud83c\udfff|\ud83d\udeb4\ud83c\udffe|\ud83d\udeb4\ud83c\udffd|\ud83d\udeb4\ud83c\udffc|\ud83d\udeb4\ud83c\udffb|\ud83d\udea3\ud83c\udfff|\ud83d\udea3\ud83c\udffe|\ud83d\udea3\ud83c\udffd|\ud83d\udea3\ud83c\udffc|\ud83d\udea3\ud83c\udffb|\ud83d\ude4f\ud83c\udfff|\ud83d\ude4f\ud83c\udffe|\ud83d\ude4f\ud83c\udffd|\ud83d\ude4f\ud83c\udffc|\ud83d\ude4f\ud83c\udffb|\ud83d\ude4e\ud83c\udfff|\ud83d\ude4e\ud83c\udffe|\ud83d\ude4e\ud83c\udffd|\ud83d\ude4e\ud83c\udffc|\ud83d\ude4e\ud83c\udffb|\ud83d\ude4d\ud83c\udfff|\ud83d\ude4d\ud83c\udffe|\ud83d\ude4d\ud83c\udffd|\ud83d\ude4d\ud83c\udffc|\ud83d\ude4d\ud83c\udffb|\ud83d\ude4c\ud83c\udfff|\ud83d\ude4c\ud83c\udffe|\ud83d\ude4c\ud83c\udffd|\ud83d\ude4c\ud83c\udffc|\ud83d\ude4c\ud83c\udffb|\ud83d\ude4b\ud83c\udfff|\ud83d\ude4b\ud83c\udffe|\ud83d\ude4b\ud83c\udffd|\ud83d\ude4b\ud83c\udffc|\ud83d\ude4b\ud83c\udffb|\ud83d\ude47\ud83c\udfff|\ud83d\ude47\ud83c\udffe|\ud83c\udde8\ud83c\uddf3|\ud83c\udde9\ud83c\uddea|\ud83c\uddea\ud83c\uddf8|\ud83c\uddeb\ud83c\uddf7|\ud83c\uddec\ud83c\udde7|\ud83c\uddee\ud83c\uddf9|\ud83c\uddef\ud83c\uddf5|\ud83c\uddf0\ud83c\uddf7|\ud83c\uddf7\ud83c\uddfa|\ud83c\uddfa\ud83c\uddf8|\ud83d\udc86\ud83c\udffc|\ud83d\ude47\ud83c\udffd|\ud83d\ude47\ud83c\udffc|\ud83d\udc86\ud83c\udffb|\ud83d\udc85\ud83c\udfff|\ud83d\udc85\ud83c\udffe|\ud83d\udc85\ud83c\udffd|\ud83d\udc85\ud83c\udffc|\ud83d\udc85\ud83c\udffb|\ud83d\udc83\ud83c\udfff|\ud83d\udc83\ud83c\udffe|\ud83d\udc83\ud83c\udffd|\ud83d\udc83\ud83c\udffc|\ud83d\udc83\ud83c\udffb|\ud83d\udc82\ud83c\udfff|\ud83c\udde6\ud83c\udde8|\ud83c\udde6\ud83c\udde9|\ud83c\udde6\ud83c\uddea|\ud83c\udde6\ud83c\uddeb|\ud83c\udde6\ud83c\uddec|\ud83c\udde6\ud83c\uddee|\ud83c\udde6\ud83c\uddf1|\ud83c\udde6\ud83c\uddf2|\ud83c\udde6\ud83c\uddf4|\ud83c\udde6\ud83c\uddf6|\ud83c\udde6\ud83c\uddf7|\ud83c\udde6\ud83c\uddf8|\ud83c\udde6\ud83c\uddf9|\ud83c\udde6\ud83c\uddfa|\ud83c\udde6\ud83c\uddfc|\ud83c\udde6\ud83c\uddfd|\ud83c\udde6\ud83c\uddff|\ud83c\udde7\ud83c\udde6|\ud83c\udde7\ud83c\udde7|\ud83c\udde7\ud83c\udde9|\ud83c\udde7\ud83c\uddea|\ud83c\udde7\ud83c\uddeb|\ud83c\udde7\ud83c\uddec|\ud83c\udde7\ud83c\udded|\ud83c\udde7\ud83c\uddee|\ud83c\udde7\ud83c\uddef|\ud83c\udde7\ud83c\uddf1|\ud83c\udde7\ud83c\uddf2|\ud83c\udde7\ud83c\uddf3|\ud83c\udde7\ud83c\uddf4|\ud83c\udde7\ud83c\uddf6|\ud83c\udde7\ud83c\uddf7|\ud83c\udde7\ud83c\uddf8|\ud83c\udde7\ud83c\uddf9|\ud83c\udde7\ud83c\uddfb|\ud83c\udde7\ud83c\uddfc|\ud83c\udde7\ud83c\uddfe|\ud83c\udde7\ud83c\uddff|\ud83c\udde8\ud83c\udde6|\ud83c\udde8\ud83c\udde8|\ud83c\udde8\ud83c\udde9|\ud83c\udde8\ud83c\uddeb|\ud83c\udde8\ud83c\uddec|\ud83c\udde8\ud83c\udded|\ud83c\udde8\ud83c\uddee|\ud83c\udde8\ud83c\uddf0|\ud83c\udde8\ud83c\uddf1|\ud83c\udde8\ud83c\uddf2|\ud83c\udde8\ud83c\uddf4|\ud83c\udde8\ud83c\uddf5|\ud83c\udde8\ud83c\uddf7|\ud83c\udde8\ud83c\uddfa|\ud83c\udde8\ud83c\uddfb|\ud83c\udde8\ud83c\uddfc|\ud83c\udde8\ud83c\uddfd|\ud83c\udde8\ud83c\uddfe|\ud83c\udde8\ud83c\uddff|\ud83c\udde9\ud83c\uddec|\ud83c\udde9\ud83c\uddef|\ud83c\udde9\ud83c\uddf0|\ud83c\udde9\ud83c\uddf2|\ud83c\udde9\ud83c\uddf4|\ud83c\udde9\ud83c\uddff|\ud83c\uddea\ud83c\udde6|\ud83c\uddea\ud83c\udde8|\ud83c\uddea\ud83c\uddea|\ud83c\uddea\ud83c\uddec|\ud83c\uddea\ud83c\udded|\ud83c\uddea\ud83c\uddf7|\ud83c\uddea\ud83c\uddf9|\ud83c\uddea\ud83c\uddfa|\ud83c\uddeb\ud83c\uddee|\ud83c\uddeb\ud83c\uddef|\ud83c\uddeb\ud83c\uddf0|\ud83c\uddeb\ud83c\uddf2|\ud83c\uddeb\ud83c\uddf4|\ud83c\uddec\ud83c\udde6|\ud83c\uddec\ud83c\udde9|\ud83c\uddec\ud83c\uddea|\ud83c\uddec\ud83c\uddeb|\ud83c\uddec\ud83c\uddec|\ud83c\uddec\ud83c\udded|\ud83c\uddec\ud83c\uddee|\ud83c\uddec\ud83c\uddf1|\ud83c\uddec\ud83c\uddf2|\ud83c\uddec\ud83c\uddf3|\ud83c\uddec\ud83c\uddf5|\ud83c\uddec\ud83c\uddf6|\ud83c\uddec\ud83c\uddf7|\ud83c\uddec\ud83c\uddf8|\ud83c\uddec\ud83c\uddf9|\ud83c\uddec\ud83c\uddfa|\ud83c\uddec\ud83c\uddfc|\ud83c\uddec\ud83c\uddfe|\ud83c\udded\ud83c\uddf0|\ud83c\udded\ud83c\uddf2|\ud83c\udded\ud83c\uddf3|\ud83c\udded\ud83c\uddf7|\ud83c\udded\ud83c\uddf9|\ud83c\udded\ud83c\uddfa|\ud83c\uddee\ud83c\udde8|\ud83c\uddee\ud83c\udde9|\ud83c\uddee\ud83c\uddea|\ud83c\uddee\ud83c\uddf1|\ud83c\uddee\ud83c\uddf2|\ud83c\uddee\ud83c\uddf3|\ud83c\uddee\ud83c\uddf4|\ud83c\uddee\ud83c\uddf6|\ud83c\uddee\ud83c\uddf7|\ud83c\uddee\ud83c\uddf8|\ud83c\uddef\ud83c\uddea|\ud83c\uddef\ud83c\uddf2|\ud83c\uddef\ud83c\uddf4|\ud83c\uddf0\ud83c\uddea|\ud83c\uddf0\ud83c\uddec|\ud83c\uddf0\ud83c\udded|\ud83c\uddf0\ud83c\uddee|\ud83c\uddf0\ud83c\uddf2|\ud83c\uddf0\ud83c\uddf3|\ud83c\uddf0\ud83c\uddf5|\ud83c\uddf0\ud83c\uddfc|\ud83c\uddf0\ud83c\uddfe|\ud83c\uddf0\ud83c\uddff|\ud83c\uddf1\ud83c\udde6|\ud83c\uddf1\ud83c\udde7|\ud83c\uddf1\ud83c\udde8|\ud83c\uddf1\ud83c\uddee|\ud83c\uddf1\ud83c\uddf0|\ud83c\uddf1\ud83c\uddf7|\ud83c\uddf1\ud83c\uddf8|\ud83c\uddf1\ud83c\uddf9|\ud83c\uddf1\ud83c\uddfa|\ud83c\uddf1\ud83c\uddfb|\ud83c\uddf1\ud83c\uddfe|\ud83c\uddf2\ud83c\udde6|\ud83c\uddf2\ud83c\udde8|\ud83c\uddf2\ud83c\udde9|\ud83c\uddf2\ud83c\uddea|\ud83c\uddf2\ud83c\uddeb|\ud83c\uddf2\ud83c\uddec|\ud83c\uddf2\ud83c\udded|\ud83c\uddf2\ud83c\uddf0|\ud83c\uddf2\ud83c\uddf1|\ud83c\uddf2\ud83c\uddf2|\ud83c\uddf2\ud83c\uddf3|\ud83c\uddf2\ud83c\uddf4|\ud83c\uddf2\ud83c\uddf5|\ud83c\uddf2\ud83c\uddf6|\ud83c\uddf2\ud83c\uddf7|\ud83c\uddf2\ud83c\uddf8|\ud83c\uddf2\ud83c\uddf9|\ud83c\uddf2\ud83c\uddfa|\ud83c\uddf2\ud83c\uddfb|\ud83c\uddf2\ud83c\uddfc|\ud83c\uddf2\ud83c\uddfd|\ud83c\uddf2\ud83c\uddfe|\ud83c\uddf2\ud83c\uddff|\ud83c\uddf3\ud83c\udde6|\ud83c\uddf3\ud83c\udde8|\ud83c\uddf3\ud83c\uddea|\ud83c\uddf3\ud83c\uddeb|\ud83c\uddf3\ud83c\uddec|\ud83c\uddf3\ud83c\uddee|\ud83c\uddf3\ud83c\uddf1|\ud83c\uddf3\ud83c\uddf4|\ud83c\uddf3\ud83c\uddf5|\ud83c\uddf3\ud83c\uddf7|\ud83c\uddf3\ud83c\uddfa|\ud83c\uddf3\ud83c\uddff|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c\udde6|\ud83c\uddf5\ud83c\uddea|\ud83c\uddf5\ud83c\uddeb|\ud83c\uddf5\ud83c\uddec|\ud83c\uddf5\ud83c\udded|\ud83c\uddf5\ud83c\uddf0|\ud83c\uddf5\ud83c\uddf1|\ud83c\uddf5\ud83c\uddf2|\ud83c\uddf5\ud83c\uddf3|\ud83c\uddf5\ud83c\uddf7|\ud83c\uddf5\ud83c\uddf8|\ud83c\uddf5\ud83c\uddf9|\ud83c\uddf5\ud83c\uddfc|\ud83c\uddf5\ud83c\uddfe|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c\uddea|\ud83c\uddf7\ud83c\uddf4|\ud83d\udc82\ud83c\udffe|\ud83c\uddf7\ud83c\uddfc|\ud83c\uddf8\ud83c\udde6|\ud83c\uddf8\ud83c\udde7|\ud83c\uddf8\ud83c\udde8|\ud83c\uddf8\ud83c\udde9|\ud83c\uddf8\ud83c\uddea|\ud83c\uddf8\ud83c\uddec|\ud83c\uddf8\ud83c\udded|\ud83c\uddf8\ud83c\uddee|\ud83c\uddf8\ud83c\uddef|\ud83c\uddf8\ud83c\uddf0|\ud83c\uddf8\ud83c\uddf1|\ud83c\uddf8\ud83c\uddf2|\ud83c\uddf8\ud83c\uddf3|\ud83c\uddf8\ud83c\uddf4|\ud83c\uddf8\ud83c\uddf7|\ud83c\uddf8\ud83c\uddf8|\ud83c\uddf8\ud83c\uddf9|\ud83c\uddf8\ud83c\uddfb|\ud83c\uddf8\ud83c\uddfd|\ud83c\uddf8\ud83c\uddfe|\ud83c\uddf8\ud83c\uddff|\ud83c\uddf9\ud83c\udde6|\ud83c\uddf9\ud83c\udde8|\ud83c\uddf9\ud83c\udde9|\ud83c\uddf9\ud83c\uddeb|\ud83c\uddf9\ud83c\uddec|\ud83c\uddf9\ud83c\udded|\ud83c\uddf9\ud83c\uddef|\ud83c\uddf9\ud83c\uddf0|\ud83c\uddf9\ud83c\uddf1|\ud83c\uddf9\ud83c\uddf2|\ud83c\uddf9\ud83c\uddf3|\ud83c\uddf9\ud83c\uddf4|\ud83c\uddf9\ud83c\uddf7|\ud83c\uddf9\ud83c\uddf9|\ud83c\uddf9\ud83c\uddfb|\ud83c\uddf9\ud83c\uddfc|\ud83c\uddf9\ud83c\uddff|\ud83c\uddfa\ud83c\udde6|\ud83c\uddfa\ud83c\uddec|\ud83c\uddfa\ud83c\uddf2|\ud83c\uddfa\ud83c\uddfe|\ud83c\uddfa\ud83c\uddff|\ud83c\uddfb\ud83c\udde6|\ud83c\uddfb\ud83c\udde8|\ud83c\uddfb\ud83c\uddea|\ud83c\uddfb\ud83c\uddec|\ud83c\uddfb\ud83c\uddee|\ud83c\uddfb\ud83c\uddf3|\ud83c\uddfb\ud83c\uddfa|\ud83c\uddfc\ud83c\uddeb|\ud83c\uddfc\ud83c\uddf8|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c\uddea|\ud83c\uddfe\ud83c\uddf9|\ud83c\uddff\ud83c\udde6|\ud83c\uddff\ud83c\uddf2|\ud83c\uddff\ud83c\uddfc|\ud83c\udf85\ud83c\udffb|\ud83c\udf85\ud83c\udffc|\ud83c\udf85\ud83c\udffd|\ud83c\udf85\ud83c\udffe|\ud83c\udf85\ud83c\udfff|\ud83c\udfc3\ud83c\udffb|\ud83c\udfc3\ud83c\udffc|\ud83c\udfc3\ud83c\udffd|\ud83c\udfc3\ud83c\udffe|\ud83c\udfc3\ud83c\udfff|\ud83c\udfc4\ud83c\udffb|\ud83c\udfc4\ud83c\udffc|\ud83c\udfc4\ud83c\udffd|\ud83c\udfc4\ud83c\udffe|\ud83c\udfc4\ud83c\udfff|\ud83c\udfc7\ud83c\udffb|\ud83c\udfc7\ud83c\udffc|\ud83c\udfc7\ud83c\udffd|\ud83c\udfc7\ud83c\udffe|\ud83c\udfc7\ud83c\udfff|\ud83c\udfca\ud83c\udffb|\ud83c\udfca\ud83c\udffc|\ud83c\udfca\ud83c\udffd|\ud83c\udfca\ud83c\udffe|\ud83c\udfca\ud83c\udfff|\ud83c\udfcb\ud83c\udffb|\ud83c\udfcb\ud83c\udffc|\ud83c\udfcb\ud83c\udffd|\ud83c\udfcb\ud83c\udffe|\ud83c\udfcb\ud83c\udfff|\ud83d\udc42\ud83c\udffb|\ud83d\udc42\ud83c\udffc|\ud83d\udc42\ud83c\udffd|\ud83d\udc42\ud83c\udffe|\ud83d\udc42\ud83c\udfff|\ud83d\udc43\ud83c\udffb|\ud83d\udc43\ud83c\udffc|\ud83d\udc43\ud83c\udffd|\ud83d\udc43\ud83c\udffe|\ud83d\udc43\ud83c\udfff|\ud83d\udc46\ud83c\udffb|\ud83d\udc46\ud83c\udffc|\ud83d\udc46\ud83c\udffd|\ud83d\udc46\ud83c\udffe|\ud83d\udc46\ud83c\udfff|\ud83d\udc47\ud83c\udffb|\ud83d\udc47\ud83c\udffc|\ud83d\udc47\ud83c\udffd|\ud83d\udc47\ud83c\udffe|\ud83d\udc47\ud83c\udfff|\ud83d\udc48\ud83c\udffb|\ud83d\udc48\ud83c\udffc|\ud83d\udc48\ud83c\udffd|\ud83d\udc48\ud83c\udffe|\ud83d\udc48\ud83c\udfff|\ud83d\udc49\ud83c\udffb|\ud83d\udc49\ud83c\udffc|\ud83d\udc49\ud83c\udffd|\ud83d\udc49\ud83c\udffe|\ud83d\udc49\ud83c\udfff|\ud83d\udc4a\ud83c\udffb|\ud83d\udc4a\ud83c\udffc|\ud83d\udc4a\ud83c\udffd|\ud83d\udc4a\ud83c\udffe|\ud83d\udc4a\ud83c\udfff|\ud83d\udc4b\ud83c\udffb|\ud83d\udc4b\ud83c\udffc|\ud83d\udc4b\ud83c\udffd|\ud83d\udc4b\ud83c\udffe|\ud83d\udc4b\ud83c\udfff|\ud83d\udc4c\ud83c\udffb|\ud83d\udc4c\ud83c\udffc|\ud83d\udc4c\ud83c\udffd|\ud83d\udc4c\ud83c\udffe|\ud83d\udc4c\ud83c\udfff|\ud83d\udc4d\ud83c\udffb|\ud83d\udc4d\ud83c\udffc|\ud83d\udc4d\ud83c\udffd|\ud83d\udc4d\ud83c\udffe|\ud83d\udc4d\ud83c\udfff|\ud83d\udc4e\ud83c\udffb|\ud83d\udc4e\ud83c\udffc|\ud83d\udc4e\ud83c\udffd|\ud83d\udc4e\ud83c\udffe|\ud83d\udc4e\ud83c\udfff|\ud83d\udc4f\ud83c\udffb|\ud83d\udc4f\ud83c\udffc|\ud83d\udc4f\ud83c\udffd|\ud83d\udc4f\ud83c\udffe|\ud83d\udc4f\ud83c\udfff|\ud83d\udc50\ud83c\udffb|\ud83d\udc50\ud83c\udffc|\ud83d\udc50\ud83c\udffd|\ud83d\udc50\ud83c\udffe|\ud83d\udc50\ud83c\udfff|\ud83d\udc66\ud83c\udffb|\ud83d\udc66\ud83c\udffc|\ud83d\udc66\ud83c\udffd|\ud83d\udc66\ud83c\udffe|\ud83d\udc66\ud83c\udfff|\ud83d\udc67\ud83c\udffb|\ud83d\udc67\ud83c\udffc|\ud83d\udc67\ud83c\udffd|\ud83d\udc67\ud83c\udffe|\ud83d\udc67\ud83c\udfff|\ud83d\udc68\ud83c\udffb|\ud83d\udc68\ud83c\udffc|\ud83d\udc68\ud83c\udffd|\ud83d\udc68\ud83c\udffe|\ud83d\udc68\ud83c\udfff|\ud83d\ude47\ud83c\udffb|\ud83d\ude46\ud83c\udfff|\ud83d\ude46\ud83c\udffe|\ud83d\ude46\ud83c\udffd|\ud83d\ude46\ud83c\udffc|\ud83d\ude46\ud83c\udffb|\ud83d\ude45\ud83c\udfff|\ud83d\ude45\ud83c\udffe|\ud83d\ude45\ud83c\udffd|\ud83d\ude45\ud83c\udffc|\ud83d\ude45\ud83c\udffb|\ud83d\udc69\ud83c\udffb|\ud83d\udc69\ud83c\udffc|\ud83d\udc69\ud83c\udffd|\ud83d\udc69\ud83c\udffe|\ud83d\udc69\ud83c\udfff|\ud83d\udd96\ud83c\udfff|\ud83d\udd96\ud83c\udffe|\ud83d\udd96\ud83c\udffd|\ud83d\udd96\ud83c\udffc|\ud83d\udd96\ud83c\udffb|\ud83d\udd95\ud83c\udfff|\ud83d\udd95\ud83c\udffe|\ud83d\udc6e\ud83c\udffb|\ud83d\udc6e\ud83c\udffc|\ud83d\udc6e\ud83c\udffd|\ud83d\udc6e\ud83c\udffe|\ud83d\udc6e\ud83c\udfff|\ud83d\udc70\ud83c\udffb|\ud83d\udc70\ud83c\udffc|\ud83d\udc70\ud83c\udffd|\ud83d\udc70\ud83c\udffe|\ud83d\udc70\ud83c\udfff|\ud83d\udc71\ud83c\udffb|\ud83d\udc71\ud83c\udffc|\ud83d\udc71\ud83c\udffd|\ud83d\udc71\ud83c\udffe|\ud83d\udc71\ud83c\udfff|\ud83d\udc72\ud83c\udffb|\ud83d\udc72\ud83c\udffc|\ud83d\udc72\ud83c\udffd|\ud83d\udc72\ud83c\udffe|\ud83d\udc72\ud83c\udfff|\ud83d\udc73\ud83c\udffb|\ud83d\udc73\ud83c\udffc|\ud83d\udc73\ud83c\udffd|\ud83d\udc73\ud83c\udffe|\ud83d\udc73\ud83c\udfff|\ud83d\udc74\ud83c\udffb|\ud83d\udc74\ud83c\udffc|\ud83d\udc74\ud83c\udffd|\ud83d\udc74\ud83c\udffe|\ud83d\udc74\ud83c\udfff|\ud83d\udc75\ud83c\udffb|\ud83d\udc75\ud83c\udffc|\ud83d\udc75\ud83c\udffd|\ud83d\udc75\ud83c\udffe|\ud83d\udc75\ud83c\udfff|\ud83d\udc76\ud83c\udffb|\ud83d\udc76\ud83c\udffc|\ud83d\udc76\ud83c\udffd|\ud83d\udc76\ud83c\udffe|\ud83d\udc76\ud83c\udfff|\ud83d\udc77\ud83c\udffb|\ud83d\udc77\ud83c\udffc|\ud83d\udc77\ud83c\udffd|\ud83d\udc77\ud83c\udffe|\ud83d\udc77\ud83c\udfff|\ud83d\udc78\ud83c\udffb|\ud83d\udc78\ud83c\udffc|\ud83d\udc78\ud83c\udffd|\ud83d\udc78\ud83c\udffe|\ud83d\udc78\ud83c\udfff|\ud83d\udc7c\ud83c\udffb|\ud83d\udc7c\ud83c\udffc|\ud83d\udc7c\ud83c\udffd|\ud83d\udc7c\ud83c\udffe|\ud83d\udc7c\ud83c\udfff|\ud83d\udc81\ud83c\udffb|\ud83d\udc81\ud83c\udffc|\ud83d\udc81\ud83c\udffd|\ud83d\udc81\ud83c\udffe|\ud83d\udc81\ud83c\udfff|\ud83d\udc82\ud83c\udffb|\ud83d\udc82\ud83c\udffc|\ud83d\udc82\ud83c\udffd|\u270a\ud83c\udffd|\u270b\ud83c\udffd|\u270d\ud83c\udffe|\u270d\ud83c\udffd|\u270d\ud83c\udffc|\u270d\ud83c\udffb|\u270c\ud83c\udfff|\u270c\ud83c\udffe|\u270c\ud83c\udffd|\u270c\ud83c\udffc|\u270c\ud83c\udffb|\u270b\ud83c\udfff|\u270b\ud83c\udffc|\u270b\ud83c\udffb|\u270a\ud83c\udfff|\u270d\ud83c\udfff|\u270a\ud83c\udffe|\u270b\ud83c\udffe|\u270a\ud83c\udffc|\u270a\ud83c\udffb|\u261d\ud83c\udfff|\u261d\ud83c\udffd|\u261d\ud83c\udffc|\u261d\ud83c\udffb|\u261d\ud83c\udffe|\u26f9\ud83c\udffe|\u26f9\ud83c\udfff|\u26f9\ud83c\udffd|\u26f9\ud83c\udffc|\u26f9\ud83c\udffb|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\u002a\u20e3|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\ud83d\udd55|\ud83d\udd56|\ud83d\udd57|\ud83d\udd58|\ud83d\udd59|\ud83d\udd5a|\ud83d\udd5b|\ud83d\uddfb|\ud83d\uddfc|\ud83d\uddfd|\ud83d\uddfe|\ud83d\uddff|\ud83d\ude01|\ud83d\ude02|\ud83d\ude03|\ud83d\ude04|\ud83d\ude05|\ud83d\ude06|\ud83d\ude09|\ud83d\ude0a|\ud83d\ude0b|\ud83d\ude0c|\ud83d\ude0d|\ud83d\ude0f|\ud83d\ude12|\ud83d\ude13|\ud83d\ude14|\ud83d\ude16|\ud83d\ude18|\ud83d\ude1a|\ud83d\ude1c|\ud83d\ude1d|\ud83d\ude1e|\ud83d\ude20|\ud83d\ude21|\ud83d\ude22|\ud83d\ude23|\ud83d\ude24|\ud83d\ude25|\ud83d\ude28|\ud83d\ude29|\ud83d\ude2a|\ud83d\ude2b|\ud83d\ude2d|\ud83d\ude30|\ud83d\ude31|\ud83d\ude32|\ud83d\ude33|\ud83d\ude35|\ud83d\ude37|\ud83d\ude38|\ud83d\ude39|\ud83d\ude3a|\ud83d\ude3b|\ud83d\ude3c|\ud83d\ude3d|\ud83d\ude3e|\ud83d\ude3f|\ud83d\ude40|\ud83d\ude45|\ud83d\ude46|\ud83d\ude47|\ud83d\ude48|\ud83d\ude49|\ud83d\ude4a|\ud83d\ude4b|\ud83d\ude4c|\ud83d\ude4d|\ud83d\ude4e|\ud83d\ude4f|\ud83d\ude80|\ud83d\ude83|\ud83d\ude84|\ud83d\ude85|\ud83d\ude87|\ud83d\ude89|\ud83d\ude8c|\ud83d\ude8f|\ud83d\ude91|\ud83d\ude92|\ud83d\ude93|\ud83d\ude95|\ud83d\ude97|\ud83d\ude99|\ud83d\ude9a|\ud83d\udea2|\ud83d\udea4|\ud83d\udea5|\ud83d\udea7|\ud83d\udea8|\ud83d\udea9|\ud83d\udeaa|\ud83d\udeab|\ud83d\udeac|\ud83d\udead|\ud83d\udeb2|\ud83d\udeb6|\ud83d\udeb9|\ud83d\udeba|\ud83d\udebb|\ud83d\udebc|\ud83d\udebd|\ud83d\udebe|\ud83d\udec0|\ud83c\udde6|\ud83c\udde7|\ud83c\udde8|\ud83c\udde9|\ud83c\uddea|\ud83c\uddeb|\ud83c\uddec|\ud83c\udded|\ud83c\uddee|\ud83c\uddef|\ud83c\uddf0|\ud83c\uddf1|\ud83c\uddf2|\ud83c\uddf3|\ud83c\uddf4|\ud83c\uddf5|\ud83c\uddf6|\ud83c\uddf7|\ud83c\uddf8|\ud83c\uddf9|\ud83c\uddfa|\ud83c\uddfb|\ud83c\uddfc|\ud83c\uddfd|\ud83c\uddfe|\ud83c\uddff|\ud83c\udf0d|\ud83c\udf0e|\ud83c\udf10|\ud83c\udf12|\ud83c\udf16|\ud83c\udf17|\ud83c\udf18|\ud83c\udf1a|\ud83c\udf1c|\ud83c\udf1d|\ud83c\udf1e|\ud83c\udf32|\ud83c\udf33|\ud83c\udf4b|\ud83c\udf50|\ud83c\udf7c|\ud83c\udfc7|\ud83c\udfc9|\ud83c\udfe4|\ud83d\udc00|\ud83d\udc01|\ud83d\udc02|\ud83d\udc03|\ud83d\udc04|\ud83d\udc05|\ud83d\udc06|\ud83d\udc07|\ud83d\udc08|\ud83d\udc09|\ud83d\udc0a|\ud83d\udc0b|\ud83d\udc0f|\ud83d\udc10|\ud83d\udc13|\ud83d\udc15|\ud83d\udc16|\ud83d\udc2a|\ud83d\udc65|\ud83d\udc6c|\ud83d\udc6d|\ud83d\udcad|\ud83d\udcb6|\ud83d\udcb7|\ud83d\udcec|\ud83d\udced|\ud83d\udcef|\ud83d\udcf5|\ud83d\udd00|\ud83d\udd01|\ud83d\udd02|\ud83d\udd04|\ud83d\udd05|\ud83d\udd06|\ud83d\udd07|\ud83d\udd08|\ud83d\udd09|\ud83d\udd15|\ud83d\udd2c|\ud83d\udd2d|\ud83d\udd5c|\ud83d\udd5d|\ud83d\udd5e|\ud83d\udd5f|\ud83d\udd60|\ud83d\udd61|\ud83d\udd62|\ud83d\udd63|\ud83d\udd64|\ud83d\udd65|\ud83d\udd66|\ud83d\udd67|\ud83d\ude00|\ud83d\ude07|\ud83d\ude08|\ud83d\ude0e|\ud83d\ude10|\ud83d\ude11|\ud83d\ude15|\ud83d\ude17|\ud83d\ude19|\ud83d\ude1b|\ud83d\ude1f|\ud83d\ude26|\ud83d\ude27|\ud83d\ude2c|\ud83d\ude2e|\ud83d\ude2f|\ud83d\ude34|\ud83d\ude36|\ud83d\ude81|\ud83d\ude82|\ud83d\ude86|\ud83d\ude88|\ud83d\ude8a|\ud83d\ude8b|\ud83d\ude8d|\ud83d\ude8e|\ud83d\ude90|\ud83d\ude94|\ud83d\ude96|\ud83d\ude98|\ud83d\ude9b|\ud83d\ude9c|\ud83d\ude9d|\ud83d\ude9e|\ud83d\ude9f|\ud83d\udea0|\ud83d\udea1|\ud83d\udea3|\ud83d\udea6|\ud83d\udeae|\ud83d\udeaf|\ud83d\udeb0|\ud83d\udeb1|\ud83d\udeb3|\ud83d\udeb4|\ud83d\udeb5|\ud83d\udeb7|\ud83d\udeb8|\ud83d\udebf|\ud83d\udec1|\ud83d\udec2|\ud83d\udec3|\ud83d\udec4|\ud83d\udec5|\ud83d\udecd|\ud83d\udecc|\ud83d\udecb|\ud83e\udd81|\ud83e\udd80|\ud83e\udd18|\ud83c\udf46|\ud83e\uddc0|\ud83e\udd84|\ud83e\udd83|\ud83e\udd82|\ud83e\udd17|\ud83e\udd16|\ud83e\udd15|\ud83e\udd14|\ud83e\udd13|\ud83e\udd12|\ud83e\udd11|\ud83e\udd10|\ud83d\udef3|\ud83d\udef0|\ud83d\udeec|\ud83c\udccf|\ud83c\udd8e|\ud83c\udd91|\ud83c\udd92|\ud83c\udd93|\ud83c\udd94|\ud83c\udd95|\ud83c\udd96|\ud83c\udd97|\ud83c\udd98|\ud83c\udd99|\ud83c\udd9a|\ud83d\udeeb|\ud83d\udee9|\ud83d\udee5|\ud83d\udee4|\ud83d\udee3|\ud83d\udee2|\ud83d\udee1|\ud83d\udee0|\ud83d\uded0|\ud83d\udecf|\ud83c\ude01|\ud83c\ude32|\ud83c\ude33|\ud83c\ude34|\ud83c\ude35|\ud83c\ude36|\ud83c\ude38|\ud83c\ude39|\ud83c\ude3a|\ud83c\ude50|\ud83c\ude51|\ud83c\udf00|\ud83c\udf01|\ud83c\udf02|\ud83c\udf03|\ud83c\udf04|\ud83c\udf05|\ud83c\udf06|\ud83c\udf07|\ud83c\udf08|\ud83c\udf09|\ud83c\udf0a|\ud83c\udf0b|\ud83c\udf0c|\ud83c\udf0f|\ud83c\udf11|\ud83c\udf13|\ud83c\udf14|\ud83c\udf15|\ud83c\udf19|\ud83c\udf1b|\ud83c\udf1f|\ud83c\udf20|\ud83c\udf30|\ud83c\udf31|\ud83c\udf34|\ud83c\udf35|\ud83c\udf37|\ud83c\udf38|\ud83c\udf39|\ud83c\udf3a|\ud83c\udf3b|\ud83c\udf3c|\ud83c\udf3d|\ud83c\udf3e|\ud83c\udf3f|\ud83c\udf40|\ud83c\udf41|\ud83c\udf42|\ud83c\udf43|\ud83c\udf44|\ud83c\udf45|\ud83d\udece|\ud83c\udf47|\ud83c\udf48|\ud83c\udf49|\ud83c\udf4a|\ud83c\udf4c|\ud83c\udf4d|\ud83c\udf4e|\ud83c\udf4f|\ud83c\udf51|\ud83c\udf52|\ud83c\udf53|\ud83c\udf54|\ud83c\udf55|\ud83c\udf56|\ud83c\udf57|\ud83c\udf58|\ud83c\udf59|\ud83c\udf5a|\ud83c\udf5b|\ud83c\udf5c|\ud83c\udf5d|\ud83c\udf5e|\ud83c\udf5f|\ud83c\udf60|\ud83c\udf61|\ud83c\udf62|\ud83c\udf63|\ud83c\udf64|\ud83c\udf65|\ud83c\udf66|\ud83c\udf67|\ud83c\udf68|\ud83c\udf69|\ud83c\udf6a|\ud83c\udf6b|\ud83c\udf6c|\ud83c\udf6d|\ud83c\udf6e|\ud83c\udf6f|\ud83c\udf70|\ud83c\udf71|\ud83c\udf72|\ud83c\udf73|\ud83c\udf74|\ud83c\udf75|\ud83c\udf76|\ud83c\udf77|\ud83c\udf78|\ud83c\udf79|\ud83c\udf7a|\ud83c\udf7b|\ud83c\udf80|\ud83c\udf81|\ud83c\udf82|\ud83c\udf83|\ud83c\udf84|\ud83c\udf85|\ud83c\udf86|\ud83c\udf87|\ud83c\udf88|\ud83c\udf89|\ud83c\udf8a|\ud83c\udf8b|\ud83c\udf8c|\ud83c\udf8d|\ud83c\udf8e|\ud83c\udf8f|\ud83c\udf90|\ud83c\udf91|\ud83c\udf92|\ud83c\udf93|\ud83c\udfa0|\ud83c\udfa1|\ud83c\udfa2|\ud83c\udfa3|\ud83c\udfa4|\ud83c\udfa5|\ud83c\udfa6|\ud83c\udfa7|\ud83c\udfa8|\ud83c\udfa9|\ud83c\udfaa|\ud83c\udfab|\ud83c\udfac|\ud83c\udfad|\ud83c\udfae|\ud83c\udfaf|\ud83c\udfb0|\ud83c\udfb1|\ud83c\udfb2|\ud83c\udfb3|\ud83c\udfb4|\ud83c\udfb5|\ud83c\udfb6|\ud83c\udfb7|\ud83c\udfb8|\ud83c\udfb9|\ud83c\udfba|\ud83c\udfbb|\ud83c\udfbc|\ud83c\udfbd|\ud83c\udfbe|\ud83c\udfbf|\ud83c\udfc0|\ud83c\udfc1|\ud83c\udfc2|\ud83c\udfc3|\ud83c\udfc4|\ud83c\udfc6|\ud83c\udfc8|\ud83c\udfca|\ud83c\udfe0|\ud83c\udfe1|\ud83c\udfe2|\ud83c\udfe3|\ud83c\udfe5|\ud83c\udfe6|\ud83c\udfe7|\ud83c\udfe8|\ud83c\udfe9|\ud83c\udfea|\ud83c\udfeb|\ud83c\udfec|\ud83c\udfed|\ud83c\udfee|\ud83c\udfef|\ud83c\udff0|\ud83d\udc0c|\ud83d\udc0d|\ud83d\udc0e|\ud83d\udc11|\ud83d\udc12|\ud83d\udc14|\ud83d\udc17|\ud83d\udc18|\ud83d\udc19|\ud83d\udc1a|\ud83d\udc1b|\ud83d\udc1c|\ud83d\udc1d|\ud83d\udc1e|\ud83d\udc1f|\ud83d\udc20|\ud83d\udc21|\ud83d\udc22|\ud83d\udc23|\ud83d\udc24|\ud83d\udc25|\ud83d\udc26|\ud83d\udc27|\ud83d\udc28|\ud83d\udc29|\ud83d\udc2b|\ud83d\udc2c|\ud83d\udc2d|\ud83c\udf21|\ud83c\udf24|\ud83c\udf25|\ud83c\udf26|\ud83c\udf27|\ud83c\udf28|\ud83c\udf29|\ud83c\udf2a|\ud83c\udf2b|\ud83c\udf2c|\ud83c\udf2d|\ud83c\udf2e|\ud83c\udf2f|\ud83c\udf36|\ud83c\udf7d|\ud83c\udf7e|\ud83c\udf7f|\ud83d\udc2e|\ud83d\udc2f|\ud83d\udc30|\ud83d\udc31|\ud83d\udc32|\ud83c\udf96|\ud83c\udf97|\ud83c\udf99|\ud83c\udf9a|\ud83c\udf9b|\ud83c\udf9e|\ud83c\udf9f|\ud83d\udc33|\ud83d\udc34|\ud83d\udc35|\ud83d\udc36|\ud83d\udc37|\ud83d\udc38|\ud83d\udc39|\ud83d\udc3a|\ud83d\udc3b|\ud83d\udc3c|\ud83c\udfc5|\ud83d\udc3d|\ud83d\udc3e|\ud83d\udc40|\ud83d\udc42|\ud83d\udc43|\ud83d\udc44|\ud83d\udc45|\ud83d\udc46|\ud83d\udc47|\ud83d\udc48|\ud83d\udc49|\ud83d\udc4a|\ud83d\udc4b|\ud83d\udc4c|\ud83d\udc4d|\ud83c\udfcb|\ud83c\udfcc|\ud83c\udfcd|\ud83c\udfce|\ud83c\udfcf|\ud83c\udfd0|\ud83c\udfd1|\ud83c\udfd2|\ud83c\udfd3|\ud83c\udfd4|\ud83c\udfd5|\ud83c\udfd6|\ud83c\udfd7|\ud83c\udfd8|\ud83c\udfd9|\ud83c\udfda|\ud83c\udfdb|\ud83c\udfdc|\ud83c\udfdd|\ud83c\udfde|\ud83c\udfdf|\ud83c\udff3|\ud83c\udff4|\ud83c\udff5|\ud83c\udff7|\ud83c\udff8|\ud83c\udff9|\ud83c\udffa|\ud83c\udffb|\ud83c\udffc|\ud83c\udffd|\ud83c\udffe|\ud83c\udfff|\ud83d\udc3f|\ud83d\udc41|\ud83d\udc4e|\ud83d\udc4f|\ud83d\udc50|\ud83d\udc51|\ud83d\udc52|\ud83d\udc53|\ud83d\udc54|\ud83d\udc55|\ud83d\udc56|\ud83d\udc57|\ud83d\udc58|\ud83d\udc59|\ud83d\udc5a|\ud83d\udc5b|\ud83d\udc5c|\ud83d\udc5d|\ud83d\udc5e|\ud83d\udc5f|\ud83d\udc60|\ud83d\udc61|\ud83d\udc62|\ud83d\udc63|\ud83d\udc64|\ud83d\udc66|\ud83d\udc67|\ud83d\udc68|\ud83d\udc69|\ud83d\udc6a|\ud83d\udc6b|\ud83d\udc6e|\ud83d\udc6f|\ud83d\udc70|\ud83d\udc71|\ud83d\udc72|\ud83d\udc73|\ud83d\udc74|\ud83d\udc75|\ud83d\udc76|\ud83d\udc77|\ud83d\udc78|\ud83d\udc79|\ud83d\udc7a|\ud83d\udc7b|\ud83d\udc7c|\ud83d\udc7d|\ud83d\udc7e|\ud83d\udc7f|\ud83d\udc80|\ud83d\udc81|\ud83d\udc82|\ud83d\udc83|\ud83d\udc84|\ud83d\udc85|\ud83d\udc86|\ud83d\udc87|\ud83d\udc88|\ud83d\udc89|\ud83d\udc8a|\ud83d\udc8b|\ud83d\udc8c|\ud83d\udc8d|\ud83d\udc8e|\ud83d\udc8f|\ud83d\udc90|\ud83d\udc91|\ud83d\udc92|\ud83d\udc93|\ud83d\udc94|\ud83d\udc95|\ud83d\udc96|\ud83d\udc97|\ud83d\udc98|\ud83d\udc99|\ud83d\udc9a|\ud83d\udc9b|\ud83d\udc9c|\ud83d\udc9d|\ud83d\udc9e|\ud83d\udc9f|\ud83d\udca0|\ud83d\udca1|\ud83d\udca2|\ud83d\udca3|\ud83d\udca4|\ud83d\udca5|\ud83d\udca6|\ud83d\udca7|\ud83d\udca8|\ud83d\udca9|\ud83d\udcaa|\ud83d\udcab|\ud83d\udcac|\ud83d\udcae|\ud83d\udcaf|\ud83d\udcb0|\ud83d\udcb1|\ud83d\udcb2|\ud83d\udcb3|\ud83d\udcb4|\ud83d\udcb5|\ud83d\udcb8|\ud83d\udcb9|\ud83d\udcba|\ud83d\udcbb|\ud83d\udcbc|\ud83d\udcbd|\ud83d\udcbe|\ud83d\udcbf|\ud83d\udcc0|\ud83d\udcc1|\ud83d\udcc2|\ud83d\udcc3|\ud83d\udcc4|\ud83d\udcc5|\ud83d\udcc6|\ud83d\udcc7|\ud83d\udcc8|\ud83d\udcc9|\ud83d\udcca|\ud83d\udccb|\ud83d\udccc|\ud83d\udccd|\ud83d\udcce|\ud83d\udccf|\ud83d\udcd0|\ud83d\udcd1|\ud83d\udcd2|\ud83d\udcd3|\ud83d\udcd4|\ud83d\udcd5|\ud83d\udcd6|\ud83d\udcd7|\ud83d\udcd8|\ud83d\udcd9|\ud83d\udcda|\ud83d\udcdb|\ud83d\udcdc|\ud83d\udcdd|\ud83d\udcde|\ud83d\udcdf|\ud83d\udce0|\ud83d\udce1|\ud83d\udce2|\ud83d\udce3|\ud83d\udce4|\ud83d\udce5|\ud83d\udce6|\ud83d\udce7|\ud83d\udce8|\ud83d\udce9|\ud83d\udcea|\ud83d\udceb|\ud83d\udcee|\ud83d\udcf0|\ud83d\udcf1|\ud83d\udcf2|\ud83d\udcf3|\ud83d\udcf4|\ud83d\udcf6|\ud83d\udcf7|\ud83d\udcf9|\ud83d\udcfa|\ud83d\udcfb|\ud83d\udcfc|\ud83d\udd03|\ud83d\udd0a|\ud83d\udd0b|\ud83d\udd0c|\ud83d\udd0d|\ud83d\udd0e|\ud83d\udd0f|\ud83d\udd10|\ud83d\udd11|\ud83d\udd12|\ud83d\udd13|\ud83d\udd14|\ud83d\udd16|\ud83d\udd17|\ud83d\udd18|\ud83d\udd19|\ud83d\udd1a|\ud83d\udd1b|\ud83d\udd1c|\ud83d\udd1d|\ud83d\udd1e|\ud83d\udd1f|\ud83d\udd20|\ud83d\udd21|\ud83d\udd22|\ud83d\udd23|\ud83d\udd24|\ud83d\udd25|\ud83d\udd26|\ud83d\udcf8|\ud83d\udcfd|\ud83d\udcff|\ud83d\udd49|\ud83d\udd4a|\ud83d\udd4b|\ud83d\udd4c|\ud83d\udd4d|\ud83d\udd4e|\ud83d\udd6f|\ud83d\udd70|\ud83d\udd73|\ud83d\udd74|\ud83d\udd75|\ud83d\udd76|\ud83d\udd77|\ud83d\udd78|\ud83d\udd79|\ud83d\udd87|\ud83d\udd8a|\ud83d\udd8b|\ud83d\udd8c|\ud83d\udd8d|\ud83d\udd27|\ud83d\udd28|\ud83d\udd29|\ud83d\udd2a|\ud83d\udd2b|\ud83d\udd90|\ud83d\udd2e|\ud83d\udd2f|\ud83d\udd30|\ud83d\udd31|\ud83d\udd32|\ud83d\udd95|\ud83d\udd33|\ud83d\udd34|\ud83d\udd35|\ud83d\udd36|\ud83d\udd37|\ud83d\udd96|\ud83d\udda5|\ud83d\udda8|\ud83d\uddb1|\ud83d\uddb2|\ud83d\uddbc|\ud83d\uddc2|\ud83d\uddc3|\ud83d\uddc4|\ud83d\uddd1|\ud83d\uddd2|\ud83d\uddd3|\ud83d\udddc|\ud83d\udddd|\ud83d\uddde|\ud83d\udde1|\ud83d\udde3|\ud83d\udde8|\ud83d\uddef|\ud83d\uddf3|\ud83d\uddfa|\ud83d\ude41|\ud83d\ude42|\ud83d\ude43|\ud83d\ude44|\ud83d\udd38|\ud83d\udd39|\ud83d\udd3a|\ud83d\udd3b|\ud83d\udd3c|\ud83d\udd3d|\ud83d\udd50|\ud83d\udd51|\ud83d\udd52|\ud83d\udd53|\ud83d\udd54|\ue50a|\u2797|\u2796|\u2795|\u2763|\u2755|\u2754|\u2753|\u2728|\u2721|\u2705|\u2699|\u2697|\u2696|\u2694|\u2692|\u2639|\u2638|\u2626|\u2623|\u2622|\u2620|\u2618|\u2604|\u2603|\u2602|\u2328|\u274c|\u274e|\u271d|\u270a|\u270b|\u270d|\u269b|\u269c|\u262f|\u262a|\u262e|\u27b0|\u27bf|\u26f9|\u26ce|\u26b0|\u26b1|\u26c8|\u26cf|\u26d1|\u26d3|\u26e9|\u26f0|\u26f1|\u26f4|\u26f7|\u26f8|\u23f1|\u23e9|\u23ec|\u23f0|\u23ed|\u23ee|\u23f3|\u23ea|\u23fa|\u23f9|\u23f8|\u23f2|\u23eb|\u23ef|\u00a9|\u00ae)|(?:(?:\ud83c\udc04|\ud83c\udd70|\ud83c\udd71|\ud83c\udd7e|\ud83c\udd7f|\ud83c\ude02|\ud83c\ude1a|\ud83c\ude2f|\ud83c\ude37|\u3299|\u3297|\u3030|\u2935|\u2934|\u2764|\u2757|\u2747|\u2744|\u2734|\u2733|\u2716|\u2714|\u2712|\u2709|\u2708|\u2702|\u2693|\u2668|\u2666|\u2665|\u2663|\u2660|\u2653|\u2652|\u2651|\u2650|\u2649|\u2648|\u2615|\u2614|\u2611|\u2601|\u2600|\u2199|\u2198|\u2197|\u2196|\u2195|\u2194|\u2139|\u2122|\u2049|\u303d|\u270f|\u270c|\u267f|\u267b|\u264b|\u264a|\u264f|\u264e|\u264d|\u264c|\u263a|\u261d|\u260e|\u231a|\u231b|\u203c|\u27a1|\u26c5|\u26a0|\u26a1|\u26d4|\u26ea|\u26f2|\u26aa|\u26f5|\u26fa|\u26fd|\u26ab|\u26bd|\u26be|\u26c4|\u26f3|\u25fc|\u25fb|\u25fe|\u25c0|\u25b6|\u25ab|\u25aa|\u25fd|\u24c2|\u21a9|\u21aa|\u2b05|\u2b55|\u2b50|\u2b06|\u2b07|\u2b1c|\u2b1b)([\uFE0E\uFE0F]?)))/g,
// used to find HTML special chars in attributes
rescaper = /[&<>'"]/g,
-var twemoji=function(){"use strict";function a(a){return document.createTextNode(a)}function b(a){return a.replace(s,h)}function c(a,b){return"".concat(b.base,b.size,"/",a,b.ext)}function d(a,b){for(var c,e,f=a.childNodes,g=f.length;g--;)c=f[g],e=c.nodeType,3===e?b.push(c):1!==e||t.test(c.nodeName)||d(c,b);return b}function e(a,b){return o("\ufe0f"===b?a.slice(0,-1):3===a.length&&"\ufe0f"===a.charAt(1)?a.charAt(0)+a.charAt(2):a)}function f(b,c){for(var f,g,h,i,j,k,l,m,n,o,p,q,s,t,u=d(b,[]),v=u.length;v--;){for(h=!1,i=document.createDocumentFragment(),j=u[v],k=j.nodeValue,m=0;l=r.exec(k);){if(n=l.index,n!==m&&i.appendChild(a(k.slice(m,n))),p=l[0],q=l[1],s=l[2],m=n+p.length,"\ufe0e"!==s&&(t=c.callback(e(q,s),c,s))){o=new Image,o.onerror=c.onerror,o.setAttribute("draggable","false"),f=c.attributes(q,s);for(g in f)f.hasOwnProperty(g)&&0!==g.indexOf("on")&&!o.hasAttribute(g)&&o.setAttribute(g,f[g]);o.className=c.className,o.alt=p,o.src=t,h=!0,i.appendChild(o)}o||i.appendChild(a(p)),o=null}h&&(m<k.length&&i.appendChild(a(k.slice(m))),j.parentNode.replaceChild(i,j))}return b}function g(a,c){return m(a,function(a,d,f){var g,h,i,j=a;if("\ufe0e"!==f&&(i=c.callback(e(d,f),c,f))){j="<img ".concat('class="',c.className,'" ','draggable="false" ','alt="',a,'"',' src="',i,'"'),g=c.attributes(d,f);for(h in g)g.hasOwnProperty(h)&&0!==h.indexOf("on")&&-1===j.indexOf(" "+h+"=")&&(j=j.concat(" ",h,'="',b(g[h]),'"'));j=j.concat(">")}return j})}function h(a){return q[a]}function i(){return null}function j(a){return"number"==typeof a?a+"x"+a:a}function k(a){var b="string"==typeof a?parseInt(a,16):a;return 65536>b?u(b):(b-=65536,u(55296+(b>>10),56320+(1023&b)))}function l(a,b){return b&&"function"!=typeof b||(b={callback:b}),("string"==typeof a?g:f)(a,{callback:b.callback||c,attributes:"function"==typeof b.attributes?b.attributes:i,base:"string"==typeof b.base?b.base:p.base,ext:b.ext||p.ext,size:b.folder||j(b.size||p.size),className:b.className||p.className,onerror:b.onerror||p.onerror})}function m(a,b){return String(a).replace(r,b)}function n(a){r.lastIndex=0;var b=r.test(a);return r.lastIndex=0,b}function o(a,b){for(var c=[],d=0,e=0,f=0;f<a.length;)d=a.charCodeAt(f++),e?(c.push((65536+(e-55296<<10)+(d-56320)).toString(16)),e=0):d>=55296&&56319>=d?e=d:c.push(d.toString(16));return c.join(b||"-")}var p={base:("https:"===location.protocol?"https:":"http:")+"//twemoji.maxcdn.com/",ext:".png",size:"36x36",className:"emoji",convert:{fromCodePoint:k,toCodePoint:o},onerror:function(){this.parentNode&&this.parentNode.replaceChild(a(this.alt),this)},parse:l,replace:m,test:n},q={"&":"&","<":"<",">":">","'":"'",'"':"""},r=/((?:\u0039\ufe0f\u20e3|\u0038\ufe0f\u20e3|\u0037\ufe0f\u20e3|\u0036\ufe0f\u20e3|\u0035\ufe0f\u20e3|\u0034\ufe0f\u20e3|\u0033\ufe0f\u20e3|\u0032\ufe0f\u20e3|\u0031\ufe0f\u20e3|\u0030\ufe0f\u20e3|\u0023\ufe0f\u20e3|\ud83c\uddea\ud83c\uddf8|\ud83c\uddeb\ud83c\uddf7|\ud83c\uddec\ud83c\udde7|\ud83c\uddee\ud83c\uddf9|\ud83c\uddef\ud83c\uddf5|\ud83c\uddf0\ud83c\uddf7|\ud83c\uddf7\ud83c\uddfa|\ud83c\uddfa\ud83c\uddf8|\ud83c\uddea\ud83c\udde8|\ud83c\udde9\ud83c\uddff|\ud83c\uddf9\ud83c\uddf7|\ud83c\udde8\ud83c\uddf7|\ud83c\uddfa\ud83c\uddfe|\ud83c\udde8\ud83c\udde6|\ud83c\uddf8\ud83c\uddec|\ud83c\udde7\ud83c\uddf7|\ud83c\uddf8\ud83c\udde6|\ud83c\udde6\ud83c\uddfa|\ud83c\uddf5\ud83c\uddf9|\ud83c\uddf2\ud83c\uddfd|\ud83c\uddee\ud83c\uddf7|\ud83c\uddee\ud83c\uddf3|\ud83c\udded\ud83c\uddf7|\ud83c\udde8\ud83c\uddf3|\ud83c\udde9\ud83c\uddea|\ud83c\udde6\ud83c\uddf7|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\ud83d\ude1b|\ud83d\ude19|\ud83d\ude17|\ud83d\ude15|\ud83d\ude11|\ud83d\ude10|\ud83d\ude0e|\ud83d\ude08|\ud83d\ude07|\ud83d\ude00|\ud83d\udd67|\ud83d\udd66|\ud83d\udd65|\ud83d\udd64|\ud83d\udd63|\ud83d\udd62|\ud83d\udd61|\ud83d\udd60|\ud83d\udd5f|\ud83d\udd5e|\ud83d\udd5d|\ud83d\udd5c|\ud83d\udd2d|\ud83d\udd2c|\ud83d\udd15|\ud83d\udd09|\ud83d\udd08|\ud83d\udd07|\ud83d\udd06|\ud83d\udd05|\ud83d\udd04|\ud83d\udd02|\ud83d\udd01|\ud83d\udd00|\ud83d\udcf5|\ud83d\udcef|\ud83d\udced|\ud83d\udcec|\ud83d\udcb7|\ud83d\udcb6|\ud83d\udcad|\ud83d\udc6d|\ud83d\udc6c|\ud83d\udc65|\ud83d\udc2a|\ud83d\udc16|\ud83d\udc15|\ud83d\udc13|\ud83d\udc10|\ud83d\udc0f|\ud83d\udc0b|\ud83d\udc0a|\ud83d\udc09|\ud83d\udc08|\ud83d\udc07|\ud83d\udc06|\ud83d\udc05|\ud83d\udc04|\ud83d\udc03|\ud83d\udc02|\ud83d\udc01|\ud83d\udc00|\ud83c\udfff|\ud83c\udffe|\ud83c\udffd|\ud83c\udffc|\ud83c\udffb|\ud83c\udfe4|\ud83c\udfd2|\ud83c\udfd0|\ud83c\udfcf|\ud83c\udccf|\ud83c\udd8e|\ud83c\udd91|\ud83c\udd92|\ud83c\udd93|\ud83c\udd94|\ud83c\udd95|\ud83c\udd96|\ud83c\udd97|\ud83c\udd98|\ud83c\udd99|\ud83c\udd9a|\ud83d\udc94|\ud83e\udd18|\ud83e\udd16|\ud83e\udd15|\ud83d\udecf|\ud83d\udec5|\ud83d\udec4|\ud83d\udec3|\ud83d\udec2|\ud83d\udec1|\ud83c\ude01|\ud83c\ude32|\ud83c\ude33|\ud83c\ude34|\ud83c\ude35|\ud83c\ude36|\ud83c\ude38|\ud83c\ude39|\ud83c\ude3a|\ud83c\ude50|\ud83c\ude51|\ud83c\udf00|\ud83c\udf01|\ud83c\udf02|\ud83c\udf03|\ud83c\udf04|\ud83c\udf05|\ud83c\udf06|\ud83c\udf07|\ud83c\udf08|\ud83c\udf09|\ud83c\udf0a|\ud83c\udf0b|\ud83c\udf0c|\ud83c\udf0f|\ud83c\udf11|\ud83c\udf13|\ud83c\udf14|\ud83c\udf15|\ud83c\udf19|\ud83c\udf1b|\ud83c\udf1f|\ud83c\udf20|\ud83c\udf30|\ud83c\udf31|\ud83c\udf34|\ud83c\udf35|\ud83c\udf37|\ud83c\udf38|\ud83c\udf39|\ud83c\udf3a|\ud83c\udf3b|\ud83c\udf3c|\ud83c\udf3d|\ud83c\udf3e|\ud83c\udf3f|\ud83c\udf40|\ud83c\udf41|\ud83c\udf42|\ud83c\udf43|\ud83c\udf44|\ud83c\udf45|\ud83c\udf46|\ud83c\udf47|\ud83c\udf48|\ud83c\udf49|\ud83c\udf4a|\ud83c\udf4c|\ud83c\udf4d|\ud83c\udf4e|\ud83c\udf4f|\ud83c\udf51|\ud83c\udf52|\ud83c\udf53|\ud83c\udf54|\ud83c\udf55|\ud83c\udf56|\ud83c\udf57|\ud83c\udf58|\ud83c\udf59|\ud83c\udf5a|\ud83c\udf5b|\ud83c\udf5c|\ud83c\udf5d|\ud83c\udf5e|\ud83c\udf5f|\ud83c\udf60|\ud83c\udf61|\ud83c\udf62|\ud83c\udf63|\ud83c\udf64|\ud83c\udf65|\ud83c\udf66|\ud83c\udf67|\ud83c\udf68|\ud83c\udf69|\ud83c\udf6a|\ud83c\udf6b|\ud83c\udf6c|\ud83c\udf6d|\ud83c\udf6e|\ud83c\udf6f|\ud83c\udf70|\ud83c\udf71|\ud83c\udf72|\ud83c\udf73|\ud83c\udf74|\ud83c\udf75|\ud83c\udf76|\ud83c\udf77|\ud83c\udf78|\ud83c\udf79|\ud83c\udf7a|\ud83c\udf7b|\ud83c\udf80|\ud83c\udf81|\ud83c\udf82|\ud83c\udf83|\ud83c\udf84|\ud83c\udf85|\ud83c\udf86|\ud83c\udf87|\ud83c\udf88|\ud83c\udf89|\ud83c\udf8a|\ud83c\udf8b|\ud83c\udf8c|\ud83c\udf8d|\ud83c\udf8e|\ud83c\udf8f|\ud83c\udf90|\ud83c\udf91|\ud83c\udf92|\ud83c\udf93|\ud83c\udfa0|\ud83c\udfa1|\ud83c\udfa2|\ud83c\udfa3|\ud83c\udfa4|\ud83c\udfa5|\ud83c\udfa6|\ud83c\udfa7|\ud83c\udfa8|\ud83c\udfa9|\ud83c\udfaa|\ud83c\udfab|\ud83c\udfac|\ud83c\udfad|\ud83c\udfae|\ud83c\udfaf|\ud83c\udfb0|\ud83c\udfb1|\ud83c\udfb2|\ud83c\udfb3|\ud83c\udfb4|\ud83c\udfb5|\ud83c\udfb6|\ud83c\udfb7|\ud83c\udfb8|\ud83c\udfb9|\ud83c\udfba|\ud83c\udfbb|\ud83c\udfbc|\ud83c\udfbd|\ud83c\udfbe|\ud83c\udfbf|\ud83c\udfc0|\ud83c\udfc1|\ud83c\udfc2|\ud83c\udfc3|\ud83c\udfc4|\ud83c\udfc6|\ud83c\udfc8|\ud83c\udfca|\ud83c\udfe0|\ud83c\udfe1|\ud83c\udfe2|\ud83c\udfe3|\ud83c\udfe5|\ud83c\udfe6|\ud83c\udfe7|\ud83c\udfe8|\ud83c\udfe9|\ud83c\udfea|\ud83c\udfeb|\ud83c\udfec|\ud83c\udfed|\ud83c\udfee|\ud83c\udfef|\ud83c\udff0|\ud83d\udc0c|\ud83d\udc0d|\ud83d\udc0e|\ud83d\udc11|\ud83d\udc12|\ud83d\udc14|\ud83d\udc17|\ud83d\udc18|\ud83d\udc19|\ud83d\udc1a|\ud83d\udc1b|\ud83d\udc1c|\ud83d\udc1d|\ud83d\udc1e|\ud83d\udc1f|\ud83d\udc20|\ud83d\udc21|\ud83d\udc22|\ud83d\udc23|\ud83d\udc24|\ud83d\udc25|\ud83d\udc26|\ud83d\udc27|\ud83d\udc28|\ud83d\udc29|\ud83d\udc2b|\ud83d\udc2c|\ud83d\udc2d|\ud83d\udc2e|\ud83d\udc2f|\ud83d\udc30|\ud83d\udc31|\ud83d\udc32|\ud83d\udc33|\ud83d\udc34|\ud83d\udc35|\ud83d\udc36|\ud83d\udc37|\ud83d\udc38|\ud83d\udc39|\ud83d\udc3a|\ud83d\udc3b|\ud83d\udc3c|\ud83d\udc3d|\ud83d\udc3e|\ud83d\udc40|\ud83d\udc42|\ud83d\udc43|\ud83d\udc44|\ud83d\udc45|\ud83d\udc46|\ud83d\udc47|\ud83d\udc48|\ud83d\udc49|\ud83d\udc4a|\ud83d\udc4b|\ud83d\udc4c|\ud83d\udc4d|\ud83d\udc4e|\ud83d\udc4f|\ud83d\udc50|\ud83d\udc51|\ud83d\udc52|\ud83d\udc53|\ud83d\udc54|\ud83d\udc55|\ud83d\udc56|\ud83d\udc57|\ud83d\udc58|\ud83d\udc59|\ud83d\udc5a|\ud83d\udc5b|\ud83d\udc5c|\ud83d\udc5d|\ud83d\udc5e|\ud83d\udc5f|\ud83d\udc60|\ud83d\udc61|\ud83d\udc62|\ud83d\udc63|\ud83d\udc64|\ud83d\udc66|\ud83d\udc67|\ud83d\udc68|\ud83d\udc69|\ud83d\udc6a|\ud83d\udc6b|\ud83d\udc6e|\ud83d\udc6f|\ud83d\udc70|\ud83d\udc71|\ud83d\udc72|\ud83d\udc73|\ud83d\udc74|\ud83d\udc75|\ud83d\udc76|\ud83d\udc77|\ud83d\udc78|\ud83d\udc79|\ud83d\udc7a|\ud83d\udc7b|\ud83d\udc7c|\ud83d\udc7d|\ud83d\udc7e|\ud83d\udc7f|\ud83d\udc80|\ud83d\udc81|\ud83d\udc82|\ud83d\udc83|\ud83d\udc84|\ud83d\udc85|\ud83d\udc86|\ud83d\udc87|\ud83d\udc88|\ud83d\udc89|\ud83d\udc8a|\ud83d\udc8b|\ud83d\udc8c|\ud83d\udc8d|\ud83d\udc8e|\ud83d\udc8f|\ud83d\udc90|\ud83d\udc91|\ud83d\udc92|\ud83d\udc93|\ud83d\udebf|\ud83d\udc95|\ud83d\udc96|\ud83d\udc97|\ud83d\udc98|\ud83d\udc99|\ud83d\udc9a|\ud83d\udc9b|\ud83d\udc9c|\ud83d\udc9d|\ud83d\udc9e|\ud83d\udc9f|\ud83d\udca0|\ud83d\udca1|\ud83d\udca2|\ud83d\udca3|\ud83d\udca4|\ud83d\udca5|\ud83d\udca6|\ud83d\udca7|\ud83d\udca8|\ud83d\udca9|\ud83d\udcaa|\ud83d\udcab|\ud83d\udcac|\ud83d\udcae|\ud83d\udcaf|\ud83d\udcb0|\ud83d\udcb1|\ud83d\udcb2|\ud83d\udcb3|\ud83d\udcb4|\ud83d\udcb5|\ud83d\udcb8|\ud83d\udcb9|\ud83d\udcba|\ud83d\udcbb|\ud83d\udcbc|\ud83d\udcbd|\ud83d\udcbe|\ud83d\udcbf|\ud83d\udcc0|\ud83d\udcc1|\ud83d\udcc2|\ud83d\udcc3|\ud83d\udcc4|\ud83d\udcc5|\ud83d\udcc6|\ud83d\udcc7|\ud83d\udcc8|\ud83d\udcc9|\ud83d\udcca|\ud83d\udccb|\ud83d\udccc|\ud83d\udccd|\ud83d\udcce|\ud83d\udccf|\ud83d\udcd0|\ud83d\udcd1|\ud83d\udcd2|\ud83d\udcd3|\ud83d\udcd4|\ud83d\udcd5|\ud83d\udcd6|\ud83d\udcd7|\ud83d\udcd8|\ud83d\udcd9|\ud83d\udcda|\ud83d\udcdb|\ud83d\udcdc|\ud83d\udcdd|\ud83d\udcde|\ud83d\udcdf|\ud83d\udce0|\ud83d\udce1|\ud83d\udce2|\ud83d\udce3|\ud83d\udce4|\ud83d\udce5|\ud83d\udce6|\ud83d\udce7|\ud83d\udce8|\ud83d\udce9|\ud83d\udcea|\ud83d\udceb|\ud83d\udcee|\ud83d\udcf0|\ud83d\udcf1|\ud83d\udcf2|\ud83d\udcf3|\ud83d\udcf4|\ud83d\udcf6|\ud83d\udcf7|\ud83d\udcf9|\ud83d\udcfa|\ud83d\udcfb|\ud83d\udcfc|\ud83d\udd03|\ud83d\udd0a|\ud83d\udd0b|\ud83d\udd0c|\ud83d\udd0d|\ud83d\udd0e|\ud83d\udd0f|\ud83d\udd10|\ud83d\udd11|\ud83d\udd12|\ud83d\udd13|\ud83d\udd14|\ud83d\udd16|\ud83d\udd17|\ud83d\udd18|\ud83d\udd19|\ud83d\udd1a|\ud83d\udd1b|\ud83d\udd1c|\ud83d\udd1d|\ud83d\udd1e|\ud83d\udd1f|\ud83d\udd20|\ud83d\udd21|\ud83d\udd22|\ud83d\udd23|\ud83d\udd24|\ud83d\udd25|\ud83d\udd26|\ud83d\udd27|\ud83d\udd28|\ud83d\udd29|\ud83d\udd2a|\ud83d\udd2b|\ud83d\udd2e|\ud83d\udd2f|\ud83d\udd30|\ud83d\udd31|\ud83d\udd32|\ud83d\udd33|\ud83d\udd34|\ud83d\udd35|\ud83d\udd36|\ud83d\udd37|\ud83d\udd38|\ud83d\udd39|\ud83d\udd3a|\ud83d\udd3b|\ud83d\udd3c|\ud83d\udd3d|\ud83d\udd50|\ud83d\udd51|\ud83d\udd52|\ud83d\udd53|\ud83d\udd54|\ud83d\udd55|\ud83d\udd56|\ud83d\udd57|\ud83d\udd58|\ud83d\udd59|\ud83d\udd5a|\ud83d\udd5b|\ud83d\uddfb|\ud83d\uddfc|\ud83d\uddfd|\ud83d\uddfe|\ud83d\uddff|\ud83d\ude01|\ud83d\ude02|\ud83d\ude03|\ud83d\ude04|\ud83d\ude05|\ud83d\ude06|\ud83d\ude09|\ud83d\ude0a|\ud83d\ude0b|\ud83d\ude0c|\ud83d\ude0d|\ud83d\ude0f|\ud83d\ude12|\ud83d\ude13|\ud83d\ude14|\ud83d\ude16|\ud83d\ude18|\ud83d\ude1a|\ud83d\ude1c|\ud83d\ude1d|\ud83d\ude1e|\ud83d\ude20|\ud83d\ude21|\ud83d\ude22|\ud83d\ude23|\ud83d\ude24|\ud83d\ude25|\ud83d\ude28|\ud83d\ude29|\ud83d\ude2a|\ud83d\ude2b|\ud83d\ude2d|\ud83d\ude30|\ud83d\ude31|\ud83d\ude32|\ud83d\ude33|\ud83d\ude35|\ud83d\ude37|\ud83d\ude38|\ud83d\ude39|\ud83d\ude3a|\ud83d\ude3b|\ud83d\ude3c|\ud83d\ude3d|\ud83d\ude3e|\ud83d\ude3f|\ud83d\ude40|\ud83d\ude45|\ud83d\ude46|\ud83d\ude47|\ud83d\ude48|\ud83d\ude49|\ud83d\ude4a|\ud83d\ude4b|\ud83d\ude4c|\ud83d\ude4d|\ud83d\ude4e|\ud83d\ude4f|\ud83d\ude80|\ud83d\ude83|\ud83d\ude84|\ud83d\ude85|\ud83d\ude87|\ud83d\ude89|\ud83d\ude8c|\ud83d\ude8f|\ud83d\ude91|\ud83d\ude92|\ud83d\ude93|\ud83d\ude95|\ud83d\ude97|\ud83d\ude99|\ud83d\ude9a|\ud83d\udea2|\ud83d\udea4|\ud83d\udea5|\ud83d\udea7|\ud83d\udea8|\ud83d\udea9|\ud83d\udeaa|\ud83d\udeab|\ud83d\udeac|\ud83d\udead|\ud83d\udeb2|\ud83d\udeb6|\ud83d\udeb9|\ud83d\udeba|\ud83d\udebb|\ud83d\udebc|\ud83d\udebd|\ud83d\udebe|\ud83d\udec0|\ud83c\udfce|\ud83d\udeb8|\ud83d\udeb7|\ud83d\udeb5|\ud83d\udeb4|\ud83d\udeb3|\ud83d\udeb1|\ud83d\udeb0|\ud83d\udeaf|\ud83d\udeae|\ud83d\udea6|\ud83d\udea3|\ud83d\udea1|\ud83d\udea0|\ud83d\ude9f|\ud83d\ude9e|\ud83d\ude9d|\ud83d\ude9c|\ud83d\ude9b|\ud83d\ude98|\ud83d\ude96|\ud83d\ude94|\ud83d\ude90|\ud83d\ude8e|\ud83d\ude8d|\ud83c\udde6|\ud83d\ude8b|\ud83c\udde7|\ud83d\ude8a|\ud83d\ude88|\ud83c\udde8|\ud83d\ude86|\ud83c\udde9|\ud83d\ude82|\ud83c\uddea|\ud83c\uddeb|\ud83c\uddec|\ud83d\ude81|\ud83c\udded|\ud83d\ude36|\ud83d\ude34|\ud83c\uddee|\ud83c\uddef|\ud83c\uddf0|\ud83c\uddf1|\ud83d\ude2f|\ud83c\uddf2|\ud83c\uddf3|\ud83c\uddf4|\ud83d\ude2e|\ud83c\uddf5|\ud83c\uddf6|\ud83c\uddf7|\ud83d\ude2c|\ud83d\ude27|\ud83c\uddf8|\ud83d\ude26|\ud83c\uddf9|\ud83d\ude1f|\ud83c\uddfa|\ud83c\uddfb|\ud83c\uddfc|\ud83c\uddfd|\ud83c\uddfe|\ud83c\uddff|\ud83c\udf0d|\ud83c\udf0e|\ud83c\udf10|\ud83c\udf12|\ud83c\udf16|\ud83c\udf17|\ud83c\udf18|\ud83c\udf1a|\ud83c\udf1c|\ud83c\udf1d|\ud83c\udf1e|\ud83c\udf2d|\ud83c\udf2e|\ud83c\udf2f|\ud83c\udf32|\ud83c\udf33|\ud83c\udf4b|\ud83c\udf50|\ud83c\udf7c|\ud83c\udfc7|\ud83c\udfc9|\ue50a|\u2797|\u2796|\u2795|\u2755|\u2754|\u2753|\u2728|\u2705|\u274c|\u274e|\u270a|\u270b|\u269c|\u27bf|\u27b0|\u26f8|\u26ce|\u23e9|\u23ea|\u23eb|\u23ec|\u23f0|\u23f3|\u00a9|\u00ae|\ud800\udc00)|(?:(?:\ud83c\udc04|\ud83c\udd70|\ud83c\udd71|\ud83c\udd7e|\ud83c\udd7f|\ud83c\ude02|\ud83c\ude1a|\ud83c\ude2f|\ud83c\ude37|\u3299|\u3297|\u3030|\u2935|\u2934|\u2764|\u2757|\u2747|\u2744|\u2734|\u2733|\u2716|\u2714|\u2712|\u2709|\u2708|\u2702|\u2693|\u2668|\u2666|\u2665|\u2663|\u2660|\u2653|\u2652|\u2651|\u2650|\u2649|\u2648|\u2615|\u2614|\u2611|\u2601|\u2600|\u2199|\u2198|\u2197|\u2196|\u2195|\u2194|\u2139|\u2122|\u2049|\u303d|\u270c|\u270f|\u267f|\u267b|\u264e|\u264d|\u264c|\u264b|\u264f|\u264a|\u263a|\u261d|\u260e|\u231b|\u231a|\u203c|\u27a1|\u26fd|\u26f5|\u26fa|\u26a1|\u26aa|\u26ab|\u26bd|\u26be|\u26d4|\u26c4|\u26c5|\u26a0|\u26f2|\u26f3|\u26ea|\u25ab|\u25aa|\u25fd|\u25b6|\u25fb|\u25c0|\u25fe|\u25fc|\u24c2|\u21a9|\u21aa|\u2b07|\u2b05|\u2b06|\u2b50|\u2b55|\u2b1c|\u2b1b)([\uFE0E\uFE0F]?)))/g,s=/[&<>'"]/g,t=/IFRAME|NOFRAMES|NOSCRIPT|SCRIPT|SELECT|STYLE|TEXTAREA|[a-z]/,u=String.fromCharCode;return p}();
\ No newline at end of file
+var twemoji=function(){"use strict";function a(a){return document.createTextNode(a)}function b(a){return a.replace(s,h)}function c(a,b){return"".concat(b.base,b.size,"/",a,b.ext)}function d(a,b){for(var c,e,f=a.childNodes,g=f.length;g--;)c=f[g],e=c.nodeType,3===e?b.push(c):1!==e||t.test(c.nodeName)||d(c,b);return b}function e(a,b){return o("\ufe0f"===b?a.slice(0,-1):3===a.length&&"\ufe0f"===a.charAt(1)?a.charAt(0)+a.charAt(2):a)}function f(b,c){for(var f,g,h,i,j,k,l,m,n,o,p,q,s,t,u=d(b,[]),v=u.length;v--;){for(h=!1,i=document.createDocumentFragment(),j=u[v],k=j.nodeValue,m=0;l=r.exec(k);){if(n=l.index,n!==m&&i.appendChild(a(k.slice(m,n))),p=l[0],q=l[1],s=l[2],m=n+p.length,"\ufe0e"!==s&&(t=c.callback(e(q,s),c,s))){o=new Image,o.onerror=c.onerror,o.setAttribute("draggable","false"),f=c.attributes(q,s);for(g in f)f.hasOwnProperty(g)&&0!==g.indexOf("on")&&!o.hasAttribute(g)&&o.setAttribute(g,f[g]);o.className=c.className,o.alt=p,o.src=t,h=!0,i.appendChild(o)}o||i.appendChild(a(p)),o=null}h&&(m<k.length&&i.appendChild(a(k.slice(m))),j.parentNode.replaceChild(i,j))}return b}function g(a,c){return m(a,function(a,d,f){var g,h,i,j=a;if("\ufe0e"!==f&&(i=c.callback(e(d,f),c,f))){j="<img ".concat('class="',c.className,'" ','draggable="false" ','alt="',a,'"',' src="',i,'"'),g=c.attributes(d,f);for(h in g)g.hasOwnProperty(h)&&0!==h.indexOf("on")&&-1===j.indexOf(" "+h+"=")&&(j=j.concat(" ",h,'="',b(g[h]),'"'));j=j.concat(">")}return j})}function h(a){return q[a]}function i(){return null}function j(a){return"number"==typeof a?a+"x"+a:a}function k(a){var b="string"==typeof a?parseInt(a,16):a;return 65536>b?u(b):(b-=65536,u(55296+(b>>10),56320+(1023&b)))}function l(a,b){return b&&"function"!=typeof b||(b={callback:b}),("string"==typeof a?g:f)(a,{callback:b.callback||c,attributes:"function"==typeof b.attributes?b.attributes:i,base:"string"==typeof b.base?b.base:p.base,ext:b.ext||p.ext,size:b.folder||j(b.size||p.size),className:b.className||p.className,onerror:b.onerror||p.onerror})}function m(a,b){return String(a).replace(r,b)}function n(a){r.lastIndex=0;var b=r.test(a);return r.lastIndex=0,b}function o(a,b){for(var c=[],d=0,e=0,f=0;f<a.length;)d=a.charCodeAt(f++),e?(c.push((65536+(e-55296<<10)+(d-56320)).toString(16)),e=0):d>=55296&&56319>=d?e=d:c.push(d.toString(16));return c.join(b||"-")}var p={base:("https:"===location.protocol?"https:":"http:")+"//twemoji.maxcdn.com/",ext:".png",size:"36x36",className:"emoji",convert:{fromCodePoint:k,toCodePoint:o},onerror:function(){this.parentNode&&this.parentNode.replaceChild(a(this.alt),this)},parse:l,replace:m,test:n},q={"&":"&","<":"<",">":">","'":"'",'"':"""},r=/((?:\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67|\ud83c\uddf7\ud83c\uddf8|\ud83d\udd95\ud83c\udffd|\ud83d\udd95\ud83c\udffc|\ud83d\udd95\ud83c\udffb|\ud83d\udd90\ud83c\udfff|\ud83d\udd90\ud83c\udffe|\ud83d\udd90\ud83c\udffd|\ud83d\udd90\ud83c\udffc|\ud83d\udd90\ud83c\udffb|\ud83d\udcaa\ud83c\udfff|\ud83d\udcaa\ud83c\udffe|\ud83d\udcaa\ud83c\udffd|\ud83d\udcaa\ud83c\udffc|\ud83d\udcaa\ud83c\udffb|\ud83d\udc87\ud83c\udfff|\ud83d\udc87\ud83c\udffe|\ud83d\udc87\ud83c\udffd|\ud83d\udc87\ud83c\udffc|\ud83d\udc87\ud83c\udffb|\ud83d\udc86\ud83c\udfff|\ud83d\udc86\ud83c\udffe|\ud83d\udc86\ud83c\udffd|\ud83e\udd18\ud83c\udfff|\ud83e\udd18\ud83c\udffe|\ud83e\udd18\ud83c\udffd|\ud83e\udd18\ud83c\udffc|\ud83e\udd18\ud83c\udffb|\ud83d\udec0\ud83c\udfff|\ud83d\udec0\ud83c\udffe|\ud83d\udec0\ud83c\udffd|\ud83d\udec0\ud83c\udffc|\ud83d\udec0\ud83c\udffb|\ud83d\udeb6\ud83c\udfff|\ud83d\udeb6\ud83c\udffe|\ud83d\udeb6\ud83c\udffd|\ud83d\udeb6\ud83c\udffc|\ud83d\udeb6\ud83c\udffb|\ud83d\udeb5\ud83c\udfff|\ud83d\udeb5\ud83c\udffe|\ud83d\udeb5\ud83c\udffd|\ud83d\udeb5\ud83c\udffc|\ud83d\udeb5\ud83c\udffb|\ud83d\udeb4\ud83c\udfff|\ud83d\udeb4\ud83c\udffe|\ud83d\udeb4\ud83c\udffd|\ud83d\udeb4\ud83c\udffc|\ud83d\udeb4\ud83c\udffb|\ud83d\udea3\ud83c\udfff|\ud83d\udea3\ud83c\udffe|\ud83d\udea3\ud83c\udffd|\ud83d\udea3\ud83c\udffc|\ud83d\udea3\ud83c\udffb|\ud83d\ude4f\ud83c\udfff|\ud83d\ude4f\ud83c\udffe|\ud83d\ude4f\ud83c\udffd|\ud83d\ude4f\ud83c\udffc|\ud83d\ude4f\ud83c\udffb|\ud83d\ude4e\ud83c\udfff|\ud83d\ude4e\ud83c\udffe|\ud83d\ude4e\ud83c\udffd|\ud83d\ude4e\ud83c\udffc|\ud83d\ude4e\ud83c\udffb|\ud83d\ude4d\ud83c\udfff|\ud83d\ude4d\ud83c\udffe|\ud83d\ude4d\ud83c\udffd|\ud83d\ude4d\ud83c\udffc|\ud83d\ude4d\ud83c\udffb|\ud83d\ude4c\ud83c\udfff|\ud83d\ude4c\ud83c\udffe|\ud83d\ude4c\ud83c\udffd|\ud83d\ude4c\ud83c\udffc|\ud83d\ude4c\ud83c\udffb|\ud83d\ude4b\ud83c\udfff|\ud83d\ude4b\ud83c\udffe|\ud83d\ude4b\ud83c\udffd|\ud83d\ude4b\ud83c\udffc|\ud83d\ude4b\ud83c\udffb|\ud83d\ude47\ud83c\udfff|\ud83d\ude47\ud83c\udffe|\ud83c\udde8\ud83c\uddf3|\ud83c\udde9\ud83c\uddea|\ud83c\uddea\ud83c\uddf8|\ud83c\uddeb\ud83c\uddf7|\ud83c\uddec\ud83c\udde7|\ud83c\uddee\ud83c\uddf9|\ud83c\uddef\ud83c\uddf5|\ud83c\uddf0\ud83c\uddf7|\ud83c\uddf7\ud83c\uddfa|\ud83c\uddfa\ud83c\uddf8|\ud83d\udc86\ud83c\udffc|\ud83d\ude47\ud83c\udffd|\ud83d\ude47\ud83c\udffc|\ud83d\udc86\ud83c\udffb|\ud83d\udc85\ud83c\udfff|\ud83d\udc85\ud83c\udffe|\ud83d\udc85\ud83c\udffd|\ud83d\udc85\ud83c\udffc|\ud83d\udc85\ud83c\udffb|\ud83d\udc83\ud83c\udfff|\ud83d\udc83\ud83c\udffe|\ud83d\udc83\ud83c\udffd|\ud83d\udc83\ud83c\udffc|\ud83d\udc83\ud83c\udffb|\ud83d\udc82\ud83c\udfff|\ud83c\udde6\ud83c\udde8|\ud83c\udde6\ud83c\udde9|\ud83c\udde6\ud83c\uddea|\ud83c\udde6\ud83c\uddeb|\ud83c\udde6\ud83c\uddec|\ud83c\udde6\ud83c\uddee|\ud83c\udde6\ud83c\uddf1|\ud83c\udde6\ud83c\uddf2|\ud83c\udde6\ud83c\uddf4|\ud83c\udde6\ud83c\uddf6|\ud83c\udde6\ud83c\uddf7|\ud83c\udde6\ud83c\uddf8|\ud83c\udde6\ud83c\uddf9|\ud83c\udde6\ud83c\uddfa|\ud83c\udde6\ud83c\uddfc|\ud83c\udde6\ud83c\uddfd|\ud83c\udde6\ud83c\uddff|\ud83c\udde7\ud83c\udde6|\ud83c\udde7\ud83c\udde7|\ud83c\udde7\ud83c\udde9|\ud83c\udde7\ud83c\uddea|\ud83c\udde7\ud83c\uddeb|\ud83c\udde7\ud83c\uddec|\ud83c\udde7\ud83c\udded|\ud83c\udde7\ud83c\uddee|\ud83c\udde7\ud83c\uddef|\ud83c\udde7\ud83c\uddf1|\ud83c\udde7\ud83c\uddf2|\ud83c\udde7\ud83c\uddf3|\ud83c\udde7\ud83c\uddf4|\ud83c\udde7\ud83c\uddf6|\ud83c\udde7\ud83c\uddf7|\ud83c\udde7\ud83c\uddf8|\ud83c\udde7\ud83c\uddf9|\ud83c\udde7\ud83c\uddfb|\ud83c\udde7\ud83c\uddfc|\ud83c\udde7\ud83c\uddfe|\ud83c\udde7\ud83c\uddff|\ud83c\udde8\ud83c\udde6|\ud83c\udde8\ud83c\udde8|\ud83c\udde8\ud83c\udde9|\ud83c\udde8\ud83c\uddeb|\ud83c\udde8\ud83c\uddec|\ud83c\udde8\ud83c\udded|\ud83c\udde8\ud83c\uddee|\ud83c\udde8\ud83c\uddf0|\ud83c\udde8\ud83c\uddf1|\ud83c\udde8\ud83c\uddf2|\ud83c\udde8\ud83c\uddf4|\ud83c\udde8\ud83c\uddf5|\ud83c\udde8\ud83c\uddf7|\ud83c\udde8\ud83c\uddfa|\ud83c\udde8\ud83c\uddfb|\ud83c\udde8\ud83c\uddfc|\ud83c\udde8\ud83c\uddfd|\ud83c\udde8\ud83c\uddfe|\ud83c\udde8\ud83c\uddff|\ud83c\udde9\ud83c\uddec|\ud83c\udde9\ud83c\uddef|\ud83c\udde9\ud83c\uddf0|\ud83c\udde9\ud83c\uddf2|\ud83c\udde9\ud83c\uddf4|\ud83c\udde9\ud83c\uddff|\ud83c\uddea\ud83c\udde6|\ud83c\uddea\ud83c\udde8|\ud83c\uddea\ud83c\uddea|\ud83c\uddea\ud83c\uddec|\ud83c\uddea\ud83c\udded|\ud83c\uddea\ud83c\uddf7|\ud83c\uddea\ud83c\uddf9|\ud83c\uddea\ud83c\uddfa|\ud83c\uddeb\ud83c\uddee|\ud83c\uddeb\ud83c\uddef|\ud83c\uddeb\ud83c\uddf0|\ud83c\uddeb\ud83c\uddf2|\ud83c\uddeb\ud83c\uddf4|\ud83c\uddec\ud83c\udde6|\ud83c\uddec\ud83c\udde9|\ud83c\uddec\ud83c\uddea|\ud83c\uddec\ud83c\uddeb|\ud83c\uddec\ud83c\uddec|\ud83c\uddec\ud83c\udded|\ud83c\uddec\ud83c\uddee|\ud83c\uddec\ud83c\uddf1|\ud83c\uddec\ud83c\uddf2|\ud83c\uddec\ud83c\uddf3|\ud83c\uddec\ud83c\uddf5|\ud83c\uddec\ud83c\uddf6|\ud83c\uddec\ud83c\uddf7|\ud83c\uddec\ud83c\uddf8|\ud83c\uddec\ud83c\uddf9|\ud83c\uddec\ud83c\uddfa|\ud83c\uddec\ud83c\uddfc|\ud83c\uddec\ud83c\uddfe|\ud83c\udded\ud83c\uddf0|\ud83c\udded\ud83c\uddf2|\ud83c\udded\ud83c\uddf3|\ud83c\udded\ud83c\uddf7|\ud83c\udded\ud83c\uddf9|\ud83c\udded\ud83c\uddfa|\ud83c\uddee\ud83c\udde8|\ud83c\uddee\ud83c\udde9|\ud83c\uddee\ud83c\uddea|\ud83c\uddee\ud83c\uddf1|\ud83c\uddee\ud83c\uddf2|\ud83c\uddee\ud83c\uddf3|\ud83c\uddee\ud83c\uddf4|\ud83c\uddee\ud83c\uddf6|\ud83c\uddee\ud83c\uddf7|\ud83c\uddee\ud83c\uddf8|\ud83c\uddef\ud83c\uddea|\ud83c\uddef\ud83c\uddf2|\ud83c\uddef\ud83c\uddf4|\ud83c\uddf0\ud83c\uddea|\ud83c\uddf0\ud83c\uddec|\ud83c\uddf0\ud83c\udded|\ud83c\uddf0\ud83c\uddee|\ud83c\uddf0\ud83c\uddf2|\ud83c\uddf0\ud83c\uddf3|\ud83c\uddf0\ud83c\uddf5|\ud83c\uddf0\ud83c\uddfc|\ud83c\uddf0\ud83c\uddfe|\ud83c\uddf0\ud83c\uddff|\ud83c\uddf1\ud83c\udde6|\ud83c\uddf1\ud83c\udde7|\ud83c\uddf1\ud83c\udde8|\ud83c\uddf1\ud83c\uddee|\ud83c\uddf1\ud83c\uddf0|\ud83c\uddf1\ud83c\uddf7|\ud83c\uddf1\ud83c\uddf8|\ud83c\uddf1\ud83c\uddf9|\ud83c\uddf1\ud83c\uddfa|\ud83c\uddf1\ud83c\uddfb|\ud83c\uddf1\ud83c\uddfe|\ud83c\uddf2\ud83c\udde6|\ud83c\uddf2\ud83c\udde8|\ud83c\uddf2\ud83c\udde9|\ud83c\uddf2\ud83c\uddea|\ud83c\uddf2\ud83c\uddeb|\ud83c\uddf2\ud83c\uddec|\ud83c\uddf2\ud83c\udded|\ud83c\uddf2\ud83c\uddf0|\ud83c\uddf2\ud83c\uddf1|\ud83c\uddf2\ud83c\uddf2|\ud83c\uddf2\ud83c\uddf3|\ud83c\uddf2\ud83c\uddf4|\ud83c\uddf2\ud83c\uddf5|\ud83c\uddf2\ud83c\uddf6|\ud83c\uddf2\ud83c\uddf7|\ud83c\uddf2\ud83c\uddf8|\ud83c\uddf2\ud83c\uddf9|\ud83c\uddf2\ud83c\uddfa|\ud83c\uddf2\ud83c\uddfb|\ud83c\uddf2\ud83c\uddfc|\ud83c\uddf2\ud83c\uddfd|\ud83c\uddf2\ud83c\uddfe|\ud83c\uddf2\ud83c\uddff|\ud83c\uddf3\ud83c\udde6|\ud83c\uddf3\ud83c\udde8|\ud83c\uddf3\ud83c\uddea|\ud83c\uddf3\ud83c\uddeb|\ud83c\uddf3\ud83c\uddec|\ud83c\uddf3\ud83c\uddee|\ud83c\uddf3\ud83c\uddf1|\ud83c\uddf3\ud83c\uddf4|\ud83c\uddf3\ud83c\uddf5|\ud83c\uddf3\ud83c\uddf7|\ud83c\uddf3\ud83c\uddfa|\ud83c\uddf3\ud83c\uddff|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c\udde6|\ud83c\uddf5\ud83c\uddea|\ud83c\uddf5\ud83c\uddeb|\ud83c\uddf5\ud83c\uddec|\ud83c\uddf5\ud83c\udded|\ud83c\uddf5\ud83c\uddf0|\ud83c\uddf5\ud83c\uddf1|\ud83c\uddf5\ud83c\uddf2|\ud83c\uddf5\ud83c\uddf3|\ud83c\uddf5\ud83c\uddf7|\ud83c\uddf5\ud83c\uddf8|\ud83c\uddf5\ud83c\uddf9|\ud83c\uddf5\ud83c\uddfc|\ud83c\uddf5\ud83c\uddfe|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c\uddea|\ud83c\uddf7\ud83c\uddf4|\ud83d\udc82\ud83c\udffe|\ud83c\uddf7\ud83c\uddfc|\ud83c\uddf8\ud83c\udde6|\ud83c\uddf8\ud83c\udde7|\ud83c\uddf8\ud83c\udde8|\ud83c\uddf8\ud83c\udde9|\ud83c\uddf8\ud83c\uddea|\ud83c\uddf8\ud83c\uddec|\ud83c\uddf8\ud83c\udded|\ud83c\uddf8\ud83c\uddee|\ud83c\uddf8\ud83c\uddef|\ud83c\uddf8\ud83c\uddf0|\ud83c\uddf8\ud83c\uddf1|\ud83c\uddf8\ud83c\uddf2|\ud83c\uddf8\ud83c\uddf3|\ud83c\uddf8\ud83c\uddf4|\ud83c\uddf8\ud83c\uddf7|\ud83c\uddf8\ud83c\uddf8|\ud83c\uddf8\ud83c\uddf9|\ud83c\uddf8\ud83c\uddfb|\ud83c\uddf8\ud83c\uddfd|\ud83c\uddf8\ud83c\uddfe|\ud83c\uddf8\ud83c\uddff|\ud83c\uddf9\ud83c\udde6|\ud83c\uddf9\ud83c\udde8|\ud83c\uddf9\ud83c\udde9|\ud83c\uddf9\ud83c\uddeb|\ud83c\uddf9\ud83c\uddec|\ud83c\uddf9\ud83c\udded|\ud83c\uddf9\ud83c\uddef|\ud83c\uddf9\ud83c\uddf0|\ud83c\uddf9\ud83c\uddf1|\ud83c\uddf9\ud83c\uddf2|\ud83c\uddf9\ud83c\uddf3|\ud83c\uddf9\ud83c\uddf4|\ud83c\uddf9\ud83c\uddf7|\ud83c\uddf9\ud83c\uddf9|\ud83c\uddf9\ud83c\uddfb|\ud83c\uddf9\ud83c\uddfc|\ud83c\uddf9\ud83c\uddff|\ud83c\uddfa\ud83c\udde6|\ud83c\uddfa\ud83c\uddec|\ud83c\uddfa\ud83c\uddf2|\ud83c\uddfa\ud83c\uddfe|\ud83c\uddfa\ud83c\uddff|\ud83c\uddfb\ud83c\udde6|\ud83c\uddfb\ud83c\udde8|\ud83c\uddfb\ud83c\uddea|\ud83c\uddfb\ud83c\uddec|\ud83c\uddfb\ud83c\uddee|\ud83c\uddfb\ud83c\uddf3|\ud83c\uddfb\ud83c\uddfa|\ud83c\uddfc\ud83c\uddeb|\ud83c\uddfc\ud83c\uddf8|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c\uddea|\ud83c\uddfe\ud83c\uddf9|\ud83c\uddff\ud83c\udde6|\ud83c\uddff\ud83c\uddf2|\ud83c\uddff\ud83c\uddfc|\ud83c\udf85\ud83c\udffb|\ud83c\udf85\ud83c\udffc|\ud83c\udf85\ud83c\udffd|\ud83c\udf85\ud83c\udffe|\ud83c\udf85\ud83c\udfff|\ud83c\udfc3\ud83c\udffb|\ud83c\udfc3\ud83c\udffc|\ud83c\udfc3\ud83c\udffd|\ud83c\udfc3\ud83c\udffe|\ud83c\udfc3\ud83c\udfff|\ud83c\udfc4\ud83c\udffb|\ud83c\udfc4\ud83c\udffc|\ud83c\udfc4\ud83c\udffd|\ud83c\udfc4\ud83c\udffe|\ud83c\udfc4\ud83c\udfff|\ud83c\udfc7\ud83c\udffb|\ud83c\udfc7\ud83c\udffc|\ud83c\udfc7\ud83c\udffd|\ud83c\udfc7\ud83c\udffe|\ud83c\udfc7\ud83c\udfff|\ud83c\udfca\ud83c\udffb|\ud83c\udfca\ud83c\udffc|\ud83c\udfca\ud83c\udffd|\ud83c\udfca\ud83c\udffe|\ud83c\udfca\ud83c\udfff|\ud83c\udfcb\ud83c\udffb|\ud83c\udfcb\ud83c\udffc|\ud83c\udfcb\ud83c\udffd|\ud83c\udfcb\ud83c\udffe|\ud83c\udfcb\ud83c\udfff|\ud83d\udc42\ud83c\udffb|\ud83d\udc42\ud83c\udffc|\ud83d\udc42\ud83c\udffd|\ud83d\udc42\ud83c\udffe|\ud83d\udc42\ud83c\udfff|\ud83d\udc43\ud83c\udffb|\ud83d\udc43\ud83c\udffc|\ud83d\udc43\ud83c\udffd|\ud83d\udc43\ud83c\udffe|\ud83d\udc43\ud83c\udfff|\ud83d\udc46\ud83c\udffb|\ud83d\udc46\ud83c\udffc|\ud83d\udc46\ud83c\udffd|\ud83d\udc46\ud83c\udffe|\ud83d\udc46\ud83c\udfff|\ud83d\udc47\ud83c\udffb|\ud83d\udc47\ud83c\udffc|\ud83d\udc47\ud83c\udffd|\ud83d\udc47\ud83c\udffe|\ud83d\udc47\ud83c\udfff|\ud83d\udc48\ud83c\udffb|\ud83d\udc48\ud83c\udffc|\ud83d\udc48\ud83c\udffd|\ud83d\udc48\ud83c\udffe|\ud83d\udc48\ud83c\udfff|\ud83d\udc49\ud83c\udffb|\ud83d\udc49\ud83c\udffc|\ud83d\udc49\ud83c\udffd|\ud83d\udc49\ud83c\udffe|\ud83d\udc49\ud83c\udfff|\ud83d\udc4a\ud83c\udffb|\ud83d\udc4a\ud83c\udffc|\ud83d\udc4a\ud83c\udffd|\ud83d\udc4a\ud83c\udffe|\ud83d\udc4a\ud83c\udfff|\ud83d\udc4b\ud83c\udffb|\ud83d\udc4b\ud83c\udffc|\ud83d\udc4b\ud83c\udffd|\ud83d\udc4b\ud83c\udffe|\ud83d\udc4b\ud83c\udfff|\ud83d\udc4c\ud83c\udffb|\ud83d\udc4c\ud83c\udffc|\ud83d\udc4c\ud83c\udffd|\ud83d\udc4c\ud83c\udffe|\ud83d\udc4c\ud83c\udfff|\ud83d\udc4d\ud83c\udffb|\ud83d\udc4d\ud83c\udffc|\ud83d\udc4d\ud83c\udffd|\ud83d\udc4d\ud83c\udffe|\ud83d\udc4d\ud83c\udfff|\ud83d\udc4e\ud83c\udffb|\ud83d\udc4e\ud83c\udffc|\ud83d\udc4e\ud83c\udffd|\ud83d\udc4e\ud83c\udffe|\ud83d\udc4e\ud83c\udfff|\ud83d\udc4f\ud83c\udffb|\ud83d\udc4f\ud83c\udffc|\ud83d\udc4f\ud83c\udffd|\ud83d\udc4f\ud83c\udffe|\ud83d\udc4f\ud83c\udfff|\ud83d\udc50\ud83c\udffb|\ud83d\udc50\ud83c\udffc|\ud83d\udc50\ud83c\udffd|\ud83d\udc50\ud83c\udffe|\ud83d\udc50\ud83c\udfff|\ud83d\udc66\ud83c\udffb|\ud83d\udc66\ud83c\udffc|\ud83d\udc66\ud83c\udffd|\ud83d\udc66\ud83c\udffe|\ud83d\udc66\ud83c\udfff|\ud83d\udc67\ud83c\udffb|\ud83d\udc67\ud83c\udffc|\ud83d\udc67\ud83c\udffd|\ud83d\udc67\ud83c\udffe|\ud83d\udc67\ud83c\udfff|\ud83d\udc68\ud83c\udffb|\ud83d\udc68\ud83c\udffc|\ud83d\udc68\ud83c\udffd|\ud83d\udc68\ud83c\udffe|\ud83d\udc68\ud83c\udfff|\ud83d\ude47\ud83c\udffb|\ud83d\ude46\ud83c\udfff|\ud83d\ude46\ud83c\udffe|\ud83d\ude46\ud83c\udffd|\ud83d\ude46\ud83c\udffc|\ud83d\ude46\ud83c\udffb|\ud83d\ude45\ud83c\udfff|\ud83d\ude45\ud83c\udffe|\ud83d\ude45\ud83c\udffd|\ud83d\ude45\ud83c\udffc|\ud83d\ude45\ud83c\udffb|\ud83d\udc69\ud83c\udffb|\ud83d\udc69\ud83c\udffc|\ud83d\udc69\ud83c\udffd|\ud83d\udc69\ud83c\udffe|\ud83d\udc69\ud83c\udfff|\ud83d\udd96\ud83c\udfff|\ud83d\udd96\ud83c\udffe|\ud83d\udd96\ud83c\udffd|\ud83d\udd96\ud83c\udffc|\ud83d\udd96\ud83c\udffb|\ud83d\udd95\ud83c\udfff|\ud83d\udd95\ud83c\udffe|\ud83d\udc6e\ud83c\udffb|\ud83d\udc6e\ud83c\udffc|\ud83d\udc6e\ud83c\udffd|\ud83d\udc6e\ud83c\udffe|\ud83d\udc6e\ud83c\udfff|\ud83d\udc70\ud83c\udffb|\ud83d\udc70\ud83c\udffc|\ud83d\udc70\ud83c\udffd|\ud83d\udc70\ud83c\udffe|\ud83d\udc70\ud83c\udfff|\ud83d\udc71\ud83c\udffb|\ud83d\udc71\ud83c\udffc|\ud83d\udc71\ud83c\udffd|\ud83d\udc71\ud83c\udffe|\ud83d\udc71\ud83c\udfff|\ud83d\udc72\ud83c\udffb|\ud83d\udc72\ud83c\udffc|\ud83d\udc72\ud83c\udffd|\ud83d\udc72\ud83c\udffe|\ud83d\udc72\ud83c\udfff|\ud83d\udc73\ud83c\udffb|\ud83d\udc73\ud83c\udffc|\ud83d\udc73\ud83c\udffd|\ud83d\udc73\ud83c\udffe|\ud83d\udc73\ud83c\udfff|\ud83d\udc74\ud83c\udffb|\ud83d\udc74\ud83c\udffc|\ud83d\udc74\ud83c\udffd|\ud83d\udc74\ud83c\udffe|\ud83d\udc74\ud83c\udfff|\ud83d\udc75\ud83c\udffb|\ud83d\udc75\ud83c\udffc|\ud83d\udc75\ud83c\udffd|\ud83d\udc75\ud83c\udffe|\ud83d\udc75\ud83c\udfff|\ud83d\udc76\ud83c\udffb|\ud83d\udc76\ud83c\udffc|\ud83d\udc76\ud83c\udffd|\ud83d\udc76\ud83c\udffe|\ud83d\udc76\ud83c\udfff|\ud83d\udc77\ud83c\udffb|\ud83d\udc77\ud83c\udffc|\ud83d\udc77\ud83c\udffd|\ud83d\udc77\ud83c\udffe|\ud83d\udc77\ud83c\udfff|\ud83d\udc78\ud83c\udffb|\ud83d\udc78\ud83c\udffc|\ud83d\udc78\ud83c\udffd|\ud83d\udc78\ud83c\udffe|\ud83d\udc78\ud83c\udfff|\ud83d\udc7c\ud83c\udffb|\ud83d\udc7c\ud83c\udffc|\ud83d\udc7c\ud83c\udffd|\ud83d\udc7c\ud83c\udffe|\ud83d\udc7c\ud83c\udfff|\ud83d\udc81\ud83c\udffb|\ud83d\udc81\ud83c\udffc|\ud83d\udc81\ud83c\udffd|\ud83d\udc81\ud83c\udffe|\ud83d\udc81\ud83c\udfff|\ud83d\udc82\ud83c\udffb|\ud83d\udc82\ud83c\udffc|\ud83d\udc82\ud83c\udffd|\u270a\ud83c\udffd|\u270b\ud83c\udffd|\u270d\ud83c\udffe|\u270d\ud83c\udffd|\u270d\ud83c\udffc|\u270d\ud83c\udffb|\u270c\ud83c\udfff|\u270c\ud83c\udffe|\u270c\ud83c\udffd|\u270c\ud83c\udffc|\u270c\ud83c\udffb|\u270b\ud83c\udfff|\u270b\ud83c\udffc|\u270b\ud83c\udffb|\u270a\ud83c\udfff|\u270d\ud83c\udfff|\u270a\ud83c\udffe|\u270b\ud83c\udffe|\u270a\ud83c\udffc|\u270a\ud83c\udffb|\u261d\ud83c\udfff|\u261d\ud83c\udffd|\u261d\ud83c\udffc|\u261d\ud83c\udffb|\u261d\ud83c\udffe|\u26f9\ud83c\udffe|\u26f9\ud83c\udfff|\u26f9\ud83c\udffd|\u26f9\ud83c\udffc|\u26f9\ud83c\udffb|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\u002a\u20e3|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\ud83d\udd55|\ud83d\udd56|\ud83d\udd57|\ud83d\udd58|\ud83d\udd59|\ud83d\udd5a|\ud83d\udd5b|\ud83d\uddfb|\ud83d\uddfc|\ud83d\uddfd|\ud83d\uddfe|\ud83d\uddff|\ud83d\ude01|\ud83d\ude02|\ud83d\ude03|\ud83d\ude04|\ud83d\ude05|\ud83d\ude06|\ud83d\ude09|\ud83d\ude0a|\ud83d\ude0b|\ud83d\ude0c|\ud83d\ude0d|\ud83d\ude0f|\ud83d\ude12|\ud83d\ude13|\ud83d\ude14|\ud83d\ude16|\ud83d\ude18|\ud83d\ude1a|\ud83d\ude1c|\ud83d\ude1d|\ud83d\ude1e|\ud83d\ude20|\ud83d\ude21|\ud83d\ude22|\ud83d\ude23|\ud83d\ude24|\ud83d\ude25|\ud83d\ude28|\ud83d\ude29|\ud83d\ude2a|\ud83d\ude2b|\ud83d\ude2d|\ud83d\ude30|\ud83d\ude31|\ud83d\ude32|\ud83d\ude33|\ud83d\ude35|\ud83d\ude37|\ud83d\ude38|\ud83d\ude39|\ud83d\ude3a|\ud83d\ude3b|\ud83d\ude3c|\ud83d\ude3d|\ud83d\ude3e|\ud83d\ude3f|\ud83d\ude40|\ud83d\ude45|\ud83d\ude46|\ud83d\ude47|\ud83d\ude48|\ud83d\ude49|\ud83d\ude4a|\ud83d\ude4b|\ud83d\ude4c|\ud83d\ude4d|\ud83d\ude4e|\ud83d\ude4f|\ud83d\ude80|\ud83d\ude83|\ud83d\ude84|\ud83d\ude85|\ud83d\ude87|\ud83d\ude89|\ud83d\ude8c|\ud83d\ude8f|\ud83d\ude91|\ud83d\ude92|\ud83d\ude93|\ud83d\ude95|\ud83d\ude97|\ud83d\ude99|\ud83d\ude9a|\ud83d\udea2|\ud83d\udea4|\ud83d\udea5|\ud83d\udea7|\ud83d\udea8|\ud83d\udea9|\ud83d\udeaa|\ud83d\udeab|\ud83d\udeac|\ud83d\udead|\ud83d\udeb2|\ud83d\udeb6|\ud83d\udeb9|\ud83d\udeba|\ud83d\udebb|\ud83d\udebc|\ud83d\udebd|\ud83d\udebe|\ud83d\udec0|\ud83c\udde6|\ud83c\udde7|\ud83c\udde8|\ud83c\udde9|\ud83c\uddea|\ud83c\uddeb|\ud83c\uddec|\ud83c\udded|\ud83c\uddee|\ud83c\uddef|\ud83c\uddf0|\ud83c\uddf1|\ud83c\uddf2|\ud83c\uddf3|\ud83c\uddf4|\ud83c\uddf5|\ud83c\uddf6|\ud83c\uddf7|\ud83c\uddf8|\ud83c\uddf9|\ud83c\uddfa|\ud83c\uddfb|\ud83c\uddfc|\ud83c\uddfd|\ud83c\uddfe|\ud83c\uddff|\ud83c\udf0d|\ud83c\udf0e|\ud83c\udf10|\ud83c\udf12|\ud83c\udf16|\ud83c\udf17|\ud83c\udf18|\ud83c\udf1a|\ud83c\udf1c|\ud83c\udf1d|\ud83c\udf1e|\ud83c\udf32|\ud83c\udf33|\ud83c\udf4b|\ud83c\udf50|\ud83c\udf7c|\ud83c\udfc7|\ud83c\udfc9|\ud83c\udfe4|\ud83d\udc00|\ud83d\udc01|\ud83d\udc02|\ud83d\udc03|\ud83d\udc04|\ud83d\udc05|\ud83d\udc06|\ud83d\udc07|\ud83d\udc08|\ud83d\udc09|\ud83d\udc0a|\ud83d\udc0b|\ud83d\udc0f|\ud83d\udc10|\ud83d\udc13|\ud83d\udc15|\ud83d\udc16|\ud83d\udc2a|\ud83d\udc65|\ud83d\udc6c|\ud83d\udc6d|\ud83d\udcad|\ud83d\udcb6|\ud83d\udcb7|\ud83d\udcec|\ud83d\udced|\ud83d\udcef|\ud83d\udcf5|\ud83d\udd00|\ud83d\udd01|\ud83d\udd02|\ud83d\udd04|\ud83d\udd05|\ud83d\udd06|\ud83d\udd07|\ud83d\udd08|\ud83d\udd09|\ud83d\udd15|\ud83d\udd2c|\ud83d\udd2d|\ud83d\udd5c|\ud83d\udd5d|\ud83d\udd5e|\ud83d\udd5f|\ud83d\udd60|\ud83d\udd61|\ud83d\udd62|\ud83d\udd63|\ud83d\udd64|\ud83d\udd65|\ud83d\udd66|\ud83d\udd67|\ud83d\ude00|\ud83d\ude07|\ud83d\ude08|\ud83d\ude0e|\ud83d\ude10|\ud83d\ude11|\ud83d\ude15|\ud83d\ude17|\ud83d\ude19|\ud83d\ude1b|\ud83d\ude1f|\ud83d\ude26|\ud83d\ude27|\ud83d\ude2c|\ud83d\ude2e|\ud83d\ude2f|\ud83d\ude34|\ud83d\ude36|\ud83d\ude81|\ud83d\ude82|\ud83d\ude86|\ud83d\ude88|\ud83d\ude8a|\ud83d\ude8b|\ud83d\ude8d|\ud83d\ude8e|\ud83d\ude90|\ud83d\ude94|\ud83d\ude96|\ud83d\ude98|\ud83d\ude9b|\ud83d\ude9c|\ud83d\ude9d|\ud83d\ude9e|\ud83d\ude9f|\ud83d\udea0|\ud83d\udea1|\ud83d\udea3|\ud83d\udea6|\ud83d\udeae|\ud83d\udeaf|\ud83d\udeb0|\ud83d\udeb1|\ud83d\udeb3|\ud83d\udeb4|\ud83d\udeb5|\ud83d\udeb7|\ud83d\udeb8|\ud83d\udebf|\ud83d\udec1|\ud83d\udec2|\ud83d\udec3|\ud83d\udec4|\ud83d\udec5|\ud83d\udecd|\ud83d\udecc|\ud83d\udecb|\ud83e\udd81|\ud83e\udd80|\ud83e\udd18|\ud83c\udf46|\ud83e\uddc0|\ud83e\udd84|\ud83e\udd83|\ud83e\udd82|\ud83e\udd17|\ud83e\udd16|\ud83e\udd15|\ud83e\udd14|\ud83e\udd13|\ud83e\udd12|\ud83e\udd11|\ud83e\udd10|\ud83d\udef3|\ud83d\udef0|\ud83d\udeec|\ud83c\udccf|\ud83c\udd8e|\ud83c\udd91|\ud83c\udd92|\ud83c\udd93|\ud83c\udd94|\ud83c\udd95|\ud83c\udd96|\ud83c\udd97|\ud83c\udd98|\ud83c\udd99|\ud83c\udd9a|\ud83d\udeeb|\ud83d\udee9|\ud83d\udee5|\ud83d\udee4|\ud83d\udee3|\ud83d\udee2|\ud83d\udee1|\ud83d\udee0|\ud83d\uded0|\ud83d\udecf|\ud83c\ude01|\ud83c\ude32|\ud83c\ude33|\ud83c\ude34|\ud83c\ude35|\ud83c\ude36|\ud83c\ude38|\ud83c\ude39|\ud83c\ude3a|\ud83c\ude50|\ud83c\ude51|\ud83c\udf00|\ud83c\udf01|\ud83c\udf02|\ud83c\udf03|\ud83c\udf04|\ud83c\udf05|\ud83c\udf06|\ud83c\udf07|\ud83c\udf08|\ud83c\udf09|\ud83c\udf0a|\ud83c\udf0b|\ud83c\udf0c|\ud83c\udf0f|\ud83c\udf11|\ud83c\udf13|\ud83c\udf14|\ud83c\udf15|\ud83c\udf19|\ud83c\udf1b|\ud83c\udf1f|\ud83c\udf20|\ud83c\udf30|\ud83c\udf31|\ud83c\udf34|\ud83c\udf35|\ud83c\udf37|\ud83c\udf38|\ud83c\udf39|\ud83c\udf3a|\ud83c\udf3b|\ud83c\udf3c|\ud83c\udf3d|\ud83c\udf3e|\ud83c\udf3f|\ud83c\udf40|\ud83c\udf41|\ud83c\udf42|\ud83c\udf43|\ud83c\udf44|\ud83c\udf45|\ud83d\udece|\ud83c\udf47|\ud83c\udf48|\ud83c\udf49|\ud83c\udf4a|\ud83c\udf4c|\ud83c\udf4d|\ud83c\udf4e|\ud83c\udf4f|\ud83c\udf51|\ud83c\udf52|\ud83c\udf53|\ud83c\udf54|\ud83c\udf55|\ud83c\udf56|\ud83c\udf57|\ud83c\udf58|\ud83c\udf59|\ud83c\udf5a|\ud83c\udf5b|\ud83c\udf5c|\ud83c\udf5d|\ud83c\udf5e|\ud83c\udf5f|\ud83c\udf60|\ud83c\udf61|\ud83c\udf62|\ud83c\udf63|\ud83c\udf64|\ud83c\udf65|\ud83c\udf66|\ud83c\udf67|\ud83c\udf68|\ud83c\udf69|\ud83c\udf6a|\ud83c\udf6b|\ud83c\udf6c|\ud83c\udf6d|\ud83c\udf6e|\ud83c\udf6f|\ud83c\udf70|\ud83c\udf71|\ud83c\udf72|\ud83c\udf73|\ud83c\udf74|\ud83c\udf75|\ud83c\udf76|\ud83c\udf77|\ud83c\udf78|\ud83c\udf79|\ud83c\udf7a|\ud83c\udf7b|\ud83c\udf80|\ud83c\udf81|\ud83c\udf82|\ud83c\udf83|\ud83c\udf84|\ud83c\udf85|\ud83c\udf86|\ud83c\udf87|\ud83c\udf88|\ud83c\udf89|\ud83c\udf8a|\ud83c\udf8b|\ud83c\udf8c|\ud83c\udf8d|\ud83c\udf8e|\ud83c\udf8f|\ud83c\udf90|\ud83c\udf91|\ud83c\udf92|\ud83c\udf93|\ud83c\udfa0|\ud83c\udfa1|\ud83c\udfa2|\ud83c\udfa3|\ud83c\udfa4|\ud83c\udfa5|\ud83c\udfa6|\ud83c\udfa7|\ud83c\udfa8|\ud83c\udfa9|\ud83c\udfaa|\ud83c\udfab|\ud83c\udfac|\ud83c\udfad|\ud83c\udfae|\ud83c\udfaf|\ud83c\udfb0|\ud83c\udfb1|\ud83c\udfb2|\ud83c\udfb3|\ud83c\udfb4|\ud83c\udfb5|\ud83c\udfb6|\ud83c\udfb7|\ud83c\udfb8|\ud83c\udfb9|\ud83c\udfba|\ud83c\udfbb|\ud83c\udfbc|\ud83c\udfbd|\ud83c\udfbe|\ud83c\udfbf|\ud83c\udfc0|\ud83c\udfc1|\ud83c\udfc2|\ud83c\udfc3|\ud83c\udfc4|\ud83c\udfc6|\ud83c\udfc8|\ud83c\udfca|\ud83c\udfe0|\ud83c\udfe1|\ud83c\udfe2|\ud83c\udfe3|\ud83c\udfe5|\ud83c\udfe6|\ud83c\udfe7|\ud83c\udfe8|\ud83c\udfe9|\ud83c\udfea|\ud83c\udfeb|\ud83c\udfec|\ud83c\udfed|\ud83c\udfee|\ud83c\udfef|\ud83c\udff0|\ud83d\udc0c|\ud83d\udc0d|\ud83d\udc0e|\ud83d\udc11|\ud83d\udc12|\ud83d\udc14|\ud83d\udc17|\ud83d\udc18|\ud83d\udc19|\ud83d\udc1a|\ud83d\udc1b|\ud83d\udc1c|\ud83d\udc1d|\ud83d\udc1e|\ud83d\udc1f|\ud83d\udc20|\ud83d\udc21|\ud83d\udc22|\ud83d\udc23|\ud83d\udc24|\ud83d\udc25|\ud83d\udc26|\ud83d\udc27|\ud83d\udc28|\ud83d\udc29|\ud83d\udc2b|\ud83d\udc2c|\ud83d\udc2d|\ud83c\udf21|\ud83c\udf24|\ud83c\udf25|\ud83c\udf26|\ud83c\udf27|\ud83c\udf28|\ud83c\udf29|\ud83c\udf2a|\ud83c\udf2b|\ud83c\udf2c|\ud83c\udf2d|\ud83c\udf2e|\ud83c\udf2f|\ud83c\udf36|\ud83c\udf7d|\ud83c\udf7e|\ud83c\udf7f|\ud83d\udc2e|\ud83d\udc2f|\ud83d\udc30|\ud83d\udc31|\ud83d\udc32|\ud83c\udf96|\ud83c\udf97|\ud83c\udf99|\ud83c\udf9a|\ud83c\udf9b|\ud83c\udf9e|\ud83c\udf9f|\ud83d\udc33|\ud83d\udc34|\ud83d\udc35|\ud83d\udc36|\ud83d\udc37|\ud83d\udc38|\ud83d\udc39|\ud83d\udc3a|\ud83d\udc3b|\ud83d\udc3c|\ud83c\udfc5|\ud83d\udc3d|\ud83d\udc3e|\ud83d\udc40|\ud83d\udc42|\ud83d\udc43|\ud83d\udc44|\ud83d\udc45|\ud83d\udc46|\ud83d\udc47|\ud83d\udc48|\ud83d\udc49|\ud83d\udc4a|\ud83d\udc4b|\ud83d\udc4c|\ud83d\udc4d|\ud83c\udfcb|\ud83c\udfcc|\ud83c\udfcd|\ud83c\udfce|\ud83c\udfcf|\ud83c\udfd0|\ud83c\udfd1|\ud83c\udfd2|\ud83c\udfd3|\ud83c\udfd4|\ud83c\udfd5|\ud83c\udfd6|\ud83c\udfd7|\ud83c\udfd8|\ud83c\udfd9|\ud83c\udfda|\ud83c\udfdb|\ud83c\udfdc|\ud83c\udfdd|\ud83c\udfde|\ud83c\udfdf|\ud83c\udff3|\ud83c\udff4|\ud83c\udff5|\ud83c\udff7|\ud83c\udff8|\ud83c\udff9|\ud83c\udffa|\ud83c\udffb|\ud83c\udffc|\ud83c\udffd|\ud83c\udffe|\ud83c\udfff|\ud83d\udc3f|\ud83d\udc41|\ud83d\udc4e|\ud83d\udc4f|\ud83d\udc50|\ud83d\udc51|\ud83d\udc52|\ud83d\udc53|\ud83d\udc54|\ud83d\udc55|\ud83d\udc56|\ud83d\udc57|\ud83d\udc58|\ud83d\udc59|\ud83d\udc5a|\ud83d\udc5b|\ud83d\udc5c|\ud83d\udc5d|\ud83d\udc5e|\ud83d\udc5f|\ud83d\udc60|\ud83d\udc61|\ud83d\udc62|\ud83d\udc63|\ud83d\udc64|\ud83d\udc66|\ud83d\udc67|\ud83d\udc68|\ud83d\udc69|\ud83d\udc6a|\ud83d\udc6b|\ud83d\udc6e|\ud83d\udc6f|\ud83d\udc70|\ud83d\udc71|\ud83d\udc72|\ud83d\udc73|\ud83d\udc74|\ud83d\udc75|\ud83d\udc76|\ud83d\udc77|\ud83d\udc78|\ud83d\udc79|\ud83d\udc7a|\ud83d\udc7b|\ud83d\udc7c|\ud83d\udc7d|\ud83d\udc7e|\ud83d\udc7f|\ud83d\udc80|\ud83d\udc81|\ud83d\udc82|\ud83d\udc83|\ud83d\udc84|\ud83d\udc85|\ud83d\udc86|\ud83d\udc87|\ud83d\udc88|\ud83d\udc89|\ud83d\udc8a|\ud83d\udc8b|\ud83d\udc8c|\ud83d\udc8d|\ud83d\udc8e|\ud83d\udc8f|\ud83d\udc90|\ud83d\udc91|\ud83d\udc92|\ud83d\udc93|\ud83d\udc94|\ud83d\udc95|\ud83d\udc96|\ud83d\udc97|\ud83d\udc98|\ud83d\udc99|\ud83d\udc9a|\ud83d\udc9b|\ud83d\udc9c|\ud83d\udc9d|\ud83d\udc9e|\ud83d\udc9f|\ud83d\udca0|\ud83d\udca1|\ud83d\udca2|\ud83d\udca3|\ud83d\udca4|\ud83d\udca5|\ud83d\udca6|\ud83d\udca7|\ud83d\udca8|\ud83d\udca9|\ud83d\udcaa|\ud83d\udcab|\ud83d\udcac|\ud83d\udcae|\ud83d\udcaf|\ud83d\udcb0|\ud83d\udcb1|\ud83d\udcb2|\ud83d\udcb3|\ud83d\udcb4|\ud83d\udcb5|\ud83d\udcb8|\ud83d\udcb9|\ud83d\udcba|\ud83d\udcbb|\ud83d\udcbc|\ud83d\udcbd|\ud83d\udcbe|\ud83d\udcbf|\ud83d\udcc0|\ud83d\udcc1|\ud83d\udcc2|\ud83d\udcc3|\ud83d\udcc4|\ud83d\udcc5|\ud83d\udcc6|\ud83d\udcc7|\ud83d\udcc8|\ud83d\udcc9|\ud83d\udcca|\ud83d\udccb|\ud83d\udccc|\ud83d\udccd|\ud83d\udcce|\ud83d\udccf|\ud83d\udcd0|\ud83d\udcd1|\ud83d\udcd2|\ud83d\udcd3|\ud83d\udcd4|\ud83d\udcd5|\ud83d\udcd6|\ud83d\udcd7|\ud83d\udcd8|\ud83d\udcd9|\ud83d\udcda|\ud83d\udcdb|\ud83d\udcdc|\ud83d\udcdd|\ud83d\udcde|\ud83d\udcdf|\ud83d\udce0|\ud83d\udce1|\ud83d\udce2|\ud83d\udce3|\ud83d\udce4|\ud83d\udce5|\ud83d\udce6|\ud83d\udce7|\ud83d\udce8|\ud83d\udce9|\ud83d\udcea|\ud83d\udceb|\ud83d\udcee|\ud83d\udcf0|\ud83d\udcf1|\ud83d\udcf2|\ud83d\udcf3|\ud83d\udcf4|\ud83d\udcf6|\ud83d\udcf7|\ud83d\udcf9|\ud83d\udcfa|\ud83d\udcfb|\ud83d\udcfc|\ud83d\udd03|\ud83d\udd0a|\ud83d\udd0b|\ud83d\udd0c|\ud83d\udd0d|\ud83d\udd0e|\ud83d\udd0f|\ud83d\udd10|\ud83d\udd11|\ud83d\udd12|\ud83d\udd13|\ud83d\udd14|\ud83d\udd16|\ud83d\udd17|\ud83d\udd18|\ud83d\udd19|\ud83d\udd1a|\ud83d\udd1b|\ud83d\udd1c|\ud83d\udd1d|\ud83d\udd1e|\ud83d\udd1f|\ud83d\udd20|\ud83d\udd21|\ud83d\udd22|\ud83d\udd23|\ud83d\udd24|\ud83d\udd25|\ud83d\udd26|\ud83d\udcf8|\ud83d\udcfd|\ud83d\udcff|\ud83d\udd49|\ud83d\udd4a|\ud83d\udd4b|\ud83d\udd4c|\ud83d\udd4d|\ud83d\udd4e|\ud83d\udd6f|\ud83d\udd70|\ud83d\udd73|\ud83d\udd74|\ud83d\udd75|\ud83d\udd76|\ud83d\udd77|\ud83d\udd78|\ud83d\udd79|\ud83d\udd87|\ud83d\udd8a|\ud83d\udd8b|\ud83d\udd8c|\ud83d\udd8d|\ud83d\udd27|\ud83d\udd28|\ud83d\udd29|\ud83d\udd2a|\ud83d\udd2b|\ud83d\udd90|\ud83d\udd2e|\ud83d\udd2f|\ud83d\udd30|\ud83d\udd31|\ud83d\udd32|\ud83d\udd95|\ud83d\udd33|\ud83d\udd34|\ud83d\udd35|\ud83d\udd36|\ud83d\udd37|\ud83d\udd96|\ud83d\udda5|\ud83d\udda8|\ud83d\uddb1|\ud83d\uddb2|\ud83d\uddbc|\ud83d\uddc2|\ud83d\uddc3|\ud83d\uddc4|\ud83d\uddd1|\ud83d\uddd2|\ud83d\uddd3|\ud83d\udddc|\ud83d\udddd|\ud83d\uddde|\ud83d\udde1|\ud83d\udde3|\ud83d\udde8|\ud83d\uddef|\ud83d\uddf3|\ud83d\uddfa|\ud83d\ude41|\ud83d\ude42|\ud83d\ude43|\ud83d\ude44|\ud83d\udd38|\ud83d\udd39|\ud83d\udd3a|\ud83d\udd3b|\ud83d\udd3c|\ud83d\udd3d|\ud83d\udd50|\ud83d\udd51|\ud83d\udd52|\ud83d\udd53|\ud83d\udd54|\ue50a|\u2797|\u2796|\u2795|\u2763|\u2755|\u2754|\u2753|\u2728|\u2721|\u2705|\u2699|\u2697|\u2696|\u2694|\u2692|\u2639|\u2638|\u2626|\u2623|\u2622|\u2620|\u2618|\u2604|\u2603|\u2602|\u2328|\u274c|\u274e|\u271d|\u270a|\u270b|\u270d|\u269b|\u269c|\u262f|\u262a|\u262e|\u27b0|\u27bf|\u26f9|\u26ce|\u26b0|\u26b1|\u26c8|\u26cf|\u26d1|\u26d3|\u26e9|\u26f0|\u26f1|\u26f4|\u26f7|\u26f8|\u23f1|\u23e9|\u23ec|\u23f0|\u23ed|\u23ee|\u23f3|\u23ea|\u23fa|\u23f9|\u23f8|\u23f2|\u23eb|\u23ef|\u00a9|\u00ae)|(?:(?:\ud83c\udc04|\ud83c\udd70|\ud83c\udd71|\ud83c\udd7e|\ud83c\udd7f|\ud83c\ude02|\ud83c\ude1a|\ud83c\ude2f|\ud83c\ude37|\u3299|\u3297|\u3030|\u2935|\u2934|\u2764|\u2757|\u2747|\u2744|\u2734|\u2733|\u2716|\u2714|\u2712|\u2709|\u2708|\u2702|\u2693|\u2668|\u2666|\u2665|\u2663|\u2660|\u2653|\u2652|\u2651|\u2650|\u2649|\u2648|\u2615|\u2614|\u2611|\u2601|\u2600|\u2199|\u2198|\u2197|\u2196|\u2195|\u2194|\u2139|\u2122|\u2049|\u303d|\u270f|\u270c|\u267f|\u267b|\u264b|\u264a|\u264f|\u264e|\u264d|\u264c|\u263a|\u261d|\u260e|\u231a|\u231b|\u203c|\u27a1|\u26c5|\u26a0|\u26a1|\u26d4|\u26ea|\u26f2|\u26aa|\u26f5|\u26fa|\u26fd|\u26ab|\u26bd|\u26be|\u26c4|\u26f3|\u25fc|\u25fb|\u25fe|\u25c0|\u25b6|\u25ab|\u25aa|\u25fd|\u24c2|\u21a9|\u21aa|\u2b05|\u2b55|\u2b50|\u2b06|\u2b07|\u2b1c|\u2b1b)([\uFE0E\uFE0F]?)))/g,s=/[&<>'"]/g,t=/IFRAME|NOFRAMES|NOSCRIPT|SCRIPT|SELECT|STYLE|TEXTAREA|[a-z]/,u=String.fromCharCode;return p}();
\ No newline at end of file
*/
function browserSupportsEmoji( type ) {
var canvas = document.createElement( 'canvas' ),
- context = canvas.getContext && canvas.getContext( '2d' );
+ context = canvas.getContext && canvas.getContext( '2d' ),
+ stringFromCharCode = String.fromCharCode,
+ tone;
if ( ! context || ! context.fillText ) {
return false;
* The first two will encode to small images (1-2KB data URLs), the third will encode
* to a larger image (4-5KB data URL).
*/
- context.fillText( String.fromCharCode( 55356, 56806, 55356, 56826 ), 0, 0 );
+ context.fillText( stringFromCharCode( 55356, 56806, 55356, 56826 ), 0, 0 );
return canvas.toDataURL().length > 3000;
+ } else if ( 'diversity' === type ) {
+ /*
+ * This tests if the browser supports the Emoji Diversity specification, by rendering an
+ * emoji with no skin tone specified (in this case, Santa). It then adds a skin tone, and
+ * compares if the emoji rendering has changed.
+ */
+ context.fillText( stringFromCharCode( 55356, 57221 ), 0, 0 );
+ tone = context.getImageData( 16, 16, 1, 1 ).data.toString();
+ context.fillText( stringFromCharCode( 55356, 57221, 55356, 57343 ), 0, 0 );
+ // Chrome has issues comparing arrays, so we compare it as a string, instead.
+ return tone !== context.getImageData( 16, 16, 1, 1 ).data.toString();
} else {
if ( 'simple' === type ) {
/*
* center pixel. In browsers that don't support emoji, the character will be rendered
* as an empty square, so the center pixel will be blank.
*/
- context.fillText( String.fromCharCode( 55357, 56835 ), 0, 0 );
+ context.fillText( stringFromCharCode( 55357, 56835 ), 0, 0 );
} else {
/*
* To check for Unicode 8 support, let's try rendering the most important advancement
* that the Unicode Consortium have made in years: the burrito.
*/
- context.fillText( String.fromCharCode( 55356, 57135 ), 0, 0 );
+ context.fillText( stringFromCharCode( 55356, 57135 ), 0, 0 );
}
return context.getImageData( 16, 16, 1, 1 ).data[0] !== 0;
}
}
settings.supports = {
- simple: browserSupportsEmoji( 'simple' ),
- flag: browserSupportsEmoji( 'flag' ),
- unicode8: browserSupportsEmoji( 'unicode8' )
+ simple: browserSupportsEmoji( 'simple' ),
+ flag: browserSupportsEmoji( 'flag' ),
+ unicode8: browserSupportsEmoji( 'unicode8' ),
+ diversity: browserSupportsEmoji( 'diversity' )
};
settings.DOMReady = false;
settings.DOMReady = true;
};
- if ( ! settings.supports.simple || ! settings.supports.flag || ! settings.supports.unicode8 ) {
+ if ( ! settings.supports.simple || ! settings.supports.flag || ! settings.supports.unicode8 || ! settings.supports.diversity ) {
ready = function() {
settings.readyCallback();
};
-!function(a,b,c){function d(a){var c=b.createElement("canvas"),d=c.getContext&&c.getContext("2d");return d&&d.fillText?(d.textBaseline="top",d.font="600 32px Arial","flag"===a?(d.fillText(String.fromCharCode(55356,56806,55356,56826),0,0),c.toDataURL().length>3e3):("simple"===a?d.fillText(String.fromCharCode(55357,56835),0,0):d.fillText(String.fromCharCode(55356,57135),0,0),0!==d.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g;c.supports={simple:d("simple"),flag:d("flag"),unicode8:d("unicode8")},c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.simple&&c.supports.flag&&c.supports.unicode8||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
\ No newline at end of file
+!function(a,b,c){function d(a){var c,d=b.createElement("canvas"),e=d.getContext&&d.getContext("2d"),f=String.fromCharCode;return e&&e.fillText?(e.textBaseline="top",e.font="600 32px Arial","flag"===a?(e.fillText(f(55356,56806,55356,56826),0,0),d.toDataURL().length>3e3):"diversity"===a?(e.fillText(f(55356,57221),0,0),c=e.getImageData(16,16,1,1).data.toString(),e.fillText(f(55356,57221,55356,57343),0,0),c!==e.getImageData(16,16,1,1).data.toString()):("simple"===a?e.fillText(f(55357,56835),0,0):e.fillText(f(55356,57135),0,0),0!==e.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g;c.supports={simple:d("simple"),flag:d("flag"),unicode8:d("unicode8"),diversity:d("diversity")},c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.simple&&c.supports.flag&&c.supports.unicode8&&c.supports.diversity||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
\ No newline at end of file
// Source: wp-includes/js/twemoji.min.js
-var twemoji=function(){"use strict";function a(a){return document.createTextNode(a)}function b(a){return a.replace(s,h)}function c(a,b){return"".concat(b.base,b.size,"/",a,b.ext)}function d(a,b){for(var c,e,f=a.childNodes,g=f.length;g--;)c=f[g],e=c.nodeType,3===e?b.push(c):1!==e||t.test(c.nodeName)||d(c,b);return b}function e(a,b){return o("\ufe0f"===b?a.slice(0,-1):3===a.length&&"\ufe0f"===a.charAt(1)?a.charAt(0)+a.charAt(2):a)}function f(b,c){for(var f,g,h,i,j,k,l,m,n,o,p,q,s,t,u=d(b,[]),v=u.length;v--;){for(h=!1,i=document.createDocumentFragment(),j=u[v],k=j.nodeValue,m=0;l=r.exec(k);){if(n=l.index,n!==m&&i.appendChild(a(k.slice(m,n))),p=l[0],q=l[1],s=l[2],m=n+p.length,"\ufe0e"!==s&&(t=c.callback(e(q,s),c,s))){o=new Image,o.onerror=c.onerror,o.setAttribute("draggable","false"),f=c.attributes(q,s);for(g in f)f.hasOwnProperty(g)&&0!==g.indexOf("on")&&!o.hasAttribute(g)&&o.setAttribute(g,f[g]);o.className=c.className,o.alt=p,o.src=t,h=!0,i.appendChild(o)}o||i.appendChild(a(p)),o=null}h&&(m<k.length&&i.appendChild(a(k.slice(m))),j.parentNode.replaceChild(i,j))}return b}function g(a,c){return m(a,function(a,d,f){var g,h,i,j=a;if("\ufe0e"!==f&&(i=c.callback(e(d,f),c,f))){j="<img ".concat('class="',c.className,'" ','draggable="false" ','alt="',a,'"',' src="',i,'"'),g=c.attributes(d,f);for(h in g)g.hasOwnProperty(h)&&0!==h.indexOf("on")&&-1===j.indexOf(" "+h+"=")&&(j=j.concat(" ",h,'="',b(g[h]),'"'));j=j.concat(">")}return j})}function h(a){return q[a]}function i(){return null}function j(a){return"number"==typeof a?a+"x"+a:a}function k(a){var b="string"==typeof a?parseInt(a,16):a;return 65536>b?u(b):(b-=65536,u(55296+(b>>10),56320+(1023&b)))}function l(a,b){return b&&"function"!=typeof b||(b={callback:b}),("string"==typeof a?g:f)(a,{callback:b.callback||c,attributes:"function"==typeof b.attributes?b.attributes:i,base:"string"==typeof b.base?b.base:p.base,ext:b.ext||p.ext,size:b.folder||j(b.size||p.size),className:b.className||p.className,onerror:b.onerror||p.onerror})}function m(a,b){return String(a).replace(r,b)}function n(a){r.lastIndex=0;var b=r.test(a);return r.lastIndex=0,b}function o(a,b){for(var c=[],d=0,e=0,f=0;f<a.length;)d=a.charCodeAt(f++),e?(c.push((65536+(e-55296<<10)+(d-56320)).toString(16)),e=0):d>=55296&&56319>=d?e=d:c.push(d.toString(16));return c.join(b||"-")}var p={base:("https:"===location.protocol?"https:":"http:")+"//twemoji.maxcdn.com/",ext:".png",size:"36x36",className:"emoji",convert:{fromCodePoint:k,toCodePoint:o},onerror:function(){this.parentNode&&this.parentNode.replaceChild(a(this.alt),this)},parse:l,replace:m,test:n},q={"&":"&","<":"<",">":">","'":"'",'"':"""},r=/((?:\u0039\ufe0f\u20e3|\u0038\ufe0f\u20e3|\u0037\ufe0f\u20e3|\u0036\ufe0f\u20e3|\u0035\ufe0f\u20e3|\u0034\ufe0f\u20e3|\u0033\ufe0f\u20e3|\u0032\ufe0f\u20e3|\u0031\ufe0f\u20e3|\u0030\ufe0f\u20e3|\u0023\ufe0f\u20e3|\ud83c\uddea\ud83c\uddf8|\ud83c\uddeb\ud83c\uddf7|\ud83c\uddec\ud83c\udde7|\ud83c\uddee\ud83c\uddf9|\ud83c\uddef\ud83c\uddf5|\ud83c\uddf0\ud83c\uddf7|\ud83c\uddf7\ud83c\uddfa|\ud83c\uddfa\ud83c\uddf8|\ud83c\uddea\ud83c\udde8|\ud83c\udde9\ud83c\uddff|\ud83c\uddf9\ud83c\uddf7|\ud83c\udde8\ud83c\uddf7|\ud83c\uddfa\ud83c\uddfe|\ud83c\udde8\ud83c\udde6|\ud83c\uddf8\ud83c\uddec|\ud83c\udde7\ud83c\uddf7|\ud83c\uddf8\ud83c\udde6|\ud83c\udde6\ud83c\uddfa|\ud83c\uddf5\ud83c\uddf9|\ud83c\uddf2\ud83c\uddfd|\ud83c\uddee\ud83c\uddf7|\ud83c\uddee\ud83c\uddf3|\ud83c\udded\ud83c\uddf7|\ud83c\udde8\ud83c\uddf3|\ud83c\udde9\ud83c\uddea|\ud83c\udde6\ud83c\uddf7|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\ud83d\ude1b|\ud83d\ude19|\ud83d\ude17|\ud83d\ude15|\ud83d\ude11|\ud83d\ude10|\ud83d\ude0e|\ud83d\ude08|\ud83d\ude07|\ud83d\ude00|\ud83d\udd67|\ud83d\udd66|\ud83d\udd65|\ud83d\udd64|\ud83d\udd63|\ud83d\udd62|\ud83d\udd61|\ud83d\udd60|\ud83d\udd5f|\ud83d\udd5e|\ud83d\udd5d|\ud83d\udd5c|\ud83d\udd2d|\ud83d\udd2c|\ud83d\udd15|\ud83d\udd09|\ud83d\udd08|\ud83d\udd07|\ud83d\udd06|\ud83d\udd05|\ud83d\udd04|\ud83d\udd02|\ud83d\udd01|\ud83d\udd00|\ud83d\udcf5|\ud83d\udcef|\ud83d\udced|\ud83d\udcec|\ud83d\udcb7|\ud83d\udcb6|\ud83d\udcad|\ud83d\udc6d|\ud83d\udc6c|\ud83d\udc65|\ud83d\udc2a|\ud83d\udc16|\ud83d\udc15|\ud83d\udc13|\ud83d\udc10|\ud83d\udc0f|\ud83d\udc0b|\ud83d\udc0a|\ud83d\udc09|\ud83d\udc08|\ud83d\udc07|\ud83d\udc06|\ud83d\udc05|\ud83d\udc04|\ud83d\udc03|\ud83d\udc02|\ud83d\udc01|\ud83d\udc00|\ud83c\udfff|\ud83c\udffe|\ud83c\udffd|\ud83c\udffc|\ud83c\udffb|\ud83c\udfe4|\ud83c\udfd2|\ud83c\udfd0|\ud83c\udfcf|\ud83c\udccf|\ud83c\udd8e|\ud83c\udd91|\ud83c\udd92|\ud83c\udd93|\ud83c\udd94|\ud83c\udd95|\ud83c\udd96|\ud83c\udd97|\ud83c\udd98|\ud83c\udd99|\ud83c\udd9a|\ud83d\udc94|\ud83e\udd18|\ud83e\udd16|\ud83e\udd15|\ud83d\udecf|\ud83d\udec5|\ud83d\udec4|\ud83d\udec3|\ud83d\udec2|\ud83d\udec1|\ud83c\ude01|\ud83c\ude32|\ud83c\ude33|\ud83c\ude34|\ud83c\ude35|\ud83c\ude36|\ud83c\ude38|\ud83c\ude39|\ud83c\ude3a|\ud83c\ude50|\ud83c\ude51|\ud83c\udf00|\ud83c\udf01|\ud83c\udf02|\ud83c\udf03|\ud83c\udf04|\ud83c\udf05|\ud83c\udf06|\ud83c\udf07|\ud83c\udf08|\ud83c\udf09|\ud83c\udf0a|\ud83c\udf0b|\ud83c\udf0c|\ud83c\udf0f|\ud83c\udf11|\ud83c\udf13|\ud83c\udf14|\ud83c\udf15|\ud83c\udf19|\ud83c\udf1b|\ud83c\udf1f|\ud83c\udf20|\ud83c\udf30|\ud83c\udf31|\ud83c\udf34|\ud83c\udf35|\ud83c\udf37|\ud83c\udf38|\ud83c\udf39|\ud83c\udf3a|\ud83c\udf3b|\ud83c\udf3c|\ud83c\udf3d|\ud83c\udf3e|\ud83c\udf3f|\ud83c\udf40|\ud83c\udf41|\ud83c\udf42|\ud83c\udf43|\ud83c\udf44|\ud83c\udf45|\ud83c\udf46|\ud83c\udf47|\ud83c\udf48|\ud83c\udf49|\ud83c\udf4a|\ud83c\udf4c|\ud83c\udf4d|\ud83c\udf4e|\ud83c\udf4f|\ud83c\udf51|\ud83c\udf52|\ud83c\udf53|\ud83c\udf54|\ud83c\udf55|\ud83c\udf56|\ud83c\udf57|\ud83c\udf58|\ud83c\udf59|\ud83c\udf5a|\ud83c\udf5b|\ud83c\udf5c|\ud83c\udf5d|\ud83c\udf5e|\ud83c\udf5f|\ud83c\udf60|\ud83c\udf61|\ud83c\udf62|\ud83c\udf63|\ud83c\udf64|\ud83c\udf65|\ud83c\udf66|\ud83c\udf67|\ud83c\udf68|\ud83c\udf69|\ud83c\udf6a|\ud83c\udf6b|\ud83c\udf6c|\ud83c\udf6d|\ud83c\udf6e|\ud83c\udf6f|\ud83c\udf70|\ud83c\udf71|\ud83c\udf72|\ud83c\udf73|\ud83c\udf74|\ud83c\udf75|\ud83c\udf76|\ud83c\udf77|\ud83c\udf78|\ud83c\udf79|\ud83c\udf7a|\ud83c\udf7b|\ud83c\udf80|\ud83c\udf81|\ud83c\udf82|\ud83c\udf83|\ud83c\udf84|\ud83c\udf85|\ud83c\udf86|\ud83c\udf87|\ud83c\udf88|\ud83c\udf89|\ud83c\udf8a|\ud83c\udf8b|\ud83c\udf8c|\ud83c\udf8d|\ud83c\udf8e|\ud83c\udf8f|\ud83c\udf90|\ud83c\udf91|\ud83c\udf92|\ud83c\udf93|\ud83c\udfa0|\ud83c\udfa1|\ud83c\udfa2|\ud83c\udfa3|\ud83c\udfa4|\ud83c\udfa5|\ud83c\udfa6|\ud83c\udfa7|\ud83c\udfa8|\ud83c\udfa9|\ud83c\udfaa|\ud83c\udfab|\ud83c\udfac|\ud83c\udfad|\ud83c\udfae|\ud83c\udfaf|\ud83c\udfb0|\ud83c\udfb1|\ud83c\udfb2|\ud83c\udfb3|\ud83c\udfb4|\ud83c\udfb5|\ud83c\udfb6|\ud83c\udfb7|\ud83c\udfb8|\ud83c\udfb9|\ud83c\udfba|\ud83c\udfbb|\ud83c\udfbc|\ud83c\udfbd|\ud83c\udfbe|\ud83c\udfbf|\ud83c\udfc0|\ud83c\udfc1|\ud83c\udfc2|\ud83c\udfc3|\ud83c\udfc4|\ud83c\udfc6|\ud83c\udfc8|\ud83c\udfca|\ud83c\udfe0|\ud83c\udfe1|\ud83c\udfe2|\ud83c\udfe3|\ud83c\udfe5|\ud83c\udfe6|\ud83c\udfe7|\ud83c\udfe8|\ud83c\udfe9|\ud83c\udfea|\ud83c\udfeb|\ud83c\udfec|\ud83c\udfed|\ud83c\udfee|\ud83c\udfef|\ud83c\udff0|\ud83d\udc0c|\ud83d\udc0d|\ud83d\udc0e|\ud83d\udc11|\ud83d\udc12|\ud83d\udc14|\ud83d\udc17|\ud83d\udc18|\ud83d\udc19|\ud83d\udc1a|\ud83d\udc1b|\ud83d\udc1c|\ud83d\udc1d|\ud83d\udc1e|\ud83d\udc1f|\ud83d\udc20|\ud83d\udc21|\ud83d\udc22|\ud83d\udc23|\ud83d\udc24|\ud83d\udc25|\ud83d\udc26|\ud83d\udc27|\ud83d\udc28|\ud83d\udc29|\ud83d\udc2b|\ud83d\udc2c|\ud83d\udc2d|\ud83d\udc2e|\ud83d\udc2f|\ud83d\udc30|\ud83d\udc31|\ud83d\udc32|\ud83d\udc33|\ud83d\udc34|\ud83d\udc35|\ud83d\udc36|\ud83d\udc37|\ud83d\udc38|\ud83d\udc39|\ud83d\udc3a|\ud83d\udc3b|\ud83d\udc3c|\ud83d\udc3d|\ud83d\udc3e|\ud83d\udc40|\ud83d\udc42|\ud83d\udc43|\ud83d\udc44|\ud83d\udc45|\ud83d\udc46|\ud83d\udc47|\ud83d\udc48|\ud83d\udc49|\ud83d\udc4a|\ud83d\udc4b|\ud83d\udc4c|\ud83d\udc4d|\ud83d\udc4e|\ud83d\udc4f|\ud83d\udc50|\ud83d\udc51|\ud83d\udc52|\ud83d\udc53|\ud83d\udc54|\ud83d\udc55|\ud83d\udc56|\ud83d\udc57|\ud83d\udc58|\ud83d\udc59|\ud83d\udc5a|\ud83d\udc5b|\ud83d\udc5c|\ud83d\udc5d|\ud83d\udc5e|\ud83d\udc5f|\ud83d\udc60|\ud83d\udc61|\ud83d\udc62|\ud83d\udc63|\ud83d\udc64|\ud83d\udc66|\ud83d\udc67|\ud83d\udc68|\ud83d\udc69|\ud83d\udc6a|\ud83d\udc6b|\ud83d\udc6e|\ud83d\udc6f|\ud83d\udc70|\ud83d\udc71|\ud83d\udc72|\ud83d\udc73|\ud83d\udc74|\ud83d\udc75|\ud83d\udc76|\ud83d\udc77|\ud83d\udc78|\ud83d\udc79|\ud83d\udc7a|\ud83d\udc7b|\ud83d\udc7c|\ud83d\udc7d|\ud83d\udc7e|\ud83d\udc7f|\ud83d\udc80|\ud83d\udc81|\ud83d\udc82|\ud83d\udc83|\ud83d\udc84|\ud83d\udc85|\ud83d\udc86|\ud83d\udc87|\ud83d\udc88|\ud83d\udc89|\ud83d\udc8a|\ud83d\udc8b|\ud83d\udc8c|\ud83d\udc8d|\ud83d\udc8e|\ud83d\udc8f|\ud83d\udc90|\ud83d\udc91|\ud83d\udc92|\ud83d\udc93|\ud83d\udebf|\ud83d\udc95|\ud83d\udc96|\ud83d\udc97|\ud83d\udc98|\ud83d\udc99|\ud83d\udc9a|\ud83d\udc9b|\ud83d\udc9c|\ud83d\udc9d|\ud83d\udc9e|\ud83d\udc9f|\ud83d\udca0|\ud83d\udca1|\ud83d\udca2|\ud83d\udca3|\ud83d\udca4|\ud83d\udca5|\ud83d\udca6|\ud83d\udca7|\ud83d\udca8|\ud83d\udca9|\ud83d\udcaa|\ud83d\udcab|\ud83d\udcac|\ud83d\udcae|\ud83d\udcaf|\ud83d\udcb0|\ud83d\udcb1|\ud83d\udcb2|\ud83d\udcb3|\ud83d\udcb4|\ud83d\udcb5|\ud83d\udcb8|\ud83d\udcb9|\ud83d\udcba|\ud83d\udcbb|\ud83d\udcbc|\ud83d\udcbd|\ud83d\udcbe|\ud83d\udcbf|\ud83d\udcc0|\ud83d\udcc1|\ud83d\udcc2|\ud83d\udcc3|\ud83d\udcc4|\ud83d\udcc5|\ud83d\udcc6|\ud83d\udcc7|\ud83d\udcc8|\ud83d\udcc9|\ud83d\udcca|\ud83d\udccb|\ud83d\udccc|\ud83d\udccd|\ud83d\udcce|\ud83d\udccf|\ud83d\udcd0|\ud83d\udcd1|\ud83d\udcd2|\ud83d\udcd3|\ud83d\udcd4|\ud83d\udcd5|\ud83d\udcd6|\ud83d\udcd7|\ud83d\udcd8|\ud83d\udcd9|\ud83d\udcda|\ud83d\udcdb|\ud83d\udcdc|\ud83d\udcdd|\ud83d\udcde|\ud83d\udcdf|\ud83d\udce0|\ud83d\udce1|\ud83d\udce2|\ud83d\udce3|\ud83d\udce4|\ud83d\udce5|\ud83d\udce6|\ud83d\udce7|\ud83d\udce8|\ud83d\udce9|\ud83d\udcea|\ud83d\udceb|\ud83d\udcee|\ud83d\udcf0|\ud83d\udcf1|\ud83d\udcf2|\ud83d\udcf3|\ud83d\udcf4|\ud83d\udcf6|\ud83d\udcf7|\ud83d\udcf9|\ud83d\udcfa|\ud83d\udcfb|\ud83d\udcfc|\ud83d\udd03|\ud83d\udd0a|\ud83d\udd0b|\ud83d\udd0c|\ud83d\udd0d|\ud83d\udd0e|\ud83d\udd0f|\ud83d\udd10|\ud83d\udd11|\ud83d\udd12|\ud83d\udd13|\ud83d\udd14|\ud83d\udd16|\ud83d\udd17|\ud83d\udd18|\ud83d\udd19|\ud83d\udd1a|\ud83d\udd1b|\ud83d\udd1c|\ud83d\udd1d|\ud83d\udd1e|\ud83d\udd1f|\ud83d\udd20|\ud83d\udd21|\ud83d\udd22|\ud83d\udd23|\ud83d\udd24|\ud83d\udd25|\ud83d\udd26|\ud83d\udd27|\ud83d\udd28|\ud83d\udd29|\ud83d\udd2a|\ud83d\udd2b|\ud83d\udd2e|\ud83d\udd2f|\ud83d\udd30|\ud83d\udd31|\ud83d\udd32|\ud83d\udd33|\ud83d\udd34|\ud83d\udd35|\ud83d\udd36|\ud83d\udd37|\ud83d\udd38|\ud83d\udd39|\ud83d\udd3a|\ud83d\udd3b|\ud83d\udd3c|\ud83d\udd3d|\ud83d\udd50|\ud83d\udd51|\ud83d\udd52|\ud83d\udd53|\ud83d\udd54|\ud83d\udd55|\ud83d\udd56|\ud83d\udd57|\ud83d\udd58|\ud83d\udd59|\ud83d\udd5a|\ud83d\udd5b|\ud83d\uddfb|\ud83d\uddfc|\ud83d\uddfd|\ud83d\uddfe|\ud83d\uddff|\ud83d\ude01|\ud83d\ude02|\ud83d\ude03|\ud83d\ude04|\ud83d\ude05|\ud83d\ude06|\ud83d\ude09|\ud83d\ude0a|\ud83d\ude0b|\ud83d\ude0c|\ud83d\ude0d|\ud83d\ude0f|\ud83d\ude12|\ud83d\ude13|\ud83d\ude14|\ud83d\ude16|\ud83d\ude18|\ud83d\ude1a|\ud83d\ude1c|\ud83d\ude1d|\ud83d\ude1e|\ud83d\ude20|\ud83d\ude21|\ud83d\ude22|\ud83d\ude23|\ud83d\ude24|\ud83d\ude25|\ud83d\ude28|\ud83d\ude29|\ud83d\ude2a|\ud83d\ude2b|\ud83d\ude2d|\ud83d\ude30|\ud83d\ude31|\ud83d\ude32|\ud83d\ude33|\ud83d\ude35|\ud83d\ude37|\ud83d\ude38|\ud83d\ude39|\ud83d\ude3a|\ud83d\ude3b|\ud83d\ude3c|\ud83d\ude3d|\ud83d\ude3e|\ud83d\ude3f|\ud83d\ude40|\ud83d\ude45|\ud83d\ude46|\ud83d\ude47|\ud83d\ude48|\ud83d\ude49|\ud83d\ude4a|\ud83d\ude4b|\ud83d\ude4c|\ud83d\ude4d|\ud83d\ude4e|\ud83d\ude4f|\ud83d\ude80|\ud83d\ude83|\ud83d\ude84|\ud83d\ude85|\ud83d\ude87|\ud83d\ude89|\ud83d\ude8c|\ud83d\ude8f|\ud83d\ude91|\ud83d\ude92|\ud83d\ude93|\ud83d\ude95|\ud83d\ude97|\ud83d\ude99|\ud83d\ude9a|\ud83d\udea2|\ud83d\udea4|\ud83d\udea5|\ud83d\udea7|\ud83d\udea8|\ud83d\udea9|\ud83d\udeaa|\ud83d\udeab|\ud83d\udeac|\ud83d\udead|\ud83d\udeb2|\ud83d\udeb6|\ud83d\udeb9|\ud83d\udeba|\ud83d\udebb|\ud83d\udebc|\ud83d\udebd|\ud83d\udebe|\ud83d\udec0|\ud83c\udfce|\ud83d\udeb8|\ud83d\udeb7|\ud83d\udeb5|\ud83d\udeb4|\ud83d\udeb3|\ud83d\udeb1|\ud83d\udeb0|\ud83d\udeaf|\ud83d\udeae|\ud83d\udea6|\ud83d\udea3|\ud83d\udea1|\ud83d\udea0|\ud83d\ude9f|\ud83d\ude9e|\ud83d\ude9d|\ud83d\ude9c|\ud83d\ude9b|\ud83d\ude98|\ud83d\ude96|\ud83d\ude94|\ud83d\ude90|\ud83d\ude8e|\ud83d\ude8d|\ud83c\udde6|\ud83d\ude8b|\ud83c\udde7|\ud83d\ude8a|\ud83d\ude88|\ud83c\udde8|\ud83d\ude86|\ud83c\udde9|\ud83d\ude82|\ud83c\uddea|\ud83c\uddeb|\ud83c\uddec|\ud83d\ude81|\ud83c\udded|\ud83d\ude36|\ud83d\ude34|\ud83c\uddee|\ud83c\uddef|\ud83c\uddf0|\ud83c\uddf1|\ud83d\ude2f|\ud83c\uddf2|\ud83c\uddf3|\ud83c\uddf4|\ud83d\ude2e|\ud83c\uddf5|\ud83c\uddf6|\ud83c\uddf7|\ud83d\ude2c|\ud83d\ude27|\ud83c\uddf8|\ud83d\ude26|\ud83c\uddf9|\ud83d\ude1f|\ud83c\uddfa|\ud83c\uddfb|\ud83c\uddfc|\ud83c\uddfd|\ud83c\uddfe|\ud83c\uddff|\ud83c\udf0d|\ud83c\udf0e|\ud83c\udf10|\ud83c\udf12|\ud83c\udf16|\ud83c\udf17|\ud83c\udf18|\ud83c\udf1a|\ud83c\udf1c|\ud83c\udf1d|\ud83c\udf1e|\ud83c\udf2d|\ud83c\udf2e|\ud83c\udf2f|\ud83c\udf32|\ud83c\udf33|\ud83c\udf4b|\ud83c\udf50|\ud83c\udf7c|\ud83c\udfc7|\ud83c\udfc9|\ue50a|\u2797|\u2796|\u2795|\u2755|\u2754|\u2753|\u2728|\u2705|\u274c|\u274e|\u270a|\u270b|\u269c|\u27bf|\u27b0|\u26f8|\u26ce|\u23e9|\u23ea|\u23eb|\u23ec|\u23f0|\u23f3|\u00a9|\u00ae|\ud800\udc00)|(?:(?:\ud83c\udc04|\ud83c\udd70|\ud83c\udd71|\ud83c\udd7e|\ud83c\udd7f|\ud83c\ude02|\ud83c\ude1a|\ud83c\ude2f|\ud83c\ude37|\u3299|\u3297|\u3030|\u2935|\u2934|\u2764|\u2757|\u2747|\u2744|\u2734|\u2733|\u2716|\u2714|\u2712|\u2709|\u2708|\u2702|\u2693|\u2668|\u2666|\u2665|\u2663|\u2660|\u2653|\u2652|\u2651|\u2650|\u2649|\u2648|\u2615|\u2614|\u2611|\u2601|\u2600|\u2199|\u2198|\u2197|\u2196|\u2195|\u2194|\u2139|\u2122|\u2049|\u303d|\u270c|\u270f|\u267f|\u267b|\u264e|\u264d|\u264c|\u264b|\u264f|\u264a|\u263a|\u261d|\u260e|\u231b|\u231a|\u203c|\u27a1|\u26fd|\u26f5|\u26fa|\u26a1|\u26aa|\u26ab|\u26bd|\u26be|\u26d4|\u26c4|\u26c5|\u26a0|\u26f2|\u26f3|\u26ea|\u25ab|\u25aa|\u25fd|\u25b6|\u25fb|\u25c0|\u25fe|\u25fc|\u24c2|\u21a9|\u21aa|\u2b07|\u2b05|\u2b06|\u2b50|\u2b55|\u2b1c|\u2b1b)([\uFE0E\uFE0F]?)))/g,s=/[&<>'"]/g,t=/IFRAME|NOFRAMES|NOSCRIPT|SCRIPT|SELECT|STYLE|TEXTAREA|[a-z]/,u=String.fromCharCode;return p}();
+var twemoji=function(){"use strict";function a(a){return document.createTextNode(a)}function b(a){return a.replace(s,h)}function c(a,b){return"".concat(b.base,b.size,"/",a,b.ext)}function d(a,b){for(var c,e,f=a.childNodes,g=f.length;g--;)c=f[g],e=c.nodeType,3===e?b.push(c):1!==e||t.test(c.nodeName)||d(c,b);return b}function e(a,b){return o("\ufe0f"===b?a.slice(0,-1):3===a.length&&"\ufe0f"===a.charAt(1)?a.charAt(0)+a.charAt(2):a)}function f(b,c){for(var f,g,h,i,j,k,l,m,n,o,p,q,s,t,u=d(b,[]),v=u.length;v--;){for(h=!1,i=document.createDocumentFragment(),j=u[v],k=j.nodeValue,m=0;l=r.exec(k);){if(n=l.index,n!==m&&i.appendChild(a(k.slice(m,n))),p=l[0],q=l[1],s=l[2],m=n+p.length,"\ufe0e"!==s&&(t=c.callback(e(q,s),c,s))){o=new Image,o.onerror=c.onerror,o.setAttribute("draggable","false"),f=c.attributes(q,s);for(g in f)f.hasOwnProperty(g)&&0!==g.indexOf("on")&&!o.hasAttribute(g)&&o.setAttribute(g,f[g]);o.className=c.className,o.alt=p,o.src=t,h=!0,i.appendChild(o)}o||i.appendChild(a(p)),o=null}h&&(m<k.length&&i.appendChild(a(k.slice(m))),j.parentNode.replaceChild(i,j))}return b}function g(a,c){return m(a,function(a,d,f){var g,h,i,j=a;if("\ufe0e"!==f&&(i=c.callback(e(d,f),c,f))){j="<img ".concat('class="',c.className,'" ','draggable="false" ','alt="',a,'"',' src="',i,'"'),g=c.attributes(d,f);for(h in g)g.hasOwnProperty(h)&&0!==h.indexOf("on")&&-1===j.indexOf(" "+h+"=")&&(j=j.concat(" ",h,'="',b(g[h]),'"'));j=j.concat(">")}return j})}function h(a){return q[a]}function i(){return null}function j(a){return"number"==typeof a?a+"x"+a:a}function k(a){var b="string"==typeof a?parseInt(a,16):a;return 65536>b?u(b):(b-=65536,u(55296+(b>>10),56320+(1023&b)))}function l(a,b){return b&&"function"!=typeof b||(b={callback:b}),("string"==typeof a?g:f)(a,{callback:b.callback||c,attributes:"function"==typeof b.attributes?b.attributes:i,base:"string"==typeof b.base?b.base:p.base,ext:b.ext||p.ext,size:b.folder||j(b.size||p.size),className:b.className||p.className,onerror:b.onerror||p.onerror})}function m(a,b){return String(a).replace(r,b)}function n(a){r.lastIndex=0;var b=r.test(a);return r.lastIndex=0,b}function o(a,b){for(var c=[],d=0,e=0,f=0;f<a.length;)d=a.charCodeAt(f++),e?(c.push((65536+(e-55296<<10)+(d-56320)).toString(16)),e=0):d>=55296&&56319>=d?e=d:c.push(d.toString(16));return c.join(b||"-")}var p={base:("https:"===location.protocol?"https:":"http:")+"//twemoji.maxcdn.com/",ext:".png",size:"36x36",className:"emoji",convert:{fromCodePoint:k,toCodePoint:o},onerror:function(){this.parentNode&&this.parentNode.replaceChild(a(this.alt),this)},parse:l,replace:m,test:n},q={"&":"&","<":"<",">":">","'":"'",'"':"""},r=/((?:\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67|\ud83c\uddf7\ud83c\uddf8|\ud83d\udd95\ud83c\udffd|\ud83d\udd95\ud83c\udffc|\ud83d\udd95\ud83c\udffb|\ud83d\udd90\ud83c\udfff|\ud83d\udd90\ud83c\udffe|\ud83d\udd90\ud83c\udffd|\ud83d\udd90\ud83c\udffc|\ud83d\udd90\ud83c\udffb|\ud83d\udcaa\ud83c\udfff|\ud83d\udcaa\ud83c\udffe|\ud83d\udcaa\ud83c\udffd|\ud83d\udcaa\ud83c\udffc|\ud83d\udcaa\ud83c\udffb|\ud83d\udc87\ud83c\udfff|\ud83d\udc87\ud83c\udffe|\ud83d\udc87\ud83c\udffd|\ud83d\udc87\ud83c\udffc|\ud83d\udc87\ud83c\udffb|\ud83d\udc86\ud83c\udfff|\ud83d\udc86\ud83c\udffe|\ud83d\udc86\ud83c\udffd|\ud83e\udd18\ud83c\udfff|\ud83e\udd18\ud83c\udffe|\ud83e\udd18\ud83c\udffd|\ud83e\udd18\ud83c\udffc|\ud83e\udd18\ud83c\udffb|\ud83d\udec0\ud83c\udfff|\ud83d\udec0\ud83c\udffe|\ud83d\udec0\ud83c\udffd|\ud83d\udec0\ud83c\udffc|\ud83d\udec0\ud83c\udffb|\ud83d\udeb6\ud83c\udfff|\ud83d\udeb6\ud83c\udffe|\ud83d\udeb6\ud83c\udffd|\ud83d\udeb6\ud83c\udffc|\ud83d\udeb6\ud83c\udffb|\ud83d\udeb5\ud83c\udfff|\ud83d\udeb5\ud83c\udffe|\ud83d\udeb5\ud83c\udffd|\ud83d\udeb5\ud83c\udffc|\ud83d\udeb5\ud83c\udffb|\ud83d\udeb4\ud83c\udfff|\ud83d\udeb4\ud83c\udffe|\ud83d\udeb4\ud83c\udffd|\ud83d\udeb4\ud83c\udffc|\ud83d\udeb4\ud83c\udffb|\ud83d\udea3\ud83c\udfff|\ud83d\udea3\ud83c\udffe|\ud83d\udea3\ud83c\udffd|\ud83d\udea3\ud83c\udffc|\ud83d\udea3\ud83c\udffb|\ud83d\ude4f\ud83c\udfff|\ud83d\ude4f\ud83c\udffe|\ud83d\ude4f\ud83c\udffd|\ud83d\ude4f\ud83c\udffc|\ud83d\ude4f\ud83c\udffb|\ud83d\ude4e\ud83c\udfff|\ud83d\ude4e\ud83c\udffe|\ud83d\ude4e\ud83c\udffd|\ud83d\ude4e\ud83c\udffc|\ud83d\ude4e\ud83c\udffb|\ud83d\ude4d\ud83c\udfff|\ud83d\ude4d\ud83c\udffe|\ud83d\ude4d\ud83c\udffd|\ud83d\ude4d\ud83c\udffc|\ud83d\ude4d\ud83c\udffb|\ud83d\ude4c\ud83c\udfff|\ud83d\ude4c\ud83c\udffe|\ud83d\ude4c\ud83c\udffd|\ud83d\ude4c\ud83c\udffc|\ud83d\ude4c\ud83c\udffb|\ud83d\ude4b\ud83c\udfff|\ud83d\ude4b\ud83c\udffe|\ud83d\ude4b\ud83c\udffd|\ud83d\ude4b\ud83c\udffc|\ud83d\ude4b\ud83c\udffb|\ud83d\ude47\ud83c\udfff|\ud83d\ude47\ud83c\udffe|\ud83c\udde8\ud83c\uddf3|\ud83c\udde9\ud83c\uddea|\ud83c\uddea\ud83c\uddf8|\ud83c\uddeb\ud83c\uddf7|\ud83c\uddec\ud83c\udde7|\ud83c\uddee\ud83c\uddf9|\ud83c\uddef\ud83c\uddf5|\ud83c\uddf0\ud83c\uddf7|\ud83c\uddf7\ud83c\uddfa|\ud83c\uddfa\ud83c\uddf8|\ud83d\udc86\ud83c\udffc|\ud83d\ude47\ud83c\udffd|\ud83d\ude47\ud83c\udffc|\ud83d\udc86\ud83c\udffb|\ud83d\udc85\ud83c\udfff|\ud83d\udc85\ud83c\udffe|\ud83d\udc85\ud83c\udffd|\ud83d\udc85\ud83c\udffc|\ud83d\udc85\ud83c\udffb|\ud83d\udc83\ud83c\udfff|\ud83d\udc83\ud83c\udffe|\ud83d\udc83\ud83c\udffd|\ud83d\udc83\ud83c\udffc|\ud83d\udc83\ud83c\udffb|\ud83d\udc82\ud83c\udfff|\ud83c\udde6\ud83c\udde8|\ud83c\udde6\ud83c\udde9|\ud83c\udde6\ud83c\uddea|\ud83c\udde6\ud83c\uddeb|\ud83c\udde6\ud83c\uddec|\ud83c\udde6\ud83c\uddee|\ud83c\udde6\ud83c\uddf1|\ud83c\udde6\ud83c\uddf2|\ud83c\udde6\ud83c\uddf4|\ud83c\udde6\ud83c\uddf6|\ud83c\udde6\ud83c\uddf7|\ud83c\udde6\ud83c\uddf8|\ud83c\udde6\ud83c\uddf9|\ud83c\udde6\ud83c\uddfa|\ud83c\udde6\ud83c\uddfc|\ud83c\udde6\ud83c\uddfd|\ud83c\udde6\ud83c\uddff|\ud83c\udde7\ud83c\udde6|\ud83c\udde7\ud83c\udde7|\ud83c\udde7\ud83c\udde9|\ud83c\udde7\ud83c\uddea|\ud83c\udde7\ud83c\uddeb|\ud83c\udde7\ud83c\uddec|\ud83c\udde7\ud83c\udded|\ud83c\udde7\ud83c\uddee|\ud83c\udde7\ud83c\uddef|\ud83c\udde7\ud83c\uddf1|\ud83c\udde7\ud83c\uddf2|\ud83c\udde7\ud83c\uddf3|\ud83c\udde7\ud83c\uddf4|\ud83c\udde7\ud83c\uddf6|\ud83c\udde7\ud83c\uddf7|\ud83c\udde7\ud83c\uddf8|\ud83c\udde7\ud83c\uddf9|\ud83c\udde7\ud83c\uddfb|\ud83c\udde7\ud83c\uddfc|\ud83c\udde7\ud83c\uddfe|\ud83c\udde7\ud83c\uddff|\ud83c\udde8\ud83c\udde6|\ud83c\udde8\ud83c\udde8|\ud83c\udde8\ud83c\udde9|\ud83c\udde8\ud83c\uddeb|\ud83c\udde8\ud83c\uddec|\ud83c\udde8\ud83c\udded|\ud83c\udde8\ud83c\uddee|\ud83c\udde8\ud83c\uddf0|\ud83c\udde8\ud83c\uddf1|\ud83c\udde8\ud83c\uddf2|\ud83c\udde8\ud83c\uddf4|\ud83c\udde8\ud83c\uddf5|\ud83c\udde8\ud83c\uddf7|\ud83c\udde8\ud83c\uddfa|\ud83c\udde8\ud83c\uddfb|\ud83c\udde8\ud83c\uddfc|\ud83c\udde8\ud83c\uddfd|\ud83c\udde8\ud83c\uddfe|\ud83c\udde8\ud83c\uddff|\ud83c\udde9\ud83c\uddec|\ud83c\udde9\ud83c\uddef|\ud83c\udde9\ud83c\uddf0|\ud83c\udde9\ud83c\uddf2|\ud83c\udde9\ud83c\uddf4|\ud83c\udde9\ud83c\uddff|\ud83c\uddea\ud83c\udde6|\ud83c\uddea\ud83c\udde8|\ud83c\uddea\ud83c\uddea|\ud83c\uddea\ud83c\uddec|\ud83c\uddea\ud83c\udded|\ud83c\uddea\ud83c\uddf7|\ud83c\uddea\ud83c\uddf9|\ud83c\uddea\ud83c\uddfa|\ud83c\uddeb\ud83c\uddee|\ud83c\uddeb\ud83c\uddef|\ud83c\uddeb\ud83c\uddf0|\ud83c\uddeb\ud83c\uddf2|\ud83c\uddeb\ud83c\uddf4|\ud83c\uddec\ud83c\udde6|\ud83c\uddec\ud83c\udde9|\ud83c\uddec\ud83c\uddea|\ud83c\uddec\ud83c\uddeb|\ud83c\uddec\ud83c\uddec|\ud83c\uddec\ud83c\udded|\ud83c\uddec\ud83c\uddee|\ud83c\uddec\ud83c\uddf1|\ud83c\uddec\ud83c\uddf2|\ud83c\uddec\ud83c\uddf3|\ud83c\uddec\ud83c\uddf5|\ud83c\uddec\ud83c\uddf6|\ud83c\uddec\ud83c\uddf7|\ud83c\uddec\ud83c\uddf8|\ud83c\uddec\ud83c\uddf9|\ud83c\uddec\ud83c\uddfa|\ud83c\uddec\ud83c\uddfc|\ud83c\uddec\ud83c\uddfe|\ud83c\udded\ud83c\uddf0|\ud83c\udded\ud83c\uddf2|\ud83c\udded\ud83c\uddf3|\ud83c\udded\ud83c\uddf7|\ud83c\udded\ud83c\uddf9|\ud83c\udded\ud83c\uddfa|\ud83c\uddee\ud83c\udde8|\ud83c\uddee\ud83c\udde9|\ud83c\uddee\ud83c\uddea|\ud83c\uddee\ud83c\uddf1|\ud83c\uddee\ud83c\uddf2|\ud83c\uddee\ud83c\uddf3|\ud83c\uddee\ud83c\uddf4|\ud83c\uddee\ud83c\uddf6|\ud83c\uddee\ud83c\uddf7|\ud83c\uddee\ud83c\uddf8|\ud83c\uddef\ud83c\uddea|\ud83c\uddef\ud83c\uddf2|\ud83c\uddef\ud83c\uddf4|\ud83c\uddf0\ud83c\uddea|\ud83c\uddf0\ud83c\uddec|\ud83c\uddf0\ud83c\udded|\ud83c\uddf0\ud83c\uddee|\ud83c\uddf0\ud83c\uddf2|\ud83c\uddf0\ud83c\uddf3|\ud83c\uddf0\ud83c\uddf5|\ud83c\uddf0\ud83c\uddfc|\ud83c\uddf0\ud83c\uddfe|\ud83c\uddf0\ud83c\uddff|\ud83c\uddf1\ud83c\udde6|\ud83c\uddf1\ud83c\udde7|\ud83c\uddf1\ud83c\udde8|\ud83c\uddf1\ud83c\uddee|\ud83c\uddf1\ud83c\uddf0|\ud83c\uddf1\ud83c\uddf7|\ud83c\uddf1\ud83c\uddf8|\ud83c\uddf1\ud83c\uddf9|\ud83c\uddf1\ud83c\uddfa|\ud83c\uddf1\ud83c\uddfb|\ud83c\uddf1\ud83c\uddfe|\ud83c\uddf2\ud83c\udde6|\ud83c\uddf2\ud83c\udde8|\ud83c\uddf2\ud83c\udde9|\ud83c\uddf2\ud83c\uddea|\ud83c\uddf2\ud83c\uddeb|\ud83c\uddf2\ud83c\uddec|\ud83c\uddf2\ud83c\udded|\ud83c\uddf2\ud83c\uddf0|\ud83c\uddf2\ud83c\uddf1|\ud83c\uddf2\ud83c\uddf2|\ud83c\uddf2\ud83c\uddf3|\ud83c\uddf2\ud83c\uddf4|\ud83c\uddf2\ud83c\uddf5|\ud83c\uddf2\ud83c\uddf6|\ud83c\uddf2\ud83c\uddf7|\ud83c\uddf2\ud83c\uddf8|\ud83c\uddf2\ud83c\uddf9|\ud83c\uddf2\ud83c\uddfa|\ud83c\uddf2\ud83c\uddfb|\ud83c\uddf2\ud83c\uddfc|\ud83c\uddf2\ud83c\uddfd|\ud83c\uddf2\ud83c\uddfe|\ud83c\uddf2\ud83c\uddff|\ud83c\uddf3\ud83c\udde6|\ud83c\uddf3\ud83c\udde8|\ud83c\uddf3\ud83c\uddea|\ud83c\uddf3\ud83c\uddeb|\ud83c\uddf3\ud83c\uddec|\ud83c\uddf3\ud83c\uddee|\ud83c\uddf3\ud83c\uddf1|\ud83c\uddf3\ud83c\uddf4|\ud83c\uddf3\ud83c\uddf5|\ud83c\uddf3\ud83c\uddf7|\ud83c\uddf3\ud83c\uddfa|\ud83c\uddf3\ud83c\uddff|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c\udde6|\ud83c\uddf5\ud83c\uddea|\ud83c\uddf5\ud83c\uddeb|\ud83c\uddf5\ud83c\uddec|\ud83c\uddf5\ud83c\udded|\ud83c\uddf5\ud83c\uddf0|\ud83c\uddf5\ud83c\uddf1|\ud83c\uddf5\ud83c\uddf2|\ud83c\uddf5\ud83c\uddf3|\ud83c\uddf5\ud83c\uddf7|\ud83c\uddf5\ud83c\uddf8|\ud83c\uddf5\ud83c\uddf9|\ud83c\uddf5\ud83c\uddfc|\ud83c\uddf5\ud83c\uddfe|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c\uddea|\ud83c\uddf7\ud83c\uddf4|\ud83d\udc82\ud83c\udffe|\ud83c\uddf7\ud83c\uddfc|\ud83c\uddf8\ud83c\udde6|\ud83c\uddf8\ud83c\udde7|\ud83c\uddf8\ud83c\udde8|\ud83c\uddf8\ud83c\udde9|\ud83c\uddf8\ud83c\uddea|\ud83c\uddf8\ud83c\uddec|\ud83c\uddf8\ud83c\udded|\ud83c\uddf8\ud83c\uddee|\ud83c\uddf8\ud83c\uddef|\ud83c\uddf8\ud83c\uddf0|\ud83c\uddf8\ud83c\uddf1|\ud83c\uddf8\ud83c\uddf2|\ud83c\uddf8\ud83c\uddf3|\ud83c\uddf8\ud83c\uddf4|\ud83c\uddf8\ud83c\uddf7|\ud83c\uddf8\ud83c\uddf8|\ud83c\uddf8\ud83c\uddf9|\ud83c\uddf8\ud83c\uddfb|\ud83c\uddf8\ud83c\uddfd|\ud83c\uddf8\ud83c\uddfe|\ud83c\uddf8\ud83c\uddff|\ud83c\uddf9\ud83c\udde6|\ud83c\uddf9\ud83c\udde8|\ud83c\uddf9\ud83c\udde9|\ud83c\uddf9\ud83c\uddeb|\ud83c\uddf9\ud83c\uddec|\ud83c\uddf9\ud83c\udded|\ud83c\uddf9\ud83c\uddef|\ud83c\uddf9\ud83c\uddf0|\ud83c\uddf9\ud83c\uddf1|\ud83c\uddf9\ud83c\uddf2|\ud83c\uddf9\ud83c\uddf3|\ud83c\uddf9\ud83c\uddf4|\ud83c\uddf9\ud83c\uddf7|\ud83c\uddf9\ud83c\uddf9|\ud83c\uddf9\ud83c\uddfb|\ud83c\uddf9\ud83c\uddfc|\ud83c\uddf9\ud83c\uddff|\ud83c\uddfa\ud83c\udde6|\ud83c\uddfa\ud83c\uddec|\ud83c\uddfa\ud83c\uddf2|\ud83c\uddfa\ud83c\uddfe|\ud83c\uddfa\ud83c\uddff|\ud83c\uddfb\ud83c\udde6|\ud83c\uddfb\ud83c\udde8|\ud83c\uddfb\ud83c\uddea|\ud83c\uddfb\ud83c\uddec|\ud83c\uddfb\ud83c\uddee|\ud83c\uddfb\ud83c\uddf3|\ud83c\uddfb\ud83c\uddfa|\ud83c\uddfc\ud83c\uddeb|\ud83c\uddfc\ud83c\uddf8|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c\uddea|\ud83c\uddfe\ud83c\uddf9|\ud83c\uddff\ud83c\udde6|\ud83c\uddff\ud83c\uddf2|\ud83c\uddff\ud83c\uddfc|\ud83c\udf85\ud83c\udffb|\ud83c\udf85\ud83c\udffc|\ud83c\udf85\ud83c\udffd|\ud83c\udf85\ud83c\udffe|\ud83c\udf85\ud83c\udfff|\ud83c\udfc3\ud83c\udffb|\ud83c\udfc3\ud83c\udffc|\ud83c\udfc3\ud83c\udffd|\ud83c\udfc3\ud83c\udffe|\ud83c\udfc3\ud83c\udfff|\ud83c\udfc4\ud83c\udffb|\ud83c\udfc4\ud83c\udffc|\ud83c\udfc4\ud83c\udffd|\ud83c\udfc4\ud83c\udffe|\ud83c\udfc4\ud83c\udfff|\ud83c\udfc7\ud83c\udffb|\ud83c\udfc7\ud83c\udffc|\ud83c\udfc7\ud83c\udffd|\ud83c\udfc7\ud83c\udffe|\ud83c\udfc7\ud83c\udfff|\ud83c\udfca\ud83c\udffb|\ud83c\udfca\ud83c\udffc|\ud83c\udfca\ud83c\udffd|\ud83c\udfca\ud83c\udffe|\ud83c\udfca\ud83c\udfff|\ud83c\udfcb\ud83c\udffb|\ud83c\udfcb\ud83c\udffc|\ud83c\udfcb\ud83c\udffd|\ud83c\udfcb\ud83c\udffe|\ud83c\udfcb\ud83c\udfff|\ud83d\udc42\ud83c\udffb|\ud83d\udc42\ud83c\udffc|\ud83d\udc42\ud83c\udffd|\ud83d\udc42\ud83c\udffe|\ud83d\udc42\ud83c\udfff|\ud83d\udc43\ud83c\udffb|\ud83d\udc43\ud83c\udffc|\ud83d\udc43\ud83c\udffd|\ud83d\udc43\ud83c\udffe|\ud83d\udc43\ud83c\udfff|\ud83d\udc46\ud83c\udffb|\ud83d\udc46\ud83c\udffc|\ud83d\udc46\ud83c\udffd|\ud83d\udc46\ud83c\udffe|\ud83d\udc46\ud83c\udfff|\ud83d\udc47\ud83c\udffb|\ud83d\udc47\ud83c\udffc|\ud83d\udc47\ud83c\udffd|\ud83d\udc47\ud83c\udffe|\ud83d\udc47\ud83c\udfff|\ud83d\udc48\ud83c\udffb|\ud83d\udc48\ud83c\udffc|\ud83d\udc48\ud83c\udffd|\ud83d\udc48\ud83c\udffe|\ud83d\udc48\ud83c\udfff|\ud83d\udc49\ud83c\udffb|\ud83d\udc49\ud83c\udffc|\ud83d\udc49\ud83c\udffd|\ud83d\udc49\ud83c\udffe|\ud83d\udc49\ud83c\udfff|\ud83d\udc4a\ud83c\udffb|\ud83d\udc4a\ud83c\udffc|\ud83d\udc4a\ud83c\udffd|\ud83d\udc4a\ud83c\udffe|\ud83d\udc4a\ud83c\udfff|\ud83d\udc4b\ud83c\udffb|\ud83d\udc4b\ud83c\udffc|\ud83d\udc4b\ud83c\udffd|\ud83d\udc4b\ud83c\udffe|\ud83d\udc4b\ud83c\udfff|\ud83d\udc4c\ud83c\udffb|\ud83d\udc4c\ud83c\udffc|\ud83d\udc4c\ud83c\udffd|\ud83d\udc4c\ud83c\udffe|\ud83d\udc4c\ud83c\udfff|\ud83d\udc4d\ud83c\udffb|\ud83d\udc4d\ud83c\udffc|\ud83d\udc4d\ud83c\udffd|\ud83d\udc4d\ud83c\udffe|\ud83d\udc4d\ud83c\udfff|\ud83d\udc4e\ud83c\udffb|\ud83d\udc4e\ud83c\udffc|\ud83d\udc4e\ud83c\udffd|\ud83d\udc4e\ud83c\udffe|\ud83d\udc4e\ud83c\udfff|\ud83d\udc4f\ud83c\udffb|\ud83d\udc4f\ud83c\udffc|\ud83d\udc4f\ud83c\udffd|\ud83d\udc4f\ud83c\udffe|\ud83d\udc4f\ud83c\udfff|\ud83d\udc50\ud83c\udffb|\ud83d\udc50\ud83c\udffc|\ud83d\udc50\ud83c\udffd|\ud83d\udc50\ud83c\udffe|\ud83d\udc50\ud83c\udfff|\ud83d\udc66\ud83c\udffb|\ud83d\udc66\ud83c\udffc|\ud83d\udc66\ud83c\udffd|\ud83d\udc66\ud83c\udffe|\ud83d\udc66\ud83c\udfff|\ud83d\udc67\ud83c\udffb|\ud83d\udc67\ud83c\udffc|\ud83d\udc67\ud83c\udffd|\ud83d\udc67\ud83c\udffe|\ud83d\udc67\ud83c\udfff|\ud83d\udc68\ud83c\udffb|\ud83d\udc68\ud83c\udffc|\ud83d\udc68\ud83c\udffd|\ud83d\udc68\ud83c\udffe|\ud83d\udc68\ud83c\udfff|\ud83d\ude47\ud83c\udffb|\ud83d\ude46\ud83c\udfff|\ud83d\ude46\ud83c\udffe|\ud83d\ude46\ud83c\udffd|\ud83d\ude46\ud83c\udffc|\ud83d\ude46\ud83c\udffb|\ud83d\ude45\ud83c\udfff|\ud83d\ude45\ud83c\udffe|\ud83d\ude45\ud83c\udffd|\ud83d\ude45\ud83c\udffc|\ud83d\ude45\ud83c\udffb|\ud83d\udc69\ud83c\udffb|\ud83d\udc69\ud83c\udffc|\ud83d\udc69\ud83c\udffd|\ud83d\udc69\ud83c\udffe|\ud83d\udc69\ud83c\udfff|\ud83d\udd96\ud83c\udfff|\ud83d\udd96\ud83c\udffe|\ud83d\udd96\ud83c\udffd|\ud83d\udd96\ud83c\udffc|\ud83d\udd96\ud83c\udffb|\ud83d\udd95\ud83c\udfff|\ud83d\udd95\ud83c\udffe|\ud83d\udc6e\ud83c\udffb|\ud83d\udc6e\ud83c\udffc|\ud83d\udc6e\ud83c\udffd|\ud83d\udc6e\ud83c\udffe|\ud83d\udc6e\ud83c\udfff|\ud83d\udc70\ud83c\udffb|\ud83d\udc70\ud83c\udffc|\ud83d\udc70\ud83c\udffd|\ud83d\udc70\ud83c\udffe|\ud83d\udc70\ud83c\udfff|\ud83d\udc71\ud83c\udffb|\ud83d\udc71\ud83c\udffc|\ud83d\udc71\ud83c\udffd|\ud83d\udc71\ud83c\udffe|\ud83d\udc71\ud83c\udfff|\ud83d\udc72\ud83c\udffb|\ud83d\udc72\ud83c\udffc|\ud83d\udc72\ud83c\udffd|\ud83d\udc72\ud83c\udffe|\ud83d\udc72\ud83c\udfff|\ud83d\udc73\ud83c\udffb|\ud83d\udc73\ud83c\udffc|\ud83d\udc73\ud83c\udffd|\ud83d\udc73\ud83c\udffe|\ud83d\udc73\ud83c\udfff|\ud83d\udc74\ud83c\udffb|\ud83d\udc74\ud83c\udffc|\ud83d\udc74\ud83c\udffd|\ud83d\udc74\ud83c\udffe|\ud83d\udc74\ud83c\udfff|\ud83d\udc75\ud83c\udffb|\ud83d\udc75\ud83c\udffc|\ud83d\udc75\ud83c\udffd|\ud83d\udc75\ud83c\udffe|\ud83d\udc75\ud83c\udfff|\ud83d\udc76\ud83c\udffb|\ud83d\udc76\ud83c\udffc|\ud83d\udc76\ud83c\udffd|\ud83d\udc76\ud83c\udffe|\ud83d\udc76\ud83c\udfff|\ud83d\udc77\ud83c\udffb|\ud83d\udc77\ud83c\udffc|\ud83d\udc77\ud83c\udffd|\ud83d\udc77\ud83c\udffe|\ud83d\udc77\ud83c\udfff|\ud83d\udc78\ud83c\udffb|\ud83d\udc78\ud83c\udffc|\ud83d\udc78\ud83c\udffd|\ud83d\udc78\ud83c\udffe|\ud83d\udc78\ud83c\udfff|\ud83d\udc7c\ud83c\udffb|\ud83d\udc7c\ud83c\udffc|\ud83d\udc7c\ud83c\udffd|\ud83d\udc7c\ud83c\udffe|\ud83d\udc7c\ud83c\udfff|\ud83d\udc81\ud83c\udffb|\ud83d\udc81\ud83c\udffc|\ud83d\udc81\ud83c\udffd|\ud83d\udc81\ud83c\udffe|\ud83d\udc81\ud83c\udfff|\ud83d\udc82\ud83c\udffb|\ud83d\udc82\ud83c\udffc|\ud83d\udc82\ud83c\udffd|\u270a\ud83c\udffd|\u270b\ud83c\udffd|\u270d\ud83c\udffe|\u270d\ud83c\udffd|\u270d\ud83c\udffc|\u270d\ud83c\udffb|\u270c\ud83c\udfff|\u270c\ud83c\udffe|\u270c\ud83c\udffd|\u270c\ud83c\udffc|\u270c\ud83c\udffb|\u270b\ud83c\udfff|\u270b\ud83c\udffc|\u270b\ud83c\udffb|\u270a\ud83c\udfff|\u270d\ud83c\udfff|\u270a\ud83c\udffe|\u270b\ud83c\udffe|\u270a\ud83c\udffc|\u270a\ud83c\udffb|\u261d\ud83c\udfff|\u261d\ud83c\udffd|\u261d\ud83c\udffc|\u261d\ud83c\udffb|\u261d\ud83c\udffe|\u26f9\ud83c\udffe|\u26f9\ud83c\udfff|\u26f9\ud83c\udffd|\u26f9\ud83c\udffc|\u26f9\ud83c\udffb|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\u002a\u20e3|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\ud83d\udd55|\ud83d\udd56|\ud83d\udd57|\ud83d\udd58|\ud83d\udd59|\ud83d\udd5a|\ud83d\udd5b|\ud83d\uddfb|\ud83d\uddfc|\ud83d\uddfd|\ud83d\uddfe|\ud83d\uddff|\ud83d\ude01|\ud83d\ude02|\ud83d\ude03|\ud83d\ude04|\ud83d\ude05|\ud83d\ude06|\ud83d\ude09|\ud83d\ude0a|\ud83d\ude0b|\ud83d\ude0c|\ud83d\ude0d|\ud83d\ude0f|\ud83d\ude12|\ud83d\ude13|\ud83d\ude14|\ud83d\ude16|\ud83d\ude18|\ud83d\ude1a|\ud83d\ude1c|\ud83d\ude1d|\ud83d\ude1e|\ud83d\ude20|\ud83d\ude21|\ud83d\ude22|\ud83d\ude23|\ud83d\ude24|\ud83d\ude25|\ud83d\ude28|\ud83d\ude29|\ud83d\ude2a|\ud83d\ude2b|\ud83d\ude2d|\ud83d\ude30|\ud83d\ude31|\ud83d\ude32|\ud83d\ude33|\ud83d\ude35|\ud83d\ude37|\ud83d\ude38|\ud83d\ude39|\ud83d\ude3a|\ud83d\ude3b|\ud83d\ude3c|\ud83d\ude3d|\ud83d\ude3e|\ud83d\ude3f|\ud83d\ude40|\ud83d\ude45|\ud83d\ude46|\ud83d\ude47|\ud83d\ude48|\ud83d\ude49|\ud83d\ude4a|\ud83d\ude4b|\ud83d\ude4c|\ud83d\ude4d|\ud83d\ude4e|\ud83d\ude4f|\ud83d\ude80|\ud83d\ude83|\ud83d\ude84|\ud83d\ude85|\ud83d\ude87|\ud83d\ude89|\ud83d\ude8c|\ud83d\ude8f|\ud83d\ude91|\ud83d\ude92|\ud83d\ude93|\ud83d\ude95|\ud83d\ude97|\ud83d\ude99|\ud83d\ude9a|\ud83d\udea2|\ud83d\udea4|\ud83d\udea5|\ud83d\udea7|\ud83d\udea8|\ud83d\udea9|\ud83d\udeaa|\ud83d\udeab|\ud83d\udeac|\ud83d\udead|\ud83d\udeb2|\ud83d\udeb6|\ud83d\udeb9|\ud83d\udeba|\ud83d\udebb|\ud83d\udebc|\ud83d\udebd|\ud83d\udebe|\ud83d\udec0|\ud83c\udde6|\ud83c\udde7|\ud83c\udde8|\ud83c\udde9|\ud83c\uddea|\ud83c\uddeb|\ud83c\uddec|\ud83c\udded|\ud83c\uddee|\ud83c\uddef|\ud83c\uddf0|\ud83c\uddf1|\ud83c\uddf2|\ud83c\uddf3|\ud83c\uddf4|\ud83c\uddf5|\ud83c\uddf6|\ud83c\uddf7|\ud83c\uddf8|\ud83c\uddf9|\ud83c\uddfa|\ud83c\uddfb|\ud83c\uddfc|\ud83c\uddfd|\ud83c\uddfe|\ud83c\uddff|\ud83c\udf0d|\ud83c\udf0e|\ud83c\udf10|\ud83c\udf12|\ud83c\udf16|\ud83c\udf17|\ud83c\udf18|\ud83c\udf1a|\ud83c\udf1c|\ud83c\udf1d|\ud83c\udf1e|\ud83c\udf32|\ud83c\udf33|\ud83c\udf4b|\ud83c\udf50|\ud83c\udf7c|\ud83c\udfc7|\ud83c\udfc9|\ud83c\udfe4|\ud83d\udc00|\ud83d\udc01|\ud83d\udc02|\ud83d\udc03|\ud83d\udc04|\ud83d\udc05|\ud83d\udc06|\ud83d\udc07|\ud83d\udc08|\ud83d\udc09|\ud83d\udc0a|\ud83d\udc0b|\ud83d\udc0f|\ud83d\udc10|\ud83d\udc13|\ud83d\udc15|\ud83d\udc16|\ud83d\udc2a|\ud83d\udc65|\ud83d\udc6c|\ud83d\udc6d|\ud83d\udcad|\ud83d\udcb6|\ud83d\udcb7|\ud83d\udcec|\ud83d\udced|\ud83d\udcef|\ud83d\udcf5|\ud83d\udd00|\ud83d\udd01|\ud83d\udd02|\ud83d\udd04|\ud83d\udd05|\ud83d\udd06|\ud83d\udd07|\ud83d\udd08|\ud83d\udd09|\ud83d\udd15|\ud83d\udd2c|\ud83d\udd2d|\ud83d\udd5c|\ud83d\udd5d|\ud83d\udd5e|\ud83d\udd5f|\ud83d\udd60|\ud83d\udd61|\ud83d\udd62|\ud83d\udd63|\ud83d\udd64|\ud83d\udd65|\ud83d\udd66|\ud83d\udd67|\ud83d\ude00|\ud83d\ude07|\ud83d\ude08|\ud83d\ude0e|\ud83d\ude10|\ud83d\ude11|\ud83d\ude15|\ud83d\ude17|\ud83d\ude19|\ud83d\ude1b|\ud83d\ude1f|\ud83d\ude26|\ud83d\ude27|\ud83d\ude2c|\ud83d\ude2e|\ud83d\ude2f|\ud83d\ude34|\ud83d\ude36|\ud83d\ude81|\ud83d\ude82|\ud83d\ude86|\ud83d\ude88|\ud83d\ude8a|\ud83d\ude8b|\ud83d\ude8d|\ud83d\ude8e|\ud83d\ude90|\ud83d\ude94|\ud83d\ude96|\ud83d\ude98|\ud83d\ude9b|\ud83d\ude9c|\ud83d\ude9d|\ud83d\ude9e|\ud83d\ude9f|\ud83d\udea0|\ud83d\udea1|\ud83d\udea3|\ud83d\udea6|\ud83d\udeae|\ud83d\udeaf|\ud83d\udeb0|\ud83d\udeb1|\ud83d\udeb3|\ud83d\udeb4|\ud83d\udeb5|\ud83d\udeb7|\ud83d\udeb8|\ud83d\udebf|\ud83d\udec1|\ud83d\udec2|\ud83d\udec3|\ud83d\udec4|\ud83d\udec5|\ud83d\udecd|\ud83d\udecc|\ud83d\udecb|\ud83e\udd81|\ud83e\udd80|\ud83e\udd18|\ud83c\udf46|\ud83e\uddc0|\ud83e\udd84|\ud83e\udd83|\ud83e\udd82|\ud83e\udd17|\ud83e\udd16|\ud83e\udd15|\ud83e\udd14|\ud83e\udd13|\ud83e\udd12|\ud83e\udd11|\ud83e\udd10|\ud83d\udef3|\ud83d\udef0|\ud83d\udeec|\ud83c\udccf|\ud83c\udd8e|\ud83c\udd91|\ud83c\udd92|\ud83c\udd93|\ud83c\udd94|\ud83c\udd95|\ud83c\udd96|\ud83c\udd97|\ud83c\udd98|\ud83c\udd99|\ud83c\udd9a|\ud83d\udeeb|\ud83d\udee9|\ud83d\udee5|\ud83d\udee4|\ud83d\udee3|\ud83d\udee2|\ud83d\udee1|\ud83d\udee0|\ud83d\uded0|\ud83d\udecf|\ud83c\ude01|\ud83c\ude32|\ud83c\ude33|\ud83c\ude34|\ud83c\ude35|\ud83c\ude36|\ud83c\ude38|\ud83c\ude39|\ud83c\ude3a|\ud83c\ude50|\ud83c\ude51|\ud83c\udf00|\ud83c\udf01|\ud83c\udf02|\ud83c\udf03|\ud83c\udf04|\ud83c\udf05|\ud83c\udf06|\ud83c\udf07|\ud83c\udf08|\ud83c\udf09|\ud83c\udf0a|\ud83c\udf0b|\ud83c\udf0c|\ud83c\udf0f|\ud83c\udf11|\ud83c\udf13|\ud83c\udf14|\ud83c\udf15|\ud83c\udf19|\ud83c\udf1b|\ud83c\udf1f|\ud83c\udf20|\ud83c\udf30|\ud83c\udf31|\ud83c\udf34|\ud83c\udf35|\ud83c\udf37|\ud83c\udf38|\ud83c\udf39|\ud83c\udf3a|\ud83c\udf3b|\ud83c\udf3c|\ud83c\udf3d|\ud83c\udf3e|\ud83c\udf3f|\ud83c\udf40|\ud83c\udf41|\ud83c\udf42|\ud83c\udf43|\ud83c\udf44|\ud83c\udf45|\ud83d\udece|\ud83c\udf47|\ud83c\udf48|\ud83c\udf49|\ud83c\udf4a|\ud83c\udf4c|\ud83c\udf4d|\ud83c\udf4e|\ud83c\udf4f|\ud83c\udf51|\ud83c\udf52|\ud83c\udf53|\ud83c\udf54|\ud83c\udf55|\ud83c\udf56|\ud83c\udf57|\ud83c\udf58|\ud83c\udf59|\ud83c\udf5a|\ud83c\udf5b|\ud83c\udf5c|\ud83c\udf5d|\ud83c\udf5e|\ud83c\udf5f|\ud83c\udf60|\ud83c\udf61|\ud83c\udf62|\ud83c\udf63|\ud83c\udf64|\ud83c\udf65|\ud83c\udf66|\ud83c\udf67|\ud83c\udf68|\ud83c\udf69|\ud83c\udf6a|\ud83c\udf6b|\ud83c\udf6c|\ud83c\udf6d|\ud83c\udf6e|\ud83c\udf6f|\ud83c\udf70|\ud83c\udf71|\ud83c\udf72|\ud83c\udf73|\ud83c\udf74|\ud83c\udf75|\ud83c\udf76|\ud83c\udf77|\ud83c\udf78|\ud83c\udf79|\ud83c\udf7a|\ud83c\udf7b|\ud83c\udf80|\ud83c\udf81|\ud83c\udf82|\ud83c\udf83|\ud83c\udf84|\ud83c\udf85|\ud83c\udf86|\ud83c\udf87|\ud83c\udf88|\ud83c\udf89|\ud83c\udf8a|\ud83c\udf8b|\ud83c\udf8c|\ud83c\udf8d|\ud83c\udf8e|\ud83c\udf8f|\ud83c\udf90|\ud83c\udf91|\ud83c\udf92|\ud83c\udf93|\ud83c\udfa0|\ud83c\udfa1|\ud83c\udfa2|\ud83c\udfa3|\ud83c\udfa4|\ud83c\udfa5|\ud83c\udfa6|\ud83c\udfa7|\ud83c\udfa8|\ud83c\udfa9|\ud83c\udfaa|\ud83c\udfab|\ud83c\udfac|\ud83c\udfad|\ud83c\udfae|\ud83c\udfaf|\ud83c\udfb0|\ud83c\udfb1|\ud83c\udfb2|\ud83c\udfb3|\ud83c\udfb4|\ud83c\udfb5|\ud83c\udfb6|\ud83c\udfb7|\ud83c\udfb8|\ud83c\udfb9|\ud83c\udfba|\ud83c\udfbb|\ud83c\udfbc|\ud83c\udfbd|\ud83c\udfbe|\ud83c\udfbf|\ud83c\udfc0|\ud83c\udfc1|\ud83c\udfc2|\ud83c\udfc3|\ud83c\udfc4|\ud83c\udfc6|\ud83c\udfc8|\ud83c\udfca|\ud83c\udfe0|\ud83c\udfe1|\ud83c\udfe2|\ud83c\udfe3|\ud83c\udfe5|\ud83c\udfe6|\ud83c\udfe7|\ud83c\udfe8|\ud83c\udfe9|\ud83c\udfea|\ud83c\udfeb|\ud83c\udfec|\ud83c\udfed|\ud83c\udfee|\ud83c\udfef|\ud83c\udff0|\ud83d\udc0c|\ud83d\udc0d|\ud83d\udc0e|\ud83d\udc11|\ud83d\udc12|\ud83d\udc14|\ud83d\udc17|\ud83d\udc18|\ud83d\udc19|\ud83d\udc1a|\ud83d\udc1b|\ud83d\udc1c|\ud83d\udc1d|\ud83d\udc1e|\ud83d\udc1f|\ud83d\udc20|\ud83d\udc21|\ud83d\udc22|\ud83d\udc23|\ud83d\udc24|\ud83d\udc25|\ud83d\udc26|\ud83d\udc27|\ud83d\udc28|\ud83d\udc29|\ud83d\udc2b|\ud83d\udc2c|\ud83d\udc2d|\ud83c\udf21|\ud83c\udf24|\ud83c\udf25|\ud83c\udf26|\ud83c\udf27|\ud83c\udf28|\ud83c\udf29|\ud83c\udf2a|\ud83c\udf2b|\ud83c\udf2c|\ud83c\udf2d|\ud83c\udf2e|\ud83c\udf2f|\ud83c\udf36|\ud83c\udf7d|\ud83c\udf7e|\ud83c\udf7f|\ud83d\udc2e|\ud83d\udc2f|\ud83d\udc30|\ud83d\udc31|\ud83d\udc32|\ud83c\udf96|\ud83c\udf97|\ud83c\udf99|\ud83c\udf9a|\ud83c\udf9b|\ud83c\udf9e|\ud83c\udf9f|\ud83d\udc33|\ud83d\udc34|\ud83d\udc35|\ud83d\udc36|\ud83d\udc37|\ud83d\udc38|\ud83d\udc39|\ud83d\udc3a|\ud83d\udc3b|\ud83d\udc3c|\ud83c\udfc5|\ud83d\udc3d|\ud83d\udc3e|\ud83d\udc40|\ud83d\udc42|\ud83d\udc43|\ud83d\udc44|\ud83d\udc45|\ud83d\udc46|\ud83d\udc47|\ud83d\udc48|\ud83d\udc49|\ud83d\udc4a|\ud83d\udc4b|\ud83d\udc4c|\ud83d\udc4d|\ud83c\udfcb|\ud83c\udfcc|\ud83c\udfcd|\ud83c\udfce|\ud83c\udfcf|\ud83c\udfd0|\ud83c\udfd1|\ud83c\udfd2|\ud83c\udfd3|\ud83c\udfd4|\ud83c\udfd5|\ud83c\udfd6|\ud83c\udfd7|\ud83c\udfd8|\ud83c\udfd9|\ud83c\udfda|\ud83c\udfdb|\ud83c\udfdc|\ud83c\udfdd|\ud83c\udfde|\ud83c\udfdf|\ud83c\udff3|\ud83c\udff4|\ud83c\udff5|\ud83c\udff7|\ud83c\udff8|\ud83c\udff9|\ud83c\udffa|\ud83c\udffb|\ud83c\udffc|\ud83c\udffd|\ud83c\udffe|\ud83c\udfff|\ud83d\udc3f|\ud83d\udc41|\ud83d\udc4e|\ud83d\udc4f|\ud83d\udc50|\ud83d\udc51|\ud83d\udc52|\ud83d\udc53|\ud83d\udc54|\ud83d\udc55|\ud83d\udc56|\ud83d\udc57|\ud83d\udc58|\ud83d\udc59|\ud83d\udc5a|\ud83d\udc5b|\ud83d\udc5c|\ud83d\udc5d|\ud83d\udc5e|\ud83d\udc5f|\ud83d\udc60|\ud83d\udc61|\ud83d\udc62|\ud83d\udc63|\ud83d\udc64|\ud83d\udc66|\ud83d\udc67|\ud83d\udc68|\ud83d\udc69|\ud83d\udc6a|\ud83d\udc6b|\ud83d\udc6e|\ud83d\udc6f|\ud83d\udc70|\ud83d\udc71|\ud83d\udc72|\ud83d\udc73|\ud83d\udc74|\ud83d\udc75|\ud83d\udc76|\ud83d\udc77|\ud83d\udc78|\ud83d\udc79|\ud83d\udc7a|\ud83d\udc7b|\ud83d\udc7c|\ud83d\udc7d|\ud83d\udc7e|\ud83d\udc7f|\ud83d\udc80|\ud83d\udc81|\ud83d\udc82|\ud83d\udc83|\ud83d\udc84|\ud83d\udc85|\ud83d\udc86|\ud83d\udc87|\ud83d\udc88|\ud83d\udc89|\ud83d\udc8a|\ud83d\udc8b|\ud83d\udc8c|\ud83d\udc8d|\ud83d\udc8e|\ud83d\udc8f|\ud83d\udc90|\ud83d\udc91|\ud83d\udc92|\ud83d\udc93|\ud83d\udc94|\ud83d\udc95|\ud83d\udc96|\ud83d\udc97|\ud83d\udc98|\ud83d\udc99|\ud83d\udc9a|\ud83d\udc9b|\ud83d\udc9c|\ud83d\udc9d|\ud83d\udc9e|\ud83d\udc9f|\ud83d\udca0|\ud83d\udca1|\ud83d\udca2|\ud83d\udca3|\ud83d\udca4|\ud83d\udca5|\ud83d\udca6|\ud83d\udca7|\ud83d\udca8|\ud83d\udca9|\ud83d\udcaa|\ud83d\udcab|\ud83d\udcac|\ud83d\udcae|\ud83d\udcaf|\ud83d\udcb0|\ud83d\udcb1|\ud83d\udcb2|\ud83d\udcb3|\ud83d\udcb4|\ud83d\udcb5|\ud83d\udcb8|\ud83d\udcb9|\ud83d\udcba|\ud83d\udcbb|\ud83d\udcbc|\ud83d\udcbd|\ud83d\udcbe|\ud83d\udcbf|\ud83d\udcc0|\ud83d\udcc1|\ud83d\udcc2|\ud83d\udcc3|\ud83d\udcc4|\ud83d\udcc5|\ud83d\udcc6|\ud83d\udcc7|\ud83d\udcc8|\ud83d\udcc9|\ud83d\udcca|\ud83d\udccb|\ud83d\udccc|\ud83d\udccd|\ud83d\udcce|\ud83d\udccf|\ud83d\udcd0|\ud83d\udcd1|\ud83d\udcd2|\ud83d\udcd3|\ud83d\udcd4|\ud83d\udcd5|\ud83d\udcd6|\ud83d\udcd7|\ud83d\udcd8|\ud83d\udcd9|\ud83d\udcda|\ud83d\udcdb|\ud83d\udcdc|\ud83d\udcdd|\ud83d\udcde|\ud83d\udcdf|\ud83d\udce0|\ud83d\udce1|\ud83d\udce2|\ud83d\udce3|\ud83d\udce4|\ud83d\udce5|\ud83d\udce6|\ud83d\udce7|\ud83d\udce8|\ud83d\udce9|\ud83d\udcea|\ud83d\udceb|\ud83d\udcee|\ud83d\udcf0|\ud83d\udcf1|\ud83d\udcf2|\ud83d\udcf3|\ud83d\udcf4|\ud83d\udcf6|\ud83d\udcf7|\ud83d\udcf9|\ud83d\udcfa|\ud83d\udcfb|\ud83d\udcfc|\ud83d\udd03|\ud83d\udd0a|\ud83d\udd0b|\ud83d\udd0c|\ud83d\udd0d|\ud83d\udd0e|\ud83d\udd0f|\ud83d\udd10|\ud83d\udd11|\ud83d\udd12|\ud83d\udd13|\ud83d\udd14|\ud83d\udd16|\ud83d\udd17|\ud83d\udd18|\ud83d\udd19|\ud83d\udd1a|\ud83d\udd1b|\ud83d\udd1c|\ud83d\udd1d|\ud83d\udd1e|\ud83d\udd1f|\ud83d\udd20|\ud83d\udd21|\ud83d\udd22|\ud83d\udd23|\ud83d\udd24|\ud83d\udd25|\ud83d\udd26|\ud83d\udcf8|\ud83d\udcfd|\ud83d\udcff|\ud83d\udd49|\ud83d\udd4a|\ud83d\udd4b|\ud83d\udd4c|\ud83d\udd4d|\ud83d\udd4e|\ud83d\udd6f|\ud83d\udd70|\ud83d\udd73|\ud83d\udd74|\ud83d\udd75|\ud83d\udd76|\ud83d\udd77|\ud83d\udd78|\ud83d\udd79|\ud83d\udd87|\ud83d\udd8a|\ud83d\udd8b|\ud83d\udd8c|\ud83d\udd8d|\ud83d\udd27|\ud83d\udd28|\ud83d\udd29|\ud83d\udd2a|\ud83d\udd2b|\ud83d\udd90|\ud83d\udd2e|\ud83d\udd2f|\ud83d\udd30|\ud83d\udd31|\ud83d\udd32|\ud83d\udd95|\ud83d\udd33|\ud83d\udd34|\ud83d\udd35|\ud83d\udd36|\ud83d\udd37|\ud83d\udd96|\ud83d\udda5|\ud83d\udda8|\ud83d\uddb1|\ud83d\uddb2|\ud83d\uddbc|\ud83d\uddc2|\ud83d\uddc3|\ud83d\uddc4|\ud83d\uddd1|\ud83d\uddd2|\ud83d\uddd3|\ud83d\udddc|\ud83d\udddd|\ud83d\uddde|\ud83d\udde1|\ud83d\udde3|\ud83d\udde8|\ud83d\uddef|\ud83d\uddf3|\ud83d\uddfa|\ud83d\ude41|\ud83d\ude42|\ud83d\ude43|\ud83d\ude44|\ud83d\udd38|\ud83d\udd39|\ud83d\udd3a|\ud83d\udd3b|\ud83d\udd3c|\ud83d\udd3d|\ud83d\udd50|\ud83d\udd51|\ud83d\udd52|\ud83d\udd53|\ud83d\udd54|\ue50a|\u2797|\u2796|\u2795|\u2763|\u2755|\u2754|\u2753|\u2728|\u2721|\u2705|\u2699|\u2697|\u2696|\u2694|\u2692|\u2639|\u2638|\u2626|\u2623|\u2622|\u2620|\u2618|\u2604|\u2603|\u2602|\u2328|\u274c|\u274e|\u271d|\u270a|\u270b|\u270d|\u269b|\u269c|\u262f|\u262a|\u262e|\u27b0|\u27bf|\u26f9|\u26ce|\u26b0|\u26b1|\u26c8|\u26cf|\u26d1|\u26d3|\u26e9|\u26f0|\u26f1|\u26f4|\u26f7|\u26f8|\u23f1|\u23e9|\u23ec|\u23f0|\u23ed|\u23ee|\u23f3|\u23ea|\u23fa|\u23f9|\u23f8|\u23f2|\u23eb|\u23ef|\u00a9|\u00ae)|(?:(?:\ud83c\udc04|\ud83c\udd70|\ud83c\udd71|\ud83c\udd7e|\ud83c\udd7f|\ud83c\ude02|\ud83c\ude1a|\ud83c\ude2f|\ud83c\ude37|\u3299|\u3297|\u3030|\u2935|\u2934|\u2764|\u2757|\u2747|\u2744|\u2734|\u2733|\u2716|\u2714|\u2712|\u2709|\u2708|\u2702|\u2693|\u2668|\u2666|\u2665|\u2663|\u2660|\u2653|\u2652|\u2651|\u2650|\u2649|\u2648|\u2615|\u2614|\u2611|\u2601|\u2600|\u2199|\u2198|\u2197|\u2196|\u2195|\u2194|\u2139|\u2122|\u2049|\u303d|\u270f|\u270c|\u267f|\u267b|\u264b|\u264a|\u264f|\u264e|\u264d|\u264c|\u263a|\u261d|\u260e|\u231a|\u231b|\u203c|\u27a1|\u26c5|\u26a0|\u26a1|\u26d4|\u26ea|\u26f2|\u26aa|\u26f5|\u26fa|\u26fd|\u26ab|\u26bd|\u26be|\u26c4|\u26f3|\u25fc|\u25fb|\u25fe|\u25c0|\u25b6|\u25ab|\u25aa|\u25fd|\u24c2|\u21a9|\u21aa|\u2b05|\u2b55|\u2b50|\u2b06|\u2b07|\u2b1c|\u2b1b)([\uFE0E\uFE0F]?)))/g,s=/[&<>'"]/g,t=/IFRAME|NOFRAMES|NOSCRIPT|SCRIPT|SELECT|STYLE|TEXTAREA|[a-z]/,u=String.fromCharCode;return p}();
// Source: wp-includes/js/wp-emoji.min.js
-!function(a,b){function c(){function c(){if(!j){if("undefined"==typeof a.twemoji){if(k>600)return;return a.clearTimeout(g),g=a.setTimeout(c,50),void k++}f=a.twemoji,j=!0,h&&new h(function(a){for(var b,c,f,g,h=a.length;h--;){if(b=a[h].addedNodes,c=a[h].removedNodes,f=b.length,1===f&&1===c.length&&3===b[0].nodeType&&"IMG"===c[0].nodeName&&b[0].data===c[0].alt&&"load-failed"===c[0].getAttribute("data-error"))return;for(;f--;)g=b[f],3===g.nodeType&&(g=g.parentNode),!g||1!==g.nodeType||g.className&&"string"==typeof g.className&&-1!==g.className.indexOf("wp-exclude-emoji")||d(g.textContent)&&e(g)}}).observe(document.body,{childList:!0,subtree:!0}),e(document.body)}}function d(a){var b=/[\u203C\u2049\u20E3\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2300\u231A\u231B\u2328\u2388\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638\u2639\u263A\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692\u2693\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753\u2754\u2755\u2757\u2763\u2764\u2795\u2796\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05\u2B06\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]/,c=/[\uDC00-\uDFFF]/;return a?c.test(a)||b.test(a):!1}function e(a,c){var d;return i&&f&&a&&("string"==typeof a||a.childNodes&&a.childNodes.length)?(c=c||{},d={base:b.baseUrl,ext:b.ext,className:c.className||"emoji",callback:function(a,c){switch(a){case"a9":case"ae":case"2122":case"2194":case"2660":case"2663":case"2665":case"2666":return!1}return!b.supports.flag&&b.supports.simple&&b.supports.unicode8&&!/^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test(a)?!1:"".concat(c.base,a,c.ext)},onerror:function(){f.parentNode&&(this.setAttribute("data-error","load-failed"),f.parentNode.replaceChild(document.createTextNode(f.alt),f))}},"object"==typeof c.imgAttr&&(d.attributes=function(){return c.imgAttr}),f.parse(a,d)):a}var f,g,h=a.MutationObserver||a.WebKitMutationObserver||a.MozMutationObserver,i=!1,j=!1,k=0;return b&&(i=!b.supports.simple||!b.supports.flag||!b.supports.unicode8,b.DOMReady?c():b.readyCallback=c),{replaceEmoji:i,parse:e,test:d}}a.wp=a.wp||{},a.wp.emoji=new c}(window,window._wpemojiSettings);
\ No newline at end of file
+!function(a,b){function c(){function c(){if(!j){if("undefined"==typeof a.twemoji){if(k>600)return;return a.clearTimeout(g),g=a.setTimeout(c,50),void k++}f=a.twemoji,j=!0,h&&new h(function(a){for(var b,c,f,g,h=a.length;h--;){if(b=a[h].addedNodes,c=a[h].removedNodes,f=b.length,1===f&&1===c.length&&3===b[0].nodeType&&"IMG"===c[0].nodeName&&b[0].data===c[0].alt&&"load-failed"===c[0].getAttribute("data-error"))return;for(;f--;)g=b[f],3===g.nodeType&&(g=g.parentNode),!g||1!==g.nodeType||g.className&&"string"==typeof g.className&&-1!==g.className.indexOf("wp-exclude-emoji")||d(g.textContent)&&e(g)}}).observe(document.body,{childList:!0,subtree:!0}),e(document.body)}}function d(a){var b=/[\u203C\u2049\u20E3\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2300\u231A\u231B\u2328\u2388\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638\u2639\u263A\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692\u2693\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753\u2754\u2755\u2757\u2763\u2764\u2795\u2796\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05\u2B06\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]/,c=/[\uDC00-\uDFFF]/;return a?c.test(a)||b.test(a):!1}function e(a,c){var d;return i&&f&&a&&("string"==typeof a||a.childNodes&&a.childNodes.length)?(c=c||{},d={base:b.baseUrl,ext:b.ext,className:c.className||"emoji",callback:function(a,c){switch(a){case"a9":case"ae":case"2122":case"2194":case"2660":case"2663":case"2665":case"2666":return!1}return!b.supports.flag&&b.supports.simple&&b.supports.unicode8&&b.supports.diversity&&!/^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test(a)?!1:"".concat(c.base,a,c.ext)},onerror:function(){f.parentNode&&(this.setAttribute("data-error","load-failed"),f.parentNode.replaceChild(document.createTextNode(f.alt),f))}},"object"==typeof c.imgAttr&&(d.attributes=function(){return c.imgAttr}),f.parse(a,d)):a}var f,g,h=a.MutationObserver||a.WebKitMutationObserver||a.MozMutationObserver,i=!1,j=!1,k=0;return b&&(i=!(b.supports.simple&&b.supports.flag&&b.supports.unicode8&&b.supports.diversity),b.DOMReady?c():b.readyCallback=c),{replaceEmoji:i,parse:e,test:d}}a.wp=a.wp||{},a.wp.emoji=new c}(window,window._wpemojiSettings);
\ No newline at end of file
return false;
}
- if ( ! settings.supports.flag && settings.supports.simple && settings.supports.unicode8 &&
+ if ( ! settings.supports.flag && settings.supports.simple && settings.supports.unicode8 && settings.supports.diversity &&
! /^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test( icon ) ) {
return false;
* Initialize our emoji support, and set up listeners.
*/
if ( settings ) {
- replaceEmoji = ! settings.supports.simple || ! settings.supports.flag || ! settings.supports.unicode8;
+ replaceEmoji = ! settings.supports.simple || ! settings.supports.flag || ! settings.supports.unicode8 || ! settings.supports.diversity;
if ( settings.DOMReady ) {
load();
-!function(a,b){function c(){function c(){if(!j){if("undefined"==typeof a.twemoji){if(k>600)return;return a.clearTimeout(g),g=a.setTimeout(c,50),void k++}f=a.twemoji,j=!0,h&&new h(function(a){for(var b,c,f,g,h=a.length;h--;){if(b=a[h].addedNodes,c=a[h].removedNodes,f=b.length,1===f&&1===c.length&&3===b[0].nodeType&&"IMG"===c[0].nodeName&&b[0].data===c[0].alt&&"load-failed"===c[0].getAttribute("data-error"))return;for(;f--;)g=b[f],3===g.nodeType&&(g=g.parentNode),!g||1!==g.nodeType||g.className&&"string"==typeof g.className&&-1!==g.className.indexOf("wp-exclude-emoji")||d(g.textContent)&&e(g)}}).observe(document.body,{childList:!0,subtree:!0}),e(document.body)}}function d(a){var b=/[\u203C\u2049\u20E3\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2300\u231A\u231B\u2328\u2388\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638\u2639\u263A\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692\u2693\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753\u2754\u2755\u2757\u2763\u2764\u2795\u2796\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05\u2B06\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]/,c=/[\uDC00-\uDFFF]/;return a?c.test(a)||b.test(a):!1}function e(a,c){var d;return i&&f&&a&&("string"==typeof a||a.childNodes&&a.childNodes.length)?(c=c||{},d={base:b.baseUrl,ext:b.ext,className:c.className||"emoji",callback:function(a,c){switch(a){case"a9":case"ae":case"2122":case"2194":case"2660":case"2663":case"2665":case"2666":return!1}return!b.supports.flag&&b.supports.simple&&b.supports.unicode8&&!/^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test(a)?!1:"".concat(c.base,a,c.ext)},onerror:function(){f.parentNode&&(this.setAttribute("data-error","load-failed"),f.parentNode.replaceChild(document.createTextNode(f.alt),f))}},"object"==typeof c.imgAttr&&(d.attributes=function(){return c.imgAttr}),f.parse(a,d)):a}var f,g,h=a.MutationObserver||a.WebKitMutationObserver||a.MozMutationObserver,i=!1,j=!1,k=0;return b&&(i=!b.supports.simple||!b.supports.flag||!b.supports.unicode8,b.DOMReady?c():b.readyCallback=c),{replaceEmoji:i,parse:e,test:d}}a.wp=a.wp||{},a.wp.emoji=new c}(window,window._wpemojiSettings);
\ No newline at end of file
+!function(a,b){function c(){function c(){if(!j){if("undefined"==typeof a.twemoji){if(k>600)return;return a.clearTimeout(g),g=a.setTimeout(c,50),void k++}f=a.twemoji,j=!0,h&&new h(function(a){for(var b,c,f,g,h=a.length;h--;){if(b=a[h].addedNodes,c=a[h].removedNodes,f=b.length,1===f&&1===c.length&&3===b[0].nodeType&&"IMG"===c[0].nodeName&&b[0].data===c[0].alt&&"load-failed"===c[0].getAttribute("data-error"))return;for(;f--;)g=b[f],3===g.nodeType&&(g=g.parentNode),!g||1!==g.nodeType||g.className&&"string"==typeof g.className&&-1!==g.className.indexOf("wp-exclude-emoji")||d(g.textContent)&&e(g)}}).observe(document.body,{childList:!0,subtree:!0}),e(document.body)}}function d(a){var b=/[\u203C\u2049\u20E3\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2300\u231A\u231B\u2328\u2388\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638\u2639\u263A\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692\u2693\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753\u2754\u2755\u2757\u2763\u2764\u2795\u2796\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05\u2B06\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]/,c=/[\uDC00-\uDFFF]/;return a?c.test(a)||b.test(a):!1}function e(a,c){var d;return i&&f&&a&&("string"==typeof a||a.childNodes&&a.childNodes.length)?(c=c||{},d={base:b.baseUrl,ext:b.ext,className:c.className||"emoji",callback:function(a,c){switch(a){case"a9":case"ae":case"2122":case"2194":case"2660":case"2663":case"2665":case"2666":return!1}return!b.supports.flag&&b.supports.simple&&b.supports.unicode8&&b.supports.diversity&&!/^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test(a)?!1:"".concat(c.base,a,c.ext)},onerror:function(){f.parentNode&&(this.setAttribute("data-error","load-failed"),f.parentNode.replaceChild(document.createTextNode(f.alt),f))}},"object"==typeof c.imgAttr&&(d.attributes=function(){return c.imgAttr}),f.parse(a,d)):a}var f,g,h=a.MutationObserver||a.WebKitMutationObserver||a.MozMutationObserver,i=!1,j=!1,k=0;return b&&(i=!(b.supports.simple&&b.supports.flag&&b.supports.unicode8&&b.supports.diversity),b.DOMReady?c():b.readyCallback=c),{replaceEmoji:i,parse:e,test:d}}a.wp=a.wp||{},a.wp.emoji=new c}(window,window._wpemojiSettings);
\ No newline at end of file
return wp_kses( $data, 'post' );
}
+/**
+ * Navigates through an array, object, or scalar, and sanitizes content for
+ * allowed HTML tags for post content.
+ *
+ * @since 4.4.2
+ *
+ * @param mixed $value The array or string to filter.
+ * @return mixed $value The filtered content.
+ */
+function wp_kses_post_deep( $data ) {
+ return map_deep( $data, 'wp_kses_post' );
+}
+
/**
* Strips all of the HTML in the content.
*
$url = get_permalink( $id );
$page = get_query_var( 'page' );
- if ( $page ) {
- $url = trailingslashit( $url ) . user_trailingslashit( $page, 'single_paged' );
+ if ( $page >= 2 ) {
+ if ( '' == get_option( 'permalink_structure' ) ) {
+ $url = add_query_arg( 'page', $page, $url );
+ } else {
+ $url = trailingslashit( $url ) . user_trailingslashit( $page, 'single_paged' );
+ }
}
$cpage = get_query_var( 'cpage' );
wp_cache_init();
if ( function_exists( 'wp_cache_add_global_groups' ) ) {
- wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache' ) );
+ wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks' ) );
wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) );
}
}
return isset( $image['0'] ) ? $image['0'] : false;
}
+/**
+ * Get the attachment path relative to the upload directory.
+ *
+ * @since 4.4.1
+ * @access private
+ *
+ * @param string $file Attachment file name.
+ * @return string Attachment path relative to the upload directory.
+ */
+function _wp_get_attachment_relative_path( $file ) {
+ $dirname = dirname( $file );
+
+ if ( '.' === $dirname ) {
+ return '';
+ }
+
+ if ( false !== strpos( $dirname, 'wp-content/uploads' ) ) {
+ // Get the directory name relative to the upload directory (back compat for pre-2.7 uploads)
+ $dirname = substr( $dirname, strpos( $dirname, 'wp-content/uploads' ) + 18 );
+ $dirname = ltrim( $dirname, '/' );
+ }
+
+ return $dirname;
+}
+
/**
* Caches and returns the base URL of the uploads directory.
*
* @return string|bool The 'srcset' attribute value. False on error or when only one source exists.
*/
function wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attachment_id = 0 ) {
+ /**
+ * Let plugins pre-filter the image meta to be able to fix inconsistencies in the stored data.
+ *
+ * @param array $image_meta The image meta data as returned by 'wp_get_attachment_metadata()'.
+ * @param array $size_array Array of width and height values in pixels (in that order).
+ * @param string $image_src The 'src' of the image.
+ * @param int $attachment_id The image attachment ID or 0 if not supplied.
+ */
+ $image_meta = apply_filters( 'wp_calculate_image_srcset_meta', $image_meta, $size_array, $image_src, $attachment_id );
+
if ( empty( $image_meta['sizes'] ) ) {
return false;
}
}
$image_basename = wp_basename( $image_meta['file'] );
- $image_baseurl = _wp_upload_dir_baseurl();
/*
* WordPress flattens animated GIFs into one frame when generating intermediate sizes.
return false;
}
- // Uploads are (or have been) in year/month sub-directories.
- if ( $image_basename !== $image_meta['file'] ) {
- $dirname = dirname( $image_meta['file'] );
+ // Retrieve the uploads sub-directory from the full size image.
+ $dirname = _wp_get_attachment_relative_path( $image_meta['file'] );
- if ( $dirname !== '.' ) {
- $image_baseurl = trailingslashit( $image_baseurl ) . $dirname;
- }
+ if ( $dirname ) {
+ $dirname = trailingslashit( $dirname );
}
- $image_baseurl = trailingslashit( $image_baseurl );
+ $image_baseurl = _wp_upload_dir_baseurl();
+ $image_baseurl = trailingslashit( $image_baseurl ) . $dirname;
// Calculate the image aspect ratio.
$image_ratio = $image_height / $image_width;
// Array to hold URL candidates.
$sources = array();
+ /**
+ * To make sure the ID matches our image src, we will check to see if any sizes in our attachment
+ * meta match our $image_src. If no mathces are found we don't return a srcset to avoid serving
+ * an incorrect image. See #35045.
+ */
+ $src_matched = false;
+
/*
* Loop through available images. Only use images that are resized
* versions of the same edit.
*/
foreach ( $image_sizes as $image ) {
+ // If the file name is part of the `src`, we've confirmed a match.
+ if ( ! $src_matched && false !== strpos( $image_src, $dirname . $image['file'] ) ) {
+ $src_matched = true;
+ }
+
// Filter out images that are from previous edits.
if ( $image_edited && ! strpos( $image['file'], $image_edit_hash[0] ) ) {
continue;
}
- // Filter out images that are wider than '$max_srcset_image_width'.
- if ( $max_srcset_image_width && $image['width'] > $max_srcset_image_width ) {
+ /*
+ * Filter out images that are wider than '$max_srcset_image_width' unless
+ * that file is in the 'src' attribute.
+ */
+ if ( $max_srcset_image_width && $image['width'] > $max_srcset_image_width &&
+ false === strpos( $image_src, $image['file'] ) ) {
+
continue;
}
$sources = apply_filters( 'wp_calculate_image_srcset', $sources, $size_array, $image_src, $image_meta, $attachment_id );
// Only return a 'srcset' value if there is more than one source.
- if ( count( $sources ) < 2 ) {
+ if ( ! $src_matched || count( $sources ) < 2 ) {
return false;
}
return $image;
}
- $base_url = trailingslashit( _wp_upload_dir_baseurl() );
- $image_base_url = $base_url;
-
- $dirname = dirname( $image_meta['file'] );
- if ( $dirname !== '.' ) {
- $image_base_url .= trailingslashit( $dirname );
- }
-
- $all_sizes = wp_list_pluck( $image_meta['sizes'], 'file' );
-
- foreach ( $all_sizes as $key => $file ) {
- $all_sizes[ $key ] = $image_base_url . $file;
- }
-
- // Add the original image.
- $all_sizes[] = $base_url . $image_meta['file'];
-
- // Bail early if the image src doesn't match any of the known image sizes.
- if ( ! in_array( $image_src, $all_sizes ) ) {
- return $image;
- }
-
$width = preg_match( '/ width="([0-9]+)"/', $image, $match_width ) ? (int) $match_width[1] : 0;
$height = preg_match( '/ height="([0-9]+)"/', $image, $match_height ) ? (int) $match_height[1] : 0;
if ( is_array( $global_groups ) ) {
wp_cache_add_global_groups( $global_groups );
} else {
- wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache' ) );
+ wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks' ) );
}
wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) );
}
if ( is_array( $global_groups ) ) {
wp_cache_add_global_groups( $global_groups );
} else {
- wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache' ) );
+ wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks' ) );
}
wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) );
}
* @param array $args An array of arguments. @see wp_nav_menu()
*/
public function end_el( &$output, $item, $depth = 0, $args = array() ) {
- $output .= '</li>';
+ $output .= "</li>\n";
}
} // Walker_Nav_Menu
// In php 5 parse_url may fail if the URL query part contains http://, bug #38143
$test = ( $cut = strpos($location, '?') ) ? substr( $location, 0, $cut ) : $location;
- $lp = parse_url($test);
+ // @-operator is used to prevent possible warnings in PHP < 5.3.3.
+ $lp = @parse_url($test);
// Give up if malformed URL
if ( false === $lp )
if ( isset($lp['scheme']) && !('http' == $lp['scheme'] || 'https' == $lp['scheme']) )
return $default;
- // Reject if scheme is set but host is not. This catches urls like https:host.com for which parse_url does not set the host field.
- if ( isset($lp['scheme']) && !isset($lp['host']) )
+ // Reject if certain components are set but host is not. This catches urls like https:host.com for which parse_url does not set the host field.
+ if ( ! isset( $lp['host'] ) && ( isset( $lp['scheme'] ) || isset( $lp['user'] ) || isset( $lp['pass'] ) || isset( $lp['port'] ) ) ) {
return $default;
+ }
+
+ // Reject malformed components parse_url() can return on odd inputs
+ foreach ( array( 'user', 'pass', 'host' ) as $component ) {
+ if ( isset( $lp[ $component ] ) && strpbrk( $lp[ $component ], ':/?#@' ) ) {
+ return $default;
+ }
+ }
$wpp = parse_url(home_url());
foreach ( $page->ancestors as $parent ) {
$parent = get_post( $parent );
- if ( 'publish' === $parent->post_status ) {
+ if ( $parent ) {
$uri = $parent->post_name . '/' . $uri;
}
}
// Replace file location with url location.
$url = str_replace($uploads['basedir'], $uploads['baseurl'], $file);
} elseif ( false !== strpos($file, 'wp-content/uploads') ) {
- $url = $uploads['baseurl'] . substr( $file, strpos($file, 'wp-content/uploads') + 18 );
+ // Get the directory name relative to the basedir (back compat for pre-2.7 uploads)
+ $url = trailingslashit( $uploads['baseurl'] . '/' . _wp_get_attachment_relative_path( $file ) ) . basename( $file );
} else {
// It's a newly-uploaded file, therefore $file is relative to the basedir.
$url = $uploads['baseurl'] . "/$file";
$like = '%' . $wpdb->esc_like( $q['s'] ) . '%';
}
- $search_orderby = '(CASE ';
+ $search_orderby = '';
// sentence match in 'post_title'
if ( $like ) {
if ( $like ) {
$search_orderby .= $wpdb->prepare( "WHEN $wpdb->posts.post_content LIKE %s THEN 4 ", $like );
}
- $search_orderby .= 'ELSE 5 END)';
+
+ if ( $search_orderby ) {
+ $search_orderby = '(CASE ' . $search_orderby . 'ELSE 5 END)';
+ }
} else {
// single word or sentence search
$search_orderby = reset( $q['search_orderby_title'] ) . ' DESC';
*
* @global WP_Query $wp_query Global WP_Query instance.
* @global wpdb $wpdb WordPress database abstraction object.
- * @global WP_Rewrite $wp_rewrite WordPress rewrite component.
*/
function wp_old_slug_redirect() {
- global $wp_query, $wp_rewrite;
+ global $wp_query;
- if ( '' !== $wp_query->query_vars['name'] ) :
+ if ( is_404() && '' !== $wp_query->query_vars['name'] ) :
global $wpdb;
// Guess the current post_type based on the query vars.
$link = get_permalink( $id );
- if ( is_feed() ) {
- $link = user_trailingslashit( trailingslashit( $link ) . 'feed' );
- } elseif ( isset( $GLOBALS['wp_query']->query_vars['paged'] ) && $GLOBALS['wp_query']->query_vars['paged'] > 1 ) {
+ if ( isset( $GLOBALS['wp_query']->query_vars['paged'] ) && $GLOBALS['wp_query']->query_vars['paged'] > 1 ) {
$link = user_trailingslashit( trailingslashit( $link ) . 'page/' . $GLOBALS['wp_query']->query_vars['paged'] );
} elseif( is_embed() ) {
$link = user_trailingslashit( trailingslashit( $link ) . 'embed' );
- } elseif ( is_404() ) {
- // Add rewrite endpoints if necessary.
- foreach ( $wp_rewrite->endpoints as $endpoint ) {
- if ( $endpoint[2] && false !== get_query_var( $endpoint[2], false ) ) {
- $link = user_trailingslashit( trailingslashit( $link ) . $endpoint[1] );
- }
- }
}
/**
*
* See ERRATA.md for our reasoning behind this particular order
*/
- if (extension_loaded('libsodium')) {
+ if (PHP_VERSION_ID >= 50300 && extension_loaded('libsodium') && function_exists('\\Sodium\\randombytes_buf')) {
// See random_bytes_libsodium.php
require_once $RandomCompatDIR.'/random_bytes_libsodium.php';
}
extension_loaded('com_dotnet') &&
class_exists('COM')
) {
- try {
- $RandomCompatCOMtest = new COM('CAPICOM.Utilities.1');
- if (method_exists($RandomCompatCOMtest, 'GetRandom')) {
- // See random_bytes_com_dotnet.php
- require_once $RandomCompatDIR.'/random_bytes_com_dotnet.php';
+ $RandomCompat_disabled_classes = preg_split(
+ '#\s*,\s*#',
+ strtolower(ini_get('disable_classes'))
+ );
+
+ if (!in_array('com', $RandomCompat_disabled_classes)) {
+ try {
+ $RandomCompatCOMtest = new COM('CAPICOM.Utilities.1');
+ if (method_exists($RandomCompatCOMtest, 'GetRandom')) {
+ // See random_bytes_com_dotnet.php
+ require_once $RandomCompatDIR.'/random_bytes_com_dotnet.php';
+ }
+ } catch (com_exception $e) {
+ // Don't try to use it.
}
- } catch (com_exception $e) {
- // Don't try to use it.
}
+ $RandomCompat_disabled_classes = null;
$RandomCompatCOMtest = null;
}
if (
$fp = false;
}
}
- /**
- * stream_set_read_buffer() does not exist in HHVM
- *
- * If we don't set the stream's read buffer to 0, PHP will
- * internally buffer 8192 bytes, which can waste entropy
- *
- * stream_set_read_buffer returns 0 on success
- */
- if (!empty($fp) && function_exists('stream_set_read_buffer')) {
- stream_set_read_buffer($fp, RANDOM_COMPAT_READ_BUFFER);
+ if (!empty($fp)) {
+ /**
+ * stream_set_read_buffer() does not exist in HHVM
+ *
+ * If we don't set the stream's read buffer to 0, PHP will
+ * internally buffer 8192 bytes, which can waste entropy
+ *
+ * stream_set_read_buffer returns 0 on success
+ */
+ if (function_exists('stream_set_read_buffer')) {
+ stream_set_read_buffer($fp, RANDOM_COMPAT_READ_BUFFER);
+ }
+ if (function_exists('stream_set_chunk_size')) {
+ stream_set_chunk_size($fp, RANDOM_COMPAT_READ_BUFFER);
+ }
}
}
try {
return;
}
- if ( 0 !== preg_match( '@[<>&/\[\]\x00-\x20]@', $tag ) ) {
+ if ( 0 !== preg_match( '@[<>&/\[\]\x00-\x20=]@', $tag ) ) {
/* translators: %s: shortcode name */
$message = sprintf( __( 'Invalid shortcode name: %s. Do not use spaces or reserved characters: & / < > [ ]' ), $tag );
_doing_it_wrong( __FUNCTION__, $message, '4.4.0' );
return $content;
// Find all registered tag names in $content.
- preg_match_all( '@\[([^<>&/\[\]\x00-\x20]++)@', $content, $matches );
+ preg_match_all( '@\[([^<>&/\[\]\x00-\x20=]++)@', $content, $matches );
$tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] );
if ( empty( $tagnames ) ) {
return $content;
// Find all registered tag names in $content.
- preg_match_all( '@\[([^<>&/\[\]\x00-\x20]++)@', $content, $matches );
+ preg_match_all( '@\[([^<>&/\[\]\x00-\x20=]++)@', $content, $matches );
$tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] );
if ( empty( $tagnames ) ) {
else
$args['query_var'] = sanitize_title_with_dashes( $args['query_var'] );
$wp->add_query_var( $args['query_var'] );
+ } else {
+ // Force query_var to false for non-public taxonomies.
+ $args['query_var'] = false;
}
if ( false !== $args['rewrite'] && ( is_admin() || '' != get_option( 'permalink_structure' ) ) ) {
// Meta query support.
$join = '';
+ $distinct = '';
if ( ! empty( $args['meta_query'] ) ) {
$mquery = new WP_Meta_Query( $args['meta_query'] );
$mq_sql = $mquery->get_sql( 'term', 't', 'term_id' );
$join .= $mq_sql['join'];
$where .= $mq_sql['where'];
+ $distinct .= "DISTINCT";
}
$selects = array();
$join .= " INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id";
- $pieces = array( 'fields', 'join', 'where', 'orderby', 'order', 'limits' );
+ $pieces = array( 'fields', 'join', 'where', 'distinct', 'orderby', 'order', 'limits' );
/**
* Filter the terms query SQL clauses.
$fields = isset( $clauses[ 'fields' ] ) ? $clauses[ 'fields' ] : '';
$join = isset( $clauses[ 'join' ] ) ? $clauses[ 'join' ] : '';
$where = isset( $clauses[ 'where' ] ) ? $clauses[ 'where' ] : '';
+ $distinct = isset( $clauses[ 'distinct' ] ) ? $clauses[ 'distinct' ] : '';
$orderby = isset( $clauses[ 'orderby' ] ) ? $clauses[ 'orderby' ] : '';
$order = isset( $clauses[ 'order' ] ) ? $clauses[ 'order' ] : '';
$limits = isset( $clauses[ 'limits' ] ) ? $clauses[ 'limits' ] : '';
- $query = "SELECT $fields FROM $wpdb->terms AS t $join WHERE $where $orderby $order $limits";
+ $query = "SELECT $distinct $fields FROM $wpdb->terms AS t $join WHERE $where $orderby $order $limits";
// $args can be anything. Only use the args defined in defaults to compute the key.
$key = md5( serialize( wp_array_slice_assoc( $args, array_keys( $defaults ) ) ) . serialize( $taxonomies ) . $query );
$terms = wp_get_object_terms( $ids, $taxonomies, array(
'fields' => 'all_with_object_id',
- 'orderby' => 'none',
+ 'orderby' => 'name',
'update_term_meta_cache' => false,
) );
function update_term_cache( $terms, $taxonomy = '' ) {
foreach ( (array) $terms as $term ) {
// Create a copy in case the array was passed by reference.
- $_term = $term;
+ $_term = clone $term;
// Object ID should not be cached.
unset( $_term->object_id );
if ( ! wp_next_scheduled( 'wp_update_themes' ) && ! wp_installing() )
wp_schedule_event(time(), 'twicedaily', 'wp_update_themes');
- if ( ! wp_next_scheduled( 'wp_maybe_auto_update' ) && ! wp_installing() ) {
- // Schedule auto updates for 7 a.m. and 7 p.m. in the timezone of the site.
- $next = strtotime( 'today 7am' );
- $now = time();
- // Find the next instance of 7 a.m. or 7 p.m., but skip it if it is within 3 hours from now.
- while ( ( $now + 3 * HOUR_IN_SECONDS ) > $next ) {
- $next += 12 * HOUR_IN_SECONDS;
- }
- $next = $next - get_option( 'gmt_offset' ) * HOUR_IN_SECONDS;
- // Add a random number of minutes, so we don't have all sites trying to update exactly on the hour
- $next = $next + rand( 0, 59 ) * MINUTE_IN_SECONDS;
- wp_schedule_event( $next, 'twicedaily', 'wp_maybe_auto_update' );
- }
+ if ( ( wp_next_scheduled( 'wp_maybe_auto_update' ) > ( time() + HOUR_IN_SECONDS ) ) && ! wp_installing() )
+ wp_clear_scheduled_hook( 'wp_maybe_auto_update' );
}
/**
*
* @global string $wp_version
*/
-$wp_version = '4.4';
+$wp_version = '4.4.2';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
if ( is_int( $index ) ) {
$index = "sidebar-$index";
} else {
- $sanitized_index = sanitize_title( $index );
+ $index = sanitize_title( $index );
foreach ( (array) $wp_registered_sidebars as $key => $value ) {
- if ( sanitize_title( $value['name'] ) == $sanitized_index ) {
+ if ( sanitize_title( $value['name'] ) == $index ) {
$index = $key;
break;
}
$url = strip_tags( $url );
$icon = includes_url( 'images/rss.png' );
if ( $title )
- $title = '<a class="rsswidget" href="' . esc_url( $url ) . '"><img class="rss-widget-icon" style="border:0" width="14" height="14" src="' . esc_url( $icon ) . '" alt="RSS" /></a> <a class="rsswidget" href="' . esc_url( $link ) . '">"'. esc_html( $title ) .'"</a>';
+ $title = '<a class="rsswidget" href="' . esc_url( $url ) . '"><img class="rss-widget-icon" style="border:0" width="14" height="14" src="' . esc_url( $icon ) . '" alt="RSS" /></a> <a class="rsswidget" href="' . esc_url( $link ) . '">'. esc_html( $title ) . '</a>';
echo $args['before_widget'];
if ( $title ) {
$redirect_to = apply_filters( 'registration_redirect', $registration_redirect );
login_header(__('Registration Form'), '<p class="message register">' . __('Register For This Site') . '</p>', $errors);
?>
-
-<form name="registerform" id="registerform" action="<?php echo esc_url( wp_registration_url() ); ?>" method="post" novalidate="novalidate">
+<form name="registerform" id="registerform" action="<?php echo esc_url( site_url( 'wp-login.php?action=register', 'login_post' ) ); ?>" method="post" novalidate="novalidate">
<p>
<label for="user_login"><?php _e('Username') ?><br />
<input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr(wp_unslash($user_login)); ?>" size="20" /></label>
}
?>
-<form name="loginform" id="loginform" action="<?php echo esc_url( wp_login_url() ); ?>" method="post">
+<form name="loginform" id="loginform" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>" method="post">
<p>
<label for="user_login"><?php _e('Username') ?><br />
<input type="text" name="log" id="user_login"<?php echo $aria_describedby_error; ?> class="input" value="<?php echo esc_attr( $user_login ); ?>" size="20" /></label>