FooBox Image Lightbox WordPress Plugin - Version 2.6.3

Version Description

  • Added support for loading FooGallery galleries within a FooBox
  • Fixed layout bugs with certain notched iPhones
  • Updated to latest client JS & CSS fixing a few bugs
  • Updated to latest Freemius SDK 2.2.3
Download this release

Release Info

Developer bradvin
Plugin Icon 128x128 FooBox Image Lightbox WordPress Plugin
Version 2.6.3
Comparing to
See all releases

Code changes from version 2.6.0 to 2.6.3

Files changed (54) hide show
  1. foobox-free.php +167 -163
  2. free/css/foobox.free.min.css +1 -1
  3. free/foobox-free.php +20 -4
  4. free/includes/foopluginbase/.gitignore +183 -0
  5. free/includes/view-getting-started.php +2 -1
  6. free/js/foobox.free.min.js +3 -3
  7. freemius/.codeclimate.yml +0 -19
  8. freemius/.travis.yml +0 -11
  9. freemius/README.md +0 -253
  10. freemius/assets/css/admin/common.css +2 -2
  11. freemius/assets/css/admin/connect.css +1 -1
  12. freemius/assets/css/admin/deactivation-feedback.css +0 -1
  13. freemius/assets/css/admin/dialog-boxes.css +2 -2
  14. freemius/assets/css/admin/gdpr-optin-notice.css +1 -1
  15. freemius/assets/css/admin/license-activation.css +0 -1
  16. freemius/assets/scss/_colors.scss +11 -0
  17. freemius/assets/scss/admin/_buttons.scss +28 -0
  18. freemius/assets/scss/admin/_gdpr-consent.scss +80 -80
  19. freemius/assets/scss/admin/_plugin-upgrade-notice.scss +8 -0
  20. freemius/assets/scss/admin/_subscription-cancellation.scss +30 -0
  21. freemius/assets/scss/admin/common.scss +5 -3
  22. freemius/assets/scss/admin/dialog-boxes.scss +3 -1
  23. freemius/assets/scss/admin/gdpr-optin-notice.scss +16 -16
  24. freemius/composer.json +0 -10
  25. freemius/config.php +387 -387
  26. freemius/gulpfile.js +0 -167
  27. freemius/includes/class-freemius-abstract.php +596 -596
  28. freemius/includes/class-freemius.php +1283 -332
  29. freemius/includes/class-fs-admin-notices.php +320 -320
  30. freemius/includes/class-fs-api.php +14 -4
  31. freemius/includes/class-fs-plugin-updater.php +493 -68
  32. freemius/includes/class-fs-storage.php +2 -2
  33. freemius/includes/class-fs-user-lock.php +125 -125
  34. freemius/includes/customizer/class-fs-customizer-upsell-control.php +1 -1
  35. freemius/includes/entities/class-fs-payment.php +109 -109
  36. freemius/includes/entities/class-fs-plugin.php +22 -0
  37. freemius/includes/entities/class-fs-site.php +229 -224
  38. freemius/includes/fs-core-functions.php +115 -91
  39. freemius/includes/fs-essential-functions.php +4 -2
  40. freemius/includes/fs-plugin-info-dialog.php +44 -11
  41. freemius/includes/i18n.php +3 -3
  42. freemius/includes/managers/class-fs-admin-menu-manager.php +17 -5
  43. freemius/includes/managers/class-fs-admin-notice-manager.php +74 -0
  44. freemius/includes/managers/class-fs-gdpr-manager.php +201 -201
  45. freemius/includes/supplements/fs-essential-functions-1.1.7.1.php +2 -6
  46. freemius/includes/supplements/fs-essential-functions-2.2.1.php +45 -0
  47. freemius/languages/freemius-da_DK.mo +0 -0
  48. freemius/languages/freemius-da_DK.po +2434 -12
  49. freemius/languages/freemius-en.mo +0 -0
  50. freemius/languages/freemius-en.po +2320 -2205
  51. freemius/languages/freemius-es_ES.mo +0 -0
  52. freemius/languages/freemius-es_ES.po +2433 -2299
  53. freemius/languages/freemius-fr_FR.mo +0 -0
  54. freemius/languages/freemius-fr_FR.po +0 -1497
foobox-free.php CHANGED
@@ -4,194 +4,198 @@
4
  Plugin Name: FooBox Image Lightbox
5
  Plugin URI: http://fooplugins.com/plugins/foobox/
6
  Description: The best responsive lightbox for WordPress.
7
- Version: 2.6.0
8
  Author: FooPlugins
9
  Author URI: http://fooplugins.com
10
  License: GPL2
11
  Text Domain: foobox-image-lightbox
12
- Domain Path: /languages
13
- @fs_premium_only /pro/
14
  */
15
 
16
- if ( !class_exists( 'FooBox' ) ) {
17
- define( 'FOOBOX_BASE_FILE', __FILE__ );
18
- define( 'FOOBOX_BASE_SLUG', 'foobox-image-lightbox' );
19
- define( 'FOOBOX_BASE_PAGE_SLUG_OPTIN', 'foobox-image-lightbox-optin' );
20
- define( 'FOOBOX_BASE_PAGE_SLUG_SETTINGS', 'foobox-settings' );
21
- define( 'FOOBOX_BASE_ACTIVATION_REDIRECT_TRANSIENT_KEY', '_foobox_activation_redirect' );
22
- define( 'FOOBOX_BASE_PATH', plugin_dir_path( __FILE__ ) );
23
- define( 'FOOBOX_BASE_URL', plugin_dir_url( __FILE__ ) );
24
- define( 'FOOBOX_BASE_VERSION', '2.6.0' );
25
- // Create a helper function for easy SDK access.
26
- function foobox_fs()
27
- {
28
- global $foobox_fs ;
29
-
30
- if ( !isset( $foobox_fs ) ) {
31
- // Include Freemius SDK.
32
- require_once dirname( __FILE__ ) . '/freemius/start.php';
33
- $foobox_fs = fs_dynamic_init( array(
34
- 'id' => '374',
35
- 'slug' => 'foobox-image-lightbox',
36
- 'type' => 'plugin',
37
- 'public_key' => 'pk_7a17ec700c89fe71a25605589e0b9',
38
- 'is_premium' => false,
39
- 'has_addons' => false,
40
- 'has_paid_plans' => true,
41
- 'menu' => array(
42
- 'slug' => FOOBOX_BASE_SLUG,
43
- 'first-path' => 'admin.php?page=' . FOOBOX_BASE_SLUG,
44
- 'contact' => false,
45
- ),
46
- 'trial' => array(
47
- 'days' => 7,
48
- 'is_require_payment' => false,
49
- ),
50
- 'is_live' => true,
51
- ) );
52
- }
53
-
54
- return $foobox_fs;
55
- }
56
 
57
- // Init Freemius.
58
- foobox_fs();
59
- class FooBox
60
- {
61
- private static $instance ;
62
- public static function get_instance()
 
 
 
 
 
63
  {
64
- if ( !isset( self::$instance ) && !self::$instance instanceof FooBox ) {
65
- self::$instance = new FooBox();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  }
67
- return self::$instance;
 
68
  }
69
 
70
- /**
71
- * Initialize the plugin!!!
72
- */
73
- private function __construct()
74
  {
75
- //include all the things!
76
- $this->includes();
 
 
 
 
 
 
77
 
78
- if ( is_admin() ) {
79
- new FooBox_Admin_Menu();
80
- add_action( 'admin_init', array( $this, 'check_for_activation_redirect' ) );
81
- add_action( FOOBOX_ACTION_ADMIN_MENU_RENDER_GETTING_STARTED, array( $this, 'render_page_getting_started' ) );
82
- foobox_fs()->add_filter( 'support_forum_submenu', array( $this, 'override_support_menu_text' ) );
83
- foobox_fs()->add_filter( 'support_forum_url', array( $this, 'override_support_forum_url' ) );
84
- foobox_fs()->add_filter( 'connect_url', array( $this, 'override_connect_url' ) );
85
- add_action( 'admin_menu', array( $this, 'remove_admin_menu_items_on_mobile' ), WP_FS__LOWEST_PRIORITY + 1 );
86
- foobox_fs()->add_action( 'after_premium_version_activation', array( 'FooBox', 'activate' ) );
87
- add_action( 'admin_page_access_denied', array( $this, 'check_for_access_denies_after_account_deletion' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  }
89
 
90
- //register activation hook for free
91
- register_activation_hook( __FILE__, array( 'FooBox', 'activate' ) );
92
- require_once FOOBOX_BASE_PATH . 'free/foobox-free.php';
93
- }
94
-
95
- public function override_connect_url( $url )
96
- {
97
- if ( is_object( foobox_fs()->get_site() ) ) {
98
- return 'admin.php?page=' . FOOBOX_BASE_PAGE_SLUG_OPTIN;
99
  }
100
- return $url;
101
- }
102
-
103
- public function override_support_menu_text( $text )
104
- {
105
- return __( 'Support', 'foobox-image-lightbox' );
106
- }
107
-
108
- public function override_support_forum_url( $url )
109
- {
110
- return $url;
111
- }
112
-
113
- public function check_for_access_denies_after_account_deletion()
114
- {
115
- global $plugin_page ;
116
- if ( FOOBOX_BASE_PAGE_SLUG_OPTIN === $plugin_page ) {
117
- if ( !is_object( foobox_fs()->get_site() ) ) {
118
- fs_redirect( 'admin.php?page=' . FOOBOX_BASE_SLUG );
119
  }
120
  }
121
- }
122
-
123
- /**
124
- * Include all the files needed
125
- */
126
- public function includes()
127
- {
128
- require_once FOOBOX_BASE_PATH . 'includes/functions.php';
129
- require_once FOOBOX_BASE_PATH . 'includes/actions.php';
130
- require_once FOOBOX_BASE_PATH . 'includes/filters.php';
131
- require_once FOOBOX_BASE_PATH . 'includes/admin/menu.php';
132
- }
133
-
134
- /**
135
- * Fired when the plugin is activated.
136
- *
137
- * @since 1.1.0
138
- *
139
- * @param boolean $network_wide True if WPMU superadmin uses
140
- * "Network Activate" action, false if
141
- * WPMU is disabled or plugin is
142
- * activated on an individual blog.
143
- */
144
- public static function activate( $network_wide )
145
- {
146
 
147
- if ( function_exists( 'is_multisite' ) && is_multisite() ) {
148
- //do nothing for multisite!
149
- } else {
150
- //Make sure we redirect to the welcome page
151
- set_transient( FOOBOX_BASE_ACTIVATION_REDIRECT_TRANSIENT_KEY, true, 30 );
 
 
 
 
152
  }
153
-
154
- }
155
-
156
- /**
157
- * On admin_init check that the plugin was activated and redirect to the getting started page
158
- */
159
- public function check_for_activation_redirect()
160
- {
161
- // Bail if no activation redirect
162
- if ( !get_transient( FOOBOX_BASE_ACTIVATION_REDIRECT_TRANSIENT_KEY ) ) {
163
- return;
 
 
 
 
 
 
 
 
 
 
164
  }
165
- // Delete the redirect transient
166
- delete_transient( FOOBOX_BASE_ACTIVATION_REDIRECT_TRANSIENT_KEY );
167
- // Bail if activating from network, or bulk
168
- if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
169
- return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
170
  }
171
- $url = admin_url( 'admin.php?page=' . FOOBOX_BASE_SLUG );
172
- wp_safe_redirect( $url );
173
- exit;
174
- }
175
-
176
- public function render_page_getting_started()
177
- {
178
- require_once FOOBOX_BASE_PATH . 'includes/admin/view-getting-started.php';
179
- }
180
-
181
- public function remove_admin_menu_items_on_mobile()
182
- {
183
 
184
- if ( foobox_hide_pricing_menu() ) {
185
- //we only want to hide menu items if we are on mobile!
186
- remove_submenu_page( 'foobox-image-lightbox', 'foobox-image-lightbox-pricing' );
187
- remove_submenu_page( 'foobox-image-lightbox', 'foobox-image-lightbox-account' );
188
- remove_submenu_page( 'foobox-image-lightbox', 'foobox-image-lightbox-contact' );
 
 
 
 
 
 
 
 
 
 
189
  }
190
 
191
  }
192
-
193
  }
194
- } else {
 
195
  }
196
-
197
- FooBox::get_instance();
4
  Plugin Name: FooBox Image Lightbox
5
  Plugin URI: http://fooplugins.com/plugins/foobox/
6
  Description: The best responsive lightbox for WordPress.
7
+ Version: 2.6.3
8
  Author: FooPlugins
9
  Author URI: http://fooplugins.com
10
  License: GPL2
11
  Text Domain: foobox-image-lightbox
12
+ Domain Path: /languages
 
13
  */
14
 
15
+ if ( function_exists( 'foobox_fs' ) ) {
16
+ foobox_fs()->set_basename( false, __FILE__ );
17
+ } else {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
 
19
+ if ( !class_exists( 'FooBox' ) ) {
20
+ define( 'FOOBOX_BASE_FILE', __FILE__ );
21
+ define( 'FOOBOX_BASE_SLUG', 'foobox-image-lightbox' );
22
+ define( 'FOOBOX_BASE_PAGE_SLUG_OPTIN', 'foobox-image-lightbox-optin' );
23
+ define( 'FOOBOX_BASE_PAGE_SLUG_SETTINGS', 'foobox-settings' );
24
+ define( 'FOOBOX_BASE_ACTIVATION_REDIRECT_TRANSIENT_KEY', '_foobox_activation_redirect' );
25
+ define( 'FOOBOX_BASE_PATH', plugin_dir_path( __FILE__ ) );
26
+ define( 'FOOBOX_BASE_URL', plugin_dir_url( __FILE__ ) );
27
+ define( 'FOOBOX_BASE_VERSION', '2.6.3' );
28
+ // Create a helper function for easy SDK access.
29
+ function foobox_fs()
30
  {
31
+ global $foobox_fs ;
32
+
33
+ if ( !isset( $foobox_fs ) ) {
34
+ // Include Freemius SDK.
35
+ require_once dirname( __FILE__ ) . '/freemius/start.php';
36
+ $foobox_fs = fs_dynamic_init( array(
37
+ 'id' => '374',
38
+ 'slug' => 'foobox-image-lightbox',
39
+ 'type' => 'plugin',
40
+ 'public_key' => 'pk_7a17ec700c89fe71a25605589e0b9',
41
+ 'is_premium' => false,
42
+ 'has_addons' => false,
43
+ 'has_paid_plans' => true,
44
+ 'menu' => array(
45
+ 'slug' => FOOBOX_BASE_SLUG,
46
+ 'first-path' => 'admin.php?page=' . FOOBOX_BASE_SLUG,
47
+ 'contact' => false,
48
+ ),
49
+ 'trial' => array(
50
+ 'days' => 7,
51
+ 'is_require_payment' => false,
52
+ ),
53
+ 'is_live' => true,
54
+ ) );
55
  }
56
+
57
+ return $foobox_fs;
58
  }
59
 
60
+ // Init Freemius.
61
+ foobox_fs();
62
+ class FooBox
 
63
  {
64
+ private static $instance ;
65
+ public static function get_instance()
66
+ {
67
+ if ( !isset( self::$instance ) && !self::$instance instanceof FooBox ) {
68
+ self::$instance = new FooBox();
69
+ }
70
+ return self::$instance;
71
+ }
72
 
73
+ /**
74
+ * Initialize the plugin!!!
75
+ */
76
+ private function __construct()
77
+ {
78
+ //include all the things!
79
+ $this->includes();
80
+
81
+ if ( is_admin() ) {
82
+ new FooBox_Admin_Menu();
83
+ add_action( 'admin_init', array( $this, 'check_for_activation_redirect' ) );
84
+ add_action( FOOBOX_ACTION_ADMIN_MENU_RENDER_GETTING_STARTED, array( $this, 'render_page_getting_started' ) );
85
+ foobox_fs()->add_filter( 'support_forum_submenu', array( $this, 'override_support_menu_text' ) );
86
+ foobox_fs()->add_filter( 'support_forum_url', array( $this, 'override_support_forum_url' ) );
87
+ foobox_fs()->add_filter( 'connect_url', array( $this, 'override_connect_url' ) );
88
+ add_action( 'admin_menu', array( $this, 'remove_admin_menu_items_on_mobile' ), WP_FS__LOWEST_PRIORITY + 1 );
89
+ foobox_fs()->add_action( 'after_premium_version_activation', array( 'FooBox', 'activate' ) );
90
+ add_action( 'admin_page_access_denied', array( $this, 'check_for_access_denies_after_account_deletion' ) );
91
+ }
92
+
93
+ //register activation hook for free
94
+ register_activation_hook( __FILE__, array( 'FooBox', 'activate' ) );
95
+ require_once FOOBOX_BASE_PATH . 'free/foobox-free.php';
96
  }
97
 
98
+ public function override_connect_url( $url )
99
+ {
100
+ if ( is_object( foobox_fs()->get_site() ) ) {
101
+ return 'admin.php?page=' . FOOBOX_BASE_PAGE_SLUG_OPTIN;
102
+ }
103
+ return $url;
 
 
 
104
  }
105
+
106
+ public function override_support_menu_text( $text )
107
+ {
108
+ return __( 'Support', 'foobox-image-lightbox' );
109
+ }
110
+
111
+ public function override_support_forum_url( $url )
112
+ {
113
+ return $url;
114
+ }
115
+
116
+ public function check_for_access_denies_after_account_deletion()
117
+ {
118
+ global $plugin_page ;
119
+ if ( FOOBOX_BASE_PAGE_SLUG_OPTIN === $plugin_page ) {
120
+ if ( !is_object( foobox_fs()->get_site() ) ) {
121
+ fs_redirect( 'admin.php?page=' . FOOBOX_BASE_SLUG );
122
+ }
 
123
  }
124
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
 
126
+ /**
127
+ * Include all the files needed
128
+ */
129
+ public function includes()
130
+ {
131
+ require_once FOOBOX_BASE_PATH . 'includes/functions.php';
132
+ require_once FOOBOX_BASE_PATH . 'includes/actions.php';
133
+ require_once FOOBOX_BASE_PATH . 'includes/filters.php';
134
+ require_once FOOBOX_BASE_PATH . 'includes/admin/menu.php';
135
  }
136
+
137
+ /**
138
+ * Fired when the plugin is activated.
139
+ *
140
+ * @since 1.1.0
141
+ *
142
+ * @param boolean $network_wide True if WPMU superadmin uses
143
+ * "Network Activate" action, false if
144
+ * WPMU is disabled or plugin is
145
+ * activated on an individual blog.
146
+ */
147
+ public static function activate( $network_wide )
148
+ {
149
+
150
+ if ( function_exists( 'is_multisite' ) && is_multisite() ) {
151
+ //do nothing for multisite!
152
+ } else {
153
+ //Make sure we redirect to the welcome page
154
+ set_transient( FOOBOX_BASE_ACTIVATION_REDIRECT_TRANSIENT_KEY, true, 30 );
155
+ }
156
+
157
  }
158
+
159
+ /**
160
+ * On admin_init check that the plugin was activated and redirect to the getting started page
161
+ */
162
+ public function check_for_activation_redirect()
163
+ {
164
+ // Bail if no activation redirect
165
+ if ( !get_transient( FOOBOX_BASE_ACTIVATION_REDIRECT_TRANSIENT_KEY ) ) {
166
+ return;
167
+ }
168
+ // Delete the redirect transient
169
+ delete_transient( FOOBOX_BASE_ACTIVATION_REDIRECT_TRANSIENT_KEY );
170
+ // Bail if activating from network, or bulk
171
+ if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
172
+ return;
173
+ }
174
+ $url = admin_url( 'admin.php?page=' . FOOBOX_BASE_SLUG );
175
+ wp_safe_redirect( $url );
176
+ exit;
177
  }
 
 
 
 
 
 
 
 
 
 
 
 
178
 
179
+ public function render_page_getting_started()
180
+ {
181
+ require_once FOOBOX_BASE_PATH . 'includes/admin/view-getting-started.php';
182
+ }
183
+
184
+ public function remove_admin_menu_items_on_mobile()
185
+ {
186
+
187
+ if ( foobox_hide_pricing_menu() ) {
188
+ //we only want to hide menu items if we are on mobile!
189
+ remove_submenu_page( 'foobox-image-lightbox', 'foobox-image-lightbox-pricing' );
190
+ remove_submenu_page( 'foobox-image-lightbox', 'foobox-image-lightbox-account' );
191
+ remove_submenu_page( 'foobox-image-lightbox', 'foobox-image-lightbox-contact' );
192
+ }
193
+
194
  }
195
 
196
  }
197
+ } else {
198
  }
199
+
200
+ FooBox::get_instance();
201
  }
 
 
free/css/foobox.free.min.css CHANGED
@@ -5,4 +5,4 @@
5
  * @copyright Steven Usher & Brad Vincent 2014
6
  * @license Released under the MIT license.
7
  * You are free to use FooBox jQuery in personal projects as long as this copyright header is left intact.
8
- */.fbx-close:hover,.fbx-credit a,.fbx-next:hover,.fbx-prev:hover{text-decoration:none}.fbx-modal,.fbx-modal *{box-sizing:content-box}.fbx-modal{position:fixed;top:0;left:0;z-index:9000001;visibility:hidden;width:100%;height:100%;font-family:"Segoe UI",Helvetica,Arial,"Sans Serif",serif;line-height:normal;outline:0!important}.fbx-modal.fbx-loading,.fbx-modal.fbx-show{visibility:visible}.fbx-no-scroll{overflow:hidden!important}.fbx-inner-spacer{display:none;padding:40px}.fbx-inner,.fbx-loader{position:absolute;top:50%;left:50%}.fbx-inner{visibility:hidden;overflow:visible!important;margin-top:-5px;margin-left:-5px;min-width:100px;min-height:100px;width:100px;height:100px;z-index:100002}.fbx-show .fbx-inner{visibility:visible}.fbx-loader{visibility:hidden;z-index:100005;margin-top:-40px;margin-left:-40px;width:80px;height:80px;font-size:16px;box-shadow:0 0 3px rgba(0,0,0,.4)}.fbx-loading .fbx-loader,.fbx-show .fbx-caption{visibility:visible}.fbx-loader>div{margin:10px;width:60px;height:60px}.fbx-item-current,.fbx-item-next,.fbx-stage{top:0;left:0;margin:0;width:100%;height:100%;padding:0;outline:0;position:absolute;border:none}.fbx-stage{overflow:hidden}.fbx-item-current,.fbx-item-next{-webkit-user-drag:none;overflow:auto}.fbx-loading .fbx-item-current,.fbx-loading .fbx-item-next{overflow:hidden}.fbx-item-next{z-index:100001}.fbx-item-current{z-index:100002}.fbx-error-msg{width:200px;height:200px;position:absolute;top:50%;left:50%;margin-top:-100px;margin-left:-100px}.fbx-error-msg>span{line-height:200px;width:100%;height:100%;display:block}.fbx-error-msg>p{position:absolute;top:100%;text-align:center;width:100%;margin:0}.fbx-item-embed,.fbx-item-iframe,.fbx-item-image,.fbx-item-video{margin:0;padding:0;width:100%;height:100%;outline:0;border:none;display:block}.fbx-item-video>.fbx-video{background-color:#000}.fbx-item-embed embed,.fbx-item-embed iframe,.fbx-item-embed object{margin-bottom:0}.fbx-item-embed>embed,.fbx-item-embed>iframe,.fbx-item-embed>object{max-width:100%;max-height:100%}.fbx-ios .fbx-item-current{-webkit-overflow-scrolling:touch!important;overflow:auto!important}.fbx-ios .fbx-item-iframe{width:1px;min-width:100%}.fbx-close,.fbx-next,.fbx-prev{position:absolute;z-index:100006;display:block;outline:0!important;text-decoration:none;cursor:pointer}.fbx-no-buttons .fbx-next,.fbx-no-buttons .fbx-prev{display:none!important}.fbx-phone .fbx-count,.fbx-phone .fbx-credit em,.fbx-phone.fbx-landscape.fbx-no-nav .fbx-next,.fbx-phone.fbx-landscape.fbx-no-nav .fbx-prev,.fbx-rounded .fbx-next.fbx-disabled,.fbx-rounded .fbx-prev.fbx-disabled{display:none}.fbx-credit{position:absolute;z-index:100003;text-transform:lowercase;font-size:10px}.fbx-credit em{font-style:normal;font-size:10px}.fbx-credit a{font-size:10px}.fbx-credit a:hover span{text-decoration:underline}.fbx-credit a span{letter-spacing:1px;font-size:10px;color:#fff}.fbx-count{position:absolute;z-index:100002;width:100%;text-align:center;font-size:10px}.fbx-btn-transition,.fbx-btn-transition:before{transition-property:color,border-color,opacity,box-shadow;transition-duration:.2s,.2s,.2s,.2s;transition-timing-function:ease-in,linear,ease-in,ease-in;outline:0}.fbx-modal.fbx-phone .fbx-inner{border:none}.fbx-modal.fbx-phone .fbx-close,.fbx-modal.fbx-phone .fbx-next,.fbx-modal.fbx-phone .fbx-prev{position:fixed}.fbx-modal.fbx-phone .fbx-credit{bottom:2px;left:2px}.fbx-modal.fbx-phone.fbx-portrait .fbx-inner-spacer{padding:35px 5px 15px}.fbx-modal.fbx-phone.fbx-portrait .fbx-close,.fbx-modal.fbx-phone.fbx-portrait .fbx-next,.fbx-modal.fbx-phone.fbx-portrait .fbx-prev{border:none;opacity:1;margin:0;top:0;bottom:auto;width:auto;height:40px;border-radius:0;line-height:40px}.fbx-modal.fbx-phone.fbx-portrait .fbx-prev{left:0;right:66%}.fbx-modal.fbx-phone.fbx-portrait .fbx-next{left:33%;right:33%}.fbx-modal.fbx-phone.fbx-portrait .fbx-close{left:66%;right:0}.fbx-modal.fbx-phone.fbx-portrait.fbx-no-buttons .fbx-close{left:0;right:0}.fbx-modal.fbx-phone.fbx-landscape{border-right-width:46px;border-right-style:solid;box-sizing:border-box}.fbx-modal.fbx-phone.fbx-landscape .fbx-inner-spacer{padding:5px}.fbx-modal.fbx-phone.fbx-landscape .fbx-close,.fbx-modal.fbx-phone.fbx-landscape .fbx-next,.fbx-modal.fbx-phone.fbx-landscape .fbx-prev{bottom:auto;left:auto;right:1px;width:44px;height:44px;line-height:44px;border:none;opacity:1;margin:0}.fbx-modal.fbx-phone.fbx-landscape .fbx-close{top:0;height:60px}.fbx-modal.fbx-phone.fbx-landscape .fbx-prev{top:62px}.fbx-modal.fbx-phone.fbx-landscape .fbx-next{top:108px}@font-face{font-family:foobox;src:url(font/foobox.eot);src:url(font/foobox.eot?#iefix) format('embedded-opentype'),url(font/foobox.woff) format('woff'),url(font/foobox.ttf) format('truetype'),url(font/foobox.svg#foobox) format('svg');font-weight:400;font-style:normal}.fbx-modal .fbx-error-msg>span,.fbx-modal .fbx-loader>div,.fbx-modal a.fbx-close,.fbx-modal a.fbx-next,.fbx-modal a.fbx-prev{font-family:foobox;font-size:16px;font-weight:400;text-align:center;outline:0}.fbx-modal .fbx-loader>div{font-size:300%;line-height:60px}.fbx-modal.fbx-loading .fbx-loader>div{animation:spin 2s infinite linear}.fbx-modal .fbx-error-msg>span{font-size:1000%}.fbx-modal .fbx-error-msg>span:before{content:"\e028"}.fbx-close:before{content:"\e002"}.fbx-prev:before{content:"\e000"}.fbx-next:before{content:"\e001"}.fbx-loader>div:before{content:"\e012"}.fbx-flat .fbx-close:before{content:"\e117"}.fbx-flat .fbx-prev:before{content:"\e094"}.fbx-flat .fbx-next:before{content:"\e095"}.fbx-flat .fbx-loader>div:before{content:"\e105"}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(359deg)}}.fbx-rounded .fbx-prev.fbx-btn-shadow,.fbx-rounded .fbx-prev.fbx-btn-shadow:hover{box-shadow:-2px 0 2px rgba(0,0,0,.8)}.fbx-rounded .fbx-next.fbx-btn-shadow,.fbx-rounded .fbx-next.fbx-btn-shadow:hover{box-shadow:2px 0 2px rgba(0,0,0,.8)}.fbx-fullscreen-mode .fbx-btn-shadow,.fbx-fullscreen-mode .fbx-next.fbx-btn-shadow,.fbx-fullscreen-mode .fbx-prev.fbx-btn-shadow,.fbx-inner-shadow,.fbx-rounded .fbx-btn-shadow,.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-next.fbx-btn-shadow:before,.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-prev.fbx-btn-shadow:before,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-next.fbx-btn-shadow:before,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-prev.fbx-btn-shadow:before,.fbx-sticky-buttons .fbx-next.fbx-btn-shadow,.fbx-sticky-buttons .fbx-prev.fbx-btn-shadow{box-shadow:0 0 12px rgba(0,0,0,.8)}.fbx-fullscreen-mode .fbx-btn-shadow:hover,.fbx-fullscreen-mode .fbx-next.fbx-btn-shadow:hover,.fbx-fullscreen-mode .fbx-prev.fbx-btn-shadow:hover,.fbx-rounded .fbx-btn-shadow:hover,.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-next.fbx-btn-shadow:hover:before,.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-prev.fbx-btn-shadow:hover:before,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-next.fbx-btn-shadow:hover:before,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-prev.fbx-btn-shadow:hover:before,.fbx-sticky-buttons .fbx-next.fbx-btn-shadow:hover,.fbx-sticky-buttons .fbx-prev.fbx-btn-shadow:hover{box-shadow:0 0 6px rgba(0,0,0,.8)}.fbx-flat .fbx-inner-shadow,.fbx-flat.fbx-fullscreen-mode .fbx-btn-shadow,.fbx-flat.fbx-fullscreen-mode .fbx-btn-shadow:hover,.fbx-flat.fbx-fullscreen-mode .fbx-next.fbx-btn-shadow,.fbx-flat.fbx-fullscreen-mode .fbx-next.fbx-btn-shadow:hover,.fbx-flat.fbx-fullscreen-mode .fbx-prev.fbx-btn-shadow,.fbx-flat.fbx-fullscreen-mode .fbx-prev.fbx-btn-shadow:hover,.fbx-flat.fbx-sticky-buttons .fbx-next.fbx-btn-shadow,.fbx-flat.fbx-sticky-buttons .fbx-next.fbx-btn-shadow:hover,.fbx-flat.fbx-sticky-buttons .fbx-prev.fbx-btn-shadow,.fbx-flat.fbx-sticky-buttons .fbx-prev.fbx-btn-shadow:hover,.fbx-modal.fbx-phone.fbx-fullscreen-mode .fbx-btn-shadow,.fbx-modal.fbx-phone.fbx-fullscreen-mode .fbx-next.fbx-btn-shadow,.fbx-modal.fbx-phone.fbx-fullscreen-mode .fbx-prev.fbx-btn-shadow,.fbx-modal.fbx-phone.fbx-rounded .fbx-btn-shadow,.fbx-modal.fbx-phone.fbx-rounded.fbx-inset-buttons .fbx-next.fbx-btn-shadow:before,.fbx-modal.fbx-phone.fbx-rounded.fbx-inset-buttons .fbx-prev.fbx-btn-shadow:before,.fbx-modal.fbx-phone.fbx-sticky-buttons .fbx-next.fbx-btn-shadow,.fbx-modal.fbx-phone.fbx-sticky-buttons .fbx-prev.fbx-btn-shadow,.fbx-rounded.fbx-inset-buttons .fbx-next.fbx-btn-shadow,.fbx-rounded.fbx-inset-buttons .fbx-next.fbx-btn-shadow:hover,.fbx-rounded.fbx-inset-buttons .fbx-prev.fbx-btn-shadow,.fbx-rounded.fbx-inset-buttons .fbx-prev.fbx-btn-shadow:hover{box-shadow:none}.fbx-rounded .fbx-inner{border:8px solid transparent;border-radius:6px}.fbx-rounded .fbx-item-current,.fbx-rounded .fbx-item-image,.fbx-rounded .fbx-item-next{border-radius:3px}.fbx-rounded .fbx-loader,.fbx-rounded .fbx-loader>div{border-radius:50%}.fbx-rounded .fbx-error-msg{margin-top:-115px}.fbx-rounded .fbx-close{top:-21px;right:-21px;width:28px;height:28px;line-height:28px;border:3px solid transparent;border-radius:50%}.fbx-rounded .fbx-next,.fbx-rounded .fbx-prev{position:absolute;top:50%;margin-top:-50px;width:30px;height:100px;line-height:100px;border:3px solid transparent}.fbx-rounded .fbx-prev{left:-40px;border-radius:6px 0 0 6px}.fbx-rounded .fbx-next{right:-40px;border-radius:0 6px 6px 0}.fbx-rounded.fbx-phone .fbx-next.fbx-disabled,.fbx-rounded.fbx-phone .fbx-prev.fbx-disabled{display:block;cursor:default}.fbx-rounded.fbx-phone .fbx-next.fbx-disabled:before,.fbx-rounded.fbx-phone .fbx-prev.fbx-disabled:before{opacity:0}.fbx-rounded.fbx-desktop .fbx-next,.fbx-rounded.fbx-desktop .fbx-prev{position:absolute}.fbx-rounded .fbx-count,.fbx-rounded .fbx-credit{bottom:-25px}.fbx-rounded .fbx-inner-spacer{padding:40px 40px 50px}.fbx-modal.fbx-rounded.fbx-phone.fbx-portrait .fbx-inner-spacer{padding:60px 5px 0}.fbx-rounded.fbx-sticky-buttons .fbx-next,.fbx-rounded.fbx-sticky-buttons .fbx-prev{position:fixed;top:50%;margin-top:-50px;width:40px;height:100px;line-height:100px}.fbx-rounded.fbx-sticky-buttons .fbx-prev{left:0;border-radius:0 6px 6px 0}.fbx-rounded.fbx-sticky-buttons .fbx-next{right:0;border-radius:6px 0 0 6px}.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-inner-spacer{padding:40px 60px}.fbx-rounded.fbx-phone.fbx-portrait.fbx-sticky-buttons.fbx-full-buttons .fbx-inner-spacer{padding:35px 5px 15px}.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons.fbx-full-buttons .fbx-inner-spacer{padding:5px}.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-next,.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-prev{top:0;bottom:0;border-radius:0;width:4%;min-width:45px;height:auto;opacity:.3}.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-next:hover,.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-prev:hover{opacity:1}.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-next:before,.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-prev:before{position:fixed;width:4%;min-width:45px;height:30px;line-height:30px;top:50%;margin-top:-15px}.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-prev,.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-prev:before{left:0;right:auto}.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-next,.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-next:before{left:auto;right:0}.fbx-rounded.fbx-phone.fbx-sticky-buttons.fbx-full-buttons .fbx-next:before,.fbx-rounded.fbx-phone.fbx-sticky-buttons.fbx-full-buttons .fbx-prev:before{position:relative;width:auto;min-width:0;height:auto;line-height:inherit;top:auto;margin-top:auto}.fbx-rounded.fbx-phone.fbx-sticky-buttons.fbx-full-buttons .fbx-next,.fbx-rounded.fbx-phone.fbx-sticky-buttons.fbx-full-buttons .fbx-prev{top:0;bottom:auto;border-radius:0;width:auto;min-width:0;height:auto;opacity:1}.fbx-modal.fbx-rounded.fbx-phone.fbx-portrait.fbx-sticky-buttons.fbx-full-buttons .fbx-prev{left:0;right:66%}.fbx-modal.fbx-rounded.fbx-phone.fbx-portrait.fbx-sticky-buttons.fbx-full-buttons .fbx-next{left:33%;right:33%}.fbx-modal.fbx-rounded.fbx-phone.fbx-portrait.fbx-sticky-buttons.fbx-full-buttons .fbx-close{left:66%;right:0}.fbx-modal.fbx-rounded.fbx-phone.fbx-portrait.fbx-no-buttons.fbx-sticky-buttons.fbx-full-buttons .fbx-close{left:0;right:0}.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons.fbx-full-buttons .fbx-next,.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons.fbx-full-buttons .fbx-prev{bottom:auto;width:34px;height:80px;opacity:.5}.fbx-rounded.fbx-phone.fbx-landscape.fbx-full-buttons .fbx-prev,.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons .fbx-prev,.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons.fbx-full-buttons .fbx-prev{top:62px}.fbx-rounded.fbx-phone.fbx-landscape.fbx-full-buttons .fbx-next,.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons .fbx-next,.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons.fbx-full-buttons .fbx-next{top:108px}.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons.fbx-full-buttons .fbx-next:hover,.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons.fbx-full-buttons .fbx-prev:hover{opacity:1}.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons.fbx-full-buttons .fbx-prev{border-radius:0 6px 6px 0}.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons.fbx-full-buttons .fbx-next{border-radius:6px 0 0 6px}.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-next,.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-prev,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-next,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-prev{z-index:100003;position:absolute;top:0;bottom:0;height:100%;width:25%;margin:0;border-radius:0;background-color:transparent;box-sizing:border-box}.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-prev,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-prev{left:0}.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-next,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-next{right:0}.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-next:before,.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-prev:before,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-next:before,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-prev:before{width:28px;height:28px;border-radius:50%;position:absolute;top:50%;margin-top:-14px;line-height:28px;border-width:3px;border-style:solid;opacity:0}.fbx-rounded.fbx-inset-buttons .fbx-prev:before{left:10px}.fbx-rounded.fbx-inset-buttons .fbx-next:before{right:10px}.fbx-rounded.fbx-inset-buttons .fbx-next:hover:before,.fbx-rounded.fbx-inset-buttons .fbx-prev:hover:before{opacity:1}.fbx-light,.fbx-light .fbx-caption,.fbx-light .fbx-open-caption,.fbx-light.fbx-phone .fbx-social{background-color:rgba(0,0,0,.7)}.fbx-light .fbx-progress{background-color:rgba(255,255,255,.5)}.fbx-fullscreen-mode.fbx-light{background-color:#d3d3d3}.fbx-light .fbx-caption,.fbx-light .fbx-inner,.fbx-light .fbx-social,.fbx-light.fbx-inset-buttons .fbx-next:before,.fbx-light.fbx-inset-buttons .fbx-prev:before,.fbx-light.fbx-modal,.fbx-modal.fbx-light.fbx-phone .fbx-close:hover,.fbx-modal.fbx-light.fbx-phone .fbx-fullscreen-toggle:hover,.fbx-modal.fbx-light.fbx-phone .fbx-next:hover,.fbx-modal.fbx-light.fbx-phone .fbx-pause:hover,.fbx-modal.fbx-light.fbx-phone .fbx-play:hover,.fbx-modal.fbx-light.fbx-phone .fbx-prev:hover,.fbx-modal.fbx-light.fbx-phone .fbx-social-toggle:hover,.fbx-rounded.fbx-light .fbx-close,.fbx-rounded.fbx-light .fbx-fullscreen-toggle,.fbx-rounded.fbx-light .fbx-pause,.fbx-rounded.fbx-light .fbx-play,.fbx-rounded.fbx-light .fbx-social-toggle{border-color:#FFF}.fbx-light .fbx-close,.fbx-light .fbx-fullscreen-toggle,.fbx-light .fbx-inner,.fbx-light .fbx-loader,.fbx-light .fbx-next,.fbx-light .fbx-pause,.fbx-light .fbx-play,.fbx-light .fbx-prev,.fbx-light .fbx-social-toggle,.fbx-light.fbx-inset-buttons .fbx-next:before,.fbx-light.fbx-inset-buttons .fbx-prev:before{background-color:#FFF}.fbx-flat.fbx-light .fbx-close,.fbx-flat.fbx-light .fbx-fullscreen-toggle,.fbx-flat.fbx-light .fbx-next,.fbx-flat.fbx-light .fbx-pause,.fbx-flat.fbx-light .fbx-play,.fbx-flat.fbx-light .fbx-prev,.fbx-flat.fbx-light .fbx-social-toggle,.fbx-flat.fbx-light.fbx-inset-buttons .fbx-next:before,.fbx-flat.fbx-light.fbx-inset-buttons .fbx-prev:before{background-color:transparent}.fbx-flat.fbx-light.fbx-inset-buttons .fbx-next:before,.fbx-flat.fbx-light.fbx-inset-buttons .fbx-prev:before{border-color:transparent}.fbx-light .fbx-close,.fbx-light .fbx-close:before,.fbx-light .fbx-error-msg,.fbx-light .fbx-fullscreen-toggle,.fbx-light .fbx-fullscreen-toggle:before,.fbx-light .fbx-loader,.fbx-light .fbx-loader:before,.fbx-light .fbx-next,.fbx-light .fbx-next:before,.fbx-light .fbx-pause,.fbx-light .fbx-pause:before,.fbx-light .fbx-play,.fbx-light .fbx-play:before,.fbx-light .fbx-prev,.fbx-light .fbx-prev:before,.fbx-light .fbx-social-toggle,.fbx-light .fbx-social-toggle:before,.fbx-light.fbx-inset-buttons .fbx-next:before,.fbx-light.fbx-inset-buttons .fbx-prev:before,.fbx-metro.fbx-light .fbx-count,.fbx-metro.fbx-light .fbx-credit a{color:#666!important}.fbx-flat.fbx-light .fbx-close,.fbx-flat.fbx-light .fbx-close:before,.fbx-flat.fbx-light .fbx-count,.fbx-flat.fbx-light .fbx-credit a,.fbx-flat.fbx-light .fbx-fullscreen-toggle,.fbx-flat.fbx-light .fbx-fullscreen-toggle:before,.fbx-flat.fbx-light .fbx-next,.fbx-flat.fbx-light .fbx-next:before,.fbx-flat.fbx-light .fbx-pause,.fbx-flat.fbx-light .fbx-pause:before,.fbx-flat.fbx-light .fbx-play,.fbx-flat.fbx-light .fbx-play:before,.fbx-flat.fbx-light .fbx-prev,.fbx-flat.fbx-light .fbx-prev:before,.fbx-flat.fbx-light .fbx-social-toggle,.fbx-flat.fbx-light .fbx-social-toggle:before{color:#FFF!important}.fbx-light .fbx-close:hover,.fbx-light .fbx-close:hover:before,.fbx-light .fbx-fullscreen-toggle:hover,.fbx-light .fbx-fullscreen-toggle:hover:before,.fbx-light .fbx-next:hover,.fbx-light .fbx-next:hover:before,.fbx-light .fbx-pause:hover,.fbx-light .fbx-pause:hover:before,.fbx-light .fbx-play:hover,.fbx-light .fbx-play:hover:before,.fbx-light .fbx-prev:hover,.fbx-light .fbx-prev:hover:before,.fbx-light .fbx-social-toggle:hover,.fbx-light .fbx-social-toggle:hover:before,.fbx-light.fbx-inset-buttons .fbx-next:hover:before,.fbx-light.fbx-inset-buttons .fbx-prev:hover:before,.fbx-metro.fbx-light .fbx-credit a:hover{color:#bababa!important}.fbx-metro.fbx-light .fbx-close:hover,.fbx-metro.fbx-light .fbx-fullscreen-toggle:hover,.fbx-metro.fbx-light .fbx-next:hover,.fbx-metro.fbx-light .fbx-pause:hover,.fbx-metro.fbx-light .fbx-play:hover,.fbx-metro.fbx-light .fbx-prev:hover,.fbx-metro.fbx-light .fbx-social-toggle:hover{border-color:#bababa}.fbx-rounded.fbx-light .fbx-count,.fbx-rounded.fbx-light .fbx-credit a{color:#888}.fbx-rounded.fbx-light .fbx-credit a:hover span{color:#ddd}.fbx-light .fbx-caption{color:#FFF}.fbx-light .fbx-caption-desc,.fbx-light .fbx-caption-desc a{color:#eee}.fbx-light .fbx-item-current::-webkit-scrollbar{width:12px;height:12px}.fbx-light .fbx-item-current::-webkit-scrollbar-track{background:rgba(0,0,0,.1)}.fbx-light .fbx-item-current::-webkit-scrollbar-thumb{background:rgba(0,0,0,.5)}.fbx-light .fbx-item-current::-webkit-scrollbar,.fbx-light .fbx-item-next::-webkit-scrollbar{width:12px;height:12px}.fbx-light .fbx-item-current::-webkit-scrollbar-track,.fbx-light .fbx-item-next::-webkit-scrollbar-track{background:rgba(0,0,0,.1)}.fbx-light .fbx-item-current::-webkit-scrollbar-corner,.fbx-light .fbx-item-current::-webkit-scrollbar-thumb,.fbx-light .fbx-item-next::-webkit-scrollbar-corner,.fbx-light .fbx-item-next::-webkit-scrollbar-thumb{background:rgba(0,0,0,.3)}.fbx-caption{position:absolute;top:auto;right:auto;bottom:0;left:0;z-index:100004;width:100%;text-align:center;font-size:14px;transition:visibility .3s ease,opacity .3s ease,transform .3s ease;opacity:1;transform:translateY(0)}.fbx-loading .fbx-caption.fbx-hide-caption,.fbx-open-caption,.fbx-show .fbx-caption.fbx-hide-caption{visibility:hidden}.fbx-show .fbx-caption.fbx-fade-caption{opacity:0;visibility:hidden}.fbx-caption.fbx-slide-caption{transform:translateY(100%)}.fbx-fullscreen-mode .fbx-caption,.fbx-sticky-caption .fbx-caption{position:fixed;z-index:100007}.fbx-close-caption,.fbx-open-caption{position:absolute;color:#FFF;font-size:24px;text-decoration:none;line-height:20px}.fbx-rounded .fbx-caption{border-radius:0 0 3px 3px}.fbx-modal.fbx-phone .fbx-caption,.fbx-sticky-caption.fbx-rounded .fbx-caption{border-radius:0}.fbx-close-caption{top:0;right:0;padding:3px 3px 10px 10px}.fbx-open-caption{z-index:100004;bottom:0;right:5px;padding:0 10px 10px;opacity:0;transition:opacity .3s ease;border-top-left-radius:6px;border-top-right-radius:6px}.fbx-caption-toggle-only.fbx-captions-hidden .fbx-open-caption,.fbx-pannable-item.fbx-captions-hidden .fbx-open-caption{opacity:1;visibility:visible}.fbx-caption-title{font-size:15px;padding:15px}.fbx-caption-desc{font-size:12px;line-height:20px;padding:15px}.fbx-caption-desc a{font-size:12px}.fbx-caption-title+.fbx-caption-desc{margin-top:-30px}.fbx-phone .fbx-caption{min-height:20px;font-size:12px;line-height:20px}.fbx-phone .fbx-caption-title{font-size:13px;padding:10px}.fbx-phone .fbx-caption-desc{font-size:11px;line-height:15px;padding:10px}.fbx-phone .fbx-caption-title+.fbx-caption-desc{margin-top:-20px}.fbx-modal.fbx-phone .fbx-caption{z-index:100004;bottom:0;position:fixed}.fbx-modal.fbx-phone.fbx-landscape .fbx-caption,.fbx-phone.fbx-landscape.fbx-sticky-caption .fbx-caption{z-index:100004}.fbx-modal.fbx-phone.fbx-landscape .fbx-caption{border-right-width:46px;border-right-style:solid;box-sizing:border-box}.fbx-modal.fbx-flat.fbx-phone.fbx-landscape .fbx-caption{border-right-width:0}.fbx-pannable{cursor:-moz-grab;cursor:-webkit-grab;cursor:grab}.fbx-pannable.fbx-panning{cursor:-moz-grabbing;cursor:-webkit-grabbing;cursor:grabbing}.fbx-pannable>div>img.fbx-item{max-width:none;max-height:none}.fbx-pan-overview{cursor:pointer;max-width:150px;max-height:150px;overflow:hidden;background-position:top left;background-size:cover;position:absolute;z-index:100006;border:2px solid #666;box-shadow:0 0 12px rgba(0,0,0,.8)}.fbx-pan-overview.fbx-top-left{top:20px;left:20px}.fbx-pan-overview.fbx-top-right{top:20px;right:32px}.fbx-pan-overview.fbx-bottom-left{bottom:32px;left:20px}.fbx-pan-overview.fbx-bottom-right{bottom:32px;right:32px}.fbx-pan-viewport{position:absolute;top:0;left:0;box-shadow:0 0 300px 300px rgba(0,0,0,.7)}
5
  * @copyright Steven Usher & Brad Vincent 2014
6
  * @license Released under the MIT license.
7
  * You are free to use FooBox jQuery in personal projects as long as this copyright header is left intact.
8
+ */.fbx-close:hover,.fbx-credit a,.fbx-next:hover,.fbx-prev:hover{text-decoration:none}.fbx-modal,.fbx-modal *{box-sizing:content-box}.fbx-modal{position:fixed;top:0;left:0;z-index:9000001;visibility:hidden;width:100%;height:100%;font-family:"Segoe UI",Helvetica,Arial,"Sans Serif",serif;line-height:normal;outline:0!important;transform:translate3d(0,0,0);perspective:0}.fbx-modal.fbx-loading,.fbx-modal.fbx-show{visibility:visible}.fbx-no-scroll{overflow:hidden!important}.fbx-inner-spacer{display:none;padding:40px}.fbx-inner,.fbx-loader{position:absolute;top:50%;left:50%}.fbx-inner{visibility:hidden;overflow:visible!important;margin-top:-5px;margin-left:-5px;min-width:100px;min-height:100px;width:100px;height:100px;z-index:100002}.fbx-show .fbx-inner{visibility:visible}.fbx-loader{visibility:hidden;z-index:100005;margin-top:-40px;margin-left:-40px;width:80px;height:80px;font-size:16px;box-shadow:0 0 3px rgba(0,0,0,.4)}.fbx-loading .fbx-loader,.fbx-show .fbx-caption{visibility:visible}.fbx-phone.fbx-portrait .fbx-loader{margin-top:-18px}.fbx-loader>div{margin:10px;width:60px;height:60px}.fbx-item-current,.fbx-item-next,.fbx-stage{top:0;left:0;margin:0;width:100%;height:100%;padding:0;outline:0;position:absolute;border:none}.fbx-stage{overflow:hidden}.fbx-item-current,.fbx-item-next{-webkit-user-drag:none;overflow:auto}.fbx-loading .fbx-item-current,.fbx-loading .fbx-item-next{overflow:hidden}.fbx-item-next{z-index:100001}.fbx-item-current{z-index:100002}.fbx-error-msg{width:200px;height:200px;position:absolute;top:50%;left:50%;margin-top:-100px;margin-left:-100px}.fbx-error-msg>span{line-height:200px;width:100%;height:100%;display:block}.fbx-error-msg>p{position:absolute;top:100%;text-align:center;width:100%;margin:0}.fbx-item-embed,.fbx-item-iframe,.fbx-item-image,.fbx-item-video{margin:0;padding:0;width:100%;height:100%;outline:0;border:none;display:block}.fbx-item-video>.fbx-video{background-color:#000}.fbx-item-embed embed,.fbx-item-embed iframe,.fbx-item-embed object{margin-bottom:0}.fbx-item-embed>embed,.fbx-item-embed>iframe,.fbx-item-embed>object{max-width:100%;max-height:100%}.fbx-ios .fbx-item-current{-webkit-overflow-scrolling:touch!important;overflow:auto!important}.fbx-ios .fbx-item-iframe{width:1px;min-width:100%}.fbx-close,.fbx-next,.fbx-prev{position:absolute;z-index:100006;display:block;outline:0!important;text-decoration:none;cursor:pointer}.fbx-no-buttons .fbx-next,.fbx-no-buttons .fbx-prev{display:none!important}.fbx-phone .fbx-count,.fbx-phone .fbx-credit em,.fbx-phone.fbx-landscape.fbx-no-nav .fbx-next,.fbx-phone.fbx-landscape.fbx-no-nav .fbx-prev,.fbx-rounded .fbx-next.fbx-disabled,.fbx-rounded .fbx-prev.fbx-disabled{display:none}.fbx-credit{position:absolute;z-index:100003;text-transform:lowercase;font-size:10px}.fbx-credit em{font-style:normal;font-size:10px}.fbx-credit a{font-size:10px}.fbx-credit a:hover span{text-decoration:underline}.fbx-credit a span{letter-spacing:1px;font-size:10px;color:#fff}.fbx-count{position:absolute;z-index:100002;width:100%;text-align:center;font-size:10px}.fbx-btn-transition,.fbx-btn-transition:before{transition-property:color,border-color,opacity,box-shadow;transition-duration:.2s,.2s,.2s,.2s;transition-timing-function:ease-in,linear,ease-in,ease-in;outline:0}.fbx-modal.fbx-phone .fbx-inner{border:none}.fbx-modal.fbx-phone .fbx-close,.fbx-modal.fbx-phone .fbx-next,.fbx-modal.fbx-phone .fbx-prev{position:fixed}.fbx-modal.fbx-phone .fbx-credit{bottom:2px;left:2px}.fbx-modal.fbx-phone.fbx-portrait .fbx-inner-spacer{padding:45px 5px 5px}.fbx-modal.fbx-phone.fbx-portrait .fbx-close,.fbx-modal.fbx-phone.fbx-portrait .fbx-next,.fbx-modal.fbx-phone.fbx-portrait .fbx-prev{border:none;opacity:1;margin:0;top:0;bottom:auto;width:auto;height:40px;border-radius:0;line-height:40px}.fbx-modal.fbx-phone.fbx-portrait .fbx-prev{left:0;right:66%}.fbx-modal.fbx-phone.fbx-portrait .fbx-next{left:33%;right:33%}.fbx-modal.fbx-phone.fbx-portrait .fbx-close{left:66%;right:0}.fbx-modal.fbx-phone.fbx-portrait.fbx-no-buttons .fbx-close{left:0;right:0}.fbx-modal.fbx-phone.fbx-landscape{border-right-width:46px;border-right-style:solid;box-sizing:border-box}.fbx-modal.fbx-phone.fbx-landscape .fbx-inner-spacer{padding:5px}.fbx-modal.fbx-phone.fbx-landscape .fbx-close,.fbx-modal.fbx-phone.fbx-landscape .fbx-next,.fbx-modal.fbx-phone.fbx-landscape .fbx-prev{bottom:auto;left:auto;right:-45px;width:44px;height:44px;line-height:44px;border:none;opacity:1;margin:0}.fbx-modal.fbx-phone.fbx-landscape .fbx-close{top:0;height:60px}.fbx-modal.fbx-phone.fbx-landscape .fbx-prev{top:62px}.fbx-modal.fbx-phone.fbx-landscape .fbx-next{top:108px}@font-face{font-family:foobox;src:url(font/foobox.eot);src:url(font/foobox.eot?#iefix) format('embedded-opentype'),url(font/foobox.woff) format('woff'),url(font/foobox.ttf) format('truetype'),url(font/foobox.svg#foobox) format('svg');font-weight:400;font-style:normal}.fbx-modal .fbx-error-msg>span,.fbx-modal .fbx-loader>div,.fbx-modal a.fbx-close,.fbx-modal a.fbx-next,.fbx-modal a.fbx-prev{font-family:foobox;font-size:16px;font-weight:400;text-align:center;outline:0}.fbx-modal .fbx-loader>div{font-size:300%;line-height:60px}.fbx-modal.fbx-loading .fbx-loader>div{animation:spin 2s infinite linear}.fbx-modal .fbx-error-msg>span{font-size:1000%}.fbx-modal .fbx-error-msg>span:before{content:"\e028"}.fbx-close:before{content:"\e002"}.fbx-prev:before{content:"\e000"}.fbx-next:before{content:"\e001"}.fbx-loader>div:before{content:"\e012"}.fbx-flat .fbx-close:before{content:"\e117"}.fbx-flat .fbx-prev:before{content:"\e094"}.fbx-flat .fbx-next:before{content:"\e095"}.fbx-flat .fbx-loader>div:before{content:"\e105"}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(359deg)}}.fbx-rounded .fbx-prev.fbx-btn-shadow,.fbx-rounded .fbx-prev.fbx-btn-shadow:hover{box-shadow:-2px 0 2px rgba(0,0,0,.4)}.fbx-rounded .fbx-next.fbx-btn-shadow,.fbx-rounded .fbx-next.fbx-btn-shadow:hover{box-shadow:2px 0 2px rgba(0,0,0,.4)}.fbx-fullscreen-mode .fbx-btn-shadow,.fbx-fullscreen-mode .fbx-next.fbx-btn-shadow,.fbx-fullscreen-mode .fbx-prev.fbx-btn-shadow,.fbx-inner-shadow,.fbx-rounded .fbx-btn-shadow,.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-next.fbx-btn-shadow:before,.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-prev.fbx-btn-shadow:before,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-next.fbx-btn-shadow:before,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-prev.fbx-btn-shadow:before,.fbx-sticky-buttons .fbx-next.fbx-btn-shadow,.fbx-sticky-buttons .fbx-prev.fbx-btn-shadow{box-shadow:0 0 12px rgba(0,0,0,.4)}.fbx-fullscreen-mode .fbx-btn-shadow:hover,.fbx-fullscreen-mode .fbx-next.fbx-btn-shadow:hover,.fbx-fullscreen-mode .fbx-prev.fbx-btn-shadow:hover,.fbx-rounded .fbx-btn-shadow:hover,.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-next.fbx-btn-shadow:hover:before,.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-prev.fbx-btn-shadow:hover:before,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-next.fbx-btn-shadow:hover:before,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-prev.fbx-btn-shadow:hover:before,.fbx-sticky-buttons .fbx-next.fbx-btn-shadow:hover,.fbx-sticky-buttons .fbx-prev.fbx-btn-shadow:hover{box-shadow:0 0 6px rgba(0,0,0,.4)}.fbx-flat .fbx-inner-shadow,.fbx-flat.fbx-fullscreen-mode .fbx-btn-shadow,.fbx-flat.fbx-fullscreen-mode .fbx-btn-shadow:hover,.fbx-flat.fbx-fullscreen-mode .fbx-next.fbx-btn-shadow,.fbx-flat.fbx-fullscreen-mode .fbx-next.fbx-btn-shadow:hover,.fbx-flat.fbx-fullscreen-mode .fbx-prev.fbx-btn-shadow,.fbx-flat.fbx-fullscreen-mode .fbx-prev.fbx-btn-shadow:hover,.fbx-flat.fbx-sticky-buttons .fbx-next.fbx-btn-shadow,.fbx-flat.fbx-sticky-buttons .fbx-next.fbx-btn-shadow:hover,.fbx-flat.fbx-sticky-buttons .fbx-prev.fbx-btn-shadow,.fbx-flat.fbx-sticky-buttons .fbx-prev.fbx-btn-shadow:hover,.fbx-modal.fbx-phone.fbx-fullscreen-mode .fbx-btn-shadow,.fbx-modal.fbx-phone.fbx-fullscreen-mode .fbx-next.fbx-btn-shadow,.fbx-modal.fbx-phone.fbx-fullscreen-mode .fbx-prev.fbx-btn-shadow,.fbx-modal.fbx-phone.fbx-rounded .fbx-btn-shadow,.fbx-modal.fbx-phone.fbx-rounded.fbx-inset-buttons .fbx-next.fbx-btn-shadow:before,.fbx-modal.fbx-phone.fbx-rounded.fbx-inset-buttons .fbx-prev.fbx-btn-shadow:before,.fbx-modal.fbx-phone.fbx-sticky-buttons .fbx-next.fbx-btn-shadow,.fbx-modal.fbx-phone.fbx-sticky-buttons .fbx-prev.fbx-btn-shadow,.fbx-rounded.fbx-inset-buttons .fbx-next.fbx-btn-shadow,.fbx-rounded.fbx-inset-buttons .fbx-next.fbx-btn-shadow:hover,.fbx-rounded.fbx-inset-buttons .fbx-prev.fbx-btn-shadow,.fbx-rounded.fbx-inset-buttons .fbx-prev.fbx-btn-shadow:hover{box-shadow:none}.fbx-rounded .fbx-inner{border:8px solid transparent;border-radius:6px}.fbx-rounded .fbx-item-current,.fbx-rounded .fbx-item-image,.fbx-rounded .fbx-item-next{border-radius:3px}.fbx-rounded .fbx-loader,.fbx-rounded .fbx-loader>div{border-radius:50%}.fbx-rounded .fbx-error-msg{margin-top:-115px}.fbx-rounded .fbx-close{top:-21px;right:-21px;width:28px;height:28px;line-height:28px;border:3px solid transparent;border-radius:50%}.fbx-rounded .fbx-next,.fbx-rounded .fbx-prev{position:absolute;top:50%;margin-top:-50px;width:30px;height:100px;line-height:100px;border:3px solid transparent}.fbx-rounded .fbx-prev{left:-40px;border-radius:6px 0 0 6px}.fbx-rounded .fbx-next{right:-40px;border-radius:0 6px 6px 0}.fbx-rounded.fbx-phone .fbx-next.fbx-disabled,.fbx-rounded.fbx-phone .fbx-prev.fbx-disabled{display:block;cursor:default}.fbx-rounded.fbx-phone .fbx-next.fbx-disabled:before,.fbx-rounded.fbx-phone .fbx-prev.fbx-disabled:before{opacity:0}.fbx-rounded.fbx-desktop .fbx-next,.fbx-rounded.fbx-desktop .fbx-prev{position:absolute}.fbx-rounded .fbx-count,.fbx-rounded .fbx-credit{bottom:-25px}.fbx-rounded .fbx-inner-spacer{padding:40px 40px 50px}.fbx-modal.fbx-rounded.fbx-phone.fbx-portrait .fbx-inner-spacer{padding:45px 5px 5px}.fbx-rounded.fbx-sticky-buttons .fbx-next,.fbx-rounded.fbx-sticky-buttons .fbx-prev{position:fixed;top:50%;margin-top:-50px;width:40px;height:100px;line-height:100px}.fbx-rounded.fbx-sticky-buttons .fbx-prev{left:0;border-radius:0 6px 6px 0}.fbx-rounded.fbx-sticky-buttons .fbx-next{right:0;border-radius:6px 0 0 6px}.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-inner-spacer{padding:40px 80px}.fbx-rounded.fbx-phone.fbx-portrait.fbx-sticky-buttons.fbx-full-buttons .fbx-inner-spacer{padding:45px 5px 5px}.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons.fbx-full-buttons .fbx-inner-spacer{padding:5px}.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-next,.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-prev{top:0;bottom:0;border-radius:0;width:4%;min-width:45px;height:auto;opacity:.3}.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-next:hover,.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-prev:hover{opacity:1}.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-next:before,.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-prev:before{position:fixed;width:4%;min-width:45px;height:30px;line-height:30px;top:50%;margin-top:-15px}.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-prev,.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-prev:before{left:0;right:auto}.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-next,.fbx-rounded.fbx-sticky-buttons.fbx-full-buttons .fbx-next:before{left:auto;right:0}.fbx-rounded.fbx-phone.fbx-sticky-buttons.fbx-full-buttons .fbx-next:before,.fbx-rounded.fbx-phone.fbx-sticky-buttons.fbx-full-buttons .fbx-prev:before{position:relative;width:auto;min-width:0;height:auto;line-height:inherit;top:auto;margin-top:auto}.fbx-rounded.fbx-phone.fbx-sticky-buttons.fbx-full-buttons .fbx-next,.fbx-rounded.fbx-phone.fbx-sticky-buttons.fbx-full-buttons .fbx-prev{top:0;bottom:auto;border-radius:0;width:auto;min-width:0;height:auto;opacity:1}.fbx-modal.fbx-rounded.fbx-phone.fbx-portrait.fbx-sticky-buttons.fbx-full-buttons .fbx-prev{left:0;right:66%}.fbx-modal.fbx-rounded.fbx-phone.fbx-portrait.fbx-sticky-buttons.fbx-full-buttons .fbx-next{left:33%;right:33%}.fbx-modal.fbx-rounded.fbx-phone.fbx-portrait.fbx-sticky-buttons.fbx-full-buttons .fbx-close{left:66%;right:0}.fbx-modal.fbx-rounded.fbx-phone.fbx-portrait.fbx-no-buttons.fbx-sticky-buttons.fbx-full-buttons .fbx-close{left:0;right:0}.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons.fbx-full-buttons .fbx-next,.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons.fbx-full-buttons .fbx-prev{bottom:auto;width:34px;height:80px;opacity:.5}.fbx-rounded.fbx-phone.fbx-landscape.fbx-full-buttons .fbx-prev,.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons .fbx-prev,.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons.fbx-full-buttons .fbx-prev{top:62px}.fbx-rounded.fbx-phone.fbx-landscape.fbx-full-buttons .fbx-next,.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons .fbx-next,.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons.fbx-full-buttons .fbx-next{top:108px}.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons.fbx-full-buttons .fbx-next:hover,.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons.fbx-full-buttons .fbx-prev:hover{opacity:1}.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons.fbx-full-buttons .fbx-prev{border-radius:0 6px 6px 0}.fbx-rounded.fbx-phone.fbx-landscape.fbx-sticky-buttons.fbx-full-buttons .fbx-next{border-radius:6px 0 0 6px}.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-next,.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-prev,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-next,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-prev{z-index:100003;position:absolute;top:0;bottom:0;height:100%;width:25%;margin:0;border-radius:0;background-color:transparent;box-sizing:border-box}.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-prev,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-prev{left:0}.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-next,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-next{right:0}.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-next:before,.fbx-rounded.fbx-inset-buttons.fbx-desktop .fbx-prev:before,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-next:before,.fbx-rounded.fbx-inset-buttons.fbx-tablet .fbx-prev:before{width:28px;height:28px;border-radius:50%;position:absolute;top:50%;margin-top:-14px;line-height:28px;border-width:3px;border-style:solid;opacity:0}.fbx-rounded.fbx-inset-buttons .fbx-prev:before{left:10px}.fbx-rounded.fbx-inset-buttons .fbx-next:before{right:10px}.fbx-rounded.fbx-inset-buttons .fbx-next:hover:before,.fbx-rounded.fbx-inset-buttons .fbx-prev:hover:before{opacity:1}.fbx-light,.fbx-light .fbx-caption,.fbx-light .fbx-open-caption,.fbx-light.fbx-phone .fbx-social{background-color:rgba(0,0,0,.7)}.fbx-light .fbx-progress{background-color:rgba(255,255,255,.5)}.fbx-fullscreen-mode.fbx-light{background-color:#d3d3d3}.fbx-light .fbx-inner,.fbx-light.fbx-inset-buttons .fbx-next:before,.fbx-light.fbx-inset-buttons .fbx-prev:before,.fbx-light.fbx-modal,.fbx-modal.fbx-light.fbx-phone .fbx-close:hover,.fbx-modal.fbx-light.fbx-phone .fbx-fullscreen-toggle:hover,.fbx-modal.fbx-light.fbx-phone .fbx-next:hover,.fbx-modal.fbx-light.fbx-phone .fbx-pause:hover,.fbx-modal.fbx-light.fbx-phone .fbx-play:hover,.fbx-modal.fbx-light.fbx-phone .fbx-prev:hover,.fbx-modal.fbx-light.fbx-phone .fbx-social-toggle:hover,.fbx-rounded.fbx-light .fbx-close,.fbx-rounded.fbx-light .fbx-fullscreen-toggle,.fbx-rounded.fbx-light .fbx-pause,.fbx-rounded.fbx-light .fbx-play,.fbx-rounded.fbx-light .fbx-social-toggle{border-color:#FFF}.fbx-light .fbx-close,.fbx-light .fbx-fullscreen-toggle,.fbx-light .fbx-inner,.fbx-light .fbx-loader,.fbx-light .fbx-next,.fbx-light .fbx-pause,.fbx-light .fbx-play,.fbx-light .fbx-prev,.fbx-light .fbx-social-toggle,.fbx-light.fbx-inset-buttons .fbx-next:before,.fbx-light.fbx-inset-buttons .fbx-prev:before{background-color:#FFF}.fbx-flat.fbx-light .fbx-close,.fbx-flat.fbx-light .fbx-fullscreen-toggle,.fbx-flat.fbx-light .fbx-next,.fbx-flat.fbx-light .fbx-pause,.fbx-flat.fbx-light .fbx-play,.fbx-flat.fbx-light .fbx-prev,.fbx-flat.fbx-light .fbx-social-toggle,.fbx-flat.fbx-light.fbx-inset-buttons .fbx-next:before,.fbx-flat.fbx-light.fbx-inset-buttons .fbx-prev:before{background-color:transparent}.fbx-flat.fbx-light.fbx-inset-buttons .fbx-next:before,.fbx-flat.fbx-light.fbx-inset-buttons .fbx-prev:before{border-color:transparent}.fbx-flat.fbx-light.fbx-modal{border-color:rgba(0,0,0,.2)}.fbx-flat.fbx-light.fbx-phone.fbx-portrait .fbx-close,.fbx-flat.fbx-light.fbx-phone.fbx-portrait .fbx-fullscreen-toggle,.fbx-flat.fbx-light.fbx-phone.fbx-portrait .fbx-next,.fbx-flat.fbx-light.fbx-phone.fbx-portrait .fbx-pause,.fbx-flat.fbx-light.fbx-phone.fbx-portrait .fbx-play,.fbx-flat.fbx-light.fbx-phone.fbx-portrait .fbx-prev,.fbx-flat.fbx-light.fbx-phone.fbx-portrait .fbx-social-toggle{background-color:rgba(0,0,0,.2)}.fbx-light .fbx-close,.fbx-light .fbx-close:before,.fbx-light .fbx-error-msg,.fbx-light .fbx-fullscreen-toggle,.fbx-light .fbx-fullscreen-toggle:before,.fbx-light .fbx-loader,.fbx-light .fbx-loader:before,.fbx-light .fbx-next,.fbx-light .fbx-next:before,.fbx-light .fbx-pause,.fbx-light .fbx-pause:before,.fbx-light .fbx-play,.fbx-light .fbx-play:before,.fbx-light .fbx-prev,.fbx-light .fbx-prev:before,.fbx-light .fbx-social-toggle,.fbx-light .fbx-social-toggle:before,.fbx-light.fbx-inset-buttons .fbx-next:before,.fbx-light.fbx-inset-buttons .fbx-prev:before,.fbx-metro.fbx-light .fbx-count,.fbx-metro.fbx-light .fbx-credit a{color:#666!important}.fbx-flat.fbx-light .fbx-close,.fbx-flat.fbx-light .fbx-close:before,.fbx-flat.fbx-light .fbx-count,.fbx-flat.fbx-light .fbx-credit a,.fbx-flat.fbx-light .fbx-fullscreen-toggle,.fbx-flat.fbx-light .fbx-fullscreen-toggle:before,.fbx-flat.fbx-light .fbx-next,.fbx-flat.fbx-light .fbx-next:before,.fbx-flat.fbx-light .fbx-pause,.fbx-flat.fbx-light .fbx-pause:before,.fbx-flat.fbx-light .fbx-play,.fbx-flat.fbx-light .fbx-play:before,.fbx-flat.fbx-light .fbx-prev,.fbx-flat.fbx-light .fbx-prev:before,.fbx-flat.fbx-light .fbx-social-toggle,.fbx-flat.fbx-light .fbx-social-toggle:before{color:#FFF!important}.fbx-light .fbx-close:hover,.fbx-light .fbx-close:hover:before,.fbx-light .fbx-fullscreen-toggle:hover,.fbx-light .fbx-fullscreen-toggle:hover:before,.fbx-light .fbx-next:hover,.fbx-light .fbx-next:hover:before,.fbx-light .fbx-pause:hover,.fbx-light .fbx-pause:hover:before,.fbx-light .fbx-play:hover,.fbx-light .fbx-play:hover:before,.fbx-light .fbx-prev:hover,.fbx-light .fbx-prev:hover:before,.fbx-light .fbx-social-toggle:hover,.fbx-light .fbx-social-toggle:hover:before,.fbx-light.fbx-inset-buttons .fbx-next:hover:before,.fbx-light.fbx-inset-buttons .fbx-prev:hover:before,.fbx-metro.fbx-light .fbx-credit a:hover{color:#bababa!important}.fbx-metro.fbx-light .fbx-close:hover,.fbx-metro.fbx-light .fbx-fullscreen-toggle:hover,.fbx-metro.fbx-light .fbx-next:hover,.fbx-metro.fbx-light .fbx-pause:hover,.fbx-metro.fbx-light .fbx-play:hover,.fbx-metro.fbx-light .fbx-prev:hover,.fbx-metro.fbx-light .fbx-social-toggle:hover{border-color:#bababa}.fbx-flat.fbx-light .fbx-count,.fbx-flat.fbx-light .fbx-credit a,.fbx-rounded.fbx-light .fbx-count,.fbx-rounded.fbx-light .fbx-credit a{color:#888}.fbx-flat.fbx-light .fbx-credit a:hover span,.fbx-rounded.fbx-light .fbx-credit a:hover span{color:#ddd}.fbx-light .fbx-caption{color:#FFF}.fbx-light .fbx-caption-desc,.fbx-light .fbx-caption-desc a{color:#eee}.fbx-light .fbx-item-current::-webkit-scrollbar{width:12px;height:12px}.fbx-light .fbx-item-current::-webkit-scrollbar-track{background:rgba(0,0,0,.1)}.fbx-light .fbx-item-current::-webkit-scrollbar-thumb{background:rgba(0,0,0,.5)}.fbx-light .fbx-item-current::-webkit-scrollbar,.fbx-light .fbx-item-next::-webkit-scrollbar{width:12px;height:12px}.fbx-light .fbx-item-current::-webkit-scrollbar-track,.fbx-light .fbx-item-next::-webkit-scrollbar-track{background:rgba(0,0,0,.1)}.fbx-light .fbx-item-current::-webkit-scrollbar-corner,.fbx-light .fbx-item-current::-webkit-scrollbar-thumb,.fbx-light .fbx-item-next::-webkit-scrollbar-corner,.fbx-light .fbx-item-next::-webkit-scrollbar-thumb{background:rgba(0,0,0,.3)}.fbx-caption{position:absolute;top:auto;right:auto;bottom:0;left:0;z-index:100004;width:100%;text-align:center;font-size:14px;transition:visibility .3s ease,opacity .3s ease,transform .3s ease;opacity:1;transform:translateY(0)}.fbx-caption.fbx-hide-caption{transition:none}.fbx-loading .fbx-caption.fbx-hide-caption,.fbx-open-caption,.fbx-show .fbx-caption.fbx-hide-caption{visibility:hidden}.fbx-show .fbx-caption.fbx-fade-caption{opacity:0;visibility:hidden}.fbx-caption.fbx-slide-caption{transform:translateY(100%)}.fbx-fullscreen-mode .fbx-caption,.fbx-sticky-caption .fbx-caption{position:fixed;z-index:100007}.fbx-close-caption,.fbx-open-caption{position:absolute;color:#FFF!important;font-size:24px;text-decoration:none;cursor:pointer;line-height:20px}.fbx-rounded .fbx-caption{border-radius:0 0 3px 3px}.fbx-modal.fbx-phone .fbx-caption,.fbx-sticky-caption.fbx-rounded .fbx-caption{border-radius:0}.fbx-close-caption{top:0;right:0;padding:3px 3px 10px 10px}.fbx-open-caption{z-index:100004;bottom:0;right:5px;padding:0 10px 10px;opacity:0;transition:opacity .3s ease;border-top-left-radius:6px;border-top-right-radius:6px}.fbx-caption-toggle-only.fbx-captions-hidden .fbx-open-caption,.fbx-pannable-item.fbx-captions-hidden .fbx-open-caption{opacity:1;visibility:visible}.fbx-caption-title{font-size:15px;padding:15px}.fbx-caption-desc{font-size:12px;line-height:20px;padding:15px}.fbx-caption-desc a{font-size:12px}.fbx-caption-title+.fbx-caption-desc{margin-top:-30px}.fbx-phone .fbx-caption{min-height:20px;font-size:12px;line-height:20px}.fbx-phone .fbx-caption-title{font-size:13px;padding:10px}.fbx-phone .fbx-caption-desc{font-size:11px;line-height:15px;padding:10px}.fbx-phone .fbx-caption-title+.fbx-caption-desc{margin-top:-20px}.fbx-modal.fbx-phone .fbx-caption{z-index:100004;bottom:0;position:fixed}.fbx-modal.fbx-phone.fbx-landscape .fbx-caption,.fbx-phone.fbx-landscape.fbx-sticky-caption .fbx-caption{z-index:100004}.fbx-pannable{cursor:-moz-grab;cursor:-webkit-grab;cursor:grab}.fbx-pannable.fbx-panning{cursor:-moz-grabbing;cursor:-webkit-grabbing;cursor:grabbing}.fbx-pannable>div>img.fbx-item{max-width:none;max-height:none}.fbx-pan-overview{cursor:pointer;max-width:150px;max-height:150px;overflow:hidden;background-position:top left;background-size:cover;position:absolute;z-index:100006;border:2px solid #666;box-shadow:0 0 12px rgba(0,0,0,.8)}.fbx-pan-overview.fbx-top-left{top:20px;left:20px}.fbx-pan-overview.fbx-top-right{top:20px;right:32px}.fbx-pan-overview.fbx-bottom-left{bottom:32px;left:20px}.fbx-pan-overview.fbx-bottom-right{bottom:32px;right:32px}.fbx-pan-viewport{position:absolute;top:0;left:0;box-shadow:0 0 300px 300px rgba(0,0,0,.7)}.fbx-ie10.fbx-modal.fbx-phone.fbx-landscape .fbx-close,.fbx-ie10.fbx-modal.fbx-phone.fbx-landscape .fbx-fullscreen-toggle,.fbx-ie10.fbx-modal.fbx-phone.fbx-landscape .fbx-next,.fbx-ie10.fbx-modal.fbx-phone.fbx-landscape .fbx-pause,.fbx-ie10.fbx-modal.fbx-phone.fbx-landscape .fbx-play,.fbx-ie10.fbx-modal.fbx-phone.fbx-landscape .fbx-prev,.fbx-ie10.fbx-modal.fbx-phone.fbx-landscape .fbx-social-toggle,.fbx-ie11.fbx-modal.fbx-phone.fbx-landscape .fbx-close,.fbx-ie11.fbx-modal.fbx-phone.fbx-landscape .fbx-fullscreen-toggle,.fbx-ie11.fbx-modal.fbx-phone.fbx-landscape .fbx-next,.fbx-ie11.fbx-modal.fbx-phone.fbx-landscape .fbx-pause,.fbx-ie11.fbx-modal.fbx-phone.fbx-landscape .fbx-play,.fbx-ie11.fbx-modal.fbx-phone.fbx-landscape .fbx-prev,.fbx-ie11.fbx-modal.fbx-phone.fbx-landscape .fbx-social-toggle,.fbx-ie9.fbx-modal.fbx-phone.fbx-landscape .fbx-close,.fbx-ie9.fbx-modal.fbx-phone.fbx-landscape .fbx-fullscreen-toggle,.fbx-ie9.fbx-modal.fbx-phone.fbx-landscape .fbx-next,.fbx-ie9.fbx-modal.fbx-phone.fbx-landscape .fbx-pause,.fbx-ie9.fbx-modal.fbx-phone.fbx-landscape .fbx-play,.fbx-ie9.fbx-modal.fbx-phone.fbx-landscape .fbx-prev,.fbx-ie9.fbx-modal.fbx-phone.fbx-landscape .fbx-social-toggle{right:1px!important}
free/foobox-free.php CHANGED
@@ -52,6 +52,8 @@ if (!class_exists('Foobox_Free')) {
52
 
53
  add_filter( 'foobox-free-has_settings_page', '__return_false' );
54
 
 
 
55
  } else {
56
 
57
  // Render JS to the front-end pages
@@ -69,6 +71,17 @@ if (!class_exists('Foobox_Free')) {
69
  new FooBox_Free_Exclude();
70
  }
71
 
 
 
 
 
 
 
 
 
 
 
 
72
  function custom_admin_settings_render($args = array()) {
73
  $type = '';
74
 
@@ -110,10 +123,6 @@ if (!class_exists('Foobox_Free')) {
110
  require_once FOOBOXFREE_PATH . "includes/upgrade.php";
111
  }
112
 
113
- function frontend_init() {
114
- add_action('wp_head', array($this, 'inline_dynamic_js'));
115
- }
116
-
117
  function admin_print_styles() {
118
  parent::admin_print_styles();
119
  $this->frontend_print_styles();
@@ -150,6 +159,13 @@ if (!class_exists('Foobox_Free')) {
150
  $d = array('jquery'),
151
  $v = false,
152
  $f = false);
 
 
 
 
 
 
 
153
  }
154
 
155
  function inline_dynamic_js() {
52
 
53
  add_filter( 'foobox-free-has_settings_page', '__return_false' );
54
 
55
+ add_action( 'enqueue_block_editor_assets', array( $this, 'enqueue_block_editor_assets' ) );
56
+
57
  } else {
58
 
59
  // Render JS to the front-end pages
71
  new FooBox_Free_Exclude();
72
  }
73
 
74
+ function enqueue_block_editor_assets() {
75
+ $this->admin_print_scripts();
76
+ $this->admin_print_styles();
77
+ $script = $this->generate_javascript();
78
+
79
+ wp_add_inline_script(
80
+ 'foobox-free-min',
81
+ $script
82
+ );
83
+ }
84
+
85
  function custom_admin_settings_render($args = array()) {
86
  $type = '';
87
 
123
  require_once FOOBOXFREE_PATH . "includes/upgrade.php";
124
  }
125
 
 
 
 
 
126
  function admin_print_styles() {
127
  parent::admin_print_styles();
128
  $this->frontend_print_styles();
159
  $d = array('jquery'),
160
  $v = false,
161
  $f = false);
162
+
163
+ $foobox_js = $this->generate_javascript();
164
+
165
+ wp_add_inline_script(
166
+ 'foobox-free-min',
167
+ $foobox_js
168
+ );
169
  }
170
 
171
  function inline_dynamic_js() {
free/includes/foopluginbase/.gitignore ADDED
@@ -0,0 +1,183 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #################
2
+ ## Eclipse
3
+ #################
4
+
5
+ *.pydevproject
6
+ .project
7
+ .metadata
8
+ bin/
9
+ tmp/
10
+ *.tmp
11
+ *.bak
12
+ *.swp
13
+ *~.nib
14
+ local.properties
15
+ .classpath
16
+ .settings/
17
+ .loadpath
18
+
19
+ # External tool builders
20
+ .externalToolBuilders/
21
+
22
+ # Locally stored "Eclipse launch configurations"
23
+ *.launch
24
+
25
+ # CDT-specific
26
+ .cproject
27
+
28
+ # PDT-specific
29
+ .buildpath
30
+
31
+
32
+ #################
33
+ ## Visual Studio
34
+ #################
35
+
36
+ ## Ignore Visual Studio temporary files, build results, and
37
+ ## files generated by popular Visual Studio add-ons.
38
+
39
+ # User-specific files
40
+ *.suo
41
+ *.user
42
+ *.sln.docstates
43
+
44
+ # Build results
45
+ [Dd]ebug/
46
+ [Rr]elease/
47
+ *_i.c
48
+ *_p.c
49
+ *.ilk
50
+ *.meta
51
+ *.obj
52
+ *.pch
53
+ *.pdb
54
+ *.pgc
55
+ *.pgd
56
+ *.rsp
57
+ *.sbr
58
+ *.tlb
59
+ *.tli
60
+ *.tlh
61
+ *.tmp
62
+ *.vspscc
63
+ .builds
64
+ *.dotCover
65
+
66
+ ## TODO: If you have NuGet Package Restore enabled, uncomment this
67
+ #packages/
68
+
69
+ # Visual C++ cache files
70
+ ipch/
71
+ *.aps
72
+ *.ncb
73
+ *.opensdf
74
+ *.sdf
75
+
76
+ # Visual Studio profiler
77
+ *.psess
78
+ *.vsp
79
+
80
+ # ReSharper is a .NET coding add-in
81
+ _ReSharper*
82
+
83
+ # Installshield output folder
84
+ [Ee]xpress
85
+
86
+ # DocProject is a documentation generator add-in
87
+ DocProject/buildhelp/
88
+ DocProject/Help/*.HxT
89
+ DocProject/Help/*.HxC
90
+ DocProject/Help/*.hhc
91
+ DocProject/Help/*.hhk
92
+ DocProject/Help/*.hhp
93
+ DocProject/Help/Html2
94
+ DocProject/Help/html
95
+
96
+ # Click-Once directory
97
+ publish
98
+
99
+ # Others
100
+ [Bb]in
101
+ [Oo]bj
102
+ sql
103
+ TestResults
104
+ *.Cache
105
+ ClientBin
106
+ stylecop.*
107
+ ~$*
108
+ *.dbmdl
109
+ Generated_Code #added for RIA/Silverlight projects
110
+
111
+ # Backup & report files from converting an old project file to a newer
112
+ # Visual Studio version. Backup files are not needed, because we have git ;-)
113
+ _UpgradeReport_Files/
114
+ Backup*/
115
+ UpgradeLog*.XML
116
+
117
+
118
+
119
+ ############
120
+ ## Windows
121
+ ############
122
+
123
+ # Windows image file caches
124
+ Thumbs.db
125
+
126
+ # Folder config file
127
+ Desktop.ini
128
+
129
+ #############
130
+ ## IIS
131
+ #############
132
+
133
+ web.config
134
+
135
+ #############
136
+ ## Python
137
+ #############
138
+
139
+ *.py[co]
140
+
141
+ # Packages
142
+ *.egg
143
+ *.egg-info
144
+ build
145
+ eggs
146
+ parts
147
+ bin
148
+ var
149
+ sdist
150
+ develop-eggs
151
+ .installed.cfg
152
+
153
+ # Installer logs
154
+ pip-log.txt
155
+
156
+ # Unit test / coverage reports
157
+ .coverage
158
+ .tox
159
+
160
+ #Translations
161
+ *.mo
162
+
163
+ #Mr Developer
164
+ .mr.developer.cfg
165
+
166
+ # Mac crap
167
+ .DS_Store
168
+
169
+ # Grunt related
170
+ /node_modules/
171
+
172
+ #############
173
+ ## phpStorm
174
+ #############
175
+
176
+ .idea/
177
+
178
+
179
+ #############
180
+ ## Custom
181
+ #############
182
+
183
+ build/
free/includes/view-getting-started.php CHANGED
@@ -150,7 +150,8 @@ $button_text = $show_trial_message ? __( 'Already convinced? Upgrade to PRO!', '
150
 
151
  .demo-gallery a img
152
  {
153
- padding: 2px;
 
154
  display: block;
155
  }
156
 
150
 
151
  .demo-gallery a img
152
  {
153
+ padding: 0px;
154
+ width: 70px;
155
  display: block;
156
  }
157
 
free/js/foobox.free.min.js CHANGED
@@ -5,6 +5,6 @@
5
  * @copyright Steven Usher & Brad Vincent 2014
6
  * @license Released under the MIT license.
7
  * You are free to use FooBox jQuery in personal projects as long as this copyright header is left intact.
8
- */
9
- !function(a,b,c,undefined){if(a&&b){b.FooBox={defaults:{affiliate:{enabled:!0,prefix:"Powered by ",url:"http://fooplugins.com/plugins/foobox/"},alwaysInit:!1,closeOnOverlayClick:!0,containerCssClass:"fbx-instance",countMessage:"item %index of %total",error:"Could not load the item",excludes:".fbx-link, .nofoobox",externalSelector:"a[data-foobox],input[data-foobox]",fitToScreen:!1,hideScrollbars:!0,loadDelay:0,loaderTimeout:600,modalClass:"",preload:!1,rel:null,resizeSpeed:300,selector:"a",showButtons:!0,showCount:!0,style:"fbx-rounded",theme:"fbx-light",transitionInSpeed:200,transitionOutSpeed:200,initCallback:null,loop:!0},version:"2.0.10",instances:[],ready:function(b){(Function("/*@cc_on return true@*/")()?"complete"===document.readyState:"loading"!==document.readyState)?b(a):setTimeout(function(){FooBox.ready(b)},1)}},FooBox.$=a,FooBox.format=function(a,b,c){var d,e,f=arguments[0];for(d=0;d<arguments.length-1;d++)e=new RegExp("\\{"+d+"\\}","gm"),f=f.replace(e,arguments[d+1]);return f},FooBox.browser={isIE:!1,isChrome:!1,isSafari:!1,isLtSafari10:!1,version:0,css:"",iOS:!1,Mac:!1,isMobile:function(a){return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))}(navigator.userAgent||navigator.vendor||b.opera),check:function(){var a=navigator.appVersion.toLowerCase(),c=navigator.userAgent.toLowerCase(),d=navigator.platform;FooBox.browser.iOS=/(iPad|iPhone|iPod)/g.test(d),1==FooBox.browser.iOS&&(FooBox.browser.css+=" fbx-ios"),FooBox.browser.Mac=/(Mac)/g.test(d),1==FooBox.browser.Mac&&(FooBox.browser.css+=" fbx-mac"),FooBox.browser.isChrome=a.indexOf("chrome")>-1||a.indexOf("crios")>-1,FooBox.browser.isChrome&&(FooBox.browser.css+=" fbx-chrome"),FooBox.browser.isSafari=a.indexOf("safari")>-1&&!FooBox.browser.isChrome,FooBox.browser.isSafari&&(FooBox.browser.css+=" fbx-safari",FooBox.browser.isLtSafari10=/constructor/i.test(b.HTMLElement)),FooBox.browser.isFirefox=c.indexOf("firefox")>-1,FooBox.browser.isFirefox&&(FooBox.browser.css+=" fbx-firefox");var e=c.indexOf("msie "),f=c.indexOf("trident/"),g=c.indexOf("edge/");if(FooBox.browser.isIE=e>-1||f>-1||g>-1,FooBox.browser.isIE){if(e>-1)FooBox.browser.version=parseInt(c.substring(e+5,c.indexOf(".",e)),10);else if(f>-1){var h=c.indexOf("rv:");FooBox.browser.version=parseInt(c.substring(h+3,c.indexOf(".",h)),10)}else g>-1&&(FooBox.browser.version=parseInt(c.substring(g+5,c.indexOf(".",g)),10));FooBox.browser.css=FooBox.format("fbx-ie fbx-ie{0}",FooBox.browser.version)}},supportsTransitions:function(){var a,b=document.body||document.documentElement,c=b.style,d="transition";if("string"==typeof c[d])return!0;a=["Moz","Webkit","Khtml","O","ms"],d=d.charAt(0).toUpperCase()+d.substr(1);for(var e=0;e<a.length;e++)if("string"==typeof c[a[e]+d])return!0;return!1},transitionEnd:function(){var a,b=document.createElement("fakeelement"),c={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(a in c)if(c.hasOwnProperty(a)&&b.style[a]!==undefined)return c[a];return null}},FooBox.browser.check(),FooBox.qualifiedURL=function(a){var b=document.createElement("a");return b.href=a,b.href},c||(c={}),c.log=c.log||function(){},c.warn=c.warn||function(){},c.error=c.error||function(){},c.info=c.info||function(){};var d={write:function(){c.log(FooBox.format.apply(d,arguments))},error:function(){1===arguments.length&&arguments[0]instanceof Error?c.error(arguments[0]):c.error(FooBox.format.apply(d,arguments))}};jQuery.Event.prototype.fb={instance:null,modal:null,options:null},FooBox.raise=function(b,c,d){d=d||{};var e=a.Event(c);return e.fb={},e.fb.instance=b,e.fb.modal=b.modal.element,e.fb.options=b.options,a.extend(!0,e.fb,d),b.element.one(c,function(a){a.stopPropagation()}).trigger(e),e},FooBox.isjQuery=function(a){return a instanceof jQuery?!0:a&&a.jquery},FooBox.options={isMultipart:function(a,b){return"string"==typeof a&&a.length>0&&-1!==a.indexOf(b)},hasProperties:function(a){if("object"!=typeof a)return!1;var b;for(b in a)if(a.hasOwnProperty(b))return!0;return!1},get:function(a,b){if(FooBox.options.isMultipart(b,".")){var c=b.substring(0,b.indexOf(".")),d=b.substring(b.indexOf(".")+1);return a[c]=a[c]||{},FooBox.options.get(a[c],d)}return a[b]},set:function(a,b,c){if(FooBox.options.isMultipart(b,".")){var d=b.substring(0,b.indexOf(".")),e=b.substring(b.indexOf(".")+1);a[d]=a[d]||{},FooBox.options.set(a[d],e,c)}else a[b]=c},merge:function(a,b,c){var d,e=Array.prototype.slice.call(arguments);for(a=e.shift(),b=e.shift(),FooBox.options._merge(a,b),d=0;d<e.length;d++)c=e[d],FooBox.options._merge(a,c);return a},_merge:function(b,c){var d;for(d in c)c.hasOwnProperty(d)&&(FooBox.options.hasProperties(c[d])&&!a.isArray(c[d])?(b[d]=b[d]||{},FooBox.options._merge(b[d],c[d])):a.isArray(c[d])?(b[d]=[],a.extend(!0,b[d],c[d])):b[d]=c[d])}},FooBox.objects={registered:{},ensure:function(a){return FooBox.objects.registered[a]=FooBox.objects.registered[a]||[]},register:function(b,c,d){var e=FooBox.objects.ensure(b);return e.push(c),"object"==typeof d&&a.extend(!0,FooBox.defaults,d),!0},load:function(a,b){var c,e,f=[],g=FooBox.objects.ensure(a);for(e=0;e<g.length;e++)try{c=g[e],f.push(new c(b))}catch(h){d.error(h)}b.objects=b.objects||{},b.objects[a]=f},call:function(b,c,e,f,g){var h,i=Array.prototype.slice.call(arguments);b=i.shift(),c=i.shift(),e=i.shift();for(var j=c.objects[b]||[],k=0;k<j.length;k++)try{if(h=j[k],!a.isFunction(h[e]))continue;h[e].apply(h,i)}catch(l){d.error(l)}},get:function(b,c,d){var e,f=c.objects[b];if(!f||!a.isFunction(d))return null;for(e=0;e<f.length;e++)if(d(f[e]))return f[e];return null}},FooBox.addons={_ns:"addons",validate:function(b){return a.isFunction(b)?!0:(d.error('Expected type "function", received type "{0}".',typeof b),!1)},register:function(a,b){return FooBox.addons.validate(a)?FooBox.objects.register(FooBox.addons._ns,a,b):(d.error("Failed to register the addon."),!1)},load:function(a){FooBox.objects.load(FooBox.addons._ns,a)},call:function(a,b,c,d){var e=Array.prototype.slice.call(arguments);e.unshift(FooBox.addons._ns),FooBox.objects.call.apply(this,e)}},FooBox.handlers={_ns:"handlers",validate:function(b){if(!a.isFunction(b))return d.error('Expected type "function", received type "{0}".',typeof b),!1;var c=new b;return a.isFunction(c.handles)?a.isFunction(c.defaults)?a.isFunction(c.parse)?a.isFunction(c.load)?a.isFunction(c.getSize)?a.isFunction(c.hasChanged)?a.isFunction(c.preload)?!0:(d.error('The required "preload" method is not implemented.'),!1):(d.error('The required "hasChanged" method is not implemented.'),!1):(d.error('The required "getSize" method is not implemented.'),!1):(d.error('The required "load" method is not implemented.'),!1):(d.error('The required "parse" method is not implemented.'),!1):(d.error('The required "defaults" method is not implemented.'),!1):(d.error('The required "handles" method is not implemented.'),!1)},register:function(a,b){return FooBox.handlers.validate(a)?FooBox.objects.register(FooBox.handlers._ns,a,b):(d.error("Failed to register the handler."),!1)},load:function(a){FooBox.objects.load(FooBox.handlers._ns,a)},call:function(a,b,c,d){var e=Array.prototype.slice.call(arguments);e.unshift(FooBox.handlers._ns),FooBox.objects.call.apply(this,e)},get:function(a,b){return FooBox.objects.get(FooBox.handlers._ns,a,function(a){return a.type==b})}},FooBox.Item=function(b,c,d){return this.type=b,this.element=FooBox.isjQuery(c)?c:a(c),this.handler=d,this.width=null,this.height=null,this.url=null,this.overflow=!1,this.preloaded=!1,this.proportion=!1,this.error=!1,this},FooBox.Size=function(a,b){return this.width="number"==typeof a?a:parseInt(a,0),this.height="number"==typeof b?b:parseInt(b,0),this.equalTo=function(a){return this.width==a.width&&this.height==a.height},this},FooBox.Size.check=function(a){return"number"==typeof a?a:isNaN(parseInt(a))?null:parseInt(a)},FooBox.Timer=function(){this.id=null,this.busy=!1;var a=this;return this.start=function(b,c,d){d=d||b,a.stop(),a.id=setTimeout(function(){b.call(d),a.id=null,a.busy=!1},c),a.busy=!0},this.stop=function(){null!==a.id&&a.busy!==!1&&(clearTimeout(a.id),a.id=null,a.busy=!1)},this},a.fn.foobox=function(b){return b=b||{},this.each(function(){var c=a(this),d=c.data("fbx_instance"),e=c.data("__FooGallery__");if(d instanceof FooBox.Instance)if(1==d.options.alwaysInit||e){var f=d.options;f.alwaysInit=!0,d.destroy(),d=new FooBox.Instance(d.id),d.init(this,a.extend(!0,f,b))}else d.reinit(b);else{if(d=a(this).data("fbx_p_instance"),d instanceof FooBox.Instance)return;d=new FooBox.Instance,d.init(this,b)}})},FooBox.Modal=function(b){this.FooBox=b,this.element=null,this.loaderTimeout=new FooBox.Timer,this._first=!1,this._busy=!1,this._closed=!1;var c=this;return this.init=function(a,b){c.setup.html(),c.setup.options(b),c.setup.bind()},this.reinit=function(a){c.setup.options(a)},this.destroy=function(){FooBox.isjQuery(c.element)&&c.element.remove()},this.setup={html:function(){if(!FooBox.isjQuery(c.element)){c.element=a('<div class="fbx-modal"></div>'),c.element.append('<div class="fbx-inner-spacer"></div>');var b=a('<div class="fbx-stage"></div>');b.append('<div class="fbx-item-current"></div>'),b.append('<div class="fbx-item-next"></div>');var d=a('<div class="fbx-inner fbx-inner-shadow"></div>');d.append(b),d.append('<a class="fbx-prev fbx-btn-transition fbx-btn-shadow"></a>'),d.append('<div class="fbx-credit"><a target="_blank" href=""><em></em><span> FooBox</span></a></div>'),d.append('<span class="fbx-count" />'),d.append('<a class="fbx-next fbx-btn-transition fbx-btn-shadow"></a>'),d.append('<a class="fbx-close fbx-btn-transition fbx-btn-shadow"></a>'),c.element.append('<div class="fbx-loader"><div></div></div>'),c.element.append(d),c.FooBox.raise("foobox.setupHtml"),a("body").append(c.element)}},options:function(a){var b;c.element.removeClass().addClass("fbx-modal").addClass(FooBox.format("fbx-{0}",c.FooBox.id)).addClass(c.FooBox.element.data("style")||a.style).addClass(c.FooBox.element.data("theme")||a.theme).addClass(c.FooBox.element.data("modal-class")).addClass(a.modalClass).data("fbx_instance",c.FooBox),c.element.addClass(FooBox.browser.css),b=a.affiliate.enabled?"":"none",c.element.find(".fbx-credit").css("display",b),a.affiliate.enabled&&(c.element.find(".fbx-credit > a").attr("href",a.affiliate.url),c.element.find(".fbx-credit > a > em").text(a.affiliate.prefix)),b=a.showCount&&c.FooBox.items.multiple()?"":"none",c.element.find(".fbx-count").css("display",b),a.showButtons&&c.FooBox.items.multiple()||c.element.addClass("fbx-no-buttons"),c.FooBox.raise("foobox.setupOptions")},bind:function(){1==c.FooBox.options.closeOnOverlayClick&&c.element.off("click.foobox").on("click.foobox",function(b){1==c.FooBox.options.closeOnOverlayClick&&a(b.target).is(".fbx-modal")&&c.close()}),c.element.find(".fbx-close").off("click.foobox").on("click.foobox",function(a){a.preventDefault(),a.stopPropagation(),c.close()}).end().find(".fbx-prev").off("click.foobox").on("click.foobox",function(b){b.preventDefault(),b.stopPropagation(),a(this).hasClass("fbx-disabled")||c.prev()}).end().find(".fbx-next").off("click.foobox").on("click.foobox",function(b){b.preventDefault(),b.stopPropagation(),a(this).hasClass("fbx-disabled")||c.next()})}},this.prioritize=function(){FooBox.instances.length>1&&c.element.nextAll(".fbx-modal:last").after(c.element)},this.preload=function(){if(1==c.FooBox.options.preload){var a=c.FooBox.items.prev();a&&a.handler.preload(a);var b=c.FooBox.items.next();b&&b.handler.preload(b)}},this.show=function(b){function e(a){if(c.loaderTimeout.stop(),c.element.removeClass("fbx-loading"),c._busy=!1,d.error(a),!c.FooBox.raise("foobox.onError",{error:a}).isDefaultPrevented()){var e=c.FooBox.items.error(f.index);null!=e&&c.show(b)}}b=b||!1,c._first=b,c._busy=!0,c._closed=!1,a("body").addClass("fbx-active"),c.FooBox.options.hideScrollbars&&a("html").addClass("fbx-no-scroll");var f=c.FooBox.items.current();1==f.error?c.element.addClass("fbx-error"):c.element.removeClass("fbx-error"),c.element.hasClass("fbx-show")||(c.prioritize(),c.element.addClass("fbx-loading").find(".fbx-inner").css({width:"100px",height:"100px","margin-top":"-50px","margin-left":"-50px"}));var g=c.element.find(".fbx-item-current"),h=c.element.find(".fbx-item-next");if(h.hide().css("opacity","0"),c.element.find(".fbx-count").text(c.FooBox.options.countMessage.replace("%index",""+(c.FooBox.items.indexes.current+1)).replace("%total",""+c.FooBox.items.array.length)),c.FooBox.raise("foobox.beforeLoad",{item:f}).isDefaultPrevented())return void(c._busy=!1);if(f.handler.hasChanged(f)){var i=f.index,j=f.element.get(0);f=f.handler.parse(f.element);var k=c.FooBox.raise("foobox.parseItem",{element:f.element,item:f});j.index=k.fb.item.index=i,c.FooBox.items.array[i]=k.fb.item}c.preload(),c.loaderTimeout.start(function(){c.element.addClass("fbx-loading")},c.FooBox.options.loaderTimeout),setTimeout(function(){c.checkForLoop(f),f.handler.load(f,h,function(a){return 1==c._closed?void(c._busy=!1):void c.transitionOut(g,function(){return 1==c._closed?void(c._busy=!1):void c.resize(a,h,function(){return 1==c._closed?void(c._busy=!1):(c.loaderTimeout.stop(),h.show(),void c.transitionIn(h,function(){return 1==c._closed?void(c._busy=!1):(h.add(g).toggleClass("fbx-item-next fbx-item-current"),g.empty(),void(c.element.hasClass("fbx-show")?(c.element.removeClass("fbx-loading"),c.FooBox.raise("foobox.afterLoad",{item:f}),c._busy=!1):c.FooBox.raise("foobox.beforeShow",{item:f}).isDefaultPrevented()||(c.element.removeClass("fbx-loading").addClass("fbx-show"),c.FooBox.raise("foobox.afterShow",{item:f}),c.FooBox.raise("foobox.afterLoad",{item:f}),c._busy=!1)))},e))},e)},e)},e)},c.FooBox.options.loadDelay)},this.checkForLoop=function(a){1!=c.FooBox.options.loop&&(c.element.find(".fbx-prev, .fbx-next").removeClass("fbx-disabled"),c.FooBox.items.is.first(a)&&c.element.find(".fbx-prev").addClass("fbx-disabled"),c.FooBox.items.is.last(a)&&c.element.find(".fbx-next").addClass("fbx-disabled"))},this.resize=function(b,d,e,f){try{if(0===b.width||0===b.height)return void(a.isFunction(f)&&f(FooBox.format("Invalid size supplied. Width = {0}, Height = {1}",b.width,b.height)));var g=c.FooBox.items.current(),h=new FooBox.Size(b.width,b.height),i=c.element.find(".fbx-inner"),j=c.element.find(".fbx-inner-spacer"),k=parseInt(j.css("padding-top"),0),l=parseInt(j.css("padding-bottom"),0),m=parseInt(j.css("padding-left"),0),n=parseInt(j.css("padding-right"),0),o=parseInt(i.css("border-top-width"),0),p=parseInt(i.css("border-bottom-width"),0),q=parseInt(i.css("border-left-width"),0),r=parseInt(i.css("border-right-width"),0),s=parseInt(i.css("padding-left"),0),t=k+l+2*s+o+p,u=m+n+2*s+q+r,v=new FooBox.Size(parseInt(i.css("width"),0),parseInt(i.css("height"),0)),w=new FooBox.Size(c.element.width()-u,c.element.height()-t),x=w.width/b.width;b.height*x>w.height&&(x=w.height/b.height),c.FooBox.options.fitToScreen===!0||1==g.proportion&&(b.height>w.height||b.width>w.width)?(b.height=Math.floor(b.height*x),b.width=Math.floor(b.width*x)):0==g.proportion&&(b.height>w.height&&(b.height=w.height),b.width>w.width&&(b.width=w.width)),b.height<100&&(b.height=100),b.width<100&&(b.width=100);var y=-(b.height/2+s+(l-k/2)/2)+(q+r)/2,z=-(b.width/2+s+(q+r)/2);if(v.equalTo(b))i.css({height:b.height,width:b.width,"margin-top":y,"margin-left":z}),c.overflow(g,h,b,d),c.FooBox.raise("foobox.afterResize",{item:g,size:b}),a.isFunction(e)&&e();else if(!c.FooBox.raise("foobox.beforeResize",{item:g,size:b,offset:{top:y,left:z},error:f,success:e}).isDefaultPrevented())if(y=-(b.height/2+s+(l-k/2)/2)+(q+r)/2,z=-(b.width/2+s+(q+r)/2),c.element.hasClass("fbx-show"))if(FooBox.browser.supportsTransitions()){var A=c.FooBox.options.resizeSpeed/1e3,B="all "+A+"s ease-in-out";i.css({WebkitTransition:B,MozTransition:B,MsTransition:B,OTransition:B,transition:B}),i.css({height:b.height,width:b.width,"margin-top":y,"margin-left":z}),setTimeout(function(){i.css({WebkitTransition:"",MozTransition:"",MsTransition:"",OTransition:"",transition:""}),c.overflow(g,h,b,d),c.FooBox.raise("foobox.afterResize",{item:g,size:b}),a.isFunction(e)&&e(b)},c.FooBox.options.resizeSpeed)}else i.animate({height:b.height,width:b.width,"margin-top":y,"margin-left":z},c.FooBox.options.resizeSpeed,function(){c.overflow(g,h,b,d),c.FooBox.raise("foobox.afterResize",{item:g,size:b}),a.isFunction(e)&&e(b)});else i.css({height:b.height,width:b.width,"margin-top":y,"margin-left":z}),c.overflow(g,h,b,d),c.FooBox.raise("foobox.afterResize",{item:g,size:b}),a.isFunction(e)&&e()}catch(C){a.isFunction(f)&&f(C)}},this.overflow=function(a,b,d,e){var f=e.find(".fbx-item");1==a.overflow&&(d.width<.8*b.width||d.height<.8*b.height)||1==a.overflow&&0==a.proportion&&(d.width<b.width||d.height<b.height)||1==a.overflow&&"html"==a.type?("html"==a.type?(f.css({width:"100%",height:"auto",overflow:""}),e.css("overflow","auto")):(f.css({width:b.width,height:b.height,overflow:""}),e.css({"overflow-x":b.width<=d.width?"hidden":"","overflow-y":b.height<=d.height?"hidden":""})),c.FooBox.raise("foobox.showOverflow",{item:a,container:e})):(f.css({width:"",height:"",overflow:"hidden"}),e.css({"overflow-x":"","overflow-y":"",overflow:"hidden"}),c.FooBox.raise("foobox.hideOverflow",{item:a,container:e}))},this.transitionOut=function(b,d,e){try{if(!c.element.hasClass("fbx-show"))return void(a.isFunction(d)&&d());b.animate({opacity:0},b.is(":visible")?c.FooBox.options.transitionOutSpeed:0,function(){a.isFunction(d)&&d()})}catch(f){a.isFunction(e)&&e(f)}},this.transitionIn=function(b,d,e){try{if(!c.element.hasClass("fbx-show"))return b.css({opacity:1}),void(a.isFunction(d)&&d());b.animate({opacity:1},c.FooBox.options.transitionInSpeed,function(){a.isFunction(d)&&d()})}catch(f){a.isFunction(e)&&e(f)}},this.close=function(){c.FooBox.raise("foobox.beforeClose").isDefaultPrevented()||(c._closed=!0,c._busy=!1,c.element.removeClass("fbx-loading fbx-show"),a("body").removeClass("fbx-active"),c.FooBox.raise("foobox.close"),c.element.find(".fbx-item-current, .fbx-item-next").empty(),a("html").removeClass("fbx-no-scroll"),c.FooBox.raise("foobox.afterClose"))},this.prev=function(a){if(1!=c._busy){if(c.FooBox.items.indexes.set(c.FooBox.items.indexes.prev),"string"==typeof a)for(var b=c.FooBox.items.current();b.type!=a;)c.FooBox.items.indexes.set(c.FooBox.items.indexes.prev),b=c.FooBox.items.current();c.show(!1),c.FooBox.raise("foobox.previous")}},this.next=function(a){if(1!=c._busy){if(c.FooBox.items.indexes.set(c.FooBox.items.indexes.next),"string"==typeof a)for(var b=c.FooBox.items.current();b.type!=a;)c.FooBox.items.indexes.set(c.FooBox.items.indexes.next),b=c.FooBox.items.current();c.show(!1),c.FooBox.raise("foobox.next")}},this},FooBox.Instance=function(b){this.id=null,"number"==typeof b?(this.id=b,FooBox.instances[b-1]=this):this.id=FooBox.instances.push(this),this.element=null,this.options=a.extend(!0,{},FooBox.defaults),this.modal=new FooBox.Modal(this),this.objects={},FooBox.addons.load(this),FooBox.handlers.load(this);var c=this;return this.raise=function(a,b){return FooBox.raise(c,a,b)},this.init=function(b,d){c.element=FooBox.isjQuery(b)?b:a(b),c.options=FooBox.options.merge(c.options,d||{}),FooBox.addons.call(c,"preinit",c.element,c.options),c.items.init(),c.items.array.length>0?(c.element.data("fbx_instance",c),c.options.containerCssClass&&c.element.addClass(c.options.containerCssClass),c.setup.bind(),c.modal.init(b,c.options),FooBox.handlers.call(c,"init",c.element,c.options),c.raise("foobox.initialized"),a.isFunction(c.options.initCallback)&&c.options.initCallback.call(c)):c.destroy()},this.reinit=function(a){c.options=FooBox.options.merge(c.options,a||{}),c.items.init(!0),c.items.array.length>0?(c.setup.bind(),c.modal.reinit(c.options),FooBox.handlers.call(c,"reinit",c.options),c.raise("foobox.reinitialized")):c.destroy()},this.destroy=function(){FooBox.addons.call(c,"destroy"),FooBox.handlers.call(c,"destroy"),c.items.destroy(),c.modal.destroy(),c.element.removeClass("fbx-instance fbx-item").data({fbx_instance:null,fbx_p_instance:null}),c.id==FooBox.instances.length?FooBox.instances.splice(c.id-1,1):FooBox.instances[c.id-1]=null,c.raise("foobox.destroy")},this.setup={bind:function(){a(c.options.externalSelector).off("click.fooboxExternal").on("click.fooboxExternal",function(b){b.preventDefault();var c=a(this).data("foobox"),d=a(c),e=d.data("fbx_instance")||d.data("fbx_p_instance");return d.length>0&&e instanceof FooBox.Instance&&e.modal instanceof FooBox.Modal&&e.modal.show(!0),!1})}},this.items={array:[],indexes:{prev:-1,current:0,next:1,direction:"*",set:function(a){var b=c.items.indexes.current;a=a||0,a=a>c.items.array.length-1?0:0>a?c.items.array.length-1:a;var d=a-1,e=a+1;c.items.indexes.current=a,c.items.indexes.prev=0>d?c.items.array.length-1:d,c.items.indexes.next=e>c.items.array.length-1?0:e,c.items.indexes.direction=c.items.indexes._direction(b,a,c.items.array.length-1)},_direction:function(a,b,c){return 0==b&&a==c?">":b==c&&0==a?"<":b>a?">":a>b?"<":"*"}},new_array:function(b){b=b||!1;var d,e,f,g=0;if(1==b){if(c.items.array.length>0){for(var h=0;h<c.items.array.length;h++)d=c.items.array[h],FooBox.isjQuery(d.element)?0==d.element.parents(":first").length&&(c.items.array.splice(h,1),h-=1):d.option||(c.items.array.splice(h,1),h-=1);for(var i=0;i<c.items.array.length;i++)d=c.items.array[i],FooBox.isjQuery(d.element)?(f=d.element.get(0),f.index=d.index=i):d.index=i}}else c.items.array=[];if(a.isArray(c.options.items))for(var j=0;j<c.options.items.length;j++)if(d=c.options.items[j],-1==c.items.indexOf(d))for(var k=0;k<c.objects.handlers.length;k++)if(c.objects.handlers[k].type==d.type){d.index=g,d.option=!0,d.handler=c.objects.handlers[k],d.handler.defaults(d),e=c.raise("foobox.parseItem",{element:null,item:d}),c.items.array.push(e.fb.item),g++;break}},init:function(b){b=b||!1,c.items.new_array(b);var d,e;if(c.element.is(c.options.selector)&&!c.element.is(c.options.excludes)&&c.items.add(c.element))c.element.off("click.item").on("click.item",c.items.clicked);else if(c.element.is(".foogallery")&&(d=c.element.data("__FooGallery__"))&&d.items&&(e=d.items.all()).length>0){d.filter&&a.isArray(d.filter.items)&&(e=d.filter.items.slice(0));var f=a.map(e,function(a){return a.$anchor?a.$anchor.get(0):null});a(f).not(c.options.excludes).off("click.item").filter(function(){return c.items.add(this)}).on("click.item",c.items.clicked),c.element.on("click.item",".fbx-link",c.items.clicked)}else c.element.find(c.options.selector).not(c.options.excludes).off("click.item").filter(function(){return c.items.add(this)}).on("click.item",c.items.clicked),c.element.on("click.item",".fbx-link",c.items.clicked);c.items.rel()},destroy:function(){c.element.off("click.item",".fbx-link",c.items.clicked);var b,d;for(d=0;d<c.items.array.length;d++)b=c.items.array[d],a.isFunction(b.destroy)&&b.destroy(),FooBox.isjQuery(b.element)&&b.element.off("click.item").removeClass("fbx-link").data("fbx_p_instance",null);c.items.array=[]},rel:function(){var b=c.options.rel||c.element.attr("rel")||(c.items.first(function(a){return FooBox.isjQuery(a.element)?"string"==typeof a.element.attr("rel"):!1})||{element:a()}).element.attr("rel");"string"==typeof b&&a('[rel="'+b+'"]').not(c.options.excludes).not(c.element).off("click.item").filter(function(){return c.items.add(this)}).on("click.item",c.items.clicked)},indexOf:function(a,b){if(!a)return-1;b=b||"url";var d;for(d=0;d<c.items.array.length;d++)if(c.items.array[d][b]==a[b])return d;return-1},is:{first:function(a){return c.items.array&&0!=c.items.array.length?c.items.array[0].index==a.index:!1},last:function(a){return c.items.array&&0!=c.items.array.length?c.items.array[c.items.array.length-1].index==a.index:!1}},add:function(b){b=FooBox.isjQuery(b)?b:a(b);var d=c.items.parse(b,c.items.array.length);if(null===d)return!1;var e=b.get(0),f=c.items.indexOf(d);-1!=f?(d=c.items.array[f],e.index=d.index):e.index=d.index=c.items.array.push(d)-1;var g=b.addClass("fbx-link").data("fbx_p_instance");return g instanceof FooBox.Instance||b.data("fbx_p_instance",c),!0},get:function(b){b=FooBox.isjQuery(b)?b:a(b);var d=null,e=b.get(0).index;return e&&e>0&&e<=c.items.array.length-1&&(d=c.items.array[e]),d},parse:function(b,d){b=FooBox.isjQuery(b)?b:a(b);for(var e,f,g=0;g<c.objects.handlers.length;g++)if(c.objects.handlers[g].handles(b,c.element)){e=c.objects.handlers[g].parse(b),isNaN(d)||(e.index=d),f=c.raise("foobox.parseItem",{element:b,item:e});break}return"undefined"!=typeof f&&f.fb.item?f.fb.item:null},error:function(b){function d(b){var c=this;return c.FooBox=b,c.type="error",c.handles=function(){return!1},c.hasChanged=function(){return!1},c.defaults=function(){},c.parse=function(){},c.load=function(b,d,e,f){try{d.empty().append(b.content),a.isFunction(e)&&e(c.getSize(b))}catch(g){a.isFunction(f)&&f(g)}},c.getSize=function(a){return new FooBox.Size(a.width,a.height)},c}if(c.items.array.length>b&&1==c.items.array[b].error)return c.items.array[b];var e,f,g=FooBox.handlers.get(c,"html"),h=!1;if(null==g&&(g=new d(c)),null!==c.options.error.match(/^#/i)&&a(c.options.error).length>0)e=a(c.options.error),h=!0;else{var i=FooBox.format('<div class="fbx-error-msg" data-width="240" data-height="240"><span></span><p>{0}</p></div>',c.options.error);e=a(i)}return f=new FooBox.Item(g.type,e.get(0),g),f.selector=1==h?c.options.error:null,f.index=b,f.error=!0,f.title=e.data("title")||null,f.description=e.data("description")||null,f.width=e.data("width")||240||null,f.height=e.data("height")||240||null,f.content=1==h?null:e,f.fullscreen=!0,f.handler=g,c.items.array[b]=f,f},first:function(a){for(var b=null,d=0;d<c.items.array.length;d++)if(a(c.items.array[d])){b=c.items.array[d];break}return b},current:function(){return c.items.array[c.items.indexes.current]},prev:function(){return c.items.array[c.items.indexes.prev]},next:function(){return c.items.array[c.items.indexes.next]},multiple:function(){return c.items.array.length>1},clicked:function(a){return a.preventDefault(),c.items.indexes.set(this.index),c.modal.show(!0),!1}},this},FooBox.open=function(b){if(1==FooBox.isDeepLink)return null;var c,d=null;if("object"==typeof b){var e=document.createElement("a");a(e).foobox(b),d=a(e).data("fbx_instance")}else"number"==typeof b?c=b:(c=parseInt(b||0),c=isNaN(c)?0:c),c=c>FooBox.instances.length-1?FooBox.instances.length-1:0>c?0:c,d=FooBox.instances[c];return null!=d&&d.modal instanceof FooBox.Modal?(d.modal.show(!0),d):null},FooBox.close=function(){var a,b=[],c=null;for(a=0;a<FooBox.instances.length;a++)c=FooBox.instances[a],null!=c&&c.modal instanceof FooBox.Modal&&FooBox.isjQuery(c.modal.element)&&c.modal.element.hasClass("fbx-show")&&b.push(c);for(a=0;a<b.length;a++)c=b[a],c.modal.close()},FooBox.resize=function(c,d){if(c||d){var e,f,g,h;for(e=0;e<FooBox.instances.length;e++)f=FooBox.instances[e],null!=f&&f.modal instanceof FooBox.Modal&&FooBox.isjQuery(f.modal.element)&&f.modal.element.hasClass("fbx-show")&&(g=f.items.current(),h=new FooBox.Size(c||g.width||0,d||g.height||0),g.width=h.width,g.height=h.height,f.modal.resize(h,f.modal.element.find(".fbx-item-current")))}else a(b).trigger("resize.foobox")},FooBox.lateBind=function(c,d){var e=a.extend(!0,{},FooBox.defaults,d||b.FOOBOX&&FOOBOX.o||{}),f=a(c);f.on("click.foobox",e.selector,function(a){a.preventDefault();var b=f.data("fbx_instance");b||(b=f.foobox(e).data("fbx_instance")),b instanceof FooBox.Instance&&"number"==typeof this.index&&(b.items.indexes.set(this.index),b.modal.show(!0))})}}}(jQuery,window,window.console),function(a,b){var c={images:{noRightClick:!1,attr:"href",overflow:!1,fullscreen:!0,showCaptions:!0,regex:/https?:\/\/.*?\/.*?\.(jpg|jpeg|png|gif|bmp)/i,maxWidth:-1,maxHeight:-1,findUrl:function(a,c){if(!c)return"";if(c.data("image"))return c.data("image");var d=c.attr(a.options.images.attr);return"string"==typeof d?b.qualifiedURL(c.attr(a.options.images.attr)):""}}};b.Item.prototype.image=null,b.Item.prototype.maxWidth=null,b.Item.prototype.maxHeight=null,b.ImageHandler=function(c){this.FooBox=c,this.type="image";var d=this;this.handles=function(a){var b=d.FooBox.options.images.findUrl(d.FooBox,a),c="string"==typeof b&&null!=b.match(d.FooBox.options.images.regex),e=d.FooBox.raise("foobox.handlesImage",{element:a,handle:c});return e.fb.handle},this.defaults=function(a){a.fullscreen=a.fullscreen||d.FooBox.options.images.fullscreen,a.captions=a.captions||d.FooBox.options.images.showCaptions,a.social=a.social||!0,a.overflow=a.overflow||d.FooBox.options.images.overflow,a.proportion=a.proportion||!0,a.maxWidth=a.maxWidth||d.FooBox.options.images.maxWidth,a.maxHeight=a.maxHeight||d.FooBox.options.images.maxHeight},this.parse=function(a){var c=new b.Item(d.type,a,this);return d.defaults(c),c.url=d.FooBox.options.images.findUrl(d.FooBox,a)||null,c.width=b.Size.check(a.data("width")||c.width||null),c.height=b.Size.check(a.data("height")||c.height||null),c.fullscreen="boolean"==typeof a.data("fullscreen")?a.data("fullscreen"):c.fullscreen,c.overflow="boolean"==typeof a.data("overflow")?a.data("overflow"):c.overflow,c.proportion="boolean"==typeof a.data("proportion")?a.data("proportion"):c.proportion,c.maxWidth="number"==typeof a.data("maxWidth")?a.data("maxWidth"):c.maxWidth,c.maxHeight="number"==typeof a.data("maxHeight")?a.data("maxHeight"):c.maxHeight,c.image=null,c.image_url=c.url,c},this.load=function(b,c,e,f){try{var g=function(){var f=a(b.image).addClass("fbx-item fbx-item-image");d.FooBox.options.images.noRightClick&&f.on("contextmenu",function(a){return a.preventDefault(),!1}),c.empty().append(f),a.isFunction(e)&&e(d.getSize(b))};b.image&&null!==b.image?g():(b.image=new Image,b.image.onload=function(){b.image.onload=b.image.onerror=null,b.height=b.image.height,b.width=b.image.width,g()},b.image.onerror=function(){b.image.onload=b.image.onerror=null,b.image=null,a.isFunction(f)&&f("An error occurred attempting to load the image.")},b.image.src=b.url)}catch(h){a.isFunction(f)&&f(h)}},this.preload=function(a){if(1!=a.preloaded){var b=new Image;b.src=a.url,a.preloaded=!0}},this.getSize=function(a){if(null!=a.width&&null!=a.height){if(a.maxWidth>0&&a.maxHeight>0&&(a.width>a.maxWidth||a.height>a.maxHeight)){
10
- var c=a.width>a.height?a.maxWidth/a.width:a.maxHeight/a.height;a.width*=c,a.height*=c}return new b.Size(a.width,a.height)}return new b.Size(0,0)},this.hasChanged=function(a){if(b.isjQuery(a.element)){var c=d.FooBox.options.images.findUrl(d.FooBox,a.element);return a.url!=c}return!1}},b.handlers.register(b.ImageHandler,c)}(jQuery,window.FooBox),function(a,b){var c={keyboard:{enabled:!0,preventDefault:!1,stopPropagation:!1}};b.Keyboard=function(a){this.FooBox=a;var c=this;this.preinit=function(a){c.handlers.unbind(!0),a.on({"foobox.initialized foobox.reinitialized":c.handlers.initialized,"foobox.setupHtml":c.handlers.setupHtml})},this.destroy=function(){c.handlers.unbind(!0)},this.handlers={unbind:function(a){a=a||!1,a&&c.FooBox.element.off({"foobox.initialized foobox.reinitialized":c.handlers.initialized,"foobox.setupHtml":c.handlers.setupHtml}),c.FooBox.element.off("foobox.afterLoad",c.handlers.afterLoad),b.isjQuery(c.FooBox.modal.element)&&c.FooBox.modal.element.off("keydown.foobox",c.handlers.onKeydown)},initialized:function(){c.handlers.unbind(),1==c.FooBox.options.keyboard.enabled&&(c.FooBox.element.on("foobox.afterLoad",c.handlers.afterLoad),b.isjQuery(c.FooBox.modal.element)&&c.FooBox.modal.element.on("keydown.foobox",c.handlers.onKeydown))},setupHtml:function(a){a.fb.modal.attr("tabindex",0)},afterLoad:function(a){a.fb.modal.focus()},onKeydown:function(a){var b=c.FooBox.modal,d=c.FooBox.options.keyboard;b.element.hasClass("fbx-show")&&(b.element.hasClass("fbx-fullscreen-mode")||27!==a.which?c.FooBox.items.multiple()&&37===a.which?b.prev():c.FooBox.items.multiple()&&39===a.which&&b.next():b.close(),1==d.preventDefault&&a.preventDefault(),1==d.stopPropagation&&a.stopPropagation(),c.FooBox.raise("foobox.keydown",{keyCode:a.which}))}}},b.addons.register(b.Keyboard,c)}(jQuery,window.FooBox),function(a,b){var c={hideNavOnMobile:!1,resizeTimeout:300,breakpoints:{phone:640,tablet:1024},iosInterval:200};b.BPInfo=function(c){var d="undefined"!=typeof window.devicePixelRatio&&b.browser.isMobile?window.devicePixelRatio:1;this.width=(window.innerWidth||document.documentElement.clientWidth||(document.body?document.body.offsetWidth:0))/d,this.height=(window.innerHeight||document.documentElement.clientHeight||(document.body?document.body.offsetHeight:0))/d,this.orientation=this.width>this.height?"fbx-landscape":"fbx-portrait";var e,f=null;if(a.isArray(c))for(var g=0;g<c.length;g++)if(e=c[g],e&&e.width&&this.width<=e.width){f=e;break}this.breakpoint=null==f?"fbx-desktop":f.name},b.Responsive=function(c){this.FooBox=c,this.breakpoint={values:[],names:""},this.timers={resize:new b.Timer,ios:new b.Timer};var d=this,e=null;this.preinit=function(a){d.handlers.unbind(!0),a.on("foobox.initialized foobox.reinitialized",d.handlers.initialized)},this.destroy=function(){d.handlers.unbind(!0)},this.handlers={unbind:function(b){b=b||!1,b&&d.FooBox.element.off("foobox.initialized foobox.reinitialized",d.handlers.initialized),a(window).off("resize.foobox",d.handlers.resize),d.FooBox.element.off({"foobox.beforeShow":d.handlers.iosBeforeShow,"foobox.close":d.handlers.iosClose})},initialized:function(){d.handlers.unbind(),d.setup.breakpoints(),d.style(),a(window).on("resize.foobox",d.handlers.resize),b.browser.iOS&&(b.browser.isSafari||b.browser.isChrome)&&d.FooBox.element.on({"foobox.beforeShow":d.handlers.iosBeforeShow,"foobox.close":d.handlers.iosClose})},resize:function(){d.timers.resize.start(function(){d.style();var a=d.FooBox.items.current();if(d.FooBox.modal.element.has("fbx-show")&&null!=a){var b=a.handler.getSize(a);d.FooBox.modal.resize(b,d.FooBox.modal.element.find(".fbx-item-current"))}},d.FooBox.options.resizeTimeout)},iosBeforeShow:function(){d.timers.ios.start(d.handlers.ios,d.FooBox.options.iosInterval)},iosClose:function(){d.timers.ios.stop()},ios:function(){if(!d.FooBox.modal.element.hasClass("fbx-show"))return void d.timers.ios.start(d.handlers.ios,d.FooBox.options.iosInterval);var a=window.orientation||0,c=window.innerHeight,f=90==a||-90==a,g=0,h=0,i=f?screen.availWidth:screen.availHeight;b.browser.isChrome?(g=i-(f?76:56),h=i-(f?0:20)):b.browser.isSafari&&(g=i-88,h=i-(f?0:19)),(null==e||0==e)&&g>=c?(e=!0,d.iosRedraw()):(null==e||1==e)&&c>=h&&(e=!1,d.iosRedraw()),d.timers.ios.start(d.handlers.ios,d.FooBox.options.iosInterval)}},this.setup={breakpoints:function(){d.breakpoint.values=[],d.breakpoint.names="";for(var a in d.FooBox.options.breakpoints)d.FooBox.options.breakpoints.hasOwnProperty(a)&&(d.breakpoint.values.push({name:d.fixName(a),width:d.FooBox.options.breakpoints[a]}),d.breakpoint.names+=d.fixName(a)+" ");d.breakpoint.values.sort(function(a,b){return a.width-b.width})}},this.iosRedraw=function(){window.scrollTo(0,document.body.scrollTop),a(window).trigger("resize")},this.fixName=function(a){return/^fbx-[a-zA-Z0-9]/.test(a)?a:"fbx-"+a},this.style=function(){var a=new b.BPInfo(d.breakpoint.values),c=d.FooBox.modal.element;c.removeClass(d.breakpoint.names).removeClass("fbx-desktop fbx-landscape fbx-portrait").addClass(a.breakpoint).addClass(a.orientation),d.FooBox.options.hideNavOnMobile===!0?c.addClass("fbx-no-nav"):c.removeClass("fbx-no-nav")}},b.Responsive.metaCheck=function(){var b=a("meta[name=viewport]"),c=b.attr("content");if(b.length>0&&"string"==typeof c){for(var d=c.split(","),e=!1,f=!1,g=0;g<d.length;g++){var h=a.trim(d[g]);"width"==h.substring(0,5)&&-1!==h.indexOf("device-width")?e=!0:"initial-scale"==h.substring(0,13)&&(f=!0)}e&&!f&&(d.push("initial-scale=1"),c=d.join(","),b.attr("content",c))}},b.addons.register(b.Responsive,c),b.Responsive.metaCheck()}(jQuery,window.FooBox),function(a,b){var c={captions:{animation:"slide",enabled:!0,descSource:"find",hoverDelay:300,maxHeight:.4,onlyShowOnHover:!1,onlyShowOnClick:!1,overrideDesc:!1,overrideTitle:!1,prettify:!1,titleSource:"image_find"}};b.Item.prototype.captions=!1,b.Item.prototype.title=null,b.Item.prototype.description=null,b.Item.prototype.caption=null,b.Captions=function(c){this.FooBox=c,this.timers={hover:new b.Timer};var d=this;this.preinit=function(a){d.handlers.unbind(!0),a.on({"foobox.initialized foobox.reinitialized":d.handlers.initialized,"foobox.setupHtml":d.handlers.setupHtml,"foobox.setupOptions":d.handlers.setupOptions,"foobox.parseItem":d.handlers.parseItem,"foobox.onError":d.handlers.onError})},this.destroy=function(){d.handlers.unbind(!0)},this.handlers={unbind:function(a){a=a||!1,a&&d.FooBox.element.off({"foobox.initialized foobox.reinitialized":d.handlers.initialized,"foobox.setupHtml":d.handlers.setupHtml,"foobox.setupOptions":d.handlers.setupOptions,"foobox.parseItem":d.handlers.parseItem,"foobox.onError":d.handlers.onError,"foobox.close":d.handlers.close}),d.FooBox.element.off({"foobox.beforeLoad":d.handlers.beforeLoad,"foobox.afterLoad":d.handlers.afterLoad}),d.FooBox.modal instanceof b.Modal&&b.isjQuery(d.FooBox.modal.element)&&d.FooBox.modal.element.off("mouseenter.captions mouseleave.captions").find(".fbx-item-current, .fbx-item-next").off("click.captions")},initialized:function(a){d.handlers.unbind(),a.fb.options.captions.enabled===!0&&(a.fb.instance.element.on({"foobox.beforeLoad":d.handlers.beforeLoad,"foobox.afterLoad":d.handlers.afterLoad,"foobox.close":d.handlers.close}),-1===a.fb.options.modalClass.indexOf("fbx-caption-toggle-only")&&a.fb.modal.find(".fbx-item-current, .fbx-item-next").on("click.captions",d.handlers.toggleCaptions),a.fb.options.captions.onlyShowOnHover===!0&&a.fb.modal.on("mouseenter.captions",".fbx-inner:not(:has(.fbx-item-error))",d.handlers.mouseenter).on("mouseleave.captions",".fbx-inner:not(:has(.fbx-item-error))",d.handlers.mouseleave))},toggleCaptions:function(b){if(a(b.target).is("img")||a(b.target).is(".fbx-close-caption")||a(b.target).is(".fbx-open-caption")){var c=d.FooBox.items.current(),e=d.FooBox.modal.element;c.captions&&!e.hasClass("fbx-error")&&(b.preventDefault(),e.find(".fbx-caption").is(".fbx-fade-caption, .fbx-slide-caption, .fbx-hide-caption")?(e.removeClass("fbx-captions-hidden"),d.show()):(e.addClass("fbx-captions-hidden"),d.hide()))}},mouseenter:function(){d.timers.hover.start(function(){d.show()},d.FooBox.options.captions.hoverDelay)},mouseleave:function(){d.timers.hover.start(function(){d.hide()},d.FooBox.options.captions.hoverDelay)},setupHtml:function(b){var c=a("<div/>",{"class":"fbx-caption"}),e=a("<a/>",{"class":"fbx-open-caption",html:"&hellip;"}).on("click.captions",d.handlers.toggleCaptions);"string"==typeof b.fb.options.modalClass&&-1!=b.fb.options.modalClass.indexOf("fbx-sticky-caption")?b.fb.modal.append(c,e):(b.fb.modal.find(".fbx-stage").append(c),b.fb.modal.find(".fbx-inner").append(e))},setupOptions:function(a){a.fb.modal.find(".fbx-caption").addClass(d.animation())},close:function(a){1!=a.fb.options.captions.onlyShowOnHover&&a.fb.modal.find(".fbx-caption").addClass(d.animation())},beforeLoad:function(a){1!=a.fb.options.captions.onlyShowOnHover&&a.fb.modal.find(".fbx-caption").addClass(d.animation())},afterLoad:function(a){var b=a.fb.item;return!b||b.error||b.captionLoaded||(a.fb.instance.raise("foobox.alterCaption",{element:a.fb.element,item:b}),b.captionLoaded=!0),1==a.fb.options.captions.onlyShowOnHover?void d.update():void(0==a.fb.options.captions.onlyShowOnClick&&d.show())},onError:function(a){a.fb.modal.find(".fbx-caption").addClass(d.animation())},parseItem:function(c){var e=c.fb.options.captions;if(c.fb.item.captions&&0!=e.enabled){var f,g,h="";if(null!=c.fb.element){var i=a(c.fb.element).data("titleSource")||a(c.fb.instance.element).data("titleSource")||e.titleSource,j=a(c.fb.element).data("descSource")||a(c.fb.instance.element).data("descSource")||e.descSource;"none"!=i&&(f=c.fb.element.data("captionTitle")||c.fb.element.data("title")||d.text(c.fb.element,i)),"none"!=j&&(g=c.fb.element.data("captionDesc")||c.fb.element.data("description")||d.text(c.fb.element,j))}else f=c.fb.item.title,g=c.fb.item.description;f=null==f||"undefined"==typeof f?"":f+"",g=null==g||"undefined"==typeof g?"":g+"",f&&f==g&&(g=null),h="string"==typeof f&&f.length>0?b.format('<div class="fbx-caption-title">{0}</div>',f):h,h="string"==typeof g&&g.length>0?h+b.format('<div class="fbx-caption-desc">{0}</div>',g):h,c.fb.item.title=f,c.fb.item.description=g,c.fb.item.caption=h,c.fb.instance.raise("foobox.createCaption",{element:c.fb.element,item:c.fb.item})}}},this.text=function(b,c){var e;switch(c){case"find":e=a.trim(b.data("enviraCaption")||b.data("title")||b.attr("title")||b.find("img:first").data("title")||b.find("img:first").data("alt")||b.find("img:first").attr("title")||b.find("img:first").attr("alt"));break;case"image_find":e=a.trim(b.find("img:first").data("title")||b.find("img:first").data("alt")||b.find("img:first").attr("title")||b.find("img:first").attr("alt"));break;case"image":e=a.trim(b.find("img:first").data("title")||b.find("img:first").attr("title"));break;case"image_alt":e=a.trim(b.find("img:first").data("alt")||b.find("img:first").attr("alt"));break;case"anchor":e=a.trim(b.data("enviraCaption")||b.data("title")||b.attr("title"));break;default:e=null}return d.FooBox.options.captions.prettify&&(e=d.prettifier(e)),e},this.animation=function(){switch(d.FooBox.options.captions.animation){case"fade":return"fbx-fade-caption";case"slide":return"fbx-slide-caption";default:return"fbx-hide-caption"}},this.hide=function(){var a=d.FooBox.items.current(),b=d.FooBox.modal.element.find(".fbx-caption");return d.FooBox.options.captions.enabled&&a.captions&&"string"==typeof a.caption&&0!=a.caption.length?(b.addClass(d.animation()),void d.FooBox.raise("foobox.captionsHide",{item:a})):void b.addClass("fbx-hide-caption")},this.show=function(){var a=d.FooBox,c=a.items.current(),e=a.modal.element.find(".fbx-caption");return!a.options.captions.enabled||!c.captions||"string"!=typeof c.caption||0==c.caption.length||a.modal.element.hasClass("fbx-captions-hidden")||b.isjQuery(c.element)&&c.element.hasClass("no-captions")?void e.addClass("fbx-hide-caption"):(d.update(),e.removeClass("fbx-fade-caption fbx-slide-caption fbx-hide-caption"),void d.FooBox.raise("foobox.captionsShow",{item:c}))},this.update=function(){var c=d.FooBox.items.current(),e=d.FooBox.modal.element.find(".fbx-caption");e.html(c.caption).find('a[href^="#"]').filter(function(){var c=a(this).attr("href"),d=a(c),e=d.data("fbx_instance")||d.data("fbx_p_instance");return d.length>0&&e instanceof b.Instance?(a(this).data("hrefTarget",d.get(0)),!0):!1}).off("click.captions").on("click.captions",function(c){c.preventDefault();var e=a(this).data("hrefTarget"),f=a(e).data("fbx_instance")||a(e).data("fbx_p_instance");return f instanceof b.Instance&&(d.FooBox.modal.close(),f.items.indexes.set(e.index),f.modal.show()),!1}),a("<a/>",{"class":"fbx-close-caption",html:"&times;"}).on("click.captions",d.handlers.toggleCaptions).prependTo(e)},this.prettifier=function(a){return"string"!=typeof a?null:(a=a.replace(/\s*-\d+/g,"").replace(/\s*_\d+/g,"").replace(/-/g," ").replace(/_/g," "),a=a.replace(/\w\S*/g,function(a){return-1!=a.indexOf("#")?a:a.charAt(0).toUpperCase()+a.substr(1).toLowerCase()}))}},b.addons.register(b.Captions,c)}(jQuery,window.FooBox),function(a,b){var c={wordpress:{enabled:!1}};b.Wordpress=function(c){this.FooBox=c;var d=this;this.preinit=function(a){d.handlers.unbind(!0),a.on("foobox.createCaption",d.handlers.onCreateCaption)},this.destroy=function(){d.handlers.unbind(!0)},this.handlers={unbind:function(a){a=a||!1,a&&d.FooBox.element.off("foobox.createCaption",d.handlers.onCreateCaption)},onCreateCaption:function(c){var d=c.fb.options,e=c.fb.instance.element,f=c.fb.item.element,g="",h=c.fb.item.title,i=c.fb.item.description;if(1==d.wordpress.enabled&&b.isjQuery(f)){var j=f.data("captionTitle")||f.data("title"),k=f.data("captionDesc")||f.data("description");if(e.hasClass("gallery"))d.captions.overrideTitle===!1&&(h=j||f.parents(".gallery-item:first").find(".wp-caption-text:first").html()||f.parents(".gallery-item:first").find(".gallery-caption:first").html()||h||""),d.captions.overrideDesc===!1&&(i=k||f.find("img").attr("alt")||i||"");else if(e.hasClass("wp-caption")||f.hasClass("wp-caption"))d.captions.overrideTitle===!1&&(h=j||f.find("img").attr("title")||f.parents(".wp-caption:first").find(".wp-caption-text:first").html()||h||""),d.captions.overrideDesc===!1&&(i=k||f.find("img").attr("alt")||i||"");else if(f.parents(".wp-caption:first").length>0)d.captions.overrideTitle===!1&&(h=j||f.parents(".wp-caption:first").find("img").attr("title")||f.parents(".wp-caption:first").find(".wp-caption-text:first").html()||h||""),d.captions.overrideDesc===!1&&(i=k||f.parents(".wp-caption:first").find("img").attr("alt")||i||"");else if(e.hasClass("tiled-gallery"))d.captions.overrideTitle===!1&&(h=j||f.parents(".tiled-gallery-item:first").find(".tiled-gallery-caption").html()||f.find("img").data("image-title")||f.find("img").attr("title")||h||""),d.captions.overrideDesc===!1&&(i=k||a.trim(f.find("img").data("image-description")).replace(/(^<p>)|(<\/p>$)/gi,"")||i||"");else{if(!e.hasClass("wp-block-gallery")&&!e.hasClass("wp-block-image"))return;d.captions.overrideTitle===!1&&(h=j||f.parents("figure:first").find("figcaption").html()||h||""),d.captions.overrideDesc===!1&&(i=k||i||"")}h+="",i+="",h=h||"",i=i||"";var l=a("<div/>"),m=l.html(h).text(),n=l.html(i).text();(a.trim(h)==a.trim(i)||m==n)&&(i=null),g="string"==typeof h&&h.length>0?b.format('<div class="fbx-caption-title">{0}</div>',h):g,g="string"==typeof i&&i.length>0?g+b.format('<div class="fbx-caption-desc">{0}</div>',i):g,c.fb.item.title=h,c.fb.item.description=i,c.fb.item.caption=g}}}},b.addons.register(b.Wordpress,c)}(jQuery,window.FooBox),function(a,b){var c={pan:{enabled:!0,showOverview:!0,position:"fbx-top-right"}};b.Pan=function(c){this.FooBox=c;var d,e,f,g,h=this,i=!1,j=!1,k=null,l=null,m=null,n=null,o=null,p=0;this.preinit=function(a){h.handlers.unbind(!0),a.on({"foobox.initialized foobox.reinitialized":h.handlers.initialized})},this.destroy=function(){h.handlers.unbind(!0)},this.setOverview=function(){var a=parseInt(n.css("max-width")),b=parseInt(n.css("max-height")),c=a/k.width,d=b/k.height;p=c>d?d:c;var e=k.width*p,f=k.height*p;n.width(e).height(f).css("background-image","url("+k.url+")")},this.setViewport=function(){var a=m.width(),b=m.height(),c=a*p,d=b*p;o.width(c).height(d)},this.disableCaptionImageClick=function(){var a=h.FooBox.modal.element,c=b.objects.get("addons",h.FooBox,function(a){return a instanceof b.Captions});c&&a.find(".fbx-item-current, .fbx-item-next").off("click.captions",c.handlers.toggleCaptions)},this.enableCaptionImageClick=function(){var a=h.FooBox.modal.element,c=b.objects.get("addons",h.FooBox,function(a){return a instanceof b.Captions});c&&a.find(".fbx-item-current, .fbx-item-next").on("click.captions",c.handlers.toggleCaptions)},this.handlers={unbind:function(a){a=a||!1,a&&h.FooBox.element.off({"foobox.initialized foobox.reinitialized":h.handlers.initialized}),h.FooBox.element.off({"foobox.afterLoad":h.handlers.onAfterLoad,"foobox.showOverflow":h.handlers.onShowOverflow,"foobox.hideOverflow foobox.beforeLoad":h.handlers.onHideOverflow}),h.FooBox.modal instanceof b.Modal&&b.isjQuery(h.FooBox.modal.element)&&h.FooBox.modal.element.find(".fbx-stage").off({mousedown:h.handlers.onMouseDown,mousemove:h.handlers.onMouseMove,mouseup:h.handlers.onMouseUp}).removeClass("fbx-pannable fbx-panning")},initialized:function(a){h.handlers.unbind(),a.fb.options.pan.enabled===!0&&h.FooBox.element.on({"foobox.close":h.handlers.onMouseUp,"foobox.afterLoad":h.handlers.onAfterLoad,"foobox.showOverflow":h.handlers.onShowOverflow,"foobox.hideOverflow foobox.beforeLoad":h.handlers.onHideOverflow})},onAfterLoad:function(a){i===!0&&"image"==a.fb.item.handler.type&&(h.setOverview(),h.setViewport())},onShowOverflow:function(b){"image"==b.fb.item.handler.type&&(i===!0?(h.setOverview(),h.setViewport()):(i=!0,h.disableCaptionImageClick(),k=b.fb.item,m=h.FooBox.modal.element.addClass("fbx-pannable-item").find(".fbx-stage").on({mousedown:h.handlers.onMouseDown,mousemove:h.handlers.onMouseMove,"mouseup mouseleave":h.handlers.onMouseUp}).addClass("fbx-pannable"),l=b.fb.container,b.fb.options.pan.showOverview===!0&&(n=a("<div/>",{"class":"fbx-pan-overview"}).addClass(b.fb.options.pan.position).on("click",h.handlers.onOverviewClick).appendTo(m),o=a("<div/>",{"class":"fbx-pan-viewport"}).appendTo(n),l.on("scroll",h.handlers.onScroll),h.setOverview(),h.setViewport())))},onHideOverflow:function(a){i===!0&&(i=!1,h.enableCaptionImageClick(),a.fb.options.pan.showOverview===!0&&n.remove(),l.off("scroll",h.handlers.onScroll),m.off({mousedown:h.handlers.onMouseDown,mousemove:h.handlers.onMouseMove,"mouseup mouseleave":h.handlers.onMouseUp}).removeClass("fbx-pannable fbx-panning"),h.FooBox.modal.element.removeClass("fbx-pannable-item"))},onMouseDown:function(a){if(i===!0){a.preventDefault(),m.addClass("fbx-panning");var b=l.get(0);j=!0,d=a.pageX,e=a.pageY,f=b.scrollLeft,g=b.scrollTop}},onMouseMove:function(a){if(j===!0&&i===!0){var b=l.get(0);b.scrollLeft=f-(a.pageX-d),b.scrollTop=g-(a.pageY-e)}},onMouseUp:function(){i===!0&&(j=!1,m.removeClass("fbx-panning"),d=0,e=0,f=0,g=0)},onScroll:function(){var a=l.get(0),b=a.scrollTop/k.height*100,c=a.scrollLeft/k.width*100;o.css({top:b+"%",left:c+"%"})},onOverviewClick:function(b){var c=a(this).offset(),d=(b.pageX-c.left)/p,e=(b.pageY-c.top)/p,f=d-l.width()/2,g=e-l.height()/2;l.animate({scrollTop:g,scrollLeft:f},300)}}},b.addons.register(b.Pan,c)}(jQuery,window.FooBox),function(a,b){var c={swipe:{enabled:!0,min:80}};b.Swipe=function(a){this.FooBox=a,this.isMoving=!1;var c,d=this;this.preinit=function(a){d.handlers.unbind(!0),a.on("foobox.initialized foobox.reinitialized",d.handlers.initialized)},this.destroy=function(){d.handlers.unbind(!0)},this.handlers={unbind:function(a){a=a||!1,a&&d.FooBox.element.off("foobox.initialized foobox.reinitialized",d.handlers.initialized),d.FooBox.modal instanceof b.Modal&&b.isjQuery(d.FooBox.modal.element)&&d.FooBox.modal.element.off({touchstart:d.handlers.onTouchStart,touchmove:d.handlers.onTouchMove})},initialized:function(a){d.handlers.unbind(),a.fb.options.swipe.enabled===!0&&a.fb.modal.on("touchstart",d.handlers.onTouchStart)},onTouchStart:function(a){var b=a.originalEvent.touches||a.touches;1==b.length&&d.FooBox.items.multiple()&&(c=b[0].pageX,d.isMoving=!0,d.FooBox.modal.element.on("touchmove",d.handlers.onTouchMove))},onTouchMove:function(a){if(d.isMoving){var b=a.originalEvent.touches||a.touches,e=b[0].pageX,f=c-e;Math.abs(f)>=d.FooBox.options.swipe.min&&(d.cancelTouch(),f>0?(d.FooBox.raise("foobox.swipeRight"),d.FooBox.modal.next()):(d.FooBox.raise("foobox.swipeLeft"),d.FooBox.modal.prev()))}}},this.cancelTouch=function(){d.FooBox.modal.element.off("touchmove",d.handlers.onTouchMove),c=null,d.isMoving=!1}},b.addons.register(b.Swipe,c)}(jQuery,window.FooBox);
5
  * @copyright Steven Usher & Brad Vincent 2014
6
  * @license Released under the MIT license.
7
  * You are free to use FooBox jQuery in personal projects as long as this copyright header is left intact.
8
+ */
9
+ !function(a,b,c,undefined){if(a&&b){b.FooBox={defaults:{affiliate:{enabled:!0,prefix:"Powered by ",url:"http://fooplugins.com/plugins/foobox/"},alwaysInit:!1,closeOnOverlayClick:!0,containerCssClass:"fbx-instance",countMessage:"item %index of %total",error:"Could not load the item",excludes:".fbx-link, .nofoobox",externalSelector:"a[data-foobox],input[data-foobox]",fitToScreen:!1,hideScrollbars:!0,loadDelay:0,loaderTimeout:600,modalClass:"",preload:!1,rel:null,resizeSpeed:300,selector:"a",showButtons:!0,showCount:!0,style:"fbx-rounded",theme:"fbx-light",transitionInSpeed:200,transitionOutSpeed:200,initCallback:null,loop:!0},version:"2.0.10",instances:[],ready:function(b){(Function("/*@cc_on return true@*/")()?"complete"===document.readyState:"loading"!==document.readyState)?b(a):setTimeout(function(){FooBox.ready(b)},1)}},FooBox.$=a,FooBox.format=function(a,b,c){var d,e,f=arguments[0];for(d=0;d<arguments.length-1;d++)e=new RegExp("\\{"+d+"\\}","gm"),f=f.replace(e,arguments[d+1]);return f},FooBox.browser={isIE:!1,isChrome:!1,isSafari:!1,isLtSafari10:!1,version:0,css:"",iOS:!1,Mac:!1,isMobile:function(a){return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))}(navigator.userAgent||navigator.vendor||b.opera),check:function(){var a=navigator.appVersion.toLowerCase(),c=navigator.userAgent.toLowerCase(),d=navigator.platform;FooBox.browser.iOS=/(iPad|iPhone|iPod)/g.test(d),1==FooBox.browser.iOS&&(FooBox.browser.css+=" fbx-ios"),FooBox.browser.Mac=/(Mac)/g.test(d),1==FooBox.browser.Mac&&(FooBox.browser.css+=" fbx-mac"),FooBox.browser.isChrome=a.indexOf("chrome")>-1||a.indexOf("crios")>-1,FooBox.browser.isChrome&&(FooBox.browser.css+=" fbx-chrome"),FooBox.browser.isSafari=a.indexOf("safari")>-1&&!FooBox.browser.isChrome,FooBox.browser.isSafari&&(FooBox.browser.css+=" fbx-safari",FooBox.browser.isLtSafari10=/constructor/i.test(b.HTMLElement)),FooBox.browser.isFirefox=c.indexOf("firefox")>-1,FooBox.browser.isFirefox&&(FooBox.browser.css+=" fbx-firefox");var e=c.indexOf("msie "),f=c.indexOf("trident/"),g=c.indexOf("edge/");if(FooBox.browser.isIE=e>-1||f>-1||g>-1,FooBox.browser.isIE){if(e>-1)FooBox.browser.version=parseInt(c.substring(e+5,c.indexOf(".",e)),10);else if(f>-1){var h=c.indexOf("rv:");FooBox.browser.version=parseInt(c.substring(h+3,c.indexOf(".",h)),10)}else g>-1&&(FooBox.browser.version=parseInt(c.substring(g+5,c.indexOf(".",g)),10));FooBox.browser.css=FooBox.format("fbx-ie fbx-ie{0}",FooBox.browser.version)}},supportsTransitions:function(){var a,b=document.body||document.documentElement,c=b.style,d="transition";if("string"==typeof c[d])return!0;a=["Moz","Webkit","Khtml","O","ms"],d=d.charAt(0).toUpperCase()+d.substr(1);for(var e=0;e<a.length;e++)if("string"==typeof c[a[e]+d])return!0;return!1},transitionEnd:function(){var a,b=document.createElement("fakeelement"),c={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(a in c)if(c.hasOwnProperty(a)&&b.style[a]!==undefined)return c[a];return null}},FooBox.browser.check(),FooBox.qualifiedURL=function(a){var b=document.createElement("a");return b.href=a,b.href},c||(c={}),c.log=c.log||function(){},c.warn=c.warn||function(){},c.error=c.error||function(){},c.info=c.info||function(){};var d={write:function(){c.log(FooBox.format.apply(d,arguments))},error:function(){1===arguments.length&&arguments[0]instanceof Error?c.error(arguments[0]):c.error(FooBox.format.apply(d,arguments))}};jQuery.Event.prototype.fb={instance:null,modal:null,options:null},FooBox.raise=function(b,c,d){d=d||{};var e=a.Event(c);return e.fb={},e.fb.instance=b,e.fb.modal=b.modal.element,e.fb.options=b.options,a.extend(!0,e.fb,d),b.element.one(c,function(a){a.stopPropagation()}).trigger(e),e},FooBox.isjQuery=function(a){return a instanceof jQuery?!0:a&&a.jquery},FooBox.options={isMultipart:function(a,b){return"string"==typeof a&&a.length>0&&-1!==a.indexOf(b)},hasProperties:function(a){if("object"!=typeof a)return!1;var b;for(b in a)if(a.hasOwnProperty(b))return!0;return!1},get:function(a,b){if(FooBox.options.isMultipart(b,".")){var c=b.substring(0,b.indexOf(".")),d=b.substring(b.indexOf(".")+1);return a[c]=a[c]||{},FooBox.options.get(a[c],d)}return a[b]},set:function(a,b,c){if(FooBox.options.isMultipart(b,".")){var d=b.substring(0,b.indexOf(".")),e=b.substring(b.indexOf(".")+1);a[d]=a[d]||{},FooBox.options.set(a[d],e,c)}else a[b]=c},merge:function(a,b,c){var d,e=Array.prototype.slice.call(arguments);for(a=e.shift(),b=e.shift(),FooBox.options._merge(a,b),d=0;d<e.length;d++)c=e[d],FooBox.options._merge(a,c);return a},_merge:function(b,c){var d;for(d in c)c.hasOwnProperty(d)&&(FooBox.options.hasProperties(c[d])&&!a.isArray(c[d])?(b[d]=b[d]||{},FooBox.options._merge(b[d],c[d])):a.isArray(c[d])?(b[d]=[],a.extend(!0,b[d],c[d])):b[d]=c[d])}},FooBox.objects={registered:{},ensure:function(a){return FooBox.objects.registered[a]=FooBox.objects.registered[a]||[]},register:function(b,c,d){var e=FooBox.objects.ensure(b);return e.push(c),"object"==typeof d&&a.extend(!0,FooBox.defaults,d),!0},load:function(a,b){var c,e,f=[],g=FooBox.objects.ensure(a);for(e=0;e<g.length;e++)try{c=g[e],f.push(new c(b))}catch(h){d.error(h)}b.objects=b.objects||{},b.objects[a]=f},call:function(b,c,e,f,g){var h,i=Array.prototype.slice.call(arguments);b=i.shift(),c=i.shift(),e=i.shift();for(var j=c.objects[b]||[],k=0;k<j.length;k++)try{if(h=j[k],!a.isFunction(h[e]))continue;h[e].apply(h,i)}catch(l){d.error(l)}},get:function(b,c,d){var e,f=c.objects[b];if(!f||!a.isFunction(d))return null;for(e=0;e<f.length;e++)if(d(f[e]))return f[e];return null}},FooBox.addons={_ns:"addons",validate:function(b){return a.isFunction(b)?!0:(d.error('Expected type "function", received type "{0}".',typeof b),!1)},register:function(a,b){return FooBox.addons.validate(a)?FooBox.objects.register(FooBox.addons._ns,a,b):(d.error("Failed to register the addon."),!1)},load:function(a){FooBox.objects.load(FooBox.addons._ns,a)},call:function(a,b,c,d){var e=Array.prototype.slice.call(arguments);e.unshift(FooBox.addons._ns),FooBox.objects.call.apply(this,e)}},FooBox.handlers={_ns:"handlers",validate:function(b){if(!a.isFunction(b))return d.error('Expected type "function", received type "{0}".',typeof b),!1;var c=new b;return a.isFunction(c.handles)?a.isFunction(c.defaults)?a.isFunction(c.parse)?a.isFunction(c.load)?a.isFunction(c.getSize)?a.isFunction(c.hasChanged)?a.isFunction(c.preload)?!0:(d.error('The required "preload" method is not implemented.'),!1):(d.error('The required "hasChanged" method is not implemented.'),!1):(d.error('The required "getSize" method is not implemented.'),!1):(d.error('The required "load" method is not implemented.'),!1):(d.error('The required "parse" method is not implemented.'),!1):(d.error('The required "defaults" method is not implemented.'),!1):(d.error('The required "handles" method is not implemented.'),!1)},register:function(a,b){return FooBox.handlers.validate(a)?FooBox.objects.register(FooBox.handlers._ns,a,b):(d.error("Failed to register the handler."),!1)},load:function(a){FooBox.objects.load(FooBox.handlers._ns,a)},call:function(a,b,c,d){var e=Array.prototype.slice.call(arguments);e.unshift(FooBox.handlers._ns),FooBox.objects.call.apply(this,e)},get:function(a,b){return FooBox.objects.get(FooBox.handlers._ns,a,function(a){return a.type==b})}},FooBox.Item=function(b,c,d){return this.type=b,this.element=FooBox.isjQuery(c)?c:a(c),this.handler=d,this.width=null,this.height=null,this.url=null,this.overflow=!1,this.preloaded=!1,this.proportion=!1,this.error=!1,this},FooBox.Size=function(a,b){return this.width="number"==typeof a?a:parseInt(a,0),this.height="number"==typeof b?b:parseInt(b,0),this.equalTo=function(a){return this.width==a.width&&this.height==a.height},this},FooBox.Size.check=function(a){return"number"==typeof a?a:isNaN(parseInt(a))?null:parseInt(a)},FooBox.Timer=function(){this.id=null,this.busy=!1;var a=this;return this.start=function(b,c,d){d=d||b,a.stop(),a.id=setTimeout(function(){b.call(d),a.id=null,a.busy=!1},c),a.busy=!0},this.stop=function(){null!==a.id&&a.busy!==!1&&(clearTimeout(a.id),a.id=null,a.busy=!1)},this},a.fn.foobox=function(b){return b=b||{},this.each(function(){var c=a(this),d=c.data("fbx_instance"),e=c.data("__FooGallery__");if(d instanceof FooBox.Instance)if(1==d.options.alwaysInit||e){var f=d.options;f.alwaysInit=!0,d.destroy(),d=new FooBox.Instance(d.id),d.init(this,a.extend(!0,f,b))}else d.reinit(b);else{if(d=a(this).data("fbx_p_instance"),d instanceof FooBox.Instance)return;d=new FooBox.Instance,d.init(this,b)}})},FooBox.Modal=function(c){this.FooBox=c,this.element=null,this.loaderTimeout=new FooBox.Timer,this._first=!1,this._busy=!1,this._closed=!1;var e=this;return this.init=function(a,b){e.setup.html(),e.setup.options(b),e.setup.bind()},this.reinit=function(a){e.setup.options(a)},this.destroy=function(){FooBox.isjQuery(e.element)&&e.element.remove()},this.setup={html:function(){if(!FooBox.isjQuery(e.element)){e.element=a('<div class="fbx-modal"></div>'),e.element.append('<div class="fbx-inner-spacer"></div>');var b=a('<div class="fbx-stage"></div>');b.append('<div class="fbx-item-current"></div>'),b.append('<div class="fbx-item-next"></div>');var c=a('<div class="fbx-inner fbx-inner-shadow"></div>');c.append(b),c.append('<a class="fbx-prev fbx-btn-transition fbx-btn-shadow"></a>'),c.append('<div class="fbx-credit"><a target="_blank" href=""><em></em><span> FooBox</span></a></div>'),c.append('<span class="fbx-count" />'),c.append('<a class="fbx-next fbx-btn-transition fbx-btn-shadow"></a>'),c.append('<a class="fbx-close fbx-btn-transition fbx-btn-shadow"></a>'),e.element.append('<div class="fbx-loader"><div></div></div>'),e.element.append(c),e.FooBox.raise("foobox.setupHtml"),a("body").append(e.element)}},options:function(a){var b;e.element.removeClass().addClass("fbx-modal").addClass(FooBox.format("fbx-{0}",e.FooBox.id)).addClass(e.FooBox.element.data("style")||a.style).addClass(e.FooBox.element.data("theme")||a.theme).addClass(e.FooBox.element.data("modal-class")).addClass(a.modalClass).data("fbx_instance",e.FooBox),e.element.addClass(FooBox.browser.css),b=a.affiliate.enabled?"":"none",e.element.find(".fbx-credit").css("display",b),a.affiliate.enabled&&(e.element.find(".fbx-credit > a").attr("href",a.affiliate.url),e.element.find(".fbx-credit > a > em").text(a.affiliate.prefix)),b=a.showCount&&e.FooBox.items.multiple()?"":"none",e.element.find(".fbx-count").css("display",b),a.showButtons&&e.FooBox.items.multiple()||e.element.addClass("fbx-no-buttons"),e.FooBox.raise("foobox.setupOptions")},bind:function(){1==e.FooBox.options.closeOnOverlayClick&&e.element.off("click.foobox").on("click.foobox",function(b){1==e.FooBox.options.closeOnOverlayClick&&a(b.target).is(".fbx-modal")&&e.close()}),e.element.find(".fbx-close").off("click.foobox").on("click.foobox",function(a){a.preventDefault(),a.stopPropagation(),e.close()}).end().find(".fbx-prev").off("click.foobox").on("click.foobox",function(b){b.preventDefault(),b.stopPropagation(),a(this).hasClass("fbx-disabled")||e.prev()}).end().find(".fbx-next").off("click.foobox").on("click.foobox",function(b){b.preventDefault(),b.stopPropagation(),a(this).hasClass("fbx-disabled")||e.next()})}},this.prioritize=function(){FooBox.instances.length>1&&e.element.nextAll(".fbx-modal:last").after(e.element)},this.preload=function(){if(1==e.FooBox.options.preload){var a=e.FooBox.items.prev();a&&a.handler.preload(a);var b=e.FooBox.items.next();b&&b.handler.preload(b)}},this.show=function(b){function c(a){if(e.loaderTimeout.stop(),e.element.removeClass("fbx-loading"),e._busy=!1,d.error(a),!e.FooBox.raise("foobox.onError",{error:a}).isDefaultPrevented()){var c=e.FooBox.items.error(f.index);null!=c&&e.show(b)}}var f=e.FooBox.items.current();if(f){b=b||!1,e._first=b,e._busy=!0,e._closed=!1,a("body").addClass("fbx-active"),e.FooBox.options.hideScrollbars&&a("html").addClass("fbx-no-scroll"),1==f.error?e.element.addClass("fbx-error"):e.element.removeClass("fbx-error"),e.element.hasClass("fbx-show")||(e.prioritize(),e.element.addClass("fbx-loading").find(".fbx-inner").css({width:"100px",height:"100px","margin-top":"-50px","margin-left":"-50px"}));var g=e.element.find(".fbx-item-current"),h=e.element.find(".fbx-item-next");if(h.hide().css("opacity","0"),e.element.find(".fbx-count").text(e.FooBox.options.countMessage.replace("%index",""+(e.FooBox.items.indexes.current+1)).replace("%total",""+e.FooBox.items.array.length)),e.FooBox.raise("foobox.beforeLoad",{item:f}).isDefaultPrevented())return void(e._busy=!1);if(f.handler.hasChanged(f)){var i=f.index,j=f.element.get(0);f=f.handler.parse(f.element);var k=e.FooBox.raise("foobox.parseItem",{element:f.element,item:f});j.index=k.fb.item.index=i,e.FooBox.items.array[i]=k.fb.item}e.preload(),e.loaderTimeout.start(function(){e.element.addClass("fbx-loading")},e.FooBox.options.loaderTimeout),setTimeout(function(){e.checkForLoop(f),f.handler.load(f,h,function(a){return 1==e._closed?void(e._busy=!1):void e.transitionOut(g,function(){return 1==e._closed?void(e._busy=!1):void e.resize(a,h,function(){return 1==e._closed?void(e._busy=!1):(e.loaderTimeout.stop(),h.show(),void e.transitionIn(h,function(){return 1==e._closed?void(e._busy=!1):(h.add(g).toggleClass("fbx-item-next fbx-item-current"),g.empty(),void(e.element.hasClass("fbx-show")?(e.element.removeClass("fbx-loading"),e.FooBox.raise("foobox.afterLoad",{item:f}),e.triggerFooGalleryLayout(h),e._busy=!1):e.FooBox.raise("foobox.beforeShow",{item:f}).isDefaultPrevented()||(e.element.removeClass("fbx-loading").addClass("fbx-show"),e.FooBox.raise("foobox.afterShow",{item:f}),e.FooBox.raise("foobox.afterLoad",{item:f}),e.triggerFooGalleryLayout(h),e._busy=!1)))},c))},c)},c)},c)},e.FooBox.options.loadDelay)}},this.triggerFooGalleryLayout=function(c){b.FooGallery&&c.find(".foogallery").each(function(){var b=a(this).data("__FooGallery__");b&&b.initialized&&b.layout()})},this.checkForLoop=function(a){1!=e.FooBox.options.loop&&(e.element.find(".fbx-prev, .fbx-next").removeClass("fbx-disabled"),e.FooBox.items.is.first(a)&&e.element.find(".fbx-prev").addClass("fbx-disabled"),e.FooBox.items.is.last(a)&&e.element.find(".fbx-next").addClass("fbx-disabled"))},this.resize=function(b,c,d,f){try{if(0===b.width||0===b.height)return void(a.isFunction(f)&&f(FooBox.format("Invalid size supplied. Width = {0}, Height = {1}",b.width,b.height)));var g=e.FooBox.items.current(),h=new FooBox.Size(b.width,b.height),i=e.element.find(".fbx-inner"),j=e.element.find(".fbx-inner-spacer"),k=parseInt(j.css("padding-top"),0),l=parseInt(j.css("padding-bottom"),0),m=parseInt(j.css("padding-left"),0),n=parseInt(j.css("padding-right"),0),o=parseInt(i.css("border-top-width"),0),p=parseInt(i.css("border-bottom-width"),0),q=parseInt(i.css("border-left-width"),0),r=parseInt(i.css("border-right-width"),0),s=parseInt(i.css("padding-left"),0),t=k+l+2*s+o+p,u=m+n+2*s+q+r,v=new FooBox.Size(parseInt(i.css("width"),0),parseInt(i.css("height"),0)),w=new FooBox.Size(e.element.width()-u,e.element.height()-t),x=w.width/b.width;b.height*x>w.height&&(x=w.height/b.height),e.FooBox.options.fitToScreen===!0||1==g.proportion&&(b.height>w.height||b.width>w.width)?(b.height=Math.floor(b.height*x),b.width=Math.floor(b.width*x)):0==g.proportion&&(b.height>w.height&&(b.height=w.height),b.width>w.width&&(b.width=w.width)),b.height<100&&(b.height=100),b.width<100&&(b.width=100);var y=-(b.height/2+s+(p+o)/2+l/2-k/2),z=-(b.width/2+s+(r+q)/2+n/2-m/2);if(v.equalTo(b))i.css({height:b.height,width:b.width,"margin-top":y,"margin-left":z}),e.overflow(g,h,b,c),e.FooBox.raise("foobox.afterResize",{item:g,size:b}),a.isFunction(d)&&d();else if(!e.FooBox.raise("foobox.beforeResize",{item:g,size:b,offset:{top:y,left:z},error:f,success:d}).isDefaultPrevented())if(y=-(b.height/2+s+(p+o)/2+l/2-k/2),z=-(b.width/2+s+(r+q)/2+n/2-m/2),e.element.hasClass("fbx-show"))if(FooBox.browser.supportsTransitions()){var A=e.FooBox.options.resizeSpeed/1e3,B="all "+A+"s ease-in-out";i.css({WebkitTransition:B,MozTransition:B,MsTransition:B,OTransition:B,transition:B}),i.css({height:b.height,width:b.width,"margin-top":y,"margin-left":z}),setTimeout(function(){i.css({WebkitTransition:"",MozTransition:"",MsTransition:"",OTransition:"",transition:""}),e.overflow(g,h,b,c),e.FooBox.raise("foobox.afterResize",{item:g,size:b}),a.isFunction(d)&&d(b)},e.FooBox.options.resizeSpeed)}else i.animate({height:b.height,width:b.width,"margin-top":y,"margin-left":z},e.FooBox.options.resizeSpeed,function(){e.overflow(g,h,b,c),e.FooBox.raise("foobox.afterResize",{item:g,size:b}),a.isFunction(d)&&d(b)});else i.css({height:b.height,width:b.width,"margin-top":y,"margin-left":z}),e.overflow(g,h,b,c),e.FooBox.raise("foobox.afterResize",{item:g,size:b}),a.isFunction(d)&&d()}catch(C){a.isFunction(f)&&f(C)}},this.overflow=function(a,b,c,d){var f=d.find(".fbx-item");1==a.overflow&&(c.width<.8*b.width||c.height<.8*b.height)||1==a.overflow&&0==a.proportion&&(c.width<b.width||c.height<b.height)||1==a.overflow&&"html"==a.type?("html"==a.type?(f.css({width:"100%",height:"auto",overflow:""}),d.css("overflow","auto")):(f.css({width:b.width,height:b.height,overflow:""}),d.css({"overflow-x":b.width<=c.width?"hidden":"","overflow-y":b.height<=c.height?"hidden":""})),e.FooBox.raise("foobox.showOverflow",{item:a,container:d})):(f.css({width:"",height:"",overflow:"hidden"}),d.css({"overflow-x":"","overflow-y":"",overflow:"hidden"}),e.FooBox.raise("foobox.hideOverflow",{item:a,container:d}))},this.transitionOut=function(b,c,d){try{if(!e.element.hasClass("fbx-show"))return void(a.isFunction(c)&&c());b.animate({opacity:0},b.is(":visible")?e.FooBox.options.transitionOutSpeed:0,function(){a.isFunction(c)&&c()})}catch(f){a.isFunction(d)&&d(f)}},this.transitionIn=function(b,c,d){try{if(!e.element.hasClass("fbx-show"))return b.css({opacity:1}),void(a.isFunction(c)&&c());b.animate({opacity:1},e.FooBox.options.transitionInSpeed,function(){a.isFunction(c)&&c()})}catch(f){a.isFunction(d)&&d(f)}},this.close=function(){e.FooBox.raise("foobox.beforeClose").isDefaultPrevented()||(e._closed=!0,e._busy=!1,e.element.removeClass("fbx-loading fbx-show"),a("body").removeClass("fbx-active"),e.FooBox.raise("foobox.close"),e.element.find(".fbx-item-current, .fbx-item-next").empty(),a("html").removeClass("fbx-no-scroll"),e.FooBox.raise("foobox.afterClose"))},this.prev=function(a){if(1!=e._busy){if(e.FooBox.items.indexes.set(e.FooBox.items.indexes.prev),"string"==typeof a)for(var b=e.FooBox.items.current();b.type!=a;)e.FooBox.items.indexes.set(e.FooBox.items.indexes.prev),b=e.FooBox.items.current();e.show(!1),e.FooBox.raise("foobox.previous")}},this.next=function(a){if(1!=e._busy){if(e.FooBox.items.indexes.set(e.FooBox.items.indexes.next),"string"==typeof a)for(var b=e.FooBox.items.current();b.type!=a;)e.FooBox.items.indexes.set(e.FooBox.items.indexes.next),b=e.FooBox.items.current();e.show(!1),e.FooBox.raise("foobox.next")}},this},FooBox.Instance=function(b){this.id=null,"number"==typeof b?(this.id=b,FooBox.instances[b-1]=this):this.id=FooBox.instances.push(this),this.element=null,this.options=a.extend(!0,{},FooBox.defaults),this.modal=new FooBox.Modal(this),this.objects={},FooBox.addons.load(this),FooBox.handlers.load(this);var c=this;return this.raise=function(a,b){return FooBox.raise(c,a,b)},this.init=function(b,d){c.element=FooBox.isjQuery(b)?b:a(b),c.options=FooBox.options.merge(c.options,d||{}),FooBox.addons.call(c,"preinit",c.element,c.options),c.items.init(),c.items.array.length>0?(c.element.data("fbx_instance",c),c.options.containerCssClass&&c.element.addClass(c.options.containerCssClass),c.setup.bind(),c.modal.init(b,c.options),FooBox.handlers.call(c,"init",c.element,c.options),c.raise("foobox.initialized"),a.isFunction(c.options.initCallback)&&c.options.initCallback.call(c)):c.destroy()},this.reinit=function(a){c.options=FooBox.options.merge(c.options,a||{}),c.items.init(!0),c.items.array.length>0?(c.setup.bind(),c.modal.reinit(c.options),FooBox.handlers.call(c,"reinit",c.options),c.raise("foobox.reinitialized")):c.destroy()},this.destroy=function(){FooBox.addons.call(c,"destroy"),FooBox.handlers.call(c,"destroy"),c.items.destroy(),c.modal.destroy(),c.element.removeClass("fbx-instance fbx-item").data({fbx_instance:null,fbx_p_instance:null}),c.id==FooBox.instances.length?FooBox.instances.splice(c.id-1,1):FooBox.instances[c.id-1]=null,c.raise("foobox.destroy")},this.setup={bind:function(){a(c.options.externalSelector).off("click.fooboxExternal").on("click.fooboxExternal",function(b){b.preventDefault();var c=a(this).data("foobox"),d=a(c),e=d.data("fbx_instance")||d.data("fbx_p_instance");return d.length>0&&e instanceof FooBox.Instance&&e.modal instanceof FooBox.Modal&&e.modal.show(!0),!1})}},this.items={array:[],indexes:{prev:-1,current:0,next:1,direction:"*",set:function(a){var b=c.items.indexes.current;a=a||0,a=a>c.items.array.length-1?0:0>a?c.items.array.length-1:a;var d=a-1,e=a+1;c.items.indexes.current=a,c.items.indexes.prev=0>d?c.items.array.length-1:d,c.items.indexes.next=e>c.items.array.length-1?0:e,c.items.indexes.direction=c.items.indexes._direction(b,a,c.items.array.length-1)},_direction:function(a,b,c){return 0==b&&a==c?">":b==c&&0==a?"<":b>a?">":a>b?"<":"*"}},new_array:function(b){b=b||!1;var d,e,f,g=0;if(1==b){if(c.items.array.length>0){for(var h=0;h<c.items.array.length;h++)d=c.items.array[h],FooBox.isjQuery(d.element)?0==d.element.parents(":first").length&&(c.items.array.splice(h,1),h-=1):d.option||(c.items.array.splice(h,1),h-=1);for(var i=0;i<c.items.array.length;i++)d=c.items.array[i],FooBox.isjQuery(d.element)?(f=d.element.get(0),f.index=d.index=i):d.index=i}}else c.items.array=[];if(a.isArray(c.options.items))for(var j=0;j<c.options.items.length;j++)if(d=c.options.items[j],-1==c.items.indexOf(d))for(var k=0;k<c.objects.handlers.length;k++)if(c.objects.handlers[k].type==d.type){d.index=g,d.option=!0,d.handler=c.objects.handlers[k],d.handler.defaults(d),e=c.raise("foobox.parseItem",{element:null,item:d}),c.items.array.push(e.fb.item),g++;break}},init:function(b){b=b||!1,c.items.new_array(b);var d,e;if(c.element.is(c.options.selector)&&!c.element.is(c.options.excludes)&&c.items.add(c.element))c.element.off("click.item").on("click.item",c.items.clicked);else if(c.element.is(".foogallery")&&(d=c.element.data("__FooGallery__"))&&d.items&&(e=d.items.all()).length>0){d.filter&&a.isArray(d.filter.items)&&(e=d.filter.items.slice(0));var f=a.map(e,function(a){return a.$anchor?a.$anchor.get(0):null});a(f).not(c.options.excludes).off("click.item").filter(function(){return c.items.add(this)}).on("click.item",c.items.clicked),c.element.on("click.item",".fbx-link",c.items.clicked)}else c.element.find(c.options.selector).not(c.options.excludes).off("click.item").filter(function(){return c.items.add(this)}).on("click.item",c.items.clicked),c.element.on("click.item",".fbx-link",c.items.clicked);c.items.rel()},destroy:function(){c.element.off("click.item",".fbx-link",c.items.clicked);var b,d;for(d=0;d<c.items.array.length;d++)b=c.items.array[d],a.isFunction(b.destroy)&&b.destroy(),FooBox.isjQuery(b.element)&&b.element.off("click.item").removeClass("fbx-link").data("fbx_p_instance",null);c.items.array=[]},rel:function(){var b=c.options.rel||c.element.attr("rel")||(c.items.first(function(a){return FooBox.isjQuery(a.element)?"string"==typeof a.element.attr("rel"):!1})||{element:a()}).element.attr("rel");"string"==typeof b&&a('[rel="'+b+'"]').not(c.options.excludes).not(c.element).off("click.item").filter(function(){return c.items.add(this)}).on("click.item",c.items.clicked)},indexOf:function(a,b){if(!a)return-1;b=b||"url";var d;for(d=0;d<c.items.array.length;d++)if(c.items.array[d][b]==a[b])return d;return-1},is:{first:function(a){return c.items.array&&0!=c.items.array.length?c.items.array[0].index==a.index:!1},last:function(a){return c.items.array&&0!=c.items.array.length?c.items.array[c.items.array.length-1].index==a.index:!1}},add:function(b){b=FooBox.isjQuery(b)?b:a(b);var d=c.items.parse(b,c.items.array.length);if(null===d)return!1;var e=b.get(0),f=c.items.indexOf(d);-1!=f?(d=c.items.array[f],e.index=d.index):e.index=d.index=c.items.array.push(d)-1;var g=b.addClass("fbx-link").data("fbx_p_instance");return g instanceof FooBox.Instance||b.data("fbx_p_instance",c),!0},get:function(b){b=FooBox.isjQuery(b)?b:a(b);var d=null,e=b.get(0).index;return e&&e>0&&e<=c.items.array.length-1&&(d=c.items.array[e]),d},parse:function(b,d){b=FooBox.isjQuery(b)?b:a(b);for(var e,f,g=0;g<c.objects.handlers.length;g++)if(c.objects.handlers[g].handles(b,c.element)){e=c.objects.handlers[g].parse(b),isNaN(d)||(e.index=d),f=c.raise("foobox.parseItem",{element:b,item:e});break}return"undefined"!=typeof f&&f.fb.item?f.fb.item:null},error:function(b){function d(b){var c=this;return c.FooBox=b,c.type="error",c.handles=function(){return!1},c.hasChanged=function(){return!1},c.defaults=function(){},c.parse=function(){},c.load=function(b,d,e,f){try{d.empty().append(b.content),a.isFunction(e)&&e(c.getSize(b))}catch(g){a.isFunction(f)&&f(g)}},c.getSize=function(a){return new FooBox.Size(a.width,a.height)},c}if(c.items.array.length>b&&1==c.items.array[b].error)return c.items.array[b];var e,f,g=FooBox.handlers.get(c,"html"),h=!1;if(null==g&&(g=new d(c)),null!==c.options.error.match(/^#/i)&&a(c.options.error).length>0)e=a(c.options.error),h=!0;else{var i=FooBox.format('<div class="fbx-error-msg" data-width="240" data-height="240"><span></span><p>{0}</p></div>',c.options.error);e=a(i)}return f=new FooBox.Item(g.type,e.get(0),g),f.selector=1==h?c.options.error:null,f.index=b,f.error=!0,f.title=e.data("title")||null,f.description=e.data("description")||null,f.width=e.data("width")||240||null,f.height=e.data("height")||240||null,f.content=1==h?null:e,f.fullscreen=!0,f.handler=g,c.items.array[b]=f,f},first:function(a){for(var b=null,d=0;d<c.items.array.length;d++)if(a(c.items.array[d])){b=c.items.array[d];break}return b},current:function(){return c.items.array[c.items.indexes.current]},prev:function(){return c.items.array[c.items.indexes.prev]},next:function(){return c.items.array[c.items.indexes.next]},multiple:function(){return c.items.array.length>1},clicked:function(a){return a.preventDefault(),c.items.indexes.set(this.index),c.modal.show(!0),!1}},this},FooBox.open=function(b){var c,d=null;if("object"==typeof b){var e=document.createElement("a");a(e).foobox(b),d=a(e).data("fbx_instance")}else"number"==typeof b?c=b:(c=parseInt(b||0),c=isNaN(c)?0:c),c=c>FooBox.instances.length-1?FooBox.instances.length-1:0>c?0:c,d=FooBox.instances[c];return null!=d&&d.modal instanceof FooBox.Modal?(d.modal.show(!0),d):null},FooBox.close=function(){var a,b=[],c=null;for(a=0;a<FooBox.instances.length;a++)c=FooBox.instances[a],null!=c&&c.modal instanceof FooBox.Modal&&FooBox.isjQuery(c.modal.element)&&c.modal.element.hasClass("fbx-show")&&b.push(c);for(a=0;a<b.length;a++)c=b[a],c.modal.close()},FooBox.resize=function(c,d){if(c||d){var e,f,g,h;for(e=0;e<FooBox.instances.length;e++)f=FooBox.instances[e],null!=f&&f.modal instanceof FooBox.Modal&&FooBox.isjQuery(f.modal.element)&&f.modal.element.hasClass("fbx-show")&&(g=f.items.current(),h=new FooBox.Size(c||g.width||0,d||g.height||0),g.width=h.width,g.height=h.height,f.modal.resize(h,f.modal.element.find(".fbx-item-current")))}else a(b).trigger("resize.foobox")},FooBox.lateBind=function(c,d){var e=a.extend(!0,{},FooBox.defaults,d||b.FOOBOX&&FOOBOX.o||{}),f=a(c);f.on("click.foobox",e.selector,function(a){a.preventDefault();var b=f.data("fbx_instance");b||(b=f.foobox(e).data("fbx_instance")),b instanceof FooBox.Instance&&"number"==typeof this.index&&(b.items.indexes.set(this.index),b.modal.show(!0))})}}}(jQuery,window,window.console),function(a,b){var c={images:{noRightClick:!1,attr:"href",overflow:!1,fullscreen:!0,showCaptions:!0,regex:/https?:\/\/.*?\/.*?\.(jpg|jpeg|png|gif|bmp)/i,maxWidth:-1,maxHeight:-1,findUrl:function(a,c){if(!c)return"";if(c.data("image"))return c.data("image");var d=c.attr(a.options.images.attr);return"string"==typeof d?b.qualifiedURL(c.attr(a.options.images.attr)):""}}};b.Item.prototype.image=null,b.Item.prototype.maxWidth=null,b.Item.prototype.maxHeight=null,b.ImageHandler=function(c){this.FooBox=c,this.type="image";var d=this;this.handles=function(a){var b=d.FooBox.options.images.findUrl(d.FooBox,a),c="string"==typeof b&&null!=b.match(d.FooBox.options.images.regex),e=d.FooBox.raise("foobox.handlesImage",{element:a,handle:c});return e.fb.handle},this.defaults=function(a){a.fullscreen=a.fullscreen||d.FooBox.options.images.fullscreen,a.captions=a.captions||d.FooBox.options.images.showCaptions,a.social=a.social||!0,a.overflow=a.overflow||d.FooBox.options.images.overflow,a.proportion=a.proportion||!0,a.maxWidth=a.maxWidth||d.FooBox.options.images.maxWidth,a.maxHeight=a.maxHeight||d.FooBox.options.images.maxHeight},this.parse=function(a){var c=new b.Item(d.type,a,this);return d.defaults(c),c.url=d.FooBox.options.images.findUrl(d.FooBox,a)||null,c.width=b.Size.check(a.data("width")||c.width||null),c.height=b.Size.check(a.data("height")||c.height||null),c.fullscreen="boolean"==typeof a.data("fullscreen")?a.data("fullscreen"):c.fullscreen,c.overflow="boolean"==typeof a.data("overflow")?a.data("overflow"):c.overflow,c.proportion="boolean"==typeof a.data("proportion")?a.data("proportion"):c.proportion,c.maxWidth="number"==typeof a.data("maxWidth")?a.data("maxWidth"):c.maxWidth,c.maxHeight="number"==typeof a.data("maxHeight")?a.data("maxHeight"):c.maxHeight,c.image=null,c.image_url=c.url,c},this.load=function(b,c,e,f){try{var g=function(){var f=a(b.image).addClass("fbx-item fbx-item-image");d.FooBox.options.images.noRightClick&&f.on("contextmenu",function(a){return a.preventDefault(),!1}),c.empty().append(f),a.isFunction(e)&&e(d.getSize(b))};b.image&&null!==b.image?g():(b.image=new Image,b.image.onload=function(){b.image.onload=b.image.onerror=null,b.height=b.image.height,b.width=b.image.width,g()},b.image.onerror=function(){b.image.onload=b.image.onerror=null,b.image=null,a.isFunction(f)&&f("An error occurred attempting to load the image.")},b.image.src=b.url)}catch(h){a.isFunction(f)&&f(h);
10
+ }},this.preload=function(a){if(1!=a.preloaded){var b=new Image;b.src=a.url,a.preloaded=!0}},this.getSize=function(a){if(null!=a.width&&null!=a.height){if(a.maxWidth>0&&a.maxHeight>0&&(a.width>a.maxWidth||a.height>a.maxHeight)){var c=a.width>a.height?a.maxWidth/a.width:a.maxHeight/a.height;a.width*=c,a.height*=c}return new b.Size(a.width,a.height)}return new b.Size(0,0)},this.hasChanged=function(a){if(b.isjQuery(a.element)){var c=d.FooBox.options.images.findUrl(d.FooBox,a.element);return a.url!=c}return!1}},b.handlers.register(b.ImageHandler,c)}(jQuery,window.FooBox),function(a,b){var c={keyboard:{enabled:!0,preventDefault:!1,stopPropagation:!1}};b.Keyboard=function(a){this.FooBox=a;var c=this;this.preinit=function(a){c.handlers.unbind(!0),a.on({"foobox.initialized foobox.reinitialized":c.handlers.initialized,"foobox.setupHtml":c.handlers.setupHtml})},this.destroy=function(){c.handlers.unbind(!0)},this.handlers={unbind:function(a){a=a||!1,a&&c.FooBox.element.off({"foobox.initialized foobox.reinitialized":c.handlers.initialized,"foobox.setupHtml":c.handlers.setupHtml}),c.FooBox.element.off("foobox.afterLoad",c.handlers.afterLoad),b.isjQuery(c.FooBox.modal.element)&&c.FooBox.modal.element.off("keydown.foobox",c.handlers.onKeydown)},initialized:function(){c.handlers.unbind(),1==c.FooBox.options.keyboard.enabled&&(c.FooBox.element.on("foobox.afterLoad",c.handlers.afterLoad),b.isjQuery(c.FooBox.modal.element)&&c.FooBox.modal.element.on("keydown.foobox",c.handlers.onKeydown))},setupHtml:function(a){a.fb.modal.attr("tabindex",0)},afterLoad:function(a){a.fb.modal.focus()},onKeydown:function(a){var b=c.FooBox.modal,d=c.FooBox.options.keyboard;b.element.hasClass("fbx-show")&&(b.element.hasClass("fbx-fullscreen-mode")||27!==a.which?c.FooBox.items.multiple()&&37===a.which?b.prev():c.FooBox.items.multiple()&&39===a.which&&b.next():b.close(),1==d.preventDefault&&a.preventDefault(),1==d.stopPropagation&&a.stopPropagation(),c.FooBox.raise("foobox.keydown",{keyCode:a.which}))}}},b.addons.register(b.Keyboard,c)}(jQuery,window.FooBox),function(a,b){var c={hideNavOnMobile:!1,resizeTimeout:300,breakpoints:{phone:812,tablet:1366},iosInterval:200};b.BPInfo=function(b){var c=a(window);this.width=c.width(),this.height=c.height(),this.orientation=this.width>this.height?"fbx-landscape":"fbx-portrait";var d,e=null;if(a.isArray(b))for(var f=0;f<b.length;f++)if(d=b[f],d&&d.width&&this.width<=d.width){e=d;break}this.breakpoint=null==e?"fbx-desktop":e.name},b.Responsive=function(c){this.FooBox=c,this.breakpoint={values:[],names:""},this.timers={resize:new b.Timer,ios:new b.Timer};var d=this,e=null;this.preinit=function(a){d.handlers.unbind(!0),a.on("foobox.initialized foobox.reinitialized",d.handlers.initialized)},this.destroy=function(){d.handlers.unbind(!0)},this.handlers={unbind:function(b){b=b||!1,b&&d.FooBox.element.off("foobox.initialized foobox.reinitialized",d.handlers.initialized),a(window).off("resize.foobox",d.handlers.resize),d.FooBox.element.off({"foobox.beforeShow":d.handlers.iosBeforeShow,"foobox.close":d.handlers.iosClose})},initialized:function(){d.handlers.unbind(),d.setup.breakpoints(),d.style(),a(window).on("resize.foobox",d.handlers.resize),b.browser.iOS&&(b.browser.isSafari||b.browser.isChrome)&&d.FooBox.element.on({"foobox.beforeShow":d.handlers.iosBeforeShow,"foobox.close":d.handlers.iosClose})},resize:function(){d.timers.resize.start(function(){d.style();var a=d.FooBox,b=d.FooBox.items.current();if(a.modal.element.has("fbx-show")&&null!=b){var c=b.handler.getSize(b),e=a.modal.element.find(".fbx-item-current");a.modal.resize(c,e,function(){a.modal.triggerFooGalleryLayout(e);var c=b.handler.getSize(b),d=e.height();d!=c.height&&a.modal.resize(c,e,function(){a.modal.triggerFooGalleryLayout(e)})})}},d.FooBox.options.resizeTimeout)},iosBeforeShow:function(){d.timers.ios.start(d.handlers.ios,d.FooBox.options.iosInterval)},iosClose:function(){d.timers.ios.stop()},ios:function(){if(!d.FooBox.modal.element.hasClass("fbx-show"))return void d.timers.ios.start(d.handlers.ios,d.FooBox.options.iosInterval);var a=window.orientation||0,c=window.innerHeight,f=90==a||-90==a,g=0,h=0,i=f?screen.availWidth:screen.availHeight;b.browser.isChrome?(g=i-(f?76:56),h=i-(f?0:20)):b.browser.isSafari&&(g=i-88,h=i-(f?0:19)),(null==e||0==e)&&g>=c?(e=!0,d.iosRedraw()):(null==e||1==e)&&c>=h&&(e=!1,d.iosRedraw()),d.timers.ios.start(d.handlers.ios,d.FooBox.options.iosInterval)}},this.setup={breakpoints:function(){d.breakpoint.values=[],d.breakpoint.names="";for(var a in d.FooBox.options.breakpoints)d.FooBox.options.breakpoints.hasOwnProperty(a)&&(d.breakpoint.values.push({name:d.fixName(a),width:d.FooBox.options.breakpoints[a]}),d.breakpoint.names+=d.fixName(a)+" ");d.breakpoint.values.sort(function(a,b){return a.width-b.width})}},this.iosRedraw=function(){window.scrollTo(0,document.body.scrollTop),a(window).trigger("resize")},this.fixName=function(a){return/^fbx-[a-zA-Z0-9]/.test(a)?a:"fbx-"+a},this.style=function(){var a=new b.BPInfo(d.breakpoint.values),c=d.FooBox.modal.element;c.removeClass(d.breakpoint.names).removeClass("fbx-desktop fbx-landscape fbx-portrait").addClass(a.breakpoint).addClass(a.orientation),d.FooBox.options.hideNavOnMobile===!0?c.addClass("fbx-no-nav"):c.removeClass("fbx-no-nav")}},b.Responsive.metaCheck=function(){var b=a("meta[name=viewport]"),c=b.attr("content");if(b.length>0&&"string"==typeof c){for(var d=c.split(","),e=!1,f=!1,g=0;g<d.length;g++){var h=a.trim(d[g]);"width"==h.substring(0,5)&&-1!==h.indexOf("device-width")?e=!0:"initial-scale"==h.substring(0,13)&&(f=!0)}e&&!f&&(d.push("initial-scale=1"),c=d.join(","),b.attr("content",c))}},b.addons.register(b.Responsive,c),b.Responsive.metaCheck()}(jQuery,window.FooBox),function(a,b){var c={captions:{animation:"slide",enabled:!0,descSource:"find",hoverDelay:300,maxHeight:.4,onlyShowOnHover:!1,onlyShowOnClick:!1,overrideDesc:!1,overrideTitle:!1,prettify:!1,titleSource:"image_find"}};b.Item.prototype.captions=!1,b.Item.prototype.title=null,b.Item.prototype.description=null,b.Item.prototype.caption=null,b.Captions=function(c){this.FooBox=c,this.timers={hover:new b.Timer};var d=this;this.preinit=function(a){d.handlers.unbind(!0),a.on({"foobox.initialized foobox.reinitialized":d.handlers.initialized,"foobox.setupHtml":d.handlers.setupHtml,"foobox.setupOptions":d.handlers.setupOptions,"foobox.parseItem":d.handlers.parseItem,"foobox.onError":d.handlers.onError,"foobox.beforeClose":d.handlers.beforeClose})},this.destroy=function(){d.handlers.unbind(!0)},this.handlers={unbind:function(a){a=a||!1,a&&d.FooBox.element.off({"foobox.initialized foobox.reinitialized":d.handlers.initialized,"foobox.setupHtml":d.handlers.setupHtml,"foobox.setupOptions":d.handlers.setupOptions,"foobox.parseItem":d.handlers.parseItem,"foobox.onError":d.handlers.onError,"foobox.beforeClose":d.handlers.beforeClose}),d.FooBox.element.off({"foobox.beforeLoad":d.handlers.beforeLoad,"foobox.afterLoad":d.handlers.afterLoad}),d.FooBox.modal instanceof b.Modal&&b.isjQuery(d.FooBox.modal.element)&&d.FooBox.modal.element.off("mouseenter.captions mouseleave.captions").find(".fbx-item-current, .fbx-item-next").off("click.captions")},initialized:function(a){d.handlers.unbind(),a.fb.options.captions.enabled===!0&&(a.fb.instance.element.on({"foobox.beforeLoad":d.handlers.beforeLoad,"foobox.afterLoad":d.handlers.afterLoad,"foobox.beforeClose":d.handlers.beforeClose}),-1===a.fb.options.modalClass.indexOf("fbx-caption-toggle-only")&&a.fb.modal.find(".fbx-item-current, .fbx-item-next").on("click.captions",d.handlers.toggleCaptions),a.fb.options.captions.onlyShowOnHover===!0&&a.fb.modal.on("mouseenter.captions",".fbx-inner:not(:has(.fbx-item-error))",d.handlers.mouseenter).on("mouseleave.captions",".fbx-inner:not(:has(.fbx-item-error))",d.handlers.mouseleave))},toggleCaptions:function(b){if(a(b.target).is("img")||a(b.target).is(".fbx-close-caption")||a(b.target).is(".fbx-open-caption")){var c=d.FooBox.items.current(),e=d.FooBox.modal.element;c.captions&&!e.hasClass("fbx-error")&&(b.preventDefault(),e.find(".fbx-caption").is(".fbx-fade-caption, .fbx-slide-caption, .fbx-hide-caption")?(e.removeClass("fbx-captions-hidden"),d.show()):(e.addClass("fbx-captions-hidden"),d.hide()))}},mouseenter:function(){d.timers.hover.start(function(){d.show()},d.FooBox.options.captions.hoverDelay)},mouseleave:function(){d.timers.hover.start(function(){d.hide()},d.FooBox.options.captions.hoverDelay)},setupHtml:function(b){var c=a("<div/>",{"class":"fbx-caption"}),e=a("<a/>",{"class":"fbx-open-caption",html:"&hellip;"}).on("click.captions",d.handlers.toggleCaptions);"string"==typeof b.fb.options.modalClass&&-1!=b.fb.options.modalClass.indexOf("fbx-sticky-caption")?b.fb.modal.append(c,e):(b.fb.modal.find(".fbx-stage").append(c),b.fb.modal.find(".fbx-inner").append(e))},setupOptions:function(a){a.fb.modal.find(".fbx-caption").addClass(d.animation())},beforeClose:function(a){1!=a.fb.options.captions.onlyShowOnHover&&a.fb.modal.find(".fbx-caption").addClass("fbx-hide-caption")},beforeLoad:function(a){1!=a.fb.options.captions.onlyShowOnHover&&a.fb.modal.find(".fbx-caption").addClass(d.animation())},afterLoad:function(a){var b=a.fb.item;return!b||b.error||b.captionLoaded||(a.fb.instance.raise("foobox.alterCaption",{element:a.fb.element,item:b}),b.captionLoaded=!0),1==a.fb.options.captions.onlyShowOnHover?void d.update():void(0==a.fb.options.captions.onlyShowOnClick&&d.show())},onError:function(a){a.fb.modal.find(".fbx-caption").addClass(d.animation())},parseItem:function(c){var e=c.fb.options.captions;if(c.fb.item.captions&&0!=e.enabled){var f,g,h="";if(null!=c.fb.element){var i=a(c.fb.element).data("titleSource")||a(c.fb.instance.element).data("titleSource")||e.titleSource,j=a(c.fb.element).data("descSource")||a(c.fb.instance.element).data("descSource")||e.descSource;"none"!=i&&(f=c.fb.element.data("captionTitle")||c.fb.element.data("title")||d.text(c.fb.element,i)),"none"!=j&&(g=c.fb.element.data("captionDesc")||c.fb.element.data("description")||d.text(c.fb.element,j))}else f=c.fb.item.title,g=c.fb.item.description;f=null==f||"undefined"==typeof f?"":f+"",g=null==g||"undefined"==typeof g?"":g+"",f&&f==g&&(g=null),h="string"==typeof f&&f.length>0?b.format('<div class="fbx-caption-title">{0}</div>',f):h,h="string"==typeof g&&g.length>0?h+b.format('<div class="fbx-caption-desc">{0}</div>',g):h,c.fb.item.title=f,c.fb.item.description=g,c.fb.item.caption=h,c.fb.instance.raise("foobox.createCaption",{element:c.fb.element,item:c.fb.item})}}},this.text=function(b,c){var e;switch(c){case"find":e=a.trim(b.data("enviraCaption")||b.data("title")||b.attr("title")||b.find("img:first").data("title")||b.find("img:first").data("alt")||b.find("img:first").attr("title")||b.find("img:first").attr("alt"));break;case"image_find":e=a.trim(b.find("img:first").data("title")||b.find("img:first").data("alt")||b.find("img:first").attr("title")||b.find("img:first").attr("alt"));break;case"image":e=a.trim(b.find("img:first").data("title")||b.find("img:first").attr("title"));break;case"image_alt":e=a.trim(b.find("img:first").data("alt")||b.find("img:first").attr("alt"));break;case"anchor":e=a.trim(b.data("enviraCaption")||b.data("title")||b.attr("title"));break;default:e=null}return d.FooBox.options.captions.prettify&&(e=d.prettifier(e)),e},this.animation=function(){switch(d.FooBox.options.captions.animation){case"fade":return"fbx-fade-caption";case"slide":return"fbx-slide-caption";default:return"fbx-hide-caption"}},this.hide=function(){var a=d.FooBox.items.current(),b=d.FooBox.modal.element.find(".fbx-caption");return d.FooBox.options.captions.enabled&&a.captions&&"string"==typeof a.caption&&0!=a.caption.length?(b.addClass(d.animation()),void d.FooBox.raise("foobox.captionsHide",{item:a})):void b.addClass("fbx-hide-caption")},this.show=function(){var a=d.FooBox,c=a.items.current(),e=a.modal.element.find(".fbx-caption");return!a.options.captions.enabled||!c.captions||"string"!=typeof c.caption||0==c.caption.length||a.modal.element.hasClass("fbx-captions-hidden")||b.isjQuery(c.element)&&c.element.hasClass("no-captions")?void e.addClass("fbx-hide-caption"):(d.update(),e.removeClass("fbx-fade-caption fbx-slide-caption fbx-hide-caption"),void d.FooBox.raise("foobox.captionsShow",{item:c}))},this.update=function(){var c=d.FooBox.items.current(),e=d.FooBox.modal.element.find(".fbx-caption");e.html(c.caption).find('a[href^="#"]').filter(function(){var c=a(this).attr("href"),d=a(c),e=d.data("fbx_instance")||d.data("fbx_p_instance");return d.length>0&&e instanceof b.Instance?(a(this).data("hrefTarget",d.get(0)),!0):!1}).off("click.captions").on("click.captions",function(c){c.preventDefault();var e=a(this).data("hrefTarget"),f=a(e).data("fbx_instance")||a(e).data("fbx_p_instance");return f instanceof b.Instance&&(d.FooBox.modal.close(),f.items.indexes.set(e.index),f.modal.show()),!1}),a("<a/>",{"class":"fbx-close-caption",html:"&times;"}).on("click.captions",d.handlers.toggleCaptions).prependTo(e)},this.prettifier=function(a){return"string"!=typeof a?null:(a=a.replace(/\s*-\d+/g,"").replace(/\s*_\d+/g,"").replace(/-/g," ").replace(/_/g," "),a=a.replace(/\w\S*/g,function(a){return-1!=a.indexOf("#")?a:a.charAt(0).toUpperCase()+a.substr(1).toLowerCase()}))}},b.addons.register(b.Captions,c)}(jQuery,window.FooBox),function(a,b){var c={wordpress:{enabled:!1}};b.Wordpress=function(c){this.FooBox=c;var d=this;this.preinit=function(a){d.handlers.unbind(!0),a.on("foobox.createCaption",d.handlers.onCreateCaption)},this.destroy=function(){d.handlers.unbind(!0)},this.handlers={unbind:function(a){a=a||!1,a&&d.FooBox.element.off("foobox.createCaption",d.handlers.onCreateCaption)},onCreateCaption:function(c){var d=c.fb.options,e=c.fb.instance.element,f=c.fb.item.element,g="",h=c.fb.item.title,i=c.fb.item.description;if(1==d.wordpress.enabled&&b.isjQuery(f)){var j=f.data("captionTitle")||f.data("title"),k=f.data("captionDesc")||f.data("description");if(e.hasClass("gallery"))d.captions.overrideTitle===!1&&(h=j||f.parents(".gallery-item:first").find(".wp-caption-text:first").html()||f.parents(".gallery-item:first").find(".gallery-caption:first").html()||h||""),d.captions.overrideDesc===!1&&(i=k||f.find("img").attr("alt")||i||"");else if(e.hasClass("wp-caption")||f.hasClass("wp-caption"))d.captions.overrideTitle===!1&&(h=j||f.find("img").attr("title")||f.parents(".wp-caption:first").find(".wp-caption-text:first").html()||h||""),d.captions.overrideDesc===!1&&(i=k||f.find("img").attr("alt")||i||"");else if(f.parents(".wp-caption:first").length>0)d.captions.overrideTitle===!1&&(h=j||f.parents(".wp-caption:first").find("img").attr("title")||f.parents(".wp-caption:first").find(".wp-caption-text:first").html()||h||""),d.captions.overrideDesc===!1&&(i=k||f.parents(".wp-caption:first").find("img").attr("alt")||i||"");else if(e.hasClass("tiled-gallery"))d.captions.overrideTitle===!1&&(h=j||f.parents(".tiled-gallery-item:first").find(".tiled-gallery-caption").html()||f.find("img").data("image-title")||f.find("img").attr("title")||h||""),d.captions.overrideDesc===!1&&(i=k||a.trim(f.find("img").data("image-description")).replace(/(^<p>)|(<\/p>$)/gi,"")||i||"");else{if(!e.hasClass("wp-block-gallery")&&!e.hasClass("wp-block-image"))return;d.captions.overrideTitle===!1&&(h=j||f.parents("figure:first").find("figcaption").html()||h||""),d.captions.overrideDesc===!1&&(i=k||i||"")}h+="",i+="",h=h||"",i=i||"";var l=a("<div/>"),m=l.html(h).text(),n=l.html(i).text();(a.trim(h)==a.trim(i)||m==n)&&(i=null),g="string"==typeof h&&h.length>0?b.format('<div class="fbx-caption-title">{0}</div>',h):g,g="string"==typeof i&&i.length>0?g+b.format('<div class="fbx-caption-desc">{0}</div>',i):g,c.fb.item.title=h,c.fb.item.description=i,c.fb.item.caption=g}}}},b.addons.register(b.Wordpress,c)}(jQuery,window.FooBox),function(a,b){var c={pan:{enabled:!0,showOverview:!0,position:"fbx-top-right"}};b.Pan=function(c){this.FooBox=c;var d,e,f,g,h=this,i=!1,j=!1,k=null,l=null,m=null,n=null,o=null,p=0;this.preinit=function(a){h.handlers.unbind(!0),a.on({"foobox.initialized foobox.reinitialized":h.handlers.initialized})},this.destroy=function(){h.handlers.unbind(!0)},this.setOverview=function(){var a=parseInt(n.css("max-width")),b=parseInt(n.css("max-height")),c=a/k.width,d=b/k.height;p=c>d?d:c;var e=k.width*p,f=k.height*p;n.width(e).height(f).css("background-image","url("+k.url+")")},this.setViewport=function(){var a=m.width(),b=m.height(),c=a*p,d=b*p;o.width(c).height(d)},this.disableCaptionImageClick=function(){var a=h.FooBox.modal.element,c=b.objects.get("addons",h.FooBox,function(a){return a instanceof b.Captions});c&&a.find(".fbx-item-current, .fbx-item-next").off("click.captions",c.handlers.toggleCaptions)},this.enableCaptionImageClick=function(){var a=h.FooBox.modal.element,c=b.objects.get("addons",h.FooBox,function(a){return a instanceof b.Captions});c&&a.find(".fbx-item-current, .fbx-item-next").on("click.captions",c.handlers.toggleCaptions)},this.handlers={unbind:function(a){a=a||!1,a&&h.FooBox.element.off({"foobox.initialized foobox.reinitialized":h.handlers.initialized}),h.FooBox.element.off({"foobox.afterLoad":h.handlers.onAfterLoad,"foobox.showOverflow":h.handlers.onShowOverflow,"foobox.hideOverflow foobox.beforeLoad":h.handlers.onHideOverflow}),h.FooBox.modal instanceof b.Modal&&b.isjQuery(h.FooBox.modal.element)&&h.FooBox.modal.element.find(".fbx-stage").off({mousedown:h.handlers.onMouseDown,mousemove:h.handlers.onMouseMove,mouseup:h.handlers.onMouseUp}).removeClass("fbx-pannable fbx-panning")},initialized:function(a){h.handlers.unbind(),a.fb.options.pan.enabled===!0&&h.FooBox.element.on({"foobox.close":h.handlers.onMouseUp,"foobox.afterLoad":h.handlers.onAfterLoad,"foobox.showOverflow":h.handlers.onShowOverflow,"foobox.hideOverflow foobox.beforeLoad":h.handlers.onHideOverflow})},onAfterLoad:function(a){i===!0&&"image"==a.fb.item.handler.type&&(h.setOverview(),h.setViewport())},onShowOverflow:function(b){"image"==b.fb.item.handler.type&&(i===!0?(h.setOverview(),h.setViewport()):(i=!0,h.disableCaptionImageClick(),k=b.fb.item,m=h.FooBox.modal.element.addClass("fbx-pannable-item").find(".fbx-stage").on({mousedown:h.handlers.onMouseDown,mousemove:h.handlers.onMouseMove,"mouseup mouseleave":h.handlers.onMouseUp}).addClass("fbx-pannable"),l=b.fb.container,b.fb.options.pan.showOverview===!0&&(n=a("<div/>",{"class":"fbx-pan-overview"}).addClass(b.fb.options.pan.position).on("click",h.handlers.onOverviewClick).appendTo(m),o=a("<div/>",{"class":"fbx-pan-viewport"}).appendTo(n),l.on("scroll",h.handlers.onScroll),h.setOverview(),h.setViewport())))},onHideOverflow:function(a){i===!0&&(i=!1,h.enableCaptionImageClick(),a.fb.options.pan.showOverview===!0&&n.remove(),l.off("scroll",h.handlers.onScroll),m.off({mousedown:h.handlers.onMouseDown,mousemove:h.handlers.onMouseMove,"mouseup mouseleave":h.handlers.onMouseUp}).removeClass("fbx-pannable fbx-panning"),h.FooBox.modal.element.removeClass("fbx-pannable-item"))},onMouseDown:function(a){if(i===!0){a.preventDefault(),m.addClass("fbx-panning");var b=l.get(0);j=!0,d=a.pageX,e=a.pageY,f=b.scrollLeft,g=b.scrollTop}},onMouseMove:function(a){if(j===!0&&i===!0){var b=l.get(0);b.scrollLeft=f-(a.pageX-d),b.scrollTop=g-(a.pageY-e)}},onMouseUp:function(){i===!0&&(j=!1,m.removeClass("fbx-panning"),d=0,e=0,f=0,g=0)},onScroll:function(){var a=l.get(0),b=a.scrollTop/k.height*100,c=a.scrollLeft/k.width*100;o.css({top:b+"%",left:c+"%"})},onOverviewClick:function(b){var c=a(this).offset(),d=(b.pageX-c.left)/p,e=(b.pageY-c.top)/p,f=d-l.width()/2,g=e-l.height()/2;l.animate({scrollTop:g,scrollLeft:f},300)}}},b.addons.register(b.Pan,c)}(jQuery,window.FooBox),function(a,b){var c={swipe:{enabled:!0,min:80}};b.Swipe=function(a){this.FooBox=a,this.isMoving=!1;var c,d=this;this.preinit=function(a){d.handlers.unbind(!0),a.on("foobox.initialized foobox.reinitialized",d.handlers.initialized)},this.destroy=function(){d.handlers.unbind(!0)},this.handlers={unbind:function(a){a=a||!1,a&&d.FooBox.element.off("foobox.initialized foobox.reinitialized",d.handlers.initialized),d.FooBox.modal instanceof b.Modal&&b.isjQuery(d.FooBox.modal.element)&&d.FooBox.modal.element.off({touchstart:d.handlers.onTouchStart,touchmove:d.handlers.onTouchMove})},initialized:function(a){d.handlers.unbind(),a.fb.options.swipe.enabled===!0&&a.fb.modal.on("touchstart",d.handlers.onTouchStart)},onTouchStart:function(a){var b=a.originalEvent.touches||a.touches;1==b.length&&d.FooBox.items.multiple()&&(c=b[0].pageX,d.isMoving=!0,d.FooBox.modal.element.on("touchmove",d.handlers.onTouchMove))},onTouchMove:function(a){if(d.isMoving){var b=a.originalEvent.touches||a.touches,e=b[0].pageX,f=c-e;Math.abs(f)>=d.FooBox.options.swipe.min&&(d.cancelTouch(),f>0?(d.FooBox.raise("foobox.swipeRight"),d.FooBox.modal.next()):(d.FooBox.raise("foobox.swipeLeft"),d.FooBox.modal.prev()))}}},this.cancelTouch=function(){d.FooBox.modal.element.off("touchmove",d.handlers.onTouchMove),c=null,d.isMoving=!1}},b.addons.register(b.Swipe,c)}(jQuery,window.FooBox);
freemius/.codeclimate.yml DELETED
@@ -1,19 +0,0 @@
1
- engines:
2
- phpcodesniffer:
3
- enabled: true
4
- config:
5
- standard: "WordPress"
6
- checks:
7
- Squiz Commenting InlineComment InvalidEndChar:
8
- enabled: false
9
- Squiz Commenting InlineComment SpacingBefore:
10
- enabled: false
11
- Squiz Commenting InlineComment WrongStyle:
12
- enabled: false
13
- Generic Commenting DocComment MissingShort:
14
- enabled: false
15
- Generic WhiteSpace ScopeIndent IncorrectExact:
16
- enabled: false
17
- ratings:
18
- paths:
19
- - "**.php"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
freemius/.travis.yml DELETED
@@ -1,11 +0,0 @@
1
- sudo: false
2
-
3
- language: php
4
-
5
- php:
6
- - 5.3
7
- - 5.4
8
- - 5.5
9
- - 5.6
10
- - 7.0
11
- - hhvm
 
 
 
 
 
 
 
 
 
 
 
freemius/README.md DELETED
@@ -1,253 +0,0 @@
1
- Freemius WordPress SDK
2
- ======================
3
-
4
- [Monetization](https://freemius.com/wordpress/), [analytics](https://freemius.com/wordpress/insights/), and marketing automation platform for plugin & theme developers. Freemius empower developers to create prosperous subscription based businesses.
5
-
6
- You can see some of the WordPress.org plugins & themes that are utilizing the power of Freemius here:
7
-
8
- https://includewp.com/freemius/#focus
9
-
10
- If you are a WordPress plugin or theme developer and you are interested to monetize with Freemius you can [sign-up here for free](https://dashboard.freemius.com/register/):
11
-
12
- https://dashboard.freemius.com/register/
13
-
14
- **Below you'll find the integration instructions for our WordPress SDK.**
15
-
16
- ## Code Documentation
17
-
18
- You can find the SDK's PHP-Doc documentation here:
19
- https://codedoc.pub/freemius/wordpress-sdk/master/
20
-
21
- ## Initializing the SDK
22
-
23
- Copy the code below and paste it into the top of your main plugin's PHP file, right after the plugin's header comment:
24
-
25
- ```php
26
- <?php
27
- // Create a helper function for easy SDK access.
28
- function my_prefix_fs() {
29
- global $my_prefix_fs;
30
- if ( ! isset( $my_prefix_fs ) ) {
31
- // Include Freemius SDK.
32
- require_once dirname(__FILE__) . '/freemius/start.php';
33
-
34
- $my_prefix_fs = fs_dynamic_init( array(
35
- 'id' => '1234',
36
- 'slug' => 'my-plugin-slug',
37
- 'menu_slug' => 'my_menu_slug', // You can also use __FILE__
38
- 'public_key' => 'pk_MY_PUBLIC_KEY',
39
- 'is_live' => true,
40
- 'is_premium' => true,
41
- 'has_addons' => false,
42
- 'has_paid_plans' => false,
43
- // Set the SDK to work in a sandbox mode (for development & testing).
44
- // IMPORTANT: MAKE SURE TO REMOVE SECRET KEY BEFORE DEPLOYMENT.
45
- 'secret_key' => 'sk_MY_SECRET_KEY',
46
- ) );
47
- }
48
-
49
- return $my_prefix_fs;
50
- }
51
-
52
- // Init Freemius.
53
- my_prefix_fs();
54
- ?>
55
- ```
56
-
57
- - **1234** - Replace with your plugin's ID.
58
- - **pk_MY_PUBLIC_KEY** - Replace with your plugin's public key.
59
- - **sk_MY_SECRET_KEY** - Replace with your plugin's secret key.
60
- - **my-plugin-slug** - Replace with your plugin's WordPress.org slug.
61
- - **my_menu_slug** - Replace with your admin dashboard settings menu slug.
62
-
63
-
64
- ## Usage example
65
-
66
- You can call the SDK by using the shortcode function:
67
-
68
- ```php
69
- <?php my_prefix_fs()->get_upgrade_url(); ?>
70
- ```
71
-
72
- Or when calling Freemius multiple times in a scope, it's recommended to use it with the global variable:
73
-
74
- ```php
75
- <?php
76
- global $my_prefix_fs;
77
- $my_prefix_fs->get_account_url();
78
- ?>
79
- ```
80
-
81
- ## Adding license based logic examples
82
-
83
- Add marketing content to encourage your users to upgrade for your paid version:
84
-
85
- ```php
86
- <?php
87
- if ( my_prefix_fs()->is_not_paying() ) {
88
- echo '<section><h1>' . esc_html__('Awesome Premium Features', 'my-plugin-slug') . '</h1>';
89
- echo '<a href="' . my_prefix_fs()->get_upgrade_url() . '">' .
90
- esc_html__('Upgrade Now!', 'my-plugin-slug') .
91
- '</a>';
92
- echo '</section>';
93
- }
94
- ?>
95
- ```
96
-
97
- Add logic which will only be available in your premium plugin version:
98
-
99
- ```php
100
- <?php
101
- // This "if" block will be auto removed from the Free version.
102
- if ( my_prefix_fs()->is__premium_only() ) {
103
-
104
- // ... premium only logic ...
105
-
106
- }
107
- ?>
108
- ```
109
-
110
- To add a function which will only be available in your premium plugin version, simply add __premium_only as the suffix of the function name. Just make sure that all lines that call that method directly or by hooks, are also wrapped in premium only logic:
111
-
112
- ```php
113
- <?php
114
- class My_Plugin {
115
- function init() {
116
- ...
117
-
118
- // This "if" block will be auto removed from the free version.
119
- if ( my_prefix_fs()->is__premium_only() ) {
120
- // Init premium version.
121
- $this->admin_init__premium_only();
122
-
123
- add_action( 'admin_init', array( &$this, 'admin_init_hook__premium_only' );
124
- }
125
-
126
- ...
127
- }
128
-
129
- // This method will be only included in the premium version.
130
- function admin_init__premium_only() {
131
- ...
132
- }
133
-
134
- // This method will be only included in the premium version.
135
- function admin_init_hook__premium_only() {
136
- ...
137
- }
138
- }
139
- ?>
140
- ```
141
-
142
- Add logic which will only be executed for customers in your 'professional' plan:
143
-
144
- ```php
145
- <?php
146
- if ( my_prefix_fs()->is_plan('professional', true) ) {
147
- // .. logic related to Professional plan only ...
148
- }
149
- ?>
150
- ```
151
-
152
- Add logic which will only be executed for customers in your 'professional' plan or higher plans:
153
-
154
- ```php
155
- <?php
156
- if ( my_prefix_fs()->is_plan('professional') ) {
157
- // ... logic related to Professional plan and higher plans ...
158
- }
159
- ?>
160
- ```
161
-
162
- Add logic which will only be available in your premium plugin version AND will only be executed for customers in your 'professional' plan (and higher plans):
163
-
164
- ```php
165
- <?php
166
- // This "if" block will be auto removed from the Free version.
167
- if ( my_prefix_fs()->is_plan__premium_only('professional') ) {
168
- // ... logic related to Professional plan and higher plans ...
169
- }
170
- ?>
171
- ```
172
-
173
- Add logic only for users in trial:
174
-
175
- ```php
176
- <?php
177
- if ( my_prefix_fs()->is_trial() ) {
178
- // ... logic for users in trial ...
179
- }
180
- ?>
181
- ```
182
-
183
- Add logic for specified paid plan:
184
-
185
- ```php
186
- <?php
187
- // This "if" block will be auto removed from the Free version.
188
- if ( my_prefix_fs()->is__premium_only() ) {
189
- if ( my_prefix_fs()->is_plan( 'professional', true ) ) {
190
-
191
- // ... logic related to Professional plan only ...
192
-
193
- } else if ( my_prefix_fs()->is_plan( 'business' ) ) {
194
-
195
- // ... logic related to Business plan and higher plans ...
196
-
197
- }
198
- }
199
- ?>
200
- ```
201
-
202
- ## Excluding files and folders from the free plugin version
203
- There are two ways to exclude files from your free version.
204
-
205
- 1. Add `__premium_only` just before the file extension. For example, functions__premium_only.php will be only included in the premium plugin version. This works for all type of files, not only PHP.
206
- 2. Add `@fs_premium_only` a sepcial meta tag to the plugin's main PHP file header. Example:
207
- ```php
208
- <?php
209
- /**
210
- * Plugin Name: My Very Awesome Plugin
211
- * Plugin URI: http://my-awesome-plugin.com
212
- * Description: Create and manage Awesomeness right in WordPress.
213
- * Version: 1.0.0
214
- * Author: Awesomattic
215
- * Author URI: http://my-awesome-plugin.com/me/
216
- * License: GPLv2
217
- * Text Domain: myplugin
218
- * Domain Path: /langs
219
- *
220
- * @fs_premium_only /lib/functions.php, /premium-files/
221
- */
222
-
223
- if ( ! defined( 'ABSPATH' ) ) {
224
- exit;
225
- }
226
-
227
- // ... my code ...
228
- ?>
229
- ```
230
- The file `/lib/functions.php` and the directory `/premium-files/` will be removed from the free plugin version.
231
-
232
- # WordPress.org Compliance
233
- Based on [WordPress.org Guidelines](https://wordpress.org/plugins/about/guidelines/) you are not allowed to submit a plugin that has premium code in it:
234
- > All code hosted by WordPress.org servers must be free and fully-functional. If you want to sell advanced features for a plugin (such as a "pro" version), then you must sell and serve that code from your own site, we will not host it on our servers.
235
-
236
- Therefore, if you want to deploy your free plugin's version to WordPress.org, make sure you wrap all your premium code with `if ( my_prefix_fs()->{{ method }}__premium_only() )` or the other methods provided to exclude premium features & files from the free version.
237
-
238
- ## Deployment
239
- Zip your plugin's root folder and upload it in the Deployment section in the *Freemius Developer's Dashboard*.
240
- The plugin will be scanned and processed by a custom developed *PHP Processor* which will auto-generate two versions of your plugin:
241
-
242
- 1. **Premium version**: Identical to your uploaded version, including all code (except your `secret_key`). Will be enabled for download ONLY for your paying or in trial customers.
243
- 2. **Free version**: The code stripped from all your paid features (based on the logic added wrapped in `{ method }__premium_only()`).
244
-
245
- The free version is the one that you should give your users to download. Therefore, download the free generated version and upload to your site. Or, if your plugin was WordPress.org complaint and you made sure to exclude all your premium code with the different provided techniques, you can deploy the downloaded free version to the .org repo.
246
-
247
- ## Reporting Bugs
248
- Email dev [at] freemius [dot] com
249
-
250
- ## FAQ
251
-
252
- ## Copyright
253
- Freemius, Inc.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
freemius/assets/css/admin/common.css CHANGED
@@ -1,2 +1,2 @@
1
- .theme-browser .theme .fs-premium-theme-badge{position:absolute;top:10px;right:0;background:#71ae00;color:#fff;text-transform:uppercase;padding:5px 10px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;font-weight:bold;border-right:0;-moz-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);font-size:1.1em}#iframe{line-height:0;font-size:0}.fs-full-size-wrapper{margin:40px 0 -65px -20px}@media (max-width: 600px){.fs-full-size-wrapper{margin:0 0 -65px -10px}}
2
- .fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px !important}.fs-notice.success{color:green}.fs-notice.promotion{border-color:#00a0d2 !important;background-color:#f2fcff !important}.fs-notice .fs-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-close{cursor:pointer;color:#aaa;float:right}.fs-notice .fs-close:hover{color:#666}.fs-notice .fs-close>*{margin-top:7px;display:inline-block}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,0.3);color:#fff;padding:2px 10px;position:absolute;top:100%;bottom:auto;right:auto;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;left:10px;font-size:12px;font-weight:bold;cursor:auto}div.fs-notice.updated,div.fs-notice.success,div.fs-notice.promotion{display:block !important}.rtl .fs-notice .fs-close{float:left}.fs-secure-notice{position:fixed;top:32px;left:160px;right:0;background:#ebfdeb;padding:10px 20px;color:green;z-index:9999;-moz-box-shadow:0 2px 2px rgba(6,113,6,0.3);-webkit-box-shadow:0 2px 2px rgba(6,113,6,0.3);box-shadow:0 2px 2px rgba(6,113,6,0.3);opacity:0.95;filter:alpha(opacity=95)}.fs-secure-notice:hover{opacity:1;filter:alpha(opacity=100)}.fs-secure-notice a.fs-security-proof{color:green;text-decoration:none}@media screen and (max-width: 960px){.fs-secure-notice{left:36px}}@media screen and (max-width: 600px){.fs-secure-notice{display:none}}@media screen and (max-width: 500px){#fs_promo_tab{display:none}}@media screen and (max-width: 782px){.fs-secure-notice{left:0;top:46px;text-align:center}}span.fs-submenu-item.fs-sub:before{content:'\21B3';padding:0 5px}.rtl span.fs-submenu-item.fs-sub:before{content:'\21B2'}.fs-submenu-item.pricing.upgrade-mode{color:greenyellow}.fs-submenu-item.pricing.trial-mode{color:#83e2ff}#adminmenu .update-plugins.fs-trial{background-color:#00b9eb}.fs-ajax-spinner{border:0;width:20px;height:20px;margin-right:5px;vertical-align:sub;display:inline-block;background:url("../../../../../../../wp-admin/images/wpspin_light-2x.gif");background-size:contain}.wrap.fs-section h2{text-align:left}
1
+ .theme-browser .theme .fs-premium-theme-badge{position:absolute;top:10px;right:0;background:#71ae00;color:#fff;text-transform:uppercase;padding:5px 10px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;font-weight:bold;border-right:0;-moz-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);font-size:1.1em}#fs_frame{line-height:0;font-size:0}.fs-full-size-wrapper{margin:40px 0 -65px -20px}@media (max-width: 600px){.fs-full-size-wrapper{margin:0 0 -65px -10px}}
2
+ .fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px !important}.fs-notice.success{color:green}.fs-notice.promotion{border-color:#00a0d2 !important;background-color:#f2fcff !important}.fs-notice .fs-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-close{cursor:pointer;color:#aaa;float:right}.fs-notice .fs-close:hover{color:#666}.fs-notice .fs-close>*{margin-top:7px;display:inline-block}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,0.3);color:#fff;padding:2px 10px;position:absolute;top:100%;bottom:auto;right:auto;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;left:10px;font-size:12px;font-weight:bold;cursor:auto}div.fs-notice.updated,div.fs-notice.success,div.fs-notice.promotion{display:block !important}.rtl .fs-notice .fs-close{float:left}.fs-secure-notice{position:fixed;top:32px;left:160px;right:0;background:#ebfdeb;padding:10px 20px;color:green;z-index:9999;-moz-box-shadow:0 2px 2px rgba(6,113,6,0.3);-webkit-box-shadow:0 2px 2px rgba(6,113,6,0.3);box-shadow:0 2px 2px rgba(6,113,6,0.3);opacity:0.95;filter:alpha(opacity=95)}.fs-secure-notice:hover{opacity:1;filter:alpha(opacity=100)}.fs-secure-notice a.fs-security-proof{color:green;text-decoration:none}@media screen and (max-width: 960px){.fs-secure-notice{left:36px}}@media screen and (max-width: 600px){.fs-secure-notice{display:none}}@media screen and (max-width: 500px){#fs_promo_tab{display:none}}@media screen and (max-width: 782px){.fs-secure-notice{left:0;top:46px;text-align:center}}span.fs-submenu-item.fs-sub:before{content:'\21B3';padding:0 5px}.rtl span.fs-submenu-item.fs-sub:before{content:'\21B2'}.fs-submenu-item.pricing.upgrade-mode{color:greenyellow}.fs-submenu-item.pricing.trial-mode{color:#83e2ff}#adminmenu .update-plugins.fs-trial{background-color:#00b9eb}.fs-ajax-spinner{border:0;width:20px;height:20px;margin-right:5px;vertical-align:sub;display:inline-block;background:url("/wp-admin/images/wpspin_light-2x.gif");background-size:contain}.wrap.fs-section h2{text-align:left}.plugins p.fs-upgrade-notice{border:0;background-color:#d54e21;padding:10px;color:#f9f9f9;margin-top:10px}
freemius/assets/css/admin/connect.css CHANGED
@@ -1 +1 @@
1
- #fs_connect{width:480px;-moz-box-shadow:0px 1px 2px rgba(0,0,0,0.3);-webkit-box-shadow:0px 1px 2px rgba(0,0,0,0.3);box-shadow:0px 1px 2px rgba(0,0,0,0.3);margin:20px 0}@media screen and (max-width: 479px){#fs_connect{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;width:auto;margin:0 0 0 -10px}}#fs_connect .fs-content{background:#fff;padding:15px 20px}#fs_connect .fs-content .fs-error{background:snow;color:#d3135a;border:1px solid #d3135a;-moz-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);text-align:center;padding:5px;margin-bottom:10px}#fs_connect .fs-content p{margin:0;padding:0;font-size:1.2em}#fs_connect .fs-license-key-container{position:relative;width:280px;margin:10px auto 0 auto}#fs_connect .fs-license-key-container input{width:100%}#fs_connect .fs-license-key-container .dashicons{position:absolute;top:5px;right:5px}#fs_connect.require-license-key #sites_list_container td{cursor:pointer}#fs_connect #delegate_to_site_admins{margin-right:15px;float:right;height:26px;vertical-align:middle;line-height:37px;font-weight:bold;border-bottom:1px dashed;text-decoration:none}#fs_connect #delegate_to_site_admins.rtl{margin-left:15px;margin-right:0}#fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}#fs_connect .fs-actions .button{padding:0 10px 1px;line-height:35px;height:37px;font-size:16px;margin-bottom:0}#fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}#fs_connect .fs-actions .button.button-primary{padding-right:15px;padding-left:15px}#fs_connect .fs-actions .button.button-primary:after{content:' \279C'}#fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}#fs_connect .fs-actions .button.button-secondary{float:right}#fs_connect.fs-anonymous-disabled .fs-actions .button.button-primary{width:100%}#fs_connect .fs-permissions{padding:10px 20px;background:#FEFEFE;-moz-transition:background 0.5s ease;-o-transition:background 0.5s ease;-ms-transition:background 0.5s ease;-webkit-transition:background 0.5s ease;transition:background 0.5s ease}#fs_connect .fs-permissions .fs-license-sync-disclaimer{text-align:center;margin-top:0}#fs_connect .fs-permissions .fs-trigger{font-size:0.9em;text-decoration:none;text-align:center;display:block}#fs_connect .fs-permissions ul{height:0;overflow:hidden;margin:0}#fs_connect .fs-permissions ul li{margin-bottom:12px}#fs_connect .fs-permissions ul li:last-child{margin-bottom:0}#fs_connect .fs-permissions ul li i.dashicons{float:left;font-size:40px;width:40px;height:40px}#fs_connect .fs-permissions ul li div{margin-left:55px}#fs_connect .fs-permissions ul li div span{font-weight:bold;text-transform:uppercase;color:#23282d}#fs_connect .fs-permissions ul li div p{margin:2px 0 0 0}#fs_connect .fs-permissions.fs-open{background:#fff}#fs_connect .fs-permissions.fs-open ul{height:auto;margin:20px 20px 10px 20px}@media screen and (max-width: 479px){#fs_connect .fs-permissions{background:#fff}#fs_connect .fs-permissions .fs-trigger{display:none}#fs_connect .fs-permissions ul{height:auto;margin:20px}}#fs_connect .fs-freemium-licensing{padding:8px;background:#777;color:#fff}#fs_connect .fs-freemium-licensing p{text-align:center;display:block;margin:0;padding:0}#fs_connect .fs-freemium-licensing a{color:#C2EEFF;text-decoration:underline}#fs_connect .fs-visual{padding:12px;line-height:0;background:#fafafa;height:80px;position:relative}#fs_connect .fs-visual .fs-site-icon{position:absolute;left:20px;top:10px}#fs_connect .fs-visual .fs-connect-logo{position:absolute;right:20px;top:10px}#fs_connect .fs-visual .fs-plugin-icon{position:absolute;top:10px;left:50%;margin-left:-40px}#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-site-icon,#fs_connect .fs-visual img,#fs_connect .fs-visual object{width:80px;height:80px}#fs_connect .fs-visual .dashicons-wordpress{font-size:64px;background:#01749a;color:#fff;width:64px;height:64px;padding:8px}#fs_connect .fs-visual .dashicons-plus{position:absolute;top:50%;font-size:30px;margin-top:-10px;color:#bbb}#fs_connect .fs-visual .dashicons-plus.fs-first{left:28%}#fs_connect .fs-visual .dashicons-plus.fs-second{left:65%}#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-connect-logo,#fs_connect .fs-visual .fs-site-icon{border:1px solid #ccc;padding:1px;background:#fff}#fs_connect .fs-terms{text-align:center;font-size:0.85em;padding:5px;background:rgba(0,0,0,0.05)}#fs_connect .fs-terms,#fs_connect .fs-terms a{color:#999}#fs_connect .fs-terms a{text-decoration:none}#multisite_options_container{margin-top:10px;border:1px solid #ccc;padding:5px}#multisite_options_container a{text-decoration:none}#multisite_options_container a:focus{box-shadow:none}#multisite_options_container a.selected{font-weight:bold}#multisite_options_container.apply-on-all-sites{border:0 none;padding:0}#multisite_options_container.apply-on-all-sites #all_sites_options{border-spacing:0}#multisite_options_container.apply-on-all-sites #all_sites_options td:not(:first-child){display:none}#multisite_options_container #sites_list_container{display:none;overflow:auto}#multisite_options_container #sites_list_container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-tooltip-trigger{position:relative}.fs-tooltip-trigger:not(a){cursor:help}.fs-tooltip-trigger .fs-tooltip{opacity:0;visibility:hidden;-moz-transition:opacity 0.3s ease-in-out;-o-transition:opacity 0.3s ease-in-out;-ms-transition:opacity 0.3s ease-in-out;-webkit-transition:opacity 0.3s ease-in-out;transition:opacity 0.3s ease-in-out;position:absolute;background:rgba(0,0,0,0.8);color:#fff;font-family:'arial', serif;font-size:12px;padding:10px;z-index:999999;bottom:100%;margin-bottom:5px;left:0;right:0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;-moz-box-shadow:1px 1px 1px rgba(0,0,0,0.2);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.2);box-shadow:1px 1px 1px rgba(0,0,0,0.2);line-height:1.3em;font-weight:bold;text-align:left}.rtl .fs-tooltip-trigger .fs-tooltip{text-align:right}.fs-tooltip-trigger .fs-tooltip::after{content:' ';display:block;width:0;height:0;border-style:solid;border-width:5px 5px 0 5px;border-color:rgba(0,0,0,0.8) transparent transparent transparent;position:absolute;top:100%;left:21px}.rtl .fs-tooltip-trigger .fs-tooltip::after{right:21px;left:auto}.fs-tooltip-trigger:hover .fs-tooltip{visibility:visible;opacity:1}#fs_marketing_optin{display:none;margin-top:10px;border:1px solid #ccc;padding:10px;line-height:1.5em}#fs_marketing_optin .fs-message{display:block;margin-bottom:5px;font-size:1.05em;font-weight:600}#fs_marketing_optin.error{border:1px solid #d3135a;background:#fee}#fs_marketing_optin.error .fs-message{color:#d3135a}#fs_marketing_optin .fs-input-container{margin-top:5px}#fs_marketing_optin .fs-input-container label{margin-top:5px;display:block}#fs_marketing_optin .fs-input-container label input{float:left;margin:1px 0 0 0}#fs_marketing_optin .fs-input-container label:first-child{display:block;margin-bottom:2px}#fs_marketing_optin .fs-input-label{display:block;margin-left:20px}#fs_marketing_optin .fs-input-label .underlined{text-decoration:underline}.rtl #fs_marketing_optin .fs-input-container label input{float:right}.rtl #fs_marketing_optin .fs-input-label{margin-left:0;margin-right:20px}.rtl #fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}.rtl #fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}.rtl #fs_connect .fs-actions .button.button-primary:after{content:' \000bb'}.rtl #fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}.rtl #fs_connect .fs-actions .button.button-secondary{float:left}.rtl #fs_connect .fs-permissions ul li div{margin-right:55px;margin-left:0}.rtl #fs_connect .fs-permissions ul li i.dashicons{float:right}.rtl #fs_connect .fs-visual .fs-site-icon{right:20px;left:auto}.rtl #fs_connect .fs-visual .fs-connect-logo{right:auto;left:20px}#fs_theme_connect_wrapper{position:fixed;top:0;height:100%;width:100%;z-index:99990;background:rgba(0,0,0,0.75);text-align:center;overflow-y:auto}#fs_theme_connect_wrapper:before{content:"";display:inline-block;vertical-align:middle;height:100%}#fs_theme_connect_wrapper>button.close{color:white;cursor:pointer;height:40px;width:40px;position:absolute;right:0;border:0;background-color:transparent;top:32px}#fs_theme_connect_wrapper #fs_connect{top:0;text-align:left;display:inline-block;vertical-align:middle;margin-top:52px;margin-bottom:20px}#fs_theme_connect_wrapper #fs_connect .fs-terms{background:rgba(140,140,140,0.64)}#fs_theme_connect_wrapper #fs_connect .fs-terms,#fs_theme_connect_wrapper #fs_connect .fs-terms a{color:#c5c5c5}.wp-pointer-content #fs_connect{margin:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.fs-opt-in-pointer .wp-pointer-content{padding:0}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow{border-bottom-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow-inner{border-bottom-color:#fafafa}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow{border-top-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow-inner{border-top-color:#fafafa}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow{border-right-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow-inner{border-right-color:#fafafa}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow{border-left-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow-inner{border-left-color:#fafafa}
1
+ #fs_connect{width:480px;-moz-box-shadow:0px 1px 2px rgba(0,0,0,0.3);-webkit-box-shadow:0px 1px 2px rgba(0,0,0,0.3);box-shadow:0px 1px 2px rgba(0,0,0,0.3);margin:20px 0}@media screen and (max-width: 479px){#fs_connect{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;width:auto;margin:0 0 0 -10px}}#fs_connect .fs-content{background:#fff;padding:15px 20px}#fs_connect .fs-content .fs-error{background:snow;color:#d3135a;border:1px solid #d3135a;-moz-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);text-align:center;padding:5px;margin-bottom:10px}#fs_connect .fs-content p{margin:0;padding:0;font-size:1.2em}#fs_connect .fs-license-key-container{position:relative;width:280px;margin:10px auto 0 auto}#fs_connect .fs-license-key-container input{width:100%}#fs_connect .fs-license-key-container .dashicons{position:absolute;top:5px;right:5px}#fs_connect.require-license-key #sites_list_container td{cursor:pointer}#fs_connect #delegate_to_site_admins{margin-right:15px;float:right;height:26px;vertical-align:middle;line-height:37px;font-weight:bold;border-bottom:1px dashed;text-decoration:none}#fs_connect #delegate_to_site_admins.rtl{margin-left:15px;margin-right:0}#fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}#fs_connect .fs-actions .button{padding:0 10px 1px;line-height:35px;height:37px;font-size:16px;margin-bottom:0}#fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}#fs_connect .fs-actions .button.button-primary{padding-right:15px;padding-left:15px}#fs_connect .fs-actions .button.button-primary:after{content:' \279C'}#fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}#fs_connect .fs-actions .button.button-secondary{float:right}#fs_connect.fs-anonymous-disabled .fs-actions .button.button-primary{width:100%}#fs_connect .fs-permissions{padding:10px 20px;background:#FEFEFE;-moz-transition:background 0.5s ease;-o-transition:background 0.5s ease;-ms-transition:background 0.5s ease;-webkit-transition:background 0.5s ease;transition:background 0.5s ease}#fs_connect .fs-permissions .fs-license-sync-disclaimer{text-align:center;margin-top:0}#fs_connect .fs-permissions .fs-trigger{font-size:0.9em;text-decoration:none;text-align:center;display:block}#fs_connect .fs-permissions ul{height:0;overflow:hidden;margin:0}#fs_connect .fs-permissions ul li{margin-bottom:12px}#fs_connect .fs-permissions ul li:last-child{margin-bottom:0}#fs_connect .fs-permissions ul li i.dashicons{float:left;font-size:40px;width:40px;height:40px}#fs_connect .fs-permissions ul li div{margin-left:55px}#fs_connect .fs-permissions ul li div span{font-weight:bold;text-transform:uppercase;color:#23282d}#fs_connect .fs-permissions ul li div p{margin:2px 0 0 0}#fs_connect .fs-permissions.fs-open{background:#fff}#fs_connect .fs-permissions.fs-open ul{height:auto;margin:20px 20px 10px 20px}@media screen and (max-width: 479px){#fs_connect .fs-permissions{background:#fff}#fs_connect .fs-permissions .fs-trigger{display:none}#fs_connect .fs-permissions ul{height:auto;margin:20px}}#fs_connect .fs-freemium-licensing{padding:8px;background:#777;color:#fff}#fs_connect .fs-freemium-licensing p{text-align:center;display:block;margin:0;padding:0}#fs_connect .fs-freemium-licensing a{color:#C2EEFF;text-decoration:underline}#fs_connect .fs-visual{padding:12px;line-height:0;background:#fafafa;height:80px;position:relative}#fs_connect .fs-visual .fs-site-icon{position:absolute;left:20px;top:10px}#fs_connect .fs-visual .fs-connect-logo{position:absolute;right:20px;top:10px}#fs_connect .fs-visual .fs-plugin-icon{position:absolute;top:10px;left:50%;margin-left:-40px}#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-site-icon,#fs_connect .fs-visual img,#fs_connect .fs-visual object{width:80px;height:80px}#fs_connect .fs-visual .dashicons-wordpress{font-size:64px;background:#01749a;color:#fff;width:64px;height:64px;padding:8px}#fs_connect .fs-visual .dashicons-plus{position:absolute;top:50%;font-size:30px;margin-top:-10px;color:#bbb}#fs_connect .fs-visual .dashicons-plus.fs-first{left:28%}#fs_connect .fs-visual .dashicons-plus.fs-second{left:65%}#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-connect-logo,#fs_connect .fs-visual .fs-site-icon{border:1px solid #ccc;padding:1px;background:#fff}#fs_connect .fs-terms{text-align:center;font-size:0.85em;padding:5px;background:rgba(0,0,0,0.05)}#fs_connect .fs-terms,#fs_connect .fs-terms a{color:#999}#fs_connect .fs-terms a{text-decoration:none}#multisite_options_container{margin-top:10px;border:1px solid #ccc;padding:5px}#multisite_options_container a{text-decoration:none}#multisite_options_container a:focus{box-shadow:none}#multisite_options_container a.selected{font-weight:bold}#multisite_options_container.apply-on-all-sites{border:0 none;padding:0}#multisite_options_container.apply-on-all-sites #all_sites_options{border-spacing:0}#multisite_options_container.apply-on-all-sites #all_sites_options td:not(:first-child){display:none}#multisite_options_container #sites_list_container{display:none;overflow:auto}#multisite_options_container #sites_list_container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-tooltip-trigger{position:relative}.fs-tooltip-trigger:not(a){cursor:help}.fs-tooltip-trigger .fs-tooltip{opacity:0;visibility:hidden;-moz-transition:opacity 0.3s ease-in-out;-o-transition:opacity 0.3s ease-in-out;-ms-transition:opacity 0.3s ease-in-out;-webkit-transition:opacity 0.3s ease-in-out;transition:opacity 0.3s ease-in-out;position:absolute;background:rgba(0,0,0,0.8);color:#fff;font-family:'arial', serif;font-size:12px;padding:10px;z-index:999999;bottom:100%;margin-bottom:5px;left:0;right:0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;-moz-box-shadow:1px 1px 1px rgba(0,0,0,0.2);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.2);box-shadow:1px 1px 1px rgba(0,0,0,0.2);line-height:1.3em;font-weight:bold;text-align:left}.rtl .fs-tooltip-trigger .fs-tooltip{text-align:right}.fs-tooltip-trigger .fs-tooltip::after{content:' ';display:block;width:0;height:0;border-style:solid;border-width:5px 5px 0 5px;border-color:rgba(0,0,0,0.8) transparent transparent transparent;position:absolute;top:100%;left:21px}.rtl .fs-tooltip-trigger .fs-tooltip::after{right:21px;left:auto}.fs-tooltip-trigger:hover .fs-tooltip{visibility:visible;opacity:1}#fs_marketing_optin{display:none;margin-top:10px;border:1px solid #ccc;padding:10px;line-height:1.5em}#fs_marketing_optin .fs-message{display:block;margin-bottom:5px;font-size:1.05em;font-weight:600}#fs_marketing_optin.error{border:1px solid #d3135a;background:#fee}#fs_marketing_optin.error .fs-message{color:#d3135a}#fs_marketing_optin .fs-input-container{margin-top:5px}#fs_marketing_optin .fs-input-container label{margin-top:5px;display:block}#fs_marketing_optin .fs-input-container label input{float:left;margin:1px 0 0 0}#fs_marketing_optin .fs-input-container label:first-child{display:block;margin-bottom:2px}#fs_marketing_optin .fs-input-label{display:block;margin-left:20px}#fs_marketing_optin .fs-input-label .underlined{text-decoration:underline}.rtl #fs_marketing_optin .fs-input-container label input{float:right}.rtl #fs_marketing_optin .fs-input-label{margin-left:0;margin-right:20px}.rtl #fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}.rtl #fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}.rtl #fs_connect .fs-actions .button.button-primary:after{content:' \000bb'}.rtl #fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}.rtl #fs_connect .fs-actions .button.button-secondary{float:left}.rtl #fs_connect .fs-permissions ul li div{margin-right:55px;margin-left:0}.rtl #fs_connect .fs-permissions ul li i.dashicons{float:right}.rtl #fs_connect .fs-visual .fs-site-icon{right:20px;left:auto}.rtl #fs_connect .fs-visual .fs-connect-logo{right:auto;left:20px}#fs_theme_connect_wrapper{position:fixed;top:0;height:100%;width:100%;z-index:99990;background:rgba(0,0,0,0.75);text-align:center;overflow-y:auto}#fs_theme_connect_wrapper:before{content:"";display:inline-block;vertical-align:middle;height:100%}#fs_theme_connect_wrapper>button.close{color:white;cursor:pointer;height:40px;width:40px;position:absolute;right:0;border:0;background-color:transparent;top:32px}#fs_theme_connect_wrapper #fs_connect{top:0;text-align:left;display:inline-block;vertical-align:middle;margin-top:52px;margin-bottom:20px}#fs_theme_connect_wrapper #fs_connect .fs-terms{background:rgba(140,140,140,0.64)}#fs_theme_connect_wrapper #fs_connect .fs-terms,#fs_theme_connect_wrapper #fs_connect .fs-terms a{color:#c5c5c5}.wp-pointer-content #fs_connect{margin:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.fs-opt-in-pointer .wp-pointer-content{padding:0}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow{border-bottom-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow-inner{border-bottom-color:#fafafa}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow{border-top-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow-inner{border-top-color:#fafafa}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow{border-right-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow-inner{border-right-color:#fafafa}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow{border-left-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow-inner{border-left-color:#fafafa}
freemius/assets/css/admin/deactivation-feedback.css DELETED
@@ -1 +0,0 @@
1
- .fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}.fs-modal .fs-modal-dialog li.reason{margin-bottom:10px}.fs-modal .fs-modal-dialog li.reason .reason-input,.fs-modal .fs-modal-dialog li.reason .internal-message{margin-left:29px}.fs-modal .fs-modal-dialog li.reason label{display:table}.fs-modal .fs-modal-dialog li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body h2{font-size:20px}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eeeeee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel:not(.active){display:none}.fs-modal .reason-input,.fs-modal .internal-message{margin:3px 0 3px 22px}.fs-modal .reason-input input,.fs-modal .reason-input textarea,.fs-modal .internal-message input,.fs-modal .internal-message textarea{width:100%}.fs-modal li.reason.has-internal-message .internal-message{border:1px solid #ccc;padding:7px;display:none}body.has-fs-modal{overflow:hidden}#the-list .deactivate>.fs-slug{display:none}
 
freemius/assets/css/admin/dialog-boxes.css CHANGED
@@ -1,2 +1,2 @@
1
- .fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal.fs-success .fs-modal-header{border-bottom-color:#46b450}.fs-modal.fs-success .fs-modal-body{background-color:#f7fff7}.fs-modal.fs-warn .fs-modal-header{border-bottom-color:#ffb900}.fs-modal.fs-warn .fs-modal-body{background-color:#fff8e5}.fs-modal.fs-error .fs-modal-header{border-bottom-color:#dc3232}.fs-modal.fs-error .fs-modal-body{background-color:#ffeaea}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-header{border-bottom:#eeeeee solid 1px;background:#fbfbfb;padding:15px 20px;position:relative;margin-bottom:-10px}.fs-modal .fs-modal-header h4{margin:0;padding:0;text-transform:uppercase;font-size:1.2em;font-weight:bold;color:#cacaca;text-shadow:1px 1px 1px #fff;letter-spacing:0.6px;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{position:absolute;right:10px;top:12px;cursor:pointer;color:#bbb;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;padding:3px;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{color:#fff;background:#aaa}.fs-modal .fs-modal-header .fs-close .dashicons,.fs-modal .fs-modal-header .fs-close:hover .dashicons{text-decoration:none}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px;line-height:1.5em}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eeeeee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel>.notice.inline{margin:0;display:none}.fs-modal .fs-modal-panel:not(.active){display:none}.rtl .fs-modal .fs-modal-header .fs-close{right:auto;left:20px}body.has-fs-modal{overflow:hidden}.fs-modal.fs-modal-deactivation-feedback .reason-input,.fs-modal.fs-modal-deactivation-feedback .internal-message{margin:3px 0 3px 22px}.fs-modal.fs-modal-deactivation-feedback .reason-input input,.fs-modal.fs-modal-deactivation-feedback .reason-input textarea,.fs-modal.fs-modal-deactivation-feedback .internal-message input,.fs-modal.fs-modal-deactivation-feedback .internal-message textarea{width:100%}.fs-modal.fs-modal-deactivation-feedback li.reason.has-internal-message .internal-message{border:1px solid #ccc;padding:7px;display:none}@media (max-width: 650px){.fs-modal.fs-modal-deactivation-feedback li.reason li.reason{margin-bottom:10px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .reason-input,.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .internal-message{margin-left:29px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label{display:table}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label{float:left}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel{margin-top:0 !important}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel h3{margin-top:0;line-height:1.5em}#the-list .deactivate>.fs-slug{display:none}.fs-modal.fs-modal-license-activation .fs-modal-body input.license_key{width:100%}#license_options_container table,#license_options_container table select,#license_options_container table #available_license_key{width:100%}#license_options_container table td:first-child{width:1%}#license_options_container table #other_license_key_container label{position:relative;top:6px;float:left;margin-right:5px}#license_options_container table #other_license_key_container div{overflow:hidden;width:auto;height:30px;display:block;top:2px;position:relative}#license_options_container table #other_license_key_container div input{margin:0}#sites_list_container td{cursor:pointer}#multisite_options_container{margin-top:10px;border:1px solid #ccc;padding:5px}#multisite_options_container a{text-decoration:none}#multisite_options_container a:focus{box-shadow:none}#multisite_options_container a.selected{font-weight:bold}#multisite_options_container.apply-on-all-sites{border:0 none;padding:0}#multisite_options_container.apply-on-all-sites #all_sites_options{border-spacing:0}#multisite_options_container.apply-on-all-sites #all_sites_options td:not(:first-child){display:none}#multisite_options_container #sites_list_container{display:none;overflow:auto}#multisite_options_container #sites_list_container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-modal.fs-modal-license-key-resend .email-address-container{overflow:hidden;padding-right:2px}.fs-modal.fs-modal-license-key-resend.fs-freemium input.email-address{width:300px}.fs-modal.fs-modal-license-key-resend.fs-freemium label{display:block;margin-bottom:10px}.fs-modal.fs-modal-license-key-resend.fs-premium input.email-address{width:100%}.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{float:right;margin-left:7px}@media (max-width: 650px){.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{margin-top:2px}}
2
- .rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-right:7px;margin-left:0}a.show-license-resend-modal{margin-top:4px;display:inline-block}.fs-ajax-loader{position:relative;width:170px;height:20px;margin:auto}.fs-ajax-loader .fs-ajax-loader-bar{position:absolute;top:0;background-color:#0074a3;width:20px;height:20px;-webkit-animation-name:bounce_ajaxLoader;-moz-animation-name:bounce_ajaxLoader;-ms-animation-name:bounce_ajaxLoader;-o-animation-name:bounce_ajaxLoader;animation-name:bounce_ajaxLoader;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s;animation-duration:1.5s;animation-iteration-count:infinite;-o-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;-webkit-animation-direction:normal;-moz-animation-direction:normal;-ms-animation-direction:normal;-o-animation-direction:normal;animation-direction:normal;-moz-transform:0.3;-o-transform:0.3;-ms-transform:0.3;-webkit-transform:0.3;transform:0.3}.fs-ajax-loader .fs-ajax-loader-bar-1{left:0px;animation-delay:0.6s;-o-animation-delay:0.6s;-ms-animation-delay:0.6s;-webkit-animation-delay:0.6s;-moz-animation-delay:0.6s}.fs-ajax-loader .fs-ajax-loader-bar-2{left:19px;animation-delay:0.75s;-o-animation-delay:0.75s;-ms-animation-delay:0.75s;-webkit-animation-delay:0.75s;-moz-animation-delay:0.75s}.fs-ajax-loader .fs-ajax-loader-bar-3{left:38px;animation-delay:0.9s;-o-animation-delay:0.9s;-ms-animation-delay:0.9s;-webkit-animation-delay:0.9s;-moz-animation-delay:0.9s}.fs-ajax-loader .fs-ajax-loader-bar-4{left:57px;animation-delay:1.05s;-o-animation-delay:1.05s;-ms-animation-delay:1.05s;-webkit-animation-delay:1.05s;-moz-animation-delay:1.05s}.fs-ajax-loader .fs-ajax-loader-bar-5{left:76px;animation-delay:1.2s;-o-animation-delay:1.2s;-ms-animation-delay:1.2s;-webkit-animation-delay:1.2s;-moz-animation-delay:1.2s}.fs-ajax-loader .fs-ajax-loader-bar-6{left:95px;animation-delay:1.35s;-o-animation-delay:1.35s;-ms-animation-delay:1.35s;-webkit-animation-delay:1.35s;-moz-animation-delay:1.35s}.fs-ajax-loader .fs-ajax-loader-bar-7{left:114px;animation-delay:1.5s;-o-animation-delay:1.5s;-ms-animation-delay:1.5s;-webkit-animation-delay:1.5s;-moz-animation-delay:1.5s}.fs-ajax-loader .fs-ajax-loader-bar-8{left:133px;animation-delay:1.65s;-o-animation-delay:1.65s;-ms-animation-delay:1.65s;-webkit-animation-delay:1.65s;-moz-animation-delay:1.65s}@-moz-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-ms-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-o-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-webkit-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}.fs-modal-auto-install #request-filesystem-credentials-form h2,.fs-modal-auto-install #request-filesystem-credentials-form .request-filesystem-credentials-action-buttons{display:none}.fs-modal-auto-install #request-filesystem-credentials-form input[type=password],.fs-modal-auto-install #request-filesystem-credentials-form input[type=email],.fs-modal-auto-install #request-filesystem-credentials-form input[type=text]{-webkit-appearance:none;padding:10px 10px 5px 10px;width:300px;max-width:100%}.fs-modal-auto-install #request-filesystem-credentials-form>div,.fs-modal-auto-install #request-filesystem-credentials-form label,.fs-modal-auto-install #request-filesystem-credentials-form fieldset{width:300px;max-width:100%;margin:0 auto;display:block}
1
+ .fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal.fs-success .fs-modal-header{border-bottom-color:#46b450}.fs-modal.fs-success .fs-modal-body{background-color:#f7fff7}.fs-modal.fs-warn .fs-modal-header{border-bottom-color:#ffb900}.fs-modal.fs-warn .fs-modal-body{background-color:#fff8e5}.fs-modal.fs-error .fs-modal-header{border-bottom-color:#dc3232}.fs-modal.fs-error .fs-modal-body{background-color:#ffeaea}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-header{border-bottom:#eeeeee solid 1px;background:#fbfbfb;padding:15px 20px;position:relative;margin-bottom:-10px}.fs-modal .fs-modal-header h4{margin:0;padding:0;text-transform:uppercase;font-size:1.2em;font-weight:bold;color:#cacaca;text-shadow:1px 1px 1px #fff;letter-spacing:0.6px;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{position:absolute;right:10px;top:12px;cursor:pointer;color:#bbb;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;padding:3px;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{color:#fff;background:#aaa}.fs-modal .fs-modal-header .fs-close .dashicons,.fs-modal .fs-modal-header .fs-close:hover .dashicons{text-decoration:none}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px;line-height:1.5em}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eeeeee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel>.notice.inline{margin:0;display:none}.fs-modal .fs-modal-panel:not(.active){display:none}.rtl .fs-modal .fs-modal-header .fs-close{right:auto;left:20px}body.has-fs-modal{overflow:hidden}.fs-modal.fs-modal-deactivation-feedback .reason-input,.fs-modal.fs-modal-deactivation-feedback .internal-message{margin:3px 0 3px 22px}.fs-modal.fs-modal-deactivation-feedback .reason-input input,.fs-modal.fs-modal-deactivation-feedback .reason-input textarea,.fs-modal.fs-modal-deactivation-feedback .internal-message input,.fs-modal.fs-modal-deactivation-feedback .internal-message textarea{width:100%}.fs-modal.fs-modal-deactivation-feedback li.reason.has-internal-message .internal-message{border:1px solid #ccc;padding:7px;display:none}@media (max-width: 650px){.fs-modal.fs-modal-deactivation-feedback li.reason li.reason{margin-bottom:10px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .reason-input,.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .internal-message{margin-left:29px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label{display:table}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label{float:left}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel{margin-top:0 !important}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel h3{margin-top:0;line-height:1.5em}#the-list .deactivate>.fs-slug{display:none}.fs-modal.fs-modal-subscription-cancellation .fs-price-increase-warning{color:red;font-weight:bold;padding:0 25px;margin-bottom:0}.fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label input{float:left;top:5px;position:relative}.rtl .fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label input{float:right}.fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label span{display:block;margin-left:24px}.rtl .fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label span{margin-left:0;margin-right:24px}.fs-modal.fs-modal-license-activation .fs-modal-body input.license_key{width:100%}#license_options_container table,#license_options_container table select,#license_options_container table #available_license_key{width:100%}#license_options_container table td:first-child{width:1%}#license_options_container table #other_license_key_container label{position:relative;top:6px;float:left;margin-right:5px}#license_options_container table #other_license_key_container div{overflow:hidden;width:auto;height:30px;display:block;top:2px;position:relative}#license_options_container table #other_license_key_container div input{margin:0}#sites_list_container td{cursor:pointer}#multisite_options_container{margin-top:10px;border:1px solid #ccc;padding:5px}#multisite_options_container a{text-decoration:none}#multisite_options_container a:focus{box-shadow:none}#multisite_options_container a.selected{font-weight:bold}#multisite_options_container.apply-on-all-sites{border:0 none;padding:0}#multisite_options_container.apply-on-all-sites #all_sites_options{border-spacing:0}#multisite_options_container.apply-on-all-sites #all_sites_options td:not(:first-child){display:none}#multisite_options_container #sites_list_container{display:none;overflow:auto}#multisite_options_container #sites_list_container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-modal.fs-modal-license-key-resend .email-address-container{overflow:hidden;padding-right:2px}.fs-modal.fs-modal-license-key-resend.fs-freemium input.email-address{width:300px}.fs-modal.fs-modal-license-key-resend.fs-freemium label{display:block;margin-bottom:10px}.fs-modal.fs-modal-license-key-resend.fs-premium input.email-address{width:100%}.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{float:right;margin-left:7px}@media (max-width: 650px){.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{margin-top:2px}}
2
+ .rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-right:7px;margin-left:0}a.show-license-resend-modal{margin-top:4px;display:inline-block}.fs-ajax-loader{position:relative;width:170px;height:20px;margin:auto}.fs-ajax-loader .fs-ajax-loader-bar{position:absolute;top:0;background-color:#0074a3;width:20px;height:20px;-webkit-animation-name:bounce_ajaxLoader;-moz-animation-name:bounce_ajaxLoader;-ms-animation-name:bounce_ajaxLoader;-o-animation-name:bounce_ajaxLoader;animation-name:bounce_ajaxLoader;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s;animation-duration:1.5s;animation-iteration-count:infinite;-o-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;-webkit-animation-direction:normal;-moz-animation-direction:normal;-ms-animation-direction:normal;-o-animation-direction:normal;animation-direction:normal;-moz-transform:0.3;-o-transform:0.3;-ms-transform:0.3;-webkit-transform:0.3;transform:0.3}.fs-ajax-loader .fs-ajax-loader-bar-1{left:0px;animation-delay:0.6s;-o-animation-delay:0.6s;-ms-animation-delay:0.6s;-webkit-animation-delay:0.6s;-moz-animation-delay:0.6s}.fs-ajax-loader .fs-ajax-loader-bar-2{left:19px;animation-delay:0.75s;-o-animation-delay:0.75s;-ms-animation-delay:0.75s;-webkit-animation-delay:0.75s;-moz-animation-delay:0.75s}.fs-ajax-loader .fs-ajax-loader-bar-3{left:38px;animation-delay:0.9s;-o-animation-delay:0.9s;-ms-animation-delay:0.9s;-webkit-animation-delay:0.9s;-moz-animation-delay:0.9s}.fs-ajax-loader .fs-ajax-loader-bar-4{left:57px;animation-delay:1.05s;-o-animation-delay:1.05s;-ms-animation-delay:1.05s;-webkit-animation-delay:1.05s;-moz-animation-delay:1.05s}.fs-ajax-loader .fs-ajax-loader-bar-5{left:76px;animation-delay:1.2s;-o-animation-delay:1.2s;-ms-animation-delay:1.2s;-webkit-animation-delay:1.2s;-moz-animation-delay:1.2s}.fs-ajax-loader .fs-ajax-loader-bar-6{left:95px;animation-delay:1.35s;-o-animation-delay:1.35s;-ms-animation-delay:1.35s;-webkit-animation-delay:1.35s;-moz-animation-delay:1.35s}.fs-ajax-loader .fs-ajax-loader-bar-7{left:114px;animation-delay:1.5s;-o-animation-delay:1.5s;-ms-animation-delay:1.5s;-webkit-animation-delay:1.5s;-moz-animation-delay:1.5s}.fs-ajax-loader .fs-ajax-loader-bar-8{left:133px;animation-delay:1.65s;-o-animation-delay:1.65s;-ms-animation-delay:1.65s;-webkit-animation-delay:1.65s;-moz-animation-delay:1.65s}@-moz-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-ms-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-o-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-webkit-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}.fs-modal-auto-install #request-filesystem-credentials-form h2,.fs-modal-auto-install #request-filesystem-credentials-form .request-filesystem-credentials-action-buttons{display:none}.fs-modal-auto-install #request-filesystem-credentials-form input[type=password],.fs-modal-auto-install #request-filesystem-credentials-form input[type=email],.fs-modal-auto-install #request-filesystem-credentials-form input[type=text]{-webkit-appearance:none;padding:10px 10px 5px 10px;width:300px;max-width:100%}.fs-modal-auto-install #request-filesystem-credentials-form>div,.fs-modal-auto-install #request-filesystem-credentials-form label,.fs-modal-auto-install #request-filesystem-credentials-form fieldset{width:300px;max-width:100%;margin:0 auto;display:block}.button-primary.warn{box-shadow:0 1px 0 #d2593c;text-shadow:0 -1px 1px #d2593c,1px 0 1px #d2593c,0 1px 1px #d2593c,-1px 0 1px #d2593c;background:#f56a48;border-color:#ec6544 #d2593c #d2593c}.button-primary.warn:hover{background:#fd6d4a;border-color:#d2593c}.button-primary.warn:focus{box-shadow:0 1px 0 #dd6041,0 0 2px 1px #e4a796}.button-primary.warn:active{background:#dd6041;border-color:#d2593c;box-shadow:inset 0 2px 0 #d2593c}.button-primary.warn.disabled{color:#f5b3a1 !important;background:#e76444 !important;border-color:#d85e40 !important;text-shadow:0 -1px 0 rgba(0,0,0,0.1) !important}
freemius/assets/css/admin/gdpr-optin-notice.css CHANGED
@@ -1 +1 @@
1
- .fs-notice[data-id^="gdpr_optin_actions"] .underlined{text-decoration:underline}.fs-notice[data-id^="gdpr_optin_actions"] ul .button,.fs-notice[data-id^="gdpr_optin_actions"] ul .action-description{vertical-align:middle}.fs-notice[data-id^="gdpr_optin_actions"] ul .action-description{display:inline-block;margin-left:3px}
1
+ .fs-notice[data-id^="gdpr_optin_actions"] .underlined{text-decoration:underline}.fs-notice[data-id^="gdpr_optin_actions"] ul .button,.fs-notice[data-id^="gdpr_optin_actions"] ul .action-description{vertical-align:middle}.fs-notice[data-id^="gdpr_optin_actions"] ul .action-description{display:inline-block;margin-left:3px}
freemius/assets/css/admin/license-activation.css DELETED
@@ -1 +0,0 @@
1
- .fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body .license-activation-message{margin:0;display:none}.fs-modal .fs-modal-body input.license_key{width:100%}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eeeeee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel:not(.active){display:none}body.has-fs-modal{overflow:hidden}
 
freemius/assets/scss/_colors.scss CHANGED
@@ -44,6 +44,17 @@ $button-secondary-bkg: #333;
44
  $button-secondary-color: $fms-white;
45
  $featured-color: #6bc406;
46
  $wp-selected-color: #0074a3;
 
 
 
 
 
 
 
 
 
 
 
47
 
48
  $wordpress_color: #01749A;
49
  $blogger_color: #ff8100;
44
  $button-secondary-color: $fms-white;
45
  $featured-color: #6bc406;
46
  $wp-selected-color: #0074a3;
47
+ $wp-button-alert-border-color: #d2593c;
48
+ $wp-button-alert-border-top-color: #ec6544;
49
+ $wp-button-alert-shadow-color: #d2593c;
50
+ $wp-button-alert-focused-shadow1-color: #dd6041;
51
+ $wp-button-alert-focused-shadow2-color: #e4a796;
52
+ $wp-button-alert-background-color: #f56a48;
53
+ $wp-button-alert-hovered-background-color: #fd6d4a;
54
+ $wp-button-alert-active-background-color: #dd6041;
55
+ $wp-button-alert-disabled-color: #f5b3a1;
56
+ $wp-button-alert-disabled-background-color: #e76444;
57
+ $wp-button-alert-disabled-border-color: #d85e40;
58
 
59
  $wordpress_color: #01749A;
60
  $blogger_color: #ff8100;
freemius/assets/scss/admin/_buttons.scss ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .button-primary.warn {
2
+ box-shadow: 0 1px 0 $wp-button-alert-shadow-color;
3
+ text-shadow: 0 -1px 1px $wp-button-alert-shadow-color, 1px 0 1px $wp-button-alert-shadow-color, 0 1px 1px $wp-button-alert-shadow-color, -1px 0 1px $wp-button-alert-shadow-color;
4
+ background: $wp-button-alert-background-color;
5
+ border-color: $wp-button-alert-border-top-color $wp-button-alert-border-color $wp-button-alert-border-color;
6
+
7
+ &:hover {
8
+ background: $wp-button-alert-hovered-background-color;
9
+ border-color: $wp-button-alert-border-color;
10
+ }
11
+
12
+ &:focus {
13
+ box-shadow: 0 1px 0 $wp-button-alert-focused-shadow1-color, 0 0 2px 1px $wp-button-alert-focused-shadow2-color;
14
+ }
15
+
16
+ &:active {
17
+ background: $wp-button-alert-active-background-color;
18
+ border-color: $wp-button-alert-border-color;
19
+ box-shadow: inset 0 2px 0 $wp-button-alert-shadow-color;
20
+ }
21
+
22
+ &.disabled {
23
+ color: $wp-button-alert-disabled-color !important;
24
+ background: $wp-button-alert-disabled-background-color !important;
25
+ border-color: $wp-button-alert-disabled-border-color !important;
26
+ text-shadow: 0 -1px 0 rgba(0,0,0,.1) !important;
27
+ }
28
+ }
freemius/assets/scss/admin/_gdpr-consent.scss CHANGED
@@ -1,81 +1,81 @@
1
- #fs_marketing_optin
2
- {
3
- display: none;
4
- margin-top: 10px;
5
- border: 1px solid #ccc;
6
- padding: 10px;
7
- line-height: 1.5em;
8
-
9
- .fs-message
10
- {
11
- display: block;
12
- margin-bottom: 5px;
13
- font-size: 1.05em;
14
- font-weight: 600;
15
- }
16
-
17
- &.error
18
- {
19
- border: 1px solid $fs-logo-magenta-color;
20
- background: #fee;
21
-
22
- .fs-message
23
- {
24
- color: $fs-logo-magenta-color;
25
- }
26
- }
27
-
28
- .fs-input-container
29
- {
30
- margin-top: 5px;
31
-
32
- label
33
- {
34
- margin-top: 5px;
35
- display: block;
36
-
37
- input
38
- {
39
- float: left;
40
- margin: 1px 0 0 0;
41
- }
42
-
43
- &:first-child
44
- {
45
- display: block;
46
- margin-bottom: 2px;
47
- }
48
- }
49
- }
50
-
51
- .fs-input-label
52
- {
53
- display: block;
54
- margin-left: 20px;
55
-
56
- .underlined
57
- {
58
- text-decoration: underline;
59
- }
60
- }
61
- }
62
-
63
- .rtl
64
- {
65
- #fs_marketing_optin
66
- {
67
- .fs-input-container
68
- {
69
- label input
70
- {
71
- float: right;
72
- }
73
- }
74
-
75
- .fs-input-label
76
- {
77
- margin-left: 0;
78
- margin-right: 20px;
79
- }
80
- }
81
  }
1
+ #fs_marketing_optin
2
+ {
3
+ display: none;
4
+ margin-top: 10px;
5
+ border: 1px solid #ccc;
6
+ padding: 10px;
7
+ line-height: 1.5em;
8
+
9
+ .fs-message
10
+ {
11
+ display: block;
12
+ margin-bottom: 5px;
13
+ font-size: 1.05em;
14
+ font-weight: 600;
15
+ }
16
+
17
+ &.error
18
+ {
19
+ border: 1px solid $fs-logo-magenta-color;
20
+ background: #fee;
21
+
22
+ .fs-message
23
+ {
24
+ color: $fs-logo-magenta-color;
25
+ }
26
+ }
27
+
28
+ .fs-input-container
29
+ {
30
+ margin-top: 5px;
31
+
32
+ label
33
+ {
34
+ margin-top: 5px;
35
+ display: block;
36
+
37
+ input
38
+ {
39
+ float: left;
40
+ margin: 1px 0 0 0;
41
+ }
42
+
43
+ &:first-child
44
+ {
45
+ display: block;
46
+ margin-bottom: 2px;
47
+ }
48
+ }
49
+ }
50
+
51
+ .fs-input-label
52
+ {
53
+ display: block;
54
+ margin-left: 20px;
55
+
56
+ .underlined
57
+ {
58
+ text-decoration: underline;
59
+ }
60
+ }
61
+ }
62
+
63
+ .rtl
64
+ {
65
+ #fs_marketing_optin
66
+ {
67
+ .fs-input-container
68
+ {
69
+ label input
70
+ {
71
+ float: right;
72
+ }
73
+ }
74
+
75
+ .fs-input-label
76
+ {
77
+ margin-left: 0;
78
+ margin-right: 20px;
79
+ }
80
+ }
81
  }
freemius/assets/scss/admin/_plugin-upgrade-notice.scss ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ .plugins p.fs-upgrade-notice
2
+ {
3
+ border: 0;
4
+ background-color: #d54e21;
5
+ padding: 10px;
6
+ color: #f9f9f9;
7
+ margin-top: 10px;
8
+ }
freemius/assets/scss/admin/_subscription-cancellation.scss ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .fs-modal.fs-modal-subscription-cancellation {
2
+ .fs-price-increase-warning {
3
+ color: red;
4
+ font-weight: bold;
5
+ padding: 0 25px;
6
+ margin-bottom: 0;
7
+ }
8
+
9
+ ul.subscription-actions label {
10
+ input {
11
+ float: left;
12
+ top: 5px;
13
+ position: relative;
14
+
15
+ .rtl & {
16
+ float: right;
17
+ }
18
+ }
19
+
20
+ span {
21
+ display: block;
22
+ margin-left: 24px;
23
+
24
+ .rtl & {
25
+ margin-left: 0;
26
+ margin-right: 24px;
27
+ }
28
+ }
29
+ }
30
+ }
freemius/assets/scss/admin/common.scss CHANGED
@@ -1,7 +1,7 @@
1
  @import "../start";
2
  @import "themes";
3
 
4
- #iframe
5
  {
6
  line-height: 0;
7
  font-size: 0;
@@ -207,7 +207,7 @@ span.fs-submenu-item.fs-sub:before
207
  margin-right: 5px;
208
  vertical-align: sub;
209
  display: inline-block;
210
- background: url('../../../../../../../wp-admin/images/wpspin_light-2x.gif');
211
  background-size: contain;
212
  }
213
 
@@ -215,4 +215,6 @@ span.fs-submenu-item.fs-sub:before
215
  h2 {
216
  text-align: left;
217
  }
218
- }
 
 
1
  @import "../start";
2
  @import "themes";
3
 
4
+ #fs_frame
5
  {
6
  line-height: 0;
7
  font-size: 0;
207
  margin-right: 5px;
208
  vertical-align: sub;
209
  display: inline-block;
210
+ background: url('/wp-admin/images/wpspin_light-2x.gif');
211
  background-size: contain;
212
  }
213
 
215
  h2 {
216
  text-align: left;
217
  }
218
+ }
219
+
220
+ @import "plugin-upgrade-notice";
freemius/assets/scss/admin/dialog-boxes.scss CHANGED
@@ -1,8 +1,10 @@
1
  @import "../start";
2
  @import "modal-common";
3
  @import "deactivation-feedback";
 
4
  @import "license-activation";
5
  @import "multisite-options";
6
  @import "license-key-resend";
7
  @import "ajax-loader";
8
- @import "auto-install";
 
1
  @import "../start";
2
  @import "modal-common";
3
  @import "deactivation-feedback";
4
+ @import "subscription-cancellation";
5
  @import "license-activation";
6
  @import "multisite-options";
7
  @import "license-key-resend";
8
  @import "ajax-loader";
9
+ @import "auto-install";
10
+ @import "buttons";
freemius/assets/scss/admin/gdpr-optin-notice.scss CHANGED
@@ -1,17 +1,17 @@
1
- .fs-notice[data-id^="gdpr_optin_actions"]
2
- {
3
- .underlined {
4
- text-decoration: underline;
5
- }
6
-
7
- ul {
8
- .button, .action-description {
9
- vertical-align: middle;
10
- }
11
-
12
- .action-description {
13
- display: inline-block;
14
- margin-left: 3px;
15
- }
16
- }
17
  }
1
+ .fs-notice[data-id^="gdpr_optin_actions"]
2
+ {
3
+ .underlined {
4
+ text-decoration: underline;
5
+ }
6
+
7
+ ul {
8
+ .button, .action-description {
9
+ vertical-align: middle;
10
+ }
11
+
12
+ .action-description {
13
+ display: inline-block;
14
+ margin-left: 3px;
15
+ }
16
+ }
17
  }
freemius/composer.json DELETED
@@ -1,10 +0,0 @@
1
- {
2
- "name": "freemius/wordpress-sdk",
3
- "description": "Freemius WordPress SDK",
4
- "keywords": ["freemius", "wordpress", "plugin", "sdk"],
5
- "homepage": "https://freemius.com",
6
- "license": "GPL-3.0-only",
7
- "require": {
8
- "php": ">=5.2"
9
- }
10
- }
 
 
 
 
 
 
 
 
 
 
freemius/config.php CHANGED
@@ -1,388 +1,388 @@
1
- <?php
2
- /**
3
- * @package Freemius
4
- * @copyright Copyright (c) 2015, Freemius, Inc.
5
- * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
- * @since 1.0.4
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- if ( ! defined( 'WP_FS__SLUG' ) ) {
14
- define( 'WP_FS__SLUG', 'freemius' );
15
- }
16
- if ( ! defined( 'WP_FS__DEV_MODE' ) ) {
17
- define( 'WP_FS__DEV_MODE', false );
18
- }
19
-
20
- #--------------------------------------------------------------------------------
21
- #region API Connectivity Issues Simulation
22
- #--------------------------------------------------------------------------------
23
-
24
- if ( ! defined( 'WP_FS__SIMULATE_NO_API_CONNECTIVITY' ) ) {
25
- define( 'WP_FS__SIMULATE_NO_API_CONNECTIVITY', false );
26
- }
27
- if ( ! defined( 'WP_FS__SIMULATE_NO_CURL' ) ) {
28
- define( 'WP_FS__SIMULATE_NO_CURL', false );
29
- }
30
- if ( ! defined( 'WP_FS__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE' ) ) {
31
- define( 'WP_FS__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE', false );
32
- }
33
- if ( ! defined( 'WP_FS__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL' ) ) {
34
- define( 'WP_FS__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL', false );
35
- }
36
- if ( WP_FS__SIMULATE_NO_CURL ) {
37
- define( 'FS_SDK__SIMULATE_NO_CURL', true );
38
- }
39
- if ( WP_FS__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE ) {
40
- define( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE', true );
41
- }
42
- if ( WP_FS__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL ) {
43
- define( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL', true );
44
- }
45
-
46
- #endregion
47
-
48
- if ( ! defined( 'WP_FS__SIMULATE_FREEMIUS_OFF' ) ) {
49
- define( 'WP_FS__SIMULATE_FREEMIUS_OFF', false );
50
- }
51
-
52
- if ( ! defined( 'WP_FS__PING_API_ON_IP_OR_HOST_CHANGES' ) ) {
53
- /**
54
- * @since 1.1.7.3
55
- * @author Vova Feldman (@svovaf)
56
- *
57
- * I'm not sure if shared servers periodically change IP, or the subdomain of the
58
- * admin dashboard. Also, I've seen sites that have strange loop of switching
59
- * between domains on a daily basis. Therefore, to eliminate the risk of
60
- * multiple unwanted connectivity test pings, temporary ignore domain or
61
- * server IP changes.
62
- */
63
- define( 'WP_FS__PING_API_ON_IP_OR_HOST_CHANGES', false );
64
- }
65
-
66
- /**
67
- * If your dev environment supports custom public network IP setup
68
- * like VVV, please update WP_FS__LOCALHOST_IP with your public IP
69
- * and uncomment it during dev.
70
- */
71
- if ( ! defined( 'WP_FS__LOCALHOST_IP' ) ) {
72
- // VVV default public network IP.
73
- define( 'WP_FS__VVV_DEFAULT_PUBLIC_IP', '192.168.50.4' );
74
-
75
- // define( 'WP_FS__LOCALHOST_IP', WP_FS__VVV_DEFAULT_PUBLIC_IP );
76
- }
77
-
78
- /**
79
- * If true and running with secret key, the opt-in process
80
- * will skip the email activation process which is invoked
81
- * when the email of the context user already exist in Freemius
82
- * database (as a security precaution, to prevent sharing user
83
- * secret with unauthorized entity).
84
- *
85
- * IMPORTANT:
86
- * AS A SECURITY PRECAUTION, WE VALIDATE THE TIMESTAMP OF THE OPT-IN REQUEST.
87
- * THEREFORE, MAKE SURE THAT WHEN USING THIS PARAMETER,YOUR TESTING ENVIRONMENT'S
88
- * CLOCK IS SYNCED.
89
- */
90
- if ( ! defined( 'WP_FS__SKIP_EMAIL_ACTIVATION' ) ) {
91
- define( 'WP_FS__SKIP_EMAIL_ACTIVATION', false );
92
- }
93
-
94
-
95
- #--------------------------------------------------------------------------------
96
- #region Directories
97
- #--------------------------------------------------------------------------------
98
-
99
- if ( ! defined( 'WP_FS__DIR' ) ) {
100
- define( 'WP_FS__DIR', dirname( __FILE__ ) );
101
- }
102
- if ( ! defined( 'WP_FS__DIR_INCLUDES' ) ) {
103
- define( 'WP_FS__DIR_INCLUDES', WP_FS__DIR . '/includes' );
104
- }
105
- if ( ! defined( 'WP_FS__DIR_TEMPLATES' ) ) {
106
- define( 'WP_FS__DIR_TEMPLATES', WP_FS__DIR . '/templates' );
107
- }
108
- if ( ! defined( 'WP_FS__DIR_ASSETS' ) ) {
109
- define( 'WP_FS__DIR_ASSETS', WP_FS__DIR . '/assets' );
110
- }
111
- if ( ! defined( 'WP_FS__DIR_CSS' ) ) {
112
- define( 'WP_FS__DIR_CSS', WP_FS__DIR_ASSETS . '/css' );
113
- }
114
- if ( ! defined( 'WP_FS__DIR_JS' ) ) {
115
- define( 'WP_FS__DIR_JS', WP_FS__DIR_ASSETS . '/js' );
116
- }
117
- if ( ! defined( 'WP_FS__DIR_IMG' ) ) {
118
- define( 'WP_FS__DIR_IMG', WP_FS__DIR_ASSETS . '/img' );
119
- }
120
- if ( ! defined( 'WP_FS__DIR_SDK' ) ) {
121
- define( 'WP_FS__DIR_SDK', WP_FS__DIR_INCLUDES . '/sdk' );
122
- }
123
-
124
- #endregion
125
-
126
- /**
127
- * Domain / URL / Address
128
- */
129
- define( 'WP_FS__ROOT_DOMAIN_PRODUCTION', 'freemius.com' );
130
- define( 'WP_FS__DOMAIN_PRODUCTION', 'wp.freemius.com' );
131
- define( 'WP_FS__ADDRESS_PRODUCTION', 'https://' . WP_FS__DOMAIN_PRODUCTION );
132
-
133
- if ( ! defined( 'WP_FS__DOMAIN_LOCALHOST' ) ) {
134
- define( 'WP_FS__DOMAIN_LOCALHOST', 'wp.freemius' );
135
- }
136
- if ( ! defined( 'WP_FS__ADDRESS_LOCALHOST' ) ) {
137
- define( 'WP_FS__ADDRESS_LOCALHOST', 'http://' . WP_FS__DOMAIN_LOCALHOST . ':8080' );
138
- }
139
-
140
- if ( ! defined( 'WP_FS__TESTING_DOMAIN' ) ) {
141
- define( 'WP_FS__TESTING_DOMAIN', 'fswp' );
142
- }
143
-
144
- #--------------------------------------------------------------------------------
145
- #region HTTP
146
- #--------------------------------------------------------------------------------
147
-
148
- if ( ! defined( 'WP_FS__IS_HTTP_REQUEST' ) ) {
149
- define( 'WP_FS__IS_HTTP_REQUEST', isset( $_SERVER['HTTP_HOST'] ) );
150
- }
151
-
152
- if ( ! defined( 'WP_FS__IS_HTTPS' ) ) {
153
- define( 'WP_FS__IS_HTTPS', ( WP_FS__IS_HTTP_REQUEST &&
154
- // Checks if CloudFlare's HTTPS (Flexible SSL support).
155
- isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) &&
156
- 'https' === strtolower( $_SERVER['HTTP_X_FORWARDED_PROTO'] )
157
- ) ||
158
- // Check if HTTPS request.
159
- ( isset( $_SERVER['HTTPS'] ) && 'on' == $_SERVER['HTTPS'] ) ||
160
- ( isset( $_SERVER['SERVER_PORT'] ) && 443 == $_SERVER['SERVER_PORT'] )
161
- );
162
- }
163
-
164
- if ( ! defined( 'WP_FS__IS_POST_REQUEST' ) ) {
165
- define( 'WP_FS__IS_POST_REQUEST', ( WP_FS__IS_HTTP_REQUEST &&
166
- strtoupper( $_SERVER['REQUEST_METHOD'] ) == 'POST' ) );
167
- }
168
-
169
- if ( ! defined( 'WP_FS__REMOTE_ADDR' ) ) {
170
- define( 'WP_FS__REMOTE_ADDR', fs_get_ip() );
171
- }
172
-
173
- if ( ! defined( 'WP_FS__IS_LOCALHOST' ) ) {
174
- if ( defined( 'WP_FS__LOCALHOST_IP' ) ) {
175
- define( 'WP_FS__IS_LOCALHOST', ( WP_FS__LOCALHOST_IP === WP_FS__REMOTE_ADDR ) );
176
- } else {
177
- define( 'WP_FS__IS_LOCALHOST', WP_FS__IS_HTTP_REQUEST &&
178
- is_string( WP_FS__REMOTE_ADDR ) &&
179
- ( substr( WP_FS__REMOTE_ADDR, 0, 4 ) === '127.' ||
180
- WP_FS__REMOTE_ADDR === '::1' )
181
- );
182
- }
183
- }
184
-
185
- if ( ! defined( 'WP_FS__IS_LOCALHOST_FOR_SERVER' ) ) {
186
- define( 'WP_FS__IS_LOCALHOST_FOR_SERVER', ( ! WP_FS__IS_HTTP_REQUEST ||
187
- false !== strpos( $_SERVER['HTTP_HOST'], 'localhost' ) ) );
188
- }
189
-
190
- #endregion
191
-
192
- if ( ! defined( 'WP_FS__IS_PRODUCTION_MODE' ) ) {
193
- // By default, run with Freemius production servers.
194
- define( 'WP_FS__IS_PRODUCTION_MODE', true );
195
- }
196
-
197
- if ( ! defined( 'WP_FS__ADDRESS' ) ) {
198
- define( 'WP_FS__ADDRESS', ( WP_FS__IS_PRODUCTION_MODE ? WP_FS__ADDRESS_PRODUCTION : WP_FS__ADDRESS_LOCALHOST ) );
199
- }
200
-
201
-
202
- #--------------------------------------------------------------------------------
203
- #region API
204
- #--------------------------------------------------------------------------------
205
-
206
- if ( ! defined( 'WP_FS__API_ADDRESS_LOCALHOST' ) ) {
207
- define( 'WP_FS__API_ADDRESS_LOCALHOST', 'http://api.freemius:8080' );
208
- }
209
- if ( ! defined( 'WP_FS__API_SANDBOX_ADDRESS_LOCALHOST' ) ) {
210
- define( 'WP_FS__API_SANDBOX_ADDRESS_LOCALHOST', 'http://sandbox-api.freemius:8080' );
211
- }
212
-
213
- // Set API address for local testing.
214
- if ( ! WP_FS__IS_PRODUCTION_MODE ) {
215
- if ( ! defined( 'FS_API__ADDRESS' ) ) {
216
- define( 'FS_API__ADDRESS', WP_FS__API_ADDRESS_LOCALHOST );
217
- }
218
- if ( ! defined( 'FS_API__SANDBOX_ADDRESS' ) ) {
219
- define( 'FS_API__SANDBOX_ADDRESS', WP_FS__API_SANDBOX_ADDRESS_LOCALHOST );
220
- }
221
- }
222
-
223
- #endregion
224
-
225
- #--------------------------------------------------------------------------------
226
- #region Checkout
227
- #--------------------------------------------------------------------------------
228
-
229
- if ( ! defined( 'FS_CHECKOUT__ADDRESS_PRODUCTION' ) ) {
230
- define( 'FS_CHECKOUT__ADDRESS_PRODUCTION', 'https://checkout.freemius.com' );
231
- }
232
-
233
- if ( ! defined( 'FS_CHECKOUT__ADDRESS_LOCALHOST' ) ) {
234
- define( 'FS_CHECKOUT__ADDRESS_LOCALHOST', 'http://checkout.freemius-local.com:8080' );
235
- }
236
-
237
- if ( ! defined( 'FS_CHECKOUT__ADDRESS' ) ) {
238
- define( 'FS_CHECKOUT__ADDRESS', ( WP_FS__IS_PRODUCTION_MODE ? FS_CHECKOUT__ADDRESS_PRODUCTION : FS_CHECKOUT__ADDRESS_LOCALHOST ) );
239
- }
240
-
241
- #endregion
242
-
243
- define( 'WP_FS___OPTION_PREFIX', 'fs' . ( WP_FS__IS_PRODUCTION_MODE ? '' : '_dbg' ) . '_' );
244
-
245
- if ( ! defined( 'WP_FS__ACCOUNTS_OPTION_NAME' ) ) {
246
- define( 'WP_FS__ACCOUNTS_OPTION_NAME', WP_FS___OPTION_PREFIX . 'accounts' );
247
- }
248
- if ( ! defined( 'WP_FS__API_CACHE_OPTION_NAME' ) ) {
249
- define( 'WP_FS__API_CACHE_OPTION_NAME', WP_FS___OPTION_PREFIX . 'api_cache' );
250
- }
251
- if ( ! defined( 'WP_FS__GDPR_OPTION_NAME' ) ) {
252
- define( 'WP_FS__GDPR_OPTION_NAME', WP_FS___OPTION_PREFIX . 'gdpr' );
253
- }
254
- define( 'WP_FS__OPTIONS_OPTION_NAME', WP_FS___OPTION_PREFIX . 'options' );
255
-
256
- /**
257
- * Module types
258
- *
259
- * @since 1.2.2
260
- */
261
- define( 'WP_FS__MODULE_TYPE_PLUGIN', 'plugin' );
262
- define( 'WP_FS__MODULE_TYPE_THEME', 'theme' );
263
-
264
- /**
265
- * Billing Frequencies
266
- */
267
- define( 'WP_FS__PERIOD_ANNUALLY', 'annual' );
268
- define( 'WP_FS__PERIOD_MONTHLY', 'monthly' );
269
- define( 'WP_FS__PERIOD_LIFETIME', 'lifetime' );
270
-
271
- /**
272
- * Plans
273
- */
274
- define( 'WP_FS__PLAN_DEFAULT_PAID', false );
275
- define( 'WP_FS__PLAN_FREE', 'free' );
276
- define( 'WP_FS__PLAN_TRIAL', 'trial' );
277
-
278
- /**
279
- * Times in seconds
280
- */
281
- if ( ! defined( 'WP_FS__TIME_5_MIN_IN_SEC' ) ) {
282
- define( 'WP_FS__TIME_5_MIN_IN_SEC', 300 );
283
- }
284
- if ( ! defined( 'WP_FS__TIME_10_MIN_IN_SEC' ) ) {
285
- define( 'WP_FS__TIME_10_MIN_IN_SEC', 600 );
286
- }
287
- // define( 'WP_FS__TIME_15_MIN_IN_SEC', 900 );
288
- if ( ! defined( 'WP_FS__TIME_12_HOURS_IN_SEC' ) ) {
289
- define( 'WP_FS__TIME_12_HOURS_IN_SEC', 43200 );
290
- }
291
- if ( ! defined( 'WP_FS__TIME_24_HOURS_IN_SEC' ) ) {
292
- define( 'WP_FS__TIME_24_HOURS_IN_SEC', WP_FS__TIME_12_HOURS_IN_SEC * 2 );
293
- }
294
- if ( ! defined( 'WP_FS__TIME_WEEK_IN_SEC' ) ) {
295
- define( 'WP_FS__TIME_WEEK_IN_SEC', 7 * WP_FS__TIME_24_HOURS_IN_SEC );
296
- }
297
-
298
- #--------------------------------------------------------------------------------
299
- #region Debugging
300
- #--------------------------------------------------------------------------------
301
-
302
- if ( ! defined( 'WP_FS__DEBUG_SDK' ) ) {
303
- $debug_mode = get_option( 'fs_debug_mode', null );
304
-
305
- if ( $debug_mode === null ) {
306
- $debug_mode = false;
307
- add_option( 'fs_debug_mode', $debug_mode );
308
- }
309
-
310
- define( 'WP_FS__DEBUG_SDK', is_numeric( $debug_mode ) ? ( 0 < $debug_mode ) : WP_FS__DEV_MODE );
311
- }
312
-
313
- if ( ! defined( 'WP_FS__ECHO_DEBUG_SDK' ) ) {
314
- define( 'WP_FS__ECHO_DEBUG_SDK', WP_FS__DEV_MODE && ! empty( $_GET['fs_dbg_echo'] ) );
315
- }
316
- if ( ! defined( 'WP_FS__LOG_DATETIME_FORMAT' ) ) {
317
- define( 'WP_FS__LOG_DATETIME_FORMAT', 'Y-m-d H:i:s' );
318
- }
319
- if ( ! defined( 'FS_API__LOGGER_ON' ) ) {
320
- define( 'FS_API__LOGGER_ON', WP_FS__DEBUG_SDK );
321
- }
322
-
323
- if ( WP_FS__ECHO_DEBUG_SDK ) {
324
- error_reporting( E_ALL );
325
- }
326
-
327
- #endregion
328
-
329
- if ( ! defined( 'WP_FS__SCRIPT_START_TIME' ) ) {
330
- define( 'WP_FS__SCRIPT_START_TIME', time() );
331
- }
332
- if ( ! defined( 'WP_FS__DEFAULT_PRIORITY' ) ) {
333
- define( 'WP_FS__DEFAULT_PRIORITY', 10 );
334
- }
335
- if ( ! defined( 'WP_FS__LOWEST_PRIORITY' ) ) {
336
- define( 'WP_FS__LOWEST_PRIORITY', 999999999 );
337
- }
338
-
339
- #--------------------------------------------------------------------------------
340
- #region Multisite Network
341
- #--------------------------------------------------------------------------------
342
-
343
- /**
344
- * Do not use this define directly, it will have the wrong value
345
- * during plugin uninstall/deletion when the inclusion of the plugin
346
- * is triggered due to registration with register_uninstall_hook().
347
- *
348
- * Instead, use fs_is_network_admin().
349
- *
350
- * @author Vova Feldman (@svovaf)
351
- */
352
- if ( ! defined( 'WP_FS__IS_NETWORK_ADMIN' ) ) {
353
- define( 'WP_FS__IS_NETWORK_ADMIN',
354
- is_network_admin() ||
355
- ( is_multisite() &&
356
- ( ( defined( 'DOING_AJAX' ) && DOING_AJAX &&
357
- ( isset( $_REQUEST['_fs_network_admin'] ) /*||
358
- ( ! empty( $_REQUEST['action'] ) && 'delete-plugin' === $_REQUEST['action'] )*/ )
359
- ) ||
360
- // Plugin uninstall.
361
- defined( 'WP_UNINSTALL_PLUGIN' ) )
362
- )
363
- );
364
- }
365
-
366
- /**
367
- * Do not use this define directly, it will have the wrong value
368
- * during plugin uninstall/deletion when the inclusion of the plugin
369
- * is triggered due to registration with register_uninstall_hook().
370
- *
371
- * Instead, use fs_is_blog_admin().
372
- *
373
- * @author Vova Feldman (@svovaf)
374
- */
375
- if ( ! defined( 'WP_FS__IS_BLOG_ADMIN' ) ) {
376
- define( 'WP_FS__IS_BLOG_ADMIN', is_blog_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX && isset( $_REQUEST['_fs_blog_admin'] ) ) );
377
- }
378
-
379
- if ( ! defined( 'WP_FS__SHOW_NETWORK_EVEN_WHEN_DELEGATED' ) ) {
380
- // Set to true to show network level settings even if delegated to site admins.
381
- define( 'WP_FS__SHOW_NETWORK_EVEN_WHEN_DELEGATED', false );
382
- }
383
-
384
- #endregion
385
-
386
- if ( ! defined( 'WP_FS__DEMO_MODE' ) ) {
387
- define( 'WP_FS__DEMO_MODE', false );
388
  }
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2015, Freemius, Inc.
5
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
+ * @since 1.0.4
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ if ( ! defined( 'WP_FS__SLUG' ) ) {
14
+ define( 'WP_FS__SLUG', 'freemius' );
15
+ }
16
+ if ( ! defined( 'WP_FS__DEV_MODE' ) ) {
17
+ define( 'WP_FS__DEV_MODE', false );
18
+ }
19
+
20
+ #--------------------------------------------------------------------------------
21
+ #region API Connectivity Issues Simulation
22
+ #--------------------------------------------------------------------------------
23
+
24
+ if ( ! defined( 'WP_FS__SIMULATE_NO_API_CONNECTIVITY' ) ) {
25
+ define( 'WP_FS__SIMULATE_NO_API_CONNECTIVITY', false );
26
+ }
27
+ if ( ! defined( 'WP_FS__SIMULATE_NO_CURL' ) ) {
28
+ define( 'WP_FS__SIMULATE_NO_CURL', false );
29
+ }
30
+ if ( ! defined( 'WP_FS__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE' ) ) {
31
+ define( 'WP_FS__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE', false );
32
+ }
33
+ if ( ! defined( 'WP_FS__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL' ) ) {
34
+ define( 'WP_FS__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL', false );
35
+ }
36
+ if ( WP_FS__SIMULATE_NO_CURL ) {
37
+ define( 'FS_SDK__SIMULATE_NO_CURL', true );
38
+ }
39
+ if ( WP_FS__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE ) {
40
+ define( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE', true );
41
+ }
42
+ if ( WP_FS__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL ) {
43
+ define( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL', true );
44
+ }
45
+
46
+ #endregion
47
+
48
+ if ( ! defined( 'WP_FS__SIMULATE_FREEMIUS_OFF' ) ) {
49
+ define( 'WP_FS__SIMULATE_FREEMIUS_OFF', false );
50
+ }
51
+
52
+ if ( ! defined( 'WP_FS__PING_API_ON_IP_OR_HOST_CHANGES' ) ) {
53
+ /**
54
+ * @since 1.1.7.3
55
+ * @author Vova Feldman (@svovaf)
56
+ *
57
+ * I'm not sure if shared servers periodically change IP, or the subdomain of the
58
+ * admin dashboard. Also, I've seen sites that have strange loop of switching
59
+ * between domains on a daily basis. Therefore, to eliminate the risk of
60
+ * multiple unwanted connectivity test pings, temporary ignore domain or
61
+ * server IP changes.
62
+ */
63
+ define( 'WP_FS__PING_API_ON_IP_OR_HOST_CHANGES', false );
64
+ }
65
+
66
+ /**
67
+ * If your dev environment supports custom public network IP setup
68
+ * like VVV, please update WP_FS__LOCALHOST_IP with your public IP
69
+ * and uncomment it during dev.
70
+ */
71
+ if ( ! defined( 'WP_FS__LOCALHOST_IP' ) ) {
72
+ // VVV default public network IP.
73
+ define( 'WP_FS__VVV_DEFAULT_PUBLIC_IP', '192.168.50.4' );
74
+
75
+ // define( 'WP_FS__LOCALHOST_IP', WP_FS__VVV_DEFAULT_PUBLIC_IP );
76
+ }
77
+
78
+ /**
79
+ * If true and running with secret key, the opt-in process
80
+ * will skip the email activation process which is invoked
81
+ * when the email of the context user already exist in Freemius
82
+ * database (as a security precaution, to prevent sharing user
83
+ * secret with unauthorized entity).
84
+ *
85
+ * IMPORTANT:
86
+ * AS A SECURITY PRECAUTION, WE VALIDATE THE TIMESTAMP OF THE OPT-IN REQUEST.
87
+ * THEREFORE, MAKE SURE THAT WHEN USING THIS PARAMETER,YOUR TESTING ENVIRONMENT'S
88
+ * CLOCK IS SYNCED.
89
+ */
90
+ if ( ! defined( 'WP_FS__SKIP_EMAIL_ACTIVATION' ) ) {
91
+ define( 'WP_FS__SKIP_EMAIL_ACTIVATION', false );
92
+ }
93
+
94
+
95
+ #--------------------------------------------------------------------------------
96
+ #region Directories
97
+ #--------------------------------------------------------------------------------
98
+
99
+ if ( ! defined( 'WP_FS__DIR' ) ) {
100
+ define( 'WP_FS__DIR', dirname( __FILE__ ) );
101
+ }
102
+ if ( ! defined( 'WP_FS__DIR_INCLUDES' ) ) {
103
+ define( 'WP_FS__DIR_INCLUDES', WP_FS__DIR . '/includes' );
104
+ }
105
+ if ( ! defined( 'WP_FS__DIR_TEMPLATES' ) ) {
106
+ define( 'WP_FS__DIR_TEMPLATES', WP_FS__DIR . '/templates' );
107
+ }
108
+ if ( ! defined( 'WP_FS__DIR_ASSETS' ) ) {
109
+ define( 'WP_FS__DIR_ASSETS', WP_FS__DIR . '/assets' );
110
+ }
111
+ if ( ! defined( 'WP_FS__DIR_CSS' ) ) {
112
+ define( 'WP_FS__DIR_CSS', WP_FS__DIR_ASSETS . '/css' );
113
+ }
114
+ if ( ! defined( 'WP_FS__DIR_JS' ) ) {
115
+ define( 'WP_FS__DIR_JS', WP_FS__DIR_ASSETS . '/js' );
116
+ }
117
+ if ( ! defined( 'WP_FS__DIR_IMG' ) ) {
118
+ define( 'WP_FS__DIR_IMG', WP_FS__DIR_ASSETS . '/img' );
119
+ }
120
+ if ( ! defined( 'WP_FS__DIR_SDK' ) ) {
121
+ define( 'WP_FS__DIR_SDK', WP_FS__DIR_INCLUDES . '/sdk' );
122
+ }
123
+
124
+ #endregion
125
+
126
+ /**
127
+ * Domain / URL / Address
128
+ */
129
+ define( 'WP_FS__ROOT_DOMAIN_PRODUCTION', 'freemius.com' );
130
+ define( 'WP_FS__DOMAIN_PRODUCTION', 'wp.freemius.com' );
131
+ define( 'WP_FS__ADDRESS_PRODUCTION', 'https://' . WP_FS__DOMAIN_PRODUCTION );
132
+
133
+ if ( ! defined( 'WP_FS__DOMAIN_LOCALHOST' ) ) {
134
+ define( 'WP_FS__DOMAIN_LOCALHOST', 'wp.freemius' );
135
+ }
136
+ if ( ! defined( 'WP_FS__ADDRESS_LOCALHOST' ) ) {
137
+ define( 'WP_FS__ADDRESS_LOCALHOST', 'http://' . WP_FS__DOMAIN_LOCALHOST . ':8080' );
138
+ }
139
+
140
+ if ( ! defined( 'WP_FS__TESTING_DOMAIN' ) ) {
141
+ define( 'WP_FS__TESTING_DOMAIN', 'fswp' );
142
+ }
143
+
144
+ #--------------------------------------------------------------------------------
145
+ #region HTTP
146
+ #--------------------------------------------------------------------------------
147
+
148
+ if ( ! defined( 'WP_FS__IS_HTTP_REQUEST' ) ) {
149
+ define( 'WP_FS__IS_HTTP_REQUEST', isset( $_SERVER['HTTP_HOST'] ) );
150
+ }
151
+
152
+ if ( ! defined( 'WP_FS__IS_HTTPS' ) ) {
153
+ define( 'WP_FS__IS_HTTPS', ( WP_FS__IS_HTTP_REQUEST &&
154
+ // Checks if CloudFlare's HTTPS (Flexible SSL support).
155
+ isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) &&
156
+ 'https' === strtolower( $_SERVER['HTTP_X_FORWARDED_PROTO'] )
157
+ ) ||
158
+ // Check if HTTPS request.
159
+ ( isset( $_SERVER['HTTPS'] ) && 'on' == $_SERVER['HTTPS'] ) ||
160
+ ( isset( $_SERVER['SERVER_PORT'] ) && 443 == $_SERVER['SERVER_PORT'] )
161
+ );
162
+ }
163
+
164
+ if ( ! defined( 'WP_FS__IS_POST_REQUEST' ) ) {
165
+ define( 'WP_FS__IS_POST_REQUEST', ( WP_FS__IS_HTTP_REQUEST &&
166
+ strtoupper( $_SERVER['REQUEST_METHOD'] ) == 'POST' ) );
167
+ }
168
+
169
+ if ( ! defined( 'WP_FS__REMOTE_ADDR' ) ) {
170
+ define( 'WP_FS__REMOTE_ADDR', fs_get_ip() );
171
+ }
172
+
173
+ if ( ! defined( 'WP_FS__IS_LOCALHOST' ) ) {
174
+ if ( defined( 'WP_FS__LOCALHOST_IP' ) ) {
175
+ define( 'WP_FS__IS_LOCALHOST', ( WP_FS__LOCALHOST_IP === WP_FS__REMOTE_ADDR ) );
176
+ } else {
177
+ define( 'WP_FS__IS_LOCALHOST', WP_FS__IS_HTTP_REQUEST &&
178
+ is_string( WP_FS__REMOTE_ADDR ) &&
179
+ ( substr( WP_FS__REMOTE_ADDR, 0, 4 ) === '127.' ||
180
+ WP_FS__REMOTE_ADDR === '::1' )
181
+ );
182
+ }
183
+ }
184
+
185
+ if ( ! defined( 'WP_FS__IS_LOCALHOST_FOR_SERVER' ) ) {
186
+ define( 'WP_FS__IS_LOCALHOST_FOR_SERVER', ( ! WP_FS__IS_HTTP_REQUEST ||
187
+ false !== strpos( $_SERVER['HTTP_HOST'], 'localhost' ) ) );
188
+ }
189
+
190
+ #endregion
191
+
192
+ if ( ! defined( 'WP_FS__IS_PRODUCTION_MODE' ) ) {
193
+ // By default, run with Freemius production servers.
194
+ define( 'WP_FS__IS_PRODUCTION_MODE', true );
195
+ }
196
+
197
+ if ( ! defined( 'WP_FS__ADDRESS' ) ) {
198
+ define( 'WP_FS__ADDRESS', ( WP_FS__IS_PRODUCTION_MODE ? WP_FS__ADDRESS_PRODUCTION : WP_FS__ADDRESS_LOCALHOST ) );
199
+ }
200
+
201
+
202
+ #--------------------------------------------------------------------------------
203
+ #region API
204
+ #--------------------------------------------------------------------------------
205
+
206
+ if ( ! defined( 'WP_FS__API_ADDRESS_LOCALHOST' ) ) {
207
+ define( 'WP_FS__API_ADDRESS_LOCALHOST', 'http://api.freemius:8080' );
208
+ }
209
+ if ( ! defined( 'WP_FS__API_SANDBOX_ADDRESS_LOCALHOST' ) ) {
210
+ define( 'WP_FS__API_SANDBOX_ADDRESS_LOCALHOST', 'http://sandbox-api.freemius:8080' );
211
+ }
212
+
213
+ // Set API address for local testing.
214
+ if ( ! WP_FS__IS_PRODUCTION_MODE ) {
215
+ if ( ! defined( 'FS_API__ADDRESS' ) ) {
216
+ define( 'FS_API__ADDRESS', WP_FS__API_ADDRESS_LOCALHOST );
217
+ }
218
+ if ( ! defined( 'FS_API__SANDBOX_ADDRESS' ) ) {
219
+ define( 'FS_API__SANDBOX_ADDRESS', WP_FS__API_SANDBOX_ADDRESS_LOCALHOST );
220
+ }
221
+ }
222
+
223
+ #endregion
224
+
225
+ #--------------------------------------------------------------------------------
226
+ #region Checkout
227
+ #--------------------------------------------------------------------------------
228
+
229
+ if ( ! defined( 'FS_CHECKOUT__ADDRESS_PRODUCTION' ) ) {
230
+ define( 'FS_CHECKOUT__ADDRESS_PRODUCTION', 'https://checkout.freemius.com' );
231
+ }
232
+
233
+ if ( ! defined( 'FS_CHECKOUT__ADDRESS_LOCALHOST' ) ) {
234
+ define( 'FS_CHECKOUT__ADDRESS_LOCALHOST', 'http://checkout.freemius-local.com:8080' );
235
+ }
236
+
237
+ if ( ! defined( 'FS_CHECKOUT__ADDRESS' ) ) {
238
+ define( 'FS_CHECKOUT__ADDRESS', ( WP_FS__IS_PRODUCTION_MODE ? FS_CHECKOUT__ADDRESS_PRODUCTION : FS_CHECKOUT__ADDRESS_LOCALHOST ) );
239
+ }
240
+
241
+ #endregion
242
+
243
+ define( 'WP_FS___OPTION_PREFIX', 'fs' . ( WP_FS__IS_PRODUCTION_MODE ? '' : '_dbg' ) . '_' );
244
+
245
+ if ( ! defined( 'WP_FS__ACCOUNTS_OPTION_NAME' ) ) {
246
+ define( 'WP_FS__ACCOUNTS_OPTION_NAME', WP_FS___OPTION_PREFIX . 'accounts' );
247
+ }
248
+ if ( ! defined( 'WP_FS__API_CACHE_OPTION_NAME' ) ) {
249
+ define( 'WP_FS__API_CACHE_OPTION_NAME', WP_FS___OPTION_PREFIX . 'api_cache' );
250
+ }
251
+ if ( ! defined( 'WP_FS__GDPR_OPTION_NAME' ) ) {
252
+ define( 'WP_FS__GDPR_OPTION_NAME', WP_FS___OPTION_PREFIX . 'gdpr' );
253
+ }
254
+ define( 'WP_FS__OPTIONS_OPTION_NAME', WP_FS___OPTION_PREFIX . 'options' );
255
+
256
+ /**
257
+ * Module types
258
+ *
259
+ * @since 1.2.2
260
+ */
261
+ define( 'WP_FS__MODULE_TYPE_PLUGIN', 'plugin' );
262
+ define( 'WP_FS__MODULE_TYPE_THEME', 'theme' );
263
+
264
+ /**
265
+ * Billing Frequencies
266
+ */
267
+ define( 'WP_FS__PERIOD_ANNUALLY', 'annual' );
268
+ define( 'WP_FS__PERIOD_MONTHLY', 'monthly' );
269
+ define( 'WP_FS__PERIOD_LIFETIME', 'lifetime' );
270
+
271
+ /**
272
+ * Plans
273
+ */
274
+ define( 'WP_FS__PLAN_DEFAULT_PAID', false );
275
+ define( 'WP_FS__PLAN_FREE', 'free' );
276
+ define( 'WP_FS__PLAN_TRIAL', 'trial' );
277
+
278
+ /**
279
+ * Times in seconds
280
+ */
281
+ if ( ! defined( 'WP_FS__TIME_5_MIN_IN_SEC' ) ) {
282
+ define( 'WP_FS__TIME_5_MIN_IN_SEC', 300 );
283
+ }
284
+ if ( ! defined( 'WP_FS__TIME_10_MIN_IN_SEC' ) ) {
285
+ define( 'WP_FS__TIME_10_MIN_IN_SEC', 600 );
286
+ }
287
+ // define( 'WP_FS__TIME_15_MIN_IN_SEC', 900 );
288
+ if ( ! defined( 'WP_FS__TIME_12_HOURS_IN_SEC' ) ) {
289
+ define( 'WP_FS__TIME_12_HOURS_IN_SEC', 43200 );
290
+ }
291
+ if ( ! defined( 'WP_FS__TIME_24_HOURS_IN_SEC' ) ) {
292
+ define( 'WP_FS__TIME_24_HOURS_IN_SEC', WP_FS__TIME_12_HOURS_IN_SEC * 2 );
293
+ }
294
+ if ( ! defined( 'WP_FS__TIME_WEEK_IN_SEC' ) ) {
295
+ define( 'WP_FS__TIME_WEEK_IN_SEC', 7 * WP_FS__TIME_24_HOURS_IN_SEC );
296
+ }
297
+
298
+ #--------------------------------------------------------------------------------
299
+ #region Debugging
300
+ #--------------------------------------------------------------------------------
301
+
302
+ if ( ! defined( 'WP_FS__DEBUG_SDK' ) ) {
303
+ $debug_mode = get_option( 'fs_debug_mode', null );
304
+
305
+ if ( $debug_mode === null ) {
306
+ $debug_mode = false;
307
+ add_option( 'fs_debug_mode', $debug_mode );
308
+ }
309
+
310
+ define( 'WP_FS__DEBUG_SDK', is_numeric( $debug_mode ) ? ( 0 < $debug_mode ) : WP_FS__DEV_MODE );
311
+ }
312
+
313
+ if ( ! defined( 'WP_FS__ECHO_DEBUG_SDK' ) ) {
314
+ define( 'WP_FS__ECHO_DEBUG_SDK', WP_FS__DEV_MODE && ! empty( $_GET['fs_dbg_echo'] ) );
315
+ }
316
+ if ( ! defined( 'WP_FS__LOG_DATETIME_FORMAT' ) ) {
317
+ define( 'WP_FS__LOG_DATETIME_FORMAT', 'Y-m-d H:i:s' );
318
+ }
319
+ if ( ! defined( 'FS_API__LOGGER_ON' ) ) {
320
+ define( 'FS_API__LOGGER_ON', WP_FS__DEBUG_SDK );
321
+ }
322
+
323
+ if ( WP_FS__ECHO_DEBUG_SDK ) {
324
+ error_reporting( E_ALL );
325
+ }
326
+
327
+ #endregion
328
+
329
+ if ( ! defined( 'WP_FS__SCRIPT_START_TIME' ) ) {
330
+ define( 'WP_FS__SCRIPT_START_TIME', time() );
331
+ }
332
+ if ( ! defined( 'WP_FS__DEFAULT_PRIORITY' ) ) {
333
+ define( 'WP_FS__DEFAULT_PRIORITY', 10 );
334
+ }
335
+ if ( ! defined( 'WP_FS__LOWEST_PRIORITY' ) ) {
336
+ define( 'WP_FS__LOWEST_PRIORITY', 999999999 );
337
+ }
338
+
339
+ #--------------------------------------------------------------------------------
340
+ #region Multisite Network
341
+ #--------------------------------------------------------------------------------
342
+
343
+ /**
344
+ * Do not use this define directly, it will have the wrong value
345
+ * during plugin uninstall/deletion when the inclusion of the plugin
346
+ * is triggered due to registration with register_uninstall_hook().
347
+ *
348
+ * Instead, use fs_is_network_admin().
349
+ *
350
+ * @author Vova Feldman (@svovaf)
351
+ */
352
+ if ( ! defined( 'WP_FS__IS_NETWORK_ADMIN' ) ) {
353
+ define( 'WP_FS__IS_NETWORK_ADMIN',
354
+ is_network_admin() ||
355
+ ( is_multisite() &&
356
+ ( ( defined( 'DOING_AJAX' ) && DOING_AJAX &&
357
+ ( isset( $_REQUEST['_fs_network_admin'] ) /*||
358
+ ( ! empty( $_REQUEST['action'] ) && 'delete-plugin' === $_REQUEST['action'] )*/ )
359
+ ) ||
360
+ // Plugin uninstall.
361
+ defined( 'WP_UNINSTALL_PLUGIN' ) )
362
+ )
363
+ );
364
+ }
365
+
366
+ /**
367
+ * Do not use this define directly, it will have the wrong value
368
+ * during plugin uninstall/deletion when the inclusion of the plugin
369
+ * is triggered due to registration with register_uninstall_hook().
370
+ *
371
+ * Instead, use fs_is_blog_admin().
372
+ *
373
+ * @author Vova Feldman (@svovaf)
374
+ */
375
+ if ( ! defined( 'WP_FS__IS_BLOG_ADMIN' ) ) {
376
+ define( 'WP_FS__IS_BLOG_ADMIN', is_blog_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX && isset( $_REQUEST['_fs_blog_admin'] ) ) );
377
+ }
378
+
379
+ if ( ! defined( 'WP_FS__SHOW_NETWORK_EVEN_WHEN_DELEGATED' ) ) {
380
+ // Set to true to show network level settings even if delegated to site admins.
381
+ define( 'WP_FS__SHOW_NETWORK_EVEN_WHEN_DELEGATED', false );
382
+ }
383
+
384
+ #endregion
385
+
386
+ if ( ! defined( 'WP_FS__DEMO_MODE' ) ) {
387
+ define( 'WP_FS__DEMO_MODE', false );
388
  }
freemius/gulpfile.js DELETED
@@ -1,167 +0,0 @@
1
- var gulp = require('gulp');
2
- var path = require('path');
3
- var filesystem = require('fs');
4
- var wpPot = require('gulp-wp-pot');
5
- var gettext = require('gulp-gettext');
6
- var sort = require('gulp-sort');
7
- var pofill = require('gulp-pofill');
8
- var rename = require('gulp-rename');
9
- var clean = require('gulp-clean');
10
-
11
- var languagesFolder = './languages/';
12
-
13
- var options = require('./transifex-config.json');
14
-
15
- function getFolders(dir) {
16
- return filesystem.readdirSync(dir)
17
- .filter(function (file) {
18
- return filesystem.statSync(path.join(dir, file)).isDirectory();
19
- });
20
- }
21
-
22
- var transifex = require('gulp-transifex').createClient(options);
23
-
24
- // Create POT out of i18n.php.
25
- gulp.task('prepare-source', function () {
26
- gulp.src('**/*.php')
27
- .pipe(sort())
28
- .pipe(wpPot({
29
- destFile : 'freemius.pot',
30
- package : 'freemius',
31
- bugReport : 'https://github.com/Freemius/wordpress-sdk/issues',
32
- lastTranslator : 'Vova Feldman <vova@freemius.com>',
33
- team : 'Freemius Team <admin@freemius.com>',
34
- /*gettextMethods: {
35
- instances: ['this', '_fs'],
36
- methods: [
37
- 'get_text_inline'
38
- ]
39
- },*/
40
- gettextFunctions: [
41
- {name: 'get_text_inline'},
42
-
43
- {name: 'fs_text_inline'},
44
- {name: 'fs_echo_inline'},
45
- {name: 'fs_esc_js_inline'},
46
- {name: 'fs_esc_attr_inline'},
47
- {name: 'fs_esc_attr_echo_inline'},
48
- {name: 'fs_esc_html_inline'},
49
- {name: 'fs_esc_html_echo_inline'},
50
-
51
- {name: 'get_text_x_inline', context: 2},
52
- {name: 'fs_text_x_inline', context: 2},
53
- {name: 'fs_echo_x_inline', context: 2},
54
- {name: 'fs_esc_attr_x_inline', context: 2},
55
- {name: 'fs_esc_js_x_inline', context: 2},
56
- {name: 'fs_esc_js_echo_x_inline', context: 2},
57
- {name: 'fs_esc_html_x_inline', context: 2},
58
- {name: 'fs_esc_html_echo_x_inline', context: 2}
59
- /*,
60
-
61
-
62
- {name: '_fs_text'},
63
- {name: '_fs_x', context: 2},
64
- {name: '_fs_echo'},
65
- {name: '_fs_esc_attr'},
66
- {name: '_fs_esc_attr_echo'},
67
- {name: '_fs_esc_html'},
68
- {name: '_fs_esc_html_echo'},
69
- {name: '_fs_ex', context: 2},
70
- {name: '_fs_esc_attr_x', context: 2},
71
- {name: '_fs_esc_html_x', context: 2},
72
-
73
- {name: '_fs_n', plural: 2},
74
- {name: '_fs_n_noop', plural: 2},
75
- {name: '_fs_nx', plural: 2, context: 4},
76
- {name: '_fs_nx_noop', plural: 2, context: 3}*/
77
- ]
78
- }))
79
- .pipe(gulp.dest(languagesFolder + 'freemius.pot'));
80
-
81
- // Create English PO out of the POT.
82
- return gulp.src(languagesFolder + 'freemius.pot')
83
- .pipe(pofill({
84
- items: function (item) {
85
- // If msgstr is empty, use identity translation
86
- if (!item.msgstr.length) {
87
- item.msgstr = [''];
88
- }
89
- if (!item.msgstr[0]) {
90
- item.msgstr[0] = item.msgid;
91
- }
92
- return item;
93
- }
94
- }))
95
- .pipe(rename('freemius-en.po'))
96
- .pipe(gulp.dest(languagesFolder));
97
- });
98
-
99
- // Push updated po resource to transifex.
100
- gulp.task('update-transifex', ['prepare-source'], function () {
101
- return gulp.src(languagesFolder + 'freemius-en.po')
102
- .pipe(transifex.pushResource());
103
- });
104
-
105
- // Download latest *.po translations.
106
- gulp.task('download-translations', ['update-transifex'], function () {
107
- return gulp.src(languagesFolder + 'freemius-en.po')
108
- .pipe(transifex.pullResource());
109
- });
110
-
111
- // Move translations to languages root.
112
- gulp.task('prepare-translations', ['download-translations'], function () {
113
- var folders = getFolders(languagesFolder);
114
-
115
- return folders.map(function (folder) {
116
- return gulp.src(path.join(languagesFolder, folder, 'freemius-en.po'))
117
- .pipe(rename('freemius-' + folder + '.po'))
118
- .pipe(gulp.dest(languagesFolder));
119
- });
120
- });
121
-
122
- // Feel up empty translations with English.
123
- gulp.task('translations-feelup', ['prepare-translations'], function () {
124
- return gulp.src(languagesFolder + '*.po')
125
- .pipe(pofill({
126
- items: function (item) {
127
- // If msgstr is empty, use identity translation
128
- if (0 == item.msgstr.length) {
129
- item.msgstr = [''];
130
- }
131
- if (0 == item.msgstr[0].length) {
132
- // item.msgid[0] = item.msgid;
133
- item.msgstr[0] = item.msgid;
134
- }
135
- return item;
136
- }
137
- }))
138
- .pipe(gulp.dest(languagesFolder));
139
- });
140
-
141
- // Cleanup temporary translation folders.
142
- gulp.task('cleanup', ['prepare-translations'], function () {
143
- var folders = getFolders(languagesFolder);
144
-
145
- return folders.map(function (folder) {
146
- return gulp.src(path.join(languagesFolder, folder), {read: false})
147
- .pipe(clean());
148
- });
149
- });
150
-
151
- // Compile *.po to *.mo binaries for usage.
152
- gulp.task('compile-translations', ['translations-feelup'], function () {
153
- // Compile POs to MOs.
154
- return gulp.src(languagesFolder + '*.po')
155
- .pipe(gettext())
156
- .pipe(gulp.dest(languagesFolder))
157
- });
158
-
159
- gulp.task('default', [], function () {
160
- gulp.run('prepare-source');
161
- gulp.run('update-transifex');
162
- gulp.run('download-translations');
163
- gulp.run('prepare-translations');
164
- gulp.run('translations-feelup');
165
- gulp.run('cleanup');
166
- gulp.run('compile-translations');
167
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
freemius/includes/class-freemius-abstract.php CHANGED
@@ -1,597 +1,597 @@
1
- <?php
2
- /**
3
- * @package Freemius
4
- * @copyright Copyright (c) 2015, Freemius, Inc.
5
- * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
- * @since 1.0.7
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
-
14
- /**
15
- * - Each instance of Freemius class represents a single plugin
16
- * install by a single user (the installer of the plugin).
17
- *
18
- * - Each website can only have one install of the same plugin.
19
- *
20
- * - Install entity is only created after a user connects his account with Freemius.
21
- *
22
- * Class Freemius_Abstract
23
- */
24
- abstract class Freemius_Abstract {
25
-
26
- #----------------------------------------------------------------------------------
27
- #region Identity
28
- #----------------------------------------------------------------------------------
29
-
30
- /**
31
- * Check if user has connected his account (opted-in).
32
- *
33
- * Note:
34
- * If the user opted-in and opted-out on a later stage,
35
- * this will still return true. If you want to check if the
36
- * user is currently opted-in, use:
37
- * `$fs->is_registered() && $fs->is_tracking_allowed()`
38
- *
39
- * @since 1.0.1
40
- * @return bool
41
- */
42
- abstract function is_registered();
43
-
44
- /**
45
- * Check if the user skipped connecting the account with Freemius.
46
- *
47
- * @since 1.0.7
48
- *
49
- * @return bool
50
- */
51
- abstract function is_anonymous();
52
-
53
- /**
54
- * Check if the user currently in activation mode.
55
- *
56
- * @since 1.0.7
57
- *
58
- * @return bool
59
- */
60
- abstract function is_activation_mode();
61
-
62
- #endregion
63
-
64
- #----------------------------------------------------------------------------------
65
- #region Usage Tracking
66
- #----------------------------------------------------------------------------------
67
-
68
- /**
69
- * Returns TRUE if the user opted-in and didn't disconnect (opt-out).
70
- *
71
- * @author Leo Fajardo (@leorw)
72
- * @since 1.2.1.5
73
- *
74
- * @return bool
75
- */
76
- abstract function is_tracking_allowed();
77
-
78
- /**
79
- * Returns TRUE if the user never opted-in or manually opted-out.
80
- *
81
- * @author Vova Feldman (@svovaf)
82
- * @since 1.2.1.5
83
- *
84
- * @return bool
85
- */
86
- function is_tracking_prohibited() {
87
- return ! $this->is_registered() || ! $this->is_tracking_allowed();
88
- }
89
-
90
- /**
91
- * Opt-out from usage tracking.
92
- *
93
- * Note: This will not delete the account information but will stop all tracking.
94
- *
95
- * Returns:
96
- * 1. FALSE - If the user never opted-in.
97
- * 2. TRUE - If successfully opted-out.
98
- * 3. object - API Result on failure.
99
- *
100
- * @author Leo Fajardo (@leorw)
101
- * @since 1.2.1.5
102
- *
103
- * @return bool|object
104
- */
105
- abstract function stop_tracking();
106
-
107
- /**
108
- * Opt-in back into usage tracking.
109
- *
110
- * Note: This will only work if the user opted-in previously.
111
- *
112
- * Returns:
113
- * 1. FALSE - If the user never opted-in.
114
- * 2. TRUE - If successfully opted-in back to usage tracking.
115
- * 3. object - API result on failure.
116
- *
117
- * @author Leo Fajardo (@leorw)
118
- * @since 1.2.1.5
119
- *
120
- * @return bool|object
121
- */
122
- abstract function allow_tracking();
123
-
124
- #endregion
125
-
126
- #----------------------------------------------------------------------------------
127
- #region Module Type
128
- #----------------------------------------------------------------------------------
129
-
130
- /**
131
- * Checks if the plugin's type is "plugin". The other type is "theme".
132
- *
133
- * @author Leo Fajardo (@leorw)
134
- * @since 1.2.2
135
- *
136
- * @return bool
137
- */
138
- abstract function is_plugin();
139
-
140
- /**
141
- * Checks if the module type is "theme". The other type is "plugin".
142
- *
143
- * @author Leo Fajardo (@leorw)
144
- * @since 1.2.2
145
- *
146
- * @return bool
147
- */
148
- function is_theme() {
149
- return ( ! $this->is_plugin() );
150
- }
151
-
152
- #endregion
153
-
154
- #----------------------------------------------------------------------------------
155
- #region Permissions
156
- #----------------------------------------------------------------------------------
157
-
158
- /**
159
- * Check if plugin must be WordPress.org compliant.
160
- *
161
- * @since 1.0.7
162
- *
163
- * @return bool
164
- */
165
- abstract function is_org_repo_compliant();
166
-
167
- /**
168
- * Check if plugin is allowed to install executable files.
169
- *
170
- * @author Vova Feldman (@svovaf)
171
- * @since 1.0.5
172
- *
173
- * @return bool
174
- */
175
- function is_allowed_to_install() {
176
- return ( $this->is_premium() || ! $this->is_org_repo_compliant() );
177
- }
178
-
179
- #endregion
180
-
181
- /**
182
- * Check if user in trial or in free plan (not paying).
183
- *
184
- * @author Vova Feldman (@svovaf)
185
- * @since 1.0.4
186
- *
187
- * @return bool
188
- */
189
- function is_not_paying() {
190
- return ( $this->is_trial() || $this->is_free_plan() );
191
- }
192
-
193
- /**
194
- * Check if the user has an activated and valid paid license on current plugin's install.
195
- *
196
- * @since 1.0.9
197
- *
198
- * @return bool
199
- */
200
- abstract function is_paying();
201
-
202
- /**
203
- * Check if the user is paying or in trial.
204
- *
205
- * @since 1.0.9
206
- *
207
- * @return bool
208
- */
209
- function is_paying_or_trial() {
210
- return ( $this->is_paying() || $this->is_trial() );
211
- }
212
-
213
- /**
214
- * Check if user in a trial or have feature enabled license.
215
- *
216
- * @author Vova Feldman (@svovaf)
217
- * @since 1.1.7
218
- *
219
- * @return bool
220
- */
221
- abstract function can_use_premium_code();
222
-
223
- #----------------------------------------------------------------------------------
224
- #region Premium Only
225
- #----------------------------------------------------------------------------------
226
-
227
- /**
228
- * All logic wrapped in methods with "__premium_only()" suffix will be only
229
- * included in the premium code.
230
- *
231
- * Example:
232
- * if ( freemius()->is__premium_only() ) {
233
- * ...
234
- * }
235
- */
236
-
237
- /**
238
- * Returns true when running premium plugin code.
239
- *
240
- * @since 1.0.9
241
- *
242
- * @return bool
243
- */
244
- function is__premium_only() {
245
- return $this->is_premium();
246
- }
247
-
248
- /**
249
- * Check if the user has an activated and valid paid license on current plugin's install.
250
- *
251
- * @since 1.0.9
252
- *
253
- * @return bool
254
- *
255
- */
256
- function is_paying__premium_only() {
257
- return ( $this->is__premium_only() && $this->is_paying() );
258
- }
259
-
260
- /**
261
- * All code wrapped in this statement will be only included in the premium code.
262
- *
263
- * @since 1.0.9
264
- *
265
- * @param string $plan Plan name.
266
- * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
267
- *
268
- * @return bool
269
- */
270
- function is_plan__premium_only( $plan, $exact = false ) {
271
- return ( $this->is_premium() && $this->is_plan( $plan, $exact ) );
272
- }
273
-
274
- /**
275
- * Check if plan matches active license' plan or active trial license' plan.
276
- *
277
- * All code wrapped in this statement will be only included in the premium code.
278
- *
279
- * @since 1.0.9
280
- *
281
- * @param string $plan Plan name.
282
- * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
283
- *
284
- * @return bool
285
- */
286
- function is_plan_or_trial__premium_only( $plan, $exact = false ) {
287
- return ( $this->is_premium() && $this->is_plan_or_trial( $plan, $exact ) );
288
- }
289
-
290
- /**
291
- * Check if the user is paying or in trial.
292
- *
293
- * All code wrapped in this statement will be only included in the premium code.
294
- *
295
- * @since 1.0.9
296
- *
297
- * @return bool
298
- */
299
- function is_paying_or_trial__premium_only() {
300
- return $this->is_premium() && $this->is_paying_or_trial();
301
- }
302
-
303
- /**
304
- * Check if the user has an activated and valid paid license on current plugin's install.
305
- *
306
- * @since 1.0.4
307
- *
308
- * @return bool
309
- *
310
- * @deprecated Method name is confusing since it's not clear from the name the code will be removed.
311
- * @using Alias to is_paying__premium_only()
312
- */
313
- function is_paying__fs__() {
314
- return $this->is_paying__premium_only();
315
- }
316
-
317
- /**
318
- * Check if user in a trial or have feature enabled license.
319
- *
320
- * All code wrapped in this statement will be only included in the premium code.
321
- *
322
- * @author Vova Feldman (@svovaf)
323
- * @since 1.1.9
324
- *
325
- * @return bool
326
- */
327
- function can_use_premium_code__premium_only() {
328
- return $this->is_premium() && $this->can_use_premium_code();
329
- }
330
-
331
- #endregion
332
-
333
- #----------------------------------------------------------------------------------
334
- #region Trial
335
- #----------------------------------------------------------------------------------
336
-
337
- /**
338
- * Check if the user in a trial.
339
- *
340
- * @since 1.0.3
341
- *
342
- * @return bool
343
- */
344
- abstract function is_trial();
345
-
346
- /**
347
- * Check if trial already utilized.
348
- *
349
- * @since 1.0.9
350
- *
351
- * @return bool
352
- */
353
- abstract function is_trial_utilized();
354
-
355
- #endregion
356
-
357
- #----------------------------------------------------------------------------------
358
- #region Plans
359
- #----------------------------------------------------------------------------------
360
-
361
- /**
362
- * Check if the user is on the free plan of the product.
363
- *
364
- * @since 1.0.4
365
- *
366
- * @return bool
367
- */
368
- abstract function is_free_plan();
369
-
370
- /**
371
- * @since 1.0.2
372
- *
373
- * @param string $plan Plan name.
374
- * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
375
- *
376
- * @return bool
377
- */
378
- abstract function is_plan( $plan, $exact = false );
379
-
380
- /**
381
- * Check if plan based on trial. If not in trial mode, should return false.
382
- *
383
- * @since 1.0.9
384
- *
385
- * @param string $plan Plan name.
386
- * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
387
- *
388
- * @return bool
389
- */
390
- abstract function is_trial_plan( $plan, $exact = false );
391
-
392
- /**
393
- * Check if plan matches active license' plan or active trial license' plan.
394
- *
395
- * @since 1.0.9
396
- *
397
- * @param string $plan Plan name.
398
- * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
399
- *
400
- * @return bool
401
- */
402
- function is_plan_or_trial( $plan, $exact = false ) {
403
- return $this->is_plan( $plan, $exact ) ||
404
- $this->is_trial_plan( $plan, $exact );
405
- }
406
-
407
- /**
408
- * Check if plugin has any paid plans.
409
- *
410
- * @author Vova Feldman (@svovaf)
411
- * @since 1.0.7
412
- *
413
- * @return bool
414
- */
415
- abstract function has_paid_plan();
416
-
417
- /**
418
- * Check if plugin has any free plan, or is it premium only.
419
- *
420
- * Note: If no plans configured, assume plugin is free.
421
- *
422
- * @author Vova Feldman (@svovaf)
423
- * @since 1.0.7
424
- *
425
- * @return bool
426
- */
427
- abstract function has_free_plan();
428
-
429
- /**
430
- * Check if plugin is premium only (no free plans).
431
- *
432
- * NOTE: is__premium_only() is very different method, don't get confused.
433
- *
434
- * @author Vova Feldman (@svovaf)
435
- * @since 1.1.9
436
- *
437
- * @return bool
438
- */
439
- abstract function is_only_premium();
440
-
441
- /**
442
- * Check if module has a premium code version.
443
- *
444
- * Serviceware module might be freemium without any
445
- * premium code version, where the paid features
446
- * are all part of the service.
447
- *
448
- * @author Vova Feldman (@svovaf)
449
- * @since 1.2.1.6
450
- *
451
- * @return bool
452
- */
453
- abstract function has_premium_version();
454
-
455
- /**
456
- * Check if module has any release on Freemius,
457
- * or all plugin's code is on WordPress.org (Serviceware).
458
- *
459
- * @return bool
460
- */
461
- function has_release_on_freemius() {
462
- return ! $this->is_org_repo_compliant() ||
463
- $this->has_premium_version();
464
- }
465
-
466
- /**
467
- * Checks if it's a freemium plugin.
468
- *
469
- * @author Vova Feldman (@svovaf)
470
- * @since 1.1.9
471
- *
472
- * @return bool
473
- */
474
- function is_freemium() {
475
- return $this->has_paid_plan() &&
476
- $this->has_free_plan();
477
- }
478
-
479
- /**
480
- * Check if module has only one plan.
481
- *
482
- * @author Vova Feldman (@svovaf)
483
- * @since 1.2.1.7
484
- *
485
- * @return bool
486
- */
487
- abstract function is_single_plan();
488
-
489
- #endregion
490
-
491
- /**
492
- * Check if running payments in sandbox mode.
493
- *
494
- * @since 1.0.4
495
- *
496
- * @return bool
497
- */
498
- abstract function is_payments_sandbox();
499
-
500
- /**
501
- * Check if running test vs. live plugin.
502
- *
503
- * @since 1.0.5
504
- *
505
- * @return bool
506
- */
507
- abstract function is_live();
508
-
509
- /**
510
- * Check if running premium plugin code.
511
- *
512
- * @since 1.0.5
513
- *
514
- * @return bool
515
- */
516
- abstract function is_premium();
517
-
518
- /**
519
- * Get upgrade URL.
520
- *
521
- * @author Vova Feldman (@svovaf)
522
- * @since 1.0.2
523
- *
524
- * @param string $period Billing cycle.
525
- *
526
- * @return string
527
- */
528
- abstract function get_upgrade_url( $period = WP_FS__PERIOD_ANNUALLY );
529
-
530
- /**
531
- * Check if Freemius was first added in a plugin update.
532
- *
533
- * @author Vova Feldman (@svovaf)
534
- * @since 1.1.5
535
- *
536
- * @return bool
537
- */
538
- function is_plugin_update() {
539
- return ! $this->is_plugin_new_install();
540
- }
541
-
542
- /**
543
- * Check if Freemius was part of the plugin when the user installed it first.
544
- *
545
- * @author Vova Feldman (@svovaf)
546
- * @since 1.1.5
547
- *
548
- * @return bool
549
- */
550
- abstract function is_plugin_new_install();
551
-
552
- #----------------------------------------------------------------------------------
553
- #region Marketing
554
- #----------------------------------------------------------------------------------
555
-
556
- /**
557
- * Check if current user purchased any other plugins before.
558
- *
559
- * @author Vova Feldman (@svovaf)
560
- * @since 1.0.9
561
- *
562
- * @return bool
563
- */
564
- abstract function has_purchased_before();
565
-
566
- /**
567
- * Check if current user classified as an agency.
568
- *
569
- * @author Vova Feldman (@svovaf)
570
- * @since 1.0.9
571
- *
572
- * @return bool
573
- */
574
- abstract function is_agency();
575
-
576
- /**
577
- * Check if current user classified as a developer.
578
- *
579
- * @author Vova Feldman (@svovaf)
580
- * @since 1.0.9
581
- *
582
- * @return bool
583
- */
584
- abstract function is_developer();
585
-
586
- /**
587
- * Check if current user classified as a business.
588
- *
589
- * @author Vova Feldman (@svovaf)
590
- * @since 1.0.9
591
- *
592
- * @return bool
593
- */
594
- abstract function is_business();
595
-
596
- #endregion
597
  }
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2015, Freemius, Inc.
5
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
+ * @since 1.0.7
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+
14
+ /**
15
+ * - Each instance of Freemius class represents a single plugin
16
+ * install by a single user (the installer of the plugin).
17
+ *
18
+ * - Each website can only have one install of the same plugin.
19
+ *
20
+ * - Install entity is only created after a user connects his account with Freemius.
21
+ *
22
+ * Class Freemius_Abstract
23
+ */
24
+ abstract class Freemius_Abstract {
25
+
26
+ #----------------------------------------------------------------------------------
27
+ #region Identity
28
+ #----------------------------------------------------------------------------------
29
+
30
+ /**
31
+ * Check if user has connected his account (opted-in).
32
+ *
33
+ * Note:
34
+ * If the user opted-in and opted-out on a later stage,
35
+ * this will still return true. If you want to check if the
36
+ * user is currently opted-in, use:
37
+ * `$fs->is_registered() && $fs->is_tracking_allowed()`
38
+ *
39
+ * @since 1.0.1
40
+ * @return bool
41
+ */
42
+ abstract function is_registered();
43
+
44
+ /**
45
+ * Check if the user skipped connecting the account with Freemius.
46
+ *
47
+ * @since 1.0.7
48
+ *
49
+ * @return bool
50
+ */
51
+ abstract function is_anonymous();
52
+
53
+ /**
54
+ * Check if the user currently in activation mode.
55
+ *
56
+ * @since 1.0.7
57
+ *
58
+ * @return bool
59
+ */
60
+ abstract function is_activation_mode();
61
+
62
+ #endregion
63
+
64
+ #----------------------------------------------------------------------------------
65
+ #region Usage Tracking
66
+ #----------------------------------------------------------------------------------
67
+
68
+ /**
69
+ * Returns TRUE if the user opted-in and didn't disconnect (opt-out).
70
+ *
71
+ * @author Leo Fajardo (@leorw)
72
+ * @since 1.2.1.5
73
+ *
74
+ * @return bool
75
+ */
76
+ abstract function is_tracking_allowed();
77
+
78
+ /**
79
+ * Returns TRUE if the user never opted-in or manually opted-out.
80
+ *
81
+ * @author Vova Feldman (@svovaf)
82
+ * @since 1.2.1.5
83
+ *
84
+ * @return bool
85
+ */
86
+ function is_tracking_prohibited() {
87
+ return ! $this->is_registered() || ! $this->is_tracking_allowed();
88
+ }
89
+
90
+ /**
91
+ * Opt-out from usage tracking.
92
+ *
93
+ * Note: This will not delete the account information but will stop all tracking.
94
+ *
95
+ * Returns:
96
+ * 1. FALSE - If the user never opted-in.
97
+ * 2. TRUE - If successfully opted-out.
98
+ * 3. object - API Result on failure.
99
+ *
100
+ * @author Leo Fajardo (@leorw)
101
+ * @since 1.2.1.5
102
+ *
103
+ * @return bool|object
104
+ */
105
+ abstract function stop_tracking();
106
+
107
+ /**
108
+ * Opt-in back into usage tracking.
109
+ *
110
+ * Note: This will only work if the user opted-in previously.
111
+ *
112
+ * Returns:
113
+ * 1. FALSE - If the user never opted-in.
114
+ * 2. TRUE - If successfully opted-in back to usage tracking.
115
+ * 3. object - API result on failure.
116
+ *
117
+ * @author Leo Fajardo (@leorw)
118
+ * @since 1.2.1.5
119
+ *
120
+ * @return bool|object
121
+ */
122
+ abstract function allow_tracking();
123
+
124
+ #endregion
125
+
126
+ #----------------------------------------------------------------------------------
127
+ #region Module Type
128
+ #----------------------------------------------------------------------------------
129
+
130
+ /**
131
+ * Checks if the plugin's type is "plugin". The other type is "theme".
132
+ *
133
+ * @author Leo Fajardo (@leorw)
134
+ * @since 1.2.2
135
+ *
136
+ * @return bool
137
+ */
138
+ abstract function is_plugin();
139
+
140
+ /**
141
+ * Checks if the module type is "theme". The other type is "plugin".
142
+ *
143
+ * @author Leo Fajardo (@leorw)
144
+ * @since 1.2.2
145
+ *
146
+ * @return bool
147
+ */
148
+ function is_theme() {
149
+ return ( ! $this->is_plugin() );
150
+ }
151
+
152
+ #endregion
153
+
154
+ #----------------------------------------------------------------------------------
155
+ #region Permissions
156
+ #----------------------------------------------------------------------------------
157
+
158
+ /**
159
+ * Check if plugin must be WordPress.org compliant.
160
+ *
161
+ * @since 1.0.7
162
+ *
163
+ * @return bool
164
+ */
165
+ abstract function is_org_repo_compliant();
166
+
167
+ /**
168
+ * Check if plugin is allowed to install executable files.
169
+ *
170
+ * @author Vova Feldman (@svovaf)
171
+ * @since 1.0.5
172
+ *
173
+ * @return bool
174
+ */
175
+ function is_allowed_to_install() {
176
+ return ( $this->is_premium() || ! $this->is_org_repo_compliant() );
177
+ }
178
+
179
+ #endregion
180
+
181
+ /**
182
+ * Check if user in trial or in free plan (not paying).
183
+ *
184
+ * @author Vova Feldman (@svovaf)
185
+ * @since 1.0.4
186
+ *
187
+ * @return bool
188
+ */
189
+ function is_not_paying() {
190
+ return ( $this->is_trial() || $this->is_free_plan() );
191
+ }
192
+
193
+ /**
194
+ * Check if the user has an activated and valid paid license on current plugin's install.
195
+ *
196
+ * @since 1.0.9
197
+ *
198
+ * @return bool
199
+ */
200
+ abstract function is_paying();
201
+
202
+ /**
203
+ * Check if the user is paying or in trial.
204
+ *
205
+ * @since 1.0.9
206
+ *
207
+ * @return bool
208
+ */
209
+ function is_paying_or_trial() {
210
+ return ( $this->is_paying() || $this->is_trial() );
211
+ }
212
+
213
+ /**
214
+ * Check if user in a trial or have feature enabled license.
215
+ *
216
+ * @author Vova Feldman (@svovaf)
217
+ * @since 1.1.7
218
+ *
219
+ * @return bool
220
+ */
221
+ abstract function can_use_premium_code();
222
+
223
+ #----------------------------------------------------------------------------------
224
+ #region Premium Only
225
+ #----------------------------------------------------------------------------------
226
+
227
+ /**
228
+ * All logic wrapped in methods with "__premium_only()" suffix will be only
229
+ * included in the premium code.
230
+ *
231
+ * Example:
232
+ * if ( freemius()->is__premium_only() ) {
233
+ * ...
234
+ * }
235
+ */
236
+
237
+ /**
238
+ * Returns true when running premium plugin code.
239
+ *
240
+ * @since 1.0.9
241
+ *
242
+ * @return bool
243
+ */
244
+ function is__premium_only() {
245
+ return $this->is_premium();
246
+ }
247
+
248
+ /**
249
+ * Check if the user has an activated and valid paid license on current plugin's install.
250
+ *
251
+ * @since 1.0.9
252
+ *
253
+ * @return bool
254
+ *
255
+ */
256
+ function is_paying__premium_only() {
257
+ return ( $this->is__premium_only() && $this->is_paying() );
258
+ }
259
+
260
+ /**
261
+ * All code wrapped in this statement will be only included in the premium code.
262
+ *
263
+ * @since 1.0.9
264
+ *
265
+ * @param string $plan Plan name.
266
+ * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
267
+ *
268
+ * @return bool
269
+ */
270
+ function is_plan__premium_only( $plan, $exact = false ) {
271
+ return ( $this->is_premium() && $this->is_plan( $plan, $exact ) );
272
+ }
273
+
274
+ /**
275
+ * Check if plan matches active license' plan or active trial license' plan.
276
+ *
277
+ * All code wrapped in this statement will be only included in the premium code.
278
+ *
279
+ * @since 1.0.9
280
+ *
281
+ * @param string $plan Plan name.
282
+ * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
283
+ *
284
+ * @return bool
285
+ */
286
+ function is_plan_or_trial__premium_only( $plan, $exact = false ) {
287
+ return ( $this->is_premium() && $this->is_plan_or_trial( $plan, $exact ) );
288
+ }
289
+
290
+ /**
291
+ * Check if the user is paying or in trial.
292
+ *
293
+ * All code wrapped in this statement will be only included in the premium code.
294
+ *
295
+ * @since 1.0.9
296
+ *
297
+ * @return bool
298
+ */
299
+ function is_paying_or_trial__premium_only() {
300
+ return $this->is_premium() && $this->is_paying_or_trial();
301
+ }
302
+
303
+ /**
304
+ * Check if the user has an activated and valid paid license on current plugin's install.
305
+ *
306
+ * @since 1.0.4
307
+ *
308
+ * @return bool
309
+ *
310
+ * @deprecated Method name is confusing since it's not clear from the name the code will be removed.
311
+ * @using Alias to is_paying__premium_only()
312
+ */
313
+ function is_paying__fs__() {
314
+ return $this->is_paying__premium_only();
315
+ }
316
+
317
+ /**
318
+ * Check if user in a trial or have feature enabled license.
319
+ *
320
+ * All code wrapped in this statement will be only included in the premium code.
321
+ *
322
+ * @author Vova Feldman (@svovaf)
323
+ * @since 1.1.9
324
+ *
325
+ * @return bool
326
+ */
327
+ function can_use_premium_code__premium_only() {
328
+ return $this->is_premium() && $this->can_use_premium_code();
329
+ }
330
+
331
+ #endregion
332
+
333
+ #----------------------------------------------------------------------------------
334
+ #region Trial
335
+ #----------------------------------------------------------------------------------
336
+
337
+ /**
338
+ * Check if the user in a trial.
339
+ *
340
+ * @since 1.0.3
341
+ *
342
+ * @return bool
343
+ */
344
+ abstract function is_trial();
345
+
346
+ /**
347
+ * Check if trial already utilized.
348
+ *
349
+ * @since 1.0.9
350
+ *
351
+ * @return bool
352
+ */
353
+ abstract function is_trial_utilized();
354
+
355
+ #endregion
356
+
357
+ #----------------------------------------------------------------------------------
358
+ #region Plans
359
+ #----------------------------------------------------------------------------------
360
+
361
+ /**
362
+ * Check if the user is on the free plan of the product.
363
+ *
364
+ * @since 1.0.4
365
+ *
366
+ * @return bool
367
+ */
368
+ abstract function is_free_plan();
369
+
370
+ /**
371
+ * @since 1.0.2
372
+ *
373
+ * @param string $plan Plan name.
374
+ * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
375
+ *
376
+ * @return bool
377
+ */
378
+ abstract function is_plan( $plan, $exact = false );
379
+
380
+ /**
381
+ * Check if plan based on trial. If not in trial mode, should return false.
382
+ *
383
+ * @since 1.0.9
384
+ *
385
+ * @param string $plan Plan name.
386
+ * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
387
+ *
388
+ * @return bool
389
+ */
390
+ abstract function is_trial_plan( $plan, $exact = false );
391
+
392
+ /**
393
+ * Check if plan matches active license' plan or active trial license' plan.
394
+ *
395
+ * @since 1.0.9
396
+ *
397
+ * @param string $plan Plan name.
398
+ * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
399
+ *
400
+ * @return bool
401
+ */
402
+ function is_plan_or_trial( $plan, $exact = false ) {
403
+ return $this->is_plan( $plan, $exact ) ||
404
+ $this->is_trial_plan( $plan, $exact );
405
+ }
406
+
407
+ /**
408
+ * Check if plugin has any paid plans.
409
+ *
410
+ * @author Vova Feldman (@svovaf)
411
+ * @since 1.0.7
412
+ *
413
+ * @return bool
414
+ */
415
+ abstract function has_paid_plan();
416
+
417
+ /**
418
+ * Check if plugin has any free plan, or is it premium only.
419
+ *
420
+ * Note: If no plans configured, assume plugin is free.
421
+ *
422
+ * @author Vova Feldman (@svovaf)
423
+ * @since 1.0.7
424
+ *
425
+ * @return bool
426
+ */
427
+ abstract function has_free_plan();
428
+
429
+ /**
430
+ * Check if plugin is premium only (no free plans).
431
+ *
432
+ * NOTE: is__premium_only() is very different method, don't get confused.
433
+ *
434
+ * @author Vova Feldman (@svovaf)
435
+ * @since 1.1.9
436
+ *
437
+ * @return bool
438
+ */
439
+ abstract function is_only_premium();
440
+
441
+ /**
442
+ * Check if module has a premium code version.
443
+ *
444
+ * Serviceware module might be freemium without any
445
+ * premium code version, where the paid features
446
+ * are all part of the service.
447
+ *
448
+ * @author Vova Feldman (@svovaf)
449
+ * @since 1.2.1.6
450
+ *
451
+ * @return bool
452
+ */
453
+ abstract function has_premium_version();
454
+
455
+ /**
456
+ * Check if module has any release on Freemius,
457
+ * or all plugin's code is on WordPress.org (Serviceware).
458
+ *
459
+ * @return bool
460
+ */
461
+ function has_release_on_freemius() {
462
+ return ! $this->is_org_repo_compliant() ||
463
+ $this->has_premium_version();
464
+ }
465
+
466
+ /**
467
+ * Checks if it's a freemium plugin.
468
+ *
469
+ * @author Vova Feldman (@svovaf)
470
+ * @since 1.1.9
471
+ *
472
+ * @return bool
473
+ */
474
+ function is_freemium() {
475
+ return $this->has_paid_plan() &&
476
+ $this->has_free_plan();
477
+ }
478
+
479
+ /**
480
+ * Check if module has only one plan.
481
+ *
482
+ * @author Vova Feldman (@svovaf)
483
+ * @since 1.2.1.7
484
+ *
485
+ * @return bool
486
+ */
487
+ abstract function is_single_plan();
488
+
489
+ #endregion
490
+
491
+ /**
492
+ * Check if running payments in sandbox mode.
493
+ *
494
+ * @since 1.0.4
495
+ *
496
+ * @return bool
497
+ */
498
+ abstract function is_payments_sandbox();
499
+
500
+ /**
501
+ * Check if running test vs. live plugin.
502
+ *
503
+ * @since 1.0.5
504
+ *
505
+ * @return bool
506
+ */
507
+ abstract function is_live();
508
+
509
+ /**
510
+ * Check if running premium plugin code.
511
+ *
512
+ * @since 1.0.5
513
+ *
514
+ * @return bool
515
+ */
516
+ abstract function is_premium();
517
+
518
+ /**
519
+ * Get upgrade URL.
520
+ *
521
+ * @author Vova Feldman (@svovaf)
522
+ * @since 1.0.2
523
+ *
524
+ * @param string $period Billing cycle.
525
+ *
526
+ * @return string
527
+ */
528
+ abstract function get_upgrade_url( $period = WP_FS__PERIOD_ANNUALLY );
529
+
530
+ /**
531
+ * Check if Freemius was first added in a plugin update.
532
+ *
533
+ * @author Vova Feldman (@svovaf)
534
+ * @since 1.1.5
535
+ *
536
+ * @return bool
537
+ */
538
+ function is_plugin_update() {
539
+ return ! $this->is_plugin_new_install();
540
+ }
541
+
542
+ /**
543
+ * Check if Freemius was part of the plugin when the user installed it first.
544
+ *
545
+ * @author Vova Feldman (@svovaf)
546
+ * @since 1.1.5
547
+ *
548
+ * @return bool
549
+ */
550
+ abstract function is_plugin_new_install();
551
+
552
+ #----------------------------------------------------------------------------------
553
+ #region Marketing
554
+ #----------------------------------------------------------------------------------
555
+
556
+ /**
557
+ * Check if current user purchased any other plugins before.
558
+ *
559
+ * @author Vova Feldman (@svovaf)
560
+ * @since 1.0.9
561
+ *
562
+ * @return bool
563
+ */
564
+ abstract function has_purchased_before();
565
+
566
+ /**
567
+ * Check if current user classified as an agency.
568
+ *
569
+ * @author Vova Feldman (@svovaf)
570
+ * @since 1.0.9
571
+ *
572
+ * @return bool
573
+ */
574
+ abstract function is_agency();
575
+
576
+ /**
577
+ * Check if current user classified as a developer.
578
+ *
579
+ * @author Vova Feldman (@svovaf)
580
+ * @since 1.0.9
581
+ *
582
+ * @return bool
583
+ */
584
+ abstract function is_developer();
585
+
586
+ /**
587
+ * Check if current user classified as a business.
588
+ *
589
+ * @author Vova Feldman (@svovaf)
590
+ * @since 1.0.9
591
+ *
592
+ * @return bool
593
+ */
594
+ abstract function is_business();
595
+
596
+ #endregion
597
  }
freemius/includes/class-freemius.php CHANGED
@@ -33,6 +33,12 @@
33
  * @var string
34
  */
35
  private $_plugin_basename;
 
 
 
 
 
 
36
  /**
37
  * @since 1.0.0
38
  *
@@ -671,11 +677,12 @@
671
  version_compare( $sdk_version, '1.2.3', '>=' )
672
  ) {
673
  /**
674
- * Starting from version 1.2.3, paths are stored as relative paths and not absolute paths; so when upgrading to 1.2.3, make paths relative.
 
675
  *
676
  * @author Leo Fajardo (@leorw)
677
  */
678
- $this->make_paths_relative();
679
  }
680
 
681
  if ( version_compare( $sdk_prev_version, '1.1.5', '<' ) &&
@@ -699,6 +706,25 @@
699
 
700
  }
701
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
702
  }
703
 
704
  /**
@@ -824,30 +850,12 @@
824
  }
825
 
826
  /**
827
- * Makes paths relative.
828
  *
829
  * @author Leo Fajardo (@leorw)
830
  * @since 1.2.3
831
  */
832
- private function make_paths_relative() {
833
- $id_slug_type_path_map = self::$_accounts->get_option( 'id_slug_type_path_map', array() );
834
-
835
- if ( isset( $id_slug_type_path_map[ $this->_module_id ]['path'] ) ) {
836
- $id_slug_type_path_map[ $this->_module_id ]['path'] = $this->get_relative_path( $id_slug_type_path_map[ $this->_module_id ]['path'] );
837
-
838
- self::$_accounts->set_option( 'id_slug_type_path_map', $id_slug_type_path_map, true );
839
- }
840
-
841
- if ( isset( $this->_storage->plugin_main_file ) ) {
842
- $plugin_main_file = $this->_storage->plugin_main_file;
843
-
844
- if ( isset( $plugin_main_file->path ) ) {
845
- $this->_storage->plugin_main_file->path = $this->get_relative_path( $this->_storage->plugin_main_file->path );
846
- } else if ( isset( $plugin_main_file->prev_path ) ) {
847
- $this->_storage->plugin_main_file->prev_path = $this->get_relative_path( $this->_storage->plugin_main_file->prev_path );
848
- }
849
- }
850
-
851
  // Remove invalid path that is still associated with the current slug if there's any.
852
  $file_slug_map = self::$_accounts->get_option( 'file_slug_map', array() );
853
  foreach ( $file_slug_map as $plugin_basename => $slug ) {
@@ -1230,6 +1238,22 @@
1230
  <?php
1231
  }
1232
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1233
  /**
1234
  * @author Vova Feldman (@svovaf)
1235
  * @since 1.0.9
@@ -1241,6 +1265,26 @@
1241
  add_action( 'plugins_loaded', array( &$this, '_hook_action_links_and_register_account_hooks' ) );
1242
 
1243
  if ( $this->is_plugin() ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1244
  $plugin_dir = dirname( $this->_plugin_dir_path ) . '/';
1245
 
1246
  /**
@@ -1348,7 +1392,10 @@
1348
  add_action( 'make_ham_blog', array( &$this, '_after_site_reactivated_callback' ) );
1349
  }
1350
 
1351
- if ( $this->is_theme() && self::is_customizer() ) {
 
 
 
1352
  // Register customizer upsell.
1353
  add_action( 'customize_register', array( &$this, '_customizer_register' ) );
1354
  }
@@ -1405,6 +1452,84 @@
1405
  }
1406
  }
1407
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1408
  /**
1409
  * Keeping the uninstall hook registered for free or premium plugin version may result to a fatal error that
1410
  * could happen when a user tries to uninstall either version while one of them is still active. Uninstalling a
@@ -1425,23 +1550,37 @@
1425
 
1426
  /**
1427
  * @since 1.2.0 Invalidate module's main file cache, otherwise, FS_Plugin_Updater will not fetch updates.
 
 
1428
  */
1429
- private function clear_module_main_file_cache() {
1430
  if ( ! isset( $this->_storage->plugin_main_file ) ||
1431
- empty( $this->_storage->plugin_main_file->path )
1432
  ) {
1433
  return;
1434
  }
1435
 
1436
- $plugin_main_file = clone $this->_storage->plugin_main_file;
 
 
 
 
 
 
 
 
 
 
 
1437
 
1438
- // Store cached path (2nd layer cache).
1439
- $plugin_main_file->prev_path = $plugin_main_file->path;
1440
 
1441
- // Clear cached path.
1442
- unset( $plugin_main_file->path );
1443
 
1444
- $this->_storage->plugin_main_file = $plugin_main_file;
 
1445
 
1446
  /**
1447
  * Clear global cached path.
@@ -1488,12 +1627,10 @@
1488
  array( &$this, '_submit_uninstall_reason_action' )
1489
  );
1490
 
1491
- if ( $this->is_theme() && $this->is_premium() && ! $this->has_active_valid_license() ) {
1492
- $this->add_ajax_action(
1493
- 'delete_theme_update_data',
1494
- array( &$this, '_delete_theme_update_data_action' )
1495
- );
1496
- }
1497
 
1498
  if ( ! $this->is_addon() || $this->is_parent_plugin_installed() ) {
1499
  if ( ( $this->is_plugin() && self::is_plugins_page() ) ||
@@ -1619,7 +1756,7 @@
1619
 
1620
  return fs_normalize_path( trailingslashit( $is_plugin ?
1621
  WP_PLUGIN_DIR :
1622
- get_theme_root() ) );
1623
  }
1624
 
1625
  /**
@@ -1684,11 +1821,11 @@
1684
  private function get_caller_main_file_and_type() {
1685
  self::require_plugin_essentials();
1686
 
1687
- $all_plugins = get_plugins();
1688
  $all_plugins_paths = array();
1689
 
1690
  // Get active plugin's main files real full names (might be symlinks).
1691
- foreach ( $all_plugins as $relative_path => &$data ) {
1692
  if ( false === strpos( fs_normalize_path( $relative_path ), '/' ) ) {
1693
  /**
1694
  * Ignore plugins that don't have a folder (e.g. Hello Dolly) since they
@@ -1706,7 +1843,7 @@
1706
  $caller_file_candidate = false;
1707
  $caller_map = array();
1708
  $module_type = WP_FS__MODULE_TYPE_PLUGIN;
1709
- $themes_dir = fs_normalize_path( get_theme_root() );
1710
 
1711
  for ( $i = 1, $bt = debug_backtrace(), $len = count( $bt ); $i < $len; $i ++ ) {
1712
  if ( empty( $bt[ $i ]['file'] ) ) {
@@ -1726,7 +1863,10 @@
1726
  'requir' . 'e_once',
1727
  'requir' . 'e',
1728
  'includ' . 'e_once',
1729
- 'includ' . 'e'
 
 
 
1730
  ) )
1731
  ) {
1732
  // Ignore call stack hooks and files inclusion.
@@ -2062,6 +2202,51 @@
2062
  exit;
2063
  }
2064
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2065
  /**
2066
  * @author Leo Fajardo (@leorw)
2067
  * @since 2.0.2
@@ -2138,16 +2323,18 @@
2138
  * @since 1.2.2
2139
  *
2140
  * @param string|number $id_or_slug
 
2141
  *
2142
  * @return number|false
2143
  */
2144
- private static function get_module_id( $id_or_slug ) {
2145
  if ( is_numeric( $id_or_slug ) ) {
2146
  return $id_or_slug;
2147
  }
2148
 
2149
  foreach ( self::$_instances as $instance ) {
2150
- if ( $instance->is_plugin() && ( $id_or_slug === $instance->get_slug() ) ) {
 
2151
  return $instance->get_id();
2152
  }
2153
  }
@@ -2174,15 +2361,16 @@
2174
  * @author Vova Feldman (@svovaf)
2175
  * @since 1.0.1
2176
  *
2177
- * @param $plugin_file
 
2178
  *
2179
  * @return false|Freemius
2180
  */
2181
- static function get_instance_by_file( $plugin_file ) {
2182
  $slug = self::find_slug_by_basename( $plugin_file );
2183
 
2184
  return ( false !== $slug ) ?
2185
- self::instance( self::get_module_id( $slug ) ) :
2186
  false;
2187
  }
2188
 
@@ -2296,10 +2484,13 @@
2296
  function is_site_activation_mode( $and_on = true ) {
2297
  return (
2298
  ( $this->is_on() || ! $and_on ) &&
2299
- ( ! $this->is_registered() ||
2300
- ( $this->is_only_premium() && ! $this->has_features_enabled_license() ) ) &&
2301
- ( ! $this->is_enable_anonymous() ||
2302
- ( ! $this->is_anonymous() && ! $this->is_pending_activation() ) )
 
 
 
2303
  );
2304
  }
2305
 
@@ -2334,7 +2525,7 @@
2334
  return false;
2335
  }
2336
 
2337
- if ( $this->is_network_anonymous() ) {
2338
  // Super-admin skipped the connection network wide -> not activation mode.
2339
  return false;
2340
  }
@@ -2455,7 +2646,7 @@
2455
  self::require_plugin_essentials();
2456
 
2457
  $active_plugin = array();
2458
- $all_plugins = get_plugins();
2459
  $active_plugins_basenames = self::get_active_plugins_basenames( $blog_id );
2460
 
2461
  foreach ( $active_plugins_basenames as $plugin_basename ) {
@@ -2481,6 +2672,11 @@
2481
  get_option( 'active_plugins' );
2482
 
2483
  $active = array();
 
 
 
 
 
2484
  foreach ( $active_basenames as $basename ) {
2485
  $active[ $basename ] = array(
2486
  'is_active' => true,
@@ -2505,7 +2701,7 @@
2505
  private static function get_all_plugins( $blog_id = 0 ) {
2506
  self::require_plugin_essentials();
2507
 
2508
- $all_plugins = get_plugins();
2509
 
2510
  $active_plugins_basenames = self::get_active_plugins_basenames( $blog_id );
2511
 
@@ -2537,7 +2733,7 @@
2537
  private static function get_network_plugins() {
2538
  self::require_plugin_essentials();
2539
 
2540
- $all_plugins = get_plugins();
2541
 
2542
  $network_active_basenames = is_multisite() ?
2543
  get_site_option( 'active_sitewide_plugins' ) :
@@ -2634,26 +2830,28 @@
2634
  self::$_accounts = FS_Options::instance( WP_FS__ACCOUNTS_OPTION_NAME, true );
2635
 
2636
  if ( is_multisite() ) {
 
 
 
 
 
 
 
2637
  /**
2638
- * If the id_slug_type_path_map exists on the site level but doesn't exist on the
2639
  * network level storage, it means that we need to process the storage with migration.
2640
  *
2641
- * The code in this `if` scope will only be executed once and only for the first site that will execute it because once we migrate the storage data, id_slug_type_path_map will be already set in the network level storage.
2642
  *
2643
  * @author Vova Feldman (@svovaf)
2644
  * @since 2.0.0
2645
  */
2646
- if ( null === self::$_accounts->get_option( 'id_slug_type_path_map', null, true ) &&
2647
- null !== self::$_accounts->get_option( 'id_slug_type_path_map', null, false )
 
 
2648
  ) {
2649
- self::migrate_accounts_to_network();
2650
-
2651
- // Migrate API options from site level to network level.
2652
- $api_network_options = FS_Option_Manager::get_manager( WP_FS__OPTIONS_OPTION_NAME, true, true );
2653
- $api_network_options->migrate_to_network();
2654
-
2655
- // Migrate API cache to network level storage.
2656
- FS_Cache_Manager::get_manager( WP_FS__API_CACHE_OPTION_NAME )->migrate_to_network();
2657
  }
2658
  }
2659
 
@@ -2679,10 +2877,30 @@
2679
  }
2680
 
2681
  add_action( 'admin_footer', array( 'Freemius', '_enrich_ajax_url' ) );
 
 
2682
 
2683
  self::$_statics_loaded = true;
2684
  }
2685
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2686
  #----------------------------------------------------------------------------------
2687
  #region Localization
2688
  #----------------------------------------------------------------------------------
@@ -2909,6 +3127,10 @@
2909
  }
2910
 
2911
  fs_redirect( $download_url );
 
 
 
 
2912
  }
2913
  }
2914
 
@@ -3961,6 +4183,13 @@
3961
 
3962
  $this->parse_settings( $plugin_info );
3963
 
 
 
 
 
 
 
 
3964
  if ( ! self::is_ajax() ) {
3965
  if ( ! $this->is_addon() || $this->is_only_premium() ) {
3966
  add_action(
@@ -4041,14 +4270,16 @@
4041
  * @author Vova Feldman (@svovaf)
4042
  */
4043
  if ( $this->is_user_in_admin() &&
4044
- ! $this->is_addon() &&
4045
- $this->has_addons() &&
4046
- 'plugin-information' === fs_request_get( 'tab', false ) &&
4047
- $this->get_id() == fs_request_get( 'parent_plugin_id', false )
 
 
4048
  ) {
4049
  require_once WP_FS__DIR_INCLUDES . '/fs-plugin-info-dialog.php';
4050
 
4051
- new FS_Plugin_Info_Dialog( $this );
4052
  }
4053
 
4054
  // Check if Freemius is on for the current plugin.
@@ -4162,7 +4393,21 @@
4162
  * @author Vova Feldman
4163
  * @since 1.2.1.6
4164
  */
4165
- if ( $this->is_premium() && $this->has_release_on_freemius() ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4166
  FS_Plugin_Updater::instance( $this );
4167
  }
4168
 
@@ -4205,6 +4450,26 @@
4205
  }
4206
  }
4207
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4208
  /**
4209
  * @author Leo Fajardo (@leorw)
4210
  *
@@ -4641,16 +4906,20 @@
4641
  $this->_plugin :
4642
  new FS_Plugin();
4643
 
 
 
4644
  $plugin->update( array(
4645
  'id' => $id,
4646
  'type' => $this->get_option( $plugin_info, 'type', $this->_module_type ),
4647
  'public_key' => $public_key,
4648
  'slug' => $this->_slug,
 
4649
  'parent_plugin_id' => $parent_id,
4650
  'version' => $this->get_plugin_version(),
4651
- 'title' => $this->get_plugin_name(),
4652
  'file' => $this->_plugin_basename,
4653
  'is_premium' => $this->get_bool_option( $plugin_info, 'is_premium', true ),
 
4654
  'is_live' => $this->get_bool_option( $plugin_info, 'is_live', true ),
4655
  'affiliate_moderation' => $this->get_option( $plugin_info, 'has_affiliation' ),
4656
  ) );
@@ -5031,7 +5300,7 @@
5031
  }
5032
 
5033
  $addon = $this->get_addon( $addon_id );
5034
- $premium_basename = "{$addon->slug}-premium/{$addon->slug}.php";
5035
 
5036
  if ( file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $premium_basename ) ) ) {
5037
  return $premium_basename;
@@ -5039,9 +5308,9 @@
5039
 
5040
  $all_plugins = $this->get_all_plugins();
5041
 
5042
- foreach ( $all_plugins as $basename => &$data ) {
5043
  if ( $addon->slug === $data['slug'] ||
5044
- $addon->slug . '-premium' === $data['slug']
5045
  ) {
5046
  return $basename;
5047
  }
@@ -5281,7 +5550,7 @@
5281
  if ( ! isset( $this->_is_anonymous ) ) {
5282
  if ( $this->is_network_anonymous() ) {
5283
  $this->_is_anonymous = true;
5284
- } else {
5285
  if ( ! isset( $this->_storage->is_anonymous ) ) {
5286
  // Not skipped.
5287
  $this->_is_anonymous = false;
@@ -5472,6 +5741,20 @@
5472
  $this->_storage->store( "{$name}_timestamp", time() );
5473
  }
5474
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5475
  /**
5476
  * Check if cron was executed in the last $period of seconds.
5477
  *
@@ -5486,7 +5769,7 @@
5486
  private function is_cron_executed( $name, $period = WP_FS__TIME_24_HOURS_IN_SEC ) {
5487
  $this->_logger->entrance( $name );
5488
 
5489
- $last_execution = $this->set_cron_execution_timestamp( $name );
5490
 
5491
  if ( ! is_numeric( $last_execution ) ) {
5492
  return false;
@@ -5747,12 +6030,14 @@
5747
  }
5748
  }
5749
 
 
 
5750
  foreach ( $users_2_blog_ids as $user_id => $blog_ids ) {
5751
  if ( 0 < $blog_ids[0] ) {
5752
  $this->switch_to_blog( $blog_ids[0] );
5753
  }
5754
 
5755
- call_user_func_array( $callable, array( $blog_ids ) );
5756
 
5757
  foreach ( $blog_ids as $blog_id ) {
5758
  $this->do_action( "after_{$name}_cron", $blog_id );
@@ -5760,6 +6045,8 @@
5760
  }
5761
 
5762
  if ( is_multisite() ) {
 
 
5763
  $this->do_action( "after_{$name}_cron_multisite" );
5764
  }
5765
  }
@@ -5831,13 +6118,16 @@
5831
  * @author Vova Feldman (@svovaf)
5832
  * @since 2.0.0
5833
  *
5834
- * @param int[] $blog_ids
 
 
 
5835
  */
5836
- function _sync_cron_method( array $blog_ids ) {
5837
  if ( $this->is_registered() ) {
5838
  if ( $this->has_paid_plan() ) {
5839
  // Initiate background plan sync.
5840
- $this->_sync_license( true );
5841
 
5842
  if ( $this->is_paying() ) {
5843
  // Check for premium plugin updates.
@@ -5984,7 +6274,7 @@
5984
  * @param int $except_blog_id Since 2.0.0 when running in a multisite network environment, the cron execution is consolidated. This param allows excluding excluded specified blog ID from being the cron executor.
5985
  */
5986
  private function schedule_install_sync( $except_blog_id = 0 ) {
5987
- $this->schedule_cron( 'install_sync', 'install_sync', 'single', 0, false, $except_blog_id );
5988
  }
5989
 
5990
  /**
@@ -6052,9 +6342,10 @@
6052
  * @author Vova Feldman (@svovaf)
6053
  * @since 2.0.0
6054
  *
6055
- * @param int[] $blog_ids
 
6056
  */
6057
- function _sync_install_cron_method( array $blog_ids ) {
6058
  if ( $this->is_registered() ) {
6059
  if ( 1 < count( $blog_ids ) ) {
6060
  $this->sync_installs( array(), true );
@@ -6158,6 +6449,7 @@
6158
  if ( ! $this->is_addon() &&
6159
  ! ( ! $this->_is_network_active && fs_is_network_admin() ) &&
6160
  (
 
6161
  // Not registered nor anonymous.
6162
  ( ! $this->is_registered() && ! $this->is_anonymous() ) ||
6163
  // OR, network level and in network upgrade mode.
@@ -6174,14 +6466,18 @@
6174
  * @since 1.2.2
6175
  */
6176
  if ( $this->is_theme()
6177
- && $this->is_only_premium()
6178
  && ! $this->has_settings_menu()
6179
  && ! isset( $_REQUEST['fs_action'] )
6180
  && $this->can_activate_previous_theme()
6181
  ) {
6182
- $this->activate_previous_theme();
 
 
 
6183
 
6184
- return;
 
 
6185
  }
6186
 
6187
  if ( ! fs_is_network_admin() &&
@@ -6192,19 +6488,21 @@
6192
  }
6193
 
6194
  if ( $this->is_plugin_new_install() || $this->is_only_premium() ) {
6195
- // Show notice for new plugin installations.
6196
- $this->_admin_notices->add(
6197
- sprintf(
6198
- $this->get_text_inline( 'You are just one step away - %s', 'you-are-step-away' ),
6199
- sprintf( '<b><a href="%s">%s</a></b>',
6200
- $this->get_activation_url( array(), ! $this->is_delegated_connection() ),
6201
- sprintf( $this->get_text_x_inline( 'Complete "%s" Activation Now',
6202
- '%s - plugin name. As complete "PluginX" activation now', 'activate-x-now' ), $this->get_plugin_name() )
6203
- )
6204
- ),
6205
- '',
6206
- 'update-nag'
6207
- );
 
 
6208
  } else {
6209
  if ( $this->should_add_sticky_optin_notice() ) {
6210
  $this->add_sticky_optin_admin_notice();
@@ -6279,7 +6577,7 @@
6279
  $this->_module_type,
6280
  sprintf( '<b><a href="%s">%s</a></b>',
6281
  $this->get_activation_url(),
6282
- sprintf( $this->get_text_inline( 'Opt in to make "%s" Better!', 'optin-x-now' ), $this->get_plugin_name() )
6283
  )
6284
  ),
6285
  'connect_account',
@@ -6741,6 +7039,20 @@
6741
  }
6742
  }
6743
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6744
  if ( ! isset( $this->_storage->is_plugin_new_install ) ) {
6745
  /**
6746
  * If no previous version of plugin's version exist, it means that it's either
@@ -7010,7 +7322,7 @@
7010
  private function remove_sdk_reference() {
7011
  global $fs_active_plugins;
7012
 
7013
- foreach ( $fs_active_plugins->plugins as $sdk_path => &$data ) {
7014
  if ( $this->_plugin_basename == $data->plugin_path ) {
7015
  unset( $fs_active_plugins->plugins[ $sdk_path ] );
7016
  break;
@@ -7192,6 +7504,23 @@
7192
  }
7193
  }
7194
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7195
  /**
7196
  * Clears the anonymous mode and redirects to the opt-in screen.
7197
  *
@@ -7205,6 +7534,8 @@
7205
 
7206
  $this->reset_anonymous_mode( fs_is_network_admin() );
7207
 
 
 
7208
  fs_redirect( $this->get_activation_url() );
7209
  }
7210
 
@@ -7644,39 +7975,43 @@
7644
  $include_plugins = true,
7645
  $include_themes = true
7646
  ) {
7647
- /**
7648
- * @since 1.1.8 Also send plugin updates.
7649
- */
7650
- if ( $include_plugins && ! isset( $override['plugins'] ) ) {
7651
- $plugins = $this->get_plugins_data_for_api();
7652
- if ( ! empty( $plugins ) ) {
7653
- $override['plugins'] = $plugins;
 
 
7654
  }
7655
  }
7656
- /**
7657
- * @since 1.1.8 Also send themes updates.
7658
- */
7659
- if ( $include_themes && ! isset( $override['themes'] ) ) {
7660
- $themes = $this->get_themes_data_for_api();
7661
- if ( ! empty( $themes ) ) {
7662
- $override['themes'] = $themes;
 
 
 
7663
  }
7664
  }
7665
 
7666
- return array_merge( array(
7667
- 'version' => $this->get_plugin_version(),
7668
- 'is_premium' => $this->is_premium(),
7669
- 'language' => get_bloginfo( 'language' ),
7670
- 'charset' => get_bloginfo( 'charset' ),
7671
- 'platform_version' => get_bloginfo( 'version' ),
7672
- 'sdk_version' => $this->version,
7673
- 'programming_language_version' => phpversion(),
7674
- 'title' => get_bloginfo( 'name' ),
7675
- 'url' => get_site_url(),
7676
  // Special params.
7677
- 'is_active' => true,
7678
- 'is_disconnected' => $this->is_tracking_prohibited(),
7679
- 'is_uninstalled' => false,
7680
  ), $override );
7681
  }
7682
 
@@ -7721,12 +8056,10 @@
7721
  // }
7722
 
7723
  // Common properties.
7724
- $common = array_merge( array(
7725
- 'version' => $this->get_plugin_version(),
7726
- 'is_premium' => $this->is_premium(),
7727
- 'sdk_version' => $this->version,
7728
- 'programming_language_version' => phpversion(),
7729
- 'platform_version' => get_bloginfo( 'version' ),
7730
  ), $override );
7731
 
7732
 
@@ -7880,28 +8213,56 @@
7880
  $params = $this->get_install_diff_for_api( $check_properties, $this->_site, $override );
7881
  }
7882
 
7883
- if ( 0 < count( $params ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7884
  if ( ! is_multisite() ) {
7885
  // Update last install sync timestamp.
7886
  $this->set_cron_execution_timestamp( 'install_sync' );
7887
  }
7888
 
7889
  $params['uid'] = $this->get_anonymous_id();
 
7890
 
7891
- // Send updated values to FS.
7892
- $site = $this->get_api_site_scope()->call( '/', 'put', $params );
7893
 
7894
- if ( $this->is_api_result_entity( $site ) ) {
7895
- if ( ! is_multisite() ) {
7896
- // I successfully sent install update, clear scheduled sync if exist.
7897
- $this->clear_install_sync_cron();
7898
- }
7899
- }
7900
 
7901
- return $site;
 
 
 
 
 
 
 
 
 
 
7902
  }
7903
 
7904
- return false;
7905
  }
7906
 
7907
  /**
@@ -7920,24 +8281,70 @@
7920
 
7921
  $installs_data = $this->get_installs_data_for_api( $override, ! $flush );
7922
 
 
7923
  if ( empty( $installs_data ) ) {
7924
- return false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7925
  }
7926
 
7927
- // Update last install sync timestamp.
7928
- $this->set_cron_execution_timestamp( 'install_sync' );
 
 
 
 
 
 
 
 
 
 
7929
 
7930
  // Send updated values to FS.
7931
  $result = $this->get_api_user_scope()->call( "/plugins/{$this->_plugin->id}/installs.json", 'put', $installs_data );
7932
 
7933
- if ( $this->is_api_result_object( $result, 'installs' ) ) {
7934
- // I successfully sent installs update, clear scheduled sync if exist.
7935
  $this->clear_install_sync_cron();
7936
  }
7937
 
7938
  return $result;
7939
  }
7940
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7941
  /**
7942
  * Update install only if changed.
7943
  *
@@ -8142,14 +8549,59 @@
8142
  // @todo Decide if we want to delete plugin information from db.
8143
  }
8144
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8145
  /**
8146
  * @author Vova Feldman (@svovaf)
8147
  * @since 1.1.1
 
8148
  *
8149
  * @return string
8150
  */
8151
  function premium_plugin_basename() {
8152
- return "{$this->_slug}-premium/" . basename( $this->_free_plugin_basename );
 
 
 
 
 
 
 
8153
  }
8154
 
8155
  /**
@@ -8288,13 +8740,29 @@
8288
  }
8289
 
8290
  /**
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8291
  * @author Vova Feldman (@svovaf)
8292
  * @since 1.2.1.7
8293
  *
8294
  * @return string Plugin slug.
8295
  */
8296
  function get_target_folder_name() {
8297
- return $this->_slug . ( $this->can_use_premium_code() ? '-premium' : '' );
 
 
8298
  }
8299
 
8300
  /**
@@ -8365,31 +8833,63 @@
8365
  * @author Vova Feldman (@svovaf)
8366
  * @since 1.0.9
8367
  *
 
 
8368
  * @return string
8369
  */
8370
- function get_plugin_name() {
8371
  $this->_logger->entrance();
8372
 
 
 
 
 
 
8373
  if ( ! isset( $this->_plugin_name ) ) {
8374
- $plugin_data = $this->get_plugin_data();
 
 
 
 
 
 
 
 
8375
 
8376
- // Get name.
8377
- $this->_plugin_name = $plugin_data['Name'];
8378
 
8379
- // Check if plugin name contains "(Premium)" suffix and remove it.
8380
- $suffix = ' (premium)';
8381
- $suffix_len = strlen( $suffix );
 
 
 
 
 
 
 
8382
 
8383
- if ( strlen( $plugin_data['Name'] ) > $suffix_len &&
8384
- $suffix === substr( strtolower( $plugin_data['Name'] ), - $suffix_len )
8385
- ) {
8386
- $this->_plugin_name = substr( $plugin_data['Name'], 0, - $suffix_len );
8387
- }
8388
 
8389
- $this->_logger->departure( 'Name = ' . $this->_plugin_name );
 
 
 
 
 
 
 
 
 
 
 
 
 
8390
  }
8391
 
8392
- return $this->_plugin_name;
8393
  }
8394
 
8395
  /**
@@ -9095,7 +9595,16 @@
9095
  * @return bool
9096
  */
9097
  function is_premium() {
9098
- return $this->_plugin->is_premium;
 
 
 
 
 
 
 
 
 
9099
  }
9100
 
9101
  /**
@@ -10485,6 +10994,56 @@
10485
  fs_require_template( 'forms/resend-key.php', $vars );
10486
  }
10487
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10488
  /**
10489
  * @author Leo Fajardo (@leorw)
10490
  * @since 2.0.2
@@ -10569,7 +11128,7 @@
10569
  return;
10570
  }
10571
 
10572
- if ( ! $this->is_premium() || $this->has_active_valid_license() ) {
10573
  // This is relevant only to the free versions and premium versions without an active license.
10574
  return;
10575
  }
@@ -10669,7 +11228,7 @@
10669
  'license_key' => $fs->apply_filters( 'license_key', $license_key )
10670
  );
10671
 
10672
- $install = $api->call( '/', 'put', $params );
10673
 
10674
  if ( FS_Api::is_api_error( $install ) ) {
10675
  $error = FS_Api::is_api_error_object( $install ) ?
@@ -10762,6 +11321,10 @@
10762
  }
10763
  }
10764
 
 
 
 
 
10765
  $result = array(
10766
  'success' => ( false === $error )
10767
  );
@@ -11016,6 +11579,34 @@
11016
  static function get_current_page() {
11017
  if ( ! isset( self::$_pagenow ) ) {
11018
  global $pagenow;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11019
 
11020
  self::$_pagenow = $pagenow;
11021
 
@@ -11047,6 +11638,16 @@
11047
  return ( 'plugins.php' === self::get_current_page() );
11048
  }
11049
 
 
 
 
 
 
 
 
 
 
 
11050
  /**
11051
  * @author Leo Fajardo (@leorw)
11052
  * @since 2.0.2
@@ -11314,6 +11915,40 @@
11314
  return $this->get_upgrade_url( WP_FS__PERIOD_ANNUALLY, true );
11315
  }
11316
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11317
  /**
11318
  * Plugin's pricing URL.
11319
  *
@@ -11948,7 +12583,13 @@
11948
  * @author Vova Feldman (@svovaf)
11949
  */
11950
  $args = array(
11951
- 'public' => 1,
 
 
 
 
 
 
11952
  'archived' => 0,
11953
  'mature' => 0,
11954
  'spam' => 0,
@@ -12144,7 +12785,7 @@
12144
 
12145
  self::$_accounts->set_site_blog_context( $blog_id );
12146
  $this->_storage->set_site_blog_context( $blog_id );
12147
- $this->_storage->set_network_active( true, $this->is_delegated_connection( $blog_id ) );
12148
 
12149
  $this->_site = is_object( $install ) ?
12150
  $install :
@@ -13093,6 +13734,12 @@
13093
  }
13094
  }
13095
 
 
 
 
 
 
 
13096
  if ( $this->is_theme() ) {
13097
  $this->_register_account_hooks();
13098
  }
@@ -13158,6 +13805,30 @@
13158
 
13159
  }
13160
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13161
  /**
13162
  * @author Vova Feldman (@svovaf)
13163
  * @since 1.1.7.4
@@ -13179,7 +13850,9 @@
13179
  // Return to the module's main page.
13180
  $this->get_after_activation_url( 'after_connect_url', array( 'fs_action' => $activation_action ) );
13181
 
13182
- $params = array(
 
 
13183
  'user_firstname' => $current_user->user_firstname,
13184
  'user_lastname' => $current_user->user_lastname,
13185
  'user_nickname' => $current_user->user_nicename,
@@ -13194,13 +13867,10 @@
13194
  'account',
13195
  array( 'fs_action' => 'sync_user' )
13196
  ), 'sync_user' ),
13197
- 'platform_version' => get_bloginfo( 'version' ),
13198
- 'sdk_version' => $this->version,
13199
- 'programming_language_version' => phpversion(),
13200
  'is_premium' => $this->is_premium(),
13201
  'is_active' => true,
13202
  'is_uninstalled' => false,
13203
- );
13204
 
13205
  if ( true === $network_level_or_blog_id ) {
13206
  if ( ! isset( $override_with['sites'] ) ) {
@@ -13386,7 +14056,7 @@
13386
  'timeout' => WP_FS__DEBUG_SDK ? 60 : 30,
13387
  );
13388
 
13389
- $url = WP_FS__ADDRESS . '/action/service/user/install/';
13390
  $response = self::safe_remote_post( $url, $request );
13391
 
13392
  if ( is_wp_error( $response ) ) {
@@ -14543,7 +15213,7 @@
14543
 
14544
  $hook = false;
14545
 
14546
- if ( ! $this->_menu->has_menu() ) {
14547
  // Add the opt-in page without a menu item.
14548
  $hook = FS_Admin_Menu_Manager::add_subpage(
14549
  null,
@@ -14756,13 +15426,15 @@
14756
  private function add_submenu_items() {
14757
  $this->_logger->entrance();
14758
 
 
 
14759
  if ( $this->is_addon() ) {
14760
  // No submenu items for add-ons.
14761
  $add_submenu_items = false;
14762
  } else if ( $this->is_free_wp_org_theme() && ! fs_is_network_admin() ) {
14763
  // Also add submenu items when running in a free .org theme so the tabs will be visible.
14764
  $add_submenu_items = true;
14765
- } else if ( $this->is_activation_mode() && ! $this->is_free_wp_org_theme() ) {
14766
  $add_submenu_items = false;
14767
  } else if ( fs_is_network_admin() ) {
14768
  /**
@@ -14793,7 +15465,15 @@
14793
  $this->is_submenu_item_visible( 'affiliation' )
14794
  );
14795
  }
 
14796
 
 
 
 
 
 
 
 
14797
  if ( ! WP_FS__DEMO_MODE && $this->is_registered() ) {
14798
  $show_account = (
14799
  $this->is_submenu_item_visible( 'account' ) &&
@@ -14812,10 +15492,12 @@
14812
  'account',
14813
  array( &$this, '_account_page_load' ),
14814
  WP_FS__DEFAULT_PRIORITY,
14815
- $show_account
14816
  );
14817
  }
 
14818
 
 
14819
  // Add contact page.
14820
  $this->add_submenu_item(
14821
  $this->get_text_inline( 'Contact Us', 'contact-us' ),
@@ -14840,7 +15522,11 @@
14840
  $this->is_submenu_item_visible( 'addons' )
14841
  );
14842
  }
 
14843
 
 
 
 
14844
  if ( ! WP_FS__DEMO_MODE ) {
14845
  $show_pricing = (
14846
  $this->is_submenu_item_visible( 'pricing' ) &&
@@ -14862,28 +15548,38 @@
14862
 
14863
  // Add upgrade/pricing page.
14864
  $this->add_submenu_item(
14865
- $pricing_cta_text . '&nbsp;&nbsp;' . ( is_rtl() ? '&#x2190;' : '&#x27a4;' ),
14866
  array( &$this, '_pricing_page_render' ),
14867
  $this->get_plugin_name() . ' &ndash; ' . $this->get_text_x_inline( 'Pricing', 'noun', 'pricing' ),
14868
  'manage_options',
14869
  'pricing',
14870
  'Freemius::_clean_admin_content_section',
14871
  WP_FS__LOWEST_PRIORITY,
14872
- $show_pricing,
14873
  $pricing_class
14874
  );
14875
  }
14876
  }
14877
 
14878
- if ( 0 < count( $this->_menu_items ) ) {
14879
- if ( ! $this->_menu->is_top_level() ) {
14880
- fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
 
 
 
 
 
 
 
 
 
14881
 
14882
- // Append submenu items right after the plugin's submenu item.
14883
- $this->order_sub_submenu_items();
14884
- } else {
14885
- // Append submenu items.
14886
- $this->embed_submenu_items();
 
14887
  }
14888
  }
14889
  }
@@ -14909,16 +15605,6 @@
14909
 
14910
  foreach ( $this->_menu_items as $priority => $items ) {
14911
  foreach ( $items as $item ) {
14912
- if ( $item['show_submenu'] && $is_first_submenu_item ) {
14913
- if ( $this->_is_network_active && ! empty( $this->_dynamically_added_top_level_page_hook_name ) ) {
14914
- $item['menu_slug'] = '';
14915
-
14916
- $this->_menu->override_menu_item( $item['render_function'] );
14917
- }
14918
-
14919
- $is_first_submenu_item = false;
14920
- }
14921
-
14922
  $capability = ( ! empty( $item['capability'] ) ? $item['capability'] : $top_level_menu_capability );
14923
 
14924
  $menu_item = sprintf(
@@ -14929,12 +15615,13 @@
14929
  $item['menu_title']
14930
  );
14931
 
14932
- $menu_slug = $this->_menu->get_slug( $item['menu_slug'] );
 
14933
 
14934
  if ( ! isset( $item['url'] ) ) {
14935
  $hook = FS_Admin_Menu_Manager::add_subpage(
14936
  $item['show_submenu'] ?
14937
- $this->get_top_level_menu_slug() :
14938
  null,
14939
  $item['page_title'],
14940
  $menu_item,
@@ -14949,7 +15636,7 @@
14949
  } else {
14950
  FS_Admin_Menu_Manager::add_subpage(
14951
  $item['show_submenu'] ?
14952
- $this->get_top_level_menu_slug() :
14953
  null,
14954
  $item['page_title'],
14955
  $menu_item,
@@ -14958,6 +15645,24 @@
14958
  array( $this, '' )
14959
  );
14960
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14961
  }
14962
  }
14963
  }
@@ -15569,7 +16274,8 @@
15569
  return;
15570
  }
15571
 
15572
- $encrypted_site = clone ( is_object( $site ) ? $site : $this->_site );
 
15573
 
15574
  $sites = self::get_all_sites( $this->_module_type, $network_level_or_blog_id );
15575
 
@@ -15937,7 +16643,7 @@
15937
  /**
15938
  * @since 1.2.3 When running in DEV mode, retrieve pending plans as well.
15939
  */
15940
- $result = $api->get( "/plugins/{$this->_module_id}/plans.json?show_pending=" . ( $this->has_secret_key() ? 'true' : 'false' ), true );
15941
 
15942
  if ( $this->is_api_result_object( $result, 'plans' ) && is_array( $result->plans ) ) {
15943
  for ( $i = 0, $len = count( $result->plans ); $i < $len; $i ++ ) {
@@ -16199,11 +16905,12 @@
16199
  * @param bool|number $plugin_id
16200
  * @param bool $flush Since 1.1.7.3
16201
  * @param int $expiration Since 1.2.2.7
 
16202
  *
16203
  * @return object|false New plugin tag info if exist.
16204
  */
16205
- private function _fetch_newer_version( $plugin_id = false, $flush = true, $expiration = WP_FS__TIME_24_HOURS_IN_SEC ) {
16206
- $latest_tag = $this->_fetch_latest_version( $plugin_id, $flush, $expiration );
16207
 
16208
  if ( ! is_object( $latest_tag ) ) {
16209
  return false;
@@ -16228,17 +16935,18 @@
16228
  * @param bool|number $plugin_id
16229
  * @param bool $flush Since 1.1.7.3
16230
  * @param int $expiration Since 1.2.2.7
 
16231
  *
16232
  * @return bool|FS_Plugin_Tag
16233
  */
16234
- function get_update( $plugin_id = false, $flush = true, $expiration = WP_FS__TIME_24_HOURS_IN_SEC ) {
16235
  $this->_logger->entrance();
16236
 
16237
  if ( ! is_numeric( $plugin_id ) ) {
16238
  $plugin_id = $this->_plugin->id;
16239
  }
16240
 
16241
- $this->check_updates( true, $plugin_id, $flush, $expiration );
16242
  $updates = $this->get_all_updates();
16243
 
16244
  return isset( $updates[ $plugin_id ] ) && is_object( $updates[ $plugin_id ] ) ? $updates[ $plugin_id ] : false;
@@ -16267,14 +16975,62 @@
16267
  * @since 1.2.1
16268
  */
16269
  function has_active_valid_license() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16270
  return (
16271
- is_object( $this->_license ) &&
16272
- is_numeric( $this->_license->id ) &&
16273
- $this->_license->is_active() &&
16274
- $this->_license->is_valid()
16275
  );
16276
  }
16277
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16278
  /**
16279
  * Check if site assigned with license with enabled features.
16280
  *
@@ -16343,8 +17099,11 @@
16343
  * the admin.
16344
  * @param bool $is_context_single_site @since 2.0.0. This is used when syncing a license for a single install from the
16345
  * network-level "Account" page.
 
 
 
16346
  */
16347
- private function _sync_license( $background = false, $is_context_single_site = false ) {
16348
  $this->_logger->entrance();
16349
 
16350
  $plugin_id = fs_request_get( 'plugin_id', $this->get_id() );
@@ -16354,7 +17113,7 @@
16354
  if ( $is_addon_sync ) {
16355
  $this->_sync_addon_license( $plugin_id, $background );
16356
  } else {
16357
- $this->_sync_plugin_license( $background, true, $is_context_single_site );
16358
  }
16359
 
16360
  $this->do_action( 'after_account_plan_sync', $this->get_plan_name() );
@@ -16405,7 +17164,7 @@
16405
  $this->_update_licenses( $licenses, $addon->id );
16406
 
16407
  if ( ! $this->is_addon_installed( $addon->id ) && FS_License_Manager::has_premium_license( $licenses ) ) {
16408
- $plans_result = $this->get_api_site_or_plugin_scope()->get( "/addons/{$addon_id}/plans.json" );
16409
 
16410
  if ( ! isset( $plans_result->error ) ) {
16411
  $plans = array();
@@ -16444,11 +17203,15 @@
16444
  * @param bool $is_context_single_site Since 2.0.0. This is used when sending an update for a single install and
16445
  * syncing its license from the network-level "Account" page (e.g.: after
16446
  * activating a license only for the single install).
 
 
 
16447
  */
16448
  private function _sync_plugin_license(
16449
  $background = false,
16450
  $send_installs_update = true,
16451
- $is_context_single_site = false
 
16452
  ) {
16453
  $this->_logger->entrance();
16454
 
@@ -16465,6 +17228,16 @@
16465
  * @todo This line will execute install sync on a daily basis, even if running the free version (for opted-in users). The reason we want to keep it that way is for cases when the user was a paying customer, then there was a failure in subscription payment, and then after some time the payment was successful. This could be heavily optimized. For example, we can skip the $flush if the current install was never associated with a paid version.
16466
  */
16467
  if ( $is_site_level_sync ) {
 
 
 
 
 
 
 
 
 
 
16468
  $result = $this->send_install_update( array(), true );
16469
  $is_valid = $this->is_api_result_entity( $result );
16470
  } else {
@@ -16733,6 +17506,7 @@
16733
  'trial_promotion',
16734
  'trial_expired',
16735
  'activation_complete',
 
16736
  ) );
16737
  break;
16738
  case 'changed':
@@ -16973,6 +17747,18 @@
16973
  $api = $this->get_api_site_scope();
16974
  $license = $api->call( "/licenses/{$this->_site->license_id}.json", 'delete' );
16975
 
 
 
 
 
 
 
 
 
 
 
 
 
16976
  if ( isset( $license->error ) ) {
16977
  $this->_admin_notices->add(
16978
  $this->get_text_inline( 'It looks like the license deactivation failed.', 'license-deactivation-failed-message' ) . '<br> ' .
@@ -16993,7 +17779,7 @@
16993
  }
16994
  }
16995
 
16996
- // Updated site plan to default.
16997
  $this->_sync_plans();
16998
  $this->_site->plan_id = $this->_plans[0]->id;
16999
  // Unlink license from site.
@@ -17020,13 +17806,17 @@
17020
  * @author Vova Feldman (@svovaf)
17021
  * @since 1.0.4
17022
  *
 
 
17023
  * @uses FS_Api
17024
  */
17025
  private function _downgrade_site() {
17026
  $this->_logger->entrance();
17027
 
 
 
17028
  $api = $this->get_api_site_scope();
17029
- $site = $api->call( 'downgrade.json', 'put' );
17030
 
17031
  $plan_downgraded = false;
17032
  $plan = false;
@@ -17044,29 +17834,47 @@
17044
  ( is_object( $subscription ) && ! isset( $subscription->error ) && ! $subscription->is_active() );
17045
  } else {
17046
  // handle different error cases.
17047
-
 
 
 
17048
  }
17049
 
17050
- if ( $plan_downgraded ) {
17051
- // Remove previous sticky message about upgrade (if exist).
17052
- $this->_admin_notices->remove_sticky( 'plan_upgraded' );
17053
-
17054
- $this->_admin_notices->add(
17055
- sprintf( $this->get_text_inline( 'Your plan was successfully downgraded. Your %s plan license will expire in %s.', 'plan-x-downgraded-message' ),
17056
- $plan->title,
17057
- human_time_diff( time(), strtotime( $this->_license->expiration ) )
17058
  )
17059
  );
 
17060
 
17061
- // Store site updates.
17062
- $this->_store_site();
17063
- } else {
17064
- $this->_admin_notices->add(
17065
- $this->get_text_inline( 'Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes.', 'plan-downgraded-failure-message' ),
17066
- $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...',
17067
- 'error'
17068
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17069
  }
 
 
17070
  }
17071
 
17072
  /**
@@ -17173,22 +17981,19 @@
17173
  * @author Vova Feldman (@svovaf)
17174
  * @since 1.0.9
17175
  *
 
 
17176
  * @uses FS_Api
17177
  */
17178
  private function _cancel_trial() {
17179
  $this->_logger->entrance();
17180
 
17181
- // Alias.
17182
- $oops_text = $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...';
17183
-
17184
  if ( ! $this->is_trial() ) {
17185
- $this->_admin_notices->add(
17186
- $this->get_text_inline( 'It looks like you are not in trial mode anymore so there\'s nothing to cancel :)', 'trial-cancel-no-trial-message' ),
17187
- $oops_text,
17188
- 'error'
17189
  );
17190
-
17191
- return;
17192
  }
17193
 
17194
  $trial_plan = $this->get_trial_plan();
@@ -17219,31 +18024,33 @@
17219
  // @todo handle different error cases.
17220
  }
17221
 
17222
- if ( $trial_cancelled ) {
17223
- // Remove previous sticky messages about upgrade or trial (if exist).
17224
- $this->_admin_notices->remove_sticky( array(
17225
- 'trial_started',
17226
- 'trial_promotion',
17227
- 'plan_upgraded',
17228
- ) );
17229
 
17230
- // Store site updates.
17231
- $this->_store_site();
 
 
 
 
17232
 
17233
- if ( ! $this->is_addon() ||
17234
- ! $this->deactivate_premium_only_addon_without_license( true )
17235
- ) {
17236
- $this->_admin_notices->add(
17237
- sprintf( $this->get_text_inline( 'Your %s free trial was successfully cancelled.', 'trial-cancel-message' ), $trial_plan->title )
17238
- );
17239
- }
17240
- } else {
17241
  $this->_admin_notices->add(
17242
- $this->get_text_inline( 'Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes.', 'trial-cancel-failure-message' ),
17243
- $oops_text,
17244
- 'error'
17245
  );
17246
  }
 
 
17247
  }
17248
 
17249
  /**
@@ -17267,7 +18074,7 @@
17267
  * @return bool
17268
  */
17269
  private function _can_download_premium() {
17270
- return $this->has_active_valid_license() ||
17271
  ( $this->is_trial() && ! $this->get_trial_plan()->is_free() );
17272
  }
17273
 
@@ -17314,15 +18121,19 @@
17314
  * @since 1.0.4
17315
  *
17316
  * @param bool|number $addon_id
17317
- * @param bool $flush Since 1.1.7.3
17318
- * @param int $expiration Since 1.2.2.7
 
 
17319
  *
17320
  * @return object|false Plugin latest tag info.
17321
  */
17322
  function _fetch_latest_version(
17323
  $addon_id = false,
17324
  $flush = true,
17325
- $expiration = WP_FS__TIME_24_HOURS_IN_SEC
 
 
17326
  ) {
17327
  $this->_logger->entrance();
17328
 
@@ -17373,8 +18184,18 @@
17373
  $this->switch_to_blog( $switch_to_blog_id );
17374
  }
17375
 
 
 
 
 
 
 
 
 
 
 
17376
  $tag = $this->get_api_site_or_plugin_scope()->get(
17377
- $this->_get_latest_version_endpoint( $addon_id, 'json' ),
17378
  $flush,
17379
  $expiration
17380
  );
@@ -17510,17 +18331,19 @@
17510
  * @param bool|number $plugin_id
17511
  * @param bool $flush Since 1.1.7.3
17512
  * @param int $expiration Since 1.2.2.7
 
17513
  */
17514
  private function check_updates(
17515
  $background = false,
17516
  $plugin_id = false,
17517
  $flush = true,
17518
- $expiration = WP_FS__TIME_24_HOURS_IN_SEC
 
17519
  ) {
17520
  $this->_logger->entrance();
17521
 
17522
  // Check if there's a newer version for download.
17523
- $new_version = $this->_fetch_newer_version( $plugin_id, $flush, $expiration );
17524
 
17525
  $update = null;
17526
  if ( is_object( $new_version ) ) {
@@ -17570,19 +18393,21 @@
17570
 
17571
  $api = $this->get_api_site_or_plugin_scope();
17572
 
 
 
17573
  /**
17574
  * @since 1.2.1
17575
  *
17576
  * If there's a cached version of the add-ons and not asking
17577
  * for a flush, just use the currently stored add-ons.
17578
  */
17579
- if ( ! $flush && $api->is_cached( '/addons.json?enriched=true' ) ) {
17580
  $addons = self::get_all_addons();
17581
 
17582
  return $addons[ $this->_plugin->id ];
17583
  }
17584
 
17585
- $result = $api->get( '/addons.json?enriched=true', $flush );
17586
 
17587
  $addons = array();
17588
  if ( $this->is_api_result_object( $result, 'plugins' ) &&
@@ -17874,7 +18699,9 @@
17874
  */
17875
  function get_after_activation_url( $filter, $params = array(), $network = null ) {
17876
  if ( $this->is_free_wp_org_theme() &&
17877
- fs_request_has( 'pending_activation' )
 
 
17878
  ) {
17879
  $first_time_path = '';
17880
  } else {
@@ -18006,6 +18833,8 @@
18006
  $this->_site = null;
18007
  $this->_user = null;
18008
 
 
 
18009
  fs_redirect( $this->get_activation_url() );
18010
  } else {
18011
  if ( $this->is_addon_activated( $plugin_id ) ) {
@@ -18025,15 +18854,23 @@
18025
  check_admin_referer( $action );
18026
  }
18027
 
18028
- if ( $plugin_id == $this->get_id() ) {
18029
- $this->_downgrade_site();
 
 
 
18030
 
18031
- if ( is_numeric( $blog_id ) ) {
18032
- $this->switch_to_blog( $this->_storage->network_install_blog_id );
18033
- }
18034
- } else if ( $this->is_addon_activated( $plugin_id ) ) {
18035
- $fs_addon = self::get_instance_by_id( $plugin_id );
18036
- $fs_addon->_downgrade_site();
 
 
 
 
 
18037
  }
18038
 
18039
  return;
@@ -18065,7 +18902,11 @@
18065
  $this->_site = null;
18066
  $this->_user = null;
18067
 
18068
- fs_redirect( $this->get_activation_url() );
 
 
 
 
18069
  }
18070
  } else {
18071
  if ( $this->is_addon_activated( $plugin_id ) ) {
@@ -18163,13 +19004,13 @@
18163
  #region Actions that might be called from external links (e.g. email)
18164
 
18165
  case 'cancel_trial':
18166
- if ( $plugin_id == $this->get_id() ) {
18167
- $this->_cancel_trial();
18168
- } else {
18169
- if ( $this->is_addon_activated( $plugin_id ) ) {
18170
- $fs_addon = self::get_instance_by_id( $plugin_id );
18171
- $fs_addon->_cancel_trial();
18172
- }
18173
  }
18174
 
18175
  return;
@@ -18398,9 +19239,9 @@
18398
  $vars = array( 'id' => $this->_module_id );
18399
 
18400
  if ( 'true' === fs_request_get( 'checkout', false ) ) {
18401
- fs_require_once_template( 'checkout.php', $vars );
18402
  } else {
18403
- fs_require_once_template( 'pricing.php', $vars );
18404
  }
18405
  }
18406
 
@@ -18418,7 +19259,15 @@
18418
  $this->_logger->entrance();
18419
 
18420
  $vars = array( 'id' => $this->_module_id );
18421
- fs_require_once_template( 'contact.php', $vars );
 
 
 
 
 
 
 
 
18422
  }
18423
 
18424
  #endregion ------------------------------------------------------------------------
@@ -18515,7 +19364,9 @@
18515
  * @return FS_Api
18516
  */
18517
  private function get_current_or_network_user_api_scope( $flush = false ) {
18518
- if ( ! $this->_is_network_active || isset( $this->_user ) ) {
 
 
18519
  return $this->get_api_user_scope( $flush );
18520
  }
18521
 
@@ -18603,9 +19454,19 @@
18603
  * @author Vova Feldman (@svovaf)
18604
  * @since 1.0.9
18605
  *
18606
- * @param $plans
18607
  */
18608
  function _check_for_trial_plans( $plans ) {
 
 
 
 
 
 
 
 
 
 
18609
  $this->_storage->has_trial_plan = FS_Plan_Manager::instance()->has_trial_plan( $plans );
18610
  }
18611
 
@@ -18712,14 +19573,14 @@
18712
 
18713
  // Show promotion if never shown before and 24 hours after initial activation with FS.
18714
  if ( ! $was_promotion_shown_before &&
18715
- $this->_storage->install_timestamp > ( time() - WP_FS__TIME_24_HOURS_IN_SEC )
18716
  ) {
18717
  return false;
18718
  }
18719
 
18720
  // OR if promotion was shown before, try showing it every 30 days.
18721
  if ( $was_promotion_shown_before &&
18722
- 30 * WP_FS__TIME_24_HOURS_IN_SEC > time() - $last_time_trial_promotion_shown
18723
  ) {
18724
  return false;
18725
  }
@@ -19145,11 +20006,23 @@
19145
 
19146
  if ( ! $this->is_addon() || ! $this->has_free_plan() ) {
19147
  $first_time_path = $this->_menu->get_first_time_path();
19148
- $url = $this->is_activation_mode() ?
19149
- $this->get_activation_url() :
19150
- ( empty( $first_time_path ) ?
19151
- $this->_get_admin_page_url() :
19152
- $first_time_path );
 
 
 
 
 
 
 
 
 
 
 
 
19153
  } else {
19154
  $plugin_fs = false;
19155
 
@@ -19269,6 +20142,21 @@
19269
  $this->_admin_notices->add_sticky( $message, $id, $title, $type );
19270
  }
19271
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19272
  /**
19273
  * Helper function that returns the final steps for the upgrade completion.
19274
  *
@@ -19294,25 +20182,52 @@
19294
  $plan_title = $this->get_plan_title();
19295
  }
19296
 
19297
- // @since 1.2.1.5 The free version is auto deactivated.
19298
- $deactivation_step = version_compare( $this->version, '1.2.1.5', '<' ) ?
19299
- ( '<li>' . $this->esc_html_inline( 'Deactivate the free version', 'deactivate-free-version' ) . '.</li>' ) :
19300
- '';
 
 
 
 
 
19301
 
19302
- return sprintf(
19303
- ' %s: <ol><li>%s.</li>%s<li>%s (<a href="%s" target="_blank">%s</a>).</li></ol>',
19304
- $this->get_text_inline( 'Please follow these steps to complete the upgrade', 'follow-steps-to-complete-upgrade' ),
19305
- ( empty( $activate_license_string ) ? '' : $activate_license_string . '</li><li>' ) .
19306
- $this->get_latest_download_link( sprintf(
19307
- /* translators: %s: Plan title */
19308
- $this->get_text_inline( 'Download the latest %s version', 'download-latest-x-version' ),
19309
- $plan_title
19310
- ) ),
19311
- $deactivation_step,
19312
- $this->get_text_inline( 'Upload and activate the downloaded version', 'upload-and-activate' ),
19313
- '//bit.ly/upload-wp-' . $this->_module_type . 's',
19314
- $this->get_text_inline( 'How to upload and activate?', 'howto-upload-activate' )
19315
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19316
  }
19317
 
19318
  /**
@@ -19344,14 +20259,16 @@
19344
  * @param array $request
19345
  * @param int $success_cache_expiration
19346
  * @param int $failure_cache_expiration
 
19347
  *
19348
  * @return WP_Error|array
19349
  */
19350
- private static function safe_remote_post(
19351
  &$url,
19352
  $request,
19353
  $success_cache_expiration = 0,
19354
- $failure_cache_expiration = 0
 
19355
  ) {
19356
  $should_cache = ($success_cache_expiration + $failure_cache_expiration > 0);
19357
 
@@ -19362,7 +20279,9 @@
19362
  false;
19363
 
19364
  if ( false === $response ) {
19365
- self::enrich_request_for_debug( $url, $request );
 
 
19366
 
19367
  $response = wp_remote_post( $url, $request );
19368
 
@@ -20091,13 +21010,19 @@
20091
 
20092
  // Locate the main assets folder.
20093
  if ( 1 < count( $fs_active_plugins->plugins ) ) {
20094
- $plugin_or_theme_img_dir = ( $this->is_plugin() ? WP_PLUGIN_DIR : get_theme_root() );
20095
 
20096
  foreach ( $fs_active_plugins->plugins as $sdk_path => &$data ) {
20097
  if ( $data->plugin_path == $this->get_plugin_basename() ) {
20098
  $img_dir = $plugin_or_theme_img_dir
20099
  . '/'
20100
- . str_replace( '../themes/', '', $sdk_path )
 
 
 
 
 
 
20101
  . '/assets/img';
20102
 
20103
  break;
@@ -20117,6 +21042,10 @@
20117
  $icon_found = false;
20118
  $local_path = fs_normalize_path( "{$img_dir}/{$this->_slug}.png" );
20119
 
 
 
 
 
20120
  $have_write_permissions = ( 'direct' === get_filesystem_method( array(), fs_normalize_path( $img_dir ) ) );
20121
 
20122
  /**
@@ -20633,9 +21562,7 @@
20633
  * @since 2.1.0
20634
  */
20635
  function _maybe_add_gdpr_optin_ajax_handler() {
20636
- if ( $this->is_activation_mode() ) {
20637
- $this->add_ajax_action( 'fetch_is_marketing_required_flag_value', array( &$this, '_fetch_is_marketing_required_flag_value_ajax_action' ) );
20638
- }
20639
 
20640
  if ( FS_GDPR_Manager::instance()->is_opt_in_notice_shown() ) {
20641
  $this->add_gdpr_optin_ajax_handler_and_style();
@@ -20819,4 +21746,28 @@
20819
  }
20820
 
20821
  #endregion
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20822
  }
33
  * @var string
34
  */
35
  private $_plugin_basename;
36
+ /**
37
+ * @since 2.2.1
38
+ *
39
+ * @var string
40
+ */
41
+ private $_premium_plugin_basename;
42
  /**
43
  * @since 1.0.0
44
  *
677
  version_compare( $sdk_version, '1.2.3', '>=' )
678
  ) {
679
  /**
680
+ * Starting from version 1.2.3, paths are stored as relative instead of absolute and some of them can be
681
+ * invalid.
682
  *
683
  * @author Leo Fajardo (@leorw)
684
  */
685
+ $this->remove_invalid_paths();
686
  }
687
 
688
  if ( version_compare( $sdk_prev_version, '1.1.5', '<' ) &&
706
 
707
  }
708
  }
709
+
710
+ if (
711
+ version_compare( $sdk_prev_version, '2.2.1', '<' ) &&
712
+ version_compare( $sdk_version, '2.2.1', '>=' )
713
+ ) {
714
+ /**
715
+ * Clear the file cache without storing the previous path since it could be a wrong path. For example,
716
+ * in the versions of the SDK lower than 2.2.1, it's possible for the path of an add-on to be the same
717
+ * as the parent plugin's when the add-on was auto-installed since the relevant method names were not
718
+ * skipped in the logic that determines the right path in the `get_caller_main_file_and_type` method
719
+ * (e.g. `try_activate_plugin`). Since it was an auto-installation, the caller was the parent plugin
720
+ * and so its path was used. In case the stored path is wrong, clearing the cache will resolve issues
721
+ * related to data mix-up between plugins (e.g. titles and versions of an add-on and its parent plugin).
722
+ *
723
+ * @author Leo Fajardo (@leorw)
724
+ * @since 2.2.1
725
+ */
726
+ $this->clear_module_main_file_cache( false );
727
+ }
728
  }
729
 
730
  /**
850
  }
851
 
852
  /**
853
+ * Remove invalid paths.
854
  *
855
  * @author Leo Fajardo (@leorw)
856
  * @since 1.2.3
857
  */
858
+ private function remove_invalid_paths() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
859
  // Remove invalid path that is still associated with the current slug if there's any.
860
  $file_slug_map = self::$_accounts->get_option( 'file_slug_map', array() );
861
  foreach ( $file_slug_map as $plugin_basename => $slug ) {
1238
  <?php
1239
  }
1240
 
1241
+ /**
1242
+ * Opens the support forum subemenu item in a new browser page.
1243
+ *
1244
+ * @author Vova Feldman (@svovaf)
1245
+ * @since 2.1.4
1246
+ */
1247
+ static function _open_support_forum_in_new_page() {
1248
+ ?>
1249
+ <script type="text/javascript">
1250
+ (function ($) {
1251
+ $('.fs-submenu-item.wp-support-forum').parent().attr('target', '_blank');
1252
+ })(jQuery);
1253
+ </script>
1254
+ <?php
1255
+ }
1256
+
1257
  /**
1258
  * @author Vova Feldman (@svovaf)
1259
  * @since 1.0.9
1265
  add_action( 'plugins_loaded', array( &$this, '_hook_action_links_and_register_account_hooks' ) );
1266
 
1267
  if ( $this->is_plugin() ) {
1268
+ if ( self::is_plugin_install_page() && true !== fs_request_get_bool( 'fs_allow_updater_and_dialog' ) ) {
1269
+ /**
1270
+ * Unless the `fs_allow_updater_and_dialog` URL param exists and its value is `true`, make
1271
+ * Freemius-related updates unavailable on the "Add Plugins" admin page (/plugin-install.php)
1272
+ * so that they won't interfere with the .org plugins' functionalities on that page (e.g.
1273
+ * updating of a .org plugin).
1274
+ */
1275
+ add_filter( 'site_transient_update_plugins', array( 'Freemius', '_remove_fs_updates_from_plugin_install_page' ), 10, 2 );
1276
+ } else if ( self::is_plugins_page() || self::is_updates_page() ) {
1277
+ /**
1278
+ * On the "Plugins" and "Updates" admin pages, if there are premium or non–org-compliant
1279
+ * plugins, modify their details dialog URLs (add a Freemius-specific param) so that the SDK can
1280
+ * determine if the plugin information dialog should show information from Freemius.
1281
+ *
1282
+ * @author Leo Fajardo (@leorw)
1283
+ * @since 2.2.3
1284
+ */
1285
+ add_action( 'admin_footer', array( 'Freemius', '_prepend_fs_allow_updater_and_dialog_flag_url_param' ) );
1286
+ }
1287
+
1288
  $plugin_dir = dirname( $this->_plugin_dir_path ) . '/';
1289
 
1290
  /**
1392
  add_action( 'make_ham_blog', array( &$this, '_after_site_reactivated_callback' ) );
1393
  }
1394
 
1395
+ if ( $this->is_theme() &&
1396
+ self::is_customizer() &&
1397
+ $this->apply_filters( 'show_customizer_upsell', true )
1398
+ ) {
1399
  // Register customizer upsell.
1400
  add_action( 'customize_register', array( &$this, '_customizer_register' ) );
1401
  }
1452
  }
1453
  }
1454
 
1455
+ /**
1456
+ * Makes Freemius-related updates unavailable on the "Add Plugins" admin page (/plugin-install.php) so that
1457
+ * they won't interfere with the .org plugins' functionalities on that page (e.g. updating of a .org plugin).
1458
+ *
1459
+ * @author Leo Fajardo (@leorw)
1460
+ * @since 2.2.3
1461
+ *
1462
+ * @param object $updates
1463
+ * @param string|null $transient
1464
+ *
1465
+ * @return object
1466
+ */
1467
+ static function _remove_fs_updates_from_plugin_install_page( $updates, $transient = null ) {
1468
+ if ( is_object( $updates ) && isset( $updates->response ) ) {
1469
+ foreach ( $updates->response as $file => $plugin ) {
1470
+ if ( false !== strpos( $plugin->package, 'api.freemius' ) ) {
1471
+ unset( $updates->response[ $file ] );
1472
+ }
1473
+ }
1474
+ }
1475
+
1476
+ return $updates;
1477
+ }
1478
+
1479
+ /**
1480
+ * Prepends the `fs_allow_updater_and_dialog` param to the plugin information URLs to tell the SDK to handle
1481
+ * the information that is shown on the plugin details dialog that is shown when the relevant link is clicked.
1482
+ *
1483
+ * @author Leo Fajardo (@leorw)
1484
+ * @since 2.2.3
1485
+ *
1486
+ * @return string
1487
+ */
1488
+ static function _prepend_fs_allow_updater_and_dialog_flag_url_param() {
1489
+ $slug_basename_map = array();
1490
+ foreach ( self::$_instances as $instance ) {
1491
+ if ( ! $instance->is_plugin() ) {
1492
+ continue;
1493
+ }
1494
+
1495
+ $slug_basename_map[ $instance->get_slug() ] = $instance->premium_plugin_basename();
1496
+ }
1497
+ ?>
1498
+ <script type="text/javascript">
1499
+ (function( $ ) {
1500
+ var slugBasenameMap = <?php echo json_encode( $slug_basename_map ) ?>;
1501
+ for ( var slug in slugBasenameMap ) {
1502
+ var basename = slugBasenameMap[ slug ];
1503
+
1504
+ // Try to get the plugin rows if on the "Plugins" page.
1505
+ var $pluginRows = $( '.wp-list-table.plugins tr[data-plugin="' + basename + '"]');
1506
+
1507
+ if ( 0 === $pluginRows.length ) {
1508
+ // Try to get the plugin rows if on the "Updates" page.
1509
+ var $pluginCheckbox = $( '#update-plugins-table input[type="checkbox"][value="' + basename + '"]' );
1510
+ if ( 0 !== $pluginCheckbox.length ) {
1511
+ $pluginRows = $pluginCheckbox.parents( 'tr:first' );
1512
+ }
1513
+ }
1514
+
1515
+ if ( 0 === $pluginRows.length ) {
1516
+ // No plugin rows found.
1517
+ continue;
1518
+ }
1519
+
1520
+ // Find the "View details" links and add the `fs_allow_updater_and_dialog` param to the URL.
1521
+ $pluginRows.find( 'a[href*="plugin-install.php?tab=plugin-information"]' ).each(function() {
1522
+ var $this = $( this ),
1523
+ href = $this.attr( 'href' ).replace( '?tab=', '?fs_allow_updater_and_dialog=true&tab=');
1524
+
1525
+ $this.attr( 'href', href );
1526
+ });
1527
+ }
1528
+ })( jQuery );
1529
+ </script>
1530
+ <?php
1531
+ }
1532
+
1533
  /**
1534
  * Keeping the uninstall hook registered for free or premium plugin version may result to a fatal error that
1535
  * could happen when a user tries to uninstall either version while one of them is still active. Uninstalling a
1550
 
1551
  /**
1552
  * @since 1.2.0 Invalidate module's main file cache, otherwise, FS_Plugin_Updater will not fetch updates.
1553
+ *
1554
+ * @param bool $store_prev_path
1555
  */
1556
+ private function clear_module_main_file_cache( $store_prev_path = true ) {
1557
  if ( ! isset( $this->_storage->plugin_main_file ) ||
1558
+ empty( $this->_storage->plugin_main_file->path )
1559
  ) {
1560
  return;
1561
  }
1562
 
1563
+ if ( ! $store_prev_path ) {
1564
+ /**
1565
+ * Storing the previous path is not needed when clearing the cache after an SDK version update since
1566
+ * the main purpose of the cache clearing in that event is to correct a wrong plugin main file path
1567
+ * which causes data mix-up between plugins (e.g. titles and versions of an add-on and its parent plugin).
1568
+ *
1569
+ * @author Leo Fajardo (@leorw)
1570
+ * @since 2.2.1
1571
+ */
1572
+ unset( $this->_storage->plugin_main_file->path );
1573
+ } else {
1574
+ $plugin_main_file = clone $this->_storage->plugin_main_file;
1575
 
1576
+ // Store cached path (2nd layer cache).
1577
+ $plugin_main_file->prev_path = $plugin_main_file->path;
1578
 
1579
+ // Clear cached path.
1580
+ unset( $plugin_main_file->path );
1581
 
1582
+ $this->_storage->plugin_main_file = $plugin_main_file;
1583
+ }
1584
 
1585
  /**
1586
  * Clear global cached path.
1627
  array( &$this, '_submit_uninstall_reason_action' )
1628
  );
1629
 
1630
+ $this->add_ajax_action(
1631
+ 'cancel_subscription_or_trial',
1632
+ array( &$this, 'cancel_subscription_or_trial_ajax_action' )
1633
+ );
 
 
1634
 
1635
  if ( ! $this->is_addon() || $this->is_parent_plugin_installed() ) {
1636
  if ( ( $this->is_plugin() && self::is_plugins_page() ) ||
1756
 
1757
  return fs_normalize_path( trailingslashit( $is_plugin ?
1758
  WP_PLUGIN_DIR :
1759
+ get_theme_root( get_stylesheet() ) ) );
1760
  }
1761
 
1762
  /**
1821
  private function get_caller_main_file_and_type() {
1822
  self::require_plugin_essentials();
1823
 
1824
+ $all_plugins = fs_get_plugins( true );
1825
  $all_plugins_paths = array();
1826
 
1827
  // Get active plugin's main files real full names (might be symlinks).
1828
+ foreach ( $all_plugins as $relative_path => $data ) {
1829
  if ( false === strpos( fs_normalize_path( $relative_path ), '/' ) ) {
1830
  /**
1831
  * Ignore plugins that don't have a folder (e.g. Hello Dolly) since they
1843
  $caller_file_candidate = false;
1844
  $caller_map = array();
1845
  $module_type = WP_FS__MODULE_TYPE_PLUGIN;
1846
+ $themes_dir = fs_normalize_path( get_theme_root( get_stylesheet() ) );
1847
 
1848
  for ( $i = 1, $bt = debug_backtrace(), $len = count( $bt ); $i < $len; $i ++ ) {
1849
  if ( empty( $bt[ $i ]['file'] ) ) {
1863
  'requir' . 'e_once',
1864
  'requir' . 'e',
1865
  'includ' . 'e_once',
1866
+ 'includ' . 'e',
1867
+ 'install_and_activate_plugin',
1868
+ 'try_activate_plugin',
1869
+ 'activate_plugin'
1870
  ) )
1871
  ) {
1872
  // Ignore call stack hooks and files inclusion.
2202
  exit;
2203
  }
2204
 
2205
+ /**
2206
+ * @author Leo Fajardo (@leorw)
2207
+ * @since 2.1.4
2208
+ */
2209
+ function cancel_subscription_or_trial_ajax_action() {
2210
+ $this->_logger->entrance();
2211
+
2212
+ $this->check_ajax_referer( 'cancel_subscription_or_trial' );
2213
+
2214
+ $result = $this->cancel_subscription_or_trial( fs_request_get( 'plugin_id', $this->get_id() ), false );
2215
+
2216
+ if ( $this->is_api_error( $result ) ) {
2217
+ $this->shoot_ajax_failure( $result->error->message );
2218
+ }
2219
+
2220
+ $this->shoot_ajax_success();
2221
+ }
2222
+
2223
+ /**
2224
+ * @author Leo Fajardo (@leorw)
2225
+ * @since 2.1.4
2226
+ *
2227
+ * @param number $plugin_id
2228
+ *
2229
+ * @return object
2230
+ */
2231
+ private function cancel_subscription_or_trial( $plugin_id ) {
2232
+ $fs = null;
2233
+ if ( $plugin_id == $this->get_id() ) {
2234
+ $fs = $this;
2235
+ } else if ( $this->is_addon_activated( $plugin_id ) ) {
2236
+ $fs = self::get_instance_by_id( $plugin_id );
2237
+ }
2238
+
2239
+ $result = null;
2240
+
2241
+ if ( ! is_null( $fs ) ) {
2242
+ $result = $fs->is_paid_trial() ?
2243
+ $fs->_cancel_trial() :
2244
+ $fs->_downgrade_site();
2245
+ }
2246
+
2247
+ return $result;
2248
+ }
2249
+
2250
  /**
2251
  * @author Leo Fajardo (@leorw)
2252
  * @since 2.0.2
2323
  * @since 1.2.2
2324
  *
2325
  * @param string|number $id_or_slug
2326
+ * @param string $module_type
2327
  *
2328
  * @return number|false
2329
  */
2330
+ private static function get_module_id( $id_or_slug, $module_type = WP_FS__MODULE_TYPE_PLUGIN ) {
2331
  if ( is_numeric( $id_or_slug ) ) {
2332
  return $id_or_slug;
2333
  }
2334
 
2335
  foreach ( self::$_instances as $instance ) {
2336
+ // Also check the module type since there can be a plugin and a theme with the same slug.
2337
+ if ( ( $module_type === $instance->get_module_type() ) && ( $id_or_slug === $instance->get_slug() ) ) {
2338
  return $instance->get_id();
2339
  }
2340
  }
2361
  * @author Vova Feldman (@svovaf)
2362
  * @since 1.0.1
2363
  *
2364
+ * @param string $plugin_file
2365
+ * @param string $module_type
2366
  *
2367
  * @return false|Freemius
2368
  */
2369
+ static function get_instance_by_file( $plugin_file, $module_type = WP_FS__MODULE_TYPE_PLUGIN ) {
2370
  $slug = self::find_slug_by_basename( $plugin_file );
2371
 
2372
  return ( false !== $slug ) ?
2373
+ self::instance( self::get_module_id( $slug, $module_type ) ) :
2374
  false;
2375
  }
2376
 
2484
  function is_site_activation_mode( $and_on = true ) {
2485
  return (
2486
  ( $this->is_on() || ! $and_on ) &&
2487
+ ( $this->is_premium() && true === $this->_storage->require_license_activation ) ||
2488
+ (
2489
+ ( ! $this->is_registered() ||
2490
+ ( $this->is_only_premium() && ! $this->has_features_enabled_license() ) ) &&
2491
+ ( ! $this->is_enable_anonymous() ||
2492
+ ( ! $this->is_anonymous() && ! $this->is_pending_activation() ) )
2493
+ )
2494
  );
2495
  }
2496
 
2525
  return false;
2526
  }
2527
 
2528
+ if ( $this->is_network_anonymous() && true !== $this->_storage->require_license_activation ) {
2529
  // Super-admin skipped the connection network wide -> not activation mode.
2530
  return false;
2531
  }
2646
  self::require_plugin_essentials();
2647
 
2648
  $active_plugin = array();
2649
+ $all_plugins = fs_get_plugins();
2650
  $active_plugins_basenames = self::get_active_plugins_basenames( $blog_id );
2651
 
2652
  foreach ( $active_plugins_basenames as $plugin_basename ) {
2672
  get_option( 'active_plugins' );
2673
 
2674
  $active = array();
2675
+
2676
+ if ( ! is_array( $active_basenames ) ) {
2677
+ return $active;
2678
+ }
2679
+
2680
  foreach ( $active_basenames as $basename ) {
2681
  $active[ $basename ] = array(
2682
  'is_active' => true,
2701
  private static function get_all_plugins( $blog_id = 0 ) {
2702
  self::require_plugin_essentials();
2703
 
2704
+ $all_plugins = fs_get_plugins();
2705
 
2706
  $active_plugins_basenames = self::get_active_plugins_basenames( $blog_id );
2707
 
2733
  private static function get_network_plugins() {
2734
  self::require_plugin_essentials();
2735
 
2736
+ $all_plugins = fs_get_plugins();
2737
 
2738
  $network_active_basenames = is_multisite() ?
2739
  get_site_option( 'active_sitewide_plugins' ) :
2830
  self::$_accounts = FS_Options::instance( WP_FS__ACCOUNTS_OPTION_NAME, true );
2831
 
2832
  if ( is_multisite() ) {
2833
+ $has_skipped_migration = (
2834
+ // 'id_slug_type_path_map' - was never stored on older versions, therefore, not exists on the site level.
2835
+ null === self::$_accounts->get_option( 'id_slug_type_path_map', null, false ) &&
2836
+ // 'file_slug_map' stored on the site level, so it was running an SDK version before it was integrated with MS-network.
2837
+ null !== self::$_accounts->get_option( 'file_slug_map', null, false )
2838
+ );
2839
+
2840
  /**
2841
+ * If the file_slug_map exists on the site level but doesn't exist on the
2842
  * network level storage, it means that we need to process the storage with migration.
2843
  *
2844
+ * The code in this `if` scope will only be executed once and only for the first site that will execute it because once we migrate the storage data, file_slug_map will be already set in the network level storage.
2845
  *
2846
  * @author Vova Feldman (@svovaf)
2847
  * @since 2.0.0
2848
  */
2849
+ if (
2850
+ ( $has_skipped_migration && true !== self::$_accounts->get_option( 'ms_migration_complete', false, true ) ) ||
2851
+ ( null === self::$_accounts->get_option( 'file_slug_map', null, true ) &&
2852
+ null !== self::$_accounts->get_option( 'file_slug_map', null, false ) )
2853
  ) {
2854
+ self::migrate_options_to_network();
 
 
 
 
 
 
 
2855
  }
2856
  }
2857
 
2877
  }
2878
 
2879
  add_action( 'admin_footer', array( 'Freemius', '_enrich_ajax_url' ) );
2880
+ add_action( 'admin_footer', array( 'Freemius', '_open_support_forum_in_new_page' ) );
2881
+
2882
 
2883
  self::$_statics_loaded = true;
2884
  }
2885
 
2886
+ /**
2887
+ * @author Leo Fajardo (@leorw)
2888
+ *
2889
+ * @since 2.1.3
2890
+ */
2891
+ private static function migrate_options_to_network() {
2892
+ self::migrate_accounts_to_network();
2893
+
2894
+ // Migrate API options from site level to network level.
2895
+ $api_network_options = FS_Option_Manager::get_manager( WP_FS__OPTIONS_OPTION_NAME, true, true );
2896
+ $api_network_options->migrate_to_network();
2897
+
2898
+ // Migrate API cache to network level storage.
2899
+ FS_Cache_Manager::get_manager( WP_FS__API_CACHE_OPTION_NAME )->migrate_to_network();
2900
+
2901
+ self::$_accounts->set_option( 'ms_migration_complete', true, true );
2902
+ }
2903
+
2904
  #----------------------------------------------------------------------------------
2905
  #region Localization
2906
  #----------------------------------------------------------------------------------
3127
  }
3128
 
3129
  fs_redirect( $download_url );
3130
+ } else if ( fs_request_is_action( 'migrate_options_to_network' ) ) {
3131
+ check_admin_referer( 'migrate_options_to_network' );
3132
+
3133
+ self::migrate_options_to_network();
3134
  }
3135
  }
3136
 
4183
 
4184
  $this->parse_settings( $plugin_info );
4185
 
4186
+ if ( is_admin() && $this->is_theme() && $this->is_premium() && ! $this->has_active_valid_license() ) {
4187
+ $this->add_ajax_action(
4188
+ 'delete_theme_update_data',
4189
+ array( &$this, '_delete_theme_update_data_action' )
4190
+ );
4191
+ }
4192
+
4193
  if ( ! self::is_ajax() ) {
4194
  if ( ! $this->is_addon() || $this->is_only_premium() ) {
4195
  add_action(
4270
  * @author Vova Feldman (@svovaf)
4271
  */
4272
  if ( $this->is_user_in_admin() &&
4273
+ 'plugin-information' === fs_request_get( 'tab', false ) &&
4274
+ $this->should_use_freemius_updater_and_dialog() &&
4275
+ (
4276
+ ( $this->is_addon() && $this->get_slug() == fs_request_get( 'plugin', false ) ) ||
4277
+ ( $this->has_addons() && $this->get_id() == fs_request_get( 'parent_plugin_id', false ) )
4278
+ )
4279
  ) {
4280
  require_once WP_FS__DIR_INCLUDES . '/fs-plugin-info-dialog.php';
4281
 
4282
+ new FS_Plugin_Info_Dialog( $this->is_addon() ? $this->get_parent_instance() : $this );
4283
  }
4284
 
4285
  // Check if Freemius is on for the current plugin.
4393
  * @author Vova Feldman
4394
  * @since 1.2.1.6
4395
  */
4396
+ if (
4397
+ $this->should_use_freemius_updater_and_dialog() &&
4398
+ (
4399
+ $this->is_premium() ||
4400
+ /**
4401
+ * If not premium but the premium version is installed, also instantiate the updater so that the
4402
+ * plugin information dialog of the premium version will have the information from the server.
4403
+ *
4404
+ * @author Leo Fajardo (@leorw)
4405
+ * @since 2.2.3
4406
+ */
4407
+ ( file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $this->premium_plugin_basename() ) ) )
4408
+ ) &&
4409
+ $this->has_release_on_freemius()
4410
+ ) {
4411
  FS_Plugin_Updater::instance( $this );
4412
  }
4413
 
4450
  }
4451
  }
4452
 
4453
+ /**
4454
+ * @author Leo Fajardo (@leorw)
4455
+ * @since 2.2.3
4456
+ *
4457
+ * @return bool
4458
+ */
4459
+ private function should_use_freemius_updater_and_dialog() {
4460
+ return (
4461
+ /**
4462
+ * Unless the `fs_allow_updater_and_dialog` URL param exists and its value is `true`, disallow updater
4463
+ * and dialog on the "Add Plugins" admin page (/plugin-install.php) so that they won't interfere with
4464
+ * the .org plugins' functionalities on that page (e.g. installation and viewing plugin details from
4465
+ * .org).
4466
+ */
4467
+ ( ! self::is_plugin_install_page() || true === fs_request_get_bool( 'fs_allow_updater_and_dialog' ) ) &&
4468
+ // Disallow updater and dialog when installing a plugin, otherwise .org "add-on" plugins will be affected.
4469
+ ( 'install-plugin' !== fs_request_get( 'action' ) )
4470
+ );
4471
+ }
4472
+
4473
  /**
4474
  * @author Leo Fajardo (@leorw)
4475
  *
4906
  $this->_plugin :
4907
  new FS_Plugin();
4908
 
4909
+ $premium_suffix = $this->get_option( $plugin_info, 'premium_suffix', '(Premium)' );
4910
+
4911
  $plugin->update( array(
4912
  'id' => $id,
4913
  'type' => $this->get_option( $plugin_info, 'type', $this->_module_type ),
4914
  'public_key' => $public_key,
4915
  'slug' => $this->_slug,
4916
+ 'premium_slug' => $this->get_option( $plugin_info, 'premium_slug', "{$this->_slug}-premium" ),
4917
  'parent_plugin_id' => $parent_id,
4918
  'version' => $this->get_plugin_version(),
4919
+ 'title' => $this->get_plugin_name( $premium_suffix ),
4920
  'file' => $this->_plugin_basename,
4921
  'is_premium' => $this->get_bool_option( $plugin_info, 'is_premium', true ),
4922
+ 'premium_suffix' => $premium_suffix,
4923
  'is_live' => $this->get_bool_option( $plugin_info, 'is_live', true ),
4924
  'affiliate_moderation' => $this->get_option( $plugin_info, 'has_affiliation' ),
4925
  ) );
5300
  }
5301
 
5302
  $addon = $this->get_addon( $addon_id );
5303
+ $premium_basename = "{$addon->premium_slug}/{$addon->slug}.php";
5304
 
5305
  if ( file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $premium_basename ) ) ) {
5306
  return $premium_basename;
5308
 
5309
  $all_plugins = $this->get_all_plugins();
5310
 
5311
+ foreach ( $all_plugins as $basename => $data ) {
5312
  if ( $addon->slug === $data['slug'] ||
5313
+ $addon->premium_slug === $data['slug']
5314
  ) {
5315
  return $basename;
5316
  }
5550
  if ( ! isset( $this->_is_anonymous ) ) {
5551
  if ( $this->is_network_anonymous() ) {
5552
  $this->_is_anonymous = true;
5553
+ } else if ( ! fs_is_network_admin() ) {
5554
  if ( ! isset( $this->_storage->is_anonymous ) ) {
5555
  // Not skipped.
5556
  $this->_is_anonymous = false;
5741
  $this->_storage->store( "{$name}_timestamp", time() );
5742
  }
5743
 
5744
+ /**
5745
+ * Sets the keepalive time to now.
5746
+ *
5747
+ * @author Leo Fajardo (@leorw)
5748
+ * @since 2.2.3
5749
+ *
5750
+ * @param bool|null $use_network_level_storage
5751
+ */
5752
+ private function set_keepalive_timestamp( $use_network_level_storage = null ) {
5753
+ $this->_logger->entrance();
5754
+
5755
+ $this->_storage->store( 'keepalive_timestamp', time(), $use_network_level_storage );
5756
+ }
5757
+
5758
  /**
5759
  * Check if cron was executed in the last $period of seconds.
5760
  *
5769
  private function is_cron_executed( $name, $period = WP_FS__TIME_24_HOURS_IN_SEC ) {
5770
  $this->_logger->entrance( $name );
5771
 
5772
+ $last_execution = $this->cron_last_execution( $name );
5773
 
5774
  if ( ! is_numeric( $last_execution ) ) {
5775
  return false;
6030
  }
6031
  }
6032
 
6033
+ $current_blog_id = get_current_blog_id();
6034
+
6035
  foreach ( $users_2_blog_ids as $user_id => $blog_ids ) {
6036
  if ( 0 < $blog_ids[0] ) {
6037
  $this->switch_to_blog( $blog_ids[0] );
6038
  }
6039
 
6040
+ call_user_func_array( $callable, array( $blog_ids, ( is_multisite() ? $current_blog_id : null ) ) );
6041
 
6042
  foreach ( $blog_ids as $blog_id ) {
6043
  $this->do_action( "after_{$name}_cron", $blog_id );
6045
  }
6046
 
6047
  if ( is_multisite() ) {
6048
+ $this->switch_to_blog( $current_blog_id );
6049
+
6050
  $this->do_action( "after_{$name}_cron_multisite" );
6051
  }
6052
  }
6118
  * @author Vova Feldman (@svovaf)
6119
  * @since 2.0.0
6120
  *
6121
+ * @param int[] $blog_ids
6122
+ * @param int|null $current_blog_id @since 2.2.3. This is passed from the `execute_cron` method and used by the
6123
+ * `_sync_plugin_license` method in order to switch to the previous blog when sending
6124
+ * updates for a single site in case `execute_cron` has switched to a different blog.
6125
  */
6126
+ function _sync_cron_method( array $blog_ids, $current_blog_id = null ) {
6127
  if ( $this->is_registered() ) {
6128
  if ( $this->has_paid_plan() ) {
6129
  // Initiate background plan sync.
6130
+ $this->_sync_license( true, false, $current_blog_id );
6131
 
6132
  if ( $this->is_paying() ) {
6133
  // Check for premium plugin updates.
6274
  * @param int $except_blog_id Since 2.0.0 when running in a multisite network environment, the cron execution is consolidated. This param allows excluding excluded specified blog ID from being the cron executor.
6275
  */
6276
  private function schedule_install_sync( $except_blog_id = 0 ) {
6277
+ $this->schedule_cron( 'install_sync', 'install_sync', 'single', WP_FS__SCRIPT_START_TIME, false, $except_blog_id );
6278
  }
6279
 
6280
  /**
6342
  * @author Vova Feldman (@svovaf)
6343
  * @since 2.0.0
6344
  *
6345
+ * @param int[] $blog_ids
6346
+ * @param int|null $current_blog_id
6347
  */
6348
+ function _sync_install_cron_method( array $blog_ids, $current_blog_id = null ) {
6349
  if ( $this->is_registered() ) {
6350
  if ( 1 < count( $blog_ids ) ) {
6351
  $this->sync_installs( array(), true );
6449
  if ( ! $this->is_addon() &&
6450
  ! ( ! $this->_is_network_active && fs_is_network_admin() ) &&
6451
  (
6452
+ ( true === $this->_storage->require_license_activation ) ||
6453
  // Not registered nor anonymous.
6454
  ( ! $this->is_registered() && ! $this->is_anonymous() ) ||
6455
  // OR, network level and in network upgrade mode.
6466
  * @since 1.2.2
6467
  */
6468
  if ( $this->is_theme()
 
6469
  && ! $this->has_settings_menu()
6470
  && ! isset( $_REQUEST['fs_action'] )
6471
  && $this->can_activate_previous_theme()
6472
  ) {
6473
+ if ( $this->is_only_premium() ) {
6474
+ $this->activate_previous_theme();
6475
+ return;
6476
+ }
6477
 
6478
+ if ( true === $this->_storage->require_license_activation ) {
6479
+ $this->_storage->require_license_activation = false;
6480
+ }
6481
  }
6482
 
6483
  if ( ! fs_is_network_admin() &&
6488
  }
6489
 
6490
  if ( $this->is_plugin_new_install() || $this->is_only_premium() ) {
6491
+ if ( ! $this->_anonymous_mode ) {
6492
+ // Show notice for new plugin installations.
6493
+ $this->_admin_notices->add(
6494
+ sprintf(
6495
+ $this->get_text_inline( 'You are just one step away - %s', 'you-are-step-away' ),
6496
+ sprintf( '<b><a href="%s">%s</a></b>',
6497
+ $this->get_activation_url( array(), ! $this->is_delegated_connection() ),
6498
+ sprintf( $this->get_text_x_inline( 'Complete "%s" Activation Now',
6499
+ '%s - plugin name. As complete "PluginX" activation now', 'activate-x-now' ), $this->get_plugin_name() )
6500
+ )
6501
+ ),
6502
+ '',
6503
+ 'update-nag'
6504
+ );
6505
+ }
6506
  } else {
6507
  if ( $this->should_add_sticky_optin_notice() ) {
6508
  $this->add_sticky_optin_admin_notice();
6577
  $this->_module_type,
6578
  sprintf( '<b><a href="%s">%s</a></b>',
6579
  $this->get_activation_url(),
6580
+ sprintf( $this->get_text_inline( 'Opt in to make "%s" better!', 'optin-x-now' ), $this->get_plugin_name() )
6581
  )
6582
  ),
6583
  'connect_account',
7039
  }
7040
  }
7041
 
7042
+ if (
7043
+ $is_premium_version_activation &&
7044
+ (
7045
+ ( ! $this->is_registered() && $this->is_anonymous() ) ||
7046
+ (
7047
+ $this->is_registered() &&
7048
+ ! $this->is_trial() &&
7049
+ ! $this->has_features_enabled_license()
7050
+ )
7051
+ )
7052
+ ) {
7053
+ $this->_storage->require_license_activation = true;
7054
+ }
7055
+
7056
  if ( ! isset( $this->_storage->is_plugin_new_install ) ) {
7057
  /**
7058
  * If no previous version of plugin's version exist, it means that it's either
7322
  private function remove_sdk_reference() {
7323
  global $fs_active_plugins;
7324
 
7325
+ foreach ( $fs_active_plugins->plugins as $sdk_path => $data ) {
7326
  if ( $this->_plugin_basename == $data->plugin_path ) {
7327
  unset( $fs_active_plugins->plugins[ $sdk_path ] );
7328
  break;
7504
  }
7505
  }
7506
 
7507
+ /**
7508
+ * This is used to ensure that before redirecting to the opt-in page after resetting the anonymous mode or
7509
+ * deleting the account in the network level, the URL of the page to redirect to is correct.
7510
+ *
7511
+ * @author Leo Fajardo (@leorw)
7512
+ *
7513
+ * @since 2.1.3
7514
+ */
7515
+ private function maybe_set_slug_and_network_menu_exists_flag() {
7516
+ if ( ! empty( $this->_dynamically_added_top_level_page_hook_name ) ) {
7517
+ $this->_menu->set_slug_and_network_menu_exists_flag( $this->_menu->has_menu() ?
7518
+ $this->_menu->get_slug() :
7519
+ $this->_slug
7520
+ );
7521
+ }
7522
+ }
7523
+
7524
  /**
7525
  * Clears the anonymous mode and redirects to the opt-in screen.
7526
  *
7534
 
7535
  $this->reset_anonymous_mode( fs_is_network_admin() );
7536
 
7537
+ $this->maybe_set_slug_and_network_menu_exists_flag();
7538
+
7539
  fs_redirect( $this->get_activation_url() );
7540
  }
7541
 
7975
  $include_plugins = true,
7976
  $include_themes = true
7977
  ) {
7978
+ if ( ! defined( 'WP_FS__TRACK_PLUGINS' ) || false !== WP_FS__TRACK_PLUGINS ) {
7979
+ /**
7980
+ * @since 1.1.8 Also send plugin updates.
7981
+ */
7982
+ if ( $include_plugins && ! isset( $override['plugins'] ) ) {
7983
+ $plugins = $this->get_plugins_data_for_api();
7984
+ if ( ! empty( $plugins ) ) {
7985
+ $override['plugins'] = $plugins;
7986
+ }
7987
  }
7988
  }
7989
+
7990
+ if ( ! defined( 'WP_FS__TRACK_THEMES' ) || false !== WP_FS__TRACK_THEMES ) {
7991
+ /**
7992
+ * @since 1.1.8 Also send themes updates.
7993
+ */
7994
+ if ( $include_themes && ! isset( $override['themes'] ) ) {
7995
+ $themes = $this->get_themes_data_for_api();
7996
+ if ( ! empty( $themes ) ) {
7997
+ $override['themes'] = $themes;
7998
+ }
7999
  }
8000
  }
8001
 
8002
+ $versions = $this->get_versions();
8003
+
8004
+ return array_merge( $versions, array(
8005
+ 'version' => $this->get_plugin_version(),
8006
+ 'is_premium' => $this->is_premium(),
8007
+ 'language' => get_bloginfo( 'language' ),
8008
+ 'charset' => get_bloginfo( 'charset' ),
8009
+ 'title' => get_bloginfo( 'name' ),
8010
+ 'url' => get_site_url(),
 
8011
  // Special params.
8012
+ 'is_active' => true,
8013
+ 'is_disconnected' => $this->is_tracking_prohibited(),
8014
+ 'is_uninstalled' => false,
8015
  ), $override );
8016
  }
8017
 
8056
  // }
8057
 
8058
  // Common properties.
8059
+ $versions = $this->get_versions();
8060
+ $common = array_merge( $versions, array(
8061
+ 'version' => $this->get_plugin_version(),
8062
+ 'is_premium' => $this->is_premium(),
 
 
8063
  ), $override );
8064
 
8065
 
8213
  $params = $this->get_install_diff_for_api( $check_properties, $this->_site, $override );
8214
  }
8215
 
8216
+ $keepalive_only_update = false;
8217
+ if ( empty( $params ) ) {
8218
+ $keepalive_only_update = $this->should_send_keepalive_update();
8219
+
8220
+ if ( ! $keepalive_only_update ) {
8221
+ /**
8222
+ * There are no updates to send including keepalive.
8223
+ *
8224
+ * @author Leo Fajardo (@leorw)
8225
+ * @since 2.2.3
8226
+ */
8227
+ return false;
8228
+ }
8229
+ }
8230
+
8231
+ if ( ! $keepalive_only_update ) {
8232
+ /**
8233
+ * Do not update the last install sync timestamp after a keepalive-only call since there were no actual
8234
+ * updates sent.
8235
+ *
8236
+ * @author Leo Fajardo (@leorw)
8237
+ * @since 2.2.3
8238
+ */
8239
  if ( ! is_multisite() ) {
8240
  // Update last install sync timestamp.
8241
  $this->set_cron_execution_timestamp( 'install_sync' );
8242
  }
8243
 
8244
  $params['uid'] = $this->get_anonymous_id();
8245
+ }
8246
 
8247
+ $this->set_keepalive_timestamp();
 
8248
 
8249
+ // Send updated values to FS.
8250
+ $site = $this->get_api_site_scope()->call( '/', 'put', $params );
 
 
 
 
8251
 
8252
+ if ( ! $keepalive_only_update && $this->is_api_result_entity( $site ) ) {
8253
+ /**
8254
+ * Do not clear scheduled sync after a keepalive-only call since there were no actual updates sent.
8255
+ *
8256
+ * @author Leo Fajardo (@leorw)
8257
+ * @since 2.2.3
8258
+ */
8259
+ if ( ! is_multisite() ) {
8260
+ // I successfully sent install update, clear scheduled sync if exist.
8261
+ $this->clear_install_sync_cron();
8262
+ }
8263
  }
8264
 
8265
+ return $site;
8266
  }
8267
 
8268
  /**
8281
 
8282
  $installs_data = $this->get_installs_data_for_api( $override, ! $flush );
8283
 
8284
+ $keepalive_only_update = false;
8285
  if ( empty( $installs_data ) ) {
8286
+ /**
8287
+ * Pass `true` to use the network level storage since the update is for many installs.
8288
+ *
8289
+ * @author Leo Fajardo (@leorw)
8290
+ * @since 2.2.3
8291
+ */
8292
+ $keepalive_only_update = $this->should_send_keepalive_update( true );
8293
+
8294
+ if ( ! $keepalive_only_update ) {
8295
+ /**
8296
+ * There are no updates to send including keepalive.
8297
+ *
8298
+ * @author Leo Fajardo (@leorw)
8299
+ * @since 2.2.3
8300
+ */
8301
+ return false;
8302
+ }
8303
  }
8304
 
8305
+ if ( ! $keepalive_only_update ) {
8306
+ // Update last install sync timestamp if there were actual updates sent (i.e., not a keepalive-only call).
8307
+ $this->set_cron_execution_timestamp( 'install_sync' );
8308
+ }
8309
+
8310
+ /**
8311
+ * Pass `true` to use the network level storage since the update is for many installs.
8312
+ *
8313
+ * @author Leo Fajardo (@leorw)
8314
+ * @since 2.2.3
8315
+ */
8316
+ $this->set_keepalive_timestamp( true );
8317
 
8318
  // Send updated values to FS.
8319
  $result = $this->get_api_user_scope()->call( "/plugins/{$this->_plugin->id}/installs.json", 'put', $installs_data );
8320
 
8321
+ if ( ! $keepalive_only_update && $this->is_api_result_object( $result, 'installs' ) ) {
8322
+ // I successfully sent installs update (there was an actual update sent and it's not just a keepalive-only call), clear scheduled sync if exist.
8323
  $this->clear_install_sync_cron();
8324
  }
8325
 
8326
  return $result;
8327
  }
8328
 
8329
+ /**
8330
+ * @author Leo Fajardo (@leorw)
8331
+ *
8332
+ * @param bool|null $use_network_level_storage
8333
+ *
8334
+ * @return bool
8335
+ */
8336
+ private function should_send_keepalive_update( $use_network_level_storage = null ) {
8337
+ $keepalive_timestamp = $this->_storage->get( 'keepalive_timestamp', 0, $use_network_level_storage );
8338
+
8339
+ if ( $keepalive_timestamp < ( time() - WP_FS__TIME_WEEK_IN_SEC ) ) {
8340
+ // If updated more than 7 days ago, trigger a keepalive and update the time it was triggered.
8341
+ return true;
8342
+ } else {
8343
+ // If updated 7 days ago or less, "flip a coin", if the value is 7 trigger a keepalive and update the last time it was triggered.
8344
+ return ( 7 == rand( 1, 7 ) );
8345
+ }
8346
+ }
8347
+
8348
  /**
8349
  * Update install only if changed.
8350
  *
8549
  // @todo Decide if we want to delete plugin information from db.
8550
  }
8551
 
8552
+ /**
8553
+ * Set the basename of the current product and hook _activate_plugin_event_hook() to the activation action.
8554
+ *
8555
+ * @author Vova Feldman (@svovaf)
8556
+ * @since 2.2.1
8557
+ *
8558
+ * @param string $is_premium
8559
+ * @param string $caller
8560
+ *
8561
+ * @return string
8562
+ */
8563
+ function set_basename( $is_premium, $caller ) {
8564
+ $basename = plugin_basename( $caller );
8565
+
8566
+ $current_basename = $is_premium ?
8567
+ $this->_premium_plugin_basename :
8568
+ $this->_free_plugin_basename;
8569
+
8570
+ if ( $current_basename == $basename ) {
8571
+ // Basename value set correctly.
8572
+ return;
8573
+ }
8574
+
8575
+ if ( $is_premium ) {
8576
+ $this->_premium_plugin_basename = $basename;
8577
+ } else {
8578
+ $this->_free_plugin_basename = $basename;
8579
+ }
8580
+
8581
+ $plugin_dir = dirname( $this->_plugin_dir_path ) . '/';
8582
+
8583
+ register_activation_hook(
8584
+ $plugin_dir . $basename,
8585
+ array( &$this, '_activate_plugin_event_hook' )
8586
+ );
8587
+ }
8588
+
8589
  /**
8590
  * @author Vova Feldman (@svovaf)
8591
  * @since 1.1.1
8592
+ * @since 2.2.1 If the context product is in its premium version, use the current module's basename, even if it was renamed.
8593
  *
8594
  * @return string
8595
  */
8596
  function premium_plugin_basename() {
8597
+ if ( ! isset( $this->_premium_plugin_basename ) ) {
8598
+ $this->_premium_plugin_basename = $this->is_premium() ?
8599
+ // The product is premium, so use the current basename.
8600
+ $this->_plugin_basename :
8601
+ $this->get_premium_slug() . '/' . basename( $this->_free_plugin_basename );
8602
+ }
8603
+
8604
+ return $this->_premium_plugin_basename;
8605
  }
8606
 
8607
  /**
8740
  }
8741
 
8742
  /**
8743
+ * @author Leo Fajardo (@leorw)
8744
+ * @since 2.2.1
8745
+ *
8746
+ * @return string
8747
+ */
8748
+ function get_premium_slug() {
8749
+ return is_object( $this->_plugin ) ?
8750
+ $this->_plugin->premium_slug :
8751
+ "{$this->_slug}-premium";
8752
+ }
8753
+
8754
+ /**
8755
+ * Retrieve the desired folder name for the product.
8756
+ *
8757
  * @author Vova Feldman (@svovaf)
8758
  * @since 1.2.1.7
8759
  *
8760
  * @return string Plugin slug.
8761
  */
8762
  function get_target_folder_name() {
8763
+ return $this->can_use_premium_code() ?
8764
+ $this->_plugin->premium_slug :
8765
+ $this->_slug;
8766
  }
8767
 
8768
  /**
8833
  * @author Vova Feldman (@svovaf)
8834
  * @since 1.0.9
8835
  *
8836
+ * @param string|bool $premium_suffix
8837
+ *
8838
  * @return string
8839
  */
8840
+ function get_plugin_name( $premium_suffix = false ) {
8841
  $this->_logger->entrance();
8842
 
8843
+ /**
8844
+ * This `if-else` can be squeezed into a single `if` but I intentionally split it for code readability.
8845
+ *
8846
+ * @author Vova Feldman
8847
+ */
8848
  if ( ! isset( $this->_plugin_name ) ) {
8849
+ // Name is not yet set.
8850
+ $this->set_name( $premium_suffix );
8851
+ } else if (
8852
+ ! empty( $premium_suffix ) &&
8853
+ ( ! is_object( $this->_plugin ) || $this->_plugin->premium_suffix !== $premium_suffix )
8854
+ ) {
8855
+ // Name is already set, but there's a change in the premium suffix.
8856
+ $this->set_name( $premium_suffix );
8857
+ }
8858
 
8859
+ return $this->_plugin_name;
8860
+ }
8861
 
8862
+ /**
8863
+ * Calculates and stores the product's name. This helper function was created specifically for get_plugin_name() just to make the code clearer.
8864
+ *
8865
+ * @author Vova Feldman (@svovaf)
8866
+ * @since 2.2.1
8867
+ *
8868
+ * @param string $premium_suffix
8869
+ */
8870
+ private function set_name( $premium_suffix = '' ) {
8871
+ $plugin_data = $this->get_plugin_data();
8872
 
8873
+ // Get name.
8874
+ $this->_plugin_name = $plugin_data['Name'];
 
 
 
8875
 
8876
+ if ( is_string( $premium_suffix ) ) {
8877
+ $premium_suffix = trim( $premium_suffix );
8878
+
8879
+ if ( ! empty( $premium_suffix ) ) {
8880
+ // Check if plugin name contains " (premium)" or a custom suffix and remove it.
8881
+ $suffix = ( ' ' . strtolower( $premium_suffix ) );
8882
+ $suffix_len = strlen( $suffix );
8883
+
8884
+ if ( strlen( $plugin_data['Name'] ) > $suffix_len &&
8885
+ $suffix === substr( strtolower( $plugin_data['Name'] ), - $suffix_len )
8886
+ ) {
8887
+ $this->_plugin_name = substr( $plugin_data['Name'], 0, - $suffix_len );
8888
+ }
8889
+ }
8890
  }
8891
 
8892
+ $this->_logger->departure( 'Name = ' . $this->_plugin_name );
8893
  }
8894
 
8895
  /**
9595
  * @return bool
9596
  */
9597
  function is_premium() {
9598
+ /**
9599
+ * `$this->_plugin` will be `false` when `is_activation_mode` calls this method directly from the
9600
+ * `_register_hooks` method.
9601
+ *
9602
+ * @author Leo Fajardo (@leorw)
9603
+ * @since 2.2.3
9604
+ */
9605
+ return is_object( $this->_plugin ) ?
9606
+ $this->_plugin->is_premium :
9607
+ false;
9608
  }
9609
 
9610
  /**
10994
  fs_require_template( 'forms/resend-key.php', $vars );
10995
  }
10996
 
10997
+ /**
10998
+ * Displays a subscription cancellation dialog box when the user clicks on the "Deactivate License"
10999
+ * link on the "Account" page or deactivates a plugin and there's an active subscription that is
11000
+ * either associated with a non-lifetime single-site license or non-lifetime multisite license that
11001
+ * is only activated on a single production site.
11002
+ *
11003
+ * @author Leo Fajardo (@leorw)
11004
+ * @since 2.2.1
11005
+ *
11006
+ * @param bool $is_license_deactivation
11007
+ */
11008
+ function _maybe_add_subscription_cancellation_dialog_box( $is_license_deactivation = false ) {
11009
+ if ( fs_is_network_admin() ) {
11010
+ // Subscription cancellation dialog box is currently not supported for multisite networks.
11011
+ return;
11012
+ }
11013
+
11014
+ $license = $this->_get_license();
11015
+
11016
+ /**
11017
+ * If the installation is associated with a non-lifetime license, which is either a single-site or only activated on a single production site (or zero), and connected to an active subscription, suggest the customer to cancel the subscription upon deactivation.
11018
+ *
11019
+ * @author Leo Fajardo (@leorw) (Comment added by Vova Feldman @svovaf)
11020
+ * @since 2.2.1
11021
+ */
11022
+ if ( ! is_object( $license ) ||
11023
+ $license->is_lifetime() ||
11024
+ ( ! $license->is_single_site() && $license->activated > 1 )
11025
+ ) {
11026
+ return;
11027
+ }
11028
+
11029
+ /**
11030
+ * @var FS_Subscription $subscription
11031
+ */
11032
+ $subscription = $this->_get_subscription( $license->id );
11033
+ if ( ! is_object( $subscription ) || ! $subscription->is_active() ) {
11034
+ return;
11035
+ }
11036
+
11037
+ $vars = array(
11038
+ 'id' => $this->_module_id,
11039
+ 'license' => $license,
11040
+ 'has_trial' => $this->is_paid_trial(),
11041
+ 'is_license_deactivation' => $is_license_deactivation,
11042
+ );
11043
+
11044
+ fs_require_template( 'forms/subscription-cancellation.php', $vars );
11045
+ }
11046
+
11047
  /**
11048
  * @author Leo Fajardo (@leorw)
11049
  * @since 2.0.2
11128
  return;
11129
  }
11130
 
11131
+ if ( ! $this->is_premium() || $this->has_any_active_valid_license() ) {
11132
  // This is relevant only to the free versions and premium versions without an active license.
11133
  return;
11134
  }
11228
  'license_key' => $fs->apply_filters( 'license_key', $license_key )
11229
  );
11230
 
11231
+ $install = $api->call( $fs->add_show_pending( '/' ), 'put', $params );
11232
 
11233
  if ( FS_Api::is_api_error( $install ) ) {
11234
  $error = FS_Api::is_api_error_object( $install ) ?
11321
  }
11322
  }
11323
 
11324
+ if ( false === $error && true === $this->_storage->require_license_activation ) {
11325
+ $this->_storage->require_license_activation = false;
11326
+ }
11327
+
11328
  $result = array(
11329
  'success' => ( false === $error )
11330
  );
11579
  static function get_current_page() {
11580
  if ( ! isset( self::$_pagenow ) ) {
11581
  global $pagenow;
11582
+ if ( empty( $pagenow ) && is_admin() && is_multisite() ) {
11583
+ /**
11584
+ * It appears that `$pagenow` is not yet initialized in some network admin pages when this method
11585
+ * is called, so initialize it here using some pieces of code from `wp-includes/vars.php`.
11586
+ *
11587
+ * @author Leo Fajardo (@leorw)
11588
+ * @since 2.2.3
11589
+ */
11590
+ if ( is_network_admin() ) {
11591
+ preg_match( '#/wp-admin/network/?(.*?)$#i', $_SERVER['PHP_SELF'], $self_matches );
11592
+ } else if ( is_user_admin() ) {
11593
+ preg_match( '#/wp-admin/user/?(.*?)$#i', $_SERVER['PHP_SELF'], $self_matches );
11594
+ } else {
11595
+ preg_match( '#/wp-admin/?(.*?)$#i', $_SERVER['PHP_SELF'], $self_matches );
11596
+ }
11597
+
11598
+ $pagenow = $self_matches[1];
11599
+ $pagenow = trim( $pagenow, '/' );
11600
+ $pagenow = preg_replace( '#\?.*?$#', '', $pagenow );
11601
+ if ( '' === $pagenow || 'index' === $pagenow || 'index.php' === $pagenow ) {
11602
+ $pagenow = 'index.php';
11603
+ } else {
11604
+ preg_match( '#(.*?)(/|$)#', $pagenow, $self_matches );
11605
+ $pagenow = strtolower( $self_matches[1] );
11606
+ if ( '.php' !== substr($pagenow, -4, 4) )
11607
+ $pagenow .= '.php'; // for Options +Multiviews: /wp-admin/themes/index.php (themes.php is queried)
11608
+ }
11609
+ }
11610
 
11611
  self::$_pagenow = $pagenow;
11612
 
11638
  return ( 'plugins.php' === self::get_current_page() );
11639
  }
11640
 
11641
+ /**
11642
+ * @author Leo Fajardo (@leorw)
11643
+ * @since 2.2.3
11644
+ *
11645
+ * @return bool
11646
+ */
11647
+ static function is_plugin_install_page() {
11648
+ return ( 'plugin-install.php' === self::get_current_page() );
11649
+ }
11650
+
11651
  /**
11652
  * @author Leo Fajardo (@leorw)
11653
  * @since 2.0.2
11915
  return $this->get_upgrade_url( WP_FS__PERIOD_ANNUALLY, true );
11916
  }
11917
 
11918
+ /**
11919
+ * @author Leo Fajardo (@leorw)
11920
+ * @since 2.1.4
11921
+ *
11922
+ * @param string $new_version
11923
+ *
11924
+ * @return string
11925
+ */
11926
+ function version_upgrade_checkout_link( $new_version ) {
11927
+ if ( ! is_object( $this->_license ) ) {
11928
+ $url = $this->pricing_url();
11929
+
11930
+ $purchase_license_text = $this->get_text_inline( 'Buy a license now', 'buy-license-now' );
11931
+ } else {
11932
+ $subscription = $this->_get_subscription( $this->_license->id );
11933
+
11934
+ $url = $this->checkout_url(
11935
+ is_object( $subscription ) ?
11936
+ ( 1 == $subscription->billing_cycle ? WP_FS__PERIOD_MONTHLY : WP_FS__PERIOD_ANNUALLY ) :
11937
+ WP_FS__PERIOD_LIFETIME,
11938
+ false,
11939
+ array( 'licenses' => $this->_license->quota )
11940
+ );
11941
+
11942
+ $purchase_license_text = $this->get_text_inline( 'Renew your license now', 'renew-license-now' );
11943
+ }
11944
+
11945
+ return sprintf(
11946
+ $this->get_text_inline( '%s to access version %s security & feature updates, and support.', 'x-for-updates-and-support' ),
11947
+ sprintf( '<a href="%s">%s</a>', $url, $purchase_license_text ),
11948
+ $new_version
11949
+ );
11950
+ }
11951
+
11952
  /**
11953
  * Plugin's pricing URL.
11954
  *
12583
  * @author Vova Feldman (@svovaf)
12584
  */
12585
  $args = array(
12586
+ /**
12587
+ * Commented out in order to handle the migration of site options whether the site is public or not.
12588
+ *
12589
+ * @author Leo Fajardo (@leorw)
12590
+ * @since 2.2.1
12591
+ */
12592
+ // 'public' => 1,
12593
  'archived' => 0,
12594
  'mature' => 0,
12595
  'spam' => 0,
12785
 
12786
  self::$_accounts->set_site_blog_context( $blog_id );
12787
  $this->_storage->set_site_blog_context( $blog_id );
12788
+ $this->_storage->set_network_active( $this->_is_network_active, $this->is_delegated_connection( $blog_id ) );
12789
 
12790
  $this->_site = is_object( $install ) ?
12791
  $install :
13734
  }
13735
  }
13736
 
13737
+ if ( true === $this->_storage->require_license_activation &&
13738
+ ! fs_request_get_bool( 'require_license', true )
13739
+ ) {
13740
+ $this->_storage->require_license_activation = false;
13741
+ }
13742
+
13743
  if ( $this->is_theme() ) {
13744
  $this->_register_account_hooks();
13745
  }
13805
 
13806
  }
13807
 
13808
+ /**
13809
+ * Get a sanitized array with the WordPress version, SDK version, and PHP version.
13810
+ * Each version is trimmed after the 16th char.
13811
+ *
13812
+ * @author Vova Feldman (@svovaf)
13813
+ * @since 2.2.1
13814
+ *
13815
+ * @return array
13816
+ */
13817
+ private function get_versions() {
13818
+ $versions = array();
13819
+ $versions['platform_version'] = get_bloginfo( 'version' );
13820
+ $versions['sdk_version'] = $this->version;
13821
+ $versions['programming_language_version'] = phpversion();
13822
+
13823
+ foreach ( $versions as $k => $version ) {
13824
+ if ( is_string( $versions[ $k ] ) && ! empty( $versions[ $k ] ) ) {
13825
+ $versions[ $k ] = substr( $versions[ $k ], 0, 16 );
13826
+ }
13827
+ }
13828
+
13829
+ return $versions;
13830
+ }
13831
+
13832
  /**
13833
  * @author Vova Feldman (@svovaf)
13834
  * @since 1.1.7.4
13850
  // Return to the module's main page.
13851
  $this->get_after_activation_url( 'after_connect_url', array( 'fs_action' => $activation_action ) );
13852
 
13853
+ $versions = $this->get_versions();
13854
+
13855
+ $params = array_merge( $versions, array(
13856
  'user_firstname' => $current_user->user_firstname,
13857
  'user_lastname' => $current_user->user_lastname,
13858
  'user_nickname' => $current_user->user_nicename,
13867
  'account',
13868
  array( 'fs_action' => 'sync_user' )
13869
  ), 'sync_user' ),
 
 
 
13870
  'is_premium' => $this->is_premium(),
13871
  'is_active' => true,
13872
  'is_uninstalled' => false,
13873
+ ) );
13874
 
13875
  if ( true === $network_level_or_blog_id ) {
13876
  if ( ! isset( $override_with['sites'] ) ) {
14056
  'timeout' => WP_FS__DEBUG_SDK ? 60 : 30,
14057
  );
14058
 
14059
+ $url = $this->add_show_pending( WP_FS__ADDRESS . '/action/service/user/install/' );
14060
  $response = self::safe_remote_post( $url, $request );
14061
 
14062
  if ( is_wp_error( $response ) ) {
15213
 
15214
  $hook = false;
15215
 
15216
+ if ( ! $this->has_settings_menu() ) {
15217
  // Add the opt-in page without a menu item.
15218
  $hook = FS_Admin_Menu_Manager::add_subpage(
15219
  null,
15426
  private function add_submenu_items() {
15427
  $this->_logger->entrance();
15428
 
15429
+ $is_activation_mode = $this->is_activation_mode();
15430
+
15431
  if ( $this->is_addon() ) {
15432
  // No submenu items for add-ons.
15433
  $add_submenu_items = false;
15434
  } else if ( $this->is_free_wp_org_theme() && ! fs_is_network_admin() ) {
15435
  // Also add submenu items when running in a free .org theme so the tabs will be visible.
15436
  $add_submenu_items = true;
15437
+ } else if ( $is_activation_mode && ! $this->is_free_wp_org_theme() ) {
15438
  $add_submenu_items = false;
15439
  } else if ( fs_is_network_admin() ) {
15440
  /**
15465
  $this->is_submenu_item_visible( 'affiliation' )
15466
  );
15467
  }
15468
+ }
15469
 
15470
+ if ( $add_submenu_items ||
15471
+ ( $is_activation_mode &&
15472
+ $this->is_only_premium() &&
15473
+ $this->is_admin_page( 'account' ) &&
15474
+ fs_request_is_action( $this->get_unique_affix() . '_sync_license' )
15475
+ )
15476
+ ) {
15477
  if ( ! WP_FS__DEMO_MODE && $this->is_registered() ) {
15478
  $show_account = (
15479
  $this->is_submenu_item_visible( 'account' ) &&
15492
  'account',
15493
  array( &$this, '_account_page_load' ),
15494
  WP_FS__DEFAULT_PRIORITY,
15495
+ ( $add_submenu_items && $show_account )
15496
  );
15497
  }
15498
+ }
15499
 
15500
+ if ( $add_submenu_items ) {
15501
  // Add contact page.
15502
  $this->add_submenu_item(
15503
  $this->get_text_inline( 'Contact Us', 'contact-us' ),
15522
  $this->is_submenu_item_visible( 'addons' )
15523
  );
15524
  }
15525
+ }
15526
 
15527
+ if ( $add_submenu_items ||
15528
+ ( $is_activation_mode && $this->is_only_premium() && $this->is_admin_page( 'pricing' ) )
15529
+ ) {
15530
  if ( ! WP_FS__DEMO_MODE ) {
15531
  $show_pricing = (
15532
  $this->is_submenu_item_visible( 'pricing' ) &&
15548
 
15549
  // Add upgrade/pricing page.
15550
  $this->add_submenu_item(
15551
+ $pricing_cta_text . '&nbsp;&nbsp;' . ( is_rtl() ? $this->get_text_x_inline( '&#x2190;', 'ASCII arrow left icon', 'symbol_arrow-left' ) : $this->get_text_x_inline( '&#x27a4;', 'ASCII arrow right icon', 'symbol_arrow-right' ) ),
15552
  array( &$this, '_pricing_page_render' ),
15553
  $this->get_plugin_name() . ' &ndash; ' . $this->get_text_x_inline( 'Pricing', 'noun', 'pricing' ),
15554
  'manage_options',
15555
  'pricing',
15556
  'Freemius::_clean_admin_content_section',
15557
  WP_FS__LOWEST_PRIORITY,
15558
+ ( $add_submenu_items && $show_pricing ),
15559
  $pricing_class
15560
  );
15561
  }
15562
  }
15563
 
15564
+ if ( ! $is_activation_mode || ( true !== $this->_storage->require_license_activation ) ) {
15565
+ /**
15566
+ * Add the other menu items if there are any when not in activation mode or license activation is not
15567
+ * required (license activation is required for registered or anonymous users after activating the
15568
+ * premium version when the site is not in trial mode or there's no active valid license).
15569
+ *
15570
+ * @author Leo Fajardo (@leorw)
15571
+ * @since 2.2.1
15572
+ */
15573
+ if ( 0 < count( $this->_menu_items ) ) {
15574
+ if ( ! $this->_menu->is_top_level() ) {
15575
+ fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
15576
 
15577
+ // Append submenu items right after the plugin's submenu item.
15578
+ $this->order_sub_submenu_items();
15579
+ } else {
15580
+ // Append submenu items.
15581
+ $this->embed_submenu_items();
15582
+ }
15583
  }
15584
  }
15585
  }
15605
 
15606
  foreach ( $this->_menu_items as $priority => $items ) {
15607
  foreach ( $items as $item ) {
 
 
 
 
 
 
 
 
 
 
15608
  $capability = ( ! empty( $item['capability'] ) ? $item['capability'] : $top_level_menu_capability );
15609
 
15610
  $menu_item = sprintf(
15615
  $item['menu_title']
15616
  );
15617
 
15618
+ $top_level_menu_slug = $this->get_top_level_menu_slug();
15619
+ $menu_slug = $this->_menu->get_slug( $item['menu_slug'] );
15620
 
15621
  if ( ! isset( $item['url'] ) ) {
15622
  $hook = FS_Admin_Menu_Manager::add_subpage(
15623
  $item['show_submenu'] ?
15624
+ $top_level_menu_slug :
15625
  null,
15626
  $item['page_title'],
15627
  $menu_item,
15636
  } else {
15637
  FS_Admin_Menu_Manager::add_subpage(
15638
  $item['show_submenu'] ?
15639
+ $top_level_menu_slug :
15640
  null,
15641
  $item['page_title'],
15642
  $menu_item,
15645
  array( $this, '' )
15646
  );
15647
  }
15648
+
15649
+ if ( $item['show_submenu'] && $is_first_submenu_item ) {
15650
+ if ( $this->_is_network_active && ! empty( $this->_dynamically_added_top_level_page_hook_name ) ) {
15651
+ /**
15652
+ * If the top-level menu has been dynamically created, remove the first submenu item that
15653
+ * WordPress automatically creates when there's no submenu item whose slug matches the
15654
+ * parent's. In the following example, the `Awesome Plugin` submenu item will be removed.
15655
+ *
15656
+ * Awesome Plugin
15657
+ * - Awesome Plugin <-- we want to remove this since there's no real setting page for the top-level
15658
+ *
15659
+ * @author Leo Fajardo (@leorw)
15660
+ */
15661
+ remove_submenu_page( $top_level_menu_slug, $top_level_menu_slug );
15662
+ }
15663
+
15664
+ $is_first_submenu_item = false;
15665
+ }
15666
  }
15667
  }
15668
  }
16274
  return;
16275
  }
16276
 
16277
+ $site_clone = is_object( $site ) ? $site : $this->_site;
16278
+ $encrypted_site = clone $site_clone;
16279
 
16280
  $sites = self::get_all_sites( $this->_module_type, $network_level_or_blog_id );
16281
 
16643
  /**
16644
  * @since 1.2.3 When running in DEV mode, retrieve pending plans as well.
16645
  */
16646
+ $result = $api->get( $this->add_show_pending( "/plugins/{$this->_module_id}/plans.json" ), true );
16647
 
16648
  if ( $this->is_api_result_object( $result, 'plans' ) && is_array( $result->plans ) ) {
16649
  for ( $i = 0, $len = count( $result->plans ); $i < $len; $i ++ ) {
16905
  * @param bool|number $plugin_id
16906
  * @param bool $flush Since 1.1.7.3
16907
  * @param int $expiration Since 1.2.2.7
16908
+ * @param bool|string $newer_than Since 2.2.1
16909
  *
16910
  * @return object|false New plugin tag info if exist.
16911
  */
16912
+ private function _fetch_newer_version( $plugin_id = false, $flush = true, $expiration = WP_FS__TIME_24_HOURS_IN_SEC, $newer_than = false ) {
16913
+ $latest_tag = $this->_fetch_latest_version( $plugin_id, $flush, $expiration, $newer_than );
16914
 
16915
  if ( ! is_object( $latest_tag ) ) {
16916
  return false;
16935
  * @param bool|number $plugin_id
16936
  * @param bool $flush Since 1.1.7.3
16937
  * @param int $expiration Since 1.2.2.7
16938
+ * @param bool|string $newer_than Since 2.2.1
16939
  *
16940
  * @return bool|FS_Plugin_Tag
16941
  */
16942
+ function get_update( $plugin_id = false, $flush = true, $expiration = WP_FS__TIME_24_HOURS_IN_SEC, $newer_than = false ) {
16943
  $this->_logger->entrance();
16944
 
16945
  if ( ! is_numeric( $plugin_id ) ) {
16946
  $plugin_id = $this->_plugin->id;
16947
  }
16948
 
16949
+ $this->check_updates( true, $plugin_id, $flush, $expiration, $newer_than );
16950
  $updates = $this->get_all_updates();
16951
 
16952
  return isset( $updates[ $plugin_id ] ) && is_object( $updates[ $plugin_id ] ) ? $updates[ $plugin_id ] : false;
16975
  * @since 1.2.1
16976
  */
16977
  function has_active_valid_license() {
16978
+ return self::is_active_valid_license( $this->_license );
16979
+ }
16980
+
16981
+ /**
16982
+ * Check if a given license is active & valid (not expired).
16983
+ *
16984
+ * @author Vova Feldman (@svovaf)
16985
+ * @since 2.1.3
16986
+ *
16987
+ * @param FS_Plugin_License $license
16988
+ *
16989
+ * @return bool
16990
+ */
16991
+ private static function is_active_valid_license( $license ) {
16992
  return (
16993
+ is_object( $license ) &&
16994
+ FS_Plugin_License::is_valid_id( $license->id ) &&
16995
+ $license->is_active() &&
16996
+ $license->is_valid()
16997
  );
16998
  }
16999
 
17000
+ /**
17001
+ * Checks if there's any site that is associated with an active & valid license.
17002
+ * This logic is used to determine if the admin can download the premium code base from a network level admin.
17003
+ *
17004
+ * @author Vova Feldman (@svovaf)
17005
+ * @since 2.1.3
17006
+ *
17007
+ * @return bool
17008
+ */
17009
+ function has_any_active_valid_license() {
17010
+ if ( ! fs_is_network_admin() ) {
17011
+ return $this->has_active_valid_license();
17012
+ }
17013
+
17014
+ $installs = $this->get_blog_install_map();
17015
+ $all_plugin_licenses = self::get_all_licenses( $this->_module_id );
17016
+
17017
+ foreach ( $installs as $blog_id => $install ) {
17018
+ if ( ! FS_Plugin_License::is_valid_id( $install->license_id ) ) {
17019
+ continue;
17020
+ }
17021
+
17022
+ foreach ( $all_plugin_licenses as $license ) {
17023
+ if ( $license->id == $install->license_id ) {
17024
+ if ( self::is_active_valid_license( $license ) ) {
17025
+ return true;
17026
+ }
17027
+ }
17028
+ }
17029
+ }
17030
+
17031
+ return false;
17032
+ }
17033
+
17034
  /**
17035
  * Check if site assigned with license with enabled features.
17036
  *
17099
  * the admin.
17100
  * @param bool $is_context_single_site @since 2.0.0. This is used when syncing a license for a single install from the
17101
  * network-level "Account" page.
17102
+ * @param int|null $current_blog_id @since 2.2.3. This is passed from the `execute_cron` method and used by the
17103
+ * `_sync_plugin_license` method in order to switch to the previous blog when sending
17104
+ * updates for a single site in case `execute_cron` has switched to a different blog.
17105
  */
17106
+ private function _sync_license( $background = false, $is_context_single_site = false, $current_blog_id = null ) {
17107
  $this->_logger->entrance();
17108
 
17109
  $plugin_id = fs_request_get( 'plugin_id', $this->get_id() );
17113
  if ( $is_addon_sync ) {
17114
  $this->_sync_addon_license( $plugin_id, $background );
17115
  } else {
17116
+ $this->_sync_plugin_license( $background, true, $is_context_single_site, $current_blog_id );
17117
  }
17118
 
17119
  $this->do_action( 'after_account_plan_sync', $this->get_plan_name() );
17164
  $this->_update_licenses( $licenses, $addon->id );
17165
 
17166
  if ( ! $this->is_addon_installed( $addon->id ) && FS_License_Manager::has_premium_license( $licenses ) ) {
17167
+ $plans_result = $this->get_api_site_or_plugin_scope()->get( $this->add_show_pending( "/addons/{$addon_id}/plans.json" ) );
17168
 
17169
  if ( ! isset( $plans_result->error ) ) {
17170
  $plans = array();
17203
  * @param bool $is_context_single_site Since 2.0.0. This is used when sending an update for a single install and
17204
  * syncing its license from the network-level "Account" page (e.g.: after
17205
  * activating a license only for the single install).
17206
+ * @param int|null $current_blog_id Since 2.2.3. This is passed from the `execute_cron` method so that it
17207
+ * can be used here to switch to the previous blog in case `execute_cron`
17208
+ * has switched to a different blog.
17209
  */
17210
  private function _sync_plugin_license(
17211
  $background = false,
17212
  $send_installs_update = true,
17213
+ $is_context_single_site = false,
17214
+ $current_blog_id = null
17215
  ) {
17216
  $this->_logger->entrance();
17217
 
17228
  * @todo This line will execute install sync on a daily basis, even if running the free version (for opted-in users). The reason we want to keep it that way is for cases when the user was a paying customer, then there was a failure in subscription payment, and then after some time the payment was successful. This could be heavily optimized. For example, we can skip the $flush if the current install was never associated with a paid version.
17229
  */
17230
  if ( $is_site_level_sync ) {
17231
+ /**
17232
+ * Switch to the previous blog since `execute_cron` may have switched to a different blog.
17233
+ *
17234
+ * @author Leo Fajardo (@leorw)
17235
+ * @since 2.2.3
17236
+ */
17237
+ if ( is_numeric( $current_blog_id ) ) {
17238
+ $this->switch_to_blog( $current_blog_id );
17239
+ }
17240
+
17241
  $result = $this->send_install_update( array(), true );
17242
  $is_valid = $this->is_api_result_entity( $result );
17243
  } else {
17506
  'trial_promotion',
17507
  'trial_expired',
17508
  'activation_complete',
17509
+ 'license_expired',
17510
  ) );
17511
  break;
17512
  case 'changed':
17747
  $api = $this->get_api_site_scope();
17748
  $license = $api->call( "/licenses/{$this->_site->license_id}.json", 'delete' );
17749
 
17750
+ $this->handle_license_deactivation_result( $license, $hmm_text, $show_notice );
17751
+ }
17752
+
17753
+ /**
17754
+ * @author Leo Fajardo (@leorw)
17755
+ * @since 2.2.1
17756
+ *
17757
+ * @param FS_Plugin_License $license
17758
+ * @param bool|string $hmm_text
17759
+ * @param bool $show_notice
17760
+ */
17761
+ private function handle_license_deactivation_result( $license, $hmm_text = false, $show_notice = true ) {
17762
  if ( isset( $license->error ) ) {
17763
  $this->_admin_notices->add(
17764
  $this->get_text_inline( 'It looks like the license deactivation failed.', 'license-deactivation-failed-message' ) . '<br> ' .
17779
  }
17780
  }
17781
 
17782
+ // Update site plan to default.
17783
  $this->_sync_plans();
17784
  $this->_site->plan_id = $this->_plans[0]->id;
17785
  // Unlink license from site.
17806
  * @author Vova Feldman (@svovaf)
17807
  * @since 1.0.4
17808
  *
17809
+ * @return object
17810
+ *
17811
  * @uses FS_Api
17812
  */
17813
  private function _downgrade_site() {
17814
  $this->_logger->entrance();
17815
 
17816
+ $deactivate_license = fs_request_get_bool( 'deactivate_license' );
17817
+
17818
  $api = $this->get_api_site_scope();
17819
+ $site = $api->call( 'downgrade.json', 'put', array( 'deactivate_license' => $deactivate_license ) );
17820
 
17821
  $plan_downgraded = false;
17822
  $plan = false;
17834
  ( is_object( $subscription ) && ! isset( $subscription->error ) && ! $subscription->is_active() );
17835
  } else {
17836
  // handle different error cases.
17837
+ $this->handle_license_deactivation_result(
17838
+ $site,
17839
+ $this->get_text_x_inline( 'Hmm', 'something somebody says when they are thinking about what you have just said.', 'hmm' ) . '...'
17840
+ );
17841
  }
17842
 
17843
+ if ( ! $plan_downgraded ) {
17844
+ return (object) array(
17845
+ 'error' => (object) array(
17846
+ 'message' => $this->get_text_inline( 'Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes.', 'subscription-cancellation-failure-message' )
 
 
 
 
17847
  )
17848
  );
17849
+ }
17850
 
17851
+ // Remove previous sticky message about upgrade (if exist).
17852
+ $this->_admin_notices->remove_sticky( 'plan_upgraded' );
17853
+
17854
+ $this->_admin_notices->add(
17855
+ sprintf( $this->get_text_inline( 'Your subscription was successfully cancelled. Your %s plan license will expire in %s.', 'plan-x-downgraded-message' ),
17856
+ $plan->title,
17857
+ human_time_diff( time(), strtotime( $this->_license->expiration ) )
17858
+ )
17859
+ );
17860
+
17861
+ // Store site updates.
17862
+ $this->_store_site();
17863
+
17864
+ if ( $deactivate_license &&
17865
+ ! FS_Plugin_License::is_valid_id( $site->license_id )
17866
+ ) {
17867
+ if ( $this->_site->is_localhost() ) {
17868
+ $this->_license->activated_local = max( 0, $this->_license->activated_local - 1 );
17869
+ } else {
17870
+ $this->_license->activated = max( 0, $this->_license->activated - 1 );
17871
+ }
17872
+
17873
+ // Handle successful license deactivation result.
17874
+ $this->handle_license_deactivation_result( $this->_license );
17875
  }
17876
+
17877
+ return $site;
17878
  }
17879
 
17880
  /**
17981
  * @author Vova Feldman (@svovaf)
17982
  * @since 1.0.9
17983
  *
17984
+ * @return object
17985
+ *
17986
  * @uses FS_Api
17987
  */
17988
  private function _cancel_trial() {
17989
  $this->_logger->entrance();
17990
 
 
 
 
17991
  if ( ! $this->is_trial() ) {
17992
+ return (object) array(
17993
+ 'error' => (object) array(
17994
+ 'message' => $this->get_text_inline( 'It looks like you are not in trial mode anymore so there\'s nothing to cancel :)', 'trial-cancel-no-trial-message' )
17995
+ )
17996
  );
 
 
17997
  }
17998
 
17999
  $trial_plan = $this->get_trial_plan();
18024
  // @todo handle different error cases.
18025
  }
18026
 
18027
+ if ( ! $trial_cancelled ) {
18028
+ return (object) array(
18029
+ 'error' => (object) array(
18030
+ 'message' => $this->get_text_inline( 'Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes.', 'trial-cancel-failure-message' )
18031
+ )
18032
+ );
18033
+ }
18034
 
18035
+ // Remove previous sticky messages about upgrade or trial (if exist).
18036
+ $this->_admin_notices->remove_sticky( array(
18037
+ 'trial_started',
18038
+ 'trial_promotion',
18039
+ 'plan_upgraded',
18040
+ ) );
18041
 
18042
+ // Store site updates.
18043
+ $this->_store_site();
18044
+
18045
+ if ( ! $this->is_addon() ||
18046
+ ! $this->deactivate_premium_only_addon_without_license( true )
18047
+ ) {
 
 
18048
  $this->_admin_notices->add(
18049
+ sprintf( $this->get_text_inline( 'Your %s free trial was successfully cancelled.', 'trial-cancel-message' ), $trial_plan->title )
 
 
18050
  );
18051
  }
18052
+
18053
+ return $site;
18054
  }
18055
 
18056
  /**
18074
  * @return bool
18075
  */
18076
  private function _can_download_premium() {
18077
+ return $this->has_any_active_valid_license() ||
18078
  ( $this->is_trial() && ! $this->get_trial_plan()->is_free() );
18079
  }
18080
 
18121
  * @since 1.0.4
18122
  *
18123
  * @param bool|number $addon_id
18124
+ * @param bool $flush Since 1.1.7.3
18125
+ * @param int $expiration Since 1.2.2.7
18126
+ * @param bool|string $newer_than Since 2.2.1
18127
+ * @param bool|string $fetch_readme Since 2.2.1
18128
  *
18129
  * @return object|false Plugin latest tag info.
18130
  */
18131
  function _fetch_latest_version(
18132
  $addon_id = false,
18133
  $flush = true,
18134
+ $expiration = WP_FS__TIME_24_HOURS_IN_SEC,
18135
+ $newer_than = false,
18136
+ $fetch_readme = true
18137
  ) {
18138
  $this->_logger->entrance();
18139
 
18184
  $this->switch_to_blog( $switch_to_blog_id );
18185
  }
18186
 
18187
+ $latest_version_endpoint = $this->_get_latest_version_endpoint( $addon_id, 'json' );
18188
+
18189
+ if ( ! empty( $newer_than ) ) {
18190
+ $latest_version_endpoint = add_query_arg( 'newer_than', $newer_than, $latest_version_endpoint );
18191
+ }
18192
+
18193
+ if ( true === $fetch_readme ) {
18194
+ $latest_version_endpoint = add_query_arg( 'readme', 'true', $latest_version_endpoint );
18195
+ }
18196
+
18197
  $tag = $this->get_api_site_or_plugin_scope()->get(
18198
+ $latest_version_endpoint,
18199
  $flush,
18200
  $expiration
18201
  );
18331
  * @param bool|number $plugin_id
18332
  * @param bool $flush Since 1.1.7.3
18333
  * @param int $expiration Since 1.2.2.7
18334
+ * @param bool|string $newer_than Since 2.2.1
18335
  */
18336
  private function check_updates(
18337
  $background = false,
18338
  $plugin_id = false,
18339
  $flush = true,
18340
+ $expiration = WP_FS__TIME_24_HOURS_IN_SEC,
18341
+ $newer_than = false
18342
  ) {
18343
  $this->_logger->entrance();
18344
 
18345
  // Check if there's a newer version for download.
18346
+ $new_version = $this->_fetch_newer_version( $plugin_id, $flush, $expiration, $newer_than );
18347
 
18348
  $update = null;
18349
  if ( is_object( $new_version ) ) {
18393
 
18394
  $api = $this->get_api_site_or_plugin_scope();
18395
 
18396
+ $path = $this->add_show_pending( '/addons.json?enriched=true' );
18397
+
18398
  /**
18399
  * @since 1.2.1
18400
  *
18401
  * If there's a cached version of the add-ons and not asking
18402
  * for a flush, just use the currently stored add-ons.
18403
  */
18404
+ if ( ! $flush && $api->is_cached( $path ) ) {
18405
  $addons = self::get_all_addons();
18406
 
18407
  return $addons[ $this->_plugin->id ];
18408
  }
18409
 
18410
+ $result = $api->get( $path, $flush );
18411
 
18412
  $addons = array();
18413
  if ( $this->is_api_result_object( $result, 'plugins' ) &&
18699
  */
18700
  function get_after_activation_url( $filter, $params = array(), $network = null ) {
18701
  if ( $this->is_free_wp_org_theme() &&
18702
+ ( fs_request_has( 'pending_activation' ) ||
18703
+ // For cases when the first time path is set, even though it's a WP.org theme.
18704
+ fs_request_get_bool( $this->get_unique_affix() . '_show_optin' ) )
18705
  ) {
18706
  $first_time_path = '';
18707
  } else {
18833
  $this->_site = null;
18834
  $this->_user = null;
18835
 
18836
+ $this->maybe_set_slug_and_network_menu_exists_flag();
18837
+
18838
  fs_redirect( $this->get_activation_url() );
18839
  } else {
18840
  if ( $this->is_addon_activated( $plugin_id ) ) {
18854
  check_admin_referer( $action );
18855
  }
18856
 
18857
+ $switch_to_network_install_blog_after_cancellation = (
18858
+ is_numeric( $blog_id ) &&
18859
+ $plugin_id == $this->get_id() &&
18860
+ ! $this->is_trial()
18861
+ );
18862
 
18863
+ $result = $this->cancel_subscription_or_trial( $plugin_id );
18864
+ if ( $this->is_api_error( $result ) ) {
18865
+ $this->_admin_notices->add(
18866
+ $result->error->message,
18867
+ $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...',
18868
+ 'error'
18869
+ );
18870
+ }
18871
+
18872
+ if ( $switch_to_network_install_blog_after_cancellation ) {
18873
+ $this->switch_to_blog( $this->_storage->network_install_blog_id );
18874
  }
18875
 
18876
  return;
18902
  $this->_site = null;
18903
  $this->_user = null;
18904
 
18905
+ if ( ! $is_network_action ) {
18906
+ fs_redirect( $this->get_activation_url() );
18907
+ } else if ( is_numeric( $blog_id ) ) {
18908
+ $this->switch_to_blog( $this->_storage->network_install_blog_id );
18909
+ }
18910
  }
18911
  } else {
18912
  if ( $this->is_addon_activated( $plugin_id ) ) {
19004
  #region Actions that might be called from external links (e.g. email)
19005
 
19006
  case 'cancel_trial':
19007
+ $result = $this->cancel_subscription_or_trial( $plugin_id );
19008
+ if ( $this->is_api_error( $result ) ) {
19009
+ $this->_admin_notices->add(
19010
+ $result->error->message,
19011
+ $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...',
19012
+ 'error'
19013
+ );
19014
  }
19015
 
19016
  return;
19239
  $vars = array( 'id' => $this->_module_id );
19240
 
19241
  if ( 'true' === fs_request_get( 'checkout', false ) ) {
19242
+ echo $this->apply_filters( 'templates/checkout.php', fs_get_template( 'checkout.php', $vars ) );
19243
  } else {
19244
+ echo $this->apply_filters( 'templates/pricing.php', fs_get_template( 'pricing.php', $vars ) );
19245
  }
19246
  }
19247
 
19259
  $this->_logger->entrance();
19260
 
19261
  $vars = array( 'id' => $this->_module_id );
19262
+
19263
+ /**
19264
+ * Added filter to the template to allow developers wrapping the template
19265
+ * in custom HTML (e.g. within a wizard/tabs).
19266
+ *
19267
+ * @author Vova Feldman (@svovaf)
19268
+ * @since 2.1.3
19269
+ */
19270
+ echo $this->apply_filters( 'templates/contact.php', fs_get_template( 'contact.php', $vars ) );
19271
  }
19272
 
19273
  #endregion ------------------------------------------------------------------------
19364
  * @return FS_Api
19365
  */
19366
  private function get_current_or_network_user_api_scope( $flush = false ) {
19367
+ if ( ! $this->_is_network_active ||
19368
+ ( isset( $this->_user ) && $this->_user instanceof FS_User )
19369
+ ) {
19370
  return $this->get_api_user_scope( $flush );
19371
  }
19372
 
19454
  * @author Vova Feldman (@svovaf)
19455
  * @since 1.0.9
19456
  *
19457
+ * @param FS_Plugin_Plan[] $plans
19458
  */
19459
  function _check_for_trial_plans( $plans ) {
19460
+ /**
19461
+ * For some reason core's do_action() flattens arrays when it has a single object item. Therefore, we need to restructure the array as expected.
19462
+ *
19463
+ * @author Vova Feldman (@svovaf)
19464
+ * @since 2.1.2
19465
+ */
19466
+ if ( ! is_array( $plans ) && is_object( $plans ) ) {
19467
+ $plans = array( $plans );
19468
+ }
19469
+
19470
  $this->_storage->has_trial_plan = FS_Plan_Manager::instance()->has_trial_plan( $plans );
19471
  }
19472
 
19573
 
19574
  // Show promotion if never shown before and 24 hours after initial activation with FS.
19575
  if ( ! $was_promotion_shown_before &&
19576
+ $this->_storage->install_timestamp > ( time() - $this->apply_filters( 'show_first_trial_after_n_sec', WP_FS__TIME_24_HOURS_IN_SEC ) )
19577
  ) {
19578
  return false;
19579
  }
19580
 
19581
  // OR if promotion was shown before, try showing it every 30 days.
19582
  if ( $was_promotion_shown_before &&
19583
+ $this->apply_filters( 'reshow_trial_after_every_n_sec', 30 * WP_FS__TIME_24_HOURS_IN_SEC ) > time() - $last_time_trial_promotion_shown
19584
  ) {
19585
  return false;
19586
  }
20006
 
20007
  if ( ! $this->is_addon() || ! $this->has_free_plan() ) {
20008
  $first_time_path = $this->_menu->get_first_time_path();
20009
+
20010
+ if ( $this->is_activation_mode() ) {
20011
+ $url = $this->get_activation_url();
20012
+ } else if ( ! empty( $first_time_path ) ) {
20013
+ $url = $first_time_path;
20014
+ } else {
20015
+ $page = '';
20016
+ if ( ! empty( $this->_dynamically_added_top_level_page_hook_name ) ) {
20017
+ if ( $this->is_network_registered() ) {
20018
+ $page = 'account';
20019
+ } else if ( $this->is_network_anonymous() ) {
20020
+ $this->maybe_set_slug_and_network_menu_exists_flag();
20021
+ }
20022
+ }
20023
+
20024
+ $url = $this->_get_admin_page_url( $page );
20025
+ }
20026
  } else {
20027
  $plugin_fs = false;
20028
 
20142
  $this->_admin_notices->add_sticky( $message, $id, $title, $type );
20143
  }
20144
 
20145
+ /**
20146
+ * Check if the paid version of the module is installed.
20147
+ *
20148
+ * @author Vova Feldman (@svovaf)
20149
+ * @since 2.2.0
20150
+ *
20151
+ * @return bool
20152
+ */
20153
+ private function is_premium_version_installed() {
20154
+ $premium_plugin_basename = $this->premium_plugin_basename();
20155
+ $premium_plugin = get_plugins( '/' . dirname( $premium_plugin_basename ) );
20156
+
20157
+ return ! empty( $premium_plugin );
20158
+ }
20159
+
20160
  /**
20161
  * Helper function that returns the final steps for the upgrade completion.
20162
  *
20182
  $plan_title = $this->get_plan_title();
20183
  }
20184
 
20185
+ if ( $this->is_premium_version_installed() ) {
20186
+ /**
20187
+ * If the premium version is already installed, instead of showing the installation instructions,
20188
+ * tell the current user to activate it.
20189
+ *
20190
+ * @author Leo Fajardo (@leorw)
20191
+ * @since 2.2.1
20192
+ */
20193
+ $premium_plugin_basename = $this->premium_plugin_basename();
20194
 
20195
+ return sprintf(
20196
+ /* translators: %1s: Product title; %2s: Plan title */
20197
+ $this->get_text_inline( ' The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s', 'activate-premium-version' ),
20198
+ sprintf( '<em>%s</em>', esc_html( $this->get_plugin_title() ) ),
20199
+ $plan_title,
20200
+ sprintf(
20201
+ '<a style="margin-left: 10px;" href="%s"><button class="button button-primary">%s</button></a>',
20202
+ wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $premium_plugin_basename, 'activate-plugin_' . $premium_plugin_basename ),
20203
+ esc_html( sprintf(
20204
+ /* translators: %s: Plan title */
20205
+ $this->get_text_inline( 'Activate %s features', 'activate-x-features' ),
20206
+ $plan_title
20207
+ ) )
20208
+ )
20209
+ );
20210
+ } else {
20211
+ // @since 1.2.1.5 The free version is auto deactivated.
20212
+ $deactivation_step = version_compare( $this->version, '1.2.1.5', '<' ) ?
20213
+ ( '<li>' . $this->esc_html_inline( 'Deactivate the free version', 'deactivate-free-version' ) . '.</li>' ) :
20214
+ '';
20215
+
20216
+ return sprintf(
20217
+ ' %s: <ol><li>%s.</li>%s<li>%s (<a href="%s" target="_blank">%s</a>).</li></ol>',
20218
+ $this->get_text_inline( 'Please follow these steps to complete the upgrade', 'follow-steps-to-complete-upgrade' ),
20219
+ ( empty( $activate_license_string ) ? '' : $activate_license_string . '</li><li>' ) .
20220
+ $this->get_latest_download_link( sprintf(
20221
+ /* translators: %s: Plan title */
20222
+ $this->get_text_inline( 'Download the latest %s version', 'download-latest-x-version' ),
20223
+ $plan_title
20224
+ ) ),
20225
+ $deactivation_step,
20226
+ $this->get_text_inline( 'Upload and activate the downloaded version', 'upload-and-activate' ),
20227
+ '//bit.ly/upload-wp-' . $this->_module_type . 's',
20228
+ $this->get_text_inline( 'How to upload and activate?', 'howto-upload-activate' )
20229
+ );
20230
+ }
20231
  }
20232
 
20233
  /**
20259
  * @param array $request
20260
  * @param int $success_cache_expiration
20261
  * @param int $failure_cache_expiration
20262
+ * @param bool $maybe_enrich_request_for_debug
20263
  *
20264
  * @return WP_Error|array
20265
  */
20266
+ static function safe_remote_post(
20267
  &$url,
20268
  $request,
20269
  $success_cache_expiration = 0,
20270
+ $failure_cache_expiration = 0,
20271
+ $maybe_enrich_request_for_debug = true
20272
  ) {
20273
  $should_cache = ($success_cache_expiration + $failure_cache_expiration > 0);
20274
 
20279
  false;
20280
 
20281
  if ( false === $response ) {
20282
+ if ( $maybe_enrich_request_for_debug ) {
20283
+ self::enrich_request_for_debug( $url, $request );
20284
+ }
20285
 
20286
  $response = wp_remote_post( $url, $request );
20287
 
21010
 
21011
  // Locate the main assets folder.
21012
  if ( 1 < count( $fs_active_plugins->plugins ) ) {
21013
+ $plugin_or_theme_img_dir = ( $this->is_plugin() ? WP_PLUGIN_DIR : get_theme_root( get_stylesheet() ) );
21014
 
21015
  foreach ( $fs_active_plugins->plugins as $sdk_path => &$data ) {
21016
  if ( $data->plugin_path == $this->get_plugin_basename() ) {
21017
  $img_dir = $plugin_or_theme_img_dir
21018
  . '/'
21019
+ /**
21020
+ * The basename will be `themes` or the basename of a custom themes directory.
21021
+ *
21022
+ * @author Leo Fajardo (@leorw)
21023
+ * @since 2.2.3
21024
+ */
21025
+ . str_replace( '../' . basename( $plugin_or_theme_img_dir ) . '/', '', $sdk_path )
21026
  . '/assets/img';
21027
 
21028
  break;
21042
  $icon_found = false;
21043
  $local_path = fs_normalize_path( "{$img_dir}/{$this->_slug}.png" );
21044
 
21045
+ if ( ! function_exists( 'get_filesystem_method' ) ) {
21046
+ require_once ABSPATH . 'wp-admin/includes/file.php';
21047
+ }
21048
+
21049
  $have_write_permissions = ( 'direct' === get_filesystem_method( array(), fs_normalize_path( $img_dir ) ) );
21050
 
21051
  /**
21562
  * @since 2.1.0
21563
  */
21564
  function _maybe_add_gdpr_optin_ajax_handler() {
21565
+ $this->add_ajax_action( 'fetch_is_marketing_required_flag_value', array( &$this, '_fetch_is_marketing_required_flag_value_ajax_action' ) );
 
 
21566
 
21567
  if ( FS_GDPR_Manager::instance()->is_opt_in_notice_shown() ) {
21568
  $this->add_gdpr_optin_ajax_handler_and_style();
21746
  }
21747
 
21748
  #endregion
21749
+
21750
+ #----------------------------------------------------------------------------------
21751
+ #region Helper
21752
+ #----------------------------------------------------------------------------------
21753
+
21754
+ /**
21755
+ * If running with a secret key, assume it's the developer and show pending plans as well.
21756
+ *
21757
+ * @author Vova Feldman (@svovaf)
21758
+ * @since 2.1.2
21759
+ *
21760
+ * @param string $path
21761
+ *
21762
+ * @return string
21763
+ */
21764
+ function add_show_pending( $path ) {
21765
+ if ( ! $this->has_secret_key() ) {
21766
+ return $path;
21767
+ }
21768
+
21769
+ return $path . ( false !== strpos( $path, '?' ) ? '&' : '?' ) . 'show_pending=true';
21770
+ }
21771
+
21772
+ #endregion
21773
  }
freemius/includes/class-fs-admin-notices.php CHANGED
@@ -1,321 +1,321 @@
1
- <?php
2
- /**
3
- * @package Freemius
4
- * @copyright Copyright (c) 2015, Freemius, Inc.
5
- * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
- * @since 2.0.0
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- /**
14
- * WP Admin notices manager both for site level and network level.
15
- *
16
- * Class FS_Admin_Notices
17
- */
18
- class FS_Admin_Notices {
19
- /**
20
- * @since 1.2.2
21
- *
22
- * @var string
23
- */
24
- protected $_module_unique_affix;
25
- /**
26
- * @var string
27
- */
28
- protected $_id;
29
- /**
30
- * @var string
31
- */
32
- protected $_title;
33
- /**
34
- * @var FS_Admin_Notice_Manager
35
- */
36
- protected $_notices;
37
- /**
38
- * @var FS_Admin_Notice_Manager
39
- */
40
- protected $_network_notices;
41
- /**
42
- * @var int The ID of the blog that is associated with the current site level options.
43
- */
44
- private $_blog_id = 0;
45
- /**
46
- * @var bool
47
- */
48
- private $_is_multisite;
49
- /**
50
- * @var FS_Admin_Notices[]
51
- */
52
- private static $_instances = array();
53
-
54
- /**
55
- * @param string $id
56
- * @param string $title
57
- * @param string $module_unique_affix
58
- * @param bool $is_network_and_blog_admins Whether or not the message should be shown both on network and
59
- * blog admin pages.
60
- *
61
- * @return FS_Admin_Notices
62
- */
63
- static function instance( $id, $title = '', $module_unique_affix = '', $is_network_and_blog_admins = false ) {
64
- if ( ! isset( self::$_instances[ $id ] ) ) {
65
- self::$_instances[ $id ] = new FS_Admin_Notices( $id, $title, $module_unique_affix, $is_network_and_blog_admins );
66
- }
67
-
68
- return self::$_instances[ $id ];
69
- }
70
-
71
- /**
72
- * @param string $id
73
- * @param string $title
74
- * @param string $module_unique_affix
75
- * @param bool $is_network_and_blog_admins Whether or not the message should be shown both on network and
76
- * blog admin pages.
77
- */
78
- protected function __construct( $id, $title = '', $module_unique_affix = '', $is_network_and_blog_admins = false ) {
79
- $this->_id = $id;
80
- $this->_title = $title;
81
- $this->_module_unique_affix = $module_unique_affix;
82
- $this->_is_multisite = is_multisite();
83
-
84
- if ( $this->_is_multisite ) {
85
- $this->_blog_id = get_current_blog_id();
86
-
87
- $this->_network_notices = FS_Admin_Notice_Manager::instance(
88
- $id,
89
- $title,
90
- $module_unique_affix,
91
- $is_network_and_blog_admins,
92
- true
93
- );
94
- }
95
-
96
- $this->_notices = FS_Admin_Notice_Manager::instance(
97
- $id,
98
- $title,
99
- $module_unique_affix,
100
- false,
101
- $this->_blog_id
102
- );
103
- }
104
-
105
- /**
106
- * Add admin message to admin messages queue, and hook to admin_notices / all_admin_notices if not yet hooked.
107
- *
108
- * @author Vova Feldman (@svovaf)
109
- * @since 1.0.4
110
- *
111
- * @param string $message
112
- * @param string $title
113
- * @param string $type
114
- * @param bool $is_sticky
115
- * @param string $id Message ID
116
- * @param bool $store_if_sticky
117
- * @param int|null $network_level_or_blog_id
118
- *
119
- * @uses add_action()
120
- */
121
- function add(
122
- $message,
123
- $title = '',
124
- $type = 'success',
125
- $is_sticky = false,
126
- $id = '',
127
- $store_if_sticky = true,
128
- $network_level_or_blog_id = null
129
- ) {
130
- if ( $this->should_use_network_notices( $id, $network_level_or_blog_id ) ) {
131
- $notices = $this->_network_notices;
132
- } else {
133
- $notices = $this->get_site_notices( $network_level_or_blog_id );
134
- }
135
-
136
- $notices->add(
137
- $message,
138
- $title,
139
- $type,
140
- $is_sticky,
141
- $id,
142
- $store_if_sticky
143
- );
144
- }
145
-
146
- /**
147
- * @author Vova Feldman (@svovaf)
148
- * @since 1.0.7
149
- *
150
- * @param string|string[] $ids
151
- * @param int|null $network_level_or_blog_id
152
- */
153
- function remove_sticky( $ids, $network_level_or_blog_id = null ) {
154
- if ( ! is_array( $ids ) ) {
155
- $ids = array( $ids );
156
- }
157
-
158
- if ( $this->should_use_network_notices( $ids[0], $network_level_or_blog_id ) ) {
159
- $notices = $this->_network_notices;
160
- } else {
161
- $notices = $this->get_site_notices( $network_level_or_blog_id );
162
- }
163
-
164
- return $notices->remove_sticky( $ids );
165
- }
166
-
167
- /**
168
- * Check if sticky message exists by id.
169
- *
170
- * @author Vova Feldman (@svovaf)
171
- * @since 1.0.9
172
- *
173
- * @param string $id
174
- * @param int|null $network_level_or_blog_id
175
- *
176
- * @return bool
177
- */
178
- function has_sticky( $id, $network_level_or_blog_id = null ) {
179
- if ( $this->should_use_network_notices( $id, $network_level_or_blog_id ) ) {
180
- $notices = $this->_network_notices;
181
- } else {
182
- $notices = $this->get_site_notices( $network_level_or_blog_id );
183
- }
184
-
185
- return $notices->has_sticky( $id );
186
- }
187
-
188
- /**
189
- * Adds sticky admin notification.
190
- *
191
- * @author Vova Feldman (@svovaf)
192
- * @since 1.0.7
193
- *
194
- * @param string $message
195
- * @param string $id Message ID
196
- * @param string $title
197
- * @param string $type
198
- * @param int|null $network_level_or_blog_id
199
- * @param number|null $wp_user_id
200
- * @param string|null $plugin_title
201
- * @param bool $is_network_and_blog_admins Whether or not the message should be shown both on network and
202
- * blog admin pages.
203
- */
204
- function add_sticky(
205
- $message,
206
- $id,
207
- $title = '',
208
- $type = 'success',
209
- $network_level_or_blog_id = null,
210
- $wp_user_id = null,
211
- $plugin_title = null,
212
- $is_network_and_blog_admins = false
213
- ) {
214
- if ( $this->should_use_network_notices( $id, $network_level_or_blog_id ) ) {
215
- $notices = $this->_network_notices;
216
- } else {
217
- $notices = $this->get_site_notices( $network_level_or_blog_id );
218
- }
219
-
220
- $notices->add_sticky( $message, $id, $title, $type, $wp_user_id, $plugin_title, $is_network_and_blog_admins );
221
- }
222
-
223
- /**
224
- * Clear all sticky messages.
225
- *
226
- * @author Vova Feldman (@svovaf)
227
- * @since 2.0.0
228
- *
229
- * @param int|null $network_level_or_blog_id
230
- */
231
- function clear_all_sticky( $network_level_or_blog_id = null ) {
232
- if ( ! $this->_is_multisite ||
233
- false === $network_level_or_blog_id ||
234
- 0 == $network_level_or_blog_id ||
235
- is_null( $network_level_or_blog_id )
236
- ) {
237
- $notices = $this->get_site_notices( $network_level_or_blog_id );
238
- $notices->clear_all_sticky();
239
- }
240
-
241
- if ( $this->_is_multisite &&
242
- ( true === $network_level_or_blog_id || is_null( $network_level_or_blog_id ) )
243
- ) {
244
- $this->_network_notices->clear_all_sticky();
245
- }
246
- }
247
-
248
- /**
249
- * Add admin message to all admin messages queue, and hook to all_admin_notices if not yet hooked.
250
- *
251
- * @author Vova Feldman (@svovaf)
252
- * @since 1.0.4
253
- *
254
- * @param string $message
255
- * @param string $title
256
- * @param string $type
257
- * @param bool $is_sticky
258
- * @param string $id Message ID
259
- */
260
- function add_all( $message, $title = '', $type = 'success', $is_sticky = false, $id = '' ) {
261
- $this->add( $message, $title, $type, $is_sticky, true, $id );
262
- }
263
-
264
- #--------------------------------------------------------------------------------
265
- #region Helper Methods
266
- #--------------------------------------------------------------------------------
267
-
268
- /**
269
- * @author Vova Feldman (@svovaf)
270
- * @since 2.0.0
271
- *
272
- * @param int $blog_id
273
- *
274
- * @return FS_Admin_Notice_Manager
275
- */
276
- private function get_site_notices( $blog_id = 0 ) {
277
- if ( 0 == $blog_id || $blog_id == $this->_blog_id ) {
278
- return $this->_notices;
279
- }
280
-
281
- return FS_Admin_Notice_Manager::instance(
282
- $this->_id,
283
- $this->_title,
284
- $this->_module_unique_affix,
285
- false,
286
- $blog_id
287
- );
288
- }
289
-
290
- /**
291
- * Check if the network notices should be used.
292
- *
293
- * @author Vova Feldman (@svovaf)
294
- * @since 2.0.0
295
- *
296
- * @param string $id
297
- * @param null|bool|int $network_level_or_blog_id When an integer, use the given blog storage. When `true` use the multisite notices (if there's a network). When `false`, use the current context blog notices. When `null`, the decision which notices manager to use (MS vs. Current S) will be handled internally and determined based on the $id and the context admin (blog admin vs. network level admin).
298
- *
299
- * @return bool
300
- */
301
- private function should_use_network_notices( $id = '', $network_level_or_blog_id = null ) {
302
- if ( ! $this->_is_multisite ) {
303
- // Not a multisite environment.
304
- return false;
305
- }
306
-
307
- if ( is_numeric( $network_level_or_blog_id ) ) {
308
- // Explicitly asked to use a specified blog storage.
309
- return false;
310
- }
311
-
312
- if ( is_bool( $network_level_or_blog_id ) ) {
313
- // Explicitly specified whether should use the network or blog level storage.
314
- return $network_level_or_blog_id;
315
- }
316
-
317
- return fs_is_network_admin();
318
- }
319
-
320
- #endregion
321
  }
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2015, Freemius, Inc.
5
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
+ * @since 2.0.0
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ /**
14
+ * WP Admin notices manager both for site level and network level.
15
+ *
16
+ * Class FS_Admin_Notices
17
+ */
18
+ class FS_Admin_Notices {
19
+ /**
20
+ * @since 1.2.2
21
+ *
22
+ * @var string
23
+ */
24
+ protected $_module_unique_affix;
25
+ /**
26
+ * @var string
27
+ */
28
+ protected $_id;
29
+ /**
30
+ * @var string
31
+ */
32
+ protected $_title;
33
+ /**
34
+ * @var FS_Admin_Notice_Manager
35
+ */
36
+ protected $_notices;
37
+ /**
38
+ * @var FS_Admin_Notice_Manager
39
+ */
40
+ protected $_network_notices;
41
+ /**
42
+ * @var int The ID of the blog that is associated with the current site level options.
43
+ */
44
+ private $_blog_id = 0;
45
+ /**
46
+ * @var bool
47
+ */
48
+ private $_is_multisite;
49
+ /**
50
+ * @var FS_Admin_Notices[]
51
+ */
52
+ private static $_instances = array();
53
+
54
+ /**
55
+ * @param string $id
56
+ * @param string $title
57
+ * @param string $module_unique_affix
58
+ * @param bool $is_network_and_blog_admins Whether or not the message should be shown both on network and
59
+ * blog admin pages.
60
+ *
61
+ * @return FS_Admin_Notices
62
+ */
63
+ static function instance( $id, $title = '', $module_unique_affix = '', $is_network_and_blog_admins = false ) {
64
+ if ( ! isset( self::$_instances[ $id ] ) ) {
65
+ self::$_instances[ $id ] = new FS_Admin_Notices( $id, $title, $module_unique_affix, $is_network_and_blog_admins );
66
+ }
67
+
68
+ return self::$_instances[ $id ];
69
+ }
70
+
71
+ /**
72
+ * @param string $id
73
+ * @param string $title
74
+ * @param string $module_unique_affix
75
+ * @param bool $is_network_and_blog_admins Whether or not the message should be shown both on network and
76
+ * blog admin pages.
77
+ */
78
+ protected function __construct( $id, $title = '', $module_unique_affix = '', $is_network_and_blog_admins = false ) {
79
+ $this->_id = $id;
80
+ $this->_title = $title;
81
+ $this->_module_unique_affix = $module_unique_affix;
82
+ $this->_is_multisite = is_multisite();
83
+
84
+ if ( $this->_is_multisite ) {
85
+ $this->_blog_id = get_current_blog_id();
86
+
87
+ $this->_network_notices = FS_Admin_Notice_Manager::instance(
88
+ $id,
89
+ $title,
90
+ $module_unique_affix,
91
+ $is_network_and_blog_admins,
92
+ true
93
+ );
94
+ }
95
+
96
+ $this->_notices = FS_Admin_Notice_Manager::instance(
97
+ $id,
98
+ $title,
99
+ $module_unique_affix,
100
+ false,
101
+ $this->_blog_id
102
+ );
103
+ }
104
+
105
+ /**
106
+ * Add admin message to admin messages queue, and hook to admin_notices / all_admin_notices if not yet hooked.
107
+ *
108
+ * @author Vova Feldman (@svovaf)
109
+ * @since 1.0.4
110
+ *
111
+ * @param string $message
112
+ * @param string $title
113
+ * @param string $type
114
+ * @param bool $is_sticky
115
+ * @param string $id Message ID
116
+ * @param bool $store_if_sticky
117
+ * @param int|null $network_level_or_blog_id
118
+ *
119
+ * @uses add_action()
120
+ */
121
+ function add(
122
+ $message,
123
+ $title = '',
124
+ $type = 'success',
125
+ $is_sticky = false,
126
+ $id = '',
127
+ $store_if_sticky = true,
128
+ $network_level_or_blog_id = null
129
+ ) {
130
+ if ( $this->should_use_network_notices( $id, $network_level_or_blog_id ) ) {
131
+ $notices = $this->_network_notices;
132
+ } else {
133
+ $notices = $this->get_site_notices( $network_level_or_blog_id );
134
+ }
135
+
136
+ $notices->add(
137
+ $message,
138
+ $title,
139
+ $type,
140
+ $is_sticky,
141
+ $id,
142
+ $store_if_sticky
143
+ );
144
+ }
145
+
146
+ /**
147
+ * @author Vova Feldman (@svovaf)
148
+ * @since 1.0.7
149
+ *
150
+ * @param string|string[] $ids
151
+ * @param int|null $network_level_or_blog_id
152
+ */
153
+ function remove_sticky( $ids, $network_level_or_blog_id = null ) {
154
+ if ( ! is_array( $ids ) ) {
155
+ $ids = array( $ids );
156
+ }
157
+
158
+ if ( $this->should_use_network_notices( $ids[0], $network_level_or_blog_id ) ) {
159
+ $notices = $this->_network_notices;
160
+ } else {
161
+ $notices = $this->get_site_notices( $network_level_or_blog_id );
162
+ }
163
+
164
+ return $notices->remove_sticky( $ids );
165
+ }
166
+
167
+ /**
168
+ * Check if sticky message exists by id.
169
+ *
170
+ * @author Vova Feldman (@svovaf)
171
+ * @since 1.0.9
172
+ *
173
+ * @param string $id
174
+ * @param int|null $network_level_or_blog_id
175
+ *
176
+ * @return bool
177
+ */
178
+ function has_sticky( $id, $network_level_or_blog_id = null ) {
179
+ if ( $this->should_use_network_notices( $id, $network_level_or_blog_id ) ) {
180
+ $notices = $this->_network_notices;
181
+ } else {
182
+ $notices = $this->get_site_notices( $network_level_or_blog_id );
183
+ }
184
+
185
+ return $notices->has_sticky( $id );
186
+ }
187
+
188
+ /**
189
+ * Adds sticky admin notification.
190
+ *
191
+ * @author Vova Feldman (@svovaf)
192
+ * @since 1.0.7
193
+ *
194
+ * @param string $message
195
+ * @param string $id Message ID
196
+ * @param string $title
197
+ * @param string $type
198
+ * @param int|null $network_level_or_blog_id
199
+ * @param number|null $wp_user_id
200
+ * @param string|null $plugin_title
201
+ * @param bool $is_network_and_blog_admins Whether or not the message should be shown both on network and
202
+ * blog admin pages.
203
+ */
204
+ function add_sticky(
205
+ $message,
206
+ $id,
207
+ $title = '',
208
+ $type = 'success',
209
+ $network_level_or_blog_id = null,
210
+ $wp_user_id = null,
211
+ $plugin_title = null,
212
+ $is_network_and_blog_admins = false
213
+ ) {
214
+ if ( $this->should_use_network_notices( $id, $network_level_or_blog_id ) ) {
215
+ $notices = $this->_network_notices;
216
+ } else {
217
+ $notices = $this->get_site_notices( $network_level_or_blog_id );
218
+ }
219
+
220
+ $notices->add_sticky( $message, $id, $title, $type, $wp_user_id, $plugin_title, $is_network_and_blog_admins );
221
+ }
222
+
223
+ /**
224
+ * Clear all sticky messages.
225
+ *
226
+ * @author Vova Feldman (@svovaf)
227
+ * @since 2.0.0
228
+ *
229
+ * @param int|null $network_level_or_blog_id
230
+ */
231
+ function clear_all_sticky( $network_level_or_blog_id = null ) {
232
+ if ( ! $this->_is_multisite ||
233
+ false === $network_level_or_blog_id ||
234
+ 0 == $network_level_or_blog_id ||
235
+ is_null( $network_level_or_blog_id )
236
+ ) {
237
+ $notices = $this->get_site_notices( $network_level_or_blog_id );
238
+ $notices->clear_all_sticky();
239
+ }
240
+
241
+ if ( $this->_is_multisite &&
242
+ ( true === $network_level_or_blog_id || is_null( $network_level_or_blog_id ) )
243
+ ) {
244
+ $this->_network_notices->clear_all_sticky();
245
+ }
246
+ }
247
+
248
+ /**
249
+ * Add admin message to all admin messages queue, and hook to all_admin_notices if not yet hooked.
250
+ *
251
+ * @author Vova Feldman (@svovaf)
252
+ * @since 1.0.4
253
+ *
254
+ * @param string $message
255
+ * @param string $title
256
+ * @param string $type
257
+ * @param bool $is_sticky
258
+ * @param string $id Message ID
259
+ */
260
+ function add_all( $message, $title = '', $type = 'success', $is_sticky = false, $id = '' ) {
261
+ $this->add( $message, $title, $type, $is_sticky, true, $id );
262
+ }
263
+
264
+ #--------------------------------------------------------------------------------
265
+ #region Helper Methods
266
+ #--------------------------------------------------------------------------------
267
+
268
+ /**
269
+ * @author Vova Feldman (@svovaf)
270
+ * @since 2.0.0
271
+ *
272
+ * @param int $blog_id
273
+ *
274
+ * @return FS_Admin_Notice_Manager
275
+ */
276
+ private function get_site_notices( $blog_id = 0 ) {
277
+ if ( 0 == $blog_id || $blog_id == $this->_blog_id ) {
278
+ return $this->_notices;
279
+ }
280
+
281
+ return FS_Admin_Notice_Manager::instance(
282
+ $this->_id,
283
+ $this->_title,
284
+ $this->_module_unique_affix,
285
+ false,
286
+ $blog_id
287
+ );
288
+ }
289
+
290
+ /**
291
+ * Check if the network notices should be used.
292
+ *
293
+ * @author Vova Feldman (@svovaf)
294
+ * @since 2.0.0
295
+ *
296
+ * @param string $id
297
+ * @param null|bool|int $network_level_or_blog_id When an integer, use the given blog storage. When `true` use the multisite notices (if there's a network). When `false`, use the current context blog notices. When `null`, the decision which notices manager to use (MS vs. Current S) will be handled internally and determined based on the $id and the context admin (blog admin vs. network level admin).
298
+ *
299
+ * @return bool
300
+ */
301
+ private function should_use_network_notices( $id = '', $network_level_or_blog_id = null ) {
302
+ if ( ! $this->_is_multisite ) {
303
+ // Not a multisite environment.
304
+ return false;
305
+ }
306
+
307
+ if ( is_numeric( $network_level_or_blog_id ) ) {
308
+ // Explicitly asked to use a specified blog storage.
309
+ return false;
310
+ }
311
+
312
+ if ( is_bool( $network_level_or_blog_id ) ) {
313
+ // Explicitly specified whether should use the network or blog level storage.
314
+ return $network_level_or_blog_id;
315
+ }
316
+
317
+ return fs_is_network_admin();
318
+ }
319
+
320
+ #endregion
321
  }
freemius/includes/class-fs-api.php CHANGED
@@ -238,7 +238,7 @@
238
  if ( ! is_object( $result ) || isset( $result->error ) ) {
239
  // Api returned an error.
240
  if ( is_object( $cached_result ) &&
241
- ! isset( $cached_result )
242
  ) {
243
  // If there was an error during a newer data fetch,
244
  // fallback to older data version.
@@ -248,9 +248,19 @@
248
  $this->_logger->warn( 'Fallback to cached API result: ' . var_export( $cached_result, true ) );
249
  }
250
  } else {
251
- // If no older data version, return result without
252
- // caching the error.
253
- return $result;
 
 
 
 
 
 
 
 
 
 
254
  }
255
  }
256
 
238
  if ( ! is_object( $result ) || isset( $result->error ) ) {
239
  // Api returned an error.
240
  if ( is_object( $cached_result ) &&
241
+ ! isset( $cached_result->error )
242
  ) {
243
  // If there was an error during a newer data fetch,
244
  // fallback to older data version.
248
  $this->_logger->warn( 'Fallback to cached API result: ' . var_export( $cached_result, true ) );
249
  }
250
  } else {
251
+ if ( is_object( $result ) && 404 == $result->error->http ) {
252
+ /**
253
+ * If the response code is 404, cache the result for half of the `$expiration`.
254
+ *
255
+ * @author Leo Fajardo (@leorw)
256
+ * @since 2.2.3.1
257
+ */
258
+ $expiration /= 2;
259
+ } else {
260
+ // If no older data version and the response code is not 404, return result without
261
+ // caching the error.
262
+ return $result;
263
+ }
264
  }
265
  }
266
 
freemius/includes/class-fs-plugin-updater.php CHANGED
@@ -29,6 +29,13 @@
29
  * @since 1.1.8.1
30
  */
31
  private $_update_details;
 
 
 
 
 
 
 
32
 
33
  #--------------------------------------------------------------------------------
34
  #region Singleton
@@ -77,25 +84,25 @@
77
 
78
  $this->add_transient_filters();
79
 
80
- if ( ! $this->_fs->has_active_valid_license() ) {
81
- /**
82
- * If user has the premium plugin's code but do NOT have an active license,
83
- * encourage him to upgrade by showing that there's a new release, but instead
84
- * of showing an update link, show upgrade link to the pricing page.
85
- *
86
- * @since 1.1.6
87
- *
88
- */
89
- // WP 2.9+
90
- add_action( "after_plugin_row_{$this->_fs->get_plugin_basename()}", array(
91
- &$this,
92
- 'catch_plugin_update_row'
93
- ), 9 );
94
- add_action( "after_plugin_row_{$this->_fs->get_plugin_basename()}", array(
95
- &$this,
96
- 'edit_and_echo_plugin_update_row'
97
- ), 11, 2 );
98
- }
99
 
100
  if ( ! WP_FS__IS_PRODUCTION_MODE ) {
101
  add_filter( 'http_request_host_is_external', array(
@@ -105,16 +112,88 @@
105
  }
106
 
107
  if ( $this->_fs->is_premium() ) {
108
- if ( $this->is_correct_folder_name() ) {
109
  add_filter( 'upgrader_post_install', array( &$this, '_maybe_update_folder_name' ), 10, 3 );
110
  }
111
 
112
- if ( ! $this->_fs->has_active_valid_license() ) {
 
 
 
113
  add_filter( 'wp_prepare_themes_for_js', array( &$this, 'change_theme_update_info_html' ), 10, 1 );
114
  }
115
  }
116
  }
117
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  /**
119
  * @author Vova Feldman (@svovaf)
120
  * @since 2.0.0
@@ -178,15 +257,57 @@
178
 
179
  $r = $current->response[ $file ];
180
 
181
- $plugin_update_row = preg_replace(
182
- '/(\<div.+>)(.+)(\<a.+\<a.+)\<\/div\>/is',
183
- '$1 $2 ' . sprintf(
184
- $this->_fs->get_text_inline( '%sRenew your license now%s to access version %s security & feature updates, and support.', 'renew-license-now' ),
185
- '<a href="' . $this->_fs->pricing_url() . '">', '</a>',
186
- $r->new_version ) .
187
- '$4',
188
- $plugin_update_row
189
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
190
 
191
  echo $plugin_update_row;
192
  }
@@ -215,10 +336,7 @@
215
 
216
  $prepared_themes[ $theme_basename ]['update'] = preg_replace(
217
  '/(\<p.+>)(.+)(\<a.+\<a.+)\.(.+\<\/p\>)/is',
218
- '$1 $2 ' . sprintf(
219
- $this->_fs->get_text_inline( '%sRenew your license now%s to access version %s security & feature updates, and support.', 'renew-license-now' ),
220
- '<a href="' . $this->_fs->pricing_url() . '">', '</a>',
221
- $themes_update->response[ $theme_basename ]['new_version'] ) .
222
  '$4',
223
  $prepared_themes[ $theme_basename ]['update']
224
  );
@@ -298,7 +416,8 @@
298
  $new_version = $this->_fs->get_update(
299
  false,
300
  fs_request_get_bool( 'force-check' ),
301
- WP_FS__TIME_24_HOURS_IN_SEC / 24
 
302
  );
303
 
304
  $this->_update_details = false;
@@ -324,6 +443,46 @@
324
  (array) $this->_update_details;
325
  }
326
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
327
  return $transient_data;
328
  }
329
 
@@ -356,6 +515,18 @@
356
  );
357
  }
358
 
 
 
 
 
 
 
 
 
 
 
 
 
359
  $update->{$this->_fs->get_module_type()} = $this->_fs->get_plugin_basename();
360
 
361
  return $update;
@@ -508,6 +679,138 @@
508
  return $res;
509
  }
510
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
511
  /**
512
  * Updates information on the "View version x.x details" page with custom data.
513
  *
@@ -571,11 +874,13 @@ if ( !isset($info->error) ) {
571
  }*/
572
  }
573
 
 
 
574
  // Get plugin's newest update.
575
- $new_version = $this->get_latest_download_details( $is_addon ? $addon->id : false );
576
 
577
  if ( ! is_object( $new_version ) || empty( $new_version->version ) ) {
578
- $data->version = $this->_fs->get_plugin_version();
579
  } else {
580
  if ( $is_addon ) {
581
  $data->name = $addon->title . ' ' . $this->_fs->get_text_inline( 'Add-On', 'addon' );
@@ -592,6 +897,52 @@ if ( !isset($info->error) ) {
592
 
593
  $data->version = $new_version->version;
594
  $data->download_link = $new_version->url;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
595
  }
596
 
597
  return $data;
@@ -602,11 +953,13 @@ if ( !isset($info->error) ) {
602
  * @since 1.2.1.7
603
  *
604
  * @param number|bool $addon_id
 
 
605
  *
606
  * @return object
607
  */
608
- private function get_latest_download_details( $addon_id = false ) {
609
- return $this->_fs->_fetch_latest_version( $addon_id );
610
  }
611
 
612
  /**
@@ -616,16 +969,10 @@ if ( !isset($info->error) ) {
616
  * @author Vova Feldman (@svovaf)
617
  * @since 1.2.1.6
618
  *
619
- * @param string $basename Current plugin's basename.
620
- *
621
  * @return bool
622
  */
623
- private function is_correct_folder_name( $basename = '' ) {
624
- if ( empty( $basename ) ) {
625
- $basename = $this->_fs->get_plugin_basename();
626
- }
627
-
628
- return ( $this->_fs->get_target_folder_name() != trim( dirname( $basename ), '/\\' ) );
629
  }
630
 
631
  /**
@@ -661,7 +1008,7 @@ if ( !isset($info->error) ) {
661
  $filename = basename( $basename );
662
 
663
  $new_basename = plugin_basename(
664
- trailingslashit( $this->_fs->get_slug() . ( $this->_fs->is_premium() ? '-premium' : '' ) ) .
665
  $filename
666
  );
667
 
@@ -729,14 +1076,16 @@ if ( !isset($info->error) ) {
729
  );
730
  }
731
 
732
- $slug = $addon->slug;
733
- $title = $addon->title . ' ' . $this->_fs->get_text_inline( 'Add-On', 'addon' );
 
734
 
735
  $is_addon = true;
736
  } else {
737
- $slug = $this->_fs->get_slug();
738
- $title = $this->_fs->get_plugin_title() .
739
- ( $this->_fs->is_addon() ? ' ' . $this->_fs->get_text_inline( 'Add-On', 'addon' ) : '' );
 
740
  }
741
 
742
  if ( $this->is_premium_plugin_active( $plugin_id ) ) {
@@ -749,8 +1098,8 @@ if ( !isset($info->error) ) {
749
  );
750
  }
751
 
752
- $latest_version = $this->get_latest_download_details( $plugin_id );
753
- $target_folder = "{$slug}-premium";
754
 
755
  // Prep variables for Plugin_Installer_Skin class.
756
  $extra = array();
@@ -789,11 +1138,11 @@ if ( !isset($info->error) ) {
789
  $upgrader = new Plugin_Upgrader( $skin );
790
 
791
  // Perform the action and install the plugin from the $source urldecode().
792
- add_filter( 'upgrader_source_selection', array( &$this, '_maybe_adjust_source_dir' ), 1, 3 );
793
 
794
  $install_result = $upgrader->install( $source );
795
 
796
- remove_filter( 'upgrader_source_selection', array( &$this, '_maybe_adjust_source_dir' ), 1 );
797
 
798
  if ( is_wp_error( $install_result ) ) {
799
  return array(
@@ -883,6 +1232,29 @@ if ( !isset($info->error) ) {
883
  return is_plugin_active( $this->_fs->premium_plugin_basename() );
884
  }
885
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
886
  /**
887
  * Adjust the plugin directory name if necessary.
888
  * Assumes plugin has a folder (not a single file plugin).
@@ -894,6 +1266,7 @@ if ( !isset($info->error) ) {
894
  *
895
  * @author Vova Feldman
896
  * @since 1.2.1.7
 
897
  *
898
  * @param string $source Path to upgrade/zip-file-name.tmp/subdirectory/.
899
  * @param string $remote_source Path to upgrade/zip-file-name.tmp.
@@ -901,13 +1274,64 @@ if ( !isset($info->error) ) {
901
  *
902
  * @return string|WP_Error
903
  */
904
- function _maybe_adjust_source_dir( $source, $remote_source, $upgrader ) {
905
  if ( ! is_object( $GLOBALS['wp_filesystem'] ) ) {
906
  return $source;
907
  }
908
 
 
 
 
909
  // Figure out what the slug is supposed to be.
910
- $desired_slug = $upgrader->skin->options['extra']['slug'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
911
 
912
  $subdir_name = untrailingslashit( str_replace( trailingslashit( $remote_source ), '', $source ) );
913
 
@@ -917,19 +1341,20 @@ if ( !isset($info->error) ) {
917
 
918
  if ( true === $GLOBALS['wp_filesystem']->move( $from_path, $to_path ) ) {
919
  return trailingslashit( $to_path );
920
- } else {
921
- return new WP_Error(
922
- 'rename_failed',
923
- $this->_fs->get_text_inline( 'The remote plugin package does not contain a folder with the desired slug and renaming did not work.', 'module-package-rename-failure' ),
924
- array(
925
- 'found' => $subdir_name,
926
- 'expected' => $desired_slug
927
- ) );
928
  }
 
 
 
 
 
 
 
 
 
929
  }
930
 
931
  return $source;
932
  }
933
 
934
  #endregion
935
- }
29
  * @since 1.1.8.1
30
  */
31
  private $_update_details;
32
+ /**
33
+ * @var array
34
+ * @since 2.1.2
35
+ */
36
+ private $_translation_updates;
37
+
38
+ private static $_upgrade_basename = null;
39
 
40
  #--------------------------------------------------------------------------------
41
  #region Singleton
84
 
85
  $this->add_transient_filters();
86
 
87
+ /**
88
+ * If user has the premium plugin's code but do NOT have an active license,
89
+ * encourage him to upgrade by showing that there's a new release, but instead
90
+ * of showing an update link, show upgrade link to the pricing page.
91
+ *
92
+ * @since 1.1.6
93
+ *
94
+ */
95
+ // WP 2.9+
96
+ add_action( "after_plugin_row_{$this->_fs->get_plugin_basename()}", array(
97
+ &$this,
98
+ 'catch_plugin_update_row'
99
+ ), 9 );
100
+ add_action( "after_plugin_row_{$this->_fs->get_plugin_basename()}", array(
101
+ &$this,
102
+ 'edit_and_echo_plugin_update_row'
103
+ ), 11, 2 );
104
+
105
+ add_action( 'admin_head', array( &$this, 'catch_plugin_information_dialog_contents' ) );
106
 
107
  if ( ! WP_FS__IS_PRODUCTION_MODE ) {
108
  add_filter( 'http_request_host_is_external', array(
112
  }
113
 
114
  if ( $this->_fs->is_premium() ) {
115
+ if ( ! $this->is_correct_folder_name() ) {
116
  add_filter( 'upgrader_post_install', array( &$this, '_maybe_update_folder_name' ), 10, 3 );
117
  }
118
 
119
+ add_filter( 'upgrader_pre_install', array( 'FS_Plugin_Updater', '_store_basename_for_source_adjustment' ), 1, 2 );
120
+ add_filter( 'upgrader_source_selection', array( 'FS_Plugin_Updater', '_maybe_adjust_source_dir' ), 1, 3 );
121
+
122
+ if ( ! $this->_fs->has_any_active_valid_license() ) {
123
  add_filter( 'wp_prepare_themes_for_js', array( &$this, 'change_theme_update_info_html' ), 10, 1 );
124
  }
125
  }
126
  }
127
 
128
+ /**
129
+ * @author Leo Fajardo (@leorw)
130
+ * @since 2.1.4
131
+ */
132
+ function catch_plugin_information_dialog_contents() {
133
+ if (
134
+ 'plugin-information' !== fs_request_get( 'tab', false ) ||
135
+ $this->_fs->get_slug() !== fs_request_get( 'plugin', false )
136
+ ) {
137
+ return;
138
+ }
139
+
140
+ add_action( 'admin_footer', array( &$this, 'edit_and_echo_plugin_information_dialog_contents' ), 0, 1 );
141
+
142
+ ob_start();
143
+ }
144
+
145
+ /**
146
+ * @author Leo Fajardo (@leorw)
147
+ * @since 2.1.4
148
+ *
149
+ * @param string $hook_suffix
150
+ */
151
+ function edit_and_echo_plugin_information_dialog_contents( $hook_suffix ) {
152
+ if (
153
+ 'plugin-information' !== fs_request_get( 'tab', false ) ||
154
+ $this->_fs->get_slug() !== fs_request_get( 'plugin', false )
155
+ ) {
156
+ return;
157
+ }
158
+
159
+ $license = $this->_fs->_get_license();
160
+
161
+ $subscription = ( is_object( $license ) && ! $license->is_lifetime() ) ?
162
+ $this->_fs->_get_subscription( $license->id ) :
163
+ null;
164
+
165
+ $contents = ob_get_clean();
166
+
167
+ /**
168
+ * Replace the plugin information dialog's "Install Update Now" button's text and URL. If there's a license,
169
+ * the text will be "Renew license" and will link to the checkout page with the license's billing cycle
170
+ * and quota. If there's no license, the text will be "Buy license" and will link to the pricing page.
171
+ */
172
+ $contents = preg_replace(
173
+ '/(.+\<a.+)(id="plugin_update_from_iframe")(.+href=")([^\s]+)(".+\>)(.+)(\<\/a.+)/is',
174
+ is_object( $license ) ?
175
+ sprintf(
176
+ '$1$3%s$5%s$7',
177
+ $this->_fs->checkout_url(
178
+ is_object( $subscription ) ?
179
+ ( 1 == $subscription->billing_cycle ? WP_FS__PERIOD_MONTHLY : WP_FS__PERIOD_ANNUALLY ) :
180
+ WP_FS__PERIOD_LIFETIME,
181
+ false,
182
+ array( 'licenses' => $license->quota )
183
+ ),
184
+ fs_text_inline( 'Renew license', 'renew-license', $this->_fs->get_slug() )
185
+ ) :
186
+ sprintf(
187
+ '$1$3%s$5%s$7',
188
+ $this->_fs->pricing_url(),
189
+ fs_text_inline( 'Buy license', 'buy-license', $this->_fs->get_slug() )
190
+ ),
191
+ $contents
192
+ );
193
+
194
+ echo $contents;
195
+ }
196
+
197
  /**
198
  * @author Vova Feldman (@svovaf)
199
  * @since 2.0.0
257
 
258
  $r = $current->response[ $file ];
259
 
260
+ if ( ! $this->_fs->has_any_active_valid_license() ) {
261
+ /**
262
+ * Turn the "new version" text into a link that opens the plugin information dialog when clicked and
263
+ * make the "View version x details" text link to the checkout page instead of opening the plugin
264
+ * information dialog when clicked.
265
+ *
266
+ * Sample input:
267
+ * There is a new version of Awesome Plugin available. <a href="...>View version x.y.z details</a> or <a href="...>update now</a>.
268
+ * Output:
269
+ * There is a <a href="...>new version</a> of Awesome Plugin available. <a href="...>Buy a license now</a> to access version x.y.z security & feature updates, and support.
270
+ *
271
+ * @author Leo Fajardo (@leorw)
272
+ */
273
+ $plugin_update_row = preg_replace(
274
+ '/(\<div.+>)(.+)(\<a.+href="([^\s]+)"([^\<]+)\>.+\<a.+)(\<\/div\>)/is',
275
+ (
276
+ '$1' .
277
+ sprintf(
278
+ fs_text_inline( 'There is a %s of %s available.', 'new-version-available', $this->_fs->get_slug() ),
279
+ sprintf(
280
+ '<a href="$4"%s>%s</a>',
281
+ '$5',
282
+ fs_text_inline( 'new version', 'new-version', $this->_fs->get_slug() )
283
+ ),
284
+ $this->_fs->get_plugin_title()
285
+ ) .
286
+ ' ' .
287
+ $this->_fs->version_upgrade_checkout_link( $r->new_version ) .
288
+ '$6'
289
+ ),
290
+ $plugin_update_row
291
+ );
292
+ }
293
+
294
+ if (
295
+ $this->_fs->is_plugin() &&
296
+ isset( $r->upgrade_notice ) &&
297
+ strlen( trim( $r->upgrade_notice ) ) > 0
298
+ ) {
299
+ $slug = $this->_fs->get_slug();
300
+
301
+ $upgrade_notice_html = sprintf(
302
+ '<p class="notice fs-upgrade-notice fs-slug-%1s fs-type-%2s" data-slug="%1s" data-type="%2s"><strong>%3s</strong> %4s</p>',
303
+ $slug,
304
+ $this->_fs->get_module_type(),
305
+ fs_text_inline( 'Important Upgrade Notice:', 'upgrade_notice', $slug ),
306
+ esc_html( $r->upgrade_notice )
307
+ );
308
+
309
+ $plugin_update_row = str_replace( '</div>', '</div>' . $upgrade_notice_html, $plugin_update_row );
310
+ }
311
 
312
  echo $plugin_update_row;
313
  }
336
 
337
  $prepared_themes[ $theme_basename ]['update'] = preg_replace(
338
  '/(\<p.+>)(.+)(\<a.+\<a.+)\.(.+\<\/p\>)/is',
339
+ '$1 $2 ' . $this->_fs->version_upgrade_checkout_link( $themes_update->response[ $theme_basename ]['new_version'] ) .
 
 
 
340
  '$4',
341
  $prepared_themes[ $theme_basename ]['update']
342
  );
416
  $new_version = $this->_fs->get_update(
417
  false,
418
  fs_request_get_bool( 'force-check' ),
419
+ WP_FS__TIME_24_HOURS_IN_SEC / 24,
420
+ $this->_fs->get_plugin_version()
421
  );
422
 
423
  $this->_update_details = false;
443
  (array) $this->_update_details;
444
  }
445
 
446
+ $slug = $this->_fs->get_slug();
447
+
448
+ if ( $this->_fs->is_org_repo_compliant() && $this->_fs->is_freemium() ) {
449
+ if ( ! isset( $this->_translation_updates ) ) {
450
+ $this->_translation_updates = array();
451
+
452
+ if ( current_user_can( 'update_languages' ) ) {
453
+ $translation_updates = $this->fetch_wp_org_module_translation_updates( $module_type, $slug );
454
+ if ( ! empty( $translation_updates ) ) {
455
+ $this->_translation_updates = $translation_updates;
456
+ }
457
+ }
458
+ }
459
+
460
+ if ( ! empty( $this->_translation_updates ) ) {
461
+ $all_translation_updates = ( isset( $transient_data->translations ) && is_array( $transient_data->translations ) ) ?
462
+ $transient_data->translations :
463
+ array();
464
+
465
+ $current_plugin_translation_updates_map = array();
466
+ foreach ( $all_translation_updates as $key => $translation_update ) {
467
+ if ( $module_type === ( $translation_update['type'] . 's' ) && $slug === $translation_update['slug'] ) {
468
+ $current_plugin_translation_updates_map[ $translation_update['language'] ] = $translation_update;
469
+ unset( $all_translation_updates[ $key ] );
470
+ }
471
+ }
472
+
473
+ foreach ( $this->_translation_updates as $translation_update ) {
474
+ $lang = $translation_update['language'];
475
+ if ( ! isset( $current_plugin_translation_updates_map[ $lang ] ) ||
476
+ version_compare( $translation_update['version'], $current_plugin_translation_updates_map[ $lang ]['version'], '>' )
477
+ ) {
478
+ $current_plugin_translation_updates_map[ $lang ] = $translation_update;
479
+ }
480
+ }
481
+
482
+ $transient_data->translations = array_merge( $all_translation_updates, array_values( $current_plugin_translation_updates_map ) );
483
+ }
484
+ }
485
+
486
  return $transient_data;
487
  }
488
 
515
  );
516
  }
517
 
518
+ if ( $this->_fs->is_premium() ) {
519
+ $latest_tag = $this->_fs->_fetch_latest_version( $this->_fs->get_id(), false );
520
+
521
+ if (
522
+ isset( $latest_tag->readme ) &&
523
+ isset( $latest_tag->readme->upgrade_notice ) &&
524
+ ! empty( $latest_tag->readme->upgrade_notice )
525
+ ) {
526
+ $update->upgrade_notice = $latest_tag->readme->upgrade_notice;
527
+ }
528
+ }
529
+
530
  $update->{$this->_fs->get_module_type()} = $this->_fs->get_plugin_basename();
531
 
532
  return $update;
679
  return $res;
680
  }
681
 
682
+ /**
683
+ * Fetches module translation updates from wordpress.org.
684
+ *
685
+ * @author Leo Fajardo (@leorw)
686
+ * @since 2.1.2
687
+ *
688
+ * @param string $module_type
689
+ * @param string $slug
690
+ *
691
+ * @return array|null
692
+ */
693
+ private function fetch_wp_org_module_translation_updates( $module_type, $slug ) {
694
+ $plugin_data = $this->_fs->get_plugin_data();
695
+
696
+ $locales = array_values( get_available_languages() );
697
+ $locales = apply_filters( "{$module_type}_update_check_locales", $locales );
698
+ $locales = array_unique( $locales );
699
+
700
+ $plugin_basename = $this->_fs->get_plugin_basename();
701
+ if ( 'themes' === $module_type ) {
702
+ $plugin_basename = $slug;
703
+ }
704
+
705
+ global $wp_version;
706
+
707
+ $request_args = array(
708
+ 'timeout' => 15,
709
+ 'body' => array(
710
+ "{$module_type}" => json_encode(
711
+ array(
712
+ "{$module_type}" => array(
713
+ $plugin_basename => array(
714
+ 'Name' => trim( str_replace( $this->_fs->get_plugin()->premium_suffix, '', $plugin_data['Name'] ) ),
715
+ 'Author' => $plugin_data['Author'],
716
+ )
717
+ )
718
+ )
719
+ ),
720
+ 'translations' => json_encode( $this->get_installed_translations( $module_type, $slug ) ),
721
+ 'locale' => json_encode( $locales )
722
+ ),
723
+ 'user-agent' => ( 'WordPress/' . $wp_version . '; ' . home_url( '/' ) )
724
+ );
725
+
726
+ $url = "http://api.wordpress.org/{$module_type}/update-check/1.1/";
727
+ if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) {
728
+ $url = set_url_scheme( $url, 'https' );
729
+ }
730
+
731
+ $raw_response = Freemius::safe_remote_post(
732
+ $url,
733
+ $request_args,
734
+ WP_FS__TIME_24_HOURS_IN_SEC,
735
+ WP_FS__TIME_12_HOURS_IN_SEC,
736
+ false
737
+ );
738
+
739
+ if ( is_wp_error( $raw_response ) ) {
740
+ return null;
741
+ }
742
+
743
+ $response = json_decode( wp_remote_retrieve_body( $raw_response ), true );
744
+
745
+ if ( ! is_array( $response ) ) {
746
+ return null;
747
+ }
748
+
749
+ if ( ! isset( $response['translations'] ) || empty( $response['translations'] ) ) {
750
+ return null;
751
+ }
752
+
753
+ return $response['translations'];
754
+ }
755
+
756
+ /**
757
+ * @author Leo Fajardo (@leorw)
758
+ * @since 2.1.2
759
+ *
760
+ * @param string $module_type
761
+ * @param string $slug
762
+ *
763
+ * @return array
764
+ */
765
+ private function get_installed_translations( $module_type, $slug ) {
766
+ if ( function_exists( 'wp_get_installed_translations' ) ) {
767
+ return wp_get_installed_translations( $module_type );
768
+ }
769
+
770
+ $dir = "/{$module_type}";
771
+
772
+ if ( ! is_dir( WP_LANG_DIR . $dir ) )
773
+ return array();
774
+
775
+ $files = scandir( WP_LANG_DIR . $dir );
776
+ if ( ! $files )
777
+ return array();
778
+
779
+ $language_data = array();
780
+
781
+ foreach ( $files as $file ) {
782
+ if ( 0 !== strpos( $file, $slug ) ) {
783
+ continue;
784
+ }
785
+
786
+ if ( '.' === $file[0] || is_dir( WP_LANG_DIR . "{$dir}/{$file}" ) ) {
787
+ continue;
788
+ }
789
+
790
+ if ( substr( $file, -3 ) !== '.po' ) {
791
+ continue;
792
+ }
793
+
794
+ if ( ! preg_match( '/(?:(.+)-)?([a-z]{2,3}(?:_[A-Z]{2})?(?:_[a-z0-9]+)?).po/', $file, $match ) ) {
795
+ continue;
796
+ }
797
+
798
+ if ( ! in_array( substr( $file, 0, -3 ) . '.mo', $files ) ) {
799
+ continue;
800
+ }
801
+
802
+ list( , $textdomain, $language ) = $match;
803
+
804
+ if ( '' === $textdomain ) {
805
+ $textdomain = 'default';
806
+ }
807
+
808
+ $language_data[ $textdomain ][ $language ] = wp_get_pomo_file_data( WP_LANG_DIR . "{$dir}/{$file}" );
809
+ }
810
+
811
+ return $language_data;
812
+ }
813
+
814
  /**
815
  * Updates information on the "View version x.x details" page with custom data.
816
  *
874
  }*/
875
  }
876
 
877
+ $plugin_version = $this->_fs->get_plugin_version();
878
+
879
  // Get plugin's newest update.
880
+ $new_version = $this->get_latest_download_details( $is_addon ? $addon->id : false, $plugin_version );
881
 
882
  if ( ! is_object( $new_version ) || empty( $new_version->version ) ) {
883
+ $data->version = $plugin_version;
884
  } else {
885
  if ( $is_addon ) {
886
  $data->name = $addon->title . ' ' . $this->_fs->get_text_inline( 'Add-On', 'addon' );
897
 
898
  $data->version = $new_version->version;
899
  $data->download_link = $new_version->url;
900
+
901
+ if ( isset( $new_version->readme ) && is_object( $new_version->readme ) ) {
902
+ $new_version_readme_data = $new_version->readme;
903
+ if ( isset( $new_version_readme_data->sections ) ) {
904
+ $new_version_readme_data->sections = (array) $new_version_readme_data->sections;
905
+ } else {
906
+ $new_version_readme_data->sections = array();
907
+ }
908
+
909
+ if ( isset( $data->sections ) ) {
910
+ if ( isset( $data->sections['screenshots'] ) ) {
911
+ $new_version_readme_data->sections['screenshots'] = $data->sections['screenshots'];
912
+ }
913
+
914
+ if ( isset( $data->sections['reviews'] ) ) {
915
+ $new_version_readme_data->sections['reviews'] = $data->sections['reviews'];
916
+ }
917
+ }
918
+
919
+ if ( isset( $new_version_readme_data->banners ) ) {
920
+ $new_version_readme_data->banners = (array) $new_version_readme_data->banners;
921
+ } else if ( isset( $data->banners ) ) {
922
+ $new_version_readme_data->banners = $data->banners;
923
+ }
924
+
925
+ $wp_org_sections = array(
926
+ 'author',
927
+ 'author_profile',
928
+ 'rating',
929
+ 'ratings',
930
+ 'num_ratings',
931
+ 'support_threads',
932
+ 'support_threads_resolved',
933
+ 'active_installs',
934
+ 'added',
935
+ 'homepage'
936
+ );
937
+
938
+ foreach ( $wp_org_sections as $wp_org_section ) {
939
+ if ( isset( $data->{$wp_org_section} ) ) {
940
+ $new_version_readme_data->{$wp_org_section} = $data->{$wp_org_section};
941
+ }
942
+ }
943
+
944
+ $data = $new_version_readme_data;
945
+ }
946
  }
947
 
948
  return $data;
953
  * @since 1.2.1.7
954
  *
955
  * @param number|bool $addon_id
956
+ * @param bool|string $newer_than Since 2.2.1
957
+ * @param bool|string $fetch_readme Since 2.2.1
958
  *
959
  * @return object
960
  */
961
+ private function get_latest_download_details( $addon_id = false, $newer_than = false, $fetch_readme = true ) {
962
+ return $this->_fs->_fetch_latest_version( $addon_id, true, WP_FS__TIME_24_HOURS_IN_SEC, $newer_than, $fetch_readme );
963
  }
964
 
965
  /**
969
  * @author Vova Feldman (@svovaf)
970
  * @since 1.2.1.6
971
  *
 
 
972
  * @return bool
973
  */
974
+ private function is_correct_folder_name() {
975
+ return ( $this->_fs->get_target_folder_name() == trim( dirname( $this->_fs->get_plugin_basename() ), '/\\' ) );
 
 
 
 
976
  }
977
 
978
  /**
1008
  $filename = basename( $basename );
1009
 
1010
  $new_basename = plugin_basename(
1011
+ trailingslashit( $this->_fs->is_premium() ? $this->_fs->get_premium_slug() : $this->_fs->get_slug() ) .
1012
  $filename
1013
  );
1014
 
1076
  );
1077
  }
1078
 
1079
+ $slug = $addon->slug;
1080
+ $premium_slug = $addon->premium_slug;
1081
+ $title = $addon->title . ' ' . $this->_fs->get_text_inline( 'Add-On', 'addon' );
1082
 
1083
  $is_addon = true;
1084
  } else {
1085
+ $slug = $this->_fs->get_slug();
1086
+ $premium_slug = $this->_fs->get_premium_slug();
1087
+ $title = $this->_fs->get_plugin_title() .
1088
+ ( $this->_fs->is_addon() ? ' ' . $this->_fs->get_text_inline( 'Add-On', 'addon' ) : '' );
1089
  }
1090
 
1091
  if ( $this->is_premium_plugin_active( $plugin_id ) ) {
1098
  );
1099
  }
1100
 
1101
+ $latest_version = $this->get_latest_download_details( $plugin_id, false, false );
1102
+ $target_folder = $premium_slug;
1103
 
1104
  // Prep variables for Plugin_Installer_Skin class.
1105
  $extra = array();
1138
  $upgrader = new Plugin_Upgrader( $skin );
1139
 
1140
  // Perform the action and install the plugin from the $source urldecode().
1141
+ add_filter( 'upgrader_source_selection', array( 'FS_Plugin_Updater', '_maybe_adjust_source_dir' ), 1, 3 );
1142
 
1143
  $install_result = $upgrader->install( $source );
1144
 
1145
+ remove_filter( 'upgrader_source_selection', array( 'FS_Plugin_Updater', '_maybe_adjust_source_dir' ), 1 );
1146
 
1147
  if ( is_wp_error( $install_result ) ) {
1148
  return array(
1232
  return is_plugin_active( $this->_fs->premium_plugin_basename() );
1233
  }
1234
 
1235
+ /**
1236
+ * Store the basename since it's not always available in the `_maybe_adjust_source_dir` method below.
1237
+ *
1238
+ * @author Leo Fajardo (@leorw)
1239
+ * @since 2.2.1
1240
+ *
1241
+ * @param bool|WP_Error $response Response.
1242
+ * @param array $hook_extra Extra arguments passed to hooked filters.
1243
+ *
1244
+ * @return bool|WP_Error
1245
+ */
1246
+ static function _store_basename_for_source_adjustment( $response, $hook_extra ) {
1247
+ if ( isset( $hook_extra['plugin'] ) ) {
1248
+ self::$_upgrade_basename = $hook_extra['plugin'];
1249
+ } else if ( isset( $hook_extra['theme'] ) ) {
1250
+ self::$_upgrade_basename = $hook_extra['theme'];
1251
+ } else {
1252
+ self::$_upgrade_basename = null;
1253
+ }
1254
+
1255
+ return $response;
1256
+ }
1257
+
1258
  /**
1259
  * Adjust the plugin directory name if necessary.
1260
  * Assumes plugin has a folder (not a single file plugin).
1266
  *
1267
  * @author Vova Feldman
1268
  * @since 1.2.1.7
1269
+ * @since 2.2.1 The method was converted to static since when the admin update bulk products via the Updates section, the logic applies the `upgrader_source_selection` filter for every product that is being updated.
1270
  *
1271
  * @param string $source Path to upgrade/zip-file-name.tmp/subdirectory/.
1272
  * @param string $remote_source Path to upgrade/zip-file-name.tmp.
1274
  *
1275
  * @return string|WP_Error
1276
  */
1277
+ static function _maybe_adjust_source_dir( $source, $remote_source, $upgrader ) {
1278
  if ( ! is_object( $GLOBALS['wp_filesystem'] ) ) {
1279
  return $source;
1280
  }
1281
 
1282
+ $basename = self::$_upgrade_basename;
1283
+ $is_theme = false;
1284
+
1285
  // Figure out what the slug is supposed to be.
1286
+ if ( isset( $upgrader->skin->options['extra'] ) ) {
1287
+ // Set by the auto-install logic.
1288
+ $desired_slug = $upgrader->skin->options['extra']['slug'];
1289
+ } else if ( ! empty( $basename ) ) {
1290
+ /**
1291
+ * If it doesn't end with ".php", it's a theme.
1292
+ *
1293
+ * @author Leo Fajardo (@leorw)
1294
+ * @since 2.2.1
1295
+ */
1296
+ $is_theme = ( ! fs_ends_with( $basename, '.php' ) );
1297
+
1298
+ $desired_slug = ( ! $is_theme ) ?
1299
+ dirname( $basename ) :
1300
+ // Theme slug
1301
+ $basename;
1302
+ } else {
1303
+ // Can't figure out the desired slug, stop the execution.
1304
+ return $source;
1305
+ }
1306
+
1307
+ if ( is_multisite() ) {
1308
+ /**
1309
+ * If we are running in a multisite environment and the product is not network activated,
1310
+ * the instance will not exist anyway. Therefore, try to update the source if necessary
1311
+ * regardless if the Freemius instance of the product exists or not.
1312
+ *
1313
+ * @author Vova Feldman
1314
+ */
1315
+ } else if ( ! empty( $basename ) ) {
1316
+ $fs = Freemius::get_instance_by_file(
1317
+ $basename,
1318
+ $is_theme ?
1319
+ WP_FS__MODULE_TYPE_THEME :
1320
+ WP_FS__MODULE_TYPE_PLUGIN
1321
+ );
1322
+
1323
+ if ( ! is_object( $fs ) ) {
1324
+ /**
1325
+ * If the Freemius instance does not exist on a non-multisite network environment, it means that:
1326
+ * 1. The product is not powered by Freemius; OR
1327
+ * 2. The product is not activated, therefore, we don't mind if after the update the folder name will change.
1328
+ *
1329
+ * @author Leo Fajardo (@leorw)
1330
+ * @since 2.2.1
1331
+ */
1332
+ return $source;
1333
+ }
1334
+ }
1335
 
1336
  $subdir_name = untrailingslashit( str_replace( trailingslashit( $remote_source ), '', $source ) );
1337
 
1341
 
1342
  if ( true === $GLOBALS['wp_filesystem']->move( $from_path, $to_path ) ) {
1343
  return trailingslashit( $to_path );
 
 
 
 
 
 
 
 
1344
  }
1345
+
1346
+ return new WP_Error(
1347
+ 'rename_failed',
1348
+ fs_text_inline( 'The remote plugin package does not contain a folder with the desired slug and renaming did not work.', 'module-package-rename-failure' ),
1349
+ array(
1350
+ 'found' => $subdir_name,
1351
+ 'expected' => $desired_slug
1352
+ )
1353
+ );
1354
  }
1355
 
1356
  return $source;
1357
  }
1358
 
1359
  #endregion
1360
+ }
freemius/includes/class-fs-storage.php CHANGED
@@ -132,9 +132,8 @@
132
  * @param int $blog_id
133
  */
134
  function set_site_blog_context( $blog_id ) {
 
135
  $this->_blog_id = $blog_id;
136
-
137
- $this->_storage = $this->get_site_storage( $this->_blog_id );
138
  }
139
 
140
  /**
@@ -374,6 +373,7 @@
374
  // When network activated, then network level.
375
  'install_timestamp' => 1,
376
  'prev_is_premium' => 1,
 
377
 
378
  // If not network activated OR delegated, then site level.
379
  'activation_timestamp' => 2,
132
  * @param int $blog_id
133
  */
134
  function set_site_blog_context( $blog_id ) {
135
+ $this->_storage = $this->get_site_storage( $blog_id );
136
  $this->_blog_id = $blog_id;
 
 
137
  }
138
 
139
  /**
373
  // When network activated, then network level.
374
  'install_timestamp' => 1,
375
  'prev_is_premium' => 1,
376
+ 'require_license_activation' => 1,
377
 
378
  // If not network activated OR delegated, then site level.
379
  'activation_timestamp' => 2,
freemius/includes/class-fs-user-lock.php CHANGED
@@ -1,126 +1,126 @@
1
- <?php
2
- /**
3
- * @package Freemius
4
- * @copyright Copyright (c) 2015, Freemius, Inc.
5
- * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
- * @since 2.1.0
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- /**
14
- * Class FS_User_Lock
15
- */
16
- class FS_User_Lock {
17
- /**
18
- * @var int
19
- */
20
- private $_wp_user_id;
21
- /**
22
- * @var int
23
- */
24
- private $_thread_id;
25
-
26
- #--------------------------------------------------------------------------------
27
- #region Singleton
28
- #--------------------------------------------------------------------------------
29
-
30
- /**
31
- * @var FS_User_Lock
32
- */
33
- private static $_instance;
34
-
35
- /**
36
- * @author Vova Feldman (@svovaf)
37
- * @since 2.1.0
38
- *
39
- * @return FS_User_Lock
40
- */
41
- static function instance() {
42
- if ( ! isset( self::$_instance ) ) {
43
- self::$_instance = new self();
44
- }
45
-
46
- return self::$_instance;
47
- }
48
-
49
- #endregion
50
-
51
- private function __construct() {
52
- $this->_wp_user_id = Freemius::get_current_wp_user_id();
53
- $this->_thread_id = mt_rand( 0, 32000 );
54
- }
55
-
56
-
57
- /**
58
- * Try to acquire lock. If the lock is already set or is being acquired by another locker, don't do anything.
59
- *
60
- * @author Vova Feldman (@svovaf)
61
- * @since 2.1.0
62
- *
63
- * @param int $expiration
64
- *
65
- * @return bool TRUE if successfully acquired lock.
66
- */
67
- function try_lock( $expiration = 0 ) {
68
- if ( $this->is_locked() ) {
69
- // Already locked.
70
- return false;
71
- }
72
-
73
- set_site_transient( "locked_{$this->_wp_user_id}", $this->_thread_id, $expiration );
74
-
75
- if ( $this->has_lock() ) {
76
- set_site_transient( "locked_{$this->_wp_user_id}", true, $expiration );
77
-
78
- return true;
79
- }
80
-
81
- return false;
82
- }
83
-
84
- /**
85
- * Acquire lock regardless if it's already acquired by another locker or not.
86
- *
87
- * @author Vova Feldman (@svovaf)
88
- * @since 2.1.0
89
- *
90
- * @param int $expiration
91
- */
92
- function lock( $expiration = 0 ) {
93
- set_site_transient( "locked_{$this->_wp_user_id}", true, $expiration );
94
- }
95
-
96
- /**
97
- * Checks if lock is currently acquired.
98
- *
99
- * @author Vova Feldman (@svovaf)
100
- * @since 2.1.0
101
- *
102
- * @return bool
103
- */
104
- function is_locked() {
105
- return ( false !== get_site_transient( "locked_{$this->_wp_user_id}" ) );
106
- }
107
-
108
- /**
109
- * Unlock the lock.
110
- *
111
- * @author Vova Feldman (@svovaf)
112
- * @since 2.1.0
113
- */
114
- function unlock() {
115
- delete_site_transient( "locked_{$this->_wp_user_id}" );
116
- }
117
-
118
- /**
119
- * Checks if lock is currently acquired by the current locker.
120
- *
121
- * @return bool
122
- */
123
- private function has_lock() {
124
- return ( $this->_thread_id == get_site_transient( "locked_{$this->_wp_user_id}" ) );
125
- }
126
  }
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2015, Freemius, Inc.
5
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
+ * @since 2.1.0
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ /**
14
+ * Class FS_User_Lock
15
+ */
16
+ class FS_User_Lock {
17
+ /**
18
+ * @var int
19
+ */
20
+ private $_wp_user_id;
21
+ /**
22
+ * @var int
23
+ */
24
+ private $_thread_id;
25
+
26
+ #--------------------------------------------------------------------------------
27
+ #region Singleton
28
+ #--------------------------------------------------------------------------------
29
+
30
+ /**
31
+ * @var FS_User_Lock
32
+ */
33
+ private static $_instance;
34
+
35
+ /**
36
+ * @author Vova Feldman (@svovaf)
37
+ * @since 2.1.0
38
+ *
39
+ * @return FS_User_Lock
40
+ */
41
+ static function instance() {
42
+ if ( ! isset( self::$_instance ) ) {
43
+ self::$_instance = new self();
44
+ }
45
+
46
+ return self::$_instance;
47
+ }
48
+
49
+ #endregion
50
+
51
+ private function __construct() {
52
+ $this->_wp_user_id = Freemius::get_current_wp_user_id();
53
+ $this->_thread_id = mt_rand( 0, 32000 );
54
+ }
55
+
56
+
57
+ /**
58
+ * Try to acquire lock. If the lock is already set or is being acquired by another locker, don't do anything.
59
+ *
60
+ * @author Vova Feldman (@svovaf)
61
+ * @since 2.1.0
62
+ *
63
+ * @param int $expiration
64
+ *
65
+ * @return bool TRUE if successfully acquired lock.
66
+ */
67
+ function try_lock( $expiration = 0 ) {
68
+ if ( $this->is_locked() ) {
69
+ // Already locked.
70
+ return false;
71
+ }
72
+
73
+ set_site_transient( "locked_{$this->_wp_user_id}", $this->_thread_id, $expiration );
74
+
75
+ if ( $this->has_lock() ) {
76
+ set_site_transient( "locked_{$this->_wp_user_id}", true, $expiration );
77
+
78
+ return true;
79
+ }
80
+
81
+ return false;
82
+ }
83
+
84
+ /**
85
+ * Acquire lock regardless if it's already acquired by another locker or not.
86
+ *
87
+ * @author Vova Feldman (@svovaf)
88
+ * @since 2.1.0
89
+ *
90
+ * @param int $expiration
91
+ */
92
+ function lock( $expiration = 0 ) {
93
+ set_site_transient( "locked_{$this->_wp_user_id}", true, $expiration );
94
+ }
95
+
96
+ /**
97
+ * Checks if lock is currently acquired.
98
+ *
99
+ * @author Vova Feldman (@svovaf)
100
+ * @since 2.1.0
101
+ *
102
+ * @return bool
103
+ */
104
+ function is_locked() {
105
+ return ( false !== get_site_transient( "locked_{$this->_wp_user_id}" ) );
106
+ }
107
+
108
+ /**
109
+ * Unlock the lock.
110
+ *
111
+ * @author Vova Feldman (@svovaf)
112
+ * @since 2.1.0
113
+ */
114
+ function unlock() {
115
+ delete_site_transient( "locked_{$this->_wp_user_id}" );
116
+ }
117
+
118
+ /**
119
+ * Checks if lock is currently acquired by the current locker.
120
+ *
121
+ * @return bool
122
+ */
123
+ private function has_lock() {
124
+ return ( $this->_thread_id == get_site_transient( "locked_{$this->_wp_user_id}" ) );
125
+ }
126
  }
freemius/includes/customizer/class-fs-customizer-upsell-control.php CHANGED
@@ -59,7 +59,7 @@
59
  $this->fs->get_upgrade_url();
60
 
61
  // Load features.
62
- $pricing = $this->fs->get_api_plugin_scope()->get( 'pricing.json' );
63
 
64
  if ( $this->fs->is_api_result_object( $pricing, 'plans' ) ) {
65
  // Add support features.
59
  $this->fs->get_upgrade_url();
60
 
61
  // Load features.
62
+ $pricing = $this->fs->get_api_plugin_scope()->get( $this->fs->add_show_pending( "pricing.json" ) );
63
 
64
  if ( $this->fs->is_api_result_object( $pricing, 'plans' ) ) {
65
  // Add support features.
freemius/includes/entities/class-fs-payment.php CHANGED
@@ -1,110 +1,110 @@
1
- <?php
2
- /**
3
- * @package Freemius
4
- * @copyright Copyright (c) 2016, Freemius, Inc.
5
- * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
- * @since 1.0.0
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- class FS_Payment extends FS_Entity {
14
-
15
- #region Properties
16
-
17
- /**
18
- * @var number
19
- */
20
- public $plugin_id;
21
- /**
22
- * @var number
23
- */
24
- public $user_id;
25
- /**
26
- * @var number
27
- */
28
- public $install_id;
29
- /**
30
- * @var number
31
- */
32
- public $subscription_id;
33
- /**
34
- * @var number
35
- */
36
- public $plan_id;
37
- /**
38
- * @var number
39
- */
40
- public $license_id;
41
- /**
42
- * @var float
43
- */
44
- public $gross;
45
- /**
46
- * @var number
47
- */
48
- public $bound_payment_id;
49
- /**
50
- * @var string
51
- */
52
- public $external_id;
53
- /**
54
- * @var string
55
- */
56
- public $gateway;
57
- /**
58
- * @var string ISO 3166-1 alpha-2 - two-letter country code.
59
- *
60
- * @link http://www.wikiwand.com/en/ISO_3166-1_alpha-2
61
- */
62
- public $country_code;
63
- /**
64
- * @var string
65
- */
66
- public $vat_id;
67
- /**
68
- * @var float Actual Tax / VAT in $$$
69
- */
70
- public $vat;
71
- /**
72
- * @var int Payment source.
73
- */
74
- public $source = 0;
75
-
76
- #endregion Properties
77
-
78
- /**
79
- * @param object|bool $payment
80
- */
81
- function __construct( $payment = false ) {
82
- parent::__construct( $payment );
83
- }
84
-
85
- static function get_type() {
86
- return 'payment';
87
- }
88
-
89
- /**
90
- * @author Vova Feldman (@svovaf)
91
- * @since 1.0.0
92
- *
93
- * @return bool
94
- */
95
- function is_refund() {
96
- return ( parent::is_valid_id( $this->bound_payment_id ) && 0 > $this->gross );
97
- }
98
-
99
- /**
100
- * Checks if the payment was migrated from another platform.
101
- *
102
- * @author Vova Feldman (@svovaf)
103
- * @since 2.0.2
104
- *
105
- * @return bool
106
- */
107
- function is_migrated() {
108
- return ( 0 != $this->source );
109
- }
110
  }
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2016, Freemius, Inc.
5
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
+ * @since 1.0.0
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ class FS_Payment extends FS_Entity {
14
+
15
+ #region Properties
16
+
17
+ /**
18
+ * @var number
19
+ */
20
+ public $plugin_id;
21
+ /**
22
+ * @var number
23
+ */
24
+ public $user_id;
25
+ /**
26
+ * @var number
27
+ */
28
+ public $install_id;
29
+ /**
30
+ * @var number
31
+ */
32
+ public $subscription_id;
33
+ /**
34
+ * @var number
35
+ */
36
+ public $plan_id;
37
+ /**
38
+ * @var number
39
+ */
40
+ public $license_id;
41
+ /**
42
+ * @var float
43
+ */
44
+ public $gross;
45
+ /**
46
+ * @var number
47
+ */
48
+ public $bound_payment_id;
49
+ /**
50
+ * @var string
51
+ */
52
+ public $external_id;
53
+ /**
54
+ * @var string
55
+ */
56
+ public $gateway;
57
+ /**
58
+ * @var string ISO 3166-1 alpha-2 - two-letter country code.
59
+ *
60
+ * @link http://www.wikiwand.com/en/ISO_3166-1_alpha-2
61
+ */
62
+ public $country_code;
63
+ /**
64
+ * @var string
65
+ */
66
+ public $vat_id;
67
+ /**
68
+ * @var float Actual Tax / VAT in $$$
69
+ */
70
+ public $vat;
71
+ /**
72
+ * @var int Payment source.
73
+ */
74
+ public $source = 0;
75
+
76
+ #endregion Properties
77
+
78
+ /**
79
+ * @param object|bool $payment
80
+ */
81
+ function __construct( $payment = false ) {
82
+ parent::__construct( $payment );
83
+ }
84
+
85
+ static function get_type() {
86
+ return 'payment';
87
+ }
88
+
89
+ /**
90
+ * @author Vova Feldman (@svovaf)
91
+ * @since 1.0.0
92
+ *
93
+ * @return bool
94
+ */
95
+ function is_refund() {
96
+ return ( parent::is_valid_id( $this->bound_payment_id ) && 0 > $this->gross );
97
+ }
98
+
99
+ /**
100
+ * Checks if the payment was migrated from another platform.
101
+ *
102
+ * @author Vova Feldman (@svovaf)
103
+ * @since 2.0.2
104
+ *
105
+ * @return bool
106
+ */
107
+ function is_migrated() {
108
+ return ( 0 != $this->source );
109
+ }
110
  }
freemius/includes/entities/class-fs-plugin.php CHANGED
@@ -24,6 +24,13 @@
24
  * @var string
25
  */
26
  public $slug;
 
 
 
 
 
 
 
27
  /**
28
  * @since 1.2.2
29
  *
@@ -67,6 +74,13 @@
67
  * @var bool
68
  */
69
  public $is_premium;
 
 
 
 
 
 
 
70
  /**
71
  * @since 1.0.9
72
  *
@@ -87,6 +101,14 @@
87
  $this->is_premium = false;
88
  $this->is_live = true;
89
 
 
 
 
 
 
 
 
 
90
  if ( isset( $plugin->info ) && is_object( $plugin->info ) ) {
91
  $this->info = new FS_Plugin_Info( $plugin->info );
92
  }
24
  * @var string
25
  */
26
  public $slug;
27
+ /**
28
+ * @author Leo Fajardo (@leorw)
29
+ * @since 2.2.1
30
+ *
31
+ * @var string
32
+ */
33
+ public $premium_slug;
34
  /**
35
  * @since 1.2.2
36
  *
74
  * @var bool
75
  */
76
  public $is_premium;
77
+ /**
78
+ * @author Leo Fajardo (@leorw)
79
+ * @since 2.2.1
80
+ *
81
+ * @var string
82
+ */
83
+ public $premium_suffix;
84
  /**
85
  * @since 1.0.9
86
  *
101
  $this->is_premium = false;
102
  $this->is_live = true;
103
 
104
+ if ( empty( $this->premium_slug ) && ! empty( $plugin->slug ) ) {
105
+ $this->premium_slug = "{$this->slug}-premium";
106
+ }
107
+
108
+ if ( empty( $this->premium_suffix ) ) {
109
+ $this->premium_suffix = '(Premium)';
110
+ }
111
+
112
  if ( isset( $plugin->info ) && is_object( $plugin->info ) ) {
113
  $this->info = new FS_Plugin_Info( $plugin->info );
114
  }
freemius/includes/entities/class-fs-site.php CHANGED
@@ -1,225 +1,230 @@
1
- <?php
2
- /**
3
- * @package Freemius
4
- * @copyright Copyright (c) 2015, Freemius, Inc.
5
- * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
- * @since 1.0.3
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- class FS_Site extends FS_Scope_Entity {
14
- /**
15
- * @var number
16
- */
17
- public $site_id;
18
- /**
19
- * @var number
20
- */
21
- public $plugin_id;
22
- /**
23
- * @var number
24
- */
25
- public $user_id;
26
- /**
27
- * @var string
28
- */
29
- public $title;
30
- /**
31
- * @var string
32
- */
33
- public $url;
34
- /**
35
- * @var string
36
- */
37
- public $version;
38
- /**
39
- * @var string E.g. en-GB
40
- */
41
- public $language;
42
- /**
43
- * @var string E.g. UTF-8
44
- */
45
- public $charset;
46
- /**
47
- * @var string Platform version (e.g WordPress version).
48
- */
49
- public $platform_version;
50
- /**
51
- * Freemius SDK version
52
- *
53
- * @author Leo Fajardo (@leorw)
54
- * @since 1.2.2
55
- *
56
- * @var string SDK version (e.g.: 1.2.2)
57
- */
58
- public $sdk_version;
59
- /**
60
- * @var string Programming language version (e.g PHP version).
61
- */
62
- public $programming_language_version;
63
- /**
64
- * @var number|null
65
- */
66
- public $plan_id;
67
- /**
68
- * @var number|null
69
- */
70
- public $license_id;
71
- /**
72
- * @var number|null
73
- */
74
- public $trial_plan_id;
75
- /**
76
- * @var string|null
77
- */
78
- public $trial_ends;
79
- /**
80
- * @since 1.0.9
81
- *
82
- * @var bool
83
- */
84
- public $is_premium = false;
85
- /**
86
- * @author Leo Fajardo (@leorw)
87
- *
88
- * @since 1.2.1.5
89
- *
90
- * @var bool
91
- */
92
- public $is_disconnected = false;
93
- /**
94
- * @since 2.0.0
95
- *
96
- * @var bool
97
- */
98
- public $is_active = true;
99
- /**
100
- * @since 2.0.0
101
- *
102
- * @var bool
103
- */
104
- public $is_uninstalled = false;
105
-
106
- /**
107
- * @param stdClass|bool $site
108
- */
109
- function __construct( $site = false ) {
110
- parent::__construct( $site );
111
-
112
- if ( is_object( $site ) ) {
113
- $this->plan_id = $site->plan_id;
114
- }
115
-
116
- if ( ! is_bool( $this->is_disconnected ) ) {
117
- $this->is_disconnected = false;
118
- }
119
- }
120
-
121
- static function get_type() {
122
- return 'install';
123
- }
124
-
125
- /**
126
- * @author Vova Feldman (@svovaf)
127
- * @since 2.0.0
128
- *
129
- * @param string $url
130
- *
131
- * @return bool
132
- */
133
- static function is_localhost_by_address( $url ) {
134
- if ( false !== strpos( $url, '127.0.0.1' ) ||
135
- false !== strpos( $url, 'localhost' )
136
- ) {
137
- return true;
138
- }
139
-
140
- if ( ! fs_starts_with( $url, 'http' ) ) {
141
- $url = 'http://' . $url;
142
- }
143
-
144
- $url_parts = parse_url( $url );
145
-
146
- $subdomain = $url_parts['host'];
147
-
148
- return (
149
- // Starts with.
150
- fs_starts_with( $subdomain, 'local.' ) ||
151
- fs_starts_with( $subdomain, 'dev.' ) ||
152
- fs_starts_with( $subdomain, 'test.' ) ||
153
- fs_starts_with( $subdomain, 'staging.' ) ||
154
-
155
- // Ends with.
156
- fs_ends_with( $subdomain, '.dev' ) ||
157
- fs_ends_with( $subdomain, '.test' ) ||
158
- fs_ends_with( $subdomain, '.staging' ) ||
159
- fs_ends_with( $subdomain, '.local' ) ||
160
- fs_ends_with( $subdomain, '.example' ) ||
161
- fs_ends_with( $subdomain, '.invalid' ) ||
162
- // GoDaddy test/dev.
163
- fs_ends_with( $subdomain, '.myftpupload.com' ) ||
164
- // ngrok tunneling.
165
- fs_ends_with( $subdomain, '.ngrok.io' ) ||
166
- // SiteGround staging.
167
- fs_starts_with( $subdomain, 'staging' ) ||
168
- // WPEngine staging.
169
- fs_ends_with( $subdomain, '.staging.wpengine.com' ) ||
170
- // Pantheon
171
- ( fs_ends_with($subdomain, 'pantheonsite.io') &&
172
- (fs_starts_with($subdomain, 'test-') || fs_starts_with($subdomain, 'dev-'))) ||
173
- // Cloudways
174
- fs_ends_with( $subdomain, '.cloudwaysapps.com' )
175
- );
176
- }
177
-
178
- function is_localhost() {
179
- return ( WP_FS__IS_LOCALHOST_FOR_SERVER || self::is_localhost_by_address( $this->url ) );
180
- }
181
-
182
- /**
183
- * Check if site in trial.
184
- *
185
- * @author Vova Feldman (@svovaf)
186
- * @since 1.0.9
187
- *
188
- * @return bool
189
- */
190
- function is_trial() {
191
- return is_numeric( $this->trial_plan_id ) && ( strtotime( $this->trial_ends ) > WP_FS__SCRIPT_START_TIME );
192
- }
193
-
194
- /**
195
- * Check if user already utilized the trial with the current install.
196
- *
197
- * @author Vova Feldman (@svovaf)
198
- * @since 1.0.9
199
- *
200
- * @return bool
201
- */
202
- function is_trial_utilized() {
203
- return is_numeric( $this->trial_plan_id );
204
- }
205
-
206
- /**
207
- * @author Vova Feldman (@svovaf)
208
- * @since 2.0.0
209
- *
210
- * @return bool
211
- */
212
- function is_tracking_allowed() {
213
- return ( true !== $this->is_disconnected );
214
- }
215
-
216
- /**
217
- * @author Vova Feldman (@svovaf)
218
- * @since 2.0.0
219
- *
220
- * @return bool
221
- */
222
- function is_tracking_prohibited() {
223
- return ! $this->is_tracking_allowed();
224
- }
 
 
 
 
 
225
  }
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2015, Freemius, Inc.
5
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
+ * @since 1.0.3
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ class FS_Site extends FS_Scope_Entity {
14
+ /**
15
+ * @var number
16
+ */
17
+ public $site_id;
18
+ /**
19
+ * @var number
20
+ */
21
+ public $plugin_id;
22
+ /**
23
+ * @var number
24
+ */
25
+ public $user_id;
26
+ /**
27
+ * @var string
28
+ */
29
+ public $title;
30
+ /**
31
+ * @var string
32
+ */
33
+ public $url;
34
+ /**
35
+ * @var string
36
+ */
37
+ public $version;
38
+ /**
39
+ * @var string E.g. en-GB
40
+ */
41
+ public $language;
42
+ /**
43
+ * @var string E.g. UTF-8
44
+ */
45
+ public $charset;
46
+ /**
47
+ * @var string Platform version (e.g WordPress version).
48
+ */
49
+ public $platform_version;
50
+ /**
51
+ * Freemius SDK version
52
+ *
53
+ * @author Leo Fajardo (@leorw)
54
+ * @since 1.2.2
55
+ *
56
+ * @var string SDK version (e.g.: 1.2.2)
57
+ */
58
+ public $sdk_version;
59
+ /**
60
+ * @var string Programming language version (e.g PHP version).
61
+ */
62
+ public $programming_language_version;
63
+ /**
64
+ * @var number|null
65
+ */
66
+ public $plan_id;
67
+ /**
68
+ * @var number|null
69
+ */
70
+ public $license_id;
71
+ /**
72
+ * @var number|null
73
+ */
74
+ public $trial_plan_id;
75
+ /**
76
+ * @var string|null
77
+ */
78
+ public $trial_ends;
79
+ /**
80
+ * @since 1.0.9
81
+ *
82
+ * @var bool
83
+ */
84
+ public $is_premium = false;
85
+ /**
86
+ * @author Leo Fajardo (@leorw)
87
+ *
88
+ * @since 1.2.1.5
89
+ *
90
+ * @var bool
91
+ */
92
+ public $is_disconnected = false;
93
+ /**
94
+ * @since 2.0.0
95
+ *
96
+ * @var bool
97
+ */
98
+ public $is_active = true;
99
+ /**
100
+ * @since 2.0.0
101
+ *
102
+ * @var bool
103
+ */
104
+ public $is_uninstalled = false;
105
+
106
+ /**
107
+ * @param stdClass|bool $site
108
+ */
109
+ function __construct( $site = false ) {
110
+ parent::__construct( $site );
111
+
112
+ if ( is_object( $site ) ) {
113
+ $this->plan_id = $site->plan_id;
114
+ }
115
+
116
+ if ( ! is_bool( $this->is_disconnected ) ) {
117
+ $this->is_disconnected = false;
118
+ }
119
+ }
120
+
121
+ static function get_type() {
122
+ return 'install';
123
+ }
124
+
125
+ /**
126
+ * @author Vova Feldman (@svovaf)
127
+ * @since 2.0.0
128
+ *
129
+ * @param string $url
130
+ *
131
+ * @return bool
132
+ */
133
+ static function is_localhost_by_address( $url ) {
134
+ if ( false !== strpos( $url, '127.0.0.1' ) ||
135
+ false !== strpos( $url, 'localhost' )
136
+ ) {
137
+ return true;
138
+ }
139
+
140
+ if ( ! fs_starts_with( $url, 'http' ) ) {
141
+ $url = 'http://' . $url;
142
+ }
143
+
144
+ $url_parts = parse_url( $url );
145
+
146
+ $subdomain = $url_parts['host'];
147
+
148
+ return (
149
+ // Starts with.
150
+ fs_starts_with( $subdomain, 'local.' ) ||
151
+ fs_starts_with( $subdomain, 'dev.' ) ||
152
+ fs_starts_with( $subdomain, 'test.' ) ||
153
+ fs_starts_with( $subdomain, 'stage.' ) ||
154
+ fs_starts_with( $subdomain, 'staging.' ) ||
155
+
156
+ // Ends with.
157
+ fs_ends_with( $subdomain, '.dev' ) ||
158
+ fs_ends_with( $subdomain, '.test' ) ||
159
+ fs_ends_with( $subdomain, '.staging' ) ||
160
+ fs_ends_with( $subdomain, '.local' ) ||
161
+ fs_ends_with( $subdomain, '.example' ) ||
162
+ fs_ends_with( $subdomain, '.invalid' ) ||
163
+ // GoDaddy test/dev.
164
+ fs_ends_with( $subdomain, '.myftpupload.com' ) ||
165
+ // ngrok tunneling.
166
+ fs_ends_with( $subdomain, '.ngrok.io' ) ||
167
+ // wpsandbox.
168
+ fs_ends_with( $subdomain, '.wpsandbox.pro' ) ||
169
+ // SiteGround staging.
170
+ fs_starts_with( $subdomain, 'staging' ) ||
171
+ // WPEngine staging.
172
+ fs_ends_with( $subdomain, '.staging.wpengine.com' ) ||
173
+ // Pantheon
174
+ ( fs_ends_with($subdomain, 'pantheonsite.io') &&
175
+ (fs_starts_with($subdomain, 'test-') || fs_starts_with($subdomain, 'dev-'))) ||
176
+ // Cloudways
177
+ fs_ends_with( $subdomain, '.cloudwaysapps.com' ) ||
178
+ // Kinsta
179
+ (fs_ends_with($subdomain, '.kinsta.com') && fs_starts_with($subdomain, 'staging-'))
180
+ );
181
+ }
182
+
183
+ function is_localhost() {
184
+ return ( WP_FS__IS_LOCALHOST_FOR_SERVER || self::is_localhost_by_address( $this->url ) );
185
+ }
186
+
187
+ /**
188
+ * Check if site in trial.
189
+ *
190
+ * @author Vova Feldman (@svovaf)
191
+ * @since 1.0.9
192
+ *
193
+ * @return bool
194
+ */
195
+ function is_trial() {
196
+ return is_numeric( $this->trial_plan_id ) && ( strtotime( $this->trial_ends ) > WP_FS__SCRIPT_START_TIME );
197
+ }
198
+
199
+ /**
200
+ * Check if user already utilized the trial with the current install.
201
+ *
202
+ * @author Vova Feldman (@svovaf)
203
+ * @since 1.0.9
204
+ *
205
+ * @return bool
206
+ */
207
+ function is_trial_utilized() {
208
+ return is_numeric( $this->trial_plan_id );
209
+ }
210
+
211
+ /**
212
+ * @author Vova Feldman (@svovaf)
213
+ * @since 2.0.0
214
+ *
215
+ * @return bool
216
+ */
217
+ function is_tracking_allowed() {
218
+ return ( true !== $this->is_disconnected );
219
+ }
220
+
221
+ /**
222
+ * @author Vova Feldman (@svovaf)
223
+ * @since 2.0.0
224
+ *
225
+ * @return bool
226
+ */
227
+ function is_tracking_prohibited() {
228
+ return ! $this->is_tracking_allowed();
229
+ }
230
  }
freemius/includes/fs-core-functions.php CHANGED
@@ -86,9 +86,25 @@
86
  function fs_asset_url( $asset_abs_path ) {
87
  $wp_content_dir = fs_normalize_path( WP_CONTENT_DIR );
88
  $asset_abs_path = fs_normalize_path( $asset_abs_path );
89
- $asset_rel_path = str_replace( $wp_content_dir, '', $asset_abs_path );
90
 
91
- $asset_url = content_url( fs_normalize_path( $asset_rel_path ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
 
93
  return $asset_url;
94
  }
@@ -709,6 +725,97 @@
709
  return $key;
710
  }
711
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
712
  /**
713
  * Get a translatable text override if exists, or `false`.
714
  *
@@ -746,7 +853,9 @@
746
 
747
  return false;
748
  }
 
749
 
 
750
  /**
751
  * Get a translatable text and its text domain.
752
  *
@@ -776,9 +885,9 @@
776
 
777
  return array( $text, $text_domain );
778
  }
 
779
 
780
- #region Private
781
-
782
  /**
783
  * Retrieve an inline translated text by key.
784
  *
@@ -801,33 +910,9 @@
801
 
802
  return $fn( $text, $text_domain );
803
  }
 
804
 
805
- /**
806
- * Retrieve an inline translated text by key with a context.
807
- *
808
- * @author Vova Feldman (@svovaf)
809
- * @since 1.2.3
810
- *
811
- * @param string $text Translatable string.
812
- * @param string $context Context information for the translators.
813
- * @param string $key String key for overrides.
814
- * @param string $slug Module slug for overrides.
815
- *
816
- * @return string
817
- *
818
- * @global $fs_text_overrides
819
- */
820
- function _fs_text_x_inline( $text, $context, $key = '', $slug = 'freemius' ) {
821
- list( $text, $text_domain ) = fs_text_and_domain( $text, $key, $slug );
822
-
823
- // Avoid misleading Theme Check warning.
824
- $fn = 'translate_with_gettext_context';
825
-
826
- return $fn( $text, $context, $text_domain );
827
- }
828
-
829
- #endregion
830
-
831
  /**
832
  * Retrieve an inline translated text by key.
833
  *
@@ -845,67 +930,6 @@
845
  function fs_text_inline( $text, $key = '', $slug = 'freemius' ) {
846
  return _fs_text_inline( $text, $key, $slug );
847
  }
848
-
849
- /**
850
- * Retrieve an inline translated text by key with a context.
851
- *
852
- * @author Vova Feldman (@svovaf)
853
- * @since 1.2.3
854
- *
855
- * @param string $text Translatable string.
856
- * @param string $context Context information for the translators.
857
- * @param string $key String key for overrides.
858
- * @param string $slug Module slug for overrides.
859
- *
860
- * @return string
861
- *
862
- * @global $fs_text_overrides
863
- */
864
- function fs_text_x_inline( $text, $context, $key = '', $slug = 'freemius' ) {
865
- return _fs_text_x_inline( $text, $context, $key, $slug );
866
- }
867
-
868
- /**
869
- * Output a translated text by key.
870
- *
871
- * @author Vova Feldman (@svovaf)
872
- * @since 1.2.1.7
873
- *
874
- * @param string $key
875
- * @param string $slug
876
- */
877
- function fs_echo( $key, $slug = 'freemius' ) {
878
- echo fs_text( $key, $slug );
879
- }
880
-
881
- /**
882
- * Output an inline translated text.
883
- *
884
- * @author Vova Feldman (@svovaf)
885
- * @since 1.2.3
886
- *
887
- * @param string $text Translatable string.
888
- * @param string $key String key for overrides.
889
- * @param string $slug Module slug for overrides.
890
- */
891
- function fs_echo_inline( $text, $key = '', $slug = 'freemius' ) {
892
- echo _fs_text_inline( $text, $key, $slug );
893
- }
894
-
895
- /**
896
- * Output an inline translated text with a context.
897
- *
898
- * @author Vova Feldman (@svovaf)
899
- * @since 1.2.3
900
- *
901
- * @param string $text Translatable string.
902
- * @param string $context Context information for the translators.
903
- * @param string $key String key for overrides.
904
- * @param string $slug Module slug for overrides.
905
- */
906
- function fs_echo_x_inline( $text, $context, $key = '', $slug = 'freemius' ) {
907
- echo _fs_text_x_inline( $text, $context, $key, $slug );
908
- }
909
  }
910
 
911
  if ( ! function_exists( 'fs_esc_attr' ) ) {
86
  function fs_asset_url( $asset_abs_path ) {
87
  $wp_content_dir = fs_normalize_path( WP_CONTENT_DIR );
88
  $asset_abs_path = fs_normalize_path( $asset_abs_path );
 
89
 
90
+ if ( 0 === strpos( $asset_abs_path, $wp_content_dir ) ) {
91
+ // Handle both theme and plugin assets located in the standard directories.
92
+ $asset_rel_path = str_replace( $wp_content_dir, '', $asset_abs_path );
93
+ $asset_url = content_url( fs_normalize_path( $asset_rel_path ) );
94
+ } else {
95
+ $wp_plugins_dir = fs_normalize_path( WP_PLUGIN_DIR );
96
+ if ( 0 === strpos( $asset_abs_path, $wp_plugins_dir ) ) {
97
+ // Try to handle plugin assets that may be located in a non-standard plugins directory.
98
+ $asset_rel_path = str_replace( $wp_plugins_dir, '', $asset_abs_path );
99
+ $asset_url = plugins_url( fs_normalize_path( $asset_rel_path ) );
100
+ } else {
101
+ // Try to handle theme assets that may be located in a non-standard themes directory.
102
+ $active_theme_stylesheet = get_stylesheet();
103
+ $wp_themes_dir = fs_normalize_path( trailingslashit( get_theme_root( $active_theme_stylesheet ) ) );
104
+ $asset_rel_path = str_replace( $wp_themes_dir, '', fs_normalize_path( $asset_abs_path ) );
105
+ $asset_url = trailingslashit( get_theme_root_uri( $active_theme_stylesheet ) ) . fs_normalize_path( $asset_rel_path );
106
+ }
107
+ }
108
 
109
  return $asset_url;
110
  }
725
  return $key;
726
  }
727
 
728
+ #region Private
729
+
730
+ /**
731
+ * Retrieve an inline translated text by key with a context.
732
+ *
733
+ * @author Vova Feldman (@svovaf)
734
+ * @since 1.2.3
735
+ *
736
+ * @param string $text Translatable string.
737
+ * @param string $context Context information for the translators.
738
+ * @param string $key String key for overrides.
739
+ * @param string $slug Module slug for overrides.
740
+ *
741
+ * @return string
742
+ *
743
+ * @global $fs_text_overrides
744
+ */
745
+ function _fs_text_x_inline( $text, $context, $key = '', $slug = 'freemius' ) {
746
+ list( $text, $text_domain ) = fs_text_and_domain( $text, $key, $slug );
747
+
748
+ // Avoid misleading Theme Check warning.
749
+ $fn = 'translate_with_gettext_context';
750
+
751
+ return $fn( $text, $context, $text_domain );
752
+ }
753
+
754
+ #endregion
755
+
756
+ /**
757
+ * Retrieve an inline translated text by key with a context.
758
+ *
759
+ * @author Vova Feldman (@svovaf)
760
+ * @since 1.2.3
761
+ *
762
+ * @param string $text Translatable string.
763
+ * @param string $context Context information for the translators.
764
+ * @param string $key String key for overrides.
765
+ * @param string $slug Module slug for overrides.
766
+ *
767
+ * @return string
768
+ *
769
+ * @global $fs_text_overrides
770
+ */
771
+ function fs_text_x_inline( $text, $context, $key = '', $slug = 'freemius' ) {
772
+ return _fs_text_x_inline( $text, $context, $key, $slug );
773
+ }
774
+
775
+ /**
776
+ * Output a translated text by key.
777
+ *
778
+ * @author Vova Feldman (@svovaf)
779
+ * @since 1.2.1.7
780
+ *
781
+ * @param string $key
782
+ * @param string $slug
783
+ */
784
+ function fs_echo( $key, $slug = 'freemius' ) {
785
+ echo fs_text( $key, $slug );
786
+ }
787
+
788
+ /**
789
+ * Output an inline translated text.
790
+ *
791
+ * @author Vova Feldman (@svovaf)
792
+ * @since 1.2.3
793
+ *
794
+ * @param string $text Translatable string.
795
+ * @param string $key String key for overrides.
796
+ * @param string $slug Module slug for overrides.
797
+ */
798
+ function fs_echo_inline( $text, $key = '', $slug = 'freemius' ) {
799
+ echo _fs_text_inline( $text, $key, $slug );
800
+ }
801
+
802
+ /**
803
+ * Output an inline translated text with a context.
804
+ *
805
+ * @author Vova Feldman (@svovaf)
806
+ * @since 1.2.3
807
+ *
808
+ * @param string $text Translatable string.
809
+ * @param string $context Context information for the translators.
810
+ * @param string $key String key for overrides.
811
+ * @param string $slug Module slug for overrides.
812
+ */
813
+ function fs_echo_x_inline( $text, $context, $key = '', $slug = 'freemius' ) {
814
+ echo _fs_text_x_inline( $text, $context, $key, $slug );
815
+ }
816
+ }
817
+
818
+ if ( ! function_exists( 'fs_text_override' ) ) {
819
  /**
820
  * Get a translatable text override if exists, or `false`.
821
  *
853
 
854
  return false;
855
  }
856
+ }
857
 
858
+ if ( ! function_exists( 'fs_text_and_domain' ) ) {
859
  /**
860
  * Get a translatable text and its text domain.
861
  *
885
 
886
  return array( $text, $text_domain );
887
  }
888
+ }
889
 
890
+ if ( ! function_exists( '_fs_text_inline' ) ) {
 
891
  /**
892
  * Retrieve an inline translated text by key.
893
  *
910
 
911
  return $fn( $text, $text_domain );
912
  }
913
+ }
914
 
915
+ if ( ! function_exists( 'fs_text_inline' ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
916
  /**
917
  * Retrieve an inline translated text by key.
918
  *
930
  function fs_text_inline( $text, $key = '', $slug = 'freemius' ) {
931
  return _fs_text_inline( $text, $key, $slug );
932
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
933
  }
934
 
935
  if ( ! function_exists( 'fs_esc_attr' ) ) {
freemius/includes/fs-essential-functions.php CHANGED
@@ -36,6 +36,8 @@
36
  }
37
  }
38
 
 
 
39
  #region Core Redirect (copied from BuddyPress) -----------------------------------------
40
 
41
  if ( ! function_exists( 'fs_redirect' ) ) {
@@ -273,11 +275,11 @@
273
  require_once ABSPATH . 'wp-admin/includes/plugin.php';
274
  }
275
 
276
- $all_plugins = get_plugins();
277
  $all_plugins_paths = array();
278
 
279
  // Get active plugin's main files real full names (might be symlinks).
280
- foreach ( $all_plugins as $relative_path => &$data ) {
281
  $all_plugins_paths[] = fs_normalize_path( realpath( WP_PLUGIN_DIR . '/' . $relative_path ) );
282
  }
283
 
36
  }
37
  }
38
 
39
+ require_once dirname( __FILE__ ) . '/supplements/fs-essential-functions-2.2.1.php';
40
+
41
  #region Core Redirect (copied from BuddyPress) -----------------------------------------
42
 
43
  if ( ! function_exists( 'fs_redirect' ) ) {
275
  require_once ABSPATH . 'wp-admin/includes/plugin.php';
276
  }
277
 
278
+ $all_plugins = fs_get_plugins( true );
279
  $all_plugins_paths = array();
280
 
281
  // Get active plugin's main files real full names (might be symlinks).
282
+ foreach ( $all_plugins as $relative_path => $data ) {
283
  $all_plugins_paths[] = fs_normalize_path( realpath( WP_PLUGIN_DIR . '/' . $relative_path ) );
284
  }
285
 
freemius/includes/fs-plugin-info-dialog.php CHANGED
@@ -64,7 +64,7 @@
64
  function _get_addon_info_filter( $data, $action = '', $args = null ) {
65
  $this->_logger->entrance();
66
 
67
- $parent_plugin_id = fs_request_get( 'parent_plugin_id', false );
68
 
69
  if ( $this->_fs->get_id() != $parent_plugin_id ||
70
  ( 'plugin_information' !== $action ) ||
@@ -101,7 +101,7 @@
101
  $has_features = false;
102
  $plans = false;
103
 
104
- $result = $this->_fs->get_api_plugin_scope()->get( "/addons/{$selected_addon->id}/pricing.json?type=visible" );
105
 
106
  if ( ! isset( $result->error ) ) {
107
  $plans = $result->plans;
@@ -142,6 +142,8 @@
142
  }
143
  }
144
 
 
 
145
  if ( ! $has_paid_plan && $selected_addon->is_wp_org_compliant ) {
146
  $repo_data = FS_Plugin_Updater::_fetch_plugin_info_from_repository(
147
  'plugin_information', (object) array(
@@ -165,11 +167,33 @@
165
  // Plugin is missing, not on Freemius nor WP.org.
166
  $data->wp_org_missing = true;
167
  }
 
 
168
  } else {
169
  $data->wp_org_missing = false;
170
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
171
  // Fetch latest version from Freemius.
172
- $latest = $this->_fs->_fetch_latest_version( $selected_addon->id );
 
 
 
 
 
173
 
174
  if ( $has_paid_plan ) {
175
  $data->checkout_link = $this->_fs->checkout_url();
@@ -183,12 +207,7 @@
183
 
184
  // Fetch as much as possible info from local files.
185
  $plugin_local_data = $this->_fs->get_plugin_data();
186
- $data->name = $selected_addon->title;
187
  $data->author = $plugin_local_data['Author'];
188
- $view_vars = array( 'plugin' => $selected_addon );
189
- $data->sections = array(
190
- 'description' => fs_get_template( '/plugin-info/description.php', $view_vars ),
191
- );
192
 
193
  if ( ! empty( $selected_addon->info->banner_url ) ) {
194
  $data->banners = array(
@@ -206,7 +225,7 @@
206
 
207
  if ( is_object( $latest ) ) {
208
  $data->version = $latest->version;
209
- $data->last_updated = ! is_null( $latest->updated ) ? $latest->updated : $latest->created;
210
  $data->requires = $latest->requires_platform_version;
211
  $data->tested = $latest->tested_up_to_version;
212
  } else {
@@ -217,6 +236,20 @@
217
  }
218
  }
219
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
220
  if ( $has_pricing ) {
221
  // Add plans to data.
222
  $data->plans = $plans;
@@ -950,7 +983,7 @@
950
  </li>
951
  <?php
952
  }
953
- if ( ! empty( $api->slug ) && empty( $api->is_wp_org_compliant ) ) {
954
  ?>
955
  <li><a target="_blank"
956
  href="https://wordpress.org/plugins/<?php echo $api->slug; ?>/"><?php fs_esc_html_echo_inline( 'WordPress.org Plugin Page', 'wp-org-plugin-page', $api->slug ) ?>
@@ -1094,7 +1127,7 @@
1094
  echo "</div>\n"; // #plugin-information-scrollable
1095
  echo "<div id='$tab-footer'>\n";
1096
 
1097
- if ( ! empty( $api->checkout_link ) ) {
1098
  echo $this->get_checkout_cta( $api );
1099
  }
1100
 
64
  function _get_addon_info_filter( $data, $action = '', $args = null ) {
65
  $this->_logger->entrance();
66
 
67
+ $parent_plugin_id = fs_request_get( 'parent_plugin_id', $this->_fs->get_id() );
68
 
69
  if ( $this->_fs->get_id() != $parent_plugin_id ||
70
  ( 'plugin_information' !== $action ) ||
101
  $has_features = false;
102
  $plans = false;
103
 
104
+ $result = $this->_fs->get_api_plugin_scope()->get( $this->_fs->add_show_pending( "/addons/{$selected_addon->id}/pricing.json?type=visible" ) );
105
 
106
  if ( ! isset( $result->error ) ) {
107
  $plans = $result->plans;
142
  }
143
  }
144
 
145
+ $latest = null;
146
+
147
  if ( ! $has_paid_plan && $selected_addon->is_wp_org_compliant ) {
148
  $repo_data = FS_Plugin_Updater::_fetch_plugin_info_from_repository(
149
  'plugin_information', (object) array(
167
  // Plugin is missing, not on Freemius nor WP.org.
168
  $data->wp_org_missing = true;
169
  }
170
+
171
+ $data->fs_missing = ( ! $has_free_plan || $data->wp_org_missing );
172
  } else {
173
  $data->wp_org_missing = false;
174
 
175
+ $current_addon_version = false;
176
+ if ( $this->_fs->is_addon_activated( $selected_addon->id ) ) {
177
+ $current_addon_version = $this->_fs->get_addon_instance( $selected_addon->id )->get_plugin_version();
178
+ } else if ( $this->_fs->is_addon_installed( $selected_addon->id ) ) {
179
+ $addon_plugin_data = get_plugin_data(
180
+ ( WP_PLUGIN_DIR . '/' . $this->_fs->get_addon_basename( $selected_addon->id ) ),
181
+ false,
182
+ false
183
+ );
184
+
185
+ if ( ! empty( $addon_plugin_data ) ) {
186
+ $current_addon_version = $addon_plugin_data['Version'];
187
+ }
188
+ }
189
+
190
  // Fetch latest version from Freemius.
191
+ $latest = $this->_fs->_fetch_latest_version(
192
+ $selected_addon->id,
193
+ true,
194
+ WP_FS__TIME_24_HOURS_IN_SEC,
195
+ $current_addon_version
196
+ );
197
 
198
  if ( $has_paid_plan ) {
199
  $data->checkout_link = $this->_fs->checkout_url();
207
 
208
  // Fetch as much as possible info from local files.
209
  $plugin_local_data = $this->_fs->get_plugin_data();
 
210
  $data->author = $plugin_local_data['Author'];
 
 
 
 
211
 
212
  if ( ! empty( $selected_addon->info->banner_url ) ) {
213
  $data->banners = array(
225
 
226
  if ( is_object( $latest ) ) {
227
  $data->version = $latest->version;
228
+ $data->last_updated = $latest->created;
229
  $data->requires = $latest->requires_platform_version;
230
  $data->tested = $latest->tested_up_to_version;
231
  } else {
236
  }
237
  }
238
 
239
+ $data->name = $selected_addon->title;
240
+ $view_vars = array( 'plugin' => $selected_addon );
241
+
242
+ if ( is_object( $latest ) && isset( $latest->readme ) && is_object( $latest->readme ) ) {
243
+ $latest_version_readme_data = $latest->readme;
244
+ if ( isset( $latest_version_readme_data->sections ) ) {
245
+ $data->sections = (array) $latest_version_readme_data->sections;
246
+ } else {
247
+ $data->sections = array();
248
+ }
249
+ }
250
+
251
+ $data->sections['description'] = fs_get_template( '/plugin-info/description.php', $view_vars );
252
+
253
  if ( $has_pricing ) {
254
  // Add plans to data.
255
  $data->plans = $plans;
983
  </li>
984
  <?php
985
  }
986
+ if ( ! empty( $api->slug ) && true == $api->is_wp_org_compliant ) {
987
  ?>
988
  <li><a target="_blank"
989
  href="https://wordpress.org/plugins/<?php echo $api->slug; ?>/"><?php fs_esc_html_echo_inline( 'WordPress.org Plugin Page', 'wp-org-plugin-page', $api->slug ) ?>
1127
  echo "</div>\n"; // #plugin-information-scrollable
1128
  echo "<div id='$tab-footer'>\n";
1129
 
1130
+ if ( $api->has_paid_plan && ! empty( $api->checkout_link ) ) {
1131
  echo $this->get_checkout_cta( $api );
1132
  }
1133
 
freemius/includes/i18n.php CHANGED
@@ -94,7 +94,7 @@
94
  'activate-x-now' => _fs_x( 'Complete "%s" Activation Now',
95
  '%s - plugin name. As complete "Jetpack" activation now' ),
96
  'few-plugin-tweaks' => _fs_text( 'We made a few tweaks to the %s, %s' ),
97
- 'optin-x-now' => _fs_text( 'Opt in to make "%s" Better!' ),
98
  'error' => _fs_text( 'Error' ),
99
  'failed-finding-main-path' => _fs_text( 'Freemius SDK couldn\'t find the plugin\'s main file. Please contact sdk@freemius.com with the current error.' ),
100
  'learn-more' => _fs_text( 'Learn more' ),
@@ -215,7 +215,7 @@
215
  'delete-account-confirm' => _fs_text( 'Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?' ),
216
  'downgrade-x-confirm' => _fs_text( 'Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s.' ),
217
  'cancel-trial-confirm' => _fs_text( 'Cancelling the trial will immediately block access to all premium features. Are you sure?' ),
218
- 'after-downgrade-non-blocking' => _fs_text( 'You can still enjoy all %s features but you will not have access to %s updates and support.' ),
219
  'after-downgrade-blocking' => _fs_text( 'Once your license expires you can still use the Free version but you will NOT have access to the %s features.' ),
220
  'proceed-confirmation' => _fs_text( 'Are you sure you want to proceed?' ),
221
  #endregion Account
@@ -600,4 +600,4 @@
600
  'not-compatible-warning' => _fs_text( 'This plugin has not been marked as compatible with your version of WordPress.' ),
601
  'newer-installed' => _fs_text( 'Newer Version (%s) Installed' ),
602
  'latest-installed' => _fs_text( 'Latest Version Installed' ),
603
- );
94
  'activate-x-now' => _fs_x( 'Complete "%s" Activation Now',
95
  '%s - plugin name. As complete "Jetpack" activation now' ),
96
  'few-plugin-tweaks' => _fs_text( 'We made a few tweaks to the %s, %s' ),
97
+ 'optin-x-now' => _fs_text( 'Opt in to make "%s" better!' ),
98
  'error' => _fs_text( 'Error' ),
99
  'failed-finding-main-path' => _fs_text( 'Freemius SDK couldn\'t find the plugin\'s main file. Please contact sdk@freemius.com with the current error.' ),
100
  'learn-more' => _fs_text( 'Learn more' ),
215
  'delete-account-confirm' => _fs_text( 'Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?' ),
216
  'downgrade-x-confirm' => _fs_text( 'Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s.' ),
217
  'cancel-trial-confirm' => _fs_text( 'Cancelling the trial will immediately block access to all premium features. Are you sure?' ),
218
+ 'after-downgrade-non-blocking' => _fs_text( 'You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support.' ),
219
  'after-downgrade-blocking' => _fs_text( 'Once your license expires you can still use the Free version but you will NOT have access to the %s features.' ),
220
  'proceed-confirmation' => _fs_text( 'Are you sure you want to proceed?' ),
221
  #endregion Account
600
  'not-compatible-warning' => _fs_text( 'This plugin has not been marked as compatible with your version of WordPress.' ),
601
  'newer-installed' => _fs_text( 'Newer Version (%s) Installed' ),
602
  'latest-installed' => _fs_text( 'Latest Version Installed' ),
603
+ );
freemius/includes/managers/class-fs-admin-menu-manager.php CHANGED
@@ -181,11 +181,6 @@
181
 
182
  // @deprecated
183
  $this->_type = $this->get_option( $menu, 'type', 'page' );
184
-
185
- $this->_first_time_path = $this->get_option( $menu, 'first-path', false );
186
- if ( ! empty( $this->_first_time_path ) && is_string( $this->_first_time_path ) ) {
187
- $this->_first_time_path = admin_url( $this->_first_time_path, 'admin' );
188
- }
189
  }
190
 
191
  $this->_is_override_exact = $this->get_bool_option( $menu, 'override_exact' );
@@ -208,6 +203,11 @@
208
  // 'page'
209
  // ) );
210
  }
 
 
 
 
 
211
  }
212
  }
213
 
@@ -280,6 +280,18 @@
280
  return $this->_network_menu_exists;
281
  }
282
 
 
 
 
 
 
 
 
 
 
 
 
 
283
  /**
284
  * @author Vova Feldman (@svovaf)
285
  * @since 1.1.3
181
 
182
  // @deprecated
183
  $this->_type = $this->get_option( $menu, 'type', 'page' );
 
 
 
 
 
184
  }
185
 
186
  $this->_is_override_exact = $this->get_bool_option( $menu, 'override_exact' );
203
  // 'page'
204
  // ) );
205
  }
206
+
207
+ $this->_first_time_path = $this->get_option( $menu, 'first-path', false );
208
+ if ( ! empty( $this->_first_time_path ) && is_string( $this->_first_time_path ) ) {
209
+ $this->_first_time_path = admin_url( $this->_first_time_path, 'admin' );
210
+ }
211
  }
212
  }
213
 
280
  return $this->_network_menu_exists;
281
  }
282
 
283
+ /**
284
+ * @author Leo Fajardo (@leorw)
285
+ *
286
+ * @param string $menu_slug
287
+ *
288
+ * @since 2.1.3
289
+ */
290
+ function set_slug_and_network_menu_exists_flag($menu_slug ) {
291
+ $this->_menu_slug = $menu_slug;
292
+ $this->_network_menu_exists = false;
293
+ }
294
+
295
  /**
296
  * @author Vova Feldman (@svovaf)
297
  * @since 1.1.3
freemius/includes/managers/class-fs-admin-notice-manager.php CHANGED
@@ -219,6 +219,9 @@
219
  return;
220
  }
221
 
 
 
 
222
  foreach ( $this->_notices as $id => $msg ) {
223
  if ( isset( $msg['wp_user_id'] ) && is_numeric( $msg['wp_user_id'] ) ) {
224
  if ( get_current_user_id() != $msg['wp_user_id'] ) {
@@ -226,6 +229,49 @@
226
  }
227
  }
228
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  fs_require_template( 'admin-notice.php', $msg );
230
 
231
  if ( $msg['sticky'] ) {
@@ -244,6 +290,34 @@
244
  fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
245
  }
246
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
247
  /**
248
  * Add admin message to admin messages queue, and hook to admin_notices / all_admin_notices if not yet hooked.
249
  *
219
  return;
220
  }
221
 
222
+
223
+ $show_admin_notices = ( ! $this->is_gutenberg_page() );
224
+
225
  foreach ( $this->_notices as $id => $msg ) {
226
  if ( isset( $msg['wp_user_id'] ) && is_numeric( $msg['wp_user_id'] ) ) {
227
  if ( get_current_user_id() != $msg['wp_user_id'] ) {
229
  }
230
  }
231
 
232
+ /**
233
+ * Added a filter to control the visibility of admin notices.
234
+ *
235
+ * Usage example:
236
+ *
237
+ * /**
238
+ * * @param bool $show
239
+ * * @param array $msg {
240
+ * * @var string $message The actual message.
241
+ * * @var string $title An optional message title.
242
+ * * @var string $type The type of the message ('success', 'update', 'warning', 'promotion').
243
+ * * @var string $id The unique identifier of the message.
244
+ * * @var string $manager_id The unique identifier of the notices manager. For plugins it would be the plugin's slug, for themes - `<slug>-theme`.
245
+ * * @var string $plugin The product's title.
246
+ * * @var string $wp_user_id An optional WP user ID that this admin notice is for.
247
+ * * }
248
+ * *
249
+ * * @return bool
250
+ * *\/
251
+ * function my_custom_show_admin_notice( $show, $msg ) {
252
+ * if ('trial_promotion' != $msg['id']) {
253
+ * return false;
254
+ * }
255
+ *
256
+ * return $show;
257
+ * }
258
+ *
259
+ * my_fs()->add_filter( 'show_admin_notice', 'my_custom_show_admin_notice', 10, 2 );
260
+ *
261
+ * @author Vova Feldman
262
+ * @since 2.2.0
263
+ */
264
+ $show_notice = call_user_func_array( 'fs_apply_filter', array(
265
+ $this->_module_unique_affix,
266
+ 'show_admin_notice',
267
+ $show_admin_notices,
268
+ $msg
269
+ ) );
270
+
271
+ if ( true !== $show_notice ) {
272
+ continue;
273
+ }
274
+
275
  fs_require_template( 'admin-notice.php', $msg );
276
 
277
  if ( $msg['sticky'] ) {
290
  fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
291
  }
292
 
293
+ /**
294
+ * Check if the current page is the Gutenberg block editor.
295
+ *
296
+ * @author Vova Feldman (@svovaf)
297
+ * @since 2.2.3
298
+ *
299
+ * @return bool
300
+ */
301
+ function is_gutenberg_page() {
302
+ if ( function_exists( 'is_gutenberg_page' ) &&
303
+ is_gutenberg_page()
304
+ ) {
305
+ // The Gutenberg plugin is on.
306
+ return true;
307
+ }
308
+
309
+ $current_screen = get_current_screen();
310
+
311
+ if ( method_exists( $current_screen, 'is_block_editor' ) &&
312
+ $current_screen->is_block_editor()
313
+ ) {
314
+ // Gutenberg page on 5+.
315
+ return true;
316
+ }
317
+
318
+ return false;
319
+ }
320
+
321
  /**
322
  * Add admin message to admin messages queue, and hook to admin_notices / all_admin_notices if not yet hooked.
323
  *
freemius/includes/managers/class-fs-gdpr-manager.php CHANGED
@@ -1,202 +1,202 @@
1
- <?php
2
- /**
3
- * @package Freemius
4
- * @copyright Copyright (c) 2015, Freemius, Inc.
5
- * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
- * @since 2.1.0
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- class FS_GDPR_Manager {
14
- /**
15
- * @var FS_Option_Manager
16
- */
17
- private $_storage;
18
- /**
19
- * @var array {
20
- * @type bool $required Are GDPR rules apply on the current context admin.
21
- * @type bool $show_opt_in_notice Should the marketing and offers opt-in message be shown to the admin or not. If not set, defaults to `true`.
22
- * @type int $notice_shown_at Last time the special GDPR opt-in message was shown to the current admin.
23
- * }
24
- */
25
- private $_data;
26
- /**
27
- * @var int
28
- */
29
- private $_wp_user_id;
30
- /**
31
- * @var string
32
- */
33
- private $_option_name;
34
- /**
35
- * @var FS_Admin_Notices
36
- */
37
- private $_notices;
38
-
39
- #--------------------------------------------------------------------------------
40
- #region Singleton
41
- #--------------------------------------------------------------------------------
42
-
43
- /**
44
- * @var FS_GDPR_Manager
45
- */
46
- private static $_instance;
47
-
48
- /**
49
- * @return FS_GDPR_Manager
50
- */
51
- public static function instance() {
52
- if ( ! isset( self::$_instance ) ) {
53
- self::$_instance = new self();
54
- }
55
-
56
- return self::$_instance;
57
- }
58
-
59
- #endregion
60
-
61
- private function __construct() {
62
- $this->_storage = FS_Option_Manager::get_manager( WP_FS__GDPR_OPTION_NAME, true, true );
63
- $this->_wp_user_id = Freemius::get_current_wp_user_id();
64
- $this->_option_name = "u{$this->_wp_user_id}";
65
- $this->_data = $this->_storage->get_option( $this->_option_name, array() );
66
- $this->_notices = FS_Admin_Notices::instance( 'all_admins', '', '', true );
67
-
68
- if ( ! is_array( $this->_data ) ) {
69
- $this->_data = array();
70
- }
71
- }
72
-
73
- /**
74
- * Update a GDPR option for the current admin and store it.
75
- *
76
- * @author Vova Feldman (@svovaf)
77
- * @since 2.1.0
78
- *
79
- * @param string $name
80
- * @param mixed $value
81
- */
82
- private function update_option( $name, $value ) {
83
- $this->_data[ $name ] = $value;
84
-
85
- $this->_storage->set_option( $this->_option_name, $this->_data, true );
86
- }
87
-
88
- /**
89
- * @author Leo Fajardo (@leorw)
90
- * @since 2.1.0
91
- *
92
- * @return bool|null
93
- */
94
- public function is_required() {
95
- return isset( $this->_data['required'] ) ?
96
- $this->_data['required'] :
97
- null;
98
- }
99
-
100
- /**
101
- * @author Leo Fajardo (@leorw)
102
- * @since 2.1.0
103
- *
104
- * @param bool $is_required
105
- */
106
- public function store_is_required( $is_required ) {
107
- $this->update_option( 'required', $is_required );
108
- }
109
-
110
- /**
111
- * Checks if the GDPR opt-in sticky notice is currently shown.
112
- *
113
- * @author Vova Feldman (@svovaf)
114
- * @since 2.1.0
115
- *
116
- * @return bool
117
- */
118
- public function is_opt_in_notice_shown() {
119
- return $this->_notices->has_sticky( "gdpr_optin_actions_{$this->_wp_user_id}", true );
120
- }
121
-
122
- /**
123
- * Remove the GDPR opt-in sticky notice.
124
- *
125
- * @author Vova Feldman (@svovaf)
126
- * @since 2.1.0
127
- */
128
- public function remove_opt_in_notice() {
129
- $this->_notices->remove_sticky( "gdpr_optin_actions_{$this->_wp_user_id}", true );
130
-
131
- $this->disable_opt_in_notice();
132
- }
133
-
134
- /**
135
- * Prevents the opt-in message from being added/shown.
136
- *
137
- * @author Leo Fajardo (@leorw)
138
- * @since 2.1.0
139
- */
140
- public function disable_opt_in_notice() {
141
- $this->update_option( 'show_opt_in_notice', false );
142
- }
143
-
144
- /**
145
- * Checks if a GDPR opt-in message needs to be shown to the current admin.
146
- *
147
- * @author Vova Feldman (@svovaf)
148
- * @since 2.1.0
149
- *
150
- * @return bool
151
- */
152
- public function should_show_opt_in_notice() {
153
- return (
154
- ! isset( $this->_data['show_opt_in_notice'] ) ||
155
- true === $this->_data['show_opt_in_notice']
156
- );
157
- }
158
-
159
- /**
160
- * Get the last time the GDPR opt-in notice was shown.
161
- *
162
- * @author Vova Feldman (@svovaf)
163
- * @since 2.1.0
164
- *
165
- * @return false|int
166
- */
167
- public function last_time_notice_was_shown() {
168
- return isset( $this->_data['notice_shown_at'] ) ?
169
- $this->_data['notice_shown_at'] :
170
- false;
171
- }
172
-
173
- /**
174
- * Update the timestamp of the last time the GDPR opt-in message was shown to now.
175
- *
176
- * @author Vova Feldman (@svovaf)
177
- * @since 2.1.0
178
- */
179
- public function notice_was_just_shown() {
180
- $this->update_option( 'notice_shown_at', WP_FS__SCRIPT_START_TIME );
181
- }
182
-
183
- /**
184
- * @param string $message
185
- * @param string|null $plugin_title
186
- *
187
- * @author Vova Feldman (@svovaf)
188
- * @since 2.1.0
189
- */
190
- public function add_opt_in_sticky_notice( $message, $plugin_title = null ) {
191
- $this->_notices->add_sticky(
192
- $message,
193
- "gdpr_optin_actions_{$this->_wp_user_id}",
194
- '',
195
- 'promotion',
196
- true,
197
- $this->_wp_user_id,
198
- $plugin_title,
199
- true
200
- );
201
- }
202
  }
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2015, Freemius, Inc.
5
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
+ * @since 2.1.0
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ class FS_GDPR_Manager {
14
+ /**
15
+ * @var FS_Option_Manager
16
+ */
17
+ private $_storage;
18
+ /**
19
+ * @var array {
20
+ * @type bool $required Are GDPR rules apply on the current context admin.
21
+ * @type bool $show_opt_in_notice Should the marketing and offers opt-in message be shown to the admin or not. If not set, defaults to `true`.
22
+ * @type int $notice_shown_at Last time the special GDPR opt-in message was shown to the current admin.
23
+ * }
24
+ */
25
+ private $_data;
26
+ /**
27
+ * @var int
28
+ */
29
+ private $_wp_user_id;
30
+ /**
31
+ * @var string
32
+ */
33
+ private $_option_name;
34
+ /**
35
+ * @var FS_Admin_Notices
36
+ */
37
+ private $_notices;
38
+
39
+ #--------------------------------------------------------------------------------
40
+ #region Singleton
41
+ #--------------------------------------------------------------------------------
42
+
43
+ /**
44
+ * @var FS_GDPR_Manager
45
+ */
46
+ private static $_instance;
47
+
48
+ /**
49
+ * @return FS_GDPR_Manager
50
+ */
51
+ public static function instance() {
52
+ if ( ! isset( self::$_instance ) ) {
53
+ self::$_instance = new self();
54
+ }
55
+
56
+ return self::$_instance;
57
+ }
58
+
59
+ #endregion
60
+
61
+ private function __construct() {
62
+ $this->_storage = FS_Option_Manager::get_manager( WP_FS__GDPR_OPTION_NAME, true, true );
63
+ $this->_wp_user_id = Freemius::get_current_wp_user_id();
64
+ $this->_option_name = "u{$this->_wp_user_id}";
65
+ $this->_data = $this->_storage->get_option( $this->_option_name, array() );
66
+ $this->_notices = FS_Admin_Notices::instance( 'all_admins', '', '', true );
67
+
68
+ if ( ! is_array( $this->_data ) ) {
69
+ $this->_data = array();
70
+ }
71
+ }
72
+
73
+ /**
74
+ * Update a GDPR option for the current admin and store it.
75
+ *
76
+ * @author Vova Feldman (@svovaf)
77
+ * @since 2.1.0
78
+ *
79
+ * @param string $name
80
+ * @param mixed $value
81
+ */
82
+ private function update_option( $name, $value ) {
83
+ $this->_data[ $name ] = $value;
84
+
85
+ $this->_storage->set_option( $this->_option_name, $this->_data, true );
86
+ }
87
+
88
+ /**
89
+ * @author Leo Fajardo (@leorw)
90
+ * @since 2.1.0
91
+ *
92
+ * @return bool|null
93
+ */
94
+ public function is_required() {
95
+ return isset( $this->_data['required'] ) ?
96
+ $this->_data['required'] :
97
+ null;
98
+ }
99
+
100
+ /**
101
+ * @author Leo Fajardo (@leorw)
102
+ * @since 2.1.0
103
+ *
104
+ * @param bool $is_required
105
+ */
106
+ public function store_is_required( $is_required ) {
107
+ $this->update_option( 'required', $is_required );
108
+ }
109
+
110
+ /**
111
+ * Checks if the GDPR opt-in sticky notice is currently shown.
112
+ *
113
+ * @author Vova Feldman (@svovaf)
114
+ * @since 2.1.0
115
+ *
116
+ * @return bool
117
+ */
118
+ public function is_opt_in_notice_shown() {
119
+ return $this->_notices->has_sticky( "gdpr_optin_actions_{$this->_wp_user_id}", true );
120
+ }
121
+
122
+ /**
123
+ * Remove the GDPR opt-in sticky notice.
124
+ *
125
+ * @author Vova Feldman (@svovaf)
126
+ * @since 2.1.0
127
+ */
128
+ public function remove_opt_in_notice() {
129
+ $this->_notices->remove_sticky( "gdpr_optin_actions_{$this->_wp_user_id}", true );
130
+
131
+ $this->disable_opt_in_notice();
132
+ }
133
+
134
+ /**
135
+ * Prevents the opt-in message from being added/shown.
136
+ *
137
+ * @author Leo Fajardo (@leorw)
138
+ * @since 2.1.0
139
+ */
140
+ public function disable_opt_in_notice() {
141
+ $this->update_option( 'show_opt_in_notice', false );
142
+ }
143
+
144
+ /**
145
+ * Checks if a GDPR opt-in message needs to be shown to the current admin.
146
+ *
147
+ * @author Vova Feldman (@svovaf)
148
+ * @since 2.1.0
149
+ *
150
+ * @return bool
151
+ */
152
+ public function should_show_opt_in_notice() {
153
+ return (
154
+ ! isset( $this->_data['show_opt_in_notice'] ) ||
155
+ true === $this->_data['show_opt_in_notice']
156
+ );
157
+ }
158
+
159
+ /**
160
+ * Get the last time the GDPR opt-in notice was shown.
161
+ *
162
+ * @author Vova Feldman (@svovaf)
163
+ * @since 2.1.0
164
+ *
165
+ * @return false|int
166
+ */
167
+ public function last_time_notice_was_shown() {
168
+ return isset( $this->_data['notice_shown_at'] ) ?
169
+ $this->_data['notice_shown_at'] :
170
+ false;
171
+ }
172
+
173
+ /**
174
+ * Update the timestamp of the last time the GDPR opt-in message was shown to now.
175
+ *
176
+ * @author Vova Feldman (@svovaf)
177
+ * @since 2.1.0
178
+ */
179
+ public function notice_was_just_shown() {
180
+ $this->update_option( 'notice_shown_at', WP_FS__SCRIPT_START_TIME );
181
+ }
182
+
183
+ /**
184
+ * @param string $message
185
+ * @param string|null $plugin_title
186
+ *
187
+ * @author Vova Feldman (@svovaf)
188
+ * @since 2.1.0
189
+ */
190
+ public function add_opt_in_sticky_notice( $message, $plugin_title = null ) {
191
+ $this->_notices->add_sticky(
192
+ $message,
193
+ "gdpr_optin_actions_{$this->_wp_user_id}",
194
+ '',
195
+ 'promotion',
196
+ true,
197
+ $this->_wp_user_id,
198
+ $plugin_title,
199
+ true
200
+ );
201
+ }
202
  }
freemius/includes/supplements/fs-essential-functions-1.1.7.1.php CHANGED
@@ -26,16 +26,12 @@
26
  * If the user changes the main plugin's file name, the file_exists()
27
  * will catch it.
28
  */
29
- if ( ! function_exists( 'get_plugins' ) ) {
30
- require_once ABSPATH . 'wp-admin/includes/plugin.php';
31
- }
32
-
33
- $all_plugins = get_plugins();
34
 
35
  $file_real_path = fs_normalize_path( realpath( $file ) );
36
 
37
  // Get active plugin's main files real full names (might be symlinks).
38
- foreach ( $all_plugins as $relative_path => &$data ) {
39
  if ( 0 === strpos( $file_real_path, fs_normalize_path( dirname( realpath( WP_PLUGIN_DIR . '/' . $relative_path ) ) ) ) ) {
40
  if ( '.' !== dirname( trailingslashit( $relative_path ) ) ) {
41
  return $relative_path;
26
  * If the user changes the main plugin's file name, the file_exists()
27
  * will catch it.
28
  */
29
+ $all_plugins = fs_get_plugins( true );
 
 
 
 
30
 
31
  $file_real_path = fs_normalize_path( realpath( $file ) );
32
 
33
  // Get active plugin's main files real full names (might be symlinks).
34
+ foreach ( $all_plugins as $relative_path => $data ) {
35
  if ( 0 === strpos( $file_real_path, fs_normalize_path( dirname( realpath( WP_PLUGIN_DIR . '/' . $relative_path ) ) ) ) ) {
36
  if ( '.' !== dirname( trailingslashit( $relative_path ) ) ) {
37
  return $relative_path;
freemius/includes/supplements/fs-essential-functions-2.2.1.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2015, Freemius, Inc.
5
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
+ * @since 2.2.1
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ if ( ! function_exists( 'fs_get_plugins' ) ) {
14
+ /**
15
+ * @author Leo Fajardo (@leorw)
16
+ * @since 2.2.1
17
+ *
18
+ * @param bool $delete_cache
19
+ *
20
+ * @return array
21
+ */
22
+ function fs_get_plugins( $delete_cache = false ) {
23
+ $cached_plugins = wp_cache_get( 'plugins', 'plugins' );
24
+ if ( ! is_array( $cached_plugins ) ) {
25
+ $cached_plugins = array();
26
+ }
27
+
28
+ $plugin_folder = '';
29
+ if ( isset( $cached_plugins[ $plugin_folder ] ) ) {
30
+ $plugins = $cached_plugins[ $plugin_folder ];
31
+ } else {
32
+ if ( ! function_exists( 'get_plugins' ) ) {
33
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
34
+ }
35
+
36
+ $plugins = get_plugins();
37
+
38
+ if ( $delete_cache && is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
39
+ wp_cache_delete( 'plugins', 'plugins' );
40
+ }
41
+ }
42
+
43
+ return $plugins;
44
+ }
45
+ }
freemius/languages/freemius-da_DK.mo CHANGED
Binary file
freemius/languages/freemius-da_DK.po CHANGED
@@ -1,12 +1,2434 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: \n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: \n"
6
- "PO-Revision-Date: \n"
7
- "Last-Translator: \n"
8
- "Language: \n"
9
- "Language-Team: \n"
10
- "Content-Type: \n"
11
- "Content-Transfer-Encoding: \n"
12
- "Plural-Forms: \n"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2019 freemius
2
+ # This file is distributed under the same license as the freemius package.
3
+ # Translators:
4
+ # Joachim Jensen, 2016-2018
5
+ # Lars Koudal, 2018
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: WordPress SDK\n"
9
+ "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
10
+ "POT-Creation-Date: \n"
11
+ "PO-Revision-Date: 2018-11-25 07:22+0000\n"
12
+ "Last-Translator: Vova Feldman <vova@freemius.com>\n"
13
+ "Language: da_DK\n"
14
+ "Language-Team: Danish (Denmark) (http://www.transifex.com/freemius/wordpress-sdk/language/da_DK/)\n"
15
+ "Content-Type: text/plain; charset=UTF-8\n"
16
+ "Content-Transfer-Encoding: 8bit\n"
17
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
+ "MIME-Version: 1.0\n"
19
+ "X-Poedit-Basepath: ..\n"
20
+ "X-Poedit-KeywordsList: get_text_inline;fs_text_inline;fs_echo_inline;fs_esc_js_inline;fs_esc_attr_inline;fs_esc_attr_echo_inline;fs_esc_html_inline;fs_esc_html_echo_inline;get_text_x_inline:1,2c;fs_text_x_inline:1,2c;fs_echo_x_inline:1,2c;fs_esc_attr_x_inline:1,2c;fs_esc_js_x_inline:1,2c;fs_esc_js_echo_x_inline:1,2c;fs_esc_html_x_inline:1,2c;fs_esc_html_echo_x_inline:1,2c\n"
21
+ "X-Poedit-SearchPath-0: .\n"
22
+ "X-Poedit-SearchPathExcluded-0: *.js\n"
23
+ "X-Poedit-SourceCharset: UTF-8\n"
24
+
25
+ #: includes/class-freemius.php:1688
26
+ msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
27
+ msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
28
+
29
+ #: includes/class-freemius.php:1690
30
+ msgid "Error"
31
+ msgstr "Fejl"
32
+
33
+ #: includes/class-freemius.php:2011
34
+ msgid "I found a better %s"
35
+ msgstr "Jeg fandt et bedre %s"
36
+
37
+ #: includes/class-freemius.php:2013
38
+ msgid "What's the %s's name?"
39
+ msgstr "Hvad er navnet på %s?"
40
+
41
+ #: includes/class-freemius.php:2019
42
+ msgid "It's a temporary %s. I'm just debugging an issue."
43
+ msgstr "Det er en midlertidig %s. Jeg er i gang med fejlrettelser."
44
+
45
+ #: includes/class-freemius.php:2021
46
+ msgid "Deactivation"
47
+ msgstr "Deaktivering"
48
+
49
+ #: includes/class-freemius.php:2022
50
+ msgid "Theme Switch"
51
+ msgstr "Temaskift"
52
+
53
+ #: includes/class-freemius.php2031, templates/forms/resend-key.php:24
54
+ msgid "Other"
55
+ msgstr "Andet"
56
+
57
+ #: includes/class-freemius.php:2039
58
+ msgid "I no longer need the %s"
59
+ msgstr "Jeg har ikke længere brug for %s"
60
+
61
+ #: includes/class-freemius.php:2046
62
+ msgid "I only needed the %s for a short period"
63
+ msgstr "Jeg behøvede kun %s i en kort periode"
64
+
65
+ #: includes/class-freemius.php:2052
66
+ msgid "The %s broke my site"
67
+ msgstr "%s ødelagde min webside"
68
+
69
+ #: includes/class-freemius.php:2059
70
+ msgid "The %s suddenly stopped working"
71
+ msgstr "%s stoppede pludseligt med at virke"
72
+
73
+ #: includes/class-freemius.php:2069
74
+ msgid "I can't pay for it anymore"
75
+ msgstr "Jeg kan ikke længere betale for det"
76
+
77
+ #: includes/class-freemius.php:2071
78
+ msgid "What price would you feel comfortable paying?"
79
+ msgstr "Hvilken pris ville du foretrække at betale?"
80
+
81
+ #: includes/class-freemius.php:2077
82
+ msgid "I don't like to share my information with you"
83
+ msgstr "Jeg har ikke lyst til at dele mine informationer med jer"
84
+
85
+ #: includes/class-freemius.php:2098
86
+ msgid "The %s didn't work"
87
+ msgstr "%s virkede ikke"
88
+
89
+ #: includes/class-freemius.php:2108
90
+ msgid "I couldn't understand how to make it work"
91
+ msgstr "Jeg forstod ikke, hvordan jeg skulle få det til at fungere."
92
+
93
+ #: includes/class-freemius.php:2116
94
+ msgid "The %s is great, but I need specific feature that you don't support"
95
+ msgstr "%s er godt, men jeg har brug for en specifik feature, som ikke understøttes"
96
+
97
+ #: includes/class-freemius.php:2118
98
+ msgid "What feature?"
99
+ msgstr "Hvilken feature?"
100
+
101
+ #: includes/class-freemius.php:2122
102
+ msgid "The %s is not working"
103
+ msgstr "%s virker ikke"
104
+
105
+ #: includes/class-freemius.php:2124
106
+ msgid "Kindly share what didn't work so we can fix it for future users..."
107
+ msgstr "Kindly share what didn't work so we can fix it for future users..."
108
+
109
+ #: includes/class-freemius.php:2128
110
+ msgid "It's not what I was looking for"
111
+ msgstr "Det er ikke, hvad jeg søgte"
112
+
113
+ #: includes/class-freemius.php:2130
114
+ msgid "What you've been looking for?"
115
+ msgstr "Hvad har du ledt efter?"
116
+
117
+ #: includes/class-freemius.php:2134
118
+ msgid "The %s didn't work as expected"
119
+ msgstr "%s virkede ikke som forventet"
120
+
121
+ #: includes/class-freemius.php:2136
122
+ msgid "What did you expect?"
123
+ msgstr "Hvad forventede du?"
124
+
125
+ #: includes/class-freemius.php2942, templates/debug.php:20
126
+ msgid "Freemius Debug"
127
+ msgstr "Freemius Debug"
128
+
129
+ #: includes/class-freemius.php:3670
130
+ msgid "I don't know what is cURL or how to install it, help me!"
131
+ msgstr "Jeg ved ikke hvad cURL er, eller hvordan jeg installerer det. Hjælp mig!"
132
+
133
+ #: includes/class-freemius.php:3672
134
+ msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
135
+ msgstr "Vi vil kontakte din udbyder og løse problemet. Når vi har opdatinger i sagen, vil vi følge op med en email til dig på %s."
136
+
137
+ #: includes/class-freemius.php:3679
138
+ msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
139
+ msgstr "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
140
+
141
+ #: includes/class-freemius.php:3784
142
+ msgid "Yes - do your thing"
143
+ msgstr "Ja - fortsæt bare"
144
+
145
+ #: includes/class-freemius.php:3789
146
+ msgid "No - just deactivate"
147
+ msgstr "Nej - bare deaktiver"
148
+
149
+ #: includes/class-freemius.php3834, includes/class-freemius.php4343,
150
+ #: includes/class-freemius.php5442, includes/class-freemius.php11545,
151
+ #: includes/class-freemius.php14916, includes/class-freemius.php14968,
152
+ #: includes/class-freemius.php15030, includes/class-freemius.php17263,
153
+ #: includes/class-freemius.php17273, includes/class-freemius.php17882,
154
+ #: includes/class-freemius.php18742, includes/class-freemius.php18857,
155
+ #: includes/class-freemius.php19001, templates/add-ons.php:43
156
+ msgctxt "exclamation"
157
+ msgid "Oops"
158
+ msgstr "Ups"
159
+
160
+ #: includes/class-freemius.php:3903
161
+ msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
162
+ msgstr "Tak fordi du giver os en chance for at fixe det! En besked er lige blevet sendt til vores tekniske personale. Vi vil vende tilbage, så snart der er nyt om %s. Vi sætter pris på din tålmodighed."
163
+
164
+ #: includes/class-freemius.php:4340
165
+ msgctxt "addonX cannot run without pluginY"
166
+ msgid "%s cannot run without %s."
167
+ msgstr "%s virker ikke uden %s."
168
+
169
+ #: includes/class-freemius.php:4341
170
+ msgctxt "addonX cannot run..."
171
+ msgid "%s cannot run without the plugin."
172
+ msgstr "%s virker ikke uden pluginnet."
173
+
174
+ #: includes/class-freemius.php4487, includes/class-freemius.php4512,
175
+ #: includes/class-freemius.php:17953
176
+ msgid "Unexpected API error. Please contact the %s's author with the following error."
177
+ msgstr "Unexpected API error. Please contact the %s's author with the following error."
178
+
179
+ #: includes/class-freemius.php:5130
180
+ msgid "Premium %s version was successfully activated."
181
+ msgstr "Premium-versionen af %s blev aktiveret."
182
+
183
+ #: includes/class-freemius.php5142, includes/class-freemius.php:7004
184
+ msgctxt ""
185
+ msgid "W00t"
186
+ msgstr "W00t"
187
+
188
+ #: includes/class-freemius.php:5157
189
+ msgid "You have a %s license."
190
+ msgstr "Du har en %s licens."
191
+
192
+ #: includes/class-freemius.php5161, includes/class-freemius.php14337,
193
+ #: includes/class-freemius.php14348, includes/class-freemius.php17177,
194
+ #: includes/class-freemius.php17491, includes/class-freemius.php17557,
195
+ #: includes/class-freemius.php:17707
196
+ msgctxt "interjection expressing joy or exuberance"
197
+ msgid "Yee-haw"
198
+ msgstr "Yee-haw"
199
+
200
+ #: includes/class-freemius.php:5425
201
+ msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
202
+ msgstr "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
203
+
204
+ #: includes/class-freemius.php:5429
205
+ msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
206
+ msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
207
+
208
+ #: includes/class-freemius.php5438, templates/add-ons.php103,
209
+ #: templates/account/partials/addon.php:288
210
+ msgid "More information about %s"
211
+ msgstr "Mere information om %s"
212
+
213
+ #: includes/class-freemius.php:5439
214
+ msgid "Purchase License"
215
+ msgstr "Køb licens"
216
+
217
+ #: includes/class-freemius.php6372, templates/connect.php:163
218
+ msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
219
+ msgstr "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
220
+
221
+ #: includes/class-freemius.php:6376
222
+ msgid "start the trial"
223
+ msgstr "start prøveperioden"
224
+
225
+ #: includes/class-freemius.php6377, templates/connect.php:167
226
+ msgid "complete the install"
227
+ msgstr "færdiggør installeringen"
228
+
229
+ #: includes/class-freemius.php:6490
230
+ msgid "You are just one step away - %s"
231
+ msgstr "Du mangler kun ét skridt - %s"
232
+
233
+ #: includes/class-freemius.php:6493
234
+ msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
235
+ msgid "Complete \"%s\" Activation Now"
236
+ msgstr "Færdiggør aktivering af \"%s\" nu"
237
+
238
+ #: includes/class-freemius.php:6571
239
+ msgid "We made a few tweaks to the %s, %s"
240
+ msgstr "Vi har foretaget nogle rettelser til %s, %s"
241
+
242
+ #: includes/class-freemius.php:6575
243
+ msgid "Opt in to make \"%s\" better!"
244
+ msgstr "Opt in to make \"%s\" better!"
245
+
246
+ #: includes/class-freemius.php:7003
247
+ msgid "The upgrade of %s was successfully completed."
248
+ msgstr "Opgraderingen af %s blev fuldendt."
249
+
250
+ #: includes/class-freemius.php8925, includes/class-fs-plugin-updater.php886,
251
+ #: includes/class-fs-plugin-updater.php1081,
252
+ #: includes/class-fs-plugin-updater.php1088,
253
+ #: templates/auto-installation.php:32
254
+ msgid "Add-On"
255
+ msgstr "Tilføjelse"
256
+
257
+ #: includes/class-freemius.php8927, templates/debug.php359,
258
+ #: templates/debug.php:520
259
+ msgid "Plugin"
260
+ msgstr "Plugin"
261
+
262
+ #: includes/class-freemius.php8928, templates/debug.php359,
263
+ #: templates/debug.php520, templates/forms/deactivation/form.php:67
264
+ msgid "Theme"
265
+ msgstr "Tema"
266
+
267
+ #: includes/class-freemius.php:11412
268
+ msgid "Invalid site details collection."
269
+ msgstr "Invalid site details collection."
270
+
271
+ #: includes/class-freemius.php:11532
272
+ msgid "We couldn't find your email address in the system, are you sure it's the right address?"
273
+ msgstr "Vi kunne ikke finde din e-mailadresse i systemet, er du sikker på, det er den rigtige adresse?"
274
+
275
+ #: includes/class-freemius.php:11534
276
+ msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
277
+ msgstr "Vi kan ikke finde nogen aktive licenser knyttet til den e-mailadresse, er du sikker på, det er den rigtige adresse?"
278
+
279
+ #: includes/class-freemius.php:11808
280
+ msgid "Account is pending activation."
281
+ msgstr "Konto afventer aktivering."
282
+
283
+ #: includes/class-freemius.php11920,
284
+ #: templates/forms/premium-versions-upgrade-handler.php:47
285
+ msgid "Buy a license now"
286
+ msgstr "Buy a license now"
287
+
288
+ #: includes/class-freemius.php11932,
289
+ #: templates/forms/premium-versions-upgrade-handler.php:46
290
+ msgid "Renew your license now"
291
+ msgstr "Renew your license now"
292
+
293
+ #: includes/class-freemius.php:11936
294
+ msgid "%s to access version %s security & feature updates, and support."
295
+ msgstr "%s to access version %s security & feature updates, and support."
296
+
297
+ #: includes/class-freemius.php:14319
298
+ msgid "%s activation was successfully completed."
299
+ msgstr "Aktivering af %s blev gennemført."
300
+
301
+ #: includes/class-freemius.php:14333
302
+ msgid "Your account was successfully activated with the %s plan."
303
+ msgstr "Din konto blev aktiveret med planen %s."
304
+
305
+ #: includes/class-freemius.php14344, includes/class-freemius.php:17553
306
+ msgid "Your trial has been successfully started."
307
+ msgstr "Din prøveperiode er begyndt."
308
+
309
+ #: includes/class-freemius.php14914, includes/class-freemius.php14966,
310
+ #: includes/class-freemius.php:15028
311
+ msgid "Couldn't activate %s."
312
+ msgstr "Kunne ikke aktivere %s."
313
+
314
+ #: includes/class-freemius.php14915, includes/class-freemius.php14967,
315
+ #: includes/class-freemius.php:15029
316
+ msgid "Please contact us with the following message:"
317
+ msgstr "Kontakt os venligst med følgende besked:"
318
+
319
+ #: includes/class-freemius.php15378, includes/class-freemius.php:19839
320
+ msgid "Upgrade"
321
+ msgstr "Opgrader"
322
+
323
+ #: includes/class-freemius.php:15384
324
+ msgid "Start Trial"
325
+ msgstr "Start prøveperiode"
326
+
327
+ #: includes/class-freemius.php:15386
328
+ msgid "Pricing"
329
+ msgstr "Priser"
330
+
331
+ #: includes/class-freemius.php15448, includes/class-freemius.php:15450
332
+ msgid "Affiliation"
333
+ msgstr "Affiliation"
334
+
335
+ #: includes/class-freemius.php15478, includes/class-freemius.php15480,
336
+ #: templates/account.php150, templates/debug.php:324
337
+ msgid "Account"
338
+ msgstr "Konto"
339
+
340
+ #: includes/class-freemius.php15493, includes/class-freemius.php15495,
341
+ #: includes/customizer/class-fs-customizer-support-section.php:60
342
+ msgid "Contact Us"
343
+ msgstr "Kontakt os"
344
+
345
+ #: includes/class-freemius.php15505, includes/class-freemius.php15507,
346
+ #: includes/class-freemius.php19849, templates/account.php100,
347
+ #: templates/account/partials/addon.php:41
348
+ msgid "Add-Ons"
349
+ msgstr "Tilføjelser"
350
+
351
+ #: includes/class-freemius.php:15541
352
+ msgctxt "ASCII arrow left icon"
353
+ msgid "&#x2190;"
354
+ msgstr "&#x2190;"
355
+
356
+ #: includes/class-freemius.php:15541
357
+ msgctxt "ASCII arrow right icon"
358
+ msgid "&#x27a4;"
359
+ msgstr "&#x27a4;"
360
+
361
+ #: includes/class-freemius.php15543, templates/pricing.php:97
362
+ msgctxt "noun"
363
+ msgid "Pricing"
364
+ msgstr "Priser"
365
+
366
+ #: includes/class-freemius.php15756,
367
+ #: includes/customizer/class-fs-customizer-support-section.php:67
368
+ msgid "Support Forum"
369
+ msgstr "Supportforum"
370
+
371
+ #: includes/class-freemius.php:16542
372
+ msgid "Your email has been successfully verified - you are AWESOME!"
373
+ msgstr "Din e-mailadresse er blevet verificeret - du er FOR SEJ!"
374
+
375
+ #: includes/class-freemius.php:16543
376
+ msgctxt "a positive response"
377
+ msgid "Right on"
378
+ msgstr "Sådan"
379
+
380
+ #: includes/class-freemius.php:17168
381
+ msgid "Your %s Add-on plan was successfully upgraded."
382
+ msgstr "Your %s Add-on plan was successfully upgraded."
383
+
384
+ #: includes/class-freemius.php:17170
385
+ msgid "%s Add-on was successfully purchased."
386
+ msgstr "Betalingen for tilføjelsen %s blev gennemført."
387
+
388
+ #: includes/class-freemius.php:17173
389
+ msgid "Download the latest version"
390
+ msgstr "Download den seneste version"
391
+
392
+ #: includes/class-freemius.php:17259
393
+ msgctxt "%1s - plugin title, %2s - API domain"
394
+ msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
395
+ msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
396
+
397
+ #: includes/class-freemius.php17262, includes/class-freemius.php17678,
398
+ #: includes/class-freemius.php:17755
399
+ msgid "Error received from the server:"
400
+ msgstr "Fejl modtager fra serveren:"
401
+
402
+ #: includes/class-freemius.php:17272
403
+ msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
404
+ msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
405
+
406
+ #: includes/class-freemius.php17454, includes/class-freemius.php17683,
407
+ #: includes/class-freemius.php17726, includes/class-freemius.php:17829
408
+ msgctxt ""
409
+ msgid "Hmm"
410
+ msgstr "Hmm"
411
+
412
+ #: includes/class-freemius.php:17467
413
+ msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
414
+ msgstr "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
415
+
416
+ #: includes/class-freemius.php17468, templates/account.php102,
417
+ #: templates/add-ons.php134, templates/account/partials/addon.php:43
418
+ msgctxt "trial period"
419
+ msgid "Trial"
420
+ msgstr "Prøveperiode"
421
+
422
+ #: includes/class-freemius.php:17473
423
+ msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
424
+ msgstr "Jeg har opgraderet min konto, men når jeg forsøger at synkronisere licensen, forbliver planen %s."
425
+
426
+ #: includes/class-freemius.php17477, includes/class-freemius.php:17535
427
+ msgid "Please contact us here"
428
+ msgstr "Kontakt os her"
429
+
430
+ #: includes/class-freemius.php:17487
431
+ msgid "Your plan was successfully upgraded."
432
+ msgstr "Din plan er blevet opgraderet."
433
+
434
+ #: includes/class-freemius.php:17505
435
+ msgid "Your plan was successfully changed to %s."
436
+ msgstr "Din plan er blevet ændret til %s."
437
+
438
+ #: includes/class-freemius.php:17521
439
+ msgid "Your license has expired. You can still continue using the free %s forever."
440
+ msgstr "Din licens er udløbet. Du kan stadig fortsætte med at benytte den gratis udgave af %s."
441
+
442
+ #: includes/class-freemius.php:17523
443
+ msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
444
+ msgstr "Din licens er udløbet. %1$sOpgrader nu%2$s for at fortsætte med at benytte %3$s uden forstyrrelser."
445
+
446
+ #: includes/class-freemius.php:17531
447
+ msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
448
+ msgstr "Din licens er blevet annulleret. Hvis du mener, dette er en fejl, så kontakt venligst support."
449
+
450
+ #: includes/class-freemius.php:17544
451
+ msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
452
+ msgstr "Din licens er udløbet. Du kan stadig benytte alle funktionerne i %s, men du bliver nødt til at fornye din licens for at få opdateringer og support."
453
+
454
+ #: includes/class-freemius.php:17567
455
+ msgid "Your free trial has expired. You can still continue using all our free features."
456
+ msgstr "Din gratis prøveperiode er udløbet. Du kan stadig benytte alle de gratis features."
457
+
458
+ #: includes/class-freemius.php:17569
459
+ msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
460
+ msgstr "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
461
+
462
+ #: includes/class-freemius.php:17674
463
+ msgid "It looks like the license could not be activated."
464
+ msgstr "Det ser ud til, at licensen ikke kunne aktiveres."
465
+
466
+ #: includes/class-freemius.php:17704
467
+ msgid "Your license was successfully activated."
468
+ msgstr "Din licens er blevet aktiveret."
469
+
470
+ #: includes/class-freemius.php:17730
471
+ msgid "It looks like your site currently doesn't have an active license."
472
+ msgstr "Det ser ud til, at dit websted endnu ikke har en aktiv licens."
473
+
474
+ #: includes/class-freemius.php:17754
475
+ msgid "It looks like the license deactivation failed."
476
+ msgstr "Det ser ud til, at licens-deaktiveringen mislykkedes."
477
+
478
+ #: includes/class-freemius.php:17782
479
+ msgid "Your license was successfully deactivated, you are back to the %s plan."
480
+ msgstr "Din licens blev deaktiveret, du er tilbage på planen %s."
481
+
482
+ #: includes/class-freemius.php:17783
483
+ msgid "O.K"
484
+ msgstr "O.K"
485
+
486
+ #: includes/class-freemius.php:17836
487
+ msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
488
+ msgstr "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
489
+
490
+ #: includes/class-freemius.php:17845
491
+ msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
492
+ msgstr "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
493
+
494
+ #: includes/class-freemius.php:17887
495
+ msgid "You are already running the %s in a trial mode."
496
+ msgstr "Du benytter allerede %s under en prøveperiode."
497
+
498
+ #: includes/class-freemius.php:17898
499
+ msgid "You already utilized a trial before."
500
+ msgstr "Du har allerede brugt din prøveperiode."
501
+
502
+ #: includes/class-freemius.php:17912
503
+ msgid "Plan %s do not exist, therefore, can't start a trial."
504
+ msgstr "Plan %s eksisterer ikke og kan derfor ikke starte prøveperiode."
505
+
506
+ #: includes/class-freemius.php:17923
507
+ msgid "Plan %s does not support a trial period."
508
+ msgstr "Plan %s understøtter ikke en prøveperiode."
509
+
510
+ #: includes/class-freemius.php:17934
511
+ msgid "None of the %s's plans supports a trial period."
512
+ msgstr "None of the %s's plans supports a trial period."
513
+
514
+ #: includes/class-freemius.php:17984
515
+ msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
516
+ msgstr "Det lader ikke til du er i en prøveperiode længere, så der er ikke noget at annullere :-)"
517
+
518
+ #: includes/class-freemius.php:18020
519
+ msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
520
+ msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
521
+
522
+ #: includes/class-freemius.php:18039
523
+ msgid "Your %s free trial was successfully cancelled."
524
+ msgstr "Din gratis prøveperiode for %s er blevet annulleret."
525
+
526
+ #: includes/class-freemius.php:18346
527
+ msgid "Version %s was released."
528
+ msgstr "Version %s er blevet udgivet."
529
+
530
+ #: includes/class-freemius.php:18346
531
+ msgid "Please download %s."
532
+ msgstr "Download venligst %s."
533
+
534
+ #: includes/class-freemius.php:18353
535
+ msgid "the latest %s version here"
536
+ msgstr "den seneste version af %s her"
537
+
538
+ #: includes/class-freemius.php:18358
539
+ msgid "New"
540
+ msgstr "Ny"
541
+
542
+ #: includes/class-freemius.php:18363
543
+ msgid "Seems like you got the latest release."
544
+ msgstr "Det ser ud til, at du har den seneste udgivelse."
545
+
546
+ #: includes/class-freemius.php:18364
547
+ msgid "You are all good!"
548
+ msgstr "Det var det!"
549
+
550
+ #: includes/class-freemius.php:18632
551
+ msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
552
+ msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
553
+
554
+ #: includes/class-freemius.php:18769
555
+ msgid "Site successfully opted in."
556
+ msgstr "Websted er tilmeldt."
557
+
558
+ #: includes/class-freemius.php18770, includes/class-freemius.php:19581
559
+ msgid "Awesome"
560
+ msgstr "Sejt"
561
+
562
+ #: includes/class-freemius.php18786, templates/forms/optout.php:32
563
+ msgid "We appreciate your help in making the %s better by letting us track some usage data."
564
+ msgstr "Vi sætter pris på din hjælp med at forbedre %s ved at lade os indsamle brugsdata."
565
+
566
+ #: includes/class-freemius.php:18787
567
+ msgid "Thank you!"
568
+ msgstr "Mange tak!"
569
+
570
+ #: includes/class-freemius.php:18794
571
+ msgid "We will no longer be sending any usage data of %s on %s to %s."
572
+ msgstr "Vi vil ikke længere indsende brugsdata af %s på %s til %s."
573
+
574
+ #: includes/class-freemius.php:18923
575
+ msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
576
+ msgstr "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
577
+
578
+ #: includes/class-freemius.php:18929
579
+ msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
580
+ msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
581
+
582
+ #: includes/class-freemius.php:18934
583
+ msgid "%s is the new owner of the account."
584
+ msgstr "%s er den nye ejer af kontoen."
585
+
586
+ #: includes/class-freemius.php:18936
587
+ msgctxt "as congratulations"
588
+ msgid "Congrats"
589
+ msgstr "Tillykke"
590
+
591
+ #: includes/class-freemius.php:18956
592
+ msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
593
+ msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered."
594
+
595
+ #: includes/class-freemius.php:18957
596
+ msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
597
+ msgstr "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
598
+
599
+ #: includes/class-freemius.php:18964
600
+ msgid "Change Ownership"
601
+ msgstr "Skift ejerskab"
602
+
603
+ #: includes/class-freemius.php:18972
604
+ msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
605
+ msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
606
+
607
+ #: includes/class-freemius.php:18984
608
+ msgid "Please provide your full name."
609
+ msgstr "Indtast venligst dit fulde navn."
610
+
611
+ #: includes/class-freemius.php:18989
612
+ msgid "Your name was successfully updated."
613
+ msgstr "Dit navn er blevet opdateret."
614
+
615
+ #: includes/class-freemius.php:19050
616
+ msgid "You have successfully updated your %s."
617
+ msgstr "Opdatering af %s blev gennemført."
618
+
619
+ #: includes/class-freemius.php:19190
620
+ msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
621
+ msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server."
622
+
623
+ #: includes/class-freemius.php:19191
624
+ msgctxt "advance notice of something that will need attention."
625
+ msgid "Heads up"
626
+ msgstr "Se her"
627
+
628
+ #: includes/class-freemius.php:19621
629
+ msgctxt "exclamation"
630
+ msgid "Hey"
631
+ msgstr "Hey"
632
+
633
+ #: includes/class-freemius.php:19621
634
+ msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
635
+ msgstr "Hvad syntes du om %s indtil videre? Test alle %s premium funktioner med en %d-dags gratis prøveperiode."
636
+
637
+ #: includes/class-freemius.php:19629
638
+ msgid "No commitment for %s days - cancel anytime!"
639
+ msgstr "Ingen bindinger i %s dage - annuller når som helst!"
640
+
641
+ #: includes/class-freemius.php:19630
642
+ msgid "No credit card required"
643
+ msgstr "Betalingskort ikke påkrævet"
644
+
645
+ #: includes/class-freemius.php19637, templates/forms/trial-start.php:53
646
+ msgctxt "call to action"
647
+ msgid "Start free trial"
648
+ msgstr "Start gratis prøveperiode"
649
+
650
+ #: includes/class-freemius.php:19714
651
+ msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
652
+ msgstr "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
653
+
654
+ #: includes/class-freemius.php:19723
655
+ msgid "Learn more"
656
+ msgstr "Læs mere"
657
+
658
+ #: includes/class-freemius.php19873, templates/account.php406,
659
+ #: templates/account.php509, templates/connect.php171,
660
+ #: templates/connect.php421, templates/forms/license-activation.php24,
661
+ #: templates/account/partials/addon.php:235
662
+ msgid "Activate License"
663
+ msgstr "Aktiver licens"
664
+
665
+ #: includes/class-freemius.php19874, templates/account.php469,
666
+ #: templates/account.php508, templates/account/partials/site.php:256
667
+ msgid "Change License"
668
+ msgstr "Skift licens"
669
+
670
+ #: includes/class-freemius.php19956, templates/account/partials/site.php:161
671
+ msgid "Opt Out"
672
+ msgstr "Frameld"
673
+
674
+ #: includes/class-freemius.php19958, includes/class-freemius.php19963,
675
+ #: templates/account/partials/site.php43,
676
+ #: templates/account/partials/site.php:161
677
+ msgid "Opt In"
678
+ msgstr "Tilmeld"
679
+
680
+ #: includes/class-freemius.php:20187
681
+ msgid " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s"
682
+ msgstr " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s"
683
+
684
+ #: includes/class-freemius.php:20195
685
+ msgid "Activate %s features"
686
+ msgstr "Activate %s features"
687
+
688
+ #: includes/class-freemius.php:20208
689
+ msgid "Please follow these steps to complete the upgrade"
690
+ msgstr "Følg venligst disse trin for at færdiggøre opgraderingen"
691
+
692
+ #: includes/class-freemius.php:20212
693
+ msgid "Download the latest %s version"
694
+ msgstr "Download den seneste version af %s"
695
+
696
+ #: includes/class-freemius.php:20216
697
+ msgid "Upload and activate the downloaded version"
698
+ msgstr "Upload og aktiver den downloadede version"
699
+
700
+ #: includes/class-freemius.php:20218
701
+ msgid "How to upload and activate?"
702
+ msgstr "Upload og aktivering, hvordan?"
703
+
704
+ #: includes/class-freemius.php:20352
705
+ msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
706
+ msgstr "%sClick here%s to choose the sites where you'd like to activate the license on."
707
+
708
+ #: includes/class-freemius.php:20513
709
+ msgid "Auto installation only works for opted-in users."
710
+ msgstr "Auto-installation fungerer kun for tilmeldte brugere."
711
+
712
+ #: includes/class-freemius.php20523, includes/class-freemius.php20556,
713
+ #: includes/class-fs-plugin-updater.php1060,
714
+ #: includes/class-fs-plugin-updater.php:1074
715
+ msgid "Invalid module ID."
716
+ msgstr "Ugyldigt modul-ID."
717
+
718
+ #: includes/class-freemius.php20532, includes/class-fs-plugin-updater.php:1096
719
+ msgid "Premium version already active."
720
+ msgstr "Premium version allerede aktiv."
721
+
722
+ #: includes/class-freemius.php:20539
723
+ msgid "You do not have a valid license to access the premium version."
724
+ msgstr "Du har ikke en gyldig licens til at benytte premium-versionen."
725
+
726
+ #: includes/class-freemius.php:20546
727
+ msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
728
+ msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version."
729
+
730
+ #: includes/class-freemius.php20564, includes/class-fs-plugin-updater.php:1095
731
+ msgid "Premium add-on version already installed."
732
+ msgstr "Premium tilføjelse er allerede installeret."
733
+
734
+ #: includes/class-freemius.php:20909
735
+ msgid "View paid features"
736
+ msgstr "Vis betalte features"
737
+
738
+ #: includes/class-freemius.php:21229
739
+ msgid "Thank you so much for using %s and its add-ons!"
740
+ msgstr "Thank you so much for using %s and its add-ons!"
741
+
742
+ #: includes/class-freemius.php:21230
743
+ msgid "Thank you so much for using %s!"
744
+ msgstr "Tak fordi du benytter %s!"
745
+
746
+ #: includes/class-freemius.php:21236
747
+ msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
748
+ msgstr "Du er allerede tilmeldt vores brugssporing, hvilket hjælper os med at forbedre %s."
749
+
750
+ #: includes/class-freemius.php:21240
751
+ msgid "Thank you so much for using our products!"
752
+ msgstr "Mange tak for at benytte vores produkter!"
753
+
754
+ #: includes/class-freemius.php:21241
755
+ msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
756
+ msgstr "Du er allerede tilmeldt vores brugssporing, hvilket hjælper os med at forbedre dem."
757
+
758
+ #: includes/class-freemius.php:21260
759
+ msgid "%s and its add-ons"
760
+ msgstr "%s og tilføjelser"
761
+
762
+ #: includes/class-freemius.php:21269
763
+ msgid "Products"
764
+ msgstr "Produkter"
765
+
766
+ #: includes/class-freemius.php21276, templates/connect.php:272
767
+ msgid "Yes"
768
+ msgstr "Ja"
769
+
770
+ #: includes/class-freemius.php21277, templates/connect.php:273
771
+ msgid "send me security & feature updates, educational content and offers."
772
+ msgstr "send mig sikkerheds- og feature-opdateringer, informativt indhold og tilbud."
773
+
774
+ #: includes/class-freemius.php21278, templates/connect.php:278
775
+ msgid "No"
776
+ msgstr "Nej"
777
+
778
+ #: includes/class-freemius.php21280, templates/connect.php:280
779
+ msgid "do %sNOT%s send me security & feature updates, educational content and offers."
780
+ msgstr "send %sIKKE%s sikkerheds- og feature-opdateringer, informativt indhold og tilbud."
781
+
782
+ #: includes/class-freemius.php:21290
783
+ msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂"
784
+ msgstr "Grundet krav i den nye %sEU General Data Protection Regulation (GDPR)%s, er det nødvendigt at du igen giver dit udtrykkelige samtykke og bekræfter, at du er ombord 🙂"
785
+
786
+ #: includes/class-freemius.php21292, templates/connect.php:287
787
+ msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
788
+ msgstr "Lad os vide, om vi har lov til at kontakte dig med sikkerheds- og feature-opdateringer, informativt indhold og lejlighedsvise tilbud:"
789
+
790
+ #: includes/class-freemius.php:21574
791
+ msgid "License key is empty."
792
+ msgstr "Licensnøglen er tom."
793
+
794
+ #: includes/class-fs-plugin-updater.php184,
795
+ #: templates/forms/premium-versions-upgrade-handler.php:57
796
+ msgid "Renew license"
797
+ msgstr "Forny licens"
798
+
799
+ #: includes/class-fs-plugin-updater.php189,
800
+ #: templates/forms/premium-versions-upgrade-handler.php:58
801
+ msgid "Buy license"
802
+ msgstr "Buy license"
803
+
804
+ #: includes/class-fs-plugin-updater.php:278
805
+ msgid "There is a %s of %s available."
806
+ msgstr "There is a %s of %s available."
807
+
808
+ #: includes/class-fs-plugin-updater.php:282
809
+ msgid "new version"
810
+ msgstr "new version"
811
+
812
+ #: includes/class-fs-plugin-updater.php:305
813
+ msgid "Important Upgrade Notice:"
814
+ msgstr "Important Upgrade Notice:"
815
+
816
+ #: includes/class-fs-plugin-updater.php:1125
817
+ msgid "Installing plugin: %s"
818
+ msgstr "Installerer plugin: %s"
819
+
820
+ #: includes/class-fs-plugin-updater.php:1166
821
+ msgid "Unable to connect to the filesystem. Please confirm your credentials."
822
+ msgstr "Unable to connect to the filesystem. Please confirm your credentials."
823
+
824
+ #: includes/class-fs-plugin-updater.php:1348
825
+ msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
826
+ msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
827
+
828
+ #: includes/fs-plugin-info-dialog.php369,
829
+ #: templates/account/partials/addon.php:292
830
+ msgctxt "verb"
831
+ msgid "Purchase"
832
+ msgstr "Køb"
833
+
834
+ #: includes/fs-plugin-info-dialog.php:372
835
+ msgid "Start my free %s"
836
+ msgstr "Start min gratis %s"
837
+
838
+ #: includes/fs-plugin-info-dialog.php:413
839
+ msgid "Install Free Version Now"
840
+ msgstr "Installer gratis version nu"
841
+
842
+ #: includes/fs-plugin-info-dialog.php414, templates/auto-installation.php111,
843
+ #: templates/account/partials/addon.php272,
844
+ #: templates/account/partials/addon.php:322
845
+ msgid "Install Now"
846
+ msgstr "Installer nu"
847
+
848
+ #: includes/fs-plugin-info-dialog.php:425
849
+ msgctxt "as download latest version"
850
+ msgid "Download Latest Free Version"
851
+ msgstr "Download seneste gratis version"
852
+
853
+ #: includes/fs-plugin-info-dialog.php426, templates/account.php80,
854
+ #: templates/account/partials/addon.php:21
855
+ msgctxt "as download latest version"
856
+ msgid "Download Latest"
857
+ msgstr "Download seneste"
858
+
859
+ #: includes/fs-plugin-info-dialog.php:436
860
+ msgid "Install Free Version Update Now"
861
+ msgstr "Installer opdatering til gratis version nu"
862
+
863
+ #: includes/fs-plugin-info-dialog.php437, templates/account.php:460
864
+ msgid "Install Update Now"
865
+ msgstr "Installer opdatering nu"
866
+
867
+ #: includes/fs-plugin-info-dialog.php:448
868
+ msgid "Newer Free Version (%s) Installed"
869
+ msgstr "Nyere gratis version (%s) installeret"
870
+
871
+ #: includes/fs-plugin-info-dialog.php:449
872
+ msgid "Newer Version (%s) Installed"
873
+ msgstr "Nyere version (%s) installeret"
874
+
875
+ #: includes/fs-plugin-info-dialog.php:457
876
+ msgid "Latest Free Version Installed"
877
+ msgstr "Seneste gratis version installeret"
878
+
879
+ #: includes/fs-plugin-info-dialog.php:458
880
+ msgid "Latest Version Installed"
881
+ msgstr "Seneste version installeret"
882
+
883
+ #: includes/fs-plugin-info-dialog.php:613
884
+ msgctxt "Plugin installer section title"
885
+ msgid "Description"
886
+ msgstr "Beskrivelse"
887
+
888
+ #: includes/fs-plugin-info-dialog.php:614
889
+ msgctxt "Plugin installer section title"
890
+ msgid "Installation"
891
+ msgstr "Installering"
892
+
893
+ #: includes/fs-plugin-info-dialog.php:615
894
+ msgctxt "Plugin installer section title"
895
+ msgid "FAQ"
896
+ msgstr "FAQ"
897
+
898
+ #: includes/fs-plugin-info-dialog.php616,
899
+ #: templates/plugin-info/description.php:55
900
+ msgid "Screenshots"
901
+ msgstr "Skærmbilleder"
902
+
903
+ #: includes/fs-plugin-info-dialog.php:617
904
+ msgctxt "Plugin installer section title"
905
+ msgid "Changelog"
906
+ msgstr "Ændringslog"
907
+
908
+ #: includes/fs-plugin-info-dialog.php:618
909
+ msgctxt "Plugin installer section title"
910
+ msgid "Reviews"
911
+ msgstr "Anmeldelser"
912
+
913
+ #: includes/fs-plugin-info-dialog.php:619
914
+ msgctxt "Plugin installer section title"
915
+ msgid "Other Notes"
916
+ msgstr "Andre noter"
917
+
918
+ #: includes/fs-plugin-info-dialog.php:634
919
+ msgctxt "Plugin installer section title"
920
+ msgid "Features & Pricing"
921
+ msgstr "Funktioner og priser"
922
+
923
+ #: includes/fs-plugin-info-dialog.php:644
924
+ msgid "Plugin Install"
925
+ msgstr "Plugin-installering"
926
+
927
+ #: includes/fs-plugin-info-dialog.php:716
928
+ msgctxt "e.g. Professional Plan"
929
+ msgid "%s Plan"
930
+ msgstr "%s Plan"
931
+
932
+ #: includes/fs-plugin-info-dialog.php:742
933
+ msgctxt "e.g. the best product"
934
+ msgid "Best"
935
+ msgstr "Bedste"
936
+
937
+ #: includes/fs-plugin-info-dialog.php748,
938
+ #: includes/fs-plugin-info-dialog.php:768
939
+ msgctxt "as every month"
940
+ msgid "Monthly"
941
+ msgstr "Månedligt"
942
+
943
+ #: includes/fs-plugin-info-dialog.php:751
944
+ msgctxt "as once a year"
945
+ msgid "Annual"
946
+ msgstr "Årligt"
947
+
948
+ #: includes/fs-plugin-info-dialog.php:754
949
+ msgid "Lifetime"
950
+ msgstr "Livstid"
951
+
952
+ #: includes/fs-plugin-info-dialog.php768,
953
+ #: includes/fs-plugin-info-dialog.php770,
954
+ #: includes/fs-plugin-info-dialog.php:772
955
+ msgctxt "e.g. billed monthly"
956
+ msgid "Billed %s"
957
+ msgstr "Faktureret %s"
958
+
959
+ #: includes/fs-plugin-info-dialog.php:770
960
+ msgctxt "as once a year"
961
+ msgid "Annually"
962
+ msgstr "Årligt"
963
+
964
+ #: includes/fs-plugin-info-dialog.php:772
965
+ msgctxt "as once a year"
966
+ msgid "Once"
967
+ msgstr "Engangsbeløb"
968
+
969
+ #: includes/fs-plugin-info-dialog.php:778
970
+ msgid "Single Site License"
971
+ msgstr "Single Site License"
972
+
973
+ #: includes/fs-plugin-info-dialog.php:780
974
+ msgid "Unlimited Licenses"
975
+ msgstr "Ubegrænsede licenser"
976
+
977
+ #: includes/fs-plugin-info-dialog.php:782
978
+ msgid "Up to %s Sites"
979
+ msgstr "Op til %s websteder"
980
+
981
+ #: includes/fs-plugin-info-dialog.php792,
982
+ #: templates/plugin-info/features.php:82
983
+ msgctxt "as monthly period"
984
+ msgid "mo"
985
+ msgstr "md"
986
+
987
+ #: includes/fs-plugin-info-dialog.php799,
988
+ #: templates/plugin-info/features.php:80
989
+ msgctxt "as annual period"
990
+ msgid "year"
991
+ msgstr "år"
992
+
993
+ #: includes/fs-plugin-info-dialog.php:853
994
+ msgctxt "noun"
995
+ msgid "Price"
996
+ msgstr "Pris"
997
+
998
+ #: includes/fs-plugin-info-dialog.php:901
999
+ msgid "Save %s"
1000
+ msgstr "Spar %s"
1001
+
1002
+ #: includes/fs-plugin-info-dialog.php:911
1003
+ msgid "No commitment for %s - cancel anytime"
1004
+ msgstr "Ingen bindinger ved %s - annuller når som helst"
1005
+
1006
+ #: includes/fs-plugin-info-dialog.php:914
1007
+ msgid "After your free %s, pay as little as %s"
1008
+ msgstr "Efter din gratis %s er prisen kun %s"
1009
+
1010
+ #: includes/fs-plugin-info-dialog.php:925
1011
+ msgid "Details"
1012
+ msgstr "Detaljer"
1013
+
1014
+ #: includes/fs-plugin-info-dialog.php929, templates/account.php91,
1015
+ #: templates/debug.php201, templates/debug.php238, templates/debug.php452,
1016
+ #: templates/account/partials/addon.php:32
1017
+ msgctxt "product version"
1018
+ msgid "Version"
1019
+ msgstr "Version"
1020
+
1021
+ #: includes/fs-plugin-info-dialog.php:936
1022
+ msgctxt "as the plugin author"
1023
+ msgid "Author"
1024
+ msgstr "Forfatter"
1025
+
1026
+ #: includes/fs-plugin-info-dialog.php:943
1027
+ msgid "Last Updated"
1028
+ msgstr "Senest opdateret"
1029
+
1030
+ #: includes/fs-plugin-info-dialog.php948, templates/account.php:376
1031
+ msgctxt "x-ago"
1032
+ msgid "%s ago"
1033
+ msgstr "%s siden"
1034
+
1035
+ #: includes/fs-plugin-info-dialog.php:957
1036
+ msgid "Requires WordPress Version"
1037
+ msgstr "Kræver WordPress-version"
1038
+
1039
+ #: includes/fs-plugin-info-dialog.php:958
1040
+ msgid "%s or higher"
1041
+ msgstr "%s eller højere"
1042
+
1043
+ #: includes/fs-plugin-info-dialog.php:965
1044
+ msgid "Compatible up to"
1045
+ msgstr "Kompatibel op til"
1046
+
1047
+ #: includes/fs-plugin-info-dialog.php:973
1048
+ msgid "Downloaded"
1049
+ msgstr "Downloadet"
1050
+
1051
+ #: includes/fs-plugin-info-dialog.php:977
1052
+ msgid "%s time"
1053
+ msgstr "%s gang"
1054
+
1055
+ #: includes/fs-plugin-info-dialog.php:979
1056
+ msgid "%s times"
1057
+ msgstr "%s gange"
1058
+
1059
+ #: includes/fs-plugin-info-dialog.php:989
1060
+ msgid "WordPress.org Plugin Page"
1061
+ msgstr "WordPress.org Plugin-side"
1062
+
1063
+ #: includes/fs-plugin-info-dialog.php:997
1064
+ msgid "Plugin Homepage"
1065
+ msgstr "Plugin-websted"
1066
+
1067
+ #: includes/fs-plugin-info-dialog.php1005,
1068
+ #: includes/fs-plugin-info-dialog.php:1087
1069
+ msgid "Donate to this plugin"
1070
+ msgstr "Donér til dette plugin"
1071
+
1072
+ #: includes/fs-plugin-info-dialog.php:1012
1073
+ msgid "Average Rating"
1074
+ msgstr "Gennemsnitlig vurdering"
1075
+
1076
+ #: includes/fs-plugin-info-dialog.php:1019
1077
+ msgid "based on %s"
1078
+ msgstr "baseret på %s"
1079
+
1080
+ #: includes/fs-plugin-info-dialog.php:1023
1081
+ msgid "%s rating"
1082
+ msgstr "%s vurdering"
1083
+
1084
+ #: includes/fs-plugin-info-dialog.php:1025
1085
+ msgid "%s ratings"
1086
+ msgstr "%s vurderinger"
1087
+
1088
+ #: includes/fs-plugin-info-dialog.php:1040
1089
+ msgid "%s star"
1090
+ msgstr "%s stjerne"
1091
+
1092
+ #: includes/fs-plugin-info-dialog.php:1042
1093
+ msgid "%s stars"
1094
+ msgstr "%s stjerner"
1095
+
1096
+ #: includes/fs-plugin-info-dialog.php:1053
1097
+ msgid "Click to see reviews that provided a rating of %s"
1098
+ msgstr "Click to see reviews that provided a rating of %s"
1099
+
1100
+ #: includes/fs-plugin-info-dialog.php:1066
1101
+ msgid "Contributors"
1102
+ msgstr "Bidragsydere"
1103
+
1104
+ #: includes/fs-plugin-info-dialog.php1095,
1105
+ #: includes/fs-plugin-info-dialog.php:1097
1106
+ msgid "Warning"
1107
+ msgstr "Advarsel"
1108
+
1109
+ #: includes/fs-plugin-info-dialog.php:1095
1110
+ msgid "This plugin has not been tested with your current version of WordPress."
1111
+ msgstr "Dette plugin er ikke blevet testet med din nuværende version af WordPress."
1112
+
1113
+ #: includes/fs-plugin-info-dialog.php:1097
1114
+ msgid "This plugin has not been marked as compatible with your version of WordPress."
1115
+ msgstr "This plugin has not been marked as compatible with your version of WordPress."
1116
+
1117
+ #: includes/fs-plugin-info-dialog.php:1116
1118
+ msgid "Paid add-on must be deployed to Freemius."
1119
+ msgstr "Paid add-on must be deployed to Freemius."
1120
+
1121
+ #: includes/fs-plugin-info-dialog.php:1117
1122
+ msgid "Add-on must be deployed to WordPress.org or Freemius."
1123
+ msgstr "Add-on must be deployed to WordPress.org or Freemius."
1124
+
1125
+ #: templates/account.php81, templates/forms/subscription-cancellation.php96,
1126
+ #: templates/account/partials/addon.php22,
1127
+ #: templates/account/partials/site.php:295
1128
+ msgid "Downgrading your plan"
1129
+ msgstr "Downgrading your plan"
1130
+
1131
+ #: templates/account.php82, templates/forms/subscription-cancellation.php97,
1132
+ #: templates/account/partials/addon.php23,
1133
+ #: templates/account/partials/site.php:296
1134
+ msgid "Cancelling the subscription"
1135
+ msgstr "Cancelling the subscription"
1136
+
1137
+ #. translators: %1s: Either 'Downgrading your plan' or 'Cancelling the
1138
+ #. subscription'
1139
+ #: templates/account.php84, templates/forms/subscription-cancellation.php99,
1140
+ #: templates/account/partials/addon.php25,
1141
+ #: templates/account/partials/site.php:298
1142
+ msgid "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s."
1143
+ msgstr "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s."
1144
+
1145
+ #: templates/account.php85, templates/forms/subscription-cancellation.php100,
1146
+ #: templates/account/partials/addon.php26,
1147
+ #: templates/account/partials/site.php:299
1148
+ msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price."
1149
+ msgstr "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price."
1150
+
1151
+ #: templates/account.php86, templates/forms/subscription-cancellation.php106,
1152
+ #: templates/account/partials/addon.php:27
1153
+ msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
1154
+ msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?"
1155
+
1156
+ #: templates/account.php87, templates/forms/subscription-cancellation.php101,
1157
+ #: templates/account/partials/addon.php28,
1158
+ #: templates/account/partials/site.php:300
1159
+ msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support."
1160
+ msgstr "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support."
1161
+
1162
+ #: templates/account.php88, templates/forms/subscription-cancellation.php102,
1163
+ #: templates/account/partials/addon.php29,
1164
+ #: templates/account/partials/site.php:301
1165
+ msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
1166
+ msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
1167
+
1168
+ #. translators: %s: Plan title (e.g. "Professional")
1169
+ #: templates/account.php90,
1170
+ #: templates/account/partials/activate-license-button.php31,
1171
+ #: templates/account/partials/addon.php:31
1172
+ msgid "Activate %s Plan"
1173
+ msgstr "Aktiver %s plan"
1174
+
1175
+ #. translators: %s: Time period (e.g. Auto renews in "2 months")
1176
+ #: templates/account.php93, templates/account/partials/addon.php34,
1177
+ #: templates/account/partials/site.php:275
1178
+ msgid "Auto renews in %s"
1179
+ msgstr "Auto-fornyer om %s"
1180
+
1181
+ #. translators: %s: Time period (e.g. Expires in "2 months")
1182
+ #: templates/account.php95, templates/account/partials/addon.php36,
1183
+ #: templates/account/partials/site.php:277
1184
+ msgid "Expires in %s"
1185
+ msgstr "Udløber om %s"
1186
+
1187
+ #: templates/account.php96, templates/account/partials/addon.php:37
1188
+ msgctxt "as synchronize license"
1189
+ msgid "Sync License"
1190
+ msgstr "Synkroniser licens"
1191
+
1192
+ #: templates/account.php97, templates/account/partials/addon.php:38
1193
+ msgid "Cancel Trial"
1194
+ msgstr "Annuller prøveperiode"
1195
+
1196
+ #: templates/account.php98, templates/account/partials/addon.php:39
1197
+ msgid "Change Plan"
1198
+ msgstr "Skift plan"
1199
+
1200
+ #: templates/account.php99, templates/account/partials/addon.php:40
1201
+ msgctxt "verb"
1202
+ msgid "Upgrade"
1203
+ msgstr "Opgrader"
1204
+
1205
+ #: templates/account.php101, templates/account/partials/addon.php42,
1206
+ #: templates/account/partials/site.php:302
1207
+ msgctxt "verb"
1208
+ msgid "Downgrade"
1209
+ msgstr "Nedgrader"
1210
+
1211
+ #: templates/account.php103, templates/add-ons.php130,
1212
+ #: templates/plugin-info/features.php72,
1213
+ #: templates/account/partials/addon.php44,
1214
+ #: templates/account/partials/site.php:31
1215
+ msgid "Free"
1216
+ msgstr "Gratis"
1217
+
1218
+ #: templates/account.php104, templates/account/partials/addon.php:45
1219
+ msgid "Activate"
1220
+ msgstr "Aktiver"
1221
+
1222
+ #: templates/account.php105, templates/debug.php371,
1223
+ #: includes/customizer/class-fs-customizer-upsell-control.php106,
1224
+ #: templates/account/partials/addon.php:46
1225
+ msgctxt "as product pricing plan"
1226
+ msgid "Plan"
1227
+ msgstr "Plan"
1228
+
1229
+ #: templates/account.php:158
1230
+ msgid "Free Trial"
1231
+ msgstr "Gratis prøveperiode"
1232
+
1233
+ #: templates/account.php:169
1234
+ msgid "Account Details"
1235
+ msgstr "Kontodetaljer"
1236
+
1237
+ #: templates/account.php:179
1238
+ msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
1239
+ msgstr "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
1240
+
1241
+ #: templates/account.php:181
1242
+ msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
1243
+ msgstr "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
1244
+
1245
+ #: templates/account.php:184
1246
+ msgid "Delete Account"
1247
+ msgstr "Slet konto"
1248
+
1249
+ #: templates/account.php196, templates/account/partials/addon.php159,
1250
+ #: templates/account/partials/deactivate-license-button.php:35
1251
+ msgid "Deactivate License"
1252
+ msgstr "Deaktiver licens"
1253
+
1254
+ #: templates/account.php219, templates/forms/subscription-cancellation.php:125
1255
+ msgid "Are you sure you want to proceed?"
1256
+ msgstr "Er du sikker på, du vil fortsætte?"
1257
+
1258
+ #: templates/account.php219, templates/account/partials/addon.php:182
1259
+ msgid "Cancel Subscription"
1260
+ msgstr "Annuller abonnement"
1261
+
1262
+ #: templates/account.php:247
1263
+ msgctxt "as synchronize"
1264
+ msgid "Sync"
1265
+ msgstr "Synkroniser"
1266
+
1267
+ #: templates/account.php261, templates/debug.php:487
1268
+ msgid "Name"
1269
+ msgstr "Navn"
1270
+
1271
+ #: templates/account.php267, templates/debug.php:488
1272
+ msgid "Email"
1273
+ msgstr "E-mail"
1274
+
1275
+ #: templates/account.php274, templates/debug.php370, templates/debug.php:526
1276
+ msgid "User ID"
1277
+ msgstr "Bruger-ID"
1278
+
1279
+ #: templates/account.php:282
1280
+ msgid "Site ID"
1281
+ msgstr "Websteds-ID"
1282
+
1283
+ #: templates/account.php:285
1284
+ msgid "No ID"
1285
+ msgstr "Intet ID"
1286
+
1287
+ #: templates/account.php290, templates/debug.php243, templates/debug.php372,
1288
+ #: templates/debug.php453, templates/debug.php490,
1289
+ #: templates/account/partials/site.php:219
1290
+ msgid "Public Key"
1291
+ msgstr "Offentlig nøgle"
1292
+
1293
+ #: templates/account.php296, templates/debug.php373, templates/debug.php454,
1294
+ #: templates/debug.php491, templates/account/partials/site.php:231
1295
+ msgid "Secret Key"
1296
+ msgstr "Privat nøgle"
1297
+
1298
+ #: templates/account.php:299
1299
+ msgctxt "as secret encryption key missing"
1300
+ msgid "No Secret"
1301
+ msgstr "Ingen privat nøgle"
1302
+
1303
+ #: templates/account.php318, templates/account/partials/site.php112,
1304
+ #: templates/account/partials/site.php:114
1305
+ msgid "Trial"
1306
+ msgstr "Prøveperiode"
1307
+
1308
+ #: templates/account.php337, templates/debug.php531,
1309
+ #: templates/account/partials/site.php:248
1310
+ msgid "License Key"
1311
+ msgstr "Licensnøgle"
1312
+
1313
+ #: templates/account.php:367
1314
+ msgid "not verified"
1315
+ msgstr "ikke verificeret"
1316
+
1317
+ #: templates/account.php376, templates/account/partials/addon.php:120
1318
+ msgid "Expired"
1319
+ msgstr "Udløbet"
1320
+
1321
+ #: templates/account.php:428
1322
+ msgid "Premium version"
1323
+ msgstr "Premium version"
1324
+
1325
+ #: templates/account.php:430
1326
+ msgid "Free version"
1327
+ msgstr "Gratis version"
1328
+
1329
+ #: templates/account.php:442
1330
+ msgid "Verify Email"
1331
+ msgstr "Verificer e-mail"
1332
+
1333
+ #: templates/account.php:453
1334
+ msgid "Download %s Version"
1335
+ msgstr "Download 1%s version"
1336
+
1337
+ #: templates/account.php467, templates/account.php649,
1338
+ #: templates/account/partials/site.php237,
1339
+ #: templates/account/partials/site.php:255
1340
+ msgctxt "verb"
1341
+ msgid "Show"
1342
+ msgstr "Vis"
1343
+
1344
+ #: templates/account.php:481
1345
+ msgid "What is your %s?"
1346
+ msgstr "Angiv venligst %s?"
1347
+
1348
+ #: templates/account.php489, templates/account/billing.php:27
1349
+ msgctxt "verb"
1350
+ msgid "Edit"
1351
+ msgstr "Rediger"
1352
+
1353
+ #: templates/account.php:502
1354
+ msgid "Sites"
1355
+ msgstr "Websteder"
1356
+
1357
+ #: templates/account.php:513
1358
+ msgid "Search by address"
1359
+ msgstr "Søg efter adresse"
1360
+
1361
+ #: templates/account.php522, templates/account.php570, templates/debug.php236,
1362
+ #: templates/debug.php364, templates/debug.php449, templates/debug.php486,
1363
+ #: templates/debug.php524, templates/debug.php597,
1364
+ #: templates/account/payments.php35, templates/debug/logger.php:21
1365
+ msgid "ID"
1366
+ msgstr "ID"
1367
+
1368
+ #: templates/account.php523, templates/debug.php:367
1369
+ msgid "Address"
1370
+ msgstr "Adresse"
1371
+
1372
+ #: templates/account.php:524
1373
+ msgid "License"
1374
+ msgstr "Licens"
1375
+
1376
+ #: templates/account.php:525
1377
+ msgid "Plan"
1378
+ msgstr "Plan"
1379
+
1380
+ #: templates/account.php:573
1381
+ msgctxt "as software license"
1382
+ msgid "License"
1383
+ msgstr "Licens"
1384
+
1385
+ #: templates/account.php:643
1386
+ msgctxt "verb"
1387
+ msgid "Hide"
1388
+ msgstr "Skjul"
1389
+
1390
+ #: templates/account.php:686
1391
+ msgid "Cancelling %s"
1392
+ msgstr "Cancelling %s"
1393
+
1394
+ #: templates/account.php686, templates/account.php703,
1395
+ #: templates/forms/subscription-cancellation.php27,
1396
+ #: templates/forms/deactivation/form.php:117
1397
+ msgid "trial"
1398
+ msgstr "trial"
1399
+
1400
+ #: templates/account.php701, templates/forms/deactivation/form.php:134
1401
+ msgid "Cancelling %s..."
1402
+ msgstr "Cancelling %s..."
1403
+
1404
+ #: templates/account.php704, templates/forms/subscription-cancellation.php28,
1405
+ #: templates/forms/deactivation/form.php:118
1406
+ msgid "subscription"
1407
+ msgstr "subscription"
1408
+
1409
+ #: templates/account.php:718
1410
+ msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
1411
+ msgstr "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
1412
+
1413
+ #: templates/add-ons.php:36
1414
+ msgid "Add Ons for %s"
1415
+ msgstr "Tilføjelser til %s"
1416
+
1417
+ #: templates/add-ons.php:44
1418
+ msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
1419
+ msgstr "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
1420
+
1421
+ #: templates/add-ons.php:139
1422
+ msgid "View details"
1423
+ msgstr "Vis detaljer"
1424
+
1425
+ #: templates/admin-notice.php13, templates/forms/license-activation.php208,
1426
+ #: templates/forms/resend-key.php:77
1427
+ msgctxt "as close a window"
1428
+ msgid "Dismiss"
1429
+ msgstr "Fjern"
1430
+
1431
+ #: templates/auto-installation.php:45
1432
+ msgid "%s sec"
1433
+ msgstr "1%s sek"
1434
+
1435
+ #: templates/auto-installation.php:83
1436
+ msgid "Automatic Installation"
1437
+ msgstr "Automatisk installering"
1438
+
1439
+ #: templates/auto-installation.php:93
1440
+ msgid "An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now."
1441
+ msgstr "An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now."
1442
+
1443
+ #: templates/auto-installation.php:104
1444
+ msgid "The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page."
1445
+ msgstr "The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page."
1446
+
1447
+ #: templates/auto-installation.php:109
1448
+ msgid "Cancel Installation"
1449
+ msgstr "Annuller installering"
1450
+
1451
+ #: templates/checkout.php:172
1452
+ msgid "Checkout"
1453
+ msgstr "Udtjekning"
1454
+
1455
+ #: templates/checkout.php:172
1456
+ msgid "PCI compliant"
1457
+ msgstr "PCI compliant"
1458
+
1459
+ #. translators: %s: name (e.g. Hey John,)
1460
+ #: templates/connect.php:112
1461
+ msgctxt "greeting"
1462
+ msgid "Hey %s,"
1463
+ msgstr "Hey %s,"
1464
+
1465
+ #: templates/connect.php:154
1466
+ msgid "Allow & Continue"
1467
+ msgstr "Tillad & Fortsæt"
1468
+
1469
+ #: templates/connect.php:158
1470
+ msgid "Re-send activation email"
1471
+ msgstr "Gensend e-mail om aktivering"
1472
+
1473
+ #: templates/connect.php:162
1474
+ msgid "Thanks %s!"
1475
+ msgstr "Tak %s!"
1476
+
1477
+ #: templates/connect.php172, templates/forms/license-activation.php:43
1478
+ msgid "Agree & Activate License"
1479
+ msgstr "Accepter & aktiver licens"
1480
+
1481
+ #: templates/connect.php:181
1482
+ msgid "Thanks for purchasing %s! To get started, please enter your license key:"
1483
+ msgstr "Tak for at købe %s! For at komme i gang, venligst indtast din licensnøgle:"
1484
+
1485
+ #: templates/connect.php:188
1486
+ msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
1487
+ msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
1488
+
1489
+ #: templates/connect.php:189
1490
+ msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
1491
+ msgstr "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
1492
+
1493
+ #: templates/connect.php:195
1494
+ msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1495
+ msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1496
+
1497
+ #: templates/connect.php:196
1498
+ msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1499
+ msgstr "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1500
+
1501
+ #: templates/connect.php:230
1502
+ msgid "We're excited to introduce the Freemius network-level integration."
1503
+ msgstr "We're excited to introduce the Freemius network-level integration."
1504
+
1505
+ #: templates/connect.php:233
1506
+ msgid "During the update process we detected %d site(s) that are still pending license activation."
1507
+ msgstr "During the update process we detected %d site(s) that are still pending license activation."
1508
+
1509
+ #: templates/connect.php:235
1510
+ msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
1511
+ msgstr "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
1512
+
1513
+ #: templates/connect.php:237
1514
+ msgid "%s's paid features"
1515
+ msgstr "%s's paid features"
1516
+
1517
+ #: templates/connect.php:242
1518
+ msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
1519
+ msgstr "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
1520
+
1521
+ #: templates/connect.php:244
1522
+ msgid "During the update process we detected %s site(s) in the network that are still pending your attention."
1523
+ msgstr "During the update process we detected %s site(s) in the network that are still pending your attention."
1524
+
1525
+ #: templates/connect.php253, templates/forms/license-activation.php:46
1526
+ msgid "License key"
1527
+ msgstr "Licensnøgle"
1528
+
1529
+ #: templates/connect.php256, templates/forms/license-activation.php:19
1530
+ msgid "Can't find your license key?"
1531
+ msgstr "Kan du ikke finde din licensnøgle?"
1532
+
1533
+ #: templates/connect.php315, templates/connect.php630,
1534
+ #: templates/forms/deactivation/retry-skip.php:20
1535
+ msgctxt "verb"
1536
+ msgid "Skip"
1537
+ msgstr "Spring over"
1538
+
1539
+ #: templates/connect.php:318
1540
+ msgid "Delegate to Site Admins"
1541
+ msgstr "Delegate to Site Admins"
1542
+
1543
+ #: templates/connect.php:318
1544
+ msgid "If you click it, this decision will be delegated to the sites administrators."
1545
+ msgstr "If you click it, this decision will be delegated to the sites administrators."
1546
+
1547
+ #: templates/connect.php:346
1548
+ msgid "Your Profile Overview"
1549
+ msgstr "Overblik af din profil"
1550
+
1551
+ #: templates/connect.php:347
1552
+ msgid "Name and email address"
1553
+ msgstr "Navn og e-mailadresse"
1554
+
1555
+ #: templates/connect.php:352
1556
+ msgid "Your Site Overview"
1557
+ msgstr "Overblik af dit websted"
1558
+
1559
+ #: templates/connect.php:353
1560
+ msgid "Site URL, WP version, PHP info, plugins & themes"
1561
+ msgstr "Websteds-URL, WP version, PHP info, plugins og temaer"
1562
+
1563
+ #: templates/connect.php:358
1564
+ msgid "Admin Notices"
1565
+ msgstr "Admin-meddelelser"
1566
+
1567
+ #: templates/connect.php359, templates/connect.php:375
1568
+ msgid "Updates, announcements, marketing, no spam"
1569
+ msgstr "Updates, announcements, marketing, no spam"
1570
+
1571
+ #: templates/connect.php:364
1572
+ msgid "Current %s Events"
1573
+ msgstr "Current %s Events"
1574
+
1575
+ #: templates/connect.php:365
1576
+ msgid "Activation, deactivation and uninstall"
1577
+ msgstr "Aktivering, deaktivering og afinstallering"
1578
+
1579
+ #: templates/connect.php:374
1580
+ msgid "Newsletter"
1581
+ msgstr "Nyhedsbrev"
1582
+
1583
+ #: templates/connect.php391, templates/forms/license-activation.php:38
1584
+ msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
1585
+ msgstr "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
1586
+
1587
+ #: templates/connect.php:396
1588
+ msgid "What permissions are being granted?"
1589
+ msgstr "Hvilke tilladelser bliver givet?"
1590
+
1591
+ #: templates/connect.php:417
1592
+ msgid "Don't have a license key?"
1593
+ msgstr "Har du ikke en licensnøgle?"
1594
+
1595
+ #: templates/connect.php:418
1596
+ msgid "Activate Free Version"
1597
+ msgstr "Aktiver gratis version"
1598
+
1599
+ #: templates/connect.php:420
1600
+ msgid "Have a license key?"
1601
+ msgstr "Har du en licensnøgle?"
1602
+
1603
+ #: templates/connect.php:428
1604
+ msgid "Privacy Policy"
1605
+ msgstr "Privatlivspolitik"
1606
+
1607
+ #: templates/connect.php:430
1608
+ msgid "License Agreement"
1609
+ msgstr "License Agreement"
1610
+
1611
+ #: templates/connect.php:430
1612
+ msgid "Terms of Service"
1613
+ msgstr "Servicevilkår"
1614
+
1615
+ #: templates/connect.php:766
1616
+ msgctxt "as in the process of sending an email"
1617
+ msgid "Sending email"
1618
+ msgstr "Sender e-mail"
1619
+
1620
+ #: templates/connect.php:767
1621
+ msgctxt "as activating plugin"
1622
+ msgid "Activating"
1623
+ msgstr "Aktiverer"
1624
+
1625
+ #: templates/contact.php:78
1626
+ msgid "Contact"
1627
+ msgstr "Kontakt"
1628
+
1629
+ #: templates/debug.php:17
1630
+ msgctxt "as turned off"
1631
+ msgid "Off"
1632
+ msgstr "Fra"
1633
+
1634
+ #: templates/debug.php:18
1635
+ msgctxt "as turned on"
1636
+ msgid "On"
1637
+ msgstr "Til"
1638
+
1639
+ #: templates/debug.php:20
1640
+ msgid "SDK"
1641
+ msgstr "SDK"
1642
+
1643
+ #: templates/debug.php:24
1644
+ msgctxt "as code debugging"
1645
+ msgid "Debugging"
1646
+ msgstr "Fejlfinding"
1647
+
1648
+ #: templates/debug.php54, templates/debug.php248, templates/debug.php374,
1649
+ #: templates/debug.php:492
1650
+ msgid "Actions"
1651
+ msgstr "Handlinger"
1652
+
1653
+ #: templates/debug.php:64
1654
+ msgid "Are you sure you want to delete all Freemius data?"
1655
+ msgstr "Er du sikker på, du vil slette al Freemius data?"
1656
+
1657
+ #: templates/debug.php:64
1658
+ msgid "Delete All Accounts"
1659
+ msgstr "Slet alle konti"
1660
+
1661
+ #: templates/debug.php:71
1662
+ msgid "Clear API Cache"
1663
+ msgstr "Ryd API-cache"
1664
+
1665
+ #: templates/debug.php:79
1666
+ msgid "Clear Updates Transients"
1667
+ msgstr "Clear Updates Transients"
1668
+
1669
+ #: templates/debug.php:86
1670
+ msgid "Sync Data From Server"
1671
+ msgstr "Synkroniser data fra server"
1672
+
1673
+ #: templates/debug.php:95
1674
+ msgid "Migrate Options to Network"
1675
+ msgstr "Migrate Options to Network"
1676
+
1677
+ #: templates/debug.php:100
1678
+ msgid "Load DB Option"
1679
+ msgstr "Hent DB-indstilling"
1680
+
1681
+ #: templates/debug.php:103
1682
+ msgid "Set DB Option"
1683
+ msgstr "Sæt DB-indstilling"
1684
+
1685
+ #: templates/debug.php:180
1686
+ msgid "Key"
1687
+ msgstr "Nøgle"
1688
+
1689
+ #: templates/debug.php:181
1690
+ msgid "Value"
1691
+ msgstr "Værdi"
1692
+
1693
+ #: templates/debug.php:197
1694
+ msgctxt "as software development kit versions"
1695
+ msgid "SDK Versions"
1696
+ msgstr "SDK-versioner"
1697
+
1698
+ #: templates/debug.php:202
1699
+ msgid "SDK Path"
1700
+ msgstr "SDK-sti"
1701
+
1702
+ #: templates/debug.php203, templates/debug.php:242
1703
+ msgid "Module Path"
1704
+ msgstr "Modul-sti"
1705
+
1706
+ #: templates/debug.php:204
1707
+ msgid "Is Active"
1708
+ msgstr "Er aktiv"
1709
+
1710
+ #: templates/debug.php232, templates/debug/plugins-themes-sync.php:35
1711
+ msgid "Plugins"
1712
+ msgstr "Plugins"
1713
+
1714
+ #: templates/debug.php232, templates/debug/plugins-themes-sync.php:56
1715
+ msgid "Themes"
1716
+ msgstr "Temaer"
1717
+
1718
+ #: templates/debug.php237, templates/debug.php369, templates/debug.php451,
1719
+ #: templates/debug/scheduled-crons.php:80
1720
+ msgid "Slug"
1721
+ msgstr "Kortnavn"
1722
+
1723
+ #: templates/debug.php239, templates/debug.php:450
1724
+ msgid "Title"
1725
+ msgstr "Titel"
1726
+
1727
+ #: templates/debug.php:240
1728
+ msgctxt "as application program interface"
1729
+ msgid "API"
1730
+ msgstr "API"
1731
+
1732
+ #: templates/debug.php:241
1733
+ msgid "Freemius State"
1734
+ msgstr "Freemius tilstand"
1735
+
1736
+ #: templates/debug.php:245
1737
+ msgid "Network Blog"
1738
+ msgstr "Netværksblog"
1739
+
1740
+ #: templates/debug.php:246
1741
+ msgid "Network User"
1742
+ msgstr "Netværksbruger"
1743
+
1744
+ #: templates/debug.php:283
1745
+ msgctxt "as connection was successful"
1746
+ msgid "Connected"
1747
+ msgstr "Forbundet"
1748
+
1749
+ #: templates/debug.php:284
1750
+ msgctxt "as connection blocked"
1751
+ msgid "Blocked"
1752
+ msgstr "Blokeret"
1753
+
1754
+ #: templates/debug.php:320
1755
+ msgid "Simulate Trial Promotion"
1756
+ msgstr "Simulate Trial Promotion"
1757
+
1758
+ #: templates/debug.php:332
1759
+ msgid "Simulate Network Upgrade"
1760
+ msgstr "Simuler netværksopgradering"
1761
+
1762
+ #: templates/debug.php:358
1763
+ msgid "%s Installs"
1764
+ msgstr "%s installeringer"
1765
+
1766
+ #: templates/debug.php:360
1767
+ msgctxt "like websites"
1768
+ msgid "Sites"
1769
+ msgstr "Websteder"
1770
+
1771
+ #: templates/debug.php366, templates/account/partials/site.php:148
1772
+ msgid "Blog ID"
1773
+ msgstr "Blog-ID"
1774
+
1775
+ #: templates/debug.php431, templates/debug.php509,
1776
+ #: templates/account/partials/addon.php:339
1777
+ msgctxt "verb"
1778
+ msgid "Delete"
1779
+ msgstr "Slet"
1780
+
1781
+ #: templates/debug.php:445
1782
+ msgid "Add Ons of module %s"
1783
+ msgstr "Tilføjelser til modul %s"
1784
+
1785
+ #: templates/debug.php:482
1786
+ msgid "Users"
1787
+ msgstr "Brugere"
1788
+
1789
+ #: templates/debug.php:489
1790
+ msgid "Verified"
1791
+ msgstr "Verificeret"
1792
+
1793
+ #: templates/debug.php:520
1794
+ msgid "%s Licenses"
1795
+ msgstr "1%s licenser"
1796
+
1797
+ #: templates/debug.php:525
1798
+ msgid "Plugin ID"
1799
+ msgstr "Plugin-ID"
1800
+
1801
+ #: templates/debug.php:527
1802
+ msgid "Plan ID"
1803
+ msgstr "Plan-ID"
1804
+
1805
+ #: templates/debug.php:528
1806
+ msgid "Quota"
1807
+ msgstr "Kvote"
1808
+
1809
+ #: templates/debug.php:529
1810
+ msgid "Activated"
1811
+ msgstr "Aktiveret"
1812
+
1813
+ #: templates/debug.php:530
1814
+ msgid "Blocking"
1815
+ msgstr "Blokerer"
1816
+
1817
+ #: templates/debug.php:532
1818
+ msgctxt "as expiration date"
1819
+ msgid "Expiration"
1820
+ msgstr "Udløber"
1821
+
1822
+ #: templates/debug.php:555
1823
+ msgid "Debug Log"
1824
+ msgstr "Fejlfindingslog"
1825
+
1826
+ #: templates/debug.php:559
1827
+ msgid "All Types"
1828
+ msgstr "Alle typer"
1829
+
1830
+ #: templates/debug.php:566
1831
+ msgid "All Requests"
1832
+ msgstr "Alle forespørgsler"
1833
+
1834
+ #: templates/debug.php571, templates/debug.php600,
1835
+ #: templates/debug/logger.php:25
1836
+ msgid "File"
1837
+ msgstr "Fil"
1838
+
1839
+ #: templates/debug.php572, templates/debug.php598,
1840
+ #: templates/debug/logger.php:23
1841
+ msgid "Function"
1842
+ msgstr "Funktion"
1843
+
1844
+ #: templates/debug.php:573
1845
+ msgid "Process ID"
1846
+ msgstr "Proces-ID"
1847
+
1848
+ #: templates/debug.php:574
1849
+ msgid "Logger"
1850
+ msgstr "Logger"
1851
+
1852
+ #: templates/debug.php575, templates/debug.php599,
1853
+ #: templates/debug/logger.php:24
1854
+ msgid "Message"
1855
+ msgstr "Besked"
1856
+
1857
+ #: templates/debug.php:577
1858
+ msgid "Filter"
1859
+ msgstr "Filter"
1860
+
1861
+ #: templates/debug.php:585
1862
+ msgid "Download"
1863
+ msgstr "Download"
1864
+
1865
+ #: templates/debug.php596, templates/debug/logger.php:22
1866
+ msgid "Type"
1867
+ msgstr "Type"
1868
+
1869
+ #: templates/debug.php601, templates/debug/logger.php:26
1870
+ msgid "Timestamp"
1871
+ msgstr "Tidsstempel"
1872
+
1873
+ #: templates/secure-https-header.php:28
1874
+ msgid "Secure HTTPS %s page, running from an external domain"
1875
+ msgstr "Secure HTTPS %s page, running from an external domain"
1876
+
1877
+ #: includes/customizer/class-fs-customizer-support-section.php55,
1878
+ #: templates/plugin-info/features.php:43
1879
+ msgid "Support"
1880
+ msgstr "Support"
1881
+
1882
+ #: includes/debug/class-fs-debug-bar-panel.php48,
1883
+ #: templates/debug/api-calls.php54, templates/debug/logger.php:62
1884
+ msgctxt "milliseconds"
1885
+ msgid "ms"
1886
+ msgstr "ms"
1887
+
1888
+ #: includes/debug/debug-bar-start.php:41
1889
+ msgid "Freemius API"
1890
+ msgstr "Freemius API"
1891
+
1892
+ #: includes/debug/debug-bar-start.php:42
1893
+ msgid "Requests"
1894
+ msgstr "Requests"
1895
+
1896
+ #: templates/account/billing.php:28
1897
+ msgctxt "verb"
1898
+ msgid "Update"
1899
+ msgstr "Opdater"
1900
+
1901
+ #: templates/account/billing.php:39
1902
+ msgid "Billing"
1903
+ msgstr "Betaling"
1904
+
1905
+ #: templates/account/billing.php44, templates/account/billing.php:44
1906
+ msgid "Business name"
1907
+ msgstr "Firmanavn"
1908
+
1909
+ #: templates/account/billing.php45, templates/account/billing.php:45
1910
+ msgid "Tax / VAT ID"
1911
+ msgstr "Moms / VAT ID"
1912
+
1913
+ #: templates/account/billing.php48, templates/account/billing.php48,
1914
+ #: templates/account/billing.php49, templates/account/billing.php:49
1915
+ msgid "Address Line %d"
1916
+ msgstr "Adresselinje %d"
1917
+
1918
+ #: templates/account/billing.php52, templates/account/billing.php:52
1919
+ msgid "City"
1920
+ msgstr "By"
1921
+
1922
+ #: templates/account/billing.php52, templates/account/billing.php:52
1923
+ msgid "Town"
1924
+ msgstr "By"
1925
+
1926
+ #: templates/account/billing.php53, templates/account/billing.php:53
1927
+ msgid "ZIP / Postal Code"
1928
+ msgstr "ZIP / Postnummer"
1929
+
1930
+ #: templates/account/billing.php:308
1931
+ msgid "Country"
1932
+ msgstr "Land"
1933
+
1934
+ #: templates/account/billing.php:310
1935
+ msgid "Select Country"
1936
+ msgstr "Vælg land"
1937
+
1938
+ #: templates/account/billing.php317, templates/account/billing.php:318
1939
+ msgid "State"
1940
+ msgstr "Stat"
1941
+
1942
+ #: templates/account/billing.php317, templates/account/billing.php:318
1943
+ msgid "Province"
1944
+ msgstr "Provins"
1945
+
1946
+ #: templates/account/payments.php:29
1947
+ msgid "Payments"
1948
+ msgstr "Betalinger"
1949
+
1950
+ #: templates/account/payments.php:36
1951
+ msgid "Date"
1952
+ msgstr "Dato"
1953
+
1954
+ #: templates/account/payments.php:37
1955
+ msgid "Amount"
1956
+ msgstr "Beløb"
1957
+
1958
+ #: templates/account/payments.php38, templates/account/payments.php:50
1959
+ msgid "Invoice"
1960
+ msgstr "Faktura"
1961
+
1962
+ #: templates/debug/api-calls.php:56
1963
+ msgid "API"
1964
+ msgstr "API"
1965
+
1966
+ #: templates/debug/api-calls.php:68
1967
+ msgid "Method"
1968
+ msgstr "Metode"
1969
+
1970
+ #: templates/debug/api-calls.php:69
1971
+ msgid "Code"
1972
+ msgstr "Kode"
1973
+
1974
+ #: templates/debug/api-calls.php:70
1975
+ msgid "Length"
1976
+ msgstr "Længde"
1977
+
1978
+ #: templates/debug/api-calls.php:71
1979
+ msgctxt "as file/folder path"
1980
+ msgid "Path"
1981
+ msgstr "Sti"
1982
+
1983
+ #: templates/debug/api-calls.php:73
1984
+ msgid "Body"
1985
+ msgstr "Body"
1986
+
1987
+ #: templates/debug/api-calls.php:75
1988
+ msgid "Result"
1989
+ msgstr "Resultat"
1990
+
1991
+ #: templates/debug/api-calls.php:76
1992
+ msgid "Start"
1993
+ msgstr "Start"
1994
+
1995
+ #: templates/debug/api-calls.php:77
1996
+ msgid "End"
1997
+ msgstr "Slut"
1998
+
1999
+ #: templates/debug/logger.php:15
2000
+ msgid "Log"
2001
+ msgstr "Log"
2002
+
2003
+ #. translators: %s: time period (e.g. In "2 hours")
2004
+ #: templates/debug/plugins-themes-sync.php18,
2005
+ #: templates/debug/scheduled-crons.php:91
2006
+ msgid "In %s"
2007
+ msgstr "Om %s"
2008
+
2009
+ #. translators: %s: time period (e.g. "2 hours" ago)
2010
+ #: templates/debug/plugins-themes-sync.php20,
2011
+ #: templates/debug/scheduled-crons.php:93
2012
+ msgid "%s ago"
2013
+ msgstr "%s siden"
2014
+
2015
+ #: templates/debug/plugins-themes-sync.php21,
2016
+ #: templates/debug/scheduled-crons.php:74
2017
+ msgctxt "seconds"
2018
+ msgid "sec"
2019
+ msgstr "sek"
2020
+
2021
+ #: templates/debug/plugins-themes-sync.php:23
2022
+ msgid "Plugins & Themes Sync"
2023
+ msgstr "Synkronisering af plugins og temaer"
2024
+
2025
+ #: templates/debug/plugins-themes-sync.php:28
2026
+ msgid "Total"
2027
+ msgstr "Total"
2028
+
2029
+ #: templates/debug/plugins-themes-sync.php29,
2030
+ #: templates/debug/scheduled-crons.php:84
2031
+ msgid "Last"
2032
+ msgstr "Sidste"
2033
+
2034
+ #: templates/debug/scheduled-crons.php:76
2035
+ msgid "Scheduled Crons"
2036
+ msgstr "Planlagte cron jobs"
2037
+
2038
+ #: templates/debug/scheduled-crons.php:81
2039
+ msgid "Module"
2040
+ msgstr "Modul"
2041
+
2042
+ #: templates/debug/scheduled-crons.php:82
2043
+ msgid "Module Type"
2044
+ msgstr "Modultype"
2045
+
2046
+ #: templates/debug/scheduled-crons.php:83
2047
+ msgid "Cron Type"
2048
+ msgstr "Cron Type"
2049
+
2050
+ #: templates/debug/scheduled-crons.php:85
2051
+ msgid "Next"
2052
+ msgstr "Næste"
2053
+
2054
+ #: templates/forms/affiliation.php:82
2055
+ msgid "Non-expiring"
2056
+ msgstr "Udløber ikke"
2057
+
2058
+ #: templates/forms/affiliation.php:85
2059
+ msgid "Apply to become an affiliate"
2060
+ msgstr "Apply to become an affiliate"
2061
+
2062
+ #: templates/forms/affiliation.php:104
2063
+ msgid "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
2064
+ msgstr "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
2065
+
2066
+ #: templates/forms/affiliation.php:119
2067
+ msgid "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information."
2068
+ msgstr "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information."
2069
+
2070
+ #: templates/forms/affiliation.php:122
2071
+ msgid "Your affiliation account was temporarily suspended."
2072
+ msgstr "Your affiliation account was temporarily suspended."
2073
+
2074
+ #: templates/forms/affiliation.php:125
2075
+ msgid "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days."
2076
+ msgstr "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days."
2077
+
2078
+ #: templates/forms/affiliation.php:128
2079
+ msgid "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
2080
+ msgstr "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
2081
+
2082
+ #: templates/forms/affiliation.php:141
2083
+ msgid "Like the %s? Become our ambassador and earn cash ;-)"
2084
+ msgstr "Like the %s? Become our ambassador and earn cash ;-)"
2085
+
2086
+ #: templates/forms/affiliation.php:142
2087
+ msgid "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
2088
+ msgstr "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
2089
+
2090
+ #: templates/forms/affiliation.php:145
2091
+ msgid "Program Summary"
2092
+ msgstr "Programoversigt"
2093
+
2094
+ #: templates/forms/affiliation.php:147
2095
+ msgid "%s commission when a customer purchases a new license."
2096
+ msgstr "%s commission when a customer purchases a new license."
2097
+
2098
+ #: templates/forms/affiliation.php:149
2099
+ msgid "Get commission for automated subscription renewals."
2100
+ msgstr "Get commission for automated subscription renewals."
2101
+
2102
+ #: templates/forms/affiliation.php:152
2103
+ msgid "%s tracking cookie after the first visit to maximize earnings potential."
2104
+ msgstr "%s tracking cookie after the first visit to maximize earnings potential."
2105
+
2106
+ #: templates/forms/affiliation.php:155
2107
+ msgid "Unlimited commissions."
2108
+ msgstr "Unlimited commissions."
2109
+
2110
+ #: templates/forms/affiliation.php:157
2111
+ msgid "%s minimum payout amount."
2112
+ msgstr "%s minimum payout amount."
2113
+
2114
+ #: templates/forms/affiliation.php:158
2115
+ msgid "Payouts are in USD and processed monthly via PayPal."
2116
+ msgstr "Payouts are in USD and processed monthly via PayPal."
2117
+
2118
+ #: templates/forms/affiliation.php:159
2119
+ msgid "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
2120
+ msgstr "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
2121
+
2122
+ #: templates/forms/affiliation.php:162
2123
+ msgid "Affiliate"
2124
+ msgstr "Affiliate"
2125
+
2126
+ #: templates/forms/affiliation.php165, templates/forms/resend-key.php:23
2127
+ msgid "Email address"
2128
+ msgstr "E-mailadresse"
2129
+
2130
+ #: templates/forms/affiliation.php:169
2131
+ msgid "Full name"
2132
+ msgstr "Fulde navn"
2133
+
2134
+ #: templates/forms/affiliation.php:173
2135
+ msgid "PayPal account email address"
2136
+ msgstr "E-mailadresse til PayPal-konto"
2137
+
2138
+ #: templates/forms/affiliation.php:177
2139
+ msgid "Where are you going to promote the %s?"
2140
+ msgstr "Hvor vil du promovere %s?"
2141
+
2142
+ #: templates/forms/affiliation.php:179
2143
+ msgid "Enter the domain of your website or other websites from where you plan to promote the %s."
2144
+ msgstr "Enter the domain of your website or other websites from where you plan to promote the %s."
2145
+
2146
+ #: templates/forms/affiliation.php:181
2147
+ msgid "Add another domain"
2148
+ msgstr "Tilføj andet domæne"
2149
+
2150
+ #: templates/forms/affiliation.php:185
2151
+ msgid "Extra Domains"
2152
+ msgstr "Ekstra domæner"
2153
+
2154
+ #: templates/forms/affiliation.php:186
2155
+ msgid "Extra domains where you will be marketing the product from."
2156
+ msgstr "Andre domæner du vil markedsføre produktet fra."
2157
+
2158
+ #: templates/forms/affiliation.php:196
2159
+ msgid "Promotion methods"
2160
+ msgstr "Promoveringsmetoder"
2161
+
2162
+ #: templates/forms/affiliation.php:199
2163
+ msgid "Social media (Facebook, Twitter, etc.)"
2164
+ msgstr "Sociale medier (Facebook, Twitter osv.)"
2165
+
2166
+ #: templates/forms/affiliation.php:203
2167
+ msgid "Mobile apps"
2168
+ msgstr "Mobil-apps"
2169
+
2170
+ #: templates/forms/affiliation.php:207
2171
+ msgid "Website, email, and social media statistics (optional)"
2172
+ msgstr "Websted, e-mail, og statistikker for sociale medier (valgfrit)"
2173
+
2174
+ #: templates/forms/affiliation.php:210
2175
+ msgid "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)."
2176
+ msgstr "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)."
2177
+
2178
+ #: templates/forms/affiliation.php:214
2179
+ msgid "How will you promote us?"
2180
+ msgstr "Hvordan vil du promovere os?"
2181
+
2182
+ #: templates/forms/affiliation.php:217
2183
+ msgid "Please provide details on how you intend to promote %s (please be as specific as possible)."
2184
+ msgstr "Please provide details on how you intend to promote %s (please be as specific as possible)."
2185
+
2186
+ #: templates/forms/affiliation.php223, templates/forms/resend-key.php:22
2187
+ msgid "Cancel"
2188
+ msgstr "Annuller"
2189
+
2190
+ #: templates/forms/affiliation.php:225
2191
+ msgid "Become an affiliate"
2192
+ msgstr "Bliv en affiliate"
2193
+
2194
+ #: templates/forms/license-activation.php:20
2195
+ msgid "Please enter the license key that you received in the email right after the purchase:"
2196
+ msgstr "Indtast licensnøglen, du modtog i e-mailen lige efter købet:"
2197
+
2198
+ #: templates/forms/license-activation.php:25
2199
+ msgid "Update License"
2200
+ msgstr "Opdater licens"
2201
+
2202
+ #: templates/forms/optout.php:30
2203
+ msgctxt "verb"
2204
+ msgid "Opt Out"
2205
+ msgstr "Frameld"
2206
+
2207
+ #: templates/forms/optout.php:31
2208
+ msgctxt "verb"
2209
+ msgid "Opt In"
2210
+ msgstr "Tilmeld"
2211
+
2212
+ #: templates/forms/optout.php:33
2213
+ msgid "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
2214
+ msgstr "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
2215
+
2216
+ #: templates/forms/optout.php:35
2217
+ msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
2218
+ msgstr "Ved at klikke \"Frameld\" vil vi ikke længere sende data fra %s til %s."
2219
+
2220
+ #: templates/forms/premium-versions-upgrade-handler.php:40
2221
+ msgid "There is a new version of %s available."
2222
+ msgstr "En ny version af %s er tilgængelig."
2223
+
2224
+ #: templates/forms/premium-versions-upgrade-handler.php:41
2225
+ msgid " %s to access version %s security & feature updates, and support."
2226
+ msgstr " %s to access version %s security & feature updates, and support."
2227
+
2228
+ #: templates/forms/premium-versions-upgrade-handler.php:54
2229
+ msgid "New Version Available"
2230
+ msgstr "Ny version tilgængelig"
2231
+
2232
+ #: templates/forms/premium-versions-upgrade-handler.php:75
2233
+ msgctxt "close a window"
2234
+ msgid "Dismiss"
2235
+ msgstr "Fjern"
2236
+
2237
+ #: templates/forms/resend-key.php:21
2238
+ msgid "Send License Key"
2239
+ msgstr "Send licensnøgle"
2240
+
2241
+ #: templates/forms/resend-key.php:57
2242
+ msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
2243
+ msgstr "Indtast e-mailadressen, som du benyttede ved opgraderingen, nedenfor og vi vil gensende licensnøglen til dig."
2244
+
2245
+ #: templates/forms/subscription-cancellation.php:37
2246
+ msgid "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site."
2247
+ msgstr "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site."
2248
+
2249
+ #: templates/forms/subscription-cancellation.php:47
2250
+ msgid "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?"
2251
+ msgstr "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?"
2252
+
2253
+ #: templates/forms/subscription-cancellation.php:52
2254
+ msgid "license"
2255
+ msgstr "license"
2256
+
2257
+ #: templates/forms/subscription-cancellation.php:57
2258
+ msgid "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site."
2259
+ msgstr "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site."
2260
+
2261
+ #: templates/forms/subscription-cancellation.php:68
2262
+ msgid "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support."
2263
+ msgstr "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support."
2264
+
2265
+ #: templates/forms/subscription-cancellation.php:103
2266
+ msgid "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license."
2267
+ msgstr "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license."
2268
+
2269
+ #: templates/forms/subscription-cancellation.php:136
2270
+ msgid "Cancel %s?"
2271
+ msgstr "Cancel %s?"
2272
+
2273
+ #: templates/forms/subscription-cancellation.php:143
2274
+ msgid "Proceed"
2275
+ msgstr "Proceed"
2276
+
2277
+ #: templates/forms/subscription-cancellation.php191,
2278
+ #: templates/forms/deactivation/form.php:150
2279
+ msgid "Cancel %s & Proceed"
2280
+ msgstr "Cancel %s & Proceed"
2281
+
2282
+ #: templates/forms/trial-start.php:22
2283
+ msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
2284
+ msgstr "Du er 1 klik fra at begynde din %1$s dages gratis prøveperiode af planen %2$s."
2285
+
2286
+ #: templates/forms/trial-start.php:28
2287
+ msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt in with your user and non-sensitive site information, allowing the %s to periodically send data to %s to check for version updates and to validate your trial."
2288
+ msgstr "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt in with your user and non-sensitive site information, allowing the %s to periodically send data to %s to check for version updates and to validate your trial."
2289
+
2290
+ #: templates/js/style-premium-theme.php:37
2291
+ msgid "Premium"
2292
+ msgstr "Premium"
2293
+
2294
+ #: templates/partials/network-activation.php:23
2295
+ msgid "Activate license on all sites in the network."
2296
+ msgstr "Aktiver licens på alle websteder i netværket."
2297
+
2298
+ #: templates/partials/network-activation.php:24
2299
+ msgid "Apply on all sites in the network."
2300
+ msgstr "Anvend på alle websteder i netværket."
2301
+
2302
+ #: templates/partials/network-activation.php:27
2303
+ msgid "Activate license on all pending sites."
2304
+ msgstr "Akiver licens på alle afventende websteder."
2305
+
2306
+ #: templates/partials/network-activation.php:28
2307
+ msgid "Apply on all pending sites."
2308
+ msgstr "Anvend på alle afventende websteder."
2309
+
2310
+ #: templates/partials/network-activation.php36,
2311
+ #: templates/partials/network-activation.php:68
2312
+ msgid "allow"
2313
+ msgstr "tillad"
2314
+
2315
+ #: templates/partials/network-activation.php38,
2316
+ #: templates/partials/network-activation.php:70
2317
+ msgid "delegate"
2318
+ msgstr "delegér"
2319
+
2320
+ #: templates/partials/network-activation.php41,
2321
+ #: templates/partials/network-activation.php:73
2322
+ msgid "skip"
2323
+ msgstr "spring over"
2324
+
2325
+ #: templates/plugin-info/description.php72,
2326
+ #: templates/plugin-info/screenshots.php:31
2327
+ msgid "Click to view full-size screenshot %d"
2328
+ msgstr "Klik for at vise skærmbillede %d i fuld skærm"
2329
+
2330
+ #: templates/plugin-info/features.php:56
2331
+ msgid "Unlimited Updates"
2332
+ msgstr "Ubegrænsede opdateringer"
2333
+
2334
+ #: templates/account/partials/activate-license-button.php:46
2335
+ msgid "Localhost"
2336
+ msgstr "Localhost"
2337
+
2338
+ #: templates/account/partials/activate-license-button.php:50
2339
+ msgctxt "as 5 licenses left"
2340
+ msgid "%s left"
2341
+ msgstr "%s tilbage"
2342
+
2343
+ #: templates/account/partials/activate-license-button.php:51
2344
+ msgid "Last license"
2345
+ msgstr "Seneste license"
2346
+
2347
+ #: templates/account/partials/addon.php:115
2348
+ msgid "Cancelled"
2349
+ msgstr "Annulleret"
2350
+
2351
+ #: templates/account/partials/addon.php:125
2352
+ msgid "No expiration"
2353
+ msgstr "Udløber ikke"
2354
+
2355
+ #: templates/account/partials/addon.php264,
2356
+ #: templates/account/partials/addon.php:317
2357
+ msgid "Activate this add-on"
2358
+ msgstr "Aktiver denne tilføjelse"
2359
+
2360
+ #: templates/account/partials/site.php:181
2361
+ msgid "Owner Name"
2362
+ msgstr "Ejer-navn"
2363
+
2364
+ #: templates/account/partials/site.php:193
2365
+ msgid "Owner Email"
2366
+ msgstr "E-mailadresse for ejer"
2367
+
2368
+ #: templates/account/partials/site.php:205
2369
+ msgid "Owner ID"
2370
+ msgstr "Ejer-ID"
2371
+
2372
+ #: templates/account/partials/site.php:270
2373
+ msgid "Subscription"
2374
+ msgstr "Abonnement"
2375
+
2376
+ #: templates/forms/deactivation/contact.php:19
2377
+ msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
2378
+ msgstr "Vi beklager ulejligheden, og vi er her for at hjælpe, hvis du giver os chancen."
2379
+
2380
+ #: templates/forms/deactivation/contact.php:22
2381
+ msgid "Contact Support"
2382
+ msgstr "Kontakt support"
2383
+
2384
+ #: templates/forms/deactivation/form.php:59
2385
+ msgid "Anonymous feedback"
2386
+ msgstr "Anonym feedback"
2387
+
2388
+ #: templates/forms/deactivation/form.php:66
2389
+ msgid "Deactivate"
2390
+ msgstr "Deaktiver"
2391
+
2392
+ #: templates/forms/deactivation/form.php:68
2393
+ msgid "Activate %s"
2394
+ msgstr "Aktiver %s"
2395
+
2396
+ #: templates/forms/deactivation/form.php:80
2397
+ msgid "Quick Feedback"
2398
+ msgstr "Quick Feedback"
2399
+
2400
+ #: templates/forms/deactivation/form.php:84
2401
+ msgid "If you have a moment, please let us know why you are %s"
2402
+ msgstr "Hvis du har tid, så lad os venligst vide hvorfor du %s"
2403
+
2404
+ #: templates/forms/deactivation/form.php:84
2405
+ msgid "deactivating"
2406
+ msgstr "deaktiverer"
2407
+
2408
+ #: templates/forms/deactivation/form.php:84
2409
+ msgid "switching"
2410
+ msgstr "skifter"
2411
+
2412
+ #: templates/forms/deactivation/form.php:332
2413
+ msgid "Submit & %s"
2414
+ msgstr "Send & %s"
2415
+
2416
+ #: templates/forms/deactivation/form.php:353
2417
+ msgid "Kindly tell us the reason so we can improve."
2418
+ msgstr "Fortæl os venligst årsagen, så vi kan forbedre det."
2419
+
2420
+ #: templates/forms/deactivation/form.php:478
2421
+ msgid "Yes - %s"
2422
+ msgstr "Ja - %s"
2423
+
2424
+ #: templates/forms/deactivation/form.php:485
2425
+ msgid "Skip & %s"
2426
+ msgstr "Spring over & %s"
2427
+
2428
+ #: templates/forms/deactivation/retry-skip.php:21
2429
+ msgid "Click here to use the plugin anonymously"
2430
+ msgstr "Klik her for at benytte pluginnet anonymt"
2431
+
2432
+ #: templates/forms/deactivation/retry-skip.php:23
2433
+ msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
2434
+ msgstr "Du har måske overset det, men du behøver ikke at dele data og kan blot %s tilmeldingen."
freemius/languages/freemius-en.mo CHANGED
Binary file
freemius/languages/freemius-en.po CHANGED
@@ -1,2205 +1,2320 @@
1
- # Copyright (C) 2018 freemius
2
- # This file is distributed under the same license as the freemius package.
3
- msgid ""
4
- msgstr ""
5
- "Project-Id-Version: freemius\n"
6
- "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
7
- "POT-Creation-Date: \n"
8
- "PO-Revision-Date: \n"
9
- "Last-Translator: Vova Feldman <vova@freemius.com>\n"
10
- "Language: \n"
11
- "Language-Team: Freemius Team <admin@freemius.com>\n"
12
- "Content-Type: text/plain; charset=UTF-8\n"
13
- "Content-Transfer-Encoding: 8bit\n"
14
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
- "MIME-Version: 1.0\n"
16
- "X-Poedit-Basepath: ..\n"
17
- "X-Poedit-KeywordsList: get_text_inline;fs_text_inline;fs_echo_inline;fs_esc_js_inline;fs_esc_attr_inline;fs_esc_attr_echo_inline;fs_esc_html_inline;fs_esc_html_echo_inline;get_text_x_inline:1,2c;fs_text_x_inline:1,2c;fs_echo_x_inline:1,2c;fs_esc_attr_x_inline:1,2c;fs_esc_js_x_inline:1,2c;fs_esc_js_echo_x_inline:1,2c;fs_esc_html_x_inline:1,2c;fs_esc_html_echo_x_inline:1,2c\n"
18
- "X-Poedit-SearchPath-0: .\n"
19
- "X-Poedit-SearchPathExcluded-0: *.js\n"
20
- "X-Poedit-SourceCharset: UTF-8\n"
21
-
22
- #: includes/class-freemius.php:1551
23
- msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
24
- msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
25
-
26
- #: includes/class-freemius.php:1553
27
- msgid "Error"
28
- msgstr "Error"
29
-
30
- #: includes/class-freemius.php:1871
31
- msgid "I found a better %s"
32
- msgstr "I found a better %s"
33
-
34
- #: includes/class-freemius.php:1873
35
- msgid "What's the %s's name?"
36
- msgstr "What's the %s's name?"
37
-
38
- #: includes/class-freemius.php:1879
39
- msgid "It's a temporary %s. I'm just debugging an issue."
40
- msgstr "It's a temporary %s. I'm just debugging an issue."
41
-
42
- #: includes/class-freemius.php:1881
43
- msgid "Deactivation"
44
- msgstr "Deactivation"
45
-
46
- #: includes/class-freemius.php:1882
47
- msgid "Theme Switch"
48
- msgstr "Theme Switch"
49
-
50
- #: includes/class-freemius.php:1891, templates/forms/resend-key.php:24
51
- msgid "Other"
52
- msgstr "Other"
53
-
54
- #: includes/class-freemius.php:1899
55
- msgid "I no longer need the %s"
56
- msgstr "I no longer need the %s"
57
-
58
- #: includes/class-freemius.php:1906
59
- msgid "I only needed the %s for a short period"
60
- msgstr "I only needed the %s for a short period"
61
-
62
- #: includes/class-freemius.php:1912
63
- msgid "The %s broke my site"
64
- msgstr "The %s broke my site"
65
-
66
- #: includes/class-freemius.php:1919
67
- msgid "The %s suddenly stopped working"
68
- msgstr "The %s suddenly stopped working"
69
-
70
- #: includes/class-freemius.php:1929
71
- msgid "I can't pay for it anymore"
72
- msgstr "I can't pay for it anymore"
73
-
74
- #: includes/class-freemius.php:1931
75
- msgid "What price would you feel comfortable paying?"
76
- msgstr "What price would you feel comfortable paying?"
77
-
78
- #: includes/class-freemius.php:1937
79
- msgid "I don't like to share my information with you"
80
- msgstr "I don't like to share my information with you"
81
-
82
- #: includes/class-freemius.php:1958
83
- msgid "The %s didn't work"
84
- msgstr "The %s didn't work"
85
-
86
- #: includes/class-freemius.php:1968
87
- msgid "I couldn't understand how to make it work"
88
- msgstr "I couldn't understand how to make it work"
89
-
90
- #: includes/class-freemius.php:1976
91
- msgid "The %s is great, but I need specific feature that you don't support"
92
- msgstr "The %s is great, but I need specific feature that you don't support"
93
-
94
- #: includes/class-freemius.php:1978
95
- msgid "What feature?"
96
- msgstr "What feature?"
97
-
98
- #: includes/class-freemius.php:1982
99
- msgid "The %s is not working"
100
- msgstr "The %s is not working"
101
-
102
- #: includes/class-freemius.php:1984
103
- msgid "Kindly share what didn't work so we can fix it for future users..."
104
- msgstr "Kindly share what didn't work so we can fix it for future users..."
105
-
106
- #: includes/class-freemius.php:1988
107
- msgid "It's not what I was looking for"
108
- msgstr "It's not what I was looking for"
109
-
110
- #: includes/class-freemius.php:1990
111
- msgid "What you've been looking for?"
112
- msgstr "What you've been looking for?"
113
-
114
- #: includes/class-freemius.php:1994
115
- msgid "The %s didn't work as expected"
116
- msgstr "The %s didn't work as expected"
117
-
118
- #: includes/class-freemius.php:1996
119
- msgid "What did you expect?"
120
- msgstr "What did you expect?"
121
-
122
- #: includes/class-freemius.php:2729, templates/debug.php:20
123
- msgid "Freemius Debug"
124
- msgstr "Freemius Debug"
125
-
126
- #: includes/class-freemius.php:3402
127
- msgid "I don't know what is cURL or how to install it, help me!"
128
- msgstr "I don't know what is cURL or how to install it, help me!"
129
-
130
- #: includes/class-freemius.php:3404
131
- msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
132
- msgstr "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
133
-
134
- #: includes/class-freemius.php:3411
135
- msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
136
- msgstr "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
137
-
138
- #: includes/class-freemius.php:3516
139
- msgid "Yes - do your thing"
140
- msgstr "Yes - do your thing"
141
-
142
- #: includes/class-freemius.php:3521
143
- msgid "No - just deactivate"
144
- msgstr "No - just deactivate"
145
-
146
- #: includes/class-freemius.php:3566, includes/class-freemius.php:4066, includes/class-freemius.php:5127, includes/class-freemius.php:10941, includes/class-freemius.php:14205, includes/class-freemius.php:14257, includes/class-freemius.php:14319, includes/class-freemius.php:16448, includes/class-freemius.php:16458, includes/class-freemius.php:17014, includes/class-freemius.php:17032, includes/class-freemius.php:17130, includes/class-freemius.php:17866, templates/add-ons.php:43
147
- msgctxt "exclamation"
148
- msgid "Oops"
149
- msgstr "Oops"
150
-
151
- #: includes/class-freemius.php:3635
152
- msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
153
- msgstr "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
154
-
155
- #: includes/class-freemius.php:4063
156
- msgctxt "addonX cannot run without pluginY"
157
- msgid "%s cannot run without %s."
158
- msgstr "%s cannot run without %s."
159
-
160
- #: includes/class-freemius.php:4064
161
- msgctxt "addonX cannot run..."
162
- msgid "%s cannot run without the plugin."
163
- msgstr "%s cannot run without the plugin."
164
-
165
- #: includes/class-freemius.php:4176, includes/class-freemius.php:4201, includes/class-freemius.php:17103
166
- msgid "Unexpected API error. Please contact the %s's author with the following error."
167
- msgstr "Unexpected API error. Please contact the %s's author with the following error."
168
-
169
- #: includes/class-freemius.php:4815
170
- msgid "Premium %s version was successfully activated."
171
- msgstr "Premium %s version was successfully activated."
172
-
173
- #: includes/class-freemius.php:4827, includes/class-freemius.php:6660
174
- msgctxt "Used to express elation, enthusiasm, or triumph (especially in electronic communication)."
175
- msgid "W00t"
176
- msgstr "W00t"
177
-
178
- #: includes/class-freemius.php:4842
179
- msgid "You have a %s license."
180
- msgstr "You have a %s license."
181
-
182
- #: includes/class-freemius.php:4846, includes/class-freemius.php:13626, includes/class-freemius.php:13637, includes/class-freemius.php:16376, includes/class-freemius.php:16676, includes/class-freemius.php:16741, includes/class-freemius.php:16891
183
- msgctxt "interjection expressing joy or exuberance"
184
- msgid "Yee-haw"
185
- msgstr "Yee-haw"
186
-
187
- #: includes/class-freemius.php:5110
188
- msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
189
- msgstr "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
190
-
191
- #: includes/class-freemius.php:5114
192
- msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
193
- msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
194
-
195
- #: includes/class-freemius.php:5123, templates/add-ons.php:99, templates/account/partials/addon.php:283
196
- msgid "More information about %s"
197
- msgstr "More information about %s"
198
-
199
- #: includes/class-freemius.php:5124
200
- msgid "Purchase License"
201
- msgstr "Purchase License"
202
-
203
- #: includes/class-freemius.php:6035, templates/connect.php:161
204
- msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
205
- msgstr "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
206
-
207
- #: includes/class-freemius.php:6039
208
- msgid "start the trial"
209
- msgstr "start the trial"
210
-
211
- #: includes/class-freemius.php:6040, templates/connect.php:165
212
- msgid "complete the install"
213
- msgstr "complete the install"
214
-
215
- #: includes/class-freemius.php:6147
216
- msgid "You are just one step away - %s"
217
- msgstr "You are just one step away - %s"
218
-
219
- #: includes/class-freemius.php:6150
220
- msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
221
- msgid "Complete \"%s\" Activation Now"
222
- msgstr "Complete \"%s\" Activation Now"
223
-
224
- #: includes/class-freemius.php:6227
225
- msgid "We made a few tweaks to the %s, %s"
226
- msgstr "We made a few tweaks to the %s, %s"
227
-
228
- #: includes/class-freemius.php:6231
229
- msgid "Opt in to make \"%s\" Better!"
230
- msgstr "Opt in to make \"%s\" Better!"
231
-
232
- #: includes/class-freemius.php:6659
233
- msgid "The upgrade of %s was successfully completed."
234
- msgstr "The upgrade of %s was successfully completed."
235
-
236
- #: includes/class-freemius.php:8384, includes/class-fs-plugin-updater.php:581, includes/class-fs-plugin-updater.php:733, includes/class-fs-plugin-updater.php:739, templates/auto-installation.php:32
237
- msgid "Add-On"
238
- msgstr "Add-On"
239
-
240
- #: includes/class-freemius.php:8386, templates/debug.php:349, templates/debug.php:510
241
- msgid "Plugin"
242
- msgstr "Plugin"
243
-
244
- #: includes/class-freemius.php:8387, templates/debug.php:349, templates/debug.php:510, templates/forms/deactivation/form.php:64
245
- msgid "Theme"
246
- msgstr "Theme"
247
-
248
- #: includes/class-freemius.php:10808
249
- msgid "invalid_site_details_collection"
250
- msgstr "invalid_site_details_collection"
251
-
252
- #: includes/class-freemius.php:10928
253
- msgid "We couldn't find your email address in the system, are you sure it's the right address?"
254
- msgstr "We couldn't find your email address in the system, are you sure it's the right address?"
255
-
256
- #: includes/class-freemius.php:10930
257
- msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
258
- msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?"
259
-
260
- #: includes/class-freemius.php:11166
261
- msgid "Account is pending activation."
262
- msgstr "Account is pending activation."
263
-
264
- #: includes/class-freemius.php:13608
265
- msgid "%s activation was successfully completed."
266
- msgstr "%s activation was successfully completed."
267
-
268
- #: includes/class-freemius.php:13622
269
- msgid "Your account was successfully activated with the %s plan."
270
- msgstr "Your account was successfully activated with the %s plan."
271
-
272
- #: includes/class-freemius.php:13633, includes/class-freemius.php:16737
273
- msgid "Your trial has been successfully started."
274
- msgstr "Your trial has been successfully started."
275
-
276
- #: includes/class-freemius.php:14203, includes/class-freemius.php:14255, includes/class-freemius.php:14317
277
- msgid "Couldn't activate %s."
278
- msgstr "Couldn't activate %s."
279
-
280
- #: includes/class-freemius.php:14204, includes/class-freemius.php:14256, includes/class-freemius.php:14318
281
- msgid "Please contact us with the following message:"
282
- msgstr "Please contact us with the following message:"
283
-
284
- #: includes/class-freemius.php:14666, includes/class-freemius.php:18929
285
- msgid "Upgrade"
286
- msgstr "Upgrade"
287
-
288
- #: includes/class-freemius.php:14672
289
- msgid "Start Trial"
290
- msgstr "Start Trial"
291
-
292
- #: includes/class-freemius.php:14674
293
- msgid "Pricing"
294
- msgstr "Pricing"
295
-
296
- #: includes/class-freemius.php:14734, includes/class-freemius.php:14736
297
- msgid "Affiliation"
298
- msgstr "Affiliation"
299
-
300
- #: includes/class-freemius.php:14756, includes/class-freemius.php:14758, templates/account.php:146, templates/debug.php:314
301
- msgid "Account"
302
- msgstr "Account"
303
-
304
- #: includes/class-freemius.php:14769, includes/class-freemius.php:14771, includes/customizer/class-fs-customizer-support-section.php:60
305
- msgid "Contact Us"
306
- msgstr "Contact Us"
307
-
308
- #: includes/class-freemius.php:14781, includes/class-freemius.php:14783, includes/class-freemius.php:18939, templates/account.php:96, templates/account/partials/addon.php:37
309
- msgid "Add-Ons"
310
- msgstr "Add-Ons"
311
-
312
- #: includes/class-freemius.php:14815, templates/pricing.php:97
313
- msgctxt "noun"
314
- msgid "Pricing"
315
- msgstr "Pricing"
316
-
317
- #: includes/class-freemius.php:15009, includes/customizer/class-fs-customizer-support-section.php:67
318
- msgid "Support Forum"
319
- msgstr "Support Forum"
320
-
321
- #: includes/class-freemius.php:15794
322
- msgid "Your email has been successfully verified - you are AWESOME!"
323
- msgstr "Your email has been successfully verified - you are AWESOME!"
324
-
325
- #: includes/class-freemius.php:15795
326
- msgctxt "a positive response"
327
- msgid "Right on"
328
- msgstr "Right on"
329
-
330
- #: includes/class-freemius.php:16367
331
- msgid "Your %s Add-on plan was successfully upgraded."
332
- msgstr "Your %s Add-on plan was successfully upgraded."
333
-
334
- #: includes/class-freemius.php:16369
335
- msgid "%s Add-on was successfully purchased."
336
- msgstr "%s Add-on was successfully purchased."
337
-
338
- #: includes/class-freemius.php:16372
339
- msgid "Download the latest version"
340
- msgstr "Download the latest version"
341
-
342
- #: includes/class-freemius.php:16444
343
- msgctxt "%1s - plugin title, %2s - API domain"
344
- msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
345
- msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
346
-
347
- #: includes/class-freemius.php:16447, includes/class-freemius.php:16862, includes/class-freemius.php:16927
348
- msgid "Error received from the server:"
349
- msgstr "Error received from the server:"
350
-
351
- #: includes/class-freemius.php:16457
352
- msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
353
- msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
354
-
355
- #: includes/class-freemius.php:16639, includes/class-freemius.php:16867, includes/class-freemius.php:16910
356
- msgctxt "something somebody says when they are thinking about what you have just said."
357
- msgid "Hmm"
358
- msgstr "Hmm"
359
-
360
- #: includes/class-freemius.php:16652
361
- msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
362
- msgstr "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
363
-
364
- #: includes/class-freemius.php:16653, templates/account.php:98, templates/add-ons.php:130, templates/account/partials/addon.php:39
365
- msgctxt "trial period"
366
- msgid "Trial"
367
- msgstr "Trial"
368
-
369
- #: includes/class-freemius.php:16658
370
- msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
371
- msgstr "I have upgraded my account but when I try to Sync the License, the plan remains %s."
372
-
373
- #: includes/class-freemius.php:16662, includes/class-freemius.php:16719
374
- msgid "Please contact us here"
375
- msgstr "Please contact us here"
376
-
377
- #: includes/class-freemius.php:16672
378
- msgid "Your plan was successfully upgraded."
379
- msgstr "Your plan was successfully upgraded."
380
-
381
- #: includes/class-freemius.php:16689
382
- msgid "Your plan was successfully changed to %s."
383
- msgstr "Your plan was successfully changed to %s."
384
-
385
- #: includes/class-freemius.php:16705
386
- msgid "Your license has expired. You can still continue using the free %s forever."
387
- msgstr "Your license has expired. You can still continue using the free %s forever."
388
-
389
- #: includes/class-freemius.php:16707
390
- msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
391
- msgstr "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
392
-
393
- #: includes/class-freemius.php:16715
394
- msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
395
- msgstr "Your license has been cancelled. If you think it's a mistake, please contact support."
396
-
397
- #: includes/class-freemius.php:16728
398
- msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
399
- msgstr "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
400
-
401
- #: includes/class-freemius.php:16751
402
- msgid "Your free trial has expired. You can still continue using all our free features."
403
- msgstr "Your free trial has expired. You can still continue using all our free features."
404
-
405
- #: includes/class-freemius.php:16753
406
- msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
407
- msgstr "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
408
-
409
- #: includes/class-freemius.php:16858
410
- msgid "It looks like the license could not be activated."
411
- msgstr "It looks like the license could not be activated."
412
-
413
- #: includes/class-freemius.php:16888
414
- msgid "Your license was successfully activated."
415
- msgstr "Your license was successfully activated."
416
-
417
- #: includes/class-freemius.php:16914
418
- msgid "It looks like your site currently doesn't have an active license."
419
- msgstr "It looks like your site currently doesn't have an active license."
420
-
421
- #: includes/class-freemius.php:16926
422
- msgid "It looks like the license deactivation failed."
423
- msgstr "It looks like the license deactivation failed."
424
-
425
- #: includes/class-freemius.php:16954
426
- msgid "Your license was successfully deactivated, you are back to the %s plan."
427
- msgstr "Your license was successfully deactivated, you are back to the %s plan."
428
-
429
- #: includes/class-freemius.php:16955
430
- msgid "O.K"
431
- msgstr "O.K"
432
-
433
- #: includes/class-freemius.php:17003
434
- msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
435
- msgstr "Your plan was successfully downgraded. Your %s plan license will expire in %s."
436
-
437
- #: includes/class-freemius.php:17013
438
- msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
439
- msgstr "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
440
-
441
- #: includes/class-freemius.php:17037
442
- msgid "You are already running the %s in a trial mode."
443
- msgstr "You are already running the %s in a trial mode."
444
-
445
- #: includes/class-freemius.php:17048
446
- msgid "You already utilized a trial before."
447
- msgstr "You already utilized a trial before."
448
-
449
- #: includes/class-freemius.php:17062
450
- msgid "Plan %s do not exist, therefore, can't start a trial."
451
- msgstr "Plan %s do not exist, therefore, can't start a trial."
452
-
453
- #: includes/class-freemius.php:17073
454
- msgid "Plan %s does not support a trial period."
455
- msgstr "Plan %s does not support a trial period."
456
-
457
- #: includes/class-freemius.php:17084
458
- msgid "None of the %s's plans supports a trial period."
459
- msgstr "None of the %s's plans supports a trial period."
460
-
461
- #: includes/class-freemius.php:17134
462
- msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
463
- msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
464
-
465
- #: includes/class-freemius.php:17185
466
- msgid "Your %s free trial was successfully cancelled."
467
- msgstr "Your %s free trial was successfully cancelled."
468
-
469
- #: includes/class-freemius.php:17190
470
- msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
471
- msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
472
-
473
- #: includes/class-freemius.php:17474
474
- msgid "Version %s was released."
475
- msgstr "Version %s was released."
476
-
477
- #: includes/class-freemius.php:17474
478
- msgid "Please download %s."
479
- msgstr "Please download %s."
480
-
481
- #: includes/class-freemius.php:17481
482
- msgid "the latest %s version here"
483
- msgstr "the latest %s version here"
484
-
485
- #: includes/class-freemius.php:17486
486
- msgid "New"
487
- msgstr "New"
488
-
489
- #: includes/class-freemius.php:17491
490
- msgid "Seems like you got the latest release."
491
- msgstr "Seems like you got the latest release."
492
-
493
- #: includes/class-freemius.php:17492
494
- msgid "You are all good!"
495
- msgstr "You are all good!"
496
-
497
- #: includes/class-freemius.php:17758
498
- msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
499
- msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
500
-
501
- #: includes/class-freemius.php:17893
502
- msgid "Site successfully opted in."
503
- msgstr "Site successfully opted in."
504
-
505
- #: includes/class-freemius.php:17894, includes/class-freemius.php:18671
506
- msgid "Awesome"
507
- msgstr "Awesome"
508
-
509
- #: includes/class-freemius.php:17910, templates/forms/optout.php:32
510
- msgid "We appreciate your help in making the %s better by letting us track some usage data."
511
- msgstr "We appreciate your help in making the %s better by letting us track some usage data."
512
-
513
- #: includes/class-freemius.php:17911
514
- msgid "Thank you!"
515
- msgstr "Thank you!"
516
-
517
- #: includes/class-freemius.php:17918
518
- msgid "We will no longer be sending any usage data of %s on %s to %s."
519
- msgstr "We will no longer be sending any usage data of %s on %s to %s."
520
-
521
- #: includes/class-freemius.php:18033
522
- msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
523
- msgstr "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
524
-
525
- #: includes/class-freemius.php:18039
526
- msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
527
- msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
528
-
529
- #: includes/class-freemius.php:18044
530
- msgid "%s is the new owner of the account."
531
- msgstr "%s is the new owner of the account."
532
-
533
- #: includes/class-freemius.php:18046
534
- msgctxt "as congratulations"
535
- msgid "Congrats"
536
- msgstr "Congrats"
537
-
538
- #: includes/class-freemius.php:18066
539
- msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
540
- msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered."
541
-
542
- #: includes/class-freemius.php:18067
543
- msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
544
- msgstr "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
545
-
546
- #: includes/class-freemius.php:18074
547
- msgid "Change Ownership"
548
- msgstr "Change Ownership"
549
-
550
- #: includes/class-freemius.php:18082
551
- msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
552
- msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
553
-
554
- #: includes/class-freemius.php:18094
555
- msgid "Please provide your full name."
556
- msgstr "Please provide your full name."
557
-
558
- #: includes/class-freemius.php:18099
559
- msgid "Your name was successfully updated."
560
- msgstr "Your name was successfully updated."
561
-
562
- #: includes/class-freemius.php:18160
563
- msgid "You have successfully updated your %s."
564
- msgstr "You have successfully updated your %s."
565
-
566
- #: includes/class-freemius.php:18300
567
- msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
568
- msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server."
569
-
570
- #: includes/class-freemius.php:18301
571
- msgctxt "advance notice of something that will need attention."
572
- msgid "Heads up"
573
- msgstr "Heads up"
574
-
575
- #: includes/class-freemius.php:18711
576
- msgctxt "exclamation"
577
- msgid "Hey"
578
- msgstr "Hey"
579
-
580
- #: includes/class-freemius.php:18711
581
- msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
582
- msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
583
-
584
- #: includes/class-freemius.php:18719
585
- msgid "No commitment for %s days - cancel anytime!"
586
- msgstr "No commitment for %s days - cancel anytime!"
587
-
588
- #: includes/class-freemius.php:18720
589
- msgid "No credit card required"
590
- msgstr "No credit card required"
591
-
592
- #: includes/class-freemius.php:18727, templates/forms/trial-start.php:53
593
- msgctxt "call to action"
594
- msgid "Start free trial"
595
- msgstr "Start free trial"
596
-
597
- #: includes/class-freemius.php:18804
598
- msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
599
- msgstr "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
600
-
601
- #: includes/class-freemius.php:18813
602
- msgid "Learn more"
603
- msgstr "Learn more"
604
-
605
- #: includes/class-freemius.php:18963, templates/account.php:394, templates/account.php:497, templates/connect.php:169, templates/connect.php:408, templates/forms/license-activation.php:24, templates/account/partials/addon.php:230
606
- msgid "Activate License"
607
- msgstr "Activate License"
608
-
609
- #: includes/class-freemius.php:18964, templates/account.php:457, templates/account.php:496, templates/account/partials/site.php:256
610
- msgid "Change License"
611
- msgstr "Change License"
612
-
613
- #: includes/class-freemius.php:19046, templates/account/partials/site.php:161
614
- msgid "Opt Out"
615
- msgstr "Opt Out"
616
-
617
- #: includes/class-freemius.php:19048, includes/class-freemius.php:19053, templates/account/partials/site.php:43, templates/account/partials/site.php:161
618
- msgid "Opt In"
619
- msgstr "Opt In"
620
-
621
- #: includes/class-freemius.php:19245
622
- msgid "Please follow these steps to complete the upgrade"
623
- msgstr "Please follow these steps to complete the upgrade"
624
-
625
- #: includes/class-freemius.php:19249
626
- msgid "Download the latest %s version"
627
- msgstr "Download the latest %s version"
628
-
629
- #: includes/class-freemius.php:19253
630
- msgid "Upload and activate the downloaded version"
631
- msgstr "Upload and activate the downloaded version"
632
-
633
- #: includes/class-freemius.php:19255
634
- msgid "How to upload and activate?"
635
- msgstr "How to upload and activate?"
636
-
637
- #: includes/class-freemius.php:19384
638
- msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
639
- msgstr "%sClick here%s to choose the sites where you'd like to activate the license on."
640
-
641
- #: includes/class-freemius.php:19545
642
- msgid "Auto installation only works for opted-in users."
643
- msgstr "Auto installation only works for opted-in users."
644
-
645
- #: includes/class-freemius.php:19555, includes/class-freemius.php:19588, includes/class-fs-plugin-updater.php:713, includes/class-fs-plugin-updater.php:727
646
- msgid "Invalid module ID."
647
- msgstr "Invalid module ID."
648
-
649
- #: includes/class-freemius.php:19564, includes/class-fs-plugin-updater.php:747
650
- msgid "Premium version already active."
651
- msgstr "Premium version already active."
652
-
653
- #: includes/class-freemius.php:19571
654
- msgid "You do not have a valid license to access the premium version."
655
- msgstr "You do not have a valid license to access the premium version."
656
-
657
- #: includes/class-freemius.php:19578
658
- msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
659
- msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version."
660
-
661
- #: includes/class-freemius.php:19596, includes/class-fs-plugin-updater.php:746
662
- msgid "Premium add-on version already installed."
663
- msgstr "Premium add-on version already installed."
664
-
665
- #: includes/class-freemius.php:19941
666
- msgid "View paid features"
667
- msgstr "View paid features"
668
-
669
- #: includes/class-freemius.php:20251
670
- msgid "Thank you so much for using %s and its add-ons!"
671
- msgstr "Thank you so much for using %s and its add-ons!"
672
-
673
- #: includes/class-freemius.php:20252
674
- msgid "Thank you so much for using %s!"
675
- msgstr "Thank you so much for using %s!"
676
-
677
- #: includes/class-freemius.php:20258
678
- msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
679
- msgstr "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
680
-
681
- #: includes/class-freemius.php:20262
682
- msgid "Thank you so much for using our products!"
683
- msgstr "Thank you so much for using our products!"
684
-
685
- #: includes/class-freemius.php:20263
686
- msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
687
- msgstr "You've already opted-in to our usage-tracking, which helps us keep improving them."
688
-
689
- #: includes/class-freemius.php:20282
690
- msgid "%s and its add-ons"
691
- msgstr "%s and its add-ons"
692
-
693
- #: includes/class-freemius.php:20291
694
- msgid "Products"
695
- msgstr "Products"
696
-
697
- #: includes/class-freemius.php:20298, templates/connect.php:259
698
- msgid "Yes"
699
- msgstr "Yes"
700
-
701
- #: includes/class-freemius.php:20299, templates/connect.php:260
702
- msgid "send me security & feature updates, educational content and offers."
703
- msgstr "send me security & feature updates, educational content and offers."
704
-
705
- #: includes/class-freemius.php:20300, templates/connect.php:265
706
- msgid "No"
707
- msgstr "No"
708
-
709
- #: includes/class-freemius.php:20302, templates/connect.php:267
710
- msgid "do %sNOT%s send me security & feature updates, educational content and offers."
711
- msgstr "do %sNOT%s send me security & feature updates, educational content and offers."
712
-
713
- #: includes/class-freemius.php:20312
714
- msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂"
715
- msgstr "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂"
716
-
717
- #: includes/class-freemius.php:20314, templates/connect.php:274
718
- msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
719
- msgstr "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
720
-
721
- #: includes/class-freemius.php:20598
722
- msgid "License key is empty."
723
- msgstr "License key is empty."
724
-
725
- #: includes/class-fs-plugin-updater.php:184, includes/class-fs-plugin-updater.php:219
726
- msgid "%sRenew your license now%s to access version %s security & feature updates, and support."
727
- msgstr "%sRenew your license now%s to access version %s security & feature updates, and support."
728
-
729
- #: includes/class-fs-plugin-updater.php:776
730
- msgid "Installing plugin: %s"
731
- msgstr "Installing plugin: %s"
732
-
733
- #: includes/class-fs-plugin-updater.php:817
734
- msgid "Unable to connect to the filesystem. Please confirm your credentials."
735
- msgstr "Unable to connect to the filesystem. Please confirm your credentials."
736
-
737
- #: includes/class-fs-plugin-updater.php:923
738
- msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
739
- msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
740
-
741
- #: includes/fs-plugin-info-dialog.php:336, templates/account/partials/addon.php:287
742
- msgctxt "verb"
743
- msgid "Purchase"
744
- msgstr "Purchase"
745
-
746
- #: includes/fs-plugin-info-dialog.php:339
747
- msgid "Start my free %s"
748
- msgstr "Start my free %s"
749
-
750
- #: includes/fs-plugin-info-dialog.php:380
751
- msgid "Install Free Version Now"
752
- msgstr "Install Free Version Now"
753
-
754
- #: includes/fs-plugin-info-dialog.php:381, templates/auto-installation.php:111, templates/account/partials/addon.php:267, templates/account/partials/addon.php:317
755
- msgid "Install Now"
756
- msgstr "Install Now"
757
-
758
- #: includes/fs-plugin-info-dialog.php:392
759
- msgctxt "as download latest version"
760
- msgid "Download Latest Free Version"
761
- msgstr "Download Latest Free Version"
762
-
763
- #: includes/fs-plugin-info-dialog.php:393, templates/account.php:80, templates/account/partials/addon.php:21
764
- msgctxt "as download latest version"
765
- msgid "Download Latest"
766
- msgstr "Download Latest"
767
-
768
- #: includes/fs-plugin-info-dialog.php:403
769
- msgid "Install Free Version Update Now"
770
- msgstr "Install Free Version Update Now"
771
-
772
- #: includes/fs-plugin-info-dialog.php:404, templates/account.php:448
773
- msgid "Install Update Now"
774
- msgstr "Install Update Now"
775
-
776
- #: includes/fs-plugin-info-dialog.php:415
777
- msgid "Newer Free Version (%s) Installed"
778
- msgstr "Newer Free Version (%s) Installed"
779
-
780
- #: includes/fs-plugin-info-dialog.php:416
781
- msgid "Newer Version (%s) Installed"
782
- msgstr "Newer Version (%s) Installed"
783
-
784
- #: includes/fs-plugin-info-dialog.php:424
785
- msgid "Latest Free Version Installed"
786
- msgstr "Latest Free Version Installed"
787
-
788
- #: includes/fs-plugin-info-dialog.php:425
789
- msgid "Latest Version Installed"
790
- msgstr "Latest Version Installed"
791
-
792
- #: includes/fs-plugin-info-dialog.php:580
793
- msgctxt "Plugin installer section title"
794
- msgid "Description"
795
- msgstr "Description"
796
-
797
- #: includes/fs-plugin-info-dialog.php:581
798
- msgctxt "Plugin installer section title"
799
- msgid "Installation"
800
- msgstr "Installation"
801
-
802
- #: includes/fs-plugin-info-dialog.php:582
803
- msgctxt "Plugin installer section title"
804
- msgid "FAQ"
805
- msgstr "FAQ"
806
-
807
- #: includes/fs-plugin-info-dialog.php:583, templates/plugin-info/description.php:55
808
- msgid "Screenshots"
809
- msgstr "Screenshots"
810
-
811
- #: includes/fs-plugin-info-dialog.php:584
812
- msgctxt "Plugin installer section title"
813
- msgid "Changelog"
814
- msgstr "Changelog"
815
-
816
- #: includes/fs-plugin-info-dialog.php:585
817
- msgctxt "Plugin installer section title"
818
- msgid "Reviews"
819
- msgstr "Reviews"
820
-
821
- #: includes/fs-plugin-info-dialog.php:586
822
- msgctxt "Plugin installer section title"
823
- msgid "Other Notes"
824
- msgstr "Other Notes"
825
-
826
- #: includes/fs-plugin-info-dialog.php:601
827
- msgctxt "Plugin installer section title"
828
- msgid "Features & Pricing"
829
- msgstr "Features & Pricing"
830
-
831
- #: includes/fs-plugin-info-dialog.php:611
832
- msgid "Plugin Install"
833
- msgstr "Plugin Install"
834
-
835
- #: includes/fs-plugin-info-dialog.php:683
836
- msgctxt "e.g. Professional Plan"
837
- msgid "%s Plan"
838
- msgstr "%s Plan"
839
-
840
- #: includes/fs-plugin-info-dialog.php:709
841
- msgctxt "e.g. the best product"
842
- msgid "Best"
843
- msgstr "Best"
844
-
845
- #: includes/fs-plugin-info-dialog.php:715, includes/fs-plugin-info-dialog.php:735
846
- msgctxt "as every month"
847
- msgid "Monthly"
848
- msgstr "Monthly"
849
-
850
- #: includes/fs-plugin-info-dialog.php:718
851
- msgctxt "as once a year"
852
- msgid "Annual"
853
- msgstr "Annual"
854
-
855
- #: includes/fs-plugin-info-dialog.php:721
856
- msgid "Lifetime"
857
- msgstr "Lifetime"
858
-
859
- #: includes/fs-plugin-info-dialog.php:735, includes/fs-plugin-info-dialog.php:737, includes/fs-plugin-info-dialog.php:739
860
- msgctxt "e.g. billed monthly"
861
- msgid "Billed %s"
862
- msgstr "Billed %s"
863
-
864
- #: includes/fs-plugin-info-dialog.php:737
865
- msgctxt "as once a year"
866
- msgid "Annually"
867
- msgstr "Annually"
868
-
869
- #: includes/fs-plugin-info-dialog.php:739
870
- msgctxt "as once a year"
871
- msgid "Once"
872
- msgstr "Once"
873
-
874
- #: includes/fs-plugin-info-dialog.php:745
875
- msgid "Single Site License"
876
- msgstr "Single Site License"
877
-
878
- #: includes/fs-plugin-info-dialog.php:747
879
- msgid "Unlimited Licenses"
880
- msgstr "Unlimited Licenses"
881
-
882
- #: includes/fs-plugin-info-dialog.php:749
883
- msgid "Up to %s Sites"
884
- msgstr "Up to %s Sites"
885
-
886
- #: includes/fs-plugin-info-dialog.php:759, templates/plugin-info/features.php:82
887
- msgctxt "as monthly period"
888
- msgid "mo"
889
- msgstr "mo"
890
-
891
- #: includes/fs-plugin-info-dialog.php:766, templates/plugin-info/features.php:80
892
- msgctxt "as annual period"
893
- msgid "year"
894
- msgstr "year"
895
-
896
- #: includes/fs-plugin-info-dialog.php:820
897
- msgctxt "noun"
898
- msgid "Price"
899
- msgstr "Price"
900
-
901
- #: includes/fs-plugin-info-dialog.php:868
902
- msgid "Save %s"
903
- msgstr "Save %s"
904
-
905
- #: includes/fs-plugin-info-dialog.php:878
906
- msgid "No commitment for %s - cancel anytime"
907
- msgstr "No commitment for %s - cancel anytime"
908
-
909
- #: includes/fs-plugin-info-dialog.php:881
910
- msgid "After your free %s, pay as little as %s"
911
- msgstr "After your free %s, pay as little as %s"
912
-
913
- #: includes/fs-plugin-info-dialog.php:892
914
- msgid "Details"
915
- msgstr "Details"
916
-
917
- #: includes/fs-plugin-info-dialog.php:896, templates/account.php:87, templates/debug.php:191, templates/debug.php:228, templates/debug.php:442, templates/account/partials/addon.php:28
918
- msgctxt "product version"
919
- msgid "Version"
920
- msgstr "Version"
921
-
922
- #: includes/fs-plugin-info-dialog.php:903
923
- msgctxt "as the plugin author"
924
- msgid "Author"
925
- msgstr "Author"
926
-
927
- #: includes/fs-plugin-info-dialog.php:910
928
- msgid "Last Updated"
929
- msgstr "Last Updated"
930
-
931
- #: includes/fs-plugin-info-dialog.php:915
932
- msgctxt "x-ago"
933
- msgid "%s ago"
934
- msgstr "%s ago"
935
-
936
- #: includes/fs-plugin-info-dialog.php:924
937
- msgid "Requires WordPress Version"
938
- msgstr "Requires WordPress Version"
939
-
940
- #: includes/fs-plugin-info-dialog.php:925
941
- msgid "%s or higher"
942
- msgstr "%s or higher"
943
-
944
- #: includes/fs-plugin-info-dialog.php:932
945
- msgid "Compatible up to"
946
- msgstr "Compatible up to"
947
-
948
- #: includes/fs-plugin-info-dialog.php:940
949
- msgid "Downloaded"
950
- msgstr "Downloaded"
951
-
952
- #: includes/fs-plugin-info-dialog.php:944
953
- msgid "%s time"
954
- msgstr "%s time"
955
-
956
- #: includes/fs-plugin-info-dialog.php:946
957
- msgid "%s times"
958
- msgstr "%s times"
959
-
960
- #: includes/fs-plugin-info-dialog.php:956
961
- msgid "WordPress.org Plugin Page"
962
- msgstr "WordPress.org Plugin Page"
963
-
964
- #: includes/fs-plugin-info-dialog.php:964
965
- msgid "Plugin Homepage"
966
- msgstr "Plugin Homepage"
967
-
968
- #: includes/fs-plugin-info-dialog.php:972, includes/fs-plugin-info-dialog.php:1054
969
- msgid "Donate to this plugin"
970
- msgstr "Donate to this plugin"
971
-
972
- #: includes/fs-plugin-info-dialog.php:979
973
- msgid "Average Rating"
974
- msgstr "Average Rating"
975
-
976
- #: includes/fs-plugin-info-dialog.php:986
977
- msgid "based on %s"
978
- msgstr "based on %s"
979
-
980
- #: includes/fs-plugin-info-dialog.php:990
981
- msgid "%s rating"
982
- msgstr "%s rating"
983
-
984
- #: includes/fs-plugin-info-dialog.php:992
985
- msgid "%s ratings"
986
- msgstr "%s ratings"
987
-
988
- #: includes/fs-plugin-info-dialog.php:1007
989
- msgid "%s star"
990
- msgstr "%s star"
991
-
992
- #: includes/fs-plugin-info-dialog.php:1009
993
- msgid "%s stars"
994
- msgstr "%s stars"
995
-
996
- #: includes/fs-plugin-info-dialog.php:1020
997
- msgid "Click to see reviews that provided a rating of %s"
998
- msgstr "Click to see reviews that provided a rating of %s"
999
-
1000
- #: includes/fs-plugin-info-dialog.php:1033
1001
- msgid "Contributors"
1002
- msgstr "Contributors"
1003
-
1004
- #: includes/fs-plugin-info-dialog.php:1062, includes/fs-plugin-info-dialog.php:1064
1005
- msgid "Warning"
1006
- msgstr "Warning"
1007
-
1008
- #: includes/fs-plugin-info-dialog.php:1062
1009
- msgid "This plugin has not been tested with your current version of WordPress."
1010
- msgstr "This plugin has not been tested with your current version of WordPress."
1011
-
1012
- #: includes/fs-plugin-info-dialog.php:1064
1013
- msgid "This plugin has not been marked as compatible with your version of WordPress."
1014
- msgstr "This plugin has not been marked as compatible with your version of WordPress."
1015
-
1016
- #: includes/fs-plugin-info-dialog.php:1083
1017
- msgid "Paid add-on must be deployed to Freemius."
1018
- msgstr "Paid add-on must be deployed to Freemius."
1019
-
1020
- #: includes/fs-plugin-info-dialog.php:1084
1021
- msgid "Add-on must be deployed to WordPress.org or Freemius."
1022
- msgstr "Add-on must be deployed to WordPress.org or Freemius."
1023
-
1024
- #: templates/account.php:81, templates/account/partials/addon.php:22, templates/account/partials/site.php:295
1025
- msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
1026
- msgstr "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
1027
-
1028
- #: templates/account.php:82, templates/account/partials/addon.php:23
1029
- msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
1030
- msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?"
1031
-
1032
- #: templates/account.php:83, templates/account/partials/addon.php:24, templates/account/partials/site.php:296
1033
- msgid "You can still enjoy all %s features but you will not have access to %s updates and support."
1034
- msgstr "You can still enjoy all %s features but you will not have access to %s updates and support."
1035
-
1036
- #: templates/account.php:84, templates/account/partials/addon.php:25, templates/account/partials/site.php:297
1037
- msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
1038
- msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
1039
-
1040
- #. translators: %s: Plan title (e.g. "Professional")
1041
- #: templates/account.php:86, templates/account/partials/activate-license-button.php:31, templates/account/partials/addon.php:27
1042
- msgid "Activate %s Plan"
1043
- msgstr "Activate %s Plan"
1044
-
1045
- #. translators: %s: Time period (e.g. Auto renews in "2 months")
1046
- #: templates/account.php:89, templates/account/partials/addon.php:30, templates/account/partials/site.php:275
1047
- msgid "Auto renews in %s"
1048
- msgstr "Auto renews in %s"
1049
-
1050
- #. translators: %s: Time period (e.g. Expires in "2 months")
1051
- #: templates/account.php:91, templates/account/partials/addon.php:32, templates/account/partials/site.php:277
1052
- msgid "Expires in %s"
1053
- msgstr "Expires in %s"
1054
-
1055
- #: templates/account.php:92, templates/account/partials/addon.php:33
1056
- msgctxt "as synchronize license"
1057
- msgid "Sync License"
1058
- msgstr "Sync License"
1059
-
1060
- #: templates/account.php:93, templates/account/partials/addon.php:34
1061
- msgid "Cancel Trial"
1062
- msgstr "Cancel Trial"
1063
-
1064
- #: templates/account.php:94, templates/account/partials/addon.php:35
1065
- msgid "Change Plan"
1066
- msgstr "Change Plan"
1067
-
1068
- #: templates/account.php:95, templates/account/partials/addon.php:36
1069
- msgctxt "verb"
1070
- msgid "Upgrade"
1071
- msgstr "Upgrade"
1072
-
1073
- #: templates/account.php:97, templates/account/partials/addon.php:38, templates/account/partials/site.php:298
1074
- msgctxt "verb"
1075
- msgid "Downgrade"
1076
- msgstr "Downgrade"
1077
-
1078
- #: templates/account.php:99, templates/add-ons.php:126, templates/plugin-info/features.php:72, templates/account/partials/addon.php:40, templates/account/partials/site.php:31
1079
- msgid "Free"
1080
- msgstr "Free"
1081
-
1082
- #: templates/account.php:100, templates/account/partials/addon.php:41
1083
- msgid "Activate"
1084
- msgstr "Activate"
1085
-
1086
- #: templates/account.php:101, templates/debug.php:361, includes/customizer/class-fs-customizer-upsell-control.php:106, templates/account/partials/addon.php:42
1087
- msgctxt "as product pricing plan"
1088
- msgid "Plan"
1089
- msgstr "Plan"
1090
-
1091
- #: templates/account.php:154
1092
- msgid "Free Trial"
1093
- msgstr "Free Trial"
1094
-
1095
- #: templates/account.php:165
1096
- msgid "Account Details"
1097
- msgstr "Account Details"
1098
-
1099
- #: templates/account.php:175
1100
- msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
1101
- msgstr "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
1102
-
1103
- #: templates/account.php:177
1104
- msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
1105
- msgstr "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
1106
-
1107
- #: templates/account.php:180
1108
- msgid "Delete Account"
1109
- msgstr "Delete Account"
1110
-
1111
- #: templates/account.php:192, templates/account/partials/addon.php:155, templates/account/partials/deactivate-license-button.php:35
1112
- msgid "Deactivate License"
1113
- msgstr "Deactivate License"
1114
-
1115
- #: templates/account.php:210
1116
- msgid "Are you sure you want to proceed?"
1117
- msgstr "Are you sure you want to proceed?"
1118
-
1119
- #: templates/account.php:210, templates/account/partials/addon.php:177
1120
- msgid "Cancel Subscription"
1121
- msgstr "Cancel Subscription"
1122
-
1123
- #: templates/account.php:239
1124
- msgctxt "as synchronize"
1125
- msgid "Sync"
1126
- msgstr "Sync"
1127
-
1128
- #: templates/account.php:253, templates/debug.php:477
1129
- msgid "Name"
1130
- msgstr "Name"
1131
-
1132
- #: templates/account.php:259, templates/debug.php:478
1133
- msgid "Email"
1134
- msgstr "Email"
1135
-
1136
- #: templates/account.php:266, templates/debug.php:360, templates/debug.php:516
1137
- msgid "User ID"
1138
- msgstr "User ID"
1139
-
1140
- #: templates/account.php:274
1141
- msgid "Site ID"
1142
- msgstr "Site ID"
1143
-
1144
- #: templates/account.php:277
1145
- msgid "No ID"
1146
- msgstr "No ID"
1147
-
1148
- #: templates/account.php:282, templates/debug.php:233, templates/debug.php:362, templates/debug.php:443, templates/debug.php:480, templates/account/partials/site.php:219
1149
- msgid "Public Key"
1150
- msgstr "Public Key"
1151
-
1152
- #: templates/account.php:288, templates/debug.php:363, templates/debug.php:444, templates/debug.php:481, templates/account/partials/site.php:231
1153
- msgid "Secret Key"
1154
- msgstr "Secret Key"
1155
-
1156
- #: templates/account.php:291
1157
- msgctxt "as secret encryption key missing"
1158
- msgid "No Secret"
1159
- msgstr "No Secret"
1160
-
1161
- #: templates/account.php:310, templates/account/partials/site.php:112, templates/account/partials/site.php:114
1162
- msgid "Trial"
1163
- msgstr "Trial"
1164
-
1165
- #: templates/account.php:329, templates/debug.php:521, templates/account/partials/site.php:248
1166
- msgid "License Key"
1167
- msgstr "License Key"
1168
-
1169
- #: templates/account.php:359
1170
- msgid "not verified"
1171
- msgstr "not verified"
1172
-
1173
- #: templates/account.php:416
1174
- msgid "Premium version"
1175
- msgstr "Premium version"
1176
-
1177
- #: templates/account.php:418
1178
- msgid "Free version"
1179
- msgstr "Free version"
1180
-
1181
- #: templates/account.php:430
1182
- msgid "Verify Email"
1183
- msgstr "Verify Email"
1184
-
1185
- #: templates/account.php:441
1186
- msgid "Download %s Version"
1187
- msgstr "Download %s Version"
1188
-
1189
- #: templates/account.php:455, templates/account.php:636, templates/account/partials/site.php:237, templates/account/partials/site.php:255
1190
- msgctxt "verb"
1191
- msgid "Show"
1192
- msgstr "Show"
1193
-
1194
- #: templates/account.php:469
1195
- msgid "What is your %s?"
1196
- msgstr "What is your %s?"
1197
-
1198
- #: templates/account.php:477, templates/account/billing.php:27
1199
- msgctxt "verb"
1200
- msgid "Edit"
1201
- msgstr "Edit"
1202
-
1203
- #: templates/account.php:490
1204
- msgid "Sites"
1205
- msgstr "Sites"
1206
-
1207
- #: templates/account.php:501
1208
- msgid "Search by address"
1209
- msgstr "Search by address"
1210
-
1211
- #: templates/account.php:510, templates/account.php:558, templates/debug.php:226, templates/debug.php:354, templates/debug.php:439, templates/debug.php:476, templates/debug.php:514, templates/debug.php:587, templates/account/payments.php:35, templates/debug/logger.php:21
1212
- msgid "ID"
1213
- msgstr "ID"
1214
-
1215
- #: templates/account.php:511, templates/debug.php:357
1216
- msgid "Address"
1217
- msgstr "Address"
1218
-
1219
- #: templates/account.php:512
1220
- msgid "License"
1221
- msgstr "License"
1222
-
1223
- #: templates/account.php:513
1224
- msgid "Plan"
1225
- msgstr "Plan"
1226
-
1227
- #: templates/account.php:561
1228
- msgctxt "as software license"
1229
- msgid "License"
1230
- msgstr "License"
1231
-
1232
- #: templates/account.php:630
1233
- msgctxt "verb"
1234
- msgid "Hide"
1235
- msgstr "Hide"
1236
-
1237
- #: templates/account.php:665
1238
- msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
1239
- msgstr "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
1240
-
1241
- #: templates/add-ons.php:36
1242
- msgid "Add Ons for %s"
1243
- msgstr "Add Ons for %s"
1244
-
1245
- #: templates/add-ons.php:44
1246
- msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
1247
- msgstr "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
1248
-
1249
- #: templates/add-ons.php:135
1250
- msgid "View details"
1251
- msgstr "View details"
1252
-
1253
- #: templates/admin-notice.php:13, templates/forms/license-activation.php:208, templates/forms/resend-key.php:77
1254
- msgctxt "as close a window"
1255
- msgid "Dismiss"
1256
- msgstr "Dismiss"
1257
-
1258
- #: templates/auto-installation.php:45
1259
- msgid "%s sec"
1260
- msgstr "%s sec"
1261
-
1262
- #: templates/auto-installation.php:83
1263
- msgid "Automatic Installation"
1264
- msgstr "Automatic Installation"
1265
-
1266
- #: templates/auto-installation.php:93
1267
- msgid "An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now."
1268
- msgstr "An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now."
1269
-
1270
- #: templates/auto-installation.php:104
1271
- msgid "The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page."
1272
- msgstr "The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page."
1273
-
1274
- #: templates/auto-installation.php:109
1275
- msgid "Cancel Installation"
1276
- msgstr "Cancel Installation"
1277
-
1278
- #: templates/checkout.php:172
1279
- msgid "Checkout"
1280
- msgstr "Checkout"
1281
-
1282
- #: templates/checkout.php:172
1283
- msgid "PCI compliant"
1284
- msgstr "PCI compliant"
1285
-
1286
- #. translators: %s: name (e.g. Hey John,)
1287
- #: templates/connect.php:110
1288
- msgctxt "greeting"
1289
- msgid "Hey %s,"
1290
- msgstr "Hey %s,"
1291
-
1292
- #: templates/connect.php:152
1293
- msgid "Allow & Continue"
1294
- msgstr "Allow & Continue"
1295
-
1296
- #: templates/connect.php:156
1297
- msgid "Re-send activation email"
1298
- msgstr "Re-send activation email"
1299
-
1300
- #: templates/connect.php:160
1301
- msgid "Thanks %s!"
1302
- msgstr "Thanks %s!"
1303
-
1304
- #: templates/connect.php:170, templates/forms/license-activation.php:43
1305
- msgid "Agree & Activate License"
1306
- msgstr "Agree & Activate License"
1307
-
1308
- #: templates/connect.php:179
1309
- msgid "Thanks for purchasing %s! To get started, please enter your license key:"
1310
- msgstr "Thanks for purchasing %s! To get started, please enter your license key:"
1311
-
1312
- #: templates/connect.php:186
1313
- msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
1314
- msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
1315
-
1316
- #: templates/connect.php:187
1317
- msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
1318
- msgstr "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
1319
-
1320
- #: templates/connect.php:193
1321
- msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1322
- msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1323
-
1324
- #: templates/connect.php:194
1325
- msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1326
- msgstr "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1327
-
1328
- #: templates/connect.php:228
1329
- msgid "We're excited to introduce the Freemius network-level integration."
1330
- msgstr "We're excited to introduce the Freemius network-level integration."
1331
-
1332
- #: templates/connect.php:231
1333
- msgid "During the update process we detected %d site(s) that are still pending license activation."
1334
- msgstr "During the update process we detected %d site(s) that are still pending license activation."
1335
-
1336
- #: templates/connect.php:233
1337
- msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
1338
- msgstr "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
1339
-
1340
- #: templates/connect.php:235
1341
- msgid "%s's paid features"
1342
- msgstr "%s's paid features"
1343
-
1344
- #: templates/connect.php:240
1345
- msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
1346
- msgstr "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
1347
-
1348
- #: templates/connect.php:242
1349
- msgid "During the update process we detected %s site(s) in the network that are still pending your attention."
1350
- msgstr "During the update process we detected %s site(s) in the network that are still pending your attention."
1351
-
1352
- #: templates/connect.php:251, templates/forms/license-activation.php:46
1353
- msgid "License key"
1354
- msgstr "License key"
1355
-
1356
- #: templates/connect.php:254, templates/forms/license-activation.php:19
1357
- msgid "Can't find your license key?"
1358
- msgstr "Can't find your license key?"
1359
-
1360
- #: templates/connect.php:302, templates/connect.php:617, templates/forms/deactivation/retry-skip.php:20
1361
- msgctxt "verb"
1362
- msgid "Skip"
1363
- msgstr "Skip"
1364
-
1365
- #: templates/connect.php:305
1366
- msgid "Delegate to Site Admins"
1367
- msgstr "Delegate to Site Admins"
1368
-
1369
- #: templates/connect.php:305
1370
- msgid "If you click it, this decision will be delegated to the sites administrators."
1371
- msgstr "If you click it, this decision will be delegated to the sites administrators."
1372
-
1373
- #: templates/connect.php:333
1374
- msgid "Your Profile Overview"
1375
- msgstr "Your Profile Overview"
1376
-
1377
- #: templates/connect.php:334
1378
- msgid "Name and email address"
1379
- msgstr "Name and email address"
1380
-
1381
- #: templates/connect.php:339
1382
- msgid "Your Site Overview"
1383
- msgstr "Your Site Overview"
1384
-
1385
- #: templates/connect.php:340
1386
- msgid "Site URL, WP version, PHP info, plugins & themes"
1387
- msgstr "Site URL, WP version, PHP info, plugins & themes"
1388
-
1389
- #: templates/connect.php:345
1390
- msgid "Admin Notices"
1391
- msgstr "Admin Notices"
1392
-
1393
- #: templates/connect.php:346, templates/connect.php:362
1394
- msgid "Updates, announcements, marketing, no spam"
1395
- msgstr "Updates, announcements, marketing, no spam"
1396
-
1397
- #: templates/connect.php:351
1398
- msgid "Current %s Events"
1399
- msgstr "Current %s Events"
1400
-
1401
- #: templates/connect.php:352
1402
- msgid "Activation, deactivation and uninstall"
1403
- msgstr "Activation, deactivation and uninstall"
1404
-
1405
- #: templates/connect.php:361
1406
- msgid "Newsletter"
1407
- msgstr "Newsletter"
1408
-
1409
- #: templates/connect.php:378, templates/forms/license-activation.php:38
1410
- msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
1411
- msgstr "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
1412
-
1413
- #: templates/connect.php:383
1414
- msgid "What permissions are being granted?"
1415
- msgstr "What permissions are being granted?"
1416
-
1417
- #: templates/connect.php:404
1418
- msgid "Don't have a license key?"
1419
- msgstr "Don't have a license key?"
1420
-
1421
- #: templates/connect.php:405
1422
- msgid "Activate Free Version"
1423
- msgstr "Activate Free Version"
1424
-
1425
- #: templates/connect.php:407
1426
- msgid "Have a license key?"
1427
- msgstr "Have a license key?"
1428
-
1429
- #: templates/connect.php:415
1430
- msgid "Privacy Policy"
1431
- msgstr "Privacy Policy"
1432
-
1433
- #: templates/connect.php:417
1434
- msgid "Terms of Service"
1435
- msgstr "Terms of Service"
1436
-
1437
- #: templates/connect.php:750
1438
- msgctxt "as in the process of sending an email"
1439
- msgid "Sending email"
1440
- msgstr "Sending email"
1441
-
1442
- #: templates/connect.php:751
1443
- msgctxt "as activating plugin"
1444
- msgid "Activating"
1445
- msgstr "Activating"
1446
-
1447
- #: templates/contact.php:78
1448
- msgid "Contact"
1449
- msgstr "Contact"
1450
-
1451
- #: templates/debug.php:17
1452
- msgctxt "as turned off"
1453
- msgid "Off"
1454
- msgstr "Off"
1455
-
1456
- #: templates/debug.php:18
1457
- msgctxt "as turned on"
1458
- msgid "On"
1459
- msgstr "On"
1460
-
1461
- #: templates/debug.php:20
1462
- msgid "SDK"
1463
- msgstr "SDK"
1464
-
1465
- #: templates/debug.php:24
1466
- msgctxt "as code debugging"
1467
- msgid "Debugging"
1468
- msgstr "Debugging"
1469
-
1470
- #: templates/debug.php:54, templates/debug.php:238, templates/debug.php:364, templates/debug.php:482
1471
- msgid "Actions"
1472
- msgstr "Actions"
1473
-
1474
- #: templates/debug.php:64
1475
- msgid "Are you sure you want to delete all Freemius data?"
1476
- msgstr "Are you sure you want to delete all Freemius data?"
1477
-
1478
- #: templates/debug.php:64
1479
- msgid "Delete All Accounts"
1480
- msgstr "Delete All Accounts"
1481
-
1482
- #: templates/debug.php:71
1483
- msgid "Clear API Cache"
1484
- msgstr "Clear API Cache"
1485
-
1486
- #: templates/debug.php:79
1487
- msgid "Clear Updates Transients"
1488
- msgstr "Clear Updates Transients"
1489
-
1490
- #: templates/debug.php:86
1491
- msgid "Sync Data From Server"
1492
- msgstr "Sync Data From Server"
1493
-
1494
- #: templates/debug.php:90
1495
- msgid "Load DB Option"
1496
- msgstr "Load DB Option"
1497
-
1498
- #: templates/debug.php:93
1499
- msgid "Set DB Option"
1500
- msgstr "Set DB Option"
1501
-
1502
- #: templates/debug.php:170
1503
- msgid "Key"
1504
- msgstr "Key"
1505
-
1506
- #: templates/debug.php:171
1507
- msgid "Value"
1508
- msgstr "Value"
1509
-
1510
- #: templates/debug.php:187
1511
- msgctxt "as software development kit versions"
1512
- msgid "SDK Versions"
1513
- msgstr "SDK Versions"
1514
-
1515
- #: templates/debug.php:192
1516
- msgid "SDK Path"
1517
- msgstr "SDK Path"
1518
-
1519
- #: templates/debug.php:193, templates/debug.php:232
1520
- msgid "Module Path"
1521
- msgstr "Module Path"
1522
-
1523
- #: templates/debug.php:194
1524
- msgid "Is Active"
1525
- msgstr "Is Active"
1526
-
1527
- #: templates/debug.php:222, templates/debug/plugins-themes-sync.php:35
1528
- msgid "Plugins"
1529
- msgstr "Plugins"
1530
-
1531
- #: templates/debug.php:222, templates/debug/plugins-themes-sync.php:56
1532
- msgid "Themes"
1533
- msgstr "Themes"
1534
-
1535
- #: templates/debug.php:227, templates/debug.php:359, templates/debug.php:441, templates/debug/scheduled-crons.php:80
1536
- msgid "Slug"
1537
- msgstr "Slug"
1538
-
1539
- #: templates/debug.php:229, templates/debug.php:440
1540
- msgid "Title"
1541
- msgstr "Title"
1542
-
1543
- #: templates/debug.php:230
1544
- msgctxt "as application program interface"
1545
- msgid "API"
1546
- msgstr "API"
1547
-
1548
- #: templates/debug.php:231
1549
- msgid "Freemius State"
1550
- msgstr "Freemius State"
1551
-
1552
- #: templates/debug.php:235
1553
- msgid "Network Blog"
1554
- msgstr "Network Blog"
1555
-
1556
- #: templates/debug.php:236
1557
- msgid "Network User"
1558
- msgstr "Network User"
1559
-
1560
- #: templates/debug.php:273
1561
- msgctxt "as connection was successful"
1562
- msgid "Connected"
1563
- msgstr "Connected"
1564
-
1565
- #: templates/debug.php:274
1566
- msgctxt "as connection blocked"
1567
- msgid "Blocked"
1568
- msgstr "Blocked"
1569
-
1570
- #: templates/debug.php:310
1571
- msgid "Simulate Trial"
1572
- msgstr "Simulate Trial"
1573
-
1574
- #: templates/debug.php:322
1575
- msgid "Simulate Network Upgrade"
1576
- msgstr "Simulate Network Upgrade"
1577
-
1578
- #: templates/debug.php:348
1579
- msgid "%s Installs"
1580
- msgstr "%s Installs"
1581
-
1582
- #: templates/debug.php:350
1583
- msgctxt "like websites"
1584
- msgid "Sites"
1585
- msgstr "Sites"
1586
-
1587
- #: templates/debug.php:356, templates/account/partials/site.php:148
1588
- msgid "Blog ID"
1589
- msgstr "Blog ID"
1590
-
1591
- #: templates/debug.php:421, templates/debug.php:499, templates/account/partials/addon.php:334
1592
- msgctxt "verb"
1593
- msgid "Delete"
1594
- msgstr "Delete"
1595
-
1596
- #: templates/debug.php:435
1597
- msgid "Add Ons of module %s"
1598
- msgstr "Add Ons of module %s"
1599
-
1600
- #: templates/debug.php:472
1601
- msgid "Users"
1602
- msgstr "Users"
1603
-
1604
- #: templates/debug.php:479
1605
- msgid "Verified"
1606
- msgstr "Verified"
1607
-
1608
- #: templates/debug.php:510
1609
- msgid "%s Licenses"
1610
- msgstr "%s Licenses"
1611
-
1612
- #: templates/debug.php:515
1613
- msgid "Plugin ID"
1614
- msgstr "Plugin ID"
1615
-
1616
- #: templates/debug.php:517
1617
- msgid "Plan ID"
1618
- msgstr "Plan ID"
1619
-
1620
- #: templates/debug.php:518
1621
- msgid "Quota"
1622
- msgstr "Quota"
1623
-
1624
- #: templates/debug.php:519
1625
- msgid "Activated"
1626
- msgstr "Activated"
1627
-
1628
- #: templates/debug.php:520
1629
- msgid "Blocking"
1630
- msgstr "Blocking"
1631
-
1632
- #: templates/debug.php:522
1633
- msgctxt "as expiration date"
1634
- msgid "Expiration"
1635
- msgstr "Expiration"
1636
-
1637
- #: templates/debug.php:545
1638
- msgid "Debug Log"
1639
- msgstr "Debug Log"
1640
-
1641
- #: templates/debug.php:549
1642
- msgid "All Types"
1643
- msgstr "All Types"
1644
-
1645
- #: templates/debug.php:556
1646
- msgid "All Requests"
1647
- msgstr "All Requests"
1648
-
1649
- #: templates/debug.php:561, templates/debug.php:590, templates/debug/logger.php:25
1650
- msgid "File"
1651
- msgstr "File"
1652
-
1653
- #: templates/debug.php:562, templates/debug.php:588, templates/debug/logger.php:23
1654
- msgid "Function"
1655
- msgstr "Function"
1656
-
1657
- #: templates/debug.php:563
1658
- msgid "Process ID"
1659
- msgstr "Process ID"
1660
-
1661
- #: templates/debug.php:564
1662
- msgid "Logger"
1663
- msgstr "Logger"
1664
-
1665
- #: templates/debug.php:565, templates/debug.php:589, templates/debug/logger.php:24
1666
- msgid "Message"
1667
- msgstr "Message"
1668
-
1669
- #: templates/debug.php:567
1670
- msgid "Filter"
1671
- msgstr "Filter"
1672
-
1673
- #: templates/debug.php:575
1674
- msgid "Download"
1675
- msgstr "Download"
1676
-
1677
- #: templates/debug.php:586, templates/debug/logger.php:22
1678
- msgid "Type"
1679
- msgstr "Type"
1680
-
1681
- #: templates/debug.php:591, templates/debug/logger.php:26
1682
- msgid "Timestamp"
1683
- msgstr "Timestamp"
1684
-
1685
- #: templates/secure-https-header.php:28
1686
- msgid "Secure HTTPS %s page, running from an external domain"
1687
- msgstr "Secure HTTPS %s page, running from an external domain"
1688
-
1689
- #: includes/customizer/class-fs-customizer-support-section.php:55, templates/plugin-info/features.php:43
1690
- msgid "Support"
1691
- msgstr "Support"
1692
-
1693
- #: includes/debug/class-fs-debug-bar-panel.php:48, templates/debug/api-calls.php:54, templates/debug/logger.php:62
1694
- msgctxt "milliseconds"
1695
- msgid "ms"
1696
- msgstr "ms"
1697
-
1698
- #: includes/debug/debug-bar-start.php:41
1699
- msgid "Freemius API"
1700
- msgstr "Freemius API"
1701
-
1702
- #: includes/debug/debug-bar-start.php:42
1703
- msgid "Requests"
1704
- msgstr "Requests"
1705
-
1706
- #: templates/account/billing.php:28
1707
- msgctxt "verb"
1708
- msgid "Update"
1709
- msgstr "Update"
1710
-
1711
- #: templates/account/billing.php:39
1712
- msgid "Billing"
1713
- msgstr "Billing"
1714
-
1715
- #: templates/account/billing.php:44, templates/account/billing.php:44
1716
- msgid "Business name"
1717
- msgstr "Business name"
1718
-
1719
- #: templates/account/billing.php:45, templates/account/billing.php:45
1720
- msgid "Tax / VAT ID"
1721
- msgstr "Tax / VAT ID"
1722
-
1723
- #: templates/account/billing.php:48, templates/account/billing.php:48, templates/account/billing.php:49, templates/account/billing.php:49
1724
- msgid "Address Line %d"
1725
- msgstr "Address Line %d"
1726
-
1727
- #: templates/account/billing.php:52, templates/account/billing.php:52
1728
- msgid "City"
1729
- msgstr "City"
1730
-
1731
- #: templates/account/billing.php:52, templates/account/billing.php:52
1732
- msgid "Town"
1733
- msgstr "Town"
1734
-
1735
- #: templates/account/billing.php:53, templates/account/billing.php:53
1736
- msgid "ZIP / Postal Code"
1737
- msgstr "ZIP / Postal Code"
1738
-
1739
- #: templates/account/billing.php:308
1740
- msgid "Country"
1741
- msgstr "Country"
1742
-
1743
- #: templates/account/billing.php:310
1744
- msgid "Select Country"
1745
- msgstr "Select Country"
1746
-
1747
- #: templates/account/billing.php:317, templates/account/billing.php:318
1748
- msgid "State"
1749
- msgstr "State"
1750
-
1751
- #: templates/account/billing.php:317, templates/account/billing.php:318
1752
- msgid "Province"
1753
- msgstr "Province"
1754
-
1755
- #: templates/account/payments.php:29
1756
- msgid "Payments"
1757
- msgstr "Payments"
1758
-
1759
- #: templates/account/payments.php:36
1760
- msgid "Date"
1761
- msgstr "Date"
1762
-
1763
- #: templates/account/payments.php:37
1764
- msgid "Amount"
1765
- msgstr "Amount"
1766
-
1767
- #: templates/account/payments.php:38, templates/account/payments.php:50
1768
- msgid "Invoice"
1769
- msgstr "Invoice"
1770
-
1771
- #: templates/debug/api-calls.php:56
1772
- msgid "API"
1773
- msgstr "API"
1774
-
1775
- #: templates/debug/api-calls.php:68
1776
- msgid "Method"
1777
- msgstr "Method"
1778
-
1779
- #: templates/debug/api-calls.php:69
1780
- msgid "Code"
1781
- msgstr "Code"
1782
-
1783
- #: templates/debug/api-calls.php:70
1784
- msgid "Length"
1785
- msgstr "Length"
1786
-
1787
- #: templates/debug/api-calls.php:71
1788
- msgctxt "as file/folder path"
1789
- msgid "Path"
1790
- msgstr "Path"
1791
-
1792
- #: templates/debug/api-calls.php:73
1793
- msgid "Body"
1794
- msgstr "Body"
1795
-
1796
- #: templates/debug/api-calls.php:75
1797
- msgid "Result"
1798
- msgstr "Result"
1799
-
1800
- #: templates/debug/api-calls.php:76
1801
- msgid "Start"
1802
- msgstr "Start"
1803
-
1804
- #: templates/debug/api-calls.php:77
1805
- msgid "End"
1806
- msgstr "End"
1807
-
1808
- #: templates/debug/logger.php:15
1809
- msgid "Log"
1810
- msgstr "Log"
1811
-
1812
- #. translators: %s: time period (e.g. In "2 hours")
1813
- #: templates/debug/plugins-themes-sync.php:18, templates/debug/scheduled-crons.php:91
1814
- msgid "In %s"
1815
- msgstr "In %s"
1816
-
1817
- #. translators: %s: time period (e.g. "2 hours" ago)
1818
- #: templates/debug/plugins-themes-sync.php:20, templates/debug/scheduled-crons.php:93
1819
- msgid "%s ago"
1820
- msgstr "%s ago"
1821
-
1822
- #: templates/debug/plugins-themes-sync.php:21, templates/debug/scheduled-crons.php:74
1823
- msgctxt "seconds"
1824
- msgid "sec"
1825
- msgstr "sec"
1826
-
1827
- #: templates/debug/plugins-themes-sync.php:23
1828
- msgid "Plugins & Themes Sync"
1829
- msgstr "Plugins & Themes Sync"
1830
-
1831
- #: templates/debug/plugins-themes-sync.php:28
1832
- msgid "Total"
1833
- msgstr "Total"
1834
-
1835
- #: templates/debug/plugins-themes-sync.php:29, templates/debug/scheduled-crons.php:84
1836
- msgid "Last"
1837
- msgstr "Last"
1838
-
1839
- #: templates/debug/scheduled-crons.php:76
1840
- msgid "Scheduled Crons"
1841
- msgstr "Scheduled Crons"
1842
-
1843
- #: templates/debug/scheduled-crons.php:81
1844
- msgid "Module"
1845
- msgstr "Module"
1846
-
1847
- #: templates/debug/scheduled-crons.php:82
1848
- msgid "Module Type"
1849
- msgstr "Module Type"
1850
-
1851
- #: templates/debug/scheduled-crons.php:83
1852
- msgid "Cron Type"
1853
- msgstr "Cron Type"
1854
-
1855
- #: templates/debug/scheduled-crons.php:85
1856
- msgid "Next"
1857
- msgstr "Next"
1858
-
1859
- #: templates/forms/affiliation.php:82
1860
- msgid "Non-expiring"
1861
- msgstr "Non-expiring"
1862
-
1863
- #: templates/forms/affiliation.php:85
1864
- msgid "Apply to become an affiliate"
1865
- msgstr "Apply to become an affiliate"
1866
-
1867
- #: templates/forms/affiliation.php:104
1868
- msgid "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
1869
- msgstr "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
1870
-
1871
- #: templates/forms/affiliation.php:119
1872
- msgid "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information."
1873
- msgstr "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information."
1874
-
1875
- #: templates/forms/affiliation.php:122
1876
- msgid "Your affiliation account was temporarily suspended."
1877
- msgstr "Your affiliation account was temporarily suspended."
1878
-
1879
- #: templates/forms/affiliation.php:125
1880
- msgid "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days."
1881
- msgstr "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days."
1882
-
1883
- #: templates/forms/affiliation.php:128
1884
- msgid "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
1885
- msgstr "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
1886
-
1887
- #: templates/forms/affiliation.php:141
1888
- msgid "Like the %s? Become our ambassador and earn cash ;-)"
1889
- msgstr "Like the %s? Become our ambassador and earn cash ;-)"
1890
-
1891
- #: templates/forms/affiliation.php:142
1892
- msgid "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
1893
- msgstr "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
1894
-
1895
- #: templates/forms/affiliation.php:145
1896
- msgid "Program Summary"
1897
- msgstr "Program Summary"
1898
-
1899
- #: templates/forms/affiliation.php:147
1900
- msgid "%s commission when a customer purchases a new license."
1901
- msgstr "%s commission when a customer purchases a new license."
1902
-
1903
- #: templates/forms/affiliation.php:149
1904
- msgid "Get commission for automated subscription renewals."
1905
- msgstr "Get commission for automated subscription renewals."
1906
-
1907
- #: templates/forms/affiliation.php:152
1908
- msgid "%s tracking cookie after the first visit to maximize earnings potential."
1909
- msgstr "%s tracking cookie after the first visit to maximize earnings potential."
1910
-
1911
- #: templates/forms/affiliation.php:155
1912
- msgid "Unlimited commissions."
1913
- msgstr "Unlimited commissions."
1914
-
1915
- #: templates/forms/affiliation.php:157
1916
- msgid "%s minimum payout amount."
1917
- msgstr "%s minimum payout amount."
1918
-
1919
- #: templates/forms/affiliation.php:158
1920
- msgid "Payouts are in USD and processed monthly via PayPal."
1921
- msgstr "Payouts are in USD and processed monthly via PayPal."
1922
-
1923
- #: templates/forms/affiliation.php:159
1924
- msgid "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
1925
- msgstr "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
1926
-
1927
- #: templates/forms/affiliation.php:162
1928
- msgid "Affiliate"
1929
- msgstr "Affiliate"
1930
-
1931
- #: templates/forms/affiliation.php:165, templates/forms/resend-key.php:23
1932
- msgid "Email address"
1933
- msgstr "Email address"
1934
-
1935
- #: templates/forms/affiliation.php:169
1936
- msgid "Full name"
1937
- msgstr "Full name"
1938
-
1939
- #: templates/forms/affiliation.php:173
1940
- msgid "PayPal account email address"
1941
- msgstr "PayPal account email address"
1942
-
1943
- #: templates/forms/affiliation.php:177
1944
- msgid "Where are you going to promote the %s?"
1945
- msgstr "Where are you going to promote the %s?"
1946
-
1947
- #: templates/forms/affiliation.php:179
1948
- msgid "Enter the domain of your website or other websites from where you plan to promote the %s."
1949
- msgstr "Enter the domain of your website or other websites from where you plan to promote the %s."
1950
-
1951
- #: templates/forms/affiliation.php:181
1952
- msgid "Add another domain"
1953
- msgstr "Add another domain"
1954
-
1955
- #: templates/forms/affiliation.php:185
1956
- msgid "Extra Domains"
1957
- msgstr "Extra Domains"
1958
-
1959
- #: templates/forms/affiliation.php:186
1960
- msgid "Extra domains where you will be marketing the product from."
1961
- msgstr "Extra domains where you will be marketing the product from."
1962
-
1963
- #: templates/forms/affiliation.php:196
1964
- msgid "Promotion methods"
1965
- msgstr "Promotion methods"
1966
-
1967
- #: templates/forms/affiliation.php:199
1968
- msgid "Social media (Facebook, Twitter, etc.)"
1969
- msgstr "Social media (Facebook, Twitter, etc.)"
1970
-
1971
- #: templates/forms/affiliation.php:203
1972
- msgid "Mobile apps"
1973
- msgstr "Mobile apps"
1974
-
1975
- #: templates/forms/affiliation.php:207
1976
- msgid "Website, email, and social media statistics (optional)"
1977
- msgstr "Website, email, and social media statistics (optional)"
1978
-
1979
- #: templates/forms/affiliation.php:210
1980
- msgid "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)."
1981
- msgstr "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)."
1982
-
1983
- #: templates/forms/affiliation.php:214
1984
- msgid "How will you promote us?"
1985
- msgstr "How will you promote us?"
1986
-
1987
- #: templates/forms/affiliation.php:217
1988
- msgid "Please provide details on how you intend to promote %s (please be as specific as possible)."
1989
- msgstr "Please provide details on how you intend to promote %s (please be as specific as possible)."
1990
-
1991
- #: templates/forms/affiliation.php:223, templates/forms/resend-key.php:22
1992
- msgid "Cancel"
1993
- msgstr "Cancel"
1994
-
1995
- #: templates/forms/affiliation.php:225
1996
- msgid "Become an affiliate"
1997
- msgstr "Become an affiliate"
1998
-
1999
- #: templates/forms/license-activation.php:20
2000
- msgid "Please enter the license key that you received in the email right after the purchase:"
2001
- msgstr "Please enter the license key that you received in the email right after the purchase:"
2002
-
2003
- #: templates/forms/license-activation.php:25
2004
- msgid "Update License"
2005
- msgstr "Update License"
2006
-
2007
- #: templates/forms/optout.php:30
2008
- msgctxt "verb"
2009
- msgid "Opt Out"
2010
- msgstr "Opt Out"
2011
-
2012
- #: templates/forms/optout.php:31
2013
- msgctxt "verb"
2014
- msgid "Opt In"
2015
- msgstr "Opt In"
2016
-
2017
- #: templates/forms/optout.php:33
2018
- msgid "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
2019
- msgstr "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
2020
-
2021
- #: templates/forms/optout.php:35
2022
- msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
2023
- msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
2024
-
2025
- #: templates/forms/premium-versions-upgrade-handler.php:24
2026
- msgid "There is a new version of %s available."
2027
- msgstr "There is a new version of %s available."
2028
-
2029
- #: templates/forms/premium-versions-upgrade-handler.php:25
2030
- msgid " %sRenew your license now%s to access version %s security & feature updates, and support."
2031
- msgstr " %sRenew your license now%s to access version %s security & feature updates, and support."
2032
-
2033
- #: templates/forms/premium-versions-upgrade-handler.php:34
2034
- msgid "New Version Available"
2035
- msgstr "New Version Available"
2036
-
2037
- #: templates/forms/premium-versions-upgrade-handler.php:36
2038
- msgid "Renew license"
2039
- msgstr "Renew license"
2040
-
2041
- #: templates/forms/premium-versions-upgrade-handler.php:53
2042
- msgctxt "close a window"
2043
- msgid "Dismiss"
2044
- msgstr "Dismiss"
2045
-
2046
- #: templates/forms/resend-key.php:21
2047
- msgid "Send License Key"
2048
- msgstr "Send License Key"
2049
-
2050
- #: templates/forms/resend-key.php:57
2051
- msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
2052
- msgstr "Enter the email address you've used for the upgrade below and we will resend you the license key."
2053
-
2054
- #: templates/forms/trial-start.php:22
2055
- msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
2056
- msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
2057
-
2058
- #: templates/forms/trial-start.php:28
2059
- msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt in with your user and non-sensitive site information, allowing the %s to periodically send data to %s to check for version updates and to validate your trial."
2060
- msgstr "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt in with your user and non-sensitive site information, allowing the %s to periodically send data to %s to check for version updates and to validate your trial."
2061
-
2062
- #: templates/js/style-premium-theme.php:37
2063
- msgid "Premium"
2064
- msgstr "Premium"
2065
-
2066
- #: templates/partials/network-activation.php:23
2067
- msgid "Activate license on all sites in the network."
2068
- msgstr "Activate license on all sites in the network."
2069
-
2070
- #: templates/partials/network-activation.php:24
2071
- msgid "Apply on all sites in the network."
2072
- msgstr "Apply on all sites in the network."
2073
-
2074
- #: templates/partials/network-activation.php:27
2075
- msgid "Activate license on all pending sites."
2076
- msgstr "Activate license on all pending sites."
2077
-
2078
- #: templates/partials/network-activation.php:28
2079
- msgid "Apply on all pending sites."
2080
- msgstr "Apply on all pending sites."
2081
-
2082
- #: templates/partials/network-activation.php:36, templates/partials/network-activation.php:68
2083
- msgid "allow"
2084
- msgstr "allow"
2085
-
2086
- #: templates/partials/network-activation.php:38, templates/partials/network-activation.php:70
2087
- msgid "delegate"
2088
- msgstr "delegate"
2089
-
2090
- #: templates/partials/network-activation.php:41, templates/partials/network-activation.php:73
2091
- msgid "skip"
2092
- msgstr "skip"
2093
-
2094
- #: templates/plugin-info/description.php:72, templates/plugin-info/screenshots.php:31
2095
- msgid "Click to view full-size screenshot %d"
2096
- msgstr "Click to view full-size screenshot %d"
2097
-
2098
- #: templates/plugin-info/features.php:56
2099
- msgid "Unlimited Updates"
2100
- msgstr "Unlimited Updates"
2101
-
2102
- #: templates/account/partials/activate-license-button.php:46
2103
- msgid "Localhost"
2104
- msgstr "Localhost"
2105
-
2106
- #: templates/account/partials/activate-license-button.php:50
2107
- msgctxt "as 5 licenses left"
2108
- msgid "%s left"
2109
- msgstr "%s left"
2110
-
2111
- #: templates/account/partials/activate-license-button.php:51
2112
- msgid "Last license"
2113
- msgstr "Last license"
2114
-
2115
- #: templates/account/partials/addon.php:111
2116
- msgid "Cancelled"
2117
- msgstr "Cancelled"
2118
-
2119
- #: templates/account/partials/addon.php:116
2120
- msgid "Expired"
2121
- msgstr "Expired"
2122
-
2123
- #: templates/account/partials/addon.php:121
2124
- msgid "No expiration"
2125
- msgstr "No expiration"
2126
-
2127
- #: templates/account/partials/addon.php:259, templates/account/partials/addon.php:312
2128
- msgid "Activate this add-on"
2129
- msgstr "Activate this add-on"
2130
-
2131
- #: templates/account/partials/site.php:181
2132
- msgid "Owner Name"
2133
- msgstr "Owner Name"
2134
-
2135
- #: templates/account/partials/site.php:193
2136
- msgid "Owner Email"
2137
- msgstr "Owner Email"
2138
-
2139
- #: templates/account/partials/site.php:205
2140
- msgid "Owner ID"
2141
- msgstr "Owner ID"
2142
-
2143
- #: templates/account/partials/site.php:270
2144
- msgid "Subscription"
2145
- msgstr "Subscription"
2146
-
2147
- #: templates/forms/deactivation/contact.php:19
2148
- msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
2149
- msgstr "Sorry for the inconvenience and we are here to help if you give us a chance."
2150
-
2151
- #: templates/forms/deactivation/contact.php:22
2152
- msgid "Contact Support"
2153
- msgstr "Contact Support"
2154
-
2155
- #: templates/forms/deactivation/form.php:56
2156
- msgid "Anonymous feedback"
2157
- msgstr "Anonymous feedback"
2158
-
2159
- #: templates/forms/deactivation/form.php:63
2160
- msgid "Deactivate"
2161
- msgstr "Deactivate"
2162
-
2163
- #: templates/forms/deactivation/form.php:65
2164
- msgid "Activate %s"
2165
- msgstr "Activate %s"
2166
-
2167
- #: templates/forms/deactivation/form.php:76
2168
- msgid "Quick feedback"
2169
- msgstr "Quick feedback"
2170
-
2171
- #: templates/forms/deactivation/form.php:80
2172
- msgid "If you have a moment, please let us know why you are %s"
2173
- msgstr "If you have a moment, please let us know why you are %s"
2174
-
2175
- #: templates/forms/deactivation/form.php:80
2176
- msgid "deactivating"
2177
- msgstr "deactivating"
2178
-
2179
- #: templates/forms/deactivation/form.php:80
2180
- msgid "switching"
2181
- msgstr "switching"
2182
-
2183
- #: templates/forms/deactivation/form.php:269
2184
- msgid "Submit & %s"
2185
- msgstr "Submit & %s"
2186
-
2187
- #: templates/forms/deactivation/form.php:290
2188
- msgid "Kindly tell us the reason so we can improve."
2189
- msgstr "Kindly tell us the reason so we can improve."
2190
-
2191
- #: templates/forms/deactivation/form.php:411
2192
- msgid "Yes - %s"
2193
- msgstr "Yes - %s"
2194
-
2195
- #: templates/forms/deactivation/form.php:418
2196
- msgid "Skip & %s"
2197
- msgstr "Skip & %s"
2198
-
2199
- #: templates/forms/deactivation/retry-skip.php:21
2200
- msgid "Click here to use the plugin anonymously"
2201
- msgstr "Click here to use the plugin anonymously"
2202
-
2203
- #: templates/forms/deactivation/retry-skip.php:23
2204
- msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
2205
- msgstr "You might have missed it, but you don't have to share any data and can just %s the opt-in."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2019 freemius
2
+ # This file is distributed under the same license as the freemius package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: freemius\n"
6
+ "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
7
+ "POT-Creation-Date: \n"
8
+ "PO-Revision-Date: \n"
9
+ "Last-Translator: Vova Feldman <vova@freemius.com>\n"
10
+ "Language: \n"
11
+ "Language-Team: Freemius Team <admin@freemius.com>\n"
12
+ "Content-Type: text/plain; charset=UTF-8\n"
13
+ "Content-Transfer-Encoding: 8bit\n"
14
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
+ "MIME-Version: 1.0\n"
16
+ "X-Poedit-Basepath: ..\n"
17
+ "X-Poedit-KeywordsList: get_text_inline;fs_text_inline;fs_echo_inline;fs_esc_js_inline;fs_esc_attr_inline;fs_esc_attr_echo_inline;fs_esc_html_inline;fs_esc_html_echo_inline;get_text_x_inline:1,2c;fs_text_x_inline:1,2c;fs_echo_x_inline:1,2c;fs_esc_attr_x_inline:1,2c;fs_esc_js_x_inline:1,2c;fs_esc_js_echo_x_inline:1,2c;fs_esc_html_x_inline:1,2c;fs_esc_html_echo_x_inline:1,2c\n"
18
+ "X-Poedit-SearchPath-0: .\n"
19
+ "X-Poedit-SearchPathExcluded-0: *.js\n"
20
+ "X-Poedit-SourceCharset: UTF-8\n"
21
+
22
+ #: includes/class-freemius.php:1688
23
+ msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
24
+ msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
25
+
26
+ #: includes/class-freemius.php:1690
27
+ msgid "Error"
28
+ msgstr "Error"
29
+
30
+ #: includes/class-freemius.php:2011
31
+ msgid "I found a better %s"
32
+ msgstr "I found a better %s"
33
+
34
+ #: includes/class-freemius.php:2013
35
+ msgid "What's the %s's name?"
36
+ msgstr "What's the %s's name?"
37
+
38
+ #: includes/class-freemius.php:2019
39
+ msgid "It's a temporary %s. I'm just debugging an issue."
40
+ msgstr "It's a temporary %s. I'm just debugging an issue."
41
+
42
+ #: includes/class-freemius.php:2021
43
+ msgid "Deactivation"
44
+ msgstr "Deactivation"
45
+
46
+ #: includes/class-freemius.php:2022
47
+ msgid "Theme Switch"
48
+ msgstr "Theme Switch"
49
+
50
+ #: includes/class-freemius.php:2031, templates/forms/resend-key.php:24
51
+ msgid "Other"
52
+ msgstr "Other"
53
+
54
+ #: includes/class-freemius.php:2039
55
+ msgid "I no longer need the %s"
56
+ msgstr "I no longer need the %s"
57
+
58
+ #: includes/class-freemius.php:2046
59
+ msgid "I only needed the %s for a short period"
60
+ msgstr "I only needed the %s for a short period"
61
+
62
+ #: includes/class-freemius.php:2052
63
+ msgid "The %s broke my site"
64
+ msgstr "The %s broke my site"
65
+
66
+ #: includes/class-freemius.php:2059
67
+ msgid "The %s suddenly stopped working"
68
+ msgstr "The %s suddenly stopped working"
69
+
70
+ #: includes/class-freemius.php:2069
71
+ msgid "I can't pay for it anymore"
72
+ msgstr "I can't pay for it anymore"
73
+
74
+ #: includes/class-freemius.php:2071
75
+ msgid "What price would you feel comfortable paying?"
76
+ msgstr "What price would you feel comfortable paying?"
77
+
78
+ #: includes/class-freemius.php:2077
79
+ msgid "I don't like to share my information with you"
80
+ msgstr "I don't like to share my information with you"
81
+
82
+ #: includes/class-freemius.php:2098
83
+ msgid "The %s didn't work"
84
+ msgstr "The %s didn't work"
85
+
86
+ #: includes/class-freemius.php:2108
87
+ msgid "I couldn't understand how to make it work"
88
+ msgstr "I couldn't understand how to make it work"
89
+
90
+ #: includes/class-freemius.php:2116
91
+ msgid "The %s is great, but I need specific feature that you don't support"
92
+ msgstr "The %s is great, but I need specific feature that you don't support"
93
+
94
+ #: includes/class-freemius.php:2118
95
+ msgid "What feature?"
96
+ msgstr "What feature?"
97
+
98
+ #: includes/class-freemius.php:2122
99
+ msgid "The %s is not working"
100
+ msgstr "The %s is not working"
101
+
102
+ #: includes/class-freemius.php:2124
103
+ msgid "Kindly share what didn't work so we can fix it for future users..."
104
+ msgstr "Kindly share what didn't work so we can fix it for future users..."
105
+
106
+ #: includes/class-freemius.php:2128
107
+ msgid "It's not what I was looking for"
108
+ msgstr "It's not what I was looking for"
109
+
110
+ #: includes/class-freemius.php:2130
111
+ msgid "What you've been looking for?"
112
+ msgstr "What you've been looking for?"
113
+
114
+ #: includes/class-freemius.php:2134
115
+ msgid "The %s didn't work as expected"
116
+ msgstr "The %s didn't work as expected"
117
+
118
+ #: includes/class-freemius.php:2136
119
+ msgid "What did you expect?"
120
+ msgstr "What did you expect?"
121
+
122
+ #: includes/class-freemius.php:2942, templates/debug.php:20
123
+ msgid "Freemius Debug"
124
+ msgstr "Freemius Debug"
125
+
126
+ #: includes/class-freemius.php:3670
127
+ msgid "I don't know what is cURL or how to install it, help me!"
128
+ msgstr "I don't know what is cURL or how to install it, help me!"
129
+
130
+ #: includes/class-freemius.php:3672
131
+ msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
132
+ msgstr "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
133
+
134
+ #: includes/class-freemius.php:3679
135
+ msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
136
+ msgstr "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
137
+
138
+ #: includes/class-freemius.php:3784
139
+ msgid "Yes - do your thing"
140
+ msgstr "Yes - do your thing"
141
+
142
+ #: includes/class-freemius.php:3789
143
+ msgid "No - just deactivate"
144
+ msgstr "No - just deactivate"
145
+
146
+ #: includes/class-freemius.php:3834, includes/class-freemius.php:4343, includes/class-freemius.php:5442, includes/class-freemius.php:11545, includes/class-freemius.php:14916, includes/class-freemius.php:14968, includes/class-freemius.php:15030, includes/class-freemius.php:17263, includes/class-freemius.php:17273, includes/class-freemius.php:17882, includes/class-freemius.php:18742, includes/class-freemius.php:18857, includes/class-freemius.php:19001, templates/add-ons.php:43
147
+ msgctxt "exclamation"
148
+ msgid "Oops"
149
+ msgstr "Oops"
150
+
151
+ #: includes/class-freemius.php:3903
152
+ msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
153
+ msgstr "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
154
+
155
+ #: includes/class-freemius.php:4340
156
+ msgctxt "addonX cannot run without pluginY"
157
+ msgid "%s cannot run without %s."
158
+ msgstr "%s cannot run without %s."
159
+
160
+ #: includes/class-freemius.php:4341
161
+ msgctxt "addonX cannot run..."
162
+ msgid "%s cannot run without the plugin."
163
+ msgstr "%s cannot run without the plugin."
164
+
165
+ #: includes/class-freemius.php:4487, includes/class-freemius.php:4512, includes/class-freemius.php:17953
166
+ msgid "Unexpected API error. Please contact the %s's author with the following error."
167
+ msgstr "Unexpected API error. Please contact the %s's author with the following error."
168
+
169
+ #: includes/class-freemius.php:5130
170
+ msgid "Premium %s version was successfully activated."
171
+ msgstr "Premium %s version was successfully activated."
172
+
173
+ #: includes/class-freemius.php:5142, includes/class-freemius.php:7004
174
+ msgctxt "Used to express elation, enthusiasm, or triumph (especially in electronic communication)."
175
+ msgid "W00t"
176
+ msgstr "W00t"
177
+
178
+ #: includes/class-freemius.php:5157
179
+ msgid "You have a %s license."
180
+ msgstr "You have a %s license."
181
+
182
+ #: includes/class-freemius.php:5161, includes/class-freemius.php:14337, includes/class-freemius.php:14348, includes/class-freemius.php:17177, includes/class-freemius.php:17491, includes/class-freemius.php:17557, includes/class-freemius.php:17707
183
+ msgctxt "interjection expressing joy or exuberance"
184
+ msgid "Yee-haw"
185
+ msgstr "Yee-haw"
186
+
187
+ #: includes/class-freemius.php:5425
188
+ msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
189
+ msgstr "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
190
+
191
+ #: includes/class-freemius.php:5429
192
+ msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
193
+ msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
194
+
195
+ #: includes/class-freemius.php:5438, templates/add-ons.php:103, templates/account/partials/addon.php:288
196
+ msgid "More information about %s"
197
+ msgstr "More information about %s"
198
+
199
+ #: includes/class-freemius.php:5439
200
+ msgid "Purchase License"
201
+ msgstr "Purchase License"
202
+
203
+ #: includes/class-freemius.php:6372, templates/connect.php:163
204
+ msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
205
+ msgstr "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
206
+
207
+ #: includes/class-freemius.php:6376
208
+ msgid "start the trial"
209
+ msgstr "start the trial"
210
+
211
+ #: includes/class-freemius.php:6377, templates/connect.php:167
212
+ msgid "complete the install"
213
+ msgstr "complete the install"
214
+
215
+ #: includes/class-freemius.php:6490
216
+ msgid "You are just one step away - %s"
217
+ msgstr "You are just one step away - %s"
218
+
219
+ #: includes/class-freemius.php:6493
220
+ msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
221
+ msgid "Complete \"%s\" Activation Now"
222
+ msgstr "Complete \"%s\" Activation Now"
223
+
224
+ #: includes/class-freemius.php:6571
225
+ msgid "We made a few tweaks to the %s, %s"
226
+ msgstr "We made a few tweaks to the %s, %s"
227
+
228
+ #: includes/class-freemius.php:6575
229
+ msgid "Opt in to make \"%s\" better!"
230
+ msgstr "Opt in to make \"%s\" better!"
231
+
232
+ #: includes/class-freemius.php:7003
233
+ msgid "The upgrade of %s was successfully completed."
234
+ msgstr "The upgrade of %s was successfully completed."
235
+
236
+ #: includes/class-freemius.php:8925, includes/class-fs-plugin-updater.php:886, includes/class-fs-plugin-updater.php:1081, includes/class-fs-plugin-updater.php:1088, templates/auto-installation.php:32
237
+ msgid "Add-On"
238
+ msgstr "Add-On"
239
+
240
+ #: includes/class-freemius.php:8927, templates/debug.php:359, templates/debug.php:520
241
+ msgid "Plugin"
242
+ msgstr "Plugin"
243
+
244
+ #: includes/class-freemius.php:8928, templates/debug.php:359, templates/debug.php:520, templates/forms/deactivation/form.php:67
245
+ msgid "Theme"
246
+ msgstr "Theme"
247
+
248
+ #: includes/class-freemius.php:11412
249
+ msgid "Invalid site details collection."
250
+ msgstr "Invalid site details collection."
251
+
252
+ #: includes/class-freemius.php:11532
253
+ msgid "We couldn't find your email address in the system, are you sure it's the right address?"
254
+ msgstr "We couldn't find your email address in the system, are you sure it's the right address?"
255
+
256
+ #: includes/class-freemius.php:11534
257
+ msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
258
+ msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?"
259
+
260
+ #: includes/class-freemius.php:11808
261
+ msgid "Account is pending activation."
262
+ msgstr "Account is pending activation."
263
+
264
+ #: includes/class-freemius.php:11920, templates/forms/premium-versions-upgrade-handler.php:47
265
+ msgid "Buy a license now"
266
+ msgstr "Buy a license now"
267
+
268
+ #: includes/class-freemius.php:11932, templates/forms/premium-versions-upgrade-handler.php:46
269
+ msgid "Renew your license now"
270
+ msgstr "Renew your license now"
271
+
272
+ #: includes/class-freemius.php:11936
273
+ msgid "%s to access version %s security & feature updates, and support."
274
+ msgstr "%s to access version %s security & feature updates, and support."
275
+
276
+ #: includes/class-freemius.php:14319
277
+ msgid "%s activation was successfully completed."
278
+ msgstr "%s activation was successfully completed."
279
+
280
+ #: includes/class-freemius.php:14333
281
+ msgid "Your account was successfully activated with the %s plan."
282
+ msgstr "Your account was successfully activated with the %s plan."
283
+
284
+ #: includes/class-freemius.php:14344, includes/class-freemius.php:17553
285
+ msgid "Your trial has been successfully started."
286
+ msgstr "Your trial has been successfully started."
287
+
288
+ #: includes/class-freemius.php:14914, includes/class-freemius.php:14966, includes/class-freemius.php:15028
289
+ msgid "Couldn't activate %s."
290
+ msgstr "Couldn't activate %s."
291
+
292
+ #: includes/class-freemius.php:14915, includes/class-freemius.php:14967, includes/class-freemius.php:15029
293
+ msgid "Please contact us with the following message:"
294
+ msgstr "Please contact us with the following message:"
295
+
296
+ #: includes/class-freemius.php:15378, includes/class-freemius.php:19839
297
+ msgid "Upgrade"
298
+ msgstr "Upgrade"
299
+
300
+ #: includes/class-freemius.php:15384
301
+ msgid "Start Trial"
302
+ msgstr "Start Trial"
303
+
304
+ #: includes/class-freemius.php:15386
305
+ msgid "Pricing"
306
+ msgstr "Pricing"
307
+
308
+ #: includes/class-freemius.php:15448, includes/class-freemius.php:15450
309
+ msgid "Affiliation"
310
+ msgstr "Affiliation"
311
+
312
+ #: includes/class-freemius.php:15478, includes/class-freemius.php:15480, templates/account.php:150, templates/debug.php:324
313
+ msgid "Account"
314
+ msgstr "Account"
315
+
316
+ #: includes/class-freemius.php:15493, includes/class-freemius.php:15495, includes/customizer/class-fs-customizer-support-section.php:60
317
+ msgid "Contact Us"
318
+ msgstr "Contact Us"
319
+
320
+ #: includes/class-freemius.php:15505, includes/class-freemius.php:15507, includes/class-freemius.php:19849, templates/account.php:100, templates/account/partials/addon.php:41
321
+ msgid "Add-Ons"
322
+ msgstr "Add-Ons"
323
+
324
+ #: includes/class-freemius.php:15541
325
+ msgctxt "ASCII arrow left icon"
326
+ msgid "&#x2190;"
327
+ msgstr "&#x2190;"
328
+
329
+ #: includes/class-freemius.php:15541
330
+ msgctxt "ASCII arrow right icon"
331
+ msgid "&#x27a4;"
332
+ msgstr "&#x27a4;"
333
+
334
+ #: includes/class-freemius.php:15543, templates/pricing.php:97
335
+ msgctxt "noun"
336
+ msgid "Pricing"
337
+ msgstr "Pricing"
338
+
339
+ #: includes/class-freemius.php:15756, includes/customizer/class-fs-customizer-support-section.php:67
340
+ msgid "Support Forum"
341
+ msgstr "Support Forum"
342
+
343
+ #: includes/class-freemius.php:16542
344
+ msgid "Your email has been successfully verified - you are AWESOME!"
345
+ msgstr "Your email has been successfully verified - you are AWESOME!"
346
+
347
+ #: includes/class-freemius.php:16543
348
+ msgctxt "a positive response"
349
+ msgid "Right on"
350
+ msgstr "Right on"
351
+
352
+ #: includes/class-freemius.php:17168
353
+ msgid "Your %s Add-on plan was successfully upgraded."
354
+ msgstr "Your %s Add-on plan was successfully upgraded."
355
+
356
+ #: includes/class-freemius.php:17170
357
+ msgid "%s Add-on was successfully purchased."
358
+ msgstr "%s Add-on was successfully purchased."
359
+
360
+ #: includes/class-freemius.php:17173
361
+ msgid "Download the latest version"
362
+ msgstr "Download the latest version"
363
+
364
+ #: includes/class-freemius.php:17259
365
+ msgctxt "%1s - plugin title, %2s - API domain"
366
+ msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
367
+ msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
368
+
369
+ #: includes/class-freemius.php:17262, includes/class-freemius.php:17678, includes/class-freemius.php:17755
370
+ msgid "Error received from the server:"
371
+ msgstr "Error received from the server:"
372
+
373
+ #: includes/class-freemius.php:17272
374
+ msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
375
+ msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
376
+
377
+ #: includes/class-freemius.php:17454, includes/class-freemius.php:17683, includes/class-freemius.php:17726, includes/class-freemius.php:17829
378
+ msgctxt "something somebody says when they are thinking about what you have just said."
379
+ msgid "Hmm"
380
+ msgstr "Hmm"
381
+
382
+ #: includes/class-freemius.php:17467
383
+ msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
384
+ msgstr "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
385
+
386
+ #: includes/class-freemius.php:17468, templates/account.php:102, templates/add-ons.php:134, templates/account/partials/addon.php:43
387
+ msgctxt "trial period"
388
+ msgid "Trial"
389
+ msgstr "Trial"
390
+
391
+ #: includes/class-freemius.php:17473
392
+ msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
393
+ msgstr "I have upgraded my account but when I try to Sync the License, the plan remains %s."
394
+
395
+ #: includes/class-freemius.php:17477, includes/class-freemius.php:17535
396
+ msgid "Please contact us here"
397
+ msgstr "Please contact us here"
398
+
399
+ #: includes/class-freemius.php:17487
400
+ msgid "Your plan was successfully upgraded."
401
+ msgstr "Your plan was successfully upgraded."
402
+
403
+ #: includes/class-freemius.php:17505
404
+ msgid "Your plan was successfully changed to %s."
405
+ msgstr "Your plan was successfully changed to %s."
406
+
407
+ #: includes/class-freemius.php:17521
408
+ msgid "Your license has expired. You can still continue using the free %s forever."
409
+ msgstr "Your license has expired. You can still continue using the free %s forever."
410
+
411
+ #: includes/class-freemius.php:17523
412
+ msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
413
+ msgstr "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
414
+
415
+ #: includes/class-freemius.php:17531
416
+ msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
417
+ msgstr "Your license has been cancelled. If you think it's a mistake, please contact support."
418
+
419
+ #: includes/class-freemius.php:17544
420
+ msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
421
+ msgstr "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
422
+
423
+ #: includes/class-freemius.php:17567
424
+ msgid "Your free trial has expired. You can still continue using all our free features."
425
+ msgstr "Your free trial has expired. You can still continue using all our free features."
426
+
427
+ #: includes/class-freemius.php:17569
428
+ msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
429
+ msgstr "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
430
+
431
+ #: includes/class-freemius.php:17674
432
+ msgid "It looks like the license could not be activated."
433
+ msgstr "It looks like the license could not be activated."
434
+
435
+ #: includes/class-freemius.php:17704
436
+ msgid "Your license was successfully activated."
437
+ msgstr "Your license was successfully activated."
438
+
439
+ #: includes/class-freemius.php:17730
440
+ msgid "It looks like your site currently doesn't have an active license."
441
+ msgstr "It looks like your site currently doesn't have an active license."
442
+
443
+ #: includes/class-freemius.php:17754
444
+ msgid "It looks like the license deactivation failed."
445
+ msgstr "It looks like the license deactivation failed."
446
+
447
+ #: includes/class-freemius.php:17782
448
+ msgid "Your license was successfully deactivated, you are back to the %s plan."
449
+ msgstr "Your license was successfully deactivated, you are back to the %s plan."
450
+
451
+ #: includes/class-freemius.php:17783
452
+ msgid "O.K"
453
+ msgstr "O.K"
454
+
455
+ #: includes/class-freemius.php:17836
456
+ msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
457
+ msgstr "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
458
+
459
+ #: includes/class-freemius.php:17845
460
+ msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
461
+ msgstr "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
462
+
463
+ #: includes/class-freemius.php:17887
464
+ msgid "You are already running the %s in a trial mode."
465
+ msgstr "You are already running the %s in a trial mode."
466
+
467
+ #: includes/class-freemius.php:17898
468
+ msgid "You already utilized a trial before."
469
+ msgstr "You already utilized a trial before."
470
+
471
+ #: includes/class-freemius.php:17912
472
+ msgid "Plan %s do not exist, therefore, can't start a trial."
473
+ msgstr "Plan %s do not exist, therefore, can't start a trial."
474
+
475
+ #: includes/class-freemius.php:17923
476
+ msgid "Plan %s does not support a trial period."
477
+ msgstr "Plan %s does not support a trial period."
478
+
479
+ #: includes/class-freemius.php:17934
480
+ msgid "None of the %s's plans supports a trial period."
481
+ msgstr "None of the %s's plans supports a trial period."
482
+
483
+ #: includes/class-freemius.php:17984
484
+ msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
485
+ msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
486
+
487
+ #: includes/class-freemius.php:18020
488
+ msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
489
+ msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
490
+
491
+ #: includes/class-freemius.php:18039
492
+ msgid "Your %s free trial was successfully cancelled."
493
+ msgstr "Your %s free trial was successfully cancelled."
494
+
495
+ #: includes/class-freemius.php:18346
496
+ msgid "Version %s was released."
497
+ msgstr "Version %s was released."
498
+
499
+ #: includes/class-freemius.php:18346
500
+ msgid "Please download %s."
501
+ msgstr "Please download %s."
502
+
503
+ #: includes/class-freemius.php:18353
504
+ msgid "the latest %s version here"
505
+ msgstr "the latest %s version here"
506
+
507
+ #: includes/class-freemius.php:18358
508
+ msgid "New"
509
+ msgstr "New"
510
+
511
+ #: includes/class-freemius.php:18363
512
+ msgid "Seems like you got the latest release."
513
+ msgstr "Seems like you got the latest release."
514
+
515
+ #: includes/class-freemius.php:18364
516
+ msgid "You are all good!"
517
+ msgstr "You are all good!"
518
+
519
+ #: includes/class-freemius.php:18632
520
+ msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
521
+ msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
522
+
523
+ #: includes/class-freemius.php:18769
524
+ msgid "Site successfully opted in."
525
+ msgstr "Site successfully opted in."
526
+
527
+ #: includes/class-freemius.php:18770, includes/class-freemius.php:19581
528
+ msgid "Awesome"
529
+ msgstr "Awesome"
530
+
531
+ #: includes/class-freemius.php:18786, templates/forms/optout.php:32
532
+ msgid "We appreciate your help in making the %s better by letting us track some usage data."
533
+ msgstr "We appreciate your help in making the %s better by letting us track some usage data."
534
+
535
+ #: includes/class-freemius.php:18787
536
+ msgid "Thank you!"
537
+ msgstr "Thank you!"
538
+
539
+ #: includes/class-freemius.php:18794
540
+ msgid "We will no longer be sending any usage data of %s on %s to %s."
541
+ msgstr "We will no longer be sending any usage data of %s on %s to %s."
542
+
543
+ #: includes/class-freemius.php:18923
544
+ msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
545
+ msgstr "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
546
+
547
+ #: includes/class-freemius.php:18929
548
+ msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
549
+ msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
550
+
551
+ #: includes/class-freemius.php:18934
552
+ msgid "%s is the new owner of the account."
553
+ msgstr "%s is the new owner of the account."
554
+
555
+ #: includes/class-freemius.php:18936
556
+ msgctxt "as congratulations"
557
+ msgid "Congrats"
558
+ msgstr "Congrats"
559
+
560
+ #: includes/class-freemius.php:18956
561
+ msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
562
+ msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered."
563
+
564
+ #: includes/class-freemius.php:18957
565
+ msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
566
+ msgstr "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
567
+
568
+ #: includes/class-freemius.php:18964
569
+ msgid "Change Ownership"
570
+ msgstr "Change Ownership"
571
+
572
+ #: includes/class-freemius.php:18972
573
+ msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
574
+ msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
575
+
576
+ #: includes/class-freemius.php:18984
577
+ msgid "Please provide your full name."
578
+ msgstr "Please provide your full name."
579
+
580
+ #: includes/class-freemius.php:18989
581
+ msgid "Your name was successfully updated."
582
+ msgstr "Your name was successfully updated."
583
+
584
+ #: includes/class-freemius.php:19050
585
+ msgid "You have successfully updated your %s."
586
+ msgstr "You have successfully updated your %s."
587
+
588
+ #: includes/class-freemius.php:19190
589
+ msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
590
+ msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server."
591
+
592
+ #: includes/class-freemius.php:19191
593
+ msgctxt "advance notice of something that will need attention."
594
+ msgid "Heads up"
595
+ msgstr "Heads up"
596
+
597
+ #: includes/class-freemius.php:19621
598
+ msgctxt "exclamation"
599
+ msgid "Hey"
600
+ msgstr "Hey"
601
+
602
+ #: includes/class-freemius.php:19621
603
+ msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
604
+ msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
605
+
606
+ #: includes/class-freemius.php:19629
607
+ msgid "No commitment for %s days - cancel anytime!"
608
+ msgstr "No commitment for %s days - cancel anytime!"
609
+
610
+ #: includes/class-freemius.php:19630
611
+ msgid "No credit card required"
612
+ msgstr "No credit card required"
613
+
614
+ #: includes/class-freemius.php:19637, templates/forms/trial-start.php:53
615
+ msgctxt "call to action"
616
+ msgid "Start free trial"
617
+ msgstr "Start free trial"
618
+
619
+ #: includes/class-freemius.php:19714
620
+ msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
621
+ msgstr "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
622
+
623
+ #: includes/class-freemius.php:19723
624
+ msgid "Learn more"
625
+ msgstr "Learn more"
626
+
627
+ #: includes/class-freemius.php:19873, templates/account.php:406, templates/account.php:509, templates/connect.php:171, templates/connect.php:421, templates/forms/license-activation.php:24, templates/account/partials/addon.php:235
628
+ msgid "Activate License"
629
+ msgstr "Activate License"
630
+
631
+ #: includes/class-freemius.php:19874, templates/account.php:469, templates/account.php:508, templates/account/partials/site.php:256
632
+ msgid "Change License"
633
+ msgstr "Change License"
634
+
635
+ #: includes/class-freemius.php:19956, templates/account/partials/site.php:161
636
+ msgid "Opt Out"
637
+ msgstr "Opt Out"
638
+
639
+ #: includes/class-freemius.php:19958, includes/class-freemius.php:19963, templates/account/partials/site.php:43, templates/account/partials/site.php:161
640
+ msgid "Opt In"
641
+ msgstr "Opt In"
642
+
643
+ #: includes/class-freemius.php:20187
644
+ msgid " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s"
645
+ msgstr " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s"
646
+
647
+ #: includes/class-freemius.php:20195
648
+ msgid "Activate %s features"
649
+ msgstr "Activate %s features"
650
+
651
+ #: includes/class-freemius.php:20208
652
+ msgid "Please follow these steps to complete the upgrade"
653
+ msgstr "Please follow these steps to complete the upgrade"
654
+
655
+ #: includes/class-freemius.php:20212
656
+ msgid "Download the latest %s version"
657
+ msgstr "Download the latest %s version"
658
+
659
+ #: includes/class-freemius.php:20216
660
+ msgid "Upload and activate the downloaded version"
661
+ msgstr "Upload and activate the downloaded version"
662
+
663
+ #: includes/class-freemius.php:20218
664
+ msgid "How to upload and activate?"
665
+ msgstr "How to upload and activate?"
666
+
667
+ #: includes/class-freemius.php:20352
668
+ msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
669
+ msgstr "%sClick here%s to choose the sites where you'd like to activate the license on."
670
+
671
+ #: includes/class-freemius.php:20513
672
+ msgid "Auto installation only works for opted-in users."
673
+ msgstr "Auto installation only works for opted-in users."
674
+
675
+ #: includes/class-freemius.php:20523, includes/class-freemius.php:20556, includes/class-fs-plugin-updater.php:1060, includes/class-fs-plugin-updater.php:1074
676
+ msgid "Invalid module ID."
677
+ msgstr "Invalid module ID."
678
+
679
+ #: includes/class-freemius.php:20532, includes/class-fs-plugin-updater.php:1096
680
+ msgid "Premium version already active."
681
+ msgstr "Premium version already active."
682
+
683
+ #: includes/class-freemius.php:20539
684
+ msgid "You do not have a valid license to access the premium version."
685
+ msgstr "You do not have a valid license to access the premium version."
686
+
687
+ #: includes/class-freemius.php:20546
688
+ msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
689
+ msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version."
690
+
691
+ #: includes/class-freemius.php:20564, includes/class-fs-plugin-updater.php:1095
692
+ msgid "Premium add-on version already installed."
693
+ msgstr "Premium add-on version already installed."
694
+
695
+ #: includes/class-freemius.php:20909
696
+ msgid "View paid features"
697
+ msgstr "View paid features"
698
+
699
+ #: includes/class-freemius.php:21229
700
+ msgid "Thank you so much for using %s and its add-ons!"
701
+ msgstr "Thank you so much for using %s and its add-ons!"
702
+
703
+ #: includes/class-freemius.php:21230
704
+ msgid "Thank you so much for using %s!"
705
+ msgstr "Thank you so much for using %s!"
706
+
707
+ #: includes/class-freemius.php:21236
708
+ msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
709
+ msgstr "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
710
+
711
+ #: includes/class-freemius.php:21240
712
+ msgid "Thank you so much for using our products!"
713
+ msgstr "Thank you so much for using our products!"
714
+
715
+ #: includes/class-freemius.php:21241
716
+ msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
717
+ msgstr "You've already opted-in to our usage-tracking, which helps us keep improving them."
718
+
719
+ #: includes/class-freemius.php:21260
720
+ msgid "%s and its add-ons"
721
+ msgstr "%s and its add-ons"
722
+
723
+ #: includes/class-freemius.php:21269
724
+ msgid "Products"
725
+ msgstr "Products"
726
+
727
+ #: includes/class-freemius.php:21276, templates/connect.php:272
728
+ msgid "Yes"
729
+ msgstr "Yes"
730
+
731
+ #: includes/class-freemius.php:21277, templates/connect.php:273
732
+ msgid "send me security & feature updates, educational content and offers."
733
+ msgstr "send me security & feature updates, educational content and offers."
734
+
735
+ #: includes/class-freemius.php:21278, templates/connect.php:278
736
+ msgid "No"
737
+ msgstr "No"
738
+
739
+ #: includes/class-freemius.php:21280, templates/connect.php:280
740
+ msgid "do %sNOT%s send me security & feature updates, educational content and offers."
741
+ msgstr "do %sNOT%s send me security & feature updates, educational content and offers."
742
+
743
+ #: includes/class-freemius.php:21290
744
+ msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂"
745
+ msgstr "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂"
746
+
747
+ #: includes/class-freemius.php:21292, templates/connect.php:287
748
+ msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
749
+ msgstr "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
750
+
751
+ #: includes/class-freemius.php:21574
752
+ msgid "License key is empty."
753
+ msgstr "License key is empty."
754
+
755
+ #: includes/class-fs-plugin-updater.php:184, templates/forms/premium-versions-upgrade-handler.php:57
756
+ msgid "Renew license"
757
+ msgstr "Renew license"
758
+
759
+ #: includes/class-fs-plugin-updater.php:189, templates/forms/premium-versions-upgrade-handler.php:58
760
+ msgid "Buy license"
761
+ msgstr "Buy license"
762
+
763
+ #: includes/class-fs-plugin-updater.php:278
764
+ msgid "There is a %s of %s available."
765
+ msgstr "There is a %s of %s available."
766
+
767
+ #: includes/class-fs-plugin-updater.php:282
768
+ msgid "new version"
769
+ msgstr "new version"
770
+
771
+ #: includes/class-fs-plugin-updater.php:305
772
+ msgid "Important Upgrade Notice:"
773
+ msgstr "Important Upgrade Notice:"
774
+
775
+ #: includes/class-fs-plugin-updater.php:1125
776
+ msgid "Installing plugin: %s"
777
+ msgstr "Installing plugin: %s"
778
+
779
+ #: includes/class-fs-plugin-updater.php:1166
780
+ msgid "Unable to connect to the filesystem. Please confirm your credentials."
781
+ msgstr "Unable to connect to the filesystem. Please confirm your credentials."
782
+
783
+ #: includes/class-fs-plugin-updater.php:1348
784
+ msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
785
+ msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
786
+
787
+ #: includes/fs-plugin-info-dialog.php:369, templates/account/partials/addon.php:292
788
+ msgctxt "verb"
789
+ msgid "Purchase"
790
+ msgstr "Purchase"
791
+
792
+ #: includes/fs-plugin-info-dialog.php:372
793
+ msgid "Start my free %s"
794
+ msgstr "Start my free %s"
795
+
796
+ #: includes/fs-plugin-info-dialog.php:413
797
+ msgid "Install Free Version Now"
798
+ msgstr "Install Free Version Now"
799
+
800
+ #: includes/fs-plugin-info-dialog.php:414, templates/auto-installation.php:111, templates/account/partials/addon.php:272, templates/account/partials/addon.php:322
801
+ msgid "Install Now"
802
+ msgstr "Install Now"
803
+
804
+ #: includes/fs-plugin-info-dialog.php:425
805
+ msgctxt "as download latest version"
806
+ msgid "Download Latest Free Version"
807
+ msgstr "Download Latest Free Version"
808
+
809
+ #: includes/fs-plugin-info-dialog.php:426, templates/account.php:80, templates/account/partials/addon.php:21
810
+ msgctxt "as download latest version"
811
+ msgid "Download Latest"
812
+ msgstr "Download Latest"
813
+
814
+ #: includes/fs-plugin-info-dialog.php:436
815
+ msgid "Install Free Version Update Now"
816
+ msgstr "Install Free Version Update Now"
817
+
818
+ #: includes/fs-plugin-info-dialog.php:437, templates/account.php:460
819
+ msgid "Install Update Now"
820
+ msgstr "Install Update Now"
821
+
822
+ #: includes/fs-plugin-info-dialog.php:448
823
+ msgid "Newer Free Version (%s) Installed"
824
+ msgstr "Newer Free Version (%s) Installed"
825
+
826
+ #: includes/fs-plugin-info-dialog.php:449
827
+ msgid "Newer Version (%s) Installed"
828
+ msgstr "Newer Version (%s) Installed"
829
+
830
+ #: includes/fs-plugin-info-dialog.php:457
831
+ msgid "Latest Free Version Installed"
832
+ msgstr "Latest Free Version Installed"
833
+
834
+ #: includes/fs-plugin-info-dialog.php:458
835
+ msgid "Latest Version Installed"
836
+ msgstr "Latest Version Installed"
837
+
838
+ #: includes/fs-plugin-info-dialog.php:613
839
+ msgctxt "Plugin installer section title"
840
+ msgid "Description"
841
+ msgstr "Description"
842
+
843
+ #: includes/fs-plugin-info-dialog.php:614
844
+ msgctxt "Plugin installer section title"
845
+ msgid "Installation"
846
+ msgstr "Installation"
847
+
848
+ #: includes/fs-plugin-info-dialog.php:615
849
+ msgctxt "Plugin installer section title"
850
+ msgid "FAQ"
851
+ msgstr "FAQ"
852
+
853
+ #: includes/fs-plugin-info-dialog.php:616, templates/plugin-info/description.php:55
854
+ msgid "Screenshots"
855
+ msgstr "Screenshots"
856
+
857
+ #: includes/fs-plugin-info-dialog.php:617
858
+ msgctxt "Plugin installer section title"
859
+ msgid "Changelog"
860
+ msgstr "Changelog"
861
+
862
+ #: includes/fs-plugin-info-dialog.php:618
863
+ msgctxt "Plugin installer section title"
864
+ msgid "Reviews"
865
+ msgstr "Reviews"
866
+
867
+ #: includes/fs-plugin-info-dialog.php:619
868
+ msgctxt "Plugin installer section title"
869
+ msgid "Other Notes"
870
+ msgstr "Other Notes"
871
+
872
+ #: includes/fs-plugin-info-dialog.php:634
873
+ msgctxt "Plugin installer section title"
874
+ msgid "Features & Pricing"
875
+ msgstr "Features & Pricing"
876
+
877
+ #: includes/fs-plugin-info-dialog.php:644
878
+ msgid "Plugin Install"
879
+ msgstr "Plugin Install"
880
+
881
+ #: includes/fs-plugin-info-dialog.php:716
882
+ msgctxt "e.g. Professional Plan"
883
+ msgid "%s Plan"
884
+ msgstr "%s Plan"
885
+
886
+ #: includes/fs-plugin-info-dialog.php:742
887
+ msgctxt "e.g. the best product"
888
+ msgid "Best"
889
+ msgstr "Best"
890
+
891
+ #: includes/fs-plugin-info-dialog.php:748, includes/fs-plugin-info-dialog.php:768
892
+ msgctxt "as every month"
893
+ msgid "Monthly"
894
+ msgstr "Monthly"
895
+
896
+ #: includes/fs-plugin-info-dialog.php:751
897
+ msgctxt "as once a year"
898
+ msgid "Annual"
899
+ msgstr "Annual"
900
+
901
+ #: includes/fs-plugin-info-dialog.php:754
902
+ msgid "Lifetime"
903
+ msgstr "Lifetime"
904
+
905
+ #: includes/fs-plugin-info-dialog.php:768, includes/fs-plugin-info-dialog.php:770, includes/fs-plugin-info-dialog.php:772
906
+ msgctxt "e.g. billed monthly"
907
+ msgid "Billed %s"
908
+ msgstr "Billed %s"
909
+
910
+ #: includes/fs-plugin-info-dialog.php:770
911
+ msgctxt "as once a year"
912
+ msgid "Annually"
913
+ msgstr "Annually"
914
+
915
+ #: includes/fs-plugin-info-dialog.php:772
916
+ msgctxt "as once a year"
917
+ msgid "Once"
918
+ msgstr "Once"
919
+
920
+ #: includes/fs-plugin-info-dialog.php:778
921
+ msgid "Single Site License"
922
+ msgstr "Single Site License"
923
+
924
+ #: includes/fs-plugin-info-dialog.php:780
925
+ msgid "Unlimited Licenses"
926
+ msgstr "Unlimited Licenses"
927
+
928
+ #: includes/fs-plugin-info-dialog.php:782
929
+ msgid "Up to %s Sites"
930
+ msgstr "Up to %s Sites"
931
+
932
+ #: includes/fs-plugin-info-dialog.php:792, templates/plugin-info/features.php:82
933
+ msgctxt "as monthly period"
934
+ msgid "mo"
935
+ msgstr "mo"
936
+
937
+ #: includes/fs-plugin-info-dialog.php:799, templates/plugin-info/features.php:80
938
+ msgctxt "as annual period"
939
+ msgid "year"
940
+ msgstr "year"
941
+
942
+ #: includes/fs-plugin-info-dialog.php:853
943
+ msgctxt "noun"
944
+ msgid "Price"
945
+ msgstr "Price"
946
+
947
+ #: includes/fs-plugin-info-dialog.php:901
948
+ msgid "Save %s"
949
+ msgstr "Save %s"
950
+
951
+ #: includes/fs-plugin-info-dialog.php:911
952
+ msgid "No commitment for %s - cancel anytime"
953
+ msgstr "No commitment for %s - cancel anytime"
954
+
955
+ #: includes/fs-plugin-info-dialog.php:914
956
+ msgid "After your free %s, pay as little as %s"
957
+ msgstr "After your free %s, pay as little as %s"
958
+
959
+ #: includes/fs-plugin-info-dialog.php:925
960
+ msgid "Details"
961
+ msgstr "Details"
962
+
963
+ #: includes/fs-plugin-info-dialog.php:929, templates/account.php:91, templates/debug.php:201, templates/debug.php:238, templates/debug.php:452, templates/account/partials/addon.php:32
964
+ msgctxt "product version"
965
+ msgid "Version"
966
+ msgstr "Version"
967
+
968
+ #: includes/fs-plugin-info-dialog.php:936
969
+ msgctxt "as the plugin author"
970
+ msgid "Author"
971
+ msgstr "Author"
972
+
973
+ #: includes/fs-plugin-info-dialog.php:943
974
+ msgid "Last Updated"
975
+ msgstr "Last Updated"
976
+
977
+ #: includes/fs-plugin-info-dialog.php:948, templates/account.php:376
978
+ msgctxt "x-ago"
979
+ msgid "%s ago"
980
+ msgstr "%s ago"
981
+
982
+ #: includes/fs-plugin-info-dialog.php:957
983
+ msgid "Requires WordPress Version"
984
+ msgstr "Requires WordPress Version"
985
+
986
+ #: includes/fs-plugin-info-dialog.php:958
987
+ msgid "%s or higher"
988
+ msgstr "%s or higher"
989
+
990
+ #: includes/fs-plugin-info-dialog.php:965
991
+ msgid "Compatible up to"
992
+ msgstr "Compatible up to"
993
+
994
+ #: includes/fs-plugin-info-dialog.php:973
995
+ msgid "Downloaded"
996
+ msgstr "Downloaded"
997
+
998
+ #: includes/fs-plugin-info-dialog.php:977
999
+ msgid "%s time"
1000
+ msgstr "%s time"
1001
+
1002
+ #: includes/fs-plugin-info-dialog.php:979
1003
+ msgid "%s times"
1004
+ msgstr "%s times"
1005
+
1006
+ #: includes/fs-plugin-info-dialog.php:989
1007
+ msgid "WordPress.org Plugin Page"
1008
+ msgstr "WordPress.org Plugin Page"
1009
+
1010
+ #: includes/fs-plugin-info-dialog.php:997
1011
+ msgid "Plugin Homepage"
1012
+ msgstr "Plugin Homepage"
1013
+
1014
+ #: includes/fs-plugin-info-dialog.php:1005, includes/fs-plugin-info-dialog.php:1087
1015
+ msgid "Donate to this plugin"
1016
+ msgstr "Donate to this plugin"
1017
+
1018
+ #: includes/fs-plugin-info-dialog.php:1012
1019
+ msgid "Average Rating"
1020
+ msgstr "Average Rating"
1021
+
1022
+ #: includes/fs-plugin-info-dialog.php:1019
1023
+ msgid "based on %s"
1024
+ msgstr "based on %s"
1025
+
1026
+ #: includes/fs-plugin-info-dialog.php:1023
1027
+ msgid "%s rating"
1028
+ msgstr "%s rating"
1029
+
1030
+ #: includes/fs-plugin-info-dialog.php:1025
1031
+ msgid "%s ratings"
1032
+ msgstr "%s ratings"
1033
+
1034
+ #: includes/fs-plugin-info-dialog.php:1040
1035
+ msgid "%s star"
1036
+ msgstr "%s star"
1037
+
1038
+ #: includes/fs-plugin-info-dialog.php:1042
1039
+ msgid "%s stars"
1040
+ msgstr "%s stars"
1041
+
1042
+ #: includes/fs-plugin-info-dialog.php:1053
1043
+ msgid "Click to see reviews that provided a rating of %s"
1044
+ msgstr "Click to see reviews that provided a rating of %s"
1045
+
1046
+ #: includes/fs-plugin-info-dialog.php:1066
1047
+ msgid "Contributors"
1048
+ msgstr "Contributors"
1049
+
1050
+ #: includes/fs-plugin-info-dialog.php:1095, includes/fs-plugin-info-dialog.php:1097
1051
+ msgid "Warning"
1052
+ msgstr "Warning"
1053
+
1054
+ #: includes/fs-plugin-info-dialog.php:1095
1055
+ msgid "This plugin has not been tested with your current version of WordPress."
1056
+ msgstr "This plugin has not been tested with your current version of WordPress."
1057
+
1058
+ #: includes/fs-plugin-info-dialog.php:1097
1059
+ msgid "This plugin has not been marked as compatible with your version of WordPress."
1060
+ msgstr "This plugin has not been marked as compatible with your version of WordPress."
1061
+
1062
+ #: includes/fs-plugin-info-dialog.php:1116
1063
+ msgid "Paid add-on must be deployed to Freemius."
1064
+ msgstr "Paid add-on must be deployed to Freemius."
1065
+
1066
+ #: includes/fs-plugin-info-dialog.php:1117
1067
+ msgid "Add-on must be deployed to WordPress.org or Freemius."
1068
+ msgstr "Add-on must be deployed to WordPress.org or Freemius."
1069
+
1070
+ #: templates/account.php:81, templates/forms/subscription-cancellation.php:96, templates/account/partials/addon.php:22, templates/account/partials/site.php:295
1071
+ msgid "Downgrading your plan"
1072
+ msgstr "Downgrading your plan"
1073
+
1074
+ #: templates/account.php:82, templates/forms/subscription-cancellation.php:97, templates/account/partials/addon.php:23, templates/account/partials/site.php:296
1075
+ msgid "Cancelling the subscription"
1076
+ msgstr "Cancelling the subscription"
1077
+
1078
+ #. translators: %1s: Either 'Downgrading your plan' or 'Cancelling the subscription'
1079
+ #: templates/account.php:84, templates/forms/subscription-cancellation.php:99, templates/account/partials/addon.php:25, templates/account/partials/site.php:298
1080
+ msgid "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s."
1081
+ msgstr "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s."
1082
+
1083
+ #: templates/account.php:85, templates/forms/subscription-cancellation.php:100, templates/account/partials/addon.php:26, templates/account/partials/site.php:299
1084
+ msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price."
1085
+ msgstr "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price."
1086
+
1087
+ #: templates/account.php:86, templates/forms/subscription-cancellation.php:106, templates/account/partials/addon.php:27
1088
+ msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
1089
+ msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?"
1090
+
1091
+ #: templates/account.php:87, templates/forms/subscription-cancellation.php:101, templates/account/partials/addon.php:28, templates/account/partials/site.php:300
1092
+ msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support."
1093
+ msgstr "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support."
1094
+
1095
+ #: templates/account.php:88, templates/forms/subscription-cancellation.php:102, templates/account/partials/addon.php:29, templates/account/partials/site.php:301
1096
+ msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
1097
+ msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
1098
+
1099
+ #. translators: %s: Plan title (e.g. "Professional")
1100
+ #: templates/account.php:90, templates/account/partials/activate-license-button.php:31, templates/account/partials/addon.php:31
1101
+ msgid "Activate %s Plan"
1102
+ msgstr "Activate %s Plan"
1103
+
1104
+ #. translators: %s: Time period (e.g. Auto renews in "2 months")
1105
+ #: templates/account.php:93, templates/account/partials/addon.php:34, templates/account/partials/site.php:275
1106
+ msgid "Auto renews in %s"
1107
+ msgstr "Auto renews in %s"
1108
+
1109
+ #. translators: %s: Time period (e.g. Expires in "2 months")
1110
+ #: templates/account.php:95, templates/account/partials/addon.php:36, templates/account/partials/site.php:277
1111
+ msgid "Expires in %s"
1112
+ msgstr "Expires in %s"
1113
+
1114
+ #: templates/account.php:96, templates/account/partials/addon.php:37
1115
+ msgctxt "as synchronize license"
1116
+ msgid "Sync License"
1117
+ msgstr "Sync License"
1118
+
1119
+ #: templates/account.php:97, templates/account/partials/addon.php:38
1120
+ msgid "Cancel Trial"
1121
+ msgstr "Cancel Trial"
1122
+
1123
+ #: templates/account.php:98, templates/account/partials/addon.php:39
1124
+ msgid "Change Plan"
1125
+ msgstr "Change Plan"
1126
+
1127
+ #: templates/account.php:99, templates/account/partials/addon.php:40
1128
+ msgctxt "verb"
1129
+ msgid "Upgrade"
1130
+ msgstr "Upgrade"
1131
+
1132
+ #: templates/account.php:101, templates/account/partials/addon.php:42, templates/account/partials/site.php:302
1133
+ msgctxt "verb"
1134
+ msgid "Downgrade"
1135
+ msgstr "Downgrade"
1136
+
1137
+ #: templates/account.php:103, templates/add-ons.php:130, templates/plugin-info/features.php:72, templates/account/partials/addon.php:44, templates/account/partials/site.php:31
1138
+ msgid "Free"
1139
+ msgstr "Free"
1140
+
1141
+ #: templates/account.php:104, templates/account/partials/addon.php:45
1142
+ msgid "Activate"
1143
+ msgstr "Activate"
1144
+
1145
+ #: templates/account.php:105, templates/debug.php:371, includes/customizer/class-fs-customizer-upsell-control.php:106, templates/account/partials/addon.php:46
1146
+ msgctxt "as product pricing plan"
1147
+ msgid "Plan"
1148
+ msgstr "Plan"
1149
+
1150
+ #: templates/account.php:158
1151
+ msgid "Free Trial"
1152
+ msgstr "Free Trial"
1153
+
1154
+ #: templates/account.php:169
1155
+ msgid "Account Details"
1156
+ msgstr "Account Details"
1157
+
1158
+ #: templates/account.php:179
1159
+ msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
1160
+ msgstr "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
1161
+
1162
+ #: templates/account.php:181
1163
+ msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
1164
+ msgstr "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
1165
+
1166
+ #: templates/account.php:184
1167
+ msgid "Delete Account"
1168
+ msgstr "Delete Account"
1169
+
1170
+ #: templates/account.php:196, templates/account/partials/addon.php:159, templates/account/partials/deactivate-license-button.php:35
1171
+ msgid "Deactivate License"
1172
+ msgstr "Deactivate License"
1173
+
1174
+ #: templates/account.php:219, templates/forms/subscription-cancellation.php:125
1175
+ msgid "Are you sure you want to proceed?"
1176
+ msgstr "Are you sure you want to proceed?"
1177
+
1178
+ #: templates/account.php:219, templates/account/partials/addon.php:182
1179
+ msgid "Cancel Subscription"
1180
+ msgstr "Cancel Subscription"
1181
+
1182
+ #: templates/account.php:247
1183
+ msgctxt "as synchronize"
1184
+ msgid "Sync"
1185
+ msgstr "Sync"
1186
+
1187
+ #: templates/account.php:261, templates/debug.php:487
1188
+ msgid "Name"
1189
+ msgstr "Name"
1190
+
1191
+ #: templates/account.php:267, templates/debug.php:488
1192
+ msgid "Email"
1193
+ msgstr "Email"
1194
+
1195
+ #: templates/account.php:274, templates/debug.php:370, templates/debug.php:526
1196
+ msgid "User ID"
1197
+ msgstr "User ID"
1198
+
1199
+ #: templates/account.php:282
1200
+ msgid "Site ID"
1201
+ msgstr "Site ID"
1202
+
1203
+ #: templates/account.php:285
1204
+ msgid "No ID"
1205
+ msgstr "No ID"
1206
+
1207
+ #: templates/account.php:290, templates/debug.php:243, templates/debug.php:372, templates/debug.php:453, templates/debug.php:490, templates/account/partials/site.php:219
1208
+ msgid "Public Key"
1209
+ msgstr "Public Key"
1210
+
1211
+ #: templates/account.php:296, templates/debug.php:373, templates/debug.php:454, templates/debug.php:491, templates/account/partials/site.php:231
1212
+ msgid "Secret Key"
1213
+ msgstr "Secret Key"
1214
+
1215
+ #: templates/account.php:299
1216
+ msgctxt "as secret encryption key missing"
1217
+ msgid "No Secret"
1218
+ msgstr "No Secret"
1219
+
1220
+ #: templates/account.php:318, templates/account/partials/site.php:112, templates/account/partials/site.php:114
1221
+ msgid "Trial"
1222
+ msgstr "Trial"
1223
+
1224
+ #: templates/account.php:337, templates/debug.php:531, templates/account/partials/site.php:248
1225
+ msgid "License Key"
1226
+ msgstr "License Key"
1227
+
1228
+ #: templates/account.php:367
1229
+ msgid "not verified"
1230
+ msgstr "not verified"
1231
+
1232
+ #: templates/account.php:376, templates/account/partials/addon.php:120
1233
+ msgid "Expired"
1234
+ msgstr "Expired"
1235
+
1236
+ #: templates/account.php:428
1237
+ msgid "Premium version"
1238
+ msgstr "Premium version"
1239
+
1240
+ #: templates/account.php:430
1241
+ msgid "Free version"
1242
+ msgstr "Free version"
1243
+
1244
+ #: templates/account.php:442
1245
+ msgid "Verify Email"
1246
+ msgstr "Verify Email"
1247
+
1248
+ #: templates/account.php:453
1249
+ msgid "Download %s Version"
1250
+ msgstr "Download %s Version"
1251
+
1252
+ #: templates/account.php:467, templates/account.php:649, templates/account/partials/site.php:237, templates/account/partials/site.php:255
1253
+ msgctxt "verb"
1254
+ msgid "Show"
1255
+ msgstr "Show"
1256
+
1257
+ #: templates/account.php:481
1258
+ msgid "What is your %s?"
1259
+ msgstr "What is your %s?"
1260
+
1261
+ #: templates/account.php:489, templates/account/billing.php:27
1262
+ msgctxt "verb"
1263
+ msgid "Edit"
1264
+ msgstr "Edit"
1265
+
1266
+ #: templates/account.php:502
1267
+ msgid "Sites"
1268
+ msgstr "Sites"
1269
+
1270
+ #: templates/account.php:513
1271
+ msgid "Search by address"
1272
+ msgstr "Search by address"
1273
+
1274
+ #: templates/account.php:522, templates/account.php:570, templates/debug.php:236, templates/debug.php:364, templates/debug.php:449, templates/debug.php:486, templates/debug.php:524, templates/debug.php:597, templates/account/payments.php:35, templates/debug/logger.php:21
1275
+ msgid "ID"
1276
+ msgstr "ID"
1277
+
1278
+ #: templates/account.php:523, templates/debug.php:367
1279
+ msgid "Address"
1280
+ msgstr "Address"
1281
+
1282
+ #: templates/account.php:524
1283
+ msgid "License"
1284
+ msgstr "License"
1285
+
1286
+ #: templates/account.php:525
1287
+ msgid "Plan"
1288
+ msgstr "Plan"
1289
+
1290
+ #: templates/account.php:573
1291
+ msgctxt "as software license"
1292
+ msgid "License"
1293
+ msgstr "License"
1294
+
1295
+ #: templates/account.php:643
1296
+ msgctxt "verb"
1297
+ msgid "Hide"
1298
+ msgstr "Hide"
1299
+
1300
+ #: templates/account.php:686
1301
+ msgid "Cancelling %s"
1302
+ msgstr "Cancelling %s"
1303
+
1304
+ #: templates/account.php:686, templates/account.php:703, templates/forms/subscription-cancellation.php:27, templates/forms/deactivation/form.php:117
1305
+ msgid "trial"
1306
+ msgstr "trial"
1307
+
1308
+ #: templates/account.php:701, templates/forms/deactivation/form.php:134
1309
+ msgid "Cancelling %s..."
1310
+ msgstr "Cancelling %s..."
1311
+
1312
+ #: templates/account.php:704, templates/forms/subscription-cancellation.php:28, templates/forms/deactivation/form.php:118
1313
+ msgid "subscription"
1314
+ msgstr "subscription"
1315
+
1316
+ #: templates/account.php:718
1317
+ msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
1318
+ msgstr "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
1319
+
1320
+ #: templates/add-ons.php:36
1321
+ msgid "Add Ons for %s"
1322
+ msgstr "Add Ons for %s"
1323
+
1324
+ #: templates/add-ons.php:44
1325
+ msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
1326
+ msgstr "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
1327
+
1328
+ #: templates/add-ons.php:139
1329
+ msgid "View details"
1330
+ msgstr "View details"
1331
+
1332
+ #: templates/admin-notice.php:13, templates/forms/license-activation.php:208, templates/forms/resend-key.php:77
1333
+ msgctxt "as close a window"
1334
+ msgid "Dismiss"
1335
+ msgstr "Dismiss"
1336
+
1337
+ #: templates/auto-installation.php:45
1338
+ msgid "%s sec"
1339
+ msgstr "%s sec"
1340
+
1341
+ #: templates/auto-installation.php:83
1342
+ msgid "Automatic Installation"
1343
+ msgstr "Automatic Installation"
1344
+
1345
+ #: templates/auto-installation.php:93
1346
+ msgid "An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now."
1347
+ msgstr "An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now."
1348
+
1349
+ #: templates/auto-installation.php:104
1350
+ msgid "The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page."
1351
+ msgstr "The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page."
1352
+
1353
+ #: templates/auto-installation.php:109
1354
+ msgid "Cancel Installation"
1355
+ msgstr "Cancel Installation"
1356
+
1357
+ #: templates/checkout.php:172
1358
+ msgid "Checkout"
1359
+ msgstr "Checkout"
1360
+
1361
+ #: templates/checkout.php:172
1362
+ msgid "PCI compliant"
1363
+ msgstr "PCI compliant"
1364
+
1365
+ #. translators: %s: name (e.g. Hey John,)
1366
+ #: templates/connect.php:112
1367
+ msgctxt "greeting"
1368
+ msgid "Hey %s,"
1369
+ msgstr "Hey %s,"
1370
+
1371
+ #: templates/connect.php:154
1372
+ msgid "Allow & Continue"
1373
+ msgstr "Allow & Continue"
1374
+
1375
+ #: templates/connect.php:158
1376
+ msgid "Re-send activation email"
1377
+ msgstr "Re-send activation email"
1378
+
1379
+ #: templates/connect.php:162
1380
+ msgid "Thanks %s!"
1381
+ msgstr "Thanks %s!"
1382
+
1383
+ #: templates/connect.php:172, templates/forms/license-activation.php:43
1384
+ msgid "Agree & Activate License"
1385
+ msgstr "Agree & Activate License"
1386
+
1387
+ #: templates/connect.php:181
1388
+ msgid "Thanks for purchasing %s! To get started, please enter your license key:"
1389
+ msgstr "Thanks for purchasing %s! To get started, please enter your license key:"
1390
+
1391
+ #: templates/connect.php:188
1392
+ msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
1393
+ msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
1394
+
1395
+ #: templates/connect.php:189
1396
+ msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
1397
+ msgstr "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
1398
+
1399
+ #: templates/connect.php:195
1400
+ msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1401
+ msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1402
+
1403
+ #: templates/connect.php:196
1404
+ msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1405
+ msgstr "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1406
+
1407
+ #: templates/connect.php:230
1408
+ msgid "We're excited to introduce the Freemius network-level integration."
1409
+ msgstr "We're excited to introduce the Freemius network-level integration."
1410
+
1411
+ #: templates/connect.php:233
1412
+ msgid "During the update process we detected %d site(s) that are still pending license activation."
1413
+ msgstr "During the update process we detected %d site(s) that are still pending license activation."
1414
+
1415
+ #: templates/connect.php:235
1416
+ msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
1417
+ msgstr "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
1418
+
1419
+ #: templates/connect.php:237
1420
+ msgid "%s's paid features"
1421
+ msgstr "%s's paid features"
1422
+
1423
+ #: templates/connect.php:242
1424
+ msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
1425
+ msgstr "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
1426
+
1427
+ #: templates/connect.php:244
1428
+ msgid "During the update process we detected %s site(s) in the network that are still pending your attention."
1429
+ msgstr "During the update process we detected %s site(s) in the network that are still pending your attention."
1430
+
1431
+ #: templates/connect.php:253, templates/forms/license-activation.php:46
1432
+ msgid "License key"
1433
+ msgstr "License key"
1434
+
1435
+ #: templates/connect.php:256, templates/forms/license-activation.php:19
1436
+ msgid "Can't find your license key?"
1437
+ msgstr "Can't find your license key?"
1438
+
1439
+ #: templates/connect.php:315, templates/connect.php:630, templates/forms/deactivation/retry-skip.php:20
1440
+ msgctxt "verb"
1441
+ msgid "Skip"
1442
+ msgstr "Skip"
1443
+
1444
+ #: templates/connect.php:318
1445
+ msgid "Delegate to Site Admins"
1446
+ msgstr "Delegate to Site Admins"
1447
+
1448
+ #: templates/connect.php:318
1449
+ msgid "If you click it, this decision will be delegated to the sites administrators."
1450
+ msgstr "If you click it, this decision will be delegated to the sites administrators."
1451
+
1452
+ #: templates/connect.php:346
1453
+ msgid "Your Profile Overview"
1454
+ msgstr "Your Profile Overview"
1455
+
1456
+ #: templates/connect.php:347
1457
+ msgid "Name and email address"
1458
+ msgstr "Name and email address"
1459
+
1460
+ #: templates/connect.php:352
1461
+ msgid "Your Site Overview"
1462
+ msgstr "Your Site Overview"
1463
+
1464
+ #: templates/connect.php:353
1465
+ msgid "Site URL, WP version, PHP info, plugins & themes"
1466
+ msgstr "Site URL, WP version, PHP info, plugins & themes"
1467
+
1468
+ #: templates/connect.php:358
1469
+ msgid "Admin Notices"
1470
+ msgstr "Admin Notices"
1471
+
1472
+ #: templates/connect.php:359, templates/connect.php:375
1473
+ msgid "Updates, announcements, marketing, no spam"
1474
+ msgstr "Updates, announcements, marketing, no spam"
1475
+
1476
+ #: templates/connect.php:364
1477
+ msgid "Current %s Events"
1478
+ msgstr "Current %s Events"
1479
+
1480
+ #: templates/connect.php:365
1481
+ msgid "Activation, deactivation and uninstall"
1482
+ msgstr "Activation, deactivation and uninstall"
1483
+
1484
+ #: templates/connect.php:374
1485
+ msgid "Newsletter"
1486
+ msgstr "Newsletter"
1487
+
1488
+ #: templates/connect.php:391, templates/forms/license-activation.php:38
1489
+ msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
1490
+ msgstr "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
1491
+
1492
+ #: templates/connect.php:396
1493
+ msgid "What permissions are being granted?"
1494
+ msgstr "What permissions are being granted?"
1495
+
1496
+ #: templates/connect.php:417
1497
+ msgid "Don't have a license key?"
1498
+ msgstr "Don't have a license key?"
1499
+
1500
+ #: templates/connect.php:418
1501
+ msgid "Activate Free Version"
1502
+ msgstr "Activate Free Version"
1503
+
1504
+ #: templates/connect.php:420
1505
+ msgid "Have a license key?"
1506
+ msgstr "Have a license key?"
1507
+
1508
+ #: templates/connect.php:428
1509
+ msgid "Privacy Policy"
1510
+ msgstr "Privacy Policy"
1511
+
1512
+ #: templates/connect.php:430
1513
+ msgid "License Agreement"
1514
+ msgstr "License Agreement"
1515
+
1516
+ #: templates/connect.php:430
1517
+ msgid "Terms of Service"
1518
+ msgstr "Terms of Service"
1519
+
1520
+ #: templates/connect.php:766
1521
+ msgctxt "as in the process of sending an email"
1522
+ msgid "Sending email"
1523
+ msgstr "Sending email"
1524
+
1525
+ #: templates/connect.php:767
1526
+ msgctxt "as activating plugin"
1527
+ msgid "Activating"
1528
+ msgstr "Activating"
1529
+
1530
+ #: templates/contact.php:78
1531
+ msgid "Contact"
1532
+ msgstr "Contact"
1533
+
1534
+ #: templates/debug.php:17
1535
+ msgctxt "as turned off"
1536
+ msgid "Off"
1537
+ msgstr "Off"
1538
+
1539
+ #: templates/debug.php:18
1540
+ msgctxt "as turned on"
1541
+ msgid "On"
1542
+ msgstr "On"
1543
+
1544
+ #: templates/debug.php:20
1545
+ msgid "SDK"
1546
+ msgstr "SDK"
1547
+
1548
+ #: templates/debug.php:24
1549
+ msgctxt "as code debugging"
1550
+ msgid "Debugging"
1551
+ msgstr "Debugging"
1552
+
1553
+ #: templates/debug.php:54, templates/debug.php:248, templates/debug.php:374, templates/debug.php:492
1554
+ msgid "Actions"
1555
+ msgstr "Actions"
1556
+
1557
+ #: templates/debug.php:64
1558
+ msgid "Are you sure you want to delete all Freemius data?"
1559
+ msgstr "Are you sure you want to delete all Freemius data?"
1560
+
1561
+ #: templates/debug.php:64
1562
+ msgid "Delete All Accounts"
1563
+ msgstr "Delete All Accounts"
1564
+
1565
+ #: templates/debug.php:71
1566
+ msgid "Clear API Cache"
1567
+ msgstr "Clear API Cache"
1568
+
1569
+ #: templates/debug.php:79
1570
+ msgid "Clear Updates Transients"
1571
+ msgstr "Clear Updates Transients"
1572
+
1573
+ #: templates/debug.php:86
1574
+ msgid "Sync Data From Server"
1575
+ msgstr "Sync Data From Server"
1576
+
1577
+ #: templates/debug.php:95
1578
+ msgid "Migrate Options to Network"
1579
+ msgstr "Migrate Options to Network"
1580
+
1581
+ #: templates/debug.php:100
1582
+ msgid "Load DB Option"
1583
+ msgstr "Load DB Option"
1584
+
1585
+ #: templates/debug.php:103
1586
+ msgid "Set DB Option"
1587
+ msgstr "Set DB Option"
1588
+
1589
+ #: templates/debug.php:180
1590
+ msgid "Key"
1591
+ msgstr "Key"
1592
+
1593
+ #: templates/debug.php:181
1594
+ msgid "Value"
1595
+ msgstr "Value"
1596
+
1597
+ #: templates/debug.php:197
1598
+ msgctxt "as software development kit versions"
1599
+ msgid "SDK Versions"
1600
+ msgstr "SDK Versions"
1601
+
1602
+ #: templates/debug.php:202
1603
+ msgid "SDK Path"
1604
+ msgstr "SDK Path"
1605
+
1606
+ #: templates/debug.php:203, templates/debug.php:242
1607
+ msgid "Module Path"
1608
+ msgstr "Module Path"
1609
+
1610
+ #: templates/debug.php:204
1611
+ msgid "Is Active"
1612
+ msgstr "Is Active"
1613
+
1614
+ #: templates/debug.php:232, templates/debug/plugins-themes-sync.php:35
1615
+ msgid "Plugins"
1616
+ msgstr "Plugins"
1617
+
1618
+ #: templates/debug.php:232, templates/debug/plugins-themes-sync.php:56
1619
+ msgid "Themes"
1620
+ msgstr "Themes"
1621
+
1622
+ #: templates/debug.php:237, templates/debug.php:369, templates/debug.php:451, templates/debug/scheduled-crons.php:80
1623
+ msgid "Slug"
1624
+ msgstr "Slug"
1625
+
1626
+ #: templates/debug.php:239, templates/debug.php:450
1627
+ msgid "Title"
1628
+ msgstr "Title"
1629
+
1630
+ #: templates/debug.php:240
1631
+ msgctxt "as application program interface"
1632
+ msgid "API"
1633
+ msgstr "API"
1634
+
1635
+ #: templates/debug.php:241
1636
+ msgid "Freemius State"
1637
+ msgstr "Freemius State"
1638
+
1639
+ #: templates/debug.php:245
1640
+ msgid "Network Blog"
1641
+ msgstr "Network Blog"
1642
+
1643
+ #: templates/debug.php:246
1644
+ msgid "Network User"
1645
+ msgstr "Network User"
1646
+
1647
+ #: templates/debug.php:283
1648
+ msgctxt "as connection was successful"
1649
+ msgid "Connected"
1650
+ msgstr "Connected"
1651
+
1652
+ #: templates/debug.php:284
1653
+ msgctxt "as connection blocked"
1654
+ msgid "Blocked"
1655
+ msgstr "Blocked"
1656
+
1657
+ #: templates/debug.php:320
1658
+ msgid "Simulate Trial Promotion"
1659
+ msgstr "Simulate Trial Promotion"
1660
+
1661
+ #: templates/debug.php:332
1662
+ msgid "Simulate Network Upgrade"
1663
+ msgstr "Simulate Network Upgrade"
1664
+
1665
+ #: templates/debug.php:358
1666
+ msgid "%s Installs"
1667
+ msgstr "%s Installs"
1668
+
1669
+ #: templates/debug.php:360
1670
+ msgctxt "like websites"
1671
+ msgid "Sites"
1672
+ msgstr "Sites"
1673
+
1674
+ #: templates/debug.php:366, templates/account/partials/site.php:148
1675
+ msgid "Blog ID"
1676
+ msgstr "Blog ID"
1677
+
1678
+ #: templates/debug.php:431, templates/debug.php:509, templates/account/partials/addon.php:339
1679
+ msgctxt "verb"
1680
+ msgid "Delete"
1681
+ msgstr "Delete"
1682
+
1683
+ #: templates/debug.php:445
1684
+ msgid "Add Ons of module %s"
1685
+ msgstr "Add Ons of module %s"
1686
+
1687
+ #: templates/debug.php:482
1688
+ msgid "Users"
1689
+ msgstr "Users"
1690
+
1691
+ #: templates/debug.php:489
1692
+ msgid "Verified"
1693
+ msgstr "Verified"
1694
+
1695
+ #: templates/debug.php:520
1696
+ msgid "%s Licenses"
1697
+ msgstr "%s Licenses"
1698
+
1699
+ #: templates/debug.php:525
1700
+ msgid "Plugin ID"
1701
+ msgstr "Plugin ID"
1702
+
1703
+ #: templates/debug.php:527
1704
+ msgid "Plan ID"
1705
+ msgstr "Plan ID"
1706
+
1707
+ #: templates/debug.php:528
1708
+ msgid "Quota"
1709
+ msgstr "Quota"
1710
+
1711
+ #: templates/debug.php:529
1712
+ msgid "Activated"
1713
+ msgstr "Activated"
1714
+
1715
+ #: templates/debug.php:530
1716
+ msgid "Blocking"
1717
+ msgstr "Blocking"
1718
+
1719
+ #: templates/debug.php:532
1720
+ msgctxt "as expiration date"
1721
+ msgid "Expiration"
1722
+ msgstr "Expiration"
1723
+
1724
+ #: templates/debug.php:555
1725
+ msgid "Debug Log"
1726
+ msgstr "Debug Log"
1727
+
1728
+ #: templates/debug.php:559
1729
+ msgid "All Types"
1730
+ msgstr "All Types"
1731
+
1732
+ #: templates/debug.php:566
1733
+ msgid "All Requests"
1734
+ msgstr "All Requests"
1735
+
1736
+ #: templates/debug.php:571, templates/debug.php:600, templates/debug/logger.php:25
1737
+ msgid "File"
1738
+ msgstr "File"
1739
+
1740
+ #: templates/debug.php:572, templates/debug.php:598, templates/debug/logger.php:23
1741
+ msgid "Function"
1742
+ msgstr "Function"
1743
+
1744
+ #: templates/debug.php:573
1745
+ msgid "Process ID"
1746
+ msgstr "Process ID"
1747
+
1748
+ #: templates/debug.php:574
1749
+ msgid "Logger"
1750
+ msgstr "Logger"
1751
+
1752
+ #: templates/debug.php:575, templates/debug.php:599, templates/debug/logger.php:24
1753
+ msgid "Message"
1754
+ msgstr "Message"
1755
+
1756
+ #: templates/debug.php:577
1757
+ msgid "Filter"
1758
+ msgstr "Filter"
1759
+
1760
+ #: templates/debug.php:585
1761
+ msgid "Download"
1762
+ msgstr "Download"
1763
+
1764
+ #: templates/debug.php:596, templates/debug/logger.php:22
1765
+ msgid "Type"
1766
+ msgstr "Type"
1767
+
1768
+ #: templates/debug.php:601, templates/debug/logger.php:26
1769
+ msgid "Timestamp"
1770
+ msgstr "Timestamp"
1771
+
1772
+ #: templates/secure-https-header.php:28
1773
+ msgid "Secure HTTPS %s page, running from an external domain"
1774
+ msgstr "Secure HTTPS %s page, running from an external domain"
1775
+
1776
+ #: includes/customizer/class-fs-customizer-support-section.php:55, templates/plugin-info/features.php:43
1777
+ msgid "Support"
1778
+ msgstr "Support"
1779
+
1780
+ #: includes/debug/class-fs-debug-bar-panel.php:48, templates/debug/api-calls.php:54, templates/debug/logger.php:62
1781
+ msgctxt "milliseconds"
1782
+ msgid "ms"
1783
+ msgstr "ms"
1784
+
1785
+ #: includes/debug/debug-bar-start.php:41
1786
+ msgid "Freemius API"
1787
+ msgstr "Freemius API"
1788
+
1789
+ #: includes/debug/debug-bar-start.php:42
1790
+ msgid "Requests"
1791
+ msgstr "Requests"
1792
+
1793
+ #: templates/account/billing.php:28
1794
+ msgctxt "verb"
1795
+ msgid "Update"
1796
+ msgstr "Update"
1797
+
1798
+ #: templates/account/billing.php:39
1799
+ msgid "Billing"
1800
+ msgstr "Billing"
1801
+
1802
+ #: templates/account/billing.php:44, templates/account/billing.php:44
1803
+ msgid "Business name"
1804
+ msgstr "Business name"
1805
+
1806
+ #: templates/account/billing.php:45, templates/account/billing.php:45
1807
+ msgid "Tax / VAT ID"
1808
+ msgstr "Tax / VAT ID"
1809
+
1810
+ #: templates/account/billing.php:48, templates/account/billing.php:48, templates/account/billing.php:49, templates/account/billing.php:49
1811
+ msgid "Address Line %d"
1812
+ msgstr "Address Line %d"
1813
+
1814
+ #: templates/account/billing.php:52, templates/account/billing.php:52
1815
+ msgid "City"
1816
+ msgstr "City"
1817
+
1818
+ #: templates/account/billing.php:52, templates/account/billing.php:52
1819
+ msgid "Town"
1820
+ msgstr "Town"
1821
+
1822
+ #: templates/account/billing.php:53, templates/account/billing.php:53
1823
+ msgid "ZIP / Postal Code"
1824
+ msgstr "ZIP / Postal Code"
1825
+
1826
+ #: templates/account/billing.php:308
1827
+ msgid "Country"
1828
+ msgstr "Country"
1829
+
1830
+ #: templates/account/billing.php:310
1831
+ msgid "Select Country"
1832
+ msgstr "Select Country"
1833
+
1834
+ #: templates/account/billing.php:317, templates/account/billing.php:318
1835
+ msgid "State"
1836
+ msgstr "State"
1837
+
1838
+ #: templates/account/billing.php:317, templates/account/billing.php:318
1839
+ msgid "Province"
1840
+ msgstr "Province"
1841
+
1842
+ #: templates/account/payments.php:29
1843
+ msgid "Payments"
1844
+ msgstr "Payments"
1845
+
1846
+ #: templates/account/payments.php:36
1847
+ msgid "Date"
1848
+ msgstr "Date"
1849
+
1850
+ #: templates/account/payments.php:37
1851
+ msgid "Amount"
1852
+ msgstr "Amount"
1853
+
1854
+ #: templates/account/payments.php:38, templates/account/payments.php:50
1855
+ msgid "Invoice"
1856
+ msgstr "Invoice"
1857
+
1858
+ #: templates/debug/api-calls.php:56
1859
+ msgid "API"
1860
+ msgstr "API"
1861
+
1862
+ #: templates/debug/api-calls.php:68
1863
+ msgid "Method"
1864
+ msgstr "Method"
1865
+
1866
+ #: templates/debug/api-calls.php:69
1867
+ msgid "Code"
1868
+ msgstr "Code"
1869
+
1870
+ #: templates/debug/api-calls.php:70
1871
+ msgid "Length"
1872
+ msgstr "Length"
1873
+
1874
+ #: templates/debug/api-calls.php:71
1875
+ msgctxt "as file/folder path"
1876
+ msgid "Path"
1877
+ msgstr "Path"
1878
+
1879
+ #: templates/debug/api-calls.php:73
1880
+ msgid "Body"
1881
+ msgstr "Body"
1882
+
1883
+ #: templates/debug/api-calls.php:75
1884
+ msgid "Result"
1885
+ msgstr "Result"
1886
+
1887
+ #: templates/debug/api-calls.php:76
1888
+ msgid "Start"
1889
+ msgstr "Start"
1890
+
1891
+ #: templates/debug/api-calls.php:77
1892
+ msgid "End"
1893
+ msgstr "End"
1894
+
1895
+ #: templates/debug/logger.php:15
1896
+ msgid "Log"
1897
+ msgstr "Log"
1898
+
1899
+ #. translators: %s: time period (e.g. In "2 hours")
1900
+ #: templates/debug/plugins-themes-sync.php:18, templates/debug/scheduled-crons.php:91
1901
+ msgid "In %s"
1902
+ msgstr "In %s"
1903
+
1904
+ #. translators: %s: time period (e.g. "2 hours" ago)
1905
+ #: templates/debug/plugins-themes-sync.php:20, templates/debug/scheduled-crons.php:93
1906
+ msgid "%s ago"
1907
+ msgstr "%s ago"
1908
+
1909
+ #: templates/debug/plugins-themes-sync.php:21, templates/debug/scheduled-crons.php:74
1910
+ msgctxt "seconds"
1911
+ msgid "sec"
1912
+ msgstr "sec"
1913
+
1914
+ #: templates/debug/plugins-themes-sync.php:23
1915
+ msgid "Plugins & Themes Sync"
1916
+ msgstr "Plugins & Themes Sync"
1917
+
1918
+ #: templates/debug/plugins-themes-sync.php:28
1919
+ msgid "Total"
1920
+ msgstr "Total"
1921
+
1922
+ #: templates/debug/plugins-themes-sync.php:29, templates/debug/scheduled-crons.php:84
1923
+ msgid "Last"
1924
+ msgstr "Last"
1925
+
1926
+ #: templates/debug/scheduled-crons.php:76
1927
+ msgid "Scheduled Crons"
1928
+ msgstr "Scheduled Crons"
1929
+
1930
+ #: templates/debug/scheduled-crons.php:81
1931
+ msgid "Module"
1932
+ msgstr "Module"
1933
+
1934
+ #: templates/debug/scheduled-crons.php:82
1935
+ msgid "Module Type"
1936
+ msgstr "Module Type"
1937
+
1938
+ #: templates/debug/scheduled-crons.php:83
1939
+ msgid "Cron Type"
1940
+ msgstr "Cron Type"
1941
+
1942
+ #: templates/debug/scheduled-crons.php:85
1943
+ msgid "Next"
1944
+ msgstr "Next"
1945
+
1946
+ #: templates/forms/affiliation.php:82
1947
+ msgid "Non-expiring"
1948
+ msgstr "Non-expiring"
1949
+
1950
+ #: templates/forms/affiliation.php:85
1951
+ msgid "Apply to become an affiliate"
1952
+ msgstr "Apply to become an affiliate"
1953
+
1954
+ #: templates/forms/affiliation.php:104
1955
+ msgid "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
1956
+ msgstr "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
1957
+
1958
+ #: templates/forms/affiliation.php:119
1959
+ msgid "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information."
1960
+ msgstr "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information."
1961
+
1962
+ #: templates/forms/affiliation.php:122
1963
+ msgid "Your affiliation account was temporarily suspended."
1964
+ msgstr "Your affiliation account was temporarily suspended."
1965
+
1966
+ #: templates/forms/affiliation.php:125
1967
+ msgid "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days."
1968
+ msgstr "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days."
1969
+
1970
+ #: templates/forms/affiliation.php:128
1971
+ msgid "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
1972
+ msgstr "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
1973
+
1974
+ #: templates/forms/affiliation.php:141
1975
+ msgid "Like the %s? Become our ambassador and earn cash ;-)"
1976
+ msgstr "Like the %s? Become our ambassador and earn cash ;-)"
1977
+
1978
+ #: templates/forms/affiliation.php:142
1979
+ msgid "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
1980
+ msgstr "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
1981
+
1982
+ #: templates/forms/affiliation.php:145
1983
+ msgid "Program Summary"
1984
+ msgstr "Program Summary"
1985
+
1986
+ #: templates/forms/affiliation.php:147
1987
+ msgid "%s commission when a customer purchases a new license."
1988
+ msgstr "%s commission when a customer purchases a new license."
1989
+
1990
+ #: templates/forms/affiliation.php:149
1991
+ msgid "Get commission for automated subscription renewals."
1992
+ msgstr "Get commission for automated subscription renewals."
1993
+
1994
+ #: templates/forms/affiliation.php:152
1995
+ msgid "%s tracking cookie after the first visit to maximize earnings potential."
1996
+ msgstr "%s tracking cookie after the first visit to maximize earnings potential."
1997
+
1998
+ #: templates/forms/affiliation.php:155
1999
+ msgid "Unlimited commissions."
2000
+ msgstr "Unlimited commissions."
2001
+
2002
+ #: templates/forms/affiliation.php:157
2003
+ msgid "%s minimum payout amount."
2004
+ msgstr "%s minimum payout amount."
2005
+
2006
+ #: templates/forms/affiliation.php:158
2007
+ msgid "Payouts are in USD and processed monthly via PayPal."
2008
+ msgstr "Payouts are in USD and processed monthly via PayPal."
2009
+
2010
+ #: templates/forms/affiliation.php:159
2011
+ msgid "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
2012
+ msgstr "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
2013
+
2014
+ #: templates/forms/affiliation.php:162
2015
+ msgid "Affiliate"
2016
+ msgstr "Affiliate"
2017
+
2018
+ #: templates/forms/affiliation.php:165, templates/forms/resend-key.php:23
2019
+ msgid "Email address"
2020
+ msgstr "Email address"
2021
+
2022
+ #: templates/forms/affiliation.php:169
2023
+ msgid "Full name"
2024
+ msgstr "Full name"
2025
+
2026
+ #: templates/forms/affiliation.php:173
2027
+ msgid "PayPal account email address"
2028
+ msgstr "PayPal account email address"
2029
+
2030
+ #: templates/forms/affiliation.php:177
2031
+ msgid "Where are you going to promote the %s?"
2032
+ msgstr "Where are you going to promote the %s?"
2033
+
2034
+ #: templates/forms/affiliation.php:179
2035
+ msgid "Enter the domain of your website or other websites from where you plan to promote the %s."
2036
+ msgstr "Enter the domain of your website or other websites from where you plan to promote the %s."
2037
+
2038
+ #: templates/forms/affiliation.php:181
2039
+ msgid "Add another domain"
2040
+ msgstr "Add another domain"
2041
+
2042
+ #: templates/forms/affiliation.php:185
2043
+ msgid "Extra Domains"
2044
+ msgstr "Extra Domains"
2045
+
2046
+ #: templates/forms/affiliation.php:186
2047
+ msgid "Extra domains where you will be marketing the product from."
2048
+ msgstr "Extra domains where you will be marketing the product from."
2049
+
2050
+ #: templates/forms/affiliation.php:196
2051
+ msgid "Promotion methods"
2052
+ msgstr "Promotion methods"
2053
+
2054
+ #: templates/forms/affiliation.php:199
2055
+ msgid "Social media (Facebook, Twitter, etc.)"
2056
+ msgstr "Social media (Facebook, Twitter, etc.)"
2057
+
2058
+ #: templates/forms/affiliation.php:203
2059
+ msgid "Mobile apps"
2060
+ msgstr "Mobile apps"
2061
+
2062
+ #: templates/forms/affiliation.php:207
2063
+ msgid "Website, email, and social media statistics (optional)"
2064
+ msgstr "Website, email, and social media statistics (optional)"
2065
+
2066
+ #: templates/forms/affiliation.php:210
2067
+ msgid "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)."
2068
+ msgstr "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)."
2069
+
2070
+ #: templates/forms/affiliation.php:214
2071
+ msgid "How will you promote us?"
2072
+ msgstr "How will you promote us?"
2073
+
2074
+ #: templates/forms/affiliation.php:217
2075
+ msgid "Please provide details on how you intend to promote %s (please be as specific as possible)."
2076
+ msgstr "Please provide details on how you intend to promote %s (please be as specific as possible)."
2077
+
2078
+ #: templates/forms/affiliation.php:223, templates/forms/resend-key.php:22
2079
+ msgid "Cancel"
2080
+ msgstr "Cancel"
2081
+
2082
+ #: templates/forms/affiliation.php:225
2083
+ msgid "Become an affiliate"
2084
+ msgstr "Become an affiliate"
2085
+
2086
+ #: templates/forms/license-activation.php:20
2087
+ msgid "Please enter the license key that you received in the email right after the purchase:"
2088
+ msgstr "Please enter the license key that you received in the email right after the purchase:"
2089
+
2090
+ #: templates/forms/license-activation.php:25
2091
+ msgid "Update License"
2092
+ msgstr "Update License"
2093
+
2094
+ #: templates/forms/optout.php:30
2095
+ msgctxt "verb"
2096
+ msgid "Opt Out"
2097
+ msgstr "Opt Out"
2098
+
2099
+ #: templates/forms/optout.php:31
2100
+ msgctxt "verb"
2101
+ msgid "Opt In"
2102
+ msgstr "Opt In"
2103
+
2104
+ #: templates/forms/optout.php:33
2105
+ msgid "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
2106
+ msgstr "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
2107
+
2108
+ #: templates/forms/optout.php:35
2109
+ msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
2110
+ msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
2111
+
2112
+ #: templates/forms/premium-versions-upgrade-handler.php:40
2113
+ msgid "There is a new version of %s available."
2114
+ msgstr "There is a new version of %s available."
2115
+
2116
+ #: templates/forms/premium-versions-upgrade-handler.php:41
2117
+ msgid " %s to access version %s security & feature updates, and support."
2118
+ msgstr " %s to access version %s security & feature updates, and support."
2119
+
2120
+ #: templates/forms/premium-versions-upgrade-handler.php:54
2121
+ msgid "New Version Available"
2122
+ msgstr "New Version Available"
2123
+
2124
+ #: templates/forms/premium-versions-upgrade-handler.php:75
2125
+ msgctxt "close a window"
2126
+ msgid "Dismiss"
2127
+ msgstr "Dismiss"
2128
+
2129
+ #: templates/forms/resend-key.php:21
2130
+ msgid "Send License Key"
2131
+ msgstr "Send License Key"
2132
+
2133
+ #: templates/forms/resend-key.php:57
2134
+ msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
2135
+ msgstr "Enter the email address you've used for the upgrade below and we will resend you the license key."
2136
+
2137
+ #: templates/forms/subscription-cancellation.php:37
2138
+ msgid "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site."
2139
+ msgstr "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site."
2140
+
2141
+ #: templates/forms/subscription-cancellation.php:47
2142
+ msgid "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?"
2143
+ msgstr "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?"
2144
+
2145
+ #: templates/forms/subscription-cancellation.php:52
2146
+ msgid "license"
2147
+ msgstr "license"
2148
+
2149
+ #: templates/forms/subscription-cancellation.php:57
2150
+ msgid "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site."
2151
+ msgstr "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site."
2152
+
2153
+ #: templates/forms/subscription-cancellation.php:68
2154
+ msgid "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support."
2155
+ msgstr "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support."
2156
+
2157
+ #: templates/forms/subscription-cancellation.php:103
2158
+ msgid "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license."
2159
+ msgstr "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license."
2160
+
2161
+ #: templates/forms/subscription-cancellation.php:136
2162
+ msgid "Cancel %s?"
2163
+ msgstr "Cancel %s?"
2164
+
2165
+ #: templates/forms/subscription-cancellation.php:143
2166
+ msgid "Proceed"
2167
+ msgstr "Proceed"
2168
+
2169
+ #: templates/forms/subscription-cancellation.php:191, templates/forms/deactivation/form.php:150
2170
+ msgid "Cancel %s & Proceed"
2171
+ msgstr "Cancel %s & Proceed"
2172
+
2173
+ #: templates/forms/trial-start.php:22
2174
+ msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
2175
+ msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
2176
+
2177
+ #: templates/forms/trial-start.php:28
2178
+ msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt in with your user and non-sensitive site information, allowing the %s to periodically send data to %s to check for version updates and to validate your trial."
2179
+ msgstr "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt in with your user and non-sensitive site information, allowing the %s to periodically send data to %s to check for version updates and to validate your trial."
2180
+
2181
+ #: templates/js/style-premium-theme.php:37
2182
+ msgid "Premium"
2183
+ msgstr "Premium"
2184
+
2185
+ #: templates/partials/network-activation.php:23
2186
+ msgid "Activate license on all sites in the network."
2187
+ msgstr "Activate license on all sites in the network."
2188
+
2189
+ #: templates/partials/network-activation.php:24
2190
+ msgid "Apply on all sites in the network."
2191
+ msgstr "Apply on all sites in the network."
2192
+
2193
+ #: templates/partials/network-activation.php:27
2194
+ msgid "Activate license on all pending sites."
2195
+ msgstr "Activate license on all pending sites."
2196
+
2197
+ #: templates/partials/network-activation.php:28
2198
+ msgid "Apply on all pending sites."
2199
+ msgstr "Apply on all pending sites."
2200
+
2201
+ #: templates/partials/network-activation.php:36, templates/partials/network-activation.php:68
2202
+ msgid "allow"
2203
+ msgstr "allow"
2204
+
2205
+ #: templates/partials/network-activation.php:38, templates/partials/network-activation.php:70
2206
+ msgid "delegate"
2207
+ msgstr "delegate"
2208
+
2209
+ #: templates/partials/network-activation.php:41, templates/partials/network-activation.php:73
2210
+ msgid "skip"
2211
+ msgstr "skip"
2212
+
2213
+ #: templates/plugin-info/description.php:72, templates/plugin-info/screenshots.php:31
2214
+ msgid "Click to view full-size screenshot %d"
2215
+ msgstr "Click to view full-size screenshot %d"
2216
+
2217
+ #: templates/plugin-info/features.php:56
2218
+ msgid "Unlimited Updates"
2219
+ msgstr "Unlimited Updates"
2220
+
2221
+ #: templates/account/partials/activate-license-button.php:46
2222
+ msgid "Localhost"
2223
+ msgstr "Localhost"
2224
+
2225
+ #: templates/account/partials/activate-license-button.php:50
2226
+ msgctxt "as 5 licenses left"
2227
+ msgid "%s left"
2228
+ msgstr "%s left"
2229
+
2230
+ #: templates/account/partials/activate-license-button.php:51
2231
+ msgid "Last license"
2232
+ msgstr "Last license"
2233
+
2234
+ #: templates/account/partials/addon.php:115
2235
+ msgid "Cancelled"
2236
+ msgstr "Cancelled"
2237
+
2238
+ #: templates/account/partials/addon.php:125
2239
+ msgid "No expiration"
2240
+ msgstr "No expiration"
2241
+
2242
+ #: templates/account/partials/addon.php:264, templates/account/partials/addon.php:317
2243
+ msgid "Activate this add-on"
2244
+ msgstr "Activate this add-on"
2245
+
2246
+ #: templates/account/partials/site.php:181
2247
+ msgid "Owner Name"
2248
+ msgstr "Owner Name"
2249
+
2250
+ #: templates/account/partials/site.php:193
2251
+ msgid "Owner Email"
2252
+ msgstr "Owner Email"
2253
+
2254
+ #: templates/account/partials/site.php:205
2255
+ msgid "Owner ID"
2256
+ msgstr "Owner ID"
2257
+
2258
+ #: templates/account/partials/site.php:270
2259
+ msgid "Subscription"
2260
+ msgstr "Subscription"
2261
+
2262
+ #: templates/forms/deactivation/contact.php:19
2263
+ msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
2264
+ msgstr "Sorry for the inconvenience and we are here to help if you give us a chance."
2265
+
2266
+ #: templates/forms/deactivation/contact.php:22
2267
+ msgid "Contact Support"
2268
+ msgstr "Contact Support"
2269
+
2270
+ #: templates/forms/deactivation/form.php:59
2271
+ msgid "Anonymous feedback"
2272
+ msgstr "Anonymous feedback"
2273
+
2274
+ #: templates/forms/deactivation/form.php:66
2275
+ msgid "Deactivate"
2276
+ msgstr "Deactivate"
2277
+
2278
+ #: templates/forms/deactivation/form.php:68
2279
+ msgid "Activate %s"
2280
+ msgstr "Activate %s"
2281
+
2282
+ #: templates/forms/deactivation/form.php:80
2283
+ msgid "Quick Feedback"
2284
+ msgstr "Quick Feedback"
2285
+
2286
+ #: templates/forms/deactivation/form.php:84
2287
+ msgid "If you have a moment, please let us know why you are %s"
2288
+ msgstr "If you have a moment, please let us know why you are %s"
2289
+
2290
+ #: templates/forms/deactivation/form.php:84
2291
+ msgid "deactivating"
2292
+ msgstr "deactivating"
2293
+
2294
+ #: templates/forms/deactivation/form.php:84
2295
+ msgid "switching"
2296
+ msgstr "switching"
2297
+
2298
+ #: templates/forms/deactivation/form.php:332
2299
+ msgid "Submit & %s"
2300
+ msgstr "Submit & %s"
2301
+
2302
+ #: templates/forms/deactivation/form.php:353
2303
+ msgid "Kindly tell us the reason so we can improve."
2304
+ msgstr "Kindly tell us the reason so we can improve."
2305
+
2306
+ #: templates/forms/deactivation/form.php:478
2307
+ msgid "Yes - %s"
2308
+ msgstr "Yes - %s"
2309
+
2310
+ #: templates/forms/deactivation/form.php:485
2311
+ msgid "Skip & %s"
2312
+ msgstr "Skip & %s"
2313
+
2314
+ #: templates/forms/deactivation/retry-skip.php:21
2315
+ msgid "Click here to use the plugin anonymously"
2316
+ msgstr "Click here to use the plugin anonymously"
2317
+
2318
+ #: templates/forms/deactivation/retry-skip.php:23
2319
+ msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
2320
+ msgstr "You might have missed it, but you don't have to share any data and can just %s the opt-in."
freemius/languages/freemius-es_ES.mo CHANGED
Binary file
freemius/languages/freemius-es_ES.po CHANGED
@@ -1,2299 +1,2433 @@
1
- # Copyright (C) 2018 freemius
2
- # This file is distributed under the same license as the freemius package.
3
- # Translators:
4
- # Carlos Longarela <carlos@longarela.eu>, 2017-2018
5
- msgid ""
6
- msgstr ""
7
- "Project-Id-Version: WordPress SDK\n"
8
- "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
9
- "POT-Creation-Date: \n"
10
- "PO-Revision-Date: 2018-05-24 18:11+0000\n"
11
- "Last-Translator: Carlos Longarela <carlos@longarela.eu>\n"
12
- "Language: es_ES\n"
13
- "Language-Team: Spanish (Spain) (http://www.transifex.com/freemius/wordpress-sdk/language/es_ES/)\n"
14
- "Content-Type: text/plain; charset=UTF-8\n"
15
- "Content-Transfer-Encoding: 8bit\n"
16
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17
- "MIME-Version: 1.0\n"
18
- "X-Poedit-Basepath: ..\n"
19
- "X-Poedit-KeywordsList: get_text_inline;fs_text_inline;fs_echo_inline;fs_esc_js_inline;fs_esc_attr_inline;fs_esc_attr_echo_inline;fs_esc_html_inline;fs_esc_html_echo_inline;get_text_x_inline:1,2c;fs_text_x_inline:1,2c;fs_echo_x_inline:1,2c;fs_esc_attr_x_inline:1,2c;fs_esc_js_x_inline:1,2c;fs_esc_js_echo_x_inline:1,2c;fs_esc_html_x_inline:1,2c;fs_esc_html_echo_x_inline:1,2c\n"
20
- "X-Poedit-SearchPath-0: .\n"
21
- "X-Poedit-SearchPathExcluded-0: *.js\n"
22
- "X-Poedit-SourceCharset: UTF-8\n"
23
-
24
- #: includes/class-freemius.php:1551
25
- msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
26
- msgstr "Freemius SDK no pudo encontrar el archivo principal del plugin. Por favor contacta a sdk@freemius.com con el error actual."
27
-
28
- #: includes/class-freemius.php:1553
29
- msgid "Error"
30
- msgstr "Error"
31
-
32
- #: includes/class-freemius.php:1871
33
- msgid "I found a better %s"
34
- msgstr "He encontrado un mejor %s"
35
-
36
- #: includes/class-freemius.php:1873
37
- msgid "What's the %s's name?"
38
- msgstr "¿Cuál es el nombre de %s?"
39
-
40
- #: includes/class-freemius.php:1879
41
- msgid "It's a temporary %s. I'm just debugging an issue."
42
- msgstr "Es temporal %s. Sólo estoy depurando un problema."
43
-
44
- #: includes/class-freemius.php:1881
45
- msgid "Deactivation"
46
- msgstr "Desactivación"
47
-
48
- #: includes/class-freemius.php:1882
49
- msgid "Theme Switch"
50
- msgstr "Cambiar tema"
51
-
52
- #: includes/class-freemius.php1891, templates/forms/resend-key.php:24
53
- msgid "Other"
54
- msgstr "Otra"
55
-
56
- #: includes/class-freemius.php:1899
57
- msgid "I no longer need the %s"
58
- msgstr "Ya no necesito el %s"
59
-
60
- #: includes/class-freemius.php:1906
61
- msgid "I only needed the %s for a short period"
62
- msgstr "Sólo necesitaba la %s por un corto período"
63
-
64
- #: includes/class-freemius.php:1912
65
- msgid "The %s broke my site"
66
- msgstr "%s ha roto mi sitio"
67
-
68
- #: includes/class-freemius.php:1919
69
- msgid "The %s suddenly stopped working"
70
- msgstr "%s de repente ha dejado de funcionar"
71
-
72
- #: includes/class-freemius.php:1929
73
- msgid "I can't pay for it anymore"
74
- msgstr "No puedo pagarlo durante más tiempo"
75
-
76
- #: includes/class-freemius.php:1931
77
- msgid "What price would you feel comfortable paying?"
78
- msgstr "¿Con qué precio te sentirías cómodo pagando?"
79
-
80
- #: includes/class-freemius.php:1937
81
- msgid "I don't like to share my information with you"
82
- msgstr "No me gusta compartir mi información contigo"
83
-
84
- #: includes/class-freemius.php:1958
85
- msgid "The %s didn't work"
86
- msgstr "%s no funcionaba"
87
-
88
- #: includes/class-freemius.php:1968
89
- msgid "I couldn't understand how to make it work"
90
- msgstr "No entiendo cómo hacerlo funcionar"
91
-
92
- #: includes/class-freemius.php:1976
93
- msgid "The %s is great, but I need specific feature that you don't support"
94
- msgstr "%s es genial, pero necesito una característica que no soportáis"
95
-
96
- #: includes/class-freemius.php:1978
97
- msgid "What feature?"
98
- msgstr "¿Qué característica?"
99
-
100
- #: includes/class-freemius.php:1982
101
- msgid "The %s is not working"
102
- msgstr "%s no funciona"
103
-
104
- #: includes/class-freemius.php:1984
105
- msgid "Kindly share what didn't work so we can fix it for future users..."
106
- msgstr "Por favor, comparte lo que no funcionó para que podamos arreglarlo para los futuros usuarios..."
107
-
108
- #: includes/class-freemius.php:1988
109
- msgid "It's not what I was looking for"
110
- msgstr "No es lo que estaba buscando"
111
-
112
- #: includes/class-freemius.php:1990
113
- msgid "What you've been looking for?"
114
- msgstr "¿Que has estado buscando?"
115
-
116
- #: includes/class-freemius.php:1994
117
- msgid "The %s didn't work as expected"
118
- msgstr "%s no funciona como esperaba"
119
-
120
- #: includes/class-freemius.php:1996
121
- msgid "What did you expect?"
122
- msgstr "¿Qué esperas?"
123
-
124
- #: includes/class-freemius.php2729, templates/debug.php:20
125
- msgid "Freemius Debug"
126
- msgstr "Debug Freemius"
127
-
128
- #: includes/class-freemius.php:3402
129
- msgid "I don't know what is cURL or how to install it, help me!"
130
- msgstr "No sé qué es cURL o cómo instalarlo, ¡ayúdame!"
131
-
132
- #: includes/class-freemius.php:3404
133
- msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
134
- msgstr "Nos aseguraremos de ponernos en contacto con tu empresa de alojamiento web y resolver el problema. Recibirás un correo electrónico de seguimiento a %s tan pronto tengamos una actualización."
135
-
136
- #: includes/class-freemius.php:3411
137
- msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
138
- msgstr "Genial, por favor instala cURL y habilítalo en el archivo php.ini. Además, busca la directiva 'disable_functions' en el archivo php.ini y quita cualquier método que comienza con 'curl_'. Para asegurarte de que se activó con éxito, utiliza 'phpinfo()'. Una vez activado, desactiva el %s y reactívalo de nuevo."
139
-
140
- #: includes/class-freemius.php:3516
141
- msgid "Yes - do your thing"
142
- msgstr "Vamos, adelante"
143
-
144
- #: includes/class-freemius.php:3521
145
- msgid "No - just deactivate"
146
- msgstr "No - sólo desactivar"
147
-
148
- #: includes/class-freemius.php3566, includes/class-freemius.php4066,
149
- #: includes/class-freemius.php5127, includes/class-freemius.php10941,
150
- #: includes/class-freemius.php14205, includes/class-freemius.php14257,
151
- #: includes/class-freemius.php14319, includes/class-freemius.php16448,
152
- #: includes/class-freemius.php16458, includes/class-freemius.php17014,
153
- #: includes/class-freemius.php17032, includes/class-freemius.php17130,
154
- #: includes/class-freemius.php17866, templates/add-ons.php:43
155
- msgctxt "exclamation"
156
- msgid "Oops"
157
- msgstr "Oops"
158
-
159
- #: includes/class-freemius.php:3635
160
- msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
161
- msgstr "¡Gracias por darnos la oportunidad de arreglarlo! Acabamos de enviar un mensaje a nuestro personal técnico. Nos pondremos en contacto contigo tan pronto como tengamos una actualización de %s. Apreciamos tu paciencia."
162
-
163
- #: includes/class-freemius.php:4063
164
- msgctxt "addonX cannot run without pluginY"
165
- msgid "%s cannot run without %s."
166
- msgstr "%s no se puede ejecutar sin %s."
167
-
168
- #: includes/class-freemius.php:4064
169
- msgctxt "addonX cannot run..."
170
- msgid "%s cannot run without the plugin."
171
- msgstr "%s no se puede ejecutar sin el plugin."
172
-
173
- #: includes/class-freemius.php4176, includes/class-freemius.php4201,
174
- #: includes/class-freemius.php:17103
175
- msgid "Unexpected API error. Please contact the %s's author with the following error."
176
- msgstr "Error inesperado del API. Pónte en contacto con el autor de %s indicándole el siguiente error."
177
-
178
- #: includes/class-freemius.php:4815
179
- msgid "Premium %s version was successfully activated."
180
- msgstr "La versión Premium %s ha sido activada con éxito."
181
-
182
- #: includes/class-freemius.php4827, includes/class-freemius.php:6660
183
- msgctxt ""
184
- msgid "W00t"
185
- msgstr "W00t"
186
-
187
- #: includes/class-freemius.php:4842
188
- msgid "You have a %s license."
189
- msgstr "Tienes una licencia %s."
190
-
191
- #: includes/class-freemius.php4846, includes/class-freemius.php13626,
192
- #: includes/class-freemius.php13637, includes/class-freemius.php16376,
193
- #: includes/class-freemius.php16676, includes/class-freemius.php16741,
194
- #: includes/class-freemius.php:16891
195
- msgctxt "interjection expressing joy or exuberance"
196
- msgid "Yee-haw"
197
- msgstr "Vaya"
198
-
199
- #: includes/class-freemius.php:5110
200
- msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
201
- msgstr "la prueba gratuita de %s fue cancelada con éxito. Puesto que el complemento es sólo premium se desactivó automáticamente. Si quieres utilizarlo en el futuro, deberás comprar una licencia."
202
-
203
- #: includes/class-freemius.php:5114
204
- msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
205
- msgstr "%s es un complemento único de premium. Tienes que comprar una licencia primero antes de activar el plugin."
206
-
207
- #: includes/class-freemius.php5123, templates/add-ons.php99,
208
- #: templates/account/partials/addon.php:283
209
- msgid "More information about %s"
210
- msgstr "Más información sobre %s"
211
-
212
- #: includes/class-freemius.php:5124
213
- msgid "Purchase License"
214
- msgstr "Comprar licencia"
215
-
216
- #: includes/class-freemius.php6035, templates/connect.php:161
217
- msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
218
- msgstr "Recibirás un correo de activación para %s en tu buzón en %s. Por favor, asegúrate de hacer clic en el botón de activación en ese correo electrónico para %s."
219
-
220
- #: includes/class-freemius.php:6039
221
- msgid "start the trial"
222
- msgstr "comenzar el período de prueba"
223
-
224
- #: includes/class-freemius.php6040, templates/connect.php:165
225
- msgid "complete the install"
226
- msgstr "completar la instalación"
227
-
228
- #: includes/class-freemius.php:6147
229
- msgid "You are just one step away - %s"
230
- msgstr "Estás a sólo un paso - %s"
231
-
232
- #: includes/class-freemius.php:6150
233
- msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
234
- msgid "Complete \"%s\" Activation Now"
235
- msgstr "Completar la activación de \"%s\" ahora"
236
-
237
- #: includes/class-freemius.php:6227
238
- msgid "We made a few tweaks to the %s, %s"
239
- msgstr "Hemos realizado algunas optimizaciones al %s, %s"
240
-
241
- #: includes/class-freemius.php:6231
242
- msgid "Opt in to make \"%s\" Better!"
243
- msgstr "¡Inscribirte para hacer \"%s\" Mejor!"
244
-
245
- #: includes/class-freemius.php:6659
246
- msgid "The upgrade of %s was successfully completed."
247
- msgstr "La actualización de %s se completó con éxito."
248
-
249
- #: includes/class-freemius.php8384, includes/class-fs-plugin-updater.php581,
250
- #: includes/class-fs-plugin-updater.php733,
251
- #: includes/class-fs-plugin-updater.php739, templates/auto-installation.php:32
252
- msgid "Add-On"
253
- msgstr "Complemento"
254
-
255
- #: includes/class-freemius.php8386, templates/debug.php349,
256
- #: templates/debug.php:510
257
- msgid "Plugin"
258
- msgstr "Plugin"
259
-
260
- #: includes/class-freemius.php8387, templates/debug.php349,
261
- #: templates/debug.php510, templates/forms/deactivation/form.php:64
262
- msgid "Theme"
263
- msgstr "Tema"
264
-
265
- #: includes/class-freemius.php:10808
266
- msgid "invalid_site_details_collection"
267
- msgstr "invalid_site_details_collection"
268
-
269
- #: includes/class-freemius.php:10928
270
- msgid "We couldn't find your email address in the system, are you sure it's the right address?"
271
- msgstr "No podemos encontrar tu dirección de correo electrónico en el sistema, ¿estás seguro de que es la dirección de correo electrónico correcta?"
272
-
273
- #: includes/class-freemius.php:10930
274
- msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
275
- msgstr "No vemos ninguna licencia activa asociada a esa dirección de correo electrónico, ¿estás seguro de que es la dirección de correo electrónico correcta?"
276
-
277
- #: includes/class-freemius.php:11166
278
- msgid "Account is pending activation."
279
- msgstr "La cuenta está pendiente de activación"
280
-
281
- #: includes/class-freemius.php:13608
282
- msgid "%s activation was successfully completed."
283
- msgstr "%s activación se completó con éxito."
284
-
285
- #: includes/class-freemius.php:13622
286
- msgid "Your account was successfully activated with the %s plan."
287
- msgstr "Tu cuenta se ha activado correctamente con el plan %s."
288
-
289
- #: includes/class-freemius.php13633, includes/class-freemius.php:16737
290
- msgid "Your trial has been successfully started."
291
- msgstr "Tu versión de prueba se ha iniciado con éxito."
292
-
293
- #: includes/class-freemius.php14203, includes/class-freemius.php14255,
294
- #: includes/class-freemius.php:14317
295
- msgid "Couldn't activate %s."
296
- msgstr "No se puede activar %s."
297
-
298
- #: includes/class-freemius.php14204, includes/class-freemius.php14256,
299
- #: includes/class-freemius.php:14318
300
- msgid "Please contact us with the following message:"
301
- msgstr "Por favor contáctanos con el siguiente mensaje:"
302
-
303
- #: includes/class-freemius.php14666, includes/class-freemius.php:18929
304
- msgid "Upgrade"
305
- msgstr "Actualizar"
306
-
307
- #: includes/class-freemius.php:14672
308
- msgid "Start Trial"
309
- msgstr "Comenzar el período de prueba"
310
-
311
- #: includes/class-freemius.php:14674
312
- msgid "Pricing"
313
- msgstr "Precio"
314
-
315
- #: includes/class-freemius.php14734, includes/class-freemius.php:14736
316
- msgid "Affiliation"
317
- msgstr "Afiliación"
318
-
319
- #: includes/class-freemius.php14756, includes/class-freemius.php14758,
320
- #: templates/account.php146, templates/debug.php:314
321
- msgid "Account"
322
- msgstr "Cuenta"
323
-
324
- #: includes/class-freemius.php14769, includes/class-freemius.php14771,
325
- #: includes/customizer/class-fs-customizer-support-section.php:60
326
- msgid "Contact Us"
327
- msgstr "Contáctanos"
328
-
329
- #: includes/class-freemius.php14781, includes/class-freemius.php14783,
330
- #: includes/class-freemius.php18939, templates/account.php96,
331
- #: templates/account/partials/addon.php:37
332
- msgid "Add-Ons"
333
- msgstr "Complementos"
334
-
335
- #: includes/class-freemius.php14815, templates/pricing.php:97
336
- msgctxt "noun"
337
- msgid "Pricing"
338
- msgstr "Precio"
339
-
340
- #: includes/class-freemius.php15009,
341
- #: includes/customizer/class-fs-customizer-support-section.php:67
342
- msgid "Support Forum"
343
- msgstr "Foro de soporte"
344
-
345
- #: includes/class-freemius.php:15794
346
- msgid "Your email has been successfully verified - you are AWESOME!"
347
- msgstr "Tu email ha sido verificado correctamente - ¡Eres IMPRESIONANTE!"
348
-
349
- #: includes/class-freemius.php:15795
350
- msgctxt "a positive response"
351
- msgid "Right on"
352
- msgstr "Bien hecho"
353
-
354
- #: includes/class-freemius.php:16367
355
- msgid "Your %s Add-on plan was successfully upgraded."
356
- msgstr "Tu complemento %s del plan se actualizó con éxito."
357
-
358
- #: includes/class-freemius.php:16369
359
- msgid "%s Add-on was successfully purchased."
360
- msgstr "El complemento %s ha sido comprado correctamente."
361
-
362
- #: includes/class-freemius.php:16372
363
- msgid "Download the latest version"
364
- msgstr "Descargar la última versión"
365
-
366
- #: includes/class-freemius.php:16444
367
- msgctxt "%1s - plugin title, %2s - API domain"
368
- msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
369
- msgstr "Tu servidor está bloqueando el acceso a la API de Freemius, que es crucial para la sincronización de licencia %1s. Por favor, ponte en contacto con tu host para que lo añadan a su lista blanca %2s"
370
-
371
- #: includes/class-freemius.php16447, includes/class-freemius.php16862,
372
- #: includes/class-freemius.php:16927
373
- msgid "Error received from the server:"
374
- msgstr "Error recibido del servidor:"
375
-
376
- #: includes/class-freemius.php:16457
377
- msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
378
- msgstr "Parece que uno de los parámetros de autenticación es incorrecto. Actualiza tu clave pública, clave secreta e ID de usuario e inténtelo de nuevo."
379
-
380
- #: includes/class-freemius.php16639, includes/class-freemius.php16867,
381
- #: includes/class-freemius.php:16910
382
- msgctxt ""
383
- msgid "Hmm"
384
- msgstr "Hmm"
385
-
386
- #: includes/class-freemius.php:16652
387
- msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
388
- msgstr "Parece que todavía estás en el plan %s. Si actualizaste o cambiaste tu plan, probablemente sea un problema de nuestra parte - lo sentimos."
389
-
390
- #: includes/class-freemius.php16653, templates/account.php98,
391
- #: templates/add-ons.php130, templates/account/partials/addon.php:39
392
- msgctxt "trial period"
393
- msgid "Trial"
394
- msgstr "Período de Prueba Gratuito"
395
-
396
- #: includes/class-freemius.php:16658
397
- msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
398
- msgstr "He actualizado mi cuenta, pero cuando intento sincronizar la licencia, el plan sigue siendo %s."
399
-
400
- #: includes/class-freemius.php16662, includes/class-freemius.php:16719
401
- msgid "Please contact us here"
402
- msgstr "Contacta aquí con nosotros"
403
-
404
- #: includes/class-freemius.php:16672
405
- msgid "Your plan was successfully upgraded."
406
- msgstr "Tu plan se actualizó con éxito."
407
-
408
- #: includes/class-freemius.php:16689
409
- msgid "Your plan was successfully changed to %s."
410
- msgstr "Tu plan se cambió correctamente a %s."
411
-
412
- #: includes/class-freemius.php:16705
413
- msgid "Your license has expired. You can still continue using the free %s forever."
414
- msgstr "Tu licencia ha caducado. Puedes seguir usando el plan gratuito %s para siempre."
415
-
416
- #: includes/class-freemius.php:16707
417
- msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
418
- msgstr "Tu licencia ha caducado. %1$sActualiza ahora %2$s para continuar usando el %3$s sin interrupciones."
419
-
420
- #: includes/class-freemius.php:16715
421
- msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
422
- msgstr "Tu licencia ha sido cancelada. Si crees que es un error, ponte en contacto con el servicio de asistencia."
423
-
424
- #: includes/class-freemius.php:16728
425
- msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
426
- msgstr "Tu licencia ha caducado. Todavía puedes seguir usando todas las funciones de %s, pero tendrás que renovar tu licencia para seguir recibiendo actualizaciones y soporte."
427
-
428
- #: includes/class-freemius.php:16751
429
- msgid "Your free trial has expired. You can still continue using all our free features."
430
- msgstr "Tu período de prueba ha caducado. Todavía puedes seguir usando todas nuestras funciones gratuitas."
431
-
432
- #: includes/class-freemius.php:16753
433
- msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
434
- msgstr "Tu período de prueba ha caducado. %1$sActualiza ahora %2$s para continuar usando el %3$s sin interrupciones."
435
-
436
- #: includes/class-freemius.php:16858
437
- msgid "It looks like the license could not be activated."
438
- msgstr "Parece que la licencia no se pudo activar."
439
-
440
- #: includes/class-freemius.php:16888
441
- msgid "Your license was successfully activated."
442
- msgstr "Tu licencia fue activada correctamente."
443
-
444
- #: includes/class-freemius.php:16914
445
- msgid "It looks like your site currently doesn't have an active license."
446
- msgstr "Parece que tu sitio actualmente no tiene una licencia activa."
447
-
448
- #: includes/class-freemius.php:16926
449
- msgid "It looks like the license deactivation failed."
450
- msgstr "Parece que la desactivación de licencia ha fallado."
451
-
452
- #: includes/class-freemius.php:16954
453
- msgid "Your license was successfully deactivated, you are back to the %s plan."
454
- msgstr "Tu licencia fue desactivada correctamente, has vuelto al plan %s."
455
-
456
- #: includes/class-freemius.php:16955
457
- msgid "O.K"
458
- msgstr "O.K"
459
-
460
- #: includes/class-freemius.php:17003
461
- msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
462
- msgstr "Tu plan fue degradado con éxito. Tu licencia %s plan caducará en %s."
463
-
464
- #: includes/class-freemius.php:17013
465
- msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
466
- msgstr "Parece que estamos teniendo algún problema temporal con tu degradación de plan. Vuelve a intentarlo en unos minutos."
467
-
468
- #: includes/class-freemius.php:17037
469
- msgid "You are already running the %s in a trial mode."
470
- msgstr "Estás ejecutando %s en modo de prueba."
471
-
472
- #: includes/class-freemius.php:17048
473
- msgid "You already utilized a trial before."
474
- msgstr "Ya utilizaste un período de prueba antes."
475
-
476
- #: includes/class-freemius.php:17062
477
- msgid "Plan %s do not exist, therefore, can't start a trial."
478
- msgstr "El plan %s no existe, por lo tanto, no puedes comenzar un período de prueba."
479
-
480
- #: includes/class-freemius.php:17073
481
- msgid "Plan %s does not support a trial period."
482
- msgstr "El plan %s no admite un período de prueba."
483
-
484
- #: includes/class-freemius.php:17084
485
- msgid "None of the %s's plans supports a trial period."
486
- msgstr "Ninguno de los planes de %s soportan un período de prueba."
487
-
488
- #: includes/class-freemius.php:17134
489
- msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
490
- msgstr "Parece que ya no estás en modo de prueba, así que no hay nada que cancelar :)"
491
-
492
- #: includes/class-freemius.php:17185
493
- msgid "Your %s free trial was successfully cancelled."
494
- msgstr "Tu prueba gratuita de %s fue cancelada con éxito."
495
-
496
- #: includes/class-freemius.php:17190
497
- msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
498
- msgstr "Parece que estamos teniendo algún problema temporal con tu cancelación de prueba. Vuelve a intentarlo en unos minutos."
499
-
500
- #: includes/class-freemius.php:17474
501
- msgid "Version %s was released."
502
- msgstr "La versión %s se ha lanzado."
503
-
504
- #: includes/class-freemius.php:17474
505
- msgid "Please download %s."
506
- msgstr "Por favor descarga %s."
507
-
508
- #: includes/class-freemius.php:17481
509
- msgid "the latest %s version here"
510
- msgstr "la última versión %s aquí"
511
-
512
- #: includes/class-freemius.php:17486
513
- msgid "New"
514
- msgstr "Nuevo"
515
-
516
- #: includes/class-freemius.php:17491
517
- msgid "Seems like you got the latest release."
518
- msgstr "Parece que tienes la última versión."
519
-
520
- #: includes/class-freemius.php:17492
521
- msgid "You are all good!"
522
- msgstr "¡Está todo listo!"
523
-
524
- #: includes/class-freemius.php:17758
525
- msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
526
- msgstr "El correo de verificación se acaba de enviar a %s. Si no puedes encontrarlo después de 5 min, comprueba tu carpeta de spam."
527
-
528
- #: includes/class-freemius.php:17893
529
- msgid "Site successfully opted in."
530
- msgstr "Sitio dado de alta correctamente."
531
-
532
- #: includes/class-freemius.php17894, includes/class-freemius.php:18671
533
- msgid "Awesome"
534
- msgstr "Increíble"
535
-
536
- #: includes/class-freemius.php17910, templates/forms/optout.php:32
537
- msgid "We appreciate your help in making the %s better by letting us track some usage data."
538
- msgstr "Agradecemos tu ayuda para mejorar %s y por permitirnos rastrear algunos datos de uso."
539
-
540
- #: includes/class-freemius.php:17911
541
- msgid "Thank you!"
542
- msgstr "¡Gracias!"
543
-
544
- #: includes/class-freemius.php:17918
545
- msgid "We will no longer be sending any usage data of %s on %s to %s."
546
- msgstr "No continuaremos enviando datos de uso de %s en %s a %s."
547
-
548
- #: includes/class-freemius.php:18033
549
- msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
550
- msgstr "Comprueba tu buzón de correo, debes recibir un correo electrónico a través de %s para confirmar el cambio de propiedad. Por razones de seguridad, debes confirmar el cambio dentro de los próximos 15 min. Si no puedes encontrar el correo electrónico, comprueba tu carpeta de correo no deseado."
551
-
552
- #: includes/class-freemius.php:18039
553
- msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
554
- msgstr "Gracias por confirmar el cambio de propiedad. Se envió un correo electrónico a %s para su aprobación final."
555
-
556
- #: includes/class-freemius.php:18044
557
- msgid "%s is the new owner of the account."
558
- msgstr "%s es el nuevo dueño de la cuenta."
559
-
560
- #: includes/class-freemius.php:18046
561
- msgctxt "as congratulations"
562
- msgid "Congrats"
563
- msgstr "Felicidades"
564
-
565
- #: includes/class-freemius.php:18066
566
- msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
567
- msgstr "Lo sentimos, no podemos completar la actualización de correo electrónico. Ya hay registrado otro usuario con esa dirección de correo electrónico."
568
-
569
- #: includes/class-freemius.php:18067
570
- msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
571
- msgstr "Si deseas renunciar a la titularidad de la cuenta de %s a %s haz clic en el botón de cambio de titularidad."
572
-
573
- #: includes/class-freemius.php:18074
574
- msgid "Change Ownership"
575
- msgstr "Cambiar propietario"
576
-
577
- #: includes/class-freemius.php:18082
578
- msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
579
- msgstr "Se actualizó correctamente tu correo electrónico. Recibirás un correo electrónico con las instrucciones de confirmación en unos momentos."
580
-
581
- #: includes/class-freemius.php:18094
582
- msgid "Please provide your full name."
583
- msgstr "Por favor, dinos tu nombre completo."
584
-
585
- #: includes/class-freemius.php:18099
586
- msgid "Your name was successfully updated."
587
- msgstr "Tu nombre fue actualizado correctamente."
588
-
589
- #: includes/class-freemius.php:18160
590
- msgid "You have successfully updated your %s."
591
- msgstr "Has actualizado correctamente tu %s."
592
-
593
- #: includes/class-freemius.php:18300
594
- msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
595
- msgstr "Sólo déjanos informarte que la información de complementos de %s se está extrayendo de un servidor externo."
596
-
597
- #: includes/class-freemius.php:18301
598
- msgctxt "advance notice of something that will need attention."
599
- msgid "Heads up"
600
- msgstr "Atención"
601
-
602
- #: includes/class-freemius.php:18711
603
- msgctxt "exclamation"
604
- msgid "Hey"
605
- msgstr "Hey"
606
-
607
- #: includes/class-freemius.php:18711
608
- msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
609
- msgstr "¿Qué te pareció %s hasta ahora? Prueba todas nuestras funciones premium de %s con una prueba gratuita de % d-días."
610
-
611
- #: includes/class-freemius.php:18719
612
- msgid "No commitment for %s days - cancel anytime!"
613
- msgstr "Sin compromiso por %s días - ¡cancelar en cualquier momento!"
614
-
615
- #: includes/class-freemius.php:18720
616
- msgid "No credit card required"
617
- msgstr "No se necesita tarjeta de crédito"
618
-
619
- #: includes/class-freemius.php18727, templates/forms/trial-start.php:53
620
- msgctxt "call to action"
621
- msgid "Start free trial"
622
- msgstr "Comenzar el período de prueba gratuito"
623
-
624
- #: includes/class-freemius.php:18804
625
- msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
626
- msgstr "Hey, ¿sabías que %s tiene un programa de afiliados? ¡Si te gusta %s puedes convertirte en nuestro embajador y ganar dinero!"
627
-
628
- #: includes/class-freemius.php:18813
629
- msgid "Learn more"
630
- msgstr "Saber más"
631
-
632
- #: includes/class-freemius.php18963, templates/account.php394,
633
- #: templates/account.php497, templates/connect.php169,
634
- #: templates/connect.php408, templates/forms/license-activation.php24,
635
- #: templates/account/partials/addon.php:230
636
- msgid "Activate License"
637
- msgstr "Activar licencia"
638
-
639
- #: includes/class-freemius.php18964, templates/account.php457,
640
- #: templates/account.php496, templates/account/partials/site.php:256
641
- msgid "Change License"
642
- msgstr "Cambiar licencia"
643
-
644
- #: includes/class-freemius.php19046, templates/account/partials/site.php:161
645
- msgid "Opt Out"
646
- msgstr "Darse de baja"
647
-
648
- #: includes/class-freemius.php19048, includes/class-freemius.php19053,
649
- #: templates/account/partials/site.php43,
650
- #: templates/account/partials/site.php:161
651
- msgid "Opt In"
652
- msgstr "Inscribirse"
653
-
654
- #: includes/class-freemius.php:19245
655
- msgid "Please follow these steps to complete the upgrade"
656
- msgstr "Por favor, sigue estos pasos para completar la actualización"
657
-
658
- #: includes/class-freemius.php:19249
659
- msgid "Download the latest %s version"
660
- msgstr "Descargar la última versión %s"
661
-
662
- #: includes/class-freemius.php:19253
663
- msgid "Upload and activate the downloaded version"
664
- msgstr "Cargar y activar la versión descargada"
665
-
666
- #: includes/class-freemius.php:19255
667
- msgid "How to upload and activate?"
668
- msgstr "¿Cómo subirlo y activarlo?"
669
-
670
- #: includes/class-freemius.php:19384
671
- msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
672
- msgstr "%sClick aquí %s para elegir los sitios sobre los que te gustaría activar la licencia."
673
-
674
- #: includes/class-freemius.php:19545
675
- msgid "Auto installation only works for opted-in users."
676
- msgstr "La instalación automática sólo funciona para usuarios que aceptaron."
677
-
678
- #: includes/class-freemius.php19555, includes/class-freemius.php19588,
679
- #: includes/class-fs-plugin-updater.php713,
680
- #: includes/class-fs-plugin-updater.php:727
681
- msgid "Invalid module ID."
682
- msgstr "Id de módulo no válido."
683
-
684
- #: includes/class-freemius.php19564, includes/class-fs-plugin-updater.php:747
685
- msgid "Premium version already active."
686
- msgstr "Versión premium ya activa."
687
-
688
- #: includes/class-freemius.php:19571
689
- msgid "You do not have a valid license to access the premium version."
690
- msgstr "No tienes una licencia válida para acceder a la versión premium."
691
-
692
- #: includes/class-freemius.php:19578
693
- msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
694
- msgstr "El plugin es un \"Serviceware\" lo que significa que no tiene una versión de código premium."
695
-
696
- #: includes/class-freemius.php19596, includes/class-fs-plugin-updater.php:746
697
- msgid "Premium add-on version already installed."
698
- msgstr "Versión del complemento premium ya instalada."
699
-
700
- #: includes/class-freemius.php:19941
701
- msgid "View paid features"
702
- msgstr "Ver las funciones de pago"
703
-
704
- #: includes/class-freemius.php:20251
705
- msgid "Thank you so much for using %s and its add-ons!"
706
- msgstr "¡Muchas gracias por utilizar %s y sus complementos!"
707
-
708
- #: includes/class-freemius.php:20252
709
- msgid "Thank you so much for using %s!"
710
- msgstr "¡Muchas gracias por utilizar %s!"
711
-
712
- #: includes/class-freemius.php:20258
713
- msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
714
- msgstr "Ya has optado por nuestro seguimiento de uso, lo que nos ayuda a seguir mejorando %s."
715
-
716
- #: includes/class-freemius.php:20262
717
- msgid "Thank you so much for using our products!"
718
- msgstr "¡Muchas gracias por utilizar nuestros productos!"
719
-
720
- #: includes/class-freemius.php:20263
721
- msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
722
- msgstr "Ya has optado por nuestro seguimiento de uso, lo que nos ayuda a seguir mejorando."
723
-
724
- #: includes/class-freemius.php:20282
725
- msgid "%s and its add-ons"
726
- msgstr "%s y sus complementos"
727
-
728
- #: includes/class-freemius.php:20291
729
- msgid "Products"
730
- msgstr "Productos"
731
-
732
- #: includes/class-freemius.php20298, templates/connect.php:259
733
- msgid "Yes"
734
- msgstr "Si"
735
-
736
- #: includes/class-freemius.php20299, templates/connect.php:260
737
- msgid "send me security & feature updates, educational content and offers."
738
- msgstr "envíame actualizaciones de seguridad y nuevas funcionalidades, contenido educativo y ofertas."
739
-
740
- #: includes/class-freemius.php20300, templates/connect.php:265
741
- msgid "No"
742
- msgstr "No"
743
-
744
- #: includes/class-freemius.php20302, templates/connect.php:267
745
- msgid "do %sNOT%s send me security & feature updates, educational content and offers."
746
- msgstr "%sNO%s me envíes actualizaciones de seguridad y nuevas funcionalidades, contenido educativo y ofertas."
747
-
748
- #: includes/class-freemius.php:20312
749
- msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂"
750
- msgstr "Debido a la nueva %s Regulación General de Protección de Datos de la UE (GDPR)%s los requisitos de conformidad nos requieren que nos debes dar tu consentimiento explícito, de nuevo, confirmando que estás de acuerdo 🙂"
751
-
752
- #: includes/class-freemius.php20314, templates/connect.php:274
753
- msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
754
- msgstr "Indica si deseas que te contactemos para actualizaciones de seguridad y nuevas funciones, contenido educativo y ofertas ocasionales:"
755
-
756
- #: includes/class-freemius.php:20598
757
- msgid "License key is empty."
758
- msgstr "La clave de licencia está vacía."
759
-
760
- #: includes/class-fs-plugin-updater.php184,
761
- #: includes/class-fs-plugin-updater.php:219
762
- msgid "%sRenew your license now%s to access version %s security & feature updates, and support."
763
- msgstr "%s Renueva tu licencia ahora %s para acceder a la versión %s seguridad y nuevas características y soporte."
764
-
765
- #: includes/class-fs-plugin-updater.php:776
766
- msgid "Installing plugin: %s"
767
- msgstr "Instalando plugin: %s"
768
-
769
- #: includes/class-fs-plugin-updater.php:817
770
- msgid "Unable to connect to the filesystem. Please confirm your credentials."
771
- msgstr "No es posible conectarse al sistema de archivos. Por favor, confirma tus credenciales."
772
-
773
- #: includes/class-fs-plugin-updater.php:923
774
- msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
775
- msgstr "El paquete de plugin remoto no contiene una carpeta con el Slug deseado y el cambio de nombre no funcionó."
776
-
777
- #: includes/fs-plugin-info-dialog.php336,
778
- #: templates/account/partials/addon.php:287
779
- msgctxt "verb"
780
- msgid "Purchase"
781
- msgstr "Comprar"
782
-
783
- #: includes/fs-plugin-info-dialog.php:339
784
- msgid "Start my free %s"
785
- msgstr "Comenzar mi período gratuito de %s"
786
-
787
- #: includes/fs-plugin-info-dialog.php:380
788
- msgid "Install Free Version Now"
789
- msgstr "Instalar la versión gratuita ahora"
790
-
791
- #: includes/fs-plugin-info-dialog.php381, templates/auto-installation.php111,
792
- #: templates/account/partials/addon.php267,
793
- #: templates/account/partials/addon.php:317
794
- msgid "Install Now"
795
- msgstr "Instalar ahora"
796
-
797
- #: includes/fs-plugin-info-dialog.php:392
798
- msgctxt "as download latest version"
799
- msgid "Download Latest Free Version"
800
- msgstr "Descargar la última versión gratuita"
801
-
802
- #: includes/fs-plugin-info-dialog.php393, templates/account.php80,
803
- #: templates/account/partials/addon.php:21
804
- msgctxt "as download latest version"
805
- msgid "Download Latest"
806
- msgstr "Descargar la última"
807
-
808
- #: includes/fs-plugin-info-dialog.php:403
809
- msgid "Install Free Version Update Now"
810
- msgstr "Instalar la actualización gratuita ahora"
811
-
812
- #: includes/fs-plugin-info-dialog.php404, templates/account.php:448
813
- msgid "Install Update Now"
814
- msgstr "Instalar actualización ahora"
815
-
816
- #: includes/fs-plugin-info-dialog.php:415
817
- msgid "Newer Free Version (%s) Installed"
818
- msgstr "Versión gratuita más reciente (%s) instalada"
819
-
820
- #: includes/fs-plugin-info-dialog.php:416
821
- msgid "Newer Version (%s) Installed"
822
- msgstr "Versión más reciente (%s) instalada"
823
-
824
- #: includes/fs-plugin-info-dialog.php:424
825
- msgid "Latest Free Version Installed"
826
- msgstr "Última versión gratuita instalada"
827
-
828
- #: includes/fs-plugin-info-dialog.php:425
829
- msgid "Latest Version Installed"
830
- msgstr "Última versión instalada"
831
-
832
- #: includes/fs-plugin-info-dialog.php:580
833
- msgctxt "Plugin installer section title"
834
- msgid "Description"
835
- msgstr "Descripción"
836
-
837
- #: includes/fs-plugin-info-dialog.php:581
838
- msgctxt "Plugin installer section title"
839
- msgid "Installation"
840
- msgstr "Instalación"
841
-
842
- #: includes/fs-plugin-info-dialog.php:582
843
- msgctxt "Plugin installer section title"
844
- msgid "FAQ"
845
- msgstr "FAQ"
846
-
847
- #: includes/fs-plugin-info-dialog.php583,
848
- #: templates/plugin-info/description.php:55
849
- msgid "Screenshots"
850
- msgstr "Capturas de pantalla"
851
-
852
- #: includes/fs-plugin-info-dialog.php:584
853
- msgctxt "Plugin installer section title"
854
- msgid "Changelog"
855
- msgstr "Registro de cambios"
856
-
857
- #: includes/fs-plugin-info-dialog.php:585
858
- msgctxt "Plugin installer section title"
859
- msgid "Reviews"
860
- msgstr "Valoraciones"
861
-
862
- #: includes/fs-plugin-info-dialog.php:586
863
- msgctxt "Plugin installer section title"
864
- msgid "Other Notes"
865
- msgstr "Otras notas"
866
-
867
- #: includes/fs-plugin-info-dialog.php:601
868
- msgctxt "Plugin installer section title"
869
- msgid "Features & Pricing"
870
- msgstr "Características y precios"
871
-
872
- #: includes/fs-plugin-info-dialog.php:611
873
- msgid "Plugin Install"
874
- msgstr "Instalar plugin"
875
-
876
- #: includes/fs-plugin-info-dialog.php:683
877
- msgctxt "e.g. Professional Plan"
878
- msgid "%s Plan"
879
- msgstr "Plan %s"
880
-
881
- #: includes/fs-plugin-info-dialog.php:709
882
- msgctxt "e.g. the best product"
883
- msgid "Best"
884
- msgstr "El mejor"
885
-
886
- #: includes/fs-plugin-info-dialog.php715,
887
- #: includes/fs-plugin-info-dialog.php:735
888
- msgctxt "as every month"
889
- msgid "Monthly"
890
- msgstr "Mensual"
891
-
892
- #: includes/fs-plugin-info-dialog.php:718
893
- msgctxt "as once a year"
894
- msgid "Annual"
895
- msgstr "Anual"
896
-
897
- #: includes/fs-plugin-info-dialog.php:721
898
- msgid "Lifetime"
899
- msgstr "Permanente"
900
-
901
- #: includes/fs-plugin-info-dialog.php735,
902
- #: includes/fs-plugin-info-dialog.php737,
903
- #: includes/fs-plugin-info-dialog.php:739
904
- msgctxt "e.g. billed monthly"
905
- msgid "Billed %s"
906
- msgstr "Facturado %s"
907
-
908
- #: includes/fs-plugin-info-dialog.php:737
909
- msgctxt "as once a year"
910
- msgid "Annually"
911
- msgstr "Anualmente"
912
-
913
- #: includes/fs-plugin-info-dialog.php:739
914
- msgctxt "as once a year"
915
- msgid "Once"
916
- msgstr "Una vez"
917
-
918
- #: includes/fs-plugin-info-dialog.php:745
919
- msgid "Single Site License"
920
- msgstr "Licencia para un único sitio"
921
-
922
- #: includes/fs-plugin-info-dialog.php:747
923
- msgid "Unlimited Licenses"
924
- msgstr "Licencias ilimitadas"
925
-
926
- #: includes/fs-plugin-info-dialog.php:749
927
- msgid "Up to %s Sites"
928
- msgstr "Hasta %s sitios"
929
-
930
- #: includes/fs-plugin-info-dialog.php759,
931
- #: templates/plugin-info/features.php:82
932
- msgctxt "as monthly period"
933
- msgid "mo"
934
- msgstr "me"
935
-
936
- #: includes/fs-plugin-info-dialog.php766,
937
- #: templates/plugin-info/features.php:80
938
- msgctxt "as annual period"
939
- msgid "year"
940
- msgstr "año"
941
-
942
- #: includes/fs-plugin-info-dialog.php:820
943
- msgctxt "noun"
944
- msgid "Price"
945
- msgstr "Precio"
946
-
947
- #: includes/fs-plugin-info-dialog.php:868
948
- msgid "Save %s"
949
- msgstr "Guardar %s"
950
-
951
- #: includes/fs-plugin-info-dialog.php:878
952
- msgid "No commitment for %s - cancel anytime"
953
- msgstr "Sin compromiso para %s - cancelar en cualquier momento"
954
-
955
- #: includes/fs-plugin-info-dialog.php:881
956
- msgid "After your free %s, pay as little as %s"
957
- msgstr "Después de su período gratuito %s, pague sólo %s"
958
-
959
- #: includes/fs-plugin-info-dialog.php:892
960
- msgid "Details"
961
- msgstr "Detalles"
962
-
963
- #: includes/fs-plugin-info-dialog.php896, templates/account.php87,
964
- #: templates/debug.php191, templates/debug.php228, templates/debug.php442,
965
- #: templates/account/partials/addon.php:28
966
- msgctxt "product version"
967
- msgid "Version"
968
- msgstr "Versión"
969
-
970
- #: includes/fs-plugin-info-dialog.php:903
971
- msgctxt "as the plugin author"
972
- msgid "Author"
973
- msgstr "Autor"
974
-
975
- #: includes/fs-plugin-info-dialog.php:910
976
- msgid "Last Updated"
977
- msgstr "Última actualización"
978
-
979
- #: includes/fs-plugin-info-dialog.php:915
980
- msgctxt "x-ago"
981
- msgid "%s ago"
982
- msgstr "hace %s"
983
-
984
- #: includes/fs-plugin-info-dialog.php:924
985
- msgid "Requires WordPress Version"
986
- msgstr "Necesita la versión de WordPress"
987
-
988
- #: includes/fs-plugin-info-dialog.php:925
989
- msgid "%s or higher"
990
- msgstr "%s o mayor"
991
-
992
- #: includes/fs-plugin-info-dialog.php:932
993
- msgid "Compatible up to"
994
- msgstr "Compatible hasta"
995
-
996
- #: includes/fs-plugin-info-dialog.php:940
997
- msgid "Downloaded"
998
- msgstr "Descargado"
999
-
1000
- #: includes/fs-plugin-info-dialog.php:944
1001
- msgid "%s time"
1002
- msgstr "% vez"
1003
-
1004
- #: includes/fs-plugin-info-dialog.php:946
1005
- msgid "%s times"
1006
- msgstr "%s veces"
1007
-
1008
- #: includes/fs-plugin-info-dialog.php:956
1009
- msgid "WordPress.org Plugin Page"
1010
- msgstr "Página del plugin en WordPress.org"
1011
-
1012
- #: includes/fs-plugin-info-dialog.php:964
1013
- msgid "Plugin Homepage"
1014
- msgstr "Página web del plugin"
1015
-
1016
- #: includes/fs-plugin-info-dialog.php972,
1017
- #: includes/fs-plugin-info-dialog.php:1054
1018
- msgid "Donate to this plugin"
1019
- msgstr "Donar a este plugin"
1020
-
1021
- #: includes/fs-plugin-info-dialog.php:979
1022
- msgid "Average Rating"
1023
- msgstr "Calificación media"
1024
-
1025
- #: includes/fs-plugin-info-dialog.php:986
1026
- msgid "based on %s"
1027
- msgstr "basado en %s"
1028
-
1029
- #: includes/fs-plugin-info-dialog.php:990
1030
- msgid "%s rating"
1031
- msgstr "%s calificación"
1032
-
1033
- #: includes/fs-plugin-info-dialog.php:992
1034
- msgid "%s ratings"
1035
- msgstr "%s calificaciones"
1036
-
1037
- #: includes/fs-plugin-info-dialog.php:1007
1038
- msgid "%s star"
1039
- msgstr "%s estrella"
1040
-
1041
- #: includes/fs-plugin-info-dialog.php:1009
1042
- msgid "%s stars"
1043
- msgstr "%s estrellas"
1044
-
1045
- #: includes/fs-plugin-info-dialog.php:1020
1046
- msgid "Click to see reviews that provided a rating of %s"
1047
- msgstr "Haz clic para ver los comentarios con una valoración de %s"
1048
-
1049
- #: includes/fs-plugin-info-dialog.php:1033
1050
- msgid "Contributors"
1051
- msgstr "Colaboradores"
1052
-
1053
- #: includes/fs-plugin-info-dialog.php1062,
1054
- #: includes/fs-plugin-info-dialog.php:1064
1055
- msgid "Warning"
1056
- msgstr "Atencion"
1057
-
1058
- #: includes/fs-plugin-info-dialog.php:1062
1059
- msgid "This plugin has not been tested with your current version of WordPress."
1060
- msgstr "Este plugin no ha sido probado con tu versión actual de WordPress."
1061
-
1062
- #: includes/fs-plugin-info-dialog.php:1064
1063
- msgid "This plugin has not been marked as compatible with your version of WordPress."
1064
- msgstr "Este puglin no ha sido marcado como compatible con tu versión de WordPress."
1065
-
1066
- #: includes/fs-plugin-info-dialog.php:1083
1067
- msgid "Paid add-on must be deployed to Freemius."
1068
- msgstr "El complemento de pago se debe implementar en Freemius."
1069
-
1070
- #: includes/fs-plugin-info-dialog.php:1084
1071
- msgid "Add-on must be deployed to WordPress.org or Freemius."
1072
- msgstr "El complemento debe implementarse en WordPress.org o en Freemius."
1073
-
1074
- #: templates/account.php81, templates/account/partials/addon.php22,
1075
- #: templates/account/partials/site.php:295
1076
- msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
1077
- msgstr "Degradando tu plan detendrás inmediatamente todos los pagos recurrentes futuros y tu licencia del plan %s expirará en %s."
1078
-
1079
- #: templates/account.php82, templates/account/partials/addon.php:23
1080
- msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
1081
- msgstr "La cancelación del período de prueba bloqueará inmediatamente el acceso a todas las funciones premium. ¿Estás seguro?"
1082
-
1083
- #: templates/account.php83, templates/account/partials/addon.php24,
1084
- #: templates/account/partials/site.php:296
1085
- msgid "You can still enjoy all %s features but you will not have access to %s updates and support."
1086
- msgstr "Todavía puedes disfrutar de todas las funciones de %s pero no tienes acceso a soporte y actualizaciones de %s."
1087
-
1088
- #: templates/account.php84, templates/account/partials/addon.php25,
1089
- #: templates/account/partials/site.php:297
1090
- msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
1091
- msgstr "Una vez que caduque tu licencia todavía puedes utilizar la versión gratuita pero NO tendrás acceso a las funciones de %s."
1092
-
1093
- #. translators: %s: Plan title (e.g. "Professional")
1094
- #: templates/account.php86,
1095
- #: templates/account/partials/activate-license-button.php31,
1096
- #: templates/account/partials/addon.php:27
1097
- msgid "Activate %s Plan"
1098
- msgstr "Activar plan %s"
1099
-
1100
- #. translators: %s: Time period (e.g. Auto renews in "2 months")
1101
- #: templates/account.php89, templates/account/partials/addon.php30,
1102
- #: templates/account/partials/site.php:275
1103
- msgid "Auto renews in %s"
1104
- msgstr "Auto renovaciones en %s"
1105
-
1106
- #. translators: %s: Time period (e.g. Expires in "2 months")
1107
- #: templates/account.php91, templates/account/partials/addon.php32,
1108
- #: templates/account/partials/site.php:277
1109
- msgid "Expires in %s"
1110
- msgstr "Caduca en %s"
1111
-
1112
- #: templates/account.php92, templates/account/partials/addon.php:33
1113
- msgctxt "as synchronize license"
1114
- msgid "Sync License"
1115
- msgstr "Sincronizar licencia"
1116
-
1117
- #: templates/account.php93, templates/account/partials/addon.php:34
1118
- msgid "Cancel Trial"
1119
- msgstr "Cancelar período de prueba"
1120
-
1121
- #: templates/account.php94, templates/account/partials/addon.php:35
1122
- msgid "Change Plan"
1123
- msgstr "Cambiar Plan"
1124
-
1125
- #: templates/account.php95, templates/account/partials/addon.php:36
1126
- msgctxt "verb"
1127
- msgid "Upgrade"
1128
- msgstr "Actualizar"
1129
-
1130
- #: templates/account.php97, templates/account/partials/addon.php38,
1131
- #: templates/account/partials/site.php:298
1132
- msgctxt "verb"
1133
- msgid "Downgrade"
1134
- msgstr "Degradar"
1135
-
1136
- #: templates/account.php99, templates/add-ons.php126,
1137
- #: templates/plugin-info/features.php72,
1138
- #: templates/account/partials/addon.php40,
1139
- #: templates/account/partials/site.php:31
1140
- msgid "Free"
1141
- msgstr "Gratis"
1142
-
1143
- #: templates/account.php100, templates/account/partials/addon.php:41
1144
- msgid "Activate"
1145
- msgstr "Activar"
1146
-
1147
- #: templates/account.php101, templates/debug.php361,
1148
- #: includes/customizer/class-fs-customizer-upsell-control.php106,
1149
- #: templates/account/partials/addon.php:42
1150
- msgctxt "as product pricing plan"
1151
- msgid "Plan"
1152
- msgstr "Plan"
1153
-
1154
- #: templates/account.php:154
1155
- msgid "Free Trial"
1156
- msgstr "Período de prueba gratuito"
1157
-
1158
- #: templates/account.php:165
1159
- msgid "Account Details"
1160
- msgstr "Detalles de la cuenta"
1161
-
1162
- #: templates/account.php:175
1163
- msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
1164
- msgstr "La eliminación de la cuenta desactivará automáticamente su licencia de plan %s para que pueda utilizarla en otros sitios. Si también desea cancelar los pagos periódicos, haga clic en el botón \"Cancelar\" y, en primer lugar, \"Degradar\" su cuenta. ¿Seguro que deseas continuar con la eliminación?"
1165
-
1166
- #: templates/account.php:177
1167
- msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
1168
- msgstr "La eliminación no es temporal. Sólo elimínalo si ya no deseas utilizar este %s más. ¿Estás seguro que desea continuar con la eliminación?"
1169
-
1170
- #: templates/account.php:180
1171
- msgid "Delete Account"
1172
- msgstr "Borrar cuenta"
1173
-
1174
- #: templates/account.php192, templates/account/partials/addon.php155,
1175
- #: templates/account/partials/deactivate-license-button.php:35
1176
- msgid "Deactivate License"
1177
- msgstr "Desactivar licencia"
1178
-
1179
- #: templates/account.php:210
1180
- msgid "Are you sure you want to proceed?"
1181
- msgstr "¿Estás seguro que quieres proceder?"
1182
-
1183
- #: templates/account.php210, templates/account/partials/addon.php:177
1184
- msgid "Cancel Subscription"
1185
- msgstr "Cancelar suscripción"
1186
-
1187
- #: templates/account.php:239
1188
- msgctxt "as synchronize"
1189
- msgid "Sync"
1190
- msgstr "Sincronizar"
1191
-
1192
- #: templates/account.php253, templates/debug.php:477
1193
- msgid "Name"
1194
- msgstr "Nombre"
1195
-
1196
- #: templates/account.php259, templates/debug.php:478
1197
- msgid "Email"
1198
- msgstr "Correo electrónico"
1199
-
1200
- #: templates/account.php266, templates/debug.php360, templates/debug.php:516
1201
- msgid "User ID"
1202
- msgstr "ID de usuario"
1203
-
1204
- #: templates/account.php:274
1205
- msgid "Site ID"
1206
- msgstr "ID del sitio"
1207
-
1208
- #: templates/account.php:277
1209
- msgid "No ID"
1210
- msgstr "Sin ID"
1211
-
1212
- #: templates/account.php282, templates/debug.php233, templates/debug.php362,
1213
- #: templates/debug.php443, templates/debug.php480,
1214
- #: templates/account/partials/site.php:219
1215
- msgid "Public Key"
1216
- msgstr "Clave pública"
1217
-
1218
- #: templates/account.php288, templates/debug.php363, templates/debug.php444,
1219
- #: templates/debug.php481, templates/account/partials/site.php:231
1220
- msgid "Secret Key"
1221
- msgstr "Clave secreta"
1222
-
1223
- #: templates/account.php:291
1224
- msgctxt "as secret encryption key missing"
1225
- msgid "No Secret"
1226
- msgstr "Sin clave secreta"
1227
-
1228
- #: templates/account.php310, templates/account/partials/site.php112,
1229
- #: templates/account/partials/site.php:114
1230
- msgid "Trial"
1231
- msgstr "Período de prueba gratuito"
1232
-
1233
- #: templates/account.php329, templates/debug.php521,
1234
- #: templates/account/partials/site.php:248
1235
- msgid "License Key"
1236
- msgstr "Clave de licencia"
1237
-
1238
- #: templates/account.php:359
1239
- msgid "not verified"
1240
- msgstr "no verificado"
1241
-
1242
- #: templates/account.php:416
1243
- msgid "Premium version"
1244
- msgstr "Versión premium"
1245
-
1246
- #: templates/account.php:418
1247
- msgid "Free version"
1248
- msgstr "Versión gratuita"
1249
-
1250
- #: templates/account.php:430
1251
- msgid "Verify Email"
1252
- msgstr "Verificar correo electrónico"
1253
-
1254
- #: templates/account.php:441
1255
- msgid "Download %s Version"
1256
- msgstr "Descargar versión %s"
1257
-
1258
- #: templates/account.php455, templates/account.php636,
1259
- #: templates/account/partials/site.php237,
1260
- #: templates/account/partials/site.php:255
1261
- msgctxt "verb"
1262
- msgid "Show"
1263
- msgstr "Mostrar"
1264
-
1265
- #: templates/account.php:469
1266
- msgid "What is your %s?"
1267
- msgstr "¿Cual es tú %s?"
1268
-
1269
- #: templates/account.php477, templates/account/billing.php:27
1270
- msgctxt "verb"
1271
- msgid "Edit"
1272
- msgstr "Editar"
1273
-
1274
- #: templates/account.php:490
1275
- msgid "Sites"
1276
- msgstr "Sitios"
1277
-
1278
- #: templates/account.php:501
1279
- msgid "Search by address"
1280
- msgstr "Buscar por dirección"
1281
-
1282
- #: templates/account.php510, templates/account.php558, templates/debug.php226,
1283
- #: templates/debug.php354, templates/debug.php439, templates/debug.php476,
1284
- #: templates/debug.php514, templates/debug.php587,
1285
- #: templates/account/payments.php35, templates/debug/logger.php:21
1286
- msgid "ID"
1287
- msgstr "ID"
1288
-
1289
- #: templates/account.php511, templates/debug.php:357
1290
- msgid "Address"
1291
- msgstr "Dirección"
1292
-
1293
- #: templates/account.php:512
1294
- msgid "License"
1295
- msgstr "Licencia"
1296
-
1297
- #: templates/account.php:513
1298
- msgid "Plan"
1299
- msgstr "Plan"
1300
-
1301
- #: templates/account.php:561
1302
- msgctxt "as software license"
1303
- msgid "License"
1304
- msgstr "Licencia"
1305
-
1306
- #: templates/account.php:630
1307
- msgctxt "verb"
1308
- msgid "Hide"
1309
- msgstr "Ocultar"
1310
-
1311
- #: templates/account.php:665
1312
- msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
1313
- msgstr "Al desactivar tu licencia todas las características premium se bloquearán, pero posibilitará poder activar tu licencia en otro sitio. ¿Estás seguro que quieres continuar?"
1314
-
1315
- #: templates/add-ons.php:36
1316
- msgid "Add Ons for %s"
1317
- msgstr "Complementos para %s"
1318
-
1319
- #: templates/add-ons.php:44
1320
- msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
1321
- msgstr "No podemos cargar la lista de complementos. Probablemente es un problema por nuestro parte, por favor inténtalo de nuevo en unos minutos."
1322
-
1323
- #: templates/add-ons.php:135
1324
- msgid "View details"
1325
- msgstr "Ver detalles"
1326
-
1327
- #: templates/admin-notice.php13, templates/forms/license-activation.php208,
1328
- #: templates/forms/resend-key.php:77
1329
- msgctxt "as close a window"
1330
- msgid "Dismiss"
1331
- msgstr "Descartar"
1332
-
1333
- #: templates/auto-installation.php:45
1334
- msgid "%s sec"
1335
- msgstr "%s seg"
1336
-
1337
- #: templates/auto-installation.php:83
1338
- msgid "Automatic Installation"
1339
- msgstr "Instalación automática"
1340
-
1341
- #: templates/auto-installation.php:93
1342
- msgid "An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now."
1343
- msgstr "Una descarga automatizada y la instalación de %s (versión de pago) de %s comenzará en %s. Si quieres hacerlo manualmente - haz clic en el botón de cancelación."
1344
-
1345
- #: templates/auto-installation.php:104
1346
- msgid "The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page."
1347
- msgstr "El proceso de instalación ha comenzado y puede tardar unos minutos en completarse. Por favor, espera hasta que se finalice - no actualices esta página."
1348
-
1349
- #: templates/auto-installation.php:109
1350
- msgid "Cancel Installation"
1351
- msgstr "Cancelar instalación"
1352
-
1353
- #: templates/checkout.php:172
1354
- msgid "Checkout"
1355
- msgstr "Pagar"
1356
-
1357
- #: templates/checkout.php:172
1358
- msgid "PCI compliant"
1359
- msgstr "Compatible con PCI"
1360
-
1361
- #. translators: %s: name (e.g. Hey John,)
1362
- #: templates/connect.php:110
1363
- msgctxt "greeting"
1364
- msgid "Hey %s,"
1365
- msgstr "Hey %s,"
1366
-
1367
- #: templates/connect.php:152
1368
- msgid "Allow & Continue"
1369
- msgstr "Permitir y continuar"
1370
-
1371
- #: templates/connect.php:156
1372
- msgid "Re-send activation email"
1373
- msgstr "Reenviar correo electrónico de activación"
1374
-
1375
- #: templates/connect.php:160
1376
- msgid "Thanks %s!"
1377
- msgstr "¡Gracias %s!"
1378
-
1379
- #: templates/connect.php170, templates/forms/license-activation.php:43
1380
- msgid "Agree & Activate License"
1381
- msgstr "De acuerdo y activar licencia"
1382
-
1383
- #: templates/connect.php:179
1384
- msgid "Thanks for purchasing %s! To get started, please enter your license key:"
1385
- msgstr "¡Gracias por comprar %s! Para empezar, escribe tu clave de licencia:"
1386
-
1387
- #: templates/connect.php:186
1388
- msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
1389
- msgstr "No te pierdas ninguna actualización importante - acepta para notificaciones de seguridad y de actualizaciones, ofertas y seguimiento de diagnóstico con datos no sensibles con %4$s."
1390
-
1391
- #: templates/connect.php:187
1392
- msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
1393
- msgstr "No te pierdas ninguna actualización importante - acepta para notificaciones de seguridad y de actualizaciones y seguimiento de diagnóstico con datos no sensibles con %4$s."
1394
-
1395
- #: templates/connect.php:193
1396
- msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1397
- msgstr "No te pierdas ninguna actualización importante - acepta las notificaciones de seguridad y de actualizaciones, contenido educacional, ofertas y seguimiento de diagnóstico con datos no sensibles con %4$s. ¡Si te saltas esto, no pasa nada! %1$s seguirá funcionando bien."
1398
-
1399
- #: templates/connect.php:194
1400
- msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1401
- msgstr "No te pierdas ninguna actualización importante - acepta las notificaciones de seguridad y de actualizaciones y seguimiento de diagnóstico con datos no sensibles con %4$s. ¡Si te saltas esto, no pasa nada! %1$s seguirá funcionando bien."
1402
-
1403
- #: templates/connect.php:228
1404
- msgid "We're excited to introduce the Freemius network-level integration."
1405
- msgstr "Estamos emocionados de introducir la integración de Freemius a nivel de red."
1406
-
1407
- #: templates/connect.php:231
1408
- msgid "During the update process we detected %d site(s) that are still pending license activation."
1409
- msgstr "Durante el proceso de actualización hemos detectado%d sitio(s) que aún están pendientes de la activación de licencia."
1410
-
1411
- #: templates/connect.php:233
1412
- msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
1413
- msgstr "Si quieres utilizar %s en estos sitios, introduce por favor tu clave de licencia abajo y haz click en el botón de activación."
1414
-
1415
- #: templates/connect.php:235
1416
- msgid "%s's paid features"
1417
- msgstr "%s características de pago"
1418
-
1419
- #: templates/connect.php:240
1420
- msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
1421
- msgstr "Alternativamente, puedes saltarlo ahora y activar la licencia después, en tu %s página de cuenta a nivel de red."
1422
-
1423
- #: templates/connect.php:242
1424
- msgid "During the update process we detected %s site(s) in the network that are still pending your attention."
1425
- msgstr "Durante el proceso de actualización detectamos %s sitio(s) en la red que todavía están pendientes de tu atención."
1426
-
1427
- #: templates/connect.php251, templates/forms/license-activation.php:46
1428
- msgid "License key"
1429
- msgstr "Clave de licencia"
1430
-
1431
- #: templates/connect.php254, templates/forms/license-activation.php:19
1432
- msgid "Can't find your license key?"
1433
- msgstr "¿No puedes encontrar tu clave de licencia?"
1434
-
1435
- #: templates/connect.php302, templates/connect.php617,
1436
- #: templates/forms/deactivation/retry-skip.php:20
1437
- msgctxt "verb"
1438
- msgid "Skip"
1439
- msgstr "Saltar"
1440
-
1441
- #: templates/connect.php:305
1442
- msgid "Delegate to Site Admins"
1443
- msgstr "Delegar a administradores del sitio"
1444
-
1445
- #: templates/connect.php:305
1446
- msgid "If you click it, this decision will be delegated to the sites administrators."
1447
- msgstr "Si haces click, esta decisión será delegada a los administradores de los sitios."
1448
-
1449
- #: templates/connect.php:333
1450
- msgid "Your Profile Overview"
1451
- msgstr "Resumen del perfil"
1452
-
1453
- #: templates/connect.php:334
1454
- msgid "Name and email address"
1455
- msgstr "Nombre y dirección de correo electrónico"
1456
-
1457
- #: templates/connect.php:339
1458
- msgid "Your Site Overview"
1459
- msgstr "Resumen del sitio"
1460
-
1461
- #: templates/connect.php:340
1462
- msgid "Site URL, WP version, PHP info, plugins & themes"
1463
- msgstr "URL del sitio web, versión de WP, PHP info, plugins y temas"
1464
-
1465
- #: templates/connect.php:345
1466
- msgid "Admin Notices"
1467
- msgstr "Avisos de administración"
1468
-
1469
- #: templates/connect.php346, templates/connect.php:362
1470
- msgid "Updates, announcements, marketing, no spam"
1471
- msgstr "Actualizaciones, anuncios, marketing, sin spam"
1472
-
1473
- #: templates/connect.php:351
1474
- msgid "Current %s Events"
1475
- msgstr "Eventos de %s actuales"
1476
-
1477
- #: templates/connect.php:352
1478
- msgid "Activation, deactivation and uninstall"
1479
- msgstr "Activación, desactivación y desinstalación"
1480
-
1481
- #: templates/connect.php:361
1482
- msgid "Newsletter"
1483
- msgstr "Boletín"
1484
-
1485
- #: templates/connect.php378, templates/forms/license-activation.php:38
1486
- msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
1487
- msgstr "%1$s periódicamente enviará datos a %2$s para comprobar las actualizaciones de seguridad, nuevas funcionalidades y verificar la validez de tu licencia."
1488
-
1489
- #: templates/connect.php:383
1490
- msgid "What permissions are being granted?"
1491
- msgstr "¿Qué permisos se otorgan?"
1492
-
1493
- #: templates/connect.php:404
1494
- msgid "Don't have a license key?"
1495
- msgstr "¿No tienes una clave de licencia?"
1496
-
1497
- #: templates/connect.php:405
1498
- msgid "Activate Free Version"
1499
- msgstr "Activar versión gratuita"
1500
-
1501
- #: templates/connect.php:407
1502
- msgid "Have a license key?"
1503
- msgstr "¿Tienes una clave de licencia?"
1504
-
1505
- #: templates/connect.php:415
1506
- msgid "Privacy Policy"
1507
- msgstr "Política de privacidad"
1508
-
1509
- #: templates/connect.php:417
1510
- msgid "Terms of Service"
1511
- msgstr "Términos de servicio"
1512
-
1513
- #: templates/connect.php:750
1514
- msgctxt "as in the process of sending an email"
1515
- msgid "Sending email"
1516
- msgstr "Enviando correo electrónico"
1517
-
1518
- #: templates/connect.php:751
1519
- msgctxt "as activating plugin"
1520
- msgid "Activating"
1521
- msgstr "Activando"
1522
-
1523
- #: templates/contact.php:78
1524
- msgid "Contact"
1525
- msgstr "Contacto"
1526
-
1527
- #: templates/debug.php:17
1528
- msgctxt "as turned off"
1529
- msgid "Off"
1530
- msgstr "Apagado"
1531
-
1532
- #: templates/debug.php:18
1533
- msgctxt "as turned on"
1534
- msgid "On"
1535
- msgstr "Encendido"
1536
-
1537
- #: templates/debug.php:20
1538
- msgid "SDK"
1539
- msgstr "SDK"
1540
-
1541
- #: templates/debug.php:24
1542
- msgctxt "as code debugging"
1543
- msgid "Debugging"
1544
- msgstr "Depurando"
1545
-
1546
- #: templates/debug.php54, templates/debug.php238, templates/debug.php364,
1547
- #: templates/debug.php:482
1548
- msgid "Actions"
1549
- msgstr "Acciones"
1550
-
1551
- #: templates/debug.php:64
1552
- msgid "Are you sure you want to delete all Freemius data?"
1553
- msgstr "¿Está seguro que desea eliminar todos los datos de Freemius?"
1554
-
1555
- #: templates/debug.php:64
1556
- msgid "Delete All Accounts"
1557
- msgstr "Borrar todas las cuentas"
1558
-
1559
- #: templates/debug.php:71
1560
- msgid "Clear API Cache"
1561
- msgstr "Borrar caché de la API"
1562
-
1563
- #: templates/debug.php:79
1564
- msgid "Clear Updates Transients"
1565
- msgstr "Borrar transients de actualizaciones"
1566
-
1567
- #: templates/debug.php:86
1568
- msgid "Sync Data From Server"
1569
- msgstr "Sincronizar datos desde el servidor"
1570
-
1571
- #: templates/debug.php:90
1572
- msgid "Load DB Option"
1573
- msgstr "Cargar opción de BD"
1574
-
1575
- #: templates/debug.php:93
1576
- msgid "Set DB Option"
1577
- msgstr "Guardar opción en BD"
1578
-
1579
- #: templates/debug.php:170
1580
- msgid "Key"
1581
- msgstr "Clave"
1582
-
1583
- #: templates/debug.php:171
1584
- msgid "Value"
1585
- msgstr "Valor"
1586
-
1587
- #: templates/debug.php:187
1588
- msgctxt "as software development kit versions"
1589
- msgid "SDK Versions"
1590
- msgstr "Versiones SDK"
1591
-
1592
- #: templates/debug.php:192
1593
- msgid "SDK Path"
1594
- msgstr "Ruta del SDK"
1595
-
1596
- #: templates/debug.php193, templates/debug.php:232
1597
- msgid "Module Path"
1598
- msgstr "Ruta del módulo"
1599
-
1600
- #: templates/debug.php:194
1601
- msgid "Is Active"
1602
- msgstr "Está activo"
1603
-
1604
- #: templates/debug.php222, templates/debug/plugins-themes-sync.php:35
1605
- msgid "Plugins"
1606
- msgstr "Plugins"
1607
-
1608
- #: templates/debug.php222, templates/debug/plugins-themes-sync.php:56
1609
- msgid "Themes"
1610
- msgstr "Temas"
1611
-
1612
- #: templates/debug.php227, templates/debug.php359, templates/debug.php441,
1613
- #: templates/debug/scheduled-crons.php:80
1614
- msgid "Slug"
1615
- msgstr "Ruta"
1616
-
1617
- #: templates/debug.php229, templates/debug.php:440
1618
- msgid "Title"
1619
- msgstr "Título"
1620
-
1621
- #: templates/debug.php:230
1622
- msgctxt "as application program interface"
1623
- msgid "API"
1624
- msgstr "API"
1625
-
1626
- #: templates/debug.php:231
1627
- msgid "Freemius State"
1628
- msgstr "Estado Freemius"
1629
-
1630
- #: templates/debug.php:235
1631
- msgid "Network Blog"
1632
- msgstr "Blog de red"
1633
-
1634
- #: templates/debug.php:236
1635
- msgid "Network User"
1636
- msgstr "Usuario de red"
1637
-
1638
- #: templates/debug.php:273
1639
- msgctxt "as connection was successful"
1640
- msgid "Connected"
1641
- msgstr "Conectado"
1642
-
1643
- #: templates/debug.php:274
1644
- msgctxt "as connection blocked"
1645
- msgid "Blocked"
1646
- msgstr "Bloqueado"
1647
-
1648
- #: templates/debug.php:310
1649
- msgid "Simulate Trial"
1650
- msgstr "Simular período de prueba"
1651
-
1652
- #: templates/debug.php:322
1653
- msgid "Simulate Network Upgrade"
1654
- msgstr "Simular actualización de red"
1655
-
1656
- #: templates/debug.php:348
1657
- msgid "%s Installs"
1658
- msgstr "%s Instalaciones"
1659
-
1660
- #: templates/debug.php:350
1661
- msgctxt "like websites"
1662
- msgid "Sites"
1663
- msgstr "Sitios"
1664
-
1665
- #: templates/debug.php356, templates/account/partials/site.php:148
1666
- msgid "Blog ID"
1667
- msgstr "ID del blog"
1668
-
1669
- #: templates/debug.php421, templates/debug.php499,
1670
- #: templates/account/partials/addon.php:334
1671
- msgctxt "verb"
1672
- msgid "Delete"
1673
- msgstr "Borrar"
1674
-
1675
- #: templates/debug.php:435
1676
- msgid "Add Ons of module %s"
1677
- msgstr "Complementos del módulo %s"
1678
-
1679
- #: templates/debug.php:472
1680
- msgid "Users"
1681
- msgstr "Usuarios"
1682
-
1683
- #: templates/debug.php:479
1684
- msgid "Verified"
1685
- msgstr "Verificado"
1686
-
1687
- #: templates/debug.php:510
1688
- msgid "%s Licenses"
1689
- msgstr "%s Licencias"
1690
-
1691
- #: templates/debug.php:515
1692
- msgid "Plugin ID"
1693
- msgstr "ID del plugin"
1694
-
1695
- #: templates/debug.php:517
1696
- msgid "Plan ID"
1697
- msgstr "ID del plan"
1698
-
1699
- #: templates/debug.php:518
1700
- msgid "Quota"
1701
- msgstr "Cuota"
1702
-
1703
- #: templates/debug.php:519
1704
- msgid "Activated"
1705
- msgstr "Activado"
1706
-
1707
- #: templates/debug.php:520
1708
- msgid "Blocking"
1709
- msgstr "Bloqueando"
1710
-
1711
- #: templates/debug.php:522
1712
- msgctxt "as expiration date"
1713
- msgid "Expiration"
1714
- msgstr "Caducidad"
1715
-
1716
- #: templates/debug.php:545
1717
- msgid "Debug Log"
1718
- msgstr "Log de Debug"
1719
-
1720
- #: templates/debug.php:549
1721
- msgid "All Types"
1722
- msgstr "Todos los Tipos"
1723
-
1724
- #: templates/debug.php:556
1725
- msgid "All Requests"
1726
- msgstr "Todas las peticiones"
1727
-
1728
- #: templates/debug.php561, templates/debug.php590,
1729
- #: templates/debug/logger.php:25
1730
- msgid "File"
1731
- msgstr "Archivo"
1732
-
1733
- #: templates/debug.php562, templates/debug.php588,
1734
- #: templates/debug/logger.php:23
1735
- msgid "Function"
1736
- msgstr "Función"
1737
-
1738
- #: templates/debug.php:563
1739
- msgid "Process ID"
1740
- msgstr "ID del proceso"
1741
-
1742
- #: templates/debug.php:564
1743
- msgid "Logger"
1744
- msgstr "Logger"
1745
-
1746
- #: templates/debug.php565, templates/debug.php589,
1747
- #: templates/debug/logger.php:24
1748
- msgid "Message"
1749
- msgstr "Mensaje"
1750
-
1751
- #: templates/debug.php:567
1752
- msgid "Filter"
1753
- msgstr "Filtro"
1754
-
1755
- #: templates/debug.php:575
1756
- msgid "Download"
1757
- msgstr "Descarga"
1758
-
1759
- #: templates/debug.php586, templates/debug/logger.php:22
1760
- msgid "Type"
1761
- msgstr "Tipo"
1762
-
1763
- #: templates/debug.php591, templates/debug/logger.php:26
1764
- msgid "Timestamp"
1765
- msgstr "Timestamp"
1766
-
1767
- #: templates/secure-https-header.php:28
1768
- msgid "Secure HTTPS %s page, running from an external domain"
1769
- msgstr "Página segura HTTPS %s, desde un dominio externo"
1770
-
1771
- #: includes/customizer/class-fs-customizer-support-section.php55,
1772
- #: templates/plugin-info/features.php:43
1773
- msgid "Support"
1774
- msgstr "Soporte"
1775
-
1776
- #: includes/debug/class-fs-debug-bar-panel.php48,
1777
- #: templates/debug/api-calls.php54, templates/debug/logger.php:62
1778
- msgctxt "milliseconds"
1779
- msgid "ms"
1780
- msgstr "ms"
1781
-
1782
- #: includes/debug/debug-bar-start.php:41
1783
- msgid "Freemius API"
1784
- msgstr "API Freemius"
1785
-
1786
- #: includes/debug/debug-bar-start.php:42
1787
- msgid "Requests"
1788
- msgstr "Peticiones"
1789
-
1790
- #: templates/account/billing.php:28
1791
- msgctxt "verb"
1792
- msgid "Update"
1793
- msgstr "Actualizar"
1794
-
1795
- #: templates/account/billing.php:39
1796
- msgid "Billing"
1797
- msgstr "Facturación"
1798
-
1799
- #: templates/account/billing.php44, templates/account/billing.php:44
1800
- msgid "Business name"
1801
- msgstr "Nombre de la empresa"
1802
-
1803
- #: templates/account/billing.php45, templates/account/billing.php:45
1804
- msgid "Tax / VAT ID"
1805
- msgstr "Tax / Núm IVA"
1806
-
1807
- #: templates/account/billing.php48, templates/account/billing.php48,
1808
- #: templates/account/billing.php49, templates/account/billing.php:49
1809
- msgid "Address Line %d"
1810
- msgstr "Línea de la dirección %d"
1811
-
1812
- #: templates/account/billing.php52, templates/account/billing.php:52
1813
- msgid "City"
1814
- msgstr "Ciudad"
1815
-
1816
- #: templates/account/billing.php52, templates/account/billing.php:52
1817
- msgid "Town"
1818
- msgstr "Municipio"
1819
-
1820
- #: templates/account/billing.php53, templates/account/billing.php:53
1821
- msgid "ZIP / Postal Code"
1822
- msgstr "Código postal"
1823
-
1824
- #: templates/account/billing.php:308
1825
- msgid "Country"
1826
- msgstr "País"
1827
-
1828
- #: templates/account/billing.php:310
1829
- msgid "Select Country"
1830
- msgstr "Seleccionar país"
1831
-
1832
- #: templates/account/billing.php317, templates/account/billing.php:318
1833
- msgid "State"
1834
- msgstr "Estado"
1835
-
1836
- #: templates/account/billing.php317, templates/account/billing.php:318
1837
- msgid "Province"
1838
- msgstr "Provincia"
1839
-
1840
- #: templates/account/payments.php:29
1841
- msgid "Payments"
1842
- msgstr "Pagos"
1843
-
1844
- #: templates/account/payments.php:36
1845
- msgid "Date"
1846
- msgstr "Fecha"
1847
-
1848
- #: templates/account/payments.php:37
1849
- msgid "Amount"
1850
- msgstr "Cantidad"
1851
-
1852
- #: templates/account/payments.php38, templates/account/payments.php:50
1853
- msgid "Invoice"
1854
- msgstr "Factura"
1855
-
1856
- #: templates/debug/api-calls.php:56
1857
- msgid "API"
1858
- msgstr "API"
1859
-
1860
- #: templates/debug/api-calls.php:68
1861
- msgid "Method"
1862
- msgstr "Método"
1863
-
1864
- #: templates/debug/api-calls.php:69
1865
- msgid "Code"
1866
- msgstr "Código"
1867
-
1868
- #: templates/debug/api-calls.php:70
1869
- msgid "Length"
1870
- msgstr "Longitud"
1871
-
1872
- #: templates/debug/api-calls.php:71
1873
- msgctxt "as file/folder path"
1874
- msgid "Path"
1875
- msgstr "Ruta"
1876
-
1877
- #: templates/debug/api-calls.php:73
1878
- msgid "Body"
1879
- msgstr "Cuerpo"
1880
-
1881
- #: templates/debug/api-calls.php:75
1882
- msgid "Result"
1883
- msgstr "Resultado"
1884
-
1885
- #: templates/debug/api-calls.php:76
1886
- msgid "Start"
1887
- msgstr "Inicio"
1888
-
1889
- #: templates/debug/api-calls.php:77
1890
- msgid "End"
1891
- msgstr "Fin"
1892
-
1893
- #: templates/debug/logger.php:15
1894
- msgid "Log"
1895
- msgstr "Log"
1896
-
1897
- #. translators: %s: time period (e.g. In "2 hours")
1898
- #: templates/debug/plugins-themes-sync.php18,
1899
- #: templates/debug/scheduled-crons.php:91
1900
- msgid "In %s"
1901
- msgstr "En %s"
1902
-
1903
- #. translators: %s: time period (e.g. "2 hours" ago)
1904
- #: templates/debug/plugins-themes-sync.php20,
1905
- #: templates/debug/scheduled-crons.php:93
1906
- msgid "%s ago"
1907
- msgstr "hace %s"
1908
-
1909
- #: templates/debug/plugins-themes-sync.php21,
1910
- #: templates/debug/scheduled-crons.php:74
1911
- msgctxt "seconds"
1912
- msgid "sec"
1913
- msgstr "seg"
1914
-
1915
- #: templates/debug/plugins-themes-sync.php:23
1916
- msgid "Plugins & Themes Sync"
1917
- msgstr "Sincronizar plugins y temas"
1918
-
1919
- #: templates/debug/plugins-themes-sync.php:28
1920
- msgid "Total"
1921
- msgstr "Total"
1922
-
1923
- #: templates/debug/plugins-themes-sync.php29,
1924
- #: templates/debug/scheduled-crons.php:84
1925
- msgid "Last"
1926
- msgstr "Último"
1927
-
1928
- #: templates/debug/scheduled-crons.php:76
1929
- msgid "Scheduled Crons"
1930
- msgstr "Crons programados"
1931
-
1932
- #: templates/debug/scheduled-crons.php:81
1933
- msgid "Module"
1934
- msgstr "Módulo"
1935
-
1936
- #: templates/debug/scheduled-crons.php:82
1937
- msgid "Module Type"
1938
- msgstr "Tipo de módulo"
1939
-
1940
- #: templates/debug/scheduled-crons.php:83
1941
- msgid "Cron Type"
1942
- msgstr "Tipo de cron"
1943
-
1944
- #: templates/debug/scheduled-crons.php:85
1945
- msgid "Next"
1946
- msgstr "Siguiente"
1947
-
1948
- #: templates/forms/affiliation.php:82
1949
- msgid "Non-expiring"
1950
- msgstr "Sin caducidad"
1951
-
1952
- #: templates/forms/affiliation.php:85
1953
- msgid "Apply to become an affiliate"
1954
- msgstr "Aceptar para hacerse afiliado"
1955
-
1956
- #: templates/forms/affiliation.php:104
1957
- msgid "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
1958
- msgstr "¡Tu aplicación al programa de afiliación para %s ha sido aceptada! Entra en tu área de afiliado desde: %s."
1959
-
1960
- #: templates/forms/affiliation.php:119
1961
- msgid "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information."
1962
- msgstr "Gracias por aplicar a nuestro programa de afiliados, revisaremos tu petición durante los próximos 14 días y te volveremos a contactar con información adicional."
1963
-
1964
- #: templates/forms/affiliation.php:122
1965
- msgid "Your affiliation account was temporarily suspended."
1966
- msgstr "Tu cuenta de afiliado ha sido suspendida temporalmente."
1967
-
1968
- #: templates/forms/affiliation.php:125
1969
- msgid "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days."
1970
- msgstr "Gracias por aplicar a nuestro programa de asociados, infortunadamente, de momento hemos decidido rechazar tu petición. Por favor, prueba de nuevo en 30 días."
1971
-
1972
- #: templates/forms/affiliation.php:128
1973
- msgid "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
1974
- msgstr "Debido a la violación de nuestros términos de afiliados, hemos decidido bloquear temporalmente tu cuenta de afiliación. Si tienes alguna pregunta, por favor contacta nuestro soporte."
1975
-
1976
- #: templates/forms/affiliation.php:141
1977
- msgid "Like the %s? Become our ambassador and earn cash ;-)"
1978
- msgstr "¿Te gusta %s? Conviértete en nuestro embajador y gana dinero ;-)"
1979
-
1980
- #: templates/forms/affiliation.php:142
1981
- msgid "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
1982
- msgstr "¡Envíanos nuevos usuarios a nuestro %s y gana %s de comisión en cada venta satisfactoria que nos hayas referido!"
1983
-
1984
- #: templates/forms/affiliation.php:145
1985
- msgid "Program Summary"
1986
- msgstr "Sumario del programa"
1987
-
1988
- #: templates/forms/affiliation.php:147
1989
- msgid "%s commission when a customer purchases a new license."
1990
- msgstr "%s comisión cuando un cliente compra una nueva licencia."
1991
-
1992
- #: templates/forms/affiliation.php:149
1993
- msgid "Get commission for automated subscription renewals."
1994
- msgstr "Obtén comisiones por renovaciones automatizadas de las suscripciones."
1995
-
1996
- #: templates/forms/affiliation.php:152
1997
- msgid "%s tracking cookie after the first visit to maximize earnings potential."
1998
- msgstr "%s tracking cookie después de la primera visita para maximizar las ganancias potenciales."
1999
-
2000
- #: templates/forms/affiliation.php:155
2001
- msgid "Unlimited commissions."
2002
- msgstr "Comisiones Ilimitadas"
2003
-
2004
- #: templates/forms/affiliation.php:157
2005
- msgid "%s minimum payout amount."
2006
- msgstr "%s cantidad mínima a pagar."
2007
-
2008
- #: templates/forms/affiliation.php:158
2009
- msgid "Payouts are in USD and processed monthly via PayPal."
2010
- msgstr "Los pagos son en USD y se procesan mensualmente por medio de PayPal."
2011
-
2012
- #: templates/forms/affiliation.php:159
2013
- msgid "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
2014
- msgstr "Como aplazamos 30 días para posible devoluciones, sólo pagamos comisiones que son de más de 30 días."
2015
-
2016
- #: templates/forms/affiliation.php:162
2017
- msgid "Affiliate"
2018
- msgstr "Afiliado"
2019
-
2020
- #: templates/forms/affiliation.php165, templates/forms/resend-key.php:23
2021
- msgid "Email address"
2022
- msgstr "Dirección de correo electrónico"
2023
-
2024
- #: templates/forms/affiliation.php:169
2025
- msgid "Full name"
2026
- msgstr "Nombre completo"
2027
-
2028
- #: templates/forms/affiliation.php:173
2029
- msgid "PayPal account email address"
2030
- msgstr "Dirección de correo electrónico de PayPal"
2031
-
2032
- #: templates/forms/affiliation.php:177
2033
- msgid "Where are you going to promote the %s?"
2034
- msgstr "¿Dónde vas a promocionar %s?"
2035
-
2036
- #: templates/forms/affiliation.php:179
2037
- msgid "Enter the domain of your website or other websites from where you plan to promote the %s."
2038
- msgstr "Introduce el dominio de tu sitio web o de otros sitios web donde planeas promocionar %s."
2039
-
2040
- #: templates/forms/affiliation.php:181
2041
- msgid "Add another domain"
2042
- msgstr "Añadir otro dominio"
2043
-
2044
- #: templates/forms/affiliation.php:185
2045
- msgid "Extra Domains"
2046
- msgstr "Dominios extra"
2047
-
2048
- #: templates/forms/affiliation.php:186
2049
- msgid "Extra domains where you will be marketing the product from."
2050
- msgstr "Dominios extra desde donde promocionarás el producto."
2051
-
2052
- #: templates/forms/affiliation.php:196
2053
- msgid "Promotion methods"
2054
- msgstr "Métodos de promoción"
2055
-
2056
- #: templates/forms/affiliation.php:199
2057
- msgid "Social media (Facebook, Twitter, etc.)"
2058
- msgstr "Social media (Facebook, Twitter, etc.)"
2059
-
2060
- #: templates/forms/affiliation.php:203
2061
- msgid "Mobile apps"
2062
- msgstr "Apps móviles "
2063
-
2064
- #: templates/forms/affiliation.php:207
2065
- msgid "Website, email, and social media statistics (optional)"
2066
- msgstr "Sitio web, correo electrónico y estadísticas de social media (opcional)"
2067
-
2068
- #: templates/forms/affiliation.php:210
2069
- msgid "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)."
2070
- msgstr "Siéntete libre de proporcionarnos estadísticas de tu sitio web o social media, p.ej. visitas únicas mensuales, número de suscriptores de correo electrónico, seguidores, etc. (mantendremos esta información confidencial)"
2071
-
2072
- #: templates/forms/affiliation.php:214
2073
- msgid "How will you promote us?"
2074
- msgstr "¿Como nos promocionarás?"
2075
-
2076
- #: templates/forms/affiliation.php:217
2077
- msgid "Please provide details on how you intend to promote %s (please be as specific as possible)."
2078
- msgstr "Por favor, danos detalles de como pretendes promocionar %s (por favor, se lo más específico que puedas)"
2079
-
2080
- #: templates/forms/affiliation.php223, templates/forms/resend-key.php:22
2081
- msgid "Cancel"
2082
- msgstr "Cancelar"
2083
-
2084
- #: templates/forms/affiliation.php:225
2085
- msgid "Become an affiliate"
2086
- msgstr "Hacerse afiliado"
2087
-
2088
- #: templates/forms/license-activation.php:20
2089
- msgid "Please enter the license key that you received in the email right after the purchase:"
2090
- msgstr "Por favor, introduce la clave de licencia que recibiste en el correo electrónico al realizar la compra:"
2091
-
2092
- #: templates/forms/license-activation.php:25
2093
- msgid "Update License"
2094
- msgstr "Activar licencia"
2095
-
2096
- #: templates/forms/optout.php:30
2097
- msgctxt "verb"
2098
- msgid "Opt Out"
2099
- msgstr "Darse de baja"
2100
-
2101
- #: templates/forms/optout.php:31
2102
- msgctxt "verb"
2103
- msgid "Opt In"
2104
- msgstr "Inscribirse"
2105
-
2106
- #: templates/forms/optout.php:33
2107
- msgid "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
2108
- msgstr "El uso del seguimiento se hace con la intención de mejorar %s. Crear una mejor experiencia de usuario, priorizando nuevas características y cosas mejores. Realmente apreciaríamos que considerases permitirnos continuar con el seguimiento."
2109
-
2110
- #: templates/forms/optout.php:35
2111
- msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
2112
- msgstr "Haciendo clic en \"Desistir\", ya no enviaremos los datos de %s a %s."
2113
-
2114
- #: templates/forms/premium-versions-upgrade-handler.php:24
2115
- msgid "There is a new version of %s available."
2116
- msgstr "Hay una nueva versión de %s disponible."
2117
-
2118
- #: templates/forms/premium-versions-upgrade-handler.php:25
2119
- msgid " %sRenew your license now%s to access version %s security & feature updates, and support."
2120
- msgstr "%s Renueva tu licencia ahora %s para acceder a la versión %s seguridad y nuevas características y soporte."
2121
-
2122
- #: templates/forms/premium-versions-upgrade-handler.php:34
2123
- msgid "New Version Available"
2124
- msgstr "Nueva versión disponible"
2125
-
2126
- #: templates/forms/premium-versions-upgrade-handler.php:36
2127
- msgid "Renew license"
2128
- msgstr "Renovar la licencia"
2129
-
2130
- #: templates/forms/premium-versions-upgrade-handler.php:53
2131
- msgctxt "close a window"
2132
- msgid "Dismiss"
2133
- msgstr "Descartar"
2134
-
2135
- #: templates/forms/resend-key.php:21
2136
- msgid "Send License Key"
2137
- msgstr "Enviar clave de licencia"
2138
-
2139
- #: templates/forms/resend-key.php:57
2140
- msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
2141
- msgstr "Escribe abajo la dirección de correo electrónico que has usado para la actualización y te reenviaremos la clave de licencia."
2142
-
2143
- #: templates/forms/trial-start.php:22
2144
- msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
2145
- msgstr "Estás a sólo 1-click de comenzar tu %1$s días de prueba gratuita del plan %2$s."
2146
-
2147
- #: templates/forms/trial-start.php:28
2148
- msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt in with your user and non-sensitive site information, allowing the %s to periodically send data to %s to check for version updates and to validate your trial."
2149
- msgstr "Para el cumplimiento de las directrices de WordPress.org, antes de empezar el período de prueba te pedimos que aceptes con tu usuario e información no sensible del sitio web, permitiendo a %s enviar datos periódicamente a %s para comprobar si hay actualizaciones de versión y para validar la versión de prueba."
2150
-
2151
- #: templates/js/style-premium-theme.php:37
2152
- msgid "Premium"
2153
- msgstr "Premium"
2154
-
2155
- #: templates/partials/network-activation.php:23
2156
- msgid "Activate license on all sites in the network."
2157
- msgstr "Activar licencia en todos los sitios de la red"
2158
-
2159
- #: templates/partials/network-activation.php:24
2160
- msgid "Apply on all sites in the network."
2161
- msgstr "Aplicar en todos los sitios de la red"
2162
-
2163
- #: templates/partials/network-activation.php:27
2164
- msgid "Activate license on all pending sites."
2165
- msgstr "Aplicar licencia en todos los sitios pendientes"
2166
-
2167
- #: templates/partials/network-activation.php:28
2168
- msgid "Apply on all pending sites."
2169
- msgstr "Aplicar en todos los sitios pendientes"
2170
-
2171
- #: templates/partials/network-activation.php36,
2172
- #: templates/partials/network-activation.php:68
2173
- msgid "allow"
2174
- msgstr "permitir"
2175
-
2176
- #: templates/partials/network-activation.php38,
2177
- #: templates/partials/network-activation.php:70
2178
- msgid "delegate"
2179
- msgstr "delegar"
2180
-
2181
- #: templates/partials/network-activation.php41,
2182
- #: templates/partials/network-activation.php:73
2183
- msgid "skip"
2184
- msgstr "saltar"
2185
-
2186
- #: templates/plugin-info/description.php72,
2187
- #: templates/plugin-info/screenshots.php:31
2188
- msgid "Click to view full-size screenshot %d"
2189
- msgstr "Click para ver la captura de pantalla a tamaño completo %d"
2190
-
2191
- #: templates/plugin-info/features.php:56
2192
- msgid "Unlimited Updates"
2193
- msgstr "Actualizaciones Ilimitadas"
2194
-
2195
- #: templates/account/partials/activate-license-button.php:46
2196
- msgid "Localhost"
2197
- msgstr "Localhost"
2198
-
2199
- #: templates/account/partials/activate-license-button.php:50
2200
- msgctxt "as 5 licenses left"
2201
- msgid "%s left"
2202
- msgstr "quedan %s"
2203
-
2204
- #: templates/account/partials/activate-license-button.php:51
2205
- msgid "Last license"
2206
- msgstr "Última licencia"
2207
-
2208
- #: templates/account/partials/addon.php:111
2209
- msgid "Cancelled"
2210
- msgstr "Cancelado"
2211
-
2212
- #: templates/account/partials/addon.php:116
2213
- msgid "Expired"
2214
- msgstr "Caducado"
2215
-
2216
- #: templates/account/partials/addon.php:121
2217
- msgid "No expiration"
2218
- msgstr "Sin caducidad"
2219
-
2220
- #: templates/account/partials/addon.php259,
2221
- #: templates/account/partials/addon.php:312
2222
- msgid "Activate this add-on"
2223
- msgstr "Activar este complemento"
2224
-
2225
- #: templates/account/partials/site.php:181
2226
- msgid "Owner Name"
2227
- msgstr "Nombre del propietario"
2228
-
2229
- #: templates/account/partials/site.php:193
2230
- msgid "Owner Email"
2231
- msgstr "Correo electrónico del propietario"
2232
-
2233
- #: templates/account/partials/site.php:205
2234
- msgid "Owner ID"
2235
- msgstr "ID del propietario"
2236
-
2237
- #: templates/account/partials/site.php:270
2238
- msgid "Subscription"
2239
- msgstr "Suscripción"
2240
-
2241
- #: templates/forms/deactivation/contact.php:19
2242
- msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
2243
- msgstr "Disculpa las molestias y estamos aquí para ayudarte si nos das una oportunidad."
2244
-
2245
- #: templates/forms/deactivation/contact.php:22
2246
- msgid "Contact Support"
2247
- msgstr "Contactar soporte"
2248
-
2249
- #: templates/forms/deactivation/form.php:56
2250
- msgid "Anonymous feedback"
2251
- msgstr "Comentarios anónimos"
2252
-
2253
- #: templates/forms/deactivation/form.php:63
2254
- msgid "Deactivate"
2255
- msgstr "Desactivar"
2256
-
2257
- #: templates/forms/deactivation/form.php:65
2258
- msgid "Activate %s"
2259
- msgstr "Activar %s"
2260
-
2261
- #: templates/forms/deactivation/form.php:76
2262
- msgid "Quick feedback"
2263
- msgstr "Comentarios rápidos"
2264
-
2265
- #: templates/forms/deactivation/form.php:80
2266
- msgid "If you have a moment, please let us know why you are %s"
2267
- msgstr "Si tienes un momento, por favor, dinos por qué estás desactivando %s"
2268
-
2269
- #: templates/forms/deactivation/form.php:80
2270
- msgid "deactivating"
2271
- msgstr "desactivando"
2272
-
2273
- #: templates/forms/deactivation/form.php:80
2274
- msgid "switching"
2275
- msgstr "cambiando"
2276
-
2277
- #: templates/forms/deactivation/form.php:269
2278
- msgid "Submit & %s"
2279
- msgstr "Enviar y %s"
2280
-
2281
- #: templates/forms/deactivation/form.php:290
2282
- msgid "Kindly tell us the reason so we can improve."
2283
- msgstr "Por favor, dínos la razón para que podamos mejorar."
2284
-
2285
- #: templates/forms/deactivation/form.php:411
2286
- msgid "Yes - %s"
2287
- msgstr "Si - %s"
2288
-
2289
- #: templates/forms/deactivation/form.php:418
2290
- msgid "Skip & %s"
2291
- msgstr "Saltar y %s"
2292
-
2293
- #: templates/forms/deactivation/retry-skip.php:21
2294
- msgid "Click here to use the plugin anonymously"
2295
- msgstr "Haz click aquí para utilizar el plugin de forma anónima"
2296
-
2297
- #: templates/forms/deactivation/retry-skip.php:23
2298
- msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
2299
- msgstr "Es posible que te lo hayas perdido, pero no tienes que compartir ningún dato y puedes solo aceptar %s."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2019 freemius
2
+ # This file is distributed under the same license as the freemius package.
3
+ # Translators:
4
+ # Carlos Longarela <carlos@longarela.eu>, 2017-2018
5
+ msgid ""
6
+ msgstr ""
7
+ "Project-Id-Version: WordPress SDK\n"
8
+ "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
9
+ "POT-Creation-Date: \n"
10
+ "PO-Revision-Date: 2018-11-25 12:57+0000\n"
11
+ "Last-Translator: Carlos Longarela <carlos@longarela.eu>\n"
12
+ "Language: es_ES\n"
13
+ "Language-Team: Spanish (Spain) (http://www.transifex.com/freemius/wordpress-sdk/language/es_ES/)\n"
14
+ "Content-Type: text/plain; charset=UTF-8\n"
15
+ "Content-Transfer-Encoding: 8bit\n"
16
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17
+ "MIME-Version: 1.0\n"
18
+ "X-Poedit-Basepath: ..\n"
19
+ "X-Poedit-KeywordsList: get_text_inline;fs_text_inline;fs_echo_inline;fs_esc_js_inline;fs_esc_attr_inline;fs_esc_attr_echo_inline;fs_esc_html_inline;fs_esc_html_echo_inline;get_text_x_inline:1,2c;fs_text_x_inline:1,2c;fs_echo_x_inline:1,2c;fs_esc_attr_x_inline:1,2c;fs_esc_js_x_inline:1,2c;fs_esc_js_echo_x_inline:1,2c;fs_esc_html_x_inline:1,2c;fs_esc_html_echo_x_inline:1,2c\n"
20
+ "X-Poedit-SearchPath-0: .\n"
21
+ "X-Poedit-SearchPathExcluded-0: *.js\n"
22
+ "X-Poedit-SourceCharset: UTF-8\n"
23
+
24
+ #: includes/class-freemius.php:1688
25
+ msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
26
+ msgstr "Freemius SDK no pudo encontrar el archivo principal del plugin. Por favor contacta a sdk@freemius.com con el error actual."
27
+
28
+ #: includes/class-freemius.php:1690
29
+ msgid "Error"
30
+ msgstr "Error"
31
+
32
+ #: includes/class-freemius.php:2011
33
+ msgid "I found a better %s"
34
+ msgstr "He encontrado un %s mejor"
35
+
36
+ #: includes/class-freemius.php:2013
37
+ msgid "What's the %s's name?"
38
+ msgstr "¿Cuál es el nombre de %s?"
39
+
40
+ #: includes/class-freemius.php:2019
41
+ msgid "It's a temporary %s. I'm just debugging an issue."
42
+ msgstr "Es una %stemporal . Sólo estoy depurando un problema"
43
+
44
+ #: includes/class-freemius.php:2021
45
+ msgid "Deactivation"
46
+ msgstr "Desactivación"
47
+
48
+ #: includes/class-freemius.php:2022
49
+ msgid "Theme Switch"
50
+ msgstr "Cambiar tema"
51
+
52
+ #: includes/class-freemius.php2031, templates/forms/resend-key.php:24
53
+ msgid "Other"
54
+ msgstr "Otra"
55
+
56
+ #: includes/class-freemius.php:2039
57
+ msgid "I no longer need the %s"
58
+ msgstr "Ya no necesito el %s"
59
+
60
+ #: includes/class-freemius.php:2046
61
+ msgid "I only needed the %s for a short period"
62
+ msgstr "Sólo necesitaba la %s por un corto período"
63
+
64
+ #: includes/class-freemius.php:2052
65
+ msgid "The %s broke my site"
66
+ msgstr "%s ha roto mi sitio"
67
+
68
+ #: includes/class-freemius.php:2059
69
+ msgid "The %s suddenly stopped working"
70
+ msgstr "%s de repente ha dejado de funcionar"
71
+
72
+ #: includes/class-freemius.php:2069
73
+ msgid "I can't pay for it anymore"
74
+ msgstr "No puedo pagarlo durante más tiempo"
75
+
76
+ #: includes/class-freemius.php:2071
77
+ msgid "What price would you feel comfortable paying?"
78
+ msgstr "¿Con qué precio te sentirías cómodo pagando?"
79
+
80
+ #: includes/class-freemius.php:2077
81
+ msgid "I don't like to share my information with you"
82
+ msgstr "No me gusta compartir mi información contigo"
83
+
84
+ #: includes/class-freemius.php:2098
85
+ msgid "The %s didn't work"
86
+ msgstr "El %s no funcionaba"
87
+
88
+ #: includes/class-freemius.php:2108
89
+ msgid "I couldn't understand how to make it work"
90
+ msgstr "No entiendo cómo hacerlo funcionar"
91
+
92
+ #: includes/class-freemius.php:2116
93
+ msgid "The %s is great, but I need specific feature that you don't support"
94
+ msgstr "%s es genial, pero necesito una característica que no soportáis"
95
+
96
+ #: includes/class-freemius.php:2118
97
+ msgid "What feature?"
98
+ msgstr "¿Qué característica?"
99
+
100
+ #: includes/class-freemius.php:2122
101
+ msgid "The %s is not working"
102
+ msgstr " El %s no funciona"
103
+
104
+ #: includes/class-freemius.php:2124
105
+ msgid "Kindly share what didn't work so we can fix it for future users..."
106
+ msgstr "Por favor, comparte lo que no funcionó para que podamos arreglarlo para los futuros usuarios..."
107
+
108
+ #: includes/class-freemius.php:2128
109
+ msgid "It's not what I was looking for"
110
+ msgstr "No es lo que estaba buscando"
111
+
112
+ #: includes/class-freemius.php:2130
113
+ msgid "What you've been looking for?"
114
+ msgstr "¿Que has estado buscando?"
115
+
116
+ #: includes/class-freemius.php:2134
117
+ msgid "The %s didn't work as expected"
118
+ msgstr " El %s no funciona como esperaba"
119
+
120
+ #: includes/class-freemius.php:2136
121
+ msgid "What did you expect?"
122
+ msgstr "¿Qué esperas?"
123
+
124
+ #: includes/class-freemius.php2942, templates/debug.php:20
125
+ msgid "Freemius Debug"
126
+ msgstr "Debug Freemius"
127
+
128
+ #: includes/class-freemius.php:3670
129
+ msgid "I don't know what is cURL or how to install it, help me!"
130
+ msgstr "No sé qué es cURL o cómo instalarlo, ¡ayúdame!"
131
+
132
+ #: includes/class-freemius.php:3672
133
+ msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
134
+ msgstr "Nos aseguraremos de ponernos en contacto con tu empresa de alojamiento web y resolver el problema. Recibirás un correo electrónico de seguimiento a %s tan pronto tengamos una actualización."
135
+
136
+ #: includes/class-freemius.php:3679
137
+ msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
138
+ msgstr "Genial, por favor instala cURL y habilítalo en el archivo php.ini. Además, busca la directiva 'disable_functions' en el archivo php.ini y quita cualquier método que comienza con 'curl_'. Para asegurarte de que se activó con éxito, utiliza 'phpinfo()'. Una vez activado, desactiva el %s y reactívalo de nuevo."
139
+
140
+ #: includes/class-freemius.php:3784
141
+ msgid "Yes - do your thing"
142
+ msgstr "Vamos, adelante"
143
+
144
+ #: includes/class-freemius.php:3789
145
+ msgid "No - just deactivate"
146
+ msgstr "No - sólo desactivar"
147
+
148
+ #: includes/class-freemius.php3834, includes/class-freemius.php4343,
149
+ #: includes/class-freemius.php5442, includes/class-freemius.php11545,
150
+ #: includes/class-freemius.php14916, includes/class-freemius.php14968,
151
+ #: includes/class-freemius.php15030, includes/class-freemius.php17263,
152
+ #: includes/class-freemius.php17273, includes/class-freemius.php17882,
153
+ #: includes/class-freemius.php18742, includes/class-freemius.php18857,
154
+ #: includes/class-freemius.php19001, templates/add-ons.php:43
155
+ msgctxt "exclamation"
156
+ msgid "Oops"
157
+ msgstr "Oops"
158
+
159
+ #: includes/class-freemius.php:3903
160
+ msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
161
+ msgstr "¡Gracias por darnos la oportunidad de arreglarlo! Acabamos de enviar un mensaje a nuestro personal técnico. Nos pondremos en contacto contigo tan pronto como tengamos una actualización de %s. Apreciamos tu paciencia."
162
+
163
+ #: includes/class-freemius.php:4340
164
+ msgctxt "addonX cannot run without pluginY"
165
+ msgid "%s cannot run without %s."
166
+ msgstr "%s no se puede ejecutar sin %s."
167
+
168
+ #: includes/class-freemius.php:4341
169
+ msgctxt "addonX cannot run..."
170
+ msgid "%s cannot run without the plugin."
171
+ msgstr "%s no se puede ejecutar sin el plugin."
172
+
173
+ #: includes/class-freemius.php4487, includes/class-freemius.php4512,
174
+ #: includes/class-freemius.php:17953
175
+ msgid "Unexpected API error. Please contact the %s's author with the following error."
176
+ msgstr "Error inesperado del API. Pónte en contacto con el autor de %s indicándole el siguiente error."
177
+
178
+ #: includes/class-freemius.php:5130
179
+ msgid "Premium %s version was successfully activated."
180
+ msgstr "La versión Premium %s ha sido activada con éxito."
181
+
182
+ #: includes/class-freemius.php5142, includes/class-freemius.php:7004
183
+ msgctxt ""
184
+ msgid "W00t"
185
+ msgstr "W00t"
186
+
187
+ #: includes/class-freemius.php:5157
188
+ msgid "You have a %s license."
189
+ msgstr "Tienes una licencia %s."
190
+
191
+ #: includes/class-freemius.php5161, includes/class-freemius.php14337,
192
+ #: includes/class-freemius.php14348, includes/class-freemius.php17177,
193
+ #: includes/class-freemius.php17491, includes/class-freemius.php17557,
194
+ #: includes/class-freemius.php:17707
195
+ msgctxt "interjection expressing joy or exuberance"
196
+ msgid "Yee-haw"
197
+ msgstr "Vaya"
198
+
199
+ #: includes/class-freemius.php:5425
200
+ msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
201
+ msgstr "la prueba gratuita de %s fue cancelada con éxito. Puesto que el complemento es sólo premium se desactivó automáticamente. Si quieres utilizarlo en el futuro, deberás comprar una licencia."
202
+
203
+ #: includes/class-freemius.php:5429
204
+ msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
205
+ msgstr "%s es un complemento único de premium. Tienes que comprar una licencia primero antes de activar el plugin."
206
+
207
+ #: includes/class-freemius.php5438, templates/add-ons.php103,
208
+ #: templates/account/partials/addon.php:288
209
+ msgid "More information about %s"
210
+ msgstr "Más información sobre %s"
211
+
212
+ #: includes/class-freemius.php:5439
213
+ msgid "Purchase License"
214
+ msgstr "Comprar licencia"
215
+
216
+ #: includes/class-freemius.php6372, templates/connect.php:163
217
+ msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
218
+ msgstr "Recibirás un correo de activación para %s en tu buzón en %s. Por favor, asegúrate de hacer clic en el botón de activación en ese correo electrónico para %s."
219
+
220
+ #: includes/class-freemius.php:6376
221
+ msgid "start the trial"
222
+ msgstr "comenzar el período de prueba"
223
+
224
+ #: includes/class-freemius.php6377, templates/connect.php:167
225
+ msgid "complete the install"
226
+ msgstr "completar la instalación"
227
+
228
+ #: includes/class-freemius.php:6490
229
+ msgid "You are just one step away - %s"
230
+ msgstr "Estás a sólo un paso - %s"
231
+
232
+ #: includes/class-freemius.php:6493
233
+ msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
234
+ msgid "Complete \"%s\" Activation Now"
235
+ msgstr "Completar la activación de \"%s\" ahora"
236
+
237
+ #: includes/class-freemius.php:6571
238
+ msgid "We made a few tweaks to the %s, %s"
239
+ msgstr "Hemos realizado algunas optimizaciones al %s, %s"
240
+
241
+ #: includes/class-freemius.php:6575
242
+ msgid "Opt in to make \"%s\" better!"
243
+ msgstr "¡Inscríbite para hacer \"%s\" Mejor!"
244
+
245
+ #: includes/class-freemius.php:7003
246
+ msgid "The upgrade of %s was successfully completed."
247
+ msgstr "La actualización de %s se completó con éxito."
248
+
249
+ #: includes/class-freemius.php8925, includes/class-fs-plugin-updater.php886,
250
+ #: includes/class-fs-plugin-updater.php1081,
251
+ #: includes/class-fs-plugin-updater.php1088,
252
+ #: templates/auto-installation.php:32
253
+ msgid "Add-On"
254
+ msgstr "Complemento"
255
+
256
+ #: includes/class-freemius.php8927, templates/debug.php359,
257
+ #: templates/debug.php:520
258
+ msgid "Plugin"
259
+ msgstr "Plugin"
260
+
261
+ #: includes/class-freemius.php8928, templates/debug.php359,
262
+ #: templates/debug.php520, templates/forms/deactivation/form.php:67
263
+ msgid "Theme"
264
+ msgstr "Tema"
265
+
266
+ #: includes/class-freemius.php:11412
267
+ msgid "Invalid site details collection."
268
+ msgstr "Colección de detalles del sitio no válida."
269
+
270
+ #: includes/class-freemius.php:11532
271
+ msgid "We couldn't find your email address in the system, are you sure it's the right address?"
272
+ msgstr "No podemos encontrar tu dirección de correo electrónico en el sistema, ¿estás seguro de que es la dirección de correo electrónico correcta?"
273
+
274
+ #: includes/class-freemius.php:11534
275
+ msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
276
+ msgstr "No vemos ninguna licencia activa asociada a esa dirección de correo electrónico, ¿estás seguro de que es la dirección de correo electrónico correcta?"
277
+
278
+ #: includes/class-freemius.php:11808
279
+ msgid "Account is pending activation."
280
+ msgstr "La cuenta está pendiente de activación"
281
+
282
+ #: includes/class-freemius.php11920,
283
+ #: templates/forms/premium-versions-upgrade-handler.php:47
284
+ msgid "Buy a license now"
285
+ msgstr "Compra una licencia ahora"
286
+
287
+ #: includes/class-freemius.php11932,
288
+ #: templates/forms/premium-versions-upgrade-handler.php:46
289
+ msgid "Renew your license now"
290
+ msgstr "Renueva tu licencia ahora"
291
+
292
+ #: includes/class-freemius.php:11936
293
+ msgid "%s to access version %s security & feature updates, and support."
294
+ msgstr "%s para acceder a la versión %s de actualizaciones de funciones, seguridad y soporte."
295
+
296
+ #: includes/class-freemius.php:14319
297
+ msgid "%s activation was successfully completed."
298
+ msgstr "%s activación se completó con éxito."
299
+
300
+ #: includes/class-freemius.php:14333
301
+ msgid "Your account was successfully activated with the %s plan."
302
+ msgstr "Tu cuenta se ha activado correctamente con el plan %s."
303
+
304
+ #: includes/class-freemius.php14344, includes/class-freemius.php:17553
305
+ msgid "Your trial has been successfully started."
306
+ msgstr "Tu versión de prueba se ha iniciado con éxito."
307
+
308
+ #: includes/class-freemius.php14914, includes/class-freemius.php14966,
309
+ #: includes/class-freemius.php:15028
310
+ msgid "Couldn't activate %s."
311
+ msgstr "No se puede activar %s."
312
+
313
+ #: includes/class-freemius.php14915, includes/class-freemius.php14967,
314
+ #: includes/class-freemius.php:15029
315
+ msgid "Please contact us with the following message:"
316
+ msgstr "Por favor contáctanos con el siguiente mensaje:"
317
+
318
+ #: includes/class-freemius.php15378, includes/class-freemius.php:19839
319
+ msgid "Upgrade"
320
+ msgstr "Actualizar"
321
+
322
+ #: includes/class-freemius.php:15384
323
+ msgid "Start Trial"
324
+ msgstr "Comenzar el período de prueba"
325
+
326
+ #: includes/class-freemius.php:15386
327
+ msgid "Pricing"
328
+ msgstr "Precio"
329
+
330
+ #: includes/class-freemius.php15448, includes/class-freemius.php:15450
331
+ msgid "Affiliation"
332
+ msgstr "Afiliación"
333
+
334
+ #: includes/class-freemius.php15478, includes/class-freemius.php15480,
335
+ #: templates/account.php150, templates/debug.php:324
336
+ msgid "Account"
337
+ msgstr "Cuenta"
338
+
339
+ #: includes/class-freemius.php15493, includes/class-freemius.php15495,
340
+ #: includes/customizer/class-fs-customizer-support-section.php:60
341
+ msgid "Contact Us"
342
+ msgstr "Contáctanos"
343
+
344
+ #: includes/class-freemius.php15505, includes/class-freemius.php15507,
345
+ #: includes/class-freemius.php19849, templates/account.php100,
346
+ #: templates/account/partials/addon.php:41
347
+ msgid "Add-Ons"
348
+ msgstr "Complementos"
349
+
350
+ #: includes/class-freemius.php:15541
351
+ msgctxt "ASCII arrow left icon"
352
+ msgid "&#x2190;"
353
+ msgstr "&#x2190;"
354
+
355
+ #: includes/class-freemius.php:15541
356
+ msgctxt "ASCII arrow right icon"
357
+ msgid "&#x27a4;"
358
+ msgstr "&#x27a4;"
359
+
360
+ #: includes/class-freemius.php15543, templates/pricing.php:97
361
+ msgctxt "noun"
362
+ msgid "Pricing"
363
+ msgstr "Precio"
364
+
365
+ #: includes/class-freemius.php15756,
366
+ #: includes/customizer/class-fs-customizer-support-section.php:67
367
+ msgid "Support Forum"
368
+ msgstr "Foro de soporte"
369
+
370
+ #: includes/class-freemius.php:16542
371
+ msgid "Your email has been successfully verified - you are AWESOME!"
372
+ msgstr "Tu email ha sido verificado correctamente - ¡Eres IMPRESIONANTE!"
373
+
374
+ #: includes/class-freemius.php:16543
375
+ msgctxt "a positive response"
376
+ msgid "Right on"
377
+ msgstr "Bien hecho"
378
+
379
+ #: includes/class-freemius.php:17168
380
+ msgid "Your %s Add-on plan was successfully upgraded."
381
+ msgstr "Tu complemento %s del plan se actualizó con éxito."
382
+
383
+ #: includes/class-freemius.php:17170
384
+ msgid "%s Add-on was successfully purchased."
385
+ msgstr "El complemento %s ha sido comprado correctamente."
386
+
387
+ #: includes/class-freemius.php:17173
388
+ msgid "Download the latest version"
389
+ msgstr "Descargar la última versión"
390
+
391
+ #: includes/class-freemius.php:17259
392
+ msgctxt "%1s - plugin title, %2s - API domain"
393
+ msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
394
+ msgstr "Tu servidor está bloqueando el acceso a la API de Freemius, que es crucial para la sincronización de licencia %1s. Por favor, ponte en contacto con tu host para que lo añadan a su lista blanca %2s"
395
+
396
+ #: includes/class-freemius.php17262, includes/class-freemius.php17678,
397
+ #: includes/class-freemius.php:17755
398
+ msgid "Error received from the server:"
399
+ msgstr "Error recibido del servidor:"
400
+
401
+ #: includes/class-freemius.php:17272
402
+ msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
403
+ msgstr "Parece que uno de los parámetros de autenticación es incorrecto. Actualiza tu clave pública, clave secreta e ID de usuario e inténtelo de nuevo."
404
+
405
+ #: includes/class-freemius.php17454, includes/class-freemius.php17683,
406
+ #: includes/class-freemius.php17726, includes/class-freemius.php:17829
407
+ msgctxt ""
408
+ msgid "Hmm"
409
+ msgstr "Hmm"
410
+
411
+ #: includes/class-freemius.php:17467
412
+ msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
413
+ msgstr "Parece que todavía estás en el plan %s. Si actualizaste o cambiaste tu plan, probablemente sea un problema de nuestra parte - lo sentimos."
414
+
415
+ #: includes/class-freemius.php17468, templates/account.php102,
416
+ #: templates/add-ons.php134, templates/account/partials/addon.php:43
417
+ msgctxt "trial period"
418
+ msgid "Trial"
419
+ msgstr "Período de Prueba Gratuito"
420
+
421
+ #: includes/class-freemius.php:17473
422
+ msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
423
+ msgstr "He actualizado mi cuenta, pero cuando intento sincronizar la licencia, el plan sigue siendo %s."
424
+
425
+ #: includes/class-freemius.php17477, includes/class-freemius.php:17535
426
+ msgid "Please contact us here"
427
+ msgstr "Contacta aquí con nosotros"
428
+
429
+ #: includes/class-freemius.php:17487
430
+ msgid "Your plan was successfully upgraded."
431
+ msgstr "Tu plan se actualizó con éxito."
432
+
433
+ #: includes/class-freemius.php:17505
434
+ msgid "Your plan was successfully changed to %s."
435
+ msgstr "Tu plan se cambió correctamente a %s."
436
+
437
+ #: includes/class-freemius.php:17521
438
+ msgid "Your license has expired. You can still continue using the free %s forever."
439
+ msgstr "Tu licencia ha caducado. Puedes seguir usando el plan gratuito %s para siempre."
440
+
441
+ #: includes/class-freemius.php:17523
442
+ msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
443
+ msgstr "Tu licencia ha caducado. %1$sActualiza ahora %2$s para continuar usando el %3$s sin interrupciones."
444
+
445
+ #: includes/class-freemius.php:17531
446
+ msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
447
+ msgstr "Tu licencia ha sido cancelada. Si crees que es un error, ponte en contacto con el servicio de asistencia."
448
+
449
+ #: includes/class-freemius.php:17544
450
+ msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
451
+ msgstr "Tu licencia ha caducado. Todavía puedes seguir usando todas las funciones de %s, pero tendrás que renovar tu licencia para seguir recibiendo actualizaciones y soporte."
452
+
453
+ #: includes/class-freemius.php:17567
454
+ msgid "Your free trial has expired. You can still continue using all our free features."
455
+ msgstr "Tu período de prueba ha caducado. Todavía puedes seguir usando todas nuestras funciones gratuitas."
456
+
457
+ #: includes/class-freemius.php:17569
458
+ msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
459
+ msgstr "Tu período de prueba ha caducado. %1$sActualiza ahora %2$s para continuar usando el %3$s sin interrupciones."
460
+
461
+ #: includes/class-freemius.php:17674
462
+ msgid "It looks like the license could not be activated."
463
+ msgstr "Parece que la licencia no se pudo activar."
464
+
465
+ #: includes/class-freemius.php:17704
466
+ msgid "Your license was successfully activated."
467
+ msgstr "Tu licencia fue activada correctamente."
468
+
469
+ #: includes/class-freemius.php:17730
470
+ msgid "It looks like your site currently doesn't have an active license."
471
+ msgstr "Parece que tu sitio actualmente no tiene una licencia activa."
472
+
473
+ #: includes/class-freemius.php:17754
474
+ msgid "It looks like the license deactivation failed."
475
+ msgstr "Parece que la desactivación de licencia ha fallado."
476
+
477
+ #: includes/class-freemius.php:17782
478
+ msgid "Your license was successfully deactivated, you are back to the %s plan."
479
+ msgstr "Tu licencia fue desactivada correctamente, has vuelto al plan %s."
480
+
481
+ #: includes/class-freemius.php:17783
482
+ msgid "O.K"
483
+ msgstr "O.K"
484
+
485
+ #: includes/class-freemius.php:17836
486
+ msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
487
+ msgstr "Parece que estamos teniendo algún problema temporal con tu cancelación de la suscripción. Vuelve a intentarlo en unos minutos."
488
+
489
+ #: includes/class-freemius.php:17845
490
+ msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
491
+ msgstr "Tu suscripción ha sido cancelada correctamente. Tu %s licencia del plan caducará en %s."
492
+
493
+ #: includes/class-freemius.php:17887
494
+ msgid "You are already running the %s in a trial mode."
495
+ msgstr "Estás ejecutando %s en modo de prueba."
496
+
497
+ #: includes/class-freemius.php:17898
498
+ msgid "You already utilized a trial before."
499
+ msgstr "Ya utilizaste un período de prueba antes."
500
+
501
+ #: includes/class-freemius.php:17912
502
+ msgid "Plan %s do not exist, therefore, can't start a trial."
503
+ msgstr "El plan %s no existe, por lo tanto, no puedes comenzar un período de prueba."
504
+
505
+ #: includes/class-freemius.php:17923
506
+ msgid "Plan %s does not support a trial period."
507
+ msgstr "El plan %s no admite un período de prueba."
508
+
509
+ #: includes/class-freemius.php:17934
510
+ msgid "None of the %s's plans supports a trial period."
511
+ msgstr "Ninguno de los planes de %s soportan un período de prueba."
512
+
513
+ #: includes/class-freemius.php:17984
514
+ msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
515
+ msgstr "Parece que ya no estás en modo de prueba, así que no hay nada que cancelar :)"
516
+
517
+ #: includes/class-freemius.php:18020
518
+ msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
519
+ msgstr "Parece que estamos teniendo algún problema temporal con tu cancelación de prueba. Vuelve a intentarlo en unos minutos."
520
+
521
+ #: includes/class-freemius.php:18039
522
+ msgid "Your %s free trial was successfully cancelled."
523
+ msgstr "Tu prueba gratuita de %s fue cancelada con éxito."
524
+
525
+ #: includes/class-freemius.php:18346
526
+ msgid "Version %s was released."
527
+ msgstr "La versión %s se ha lanzado."
528
+
529
+ #: includes/class-freemius.php:18346
530
+ msgid "Please download %s."
531
+ msgstr "Por favor descarga %s."
532
+
533
+ #: includes/class-freemius.php:18353
534
+ msgid "the latest %s version here"
535
+ msgstr "la última versión %s aquí"
536
+
537
+ #: includes/class-freemius.php:18358
538
+ msgid "New"
539
+ msgstr "Nuevo"
540
+
541
+ #: includes/class-freemius.php:18363
542
+ msgid "Seems like you got the latest release."
543
+ msgstr "Parece que tienes la última versión."
544
+
545
+ #: includes/class-freemius.php:18364
546
+ msgid "You are all good!"
547
+ msgstr "¡Está todo listo!"
548
+
549
+ #: includes/class-freemius.php:18632
550
+ msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
551
+ msgstr "El correo de verificación se acaba de enviar a %s. Si no puedes encontrarlo después de 5 min, comprueba tu carpeta de spam."
552
+
553
+ #: includes/class-freemius.php:18769
554
+ msgid "Site successfully opted in."
555
+ msgstr "Sitio dado de alta correctamente."
556
+
557
+ #: includes/class-freemius.php18770, includes/class-freemius.php:19581
558
+ msgid "Awesome"
559
+ msgstr "Increíble"
560
+
561
+ #: includes/class-freemius.php18786, templates/forms/optout.php:32
562
+ msgid "We appreciate your help in making the %s better by letting us track some usage data."
563
+ msgstr "Agradecemos tu ayuda para mejorar %s y por permitirnos rastrear algunos datos de uso."
564
+
565
+ #: includes/class-freemius.php:18787
566
+ msgid "Thank you!"
567
+ msgstr "¡Gracias!"
568
+
569
+ #: includes/class-freemius.php:18794
570
+ msgid "We will no longer be sending any usage data of %s on %s to %s."
571
+ msgstr "No continuaremos enviando datos de uso de %s en %s a %s."
572
+
573
+ #: includes/class-freemius.php:18923
574
+ msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
575
+ msgstr "Comprueba tu buzón de correo, debes recibir un correo electrónico a través de %s para confirmar el cambio de propiedad. Por razones de seguridad, debes confirmar el cambio dentro de los próximos 15 min. Si no puedes encontrar el correo electrónico, comprueba tu carpeta de correo no deseado."
576
+
577
+ #: includes/class-freemius.php:18929
578
+ msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
579
+ msgstr "Gracias por confirmar el cambio de propiedad. Se envió un correo electrónico a %s para su aprobación final."
580
+
581
+ #: includes/class-freemius.php:18934
582
+ msgid "%s is the new owner of the account."
583
+ msgstr "%s es el nuevo dueño de la cuenta."
584
+
585
+ #: includes/class-freemius.php:18936
586
+ msgctxt "as congratulations"
587
+ msgid "Congrats"
588
+ msgstr "Felicidades"
589
+
590
+ #: includes/class-freemius.php:18956
591
+ msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
592
+ msgstr "Lo sentimos, no podemos completar la actualización de correo electrónico. Ya hay registrado otro usuario con esa dirección de correo electrónico."
593
+
594
+ #: includes/class-freemius.php:18957
595
+ msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
596
+ msgstr "Si deseas renunciar a la titularidad de la cuenta de %s a %s haz clic en el botón de cambio de titularidad."
597
+
598
+ #: includes/class-freemius.php:18964
599
+ msgid "Change Ownership"
600
+ msgstr "Cambiar propietario"
601
+
602
+ #: includes/class-freemius.php:18972
603
+ msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
604
+ msgstr "Se actualizó correctamente tu correo electrónico. Recibirás un correo electrónico con las instrucciones de confirmación en unos momentos."
605
+
606
+ #: includes/class-freemius.php:18984
607
+ msgid "Please provide your full name."
608
+ msgstr "Por favor, dinos tu nombre completo."
609
+
610
+ #: includes/class-freemius.php:18989
611
+ msgid "Your name was successfully updated."
612
+ msgstr "Tu nombre fue actualizado correctamente."
613
+
614
+ #: includes/class-freemius.php:19050
615
+ msgid "You have successfully updated your %s."
616
+ msgstr "Has actualizado correctamente tu %s."
617
+
618
+ #: includes/class-freemius.php:19190
619
+ msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
620
+ msgstr "Sólo déjanos informarte que la información de complementos de %s se está extrayendo de un servidor externo."
621
+
622
+ #: includes/class-freemius.php:19191
623
+ msgctxt "advance notice of something that will need attention."
624
+ msgid "Heads up"
625
+ msgstr "Atención"
626
+
627
+ #: includes/class-freemius.php:19621
628
+ msgctxt "exclamation"
629
+ msgid "Hey"
630
+ msgstr "Hey"
631
+
632
+ #: includes/class-freemius.php:19621
633
+ msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
634
+ msgstr "¿Qué te pareció %s hasta ahora? Prueba todas nuestras funciones premium de %s con una prueba gratuita de % d-días."
635
+
636
+ #: includes/class-freemius.php:19629
637
+ msgid "No commitment for %s days - cancel anytime!"
638
+ msgstr "Sin compromiso por %s días - ¡cancelar en cualquier momento!"
639
+
640
+ #: includes/class-freemius.php:19630
641
+ msgid "No credit card required"
642
+ msgstr "No se necesita tarjeta de crédito"
643
+
644
+ #: includes/class-freemius.php19637, templates/forms/trial-start.php:53
645
+ msgctxt "call to action"
646
+ msgid "Start free trial"
647
+ msgstr "Comenzar el período de prueba gratuito"
648
+
649
+ #: includes/class-freemius.php:19714
650
+ msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
651
+ msgstr "Hey, ¿sabías que %s tiene un programa de afiliados? ¡Si te gusta %s puedes convertirte en nuestro embajador y ganar dinero!"
652
+
653
+ #: includes/class-freemius.php:19723
654
+ msgid "Learn more"
655
+ msgstr "Saber más"
656
+
657
+ #: includes/class-freemius.php19873, templates/account.php406,
658
+ #: templates/account.php509, templates/connect.php171,
659
+ #: templates/connect.php421, templates/forms/license-activation.php24,
660
+ #: templates/account/partials/addon.php:235
661
+ msgid "Activate License"
662
+ msgstr "Activar licencia"
663
+
664
+ #: includes/class-freemius.php19874, templates/account.php469,
665
+ #: templates/account.php508, templates/account/partials/site.php:256
666
+ msgid "Change License"
667
+ msgstr "Cambiar licencia"
668
+
669
+ #: includes/class-freemius.php19956, templates/account/partials/site.php:161
670
+ msgid "Opt Out"
671
+ msgstr "Darse de baja"
672
+
673
+ #: includes/class-freemius.php19958, includes/class-freemius.php19963,
674
+ #: templates/account/partials/site.php43,
675
+ #: templates/account/partials/site.php:161
676
+ msgid "Opt In"
677
+ msgstr "Inscribirse"
678
+
679
+ #: includes/class-freemius.php:20187
680
+ msgid " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s"
681
+ msgstr "La versión de pago de %1s ya está instalada. Actívala para comenzar a beneficiarte de las funciones de %2s. %3s"
682
+
683
+ #: includes/class-freemius.php:20195
684
+ msgid "Activate %s features"
685
+ msgstr "Activar características %s"
686
+
687
+ #: includes/class-freemius.php:20208
688
+ msgid "Please follow these steps to complete the upgrade"
689
+ msgstr "Por favor, sigue estos pasos para completar la actualización"
690
+
691
+ #: includes/class-freemius.php:20212
692
+ msgid "Download the latest %s version"
693
+ msgstr "Descargar la última versión %s"
694
+
695
+ #: includes/class-freemius.php:20216
696
+ msgid "Upload and activate the downloaded version"
697
+ msgstr "Cargar y activar la versión descargada"
698
+
699
+ #: includes/class-freemius.php:20218
700
+ msgid "How to upload and activate?"
701
+ msgstr "¿Cómo subirlo y activarlo?"
702
+
703
+ #: includes/class-freemius.php:20352
704
+ msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
705
+ msgstr "%sClick aquí %s para elegir los sitios sobre los que te gustaría activar la licencia."
706
+
707
+ #: includes/class-freemius.php:20513
708
+ msgid "Auto installation only works for opted-in users."
709
+ msgstr "La instalación automática sólo funciona para usuarios que aceptaron."
710
+
711
+ #: includes/class-freemius.php20523, includes/class-freemius.php20556,
712
+ #: includes/class-fs-plugin-updater.php1060,
713
+ #: includes/class-fs-plugin-updater.php:1074
714
+ msgid "Invalid module ID."
715
+ msgstr "Id de módulo no válido."
716
+
717
+ #: includes/class-freemius.php20532, includes/class-fs-plugin-updater.php:1096
718
+ msgid "Premium version already active."
719
+ msgstr "Versión premium ya activa."
720
+
721
+ #: includes/class-freemius.php:20539
722
+ msgid "You do not have a valid license to access the premium version."
723
+ msgstr "No tienes una licencia válida para acceder a la versión premium."
724
+
725
+ #: includes/class-freemius.php:20546
726
+ msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
727
+ msgstr "El plugin es un \"Serviceware\" lo que significa que no tiene una versión de código premium."
728
+
729
+ #: includes/class-freemius.php20564, includes/class-fs-plugin-updater.php:1095
730
+ msgid "Premium add-on version already installed."
731
+ msgstr "Versión del complemento premium ya instalada."
732
+
733
+ #: includes/class-freemius.php:20909
734
+ msgid "View paid features"
735
+ msgstr "Ver las funciones de pago"
736
+
737
+ #: includes/class-freemius.php:21229
738
+ msgid "Thank you so much for using %s and its add-ons!"
739
+ msgstr "¡Muchas gracias por utilizar %s y sus complementos!"
740
+
741
+ #: includes/class-freemius.php:21230
742
+ msgid "Thank you so much for using %s!"
743
+ msgstr "¡Muchas gracias por utilizar %s!"
744
+
745
+ #: includes/class-freemius.php:21236
746
+ msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
747
+ msgstr "Ya has optado por nuestro seguimiento de uso, lo que nos ayuda a seguir mejorando %s."
748
+
749
+ #: includes/class-freemius.php:21240
750
+ msgid "Thank you so much for using our products!"
751
+ msgstr "¡Muchas gracias por utilizar nuestros productos!"
752
+
753
+ #: includes/class-freemius.php:21241
754
+ msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
755
+ msgstr "Ya has optado por nuestro seguimiento de uso, lo que nos ayuda a seguir mejorando."
756
+
757
+ #: includes/class-freemius.php:21260
758
+ msgid "%s and its add-ons"
759
+ msgstr "%s y sus complementos"
760
+
761
+ #: includes/class-freemius.php:21269
762
+ msgid "Products"
763
+ msgstr "Productos"
764
+
765
+ #: includes/class-freemius.php21276, templates/connect.php:272
766
+ msgid "Yes"
767
+ msgstr "Si"
768
+
769
+ #: includes/class-freemius.php21277, templates/connect.php:273
770
+ msgid "send me security & feature updates, educational content and offers."
771
+ msgstr "envíame actualizaciones de seguridad y nuevas funcionalidades, contenido educativo y ofertas."
772
+
773
+ #: includes/class-freemius.php21278, templates/connect.php:278
774
+ msgid "No"
775
+ msgstr "No"
776
+
777
+ #: includes/class-freemius.php21280, templates/connect.php:280
778
+ msgid "do %sNOT%s send me security & feature updates, educational content and offers."
779
+ msgstr "%sNO%s me envíes actualizaciones de seguridad y nuevas funcionalidades, contenido educativo y ofertas."
780
+
781
+ #: includes/class-freemius.php:21290
782
+ msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂"
783
+ msgstr "Debido a la nueva %s Regulación General de Protección de Datos de la UE (GDPR)%s los requisitos de conformidad nos requieren que nos debes dar tu consentimiento explícito, de nuevo, confirmando que estás de acuerdo 🙂"
784
+
785
+ #: includes/class-freemius.php21292, templates/connect.php:287
786
+ msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
787
+ msgstr "Indica si deseas que te contactemos para actualizaciones de seguridad y nuevas funciones, contenido educativo y ofertas ocasionales:"
788
+
789
+ #: includes/class-freemius.php:21574
790
+ msgid "License key is empty."
791
+ msgstr "La clave de licencia está vacía."
792
+
793
+ #: includes/class-fs-plugin-updater.php184,
794
+ #: templates/forms/premium-versions-upgrade-handler.php:57
795
+ msgid "Renew license"
796
+ msgstr "Renovar la licencia"
797
+
798
+ #: includes/class-fs-plugin-updater.php189,
799
+ #: templates/forms/premium-versions-upgrade-handler.php:58
800
+ msgid "Buy license"
801
+ msgstr "Comprar licencia"
802
+
803
+ #: includes/class-fs-plugin-updater.php:278
804
+ msgid "There is a %s of %s available."
805
+ msgstr "Hay una %s de %s disponible."
806
+
807
+ #: includes/class-fs-plugin-updater.php:282
808
+ msgid "new version"
809
+ msgstr "nueva versión"
810
+
811
+ #: includes/class-fs-plugin-updater.php:305
812
+ msgid "Important Upgrade Notice:"
813
+ msgstr "Aviso importante de actualización:"
814
+
815
+ #: includes/class-fs-plugin-updater.php:1125
816
+ msgid "Installing plugin: %s"
817
+ msgstr "Instalando plugin: %s"
818
+
819
+ #: includes/class-fs-plugin-updater.php:1166
820
+ msgid "Unable to connect to the filesystem. Please confirm your credentials."
821
+ msgstr "No es posible conectarse al sistema de archivos. Por favor, confirma tus credenciales."
822
+
823
+ #: includes/class-fs-plugin-updater.php:1348
824
+ msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
825
+ msgstr "El paquete de plugin remoto no contiene una carpeta con el Slug deseado y el cambio de nombre no funcionó."
826
+
827
+ #: includes/fs-plugin-info-dialog.php369,
828
+ #: templates/account/partials/addon.php:292
829
+ msgctxt "verb"
830
+ msgid "Purchase"
831
+ msgstr "Comprar"
832
+
833
+ #: includes/fs-plugin-info-dialog.php:372
834
+ msgid "Start my free %s"
835
+ msgstr "Comenzar mi período gratuito de %s"
836
+
837
+ #: includes/fs-plugin-info-dialog.php:413
838
+ msgid "Install Free Version Now"
839
+ msgstr "Instalar la versión gratuita ahora"
840
+
841
+ #: includes/fs-plugin-info-dialog.php414, templates/auto-installation.php111,
842
+ #: templates/account/partials/addon.php272,
843
+ #: templates/account/partials/addon.php:322
844
+ msgid "Install Now"
845
+ msgstr "Instalar ahora"
846
+
847
+ #: includes/fs-plugin-info-dialog.php:425
848
+ msgctxt "as download latest version"
849
+ msgid "Download Latest Free Version"
850
+ msgstr "Descargar la última versión gratuita"
851
+
852
+ #: includes/fs-plugin-info-dialog.php426, templates/account.php80,
853
+ #: templates/account/partials/addon.php:21
854
+ msgctxt "as download latest version"
855
+ msgid "Download Latest"
856
+ msgstr "Descargar la última"
857
+
858
+ #: includes/fs-plugin-info-dialog.php:436
859
+ msgid "Install Free Version Update Now"
860
+ msgstr "Instalar la actualización gratuita ahora"
861
+
862
+ #: includes/fs-plugin-info-dialog.php437, templates/account.php:460
863
+ msgid "Install Update Now"
864
+ msgstr "Instalar actualización ahora"
865
+
866
+ #: includes/fs-plugin-info-dialog.php:448
867
+ msgid "Newer Free Version (%s) Installed"
868
+ msgstr "Versión gratuita más reciente (%s) instalada"
869
+
870
+ #: includes/fs-plugin-info-dialog.php:449
871
+ msgid "Newer Version (%s) Installed"
872
+ msgstr "Versión más reciente (%s) instalada"
873
+
874
+ #: includes/fs-plugin-info-dialog.php:457
875
+ msgid "Latest Free Version Installed"
876
+ msgstr "Última versión gratuita instalada"
877
+
878
+ #: includes/fs-plugin-info-dialog.php:458
879
+ msgid "Latest Version Installed"
880
+ msgstr "Última versión instalada"
881
+
882
+ #: includes/fs-plugin-info-dialog.php:613
883
+ msgctxt "Plugin installer section title"
884
+ msgid "Description"
885
+ msgstr "Descripción"
886
+
887
+ #: includes/fs-plugin-info-dialog.php:614
888
+ msgctxt "Plugin installer section title"
889
+ msgid "Installation"
890
+ msgstr "Instalación"
891
+
892
+ #: includes/fs-plugin-info-dialog.php:615
893
+ msgctxt "Plugin installer section title"
894
+ msgid "FAQ"
895
+ msgstr "FAQ"
896
+
897
+ #: includes/fs-plugin-info-dialog.php616,
898
+ #: templates/plugin-info/description.php:55
899
+ msgid "Screenshots"
900
+ msgstr "Capturas de pantalla"
901
+
902
+ #: includes/fs-plugin-info-dialog.php:617
903
+ msgctxt "Plugin installer section title"
904
+ msgid "Changelog"
905
+ msgstr "Registro de cambios"
906
+
907
+ #: includes/fs-plugin-info-dialog.php:618
908
+ msgctxt "Plugin installer section title"
909
+ msgid "Reviews"
910
+ msgstr "Valoraciones"
911
+
912
+ #: includes/fs-plugin-info-dialog.php:619
913
+ msgctxt "Plugin installer section title"
914
+ msgid "Other Notes"
915
+ msgstr "Otras notas"
916
+
917
+ #: includes/fs-plugin-info-dialog.php:634
918
+ msgctxt "Plugin installer section title"
919
+ msgid "Features & Pricing"
920
+ msgstr "Características y precios"
921
+
922
+ #: includes/fs-plugin-info-dialog.php:644
923
+ msgid "Plugin Install"
924
+ msgstr "Instalar plugin"
925
+
926
+ #: includes/fs-plugin-info-dialog.php:716
927
+ msgctxt "e.g. Professional Plan"
928
+ msgid "%s Plan"
929
+ msgstr "Plan %s"
930
+
931
+ #: includes/fs-plugin-info-dialog.php:742
932
+ msgctxt "e.g. the best product"
933
+ msgid "Best"
934
+ msgstr "El mejor"
935
+
936
+ #: includes/fs-plugin-info-dialog.php748,
937
+ #: includes/fs-plugin-info-dialog.php:768
938
+ msgctxt "as every month"
939
+ msgid "Monthly"
940
+ msgstr "Mensual"
941
+
942
+ #: includes/fs-plugin-info-dialog.php:751
943
+ msgctxt "as once a year"
944
+ msgid "Annual"
945
+ msgstr "Anual"
946
+
947
+ #: includes/fs-plugin-info-dialog.php:754
948
+ msgid "Lifetime"
949
+ msgstr "Permanente"
950
+
951
+ #: includes/fs-plugin-info-dialog.php768,
952
+ #: includes/fs-plugin-info-dialog.php770,
953
+ #: includes/fs-plugin-info-dialog.php:772
954
+ msgctxt "e.g. billed monthly"
955
+ msgid "Billed %s"
956
+ msgstr "Facturado %s"
957
+
958
+ #: includes/fs-plugin-info-dialog.php:770
959
+ msgctxt "as once a year"
960
+ msgid "Annually"
961
+ msgstr "Anualmente"
962
+
963
+ #: includes/fs-plugin-info-dialog.php:772
964
+ msgctxt "as once a year"
965
+ msgid "Once"
966
+ msgstr "Una vez"
967
+
968
+ #: includes/fs-plugin-info-dialog.php:778
969
+ msgid "Single Site License"
970
+ msgstr "Licencia para un único sitio"
971
+
972
+ #: includes/fs-plugin-info-dialog.php:780
973
+ msgid "Unlimited Licenses"
974
+ msgstr "Licencias ilimitadas"
975
+
976
+ #: includes/fs-plugin-info-dialog.php:782
977
+ msgid "Up to %s Sites"
978
+ msgstr "Hasta %s sitios"
979
+
980
+ #: includes/fs-plugin-info-dialog.php792,
981
+ #: templates/plugin-info/features.php:82
982
+ msgctxt "as monthly period"
983
+ msgid "mo"
984
+ msgstr "me"
985
+
986
+ #: includes/fs-plugin-info-dialog.php799,
987
+ #: templates/plugin-info/features.php:80
988
+ msgctxt "as annual period"
989
+ msgid "year"
990
+ msgstr "año"
991
+
992
+ #: includes/fs-plugin-info-dialog.php:853
993
+ msgctxt "noun"
994
+ msgid "Price"
995
+ msgstr "Precio"
996
+
997
+ #: includes/fs-plugin-info-dialog.php:901
998
+ msgid "Save %s"
999
+ msgstr "Guardar %s"
1000
+
1001
+ #: includes/fs-plugin-info-dialog.php:911
1002
+ msgid "No commitment for %s - cancel anytime"
1003
+ msgstr "Sin compromiso para %s - cancelar en cualquier momento"
1004
+
1005
+ #: includes/fs-plugin-info-dialog.php:914
1006
+ msgid "After your free %s, pay as little as %s"
1007
+ msgstr "Después de su período gratuito %s, pague sólo %s"
1008
+
1009
+ #: includes/fs-plugin-info-dialog.php:925
1010
+ msgid "Details"
1011
+ msgstr "Detalles"
1012
+
1013
+ #: includes/fs-plugin-info-dialog.php929, templates/account.php91,
1014
+ #: templates/debug.php201, templates/debug.php238, templates/debug.php452,
1015
+ #: templates/account/partials/addon.php:32
1016
+ msgctxt "product version"
1017
+ msgid "Version"
1018
+ msgstr "Versión"
1019
+
1020
+ #: includes/fs-plugin-info-dialog.php:936
1021
+ msgctxt "as the plugin author"
1022
+ msgid "Author"
1023
+ msgstr "Autor"
1024
+
1025
+ #: includes/fs-plugin-info-dialog.php:943
1026
+ msgid "Last Updated"
1027
+ msgstr "Última actualización"
1028
+
1029
+ #: includes/fs-plugin-info-dialog.php948, templates/account.php:376
1030
+ msgctxt "x-ago"
1031
+ msgid "%s ago"
1032
+ msgstr "hace %s"
1033
+
1034
+ #: includes/fs-plugin-info-dialog.php:957
1035
+ msgid "Requires WordPress Version"
1036
+ msgstr "Necesita la versión de WordPress"
1037
+
1038
+ #: includes/fs-plugin-info-dialog.php:958
1039
+ msgid "%s or higher"
1040
+ msgstr "%s o mayor"
1041
+
1042
+ #: includes/fs-plugin-info-dialog.php:965
1043
+ msgid "Compatible up to"
1044
+ msgstr "Compatible hasta"
1045
+
1046
+ #: includes/fs-plugin-info-dialog.php:973
1047
+ msgid "Downloaded"
1048
+ msgstr "Descargado"
1049
+
1050
+ #: includes/fs-plugin-info-dialog.php:977
1051
+ msgid "%s time"
1052
+ msgstr "% vez"
1053
+
1054
+ #: includes/fs-plugin-info-dialog.php:979
1055
+ msgid "%s times"
1056
+ msgstr "%s veces"
1057
+
1058
+ #: includes/fs-plugin-info-dialog.php:989
1059
+ msgid "WordPress.org Plugin Page"
1060
+ msgstr "Página del plugin en WordPress.org"
1061
+
1062
+ #: includes/fs-plugin-info-dialog.php:997
1063
+ msgid "Plugin Homepage"
1064
+ msgstr "Página web del plugin"
1065
+
1066
+ #: includes/fs-plugin-info-dialog.php1005,
1067
+ #: includes/fs-plugin-info-dialog.php:1087
1068
+ msgid "Donate to this plugin"
1069
+ msgstr "Donar a este plugin"
1070
+
1071
+ #: includes/fs-plugin-info-dialog.php:1012
1072
+ msgid "Average Rating"
1073
+ msgstr "Calificación media"
1074
+
1075
+ #: includes/fs-plugin-info-dialog.php:1019
1076
+ msgid "based on %s"
1077
+ msgstr "basado en %s"
1078
+
1079
+ #: includes/fs-plugin-info-dialog.php:1023
1080
+ msgid "%s rating"
1081
+ msgstr "%s calificación"
1082
+
1083
+ #: includes/fs-plugin-info-dialog.php:1025
1084
+ msgid "%s ratings"
1085
+ msgstr "%s calificaciones"
1086
+
1087
+ #: includes/fs-plugin-info-dialog.php:1040
1088
+ msgid "%s star"
1089
+ msgstr "%s estrella"
1090
+
1091
+ #: includes/fs-plugin-info-dialog.php:1042
1092
+ msgid "%s stars"
1093
+ msgstr "%s estrellas"
1094
+
1095
+ #: includes/fs-plugin-info-dialog.php:1053
1096
+ msgid "Click to see reviews that provided a rating of %s"
1097
+ msgstr "Haz clic para ver los comentarios con una valoración de %s"
1098
+
1099
+ #: includes/fs-plugin-info-dialog.php:1066
1100
+ msgid "Contributors"
1101
+ msgstr "Colaboradores"
1102
+
1103
+ #: includes/fs-plugin-info-dialog.php1095,
1104
+ #: includes/fs-plugin-info-dialog.php:1097
1105
+ msgid "Warning"
1106
+ msgstr "Atencion"
1107
+
1108
+ #: includes/fs-plugin-info-dialog.php:1095
1109
+ msgid "This plugin has not been tested with your current version of WordPress."
1110
+ msgstr "Este plugin no ha sido probado con tu versión actual de WordPress."
1111
+
1112
+ #: includes/fs-plugin-info-dialog.php:1097
1113
+ msgid "This plugin has not been marked as compatible with your version of WordPress."
1114
+ msgstr "Este puglin no ha sido marcado como compatible con tu versión de WordPress."
1115
+
1116
+ #: includes/fs-plugin-info-dialog.php:1116
1117
+ msgid "Paid add-on must be deployed to Freemius."
1118
+ msgstr "El complemento de pago se debe implementar en Freemius."
1119
+
1120
+ #: includes/fs-plugin-info-dialog.php:1117
1121
+ msgid "Add-on must be deployed to WordPress.org or Freemius."
1122
+ msgstr "El complemento debe implementarse en WordPress.org o en Freemius."
1123
+
1124
+ #: templates/account.php81, templates/forms/subscription-cancellation.php96,
1125
+ #: templates/account/partials/addon.php22,
1126
+ #: templates/account/partials/site.php:295
1127
+ msgid "Downgrading your plan"
1128
+ msgstr "Bajando tu plan"
1129
+
1130
+ #: templates/account.php82, templates/forms/subscription-cancellation.php97,
1131
+ #: templates/account/partials/addon.php23,
1132
+ #: templates/account/partials/site.php:296
1133
+ msgid "Cancelling the subscription"
1134
+ msgstr "Cancelando la suscripción"
1135
+
1136
+ #. translators: %1s: Either 'Downgrading your plan' or 'Cancelling the
1137
+ #. subscription'
1138
+ #: templates/account.php84, templates/forms/subscription-cancellation.php99,
1139
+ #: templates/account/partials/addon.php25,
1140
+ #: templates/account/partials/site.php:298
1141
+ msgid "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s."
1142
+ msgstr "%1s detendrá inmediatamente todos los pagos recurrentes futuros y tu %s licencia del plan caducará en %s."
1143
+
1144
+ #: templates/account.php85, templates/forms/subscription-cancellation.php100,
1145
+ #: templates/account/partials/addon.php26,
1146
+ #: templates/account/partials/site.php:299
1147
+ msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price."
1148
+ msgstr "Ten en cuenta que no podremos abaratar los precios desactualizados para renovaciones/nuevas suscripciones después de una cancelación. Si eliges renovar la suscripción manualmente en el futuro, después de un aumento de precio, que generalmente ocurre una vez al año, se te cobrará el precio actualizado."
1149
+
1150
+ #: templates/account.php86, templates/forms/subscription-cancellation.php106,
1151
+ #: templates/account/partials/addon.php:27
1152
+ msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
1153
+ msgstr "La cancelación del período de prueba bloqueará inmediatamente el acceso a todas las funciones premium. ¿Estás seguro?"
1154
+
1155
+ #: templates/account.php87, templates/forms/subscription-cancellation.php101,
1156
+ #: templates/account/partials/addon.php28,
1157
+ #: templates/account/partials/site.php:300
1158
+ msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support."
1159
+ msgstr "Todavía puedes disfrutar de todas las funciones de %s pero no tendrás acceso a soporte y actualizaciones de %s."
1160
+
1161
+ #: templates/account.php88, templates/forms/subscription-cancellation.php102,
1162
+ #: templates/account/partials/addon.php29,
1163
+ #: templates/account/partials/site.php:301
1164
+ msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
1165
+ msgstr "Una vez que caduque tu licencia todavía puedes utilizar la versión gratuita pero NO tendrás acceso a las funciones de %s."
1166
+
1167
+ #. translators: %s: Plan title (e.g. "Professional")
1168
+ #: templates/account.php90,
1169
+ #: templates/account/partials/activate-license-button.php31,
1170
+ #: templates/account/partials/addon.php:31
1171
+ msgid "Activate %s Plan"
1172
+ msgstr "Activar plan %s"
1173
+
1174
+ #. translators: %s: Time period (e.g. Auto renews in "2 months")
1175
+ #: templates/account.php93, templates/account/partials/addon.php34,
1176
+ #: templates/account/partials/site.php:275
1177
+ msgid "Auto renews in %s"
1178
+ msgstr "Auto renovaciones en %s"
1179
+
1180
+ #. translators: %s: Time period (e.g. Expires in "2 months")
1181
+ #: templates/account.php95, templates/account/partials/addon.php36,
1182
+ #: templates/account/partials/site.php:277
1183
+ msgid "Expires in %s"
1184
+ msgstr "Caduca en %s"
1185
+
1186
+ #: templates/account.php96, templates/account/partials/addon.php:37
1187
+ msgctxt "as synchronize license"
1188
+ msgid "Sync License"
1189
+ msgstr "Sincronizar licencia"
1190
+
1191
+ #: templates/account.php97, templates/account/partials/addon.php:38
1192
+ msgid "Cancel Trial"
1193
+ msgstr "Cancelar período de prueba"
1194
+
1195
+ #: templates/account.php98, templates/account/partials/addon.php:39
1196
+ msgid "Change Plan"
1197
+ msgstr "Cambiar Plan"
1198
+
1199
+ #: templates/account.php99, templates/account/partials/addon.php:40
1200
+ msgctxt "verb"
1201
+ msgid "Upgrade"
1202
+ msgstr "Actualizar"
1203
+
1204
+ #: templates/account.php101, templates/account/partials/addon.php42,
1205
+ #: templates/account/partials/site.php:302
1206
+ msgctxt "verb"
1207
+ msgid "Downgrade"
1208
+ msgstr "Degradar"
1209
+
1210
+ #: templates/account.php103, templates/add-ons.php130,
1211
+ #: templates/plugin-info/features.php72,
1212
+ #: templates/account/partials/addon.php44,
1213
+ #: templates/account/partials/site.php:31
1214
+ msgid "Free"
1215
+ msgstr "Gratis"
1216
+
1217
+ #: templates/account.php104, templates/account/partials/addon.php:45
1218
+ msgid "Activate"
1219
+ msgstr "Activar"
1220
+
1221
+ #: templates/account.php105, templates/debug.php371,
1222
+ #: includes/customizer/class-fs-customizer-upsell-control.php106,
1223
+ #: templates/account/partials/addon.php:46
1224
+ msgctxt "as product pricing plan"
1225
+ msgid "Plan"
1226
+ msgstr "Plan"
1227
+
1228
+ #: templates/account.php:158
1229
+ msgid "Free Trial"
1230
+ msgstr "Período de prueba gratuito"
1231
+
1232
+ #: templates/account.php:169
1233
+ msgid "Account Details"
1234
+ msgstr "Detalles de la cuenta"
1235
+
1236
+ #: templates/account.php:179
1237
+ msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
1238
+ msgstr "La eliminación de la cuenta desactivará automáticamente su licencia de plan %s para que pueda utilizarla en otros sitios. Si también desea cancelar los pagos periódicos, haga clic en el botón \"Cancelar\" y, en primer lugar, \"Degradar\" su cuenta. ¿Seguro que deseas continuar con la eliminación?"
1239
+
1240
+ #: templates/account.php:181
1241
+ msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
1242
+ msgstr "La eliminación no es temporal. Sólo elimínalo si ya no deseas utilizar este %s más. ¿Estás seguro que desea continuar con la eliminación?"
1243
+
1244
+ #: templates/account.php:184
1245
+ msgid "Delete Account"
1246
+ msgstr "Borrar cuenta"
1247
+
1248
+ #: templates/account.php196, templates/account/partials/addon.php159,
1249
+ #: templates/account/partials/deactivate-license-button.php:35
1250
+ msgid "Deactivate License"
1251
+ msgstr "Desactivar licencia"
1252
+
1253
+ #: templates/account.php219, templates/forms/subscription-cancellation.php:125
1254
+ msgid "Are you sure you want to proceed?"
1255
+ msgstr "¿Estás seguro que quieres proceder?"
1256
+
1257
+ #: templates/account.php219, templates/account/partials/addon.php:182
1258
+ msgid "Cancel Subscription"
1259
+ msgstr "Cancelar suscripción"
1260
+
1261
+ #: templates/account.php:247
1262
+ msgctxt "as synchronize"
1263
+ msgid "Sync"
1264
+ msgstr "Sincronizar"
1265
+
1266
+ #: templates/account.php261, templates/debug.php:487
1267
+ msgid "Name"
1268
+ msgstr "Nombre"
1269
+
1270
+ #: templates/account.php267, templates/debug.php:488
1271
+ msgid "Email"
1272
+ msgstr "Correo electrónico"
1273
+
1274
+ #: templates/account.php274, templates/debug.php370, templates/debug.php:526
1275
+ msgid "User ID"
1276
+ msgstr "ID de usuario"
1277
+
1278
+ #: templates/account.php:282
1279
+ msgid "Site ID"
1280
+ msgstr "ID del sitio"
1281
+
1282
+ #: templates/account.php:285
1283
+ msgid "No ID"
1284
+ msgstr "Sin ID"
1285
+
1286
+ #: templates/account.php290, templates/debug.php243, templates/debug.php372,
1287
+ #: templates/debug.php453, templates/debug.php490,
1288
+ #: templates/account/partials/site.php:219
1289
+ msgid "Public Key"
1290
+ msgstr "Clave pública"
1291
+
1292
+ #: templates/account.php296, templates/debug.php373, templates/debug.php454,
1293
+ #: templates/debug.php491, templates/account/partials/site.php:231
1294
+ msgid "Secret Key"
1295
+ msgstr "Clave secreta"
1296
+
1297
+ #: templates/account.php:299
1298
+ msgctxt "as secret encryption key missing"
1299
+ msgid "No Secret"
1300
+ msgstr "Sin clave secreta"
1301
+
1302
+ #: templates/account.php318, templates/account/partials/site.php112,
1303
+ #: templates/account/partials/site.php:114
1304
+ msgid "Trial"
1305
+ msgstr "Período de prueba gratuito"
1306
+
1307
+ #: templates/account.php337, templates/debug.php531,
1308
+ #: templates/account/partials/site.php:248
1309
+ msgid "License Key"
1310
+ msgstr "Clave de licencia"
1311
+
1312
+ #: templates/account.php:367
1313
+ msgid "not verified"
1314
+ msgstr "no verificado"
1315
+
1316
+ #: templates/account.php376, templates/account/partials/addon.php:120
1317
+ msgid "Expired"
1318
+ msgstr "Caducado"
1319
+
1320
+ #: templates/account.php:428
1321
+ msgid "Premium version"
1322
+ msgstr "Versión premium"
1323
+
1324
+ #: templates/account.php:430
1325
+ msgid "Free version"
1326
+ msgstr "Versión gratuita"
1327
+
1328
+ #: templates/account.php:442
1329
+ msgid "Verify Email"
1330
+ msgstr "Verificar correo electrónico"
1331
+
1332
+ #: templates/account.php:453
1333
+ msgid "Download %s Version"
1334
+ msgstr "Descargar versión %s"
1335
+
1336
+ #: templates/account.php467, templates/account.php649,
1337
+ #: templates/account/partials/site.php237,
1338
+ #: templates/account/partials/site.php:255
1339
+ msgctxt "verb"
1340
+ msgid "Show"
1341
+ msgstr "Mostrar"
1342
+
1343
+ #: templates/account.php:481
1344
+ msgid "What is your %s?"
1345
+ msgstr "¿Cual es tú %s?"
1346
+
1347
+ #: templates/account.php489, templates/account/billing.php:27
1348
+ msgctxt "verb"
1349
+ msgid "Edit"
1350
+ msgstr "Editar"
1351
+
1352
+ #: templates/account.php:502
1353
+ msgid "Sites"
1354
+ msgstr "Sitios"
1355
+
1356
+ #: templates/account.php:513
1357
+ msgid "Search by address"
1358
+ msgstr "Buscar por dirección"
1359
+
1360
+ #: templates/account.php522, templates/account.php570, templates/debug.php236,
1361
+ #: templates/debug.php364, templates/debug.php449, templates/debug.php486,
1362
+ #: templates/debug.php524, templates/debug.php597,
1363
+ #: templates/account/payments.php35, templates/debug/logger.php:21
1364
+ msgid "ID"
1365
+ msgstr "ID"
1366
+
1367
+ #: templates/account.php523, templates/debug.php:367
1368
+ msgid "Address"
1369
+ msgstr "Dirección"
1370
+
1371
+ #: templates/account.php:524
1372
+ msgid "License"
1373
+ msgstr "Licencia"
1374
+
1375
+ #: templates/account.php:525
1376
+ msgid "Plan"
1377
+ msgstr "Plan"
1378
+
1379
+ #: templates/account.php:573
1380
+ msgctxt "as software license"
1381
+ msgid "License"
1382
+ msgstr "Licencia"
1383
+
1384
+ #: templates/account.php:643
1385
+ msgctxt "verb"
1386
+ msgid "Hide"
1387
+ msgstr "Ocultar"
1388
+
1389
+ #: templates/account.php:686
1390
+ msgid "Cancelling %s"
1391
+ msgstr "Cancelando %s"
1392
+
1393
+ #: templates/account.php686, templates/account.php703,
1394
+ #: templates/forms/subscription-cancellation.php27,
1395
+ #: templates/forms/deactivation/form.php:117
1396
+ msgid "trial"
1397
+ msgstr "período de prueba"
1398
+
1399
+ #: templates/account.php701, templates/forms/deactivation/form.php:134
1400
+ msgid "Cancelling %s..."
1401
+ msgstr "Cancelando %s..."
1402
+
1403
+ #: templates/account.php704, templates/forms/subscription-cancellation.php28,
1404
+ #: templates/forms/deactivation/form.php:118
1405
+ msgid "subscription"
1406
+ msgstr "suscripción"
1407
+
1408
+ #: templates/account.php:718
1409
+ msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
1410
+ msgstr "Al desactivar tu licencia todas las características premium se bloquearán, pero posibilitará poder activar tu licencia en otro sitio. ¿Estás seguro que quieres continuar?"
1411
+
1412
+ #: templates/add-ons.php:36
1413
+ msgid "Add Ons for %s"
1414
+ msgstr "Complementos para %s"
1415
+
1416
+ #: templates/add-ons.php:44
1417
+ msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
1418
+ msgstr "No podemos cargar la lista de complementos. Probablemente es un problema por nuestro parte, por favor inténtalo de nuevo en unos minutos."
1419
+
1420
+ #: templates/add-ons.php:139
1421
+ msgid "View details"
1422
+ msgstr "Ver detalles"
1423
+
1424
+ #: templates/admin-notice.php13, templates/forms/license-activation.php208,
1425
+ #: templates/forms/resend-key.php:77
1426
+ msgctxt "as close a window"
1427
+ msgid "Dismiss"
1428
+ msgstr "Descartar"
1429
+
1430
+ #: templates/auto-installation.php:45
1431
+ msgid "%s sec"
1432
+ msgstr "%s seg"
1433
+
1434
+ #: templates/auto-installation.php:83
1435
+ msgid "Automatic Installation"
1436
+ msgstr "Instalación automática"
1437
+
1438
+ #: templates/auto-installation.php:93
1439
+ msgid "An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now."
1440
+ msgstr "Una descarga automatizada y la instalación de %s (versión de pago) de %s comenzará en %s. Si quieres hacerlo manualmente - haz clic en el botón de cancelación."
1441
+
1442
+ #: templates/auto-installation.php:104
1443
+ msgid "The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page."
1444
+ msgstr "El proceso de instalación ha comenzado y puede tardar unos minutos en completarse. Por favor, espera hasta que se finalice - no actualices esta página."
1445
+
1446
+ #: templates/auto-installation.php:109
1447
+ msgid "Cancel Installation"
1448
+ msgstr "Cancelar instalación"
1449
+
1450
+ #: templates/checkout.php:172
1451
+ msgid "Checkout"
1452
+ msgstr "Pagar"
1453
+
1454
+ #: templates/checkout.php:172
1455
+ msgid "PCI compliant"
1456
+ msgstr "Compatible con PCI"
1457
+
1458
+ #. translators: %s: name (e.g. Hey John,)
1459
+ #: templates/connect.php:112
1460
+ msgctxt "greeting"
1461
+ msgid "Hey %s,"
1462
+ msgstr "Hey %s,"
1463
+
1464
+ #: templates/connect.php:154
1465
+ msgid "Allow & Continue"
1466
+ msgstr "Permitir y continuar"
1467
+
1468
+ #: templates/connect.php:158
1469
+ msgid "Re-send activation email"
1470
+ msgstr "Reenviar correo electrónico de activación"
1471
+
1472
+ #: templates/connect.php:162
1473
+ msgid "Thanks %s!"
1474
+ msgstr "¡Gracias %s!"
1475
+
1476
+ #: templates/connect.php172, templates/forms/license-activation.php:43
1477
+ msgid "Agree & Activate License"
1478
+ msgstr "De acuerdo y activar licencia"
1479
+
1480
+ #: templates/connect.php:181
1481
+ msgid "Thanks for purchasing %s! To get started, please enter your license key:"
1482
+ msgstr "¡Gracias por comprar %s! Para empezar, escribe tu clave de licencia:"
1483
+
1484
+ #: templates/connect.php:188
1485
+ msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
1486
+ msgstr "No te pierdas ninguna actualización importante - acepta para notificaciones de seguridad y de actualizaciones, ofertas y seguimiento de diagnóstico con datos no sensibles con %4$s."
1487
+
1488
+ #: templates/connect.php:189
1489
+ msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
1490
+ msgstr "No te pierdas ninguna actualización importante - acepta para notificaciones de seguridad y de actualizaciones y seguimiento de diagnóstico con datos no sensibles con %4$s."
1491
+
1492
+ #: templates/connect.php:195
1493
+ msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1494
+ msgstr "No te pierdas ninguna actualización importante - acepta las notificaciones de seguridad y de actualizaciones, contenido educacional, ofertas y seguimiento de diagnóstico con datos no sensibles con %4$s. ¡Si te saltas esto, no pasa nada! %1$s seguirá funcionando bien."
1495
+
1496
+ #: templates/connect.php:196
1497
+ msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1498
+ msgstr "No te pierdas ninguna actualización importante - acepta las notificaciones de seguridad y de actualizaciones y seguimiento de diagnóstico con datos no sensibles con %4$s. ¡Si te saltas esto, no pasa nada! %1$s seguirá funcionando bien."
1499
+
1500
+ #: templates/connect.php:230
1501
+ msgid "We're excited to introduce the Freemius network-level integration."
1502
+ msgstr "Estamos emocionados de introducir la integración de Freemius a nivel de red."
1503
+
1504
+ #: templates/connect.php:233
1505
+ msgid "During the update process we detected %d site(s) that are still pending license activation."
1506
+ msgstr "Durante el proceso de actualización hemos detectado%d sitio(s) que aún están pendientes de la activación de licencia."
1507
+
1508
+ #: templates/connect.php:235
1509
+ msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
1510
+ msgstr "Si quieres utilizar %s en estos sitios, introduce por favor tu clave de licencia abajo y haz click en el botón de activación."
1511
+
1512
+ #: templates/connect.php:237
1513
+ msgid "%s's paid features"
1514
+ msgstr "%s características de pago"
1515
+
1516
+ #: templates/connect.php:242
1517
+ msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
1518
+ msgstr "Alternativamente, puedes saltarlo ahora y activar la licencia después, en tu %s página de cuenta a nivel de red."
1519
+
1520
+ #: templates/connect.php:244
1521
+ msgid "During the update process we detected %s site(s) in the network that are still pending your attention."
1522
+ msgstr "Durante el proceso de actualización detectamos %s sitio(s) en la red que todavía están pendientes de tu atención."
1523
+
1524
+ #: templates/connect.php253, templates/forms/license-activation.php:46
1525
+ msgid "License key"
1526
+ msgstr "Clave de licencia"
1527
+
1528
+ #: templates/connect.php256, templates/forms/license-activation.php:19
1529
+ msgid "Can't find your license key?"
1530
+ msgstr "¿No puedes encontrar tu clave de licencia?"
1531
+
1532
+ #: templates/connect.php315, templates/connect.php630,
1533
+ #: templates/forms/deactivation/retry-skip.php:20
1534
+ msgctxt "verb"
1535
+ msgid "Skip"
1536
+ msgstr "Saltar"
1537
+
1538
+ #: templates/connect.php:318
1539
+ msgid "Delegate to Site Admins"
1540
+ msgstr "Delegar a administradores del sitio"
1541
+
1542
+ #: templates/connect.php:318
1543
+ msgid "If you click it, this decision will be delegated to the sites administrators."
1544
+ msgstr "Si haces click, esta decisión será delegada a los administradores de los sitios."
1545
+
1546
+ #: templates/connect.php:346
1547
+ msgid "Your Profile Overview"
1548
+ msgstr "Resumen del perfil"
1549
+
1550
+ #: templates/connect.php:347
1551
+ msgid "Name and email address"
1552
+ msgstr "Nombre y dirección de correo electrónico"
1553
+
1554
+ #: templates/connect.php:352
1555
+ msgid "Your Site Overview"
1556
+ msgstr "Resumen del sitio"
1557
+
1558
+ #: templates/connect.php:353
1559
+ msgid "Site URL, WP version, PHP info, plugins & themes"
1560
+ msgstr "URL del sitio web, versión de WP, PHP info, plugins y temas"
1561
+
1562
+ #: templates/connect.php:358
1563
+ msgid "Admin Notices"
1564
+ msgstr "Avisos de administración"
1565
+
1566
+ #: templates/connect.php359, templates/connect.php:375
1567
+ msgid "Updates, announcements, marketing, no spam"
1568
+ msgstr "Actualizaciones, anuncios, marketing, sin spam"
1569
+
1570
+ #: templates/connect.php:364
1571
+ msgid "Current %s Events"
1572
+ msgstr "Eventos de %s actuales"
1573
+
1574
+ #: templates/connect.php:365
1575
+ msgid "Activation, deactivation and uninstall"
1576
+ msgstr "Activación, desactivación y desinstalación"
1577
+
1578
+ #: templates/connect.php:374
1579
+ msgid "Newsletter"
1580
+ msgstr "Boletín"
1581
+
1582
+ #: templates/connect.php391, templates/forms/license-activation.php:38
1583
+ msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
1584
+ msgstr "%1$s periódicamente enviará datos a %2$s para comprobar las actualizaciones de seguridad, nuevas funcionalidades y verificar la validez de tu licencia."
1585
+
1586
+ #: templates/connect.php:396
1587
+ msgid "What permissions are being granted?"
1588
+ msgstr "¿Qué permisos se otorgan?"
1589
+
1590
+ #: templates/connect.php:417
1591
+ msgid "Don't have a license key?"
1592
+ msgstr "¿No tienes una clave de licencia?"
1593
+
1594
+ #: templates/connect.php:418
1595
+ msgid "Activate Free Version"
1596
+ msgstr "Activar versión gratuita"
1597
+
1598
+ #: templates/connect.php:420
1599
+ msgid "Have a license key?"
1600
+ msgstr "¿Tienes una clave de licencia?"
1601
+
1602
+ #: templates/connect.php:428
1603
+ msgid "Privacy Policy"
1604
+ msgstr "Política de privacidad"
1605
+
1606
+ #: templates/connect.php:430
1607
+ msgid "License Agreement"
1608
+ msgstr "Acuerdo de licencia"
1609
+
1610
+ #: templates/connect.php:430
1611
+ msgid "Terms of Service"
1612
+ msgstr "Términos de servicio"
1613
+
1614
+ #: templates/connect.php:766
1615
+ msgctxt "as in the process of sending an email"
1616
+ msgid "Sending email"
1617
+ msgstr "Enviando correo electrónico"
1618
+
1619
+ #: templates/connect.php:767
1620
+ msgctxt "as activating plugin"
1621
+ msgid "Activating"
1622
+ msgstr "Activando"
1623
+
1624
+ #: templates/contact.php:78
1625
+ msgid "Contact"
1626
+ msgstr "Contacto"
1627
+
1628
+ #: templates/debug.php:17
1629
+ msgctxt "as turned off"
1630
+ msgid "Off"
1631
+ msgstr "Apagado"
1632
+
1633
+ #: templates/debug.php:18
1634
+ msgctxt "as turned on"
1635
+ msgid "On"
1636
+ msgstr "Encendido"
1637
+
1638
+ #: templates/debug.php:20
1639
+ msgid "SDK"
1640
+ msgstr "SDK"
1641
+
1642
+ #: templates/debug.php:24
1643
+ msgctxt "as code debugging"
1644
+ msgid "Debugging"
1645
+ msgstr "Depurando"
1646
+
1647
+ #: templates/debug.php54, templates/debug.php248, templates/debug.php374,
1648
+ #: templates/debug.php:492
1649
+ msgid "Actions"
1650
+ msgstr "Acciones"
1651
+
1652
+ #: templates/debug.php:64
1653
+ msgid "Are you sure you want to delete all Freemius data?"
1654
+ msgstr "¿Está seguro que desea eliminar todos los datos de Freemius?"
1655
+
1656
+ #: templates/debug.php:64
1657
+ msgid "Delete All Accounts"
1658
+ msgstr "Borrar todas las cuentas"
1659
+
1660
+ #: templates/debug.php:71
1661
+ msgid "Clear API Cache"
1662
+ msgstr "Borrar caché de la API"
1663
+
1664
+ #: templates/debug.php:79
1665
+ msgid "Clear Updates Transients"
1666
+ msgstr "Borrar transients de actualizaciones"
1667
+
1668
+ #: templates/debug.php:86
1669
+ msgid "Sync Data From Server"
1670
+ msgstr "Sincronizar datos desde el servidor"
1671
+
1672
+ #: templates/debug.php:95
1673
+ msgid "Migrate Options to Network"
1674
+ msgstr "Migrar opciones a la red"
1675
+
1676
+ #: templates/debug.php:100
1677
+ msgid "Load DB Option"
1678
+ msgstr "Cargar opción de BD"
1679
+
1680
+ #: templates/debug.php:103
1681
+ msgid "Set DB Option"
1682
+ msgstr "Guardar opción en BD"
1683
+
1684
+ #: templates/debug.php:180
1685
+ msgid "Key"
1686
+ msgstr "Clave"
1687
+
1688
+ #: templates/debug.php:181
1689
+ msgid "Value"
1690
+ msgstr "Valor"
1691
+
1692
+ #: templates/debug.php:197
1693
+ msgctxt "as software development kit versions"
1694
+ msgid "SDK Versions"
1695
+ msgstr "Versiones SDK"
1696
+
1697
+ #: templates/debug.php:202
1698
+ msgid "SDK Path"
1699
+ msgstr "Ruta del SDK"
1700
+
1701
+ #: templates/debug.php203, templates/debug.php:242
1702
+ msgid "Module Path"
1703
+ msgstr "Ruta del módulo"
1704
+
1705
+ #: templates/debug.php:204
1706
+ msgid "Is Active"
1707
+ msgstr "Está activo"
1708
+
1709
+ #: templates/debug.php232, templates/debug/plugins-themes-sync.php:35
1710
+ msgid "Plugins"
1711
+ msgstr "Plugins"
1712
+
1713
+ #: templates/debug.php232, templates/debug/plugins-themes-sync.php:56
1714
+ msgid "Themes"
1715
+ msgstr "Temas"
1716
+
1717
+ #: templates/debug.php237, templates/debug.php369, templates/debug.php451,
1718
+ #: templates/debug/scheduled-crons.php:80
1719
+ msgid "Slug"
1720
+ msgstr "Ruta"
1721
+
1722
+ #: templates/debug.php239, templates/debug.php:450
1723
+ msgid "Title"
1724
+ msgstr "Título"
1725
+
1726
+ #: templates/debug.php:240
1727
+ msgctxt "as application program interface"
1728
+ msgid "API"
1729
+ msgstr "API"
1730
+
1731
+ #: templates/debug.php:241
1732
+ msgid "Freemius State"
1733
+ msgstr "Estado Freemius"
1734
+
1735
+ #: templates/debug.php:245
1736
+ msgid "Network Blog"
1737
+ msgstr "Blog de red"
1738
+
1739
+ #: templates/debug.php:246
1740
+ msgid "Network User"
1741
+ msgstr "Usuario de red"
1742
+
1743
+ #: templates/debug.php:283
1744
+ msgctxt "as connection was successful"
1745
+ msgid "Connected"
1746
+ msgstr "Conectado"
1747
+
1748
+ #: templates/debug.php:284
1749
+ msgctxt "as connection blocked"
1750
+ msgid "Blocked"
1751
+ msgstr "Bloqueado"
1752
+
1753
+ #: templates/debug.php:320
1754
+ msgid "Simulate Trial Promotion"
1755
+ msgstr "Simular período de prueba"
1756
+
1757
+ #: templates/debug.php:332
1758
+ msgid "Simulate Network Upgrade"
1759
+ msgstr "Simular actualización de red"
1760
+
1761
+ #: templates/debug.php:358
1762
+ msgid "%s Installs"
1763
+ msgstr "%s Instalaciones"
1764
+
1765
+ #: templates/debug.php:360
1766
+ msgctxt "like websites"
1767
+ msgid "Sites"
1768
+ msgstr "Sitios"
1769
+
1770
+ #: templates/debug.php366, templates/account/partials/site.php:148
1771
+ msgid "Blog ID"
1772
+ msgstr "ID del blog"
1773
+
1774
+ #: templates/debug.php431, templates/debug.php509,
1775
+ #: templates/account/partials/addon.php:339
1776
+ msgctxt "verb"
1777
+ msgid "Delete"
1778
+ msgstr "Borrar"
1779
+
1780
+ #: templates/debug.php:445
1781
+ msgid "Add Ons of module %s"
1782
+ msgstr "Complementos del módulo %s"
1783
+
1784
+ #: templates/debug.php:482
1785
+ msgid "Users"
1786
+ msgstr "Usuarios"
1787
+
1788
+ #: templates/debug.php:489
1789
+ msgid "Verified"
1790
+ msgstr "Verificado"
1791
+
1792
+ #: templates/debug.php:520
1793
+ msgid "%s Licenses"
1794
+ msgstr "%s Licencias"
1795
+
1796
+ #: templates/debug.php:525
1797
+ msgid "Plugin ID"
1798
+ msgstr "ID del plugin"
1799
+
1800
+ #: templates/debug.php:527
1801
+ msgid "Plan ID"
1802
+ msgstr "ID del plan"
1803
+
1804
+ #: templates/debug.php:528
1805
+ msgid "Quota"
1806
+ msgstr "Cuota"
1807
+
1808
+ #: templates/debug.php:529
1809
+ msgid "Activated"
1810
+ msgstr "Activado"
1811
+
1812
+ #: templates/debug.php:530
1813
+ msgid "Blocking"
1814
+ msgstr "Bloqueando"
1815
+
1816
+ #: templates/debug.php:532
1817
+ msgctxt "as expiration date"
1818
+ msgid "Expiration"
1819
+ msgstr "Caducidad"
1820
+
1821
+ #: templates/debug.php:555
1822
+ msgid "Debug Log"
1823
+ msgstr "Log de Debug"
1824
+
1825
+ #: templates/debug.php:559
1826
+ msgid "All Types"
1827
+ msgstr "Todos los Tipos"
1828
+
1829
+ #: templates/debug.php:566
1830
+ msgid "All Requests"
1831
+ msgstr "Todas las peticiones"
1832
+
1833
+ #: templates/debug.php571, templates/debug.php600,
1834
+ #: templates/debug/logger.php:25
1835
+ msgid "File"
1836
+ msgstr "Archivo"
1837
+
1838
+ #: templates/debug.php572, templates/debug.php598,
1839
+ #: templates/debug/logger.php:23
1840
+ msgid "Function"
1841
+ msgstr "Función"
1842
+
1843
+ #: templates/debug.php:573
1844
+ msgid "Process ID"
1845
+ msgstr "ID del proceso"
1846
+
1847
+ #: templates/debug.php:574
1848
+ msgid "Logger"
1849
+ msgstr "Logger"
1850
+
1851
+ #: templates/debug.php575, templates/debug.php599,
1852
+ #: templates/debug/logger.php:24
1853
+ msgid "Message"
1854
+ msgstr "Mensaje"
1855
+
1856
+ #: templates/debug.php:577
1857
+ msgid "Filter"
1858
+ msgstr "Filtro"
1859
+
1860
+ #: templates/debug.php:585
1861
+ msgid "Download"
1862
+ msgstr "Descarga"
1863
+
1864
+ #: templates/debug.php596, templates/debug/logger.php:22
1865
+ msgid "Type"
1866
+ msgstr "Tipo"
1867
+
1868
+ #: templates/debug.php601, templates/debug/logger.php:26
1869
+ msgid "Timestamp"
1870
+ msgstr "Timestamp"
1871
+
1872
+ #: templates/secure-https-header.php:28
1873
+ msgid "Secure HTTPS %s page, running from an external domain"
1874
+ msgstr "Página segura HTTPS %s, desde un dominio externo"
1875
+
1876
+ #: includes/customizer/class-fs-customizer-support-section.php55,
1877
+ #: templates/plugin-info/features.php:43
1878
+ msgid "Support"
1879
+ msgstr "Soporte"
1880
+
1881
+ #: includes/debug/class-fs-debug-bar-panel.php48,
1882
+ #: templates/debug/api-calls.php54, templates/debug/logger.php:62
1883
+ msgctxt "milliseconds"
1884
+ msgid "ms"
1885
+ msgstr "ms"
1886
+
1887
+ #: includes/debug/debug-bar-start.php:41
1888
+ msgid "Freemius API"
1889
+ msgstr "API Freemius"
1890
+
1891
+ #: includes/debug/debug-bar-start.php:42
1892
+ msgid "Requests"
1893
+ msgstr "Peticiones"
1894
+
1895
+ #: templates/account/billing.php:28
1896
+ msgctxt "verb"
1897
+ msgid "Update"
1898
+ msgstr "Actualizar"
1899
+
1900
+ #: templates/account/billing.php:39
1901
+ msgid "Billing"
1902
+ msgstr "Facturación"
1903
+
1904
+ #: templates/account/billing.php44, templates/account/billing.php:44
1905
+ msgid "Business name"
1906
+ msgstr "Nombre de la empresa"
1907
+
1908
+ #: templates/account/billing.php45, templates/account/billing.php:45
1909
+ msgid "Tax / VAT ID"
1910
+ msgstr "Tax / Núm IVA"
1911
+
1912
+ #: templates/account/billing.php48, templates/account/billing.php48,
1913
+ #: templates/account/billing.php49, templates/account/billing.php:49
1914
+ msgid "Address Line %d"
1915
+ msgstr "Línea de la dirección %d"
1916
+
1917
+ #: templates/account/billing.php52, templates/account/billing.php:52
1918
+ msgid "City"
1919
+ msgstr "Ciudad"
1920
+
1921
+ #: templates/account/billing.php52, templates/account/billing.php:52
1922
+ msgid "Town"
1923
+ msgstr "Municipio"
1924
+
1925
+ #: templates/account/billing.php53, templates/account/billing.php:53
1926
+ msgid "ZIP / Postal Code"
1927
+ msgstr "Código postal"
1928
+
1929
+ #: templates/account/billing.php:308
1930
+ msgid "Country"
1931
+ msgstr "País"
1932
+
1933
+ #: templates/account/billing.php:310
1934
+ msgid "Select Country"
1935
+ msgstr "Seleccionar país"
1936
+
1937
+ #: templates/account/billing.php317, templates/account/billing.php:318
1938
+ msgid "State"
1939
+ msgstr "Estado"
1940
+
1941
+ #: templates/account/billing.php317, templates/account/billing.php:318
1942
+ msgid "Province"
1943
+ msgstr "Provincia"
1944
+
1945
+ #: templates/account/payments.php:29
1946
+ msgid "Payments"
1947
+ msgstr "Pagos"
1948
+
1949
+ #: templates/account/payments.php:36
1950
+ msgid "Date"
1951
+ msgstr "Fecha"
1952
+
1953
+ #: templates/account/payments.php:37
1954
+ msgid "Amount"
1955
+ msgstr "Cantidad"
1956
+
1957
+ #: templates/account/payments.php38, templates/account/payments.php:50
1958
+ msgid "Invoice"
1959
+ msgstr "Factura"
1960
+
1961
+ #: templates/debug/api-calls.php:56
1962
+ msgid "API"
1963
+ msgstr "API"
1964
+
1965
+ #: templates/debug/api-calls.php:68
1966
+ msgid "Method"
1967
+ msgstr "Método"
1968
+
1969
+ #: templates/debug/api-calls.php:69
1970
+ msgid "Code"
1971
+ msgstr "Código"
1972
+
1973
+ #: templates/debug/api-calls.php:70
1974
+ msgid "Length"
1975
+ msgstr "Longitud"
1976
+
1977
+ #: templates/debug/api-calls.php:71
1978
+ msgctxt "as file/folder path"
1979
+ msgid "Path"
1980
+ msgstr "Ruta"
1981
+
1982
+ #: templates/debug/api-calls.php:73
1983
+ msgid "Body"
1984
+ msgstr "Cuerpo"
1985
+
1986
+ #: templates/debug/api-calls.php:75
1987
+ msgid "Result"
1988
+ msgstr "Resultado"
1989
+
1990
+ #: templates/debug/api-calls.php:76
1991
+ msgid "Start"
1992
+ msgstr "Inicio"
1993
+
1994
+ #: templates/debug/api-calls.php:77
1995
+ msgid "End"
1996
+ msgstr "Fin"
1997
+
1998
+ #: templates/debug/logger.php:15
1999
+ msgid "Log"
2000
+ msgstr "Log"
2001
+
2002
+ #. translators: %s: time period (e.g. In "2 hours")
2003
+ #: templates/debug/plugins-themes-sync.php18,
2004
+ #: templates/debug/scheduled-crons.php:91
2005
+ msgid "In %s"
2006
+ msgstr "En %s"
2007
+
2008
+ #. translators: %s: time period (e.g. "2 hours" ago)
2009
+ #: templates/debug/plugins-themes-sync.php20,
2010
+ #: templates/debug/scheduled-crons.php:93
2011
+ msgid "%s ago"
2012
+ msgstr "hace %s"
2013
+
2014
+ #: templates/debug/plugins-themes-sync.php21,
2015
+ #: templates/debug/scheduled-crons.php:74
2016
+ msgctxt "seconds"
2017
+ msgid "sec"
2018
+ msgstr "seg"
2019
+
2020
+ #: templates/debug/plugins-themes-sync.php:23
2021
+ msgid "Plugins & Themes Sync"
2022
+ msgstr "Sincronizar plugins y temas"
2023
+
2024
+ #: templates/debug/plugins-themes-sync.php:28
2025
+ msgid "Total"
2026
+ msgstr "Total"
2027
+
2028
+ #: templates/debug/plugins-themes-sync.php29,
2029
+ #: templates/debug/scheduled-crons.php:84
2030
+ msgid "Last"
2031
+ msgstr "Último"
2032
+
2033
+ #: templates/debug/scheduled-crons.php:76
2034
+ msgid "Scheduled Crons"
2035
+ msgstr "Crons programados"
2036
+
2037
+ #: templates/debug/scheduled-crons.php:81
2038
+ msgid "Module"
2039
+ msgstr "Módulo"
2040
+
2041
+ #: templates/debug/scheduled-crons.php:82
2042
+ msgid "Module Type"
2043
+ msgstr "Tipo de módulo"
2044
+
2045
+ #: templates/debug/scheduled-crons.php:83
2046
+ msgid "Cron Type"
2047
+ msgstr "Tipo de cron"
2048
+
2049
+ #: templates/debug/scheduled-crons.php:85
2050
+ msgid "Next"
2051
+ msgstr "Siguiente"
2052
+
2053
+ #: templates/forms/affiliation.php:82
2054
+ msgid "Non-expiring"
2055
+ msgstr "Sin caducidad"
2056
+
2057
+ #: templates/forms/affiliation.php:85
2058
+ msgid "Apply to become an affiliate"
2059
+ msgstr "Aceptar para hacerse afiliado"
2060
+
2061
+ #: templates/forms/affiliation.php:104
2062
+ msgid "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
2063
+ msgstr "¡Tu aplicación al programa de afiliación para %s ha sido aceptada! Entra en tu área de afiliado desde: %s."
2064
+
2065
+ #: templates/forms/affiliation.php:119
2066
+ msgid "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information."
2067
+ msgstr "Gracias por aplicar a nuestro programa de afiliados, revisaremos tu petición durante los próximos 14 días y te volveremos a contactar con información adicional."
2068
+
2069
+ #: templates/forms/affiliation.php:122
2070
+ msgid "Your affiliation account was temporarily suspended."
2071
+ msgstr "Tu cuenta de afiliado ha sido suspendida temporalmente."
2072
+
2073
+ #: templates/forms/affiliation.php:125
2074
+ msgid "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days."
2075
+ msgstr "Gracias por aplicar a nuestro programa de asociados, infortunadamente, de momento hemos decidido rechazar tu petición. Por favor, prueba de nuevo en 30 días."
2076
+
2077
+ #: templates/forms/affiliation.php:128
2078
+ msgid "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
2079
+ msgstr "Debido a la violación de nuestros términos de afiliados, hemos decidido bloquear temporalmente tu cuenta de afiliación. Si tienes alguna pregunta, por favor contacta nuestro soporte."
2080
+
2081
+ #: templates/forms/affiliation.php:141
2082
+ msgid "Like the %s? Become our ambassador and earn cash ;-)"
2083
+ msgstr "¿Te gusta %s? Conviértete en nuestro embajador y gana dinero ;-)"
2084
+
2085
+ #: templates/forms/affiliation.php:142
2086
+ msgid "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
2087
+ msgstr "¡Envíanos nuevos usuarios a nuestro %s y gana %s de comisión en cada venta satisfactoria que nos hayas referido!"
2088
+
2089
+ #: templates/forms/affiliation.php:145
2090
+ msgid "Program Summary"
2091
+ msgstr "Sumario del programa"
2092
+
2093
+ #: templates/forms/affiliation.php:147
2094
+ msgid "%s commission when a customer purchases a new license."
2095
+ msgstr "%s comisión cuando un cliente compra una nueva licencia."
2096
+
2097
+ #: templates/forms/affiliation.php:149
2098
+ msgid "Get commission for automated subscription renewals."
2099
+ msgstr "Obtén comisiones por renovaciones automatizadas de las suscripciones."
2100
+
2101
+ #: templates/forms/affiliation.php:152
2102
+ msgid "%s tracking cookie after the first visit to maximize earnings potential."
2103
+ msgstr "%s tracking cookie después de la primera visita para maximizar las ganancias potenciales."
2104
+
2105
+ #: templates/forms/affiliation.php:155
2106
+ msgid "Unlimited commissions."
2107
+ msgstr "Comisiones Ilimitadas"
2108
+
2109
+ #: templates/forms/affiliation.php:157
2110
+ msgid "%s minimum payout amount."
2111
+ msgstr "%s cantidad mínima a pagar."
2112
+
2113
+ #: templates/forms/affiliation.php:158
2114
+ msgid "Payouts are in USD and processed monthly via PayPal."
2115
+ msgstr "Los pagos son en USD y se procesan mensualmente por medio de PayPal."
2116
+
2117
+ #: templates/forms/affiliation.php:159
2118
+ msgid "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
2119
+ msgstr "Como aplazamos 30 días para posible devoluciones, sólo pagamos comisiones que son de más de 30 días."
2120
+
2121
+ #: templates/forms/affiliation.php:162
2122
+ msgid "Affiliate"
2123
+ msgstr "Afiliado"
2124
+
2125
+ #: templates/forms/affiliation.php165, templates/forms/resend-key.php:23
2126
+ msgid "Email address"
2127
+ msgstr "Dirección de correo electrónico"
2128
+
2129
+ #: templates/forms/affiliation.php:169
2130
+ msgid "Full name"
2131
+ msgstr "Nombre completo"
2132
+
2133
+ #: templates/forms/affiliation.php:173
2134
+ msgid "PayPal account email address"
2135
+ msgstr "Dirección de correo electrónico de PayPal"
2136
+
2137
+ #: templates/forms/affiliation.php:177
2138
+ msgid "Where are you going to promote the %s?"
2139
+ msgstr "¿Dónde vas a promocionar %s?"
2140
+
2141
+ #: templates/forms/affiliation.php:179
2142
+ msgid "Enter the domain of your website or other websites from where you plan to promote the %s."
2143
+ msgstr "Introduce el dominio de tu sitio web o de otros sitios web donde planeas promocionar %s."
2144
+
2145
+ #: templates/forms/affiliation.php:181
2146
+ msgid "Add another domain"
2147
+ msgstr "Añadir otro dominio"
2148
+
2149
+ #: templates/forms/affiliation.php:185
2150
+ msgid "Extra Domains"
2151
+ msgstr "Dominios extra"
2152
+
2153
+ #: templates/forms/affiliation.php:186
2154
+ msgid "Extra domains where you will be marketing the product from."
2155
+ msgstr "Dominios extra desde donde promocionarás el producto."
2156
+
2157
+ #: templates/forms/affiliation.php:196
2158
+ msgid "Promotion methods"
2159
+ msgstr "Métodos de promoción"
2160
+
2161
+ #: templates/forms/affiliation.php:199
2162
+ msgid "Social media (Facebook, Twitter, etc.)"
2163
+ msgstr "Social media (Facebook, Twitter, etc.)"
2164
+
2165
+ #: templates/forms/affiliation.php:203
2166
+ msgid "Mobile apps"
2167
+ msgstr "Apps móviles "
2168
+
2169
+ #: templates/forms/affiliation.php:207
2170
+ msgid "Website, email, and social media statistics (optional)"
2171
+ msgstr "Sitio web, correo electrónico y estadísticas de social media (opcional)"
2172
+
2173
+ #: templates/forms/affiliation.php:210
2174
+ msgid "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)."
2175
+ msgstr "Siéntete libre de proporcionarnos estadísticas de tu sitio web o social media, p.ej. visitas únicas mensuales, número de suscriptores de correo electrónico, seguidores, etc. (mantendremos esta información confidencial)"
2176
+
2177
+ #: templates/forms/affiliation.php:214
2178
+ msgid "How will you promote us?"
2179
+ msgstr "¿Como nos promocionarás?"
2180
+
2181
+ #: templates/forms/affiliation.php:217
2182
+ msgid "Please provide details on how you intend to promote %s (please be as specific as possible)."
2183
+ msgstr "Por favor, danos detalles de como pretendes promocionar %s (por favor, se lo más específico que puedas)"
2184
+
2185
+ #: templates/forms/affiliation.php223, templates/forms/resend-key.php:22
2186
+ msgid "Cancel"
2187
+ msgstr "Cancelar"
2188
+
2189
+ #: templates/forms/affiliation.php:225
2190
+ msgid "Become an affiliate"
2191
+ msgstr "Hacerse afiliado"
2192
+
2193
+ #: templates/forms/license-activation.php:20
2194
+ msgid "Please enter the license key that you received in the email right after the purchase:"
2195
+ msgstr "Por favor, introduce la clave de licencia que recibiste en el correo electrónico al realizar la compra:"
2196
+
2197
+ #: templates/forms/license-activation.php:25
2198
+ msgid "Update License"
2199
+ msgstr "Activar licencia"
2200
+
2201
+ #: templates/forms/optout.php:30
2202
+ msgctxt "verb"
2203
+ msgid "Opt Out"
2204
+ msgstr "Darse de baja"
2205
+
2206
+ #: templates/forms/optout.php:31
2207
+ msgctxt "verb"
2208
+ msgid "Opt In"
2209
+ msgstr "Inscribirse"
2210
+
2211
+ #: templates/forms/optout.php:33
2212
+ msgid "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
2213
+ msgstr "El uso del seguimiento se hace con la intención de mejorar %s. Crear una mejor experiencia de usuario, priorizando nuevas características y cosas mejores. Realmente apreciaríamos que considerases permitirnos continuar con el seguimiento."
2214
+
2215
+ #: templates/forms/optout.php:35
2216
+ msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
2217
+ msgstr "Haciendo clic en \"Desistir\", ya no enviaremos los datos de %s a %s."
2218
+
2219
+ #: templates/forms/premium-versions-upgrade-handler.php:40
2220
+ msgid "There is a new version of %s available."
2221
+ msgstr "Hay una nueva versión de %s disponible."
2222
+
2223
+ #: templates/forms/premium-versions-upgrade-handler.php:41
2224
+ msgid " %s to access version %s security & feature updates, and support."
2225
+ msgstr "%s para acceder a la versión %s de actualizaciones de funciones, seguridad y soporte."
2226
+
2227
+ #: templates/forms/premium-versions-upgrade-handler.php:54
2228
+ msgid "New Version Available"
2229
+ msgstr "Nueva versión disponible"
2230
+
2231
+ #: templates/forms/premium-versions-upgrade-handler.php:75
2232
+ msgctxt "close a window"
2233
+ msgid "Dismiss"
2234
+ msgstr "Descartar"
2235
+
2236
+ #: templates/forms/resend-key.php:21
2237
+ msgid "Send License Key"
2238
+ msgstr "Enviar clave de licencia"
2239
+
2240
+ #: templates/forms/resend-key.php:57
2241
+ msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
2242
+ msgstr "Escribe abajo la dirección de correo electrónico que has usado para la actualización y te reenviaremos la clave de licencia."
2243
+
2244
+ #: templates/forms/subscription-cancellation.php:37
2245
+ msgid "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site."
2246
+ msgstr "Desactivar o desinstalar %s deshabilitará automáticamente la licencia, que podrás usar en otro sitio."
2247
+
2248
+ #: templates/forms/subscription-cancellation.php:47
2249
+ msgid "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?"
2250
+ msgstr "En caso de que NO estés planeando utilizar este %s en este sitio (o en cualquier otro sitio), ¿te gustaría cancelar también %s?"
2251
+
2252
+ #: templates/forms/subscription-cancellation.php:52
2253
+ msgid "license"
2254
+ msgstr "licencia"
2255
+
2256
+ #: templates/forms/subscription-cancellation.php:57
2257
+ msgid "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site."
2258
+ msgstr "Cancelar %s - No necesito más actualizaciones de características y seguridad, ni soporte para %s porque no pretendo utilizar%s en este, u otro sitio."
2259
+
2260
+ #: templates/forms/subscription-cancellation.php:68
2261
+ msgid "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support."
2262
+ msgstr "No cancelar %s - Todavía estoy interesado en obtener actualizaciones de características y seguridad, así como poder contactar con soporte."
2263
+
2264
+ #: templates/forms/subscription-cancellation.php:103
2265
+ msgid "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license."
2266
+ msgstr "Una vez que tu licencia caduque no podrás seguir utilizando %s, a no ser que lo actives de nuevo con una licencia premium válida."
2267
+
2268
+ #: templates/forms/subscription-cancellation.php:136
2269
+ msgid "Cancel %s?"
2270
+ msgstr "¿Cancelar %s?"
2271
+
2272
+ #: templates/forms/subscription-cancellation.php:143
2273
+ msgid "Proceed"
2274
+ msgstr "Proceder"
2275
+
2276
+ #: templates/forms/subscription-cancellation.php191,
2277
+ #: templates/forms/deactivation/form.php:150
2278
+ msgid "Cancel %s & Proceed"
2279
+ msgstr "Cancelar %s y proceder"
2280
+
2281
+ #: templates/forms/trial-start.php:22
2282
+ msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
2283
+ msgstr "Estás a sólo 1-click de comenzar tu %1$s días de prueba gratuita del plan %2$s."
2284
+
2285
+ #: templates/forms/trial-start.php:28
2286
+ msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt in with your user and non-sensitive site information, allowing the %s to periodically send data to %s to check for version updates and to validate your trial."
2287
+ msgstr "Para el cumplimiento de las directrices de WordPress.org, antes de empezar el período de prueba te pedimos que aceptes con tu usuario e información no sensible del sitio web, permitiendo a %s enviar datos periódicamente a %s para comprobar si hay actualizaciones de versión y para validar la versión de prueba."
2288
+
2289
+ #: templates/js/style-premium-theme.php:37
2290
+ msgid "Premium"
2291
+ msgstr "Premium"
2292
+
2293
+ #: templates/partials/network-activation.php:23
2294
+ msgid "Activate license on all sites in the network."
2295
+ msgstr "Activar licencia en todos los sitios de la red"
2296
+
2297
+ #: templates/partials/network-activation.php:24
2298
+ msgid "Apply on all sites in the network."
2299
+ msgstr "Aplicar en todos los sitios de la red"
2300
+
2301
+ #: templates/partials/network-activation.php:27
2302
+ msgid "Activate license on all pending sites."
2303
+ msgstr "Aplicar licencia en todos los sitios pendientes"
2304
+
2305
+ #: templates/partials/network-activation.php:28
2306
+ msgid "Apply on all pending sites."
2307
+ msgstr "Aplicar en todos los sitios pendientes"
2308
+
2309
+ #: templates/partials/network-activation.php36,
2310
+ #: templates/partials/network-activation.php:68
2311
+ msgid "allow"
2312
+ msgstr "permitir"
2313
+
2314
+ #: templates/partials/network-activation.php38,
2315
+ #: templates/partials/network-activation.php:70
2316
+ msgid "delegate"
2317
+ msgstr "delegar"
2318
+
2319
+ #: templates/partials/network-activation.php41,
2320
+ #: templates/partials/network-activation.php:73
2321
+ msgid "skip"
2322
+ msgstr "saltar"
2323
+
2324
+ #: templates/plugin-info/description.php72,
2325
+ #: templates/plugin-info/screenshots.php:31
2326
+ msgid "Click to view full-size screenshot %d"
2327
+ msgstr "Click para ver la captura de pantalla a tamaño completo %d"
2328
+
2329
+ #: templates/plugin-info/features.php:56
2330
+ msgid "Unlimited Updates"
2331
+ msgstr "Actualizaciones Ilimitadas"
2332
+
2333
+ #: templates/account/partials/activate-license-button.php:46
2334
+ msgid "Localhost"
2335
+ msgstr "Localhost"
2336
+
2337
+ #: templates/account/partials/activate-license-button.php:50
2338
+ msgctxt "as 5 licenses left"
2339
+ msgid "%s left"
2340
+ msgstr "quedan %s"
2341
+
2342
+ #: templates/account/partials/activate-license-button.php:51
2343
+ msgid "Last license"
2344
+ msgstr "Última licencia"
2345
+
2346
+ #: templates/account/partials/addon.php:115
2347
+ msgid "Cancelled"
2348
+ msgstr "Cancelado"
2349
+
2350
+ #: templates/account/partials/addon.php:125
2351
+ msgid "No expiration"
2352
+ msgstr "Sin caducidad"
2353
+
2354
+ #: templates/account/partials/addon.php264,
2355
+ #: templates/account/partials/addon.php:317
2356
+ msgid "Activate this add-on"
2357
+ msgstr "Activar este complemento"
2358
+
2359
+ #: templates/account/partials/site.php:181
2360
+ msgid "Owner Name"
2361
+ msgstr "Nombre del propietario"
2362
+
2363
+ #: templates/account/partials/site.php:193
2364
+ msgid "Owner Email"
2365
+ msgstr "Correo electrónico del propietario"
2366
+
2367
+ #: templates/account/partials/site.php:205
2368
+ msgid "Owner ID"
2369
+ msgstr "ID del propietario"
2370
+
2371
+ #: templates/account/partials/site.php:270
2372
+ msgid "Subscription"
2373
+ msgstr "Suscripción"
2374
+
2375
+ #: templates/forms/deactivation/contact.php:19
2376
+ msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
2377
+ msgstr "Disculpa las molestias y estamos aquí para ayudarte si nos das una oportunidad."
2378
+
2379
+ #: templates/forms/deactivation/contact.php:22
2380
+ msgid "Contact Support"
2381
+ msgstr "Contactar soporte"
2382
+
2383
+ #: templates/forms/deactivation/form.php:59
2384
+ msgid "Anonymous feedback"
2385
+ msgstr "Comentarios anónimos"
2386
+
2387
+ #: templates/forms/deactivation/form.php:66
2388
+ msgid "Deactivate"
2389
+ msgstr "Desactivar"
2390
+
2391
+ #: templates/forms/deactivation/form.php:68
2392
+ msgid "Activate %s"
2393
+ msgstr "Activar %s"
2394
+
2395
+ #: templates/forms/deactivation/form.php:80
2396
+ msgid "Quick Feedback"
2397
+ msgstr "Comentarios rápidos"
2398
+
2399
+ #: templates/forms/deactivation/form.php:84
2400
+ msgid "If you have a moment, please let us know why you are %s"
2401
+ msgstr "Si tienes un momento, por favor, dinos por qué estás %s"
2402
+
2403
+ #: templates/forms/deactivation/form.php:84
2404
+ msgid "deactivating"
2405
+ msgstr "desactivando"
2406
+
2407
+ #: templates/forms/deactivation/form.php:84
2408
+ msgid "switching"
2409
+ msgstr "cambiando"
2410
+
2411
+ #: templates/forms/deactivation/form.php:332
2412
+ msgid "Submit & %s"
2413
+ msgstr "Enviar y %s"
2414
+
2415
+ #: templates/forms/deactivation/form.php:353
2416
+ msgid "Kindly tell us the reason so we can improve."
2417
+ msgstr "Por favor, dínos la razón para que podamos mejorar."
2418
+
2419
+ #: templates/forms/deactivation/form.php:478
2420
+ msgid "Yes - %s"
2421
+ msgstr "Si - %s"
2422
+
2423
+ #: templates/forms/deactivation/form.php:485
2424
+ msgid "Skip & %s"
2425
+ msgstr "Saltar y %s"
2426
+
2427
+ #: templates/forms/deactivation/retry-skip.php:21
2428
+ msgid "Click here to use the plugin anonymously"
2429
+ msgstr "Haz click aquí para utilizar el plugin de forma anónima"
2430
+
2431
+ #: templates/forms/deactivation/retry-skip.php:23
2432
+ msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
2433
+ msgstr "Es posible que te lo hayas perdido, pero no tienes que compartir ningún dato y puedes solo aceptar %s."
freemius/languages/freemius-fr_FR.mo CHANGED
Binary file
freemius/languages/freemius-fr_FR.po CHANGED
@@ -1,2299 +1,2433 @@
1
- # Copyright (C) 2018 freemius
2
- # This file is distributed under the same license as the freemius package.
3
- # Translators:
4
- # Boris Colombier <transifex.com@wba.fr>, 2018
5
- msgid ""
6
- msgstr ""
7
- "Project-Id-Version: WordPress SDK\n"
8
- "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
9
- "POT-Creation-Date: \n"
10
- "PO-Revision-Date: 2018-05-24 15:20+0000\n"
11
- "Last-Translator: Boris Colombier <transifex.com@wba.fr>\n"
12
- "Language: fr_FR\n"
13
- "Language-Team: French (France) (http://www.transifex.com/freemius/wordpress-sdk/language/fr_FR/)\n"
14
- "Content-Type: text/plain; charset=UTF-8\n"
15
- "Content-Transfer-Encoding: 8bit\n"
16
- "Plural-Forms: nplurals=2; plural=(n > 1);\n"
17
- "MIME-Version: 1.0\n"
18
- "X-Poedit-Basepath: ..\n"
19
- "X-Poedit-KeywordsList: get_text_inline;fs_text_inline;fs_echo_inline;fs_esc_js_inline;fs_esc_attr_inline;fs_esc_attr_echo_inline;fs_esc_html_inline;fs_esc_html_echo_inline;get_text_x_inline:1,2c;fs_text_x_inline:1,2c;fs_echo_x_inline:1,2c;fs_esc_attr_x_inline:1,2c;fs_esc_js_x_inline:1,2c;fs_esc_js_echo_x_inline:1,2c;fs_esc_html_x_inline:1,2c;fs_esc_html_echo_x_inline:1,2c\n"
20
- "X-Poedit-SearchPath-0: .\n"
21
- "X-Poedit-SearchPathExcluded-0: *.js\n"
22
- "X-Poedit-SourceCharset: UTF-8\n"
23
-
24
- #: includes/class-freemius.php:1551
25
- msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
26
- msgstr "Le SDK Freemius ne trouve pas le fichier principal du plugin. Merci de contacter sdk@freemius.com en indiquant l'erreur."
27
-
28
- #: includes/class-freemius.php:1553
29
- msgid "Error"
30
- msgstr "Erreur"
31
-
32
- #: includes/class-freemius.php:1871
33
- msgid "I found a better %s"
34
- msgstr "J'ai trouvé un meilleur %s"
35
-
36
- #: includes/class-freemius.php:1873
37
- msgid "What's the %s's name?"
38
- msgstr "Quel est le nom du %s ?"
39
-
40
- #: includes/class-freemius.php:1879
41
- msgid "It's a temporary %s. I'm just debugging an issue."
42
- msgstr "C'est une %s temporaire. Je corrige un problème."
43
-
44
- #: includes/class-freemius.php:1881
45
- msgid "Deactivation"
46
- msgstr "Désactivation"
47
-
48
- #: includes/class-freemius.php:1882
49
- msgid "Theme Switch"
50
- msgstr "Changement de Thème"
51
-
52
- #: includes/class-freemius.php1891, templates/forms/resend-key.php:24
53
- msgid "Other"
54
- msgstr "Autre"
55
-
56
- #: includes/class-freemius.php:1899
57
- msgid "I no longer need the %s"
58
- msgstr "Je n'ai plus besoin du %s"
59
-
60
- #: includes/class-freemius.php:1906
61
- msgid "I only needed the %s for a short period"
62
- msgstr "Je n'ai besoin de %s que pour une courte période"
63
-
64
- #: includes/class-freemius.php:1912
65
- msgid "The %s broke my site"
66
- msgstr "Le %s a cassé mon site"
67
-
68
- #: includes/class-freemius.php:1919
69
- msgid "The %s suddenly stopped working"
70
- msgstr "Le %s a soudainement arrêté de fonctionner"
71
-
72
- #: includes/class-freemius.php:1929
73
- msgid "I can't pay for it anymore"
74
- msgstr "Je ne peux plus payer pour ça"
75
-
76
- #: includes/class-freemius.php:1931
77
- msgid "What price would you feel comfortable paying?"
78
- msgstr "Quel prix seriez-vous prêt à payer ?"
79
-
80
- #: includes/class-freemius.php:1937
81
- msgid "I don't like to share my information with you"
82
- msgstr "Je ne veux pas partager mes informations avec vous"
83
-
84
- #: includes/class-freemius.php:1958
85
- msgid "The %s didn't work"
86
- msgstr "Le %s n'a pas fonctionné"
87
-
88
- #: includes/class-freemius.php:1968
89
- msgid "I couldn't understand how to make it work"
90
- msgstr "Je ne comprends pas comment le faire fonctionner"
91
-
92
- #: includes/class-freemius.php:1976
93
- msgid "The %s is great, but I need specific feature that you don't support"
94
- msgstr "Le %s est bien mais j'ai besoin de fonctionnalités spécifiques que vous ne proposez pas"
95
-
96
- #: includes/class-freemius.php:1978
97
- msgid "What feature?"
98
- msgstr "Quelle fonctionnalité ?"
99
-
100
- #: includes/class-freemius.php:1982
101
- msgid "The %s is not working"
102
- msgstr "Le %s ne fonctionne pas"
103
-
104
- #: includes/class-freemius.php:1984
105
- msgid "Kindly share what didn't work so we can fix it for future users..."
106
- msgstr "Merci de nous indiquer ce qui ne fonctionne pas afin que nous puissions le corriger pour les futurs utilisateurs..."
107
-
108
- #: includes/class-freemius.php:1988
109
- msgid "It's not what I was looking for"
110
- msgstr "Ce n'est pas ce que je recherche"
111
-
112
- #: includes/class-freemius.php:1990
113
- msgid "What you've been looking for?"
114
- msgstr "Que recherchez-vous ?"
115
-
116
- #: includes/class-freemius.php:1994
117
- msgid "The %s didn't work as expected"
118
- msgstr "Le %s n'a pas fonctionné comme prévu"
119
-
120
- #: includes/class-freemius.php:1996
121
- msgid "What did you expect?"
122
- msgstr "À quoi vous attendiez-vous ?"
123
-
124
- #: includes/class-freemius.php2729, templates/debug.php:20
125
- msgid "Freemius Debug"
126
- msgstr "Débuggage Freemius"
127
-
128
- #: includes/class-freemius.php:3402
129
- msgid "I don't know what is cURL or how to install it, help me!"
130
- msgstr "Je ne sais pas ce qu'est cURL ou comment l'installer, aidez moi !"
131
-
132
- #: includes/class-freemius.php:3404
133
- msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
134
- msgstr "Nous allons contacter votre hébergeur afin de résoudre le problème. Vous recevrez un email à propos de %s dès que nous aurons des nouvelles."
135
-
136
- #: includes/class-freemius.php:3411
137
- msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
138
- msgstr "Parfait, merci d'installer cURL et de l'activer dans votre fichier php.ini. De plus, recherchez l'instruction 'disable_functions' de votre fichier php.ini et désactivez les commandes commençant par 'curl_'. Pour vérifier la bonne activation, utilisez la fonction 'phpinfo()'. Une fois activé, désactivez le %s et réactivez le à nouveau."
139
-
140
- #: includes/class-freemius.php:3516
141
- msgid "Yes - do your thing"
142
- msgstr "Oui - allez-y"
143
-
144
- #: includes/class-freemius.php:3521
145
- msgid "No - just deactivate"
146
- msgstr "Non - désactivation seulement"
147
-
148
- #: includes/class-freemius.php3566, includes/class-freemius.php4066,
149
- #: includes/class-freemius.php5127, includes/class-freemius.php10941,
150
- #: includes/class-freemius.php14205, includes/class-freemius.php14257,
151
- #: includes/class-freemius.php14319, includes/class-freemius.php16448,
152
- #: includes/class-freemius.php16458, includes/class-freemius.php17014,
153
- #: includes/class-freemius.php17032, includes/class-freemius.php17130,
154
- #: includes/class-freemius.php17866, templates/add-ons.php:43
155
- msgctxt "exclamation"
156
- msgid "Oops"
157
- msgstr "Oups"
158
-
159
- #: includes/class-freemius.php:3635
160
- msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
161
- msgstr "Merci de nous permettre de corriger ça. Un message vient d'être envoyé à notre service technique. Nous reviendrons vers vous dès que nous aurons des nouvelles à propos de %s."
162
-
163
- #: includes/class-freemius.php:4063
164
- msgctxt "addonX cannot run without pluginY"
165
- msgid "%s cannot run without %s."
166
- msgstr "%s ne peut pas fonctionner sans %s."
167
-
168
- #: includes/class-freemius.php:4064
169
- msgctxt "addonX cannot run..."
170
- msgid "%s cannot run without the plugin."
171
- msgstr "%s ne peut pas fonctionner sans le plugin."
172
-
173
- #: includes/class-freemius.php4176, includes/class-freemius.php4201,
174
- #: includes/class-freemius.php:17103
175
- msgid "Unexpected API error. Please contact the %s's author with the following error."
176
- msgstr "Une erreur est survenue dans l'API. Merci de contacter l'auteur du %s en lui indiquant l'erreur."
177
-
178
- #: includes/class-freemius.php:4815
179
- msgid "Premium %s version was successfully activated."
180
- msgstr "La version premium de %s a été activée avec succès."
181
-
182
- #: includes/class-freemius.php4827, includes/class-freemius.php:6660
183
- msgctxt ""
184
- msgid "W00t"
185
- msgstr "Génial"
186
-
187
- #: includes/class-freemius.php:4842
188
- msgid "You have a %s license."
189
- msgstr "Vous avez une license pour %s."
190
-
191
- #: includes/class-freemius.php4846, includes/class-freemius.php13626,
192
- #: includes/class-freemius.php13637, includes/class-freemius.php16376,
193
- #: includes/class-freemius.php16676, includes/class-freemius.php16741,
194
- #: includes/class-freemius.php:16891
195
- msgctxt "interjection expressing joy or exuberance"
196
- msgid "Yee-haw"
197
- msgstr "Youpi"
198
-
199
- #: includes/class-freemius.php:5110
200
- msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
201
- msgstr "La période d'essai du %s a bien été annulé. L'add-on a été désactivé car il ne fonctionne qu'avec la version premium. Si vous souhaitez l'utiliser ultérieurement, vous devrez acheter une licence."
202
-
203
- #: includes/class-freemius.php:5114
204
- msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
205
- msgstr "%sest un add-on pour la version premium. Vous devez acheter une licence avant d'activer le plugin."
206
-
207
- #: includes/class-freemius.php5123, templates/add-ons.php99,
208
- #: templates/account/partials/addon.php:283
209
- msgid "More information about %s"
210
- msgstr "Plus d'informations à propos de %s"
211
-
212
- #: includes/class-freemius.php:5124
213
- msgid "Purchase License"
214
- msgstr "Acheter une licence"
215
-
216
- #: includes/class-freemius.php6035, templates/connect.php:161
217
- msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
218
- msgstr "Vous devriez recevoir un email d'activation pour %s sur votre boîte %s. Merci de cliquer sur le bouton d'activation dans l'email pour %s."
219
-
220
- #: includes/class-freemius.php:6039
221
- msgid "start the trial"
222
- msgstr "commencer la période d'essai"
223
-
224
- #: includes/class-freemius.php6040, templates/connect.php:165
225
- msgid "complete the install"
226
- msgstr "compléter l'installation"
227
-
228
- #: includes/class-freemius.php:6147
229
- msgid "You are just one step away - %s"
230
- msgstr "Il ne reste qu'une étape - %s"
231
-
232
- #: includes/class-freemius.php:6150
233
- msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
234
- msgid "Complete \"%s\" Activation Now"
235
- msgstr "Compléter \"%s\" Activer Maintenant"
236
-
237
- #: includes/class-freemius.php:6227
238
- msgid "We made a few tweaks to the %s, %s"
239
- msgstr "Nous avons fait quelques modifications au %s, %s"
240
-
241
- #: includes/class-freemius.php:6231
242
- msgid "Opt in to make \"%s\" Better!"
243
- msgstr "Cochez la case pour améliorer \"%s\""
244
-
245
- #: includes/class-freemius.php:6659
246
- msgid "The upgrade of %s was successfully completed."
247
- msgstr "La mise à jour du %s s'est terminée avec succès "
248
-
249
- #: includes/class-freemius.php8384, includes/class-fs-plugin-updater.php581,
250
- #: includes/class-fs-plugin-updater.php733,
251
- #: includes/class-fs-plugin-updater.php739, templates/auto-installation.php:32
252
- msgid "Add-On"
253
- msgstr "Add-On"
254
-
255
- #: includes/class-freemius.php8386, templates/debug.php349,
256
- #: templates/debug.php:510
257
- msgid "Plugin"
258
- msgstr "Plugin"
259
-
260
- #: includes/class-freemius.php8387, templates/debug.php349,
261
- #: templates/debug.php510, templates/forms/deactivation/form.php:64
262
- msgid "Theme"
263
- msgstr "Thème"
264
-
265
- #: includes/class-freemius.php:10808
266
- msgid "invalid_site_details_collection"
267
- msgstr "invalid_site_details_collection"
268
-
269
- #: includes/class-freemius.php:10928
270
- msgid "We couldn't find your email address in the system, are you sure it's the right address?"
271
- msgstr "Nous ne trouvons pas votre adresse mail dans notre système, êtes-vous qu'il s'agit de la bonne adresse ?"
272
-
273
- #: includes/class-freemius.php:10930
274
- msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
275
- msgstr "Nous ne trouvons aucune licence active associée avec cette adresse email, êtes-vous qu'il s'agit de la bonne adresse ?"
276
-
277
- #: includes/class-freemius.php:11166
278
- msgid "Account is pending activation."
279
- msgstr "Compte en cours d'activation."
280
-
281
- #: includes/class-freemius.php:13608
282
- msgid "%s activation was successfully completed."
283
- msgstr "L'activation de %s s'est terminée avec succès."
284
-
285
- #: includes/class-freemius.php:13622
286
- msgid "Your account was successfully activated with the %s plan."
287
- msgstr "Votre compte a été activé avec succès avec la formule %s."
288
-
289
- #: includes/class-freemius.php13633, includes/class-freemius.php:16737
290
- msgid "Your trial has been successfully started."
291
- msgstr "Votre période d'essai a bien démarré."
292
-
293
- #: includes/class-freemius.php14203, includes/class-freemius.php14255,
294
- #: includes/class-freemius.php:14317
295
- msgid "Couldn't activate %s."
296
- msgstr "Impossible d'activer %s."
297
-
298
- #: includes/class-freemius.php14204, includes/class-freemius.php14256,
299
- #: includes/class-freemius.php:14318
300
- msgid "Please contact us with the following message:"
301
- msgstr "Merci de nous contacter avec le message suivant :"
302
-
303
- #: includes/class-freemius.php14666, includes/class-freemius.php:18929
304
- msgid "Upgrade"
305
- msgstr "Mise à jour"
306
-
307
- #: includes/class-freemius.php:14672
308
- msgid "Start Trial"
309
- msgstr "Essai gratuit"
310
-
311
- #: includes/class-freemius.php:14674
312
- msgid "Pricing"
313
- msgstr "Tarifs"
314
-
315
- #: includes/class-freemius.php14734, includes/class-freemius.php:14736
316
- msgid "Affiliation"
317
- msgstr "Affiliation"
318
-
319
- #: includes/class-freemius.php14756, includes/class-freemius.php14758,
320
- #: templates/account.php146, templates/debug.php:314
321
- msgid "Account"
322
- msgstr "Compte"
323
-
324
- #: includes/class-freemius.php14769, includes/class-freemius.php14771,
325
- #: includes/customizer/class-fs-customizer-support-section.php:60
326
- msgid "Contact Us"
327
- msgstr "Contactez Nous"
328
-
329
- #: includes/class-freemius.php14781, includes/class-freemius.php14783,
330
- #: includes/class-freemius.php18939, templates/account.php96,
331
- #: templates/account/partials/addon.php:37
332
- msgid "Add-Ons"
333
- msgstr "Add-Ons"
334
-
335
- #: includes/class-freemius.php14815, templates/pricing.php:97
336
- msgctxt "noun"
337
- msgid "Pricing"
338
- msgstr "Tarifs"
339
-
340
- #: includes/class-freemius.php15009,
341
- #: includes/customizer/class-fs-customizer-support-section.php:67
342
- msgid "Support Forum"
343
- msgstr "Forum de Support"
344
-
345
- #: includes/class-freemius.php:15794
346
- msgid "Your email has been successfully verified - you are AWESOME!"
347
- msgstr "Votre email a été vérifié avec succès - vous êtes FORMIDABLE !"
348
-
349
- #: includes/class-freemius.php:15795
350
- msgctxt "a positive response"
351
- msgid "Right on"
352
- msgstr "Directement"
353
-
354
- #: includes/class-freemius.php:16367
355
- msgid "Your %s Add-on plan was successfully upgraded."
356
- msgstr "Votre Add-on %s a bien été mis à jour."
357
-
358
- #: includes/class-freemius.php:16369
359
- msgid "%s Add-on was successfully purchased."
360
- msgstr "L'Add-on %s a bien été acheté."
361
-
362
- #: includes/class-freemius.php:16372
363
- msgid "Download the latest version"
364
- msgstr "Télécharger la dernière version"
365
-
366
- #: includes/class-freemius.php:16444
367
- msgctxt "%1s - plugin title, %2s - API domain"
368
- msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
369
- msgstr "Votre serveur bloque l'accès à l4API Freemius qui est indispensable pour la synchronisation %1s. Merci de contacter votre hébergeur pour mettre %2s dans la liste blanche "
370
-
371
- #: includes/class-freemius.php16447, includes/class-freemius.php16862,
372
- #: includes/class-freemius.php:16927
373
- msgid "Error received from the server:"
374
- msgstr "Une erreur a été reçu depuis le serveur :"
375
-
376
- #: includes/class-freemius.php:16457
377
- msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
378
- msgstr "Il semble que l'un des paramètres d'authentification soit faux. Veuillez mettre à jour votre Public Key, votre Secret Key ainsi que vote User ID et essayez à nouveau."
379
-
380
- #: includes/class-freemius.php16639, includes/class-freemius.php16867,
381
- #: includes/class-freemius.php:16910
382
- msgctxt ""
383
- msgid "Hmm"
384
- msgstr "Hmm"
385
-
386
- #: includes/class-freemius.php:16652
387
- msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
388
- msgstr "Il semble que vous soyez encore sur la formule %s. Si vous avez mis à jour ou changer vote formule, le problème est probablement de votre côté - désolé."
389
-
390
- #: includes/class-freemius.php16653, templates/account.php98,
391
- #: templates/add-ons.php130, templates/account/partials/addon.php:39
392
- msgctxt "trial period"
393
- msgid "Trial"
394
- msgstr "Période d'essai"
395
-
396
- #: includes/class-freemius.php:16658
397
- msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
398
- msgstr "J'ai mis à jour mon compte mais quand j'essaie de synchroniser la licence, la formule est toujours %s."
399
-
400
- #: includes/class-freemius.php16662, includes/class-freemius.php:16719
401
- msgid "Please contact us here"
402
- msgstr "Merci de nous contacter ici"
403
-
404
- #: includes/class-freemius.php:16672
405
- msgid "Your plan was successfully upgraded."
406
- msgstr "Votre formule a bien été mise à jour."
407
-
408
- #: includes/class-freemius.php:16689
409
- msgid "Your plan was successfully changed to %s."
410
- msgstr "Votre formule a bien été modifié vers %s. "
411
-
412
- #: includes/class-freemius.php:16705
413
- msgid "Your license has expired. You can still continue using the free %s forever."
414
- msgstr "Votre licence a expiré. Vous pouvez toujours utiliser la version gratuite indéfiniment."
415
-
416
- #: includes/class-freemius.php:16707
417
- msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
418
- msgstr "Votre licence a expiré.%1$sFaites la mise à jour maintenant%2$s pour continuer à utiliser le %3$s sans interruption."
419
-
420
- #: includes/class-freemius.php:16715
421
- msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
422
- msgstr "Votre licence a été annulé. Si vous pensez qu'il s'agit d'une erreur, merci de contacter le support."
423
-
424
- #: includes/class-freemius.php:16728
425
- msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
426
- msgstr "Votre licence a expiré. Vous pouvez toujours utiliser les fonctionnalités %s mais vous devrez renouveler votre licence pour recevoir les mises à jour et une assistance."
427
-
428
- #: includes/class-freemius.php:16751
429
- msgid "Your free trial has expired. You can still continue using all our free features."
430
- msgstr "Votre période d'essai gratuite est terminée. Vous pouvez continuer à utiliser toutes nos fonctionnalités gratuites."
431
-
432
- #: includes/class-freemius.php:16753
433
- msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
434
- msgstr "Votre période d'essai gratuite est terminée. %1$sFaites la mise à jour maintenant%2$s pour continuer à utiliser le %3$s sans interruption."
435
-
436
- #: includes/class-freemius.php:16858
437
- msgid "It looks like the license could not be activated."
438
- msgstr "Il semble que la licence ne puisse être activée."
439
-
440
- #: includes/class-freemius.php:16888
441
- msgid "Your license was successfully activated."
442
- msgstr "Votre licence a bien été activée."
443
-
444
- #: includes/class-freemius.php:16914
445
- msgid "It looks like your site currently doesn't have an active license."
446
- msgstr "Il semble que votre site n'ait pas de licence active."
447
-
448
- #: includes/class-freemius.php:16926
449
- msgid "It looks like the license deactivation failed."
450
- msgstr "Il semble que la désactivation de la licence a échoué."
451
-
452
- #: includes/class-freemius.php:16954
453
- msgid "Your license was successfully deactivated, you are back to the %s plan."
454
- msgstr "Votre licence a bien été désactivé, vous utilisez à présent la formule %s."
455
-
456
- #: includes/class-freemius.php:16955
457
- msgid "O.K"
458
- msgstr "O.K"
459
-
460
- #: includes/class-freemius.php:17003
461
- msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
462
- msgstr "La formule a bien été rétrogradé. La licence de votre formule expirera dans %s."
463
-
464
- #: includes/class-freemius.php:17013
465
- msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
466
- msgstr "Il semble que nous ayons un problème temporaire pour rétrograder votre formule. Merci de réessayer dans quelques minutes."
467
-
468
- #: includes/class-freemius.php:17037
469
- msgid "You are already running the %s in a trial mode."
470
- msgstr "Vous utilisez déjà le %s en période d'essai. "
471
-
472
- #: includes/class-freemius.php:17048
473
- msgid "You already utilized a trial before."
474
- msgstr "Vous avez déjà utilisé la période d'essai."
475
-
476
- #: includes/class-freemius.php:17062
477
- msgid "Plan %s do not exist, therefore, can't start a trial."
478
- msgstr "La formule %s n'existe pas, il n'est pas possible de commencer une période d'essai."
479
-
480
- #: includes/class-freemius.php:17073
481
- msgid "Plan %s does not support a trial period."
482
- msgstr "La formule %s ne propose pas de période d'essai."
483
-
484
- #: includes/class-freemius.php:17084
485
- msgid "None of the %s's plans supports a trial period."
486
- msgstr "Aucune formule du %s ne propose de période d'essai."
487
-
488
- #: includes/class-freemius.php:17134
489
- msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
490
- msgstr "Il semble que vous ne soyez plus en période d'essai donc il n'y a rien à annuler :)"
491
-
492
- #: includes/class-freemius.php:17185
493
- msgid "Your %s free trial was successfully cancelled."
494
- msgstr "Votre période d'essai %s a bien été annulé."
495
-
496
- #: includes/class-freemius.php:17190
497
- msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
498
- msgstr "Il semble que nous ayons un problème temporaire pour annuler votre période d'essai. Merci de réessayer dans quelques minutes."
499
-
500
- #: includes/class-freemius.php:17474
501
- msgid "Version %s was released."
502
- msgstr "La version %s vient d'être publiée."
503
-
504
- #: includes/class-freemius.php:17474
505
- msgid "Please download %s."
506
- msgstr "Merci de télécharger %s."
507
-
508
- #: includes/class-freemius.php:17481
509
- msgid "the latest %s version here"
510
- msgstr "la dernière version de %s ici"
511
-
512
- #: includes/class-freemius.php:17486
513
- msgid "New"
514
- msgstr "Nouveau"
515
-
516
- #: includes/class-freemius.php:17491
517
- msgid "Seems like you got the latest release."
518
- msgstr "Il semble que vous ayez la dernière version."
519
-
520
- #: includes/class-freemius.php:17492
521
- msgid "You are all good!"
522
- msgstr "Vous êtes tout bon !"
523
-
524
- #: includes/class-freemius.php:17758
525
- msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
526
- msgstr "Un email de vérification vient d'être envoyé sur %s. Si vous ne le recevez pas d'ici 5 minutes, merci de vérifier dans vos spams."
527
-
528
- #: includes/class-freemius.php:17893
529
- msgid "Site successfully opted in."
530
- msgstr "Site ajouté avec succès."
531
-
532
- #: includes/class-freemius.php17894, includes/class-freemius.php:18671
533
- msgid "Awesome"
534
- msgstr "Formidable"
535
-
536
- #: includes/class-freemius.php17910, templates/forms/optout.php:32
537
- msgid "We appreciate your help in making the %s better by letting us track some usage data."
538
- msgstr "Nous vous remercions de votre aide pour améliorer le %s en nous permettant de recevoir des informations concernant son usage."
539
-
540
- #: includes/class-freemius.php:17911
541
- msgid "Thank you!"
542
- msgstr "Merci !"
543
-
544
- #: includes/class-freemius.php:17918
545
- msgid "We will no longer be sending any usage data of %s on %s to %s."
546
- msgstr "Nous n'enverrons plus d'information d'utilisation de %s sur %s à %s."
547
-
548
- #: includes/class-freemius.php:18033
549
- msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
550
- msgstr "Merci de vérifier votre messagerie, vous devriez recevoir un email via %s pour confirmer le changement de propriétaire. Pour des raisons de sécurité, vous devez confirmer le changement dans les prochaines 15 minutes. Vérifiez vos spams si vous ne recevez pas le message."
551
-
552
- #: includes/class-freemius.php:18039
553
- msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
554
- msgstr "Merci pour la confirmation du changement de propriétaire. Un email vient d'être envoyé à %s pour la validation finale."
555
-
556
- #: includes/class-freemius.php:18044
557
- msgid "%s is the new owner of the account."
558
- msgstr "%s est le nouveau propriétaire du compte."
559
-
560
- #: includes/class-freemius.php:18046
561
- msgctxt "as congratulations"
562
- msgid "Congrats"
563
- msgstr "Félicitations"
564
-
565
- #: includes/class-freemius.php:18066
566
- msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
567
- msgstr "Désolé, nous ne pouvons pas mettre à jour l'email. Il existe déjà un autre utilisateur avec cette adresse."
568
-
569
- #: includes/class-freemius.php:18067
570
- msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
571
- msgstr "Si vous voulez transférer la propriété du compte de %s à %s cliquez sur le bouton Changement De Propriétaire"
572
-
573
- #: includes/class-freemius.php:18074
574
- msgid "Change Ownership"
575
- msgstr "Changement De Propriétaire"
576
-
577
- #: includes/class-freemius.php:18082
578
- msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
579
- msgstr "Votre email a été mis à jour. Vous allez recevoir un message avec les instructions de confirmation."
580
-
581
- #: includes/class-freemius.php:18094
582
- msgid "Please provide your full name."
583
- msgstr "Merci d'indiquer vos prénom et nom."
584
-
585
- #: includes/class-freemius.php:18099
586
- msgid "Your name was successfully updated."
587
- msgstr "Votre nom a été mis à jour."
588
-
589
- #: includes/class-freemius.php:18160
590
- msgid "You have successfully updated your %s."
591
- msgstr "Votre %s a bien été mis à jour."
592
-
593
- #: includes/class-freemius.php:18300
594
- msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
595
- msgstr "Sachez que les informations de l'add-ons de %s sont issus d'un serveur externe."
596
-
597
- #: includes/class-freemius.php:18301
598
- msgctxt "advance notice of something that will need attention."
599
- msgid "Heads up"
600
- msgstr "Avertissement"
601
-
602
- #: includes/class-freemius.php:18711
603
- msgctxt "exclamation"
604
- msgid "Hey"
605
- msgstr "Hey"
606
-
607
- #: includes/class-freemius.php:18711
608
- msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
609
- msgstr "Que pensez-vous de %s ? Testez nos %s fonctionnalités premium avec %d jours d'essai gratuit."
610
-
611
- #: includes/class-freemius.php:18719
612
- msgid "No commitment for %s days - cancel anytime!"
613
- msgstr "Pas d'engagement durant %s jours - annuler quand vous voulez !"
614
-
615
- #: includes/class-freemius.php:18720
616
- msgid "No credit card required"
617
- msgstr "Pas besoin de carte bancaire"
618
-
619
- #: includes/class-freemius.php18727, templates/forms/trial-start.php:53
620
- msgctxt "call to action"
621
- msgid "Start free trial"
622
- msgstr "Commencer l'essai gratuit"
623
-
624
- #: includes/class-freemius.php:18804
625
- msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
626
- msgstr "Dites, savez-vous que %s propose un système de affiliation ? Si vous aimez le %s vous pouvez devenir notre ambassadeur et gagner de l'argent !"
627
-
628
- #: includes/class-freemius.php:18813
629
- msgid "Learn more"
630
- msgstr "En savoir plus"
631
-
632
- #: includes/class-freemius.php18963, templates/account.php394,
633
- #: templates/account.php497, templates/connect.php169,
634
- #: templates/connect.php408, templates/forms/license-activation.php24,
635
- #: templates/account/partials/addon.php:230
636
- msgid "Activate License"
637
- msgstr "Activer la licence"
638
-
639
- #: includes/class-freemius.php18964, templates/account.php457,
640
- #: templates/account.php496, templates/account/partials/site.php:256
641
- msgid "Change License"
642
- msgstr "Changer la licence"
643
-
644
- #: includes/class-freemius.php19046, templates/account/partials/site.php:161
645
- msgid "Opt Out"
646
- msgstr "Désinscription"
647
-
648
- #: includes/class-freemius.php19048, includes/class-freemius.php19053,
649
- #: templates/account/partials/site.php43,
650
- #: templates/account/partials/site.php:161
651
- msgid "Opt In"
652
- msgstr "Inscription"
653
-
654
- #: includes/class-freemius.php:19245
655
- msgid "Please follow these steps to complete the upgrade"
656
- msgstr "Merci de suivre ces étapes pour finaliser la mise à jour"
657
-
658
- #: includes/class-freemius.php:19249
659
- msgid "Download the latest %s version"
660
- msgstr "Télécharger la dernière version %s"
661
-
662
- #: includes/class-freemius.php:19253
663
- msgid "Upload and activate the downloaded version"
664
- msgstr "Téléverser et activer la version téléchargée"
665
-
666
- #: includes/class-freemius.php:19255
667
- msgid "How to upload and activate?"
668
- msgstr "Comment téléverser et activer ?"
669
-
670
- #: includes/class-freemius.php:19384
671
- msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
672
- msgstr "%sCliquez ici %s pour choisir les sites sur lesquels vous souhaitez activer la licence."
673
-
674
- #: includes/class-freemius.php:19545
675
- msgid "Auto installation only works for opted-in users."
676
- msgstr "L'installation automatique ne fonctionne que pour les utilisateurs qui se sont inscrits."
677
-
678
- #: includes/class-freemius.php19555, includes/class-freemius.php19588,
679
- #: includes/class-fs-plugin-updater.php713,
680
- #: includes/class-fs-plugin-updater.php:727
681
- msgid "Invalid module ID."
682
- msgstr "ID du module non valide."
683
-
684
- #: includes/class-freemius.php19564, includes/class-fs-plugin-updater.php:747
685
- msgid "Premium version already active."
686
- msgstr "Version premium déjà active."
687
-
688
- #: includes/class-freemius.php:19571
689
- msgid "You do not have a valid license to access the premium version."
690
- msgstr "Vous n'avez pas de licence valide pour accéder à la version premium."
691
-
692
- #: includes/class-freemius.php:19578
693
- msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
694
- msgstr "Le plugin est un \"Serviceware\" ce qui veut dire qu'il n'a pas de version premium de code."
695
-
696
- #: includes/class-freemius.php19596, includes/class-fs-plugin-updater.php:746
697
- msgid "Premium add-on version already installed."
698
- msgstr "La version premium de l'add-on est déjà installée."
699
-
700
- #: includes/class-freemius.php:19941
701
- msgid "View paid features"
702
- msgstr "Voir les fonctionnalités payantes"
703
-
704
- #: includes/class-freemius.php:20251
705
- msgid "Thank you so much for using %s and its add-ons!"
706
- msgstr "Merci beaucoup d'utiliser %s et ses add-ons !"
707
-
708
- #: includes/class-freemius.php:20252
709
- msgid "Thank you so much for using %s!"
710
- msgstr "Merci beaucoup d'utiliser %s !"
711
-
712
- #: includes/class-freemius.php:20258
713
- msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
714
- msgstr "Vous avez déjà validé notre suivi d'utilisation qui nous permet de continuer à améliorer le %s."
715
-
716
- #: includes/class-freemius.php:20262
717
- msgid "Thank you so much for using our products!"
718
- msgstr "Merci beaucoup d'utiliser nos produits !"
719
-
720
- #: includes/class-freemius.php:20263
721
- msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
722
- msgstr "Vous avez déjà validé notre suivi d'utilisation qui nous permet de continuer à les améliorer."
723
-
724
- #: includes/class-freemius.php:20282
725
- msgid "%s and its add-ons"
726
- msgstr "%s et ses add-ons"
727
-
728
- #: includes/class-freemius.php:20291
729
- msgid "Products"
730
- msgstr "Produits"
731
-
732
- #: includes/class-freemius.php20298, templates/connect.php:259
733
- msgid "Yes"
734
- msgstr "Oui"
735
-
736
- #: includes/class-freemius.php20299, templates/connect.php:260
737
- msgid "send me security & feature updates, educational content and offers."
738
- msgstr "envoyez moi des mises à jour de sécurité et des fonctionnalités, du contenu instructif et des offres."
739
-
740
- #: includes/class-freemius.php20300, templates/connect.php:265
741
- msgid "No"
742
- msgstr "Non"
743
-
744
- #: includes/class-freemius.php20302, templates/connect.php:267
745
- msgid "do %sNOT%s send me security & feature updates, educational content and offers."
746
- msgstr "ne %sPAS%s m'envoyer de mises à jour de sécurité ou de fonctionnalités, ni de contenu instructif, ni d'offre."
747
-
748
- #: includes/class-freemius.php:20312
749
- msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂"
750
- msgstr "Suite au exigences de conformité du %sRèglement européen Général sur la Protection des Données (GDPR)%s il est nécessaire que vous donniez, à nouveau, votre consentement explicite pour confirmer que vous êtes avec nous 🙂"
751
-
752
- #: includes/class-freemius.php20314, templates/connect.php:274
753
- msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
754
- msgstr "Merci de nous indiquer si vous souhaitez que nous vous contactions pour les mises à jour de sécurité et de fonctionnalités, du contenu instructif et des offres spéciales :"
755
-
756
- #: includes/class-freemius.php:20598
757
- msgid "License key is empty."
758
- msgstr "La clé de licence est vide."
759
-
760
- #: includes/class-fs-plugin-updater.php184,
761
- #: includes/class-fs-plugin-updater.php:219
762
- msgid "%sRenew your license now%s to access version %s security & feature updates, and support."
763
- msgstr "%s Renouveler votre licence maintenant %s pour accéder aux mise à jour de sécurité et de fonctionnalités de la version %s ainsi qu'au support."
764
-
765
- #: includes/class-fs-plugin-updater.php:776
766
- msgid "Installing plugin: %s"
767
- msgstr "Installation du plugin : %s"
768
-
769
- #: includes/class-fs-plugin-updater.php:817
770
- msgid "Unable to connect to the filesystem. Please confirm your credentials."
771
- msgstr "Impossible de se connecter au système de fichiers. Merci de confirmer vos autorisations."
772
-
773
- #: includes/class-fs-plugin-updater.php:923
774
- msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
775
- msgstr "Le package du plugin à télécharger ne contient pas de dossier avec le bon slug et iln'a pas été possible de le renommer."
776
-
777
- #: includes/fs-plugin-info-dialog.php336,
778
- #: templates/account/partials/addon.php:287
779
- msgctxt "verb"
780
- msgid "Purchase"
781
- msgstr "Acheter"
782
-
783
- #: includes/fs-plugin-info-dialog.php:339
784
- msgid "Start my free %s"
785
- msgstr "Commencer ma %s gratuite"
786
-
787
- #: includes/fs-plugin-info-dialog.php:380
788
- msgid "Install Free Version Now"
789
- msgstr "Installer la version gratuite maintenant"
790
-
791
- #: includes/fs-plugin-info-dialog.php381, templates/auto-installation.php111,
792
- #: templates/account/partials/addon.php267,
793
- #: templates/account/partials/addon.php:317
794
- msgid "Install Now"
795
- msgstr "Installer maintenant"
796
-
797
- #: includes/fs-plugin-info-dialog.php:392
798
- msgctxt "as download latest version"
799
- msgid "Download Latest Free Version"
800
- msgstr "Télécharger la dernière version gratuite"
801
-
802
- #: includes/fs-plugin-info-dialog.php393, templates/account.php80,
803
- #: templates/account/partials/addon.php:21
804
- msgctxt "as download latest version"
805
- msgid "Download Latest"
806
- msgstr "Télécharger la dernière version"
807
-
808
- #: includes/fs-plugin-info-dialog.php:403
809
- msgid "Install Free Version Update Now"
810
- msgstr "Installer la dernière mise à jour gratuite maintenant"
811
-
812
- #: includes/fs-plugin-info-dialog.php404, templates/account.php:448
813
- msgid "Install Update Now"
814
- msgstr "Installer la mise à jour maintenant"
815
-
816
- #: includes/fs-plugin-info-dialog.php:415
817
- msgid "Newer Free Version (%s) Installed"
818
- msgstr "La nouvelle version gratuite ( %s ) a été installé"
819
-
820
- #: includes/fs-plugin-info-dialog.php:416
821
- msgid "Newer Version (%s) Installed"
822
- msgstr "Nouvelle Version (%s) Installée"
823
-
824
- #: includes/fs-plugin-info-dialog.php:424
825
- msgid "Latest Free Version Installed"
826
- msgstr "La dernière version gratuite a été installé"
827
-
828
- #: includes/fs-plugin-info-dialog.php:425
829
- msgid "Latest Version Installed"
830
- msgstr "Dernière Version Installée"
831
-
832
- #: includes/fs-plugin-info-dialog.php:580
833
- msgctxt "Plugin installer section title"
834
- msgid "Description"
835
- msgstr "Description"
836
-
837
- #: includes/fs-plugin-info-dialog.php:581
838
- msgctxt "Plugin installer section title"
839
- msgid "Installation"
840
- msgstr "Installation"
841
-
842
- #: includes/fs-plugin-info-dialog.php:582
843
- msgctxt "Plugin installer section title"
844
- msgid "FAQ"
845
- msgstr "FAQ"
846
-
847
- #: includes/fs-plugin-info-dialog.php583,
848
- #: templates/plugin-info/description.php:55
849
- msgid "Screenshots"
850
- msgstr "Captures d'écran"
851
-
852
- #: includes/fs-plugin-info-dialog.php:584
853
- msgctxt "Plugin installer section title"
854
- msgid "Changelog"
855
- msgstr "Changelog"
856
-
857
- #: includes/fs-plugin-info-dialog.php:585
858
- msgctxt "Plugin installer section title"
859
- msgid "Reviews"
860
- msgstr "Commentaires"
861
-
862
- #: includes/fs-plugin-info-dialog.php:586
863
- msgctxt "Plugin installer section title"
864
- msgid "Other Notes"
865
- msgstr "Autres Informations"
866
-
867
- #: includes/fs-plugin-info-dialog.php:601
868
- msgctxt "Plugin installer section title"
869
- msgid "Features & Pricing"
870
- msgstr "Fonctionnalités & Tarifs"
871
-
872
- #: includes/fs-plugin-info-dialog.php:611
873
- msgid "Plugin Install"
874
- msgstr "Installation du Plugin"
875
-
876
- #: includes/fs-plugin-info-dialog.php:683
877
- msgctxt "e.g. Professional Plan"
878
- msgid "%s Plan"
879
- msgstr "Formule %s"
880
-
881
- #: includes/fs-plugin-info-dialog.php:709
882
- msgctxt "e.g. the best product"
883
- msgid "Best"
884
- msgstr "Best"
885
-
886
- #: includes/fs-plugin-info-dialog.php715,
887
- #: includes/fs-plugin-info-dialog.php:735
888
- msgctxt "as every month"
889
- msgid "Monthly"
890
- msgstr "Mensuel"
891
-
892
- #: includes/fs-plugin-info-dialog.php:718
893
- msgctxt "as once a year"
894
- msgid "Annual"
895
- msgstr "Annuel"
896
-
897
- #: includes/fs-plugin-info-dialog.php:721
898
- msgid "Lifetime"
899
- msgstr "À vie"
900
-
901
- #: includes/fs-plugin-info-dialog.php735,
902
- #: includes/fs-plugin-info-dialog.php737,
903
- #: includes/fs-plugin-info-dialog.php:739
904
- msgctxt "e.g. billed monthly"
905
- msgid "Billed %s"
906
- msgstr "%s Facturé"
907
-
908
- #: includes/fs-plugin-info-dialog.php:737
909
- msgctxt "as once a year"
910
- msgid "Annually"
911
- msgstr "Annuel"
912
-
913
- #: includes/fs-plugin-info-dialog.php:739
914
- msgctxt "as once a year"
915
- msgid "Once"
916
- msgstr "Une fois"
917
-
918
- #: includes/fs-plugin-info-dialog.php:745
919
- msgid "Single Site License"
920
- msgstr "Licence 1 site"
921
-
922
- #: includes/fs-plugin-info-dialog.php:747
923
- msgid "Unlimited Licenses"
924
- msgstr "Licences sites illimités"
925
-
926
- #: includes/fs-plugin-info-dialog.php:749
927
- msgid "Up to %s Sites"
928
- msgstr "Jusqu'à %s Sites"
929
-
930
- #: includes/fs-plugin-info-dialog.php759,
931
- #: templates/plugin-info/features.php:82
932
- msgctxt "as monthly period"
933
- msgid "mo"
934
- msgstr "mois"
935
-
936
- #: includes/fs-plugin-info-dialog.php766,
937
- #: templates/plugin-info/features.php:80
938
- msgctxt "as annual period"
939
- msgid "year"
940
- msgstr "année"
941
-
942
- #: includes/fs-plugin-info-dialog.php:820
943
- msgctxt "noun"
944
- msgid "Price"
945
- msgstr "Tarif"
946
-
947
- #: includes/fs-plugin-info-dialog.php:868
948
- msgid "Save %s"
949
- msgstr "Économisez %s"
950
-
951
- #: includes/fs-plugin-info-dialog.php:878
952
- msgid "No commitment for %s - cancel anytime"
953
- msgstr "Pas d'engagement durant %s - annuler quand vous voulez"
954
-
955
- #: includes/fs-plugin-info-dialog.php:881
956
- msgid "After your free %s, pay as little as %s"
957
- msgstr "Après vos %s gratuits, payez seulement %s"
958
-
959
- #: includes/fs-plugin-info-dialog.php:892
960
- msgid "Details"
961
- msgstr "Détails"
962
-
963
- #: includes/fs-plugin-info-dialog.php896, templates/account.php87,
964
- #: templates/debug.php191, templates/debug.php228, templates/debug.php442,
965
- #: templates/account/partials/addon.php:28
966
- msgctxt "product version"
967
- msgid "Version"
968
- msgstr "Version"
969
-
970
- #: includes/fs-plugin-info-dialog.php:903
971
- msgctxt "as the plugin author"
972
- msgid "Author"
973
- msgstr "Auteur"
974
-
975
- #: includes/fs-plugin-info-dialog.php:910
976
- msgid "Last Updated"
977
- msgstr "Dernière mise à jour"
978
-
979
- #: includes/fs-plugin-info-dialog.php:915
980
- msgctxt "x-ago"
981
- msgid "%s ago"
982
- msgstr "Il y a %s"
983
-
984
- #: includes/fs-plugin-info-dialog.php:924
985
- msgid "Requires WordPress Version"
986
- msgstr "Version de WordPress requise"
987
-
988
- #: includes/fs-plugin-info-dialog.php:925
989
- msgid "%s or higher"
990
- msgstr "%s ou plus"
991
-
992
- #: includes/fs-plugin-info-dialog.php:932
993
- msgid "Compatible up to"
994
- msgstr "Compatible jusqu'à"
995
-
996
- #: includes/fs-plugin-info-dialog.php:940
997
- msgid "Downloaded"
998
- msgstr "Téléchargé"
999
-
1000
- #: includes/fs-plugin-info-dialog.php:944
1001
- msgid "%s time"
1002
- msgstr "%s fois"
1003
-
1004
- #: includes/fs-plugin-info-dialog.php:946
1005
- msgid "%s times"
1006
- msgstr "%s fois"
1007
-
1008
- #: includes/fs-plugin-info-dialog.php:956
1009
- msgid "WordPress.org Plugin Page"
1010
- msgstr "Page WordPress.org du plugin"
1011
-
1012
- #: includes/fs-plugin-info-dialog.php:964
1013
- msgid "Plugin Homepage"
1014
- msgstr "Site Web du plugin"
1015
-
1016
- #: includes/fs-plugin-info-dialog.php972,
1017
- #: includes/fs-plugin-info-dialog.php:1054
1018
- msgid "Donate to this plugin"
1019
- msgstr "Faire une donation pour ce plugin"
1020
-
1021
- #: includes/fs-plugin-info-dialog.php:979
1022
- msgid "Average Rating"
1023
- msgstr "Note moyenne"
1024
-
1025
- #: includes/fs-plugin-info-dialog.php:986
1026
- msgid "based on %s"
1027
- msgstr "Basé sur %s"
1028
-
1029
- #: includes/fs-plugin-info-dialog.php:990
1030
- msgid "%s rating"
1031
- msgstr "%s notation"
1032
-
1033
- #: includes/fs-plugin-info-dialog.php:992
1034
- msgid "%s ratings"
1035
- msgstr "%snotations "
1036
-
1037
- #: includes/fs-plugin-info-dialog.php:1007
1038
- msgid "%s star"
1039
- msgstr "%s étoile"
1040
-
1041
- #: includes/fs-plugin-info-dialog.php:1009
1042
- msgid "%s stars"
1043
- msgstr "%s étoiles"
1044
-
1045
- #: includes/fs-plugin-info-dialog.php:1020
1046
- msgid "Click to see reviews that provided a rating of %s"
1047
- msgstr "Cliquez pour voir les avis avec une notation de %s"
1048
-
1049
- #: includes/fs-plugin-info-dialog.php:1033
1050
- msgid "Contributors"
1051
- msgstr "Contributeurs"
1052
-
1053
- #: includes/fs-plugin-info-dialog.php1062,
1054
- #: includes/fs-plugin-info-dialog.php:1064
1055
- msgid "Warning"
1056
- msgstr "Attention"
1057
-
1058
- #: includes/fs-plugin-info-dialog.php:1062
1059
- msgid "This plugin has not been tested with your current version of WordPress."
1060
- msgstr "Ce plugin n'a pas été testé avec votre actuelle version de WordPress"
1061
-
1062
- #: includes/fs-plugin-info-dialog.php:1064
1063
- msgid "This plugin has not been marked as compatible with your version of WordPress."
1064
- msgstr "Ce plugin n'a pas été indiqué comme étant compatible avec votre version actuelle de WordPress"
1065
-
1066
- #: includes/fs-plugin-info-dialog.php:1083
1067
- msgid "Paid add-on must be deployed to Freemius."
1068
- msgstr "Les add-ons payant doivent être déposés sur Freemius"
1069
-
1070
- #: includes/fs-plugin-info-dialog.php:1084
1071
- msgid "Add-on must be deployed to WordPress.org or Freemius."
1072
- msgstr "Les add-ons doivent être déposés sur WordPress.org ou Freemius."
1073
-
1074
- #: templates/account.php81, templates/account/partials/addon.php22,
1075
- #: templates/account/partials/site.php:295
1076
- msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
1077
- msgstr "Rétrograder votre formule arrêtera immédiatement tous les futurs paiements récurrents et votre licence de la formule %s expirera dans %s."
1078
-
1079
- #: templates/account.php82, templates/account/partials/addon.php:23
1080
- msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
1081
- msgstr "Annuler la période d'essai va immédiatement bloquer les fonctionnalités premium. Souhaitez-vous continuer ?"
1082
-
1083
- #: templates/account.php83, templates/account/partials/addon.php24,
1084
- #: templates/account/partials/site.php:296
1085
- msgid "You can still enjoy all %s features but you will not have access to %s updates and support."
1086
- msgstr "Vous pouvez toujours bénéficier de toutes les fonctionnalités %s mais vous n'aurez pas accès aux mises à jour et au support %s."
1087
-
1088
- #: templates/account.php84, templates/account/partials/addon.php25,
1089
- #: templates/account/partials/site.php:297
1090
- msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
1091
- msgstr "Une fois la licence expirée vous pourrez toujours utiliser la version gratuite mais vous n'aurez PAS accès aux fonctionnalités de %s."
1092
-
1093
- #. translators: %s: Plan title (e.g. "Professional")
1094
- #: templates/account.php86,
1095
- #: templates/account/partials/activate-license-button.php31,
1096
- #: templates/account/partials/addon.php:27
1097
- msgid "Activate %s Plan"
1098
- msgstr "Activer la formule %s"
1099
-
1100
- #. translators: %s: Time period (e.g. Auto renews in "2 months")
1101
- #: templates/account.php89, templates/account/partials/addon.php30,
1102
- #: templates/account/partials/site.php:275
1103
- msgid "Auto renews in %s"
1104
- msgstr "Renouvellements automatique dans %s"
1105
-
1106
- #. translators: %s: Time period (e.g. Expires in "2 months")
1107
- #: templates/account.php91, templates/account/partials/addon.php32,
1108
- #: templates/account/partials/site.php:277
1109
- msgid "Expires in %s"
1110
- msgstr "Expire dans %s"
1111
-
1112
- #: templates/account.php92, templates/account/partials/addon.php:33
1113
- msgctxt "as synchronize license"
1114
- msgid "Sync License"
1115
- msgstr "Synchroniser la licence"
1116
-
1117
- #: templates/account.php93, templates/account/partials/addon.php:34
1118
- msgid "Cancel Trial"
1119
- msgstr "Annuler la période d'essai"
1120
-
1121
- #: templates/account.php94, templates/account/partials/addon.php:35
1122
- msgid "Change Plan"
1123
- msgstr "Changer de formule"
1124
-
1125
- #: templates/account.php95, templates/account/partials/addon.php:36
1126
- msgctxt "verb"
1127
- msgid "Upgrade"
1128
- msgstr "Mise à jour"
1129
-
1130
- #: templates/account.php97, templates/account/partials/addon.php38,
1131
- #: templates/account/partials/site.php:298
1132
- msgctxt "verb"
1133
- msgid "Downgrade"
1134
- msgstr "Rétrograder"
1135
-
1136
- #: templates/account.php99, templates/add-ons.php126,
1137
- #: templates/plugin-info/features.php72,
1138
- #: templates/account/partials/addon.php40,
1139
- #: templates/account/partials/site.php:31
1140
- msgid "Free"
1141
- msgstr "Gratuit"
1142
-
1143
- #: templates/account.php100, templates/account/partials/addon.php:41
1144
- msgid "Activate"
1145
- msgstr "Activer"
1146
-
1147
- #: templates/account.php101, templates/debug.php361,
1148
- #: includes/customizer/class-fs-customizer-upsell-control.php106,
1149
- #: templates/account/partials/addon.php:42
1150
- msgctxt "as product pricing plan"
1151
- msgid "Plan"
1152
- msgstr "Formule"
1153
-
1154
- #: templates/account.php:154
1155
- msgid "Free Trial"
1156
- msgstr "Essai gratuit"
1157
-
1158
- #: templates/account.php:165
1159
- msgid "Account Details"
1160
- msgstr "Détails du compte"
1161
-
1162
- #: templates/account.php:175
1163
- msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
1164
- msgstr "Supprimer le compte désactivera automatiquement la licence de votre formule %s afin que vous puissiez l'utiliser sur d'autres sites. Si vous voulez aussi annuler le paiement récurrent, cliquez sur le bouton \"Annuler\" et commencez par \"Rétrograder\" votre compte. Êtes-vous sûr de vouloir poursuivre la suppression ? "
1165
-
1166
- #: templates/account.php:177
1167
- msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
1168
- msgstr "La suppression est permanente. Ne faites cette suppression que si vous ne souhaitez plus utiliser le %s. Êtes-vous sûr de vouloir poursuivre la suppression ?"
1169
-
1170
- #: templates/account.php:180
1171
- msgid "Delete Account"
1172
- msgstr "Supprimer le compte"
1173
-
1174
- #: templates/account.php192, templates/account/partials/addon.php155,
1175
- #: templates/account/partials/deactivate-license-button.php:35
1176
- msgid "Deactivate License"
1177
- msgstr "Désactiver la licence"
1178
-
1179
- #: templates/account.php:210
1180
- msgid "Are you sure you want to proceed?"
1181
- msgstr "Êtes-vous de vouloir continuer ?"
1182
-
1183
- #: templates/account.php210, templates/account/partials/addon.php:177
1184
- msgid "Cancel Subscription"
1185
- msgstr "Annuler l'abonnement"
1186
-
1187
- #: templates/account.php:239
1188
- msgctxt "as synchronize"
1189
- msgid "Sync"
1190
- msgstr "Synchroniser"
1191
-
1192
- #: templates/account.php253, templates/debug.php:477
1193
- msgid "Name"
1194
- msgstr "Nom"
1195
-
1196
- #: templates/account.php259, templates/debug.php:478
1197
- msgid "Email"
1198
- msgstr "Email"
1199
-
1200
- #: templates/account.php266, templates/debug.php360, templates/debug.php:516
1201
- msgid "User ID"
1202
- msgstr "User ID"
1203
-
1204
- #: templates/account.php:274
1205
- msgid "Site ID"
1206
- msgstr "Site ID"
1207
-
1208
- #: templates/account.php:277
1209
- msgid "No ID"
1210
- msgstr "ID manquant"
1211
-
1212
- #: templates/account.php282, templates/debug.php233, templates/debug.php362,
1213
- #: templates/debug.php443, templates/debug.php480,
1214
- #: templates/account/partials/site.php:219
1215
- msgid "Public Key"
1216
- msgstr "Clef publique"
1217
-
1218
- #: templates/account.php288, templates/debug.php363, templates/debug.php444,
1219
- #: templates/debug.php481, templates/account/partials/site.php:231
1220
- msgid "Secret Key"
1221
- msgstr "Clef secrête"
1222
-
1223
- #: templates/account.php:291
1224
- msgctxt "as secret encryption key missing"
1225
- msgid "No Secret"
1226
- msgstr "Clef secrète manquante"
1227
-
1228
- #: templates/account.php310, templates/account/partials/site.php112,
1229
- #: templates/account/partials/site.php:114
1230
- msgid "Trial"
1231
- msgstr "Période d'essai"
1232
-
1233
- #: templates/account.php329, templates/debug.php521,
1234
- #: templates/account/partials/site.php:248
1235
- msgid "License Key"
1236
- msgstr "Clef de licence"
1237
-
1238
- #: templates/account.php:359
1239
- msgid "not verified"
1240
- msgstr "Non vérifié"
1241
-
1242
- #: templates/account.php:416
1243
- msgid "Premium version"
1244
- msgstr "Version premium"
1245
-
1246
- #: templates/account.php:418
1247
- msgid "Free version"
1248
- msgstr "Version gratuite"
1249
-
1250
- #: templates/account.php:430
1251
- msgid "Verify Email"
1252
- msgstr "Vérifier l'email"
1253
-
1254
- #: templates/account.php:441
1255
- msgid "Download %s Version"
1256
- msgstr "Télécharger la version %s"
1257
-
1258
- #: templates/account.php455, templates/account.php636,
1259
- #: templates/account/partials/site.php237,
1260
- #: templates/account/partials/site.php:255
1261
- msgctxt "verb"
1262
- msgid "Show"
1263
- msgstr "Afficher"
1264
-
1265
- #: templates/account.php:469
1266
- msgid "What is your %s?"
1267
- msgstr "Quel est votre %s ?"
1268
-
1269
- #: templates/account.php477, templates/account/billing.php:27
1270
- msgctxt "verb"
1271
- msgid "Edit"
1272
- msgstr "Éditer"
1273
-
1274
- #: templates/account.php:490
1275
- msgid "Sites"
1276
- msgstr "Sites"
1277
-
1278
- #: templates/account.php:501
1279
- msgid "Search by address"
1280
- msgstr "Recherche par adresse"
1281
-
1282
- #: templates/account.php510, templates/account.php558, templates/debug.php226,
1283
- #: templates/debug.php354, templates/debug.php439, templates/debug.php476,
1284
- #: templates/debug.php514, templates/debug.php587,
1285
- #: templates/account/payments.php35, templates/debug/logger.php:21
1286
- msgid "ID"
1287
- msgstr "ID"
1288
-
1289
- #: templates/account.php511, templates/debug.php:357
1290
- msgid "Address"
1291
- msgstr "Adresse"
1292
-
1293
- #: templates/account.php:512
1294
- msgid "License"
1295
- msgstr "Licence"
1296
-
1297
- #: templates/account.php:513
1298
- msgid "Plan"
1299
- msgstr "Formule"
1300
-
1301
- #: templates/account.php:561
1302
- msgctxt "as software license"
1303
- msgid "License"
1304
- msgstr "Licence"
1305
-
1306
- #: templates/account.php:630
1307
- msgctxt "verb"
1308
- msgid "Hide"
1309
- msgstr "Cacher"
1310
-
1311
- #: templates/account.php:665
1312
- msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
1313
- msgstr "Désactiver la licence bloquera toutes les fonctionnalités premium mais vous permettra d'activer la licence sur un autre site. Êtes-vous sûr de vouloir continuer ?"
1314
-
1315
- #: templates/add-ons.php:36
1316
- msgid "Add Ons for %s"
1317
- msgstr "Add Ons pour %s"
1318
-
1319
- #: templates/add-ons.php:44
1320
- msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
1321
- msgstr "Nous n'avons pas pu charger la liste des add-ons. C'est probablement une difficulté de notre côté, merci de d'essayer à nouveau dans quelques minutes."
1322
-
1323
- #: templates/add-ons.php:135
1324
- msgid "View details"
1325
- msgstr "Voir les détails"
1326
-
1327
- #: templates/admin-notice.php13, templates/forms/license-activation.php208,
1328
- #: templates/forms/resend-key.php:77
1329
- msgctxt "as close a window"
1330
- msgid "Dismiss"
1331
- msgstr "Fermer"
1332
-
1333
- #: templates/auto-installation.php:45
1334
- msgid "%s sec"
1335
- msgstr "%s sec"
1336
-
1337
- #: templates/auto-installation.php:83
1338
- msgid "Automatic Installation"
1339
- msgstr "Installation automatique"
1340
-
1341
- #: templates/auto-installation.php:93
1342
- msgid "An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now."
1343
- msgstr "Un téléchargement et une installation automatique de %s (version premium) de %s va commencer dans %s. Si vous voulez le faire manuellement, cliquez sur le bouton d'annulation maintenant."
1344
-
1345
- #: templates/auto-installation.php:104
1346
- msgid "The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page."
1347
- msgstr "L'installation a commencé et peut prendre quelques minutes pour se finir. Merci de patienter jusqu'à ce qu'elle soit terminée - veuillez ne pas rafraichir cette page."
1348
-
1349
- #: templates/auto-installation.php:109
1350
- msgid "Cancel Installation"
1351
- msgstr "Annuler l'installation"
1352
-
1353
- #: templates/checkout.php:172
1354
- msgid "Checkout"
1355
- msgstr "Paiement"
1356
-
1357
- #: templates/checkout.php:172
1358
- msgid "PCI compliant"
1359
- msgstr "Compatible PCI"
1360
-
1361
- #. translators: %s: name (e.g. Hey John,)
1362
- #: templates/connect.php:110
1363
- msgctxt "greeting"
1364
- msgid "Hey %s,"
1365
- msgstr "Hey %s,"
1366
-
1367
- #: templates/connect.php:152
1368
- msgid "Allow & Continue"
1369
- msgstr "Autoriser & Continuer"
1370
-
1371
- #: templates/connect.php:156
1372
- msgid "Re-send activation email"
1373
- msgstr "Renvoyer l'email d'activation"
1374
-
1375
- #: templates/connect.php:160
1376
- msgid "Thanks %s!"
1377
- msgstr "Merci %s !"
1378
-
1379
- #: templates/connect.php170, templates/forms/license-activation.php:43
1380
- msgid "Agree & Activate License"
1381
- msgstr "Valider & Activer la licence"
1382
-
1383
- #: templates/connect.php:179
1384
- msgid "Thanks for purchasing %s! To get started, please enter your license key:"
1385
- msgstr "Merci d'avoir acheté %s ! Pour commencer, veuillez indiquer votre clef de licence :"
1386
-
1387
- #: templates/connect.php:186
1388
- msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
1389
- msgstr "Ne ratez jamais une mise à jour importante - acceptez nos notifications de mises à jour de sécurité et de fonctionnalités, de contenu instructif, d'offres ainsi que le suivi d'activité non sensible avec %4$s."
1390
-
1391
- #: templates/connect.php:187
1392
- msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
1393
- msgstr "Ne manquez jamais une mise à jour importante - optez pour nos notifications de mises à jour de sécurité et de fonctionnalités, et un suivi diagnostique non sensible avec %4$s."
1394
-
1395
- #: templates/connect.php:193
1396
- msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1397
- msgstr "Ne ratez jamais une mise à jour importante - acceptez nos notifications de mises à jour de sécurité et de fonctionnalités, de contenu instructif, d'offres ainsi que le suivi d'activité non sensible avec %4$s. Dans le cas contraire, pas de problème ! %1$s fonctionnera parfaitement aussi."
1398
-
1399
- #: templates/connect.php:194
1400
- msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
1401
- msgstr "Ne ratez jamais une mise à jour importante - acceptez nos notifications de mises à jour de sécurité et de fonctionnalités ainsi que le suivi d'activité non sensible avec %4$s. Dans le cas contraire, pas de problème ! %1$s fonctionnera parfaitement aussi."
1402
-
1403
- #: templates/connect.php:228
1404
- msgid "We're excited to introduce the Freemius network-level integration."
1405
- msgstr "Nous sommes impatient de vous présenter l'intégration Freemius au niveau réseau."
1406
-
1407
- #: templates/connect.php:231
1408
- msgid "During the update process we detected %d site(s) that are still pending license activation."
1409
- msgstr "Durant le processus de mise à jour nous avons détecté %d site(s) toujours en attente d'activation de la licence."
1410
-
1411
- #: templates/connect.php:233
1412
- msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
1413
- msgstr "Si vous voulez utiliser le %s sur ces sites, merci d'indiquer votre clé de licence ci-dessous et de cliquer sur le bouton d'activation."
1414
-
1415
- #: templates/connect.php:235
1416
- msgid "%s's paid features"
1417
- msgstr "Fonctionnalités payantes de %s"
1418
-
1419
- #: templates/connect.php:240
1420
- msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
1421
- msgstr "Éventuellement, vous pouvez l'ignorer pour l'instant et activer la licence plus tard, sur votre page de compte du réseau %s."
1422
-
1423
- #: templates/connect.php:242
1424
- msgid "During the update process we detected %s site(s) in the network that are still pending your attention."
1425
- msgstr "Durant le processus de mise à jour nous avons détecté %s site(s) dans le réseau que vous devez vérifier."
1426
-
1427
- #: templates/connect.php251, templates/forms/license-activation.php:46
1428
- msgid "License key"
1429
- msgstr "Clef de licence"
1430
-
1431
- #: templates/connect.php254, templates/forms/license-activation.php:19
1432
- msgid "Can't find your license key?"
1433
- msgstr "Vous ne trouvez pas votre clef de licence ?"
1434
-
1435
- #: templates/connect.php302, templates/connect.php617,
1436
- #: templates/forms/deactivation/retry-skip.php:20
1437
- msgctxt "verb"
1438
- msgid "Skip"
1439
- msgstr "Passer"
1440
-
1441
- #: templates/connect.php:305
1442
- msgid "Delegate to Site Admins"
1443
- msgstr "Déléguer aux administrateurs du site"
1444
-
1445
- #: templates/connect.php:305
1446
- msgid "If you click it, this decision will be delegated to the sites administrators."
1447
- msgstr "Si vous cliquez, cette décision sera déléguée aux administrateurs des sites."
1448
-
1449
- #: templates/connect.php:333
1450
- msgid "Your Profile Overview"
1451
- msgstr "Résumé de votre profil"
1452
-
1453
- #: templates/connect.php:334
1454
- msgid "Name and email address"
1455
- msgstr "Nom et adresse email"
1456
-
1457
- #: templates/connect.php:339
1458
- msgid "Your Site Overview"
1459
- msgstr "Résumé de votre site"
1460
-
1461
- #: templates/connect.php:340
1462
- msgid "Site URL, WP version, PHP info, plugins & themes"
1463
- msgstr "Site URL, WP version, PHP info, plugins & themes"
1464
-
1465
- #: templates/connect.php:345
1466
- msgid "Admin Notices"
1467
- msgstr "Notifications Administrateur"
1468
-
1469
- #: templates/connect.php346, templates/connect.php:362
1470
- msgid "Updates, announcements, marketing, no spam"
1471
- msgstr "Mises à jour, annonces, marketing, pas de spam"
1472
-
1473
- #: templates/connect.php:351
1474
- msgid "Current %s Events"
1475
- msgstr "Évènements du %s actuel"
1476
-
1477
- #: templates/connect.php:352
1478
- msgid "Activation, deactivation and uninstall"
1479
- msgstr "Activation, désactivation et désintallation"
1480
-
1481
- #: templates/connect.php:361
1482
- msgid "Newsletter"
1483
- msgstr "Newsletter"
1484
-
1485
- #: templates/connect.php378, templates/forms/license-activation.php:38
1486
- msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
1487
- msgstr "Le %1$s va régulièrement envoyer des données à %2$s pour vérifier les mises à jour de sécurité et de fonctionnalités ainsi que pour vérifier la validité de votre licence."
1488
-
1489
- #: templates/connect.php:383
1490
- msgid "What permissions are being granted?"
1491
- msgstr "Quelles autorisations sont accordées ?"
1492
-
1493
- #: templates/connect.php:404
1494
- msgid "Don't have a license key?"
1495
- msgstr "Vous n'avez pas de clef de licence ?"
1496
-
1497
- #: templates/connect.php:405