FooGallery – Image Gallery WordPress Plugin - Version 1.6.1

Version Description

  • New : Gutenberg FooGallery block (including live gallery previews!)
  • Fix : foogallery shortcode not rendering in certain cases
  • Fix : disabling lazy loading via settings was being ignored
  • Update : Freemius SDK 2.1.3 (which fixes fatal Multisite bug)
Download this release

Release Info

Developer bradvin
Plugin Icon 128x128 FooGallery – Image Gallery WordPress Plugin
Version 1.6.1
Comparing to
See all releases

Code changes from version 1.5.9 to 1.6.1

Files changed (46) hide show
  1. README.txt +12 -1
  2. extensions/albums/class-albums-extension.php +2 -4
  3. extensions/albums/public/class-shortcodes.php +0 -4
  4. foogallery.php +5 -2
  5. freemius/assets/css/admin/account.css +1 -1
  6. freemius/assets/css/admin/affiliation.css +1 -1
  7. freemius/assets/css/admin/common.css +2 -2
  8. freemius/assets/css/admin/connect.css +1 -1
  9. freemius/assets/css/admin/dialog-boxes.css +2 -2
  10. freemius/assets/css/admin/gdpr-optin-notice.css +1 -1
  11. freemius/assets/scss/_colors.scss +68 -68
  12. freemius/assets/scss/admin/_gdpr-consent.scss +80 -80
  13. freemius/assets/scss/admin/_license-activation.scss +46 -46
  14. freemius/assets/scss/admin/_modal-common.scss +193 -193
  15. freemius/assets/scss/admin/_multisite-options.scss +39 -39
  16. freemius/assets/scss/admin/_tooltip.scss +65 -65
  17. freemius/assets/scss/admin/account.scss +301 -301
  18. freemius/assets/scss/admin/common.scss +1 -1
  19. freemius/assets/scss/admin/dialog-boxes.scss +7 -7
  20. freemius/assets/scss/admin/gdpr-optin-notice.scss +16 -16
  21. freemius/composer.json +10 -10
  22. freemius/config.php +387 -387
  23. freemius/includes/class-freemius-abstract.php +596 -596
  24. freemius/includes/class-freemius.php +210 -64
  25. freemius/includes/class-fs-admin-notices.php +320 -320
  26. freemius/includes/class-fs-logger.php +690 -690
  27. freemius/includes/class-fs-plugin-updater.php +179 -2
  28. freemius/includes/class-fs-user-lock.php +125 -125
  29. freemius/includes/customizer/class-fs-customizer-upsell-control.php +156 -156
  30. freemius/includes/entities/class-fs-payment.php +109 -109
  31. freemius/includes/entities/class-fs-plugin-license.php +269 -269
  32. freemius/includes/entities/class-fs-plugin-tag.php +49 -49
  33. freemius/includes/entities/class-fs-plugin.php +119 -119
  34. freemius/includes/entities/class-fs-site.php +4 -1
  35. freemius/includes/fs-plugin-info-dialog.php +12 -9
  36. freemius/includes/managers/class-fs-admin-menu-manager.php +956 -956
  37. freemius/includes/managers/class-fs-cache-manager.php +325 -325
  38. freemius/includes/managers/class-fs-gdpr-manager.php +201 -201
  39. freemius/includes/managers/class-fs-key-value-storage.php +391 -391
  40. freemius/includes/managers/class-fs-option-manager.php +489 -489
  41. freemius/includes/supplements/fs-essential-functions-1.1.7.1.php +47 -47
  42. freemius/languages/freemius-da_DK.po +12 -12
  43. freemius/languages/freemius-en.po +2205 -2205
  44. freemius/languages/freemius-es_ES.po +2299 -2299
  45. freemius/languages/freemius-fr_FR.po +2299 -2299
  46. freemius/languages/freemius-he_IL.po +434 -2300
README.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: bradvin, steveush, fooplugins
3
  Donate link: http://fooplugins.com
4
  Tags: gallery, image gallery, photo gallery, responsive, album, media gallery, masonry gallery, portfolio, justified gallery, video gallery, photography, youtube gallery
5
  Requires at least: 3.9
6
- Tested up to: 4.9.8
7
  Stable tag: trunk
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -20,6 +20,7 @@ https://youtu.be/zY8eSTEIwpU
20
 
21
  **Features**
22
 
 
23
  * Lazy loading
24
  * Simple Pagination (dots)
25
  * Live previews in admin
@@ -70,6 +71,10 @@ https://youtu.be/zY8eSTEIwpU
70
 
71
  * [FooGallery Documentation](https://fooplugins.helpscoutdocs.com/collection/8-foogallery)
72
 
 
 
 
 
73
  **GDPR**
74
 
75
  When you install FooGallery for the first time, the plugin asks you (the website admin) to opt-in so that we can track your usage of the plugin and provide a better service (send you update emails for new version releases and security updates etc). *This is optional and not required in order to use the plugin.*
@@ -138,6 +143,12 @@ Update now to get all the latest features, bug fixes and improvements!
138
 
139
  == Changelog ==
140
 
 
 
 
 
 
 
141
  = 1.5.9 =
142
  * Fix : Theme customizer not loading for some theme/plugin combinations
143
 
3
  Donate link: http://fooplugins.com
4
  Tags: gallery, image gallery, photo gallery, responsive, album, media gallery, masonry gallery, portfolio, justified gallery, video gallery, photography, youtube gallery
5
  Requires at least: 3.9
6
+ Tested up to: 5.0
7
  Stable tag: trunk
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
20
 
21
  **Features**
22
 
23
+ * Gutenberg ready (Gallery previews inside the new editor!)
24
  * Lazy loading
25
  * Simple Pagination (dots)
26
  * Live previews in admin
71
 
72
  * [FooGallery Documentation](https://fooplugins.helpscoutdocs.com/collection/8-foogallery)
73
 
74
+ **Gutenberg**
75
+
76
+ We love the new Gutenberg editor. We have built a really simple-to-use Gutenberg block to add your existing FooGalleries in seconds. And it includes live previews of the gallery too! Also works in WP5 beta!
77
+
78
  **GDPR**
79
 
80
  When you install FooGallery for the first time, the plugin asks you (the website admin) to opt-in so that we can track your usage of the plugin and provide a better service (send you update emails for new version releases and security updates etc). *This is optional and not required in order to use the plugin.*
143
 
144
  == Changelog ==
145
 
146
+ = 1.6.1 =
147
+ * New : Gutenberg FooGallery block (including live gallery previews!)
148
+ * Fix : foogallery shortcode not rendering in certain cases
149
+ * Fix : disabling lazy loading via settings was being ignored
150
+ * Update : Freemius SDK 2.1.3 (which fixes fatal Multisite bug)
151
+
152
  = 1.5.9 =
153
  * Fix : Theme customizer not loading for some theme/plugin combinations
154
 
extensions/albums/class-albums-extension.php CHANGED
@@ -15,6 +15,7 @@ if ( ! class_exists( 'FooGallery_Albums_Extension' ) ) {
15
 
16
  new FooGallery_Album_Rewrite_Rules();
17
  new FooGallery_Albums_PostTypes();
 
18
 
19
  if ( is_admin() ) {
20
  new FooGallery_Albums_Admin_Columns();
@@ -29,9 +30,7 @@ if ( ! class_exists( 'FooGallery_Albums_Extension' ) ) {
29
  add_action( 'foogallery_uninstall', array($this, 'uninstall' ) );
30
 
31
  } else {
32
-
33
  new FooGallery_Album_Template_Loader();
34
- new FooGallery_Album_Shortcodes();
35
  }
36
  add_filter( 'foogallery_album_templates_files', array( $this, 'register_myself' ) );
37
  add_filter( 'foogallery_defaults', array( $this, 'apply_album_defaults' ) );
@@ -44,6 +43,7 @@ if ( ! class_exists( 'FooGallery_Albums_Extension' ) ) {
44
  require_once( FOOGALLERY_ALBUM_PATH . 'class-posttypes.php' );
45
  require_once( FOOGALLERY_ALBUM_PATH . 'class-foogallery-album.php' );
46
  require_once( FOOGALLERY_ALBUM_PATH . 'public/class-rewrite-rules.php' );
 
47
 
48
  if ( is_admin() ) {
49
  //only admin
@@ -51,8 +51,6 @@ if ( ! class_exists( 'FooGallery_Albums_Extension' ) ) {
51
  require_once( FOOGALLERY_ALBUM_PATH . 'admin/class-columns.php' );
52
  } else {
53
  //only front-end
54
- require_once( FOOGALLERY_ALBUM_PATH . 'public/class-shortcodes.php' );
55
-
56
  //load Template \ Loader files
57
  require_once( FOOGALLERY_ALBUM_PATH . 'public/class-foogallery-album-template-loader.php' );
58
  }
15
 
16
  new FooGallery_Album_Rewrite_Rules();
17
  new FooGallery_Albums_PostTypes();
18
+ new FooGallery_Album_Shortcodes();
19
 
20
  if ( is_admin() ) {
21
  new FooGallery_Albums_Admin_Columns();
30
  add_action( 'foogallery_uninstall', array($this, 'uninstall' ) );
31
 
32
  } else {
 
33
  new FooGallery_Album_Template_Loader();
 
34
  }
35
  add_filter( 'foogallery_album_templates_files', array( $this, 'register_myself' ) );
36
  add_filter( 'foogallery_defaults', array( $this, 'apply_album_defaults' ) );
43
  require_once( FOOGALLERY_ALBUM_PATH . 'class-posttypes.php' );
44
  require_once( FOOGALLERY_ALBUM_PATH . 'class-foogallery-album.php' );
45
  require_once( FOOGALLERY_ALBUM_PATH . 'public/class-rewrite-rules.php' );
46
+ require_once( FOOGALLERY_ALBUM_PATH . 'public/class-shortcodes.php' );
47
 
48
  if ( is_admin() ) {
49
  //only admin
51
  require_once( FOOGALLERY_ALBUM_PATH . 'admin/class-columns.php' );
52
  } else {
53
  //only front-end
 
 
54
  //load Template \ Loader files
55
  require_once( FOOGALLERY_ALBUM_PATH . 'public/class-foogallery-album-template-loader.php' );
56
  }
extensions/albums/public/class-shortcodes.php CHANGED
@@ -8,11 +8,7 @@ if ( ! class_exists( 'FooGallery_Album_Shortcodes' ) ) {
8
  class FooGallery_Album_Shortcodes {
9
 
10
  function __construct() {
11
- add_action( 'init', array( $this, 'init_shortcode' ) );
12
  add_action( 'foogallery_loaded_album_template', array( $this, 'render_custom_css' ) );
13
- }
14
-
15
- function init_shortcode() {
16
  add_shortcode( foogallery_album_shortcode_tag(), array( $this, 'render_foogallery_album_shortcode' ) );
17
  }
18
 
8
  class FooGallery_Album_Shortcodes {
9
 
10
  function __construct() {
 
11
  add_action( 'foogallery_loaded_album_template', array( $this, 'render_custom_css' ) );
 
 
 
12
  add_shortcode( foogallery_album_shortcode_tag(), array( $this, 'render_foogallery_album_shortcode' ) );
13
  }
14
 
foogallery.php CHANGED
@@ -3,7 +3,7 @@
3
  /*
4
  Plugin Name: FooGallery
5
  Description: FooGallery is the most intuitive and extensible gallery management tool ever created for WordPress
6
- Version: 1.5.9
7
  Author: FooPlugins
8
  Plugin URI: https://foo.gallery
9
  Author URI: http://fooplugins.com
@@ -23,7 +23,7 @@ if ( !class_exists( 'FooGallery_Plugin' ) ) {
23
  define( 'FOOGALLERY_PATH', plugin_dir_path( __FILE__ ) );
24
  define( 'FOOGALLERY_URL', plugin_dir_url( __FILE__ ) );
25
  define( 'FOOGALLERY_FILE', __FILE__ );
26
- define( 'FOOGALLERY_VERSION', '1.5.9' );
27
  define( 'FOOGALLERY_SETTINGS_VERSION', '2' );
28
  require_once FOOGALLERY_PATH . 'includes/constants.php';
29
  // Create a helper function for easy SDK access.
@@ -128,6 +128,7 @@ if ( !class_exists( 'FooGallery_Plugin' ) ) {
128
  new FooGallery_Public();
129
  }
130
 
 
131
  new FooGallery_Thumbnails();
132
  new FooGallery_Attachment_Filters();
133
  new FooGallery_Retina();
@@ -149,6 +150,8 @@ if ( !class_exists( 'FooGallery_Plugin' ) ) {
149
  //include the default templates no matter what!
150
  new FooGallery_Default_Templates();
151
  add_filter( 'foogallery_extensions_for_view', array( $this, 'add_foogallery_pro_extension' ) );
 
 
152
  }
153
 
154
  function add_foogallery_pro_extension( $extensions )
3
  /*
4
  Plugin Name: FooGallery
5
  Description: FooGallery is the most intuitive and extensible gallery management tool ever created for WordPress
6
+ Version: 1.6.1
7
  Author: FooPlugins
8
  Plugin URI: https://foo.gallery
9
  Author URI: http://fooplugins.com
23
  define( 'FOOGALLERY_PATH', plugin_dir_path( __FILE__ ) );
24
  define( 'FOOGALLERY_URL', plugin_dir_url( __FILE__ ) );
25
  define( 'FOOGALLERY_FILE', __FILE__ );
26
+ define( 'FOOGALLERY_VERSION', '1.6.1' );
27
  define( 'FOOGALLERY_SETTINGS_VERSION', '2' );
28
  require_once FOOGALLERY_PATH . 'includes/constants.php';
29
  // Create a helper function for easy SDK access.
128
  new FooGallery_Public();
129
  }
130
 
131
+ new FooGallery_Shortcodes();
132
  new FooGallery_Thumbnails();
133
  new FooGallery_Attachment_Filters();
134
  new FooGallery_Retina();
150
  //include the default templates no matter what!
151
  new FooGallery_Default_Templates();
152
  add_filter( 'foogallery_extensions_for_view', array( $this, 'add_foogallery_pro_extension' ) );
153
+ //init Gutenberg!
154
+ new FooGallery_Gutenberg();
155
  }
156
 
157
  function add_foogallery_pro_extension( $extensions )
freemius/assets/css/admin/account.css CHANGED
@@ -1 +1 @@
1
- #fs_account .postbox,#fs_account .widefat{max-width:700px}#fs_account h3{font-size:1.3em;padding:12px 15px;margin:0 0 12px 0;line-height:1.4;border-bottom:1px solid #F1F1F1}#fs_account h3 .dashicons{width:26px;height:26px;font-size:1.3em}#fs_account i.dashicons{font-size:1.2em;height:1.2em;width:1.2em}#fs_account .dashicons{vertical-align:middle}#fs_account .fs-header-actions{position:absolute;top:17px;right:15px;font-size:0.9em}#fs_account .fs-header-actions ul{margin:0}#fs_account .fs-header-actions li{float:left}#fs_account .fs-header-actions li form{display:inline-block}#fs_account .fs-header-actions li a{text-decoration:none}#fs_account_details .button-group{float:right}.rtl #fs_account .fs-header-actions{left:15px;right:auto}.fs-key-value-table{width:100%}.fs-key-value-table form{display:inline-block}.fs-key-value-table tr td:first-child{text-align:right}.fs-key-value-table tr td:first-child nobr{font-weight:bold}.fs-key-value-table tr td:first-child form{display:block}.fs-key-value-table tr td.fs-right{text-align:right}.fs-key-value-table tr.fs-odd{background:#ebebeb}.fs-key-value-table td,.fs-key-value-table th{padding:10px}.fs-key-value-table code{line-height:28px}.fs-key-value-table var,.fs-key-value-table code,.fs-key-value-table input[type="text"]{color:#0073AA;font-size:16px;background:none}.fs-key-value-table input[type="text"]{width:100%;font-weight:bold}label.fs-tag{background:#ffba00;color:#fff;display:inline-block;border-radius:3px;padding:5px;font-size:11px;line-height:11px;vertical-align:baseline}label.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error{background:#dc3232}#fs_sites .fs-scrollable-table .fs-table-body{max-height:200px;overflow:auto;border:1px solid #e5e5e5}#fs_sites .fs-scrollable-table .fs-table-body>table.widefat{border:none !important}#fs_sites .fs-scrollable-table .fs-main-column{width:100%}#fs_sites .fs-scrollable-table .fs-site-details td:first-of-type{text-align:right;color:grey;width:1px}#fs_sites .fs-scrollable-table .fs-site-details td:last-of-type{text-align:right}#fs_sites .fs-scrollable-table .fs-install-details table tr td{width:1px;white-space:nowrap}#fs_sites .fs-scrollable-table .fs-install-details table tr td:last-of-type{width:auto}#fs_addons h3{border:none;margin-bottom:0;padding:4px 5px}#fs_addons td{vertical-align:middle}#fs_addons thead{white-space:nowrap}#fs_addons td:first-child,#fs_addons th:first-child{text-align:left;font-weight:bold}#fs_addons td:last-child,#fs_addons th:last-child{text-align:right}#fs_addons th{font-weight:bold}#fs_billing_address{width:100%}#fs_billing_address tr td{width:50%;padding:5px}#fs_billing_address tr:first-of-type td{padding-top:0}#fs_billing_address span{font-weight:bold}#fs_billing_address input,#fs_billing_address select{display:block;width:100%;margin-top:5px}#fs_billing_address input::-moz-placeholder,#fs_billing_address select::-moz-placeholder{color:transparent;opacity:1}#fs_billing_address input:-ms-input-placeholder,#fs_billing_address select:-ms-input-placeholder{color:transparent}#fs_billing_address input::-webkit-input-placeholder,#fs_billing_address select::-webkit-input-placeholder{color:transparent}#fs_billing_address input.fs-read-mode,#fs_billing_address select.fs-read-mode{border-color:transparent;color:#777;border-bottom:1px dashed #ccc;padding-left:0;background:none}#fs_billing_address.fs-read-mode td span{display:none}#fs_billing_address.fs-read-mode input,#fs_billing_address.fs-read-mode select{border-color:transparent;color:#777;border-bottom:1px dashed #ccc;padding-left:0;background:none}#fs_billing_address.fs-read-mode input::-moz-placeholder,#fs_billing_address.fs-read-mode select::-moz-placeholder{color:#ccc;opacity:1}#fs_billing_address.fs-read-mode input:-ms-input-placeholder,#fs_billing_address.fs-read-mode select:-ms-input-placeholder{color:#ccc}#fs_billing_address.fs-read-mode input::-webkit-input-placeholder,#fs_billing_address.fs-read-mode select::-webkit-input-placeholder{color:#ccc}#fs_billing_address button{display:block;width:100%}
1
+ #fs_account .postbox,#fs_account .widefat{max-width:700px}#fs_account h3{font-size:1.3em;padding:12px 15px;margin:0 0 12px 0;line-height:1.4;border-bottom:1px solid #F1F1F1}#fs_account h3 .dashicons{width:26px;height:26px;font-size:1.3em}#fs_account i.dashicons{font-size:1.2em;height:1.2em;width:1.2em}#fs_account .dashicons{vertical-align:middle}#fs_account .fs-header-actions{position:absolute;top:17px;right:15px;font-size:0.9em}#fs_account .fs-header-actions ul{margin:0}#fs_account .fs-header-actions li{float:left}#fs_account .fs-header-actions li form{display:inline-block}#fs_account .fs-header-actions li a{text-decoration:none}#fs_account_details .button-group{float:right}.rtl #fs_account .fs-header-actions{left:15px;right:auto}.fs-key-value-table{width:100%}.fs-key-value-table form{display:inline-block}.fs-key-value-table tr td:first-child{text-align:right}.fs-key-value-table tr td:first-child nobr{font-weight:bold}.fs-key-value-table tr td:first-child form{display:block}.fs-key-value-table tr td.fs-right{text-align:right}.fs-key-value-table tr.fs-odd{background:#ebebeb}.fs-key-value-table td,.fs-key-value-table th{padding:10px}.fs-key-value-table code{line-height:28px}.fs-key-value-table var,.fs-key-value-table code,.fs-key-value-table input[type="text"]{color:#0073AA;font-size:16px;background:none}.fs-key-value-table input[type="text"]{width:100%;font-weight:bold}label.fs-tag{background:#ffba00;color:#fff;display:inline-block;border-radius:3px;padding:5px;font-size:11px;line-height:11px;vertical-align:baseline}label.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error{background:#dc3232}#fs_sites .fs-scrollable-table .fs-table-body{max-height:200px;overflow:auto;border:1px solid #e5e5e5}#fs_sites .fs-scrollable-table .fs-table-body>table.widefat{border:none !important}#fs_sites .fs-scrollable-table .fs-main-column{width:100%}#fs_sites .fs-scrollable-table .fs-site-details td:first-of-type{text-align:right;color:grey;width:1px}#fs_sites .fs-scrollable-table .fs-site-details td:last-of-type{text-align:right}#fs_sites .fs-scrollable-table .fs-install-details table tr td{width:1px;white-space:nowrap}#fs_sites .fs-scrollable-table .fs-install-details table tr td:last-of-type{width:auto}#fs_addons h3{border:none;margin-bottom:0;padding:4px 5px}#fs_addons td{vertical-align:middle}#fs_addons thead{white-space:nowrap}#fs_addons td:first-child,#fs_addons th:first-child{text-align:left;font-weight:bold}#fs_addons td:last-child,#fs_addons th:last-child{text-align:right}#fs_addons th{font-weight:bold}#fs_billing_address{width:100%}#fs_billing_address tr td{width:50%;padding:5px}#fs_billing_address tr:first-of-type td{padding-top:0}#fs_billing_address span{font-weight:bold}#fs_billing_address input,#fs_billing_address select{display:block;width:100%;margin-top:5px}#fs_billing_address input::-moz-placeholder,#fs_billing_address select::-moz-placeholder{color:transparent;opacity:1}#fs_billing_address input:-ms-input-placeholder,#fs_billing_address select:-ms-input-placeholder{color:transparent}#fs_billing_address input::-webkit-input-placeholder,#fs_billing_address select::-webkit-input-placeholder{color:transparent}#fs_billing_address input.fs-read-mode,#fs_billing_address select.fs-read-mode{border-color:transparent;color:#777;border-bottom:1px dashed #ccc;padding-left:0;background:none}#fs_billing_address.fs-read-mode td span{display:none}#fs_billing_address.fs-read-mode input,#fs_billing_address.fs-read-mode select{border-color:transparent;color:#777;border-bottom:1px dashed #ccc;padding-left:0;background:none}#fs_billing_address.fs-read-mode input::-moz-placeholder,#fs_billing_address.fs-read-mode select::-moz-placeholder{color:#ccc;opacity:1}#fs_billing_address.fs-read-mode input:-ms-input-placeholder,#fs_billing_address.fs-read-mode select:-ms-input-placeholder{color:#ccc}#fs_billing_address.fs-read-mode input::-webkit-input-placeholder,#fs_billing_address.fs-read-mode select::-webkit-input-placeholder{color:#ccc}#fs_billing_address button{display:block;width:100%}
freemius/assets/css/admin/affiliation.css CHANGED
@@ -1 +1 @@
1
- @charset "UTF-8";#fs_affiliation_content_wrapper #messages{margin-top:25px}#fs_affiliation_content_wrapper h3{font-size:24px;padding:0;margin-left:0}#fs_affiliation_content_wrapper ul li{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;list-style-type:none}#fs_affiliation_content_wrapper ul li:before{content:'✓';margin-right:10px;font-weight:bold}#fs_affiliation_content_wrapper p:not(.description),#fs_affiliation_content_wrapper li,#fs_affiliation_content_wrapper label{font-size:16px !important;line-height:26px !important}#fs_affiliation_content_wrapper .button{margin-top:20px;margin-bottom:7px;line-height:35px;height:40px;font-size:16px}#fs_affiliation_content_wrapper .button#cancel_button{margin-right:5px}#fs_affiliation_content_wrapper form .input-container{margin-bottom:15px}#fs_affiliation_content_wrapper form .input-container .input-label{font-weight:bold;display:block;width:100%}#fs_affiliation_content_wrapper form .input-container.input-container-text label,#fs_affiliation_content_wrapper form .input-container.input-container-text input,#fs_affiliation_content_wrapper form .input-container.input-container-text textarea{display:block}#fs_affiliation_content_wrapper form .input-container #add_domain,#fs_affiliation_content_wrapper form .input-container .remove-domain{text-decoration:none;display:inline-block;margin-top:3px}#fs_affiliation_content_wrapper form .input-container #add_domain:focus,#fs_affiliation_content_wrapper form .input-container .remove-domain:focus{box-shadow:none}#fs_affiliation_content_wrapper form .input-container #add_domain.disabled,#fs_affiliation_content_wrapper form .input-container .remove-domain.disabled{color:#aaa;cursor:default}#fs_affiliation_content_wrapper form #extra_domains_container .description{margin-top:0;position:relative;top:-4px}#fs_affiliation_content_wrapper form #extra_domains_container .extra-domain-input-container{margin-bottom:15px}#fs_affiliation_content_wrapper form #extra_domains_container .extra-domain-input-container .domain{display:inline-block;margin-right:5px}#fs_affiliation_content_wrapper form #extra_domains_container .extra-domain-input-container .domain:last-of-type{margin-bottom:0}
1
+ @charset "UTF-8";#fs_affiliation_content_wrapper #messages{margin-top:25px}#fs_affiliation_content_wrapper h3{font-size:24px;padding:0;margin-left:0}#fs_affiliation_content_wrapper ul li{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;list-style-type:none}#fs_affiliation_content_wrapper ul li:before{content:'✓';margin-right:10px;font-weight:bold}#fs_affiliation_content_wrapper p:not(.description),#fs_affiliation_content_wrapper li,#fs_affiliation_content_wrapper label{font-size:16px !important;line-height:26px !important}#fs_affiliation_content_wrapper .button{margin-top:20px;margin-bottom:7px;line-height:35px;height:40px;font-size:16px}#fs_affiliation_content_wrapper .button#cancel_button{margin-right:5px}#fs_affiliation_content_wrapper form .input-container{margin-bottom:15px}#fs_affiliation_content_wrapper form .input-container .input-label{font-weight:bold;display:block;width:100%}#fs_affiliation_content_wrapper form .input-container.input-container-text label,#fs_affiliation_content_wrapper form .input-container.input-container-text input,#fs_affiliation_content_wrapper form .input-container.input-container-text textarea{display:block}#fs_affiliation_content_wrapper form .input-container #add_domain,#fs_affiliation_content_wrapper form .input-container .remove-domain{text-decoration:none;display:inline-block;margin-top:3px}#fs_affiliation_content_wrapper form .input-container #add_domain:focus,#fs_affiliation_content_wrapper form .input-container .remove-domain:focus{box-shadow:none}#fs_affiliation_content_wrapper form .input-container #add_domain.disabled,#fs_affiliation_content_wrapper form .input-container .remove-domain.disabled{color:#aaa;cursor:default}#fs_affiliation_content_wrapper form #extra_domains_container .description{margin-top:0;position:relative;top:-4px}#fs_affiliation_content_wrapper form #extra_domains_container .extra-domain-input-container{margin-bottom:15px}#fs_affiliation_content_wrapper form #extra_domains_container .extra-domain-input-container .domain{display:inline-block;margin-right:5px}#fs_affiliation_content_wrapper form #extra_domains_container .extra-domain-input-container .domain:last-of-type{margin-bottom:0}
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}#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}
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/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-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}
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/scss/_colors.scss CHANGED
@@ -1,68 +1,68 @@
1
- $menu-hover-color: #333;
2
- $darkest-color: #000;
3
- $fms-live-color: #71ae00;
4
- $fms-test-color: #f7941d;
5
- $fms-link-color: #29abe1;
6
- $fms-link-hover-color: darken(#29abe1, 10%);
7
- $body-bkg: #111;
8
- $special-color: #d3135a;
9
- $body-color: #f1f1f1;
10
- $fms-white: #f1f1f1;
11
- $container-bkg: #222;
12
- $container-bkg-odd: #262626;
13
- $container-border-color: #333;
14
- $table-head-bkg: #333;
15
- $table-head-color: #999;
16
- $info-color: #999;
17
- $error-color: #ff0000;
18
-
19
- $fs-logo-blue-color: #29abe1;
20
- $fs-logo-green-color: #71ae00;
21
- $fs-logo-magenta-color: #d3135a;
22
-
23
- // WordPress colors.
24
- $page-header-bkg: #333;
25
- $page-header-color: $fms-white;
26
- $text-dark-color: #333;
27
- $text-light-color: #666;
28
- $text-lightest-color: #999;
29
-
30
- // Notices.
31
- $wp-notice-success-color: #f7fff7;
32
- $wp-notice-success-dark-color: #46b450;
33
- $wp-notice-error-color: #ffeaea;
34
- $wp-notice-error-dark-color: #dc3232;
35
- $wp-notice-warn-color: #fff8e5;
36
- $wp-notice-warn-dark-color: #ffb900;
37
- $fs-notice-promotion-border-color: #00a0d2;
38
- $fs-notice-promotion-bkg: #f2fcff;
39
-
40
- // WP Buttons.
41
- $button-primary-bkg: #6bc406;
42
- $button-primary-color: $fms-white;
43
- $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;
50
- $wix_color: #fac102;
51
- $shopify_color: #80d100;
52
- $addthis_color: #fe6d4e;
53
- $tumblr_color: #34506b;
54
- $zepo_color: #00baf2;
55
- $jquery_color: #000919;
56
- $javascript_color: #00baf2;
57
- $squarespace_color: #000;
58
-
59
- $blog_color: #ff6600;
60
- $facebook_color: #3b5998;
61
- $twitter_color: #4099ff;
62
- $linkedin_color: #4875b4;
63
- $youtube_color: #ff3333;
64
- $gplus_color: #c63d2d;
65
-
66
- // Tooltip
67
- $tooltip-color: #fff;
68
- $tooltip-bkg-color: rgba(0,0,0,0.8);
1
+ $menu-hover-color: #333;
2
+ $darkest-color: #000;
3
+ $fms-live-color: #71ae00;
4
+ $fms-test-color: #f7941d;
5
+ $fms-link-color: #29abe1;
6
+ $fms-link-hover-color: darken(#29abe1, 10%);
7
+ $body-bkg: #111;
8
+ $special-color: #d3135a;
9
+ $body-color: #f1f1f1;
10
+ $fms-white: #f1f1f1;
11
+ $container-bkg: #222;
12
+ $container-bkg-odd: #262626;
13
+ $container-border-color: #333;
14
+ $table-head-bkg: #333;
15
+ $table-head-color: #999;
16
+ $info-color: #999;
17
+ $error-color: #ff0000;
18
+
19
+ $fs-logo-blue-color: #29abe1;
20
+ $fs-logo-green-color: #71ae00;
21
+ $fs-logo-magenta-color: #d3135a;
22
+
23
+ // WordPress colors.
24
+ $page-header-bkg: #333;
25
+ $page-header-color: $fms-white;
26
+ $text-dark-color: #333;
27
+ $text-light-color: #666;
28
+ $text-lightest-color: #999;
29
+
30
+ // Notices.
31
+ $wp-notice-success-color: #f7fff7;
32
+ $wp-notice-success-dark-color: #46b450;
33
+ $wp-notice-error-color: #ffeaea;
34
+ $wp-notice-error-dark-color: #dc3232;
35
+ $wp-notice-warn-color: #fff8e5;
36
+ $wp-notice-warn-dark-color: #ffb900;
37
+ $fs-notice-promotion-border-color: #00a0d2;
38
+ $fs-notice-promotion-bkg: #f2fcff;
39
+
40
+ // WP Buttons.
41
+ $button-primary-bkg: #6bc406;
42
+ $button-primary-color: $fms-white;
43
+ $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;
50
+ $wix_color: #fac102;
51
+ $shopify_color: #80d100;
52
+ $addthis_color: #fe6d4e;
53
+ $tumblr_color: #34506b;
54
+ $zepo_color: #00baf2;
55
+ $jquery_color: #000919;
56
+ $javascript_color: #00baf2;
57
+ $squarespace_color: #000;
58
+
59
+ $blog_color: #ff6600;
60
+ $facebook_color: #3b5998;
61
+ $twitter_color: #4099ff;
62
+ $linkedin_color: #4875b4;
63
+ $youtube_color: #ff3333;
64
+ $gplus_color: #c63d2d;
65
+
66
+ // Tooltip
67
+ $tooltip-color: #fff;
68
+ $tooltip-bkg-color: rgba(0,0,0,0.8);
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/_license-activation.scss CHANGED
@@ -1,47 +1,47 @@
1
- .fs-modal.fs-modal-license-activation {
2
- .fs-modal-body {
3
- input.license_key {
4
- width: 100%;
5
- }
6
- }
7
- }
8
-
9
- #license_options_container {
10
- table {
11
- &, select, #available_license_key {
12
- width: 100%;
13
- }
14
-
15
- td:first-child {
16
- width: 1%;
17
- }
18
-
19
- #other_license_key_container {
20
- label {
21
- position: relative;
22
- top: 6px;
23
- float: left;
24
- margin-right: 5px;
25
- }
26
-
27
- div {
28
- overflow: hidden;
29
- width: auto;
30
- height: 30px;
31
- display: block;
32
- top: 2px;
33
- position: relative;
34
-
35
- input {
36
- margin: 0;
37
- }
38
- }
39
- }
40
- }
41
- }
42
-
43
- #sites_list_container {
44
- td {
45
- cursor: pointer;
46
- }
47
  }
1
+ .fs-modal.fs-modal-license-activation {
2
+ .fs-modal-body {
3
+ input.license_key {
4
+ width: 100%;
5
+ }
6
+ }
7
+ }
8
+
9
+ #license_options_container {
10
+ table {
11
+ &, select, #available_license_key {
12
+ width: 100%;
13
+ }
14
+
15
+ td:first-child {
16
+ width: 1%;
17
+ }
18
+
19
+ #other_license_key_container {
20
+ label {
21
+ position: relative;
22
+ top: 6px;
23
+ float: left;
24
+ margin-right: 5px;
25
+ }
26
+
27
+ div {
28
+ overflow: hidden;
29
+ width: auto;
30
+ height: 30px;
31
+ display: block;
32
+ top: 2px;
33
+ position: relative;
34
+
35
+ input {
36
+ margin: 0;
37
+ }
38
+ }
39
+ }
40
+ }
41
+ }
42
+
43
+ #sites_list_container {
44
+ td {
45
+ cursor: pointer;
46
+ }
47
  }
freemius/assets/scss/admin/_modal-common.scss CHANGED
@@ -1,194 +1,194 @@
1
- @import "../colors";
2
- @import "../mixins";
3
-
4
- .fs-modal {
5
- position: fixed;
6
- overflow: auto;
7
- height: 100%;
8
- width: 100%;
9
- top: 0;
10
- z-index: 100000;
11
- display: none;
12
- background: rgba(0, 0, 0, 0.6);
13
-
14
- .fs-modal-dialog {
15
- background: transparent;
16
- position: absolute;
17
- left: 50%;
18
- margin-left: -298px;
19
- padding-bottom: 30px;
20
- top: -100%;
21
- z-index: 100001;
22
- width: 596px;
23
-
24
- @media (max-width: 650px) {
25
- margin-left: -50%;
26
- box-sizing: border-box;
27
- padding-left: 10px;
28
- padding-right: 10px;
29
- width: 100%;
30
-
31
- .fs-modal-panel > h3 > strong {
32
- font-size: 1.3em;
33
- }
34
- }
35
- }
36
-
37
- &.active {
38
- display: block;
39
-
40
- &:before {
41
- display: block;
42
- }
43
-
44
- .fs-modal-dialog {
45
- top: 10%;
46
- }
47
- }
48
-
49
- &.fs-success {
50
- .fs-modal-header {
51
- border-bottom-color: $wp-notice-success-dark-color;
52
- }
53
-
54
- .fs-modal-body {
55
- background-color: $wp-notice-success-color;
56
- }
57
- }
58
-
59
- &.fs-warn {
60
- .fs-modal-header {
61
- border-bottom-color: $wp-notice-warn-dark-color;
62
- }
63
-
64
- .fs-modal-body {
65
- background-color: $wp-notice-warn-color;
66
- }
67
- }
68
-
69
- &.fs-error {
70
- .fs-modal-header {
71
- border-bottom-color: $wp-notice-error-dark-color;
72
- }
73
-
74
- .fs-modal-body {
75
- background-color: $wp-notice-error-color;
76
- }
77
- }
78
-
79
-
80
- .fs-modal-body,
81
- .fs-modal-footer {
82
- border: 0;
83
- background: #fefefe;
84
- padding: 20px;
85
- }
86
-
87
- .fs-modal-header {
88
- border-bottom: #eeeeee solid 1px;
89
- background: #fbfbfb;
90
- padding: 15px 20px;
91
- position: relative;
92
- margin-bottom: -10px;
93
- // z-index: 2;
94
-
95
- h4 {
96
- margin: 0;
97
- padding: 0;
98
- text-transform: uppercase;
99
- font-size: 1.2em;
100
- font-weight: bold;
101
- color: #cacaca;
102
- text-shadow: 1px 1px 1px #fff;
103
- letter-spacing: 0.6px;
104
- -webkit-font-smoothing: antialiased;
105
- }
106
-
107
- .fs-close {
108
- position: absolute;
109
- right: 10px;
110
- top: 12px;
111
- cursor: pointer;
112
- color: #bbb;
113
- @include border-radius(20px);
114
- padding: 3px;
115
- @include transition(all 0.2s ease-in-out);
116
-
117
- &:hover {
118
- color: #fff;
119
- background: #aaa;
120
- }
121
-
122
- &, &:hover
123
- {
124
- .dashicons
125
- {
126
- text-decoration: none;
127
- }
128
- }
129
- }
130
- }
131
-
132
- .fs-modal-body {
133
- border-bottom: 0;
134
-
135
- p {
136
- font-size: 14px;
137
- }
138
-
139
- h2 {
140
- font-size: 20px;
141
- line-height: 1.5em;
142
- }
143
-
144
- > div {
145
- margin-top: 10px;
146
-
147
- h2 {
148
- font-weight: bold;
149
- font-size: 20px;
150
- margin-top: 0;
151
- }
152
- }
153
- }
154
-
155
- .fs-modal-footer {
156
- border-top: #eeeeee solid 1px;
157
- text-align: right;
158
-
159
- > .button {
160
- margin: 0 7px;
161
-
162
- &:first-child {
163
- margin: 0;
164
- }
165
- }
166
- }
167
-
168
- .fs-modal-panel {
169
- > .notice.inline {
170
- margin: 0;
171
- display: none;
172
- }
173
-
174
- &:not(.active) {
175
- display: none;
176
- }
177
- }
178
- }
179
-
180
- .rtl
181
- {
182
- .fs-modal {
183
- .fs-modal-header {
184
- .fs-close {
185
- right: auto;
186
- left: 20px;
187
- }
188
- }
189
- }
190
- }
191
-
192
- body.has-fs-modal {
193
- overflow: hidden;
194
  }
1
+ @import "../colors";
2
+ @import "../mixins";
3
+
4
+ .fs-modal {
5
+ position: fixed;
6
+ overflow: auto;
7
+ height: 100%;
8
+ width: 100%;
9
+ top: 0;
10
+ z-index: 100000;
11
+ display: none;
12
+ background: rgba(0, 0, 0, 0.6);
13
+
14
+ .fs-modal-dialog {
15
+ background: transparent;
16
+ position: absolute;
17
+ left: 50%;
18
+ margin-left: -298px;
19
+ padding-bottom: 30px;
20
+ top: -100%;
21
+ z-index: 100001;
22
+ width: 596px;
23
+
24
+ @media (max-width: 650px) {
25
+ margin-left: -50%;
26
+ box-sizing: border-box;
27
+ padding-left: 10px;
28
+ padding-right: 10px;
29
+ width: 100%;
30
+
31
+ .fs-modal-panel > h3 > strong {
32
+ font-size: 1.3em;
33
+ }
34
+ }
35
+ }
36
+
37
+ &.active {
38
+ display: block;
39
+
40
+ &:before {
41
+ display: block;
42
+ }
43
+
44
+ .fs-modal-dialog {
45
+ top: 10%;
46
+ }
47
+ }
48
+
49
+ &.fs-success {
50
+ .fs-modal-header {
51
+ border-bottom-color: $wp-notice-success-dark-color;
52
+ }
53
+
54
+ .fs-modal-body {
55
+ background-color: $wp-notice-success-color;
56
+ }
57
+ }
58
+
59
+ &.fs-warn {
60
+ .fs-modal-header {
61
+ border-bottom-color: $wp-notice-warn-dark-color;
62
+ }
63
+
64
+ .fs-modal-body {
65
+ background-color: $wp-notice-warn-color;
66
+ }
67
+ }
68
+
69
+ &.fs-error {
70
+ .fs-modal-header {
71
+ border-bottom-color: $wp-notice-error-dark-color;
72
+ }
73
+
74
+ .fs-modal-body {
75
+ background-color: $wp-notice-error-color;
76
+ }
77
+ }
78
+
79
+
80
+ .fs-modal-body,
81
+ .fs-modal-footer {
82
+ border: 0;
83
+ background: #fefefe;
84
+ padding: 20px;
85
+ }
86
+
87
+ .fs-modal-header {
88
+ border-bottom: #eeeeee solid 1px;
89
+ background: #fbfbfb;
90
+ padding: 15px 20px;
91
+ position: relative;
92
+ margin-bottom: -10px;
93
+ // z-index: 2;
94
+
95
+ h4 {
96
+ margin: 0;
97
+ padding: 0;
98
+ text-transform: uppercase;
99
+ font-size: 1.2em;
100
+ font-weight: bold;
101
+ color: #cacaca;
102
+ text-shadow: 1px 1px 1px #fff;
103
+ letter-spacing: 0.6px;
104
+ -webkit-font-smoothing: antialiased;
105
+ }
106
+
107
+ .fs-close {
108
+ position: absolute;
109
+ right: 10px;
110
+ top: 12px;
111
+ cursor: pointer;
112
+ color: #bbb;
113
+ @include border-radius(20px);
114
+ padding: 3px;
115
+ @include transition(all 0.2s ease-in-out);
116
+
117
+ &:hover {
118
+ color: #fff;
119
+ background: #aaa;
120
+ }
121
+
122
+ &, &:hover
123
+ {
124
+ .dashicons
125
+ {
126
+ text-decoration: none;
127
+ }
128
+ }
129
+ }
130
+ }
131
+
132
+ .fs-modal-body {
133
+ border-bottom: 0;
134
+
135
+ p {
136
+ font-size: 14px;
137
+ }
138
+
139
+ h2 {
140
+ font-size: 20px;
141
+ line-height: 1.5em;
142
+ }
143
+
144
+ > div {
145
+ margin-top: 10px;
146
+
147
+ h2 {
148
+ font-weight: bold;
149
+ font-size: 20px;
150
+ margin-top: 0;
151
+ }
152
+ }
153
+ }
154
+
155
+ .fs-modal-footer {
156
+ border-top: #eeeeee solid 1px;
157
+ text-align: right;
158
+
159
+ > .button {
160
+ margin: 0 7px;
161
+
162
+ &:first-child {
163
+ margin: 0;
164
+ }
165
+ }
166
+ }
167
+
168
+ .fs-modal-panel {
169
+ > .notice.inline {
170
+ margin: 0;
171
+ display: none;
172
+ }
173
+
174
+ &:not(.active) {
175
+ display: none;
176
+ }
177
+ }
178
+ }
179
+
180
+ .rtl
181
+ {
182
+ .fs-modal {
183
+ .fs-modal-header {
184
+ .fs-close {
185
+ right: auto;
186
+ left: 20px;
187
+ }
188
+ }
189
+ }
190
+ }
191
+
192
+ body.has-fs-modal {
193
+ overflow: hidden;
194
  }
freemius/assets/scss/admin/_multisite-options.scss CHANGED
@@ -1,40 +1,40 @@
1
- #multisite_options_container {
2
- margin-top: 10px;
3
- border: 1px solid #ccc;
4
- padding: 5px;
5
-
6
- a {
7
- text-decoration: none;
8
-
9
- &:focus {
10
- box-shadow: none;
11
- }
12
-
13
- &.selected {
14
- font-weight: bold;
15
- }
16
- }
17
-
18
- &.apply-on-all-sites {
19
- border: 0 none;
20
- padding: 0;
21
-
22
- #all_sites_options {
23
- border-spacing: 0;
24
-
25
- td:not(:first-child) {
26
- display: none;
27
- }
28
- }
29
- }
30
-
31
- #sites_list_container {
32
- display: none;
33
- overflow: auto;
34
-
35
- table td {
36
- border-top: 1px solid #ccc;
37
- padding: 4px 2px;
38
- }
39
- }
40
  }
1
+ #multisite_options_container {
2
+ margin-top: 10px;
3
+ border: 1px solid #ccc;
4
+ padding: 5px;
5
+
6
+ a {
7
+ text-decoration: none;
8
+
9
+ &:focus {
10
+ box-shadow: none;
11
+ }
12
+
13
+ &.selected {
14
+ font-weight: bold;
15
+ }
16
+ }
17
+
18
+ &.apply-on-all-sites {
19
+ border: 0 none;
20
+ padding: 0;
21
+
22
+ #all_sites_options {
23
+ border-spacing: 0;
24
+
25
+ td:not(:first-child) {
26
+ display: none;
27
+ }
28
+ }
29
+ }
30
+
31
+ #sites_list_container {
32
+ display: none;
33
+ overflow: auto;
34
+
35
+ table td {
36
+ border-top: 1px solid #ccc;
37
+ padding: 4px 2px;
38
+ }
39
+ }
40
  }
freemius/assets/scss/admin/_tooltip.scss CHANGED
@@ -1,66 +1,66 @@
1
- .fs-tooltip-trigger
2
- {
3
- &:not(a)
4
- {
5
- cursor: help;
6
- }
7
-
8
- position: relative;
9
-
10
- .fs-tooltip
11
- {
12
- opacity: 0;
13
- visibility: hidden;
14
- @include transition(opacity 0.3s ease-in-out);
15
- position: absolute;
16
- background: $tooltip-bkg-color;
17
- color: $tooltip-color;
18
- font-family: 'arial', serif;
19
- font-size: 12px;
20
- padding: 10px;
21
- z-index: 999999;
22
- bottom: 100%;
23
- margin-bottom: 5px;
24
- left: 0;
25
- right: 0;
26
- @include border-radius(5px);
27
- @include box-shadow(1px 1px 1px rgba(0, 0, 0, 0.2));
28
- line-height: 1.3em;
29
- font-weight: bold;
30
- text-align: left;
31
-
32
- .rtl &
33
- {
34
- text-align: right;
35
- }
36
-
37
- &::after
38
- {
39
- content: ' ';
40
- display: block;
41
- width: 0;
42
- height: 0;
43
- border-style: solid;
44
- border-width: 5px 5px 0 5px;
45
- border-color: $tooltip-bkg-color transparent transparent transparent;
46
- position: absolute;
47
- top: 100%;
48
- left: 21px;
49
-
50
- .rtl &
51
- {
52
- right: 21px;
53
- left: auto;
54
- }
55
- }
56
- }
57
-
58
- &:hover
59
- {
60
- .fs-tooltip
61
- {
62
- visibility: visible;
63
- opacity: 1;
64
- }
65
- }
66
  }
1
+ .fs-tooltip-trigger
2
+ {
3
+ &:not(a)
4
+ {
5
+ cursor: help;
6
+ }
7
+
8
+ position: relative;
9
+
10
+ .fs-tooltip
11
+ {
12
+ opacity: 0;
13
+ visibility: hidden;
14
+ @include transition(opacity 0.3s ease-in-out);
15
+ position: absolute;
16
+ background: $tooltip-bkg-color;
17
+ color: $tooltip-color;
18
+ font-family: 'arial', serif;
19
+ font-size: 12px;
20
+ padding: 10px;
21
+ z-index: 999999;
22
+ bottom: 100%;
23
+ margin-bottom: 5px;
24
+ left: 0;
25
+ right: 0;
26
+ @include border-radius(5px);
27
+ @include box-shadow(1px 1px 1px rgba(0, 0, 0, 0.2));
28
+ line-height: 1.3em;
29
+ font-weight: bold;
30
+ text-align: left;
31
+
32
+ .rtl &
33
+ {
34
+ text-align: right;
35
+ }
36
+
37
+ &::after
38
+ {
39
+ content: ' ';
40
+ display: block;
41
+ width: 0;
42
+ height: 0;
43
+ border-style: solid;
44
+ border-width: 5px 5px 0 5px;
45
+ border-color: $tooltip-bkg-color transparent transparent transparent;
46
+ position: absolute;
47
+ top: 100%;
48
+ left: 21px;
49
+
50
+ .rtl &
51
+ {
52
+ right: 21px;
53
+ left: auto;
54
+ }
55
+ }
56
+ }
57
+
58
+ &:hover
59
+ {
60
+ .fs-tooltip
61
+ {
62
+ visibility: visible;
63
+ opacity: 1;
64
+ }
65
+ }
66
  }
freemius/assets/scss/admin/account.scss CHANGED
@@ -1,302 +1,302 @@
1
- @import "../start";
2
-
3
- #fs_account
4
- {
5
- .postbox,
6
- .widefat
7
- {
8
- max-width: 700px;
9
- }
10
-
11
- h3
12
- {
13
- font-size: 1.3em;
14
- padding: 12px 15px;
15
- margin: 0 0 12px 0;
16
- line-height: 1.4;
17
- border-bottom: 1px solid #F1F1F1;
18
-
19
- .dashicons {
20
- width: 26px;
21
- height: 26px;
22
- font-size: 1.3em;
23
- }
24
- }
25
-
26
- i.dashicons
27
- {
28
- font-size: 1.2em;
29
- height: 1.2em;
30
- width: 1.2em;
31
- }
32
-
33
- .dashicons
34
- {
35
- vertical-align: middle;
36
- }
37
-
38
- .fs-header-actions
39
- {
40
- position: absolute;
41
- top: 17px;
42
- right: 15px;
43
- font-size: 0.9em;
44
-
45
- ul
46
- {
47
- margin: 0;
48
- }
49
-
50
- li
51
- {
52
- form
53
- {
54
- display: inline-block;
55
- }
56
-
57
- float: left;
58
- a
59
- {
60
- text-decoration: none;
61
- }
62
- }
63
- }
64
- }
65
-
66
- #fs_account_details .button-group {
67
- float: right;
68
- }
69
-
70
- .rtl #fs_account .fs-header-actions
71
- {
72
- left: 15px;
73
- right: auto;
74
- }
75
-
76
- .fs-key-value-table
77
- {
78
- width: 100%;
79
-
80
- form
81
- {
82
- display: inline-block;
83
- }
84
-
85
- tr
86
- {
87
- td:first-child
88
- {
89
- nobr
90
- {
91
- font-weight: bold;
92
- }
93
-
94
- text-align: right;
95
-
96
- form
97
- {
98
- display: block;
99
- }
100
- }
101
-
102
- td.fs-right
103
- {
104
- text-align: right;
105
- }
106
-
107
- &.fs-odd
108
- {
109
- background: #ebebeb;
110
- }
111
- }
112
-
113
- td, th
114
- {
115
- padding: 10px;
116
- }
117
-
118
- code {
119
- line-height: 28px;
120
- }
121
-
122
- var, code, input[type="text"]
123
- {
124
- color: #0073AA;
125
- font-size: 16px;
126
- background: none;
127
- }
128
-
129
- input[type="text"] {
130
- width: 100%;
131
- font-weight: bold;
132
- }
133
- }
134
-
135
- label.fs-tag
136
- {
137
- background: #ffba00;
138
- color: #fff;
139
- display: inline-block;
140
- border-radius: 3px;
141
- padding: 5px;
142
- font-size: 11px;
143
- line-height: 11px;
144
- vertical-align: baseline;
145
-
146
- &.fs-warn
147
- {
148
- background: #ffba00;
149
- }
150
- &.fs-success
151
- {
152
- background: #46b450;
153
- }
154
- &.fs-error
155
- {
156
- background: #dc3232;
157
- }
158
- }
159
-
160
- #fs_sites
161
- {
162
- .fs-scrollable-table
163
- {
164
- .fs-table-body {
165
- max-height: 200px;
166
- overflow: auto;
167
- border: 1px solid #e5e5e5;
168
-
169
- & > table.widefat {
170
- border: none !important;
171
- }
172
- }
173
-
174
- .fs-main-column {
175
- width: 100%;
176
- }
177
-
178
- .fs-site-details
179
- {
180
- td:first-of-type
181
- {
182
- text-align: right;
183
- color: grey;
184
- width: 1px;
185
- }
186
-
187
- td:last-of-type
188
- {
189
- text-align: right;
190
- }
191
- }
192
-
193
- .fs-install-details table
194
- {
195
- tr td
196
- {
197
- width: 1px;
198
- white-space: nowrap;
199
-
200
- &:last-of-type
201
- {
202
- width: auto;
203
- }
204
- }
205
- }
206
- }
207
- }
208
-
209
- #fs_addons
210
- {
211
- h3
212
- {
213
- border: none;
214
- margin-bottom: 0;
215
- padding: 4px 5px;
216
- }
217
-
218
- td
219
- {
220
- vertical-align: middle;
221
- }
222
-
223
- thead {
224
- white-space: nowrap;
225
- }
226
-
227
- td:first-child,
228
- th:first-child
229
- {
230
- text-align: left;
231
- font-weight: bold;
232
- }
233
- td:last-child,
234
- th:last-child
235
- {
236
- text-align: right;
237
- }
238
- th
239
- {
240
- font-weight: bold;
241
- }
242
- }
243
-
244
- #fs_billing_address {
245
- width: 100%;
246
-
247
- tr {
248
- td {
249
- width: 50%;
250
- padding: 5px;
251
- }
252
-
253
- &:first-of-type {
254
- td {
255
- padding-top: 0;
256
- }
257
- }
258
- }
259
-
260
- @mixin read-mode {
261
- border-color: transparent;
262
- color: #777;
263
- border-bottom: 1px dashed #ccc;
264
- padding-left: 0;
265
- background: none;
266
- }
267
-
268
- span {
269
- font-weight: bold;
270
- }
271
-
272
- input, select {
273
- @include placeholder(transparent);
274
-
275
- display: block;
276
- width: 100%;
277
- margin-top: 5px;
278
-
279
- &.fs-read-mode {
280
- @include read-mode();
281
- }
282
- }
283
-
284
-
285
- &.fs-read-mode {
286
- td span {
287
- display: none;
288
- }
289
-
290
- input, select
291
- {
292
- @include read-mode();
293
- @include placeholder(#ccc);
294
- }
295
- }
296
-
297
-
298
- button {
299
- display: block;
300
- width: 100%;
301
- }
302
  }
1
+ @import "../start";
2
+
3
+ #fs_account
4
+ {
5
+ .postbox,
6
+ .widefat
7
+ {
8
+ max-width: 700px;
9
+ }
10
+
11
+ h3
12
+ {
13
+ font-size: 1.3em;
14
+ padding: 12px 15px;
15
+ margin: 0 0 12px 0;
16
+ line-height: 1.4;
17
+ border-bottom: 1px solid #F1F1F1;
18
+
19
+ .dashicons {
20
+ width: 26px;
21
+ height: 26px;
22
+ font-size: 1.3em;
23
+ }
24
+ }
25
+
26
+ i.dashicons
27
+ {
28
+ font-size: 1.2em;
29
+ height: 1.2em;
30
+ width: 1.2em;
31
+ }
32
+
33
+ .dashicons
34
+ {
35
+ vertical-align: middle;
36
+ }
37
+
38
+ .fs-header-actions
39
+ {
40
+ position: absolute;
41
+ top: 17px;
42
+ right: 15px;
43
+ font-size: 0.9em;
44
+
45
+ ul
46
+ {
47
+ margin: 0;
48
+ }
49
+
50
+ li
51
+ {
52
+ form
53
+ {
54
+ display: inline-block;
55
+ }
56
+
57
+ float: left;
58
+ a
59
+ {
60
+ text-decoration: none;
61
+ }
62
+ }
63
+ }
64
+ }
65
+
66
+ #fs_account_details .button-group {
67
+ float: right;
68
+ }
69
+
70
+ .rtl #fs_account .fs-header-actions
71
+ {
72
+ left: 15px;
73
+ right: auto;
74
+ }
75
+
76
+ .fs-key-value-table
77
+ {
78
+ width: 100%;
79
+
80
+ form
81
+ {
82
+ display: inline-block;
83
+ }
84
+
85
+ tr
86
+ {
87
+ td:first-child
88
+ {
89
+ nobr
90
+ {
91
+ font-weight: bold;
92
+ }
93
+
94
+ text-align: right;
95
+
96
+ form
97
+ {
98
+ display: block;
99
+ }
100
+ }
101
+
102
+ td.fs-right
103
+ {
104
+ text-align: right;
105
+ }
106
+
107
+ &.fs-odd
108
+ {
109
+ background: #ebebeb;
110
+ }
111
+ }
112
+
113
+ td, th
114
+ {
115
+ padding: 10px;
116
+ }
117
+
118
+ code {
119
+ line-height: 28px;
120
+ }
121
+
122
+ var, code, input[type="text"]
123
+ {
124
+ color: #0073AA;
125
+ font-size: 16px;
126
+ background: none;
127
+ }
128
+
129
+ input[type="text"] {
130
+ width: 100%;
131
+ font-weight: bold;
132
+ }
133
+ }
134
+
135
+ label.fs-tag
136
+ {
137
+ background: #ffba00;
138
+ color: #fff;
139
+ display: inline-block;
140
+ border-radius: 3px;
141
+ padding: 5px;
142
+ font-size: 11px;
143
+ line-height: 11px;
144
+ vertical-align: baseline;
145
+
146
+ &.fs-warn
147
+ {
148
+ background: #ffba00;
149
+ }
150
+ &.fs-success
151
+ {
152
+ background: #46b450;
153
+ }
154
+ &.fs-error
155
+ {
156
+ background: #dc3232;
157
+ }
158
+ }
159
+
160
+ #fs_sites
161
+ {
162
+ .fs-scrollable-table
163
+ {
164
+ .fs-table-body {
165
+ max-height: 200px;
166
+ overflow: auto;
167
+ border: 1px solid #e5e5e5;
168
+
169
+ & > table.widefat {
170
+ border: none !important;
171
+ }
172
+ }
173
+
174
+ .fs-main-column {
175
+ width: 100%;
176
+ }
177
+
178
+ .fs-site-details
179
+ {
180
+ td:first-of-type
181
+ {
182
+ text-align: right;
183
+ color: grey;
184
+ width: 1px;
185
+ }
186
+
187
+ td:last-of-type
188
+ {
189
+ text-align: right;
190
+ }
191
+ }
192
+
193
+ .fs-install-details table
194
+ {
195
+ tr td
196
+ {
197
+ width: 1px;
198
+ white-space: nowrap;
199
+
200
+ &:last-of-type
201
+ {
202
+ width: auto;
203
+ }
204
+ }
205
+ }
206
+ }
207
+ }
208
+
209
+ #fs_addons
210
+ {
211
+ h3
212
+ {
213
+ border: none;
214
+ margin-bottom: 0;
215
+ padding: 4px 5px;
216
+ }
217
+
218
+ td
219
+ {
220
+ vertical-align: middle;
221
+ }
222
+
223
+ thead {
224
+ white-space: nowrap;
225
+ }
226
+
227
+ td:first-child,
228
+ th:first-child
229
+ {
230
+ text-align: left;
231
+ font-weight: bold;
232
+ }
233
+ td:last-child,
234
+ th:last-child
235
+ {
236
+ text-align: right;
237
+ }
238
+ th
239
+ {
240
+ font-weight: bold;
241
+ }
242
+ }
243
+
244
+ #fs_billing_address {
245
+ width: 100%;
246
+
247
+ tr {
248
+ td {
249
+ width: 50%;
250
+ padding: 5px;
251
+ }
252
+
253
+ &:first-of-type {
254
+ td {
255
+ padding-top: 0;
256
+ }
257
+ }
258
+ }
259
+
260
+ @mixin read-mode {
261
+ border-color: transparent;
262
+ color: #777;
263
+ border-bottom: 1px dashed #ccc;
264
+ padding-left: 0;
265
+ background: none;
266
+ }
267
+
268
+ span {
269
+ font-weight: bold;
270
+ }
271
+
272
+ input, select {
273
+ @include placeholder(transparent);
274
+
275
+ display: block;
276
+ width: 100%;
277
+ margin-top: 5px;
278
+
279
+ &.fs-read-mode {
280
+ @include read-mode();
281
+ }
282
+ }
283
+
284
+
285
+ &.fs-read-mode {
286
+ td span {
287
+ display: none;
288
+ }
289
+
290
+ input, select
291
+ {
292
+ @include read-mode();
293
+ @include placeholder(#ccc);
294
+ }
295
+ }
296
+
297
+
298
+ button {
299
+ display: block;
300
+ width: 100%;
301
+ }
302
  }
freemius/assets/scss/admin/common.scss CHANGED
@@ -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
 
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
 
freemius/assets/scss/admin/dialog-boxes.scss CHANGED
@@ -1,8 +1,8 @@
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 "license-activation";
5
+ @import "multisite-options";
6
+ @import "license-key-resend";
7
+ @import "ajax-loader";
8
  @import "auto-install";
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 CHANGED
@@ -1,10 +1,10 @@
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
- }
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/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
@@ -1348,7 +1348,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
  }
@@ -1488,13 +1491,6 @@
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() ) ||
1500
  ( $this->is_theme() && self::is_themes_page() )
@@ -2634,26 +2630,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
 
@@ -2683,6 +2681,24 @@
2683
  self::$_statics_loaded = true;
2684
  }
2685
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2686
  #----------------------------------------------------------------------------------
2687
  #region Localization
2688
  #----------------------------------------------------------------------------------
@@ -2909,6 +2925,10 @@
2909
  }
2910
 
2911
  fs_redirect( $download_url );
 
 
 
 
2912
  }
2913
  }
2914
 
@@ -3145,7 +3165,7 @@
3145
  if ( $is_connected ) {
3146
  FS_GDPR_Manager::instance()->store_is_required( $pong->is_gdpr_required );
3147
  }
3148
-
3149
  $this->store_connectivity_info( $pong, $is_connected );
3150
 
3151
  return $this->_has_api_connection;
@@ -3961,6 +3981,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(
@@ -5984,7 +6011,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
  /**
@@ -6192,19 +6219,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();
@@ -10569,7 +10598,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
  }
@@ -10587,7 +10616,7 @@
10587
  */
10588
  function _activate_license_ajax_action() {
10589
  $this->_logger->entrance();
10590
-
10591
  $this->check_ajax_referer( 'activate_license' );
10592
 
10593
  $license_key = trim( fs_request_get( 'license_key' ) );
@@ -14756,13 +14785,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 +14824,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 +14851,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 +14881,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,14 +14907,14 @@
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
  }
@@ -15569,7 +15614,7 @@
15569
  return;
15570
  }
15571
 
15572
- $site_clone = is_object( $site ) ? $site : $this->_site;
15573
  $encrypted_site = clone $site_clone;
15574
 
15575
  $sites = self::get_all_sites( $this->_module_type, $network_level_or_blog_id );
@@ -15938,7 +15983,7 @@
15938
  /**
15939
  * @since 1.2.3 When running in DEV mode, retrieve pending plans as well.
15940
  */
15941
- $result = $api->get( "/plugins/{$this->_module_id}/plans.json?show_pending=" . ( $this->has_secret_key() ? 'true' : 'false' ), true );
15942
 
15943
  if ( $this->is_api_result_object( $result, 'plans' ) && is_array( $result->plans ) ) {
15944
  for ( $i = 0, $len = count( $result->plans ); $i < $len; $i ++ ) {
@@ -16268,14 +16313,62 @@
16268
  * @since 1.2.1
16269
  */
16270
  function has_active_valid_license() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16271
  return (
16272
- is_object( $this->_license ) &&
16273
- is_numeric( $this->_license->id ) &&
16274
- $this->_license->is_active() &&
16275
- $this->_license->is_valid()
16276
  );
16277
  }
16278
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16279
  /**
16280
  * Check if site assigned with license with enabled features.
16281
  *
@@ -16406,7 +16499,7 @@
16406
  $this->_update_licenses( $licenses, $addon->id );
16407
 
16408
  if ( ! $this->is_addon_installed( $addon->id ) && FS_License_Manager::has_premium_license( $licenses ) ) {
16409
- $plans_result = $this->get_api_site_or_plugin_scope()->get( "/addons/{$addon_id}/plans.json" );
16410
 
16411
  if ( ! isset( $plans_result->error ) ) {
16412
  $plans = array();
@@ -16734,6 +16827,7 @@
16734
  'trial_promotion',
16735
  'trial_expired',
16736
  'activation_complete',
 
16737
  ) );
16738
  break;
16739
  case 'changed':
@@ -17268,7 +17362,7 @@
17268
  * @return bool
17269
  */
17270
  private function _can_download_premium() {
17271
- return $this->has_active_valid_license() ||
17272
  ( $this->is_trial() && ! $this->get_trial_plan()->is_free() );
17273
  }
17274
 
@@ -17571,19 +17665,21 @@
17571
 
17572
  $api = $this->get_api_site_or_plugin_scope();
17573
 
 
 
17574
  /**
17575
  * @since 1.2.1
17576
  *
17577
  * If there's a cached version of the add-ons and not asking
17578
  * for a flush, just use the currently stored add-ons.
17579
  */
17580
- if ( ! $flush && $api->is_cached( '/addons.json?enriched=true' ) ) {
17581
  $addons = self::get_all_addons();
17582
 
17583
  return $addons[ $this->_plugin->id ];
17584
  }
17585
 
17586
- $result = $api->get( '/addons.json?enriched=true', $flush );
17587
 
17588
  $addons = array();
17589
  if ( $this->is_api_result_object( $result, 'plugins' ) &&
@@ -18399,9 +18495,9 @@
18399
  $vars = array( 'id' => $this->_module_id );
18400
 
18401
  if ( 'true' === fs_request_get( 'checkout', false ) ) {
18402
- fs_require_once_template( 'checkout.php', $vars );
18403
  } else {
18404
- fs_require_once_template( 'pricing.php', $vars );
18405
  }
18406
  }
18407
 
@@ -18419,7 +18515,15 @@
18419
  $this->_logger->entrance();
18420
 
18421
  $vars = array( 'id' => $this->_module_id );
18422
- fs_require_once_template( 'contact.php', $vars );
 
 
 
 
 
 
 
 
18423
  }
18424
 
18425
  #endregion ------------------------------------------------------------------------
@@ -18516,7 +18620,9 @@
18516
  * @return FS_Api
18517
  */
18518
  private function get_current_or_network_user_api_scope( $flush = false ) {
18519
- if ( ! $this->_is_network_active || isset( $this->_user ) ) {
 
 
18520
  return $this->get_api_user_scope( $flush );
18521
  }
18522
 
@@ -18604,9 +18710,19 @@
18604
  * @author Vova Feldman (@svovaf)
18605
  * @since 1.0.9
18606
  *
18607
- * @param $plans
18608
  */
18609
  function _check_for_trial_plans( $plans ) {
 
 
 
 
 
 
 
 
 
 
18610
  $this->_storage->has_trial_plan = FS_Plan_Manager::instance()->has_trial_plan( $plans );
18611
  }
18612
 
@@ -18713,14 +18829,14 @@
18713
 
18714
  // Show promotion if never shown before and 24 hours after initial activation with FS.
18715
  if ( ! $was_promotion_shown_before &&
18716
- $this->_storage->install_timestamp > ( time() - WP_FS__TIME_24_HOURS_IN_SEC )
18717
  ) {
18718
  return false;
18719
  }
18720
 
18721
  // OR if promotion was shown before, try showing it every 30 days.
18722
  if ( $was_promotion_shown_before &&
18723
- 30 * WP_FS__TIME_24_HOURS_IN_SEC > time() - $last_time_trial_promotion_shown
18724
  ) {
18725
  return false;
18726
  }
@@ -19345,14 +19461,16 @@
19345
  * @param array $request
19346
  * @param int $success_cache_expiration
19347
  * @param int $failure_cache_expiration
 
19348
  *
19349
  * @return WP_Error|array
19350
  */
19351
- private static function safe_remote_post(
19352
  &$url,
19353
  $request,
19354
  $success_cache_expiration = 0,
19355
- $failure_cache_expiration = 0
 
19356
  ) {
19357
  $should_cache = ($success_cache_expiration + $failure_cache_expiration > 0);
19358
 
@@ -19363,7 +19481,9 @@
19363
  false;
19364
 
19365
  if ( false === $response ) {
19366
- self::enrich_request_for_debug( $url, $request );
 
 
19367
 
19368
  $response = wp_remote_post( $url, $request );
19369
 
@@ -20118,6 +20238,10 @@
20118
  $icon_found = false;
20119
  $local_path = fs_normalize_path( "{$img_dir}/{$this->_slug}.png" );
20120
 
 
 
 
 
20121
  $have_write_permissions = ( 'direct' === get_filesystem_method( array(), fs_normalize_path( $img_dir ) ) );
20122
 
20123
  /**
@@ -20634,9 +20758,7 @@
20634
  * @since 2.1.0
20635
  */
20636
  function _maybe_add_gdpr_optin_ajax_handler() {
20637
- if ( $this->is_activation_mode() ) {
20638
- $this->add_ajax_action( 'fetch_is_marketing_required_flag_value', array( &$this, '_fetch_is_marketing_required_flag_value_ajax_action' ) );
20639
- }
20640
 
20641
  if ( FS_GDPR_Manager::instance()->is_opt_in_notice_shown() ) {
20642
  $this->add_gdpr_optin_ajax_handler_and_style();
@@ -20820,4 +20942,28 @@
20820
  }
20821
 
20822
  #endregion
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20823
  }
1348
  add_action( 'make_ham_blog', array( &$this, '_after_site_reactivated_callback' ) );
1349
  }
1350
 
1351
+ if ( $this->is_theme() &&
1352
+ self::is_customizer() &&
1353
+ $this->apply_filters( 'show_customizer_upsell', true )
1354
+ ) {
1355
  // Register customizer upsell.
1356
  add_action( 'customize_register', array( &$this, '_customizer_register' ) );
1357
  }
1491
  array( &$this, '_submit_uninstall_reason_action' )
1492
  );
1493
 
 
 
 
 
 
 
 
1494
  if ( ! $this->is_addon() || $this->is_parent_plugin_installed() ) {
1495
  if ( ( $this->is_plugin() && self::is_plugins_page() ) ||
1496
  ( $this->is_theme() && self::is_themes_page() )
2630
  self::$_accounts = FS_Options::instance( WP_FS__ACCOUNTS_OPTION_NAME, true );
2631
 
2632
  if ( is_multisite() ) {
2633
+ $has_skipped_migration = (
2634
+ // 'id_slug_type_path_map' - was never stored on older versions, therefore, not exists on the site level.
2635
+ null === self::$_accounts->get_option( 'id_slug_type_path_map', null, false ) &&
2636
+ // 'file_slug_map' stored on the site level, so it was running an SDK version before it was integrated with MS-network.
2637
+ null !== self::$_accounts->get_option( 'file_slug_map', null, false )
2638
+ );
2639
+
2640
  /**
2641
+ * If the file_slug_map exists on the site level but doesn't exist on the
2642
  * network level storage, it means that we need to process the storage with migration.
2643
  *
2644
+ * 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.
2645
  *
2646
  * @author Vova Feldman (@svovaf)
2647
  * @since 2.0.0
2648
  */
2649
+ if (
2650
+ ( $has_skipped_migration && true !== self::$_accounts->get_option( 'ms_migration_complete', false, true ) ) ||
2651
+ ( null === self::$_accounts->get_option( 'file_slug_map', null, true ) &&
2652
+ null !== self::$_accounts->get_option( 'file_slug_map', null, false ) )
2653
  ) {
2654
+ self::migrate_options_to_network();
 
 
 
 
 
 
 
2655
  }
2656
  }
2657
 
2681
  self::$_statics_loaded = true;
2682
  }
2683
 
2684
+ /**
2685
+ * @author Leo Fajardo (@leorw)
2686
+ *
2687
+ * @since 2.1.3
2688
+ */
2689
+ private static function migrate_options_to_network() {
2690
+ self::migrate_accounts_to_network();
2691
+
2692
+ // Migrate API options from site level to network level.
2693
+ $api_network_options = FS_Option_Manager::get_manager( WP_FS__OPTIONS_OPTION_NAME, true, true );
2694
+ $api_network_options->migrate_to_network();
2695
+
2696
+ // Migrate API cache to network level storage.
2697
+ FS_Cache_Manager::get_manager( WP_FS__API_CACHE_OPTION_NAME )->migrate_to_network();
2698
+
2699
+ self::$_accounts->set_option( 'ms_migration_complete', true, true );
2700
+ }
2701
+
2702
  #----------------------------------------------------------------------------------
2703
  #region Localization
2704
  #----------------------------------------------------------------------------------
2925
  }
2926
 
2927
  fs_redirect( $download_url );
2928
+ } else if ( fs_request_is_action( 'migrate_options_to_network' ) ) {
2929
+ check_admin_referer( 'migrate_options_to_network' );
2930
+
2931
+ self::migrate_options_to_network();
2932
  }
2933
  }
2934
 
3165
  if ( $is_connected ) {
3166
  FS_GDPR_Manager::instance()->store_is_required( $pong->is_gdpr_required );
3167
  }
3168
+
3169
  $this->store_connectivity_info( $pong, $is_connected );
3170
 
3171
  return $this->_has_api_connection;
3981
 
3982
  $this->parse_settings( $plugin_info );
3983
 
3984
+ if ( is_admin() && $this->is_theme() && $this->is_premium() && ! $this->has_active_valid_license() ) {
3985
+ $this->add_ajax_action(
3986
+ 'delete_theme_update_data',
3987
+ array( &$this, '_delete_theme_update_data_action' )
3988
+ );
3989
+ }
3990
+
3991
  if ( ! self::is_ajax() ) {
3992
  if ( ! $this->is_addon() || $this->is_only_premium() ) {
3993
  add_action(
6011
  * @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.
6012
  */
6013
  private function schedule_install_sync( $except_blog_id = 0 ) {
6014
+ $this->schedule_cron( 'install_sync', 'install_sync', 'single', WP_FS__SCRIPT_START_TIME, false, $except_blog_id );
6015
  }
6016
 
6017
  /**
6219
  }
6220
 
6221
  if ( $this->is_plugin_new_install() || $this->is_only_premium() ) {
6222
+ if ( ! $this->_anonymous_mode ) {
6223
+ // Show notice for new plugin installations.
6224
+ $this->_admin_notices->add(
6225
+ sprintf(
6226
+ $this->get_text_inline( 'You are just one step away - %s', 'you-are-step-away' ),
6227
+ sprintf( '<b><a href="%s">%s</a></b>',
6228
+ $this->get_activation_url( array(), ! $this->is_delegated_connection() ),
6229
+ sprintf( $this->get_text_x_inline( 'Complete "%s" Activation Now',
6230
+ '%s - plugin name. As complete "PluginX" activation now', 'activate-x-now' ), $this->get_plugin_name() )
6231
+ )
6232
+ ),
6233
+ '',
6234
+ 'update-nag'
6235
+ );
6236
+ }
6237
  } else {
6238
  if ( $this->should_add_sticky_optin_notice() ) {
6239
  $this->add_sticky_optin_admin_notice();
10598
  return;
10599
  }
10600
 
10601
+ if ( ! $this->is_premium() || $this->has_any_active_valid_license() ) {
10602
  // This is relevant only to the free versions and premium versions without an active license.
10603
  return;
10604
  }
10616
  */
10617
  function _activate_license_ajax_action() {
10618
  $this->_logger->entrance();
10619
+
10620
  $this->check_ajax_referer( 'activate_license' );
10621
 
10622
  $license_key = trim( fs_request_get( 'license_key' ) );
14785
  private function add_submenu_items() {
14786
  $this->_logger->entrance();
14787
 
14788
+ $is_activation_mode = $this->is_activation_mode();
14789
+
14790
  if ( $this->is_addon() ) {
14791
  // No submenu items for add-ons.
14792
  $add_submenu_items = false;
14793
  } else if ( $this->is_free_wp_org_theme() && ! fs_is_network_admin() ) {
14794
  // Also add submenu items when running in a free .org theme so the tabs will be visible.
14795
  $add_submenu_items = true;
14796
+ } else if ( $is_activation_mode && ! $this->is_free_wp_org_theme() ) {
14797
  $add_submenu_items = false;
14798
  } else if ( fs_is_network_admin() ) {
14799
  /**
14824
  $this->is_submenu_item_visible( 'affiliation' )
14825
  );
14826
  }
14827
+ }
14828
 
14829
+ if ( $add_submenu_items ||
14830
+ ( $is_activation_mode &&
14831
+ $this->is_only_premium() &&
14832
+ $this->is_admin_page( 'account' ) &&
14833
+ fs_request_is_action( $this->get_unique_affix() . '_sync_license' )
14834
+ )
14835
+ ) {
14836
  if ( ! WP_FS__DEMO_MODE && $this->is_registered() ) {
14837
  $show_account = (
14838
  $this->is_submenu_item_visible( 'account' ) &&
14851
  'account',
14852
  array( &$this, '_account_page_load' ),
14853
  WP_FS__DEFAULT_PRIORITY,
14854
+ ( $add_submenu_items && $show_account )
14855
  );
14856
  }
14857
+ }
14858
 
14859
+ if ( $add_submenu_items ) {
14860
  // Add contact page.
14861
  $this->add_submenu_item(
14862
  $this->get_text_inline( 'Contact Us', 'contact-us' ),
14881
  $this->is_submenu_item_visible( 'addons' )
14882
  );
14883
  }
14884
+ }
14885
 
14886
+ if ( $add_submenu_items ||
14887
+ ( $is_activation_mode && $this->is_only_premium() && $this->is_admin_page( 'pricing' ) )
14888
+ ) {
14889
  if ( ! WP_FS__DEMO_MODE ) {
14890
  $show_pricing = (
14891
  $this->is_submenu_item_visible( 'pricing' ) &&
14907
 
14908
  // Add upgrade/pricing page.
14909
  $this->add_submenu_item(
14910
+ $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' ) ),
14911
  array( &$this, '_pricing_page_render' ),
14912
  $this->get_plugin_name() . ' &ndash; ' . $this->get_text_x_inline( 'Pricing', 'noun', 'pricing' ),
14913
  'manage_options',
14914
  'pricing',
14915
  'Freemius::_clean_admin_content_section',
14916
  WP_FS__LOWEST_PRIORITY,
14917
+ ( $add_submenu_items && $show_pricing ),
14918
  $pricing_class
14919
  );
14920
  }
15614
  return;
15615
  }
15616
 
15617
+ $site_clone = is_object( $site ) ? $site : $this->_site;
15618
  $encrypted_site = clone $site_clone;
15619
 
15620
  $sites = self::get_all_sites( $this->_module_type, $network_level_or_blog_id );
15983
  /**
15984
  * @since 1.2.3 When running in DEV mode, retrieve pending plans as well.
15985
  */
15986
+ $result = $api->get( $this->add_show_pending( "/plugins/{$this->_module_id}/plans.json" ), true );
15987
 
15988
  if ( $this->is_api_result_object( $result, 'plans' ) && is_array( $result->plans ) ) {
15989
  for ( $i = 0, $len = count( $result->plans ); $i < $len; $i ++ ) {
16313
  * @since 1.2.1
16314
  */
16315
  function has_active_valid_license() {
16316
+ return self::is_active_valid_license( $this->_license );
16317
+ }
16318
+
16319
+ /**
16320
+ * Check if a given license is active & valid (not expired).
16321
+ *
16322
+ * @author Vova Feldman (@svovaf)
16323
+ * @since 2.1.3
16324
+ *
16325
+ * @param FS_Plugin_License $license
16326
+ *
16327
+ * @return bool
16328
+ */
16329
+ private static function is_active_valid_license( $license ) {
16330
  return (
16331
+ is_object( $license ) &&
16332
+ FS_Plugin_License::is_valid_id( $license->id ) &&
16333
+ $license->is_active() &&
16334
+ $license->is_valid()
16335
  );
16336
  }
16337
 
16338
+ /**
16339
+ * Checks if there's any site that is associated with an active & valid license.
16340
+ * This logic is used to determine if the admin can download the premium code base from a network level admin.
16341
+ *
16342
+ * @author Vova Feldman (@svovaf)
16343
+ * @since 2.1.3
16344
+ *
16345
+ * @return bool
16346
+ */
16347
+ function has_any_active_valid_license() {
16348
+ if ( ! fs_is_network_admin() ) {
16349
+ return $this->has_active_valid_license();
16350
+ }
16351
+
16352
+ $installs = $this->get_blog_install_map();
16353
+ $all_plugin_licenses = self::get_all_licenses( $this->_module_id );
16354
+
16355
+ foreach ( $installs as $blog_id => $install ) {
16356
+ if ( ! FS_Plugin_License::is_valid_id( $install->license_id ) ) {
16357
+ continue;
16358
+ }
16359
+
16360
+ foreach ( $all_plugin_licenses as $license ) {
16361
+ if ( $license->id == $install->license_id ) {
16362
+ if ( self::is_active_valid_license( $license ) ) {
16363
+ return true;
16364
+ }
16365
+ }
16366
+ }
16367
+ }
16368
+
16369
+ return false;
16370
+ }
16371
+
16372
  /**
16373
  * Check if site assigned with license with enabled features.
16374
  *
16499
  $this->_update_licenses( $licenses, $addon->id );
16500
 
16501
  if ( ! $this->is_addon_installed( $addon->id ) && FS_License_Manager::has_premium_license( $licenses ) ) {
16502
+ $plans_result = $this->get_api_site_or_plugin_scope()->get( $this->add_show_pending( "/addons/{$addon_id}/plans.json" ) );
16503
 
16504
  if ( ! isset( $plans_result->error ) ) {
16505
  $plans = array();
16827
  'trial_promotion',
16828
  'trial_expired',
16829
  'activation_complete',
16830
+ 'license_expired',
16831
  ) );
16832
  break;
16833
  case 'changed':
17362
  * @return bool
17363
  */
17364
  private function _can_download_premium() {
17365
+ return $this->has_any_active_valid_license() ||
17366
  ( $this->is_trial() && ! $this->get_trial_plan()->is_free() );
17367
  }
17368
 
17665
 
17666
  $api = $this->get_api_site_or_plugin_scope();
17667
 
17668
+ $path = $this->add_show_pending( '/addons.json?enriched=true' );
17669
+
17670
  /**
17671
  * @since 1.2.1
17672
  *
17673
  * If there's a cached version of the add-ons and not asking
17674
  * for a flush, just use the currently stored add-ons.
17675
  */
17676
+ if ( ! $flush && $api->is_cached( $path ) ) {
17677
  $addons = self::get_all_addons();
17678
 
17679
  return $addons[ $this->_plugin->id ];
17680
  }
17681
 
17682
+ $result = $api->get( $path, $flush );
17683
 
17684
  $addons = array();
17685
  if ( $this->is_api_result_object( $result, 'plugins' ) &&
18495
  $vars = array( 'id' => $this->_module_id );
18496
 
18497
  if ( 'true' === fs_request_get( 'checkout', false ) ) {
18498
+ echo $this->apply_filters( 'templates/checkout.php', fs_get_template( 'checkout.php', $vars ) );
18499
  } else {
18500
+ echo $this->apply_filters( 'templates/pricing.php', fs_get_template( 'pricing.php', $vars ) );
18501
  }
18502
  }
18503
 
18515
  $this->_logger->entrance();
18516
 
18517
  $vars = array( 'id' => $this->_module_id );
18518
+
18519
+ /**
18520
+ * Added filter to the template to allow developers wrapping the template
18521
+ * in custom HTML (e.g. within a wizard/tabs).
18522
+ *
18523
+ * @author Vova Feldman (@svovaf)
18524
+ * @since 2.1.3
18525
+ */
18526
+ echo $this->apply_filters( 'templates/contact.php', fs_get_template( 'contact.php', $vars ) );
18527
  }
18528
 
18529
  #endregion ------------------------------------------------------------------------
18620
  * @return FS_Api
18621
  */
18622
  private function get_current_or_network_user_api_scope( $flush = false ) {
18623
+ if ( ! $this->_is_network_active ||
18624
+ ( isset( $this->_user ) && $this->_user instanceof FS_User )
18625
+ ) {
18626
  return $this->get_api_user_scope( $flush );
18627
  }
18628
 
18710
  * @author Vova Feldman (@svovaf)
18711
  * @since 1.0.9
18712
  *
18713
+ * @param FS_Plugin_Plan[] $plans
18714
  */
18715
  function _check_for_trial_plans( $plans ) {
18716
+ /**
18717
+ * 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.
18718
+ *
18719
+ * @author Vova Feldman (@svovaf)
18720
+ * @since 2.1.2
18721
+ */
18722
+ if ( ! is_array( $plans ) && is_object( $plans ) ) {
18723
+ $plans = array( $plans );
18724
+ }
18725
+
18726
  $this->_storage->has_trial_plan = FS_Plan_Manager::instance()->has_trial_plan( $plans );
18727
  }
18728
 
18829
 
18830
  // Show promotion if never shown before and 24 hours after initial activation with FS.
18831
  if ( ! $was_promotion_shown_before &&
18832
+ $this->_storage->install_timestamp > ( time() - $this->apply_filters( 'show_first_trial_after_n_sec', WP_FS__TIME_24_HOURS_IN_SEC ) )
18833
  ) {
18834
  return false;
18835
  }
18836
 
18837
  // OR if promotion was shown before, try showing it every 30 days.
18838
  if ( $was_promotion_shown_before &&
18839
+ $this->apply_filters( 'reshow_trial_after_every_n_sec', 30 * WP_FS__TIME_24_HOURS_IN_SEC ) > time() - $last_time_trial_promotion_shown
18840
  ) {
18841
  return false;
18842
  }
19461
  * @param array $request
19462
  * @param int $success_cache_expiration
19463
  * @param int $failure_cache_expiration
19464
+ * @param bool $maybe_enrich_request_for_debug
19465
  *
19466
  * @return WP_Error|array
19467
  */
19468
+ static function safe_remote_post(
19469
  &$url,
19470
  $request,
19471
  $success_cache_expiration = 0,
19472
+ $failure_cache_expiration = 0,
19473
+ $maybe_enrich_request_for_debug = true
19474
  ) {
19475
  $should_cache = ($success_cache_expiration + $failure_cache_expiration > 0);
19476
 
19481
  false;
19482
 
19483
  if ( false === $response ) {
19484
+ if ( $maybe_enrich_request_for_debug ) {
19485
+ self::enrich_request_for_debug( $url, $request );
19486
+ }
19487
 
19488
  $response = wp_remote_post( $url, $request );
19489
 
20238
  $icon_found = false;
20239
  $local_path = fs_normalize_path( "{$img_dir}/{$this->_slug}.png" );
20240
 
20241
+ if ( ! function_exists( 'get_filesystem_method' ) ) {
20242
+ require_once ABSPATH . 'wp-admin/includes/file.php';
20243
+ }
20244
+
20245
  $have_write_permissions = ( 'direct' === get_filesystem_method( array(), fs_normalize_path( $img_dir ) ) );
20246
 
20247
  /**
20758
  * @since 2.1.0
20759
  */
20760
  function _maybe_add_gdpr_optin_ajax_handler() {
20761
+ $this->add_ajax_action( 'fetch_is_marketing_required_flag_value', array( &$this, '_fetch_is_marketing_required_flag_value_ajax_action' ) );
 
 
20762
 
20763
  if ( FS_GDPR_Manager::instance()->is_opt_in_notice_shown() ) {
20764
  $this->add_gdpr_optin_ajax_handler_and_style();
20942
  }
20943
 
20944
  #endregion
20945
+
20946
+ #----------------------------------------------------------------------------------
20947
+ #region Helper
20948
+ #----------------------------------------------------------------------------------
20949
+
20950
+ /**
20951
+ * If running with a secret key, assume it's the developer and show pending plans as well.
20952
+ *
20953
+ * @author Vova Feldman (@svovaf)
20954
+ * @since 2.1.2
20955
+ *
20956
+ * @param string $path
20957
+ *
20958
+ * @return string
20959
+ */
20960
+ function add_show_pending( $path ) {
20961
+ if ( ! $this->has_secret_key() ) {
20962
+ return $path;
20963
+ }
20964
+
20965
+ return $path . ( false !== strpos( $path, '?' ) ? '&' : '?' ) . 'show_pending=true';
20966
+ }
20967
+
20968
+ #endregion
20969
  }
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-logger.php CHANGED
@@ -1,691 +1,691 @@
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_Logger {
14
- private $_id;
15
- private $_on = false;
16
- private $_echo = false;
17
- private $_file_start = 0;
18
- /**
19
- * @var int PHP Process ID.
20
- */
21
- private static $_processID;
22
- /**
23
- * @var string PHP Script user name.
24
- */
25
- private static $_ownerName;
26
- /**
27
- * @var bool Is storage logging turned on.
28
- */
29
- private static $_isStorageLoggingOn;
30
- /**
31
- * @var int ABSPATH length.
32
- */
33
- private static $_abspathLength;
34
-
35
- private static $LOGGERS = array();
36
- private static $LOG = array();
37
- private static $CNT = 0;
38
- private static $_HOOKED_FOOTER = false;
39
-
40
- private function __construct( $id, $on = false, $echo = false ) {
41
- $this->_id = $id;
42
-
43
- $bt = debug_backtrace();
44
- $caller = $bt[2];
45
-
46
- if ( false !== strpos( $caller['file'], 'plugins' ) ) {
47
- $this->_file_start = strpos( $caller['file'], 'plugins' ) + strlen( 'plugins/' );
48
- } else {
49
- $this->_file_start = strpos( $caller['file'], 'themes' ) + strlen( 'themes/' );
50
- }
51
-
52
- if ( $on ) {
53
- $this->on();
54
- }
55
- if ( $echo ) {
56
- $this->echo_on();
57
- }
58
- }
59
-
60
- /**
61
- * @param string $id
62
- * @param bool $on
63
- * @param bool $echo
64
- *
65
- * @return FS_Logger
66
- */
67
- public static function get_logger( $id, $on = false, $echo = false ) {
68
- $id = strtolower( $id );
69
-
70
- if ( ! isset( self::$_processID ) ) {
71
- self::init();
72
- }
73
-
74
- if ( ! isset( self::$LOGGERS[ $id ] ) ) {
75
- self::$LOGGERS[ $id ] = new FS_Logger( $id, $on, $echo );
76
- }
77
-
78
- return self::$LOGGERS[ $id ];
79
- }
80
-
81
- /**
82
- * Initialize logging global info.
83
- *
84
- * @author Vova Feldman (@svovaf)
85
- * @since 1.2.1.6
86
- */
87
- private static function init() {
88
- self::$_ownerName = function_exists( 'get_current_user' ) ?
89
- get_current_user() :
90
- 'unknown';
91
- self::$_isStorageLoggingOn = ( 1 == get_option( 'fs_storage_logger', 0 ) );
92
- self::$_abspathLength = strlen( ABSPATH );
93
- self::$_processID = mt_rand( 0, 32000 );
94
-
95
- // Process ID may be `false` on errors.
96
- if ( ! is_numeric( self::$_processID ) ) {
97
- self::$_processID = 0;
98
- }
99
- }
100
-
101
- private static function hook_footer() {
102
- if ( self::$_HOOKED_FOOTER ) {
103
- return;
104
- }
105
-
106
- if ( is_admin() ) {
107
- add_action( 'admin_footer', 'FS_Logger::dump', 100 );
108
- } else {
109
- add_action( 'wp_footer', 'FS_Logger::dump', 100 );
110
- }
111
- }
112
-
113
- function is_on() {
114
- return $this->_on;
115
- }
116
-
117
- function on() {
118
- $this->_on = true;
119
-
120
- if ( ! function_exists( 'dbDelta' ) ) {
121
- require_once ABSPATH . 'wp-admin/includes/upgrade.php';
122
- }
123
-
124
- self::hook_footer();
125
- }
126
-
127
- function echo_on() {
128
- $this->on();
129
-
130
- $this->_echo = true;
131
- }
132
-
133
- function is_echo_on() {
134
- return $this->_echo;
135
- }
136
-
137
- function get_id() {
138
- return $this->_id;
139
- }
140
-
141
- function get_file() {
142
- return $this->_file_start;
143
- }
144
-
145
- private function _log( &$message, $type = 'log', $wrapper ) {
146
- if ( ! $this->is_on() ) {
147
- return;
148
- }
149
-
150
- $bt = debug_backtrace();
151
- $depth = $wrapper ? 3 : 2;
152
- while ( $depth < count( $bt ) - 1 && 'eval' === $bt[ $depth ]['function'] ) {
153
- $depth ++;
154
- }
155
-
156
- $caller = $bt[ $depth ];
157
-
158
- /**
159
- * Retrieve the correct call file & line number from backtrace
160
- * when logging from a wrapper method.
161
- *
162
- * @author Vova Feldman
163
- * @since 1.2.1.6
164
- */
165
- if ( empty( $caller['line'] ) ) {
166
- $depth --;
167
-
168
- while ( $depth >= 0 ) {
169
- if ( ! empty( $bt[ $depth ]['line'] ) ) {
170
- $caller['line'] = $bt[ $depth ]['line'];
171
- $caller['file'] = $bt[ $depth ]['file'];
172
- break;
173
- }
174
- }
175
- }
176
-
177
- $log = array_merge( $caller, array(
178
- 'cnt' => self::$CNT ++,
179
- 'logger' => $this,
180
- 'timestamp' => microtime( true ),
181
- 'log_type' => $type,
182
- 'msg' => $message,
183
- ) );
184
-
185
- if ( self::$_isStorageLoggingOn ) {
186
- $this->db_log( $type, $message, self::$CNT, $caller );
187
- }
188
-
189
- self::$LOG[] = $log;
190
-
191
- if ( $this->is_echo_on() && ! Freemius::is_ajax() ) {
192
- echo self::format_html( $log ) . "\n";
193
- }
194
- }
195
-
196
- function log( $message, $wrapper = false ) {
197
- $this->_log( $message, 'log', $wrapper );
198
- }
199
-
200
- function info( $message, $wrapper = false ) {
201
- $this->_log( $message, 'info', $wrapper );
202
- }
203
-
204
- function warn( $message, $wrapper = false ) {
205
- $this->_log( $message, 'warn', $wrapper );
206
- }
207
-
208
- function error( $message, $wrapper = false ) {
209
- $this->_log( $message, 'error', $wrapper );
210
- }
211
-
212
- /**
213
- * Log API error.
214
- *
215
- * @author Vova Feldman (@svovaf)
216
- * @since 1.2.1.5
217
- *
218
- * @param mixed $api_result
219
- * @param bool $wrapper
220
- */
221
- function api_error( $api_result, $wrapper = false ) {
222
- $message = '';
223
- if ( is_object( $api_result ) &&
224
- ! empty( $api_result->error ) &&
225
- ! empty( $api_result->error->message )
226
- ) {
227
- $message = $api_result->error->message;
228
- } else if ( is_object( $api_result ) ) {
229
- $message = var_export( $api_result, true );
230
- } else if ( is_string( $api_result ) ) {
231
- $message = $api_result;
232
- } else if ( empty( $api_result ) ) {
233
- $message = 'Empty API result.';
234
- }
235
-
236
- $message = 'API Error: ' . $message;
237
-
238
- $this->_log( $message, 'error', $wrapper );
239
- }
240
-
241
- function entrance( $message = '', $wrapper = false ) {
242
- $msg = 'Entrance' . ( empty( $message ) ? '' : ' > ' ) . $message;
243
-
244
- $this->_log( $msg, 'log', $wrapper );
245
- }
246
-
247
- function departure( $message = '', $wrapper = false ) {
248
- $msg = 'Departure' . ( empty( $message ) ? '' : ' > ' ) . $message;
249
-
250
- $this->_log( $msg, 'log', $wrapper );
251
- }
252
-
253
- #--------------------------------------------------------------------------------
254
- #region Log Formatting
255
- #--------------------------------------------------------------------------------
256
-
257
- private static function format( $log, $show_type = true ) {
258
- return '[' . str_pad( $log['cnt'], strlen( self::$CNT ), '0', STR_PAD_LEFT ) . '] [' . $log['logger']->_id . '] ' . ( $show_type ? '[' . $log['log_type'] . ']' : '' ) . ( ! empty( $log['class'] ) ? $log['class'] . $log['type'] : '' ) . $log['function'] . ' >> ' . $log['msg'] . ( isset( $log['file'] ) ? ' (' . substr( $log['file'], $log['logger']->_file_start ) . ' ' . $log['line'] . ') ' : '' ) . ' [' . $log['timestamp'] . ']';
259
- }
260
-
261
- private static function format_html( $log ) {
262
- return '<div style="font-size: 13px; font-family: monospace; color: #7da767; padding: 8px 3px; background: #000; border-bottom: 1px solid #555;">[' . $log['cnt'] . '] [' . $log['logger']->_id . '] [' . $log['log_type'] . '] <b><code style="color: #c4b1e0;">' . ( ! empty( $log['class'] ) ? $log['class'] . $log['type'] : '' ) . $log['function'] . '</code> >> <b style="color: #f59330;">' . esc_html( $log['msg'] ) . '</b></b>' . ( isset( $log['file'] ) ? ' (' . substr( $log['file'], $log['logger']->_file_start ) . ' ' . $log['line'] . ')' : '' ) . ' [' . $log['timestamp'] . ']</div>';
263
- }
264
-
265
- #endregion
266
-
267
- static function dump() {
268
- ?>
269
- <!-- BEGIN: Freemius PHP Console Log -->
270
- <script type="text/javascript">
271
- <?php
272
- foreach ( self::$LOG as $log ) {
273
- echo 'console.' . $log['log_type'] . '(' . json_encode( self::format( $log, false ) ) . ')' . "\n";
274
- }
275
- ?>
276
- </script>
277
- <!-- END: Freemius PHP Console Log -->
278
- <?php
279
- }
280
-
281
- static function get_log() {
282
- return self::$LOG;
283
- }
284
-
285
- #--------------------------------------------------------------------------------
286
- #region Database Logging
287
- #--------------------------------------------------------------------------------
288
-
289
- /**
290
- * @author Vova Feldman (@svovaf)
291
- * @since 1.2.1.6
292
- *
293
- * @return bool
294
- */
295
- public static function is_storage_logging_on() {
296
- if ( ! isset( self::$_isStorageLoggingOn ) ) {
297
- self::$_isStorageLoggingOn = ( 1 == get_option( 'fs_storage_logger', 0 ) );
298
- }
299
-
300
- return self::$_isStorageLoggingOn;
301
- }
302
-
303
- /**
304
- * Turns on/off database persistent debugging to capture
305
- * multi-session logs to debug complex flows like
306
- * plugin auto-deactivate on premium version activation.
307
- *
308
- * @todo Check if Theme Check has issues with DB tables for themes.
309
- *
310
- * @author Vova Feldman (@svovaf)
311
- * @since 1.2.1.6
312
- *
313
- * @param bool $is_on
314
- *
315
- * @return bool
316
- */
317
- public static function _set_storage_logging( $is_on = true ) {
318
- global $wpdb;
319
-
320
- $table = "{$wpdb->prefix}fs_logger";
321
-
322
- if ( $is_on ) {
323
- /**
324
- * Create logging table.
325
- *
326
- * NOTE:
327
- * dbDelta must use KEY and not INDEX for indexes.
328
- *
329
- * @link https://core.trac.wordpress.org/ticket/2695
330
- */
331
- $result = $wpdb->query( "CREATE TABLE {$table} (
332
- `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
333
- `process_id` INT UNSIGNED NOT NULL,
334
- `user_name` VARCHAR(64) NOT NULL,
335
- `logger` VARCHAR(128) NOT NULL,
336
- `log_order` INT UNSIGNED NOT NULL,
337
- `type` ENUM('log','info','warn','error') NOT NULL DEFAULT 'log',
338
- `message` TEXT NOT NULL,
339
- `file` VARCHAR(256) NOT NULL,
340
- `line` INT UNSIGNED NOT NULL,
341
- `function` VARCHAR(256) NOT NULL,
342
- `request_type` ENUM('call','ajax','cron') NOT NULL DEFAULT 'call',
343
- `request_url` VARCHAR(1024) NOT NULL,
344
- `created` DECIMAL(16, 6) NOT NULL,
345
- PRIMARY KEY (`id`),
346
- KEY `process_id` (`process_id` ASC),
347
- KEY `process_logger` (`process_id` ASC, `logger` ASC),
348
- KEY `function` (`function` ASC),
349
- KEY `type` (`type` ASC))" );
350
- } else {
351
- /**
352
- * Drop logging table.
353
- */
354
- $result = $wpdb->query( "DROP TABLE IF EXISTS $table;" );
355
- }
356
-
357
- if ( false !== $result ) {
358
- update_option( 'fs_storage_logger', ( $is_on ? 1 : 0 ) );
359
- }
360
-
361
- return ( false !== $result );
362
- }
363
-
364
- /**
365
- * @author Vova Feldman (@svovaf)
366
- * @since 1.2.1.6
367
- *
368
- * @param string $type
369
- * @param string $message
370
- * @param int $log_order
371
- * @param array $caller
372
- *
373
- * @return false|int
374
- */
375
- private function db_log(
376
- &$type,
377
- &$message,
378
- &$log_order,
379
- &$caller
380
- ) {
381
- global $wpdb;
382
-
383
- $request_type = 'call';
384
- if ( defined( 'DOING_CRON' ) && DOING_CRON ) {
385
- $request_type = 'cron';
386
- } else if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
387
- $request_type = 'ajax';
388
- }
389
-
390
- $request_url = WP_FS__IS_HTTP_REQUEST ?
391
- $_SERVER['REQUEST_URI'] :
392
- '';
393
-
394
- return $wpdb->insert(
395
- "{$wpdb->prefix}fs_logger",
396
- array(
397
- 'process_id' => self::$_processID,
398
- 'user_name' => self::$_ownerName,
399
- 'logger' => $this->_id,
400
- 'log_order' => $log_order,
401
- 'type' => $type,
402
- 'request_type' => $request_type,
403
- 'request_url' => $request_url,
404
- 'message' => $message,
405
- 'file' => isset( $caller['file'] ) ?
406
- substr( $caller['file'], self::$_abspathLength ) :
407
- '',
408
- 'line' => $caller['line'],
409
- 'function' => ( ! empty( $caller['class'] ) ? $caller['class'] . $caller['type'] : '' ) . $caller['function'],
410
- 'created' => microtime( true ),
411
- )
412
- );
413
- }
414
-
415
- /**
416
- * Persistent DB logger columns.
417
- *
418
- * @var array
419
- */
420
- private static $_log_columns = array(
421
- 'id',
422
- 'process_id',
423
- 'user_name',
424
- 'logger',
425
- 'log_order',
426
- 'type',
427
- 'message',
428
- 'file',
429
- 'line',
430
- 'function',
431
- 'request_type',
432
- 'request_url',
433
- 'created',
434
- );
435
-
436
- /**
437
- * Create DB logs query.
438
- *
439
- * @author Vova Feldman (@svovaf)
440
- * @since 1.2.1.6
441
- *
442
- * @param bool $filters
443
- * @param int $limit
444
- * @param int $offset
445
- * @param bool $order
446
- * @param bool $escape_eol
447
- *
448
- * @return string
449
- */
450
- private static function build_db_logs_query(
451
- $filters = false,
452
- $limit = 200,
453
- $offset = 0,
454
- $order = false,
455
- $escape_eol = false
456
- ) {
457
- global $wpdb;
458
-
459
- $select = '*';
460
-
461
- if ( $escape_eol ) {
462
- $select = '';
463
- for ( $i = 0, $len = count( self::$_log_columns ); $i < $len; $i ++ ) {
464
- if ( $i > 0 ) {
465
- $select .= ', ';
466
- }
467
-
468
- if ( 'message' !== self::$_log_columns[ $i ] ) {
469
- $select .= self::$_log_columns[ $i ];
470
- } else {
471
- $select .= 'REPLACE(message , \'\n\', \' \') AS message';
472
- }
473
- }
474
- }
475
-
476
- $query = "SELECT {$select} FROM {$wpdb->prefix}fs_logger";
477
- if ( is_array( $filters ) ) {
478
- $criteria = array();
479
-
480
- if ( ! empty( $filters['type'] ) && 'all' !== $filters['type'] ) {
481
- $filters['type'] = strtolower( $filters['type'] );
482
-
483
- switch ( $filters['type'] ) {
484
- case 'warn_error':
485
- $criteria[] = array( 'col' => 'type', 'val' => array( 'warn', 'error' ) );
486
- break;
487
- case 'error':
488
- case 'warn':
489
- $criteria[] = array( 'col' => 'type', 'val' => $filters['type'] );
490
- break;
491
- case 'info':
492
- default:
493
- $criteria[] = array( 'col' => 'type', 'val' => array( 'info', 'log' ) );
494
- break;
495
- }
496
- }
497
-
498
- if ( ! empty( $filters['request_type'] ) ) {
499
- $filters['request_type'] = strtolower( $filters['request_type'] );
500
-
501
- if ( in_array( $filters['request_type'], array( 'call', 'ajax', 'cron' ) ) ) {
502
- $criteria[] = array( 'col' => 'request_type', 'val' => $filters['request_type'] );
503
- }
504
- }
505
-
506
- if ( ! empty( $filters['file'] ) ) {
507
- $criteria[] = array(
508
- 'col' => 'file',
509
- 'op' => 'LIKE',
510
- 'val' => '%' . esc_sql( $filters['file'] ),
511
- );
512
- }
513
-
514
- if ( ! empty( $filters['function'] ) ) {
515
- $criteria[] = array(
516
- 'col' => 'function',
517
- 'op' => 'LIKE',
518
- 'val' => '%' . esc_sql( $filters['function'] ),
519
- );
520
- }
521
-
522
- if ( ! empty( $filters['process_id'] ) && is_numeric( $filters['process_id'] ) ) {
523
- $criteria[] = array( 'col' => 'process_id', 'val' => $filters['process_id'] );
524
- }
525
-
526
- if ( ! empty( $filters['logger'] ) ) {
527
- $criteria[] = array(
528
- 'col' => 'logger',
529
- 'op' => 'LIKE',
530
- 'val' => '%' . esc_sql( $filters['logger'] ) . '%',
531
- );
532
- }
533
-
534
- if ( ! empty( $filters['message'] ) ) {
535
- $criteria[] = array(
536
- 'col' => 'message',
537
- 'op' => 'LIKE',
538
- 'val' => '%' . esc_sql( $filters['message'] ) . '%',
539
- );
540
- }
541
-
542
- if ( 0 < count( $criteria ) ) {
543
- $query .= "\nWHERE\n";
544
-
545
- $first = true;
546
- foreach ( $criteria as $c ) {
547
- if ( ! $first ) {
548
- $query .= "AND\n";
549
- }
550
-
551
- if ( is_array( $c['val'] ) ) {
552
- $operator = 'IN';
553
-
554
- for ( $i = 0, $len = count( $c['val'] ); $i < $len; $i ++ ) {
555
- $c['val'][ $i ] = "'" . esc_sql( $c['val'][ $i ] ) . "'";
556
- }
557
-
558
- $val = '(' . implode( ',', $c['val'] ) . ')';
559
- } else {
560
- $operator = ! empty( $c['op'] ) ? $c['op'] : '=';
561
- $val = "'" . esc_sql( $c['val'] ) . "'";
562
- }
563
-
564
- $query .= "`{$c['col']}` {$operator} {$val}\n";
565
-
566
- $first = false;
567
- }
568
- }
569
- }
570
-
571
- if ( ! is_array( $order ) ) {
572
- $order = array(
573
- 'col' => 'id',
574
- 'order' => 'desc'
575
- );
576
- }
577
-
578
- $query .= " ORDER BY {$order['col']} {$order['order']} LIMIT {$offset},{$limit}";
579
-
580
- return $query;
581
- }
582
-
583
- /**
584
- * Load logs from DB.
585
- *
586
- * @author Vova Feldman (@svovaf)
587
- * @since 1.2.1.6
588
- *
589
- * @param bool $filters
590
- * @param int $limit
591
- * @param int $offset
592
- * @param bool $order
593
- *
594
- * @return object[]|null
595
- */
596
- public static function load_db_logs(
597
- $filters = false,
598
- $limit = 200,
599
- $offset = 0,
600
- $order = false
601
- ) {
602
- global $wpdb;
603
-
604
- $query = self::build_db_logs_query(
605
- $filters,
606
- $limit,
607
- $offset,
608
- $order
609
- );
610
-
611
- return $wpdb->get_results( $query );
612
- }
613
-
614
- /**
615
- * Load logs from DB.
616
- *
617
- * @author Vova Feldman (@svovaf)
618
- * @since 1.2.1.6
619
- *
620
- * @param bool $filters
621
- * @param string $filename
622
- * @param int $limit
623
- * @param int $offset
624
- * @param bool $order
625
- *
626
- * @return false|string File download URL or false on failure.
627
- */
628
- public static function download_db_logs(
629
- $filters = false,
630
- $filename = '',
631
- $limit = 10000,
632
- $offset = 0,
633
- $order = false
634
- ) {
635
- global $wpdb;
636
-
637
- $query = self::build_db_logs_query(
638
- $filters,
639
- $limit,
640
- $offset,
641
- $order,
642
- true
643
- );
644
-
645
- $upload_dir = wp_upload_dir();
646
- if ( empty( $filename ) ) {
647
- $filename = 'fs-logs-' . date( 'Y-m-d_H-i-s', WP_FS__SCRIPT_START_TIME ) . '.csv';
648
- }
649
- $filepath = rtrim( $upload_dir['path'], '/' ) . "/{$filename}";
650
-
651
- $query .= " INTO OUTFILE '{$filepath}' FIELDS TERMINATED BY '\t' ESCAPED BY '\\\\' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\\n'";
652
-
653
- $columns = '';
654
- for ( $i = 0, $len = count( self::$_log_columns ); $i < $len; $i ++ ) {
655
- if ( $i > 0 ) {
656
- $columns .= ', ';
657
- }
658
-
659
- $columns .= "'" . self::$_log_columns[ $i ] . "'";
660
- }
661
-
662
- $query = "SELECT {$columns} UNION ALL " . $query;
663
-
664
- $result = $wpdb->query( $query );
665
-
666
- if ( false === $result ) {
667
- return false;
668
- }
669
-
670
- return rtrim( $upload_dir['url'], '/' ) . '/' . $filename;
671
- }
672
-
673
- /**
674
- * @author Vova Feldman (@svovaf)
675
- * @since 1.2.1.6
676
- *
677
- * @param string $filename
678
- *
679
- * @return string
680
- */
681
- public static function get_logs_download_url( $filename = '' ) {
682
- $upload_dir = wp_upload_dir();
683
- if ( empty( $filename ) ) {
684
- $filename = 'fs-logs-' . date( 'Y-m-d_H-i-s', WP_FS__SCRIPT_START_TIME ) . '.csv';
685
- }
686
-
687
- return rtrim( $upload_dir['url'], '/' ) . $filename;
688
- }
689
-
690
- #endregion
691
  }
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_Logger {
14
+ private $_id;
15
+ private $_on = false;
16
+ private $_echo = false;
17
+ private $_file_start = 0;
18
+ /**
19
+ * @var int PHP Process ID.
20
+ */
21
+ private static $_processID;
22
+ /**
23
+ * @var string PHP Script user name.
24
+ */
25
+ private static $_ownerName;
26
+ /**
27
+ * @var bool Is storage logging turned on.
28
+ */
29
+ private static $_isStorageLoggingOn;
30
+ /**
31
+ * @var int ABSPATH length.
32
+ */
33
+ private static $_abspathLength;
34
+
35
+ private static $LOGGERS = array();
36
+ private static $LOG = array();
37
+ private static $CNT = 0;
38
+ private static $_HOOKED_FOOTER = false;
39
+
40
+ private function __construct( $id, $on = false, $echo = false ) {
41
+ $this->_id = $id;
42
+
43
+ $bt = debug_backtrace();
44
+ $caller = $bt[2];
45
+
46
+ if ( false !== strpos( $caller['file'], 'plugins' ) ) {
47
+ $this->_file_start = strpos( $caller['file'], 'plugins' ) + strlen( 'plugins/' );
48
+ } else {
49
+ $this->_file_start = strpos( $caller['file'], 'themes' ) + strlen( 'themes/' );
50
+ }
51
+
52
+ if ( $on ) {
53
+ $this->on();
54
+ }
55
+ if ( $echo ) {
56
+ $this->echo_on();
57
+ }
58
+ }
59
+
60
+ /**
61
+ * @param string $id
62
+ * @param bool $on
63
+ * @param bool $echo
64
+ *
65
+ * @return FS_Logger
66
+ */
67
+ public static function get_logger( $id, $on = false, $echo = false ) {
68
+ $id = strtolower( $id );
69
+
70
+ if ( ! isset( self::$_processID ) ) {
71
+ self::init();
72
+ }
73
+
74
+ if ( ! isset( self::$LOGGERS[ $id ] ) ) {
75
+ self::$LOGGERS[ $id ] = new FS_Logger( $id, $on, $echo );
76
+ }
77
+
78
+ return self::$LOGGERS[ $id ];
79
+ }
80
+
81
+ /**
82
+ * Initialize logging global info.
83
+ *
84
+ * @author Vova Feldman (@svovaf)
85
+ * @since 1.2.1.6
86
+ */
87
+ private static function init() {
88
+ self::$_ownerName = function_exists( 'get_current_user' ) ?
89
+ get_current_user() :
90
+ 'unknown';
91
+ self::$_isStorageLoggingOn = ( 1 == get_option( 'fs_storage_logger', 0 ) );
92
+ self::$_abspathLength = strlen( ABSPATH );
93
+ self::$_processID = mt_rand( 0, 32000 );
94
+
95
+ // Process ID may be `false` on errors.
96
+ if ( ! is_numeric( self::$_processID ) ) {
97
+ self::$_processID = 0;
98
+ }
99
+ }
100
+
101
+ private static function hook_footer() {
102
+ if ( self::$_HOOKED_FOOTER ) {
103
+ return;
104
+ }
105
+
106
+ if ( is_admin() ) {
107
+ add_action( 'admin_footer', 'FS_Logger::dump', 100 );
108
+ } else {
109
+ add_action( 'wp_footer', 'FS_Logger::dump', 100 );
110
+ }
111
+ }
112
+
113
+ function is_on() {
114
+ return $this->_on;
115
+ }
116
+
117
+ function on() {
118
+ $this->_on = true;
119
+
120
+ if ( ! function_exists( 'dbDelta' ) ) {
121
+ require_once ABSPATH . 'wp-admin/includes/upgrade.php';
122
+ }
123
+
124
+ self::hook_footer();
125
+ }
126
+
127
+ function echo_on() {
128
+ $this->on();
129
+
130
+ $this->_echo = true;
131
+ }
132
+
133
+ function is_echo_on() {
134
+ return $this->_echo;
135
+ }
136
+
137
+ function get_id() {
138
+ return $this->_id;
139
+ }
140
+
141
+ function get_file() {
142
+ return $this->_file_start;
143
+ }
144
+
145
+ private function _log( &$message, $type = 'log', $wrapper ) {
146
+ if ( ! $this->is_on() ) {
147
+ return;
148
+ }
149
+
150
+ $bt = debug_backtrace();
151
+ $depth = $wrapper ? 3 : 2;
152
+ while ( $depth < count( $bt ) - 1 && 'eval' === $bt[ $depth ]['function'] ) {
153
+ $depth ++;
154
+ }
155
+
156
+ $caller = $bt[ $depth ];
157
+
158
+ /**
159
+ * Retrieve the correct call file & line number from backtrace
160
+ * when logging from a wrapper method.
161
+ *
162
+ * @author Vova Feldman
163
+ * @since 1.2.1.6
164
+ */
165
+ if ( empty( $caller['line'] ) ) {
166
+ $depth --;
167
+
168
+ while ( $depth >= 0 ) {
169
+ if ( ! empty( $bt[ $depth ]['line'] ) ) {
170
+ $caller['line'] = $bt[ $depth ]['line'];
171
+ $caller['file'] = $bt[ $depth ]['file'];
172
+ break;
173
+ }
174
+ }
175
+ }
176
+
177
+ $log = array_merge( $caller, array(
178
+ 'cnt' => self::$CNT ++,
179
+ 'logger' => $this,
180
+ 'timestamp' => microtime( true ),
181
+ 'log_type' => $type,
182
+ 'msg' => $message,
183
+ ) );
184
+
185
+ if ( self::$_isStorageLoggingOn ) {
186
+ $this->db_log( $type, $message, self::$CNT, $caller );
187
+ }
188
+
189
+ self::$LOG[] = $log;
190
+
191
+ if ( $this->is_echo_on() && ! Freemius::is_ajax() ) {
192
+ echo self::format_html( $log ) . "\n";
193
+ }
194
+ }
195
+
196
+ function log( $message, $wrapper = false ) {
197
+ $this->_log( $message, 'log', $wrapper );
198
+ }
199
+
200
+ function info( $message, $wrapper = false ) {
201
+ $this->_log( $message, 'info', $wrapper );
202
+ }
203
+
204
+ function warn( $message, $wrapper = false ) {
205
+ $this->_log( $message, 'warn', $wrapper );
206
+ }
207
+
208
+ function error( $message, $wrapper = false ) {
209
+ $this->_log( $message, 'error', $wrapper );
210
+ }
211
+
212
+ /**
213
+ * Log API error.
214
+ *
215
+ * @author Vova Feldman (@svovaf)
216
+ * @since 1.2.1.5
217
+ *
218
+ * @param mixed $api_result
219
+ * @param bool $wrapper
220
+ */
221
+ function api_error( $api_result, $wrapper = false ) {
222
+ $message = '';
223
+ if ( is_object( $api_result ) &&
224
+ ! empty( $api_result->error ) &&
225
+ ! empty( $api_result->error->message )
226
+ ) {
227
+ $message = $api_result->error->message;
228
+ } else if ( is_object( $api_result ) ) {
229
+ $message = var_export( $api_result, true );
230
+ } else if ( is_string( $api_result ) ) {
231
+ $message = $api_result;
232
+ } else if ( empty( $api_result ) ) {
233
+ $message = 'Empty API result.';
234
+ }
235
+
236
+ $message = 'API Error: ' . $message;
237
+
238
+ $this->_log( $message, 'error', $wrapper );
239
+ }
240
+
241
+ function entrance( $message = '', $wrapper = false ) {
242
+ $msg = 'Entrance' . ( empty( $message ) ? '' : ' > ' ) . $message;
243
+
244
+ $this->_log( $msg, 'log', $wrapper );
245
+ }
246
+
247
+ function departure( $message = '', $wrapper = false ) {
248
+ $msg = 'Departure' . ( empty( $message ) ? '' : ' > ' ) . $message;
249
+
250
+ $this->_log( $msg, 'log', $wrapper );
251
+ }
252
+
253
+ #--------------------------------------------------------------------------------
254
+ #region Log Formatting
255
+ #--------------------------------------------------------------------------------
256
+
257
+ private static function format( $log, $show_type = true ) {
258
+ return '[' . str_pad( $log['cnt'], strlen( self::$CNT ), '0', STR_PAD_LEFT ) . '] [' . $log['logger']->_id . '] ' . ( $show_type ? '[' . $log['log_type'] . ']' : '' ) . ( ! empty( $log['class'] ) ? $log['class'] . $log['type'] : '' ) . $log['function'] . ' >> ' . $log['msg'] . ( isset( $log['file'] ) ? ' (' . substr( $log['file'], $log['logger']->_file_start ) . ' ' . $log['line'] . ') ' : '' ) . ' [' . $log['timestamp'] . ']';
259
+ }
260
+
261
+ private static function format_html( $log ) {
262
+ return '<div style="font-size: 13px; font-family: monospace; color: #7da767; padding: 8px 3px; background: #000; border-bottom: 1px solid #555;">[' . $log['cnt'] . '] [' . $log['logger']->_id . '] [' . $log['log_type'] . '] <b><code style="color: #c4b1e0;">' . ( ! empty( $log['class'] ) ? $log['class'] . $log['type'] : '' ) . $log['function'] . '</code> >> <b style="color: #f59330;">' . esc_html( $log['msg'] ) . '</b></b>' . ( isset( $log['file'] ) ? ' (' . substr( $log['file'], $log['logger']->_file_start ) . ' ' . $log['line'] . ')' : '' ) . ' [' . $log['timestamp'] . ']</div>';
263
+ }
264
+
265
+ #endregion
266
+
267
+ static function dump() {
268
+ ?>
269
+ <!-- BEGIN: Freemius PHP Console Log -->
270
+ <script type="text/javascript">
271
+ <?php
272
+ foreach ( self::$LOG as $log ) {
273
+ echo 'console.' . $log['log_type'] . '(' . json_encode( self::format( $log, false ) ) . ')' . "\n";
274
+ }
275
+ ?>
276
+ </script>
277
+ <!-- END: Freemius PHP Console Log -->
278
+ <?php
279
+ }
280
+
281
+ static function get_log() {
282
+ return self::$LOG;
283
+ }
284
+
285
+ #--------------------------------------------------------------------------------
286
+ #region Database Logging
287
+ #--------------------------------------------------------------------------------
288
+
289
+ /**
290
+ * @author Vova Feldman (@svovaf)
291
+ * @since 1.2.1.6
292
+ *
293
+ * @return bool
294
+ */
295
+ public static function is_storage_logging_on() {
296
+ if ( ! isset( self::$_isStorageLoggingOn ) ) {
297
+ self::$_isStorageLoggingOn = ( 1 == get_option( 'fs_storage_logger', 0 ) );
298
+ }
299
+
300
+ return self::$_isStorageLoggingOn;
301
+ }
302
+
303
+ /**
304
+ * Turns on/off database persistent debugging to capture
305
+ * multi-session logs to debug complex flows like
306
+ * plugin auto-deactivate on premium version activation.
307
+ *
308
+ * @todo Check if Theme Check has issues with DB tables for themes.
309
+ *
310
+ * @author Vova Feldman (@svovaf)
311
+ * @since 1.2.1.6
312
+ *
313
+ * @param bool $is_on
314
+ *
315
+ * @return bool
316
+ */
317
+ public static function _set_storage_logging( $is_on = true ) {
318
+ global $wpdb;
319
+
320
+ $table = "{$wpdb->prefix}fs_logger";
321
+
322
+ if ( $is_on ) {
323
+ /**
324
+ * Create logging table.
325
+ *
326
+ * NOTE:
327
+ * dbDelta must use KEY and not INDEX for indexes.
328
+ *
329
+ * @link https://core.trac.wordpress.org/ticket/2695
330
+ */
331
+ $result = $wpdb->query( "CREATE TABLE {$table} (
332
+ `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
333
+ `process_id` INT UNSIGNED NOT NULL,
334
+ `user_name` VARCHAR(64) NOT NULL,
335
+ `logger` VARCHAR(128) NOT NULL,
336
+ `log_order` INT UNSIGNED NOT NULL,
337
+ `type` ENUM('log','info','warn','error') NOT NULL DEFAULT 'log',
338
+ `message` TEXT NOT NULL,
339
+ `file` VARCHAR(256) NOT NULL,
340
+ `line` INT UNSIGNED NOT NULL,
341
+ `function` VARCHAR(256) NOT NULL,
342
+ `request_type` ENUM('call','ajax','cron') NOT NULL DEFAULT 'call',
343
+ `request_url` VARCHAR(1024) NOT NULL,
344
+ `created` DECIMAL(16, 6) NOT NULL,
345
+ PRIMARY KEY (`id`),
346
+ KEY `process_id` (`process_id` ASC),
347
+ KEY `process_logger` (`process_id` ASC, `logger` ASC),
348
+ KEY `function` (`function` ASC),
349
+ KEY `type` (`type` ASC))" );
350
+ } else {
351
+ /**
352
+ * Drop logging table.
353
+ */
354
+ $result = $wpdb->query( "DROP TABLE IF EXISTS $table;" );
355
+ }
356
+
357
+ if ( false !== $result ) {
358
+ update_option( 'fs_storage_logger', ( $is_on ? 1 : 0 ) );
359
+ }
360
+
361
+ return ( false !== $result );
362
+ }
363
+
364
+ /**
365
+ * @author Vova Feldman (@svovaf)
366
+ * @since 1.2.1.6
367
+ *
368
+ * @param string $type
369
+ * @param string $message
370
+ * @param int $log_order
371
+ * @param array $caller
372
+ *
373
+ * @return false|int
374
+ */
375
+ private function db_log(
376
+ &$type,
377
+ &$message,
378
+ &$log_order,
379
+ &$caller
380
+ ) {
381
+ global $wpdb;
382
+
383
+ $request_type = 'call';
384
+ if ( defined( 'DOING_CRON' ) && DOING_CRON ) {
385
+ $request_type = 'cron';
386
+ } else if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
387
+ $request_type = 'ajax';
388
+ }
389
+
390
+ $request_url = WP_FS__IS_HTTP_REQUEST ?
391
+ $_SERVER['REQUEST_URI'] :
392
+ '';
393
+
394
+ return $wpdb->insert(
395
+ "{$wpdb->prefix}fs_logger",
396
+ array(
397
+ 'process_id' => self::$_processID,
398
+ 'user_name' => self::$_ownerName,
399
+ 'logger' => $this->_id,
400
+ 'log_order' => $log_order,
401
+ 'type' => $type,
402
+ 'request_type' => $request_type,
403
+ 'request_url' => $request_url,
404
+ 'message' => $message,
405
+ 'file' => isset( $caller['file'] ) ?
406
+ substr( $caller['file'], self::$_abspathLength ) :
407
+ '',
408
+ 'line' => $caller['line'],
409
+ 'function' => ( ! empty( $caller['class'] ) ? $caller['class'] . $caller['type'] : '' ) . $caller['function'],
410
+ 'created' => microtime( true ),
411
+ )
412
+ );
413
+ }
414
+
415
+ /**
416
+ * Persistent DB logger columns.
417
+ *
418
+ * @var array
419
+ */
420
+ private static $_log_columns = array(
421
+ 'id',
422
+ 'process_id',
423
+ 'user_name',
424
+ 'logger',
425
+ 'log_order',
426
+ 'type',
427
+ 'message',
428
+ 'file',
429
+ 'line',
430
+ 'function',
431
+ 'request_type',
432
+ 'request_url',
433
+ 'created',
434
+ );
435
+
436
+ /**
437
+ * Create DB logs query.
438
+ *
439
+ * @author Vova Feldman (@svovaf)
440
+ * @since 1.2.1.6
441
+ *
442
+ * @param bool $filters
443
+ * @param int $limit
444
+ * @param int $offset
445
+ * @param bool $order
446
+ * @param bool $escape_eol
447
+ *
448
+ * @return string
449
+ */
450
+ private static function build_db_logs_query(
451
+ $filters = false,
452
+ $limit = 200,
453
+ $offset = 0,
454
+ $order = false,
455
+ $escape_eol = false
456
+ ) {
457
+ global $wpdb;
458
+
459
+ $select = '*';
460
+
461
+ if ( $escape_eol ) {
462
+ $select = '';
463
+ for ( $i = 0, $len = count( self::$_log_columns ); $i < $len; $i ++ ) {
464
+ if ( $i > 0 ) {
465
+ $select .= ', ';
466
+ }
467
+
468
+ if ( 'message' !== self::$_log_columns[ $i ] ) {
469
+ $select .= self::$_log_columns[ $i ];
470
+ } else {
471
+ $select .= 'REPLACE(message , \'\n\', \' \') AS message';
472
+ }
473
+ }
474
+ }
475
+
476
+ $query = "SELECT {$select} FROM {$wpdb->prefix}fs_logger";
477
+ if ( is_array( $filters ) ) {
478
+ $criteria = array();
479
+
480
+ if ( ! empty( $filters['type'] ) && 'all' !== $filters['type'] ) {
481
+ $filters['type'] = strtolower( $filters['type'] );
482
+
483
+ switch ( $filters['type'] ) {
484
+ case 'warn_error':
485
+ $criteria[] = array( 'col' => 'type', 'val' => array( 'warn', 'error' ) );
486
+ break;
487
+ case 'error':
488
+ case 'warn':
489
+ $criteria[] = array( 'col' => 'type', 'val' => $filters['type'] );
490
+ break;
491
+ case 'info':
492
+ default:
493
+ $criteria[] = array( 'col' => 'type', 'val' => array( 'info', 'log' ) );
494
+ break;
495
+ }
496
+ }
497
+
498
+ if ( ! empty( $filters['request_type'] ) ) {
499
+ $filters['request_type'] = strtolower( $filters['request_type'] );
500
+
501
+ if ( in_array( $filters['request_type'], array( 'call', 'ajax', 'cron' ) ) ) {
502
+ $criteria[] = array( 'col' => 'request_type', 'val' => $filters['request_type'] );
503
+ }
504
+ }
505
+
506
+ if ( ! empty( $filters['file'] ) ) {
507
+ $criteria[] = array(
508
+ 'col' => 'file',
509
+ 'op' => 'LIKE',
510
+ 'val' => '%' . esc_sql( $filters['file'] ),
511
+ );
512
+ }
513
+
514
+ if ( ! empty( $filters['function'] ) ) {
515
+ $criteria[] = array(
516
+ 'col' => 'function',
517
+ 'op' => 'LIKE',
518
+ 'val' => '%' . esc_sql( $filters['function'] ),
519
+ );
520
+ }
521
+
522
+ if ( ! empty( $filters['process_id'] ) && is_numeric( $filters['process_id'] ) ) {
523
+ $criteria[] = array( 'col' => 'process_id', 'val' => $filters['process_id'] );
524
+ }
525
+
526
+ if ( ! empty( $filters['logger'] ) ) {
527
+ $criteria[] = array(
528
+ 'col' => 'logger',
529
+ 'op' => 'LIKE',
530
+ 'val' => '%' . esc_sql( $filters['logger'] ) . '%',
531
+ );
532
+ }
533
+
534
+ if ( ! empty( $filters['message'] ) ) {
535
+ $criteria[] = array(
536
+ 'col' => 'message',
537
+ 'op' => 'LIKE',
538
+ 'val' => '%' . esc_sql( $filters['message'] ) . '%',
539
+ );
540
+ }
541
+
542
+ if ( 0 < count( $criteria ) ) {
543
+ $query .= "\nWHERE\n";
544
+
545
+ $first = true;
546
+ foreach ( $criteria as $c ) {
547
+ if ( ! $first ) {
548
+ $query .= "AND\n";
549
+ }
550
+
551
+ if ( is_array( $c['val'] ) ) {
552
+ $operator = 'IN';
553
+
554
+ for ( $i = 0, $len = count( $c['val'] ); $i < $len; $i ++ ) {
555
+ $c['val'][ $i ] = "'" . esc_sql( $c['val'][ $i ] ) . "'";
556
+ }
557
+
558
+ $val = '(' . implode( ',', $c['val'] ) . ')';
559
+ } else {
560
+ $operator = ! empty( $c['op'] ) ? $c['op'] : '=';
561
+ $val = "'" . esc_sql( $c['val'] ) . "'";
562
+ }
563
+
564
+ $query .= "`{$c['col']}` {$operator} {$val}\n";
565
+
566
+ $first = false;
567
+ }
568
+ }
569
+ }
570
+
571
+ if ( ! is_array( $order ) ) {
572
+ $order = array(
573
+ 'col' => 'id',
574
+ 'order' => 'desc'
575
+ );
576
+ }
577
+
578
+ $query .= " ORDER BY {$order['col']} {$order['order']} LIMIT {$offset},{$limit}";
579
+
580
+ return $query;
581
+ }
582
+
583
+ /**
584
+ * Load logs from DB.
585
+ *
586
+ * @author Vova Feldman (@svovaf)
587
+ * @since 1.2.1.6
588
+ *
589
+ * @param bool $filters
590
+ * @param int $limit
591
+ * @param int $offset
592
+ * @param bool $order
593
+ *
594
+ * @return object[]|null
595
+ */
596
+ public static function load_db_logs(
597
+ $filters = false,
598
+ $limit = 200,
599
+ $offset = 0,
600
+ $order = false
601
+ ) {
602
+ global $wpdb;
603
+
604
+ $query = self::build_db_logs_query(
605
+ $filters,
606
+ $limit,
607
+ $offset,
608
+ $order
609
+ );
610
+
611
+ return $wpdb->get_results( $query );
612
+ }
613
+
614
+ /**
615
+ * Load logs from DB.
616
+ *
617
+ * @author Vova Feldman (@svovaf)
618
+ * @since 1.2.1.6
619
+ *
620
+ * @param bool $filters
621
+ * @param string $filename
622
+ * @param int $limit
623
+ * @param int $offset
624
+ * @param bool $order
625
+ *
626
+ * @return false|string File download URL or false on failure.
627
+ */
628
+ public static function download_db_logs(
629
+ $filters = false,
630
+ $filename = '',
631
+ $limit = 10000,
632
+ $offset = 0,
633
+ $order = false
634
+ ) {
635
+ global $wpdb;
636
+
637
+ $query = self::build_db_logs_query(
638
+ $filters,
639
+ $limit,
640
+ $offset,
641
+ $order,
642
+ true
643
+ );
644
+
645
+ $upload_dir = wp_upload_dir();
646
+ if ( empty( $filename ) ) {
647
+ $filename = 'fs-logs-' . date( 'Y-m-d_H-i-s', WP_FS__SCRIPT_START_TIME ) . '.csv';
648
+ }
649
+ $filepath = rtrim( $upload_dir['path'], '/' ) . "/{$filename}";
650
+
651
+ $query .= " INTO OUTFILE '{$filepath}' FIELDS TERMINATED BY '\t' ESCAPED BY '\\\\' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\\n'";
652
+
653
+ $columns = '';
654
+ for ( $i = 0, $len = count( self::$_log_columns ); $i < $len; $i ++ ) {
655
+ if ( $i > 0 ) {
656
+ $columns .= ', ';
657
+ }
658
+
659
+ $columns .= "'" . self::$_log_columns[ $i ] . "'";
660
+ }
661
+
662
+ $query = "SELECT {$columns} UNION ALL " . $query;
663
+
664
+ $result = $wpdb->query( $query );
665
+
666
+ if ( false === $result ) {
667
+ return false;
668
+ }
669
+
670
+ return rtrim( $upload_dir['url'], '/' ) . '/' . $filename;
671
+ }
672
+
673
+ /**
674
+ * @author Vova Feldman (@svovaf)
675
+ * @since 1.2.1.6
676
+ *
677
+ * @param string $filename
678
+ *
679
+ * @return string
680
+ */
681
+ public static function get_logs_download_url( $filename = '' ) {
682
+ $upload_dir = wp_upload_dir();
683
+ if ( empty( $filename ) ) {
684
+ $filename = 'fs-logs-' . date( 'Y-m-d_H-i-s', WP_FS__SCRIPT_START_TIME ) . '.csv';
685
+ }
686
+
687
+ return rtrim( $upload_dir['url'], '/' ) . $filename;
688
+ }
689
+
690
+ #endregion
691
  }
freemius/includes/class-fs-plugin-updater.php CHANGED
@@ -29,6 +29,11 @@
29
  * @since 1.1.8.1
30
  */
31
  private $_update_details;
 
 
 
 
 
32
 
33
  #--------------------------------------------------------------------------------
34
  #region Singleton
@@ -77,7 +82,7 @@
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
@@ -109,7 +114,7 @@
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
  }
@@ -324,6 +329,46 @@
324
  (array) $this->_update_details;
325
  }
326
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
327
  return $transient_data;
328
  }
329
 
@@ -508,6 +553,138 @@
508
  return $res;
509
  }
510
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
511
  /**
512
  * Updates information on the "View version x.x details" page with custom data.
513
  *
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
  #--------------------------------------------------------------------------------
39
  #region Singleton
82
 
83
  $this->add_transient_filters();
84
 
85
+ if ( ! $this->_fs->has_any_active_valid_license() ) {
86
  /**
87
  * If user has the premium plugin's code but do NOT have an active license,
88
  * encourage him to upgrade by showing that there's a new release, but instead
114
  add_filter( 'upgrader_post_install', array( &$this, '_maybe_update_folder_name' ), 10, 3 );
115
  }
116
 
117
+ if ( ! $this->_fs->has_any_active_valid_license() ) {
118
  add_filter( 'wp_prepare_themes_for_js', array( &$this, 'change_theme_update_info_html' ), 10, 1 );
119
  }
120
  }
329
  (array) $this->_update_details;
330
  }
331
 
332
+ $slug = $this->_fs->get_slug();
333
+
334
+ if ( $this->_fs->is_org_repo_compliant() && $this->_fs->is_freemium() ) {
335
+ if ( ! isset( $this->_translation_updates ) ) {
336
+ $this->_translation_updates = array();
337
+
338
+ if ( current_user_can( 'update_languages' ) ) {
339
+ $translation_updates = $this->fetch_wp_org_module_translation_updates( $module_type, $slug );
340
+ if ( ! empty( $translation_updates ) ) {
341
+ $this->_translation_updates = $translation_updates;
342
+ }
343
+ }
344
+ }
345
+
346
+ if ( ! empty( $this->_translation_updates ) ) {
347
+ $all_translation_updates = ( isset( $transient_data->translations ) && is_array( $transient_data->translations ) ) ?
348
+ $transient_data->translations :
349
+ array();
350
+
351
+ $current_plugin_translation_updates_map = array();
352
+ foreach ( $all_translation_updates as $key => $translation_update ) {
353
+ if ( $module_type === ( $translation_update['type'] . 's' ) && $slug === $translation_update['slug'] ) {
354
+ $current_plugin_translation_updates_map[ $translation_update['language'] ] = $translation_update;
355
+ unset( $all_translation_updates[ $key ] );
356
+ }
357
+ }
358
+
359
+ foreach ( $this->_translation_updates as $translation_update ) {
360
+ $lang = $translation_update['language'];
361
+ if ( ! isset( $current_plugin_translation_updates_map[ $lang ] ) ||
362
+ version_compare( $translation_update['version'], $current_plugin_translation_updates_map[ $lang ]['version'], '>' )
363
+ ) {
364
+ $current_plugin_translation_updates_map[ $lang ] = $translation_update;
365
+ }
366
+ }
367
+
368
+ $transient_data->translations = array_merge( $all_translation_updates, array_values( $current_plugin_translation_updates_map ) );
369
+ }
370
+ }
371
+
372
  return $transient_data;
373
  }
374
 
553
  return $res;
554
  }
555
 
556
+ /**
557
+ * Fetches module translation updates from wordpress.org.
558
+ *
559
+ * @author Leo Fajardo (@leorw)
560
+ * @since 2.1.2
561
+ *
562
+ * @param string $module_type
563
+ * @param string $slug
564
+ *
565
+ * @return array|null
566
+ */
567
+ private function fetch_wp_org_module_translation_updates( $module_type, $slug ) {
568
+ $plugin_data = $this->_fs->get_plugin_data();
569
+
570
+ $locales = array_values( get_available_languages() );
571
+ $locales = apply_filters( "{$module_type}_update_check_locales", $locales );
572
+ $locales = array_unique( $locales );
573
+
574
+ $plugin_basename = $this->_fs->get_plugin_basename();
575
+ if ( 'themes' === $module_type ) {
576
+ $plugin_basename = str_replace( '-premium', '', $plugin_basename );
577
+ }
578
+
579
+ global $wp_version;
580
+
581
+ $request_args = array(
582
+ 'timeout' => 15,
583
+ 'body' => array(
584
+ "{$module_type}" => json_encode(
585
+ array(
586
+ "{$module_type}" => array(
587
+ $plugin_basename => array(
588
+ 'Name' => trim( str_replace( '(Premium)', '', $plugin_data['Name'] ) ),
589
+ 'Author' => $plugin_data['Author'],
590
+ )
591
+ )
592
+ )
593
+ ),
594
+ 'translations' => json_encode( $this->get_installed_translations( $module_type, $slug ) ),
595
+ 'locale' => json_encode( $locales )
596
+ ),
597
+ 'user-agent' => ( 'WordPress/' . $wp_version . '; ' . home_url( '/' ) )
598
+ );
599
+
600
+ $url = "http://api.wordpress.org/{$module_type}/update-check/1.1/";
601
+ if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) {
602
+ $url = set_url_scheme( $url, 'https' );
603
+ }
604
+
605
+ $raw_response = Freemius::safe_remote_post(
606
+ $url,
607
+ $request_args,
608
+ WP_FS__TIME_24_HOURS_IN_SEC,
609
+ WP_FS__TIME_12_HOURS_IN_SEC,
610
+ false
611
+ );
612
+
613
+ if ( is_wp_error( $raw_response ) ) {
614
+ return null;
615
+ }
616
+
617
+ $response = json_decode( wp_remote_retrieve_body( $raw_response ), true );
618
+
619
+ if ( ! is_array( $response ) ) {
620
+ return null;
621
+ }
622
+
623
+ if ( ! isset( $response['translations'] ) || empty( $response['translations'] ) ) {
624
+ return null;
625
+ }
626
+
627
+ return $response['translations'];
628
+ }
629
+
630
+ /**
631
+ * @author Leo Fajardo (@leorw)
632
+ * @since 2.1.2
633
+ *
634
+ * @param string $module_type
635
+ * @param string $slug
636
+ *
637
+ * @return array
638
+ */
639
+ private function get_installed_translations( $module_type, $slug ) {
640
+ if ( function_exists( 'wp_get_installed_translations' ) ) {
641
+ return wp_get_installed_translations( $module_type );
642
+ }
643
+
644
+ $dir = "/{$module_type}";
645
+
646
+ if ( ! is_dir( WP_LANG_DIR . $dir ) )
647
+ return array();
648
+
649
+ $files = scandir( WP_LANG_DIR . $dir );
650
+ if ( ! $files )
651
+ return array();
652
+
653
+ $language_data = array();
654
+
655
+ foreach ( $files as $file ) {
656
+ if ( 0 !== strpos( $file, $slug ) ) {
657
+ continue;
658
+ }
659
+
660
+ if ( '.' === $file[0] || is_dir( WP_LANG_DIR . "{$dir}/{$file}" ) ) {
661
+ continue;
662
+ }
663
+
664
+ if ( substr( $file, -3 ) !== '.po' ) {
665
+ continue;
666
+ }
667
+
668
+ if ( ! preg_match( '/(?:(.+)-)?([a-z]{2,3}(?:_[A-Z]{2})?(?:_[a-z0-9]+)?).po/', $file, $match ) ) {
669
+ continue;
670
+ }
671
+
672
+ if ( ! in_array( substr( $file, 0, -3 ) . '.mo', $files ) ) {
673
+ continue;
674
+ }
675
+
676
+ list( , $textdomain, $language ) = $match;
677
+
678
+ if ( '' === $textdomain ) {
679
+ $textdomain = 'default';
680
+ }
681
+
682
+ $language_data[ $textdomain ][ $language ] = wp_get_pomo_file_data( WP_LANG_DIR . "{$dir}/{$file}" );
683
+ }
684
+
685
+ return $language_data;
686
+ }
687
+
688
  /**
689
  * Updates information on the "View version x.x details" page with custom data.
690
  *
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
@@ -1,157 +1,157 @@
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.2.2.7
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- /**
14
- * Class FS_Customizer_Upsell_Control
15
- */
16
- class FS_Customizer_Upsell_Control extends WP_Customize_Control {
17
-
18
- /**
19
- * Control type
20
- *
21
- * @var string control type
22
- */
23
- public $type = 'freemius-upsell-control';
24
-
25
- /**
26
- * @var Freemius
27
- */
28
- public $fs = null;
29
-
30
- /**
31
- * @param WP_Customize_Manager $manager the customize manager class.
32
- * @param string $id id.
33
- * @param array $args customizer manager parameters.
34
- */
35
- public function __construct( WP_Customize_Manager $manager, $id, array $args ) {
36
- $manager->register_control_type( 'FS_Customizer_Upsell_Control' );
37
-
38
- parent::__construct( $manager, $id, $args );
39
- }
40
-
41
- /**
42
- * Enqueue resources for the control.
43
- */
44
- public function enqueue() {
45
- fs_enqueue_local_style( 'fs_customizer', 'customizer.css' );
46
- }
47
-
48
- /**
49
- * Json conversion
50
- */
51
- public function to_json() {
52
- $pricing_cta = esc_html( $this->fs->get_pricing_cta_label() ) . '&nbsp;&nbsp;' . ( is_rtl() ? '&#x2190;' : '&#x27a4;' );
53
-
54
- parent::to_json();
55
-
56
- $this->json['button_text'] = $pricing_cta;
57
- $this->json['button_url'] = $this->fs->is_in_trial_promotion() ?
58
- $this->fs->get_trial_url() :
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.
66
- if ( is_array( $pricing->plans ) && 0 < count( $pricing->plans ) ) {
67
- $support_features = array(
68
- 'kb' => 'Help Center',
69
- 'forum' => 'Support Forum',
70
- 'email' => 'Priority Email Support',
71
- 'phone' => 'Phone Support',
72
- 'skype' => 'Skype Support',
73
- 'is_success_manager' => 'Personal Success Manager',
74
- );
75
-
76
- for ( $i = 0, $len = count( $pricing->plans ); $i < $len; $i ++ ) {
77
- if ( 'free' == $pricing->plans[$i]->name ) {
78
- continue;
79
- }
80
-
81
- if ( ! isset( $pricing->plans[ $i ]->features ) ||
82
- ! is_array( $pricing->plans[ $i ]->features ) ) {
83
- $pricing->plans[$i]->features = array();
84
- }
85
-
86
- foreach ( $support_features as $key => $label ) {
87
- $key = ( 'is_success_manager' !== $key ) ?
88
- "support_{$key}" :
89
- $key;
90
-
91
- if ( ! empty( $pricing->plans[ $i ]->{$key} ) ) {
92
-
93
- $support_feature = new stdClass();
94
- $support_feature->title = $label;
95
-
96
- $pricing->plans[ $i ]->features[] = $support_feature;
97
- }
98
- }
99
- }
100
- }
101
- }
102
-
103
- $this->json['plans'] = $pricing->plans;
104
-
105
- $this->json['strings'] = array(
106
- 'plan' => $this->fs->get_text_x_inline( 'Plan', 'as product pricing plan', 'plan' ),
107
- );
108
- }
109
-
110
- /**
111
- * Control content
112
- */
113
- public function content_template() {
114
- ?>
115
- <div id="fs_customizer_upsell">
116
- <# if ( data.plans ) { #>
117
- <ul class="fs-customizer-plans">
118
- <# for (i in data.plans) { #>
119
- <# if ( 'free' != data.plans[i].name && (null != data.plans[i].features && 0 < data.plans[i].features.length) ) { #>
120
- <li class="fs-customizer-plan">
121
- <div class="fs-accordion-section-open">
122
- <h2 class="fs-accordion-section-title menu-item">
123
- <span>{{ data.plans[i].title }}</span>
124
- <button type="button" class="button-link item-edit" aria-expanded="true">
125
- <span class="screen-reader-text">Toggle section: {{ data.plans[i].title }} {{ data.strings.plan }}</span>
126
- <span class="toggle-indicator" aria-hidden="true"></span>
127
- </button>
128
- </h2>
129
- <div class="fs-accordion-section-content">
130
- <# if ( data.plans[i].description ) { #>
131
- <h3>{{ data.plans[i].description }}</h3>
132
- <# } #>
133
- <# if ( data.plans[i].features ) { #>
134
- <ul>
135
- <# for ( j in data.plans[i].features ) { #>
136
- <li><div class="fs-feature">
137
- <span class="dashicons dashicons-yes"></span><span><# if ( data.plans[i].features[j].value ) { #>{{ data.plans[i].features[j].value }} <# } #>{{ data.plans[i].features[j].title }}</span>
138
- <# if ( data.plans[i].features[j].description ) { #>
139
- <span class="dashicons dashicons-editor-help"><span class="fs-feature-desc">{{ data.plans[i].features[j].description }}</span></span>
140
- <# } #>
141
- </div></li>
142
- <# } #>
143
- </ul>
144
- <# } #>
145
- <# if ( 'free' != data.plans[i].name ) { #>
146
- <a href="{{ data.button_url }}" class="button button-primary" target="_blank">{{{ data.button_text }}}</a>
147
- <# } #>
148
- </div>
149
- </div>
150
- </li>
151
- <# } #>
152
- <# } #>
153
- </ul>
154
- <# } #>
155
- </div>
156
- <?php }
157
  }
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.2.2.7
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ /**
14
+ * Class FS_Customizer_Upsell_Control
15
+ */
16
+ class FS_Customizer_Upsell_Control extends WP_Customize_Control {
17
+
18
+ /**
19
+ * Control type
20
+ *
21
+ * @var string control type
22
+ */
23
+ public $type = 'freemius-upsell-control';
24
+
25
+ /**
26
+ * @var Freemius
27
+ */
28
+ public $fs = null;
29
+
30
+ /**
31
+ * @param WP_Customize_Manager $manager the customize manager class.
32
+ * @param string $id id.
33
+ * @param array $args customizer manager parameters.
34
+ */
35
+ public function __construct( WP_Customize_Manager $manager, $id, array $args ) {
36
+ $manager->register_control_type( 'FS_Customizer_Upsell_Control' );
37
+
38
+ parent::__construct( $manager, $id, $args );
39
+ }
40
+
41
+ /**
42
+ * Enqueue resources for the control.
43
+ */
44
+ public function enqueue() {
45
+ fs_enqueue_local_style( 'fs_customizer', 'customizer.css' );
46
+ }
47
+
48
+ /**
49
+ * Json conversion
50
+ */
51
+ public function to_json() {
52
+ $pricing_cta = esc_html( $this->fs->get_pricing_cta_label() ) . '&nbsp;&nbsp;' . ( is_rtl() ? '&#x2190;' : '&#x27a4;' );
53
+
54
+ parent::to_json();
55
+
56
+ $this->json['button_text'] = $pricing_cta;
57
+ $this->json['button_url'] = $this->fs->is_in_trial_promotion() ?
58
+ $this->fs->get_trial_url() :
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.
66
+ if ( is_array( $pricing->plans ) && 0 < count( $pricing->plans ) ) {
67
+ $support_features = array(
68
+ 'kb' => 'Help Center',
69
+ 'forum' => 'Support Forum',
70
+ 'email' => 'Priority Email Support',
71
+ 'phone' => 'Phone Support',
72
+ 'skype' => 'Skype Support',
73
+ 'is_success_manager' => 'Personal Success Manager',
74
+ );
75
+
76
+ for ( $i = 0, $len = count( $pricing->plans ); $i < $len; $i ++ ) {
77
+ if ( 'free' == $pricing->plans[$i]->name ) {
78
+ continue;
79
+ }
80
+
81
+ if ( ! isset( $pricing->plans[ $i ]->features ) ||
82
+ ! is_array( $pricing->plans[ $i ]->features ) ) {
83
+ $pricing->plans[$i]->features = array();
84
+ }
85
+
86
+ foreach ( $support_features as $key => $label ) {
87
+ $key = ( 'is_success_manager' !== $key ) ?
88
+ "support_{$key}" :
89
+ $key;
90
+
91
+ if ( ! empty( $pricing->plans[ $i ]->{$key} ) ) {
92
+
93
+ $support_feature = new stdClass();
94
+ $support_feature->title = $label;
95
+
96
+ $pricing->plans[ $i ]->features[] = $support_feature;
97
+ }
98
+ }
99
+ }
100
+ }
101
+ }
102
+
103
+ $this->json['plans'] = $pricing->plans;
104
+
105
+ $this->json['strings'] = array(
106
+ 'plan' => $this->fs->get_text_x_inline( 'Plan', 'as product pricing plan', 'plan' ),
107
+ );
108
+ }
109
+
110
+ /**
111
+ * Control content
112
+ */
113
+ public function content_template() {
114
+ ?>
115
+ <div id="fs_customizer_upsell">
116
+ <# if ( data.plans ) { #>
117
+ <ul class="fs-customizer-plans">
118
+ <# for (i in data.plans) { #>
119
+ <# if ( 'free' != data.plans[i].name && (null != data.plans[i].features && 0 < data.plans[i].features.length) ) { #>
120
+ <li class="fs-customizer-plan">
121
+ <div class="fs-accordion-section-open">
122
+ <h2 class="fs-accordion-section-title menu-item">
123
+ <span>{{ data.plans[i].title }}</span>
124
+ <button type="button" class="button-link item-edit" aria-expanded="true">
125
+ <span class="screen-reader-text">Toggle section: {{ data.plans[i].title }} {{ data.strings.plan }}</span>
126
+ <span class="toggle-indicator" aria-hidden="true"></span>
127
+ </button>
128
+ </h2>
129
+ <div class="fs-accordion-section-content">
130
+ <# if ( data.plans[i].description ) { #>
131
+ <h3>{{ data.plans[i].description }}</h3>
132
+ <# } #>
133
+ <# if ( data.plans[i].features ) { #>
134
+ <ul>
135
+ <# for ( j in data.plans[i].features ) { #>
136
+ <li><div class="fs-feature">
137
+ <span class="dashicons dashicons-yes"></span><span><# if ( data.plans[i].features[j].value ) { #>{{ data.plans[i].features[j].value }} <# } #>{{ data.plans[i].features[j].title }}</span>
138
+ <# if ( data.plans[i].features[j].description ) { #>
139
+ <span class="dashicons dashicons-editor-help"><span class="fs-feature-desc">{{ data.plans[i].features[j].description }}</span></span>
140
+ <# } #>
141
+ </div></li>
142
+ <# } #>
143
+ </ul>
144
+ <# } #>
145
+ <# if ( 'free' != data.plans[i].name ) { #>
146
+ <a href="{{ data.button_url }}" class="button button-primary" target="_blank">{{{ data.button_text }}}</a>
147
+ <# } #>
148
+ </div>
149
+ </div>
150
+ </li>
151
+ <# } #>
152
+ <# } #>
153
+ </ul>
154
+ <# } #>
155
+ </div>
156
+ <?php }
157
  }
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-license.php CHANGED
@@ -1,269 +1,269 @@
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.5
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- /**
14
- * Class FS_Plugin_License
15
- */
16
- class FS_Plugin_License extends FS_Entity {
17
-
18
- #region Properties
19
-
20
- /**
21
- * @var number
22
- */
23
- public $plugin_id;
24
- /**
25
- * @var number
26
- */
27
- public $user_id;
28
- /**
29
- * @var number
30
- */
31
- public $plan_id;
32
- /**
33
- * @var number
34
- */
35
- public $pricing_id;
36
- /**
37
- * @var int|null
38
- */
39
- public $quota;
40
- /**
41
- * @var int
42
- */
43
- public $activated;
44
- /**
45
- * @var int
46
- */
47
- public $activated_local;
48
- /**
49
- * @var string
50
- */
51
- public $expiration;
52
- /**
53
- * @var string
54
- */
55
- public $secret_key;
56
- /**
57
- * @var bool $is_free_localhost Defaults to true. If true, allow unlimited localhost installs with the same
58
- * license.
59
- */
60
- public $is_free_localhost;
61
- /**
62
- * @var bool $is_block_features Defaults to true. If false, don't block features after license expiry - only
63
- * block updates and support.
64
- */
65
- public $is_block_features;
66
- /**
67
- * @var bool
68
- */
69
- public $is_cancelled;
70
-
71
- #endregion Properties
72
-
73
- /**
74
- * @param stdClass|bool $license
75
- */
76
- function __construct( $license = false ) {
77
- parent::__construct( $license );
78
- }
79
-
80
- /**
81
- * Get entity type.
82
- *
83
- * @return string
84
- */
85
- static function get_type() {
86
- return 'license';
87
- }
88
-
89
- /**
90
- * Check how many site activations left.
91
- *
92
- * @author Vova Feldman (@svovaf)
93
- * @since 1.0.5
94
- *
95
- * @return int
96
- */
97
- function left() {
98
- if ( ! $this->is_active() || $this->is_expired() ) {
99
- return 0;
100
- }
101
-
102
- if ( $this->is_unlimited() ) {
103
- return 999;
104
- }
105
-
106
- return ( $this->quota - $this->activated - ( $this->is_free_localhost ? 0 : $this->activated_local ) );
107
- }
108
-
109
- /**
110
- * Check if single site license.
111
- *
112
- * @author Vova Feldman (@svovaf)
113
- * @since 1.1.8.1
114
- *
115
- * @return bool
116
- */
117
- function is_single_site() {
118
- return ( is_numeric( $this->quota ) && 1 == $this->quota );
119
- }
120
-
121
- /**
122
- * @author Vova Feldman (@svovaf)
123
- * @since 1.0.5
124
- *
125
- * @return bool
126
- */
127
- function is_expired() {
128
- return ! $this->is_lifetime() && ( strtotime( $this->expiration ) < WP_FS__SCRIPT_START_TIME );
129
- }
130
-
131
- /**
132
- * Check if license is not expired.
133
- *
134
- * @author Vova Feldman (@svovaf)
135
- * @since 1.2.1
136
- *
137
- * @return bool
138
- */
139
- function is_valid() {
140
- return ! $this->is_expired();
141
- }
142
-
143
- /**
144
- * @author Vova Feldman (@svovaf)
145
- * @since 1.0.6
146
- *
147
- * @return bool
148
- */
149
- function is_lifetime() {
150
- return is_null( $this->expiration );
151
- }
152
-
153
- /**
154
- * @author Vova Feldman (@svovaf)
155
- * @since 1.2.0
156
- *
157
- * @return bool
158
- */
159
- function is_unlimited() {
160
- return is_null( $this->quota );
161
- }
162
-
163
- /**
164
- * Check if license is fully utilized.
165
- *
166
- * @author Vova Feldman (@svovaf)
167
- * @since 1.0.6
168
- *
169
- * @param bool|null $is_localhost
170
- *
171
- * @return bool
172
- */
173
- function is_utilized( $is_localhost = null ) {
174
- if ( is_null( $is_localhost ) ) {
175
- $is_localhost = WP_FS__IS_LOCALHOST_FOR_SERVER;
176
- }
177
-
178
- if ( $this->is_unlimited() ) {
179
- return false;
180
- }
181
-
182
- return ! ( $this->is_free_localhost && $is_localhost ) &&
183
- ( $this->quota <= $this->activated + ( $this->is_free_localhost ? 0 : $this->activated_local ) );
184
- }
185
-
186
- /**
187
- * Check if license can be activated.
188
- *
189
- * @author Vova Feldman (@svovaf)
190
- * @since 2.0.0
191
- *
192
- * @param bool|null $is_localhost
193
- *
194
- * @return bool
195
- */
196
- function can_activate( $is_localhost = null ) {
197
- return ! $this->is_utilized( $is_localhost ) && $this->is_features_enabled();
198
- }
199
-
200
- /**
201
- * Check if license can be activated on a given number of production and localhost sites.
202
- *
203
- * @author Vova Feldman (@svovaf)
204
- * @since 2.0.0
205
- *
206
- * @param int $production_count
207
- * @param int $localhost_count
208
- *
209
- * @return bool
210
- */
211
- function can_activate_bulk( $production_count, $localhost_count ) {
212
- if ( $this->is_unlimited() ) {
213
- return true;
214
- }
215
-
216
- /**
217
- * For simplicity, the logic will work as following: when given X sites to activate the license on, if it's
218
- * possible to activate on ALL of them, do the activation. If it's not possible to activate on ALL of them,
219
- * do NOT activate on any of them.
220
- */
221
- return ( $this->quota >= $this->activated + $production_count + ( $this->is_free_localhost ? 0 : $this->activated_local + $localhost_count ) );
222
- }
223
-
224
- /**
225
- * @author Vova Feldman (@svovaf)
226
- * @since 1.2.1
227
- *
228
- * @return bool
229
- */
230
- function is_active() {
231
- return ( ! $this->is_cancelled );
232
- }
233
-
234
- /**
235
- * Check if license's plan features are enabled.
236
- *
237
- * - Either if plan not expired
238
- * - If expired, based on the configuration to block features or not.
239
- *
240
- * @author Vova Feldman (@svovaf)
241
- * @since 1.0.6
242
- *
243
- * @return bool
244
- */
245
- function is_features_enabled() {
246
- return $this->is_active() && ( ! $this->is_block_features || ! $this->is_expired() );
247
- }
248
-
249
- /**
250
- * Subscription considered to be new without any payments
251
- * if the license expires in less than 24 hours
252
- * from the license creation.
253
- *
254
- * @author Vova Feldman (@svovaf)
255
- * @since 1.0.9
256
- *
257
- * @return bool
258
- */
259
- function is_first_payment_pending() {
260
- return ( WP_FS__TIME_24_HOURS_IN_SEC >= strtotime( $this->expiration ) - strtotime( $this->created ) );
261
- }
262
-
263
- /**
264
- * @return int
265
- */
266
- function total_activations() {
267
- return ( $this->activated + $this->activated_local );
268
- }
269
- }
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.5
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ /**
14
+ * Class FS_Plugin_License
15
+ */
16
+ class FS_Plugin_License extends FS_Entity {
17
+
18
+ #region Properties
19
+
20
+ /**
21
+ * @var number
22
+ */
23
+ public $plugin_id;
24
+ /**
25
+ * @var number
26
+ */
27
+ public $user_id;
28
+ /**
29
+ * @var number
30
+ */
31
+ public $plan_id;
32
+ /**
33
+ * @var number
34
+ */
35
+ public $pricing_id;
36
+ /**
37
+ * @var int|null
38
+ */
39
+ public $quota;
40
+ /**
41
+ * @var int
42
+ */
43
+ public $activated;
44
+ /**
45
+ * @var int
46
+ */
47
+ public $activated_local;
48
+ /**
49
+ * @var string
50
+ */
51
+ public $expiration;
52
+ /**
53
+ * @var string
54
+ */
55
+ public $secret_key;
56
+ /**
57
+ * @var bool $is_free_localhost Defaults to true. If true, allow unlimited localhost installs with the same
58
+ * license.
59
+ */
60
+ public $is_free_localhost;
61
+ /**
62
+ * @var bool $is_block_features Defaults to true. If false, don't block features after license expiry - only
63
+ * block updates and support.
64
+ */
65
+ public $is_block_features;
66
+ /**
67
+ * @var bool
68
+ */
69
+ public $is_cancelled;
70
+
71
+ #endregion Properties
72
+
73
+ /**
74
+ * @param stdClass|bool $license
75
+ */
76
+ function __construct( $license = false ) {
77
+ parent::__construct( $license );
78
+ }
79
+
80
+ /**
81
+ * Get entity type.
82
+ *
83
+ * @return string
84
+ */
85
+ static function get_type() {
86
+ return 'license';
87
+ }
88
+
89
+ /**
90
+ * Check how many site activations left.
91
+ *
92
+ * @author Vova Feldman (@svovaf)
93
+ * @since 1.0.5
94
+ *
95
+ * @return int
96
+ */
97
+ function left() {
98
+ if ( ! $this->is_active() || $this->is_expired() ) {
99
+ return 0;
100
+ }
101
+
102
+ if ( $this->is_unlimited() ) {
103
+ return 999;
104
+ }
105
+
106
+ return ( $this->quota - $this->activated - ( $this->is_free_localhost ? 0 : $this->activated_local ) );
107
+ }
108
+
109
+ /**
110
+ * Check if single site license.
111
+ *
112
+ * @author Vova Feldman (@svovaf)
113
+ * @since 1.1.8.1
114
+ *
115
+ * @return bool
116
+ */
117
+ function is_single_site() {
118
+ return ( is_numeric( $this->quota ) && 1 == $this->quota );
119
+ }
120
+
121
+ /**
122
+ * @author Vova Feldman (@svovaf)
123
+ * @since 1.0.5
124
+ *
125
+ * @return bool
126
+ */
127
+ function is_expired() {
128
+ return ! $this->is_lifetime() && ( strtotime( $this->expiration ) < WP_FS__SCRIPT_START_TIME );
129
+ }
130
+
131
+ /**
132
+ * Check if license is not expired.
133
+ *
134
+ * @author Vova Feldman (@svovaf)
135
+ * @since 1.2.1
136
+ *
137
+ * @return bool
138
+ */
139
+ function is_valid() {
140
+ return ! $this->is_expired();
141
+ }
142
+
143
+ /**
144
+ * @author Vova Feldman (@svovaf)
145
+ * @since 1.0.6
146
+ *
147
+ * @return bool
148
+ */
149
+ function is_lifetime() {
150
+ return is_null( $this->expiration );
151
+ }
152
+
153
+ /**
154
+ * @author Vova Feldman (@svovaf)
155
+ * @since 1.2.0
156
+ *
157
+ * @return bool
158
+ */
159
+ function is_unlimited() {
160
+ return is_null( $this->quota );
161
+ }
162
+
163
+ /**
164
+ * Check if license is fully utilized.
165
+ *
166
+ * @author Vova Feldman (@svovaf)
167
+ * @since 1.0.6
168
+ *
169
+ * @param bool|null $is_localhost
170
+ *
171
+ * @return bool
172
+ */
173
+ function is_utilized( $is_localhost = null ) {
174
+ if ( is_null( $is_localhost ) ) {
175
+ $is_localhost = WP_FS__IS_LOCALHOST_FOR_SERVER;
176
+ }
177
+
178
+ if ( $this->is_unlimited() ) {
179
+ return false;
180
+ }
181
+
182
+ return ! ( $this->is_free_localhost && $is_localhost ) &&
183
+ ( $this->quota <= $this->activated + ( $this->is_free_localhost ? 0 : $this->activated_local ) );
184
+ }
185
+
186
+ /**
187
+ * Check if license can be activated.
188
+ *
189
+ * @author Vova Feldman (@svovaf)
190
+ * @since 2.0.0
191
+ *
192
+ * @param bool|null $is_localhost
193
+ *
194
+ * @return bool
195
+ */
196
+ function can_activate( $is_localhost = null ) {
197
+ return ! $this->is_utilized( $is_localhost ) && $this->is_features_enabled();
198
+ }
199
+
200
+ /**
201
+ * Check if license can be activated on a given number of production and localhost sites.
202
+ *
203
+ * @author Vova Feldman (@svovaf)
204
+ * @since 2.0.0
205
+ *
206
+ * @param int $production_count
207
+ * @param int $localhost_count
208
+ *
209
+ * @return bool
210
+ */
211
+ function can_activate_bulk( $production_count, $localhost_count ) {
212
+ if ( $this->is_unlimited() ) {
213
+ return true;
214
+ }
215
+
216
+ /**
217
+ * For simplicity, the logic will work as following: when given X sites to activate the license on, if it's
218
+ * possible to activate on ALL of them, do the activation. If it's not possible to activate on ALL of them,
219
+ * do NOT activate on any of them.
220
+ */
221
+ return ( $this->quota >= $this->activated + $production_count + ( $this->is_free_localhost ? 0 : $this->activated_local + $localhost_count ) );
222
+ }
223
+
224
+ /**
225
+ * @author Vova Feldman (@svovaf)
226
+ * @since 1.2.1
227
+ *
228
+ * @return bool
229
+ */
230
+ function is_active() {
231
+ return ( ! $this->is_cancelled );
232
+ }
233
+
234
+ /**
235
+ * Check if license's plan features are enabled.
236
+ *
237
+ * - Either if plan not expired
238
+ * - If expired, based on the configuration to block features or not.
239
+ *
240
+ * @author Vova Feldman (@svovaf)
241
+ * @since 1.0.6
242
+ *
243
+ * @return bool
244
+ */
245
+ function is_features_enabled() {
246
+ return $this->is_active() && ( ! $this->is_block_features || ! $this->is_expired() );
247
+ }
248
+
249
+ /**
250
+ * Subscription considered to be new without any payments
251
+ * if the license expires in less than 24 hours
252
+ * from the license creation.
253
+ *
254
+ * @author Vova Feldman (@svovaf)
255
+ * @since 1.0.9
256
+ *
257
+ * @return bool
258
+ */
259
+ function is_first_payment_pending() {
260
+ return ( WP_FS__TIME_24_HOURS_IN_SEC >= strtotime( $this->expiration ) - strtotime( $this->created ) );
261
+ }
262
+
263
+ /**
264
+ * @return int
265
+ */
266
+ function total_activations() {
267
+ return ( $this->activated + $this->activated_local );
268
+ }
269
+ }
freemius/includes/entities/class-fs-plugin-tag.php CHANGED
@@ -1,50 +1,50 @@
1
- <?php
2
- /**
3
- * @package Freemius
4
- * @copyright Copyright (c) 2018, 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
- class FS_Plugin_Tag extends FS_Entity {
14
- /**
15
- * @var string
16
- */
17
- public $version;
18
- /**
19
- * @var string
20
- */
21
- public $url;
22
- /**
23
- * @var string
24
- */
25
- public $requires_platform_version;
26
- /**
27
- * @var string
28
- */
29
- public $tested_up_to_version;
30
- /**
31
- * @var bool
32
- */
33
- public $has_free;
34
- /**
35
- * @var bool
36
- */
37
- public $has_premium;
38
- /**
39
- * @var bool
40
- */
41
- public $is_released;
42
-
43
- function __construct( $tag = false ) {
44
- parent::__construct( $tag );
45
- }
46
-
47
- static function get_type() {
48
- return 'tag';
49
- }
50
  }
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2018, 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
+ class FS_Plugin_Tag extends FS_Entity {
14
+ /**
15
+ * @var string
16
+ */
17
+ public $version;
18
+ /**
19
+ * @var string
20
+ */
21
+ public $url;
22
+ /**
23
+ * @var string
24
+ */
25
+ public $requires_platform_version;
26
+ /**
27
+ * @var string
28
+ */
29
+ public $tested_up_to_version;
30
+ /**
31
+ * @var bool
32
+ */
33
+ public $has_free;
34
+ /**
35
+ * @var bool
36
+ */
37
+ public $has_premium;
38
+ /**
39
+ * @var bool
40
+ */
41
+ public $is_released;
42
+
43
+ function __construct( $tag = false ) {
44
+ parent::__construct( $tag );
45
+ }
46
+
47
+ static function get_type() {
48
+ return 'tag';
49
+ }
50
  }
freemius/includes/entities/class-fs-plugin.php CHANGED
@@ -1,120 +1,120 @@
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_Plugin extends FS_Scope_Entity {
14
- /**
15
- * @since 1.0.6
16
- * @var null|number
17
- */
18
- public $parent_plugin_id;
19
- /**
20
- * @var string
21
- */
22
- public $title;
23
- /**
24
- * @var string
25
- */
26
- public $slug;
27
- /**
28
- * @since 1.2.2
29
- *
30
- * @var string 'plugin' or 'theme'
31
- */
32
- public $type;
33
- /**
34
- * @author Leo Fajardo (@leorw)
35
- *
36
- * @since 1.2.3
37
- *
38
- * @var string|false false if the module doesn't have an affiliate program or one of the following: 'selected', 'customers', or 'all'.
39
- */
40
- public $affiliate_moderation;
41
- /**
42
- * @var bool Set to true if the free version of the module is hosted on WordPress.org. Defaults to true.
43
- */
44
- public $is_wp_org_compliant = true;
45
-
46
- #region Install Specific Properties
47
-
48
- /**
49
- * @var string
50
- */
51
- public $file;
52
- /**
53
- * @var string
54
- */
55
- public $version;
56
- /**
57
- * @var bool
58
- */
59
- public $auto_update;
60
- /**
61
- * @var FS_Plugin_Info
62
- */
63
- public $info;
64
- /**
65
- * @since 1.0.9
66
- *
67
- * @var bool
68
- */
69
- public $is_premium;
70
- /**
71
- * @since 1.0.9
72
- *
73
- * @var bool
74
- */
75
- public $is_live;
76
-
77
- const AFFILIATE_MODERATION_CUSTOMERS = 'customers';
78
-
79
- #endregion Install Specific Properties
80
-
81
- /**
82
- * @param stdClass|bool $plugin
83
- */
84
- function __construct( $plugin = false ) {
85
- parent::__construct( $plugin );
86
-
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
- }
93
- }
94
-
95
- /**
96
- * Check if plugin is an add-on (has parent).
97
- *
98
- * @author Vova Feldman (@svovaf)
99
- * @since 1.0.6
100
- *
101
- * @return bool
102
- */
103
- function is_addon() {
104
- return isset( $this->parent_plugin_id ) && is_numeric( $this->parent_plugin_id );
105
- }
106
-
107
- /**
108
- * @author Leo Fajardo (@leorw)
109
- * @since 1.2.3
110
- *
111
- * @return bool
112
- */
113
- function has_affiliate_program() {
114
- return ( ! empty( $this->affiliate_moderation ) );
115
- }
116
-
117
- static function get_type() {
118
- return 'plugin';
119
- }
120
  }
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_Plugin extends FS_Scope_Entity {
14
+ /**
15
+ * @since 1.0.6
16
+ * @var null|number
17
+ */
18
+ public $parent_plugin_id;
19
+ /**
20
+ * @var string
21
+ */
22
+ public $title;
23
+ /**
24
+ * @var string
25
+ */
26
+ public $slug;
27
+ /**
28
+ * @since 1.2.2
29
+ *
30
+ * @var string 'plugin' or 'theme'
31
+ */
32
+ public $type;
33
+ /**
34
+ * @author Leo Fajardo (@leorw)
35
+ *
36
+ * @since 1.2.3
37
+ *
38
+ * @var string|false false if the module doesn't have an affiliate program or one of the following: 'selected', 'customers', or 'all'.
39
+ */
40
+ public $affiliate_moderation;
41
+ /**
42
+ * @var bool Set to true if the free version of the module is hosted on WordPress.org. Defaults to true.
43
+ */
44
+ public $is_wp_org_compliant = true;
45
+
46
+ #region Install Specific Properties
47
+
48
+ /**
49
+ * @var string
50
+ */
51
+ public $file;
52
+ /**
53
+ * @var string
54
+ */
55
+ public $version;
56
+ /**
57
+ * @var bool
58
+ */
59
+ public $auto_update;
60
+ /**
61
+ * @var FS_Plugin_Info
62
+ */
63
+ public $info;
64
+ /**
65
+ * @since 1.0.9
66
+ *
67
+ * @var bool
68
+ */
69
+ public $is_premium;
70
+ /**
71
+ * @since 1.0.9
72
+ *
73
+ * @var bool
74
+ */
75
+ public $is_live;
76
+
77
+ const AFFILIATE_MODERATION_CUSTOMERS = 'customers';
78
+
79
+ #endregion Install Specific Properties
80
+
81
+ /**
82
+ * @param stdClass|bool $plugin
83
+ */
84
+ function __construct( $plugin = false ) {
85
+ parent::__construct( $plugin );
86
+
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
+ }
93
+ }
94
+
95
+ /**
96
+ * Check if plugin is an add-on (has parent).
97
+ *
98
+ * @author Vova Feldman (@svovaf)
99
+ * @since 1.0.6
100
+ *
101
+ * @return bool
102
+ */
103
+ function is_addon() {
104
+ return isset( $this->parent_plugin_id ) && is_numeric( $this->parent_plugin_id );
105
+ }
106
+
107
+ /**
108
+ * @author Leo Fajardo (@leorw)
109
+ * @since 1.2.3
110
+ *
111
+ * @return bool
112
+ */
113
+ function has_affiliate_program() {
114
+ return ( ! empty( $this->affiliate_moderation ) );
115
+ }
116
+
117
+ static function get_type() {
118
+ return 'plugin';
119
+ }
120
  }
freemius/includes/entities/class-fs-site.php CHANGED
@@ -150,6 +150,7 @@
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.
@@ -171,7 +172,9 @@
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
 
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.
172
  ( fs_ends_with($subdomain, 'pantheonsite.io') &&
173
  (fs_starts_with($subdomain, 'test-') || fs_starts_with($subdomain, 'dev-'))) ||
174
  // Cloudways
175
+ fs_ends_with( $subdomain, '.cloudwaysapps.com' ) ||
176
+ // Kinsta
177
+ (fs_ends_with($subdomain, '.kinsta.com') && fs_starts_with($subdomain, 'staging-'))
178
  );
179
  }
180
 
freemius/includes/fs-plugin-info-dialog.php CHANGED
@@ -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;
@@ -165,6 +165,8 @@
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
 
@@ -183,12 +185,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 +203,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 +214,12 @@
217
  }
218
  }
219
 
 
 
 
 
 
 
220
  if ( $has_pricing ) {
221
  // Add plans to data.
222
  $data->plans = $plans;
@@ -950,7 +953,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 +1097,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
 
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;
165
  // Plugin is missing, not on Freemius nor WP.org.
166
  $data->wp_org_missing = true;
167
  }
168
+
169
+ $data->fs_missing = ( ! $has_free_plan || $data->wp_org_missing );
170
  } else {
171
  $data->wp_org_missing = false;
172
 
185
 
186
  // Fetch as much as possible info from local files.
187
  $plugin_local_data = $this->_fs->get_plugin_data();
 
188
  $data->author = $plugin_local_data['Author'];
 
 
 
 
189
 
190
  if ( ! empty( $selected_addon->info->banner_url ) ) {
191
  $data->banners = array(
203
 
204
  if ( is_object( $latest ) ) {
205
  $data->version = $latest->version;
206
+ $data->last_updated = $latest->created;
207
  $data->requires = $latest->requires_platform_version;
208
  $data->tested = $latest->tested_up_to_version;
209
  } else {
214
  }
215
  }
216
 
217
+ $data->name = $selected_addon->title;
218
+ $view_vars = array( 'plugin' => $selected_addon );
219
+ $data->sections = array(
220
+ 'description' => fs_get_template( '/plugin-info/description.php', $view_vars ),
221
+ );
222
+
223
  if ( $has_pricing ) {
224
  // Add plans to data.
225
  $data->plans = $plans;
953
  </li>
954
  <?php
955
  }
956
+ if ( ! empty( $api->slug ) && true == $api->is_wp_org_compliant ) {
957
  ?>
958
  <li><a target="_blank"
959
  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 ) ?>
1097
  echo "</div>\n"; // #plugin-information-scrollable
1098
  echo "<div id='$tab-footer'>\n";
1099
 
1100
+ if ( $api->has_paid_plan && ! empty( $api->checkout_link ) ) {
1101
  echo $this->get_checkout_cta( $api );
1102
  }
1103
 
freemius/includes/managers/class-fs-admin-menu-manager.php CHANGED
@@ -1,957 +1,957 @@
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.1.3
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- class FS_Admin_Menu_Manager {
14
-
15
- #region Properties
16
-
17
- /**
18
- * @since 1.2.2
19
- *
20
- * @var string
21
- */
22
- protected $_module_unique_affix;
23
-
24
- /**
25
- * @since 1.2.2
26
- *
27
- * @var number
28
- */
29
- protected $_module_id;
30
-
31
- /**
32
- * @since 1.2.2
33
- *
34
- * @var string
35
- */
36
- protected $_module_type;
37
-
38
- /**
39
- * @since 1.0.6
40
- *
41
- * @var string
42
- */
43
- private $_menu_slug;
44
- /**
45
- * @since 1.1.3
46
- *
47
- * @var string
48
- */
49
- private $_parent_slug;
50
- /**
51
- * @since 1.1.3
52
- *
53
- * @var string
54
- */
55
- private $_parent_type;
56
- /**
57
- * @since 1.1.3
58
- *
59
- * @var string
60
- */
61
- private $_type;
62
- /**
63
- * @since 1.1.3
64
- *
65
- * @var bool
66
- */
67
- private $_is_top_level;
68
- /**
69
- * @since 1.1.3
70
- *
71
- * @var bool
72
- */
73
- private $_is_override_exact;
74
- /**
75
- * @since 1.1.3
76
- *
77
- * @var array<string,bool>
78
- */
79
- private $_default_submenu_items;
80
- /**
81
- * @since 1.1.3
82
- *
83
- * @var string
84
- */
85
- private $_first_time_path;
86
- /**
87
- * @since 1.2.2
88
- *
89
- * @var bool
90
- */
91
- private $_menu_exists;
92
- /**
93
- * @since 2.0.0
94
- *
95
- * @var bool
96
- */
97
- private $_network_menu_exists;
98
-
99
- #endregion Properties
100
-
101
- /**
102
- * @var FS_Logger
103
- */
104
- protected $_logger;
105
-
106
- #region Singleton
107
-
108
- /**
109
- * @var FS_Admin_Menu_Manager[]
110
- */
111
- private static $_instances = array();
112
-
113
- /**
114
- * @param number $module_id
115
- * @param string $module_type
116
- * @param string $module_unique_affix
117
- *
118
- * @return FS_Admin_Menu_Manager
119
- */
120
- static function instance( $module_id, $module_type, $module_unique_affix ) {
121
- $key = 'm_' . $module_id;
122
-
123
- if ( ! isset( self::$_instances[ $key ] ) ) {
124
- self::$_instances[ $key ] = new FS_Admin_Menu_Manager( $module_id, $module_type, $module_unique_affix );
125
- }
126
-
127
- return self::$_instances[ $key ];
128
- }
129
-
130
- protected function __construct( $module_id, $module_type, $module_unique_affix ) {
131
- $this->_logger = FS_Logger::get_logger( WP_FS__SLUG . '_' . $module_id . '_admin_menu', WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK );
132
-
133
- $this->_module_id = $module_id;
134
- $this->_module_type = $module_type;
135
- $this->_module_unique_affix = $module_unique_affix;
136
- }
137
-
138
- #endregion Singleton
139
-
140
- #region Helpers
141
-
142
- private function get_option( &$options, $key, $default = false ) {
143
- return ! empty( $options[ $key ] ) ? $options[ $key ] : $default;
144
- }
145
-
146
- private function get_bool_option( &$options, $key, $default = false ) {
147
- return isset( $options[ $key ] ) && is_bool( $options[ $key ] ) ? $options[ $key ] : $default;
148
- }
149
-
150
- #endregion Helpers
151
-
152
- /**
153
- * @param array $menu
154
- * @param bool $is_addon
155
- */
156
- function init( $menu, $is_addon = false ) {
157
- $this->_menu_exists = ( isset( $menu['slug'] ) && ! empty( $menu['slug'] ) );
158
- $this->_network_menu_exists = ( ! empty( $menu['network'] ) && true === $menu['network'] );
159
-
160
- $this->_menu_slug = ( $this->_menu_exists ? $menu['slug'] : $this->_module_unique_affix );
161
-
162
- $this->_default_submenu_items = array();
163
- // @deprecated
164
- $this->_type = 'page';
165
- $this->_is_top_level = true;
166
- $this->_is_override_exact = false;
167
- $this->_parent_slug = false;
168
- // @deprecated
169
- $this->_parent_type = 'page';
170
-
171
- if ( isset( $menu ) ) {
172
- if ( ! $is_addon ) {
173
- $this->_default_submenu_items = array(
174
- 'contact' => $this->get_bool_option( $menu, 'contact', true ),
175
- 'support' => $this->get_bool_option( $menu, 'support', true ),
176
- 'affiliation' => $this->get_bool_option( $menu, 'affiliation', true ),
177
- 'account' => $this->get_bool_option( $menu, 'account', true ),
178
- 'pricing' => $this->get_bool_option( $menu, 'pricing', true ),
179
- 'addons' => $this->get_bool_option( $menu, 'addons', true ),
180
- );
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' );
192
-
193
- if ( isset( $menu['parent'] ) ) {
194
- $this->_parent_slug = $this->get_option( $menu['parent'], 'slug' );
195
- // @deprecated
196
- $this->_parent_type = $this->get_option( $menu['parent'], 'type', 'page' );
197
-
198
- // If parent's slug is different, then it's NOT a top level menu item.
199
- $this->_is_top_level = ( $this->_parent_slug === $this->_menu_slug );
200
- } else {
201
- /**
202
- * If no parent then top level if:
203
- * - Has custom admin menu ('page')
204
- * - CPT menu type ('cpt')
205
- */
206
- // $this->_is_top_level = in_array( $this->_type, array(
207
- // 'cpt',
208
- // 'page'
209
- // ) );
210
- }
211
- }
212
- }
213
-
214
- /**
215
- * Check if top level menu.
216
- *
217
- * @author Vova Feldman (@svovaf)
218
- * @since 1.1.3
219
- *
220
- * @return bool False if submenu item.
221
- */
222
- function is_top_level() {
223
- return $this->_is_top_level;
224
- }
225
-
226
- /**
227
- * Check if the page should be override on exact URL match.
228
- *
229
- * @author Vova Feldman (@svovaf)
230
- * @since 1.1.3
231
- *
232
- * @return bool False if submenu item.
233
- */
234
- function is_override_exact() {
235
- return $this->_is_override_exact;
236
- }
237
-
238
-
239
- /**
240
- * Get the path of the page the user should be forwarded to after first activation.
241
- *
242
- * @author Vova Feldman (@svovaf)
243
- * @since 1.1.3
244
- *
245
- * @return string
246
- */
247
- function get_first_time_path() {
248
- return $this->_first_time_path;
249
- }
250
-
251
- /**
252
- * Check if plugin's menu item is part of a custom top level menu.
253
- *
254
- * @author Vova Feldman (@svovaf)
255
- * @since 1.1.3
256
- *
257
- * @return bool
258
- */
259
- function has_custom_parent() {
260
- return ! $this->_is_top_level && is_string( $this->_parent_slug );
261
- }
262
-
263
- /**
264
- * @author Leo Fajardo (@leorw)
265
- * @since 1.2.2
266
- *
267
- * @return bool
268
- */
269
- function has_menu() {
270
- return $this->_menu_exists;
271
- }
272
-
273
- /**
274
- * @author Vova Feldman (@svovaf)
275
- * @since 2.0.0
276
- *
277
- * @return bool
278
- */
279
- function has_network_menu() {
280
- return $this->_network_menu_exists;
281
- }
282
-
283
- /**
284
- * @author Vova Feldman (@svovaf)
285
- * @since 1.1.3
286
- *
287
- * @param string $id
288
- * @param bool $default
289
- * @param bool $ignore_menu_existence Since 1.2.2.7 If true, check if the submenu item visible even if there's no parent menu.
290
- *
291
- * @return bool
292
- */
293
- function is_submenu_item_visible( $id, $default = true, $ignore_menu_existence = false ) {
294
- if ( ! $ignore_menu_existence && ! $this->has_menu() ) {
295
- return false;
296
- }
297
-
298
- return fs_apply_filter(
299
- $this->_module_unique_affix,
300
- 'is_submenu_visible',
301
- $this->get_bool_option( $this->_default_submenu_items, $id, $default ),
302
- $id
303
- );
304
- }
305
-
306
- /**
307
- * Calculates admin settings menu slug.
308
- * If plugin's menu slug is a file (e.g. CPT), uses plugin's slug as the menu slug.
309
- *
310
- * @author Vova Feldman (@svovaf)
311
- * @since 1.1.3
312
- *
313
- * @param string $page
314
- *
315
- * @return string
316
- */
317
- function get_slug( $page = '' ) {
318
- return ( ( false === strpos( $this->_menu_slug, '.php?' ) ) ?
319
- $this->_menu_slug :
320
- $this->_module_unique_affix ) . ( empty( $page ) ? '' : ( '-' . $page ) );
321
- }
322
-
323
- /**
324
- * @author Vova Feldman (@svovaf)
325
- * @since 1.1.3
326
- *
327
- * @return string
328
- */
329
- function get_parent_slug() {
330
- return $this->_parent_slug;
331
- }
332
-
333
- /**
334
- * @author Vova Feldman (@svovaf)
335
- * @since 1.1.3
336
- *
337
- * @return string
338
- */
339
- function get_type() {
340
- return $this->_type;
341
- }
342
-
343
- /**
344
- * @author Vova Feldman (@svovaf)
345
- * @since 1.1.3
346
- *
347
- * @return bool
348
- */
349
- function is_cpt() {
350
- return ( 0 === strpos( $this->_menu_slug, 'edit.php?post_type=' ) ||
351
- // Back compatibility.
352
- 'cpt' === $this->_type
353
- );
354
- }
355
-
356
- /**
357
- * @author Vova Feldman (@svovaf)
358
- * @since 1.1.3
359
- *
360
- * @return string
361
- */
362
- function get_parent_type() {
363
- return $this->_parent_type;
364
- }
365
-
366
- /**
367
- * @author Vova Feldman (@svovaf)
368
- * @since 1.1.3
369
- *
370
- * @return string
371
- */
372
- function get_raw_slug() {
373
- return $this->_menu_slug;
374
- }
375
-
376
- /**
377
- * Get plugin's original menu slug.
378
- *
379
- * @author Vova Feldman (@svovaf)
380
- * @since 1.1.3
381
- *
382
- * @return string
383
- */
384
- function get_original_menu_slug() {
385
- if ( 'cpt' === $this->_type ) {
386
- return add_query_arg( array(
387
- 'post_type' => $this->_menu_slug
388
- ), 'edit.php' );
389
- }
390
-
391
- if ( false === strpos( $this->_menu_slug, '.php?' ) ) {
392
- return $this->_menu_slug;
393
- } else {
394
- return $this->_module_unique_affix;
395
- }
396
- }
397
-
398
- /**
399
- * @author Vova Feldman (@svovaf)
400
- * @since 1.1.3
401
- *
402
- * @return string
403
- */
404
- function get_top_level_menu_slug() {
405
- return $this->has_custom_parent() ?
406
- $this->get_parent_slug() :
407
- $this->get_raw_slug();
408
- }
409
-
410
- /**
411
- * Is user on plugin's admin activation page.
412
- *
413
- * @author Vova Feldman (@svovaf)
414
- * @since 1.0.8
415
- *
416
- * @return bool
417
- */
418
- function is_main_settings_page() {
419
- if ( $this->_menu_exists &&
420
- ( fs_is_plugin_page( $this->_menu_slug ) || fs_is_plugin_page( $this->_module_unique_affix ) )
421
- ) {
422
- /**
423
- * Module has a settings menu and the context page is the main settings page, so assume it's in
424
- * activation (doesn't really check if already opted-in/skipped or not).
425
- *
426
- * @since 1.2.2
427
- */
428
- return true;
429
- }
430
-
431
- global $pagenow;
432
- if ( ( WP_FS__MODULE_TYPE_THEME === $this->_module_type ) && Freemius::is_themes_page() ) {
433
- /**
434
- * In activation only when show_optin query string param is given.
435
- *
436
- * @since 1.2.2
437
- */
438
- return fs_request_get_bool( $this->_module_unique_affix . '_show_optin' );
439
- }
440
-
441
- return false;
442
- }
443
-
444
- #region Submenu Override
445
-
446
- /**
447
- * Override submenu's action.
448
- *
449
- * @author Vova Feldman (@svovaf)
450
- * @since 1.1.0
451
- *
452
- * @param string $parent_slug
453
- * @param string $menu_slug
454
- * @param callable $function
455
- *
456
- * @return false|string If submenu exist, will return the hook name.
457
- */
458
- function override_submenu_action( $parent_slug, $menu_slug, $function ) {
459
- global $submenu;
460
-
461
- $menu_slug = plugin_basename( $menu_slug );
462
- $parent_slug = plugin_basename( $parent_slug );
463
-
464
- if ( ! isset( $submenu[ $parent_slug ] ) ) {
465
- // Parent menu not exist.
466
- return false;
467
- }
468
-
469
- $found_submenu_item = false;
470
- foreach ( $submenu[ $parent_slug ] as $submenu_item ) {
471
- if ( $menu_slug === $submenu_item[2] ) {
472
- $found_submenu_item = $submenu_item;
473
- break;
474
- }
475
- }
476
-
477
- if ( false === $found_submenu_item ) {
478
- // Submenu item not found.
479
- return false;
480
- }
481
-
482
- // Remove current function.
483
- $hookname = get_plugin_page_hookname( $menu_slug, $parent_slug );
484
- remove_all_actions( $hookname );
485
-
486
- // Attach new action.
487
- add_action( $hookname, $function );
488
-
489
- return $hookname;
490
- }
491
-
492
- #endregion Submenu Override
493
-
494
- #region Top level menu Override
495
-
496
- /**
497
- * Find plugin's admin dashboard main menu item.
498
- *
499
- * @author Vova Feldman (@svovaf)
500
- * @since 1.0.2
501
- *
502
- * @return string[]|false
503
- */
504
- private function find_top_level_menu() {
505
- global $menu;
506
-
507
- $position = - 1;
508
- $found_menu = false;
509
-
510
- $menu_slug = $this->get_raw_slug();
511
-
512
- $hook_name = get_plugin_page_hookname( $menu_slug, '' );
513
- foreach ( $menu as $pos => $m ) {
514
- if ( $menu_slug === $m[2] ) {
515
- $position = $pos;
516
- $found_menu = $m;
517
- break;
518
- }
519
- }
520
-
521
- if ( false === $found_menu ) {
522
- return false;
523
- }
524
-
525
- return array(
526
- 'menu' => $found_menu,
527
- 'position' => $position,
528
- 'hook_name' => $hook_name
529
- );
530
- }
531
-
532
- /**
533
- * Find plugin's admin dashboard main submenu item.
534
- *
535
- * @author Vova Feldman (@svovaf)
536
- * @since 1.2.1.6
537
- *
538
- * @return array|false
539
- */
540
- private function find_main_submenu() {
541
- global $submenu;
542
-
543
- $top_level_menu_slug = $this->get_top_level_menu_slug();
544
-
545
- if ( ! isset( $submenu[ $top_level_menu_slug ] ) ) {
546
- return false;
547
- }
548
-
549
- $submenu_slug = $this->get_raw_slug();
550
-
551
- $position = - 1;
552
- $found_submenu = false;
553
-
554
- $hook_name = get_plugin_page_hookname( $submenu_slug, '' );
555
-
556
- foreach ( $submenu[ $top_level_menu_slug ] as $pos => $sub ) {
557
- if ( $submenu_slug === $sub[2] ) {
558
- $position = $pos;
559
- $found_submenu = $sub;
560
- }
561
- }
562
-
563
- if ( false === $found_submenu ) {
564
- return false;
565
- }
566
-
567
- return array(
568
- 'menu' => $found_submenu,
569
- 'parent_slug' => $top_level_menu_slug,
570
- 'position' => $position,
571
- 'hook_name' => $hook_name
572
- );
573
- }
574
-
575
- /**
576
- * Remove all sub-menu items.
577
- *
578
- * @author Vova Feldman (@svovaf)
579
- * @since 1.0.7
580
- *
581
- * @return bool If submenu with plugin's menu slug was found.
582
- */
583
- private function remove_all_submenu_items() {
584
- global $submenu;
585
-
586
- $menu_slug = $this->get_raw_slug();
587
-
588
- if ( ! isset( $submenu[ $menu_slug ] ) ) {
589
- return false;
590
- }
591
-
592
- /**
593
- * This method is NOT executed for WordPress.org themes.
594
- * Since we maintain only one version of the SDK we added this small
595
- * hack to avoid the error from Theme Check since it's a false-positive.
596
- *
597
- * @author Vova Feldman (@svovaf)
598
- * @since 1.2.2.7
599
- */
600
- $submenu_ref = &$submenu;
601
- $submenu_ref[ $menu_slug ] = array();
602
-
603
- return true;
604
- }
605
-
606
- /**
607
- *
608
- * @author Vova Feldman (@svovaf)
609
- * @since 1.0.9
610
- *
611
- * @param bool $remove_top_level_menu
612
- *
613
- * @return false|array[string]mixed
614
- */
615
- function remove_menu_item( $remove_top_level_menu = false ) {
616
- $this->_logger->entrance();
617
-
618
- // Find main menu item.
619
- $top_level_menu = $this->find_top_level_menu();
620
-
621
- if ( false === $top_level_menu ) {
622
- return false;
623
- }
624
-
625
- // Remove it with its actions.
626
- remove_all_actions( $top_level_menu['hook_name'] );
627
-
628
- // Remove all submenu items.
629
- $this->remove_all_submenu_items();
630
-
631
- if ( $remove_top_level_menu ) {
632
- global $menu;
633
- unset( $menu[ $top_level_menu['position'] ] );
634
- }
635
-
636
- return $top_level_menu;
637
- }
638
-
639
- /**
640
- * Get module's main admin setting page URL.
641
- *
642
- * @todo This method was only tested for wp.org compliant themes with a submenu item. Need to test for plugins with top level, submenu, and CPT top level, menu items.
643
- *
644
- * @author Vova Feldman (@svovaf)
645
- * @since 1.2.2.7
646
- *
647
- * @return string
648
- */
649
- function main_menu_url() {
650
- $this->_logger->entrance();
651
-
652
- if ( $this->_is_top_level ) {
653
- $menu = $this->find_top_level_menu();
654
- } else {
655
- $menu = $this->find_main_submenu();
656
- }
657
-
658
- $parent_slug = isset( $menu['parent_slug'] ) ?
659
- $menu['parent_slug'] :
660
- 'admin.php';
661
-
662
- return admin_url( $parent_slug . '?page=' . $menu['menu'][2] );
663
- }
664
-
665
- /**
666
- * @author Vova Feldman (@svovaf)
667
- * @since 1.1.4
668
- *
669
- * @param callable $function
670
- *
671
- * @return false|array[string]mixed
672
- */
673
- function override_menu_item( $function ) {
674
- $found_menu = $this->remove_menu_item();
675
-
676
- if ( false === $found_menu ) {
677
- return false;
678
- }
679
-
680
- if ( ! $this->is_top_level() || ! $this->is_cpt() ) {
681
- $menu_slug = plugin_basename( $this->get_slug() );
682
-
683
- $hookname = get_plugin_page_hookname( $menu_slug, '' );
684
-
685
- // Override menu action.
686
- add_action( $hookname, $function );
687
- } else {
688
- global $menu;
689
-
690
- // Remove original CPT menu.
691
- unset( $menu[ $found_menu['position'] ] );
692
-
693
- // Create new top-level menu action.
694
- $hookname = self::add_page(
695
- $found_menu['menu'][3],
696
- $found_menu['menu'][0],
697
- 'manage_options',
698
- $this->get_slug(),
699
- $function,
700
- $found_menu['menu'][6],
701
- $found_menu['position']
702
- );
703
- }
704
-
705
- return $hookname;
706
- }
707
-
708
- /**
709
- * Adds a counter to the module's top level menu item.
710
- *
711
- * @author Vova Feldman (@svovaf)
712
- * @since 1.2.1.5
713
- *
714
- * @param int $counter
715
- * @param string $class
716
- */
717
- function add_counter_to_menu_item( $counter = 1, $class = '' ) {
718
- global $menu, $submenu;
719
-
720
- $mask = '%s <span class="update-plugins %s count-%3$s" aria-hidden="true"><span>%3$s<span class="screen-reader-text">%3$s notifications</span></span></span>';
721
-
722
- /**
723
- * This method is NOT executed for WordPress.org themes.
724
- * Since we maintain only one version of the SDK we added this small
725
- * hack to avoid the error from Theme Check since it's a false-positive.
726
- *
727
- * @author Vova Feldman (@svovaf)
728
- * @since 1.2.2.7
729
- */
730
- $menu_ref = &$menu;
731
- $submenu_ref = &$submenu;
732
-
733
- if ( $this->_is_top_level ) {
734
- // Find main menu item.
735
- $found_menu = $this->find_top_level_menu();
736
-
737
- if ( false !== $found_menu ) {
738
- // Override menu label.
739
- $menu_ref[ $found_menu['position'] ][0] = sprintf(
740
- $mask,
741
- $found_menu['menu'][0],
742
- $class,
743
- $counter
744
- );
745
- }
746
- } else {
747
- $found_submenu = $this->find_main_submenu();
748
-
749
- if ( false !== $found_submenu ) {
750
- // Override menu label.
751
- $submenu_ref[ $found_submenu['parent_slug'] ][ $found_submenu['position'] ][0] = sprintf(
752
- $mask,
753
- $found_submenu['menu'][0],
754
- $class,
755
- $counter
756
- );
757
- }
758
- }
759
- }
760
-
761
- #endregion Top level menu Override
762
-
763
- /**
764
- * Add a top-level menu page.
765
- *
766
- * Note for WordPress.org Theme/Plugin reviewer:
767
- *
768
- * This is a replication of `add_menu_page()` to avoid Theme Check warning.
769
- *
770
- * Why?
771
- * ====
772
- * Freemius is an SDK for plugin and theme developers. Since the core
773
- * of the SDK is relevant both for plugins and themes, for obvious reasons,
774
- * we only develop and maintain one code base.
775
- *
776
- * This method will not run for wp.org themes (only plugins) since theme
777
- * admin settings/options are now only allowed in the customizer.
778
- *
779
- * If you have any questions or need clarifications, please don't hesitate
780
- * pinging me on slack, my username is @svovaf.
781
- *
782
- * @author Vova Feldman (@svovaf)
783
- * @since 1.2.2
784
- *
785
- * @param string $page_title The text to be displayed in the title tags of the page when the menu is
786
- * selected.
787
- * @param string $menu_title The text to be used for the menu.
788
- * @param string $capability The capability required for this menu to be displayed to the user.
789
- * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu).
790
- * @param callable|string $function The function to be called to output the content for this page.
791
- * @param string $icon_url The URL to the icon to be used for this menu.
792
- * * Pass a base64-encoded SVG using a data URI, which will be colored to
793
- * match the color scheme. This should begin with
794
- * 'data:image/svg+xml;base64,'.
795
- * * Pass the name of a Dashicons helper class to use a font icon,
796
- * e.g. 'dashicons-chart-pie'.
797
- * * Pass 'none' to leave div.wp-menu-image empty so an icon can be added
798
- * via CSS.
799
- * @param int $position The position in the menu order this one should appear.
800
- *
801
- * @return string The resulting page's hook_suffix.
802
- */
803
- static function add_page(
804
- $page_title,
805
- $menu_title,
806
- $capability,
807
- $menu_slug,
808
- $function = '',
809
- $icon_url = '',
810
- $position = null
811
- ) {
812
- $fn = 'add_menu' . '_page';
813
-
814
- return $fn(
815
- $page_title,
816
- $menu_title,
817
- $capability,
818
- $menu_slug,
819
- $function,
820
- $icon_url,
821
- $position
822
- );
823
- }
824
-
825
- /**
826
- * Add page and update menu instance settings.
827
- *
828
- * @author Vova Feldman (@svovaf)
829
- * @since 2.0.0
830
- *
831
- * @param string $page_title
832
- * @param string $menu_title
833
- * @param string $capability
834
- * @param string $menu_slug
835
- * @param callable|string $function
836
- * @param string $icon_url
837
- * @param int|null $position
838
- *
839
- * @return string
840
- */
841
- function add_page_and_update(
842
- $page_title,
843
- $menu_title,
844
- $capability,
845
- $menu_slug,
846
- $function = '',
847
- $icon_url = '',
848
- $position = null
849
- ) {
850
- $this->_menu_slug = $menu_slug;
851
- $this->_is_top_level = true;
852
- $this->_menu_exists = true;
853
- $this->_network_menu_exists = true;
854
-
855
- return self::add_page(
856
- $page_title,
857
- $menu_title,
858
- $capability,
859
- $menu_slug,
860
- $function,
861
- $icon_url,
862
- $position
863
- );
864
- }
865
-
866
- /**
867
- * Add a submenu page.
868
- *
869
- * Note for WordPress.org Theme/Plugin reviewer:
870
- *
871
- * This is a replication of `add_submenu_page()` to avoid Theme Check warning.
872
- *
873
- * Why?
874
- * ====
875
- * Freemius is an SDK for plugin and theme developers. Since the core
876
- * of the SDK is relevant both for plugins and themes, for obvious reasons,
877
- * we only develop and maintain one code base.
878
- *
879
- * This method will not run for wp.org themes (only plugins) since theme
880
- * admin settings/options are now only allowed in the customizer.
881
- *
882
- * If you have any questions or need clarifications, please don't hesitate
883
- * pinging me on slack, my username is @svovaf.
884
- *
885
- * @author Vova Feldman (@svovaf)
886
- * @since 1.2.2
887
- *
888
- * @param string $parent_slug The slug name for the parent menu (or the file name of a standard
889
- * WordPress admin page).
890
- * @param string $page_title The text to be displayed in the title tags of the page when the menu is
891
- * selected.
892
- * @param string $menu_title The text to be used for the menu.
893
- * @param string $capability The capability required for this menu to be displayed to the user.
894
- * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu).
895
- * @param callable|string $function The function to be called to output the content for this page.
896
- *
897
- * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability
898
- * required.
899
- */
900
- static function add_subpage(
901
- $parent_slug,
902
- $page_title,
903
- $menu_title,
904
- $capability,
905
- $menu_slug,
906
- $function = ''
907
- ) {
908
- $fn = 'add_submenu' . '_page';
909
-
910
- return $fn( $parent_slug,
911
- $page_title,
912
- $menu_title,
913
- $capability,
914
- $menu_slug,
915
- $function
916
- );
917
- }
918
-
919
- /**
920
- * Add sub page and update menu instance settings.
921
- *
922
- * @author Vova Feldman (@svovaf)
923
- * @since 2.0.0
924
- *
925
- * @param string $parent_slug
926
- * @param string $page_title
927
- * @param string $menu_title
928
- * @param string $capability
929
- * @param string $menu_slug
930
- * @param callable|string $function
931
- *
932
- * @return string
933
- */
934
- function add_subpage_and_update(
935
- $parent_slug,
936
- $page_title,
937
- $menu_title,
938
- $capability,
939
- $menu_slug,
940
- $function = ''
941
- ) {
942
- $this->_menu_slug = $menu_slug;
943
- $this->_parent_slug = $parent_slug;
944
- $this->_is_top_level = false;
945
- $this->_menu_exists = true;
946
- $this->_network_menu_exists = true;
947
-
948
- return self::add_subpage(
949
- $parent_slug,
950
- $page_title,
951
- $menu_title,
952
- $capability,
953
- $menu_slug,
954
- $function
955
- );
956
- }
957
  }
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.1.3
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ class FS_Admin_Menu_Manager {
14
+
15
+ #region Properties
16
+
17
+ /**
18
+ * @since 1.2.2
19
+ *
20
+ * @var string
21
+ */
22
+ protected $_module_unique_affix;
23
+
24
+ /**
25
+ * @since 1.2.2
26
+ *
27
+ * @var number
28
+ */
29
+ protected $_module_id;
30
+
31
+ /**
32
+ * @since 1.2.2
33
+ *
34
+ * @var string
35
+ */
36
+ protected $_module_type;
37
+
38
+ /**
39
+ * @since 1.0.6
40
+ *
41
+ * @var string
42
+ */
43
+ private $_menu_slug;
44
+ /**
45
+ * @since 1.1.3
46
+ *
47
+ * @var string
48
+ */
49
+ private $_parent_slug;
50
+ /**
51
+ * @since 1.1.3
52
+ *
53
+ * @var string
54
+ */
55
+ private $_parent_type;
56
+ /**
57
+ * @since 1.1.3
58
+ *
59
+ * @var string
60
+ */
61
+ private $_type;
62
+ /**
63
+ * @since 1.1.3
64
+ *
65
+ * @var bool
66
+ */
67
+ private $_is_top_level;
68
+ /**
69
+ * @since 1.1.3
70
+ *
71
+ * @var bool
72
+ */
73
+ private $_is_override_exact;
74
+ /**
75
+ * @since 1.1.3
76
+ *
77
+ * @var array<string,bool>
78
+ */
79
+ private $_default_submenu_items;
80
+ /**
81
+ * @since 1.1.3
82
+ *
83
+ * @var string
84
+ */
85
+ private $_first_time_path;
86
+ /**
87
+ * @since 1.2.2
88
+ *
89
+ * @var bool
90
+ */
91
+ private $_menu_exists;
92
+ /**
93
+ * @since 2.0.0
94
+ *
95
+ * @var bool
96
+ */
97
+ private $_network_menu_exists;
98
+
99
+ #endregion Properties
100
+
101
+ /**
102
+ * @var FS_Logger
103
+ */
104
+ protected $_logger;
105
+
106
+ #region Singleton
107
+
108
+ /**
109
+ * @var FS_Admin_Menu_Manager[]
110
+ */
111
+ private static $_instances = array();
112
+
113
+ /**
114
+ * @param number $module_id
115
+ * @param string $module_type
116
+ * @param string $module_unique_affix
117
+ *
118
+ * @return FS_Admin_Menu_Manager
119
+ */
120
+ static function instance( $module_id, $module_type, $module_unique_affix ) {
121
+ $key = 'm_' . $module_id;
122
+
123
+ if ( ! isset( self::$_instances[ $key ] ) ) {
124
+ self::$_instances[ $key ] = new FS_Admin_Menu_Manager( $module_id, $module_type, $module_unique_affix );
125
+ }
126
+
127
+ return self::$_instances[ $key ];
128
+ }
129
+
130
+ protected function __construct( $module_id, $module_type, $module_unique_affix ) {
131
+ $this->_logger = FS_Logger::get_logger( WP_FS__SLUG . '_' . $module_id . '_admin_menu', WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK );
132
+
133
+ $this->_module_id = $module_id;
134
+ $this->_module_type = $module_type;
135
+ $this->_module_unique_affix = $module_unique_affix;
136
+ }
137
+
138
+ #endregion Singleton
139
+
140
+ #region Helpers
141
+
142
+ private function get_option( &$options, $key, $default = false ) {
143
+ return ! empty( $options[ $key ] ) ? $options[ $key ] : $default;
144
+ }
145
+
146
+ private function get_bool_option( &$options, $key, $default = false ) {
147
+ return isset( $options[ $key ] ) && is_bool( $options[ $key ] ) ? $options[ $key ] : $default;
148
+ }
149
+
150
+ #endregion Helpers
151
+
152
+ /**
153
+ * @param array $menu
154
+ * @param bool $is_addon
155
+ */
156
+ function init( $menu, $is_addon = false ) {
157
+ $this->_menu_exists = ( isset( $menu['slug'] ) && ! empty( $menu['slug'] ) );
158
+ $this->_network_menu_exists = ( ! empty( $menu['network'] ) && true === $menu['network'] );
159
+
160
+ $this->_menu_slug = ( $this->_menu_exists ? $menu['slug'] : $this->_module_unique_affix );
161
+
162
+ $this->_default_submenu_items = array();
163
+ // @deprecated
164
+ $this->_type = 'page';
165
+ $this->_is_top_level = true;
166
+ $this->_is_override_exact = false;
167
+ $this->_parent_slug = false;
168
+ // @deprecated
169
+ $this->_parent_type = 'page';
170
+
171
+ if ( isset( $menu ) ) {
172
+ if ( ! $is_addon ) {
173
+ $this->_default_submenu_items = array(
174
+ 'contact' => $this->get_bool_option( $menu, 'contact', true ),
175
+ 'support' => $this->get_bool_option( $menu, 'support', true ),
176
+ 'affiliation' => $this->get_bool_option( $menu, 'affiliation', true ),
177
+ 'account' => $this->get_bool_option( $menu, 'account', true ),
178
+ 'pricing' => $this->get_bool_option( $menu, 'pricing', true ),
179
+ 'addons' => $this->get_bool_option( $menu, 'addons', true ),
180
+ );
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' );
192
+
193
+ if ( isset( $menu['parent'] ) ) {
194
+ $this->_parent_slug = $this->get_option( $menu['parent'], 'slug' );
195
+ // @deprecated
196
+ $this->_parent_type = $this->get_option( $menu['parent'], 'type', 'page' );
197
+
198
+ // If parent's slug is different, then it's NOT a top level menu item.
199
+ $this->_is_top_level = ( $this->_parent_slug === $this->_menu_slug );
200
+ } else {
201
+ /**
202
+ * If no parent then top level if:
203
+ * - Has custom admin menu ('page')
204
+ * - CPT menu type ('cpt')
205
+ */
206
+ // $this->_is_top_level = in_array( $this->_type, array(
207
+ // 'cpt',
208
+ // 'page'
209
+ // ) );
210
+ }
211
+ }
212
+ }
213
+
214
+ /**
215
+ * Check if top level menu.
216
+ *
217
+ * @author Vova Feldman (@svovaf)
218
+ * @since 1.1.3
219
+ *
220
+ * @return bool False if submenu item.
221
+ */
222
+ function is_top_level() {
223
+ return $this->_is_top_level;
224
+ }
225
+
226
+ /**
227
+ * Check if the page should be override on exact URL match.
228
+ *
229
+ * @author Vova Feldman (@svovaf)
230
+ * @since 1.1.3
231
+ *
232
+ * @return bool False if submenu item.
233
+ */
234
+ function is_override_exact() {
235
+ return $this->_is_override_exact;
236
+ }
237
+
238
+
239
+ /**
240
+ * Get the path of the page the user should be forwarded to after first activation.
241
+ *
242
+ * @author Vova Feldman (@svovaf)
243
+ * @since 1.1.3
244
+ *
245
+ * @return string
246
+ */
247
+ function get_first_time_path() {
248
+ return $this->_first_time_path;
249
+ }
250
+
251
+ /**
252
+ * Check if plugin's menu item is part of a custom top level menu.
253
+ *
254
+ * @author Vova Feldman (@svovaf)
255
+ * @since 1.1.3
256
+ *
257
+ * @return bool
258
+ */
259
+ function has_custom_parent() {
260
+ return ! $this->_is_top_level && is_string( $this->_parent_slug );
261
+ }
262
+
263
+ /**
264
+ * @author Leo Fajardo (@leorw)
265
+ * @since 1.2.2
266
+ *
267
+ * @return bool
268
+ */
269
+ function has_menu() {
270
+ return $this->_menu_exists;
271
+ }
272
+
273
+ /**
274
+ * @author Vova Feldman (@svovaf)
275
+ * @since 2.0.0
276
+ *
277
+ * @return bool
278
+ */
279
+ function has_network_menu() {
280
+ return $this->_network_menu_exists;
281
+ }
282
+
283
+ /**
284
+ * @author Vova Feldman (@svovaf)
285
+ * @since 1.1.3
286
+ *
287
+ * @param string $id
288
+ * @param bool $default
289
+ * @param bool $ignore_menu_existence Since 1.2.2.7 If true, check if the submenu item visible even if there's no parent menu.
290
+ *
291
+ * @return bool
292
+ */
293
+ function is_submenu_item_visible( $id, $default = true, $ignore_menu_existence = false ) {
294
+ if ( ! $ignore_menu_existence && ! $this->has_menu() ) {
295
+ return false;
296
+ }
297
+
298
+ return fs_apply_filter(
299
+ $this->_module_unique_affix,
300
+ 'is_submenu_visible',
301
+ $this->get_bool_option( $this->_default_submenu_items, $id, $default ),
302
+ $id
303
+ );
304
+ }
305
+
306
+ /**
307
+ * Calculates admin settings menu slug.
308
+ * If plugin's menu slug is a file (e.g. CPT), uses plugin's slug as the menu slug.
309
+ *
310
+ * @author Vova Feldman (@svovaf)
311
+ * @since 1.1.3
312
+ *
313
+ * @param string $page
314
+ *
315
+ * @return string
316
+ */
317
+ function get_slug( $page = '' ) {
318
+ return ( ( false === strpos( $this->_menu_slug, '.php?' ) ) ?
319
+ $this->_menu_slug :
320
+ $this->_module_unique_affix ) . ( empty( $page ) ? '' : ( '-' . $page ) );
321
+ }
322
+
323
+ /**
324
+ * @author Vova Feldman (@svovaf)
325
+ * @since 1.1.3
326
+ *
327
+ * @return string
328
+ */
329
+ function get_parent_slug() {
330
+ return $this->_parent_slug;
331
+ }
332
+
333
+ /**
334
+ * @author Vova Feldman (@svovaf)
335
+ * @since 1.1.3
336
+ *
337
+ * @return string
338
+ */
339
+ function get_type() {
340
+ return $this->_type;
341
+ }
342
+
343
+ /**
344
+ * @author Vova Feldman (@svovaf)
345
+ * @since 1.1.3
346
+ *
347
+ * @return bool
348
+ */
349
+ function is_cpt() {
350
+ return ( 0 === strpos( $this->_menu_slug, 'edit.php?post_type=' ) ||
351
+ // Back compatibility.
352
+ 'cpt' === $this->_type
353
+ );
354
+ }
355
+
356
+ /**
357
+ * @author Vova Feldman (@svovaf)
358
+ * @since 1.1.3
359
+ *
360
+ * @return string
361
+ */
362
+ function get_parent_type() {
363
+ return $this->_parent_type;
364
+ }
365
+
366
+ /**
367
+ * @author Vova Feldman (@svovaf)
368
+ * @since 1.1.3
369
+ *
370
+ * @return string
371
+ */
372
+ function get_raw_slug() {
373
+ return $this->_menu_slug;
374
+ }
375
+
376
+ /**
377
+ * Get plugin's original menu slug.
378
+ *
379
+ * @author Vova Feldman (@svovaf)
380
+ * @since 1.1.3
381
+ *
382
+ * @return string
383
+ */
384
+ function get_original_menu_slug() {
385
+ if ( 'cpt' === $this->_type ) {
386
+ return add_query_arg( array(
387
+ 'post_type' => $this->_menu_slug
388
+ ), 'edit.php' );
389
+ }
390
+
391
+ if ( false === strpos( $this->_menu_slug, '.php?' ) ) {
392
+ return $this->_menu_slug;
393
+ } else {
394
+ return $this->_module_unique_affix;
395
+ }
396
+ }
397
+
398
+ /**
399
+ * @author Vova Feldman (@svovaf)
400
+ * @since 1.1.3
401
+ *
402
+ * @return string
403
+ */
404
+ function get_top_level_menu_slug() {
405
+ return $this->has_custom_parent() ?
406
+ $this->get_parent_slug() :
407
+ $this->get_raw_slug();
408
+ }
409
+
410
+ /**
411
+ * Is user on plugin's admin activation page.
412
+ *
413
+ * @author Vova Feldman (@svovaf)
414
+ * @since 1.0.8
415
+ *
416
+ * @return bool
417
+ */
418
+ function is_main_settings_page() {
419
+ if ( $this->_menu_exists &&
420
+ ( fs_is_plugin_page( $this->_menu_slug ) || fs_is_plugin_page( $this->_module_unique_affix ) )
421
+ ) {
422
+ /**
423
+ * Module has a settings menu and the context page is the main settings page, so assume it's in
424
+ * activation (doesn't really check if already opted-in/skipped or not).
425
+ *
426
+ * @since 1.2.2
427
+ */
428
+ return true;
429
+ }
430
+
431
+ global $pagenow;
432
+ if ( ( WP_FS__MODULE_TYPE_THEME === $this->_module_type ) && Freemius::is_themes_page() ) {
433
+ /**
434
+ * In activation only when show_optin query string param is given.
435
+ *
436
+ * @since 1.2.2
437
+ */
438
+ return fs_request_get_bool( $this->_module_unique_affix . '_show_optin' );
439
+ }
440
+
441
+ return false;
442
+ }
443
+
444
+ #region Submenu Override
445
+
446
+ /**
447
+ * Override submenu's action.
448
+ *
449
+ * @author Vova Feldman (@svovaf)
450
+ * @since 1.1.0
451
+ *
452
+ * @param string $parent_slug
453
+ * @param string $menu_slug
454
+ * @param callable $function
455
+ *
456
+ * @return false|string If submenu exist, will return the hook name.
457
+ */
458
+ function override_submenu_action( $parent_slug, $menu_slug, $function ) {
459
+ global $submenu;
460
+
461
+ $menu_slug = plugin_basename( $menu_slug );
462
+ $parent_slug = plugin_basename( $parent_slug );
463
+
464
+ if ( ! isset( $submenu[ $parent_slug ] ) ) {
465
+ // Parent menu not exist.
466
+ return false;
467
+ }
468
+
469
+ $found_submenu_item = false;
470
+ foreach ( $submenu[ $parent_slug ] as $submenu_item ) {
471
+ if ( $menu_slug === $submenu_item[2] ) {
472
+ $found_submenu_item = $submenu_item;
473
+ break;
474
+ }
475
+ }
476
+
477
+ if ( false === $found_submenu_item ) {
478
+ // Submenu item not found.
479
+ return false;
480
+ }
481
+
482
+ // Remove current function.
483
+ $hookname = get_plugin_page_hookname( $menu_slug, $parent_slug );
484
+ remove_all_actions( $hookname );
485
+
486
+ // Attach new action.
487
+ add_action( $hookname, $function );
488
+
489
+ return $hookname;
490
+ }
491
+
492
+ #endregion Submenu Override
493
+
494
+ #region Top level menu Override
495
+
496
+ /**
497
+ * Find plugin's admin dashboard main menu item.
498
+ *
499
+ * @author Vova Feldman (@svovaf)
500
+ * @since 1.0.2
501
+ *
502
+ * @return string[]|false
503
+ */
504
+ private function find_top_level_menu() {
505
+ global $menu;
506
+
507
+ $position = - 1;
508
+ $found_menu = false;
509
+
510
+ $menu_slug = $this->get_raw_slug();
511
+
512
+ $hook_name = get_plugin_page_hookname( $menu_slug, '' );
513
+ foreach ( $menu as $pos => $m ) {
514
+ if ( $menu_slug === $m[2] ) {
515
+ $position = $pos;
516
+ $found_menu = $m;
517
+ break;
518
+ }
519
+ }
520
+
521
+ if ( false === $found_menu ) {
522
+ return false;
523
+ }
524
+
525
+ return array(
526
+ 'menu' => $found_menu,
527
+ 'position' => $position,
528
+ 'hook_name' => $hook_name
529
+ );
530
+ }
531
+
532
+ /**
533
+ * Find plugin's admin dashboard main submenu item.
534
+ *
535
+ * @author Vova Feldman (@svovaf)
536
+ * @since 1.2.1.6
537
+ *
538
+ * @return array|false
539
+ */
540
+ private function find_main_submenu() {
541
+ global $submenu;
542
+
543
+ $top_level_menu_slug = $this->get_top_level_menu_slug();
544
+
545
+ if ( ! isset( $submenu[ $top_level_menu_slug ] ) ) {
546
+ return false;
547
+ }
548
+
549
+ $submenu_slug = $this->get_raw_slug();
550
+
551
+ $position = - 1;
552
+ $found_submenu = false;
553
+
554
+ $hook_name = get_plugin_page_hookname( $submenu_slug, '' );
555
+
556
+ foreach ( $submenu[ $top_level_menu_slug ] as $pos => $sub ) {
557
+ if ( $submenu_slug === $sub[2] ) {
558
+ $position = $pos;
559
+ $found_submenu = $sub;
560
+ }
561
+ }
562
+
563
+ if ( false === $found_submenu ) {
564
+ return false;
565
+ }
566
+
567
+ return array(
568
+ 'menu' => $found_submenu,
569
+ 'parent_slug' => $top_level_menu_slug,
570
+ 'position' => $position,
571
+ 'hook_name' => $hook_name
572
+ );
573
+ }
574
+
575
+ /**
576
+ * Remove all sub-menu items.
577
+ *
578
+ * @author Vova Feldman (@svovaf)
579
+ * @since 1.0.7
580
+ *
581
+ * @return bool If submenu with plugin's menu slug was found.
582
+ */
583
+ private function remove_all_submenu_items() {
584
+ global $submenu;
585
+
586
+ $menu_slug = $this->get_raw_slug();
587
+
588
+ if ( ! isset( $submenu[ $menu_slug ] ) ) {
589
+ return false;
590
+ }
591
+
592
+ /**
593
+ * This method is NOT executed for WordPress.org themes.
594
+ * Since we maintain only one version of the SDK we added this small
595
+ * hack to avoid the error from Theme Check since it's a false-positive.
596
+ *
597
+ * @author Vova Feldman (@svovaf)
598
+ * @since 1.2.2.7
599
+ */
600
+ $submenu_ref = &$submenu;
601
+ $submenu_ref[ $menu_slug ] = array();
602
+
603
+ return true;
604
+ }
605
+
606
+ /**
607
+ *
608
+ * @author Vova Feldman (@svovaf)
609
+ * @since 1.0.9
610
+ *
611
+ * @param bool $remove_top_level_menu
612
+ *
613
+ * @return false|array[string]mixed
614
+ */
615
+ function remove_menu_item( $remove_top_level_menu = false ) {
616
+ $this->_logger->entrance();
617
+
618
+ // Find main menu item.
619
+ $top_level_menu = $this->find_top_level_menu();
620
+
621
+ if ( false === $top_level_menu ) {
622
+ return false;
623
+ }
624
+
625
+ // Remove it with its actions.
626
+ remove_all_actions( $top_level_menu['hook_name'] );
627
+
628
+ // Remove all submenu items.
629
+ $this->remove_all_submenu_items();
630
+
631
+ if ( $remove_top_level_menu ) {
632
+ global $menu;
633
+ unset( $menu[ $top_level_menu['position'] ] );
634
+ }
635
+
636
+ return $top_level_menu;
637
+ }
638
+
639
+ /**
640
+ * Get module's main admin setting page URL.
641
+ *
642
+ * @todo This method was only tested for wp.org compliant themes with a submenu item. Need to test for plugins with top level, submenu, and CPT top level, menu items.
643
+ *
644
+ * @author Vova Feldman (@svovaf)
645
+ * @since 1.2.2.7
646
+ *
647
+ * @return string
648
+ */
649
+ function main_menu_url() {
650
+ $this->_logger->entrance();
651
+
652
+ if ( $this->_is_top_level ) {
653
+ $menu = $this->find_top_level_menu();
654
+ } else {
655
+ $menu = $this->find_main_submenu();
656
+ }
657
+
658
+ $parent_slug = isset( $menu['parent_slug'] ) ?
659
+ $menu['parent_slug'] :
660
+ 'admin.php';
661
+
662
+ return admin_url( $parent_slug . '?page=' . $menu['menu'][2] );
663
+ }
664
+
665
+ /**
666
+ * @author Vova Feldman (@svovaf)
667
+ * @since 1.1.4
668
+ *
669
+ * @param callable $function
670
+ *
671
+ * @return false|array[string]mixed
672
+ */
673
+ function override_menu_item( $function ) {
674
+ $found_menu = $this->remove_menu_item();
675
+
676
+ if ( false === $found_menu ) {
677
+ return false;
678
+ }
679
+
680
+ if ( ! $this->is_top_level() || ! $this->is_cpt() ) {
681
+ $menu_slug = plugin_basename( $this->get_slug() );
682
+
683
+ $hookname = get_plugin_page_hookname( $menu_slug, '' );
684
+
685
+ // Override menu action.
686
+ add_action( $hookname, $function );
687
+ } else {
688
+ global $menu;
689
+
690
+ // Remove original CPT menu.
691
+ unset( $menu[ $found_menu['position'] ] );
692
+
693
+ // Create new top-level menu action.
694
+ $hookname = self::add_page(
695
+ $found_menu['menu'][3],
696
+ $found_menu['menu'][0],
697
+ 'manage_options',
698
+ $this->get_slug(),
699
+ $function,
700
+ $found_menu['menu'][6],
701
+ $found_menu['position']
702
+ );
703
+ }
704
+
705
+ return $hookname;
706
+ }
707
+
708
+ /**
709
+ * Adds a counter to the module's top level menu item.
710
+ *
711
+ * @author Vova Feldman (@svovaf)
712
+ * @since 1.2.1.5
713
+ *
714
+ * @param int $counter
715
+ * @param string $class
716
+ */
717
+ function add_counter_to_menu_item( $counter = 1, $class = '' ) {
718
+ global $menu, $submenu;
719
+
720
+ $mask = '%s <span class="update-plugins %s count-%3$s" aria-hidden="true"><span>%3$s<span class="screen-reader-text">%3$s notifications</span></span></span>';
721
+
722
+ /**
723
+ * This method is NOT executed for WordPress.org themes.
724
+ * Since we maintain only one version of the SDK we added this small
725
+ * hack to avoid the error from Theme Check since it's a false-positive.
726
+ *
727
+ * @author Vova Feldman (@svovaf)
728
+ * @since 1.2.2.7
729
+ */
730
+ $menu_ref = &$menu;
731
+ $submenu_ref = &$submenu;
732
+
733
+ if ( $this->_is_top_level ) {
734
+ // Find main menu item.
735
+ $found_menu = $this->find_top_level_menu();
736
+
737
+ if ( false !== $found_menu ) {
738
+ // Override menu label.
739
+ $menu_ref[ $found_menu['position'] ][0] = sprintf(
740
+ $mask,
741
+ $found_menu['menu'][0],
742
+ $class,
743
+ $counter
744
+ );
745
+ }
746
+ } else {
747
+ $found_submenu = $this->find_main_submenu();
748
+
749
+ if ( false !== $found_submenu ) {
750
+ // Override menu label.
751
+ $submenu_ref[ $found_submenu['parent_slug'] ][ $found_submenu['position'] ][0] = sprintf(
752
+ $mask,
753
+ $found_submenu['menu'][0],
754
+ $class,
755
+ $counter
756
+ );
757
+ }
758
+ }
759
+ }
760
+
761
+ #endregion Top level menu Override
762
+
763
+ /**
764
+ * Add a top-level menu page.
765
+ *
766
+ * Note for WordPress.org Theme/Plugin reviewer:
767
+ *
768
+ * This is a replication of `add_menu_page()` to avoid Theme Check warning.
769
+ *
770
+ * Why?
771
+ * ====
772
+ * Freemius is an SDK for plugin and theme developers. Since the core
773
+ * of the SDK is relevant both for plugins and themes, for obvious reasons,
774
+ * we only develop and maintain one code base.
775
+ *
776
+ * This method will not run for wp.org themes (only plugins) since theme
777
+ * admin settings/options are now only allowed in the customizer.
778
+ *
779
+ * If you have any questions or need clarifications, please don't hesitate
780
+ * pinging me on slack, my username is @svovaf.
781
+ *
782
+ * @author Vova Feldman (@svovaf)
783
+ * @since 1.2.2
784
+ *
785
+ * @param string $page_title The text to be displayed in the title tags of the page when the menu is
786
+ * selected.
787
+ * @param string $menu_title The text to be used for the menu.
788
+ * @param string $capability The capability required for this menu to be displayed to the user.
789
+ * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu).
790
+ * @param callable|string $function The function to be called to output the content for this page.
791
+ * @param string $icon_url The URL to the icon to be used for this menu.
792
+ * * Pass a base64-encoded SVG using a data URI, which will be colored to
793
+ * match the color scheme. This should begin with
794
+ * 'data:image/svg+xml;base64,'.
795
+ * * Pass the name of a Dashicons helper class to use a font icon,
796
+ * e.g. 'dashicons-chart-pie'.
797
+ * * Pass 'none' to leave div.wp-menu-image empty so an icon can be added
798
+ * via CSS.
799
+ * @param int $position The position in the menu order this one should appear.
800
+ *
801
+ * @return string The resulting page's hook_suffix.
802
+ */
803
+ static function add_page(
804
+ $page_title,
805
+ $menu_title,
806
+ $capability,
807
+ $menu_slug,
808
+ $function = '',
809
+ $icon_url = '',
810
+ $position = null
811
+ ) {
812
+ $fn = 'add_menu' . '_page';
813
+
814
+ return $fn(
815
+ $page_title,
816
+ $menu_title,
817
+ $capability,
818
+ $menu_slug,
819
+ $function,
820
+ $icon_url,
821
+ $position
822
+ );
823
+ }
824
+
825
+ /**
826
+ * Add page and update menu instance settings.
827
+ *
828
+ * @author Vova Feldman (@svovaf)
829
+ * @since 2.0.0
830
+ *
831
+ * @param string $page_title
832
+ * @param string $menu_title
833
+ * @param string $capability
834
+ * @param string $menu_slug
835
+ * @param callable|string $function
836
+ * @param string $icon_url
837
+ * @param int|null $position
838
+ *
839
+ * @return string
840
+ */
841
+ function add_page_and_update(
842
+ $page_title,
843
+ $menu_title,
844
+ $capability,
845
+ $menu_slug,
846
+ $function = '',
847
+ $icon_url = '',
848
+ $position = null
849
+ ) {
850
+ $this->_menu_slug = $menu_slug;
851
+ $this->_is_top_level = true;
852
+ $this->_menu_exists = true;
853
+ $this->_network_menu_exists = true;
854
+
855
+ return self::add_page(
856
+ $page_title,
857
+ $menu_title,
858
+ $capability,
859
+ $menu_slug,
860
+ $function,
861
+ $icon_url,
862
+ $position
863
+ );
864
+ }
865
+
866
+ /**
867
+ * Add a submenu page.
868
+ *
869
+ * Note for WordPress.org Theme/Plugin reviewer:
870
+ *
871
+ * This is a replication of `add_submenu_page()` to avoid Theme Check warning.
872
+ *
873
+ * Why?
874
+ * ====
875
+ * Freemius is an SDK for plugin and theme developers. Since the core
876
+ * of the SDK is relevant both for plugins and themes, for obvious reasons,
877
+ * we only develop and maintain one code base.
878
+ *
879
+ * This method will not run for wp.org themes (only plugins) since theme
880
+ * admin settings/options are now only allowed in the customizer.
881
+ *
882
+ * If you have any questions or need clarifications, please don't hesitate
883
+ * pinging me on slack, my username is @svovaf.
884
+ *
885
+ * @author Vova Feldman (@svovaf)
886
+ * @since 1.2.2
887
+ *
888
+ * @param string $parent_slug The slug name for the parent menu (or the file name of a standard
889
+ * WordPress admin page).
890
+ * @param string $page_title The text to be displayed in the title tags of the page when the menu is
891
+ * selected.
892
+ * @param string $menu_title The text to be used for the menu.
893
+ * @param string $capability The capability required for this menu to be displayed to the user.
894
+ * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu).
895
+ * @param callable|string $function The function to be called to output the content for this page.
896
+ *
897
+ * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability
898
+ * required.
899
+ */
900
+ static function add_subpage(
901
+ $parent_slug,
902
+ $page_title,
903
+ $menu_title,
904
+ $capability,
905
+ $menu_slug,
906
+ $function = ''
907
+ ) {
908
+ $fn = 'add_submenu' . '_page';
909
+
910
+ return $fn( $parent_slug,
911
+ $page_title,
912
+ $menu_title,
913
+ $capability,
914
+ $menu_slug,
915
+ $function
916
+ );
917
+ }
918
+
919
+ /**
920
+ * Add sub page and update menu instance settings.
921
+ *
922
+ * @author Vova Feldman (@svovaf)
923
+ * @since 2.0.0
924
+ *
925
+ * @param string $parent_slug
926
+ * @param string $page_title
927
+ * @param string $menu_title
928
+ * @param string $capability
929
+ * @param string $menu_slug
930
+ * @param callable|string $function
931
+ *
932
+ * @return string
933
+ */
934
+ function add_subpage_and_update(
935
+ $parent_slug,
936
+ $page_title,
937
+ $menu_title,
938
+ $capability,
939
+ $menu_slug,
940
+ $function = ''
941
+ ) {
942
+ $this->_menu_slug = $menu_slug;
943
+ $this->_parent_slug = $parent_slug;
944
+ $this->_is_top_level = false;
945
+ $this->_menu_exists = true;
946
+ $this->_network_menu_exists = true;
947
+
948
+ return self::add_subpage(
949
+ $parent_slug,
950
+ $page_title,
951
+ $menu_title,
952
+ $capability,
953
+ $menu_slug,
954
+ $function
955
+ );
956
+ }
957
  }
freemius/includes/managers/class-fs-cache-manager.php CHANGED
@@ -1,326 +1,326 @@
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.1.6
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- class FS_Cache_Manager {
14
- /**
15
- * @var FS_Option_Manager
16
- */
17
- private $_options;
18
- /**
19
- * @var FS_Logger
20
- */
21
- private $_logger;
22
-
23
- /**
24
- * @var FS_Cache_Manager[]
25
- */
26
- private static $_MANAGERS = array();
27
-
28
- /**
29
- * @author Vova Feldman (@svovaf)
30
- * @since 1.1.3
31
- *
32
- * @param string $id
33
- */
34
- private function __construct( $id ) {
35
- $this->_logger = FS_Logger::get_logger( WP_FS__SLUG . '_cach_mngr_' . $id, WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK );
36
-
37
- $this->_logger->entrance();
38
- $this->_logger->log( 'id = ' . $id );
39
-
40
- $this->_options = FS_Option_Manager::get_manager( $id, true, true );
41
- }
42
-
43
- /**
44
- * @author Vova Feldman (@svovaf)
45
- * @since 1.1.6
46
- *
47
- * @param $id
48
- *
49
- * @return FS_Cache_Manager
50
- */
51
- static function get_manager( $id ) {
52
- $id = strtolower( $id );
53
-
54
- if ( ! isset( self::$_MANAGERS[ $id ] ) ) {
55
- self::$_MANAGERS[ $id ] = new FS_Cache_Manager( $id );
56
- }
57
-
58
- return self::$_MANAGERS[ $id ];
59
- }
60
-
61
- /**
62
- * @author Vova Feldman (@svovaf)
63
- * @since 1.1.6
64
- *
65
- * @return bool
66
- */
67
- function is_empty() {
68
- $this->_logger->entrance();
69
-
70
- return $this->_options->is_empty();
71
- }
72
-
73
- /**
74
- * @author Vova Feldman (@svovaf)
75
- * @since 1.1.6
76
- */
77
- function clear() {
78
- $this->_logger->entrance();
79
-
80
- $this->_options->clear( true );
81
- }
82
-
83
- /**
84
- * Delete cache manager from DB.
85
- *
86
- * @author Vova Feldman (@svovaf)
87
- * @since 1.0.9
88
- */
89
- function delete() {
90
- $this->_options->delete();
91
- }
92
-
93
- /**
94
- * Check if there's a cached item.
95
- *
96
- * @author Vova Feldman (@svovaf)
97
- * @since 1.1.6
98
- *
99
- * @param string $key
100
- *
101
- * @return bool
102
- */
103
- function has( $key ) {
104
- $cache_entry = $this->_options->get_option( $key, false );
105
-
106
- return ( is_object( $cache_entry ) &&
107
- isset( $cache_entry->timestamp ) &&
108
- is_numeric( $cache_entry->timestamp )
109
- );
110
- }
111
-
112
- /**
113
- * Check if there's a valid cached item.
114
- *
115
- * @author Vova Feldman (@svovaf)
116
- * @since 1.1.6
117
- *
118
- * @param string $key
119
- * @param null|int $expiration Since 1.2.2.7
120
- *
121
- * @return bool
122
- */
123
- function has_valid( $key, $expiration = null ) {
124
- $cache_entry = $this->_options->get_option( $key, false );
125
-
126
- $is_valid = ( is_object( $cache_entry ) &&
127
- isset( $cache_entry->timestamp ) &&
128
- is_numeric( $cache_entry->timestamp ) &&
129
- $cache_entry->timestamp > WP_FS__SCRIPT_START_TIME
130
- );
131
-
132
- if ( $is_valid &&
133
- is_numeric( $expiration ) &&
134
- isset( $cache_entry->created ) &&
135
- is_numeric( $cache_entry->created ) &&
136
- $cache_entry->created + $expiration < WP_FS__SCRIPT_START_TIME
137
- ) {
138
- /**
139
- * Even if the cache is still valid, since we are checking for validity
140
- * with an explicit expiration period, if the period has past, return
141
- * `false` as if the cache is invalid.
142
- *
143
- * @since 1.2.2.7
144
- */
145
- $is_valid = false;
146
- }
147
-
148
- return $is_valid;
149
- }
150
-
151
- /**
152
- * @author Vova Feldman (@svovaf)
153
- * @since 1.1.6
154
- *
155
- * @param string $key
156
- * @param mixed $default
157
- *
158
- * @return mixed
159
- */
160
- function get( $key, $default = null ) {
161
- $this->_logger->entrance( 'key = ' . $key );
162
-
163
- $cache_entry = $this->_options->get_option( $key, false );
164
-
165
- if ( is_object( $cache_entry ) &&
166
- isset( $cache_entry->timestamp ) &&
167
- is_numeric( $cache_entry->timestamp )
168
- ) {
169
- return $cache_entry->result;
170
- }
171
-
172
- return is_object( $default ) ? clone $default : $default;
173
- }
174
-
175
- /**
176
- * @author Vova Feldman (@svovaf)
177
- * @since 1.1.6
178
- *
179
- * @param string $key
180
- * @param mixed $default
181
- *
182
- * @return mixed
183
- */
184
- function get_valid( $key, $default = null ) {
185
- $this->_logger->entrance( 'key = ' . $key );
186
-
187
- $cache_entry = $this->_options->get_option( $key, false );
188
-
189
- if ( is_object( $cache_entry ) &&
190
- isset( $cache_entry->timestamp ) &&
191
- is_numeric( $cache_entry->timestamp ) &&
192
- $cache_entry->timestamp > WP_FS__SCRIPT_START_TIME
193
- ) {
194
- return $cache_entry->result;
195
- }
196
-
197
- return is_object( $default ) ? clone $default : $default;
198
- }
199
-
200
- /**
201
- * @author Vova Feldman (@svovaf)
202
- * @since 1.1.6
203
- *
204
- * @param string $key
205
- * @param mixed $value
206
- * @param int $expiration
207
- * @param int $created Since 2.0.0 Cache creation date.
208
- */
209
- function set( $key, $value, $expiration = WP_FS__TIME_24_HOURS_IN_SEC, $created = WP_FS__SCRIPT_START_TIME ) {
210
- $this->_logger->entrance( 'key = ' . $key );
211
-
212
- $cache_entry = new stdClass();
213
-
214
- $cache_entry->result = $value;
215
- $cache_entry->created = $created;
216
- $cache_entry->timestamp = $created + $expiration;
217
- $this->_options->set_option( $key, $cache_entry, true );
218
- }
219
-
220
- /**
221
- * Get cached record expiration, or false if not cached or expired.
222
- *
223
- * @author Vova Feldman (@svovaf)
224
- * @since 1.1.7.3
225
- *
226
- * @param string $key
227
- *
228
- * @return bool|int
229
- */
230
- function get_record_expiration( $key ) {
231
- $this->_logger->entrance( 'key = ' . $key );
232
-
233
- $cache_entry = $this->_options->get_option( $key, false );
234
-
235
- if ( is_object( $cache_entry ) &&
236
- isset( $cache_entry->timestamp ) &&
237
- is_numeric( $cache_entry->timestamp ) &&
238
- $cache_entry->timestamp > WP_FS__SCRIPT_START_TIME
239
- ) {
240
- return $cache_entry->timestamp;
241
- }
242
-
243
- return false;
244
- }
245
-
246
- /**
247
- * Purge cached item.
248
- *
249
- * @author Vova Feldman (@svovaf)
250
- * @since 1.1.6
251
- *
252
- * @param string $key
253
- */
254
- function purge( $key ) {
255
- $this->_logger->entrance( 'key = ' . $key );
256
-
257
- $this->_options->unset_option( $key, true );
258
- }
259
-
260
- /**
261
- * Extend cached item caching period.
262
- *
263
- * @author Vova Feldman (@svovaf)
264
- * @since 2.0.0
265
- *
266
- * @param string $key
267
- * @param int $expiration
268
- *
269
- * @return bool
270
- */
271
- function update_expiration( $key, $expiration = WP_FS__TIME_24_HOURS_IN_SEC ) {
272
- $this->_logger->entrance( 'key = ' . $key );
273
-
274
- $cache_entry = $this->_options->get_option( $key, false );
275
-
276
- if ( ! is_object( $cache_entry ) ||
277
- ! isset( $cache_entry->timestamp ) ||
278
- ! is_numeric( $cache_entry->timestamp )
279
- ) {
280
- return false;
281
- }
282
-
283
- $this->set( $key, $cache_entry->result, $expiration, $cache_entry->created );
284
-
285
- return true;
286
- }
287
-
288
- /**
289
- * Set cached item as expired.
290
- *
291
- * @author Vova Feldman (@svovaf)
292
- * @since 1.2.2.7
293
- *
294
- * @param string $key
295
- */
296
- function expire( $key ) {
297
- $this->_logger->entrance( 'key = ' . $key );
298
-
299
- $cache_entry = $this->_options->get_option( $key, false );
300
-
301
- if ( is_object( $cache_entry ) &&
302
- isset( $cache_entry->timestamp ) &&
303
- is_numeric( $cache_entry->timestamp )
304
- ) {
305
- // Set to expired.
306
- $cache_entry->timestamp = WP_FS__SCRIPT_START_TIME;
307
- $this->_options->set_option( $key, $cache_entry, true );
308
- }
309
- }
310
-
311
- #--------------------------------------------------------------------------------
312
- #region Migration
313
- #--------------------------------------------------------------------------------
314
-
315
- /**
316
- * Migrate options from site level.
317
- *
318
- * @author Vova Feldman (@svovaf)
319
- * @since 2.0.0
320
- */
321
- function migrate_to_network() {
322
- $this->_options->migrate_to_network();
323
- }
324
-
325
- #endregion
326
  }
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.1.6
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ class FS_Cache_Manager {
14
+ /**
15
+ * @var FS_Option_Manager
16
+ */
17
+ private $_options;
18
+ /**
19
+ * @var FS_Logger
20
+ */
21
+ private $_logger;
22
+
23
+ /**
24
+ * @var FS_Cache_Manager[]
25
+ */
26
+ private static $_MANAGERS = array();
27
+
28
+ /**
29
+ * @author Vova Feldman (@svovaf)
30
+ * @since 1.1.3
31
+ *
32
+ * @param string $id
33
+ */
34
+ private function __construct( $id ) {
35
+ $this->_logger = FS_Logger::get_logger( WP_FS__SLUG . '_cach_mngr_' . $id, WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK );
36
+
37
+ $this->_logger->entrance();
38
+ $this->_logger->log( 'id = ' . $id );
39
+
40
+ $this->_options = FS_Option_Manager::get_manager( $id, true, true );
41
+ }
42
+
43
+ /**
44
+ * @author Vova Feldman (@svovaf)
45
+ * @since 1.1.6
46
+ *
47
+ * @param $id
48
+ *
49
+ * @return FS_Cache_Manager
50
+ */
51
+ static function get_manager( $id ) {
52
+ $id = strtolower( $id );
53
+
54
+ if ( ! isset( self::$_MANAGERS[ $id ] ) ) {
55
+ self::$_MANAGERS[ $id ] = new FS_Cache_Manager( $id );
56
+ }
57
+
58
+ return self::$_MANAGERS[ $id ];
59
+ }
60
+
61
+ /**
62
+ * @author Vova Feldman (@svovaf)
63
+ * @since 1.1.6
64
+ *
65
+ * @return bool
66
+ */
67
+ function is_empty() {
68
+ $this->_logger->entrance();
69
+
70
+ return $this->_options->is_empty();
71
+ }
72
+
73
+ /**
74
+ * @author Vova Feldman (@svovaf)
75
+ * @since 1.1.6
76
+ */
77
+ function clear() {
78
+ $this->_logger->entrance();
79
+
80
+ $this->_options->clear( true );
81
+ }
82
+
83
+ /**
84
+ * Delete cache manager from DB.
85
+ *
86
+ * @author Vova Feldman (@svovaf)
87
+ * @since 1.0.9
88
+ */
89
+ function delete() {
90
+ $this->_options->delete();
91
+ }
92
+
93
+ /**
94
+ * Check if there's a cached item.
95
+ *
96
+ * @author Vova Feldman (@svovaf)
97
+ * @since 1.1.6
98
+ *
99
+ * @param string $key
100
+ *
101
+ * @return bool
102
+ */
103
+ function has( $key ) {
104
+ $cache_entry = $this->_options->get_option( $key, false );
105
+
106
+ return ( is_object( $cache_entry ) &&
107
+ isset( $cache_entry->timestamp ) &&
108
+ is_numeric( $cache_entry->timestamp )
109
+ );
110
+ }
111
+
112
+ /**
113
+ * Check if there's a valid cached item.
114
+ *
115
+ * @author Vova Feldman (@svovaf)
116
+ * @since 1.1.6
117
+ *
118
+ * @param string $key
119
+ * @param null|int $expiration Since 1.2.2.7
120
+ *
121
+ * @return bool
122
+ */
123
+ function has_valid( $key, $expiration = null ) {
124
+ $cache_entry = $this->_options->get_option( $key, false );
125
+
126
+ $is_valid = ( is_object( $cache_entry ) &&
127
+ isset( $cache_entry->timestamp ) &&
128
+ is_numeric( $cache_entry->timestamp ) &&
129
+ $cache_entry->timestamp > WP_FS__SCRIPT_START_TIME
130
+ );
131
+
132
+ if ( $is_valid &&
133
+ is_numeric( $expiration ) &&
134
+ isset( $cache_entry->created ) &&
135
+ is_numeric( $cache_entry->created ) &&
136
+ $cache_entry->created + $expiration < WP_FS__SCRIPT_START_TIME
137
+ ) {
138
+ /**
139
+ * Even if the cache is still valid, since we are checking for validity
140
+ * with an explicit expiration period, if the period has past, return
141
+ * `false` as if the cache is invalid.
142
+ *
143
+ * @since 1.2.2.7
144
+ */
145
+ $is_valid = false;
146
+ }
147
+
148
+ return $is_valid;
149
+ }
150
+
151
+ /**
152
+ * @author Vova Feldman (@svovaf)
153
+ * @since 1.1.6
154
+ *
155
+ * @param string $key
156
+ * @param mixed $default
157
+ *
158
+ * @return mixed
159
+ */
160
+ function get( $key, $default = null ) {
161
+ $this->_logger->entrance( 'key = ' . $key );
162
+
163
+ $cache_entry = $this->_options->get_option( $key, false );
164
+
165
+ if ( is_object( $cache_entry ) &&
166
+ isset( $cache_entry->timestamp ) &&
167
+ is_numeric( $cache_entry->timestamp )
168
+ ) {
169
+ return $cache_entry->result;
170
+ }
171
+
172
+ return is_object( $default ) ? clone $default : $default;
173
+ }
174
+
175
+ /**
176
+ * @author Vova Feldman (@svovaf)
177
+ * @since 1.1.6
178
+ *
179
+ * @param string $key
180
+ * @param mixed $default
181
+ *
182
+ * @return mixed
183
+ */
184
+ function get_valid( $key, $default = null ) {
185
+ $this->_logger->entrance( 'key = ' . $key );
186
+
187
+ $cache_entry = $this->_options->get_option( $key, false );
188
+
189
+ if ( is_object( $cache_entry ) &&
190
+ isset( $cache_entry->timestamp ) &&
191
+ is_numeric( $cache_entry->timestamp ) &&
192
+ $cache_entry->timestamp > WP_FS__SCRIPT_START_TIME
193
+ ) {
194
+ return $cache_entry->result;
195
+ }
196
+
197
+ return is_object( $default ) ? clone $default : $default;
198
+ }
199
+
200
+ /**
201
+ * @author Vova Feldman (@svovaf)
202
+ * @since 1.1.6
203
+ *
204
+ * @param string $key
205
+ * @param mixed $value
206
+ * @param int $expiration
207
+ * @param int $created Since 2.0.0 Cache creation date.
208
+ */
209
+ function set( $key, $value, $expiration = WP_FS__TIME_24_HOURS_IN_SEC, $created = WP_FS__SCRIPT_START_TIME ) {
210
+ $this->_logger->entrance( 'key = ' . $key );
211
+
212
+ $cache_entry = new stdClass();
213
+
214
+ $cache_entry->result = $value;
215
+ $cache_entry->created = $created;
216
+ $cache_entry->timestamp = $created + $expiration;
217
+ $this->_options->set_option( $key, $cache_entry, true );
218
+ }
219
+
220
+ /**
221
+ * Get cached record expiration, or false if not cached or expired.
222
+ *
223
+ * @author Vova Feldman (@svovaf)
224
+ * @since 1.1.7.3
225
+ *
226
+ * @param string $key
227
+ *
228
+ * @return bool|int
229
+ */
230
+ function get_record_expiration( $key ) {
231
+ $this->_logger->entrance( 'key = ' . $key );
232
+
233
+ $cache_entry = $this->_options->get_option( $key, false );
234
+
235
+ if ( is_object( $cache_entry ) &&
236
+ isset( $cache_entry->timestamp ) &&
237
+ is_numeric( $cache_entry->timestamp ) &&
238
+ $cache_entry->timestamp > WP_FS__SCRIPT_START_TIME
239
+ ) {
240
+ return $cache_entry->timestamp;
241
+ }
242
+
243
+ return false;
244
+ }
245
+
246
+ /**
247
+ * Purge cached item.
248
+ *
249
+ * @author Vova Feldman (@svovaf)
250
+ * @since 1.1.6
251
+ *
252
+ * @param string $key
253
+ */
254
+ function purge( $key ) {
255
+ $this->_logger->entrance( 'key = ' . $key );
256
+
257
+ $this->_options->unset_option( $key, true );
258
+ }
259
+
260
+ /**
261
+ * Extend cached item caching period.
262
+ *
263
+ * @author Vova Feldman (@svovaf)
264
+ * @since 2.0.0
265
+ *
266
+ * @param string $key
267
+ * @param int $expiration
268
+ *
269
+ * @return bool
270
+ */
271
+ function update_expiration( $key, $expiration = WP_FS__TIME_24_HOURS_IN_SEC ) {
272
+ $this->_logger->entrance( 'key = ' . $key );
273
+
274
+ $cache_entry = $this->_options->get_option( $key, false );
275
+
276
+ if ( ! is_object( $cache_entry ) ||
277
+ ! isset( $cache_entry->timestamp ) ||
278
+ ! is_numeric( $cache_entry->timestamp )
279
+ ) {
280
+ return false;
281
+ }
282
+
283
+ $this->set( $key, $cache_entry->result, $expiration, $cache_entry->created );
284
+
285
+ return true;
286
+ }
287
+
288
+ /**
289
+ * Set cached item as expired.
290
+ *
291
+ * @author Vova Feldman (@svovaf)
292
+ * @since 1.2.2.7
293
+ *
294
+ * @param string $key
295
+ */
296
+ function expire( $key ) {
297
+ $this->_logger->entrance( 'key = ' . $key );
298
+
299
+ $cache_entry = $this->_options->get_option( $key, false );
300
+
301
+ if ( is_object( $cache_entry ) &&
302
+ isset( $cache_entry->timestamp ) &&
303
+ is_numeric( $cache_entry->timestamp )
304
+ ) {
305
+ // Set to expired.
306
+ $cache_entry->timestamp = WP_FS__SCRIPT_START_TIME;
307
+ $this->_options->set_option( $key, $cache_entry, true );
308
+ }
309
+ }
310
+
311
+ #--------------------------------------------------------------------------------
312
+ #region Migration
313
+ #--------------------------------------------------------------------------------
314
+
315
+ /**
316
+ * Migrate options from site level.
317
+ *
318
+ * @author Vova Feldman (@svovaf)
319
+ * @since 2.0.0
320
+ */
321
+ function migrate_to_network() {
322
+ $this->_options->migrate_to_network();
323
+ }
324
+
325
+ #endregion
326
  }
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/managers/class-fs-key-value-storage.php CHANGED
@@ -1,392 +1,392 @@
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
- * Class FS_Key_Value_Storage
15
- *
16
- * @property int $install_timestamp
17
- * @property int $activation_timestamp
18
- * @property int $sync_timestamp
19
- * @property object $sync_cron
20
- * @property int $install_sync_timestamp
21
- * @property array $connectivity_test
22
- * @property array $is_on
23
- * @property object $trial_plan
24
- * @property bool $has_trial_plan
25
- * @property bool $trial_promotion_shown
26
- * @property string $sdk_version
27
- * @property string $sdk_last_version
28
- * @property bool $sdk_upgrade_mode
29
- * @property bool $sdk_downgrade_mode
30
- * @property bool $plugin_upgrade_mode
31
- * @property bool $plugin_downgrade_mode
32
- * @property string $plugin_version
33
- * @property string $plugin_last_version
34
- * @property bool $is_plugin_new_install
35
- * @property bool $was_plugin_loaded
36
- * @property object $plugin_main_file
37
- * @property bool $prev_is_premium
38
- * @property array $is_anonymous
39
- * @property bool $is_pending_activation
40
- * @property bool $sticky_optin_added
41
- * @property object $uninstall_reason
42
- * @property object $subscription
43
- */
44
- class FS_Key_Value_Storage implements ArrayAccess, Iterator, Countable {
45
- /**
46
- * @var string
47
- */
48
- protected $_id;
49
-
50
- /**
51
- * @since 1.2.2
52
- *
53
- * @var string
54
- */
55
- protected $_secondary_id;
56
-
57
- /**
58
- * @since 2.0.0
59
- * @var int The ID of the blog that is associated with the current site level options.
60
- */
61
- private $_blog_id = 0;
62
-
63
- /**
64
- * @since 2.0.0
65
- * @var bool
66
- */
67
- private $_is_multisite_storage;
68
-
69
- /**
70
- * @var array
71
- */
72
- protected $_data;
73
-
74
- /**
75
- * @var FS_Key_Value_Storage[]
76
- */
77
- private static $_instances = array();
78
-
79
- /**
80
- * @var FS_Logger
81
- */
82
- protected $_logger;
83
-
84
- /**
85
- * @param string $id
86
- * @param string $secondary_id
87
- * @param bool $network_level_or_blog_id
88
- *
89
- * @return FS_Key_Value_Storage
90
- */
91
- static function instance( $id, $secondary_id, $network_level_or_blog_id = false ) {
92
- $key = $id . ':' . $secondary_id;
93
-
94
- if ( is_multisite() ) {
95
- if ( true === $network_level_or_blog_id ) {
96
- $key .= ':ms';
97
- } else if ( is_numeric( $network_level_or_blog_id ) && $network_level_or_blog_id > 0 ) {
98
- $key .= ":{$network_level_or_blog_id}";
99
- } else {
100
- $network_level_or_blog_id = get_current_blog_id();
101
-
102
- $key .= ":{$network_level_or_blog_id}";
103
- }
104
- }
105
-
106
- if ( ! isset( self::$_instances[ $key ] ) ) {
107
- self::$_instances[ $key ] = new FS_Key_Value_Storage( $id, $secondary_id, $network_level_or_blog_id );
108
- }
109
-
110
- return self::$_instances[ $key ];
111
- }
112
-
113
- protected function __construct( $id, $secondary_id, $network_level_or_blog_id = false ) {
114
- $this->_logger = FS_Logger::get_logger( WP_FS__SLUG . '_' . $secondary_id . '_' . $id, WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK );
115
-
116
- $this->_id = $id;
117
- $this->_secondary_id = $secondary_id;
118
-
119
- if ( is_multisite() ) {
120
- $this->_is_multisite_storage = ( true === $network_level_or_blog_id );
121
-
122
- if ( is_numeric( $network_level_or_blog_id ) ) {
123
- $this->_blog_id = $network_level_or_blog_id;
124
- }
125
- } else {
126
- $this->_is_multisite_storage = false;
127
- }
128
-
129
- $this->load();
130
- }
131
-
132
- protected function get_option_manager() {
133
- return FS_Option_Manager::get_manager(
134
- WP_FS__ACCOUNTS_OPTION_NAME,
135
- true,
136
- $this->_is_multisite_storage ?
137
- true :
138
- ( $this->_blog_id > 0 ? $this->_blog_id : false )
139
- );
140
- }
141
-
142
- protected function get_all_data() {
143
- return $this->get_option_manager()->get_option( $this->_id, array() );
144
- }
145
-
146
- /**
147
- * Load plugin data from local DB.
148
- *
149
- * @author Vova Feldman (@svovaf)
150
- * @since 1.0.7
151
- */
152
- function load() {
153
- $all_plugins_data = $this->get_all_data();
154
- $this->_data = isset( $all_plugins_data[ $this->_secondary_id ] ) ?
155
- $all_plugins_data[ $this->_secondary_id ] :
156
- array();
157
- }
158
-
159
- /**
160
- * @author Vova Feldman (@svovaf)
161
- * @since 1.0.7
162
- *
163
- * @param string $key
164
- * @param mixed $value
165
- * @param bool $flush
166
- */
167
- function store( $key, $value, $flush = true ) {
168
- if ( $this->_logger->is_on() ) {
169
- $this->_logger->entrance( $key . ' = ' . var_export( $value, true ) );
170
- }
171
-
172
- if ( array_key_exists( $key, $this->_data ) && $value === $this->_data[ $key ] ) {
173
- // No need to store data if the value wasn't changed.
174
- return;
175
- }
176
-
177
- $all_data = $this->get_all_data();
178
-
179
- $this->_data[ $key ] = $value;
180
-
181
- $all_data[ $this->_secondary_id ] = $this->_data;
182
-
183
- $options_manager = $this->get_option_manager();
184
- $options_manager->set_option( $this->_id, $all_data, $flush );
185
- }
186
-
187
- /**
188
- * @author Vova Feldman (@svovaf)
189
- * @since 2.0.0
190
- */
191
- function save() {
192
- $this->get_option_manager()->store();
193
- }
194
-
195
- /**
196
- * @author Vova Feldman (@svovaf)
197
- * @since 1.0.7
198
- *
199
- * @param bool $store
200
- * @param string[] $exceptions Set of keys to keep and not clear.
201
- */
202
- function clear_all( $store = true, $exceptions = array() ) {
203
- $new_data = array();
204
- foreach ( $exceptions as $key ) {
205
- if ( isset( $this->_data[ $key ] ) ) {
206
- $new_data[ $key ] = $this->_data[ $key ];
207
- }
208
- }
209
-
210
- $this->_data = $new_data;
211
-
212
- if ( $store ) {
213
- $all_data = $this->get_all_data();
214
- $all_data[ $this->_secondary_id ] = $this->_data;
215
- $options_manager = $this->get_option_manager();
216
- $options_manager->set_option( $this->_id, $all_data, true );
217
- }
218
- }
219
-
220
- /**
221
- * Delete key-value storage.
222
- *
223
- * @author Vova Feldman (@svovaf)
224
- * @since 1.0.9
225
- */
226
- function delete() {
227
- $this->_data = array();
228
-
229
- $all_data = $this->get_all_data();
230
- unset( $all_data[ $this->_secondary_id ] );
231
- $options_manager = $this->get_option_manager();
232
- $options_manager->set_option( $this->_id, $all_data, true );
233
- }
234
-
235
- /**
236
- * @author Vova Feldman (@svovaf)
237
- * @since 1.0.7
238
- *
239
- * @param string $key
240
- * @param bool $store
241
- */
242
- function remove( $key, $store = true ) {
243
- if ( ! array_key_exists( $key, $this->_data ) ) {
244
- return;
245
- }
246
-
247
- unset( $this->_data[ $key ] );
248
-
249
- if ( $store ) {
250
- $all_data = $this->get_all_data();
251
- $all_data[ $this->_secondary_id ] = $this->_data;
252
- $options_manager = $this->get_option_manager();
253
- $options_manager->set_option( $this->_id, $all_data, true );
254
- }
255
- }
256
-
257
- /**
258
- * @author Vova Feldman (@svovaf)
259
- * @since 1.0.7
260
- *
261
- * @param string $key
262
- * @param mixed $default
263
- *
264
- * @return bool|\FS_Plugin
265
- */
266
- function get( $key, $default = false ) {
267
- return array_key_exists( $key, $this->_data ) ?
268
- $this->_data[ $key ] :
269
- $default;
270
- }
271
-
272
- /**
273
- * @author Vova Feldman (@svovaf)
274
- * @since 2.0.0
275
- *
276
- * @return string
277
- */
278
- function get_secondary_id() {
279
- return $this->_secondary_id;
280
- }
281
-
282
-
283
- /* ArrayAccess + Magic Access (better for refactoring)
284
- -----------------------------------------------------------------------------------*/
285
- function __set( $k, $v ) {
286
- $this->store( $k, $v );
287
- }
288
-
289
- function __isset( $k ) {
290
- return array_key_exists( $k, $this->_data );
291
- }
292
-
293
- function __unset( $k ) {
294
- $this->remove( $k );
295
- }
296
-
297
- function __get( $k ) {
298
- return $this->get( $k, null );
299
- }
300
-
301
- function offsetSet( $k, $v ) {
302
- if ( is_null( $k ) ) {
303
- throw new Exception( 'Can\'t append value to request params.' );
304
- } else {
305
- $this->{$k} = $v;
306
- }
307
- }
308
-
309
- function offsetExists( $k ) {
310
- return array_key_exists( $k, $this->_data );
311
- }
312
-
313
- function offsetUnset( $k ) {
314
- unset( $this->$k );
315
- }
316
-
317
- function offsetGet( $k ) {
318
- return $this->get( $k, null );
319
- }
320
-
321
- /**
322
- * (PHP 5 &gt;= 5.0.0)<br/>
323
- * Return the current element
324
- *
325
- * @link http://php.net/manual/en/iterator.current.php
326
- * @return mixed Can return any type.
327
- */
328
- public function current() {
329
- return current( $this->_data );
330
- }
331
-
332
- /**
333
- * (PHP 5 &gt;= 5.0.0)<br/>
334
- * Move forward to next element
335
- *
336
- * @link http://php.net/manual/en/iterator.next.php
337
- * @return void Any returned value is ignored.
338
- */
339
- public function next() {
340
- next( $this->_data );
341
- }
342
-
343
- /**
344
- * (PHP 5 &gt;= 5.0.0)<br/>
345
- * Return the key of the current element
346
- *
347
- * @link http://php.net/manual/en/iterator.key.php
348
- * @return mixed scalar on success, or null on failure.
349
- */
350
- public function key() {
351
- return key( $this->_data );
352
- }
353
-
354
- /**
355
- * (PHP 5 &gt;= 5.0.0)<br/>
356
- * Checks if current position is valid
357
- *
358
- * @link http://php.net/manual/en/iterator.valid.php
359
- * @return boolean The return value will be casted to boolean and then evaluated.
360
- * Returns true on success or false on failure.
361
- */
362
- public function valid() {
363
- $key = key( $this->_data );
364
-
365
- return ( $key !== null && $key !== false );
366
- }
367
-
368
- /**
369
- * (PHP 5 &gt;= 5.0.0)<br/>
370
- * Rewind the Iterator to the first element
371
- *
372
- * @link http://php.net/manual/en/iterator.rewind.php
373
- * @return void Any returned value is ignored.
374
- */
375
- public function rewind() {
376
- reset( $this->_data );
377
- }
378
-
379
- /**
380
- * (PHP 5 &gt;= 5.1.0)<br/>
381
- * Count elements of an object
382
- *
383
- * @link http://php.net/manual/en/countable.count.php
384
- * @return int The custom count as an integer.
385
- * </p>
386
- * <p>
387
- * The return value is cast to an integer.
388
- */
389
- public function count() {
390
- return count( $this->_data );
391
- }
392
  }
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
+ * Class FS_Key_Value_Storage
15
+ *
16
+ * @property int $install_timestamp
17
+ * @property int $activation_timestamp
18
+ * @property int $sync_timestamp
19
+ * @property object $sync_cron
20
+ * @property int $install_sync_timestamp
21
+ * @property array $connectivity_test
22
+ * @property array $is_on
23
+ * @property object $trial_plan
24
+ * @property bool $has_trial_plan
25
+ * @property bool $trial_promotion_shown
26
+ * @property string $sdk_version
27
+ * @property string $sdk_last_version
28
+ * @property bool $sdk_upgrade_mode
29
+ * @property bool $sdk_downgrade_mode
30
+ * @property bool $plugin_upgrade_mode
31
+ * @property bool $plugin_downgrade_mode
32
+ * @property string $plugin_version
33
+ * @property string $plugin_last_version
34
+ * @property bool $is_plugin_new_install
35
+ * @property bool $was_plugin_loaded
36
+ * @property object $plugin_main_file
37
+ * @property bool $prev_is_premium
38
+ * @property array $is_anonymous
39
+ * @property bool $is_pending_activation
40
+ * @property bool $sticky_optin_added
41
+ * @property object $uninstall_reason
42
+ * @property object $subscription
43
+ */
44
+ class FS_Key_Value_Storage implements ArrayAccess, Iterator, Countable {
45
+ /**
46
+ * @var string
47
+ */
48
+ protected $_id;
49
+
50
+ /**
51
+ * @since 1.2.2
52
+ *
53
+ * @var string
54
+ */
55
+ protected $_secondary_id;
56
+
57
+ /**
58
+ * @since 2.0.0
59
+ * @var int The ID of the blog that is associated with the current site level options.
60
+ */
61
+ private $_blog_id = 0;
62
+
63
+ /**
64
+ * @since 2.0.0
65
+ * @var bool
66
+ */
67
+ private $_is_multisite_storage;
68
+
69
+ /**
70
+ * @var array
71
+ */
72
+ protected $_data;
73
+
74
+ /**
75
+ * @var FS_Key_Value_Storage[]
76
+ */
77
+ private static $_instances = array();
78
+
79
+ /**
80
+ * @var FS_Logger
81
+ */
82
+ protected $_logger;
83
+
84
+ /**
85
+ * @param string $id
86
+ * @param string $secondary_id
87
+ * @param bool $network_level_or_blog_id
88
+ *
89
+ * @return FS_Key_Value_Storage
90
+ */
91
+ static function instance( $id, $secondary_id, $network_level_or_blog_id = false ) {
92
+ $key = $id . ':' . $secondary_id;
93
+
94
+ if ( is_multisite() ) {
95
+ if ( true === $network_level_or_blog_id ) {
96
+ $key .= ':ms';
97
+ } else if ( is_numeric( $network_level_or_blog_id ) && $network_level_or_blog_id > 0 ) {
98
+ $key .= ":{$network_level_or_blog_id}";
99
+ } else {
100
+ $network_level_or_blog_id = get_current_blog_id();
101
+
102
+ $key .= ":{$network_level_or_blog_id}";
103
+ }
104
+ }
105
+
106
+ if ( ! isset( self::$_instances[ $key ] ) ) {
107
+ self::$_instances[ $key ] = new FS_Key_Value_Storage( $id, $secondary_id, $network_level_or_blog_id );
108
+ }
109
+
110
+ return self::$_instances[ $key ];
111
+ }
112
+
113
+ protected function __construct( $id, $secondary_id, $network_level_or_blog_id = false ) {
114
+ $this->_logger = FS_Logger::get_logger( WP_FS__SLUG . '_' . $secondary_id . '_' . $id, WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK );
115
+
116
+ $this->_id = $id;
117
+ $this->_secondary_id = $secondary_id;
118
+
119
+ if ( is_multisite() ) {
120
+ $this->_is_multisite_storage = ( true === $network_level_or_blog_id );
121
+
122
+ if ( is_numeric( $network_level_or_blog_id ) ) {
123
+ $this->_blog_id = $network_level_or_blog_id;
124
+ }
125
+ } else {
126
+ $this->_is_multisite_storage = false;
127
+ }
128
+
129
+ $this->load();
130
+ }
131
+
132
+ protected function get_option_manager() {
133
+ return FS_Option_Manager::get_manager(
134
+ WP_FS__ACCOUNTS_OPTION_NAME,
135
+ true,
136
+ $this->_is_multisite_storage ?
137
+ true :
138
+ ( $this->_blog_id > 0 ? $this->_blog_id : false )
139
+ );
140
+ }
141
+
142
+ protected function get_all_data() {
143
+ return $this->get_option_manager()->get_option( $this->_id, array() );
144
+ }
145
+
146
+ /**
147
+ * Load plugin data from local DB.
148
+ *
149
+ * @author Vova Feldman (@svovaf)
150
+ * @since 1.0.7
151
+ */
152
+ function load() {
153
+ $all_plugins_data = $this->get_all_data();
154
+ $this->_data = isset( $all_plugins_data[ $this->_secondary_id ] ) ?
155
+ $all_plugins_data[ $this->_secondary_id ] :
156
+ array();
157
+ }
158
+
159
+ /**
160
+ * @author Vova Feldman (@svovaf)
161
+ * @since 1.0.7
162
+ *
163
+ * @param string $key
164
+ * @param mixed $value
165
+ * @param bool $flush
166
+ */
167
+ function store( $key, $value, $flush = true ) {
168
+ if ( $this->_logger->is_on() ) {
169
+ $this->_logger->entrance( $key . ' = ' . var_export( $value, true ) );
170
+ }
171
+
172
+ if ( array_key_exists( $key, $this->_data ) && $value === $this->_data[ $key ] ) {
173
+ // No need to store data if the value wasn't changed.
174
+ return;
175
+ }
176
+
177
+ $all_data = $this->get_all_data();
178
+
179
+ $this->_data[ $key ] = $value;
180
+
181
+ $all_data[ $this->_secondary_id ] = $this->_data;
182
+
183
+ $options_manager = $this->get_option_manager();
184
+ $options_manager->set_option( $this->_id, $all_data, $flush );
185
+ }
186
+
187
+ /**
188
+ * @author Vova Feldman (@svovaf)
189
+ * @since 2.0.0
190
+ */
191
+ function save() {
192
+ $this->get_option_manager()->store();
193
+ }
194
+
195
+ /**
196
+ * @author Vova Feldman (@svovaf)
197
+ * @since 1.0.7
198
+ *
199
+ * @param bool $store
200
+ * @param string[] $exceptions Set of keys to keep and not clear.
201
+ */
202
+ function clear_all( $store = true, $exceptions = array() ) {
203
+ $new_data = array();
204
+ foreach ( $exceptions as $key ) {
205
+ if ( isset( $this->_data[ $key ] ) ) {
206
+ $new_data[ $key ] = $this->_data[ $key ];
207
+ }
208
+ }
209
+
210
+ $this->_data = $new_data;
211
+
212
+ if ( $store ) {
213
+ $all_data = $this->get_all_data();
214
+ $all_data[ $this->_secondary_id ] = $this->_data;
215
+ $options_manager = $this->get_option_manager();
216
+ $options_manager->set_option( $this->_id, $all_data, true );
217
+ }
218
+ }
219
+
220
+ /**
221
+ * Delete key-value storage.
222
+ *
223
+ * @author Vova Feldman (@svovaf)
224
+ * @since 1.0.9
225
+ */
226
+ function delete() {
227
+ $this->_data = array();
228
+
229
+ $all_data = $this->get_all_data();
230
+ unset( $all_data[ $this->_secondary_id ] );
231
+ $options_manager = $this->get_option_manager();
232
+ $options_manager->set_option( $this->_id, $all_data, true );
233
+ }
234
+
235
+ /**
236
+ * @author Vova Feldman (@svovaf)
237
+ * @since 1.0.7
238
+ *
239
+ * @param string $key
240
+ * @param bool $store
241
+ */
242
+ function remove( $key, $store = true ) {
243
+ if ( ! array_key_exists( $key, $this->_data ) ) {
244
+ return;
245
+ }
246
+
247
+ unset( $this->_data[ $key ] );
248
+
249
+ if ( $store ) {
250
+ $all_data = $this->get_all_data();
251
+ $all_data[ $this->_secondary_id ] = $this->_data;
252
+ $options_manager = $this->get_option_manager();
253
+ $options_manager->set_option( $this->_id, $all_data, true );
254
+ }
255
+ }
256
+
257
+ /**
258
+ * @author Vova Feldman (@svovaf)
259
+ * @since 1.0.7
260
+ *
261
+ * @param string $key
262
+ * @param mixed $default
263
+ *
264
+ * @return bool|\FS_Plugin
265
+ */
266
+ function get( $key, $default = false ) {
267
+ return array_key_exists( $key, $this->_data ) ?
268
+ $this->_data[ $key ] :
269
+ $default;
270
+ }
271
+
272
+ /**
273
+ * @author Vova Feldman (@svovaf)
274
+ * @since 2.0.0
275
+ *
276
+ * @return string
277
+ */
278
+ function get_secondary_id() {
279
+ return $this->_secondary_id;
280
+ }
281
+
282
+
283
+ /* ArrayAccess + Magic Access (better for refactoring)
284
+ -----------------------------------------------------------------------------------*/
285
+ function __set( $k, $v ) {
286
+ $this->store( $k, $v );
287
+ }
288
+
289
+ function __isset( $k ) {
290
+ return array_key_exists( $k, $this->_data );
291
+ }
292
+
293
+ function __unset( $k ) {
294
+ $this->remove( $k );
295
+ }
296
+
297
+ function __get( $k ) {
298
+ return $this->get( $k, null );
299
+ }
300
+
301
+ function offsetSet( $k, $v ) {
302
+ if ( is_null( $k ) ) {
303
+ throw new Exception( 'Can\'t append value to request params.' );
304
+ } else {
305
+ $this->{$k} = $v;
306
+ }
307
+ }
308
+
309
+ function offsetExists( $k ) {
310
+ return array_key_exists( $k, $this->_data );
311
+ }
312
+
313
+ function offsetUnset( $k ) {
314
+ unset( $this->$k );
315
+ }
316
+
317
+ function offsetGet( $k ) {
318
+ return $this->get( $k, null );
319
+ }
320
+
321
+ /**
322
+ * (PHP 5 &gt;= 5.0.0)<br/>
323
+ * Return the current element
324
+ *
325
+ * @link http://php.net/manual/en/iterator.current.php
326
+ * @return mixed Can return any type.
327
+ */
328
+ public function current() {
329
+ return current( $this->_data );
330
+ }
331
+
332
+ /**
333
+ * (PHP 5 &gt;= 5.0.0)<br/>
334
+ * Move forward to next element
335
+ *
336
+ * @link http://php.net/manual/en/iterator.next.php
337
+ * @return void Any returned value is ignored.
338
+ */
339
+ public function next() {
340
+ next( $this->_data );
341
+ }
342
+
343
+ /**
344
+ * (PHP 5 &gt;= 5.0.0)<br/>
345
+ * Return the key of the current element
346
+ *
347
+ * @link http://php.net/manual/en/iterator.key.php
348
+ * @return mixed scalar on success, or null on failure.
349
+ */
350
+ public function key() {
351
+ return key( $this->_data );
352
+ }
353
+
354
+ /**
355
+ * (PHP 5 &gt;= 5.0.0)<br/>
356
+ * Checks if current position is valid
357
+ *
358
+ * @link http://php.net/manual/en/iterator.valid.php
359
+ * @return boolean The return value will be casted to boolean and then evaluated.
360
+ * Returns true on success or false on failure.
361
+ */
362
+ public function valid() {
363
+ $key = key( $this->_data );
364
+
365
+ return ( $key !== null && $key !== false );
366
+ }
367
+
368
+ /**
369
+ * (PHP 5 &gt;= 5.0.0)<br/>
370
+ * Rewind the Iterator to the first element
371
+ *
372
+ * @link http://php.net/manual/en/iterator.rewind.php
373
+ * @return void Any returned value is ignored.
374
+ */
375
+ public function rewind() {
376
+ reset( $this->_data );
377
+ }
378
+
379
+ /**
380
+ * (PHP 5 &gt;= 5.1.0)<br/>
381
+ * Count elements of an object
382
+ *
383
+ * @link http://php.net/manual/en/countable.count.php
384
+ * @return int The custom count as an integer.
385
+ * </p>
386
+ * <p>
387
+ * The return value is cast to an integer.
388
+ */
389
+ public function count() {
390
+ return count( $this->_data );
391
+ }
392
  }
freemius/includes/managers/class-fs-option-manager.php CHANGED
@@ -1,490 +1,490 @@
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
- /**
14
- * 3-layer lazy options manager.
15
- * layer 3: Memory
16
- * layer 2: Cache (if there's any caching plugin and if WP_FS__DEBUG_SDK is FALSE)
17
- * layer 1: Database (options table). All options stored as one option record in the DB to reduce number of DB
18
- * queries.
19
- *
20
- * If load() is not explicitly called, starts as empty manager. Same thing about saving the data - you have to
21
- * explicitly call store().
22
- *
23
- * Class Freemius_Option_Manager
24
- */
25
- class FS_Option_Manager {
26
- /**
27
- * @var string
28
- */
29
- private $_id;
30
- /**
31
- * @var array|object
32
- */
33
- private $_options;
34
- /**
35
- * @var FS_Logger
36
- */
37
- private $_logger;
38
-
39
- /**
40
- * @since 2.0.0
41
- * @var int The ID of the blog that is associated with the current site level options.
42
- */
43
- private $_blog_id = 0;
44
-
45
- /**
46
- * @since 2.0.0
47
- * @var bool
48
- */
49
- private $_is_network_storage;
50
-
51
- /**
52
- * @var array[string]FS_Option_Manager {
53
- * @key string
54
- * @value FS_Option_Manager
55
- * }
56
- */
57
- private static $_MANAGERS = array();
58
-
59
- /**
60
- * @author Vova Feldman (@svovaf)
61
- * @since 1.0.3
62
- *
63
- * @param string $id
64
- * @param bool $load
65
- * @param bool|int $network_level_or_blog_id Since 2.0.0
66
- */
67
- private function __construct( $id, $load = false, $network_level_or_blog_id = false ) {
68
- $id = strtolower( $id );
69
-
70
- $this->_logger = FS_Logger::get_logger( WP_FS__SLUG . '_opt_mngr_' . $id, WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK );
71
-
72
- $this->_logger->entrance();
73
- $this->_logger->log( 'id = ' . $id );
74
-
75
- $this->_id = $id;
76
-
77
- if ( is_multisite() ) {
78
- $this->_is_network_storage = ( true === $network_level_or_blog_id );
79
-
80
- if ( is_numeric( $network_level_or_blog_id ) ) {
81
- $this->_blog_id = $network_level_or_blog_id;
82
- }
83
- } else {
84
- $this->_is_network_storage = false;
85
- }
86
-
87
- if ( $load ) {
88
- $this->load();
89
- }
90
- }
91
-
92
- /**
93
- * @author Vova Feldman (@svovaf)
94
- * @since 1.0.3
95
- *
96
- * @param string $id
97
- * @param bool $load
98
- * @param bool|int $network_level_or_blog_id Since 2.0.0
99
- *
100
- * @return FS_Option_Manager
101
- */
102
- static function get_manager( $id, $load = false, $network_level_or_blog_id = false ) {
103
- $key = strtolower( $id );
104
-
105
- if ( is_multisite() ) {
106
- if ( true === $network_level_or_blog_id ) {
107
- $key .= ':ms';
108
- } else if ( is_numeric( $network_level_or_blog_id ) && $network_level_or_blog_id > 0 ) {
109
- $key .= ":{$network_level_or_blog_id}";
110
- } else {
111
- $network_level_or_blog_id = get_current_blog_id();
112
-
113
- $key .= ":{$network_level_or_blog_id}";
114
- }
115
- }
116
-
117
- if ( ! isset( self::$_MANAGERS[ $key ] ) ) {
118
- self::$_MANAGERS[ $key ] = new FS_Option_Manager( $id, $load, $network_level_or_blog_id );
119
- } // If load required but not yet loaded, load.
120
- else if ( $load && ! self::$_MANAGERS[ $key ]->is_loaded() ) {
121
- self::$_MANAGERS[ $key ]->load();
122
- }
123
-
124
- return self::$_MANAGERS[ $key ];
125
- }
126
-
127
- /**
128
- * @author Vova Feldman (@svovaf)
129
- * @since 1.0.3
130
- *
131
- * @param bool $flush
132
- */
133
- function load( $flush = false ) {
134
- $this->_logger->entrance();
135
-
136
- $option_name = $this->get_option_manager_name();
137
-
138
- if ( $flush || ! isset( $this->_options ) ) {
139
- if ( isset( $this->_options ) ) {
140
- // Clear prev options.
141
- $this->clear();
142
- }
143
-
144
- $cache_group = $this->get_cache_group();
145
-
146
- if ( ! WP_FS__DEBUG_SDK ) {
147
-
148
- $this->_options = wp_cache_get(
149
- $option_name,
150
- $cache_group
151
- );
152
- }
153
-
154
- $cached = true;
155
-
156
- if ( empty( $this->_options ) ) {
157
- if ( $this->_is_network_storage ) {
158
- $this->_options = get_site_option( $option_name );
159
- } else if ( $this->_blog_id > 0 ) {
160
- $this->_options = get_blog_option( $this->_blog_id, $option_name );
161
- } else {
162
- $this->_options = get_option( $option_name );
163
- }
164
-
165
- if ( is_string( $this->_options ) ) {
166
- $this->_options = json_decode( $this->_options );
167
- }
168
-
169
- // $this->_logger->info('get_option = ' . var_export($this->_options, true));
170
-
171
- if ( false === $this->_options ) {
172
- $this->clear();
173
- }
174
-
175
- $cached = false;
176
- }
177
-
178
- if ( ! WP_FS__DEBUG_SDK && ! $cached ) {
179
- // Set non encoded cache.
180
- wp_cache_set( $option_name, $this->_options, $cache_group );
181
- }
182
- }
183
- }
184
-
185
- /**
186
- * @author Vova Feldman (@svovaf)
187
- * @since 1.0.3
188
- *
189
- * @return bool
190
- */
191
- function is_loaded() {
192
- return isset( $this->_options );
193
- }
194
-
195
- /**
196
- * @author Vova Feldman (@svovaf)
197
- * @since 1.0.3
198
- *
199
- * @return bool
200
- */
201
- function is_empty() {
202
- return ( $this->is_loaded() && false === $this->_options );
203
- }
204
-
205
- /**
206
- * @author Vova Feldman (@svovaf)
207
- * @since 1.0.6
208
- *
209
- * @param bool $flush
210
- */
211
- function clear( $flush = false ) {
212
- $this->_logger->entrance();
213
-
214
- $this->_options = array();
215
-
216
- if ( $flush ) {
217
- $this->store();
218
- }
219
- }
220
-
221
- /**
222
- * Delete options manager from DB.
223
- *
224
- * @author Vova Feldman (@svovaf)
225
- * @since 1.0.9
226
- */
227
- function delete() {
228
- $option_name = $this->get_option_manager_name();
229
-
230
- if ( $this->_is_network_storage ) {
231
- delete_site_option( $option_name );
232
- } else if ( $this->_blog_id > 0 ) {
233
- delete_blog_option( $this->_blog_id, $option_name );
234
- } else {
235
- delete_option( $option_name );
236
- }
237
- }
238
-
239
- /**
240
- * @author Vova Feldman (@svovaf)
241
- * @since 1.0.6
242
- *
243
- * @param string $option
244
- *
245
- * @return bool
246
- */
247
- function has_option( $option ) {
248
- return array_key_exists( $option, $this->_options );
249
- }
250
-
251
- /**
252
- * @author Vova Feldman (@svovaf)
253
- * @since 1.0.3
254
- *
255
- * @param string $option
256
- * @param mixed $default
257
- *
258
- * @return mixed
259
- */
260
- function get_option( $option, $default = null ) {
261
- $this->_logger->entrance( 'option = ' . $option );
262
-
263
- if ( ! $this->is_loaded() ) {
264
- $this->load();
265
- }
266
-
267
- if ( is_array( $this->_options ) ) {
268
- $value = isset( $this->_options[ $option ] ) ?
269
- $this->_options[ $option ] :
270
- $default;
271
- } else if ( is_object( $this->_options ) ) {
272
- $value = isset( $this->_options->{$option} ) ?
273
- $this->_options->{$option} :
274
- $default;
275
- } else {
276
- $value = $default;
277
- }
278
-
279
- /**
280
- * If it's an object, return a clone of the object, otherwise,
281
- * external changes of the object will actually change the value
282
- * of the object in the options manager which may lead to an unexpected
283
- * behaviour and data integrity when a store() call is triggered.
284
- *
285
- * Example:
286
- * $object1 = $options->get_option( 'object1' );
287
- * $object1->x = 123;
288
- *
289
- * $object2 = $options->get_option( 'object2' );
290
- * $object2->y = 'dummy';
291
- *
292
- * $options->set_option( 'object2', $object2, true );
293
- *
294
- * If we don't return a clone of option 'object1', setting 'object2'
295
- * will also store the updated value of 'object1' which is quite not
296
- * an expected behaviour.
297
- *
298
- * @author Vova Feldman
299
- */
300
- return is_object( $value ) ? clone $value : $value;
301
- }
302
-
303
- /**
304
- * @author Vova Feldman (@svovaf)
305
- * @since 1.0.3
306
- *
307
- * @param string $option
308
- * @param mixed $value
309
- * @param bool $flush
310
- */
311
- function set_option( $option, $value, $flush = false ) {
312
- $this->_logger->entrance( 'option = ' . $option );
313
-
314
- if ( ! $this->is_loaded() ) {
315
- $this->clear();
316
- }
317
-
318
- /**
319
- * If it's an object, store a clone of the object, otherwise,
320
- * external changes of the object will actually change the value
321
- * of the object in the options manager which may lead to an unexpected
322
- * behaviour and data integrity when a store() call is triggered.
323
- *
324
- * Example:
325
- * $object1 = new stdClass();
326
- * $object1->x = 123;
327
- *
328
- * $options->set_option( 'object1', $object1 );
329
- *
330
- * $object1->x = 456;
331
- *
332
- * $options->set_option( 'object2', $object2, true );
333
- *
334
- * If we don't set the option as a clone of option 'object1', setting 'object2'
335
- * will also store the updated value of 'object1' ($object1->x = 456 instead of
336
- * $object1->x = 123) which is quite not an expected behaviour.
337
- *
338
- * @author Vova Feldman
339
- */
340
- $copy = is_object( $value ) ? clone $value : $value;
341
-
342
- if ( is_array( $this->_options ) ) {
343
- $this->_options[ $option ] = $copy;
344
- } else if ( is_object( $this->_options ) ) {
345
- $this->_options->{$option} = $copy;
346
- }
347
-
348
- if ( $flush ) {
349
- $this->store();
350
- }
351
- }
352
-
353
- /**
354
- * Unset option.
355
- *
356
- * @author Vova Feldman (@svovaf)
357
- * @since 1.0.3
358
- *
359
- * @param string $option
360
- * @param bool $flush
361
- */
362
- function unset_option( $option, $flush = false ) {
363
- $this->_logger->entrance( 'option = ' . $option );
364
-
365
- if ( is_array( $this->_options ) ) {
366
- if ( ! isset( $this->_options[ $option ] ) ) {
367
- return;
368
- }
369
-
370
- unset( $this->_options[ $option ] );
371
-
372
- } else if ( is_object( $this->_options ) ) {
373
- if ( ! isset( $this->_options->{$option} ) ) {
374
- return;
375
- }
376
-
377
- unset( $this->_options->{$option} );
378
- }
379
-
380
- if ( $flush ) {
381
- $this->store();
382
- }
383
- }
384
-
385
- /**
386
- * Dump options to database.
387
- *
388
- * @author Vova Feldman (@svovaf)
389
- * @since 1.0.3
390
- */
391
- function store() {
392
- $this->_logger->entrance();
393
-
394
- $option_name = $this->get_option_manager_name();
395
-
396
- if ( $this->_logger->is_on() ) {
397
- $this->_logger->info( $option_name . ' = ' . var_export( $this->_options, true ) );
398
- }
399
-
400
- // Update DB.
401
- if ( $this->_is_network_storage ) {
402
- update_site_option( $option_name, $this->_options );
403
- } else if ( $this->_blog_id > 0 ) {
404
- update_blog_option( $this->_blog_id, $option_name, $this->_options );
405
- } else {
406
- update_option( $option_name, $this->_options );
407
- }
408
-
409
- if ( ! WP_FS__DEBUG_SDK ) {
410
- wp_cache_set( $option_name, $this->_options, $this->get_cache_group() );
411
- }
412
- }
413
-
414
- /**
415
- * Get options keys.
416
- *
417
- * @author Vova Feldman (@svovaf)
418
- * @since 1.0.3
419
- *
420
- * @return string[]
421
- */
422
- function get_options_keys() {
423
- if ( is_array( $this->_options ) ) {
424
- return array_keys( $this->_options );
425
- } else if ( is_object( $this->_options ) ) {
426
- return array_keys( get_object_vars( $this->_options ) );
427
- }
428
-
429
- return array();
430
- }
431
-
432
- #--------------------------------------------------------------------------------
433
- #region Migration
434
- #--------------------------------------------------------------------------------
435
-
436
- /**
437
- * Migrate options from site level.
438
- *
439
- * @author Vova Feldman (@svovaf)
440
- * @since 2.0.0
441
- */
442
- function migrate_to_network() {
443
- $site_options = FS_Option_Manager::get_manager($this->_id, true, false);
444
-
445
- $options = is_object( $site_options->_options ) ?
446
- get_object_vars( $site_options->_options ) :
447
- $site_options->_options;
448
-
449
- if ( ! empty( $options ) ) {
450
- foreach ( $options as $key => $val ) {
451
- $this->set_option( $key, $val, false );
452
- }
453
-
454
- $this->store();
455
- }
456
- }
457
-
458
- #endregion
459
-
460
- #--------------------------------------------------------------------------------
461
- #region Helper Methods
462
- #--------------------------------------------------------------------------------
463
-
464
- /**
465
- * @return string
466
- */
467
- private function get_option_manager_name() {
468
- return $this->_id;
469
- }
470
-
471
- /**
472
- * @author Vova Feldman (@svovaf)
473
- * @since 2.0.0
474
- *
475
- * @return string
476
- */
477
- private function get_cache_group() {
478
- $group = WP_FS__SLUG;
479
-
480
- if ( $this->_is_network_storage ) {
481
- $group .= '_ms';
482
- } else if ( $this->_blog_id > 0 ) {
483
- $group .= "_s{$this->_blog_id}";
484
- }
485
-
486
- return $group;
487
- }
488
-
489
- #endregion
490
  }
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
+ /**
14
+ * 3-layer lazy options manager.
15
+ * layer 3: Memory
16
+ * layer 2: Cache (if there's any caching plugin and if WP_FS__DEBUG_SDK is FALSE)
17
+ * layer 1: Database (options table). All options stored as one option record in the DB to reduce number of DB
18
+ * queries.
19
+ *
20
+ * If load() is not explicitly called, starts as empty manager. Same thing about saving the data - you have to
21
+ * explicitly call store().
22
+ *
23
+ * Class Freemius_Option_Manager
24
+ */
25
+ class FS_Option_Manager {
26
+ /**
27
+ * @var string
28
+ */
29
+ private $_id;
30
+ /**
31
+ * @var array|object
32
+ */
33
+ private $_options;
34
+ /**
35
+ * @var FS_Logger
36
+ */
37
+ private $_logger;
38
+
39
+ /**
40
+ * @since 2.0.0
41
+ * @var int The ID of the blog that is associated with the current site level options.
42
+ */
43
+ private $_blog_id = 0;
44
+
45
+ /**
46
+ * @since 2.0.0
47
+ * @var bool
48
+ */
49
+ private $_is_network_storage;
50
+
51
+ /**
52
+ * @var array[string]FS_Option_Manager {
53
+ * @key string
54
+ * @value FS_Option_Manager
55
+ * }
56
+ */
57
+ private static $_MANAGERS = array();
58
+
59
+ /**
60
+ * @author Vova Feldman (@svovaf)
61
+ * @since 1.0.3
62
+ *
63
+ * @param string $id
64
+ * @param bool $load
65
+ * @param bool|int $network_level_or_blog_id Since 2.0.0
66
+ */
67
+ private function __construct( $id, $load = false, $network_level_or_blog_id = false ) {
68
+ $id = strtolower( $id );
69
+
70
+ $this->_logger = FS_Logger::get_logger( WP_FS__SLUG . '_opt_mngr_' . $id, WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK );
71
+
72
+ $this->_logger->entrance();
73
+ $this->_logger->log( 'id = ' . $id );
74
+
75
+ $this->_id = $id;
76
+
77
+ if ( is_multisite() ) {
78
+ $this->_is_network_storage = ( true === $network_level_or_blog_id );
79
+
80
+ if ( is_numeric( $network_level_or_blog_id ) ) {
81
+ $this->_blog_id = $network_level_or_blog_id;
82
+ }
83
+ } else {
84
+ $this->_is_network_storage = false;
85
+ }
86
+
87
+ if ( $load ) {
88
+ $this->load();
89
+ }
90
+ }
91
+
92
+ /**
93
+ * @author Vova Feldman (@svovaf)
94
+ * @since 1.0.3
95
+ *
96
+ * @param string $id
97
+ * @param bool $load
98
+ * @param bool|int $network_level_or_blog_id Since 2.0.0
99
+ *
100
+ * @return FS_Option_Manager
101
+ */
102
+ static function get_manager( $id, $load = false, $network_level_or_blog_id = false ) {
103
+ $key = strtolower( $id );
104
+
105
+ if ( is_multisite() ) {
106
+ if ( true === $network_level_or_blog_id ) {
107
+ $key .= ':ms';
108
+ } else if ( is_numeric( $network_level_or_blog_id ) && $network_level_or_blog_id > 0 ) {
109
+ $key .= ":{$network_level_or_blog_id}";
110
+ } else {
111
+ $network_level_or_blog_id = get_current_blog_id();
112
+
113
+ $key .= ":{$network_level_or_blog_id}";
114
+ }
115
+ }
116
+
117
+ if ( ! isset( self::$_MANAGERS[ $key ] ) ) {
118
+ self::$_MANAGERS[ $key ] = new FS_Option_Manager( $id, $load, $network_level_or_blog_id );
119
+ } // If load required but not yet loaded, load.
120
+ else if ( $load && ! self::$_MANAGERS[ $key ]->is_loaded() ) {
121
+ self::$_MANAGERS[ $key ]->load();
122
+ }
123
+
124
+ return self::$_MANAGERS[ $key ];
125
+ }
126
+
127
+ /**
128
+ * @author Vova Feldman (@svovaf)
129
+ * @since 1.0.3
130
+ *
131
+ * @param bool $flush
132
+ */
133
+ function load( $flush = false ) {
134
+ $this->_logger->entrance();
135
+
136
+ $option_name = $this->get_option_manager_name();
137
+
138
+ if ( $flush || ! isset( $this->_options ) ) {
139
+ if ( isset( $this->_options ) ) {
140
+ // Clear prev options.
141
+ $this->clear();
142
+ }
143
+
144
+ $cache_group = $this->get_cache_group();
145
+
146
+ if ( ! WP_FS__DEBUG_SDK ) {
147
+
148
+ $this->_options = wp_cache_get(
149
+ $option_name,
150
+ $cache_group
151
+ );
152
+ }
153
+
154
+ $cached = true;
155
+
156
+ if ( empty( $this->_options ) ) {
157
+ if ( $this->_is_network_storage ) {
158
+ $this->_options = get_site_option( $option_name );
159
+ } else if ( $this->_blog_id > 0 ) {
160
+ $this->_options = get_blog_option( $this->_blog_id, $option_name );
161
+ } else {
162
+ $this->_options = get_option( $option_name );
163
+ }
164
+
165
+ if ( is_string( $this->_options ) ) {
166
+ $this->_options = json_decode( $this->_options );
167
+ }
168
+
169
+ // $this->_logger->info('get_option = ' . var_export($this->_options, true));
170
+
171
+ if ( false === $this->_options ) {
172
+ $this->clear();
173
+ }
174
+
175
+ $cached = false;
176
+ }
177
+
178
+ if ( ! WP_FS__DEBUG_SDK && ! $cached ) {
179
+ // Set non encoded cache.
180
+ wp_cache_set( $option_name, $this->_options, $cache_group );
181
+ }
182
+ }
183
+ }
184
+
185
+ /**
186
+ * @author Vova Feldman (@svovaf)
187
+ * @since 1.0.3
188
+ *
189
+ * @return bool
190
+ */
191
+ function is_loaded() {
192
+ return isset( $this->_options );
193
+ }
194
+
195
+ /**
196
+ * @author Vova Feldman (@svovaf)
197
+ * @since 1.0.3
198
+ *
199
+ * @return bool
200
+ */
201
+ function is_empty() {
202
+ return ( $this->is_loaded() && false === $this->_options );
203
+ }
204
+
205
+ /**
206
+ * @author Vova Feldman (@svovaf)
207
+ * @since 1.0.6
208
+ *
209
+ * @param bool $flush
210
+ */
211
+ function clear( $flush = false ) {
212
+ $this->_logger->entrance();
213
+
214
+ $this->_options = array();
215
+
216
+ if ( $flush ) {
217
+ $this->store();
218
+ }
219
+ }
220
+
221
+ /**
222
+ * Delete options manager from DB.
223
+ *
224
+ * @author Vova Feldman (@svovaf)
225
+ * @since 1.0.9
226
+ */
227
+ function delete() {
228
+ $option_name = $this->get_option_manager_name();
229
+
230
+ if ( $this->_is_network_storage ) {
231
+ delete_site_option( $option_name );
232
+ } else if ( $this->_blog_id > 0 ) {
233
+ delete_blog_option( $this->_blog_id, $option_name );
234
+ } else {
235
+ delete_option( $option_name );
236
+ }
237
+ }
238
+
239
+ /**
240
+ * @author Vova Feldman (@svovaf)
241
+ * @since 1.0.6
242
+ *
243
+ * @param string $option
244
+ *
245
+ * @return bool
246
+ */
247
+ function has_option( $option ) {
248
+ return array_key_exists( $option, $this->_options );
249
+ }
250
+
251
+ /**
252
+ * @author Vova Feldman (@svovaf)
253
+ * @since 1.0.3
254
+ *
255
+ * @param string $option
256
+ * @param mixed $default
257
+ *
258
+ * @return mixed
259
+ */
260
+ function get_option( $option, $default = null ) {
261
+ $this->_logger->entrance( 'option = ' . $option );
262
+
263
+ if ( ! $this->is_loaded() ) {
264
+ $this->load();
265
+ }
266
+
267
+ if ( is_array( $this->_options ) ) {
268
+ $value = isset( $this->_options[ $option ] ) ?
269
+ $this->_options[ $option ] :
270
+ $default;
271
+ } else if ( is_object( $this->_options ) ) {
272
+ $value = isset( $this->_options->{$option} ) ?
273
+ $this->_options->{$option} :
274
+ $default;
275
+ } else {
276
+ $value = $default;
277
+ }
278
+
279
+ /**
280
+ * If it's an object, return a clone of the object, otherwise,
281
+ * external changes of the object will actually change the value
282
+ * of the object in the options manager which may lead to an unexpected
283
+ * behaviour and data integrity when a store() call is triggered.
284
+ *
285
+ * Example:
286
+ * $object1 = $options->get_option( 'object1' );
287
+ * $object1->x = 123;
288
+ *
289
+ * $object2 = $options->get_option( 'object2' );
290
+ * $object2->y = 'dummy';
291
+ *
292
+ * $options->set_option( 'object2', $object2, true );
293
+ *
294
+ * If we don't return a clone of option 'object1', setting 'object2'
295
+ * will also store the updated value of 'object1' which is quite not
296
+ * an expected behaviour.
297
+ *
298
+ * @author Vova Feldman
299
+ */
300
+ return is_object( $value ) ? clone $value : $value;
301
+ }
302
+
303
+ /**
304
+ * @author Vova Feldman (@svovaf)
305
+ * @since 1.0.3
306
+ *
307
+ * @param string $option
308
+ * @param mixed $value
309
+ * @param bool $flush
310
+ */
311
+ function set_option( $option, $value, $flush = false ) {
312
+ $this->_logger->entrance( 'option = ' . $option );
313
+
314
+ if ( ! $this->is_loaded() ) {
315
+ $this->clear();
316
+ }
317
+
318
+ /**
319
+ * If it's an object, store a clone of the object, otherwise,
320
+ * external changes of the object will actually change the value
321
+ * of the object in the options manager which may lead to an unexpected
322
+ * behaviour and data integrity when a store() call is triggered.
323
+ *
324
+ * Example:
325
+ * $object1 = new stdClass();
326
+ * $object1->x = 123;
327
+ *
328
+ * $options->set_option( 'object1', $object1 );
329
+ *
330
+ * $object1->x = 456;
331
+ *
332
+ * $options->set_option( 'object2', $object2, true );
333
+ *
334
+ * If we don't set the option as a clone of option 'object1', setting 'object2'
335
+ * will also store the updated value of 'object1' ($object1->x = 456 instead of
336
+ * $object1->x = 123) which is quite not an expected behaviour.
337
+ *
338
+ * @author Vova Feldman
339
+ */
340
+ $copy = is_object( $value ) ? clone $value : $value;
341
+
342
+ if ( is_array( $this->_options ) ) {
343
+ $this->_options[ $option ] = $copy;
344
+ } else if ( is_object( $this->_options ) ) {
345
+ $this->_options->{$option} = $copy;
346
+ }
347
+
348
+ if ( $flush ) {
349
+ $this->store();
350
+ }
351
+ }
352
+
353
+ /**
354
+ * Unset option.
355
+ *
356
+ * @author Vova Feldman (@svovaf)
357
+ * @since 1.0.3
358
+ *
359
+ * @param string $option
360
+ * @param bool $flush
361
+ */
362
+ function unset_option( $option, $flush = false ) {
363
+ $this->_logger->entrance( 'option = ' . $option );
364
+
365
+ if ( is_array( $this->_options ) ) {
366
+ if ( ! isset( $this->_options[ $option ] ) ) {
367
+ return;
368
+ }
369
+
370
+ unset( $this->_options[ $option ] );
371
+
372
+ } else if ( is_object( $this->_options ) ) {
373
+ if ( ! isset( $this->_options->{$option} ) ) {
374
+ return;
375
+ }
376
+
377
+ unset( $this->_options->{$option} );
378
+ }
379
+
380
+ if ( $flush ) {
381
+ $this->store();
382
+ }
383
+ }
384
+
385
+ /**
386
+ * Dump options to database.
387
+ *
388
+ * @author Vova Feldman (@svovaf)
389
+ * @since 1.0.3
390
+ */
391
+ function store() {
392
+ $this->_logger->entrance();
393
+
394
+ $option_name = $this->get_option_manager_name();
395
+
396
+ if ( $this->_logger->is_on() ) {
397
+ $this->_logger->info( $option_name . ' = ' . var_export( $this->_options, true ) );
398
+ }
399
+
400
+ // Update DB.
401
+ if ( $this->_is_network_storage ) {
402
+ update_site_option( $option_name, $this->_options );
403
+ } else if ( $this->_blog_id > 0 ) {
404
+ update_blog_option( $this->_blog_id, $option_name, $this->_options );
405
+ } else {
406
+ update_option( $option_name, $this->_options );
407
+ }
408
+
409
+ if ( ! WP_FS__DEBUG_SDK ) {
410
+ wp_cache_set( $option_name, $this->_options, $this->get_cache_group() );
411
+ }
412
+ }
413
+
414
+ /**
415
+ * Get options keys.
416
+ *
417
+ * @author Vova Feldman (@svovaf)
418
+ * @since 1.0.3
419
+ *
420
+ * @return string[]
421
+ */
422
+ function get_options_keys() {
423
+ if ( is_array( $this->_options ) ) {
424
+ return array_keys( $this->_options );
425
+ } else if ( is_object( $this->_options ) ) {
426
+ return array_keys( get_object_vars( $this->_options ) );
427
+ }
428
+
429
+ return array();
430
+ }
431
+
432
+ #--------------------------------------------------------------------------------
433
+ #region Migration
434
+ #--------------------------------------------------------------------------------
435
+
436
+ /**
437
+ * Migrate options from site level.
438
+ *
439
+ * @author Vova Feldman (@svovaf)
440
+ * @since 2.0.0
441
+ */
442
+ function migrate_to_network() {
443
+ $site_options = FS_Option_Manager::get_manager($this->_id, true, false);
444
+
445
+ $options = is_object( $site_options->_options ) ?
446
+ get_object_vars( $site_options->_options ) :
447
+ $site_options->_options;
448
+
449
+ if ( ! empty( $options ) ) {
450
+ foreach ( $options as $key => $val ) {
451
+ $this->set_option( $key, $val, false );
452
+ }
453
+
454
+ $this->store();
455
+ }
456
+ }
457
+
458
+ #endregion
459
+
460
+ #--------------------------------------------------------------------------------
461
+ #region Helper Methods
462
+ #--------------------------------------------------------------------------------
463
+
464
+ /**
465
+ * @return string
466
+ */
467
+ private function get_option_manager_name() {
468
+ return $this->_id;
469
+ }
470
+
471
+ /**
472
+ * @author Vova Feldman (@svovaf)
473
+ * @since 2.0.0
474
+ *
475
+ * @return string
476
+ */
477
+ private function get_cache_group() {
478
+ $group = WP_FS__SLUG;
479
+
480
+ if ( $this->_is_network_storage ) {
481
+ $group .= '_ms';
482
+ } else if ( $this->_blog_id > 0 ) {
483
+ $group .= "_s{$this->_blog_id}";
484
+ }
485
+
486
+ return $group;
487
+ }
488
+
489
+ #endregion
490
  }
freemius/includes/supplements/fs-essential-functions-1.1.7.1.php CHANGED
@@ -1,47 +1,47 @@
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.1.7
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- /**
14
- * Find the plugin main file path based on any given file inside the plugin's folder.
15
- *
16
- * @author Vova Feldman (@svovaf)
17
- * @since 1.1.7.1
18
- *
19
- * @param string $file Absolute path to a file inside a plugin's folder.
20
- *
21
- * @return string
22
- */
23
- function fs_find_direct_caller_plugin_file( $file ) {
24
- /**
25
- * All the code below will be executed once on activation.
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;
42
- }
43
- }
44
- }
45
-
46
- return null;
47
- }
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.1.7
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ /**
14
+ * Find the plugin main file path based on any given file inside the plugin's folder.
15
+ *
16
+ * @author Vova Feldman (@svovaf)
17
+ * @since 1.1.7.1
18
+ *
19
+ * @param string $file Absolute path to a file inside a plugin's folder.
20
+ *
21
+ * @return string
22
+ */
23
+ function fs_find_direct_caller_plugin_file( $file ) {
24
+ /**
25
+ * All the code below will be executed once on activation.
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;
42
+ }
43
+ }
44
+ }
45
+
46
+ return null;
47
+ }
freemius/languages/freemius-da_DK.po CHANGED
@@ -1,12 +1,12 @@
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
+ 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"
freemius/languages/freemius-en.po CHANGED
@@ -1,2205 +1,2205 @@
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) 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."
freemius/languages/freemius-es_ES.po CHANGED
@@ -1,2299 +1,2299 @@
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) 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."
freemius/languages/freemius-fr_FR.po CHANGED
@@ -1,2299 +1,2299 @@
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
1498
- msgid "Activate Free Version"
1499
- msgstr "Activez la version gratuite"
1500
-
1501
- #: templates/connect.php:407
1502
- msgid "Have a license key?"
1503
- msgstr "Vous avez une clef de licence ?"
1504
-
1505
- #: templates/connect.php:415
1506
- msgid "Privacy Policy"
1507
- msgstr "Politique de confidentialité"
1508
-
1509
- #: templates/connect.php:417
1510
- msgid "Terms of Service"
1511
- msgstr "Conditions générales de service"
1512
-
1513
- #: templates/connect.php:750
1514
- msgctxt "as in the process of sending an email"
1515
- msgid "Sending email"
1516
- msgstr "Email en cours d'envoi"
1517
-
1518
- #: templates/connect.php:751
1519
- msgctxt "as activating plugin"
1520
- msgid "Activating"
1521
- msgstr "Activation en cours"
1522
-
1523
- #: templates/contact.php:78
1524
- msgid "Contact"
1525
- msgstr "Contact"
1526
-
1527
- #: templates/debug.php:17
1528
- msgctxt "as turned off"
1529
- msgid "Off"
1530
- msgstr "Off"
1531
-
1532
- #: templates/debug.php:18
1533
- msgctxt "as turned on"
1534
- msgid "On"
1535
- msgstr "On"
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 "Debuggage"
1545
-
1546
- #: templates/debug.php54, templates/debug.php238, templates/debug.php364,
1547
- #: templates/debug.php:482
1548
- msgid "Actions"
1549
- msgstr "Actions"
1550
-
1551
- #: templates/debug.php:64
1552
- msgid "Are you sure you want to delete all Freemius data?"
1553
- msgstr "Êtes-vous sûr de vouloir supprimer toutes les données de Freemius ?"
1554
-
1555
- #: templates/debug.php:64
1556
- msgid "Delete All Accounts"
1557
- msgstr "Supprimer tous les comptes"
1558
-
1559
- #: templates/debug.php:71
1560
- msgid "Clear API Cache"
1561
- msgstr "Vider le cache API"
1562
-
1563
- #: templates/debug.php:79
1564
- msgid "Clear Updates Transients"
1565
- msgstr "Vider les transients de mise à jour"
1566
-
1567
- #: templates/debug.php:86
1568
- msgid "Sync Data From Server"
1569
- msgstr "Synchronisation des données depuis le serveur"
1570
-
1571
- #: templates/debug.php:90
1572
- msgid "Load DB Option"
1573
- msgstr "Chargement des options de la base de données"
1574
-
1575
- #: templates/debug.php:93
1576
- msgid "Set DB Option"
1577
- msgstr "Mise en place des options de la base de données"
1578
-
1579
- #: templates/debug.php:170
1580
- msgid "Key"
1581
- msgstr "Clef"
1582
-
1583
- #: templates/debug.php:171
1584
- msgid "Value"
1585
- msgstr "Valeur"
1586
-
1587
- #: templates/debug.php:187
1588
- msgctxt "as software development kit versions"
1589
- msgid "SDK Versions"
1590
- msgstr "Versions du SDK"
1591
-
1592
- #: templates/debug.php:192
1593
- msgid "SDK Path"
1594
- msgstr "Chemin d'accès du SDK"
1595
-
1596
- #: templates/debug.php193, templates/debug.php:232
1597
- msgid "Module Path"
1598
- msgstr "Chemin d'accès du module"
1599
-
1600
- #: templates/debug.php:194
1601
- msgid "Is Active"
1602
- msgstr "Est actif"
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 "Thèmes"
1611
-
1612
- #: templates/debug.php227, templates/debug.php359, templates/debug.php441,
1613
- #: templates/debug/scheduled-crons.php:80
1614
- msgid "Slug"
1615
- msgstr "Slug"
1616
-
1617
- #: templates/debug.php229, templates/debug.php:440
1618
- msgid "Title"
1619
- msgstr "Titre"
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 "État de Freemius"
1629
-
1630
- #: templates/debug.php:235
1631
- msgid "Network Blog"
1632
- msgstr "Réseau de Blog"
1633
-
1634
- #: templates/debug.php:236
1635
- msgid "Network User"
1636
- msgstr "Réseau d'Utilisateur"
1637
-
1638
- #: templates/debug.php:273
1639
- msgctxt "as connection was successful"
1640
- msgid "Connected"
1641
- msgstr "Connecté"
1642
-
1643
- #: templates/debug.php:274
1644
- msgctxt "as connection blocked"
1645
- msgid "Blocked"
1646
- msgstr "Bloqué"
1647
-
1648
- #: templates/debug.php:310
1649
- msgid "Simulate Trial"
1650
- msgstr "Simuler l'essai"
1651
-
1652
- #: templates/debug.php:322
1653
- msgid "Simulate Network Upgrade"
1654
- msgstr "Simuler la mise à jour du réseau"
1655
-
1656
- #: templates/debug.php:348
1657
- msgid "%s Installs"
1658
- msgstr "%s Installations"
1659
-
1660
- #: templates/debug.php:350
1661
- msgctxt "like websites"
1662
- msgid "Sites"
1663
- msgstr "Sites"
1664
-
1665
- #: templates/debug.php356, templates/account/partials/site.php:148
1666
- msgid "Blog ID"
1667
- msgstr "Blog ID"
1668
-
1669
- #: templates/debug.php421, templates/debug.php499,
1670
- #: templates/account/partials/addon.php:334
1671
- msgctxt "verb"
1672
- msgid "Delete"
1673
- msgstr "Supprimer"
1674
-
1675
- #: templates/debug.php:435
1676
- msgid "Add Ons of module %s"
1677
- msgstr "Add Ons du module %s"
1678
-
1679
- #: templates/debug.php:472
1680
- msgid "Users"
1681
- msgstr "Utilisateurs"
1682
-
1683
- #: templates/debug.php:479
1684
- msgid "Verified"
1685
- msgstr "Vérifié"
1686
-
1687
- #: templates/debug.php:510
1688
- msgid "%s Licenses"
1689
- msgstr "%s Licences"
1690
-
1691
- #: templates/debug.php:515
1692
- msgid "Plugin ID"
1693
- msgstr "ID du plugin"
1694
-
1695
- #: templates/debug.php:517
1696
- msgid "Plan ID"
1697
- msgstr "ID de la formule"
1698
-
1699
- #: templates/debug.php:518
1700
- msgid "Quota"
1701
- msgstr "Quota"
1702
-
1703
- #: templates/debug.php:519
1704
- msgid "Activated"
1705
- msgstr "Activé"
1706
-
1707
- #: templates/debug.php:520
1708
- msgid "Blocking"
1709
- msgstr "Bloquant"
1710
-
1711
- #: templates/debug.php:522
1712
- msgctxt "as expiration date"
1713
- msgid "Expiration"
1714
- msgstr "Expiration"
1715
-
1716
- #: templates/debug.php:545
1717
- msgid "Debug Log"
1718
- msgstr "Debug Log"
1719
-
1720
- #: templates/debug.php:549
1721
- msgid "All Types"
1722
- msgstr "Tous les types"
1723
-
1724
- #: templates/debug.php:556
1725
- msgid "All Requests"
1726
- msgstr "Toutes les demandes"
1727
-
1728
- #: templates/debug.php561, templates/debug.php590,
1729
- #: templates/debug/logger.php:25
1730
- msgid "File"
1731
- msgstr "Fichier"
1732
-
1733
- #: templates/debug.php562, templates/debug.php588,
1734
- #: templates/debug/logger.php:23
1735
- msgid "Function"
1736
- msgstr "Fonction"
1737
-
1738
- #: templates/debug.php:563
1739
- msgid "Process ID"
1740
- msgstr "ID du processus"
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 "Message"
1750
-
1751
- #: templates/debug.php:567
1752
- msgid "Filter"
1753
- msgstr "Filter"
1754
-
1755
- #: templates/debug.php:575
1756
- msgid "Download"
1757
- msgstr "Téléchargement"
1758
-
1759
- #: templates/debug.php586, templates/debug/logger.php:22
1760
- msgid "Type"
1761
- msgstr "Type"
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 "Page %s sécurisée HTTPS, s'exécutant sur un domaine externe"
1770
-
1771
- #: includes/customizer/class-fs-customizer-support-section.php55,
1772
- #: templates/plugin-info/features.php:43
1773
- msgid "Support"
1774
- msgstr "Support"
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 "Demandes"
1789
-
1790
- #: templates/account/billing.php:28
1791
- msgctxt "verb"
1792
- msgid "Update"
1793
- msgstr "Mise à jour"
1794
-
1795
- #: templates/account/billing.php:39
1796
- msgid "Billing"
1797
- msgstr "Facturation"
1798
-
1799
- #: templates/account/billing.php44, templates/account/billing.php:44
1800
- msgid "Business name"
1801
- msgstr "Raison sociale"
1802
-
1803
- #: templates/account/billing.php45, templates/account/billing.php:45
1804
- msgid "Tax / VAT ID"
1805
- msgstr "Code TVA"
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 "Adresse ligne %d"
1811
-
1812
- #: templates/account/billing.php52, templates/account/billing.php:52
1813
- msgid "City"
1814
- msgstr "Ville"
1815
-
1816
- #: templates/account/billing.php52, templates/account/billing.php:52
1817
- msgid "Town"
1818
- msgstr "Ville"
1819
-
1820
- #: templates/account/billing.php53, templates/account/billing.php:53
1821
- msgid "ZIP / Postal Code"
1822
- msgstr "Code postal"
1823
-
1824
- #: templates/account/billing.php:308
1825
- msgid "Country"
1826
- msgstr "Pays"
1827
-
1828
- #: templates/account/billing.php:310
1829
- msgid "Select Country"
1830
- msgstr "Choisir le pays"
1831
-
1832
- #: templates/account/billing.php317, templates/account/billing.php:318
1833
- msgid "State"
1834
- msgstr "État"
1835
-
1836
- #: templates/account/billing.php317, templates/account/billing.php:318
1837
- msgid "Province"
1838
- msgstr "Région"
1839
-
1840
- #: templates/account/payments.php:29
1841
- msgid "Payments"
1842
- msgstr "Paiements"
1843
-
1844
- #: templates/account/payments.php:36
1845
- msgid "Date"
1846
- msgstr "Date"
1847
-
1848
- #: templates/account/payments.php:37
1849
- msgid "Amount"
1850
- msgstr "Montant"
1851
-
1852
- #: templates/account/payments.php38, templates/account/payments.php:50
1853
- msgid "Invoice"
1854
- msgstr "Facture"
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éthode"
1863
-
1864
- #: templates/debug/api-calls.php:69
1865
- msgid "Code"
1866
- msgstr "Code"
1867
-
1868
- #: templates/debug/api-calls.php:70
1869
- msgid "Length"
1870
- msgstr "Longueur"
1871
-
1872
- #: templates/debug/api-calls.php:71
1873
- msgctxt "as file/folder path"
1874
- msgid "Path"
1875
- msgstr "Chemin"
1876
-
1877
- #: templates/debug/api-calls.php:73
1878
- msgid "Body"
1879
- msgstr "Body"
1880
-
1881
- #: templates/debug/api-calls.php:75
1882
- msgid "Result"
1883
- msgstr "Résultat"
1884
-
1885
- #: templates/debug/api-calls.php:76
1886
- msgid "Start"
1887
- msgstr "Début"
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 "Dans %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 "Il y a %s"
1908
-
1909
- #: templates/debug/plugins-themes-sync.php21,
1910
- #: templates/debug/scheduled-crons.php:74
1911
- msgctxt "seconds"
1912
- msgid "sec"
1913
- msgstr "sec"
1914
-
1915
- #: templates/debug/plugins-themes-sync.php:23
1916
- msgid "Plugins & Themes Sync"
1917
- msgstr "Synchronisation des plugin et des thèmes"
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 "Dernier"
1927
-
1928
- #: templates/debug/scheduled-crons.php:76
1929
- msgid "Scheduled Crons"
1930
- msgstr "Crons programmés"
1931
-
1932
- #: templates/debug/scheduled-crons.php:81
1933
- msgid "Module"
1934
- msgstr "Module"
1935
-
1936
- #: templates/debug/scheduled-crons.php:82
1937
- msgid "Module Type"
1938
- msgstr "Type de module"
1939
-
1940
- #: templates/debug/scheduled-crons.php:83
1941
- msgid "Cron Type"
1942
- msgstr "Type de Cron"
1943
-
1944
- #: templates/debug/scheduled-crons.php:85
1945
- msgid "Next"
1946
- msgstr "Suivant"
1947
-
1948
- #: templates/forms/affiliation.php:82
1949
- msgid "Non-expiring"
1950
- msgstr "Sans expiration"
1951
-
1952
- #: templates/forms/affiliation.php:85
1953
- msgid "Apply to become an affiliate"
1954
- msgstr "Postuler pour devenir un affilié"
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 "Votre dossier d'affiliation pour %s a été accepté ! Identifiez-vous dans votre espace affilié sur : %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 "Merci d'avoir postulé à notre programme d'affiliation, nous regarderons votre dossier durant les 14 prochains jours et nous reviendrons vers vous avec d'autres informations."
1963
-
1964
- #: templates/forms/affiliation.php:122
1965
- msgid "Your affiliation account was temporarily suspended."
1966
- msgstr "Votre compte affilié a été suspendu temporairement."
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 "Merci d'avoir postulé à notre programme d'affiliation, malheureusement, nous avons décidé pour le moment de décliner votre dossier. Merci d'essayer à nouveau d'ici 30 jours."
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 "Suite à une violation de nos conditions d'affiliation, nous avons décidé de bloquer temporairement votre compte d'affilié. Si vous avez la moindre question, merci de contacter le support."
1975
-
1976
- #: templates/forms/affiliation.php:141
1977
- msgid "Like the %s? Become our ambassador and earn cash ;-)"
1978
- msgstr "Vous aimez %s ? Devenez notre ambassadeur et gagnez du cash ;-)"
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 "Parrainez des nouveaux clients pour notre %s et gagnez une commission de %s sur chaque vente réussie que vous affiliez."
1983
-
1984
- #: templates/forms/affiliation.php:145
1985
- msgid "Program Summary"
1986
- msgstr "Sommaire du programme"
1987
-
1988
- #: templates/forms/affiliation.php:147
1989
- msgid "%s commission when a customer purchases a new license."
1990
- msgstr "Commission de %s quand un client achète une nouvelle licence."
1991
-
1992
- #: templates/forms/affiliation.php:149
1993
- msgid "Get commission for automated subscription renewals."
1994
- msgstr "Obtenez des commissions pour les renouvellements automatiques d'abonnement."
1995
-
1996
- #: templates/forms/affiliation.php:152
1997
- msgid "%s tracking cookie after the first visit to maximize earnings potential."
1998
- msgstr "Cookie de tracking de %s après la première visite pour maximiser les potentiels de gain."
1999
-
2000
- #: templates/forms/affiliation.php:155
2001
- msgid "Unlimited commissions."
2002
- msgstr "Commissions illimitées."
2003
-
2004
- #: templates/forms/affiliation.php:157
2005
- msgid "%s minimum payout amount."
2006
- msgstr "Montant de paiement minimum %s."
2007
-
2008
- #: templates/forms/affiliation.php:158
2009
- msgid "Payouts are in USD and processed monthly via PayPal."
2010
- msgstr "Les paiements se font en Dollars US et sont effectués mensuellement via 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 "Comme nous bloquons sur 30 jours pour les remboursements éventuels, seules sont payées les commissions de plus de 30 jours."
2015
-
2016
- #: templates/forms/affiliation.php:162
2017
- msgid "Affiliate"
2018
- msgstr "Affiliation"
2019
-
2020
- #: templates/forms/affiliation.php165, templates/forms/resend-key.php:23
2021
- msgid "Email address"
2022
- msgstr "Adresse email"
2023
-
2024
- #: templates/forms/affiliation.php:169
2025
- msgid "Full name"
2026
- msgstr "Nom complet"
2027
-
2028
- #: templates/forms/affiliation.php:173
2029
- msgid "PayPal account email address"
2030
- msgstr "Adresse email du compte PayPal"
2031
-
2032
- #: templates/forms/affiliation.php:177
2033
- msgid "Where are you going to promote the %s?"
2034
- msgstr "Où allez-vous faire la promotion du %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 "Indiquez l'adresse de votre site ou d'autres sites sur lesquels vous pensez faire la promotion du %s"
2039
-
2040
- #: templates/forms/affiliation.php:181
2041
- msgid "Add another domain"
2042
- msgstr "Ajouter une autre adresse"
2043
-
2044
- #: templates/forms/affiliation.php:185
2045
- msgid "Extra Domains"
2046
- msgstr "Adresses supplémentaires"
2047
-
2048
- #: templates/forms/affiliation.php:186
2049
- msgid "Extra domains where you will be marketing the product from."
2050
- msgstr "Adresses supplémentaires depuis lesquelles vous ferez la promotion du produit."
2051
-
2052
- #: templates/forms/affiliation.php:196
2053
- msgid "Promotion methods"
2054
- msgstr "Méthodes de promotion"
2055
-
2056
- #: templates/forms/affiliation.php:199
2057
- msgid "Social media (Facebook, Twitter, etc.)"
2058
- msgstr "Réseaux sociaux (Facebook, Twitter, etc.)"
2059
-
2060
- #: templates/forms/affiliation.php:203
2061
- msgid "Mobile apps"
2062
- msgstr "Applications mobiles"
2063
-
2064
- #: templates/forms/affiliation.php:207
2065
- msgid "Website, email, and social media statistics (optional)"
2066
- msgstr "Statistiques du site web, de l'adresse email et des réseaux sociaux (optionnel)"
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 "N'hésitez pas à indiquer des statistiques pertinentes concernant votre site ou vos réseaux sociaux telles que le nombre de visiteurs mensuel, le nombre d'abonnés, de followers, etc... (C'est informations resteront confidentielles)"
2071
-
2072
- #: templates/forms/affiliation.php:214
2073
- msgid "How will you promote us?"
2074
- msgstr "Comment allez-vous faire de la promotion ?"
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 "Merci d'indiquer en détail comment vous allez faire la promotion du %s (en étant aussi précis que possible)"
2079
-
2080
- #: templates/forms/affiliation.php223, templates/forms/resend-key.php:22
2081
- msgid "Cancel"
2082
- msgstr "Annuler"
2083
-
2084
- #: templates/forms/affiliation.php:225
2085
- msgid "Become an affiliate"
2086
- msgstr "Devenir un affilié"
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 "Merci d'indiquer le code de licence que vous avez reçu par email juste après l'achat :"
2091
-
2092
- #: templates/forms/license-activation.php:25
2093
- msgid "Update License"
2094
- msgstr "Mettre à jour la licence"
2095
-
2096
- #: templates/forms/optout.php:30
2097
- msgctxt "verb"
2098
- msgid "Opt Out"
2099
- msgstr "Désinscription"
2100
-
2101
- #: templates/forms/optout.php:31
2102
- msgctxt "verb"
2103
- msgid "Opt In"
2104
- msgstr "Inscription"
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 "Le suivi d'utilisation de %s nous permet de l'améliorer. Apporter une meilleure expérience pour l'utilisateur, définir quelles seront les nouvelles fonctionnalités, ce genre de choses. Aussi nous vous serions reconnaissant si vous acceptiez de nous permettre de continuer à récupérer des informations."
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 "En cliquant \"Désincription\", nous n'enverrons plus d'informations de %s à %s."
2113
-
2114
- #: templates/forms/premium-versions-upgrade-handler.php:24
2115
- msgid "There is a new version of %s available."
2116
- msgstr "Il y a une nouvelle version disponible de %s. "
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 "%sRenouveler 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."
2121
-
2122
- #: templates/forms/premium-versions-upgrade-handler.php:34
2123
- msgid "New Version Available"
2124
- msgstr "Une nouvelle version est disponible"
2125
-
2126
- #: templates/forms/premium-versions-upgrade-handler.php:36
2127
- msgid "Renew license"
2128
- msgstr "Renouvelez votre licence"
2129
-
2130
- #: templates/forms/premium-versions-upgrade-handler.php:53
2131
- msgctxt "close a window"
2132
- msgid "Dismiss"
2133
- msgstr "Fermer"
2134
-
2135
- #: templates/forms/resend-key.php:21
2136
- msgid "Send License Key"
2137
- msgstr "Envoyer le code de la licence"
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 "Indiquez ci-dessous l'adresse email que vous avez utilisez pour la mise à jour et nous allons vous renvoyer le code de la licence."
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 "Vous êtes à 1 clic de commencer votre période d'essai gratuite de %1$s jours de la formule %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 "Pour être en accord avec les directives de WordPress.org, avant que nous commencions la période d'essai, nous vous demandons de nous permettre de récupérer votre nom d'utilisateur et des informations non sensibles du site afin de permettre au %s de communiquer avec %s pour vérifier les mises à jour et valider votre période d'essai."
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 "Activer la licence sur tous les sites du réseau."
2158
-
2159
- #: templates/partials/network-activation.php:24
2160
- msgid "Apply on all sites in the network."
2161
- msgstr "Effectuer sur tous les sites dans le réseau."
2162
-
2163
- #: templates/partials/network-activation.php:27
2164
- msgid "Activate license on all pending sites."
2165
- msgstr "Activer la licence sur tous les sites en attente."
2166
-
2167
- #: templates/partials/network-activation.php:28
2168
- msgid "Apply on all pending sites."
2169
- msgstr "Activer sur tous les sites en attente."
2170
-
2171
- #: templates/partials/network-activation.php36,
2172
- #: templates/partials/network-activation.php:68
2173
- msgid "allow"
2174
- msgstr "autoriser"
2175
-
2176
- #: templates/partials/network-activation.php38,
2177
- #: templates/partials/network-activation.php:70
2178
- msgid "delegate"
2179
- msgstr "déléguer"
2180
-
2181
- #: templates/partials/network-activation.php41,
2182
- #: templates/partials/network-activation.php:73
2183
- msgid "skip"
2184
- msgstr "passer"
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 "Cliquez pour voir la capture d'écran %d en pleine taille"
2190
-
2191
- #: templates/plugin-info/features.php:56
2192
- msgid "Unlimited Updates"
2193
- msgstr "Mises à jour illimitées"
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 "%s restante(s)"
2203
-
2204
- #: templates/account/partials/activate-license-button.php:51
2205
- msgid "Last license"
2206
- msgstr "Dernière licence"
2207
-
2208
- #: templates/account/partials/addon.php:111
2209
- msgid "Cancelled"
2210
- msgstr "Annulé"
2211
-
2212
- #: templates/account/partials/addon.php:116
2213
- msgid "Expired"
2214
- msgstr "Expiré"
2215
-
2216
- #: templates/account/partials/addon.php:121
2217
- msgid "No expiration"
2218
- msgstr "Pas d'expiration"
2219
-
2220
- #: templates/account/partials/addon.php259,
2221
- #: templates/account/partials/addon.php:312
2222
- msgid "Activate this add-on"
2223
- msgstr "Activer cet add-on"
2224
-
2225
- #: templates/account/partials/site.php:181
2226
- msgid "Owner Name"
2227
- msgstr "Nom du propriétaire"
2228
-
2229
- #: templates/account/partials/site.php:193
2230
- msgid "Owner Email"
2231
- msgstr "Email du propriétaire"
2232
-
2233
- #: templates/account/partials/site.php:205
2234
- msgid "Owner ID"
2235
- msgstr "ID du propriétaire"
2236
-
2237
- #: templates/account/partials/site.php:270
2238
- msgid "Subscription"
2239
- msgstr "Inscription"
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 "Désolé pour le dérangement et nous sommes là pour vous aider si vous nous le permettez."
2244
-
2245
- #: templates/forms/deactivation/contact.php:22
2246
- msgid "Contact Support"
2247
- msgstr "Contacter l'Assistance"
2248
-
2249
- #: templates/forms/deactivation/form.php:56
2250
- msgid "Anonymous feedback"
2251
- msgstr "Commentaire anonyme"
2252
-
2253
- #: templates/forms/deactivation/form.php:63
2254
- msgid "Deactivate"
2255
- msgstr "Désactiver"
2256
-
2257
- #: templates/forms/deactivation/form.php:65
2258
- msgid "Activate %s"
2259
- msgstr "Activer %s"
2260
-
2261
- #: templates/forms/deactivation/form.php:76
2262
- msgid "Quick feedback"
2263
- msgstr "Commentaire rapide"
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 vous avez un instant, merci de nous indiquer pourquoi %s"
2268
-
2269
- #: templates/forms/deactivation/form.php:80
2270
- msgid "deactivating"
2271
- msgstr "Désactivation"
2272
-
2273
- #: templates/forms/deactivation/form.php:80
2274
- msgid "switching"
2275
- msgstr "Changement"
2276
-
2277
- #: templates/forms/deactivation/form.php:269
2278
- msgid "Submit & %s"
2279
- msgstr "Envoyer & %s"
2280
-
2281
- #: templates/forms/deactivation/form.php:290
2282
- msgid "Kindly tell us the reason so we can improve."
2283
- msgstr "S'il vous plait, dites nous pourquoi afin que nous puissions nous améliorer."
2284
-
2285
- #: templates/forms/deactivation/form.php:411
2286
- msgid "Yes - %s"
2287
- msgstr "Oui - %s"
2288
-
2289
- #: templates/forms/deactivation/form.php:418
2290
- msgid "Skip & %s"
2291
- msgstr "Zapper & %s"
2292
-
2293
- #: templates/forms/deactivation/retry-skip.php:21
2294
- msgid "Click here to use the plugin anonymously"
2295
- msgstr "Cliquer ici pour utiliser le plugin anonymement"
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 "Peut-être que cela vous a échappé mais vous n'êtes pas obligé de partager la moindre information et vous pouvez juste %s l'enregistrement."
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
1498
+ msgid "Activate Free Version"
1499
+ msgstr "Activez la version gratuite"
1500
+
1501
+ #: templates/connect.php:407
1502
+ msgid "Have a license key?"
1503
+ msgstr "Vous avez une clef de licence ?"
1504
+
1505
+ #: templates/connect.php:415
1506
+ msgid "Privacy Policy"
1507
+ msgstr "Politique de confidentialité"
1508
+
1509
+ #: templates/connect.php:417
1510
+ msgid "Terms of Service"
1511
+ msgstr "Conditions générales de service"
1512
+
1513
+ #: templates/connect.php:750
1514
+ msgctxt "as in the process of sending an email"
1515
+ msgid "Sending email"
1516
+ msgstr "Email en cours d'envoi"
1517
+
1518
+ #: templates/connect.php:751
1519
+ msgctxt "as activating plugin"
1520
+ msgid "Activating"
1521
+ msgstr "Activation en cours"
1522
+
1523
+ #: templates/contact.php:78
1524
+ msgid "Contact"
1525
+ msgstr "Contact"
1526
+
1527
+ #: templates/debug.php:17
1528
+ msgctxt "as turned off"
1529
+ msgid "Off"
1530
+ msgstr "Off"
1531
+
1532
+ #: templates/debug.php:18
1533
+ msgctxt "as turned on"
1534
+ msgid "On"
1535
+ msgstr "On"
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 "Debuggage"
1545
+
1546
+ #: templates/debug.php54, templates/debug.php238, templates/debug.php364,
1547
+ #: templates/debug.php:482
1548
+ msgid "Actions"
1549
+ msgstr "Actions"
1550
+
1551
+ #: templates/debug.php:64
1552
+ msgid "Are you sure you want to delete all Freemius data?"
1553
+ msgstr "Êtes-vous sûr de vouloir supprimer toutes les données de Freemius ?"
1554
+
1555
+ #: templates/debug.php:64
1556
+ msgid "Delete All Accounts"
1557
+ msgstr "Supprimer tous les comptes"
1558
+
1559
+ #: templates/debug.php:71
1560
+ msgid "Clear API Cache"
1561
+ msgstr "Vider le cache API"
1562
+
1563
+ #: templates/debug.php:79
1564
+ msgid "Clear Updates Transients"
1565
+ msgstr "Vider les transients de mise à jour"
1566
+
1567
+ #: templates/debug.php:86
1568
+ msgid "Sync Data From Server"
1569
+ msgstr "Synchronisation des données depuis le serveur"
1570
+
1571
+ #: templates/debug.php:90
1572
+ msgid "Load DB Option"
1573
+ msgstr "Chargement des options de la base de données"
1574
+
1575
+ #: templates/debug.php:93
1576
+ msgid "Set DB Option"
1577
+ msgstr "Mise en place des options de la base de données"
1578
+
1579
+ #: templates/debug.php:170
1580
+ msgid "Key"
1581
+ msgstr "Clef"
1582
+
1583
+ #: templates/debug.php:171
1584
+ msgid "Value"
1585
+ msgstr "Valeur"
1586
+
1587
+ #: templates/debug.php:187
1588
+ msgctxt "as software development kit versions"
1589
+ msgid "SDK Versions"
1590
+ msgstr "Versions du SDK"
1591
+
1592
+ #: templates/debug.php:192
1593
+ msgid "SDK Path"
1594
+ msgstr "Chemin d'accès du SDK"
1595
+
1596
+ #: templates/debug.php193, templates/debug.php:232
1597
+ msgid "Module Path"
1598
+ msgstr "Chemin d'accès du module"
1599
+
1600
+ #: templates/debug.php:194
1601
+ msgid "Is Active"
1602
+ msgstr "Est actif"
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 "Thèmes"
1611
+
1612
+ #: templates/debug.php227, templates/debug.php359, templates/debug.php441,
1613
+ #: templates/debug/scheduled-crons.php:80
1614
+ msgid "Slug"
1615
+ msgstr "Slug"
1616
+
1617
+ #: templates/debug.php229, templates/debug.php:440
1618
+ msgid "Title"
1619
+ msgstr "Titre"
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 "État de Freemius"
1629
+
1630
+ #: templates/debug.php:235
1631
+ msgid "Network Blog"
1632
+ msgstr "Réseau de Blog"
1633
+
1634
+ #: templates/debug.php:236
1635
+ msgid "Network User"
1636
+ msgstr "Réseau d'Utilisateur"
1637
+
1638
+ #: templates/debug.php:273
1639
+ msgctxt "as connection was successful"
1640
+ msgid "Connected"
1641
+ msgstr "Connecté"
1642
+
1643
+ #: templates/debug.php:274
1644
+ msgctxt "as connection blocked"
1645
+ msgid "Blocked"
1646
+ msgstr "Bloqué"
1647
+
1648
+ #: templates/debug.php:310
1649
+ msgid "Simulate Trial"
1650
+ msgstr "Simuler l'essai"
1651
+
1652
+ #: templates/debug.php:322
1653
+ msgid "Simulate Network Upgrade"
1654
+ msgstr "Simuler la mise à jour du réseau"
1655
+
1656
+ #: templates/debug.php:348
1657
+ msgid "%s Installs"
1658
+ msgstr "%s Installations"
1659
+
1660
+ #: templates/debug.php:350
1661
+ msgctxt "like websites"
1662
+ msgid "Sites"
1663
+ msgstr "Sites"
1664
+
1665
+ #: templates/debug.php356, templates/account/partials/site.php:148
1666
+ msgid "Blog ID"
1667
+ msgstr "Blog ID"
1668
+
1669
+ #: templates/debug.php421, templates/debug.php499,
1670
+ #: templates/account/partials/addon.php:334
1671
+ msgctxt "verb"
1672
+ msgid "Delete"
1673
+ msgstr "Supprimer"
1674
+
1675
+ #: templates/debug.php:435
1676
+ msgid "Add Ons of module %s"
1677
+ msgstr "Add Ons du module %s"
1678
+
1679
+ #: templates/debug.php:472
1680
+ msgid "Users"
1681
+ msgstr "Utilisateurs"
1682
+
1683
+ #: templates/debug.php:479
1684
+ msgid "Verified"
1685
+ msgstr "Vérifié"
1686
+
1687
+ #: templates/debug.php:510
1688
+ msgid "%s Licenses"
1689
+ msgstr "%s Licences"
1690
+
1691
+ #: templates/debug.php:515
1692
+ msgid "Plugin ID"
1693
+ msgstr "ID du plugin"
1694
+
1695
+ #: templates/debug.php:517
1696
+ msgid "Plan ID"
1697
+ msgstr "ID de la formule"
1698
+
1699
+ #: templates/debug.php:518
1700
+ msgid "Quota"
1701
+ msgstr "Quota"
1702
+
1703
+ #: templates/debug.php:519
1704
+ msgid "Activated"
1705
+ msgstr "Activé"
1706
+
1707
+ #: templates/debug.php:520
1708
+ msgid "Blocking"
1709
+ msgstr "Bloquant"
1710
+
1711
+ #: templates/debug.php:522
1712
+ msgctxt "as expiration date"
1713
+ msgid "Expiration"
1714
+ msgstr "Expiration"
1715
+
1716
+ #: templates/debug.php:545
1717
+ msgid "Debug Log"
1718
+ msgstr "Debug Log"
1719
+
1720
+ #: templates/debug.php:549
1721
+ msgid "All Types"
1722
+ msgstr "Tous les types"
1723
+
1724
+ #: templates/debug.php:556
1725
+ msgid "All Requests"
1726
+ msgstr "Toutes les demandes"
1727
+
1728
+ #: templates/debug.php561, templates/debug.php590,
1729
+ #: templates/debug/logger.php:25
1730
+ msgid "File"
1731
+ msgstr "Fichier"
1732
+
1733
+ #: templates/debug.php562, templates/debug.php588,
1734
+ #: templates/debug/logger.php:23
1735
+ msgid "Function"
1736
+ msgstr "Fonction"
1737
+
1738
+ #: templates/debug.php:563
1739
+ msgid "Process ID"
1740
+ msgstr "ID du processus"
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 "Message"
1750
+
1751
+ #: templates/debug.php:567
1752
+ msgid "Filter"
1753
+ msgstr "Filter"
1754
+
1755
+ #: templates/debug.php:575
1756
+ msgid "Download"
1757
+ msgstr "Téléchargement"
1758
+
1759
+ #: templates/debug.php586, templates/debug/logger.php:22
1760
+ msgid "Type"
1761
+ msgstr "Type"
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 "Page %s sécurisée HTTPS, s'exécutant sur un domaine externe"
1770
+
1771
+ #: includes/customizer/class-fs-customizer-support-section.php55,
1772
+ #: templates/plugin-info/features.php:43
1773
+ msgid "Support"
1774
+ msgstr "Support"
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 "Demandes"
1789
+
1790
+ #: templates/account/billing.php:28
1791
+ msgctxt "verb"
1792
+ msgid "Update"
1793
+ msgstr "Mise à jour"
1794
+
1795
+ #: templates/account/billing.php:39
1796
+ msgid "Billing"
1797
+ msgstr "Facturation"
1798
+
1799
+ #: templates/account/billing.php44, templates/account/billing.php:44
1800
+ msgid "Business name"
1801
+ msgstr "Raison sociale"
1802
+
1803
+ #: templates/account/billing.php45, templates/account/billing.php:45
1804
+ msgid "Tax / VAT ID"
1805
+ msgstr "Code TVA"
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 "Adresse ligne %d"
1811
+
1812
+ #: templates/account/billing.php52, templates/account/billing.php:52
1813
+ msgid "City"
1814
+ msgstr "Ville"
1815
+
1816
+ #: templates/account/billing.php52, templates/account/billing.php:52
1817
+ msgid "Town"
1818
+ msgstr "Ville"
1819
+
1820
+ #: templates/account/billing.php53, templates/account/billing.php:53
1821
+ msgid "ZIP / Postal Code"
1822
+ msgstr "Code postal"
1823
+
1824
+ #: templates/account/billing.php:308
1825
+ msgid "Country"
1826
+ msgstr "Pays"
1827
+
1828
+ #: templates/account/billing.php:310
1829
+ msgid "Select Country"
1830
+ msgstr "Choisir le pays"
1831
+
1832
+ #: templates/account/billing.php317, templates/account/billing.php:318
1833
+ msgid "State"
1834
+ msgstr "État"
1835
+
1836
+ #: templates/account/billing.php317, templates/account/billing.php:318
1837
+ msgid "Province"
1838
+ msgstr "Région"
1839
+
1840
+ #: templates/account/payments.php:29
1841
+ msgid "Payments"
1842
+ msgstr "Paiements"
1843
+
1844
+ #: templates/account/payments.php:36
1845
+ msgid "Date"
1846
+ msgstr "Date"
1847
+
1848
+ #: templates/account/payments.php:37
1849
+ msgid "Amount"
1850
+ msgstr "Montant"
1851
+
1852
+ #: templates/account/payments.php38, templates/account/payments.php:50
1853
+ msgid "Invoice"
1854
+ msgstr "Facture"
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éthode"
1863
+
1864
+ #: templates/debug/api-calls.php:69
1865
+ msgid "Code"
1866
+ msgstr "Code"
1867
+
1868
+ #: templates/debug/api-calls.php:70
1869
+ msgid "Length"
1870
+ msgstr "Longueur"
1871
+
1872
+ #: templates/debug/api-calls.php:71
1873
+ msgctxt "as file/folder path"
1874
+ msgid "Path"
1875
+ msgstr "Chemin"
1876
+
1877
+ #: templates/debug/api-calls.php:73
1878
+ msgid "Body"
1879
+ msgstr "Body"
1880
+
1881
+ #: templates/debug/api-calls.php:75
1882
+ msgid "Result"
1883
+ msgstr "Résultat"
1884
+
1885
+ #: templates/debug/api-calls.php:76
1886
+ msgid "Start"
1887
+ msgstr "Début"
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 "Dans %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 "Il y a %s"
1908
+
1909
+ #: templates/debug/plugins-themes-sync.php21,
1910
+ #: templates/debug/scheduled-crons.php:74
1911
+ msgctxt "seconds"
1912
+ msgid "sec"
1913
+ msgstr "sec"
1914
+
1915
+ #: templates/debug/plugins-themes-sync.php:23
1916
+ msgid "Plugins & Themes Sync"
1917
+ msgstr "Synchronisation des plugin et des thèmes"
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 "Dernier"
1927
+
1928
+ #: templates/debug/scheduled-crons.php:76
1929
+ msgid "Scheduled Crons"
1930
+ msgstr "Crons programmés"
1931
+
1932
+ #: templates/debug/scheduled-crons.php:81
1933
+ msgid "Module"
1934
+ msgstr "Module"
1935
+
1936
+ #: templates/debug/scheduled-crons.php:82
1937
+ msgid "Module Type"
1938
+ msgstr "Type de module"
1939
+
1940
+ #: templates/debug/scheduled-crons.php:83
1941
+ msgid "Cron Type"
1942
+ msgstr "Type de Cron"
1943
+
1944
+ #: templates/debug/scheduled-crons.php:85
1945
+ msgid "Next"
1946
+ msgstr "Suivant"
1947
+
1948
+ #: templates/forms/affiliation.php:82
1949
+ msgid "Non-expiring"
1950
+ msgstr "Sans expiration"
1951
+
1952
+ #: templates/forms/affiliation.php:85
1953
+ msgid "Apply to become an affiliate"
1954
+ msgstr "Postuler pour devenir un affilié"
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 "Votre dossier d'affiliation pour %s a été accepté ! Identifiez-vous dans votre espace affilié sur : %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 "Merci d'avoir postulé à notre programme d'affiliation, nous regarderons votre dossier durant les 14 prochains jours et nous reviendrons vers vous avec d'autres informations."
1963
+
1964
+ #: templates/forms/affiliation.php:122
1965
+ msgid "Your affiliation account was temporarily suspended."
1966
+ msgstr "Votre compte affilié a été suspendu temporairement."
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 "Merci d'avoir postulé à notre programme d'affiliation, malheureusement, nous avons décidé pour le moment de décliner votre dossier. Merci d'essayer à nouveau d'ici 30 jours."
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 "Suite à une violation de nos conditions d'affiliation, nous avons décidé de bloquer temporairement votre compte d'affilié. Si vous avez la moindre question, merci de contacter le support."
1975
+
1976
+ #: templates/forms/affiliation.php:141
1977
+ msgid "Like the %s? Become our ambassador and earn cash ;-)"
1978
+ msgstr "Vous aimez %s ? Devenez notre ambassadeur et gagnez du cash ;-)"
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 "Parrainez des nouveaux clients pour notre %s et gagnez une commission de %s sur chaque vente réussie que vous affiliez."
1983
+
1984
+ #: templates/forms/affiliation.php:145
1985
+ msgid "Program Summary"
1986
+ msgstr "Sommaire du programme"
1987
+
1988
+ #: templates/forms/affiliation.php:147
1989
+ msgid "%s commission when a customer purchases a new license."
1990
+ msgstr "Commission de %s quand un client achète une nouvelle licence."
1991
+
1992
+ #: templates/forms/affiliation.php:149
1993
+ msgid "Get commission for automated subscription renewals."
1994
+ msgstr "Obtenez des commissions pour les renouvellements automatiques d'abonnement."
1995
+
1996
+ #: templates/forms/affiliation.php:152
1997
+ msgid "%s tracking cookie after the first visit to maximize earnings potential."
1998
+ msgstr "Cookie de tracking de %s après la première visite pour maximiser les potentiels de gain."
1999
+
2000
+ #: templates/forms/affiliation.php:155
2001
+ msgid "Unlimited commissions."
2002
+ msgstr "Commissions illimitées."
2003
+
2004
+ #: templates/forms/affiliation.php:157
2005
+ msgid "%s minimum payout amount."
2006
+ msgstr "Montant de paiement minimum %s."
2007
+
2008
+ #: templates/forms/affiliation.php:158
2009
+ msgid "Payouts are in USD and processed monthly via PayPal."
2010
+ msgstr "Les paiements se font en Dollars US et sont effectués mensuellement via 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 "Comme nous bloquons sur 30 jours pour les remboursements éventuels, seules sont payées les commissions de plus de 30 jours."
2015
+
2016
+ #: templates/forms/affiliation.php:162
2017
+ msgid "Affiliate"
2018
+ msgstr "Affiliation"
2019
+
2020
+ #: templates/forms/affiliation.php165, templates/forms/resend-key.php:23
2021
+ msgid "Email address"
2022
+ msgstr "Adresse email"
2023
+
2024
+ #: templates/forms/affiliation.php:169
2025
+ msgid "Full name"
2026
+ msgstr "Nom complet"
2027
+
2028
+ #: templates/forms/affiliation.php:173
2029
+ msgid "PayPal account email address"
2030
+ msgstr "Adresse email du compte PayPal"
2031
+
2032
+ #: templates/forms/affiliation.php:177
2033
+ msgid "Where are you going to promote the %s?"
2034
+ msgstr "Où allez-vous faire la promotion du %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 "Indiquez l'adresse de votre site ou d'autres sites sur lesquels vous pensez faire la promotion du %s"
2039
+
2040
+ #: templates/forms/affiliation.php:181
2041
+ msgid "Add another domain"
2042
+ msgstr "Ajouter une autre adresse"
2043
+
2044
+ #: templates/forms/affiliation.php:185
2045
+ msgid "Extra Domains"
2046
+ msgstr "Adresses supplémentaires"
2047
+
2048
+ #: templates/forms/affiliation.php:186
2049
+ msgid "Extra domains where you will be marketing the product from."
2050
+ msgstr "Adresses supplémentaires depuis lesquelles vous ferez la promotion du produit."
2051
+
2052
+ #: templates/forms/affiliation.php:196
2053
+ msgid "Promotion methods"
2054
+ msgstr "Méthodes de promotion"
2055
+
2056
+ #: templates/forms/affiliation.php:199
2057
+ msgid "Social media (Facebook, Twitter, etc.)"
2058
+ msgstr "Réseaux sociaux (Facebook, Twitter, etc.)"
2059
+
2060
+ #: templates/forms/affiliation.php:203
2061
+ msgid "Mobile apps"
2062
+ msgstr "Applications mobiles"
2063
+
2064
+ #: templates/forms/affiliation.php:207
2065
+ msgid "Website, email, and social media statistics (optional)"
2066
+ msgstr "Statistiques du site web, de l'adresse email et des réseaux sociaux (optionnel)"
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 "N'hésitez pas à indiquer des statistiques pertinentes concernant votre site ou vos réseaux sociaux telles que le nombre de visiteurs mensuel, le nombre d'abonnés, de followers, etc... (C'est informations resteront confidentielles)"
2071
+
2072
+ #: templates/forms/affiliation.php:214
2073
+ msgid "How will you promote us?"
2074
+ msgstr "Comment allez-vous faire de la promotion ?"
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 "Merci d'indiquer en détail comment vous allez faire la promotion du %s (en étant aussi précis que possible)"
2079
+
2080
+ #: templates/forms/affiliation.php223, templates/forms/resend-key.php:22
2081
+ msgid "Cancel"
2082
+ msgstr "Annuler"
2083
+
2084
+ #: templates/forms/affiliation.php:225
2085
+ msgid "Become an affiliate"
2086
+ msgstr "Devenir un affilié"
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 "Merci d'indiquer le code de licence que vous avez reçu par email juste après l'achat :"
2091
+
2092
+ #: templates/forms/license-activation.php:25
2093
+ msgid "Update License"
2094
+ msgstr "Mettre à jour la licence"
2095
+
2096
+ #: templates/forms/optout.php:30
2097
+ msgctxt "verb"
2098
+ msgid "Opt Out"
2099
+ msgstr "Désinscription"
2100
+
2101
+ #: templates/forms/optout.php:31
2102
+ msgctxt "verb"
2103
+ msgid "Opt In"
2104
+ msgstr "Inscription"
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 "Le suivi d'utilisation de %s nous permet de l'améliorer. Apporter une meilleure expérience pour l'utilisateur, définir quelles seront les nouvelles fonctionnalités, ce genre de choses. Aussi nous vous serions reconnaissant si vous acceptiez de nous permettre de continuer à récupérer des informations."
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 "En cliquant \"Désincription\", nous n'enverrons plus d'informations de %s à %s."
2113
+
2114
+ #: templates/forms/premium-versions-upgrade-handler.php:24
2115
+ msgid "There is a new version of %s available."
2116
+ msgstr "Il y a une nouvelle version disponible de %s. "
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 "%sRenouveler 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."
2121
+
2122
+ #: templates/forms/premium-versions-upgrade-handler.php:34
2123
+ msgid "New Version Available"
2124
+ msgstr "Une nouvelle version est disponible"
2125
+
2126
+ #: templates/forms/premium-versions-upgrade-handler.php:36
2127
+ msgid "Renew license"
2128
+ msgstr "Renouvelez votre licence"
2129
+
2130
+ #: templates/forms/premium-versions-upgrade-handler.php:53
2131
+ msgctxt "close a window"
2132
+ msgid "Dismiss"
2133
+ msgstr "Fermer"
2134
+
2135
+ #: templates/forms/resend-key.php:21
2136
+ msgid "Send License Key"
2137
+ msgstr "Envoyer le code de la licence"
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 "Indiquez ci-dessous l'adresse email que vous avez utilisez pour la mise à jour et nous allons vous renvoyer le code de la licence."
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 "Vous êtes à 1 clic de commencer votre période d'essai gratuite de %1$s jours de la formule %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 "Pour être en accord avec les directives de WordPress.org, avant que nous commencions la période d'essai, nous vous demandons de nous permettre de récupérer votre nom d'utilisateur et des informations non sensibles du site afin de permettre au %s de communiquer avec %s pour vérifier les mises à jour et valider votre période d'essai."
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 "Activer la licence sur tous les sites du réseau."
2158
+
2159
+ #: templates/partials/network-activation.php:24
2160
+ msgid "Apply on all sites in the network."
2161
+ msgstr "Effectuer sur tous les sites dans le réseau."
2162
+
2163
+ #: templates/partials/network-activation.php:27
2164
+ msgid "Activate license on all pending sites."
2165
+ msgstr "Activer la licence sur tous les sites en attente."
2166
+
2167
+ #: templates/partials/network-activation.php:28
2168
+ msgid "Apply on all pending sites."
2169
+ msgstr "Activer sur tous les sites en attente."
2170
+
2171
+ #: templates/partials/network-activation.php36,
2172
+ #: templates/partials/network-activation.php:68
2173
+ msgid "allow"
2174
+ msgstr "autoriser"
2175
+
2176
+ #: templates/partials/network-activation.php38,
2177
+ #: templates/partials/network-activation.php:70
2178
+ msgid "delegate"
2179
+ msgstr "déléguer"
2180
+
2181
+ #: templates/partials/network-activation.php41,
2182
+ #: templates/partials/network-activation.php:73
2183
+ msgid "skip"
2184
+ msgstr "passer"
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 "Cliquez pour voir la capture d'écran %d en pleine taille"
2190
+
2191
+ #: templates/plugin-info/features.php:56
2192
+ msgid "Unlimited Updates"
2193
+ msgstr "Mises à jour illimitées"
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 "%s restante(s)"
2203
+
2204
+ #: templates/account/partials/activate-license-button.php:51
2205
+ msgid "Last license"
2206
+ msgstr "Dernière licence"
2207
+
2208
+ #: templates/account/partials/addon.php:111
2209
+ msgid "Cancelled"
2210
+ msgstr "Annulé"
2211
+
2212
+ #: templates/account/partials/addon.php:116
2213
+ msgid "Expired"
2214
+ msgstr "Expiré"
2215
+
2216
+ #: templates/account/partials/addon.php:121
2217
+ msgid "No expiration"
2218
+ msgstr "Pas d'expiration"
2219
+
2220
+ #: templates/account/partials/addon.php259,
2221
+ #: templates/account/partials/addon.php:312
2222
+ msgid "Activate this add-on"
2223
+ msgstr "Activer cet add-on"
2224
+
2225
+ #: templates/account/partials/site.php:181
2226
+ msgid "Owner Name"
2227
+ msgstr "Nom du propriétaire"
2228
+
2229
+ #: templates/account/partials/site.php:193
2230
+ msgid "Owner Email"
2231
+ msgstr "Email du propriétaire"
2232
+
2233
+ #: templates/account/partials/site.php:205
2234
+ msgid "Owner ID"
2235
+ msgstr "ID du propriétaire"
2236
+
2237
+ #: templates/account/partials/site.php:270
2238
+ msgid "Subscription"
2239
+ msgstr "Inscription"
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 "Désolé pour le dérangement et nous sommes là pour vous aider si vous nous le permettez."
2244
+
2245
+ #: templates/forms/deactivation/contact.php:22
2246
+ msgid "Contact Support"
2247
+ msgstr "Contacter l'Assistance"
2248
+
2249
+ #: templates/forms/deactivation/form.php:56
2250
+ msgid "Anonymous feedback"
2251
+ msgstr "Commentaire anonyme"
2252
+
2253
+ #: templates/forms/deactivation/form.php:63
2254
+ msgid "Deactivate"
2255
+ msgstr "Désactiver"
2256
+
2257
+ #: templates/forms/deactivation/form.php:65
2258
+ msgid "Activate %s"
2259
+ msgstr "Activer %s"
2260
+
2261
+ #: templates/forms/deactivation/form.php:76
2262
+ msgid "Quick feedback"
2263
+ msgstr "Commentaire rapide"
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 vous avez un instant, merci de nous indiquer pourquoi %s"
2268
+
2269
+ #: templates/forms/deactivation/form.php:80
2270
+ msgid "deactivating"
2271
+ msgstr "Désactivation"
2272
+
2273
+ #: templates/forms/deactivation/form.php:80
2274
+ msgid "switching"
2275
+ msgstr "Changement"
2276
+
2277
+ #: templates/forms/deactivation/form.php:269
2278
+ msgid "Submit & %s"
2279
+ msgstr "Envoyer & %s"
2280
+
2281
+ #: templates/forms/deactivation/form.php:290
2282
+ msgid "Kindly tell us the reason so we can improve."
2283
+ msgstr "S'il vous plait, dites nous pourquoi afin que nous puissions nous améliorer."
2284
+
2285
+ #: templates/forms/deactivation/form.php:411
2286
+ msgid "Yes - %s"
2287
+ msgstr "Oui - %s"
2288
+
2289
+ #: templates/forms/deactivation/form.php:418
2290
+ msgid "Skip & %s"
2291
+ msgstr "Zapper & %s"
2292
+
2293
+ #: templates/forms/deactivation/retry-skip.php:21
2294
+ msgid "Click here to use the plugin anonymously"
2295
+ msgstr "Cliquer ici pour utiliser le plugin anonymement"
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 "Peut-être que cela vous a échappé mais vous n'êtes pas obligé de partager la moindre information et vous pouvez juste %s l'enregistrement."
freemius/languages/freemius-he_IL.po CHANGED
@@ -1,2300 +1,2300 @@
1
- # Copyright (C) 2018 freemius
2
- # This file is distributed under the same license as the freemius package.
3
- # Translators:
4
- # Rami Yushuvaev <r_a_m_i@hotmail.com>, 2017
5
- # Vova Feldman <vova@freemius.com>, 2017-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-05-27 16:16+0000\n"
12
- "Last-Translator: Vova Feldman <vova@freemius.com>\n"
13
- "Language: he_IL\n"
14
- "Language-Team: Hebrew (Israel) (http://www.transifex.com/freemius/wordpress-sdk/language/he_IL/)\n"
15
- "Content-Type: text/plain; charset=UTF-8\n"
16
- "Content-Transfer-Encoding: 8bit\n"
17
- "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\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:1551
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:1553
30
- msgid "Error"
31
- msgstr "שגיאה"
32
-
33
- #: includes/class-freemius.php:1871
34
- msgid "I found a better %s"
35
- msgstr "מצאתי %s יותר טוב"
36
-
37
- #: includes/class-freemius.php:1873
38
- msgid "What's the %s's name?"
39
- msgstr "What's the %s's name?"
40
-
41
- #: includes/class-freemius.php:1879
42
- msgid "It's a temporary %s. I'm just debugging an issue."
43
- msgstr "It's a temporary %s. I'm just debugging an issue."
44
-
45
- #: includes/class-freemius.php:1881
46
- msgid "Deactivation"
47
- msgstr "דיאקטיבציה"
48
-
49
- #: includes/class-freemius.php:1882
50
- msgid "Theme Switch"
51
- msgstr "החלפת תֵמָה"
52
-
53
- #: includes/class-freemius.php1891, templates/forms/resend-key.php:24
54
- msgid "Other"
55
- msgstr "אחר"
56
-
57
- #: includes/class-freemius.php:1899
58
- msgid "I no longer need the %s"
59
- msgstr "I no longer need the %s"
60
-
61
- #: includes/class-freemius.php:1906
62
- msgid "I only needed the %s for a short period"
63
- msgstr "I only needed the %s for a short period"
64
-
65
- #: includes/class-freemius.php:1912
66
- msgid "The %s broke my site"
67
- msgstr "ה%s הרס לי את האתר"
68
-
69
- #: includes/class-freemius.php:1919
70
- msgid "The %s suddenly stopped working"
71
- msgstr "ה%s הפסיק פתאום לעבוד"
72
-
73
- #: includes/class-freemius.php:1929
74
- msgid "I can't pay for it anymore"
75
- msgstr "אני לא יכול/ה להמשיך לשלם על זה"
76
-
77
- #: includes/class-freemius.php:1931
78
- msgid "What price would you feel comfortable paying?"
79
- msgstr "מה המחיר שכן תרגיש\\י בנוח לשלם?"
80
-
81
- #: includes/class-freemius.php:1937
82
- msgid "I don't like to share my information with you"
83
- msgstr "אני לא אוהב את הרעיון של שיתוף מידע איתכם"
84
-
85
- #: includes/class-freemius.php:1958
86
- msgid "The %s didn't work"
87
- msgstr "ה%s לא עבד"
88
-
89
- #: includes/class-freemius.php:1968
90
- msgid "I couldn't understand how to make it work"
91
- msgstr "לא הצלחתי להבין איך לגרום לזה לעבוד"
92
-
93
- #: includes/class-freemius.php:1976
94
- msgid "The %s is great, but I need specific feature that you don't support"
95
- msgstr "The %s is great, but I need specific feature that you don't support"
96
-
97
- #: includes/class-freemius.php:1978
98
- msgid "What feature?"
99
- msgstr "איזה פיטצ'ר?"
100
-
101
- #: includes/class-freemius.php:1982
102
- msgid "The %s is not working"
103
- msgstr "ה%s לא עובד"
104
-
105
- #: includes/class-freemius.php:1984
106
- msgid "Kindly share what didn't work so we can fix it for future users..."
107
- msgstr "אנא שתפ\\י מה לא עבד כדי שנוכל לתקן זאת עבור משתמשים עתידיים..."
108
-
109
- #: includes/class-freemius.php:1988
110
- msgid "It's not what I was looking for"
111
- msgstr "חיפשתי משהו אחר"
112
-
113
- #: includes/class-freemius.php:1990
114
- msgid "What you've been looking for?"
115
- msgstr "מה חיפשת?"
116
-
117
- #: includes/class-freemius.php:1994
118
- msgid "The %s didn't work as expected"
119
- msgstr "ה%s לא עבד כמצופה"
120
-
121
- #: includes/class-freemius.php:1996
122
- msgid "What did you expect?"
123
- msgstr "למה ציפית?"
124
-
125
- #: includes/class-freemius.php2729, templates/debug.php:20
126
- msgid "Freemius Debug"
127
- msgstr "ניפוי תקלות פרימיוס"
128
-
129
- #: includes/class-freemius.php:3402
130
- msgid "I don't know what is cURL or how to install it, help me!"
131
- msgstr "אין לי מושג מה זה cURL או איך להתקין אותו - אשמח לעזרה!"
132
-
133
- #: includes/class-freemius.php:3404
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 "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."
136
-
137
- #: includes/class-freemius.php:3411
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:3516
142
- msgid "Yes - do your thing"
143
- msgstr "כן - בצעו את מה שצריך"
144
-
145
- #: includes/class-freemius.php:3521
146
- msgid "No - just deactivate"
147
- msgstr "לא - פשוט כבה"
148
-
149
- #: includes/class-freemius.php3566, includes/class-freemius.php4066,
150
- #: includes/class-freemius.php5127, includes/class-freemius.php10941,
151
- #: includes/class-freemius.php14205, includes/class-freemius.php14257,
152
- #: includes/class-freemius.php14319, includes/class-freemius.php16448,
153
- #: includes/class-freemius.php16458, includes/class-freemius.php17014,
154
- #: includes/class-freemius.php17032, includes/class-freemius.php17130,
155
- #: includes/class-freemius.php17866, templates/add-ons.php:43
156
- msgctxt "exclamation"
157
- msgid "Oops"
158
- msgstr "אופס"
159
-
160
- #: includes/class-freemius.php:3635
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 "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."
163
-
164
- #: includes/class-freemius.php:4063
165
- msgctxt "addonX cannot run without pluginY"
166
- msgid "%s cannot run without %s."
167
- msgstr "%s לא יכול לעבוד ללא %s."
168
-
169
- #: includes/class-freemius.php:4064
170
- msgctxt "addonX cannot run..."
171
- msgid "%s cannot run without the plugin."
172
- msgstr "ההרחבה %s אינה יכולה לפעול ללא התוסף."
173
-
174
- #: includes/class-freemius.php4176, includes/class-freemius.php4201,
175
- #: includes/class-freemius.php:17103
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:4815
180
- msgid "Premium %s version was successfully activated."
181
- msgstr "Premium %s version was successfully activated."
182
-
183
- #: includes/class-freemius.php4827, includes/class-freemius.php:6660
184
- msgctxt ""
185
- msgid "W00t"
186
- msgstr "יש"
187
-
188
- #: includes/class-freemius.php:4842
189
- msgid "You have a %s license."
190
- msgstr "יש לך רישיון %s."
191
-
192
- #: includes/class-freemius.php4846, includes/class-freemius.php13626,
193
- #: includes/class-freemius.php13637, includes/class-freemius.php16376,
194
- #: includes/class-freemius.php16676, includes/class-freemius.php16741,
195
- #: includes/class-freemius.php:16891
196
- msgctxt "interjection expressing joy or exuberance"
197
- msgid "Yee-haw"
198
- msgstr "יששש"
199
-
200
- #: includes/class-freemius.php:5110
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:5114
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.php5123, templates/add-ons.php99,
209
- #: templates/account/partials/addon.php:283
210
- msgid "More information about %s"
211
- msgstr "מידע נוסף אודות %s"
212
-
213
- #: includes/class-freemius.php:5124
214
- msgid "Purchase License"
215
- msgstr "קניית רישיון"
216
-
217
- #: includes/class-freemius.php6035, templates/connect.php:161
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:6039
222
- msgid "start the trial"
223
- msgstr "התחל תקופת ניסיון"
224
-
225
- #: includes/class-freemius.php6040, templates/connect.php:165
226
- msgid "complete the install"
227
- msgstr "השלם התקנה"
228
-
229
- #: includes/class-freemius.php:6147
230
- msgid "You are just one step away - %s"
231
- msgstr "You are just one step away - %s"
232
-
233
- #: includes/class-freemius.php:6150
234
- msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
235
- msgid "Complete \"%s\" Activation Now"
236
- msgstr "השלם הפעלת \"%s\" עכשיו"
237
-
238
- #: includes/class-freemius.php:6227
239
- msgid "We made a few tweaks to the %s, %s"
240
- msgstr "We made a few tweaks to the %s, %s"
241
-
242
- #: includes/class-freemius.php:6231
243
- msgid "Opt in to make \"%s\" Better!"
244
- msgstr "Opt in to make \"%s\" Better!"
245
-
246
- #: includes/class-freemius.php:6659
247
- msgid "The upgrade of %s was successfully completed."
248
- msgstr "The upgrade of %s was successfully completed."
249
-
250
- #: includes/class-freemius.php8384, includes/class-fs-plugin-updater.php581,
251
- #: includes/class-fs-plugin-updater.php733,
252
- #: includes/class-fs-plugin-updater.php739, templates/auto-installation.php:32
253
- msgid "Add-On"
254
- msgstr "Add-On"
255
-
256
- #: includes/class-freemius.php8386, templates/debug.php349,
257
- #: templates/debug.php:510
258
- msgid "Plugin"
259
- msgstr "תוסף"
260
-
261
- #: includes/class-freemius.php8387, templates/debug.php349,
262
- #: templates/debug.php510, templates/forms/deactivation/form.php:64
263
- msgid "Theme"
264
- msgstr "תבנית"
265
-
266
- #: includes/class-freemius.php:10808
267
- msgid "invalid_site_details_collection"
268
- msgstr "invalid_site_details_collection"
269
-
270
- #: includes/class-freemius.php:10928
271
- msgid "We couldn't find your email address in the system, are you sure it's the right address?"
272
- msgstr "We couldn't find your email address in the system, are you sure it's the right address?"
273
-
274
- #: includes/class-freemius.php:10930
275
- msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
276
- msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?"
277
-
278
- #: includes/class-freemius.php:11166
279
- msgid "Account is pending activation."
280
- msgstr "Account is pending activation."
281
-
282
- #: includes/class-freemius.php:13608
283
- msgid "%s activation was successfully completed."
284
- msgstr "הפעלת %s הושלמה בהצלחה."
285
-
286
- #: includes/class-freemius.php:13622
287
- msgid "Your account was successfully activated with the %s plan."
288
- msgstr "חשבונך הופעל בהצלחה עם חבילת %s."
289
-
290
- #: includes/class-freemius.php13633, includes/class-freemius.php:16737
291
- msgid "Your trial has been successfully started."
292
- msgstr "הניסיון שלך הופעל בהצלחה."
293
-
294
- #: includes/class-freemius.php14203, includes/class-freemius.php14255,
295
- #: includes/class-freemius.php:14317
296
- msgid "Couldn't activate %s."
297
- msgstr "לא ניתן להפעיל את %s."
298
-
299
- #: includes/class-freemius.php14204, includes/class-freemius.php14256,
300
- #: includes/class-freemius.php:14318
301
- msgid "Please contact us with the following message:"
302
- msgstr "אנא צור איתנו קשר יחד עם ההודעה הבאה:"
303
-
304
- #: includes/class-freemius.php14666, includes/class-freemius.php:18929
305
- msgid "Upgrade"
306
- msgstr "שדרג"
307
-
308
- #: includes/class-freemius.php:14672
309
- msgid "Start Trial"
310
- msgstr "התחל תקופת ניסיון"
311
-
312
- #: includes/class-freemius.php:14674
313
- msgid "Pricing"
314
- msgstr "מחירון"
315
-
316
- #: includes/class-freemius.php14734, includes/class-freemius.php:14736
317
- msgid "Affiliation"
318
- msgstr "אפיליאציה"
319
-
320
- #: includes/class-freemius.php14756, includes/class-freemius.php14758,
321
- #: templates/account.php146, templates/debug.php:314
322
- msgid "Account"
323
- msgstr "חשבון"
324
-
325
- #: includes/class-freemius.php14769, includes/class-freemius.php14771,
326
- #: includes/customizer/class-fs-customizer-support-section.php:60
327
- msgid "Contact Us"
328
- msgstr "יצירת קשר"
329
-
330
- #: includes/class-freemius.php14781, includes/class-freemius.php14783,
331
- #: includes/class-freemius.php18939, templates/account.php96,
332
- #: templates/account/partials/addon.php:37
333
- msgid "Add-Ons"
334
- msgstr "Add-Ons"
335
-
336
- #: includes/class-freemius.php14815, templates/pricing.php:97
337
- msgctxt "noun"
338
- msgid "Pricing"
339
- msgstr "מחירון"
340
-
341
- #: includes/class-freemius.php15009,
342
- #: includes/customizer/class-fs-customizer-support-section.php:67
343
- msgid "Support Forum"
344
- msgstr "פורום תמיכה"
345
-
346
- #: includes/class-freemius.php:15794
347
- msgid "Your email has been successfully verified - you are AWESOME!"
348
- msgstr "Your email has been successfully verified - you are AWESOME!"
349
-
350
- #: includes/class-freemius.php:15795
351
- msgctxt "a positive response"
352
- msgid "Right on"
353
- msgstr "מעולה"
354
-
355
- #: includes/class-freemius.php:16367
356
- msgid "Your %s Add-on plan was successfully upgraded."
357
- msgstr "חבילת ההרחבה %s שודרגה בהצלחה."
358
-
359
- #: includes/class-freemius.php:16369
360
- msgid "%s Add-on was successfully purchased."
361
- msgstr "ההרחבה %s נרכשה בהצלחה."
362
-
363
- #: includes/class-freemius.php:16372
364
- msgid "Download the latest version"
365
- msgstr "הורד את הגרסה האחרונה"
366
-
367
- #: includes/class-freemius.php:16444
368
- msgctxt "%1s - plugin title, %2s - API domain"
369
- msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
370
- msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
371
-
372
- #: includes/class-freemius.php16447, includes/class-freemius.php16862,
373
- #: includes/class-freemius.php:16927
374
- msgid "Error received from the server:"
375
- msgstr "הוחזרה שגיאה מהשרת:"
376
-
377
- #: includes/class-freemius.php:16457
378
- msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
379
- msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
380
-
381
- #: includes/class-freemius.php16639, includes/class-freemius.php16867,
382
- #: includes/class-freemius.php:16910
383
- msgctxt ""
384
- msgid "Hmm"
385
- msgstr "אממ"
386
-
387
- #: includes/class-freemius.php:16652
388
- 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."
389
- 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."
390
-
391
- #: includes/class-freemius.php16653, templates/account.php98,
392
- #: templates/add-ons.php130, templates/account/partials/addon.php:39
393
- msgctxt "trial period"
394
- msgid "Trial"
395
- msgstr "ניסיון"
396
-
397
- #: includes/class-freemius.php:16658
398
- msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
399
- msgstr "שידרגתי את החשבון שלי אבל כשאני מנסה לבצע סנכרון לרישיון החבילה נשארת %s."
400
-
401
- #: includes/class-freemius.php16662, includes/class-freemius.php:16719
402
- msgid "Please contact us here"
403
- msgstr "אנא צור איתנו קשר כאן"
404
-
405
- #: includes/class-freemius.php:16672
406
- msgid "Your plan was successfully upgraded."
407
- msgstr "החבילה שודרגה בהצלחה."
408
-
409
- #: includes/class-freemius.php:16689
410
- msgid "Your plan was successfully changed to %s."
411
- msgstr "החבילה עודכנה בהצלחה אל %s."
412
-
413
- #: includes/class-freemius.php:16705
414
- msgid "Your license has expired. You can still continue using the free %s forever."
415
- msgstr "Your license has expired. You can still continue using the free %s forever."
416
-
417
- #: includes/class-freemius.php:16707
418
- msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
419
- msgstr "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
420
-
421
- #: includes/class-freemius.php:16715
422
- msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
423
- msgstr "רשיונך בוטל. אם לדעתך זו טעות, נא ליצור קשר עם התמיכה."
424
-
425
- #: includes/class-freemius.php:16728
426
- 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."
427
- 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."
428
-
429
- #: includes/class-freemius.php:16751
430
- msgid "Your free trial has expired. You can still continue using all our free features."
431
- msgstr "תקופת הניסיון שלך הסתיימה. הפיטצ'רים החינאמיים עדיין ניתנים לשימוש."
432
-
433
- #: includes/class-freemius.php:16753
434
- msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
435
- msgstr "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
436
-
437
- #: includes/class-freemius.php:16858
438
- msgid "It looks like the license could not be activated."
439
- msgstr "נראה שלא ניתן להפעיל את הרישיון."
440
-
441
- #: includes/class-freemius.php:16888
442
- msgid "Your license was successfully activated."
443
- msgstr "הרישיון הופעל בהצלחה."
444
-
445
- #: includes/class-freemius.php:16914
446
- msgid "It looks like your site currently doesn't have an active license."
447
- msgstr "נראה לאתר עדיין אין רישיון פעיל."
448
-
449
- #: includes/class-freemius.php:16926
450
- msgid "It looks like the license deactivation failed."
451
- msgstr "נראה שניתוק הרישיון נכשל."
452
-
453
- #: includes/class-freemius.php:16954
454
- msgid "Your license was successfully deactivated, you are back to the %s plan."
455
- msgstr "רישיונך נותק בהצלחה, חזרת לחבילת %s"
456
-
457
- #: includes/class-freemius.php:16955
458
- msgid "O.K"
459
- msgstr "אוקיי"
460
-
461
- #: includes/class-freemius.php:17003
462
- msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
463
- msgstr "Your plan was successfully downgraded. Your %s plan license will expire in %s."
464
-
465
- #: includes/class-freemius.php:17013
466
- msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
467
- msgstr "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
468
-
469
- #: includes/class-freemius.php:17037
470
- msgid "You are already running the %s in a trial mode."
471
- msgstr "You are already running the %s in a trial mode."
472
-
473
- #: includes/class-freemius.php:17048
474
- msgid "You already utilized a trial before."
475
- msgstr "הניסיון כבר נוצל בעבר."
476
-
477
- #: includes/class-freemius.php:17062
478
- msgid "Plan %s do not exist, therefore, can't start a trial."
479
- msgstr "החבילה %s אינה קיימת, לכן, לא ניתן להתחיל תקופת ניסיון."
480
-
481
- #: includes/class-freemius.php:17073
482
- msgid "Plan %s does not support a trial period."
483
- msgstr "תוכנית %s אינה תומכת בתקופת ניסיון."
484
-
485
- #: includes/class-freemius.php:17084
486
- msgid "None of the %s's plans supports a trial period."
487
- msgstr "None of the %s's plans supports a trial period."
488
-
489
- #: includes/class-freemius.php:17134
490
- msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
491
- msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
492
-
493
- #: includes/class-freemius.php:17185
494
- msgid "Your %s free trial was successfully cancelled."
495
- msgstr "תקופת הניסיון החינמית של %s בוטלה בהצלחה."
496
-
497
- #: includes/class-freemius.php:17190
498
- msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
499
- msgstr "נראה שיש תקלה זמנית המונעת את ביטול הניסיון. אנא נסו שוב בעוד כמה דקות."
500
-
501
- #: includes/class-freemius.php:17474
502
- msgid "Version %s was released."
503
- msgstr "גרסה %s הושקה."
504
-
505
- #: includes/class-freemius.php:17474
506
- msgid "Please download %s."
507
- msgstr "נא להוריד את %s."
508
-
509
- #: includes/class-freemius.php:17481
510
- msgid "the latest %s version here"
511
- msgstr "גרסת ה-%s האחרונה כאן"
512
-
513
- #: includes/class-freemius.php:17486
514
- msgid "New"
515
- msgstr "חדש"
516
-
517
- #: includes/class-freemius.php:17491
518
- msgid "Seems like you got the latest release."
519
- msgstr "נראה שיש לך את הגרסה האחרונה."
520
-
521
- #: includes/class-freemius.php:17492
522
- msgid "You are all good!"
523
- msgstr "את\\ה מסודר!"
524
-
525
- #: includes/class-freemius.php:17758
526
- msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
527
- msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
528
-
529
- #: includes/class-freemius.php:17893
530
- msgid "Site successfully opted in."
531
- msgstr "Site successfully opted in."
532
-
533
- #: includes/class-freemius.php17894, includes/class-freemius.php:18671
534
- msgid "Awesome"
535
- msgstr "אדיר"
536
-
537
- #: includes/class-freemius.php17910, templates/forms/optout.php:32
538
- msgid "We appreciate your help in making the %s better by letting us track some usage data."
539
- msgstr "We appreciate your help in making the %s better by letting us track some usage data."
540
-
541
- #: includes/class-freemius.php:17911
542
- msgid "Thank you!"
543
- msgstr "תודה רבה!"
544
-
545
- #: includes/class-freemius.php:17918
546
- msgid "We will no longer be sending any usage data of %s on %s to %s."
547
- msgstr "We will no longer be sending any usage data of %s on %s to %s."
548
-
549
- #: includes/class-freemius.php:18033
550
- 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."
551
- 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."
552
-
553
- #: includes/class-freemius.php:18039
554
- msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
555
- msgstr "תודה על אישור ביצוע החלפת הבעלות. הרגע נשלח מייל ל-%s כדי לקבל אישור סופי."
556
-
557
- #: includes/class-freemius.php:18044
558
- msgid "%s is the new owner of the account."
559
- msgstr "%s הינו הבעלים החד של חשבון זה."
560
-
561
- #: includes/class-freemius.php:18046
562
- msgctxt "as congratulations"
563
- msgid "Congrats"
564
- msgstr "מזל טוב"
565
-
566
- #: includes/class-freemius.php:18066
567
- msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
568
- msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered."
569
-
570
- #: includes/class-freemius.php:18067
571
- msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
572
- msgstr "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
573
-
574
- #: includes/class-freemius.php:18074
575
- msgid "Change Ownership"
576
- msgstr "עדכון בעלות"
577
-
578
- #: includes/class-freemius.php:18082
579
- msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
580
- msgstr "כתובת הדואל שלך עודכנה בהצלחה. הודעת אישור אמורה להתקבל בדואל שלך ברגעים הקרובים."
581
-
582
- #: includes/class-freemius.php:18094
583
- msgid "Please provide your full name."
584
- msgstr "נא למלא את שמך המלא."
585
-
586
- #: includes/class-freemius.php:18099
587
- msgid "Your name was successfully updated."
588
- msgstr "שמך עודכן בהצלחה."
589
-
590
- #: includes/class-freemius.php:18160
591
- msgid "You have successfully updated your %s."
592
- msgstr "עידכנת בהצלחה את ה%s."
593
-
594
- #: includes/class-freemius.php:18300
595
- msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
596
- msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server."
597
-
598
- #: includes/class-freemius.php:18301
599
- msgctxt "advance notice of something that will need attention."
600
- msgid "Heads up"
601
- msgstr "לתשמות לבך"
602
-
603
- #: includes/class-freemius.php:18711
604
- msgctxt "exclamation"
605
- msgid "Hey"
606
- msgstr "היי"
607
-
608
- #: includes/class-freemius.php:18711
609
- msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
610
- msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
611
-
612
- #: includes/class-freemius.php:18719
613
- msgid "No commitment for %s days - cancel anytime!"
614
- msgstr "ללא התחייבות ל-%s ימין - בטלו בכל רגע!"
615
-
616
- #: includes/class-freemius.php:18720
617
- msgid "No credit card required"
618
- msgstr "לא נדרש כרטיס אשראי"
619
-
620
- #: includes/class-freemius.php18727, templates/forms/trial-start.php:53
621
- msgctxt "call to action"
622
- msgid "Start free trial"
623
- msgstr "התחלת ניסיון חינם"
624
-
625
- #: includes/class-freemius.php:18804
626
- 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!"
627
- 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!"
628
-
629
- #: includes/class-freemius.php:18813
630
- msgid "Learn more"
631
- msgstr "Learn more"
632
-
633
- #: includes/class-freemius.php18963, templates/account.php394,
634
- #: templates/account.php497, templates/connect.php169,
635
- #: templates/connect.php408, templates/forms/license-activation.php24,
636
- #: templates/account/partials/addon.php:230
637
- msgid "Activate License"
638
- msgstr "הפעלת רישיון"
639
-
640
- #: includes/class-freemius.php18964, templates/account.php457,
641
- #: templates/account.php496, templates/account/partials/site.php:256
642
- msgid "Change License"
643
- msgstr "שינוי רישיון"
644
-
645
- #: includes/class-freemius.php19046, templates/account/partials/site.php:161
646
- msgid "Opt Out"
647
- msgstr "Opt Out"
648
-
649
- #: includes/class-freemius.php19048, includes/class-freemius.php19053,
650
- #: templates/account/partials/site.php43,
651
- #: templates/account/partials/site.php:161
652
- msgid "Opt In"
653
- msgstr "Opt In"
654
-
655
- #: includes/class-freemius.php:19245
656
- msgid "Please follow these steps to complete the upgrade"
657
- msgstr "נא לבצע את הצעדים הבאים להשלמת השידרוג"
658
-
659
- #: includes/class-freemius.php:19249
660
- msgid "Download the latest %s version"
661
- msgstr "הורד\\י את גרסת ה-%s העדכנית"
662
-
663
- #: includes/class-freemius.php:19253
664
- msgid "Upload and activate the downloaded version"
665
- msgstr "העלה\\י והפעיל\\י את הגרסה שהורדת"
666
-
667
- #: includes/class-freemius.php:19255
668
- msgid "How to upload and activate?"
669
- msgstr "איך להעלות ולהפעיל?"
670
-
671
- #: includes/class-freemius.php:19384
672
- msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
673
- msgstr "%sClick here%s to choose the sites where you'd like to activate the license on."
674
-
675
- #: includes/class-freemius.php:19545
676
- msgid "Auto installation only works for opted-in users."
677
- msgstr "Auto installation only works for opted-in users."
678
-
679
- #: includes/class-freemius.php19555, includes/class-freemius.php19588,
680
- #: includes/class-fs-plugin-updater.php713,
681
- #: includes/class-fs-plugin-updater.php:727
682
- msgid "Invalid module ID."
683
- msgstr "מזהה המודול לא תקני."
684
-
685
- #: includes/class-freemius.php19564, includes/class-fs-plugin-updater.php:747
686
- msgid "Premium version already active."
687
- msgstr "הגרסה בתשלום כבר פעילה."
688
-
689
- #: includes/class-freemius.php:19571
690
- msgid "You do not have a valid license to access the premium version."
691
- msgstr "אין ברשותך רישיון בר תוקף לשימוש בגרסת הפרימיום."
692
-
693
- #: includes/class-freemius.php:19578
694
- msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
695
- msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version."
696
-
697
- #: includes/class-freemius.php19596, includes/class-fs-plugin-updater.php:746
698
- msgid "Premium add-on version already installed."
699
- msgstr "Premium add-on version already installed."
700
-
701
- #: includes/class-freemius.php:19941
702
- msgid "View paid features"
703
- msgstr "צפה בפיטצ'רים שבתשלום"
704
-
705
- #: includes/class-freemius.php:20251
706
- msgid "Thank you so much for using %s and its add-ons!"
707
- msgstr "Thank you so much for using %s and its add-ons!"
708
-
709
- #: includes/class-freemius.php:20252
710
- msgid "Thank you so much for using %s!"
711
- msgstr "אנו מודים לך על היותך כמשתמש של %s!"
712
-
713
- #: includes/class-freemius.php:20258
714
- msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
715
- msgstr "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
716
-
717
- #: includes/class-freemius.php:20262
718
- msgid "Thank you so much for using our products!"
719
- msgstr "אנו מודים לך על השימוש במוצרים שלנו!"
720
-
721
- #: includes/class-freemius.php:20263
722
- msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
723
- msgstr "You've already opted-in to our usage-tracking, which helps us keep improving them."
724
-
725
- #: includes/class-freemius.php:20282
726
- msgid "%s and its add-ons"
727
- msgstr "%s and its add-ons"
728
-
729
- #: includes/class-freemius.php:20291
730
- msgid "Products"
731
- msgstr "מוצרים"
732
-
733
- #: includes/class-freemius.php20298, templates/connect.php:259
734
- msgid "Yes"
735
- msgstr "כן"
736
-
737
- #: includes/class-freemius.php20299, templates/connect.php:260
738
- msgid "send me security & feature updates, educational content and offers."
739
- msgstr "תשלחו לי עדכוני אבטחה ופיטצ'רים, תוכן חינוכי, ומידע אודות מבצעים."
740
-
741
- #: includes/class-freemius.php20300, templates/connect.php:265
742
- msgid "No"
743
- msgstr "לא"
744
-
745
- #: includes/class-freemius.php20302, templates/connect.php:267
746
- msgid "do %sNOT%s send me security & feature updates, educational content and offers."
747
- msgstr "%sאל%2$s תשלחו לי עדכוני אבטחה, פיטצ'רים, תוכן חינוכי, ומידע על מבצעים."
748
-
749
- #: includes/class-freemius.php:20312
750
- 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 🙂"
751
- 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 🙂"
752
-
753
- #: includes/class-freemius.php20314, templates/connect.php:274
754
- msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
755
- msgstr "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
756
-
757
- #: includes/class-freemius.php:20598
758
- msgid "License key is empty."
759
- msgstr "מפתח הרישיון ריק."
760
-
761
- #: includes/class-fs-plugin-updater.php184,
762
- #: includes/class-fs-plugin-updater.php:219
763
- msgid "%sRenew your license now%s to access version %s security & feature updates, and support."
764
- msgstr "%sRenew your license now%s to access version %s security & feature updates, and support."
765
-
766
- #: includes/class-fs-plugin-updater.php:776
767
- msgid "Installing plugin: %s"
768
- msgstr "Installing plugin: %s"
769
-
770
- #: includes/class-fs-plugin-updater.php:817
771
- msgid "Unable to connect to the filesystem. Please confirm your credentials."
772
- msgstr "Unable to connect to the filesystem. Please confirm your credentials."
773
-
774
- #: includes/class-fs-plugin-updater.php:923
775
- msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
776
- msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
777
-
778
- #: includes/fs-plugin-info-dialog.php336,
779
- #: templates/account/partials/addon.php:287
780
- msgctxt "verb"
781
- msgid "Purchase"
782
- msgstr "רכישה"
783
-
784
- #: includes/fs-plugin-info-dialog.php:339
785
- msgid "Start my free %s"
786
- msgstr "התחל את %s הניסיון שלי"
787
-
788
- #: includes/fs-plugin-info-dialog.php:380
789
- msgid "Install Free Version Now"
790
- msgstr "התקן גרסה חינאמית עכשיו"
791
-
792
- #: includes/fs-plugin-info-dialog.php381, templates/auto-installation.php111,
793
- #: templates/account/partials/addon.php267,
794
- #: templates/account/partials/addon.php:317
795
- msgid "Install Now"
796
- msgstr "התקן עכשיו"
797
-
798
- #: includes/fs-plugin-info-dialog.php:392
799
- msgctxt "as download latest version"
800
- msgid "Download Latest Free Version"
801
- msgstr "Download Latest Free Version"
802
-
803
- #: includes/fs-plugin-info-dialog.php393, templates/account.php80,
804
- #: templates/account/partials/addon.php:21
805
- msgctxt "as download latest version"
806
- msgid "Download Latest"
807
- msgstr "הורד גרסה אחרונה"
808
-
809
- #: includes/fs-plugin-info-dialog.php:403
810
- msgid "Install Free Version Update Now"
811
- msgstr "התקן עדכון גרסה חינאמית עכשיו"
812
-
813
- #: includes/fs-plugin-info-dialog.php404, templates/account.php:448
814
- msgid "Install Update Now"
815
- msgstr "התקן עדכון במיידי"
816
-
817
- #: includes/fs-plugin-info-dialog.php:415
818
- msgid "Newer Free Version (%s) Installed"
819
- msgstr "Newer Free Version (%s) Installed"
820
-
821
- #: includes/fs-plugin-info-dialog.php:416
822
- msgid "Newer Version (%s) Installed"
823
- msgstr "גרסה חדשה (%s) הותקנה"
824
-
825
- #: includes/fs-plugin-info-dialog.php:424
826
- msgid "Latest Free Version Installed"
827
- msgstr "גרסה חינאמית עדכנית הותקנה"
828
-
829
- #: includes/fs-plugin-info-dialog.php:425
830
- msgid "Latest Version Installed"
831
- msgstr "הגרסה האחרונה הותקנה"
832
-
833
- #: includes/fs-plugin-info-dialog.php:580
834
- msgctxt "Plugin installer section title"
835
- msgid "Description"
836
- msgstr "תיאור"
837
-
838
- #: includes/fs-plugin-info-dialog.php:581
839
- msgctxt "Plugin installer section title"
840
- msgid "Installation"
841
- msgstr "התקנה"
842
-
843
- #: includes/fs-plugin-info-dialog.php:582
844
- msgctxt "Plugin installer section title"
845
- msgid "FAQ"
846
- msgstr "שאלות נפוצות"
847
-
848
- #: includes/fs-plugin-info-dialog.php583,
849
- #: templates/plugin-info/description.php:55
850
- msgid "Screenshots"
851
- msgstr "צילומי מסך"
852
-
853
- #: includes/fs-plugin-info-dialog.php:584
854
- msgctxt "Plugin installer section title"
855
- msgid "Changelog"
856
- msgstr "לוג שינויים"
857
-
858
- #: includes/fs-plugin-info-dialog.php:585
859
- msgctxt "Plugin installer section title"
860
- msgid "Reviews"
861
- msgstr "ביקורות"
862
-
863
- #: includes/fs-plugin-info-dialog.php:586
864
- msgctxt "Plugin installer section title"
865
- msgid "Other Notes"
866
- msgstr "היערות נוספות"
867
-
868
- #: includes/fs-plugin-info-dialog.php:601
869
- msgctxt "Plugin installer section title"
870
- msgid "Features & Pricing"
871
- msgstr "פיטצ'רים ומחירים"
872
-
873
- #: includes/fs-plugin-info-dialog.php:611
874
- msgid "Plugin Install"
875
- msgstr "התקנת תוסף"
876
-
877
- #: includes/fs-plugin-info-dialog.php:683
878
- msgctxt "e.g. Professional Plan"
879
- msgid "%s Plan"
880
- msgstr "חבילה %s"
881
-
882
- #: includes/fs-plugin-info-dialog.php:709
883
- msgctxt "e.g. the best product"
884
- msgid "Best"
885
- msgstr "הכי טוב"
886
-
887
- #: includes/fs-plugin-info-dialog.php715,
888
- #: includes/fs-plugin-info-dialog.php:735
889
- msgctxt "as every month"
890
- msgid "Monthly"
891
- msgstr "חודשי"
892
-
893
- #: includes/fs-plugin-info-dialog.php:718
894
- msgctxt "as once a year"
895
- msgid "Annual"
896
- msgstr "שנתי"
897
-
898
- #: includes/fs-plugin-info-dialog.php:721
899
- msgid "Lifetime"
900
- msgstr "לכל החיים"
901
-
902
- #: includes/fs-plugin-info-dialog.php735,
903
- #: includes/fs-plugin-info-dialog.php737,
904
- #: includes/fs-plugin-info-dialog.php:739
905
- msgctxt "e.g. billed monthly"
906
- msgid "Billed %s"
907
- msgstr "מחוייב על בסיס %s"
908
-
909
- #: includes/fs-plugin-info-dialog.php:737
910
- msgctxt "as once a year"
911
- msgid "Annually"
912
- msgstr "שנתי"
913
-
914
- #: includes/fs-plugin-info-dialog.php:739
915
- msgctxt "as once a year"
916
- msgid "Once"
917
- msgstr "פעם אחת"
918
-
919
- #: includes/fs-plugin-info-dialog.php:745
920
- msgid "Single Site License"
921
- msgstr "רשיון לאתר אחד"
922
-
923
- #: includes/fs-plugin-info-dialog.php:747
924
- msgid "Unlimited Licenses"
925
- msgstr "רשיונות ללא הגבלה"
926
-
927
- #: includes/fs-plugin-info-dialog.php:749
928
- msgid "Up to %s Sites"
929
- msgstr "עד %s אתרים"
930
-
931
- #: includes/fs-plugin-info-dialog.php759,
932
- #: templates/plugin-info/features.php:82
933
- msgctxt "as monthly period"
934
- msgid "mo"
935
- msgstr "חודשים"
936
-
937
- #: includes/fs-plugin-info-dialog.php766,
938
- #: templates/plugin-info/features.php:80
939
- msgctxt "as annual period"
940
- msgid "year"
941
- msgstr "שנה"
942
-
943
- #: includes/fs-plugin-info-dialog.php:820
944
- msgctxt "noun"
945
- msgid "Price"
946
- msgstr "מחיר"
947
-
948
- #: includes/fs-plugin-info-dialog.php:868
949
- msgid "Save %s"
950
- msgstr "שמירת %s"
951
-
952
- #: includes/fs-plugin-info-dialog.php:878
953
- msgid "No commitment for %s - cancel anytime"
954
- msgstr "No commitment for %s - cancel anytime"
955
-
956
- #: includes/fs-plugin-info-dialog.php:881
957
- msgid "After your free %s, pay as little as %s"
958
- msgstr "After your free %s, pay as little as %s"
959
-
960
- #: includes/fs-plugin-info-dialog.php:892
961
- msgid "Details"
962
- msgstr "פרטים"
963
-
964
- #: includes/fs-plugin-info-dialog.php896, templates/account.php87,
965
- #: templates/debug.php191, templates/debug.php228, templates/debug.php442,
966
- #: templates/account/partials/addon.php:28
967
- msgctxt "product version"
968
- msgid "Version"
969
- msgstr "גרסה"
970
-
971
- #: includes/fs-plugin-info-dialog.php:903
972
- msgctxt "as the plugin author"
973
- msgid "Author"
974
- msgstr "Author"
975
-
976
- #: includes/fs-plugin-info-dialog.php:910
977
- msgid "Last Updated"
978
- msgstr "עודכן לאחרונה"
979
-
980
- #: includes/fs-plugin-info-dialog.php:915
981
- msgctxt "x-ago"
982
- msgid "%s ago"
983
- msgstr "לפני %s"
984
-
985
- #: includes/fs-plugin-info-dialog.php:924
986
- msgid "Requires WordPress Version"
987
- msgstr "Requires WordPress Version"
988
-
989
- #: includes/fs-plugin-info-dialog.php:925
990
- msgid "%s or higher"
991
- msgstr "%s ומעלה"
992
-
993
- #: includes/fs-plugin-info-dialog.php:932
994
- msgid "Compatible up to"
995
- msgstr "Compatible up to"
996
-
997
- #: includes/fs-plugin-info-dialog.php:940
998
- msgid "Downloaded"
999
- msgstr "Downloaded"
1000
-
1001
- #: includes/fs-plugin-info-dialog.php:944
1002
- msgid "%s time"
1003
- msgstr "פעם %s"
1004
-
1005
- #: includes/fs-plugin-info-dialog.php:946
1006
- msgid "%s times"
1007
- msgstr "%s פעמים"
1008
-
1009
- #: includes/fs-plugin-info-dialog.php:956
1010
- msgid "WordPress.org Plugin Page"
1011
- msgstr "WordPress.org Plugin Page"
1012
-
1013
- #: includes/fs-plugin-info-dialog.php:964
1014
- msgid "Plugin Homepage"
1015
- msgstr "עמוד התוסף"
1016
-
1017
- #: includes/fs-plugin-info-dialog.php972,
1018
- #: includes/fs-plugin-info-dialog.php:1054
1019
- msgid "Donate to this plugin"
1020
- msgstr "תרום לתוסף"
1021
-
1022
- #: includes/fs-plugin-info-dialog.php:979
1023
- msgid "Average Rating"
1024
- msgstr "דירוג ממוצע"
1025
-
1026
- #: includes/fs-plugin-info-dialog.php:986
1027
- msgid "based on %s"
1028
- msgstr "מבוסס על %s"
1029
-
1030
- #: includes/fs-plugin-info-dialog.php:990
1031
- msgid "%s rating"
1032
- msgstr "דרוג %s"
1033
-
1034
- #: includes/fs-plugin-info-dialog.php:992
1035
- msgid "%s ratings"
1036
- msgstr "%s דרוגים"
1037
-
1038
- #: includes/fs-plugin-info-dialog.php:1007
1039
- msgid "%s star"
1040
- msgstr "כוכב %s"
1041
-
1042
- #: includes/fs-plugin-info-dialog.php:1009
1043
- msgid "%s stars"
1044
- msgstr "%s כוכבים"
1045
-
1046
- #: includes/fs-plugin-info-dialog.php:1020
1047
- msgid "Click to see reviews that provided a rating of %s"
1048
- msgstr "Click to see reviews that provided a rating of %s"
1049
-
1050
- #: includes/fs-plugin-info-dialog.php:1033
1051
- msgid "Contributors"
1052
- msgstr "תורמים"
1053
-
1054
- #: includes/fs-plugin-info-dialog.php1062,
1055
- #: includes/fs-plugin-info-dialog.php:1064
1056
- msgid "Warning"
1057
- msgstr "Warning"
1058
-
1059
- #: includes/fs-plugin-info-dialog.php:1062
1060
- msgid "This plugin has not been tested with your current version of WordPress."
1061
- msgstr "תוסף זה לא נבדק עם גרסת הוורדפרס שלך."
1062
-
1063
- #: includes/fs-plugin-info-dialog.php:1064
1064
- msgid "This plugin has not been marked as compatible with your version of WordPress."
1065
- msgstr "התוסף לא סומן כתואם לגרסת הוורדפרס שלך."
1066
-
1067
- #: includes/fs-plugin-info-dialog.php:1083
1068
- msgid "Paid add-on must be deployed to Freemius."
1069
- msgstr "Paid add-on must be deployed to Freemius."
1070
-
1071
- #: includes/fs-plugin-info-dialog.php:1084
1072
- msgid "Add-on must be deployed to WordPress.org or Freemius."
1073
- msgstr "Add-on must be deployed to WordPress.org or Freemius."
1074
-
1075
- #: templates/account.php81, templates/account/partials/addon.php22,
1076
- #: templates/account/partials/site.php:295
1077
- msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
1078
- msgstr "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
1079
-
1080
- #: templates/account.php82, templates/account/partials/addon.php:23
1081
- msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
1082
- msgstr "ביטול הניסיון יחסום מייד את הפיטצ'רים שהינם בתשלום. האם ברצונך בכל זאת להמשיך?"
1083
-
1084
- #: templates/account.php83, templates/account/partials/addon.php24,
1085
- #: templates/account/partials/site.php:296
1086
- msgid "You can still enjoy all %s features but you will not have access to %s updates and support."
1087
- msgstr "You can still enjoy all %s features but you will not have access to %s updates and support."
1088
-
1089
- #: templates/account.php84, templates/account/partials/addon.php25,
1090
- #: templates/account/partials/site.php:297
1091
- msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
1092
- msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
1093
-
1094
- #. translators: %s: Plan title (e.g. "Professional")
1095
- #: templates/account.php86,
1096
- #: templates/account/partials/activate-license-button.php31,
1097
- #: templates/account/partials/addon.php:27
1098
- msgid "Activate %s Plan"
1099
- msgstr "הפעל חבילה %s"
1100
-
1101
- #. translators: %s: Time period (e.g. Auto renews in "2 months")
1102
- #: templates/account.php89, templates/account/partials/addon.php30,
1103
- #: templates/account/partials/site.php:275
1104
- msgid "Auto renews in %s"
1105
- msgstr "עדכן אוטומטית בעוד %s"
1106
-
1107
- #. translators: %s: Time period (e.g. Expires in "2 months")
1108
- #: templates/account.php91, templates/account/partials/addon.php32,
1109
- #: templates/account/partials/site.php:277
1110
- msgid "Expires in %s"
1111
- msgstr "פג תוקף בעוד %s"
1112
-
1113
- #: templates/account.php92, templates/account/partials/addon.php:33
1114
- msgctxt "as synchronize license"
1115
- msgid "Sync License"
1116
- msgstr "סינכרן רישיון"
1117
-
1118
- #: templates/account.php93, templates/account/partials/addon.php:34
1119
- msgid "Cancel Trial"
1120
- msgstr "ביט"
1121
-
1122
- #: templates/account.php94, templates/account/partials/addon.php:35
1123
- msgid "Change Plan"
1124
- msgstr "שינוי חבילה"
1125
-
1126
- #: templates/account.php95, templates/account/partials/addon.php:36
1127
- msgctxt "verb"
1128
- msgid "Upgrade"
1129
- msgstr "שדרג"
1130
-
1131
- #: templates/account.php97, templates/account/partials/addon.php38,
1132
- #: templates/account/partials/site.php:298
1133
- msgctxt "verb"
1134
- msgid "Downgrade"
1135
- msgstr "שנמך"
1136
-
1137
- #: templates/account.php99, templates/add-ons.php126,
1138
- #: templates/plugin-info/features.php72,
1139
- #: templates/account/partials/addon.php40,
1140
- #: templates/account/partials/site.php:31
1141
- msgid "Free"
1142
- msgstr "חינם"
1143
-
1144
- #: templates/account.php100, templates/account/partials/addon.php:41
1145
- msgid "Activate"
1146
- msgstr "הפעלה"
1147
-
1148
- #: templates/account.php101, templates/debug.php361,
1149
- #: includes/customizer/class-fs-customizer-upsell-control.php106,
1150
- #: templates/account/partials/addon.php:42
1151
- msgctxt "as product pricing plan"
1152
- msgid "Plan"
1153
- msgstr "חבילה"
1154
-
1155
- #: templates/account.php:154
1156
- msgid "Free Trial"
1157
- msgstr "ניסיון חינם"
1158
-
1159
- #: templates/account.php:165
1160
- msgid "Account Details"
1161
- msgstr "פרטי חשבון"
1162
-
1163
- #: templates/account.php:175
1164
- 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?"
1165
- 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?"
1166
-
1167
- #: templates/account.php:177
1168
- 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?"
1169
- 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?"
1170
-
1171
- #: templates/account.php:180
1172
- msgid "Delete Account"
1173
- msgstr "מחיקת חשבון"
1174
-
1175
- #: templates/account.php192, templates/account/partials/addon.php155,
1176
- #: templates/account/partials/deactivate-license-button.php:35
1177
- msgid "Deactivate License"
1178
- msgstr "שיחרור רישיון"
1179
-
1180
- #: templates/account.php:210
1181
- msgid "Are you sure you want to proceed?"
1182
- msgstr "האם את/ה בטוח רוצה להמשיך?"
1183
-
1184
- #: templates/account.php210, templates/account/partials/addon.php:177
1185
- msgid "Cancel Subscription"
1186
- msgstr "בטל מנוי"
1187
-
1188
- #: templates/account.php:239
1189
- msgctxt "as synchronize"
1190
- msgid "Sync"
1191
- msgstr "סינכרון"
1192
-
1193
- #: templates/account.php253, templates/debug.php:477
1194
- msgid "Name"
1195
- msgstr "שם"
1196
-
1197
- #: templates/account.php259, templates/debug.php:478
1198
- msgid "Email"
1199
- msgstr "דוא\"ל"
1200
-
1201
- #: templates/account.php266, templates/debug.php360, templates/debug.php:516
1202
- msgid "User ID"
1203
- msgstr "מזהה משתמש"
1204
-
1205
- #: templates/account.php:274
1206
- msgid "Site ID"
1207
- msgstr "מזהה אתר"
1208
-
1209
- #: templates/account.php:277
1210
- msgid "No ID"
1211
- msgstr "אין מזהה"
1212
-
1213
- #: templates/account.php282, templates/debug.php233, templates/debug.php362,
1214
- #: templates/debug.php443, templates/debug.php480,
1215
- #: templates/account/partials/site.php:219
1216
- msgid "Public Key"
1217
- msgstr "מפתח פומבי"
1218
-
1219
- #: templates/account.php288, templates/debug.php363, templates/debug.php444,
1220
- #: templates/debug.php481, templates/account/partials/site.php:231
1221
- msgid "Secret Key"
1222
- msgstr "מפתח סודי"
1223
-
1224
- #: templates/account.php:291
1225
- msgctxt "as secret encryption key missing"
1226
- msgid "No Secret"
1227
- msgstr "אין מפתח סודי"
1228
-
1229
- #: templates/account.php310, templates/account/partials/site.php112,
1230
- #: templates/account/partials/site.php:114
1231
- msgid "Trial"
1232
- msgstr "ניסיון"
1233
-
1234
- #: templates/account.php329, templates/debug.php521,
1235
- #: templates/account/partials/site.php:248
1236
- msgid "License Key"
1237
- msgstr "License Key"
1238
-
1239
- #: templates/account.php:359
1240
- msgid "not verified"
1241
- msgstr "לא מאומת"
1242
-
1243
- #: templates/account.php:416
1244
- msgid "Premium version"
1245
- msgstr "גירסת פרימיום"
1246
-
1247
- #: templates/account.php:418
1248
- msgid "Free version"
1249
- msgstr "גירסה חינאמית"
1250
-
1251
- #: templates/account.php:430
1252
- msgid "Verify Email"
1253
- msgstr "אמת כתובת דוא\"ל"
1254
-
1255
- #: templates/account.php:441
1256
- msgid "Download %s Version"
1257
- msgstr "הורד גרסת %s"
1258
-
1259
- #: templates/account.php455, templates/account.php636,
1260
- #: templates/account/partials/site.php237,
1261
- #: templates/account/partials/site.php:255
1262
- msgctxt "verb"
1263
- msgid "Show"
1264
- msgstr "הצג"
1265
-
1266
- #: templates/account.php:469
1267
- msgid "What is your %s?"
1268
- msgstr "מה ה%s שלך?"
1269
-
1270
- #: templates/account.php477, templates/account/billing.php:27
1271
- msgctxt "verb"
1272
- msgid "Edit"
1273
- msgstr "ערוך"
1274
-
1275
- #: templates/account.php:490
1276
- msgid "Sites"
1277
- msgstr "אתרים"
1278
-
1279
- #: templates/account.php:501
1280
- msgid "Search by address"
1281
- msgstr "חפש לפי כתובת"
1282
-
1283
- #: templates/account.php510, templates/account.php558, templates/debug.php226,
1284
- #: templates/debug.php354, templates/debug.php439, templates/debug.php476,
1285
- #: templates/debug.php514, templates/debug.php587,
1286
- #: templates/account/payments.php35, templates/debug/logger.php:21
1287
- msgid "ID"
1288
- msgstr "מזהה"
1289
-
1290
- #: templates/account.php511, templates/debug.php:357
1291
- msgid "Address"
1292
- msgstr "כתובת"
1293
-
1294
- #: templates/account.php:512
1295
- msgid "License"
1296
- msgstr "רישיון"
1297
-
1298
- #: templates/account.php:513
1299
- msgid "Plan"
1300
- msgstr "חבילה"
1301
-
1302
- #: templates/account.php:561
1303
- msgctxt "as software license"
1304
- msgid "License"
1305
- msgstr "רישיון"
1306
-
1307
- #: templates/account.php:630
1308
- msgctxt "verb"
1309
- msgid "Hide"
1310
- msgstr "הסתר"
1311
-
1312
- #: templates/account.php:665
1313
- 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?"
1314
- msgstr "ביטול הרישיון יחסום את כל הפיטצ'רים שבתשלום אך יאפשר להפעיל את הרישיון על אתר אחר. האם תרצו להמשיך בכל זאת?"
1315
-
1316
- #: templates/add-ons.php:36
1317
- msgid "Add Ons for %s"
1318
- msgstr "הרחבות עבור %s"
1319
-
1320
- #: templates/add-ons.php:44
1321
- 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."
1322
- 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."
1323
-
1324
- #: templates/add-ons.php:135
1325
- msgid "View details"
1326
- msgstr "פרטים נוספים"
1327
-
1328
- #: templates/admin-notice.php13, templates/forms/license-activation.php208,
1329
- #: templates/forms/resend-key.php:77
1330
- msgctxt "as close a window"
1331
- msgid "Dismiss"
1332
- msgstr "סגירה"
1333
-
1334
- #: templates/auto-installation.php:45
1335
- msgid "%s sec"
1336
- msgstr "%s שניות"
1337
-
1338
- #: templates/auto-installation.php:83
1339
- msgid "Automatic Installation"
1340
- msgstr "התקנה אוטומטית"
1341
-
1342
- #: templates/auto-installation.php:93
1343
- 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."
1344
- msgstr "הורדה והתקנה אוטומטית של %s (גרסה בתשלום) מ-%2$s תתחיל בעוד %3$s. אם ברצונך לבצע את ההתקנה ידנית - לחץ על כפתור הביטול עכשיו."
1345
-
1346
- #: templates/auto-installation.php:104
1347
- 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."
1348
- msgstr "תהליך ההתקנה התחיל ויכול לקחת מספר דקות לסיום. אנא המתינו בסבלנות עד לסיום מבלי לרענן את הדפדפן."
1349
-
1350
- #: templates/auto-installation.php:109
1351
- msgid "Cancel Installation"
1352
- msgstr "בטל התקנה"
1353
-
1354
- #: templates/checkout.php:172
1355
- msgid "Checkout"
1356
- msgstr "Checkout"
1357
-
1358
- #: templates/checkout.php:172
1359
- msgid "PCI compliant"
1360
- msgstr "עומד בתקן PCI"
1361
-
1362
- #. translators: %s: name (e.g. Hey John,)
1363
- #: templates/connect.php:110
1364
- msgctxt "greeting"
1365
- msgid "Hey %s,"
1366
- msgstr "היי %s,"
1367
-
1368
- #: templates/connect.php:152
1369
- msgid "Allow & Continue"
1370
- msgstr "אפשר\\י והמשכ\\י"
1371
-
1372
- #: templates/connect.php:156
1373
- msgid "Re-send activation email"
1374
- msgstr "שליחה חוזרת של מייל האקטיבציה"
1375
-
1376
- #: templates/connect.php:160
1377
- msgid "Thanks %s!"
1378
- msgstr "תודה %s!"
1379
-
1380
- #: templates/connect.php170, templates/forms/license-activation.php:43
1381
- msgid "Agree & Activate License"
1382
- msgstr "הסכמה והפעלת רישיון"
1383
-
1384
- #: templates/connect.php:179
1385
- msgid "Thanks for purchasing %s! To get started, please enter your license key:"
1386
- msgstr "Thanks for purchasing %s! To get started, please enter your license key:"
1387
-
1388
- #: templates/connect.php:186
1389
- 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."
1390
- 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."
1391
-
1392
- #: templates/connect.php:187
1393
- msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
1394
- msgstr "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
1395
-
1396
- #: templates/connect.php:193
1397
- 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."
1398
- 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."
1399
-
1400
- #: templates/connect.php:194
1401
- 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."
1402
- 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."
1403
-
1404
- #: templates/connect.php:228
1405
- msgid "We're excited to introduce the Freemius network-level integration."
1406
- msgstr "We're excited to introduce the Freemius network-level integration."
1407
-
1408
- #: templates/connect.php:231
1409
- msgid "During the update process we detected %d site(s) that are still pending license activation."
1410
- msgstr "During the update process we detected %d site(s) that are still pending license activation."
1411
-
1412
- #: templates/connect.php:233
1413
- msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
1414
- msgstr "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
1415
-
1416
- #: templates/connect.php:235
1417
- msgid "%s's paid features"
1418
- msgstr "%s's paid features"
1419
-
1420
- #: templates/connect.php:240
1421
- msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
1422
- msgstr "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
1423
-
1424
- #: templates/connect.php:242
1425
- msgid "During the update process we detected %s site(s) in the network that are still pending your attention."
1426
- msgstr "During the update process we detected %s site(s) in the network that are still pending your attention."
1427
-
1428
- #: templates/connect.php251, templates/forms/license-activation.php:46
1429
- msgid "License key"
1430
- msgstr "מפתח רישיון"
1431
-
1432
- #: templates/connect.php254, templates/forms/license-activation.php:19
1433
- msgid "Can't find your license key?"
1434
- msgstr "האם אינך מוצא את מפתח הרישיון?"
1435
-
1436
- #: templates/connect.php302, templates/connect.php617,
1437
- #: templates/forms/deactivation/retry-skip.php:20
1438
- msgctxt "verb"
1439
- msgid "Skip"
1440
- msgstr "דלג"
1441
-
1442
- #: templates/connect.php:305
1443
- msgid "Delegate to Site Admins"
1444
- msgstr "האצלה למנהלי האתרים"
1445
-
1446
- #: templates/connect.php:305
1447
- msgid "If you click it, this decision will be delegated to the sites administrators."
1448
- msgstr "If you click it, this decision will be delegated to the sites administrators."
1449
-
1450
- #: templates/connect.php:333
1451
- msgid "Your Profile Overview"
1452
- msgstr "פרטים כלליים על הפרופיל"
1453
-
1454
- #: templates/connect.php:334
1455
- msgid "Name and email address"
1456
- msgstr "שם וכתובת דו\"אל"
1457
-
1458
- #: templates/connect.php:339
1459
- msgid "Your Site Overview"
1460
- msgstr "פרטים כלליים על האתר"
1461
-
1462
- #: templates/connect.php:340
1463
- msgid "Site URL, WP version, PHP info, plugins & themes"
1464
- msgstr "כתובת אתר, גרסת וורדפרס, פרטי PHP, תוספים ותבניות"
1465
-
1466
- #: templates/connect.php:345
1467
- msgid "Admin Notices"
1468
- msgstr "התראות מנהל"
1469
-
1470
- #: templates/connect.php346, templates/connect.php:362
1471
- msgid "Updates, announcements, marketing, no spam"
1472
- msgstr "עדכונים, הכרזות, הודעות שיווקיות, ללא דואר זבל"
1473
-
1474
- #: templates/connect.php:351
1475
- msgid "Current %s Events"
1476
- msgstr "Current %s Events"
1477
-
1478
- #: templates/connect.php:352
1479
- msgid "Activation, deactivation and uninstall"
1480
- msgstr "הפעלה, כיבוי והסרה"
1481
-
1482
- #: templates/connect.php:361
1483
- msgid "Newsletter"
1484
- msgstr "ניוסלטר"
1485
-
1486
- #: templates/connect.php378, templates/forms/license-activation.php:38
1487
- 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."
1488
- 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."
1489
-
1490
- #: templates/connect.php:383
1491
- msgid "What permissions are being granted?"
1492
- msgstr "מהן ההרשאות המוענקות?"
1493
-
1494
- #: templates/connect.php:404
1495
- msgid "Don't have a license key?"
1496
- msgstr "האם אין ברשותך מפתח רישיון?"
1497
-
1498
- #: templates/connect.php:405
1499
- msgid "Activate Free Version"
1500
- msgstr "הפעלת גירסה חינאמית"
1501
-
1502
- #: templates/connect.php:407
1503
- msgid "Have a license key?"
1504
- msgstr "האם ברשותך רישיון?"
1505
-
1506
- #: templates/connect.php:415
1507
- msgid "Privacy Policy"
1508
- msgstr "מדיניות פרטיות"
1509
-
1510
- #: templates/connect.php:417
1511
- msgid "Terms of Service"
1512
- msgstr "תנאי השירות"
1513
-
1514
- #: templates/connect.php:750
1515
- msgctxt "as in the process of sending an email"
1516
- msgid "Sending email"
1517
- msgstr "שולח דוא\"ל"
1518
-
1519
- #: templates/connect.php:751
1520
- msgctxt "as activating plugin"
1521
- msgid "Activating"
1522
- msgstr "מפעיל"
1523
-
1524
- #: templates/contact.php:78
1525
- msgid "Contact"
1526
- msgstr "Contact"
1527
-
1528
- #: templates/debug.php:17
1529
- msgctxt "as turned off"
1530
- msgid "Off"
1531
- msgstr "כבוי"
1532
-
1533
- #: templates/debug.php:18
1534
- msgctxt "as turned on"
1535
- msgid "On"
1536
- msgstr "דלוק"
1537
-
1538
- #: templates/debug.php:20
1539
- msgid "SDK"
1540
- msgstr "SDK"
1541
-
1542
- #: templates/debug.php:24
1543
- msgctxt "as code debugging"
1544
- msgid "Debugging"
1545
- msgstr "דיבוג"
1546
-
1547
- #: templates/debug.php54, templates/debug.php238, templates/debug.php364,
1548
- #: templates/debug.php:482
1549
- msgid "Actions"
1550
- msgstr "פעולות"
1551
-
1552
- #: templates/debug.php:64
1553
- msgid "Are you sure you want to delete all Freemius data?"
1554
- msgstr "Are you sure you want to delete all Freemius data?"
1555
-
1556
- #: templates/debug.php:64
1557
- msgid "Delete All Accounts"
1558
- msgstr "מחיקת כל החשבונות"
1559
-
1560
- #: templates/debug.php:71
1561
- msgid "Clear API Cache"
1562
- msgstr "ניקוי מטמון ה-API"
1563
-
1564
- #: templates/debug.php:79
1565
- msgid "Clear Updates Transients"
1566
- msgstr "Clear Updates Transients"
1567
-
1568
- #: templates/debug.php:86
1569
- msgid "Sync Data From Server"
1570
- msgstr "סנכרון מידע מהשרת"
1571
-
1572
- #: templates/debug.php:90
1573
- msgid "Load DB Option"
1574
- msgstr "Load DB Option"
1575
-
1576
- #: templates/debug.php:93
1577
- msgid "Set DB Option"
1578
- msgstr "Set DB Option"
1579
-
1580
- #: templates/debug.php:170
1581
- msgid "Key"
1582
- msgstr "Key"
1583
-
1584
- #: templates/debug.php:171
1585
- msgid "Value"
1586
- msgstr "Value"
1587
-
1588
- #: templates/debug.php:187
1589
- msgctxt "as software development kit versions"
1590
- msgid "SDK Versions"
1591
- msgstr "גרסאות SDK"
1592
-
1593
- #: templates/debug.php:192
1594
- msgid "SDK Path"
1595
- msgstr "מיקום SDK"
1596
-
1597
- #: templates/debug.php193, templates/debug.php:232
1598
- msgid "Module Path"
1599
- msgstr "Module Path"
1600
-
1601
- #: templates/debug.php:194
1602
- msgid "Is Active"
1603
- msgstr "האם פעיל"
1604
-
1605
- #: templates/debug.php222, templates/debug/plugins-themes-sync.php:35
1606
- msgid "Plugins"
1607
- msgstr "תוספים"
1608
-
1609
- #: templates/debug.php222, templates/debug/plugins-themes-sync.php:56
1610
- msgid "Themes"
1611
- msgstr "תבניות"
1612
-
1613
- #: templates/debug.php227, templates/debug.php359, templates/debug.php441,
1614
- #: templates/debug/scheduled-crons.php:80
1615
- msgid "Slug"
1616
- msgstr "מזהה כתובת"
1617
-
1618
- #: templates/debug.php229, templates/debug.php:440
1619
- msgid "Title"
1620
- msgstr "כותרת"
1621
-
1622
- #: templates/debug.php:230
1623
- msgctxt "as application program interface"
1624
- msgid "API"
1625
- msgstr "API"
1626
-
1627
- #: templates/debug.php:231
1628
- msgid "Freemius State"
1629
- msgstr "מצב פרימיוס"
1630
-
1631
- #: templates/debug.php:235
1632
- msgid "Network Blog"
1633
- msgstr "Network Blog"
1634
-
1635
- #: templates/debug.php:236
1636
- msgid "Network User"
1637
- msgstr "משתמש רשת"
1638
-
1639
- #: templates/debug.php:273
1640
- msgctxt "as connection was successful"
1641
- msgid "Connected"
1642
- msgstr "מחובר"
1643
-
1644
- #: templates/debug.php:274
1645
- msgctxt "as connection blocked"
1646
- msgid "Blocked"
1647
- msgstr "חסום"
1648
-
1649
- #: templates/debug.php:310
1650
- msgid "Simulate Trial"
1651
- msgstr "Simulate Trial"
1652
-
1653
- #: templates/debug.php:322
1654
- msgid "Simulate Network Upgrade"
1655
- msgstr "סמלוץ עדכון לרשת"
1656
-
1657
- #: templates/debug.php:348
1658
- msgid "%s Installs"
1659
- msgstr "%s התקנות"
1660
-
1661
- #: templates/debug.php:350
1662
- msgctxt "like websites"
1663
- msgid "Sites"
1664
- msgstr "אתרים"
1665
-
1666
- #: templates/debug.php356, templates/account/partials/site.php:148
1667
- msgid "Blog ID"
1668
- msgstr "מזהה בלוג"
1669
-
1670
- #: templates/debug.php421, templates/debug.php499,
1671
- #: templates/account/partials/addon.php:334
1672
- msgctxt "verb"
1673
- msgid "Delete"
1674
- msgstr "מחק"
1675
-
1676
- #: templates/debug.php:435
1677
- msgid "Add Ons of module %s"
1678
- msgstr "Add Ons of module %s"
1679
-
1680
- #: templates/debug.php:472
1681
- msgid "Users"
1682
- msgstr "משתמשים"
1683
-
1684
- #: templates/debug.php:479
1685
- msgid "Verified"
1686
- msgstr "מאומת"
1687
-
1688
- #: templates/debug.php:510
1689
- msgid "%s Licenses"
1690
- msgstr "%s Licenses"
1691
-
1692
- #: templates/debug.php:515
1693
- msgid "Plugin ID"
1694
- msgstr "Plugin ID"
1695
-
1696
- #: templates/debug.php:517
1697
- msgid "Plan ID"
1698
- msgstr "Plan ID"
1699
-
1700
- #: templates/debug.php:518
1701
- msgid "Quota"
1702
- msgstr "Quota"
1703
-
1704
- #: templates/debug.php:519
1705
- msgid "Activated"
1706
- msgstr "Activated"
1707
-
1708
- #: templates/debug.php:520
1709
- msgid "Blocking"
1710
- msgstr "Blocking"
1711
-
1712
- #: templates/debug.php:522
1713
- msgctxt "as expiration date"
1714
- msgid "Expiration"
1715
- msgstr "תפוגה"
1716
-
1717
- #: templates/debug.php:545
1718
- msgid "Debug Log"
1719
- msgstr "Debug Log"
1720
-
1721
- #: templates/debug.php:549
1722
- msgid "All Types"
1723
- msgstr "כל הסוגים"
1724
-
1725
- #: templates/debug.php:556
1726
- msgid "All Requests"
1727
- msgstr "כל הבקשות"
1728
-
1729
- #: templates/debug.php561, templates/debug.php590,
1730
- #: templates/debug/logger.php:25
1731
- msgid "File"
1732
- msgstr "קובץ"
1733
-
1734
- #: templates/debug.php562, templates/debug.php588,
1735
- #: templates/debug/logger.php:23
1736
- msgid "Function"
1737
- msgstr "פונקציה"
1738
-
1739
- #: templates/debug.php:563
1740
- msgid "Process ID"
1741
- msgstr "Process ID"
1742
-
1743
- #: templates/debug.php:564
1744
- msgid "Logger"
1745
- msgstr "Logger"
1746
-
1747
- #: templates/debug.php565, templates/debug.php589,
1748
- #: templates/debug/logger.php:24
1749
- msgid "Message"
1750
- msgstr "הודעה"
1751
-
1752
- #: templates/debug.php:567
1753
- msgid "Filter"
1754
- msgstr "פילטר"
1755
-
1756
- #: templates/debug.php:575
1757
- msgid "Download"
1758
- msgstr "הורדה"
1759
-
1760
- #: templates/debug.php586, templates/debug/logger.php:22
1761
- msgid "Type"
1762
- msgstr "סוג"
1763
-
1764
- #: templates/debug.php591, templates/debug/logger.php:26
1765
- msgid "Timestamp"
1766
- msgstr "Timestamp"
1767
-
1768
- #: templates/secure-https-header.php:28
1769
- msgid "Secure HTTPS %s page, running from an external domain"
1770
- msgstr "Secure HTTPS %s page, running from an external domain"
1771
-
1772
- #: includes/customizer/class-fs-customizer-support-section.php55,
1773
- #: templates/plugin-info/features.php:43
1774
- msgid "Support"
1775
- msgstr "תמיכה"
1776
-
1777
- #: includes/debug/class-fs-debug-bar-panel.php48,
1778
- #: templates/debug/api-calls.php54, templates/debug/logger.php:62
1779
- msgctxt "milliseconds"
1780
- msgid "ms"
1781
- msgstr "ms"
1782
-
1783
- #: includes/debug/debug-bar-start.php:41
1784
- msgid "Freemius API"
1785
- msgstr "Freemius API"
1786
-
1787
- #: includes/debug/debug-bar-start.php:42
1788
- msgid "Requests"
1789
- msgstr "Requests"
1790
-
1791
- #: templates/account/billing.php:28
1792
- msgctxt "verb"
1793
- msgid "Update"
1794
- msgstr "עדכן"
1795
-
1796
- #: templates/account/billing.php:39
1797
- msgid "Billing"
1798
- msgstr "בילינג"
1799
-
1800
- #: templates/account/billing.php44, templates/account/billing.php:44
1801
- msgid "Business name"
1802
- msgstr "שם עסק"
1803
-
1804
- #: templates/account/billing.php45, templates/account/billing.php:45
1805
- msgid "Tax / VAT ID"
1806
- msgstr "ח.פ."
1807
-
1808
- #: templates/account/billing.php48, templates/account/billing.php48,
1809
- #: templates/account/billing.php49, templates/account/billing.php:49
1810
- msgid "Address Line %d"
1811
- msgstr "כתובת %s"
1812
-
1813
- #: templates/account/billing.php52, templates/account/billing.php:52
1814
- msgid "City"
1815
- msgstr "עיר"
1816
-
1817
- #: templates/account/billing.php52, templates/account/billing.php:52
1818
- msgid "Town"
1819
- msgstr "כפר"
1820
-
1821
- #: templates/account/billing.php53, templates/account/billing.php:53
1822
- msgid "ZIP / Postal Code"
1823
- msgstr "מיקוד / תא דואר"
1824
-
1825
- #: templates/account/billing.php:308
1826
- msgid "Country"
1827
- msgstr "מדינה"
1828
-
1829
- #: templates/account/billing.php:310
1830
- msgid "Select Country"
1831
- msgstr "בחר מדינה"
1832
-
1833
- #: templates/account/billing.php317, templates/account/billing.php:318
1834
- msgid "State"
1835
- msgstr "מחוז/מדינה"
1836
-
1837
- #: templates/account/billing.php317, templates/account/billing.php:318
1838
- msgid "Province"
1839
- msgstr "פרובינציה"
1840
-
1841
- #: templates/account/payments.php:29
1842
- msgid "Payments"
1843
- msgstr "תשלומים"
1844
-
1845
- #: templates/account/payments.php:36
1846
- msgid "Date"
1847
- msgstr "תאריך"
1848
-
1849
- #: templates/account/payments.php:37
1850
- msgid "Amount"
1851
- msgstr "סכום"
1852
-
1853
- #: templates/account/payments.php38, templates/account/payments.php:50
1854
- msgid "Invoice"
1855
- msgstr "חשבונית"
1856
-
1857
- #: templates/debug/api-calls.php:56
1858
- msgid "API"
1859
- msgstr "API"
1860
-
1861
- #: templates/debug/api-calls.php:68
1862
- msgid "Method"
1863
- msgstr "Method"
1864
-
1865
- #: templates/debug/api-calls.php:69
1866
- msgid "Code"
1867
- msgstr "Code"
1868
-
1869
- #: templates/debug/api-calls.php:70
1870
- msgid "Length"
1871
- msgstr "Length"
1872
-
1873
- #: templates/debug/api-calls.php:71
1874
- msgctxt "as file/folder path"
1875
- msgid "Path"
1876
- msgstr "נתיב"
1877
-
1878
- #: templates/debug/api-calls.php:73
1879
- msgid "Body"
1880
- msgstr "Body"
1881
-
1882
- #: templates/debug/api-calls.php:75
1883
- msgid "Result"
1884
- msgstr "Result"
1885
-
1886
- #: templates/debug/api-calls.php:76
1887
- msgid "Start"
1888
- msgstr "Start"
1889
-
1890
- #: templates/debug/api-calls.php:77
1891
- msgid "End"
1892
- msgstr "End"
1893
-
1894
- #: templates/debug/logger.php:15
1895
- msgid "Log"
1896
- msgstr "Log"
1897
-
1898
- #. translators: %s: time period (e.g. In "2 hours")
1899
- #: templates/debug/plugins-themes-sync.php18,
1900
- #: templates/debug/scheduled-crons.php:91
1901
- msgid "In %s"
1902
- msgstr "בעוד %s"
1903
-
1904
- #. translators: %s: time period (e.g. "2 hours" ago)
1905
- #: templates/debug/plugins-themes-sync.php20,
1906
- #: templates/debug/scheduled-crons.php:93
1907
- msgid "%s ago"
1908
- msgstr "לפני %s"
1909
-
1910
- #: templates/debug/plugins-themes-sync.php21,
1911
- #: templates/debug/scheduled-crons.php:74
1912
- msgctxt "seconds"
1913
- msgid "sec"
1914
- msgstr "sec"
1915
-
1916
- #: templates/debug/plugins-themes-sync.php:23
1917
- msgid "Plugins & Themes Sync"
1918
- msgstr "Plugins & Themes Sync"
1919
-
1920
- #: templates/debug/plugins-themes-sync.php:28
1921
- msgid "Total"
1922
- msgstr "Total"
1923
-
1924
- #: templates/debug/plugins-themes-sync.php29,
1925
- #: templates/debug/scheduled-crons.php:84
1926
- msgid "Last"
1927
- msgstr "Last"
1928
-
1929
- #: templates/debug/scheduled-crons.php:76
1930
- msgid "Scheduled Crons"
1931
- msgstr "Scheduled Crons"
1932
-
1933
- #: templates/debug/scheduled-crons.php:81
1934
- msgid "Module"
1935
- msgstr "מודול"
1936
-
1937
- #: templates/debug/scheduled-crons.php:82
1938
- msgid "Module Type"
1939
- msgstr "סוג מודול"
1940
-
1941
- #: templates/debug/scheduled-crons.php:83
1942
- msgid "Cron Type"
1943
- msgstr "Cron Type"
1944
-
1945
- #: templates/debug/scheduled-crons.php:85
1946
- msgid "Next"
1947
- msgstr "Next"
1948
-
1949
- #: templates/forms/affiliation.php:82
1950
- msgid "Non-expiring"
1951
- msgstr "Non-expiring"
1952
-
1953
- #: templates/forms/affiliation.php:85
1954
- msgid "Apply to become an affiliate"
1955
- msgstr "Apply to become an affiliate"
1956
-
1957
- #: templates/forms/affiliation.php:104
1958
- msgid "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
1959
- msgstr "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
1960
-
1961
- #: templates/forms/affiliation.php:119
1962
- 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."
1963
- 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."
1964
-
1965
- #: templates/forms/affiliation.php:122
1966
- msgid "Your affiliation account was temporarily suspended."
1967
- msgstr "Your affiliation account was temporarily suspended."
1968
-
1969
- #: templates/forms/affiliation.php:125
1970
- 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."
1971
- 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."
1972
-
1973
- #: templates/forms/affiliation.php:128
1974
- msgid "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
1975
- msgstr "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
1976
-
1977
- #: templates/forms/affiliation.php:141
1978
- msgid "Like the %s? Become our ambassador and earn cash ;-)"
1979
- msgstr "Like the %s? Become our ambassador and earn cash ;-)"
1980
-
1981
- #: templates/forms/affiliation.php:142
1982
- msgid "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
1983
- msgstr "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
1984
-
1985
- #: templates/forms/affiliation.php:145
1986
- msgid "Program Summary"
1987
- msgstr "Program Summary"
1988
-
1989
- #: templates/forms/affiliation.php:147
1990
- msgid "%s commission when a customer purchases a new license."
1991
- msgstr "%s commission when a customer purchases a new license."
1992
-
1993
- #: templates/forms/affiliation.php:149
1994
- msgid "Get commission for automated subscription renewals."
1995
- msgstr "Get commission for automated subscription renewals."
1996
-
1997
- #: templates/forms/affiliation.php:152
1998
- msgid "%s tracking cookie after the first visit to maximize earnings potential."
1999
- msgstr "%s tracking cookie after the first visit to maximize earnings potential."
2000
-
2001
- #: templates/forms/affiliation.php:155
2002
- msgid "Unlimited commissions."
2003
- msgstr "Unlimited commissions."
2004
-
2005
- #: templates/forms/affiliation.php:157
2006
- msgid "%s minimum payout amount."
2007
- msgstr "%s minimum payout amount."
2008
-
2009
- #: templates/forms/affiliation.php:158
2010
- msgid "Payouts are in USD and processed monthly via PayPal."
2011
- msgstr "Payouts are in USD and processed monthly via PayPal."
2012
-
2013
- #: templates/forms/affiliation.php:159
2014
- msgid "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
2015
- msgstr "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
2016
-
2017
- #: templates/forms/affiliation.php:162
2018
- msgid "Affiliate"
2019
- msgstr "Affiliate"
2020
-
2021
- #: templates/forms/affiliation.php165, templates/forms/resend-key.php:23
2022
- msgid "Email address"
2023
- msgstr "כתובת דוא\"ל"
2024
-
2025
- #: templates/forms/affiliation.php:169
2026
- msgid "Full name"
2027
- msgstr "Full name"
2028
-
2029
- #: templates/forms/affiliation.php:173
2030
- msgid "PayPal account email address"
2031
- msgstr "PayPal account email address"
2032
-
2033
- #: templates/forms/affiliation.php:177
2034
- msgid "Where are you going to promote the %s?"
2035
- msgstr "Where are you going to promote the %s?"
2036
-
2037
- #: templates/forms/affiliation.php:179
2038
- msgid "Enter the domain of your website or other websites from where you plan to promote the %s."
2039
- msgstr "Enter the domain of your website or other websites from where you plan to promote the %s."
2040
-
2041
- #: templates/forms/affiliation.php:181
2042
- msgid "Add another domain"
2043
- msgstr "Add another domain"
2044
-
2045
- #: templates/forms/affiliation.php:185
2046
- msgid "Extra Domains"
2047
- msgstr "Extra Domains"
2048
-
2049
- #: templates/forms/affiliation.php:186
2050
- msgid "Extra domains where you will be marketing the product from."
2051
- msgstr "Extra domains where you will be marketing the product from."
2052
-
2053
- #: templates/forms/affiliation.php:196
2054
- msgid "Promotion methods"
2055
- msgstr "Promotion methods"
2056
-
2057
- #: templates/forms/affiliation.php:199
2058
- msgid "Social media (Facebook, Twitter, etc.)"
2059
- msgstr "Social media (Facebook, Twitter, etc.)"
2060
-
2061
- #: templates/forms/affiliation.php:203
2062
- msgid "Mobile apps"
2063
- msgstr "Mobile apps"
2064
-
2065
- #: templates/forms/affiliation.php:207
2066
- msgid "Website, email, and social media statistics (optional)"
2067
- msgstr "Website, email, and social media statistics (optional)"
2068
-
2069
- #: templates/forms/affiliation.php:210
2070
- 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)."
2071
- 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)."
2072
-
2073
- #: templates/forms/affiliation.php:214
2074
- msgid "How will you promote us?"
2075
- msgstr "How will you promote us?"
2076
-
2077
- #: templates/forms/affiliation.php:217
2078
- msgid "Please provide details on how you intend to promote %s (please be as specific as possible)."
2079
- msgstr "Please provide details on how you intend to promote %s (please be as specific as possible)."
2080
-
2081
- #: templates/forms/affiliation.php223, templates/forms/resend-key.php:22
2082
- msgid "Cancel"
2083
- msgstr "בטל"
2084
-
2085
- #: templates/forms/affiliation.php:225
2086
- msgid "Become an affiliate"
2087
- msgstr "Become an affiliate"
2088
-
2089
- #: templates/forms/license-activation.php:20
2090
- msgid "Please enter the license key that you received in the email right after the purchase:"
2091
- msgstr "אנא הזן את הרישיון שקיבלת לתיבת הדואל שלך לאחר השלמת הרכישה."
2092
-
2093
- #: templates/forms/license-activation.php:25
2094
- msgid "Update License"
2095
- msgstr "עדכון רישיון"
2096
-
2097
- #: templates/forms/optout.php:30
2098
- msgctxt "verb"
2099
- msgid "Opt Out"
2100
- msgstr "Opt Out"
2101
-
2102
- #: templates/forms/optout.php:31
2103
- msgctxt "verb"
2104
- msgid "Opt In"
2105
- msgstr "Opt In"
2106
-
2107
- #: templates/forms/optout.php:33
2108
- 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."
2109
- 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."
2110
-
2111
- #: templates/forms/optout.php:35
2112
- msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
2113
- msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
2114
-
2115
- #: templates/forms/premium-versions-upgrade-handler.php:24
2116
- msgid "There is a new version of %s available."
2117
- msgstr "יש גרסה חדשה עבור ה%s."
2118
-
2119
- #: templates/forms/premium-versions-upgrade-handler.php:25
2120
- msgid " %sRenew your license now%s to access version %s security & feature updates, and support."
2121
- msgstr " %sRenew your license now%s to access version %s security & feature updates, and support."
2122
-
2123
- #: templates/forms/premium-versions-upgrade-handler.php:34
2124
- msgid "New Version Available"
2125
- msgstr "יש גרסה חדשה"
2126
-
2127
- #: templates/forms/premium-versions-upgrade-handler.php:36
2128
- msgid "Renew license"
2129
- msgstr "חידוש רישיון"
2130
-
2131
- #: templates/forms/premium-versions-upgrade-handler.php:53
2132
- msgctxt "close a window"
2133
- msgid "Dismiss"
2134
- msgstr "סגירה"
2135
-
2136
- #: templates/forms/resend-key.php:21
2137
- msgid "Send License Key"
2138
- msgstr "שליחת מפתח רישיון"
2139
-
2140
- #: templates/forms/resend-key.php:57
2141
- msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
2142
- msgstr "הזן את כתובת הדואל שאיתה שידרגת כדי לקבל את הרישיון שוב."
2143
-
2144
- #: templates/forms/trial-start.php:22
2145
- msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
2146
- msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
2147
-
2148
- #: templates/forms/trial-start.php:28
2149
- 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."
2150
- 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."
2151
-
2152
- #: templates/js/style-premium-theme.php:37
2153
- msgid "Premium"
2154
- msgstr "Premium"
2155
-
2156
- #: templates/partials/network-activation.php:23
2157
- msgid "Activate license on all sites in the network."
2158
- msgstr "הפעלת רישיון על כל האתרים ברשת."
2159
-
2160
- #: templates/partials/network-activation.php:24
2161
- msgid "Apply on all sites in the network."
2162
- msgstr "יישום על כל האתרים ברשת."
2163
-
2164
- #: templates/partials/network-activation.php:27
2165
- msgid "Activate license on all pending sites."
2166
- msgstr "הפעלת רישיון על כל האתרים התלויים והעומדים."
2167
-
2168
- #: templates/partials/network-activation.php:28
2169
- msgid "Apply on all pending sites."
2170
- msgstr "יישום על כל האתרים התלויים והעומדים."
2171
-
2172
- #: templates/partials/network-activation.php36,
2173
- #: templates/partials/network-activation.php:68
2174
- msgid "allow"
2175
- msgstr "אפשר"
2176
-
2177
- #: templates/partials/network-activation.php38,
2178
- #: templates/partials/network-activation.php:70
2179
- msgid "delegate"
2180
- msgstr "האצל"
2181
-
2182
- #: templates/partials/network-activation.php41,
2183
- #: templates/partials/network-activation.php:73
2184
- msgid "skip"
2185
- msgstr "דלג"
2186
-
2187
- #: templates/plugin-info/description.php72,
2188
- #: templates/plugin-info/screenshots.php:31
2189
- msgid "Click to view full-size screenshot %d"
2190
- msgstr "Click to view full-size screenshot %d"
2191
-
2192
- #: templates/plugin-info/features.php:56
2193
- msgid "Unlimited Updates"
2194
- msgstr "עדכונים ללא הגבלה"
2195
-
2196
- #: templates/account/partials/activate-license-button.php:46
2197
- msgid "Localhost"
2198
- msgstr "שרת לוקאלי"
2199
-
2200
- #: templates/account/partials/activate-license-button.php:50
2201
- msgctxt "as 5 licenses left"
2202
- msgid "%s left"
2203
- msgstr "נשארו %s"
2204
-
2205
- #: templates/account/partials/activate-license-button.php:51
2206
- msgid "Last license"
2207
- msgstr "רישיון אחרון"
2208
-
2209
- #: templates/account/partials/addon.php:111
2210
- msgid "Cancelled"
2211
- msgstr "בוטל"
2212
-
2213
- #: templates/account/partials/addon.php:116
2214
- msgid "Expired"
2215
- msgstr "פג תוקף"
2216
-
2217
- #: templates/account/partials/addon.php:121
2218
- msgid "No expiration"
2219
- msgstr "ללא תפוגה"
2220
-
2221
- #: templates/account/partials/addon.php259,
2222
- #: templates/account/partials/addon.php:312
2223
- msgid "Activate this add-on"
2224
- msgstr "הפעל את ההרחבה"
2225
-
2226
- #: templates/account/partials/site.php:181
2227
- msgid "Owner Name"
2228
- msgstr "שם הבעלים"
2229
-
2230
- #: templates/account/partials/site.php:193
2231
- msgid "Owner Email"
2232
- msgstr "מייל הבעלים"
2233
-
2234
- #: templates/account/partials/site.php:205
2235
- msgid "Owner ID"
2236
- msgstr "מזהה הבעלים"
2237
-
2238
- #: templates/account/partials/site.php:270
2239
- msgid "Subscription"
2240
- msgstr "מנוי"
2241
-
2242
- #: templates/forms/deactivation/contact.php:19
2243
- msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
2244
- msgstr "מצטערים על חוסר הנעימות, אנחנו כאן כדי לעזור אם תאפשר\\י זאת."
2245
-
2246
- #: templates/forms/deactivation/contact.php:22
2247
- msgid "Contact Support"
2248
- msgstr "צור קשר"
2249
-
2250
- #: templates/forms/deactivation/form.php:56
2251
- msgid "Anonymous feedback"
2252
- msgstr "פידבק אנונימי"
2253
-
2254
- #: templates/forms/deactivation/form.php:63
2255
- msgid "Deactivate"
2256
- msgstr "כיבוי"
2257
-
2258
- #: templates/forms/deactivation/form.php:65
2259
- msgid "Activate %s"
2260
- msgstr "Activate %s"
2261
-
2262
- #: templates/forms/deactivation/form.php:76
2263
- msgid "Quick feedback"
2264
- msgstr "פידבק זריז"
2265
-
2266
- #: templates/forms/deactivation/form.php:80
2267
- msgid "If you have a moment, please let us know why you are %s"
2268
- msgstr "If you have a moment, please let us know why you are %s"
2269
-
2270
- #: templates/forms/deactivation/form.php:80
2271
- msgid "deactivating"
2272
- msgstr "deactivating"
2273
-
2274
- #: templates/forms/deactivation/form.php:80
2275
- msgid "switching"
2276
- msgstr "switching"
2277
-
2278
- #: templates/forms/deactivation/form.php:269
2279
- msgid "Submit & %s"
2280
- msgstr "Submit & %s"
2281
-
2282
- #: templates/forms/deactivation/form.php:290
2283
- msgid "Kindly tell us the reason so we can improve."
2284
- msgstr "אנא שתף את הסיבה כדי שנוכל להשתפר."
2285
-
2286
- #: templates/forms/deactivation/form.php:411
2287
- msgid "Yes - %s"
2288
- msgstr "Yes - %s"
2289
-
2290
- #: templates/forms/deactivation/form.php:418
2291
- msgid "Skip & %s"
2292
- msgstr "דלג ו%s"
2293
-
2294
- #: templates/forms/deactivation/retry-skip.php:21
2295
- msgid "Click here to use the plugin anonymously"
2296
- msgstr "Click here to use the plugin anonymously"
2297
-
2298
- #: templates/forms/deactivation/retry-skip.php:23
2299
- msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
2300
- msgstr "אולי פספסת את זה אבל אינך חייב\\ת לשתף כל מידע איתנו, ביכולתך %s על שיתוף המידע."
1
+ # Copyright (C) 2018 freemius
2
+ # This file is distributed under the same license as the freemius package.
3
+ # Translators:
4
+ # Rami Yushuvaev <r_a_m_i@hotmail.com>, 2017
5
+ # Vova Feldman <vova@freemius.com>, 2017-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-05-27 16:16+0000\n"
12
+ "Last-Translator: Vova Feldman <vova@freemius.com>\n"
13
+ "Language: he_IL\n"
14
+ "Language-Team: Hebrew (Israel) (http://www.transifex.com/freemius/wordpress-sdk/language/he_IL/)\n"
15
+ "Content-Type: text/plain; charset=UTF-8\n"
16
+ "Content-Transfer-Encoding: 8bit\n"
17
+ "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\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:1551
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:1553
30
+ msgid "Error"
31
+ msgstr "שגיאה"
32
+
33
+ #: includes/class-freemius.php:1871
34
+ msgid "I found a better %s"
35
+ msgstr "מצאתי %s יותר טוב"
36
+
37
+ #: includes/class-freemius.php:1873
38
+ msgid "What's the %s's name?"
39
+ msgstr "What's the %s's name?"
40
+
41
+ #: includes/class-freemius.php:1879
42
+ msgid "It's a temporary %s. I'm just debugging an issue."
43
+ msgstr "It's a temporary %s. I'm just debugging an issue."
44
+
45
+ #: includes/class-freemius.php:1881
46
+ msgid "Deactivation"
47
+ msgstr "דיאקטיבציה"
48
+
49
+ #: includes/class-freemius.php:1882
50
+ msgid "Theme Switch"
51
+ msgstr "החלפת תֵמָה"
52
+
53
+ #: includes/class-freemius.php1891, templates/forms/resend-key.php:24
54
+ msgid "Other"
55
+ msgstr "אחר"
56
+
57
+ #: includes/class-freemius.php:1899
58
+ msgid "I no longer need the %s"
59
+ msgstr "I no longer need the %s"
60
+
61
+ #: includes/class-freemius.php:1906
62
+ msgid "I only needed the %s for a short period"
63
+ msgstr "I only needed the %s for a short period"
64
+
65
+ #: includes/class-freemius.php:1912
66
+ msgid "The %s broke my site"
67
+ msgstr "ה%s הרס לי את האתר"
68
+
69
+ #: includes/class-freemius.php:1919
70
+ msgid "The %s suddenly stopped working"
71
+ msgstr "ה%s הפסיק פתאום לעבוד"
72
+
73
+ #: includes/class-freemius.php:1929
74
+ msgid "I can't pay for it anymore"
75
+ msgstr "אני לא יכול/ה להמשיך לשלם על זה"
76
+
77
+ #: includes/class-freemius.php:1931
78
+ msgid "What price would you feel comfortable paying?"
79
+ msgstr "מה המחיר שכן תרגיש\\י בנוח לשלם?"
80
+
81
+ #: includes/class-freemius.php:1937
82
+ msgid "I don't like to share my information with you"
83
+ msgstr "אני לא אוהב את הרעיון של שיתוף מידע איתכם"
84
+
85
+ #: includes/class-freemius.php:1958
86
+ msgid "The %s didn't work"
87
+ msgstr "ה%s לא עבד"
88
+
89
+ #: includes/class-freemius.php:1968
90
+ msgid "I couldn't understand how to make it work"
91
+ msgstr "לא הצלחתי להבין איך לגרום לזה לעבוד"
92
+
93
+ #: includes/class-freemius.php:1976
94
+ msgid "The %s is great, but I need specific feature that you don't support"
95
+ msgstr "The %s is great, but I need specific feature that you don't support"
96
+
97
+ #: includes/class-freemius.php:1978
98
+ msgid "What feature?"
99
+ msgstr "איזה פיטצ'ר?"
100
+
101
+ #: includes/class-freemius.php:1982
102
+ msgid "The %s is not working"
103
+ msgstr "ה%s לא עובד"
104
+
105
+ #: includes/class-freemius.php:1984
106
+ msgid "Kindly share what didn't work so we can fix it for future users..."
107
+ msgstr "אנא שתפ\\י מה לא עבד כדי שנוכל לתקן זאת עבור משתמשים עתידיים..."
108
+
109
+ #: includes/class-freemius.php:1988
110
+ msgid "It's not what I was looking for"
111
+ msgstr "חיפשתי משהו אחר"
112
+
113
+ #: includes/class-freemius.php:1990
114
+ msgid "What you've been looking for?"
115
+ msgstr "מה חיפשת?"
116
+
117
+ #: includes/class-freemius.php:1994
118
+ msgid "The %s didn't work as expected"
119
+ msgstr "ה%s לא עבד כמצופה"
120
+
121
+ #: includes/class-freemius.php:1996
122
+ msgid "What did you expect?"
123
+ msgstr "למה ציפית?"
124
+
125
+ #: includes/class-freemius.php2729, templates/debug.php:20
126
+ msgid "Freemius Debug"
127
+ msgstr "ניפוי תקלות פרימיוס"
128
+
129
+ #: includes/class-freemius.php:3402
130
+ msgid "I don't know what is cURL or how to install it, help me!"
131
+ msgstr "אין לי מושג מה זה cURL או איך להתקין אותו - אשמח לעזרה!"
132
+
133
+ #: includes/class-freemius.php:3404
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 "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."
136
+
137
+ #: includes/class-freemius.php:3411
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:3516
142
+ msgid "Yes - do your thing"
143
+ msgstr "כן - בצעו את מה שצריך"
144
+
145
+ #: includes/class-freemius.php:3521
146
+ msgid "No - just deactivate"
147
+ msgstr "לא - פשוט כבה"
148
+
149
+ #: includes/class-freemius.php3566, includes/class-freemius.php4066,
150
+ #: includes/class-freemius.php5127, includes/class-freemius.php10941,
151
+ #: includes/class-freemius.php14205, includes/class-freemius.php14257,
152
+ #: includes/class-freemius.php14319, includes/class-freemius.php16448,
153
+ #: includes/class-freemius.php16458, includes/class-freemius.php17014,
154
+ #: includes/class-freemius.php17032, includes/class-freemius.php17130,
155
+ #: includes/class-freemius.php17866, templates/add-ons.php:43
156
+ msgctxt "exclamation"
157
+ msgid "Oops"
158
+ msgstr "אופס"
159
+
160
+ #: includes/class-freemius.php:3635
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 "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."
163
+
164
+ #: includes/class-freemius.php:4063
165
+ msgctxt "addonX cannot run without pluginY"
166
+ msgid "%s cannot run without %s."
167
+ msgstr "%s לא יכול לעבוד ללא %s."
168
+
169
+ #: includes/class-freemius.php:4064
170
+ msgctxt "addonX cannot run..."
171
+ msgid "%s cannot run without the plugin."
172
+ msgstr "ההרחבה %s אינה יכולה לפעול ללא התוסף."
173
+
174
+ #: includes/class-freemius.php4176, includes/class-freemius.php4201,
175
+ #: includes/class-freemius.php:17103
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:4815
180
+ msgid "Premium %s version was successfully activated."
181
+ msgstr "Premium %s version was successfully activated."
182
+
183
+ #: includes/class-freemius.php4827, includes/class-freemius.php:6660
184
+ msgctxt ""
185
+ msgid "W00t"
186
+ msgstr "יש"
187
+
188
+ #: includes/class-freemius.php:4842
189
+ msgid "You have a %s license."
190
+ msgstr "יש לך רישיון %s."
191
+
192
+ #: includes/class-freemius.php4846, includes/class-freemius.php13626,
193
+ #: includes/class-freemius.php13637, includes/class-freemius.php16376,
194
+ #: includes/class-freemius.php16676, includes/class-freemius.php16741,
195
+ #: includes/class-freemius.php:16891
196
+ msgctxt "interjection expressing joy or exuberance"
197
+ msgid "Yee-haw"
198
+ msgstr "יששש"
199
+
200
+ #: includes/class-freemius.php:5110
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:5114
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.php5123, templates/add-ons.php99,
209
+ #: templates/account/partials/addon.php:283
210
+ msgid "More information about %s"
211
+ msgstr "מידע נוסף אודות %s"
212
+
213
+ #: includes/class-freemius.php:5124
214
+ msgid "Purchase License"
215
+ msgstr "קניית רישיון"
216
+
217
+ #: includes/class-freemius.php6035, templates/connect.php:161
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:6039
222
+ msgid "start the trial"
223
+ msgstr "התחל תקופת ניסיון"
224
+
225
+ #: includes/class-freemius.php6040, templates/connect.php:165
226
+ msgid "complete the install"
227
+ msgstr "השלם התקנה"
228
+
229
+ #: includes/class-freemius.php:6147
230
+ msgid "You are just one step away - %s"
231
+ msgstr "You are just one step away - %s"
232
+
233
+ #: includes/class-freemius.php:6150
234
+ msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
235
+ msgid "Complete \"%s\" Activation Now"
236
+ msgstr "השלם הפעלת \"%s\" עכשיו"
237
+
238
+ #: includes/class-freemius.php:6227
239
+ msgid "We made a few tweaks to the %s, %s"
240
+ msgstr "We made a few tweaks to the %s, %s"
241
+
242
+ #: includes/class-freemius.php:6231
243
+ msgid "Opt in to make \"%s\" Better!"
244
+ msgstr "Opt in to make \"%s\" Better!"
245
+
246
+ #: includes/class-freemius.php:6659
247
+ msgid "The upgrade of %s was successfully completed."
248
+ msgstr "The upgrade of %s was successfully completed."
249
+
250
+ #: includes/class-freemius.php8384, includes/class-fs-plugin-updater.php581,
251
+ #: includes/class-fs-plugin-updater.php733,
252
+ #: includes/class-fs-plugin-updater.php739, templates/auto-installation.php:32
253
+ msgid "Add-On"
254
+ msgstr "Add-On"
255
+
256
+ #: includes/class-freemius.php8386, templates/debug.php349,
257
+ #: templates/debug.php:510
258
+ msgid "Plugin"
259
+ msgstr "תוסף"
260
+
261
+ #: includes/class-freemius.php8387, templates/debug.php349,
262
+ #: templates/debug.php510, templates/forms/deactivation/form.php:64
263
+ msgid "Theme"
264
+ msgstr "תבנית"
265
+
266
+ #: includes/class-freemius.php:10808
267
+ msgid "invalid_site_details_collection"
268
+ msgstr "invalid_site_details_collection"
269
+
270
+ #: includes/class-freemius.php:10928
271
+ msgid "We couldn't find your email address in the system, are you sure it's the right address?"
272
+ msgstr "We couldn't find your email address in the system, are you sure it's the right address?"
273
+
274
+ #: includes/class-freemius.php:10930
275
+ msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
276
+ msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?"
277
+
278
+ #: includes/class-freemius.php:11166
279
+ msgid "Account is pending activation."
280
+ msgstr "Account is pending activation."
281
+
282
+ #: includes/class-freemius.php:13608
283
+ msgid "%s activation was successfully completed."
284
+ msgstr "הפעלת %s הושלמה בהצלחה."
285
+
286
+ #: includes/class-freemius.php:13622
287
+ msgid "Your account was successfully activated with the %s plan."
288
+ msgstr "חשבונך הופעל בהצלחה עם חבילת %s."
289
+
290
+ #: includes/class-freemius.php13633, includes/class-freemius.php:16737
291
+ msgid "Your trial has been successfully started."
292
+ msgstr "הניסיון שלך הופעל בהצלחה."
293
+
294
+ #: includes/class-freemius.php14203, includes/class-freemius.php14255,
295
+ #: includes/class-freemius.php:14317
296
+ msgid "Couldn't activate %s."
297
+ msgstr "לא ניתן להפעיל את %s."
298
+
299
+ #: includes/class-freemius.php14204, includes/class-freemius.php14256,
300
+ #: includes/class-freemius.php:14318
301
+ msgid "Please contact us with the following message:"
302
+ msgstr "אנא צור איתנו קשר יחד עם ההודעה הבאה:"
303
+
304
+ #: includes/class-freemius.php14666, includes/class-freemius.php:18929
305
+ msgid "Upgrade"
306
+ msgstr "שדרג"
307
+
308
+ #: includes/class-freemius.php:14672
309
+ msgid "Start Trial"
310
+ msgstr "התחל תקופת ניסיון"
311
+
312
+ #: includes/class-freemius.php:14674
313
+ msgid "Pricing"
314
+ msgstr "מחירון"
315
+
316
+ #: includes/class-freemius.php14734, includes/class-freemius.php:14736
317
+ msgid "Affiliation"
318
+ msgstr "אפיליאציה"
319
+
320
+ #: includes/class-freemius.php14756, includes/class-freemius.php14758,
321
+ #: templates/account.php146, templates/debug.php:314
322
+ msgid "Account"
323
+ msgstr "חשבון"
324
+
325
+ #: includes/class-freemius.php14769, includes/class-freemius.php14771,
326
+ #: includes/customizer/class-fs-customizer-support-section.php:60
327
+ msgid "Contact Us"
328
+ msgstr "יצירת קשר"
329
+
330
+ #: includes/class-freemius.php14781, includes/class-freemius.php14783,
331
+ #: includes/class-freemius.php18939, templates/account.php96,
332
+ #: templates/account/partials/addon.php:37
333
+ msgid "Add-Ons"
334
+ msgstr "Add-Ons"
335
+
336
+ #: includes/class-freemius.php14815, templates/pricing.php:97
337
+ msgctxt "noun"
338
+ msgid "Pricing"
339
+ msgstr "מחירון"
340
+
341
+ #: includes/class-freemius.php15009,
342
+ #: includes/customizer/class-fs-customizer-support-section.php:67
343
+ msgid "Support Forum"
344
+ msgstr "פורום תמיכה"
345
+
346
+ #: includes/class-freemius.php:15794
347
+ msgid "Your email has been successfully verified - you are AWESOME!"
348
+ msgstr "Your email has been successfully verified - you are AWESOME!"
349
+
350
+ #: includes/class-freemius.php:15795
351
+ msgctxt "a positive response"
352
+ msgid "Right on"
353
+ msgstr "מעולה"
354
+
355
+ #: includes/class-freemius.php:16367
356
+ msgid "Your %s Add-on plan was successfully upgraded."
357
+ msgstr "חבילת ההרחבה %s שודרגה בהצלחה."
358
+
359
+ #: includes/class-freemius.php:16369
360
+ msgid "%s Add-on was successfully purchased."
361
+ msgstr "ההרחבה %s נרכשה בהצלחה."
362
+
363
+ #: includes/class-freemius.php:16372
364
+ msgid "Download the latest version"
365
+ msgstr "הורד את הגרסה האחרונה"
366
+
367
+ #: includes/class-freemius.php:16444
368
+ msgctxt "%1s - plugin title, %2s - API domain"
369
+ msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
370
+ msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
371
+
372
+ #: includes/class-freemius.php16447, includes/class-freemius.php16862,
373
+ #: includes/class-freemius.php:16927
374
+ msgid "Error received from the server:"
375
+ msgstr "הוחזרה שגיאה מהשרת:"
376
+
377
+ #: includes/class-freemius.php:16457
378
+ msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
379
+ msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
380
+
381
+ #: includes/class-freemius.php16639, includes/class-freemius.php16867,
382
+ #: includes/class-freemius.php:16910
383
+ msgctxt ""
384
+ msgid "Hmm"
385
+ msgstr "אממ"
386
+
387
+ #: includes/class-freemius.php:16652
388
+ 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."
389
+ 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."
390
+
391
+ #: includes/class-freemius.php16653, templates/account.php98,
392
+ #: templates/add-ons.php130, templates/account/partials/addon.php:39
393
+ msgctxt "trial period"
394
+ msgid "Trial"
395
+ msgstr "ניסיון"
396
+
397
+ #: includes/class-freemius.php:16658
398
+ msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
399
+ msgstr "שידרגתי את החשבון שלי אבל כשאני מנסה לבצע סנכרון לרישיון החבילה נשארת %s."
400
+
401
+ #: includes/class-freemius.php16662, includes/class-freemius.php:16719
402
+ msgid "Please contact us here"
403
+ msgstr "אנא צור איתנו קשר כאן"
404
+
405
+ #: includes/class-freemius.php:16672
406
+ msgid "Your plan was successfully upgraded."
407
+ msgstr "החבילה שודרגה בהצלחה."
408
+
409
+ #: includes/class-freemius.php:16689
410
+ msgid "Your plan was successfully changed to %s."
411
+ msgstr "החבילה עודכנה בהצלחה אל %s."
412
+
413
+ #: includes/class-freemius.php:16705
414
+ msgid "Your license has expired. You can still continue using the free %s forever."
415
+ msgstr "Your license has expired. You can still continue using the free %s forever."
416
+
417
+ #: includes/class-freemius.php:16707
418
+ msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
419
+ msgstr "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
420
+
421
+ #: includes/class-freemius.php:16715
422
+ msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
423
+ msgstr "רשיונך בוטל. אם לדעתך זו טעות, נא ליצור קשר עם התמיכה."
424
+
425
+ #: includes/class-freemius.php:16728
426
+ 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."
427
+ 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."
428
+
429
+ #: includes/class-freemius.php:16751
430
+ msgid "Your free trial has expired. You can still continue using all our free features."
431
+ msgstr "תקופת הניסיון שלך הסתיימה. הפיטצ'רים החינאמיים עדיין ניתנים לשימוש."
432
+
433
+ #: includes/class-freemius.php:16753
434
+ msgid "Your free trial