WordPress ReCaptcha Integration - Version 1.1.0

Version Description

  • Feature: Prevent Lockout - Admins can still log in when the API keys are invalid
  • Feature: Customize error message on contact form 7 and ninja forms
  • Filters: add actions recaptcha_print, print_comments_recaptcha and filters recaptcha_valid, recaptcha_error for custom forms.
  • Redesign: settings page
  • Fix: woocommerce checkout form: fix unnecessary captcha test on new customer registration
  • Fix: settings: testing keys for multiple times
  • Fix: settings: key setup -> cancel button target
  • Fix: settings: test keys only with a nocaptcha
Download this release

Release Info

Developer podpirate
Plugin Icon 128x128 WordPress ReCaptcha Integration
Version 1.1.0
Comparing to
See all releases

Code changes from version 1.0.9 to 1.1.0

css/recaptcha-options.css CHANGED
@@ -3,11 +3,13 @@
3
  }
4
  .recaptcha-select-theme label {
5
  display:inline-block;
6
- margin:1em;
7
- padding:1em;
8
  background-color:transparent;
9
  border-radius:10px;
10
  max-width:200px;
 
 
11
  }
12
  .recaptcha-select-theme input[type="radio"] {
13
  display:none;
@@ -15,6 +17,8 @@
15
  .recaptcha-select-theme input[type="radio"]:checked + label {
16
  background-color:#0074A2;
17
  color:#fff;
 
 
18
  box-shadow: rgba(0,0,0,.3) 0 0 15px 5px;
19
  }
20
  .recaptcha-select-theme .title {
@@ -40,10 +44,68 @@
40
  border-radius:10px;
41
  border:5px dashed #444;
42
  }
43
- .recaptcha-select-theme.flavor-grecaptcha .flavor-recaptcha,
44
- .recaptcha-select-theme.flavor-recaptcha .flavor-grecaptcha {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  display:none;
46
  }
47
  .warning {
48
  color:red;
49
- }
 
 
 
 
 
 
 
 
 
 
3
  }
4
  .recaptcha-select-theme label {
5
  display:inline-block;
6
+ margin:30px;
7
+ padding:0px;
8
  background-color:transparent;
9
  border-radius:10px;
10
  max-width:200px;
11
+ -webkit-transition: all 0.125s ease-in-out;
12
+ transition: all 0.125s ease-in-out;
13
  }
14
  .recaptcha-select-theme input[type="radio"] {
15
  display:none;
17
  .recaptcha-select-theme input[type="radio"]:checked + label {
18
  background-color:#0074A2;
19
  color:#fff;
20
+ margin:15px;
21
+ padding:15px;
22
  box-shadow: rgba(0,0,0,.3) 0 0 15px 5px;
23
  }
24
  .recaptcha-select-theme .title {
44
  border-radius:10px;
45
  border:5px dashed #444;
46
  }
47
+
48
+
49
+
50
+ .recaptcha-onoff {
51
+ }
52
+ .recaptcha-onoff input[type="checkbox"] {
53
+ display:none;
54
+ }
55
+ .recaptcha-onoff label {
56
+ display:block;
57
+ width:250px;
58
+ color:#999;
59
+ border-radius:7px;
60
+ border:2px solid #bbb;
61
+ float:left;
62
+ margin:0.5em 1em;
63
+ -webkit-transition: all 0.125s ease-in-out;
64
+ transition: all 0.125s ease-in-out;
65
+ }
66
+ .recaptcha-onoff label .title {
67
+ font-weight:bold;
68
+ display:block;
69
+ padding:0.5em 0.5em 0.5em 2.5em;
70
+ }
71
+ .recaptcha-onoff label .dashicons-lock {
72
+ position:absolute;
73
+ font-size:1.5em;
74
+ float:left;
75
+ padding:6px;
76
+ color:#bbb;
77
+ -webkit-transition: all 0.25s cubic-bezier(0, 1.8, 1, 1.8);
78
+ transition: all 0.25s cubic-bezier(0, 1.8, 1, 1.8);
79
+ }
80
+ .recaptcha-onoff input[type="checkbox"]:checked + label {
81
+ background-color:#fff;
82
+ border-color:#0074A2;
83
+ border-style:solid;
84
+ color:#333;
85
+ box-shadow: rgba(0,0,0,.5) 0 0 5px 0px;
86
+ }
87
+ .recaptcha-onoff input[type="checkbox"]:checked + label .dashicons-lock {
88
+ color:#0074A2;
89
+ font-size:2em;
90
+ padding-left:4px;
91
+ padding-right:8px;
92
+ padding-top:2px;
93
+ }
94
+
95
+ .flavor-grecaptcha .flavor-recaptcha,
96
+ .flavor-recaptcha .flavor-grecaptcha {
97
  display:none;
98
  }
99
  .warning {
100
  color:red;
101
+ }
102
+
103
+
104
+
105
+
106
+
107
+ .recaptcha-explain .loading .spinner {
108
+ display:inline-block;
109
+ float:none;
110
+ vertical-align:middle;
111
+ }
inc/class-wp_recaptcha_captcha.php CHANGED
@@ -24,6 +24,28 @@ abstract class WP_reCaptcha_Captcha {
24
  return $this->supported_languages;
25
  }
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  /**
28
  * Get last result of recaptcha check
29
  * @return string recaptcha html
24
  return $this->supported_languages;
25
  }
26
 
27
+ /**
28
+ * Get recaptcha language code that matches input language code
29
+ *
30
+ * @param $lang string language code
31
+ * @return string recaptcha language code if supported by current flavor, empty string otherwise
32
+ */
33
+ public function get_language( $lang ) {
34
+ $lang = str_replace( '_' , '-' , $lang );
35
+
36
+ // direct hit: return it.
37
+ if ( isset($this->supported_languages[$lang]) )
38
+ return $lang;
39
+
40
+ // remove countrycode, try again
41
+ $lang = preg_replace('/-(.*)$/','',$lang);
42
+ if ( isset($this->supported_languages[$lang]) )
43
+ return $lang;
44
+
45
+ // lang does not exist.
46
+ return '';
47
+ }
48
+
49
  /**
50
  * Get last result of recaptcha check
51
  * @return string recaptcha html
inc/class-wp_recaptcha_contactform7.php CHANGED
@@ -34,9 +34,18 @@ class WP_reCaptcha_ContactForm7 {
34
  add_action( 'admin_init', array( &$this , 'add_tag_generator_recaptcha' ), 45 );
35
  add_filter( 'wpcf7_validate_recaptcha', array( &$this , 'recaptcha_validation_filter' ) , 10, 2 );
36
  add_filter( 'wpcf7_validate_recaptcha*', array( &$this , 'recaptcha_validation_filter' ) , 10, 2 );
 
37
  }
38
 
39
-
 
 
 
 
 
 
 
 
40
  function add_shortcode_recaptcha() {
41
  wpcf7_add_shortcode(
42
  array( 'recaptcha','recaptcha*'),
@@ -92,6 +101,7 @@ class WP_reCaptcha_ContactForm7 {
92
  <tr><td>
93
  <?php echo esc_html( __( 'Name', 'contact-form-7' ) ); ?><br />
94
  <input type="text" name="name" class="tg-name oneline" />
 
95
  </td><td><?php
96
  if ( 'grecaptcha' === WP_reCaptcha::instance()->get_option('recaptcha_flavor') ) {
97
  $themes = WP_reCaptcha::instance()->captcha_instance()->get_supported_themes();
@@ -109,6 +119,9 @@ class WP_reCaptcha_ContactForm7 {
109
  $(document).on('change','[name="recaptcha-theme-ui"]',function(){
110
  $(this).next('[name="theme"]').val( $(this).val() ).trigger('change');
111
  });
 
 
 
112
 
113
  })(jQuery)
114
  </script><?php
@@ -134,7 +147,10 @@ class WP_reCaptcha_ContactForm7 {
134
  $name = $tag->name;
135
 
136
  if ( ! WP_reCaptcha::instance()->recaptcha_check() ) {
137
- $message = __("The Captcha didn’t verify.",'wp-recaptcha-integration');
 
 
 
138
  if ( method_exists($result, 'invalidate' ) ) { // since CF7 4.1
139
  $result->invalidate( $tag , $message );
140
  } else {
34
  add_action( 'admin_init', array( &$this , 'add_tag_generator_recaptcha' ), 45 );
35
  add_filter( 'wpcf7_validate_recaptcha', array( &$this , 'recaptcha_validation_filter' ) , 10, 2 );
36
  add_filter( 'wpcf7_validate_recaptcha*', array( &$this , 'recaptcha_validation_filter' ) , 10, 2 );
37
+ add_filter( 'wpcf7_messages' , array( &$this , 'add_error_message' ) );
38
  }
39
 
40
+
41
+ function add_error_message( $messages ) {
42
+ $messages['wp_recaptcha_invalid'] = array(
43
+ 'description' => __( "Google reCaptcha does not validate.", 'wp-recaptcha-integration' ),
44
+ 'default' => __("The Captcha didn’t verify.",'wp-recaptcha-integration')
45
+ );
46
+ return $messages;
47
+ }
48
+
49
  function add_shortcode_recaptcha() {
50
  wpcf7_add_shortcode(
51
  array( 'recaptcha','recaptcha*'),
101
  <tr><td>
102
  <?php echo esc_html( __( 'Name', 'contact-form-7' ) ); ?><br />
103
  <input type="text" name="name" class="tg-name oneline" />
104
+ <?php echo esc_html( __( 'Error message', 'wp-recaptcha-integration' ) ); ?><br />
105
  </td><td><?php
106
  if ( 'grecaptcha' === WP_reCaptcha::instance()->get_option('recaptcha_flavor') ) {
107
  $themes = WP_reCaptcha::instance()->captcha_instance()->get_supported_themes();
119
  $(document).on('change','[name="recaptcha-theme-ui"]',function(){
120
  $(this).next('[name="theme"]').val( $(this).val() ).trigger('change');
121
  });
122
+ $(document).on('change','[name="recaptcha-message-ui"]',function(){
123
+ $(this).next('[name="message"]').val( $(this).val() ).trigger('change');
124
+ });
125
 
126
  })(jQuery)
127
  </script><?php
147
  $name = $tag->name;
148
 
149
  if ( ! WP_reCaptcha::instance()->recaptcha_check() ) {
150
+ $message = wpcf7_get_message( 'wp_recaptcha_invalid' );
151
+ if ( ! $message )
152
+ $message = __("The Captcha didn’t verify.",'wp-recaptcha-integration');
153
+
154
  if ( method_exists($result, 'invalidate' ) ) { // since CF7 4.1
155
  $result->invalidate( $tag , $message );
156
  } else {
inc/class-wp_recaptcha_ninjaforms.php CHANGED
@@ -27,10 +27,27 @@ class WP_reCaptcha_NinjaForms {
27
  * Prevent from creating more than one instance
28
  */
29
  private function __construct() {
30
- add_action('init', array(&$this,'register_field_recaptcha'));
31
- add_action('wp_footer',array(&$this,'recaptcha_script'),9999);
32
- add_filter('ninja_forms_field',array(&$this,'recaptcha_field_data'),10,2);
 
 
33
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  function register_field_recaptcha(){
35
  $args = array(
36
  'name' => __( 'reCAPTCHA', 'wp-recaptcha-integration' ),
@@ -131,14 +148,17 @@ class WP_reCaptcha_NinjaForms {
131
 
132
  function field_recaptcha_pre_process( $field_id, $user_value ){
133
  global $ninja_forms_processing;
134
- $recaptcha_error = __("<strong>Error:</strong> the Captcha didn’t verify.",'wp-recaptcha-integration');
 
 
 
 
135
 
136
  $field_row = ninja_forms_get_field_by_id($field_id);
137
  $field_data = $field_row['data'];
138
  $form_row = ninja_forms_get_form_by_field_id($field_id);
139
  $form_id = $form_row['id'];
140
 
141
-
142
  $require_recaptcha = WP_reCaptcha::instance()->is_required();
143
 
144
  if ( $ninja_forms_processing->get_action() != 'save' && $ninja_forms_processing->get_action() != 'mp_save' && $require_recaptcha && ! WP_reCaptcha::instance()->recaptcha_check() ){
27
  * Prevent from creating more than one instance
28
  */
29
  private function __construct() {
30
+ add_action( 'init', array(&$this,'register_field_recaptcha'));
31
+ add_action( 'init' , array( &$this , 'late_init' ) , 99 );
32
+ add_action( 'wp_footer' , array(&$this,'recaptcha_script'),9999 );
33
+ add_filter( 'ninja_forms_field' , array(&$this,'recaptcha_field_data'), 10, 2 );
34
+ add_filter( 'ninja_forms_settings' , array( &$this , 'nf_settings' ) );
35
  }
36
+ function nf_settings( $settings ) {
37
+ if ( ! isset($settings['wp_recaptcha_invalid']) )
38
+ $settings['wp_recaptcha_invalid'] = __("The Captcha didn’t verify.",'wp-recaptcha-integration');
39
+ return $settings;
40
+ }
41
+ function late_init() {
42
+ global $ninja_forms_tabs_metaboxes;
43
+
44
+ $ninja_forms_tabs_metaboxes['ninja-forms-settings']['label_settings']['label_labels']['settings'][] = array(
45
+ 'name' => 'wp_recaptcha_invalid',
46
+ 'type' => 'text',
47
+ 'label' => __( "Google reCaptcha does not validate.", 'wp-recaptcha-integration' ),
48
+ );
49
+ }
50
+
51
  function register_field_recaptcha(){
52
  $args = array(
53
  'name' => __( 'reCAPTCHA', 'wp-recaptcha-integration' ),
148
 
149
  function field_recaptcha_pre_process( $field_id, $user_value ){
150
  global $ninja_forms_processing;
151
+ $plugin_settings = nf_get_settings();
152
+
153
+ $recaptcha_error = __("The Captcha didn’t verify.",'wp-recaptcha-integration');
154
+ if ( isset( $plugin_settings['wp_recaptcha_invalid'] ) )
155
+ $recaptcha_error = $plugin_settings['wp_recaptcha_invalid'];
156
 
157
  $field_row = ninja_forms_get_field_by_id($field_id);
158
  $field_data = $field_row['data'];
159
  $form_row = ninja_forms_get_form_by_field_id($field_id);
160
  $form_id = $form_row['id'];
161
 
 
162
  $require_recaptcha = WP_reCaptcha::instance()->is_required();
163
 
164
  if ( $ninja_forms_processing->get_action() != 'save' && $ninja_forms_processing->get_action() != 'mp_save' && $require_recaptcha && ! WP_reCaptcha::instance()->recaptcha_check() ){
inc/class-wp_recaptcha_nocaptcha.php CHANGED
@@ -92,6 +92,28 @@ class WP_reCaptcha_NoCaptcha extends WP_reCaptcha_Captcha {
92
  ),
93
  );
94
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
 
96
  public function print_head() {
97
  ?><style type="text/css">
@@ -103,10 +125,11 @@ class WP_reCaptcha_NoCaptcha extends WP_reCaptcha_Captcha {
103
 
104
 
105
  public function print_foot() {
 
106
  $language_param = '';
107
  if ( $language_code = apply_filters( 'wp_recaptcha_language' , WP_reCaptcha::instance()->get_option( 'recaptcha_language' ) ) )
108
  $language_param = "&hl=$language_code";
109
-
110
  ?><script type="text/javascript">
111
  var recaptcha_widgets={};
112
  function recaptchaLoadCallback(){
@@ -115,18 +138,20 @@ class WP_reCaptcha_NoCaptcha extends WP_reCaptcha_Captcha {
115
  } catch(err){
116
  return;
117
  }
118
- var e=document.getElementsByClassName('g-recaptcha'),form_submits;
119
 
120
  for (var i=0;i<e.length;i++) {
121
  (function(el){
122
  <?php if ( WP_reCaptcha::instance()->get_option( 'recaptcha_disable_submit' ) ) { ?>
123
  var form_submits = get_form_submits(el).setEnabled(false),wid;
 
 
124
  <?php } ?>
125
  // check if captcha element is unrendered
 
126
  if ( ! el.childNodes.length) {
127
-
128
  wid = grecaptcha.render(el,{
129
- 'sitekey':'<?php echo WP_reCaptcha::instance()->get_option('recaptcha_publickey'); ?>',
130
  'theme':el.getAttribute('data-theme') || '<?php echo WP_reCaptcha::instance()->get_option('recaptcha_theme'); ?>'
131
  <?php if ( WP_reCaptcha::instance()->get_option( 'recaptcha_disable_submit' ) ) { ?>
132
  ,
@@ -144,7 +169,10 @@ class WP_reCaptcha_NoCaptcha extends WP_reCaptcha_Captcha {
144
 
145
  // if jquery present re-render jquery/ajax loaded captcha elements
146
  if ( typeof jQuery !== 'undefined' )
147
- jQuery(document).ajaxComplete( recaptchaLoadCallback );
 
 
 
148
 
149
  </script><?php
150
  ?><script src="https://www.google.com/recaptcha/api.js?onload=recaptchaLoadCallback&render=explicit<?php echo $language_param ?>" async defer></script><?php
@@ -173,7 +201,7 @@ class WP_reCaptcha_NoCaptcha extends WP_reCaptcha_Captcha {
173
  public function check() {
174
  $private_key = WP_reCaptcha::instance()->get_option( 'recaptcha_privatekey' );
175
  $user_response = isset( $_REQUEST['g-recaptcha-response'] ) ? $_REQUEST['g-recaptcha-response'] : false;
176
- if ( $user_response ) {
177
  if ( ! $this->_last_result ) {
178
  $remote_ip = $_SERVER['REMOTE_ADDR'];
179
  $url = "https://www.google.com/recaptcha/api/siteverify?secret=$private_key&response=$user_response&remoteip=$remote_ip";
92
  ),
93
  );
94
  }
95
+ /**
96
+ * Override method
97
+ * Get recaptcha language code that matches input language code
98
+ * Sometimes WP uses different locales the the ones supported by nocaptcha.
99
+ *
100
+ * @param $lang string language code
101
+ * @return string recaptcha language code if supported by current flavor, empty string otherwise
102
+ */
103
+ public function get_language( $lang ) {
104
+ /*
105
+ Map WP locale to recatcha locale.
106
+ */
107
+ $mapping = array(
108
+ 'es_MX' => 'es-419',
109
+ 'es_PE' => 'es-419',
110
+ 'es_CL' => 'es-419',
111
+ 'he_IL' => 'iw',
112
+ );
113
+ if ( isset( $mapping[$lang] ) )
114
+ $lang = $mapping[$lang];
115
+ return parent::get_language( $lang );
116
+ }
117
 
118
  public function print_head() {
119
  ?><style type="text/css">
125
 
126
 
127
  public function print_foot() {
128
+ $sitekey = WP_reCaptcha::instance()->get_option('recaptcha_publickey');
129
  $language_param = '';
130
  if ( $language_code = apply_filters( 'wp_recaptcha_language' , WP_reCaptcha::instance()->get_option( 'recaptcha_language' ) ) )
131
  $language_param = "&hl=$language_code";
132
+
133
  ?><script type="text/javascript">
134
  var recaptcha_widgets={};
135
  function recaptchaLoadCallback(){
138
  } catch(err){
139
  return;
140
  }
141
+ var e=document.querySelectorAll ? document.querySelectorAll('.g-recaptcha') : document.getElementsByClassName('g-recaptcha'),form_submits;
142
 
143
  for (var i=0;i<e.length;i++) {
144
  (function(el){
145
  <?php if ( WP_reCaptcha::instance()->get_option( 'recaptcha_disable_submit' ) ) { ?>
146
  var form_submits = get_form_submits(el).setEnabled(false),wid;
147
+ <?php } else { ?>
148
+ var wid;
149
  <?php } ?>
150
  // check if captcha element is unrendered
151
+ console.log(el);
152
  if ( ! el.childNodes.length) {
 
153
  wid = grecaptcha.render(el,{
154
+ 'sitekey':'<?php echo $sitekey ?>',
155
  'theme':el.getAttribute('data-theme') || '<?php echo WP_reCaptcha::instance()->get_option('recaptcha_theme'); ?>'
156
  <?php if ( WP_reCaptcha::instance()->get_option( 'recaptcha_disable_submit' ) ) { ?>
157
  ,
169
 
170
  // if jquery present re-render jquery/ajax loaded captcha elements
171
  if ( typeof jQuery !== 'undefined' )
172
+ jQuery(document).ajaxComplete( function(evt,xhr,set){
173
+ if( xhr.responseText && xhr.responseText.indexOf('<?php echo $sitekey ?>') !== -1)
174
+ recaptchaLoadCallback();
175
+ } );
176
 
177
  </script><?php
178
  ?><script src="https://www.google.com/recaptcha/api.js?onload=recaptchaLoadCallback&render=explicit<?php echo $language_param ?>" async defer></script><?php
201
  public function check() {
202
  $private_key = WP_reCaptcha::instance()->get_option( 'recaptcha_privatekey' );
203
  $user_response = isset( $_REQUEST['g-recaptcha-response'] ) ? $_REQUEST['g-recaptcha-response'] : false;
204
+ if ( $user_response !== false ) {
205
  if ( ! $this->_last_result ) {
206
  $remote_ip = $_SERVER['REMOTE_ADDR'];
207
  $url = "https://www.google.com/recaptcha/api/siteverify?secret=$private_key&response=$user_response&remoteip=$remote_ip";
inc/class-wp_recaptcha_options.php CHANGED
@@ -121,6 +121,7 @@ class WP_reCaptcha_Options {
121
  * @param old old option value
122
  */
123
  function update_option_recaptcha_apikey( $new , $old ){
 
124
  add_filter( 'wp_redirect' , array( &$this , 'remove_new_apikey_url' ) );
125
  return $new;
126
  }
@@ -131,6 +132,7 @@ class WP_reCaptcha_Options {
131
  * @param value option value
132
  */
133
  function add_option_recaptcha_apikey( $option , $value ){
 
134
  if ( in_array( $option , array('recaptcha_publickey','recaptcha_privatekey') ) )
135
  add_filter( 'wp_redirect' , array( &$this , 'remove_new_apikey_url' ) );
136
  }
@@ -160,25 +162,32 @@ class WP_reCaptcha_Options {
160
  * admin init hook. Setup settings according.
161
  */
162
  function admin_init( ) {
163
- $has_api_key = WP_reCaptcha::instance()->has_api_key();
164
  if ( ! $has_api_key && current_user_can( 'manage_options' ) ) {
165
  add_action('admin_notices',array( &$this , 'api_key_notice'));
166
  }
167
 
168
  $this->enter_api_key = ! $has_api_key || ( isset($_REQUEST['recaptcha-action']) && $_REQUEST['recaptcha-action'] == 'recaptcha-set-api-key');
 
 
 
 
 
 
 
 
169
  if ( $this->enter_api_key ) {
170
  // no API Key. Let the user enter it.
171
  register_setting( 'recaptcha_options', 'recaptcha_publickey' , 'trim' );
172
  register_setting( 'recaptcha_options', 'recaptcha_privatekey' , 'trim' );
173
- add_settings_field('recaptcha_publickey', __('Public Key','wp-recaptcha-integration'), array(&$this,'secret_input_text'), 'recaptcha', 'recaptcha_apikey' , array('name'=>'recaptcha_publickey') );
174
- add_settings_field('recaptcha_privatekey', __('Private Key','wp-recaptcha-integration'), array(&$this,'secret_input_text'), 'recaptcha', 'recaptcha_apikey', array('name'=>'recaptcha_privatekey'));
175
- add_settings_section('recaptcha_apikey', __( 'Connecting' , 'wp-recaptcha-integration' ), array(&$this,'explain_apikey'), 'recaptcha');
176
  if ( $has_api_key ) {
177
  add_settings_field('cancel', '' , array(&$this,'cancel_enter_api_key'), 'recaptcha', 'recaptcha_apikey' );
178
  }
179
  } else {
180
  // API Key. Add test tool.
181
- add_settings_section('recaptcha_apikey', __( 'Connecting' , 'wp-recaptcha-integration' ), array(&$this,'explain_apikey'), 'recaptcha');
182
  add_action('wp_ajax_recaptcha-test-api-key' , array( &$this , 'ajax_test_api_key' ) );
183
  add_action('wp_ajax_recaptcha-test-verification' , array( &$this , 'ajax_test_api_key_verification' ) );
184
  }
@@ -191,11 +200,9 @@ class WP_reCaptcha_Options {
191
  register_setting( 'recaptcha_options', 'recaptcha_theme' , array( &$this , 'sanitize_theme' ) );
192
  register_setting( 'recaptcha_options', 'recaptcha_disable_submit' , 'intval');
193
 
194
- add_settings_field('recaptcha_language', __( 'Language Settings' ), array(&$this,'select_language'), 'recaptcha', 'recaptcha_options');
195
-
196
 
197
  add_settings_field('recaptcha_flavor', __('Flavor','wp-recaptcha-integration'),
198
- array(&$this,'input_radio'), 'recaptcha', 'recaptcha_options',
199
  array(
200
  'name' => 'recaptcha_flavor',
201
  'items' => array(
@@ -209,15 +216,17 @@ class WP_reCaptcha_Options {
209
  ),
210
  ),
211
  ) );
212
-
213
- add_settings_field('recaptcha_theme', __('Theme','wp-recaptcha-integration'), array(&$this,'select_theme'), 'recaptcha', 'recaptcha_options');
 
 
214
 
215
  add_settings_field('recaptcha_disable_submit', __('Disable Submit Button','wp-recaptcha-integration'),
216
- array(&$this,'input_checkbox'), 'recaptcha', 'recaptcha_options' ,
217
  array('name'=>'recaptcha_disable_submit','label'=>__( 'Disable Form Submit Button until no-captcha is entered.' ,'wp-recaptcha-integration' ) )
218
  );
219
-
220
  }
 
221
  if ( ! WP_reCaptcha::is_network_activated() || is_network_admin() ) {
222
  // network options
223
  register_setting( 'recaptcha_options', 'recaptcha_enable_comments' , 'intval');
@@ -229,31 +238,32 @@ class WP_reCaptcha_Options {
229
  register_setting( 'recaptcha_options', 'recaptcha_enable_wc_order' , 'intval');
230
 
231
  register_setting( 'recaptcha_options', 'recaptcha_disable_for_known_users' , 'intval');
232
-
 
233
  add_settings_field('recaptcha_enable_comments', __('Protect Comments','wp-recaptcha-integration'),
234
- array(&$this,'input_checkbox'), 'recaptcha', 'recaptcha_options' ,
235
  array('name'=>'recaptcha_enable_comments','label'=>__( 'Protect comment forms with recaptcha.' ,'wp-recaptcha-integration' ) )
236
  );
237
 
238
  add_settings_field('recaptcha_enable_signup', __('Protect Signup','wp-recaptcha-integration'),
239
- array(&$this,'input_checkbox'), 'recaptcha', 'recaptcha_options',
240
  array('name'=>'recaptcha_enable_signup','label'=>__( 'Protect signup form with recaptcha.','wp-recaptcha-integration' ) )
241
  );
242
 
243
  add_settings_field('recaptcha_enable_login', __('Protect Login','wp-recaptcha-integration'),
244
- array(&$this,'input_checkbox'), 'recaptcha', 'recaptcha_options' ,
245
  array('name'=>'recaptcha_enable_login','label'=>__( 'Protect Login form with recaptcha.','wp-recaptcha-integration' ))
246
  );
247
 
248
  add_settings_field('recaptcha_enable_lostpw', __('Protect Lost Password','wp-recaptcha-integration'),
249
- array(&$this,'input_checkbox'), 'recaptcha', 'recaptcha_options' ,
250
  array('name'=>'recaptcha_enable_lostpw','label'=>__( 'Protect Lost Password form with recaptcha.','wp-recaptcha-integration' ))
251
  );
252
  // woocommerce integration
253
  if ( function_exists('WC') ) {
254
  $wc_warn = WP_reCaptcha::instance()->get_option('recaptcha_enable_wc_order') && WP_reCaptcha::instance()->get_option('recaptcha_flavor') !== 'grecaptcha';
255
  add_settings_field('recaptcha_enable_wc_order', __('Protect WooCommerce Checkout','wp-recaptcha-integration'),
256
- array(&$this,'input_checkbox'), 'recaptcha', 'recaptcha_options' ,
257
  array(
258
  'name'=>'recaptcha_enable_wc_order',
259
  'label'=>__( 'Protect wooCommerce Checkout with a recaptcha.','wp-recaptcha-integration' ),
@@ -265,12 +275,54 @@ class WP_reCaptcha_Options {
265
  add_settings_error('recaptcha',2,__( 'The Old Style recaptcha doesn‘t work together with the WooCommerce checkout form. The Captcha will not be displayed,' ,'wp-recaptcha-integration' ) );
266
  }
267
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
268
  add_settings_field('recaptcha_disable_for_known_users', __('Disable for known users','wp-recaptcha-integration'),
269
- array(&$this,'input_checkbox'), 'recaptcha', 'recaptcha_options' ,
270
  array('name'=>'recaptcha_disable_for_known_users','label'=>__( 'Disable reCaptcha verification for logged in users.','wp-recaptcha-integration' ))
271
  );
 
 
 
 
 
 
 
 
272
  }
273
- add_settings_section('recaptcha_options', __( 'Features' , 'wp-recaptcha-integration' ), '__return_false', 'recaptcha');
274
 
275
  if ( ! WP_reCaptcha::instance()->get_option( 'recaptcha_publickey' ) || ! WP_reCaptcha::instance()->get_option( 'recaptcha_privatekey' ) )
276
  add_settings_error('recaptcha',1,__('Please configure the public and private key. <a href="http://www.google.com/recaptcha/whyrecaptcha">What are you trying to tell me?</a>','wp-recaptcha-integration'),'updated');
@@ -286,7 +338,7 @@ class WP_reCaptcha_Options {
286
  $info_url = 'https://developers.google.com/recaptcha/intro';
287
  $admin_url = 'https://www.google.com/recaptcha/admin';
288
  printf(
289
- __( 'Please register your blog through the <a href="%s">Google reCAPTCHA admin page</a> and enter the public and private key in the fields below. <a href="%s">What is this all about</a>', 'wp-recaptcha-integration' ) ,
290
  $admin_url , $info_url
291
  );
292
  ?></p><?php
@@ -304,15 +356,53 @@ class WP_reCaptcha_Options {
304
  $nonce = wp_create_nonce( $action );
305
  $test_url = add_query_arg( array('_wpnonce' => $nonce , 'action' => $action ) , admin_url( 'admin-ajax.php' ) );
306
 
 
 
 
 
307
  ?><p class="submit"><?php
308
  ?><a class="button" href="<?php echo $new_url ?>"><?php _e('New API Key' , 'wp-recaptcha-integration') ?></a><?php
309
- ?><a id="test-api-key" class="button" href="<?php echo $test_url ?>"><?php _e('Test API Key' , 'wp-recaptcha-integration') ?></a><?php
310
  ?></p><?php
311
  ?></div><?php
312
  }
313
  }
314
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
315
 
 
 
 
 
 
 
 
 
 
 
 
 
 
316
  /**
317
  * Test api key ajax response.
318
  * Returns reCaptcha HTML
@@ -320,9 +410,9 @@ class WP_reCaptcha_Options {
320
  public function ajax_test_api_key() {
321
  if ( isset( $_REQUEST['_wpnonce'] ) && wp_verify_nonce( $_REQUEST['_wpnonce'] , $_REQUEST['action'] ) ) {
322
  header('Content-Type: text/html');
323
- WP_reCaptcha::instance()->recaptcha_head( 'grecaptcha' );
324
- WP_reCaptcha::instance()->recaptcha_foot( 'grecaptcha' );
325
- WP_reCaptcha::instance()->print_recaptcha_html( 'grecaptcha' );
326
  $action = 'recaptcha-test-verification';
327
  $nonce = wp_create_nonce( $action );
328
  ?><input type="hidden" name="<?php echo $action ?>-nonce" value="<?php echo $nonce ?>" /><?php
@@ -337,14 +427,14 @@ class WP_reCaptcha_Options {
337
  public function ajax_test_api_key_verification() {
338
  if ( isset( $_REQUEST['_wpnonce'] ) && wp_verify_nonce( $_REQUEST['_wpnonce'] , $_REQUEST['action'] ) ) {
339
  header('Content-Type: text/html');
340
- if ( ! WP_reCaptcha::instance()->recaptcha_check( 'grecaptcha' ) ) {
341
  $errs = array(
342
  'missing-input-secret' => __('The secret Key is missing.','wp-recaptcha-integration'),
343
  'invalid-input-secret' => __('The secret Key is invalid. You better check your domain configuration and enter it again.','wp-recaptcha-integration'),
344
  'missing-input-response' => __('The user response was missing','wp-recaptcha-integration'),
345
  'invalid-input-response' => __('Invalid user response','wp-recaptcha-integration'),
346
  );
347
- $result = WP_reCaptcha::instance()->get_last_result();
348
  if ( isset( $result['error-codes'] ) ) {
349
  foreach ( $result['error-codes'] as $err ) {
350
  ?><div class="error"><p><?php echo $errs[$err]; ?></p></div><?php
@@ -362,7 +452,7 @@ class WP_reCaptcha_Options {
362
  * checks the verification process and shows an error on fail.
363
  */
364
  public function cancel_enter_api_key() {
365
- $url = $this->remove_new_apikey_url( );
366
  ?><a class="button" href="<?php echo $url ?>"><?php _e( 'Cancel' ) ?></a><?php
367
  }
368
 
@@ -416,11 +506,46 @@ class WP_reCaptcha_Options {
416
  ?><input id="<?php echo $name ?>" type="checkbox" name="<?php echo $name ?>" value="1" <?php checked($value,1,true) ?> />
417
  <?php
418
  echo $label;
 
 
 
419
  ?></label><?php
420
- if ( $description ) {
421
- ?><p class="description"><?php echo $description ?></p><?php
422
- }
423
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
424
  /**
425
  * A Text field.
426
  * Used for api key input.
@@ -441,18 +566,23 @@ class WP_reCaptcha_Options {
441
  $option_name = 'recaptcha_language';
442
  $option_value = WP_reCaptcha::instance()->get_option( $option_name );
443
 
444
- $available_langs = WP_reCaptcha::instance()->get_supported_languages();
445
-
 
 
 
446
  ?><div class="recaptcha-select-language flavor-<?php echo $option_flavor ?>"><?php
447
- ?><select name="<?php echo $option_name ?>"><?php
448
- ?><option <?php selected($option_value,'',true); ?> value=""><?php _e( 'Automatic','wp-recaptcha-integration' ); ?></option><?php
449
- ?><option <?php selected($option_value,'WPLANG',true); ?> value="WPLANG"><?php _e( 'Site Language' ); ?></option><?php
450
- ?><optgroup label="<?php _e('Other') ?>"><?php
451
- foreach ( $available_langs as $lang => $lang_name ) {
452
- ?><option <?php selected($option_value,$lang,true); ?> value="<?php echo $lang; ?>"><?php _e( $lang_name ); ?></option><?php
453
- }
454
- ?></optgroup><?php
455
- ?></select><?php
 
 
456
  ?></div><?php
457
  }
458
  /**
@@ -461,37 +591,6 @@ class WP_reCaptcha_Options {
461
  public function select_theme() {
462
  $option_name = 'recaptcha_theme';
463
 
464
- // $themes = array(
465
- // 'light' => array(
466
- // 'label' => __('Light','wp-recaptcha-integration') ,
467
- // 'flavor' => 'grecaptcha',
468
- // ),
469
- // 'dark' => array(
470
- // 'label' => __('Dark','wp-recaptcha-integration') ,
471
- // 'flavor' => 'grecaptcha',
472
- // ),
473
- //
474
- // 'red' => array(
475
- // 'label' => __('Red','wp-recaptcha-integration') ,
476
- // 'flavor' => 'recaptcha',
477
- // ),
478
- // 'white' => array(
479
- // 'label' => __('White','wp-recaptcha-integration') ,
480
- // 'flavor' => 'recaptcha',
481
- // ),
482
- // 'blackglass' => array(
483
- // 'label' => __('Black Glass','wp-recaptcha-integration') ,
484
- // 'flavor' => 'recaptcha',
485
- // ),
486
- // 'clean' => array(
487
- // 'label' => __('Clean','wp-recaptcha-integration') ,
488
- // 'flavor' => 'recaptcha',
489
- // ),
490
- // 'custom' => array(
491
- // 'label' => __('Custom','wp-recaptcha-integration') ,
492
- // 'flavor' => 'recaptcha',
493
- // ),
494
- // );
495
  $grecaptcha_themes = WP_reCaptcha_NoCaptcha::instance()->get_supported_themes();
496
  $grecaptcha_themes = array_map( array( $this , '_map_grecaptcha' ) , $grecaptcha_themes );
497
 
@@ -503,7 +602,7 @@ class WP_reCaptcha_Options {
503
  $option_theme = WP_reCaptcha::instance()->get_option($option_name);
504
  $option_flavor = WP_reCaptcha::instance()->get_option( 'recaptcha_flavor' );
505
 
506
- ?><div class="recaptcha-select-theme flavor-<?php echo $option_flavor ?>"><?php
507
 
508
  foreach ( $themes as $value => $theme ) {
509
  extract( $theme ); // label, flavor
@@ -545,11 +644,16 @@ class WP_reCaptcha_Options {
545
  }
546
 
547
  /**
548
- * Check valid recaptcha theme, check if theme fits to flavor
549
  */
550
  public function sanitize_language( $language ) {
 
 
 
 
 
551
  if ( $language != 'WPLANG' )
552
- $language = WP_reCaptcha::instance()->recaptcha_language( $language );
553
  return $language;
554
  }
555
  /**
@@ -603,7 +707,8 @@ class WP_reCaptcha_Options {
603
  * Rendering the options page
604
  */
605
  public function render_options_page() {
606
- ?><div class="wrap"><?php
 
607
  ?><h2><?php /*icon*/
608
  _e('Settings');
609
  echo ' › ';
@@ -613,7 +718,7 @@ class WP_reCaptcha_Options {
613
  ?><form action="options.php" method="post"><?php
614
  settings_fields( 'recaptcha_options' );
615
  do_settings_sections( 'recaptcha' );
616
- submit_button();
617
  ?></form><?php
618
  ?></div><?php
619
  }
121
  * @param old old option value
122
  */
123
  function update_option_recaptcha_apikey( $new , $old ){
124
+ delete_transient('recaptcha_keys_okay');
125
  add_filter( 'wp_redirect' , array( &$this , 'remove_new_apikey_url' ) );
126
  return $new;
127
  }
132
  * @param value option value
133
  */
134
  function add_option_recaptcha_apikey( $option , $value ){
135
+ delete_transient('recaptcha_keys_okay');
136
  if ( in_array( $option , array('recaptcha_publickey','recaptcha_privatekey') ) )
137
  add_filter( 'wp_redirect' , array( &$this , 'remove_new_apikey_url' ) );
138
  }
162
  * admin init hook. Setup settings according.
163
  */
164
  function admin_init( ) {
165
+ $has_api_key = WP_reCaptcha::instance()->has_api_key() && WP_reCaptcha::instance()->test_keys();
166
  if ( ! $has_api_key && current_user_can( 'manage_options' ) ) {
167
  add_action('admin_notices',array( &$this , 'api_key_notice'));
168
  }
169
 
170
  $this->enter_api_key = ! $has_api_key || ( isset($_REQUEST['recaptcha-action']) && $_REQUEST['recaptcha-action'] == 'recaptcha-set-api-key');
171
+
172
+ if ( $this->enter_api_key )
173
+ add_settings_section( 'recaptcha_apikey' , __( 'Connect' , 'wp-recaptcha-integration' ), array( &$this , 'explain_apikey' ), 'recaptcha');
174
+ add_settings_section( 'recaptcha_protection' , __( 'Protect' , 'wp-recaptcha-integration' ), array( &$this , 'explain_protection' ), 'recaptcha');
175
+ add_settings_section( 'recaptcha_styling' , __( 'Style' , 'wp-recaptcha-integration' ), array( &$this , 'explain_styling' ), 'recaptcha');
176
+ if ( ! $this->enter_api_key )
177
+ add_settings_section( 'recaptcha_apikey' , __( 'Connect' , 'wp-recaptcha-integration' ), array( &$this , 'explain_apikey' ), 'recaptcha');
178
+
179
  if ( $this->enter_api_key ) {
180
  // no API Key. Let the user enter it.
181
  register_setting( 'recaptcha_options', 'recaptcha_publickey' , 'trim' );
182
  register_setting( 'recaptcha_options', 'recaptcha_privatekey' , 'trim' );
183
+ add_settings_field('recaptcha_publickey', __('Site key','wp-recaptcha-integration'), array(&$this,'secret_input_text'), 'recaptcha', 'recaptcha_apikey' , array('name'=>'recaptcha_publickey') );
184
+ add_settings_field('recaptcha_privatekey', __('Secret key','wp-recaptcha-integration'), array(&$this,'secret_input_text'), 'recaptcha', 'recaptcha_apikey', array('name'=>'recaptcha_privatekey'));
 
185
  if ( $has_api_key ) {
186
  add_settings_field('cancel', '' , array(&$this,'cancel_enter_api_key'), 'recaptcha', 'recaptcha_apikey' );
187
  }
188
  } else {
189
  // API Key. Add test tool.
190
+ add_action('wp_ajax_recaptcha-init-test-api-key' , array( &$this , 'ajax_init_test_api_key' ) );
191
  add_action('wp_ajax_recaptcha-test-api-key' , array( &$this , 'ajax_test_api_key' ) );
192
  add_action('wp_ajax_recaptcha-test-verification' , array( &$this , 'ajax_test_api_key_verification' ) );
193
  }
200
  register_setting( 'recaptcha_options', 'recaptcha_theme' , array( &$this , 'sanitize_theme' ) );
201
  register_setting( 'recaptcha_options', 'recaptcha_disable_submit' , 'intval');
202
 
 
 
203
 
204
  add_settings_field('recaptcha_flavor', __('Flavor','wp-recaptcha-integration'),
205
+ array(&$this,'input_radio'), 'recaptcha', 'recaptcha_styling',
206
  array(
207
  'name' => 'recaptcha_flavor',
208
  'items' => array(
216
  ),
217
  ),
218
  ) );
219
+
220
+ add_settings_field('recaptcha_language', __( 'Language Settings' ), array(&$this,'select_language'), 'recaptcha', 'recaptcha_styling');
221
+
222
+ add_settings_field('recaptcha_theme', __('Theme','wp-recaptcha-integration'), array(&$this,'select_theme'), 'recaptcha', 'recaptcha_styling');
223
 
224
  add_settings_field('recaptcha_disable_submit', __('Disable Submit Button','wp-recaptcha-integration'),
225
+ array(&$this,'input_checkbox'), 'recaptcha', 'recaptcha_styling' ,
226
  array('name'=>'recaptcha_disable_submit','label'=>__( 'Disable Form Submit Button until no-captcha is entered.' ,'wp-recaptcha-integration' ) )
227
  );
 
228
  }
229
+
230
  if ( ! WP_reCaptcha::is_network_activated() || is_network_admin() ) {
231
  // network options
232
  register_setting( 'recaptcha_options', 'recaptcha_enable_comments' , 'intval');
238
  register_setting( 'recaptcha_options', 'recaptcha_enable_wc_order' , 'intval');
239
 
240
  register_setting( 'recaptcha_options', 'recaptcha_disable_for_known_users' , 'intval');
241
+
242
+ /*
243
  add_settings_field('recaptcha_enable_comments', __('Protect Comments','wp-recaptcha-integration'),
244
+ array(&$this,'input_check_onoff'), 'recaptcha', 'recaptcha_protection' ,
245
  array('name'=>'recaptcha_enable_comments','label'=>__( 'Protect comment forms with recaptcha.' ,'wp-recaptcha-integration' ) )
246
  );
247
 
248
  add_settings_field('recaptcha_enable_signup', __('Protect Signup','wp-recaptcha-integration'),
249
+ array(&$this,'input_check_onoff'), 'recaptcha', 'recaptcha_protection',
250
  array('name'=>'recaptcha_enable_signup','label'=>__( 'Protect signup form with recaptcha.','wp-recaptcha-integration' ) )
251
  );
252
 
253
  add_settings_field('recaptcha_enable_login', __('Protect Login','wp-recaptcha-integration'),
254
+ array(&$this,'input_check_onoff'), 'recaptcha', 'recaptcha_protection' ,
255
  array('name'=>'recaptcha_enable_login','label'=>__( 'Protect Login form with recaptcha.','wp-recaptcha-integration' ))
256
  );
257
 
258
  add_settings_field('recaptcha_enable_lostpw', __('Protect Lost Password','wp-recaptcha-integration'),
259
+ array(&$this,'input_check_onoff'), 'recaptcha', 'recaptcha_protection' ,
260
  array('name'=>'recaptcha_enable_lostpw','label'=>__( 'Protect Lost Password form with recaptcha.','wp-recaptcha-integration' ))
261
  );
262
  // woocommerce integration
263
  if ( function_exists('WC') ) {
264
  $wc_warn = WP_reCaptcha::instance()->get_option('recaptcha_enable_wc_order') && WP_reCaptcha::instance()->get_option('recaptcha_flavor') !== 'grecaptcha';
265
  add_settings_field('recaptcha_enable_wc_order', __('Protect WooCommerce Checkout','wp-recaptcha-integration'),
266
+ array(&$this,'input_check_onoff'), 'recaptcha', 'recaptcha_protection' ,
267
  array(
268
  'name'=>'recaptcha_enable_wc_order',
269
  'label'=>__( 'Protect wooCommerce Checkout with a recaptcha.','wp-recaptcha-integration' ),
275
  add_settings_error('recaptcha',2,__( 'The Old Style recaptcha doesn‘t work together with the WooCommerce checkout form. The Captcha will not be displayed,' ,'wp-recaptcha-integration' ) );
276
  }
277
  }
278
+ /*/
279
+ $protect_settings = array();
280
+ $protect_settings[] = array(
281
+ 'name' => 'recaptcha_enable_comments',
282
+ 'label' => __('Comment Form','wp-recaptcha-integration'),
283
+ 'class' => '',
284
+ );
285
+ $protect_settings[] = array(
286
+ 'name' => 'recaptcha_enable_signup',
287
+ 'label' => __('Signup Form','wp-recaptcha-integration'),
288
+ 'class' => '',
289
+ );
290
+ $protect_settings[] = array(
291
+ 'name' => 'recaptcha_enable_login',
292
+ 'label' => __('Login Form','wp-recaptcha-integration'),
293
+ 'class' => '',
294
+ );
295
+ $protect_settings[] = array(
296
+ 'name' => 'recaptcha_enable_lostpw',
297
+ 'label' => __('Lost Password Form','wp-recaptcha-integration'),
298
+ 'class' => '',
299
+ );
300
+ if ( function_exists('WC') ) {
301
+ $wc_warn = WP_reCaptcha::instance()->get_option('recaptcha_enable_wc_order') && WP_reCaptcha::instance()->get_option('recaptcha_flavor') !== 'grecaptcha';
302
+ $protect_settings[] = array(
303
+ 'name'=>'recaptcha_enable_wc_order',
304
+ 'label'=>__( 'woocommerce Checkout','wp-recaptcha-integration' ),
305
+ 'class' => 'flavor-grecaptcha',
306
+ );
307
+ }
308
+ add_settings_field('recaptcha_protection', __('Forms to protect','wp-recaptcha-integration'),
309
+ array(&$this,'input_protect'), 'recaptcha', 'recaptcha_protection' ,
310
+ $protect_settings
311
+ );
312
+
313
  add_settings_field('recaptcha_disable_for_known_users', __('Disable for known users','wp-recaptcha-integration'),
314
+ array(&$this,'input_checkbox'), 'recaptcha', 'recaptcha_protection' ,
315
  array('name'=>'recaptcha_disable_for_known_users','label'=>__( 'Disable reCaptcha verification for logged in users.','wp-recaptcha-integration' ))
316
  );
317
+ add_settings_field('recaptcha_lockout', __('Prevent lockout','wp-recaptcha-integration'),
318
+ array(&$this,'input_checkbox'), 'recaptcha', 'recaptcha_protection' ,
319
+ array(
320
+ 'name'=>'recaptcha_lockout',
321
+ 'label'=>__( 'Allow administrator to log in if API keys do not work.','wp-recaptcha-integration' ),
322
+ 'description' => __( 'When the captcha verification fails, and the private or public API key does not work the plugin will let you in anyway. Please note that with this option checked plus a broken keypair your site will be open to brute force attacks, that try to guess an administrator password.','wp-recaptcha-integration' ),
323
+ )
324
+ );
325
  }
 
326
 
327
  if ( ! WP_reCaptcha::instance()->get_option( 'recaptcha_publickey' ) || ! WP_reCaptcha::instance()->get_option( 'recaptcha_privatekey' ) )
328
  add_settings_error('recaptcha',1,__('Please configure the public and private key. <a href="http://www.google.com/recaptcha/whyrecaptcha">What are you trying to tell me?</a>','wp-recaptcha-integration'),'updated');
338
  $info_url = 'https://developers.google.com/recaptcha/intro';
339
  $admin_url = 'https://www.google.com/recaptcha/admin';
340
  printf(
341
+ __( 'Please register your blog through the <a href="%s">Google reCAPTCHA admin page</a> and enter the public and private key in the fields below. <a href="%s">What is this all about?</a>', 'wp-recaptcha-integration' ) ,
342
  $admin_url , $info_url
343
  );
344
  ?></p><?php
356
  $nonce = wp_create_nonce( $action );
357
  $test_url = add_query_arg( array('_wpnonce' => $nonce , 'action' => $action ) , admin_url( 'admin-ajax.php' ) );
358
 
359
+ $action = 'recaptcha-init-test-api-key';
360
+ $nonce = wp_create_nonce( $action );
361
+ $init_test_url = add_query_arg( array('_wpnonce' => $nonce , 'action' => $action ) , admin_url( 'admin-ajax.php' ) );
362
+
363
  ?><p class="submit"><?php
364
  ?><a class="button" href="<?php echo $new_url ?>"><?php _e('New API Key' , 'wp-recaptcha-integration') ?></a><?php
365
+ ?><a id="test-api-key" class="button" data-init-href="<?php echo $init_test_url ?>" href="<?php echo $test_url ?>"><?php _e('Test API Key' , 'wp-recaptcha-integration') ?></a><?php
366
  ?></p><?php
367
  ?></div><?php
368
  }
369
  }
370
 
371
+ /**
372
+ * Intro text for the Protection setting
373
+ */
374
+ public function explain_protection() {
375
+ ?><div class="recaptcha-explain"><?php
376
+ ?><p class="description"><?php
377
+ _e( 'Select which forms you want to protect with a captcha.' , 'wp-recaptcha-integration' );
378
+ ?></p><?php
379
+ ?></div><?php
380
+ }
381
+ /**
382
+ * Intro text for the Styling setting
383
+ */
384
+ public function explain_styling() {
385
+ ?><div class="recaptcha-explain"><?php
386
+ ?><p class="description"><?php
387
+ _e( 'Choose a flavor and theme for your Captcha. Please note that with the old style reCaptcha you cannot have more than one captcha per page.' , 'wp-recaptcha-integration' );
388
+ ?></p><?php
389
+ ?></div><?php
390
+ }
391
+
392
 
393
+ /**
394
+ * Test api key ajax response.
395
+ * Returns reCaptcha HTML
396
+ */
397
+ public function ajax_init_test_api_key() {
398
+ if ( isset( $_REQUEST['_wpnonce'] ) && wp_verify_nonce( $_REQUEST['_wpnonce'] , $_REQUEST['action'] ) ) {
399
+ header('Content-Type: text/html');
400
+ add_filter('option_recaptcha_disable_submit','__return_false');
401
+ WP_reCaptcha_noCaptcha::instance()->print_head( 'grecaptcha' );
402
+ WP_reCaptcha_noCaptcha::instance()->print_foot( 'grecaptcha' );
403
+ }
404
+ exit(0);
405
+ }
406
  /**
407
  * Test api key ajax response.
408
  * Returns reCaptcha HTML
410
  public function ajax_test_api_key() {
411
  if ( isset( $_REQUEST['_wpnonce'] ) && wp_verify_nonce( $_REQUEST['_wpnonce'] , $_REQUEST['action'] ) ) {
412
  header('Content-Type: text/html');
413
+ // WP_reCaptcha::instance()->recaptcha_head( 'grecaptcha' );
414
+ // WP_reCaptcha::instance()->recaptcha_foot( 'grecaptcha' );
415
+ echo WP_reCaptcha_noCaptcha::instance()->get_html( 'grecaptcha' );
416
  $action = 'recaptcha-test-verification';
417
  $nonce = wp_create_nonce( $action );
418
  ?><input type="hidden" name="<?php echo $action ?>-nonce" value="<?php echo $nonce ?>" /><?php
427
  public function ajax_test_api_key_verification() {
428
  if ( isset( $_REQUEST['_wpnonce'] ) && wp_verify_nonce( $_REQUEST['_wpnonce'] , $_REQUEST['action'] ) ) {
429
  header('Content-Type: text/html');
430
+ if ( ! WP_reCaptcha_noCaptcha::instance()->check( 'grecaptcha' ) ) {
431
  $errs = array(
432
  'missing-input-secret' => __('The secret Key is missing.','wp-recaptcha-integration'),
433
  'invalid-input-secret' => __('The secret Key is invalid. You better check your domain configuration and enter it again.','wp-recaptcha-integration'),
434
  'missing-input-response' => __('The user response was missing','wp-recaptcha-integration'),
435
  'invalid-input-response' => __('Invalid user response','wp-recaptcha-integration'),
436
  );
437
+ $result = (array) WP_reCaptcha_noCaptcha::instance()->get_last_result();
438
  if ( isset( $result['error-codes'] ) ) {
439
  foreach ( $result['error-codes'] as $err ) {
440
  ?><div class="error"><p><?php echo $errs[$err]; ?></p></div><?php
452
  * checks the verification process and shows an error on fail.
453
  */
454
  public function cancel_enter_api_key() {
455
+ $url = $this->remove_new_apikey_url( add_query_arg(null,null) );
456
  ?><a class="button" href="<?php echo $url ?>"><?php _e( 'Cancel' ) ?></a><?php
457
  }
458
 
506
  ?><input id="<?php echo $name ?>" type="checkbox" name="<?php echo $name ?>" value="1" <?php checked($value,1,true) ?> />
507
  <?php
508
  echo $label;
509
+ if ( $description ) {
510
+ ?><p class="description"><?php echo $description ?></p><?php
511
+ }
512
  ?></label><?php
 
 
 
513
  }
514
+
515
+ /**
516
+ * On/off switch. Basically A Checkbox
517
+ *
518
+ * @param args array(
519
+ * 'name' => '', // checkbox field name, must match an option name
520
+ * 'label' => '', // button label
521
+ * 'description' => '', // button label
522
+ * 'class' => '', // button label
523
+ * )
524
+ */
525
+ public function input_check_onoff($args) {
526
+ $args = wp_parse_args($args,array(
527
+ 'name' => '',
528
+ 'label' => '',
529
+ 'class' => '',
530
+ ));
531
+ extract($args);
532
+ $value = WP_reCaptcha::instance()->get_option( $name );
533
+
534
+ ?><div class="recaptcha-onoff <?php echo $class ?>"><?php
535
+ ?><input type="hidden" name="<?php echo $name ?>" value="0" /><?php
536
+ ?><input id="<?php echo $name ?>" type="checkbox" name="<?php echo $name ?>" value="1" <?php checked($value,1,true) ?> /><?php
537
+ ?><label for="<?php echo $name ?>"><?php
538
+ ?><span class="dashicons dashicons-lock"></span><?php
539
+ ?><span class="title"><?php echo $label ?></span><?php
540
+ ?></label><?php
541
+ ?></div><?php
542
+ }
543
+
544
+ public function input_protect( $switches ) {
545
+ foreach ( $switches as $switch )
546
+ $this->input_check_onoff( $switch );
547
+ }
548
+
549
  /**
550
  * A Text field.
551
  * Used for api key input.
566
  $option_name = 'recaptcha_language';
567
  $option_value = WP_reCaptcha::instance()->get_option( $option_name );
568
 
569
+ $all_available_langs = array(
570
+ 'recaptcha' => WP_reCaptcha_ReCaptcha::instance()->get_supported_languages(),
571
+ 'grecaptcha' => WP_reCaptcha_NoCaptcha::instance()->get_supported_languages(),
572
+ );
573
+
574
  ?><div class="recaptcha-select-language flavor-<?php echo $option_flavor ?>"><?php
575
+ foreach( $all_available_langs as $flavor => $available_langs ) {
576
+ ?><select class="flavor-<?php echo $flavor ?>" name="<?php echo $option_name ?>[<?php echo $flavor ?>]"><?php
577
+ ?><option <?php selected($option_value,'',true); ?> value=""><?php _e( 'Automatic','wp-recaptcha-integration' ); ?></option><?php
578
+ ?><option <?php selected($option_value,'WPLANG',true); ?> value="WPLANG"><?php _e( 'Site Language' ); ?></option><?php
579
+ ?><optgroup label="<?php _e('Other') ?>"><?php
580
+ foreach ( $available_langs as $lang => $lang_name ) {
581
+ ?><option <?php selected($option_value,$lang,true); ?> value="<?php echo $lang; ?>"><?php _e( $lang_name ); ?></option><?php
582
+ }
583
+ ?></optgroup><?php
584
+ ?></select><?php
585
+ }
586
  ?></div><?php
587
  }
588
  /**
591
  public function select_theme() {
592
  $option_name = 'recaptcha_theme';
593
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
594
  $grecaptcha_themes = WP_reCaptcha_NoCaptcha::instance()->get_supported_themes();
595
  $grecaptcha_themes = array_map( array( $this , '_map_grecaptcha' ) , $grecaptcha_themes );
596
 
602
  $option_theme = WP_reCaptcha::instance()->get_option($option_name);
603
  $option_flavor = WP_reCaptcha::instance()->get_option( 'recaptcha_flavor' );
604
 
605
+ ?><div class="recaptcha-select-theme"><?php
606
 
607
  foreach ( $themes as $value => $theme ) {
608
  extract( $theme ); // label, flavor
644
  }
645
 
646
  /**
647
+ * Check if language is supported by current recaptcha flavor
648
  */
649
  public function sanitize_language( $language ) {
650
+ $flavor = isset($_REQUEST['recaptcha_flavor']) ? $_REQUEST['recaptcha_flavor'] : WP_reCaptcha::instance()->get_option('recaptcha_flavor');
651
+
652
+ if ( isset( $language[$flavor] ) )
653
+ $language = $language[$flavor];
654
+
655
  if ( $language != 'WPLANG' )
656
+ $language = WP_reCaptcha::instance()->captcha_instance_by_flavor( $flavor )->get_language( $language );
657
  return $language;
658
  }
659
  /**
707
  * Rendering the options page
708
  */
709
  public function render_options_page() {
710
+ $option_flavor = WP_reCaptcha::instance()->get_option( 'recaptcha_flavor' );
711
+ ?><div class="wrap flavor-<?php echo $option_flavor ?>"><?php
712
  ?><h2><?php /*icon*/
713
  _e('Settings');
714
  echo ' › ';
718
  ?><form action="options.php" method="post"><?php
719
  settings_fields( 'recaptcha_options' );
720
  do_settings_sections( 'recaptcha' );
721
+ submit_button( null , 'primary' , null, null, array('autocomplete'=>'off'));
722
  ?></form><?php
723
  ?></div><?php
724
  }
inc/class-wp_recaptcha_woocommerce.php CHANGED
@@ -39,29 +39,45 @@ class WP_reCaptcha_WooCommerce {
39
  function init() {
40
  $wp_recaptcha = WP_reCaptcha::instance();
41
  $require_recaptcha = $wp_recaptcha->is_required();
42
-
 
 
43
  if ( $require_recaptcha ) {
44
  // WooCommerce support
45
  if ( $wp_recaptcha->get_option('recaptcha_flavor') == 'grecaptcha' && function_exists( 'wc_add_notice' ) ) {
46
- if ( $wp_recaptcha->get_option('recaptcha_enable_wc_order') ) {
47
  add_action('woocommerce_review_order_before_submit' , array($wp_recaptcha,'print_recaptcha_html'),10,0);
48
  add_action('woocommerce_checkout_process', array( &$this , 'recaptcha_check' ) );
 
 
49
  }
50
- if ( $wp_recaptcha->get_option('recaptcha_enable_login') ) {
51
  add_action('woocommerce_login_form' , array($wp_recaptcha,'print_recaptcha_html'),10,0);
52
  add_filter('woocommerce_process_login_errors', array( &$this , 'login_errors' ) , 10 , 3 );
53
 
54
  }
55
- if ( $wp_recaptcha->get_option('recaptcha_enable_signup') ) {
56
  // displaying the captcha at hook 'registration_form' already done by core plugin
57
  add_filter('woocommerce_registration_errors', array( &$this , 'login_errors' ) , 10 , 3 );
 
 
58
  }
 
59
  /*
60
  LOSTPW: Not possible yet. Needs https://github.com/woothemes/woocommerce/pull/7029 being applied.
61
  */
62
  }
63
  }
64
  }
 
 
 
 
 
 
 
 
 
65
  /**
66
  * WooCommerce recaptcha Check
67
  * hooks into action `woocommerce_checkout_process`
@@ -80,6 +96,16 @@ class WP_reCaptcha_WooCommerce {
80
  $validation_error->add( 'captcha_error' , __("<strong>Error:</strong> the Captcha didn’t verify.",'wp-recaptcha-integration') );
81
  return $validation_error;
82
  }
 
 
 
 
 
 
 
 
 
 
83
  }
84
 
85
 
39
  function init() {
40
  $wp_recaptcha = WP_reCaptcha::instance();
41
  $require_recaptcha = $wp_recaptcha->is_required();
42
+ $enable_order = $wp_recaptcha->get_option('recaptcha_enable_wc_order') ;
43
+ $enable_signup = $wp_recaptcha->get_option('recaptcha_enable_signup') ;
44
+ $enable_login = $wp_recaptcha->get_option('recaptcha_enable_login');
45
  if ( $require_recaptcha ) {
46
  // WooCommerce support
47
  if ( $wp_recaptcha->get_option('recaptcha_flavor') == 'grecaptcha' && function_exists( 'wc_add_notice' ) ) {
48
+ if ( $enable_order ) {
49
  add_action('woocommerce_review_order_before_submit' , array($wp_recaptcha,'print_recaptcha_html'),10,0);
50
  add_action('woocommerce_checkout_process', array( &$this , 'recaptcha_check' ) );
51
+ } else if ( $enable_signup ) {
52
+ add_filter( 'wp_recaptcha_required' , array( &$this , 'disable_on_checkout' ) );
53
  }
54
+ if ( $enable_login ) {
55
  add_action('woocommerce_login_form' , array($wp_recaptcha,'print_recaptcha_html'),10,0);
56
  add_filter('woocommerce_process_login_errors', array( &$this , 'login_errors' ) , 10 , 3 );
57
 
58
  }
59
+ if ( $enable_signup ) {
60
  // displaying the captcha at hook 'registration_form' already done by core plugin
61
  add_filter('woocommerce_registration_errors', array( &$this , 'login_errors' ) , 10 , 3 );
62
+ // if ( ! $enable_order )
63
+ // add_filter('woocommerce_checkout_fields', array( &$this , 'checkout_fields' ) , 10 , 3 );
64
  }
65
+ add_filter('woocommerce_form_field_recaptcha', array( $wp_recaptcha , 'recaptcha_html' ) , 10 , 3 );
66
  /*
67
  LOSTPW: Not possible yet. Needs https://github.com/woothemes/woocommerce/pull/7029 being applied.
68
  */
69
  }
70
  }
71
  }
72
+ /*
73
+ function checkout_fields( $checkout_fields ) {
74
+ $checkout_fields['account']['recaptcha'] = array(
75
+ 'type' => 'recaptcha',
76
+ 'label' => __( 'Are you human', 'wp-recaptcha-integration' ),
77
+ );
78
+ return $checkout_fields;
79
+ }
80
+ */
81
  /**
82
  * WooCommerce recaptcha Check
83
  * hooks into action `woocommerce_checkout_process`
96
  $validation_error->add( 'captcha_error' , __("<strong>Error:</strong> the Captcha didn’t verify.",'wp-recaptcha-integration') );
97
  return $validation_error;
98
  }
99
+
100
+ /**
101
+ * WooCommerce recaptcha Check
102
+ * hooks into actions `woocommerce_process_login_errors` and `woocommerce_registration_errors`
103
+ */
104
+ function disable_on_checkout( $enabled ) {
105
+ if ( defined( 'WOOCOMMERCE_CHECKOUT' ) )
106
+ return false;
107
+ return $enabled;
108
+ }
109
  }
110
 
111
 
js/recaptcha-options.js CHANGED
@@ -3,7 +3,7 @@
3
  $('[name="recaptcha_flavor"]:checked').trigger('click');
4
  });
5
  $(document).on('click','[name="recaptcha_flavor"]',function(){
6
- $('.recaptcha-select-theme')
7
  .removeClass('flavor-recaptcha')
8
  .removeClass('flavor-grecaptcha')
9
  .addClass('flavor-'+$(this).val());
@@ -11,25 +11,33 @@
11
 
12
 
13
  $(document).on('click','#test-api-key' , function(e){
 
 
14
  if ( ! $('#recaptcha-test-result').length )
15
  $(this).closest('div').append('<div id="recaptcha-test-result" />');
 
 
 
 
16
  $('#recaptcha-test-result').load( $(this).prop('href') );
17
  e.preventDefault();
18
  e.stopPropagation();
19
- $(this).remove();
 
20
  return false;
21
  });
22
  $(document).on('click','#recaptcha-test-verification' , function(e){
23
  var data = {
24
  'action' : 'recaptcha-test-verification',
25
  '_wpnonce' : $('[name="recaptcha-test-verification-nonce"]').val(),
26
- 'g-recaptcha-response' : $('#g-recaptcha-response').val()
27
  };
28
-
29
  $.post( ajaxurl ,
30
  data ,
31
  function(response) {
32
  $('#recaptcha-test-result').html(response);
 
33
  });
34
 
35
  e.preventDefault();
3
  $('[name="recaptcha_flavor"]:checked').trigger('click');
4
  });
5
  $(document).on('click','[name="recaptcha_flavor"]',function(){
6
+ $(this).closest('.wrap')
7
  .removeClass('flavor-recaptcha')
8
  .removeClass('flavor-grecaptcha')
9
  .addClass('flavor-'+$(this).val());
11
 
12
 
13
  $(document).on('click','#test-api-key' , function(e){
14
+ if ( ! $('#recaptcha-test-head').length )
15
+ $(this).closest('div').append('<div id="recaptcha-test-head" />');
16
  if ( ! $('#recaptcha-test-result').length )
17
  $(this).closest('div').append('<div id="recaptcha-test-result" />');
18
+
19
+ if ( ! $('#recaptcha-test-head').html() )
20
+ $('#recaptcha-test-head').load( $(this).data('init-href') );
21
+
22
  $('#recaptcha-test-result').load( $(this).prop('href') );
23
  e.preventDefault();
24
  e.stopPropagation();
25
+ $(this).hide();
26
+
27
  return false;
28
  });
29
  $(document).on('click','#recaptcha-test-verification' , function(e){
30
  var data = {
31
  'action' : 'recaptcha-test-verification',
32
  '_wpnonce' : $('[name="recaptcha-test-verification-nonce"]').val(),
33
+ 'g-recaptcha-response' : $('.g-recaptcha-response:first').val()
34
  };
35
+ $('#recaptcha-test-result').addClass('loading').html('<span class="spinner"></span>');
36
  $.post( ajaxurl ,
37
  data ,
38
  function(response) {
39
  $('#recaptcha-test-result').html(response);
40
+ $('#test-api-key').show();
41
  });
42
 
43
  e.preventDefault();
languages/wp-recaptcha-integration-de_DE.mo CHANGED
Binary file
languages/wp-recaptcha-integration-de_DE.po CHANGED
@@ -1,9 +1,9 @@
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: WP reCaptcha Integration v1.0.8\n"
4
  "Report-Msgid-Bugs-To: \n"
5
  "POT-Creation-Date: \n"
6
- "PO-Revision-Date: 2015-02-07 13:23:01+0000\n"
7
  "Last-Translator: admin <joern@flyingletters.com>\n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
@@ -21,11 +21,12 @@ msgstr ""
21
  "X-Textdomain-Support: yes"
22
 
23
  #: inc/class-wp_recaptcha_ninjaforms.php:134
24
- #: inc/class-wp_recaptcha_woocommerce.php:71
25
- #: inc/class-wp_recaptcha_woocommerce.php:80
26
- #: wp-recaptcha-integration.php:391
27
- #: wp-recaptcha-integration.php:405
28
- #: wp-recaptcha-integration.php:417
 
29
  #@ wp-recaptcha-integration
30
  msgid "<strong>Error:</strong> the Captcha didn’t verify."
31
  msgstr "<strong>Fehler:</strong> Sicherheitstest nicht bestanden"
@@ -86,7 +87,7 @@ msgstr ""
86
  msgid "The Captcha didn’t verify."
87
  msgstr "Sicherheitstest nicht bestanden"
88
 
89
- #: inc/class-wp_recaptcha_options.php:153
90
  #, php-format
91
  #@ wp-recaptcha-integration
92
  msgid "<strong>reCaptcha needs your attention:</strong> To make it work You need to enter an api key. <br />You can do so at the <a href=\"%s\">reCaptcha settings page</a>."
@@ -95,110 +96,69 @@ msgstr ""
95
  "braucht Deine Aufmerksamkeit:</strong> Damit das reCaptch funktioniert, mußt Du einen API-Schlüssel eintragen. <br />Zu den <a \n"
96
  "href=\"%s\">reCaptcha Einstellungen</a>."
97
 
98
- #: inc/class-wp_recaptcha_options.php:173
99
  #@ wp-recaptcha-integration
100
- msgid "Public Key"
101
- msgstr "Public Key"
102
 
103
- #: inc/class-wp_recaptcha_options.php:174
104
- #@ wp-recaptcha-integration
105
- msgid "Private Key"
106
- msgstr "Private Key"
107
-
108
- #: inc/class-wp_recaptcha_options.php:175
109
- #: inc/class-wp_recaptcha_options.php:181
110
  #@ wp-recaptcha-integration
111
- msgid "Connecting"
112
- msgstr "Verbindung"
113
 
114
- #: inc/class-wp_recaptcha_options.php:273
115
- #@ wp-recaptcha-integration
116
- msgid "Features"
117
- msgstr "Funktionen"
118
-
119
- #: inc/class-wp_recaptcha_options.php:197
120
  #@ wp-recaptcha-integration
121
  msgid "Flavor"
122
  msgstr "Geschmacksrichtung"
123
 
124
- #: inc/class-wp_recaptcha_options.php:208
125
  #@ wp-recaptcha-integration
126
  msgid "Old style reCAPTCHA where you type some cryptic text"
127
  msgstr "Klassisch, man muß kryptische Wörter eingeben"
128
 
129
  #: inc/class-wp_recaptcha_contactform7.php:98
130
  #: inc/class-wp_recaptcha_ninjaforms.php:72
131
- #: inc/class-wp_recaptcha_options.php:213
132
  #@ contact-form-7
133
  #@ wp-recaptcha-integration
134
  msgid "Theme"
135
  msgstr "Theme"
136
 
137
- #: inc/class-wp_recaptcha_options.php:233
138
- #@ wp-recaptcha-integration
139
- msgid "Protect Comments"
140
- msgstr "Kommentare schützen"
141
-
142
- #: inc/class-wp_recaptcha_options.php:235
143
- #@ wp-recaptcha-integration
144
- msgid "Protect comment forms with recaptcha."
145
- msgstr "Das Kommentarformular mit einem reCaptcha schützen"
146
-
147
- #: inc/class-wp_recaptcha_options.php:238
148
- #@ wp-recaptcha-integration
149
- msgid "Protect Signup"
150
- msgstr "Registrierung schützen"
151
-
152
- #: inc/class-wp_recaptcha_options.php:240
153
- #@ wp-recaptcha-integration
154
- msgid "Protect signup form with recaptcha."
155
- msgstr "Die Registrierung mit einem reCaptcha schützen."
156
-
157
- #: inc/class-wp_recaptcha_options.php:243
158
- #@ wp-recaptcha-integration
159
- msgid "Protect Login"
160
- msgstr "Login schützen"
161
-
162
- #: inc/class-wp_recaptcha_options.php:245
163
- #@ wp-recaptcha-integration
164
- msgid "Protect Login form with recaptcha."
165
- msgstr "Das Anmeldeformular mit einem reCaptcha schützen"
166
-
167
- #: inc/class-wp_recaptcha_options.php:268
168
  #@ wp-recaptcha-integration
169
  msgid "Disable for known users"
170
  msgstr "Abschalten bei bekannten Benutzern"
171
 
172
- #: inc/class-wp_recaptcha_options.php:270
173
  #@ wp-recaptcha-integration
174
  msgid "Disable reCaptcha verification for logged in users."
175
  msgstr "Die reCaptcha-Verifizierung für eingeloggte Benutzer deaktivieren"
176
 
177
- #: inc/class-wp_recaptcha_options.php:276
178
  #@ wp-recaptcha-integration
179
  msgid "Please configure the public and private key. <a href=\"http://www.google.com/recaptcha/whyrecaptcha\">What are you trying to tell me?</a>"
180
  msgstr "Bitte konfigurieren Sie den privaten und den Öffentlichen Schlüssel (private &amp; public key). <a href=\"http://www.google.com/recaptcha/whyrecaptcha\">Was willst Du mir damit zu sagen?</a>"
181
 
182
- #: inc/class-wp_recaptcha_options.php:289
183
  #, php-format
184
  #@ wp-recaptcha-integration
185
- msgid "Please register your blog through the <a href=\"%s\">Google reCAPTCHA admin page</a> and enter the public and private key in the fields below. <a href=\"%s\">What is this all about</a>"
186
  msgstr ""
187
  "Bitte registriere Deinen Blog auf der <a href=\"%s\">Google reCAPTCHA Admin Seite</a> \n"
188
  "und trage unten den öffentlichen und privaten Schüssel ein. <a \n"
189
  "href=\"%s\">Was erzählst Du mir da?</a>"
190
 
191
- #: inc/class-wp_recaptcha_options.php:297
192
  #@ wp-recaptcha-integration
193
  msgid "You already entered an API Key. Use the button below to enter it again."
194
  msgstr "Du hast schon einen API-Schlüssel eingetragen. Klick den Button unten, um es nochmal zu tun."
195
 
196
- #: inc/class-wp_recaptcha_options.php:308
197
  #@ wp-recaptcha-integration
198
  msgid "New API Key"
199
  msgstr "Neuer API-Schlüssel"
200
 
201
- #: inc/class-wp_recaptcha_options.php:366
202
  #@ default
203
  msgid "Cancel"
204
  msgstr ""
@@ -238,37 +198,27 @@ msgstr "Clean"
238
  msgid "Custom"
239
  msgstr "Eigenes"
240
 
241
- #: inc/class-wp_recaptcha_options.php:518
242
  #@ wp-recaptcha-integration
243
  msgid "Unstyled HTML to apply your own Stylesheets."
244
  msgstr "Pures HTML für Deine eigenen Stylessheets"
245
 
246
- #: inc/class-wp_recaptcha_options.php:571
247
- #: inc/class-wp_recaptcha_options.php:595
248
  #@ wp-recaptcha-integration
249
  msgid "ReCaptcha"
250
  msgstr "ReCaptcha"
251
 
252
- #: inc/class-wp_recaptcha_options.php:593
253
  #@ default
254
  msgid "Settings"
255
  msgstr ""
256
 
257
- #: inc/class-wp_recaptcha_options.php:204
258
  #@ wp-recaptcha-integration
259
  msgid "No Captcha where you just click a button"
260
  msgstr "No Captcha. Einfach Checkbox anklicken."
261
 
262
- #: inc/class-wp_recaptcha_options.php:248
263
- #@ wp-recaptcha-integration
264
- msgid "Protect Lost Password"
265
- msgstr "Passwort verloren schützen"
266
-
267
- #: inc/class-wp_recaptcha_options.php:250
268
- #@ wp-recaptcha-integration
269
- msgid "Protect Lost Password form with recaptcha."
270
- msgstr "Das Passwort Verloren Formular mit einem reCaptcha schützen"
271
-
272
  #: inc/class-wp_recaptcha_options.php:94
273
  #: inc/class-wp_recaptcha_options.php:106
274
  #@ wp-recaptcha-integration
@@ -280,99 +230,155 @@ msgstr "reCaptcha Einstellungen"
280
  msgid "reCaptcha"
281
  msgstr "reCaptcha"
282
 
283
- #: inc/class-wp_recaptcha_options.php:309
284
  #@ wp-recaptcha-integration
285
  msgid "Test API Key"
286
  msgstr "API Schlüssel testen"
287
 
288
- #: inc/class-wp_recaptcha_options.php:329
289
  #@ wp-recaptcha-integration
290
  msgid "Test verfication"
291
  msgstr "Captcha-Prüfung testen"
292
 
293
- #: inc/class-wp_recaptcha_options.php:342
294
  #@ wp-recaptcha-integration
295
  msgid "The secret Key is missing."
296
  msgstr "Der geheime Schlüssel fehlt."
297
 
298
- #: inc/class-wp_recaptcha_options.php:343
299
  #@ wp-recaptcha-integration
300
  msgid "The secret Key is invalid. You better check your domain configuration and enter it again."
301
  msgstr "Der geheime Schlüssel ist ungültig. Am besten prüfst Du Deine Domain.-Konfiguration und trägst ihn nochmal ein."
302
 
303
- #: inc/class-wp_recaptcha_options.php:345
304
  #@ wp-recaptcha-integration
305
  msgid "Invalid user response"
306
  msgstr "Ungültige Antwort"
307
 
308
- #: inc/class-wp_recaptcha_options.php:354
309
  #@ wp-recaptcha-integration
310
  msgid "Works! All good!"
311
  msgstr "Läuft! Sehr gut."
312
 
313
- #: inc/class-wp_recaptcha_options.php:215
314
  #@ wp-recaptcha-integration
315
  msgid "Disable Submit Button"
316
  msgstr "Absendebutton deaktivieren"
317
 
318
- #: inc/class-wp_recaptcha_options.php:217
319
  #@ wp-recaptcha-integration
320
  msgid "Disable Form Submit Button until no-captcha is entered."
321
  msgstr "Den Absendenbutton deaktivieren, bis das Captcha gelöst wurde."
322
 
323
- #: inc/class-wp_recaptcha_nocaptcha.php:170
324
  #@ wp-recaptcha-integration
325
  msgid "Please enable JavaScript to submit this form."
326
  msgstr "Bitte aktiveren Sie JavaScript, um dieses Formular abschicken zu können."
327
 
328
- #: inc/class-wp_recaptcha_options.php:344
329
  #@ wp-recaptcha-integration
330
  msgid "The user response was missing"
331
  msgstr "Fehlende Antwort"
332
 
333
- #: inc/class-wp_recaptcha_options.php:255
334
- #@ wp-recaptcha-integration
335
- msgid "Protect WooCommerce Checkout"
336
- msgstr "WooCommerce Kasse schützen"
337
-
338
- #: inc/class-wp_recaptcha_options.php:259
339
- #@ wp-recaptcha-integration
340
- msgid "Protect wooCommerce Checkout with a recaptcha."
341
- msgstr "Die WooCommerce Kasse mit einem Captcha schützen."
342
-
343
- #: inc/class-wp_recaptcha_options.php:260
344
- #@ wp-recaptcha-integration
345
- msgid "This will only work with No Captcha flavor."
346
- msgstr "Das wird nur zusammen mit dem neuen No Captcha funktionieren."
347
-
348
- #: inc/class-wp_recaptcha_options.php:265
349
- #@ wp-recaptcha-integration
350
- msgid "The Old Style recaptcha doesn‘t work together with the WooCommerce checkout form. The Captcha will not be displayed,"
351
- msgstr "Das alte reCaptcha funkctioneirt nicht zusammen mit dem WooCommerce Kassenformular. Das Captcha wird nicht angezeigt."
352
-
353
  #: inc/class-wp_recaptcha_contactform7.php:100
354
  #: inc/class-wp_recaptcha_ninjaforms.php:64
355
  #@ wp-recaptcha-integration
356
  msgid "Use default"
357
  msgstr "Standardwert"
358
 
359
- #: inc/class-wp_recaptcha_options.php:194
360
  #@ default
361
  msgid "Language Settings"
362
  msgstr ""
363
 
364
- #: inc/class-wp_recaptcha_options.php:448
365
  #@ wp-recaptcha-integration
366
  msgid "Automatic"
367
  msgstr "Automatisch"
368
 
369
- #: inc/class-wp_recaptcha_options.php:449
370
  #@ default
371
  msgid "Site Language"
372
  msgstr ""
373
 
374
- #: inc/class-wp_recaptcha_options.php:450
375
  #@ default
376
  msgid "Other"
377
  msgstr ""
378
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  msgid ""
2
  msgstr ""
3
+ "Project-Id-Version: WP reCaptcha Integration v1.1.0\n"
4
  "Report-Msgid-Bugs-To: \n"
5
  "POT-Creation-Date: \n"
6
+ "PO-Revision-Date: 2015-02-25 14:37:41+0000\n"
7
  "Last-Translator: admin <joern@flyingletters.com>\n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
21
  "X-Textdomain-Support: yes"
22
 
23
  #: inc/class-wp_recaptcha_ninjaforms.php:134
24
+ #: inc/class-wp_recaptcha_woocommerce.php:83
25
+ #: inc/class-wp_recaptcha_woocommerce.php:92
26
+ #: wp-recaptcha-integration.php:372
27
+ #: wp-recaptcha-integration.php:418
28
+ #: wp-recaptcha-integration.php:432
29
+ #: wp-recaptcha-integration.php:444
30
  #@ wp-recaptcha-integration
31
  msgid "<strong>Error:</strong> the Captcha didn’t verify."
32
  msgstr "<strong>Fehler:</strong> Sicherheitstest nicht bestanden"
87
  msgid "The Captcha didn’t verify."
88
  msgstr "Sicherheitstest nicht bestanden"
89
 
90
+ #: inc/class-wp_recaptcha_options.php:155
91
  #, php-format
92
  #@ wp-recaptcha-integration
93
  msgid "<strong>reCaptcha needs your attention:</strong> To make it work You need to enter an api key. <br />You can do so at the <a href=\"%s\">reCaptcha settings page</a>."
96
  "braucht Deine Aufmerksamkeit:</strong> Damit das reCaptch funktioniert, mußt Du einen API-Schlüssel eintragen. <br />Zu den <a \n"
97
  "href=\"%s\">reCaptcha Einstellungen</a>."
98
 
99
+ #: inc/class-wp_recaptcha_options.php:183
100
  #@ wp-recaptcha-integration
101
+ msgid "Site key"
102
+ msgstr "Websiteschlüssel"
103
 
104
+ #: inc/class-wp_recaptcha_options.php:184
 
 
 
 
 
 
105
  #@ wp-recaptcha-integration
106
+ msgid "Secret key"
107
+ msgstr "Geheimer Schlüssel"
108
 
109
+ #: inc/class-wp_recaptcha_options.php:204
 
 
 
 
 
110
  #@ wp-recaptcha-integration
111
  msgid "Flavor"
112
  msgstr "Geschmacksrichtung"
113
 
114
+ #: inc/class-wp_recaptcha_options.php:215
115
  #@ wp-recaptcha-integration
116
  msgid "Old style reCAPTCHA where you type some cryptic text"
117
  msgstr "Klassisch, man muß kryptische Wörter eingeben"
118
 
119
  #: inc/class-wp_recaptcha_contactform7.php:98
120
  #: inc/class-wp_recaptcha_ninjaforms.php:72
121
+ #: inc/class-wp_recaptcha_options.php:222
122
  #@ contact-form-7
123
  #@ wp-recaptcha-integration
124
  msgid "Theme"
125
  msgstr "Theme"
126
 
127
+ #: inc/class-wp_recaptcha_options.php:313
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  #@ wp-recaptcha-integration
129
  msgid "Disable for known users"
130
  msgstr "Abschalten bei bekannten Benutzern"
131
 
132
+ #: inc/class-wp_recaptcha_options.php:315
133
  #@ wp-recaptcha-integration
134
  msgid "Disable reCaptcha verification for logged in users."
135
  msgstr "Die reCaptcha-Verifizierung für eingeloggte Benutzer deaktivieren"
136
 
137
+ #: inc/class-wp_recaptcha_options.php:328
138
  #@ wp-recaptcha-integration
139
  msgid "Please configure the public and private key. <a href=\"http://www.google.com/recaptcha/whyrecaptcha\">What are you trying to tell me?</a>"
140
  msgstr "Bitte konfigurieren Sie den privaten und den Öffentlichen Schlüssel (private &amp; public key). <a href=\"http://www.google.com/recaptcha/whyrecaptcha\">Was willst Du mir damit zu sagen?</a>"
141
 
142
+ #: inc/class-wp_recaptcha_options.php:341
143
  #, php-format
144
  #@ wp-recaptcha-integration
145
+ msgid "Please register your blog through the <a href=\"%s\">Google reCAPTCHA admin page</a> and enter the public and private key in the fields below. <a href=\"%s\">What is this all about?</a>"
146
  msgstr ""
147
  "Bitte registriere Deinen Blog auf der <a href=\"%s\">Google reCAPTCHA Admin Seite</a> \n"
148
  "und trage unten den öffentlichen und privaten Schüssel ein. <a \n"
149
  "href=\"%s\">Was erzählst Du mir da?</a>"
150
 
151
+ #: inc/class-wp_recaptcha_options.php:349
152
  #@ wp-recaptcha-integration
153
  msgid "You already entered an API Key. Use the button below to enter it again."
154
  msgstr "Du hast schon einen API-Schlüssel eingetragen. Klick den Button unten, um es nochmal zu tun."
155
 
156
+ #: inc/class-wp_recaptcha_options.php:364
157
  #@ wp-recaptcha-integration
158
  msgid "New API Key"
159
  msgstr "Neuer API-Schlüssel"
160
 
161
+ #: inc/class-wp_recaptcha_options.php:456
162
  #@ default
163
  msgid "Cancel"
164
  msgstr ""
198
  msgid "Custom"
199
  msgstr "Eigenes"
200
 
201
+ #: inc/class-wp_recaptcha_options.php:617
202
  #@ wp-recaptcha-integration
203
  msgid "Unstyled HTML to apply your own Stylesheets."
204
  msgstr "Pures HTML für Deine eigenen Stylessheets"
205
 
206
+ #: inc/class-wp_recaptcha_options.php:690
207
+ #: inc/class-wp_recaptcha_options.php:715
208
  #@ wp-recaptcha-integration
209
  msgid "ReCaptcha"
210
  msgstr "ReCaptcha"
211
 
212
+ #: inc/class-wp_recaptcha_options.php:713
213
  #@ default
214
  msgid "Settings"
215
  msgstr ""
216
 
217
+ #: inc/class-wp_recaptcha_options.php:211
218
  #@ wp-recaptcha-integration
219
  msgid "No Captcha where you just click a button"
220
  msgstr "No Captcha. Einfach Checkbox anklicken."
221
 
 
 
 
 
 
 
 
 
 
 
222
  #: inc/class-wp_recaptcha_options.php:94
223
  #: inc/class-wp_recaptcha_options.php:106
224
  #@ wp-recaptcha-integration
230
  msgid "reCaptcha"
231
  msgstr "reCaptcha"
232
 
233
+ #: inc/class-wp_recaptcha_options.php:365
234
  #@ wp-recaptcha-integration
235
  msgid "Test API Key"
236
  msgstr "API Schlüssel testen"
237
 
238
+ #: inc/class-wp_recaptcha_options.php:419
239
  #@ wp-recaptcha-integration
240
  msgid "Test verfication"
241
  msgstr "Captcha-Prüfung testen"
242
 
243
+ #: inc/class-wp_recaptcha_options.php:432
244
  #@ wp-recaptcha-integration
245
  msgid "The secret Key is missing."
246
  msgstr "Der geheime Schlüssel fehlt."
247
 
248
+ #: inc/class-wp_recaptcha_options.php:433
249
  #@ wp-recaptcha-integration
250
  msgid "The secret Key is invalid. You better check your domain configuration and enter it again."
251
  msgstr "Der geheime Schlüssel ist ungültig. Am besten prüfst Du Deine Domain.-Konfiguration und trägst ihn nochmal ein."
252
 
253
+ #: inc/class-wp_recaptcha_options.php:435
254
  #@ wp-recaptcha-integration
255
  msgid "Invalid user response"
256
  msgstr "Ungültige Antwort"
257
 
258
+ #: inc/class-wp_recaptcha_options.php:444
259
  #@ wp-recaptcha-integration
260
  msgid "Works! All good!"
261
  msgstr "Läuft! Sehr gut."
262
 
263
+ #: inc/class-wp_recaptcha_options.php:224
264
  #@ wp-recaptcha-integration
265
  msgid "Disable Submit Button"
266
  msgstr "Absendebutton deaktivieren"
267
 
268
+ #: inc/class-wp_recaptcha_options.php:226
269
  #@ wp-recaptcha-integration
270
  msgid "Disable Form Submit Button until no-captcha is entered."
271
  msgstr "Den Absendenbutton deaktivieren, bis das Captcha gelöst wurde."
272
 
273
+ #: inc/class-wp_recaptcha_nocaptcha.php:198
274
  #@ wp-recaptcha-integration
275
  msgid "Please enable JavaScript to submit this form."
276
  msgstr "Bitte aktiveren Sie JavaScript, um dieses Formular abschicken zu können."
277
 
278
+ #: inc/class-wp_recaptcha_options.php:434
279
  #@ wp-recaptcha-integration
280
  msgid "The user response was missing"
281
  msgstr "Fehlende Antwort"
282
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
283
  #: inc/class-wp_recaptcha_contactform7.php:100
284
  #: inc/class-wp_recaptcha_ninjaforms.php:64
285
  #@ wp-recaptcha-integration
286
  msgid "Use default"
287
  msgstr "Standardwert"
288
 
289
+ #: inc/class-wp_recaptcha_options.php:220
290
  #@ default
291
  msgid "Language Settings"
292
  msgstr ""
293
 
294
+ #: inc/class-wp_recaptcha_options.php:577
295
  #@ wp-recaptcha-integration
296
  msgid "Automatic"
297
  msgstr "Automatisch"
298
 
299
+ #: inc/class-wp_recaptcha_options.php:578
300
  #@ default
301
  msgid "Site Language"
302
  msgstr ""
303
 
304
+ #: inc/class-wp_recaptcha_options.php:579
305
  #@ default
306
  msgid "Other"
307
  msgstr ""
308
 
309
+ #: inc/class-wp_recaptcha_options.php:173
310
+ #: inc/class-wp_recaptcha_options.php:177
311
+ #@ wp-recaptcha-integration
312
+ msgid "Connect"
313
+ msgstr "Verbinden"
314
+
315
+ #: inc/class-wp_recaptcha_options.php:174
316
+ #@ wp-recaptcha-integration
317
+ msgid "Protect"
318
+ msgstr "Schützen"
319
+
320
+ #: inc/class-wp_recaptcha_options.php:175
321
+ #@ wp-recaptcha-integration
322
+ msgid "Style"
323
+ msgstr "Styling"
324
+
325
+ #: inc/class-wp_recaptcha_options.php:282
326
+ #@ wp-recaptcha-integration
327
+ msgid "Comment Form"
328
+ msgstr "Kommentare"
329
+
330
+ #: inc/class-wp_recaptcha_options.php:287
331
+ #@ wp-recaptcha-integration
332
+ msgid "Signup Form"
333
+ msgstr "Registrierung"
334
+
335
+ #: inc/class-wp_recaptcha_options.php:292
336
+ #@ wp-recaptcha-integration
337
+ msgid "Login Form"
338
+ msgstr "Anmeldung"
339
+
340
+ #: inc/class-wp_recaptcha_options.php:297
341
+ #@ wp-recaptcha-integration
342
+ msgid "Lost Password Form"
343
+ msgstr "Passwort verloren"
344
+
345
+ #: inc/class-wp_recaptcha_options.php:304
346
+ #@ wp-recaptcha-integration
347
+ msgid "woocommerce Checkout"
348
+ msgstr "woocommerce Bestellung"
349
+
350
+ #: inc/class-wp_recaptcha_options.php:308
351
+ #@ wp-recaptcha-integration
352
+ msgid "Forms to protect"
353
+ msgstr "Formulare schützen"
354
+
355
+ #: inc/class-wp_recaptcha_options.php:317
356
+ #@ wp-recaptcha-integration
357
+ msgid "Prevent lockout"
358
+ msgstr "Aussperren verhindern"
359
+
360
+ #: inc/class-wp_recaptcha_options.php:321
361
+ #@ wp-recaptcha-integration
362
+ msgid "Allow administrator to log in if API keys do not work."
363
+ msgstr "Administrator Login erlauben, wenn die API-Schlüssel nicht funktionieren"
364
+
365
+ #: inc/class-wp_recaptcha_options.php:322
366
+ #@ wp-recaptcha-integration
367
+ msgid "When the captcha verification fails, and the private or public API key does not work the plugin will let you in anyway. Please note that with this option checked plus a broken keypair your site will be open to brute force attacks, that try to guess an administrator password."
368
+ msgstr "Wenn der Captcha-Test fehlschlägt und der private oder öffentliche Schlüsseln nicht funktionieren, wird Dich das Plugin trotzdem hereinlassen. Bette beachte, dass Deine Seite mit dieser option und einem kaputten Schlüsselpaar offen für Brute-Force-Angriffe wird, die darauf abzielen ein Administrator-Passwort zu erraten."
369
+
370
+ #: inc/class-wp_recaptcha_options.php:377
371
+ #@ wp-recaptcha-integration
372
+ msgid "Select which forms you want to protect with a captcha."
373
+ msgstr "Welche Formulare möchtest Du mit einem Captcha schützen?"
374
+
375
+ #: inc/class-wp_recaptcha_options.php:387
376
+ #@ wp-recaptcha-integration
377
+ msgid "Choose a flavor and theme for your Captcha. Please note that with the old style reCaptcha you cannot have more than one captcha per page."
378
+ msgstr "Wähle eine Geschmachsrichtung. Zu beachten ist, dass beim alten reCaptcha nur ein Captcha auf einer Seite möglich ist."
379
+
380
+ #: inc/class-wp_recaptcha_woocommerce.php:72
381
+ #@ wp-recaptcha-integration
382
+ msgid "Are you human"
383
+ msgstr "Bist Du ein Mensch"
384
+
languages/wp-recaptcha-integration-es_ES.mo CHANGED
Binary file
languages/wp-recaptcha-integration-es_ES.po CHANGED
@@ -1,320 +1,378 @@
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: WP reCaptcha Integration\n"
 
4
  "POT-Creation-Date: 2015-02-01 17:51+0100\n"
5
- "PO-Revision-Date: 2015-02-01 18:11+0100\n"
6
  "Last-Translator: Ivan <ivan@yivoff.com>\n"
7
  "Language-Team: Ivan <ivan@yivoff.com>\n"
8
- "Language: es_ES\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
 
12
  "X-Generator: Poedit 1.7.4\n"
13
- "X-Poedit-Basepath: ..\n"
 
14
  "X-Poedit-SourceCharset: UTF-8\n"
15
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
16
- "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
17
- "_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
18
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
  "X-Poedit-SearchPath-0: .\n"
20
- "X-Poedit-SearchPathExcluded-0: *.js\n"
21
 
22
- #: inc/class-wp_recaptcha_contactform7.php:74
23
  #: inc/class-wp_recaptcha_ninjaforms.php:36
 
24
  msgid "reCAPTCHA"
25
  msgstr "reCAPTCHA"
26
 
27
- #: inc/class-wp_recaptcha_contactform7.php:87
 
28
  msgid "Required field?"
29
  msgstr "Campo Requerido?"
30
 
31
- #: inc/class-wp_recaptcha_contactform7.php:88
 
32
  msgid "Name"
33
  msgstr "Nombre"
34
 
35
- #: inc/class-wp_recaptcha_contactform7.php:91
 
36
  msgid "Copy this code and paste it into the form left."
37
  msgstr "Copia este código y pégalo en el formulario de la izquierda"
38
 
39
- #: inc/class-wp_recaptcha_contactform7.php:109
 
40
  msgid "The Captcha didn’t verify."
41
  msgstr "El Captcha no se ha podido verificar"
42
 
43
- #: inc/class-wp_recaptcha_ninjaforms.php:114
44
- #: inc/class-wp_recaptcha_woocommerce.php:71
45
- #: inc/class-wp_recaptcha_woocommerce.php:80 wp-recaptcha-integration.php:391
46
- #: wp-recaptcha-integration.php:405 wp-recaptcha-integration.php:417
 
 
 
 
47
  msgid "<strong>Error:</strong> the Captcha didn’t verify."
48
  msgstr "<strong>Error:</strong> verificación Captcha incorrecta."
49
 
50
- #: inc/class-wp_recaptcha_nocaptcha.php:148
 
51
  msgid "Please enable JavaScript to submit this form."
52
  msgstr "Por favor activa Javascript para enviar este formulario"
53
 
54
  #: inc/class-wp_recaptcha_options.php:94
55
  #: inc/class-wp_recaptcha_options.php:106
 
56
  msgid "reCaptcha Settings"
57
  msgstr "Ajustes reCAPTCHA"
58
 
59
  #: inc/class-wp_recaptcha_options.php:95
 
60
  msgid "reCaptcha"
61
  msgstr "reCaptcha"
62
 
63
- #: inc/class-wp_recaptcha_options.php:153
64
  #, php-format
65
- msgid ""
66
- "<strong>reCaptcha needs your attention:</strong> To make it work You need to "
67
- "enter an api key. <br />You can do so at the <a href=\"%s\">reCaptcha "
68
- "settings page</a>."
69
- msgstr ""
70
- "<strong>reCaptcha necesita tu atención</strong> Para que funcione, necesitas "
71
- "introducir una llave API <br />Puedes hacerlo en los <a href=\"%s\">ajustes "
72
- "de reCaptcha</a>."
73
-
74
- #: inc/class-wp_recaptcha_options.php:173
75
- msgid "Public Key"
76
- msgstr "Llave pública"
77
-
78
- #: inc/class-wp_recaptcha_options.php:174
79
- msgid "Private Key"
80
- msgstr "Llave Privada"
81
-
82
- #: inc/class-wp_recaptcha_options.php:175
83
- #: inc/class-wp_recaptcha_options.php:181
84
- msgid "Connecting"
85
- msgstr "Conectándose"
86
-
87
- #: inc/class-wp_recaptcha_options.php:194
88
  msgid "Language Settings"
89
  msgstr "Ajustes de lenguaje"
90
 
91
- #: inc/class-wp_recaptcha_options.php:197
 
92
  msgid "Flavor"
93
  msgstr "Sabor"
94
 
95
- #: inc/class-wp_recaptcha_options.php:204
 
96
  msgid "No Captcha where you just click a button"
97
  msgstr "Sin Captcha, dónde sólo hace falta pulsar un botón"
98
 
99
- #: inc/class-wp_recaptcha_options.php:208
 
100
  msgid "Old style reCAPTCHA where you type some cryptic text"
101
  msgstr "reCaptcha clásico, dónde descifras un texto críptico"
102
 
103
- #: inc/class-wp_recaptcha_options.php:213
 
 
 
 
104
  msgid "Theme"
105
  msgstr "Tema"
106
 
107
- #: inc/class-wp_recaptcha_options.php:215
 
108
  msgid "Disable Submit Button"
109
  msgstr "Desactiva Botón de Enviar"
110
 
111
- #: inc/class-wp_recaptcha_options.php:217
 
112
  msgid "Disable Form Submit Button until no-captcha is entered."
113
  msgstr "Desactivar botón de enviar hasta que el reCaptcha haya sido resuelto"
114
 
115
- #: inc/class-wp_recaptcha_options.php:233
116
- msgid "Protect Comments"
117
- msgstr "Proteger Comentarios"
118
-
119
- #: inc/class-wp_recaptcha_options.php:235
120
- msgid "Protect comment forms with recaptcha."
121
- msgstr "Proteger formulario de comentario con recaptcha"
122
-
123
- #: inc/class-wp_recaptcha_options.php:238
124
- msgid "Protect Signup"
125
- msgstr "Proteger Registro"
126
-
127
- #: inc/class-wp_recaptcha_options.php:240
128
- msgid "Protect signup form with recaptcha."
129
- msgstr "Proteger formulario de registro de usuario con recaptcha"
130
-
131
- #: inc/class-wp_recaptcha_options.php:243
132
- msgid "Protect Login"
133
- msgstr "Proteger login"
134
-
135
- #: inc/class-wp_recaptcha_options.php:245
136
- msgid "Protect Login form with recaptcha."
137
- msgstr "Proteger Login con recaptcha"
138
-
139
- #: inc/class-wp_recaptcha_options.php:248
140
- msgid "Protect Lost Password"
141
- msgstr "Projeger Recuperación de Contraseña"
142
-
143
- #: inc/class-wp_recaptcha_options.php:250
144
- msgid "Protect Lost Password form with recaptcha."
145
- msgstr "Proteger formulario de contraseña perdida con recaptcha"
146
-
147
- #: inc/class-wp_recaptcha_options.php:255
148
- msgid "Protect WooCommerce Checkout"
149
- msgstr "Proteger compra en wooCommerce"
150
-
151
- #: inc/class-wp_recaptcha_options.php:259
152
- msgid "Protect wooCommerce Checkout with a recaptcha."
153
- msgstr "Proteger el formulario de compra de wooCommerce con recaptcha."
154
-
155
- #: inc/class-wp_recaptcha_options.php:260
156
- msgid "This will only work with No Captcha flavor."
157
- msgstr "Esto sólo funcionará con el sabor \"No Captcha\"."
158
-
159
- #: inc/class-wp_recaptcha_options.php:265
160
- msgid ""
161
- "The Old Style recaptcha doesn‘t work together with the WooCommerce checkout "
162
- "form. The Captcha will not be displayed,"
163
- msgstr ""
164
- "ReCaptcha \"clásico\" no funciona con el formulario de pago de WooCommerce. "
165
- "El Captcha no se mostrará."
166
-
167
- #: inc/class-wp_recaptcha_options.php:268
168
  msgid "Disable for known users"
169
  msgstr "Desactivar para usuarios conocidos"
170
 
171
- #: inc/class-wp_recaptcha_options.php:270
 
172
  msgid "Disable reCaptcha verification for logged in users."
173
  msgstr "Desactiva la verificación reCaptcha para usuarios conectados"
174
 
175
- #: inc/class-wp_recaptcha_options.php:273
176
- msgid "Features"
177
- msgstr "Características"
 
178
 
179
- #: inc/class-wp_recaptcha_options.php:276
180
- msgid ""
181
- "Please configure the public and private key. <a href=\"http://www.google.com/"
182
- "recaptcha/whyrecaptcha\">What are you trying to tell me?</a>"
183
- msgstr ""
184
- "Por favor configura las llaves pública y privada. <a href=\"http://www."
185
- "google.com/recaptcha/whyrecaptcha\">¿De qué me estás hablando?</a>"
186
-
187
- #: inc/class-wp_recaptcha_options.php:289
188
  #, php-format
189
- msgid ""
190
- "Please register your blog through the <a href=\"%s\">Google reCAPTCHA admin "
191
- "page</a> and enter the public and private key in the fields below. <a href="
192
- "\"%s\">What is this all about</a>"
193
- msgstr ""
194
- "Por favor registra tu blog en la <a href=\"%s\">página de Administración de "
195
- "reCAPTCHA de Google</a>, e introduce las llaves públicas y privadas en los "
196
- "campos de más abajo. <a href=\"%s\">Si no sabes de que va esto, pincha aquí</"
197
- "a>"
198
 
199
- #: inc/class-wp_recaptcha_options.php:297
 
200
  msgid "You already entered an API Key. Use the button below to enter it again."
201
- msgstr ""
202
- "Ya has introducido una llave API. Usa el botón de aquí abajo para volver a "
203
- "hacerlo."
204
 
205
- #: inc/class-wp_recaptcha_options.php:308
 
206
  msgid "New API Key"
207
  msgstr "Nueva llave API"
208
 
209
- #: inc/class-wp_recaptcha_options.php:309
 
210
  msgid "Test API Key"
211
  msgstr "Probar llave API"
212
 
213
- #: inc/class-wp_recaptcha_options.php:329
 
214
  msgid "Test verfication"
215
  msgstr "Probar verificación"
216
 
217
- #: inc/class-wp_recaptcha_options.php:342
 
218
  msgid "The secret Key is missing."
219
  msgstr "Falta la llave secreta"
220
 
221
- #: inc/class-wp_recaptcha_options.php:343
222
- msgid ""
223
- "The secret Key is invalid. You better check your domain configuration and "
224
- "enter it again."
225
- msgstr ""
226
- "La llave secreta es inválida. Verifica la configuración de tu dominio y "
227
- "vuelve a intentarlo."
228
 
229
- #: inc/class-wp_recaptcha_options.php:344
 
230
  msgid "The user response was missing"
231
  msgstr "No se ha recibido la respuesta del usuario"
232
 
233
- #: inc/class-wp_recaptcha_options.php:345
 
234
  msgid "Invalid user response"
235
  msgstr "Respuesta de usuario inválida"
236
 
237
- #: inc/class-wp_recaptcha_options.php:354
 
238
  msgid "Works! All good!"
239
  msgstr "¡Funciona! ¡Todo bien!"
240
 
241
- #: inc/class-wp_recaptcha_options.php:366
 
242
  msgid "Cancel"
243
  msgstr "Cancelar"
244
 
245
- #: inc/class-wp_recaptcha_options.php:448
 
246
  msgid "Automatic"
247
  msgstr "Automático"
248
 
249
- #: inc/class-wp_recaptcha_options.php:449
 
250
  msgid "Site Language"
251
  msgstr "Idioma del sitio"
252
 
253
- #: inc/class-wp_recaptcha_options.php:450
 
254
  msgid "Other"
255
  msgstr "Otro"
256
 
257
- #: inc/class-wp_recaptcha_options.php:466
 
258
  msgid "Light"
259
  msgstr "Claro"
260
 
261
- #: inc/class-wp_recaptcha_options.php:470
 
262
  msgid "Dark"
263
  msgstr "Oscuro"
264
 
265
- #: inc/class-wp_recaptcha_options.php:475
 
266
  msgid "Red"
267
  msgstr "Rojo"
268
 
269
- #: inc/class-wp_recaptcha_options.php:479
 
270
  msgid "White"
271
  msgstr "Blanco"
272
 
273
- #: inc/class-wp_recaptcha_options.php:483
 
274
  msgid "Black Glass"
275
  msgstr "Cristal Oscuro"
276
 
277
- #: inc/class-wp_recaptcha_options.php:487
 
278
  msgid "Clean"
279
  msgstr "Limpiar"
280
 
281
- #: inc/class-wp_recaptcha_options.php:491
 
282
  msgid "Custom"
283
  msgstr "Perzonalizado"
284
 
285
- #: inc/class-wp_recaptcha_options.php:511
 
286
  msgid "Unstyled HTML to apply your own Stylesheets."
287
  msgstr "HTML sin estilo para aplicar sus propias hojas de estilo."
288
 
289
- #: inc/class-wp_recaptcha_options.php:564
290
- #: inc/class-wp_recaptcha_options.php:588
 
291
  msgid "ReCaptcha"
292
  msgstr "ReCaptcha"
293
 
294
- #: inc/class-wp_recaptcha_options.php:586
 
295
  msgid "Settings"
296
  msgstr "Ajustes"
297
 
298
- #: inc/class-wp_recaptcha_recaptcha.php:127
 
299
  msgid "Incorrect please try again"
300
  msgstr "Incorrecto, por favor inténtalo otra vez"
301
 
302
- #: inc/class-wp_recaptcha_recaptcha.php:129
 
303
  msgid "Enter the words above:"
304
  msgstr "Introduce las palabras de aquí arriba:"
305
 
306
- #: inc/class-wp_recaptcha_recaptcha.php:130
 
307
  msgid "Enter the numbers you hear:"
308
  msgstr "Introduce los números que oyes:"
309
 
310
- #: inc/class-wp_recaptcha_recaptcha.php:134
 
311
  msgid "Get another CAPTCHA"
312
  msgstr "Cargar otro CAPTCHA"
313
 
314
- #: inc/class-wp_recaptcha_recaptcha.php:135
 
315
  msgid "Get an audio CAPTCHA"
316
  msgstr "Usa un Captcha de Audio"
317
 
318
- #: inc/class-wp_recaptcha_recaptcha.php:136
 
319
  msgid "Get an image CAPTCHA"
320
  msgstr "Usa un Captcha de Imágen"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  msgid ""
2
  msgstr ""
3
+ "Project-Id-Version: WP reCaptcha Integration v1.1.0\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
  "POT-Creation-Date: 2015-02-01 17:51+0100\n"
6
+ "PO-Revision-Date: 2015-02-25 14:37:23+0000\n"
7
  "Last-Translator: Ivan <ivan@yivoff.com>\n"
8
  "Language-Team: Ivan <ivan@yivoff.com>\n"
 
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
  "X-Generator: Poedit 1.7.4\n"
14
+ "X-Poedit-Language: \n"
15
+ "X-Poedit-Country: \n"
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n"
18
+ "X-Poedit-Basepath: ..\n"
19
+ "X-Poedit-Bookmarks: \n"
 
20
  "X-Poedit-SearchPath-0: .\n"
21
+ "X-Textdomain-Support: yes"
22
 
23
+ #: inc/class-wp_recaptcha_contactform7.php:78
24
  #: inc/class-wp_recaptcha_ninjaforms.php:36
25
+ #@ wp-recaptcha-integration
26
  msgid "reCAPTCHA"
27
  msgstr "reCAPTCHA"
28
 
29
+ #: inc/class-wp_recaptcha_contactform7.php:91
30
+ #@ contact-form-7
31
  msgid "Required field?"
32
  msgstr "Campo Requerido?"
33
 
34
+ #: inc/class-wp_recaptcha_contactform7.php:93
35
+ #@ contact-form-7
36
  msgid "Name"
37
  msgstr "Nombre"
38
 
39
+ #: inc/class-wp_recaptcha_contactform7.php:119
40
+ #@ contact-form-7
41
  msgid "Copy this code and paste it into the form left."
42
  msgstr "Copia este código y pégalo en el formulario de la izquierda"
43
 
44
+ #: inc/class-wp_recaptcha_contactform7.php:137
45
+ #@ wp-recaptcha-integration
46
  msgid "The Captcha didn’t verify."
47
  msgstr "El Captcha no se ha podido verificar"
48
 
49
+ #: inc/class-wp_recaptcha_ninjaforms.php:134
50
+ #: inc/class-wp_recaptcha_woocommerce.php:83
51
+ #: inc/class-wp_recaptcha_woocommerce.php:92
52
+ #: wp-recaptcha-integration.php:372
53
+ #: wp-recaptcha-integration.php:418
54
+ #: wp-recaptcha-integration.php:432
55
+ #: wp-recaptcha-integration.php:444
56
+ #@ wp-recaptcha-integration
57
  msgid "<strong>Error:</strong> the Captcha didn’t verify."
58
  msgstr "<strong>Error:</strong> verificación Captcha incorrecta."
59
 
60
+ #: inc/class-wp_recaptcha_nocaptcha.php:198
61
+ #@ wp-recaptcha-integration
62
  msgid "Please enable JavaScript to submit this form."
63
  msgstr "Por favor activa Javascript para enviar este formulario"
64
 
65
  #: inc/class-wp_recaptcha_options.php:94
66
  #: inc/class-wp_recaptcha_options.php:106
67
+ #@ wp-recaptcha-integration
68
  msgid "reCaptcha Settings"
69
  msgstr "Ajustes reCAPTCHA"
70
 
71
  #: inc/class-wp_recaptcha_options.php:95
72
+ #@ wp-recaptcha-integration
73
  msgid "reCaptcha"
74
  msgstr "reCaptcha"
75
 
76
+ #: inc/class-wp_recaptcha_options.php:155
77
  #, php-format
78
+ #@ wp-recaptcha-integration
79
+ msgid "<strong>reCaptcha needs your attention:</strong> To make it work You need to enter an api key. <br />You can do so at the <a href=\"%s\">reCaptcha settings page</a>."
80
+ msgstr "<strong>reCaptcha necesita tu atención</strong> Para que funcione, necesitas introducir una llave API <br />Puedes hacerlo en los <a href=\"%s\">ajustes de reCaptcha</a>."
81
+
82
+ #: inc/class-wp_recaptcha_options.php:183
83
+ #@ wp-recaptcha-integration
84
+ msgid "Site key"
85
+ msgstr "Clave del sitio"
86
+
87
+ #: inc/class-wp_recaptcha_options.php:184
88
+ #@ wp-recaptcha-integration
89
+ msgid "Secret key"
90
+ msgstr "Clave secreta"
91
+
92
+ #: inc/class-wp_recaptcha_options.php:220
93
+ #@ default
 
 
 
 
 
 
 
94
  msgid "Language Settings"
95
  msgstr "Ajustes de lenguaje"
96
 
97
+ #: inc/class-wp_recaptcha_options.php:204
98
+ #@ wp-recaptcha-integration
99
  msgid "Flavor"
100
  msgstr "Sabor"
101
 
102
+ #: inc/class-wp_recaptcha_options.php:211
103
+ #@ wp-recaptcha-integration
104
  msgid "No Captcha where you just click a button"
105
  msgstr "Sin Captcha, dónde sólo hace falta pulsar un botón"
106
 
107
+ #: inc/class-wp_recaptcha_options.php:215
108
+ #@ wp-recaptcha-integration
109
  msgid "Old style reCAPTCHA where you type some cryptic text"
110
  msgstr "reCaptcha clásico, dónde descifras un texto críptico"
111
 
112
+ #: inc/class-wp_recaptcha_contactform7.php:98
113
+ #: inc/class-wp_recaptcha_ninjaforms.php:72
114
+ #: inc/class-wp_recaptcha_options.php:222
115
+ #@ contact-form-7
116
+ #@ wp-recaptcha-integration
117
  msgid "Theme"
118
  msgstr "Tema"
119
 
120
+ #: inc/class-wp_recaptcha_options.php:224
121
+ #@ wp-recaptcha-integration
122
  msgid "Disable Submit Button"
123
  msgstr "Desactiva Botón de Enviar"
124
 
125
+ #: inc/class-wp_recaptcha_options.php:226
126
+ #@ wp-recaptcha-integration
127
  msgid "Disable Form Submit Button until no-captcha is entered."
128
  msgstr "Desactivar botón de enviar hasta que el reCaptcha haya sido resuelto"
129
 
130
+ #: inc/class-wp_recaptcha_options.php:313
131
+ #@ wp-recaptcha-integration
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  msgid "Disable for known users"
133
  msgstr "Desactivar para usuarios conocidos"
134
 
135
+ #: inc/class-wp_recaptcha_options.php:315
136
+ #@ wp-recaptcha-integration
137
  msgid "Disable reCaptcha verification for logged in users."
138
  msgstr "Desactiva la verificación reCaptcha para usuarios conectados"
139
 
140
+ #: inc/class-wp_recaptcha_options.php:328
141
+ #@ wp-recaptcha-integration
142
+ msgid "Please configure the public and private key. <a href=\"http://www.google.com/recaptcha/whyrecaptcha\">What are you trying to tell me?</a>"
143
+ msgstr "Por favor configura las llaves pública y privada. <a href=\"http://www.google.com/recaptcha/whyrecaptcha\">¿De qué me estás hablando?</a>"
144
 
145
+ #: inc/class-wp_recaptcha_options.php:341
 
 
 
 
 
 
 
 
146
  #, php-format
147
+ #@ wp-recaptcha-integration
148
+ msgid "Please register your blog through the <a href=\"%s\">Google reCAPTCHA admin page</a> and enter the public and private key in the fields below. <a href=\"%s\">What is this all about?</a>"
149
+ msgstr "Por favor registra tu blog en la <a href=\"%s\">página de Administración de reCAPTCHA de Google</a>, e introduce las llaves públicas y privadas en los campos de más abajo. <a href=\"%s\">Si no sabes de que va esto, pincha aquí</a>"
 
 
 
 
 
 
150
 
151
+ #: inc/class-wp_recaptcha_options.php:349
152
+ #@ wp-recaptcha-integration
153
  msgid "You already entered an API Key. Use the button below to enter it again."
154
+ msgstr "Ya has introducido una llave API. Usa el botón de aquí abajo para volver a hacerlo."
 
 
155
 
156
+ #: inc/class-wp_recaptcha_options.php:364
157
+ #@ wp-recaptcha-integration
158
  msgid "New API Key"
159
  msgstr "Nueva llave API"
160
 
161
+ #: inc/class-wp_recaptcha_options.php:365
162
+ #@ wp-recaptcha-integration
163
  msgid "Test API Key"
164
  msgstr "Probar llave API"
165
 
166
+ #: inc/class-wp_recaptcha_options.php:419
167
+ #@ wp-recaptcha-integration
168
  msgid "Test verfication"
169
  msgstr "Probar verificación"
170
 
171
+ #: inc/class-wp_recaptcha_options.php:432
172
+ #@ wp-recaptcha-integration
173
  msgid "The secret Key is missing."
174
  msgstr "Falta la llave secreta"
175
 
176
+ #: inc/class-wp_recaptcha_options.php:433
177
+ #@ wp-recaptcha-integration
178
+ msgid "The secret Key is invalid. You better check your domain configuration and enter it again."
179
+ msgstr "La llave secreta es inválida. Verifica la configuración de tu dominio y vuelve a intentarlo."
 
 
 
180
 
181
+ #: inc/class-wp_recaptcha_options.php:434
182
+ #@ wp-recaptcha-integration
183
  msgid "The user response was missing"
184
  msgstr "No se ha recibido la respuesta del usuario"
185
 
186
+ #: inc/class-wp_recaptcha_options.php:435
187
+ #@ wp-recaptcha-integration
188
  msgid "Invalid user response"
189
  msgstr "Respuesta de usuario inválida"
190
 
191
+ #: inc/class-wp_recaptcha_options.php:444
192
+ #@ wp-recaptcha-integration
193
  msgid "Works! All good!"
194
  msgstr "¡Funciona! ¡Todo bien!"
195
 
196
+ #: inc/class-wp_recaptcha_options.php:456
197
+ #@ default
198
  msgid "Cancel"
199
  msgstr "Cancelar"
200
 
201
+ #: inc/class-wp_recaptcha_options.php:577
202
+ #@ wp-recaptcha-integration
203
  msgid "Automatic"
204
  msgstr "Automático"
205
 
206
+ #: inc/class-wp_recaptcha_options.php:578
207
+ #@ default
208
  msgid "Site Language"
209
  msgstr "Idioma del sitio"
210
 
211
+ #: inc/class-wp_recaptcha_options.php:579
212
+ #@ default
213
  msgid "Other"
214
  msgstr "Otro"
215
 
216
+ #: inc/class-wp_recaptcha_nocaptcha.php:88
217
+ #@ wp-recaptcha-integration
218
  msgid "Light"
219
  msgstr "Claro"
220
 
221
+ #: inc/class-wp_recaptcha_nocaptcha.php:91
222
+ #@ wp-recaptcha-integration
223
  msgid "Dark"
224
  msgstr "Oscuro"
225
 
226
+ #: inc/class-wp_recaptcha_recaptcha.php:51
227
+ #@ wp-recaptcha-integration
228
  msgid "Red"
229
  msgstr "Rojo"
230
 
231
+ #: inc/class-wp_recaptcha_recaptcha.php:54
232
+ #@ wp-recaptcha-integration
233
  msgid "White"
234
  msgstr "Blanco"
235
 
236
+ #: inc/class-wp_recaptcha_recaptcha.php:57
237
+ #@ wp-recaptcha-integration
238
  msgid "Black Glass"
239
  msgstr "Cristal Oscuro"
240
 
241
+ #: inc/class-wp_recaptcha_recaptcha.php:60
242
+ #@ wp-recaptcha-integration
243
  msgid "Clean"
244
  msgstr "Limpiar"
245
 
246
+ #: inc/class-wp_recaptcha_recaptcha.php:63
247
+ #@ wp-recaptcha-integration
248
  msgid "Custom"
249
  msgstr "Perzonalizado"
250
 
251
+ #: inc/class-wp_recaptcha_options.php:617
252
+ #@ wp-recaptcha-integration
253
  msgid "Unstyled HTML to apply your own Stylesheets."
254
  msgstr "HTML sin estilo para aplicar sus propias hojas de estilo."
255
 
256
+ #: inc/class-wp_recaptcha_options.php:690
257
+ #: inc/class-wp_recaptcha_options.php:715
258
+ #@ wp-recaptcha-integration
259
  msgid "ReCaptcha"
260
  msgstr "ReCaptcha"
261
 
262
+ #: inc/class-wp_recaptcha_options.php:713
263
+ #@ default
264
  msgid "Settings"
265
  msgstr "Ajustes"
266
 
267
+ #: inc/class-wp_recaptcha_recaptcha.php:146
268
+ #@ wp-recaptcha-integration
269
  msgid "Incorrect please try again"
270
  msgstr "Incorrecto, por favor inténtalo otra vez"
271
 
272
+ #: inc/class-wp_recaptcha_recaptcha.php:148
273
+ #@ wp-recaptcha-integration
274
  msgid "Enter the words above:"
275
  msgstr "Introduce las palabras de aquí arriba:"
276
 
277
+ #: inc/class-wp_recaptcha_recaptcha.php:149
278
+ #@ wp-recaptcha-integration
279
  msgid "Enter the numbers you hear:"
280
  msgstr "Introduce los números que oyes:"
281
 
282
+ #: inc/class-wp_recaptcha_recaptcha.php:153
283
+ #@ wp-recaptcha-integration
284
  msgid "Get another CAPTCHA"
285
  msgstr "Cargar otro CAPTCHA"
286
 
287
+ #: inc/class-wp_recaptcha_recaptcha.php:154
288
+ #@ wp-recaptcha-integration
289
  msgid "Get an audio CAPTCHA"
290
  msgstr "Usa un Captcha de Audio"
291
 
292
+ #: inc/class-wp_recaptcha_recaptcha.php:155
293
+ #@ wp-recaptcha-integration
294
  msgid "Get an image CAPTCHA"
295
  msgstr "Usa un Captcha de Imágen"
296
+
297
+ #: inc/class-wp_recaptcha_contactform7.php:100
298
+ #: inc/class-wp_recaptcha_ninjaforms.php:64
299
+ #@ wp-recaptcha-integration
300
+ msgid "Use default"
301
+ msgstr ""
302
+
303
+ #: inc/class-wp_recaptcha_options.php:173
304
+ #: inc/class-wp_recaptcha_options.php:177
305
+ #@ wp-recaptcha-integration
306
+ msgid "Connect"
307
+ msgstr ""
308
+
309
+ #: inc/class-wp_recaptcha_options.php:174
310
+ #@ wp-recaptcha-integration
311
+ msgid "Protect"
312
+ msgstr ""
313
+
314
+ #: inc/class-wp_recaptcha_options.php:175
315
+ #@ wp-recaptcha-integration
316
+ msgid "Style"
317
+ msgstr ""
318
+
319
+ #: inc/class-wp_recaptcha_options.php:282
320
+ #@ wp-recaptcha-integration
321
+ msgid "Comment Form"
322
+ msgstr ""
323
+
324
+ #: inc/class-wp_recaptcha_options.php:287
325
+ #@ wp-recaptcha-integration
326
+ msgid "Signup Form"
327
+ msgstr ""
328
+
329
+ #: inc/class-wp_recaptcha_options.php:292
330
+ #@ wp-recaptcha-integration
331
+ msgid "Login Form"
332
+ msgstr ""
333
+
334
+ #: inc/class-wp_recaptcha_options.php:297
335
+ #@ wp-recaptcha-integration
336
+ msgid "Lost Password Form"
337
+ msgstr ""
338
+
339
+ #: inc/class-wp_recaptcha_options.php:304
340
+ #@ wp-recaptcha-integration
341
+ msgid "woocommerce Checkout"
342
+ msgstr ""
343
+
344
+ #: inc/class-wp_recaptcha_options.php:308
345
+ #@ wp-recaptcha-integration
346
+ msgid "Forms to protect"
347
+ msgstr ""
348
+
349
+ #: inc/class-wp_recaptcha_options.php:317
350
+ #@ wp-recaptcha-integration
351
+ msgid "Prevent lockout"
352
+ msgstr ""
353
+
354
+ #: inc/class-wp_recaptcha_options.php:321
355
+ #@ wp-recaptcha-integration
356
+ msgid "Allow administrator to log in if API keys do not work."
357
+ msgstr ""
358
+
359
+ #: inc/class-wp_recaptcha_options.php:322
360
+ #@ wp-recaptcha-integration
361
+ msgid "When the captcha verification fails, and the private or public API key does not work the plugin will let you in anyway. Please note that with this option checked plus a broken keypair your site will be open to brute force attacks, that try to guess an administrator password."
362
+ msgstr ""
363
+
364
+ #: inc/class-wp_recaptcha_options.php:377
365
+ #@ wp-recaptcha-integration
366
+ msgid "Select which forms you want to protect with a captcha."
367
+ msgstr ""
368
+
369
+ #: inc/class-wp_recaptcha_options.php:387
370
+ #@ wp-recaptcha-integration
371
+ msgid "Choose a flavor and theme for your Captcha. Please note that with the old style reCaptcha you cannot have more than one captcha per page."
372
+ msgstr ""
373
+
374
+ #: inc/class-wp_recaptcha_woocommerce.php:72
375
+ #@ wp-recaptcha-integration
376
+ msgid "Are you human"
377
+ msgstr ""
378
+
languages/wp-recaptcha-integration-pt_BR.mo CHANGED
Binary file
languages/wp-recaptcha-integration-pt_BR.po CHANGED
@@ -1,9 +1,9 @@
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: WP reCaptcha Integration v1.0.4\n"
4
  "Report-Msgid-Bugs-To: \n"
5
  "POT-Creation-Date: \n"
6
- "PO-Revision-Date: 2015-01-14 21:23-0300\n"
7
  "Last-Translator: Vinícius Ferraz <contato@viniciusferraz.com>\n"
8
  "Language-Team: Lenura Soluções Web Sustentáveis <contato@lenura.com.br>\n"
9
  "MIME-Version: 1.0\n"
@@ -11,333 +11,374 @@ msgstr ""
11
  "Content-Transfer-Encoding: 8bit\n"
12
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
  "X-Generator: Poedit 1.7.3\n"
 
 
14
  "X-Poedit-SourceCharset: UTF-8\n"
15
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
16
  "X-Poedit-Basepath: ../\n"
17
- "X-Textdomain-Support: yes\n"
18
- "Language: pt_BR\n"
19
  "X-Poedit-SearchPath-0: .\n"
20
-
21
- # @ wp-recaptcha-integration
22
- #: inc/class-wp-recaptcha-woocommerce.php:71
23
- #: inc/class-wp-recaptcha-woocommerce.php:80
24
- #: inc/ninja_forms_field_recaptcha.php:87 wp-recaptcha-integration.php:260
25
- #: wp-recaptcha-integration.php:274 wp-recaptcha-integration.php:286
 
 
 
 
26
  msgid "<strong>Error:</strong> the Captcha didn’t verify."
27
  msgstr "<strong>Erro:</strong> o CAPTCHA digitado está incorreto."
28
 
29
- # @ wp-recaptcha-integration
30
- #: wp-recaptcha-integration.php:502
31
  msgid "Incorrect please try again"
32
  msgstr "Desculpe, o CAPTCHA digitado está incorreto."
33
 
34
- # @ wp-recaptcha-integration
35
- #: wp-recaptcha-integration.php:504
36
  msgid "Enter the words above:"
37
  msgstr "Digite as palavras acima:"
38
 
39
- # @ wp-recaptcha-integration
40
- #: wp-recaptcha-integration.php:505
41
  msgid "Enter the numbers you hear:"
42
  msgstr "Digite os números que você ouviu:"
43
 
44
- # @ wp-recaptcha-integration
45
- #: wp-recaptcha-integration.php:509
46
  msgid "Get another CAPTCHA"
47
  msgstr "Obter um novo CAPTCHA"
48
 
49
- # @ wp-recaptcha-integration
50
- #: wp-recaptcha-integration.php:510
51
  msgid "Get an audio CAPTCHA"
52
  msgstr "Ouvir o CAPTCHA"
53
 
54
- # @ wp-recaptcha-integration
55
- #: wp-recaptcha-integration.php:511
56
  msgid "Get an image CAPTCHA"
57
  msgstr "Obter um CAPTCHA"
58
 
59
- # @ wp-recaptcha-integration
60
- #: inc/contact_form_7_recaptcha.php:36 inc/ninja_forms_field_recaptcha.php:7
 
61
  msgid "reCAPTCHA"
62
  msgstr "reCAPTCHA"
63
 
64
- # @ contact-form-7
65
- #: inc/contact_form_7_recaptcha.php:49
66
  msgid "Required field?"
67
  msgstr "Campo obrigatório?"
68
 
69
- # @ contact-form-7
70
- #: inc/contact_form_7_recaptcha.php:50
71
  msgid "Name"
72
  msgstr "Nome"
73
 
74
- # @ contact-form-7
75
- #: inc/contact_form_7_recaptcha.php:53
76
  msgid "Copy this code and paste it into the form left."
77
  msgstr "Copie e cole este código no formulário."
78
 
79
- # @ wp-recaptcha-integration
80
- #: inc/contact_form_7_recaptcha.php:73
81
  msgid "The Captcha didn’t verify."
82
  msgstr "O CAPTCHA digitado está incorreto.Sicherheitstest nicht bestanden"
83
 
84
- # @ wp-recaptcha-integration
85
- #: inc/class-wp-recaptcha-options.php:152
86
  #, php-format
 
87
  msgid "<strong>reCaptcha needs your attention:</strong> To make it work You need to enter an api key. <br />You can do so at the <a href=\"%s\">reCaptcha settings page</a>."
88
  msgstr ""
89
  "<strong>O reCAPTCHA \n"
90
  "precisa da sua atenção:</strong> Para que o reCaptcha funcione corretamente você deverá obter uma Chave de API. <br />Você poderá fazer isto na <a \n"
91
  "href=\"%s\">página de configurações do reCaptcha</a>."
92
 
93
- # @ wp-recaptcha-integration
94
- #: inc/class-wp-recaptcha-options.php:173
95
- msgid "Public Key"
96
- msgstr "Chave pública (Public Key)"
97
-
98
- # @ wp-recaptcha-integration
99
- #: inc/class-wp-recaptcha-options.php:174
100
- msgid "Private Key"
101
- msgstr "Chave privada (Private Key)"
102
-
103
- # @ wp-recaptcha-integration
104
- #: inc/class-wp-recaptcha-options.php:175
105
- #: inc/class-wp-recaptcha-options.php:181
106
- msgid "Connecting"
107
- msgstr "Conectando"
108
-
109
- # @ wp-recaptcha-integration
110
- #: inc/class-wp-recaptcha-options.php:269
111
- msgid "Features"
112
- msgstr "Configurações"
113
 
114
- # @ wp-recaptcha-integration
115
- #: inc/class-wp-recaptcha-options.php:193
116
  msgid "Flavor"
117
  msgstr "Tipo de CAPTCHA"
118
 
119
- # @ wp-recaptcha-integration
120
- #: inc/class-wp-recaptcha-options.php:204
121
  msgid "Old style reCAPTCHA where you type some cryptic text"
122
  msgstr "reCAPTCHA \"Classico\", no qual o usuário digita um texto legível para humanos"
123
 
124
- # @ wp-recaptcha-integration
125
- #: inc/class-wp-recaptcha-options.php:209
 
 
 
126
  msgid "Theme"
127
  msgstr "Tema"
128
 
129
- # @ wp-recaptcha-integration
130
- #: inc/class-wp-recaptcha-options.php:229
131
- msgid "Protect Comments"
132
- msgstr "Proteger Comentários"
133
-
134
- # @ wp-recaptcha-integration
135
- #: inc/class-wp-recaptcha-options.php:231
136
- msgid "Protect comment forms with recaptcha."
137
- msgstr "Protege o formulário dos comentários com o reCAPTCHA."
138
-
139
- # @ wp-recaptcha-integration
140
- #: inc/class-wp-recaptcha-options.php:234
141
- msgid "Protect Signup"
142
- msgstr "Proteger Cadastro"
143
-
144
- # @ wp-recaptcha-integration
145
- #: inc/class-wp-recaptcha-options.php:236
146
- msgid "Protect signup form with recaptcha."
147
- msgstr "Protege o formulário de cadastro de novos usuários com o reCAPTCHA."
148
-
149
- # @ wp-recaptcha-integration
150
- #: inc/class-wp-recaptcha-options.php:239
151
- msgid "Protect Login"
152
- msgstr "Proteger Login"
153
-
154
- # @ wp-recaptcha-integration
155
- #: inc/class-wp-recaptcha-options.php:241
156
- msgid "Protect Login form with recaptcha."
157
- msgstr "Protege o formulário de login com o reCAPTCHA."
158
-
159
- # @ wp-recaptcha-integration
160
- #: inc/class-wp-recaptcha-options.php:264
161
  msgid "Disable for known users"
162
  msgstr "Desabilitar para usuários logados."
163
 
164
- # @ wp-recaptcha-integration
165
- #: inc/class-wp-recaptcha-options.php:266
166
  msgid "Disable reCaptcha verification for logged in users."
167
  msgstr "Se o usuário estiver logado, não exigir o reCAPTCHA nos formulários."
168
 
169
- # @ wp-recaptcha-integration
170
- #: inc/class-wp-recaptcha-options.php:272
171
  msgid "Please configure the public and private key. <a href=\"http://www.google.com/recaptcha/whyrecaptcha\">What are you trying to tell me?</a>"
172
  msgstr "Por favor, configure as chaves pública (Public Key) e privada (Private Key). <a href=\"http://www.google.com/recaptcha/whyrecaptcha\">O que isso significa?</a>"
173
 
174
- # @ wp-recaptcha-integration
175
- #: inc/class-wp-recaptcha-options.php:285
176
  #, php-format
177
- msgid "Please register your blog through the <a href=\"%s\">Google reCAPTCHA admin page</a> and enter the public and private key in the fields below. <a href=\"%s\">What is this all about</a>"
 
178
  msgstr ""
179
  "Por favor, registre seu site através do <a href=\"%s\">site do Google reCAPTCHA</a> \n"
180
  "e entre com as chaves pública (Public Key) e privada (Private Key) nos campos abaixo. <a \n"
181
  "href=\"%s\">O que isso significa?</a>"
182
 
183
- # @ wp-recaptcha-integration
184
- #: inc/class-wp-recaptcha-options.php:293
185
  msgid "You already entered an API Key. Use the button below to enter it again."
186
  msgstr "Você já forneceu uma Chave de API. Utilize o botão abaixo para fornecer outra."
187
 
188
- # @ wp-recaptcha-integration
189
- #: inc/class-wp-recaptcha-options.php:304
190
  msgid "New API Key"
191
  msgstr "Nova Chave de API"
192
 
193
- # @ default
194
- #: inc/class-wp-recaptcha-options.php:362
195
  msgid "Cancel"
196
  msgstr "Cancelar"
197
 
198
- # @ wp-recaptcha-integration
199
- #: inc/class-wp-recaptcha-options.php:442
200
  msgid "Light"
201
  msgstr "Light"
202
 
203
- # @ wp-recaptcha-integration
204
- #: inc/class-wp-recaptcha-options.php:446
205
  msgid "Dark"
206
  msgstr "Escuro"
207
 
208
- # @ wp-recaptcha-integration
209
- #: inc/class-wp-recaptcha-options.php:451
210
  msgid "Red"
211
  msgstr "Vermelho"
212
 
213
- # @ wp-recaptcha-integration
214
- #: inc/class-wp-recaptcha-options.php:455
215
  msgid "White"
216
  msgstr "Branco"
217
 
218
- # @ wp-recaptcha-integration
219
- #: inc/class-wp-recaptcha-options.php:459
220
  msgid "Black Glass"
221
  msgstr "Preto"
222
 
223
- # @ wp-recaptcha-integration
224
- #: inc/class-wp-recaptcha-options.php:463
225
  msgid "Clean"
226
  msgstr "Clean"
227
 
228
- # @ wp-recaptcha-integration
229
- #: inc/class-wp-recaptcha-options.php:467
230
  msgid "Custom"
231
  msgstr "Personalizado"
232
 
233
- # @ wp-recaptcha-integration
234
- #: inc/class-wp-recaptcha-options.php:487
235
  msgid "Unstyled HTML to apply your own Stylesheets."
236
  msgstr "HTML puro para que você aplique seu estilo."
237
 
238
- # @ wp-recaptcha-integration
239
- #: inc/class-wp-recaptcha-options.php:531
240
- #: inc/class-wp-recaptcha-options.php:555
241
  msgid "ReCaptcha"
242
  msgstr "reCAPTCHA"
243
 
244
- # @ default
245
- #: inc/class-wp-recaptcha-options.php:553
246
  msgid "Settings"
247
  msgstr "Configurações"
248
 
249
- # @ wp-recaptcha-integration
250
- #: inc/class-wp-recaptcha-options.php:200
251
  msgid "No Captcha where you just click a button"
252
  msgstr "\"Sem CAPTCHA\", no qual o usuário apenas clica em um botão"
253
 
254
- # @ wp-recaptcha-integration
255
- #: inc/class-wp-recaptcha-options.php:244
256
- msgid "Protect Lost Password"
257
- msgstr "Proteger Recuperação de Senha"
258
-
259
- # @ wp-recaptcha-integration
260
- #: inc/class-wp-recaptcha-options.php:246
261
- msgid "Protect Lost Password form with recaptcha."
262
- msgstr "Protege o formulário de recuperação de senhas."
263
-
264
- # @ wp-recaptcha-integration
265
- #: inc/class-wp-recaptcha-options.php:93
266
- #: inc/class-wp-recaptcha-options.php:105
267
  msgid "reCaptcha Settings"
268
  msgstr "Configurações do reCAPTCHA"
269
 
270
- # @ wp-recaptcha-integration
271
- #: inc/class-wp-recaptcha-options.php:94
272
  msgid "reCaptcha"
273
  msgstr "reCAPTCHA"
274
 
275
- # @ wp-recaptcha-integration
276
- #: inc/class-wp-recaptcha-options.php:305
277
  msgid "Test API Key"
278
  msgstr "Testar Chave de API"
279
 
280
- # @ wp-recaptcha-integration
281
- #: inc/class-wp-recaptcha-options.php:325
282
  msgid "Test verfication"
283
  msgstr "Verificação do Teste"
284
 
285
- # @ wp-recaptcha-integration
286
- #: inc/class-wp-recaptcha-options.php:338
287
  msgid "The secret Key is missing."
288
  msgstr "A chave privada não foi encontrada."
289
 
290
- # @ wp-recaptcha-integration
291
- #: inc/class-wp-recaptcha-options.php:339
292
  msgid "The secret Key is invalid. You better check your domain configuration and enter it again."
293
  msgstr "A chave privada é inválida. Verifique as configurações de domínio no site do Google reCAPTCHA e tente novamente."
294
 
295
- # @ wp-recaptcha-integration
296
- #: inc/class-wp-recaptcha-options.php:341
297
  msgid "Invalid user response"
298
  msgstr "Resposta de usuário inválida"
299
 
300
- # @ wp-recaptcha-integration
301
- #: inc/class-wp-recaptcha-options.php:350
302
  msgid "Works! All good!"
303
  msgstr "Funcionou! Tudo bem!"
304
 
305
- # @ wp-recaptcha-integration
306
- #: inc/class-wp-recaptcha-options.php:211
307
  msgid "Disable Submit Button"
308
  msgstr "Desabilitar Botão Enviar"
309
 
310
- # @ wp-recaptcha-integration
311
- #: inc/class-wp-recaptcha-options.php:213
312
  msgid "Disable Form Submit Button until no-captcha is entered."
313
  msgstr "Desabilitar o botão Enviar enquanto o usuário não digita nada."
314
 
315
- # @ wp-recaptcha-integration
316
- #: wp-recaptcha-integration.php:489
317
  msgid "Please enable JavaScript to submit this form."
318
  msgstr "Por favor, habilite o JavaScript para enviar este formulário."
319
 
320
- # @ wp-recaptcha-integration
321
- #: inc/class-wp-recaptcha-options.php:340
322
  msgid "The user response was missing"
323
  msgstr "Nenhum CAPTCHA foi digitado"
324
 
325
- # @ wp-recaptcha-integration
326
- #: inc/class-wp-recaptcha-options.php:251
327
- msgid "Protect WooCommerce Checkout"
328
- msgstr "Proteger Checkout do WooCommerce"
329
-
330
- # @ wp-recaptcha-integration
331
- #: inc/class-wp-recaptcha-options.php:255
332
- msgid "Protect wooCommerce Checkout with a recaptcha."
333
- msgstr "Protege o checkout (Finalizar Compra) do WooCommerce com reCAPTCHA."
334
-
335
- # @ wp-recaptcha-integration
336
- #: inc/class-wp-recaptcha-options.php:256
337
- msgid "This will only work with No Captcha flavor."
338
- msgstr "Isto somente funcionará corretamente com o tipo \"Sem CAPTCHA\" do reCAPTCHA."
339
-
340
- # @ wp-recaptcha-integration
341
- #: inc/class-wp-recaptcha-options.php:261
342
- msgid "The Old Style recaptcha doesn‘t work together with the WooCommerce checkout form. The Captcha will not be displayed,"
343
- msgstr "O tipo \"Clássico\" do reCAPTCHA não funciona com o formulário de checkout (Finalizar Compra) do WooCommerce. O CAPTCHA não será exibido,"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  msgid ""
2
  msgstr ""
3
+ "Project-Id-Version: WP reCaptcha Integration v1.1.0\n"
4
  "Report-Msgid-Bugs-To: \n"
5
  "POT-Creation-Date: \n"
6
+ "PO-Revision-Date: 2015-02-25 14:37:26+0000\n"
7
  "Last-Translator: Vinícius Ferraz <contato@viniciusferraz.com>\n"
8
  "Language-Team: Lenura Soluções Web Sustentáveis <contato@lenura.com.br>\n"
9
  "MIME-Version: 1.0\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
  "X-Generator: Poedit 1.7.3\n"
14
+ "X-Poedit-Language: \n"
15
+ "X-Poedit-Country: \n"
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n"
18
  "X-Poedit-Basepath: ../\n"
19
+ "X-Poedit-Bookmarks: \n"
 
20
  "X-Poedit-SearchPath-0: .\n"
21
+ "X-Textdomain-Support: yes"
22
+
23
+ #: inc/class-wp_recaptcha_ninjaforms.php:134
24
+ #: inc/class-wp_recaptcha_woocommerce.php:83
25
+ #: inc/class-wp_recaptcha_woocommerce.php:92
26
+ #: wp-recaptcha-integration.php:372
27
+ #: wp-recaptcha-integration.php:418
28
+ #: wp-recaptcha-integration.php:432
29
+ #: wp-recaptcha-integration.php:444
30
+ #@ wp-recaptcha-integration
31
  msgid "<strong>Error:</strong> the Captcha didn’t verify."
32
  msgstr "<strong>Erro:</strong> o CAPTCHA digitado está incorreto."
33
 
34
+ #: inc/class-wp_recaptcha_recaptcha.php:146
35
+ #@ wp-recaptcha-integration
36
  msgid "Incorrect please try again"
37
  msgstr "Desculpe, o CAPTCHA digitado está incorreto."
38
 
39
+ #: inc/class-wp_recaptcha_recaptcha.php:148
40
+ #@ wp-recaptcha-integration
41
  msgid "Enter the words above:"
42
  msgstr "Digite as palavras acima:"
43
 
44
+ #: inc/class-wp_recaptcha_recaptcha.php:149
45
+ #@ wp-recaptcha-integration
46
  msgid "Enter the numbers you hear:"
47
  msgstr "Digite os números que você ouviu:"
48
 
49
+ #: inc/class-wp_recaptcha_recaptcha.php:153
50
+ #@ wp-recaptcha-integration
51
  msgid "Get another CAPTCHA"
52
  msgstr "Obter um novo CAPTCHA"
53
 
54
+ #: inc/class-wp_recaptcha_recaptcha.php:154
55
+ #@ wp-recaptcha-integration
56
  msgid "Get an audio CAPTCHA"
57
  msgstr "Ouvir o CAPTCHA"
58
 
59
+ #: inc/class-wp_recaptcha_recaptcha.php:155
60
+ #@ wp-recaptcha-integration
61
  msgid "Get an image CAPTCHA"
62
  msgstr "Obter um CAPTCHA"
63
 
64
+ #: inc/class-wp_recaptcha_contactform7.php:78
65
+ #: inc/class-wp_recaptcha_ninjaforms.php:36
66
+ #@ wp-recaptcha-integration
67
  msgid "reCAPTCHA"
68
  msgstr "reCAPTCHA"
69
 
70
+ #: inc/class-wp_recaptcha_contactform7.php:91
71
+ #@ contact-form-7
72
  msgid "Required field?"
73
  msgstr "Campo obrigatório?"
74
 
75
+ #: inc/class-wp_recaptcha_contactform7.php:93
76
+ #@ contact-form-7
77
  msgid "Name"
78
  msgstr "Nome"
79
 
80
+ #: inc/class-wp_recaptcha_contactform7.php:119
81
+ #@ contact-form-7
82
  msgid "Copy this code and paste it into the form left."
83
  msgstr "Copie e cole este código no formulário."
84
 
85
+ #: inc/class-wp_recaptcha_contactform7.php:137
86
+ #@ wp-recaptcha-integration
87
  msgid "The Captcha didn’t verify."
88
  msgstr "O CAPTCHA digitado está incorreto.Sicherheitstest nicht bestanden"
89
 
90
+ #: inc/class-wp_recaptcha_options.php:155
 
91
  #, php-format
92
+ #@ wp-recaptcha-integration
93
  msgid "<strong>reCaptcha needs your attention:</strong> To make it work You need to enter an api key. <br />You can do so at the <a href=\"%s\">reCaptcha settings page</a>."
94
  msgstr ""
95
  "<strong>O reCAPTCHA \n"
96
  "precisa da sua atenção:</strong> Para que o reCaptcha funcione corretamente você deverá obter uma Chave de API. <br />Você poderá fazer isto na <a \n"
97
  "href=\"%s\">página de configurações do reCaptcha</a>."
98
 
99
+ #: inc/class-wp_recaptcha_options.php:183
100
+ #@ wp-recaptcha-integration
101
+ msgid "Site key"
102
+ msgstr "Chave pública (Sitekey)"
103
+
104
+ #: inc/class-wp_recaptcha_options.php:184
105
+ #@ wp-recaptcha-integration
106
+ msgid "Secret key"
107
+ msgstr "Chave privada (Secret Key)"
 
 
 
 
 
 
 
 
 
 
 
108
 
109
+ #: inc/class-wp_recaptcha_options.php:204
110
+ #@ wp-recaptcha-integration
111
  msgid "Flavor"
112
  msgstr "Tipo de CAPTCHA"
113
 
114
+ #: inc/class-wp_recaptcha_options.php:215
115
+ #@ wp-recaptcha-integration
116
  msgid "Old style reCAPTCHA where you type some cryptic text"
117
  msgstr "reCAPTCHA \"Classico\", no qual o usuário digita um texto legível para humanos"
118
 
119
+ #: inc/class-wp_recaptcha_contactform7.php:98
120
+ #: inc/class-wp_recaptcha_ninjaforms.php:72
121
+ #: inc/class-wp_recaptcha_options.php:222
122
+ #@ contact-form-7
123
+ #@ wp-recaptcha-integration
124
  msgid "Theme"
125
  msgstr "Tema"
126
 
127
+ #: inc/class-wp_recaptcha_options.php:313
128
+ #@ wp-recaptcha-integration
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
  msgid "Disable for known users"
130
  msgstr "Desabilitar para usuários logados."
131
 
132
+ #: inc/class-wp_recaptcha_options.php:315
133
+ #@ wp-recaptcha-integration
134
  msgid "Disable reCaptcha verification for logged in users."
135
  msgstr "Se o usuário estiver logado, não exigir o reCAPTCHA nos formulários."
136
 
137
+ #: inc/class-wp_recaptcha_options.php:328
138
+ #@ wp-recaptcha-integration
139
  msgid "Please configure the public and private key. <a href=\"http://www.google.com/recaptcha/whyrecaptcha\">What are you trying to tell me?</a>"
140
  msgstr "Por favor, configure as chaves pública (Public Key) e privada (Private Key). <a href=\"http://www.google.com/recaptcha/whyrecaptcha\">O que isso significa?</a>"
141
 
142
+ #: inc/class-wp_recaptcha_options.php:341
 
143
  #, php-format
144
+ #@ wp-recaptcha-integration
145
+ msgid "Please register your blog through the <a href=\"%s\">Google reCAPTCHA admin page</a> and enter the public and private key in the fields below. <a href=\"%s\">What is this all about?</a>"
146
  msgstr ""
147
  "Por favor, registre seu site através do <a href=\"%s\">site do Google reCAPTCHA</a> \n"
148
  "e entre com as chaves pública (Public Key) e privada (Private Key) nos campos abaixo. <a \n"
149
  "href=\"%s\">O que isso significa?</a>"
150
 
151
+ #: inc/class-wp_recaptcha_options.php:349
152
+ #@ wp-recaptcha-integration
153
  msgid "You already entered an API Key. Use the button below to enter it again."
154
  msgstr "Você já forneceu uma Chave de API. Utilize o botão abaixo para fornecer outra."
155
 
156
+ #: inc/class-wp_recaptcha_options.php:364
157
+ #@ wp-recaptcha-integration
158
  msgid "New API Key"
159
  msgstr "Nova Chave de API"
160
 
161
+ #: inc/class-wp_recaptcha_options.php:456
162
+ #@ default
163
  msgid "Cancel"
164
  msgstr "Cancelar"
165
 
166
+ #: inc/class-wp_recaptcha_nocaptcha.php:88
167
+ #@ wp-recaptcha-integration
168
  msgid "Light"
169
  msgstr "Light"
170
 
171
+ #: inc/class-wp_recaptcha_nocaptcha.php:91
172
+ #@ wp-recaptcha-integration
173
  msgid "Dark"
174
  msgstr "Escuro"
175
 
176
+ #: inc/class-wp_recaptcha_recaptcha.php:51
177
+ #@ wp-recaptcha-integration
178
  msgid "Red"
179
  msgstr "Vermelho"
180
 
181
+ #: inc/class-wp_recaptcha_recaptcha.php:54
182
+ #@ wp-recaptcha-integration
183
  msgid "White"
184
  msgstr "Branco"
185
 
186
+ #: inc/class-wp_recaptcha_recaptcha.php:57
187
+ #@ wp-recaptcha-integration
188
  msgid "Black Glass"
189
  msgstr "Preto"
190
 
191
+ #: inc/class-wp_recaptcha_recaptcha.php:60
192
+ #@ wp-recaptcha-integration
193
  msgid "Clean"
194
  msgstr "Clean"
195
 
196
+ #: inc/class-wp_recaptcha_recaptcha.php:63
197
+ #@ wp-recaptcha-integration
198
  msgid "Custom"
199
  msgstr "Personalizado"
200
 
201
+ #: inc/class-wp_recaptcha_options.php:617
202
+ #@ wp-recaptcha-integration
203
  msgid "Unstyled HTML to apply your own Stylesheets."
204
  msgstr "HTML puro para que você aplique seu estilo."
205
 
206
+ #: inc/class-wp_recaptcha_options.php:690
207
+ #: inc/class-wp_recaptcha_options.php:715
208
+ #@ wp-recaptcha-integration
209
  msgid "ReCaptcha"
210
  msgstr "reCAPTCHA"
211
 
212
+ #: inc/class-wp_recaptcha_options.php:713
213
+ #@ default
214
  msgid "Settings"
215
  msgstr "Configurações"
216
 
217
+ #: inc/class-wp_recaptcha_options.php:211
218
+ #@ wp-recaptcha-integration
219
  msgid "No Captcha where you just click a button"
220
  msgstr "\"Sem CAPTCHA\", no qual o usuário apenas clica em um botão"
221
 
222
+ #: inc/class-wp_recaptcha_options.php:94
223
+ #: inc/class-wp_recaptcha_options.php:106
224
+ #@ wp-recaptcha-integration
 
 
 
 
 
 
 
 
 
 
225
  msgid "reCaptcha Settings"
226
  msgstr "Configurações do reCAPTCHA"
227
 
228
+ #: inc/class-wp_recaptcha_options.php:95
229
+ #@ wp-recaptcha-integration
230
  msgid "reCaptcha"
231
  msgstr "reCAPTCHA"
232
 
233
+ #: inc/class-wp_recaptcha_options.php:365
234
+ #@ wp-recaptcha-integration
235
  msgid "Test API Key"
236
  msgstr "Testar Chave de API"
237
 
238
+ #: inc/class-wp_recaptcha_options.php:419
239
+ #@ wp-recaptcha-integration
240
  msgid "Test verfication"
241
  msgstr "Verificação do Teste"
242
 
243
+ #: inc/class-wp_recaptcha_options.php:432
244
+ #@ wp-recaptcha-integration
245
  msgid "The secret Key is missing."
246
  msgstr "A chave privada não foi encontrada."
247
 
248
+ #: inc/class-wp_recaptcha_options.php:433
249
+ #@ wp-recaptcha-integration
250
  msgid "The secret Key is invalid. You better check your domain configuration and enter it again."
251
  msgstr "A chave privada é inválida. Verifique as configurações de domínio no site do Google reCAPTCHA e tente novamente."
252
 
253
+ #: inc/class-wp_recaptcha_options.php:435
254
+ #@ wp-recaptcha-integration
255
  msgid "Invalid user response"
256
  msgstr "Resposta de usuário inválida"
257
 
258
+ #: inc/class-wp_recaptcha_options.php:444
259
+ #@ wp-recaptcha-integration
260
  msgid "Works! All good!"
261
  msgstr "Funcionou! Tudo bem!"
262
 
263
+ #: inc/class-wp_recaptcha_options.php:224
264
+ #@ wp-recaptcha-integration
265
  msgid "Disable Submit Button"
266
  msgstr "Desabilitar Botão Enviar"
267
 
268
+ #: inc/class-wp_recaptcha_options.php:226
269
+ #@ wp-recaptcha-integration
270
  msgid "Disable Form Submit Button until no-captcha is entered."
271
  msgstr "Desabilitar o botão Enviar enquanto o usuário não digita nada."
272
 
273
+ #: inc/class-wp_recaptcha_nocaptcha.php:198
274
+ #@ wp-recaptcha-integration
275
  msgid "Please enable JavaScript to submit this form."
276
  msgstr "Por favor, habilite o JavaScript para enviar este formulário."
277
 
278
+ #: inc/class-wp_recaptcha_options.php:434
279
+ #@ wp-recaptcha-integration
280
  msgid "The user response was missing"
281
  msgstr "Nenhum CAPTCHA foi digitado"
282
 
283
+ #: inc/class-wp_recaptcha_contactform7.php:100
284
+ #: inc/class-wp_recaptcha_ninjaforms.php:64
285
+ #@ wp-recaptcha-integration
286
+ msgid "Use default"
287
+ msgstr ""
288
+
289
+ #: inc/class-wp_recaptcha_options.php:173
290
+ #: inc/class-wp_recaptcha_options.php:177
291
+ #@ wp-recaptcha-integration
292
+ msgid "Connect"
293
+ msgstr ""
294
+
295
+ #: inc/class-wp_recaptcha_options.php:174
296
+ #@ wp-recaptcha-integration
297
+ msgid "Protect"
298
+ msgstr ""
299
+
300
+ #: inc/class-wp_recaptcha_options.php:175
301
+ #@ wp-recaptcha-integration
302
+ msgid "Style"
303
+ msgstr ""
304
+
305
+ #: inc/class-wp_recaptcha_options.php:220
306
+ #@ default
307
+ msgid "Language Settings"
308
+ msgstr ""
309
+
310
+ #: inc/class-wp_recaptcha_options.php:282
311
+ #@ wp-recaptcha-integration
312
+ msgid "Comment Form"
313
+ msgstr ""
314
+
315
+ #: inc/class-wp_recaptcha_options.php:287
316
+ #@ wp-recaptcha-integration
317
+ msgid "Signup Form"
318
+ msgstr ""
319
+
320
+ #: inc/class-wp_recaptcha_options.php:292
321
+ #@ wp-recaptcha-integration
322
+ msgid "Login Form"
323
+ msgstr ""
324
+
325
+ #: inc/class-wp_recaptcha_options.php:297
326
+ #@ wp-recaptcha-integration
327
+ msgid "Lost Password Form"
328
+ msgstr ""
329
+
330
+ #: inc/class-wp_recaptcha_options.php:304
331
+ #@ wp-recaptcha-integration
332
+ msgid "woocommerce Checkout"
333
+ msgstr ""
334
+
335
+ #: inc/class-wp_recaptcha_options.php:308
336
+ #@ wp-recaptcha-integration
337
+ msgid "Forms to protect"
338
+ msgstr ""
339
+
340
+ #: inc/class-wp_recaptcha_options.php:317
341
+ #@ wp-recaptcha-integration
342
+ msgid "Prevent lockout"
343
+ msgstr ""
344
+
345
+ #: inc/class-wp_recaptcha_options.php:321
346
+ #@ wp-recaptcha-integration
347
+ msgid "Allow administrator to log in if API keys do not work."
348
+ msgstr ""
349
+
350
+ #: inc/class-wp_recaptcha_options.php:322
351
+ #@ wp-recaptcha-integration
352
+ msgid "When the captcha verification fails, and the private or public API key does not work the plugin will let you in anyway. Please note that with this option checked plus a broken keypair your site will be open to brute force attacks, that try to guess an administrator password."
353
+ msgstr ""
354
+
355
+ #: inc/class-wp_recaptcha_options.php:377
356
+ #@ wp-recaptcha-integration
357
+ msgid "Select which forms you want to protect with a captcha."
358
+ msgstr ""
359
+
360
+ #: inc/class-wp_recaptcha_options.php:387
361
+ #@ wp-recaptcha-integration
362
+ msgid "Choose a flavor and theme for your Captcha. Please note that with the old style reCaptcha you cannot have more than one captcha per page."
363
+ msgstr ""
364
+
365
+ #: inc/class-wp_recaptcha_options.php:577
366
+ #@ wp-recaptcha-integration
367
+ msgid "Automatic"
368
+ msgstr ""
369
+
370
+ #: inc/class-wp_recaptcha_options.php:578
371
+ #@ default
372
+ msgid "Site Language"
373
+ msgstr ""
374
+
375
+ #: inc/class-wp_recaptcha_options.php:579
376
+ #@ default
377
+ msgid "Other"
378
+ msgstr ""
379
+
380
+ #: inc/class-wp_recaptcha_woocommerce.php:72
381
+ #@ wp-recaptcha-integration
382
+ msgid "Are you human"
383
+ msgstr ""
384
+
readme.txt CHANGED
@@ -1,14 +1,14 @@
1
  === WordPress ReCaptcha Integration ===
2
  Contributors: podpirate
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=F8NKC6TCASUXE
4
- Tags: security, captcha, recaptcha, no captcha, login, signup, contact form 7, ninja forms
5
  Requires at least: 3.8
6
- Tested up to: 4.1
7
- Stable tag: 1.0.9
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
- reCaptcha for login, signup, comment forms, Ninja Forms and Contact Form 7.
12
 
13
  == Description ==
14
 
@@ -24,6 +24,7 @@ form 7 as well as a plugin API for your own integrations.
24
  - WooCommerce Support (Only checkout, registration and login form. Not password reset)
25
  - [Ninja Forms](http://ninjaforms.com/) integration
26
  - [Contact Form 7](https://wordpress.org/plugins/contact-form-7/) integration
 
27
 
28
  = Localizations =
29
  - Brazilian Portuguese (thanks to [Vinícius Ferraz](http://www.viniciusferraz.com))
@@ -38,43 +39,125 @@ On a **WP Multisite** you can either activate the plugin network wide or on a si
38
 
39
  Activated on a single site everything works as usual.
40
 
41
- With network activation entering the API key and setting up where a recaptcha is required
42
- is up to the network admin. A blog admin can only select a theme and override the API key
43
- if necessary.
44
 
45
 
46
  = Known Limitations =
47
  - You can't have more than one old style reCaptcha on a page. This is a limitiation of
48
  reCaptcha itself. If that's an issue for you, you should use the no Captcha Form.
49
 
 
 
 
 
50
  - On a **Contact Form 7** when the reCaptcha is disabled (e.g. for logged in users) the field
51
  label will be still visible. This is due to CF7 Shortcode architecture, and can't be fixed.
52
 
53
  To handle this there is a filter `recaptcha_disabled_html`. You can return a message for your logged-in
54
  users here. Check out the [GitHub Repo](https://github.com/mcguffin/wp-recaptcha-integration) for details.
55
 
56
- - Old style reCaptchas do not work together with **WooCommerce**.
57
 
58
- - In **WooCommerce** the reset password form can not be protected by a captcha. To
59
- overcome this restriction I requested a little change in the official WC repository, so there
60
- is hope for a future version. See: (https://github.com/woothemes/woocommerce/pull/7029)
 
61
 
62
- - There is no (and as far as one can see, there will never be) support for the **MailPoet**
63
- subscription form.
64
 
65
  == Installation ==
66
 
67
  First follow the standard [WordPress plugin installation procedere](http://codex.wordpress.org/Managing_Plugins).
68
 
69
- Then go to the [Google Recaptcha Site](http://www.google.com/recaptcha), sign up your site and enter your API-Keys on the configuration page.
70
 
71
  == Frequently asked questions ==
72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  = Will you support plugin XYZ? =
74
 
75
  If XYZ stands for a widely used free and OpenSource plugin in active development with some
76
  100k+ downloads I will give it a try. Just ask.
77
 
 
78
  = The captcha does not show up. What’s wrong? =
79
 
80
  On the plugin settings page check out if the option “Disable for known users” is activated (it is by default).
@@ -94,6 +177,7 @@ Here is some code that will fix it:
94
 
95
  If the problem still persist, Houston really has a problem, and you are welcome to post a support request.
96
 
 
97
  = Disabled submit buttons should be grey! Why aren't they? =
98
 
99
  Very likely the Author of your Theme didn't care that a non functinal form element should
@@ -105,16 +189,19 @@ look different than a functional one. This how you can overcome that issue:
105
  - Create a zip Archive out of the included file `grey-out-disabled.php` and name it `grey-out-disabled.zip`.
106
  - Install and activate it like any other WordPress plugin
107
 
 
108
  = I want my visitors to solve only one Captcha and then never again. Is that possible? =
109
 
110
  Yes. You can store in a session if a captcha was solved, and use the `wp_recaptcha_required`
111
  filter to supress further captchas. See (https://github.com/mcguffin/wp-recaptcha-integration#real-world-example)
112
  for a code example.
113
 
 
114
  = I found a bug. Where should I post it? =
115
 
116
  I personally prefer GitHub but you can post it in the forum as well. The plugin code is here: [GitHub](https://github.com/mcguffin/wp-recaptcha-integration)
117
 
 
118
  = I want to use the latest files. How can I do this? =
119
 
120
  Use the GitHub Repo rather than the WordPress Plugin. Do as follows:
@@ -131,9 +218,11 @@ Please note that the GitHub repository is more likely to contain unstable and un
131
  concerning stability or security (like crashes, vulnerabilities and alike) are more likely to be fixed in
132
  the official WP plugin repository first.
133
 
 
134
  = I found a bug and fixed it. How can I contribute? =
135
 
136
- Either post it on [GitHub](https://github.com/mcguffin/wp-recaptcha-integration) or—if you are working on a cloned repository—send me a pull request.
 
137
 
138
  = Will you accept translations? =
139
 
@@ -144,14 +233,26 @@ or removed some strings in the meantime.
144
  As soon as there is a [public centralized repository for WordPress plugin translations](https://translate.wordpress.org/projects/wp-plugins)
145
  I will migrate all the translation stuff there.
146
 
 
147
  == Screenshots ==
148
 
149
  1. Plugin Settings
150
  2. Ninja Form Integration
151
  3. Contact Form 7 Integration
152
 
 
153
  == Changelog ==
154
 
 
 
 
 
 
 
 
 
 
 
155
  = 1.0.9 =
156
  - Fix: Preserve PHP 5.2 compatibility
157
 
1
  === WordPress ReCaptcha Integration ===
2
  Contributors: podpirate
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=F8NKC6TCASUXE
4
+ Tags: security, captcha, recaptcha, no captcha, login, signup, contact form 7, ninja forms, woocommerce
5
  Requires at least: 3.8
6
+ Tested up to: 4.2
7
+ Stable tag: 1.1.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
+ reCaptcha for login, signup, comment forms, Ninja Forms Contact Form 7 and woocommerce.
12
 
13
  == Description ==
14
 
24
  - WooCommerce Support (Only checkout, registration and login form. Not password reset)
25
  - [Ninja Forms](http://ninjaforms.com/) integration
26
  - [Contact Form 7](https://wordpress.org/plugins/contact-form-7/) integration
27
+ - For integration in your custom forms see this [wiki article](https://github.com/mcguffin/wp-recaptcha-integration/wiki/Custom-Themes-and-Forms) for details.
28
 
29
  = Localizations =
30
  - Brazilian Portuguese (thanks to [Vinícius Ferraz](http://www.viniciusferraz.com))
39
 
40
  Activated on a single site everything works as usual.
41
 
42
+ With network activation entering the API key and setting up where a captcha is required
43
+ is up to the network admin. A blog admin can override the API key e.g. when his blog is
44
+ running under his/her own domain name.
45
 
46
 
47
  = Known Limitations =
48
  - You can't have more than one old style reCaptcha on a page. This is a limitiation of
49
  reCaptcha itself. If that's an issue for you, you should use the no Captcha Form.
50
 
51
+ - A No Captcha definitely requires client side JavaScript enabled. That's how it does its
52
+ sophisticated bot detection magic. There is no fallback. If your visitor does not have
53
+ JS enabled the captcha test will not let him through.
54
+
55
  - On a **Contact Form 7** when the reCaptcha is disabled (e.g. for logged in users) the field
56
  label will be still visible. This is due to CF7 Shortcode architecture, and can't be fixed.
57
 
58
  To handle this there is a filter `recaptcha_disabled_html`. You can return a message for your logged-in
59
  users here. Check out the [GitHub Repo](https://github.com/mcguffin/wp-recaptcha-integration) for details.
60
 
61
+ - Old style reCaptcha does not work together with **WooCommerce**.
62
 
63
+ - In **WooCommerce** the reset password form can not be protected by a captcha. Woocommerce does
64
+ not fire any action in the lost password form, so there is no way for the plugin to hook in
65
+ To overcome this restriction [I asked for a little change](https://github.com/woothemes/woocommerce/pull/7029)
66
+ in the official WC repository. Sadly it did not make into the WC core.
67
 
68
+ - Due to a lack of filters there is no (and as far as one can see, there will never be)
69
+ support for the **MailPoet** subscription form.
70
 
71
  == Installation ==
72
 
73
  First follow the standard [WordPress plugin installation procedere](http://codex.wordpress.org/Managing_Plugins).
74
 
75
+ Then go to the [Google Recaptcha Site](http://www.google.com/recaptcha), register your site and enter your API-Keys on the configuration page.
76
 
77
  == Frequently asked questions ==
78
 
79
+ = The login captcha says 'ERROR: (something somthing)'. What can I do? =
80
+
81
+ If it says 'Invalid sitekey' and you checked the 'Prevent lockout' option on the plugin
82
+ settings (it's on by default) you can log in with an administrator account and ignore the
83
+ captcha. If the keys are really invalid, the plugin will let you in, so you can set up a
84
+ new keypair.
85
+
86
+ When you see "Invalid domain for site key", then the key is okay in general, but not for
87
+ your domain. The server can not test this case, so an effective lockout prevention is not
88
+ possible.
89
+
90
+ You will either need one of the following:
91
+ - access to the settings for your sitekey on [reCaptcha API key administration](https://www.google.com/recaptcha/admin#list)
92
+ - access to your WordPress installation (via SSH or FTP) or database access
93
+ - database access
94
+
95
+
96
+ **With API key admin**
97
+
98
+ 1. Look at source code of the login page.
99
+
100
+ 2. Find the part saying <code>data-sitekey="**XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX**"</code>
101
+ The part marked in bold is your sitekey.
102
+
103
+ 3. Go to the [Google reCaptcha API key administration](https://www.google.com/recaptcha/admin#list)
104
+
105
+ 4. Find the list entry with the sitekey from step 2
106
+
107
+ 5. If lockout prevention is enabled you can simply delete the key set up a new one.
108
+ If not enter your domain name at "Domains" in a new line and wait up to 30 minutes.
109
+
110
+
111
+ **With FTP Access:**
112
+
113
+ 1. Add this line of Code somewhere at the end of your theme functions.php:
114
+ <code>add_filter('wp_recaptcha_required','__return_false');</code>
115
+
116
+ This will disable the chaptcha everywhere.
117
+
118
+ 2. Set up a new keypair and test it.
119
+
120
+ 3. Remove the line above from your theme functions.php.
121
+
122
+
123
+ **If you have Database access**
124
+
125
+ 1. Execute the following SQL-Commands in your Database:
126
+ <code>DELETE FROM wp_options WHERE option_name = 'recaptcha_publickey';</code>
127
+ <code>DELETE FROM wp_options WHERE option_name = 'recaptcha_privatekey';</code>
128
+
129
+ (Please note that `wp_options` might have a different prefix in your installation.)
130
+
131
+ 2. After the login you will see a message asking you to set up the API keys.
132
+
133
+ 3. Set up a new keypair on Google and test it.
134
+
135
+
136
+ **If none of these works for you**
137
+
138
+ That's too bad...
139
+
140
+
141
+ = Privacy: Will the captcha send the visitors IP address to google? =
142
+
143
+ Yes and no. The captcha verification process, comming into effect after the user has solved
144
+ the challenge does not require the disclosure of the visitors IP address, so it is omitted.
145
+
146
+ But everything related to the displaying of the captcha widget like the challenge image,
147
+ the JavaScripts and so on is loaded directly from Google and is very likely to be logged,
148
+ evaluated and stored forever.
149
+
150
+ In other words: Google knows which (recaptcha protected) website is accessed from which IP.
151
+
152
+ If that's an issue for you, you should rather use a self hosted solution.
153
+
154
+
155
  = Will you support plugin XYZ? =
156
 
157
  If XYZ stands for a widely used free and OpenSource plugin in active development with some
158
  100k+ downloads I will give it a try. Just ask.
159
 
160
+
161
  = The captcha does not show up. What’s wrong? =
162
 
163
  On the plugin settings page check out if the option “Disable for known users” is activated (it is by default).
177
 
178
  If the problem still persist, Houston really has a problem, and you are welcome to post a support request.
179
 
180
+
181
  = Disabled submit buttons should be grey! Why aren't they? =
182
 
183
  Very likely the Author of your Theme didn't care that a non functinal form element should
189
  - Create a zip Archive out of the included file `grey-out-disabled.php` and name it `grey-out-disabled.zip`.
190
  - Install and activate it like any other WordPress plugin
191
 
192
+
193
  = I want my visitors to solve only one Captcha and then never again. Is that possible? =
194
 
195
  Yes. You can store in a session if a captcha was solved, and use the `wp_recaptcha_required`
196
  filter to supress further captchas. See (https://github.com/mcguffin/wp-recaptcha-integration#real-world-example)
197
  for a code example.
198
 
199
+
200
  = I found a bug. Where should I post it? =
201
 
202
  I personally prefer GitHub but you can post it in the forum as well. The plugin code is here: [GitHub](https://github.com/mcguffin/wp-recaptcha-integration)
203
 
204
+
205
  = I want to use the latest files. How can I do this? =
206
 
207
  Use the GitHub Repo rather than the WordPress Plugin. Do as follows:
218
  concerning stability or security (like crashes, vulnerabilities and alike) are more likely to be fixed in
219
  the official WP plugin repository first.
220
 
221
+
222
  = I found a bug and fixed it. How can I contribute? =
223
 
224
+ Either post it on [GitHub](https://github.com/mcguffin/wp-recaptcha-integration) or—if you are working on a forked repository—send me a pull request.
225
+
226
 
227
  = Will you accept translations? =
228
 
233
  As soon as there is a [public centralized repository for WordPress plugin translations](https://translate.wordpress.org/projects/wp-plugins)
234
  I will migrate all the translation stuff there.
235
 
236
+
237
  == Screenshots ==
238
 
239
  1. Plugin Settings
240
  2. Ninja Form Integration
241
  3. Contact Form 7 Integration
242
 
243
+
244
  == Changelog ==
245
 
246
+ = 1.1.0 =
247
+ - Feature: Prevent Lockout - Admins can still log in when the API keys are invalid
248
+ - Feature: Customize error message on contact form 7 and ninja forms
249
+ - Filters: add actions `recaptcha_print`, `print_comments_recaptcha` and filters `recaptcha_valid`, `recaptcha_error` for custom forms.
250
+ - Redesign: settings page
251
+ - Fix: woocommerce checkout form: fix unnecessary captcha test on new customer registration
252
+ - Fix: settings: testing keys for multiple times
253
+ - Fix: settings: key setup -> cancel button target
254
+ - Fix: settings: test keys only with a nocaptcha
255
+
256
  = 1.0.9 =
257
  - Fix: Preserve PHP 5.2 compatibility
258
 
screenshot-1.png CHANGED
Binary file
screenshot-2.png CHANGED
Binary file
screenshot-3.png CHANGED
Binary file
wp-recaptcha-integration.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: WP reCaptcha Integration
4
  Plugin URI: https://wordpress.org/plugins/wp-recaptcha-integration/
5
  Description: Integrate reCaptcha in your blog. Supports no Captcha (new style recaptcha) as well as the old style reCaptcha. Provides of the box integration for signup, login, comment forms, lost password, Ninja Forms and contact form 7.
6
- Version: 1.0.9
7
  Author: Jörn Lund
8
  Author URI: https://github.com/mcguffin/
9
  */
@@ -81,13 +81,15 @@ class WP_reCaptcha {
81
  add_site_option('recaptcha_enable_login' , false); // global
82
  add_site_option('recaptcha_enable_lostpw' , false); // global
83
  add_site_option('recaptcha_disable_for_known_users' , true); // global
 
84
  $this->_has_api_key = get_site_option( 'recaptcha_publickey' ) && get_site_option( 'recaptcha_privatekey' );
85
  } else {
86
- add_option('recaptcha_enable_comments' , true); // global
87
- add_option('recaptcha_enable_signup' , true); // global
88
- add_option('recaptcha_enable_login' , false); // global
89
- add_option('recaptcha_enable_lostpw' , false); // global
90
- add_option('recaptcha_disable_for_known_users' , true); // global
 
91
  $this->_has_api_key = get_option( 'recaptcha_publickey' ) && get_option( 'recaptcha_privatekey' );
92
  }
93
 
@@ -101,7 +103,6 @@ class WP_reCaptcha {
101
  register_activation_hook( __FILE__ , array( __CLASS__ , 'activate' ) );
102
  register_deactivation_hook( __FILE__ , array( __CLASS__ , 'deactivate' ) );
103
  register_uninstall_hook( __FILE__ , array( __CLASS__ , 'uninstall' ) );
104
-
105
  }
106
 
107
  /**
@@ -150,54 +151,71 @@ class WP_reCaptcha {
150
  add_filter('comment_form_defaults',array($this,'comment_form_defaults'),10);
151
  //*/
152
  add_action('pre_comment_on_post',array($this,'recaptcha_check_or_die'));
 
 
153
  }
154
  if ( $this->get_option('recaptcha_enable_signup') ) {
155
  // buddypress suuport.
156
  if ( function_exists('buddypress') ) {
157
- add_action('bp_account_details_fields',array($this,'print_recaptcha_html'),10,0);
158
- add_filter('bp_signup_pre_validate',array(&$this,'recaptcha_check_or_die'),99 );
159
  } else {
160
- add_action('register_form',array($this,'print_recaptcha_html'),10,0);
161
  add_filter('registration_errors',array(&$this,'registration_errors'));
162
  }
163
  if ( is_multisite() ) {
164
- add_action( 'signup_extra_fields' , array($this,'print_recaptcha_html'),10,0);
165
  add_filter('wpmu_validate_user_signup',array(&$this,'wpmu_validate_user_signup'));
166
  }
167
 
168
  }
169
  if ( $this->get_option('recaptcha_enable_login') ) {
170
- add_action('login_form',array(&$this,'print_recaptcha_html'),10,0);
171
  add_filter('wp_authenticate_user',array(&$this,'deny_login'),99 );
172
  }
173
  if ( $this->get_option('recaptcha_enable_lostpw') ) {
174
- add_action('lostpassword_form' , array($this,'print_recaptcha_html'),10,0);
175
  //*
176
- add_filter('lostpassword_post' , array(&$this,'recaptcha_check_or_die') , 99 );
177
  /*/ // switch this when pull request accepted and included in official WC release.
178
  add_filter('allow_password_reset' , array(&$this,'wp_error') );
179
  //*/
180
  }
181
  if ( 'WPLANG' === $this->get_option( 'recaptcha_language' ) )
182
- add_filter( 'wp_recaptcha_language' , array( &$this,'recaptcha_wplang' ) );
 
 
 
 
183
  }
184
  }
185
 
186
-
 
 
 
 
187
  public function captcha_instance() {
188
- if ( is_null( $this->_captcha_instance ) ) {
189
- switch ( $this->get_option( 'recaptcha_flavor' ) ) {
190
- case 'grecaptcha':
191
- $this->_captcha_instance = WP_reCaptcha_NoCaptcha::instance();
192
- break;
193
- case 'recaptcha':
194
- $this->_captcha_instance = WP_reCaptcha_ReCaptcha::instance();
195
- break;
196
- }
197
- }
198
  return $this->_captcha_instance;
199
  }
200
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
201
  /**
202
  * returns if recaptcha is required.
203
  *
@@ -337,7 +355,9 @@ class WP_reCaptcha {
337
  * @return bool false if check does not validate
338
  */
339
  function recaptcha_check( ) {
340
- return $this->captcha_instance()->check();
 
 
341
  }
342
 
343
  /**
@@ -348,8 +368,15 @@ class WP_reCaptcha {
348
  * @return object user or wp_error
349
  */
350
  function deny_login( $user ) {
351
- if ( isset( $_POST["log"]) )
352
- $user = $this->wp_error( $user );
 
 
 
 
 
 
 
353
  return $user;
354
  }
355
 
@@ -459,6 +486,53 @@ class WP_reCaptcha {
459
  return $this->_has_api_key;
460
  }
461
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
462
 
463
  //////////////////////////////////
464
  // Activation
@@ -487,6 +561,7 @@ class WP_reCaptcha {
487
  delete_site_option( 'recaptcha_enable_login' );
488
  delete_site_option( 'recaptcha_enable_wc_checkout' );
489
  delete_site_option( 'recaptcha_disable_for_known_users' );
 
490
 
491
  foreach ( wp_get_sites() as $site) {
492
  switch_to_blog( $site["blog_id"] );
@@ -509,6 +584,7 @@ class WP_reCaptcha {
509
  delete_option( 'recaptcha_enable_login' );
510
  delete_option( 'recaptcha_enable_wc_checkout' );
511
  delete_option( 'recaptcha_disable_for_known_users' );
 
512
  }
513
  }
514
 
@@ -543,37 +619,16 @@ class WP_reCaptcha {
543
  */
544
  function recaptcha_wplang( ) {
545
  $locale = get_locale();
546
- /* Sometimes WP uses different locales the the ones supported by nocaptcha. */
547
- $mapping = array(
548
- 'es_MX' => 'es-419',
549
- 'es_PE' => 'es-419',
550
- 'es_CL' => 'es-419',
551
- 'he_IL' => 'iw',
552
- );
553
- if ( isset( $mapping[$locale] ) )
554
- $locale = $mapping[$locale];
555
- return $this->recaptcha_language( $locale );
556
  }
557
  /**
558
- * Rewrite WP get_locale() to recaptcha lang param.
559
- *
560
- * @return string recaptcha language
 
561
  */
562
  function recaptcha_language( $lang ) {
563
- $lang = str_replace( '_' , '-' , $lang );
564
-
565
- $langs = $this->get_supported_languages();
566
- // direct hit: return it.
567
- if ( isset($langs[$lang]) )
568
- return $lang;
569
-
570
- // remove countrycode
571
- $lang = preg_replace('/-(.*)$/','',$lang);
572
- if ( isset($langs[$lang]) )
573
- return $lang;
574
-
575
- // lang does not exist.
576
- return '';
577
  }
578
 
579
  /**
3
  Plugin Name: WP reCaptcha Integration
4
  Plugin URI: https://wordpress.org/plugins/wp-recaptcha-integration/
5
  Description: Integrate reCaptcha in your blog. Supports no Captcha (new style recaptcha) as well as the old style reCaptcha. Provides of the box integration for signup, login, comment forms, lost password, Ninja Forms and contact form 7.
6
+ Version: 1.1.0
7
  Author: Jörn Lund
8
  Author URI: https://github.com/mcguffin/
9
  */
81
  add_site_option('recaptcha_enable_login' , false); // global
82
  add_site_option('recaptcha_enable_lostpw' , false); // global
83
  add_site_option('recaptcha_disable_for_known_users' , true); // global
84
+ add_site_option( 'recaptcha_lockout' , true );
85
  $this->_has_api_key = get_site_option( 'recaptcha_publickey' ) && get_site_option( 'recaptcha_privatekey' );
86
  } else {
87
+ add_option( 'recaptcha_enable_comments' , true); // global
88
+ add_option( 'recaptcha_enable_signup' , true); // global
89
+ add_option( 'recaptcha_enable_login' , false); // global
90
+ add_option( 'recaptcha_enable_lostpw' , false); // global
91
+ add_option( 'recaptcha_disable_for_known_users' , true); // global
92
+ add_option( 'recaptcha_lockout' , true );
93
  $this->_has_api_key = get_option( 'recaptcha_publickey' ) && get_option( 'recaptcha_privatekey' );
94
  }
95
 
103
  register_activation_hook( __FILE__ , array( __CLASS__ , 'activate' ) );
104
  register_deactivation_hook( __FILE__ , array( __CLASS__ , 'deactivate' ) );
105
  register_uninstall_hook( __FILE__ , array( __CLASS__ , 'uninstall' ) );
 
106
  }
107
 
108
  /**
151
  add_filter('comment_form_defaults',array($this,'comment_form_defaults'),10);
152
  //*/
153
  add_action('pre_comment_on_post',array($this,'recaptcha_check_or_die'));
154
+
155
+ add_action( 'print_comments_recaptcha' , array( &$this , 'print_recaptcha_html' ) );
156
  }
157
  if ( $this->get_option('recaptcha_enable_signup') ) {
158
  // buddypress suuport.
159
  if ( function_exists('buddypress') ) {
160
+ add_action('bp_account_details_fields',array($this,'print_recaptcha_html'));
161
+ add_action('bp_signup_pre_validate',array(&$this,'recaptcha_check_or_die'),99 );
162
  } else {
163
+ add_action('register_form',array($this,'print_recaptcha_html'));
164
  add_filter('registration_errors',array(&$this,'registration_errors'));
165
  }
166
  if ( is_multisite() ) {
167
+ add_action( 'signup_extra_fields' , array($this,'print_recaptcha_html'));
168
  add_filter('wpmu_validate_user_signup',array(&$this,'wpmu_validate_user_signup'));
169
  }
170
 
171
  }
172
  if ( $this->get_option('recaptcha_enable_login') ) {
173
+ add_action('login_form',array(&$this,'print_recaptcha_html'));
174
  add_filter('wp_authenticate_user',array(&$this,'deny_login'),99 );
175
  }
176
  if ( $this->get_option('recaptcha_enable_lostpw') ) {
177
+ add_action('lostpassword_form' , array($this,'print_recaptcha_html') );
178
  //*
179
+ add_action('lostpassword_post' , array(&$this,'recaptcha_check_or_die') , 99 );
180
  /*/ // switch this when pull request accepted and included in official WC release.
181
  add_filter('allow_password_reset' , array(&$this,'wp_error') );
182
  //*/
183
  }
184
  if ( 'WPLANG' === $this->get_option( 'recaptcha_language' ) )
185
+ add_filter( 'wp_recaptcha_language' , array( &$this,'recaptcha_wplang' ) , 5 );
186
+
187
+ add_action( 'recaptcha_print' , array( &$this , 'print_recaptcha_html' ) );
188
+ add_filter( 'recaptcha_valid' , array( &$this , 'recaptcha_check' ) );
189
+ add_filter( 'recaptcha_error' , array( &$this , 'wp_error' ) );
190
  }
191
  }
192
 
193
+ /**
194
+ * Set current captcha instance and return it.
195
+ *
196
+ * @return object WP_reCaptcha_Captcha
197
+ */
198
  public function captcha_instance() {
199
+ if ( is_null( $this->_captcha_instance ) )
200
+ $this->_captcha_instance = $this->captcha_instance_by_flavor( $this->get_option( 'recaptcha_flavor' ) );
 
 
 
 
 
 
 
 
201
  return $this->_captcha_instance;
202
  }
203
 
204
+ /**
205
+ * Set current captcha instance and return it.
206
+ *
207
+ * @param string captcha flavor. 'grecaptcha' (noCaptcha) or 'recaptcha' (reCaptcha)
208
+ * @return object WP_reCaptcha_Captcha
209
+ */
210
+ public function captcha_instance_by_flavor( $flavor ) {
211
+ switch( $flavor ) {
212
+ case 'grecaptcha':
213
+ return WP_reCaptcha_NoCaptcha::instance();
214
+ case 'recaptcha':
215
+ return WP_reCaptcha_ReCaptcha::instance();
216
+ }
217
+ }
218
+
219
  /**
220
  * returns if recaptcha is required.
221
  *
355
  * @return bool false if check does not validate
356
  */
357
  function recaptcha_check( ) {
358
+ if ( $this->is_required() )
359
+ return $this->captcha_instance()->check();
360
+ return true;
361
  }
362
 
363
  /**
368
  * @return object user or wp_error
369
  */
370
  function deny_login( $user ) {
371
+ if ( isset( $_POST["log"]) && ! $this->recaptcha_check() ) {
372
+ $msg = __("<strong>Error:</strong> the Captcha didn’t verify.",'wp-recaptcha-integration');
373
+ if ( $this->get_option('recaptcha_lockout') && in_array('administrator',$user->roles) && ! $this->test_keys() ) {
374
+ return $user;
375
+ } else {
376
+ return $this->wp_error( $user );
377
+ }
378
+ return new WP_Error( 'captcha_error' , $msg );
379
+ }
380
  return $user;
381
  }
382
 
486
  return $this->_has_api_key;
487
  }
488
 
489
+ /**
490
+ * Test public and private key
491
+ *
492
+ * @return bool
493
+ */
494
+ public function test_keys() {
495
+ if ( ! ( $keys_okay = get_transient( 'recaptcha_keys_okay' ) ) ) {
496
+ $pub_okay = $this->test_public_key();
497
+ $prv_okay = $this->test_private_key();
498
+
499
+ $keys_okay = $prv_okay && $pub_okay;
500
+
501
+ //cache the result
502
+ set_transient( 'recaptcha_keys_okay' , $keys_okay ? 'yes' : 'no' , 15 * MINUTE_IN_SECONDS );
503
+ }
504
+ return $keys_okay == 'yes';
505
+ }
506
+
507
+ /**
508
+ * Test private key
509
+ *
510
+ * @return bool
511
+ */
512
+ public function test_private_key( $key = null ) {
513
+ if ( is_null( $key ) )
514
+ $key = $this->get_option('recaptcha_privatekey');
515
+ $prv_key_url = sprintf( "http://www.google.com/recaptcha/api/verify?privatekey=%s" , $key );
516
+ $prv_response = wp_remote_get( $prv_key_url );
517
+ $prv_rspbody = wp_remote_retrieve_body( $prv_response );
518
+ return ! is_wp_error( $prv_response ) && ! strpos(wp_remote_retrieve_body( $prv_response ),'invalid-site-private-key');
519
+ }
520
+
521
+ /**
522
+ * Test public key
523
+ *
524
+ * @return bool
525
+ */
526
+ public function test_public_key( $key = null ) {
527
+ if ( is_null( $key ) )
528
+ $key = $this->get_option('recaptcha_publickey');
529
+ $rec = WP_reCaptcha::instance();
530
+ $pub_key_url = sprintf( "http://www.google.com/recaptcha/api/challenge?k=%s" , $key );
531
+ $pub_response = wp_remote_get( $pub_key_url );
532
+ $pub_response_body = wp_remote_retrieve_body( $pub_response );
533
+ return ! is_wp_error( $pub_response ) && ! strpos( $pub_response_body ,'Format of site key was invalid');
534
+ }
535
+
536
 
537
  //////////////////////////////////
538
  // Activation
561
  delete_site_option( 'recaptcha_enable_login' );
562
  delete_site_option( 'recaptcha_enable_wc_checkout' );
563
  delete_site_option( 'recaptcha_disable_for_known_users' );
564
+ delete_site_option( 'recaptcha_lockout' );
565
 
566
  foreach ( wp_get_sites() as $site) {
567
  switch_to_blog( $site["blog_id"] );
584
  delete_option( 'recaptcha_enable_login' );
585
  delete_option( 'recaptcha_enable_wc_checkout' );
586
  delete_option( 'recaptcha_disable_for_known_users' );
587
+ delete_option( 'recaptcha_lockout' );
588
  }
589
  }
590
 
619
  */
620
  function recaptcha_wplang( ) {
621
  $locale = get_locale();
622
+ return $this->captcha_instance()->get_language( $locale );
 
 
 
 
 
 
 
 
 
623
  }
624
  /**
625
+ * Get recaptcha language code that matches input language code
626
+ *
627
+ * @param $lang string language code
628
+ * @return string recaptcha language code if supported by current flavor, empty string otherwise
629
  */
630
  function recaptcha_language( $lang ) {
631
+ return $this->captcha_instance()->get_language( $lang );
 
 
 
 
 
 
 
 
 
 
 
 
 
632
  }
633
 
634
  /**