]> _ Git - couzy.git/commitdiff
#couzy : upgrade wordpress (4.4.2) and plugins
authorvincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Mon, 29 Feb 2016 15:51:39 +0000 (15:51 +0000)
committervincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Mon, 29 Feb 2016 15:51:39 +0000 (15:51 +0000)
284 files changed:
cesaretleonie.fr/wp-admin/about.php
cesaretleonie.fr/wp-admin/includes/image.php
cesaretleonie.fr/wp-admin/js/inline-edit-tax.js
cesaretleonie.fr/wp-admin/js/inline-edit-tax.min.js
cesaretleonie.fr/wp-admin/widgets.php
cesaretleonie.fr/wp-content/languages/admin-fr_FR.po
cesaretleonie.fr/wp-content/languages/fr_FR.mo
cesaretleonie.fr/wp-content/languages/fr_FR.po
cesaretleonie.fr/wp-content/languages/plugins/wordpress-seo-fr_FR.mo
cesaretleonie.fr/wp-content/languages/plugins/wordpress-seo-fr_FR.po
cesaretleonie.fr/wp-content/languages/themes/twentysixteen-fr_FR.mo
cesaretleonie.fr/wp-content/languages/themes/twentysixteen-fr_FR.po
cesaretleonie.fr/wp-content/plugins/contact-form-7/admin/admin.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/admin/css/styles-rtl.css
cesaretleonie.fr/wp-content/plugins/contact-form-7/admin/css/styles.css
cesaretleonie.fr/wp-content/plugins/contact-form-7/admin/edit-contact-form.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/admin/includes/admin-functions.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/admin/includes/class-contact-forms-list-table.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/admin/includes/editor.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/admin/includes/help-tabs.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/admin/js/tag-generator.js
cesaretleonie.fr/wp-content/plugins/contact-form-7/includes/config-validator.php [new file with mode: 0644]
cesaretleonie.fr/wp-content/plugins/contact-form-7/includes/contact-form-template.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/includes/contact-form.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/includes/functions.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/includes/integration.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/includes/l10n.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/includes/mail.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-bel.mo [new file with mode: 0644]
cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-eo.mo [new file with mode: 0644]
cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-ga.mo [new file with mode: 0644]
cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-gu.mo [new file with mode: 0644]
cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-hy.mo [new file with mode: 0644]
cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-ta_IN.mo [new file with mode: 0644]
cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7.pot
cesaretleonie.fr/wp-content/plugins/contact-form-7/license.txt
cesaretleonie.fr/wp-content/plugins/contact-form-7/modules/date.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/modules/file.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/modules/flamingo.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/modules/number.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/modules/quiz.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/modules/text.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/readme.txt
cesaretleonie.fr/wp-content/plugins/contact-form-7/settings.php
cesaretleonie.fr/wp-content/plugins/contact-form-7/wp-contact-form-7.php
cesaretleonie.fr/wp-content/plugins/wordfence/css/main.css
cesaretleonie.fr/wp-content/plugins/wordfence/lib/GeoIP.dat
cesaretleonie.fr/wp-content/plugins/wordfence/lib/email_genericAlert.php
cesaretleonie.fr/wp-content/plugins/wordfence/lib/email_newIssues.php
cesaretleonie.fr/wp-content/plugins/wordfence/lib/menu_countryBlocking.php
cesaretleonie.fr/wp-content/plugins/wordfence/lib/menu_options.php
cesaretleonie.fr/wp-content/plugins/wordfence/lib/menu_passwd.php
cesaretleonie.fr/wp-content/plugins/wordfence/lib/menu_scan.php
cesaretleonie.fr/wp-content/plugins/wordfence/lib/menu_scanSchedule.php
cesaretleonie.fr/wp-content/plugins/wordfence/lib/menu_twoFactor.php
cesaretleonie.fr/wp-content/plugins/wordfence/lib/wfActivityReport.php
cesaretleonie.fr/wp-content/plugins/wordfence/lib/wfIPWhitelist.php [new file with mode: 0644]
cesaretleonie.fr/wp-content/plugins/wordfence/lib/wfLog.php
cesaretleonie.fr/wp-content/plugins/wordfence/lib/wfUtils.php
cesaretleonie.fr/wp-content/plugins/wordfence/readme.txt
cesaretleonie.fr/wp-content/plugins/wordfence/tmp/configCache.php
cesaretleonie.fr/wp-content/plugins/wordfence/wordfence.php
cesaretleonie.fr/wp-includes/class-wp-comment-query.php
cesaretleonie.fr/wp-includes/class-wp-customize-manager.php
cesaretleonie.fr/wp-includes/comment-template.php
cesaretleonie.fr/wp-includes/formatting.php
cesaretleonie.fr/wp-includes/http.php
cesaretleonie.fr/wp-includes/js/wp-emoji-loader.js
cesaretleonie.fr/wp-includes/js/wp-emoji-loader.min.js
cesaretleonie.fr/wp-includes/kses.php
cesaretleonie.fr/wp-includes/load.php
cesaretleonie.fr/wp-includes/ms-blogs.php
cesaretleonie.fr/wp-includes/pluggable.php
cesaretleonie.fr/wp-includes/query.php
cesaretleonie.fr/wp-includes/random_compat/random.php
cesaretleonie.fr/wp-includes/taxonomy.php
cesaretleonie.fr/wp-includes/version.php
mdryvescouzy.com/wp-admin/about.php
mdryvescouzy.com/wp-admin/includes/image.php
mdryvescouzy.com/wp-admin/js/inline-edit-tax.js
mdryvescouzy.com/wp-admin/js/inline-edit-tax.min.js
mdryvescouzy.com/wp-admin/widgets.php
mdryvescouzy.com/wp-content/languages/admin-fr_FR.po
mdryvescouzy.com/wp-content/languages/fr_FR.mo
mdryvescouzy.com/wp-content/languages/fr_FR.po
mdryvescouzy.com/wp-content/languages/plugins/wordpress-seo-fr_FR.mo
mdryvescouzy.com/wp-content/languages/plugins/wordpress-seo-fr_FR.po
mdryvescouzy.com/wp-content/languages/themes/twentysixteen-fr_FR.mo
mdryvescouzy.com/wp-content/languages/themes/twentysixteen-fr_FR.po
mdryvescouzy.com/wp-content/plugins/contact-form-7/admin/admin.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/admin/css/styles-rtl.css
mdryvescouzy.com/wp-content/plugins/contact-form-7/admin/css/styles.css
mdryvescouzy.com/wp-content/plugins/contact-form-7/admin/edit-contact-form.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/admin/includes/admin-functions.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/admin/includes/class-contact-forms-list-table.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/admin/includes/editor.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/admin/includes/help-tabs.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/admin/js/tag-generator.js
mdryvescouzy.com/wp-content/plugins/contact-form-7/includes/config-validator.php [new file with mode: 0644]
mdryvescouzy.com/wp-content/plugins/contact-form-7/includes/contact-form-template.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/includes/contact-form.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/includes/functions.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/includes/integration.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/includes/l10n.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/includes/mail.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-bel.mo [new file with mode: 0644]
mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-eo.mo [new file with mode: 0644]
mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-ga.mo [new file with mode: 0644]
mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-gu.mo [new file with mode: 0644]
mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-hy.mo [new file with mode: 0644]
mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-ta_IN.mo [new file with mode: 0644]
mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7.pot
mdryvescouzy.com/wp-content/plugins/contact-form-7/license.txt
mdryvescouzy.com/wp-content/plugins/contact-form-7/modules/date.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/modules/file.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/modules/flamingo.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/modules/number.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/modules/quiz.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/modules/text.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/readme.txt
mdryvescouzy.com/wp-content/plugins/contact-form-7/settings.php
mdryvescouzy.com/wp-content/plugins/contact-form-7/wp-contact-form-7.php
mdryvescouzy.com/wp-content/plugins/wordfence/css/main.css
mdryvescouzy.com/wp-content/plugins/wordfence/lib/GeoIP.dat
mdryvescouzy.com/wp-content/plugins/wordfence/lib/email_genericAlert.php
mdryvescouzy.com/wp-content/plugins/wordfence/lib/email_newIssues.php
mdryvescouzy.com/wp-content/plugins/wordfence/lib/menu_countryBlocking.php
mdryvescouzy.com/wp-content/plugins/wordfence/lib/menu_options.php
mdryvescouzy.com/wp-content/plugins/wordfence/lib/menu_passwd.php
mdryvescouzy.com/wp-content/plugins/wordfence/lib/menu_scan.php
mdryvescouzy.com/wp-content/plugins/wordfence/lib/menu_scanSchedule.php
mdryvescouzy.com/wp-content/plugins/wordfence/lib/menu_twoFactor.php
mdryvescouzy.com/wp-content/plugins/wordfence/lib/wfActivityReport.php
mdryvescouzy.com/wp-content/plugins/wordfence/lib/wfIPWhitelist.php [new file with mode: 0644]
mdryvescouzy.com/wp-content/plugins/wordfence/lib/wfLog.php
mdryvescouzy.com/wp-content/plugins/wordfence/lib/wfUtils.php
mdryvescouzy.com/wp-content/plugins/wordfence/readme.txt
mdryvescouzy.com/wp-content/plugins/wordfence/tmp/configCache.php
mdryvescouzy.com/wp-content/plugins/wordfence/wordfence.php
mdryvescouzy.com/wp-content/uploads/2014/12/vignes-900x444.jpg [new file with mode: 0644]
mdryvescouzy.com/wp-content/uploads/2016/02/LAF-février-2016.pdf [new file with mode: 0644]
mdryvescouzy.com/wp-includes/class-wp-comment-query.php
mdryvescouzy.com/wp-includes/class-wp-customize-manager.php
mdryvescouzy.com/wp-includes/comment-template.php
mdryvescouzy.com/wp-includes/formatting.php
mdryvescouzy.com/wp-includes/http.php
mdryvescouzy.com/wp-includes/js/wp-emoji-loader.js
mdryvescouzy.com/wp-includes/js/wp-emoji-loader.min.js
mdryvescouzy.com/wp-includes/kses.php
mdryvescouzy.com/wp-includes/load.php
mdryvescouzy.com/wp-includes/ms-blogs.php
mdryvescouzy.com/wp-includes/pluggable.php
mdryvescouzy.com/wp-includes/query.php
mdryvescouzy.com/wp-includes/random_compat/random.php
mdryvescouzy.com/wp-includes/taxonomy.php
mdryvescouzy.com/wp-includes/version.php
pavillonmadeleine.fr/license.txt
pavillonmadeleine.fr/readme.bddf3a99303ce0131860f6948cb40055.html
pavillonmadeleine.fr/wp-admin/about.php
pavillonmadeleine.fr/wp-admin/includes/class-wp-filesystem-ftpext.php
pavillonmadeleine.fr/wp-admin/includes/class-wp-filesystem-ftpsockets.php
pavillonmadeleine.fr/wp-admin/includes/class-wp-screen.php
pavillonmadeleine.fr/wp-admin/includes/image.php
pavillonmadeleine.fr/wp-admin/includes/screen.php
pavillonmadeleine.fr/wp-admin/js/common.js
pavillonmadeleine.fr/wp-admin/js/common.min.js
pavillonmadeleine.fr/wp-admin/js/inline-edit-tax.js
pavillonmadeleine.fr/wp-admin/js/inline-edit-tax.min.js
pavillonmadeleine.fr/wp-admin/js/postbox.js
pavillonmadeleine.fr/wp-admin/js/postbox.min.js
pavillonmadeleine.fr/wp-admin/users.php
pavillonmadeleine.fr/wp-admin/widgets.php
pavillonmadeleine.fr/wp-config-sample.php
pavillonmadeleine.fr/wp-content/languages/admin-fr_FR.mo
pavillonmadeleine.fr/wp-content/languages/admin-fr_FR.po
pavillonmadeleine.fr/wp-content/languages/fr_FR.mo
pavillonmadeleine.fr/wp-content/languages/fr_FR.po
pavillonmadeleine.fr/wp-content/languages/plugins/akismet-fr_FR.mo
pavillonmadeleine.fr/wp-content/languages/plugins/akismet-fr_FR.po
pavillonmadeleine.fr/wp-content/languages/plugins/wordpress-seo-fr_FR.mo
pavillonmadeleine.fr/wp-content/languages/plugins/wordpress-seo-fr_FR.po
pavillonmadeleine.fr/wp-content/languages/themes/twentysixteen-fr_FR.mo
pavillonmadeleine.fr/wp-content/languages/themes/twentysixteen-fr_FR.po
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/admin/admin.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/admin/css/styles-rtl.css
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/admin/css/styles.css
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/admin/edit-contact-form.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/admin/includes/admin-functions.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/admin/includes/class-contact-forms-list-table.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/admin/includes/editor.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/admin/includes/help-tabs.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/admin/js/tag-generator.js
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/includes/config-validator.php [new file with mode: 0644]
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/includes/contact-form-template.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/includes/contact-form.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/includes/functions.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/includes/integration.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/includes/l10n.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/includes/mail.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-bel.mo [new file with mode: 0644]
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-eo.mo [new file with mode: 0644]
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-ga.mo [new file with mode: 0644]
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-gu.mo [new file with mode: 0644]
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-hy.mo [new file with mode: 0644]
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-ta_IN.mo [new file with mode: 0644]
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7.pot
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/license.txt
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/modules/date.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/modules/file.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/modules/flamingo.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/modules/number.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/modules/quiz.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/modules/text.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/readme.txt
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/settings.php
pavillonmadeleine.fr/wp-content/plugins/contact-form-7/wp-contact-form-7.php
pavillonmadeleine.fr/wp-content/plugins/wordfence/css/main.css
pavillonmadeleine.fr/wp-content/plugins/wordfence/lib/GeoIP.dat
pavillonmadeleine.fr/wp-content/plugins/wordfence/lib/email_genericAlert.php
pavillonmadeleine.fr/wp-content/plugins/wordfence/lib/email_newIssues.php
pavillonmadeleine.fr/wp-content/plugins/wordfence/lib/menu_countryBlocking.php
pavillonmadeleine.fr/wp-content/plugins/wordfence/lib/menu_options.php
pavillonmadeleine.fr/wp-content/plugins/wordfence/lib/menu_passwd.php
pavillonmadeleine.fr/wp-content/plugins/wordfence/lib/menu_scan.php
pavillonmadeleine.fr/wp-content/plugins/wordfence/lib/menu_scanSchedule.php
pavillonmadeleine.fr/wp-content/plugins/wordfence/lib/menu_twoFactor.php
pavillonmadeleine.fr/wp-content/plugins/wordfence/lib/wfActivityReport.php
pavillonmadeleine.fr/wp-content/plugins/wordfence/lib/wfIPWhitelist.php [new file with mode: 0644]
pavillonmadeleine.fr/wp-content/plugins/wordfence/lib/wfLog.php
pavillonmadeleine.fr/wp-content/plugins/wordfence/lib/wfUtils.php
pavillonmadeleine.fr/wp-content/plugins/wordfence/readme.txt
pavillonmadeleine.fr/wp-content/plugins/wordfence/tmp/configCache.php
pavillonmadeleine.fr/wp-content/plugins/wordfence/wordfence.php
pavillonmadeleine.fr/wp-content/uploads/2016/02/DOSSIER-DE-SUIVI-PERSONNALISE-PM.pdf [new file with mode: 0644]
pavillonmadeleine.fr/wp-includes/category-template.php
pavillonmadeleine.fr/wp-includes/certificates/ca-bundle.crt
pavillonmadeleine.fr/wp-includes/class-IXR.php
pavillonmadeleine.fr/wp-includes/class-oembed.php
pavillonmadeleine.fr/wp-includes/class-phpmailer.php
pavillonmadeleine.fr/wp-includes/class-smtp.php
pavillonmadeleine.fr/wp-includes/class-wp-comment-query.php
pavillonmadeleine.fr/wp-includes/class-wp-customize-manager.php
pavillonmadeleine.fr/wp-includes/class-wp-theme.php
pavillonmadeleine.fr/wp-includes/class-wp-walker.php
pavillonmadeleine.fr/wp-includes/class-wp-xmlrpc-server.php
pavillonmadeleine.fr/wp-includes/class-wp.php
pavillonmadeleine.fr/wp-includes/comment-template.php
pavillonmadeleine.fr/wp-includes/comment.php
pavillonmadeleine.fr/wp-includes/customize/class-wp-customize-themes-section.php
pavillonmadeleine.fr/wp-includes/embed-template.php
pavillonmadeleine.fr/wp-includes/embed.php
pavillonmadeleine.fr/wp-includes/formatting.php
pavillonmadeleine.fr/wp-includes/functions.php
pavillonmadeleine.fr/wp-includes/general-template.php
pavillonmadeleine.fr/wp-includes/http.php
pavillonmadeleine.fr/wp-includes/js/autosave.js
pavillonmadeleine.fr/wp-includes/js/autosave.min.js
pavillonmadeleine.fr/wp-includes/js/media-views.js
pavillonmadeleine.fr/wp-includes/js/media-views.min.js
pavillonmadeleine.fr/wp-includes/js/twemoji.js
pavillonmadeleine.fr/wp-includes/js/twemoji.min.js
pavillonmadeleine.fr/wp-includes/js/wp-emoji-loader.js
pavillonmadeleine.fr/wp-includes/js/wp-emoji-loader.min.js
pavillonmadeleine.fr/wp-includes/js/wp-emoji-release.min.js
pavillonmadeleine.fr/wp-includes/js/wp-emoji.js
pavillonmadeleine.fr/wp-includes/js/wp-emoji.min.js
pavillonmadeleine.fr/wp-includes/kses.php
pavillonmadeleine.fr/wp-includes/link-template.php
pavillonmadeleine.fr/wp-includes/load.php
pavillonmadeleine.fr/wp-includes/media.php
pavillonmadeleine.fr/wp-includes/ms-blogs.php
pavillonmadeleine.fr/wp-includes/nav-menu-template.php
pavillonmadeleine.fr/wp-includes/pluggable.php
pavillonmadeleine.fr/wp-includes/post.php
pavillonmadeleine.fr/wp-includes/query.php
pavillonmadeleine.fr/wp-includes/random_compat/random.php
pavillonmadeleine.fr/wp-includes/random_compat/random_bytes_dev_urandom.php
pavillonmadeleine.fr/wp-includes/shortcodes.php
pavillonmadeleine.fr/wp-includes/taxonomy.php
pavillonmadeleine.fr/wp-includes/update.php
pavillonmadeleine.fr/wp-includes/version.php
pavillonmadeleine.fr/wp-includes/widgets.php
pavillonmadeleine.fr/wp-includes/widgets/class-wp-widget-rss.php
pavillonmadeleine.fr/wp-login.php

index 8810c8ba35d59fb4bbd42253053fb5a99a9163c7..a808afca39fc5b416caa3d9187836f66bae485c9 100644 (file)
@@ -49,7 +49,11 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
                </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' ); ?>
index 139d40507052d31a7c9239ec626efd97f3478635..2faccfe71a23f6f5cdafda6f50aec781155814b1 100644 (file)
@@ -408,12 +408,14 @@ function wp_read_image_metadata( $file ) {
                }
        }
 
-       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.
         *
index a05dc0954fa7b9863e4b1c9217e4460b1366fd43..b1090de44b1860fb56b94b6e44a9348e09ca81ed 100644 (file)
@@ -137,6 +137,8 @@ inlineEditTax = {
                                }
                        }
                );
+               // Prevent submitting the form when pressing Enter on a focused field.
+               return false;
        },
 
        revert : function() {
index 14b3b8a7acfb76febd44857c36cd8e3a1ea732b6..c99a76b80f5a8f7f588a4977a76ff23c431dffda 100644 (file)
@@ -1 +1 @@
-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
index 3b43ac06d2ae1e5775f9349d74b7ecc2992491b9..0abd81c24454e9dceb1820a5b9b36abf65bb4d18 100644 (file)
@@ -406,10 +406,13 @@ foreach ( $wp_registered_sidebars as $sidebar => $registered_sidebar ) {
                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>
@@ -427,8 +430,11 @@ foreach ( $wp_registered_sidebars as $sidebar => $registered_sidebar ) {
                                                <?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
 
index 3e0fdeb4ea04f27c1b404b300a6a67d3888c4d49..f7ad089bcb539618ccfe7ac79eb7150b16ce061f 100644 (file)
@@ -16,79 +16,79 @@ msgstr "Merci d&rsquo;avoir fait la mise à jour&nbsp;! WordPress %s vous donne
 
 #. 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&rsquo;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&rsquo;infrastructure est la première partie d&rsquo;une mise en place en plusieurs étapes de l&rsquo;API REST. L&rsquo;inclusion des points d&rsquo;accès est prévue pour une prochaine version. Pour avoir un aperçu des principaux points d&rsquo;accès, et pour obtenir plus d&rsquo;information sur la manière d&rsquo;étendre l&rsquo;API REST, découvrez l&rsquo;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&rsquo;infrastructure de l&rsquo;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&rsquo;API REST a été conçue pour offrir aux développeurs une manière centrale de construire et d&rsquo;é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&nbsp;Comments, ReverbNation, Speaker&nbsp;Deck, and VideoPress."
 msgstr "En plus de l&rsquo;insertion de contenu, WordPress 4.4 apporte la reconnaissance de cinq nouveaux fournisseurs oEmbed&nbsp;: Cloudup, Reddit&nbsp;Comments, ReverbNation, Speaker&nbsp;Deck et VideoPress."
 
-#: wp-admin/about.php:137
+#: wp-admin/about.php:141
 msgid "REST API infrastructure"
 msgstr "Infrastructure de l&rsquo;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&#8217;ve set one. We&#8217;ll even include your site icon and links for comments and sharing."
 msgstr "Vous pouvez désormais insérer vos articles dans d&rsquo;autres sites, et même dans d&rsquo;autres sites WordPress. Collez simplement l&rsquo;adresse du contenu dans l&rsquo;éditeur, et une prévisualisation s&rsquo;affichera instantanément, avec titre, extrait, et l&rsquo;image de Une si vous avez mise une. Vous y trouverez même l&rsquo;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&#8217;t need to do anything to your theme, it just works."
 msgstr "WordPress approche désormais l&rsquo;affichage des images de manière plus intelligente, utilisant à chaque fois la taille d&rsquo;image la plus pertinente en fonction de l&rsquo;appareil utilisé. Vous n&rsquo;avez rien à changer à votre thème&nbsp;: ça fonctionne, c&rsquo;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&rsquo;un thème de blog classique."
 
-#: wp-admin/about.php:67
+#: wp-admin/about.php:71
 msgid "Twenty Sixteen"
 msgstr "Twenty Sixteen"
 
@@ -107,7 +107,7 @@ msgid "(Currently set to: %s)"
 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é."
 
@@ -129,15 +129,15 @@ msgstr "Vous pouvez changer votre image de profil en passant par <a href=\"%s\">
 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é"
 
@@ -317,7 +317,7 @@ msgstr "Les fichiers du répertoire %s sont exécutés automatiquement."
 msgid "You are not allowed to manage these items."
 msgstr "Vous n&rsquo;ê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."
 
@@ -333,7 +333,7 @@ msgstr "Un des utilisateurs sélectionnés n&rsquo;est pas un abonné de ce site
 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"
 
@@ -1976,7 +1976,7 @@ msgstr "Vous pouvez activer le mode d'écriture sans distraction en cliquant sur
 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"
 
@@ -2777,7 +2777,7 @@ msgstr "Affichier le thème précédent"
 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"
 
@@ -4953,13 +4953,13 @@ msgid "Show Toolbar when viewing site"
 msgstr "Afficher la barre d&rsquo;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&rsquo;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."
@@ -4967,14 +4967,14 @@ msgstr[1] "La <strong>version %1$s</strong> a corrigé un problème de sécurit
 
 #. 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."
@@ -4984,15 +4984,15 @@ msgstr[1] "La <strong>version %1$s</strong> a corrigé %2$s bugs."
 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&nbsp;! Ceci est l&rsquo;écran que vous verrez lorsque vous vous connectez à votre site, et qui vous donne accès à l&rsquo;ensemble des fonctionnalités de gestion de WordPress. Vous pouvez obtenir de l&rsquo;aide dans n&rsquo;importe quel écran en cliquant sur l&rsquo;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é"
@@ -5003,7 +5003,7 @@ msgid "What&#8217;s New"
 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é."
 
@@ -5011,7 +5011,7 @@ msgstr "La <strong>version %s</strong> a corrigé quelques problèmes de sécuri
 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"
 
@@ -5303,11 +5303,11 @@ msgstr "Il semble y avoir une inclusion directe de <code>wp-admin/includes/templ
 msgid "Welcome to WordPress %s"
 msgstr "Bienvenue dans WordPress %s"
 
-#: wp-admin/about.php:197
+#: wp-admin/about.php:201
 msgid "Return to Dashboard &rarr; Updates"
 msgstr "Retourner aux mises à jour"
 
-#: wp-admin/about.php:200
+#: wp-admin/about.php:204
 msgid "Go to Dashboard &rarr; Home"
 msgstr "Aller sur l&rsquo;accueil"
 
@@ -5319,7 +5319,7 @@ msgstr "WordPress est créé par une équipe de personnes passionnées, réparti
 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"
 
@@ -7455,7 +7455,7 @@ msgid_plural "Drop-ins <span class=\"count\">(%s)</span>"
 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"
 
index c4af71516f97f7091c79e2f00ecf47709811a845..8fcf07692b1a2a00fadbee89ccdbd2d43a39759f 100644 (file)
Binary files a/cesaretleonie.fr/wp-content/languages/fr_FR.mo and b/cesaretleonie.fr/wp-content/languages/fr_FR.mo differ
index 820f35c0160e5cdc76cdf5fc6b4c00f17d3ccbf8..0f18f11c8fc9b17fb74fdcc2d481a0d633bb1e6a 100644 (file)
@@ -2,7 +2,7 @@
 # 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"
@@ -660,7 +660,7 @@ msgstr "Une fois en mode de réorganisation, des options de contrôle supplémen
 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&nbsp;?</a>"
 
@@ -859,7 +859,7 @@ msgstr "Ajouter une nouvelle image d&rsquo;en-tête"
 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"
 
@@ -867,11 +867,11 @@ 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&rsquo;icône du site est utilisée pour représenter votre site en tant qu&rsquo;icône de navigateur (favicon) et icône d&rsquo;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"
 
@@ -896,7 +896,7 @@ msgstr "Votre lien de réinitialisation de mot de passe semble être invalide. V
 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&nbsp;:"
 
@@ -1156,10 +1156,6 @@ msgstr "Barre d'outils en ligne (quand une image, un lien ou un aperçu est sél
 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&nbsp;:"
-
 #: wp-includes/class-wp-editor.php:1051
 msgid "Ctrl + letter:"
 msgstr "Ctrl + lettre :"
@@ -1184,6 +1180,10 @@ msgstr "Raccourcis par défaut,"
 msgid "Additional shortcuts,"
 msgstr "Raccourcis supplémentaires,"
 
+#: wp-includes/widgets/class-wp-widget-text.php:107
+msgid "Content:"
+msgstr "Contenu&nbsp;:"
+
 #: wp-includes/class-wp-customize-section.php:236
 #: wp-includes/customize/class-wp-customize-themes-section.php:55
 msgid "Customizing"
@@ -1639,13 +1639,13 @@ msgid "F j, Y @ H:i: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&nbsp;: %1$s (IP&nbsp;: %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&nbsp;: %1$s (IP&nbsp;: %2$s, %3$s)"
 
@@ -1677,24 +1677,24 @@ msgid "The %1$s option is deprecated for the family of %2$s functions. Use the %
 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>"
 
@@ -1839,26 +1839,26 @@ msgctxt "translations"
 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"
 
@@ -1953,7 +1953,7 @@ 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"
 
@@ -3966,11 +3966,11 @@ msgstr "Aller à la barre d&rsquo;outils"
 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&rsquo;en-tête"
 
-#: wp-includes/class-wp-customize-manager.php:1839
+#: wp-includes/class-wp-customize-manager.php:1841
 msgid "Colors"
 msgstr "Couleurs"
 
@@ -4005,7 +4005,7 @@ msgstr "Arguments insuffisants passés à cette méthode XML-RPC."
 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&rsquo;en-tête"
@@ -4046,31 +4046,31 @@ msgstr "L&#8217;identifiant du site doit utiliser au moins 4 caractères."
 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&rsquo;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&rsquo;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&rsquo;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&rsquo;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"
@@ -4087,35 +4087,35 @@ msgstr "Retirer l&rsquo;image"
 msgid "Sorry, you are not allowed to edit this post type."
 msgstr "Désolé, vous n&rsquo;avez pas l&rsquo;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&rsquo;accueil"
 
-#: wp-includes/class-wp-customize-manager.php:2025
+#: wp-includes/class-wp-customize-manager.php:2027
 msgid "Posts page"
 msgstr "Page des articles"
 
@@ -4231,23 +4231,23 @@ msgstr "Le thème &laquo;&nbsp;%s&nbsp;&raquo; n&rsquo;est un thème parent vali
 msgid "&mdash; Select &mdash;"
 msgstr "&mdash; Sélectionner &mdash;"
 
-#: wp-includes/class-wp-customize-manager.php:1983
+#: wp-includes/class-wp-customize-manager.php:1985
 msgid "Static Front Page"
 msgstr "Page d&rsquo;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&rsquo;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"
 
@@ -4721,7 +4721,7 @@ 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&nbsp;: %s"
 
@@ -4805,12 +4805,12 @@ msgid "No pages found."
 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"
@@ -4921,7 +4921,7 @@ msgstr "Article non valide"
 msgid "Invalid taxonomy: %s."
 msgstr "Taxinomie non valide&nbsp;: %s"
 
-#: wp-includes/query.php:2549
+#: wp-includes/query.php:2552
 msgid "\"caller_get_posts\" is deprecated. Use \"ignore_sticky_posts\" instead."
 msgstr "&laquo;&nbsp;caller_get_posts&nbsp;&raquo; n&rsquo;est plus recommandé. Utilisez &laquo;&nbsp;ignore_sticky_posts&nbsp;&raquo; à la place."
 
@@ -5181,7 +5181,7 @@ msgstr "<strong>Les valeurs des constantes VHOST et SUBDOMAIN_INSTALL ne corresp
 msgid "<strong>ERROR</strong>: This username is invalid because it uses illegal characters. Please enter a valid username."
 msgstr "<strong>ERREUR</strong>&nbsp;: cet identifiant n&rsquo;est pas valide, car il utilise des caractères non autorisés. Merci d&rsquo;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"
 
@@ -5308,7 +5308,7 @@ msgstr "Inscription d'un nouveau site : %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 :"
 
@@ -5348,7 +5348,7 @@ msgstr "Une erreur est survenue lors de votre ajout à ce site. Retournez à l&r
 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."
 
@@ -5509,7 +5509,7 @@ msgstr "Mais, avant d&#8217;utiliser votre nouveau site, <strong>vous devez l&#8
 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"
 
@@ -5517,23 +5517,23 @@ msgstr "Un nouveau rétrolien sur l'article « %s » attend votre approbation"
 msgid "If you&#8217;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&nbsp;!"
 
-#: 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"
 
@@ -5807,11 +5807,11 @@ msgstr "L&rsquo;utilisateur a bloqué les requêtes HTTP."
 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"
 
@@ -6520,46 +6520,46 @@ msgstr "Que dois-je faire maintenant ?"
 msgid "<strong>ERROR</strong>: Invalid username or incorrect password."
 msgstr "<strong>ERREUR</strong>&nbsp;: l&rsquo;identifiant ou le mot de passe n&rsquo;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"
 
@@ -7007,11 +7007,11 @@ msgid "Sorry, that username already exists!"
 msgstr "Désolé, cet identifiant existe déjà&nbsp;!"
 
 #. 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 »"
 
@@ -7102,7 +7102,7 @@ msgstr "IDs de pages, séparés par une virgule."
 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&rsquo;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"
 
@@ -7195,7 +7195,7 @@ msgstr " "
 msgid "By: %s"
 msgstr "Par&nbsp;: %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"
 
@@ -7267,12 +7267,12 @@ msgid "Friday"
 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 »"
 
@@ -7371,7 +7371,7 @@ msgstr "Réglages"
 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"
@@ -7418,7 +7418,7 @@ msgstr "Titre&nbsp;:"
 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"
@@ -7473,7 +7473,7 @@ msgstr "Connecté(e) en tant que %s."
 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."
 
@@ -7549,24 +7549,24 @@ msgstr[1] "%s sujets"
 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"
@@ -7635,7 +7635,7 @@ msgstr "Cette page est en XHTML 1.0 Transitional valide"
 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."
 
@@ -7643,7 +7643,7 @@ msgstr "Cliquez ici pour annuler la réponse."
 msgid "<strong>ERROR</strong>: Please enter a username."
 msgstr "<strong>ERREUR</strong>&nbsp;: veuillez renseigner l&rsquo;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"
@@ -7674,7 +7674,7 @@ msgstr "Écrire un commentaire"
 msgid "Tags: "
 msgstr "Étiquettes&nbsp;: "
 
-#: 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."
@@ -7704,7 +7704,7 @@ msgstr "Auteur"
 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"
@@ -7713,19 +7713,19 @@ 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"
@@ -7810,7 +7810,7 @@ msgstr "Catégories"
 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"
@@ -7916,7 +7916,7 @@ msgstr "Enregistrer brouillon"
 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"
 
@@ -8120,8 +8120,8 @@ msgstr "Aperçu"
 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"
 
index 5fcddf9d8b6b34b1bcea1ffda5edc37867d1cbde..b01641c7b9b160ceba467e00170daaea9992c851 100644 (file)
Binary files a/cesaretleonie.fr/wp-content/languages/plugins/wordpress-seo-fr_FR.mo and b/cesaretleonie.fr/wp-content/languages/plugins/wordpress-seo-fr_FR.mo differ
index 0c3948a3fa277c8b2421c929061b3b5f33c15b23..49a62211208f4de3b2eceede13643da9a1de3aea 100644 (file)
@@ -2,7 +2,7 @@
 # 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"
@@ -10,15 +10,16 @@ msgstr ""
 "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&rsquo;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&rsquo;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
@@ -36,11 +37,6 @@ msgstr "Supprimer les variables %s."
 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."
@@ -51,10 +47,6 @@ msgstr "Si vous ne souhaitez pas utiliser le titre de l&rsquo;article pour le pa
 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&rsquo;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"
@@ -64,11 +56,6 @@ 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?"
@@ -94,33 +81,29 @@ msgstr "Architecte"
 #. 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&rsquo;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."
@@ -135,44 +118,18 @@ msgstr "Recalculer les scores SEO"
 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&nbsp;: 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&nbsp;: 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&nbsp;: les moteurs de recherche ne peuvent plus indexer %1$s&nbsp;!"
-
-#. 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&nbsp;: les moteurs de recherche ne peuvent pas indexer %1$s&nbsp;!"
-
-#: 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
@@ -188,10 +145,6 @@ msgstr "wpSEO a été désactivé"
 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
@@ -200,7 +153,7 @@ msgstr "Pour pouvoir ajouter et analyser plusieurs mots clés sur un article ou
 
 #. 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&rsquo;algorithme de calcul de nos scores SEO. %1$sCliquez ici pour les recalculer%2$s pour l&rsquo;ensemble de vos articles et pages."
 
@@ -233,11 +186,6 @@ msgstr "L&rsquo;extension All-In-One-SEO a été détectée. Voulez-vous %simpor
 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&rsquo;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"
@@ -251,7 +199,7 @@ msgstr "Ajouter un mot-clé"
 msgid "Buy %s &raquo;"
 msgstr "Achetez %s &raquo;"
 
-#: admin/class-admin-init.php:372
+#: admin/class-admin-init.php:377
 msgid "%s filter/action"
 msgstr "%s filtre/action"
 
@@ -261,14 +209,14 @@ 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&rsquo;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"
@@ -295,18 +243,6 @@ msgstr "%s ne semble pas être une URL valide. Veuillez corriger cela."
 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&nbsp: Réglages de la licence"
@@ -315,10 +251,6 @@ msgstr "%s&nbsp: 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&nbsp;?</a>"
@@ -327,10 +259,6 @@ msgstr "<a href=\"%s\">Saviez-vous que vous pouvez mettre à jour votre licence&
 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&nbsp;?</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>."
@@ -339,10 +267,6 @@ msgstr "<strong>%s la version de %s</strong> est disponible. <a href=\"%s\" clas
 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"
@@ -403,10 +327,6 @@ msgstr "Erreur 404: Page introuvable"
 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."
@@ -467,22 +387,6 @@ msgstr "Collez ici votre clé de licence pour %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 &raquo;"
-msgstr "S'enregistrer maintenant &raquo;"
-
 #: 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)"
@@ -507,38 +411,10 @@ msgstr "Résumé"
 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."
@@ -551,18 +427,6 @@ msgstr "Cet article %s est apparu en premier sur %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"
@@ -571,10 +435,6 @@ 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"
@@ -599,18 +459,6 @@ msgstr "Vous avez cherché"
 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."
@@ -635,12 +483,121 @@ msgstr "https://yoast.com/"
 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 &raquo;"
+msgstr "S’enregistrer maintenant &raquo;"
+
+#. 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 :"
 
@@ -656,7 +613,7 @@ msgstr "Réglages de %1$s"
 msgid "%s Archives"
 msgstr "%s Archives"
 
-#: admin/pages/tools.php:71
+#: admin/pages/tools.php:70
 msgid "&laquo; Back to Tools page"
 msgstr "&laquo; Retour à la page Outils"
 
@@ -664,34 +621,10 @@ msgstr "&laquo; 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+ "
@@ -700,11 +633,6 @@ 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>&lt;head&gt;</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"
@@ -714,26 +642,10 @@ 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&nbsp;: 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&nbsp;"
-
 #: 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&#8217; 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"
@@ -742,10 +654,6 @@ 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&nbsp;"
-
 #: admin/pages/tools.php:24
 msgid "Bulk editor"
 msgstr "Éditeur par lot"
@@ -799,10 +707,6 @@ msgstr "Crédits"
 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&nbsp"
@@ -828,14 +732,6 @@ msgstr "Modifier le contenu de votre fichier .htaccess&nbsp;:"
 msgid "Edit the content of your robots.txt:"
 msgstr "Modifier le contenu de votre fichier robots.txt&nbsp;:"
 
-#: 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"
@@ -878,18 +774,10 @@ msgstr "URL de la page Facebook&nbsp"
 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"
@@ -918,32 +806,10 @@ msgstr "Masquer le lien court pour les articles"
 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&nbsp;?"
-
-#. 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 :"
@@ -952,14 +818,6 @@ msgstr "Si vous souhaitez importer des données depuis votre (désormais ancienn
 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&nbsp;!"
 
-#: 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&rsquo;image&nbsp"
@@ -998,14 +856,6 @@ msgstr "Importer depuis le framework WooThemes SEO&nbsp;?"
 msgid "Import from Yoast Breadcrumbs?"
 msgstr "Importer depuis Yoast Breadcrumbs&nbsp;?"
 
-#: 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"
@@ -1014,10 +864,6 @@ 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"
@@ -1026,10 +872,6 @@ 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"
@@ -1042,10 +884,6 @@ msgstr "Méta keywords à 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 &amp; 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 &amp; 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"
@@ -1054,15 +892,6 @@ 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"
@@ -1075,34 +904,14 @@ msgstr "Vérification 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&nbsp;:"
 
-#: 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&nbsp;:"
-
 #: 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)&nbsp;:"
-
 #: 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&nbsp;"
-
-#: admin/views/tab-breadcrumbs.php:25
-msgid "Prefix for Search Page breadcrumbs"
-msgstr "Préfixe pour le fil d'Ariane des pages de recherche&nbsp;"
-
-#: admin/views/tab-breadcrumbs.php:23
-msgid "Prefix for the breadcrumb path"
-msgstr "Préfixe pour le fil d'Ariane&nbsp;"
-
 #: 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"
@@ -1123,10 +932,6 @@ msgstr "Responsables de projet"
 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 ""
@@ -1137,10 +942,6 @@ 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."
@@ -1149,10 +950,6 @@ 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"
@@ -1189,66 +986,6 @@ msgstr "Remplacé par la phrase recherchée"
 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é"
@@ -1265,10 +1002,6 @@ msgstr "Remplacé par le nom du terme"
 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"
@@ -1289,15 +1022,6 @@ msgstr "Enregistrez vos réglages pour activer les sitemaps XML."
 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&nbsp;"
-
-#. 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&nbsp;"
@@ -1310,34 +1034,10 @@ msgstr "Le nom du site"
 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"
@@ -1351,20 +1051,10 @@ msgstr "Pour %1$svérifier votre site avec Pinterest%2$s, veuillez ajouter la ba
 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"
@@ -1378,16 +1068,6 @@ msgstr "Vous souhaitez nous aider à développer ? Référez-vous à nos %1$srè
 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&nbsp;: %sXML Sitemap%s"
@@ -1408,22 +1088,6 @@ msgstr "Vous ne pouvez pas modifier le fichier .htaccess."
 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&nbsp;:"
-
-#: 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"
@@ -1432,101 +1096,369 @@ msgstr "URL YouTube"
 msgid "Post type archive to show in breadcrumbs for taxonomies"
 msgstr "Type de contenu d&rsquo;archive à afficher dans le fil d&rsquo;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&nbsp;:"
 
-#: 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&#8217; 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>&lt;head&gt;</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&nbsp;"
+#: 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&nbsp;:"
+
+#: 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)&nbsp;:"
+
+#: 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 &amp; 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 &amp; 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&nbsp;"
+
+#: admin/views/tab-breadcrumbs.php:22
+msgid "Anchor text for the Homepage"
+msgstr "Texte d’ancrage pour la page d’accueil&nbsp;"
+
+#: admin/views/tab-breadcrumbs.php:23
+msgid "Prefix for the breadcrumb path"
+msgstr "Préfixe pour le fil d’Ariane&nbsp;"
+
+#: admin/views/tab-breadcrumbs.php:24
+msgid "Prefix for Archive breadcrumbs"
+msgstr "Préfixe pour le fil d’Ariane des archives&nbsp;"
+
+#: admin/views/tab-breadcrumbs.php:25
+msgid "Prefix for Search Page breadcrumbs"
+msgstr "Préfixe pour le fil d’Ariane des pages de recherche&nbsp;"
+
+#: admin/views/tab-breadcrumbs.php:26
+msgid "Breadcrumb for 404 Page"
+msgstr "Fil d’Ariane pour la page 404&nbsp;"
+
+#: 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&nbsp;?"
+
+#: 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&nbsp;: 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&nbsp;"
+msgid "Alexa Verification ID"
+msgstr "ID de vérification Alexa&nbsp;"
+
+#: 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."
@@ -1536,23 +1468,11 @@ msgstr "Le blog %s est introuvable."
 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é"
 
@@ -1560,22 +1480,18 @@ 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&nbsp;"
 
-#: 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"
@@ -1607,10 +1523,6 @@ msgstr "Archives des articles de type personnalisé"
 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&nbsp;"
-
 #: 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é."
@@ -1621,7 +1533,7 @@ msgid "Desktop"
 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."
 
@@ -1637,39 +1549,14 @@ msgstr "Désactiver les archives par date"
 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."
@@ -1683,73 +1570,33 @@ msgstr "Fonction téléphone"
 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 &amp; Front page"
-msgstr "Page d'accueil &amp; 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"
 
@@ -1761,7 +1608,7 @@ msgstr "Catégories de problème"
 msgid "Last crawled"
 msgstr "Dernière exploration"
 
-#: admin/pages/dashboard.php:168
+#: admin/pages/dashboard.php:169
 msgid "Latest Changes"
 msgstr "Derniers changements"
 
@@ -1806,37 +1653,13 @@ msgstr "Les nouveaux sites du réseau héritent des paramètres SEO de ce site"
 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&nbsp;: 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."
@@ -1863,14 +1686,6 @@ msgstr "Re-vérifier le thème."
 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."
@@ -1883,7 +1698,7 @@ msgstr "Le temps de la demande est écoulé ou le site bloque Google."
 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"
 
@@ -1973,45 +1788,20 @@ msgstr "Les symboles sont affichés dans la même taille que celle des résultat
 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&nbsp;:"
-
 #. 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"
@@ -2037,7 +1827,7 @@ msgstr "Pour permettre à %1$s de récupérer les informations de votre %2$s, me
 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."
 
@@ -2049,12 +1839,12 @@ msgstr "Utilisez des méta étiquettes de mots-clés ?"
 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."
 
@@ -2062,7 +1852,7 @@ 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"
 
@@ -2071,41 +1861,19 @@ 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&nbsp;"
 
-#: 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 &raquo;%s"
 msgstr "Vous pouvez définir le titre et la description pour la page du blog en %smodifiant la page de blog directement &raquo;%s"
 
-#: admin/pages/metas.php:75
-msgid "You can determine the title and description for the front page by %sediting the front page itself &raquo;%s"
-msgstr "Vous pouvez déterminer le titre et la description de la page d'accueil en %smodifiant la page d'accueil directement &raquo;%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&nbsp;:"
-
-#. 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&nbsp;"
 
@@ -2144,17 +1912,206 @@ msgstr "Types de contenu"
 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&rsquo;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&nbsp;!"
 
-#: 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&rsquo;un ou l'autre&nbsp;:"
+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&rsquo;un ou l’autre&nbsp;:"
+
+#: 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&nbsp;"
+
+#. 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 &amp; Front page"
+msgstr "Page d’accueil &amp; 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 &raquo;%s"
+msgstr "Vous pouvez déterminer le titre et la description de la page d’accueil en %smodifiant la page d’accueil directement &raquo;%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&nbsp;: 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&nbsp;:"
+
+#. 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&nbsp;:"
+
+#: 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
@@ -2173,21 +2130,12 @@ msgstr "%s Description"
 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é"
@@ -2204,14 +2152,6 @@ msgstr "Ajouter un administrateur Facebook"
 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"
@@ -2254,23 +2194,6 @@ msgstr "Détection automatique"
 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"
@@ -2283,11 +2206,6 @@ msgstr "Effacer toutes les données Facebook"
 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"
@@ -2314,10 +2232,6 @@ msgstr "Désactiver %s"
 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"
@@ -2340,62 +2254,26 @@ msgid "Facebook Insights and Admins"
 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"
@@ -2408,20 +2286,11 @@ msgstr "Vous aimez cette extension&nbsp;?"
 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"
@@ -2452,27 +2321,10 @@ msgstr "Cliquez à présent sur &#8216;%1$sPost Types%2$s&#8217;-tab, ce sera no
 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&#8217;ve purchased %1$s or any other premium Yoast plugin, you&#8217;ll have to enter a license key. You can do so on the Licenses-tab. Once you&#8217;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
@@ -2488,23 +2340,23 @@ msgid "Please make sure both fields are filled."
 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"
 
@@ -2540,23 +2392,15 @@ msgstr "SEO&nbsp;: OK"
 msgid "SEO: Post Noindexed"
 msgstr "SEO&nbsp;: 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&#8217;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"
 
@@ -2592,70 +2436,11 @@ msgstr "Onglet : Vos infos / Infos de la société"
 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&#8217;s more to learn about WordPress &amp; 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."
@@ -2664,10 +2449,6 @@ 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&#8217;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."
@@ -2677,11 +2458,6 @@ msgstr "Cet avertissement est généré par %1$s."
 msgid "Title &amp; 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."
@@ -2691,10 +2467,6 @@ msgstr "Pour pouvoir accéder à %sFacebook Insights %s pour votre site, vous de
 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 &raquo;"
@@ -2723,10 +2495,6 @@ msgstr "Nous vous recommandons de désactiver %1$s et de rejeter un œil à votr
 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 &#8220;Card&#8221; added to the tweet that&#8217;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 &#8220;Carte&#8221; ajoutée dans leur tweet qui sera visible à tous leurs contacts. "
@@ -2735,18 +2503,207 @@ msgstr "Avec les %1$sCartes Twitter %2$s, vous pouvez joindre des photos, des vi
 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&#8217;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&#8217;ve just installed %1$s! Click &#8220;Start Tour&#8221; to view a quick introduction of this plugin&#8217;s core functionality."
-msgstr "Vous venez d'installer %1$s&nbsp;! 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&#8217;s more to learn about WordPress &amp; 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 &#8217;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&nbsp;!"
+
+#: 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&#8217;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&#8217;ve purchased %1$s or any other premium Yoast plugin, you&#8217;ll have to enter a license key. You can do so on the Licenses-tab. Once you&#8217;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&#8217;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&#8217;ve just installed %1$s! Click &#8220;Start Tour&#8221; to view a quick introduction of this plugin&#8217;s core functionality."
+msgstr "Vous venez d’installer %1$s&nbsp;! 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 &#8217;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&nbsp;!"
+#: 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
@@ -2760,12 +2717,7 @@ msgstr "%1$s a détecté que vous utiliser la version de %2$s de %3$s. Veuillez
 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)"
 
@@ -2777,9 +2729,9 @@ msgstr "Redirection 301"
 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é"
 
@@ -2791,26 +2743,10 @@ msgstr "Réglages avancés des <code>méta</code> des robots pour cette page."
 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&nbsp;"
-
-#: 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"
@@ -2819,10 +2755,6 @@ 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."
@@ -2843,11 +2775,6 @@ msgstr "Modifier les fichiers"
 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."
@@ -2891,10 +2818,6 @@ msgstr "Mot-clé principal&nbsp;"
 msgid "Follow"
 msgstr "Suivre"
 
-#: admin/class-admin.php:238
-msgid "For more information:"
-msgstr "Pour plus d'information&nbsp;:"
-
 #: 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
@@ -2915,14 +2838,6 @@ msgstr "Google+"
 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&nbsp;: 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."
@@ -2976,22 +2891,10 @@ msgstr "Nouveau titre Yoast SEO"
 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"
@@ -3010,43 +2913,14 @@ msgstr "Veuillez noter que toutes les variables ne peuvent pas être utilisées
 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&nbsp: %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 :"
@@ -3071,10 +2945,6 @@ msgstr "Date de Publication"
 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"
@@ -3092,14 +2962,6 @@ msgstr "Titre SEO&nbsp;"
 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
@@ -3109,12 +2971,6 @@ msgstr "Le paramètre \"%s\" n'est plus disponible et a été désactivé"
 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&nbsp;:"
-
 #: admin/class-import.php:148
 msgid "Settings successfully imported."
 msgstr "Les réglages ont été importés avec succès."
@@ -3131,45 +2987,15 @@ msgstr "Valeur par défaut pour tout le site&nbsp;: %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 &amp; 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 &amp; Metas"
 msgstr "Titres &amp; Métas"
@@ -3186,19 +3012,6 @@ msgstr "Identifiant Twitter (sans le @)"
 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"
@@ -3212,21 +3025,12 @@ msgstr "Voir &#8220;%s&#8221;"
 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 &amp; data successfully imported."
 msgstr "Les réglages du framework WooThemes SEO ont bien été importés."
@@ -3244,10 +3048,6 @@ msgstr "Les options de Yoast Breadcrumbs sont introuvables."
 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."
@@ -3314,6 +3114,163 @@ msgstr "Contenu&nbsp;:"
 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&nbsp;"
+
+#. 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&nbsp: %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&nbsp;:"
+
+#: 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&nbsp;: 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&nbsp;:"
+
+#: 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."
index 6b9decf47bb4c5bdda2441a5ffb646feafb9f3a6..51b77a5bbddc7842e70a7428bdcd39f42068a45f 100755 (executable)
Binary files a/cesaretleonie.fr/wp-content/languages/themes/twentysixteen-fr_FR.mo and b/cesaretleonie.fr/wp-content/languages/themes/twentysixteen-fr_FR.mo differ
index bc6d30e2b6314515d1bcac3c4dbff96e92d8995d..e8526db3d4b990d5aaa908937425726e144f0afa 100755 (executable)
@@ -2,7 +2,7 @@
 # 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"
@@ -16,7 +16,7 @@ msgstr "Twenty Sixteen"
 
 #. 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&nbsp;: l&rsquo;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&nbsp;: l&rsquo;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
index e365ae61ad44bc0dc1d0bf5a828543c9c2a75081..0966fb67effeb781c83f4b9f424304cbe1db73b1 100644 (file)
@@ -13,10 +13,15 @@ function wpcf7_admin_init() {
 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' ),
@@ -149,13 +154,49 @@ function wpcf7_load_contact_form_admin() {
                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'] );
        }
@@ -166,10 +207,6 @@ function wpcf7_load_contact_form_admin() {
 
        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' );
 
@@ -229,13 +266,20 @@ function wpcf7_admin_management_page() {
                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' ) ) {
@@ -247,7 +291,7 @@ function wpcf7_admin_management_page() {
                        . __( 'Search results for &#8220;%s&#8221;', 'contact-form-7' )
                        . '</span>', esc_html( $_REQUEST['s'] ) );
        }
-?></h2>
+?></h1>
 
 <?php do_action( 'wpcf7_admin_notices' ); ?>
 
@@ -261,48 +305,45 @@ function wpcf7_admin_management_page() {
 <?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();
 
@@ -322,7 +363,7 @@ function wpcf7_admin_integration_page() {
 ?>
 <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' ); ?>
 
@@ -351,11 +392,26 @@ function wpcf7_admin_updated_message() {
        }
 
        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 ) ) {
@@ -419,13 +475,13 @@ function wpcf7_welcome_panel() {
        <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>
@@ -435,7 +491,7 @@ function wpcf7_welcome_panel() {
                        </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>
@@ -492,3 +548,59 @@ function wpcf7_not_allowed_to_edit() {
                '<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 &raquo; %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 &raquo; %s</p></div>', esc_html( $message ), $link );
+}
index 4e8992320670e5100442c436fb8882ec0edc5b83..44fa8d9ea0af58abde5ca011f6114470f5e51b7f 100644 (file)
@@ -25,7 +25,7 @@
        margin: 8px -8px 8px 8px;
 }
 
-.card h3.title {
+.card h2.title {
        float: right;
 }
 
index 7160324ff4d8912beda19f7ce0dbadc681daf755..d5633b3909640c30f775523df0ebf17bc484f28f 100644 (file)
@@ -39,6 +39,10 @@ span.shortcode > input {
        color: #a00;
 }
 
+#submitpost input.delete:hover {
+       color: #f00;
+}
+
 #submitpost input.delete:focus {
        outline: thin dotted;
 }
@@ -52,6 +56,12 @@ span.shortcode > input {
        color: #23282d;
 }
 
+div.config-error, span.config-error {
+       color: #d00;
+       font-style: normal;
+       font-size: 13px;
+}
+
 /*
  * Tabs
  */
@@ -103,7 +113,7 @@ span.shortcode > input {
        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;
@@ -253,6 +263,13 @@ span.shortcode > input {
        color: #666;
 }
 
+/*
+ * Messages Panel
+ */
+#messages-panel p.description {
+       margin: 5px 0 10px;
+}
+
 /*
  * List Table
  */
@@ -267,6 +284,13 @@ span.shortcode > input {
 /*
  * 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;
@@ -304,9 +328,11 @@ span.shortcode > input {
        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 {
index 6407d36d04a11b21a618809ec76f1bea8d5a07e1..255c6f0b1baff4ddfecc15d7d21391be03735bce 100644 (file)
@@ -31,7 +31,7 @@ function wpcf7_admin_save_button( $post_id ) {
 
 ?><div class="wrap">
 
-<h2><?php
+<h1><?php
        if ( $post->initial() ) {
                echo esc_html( __( 'Add New Contact Form', 'contact-form-7' ) );
        } else {
@@ -41,7 +41,7 @@ function wpcf7_admin_save_button( $post_id ) {
                        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' ); ?>
 
index ffa6abdceca6c2aba1340bed89708d81b2588237..940d7f3e0bc68ab26ab91d4482548f97ba03226e 100755 (executable)
@@ -67,7 +67,20 @@ function wpcf7_save_contact_form( $post_id = -1 ) {
        }
 
        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'] ) ) {
@@ -100,8 +113,20 @@ function wpcf7_save_contact_form( $post_id = -1 ) {
        }
 
        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'] ) ) {
@@ -130,5 +155,11 @@ function wpcf7_save_contact_form( $post_id = -1 ) {
 
        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;
 }
index ba0a7eb234840fe6b5db5edc5925539cf26f27bd..705d4d8246dbf2727a36bf1492d2df1a32f49676 100644 (file)
@@ -100,6 +100,29 @@ class WPCF7_Contact_Form_List_Table extends WP_List_Table {
                $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 &#8220;%s&#8221;', '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 ),
@@ -116,13 +139,9 @@ class WPCF7_Contact_Form_List_Table extends WP_List_Table {
                                        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 &#8220;%s&#8221;', '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 ) {
index c80618b451d45cf63c87ff7407fb41eb92b2b686..3b07bd939c61f962f08256fd79766f16b96d271a 100755 (executable)
@@ -42,7 +42,7 @@ class WPCF7_Editor {
 
 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();
@@ -79,9 +79,11 @@ function wpcf7_editor_box_mail( $post, $args = '' ) {
                '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'] ) ) :
@@ -102,7 +104,12 @@ function wpcf7_editor_box_mail( $post, $args = '' ) {
                <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>
 
@@ -111,7 +118,12 @@ function wpcf7_editor_box_mail( $post, $args = '' ) {
                <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>
 
@@ -120,7 +132,12 @@ function wpcf7_editor_box_mail( $post, $args = '' ) {
                <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>
 
@@ -129,7 +146,12 @@ function wpcf7_editor_box_mail( $post, $args = '' ) {
                <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>
 
@@ -138,7 +160,12 @@ function wpcf7_editor_box_mail( $post, $args = '' ) {
                <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>
 
@@ -168,18 +195,29 @@ function wpcf7_editor_panel_messages( $post ) {
                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
@@ -197,7 +235,7 @@ function wpcf7_editor_panel_additional_settings( $post ) {
        $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>
index 0a1e1455b8dc27145c65881c6b73223ab2cd25a7..e10ebfbe1c82dbf679425e56c7cadfd7230c2b11 100755 (executable)
@@ -23,15 +23,6 @@ class WPCF7_Help_Tabs {
 
                                $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(
@@ -73,8 +64,6 @@ class WPCF7_Help_Tabs {
                $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&#8217;s form-tags here.", 'contact-form-7' ) . '</p>';
index ae1f5370e627c95e48312fa59660071fd27679c9..0ea9274cd73c50ff9a8c4b15f15b54b5db3091c7 100755 (executable)
                        }
                });
 
+               if ('radio' == tagType) {
+                       options.push('default:1');
+               }
+
                options = (options.length > 0) ? options.join(' ') : '';
 
                var value = '';
diff --git a/cesaretleonie.fr/wp-content/plugins/contact-form-7/includes/config-validator.php b/cesaretleonie.fr/wp-content/plugins/contact-form-7/includes/config-validator.php
new file mode 100644 (file)
index 0000000..097d935
--- /dev/null
@@ -0,0 +1,325 @@
+<?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;
+       }
+}
index e138c2dbc792d6376b061c2dc2b786f97324b7c4..7b72d5640eeb723914c2bd305754ef4d45a2da53 100755 (executable)
@@ -37,7 +37,9 @@ class WPCF7_ContactFormTemplate {
 
        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' ),
@@ -61,7 +63,9 @@ class WPCF7_ContactFormTemplate {
        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' =>
@@ -116,56 +120,56 @@ function wpcf7_messages() {
                        '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' )
                )
        );
 
index 396ffe83ca586a8a71435af433126432b8a7a413..ed944eb507fb0e8651f85712bb96a100059fbaea 100644 (file)
@@ -14,6 +14,7 @@ class WPCF7_ContactForm {
        private $unit_tag;
        private $responses_count = 0;
        private $scanned_form_tags;
+       private $config_validator;
 
        public static function count() {
                return self::$found_items;
@@ -654,6 +655,7 @@ class WPCF7_ContactForm {
                $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 );
                }
@@ -809,6 +811,41 @@ class WPCF7_ContactForm {
 
                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 ) {
index 9c34f1a92ec24d4a31925f28745d8447200b7b81..12a9d2ccc8997f97b83f78c10ec28513773d4f78 100644 (file)
@@ -107,6 +107,11 @@ function wpcf7_use_really_simple_captcha() {
                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 );
 }
index fabc52c2be03e2b0ebebc7e2dc0582e1e3c98902..0fe19d926b0c145cb511c3ac0e1e40ef19295fbf 100755 (executable)
@@ -81,7 +81,7 @@ class WPCF7_Integration {
 ?>
 <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 />
index 3b4ec85c7824b7773d101f1b2f102548cada78c5..7fcb1f8804a3328acbd3b6b6dd1abf20d503030c 100644 (file)
@@ -7,79 +7,33 @@ function wpcf7_l10n() {
                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 = '' ) {
index 5a827ef40f7d9a149fa083fa70b2722d0a146e67..37e96fb48e5ee11573228ab72f513aec810d2eff 100644 (file)
@@ -72,6 +72,9 @@ class WPCF7_Mail {
 
                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 ) {
@@ -165,16 +168,45 @@ function wpcf7_mail_replace_tags( $content, $args = '' ) {
        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;
        }
 
@@ -188,13 +220,7 @@ class WPCF7_MailTaggedText {
                        . '((?:[\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 ) {
@@ -377,4 +403,4 @@ function wpcf7_special_mail_tag( $output, $name, $html ) {
        return $output;
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-bel.mo b/cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-bel.mo
new file mode 100644 (file)
index 0000000..f2df111
Binary files /dev/null and b/cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-bel.mo differ
diff --git a/cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-eo.mo b/cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-eo.mo
new file mode 100644 (file)
index 0000000..9eeed24
Binary files /dev/null and b/cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-eo.mo differ
diff --git a/cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-ga.mo b/cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-ga.mo
new file mode 100644 (file)
index 0000000..311cdf9
Binary files /dev/null and b/cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-ga.mo differ
diff --git a/cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-gu.mo b/cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-gu.mo
new file mode 100644 (file)
index 0000000..d1e18e1
Binary files /dev/null and b/cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-gu.mo differ
diff --git a/cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-hy.mo b/cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-hy.mo
new file mode 100644 (file)
index 0000000..3613183
Binary files /dev/null and b/cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-hy.mo differ
diff --git a/cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-ta_IN.mo b/cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-ta_IN.mo
new file mode 100644 (file)
index 0000000..f196e53
Binary files /dev/null and b/cesaretleonie.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-ta_IN.mo differ
index e267f9d0050eeba865ce9829547c52d3a1f5be92..daea5e12bb27e908308b153b584ec5602a758662 100644 (file)
@@ -3,7 +3,7 @@ msgid ""
 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"
@@ -11,7 +11,7 @@ msgstr ""
 "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"
@@ -21,204 +21,239 @@ msgstr ""
 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 &#8220;%s&#8221;"
 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
@@ -244,7 +279,7 @@ msgid "Status"
 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 ""
 
@@ -264,32 +299,32 @@ msgid "Information"
 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 ""
 
@@ -309,7 +344,7 @@ msgid "Mail"
 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 ""
 
@@ -319,8 +354,8 @@ msgid "Additional Settings (%d)"
 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 ""
 
@@ -341,24 +376,30 @@ msgid "Date"
 msgstr ""
 
 #: contact-form-7/admin/includes/class-contact-forms-list-table.php:106
-msgid "Edit"
+#, php-format
+msgid "Edit &#8220;%s&#8221;"
 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 &#8220;%s&#8221;"
+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 ""
 
@@ -370,63 +411,63 @@ 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 ""
 
@@ -434,19 +475,15 @@ 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 "
@@ -455,78 +492,71 @@ msgid ""
 "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&#8217;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&#8217;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 "
@@ -536,21 +566,21 @@ msgid ""
 "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&#8217;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&#8217;t "
 "have corresponding form-tags. They are used to represent meta information of "
@@ -558,27 +588,27 @@ msgid ""
 "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 ""
 
@@ -587,6 +617,22 @@ 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 ""
@@ -609,105 +655,106 @@ 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 "
@@ -722,262 +769,6 @@ msgstr ""
 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 ""
@@ -1136,7 +927,7 @@ msgid "Date format that the sender entered is invalid"
 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
@@ -1144,7 +935,7 @@ msgid "Date is earlier than minimum limit"
 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
@@ -1152,7 +943,7 @@ msgid "Date is later than maximum limit"
 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
@@ -1200,15 +991,15 @@ msgid "Uploading a file fails for any reason"
 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
@@ -1216,7 +1007,7 @@ msgid "Uploaded file is too large"
 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
@@ -1224,7 +1015,7 @@ msgid "Uploading a file fails for PHP error"
 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
@@ -1269,27 +1060,12 @@ msgid ""
 "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
@@ -1297,7 +1073,7 @@ msgid "Number is smaller than minimum limit"
 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
@@ -1305,7 +1081,7 @@ msgid "Number is larger than maximum limit"
 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
@@ -1340,7 +1116,7 @@ msgid "Sender doesn't enter the correct answer to the quiz"
 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
@@ -1571,7 +1347,7 @@ msgid "Email address that the sender entered is invalid"
 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
@@ -1579,7 +1355,7 @@ msgid "URL that the sender entered is invalid"
 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
@@ -1587,7 +1363,7 @@ msgid "Telephone number that the sender entered is invalid"
 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
index dcb2129ca9f7be9b0a015b84442259d6ab42936b..1a2b936257c748abb4666978aa4bf732090a4c9e 100644 (file)
@@ -1,4 +1,4 @@
-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
index 6636a93057f6039589a738513939c6dcee2873a3..d38a2604b92cf409a3dc8db80404934014befb6e 100644 (file)
@@ -115,17 +115,17 @@ function wpcf7_date_messages( $messages ) {
        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' )
                ) ) );
 }
 
index 5ac71256be4851839e4e0969b730ac58ca29e46d..8fc87e7e9e6e60ad7f370d4ad6e300999bf68f14 100644 (file)
@@ -193,22 +193,22 @@ function wpcf7_file_messages( $messages ) {
        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' )
                )
        ) );
 }
index c67b5b038a26aced7869695a28859a6764c68d03..e326c97ac1b36aa6c58131ca19b68de6e2a74fbc 100644 (file)
@@ -12,7 +12,8 @@ function wpcf7_flamingo_submit( $contactform, $result ) {
                return;
        }
 
-       if ( $contactform->in_demo_mode() ) {
+       if ( $contactform->in_demo_mode()
+       || $contactform->is_true( 'do_not_store' ) ) {
                return;
        }
 
index 8f41381ecc36c713d18a7871be238667b44e6cf5..e1263296018b9c69b76be71d5d75e5aab36caf15 100644 (file)
@@ -118,17 +118,17 @@ function wpcf7_number_messages( $messages ) {
        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' )
                ) ) );
 }
 
index d2b05e2e0e05820be98595f1b2cbeda82bc57c9c..db55c6dc0fd1ad64db24538d79085ca3c10a8ce5 100644 (file)
@@ -147,7 +147,7 @@ add_filter( 'wpcf7_messages', 'wpcf7_quiz_messages' );
 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' )
        ) ) );
 }
 
index 63b372b9866e19727d5923ed3035fde4b22225aa..bd994b7211854cdcd714625e1112c2b9f808ea7b 100644 (file)
@@ -167,17 +167,17 @@ function wpcf7_text_messages( $messages ) {
        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' )
                ) ) );
 }
 
index 72b4b9368a78666d046f9bdde8f929310705160a..653e5837ed2569d19a6878ec4fca338db72683de 100644 (file)
@@ -2,9 +2,9 @@
 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
 
@@ -26,79 +26,15 @@ It is hard to continue development and support for this free plugin without cont
 
 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 ==
 
@@ -127,6 +63,14 @@ Do you have questions or issues with Contact Form 7? Use these support channels
 
 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.
index 54e5525a91a57034894de45950894378450f3932..dacc3b9450ddcd2fb4827f890c7979f3c5d3928b 100644 (file)
@@ -12,6 +12,7 @@ require_once WPCF7_PLUGIN_DIR . '/includes/mail.php';
 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';
@@ -29,7 +30,6 @@ class WPCF7 {
                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' );
index 7bbf6ad74e35613ac156889d6fbdb20dc40d047b..666c4b4e0279fa55f9f51bbc1f0dfe31870b5222 100644 (file)
@@ -7,12 +7,12 @@ Author: Takayuki Miyoshi
 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__ );
 
@@ -56,6 +56,10 @@ if ( ! defined( 'WPCF7_USE_REALLY_SIMPLE_CAPTCHA' ) ) {
        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 ) ) );
 
index 97eb2cdc6525dc0bc7db48542385483cb8228918..aefba4dbba4b173023e943bf73a59410b3863c22 100755 (executable)
@@ -481,4 +481,35 @@ table.block-ranges-table tr td {
        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
index 54512499878e515b4ae5bb194dfc3ea4908fabd4..9c6419ee6b69d3cac95f2f8ee236f9c547b18b73 100755 (executable)
Binary files a/cesaretleonie.fr/wp-content/plugins/wordfence/lib/GeoIP.dat and b/cesaretleonie.fr/wp-content/plugins/wordfence/lib/GeoIP.dat differ
index c06c34aa4a85dd67a049913abcd8ed0103ca2318..3cb3f368060efdfc5ec72b7fbc585da0c9f45d78 100755 (executable)
@@ -6,18 +6,14 @@ The Wordfence administrative URL for this site is: <?php echo $adminURL; ?>admin
 <?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 } ?>
 
 --
index 5889475f4a29cac6bade2d99082d7a7a9a9aa9d9..05b1a85752ba3686b5422e8e36908b3755fcfdde 100755 (executable)
 
 
 <?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 } ?>
 
 
index a9cc88576c27e3e0a2c570eb7b8625fe74c46063..05c2cbed34aad9db9a2f1c95de78d9dab4976660 100755 (executable)
@@ -9,11 +9,21 @@ WFAD.countryMap = <?php echo json_encode($wfBulkCountries); ?>;
        <?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">
index a2f8fa3f99ce01eff5ad89bb3d3c1a7ccd7f52ec..9ae8a4bf1262bb6b4d179b1a88ac5fbdc14f3157 100755 (executable)
@@ -45,7 +45,7 @@ $w = new wfConfig();
                        </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/"
@@ -56,9 +56,25 @@ $w = new wfConfig();
                                                                           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>
index 095f8033001c7e9f10b094aaccdc060a419d81da..7efdf876f4bba944b9769f867a09ed929b1ccfd7 100755 (executable)
@@ -6,14 +6,17 @@
        $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 } ?>
 
index 8d7ed61873ca4de586173f0ab0ad3eb5100f8fa1..fafac692b264c726ec29cebcab3233196ac7a0e3 100755 (executable)
                                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;">
index f89fb2bf1c2ccbe79de8f7acd34b2e7671480bf0..7c408caf6111c95b7eb642921267091710cc5e90 100755 (executable)
@@ -3,12 +3,23 @@
        <?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;">
index 492b85521176260562fca664d40d3989dbe65787..c5db010d8181f28f3df5989209b6a7c990797637 100755 (executable)
@@ -3,13 +3,28 @@
        <?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;">
index b687ebaaae09a787180852d122e5dc3ae01a62b9..79189ec68eac61d96cd3d92cb06afdb46ea7105c 100755 (executable)
@@ -267,30 +267,28 @@ SQL
        }
 
        /**
-        * 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 '
diff --git a/cesaretleonie.fr/wp-content/plugins/wordfence/lib/wfIPWhitelist.php b/cesaretleonie.fr/wp-content/plugins/wordfence/lib/wfIPWhitelist.php
new file mode 100644 (file)
index 0000000..cf596b6
--- /dev/null
@@ -0,0 +1,220 @@
+<?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
index 15d21d8e4355e5fde0ac8e71098b502833c36e35..108780aa8123225df4216f5a6378b72402b60fac 100755 (executable)
@@ -169,70 +169,17 @@ class wfLog {
         * @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(){
index f7c2f343eca539a0b871edad3033be3cf1ecaae4..27e36664c0699f814ab7986cb208341757448d8c 100755 (executable)
@@ -2,25 +2,6 @@
 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;
@@ -83,6 +64,124 @@ class wfUtils {
                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.
         *
@@ -266,6 +365,40 @@ class wfUtils {
                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
@@ -273,9 +406,8 @@ class wfUtils {
        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;
                                }
                        }
@@ -901,13 +1033,6 @@ class wfUtils {
                }
        }
 
-       /**
-        * @return array
-        */
-       public static function getPrivateAddrs() {
-               return self::$privateAddrs;
-       }
-
        /**
         * @param string $host
         * @return array
index 428adf87c6a25ea66266cd03fcd1a2d97f5c964e..41ad6f73a7fba9dca919a50dde29e8ef84a6f8bf 100755 (executable)
@@ -3,7 +3,7 @@ Contributors: mmaunder
 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 ==
@@ -190,6 +190,12 @@ Designed for every skill level, [The WordPress Security Learning Center](https:/
 
 == 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.
index f9bc012b186d617928513213749436138c3c57fa..fd61adcc5f9c7ae3acd104efb14453be88f6fe60 100644 (file)
@@ -1,4 +1,4 @@
 <?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
index 32ac55bccc2ffd08f02d19ccd1737e9d22a70872..cee46e319c955a2bdba587f0b4b7b09b1af24557 100755 (executable)
@@ -4,13 +4,13 @@ Plugin Name: Wordfence Security
 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()); }
 }
index e30094ddfcff140513957b2d7f85e515310c3edf..9f6aaa5327dddfa3c5160a2dd99b2bf81cb44408 100755 (executable)
@@ -59,6 +59,17 @@ class WP_Comment_Query {
                '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
         *
@@ -747,7 +758,7 @@ class WP_Comment_Query {
                        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 );
                        }
                }
 
@@ -816,6 +827,8 @@ class WP_Comment_Query {
                $limits = isset( $clauses[ 'limits' ] ) ? $clauses[ 'limits' ] : '';
                $groupby = isset( $clauses[ 'groupby' ] ) ? $clauses[ 'groupby' ] : '';
 
+               $this->filtered_where_clause = $where;
+
                if ( $where ) {
                        $where = 'WHERE ' . $where;
                }
@@ -867,12 +880,27 @@ class WP_Comment_Query {
                        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;
@@ -882,7 +910,7 @@ class WP_Comment_Query {
                                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++;
index 9f15d31f577149c4d546e16530e54c4206e2cd3c..b789556393275608b09da8c367dc6566ac2b62a7 100644 (file)
@@ -1535,9 +1535,11 @@ final class WP_Customize_Manager {
         */
        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;
index 4ef67dd74ded18a2ff242d54a7d24d1ad520e7c7..ad5b9caf5e9e681423b23460f8be48fc060a7c43 100644 (file)
@@ -1285,11 +1285,16 @@ function comments_template( $file = '/comments.php', $separate_comments = false
                '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 ) ) {
@@ -1317,10 +1322,13 @@ function comments_template( $file = '/comments.php', $separate_comments = false
                                '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'];
                        }
@@ -1335,18 +1343,22 @@ function comments_template( $file = '/comments.php', $separate_comments = false
        $_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;
        }
 
        /**
@@ -1925,27 +1937,6 @@ function wp_list_comments( $args = array(), $comments = null ) {
         */
        $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;
@@ -1960,34 +1951,71 @@ function wp_list_comments( $args = array(), $comments = null ) {
                        $_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;
+                       }
                }
        }
 
index 1f4a8638d4ef734f86a86492d643dca9b9c75550..65758680c810eeb0bf39eed7139ca7f6b7e24050 100644 (file)
@@ -4534,7 +4534,7 @@ function print_emoji_detection_script() {
                 *
                 * @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.
@@ -4581,7 +4581,7 @@ function print_emoji_detection_script() {
                ?>
                <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
        }
@@ -4646,7 +4646,7 @@ function wp_staticize_emoji( $text ) {
        $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' );
index 8fa00e942fc140346b07304d34e68b07df13a084..9f254a15be296e81e4680cb7aea361a2863909a1 100644 (file)
@@ -536,7 +536,7 @@ function wp_http_validate_url( $url ) {
                }
                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] )
                        ) {
index 327f66a19b913c4fab69961ed776ff3dd7cf1827..83f431cc92af5c57670cdebef5d5bcb1d93a9032 100755 (executable)
@@ -13,6 +13,7 @@
        function browserSupportsEmoji( type ) {
                var canvas = document.createElement( 'canvas' ),
                        context = canvas.getContext && canvas.getContext( '2d' ),
+                       stringFromCharCode = String.fromCharCode,
                        tone;
 
                if ( ! context || ! context.fillText ) {
@@ -37,7 +38,7 @@
                         * 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 ) {
                        /*
@@ -45,9 +46,9 @@
                         * 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;
                }
index fb5d949c259b958ee114ee7402b3a67af1608ab7..9579e8f9e46270a4c8bf729109887c347cd0867a 100755 (executable)
@@ -1 +1 @@
-!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
index d34608b89f3eacb482ce1ac65960f3ab101d669a..4827b0de2c88971ba93425f075e9fded06f5de44 100644 (file)
@@ -1580,6 +1580,19 @@ function wp_kses_post( $data ) {
        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.
  *
index 9d247baa9024a2fcbbe1e055f2c68c839d4fd36a..d6345c763038fa507eb3b11960a6c387c3fd499e 100644 (file)
@@ -473,7 +473,7 @@ function wp_start_object_cache() {
                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' ) );
        }
 }
index 84f63ed71dd0e5e5f648fcd88b82ba8538c7ff7b..0701f17fde037703deb84160d703f9a9a69b3f8d 100644 (file)
@@ -654,7 +654,7 @@ function switch_to_blog( $new_blog, $deprecated = null ) {
                        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' ) );
                }
@@ -725,7 +725,7 @@ function restore_current_blog() {
                        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' ) );
                }
index 88d1440599cd1af83069d0e0cc8a8966d97f47ec..3159b37e12e566a415b3471ad4cba22653999e42 100644 (file)
@@ -1333,7 +1333,8 @@ function wp_validate_redirect($location, $default = '') {
        // 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 )
@@ -1343,9 +1344,17 @@ function wp_validate_redirect($location, $default = '') {
        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());
 
index 9460d32450ba9cb0d2addf1105df4413da0f6058..b4aae270b22195f5478a03109a4723c69cef3d14 100644 (file)
@@ -2300,7 +2300,7 @@ class WP_Query {
                                $like = '%' . $wpdb->esc_like( $q['s'] ) . '%';
                        }
 
-                       $search_orderby = '(CASE ';
+                       $search_orderby = '';
 
                        // sentence match in 'post_title'
                        if ( $like ) {
@@ -2321,7 +2321,10 @@ class WP_Query {
                        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';
@@ -4981,16 +4984,11 @@ class WP_Query {
  *
  * @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.
@@ -5032,19 +5030,10 @@ function wp_old_slug_redirect() {
 
                $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] );
-                               }
-                       }
                }
 
                /**
index 8898a35bcda4192627b336102993ffb45d04947a..f6ffc54ff7eeb07ac10d09d3d16390f231e5d9a5 100755 (executable)
@@ -56,7 +56,7 @@ if (PHP_VERSION_ID < 70000) {
          * 
          * 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';
         }
index 6c2a29ce273539ba3167dfe0579a92781a6b49e9..c6d3b6e26d32462b5df783f57c5448ef38ee497a 100644 (file)
@@ -3646,7 +3646,7 @@ function update_object_term_cache($object_ids, $object_type) {
 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 );
index bb2ea80534111a81997b7eea2e2f99013688216b..6ccf893ded47fe5f50254dde0ed5e93425e5544e 100644 (file)
@@ -4,7 +4,7 @@
  *
  * @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.
index 8810c8ba35d59fb4bbd42253053fb5a99a9163c7..a808afca39fc5b416caa3d9187836f66bae485c9 100644 (file)
@@ -49,7 +49,11 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
                </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' ); ?>
index 139d40507052d31a7c9239ec626efd97f3478635..2faccfe71a23f6f5cdafda6f50aec781155814b1 100644 (file)
@@ -408,12 +408,14 @@ function wp_read_image_metadata( $file ) {
                }
        }
 
-       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.
         *
index a05dc0954fa7b9863e4b1c9217e4460b1366fd43..b1090de44b1860fb56b94b6e44a9348e09ca81ed 100644 (file)
@@ -137,6 +137,8 @@ inlineEditTax = {
                                }
                        }
                );
+               // Prevent submitting the form when pressing Enter on a focused field.
+               return false;
        },
 
        revert : function() {
index 14b3b8a7acfb76febd44857c36cd8e3a1ea732b6..c99a76b80f5a8f7f588a4977a76ff23c431dffda 100644 (file)
@@ -1 +1 @@
-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
index 3b43ac06d2ae1e5775f9349d74b7ecc2992491b9..0abd81c24454e9dceb1820a5b9b36abf65bb4d18 100644 (file)
@@ -406,10 +406,13 @@ foreach ( $wp_registered_sidebars as $sidebar => $registered_sidebar ) {
                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>
@@ -427,8 +430,11 @@ foreach ( $wp_registered_sidebars as $sidebar => $registered_sidebar ) {
                                                <?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
 
index 3e0fdeb4ea04f27c1b404b300a6a67d3888c4d49..f7ad089bcb539618ccfe7ac79eb7150b16ce061f 100644 (file)
@@ -16,79 +16,79 @@ msgstr "Merci d&rsquo;avoir fait la mise à jour&nbsp;! WordPress %s vous donne
 
 #. 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&rsquo;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&rsquo;infrastructure est la première partie d&rsquo;une mise en place en plusieurs étapes de l&rsquo;API REST. L&rsquo;inclusion des points d&rsquo;accès est prévue pour une prochaine version. Pour avoir un aperçu des principaux points d&rsquo;accès, et pour obtenir plus d&rsquo;information sur la manière d&rsquo;étendre l&rsquo;API REST, découvrez l&rsquo;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&rsquo;infrastructure de l&rsquo;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&rsquo;API REST a été conçue pour offrir aux développeurs une manière centrale de construire et d&rsquo;é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&nbsp;Comments, ReverbNation, Speaker&nbsp;Deck, and VideoPress."
 msgstr "En plus de l&rsquo;insertion de contenu, WordPress 4.4 apporte la reconnaissance de cinq nouveaux fournisseurs oEmbed&nbsp;: Cloudup, Reddit&nbsp;Comments, ReverbNation, Speaker&nbsp;Deck et VideoPress."
 
-#: wp-admin/about.php:137
+#: wp-admin/about.php:141
 msgid "REST API infrastructure"
 msgstr "Infrastructure de l&rsquo;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&#8217;ve set one. We&#8217;ll even include your site icon and links for comments and sharing."
 msgstr "Vous pouvez désormais insérer vos articles dans d&rsquo;autres sites, et même dans d&rsquo;autres sites WordPress. Collez simplement l&rsquo;adresse du contenu dans l&rsquo;éditeur, et une prévisualisation s&rsquo;affichera instantanément, avec titre, extrait, et l&rsquo;image de Une si vous avez mise une. Vous y trouverez même l&rsquo;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&#8217;t need to do anything to your theme, it just works."
 msgstr "WordPress approche désormais l&rsquo;affichage des images de manière plus intelligente, utilisant à chaque fois la taille d&rsquo;image la plus pertinente en fonction de l&rsquo;appareil utilisé. Vous n&rsquo;avez rien à changer à votre thème&nbsp;: ça fonctionne, c&rsquo;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&rsquo;un thème de blog classique."
 
-#: wp-admin/about.php:67
+#: wp-admin/about.php:71
 msgid "Twenty Sixteen"
 msgstr "Twenty Sixteen"
 
@@ -107,7 +107,7 @@ msgid "(Currently set to: %s)"
 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é."
 
@@ -129,15 +129,15 @@ msgstr "Vous pouvez changer votre image de profil en passant par <a href=\"%s\">
 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é"
 
@@ -317,7 +317,7 @@ msgstr "Les fichiers du répertoire %s sont exécutés automatiquement."
 msgid "You are not allowed to manage these items."
 msgstr "Vous n&rsquo;ê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."
 
@@ -333,7 +333,7 @@ msgstr "Un des utilisateurs sélectionnés n&rsquo;est pas un abonné de ce site
 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"
 
@@ -1976,7 +1976,7 @@ msgstr "Vous pouvez activer le mode d'écriture sans distraction en cliquant sur
 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"
 
@@ -2777,7 +2777,7 @@ msgstr "Affichier le thème précédent"
 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"
 
@@ -4953,13 +4953,13 @@ msgid "Show Toolbar when viewing site"
 msgstr "Afficher la barre d&rsquo;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&rsquo;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."
@@ -4967,14 +4967,14 @@ msgstr[1] "La <strong>version %1$s</strong> a corrigé un problème de sécurit
 
 #. 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."
@@ -4984,15 +4984,15 @@ msgstr[1] "La <strong>version %1$s</strong> a corrigé %2$s bugs."
 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&nbsp;! Ceci est l&rsquo;écran que vous verrez lorsque vous vous connectez à votre site, et qui vous donne accès à l&rsquo;ensemble des fonctionnalités de gestion de WordPress. Vous pouvez obtenir de l&rsquo;aide dans n&rsquo;importe quel écran en cliquant sur l&rsquo;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é"
@@ -5003,7 +5003,7 @@ msgid "What&#8217;s New"
 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é."
 
@@ -5011,7 +5011,7 @@ msgstr "La <strong>version %s</strong> a corrigé quelques problèmes de sécuri
 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"
 
@@ -5303,11 +5303,11 @@ msgstr "Il semble y avoir une inclusion directe de <code>wp-admin/includes/templ
 msgid "Welcome to WordPress %s"
 msgstr "Bienvenue dans WordPress %s"
 
-#: wp-admin/about.php:197
+#: wp-admin/about.php:201
 msgid "Return to Dashboard &rarr; Updates"
 msgstr "Retourner aux mises à jour"
 
-#: wp-admin/about.php:200
+#: wp-admin/about.php:204
 msgid "Go to Dashboard &rarr; Home"
 msgstr "Aller sur l&rsquo;accueil"
 
@@ -5319,7 +5319,7 @@ msgstr "WordPress est créé par une équipe de personnes passionnées, réparti
 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"
 
@@ -7455,7 +7455,7 @@ msgid_plural "Drop-ins <span class=\"count\">(%s)</span>"
 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"
 
index c4af71516f97f7091c79e2f00ecf47709811a845..8fcf07692b1a2a00fadbee89ccdbd2d43a39759f 100644 (file)
Binary files a/mdryvescouzy.com/wp-content/languages/fr_FR.mo and b/mdryvescouzy.com/wp-content/languages/fr_FR.mo differ
index 820f35c0160e5cdc76cdf5fc6b4c00f17d3ccbf8..0f18f11c8fc9b17fb74fdcc2d481a0d633bb1e6a 100644 (file)
@@ -2,7 +2,7 @@
 # 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"
@@ -660,7 +660,7 @@ msgstr "Une fois en mode de réorganisation, des options de contrôle supplémen
 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&nbsp;?</a>"
 
@@ -859,7 +859,7 @@ msgstr "Ajouter une nouvelle image d&rsquo;en-tête"
 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"
 
@@ -867,11 +867,11 @@ 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&rsquo;icône du site est utilisée pour représenter votre site en tant qu&rsquo;icône de navigateur (favicon) et icône d&rsquo;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"
 
@@ -896,7 +896,7 @@ msgstr "Votre lien de réinitialisation de mot de passe semble être invalide. V
 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&nbsp;:"
 
@@ -1156,10 +1156,6 @@ msgstr "Barre d'outils en ligne (quand une image, un lien ou un aperçu est sél
 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&nbsp;:"
-
 #: wp-includes/class-wp-editor.php:1051
 msgid "Ctrl + letter:"
 msgstr "Ctrl + lettre :"
@@ -1184,6 +1180,10 @@ msgstr "Raccourcis par défaut,"
 msgid "Additional shortcuts,"
 msgstr "Raccourcis supplémentaires,"
 
+#: wp-includes/widgets/class-wp-widget-text.php:107
+msgid "Content:"
+msgstr "Contenu&nbsp;:"
+
 #: wp-includes/class-wp-customize-section.php:236
 #: wp-includes/customize/class-wp-customize-themes-section.php:55
 msgid "Customizing"
@@ -1639,13 +1639,13 @@ msgid "F j, Y @ H:i: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&nbsp;: %1$s (IP&nbsp;: %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&nbsp;: %1$s (IP&nbsp;: %2$s, %3$s)"
 
@@ -1677,24 +1677,24 @@ msgid "The %1$s option is deprecated for the family of %2$s functions. Use the %
 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>"
 
@@ -1839,26 +1839,26 @@ msgctxt "translations"
 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"
 
@@ -1953,7 +1953,7 @@ 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"
 
@@ -3966,11 +3966,11 @@ msgstr "Aller à la barre d&rsquo;outils"
 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&rsquo;en-tête"
 
-#: wp-includes/class-wp-customize-manager.php:1839
+#: wp-includes/class-wp-customize-manager.php:1841
 msgid "Colors"
 msgstr "Couleurs"
 
@@ -4005,7 +4005,7 @@ msgstr "Arguments insuffisants passés à cette méthode XML-RPC."
 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&rsquo;en-tête"
@@ -4046,31 +4046,31 @@ msgstr "L&#8217;identifiant du site doit utiliser au moins 4 caractères."
 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&rsquo;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&rsquo;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&rsquo;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&rsquo;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"
@@ -4087,35 +4087,35 @@ msgstr "Retirer l&rsquo;image"
 msgid "Sorry, you are not allowed to edit this post type."
 msgstr "Désolé, vous n&rsquo;avez pas l&rsquo;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&rsquo;accueil"
 
-#: wp-includes/class-wp-customize-manager.php:2025
+#: wp-includes/class-wp-customize-manager.php:2027
 msgid "Posts page"
 msgstr "Page des articles"
 
@@ -4231,23 +4231,23 @@ msgstr "Le thème &laquo;&nbsp;%s&nbsp;&raquo; n&rsquo;est un thème parent vali
 msgid "&mdash; Select &mdash;"
 msgstr "&mdash; Sélectionner &mdash;"
 
-#: wp-includes/class-wp-customize-manager.php:1983
+#: wp-includes/class-wp-customize-manager.php:1985
 msgid "Static Front Page"
 msgstr "Page d&rsquo;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&rsquo;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"
 
@@ -4721,7 +4721,7 @@ 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&nbsp;: %s"
 
@@ -4805,12 +4805,12 @@ msgid "No pages found."
 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"
@@ -4921,7 +4921,7 @@ msgstr "Article non valide"
 msgid "Invalid taxonomy: %s."
 msgstr "Taxinomie non valide&nbsp;: %s"
 
-#: wp-includes/query.php:2549
+#: wp-includes/query.php:2552
 msgid "\"caller_get_posts\" is deprecated. Use \"ignore_sticky_posts\" instead."
 msgstr "&laquo;&nbsp;caller_get_posts&nbsp;&raquo; n&rsquo;est plus recommandé. Utilisez &laquo;&nbsp;ignore_sticky_posts&nbsp;&raquo; à la place."
 
@@ -5181,7 +5181,7 @@ msgstr "<strong>Les valeurs des constantes VHOST et SUBDOMAIN_INSTALL ne corresp
 msgid "<strong>ERROR</strong>: This username is invalid because it uses illegal characters. Please enter a valid username."
 msgstr "<strong>ERREUR</strong>&nbsp;: cet identifiant n&rsquo;est pas valide, car il utilise des caractères non autorisés. Merci d&rsquo;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"
 
@@ -5308,7 +5308,7 @@ msgstr "Inscription d'un nouveau site : %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 :"
 
@@ -5348,7 +5348,7 @@ msgstr "Une erreur est survenue lors de votre ajout à ce site. Retournez à l&r
 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."
 
@@ -5509,7 +5509,7 @@ msgstr "Mais, avant d&#8217;utiliser votre nouveau site, <strong>vous devez l&#8
 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"
 
@@ -5517,23 +5517,23 @@ msgstr "Un nouveau rétrolien sur l'article « %s » attend votre approbation"
 msgid "If you&#8217;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&nbsp;!"
 
-#: 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"
 
@@ -5807,11 +5807,11 @@ msgstr "L&rsquo;utilisateur a bloqué les requêtes HTTP."
 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"
 
@@ -6520,46 +6520,46 @@ msgstr "Que dois-je faire maintenant ?"
 msgid "<strong>ERROR</strong>: Invalid username or incorrect password."
 msgstr "<strong>ERREUR</strong>&nbsp;: l&rsquo;identifiant ou le mot de passe n&rsquo;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"
 
@@ -7007,11 +7007,11 @@ msgid "Sorry, that username already exists!"
 msgstr "Désolé, cet identifiant existe déjà&nbsp;!"
 
 #. 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 »"
 
@@ -7102,7 +7102,7 @@ msgstr "IDs de pages, séparés par une virgule."
 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&rsquo;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"
 
@@ -7195,7 +7195,7 @@ msgstr " "
 msgid "By: %s"
 msgstr "Par&nbsp;: %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"
 
@@ -7267,12 +7267,12 @@ msgid "Friday"
 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 »"
 
@@ -7371,7 +7371,7 @@ msgstr "Réglages"
 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"
@@ -7418,7 +7418,7 @@ msgstr "Titre&nbsp;:"
 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"
@@ -7473,7 +7473,7 @@ msgstr "Connecté(e) en tant que %s."
 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."
 
@@ -7549,24 +7549,24 @@ msgstr[1] "%s sujets"
 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"
@@ -7635,7 +7635,7 @@ msgstr "Cette page est en XHTML 1.0 Transitional valide"
 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."
 
@@ -7643,7 +7643,7 @@ msgstr "Cliquez ici pour annuler la réponse."
 msgid "<strong>ERROR</strong>: Please enter a username."
 msgstr "<strong>ERREUR</strong>&nbsp;: veuillez renseigner l&rsquo;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"
@@ -7674,7 +7674,7 @@ msgstr "Écrire un commentaire"
 msgid "Tags: "
 msgstr "Étiquettes&nbsp;: "
 
-#: 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."
@@ -7704,7 +7704,7 @@ msgstr "Auteur"
 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"
@@ -7713,19 +7713,19 @@ 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"
@@ -7810,7 +7810,7 @@ msgstr "Catégories"
 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"
@@ -7916,7 +7916,7 @@ msgstr "Enregistrer brouillon"
 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"
 
@@ -8120,8 +8120,8 @@ msgstr "Aperçu"
 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"
 
index 5fcddf9d8b6b34b1bcea1ffda5edc37867d1cbde..b01641c7b9b160ceba467e00170daaea9992c851 100644 (file)
Binary files a/mdryvescouzy.com/wp-content/languages/plugins/wordpress-seo-fr_FR.mo and b/mdryvescouzy.com/wp-content/languages/plugins/wordpress-seo-fr_FR.mo differ
index 0c3948a3fa277c8b2421c929061b3b5f33c15b23..49a62211208f4de3b2eceede13643da9a1de3aea 100644 (file)
@@ -2,7 +2,7 @@
 # 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"
@@ -10,15 +10,16 @@ msgstr ""
 "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&rsquo;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&rsquo;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
@@ -36,11 +37,6 @@ msgstr "Supprimer les variables %s."
 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."
@@ -51,10 +47,6 @@ msgstr "Si vous ne souhaitez pas utiliser le titre de l&rsquo;article pour le pa
 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&rsquo;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"
@@ -64,11 +56,6 @@ 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?"
@@ -94,33 +81,29 @@ msgstr "Architecte"
 #. 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&rsquo;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."
@@ -135,44 +118,18 @@ msgstr "Recalculer les scores SEO"
 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&nbsp;: 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&nbsp;: 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&nbsp;: les moteurs de recherche ne peuvent plus indexer %1$s&nbsp;!"
-
-#. 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&nbsp;: les moteurs de recherche ne peuvent pas indexer %1$s&nbsp;!"
-
-#: 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
@@ -188,10 +145,6 @@ msgstr "wpSEO a été désactivé"
 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
@@ -200,7 +153,7 @@ msgstr "Pour pouvoir ajouter et analyser plusieurs mots clés sur un article ou
 
 #. 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&rsquo;algorithme de calcul de nos scores SEO. %1$sCliquez ici pour les recalculer%2$s pour l&rsquo;ensemble de vos articles et pages."
 
@@ -233,11 +186,6 @@ msgstr "L&rsquo;extension All-In-One-SEO a été détectée. Voulez-vous %simpor
 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&rsquo;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"
@@ -251,7 +199,7 @@ msgstr "Ajouter un mot-clé"
 msgid "Buy %s &raquo;"
 msgstr "Achetez %s &raquo;"
 
-#: admin/class-admin-init.php:372
+#: admin/class-admin-init.php:377
 msgid "%s filter/action"
 msgstr "%s filtre/action"
 
@@ -261,14 +209,14 @@ 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&rsquo;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"
@@ -295,18 +243,6 @@ msgstr "%s ne semble pas être une URL valide. Veuillez corriger cela."
 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&nbsp: Réglages de la licence"
@@ -315,10 +251,6 @@ msgstr "%s&nbsp: 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&nbsp;?</a>"
@@ -327,10 +259,6 @@ msgstr "<a href=\"%s\">Saviez-vous que vous pouvez mettre à jour votre licence&
 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&nbsp;?</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>."
@@ -339,10 +267,6 @@ msgstr "<strong>%s la version de %s</strong> est disponible. <a href=\"%s\" clas
 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"
@@ -403,10 +327,6 @@ msgstr "Erreur 404: Page introuvable"
 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."
@@ -467,22 +387,6 @@ msgstr "Collez ici votre clé de licence pour %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 &raquo;"
-msgstr "S'enregistrer maintenant &raquo;"
-
 #: 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)"
@@ -507,38 +411,10 @@ msgstr "Résumé"
 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."
@@ -551,18 +427,6 @@ msgstr "Cet article %s est apparu en premier sur %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"
@@ -571,10 +435,6 @@ 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"
@@ -599,18 +459,6 @@ msgstr "Vous avez cherché"
 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."
@@ -635,12 +483,121 @@ msgstr "https://yoast.com/"
 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 &raquo;"
+msgstr "S’enregistrer maintenant &raquo;"
+
+#. 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 :"
 
@@ -656,7 +613,7 @@ msgstr "Réglages de %1$s"
 msgid "%s Archives"
 msgstr "%s Archives"
 
-#: admin/pages/tools.php:71
+#: admin/pages/tools.php:70
 msgid "&laquo; Back to Tools page"
 msgstr "&laquo; Retour à la page Outils"
 
@@ -664,34 +621,10 @@ msgstr "&laquo; 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+ "
@@ -700,11 +633,6 @@ 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>&lt;head&gt;</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"
@@ -714,26 +642,10 @@ 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&nbsp;: 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&nbsp;"
-
 #: 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&#8217; 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"
@@ -742,10 +654,6 @@ 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&nbsp;"
-
 #: admin/pages/tools.php:24
 msgid "Bulk editor"
 msgstr "Éditeur par lot"
@@ -799,10 +707,6 @@ msgstr "Crédits"
 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&nbsp"
@@ -828,14 +732,6 @@ msgstr "Modifier le contenu de votre fichier .htaccess&nbsp;:"
 msgid "Edit the content of your robots.txt:"
 msgstr "Modifier le contenu de votre fichier robots.txt&nbsp;:"
 
-#: 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"
@@ -878,18 +774,10 @@ msgstr "URL de la page Facebook&nbsp"
 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"
@@ -918,32 +806,10 @@ msgstr "Masquer le lien court pour les articles"
 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&nbsp;?"
-
-#. 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 :"
@@ -952,14 +818,6 @@ msgstr "Si vous souhaitez importer des données depuis votre (désormais ancienn
 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&nbsp;!"
 
-#: 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&rsquo;image&nbsp"
@@ -998,14 +856,6 @@ msgstr "Importer depuis le framework WooThemes SEO&nbsp;?"
 msgid "Import from Yoast Breadcrumbs?"
 msgstr "Importer depuis Yoast Breadcrumbs&nbsp;?"
 
-#: 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"
@@ -1014,10 +864,6 @@ 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"
@@ -1026,10 +872,6 @@ 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"
@@ -1042,10 +884,6 @@ msgstr "Méta keywords à 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 &amp; 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 &amp; 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"
@@ -1054,15 +892,6 @@ 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"
@@ -1075,34 +904,14 @@ msgstr "Vérification 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&nbsp;:"
 
-#: 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&nbsp;:"
-
 #: 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)&nbsp;:"
-
 #: 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&nbsp;"
-
-#: admin/views/tab-breadcrumbs.php:25
-msgid "Prefix for Search Page breadcrumbs"
-msgstr "Préfixe pour le fil d'Ariane des pages de recherche&nbsp;"
-
-#: admin/views/tab-breadcrumbs.php:23
-msgid "Prefix for the breadcrumb path"
-msgstr "Préfixe pour le fil d'Ariane&nbsp;"
-
 #: 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"
@@ -1123,10 +932,6 @@ msgstr "Responsables de projet"
 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 ""
@@ -1137,10 +942,6 @@ 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."
@@ -1149,10 +950,6 @@ 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"
@@ -1189,66 +986,6 @@ msgstr "Remplacé par la phrase recherchée"
 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é"
@@ -1265,10 +1002,6 @@ msgstr "Remplacé par le nom du terme"
 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"
@@ -1289,15 +1022,6 @@ msgstr "Enregistrez vos réglages pour activer les sitemaps XML."
 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&nbsp;"
-
-#. 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&nbsp;"
@@ -1310,34 +1034,10 @@ msgstr "Le nom du site"
 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"
@@ -1351,20 +1051,10 @@ msgstr "Pour %1$svérifier votre site avec Pinterest%2$s, veuillez ajouter la ba
 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"
@@ -1378,16 +1068,6 @@ msgstr "Vous souhaitez nous aider à développer ? Référez-vous à nos %1$srè
 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&nbsp;: %sXML Sitemap%s"
@@ -1408,22 +1088,6 @@ msgstr "Vous ne pouvez pas modifier le fichier .htaccess."
 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&nbsp;:"
-
-#: 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"
@@ -1432,101 +1096,369 @@ msgstr "URL YouTube"
 msgid "Post type archive to show in breadcrumbs for taxonomies"
 msgstr "Type de contenu d&rsquo;archive à afficher dans le fil d&rsquo;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&nbsp;:"
 
-#: 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&#8217; 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>&lt;head&gt;</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&nbsp;"
+#: 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&nbsp;:"
+
+#: 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)&nbsp;:"
+
+#: 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 &amp; 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 &amp; 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&nbsp;"
+
+#: admin/views/tab-breadcrumbs.php:22
+msgid "Anchor text for the Homepage"
+msgstr "Texte d’ancrage pour la page d’accueil&nbsp;"
+
+#: admin/views/tab-breadcrumbs.php:23
+msgid "Prefix for the breadcrumb path"
+msgstr "Préfixe pour le fil d’Ariane&nbsp;"
+
+#: admin/views/tab-breadcrumbs.php:24
+msgid "Prefix for Archive breadcrumbs"
+msgstr "Préfixe pour le fil d’Ariane des archives&nbsp;"
+
+#: admin/views/tab-breadcrumbs.php:25
+msgid "Prefix for Search Page breadcrumbs"
+msgstr "Préfixe pour le fil d’Ariane des pages de recherche&nbsp;"
+
+#: admin/views/tab-breadcrumbs.php:26
+msgid "Breadcrumb for 404 Page"
+msgstr "Fil d’Ariane pour la page 404&nbsp;"
+
+#: 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&nbsp;?"
+
+#: 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&nbsp;: 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&nbsp;"
+msgid "Alexa Verification ID"
+msgstr "ID de vérification Alexa&nbsp;"
+
+#: 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."
@@ -1536,23 +1468,11 @@ msgstr "Le blog %s est introuvable."
 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é"
 
@@ -1560,22 +1480,18 @@ 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&nbsp;"
 
-#: 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"
@@ -1607,10 +1523,6 @@ msgstr "Archives des articles de type personnalisé"
 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&nbsp;"
-
 #: 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é."
@@ -1621,7 +1533,7 @@ msgid "Desktop"
 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."
 
@@ -1637,39 +1549,14 @@ msgstr "Désactiver les archives par date"
 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."
@@ -1683,73 +1570,33 @@ msgstr "Fonction téléphone"
 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 &amp; Front page"
-msgstr "Page d'accueil &amp; 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"
 
@@ -1761,7 +1608,7 @@ msgstr "Catégories de problème"
 msgid "Last crawled"
 msgstr "Dernière exploration"
 
-#: admin/pages/dashboard.php:168
+#: admin/pages/dashboard.php:169
 msgid "Latest Changes"
 msgstr "Derniers changements"
 
@@ -1806,37 +1653,13 @@ msgstr "Les nouveaux sites du réseau héritent des paramètres SEO de ce site"
 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&nbsp;: 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."
@@ -1863,14 +1686,6 @@ msgstr "Re-vérifier le thème."
 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."
@@ -1883,7 +1698,7 @@ msgstr "Le temps de la demande est écoulé ou le site bloque Google."
 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"
 
@@ -1973,45 +1788,20 @@ msgstr "Les symboles sont affichés dans la même taille que celle des résultat
 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&nbsp;:"
-
 #. 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"
@@ -2037,7 +1827,7 @@ msgstr "Pour permettre à %1$s de récupérer les informations de votre %2$s, me
 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."
 
@@ -2049,12 +1839,12 @@ msgstr "Utilisez des méta étiquettes de mots-clés ?"
 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."
 
@@ -2062,7 +1852,7 @@ 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"
 
@@ -2071,41 +1861,19 @@ 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&nbsp;"
 
-#: 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 &raquo;%s"
 msgstr "Vous pouvez définir le titre et la description pour la page du blog en %smodifiant la page de blog directement &raquo;%s"
 
-#: admin/pages/metas.php:75
-msgid "You can determine the title and description for the front page by %sediting the front page itself &raquo;%s"
-msgstr "Vous pouvez déterminer le titre et la description de la page d'accueil en %smodifiant la page d'accueil directement &raquo;%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&nbsp;:"
-
-#. 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&nbsp;"
 
@@ -2144,17 +1912,206 @@ msgstr "Types de contenu"
 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&rsquo;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&nbsp;!"
 
-#: 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&rsquo;un ou l'autre&nbsp;:"
+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&rsquo;un ou l’autre&nbsp;:"
+
+#: 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&nbsp;"
+
+#. 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 &amp; Front page"
+msgstr "Page d’accueil &amp; 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 &raquo;%s"
+msgstr "Vous pouvez déterminer le titre et la description de la page d’accueil en %smodifiant la page d’accueil directement &raquo;%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&nbsp;: 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&nbsp;:"
+
+#. 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&nbsp;:"
+
+#: 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
@@ -2173,21 +2130,12 @@ msgstr "%s Description"
 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é"
@@ -2204,14 +2152,6 @@ msgstr "Ajouter un administrateur Facebook"
 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"
@@ -2254,23 +2194,6 @@ msgstr "Détection automatique"
 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"
@@ -2283,11 +2206,6 @@ msgstr "Effacer toutes les données Facebook"
 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"
@@ -2314,10 +2232,6 @@ msgstr "Désactiver %s"
 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"
@@ -2340,62 +2254,26 @@ msgid "Facebook Insights and Admins"
 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"
@@ -2408,20 +2286,11 @@ msgstr "Vous aimez cette extension&nbsp;?"
 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"
@@ -2452,27 +2321,10 @@ msgstr "Cliquez à présent sur &#8216;%1$sPost Types%2$s&#8217;-tab, ce sera no
 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&#8217;ve purchased %1$s or any other premium Yoast plugin, you&#8217;ll have to enter a license key. You can do so on the Licenses-tab. Once you&#8217;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
@@ -2488,23 +2340,23 @@ msgid "Please make sure both fields are filled."
 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"
 
@@ -2540,23 +2392,15 @@ msgstr "SEO&nbsp;: OK"
 msgid "SEO: Post Noindexed"
 msgstr "SEO&nbsp;: 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&#8217;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"
 
@@ -2592,70 +2436,11 @@ msgstr "Onglet : Vos infos / Infos de la société"
 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&#8217;s more to learn about WordPress &amp; 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."
@@ -2664,10 +2449,6 @@ 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&#8217;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."
@@ -2677,11 +2458,6 @@ msgstr "Cet avertissement est généré par %1$s."
 msgid "Title &amp; 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."
@@ -2691,10 +2467,6 @@ msgstr "Pour pouvoir accéder à %sFacebook Insights %s pour votre site, vous de
 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 &raquo;"
@@ -2723,10 +2495,6 @@ msgstr "Nous vous recommandons de désactiver %1$s et de rejeter un œil à votr
 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 &#8220;Card&#8221; added to the tweet that&#8217;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 &#8220;Carte&#8221; ajoutée dans leur tweet qui sera visible à tous leurs contacts. "
@@ -2735,18 +2503,207 @@ msgstr "Avec les %1$sCartes Twitter %2$s, vous pouvez joindre des photos, des vi
 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&#8217;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&#8217;ve just installed %1$s! Click &#8220;Start Tour&#8221; to view a quick introduction of this plugin&#8217;s core functionality."
-msgstr "Vous venez d'installer %1$s&nbsp;! 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&#8217;s more to learn about WordPress &amp; 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 &#8217;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&nbsp;!"
+
+#: 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&#8217;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&#8217;ve purchased %1$s or any other premium Yoast plugin, you&#8217;ll have to enter a license key. You can do so on the Licenses-tab. Once you&#8217;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&#8217;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&#8217;ve just installed %1$s! Click &#8220;Start Tour&#8221; to view a quick introduction of this plugin&#8217;s core functionality."
+msgstr "Vous venez d’installer %1$s&nbsp;! 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 &#8217;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&nbsp;!"
+#: 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
@@ -2760,12 +2717,7 @@ msgstr "%1$s a détecté que vous utiliser la version de %2$s de %3$s. Veuillez
 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)"
 
@@ -2777,9 +2729,9 @@ msgstr "Redirection 301"
 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é"
 
@@ -2791,26 +2743,10 @@ msgstr "Réglages avancés des <code>méta</code> des robots pour cette page."
 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&nbsp;"
-
-#: 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"
@@ -2819,10 +2755,6 @@ 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."
@@ -2843,11 +2775,6 @@ msgstr "Modifier les fichiers"
 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."
@@ -2891,10 +2818,6 @@ msgstr "Mot-clé principal&nbsp;"
 msgid "Follow"
 msgstr "Suivre"
 
-#: admin/class-admin.php:238
-msgid "For more information:"
-msgstr "Pour plus d'information&nbsp;:"
-
 #: 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
@@ -2915,14 +2838,6 @@ msgstr "Google+"
 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&nbsp;: 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."
@@ -2976,22 +2891,10 @@ msgstr "Nouveau titre Yoast SEO"
 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"
@@ -3010,43 +2913,14 @@ msgstr "Veuillez noter que toutes les variables ne peuvent pas être utilisées
 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&nbsp: %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 :"
@@ -3071,10 +2945,6 @@ msgstr "Date de Publication"
 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"
@@ -3092,14 +2962,6 @@ msgstr "Titre SEO&nbsp;"
 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
@@ -3109,12 +2971,6 @@ msgstr "Le paramètre \"%s\" n'est plus disponible et a été désactivé"
 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&nbsp;:"
-
 #: admin/class-import.php:148
 msgid "Settings successfully imported."
 msgstr "Les réglages ont été importés avec succès."
@@ -3131,45 +2987,15 @@ msgstr "Valeur par défaut pour tout le site&nbsp;: %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 &amp; 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 &amp; Metas"
 msgstr "Titres &amp; Métas"
@@ -3186,19 +3012,6 @@ msgstr "Identifiant Twitter (sans le @)"
 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"
@@ -3212,21 +3025,12 @@ msgstr "Voir &#8220;%s&#8221;"
 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 &amp; data successfully imported."
 msgstr "Les réglages du framework WooThemes SEO ont bien été importés."
@@ -3244,10 +3048,6 @@ msgstr "Les options de Yoast Breadcrumbs sont introuvables."
 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."
@@ -3314,6 +3114,163 @@ msgstr "Contenu&nbsp;:"
 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&nbsp;"
+
+#. 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&nbsp: %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&nbsp;:"
+
+#: 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&nbsp;: 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&nbsp;:"
+
+#: 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."
index 6b9decf47bb4c5bdda2441a5ffb646feafb9f3a6..51b77a5bbddc7842e70a7428bdcd39f42068a45f 100755 (executable)
Binary files a/mdryvescouzy.com/wp-content/languages/themes/twentysixteen-fr_FR.mo and b/mdryvescouzy.com/wp-content/languages/themes/twentysixteen-fr_FR.mo differ
index bc6d30e2b6314515d1bcac3c4dbff96e92d8995d..e8526db3d4b990d5aaa908937425726e144f0afa 100755 (executable)
@@ -2,7 +2,7 @@
 # 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"
@@ -16,7 +16,7 @@ msgstr "Twenty Sixteen"
 
 #. 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&nbsp;: l&rsquo;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&nbsp;: l&rsquo;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
index e365ae61ad44bc0dc1d0bf5a828543c9c2a75081..0966fb67effeb781c83f4b9f424304cbe1db73b1 100644 (file)
@@ -13,10 +13,15 @@ function wpcf7_admin_init() {
 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' ),
@@ -149,13 +154,49 @@ function wpcf7_load_contact_form_admin() {
                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'] );
        }
@@ -166,10 +207,6 @@ function wpcf7_load_contact_form_admin() {
 
        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' );
 
@@ -229,13 +266,20 @@ function wpcf7_admin_management_page() {
                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' ) ) {
@@ -247,7 +291,7 @@ function wpcf7_admin_management_page() {
                        . __( 'Search results for &#8220;%s&#8221;', 'contact-form-7' )
                        . '</span>', esc_html( $_REQUEST['s'] ) );
        }
-?></h2>
+?></h1>
 
 <?php do_action( 'wpcf7_admin_notices' ); ?>
 
@@ -261,48 +305,45 @@ function wpcf7_admin_management_page() {
 <?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();
 
@@ -322,7 +363,7 @@ function wpcf7_admin_integration_page() {
 ?>
 <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' ); ?>
 
@@ -351,11 +392,26 @@ function wpcf7_admin_updated_message() {
        }
 
        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 ) ) {
@@ -419,13 +475,13 @@ function wpcf7_welcome_panel() {
        <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>
@@ -435,7 +491,7 @@ function wpcf7_welcome_panel() {
                        </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>
@@ -492,3 +548,59 @@ function wpcf7_not_allowed_to_edit() {
                '<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 &raquo; %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 &raquo; %s</p></div>', esc_html( $message ), $link );
+}
index 4e8992320670e5100442c436fb8882ec0edc5b83..44fa8d9ea0af58abde5ca011f6114470f5e51b7f 100644 (file)
@@ -25,7 +25,7 @@
        margin: 8px -8px 8px 8px;
 }
 
-.card h3.title {
+.card h2.title {
        float: right;
 }
 
index 7160324ff4d8912beda19f7ce0dbadc681daf755..d5633b3909640c30f775523df0ebf17bc484f28f 100644 (file)
@@ -39,6 +39,10 @@ span.shortcode > input {
        color: #a00;
 }
 
+#submitpost input.delete:hover {
+       color: #f00;
+}
+
 #submitpost input.delete:focus {
        outline: thin dotted;
 }
@@ -52,6 +56,12 @@ span.shortcode > input {
        color: #23282d;
 }
 
+div.config-error, span.config-error {
+       color: #d00;
+       font-style: normal;
+       font-size: 13px;
+}
+
 /*
  * Tabs
  */
@@ -103,7 +113,7 @@ span.shortcode > input {
        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;
@@ -253,6 +263,13 @@ span.shortcode > input {
        color: #666;
 }
 
+/*
+ * Messages Panel
+ */
+#messages-panel p.description {
+       margin: 5px 0 10px;
+}
+
 /*
  * List Table
  */
@@ -267,6 +284,13 @@ span.shortcode > input {
 /*
  * 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;
@@ -304,9 +328,11 @@ span.shortcode > input {
        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 {
index 6407d36d04a11b21a618809ec76f1bea8d5a07e1..255c6f0b1baff4ddfecc15d7d21391be03735bce 100644 (file)
@@ -31,7 +31,7 @@ function wpcf7_admin_save_button( $post_id ) {
 
 ?><div class="wrap">
 
-<h2><?php
+<h1><?php
        if ( $post->initial() ) {
                echo esc_html( __( 'Add New Contact Form', 'contact-form-7' ) );
        } else {
@@ -41,7 +41,7 @@ function wpcf7_admin_save_button( $post_id ) {
                        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' ); ?>
 
index ffa6abdceca6c2aba1340bed89708d81b2588237..940d7f3e0bc68ab26ab91d4482548f97ba03226e 100755 (executable)
@@ -67,7 +67,20 @@ function wpcf7_save_contact_form( $post_id = -1 ) {
        }
 
        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'] ) ) {
@@ -100,8 +113,20 @@ function wpcf7_save_contact_form( $post_id = -1 ) {
        }
 
        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'] ) ) {
@@ -130,5 +155,11 @@ function wpcf7_save_contact_form( $post_id = -1 ) {
 
        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;
 }
index ba0a7eb234840fe6b5db5edc5925539cf26f27bd..705d4d8246dbf2727a36bf1492d2df1a32f49676 100644 (file)
@@ -100,6 +100,29 @@ class WPCF7_Contact_Form_List_Table extends WP_List_Table {
                $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 &#8220;%s&#8221;', '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 ),
@@ -116,13 +139,9 @@ class WPCF7_Contact_Form_List_Table extends WP_List_Table {
                                        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 &#8220;%s&#8221;', '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 ) {
index c80618b451d45cf63c87ff7407fb41eb92b2b686..3b07bd939c61f962f08256fd79766f16b96d271a 100755 (executable)
@@ -42,7 +42,7 @@ class WPCF7_Editor {
 
 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();
@@ -79,9 +79,11 @@ function wpcf7_editor_box_mail( $post, $args = '' ) {
                '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'] ) ) :
@@ -102,7 +104,12 @@ function wpcf7_editor_box_mail( $post, $args = '' ) {
                <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>
 
@@ -111,7 +118,12 @@ function wpcf7_editor_box_mail( $post, $args = '' ) {
                <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>
 
@@ -120,7 +132,12 @@ function wpcf7_editor_box_mail( $post, $args = '' ) {
                <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>
 
@@ -129,7 +146,12 @@ function wpcf7_editor_box_mail( $post, $args = '' ) {
                <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>
 
@@ -138,7 +160,12 @@ function wpcf7_editor_box_mail( $post, $args = '' ) {
                <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>
 
@@ -168,18 +195,29 @@ function wpcf7_editor_panel_messages( $post ) {
                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
@@ -197,7 +235,7 @@ function wpcf7_editor_panel_additional_settings( $post ) {
        $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>
index 0a1e1455b8dc27145c65881c6b73223ab2cd25a7..e10ebfbe1c82dbf679425e56c7cadfd7230c2b11 100755 (executable)
@@ -23,15 +23,6 @@ class WPCF7_Help_Tabs {
 
                                $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(
@@ -73,8 +64,6 @@ class WPCF7_Help_Tabs {
                $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&#8217;s form-tags here.", 'contact-form-7' ) . '</p>';
index ae1f5370e627c95e48312fa59660071fd27679c9..0ea9274cd73c50ff9a8c4b15f15b54b5db3091c7 100755 (executable)
                        }
                });
 
+               if ('radio' == tagType) {
+                       options.push('default:1');
+               }
+
                options = (options.length > 0) ? options.join(' ') : '';
 
                var value = '';
diff --git a/mdryvescouzy.com/wp-content/plugins/contact-form-7/includes/config-validator.php b/mdryvescouzy.com/wp-content/plugins/contact-form-7/includes/config-validator.php
new file mode 100644 (file)
index 0000000..097d935
--- /dev/null
@@ -0,0 +1,325 @@
+<?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;
+       }
+}
index e138c2dbc792d6376b061c2dc2b786f97324b7c4..7b72d5640eeb723914c2bd305754ef4d45a2da53 100755 (executable)
@@ -37,7 +37,9 @@ class WPCF7_ContactFormTemplate {
 
        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' ),
@@ -61,7 +63,9 @@ class WPCF7_ContactFormTemplate {
        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' =>
@@ -116,56 +120,56 @@ function wpcf7_messages() {
                        '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' )
                )
        );
 
index 396ffe83ca586a8a71435af433126432b8a7a413..ed944eb507fb0e8651f85712bb96a100059fbaea 100644 (file)
@@ -14,6 +14,7 @@ class WPCF7_ContactForm {
        private $unit_tag;
        private $responses_count = 0;
        private $scanned_form_tags;
+       private $config_validator;
 
        public static function count() {
                return self::$found_items;
@@ -654,6 +655,7 @@ class WPCF7_ContactForm {
                $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 );
                }
@@ -809,6 +811,41 @@ class WPCF7_ContactForm {
 
                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 ) {
index 9c34f1a92ec24d4a31925f28745d8447200b7b81..12a9d2ccc8997f97b83f78c10ec28513773d4f78 100644 (file)
@@ -107,6 +107,11 @@ function wpcf7_use_really_simple_captcha() {
                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 );
 }
index fabc52c2be03e2b0ebebc7e2dc0582e1e3c98902..0fe19d926b0c145cb511c3ac0e1e40ef19295fbf 100755 (executable)
@@ -81,7 +81,7 @@ class WPCF7_Integration {
 ?>
 <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 />
index 3b4ec85c7824b7773d101f1b2f102548cada78c5..7fcb1f8804a3328acbd3b6b6dd1abf20d503030c 100644 (file)
@@ -7,79 +7,33 @@ function wpcf7_l10n() {
                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 = '' ) {
index 5a827ef40f7d9a149fa083fa70b2722d0a146e67..37e96fb48e5ee11573228ab72f513aec810d2eff 100644 (file)
@@ -72,6 +72,9 @@ class WPCF7_Mail {
 
                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 ) {
@@ -165,16 +168,45 @@ function wpcf7_mail_replace_tags( $content, $args = '' ) {
        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;
        }
 
@@ -188,13 +220,7 @@ class WPCF7_MailTaggedText {
                        . '((?:[\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 ) {
@@ -377,4 +403,4 @@ function wpcf7_special_mail_tag( $output, $name, $html ) {
        return $output;
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-bel.mo b/mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-bel.mo
new file mode 100644 (file)
index 0000000..f2df111
Binary files /dev/null and b/mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-bel.mo differ
diff --git a/mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-eo.mo b/mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-eo.mo
new file mode 100644 (file)
index 0000000..9eeed24
Binary files /dev/null and b/mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-eo.mo differ
diff --git a/mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-ga.mo b/mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-ga.mo
new file mode 100644 (file)
index 0000000..311cdf9
Binary files /dev/null and b/mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-ga.mo differ
diff --git a/mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-gu.mo b/mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-gu.mo
new file mode 100644 (file)
index 0000000..d1e18e1
Binary files /dev/null and b/mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-gu.mo differ
diff --git a/mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-hy.mo b/mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-hy.mo
new file mode 100644 (file)
index 0000000..3613183
Binary files /dev/null and b/mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-hy.mo differ
diff --git a/mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-ta_IN.mo b/mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-ta_IN.mo
new file mode 100644 (file)
index 0000000..f196e53
Binary files /dev/null and b/mdryvescouzy.com/wp-content/plugins/contact-form-7/languages/contact-form-7-ta_IN.mo differ
index e267f9d0050eeba865ce9829547c52d3a1f5be92..daea5e12bb27e908308b153b584ec5602a758662 100644 (file)
@@ -3,7 +3,7 @@ msgid ""
 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"
@@ -11,7 +11,7 @@ msgstr ""
 "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"
@@ -21,204 +21,239 @@ msgstr ""
 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 &#8220;%s&#8221;"
 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
@@ -244,7 +279,7 @@ msgid "Status"
 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 ""
 
@@ -264,32 +299,32 @@ msgid "Information"
 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 ""
 
@@ -309,7 +344,7 @@ msgid "Mail"
 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 ""
 
@@ -319,8 +354,8 @@ msgid "Additional Settings (%d)"
 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 ""
 
@@ -341,24 +376,30 @@ msgid "Date"
 msgstr ""
 
 #: contact-form-7/admin/includes/class-contact-forms-list-table.php:106
-msgid "Edit"
+#, php-format
+msgid "Edit &#8220;%s&#8221;"
 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 &#8220;%s&#8221;"
+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 ""
 
@@ -370,63 +411,63 @@ 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 ""
 
@@ -434,19 +475,15 @@ 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 "
@@ -455,78 +492,71 @@ msgid ""
 "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&#8217;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&#8217;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 "
@@ -536,21 +566,21 @@ msgid ""
 "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&#8217;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&#8217;t "
 "have corresponding form-tags. They are used to represent meta information of "
@@ -558,27 +588,27 @@ msgid ""
 "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 ""
 
@@ -587,6 +617,22 @@ 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 ""
@@ -609,105 +655,106 @@ 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 "
@@ -722,262 +769,6 @@ msgstr ""
 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 ""
@@ -1136,7 +927,7 @@ msgid "Date format that the sender entered is invalid"
 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
@@ -1144,7 +935,7 @@ msgid "Date is earlier than minimum limit"
 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
@@ -1152,7 +943,7 @@ msgid "Date is later than maximum limit"
 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
@@ -1200,15 +991,15 @@ msgid "Uploading a file fails for any reason"
 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
@@ -1216,7 +1007,7 @@ msgid "Uploaded file is too large"
 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
@@ -1224,7 +1015,7 @@ msgid "Uploading a file fails for PHP error"
 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
@@ -1269,27 +1060,12 @@ msgid ""
 "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
@@ -1297,7 +1073,7 @@ msgid "Number is smaller than minimum limit"
 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
@@ -1305,7 +1081,7 @@ msgid "Number is larger than maximum limit"
 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
@@ -1340,7 +1116,7 @@ msgid "Sender doesn't enter the correct answer to the quiz"
 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
@@ -1571,7 +1347,7 @@ msgid "Email address that the sender entered is invalid"
 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
@@ -1579,7 +1355,7 @@ msgid "URL that the sender entered is invalid"
 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
@@ -1587,7 +1363,7 @@ msgid "Telephone number that the sender entered is invalid"
 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
index dcb2129ca9f7be9b0a015b84442259d6ab42936b..1a2b936257c748abb4666978aa4bf732090a4c9e 100644 (file)
@@ -1,4 +1,4 @@
-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
index 6636a93057f6039589a738513939c6dcee2873a3..d38a2604b92cf409a3dc8db80404934014befb6e 100644 (file)
@@ -115,17 +115,17 @@ function wpcf7_date_messages( $messages ) {
        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' )
                ) ) );
 }
 
index 5ac71256be4851839e4e0969b730ac58ca29e46d..8fc87e7e9e6e60ad7f370d4ad6e300999bf68f14 100644 (file)
@@ -193,22 +193,22 @@ function wpcf7_file_messages( $messages ) {
        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' )
                )
        ) );
 }
index c67b5b038a26aced7869695a28859a6764c68d03..e326c97ac1b36aa6c58131ca19b68de6e2a74fbc 100644 (file)
@@ -12,7 +12,8 @@ function wpcf7_flamingo_submit( $contactform, $result ) {
                return;
        }
 
-       if ( $contactform->in_demo_mode() ) {
+       if ( $contactform->in_demo_mode()
+       || $contactform->is_true( 'do_not_store' ) ) {
                return;
        }
 
index 8f41381ecc36c713d18a7871be238667b44e6cf5..e1263296018b9c69b76be71d5d75e5aab36caf15 100644 (file)
@@ -118,17 +118,17 @@ function wpcf7_number_messages( $messages ) {
        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' )
                ) ) );
 }
 
index d2b05e2e0e05820be98595f1b2cbeda82bc57c9c..db55c6dc0fd1ad64db24538d79085ca3c10a8ce5 100644 (file)
@@ -147,7 +147,7 @@ add_filter( 'wpcf7_messages', 'wpcf7_quiz_messages' );
 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' )
        ) ) );
 }
 
index 63b372b9866e19727d5923ed3035fde4b22225aa..bd994b7211854cdcd714625e1112c2b9f808ea7b 100644 (file)
@@ -167,17 +167,17 @@ function wpcf7_text_messages( $messages ) {
        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' )
                ) ) );
 }
 
index 72b4b9368a78666d046f9bdde8f929310705160a..653e5837ed2569d19a6878ec4fca338db72683de 100644 (file)
@@ -2,9 +2,9 @@
 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
 
@@ -26,79 +26,15 @@ It is hard to continue development and support for this free plugin without cont
 
 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 ==
 
@@ -127,6 +63,14 @@ Do you have questions or issues with Contact Form 7? Use these support channels
 
 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.
index 54e5525a91a57034894de45950894378450f3932..dacc3b9450ddcd2fb4827f890c7979f3c5d3928b 100644 (file)
@@ -12,6 +12,7 @@ require_once WPCF7_PLUGIN_DIR . '/includes/mail.php';
 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';
@@ -29,7 +30,6 @@ class WPCF7 {
                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' );
index 7bbf6ad74e35613ac156889d6fbdb20dc40d047b..666c4b4e0279fa55f9f51bbc1f0dfe31870b5222 100644 (file)
@@ -7,12 +7,12 @@ Author: Takayuki Miyoshi
 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__ );
 
@@ -56,6 +56,10 @@ if ( ! defined( 'WPCF7_USE_REALLY_SIMPLE_CAPTCHA' ) ) {
        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 ) ) );
 
index 97eb2cdc6525dc0bc7db48542385483cb8228918..aefba4dbba4b173023e943bf73a59410b3863c22 100755 (executable)
@@ -481,4 +481,35 @@ table.block-ranges-table tr td {
        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
index 54512499878e515b4ae5bb194dfc3ea4908fabd4..9c6419ee6b69d3cac95f2f8ee236f9c547b18b73 100755 (executable)
Binary files a/mdryvescouzy.com/wp-content/plugins/wordfence/lib/GeoIP.dat and b/mdryvescouzy.com/wp-content/plugins/wordfence/lib/GeoIP.dat differ
index c06c34aa4a85dd67a049913abcd8ed0103ca2318..3cb3f368060efdfc5ec72b7fbc585da0c9f45d78 100755 (executable)
@@ -6,18 +6,14 @@ The Wordfence administrative URL for this site is: <?php echo $adminURL; ?>admin
 <?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 } ?>
 
 --
index 5889475f4a29cac6bade2d99082d7a7a9a9aa9d9..05b1a85752ba3686b5422e8e36908b3755fcfdde 100755 (executable)
 
 
 <?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 } ?>
 
 
index a9cc88576c27e3e0a2c570eb7b8625fe74c46063..05c2cbed34aad9db9a2f1c95de78d9dab4976660 100755 (executable)
@@ -9,11 +9,21 @@ WFAD.countryMap = <?php echo json_encode($wfBulkCountries); ?>;
        <?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">
index a2f8fa3f99ce01eff5ad89bb3d3c1a7ccd7f52ec..9ae8a4bf1262bb6b4d179b1a88ac5fbdc14f3157 100755 (executable)
@@ -45,7 +45,7 @@ $w = new wfConfig();
                        </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/"
@@ -56,9 +56,25 @@ $w = new wfConfig();
                                                                           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>
index 095f8033001c7e9f10b094aaccdc060a419d81da..7efdf876f4bba944b9769f867a09ed929b1ccfd7 100755 (executable)
@@ -6,14 +6,17 @@
        $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 } ?>
 
index 8d7ed61873ca4de586173f0ab0ad3eb5100f8fa1..fafac692b264c726ec29cebcab3233196ac7a0e3 100755 (executable)
                                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;">
index f89fb2bf1c2ccbe79de8f7acd34b2e7671480bf0..7c408caf6111c95b7eb642921267091710cc5e90 100755 (executable)
@@ -3,12 +3,23 @@
        <?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;">
index 492b85521176260562fca664d40d3989dbe65787..c5db010d8181f28f3df5989209b6a7c990797637 100755 (executable)
@@ -3,13 +3,28 @@
        <?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;">
index b687ebaaae09a787180852d122e5dc3ae01a62b9..79189ec68eac61d96cd3d92cb06afdb46ea7105c 100755 (executable)
@@ -267,30 +267,28 @@ SQL
        }
 
        /**
-        * 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 '
diff --git a/mdryvescouzy.com/wp-content/plugins/wordfence/lib/wfIPWhitelist.php b/mdryvescouzy.com/wp-content/plugins/wordfence/lib/wfIPWhitelist.php
new file mode 100644 (file)
index 0000000..cf596b6
--- /dev/null
@@ -0,0 +1,220 @@
+<?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
index 15d21d8e4355e5fde0ac8e71098b502833c36e35..108780aa8123225df4216f5a6378b72402b60fac 100755 (executable)
@@ -169,70 +169,17 @@ class wfLog {
         * @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(){
index f7c2f343eca539a0b871edad3033be3cf1ecaae4..27e36664c0699f814ab7986cb208341757448d8c 100755 (executable)
@@ -2,25 +2,6 @@
 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;
@@ -83,6 +64,124 @@ class wfUtils {
                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.
         *
@@ -266,6 +365,40 @@ class wfUtils {
                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
@@ -273,9 +406,8 @@ class wfUtils {
        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;
                                }
                        }
@@ -901,13 +1033,6 @@ class wfUtils {
                }
        }
 
-       /**
-        * @return array
-        */
-       public static function getPrivateAddrs() {
-               return self::$privateAddrs;
-       }
-
        /**
         * @param string $host
         * @return array
index 428adf87c6a25ea66266cd03fcd1a2d97f5c964e..41ad6f73a7fba9dca919a50dde29e8ef84a6f8bf 100755 (executable)
@@ -3,7 +3,7 @@ Contributors: mmaunder
 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 ==
@@ -190,6 +190,12 @@ Designed for every skill level, [The WordPress Security Learning Center](https:/
 
 == 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.
index 1b1d59f599f9c9f9030dda81cd26d9e301fd245d..021ae4561e2eb3e7a8fbff4771900bbe15a05659 100644 (file)
@@ -1,4 +1,4 @@
 <?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
index 32ac55bccc2ffd08f02d19ccd1737e9d22a70872..cee46e319c955a2bdba587f0b4b7b09b1af24557 100755 (executable)
@@ -4,13 +4,13 @@ Plugin Name: Wordfence Security
 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()); }
 }
diff --git a/mdryvescouzy.com/wp-content/uploads/2014/12/vignes-900x444.jpg b/mdryvescouzy.com/wp-content/uploads/2014/12/vignes-900x444.jpg
new file mode 100644 (file)
index 0000000..f27493d
Binary files /dev/null and b/mdryvescouzy.com/wp-content/uploads/2014/12/vignes-900x444.jpg differ
diff --git a/mdryvescouzy.com/wp-content/uploads/2016/02/LAF-février-2016.pdf b/mdryvescouzy.com/wp-content/uploads/2016/02/LAF-février-2016.pdf
new file mode 100644 (file)
index 0000000..6c7b142
Binary files /dev/null and "b/mdryvescouzy.com/wp-content/uploads/2016/02/LAF-f\303\251vrier-2016.pdf" differ
index e30094ddfcff140513957b2d7f85e515310c3edf..9f6aaa5327dddfa3c5160a2dd99b2bf81cb44408 100755 (executable)
@@ -59,6 +59,17 @@ class WP_Comment_Query {
                '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
         *
@@ -747,7 +758,7 @@ class WP_Comment_Query {
                        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 );
                        }
                }
 
@@ -816,6 +827,8 @@ class WP_Comment_Query {
                $limits = isset( $clauses[ 'limits' ] ) ? $clauses[ 'limits' ] : '';
                $groupby = isset( $clauses[ 'groupby' ] ) ? $clauses[ 'groupby' ] : '';
 
+               $this->filtered_where_clause = $where;
+
                if ( $where ) {
                        $where = 'WHERE ' . $where;
                }
@@ -867,12 +880,27 @@ class WP_Comment_Query {
                        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;
@@ -882,7 +910,7 @@ class WP_Comment_Query {
                                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++;
index 9f15d31f577149c4d546e16530e54c4206e2cd3c..b789556393275608b09da8c367dc6566ac2b62a7 100644 (file)
@@ -1535,9 +1535,11 @@ final class WP_Customize_Manager {
         */
        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;
index 4ef67dd74ded18a2ff242d54a7d24d1ad520e7c7..ad5b9caf5e9e681423b23460f8be48fc060a7c43 100644 (file)
@@ -1285,11 +1285,16 @@ function comments_template( $file = '/comments.php', $separate_comments = false
                '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 ) ) {
@@ -1317,10 +1322,13 @@ function comments_template( $file = '/comments.php', $separate_comments = false
                                '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'];
                        }
@@ -1335,18 +1343,22 @@ function comments_template( $file = '/comments.php', $separate_comments = false
        $_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;
        }
 
        /**
@@ -1925,27 +1937,6 @@ function wp_list_comments( $args = array(), $comments = null ) {
         */
        $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;
@@ -1960,34 +1951,71 @@ function wp_list_comments( $args = array(), $comments = null ) {
                        $_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;
+                       }
                }
        }
 
index 1f4a8638d4ef734f86a86492d643dca9b9c75550..65758680c810eeb0bf39eed7139ca7f6b7e24050 100644 (file)
@@ -4534,7 +4534,7 @@ function print_emoji_detection_script() {
                 *
                 * @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.
@@ -4581,7 +4581,7 @@ function print_emoji_detection_script() {
                ?>
                <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
        }
@@ -4646,7 +4646,7 @@ function wp_staticize_emoji( $text ) {
        $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' );
index 8fa00e942fc140346b07304d34e68b07df13a084..9f254a15be296e81e4680cb7aea361a2863909a1 100644 (file)
@@ -536,7 +536,7 @@ function wp_http_validate_url( $url ) {
                }
                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] )
                        ) {
index 327f66a19b913c4fab69961ed776ff3dd7cf1827..83f431cc92af5c57670cdebef5d5bcb1d93a9032 100755 (executable)
@@ -13,6 +13,7 @@
        function browserSupportsEmoji( type ) {
                var canvas = document.createElement( 'canvas' ),
                        context = canvas.getContext && canvas.getContext( '2d' ),
+                       stringFromCharCode = String.fromCharCode,
                        tone;
 
                if ( ! context || ! context.fillText ) {
@@ -37,7 +38,7 @@
                         * 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 ) {
                        /*
@@ -45,9 +46,9 @@
                         * 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;
                }
index fb5d949c259b958ee114ee7402b3a67af1608ab7..9579e8f9e46270a4c8bf729109887c347cd0867a 100755 (executable)
@@ -1 +1 @@
-!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
index d34608b89f3eacb482ce1ac65960f3ab101d669a..4827b0de2c88971ba93425f075e9fded06f5de44 100644 (file)
@@ -1580,6 +1580,19 @@ function wp_kses_post( $data ) {
        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.
  *
index 9d247baa9024a2fcbbe1e055f2c68c839d4fd36a..d6345c763038fa507eb3b11960a6c387c3fd499e 100644 (file)
@@ -473,7 +473,7 @@ function wp_start_object_cache() {
                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' ) );
        }
 }
index 84f63ed71dd0e5e5f648fcd88b82ba8538c7ff7b..0701f17fde037703deb84160d703f9a9a69b3f8d 100644 (file)
@@ -654,7 +654,7 @@ function switch_to_blog( $new_blog, $deprecated = null ) {
                        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' ) );
                }
@@ -725,7 +725,7 @@ function restore_current_blog() {
                        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' ) );
                }
index 88d1440599cd1af83069d0e0cc8a8966d97f47ec..3159b37e12e566a415b3471ad4cba22653999e42 100644 (file)
@@ -1333,7 +1333,8 @@ function wp_validate_redirect($location, $default = '') {
        // 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 )
@@ -1343,9 +1344,17 @@ function wp_validate_redirect($location, $default = '') {
        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());
 
index 9460d32450ba9cb0d2addf1105df4413da0f6058..b4aae270b22195f5478a03109a4723c69cef3d14 100644 (file)
@@ -2300,7 +2300,7 @@ class WP_Query {
                                $like = '%' . $wpdb->esc_like( $q['s'] ) . '%';
                        }
 
-                       $search_orderby = '(CASE ';
+                       $search_orderby = '';
 
                        // sentence match in 'post_title'
                        if ( $like ) {
@@ -2321,7 +2321,10 @@ class WP_Query {
                        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';
@@ -4981,16 +4984,11 @@ class WP_Query {
  *
  * @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.
@@ -5032,19 +5030,10 @@ function wp_old_slug_redirect() {
 
                $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] );
-                               }
-                       }
                }
 
                /**
index 8898a35bcda4192627b336102993ffb45d04947a..f6ffc54ff7eeb07ac10d09d3d16390f231e5d9a5 100755 (executable)
@@ -56,7 +56,7 @@ if (PHP_VERSION_ID < 70000) {
          * 
          * 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';
         }
index 6c2a29ce273539ba3167dfe0579a92781a6b49e9..c6d3b6e26d32462b5df783f57c5448ef38ee497a 100644 (file)
@@ -3646,7 +3646,7 @@ function update_object_term_cache($object_ids, $object_type) {
 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 );
index bb2ea80534111a81997b7eea2e2f99013688216b..6ccf893ded47fe5f50254dde0ed5e93425e5544e 100644 (file)
@@ -4,7 +4,7 @@
  *
  * @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.
index c21e12bca234931c423bfb3dc266b808f1ae36d3..85ee00db01d6d387e554f783cea0e4b72790cb46 100644 (file)
@@ -1,6 +1,6 @@
 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
index ff1e8ab88dee936430c9eea9490287d76207db2a..528d62d468cbfafdd6887c1f93248b4148763c02 100644 (file)
-<!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 &#8250; À 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">&#8212; 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&nbsp;:</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&nbsp;;</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&eacute;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 &#8250; À 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">&#8212; 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&nbsp;:</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&nbsp;;</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&eacute;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
index 04a855669198729b080063e843845e9fe9399e99..a808afca39fc5b416caa3d9187836f66bae485c9 100644 (file)
@@ -48,6 +48,18 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
                        <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>
@@ -67,7 +79,7 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
                                        <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>
index 38536a0ea9d37a60e1bdfc862f58a64f581d069d..0a90b9cb306ae680e0d5d0eb43907346ba3424f4 100644 (file)
@@ -326,16 +326,14 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
         * @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.
        }
 
        /**
index 29ac7888ab4b0fb4bbb69d4e8ab5d4456b7cfcdb..31f225735658baed675d309037f3bd539f64d912 100644 (file)
@@ -342,7 +342,7 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
         * @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.
index 398bb07386c56f6b46ee028c3c58259394b59ebb..5910c7502499d66a304eda37bcb0c6b793927872 100755 (executable)
@@ -530,7 +530,7 @@ final class WP_Screen {
                        }
                }
 
-               sort( $priorities );
+               ksort( $priorities );
 
                $sorted = array();
                foreach ( $priorities as $list ) {
@@ -998,7 +998,7 @@ final class WP_Screen {
                 * 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.
@@ -1087,7 +1087,7 @@ final class WP_Screen {
 
                        $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";
                }
                ?>
index 139d40507052d31a7c9239ec626efd97f3478635..2faccfe71a23f6f5cdafda6f50aec781155814b1 100644 (file)
@@ -408,12 +408,14 @@ function wp_read_image_metadata( $file ) {
                }
        }
 
-       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.
         *
index 8db0cde4336a72d2618cfeef6ffa1e745fd9884d..a320f0e193720b566942ab0857d7b4b8774e6ec1 100644 (file)
@@ -57,7 +57,9 @@ function get_hidden_columns( $screen ) {
 
        $hidden = get_user_option( 'manage' . $screen->id . 'columnshidden' );
 
-       if ( ! $hidden ) {
+       $use_defaults = ! is_array( $hidden );
+
+       if ( $use_defaults ) {
                $hidden = array();
 
                /**
@@ -75,11 +77,13 @@ function get_hidden_columns( $screen ) {
         * 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 );
 }
 
 /**
index 796e1400f44df76e1c448d5805764a9ec811ec1b..9d7fa4158cf1cf920318ad312958d00a4512fcc4 100644 (file)
@@ -397,7 +397,7 @@ $document.ready( function() {
         * 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() {
index 604ac9ef96d36c0d94a959a6e38f0edeffe7ea4f..6f5cda2e6fcae0680da97b5bd5929e1c126500ee 100644 (file)
@@ -1 +1 @@
-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
index a05dc0954fa7b9863e4b1c9217e4460b1366fd43..b1090de44b1860fb56b94b6e44a9348e09ca81ed 100644 (file)
@@ -137,6 +137,8 @@ inlineEditTax = {
                                }
                        }
                );
+               // Prevent submitting the form when pressing Enter on a focused field.
+               return false;
        },
 
        revert : function() {
index 14b3b8a7acfb76febd44857c36cd8e3a1ea732b6..c99a76b80f5a8f7f588a4977a76ff23c431dffda 100644 (file)
@@ -1 +1 @@
-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
index 4fe74193bbd830617557dcff3a7f834e82593fa3..c75e423dfd0fbb29459db0f9b11df719361f94d1 100644 (file)
@@ -50,7 +50,7 @@ var postboxes;
                        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();
@@ -144,8 +144,15 @@ var postboxes;
                },
 
                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',
index 077a5e3a149643137b910e612fc53b27cc10446f..f118baca293c1baf52b1f88522421de8108495b4 100644 (file)
@@ -1 +1 @@
-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
index cdf0d8b372e5e2283fe64156d4f1fede91143647..cec9747cabecc57052cfd8d4a59c56f55053f17b 100644 (file)
@@ -211,13 +211,14 @@ case 'delete':
        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' );
        }
 
@@ -257,7 +258,7 @@ case 'delete':
        </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 ) : ?>
index 3b43ac06d2ae1e5775f9349d74b7ecc2992491b9..0abd81c24454e9dceb1820a5b9b36abf65bb4d18 100644 (file)
@@ -406,10 +406,13 @@ foreach ( $wp_registered_sidebars as $sidebar => $registered_sidebar ) {
                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>
@@ -427,8 +430,11 @@ foreach ( $wp_registered_sidebars as $sidebar => $registered_sidebar ) {
                                                <?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
 
index 5ec92ffb141e703db12e8f09d3e3f725d33e63f0..b5f0bc869daf29ec39ca4f5d85bc8ae713bfaad2 100644 (file)
@@ -4,7 +4,7 @@
  *
  * 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.
@@ -33,8 +33,8 @@ define('DB_HOST', 'localhost');
 /** 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', '');
 
@@ -42,42 +42,42 @@ 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 ! */
 
index 10c0f122b5a4bf8bc8a9fa7aea397da8866509c3..26eb09156c46283ddde988ad526d9554645a33c4 100644 (file)
Binary files a/pavillonmadeleine.fr/wp-content/languages/admin-fr_FR.mo and b/pavillonmadeleine.fr/wp-content/languages/admin-fr_FR.mo differ
index ac7103aa6b17802938450e0a26537d4ad72c2ae6..f7ad089bcb539618ccfe7ac79eb7150b16ce061f 100644 (file)
@@ -2,7 +2,7 @@
 # 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"
@@ -16,79 +16,79 @@ msgstr "Merci d&rsquo;avoir fait la mise à jour&nbsp;! WordPress %s vous donne
 
 #. 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&rsquo;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&rsquo;infrastructure est la première partie d&rsquo;une mise en place en plusieurs étapes de l&rsquo;API REST. L&rsquo;inclusion des points d&rsquo;accès est prévue pour une prochaine version. Pour avoir un aperçu des principaux points d&rsquo;accès, et pour obtenir plus d&rsquo;information sur la manière d&rsquo;étendre l&rsquo;API REST, découvrez l&rsquo;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&rsquo;infrastructure de l&rsquo;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&rsquo;API REST a été conçue pour offrir aux développeurs une manière centrale de construire et d&rsquo;é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&nbsp;Comments, ReverbNation, Speaker&nbsp;Deck, and VideoPress."
 msgstr "En plus de l&rsquo;insertion de contenu, WordPress 4.4 apporte la reconnaissance de cinq nouveaux fournisseurs oEmbed&nbsp;: Cloudup, Reddit&nbsp;Comments, ReverbNation, Speaker&nbsp;Deck et VideoPress."
 
-#: wp-admin/about.php:129
+#: wp-admin/about.php:141
 msgid "REST API infrastructure"
 msgstr "Infrastructure de l&rsquo;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&#8217;ve set one. We&#8217;ll even include your site icon and links for comments and sharing."
 msgstr "Vous pouvez désormais insérer vos articles dans d&rsquo;autres sites, et même dans d&rsquo;autres sites WordPress. Collez simplement l&rsquo;adresse du contenu dans l&rsquo;éditeur, et une prévisualisation s&rsquo;affichera instantanément, avec titre, extrait, et l&rsquo;image de Une si vous avez mise une. Vous y trouverez même l&rsquo;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&#8217;t need to do anything to your theme, it just works."
 msgstr "WordPress approche désormais l&rsquo;affichage des images de manière plus intelligente, utilisant à chaque fois la taille d&rsquo;image la plus pertinente en fonction de l&rsquo;appareil utilisé. Vous n&rsquo;avez rien à changer à votre thème&nbsp;: ça fonctionne, c&rsquo;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&rsquo;un thème de blog classique."
 
-#: wp-admin/about.php:59
+#: wp-admin/about.php:71
 msgid "Twenty Sixteen"
 msgstr "Twenty Sixteen"
 
@@ -107,7 +107,7 @@ msgid "(Currently set to: %s)"
 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é."
 
@@ -129,15 +129,15 @@ msgstr "Vous pouvez changer votre image de profil en passant par <a href=\"%s\">
 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é"
 
@@ -317,7 +317,7 @@ msgstr "Les fichiers du répertoire %s sont exécutés automatiquement."
 msgid "You are not allowed to manage these items."
 msgstr "Vous n&rsquo;ê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."
 
@@ -333,7 +333,7 @@ msgstr "Un des utilisateurs sélectionnés n&rsquo;est pas un abonné de ce site
 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"
 
@@ -975,7 +975,7 @@ msgstr "Responsable de la documentation"
 msgid "You&rsquo;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&nbsp;?"
 
-#: 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é&nbsp;:"
 
@@ -1553,17 +1553,17 @@ msgid_plural "%d media attachments moved to the trash."
 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&nbsp;?"
 
-#: 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&nbsp;:"
 
@@ -1976,7 +1976,7 @@ msgstr "Vous pouvez activer le mode d'écriture sans distraction en cliquant sur
 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"
 
@@ -2049,10 +2049,6 @@ msgstr "<strong>Nouvelles de WordPress</strong> - Dernière nouvelles en provena
 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/"
@@ -2061,6 +2057,10 @@ 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>."
@@ -2177,10 +2177,6 @@ msgstr "Utilisez les boutons fléchées au-dessus de la fenêtre ou les flèches
 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&#8217;é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&#8217;écran de modifications étendues par la fenêtre des détails."
@@ -2189,6 +2185,10 @@ msgstr "Vous pouvez aussi supprimer les éléments individuellement et accéder
 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&rsquo;un à l&rsquo;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&#8217;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&#8217;écran. Ces sections sont régulièrement renouvelées."
@@ -2434,7 +2434,7 @@ msgctxt "themes"
 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."
 
@@ -2471,11 +2471,11 @@ msgstr "<strong>D&rsquo;un coup d’œil</strong> - Affiche un résumé du conte
 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&rsquo;écran de suppression des utilisateurs pour confirmer votre action, d&rsquo;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 à&nbsp;:"
 
-#: 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&nbsp;?"
 
@@ -2680,14 +2680,14 @@ msgstr "Cliquez sur Personnaliser pour le thème actuel ou Prévisualisation pou
 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&rsquo;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&rsquo;é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&rsquo;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&rsquo;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&rsquo;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&rsquo;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."
@@ -2777,7 +2777,7 @@ msgstr "Affichier le thème précédent"
 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"
 
@@ -3708,10 +3708,6 @@ msgstr "Réglages de publication"
 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 &#8220;Choose Image&#8221; 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 &laquo;&nbsp;Choisir l&rsquo;image&nbsp;&raquo;. Vous pouvez n&rsquo;afficher qu&rsquo;une occurrence de l&rsquo;image, ou la répéter afin de remplir l&rsquo;é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&rsquo;édition de l&rsquo;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&rsquo;onglet &laquo;&nbsp;Options de l&rsquo;écran&nbsp;&raquo; pour cacher d&rsquo;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&rsquo;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&rsquo;en bas pour les retrouver dans la zone des widgets inactifs, où ils ont été conservés avec leurs derniers réglages."
@@ -3720,6 +3716,10 @@ msgstr "En changeant de thèmes, il y a souvent des variations sur le nombre et
 msgid "<strong>Parent</strong> &mdash; 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> &mdash; Les catégories, contrairement aux étiquettes, peuvent avoir une hiérarchie. Vous pouvez avoir une catégorie nommée &laquo;&nbsp;Jazz&nbsp;&raquo;, et à l&rsquo;intérieur, plusieurs catégories comme &laquo;&nbsp;Bebop&nbsp;&raquo; et &laquo;&nbsp;Big Band&nbsp;&raquo;. Le fait d&rsquo;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 &laquo;&nbsp;Parente&nbsp;&raquo;&nbsp;."
 
+#: 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&rsquo;édition de l&rsquo;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&rsquo;onglet &laquo;&nbsp;Options de l&rsquo;écran&nbsp;&raquo; pour masquer d&rsquo;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&rsquo;outil de mise en ligne multi-fichiers. Si vous rencontrez des problèmes, essayez la <a href=\"#\">méthode du navigateur</a> à la place."
@@ -3759,7 +3759,7 @@ msgstr "Vous pouvez également choisir une couleur pour ce texte en cliquant sur
 
 #: 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. &#8220;#ff0000&#8221; for red, or by choosing a color using the color picker."
-msgstr "Dans la section &laquo;&nbsp;Texte d&rsquo;en-tête&nbsp;&raquo; de cette page, vous pouvez choisir d&rsquo;afficher ce texte ou de le cacher. Vous pouvez également choisir une couleur pour ce texte en cliquant sur le bouton &laquo;&nbsp;Sélecteur de couleur&nbsp;&raquo; et soit en saisissant une valeur HTML valide (ex.&nbsp;: <code>#ff0000</code> pour du rouge) ou en cliquant sur le sélecteur de couleur."
+msgstr "Dans la section &laquo;&nbsp;Texte d&rsquo;en-tête&nbsp;&raquo; de cette page, vous pouvez choisir d&rsquo;afficher ce texte ou de le masquer. Vous pouvez également choisir une couleur pour ce texte en cliquant sur le bouton &laquo;&nbsp;Sélecteur de couleur&nbsp;&raquo; et soit en saisissant une valeur HTML valide (ex.&nbsp;: <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 &#8220;Discourage search engines from indexing this site&#8221; 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."
@@ -3789,23 +3789,23 @@ msgstr "Dans la colonne <strong>En réponse à</strong> se trouvent trois élém
 msgid "Used: %1$s%% of %2$s"
 msgstr "Taux d&rsquo;utilisation&nbsp;: %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&nbsp;: %2$s <strong>L&rsquo;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&nbsp;: %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&nbsp;: %2$s <strong>l&rsquo;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&nbsp;: %2$s <strong>vous n&rsquo;avez pas l&rsquo;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."
 
@@ -4187,11 +4187,11 @@ msgstr "Votre fichier <code>wp-config.php</code> ne défini pas préfixe de tabl
 msgid "Revert to the <strong>Browser Uploader</strong> by clicking the link below the drag and drop box."
 msgstr "Revenez à l&rsquo;<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&rsquo;utilisateur</a>"
 
-#: wp-admin/users.php:417
+#: wp-admin/users.php:418
 msgid "User deleted."
 msgstr "Utilisateur supprimé."
 
@@ -4462,7 +4462,7 @@ msgstr "http://ma.tt/"
 
 #. 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> &mdash; Shows links for some of the most common tasks when setting up a new site."
@@ -4953,13 +4953,13 @@ msgid "Show Toolbar when viewing site"
 msgstr "Afficher la barre d&rsquo;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&rsquo;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."
@@ -4967,14 +4967,14 @@ msgstr[1] "La <strong>version %1$s</strong> a corrigé un problème de sécurit
 
 #. 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."
@@ -4984,24 +4984,26 @@ msgstr[1] "La <strong>version %1$s</strong> a corrigé %2$s bugs."
 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&nbsp;! Ceci est l&rsquo;écran que vous verrez lorsque vous vous connectez à votre site, et qui vous donne accès à l&rsquo;ensemble des fonctionnalités de gestion de WordPress. Vous pouvez obtenir de l&rsquo;aide dans n&rsquo;importe quel écran en cliquant sur l&rsquo;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&#8217;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é."
 
@@ -5009,7 +5011,7 @@ msgstr "La <strong>version %s</strong> a corrigé quelques problèmes de sécuri
 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"
 
@@ -5167,7 +5169,7 @@ msgstr "Cet écran offre plusieurs options pour contrôler la gestion et l&rsquo
 
 #: 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&rsquo;administration, et désactiver l&rsquo;éditeur visuel (WYSIWYG), entre autres choses. Vous pouvez également cacher la barre d&rsquo;outils (anciennement &laquo;&nbsp;barre d&rsquo;administration&nbsp;&raquo;) sur la partie publique de votre site, mais elle ne peut pas être enlevée des écrans d&rsquo;administration."
+msgstr "Vous pouvez modifier votre mot de passe, activer les raccourcis clavier, modifier la combinaison de couleurs des écrans de l&rsquo;administration, et désactiver l&rsquo;éditeur visuel (WYSIWYG), entre autres choses. Vous pouvez également masquer la barre d&rsquo;outils (anciennement &laquo;&nbsp;barre d&rsquo;administration&nbsp;&raquo;) sur la partie publique de votre site, mais elle ne peut pas être enlevée des écrans d&rsquo;administration."
 
 #: wp-admin/widgets.php:95
 msgid "Inactive Sidebar (not used)"
@@ -5273,10 +5275,6 @@ msgstr "<strong>Aperçu</strong> vous donnera une idée de ce à quoi votre brou
 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&rsquo;articles à afficher par écran à l&rsquo;aide de l&rsquo;onglet &laquo;&nbsp;Options de l&rsquo;écran&nbsp;&raquo;."
-
 #: 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&rsquo;une ligne de la liste des utilisateurs, fera s&rsquo;afficher des liens vous permettant de gérer l&rsquo;utilisateur. Vous pouvez lancer les actions suivantes&nbsp;:"
@@ -5289,6 +5287,10 @@ msgstr "&laquo;&nbsp;Modifier&nbsp;&raquo; vous envoie sur l&rsquo;écran de mod
 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 &laquo;&nbsp;Articles&nbsp;&raquo;."
 
+#: 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&rsquo;articles à afficher par écran à l&rsquo;aide de l&rsquo;onglet &laquo;&nbsp;Options de l&rsquo;écran&nbsp;&raquo;."
+
 #: 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&#8217;s name to Edit the user profile under Network Admin > All Users."
 msgstr "Parce qu&rsquo;il s&rsquo;agit d&rsquo;une installation multisite, vous pouvez ajouter des comptes qui existent déjà sur le Réseau, en indiquant un nom d&rsquo;utilisateur ou une adresse de messagerie, et en assignant un rôle. Pour avoir plus d&rsquo;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&rsquo;utilisateur pour modifier son profil utilisateur, depuis l&rsquo;écran &laquo;&nbsp;Tous les utilisateurs&nbsp;&raquo;."
@@ -5301,11 +5303,11 @@ msgstr "Il semble y avoir une inclusion directe de <code>wp-admin/includes/templ
 msgid "Welcome to WordPress %s"
 msgstr "Bienvenue dans WordPress %s"
 
-#: wp-admin/about.php:189
+#: wp-admin/about.php:201
 msgid "Return to Dashboard &rarr; Updates"
 msgstr "Retourner aux mises à jour"
 
-#: wp-admin/about.php:192
+#: wp-admin/about.php:204
 msgid "Go to Dashboard &rarr; Home"
 msgstr "Aller sur l&rsquo;accueil"
 
@@ -5317,7 +5319,7 @@ msgstr "WordPress est créé par une équipe de personnes passionnées, réparti
 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"
 
@@ -5521,7 +5523,7 @@ msgstr "Attention&nbsp;:"
 #. 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 &#8220;%s&#8221;"
 msgstr "Résultats de recherche pour &laquo;&nbsp;%s&nbsp;&raquo;"
 
@@ -5585,7 +5587,7 @@ msgid "Role"
 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"
 
@@ -5615,7 +5617,7 @@ msgid "All Users"
 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"
@@ -5653,20 +5655,20 @@ msgstr "Utilisateur ajouté."
 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&#8217;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."
 
@@ -5991,7 +5993,7 @@ msgstr "<strong>Aléatoire &nbsp;:</strong> affiche une image différente sur ch
 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&nbsp;:"
 
@@ -6016,7 +6018,7 @@ msgstr "Vous ne pouvez pas effacer une extension tant qu&rsquo;elle est activée
 msgid "This plugin may be active on other sites in the network."
 msgstr "Cette extension peut uniquement être activée sur l&rsquo;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"
@@ -6573,7 +6575,7 @@ msgstr "UTC signifie &laquo;&nbsp;Temps universel coordonné&nbsp;&raquo;."
 
 #: 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&#8217;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&rsquo;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&rsquo;utilisez pas via l&rsquo;onglet &laquo;&nbsp;Options de l&rsquo;écran&nbsp;&raquo;, et fermer les blocs en cliquant sur leur barre de titre."
+msgstr "Les blocs pour le nom, l&rsquo;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&rsquo;utilisez pas via l&rsquo;onglet &laquo;&nbsp;Options de l&rsquo;écran&nbsp;&raquo;, 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."
@@ -6625,7 +6627,7 @@ msgid "Home: %s"
 msgstr "Accueil&nbsp;: %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&nbsp;:"
 
@@ -6709,10 +6711,6 @@ msgstr "Toutes les mises à jour sont terminées."
 msgid "When adding a new category on this screen, you&#8217;ll fill in the following fields:"
 msgstr "Quand vous ajoutez une nouvelle catégorie via cet écran, vous devez remplir les champs suivants&nbsp;:"
 
-#: 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&rsquo;affichage de cet écran via l&rsquo;onglet &laquo;&nbsp;Options de l&rsquo;écran&nbsp;&raquo;, afin de définir le nombre d&rsquo;é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 &#8220;Uncategorized&#8221; 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 &laquo;&nbsp;Non classé&nbsp;&raquo;&nbsp;; vous pouvez la modifier dans vos <a href=\"%s\">options d&rsquo;écriture</a>."
@@ -6733,6 +6731,10 @@ msgstr "<strong>Description</strong> &mdash; La description n&rsquo;est pas trè
 msgid "<strong>Name</strong> &mdash; The name is how it appears on your site."
 msgstr "<strong>Nom</strong> &mdash; Le nom est utilisé un peu partout sur votre site&nbsp;;"
 
+#: 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&rsquo;affichage de cet écran via l&rsquo;onglet &laquo;&nbsp;Options de l&rsquo;écran&nbsp;&raquo;, afin de définir le nombre d&rsquo;é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&rsquo;aide des filtres en haut de l&rsquo;écran. Vous pouvez également affiner la liste par défaut à l&rsquo;aide du menu déroulant au dessus du tableau."
@@ -6837,14 +6839,14 @@ msgstr "Passer la souris au-dessus d&rsquo;une ligne de la liste d&rsquo;article
 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&rsquo;aide des liens textuels en haut à gauche, afin d&rsquo;afficher tous les articles, ou seulement les articles publiés, les brouillons, etc. Par défaut, tous les articles sont affichés&nbsp;;"
 
-#: 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&rsquo;articles à afficher par écran à l&rsquo;aide de l&rsquo;onglet &laquo;&nbsp;Options de l&rsquo;écran&nbsp;&raquo;&nbsp;;"
-
 #: 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&rsquo;elle n&rsquo;affiche que les articles d&rsquo;une catégorie spécifique ou d&rsquo;un mois donné, à l&rsquo;aide du menu déroulant situé au-dessus de la liste. Cliquez sur le bouton &laquo;&nbsp;Filtrer&nbsp;&raquo; après avoir fait votre choix. Vous pouvez également affiner la liste en cliquant sur l&rsquo;auteur d&rsquo;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&rsquo;articles à afficher par écran à l&rsquo;aide de l&rsquo;onglet &laquo;&nbsp;Options de l&rsquo;écran&nbsp;&raquo;&nbsp;;"
+
 #: wp-admin/plugins.php:537
 msgid "Search Installed Plugins"
 msgstr "Chercher parmi les extensions installées"
@@ -7002,7 +7004,7 @@ msgstr "Utilisez-le pour récupérer du texte, des images et des vidéos depuis
 msgid "&mdash; No role for this site &mdash;"
 msgstr "&mdash; Pas de rôle sur ce site &mdash;"
 
-#: wp-admin/users.php:357
+#: wp-admin/users.php:358
 msgid "Remove Users from Site"
 msgstr "Supprimer des utilisateurs de ce site"
 
@@ -7138,23 +7140,23 @@ msgstr "Options d&rsquo;affichage"
 msgid "User deletion is not allowed from this screen."
 msgstr "La suppression d&rsquo;un utilisateur n&rsquo;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&nbsp;:"
 
-#: 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&rsquo;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&rsquo;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."
 
@@ -7173,7 +7175,7 @@ msgstr "Afficher les détails"
 
 #: 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."
@@ -7453,7 +7455,7 @@ msgid_plural "Drop-ins <span class=\"count\">(%s)</span>"
 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"
 
@@ -8597,31 +8599,31 @@ msgstr "Vous ne pouvez pas modifier cet utilisateur."
 msgid "You can&#8217;t delete users."
 msgstr "Vous ne pouvez pas supprimer d&rsquo;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&rsquo;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&#8217;s role must have user editing capabilities."
 msgstr "L&rsquo;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&#8217;t delete the current user."
 msgstr "Vous ne pouvez pas supprimer l&rsquo;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."
 
@@ -10756,10 +10758,6 @@ msgstr "Clé publique&nbsp;:"
 msgid "Private Key:"
 msgstr "Clé privée&nbsp;:"
 
-#: wp-admin/includes/image-edit.php:70
-msgid "Discard any changes and restore the original image."
-msgstr "Abandonner tout changement et rétablir l&rsquo;image originale."
-
 #: wp-admin/includes/image-edit.php:77
 msgid "Restore image"
 msgstr "Rétablir l&rsquo;image"
@@ -10844,6 +10842,10 @@ msgstr "Impossible de se connecter au serveur FTP %s"
 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&rsquo;image originale."
+
 #: wp-admin/includes/media.php:2429 wp-admin/includes/nav-menu.php:346
 #: wp-admin/includes/nav-menu.php:620
 msgid "&laquo;"
index c4af71516f97f7091c79e2f00ecf47709811a845..8fcf07692b1a2a00fadbee89ccdbd2d43a39759f 100644 (file)
Binary files a/pavillonmadeleine.fr/wp-content/languages/fr_FR.mo and b/pavillonmadeleine.fr/wp-content/languages/fr_FR.mo differ
index 6705fa57b2b418e2c6b9696ddd5b7bbc558c3531..0f18f11c8fc9b17fb74fdcc2d481a0d633bb1e6a 100644 (file)
@@ -2,7 +2,7 @@
 # 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"
@@ -45,12 +45,12 @@ msgstr "https://codex.wordpress.org/Debugging_a_WordPress_Network"
 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."
 
@@ -135,13 +135,13 @@ msgctxt "genitive"
 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"
@@ -339,11 +339,11 @@ msgstr "Un jolinom (nicename) ne devrait pas dépasser les 50 caractères."
 msgid "Could not save password reset key to database."
 msgstr "Impossible d&rsquo;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"
 
@@ -351,11 +351,11 @@ msgstr "Liste des catégories"
 msgid "<strong>ERROR</strong>: Invalid username."
 msgstr "<strong>ERREUR</strong>&nbsp;: Nom d&rsquo;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"
 
@@ -498,7 +498,7 @@ msgid "Usernames can only contain lowercase letters (a-z) and numbers."
 msgstr "Les noms d&rsquo;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 "&#8220;%s&#8221;"
 msgstr "&laquo;&nbsp;%s&nbsp;&raquo;"
@@ -613,7 +613,7 @@ msgstr "Commentaires plus récents"
 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"
 
@@ -660,7 +660,7 @@ msgstr "Une fois en mode de réorganisation, des options de contrôle supplémen
 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&nbsp;?</a>"
 
@@ -859,7 +859,7 @@ msgstr "Ajouter une nouvelle image d&rsquo;en-tête"
 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"
 
@@ -867,11 +867,11 @@ 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&rsquo;icône du site est utilisée pour représenter votre site en tant qu&rsquo;icône de navigateur (favicon) et icône d&rsquo;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"
 
@@ -896,7 +896,7 @@ msgstr "Votre lien de réinitialisation de mot de passe semble être invalide. V
 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&nbsp;:"
 
@@ -914,7 +914,7 @@ msgstr "Mode de réarrangement fermé"
 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&nbsp;! Veuillez utiliser %3$s à la place."
 
@@ -1080,7 +1080,7 @@ msgstr "Balise de fermeture du code"
 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"
 
@@ -1156,10 +1156,6 @@ msgstr "Barre d'outils en ligne (quand une image, un lien ou un aperçu est sél
 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&nbsp;:"
-
 #: wp-includes/class-wp-editor.php:1051
 msgid "Ctrl + letter:"
 msgstr "Ctrl + lettre :"
@@ -1184,6 +1180,10 @@ msgstr "Raccourcis par défaut,"
 msgid "Additional shortcuts,"
 msgstr "Raccourcis supplémentaires,"
 
+#: wp-includes/widgets/class-wp-widget-text.php:107
+msgid "Content:"
+msgstr "Contenu&nbsp;:"
+
 #: wp-includes/class-wp-customize-section.php:236
 #: wp-includes/customize/class-wp-customize-themes-section.php:55
 msgid "Customizing"
@@ -1529,7 +1529,7 @@ msgstr "Inclusion suggérée #%d"
 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."
 
@@ -1639,13 +1639,13 @@ msgid "F j, Y @ H:i: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&nbsp;: %1$s (IP&nbsp;: %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&nbsp;: %1$s (IP&nbsp;: %2$s, %3$s)"
 
@@ -1653,7 +1653,7 @@ msgstr "Auteur&nbsp;: %1$s (IP&nbsp;: %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."
 
@@ -1677,24 +1677,24 @@ msgid "The %1$s option is deprecated for the family of %2$s functions. Use the %
 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>"
 
@@ -1738,7 +1738,7 @@ msgctxt "previous post"
 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."
 
@@ -1798,7 +1798,7 @@ msgstr "Vous devez passer un tableau de types."
 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&rsquo;utiliser avec l&rsquo;é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."
 
@@ -1807,7 +1807,7 @@ msgctxt "verb"
 msgid "Trash"
 msgstr "Corbeille"
 
-#: wp-includes/media.php:3333
+#: wp-includes/media.php:3361
 msgctxt "noun"
 msgid "Trash"
 msgstr "Corbeille"
@@ -1839,59 +1839,59 @@ msgctxt "translations"
 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&nbsp;: %s"
 
-#: wp-includes/general-template.php:1357
+#: wp-includes/general-template.php:1353
 msgid "Year: %s"
 msgstr "Année&nbsp;: %s"
 
-#: wp-includes/general-template.php:1355
+#: wp-includes/general-template.php:1351
 msgid "Author: %s"
 msgstr "Auteur&nbsp;: %s"
 
-#: wp-includes/general-template.php:1353
+#: wp-includes/general-template.php:1349
 msgid "Tag: %s"
 msgstr "Étiquette&nbsp;: %s"
 
-#: wp-includes/general-template.php:1361
+#: wp-includes/general-template.php:1357
 msgid "Day: %s"
 msgstr "Jour&nbsp;: %s"
 
-#: wp-includes/general-template.php:1359
+#: wp-includes/general-template.php:1355
 msgid "Month: %s"
 msgstr "Mois&nbsp;: %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&nbsp;: %2$s"
 
-#: wp-includes/general-template.php:1383
+#: wp-includes/general-template.php:1379
 msgid "Archives: %s"
 msgstr "Archives&nbsp;: %s"
 
@@ -1899,52 +1899,52 @@ msgstr "Archives&nbsp;: %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"
@@ -1953,7 +1953,7 @@ 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"
 
@@ -2063,15 +2063,15 @@ msgstr "Ajouter"
 msgid "<strong>You have successfully updated WordPress!</strong> Please log back in to see what&#8217;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."
@@ -2087,15 +2087,15 @@ msgstr "Sortir de la Corbeille"
 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"
 
@@ -2107,11 +2107,11 @@ msgstr "(Aucune information)"
 
 #. 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&nbsp;: %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."
@@ -2119,7 +2119,7 @@ msgstr ""
 "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"
 
@@ -2127,7 +2127,7 @@ 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"
 
@@ -2171,23 +2171,23 @@ msgstr "Mis en ligne sur"
 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"
 
@@ -2330,53 +2330,53 @@ msgid "Image CSS Class"
 msgstr "Classe CSS de l&rsquo;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 "&#8592; Cancel Audio Playlist"
 msgstr "&#8592; 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"
 
@@ -2388,7 +2388,7 @@ msgstr "Réglages de l&rsquo;affichage"
 msgid "Image Title Attribute"
 msgstr "Attribut &laquo; Title &raquo; de l&rsquo;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&rsquo;image suggérées&nbsp;:"
 
@@ -2445,7 +2445,7 @@ msgstr "Déplacer vers une autre zone&hellip;"
 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&hellip;"
 msgstr "Recadrage&hellip;"
 
@@ -2690,7 +2690,7 @@ msgid "Add alternate sources for maximum HTML5 playback:"
 msgstr "Ajoutez des sources alternatives pour une lecture optimale avec HTML5&nbsp;:"
 
 #: 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"
 
@@ -2699,17 +2699,17 @@ 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"
 
@@ -2725,68 +2725,68 @@ msgstr "Métadonnées"
 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 "&#8592; Cancel Video Playlist"
 msgstr "&#8592; 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&rsquo;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"
 
@@ -2794,23 +2794,23 @@ 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"
 
@@ -2818,28 +2818,28 @@ 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&rsquo;image"
 
@@ -2856,7 +2856,7 @@ msgstr "Afficher le nom de l&rsquo;artiste dans la liste de lecture"
 msgid "There are no associated subtitles."
 msgstr "Il n&rsquo;y a pas de sous-titres associés."
 
-#: wp-includes/media.php:3372
+#: wp-includes/media.php:3400
 msgid "Replace Image"
 msgstr "Remplacer l&rsquo;image"
 
@@ -2929,7 +2929,7 @@ msgstr "Couleur d&rsquo;arrière plan"
 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"
 
@@ -3145,22 +3145,22 @@ msgstr "Insérer la balise « Lire la suite... »"
 msgid "Select an area to move this widget into:"
 msgstr "Sélectionner une zone vers laquelle déplacer ce widget&nbsp;:"
 
-#: 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é"
@@ -3233,12 +3233,12 @@ msgctxt "Open Sans font: add new subset (greek, cyrillic, vietnamese)"
 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"
@@ -3247,7 +3247,7 @@ 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"
@@ -3264,7 +3264,7 @@ msgstr "Mises à jour des traductions"
 msgid "The theme directory \"%s\" does not exist."
 msgstr "Le répertoire du thème &laquo;&nbsp;%s&nbsp;&raquo; n&rsquo;existe pas."
 
-#: wp-includes/functions.php:1216
+#: wp-includes/functions.php:1221
 msgid "ERROR: This is not a valid feed template."
 msgstr "ERREUR&nbsp;: ce n&rsquo;est pas un flux valide."
 
@@ -3448,7 +3448,7 @@ msgstr "Avez-vous correctement saisi votre adresse de messagerie&nbsp;? Vous avi
 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&rsquo;existe pas, mais vous pouvez le créer dès à présent&nbsp;!"
 
-#: 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&rsquo;ouvrira dans une nouvelle fenêtre. Après vous être connecté(e), vous pourrez la fermer et revenir à cette page."
 
@@ -3479,11 +3479,11 @@ msgctxt "label"
 msgid "Search for:"
 msgstr "Rechercher&nbsp;:"
 
-#: 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."
 
@@ -3521,11 +3521,11 @@ msgstr "Ordre aléatoire"
 #. 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&rsquo;une adresse web"
 
@@ -3534,15 +3534,15 @@ msgctxt "Links widget"
 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&rsquo;ordre"
 
@@ -3559,7 +3559,7 @@ msgstr "Désélectionner"
 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."
@@ -3568,7 +3568,7 @@ msgstr ""
 "  « 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"
 
@@ -3584,7 +3584,7 @@ msgstr "Ignorer les erreurs"
 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&rsquo;a pas pu être sélectionné."
 
@@ -3630,7 +3630,7 @@ msgstr "Insérer dans la page"
 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"
 
@@ -3642,7 +3642,7 @@ msgstr "Mis en ligne sur cet article"
 msgid "Audio"
 msgstr "Sons"
 
-#: wp-includes/media.php:3327
+#: wp-includes/media.php:3355
 msgid "&#8592; Return to library"
 msgstr "&#8592; Revenir à la bibliothèque"
 
@@ -3651,7 +3651,7 @@ msgstr "&#8592; 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é"
 
@@ -3665,15 +3665,15 @@ msgid "Columns"
 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 "&#8592; Cancel Gallery"
 msgstr "&#8592; Annuler la galerie"
 
@@ -3689,7 +3689,7 @@ msgstr "Réglages de l&rsquo;affichage du fichier attaché"
 msgid "WordPress &rsaquo; Success"
 msgstr "WordPress &raquo; Réussite"
 
-#: wp-includes/media.php:3318
+#: wp-includes/media.php:3346
 msgid "Upload Files"
 msgstr "Envoyer des fichiers"
 
@@ -3697,7 +3697,7 @@ msgstr "Envoyer des fichiers"
 msgid "Drop files anywhere to upload"
 msgstr "Déposez vos fichiers n&rsquo;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"
 
@@ -3705,11 +3705,11 @@ 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"
 
@@ -3788,7 +3788,7 @@ msgstr "Décrivez ce fichier audio&hellip;"
 msgid "Describe this media file&hellip;"
 msgstr "Décrivez ce fichier média&hellip;"
 
-#: wp-includes/media.php:3365
+#: wp-includes/media.php:3393
 msgid "Update gallery"
 msgstr "Mettre à jour la galerie"
 
@@ -3843,15 +3843,15 @@ msgstr "Le fichier n&rsquo;existe pas&nbsp;?"
 msgid "Image Editor Save Failed"
 msgstr "L&rsquo;enregistrement de l&rsquo;éditeur d&rsquo;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"
 
@@ -3881,7 +3881,7 @@ msgstr "Insérer dans l&rsquo;article"
 msgid "Whoops, the provided date is invalid."
 msgstr "Oups, la date fournie n&rsquo;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&rsquo;insérer le terme associé dans la base de données"
 
@@ -3932,7 +3932,7 @@ msgid "Display post date?"
 msgstr "Afficher la date du contenu&nbsp;?"
 
 #. 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"
 
@@ -3966,11 +3966,11 @@ msgstr "Aller à la barre d&rsquo;outils"
 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&rsquo;en-tête"
 
-#: wp-includes/class-wp-customize-manager.php:1839
+#: wp-includes/class-wp-customize-manager.php:1841
 msgid "Colors"
 msgstr "Couleurs"
 
@@ -4005,7 +4005,7 @@ msgstr "Arguments insuffisants passés à cette méthode XML-RPC."
 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&rsquo;en-tête"
@@ -4046,31 +4046,31 @@ msgstr "L&#8217;identifiant du site doit utiliser au moins 4 caractères."
 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&rsquo;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&rsquo;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&rsquo;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&rsquo;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"
@@ -4087,35 +4087,35 @@ msgstr "Retirer l&rsquo;image"
 msgid "Sorry, you are not allowed to edit this post type."
 msgstr "Désolé, vous n&rsquo;avez pas l&rsquo;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&rsquo;accueil"
 
-#: wp-includes/class-wp-customize-manager.php:2025
+#: wp-includes/class-wp-customize-manager.php:2027
 msgid "Posts page"
 msgstr "Page des articles"
 
@@ -4124,7 +4124,7 @@ 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"
 
@@ -4170,8 +4170,8 @@ msgid "This taxonomy is not hierarchical."
 msgstr "Cette taxinomie n&rsquo;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&rsquo;existe pas."
 
@@ -4231,23 +4231,23 @@ msgstr "Le thème &laquo;&nbsp;%s&nbsp;&raquo; n&rsquo;est un thème parent vali
 msgid "&mdash; Select &mdash;"
 msgstr "&mdash; Sélectionner &mdash;"
 
-#: wp-includes/class-wp-customize-manager.php:1983
+#: wp-includes/class-wp-customize-manager.php:1985
 msgid "Static Front Page"
 msgstr "Page d&rsquo;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&rsquo;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"
 
@@ -4357,18 +4357,18 @@ msgstr "Le type de contenu spécifié n&rsquo;est pas valable"
 msgid "You are not allowed to edit posts in this post type."
 msgstr "Désolé, vous n&rsquo;avez pas l&rsquo;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 "&#8220;"
 msgstr "&laquo;&nbsp;"
@@ -4434,7 +4434,7 @@ msgstr "Votre site est activé à <a href=\"%1$s\">%2$s</a>. Vous pouvez dès ma
 msgid "<a href=\"%1$s\">%2$s</a> is your new site. <a href=\"%3$s\">Log in</a> as &#8220;%4$s&#8221; 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&rsquo;identifiant &laquo;&nbsp;%4$s&nbsp;&raquo;, à l&rsquo;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&rsquo;être <a href=\"%s\">réparée</a>."
 
@@ -4530,15 +4530,15 @@ msgstr "Documentation"
 msgid "Support Forums"
 msgstr "Forums d&rsquo;entraide"
 
-#: wp-includes/formatting.php:2953 wp-includes/general-template.php:3040
+#: wp-includes/formatting.php:2953 wp-includes/general-template.php:3036
 msgid "&hellip;"
 msgstr "&hellip;"
 
-#: 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"
@@ -4558,12 +4558,12 @@ msgstr "Site de WordPress-FR"
 msgid "Network Admin: %s"
 msgstr "Admin du réseau&nbsp;: %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"
@@ -4588,7 +4588,7 @@ msgstr "Ce fichier n&rsquo;est pas une image. Merci d&rsquo;en envoyer un autre.
 msgid "This is larger than the maximum size. Please try another."
 msgstr "Ce fichier est plus grand que la taille maximale. Merci d&rsquo;en envoyer un autre."
 
-#: wp-includes/general-template.php:3134
+#: wp-includes/general-template.php:3130
 msgctxt "admin color scheme"
 msgid "Blue"
 msgstr "Bleu"
@@ -4611,11 +4611,11 @@ msgstr "Fichier média"
 msgid "You should specify a nonce action to be verified by using the first parameter."
 msgstr "Vous devriez préciser une action de type &laquo;&nbsp;nonce&nbsp;&raquo;, 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&rsquo;étiquette"
 
-#: wp-includes/taxonomy.php:529
+#: wp-includes/taxonomy.php:532
 msgid "View Category"
 msgstr "Voir la catégorie"
 
@@ -4709,11 +4709,11 @@ msgstr "Les balises de requête conditionnelle ne fonctionnent pas avant le lanc
 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"
 
@@ -4721,7 +4721,7 @@ 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&nbsp;: %s"
 
@@ -4805,12 +4805,12 @@ msgid "No pages found."
 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"
@@ -4921,7 +4921,7 @@ msgstr "Article non valide"
 msgid "Invalid taxonomy: %s."
 msgstr "Taxinomie non valide&nbsp;: %s"
 
-#: wp-includes/query.php:2549
+#: wp-includes/query.php:2552
 msgid "\"caller_get_posts\" is deprecated. Use \"ignore_sticky_posts\" instead."
 msgstr "&laquo;&nbsp;caller_get_posts&nbsp;&raquo; n&rsquo;est plus recommandé. Utilisez &laquo;&nbsp;ignore_sticky_posts&nbsp;&raquo; à la place."
 
@@ -5051,57 +5051,57 @@ msgstr "Cet article est protégé par un mot de passe. Saisissez le mot de passe
 msgid "You have searched the %1$s blog archives for <strong>&#8216;%2$s&#8217;</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>&laquo;&nbsp;%2$s&nbsp;&raquo;</strong>. Si les résultats ne vous conviennent pas, vous pouvez essayer l&rsquo;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&nbsp;:"
 
-#: 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"
 
@@ -5181,7 +5181,7 @@ msgstr "<strong>Les valeurs des constantes VHOST et SUBDOMAIN_INSTALL ne corresp
 msgid "<strong>ERROR</strong>: This username is invalid because it uses illegal characters. Please enter a valid username."
 msgstr "<strong>ERREUR</strong>&nbsp;: cet identifiant n&rsquo;est pas valide, car il utilise des caractères non autorisés. Merci d&rsquo;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"
 
@@ -5308,7 +5308,7 @@ msgstr "Inscription d'un nouveau site : %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 :"
 
@@ -5336,7 +5336,7 @@ msgstr "L&rsquo;adresse de WordPress que vous avez saisie ne semble pas être va
 msgid "The Site address you entered did not appear to be a valid URL. Please enter a valid URL."
 msgstr "L&rsquo;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."
 
@@ -5348,7 +5348,7 @@ msgstr "Une erreur est survenue lors de votre ajout à ce site. Retournez à l&r
 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."
 
@@ -5397,7 +5397,7 @@ msgstr "Voulez-vous vraiment installer cette extension&nbsp;?"
 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"
 
@@ -5437,7 +5437,7 @@ msgstr ""
 "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."
 
@@ -5509,7 +5509,7 @@ msgstr "Mais, avant d&#8217;utiliser votre nouveau site, <strong>vous devez l&#8
 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"
 
@@ -5517,23 +5517,23 @@ msgstr "Un nouveau rétrolien sur l'article « %s » attend votre approbation"
 msgid "If you&#8217;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&nbsp;!"
 
-#: 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"
 
@@ -5807,11 +5807,11 @@ msgstr "L&rsquo;utilisateur a bloqué les requêtes HTTP."
 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"
 
@@ -5996,47 +5996,47 @@ msgstr ", "
 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&nbsp;?"
 
-#: 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&rsquo;é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&rsquo;é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>&nbsp;?"
 
-#: wp-includes/functions.php:2533
+#: wp-includes/functions.php:2538
 msgid "&laquo; Back"
 msgstr "&laquo; Retour"
 
-#: wp-includes/functions.php:2545 wp-load.php:92
+#: wp-includes/functions.php:2550 wp-load.php:92
 msgid "WordPress &rsaquo; Error"
 msgstr "WordPress &raquo; 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&rsquo;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"
 
@@ -6063,66 +6063,66 @@ msgid "Site Admin"
 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 "&raquo;"
 msgstr "&raquo;"
 
 #. 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 &#8220;%3$s&#8221; Feed"
 msgstr "%1$s %2$s Flux de résultats de la recherche pour &quot;%3$s&quot;"
 
-#: wp-includes/general-template.php:2954
+#: wp-includes/general-template.php:2950
 msgid "&laquo; Previous"
 msgstr "&laquo; Précédent"
 
-#: wp-includes/general-template.php:2955
+#: wp-includes/general-template.php:2951
 msgid "Next &raquo;"
 msgstr "Suivant &raquo;"
 
@@ -6432,7 +6432,7 @@ msgstr "Plein écran"
 msgid "Mute"
 msgstr "Muet"
 
-#: wp-includes/media.php:3362
+#: wp-includes/media.php:3390
 msgid "Edit Gallery"
 msgstr "Modifier la galerie"
 
@@ -6520,46 +6520,46 @@ msgstr "Que dois-je faire maintenant ?"
 msgid "<strong>ERROR</strong>: Invalid username or incorrect password."
 msgstr "<strong>ERREUR</strong>&nbsp;: l&rsquo;identifiant ou le mot de passe n&rsquo;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"
 
@@ -6828,35 +6828,35 @@ msgstr "Enregistrement..."
 msgid "Saving Draft&#8230;"
 msgstr "Enregistrement du brouillon&#8230;"
 
-#: 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&rsquo;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&rsquo;insérer le terme dans la base de données"
 
-#: wp-includes/taxonomy.php:3221
+#: wp-includes/taxonomy.php:3224
 msgid "The slug &#8220;%s&#8221; is already in use by another term"
 msgstr "L&rsquo;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&rsquo;objet non valide."
 
@@ -6986,11 +6986,11 @@ msgstr "Inscription"
 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&nbsp;! %3$s"
 
-#: wp-includes/functions.php:4347
+#: wp-includes/functions.php:4352
 msgid "Manual Offsets"
 msgstr "Décalages manuels"
 
@@ -7007,11 +7007,11 @@ msgid "Sorry, that username already exists!"
 msgstr "Désolé, cet identifiant existe déjà&nbsp;!"
 
 #. 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 »"
 
@@ -7098,11 +7098,11 @@ msgstr "Votre nouvel identifiant est %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&rsquo;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"
 
@@ -7135,7 +7135,7 @@ msgstr "Toujours dans l&rsquo;attente de votre e-mail&nbsp;?"
 msgid "Could not open handle for fopen() to %s"
 msgstr "Impossible d&rsquo;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."
 
@@ -7147,7 +7147,7 @@ msgstr "Cette adresse de messagerie a déjà été utilisée. Veuillez vérifier
 msgid "There was a configuration error. Please contact the server administrator."
 msgstr "Il y a une erreur de configuration. Veuillez contacter l&rsquo;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."
 
@@ -7195,7 +7195,7 @@ msgstr " "
 msgid "By: %s"
 msgstr "Par&nbsp;: %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"
 
@@ -7216,7 +7216,7 @@ msgid "Tag Cloud"
 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"
 
@@ -7267,12 +7267,12 @@ msgid "Friday"
 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 »"
 
@@ -7292,7 +7292,7 @@ msgstr "Inscription d'un nouvel utilisateur : %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"
 
@@ -7337,7 +7337,7 @@ msgstr "Tableau de bord"
 msgid "Log In"
 msgstr "Se connecter"
 
-#: wp-includes/taxonomy.php:528
+#: wp-includes/taxonomy.php:531
 msgid "Edit Category"
 msgstr "Modifier la catégorie"
 
@@ -7371,7 +7371,7 @@ msgstr "Réglages"
 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"
@@ -7418,13 +7418,13 @@ msgstr "Titre&nbsp;:"
 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"
 
@@ -7473,7 +7473,7 @@ msgstr "Connecté(e) en tant que %s."
 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."
 
@@ -7549,24 +7549,24 @@ msgstr[1] "%s sujets"
 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"
@@ -7635,7 +7635,7 @@ msgstr "Cette page est en XHTML 1.0 Transitional valide"
 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."
 
@@ -7643,7 +7643,7 @@ msgstr "Cliquez ici pour annuler la réponse."
 msgid "<strong>ERROR</strong>: Please enter a username."
 msgstr "<strong>ERREUR</strong>&nbsp;: veuillez renseigner l&rsquo;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"
@@ -7662,7 +7662,7 @@ msgstr "Désolé, une erreur est survenue et votre texte n&rsquo;a pas pu être
 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"
 
@@ -7674,7 +7674,7 @@ msgstr "Écrire un commentaire"
 msgid "Tags: "
 msgstr "Étiquettes&nbsp;: "
 
-#: 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."
@@ -7683,7 +7683,7 @@ msgstr "Vous devez <a href=\"%s\">être connecté(e)</a> pour rédiger un commen
 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"
 
@@ -7700,11 +7700,11 @@ msgstr "Auteur"
 #: 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"
@@ -7713,19 +7713,19 @@ 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"
@@ -7750,7 +7750,7 @@ msgstr "Résultats de recherche pour &laquo;&nbsp;%s&nbsp;&raquo;"
 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"
 
@@ -7787,7 +7787,7 @@ msgstr "Indésirable"
 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"
 
@@ -7810,7 +7810,7 @@ msgstr "Catégories"
 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"
@@ -7838,11 +7838,11 @@ msgstr "Aucun"
 #: 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"
 
@@ -7855,7 +7855,7 @@ msgstr "Ajouter"
 msgid "Edit Post"
 msgstr "Modifier l&rsquo;article"
 
-#: wp-includes/taxonomy.php:525
+#: wp-includes/taxonomy.php:528
 msgid "All Categories"
 msgstr "Toutes"
 
@@ -7885,7 +7885,7 @@ msgstr "Envoyer"
 msgid "RSS"
 msgstr "Flux"
 
-#: wp-includes/functions.php:2026
+#: wp-includes/functions.php:2031
 msgid "Invalid file type"
 msgstr "Type du fichier non valide"
 
@@ -7899,7 +7899,7 @@ msgid "Plugins"
 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"
@@ -7916,7 +7916,7 @@ msgstr "Enregistrer brouillon"
 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"
 
@@ -7944,7 +7944,7 @@ msgstr "Flux inconnu"
 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
@@ -7964,7 +7964,7 @@ msgid "Redo"
 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"
 
@@ -7980,7 +7980,7 @@ msgstr "La bibliothèque d&rsquo;imagerie GD n&rsquo;est pas installée."
 msgid "File &#8220;%s&#8221; is not an image."
 msgstr "Le fichier « %s » n&rsquo;est pas une image."
 
-#: wp-includes/media.php:3302
+#: wp-includes/media.php:3330
 msgid "Add Media"
 msgstr "Ajouter un média"
 
@@ -7989,12 +7989,12 @@ msgid "Saved."
 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"
 
@@ -8014,7 +8014,7 @@ msgid "Caption"
 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"
 
@@ -8051,13 +8051,13 @@ msgstr "Public"
 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"
 
@@ -8078,12 +8078,12 @@ msgid "Uncategorized"
 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"
 
@@ -8099,12 +8099,12 @@ msgstr "Nouvel article"
 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&nbsp;?"
 
@@ -8120,20 +8120,20 @@ msgstr "Aperçu"
 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&rsquo;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"
 
@@ -8141,7 +8141,7 @@ 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"
 
index 0c29dd13ca1633915cf878f254b74da66c2863b6..e4ccba58be30727ae06a4854d1f0efb41f2991df 100644 (file)
Binary files a/pavillonmadeleine.fr/wp-content/languages/plugins/akismet-fr_FR.mo and b/pavillonmadeleine.fr/wp-content/languages/plugins/akismet-fr_FR.mo differ
index c06e79a06183e7f3d16907932a90f9509229ea3d..0fa154e2b71bc76eca8cabd190c1c849fb0c00fe 100644 (file)
@@ -2,7 +2,7 @@
 # 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"
@@ -10,6 +10,18 @@ msgstr ""
 "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."
@@ -46,7 +58,7 @@ msgstr "Utiliser ce compte"
 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 !"
 
@@ -58,51 +70,81 @@ msgstr "Akismet élimine les indésirables de votre site. Enregistrez-vous ci-de
 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&#8217;t have an Akismet plan."
 msgstr "Vous n&rsquo;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&#8217;d appreciate it if you&#8217;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."
@@ -127,7 +169,7 @@ msgstr "État SSL"
 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."
 
@@ -135,7 +177,7 @@ 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&rsquo;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."
 
@@ -149,11 +191,11 @@ msgstr[1] "Les messages dans le <a href=\"%1$s\">dossier des indésirables</a> d
 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."
 
@@ -197,11 +239,11 @@ msgstr "Aucun abonnement trouvé"
 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."
 
@@ -213,41 +255,41 @@ msgstr "Éliminer directement les pires indésirables et les plus répandus pour
 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&#8217;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>."
 
@@ -255,10 +297,6 @@ msgstr "Vous pouvez nous aider à combattre les messages indésirables et passer
 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é"
@@ -291,86 +329,86 @@ msgstr "Automattic"
 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&#8217;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."
 
@@ -378,23 +416,23 @@ 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&#8217;s nothing in your <a href='%s'>spam queue</a> at the moment."
 msgstr "Il n&#8217;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."
 
@@ -408,11 +446,7 @@ msgstr[1] ""
 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"
 
@@ -424,7 +458,7 @@ msgstr "Afficher les commentaires approuvés"
 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"
 
@@ -442,68 +476,68 @@ msgid_plural "<strong class=\"count\">%1$s spam</strong> blocked by <strong>Akis
 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&rsquo;il s&rsquo;agit d&rsquo;un indésirable."
 
-#: class.akismet-admin.php:582
+#: class.akismet-admin.php:583
 msgid "Comment status was changed to %s"
 msgstr "L&rsquo;é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&rsquo;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"
 
@@ -511,7 +545,7 @@ 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&rsquo;informations&nbsp;:"
 
@@ -519,33 +553,33 @@ msgstr "Plus d&rsquo;informations&nbsp;:"
 msgid "Title:"
 msgstr "Titre&nbsp;:"
 
-#: 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&#8217; uh?"
 msgstr "Alors, on triche&nbsp;?"
 
-#: 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&rsquo;ensemble"
 
-#: class.akismet-admin.php:224 views/config.php:173
+#: class.akismet-admin.php:225 views/config.php:173
 msgid "Status"
 msgstr "État"
 
@@ -557,27 +591,27 @@ msgstr "Changer"
 msgid "Note:"
 msgstr "Note&nbsp;:"
 
-#: 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>."
 
@@ -601,60 +635,96 @@ msgstr "Exactitude"
 msgid "Next Billing Date"
 msgstr "Prochaine date de facturation"
 
-#: class.akismet-admin.php:325
+#: class.akismet-admin.php:326
 msgid "There&#8217;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&#8217;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&rsquo;é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&#8217;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&#8217;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&#8217;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&#8217;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&#8217;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&rsquo;historique du commentaire"
index 5fcddf9d8b6b34b1bcea1ffda5edc37867d1cbde..b01641c7b9b160ceba467e00170daaea9992c851 100644 (file)
Binary files a/pavillonmadeleine.fr/wp-content/languages/plugins/wordpress-seo-fr_FR.mo and b/pavillonmadeleine.fr/wp-content/languages/plugins/wordpress-seo-fr_FR.mo differ
index 0c3948a3fa277c8b2421c929061b3b5f33c15b23..49a62211208f4de3b2eceede13643da9a1de3aea 100644 (file)
@@ -2,7 +2,7 @@
 # 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"
@@ -10,15 +10,16 @@ msgstr ""
 "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&rsquo;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&rsquo;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
@@ -36,11 +37,6 @@ msgstr "Supprimer les variables %s."
 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."
@@ -51,10 +47,6 @@ msgstr "Si vous ne souhaitez pas utiliser le titre de l&rsquo;article pour le pa
 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&rsquo;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"
@@ -64,11 +56,6 @@ 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?"
@@ -94,33 +81,29 @@ msgstr "Architecte"
 #. 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&rsquo;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."
@@ -135,44 +118,18 @@ msgstr "Recalculer les scores SEO"
 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&nbsp;: 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&nbsp;: 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&nbsp;: les moteurs de recherche ne peuvent plus indexer %1$s&nbsp;!"
-
-#. 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&nbsp;: les moteurs de recherche ne peuvent pas indexer %1$s&nbsp;!"
-
-#: 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
@@ -188,10 +145,6 @@ msgstr "wpSEO a été désactivé"
 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
@@ -200,7 +153,7 @@ msgstr "Pour pouvoir ajouter et analyser plusieurs mots clés sur un article ou
 
 #. 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&rsquo;algorithme de calcul de nos scores SEO. %1$sCliquez ici pour les recalculer%2$s pour l&rsquo;ensemble de vos articles et pages."
 
@@ -233,11 +186,6 @@ msgstr "L&rsquo;extension All-In-One-SEO a été détectée. Voulez-vous %simpor
 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&rsquo;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"
@@ -251,7 +199,7 @@ msgstr "Ajouter un mot-clé"
 msgid "Buy %s &raquo;"
 msgstr "Achetez %s &raquo;"
 
-#: admin/class-admin-init.php:372
+#: admin/class-admin-init.php:377
 msgid "%s filter/action"
 msgstr "%s filtre/action"
 
@@ -261,14 +209,14 @@ 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&rsquo;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"
@@ -295,18 +243,6 @@ msgstr "%s ne semble pas être une URL valide. Veuillez corriger cela."
 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&nbsp: Réglages de la licence"
@@ -315,10 +251,6 @@ msgstr "%s&nbsp: 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&nbsp;?</a>"
@@ -327,10 +259,6 @@ msgstr "<a href=\"%s\">Saviez-vous que vous pouvez mettre à jour votre licence&
 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&nbsp;?</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>."
@@ -339,10 +267,6 @@ msgstr "<strong>%s la version de %s</strong> est disponible. <a href=\"%s\" clas
 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"
@@ -403,10 +327,6 @@ msgstr "Erreur 404: Page introuvable"
 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."
@@ -467,22 +387,6 @@ msgstr "Collez ici votre clé de licence pour %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 &raquo;"
-msgstr "S'enregistrer maintenant &raquo;"
-
 #: 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)"
@@ -507,38 +411,10 @@ msgstr "Résumé"
 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."
@@ -551,18 +427,6 @@ msgstr "Cet article %s est apparu en premier sur %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"
@@ -571,10 +435,6 @@ 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"
@@ -599,18 +459,6 @@ msgstr "Vous avez cherché"
 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."
@@ -635,12 +483,121 @@ msgstr "https://yoast.com/"
 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 &raquo;"
+msgstr "S’enregistrer maintenant &raquo;"
+
+#. 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 :"
 
@@ -656,7 +613,7 @@ msgstr "Réglages de %1$s"
 msgid "%s Archives"
 msgstr "%s Archives"
 
-#: admin/pages/tools.php:71
+#: admin/pages/tools.php:70
 msgid "&laquo; Back to Tools page"
 msgstr "&laquo; Retour à la page Outils"
 
@@ -664,34 +621,10 @@ msgstr "&laquo; 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+ "
@@ -700,11 +633,6 @@ 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>&lt;head&gt;</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"
@@ -714,26 +642,10 @@ 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&nbsp;: 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&nbsp;"
-
 #: 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&#8217; 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"
@@ -742,10 +654,6 @@ 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&nbsp;"
-
 #: admin/pages/tools.php:24
 msgid "Bulk editor"
 msgstr "Éditeur par lot"
@@ -799,10 +707,6 @@ msgstr "Crédits"
 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&nbsp"
@@ -828,14 +732,6 @@ msgstr "Modifier le contenu de votre fichier .htaccess&nbsp;:"
 msgid "Edit the content of your robots.txt:"
 msgstr "Modifier le contenu de votre fichier robots.txt&nbsp;:"
 
-#: 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"
@@ -878,18 +774,10 @@ msgstr "URL de la page Facebook&nbsp"
 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"
@@ -918,32 +806,10 @@ msgstr "Masquer le lien court pour les articles"
 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&nbsp;?"
-
-#. 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 :"
@@ -952,14 +818,6 @@ msgstr "Si vous souhaitez importer des données depuis votre (désormais ancienn
 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&nbsp;!"
 
-#: 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&rsquo;image&nbsp"
@@ -998,14 +856,6 @@ msgstr "Importer depuis le framework WooThemes SEO&nbsp;?"
 msgid "Import from Yoast Breadcrumbs?"
 msgstr "Importer depuis Yoast Breadcrumbs&nbsp;?"
 
-#: 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"
@@ -1014,10 +864,6 @@ 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"
@@ -1026,10 +872,6 @@ 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"
@@ -1042,10 +884,6 @@ msgstr "Méta keywords à 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 &amp; 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 &amp; 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"
@@ -1054,15 +892,6 @@ 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"
@@ -1075,34 +904,14 @@ msgstr "Vérification 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&nbsp;:"
 
-#: 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&nbsp;:"
-
 #: 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)&nbsp;:"
-
 #: 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&nbsp;"
-
-#: admin/views/tab-breadcrumbs.php:25
-msgid "Prefix for Search Page breadcrumbs"
-msgstr "Préfixe pour le fil d'Ariane des pages de recherche&nbsp;"
-
-#: admin/views/tab-breadcrumbs.php:23
-msgid "Prefix for the breadcrumb path"
-msgstr "Préfixe pour le fil d'Ariane&nbsp;"
-
 #: 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"
@@ -1123,10 +932,6 @@ msgstr "Responsables de projet"
 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 ""
@@ -1137,10 +942,6 @@ 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."
@@ -1149,10 +950,6 @@ 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"
@@ -1189,66 +986,6 @@ msgstr "Remplacé par la phrase recherchée"
 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é"
@@ -1265,10 +1002,6 @@ msgstr "Remplacé par le nom du terme"
 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"
@@ -1289,15 +1022,6 @@ msgstr "Enregistrez vos réglages pour activer les sitemaps XML."
 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&nbsp;"
-
-#. 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&nbsp;"
@@ -1310,34 +1034,10 @@ msgstr "Le nom du site"
 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"
@@ -1351,20 +1051,10 @@ msgstr "Pour %1$svérifier votre site avec Pinterest%2$s, veuillez ajouter la ba
 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"
@@ -1378,16 +1068,6 @@ msgstr "Vous souhaitez nous aider à développer ? Référez-vous à nos %1$srè
 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&nbsp;: %sXML Sitemap%s"
@@ -1408,22 +1088,6 @@ msgstr "Vous ne pouvez pas modifier le fichier .htaccess."
 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&nbsp;:"
-
-#: 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"
@@ -1432,101 +1096,369 @@ msgstr "URL YouTube"
 msgid "Post type archive to show in breadcrumbs for taxonomies"
 msgstr "Type de contenu d&rsquo;archive à afficher dans le fil d&rsquo;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&nbsp;:"
 
-#: 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&#8217; 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>&lt;head&gt;</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&nbsp;"
+#: 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&nbsp;:"
+
+#: 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)&nbsp;:"
+
+#: 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 &amp; 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 &amp; 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&nbsp;"
+
+#: admin/views/tab-breadcrumbs.php:22
+msgid "Anchor text for the Homepage"
+msgstr "Texte d’ancrage pour la page d’accueil&nbsp;"
+
+#: admin/views/tab-breadcrumbs.php:23
+msgid "Prefix for the breadcrumb path"
+msgstr "Préfixe pour le fil d’Ariane&nbsp;"
+
+#: admin/views/tab-breadcrumbs.php:24
+msgid "Prefix for Archive breadcrumbs"
+msgstr "Préfixe pour le fil d’Ariane des archives&nbsp;"
+
+#: admin/views/tab-breadcrumbs.php:25
+msgid "Prefix for Search Page breadcrumbs"
+msgstr "Préfixe pour le fil d’Ariane des pages de recherche&nbsp;"
+
+#: admin/views/tab-breadcrumbs.php:26
+msgid "Breadcrumb for 404 Page"
+msgstr "Fil d’Ariane pour la page 404&nbsp;"
+
+#: 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&nbsp;?"
+
+#: 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&nbsp;: 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&nbsp;"
+msgid "Alexa Verification ID"
+msgstr "ID de vérification Alexa&nbsp;"
+
+#: 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."
@@ -1536,23 +1468,11 @@ msgstr "Le blog %s est introuvable."
 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é"
 
@@ -1560,22 +1480,18 @@ 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&nbsp;"
 
-#: 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"
@@ -1607,10 +1523,6 @@ msgstr "Archives des articles de type personnalisé"
 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&nbsp;"
-
 #: 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é."
@@ -1621,7 +1533,7 @@ msgid "Desktop"
 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."
 
@@ -1637,39 +1549,14 @@ msgstr "Désactiver les archives par date"
 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."
@@ -1683,73 +1570,33 @@ msgstr "Fonction téléphone"
 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 &amp; Front page"
-msgstr "Page d'accueil &amp; 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"
 
@@ -1761,7 +1608,7 @@ msgstr "Catégories de problème"
 msgid "Last crawled"
 msgstr "Dernière exploration"
 
-#: admin/pages/dashboard.php:168
+#: admin/pages/dashboard.php:169
 msgid "Latest Changes"
 msgstr "Derniers changements"
 
@@ -1806,37 +1653,13 @@ msgstr "Les nouveaux sites du réseau héritent des paramètres SEO de ce site"
 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&nbsp;: 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."
@@ -1863,14 +1686,6 @@ msgstr "Re-vérifier le thème."
 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."
@@ -1883,7 +1698,7 @@ msgstr "Le temps de la demande est écoulé ou le site bloque Google."
 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"
 
@@ -1973,45 +1788,20 @@ msgstr "Les symboles sont affichés dans la même taille que celle des résultat
 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&nbsp;:"
-
 #. 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"
@@ -2037,7 +1827,7 @@ msgstr "Pour permettre à %1$s de récupérer les informations de votre %2$s, me
 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."
 
@@ -2049,12 +1839,12 @@ msgstr "Utilisez des méta étiquettes de mots-clés ?"
 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."
 
@@ -2062,7 +1852,7 @@ 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"
 
@@ -2071,41 +1861,19 @@ 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&nbsp;"
 
-#: 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 &raquo;%s"
 msgstr "Vous pouvez définir le titre et la description pour la page du blog en %smodifiant la page de blog directement &raquo;%s"
 
-#: admin/pages/metas.php:75
-msgid "You can determine the title and description for the front page by %sediting the front page itself &raquo;%s"
-msgstr "Vous pouvez déterminer le titre et la description de la page d'accueil en %smodifiant la page d'accueil directement &raquo;%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&nbsp;:"
-
-#. 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&nbsp;"
 
@@ -2144,17 +1912,206 @@ msgstr "Types de contenu"
 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&rsquo;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&nbsp;!"
 
-#: 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&rsquo;un ou l'autre&nbsp;:"
+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&rsquo;un ou l’autre&nbsp;:"
+
+#: 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&nbsp;"
+
+#. 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 &amp; Front page"
+msgstr "Page d’accueil &amp; 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 &raquo;%s"
+msgstr "Vous pouvez déterminer le titre et la description de la page d’accueil en %smodifiant la page d’accueil directement &raquo;%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&nbsp;: 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&nbsp;:"
+
+#. 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&nbsp;:"
+
+#: 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
@@ -2173,21 +2130,12 @@ msgstr "%s Description"
 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é"
@@ -2204,14 +2152,6 @@ msgstr "Ajouter un administrateur Facebook"
 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"
@@ -2254,23 +2194,6 @@ msgstr "Détection automatique"
 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"
@@ -2283,11 +2206,6 @@ msgstr "Effacer toutes les données Facebook"
 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"
@@ -2314,10 +2232,6 @@ msgstr "Désactiver %s"
 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"
@@ -2340,62 +2254,26 @@ msgid "Facebook Insights and Admins"
 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"
@@ -2408,20 +2286,11 @@ msgstr "Vous aimez cette extension&nbsp;?"
 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"
@@ -2452,27 +2321,10 @@ msgstr "Cliquez à présent sur &#8216;%1$sPost Types%2$s&#8217;-tab, ce sera no
 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&#8217;ve purchased %1$s or any other premium Yoast plugin, you&#8217;ll have to enter a license key. You can do so on the Licenses-tab. Once you&#8217;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
@@ -2488,23 +2340,23 @@ msgid "Please make sure both fields are filled."
 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"
 
@@ -2540,23 +2392,15 @@ msgstr "SEO&nbsp;: OK"
 msgid "SEO: Post Noindexed"
 msgstr "SEO&nbsp;: 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&#8217;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"
 
@@ -2592,70 +2436,11 @@ msgstr "Onglet : Vos infos / Infos de la société"
 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&#8217;s more to learn about WordPress &amp; 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."
@@ -2664,10 +2449,6 @@ 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&#8217;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."
@@ -2677,11 +2458,6 @@ msgstr "Cet avertissement est généré par %1$s."
 msgid "Title &amp; 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."
@@ -2691,10 +2467,6 @@ msgstr "Pour pouvoir accéder à %sFacebook Insights %s pour votre site, vous de
 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 &raquo;"
@@ -2723,10 +2495,6 @@ msgstr "Nous vous recommandons de désactiver %1$s et de rejeter un œil à votr
 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 &#8220;Card&#8221; added to the tweet that&#8217;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 &#8220;Carte&#8221; ajoutée dans leur tweet qui sera visible à tous leurs contacts. "
@@ -2735,18 +2503,207 @@ msgstr "Avec les %1$sCartes Twitter %2$s, vous pouvez joindre des photos, des vi
 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&#8217;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&#8217;ve just installed %1$s! Click &#8220;Start Tour&#8221; to view a quick introduction of this plugin&#8217;s core functionality."
-msgstr "Vous venez d'installer %1$s&nbsp;! 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&#8217;s more to learn about WordPress &amp; 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 &#8217;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&nbsp;!"
+
+#: 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&#8217;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&#8217;ve purchased %1$s or any other premium Yoast plugin, you&#8217;ll have to enter a license key. You can do so on the Licenses-tab. Once you&#8217;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&#8217;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&#8217;ve just installed %1$s! Click &#8220;Start Tour&#8221; to view a quick introduction of this plugin&#8217;s core functionality."
+msgstr "Vous venez d’installer %1$s&nbsp;! 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 &#8217;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&nbsp;!"
+#: 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
@@ -2760,12 +2717,7 @@ msgstr "%1$s a détecté que vous utiliser la version de %2$s de %3$s. Veuillez
 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)"
 
@@ -2777,9 +2729,9 @@ msgstr "Redirection 301"
 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é"
 
@@ -2791,26 +2743,10 @@ msgstr "Réglages avancés des <code>méta</code> des robots pour cette page."
 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&nbsp;"
-
-#: 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"
@@ -2819,10 +2755,6 @@ 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."
@@ -2843,11 +2775,6 @@ msgstr "Modifier les fichiers"
 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."
@@ -2891,10 +2818,6 @@ msgstr "Mot-clé principal&nbsp;"
 msgid "Follow"
 msgstr "Suivre"
 
-#: admin/class-admin.php:238
-msgid "For more information:"
-msgstr "Pour plus d'information&nbsp;:"
-
 #: 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
@@ -2915,14 +2838,6 @@ msgstr "Google+"
 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&nbsp;: 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."
@@ -2976,22 +2891,10 @@ msgstr "Nouveau titre Yoast SEO"
 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"
@@ -3010,43 +2913,14 @@ msgstr "Veuillez noter que toutes les variables ne peuvent pas être utilisées
 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&nbsp: %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 :"
@@ -3071,10 +2945,6 @@ msgstr "Date de Publication"
 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"
@@ -3092,14 +2962,6 @@ msgstr "Titre SEO&nbsp;"
 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
@@ -3109,12 +2971,6 @@ msgstr "Le paramètre \"%s\" n'est plus disponible et a été désactivé"
 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&nbsp;:"
-
 #: admin/class-import.php:148
 msgid "Settings successfully imported."
 msgstr "Les réglages ont été importés avec succès."
@@ -3131,45 +2987,15 @@ msgstr "Valeur par défaut pour tout le site&nbsp;: %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 &amp; 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 &amp; Metas"
 msgstr "Titres &amp; Métas"
@@ -3186,19 +3012,6 @@ msgstr "Identifiant Twitter (sans le @)"
 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"
@@ -3212,21 +3025,12 @@ msgstr "Voir &#8220;%s&#8221;"
 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 &amp; data successfully imported."
 msgstr "Les réglages du framework WooThemes SEO ont bien été importés."
@@ -3244,10 +3048,6 @@ msgstr "Les options de Yoast Breadcrumbs sont introuvables."
 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."
@@ -3314,6 +3114,163 @@ msgstr "Contenu&nbsp;:"
 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&nbsp;"
+
+#. 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&nbsp: %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&nbsp;:"
+
+#: 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&nbsp;: 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&nbsp;:"
+
+#: 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."
index a54991548d244229a95e72110524b1981cd7d50d..51b77a5bbddc7842e70a7428bdcd39f42068a45f 100755 (executable)
Binary files a/pavillonmadeleine.fr/wp-content/languages/themes/twentysixteen-fr_FR.mo and b/pavillonmadeleine.fr/wp-content/languages/themes/twentysixteen-fr_FR.mo differ
index e43a97e498199d45837a6acb6c6d972778a519e4..e8526db3d4b990d5aaa908937425726e144f0afa 100755 (executable)
@@ -2,7 +2,7 @@
 # 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"
@@ -16,7 +16,7 @@ msgstr "Twenty Sixteen"
 
 #. 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&nbsp;: l&rsquo;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&nbsp;: l&rsquo;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
@@ -28,7 +28,7 @@ msgstr "Modifier<span class=\"screen-reader-text\"> \"%s\"</span>"
 #. 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\"> &laquo;&nbsp;%s&nbsp;&rquo;</span>"
+msgstr "Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;%s&nbsp;&raquo;</span>"
 
 #: inc/customizer.php:246
 msgid "Red"
@@ -322,7 +322,7 @@ msgstr "https://wordpress.org/themes/twentysixteen/"
 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/"
index e365ae61ad44bc0dc1d0bf5a828543c9c2a75081..0966fb67effeb781c83f4b9f424304cbe1db73b1 100644 (file)
@@ -13,10 +13,15 @@ function wpcf7_admin_init() {
 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' ),
@@ -149,13 +154,49 @@ function wpcf7_load_contact_form_admin() {
                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'] );
        }
@@ -166,10 +207,6 @@ function wpcf7_load_contact_form_admin() {
 
        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' );
 
@@ -229,13 +266,20 @@ function wpcf7_admin_management_page() {
                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' ) ) {
@@ -247,7 +291,7 @@ function wpcf7_admin_management_page() {
                        . __( 'Search results for &#8220;%s&#8221;', 'contact-form-7' )
                        . '</span>', esc_html( $_REQUEST['s'] ) );
        }
-?></h2>
+?></h1>
 
 <?php do_action( 'wpcf7_admin_notices' ); ?>
 
@@ -261,48 +305,45 @@ function wpcf7_admin_management_page() {
 <?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();
 
@@ -322,7 +363,7 @@ function wpcf7_admin_integration_page() {
 ?>
 <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' ); ?>
 
@@ -351,11 +392,26 @@ function wpcf7_admin_updated_message() {
        }
 
        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 ) ) {
@@ -419,13 +475,13 @@ function wpcf7_welcome_panel() {
        <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>
@@ -435,7 +491,7 @@ function wpcf7_welcome_panel() {
                        </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>
@@ -492,3 +548,59 @@ function wpcf7_not_allowed_to_edit() {
                '<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 &raquo; %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 &raquo; %s</p></div>', esc_html( $message ), $link );
+}
index 4e8992320670e5100442c436fb8882ec0edc5b83..44fa8d9ea0af58abde5ca011f6114470f5e51b7f 100644 (file)
@@ -25,7 +25,7 @@
        margin: 8px -8px 8px 8px;
 }
 
-.card h3.title {
+.card h2.title {
        float: right;
 }
 
index 7160324ff4d8912beda19f7ce0dbadc681daf755..d5633b3909640c30f775523df0ebf17bc484f28f 100644 (file)
@@ -39,6 +39,10 @@ span.shortcode > input {
        color: #a00;
 }
 
+#submitpost input.delete:hover {
+       color: #f00;
+}
+
 #submitpost input.delete:focus {
        outline: thin dotted;
 }
@@ -52,6 +56,12 @@ span.shortcode > input {
        color: #23282d;
 }
 
+div.config-error, span.config-error {
+       color: #d00;
+       font-style: normal;
+       font-size: 13px;
+}
+
 /*
  * Tabs
  */
@@ -103,7 +113,7 @@ span.shortcode > input {
        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;
@@ -253,6 +263,13 @@ span.shortcode > input {
        color: #666;
 }
 
+/*
+ * Messages Panel
+ */
+#messages-panel p.description {
+       margin: 5px 0 10px;
+}
+
 /*
  * List Table
  */
@@ -267,6 +284,13 @@ span.shortcode > input {
 /*
  * 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;
@@ -304,9 +328,11 @@ span.shortcode > input {
        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 {
index 6407d36d04a11b21a618809ec76f1bea8d5a07e1..255c6f0b1baff4ddfecc15d7d21391be03735bce 100644 (file)
@@ -31,7 +31,7 @@ function wpcf7_admin_save_button( $post_id ) {
 
 ?><div class="wrap">
 
-<h2><?php
+<h1><?php
        if ( $post->initial() ) {
                echo esc_html( __( 'Add New Contact Form', 'contact-form-7' ) );
        } else {
@@ -41,7 +41,7 @@ function wpcf7_admin_save_button( $post_id ) {
                        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' ); ?>
 
index ffa6abdceca6c2aba1340bed89708d81b2588237..940d7f3e0bc68ab26ab91d4482548f97ba03226e 100755 (executable)
@@ -67,7 +67,20 @@ function wpcf7_save_contact_form( $post_id = -1 ) {
        }
 
        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'] ) ) {
@@ -100,8 +113,20 @@ function wpcf7_save_contact_form( $post_id = -1 ) {
        }
 
        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'] ) ) {
@@ -130,5 +155,11 @@ function wpcf7_save_contact_form( $post_id = -1 ) {
 
        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;
 }
index ba0a7eb234840fe6b5db5edc5925539cf26f27bd..705d4d8246dbf2727a36bf1492d2df1a32f49676 100644 (file)
@@ -100,6 +100,29 @@ class WPCF7_Contact_Form_List_Table extends WP_List_Table {
                $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 &#8220;%s&#8221;', '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 ),
@@ -116,13 +139,9 @@ class WPCF7_Contact_Form_List_Table extends WP_List_Table {
                                        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 &#8220;%s&#8221;', '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 ) {
index c80618b451d45cf63c87ff7407fb41eb92b2b686..3b07bd939c61f962f08256fd79766f16b96d271a 100755 (executable)
@@ -42,7 +42,7 @@ class WPCF7_Editor {
 
 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();
@@ -79,9 +79,11 @@ function wpcf7_editor_box_mail( $post, $args = '' ) {
                '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'] ) ) :
@@ -102,7 +104,12 @@ function wpcf7_editor_box_mail( $post, $args = '' ) {
                <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>
 
@@ -111,7 +118,12 @@ function wpcf7_editor_box_mail( $post, $args = '' ) {
                <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>
 
@@ -120,7 +132,12 @@ function wpcf7_editor_box_mail( $post, $args = '' ) {
                <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>
 
@@ -129,7 +146,12 @@ function wpcf7_editor_box_mail( $post, $args = '' ) {
                <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>
 
@@ -138,7 +160,12 @@ function wpcf7_editor_box_mail( $post, $args = '' ) {
                <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>
 
@@ -168,18 +195,29 @@ function wpcf7_editor_panel_messages( $post ) {
                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
@@ -197,7 +235,7 @@ function wpcf7_editor_panel_additional_settings( $post ) {
        $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>
index 0a1e1455b8dc27145c65881c6b73223ab2cd25a7..e10ebfbe1c82dbf679425e56c7cadfd7230c2b11 100755 (executable)
@@ -23,15 +23,6 @@ class WPCF7_Help_Tabs {
 
                                $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(
@@ -73,8 +64,6 @@ class WPCF7_Help_Tabs {
                $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&#8217;s form-tags here.", 'contact-form-7' ) . '</p>';
index ae1f5370e627c95e48312fa59660071fd27679c9..0ea9274cd73c50ff9a8c4b15f15b54b5db3091c7 100755 (executable)
                        }
                });
 
+               if ('radio' == tagType) {
+                       options.push('default:1');
+               }
+
                options = (options.length > 0) ? options.join(' ') : '';
 
                var value = '';
diff --git a/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/includes/config-validator.php b/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/includes/config-validator.php
new file mode 100644 (file)
index 0000000..097d935
--- /dev/null
@@ -0,0 +1,325 @@
+<?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;
+       }
+}
index e138c2dbc792d6376b061c2dc2b786f97324b7c4..7b72d5640eeb723914c2bd305754ef4d45a2da53 100755 (executable)
@@ -37,7 +37,9 @@ class WPCF7_ContactFormTemplate {
 
        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' ),
@@ -61,7 +63,9 @@ class WPCF7_ContactFormTemplate {
        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' =>
@@ -116,56 +120,56 @@ function wpcf7_messages() {
                        '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' )
                )
        );
 
index 396ffe83ca586a8a71435af433126432b8a7a413..ed944eb507fb0e8651f85712bb96a100059fbaea 100644 (file)
@@ -14,6 +14,7 @@ class WPCF7_ContactForm {
        private $unit_tag;
        private $responses_count = 0;
        private $scanned_form_tags;
+       private $config_validator;
 
        public static function count() {
                return self::$found_items;
@@ -654,6 +655,7 @@ class WPCF7_ContactForm {
                $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 );
                }
@@ -809,6 +811,41 @@ class WPCF7_ContactForm {
 
                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 ) {
index 9c34f1a92ec24d4a31925f28745d8447200b7b81..12a9d2ccc8997f97b83f78c10ec28513773d4f78 100644 (file)
@@ -107,6 +107,11 @@ function wpcf7_use_really_simple_captcha() {
                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 );
 }
index fabc52c2be03e2b0ebebc7e2dc0582e1e3c98902..0fe19d926b0c145cb511c3ac0e1e40ef19295fbf 100755 (executable)
@@ -81,7 +81,7 @@ class WPCF7_Integration {
 ?>
 <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 />
index 3b4ec85c7824b7773d101f1b2f102548cada78c5..7fcb1f8804a3328acbd3b6b6dd1abf20d503030c 100644 (file)
@@ -7,79 +7,33 @@ function wpcf7_l10n() {
                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 = '' ) {
index 5a827ef40f7d9a149fa083fa70b2722d0a146e67..37e96fb48e5ee11573228ab72f513aec810d2eff 100644 (file)
@@ -72,6 +72,9 @@ class WPCF7_Mail {
 
                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 ) {
@@ -165,16 +168,45 @@ function wpcf7_mail_replace_tags( $content, $args = '' ) {
        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;
        }
 
@@ -188,13 +220,7 @@ class WPCF7_MailTaggedText {
                        . '((?:[\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 ) {
@@ -377,4 +403,4 @@ function wpcf7_special_mail_tag( $output, $name, $html ) {
        return $output;
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-bel.mo b/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-bel.mo
new file mode 100644 (file)
index 0000000..f2df111
Binary files /dev/null and b/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-bel.mo differ
diff --git a/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-eo.mo b/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-eo.mo
new file mode 100644 (file)
index 0000000..9eeed24
Binary files /dev/null and b/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-eo.mo differ
diff --git a/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-ga.mo b/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-ga.mo
new file mode 100644 (file)
index 0000000..311cdf9
Binary files /dev/null and b/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-ga.mo differ
diff --git a/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-gu.mo b/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-gu.mo
new file mode 100644 (file)
index 0000000..d1e18e1
Binary files /dev/null and b/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-gu.mo differ
diff --git a/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-hy.mo b/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-hy.mo
new file mode 100644 (file)
index 0000000..3613183
Binary files /dev/null and b/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-hy.mo differ
diff --git a/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-ta_IN.mo b/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-ta_IN.mo
new file mode 100644 (file)
index 0000000..f196e53
Binary files /dev/null and b/pavillonmadeleine.fr/wp-content/plugins/contact-form-7/languages/contact-form-7-ta_IN.mo differ
index e267f9d0050eeba865ce9829547c52d3a1f5be92..daea5e12bb27e908308b153b584ec5602a758662 100644 (file)
@@ -3,7 +3,7 @@ msgid ""
 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"
@@ -11,7 +11,7 @@ msgstr ""
 "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"
@@ -21,204 +21,239 @@ msgstr ""
 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 &#8220;%s&#8221;"
 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
@@ -244,7 +279,7 @@ msgid "Status"
 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 ""
 
@@ -264,32 +299,32 @@ msgid "Information"
 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 ""
 
@@ -309,7 +344,7 @@ msgid "Mail"
 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 ""
 
@@ -319,8 +354,8 @@ msgid "Additional Settings (%d)"
 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 ""
 
@@ -341,24 +376,30 @@ msgid "Date"
 msgstr ""
 
 #: contact-form-7/admin/includes/class-contact-forms-list-table.php:106
-msgid "Edit"
+#, php-format
+msgid "Edit &#8220;%s&#8221;"
 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 &#8220;%s&#8221;"
+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 ""
 
@@ -370,63 +411,63 @@ 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 ""
 
@@ -434,19 +475,15 @@ 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 "
@@ -455,78 +492,71 @@ msgid ""
 "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&#8217;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&#8217;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 "
@@ -536,21 +566,21 @@ msgid ""
 "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&#8217;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&#8217;t "
 "have corresponding form-tags. They are used to represent meta information of "
@@ -558,27 +588,27 @@ msgid ""
 "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 ""
 
@@ -587,6 +617,22 @@ 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 ""
@@ -609,105 +655,106 @@ 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 "
@@ -722,262 +769,6 @@ msgstr ""
 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 ""
@@ -1136,7 +927,7 @@ msgid "Date format that the sender entered is invalid"
 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
@@ -1144,7 +935,7 @@ msgid "Date is earlier than minimum limit"
 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
@@ -1152,7 +943,7 @@ msgid "Date is later than maximum limit"
 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
@@ -1200,15 +991,15 @@ msgid "Uploading a file fails for any reason"
 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
@@ -1216,7 +1007,7 @@ msgid "Uploaded file is too large"
 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
@@ -1224,7 +1015,7 @@ msgid "Uploading a file fails for PHP error"
 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
@@ -1269,27 +1060,12 @@ msgid ""
 "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
@@ -1297,7 +1073,7 @@ msgid "Number is smaller than minimum limit"
 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
@@ -1305,7 +1081,7 @@ msgid "Number is larger than maximum limit"
 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
@@ -1340,7 +1116,7 @@ msgid "Sender doesn't enter the correct answer to the quiz"
 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
@@ -1571,7 +1347,7 @@ msgid "Email address that the sender entered is invalid"
 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
@@ -1579,7 +1355,7 @@ msgid "URL that the sender entered is invalid"
 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
@@ -1587,7 +1363,7 @@ msgid "Telephone number that the sender entered is invalid"
 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
index dcb2129ca9f7be9b0a015b84442259d6ab42936b..1a2b936257c748abb4666978aa4bf732090a4c9e 100644 (file)
@@ -1,4 +1,4 @@
-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
index 6636a93057f6039589a738513939c6dcee2873a3..d38a2604b92cf409a3dc8db80404934014befb6e 100644 (file)
@@ -115,17 +115,17 @@ function wpcf7_date_messages( $messages ) {
        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' )
                ) ) );
 }
 
index 5ac71256be4851839e4e0969b730ac58ca29e46d..8fc87e7e9e6e60ad7f370d4ad6e300999bf68f14 100644 (file)
@@ -193,22 +193,22 @@ function wpcf7_file_messages( $messages ) {
        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' )
                )
        ) );
 }
index c67b5b038a26aced7869695a28859a6764c68d03..e326c97ac1b36aa6c58131ca19b68de6e2a74fbc 100644 (file)
@@ -12,7 +12,8 @@ function wpcf7_flamingo_submit( $contactform, $result ) {
                return;
        }
 
-       if ( $contactform->in_demo_mode() ) {
+       if ( $contactform->in_demo_mode()
+       || $contactform->is_true( 'do_not_store' ) ) {
                return;
        }
 
index 8f41381ecc36c713d18a7871be238667b44e6cf5..e1263296018b9c69b76be71d5d75e5aab36caf15 100644 (file)
@@ -118,17 +118,17 @@ function wpcf7_number_messages( $messages ) {
        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' )
                ) ) );
 }
 
index d2b05e2e0e05820be98595f1b2cbeda82bc57c9c..db55c6dc0fd1ad64db24538d79085ca3c10a8ce5 100644 (file)
@@ -147,7 +147,7 @@ add_filter( 'wpcf7_messages', 'wpcf7_quiz_messages' );
 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' )
        ) ) );
 }
 
index 63b372b9866e19727d5923ed3035fde4b22225aa..bd994b7211854cdcd714625e1112c2b9f808ea7b 100644 (file)
@@ -167,17 +167,17 @@ function wpcf7_text_messages( $messages ) {
        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' )
                ) ) );
 }
 
index 72b4b9368a78666d046f9bdde8f929310705160a..653e5837ed2569d19a6878ec4fca338db72683de 100644 (file)
@@ -2,9 +2,9 @@
 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
 
@@ -26,79 +26,15 @@ It is hard to continue development and support for this free plugin without cont
 
 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 ==
 
@@ -127,6 +63,14 @@ Do you have questions or issues with Contact Form 7? Use these support channels
 
 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.
index 54e5525a91a57034894de45950894378450f3932..dacc3b9450ddcd2fb4827f890c7979f3c5d3928b 100644 (file)
@@ -12,6 +12,7 @@ require_once WPCF7_PLUGIN_DIR . '/includes/mail.php';
 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';
@@ -29,7 +30,6 @@ class WPCF7 {
                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' );
index 7bbf6ad74e35613ac156889d6fbdb20dc40d047b..666c4b4e0279fa55f9f51bbc1f0dfe31870b5222 100644 (file)
@@ -7,12 +7,12 @@ Author: Takayuki Miyoshi
 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__ );
 
@@ -56,6 +56,10 @@ if ( ! defined( 'WPCF7_USE_REALLY_SIMPLE_CAPTCHA' ) ) {
        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 ) ) );
 
index 97eb2cdc6525dc0bc7db48542385483cb8228918..aefba4dbba4b173023e943bf73a59410b3863c22 100755 (executable)
@@ -481,4 +481,35 @@ table.block-ranges-table tr td {
        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
index 54512499878e515b4ae5bb194dfc3ea4908fabd4..9c6419ee6b69d3cac95f2f8ee236f9c547b18b73 100755 (executable)
Binary files a/pavillonmadeleine.fr/wp-content/plugins/wordfence/lib/GeoIP.dat and b/pavillonmadeleine.fr/wp-content/plugins/wordfence/lib/GeoIP.dat differ
index c06c34aa4a85dd67a049913abcd8ed0103ca2318..3cb3f368060efdfc5ec72b7fbc585da0c9f45d78 100755 (executable)
@@ -6,18 +6,14 @@ The Wordfence administrative URL for this site is: <?php echo $adminURL; ?>admin
 <?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 } ?>
 
 --
index 5889475f4a29cac6bade2d99082d7a7a9a9aa9d9..05b1a85752ba3686b5422e8e36908b3755fcfdde 100755 (executable)
 
 
 <?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 } ?>
 
 
index a9cc88576c27e3e0a2c570eb7b8625fe74c46063..05c2cbed34aad9db9a2f1c95de78d9dab4976660 100755 (executable)
@@ -9,11 +9,21 @@ WFAD.countryMap = <?php echo json_encode($wfBulkCountries); ?>;
        <?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">
index a2f8fa3f99ce01eff5ad89bb3d3c1a7ccd7f52ec..9ae8a4bf1262bb6b4d179b1a88ac5fbdc14f3157 100755 (executable)
@@ -45,7 +45,7 @@ $w = new wfConfig();
                        </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/"
@@ -56,9 +56,25 @@ $w = new wfConfig();
                                                                           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>
index 095f8033001c7e9f10b094aaccdc060a419d81da..7efdf876f4bba944b9769f867a09ed929b1ccfd7 100755 (executable)
@@ -6,14 +6,17 @@
        $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 } ?>
 
index 8d7ed61873ca4de586173f0ab0ad3eb5100f8fa1..fafac692b264c726ec29cebcab3233196ac7a0e3 100755 (executable)
                                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;">
index f89fb2bf1c2ccbe79de8f7acd34b2e7671480bf0..7c408caf6111c95b7eb642921267091710cc5e90 100755 (executable)
@@ -3,12 +3,23 @@
        <?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;">
index 492b85521176260562fca664d40d3989dbe65787..c5db010d8181f28f3df5989209b6a7c990797637 100755 (executable)
@@ -3,13 +3,28 @@
        <?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;">
index b687ebaaae09a787180852d122e5dc3ae01a62b9..79189ec68eac61d96cd3d92cb06afdb46ea7105c 100755 (executable)
@@ -267,30 +267,28 @@ SQL
        }
 
        /**
-        * 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 '
diff --git a/pavillonmadeleine.fr/wp-content/plugins/wordfence/lib/wfIPWhitelist.php b/pavillonmadeleine.fr/wp-content/plugins/wordfence/lib/wfIPWhitelist.php
new file mode 100644 (file)
index 0000000..cf596b6
--- /dev/null
@@ -0,0 +1,220 @@
+<?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
index 15d21d8e4355e5fde0ac8e71098b502833c36e35..108780aa8123225df4216f5a6378b72402b60fac 100755 (executable)
@@ -169,70 +169,17 @@ class wfLog {
         * @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(){
index f7c2f343eca539a0b871edad3033be3cf1ecaae4..27e36664c0699f814ab7986cb208341757448d8c 100755 (executable)
@@ -2,25 +2,6 @@
 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;
@@ -83,6 +64,124 @@ class wfUtils {
                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.
         *
@@ -266,6 +365,40 @@ class wfUtils {
                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
@@ -273,9 +406,8 @@ class wfUtils {
        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;
                                }
                        }
@@ -901,13 +1033,6 @@ class wfUtils {
                }
        }
 
-       /**
-        * @return array
-        */
-       public static function getPrivateAddrs() {
-               return self::$privateAddrs;
-       }
-
        /**
         * @param string $host
         * @return array
index 428adf87c6a25ea66266cd03fcd1a2d97f5c964e..41ad6f73a7fba9dca919a50dde29e8ef84a6f8bf 100755 (executable)
@@ -3,7 +3,7 @@ Contributors: mmaunder
 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 ==
@@ -190,6 +190,12 @@ Designed for every skill level, [The WordPress Security Learning Center](https:/
 
 == 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.
index ed5419e13eb92b4f08870db50543f9bc0eba4fa8..35b06ec182f1d78214bd5360401efc44c58eb6d3 100644 (file)
@@ -1,4 +1,4 @@
 <?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
index 32ac55bccc2ffd08f02d19ccd1737e9d22a70872..cee46e319c955a2bdba587f0b4b7b09b1af24557 100755 (executable)
@@ -4,13 +4,13 @@ Plugin Name: Wordfence Security
 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()); }
 }
diff --git a/pavillonmadeleine.fr/wp-content/uploads/2016/02/DOSSIER-DE-SUIVI-PERSONNALISE-PM.pdf b/pavillonmadeleine.fr/wp-content/uploads/2016/02/DOSSIER-DE-SUIVI-PERSONNALISE-PM.pdf
new file mode 100644 (file)
index 0000000..ed087f3
Binary files /dev/null and b/pavillonmadeleine.fr/wp-content/uploads/2016/02/DOSSIER-DE-SUIVI-PERSONNALISE-PM.pdf differ
index 9b685edb11de719a4d6fba4b9a7649e9fe6b2ca2..a8d7941f7132238129d372e251def164b7768c10 100644 (file)
@@ -550,11 +550,11 @@ function wp_list_categories( $args = '' ) {
                $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;
@@ -1148,14 +1148,18 @@ function get_the_terms( $post, $taxonomy ) {
        $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.
index d02706cab0f03dce7dbc2126ef3bd68ee7f90c40..e631095f4d2efff106412d53759c5ea70fe59db3 100644 (file)
@@ -2,6 +2,8 @@
 ## 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
@@ -41,6 +43,61 @@ uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU
 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-----
@@ -61,6 +118,41 @@ BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
 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-----
@@ -104,6 +196,64 @@ BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
 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-----
@@ -152,6 +302,33 @@ RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
 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-----
@@ -197,6 +374,40 @@ Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
 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-----
@@ -442,6 +653,60 @@ gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm
 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-----
@@ -858,6 +1123,65 @@ KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
 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-----
@@ -2232,6 +2556,22 @@ MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o
 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-----
index cbb65e599aefb3fcb44c60fd051e30a47349c040..2fee046d41f27f44b4a2a965e0fbfc456cbcd0c9 100644 (file)
@@ -201,7 +201,6 @@ class IXR_Message
     var $_value;
     var $_currentTag;
     var $_currentTagContents;
-    var $_valueHasType = false;
     // The XML parser
     var $_parser;
 
@@ -325,8 +324,6 @@ class IXR_Message
                 $this->_arraystructstypes[] = 'struct';
                 $this->_arraystructs[] = array();
                 break;
-            case 'value':
-                $this->_valueHasType = false;
         }
     }
 
@@ -358,8 +355,8 @@ class IXR_Message
                 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;
@@ -390,8 +387,6 @@ class IXR_Message
         }
 
         if ($valueFlag) {
-            $this->_valueHasType = true;
-                               
             if (count($this->_arraystructs) > 0) {
                 // Add value to struct or array
                 if ($this->_arraystructstypes[count($this->_arraystructstypes)-1] == 'struct') {
index e7f72c91e9c84283dbdff5dfff0018e4e96e123b..b60a4f4794abfc5720df1d879a17ff1e8fc482be 100644 (file)
@@ -60,8 +60,6 @@ class WP_oEmbed {
                        '#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  ),
@@ -124,8 +122,6 @@ class WP_oEmbed {
                 * | 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     |
@@ -156,6 +152,8 @@ class WP_oEmbed {
                 * | 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()
                 *
index 338965ff4b7430a8c83304820e65699e17eeb503..b28c4ef2fad1be14d42682c0d9d0334464501e75 100644 (file)
@@ -29,65 +29,66 @@ class PHPMailer
 {
     /**
      * 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
@@ -96,14 +97,14 @@ class PHPMailer
 
     /**
      * 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 = '';
 
@@ -112,7 +113,7 @@ class PHPMailer
      * 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 = '';
 
@@ -122,27 +123,27 @@ class PHPMailer
      * 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 = '';
@@ -150,64 +151,64 @@ class PHPMailer
     /**
      * 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 = '';
 
@@ -220,21 +221,22 @@ class PHPMailer
      * 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 = '';
@@ -242,7 +244,7 @@ class PHPMailer
     /**
      * What kind of encryption to use on the SMTP connection.
      * Options: '', 'ssl' or 'tls'
-     * @type string
+     * @var string
      */
     public $SMTPSecure = '';
 
@@ -250,14 +252,14 @@ class PHPMailer
      * 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
      */
@@ -265,47 +267,47 @@ class PHPMailer
 
     /**
      * 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;
 
@@ -318,7 +320,7 @@ class PHPMailer
      * * `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;
@@ -334,7 +336,7 @@ class PHPMailer
      * <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';
@@ -343,20 +345,20 @@ class PHPMailer
      * 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();
@@ -364,15 +366,15 @@ class PHPMailer
     /**
      * 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;
 
@@ -380,40 +382,40 @@ class PHPMailer
      * 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 = '';
 
@@ -433,48 +435,48 @@ class PHPMailer
      *   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();
@@ -482,77 +484,100 @@ class PHPMailer
     /**
      * 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 = '';
@@ -560,21 +585,21 @@ class PHPMailer
     /**
      * 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 = '';
@@ -601,7 +626,7 @@ class PHPMailer
 
     /**
      * The maximum line length allowed by RFC 2822 section 2.1.1
-     * @type integer
+     * @var integer
      */
     const MAX_LINE_LENGTH = 998;
 
@@ -763,55 +788,101 @@ class PHPMailer
 
     /**
      * 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
@@ -819,26 +890,26 @@ class PHPMailer
      */
     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;
@@ -864,11 +935,15 @@ class PHPMailer
     {
         $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;
         }
@@ -898,10 +973,10 @@ class PHPMailer
      * 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
@@ -910,6 +985,10 @@ class PHPMailer
      */
     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
@@ -989,6 +1068,48 @@ class PHPMailer
         }
     }
 
+    /**
+     * 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.
@@ -1020,17 +1141,41 @@ class PHPMailer
     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)) {
@@ -1171,7 +1316,15 @@ class PHPMailer
             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);
             }
@@ -1458,7 +1611,7 @@ class PHPMailer
             '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: ',
@@ -1723,7 +1876,6 @@ class PHPMailer
         }
         $result .= $this->headerLine('Date', $this->MessageDate);
 
-
         // To be created automatically by mail()
         if ($this->SingleTo) {
             if ($this->Mailer != 'mail') {
@@ -1769,14 +1921,16 @@ class PHPMailer
         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);
@@ -1786,7 +1940,7 @@ class PHPMailer
         }
 
         if ($this->ConfirmReadingTo != '') {
-            $result .= $this->headerLine('Disposition-Notification-To', '<' . trim($this->ConfirmReadingTo) . '>');
+            $result .= $this->headerLine('Disposition-Notification-To', '<' . $this->ConfirmReadingTo . '>');
         }
 
         // Add custom headers
@@ -2266,18 +2420,27 @@ class PHPMailer
                 $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);
@@ -2301,12 +2464,20 @@ class PHPMailer
                             $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;
@@ -2340,7 +2511,6 @@ class PHPMailer
      * @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
      */
@@ -2560,7 +2730,7 @@ class PHPMailer
     {
         // 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(
@@ -2568,8 +2738,7 @@ class PHPMailer
             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);
     }
 
     /**
@@ -2638,7 +2807,6 @@ class PHPMailer
         return str_replace(' ', '_', $encoded);
     }
 
-
     /**
      * Add a string or binary attachment (non-filesystem).
      * This method can be used to attach ascii or binary data,
@@ -2744,7 +2912,7 @@ class PHPMailer
         $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);
         }
 
@@ -2800,6 +2968,22 @@ class PHPMailer
         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
@@ -2810,6 +2994,7 @@ class PHPMailer
             unset($this->all_recipients[strtolower($to[0])]);
         }
         $this->to = array();
+        $this->clearQueuedAddresses('to');
     }
 
     /**
@@ -2822,6 +3007,7 @@ class PHPMailer
             unset($this->all_recipients[strtolower($cc[0])]);
         }
         $this->cc = array();
+        $this->clearQueuedAddresses('cc');
     }
 
     /**
@@ -2834,6 +3020,7 @@ class PHPMailer
             unset($this->all_recipients[strtolower($bcc[0])]);
         }
         $this->bcc = array();
+        $this->clearQueuedAddresses('bcc');
     }
 
     /**
@@ -2843,6 +3030,7 @@ class PHPMailer
     public function clearReplyTos()
     {
         $this->ReplyTo = array();
+        $this->ReplyToQueue = array();
     }
 
     /**
@@ -2855,6 +3043,7 @@ class PHPMailer
         $this->cc = array();
         $this->bcc = array();
         $this->all_recipients = array();
+        $this->RecipientsQueue = array();
     }
 
     /**
@@ -3011,8 +3200,7 @@ class PHPMailer
     }
 
     /**
-     * Returns all custom headers
-     *
+     * Returns all custom headers.
      * @return array
      */
     public function getCustomHeaders()
@@ -3029,13 +3217,13 @@ class PHPMailer
      * @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)) {
@@ -3046,15 +3234,16 @@ class PHPMailer
                         $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 == '.') {
@@ -3144,6 +3333,16 @@ class PHPMailer
             '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',
@@ -3348,7 +3547,6 @@ class PHPMailer
         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
@@ -3517,7 +3715,10 @@ class PHPMailer
             "\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";
@@ -3537,6 +3738,7 @@ class PHPMailer
 
     /**
      * 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
      */
@@ -3547,6 +3749,7 @@ class PHPMailer
 
     /**
      * 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
      */
@@ -3557,6 +3760,7 @@ class PHPMailer
 
     /**
      * 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
      */
@@ -3567,6 +3771,7 @@ class PHPMailer
 
     /**
      * 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
      */
@@ -3577,6 +3782,7 @@ class PHPMailer
 
     /**
      * 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
      */
index 1eae77a128fb6b1cb01bc75d7c287858c33f3db8..f17ca0fd9717d618a37115083781385498303b65 100644 (file)
@@ -28,25 +28,25 @@ class SMTP
 {
     /**
      * 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;
 
@@ -77,15 +77,15 @@ class SMTP
 
     /**
      * 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
      */
@@ -93,7 +93,7 @@ class SMTP
 
     /**
      * SMTP reply line ending.
-     * @type string
+     * @var string
      * @deprecated Use the `CRLF` constant instead
      * @see SMTP::CRLF
      */
@@ -107,7 +107,7 @@ class SMTP
      * * 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;
 
@@ -122,7 +122,7 @@ class SMTP
      * <code>
      * $smtp->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";};
      * </code>
-     * @type string|callable
+     * @var string|callable
      */
     public $Debugoutput = 'echo';
 
@@ -130,7 +130,7 @@ class SMTP
      * 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;
 
@@ -139,26 +139,26 @@ class SMTP
      * 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' => '',
@@ -170,7 +170,7 @@ class SMTP
     /**
      * 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;
 
@@ -181,13 +181,13 @@ class SMTP
      * 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 = '';
 
@@ -351,20 +351,21 @@ class SMTP
      * 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');
@@ -673,9 +674,11 @@ class SMTP
     {
         $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);
@@ -685,11 +688,20 @@ class SMTP
                     $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;
             }
         }
     }
@@ -739,15 +751,15 @@ class SMTP
      * 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)
         );
     }
@@ -766,9 +778,9 @@ class SMTP
 
     /**
      * 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.
      */
@@ -778,6 +790,11 @@ class SMTP
             $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();
@@ -981,10 +998,9 @@ class SMTP
         }
         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;
index e30094ddfcff140513957b2d7f85e515310c3edf..9f6aaa5327dddfa3c5160a2dd99b2bf81cb44408 100755 (executable)
@@ -59,6 +59,17 @@ class WP_Comment_Query {
                '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
         *
@@ -747,7 +758,7 @@ class WP_Comment_Query {
                        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 );
                        }
                }
 
@@ -816,6 +827,8 @@ class WP_Comment_Query {
                $limits = isset( $clauses[ 'limits' ] ) ? $clauses[ 'limits' ] : '';
                $groupby = isset( $clauses[ 'groupby' ] ) ? $clauses[ 'groupby' ] : '';
 
+               $this->filtered_where_clause = $where;
+
                if ( $where ) {
                        $where = 'WHERE ' . $where;
                }
@@ -867,12 +880,27 @@ class WP_Comment_Query {
                        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;
@@ -882,7 +910,7 @@ class WP_Comment_Query {
                                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++;
index 9f15d31f577149c4d546e16530e54c4206e2cd3c..b789556393275608b09da8c367dc6566ac2b62a7 100644 (file)
@@ -1535,9 +1535,11 @@ final class WP_Customize_Manager {
         */
        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;
index 2128df230f7f275913039680a56d173260a95d39..cf497f130f432e4c92f849090dd31fe23897ec97 100644 (file)
@@ -240,7 +240,7 @@ final class WP_Theme implements ArrayAccess {
                } 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;
@@ -287,7 +287,7 @@ final class WP_Theme implements ArrayAccess {
                                $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;
@@ -299,11 +299,11 @@ final class WP_Theme implements ArrayAccess {
                        // 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;
index e4890ae5c6666d619fa12fbd77310f421bf77f7d..ee68a205e96aea9ee93b70ee0f21638ab75ef7fc 100644 (file)
@@ -215,7 +215,7 @@ class Walker {
                $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;
index 08897dc032f12ab4ecca726f38647beea0c412bf..5be4dc9b45a42dd60acb13a959d340d4b3be5abf 100644 (file)
@@ -1349,8 +1349,8 @@ class wp_xmlrpc_server extends IXR_Server {
                }
 
                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'] ) )
@@ -3423,8 +3423,8 @@ class wp_xmlrpc_server extends IXR_Server {
                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']) )
@@ -4991,8 +4991,8 @@ class wp_xmlrpc_server extends IXR_Server {
                        $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 = '';
@@ -5345,8 +5345,8 @@ class wp_xmlrpc_server extends IXR_Server {
                        $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'];
index 555167b1ea2b34e994c4b167e1e8f57b492b969d..3685305a2658e07f5fb72c38124fdaca550082d6 100644 (file)
@@ -15,7 +15,7 @@ class WP {
         * @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.
@@ -25,7 +25,7 @@ class WP {
         * @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.
@@ -609,7 +609,12 @@ class WP {
 
                        $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' ) );
index ada53c899771e1201f1e090619c18ef3c16d0a2e..ad5b9caf5e9e681423b23460f8be48fc060a7c43 100644 (file)
@@ -736,7 +736,7 @@ function get_comment_link( $comment = null, $args = array() ) {
                }
        }
 
-       if ( $cpage ) {
+       if ( $cpage && get_option( 'page_comments' ) ) {
                if ( $wp_rewrite->using_permalinks() ) {
                        if ( $cpage ) {
                                $link = trailingslashit( $link ) . $wp_rewrite->comments_pagination_base . '-' . $cpage;
@@ -1285,11 +1285,16 @@ function comments_template( $file = '/comments.php', $separate_comments = false
                '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 ) ) {
@@ -1313,12 +1318,22 @@ function comments_template( $file = '/comments.php', $separate_comments = false
                } 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;
                }
@@ -1328,13 +1343,22 @@ function comments_template( $file = '/comments.php', $separate_comments = false
        $_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;
        }
 
        /**
@@ -1927,34 +1951,71 @@ function wp_list_comments( $args = array(), $comments = null ) {
                        $_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;
+                       }
                }
        }
 
index 5de9531322a600c77fb17f5300217d79bb82c53c..9586b8b74547508f287e83b2303c9052e36054b9 100644 (file)
@@ -1805,7 +1805,7 @@ function wp_new_comment_notify_postauthor( $comment_ID ) {
        }
 
        // 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;
        }
 
@@ -2750,7 +2750,7 @@ function wp_handle_comment_submission( $comment_data ) {
                $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 )
@@ -2787,7 +2787,7 @@ function wp_handle_comment_submission( $comment_data ) {
                'comment_content',
                'comment_type',
                'comment_parent',
-               'user_id'
+               'user_ID'
        );
 
        $comment_id = wp_new_comment( wp_slash( $commentdata ) );
index fb983a9caa394bc98ef51bec1b33d8d8458cee95..9674b645425ff617590fe59b642ba80c4b699c22 100755 (executable)
@@ -46,7 +46,7 @@ class WP_Customize_Themes_Section extends WP_Customize_Section {
                                }
                                ?>
 
-                               <?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>
index df2518f98fc5480b492afd5c4ef2333ed27d8a61..fab8c84221926c0489aeaa55fbad9b85ca3866d9 100755 (executable)
@@ -50,7 +50,7 @@ if ( have_posts() ) :
                        $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'];
index 5e4cdc1605d63fbfdcd8ff24d179c94b71baad15..9fa1aa3df740739f044cdd27073c44677c7e52f1 100755 (executable)
@@ -345,7 +345,7 @@ function wp_oembed_register_route() {
 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' ) ) {
index ff4167d2273e8a175d3d0bca675be400e3f0400f..65758680c810eeb0bf39eed7139ca7f6b7e24050 100644 (file)
@@ -216,7 +216,7 @@ function wptexturize( $text, $reset = false ) {
 
        // 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 ) : '';
@@ -233,6 +233,10 @@ function wptexturize( $text, $reset = false ) {
                                continue;
                        } else {
                                // This is an HTML element delimiter.
+
+                               // Replace each & with &#038; unless it already looks like an entity.
+                               $curl = preg_replace( '/&(?!#(?:\d+|x[a-f0-9]+);|[a-z1-4]{1,8};)/i', '&#038;', $curl );
+
                                _wptexturize_pushpop_element( $curl, $no_texturize_tags_stack, $no_texturize_tags );
                        }
 
@@ -3892,14 +3896,20 @@ function sanitize_option( $option, $value ) {
  * @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;
 }
 
 /**
@@ -4524,7 +4534,7 @@ function print_emoji_detection_script() {
                 *
                 * @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.
@@ -4571,7 +4581,7 @@ function print_emoji_detection_script() {
                ?>
                <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
        }
@@ -4636,7 +4646,7 @@ function wp_staticize_emoji( $text ) {
        $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' );
@@ -4791,4 +4801,20 @@ function url_shorten( $url, $length = 35 ) {
                $short_url = substr( $short_url, 0, $length - 3 ) . '&hellip;';
        }
        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
index e3fb35317c9533226c1e70d1e312382c484cd9d6..b3781639e267b3d4ba6f9cb028c9d2e71eca97ad 100644 (file)
@@ -172,6 +172,11 @@ function date_i18n( $dateformatstring, $unixtimestamp = false, $gmt = false ) {
 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.
         */
index f554e1fdc5411a2a85ef1a4f6bdd585277af6c89..79b42e9c14565a5e9e6e7b57d647feaade79d9e9 100644 (file)
@@ -471,7 +471,7 @@ function wp_login_form( $args = array() ) {
        $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>
@@ -856,8 +856,8 @@ function wp_get_document_title() {
                /* translators: %s: search phrase */
                $title['title'] = sprintf( __( 'Search Results for &#8220;%s&#8221;' ), 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.
@@ -869,14 +869,10 @@ function wp_get_document_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.
@@ -904,7 +900,7 @@ function wp_get_document_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' );
index 8fa00e942fc140346b07304d34e68b07df13a084..9f254a15be296e81e4680cb7aea361a2863909a1 100644 (file)
@@ -536,7 +536,7 @@ function wp_http_validate_url( $url ) {
                }
                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] )
                        ) {
index 0ffc293f5b8100032e143cea4c6115f653977904..85d5f841931ff610f7bfcdfcdf87dc923e10c234 100644 (file)
@@ -346,7 +346,7 @@ window.autosave = function() {
                                };
 
                                $notice = $( '#local-storage-notice' )
-                                       .insertAfter( $( '.wrap' ).children( ':header' ).first() )
+                                       .insertAfter( $( '.wrap h1, .wrap h2' ).first() )
                                        .addClass( 'notice-warning' )
                                        .show();
 
index 6d484f8b93627c54bd5142ea1655077a46c8635e..30e2ff7a4e6bdc344fab01fa3399711695b8b76e 100644 (file)
@@ -1 +1 @@
-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
index 5d2fe6056219063c109a93d19686fc04621bfe3e..9e08201541ceb5155e438543aea6355836b434ca 100644 (file)
@@ -1214,13 +1214,34 @@ Library = wp.media.controller.State.extend({
         * @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).
         *
index e951d78a085b55a977c5fd3bab1230fca5f75043..68018cb1d4119376dc17df7c105c629d8ac08b7d 100644 (file)
@@ -1,4 +1,4 @@
-!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+" &times; "+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+" &times; "+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
index 6432308507b681abe066078451076d2ab4a04d2d..b8f9fc9b87f3290fc7cf86c472f26b3143df14b4 100755 (executable)
@@ -233,7 +233,7 @@ var twemoji = (function (
 
     // 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,
index 9423d351b413d8d3dbf841ebd41b1847708e0ff8..ac0d435fd60a1526dd29f00275f0c805f4e7a25f 100755 (executable)
@@ -1 +1 @@
-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={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},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={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},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
index a495f3552b847899b66b96ff2ff49fcd05729367..83f431cc92af5c57670cdebef5d5bcb1d93a9032 100755 (executable)
@@ -12,7 +12,9 @@
         */
        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;
@@ -76,7 +90,7 @@
                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();
                };
index 03f21d768efa533af2d80a74130226e56ae9f4d6..9579e8f9e46270a4c8bf729109887c347cd0867a 100755 (executable)
@@ -1 +1 @@
-!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
index 6b9972b4bcfe32c27a61aa806044de136140f8bf..60946b829d59d115bfeee9a48da51321cd81008f 100755 (executable)
@@ -1,4 +1,4 @@
 // 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={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},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={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},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
index f87e0839869d30cbb1790b7e9bb9e055cbca1ff5..6fa00c2e6fbfd177c94c02cf75604e1719189841 100755 (executable)
                                                        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();
index eb51b0a742780f5dad8f6a03b5aa25d8d122977c..175a31fae5540376c6531b356baaeebfa42e6659 100755 (executable)
@@ -1 +1 @@
-!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
index d34608b89f3eacb482ce1ac65960f3ab101d669a..4827b0de2c88971ba93425f075e9fded06f5de44 100644 (file)
@@ -1580,6 +1580,19 @@ function wp_kses_post( $data ) {
        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.
  *
index 5aabffa61d705875e418ff1370824cfa2b25b2eb..932d742da9c6e550b3acfebe56870b6b4442dc89 100644 (file)
@@ -3502,8 +3502,12 @@ function rel_canonical() {
        $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' );
index 9d247baa9024a2fcbbe1e055f2c68c839d4fd36a..d6345c763038fa507eb3b11960a6c387c3fd499e 100644 (file)
@@ -473,7 +473,7 @@ function wp_start_object_cache() {
                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' ) );
        }
 }
index e6c27b0c85af3b2c90c438c9846d5bcb87030037..70b09584cc3546d7a8987f69f56ae7ee99520730 100644 (file)
@@ -877,6 +877,31 @@ function wp_get_attachment_image_url( $attachment_id, $size = 'thumbnail', $icon
        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.
  *
@@ -971,6 +996,16 @@ function wp_get_attachment_image_srcset( $attachment_id, $size = 'medium', $imag
  * @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;
        }
@@ -987,7 +1022,6 @@ function wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attac
        }
 
        $image_basename = wp_basename( $image_meta['file'] );
-       $image_baseurl = _wp_upload_dir_baseurl();
 
        /*
         * WordPress flattens animated GIFs into one frame when generating intermediate sizes.
@@ -1004,16 +1038,15 @@ function wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attac
                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;
@@ -1038,19 +1071,36 @@ function wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attac
        // 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;
                }
 
@@ -1096,7 +1146,7 @@ function wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attac
        $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;
        }
 
@@ -1278,28 +1328,6 @@ function wp_image_add_srcset_and_sizes( $image, $image_meta, $attachment_id ) {
                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;
 
index 84f63ed71dd0e5e5f648fcd88b82ba8538c7ff7b..0701f17fde037703deb84160d703f9a9a69b3f8d 100644 (file)
@@ -654,7 +654,7 @@ function switch_to_blog( $new_blog, $deprecated = null ) {
                        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' ) );
                }
@@ -725,7 +725,7 @@ function restore_current_blog() {
                        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' ) );
                }
index 253b6547cdbe7b29d5378ab2a82128c94520fe1c..e947eb857190f8ee34802d9c52501fbea240d34a 100644 (file)
@@ -211,7 +211,7 @@ class Walker_Nav_Menu extends Walker {
         * @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
index 88d1440599cd1af83069d0e0cc8a8966d97f47ec..3159b37e12e566a415b3471ad4cba22653999e42 100644 (file)
@@ -1333,7 +1333,8 @@ function wp_validate_redirect($location, $default = '') {
        // 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 )
@@ -1343,9 +1344,17 @@ function wp_validate_redirect($location, $default = '') {
        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());
 
index d0bc1a3d863f29af075d626f27498d3891cfe07f..9cf0c161faa11f3922be63c5990847f21805a307 100644 (file)
@@ -4290,7 +4290,7 @@ function get_page_uri( $page ) {
 
        foreach ( $page->ancestors as $parent ) {
                $parent = get_post( $parent );
-               if ( 'publish' === $parent->post_status ) {
+               if ( $parent ) {
                        $uri = $parent->post_name . '/' . $uri;
                }
        }
@@ -4869,7 +4869,8 @@ function wp_get_attachment_url( $post_id = 0 ) {
                                // 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";
index a2b236540e9e86410fcb2e487b3093e2ea154b3c..b4aae270b22195f5478a03109a4723c69cef3d14 100644 (file)
@@ -2300,7 +2300,7 @@ class WP_Query {
                                $like = '%' . $wpdb->esc_like( $q['s'] ) . '%';
                        }
 
-                       $search_orderby = '(CASE ';
+                       $search_orderby = '';
 
                        // sentence match in 'post_title'
                        if ( $like ) {
@@ -2321,7 +2321,10 @@ class WP_Query {
                        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';
@@ -4981,12 +4984,11 @@ class WP_Query {
  *
  * @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.
@@ -5028,19 +5030,10 @@ function wp_old_slug_redirect() {
 
                $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] );
-                               }
-                       }
                }
 
                /**
index d1f7555afaf8d00e4b01b8a3d45b48204e155e25..f6ffc54ff7eeb07ac10d09d3d16390f231e5d9a5 100755 (executable)
@@ -56,7 +56,7 @@ if (PHP_VERSION_ID < 70000) {
          * 
          * 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';
         }
@@ -90,15 +90,23 @@ if (PHP_VERSION_ID < 70000) {
             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 (
index aebcafcf7df8514742b6492f923acfd5767c9535..5d07104b3fa1288d106699aee4c6fdcf3df2d8bb 100755 (executable)
@@ -62,16 +62,21 @@ function random_bytes($bytes)
                 $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 {
index 22f33c32efe3f201304802b5186bdcc19def7b4e..ab8c43337f9b3b1371ac59b0ab42d13ca620a278 100644 (file)
@@ -95,7 +95,7 @@ function add_shortcode($tag, $func) {
                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' );
@@ -210,7 +210,7 @@ function do_shortcode( $content, $ignore_html = false ) {
                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 ) ) {
@@ -578,7 +578,7 @@ function strip_shortcodes( $content ) {
                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 ) ) {
index f361c3be49b25bb3b52cf7811360e9d133d8bcc1..c6d3b6e26d32462b5df783f57c5448ef38ee497a 100644 (file)
@@ -390,6 +390,9 @@ function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
                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' ) ) ) {
@@ -1353,12 +1356,14 @@ function get_terms( $taxonomies, $args = '' ) {
 
        // 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();
@@ -1408,7 +1413,7 @@ function get_terms( $taxonomies, $args = '' ) {
 
        $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.
@@ -1424,11 +1429,12 @@ function get_terms( $taxonomies, $args = '' ) {
        $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 );
@@ -3604,7 +3610,7 @@ function update_object_term_cache($object_ids, $object_type) {
 
        $terms = wp_get_object_terms( $ids, $taxonomies, array(
                'fields' => 'all_with_object_id',
-               'orderby' => 'none',
+               'orderby' => 'name',
                'update_term_meta_cache' => false,
        ) );
 
@@ -3640,7 +3646,7 @@ function update_object_term_cache($object_ids, $object_type) {
 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 );
index b2dd6c6eea29e3702e05973ab50eec2d33103014..100f77d803d953d01330ad6dc53bfc8ff02e6a7e 100644 (file)
@@ -646,19 +646,8 @@ function wp_schedule_update_checks() {
        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' );
 }
 
 /**
index 81e47da23c5b5701f9f9ef96aa6c14bf6dfade46..6ccf893ded47fe5f50254dde0ed5e93425e5544e 100644 (file)
@@ -4,7 +4,7 @@
  *
  * @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.
index 5a2f58c5dcab35de38f1717f5bf9f564b916d390..cfc5b93cc298879447b588ceddf8e4cd4ea96a4b 100644 (file)
@@ -607,9 +607,9 @@ function dynamic_sidebar( $index = 1 ) {
        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;
                        }
index 169e129e28edbc02e984cf9ebe14bdd15c7b684b..b477a6e42edd19c81ed8b9ec426077474d5185be 100755 (executable)
@@ -76,7 +76,7 @@ class WP_Widget_RSS extends WP_Widget {
                $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 ) {
index ea3afc6c451a5f7fd7566a847a7f58fe48835871..a9589f56859a0a2890445687e614ec88c42801fc 100644 (file)
@@ -711,8 +711,7 @@ case 'register' :
        $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>
@@ -878,7 +877,7 @@ default:
        }
 ?>
 
-<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>