Premmerce Permalink Manager for WooCommerce - Version 1.1.2

Version Description

Release Date: Dec 06, 2017

  • Fixed product comments pagination
  • Added Premmerce icon to menu
  • Added Premmerce version check
  • Added WordPress 4.9.1 support
  • Added WooCommerce 3.2.5 support

=

Download this release

Release Info

Developer premmerce
Plugin Icon 128x128 Premmerce Permalink Manager for WooCommerce
Version 1.1.2
Comparing to
See all releases

Code changes from version 1.1 to 1.1.2

Files changed (91) hide show
  1. composer.json +0 -33
  2. composer.lock +0 -44
  3. fix_freemius +0 -14
  4. freemius/.codeclimate.yml +0 -19
  5. freemius/.github/ISSUE_TEMPLATE.md +0 -29
  6. freemius/.gitignore +0 -16
  7. freemius/.travis.yml +0 -11
  8. freemius/assets/css/admin/affiliation.css +1 -0
  9. freemius/assets/css/admin/index.php +3 -0
  10. freemius/assets/css/index.php +3 -0
  11. freemius/assets/img/index.php +3 -0
  12. freemius/assets/js/index.php +3 -0
  13. freemius/assets/scss/_mixins.scss +0 -13
  14. freemius/assets/scss/admin/affiliation.scss +97 -0
  15. freemius/assets/scss/admin/index.php +3 -0
  16. freemius/assets/scss/index.php +3 -0
  17. freemius/composer.json +0 -10
  18. freemius/config.php +1 -1
  19. freemius/gulpfile.js +0 -139
  20. freemius/includes/class-freemius.php +999 -342
  21. freemius/includes/class-fs-plugin-updater.php +12 -14
  22. freemius/includes/customizer/class-fs-customizer-support-section.php +3 -3
  23. freemius/includes/customizer/class-fs-customizer-upsell-control.php +2 -2
  24. freemius/includes/customizer/index.php +3 -0
  25. freemius/includes/debug/class-fs-debug-bar-panel.php +1 -1
  26. freemius/includes/debug/debug-bar-start.php +2 -2
  27. freemius/includes/entities/class-fs-affiliate-terms.php +128 -0
  28. freemius/includes/entities/class-fs-affiliate.php +84 -0
  29. freemius/includes/entities/class-fs-entity.php +3 -3
  30. freemius/includes/entities/class-fs-plugin.php +21 -0
  31. freemius/includes/fs-core-functions.php +1037 -653
  32. freemius/includes/fs-essential-functions.php +3 -0
  33. freemius/includes/fs-plugin-info-dialog.php +98 -56
  34. freemius/includes/i18n.php +50 -2
  35. freemius/includes/l10n.php +0 -220
  36. freemius/includes/managers/class-fs-admin-menu-manager.php +6 -5
  37. freemius/includes/managers/class-fs-cache-manager.php +6 -5
  38. freemius/includes/managers/class-fs-option-manager.php +58 -7
  39. freemius/includes/sdk/FreemiusWordPress.php +11 -5
  40. freemius/languages/freemius-en.po +1065 -1685
  41. freemius/languages/freemius-es_ES.mo +0 -0
  42. freemius/languages/freemius-es_ES.po +2035 -0
  43. freemius/languages/freemius-he.mo +0 -0
  44. freemius/languages/freemius-he_IL.mo +0 -0
  45. freemius/languages/{freemius-he.po → freemius-he_IL.po} +1588 -1379
  46. freemius/languages/freemius.pot +635 -1180
  47. freemius/package.json +0 -40
  48. freemius/require.php +2 -0
  49. freemius/start.php +41 -18
  50. freemius/templates/account.php +133 -92
  51. freemius/templates/account/billing.php +21 -16
  52. freemius/templates/account/payments.php +6 -6
  53. freemius/templates/add-ons.php +9 -9
  54. freemius/templates/admin-notice.php +3 -1
  55. freemius/templates/auto-installation.php +12 -9
  56. freemius/templates/billing.php +0 -506
  57. freemius/templates/checkout.php +1 -1
  58. freemius/templates/connect.php +46 -41
  59. freemius/templates/contact.php +1 -1
  60. freemius/templates/debug.php +94 -85
  61. freemius/templates/debug/api-calls.php +14 -12
  62. freemius/templates/debug/logger.php +8 -8
  63. freemius/templates/debug/plugins-themes-sync.php +25 -17
  64. freemius/templates/debug/scheduled-crons.php +29 -21
  65. freemius/templates/forms/affiliation.php +479 -0
  66. freemius/templates/forms/deactivation/contact.php +5 -2
  67. freemius/templates/forms/deactivation/form.php +28 -23
  68. freemius/templates/forms/deactivation/retry-skip.php +4 -4
  69. freemius/templates/forms/license-activation.php +11 -9
  70. freemius/templates/forms/optout.php +16 -15
  71. freemius/templates/forms/resend-key.php +7 -7
  72. freemius/templates/forms/trial-start.php +9 -7
  73. freemius/templates/js/style-premium-theme.php +1 -1
  74. freemius/templates/plugin-icon.php +2 -2
  75. freemius/templates/plugin-info/description.php +2 -2
  76. freemius/templates/plugin-info/features.php +5 -5
  77. freemius/templates/plugin-info/screenshots.php +1 -1
  78. freemius/templates/pricing.php +1 -1
  79. freemius/templates/secure-https-header.php +2 -1
  80. freemius/templates/tabs.php +177 -178
  81. makefile +0 -22
  82. premmerce-url-manager.php +6 -2
  83. readme.md +0 -64
  84. readme.txt +21 -4
  85. src/Admin/Admin.php +8 -1
  86. src/PermalinkListener.php +227 -235
  87. vendor/composer/autoload_classmap.php +0 -1
  88. vendor/composer/autoload_files.php +0 -10
  89. vendor/composer/autoload_psr4.php +2 -1
  90. vendor/composer/autoload_real.php +0 -18
  91. vendor/composer/autoload_static.php +6 -7
composer.json DELETED
@@ -1,33 +0,0 @@
1
- {
2
- "name": "premmerce/woo-permalink-manager",
3
- "description": "Permalink manager",
4
- "type": "wordpress-plugin",
5
- "license": "GPLv2+",
6
- "authors": [
7
- {
8
- "name": "premmerce",
9
- "email": "info@premme.com"
10
- }
11
- ],
12
- "minimum-stability": "stable",
13
- "repositories": [
14
- {
15
- "type": "git",
16
- "url": "https://github.com/Premmerce/wordpress-sdk.git"
17
- }
18
- ],
19
- "require": {
20
- "premmerce/wordpress-sdk": "^1.0"
21
- },
22
- "autoload": {
23
- "psr-4": {
24
- "Premmerce\\UrlManager\\": [
25
- "sdk/",
26
- "src/"
27
- ]
28
- },
29
- "files": [
30
- "freemius.php"
31
- ]
32
- }
33
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
composer.lock DELETED
@@ -1,44 +0,0 @@
1
- {
2
- "_readme": [
3
- "This file locks the dependencies of your project to a known state",
4
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5
- "This file is @generated automatically"
6
- ],
7
- "content-hash": "1e7ae28601f4a6baa5227072d1fe9c63",
8
- "packages": [
9
- {
10
- "name": "premmerce/wordpress-sdk",
11
- "version": "v1.0",
12
- "source": {
13
- "type": "git",
14
- "url": "https://github.com/Premmerce/wordpress-sdk.git",
15
- "reference": "c4c71a80ed677ea4f073333efb329c0aa5d7b033"
16
- },
17
- "type": "library",
18
- "autoload": {
19
- "psr-4": {
20
- "WordpressSDK\\": "src"
21
- }
22
- },
23
- "license": [
24
- "GPL-2.0+"
25
- ],
26
- "authors": [
27
- {
28
- "name": "Premmerce",
29
- "email": "info@premme.com"
30
- }
31
- ],
32
- "description": "Wordpress SDK for premmerce plugins",
33
- "time": "2017-10-30T14:25:58+00:00"
34
- }
35
- ],
36
- "packages-dev": [],
37
- "aliases": [],
38
- "minimum-stability": "stable",
39
- "stability-flags": [],
40
- "prefer-stable": false,
41
- "prefer-lowest": false,
42
- "platform": [],
43
- "platform-dev": []
44
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fix_freemius DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/php
2
- <?php
3
- $from = '<?php if ( ! $has_tabs ) : ?>';
4
- $to = "<?php if ( ! \$has_tabs && ! \$fs->apply_filters( 'hide_account_tabs', false )) : ?>";
5
-
6
- $file = 'freemius/templates/account.php';
7
-
8
- $content = file_get_contents($file);
9
-
10
- $content = str_replace($from, $to, $content);
11
-
12
- if(file_put_contents('tmp', $content)){
13
- rename('tmp', $file);
14
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
freemius/.codeclimate.yml DELETED
@@ -1,19 +0,0 @@
1
- engines:
2
- phpcodesniffer:
3
- enabled: true
4
- config:
5
- standard: "WordPress"
6
- checks:
7
- Squiz Commenting InlineComment InvalidEndChar:
8
- enabled: false
9
- Squiz Commenting InlineComment SpacingBefore:
10
- enabled: false
11
- Squiz Commenting InlineComment WrongStyle:
12
- enabled: false
13
- Generic Commenting DocComment MissingShort:
14
- enabled: false
15
- Generic WhiteSpace ScopeIndent IncorrectExact:
16
- enabled: false
17
- ratings:
18
- paths:
19
- - "**.php"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
freemius/.github/ISSUE_TEMPLATE.md DELETED
@@ -1,29 +0,0 @@
1
- **Actual Behavior**:
2
- - `What is the issue? (*)`
3
- - `What is the expected behavior?`
4
-
5
- **Versions**: (*)
6
- - `Freemius SDK Version:`
7
- - `WordPress Version:`
8
- - `PHP Version:`
9
-
10
- **Plugin / Theme**: (*)
11
- - `Name:`
12
- - `Slug:`
13
- - `Freemius ID:`
14
-
15
- **Additional Information**:
16
- - `Browser Type: (*)`
17
- - `Browser Version: (*)`
18
- - `OS: (*)`
19
- - `Stack Traces:`
20
-
21
- ----
22
- **Note:** `(*)` indicates required information. Without this information, your issue may be auto-closed.
23
-
24
- > You can find your Freemius SDK version at `/freemius/start.php`
25
-
26
- > You can find your Freemius product ID in the Freemius dashboard: `SETTINGS -> INTEGRATION`.
27
-
28
- > Do not modify the titles or questions. Simply add your responses to the ends of the questions.
29
- Add more lines if needed.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
freemius/.gitignore DELETED
@@ -1,16 +0,0 @@
1
- output/
2
- assets/img/icon.*
3
-
4
- pootle-page-builder.png
5
- rating-widget.jpg
6
- hello-dolly-pro.png
7
- woocommerce-fiscalita-italiana.png
8
- assets/img/content-aware-sidebars.png
9
- assets/img/custom-post-type-ui.png
10
- .idea
11
- nextgen-gallery.png
12
- node_modules
13
- languages/_freemius-en.mo
14
- languages/_freemius-en.po
15
- foobox-image-lightbox.png
16
- transifex-config.json
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
freemius/.travis.yml DELETED
@@ -1,11 +0,0 @@
1
- sudo: false
2
-
3
- language: php
4
-
5
- php:
6
- - 5.3
7
- - 5.4
8
- - 5.5
9
- - 5.6
10
- - 7.0
11
- - hhvm
 
 
 
 
 
 
 
 
 
 
 
freemius/assets/css/admin/affiliation.css ADDED
@@ -0,0 +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{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/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
freemius/assets/css/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
freemius/assets/img/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
freemius/assets/js/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
freemius/assets/scss/_mixins.scss CHANGED
@@ -132,19 +132,6 @@ $useIEFilters: 0;
132
  }
133
  }
134
 
135
- /*@mixin rgba-bg ($hex, $alpha, $ie: $useIEFilters) {
136
- @if $ie == 1 {
137
- background-color: none;
138
- $hexopac: ie-hex-str(rgba($hex, $alpha));
139
- filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#{$hexopac}',EndColorStr='#{$hexopac}}');
140
- -ms-filter: quote(progid:DXImageTransform.Microsoft.gradient(startColorStr='#{$hexopac}',EndColorStr='#{$hexopac}'));
141
- }
142
- @else {
143
- background-color: $hex;
144
- background-color: rgba($hex, $alpha);
145
- }
146
- }*/
147
-
148
  @mixin perspective($perspective) {
149
  -moz-perspective: $perspective;
150
  -ms-perspective: $perspective;
132
  }
133
  }
134
 
 
 
 
 
 
 
 
 
 
 
 
 
 
135
  @mixin perspective($perspective) {
136
  -moz-perspective: $perspective;
137
  -ms-perspective: $perspective;
freemius/assets/scss/admin/affiliation.scss ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "../start";
2
+
3
+ #fs_affiliation_content_wrapper {
4
+ #messages {
5
+ margin-top: 25px;
6
+ }
7
+
8
+ h3 {
9
+ font-size: 24px;
10
+ padding: 0;
11
+ margin-left: 0;
12
+ }
13
+
14
+ ul {
15
+ li {
16
+ @include box-sizing(border-box);
17
+ list-style-type: none;
18
+
19
+ &:before {
20
+ content: '✓';
21
+ margin-right: 10px;
22
+ font-weight: bold;
23
+ }
24
+ }
25
+ }
26
+
27
+ p:not(.description), li, label {
28
+ font-size: 16px !important;
29
+ line-height: 26px !important;
30
+ }
31
+
32
+ .button {
33
+ margin-top: 20px;
34
+ margin-bottom: 7px;
35
+ line-height: 35px;
36
+ height: 40px;
37
+ font-size: 16px;
38
+
39
+ &#cancel_button {
40
+ margin-right: 5px;
41
+ }
42
+ }
43
+
44
+ form {
45
+ .input-container {
46
+ .input-label {
47
+ font-weight: bold;
48
+ display: block;
49
+ width: 100%;
50
+ }
51
+
52
+ &.input-container-text {
53
+ label, input, textarea {
54
+ display: block;
55
+ }
56
+ }
57
+
58
+ margin-bottom: 15px;
59
+
60
+ #add_domain, .remove-domain {
61
+ text-decoration: none;
62
+ display: inline-block;
63
+ margin-top: 3px;
64
+
65
+ &:focus {
66
+ box-shadow: none;
67
+ }
68
+
69
+ &.disabled {
70
+ color: #aaa;
71
+ cursor: default;
72
+ }
73
+ }
74
+ }
75
+
76
+ #extra_domains_container {
77
+ .description {
78
+ margin-top: 0;
79
+ position: relative;
80
+ top: -4px;
81
+ }
82
+
83
+ .extra-domain-input-container {
84
+ margin-bottom: 15px;
85
+
86
+ .domain {
87
+ display: inline-block;
88
+ margin-right: 5px;
89
+
90
+ &:last-of-type {
91
+ margin-bottom: 0;
92
+ }
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
freemius/assets/scss/admin/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
freemius/assets/scss/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
freemius/composer.json DELETED
@@ -1,10 +0,0 @@
1
- {
2
- "name": "freemius/wordpress-sdk",
3
- "description": "Freemius WordPress SDK",
4
- "keywords": ["freemius", "wordpress", "plugin", "sdk"],
5
- "homepage": "https://freemius.com",
6
- "license": "GPL-2.0+",
7
- "require": {
8
- "php": ">=5.2"
9
- }
10
- }
 
 
 
 
 
 
 
 
 
 
freemius/config.php CHANGED
@@ -231,7 +231,7 @@
231
  }
232
 
233
  if ( ! defined( 'FS_CHECKOUT__ADDRESS_LOCALHOST' ) ) {
234
- define( 'FS_CHECKOUT__ADDRESS_LOCALHOST', 'http://checkout.freemius:8080' );
235
  }
236
 
237
  if ( ! defined( 'FS_CHECKOUT__ADDRESS' ) ) {
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' ) ) {
freemius/gulpfile.js DELETED
@@ -1,139 +0,0 @@
1
- var gulp = require('gulp');
2
- var path = require('path');
3
- var filesystem = require('fs');
4
- var wpPot = require('gulp-wp-pot');
5
- var gettext = require('gulp-gettext');
6
- var sort = require('gulp-sort');
7
- var pofill = require('gulp-pofill');
8
- var rename = require('gulp-rename');
9
- var clean = require('gulp-clean');
10
-
11
- var languagesFolder = './languages/';
12
-
13
- var options = require('./transifex-config.json')
14
-
15
- function getFolders(dir) {
16
- return filesystem.readdirSync(dir)
17
- .filter(function (file) {
18
- return filesystem.statSync(path.join(dir, file)).isDirectory();
19
- });
20
- }
21
-
22
- var transifex = require('gulp-transifex').createClient(options);
23
-
24
- // Create POT out of i18n.php.
25
- gulp.task('prepare-source', function () {
26
- gulp.src('includes/i18n.php')
27
- .pipe(sort())
28
- .pipe(wpPot({
29
- destFile : 'freemius.pot',
30
- package : 'freemius',
31
- bugReport : 'https://github.com/Freemius/wordpress-sdk/issues',
32
- lastTranslator : 'Vova Feldman <vova@freemius.com>',
33
- team : 'Freemius Team <admin@freemius.com>',
34
- gettextFunctions: [
35
- {name: '_fs_text'},
36
- {name: '_fs_echo'},
37
- {name: '_fs_esc_attr'},
38
- {name: '_fs_esc_attr_echo'},
39
- {name: '_fs_esc_html'},
40
- {name: '_fs_esc_html_echo'},
41
- {name: '_fs_x', context: 2},
42
- {name: '_fs_ex', context: 2},
43
- {name: '_fs_esc_attr_x', context: 2},
44
- {name: '_fs_esc_html_x', context: 2},
45
- {name: '_fs_n', plural: 2},
46
- {name: '_fs_n_noop', plural: 2},
47
- {name: '_fs_nx', plural: 2, context: 4},
48
- {name: '_fs_nx_noop', plural: 2, context: 3}
49
- ]
50
- }))
51
- .pipe(gulp.dest(languagesFolder + 'freemius.pot'));
52
-
53
- // Create English PO out of the POT.
54
- return gulp.src(languagesFolder + 'freemius.pot')
55
- .pipe(pofill({
56
- items: function (item) {
57
- // If msgstr is empty, use identity translation
58
- if (!item.msgstr.length) {
59
- item.msgstr = [''];
60
- }
61
- if (!item.msgstr[0]) {
62
- item.msgstr[0] = item.msgid;
63
- }
64
- return item;
65
- }
66
- }))
67
- .pipe(rename('freemius-en.po'))
68
- .pipe(gulp.dest(languagesFolder));
69
- });
70
-
71
- // Push updated po resource to transifex.
72
- gulp.task('update-transifex', ['prepare-source'], function () {
73
- return gulp.src(languagesFolder + 'freemius-en.po')
74
- .pipe(transifex.pushResource());
75
- });
76
-
77
- // Download latest *.po translations.
78
- gulp.task('download-translations', ['update-transifex'], function () {
79
- return gulp.src(languagesFolder + 'freemius-en.po')
80
- .pipe(transifex.pullResource());
81
- });
82
-
83
- // Move translations to languages root.
84
- gulp.task('prepare-translations', ['download-translations'], function () {
85
- var folders = getFolders(languagesFolder);
86
-
87
- return folders.map(function (folder) {
88
- return gulp.src(path.join(languagesFolder, folder, 'freemius-en.po'))
89
- .pipe(rename('freemius-' + folder + '.po'))
90
- .pipe(gulp.dest(languagesFolder));
91
- });
92
- });
93
-
94
- // Feel up empty translations with English.
95
- gulp.task('translations-feelup', ['prepare-translations'], function () {
96
- return gulp.src(languagesFolder + '*.po')
97
- .pipe(pofill({
98
- items: function (item) {
99
- // If msgstr is empty, use identity translation
100
- if (0 == item.msgstr.length) {
101
- item.msgstr = [''];
102
- }
103
- if (0 == item.msgstr[0].length) {
104
- // item.msgid[0] = item.msgid;
105
- item.msgstr[0] = item.msgid;
106
- }
107
- return item;
108
- }
109
- }))
110
- .pipe(gulp.dest(languagesFolder));
111
- });
112
-
113
- // Cleanup temporary translation folders.
114
- gulp.task('cleanup', ['prepare-translations'], function () {
115
- var folders = getFolders(languagesFolder);
116
-
117
- return folders.map(function (folder) {
118
- return gulp.src(path.join(languagesFolder, folder), {read: false})
119
- .pipe(clean());
120
- });
121
- });
122
-
123
- // Compile *.po to *.mo binaries for usage.
124
- gulp.task('compile-translations', ['translations-feelup'], function () {
125
- // Compile POs to MOs.
126
- return gulp.src(languagesFolder + '*.po')
127
- .pipe(gettext())
128
- .pipe(gulp.dest(languagesFolder))
129
- });
130
-
131
- gulp.task('default', [], function () {
132
- gulp.run('prepare-source');
133
- gulp.run('update-transifex');
134
- gulp.run('download-translations');
135
- gulp.run('prepare-translations');
136
- gulp.run('translations-feelup');
137
- gulp.run('cleanup');
138
- gulp.run('compile-translations');
139
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
freemius/includes/class-freemius.php CHANGED
@@ -271,6 +271,33 @@
271
  */
272
  private static $_instances = array();
273
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
  #region Uninstall Reasons IDs
275
 
276
  const REASON_NO_LONGER_NEEDED = 1;
@@ -528,6 +555,18 @@
528
  return;
529
  }
530
 
 
 
 
 
 
 
 
 
 
 
 
 
531
  if ( version_compare( $sdk_prev_version, '1.1.5', '<' ) &&
532
  version_compare( $sdk_version, '1.1.5', '>=' )
533
  ) {
@@ -551,6 +590,46 @@
551
  }
552
  }
553
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
554
  /**
555
  * @author Vova Feldman (@svovaf)
556
  * @since 1.2.2.7
@@ -732,6 +811,8 @@
732
  '_install_premium_version_ajax_action'
733
  ) );
734
 
 
 
735
  $this->add_action( 'after_plans_sync', array( &$this, '_check_for_trial_plans' ) );
736
 
737
  $this->add_action( 'sdk_version_update', array( &$this, '_data_migration' ), WP_FS__DEFAULT_PRIORITY, 2 );
@@ -739,6 +820,7 @@
739
  $this->add_filter( 'after_code_type_change', array( &$this, '_after_code_type_change' ) );
740
 
741
  add_action( 'admin_init', array( &$this, '_add_trial_notice' ) );
 
742
  add_action( 'admin_init', array( &$this, '_enqueue_common_css' ) );
743
 
744
  /**
@@ -844,8 +926,11 @@
844
  // Try to load the cached value of the file path.
845
  if ( isset( $this->_storage->plugin_main_file ) ) {
846
  $plugin_main_file = $this->_storage->plugin_main_file;
847
- if ( isset( $plugin_main_file->path ) && file_exists( $plugin_main_file->path ) ) {
848
- return $plugin_main_file->path;
 
 
 
849
  }
850
  }
851
 
@@ -864,15 +949,16 @@
864
  if ( isset( $this->_storage->plugin_main_file ) &&
865
  isset( $this->_storage->plugin_main_file->prev_path )
866
  ) {
867
- if ( file_exists( $this->_storage->plugin_main_file->prev_path ) ) {
868
- return $this->_storage->plugin_main_file->prev_path;
 
869
  }
870
  }
871
 
872
  wp_die(
873
- $this->get_text( 'failed-finding-main-path' ) .
874
  " Module: {$this->_slug}; SDK: " . WP_FS__SDK_VERSION . ";",
875
- $this->get_text( 'error' ),
876
  array( 'back_link' => true )
877
  );
878
  }
@@ -888,8 +974,61 @@
888
  'path' => $id_slug_type_path_map[ $this->_module_id ]['path'],
889
  );
890
 
891
- return $id_slug_type_path_map[ $this->_module_id ]['path'];
892
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
893
 
894
  /**
895
  * @author Leo Fajardo (@leorw)
@@ -912,7 +1051,19 @@
912
  $store_option = true;
913
  }
914
 
915
- if ( ! isset( $id_slug_type_path_map[ $module_id ]['path'] ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
916
  $caller_main_file_and_type = $this->get_caller_main_file_and_type();
917
 
918
  $id_slug_type_path_map[ $module_id ]['type'] = $caller_main_file_and_type->module_type;
@@ -1002,8 +1153,18 @@
1002
  */
1003
 
1004
  if ( $caller_file_path == fs_normalize_path( realpath( trailingslashit( $themes_dir ) . basename( dirname( $caller_file_path ) ) . '/' . basename( $caller_file_path ) ) ) ) {
1005
- $module_type = WP_FS__MODULE_TYPE_THEME;
1006
- $caller_file_candidate = $caller_file_path;
 
 
 
 
 
 
 
 
 
 
1007
  continue;
1008
  }
1009
  }
@@ -1021,7 +1182,7 @@
1021
 
1022
  if ( isset( $caller_map[ $caller_file_hash ] ) ) {
1023
  $module_type = WP_FS__MODULE_TYPE_PLUGIN;
1024
- $caller_file_candidate = $caller_map[ $caller_file_hash ];
1025
  }
1026
  }
1027
 
@@ -1113,18 +1274,18 @@
1113
 
1114
  $reason_found_better_plugin = array(
1115
  'id' => self::REASON_FOUND_A_BETTER_PLUGIN,
1116
- 'text' => sprintf( $this->get_text( 'reason-found-a-better-plugin' ), $module_type ),
1117
  'input_type' => 'textfield',
1118
- 'input_placeholder' => sprintf( $this->get_text( 'placeholder-plugin-name' ), $module_type ),
1119
  );
1120
 
1121
  $reason_temporary_deactivation = array(
1122
  'id' => self::REASON_TEMPORARY_DEACTIVATION,
1123
  'text' => sprintf(
1124
- $this->get_text( 'reason-temporary-x' ),
1125
  strtolower( $this->is_plugin() ?
1126
- $this->get_text( 'deactivation' ) :
1127
- $this->get_text( 'theme-switch' )
1128
  )
1129
  ),
1130
  'input_type' => '',
@@ -1133,7 +1294,7 @@
1133
 
1134
  $reason_other = array(
1135
  'id' => self::REASON_OTHER,
1136
- 'text' => $this->get_text( 'reason-other' ),
1137
  'input_type' => 'textfield',
1138
  'input_placeholder' => ''
1139
  );
@@ -1141,27 +1302,27 @@
1141
  $long_term_user_reasons = array(
1142
  array(
1143
  'id' => self::REASON_NO_LONGER_NEEDED,
1144
- 'text' => sprintf( $this->get_text( 'reason-no-longer-needed' ), $module_type ),
1145
  'input_type' => '',
1146
  'input_placeholder' => ''
1147
  ),
1148
  $reason_found_better_plugin,
1149
  array(
1150
  'id' => self::REASON_NEEDED_FOR_A_SHORT_PERIOD,
1151
- 'text' => sprintf( $this->get_text( 'reason-needed-for-a-short-period' ), $module_type ),
1152
  'input_type' => '',
1153
  'input_placeholder' => ''
1154
  ),
1155
  array(
1156
  'id' => self::REASON_BROKE_MY_SITE,
1157
- 'text' => sprintf( $this->get_text( 'reason-broke-my-site' ), $module_type ),
1158
  'input_type' => '',
1159
  'input_placeholder' => '',
1160
  'internal_message' => $contact_support_template
1161
  ),
1162
  array(
1163
  'id' => self::REASON_SUDDENLY_STOPPED_WORKING,
1164
- 'text' => sprintf( $this->get_text( 'reason-suddenly-stopped-working' ), $module_type ),
1165
  'input_type' => '',
1166
  'input_placeholder' => '',
1167
  'internal_message' => $contact_support_template
@@ -1171,15 +1332,15 @@
1171
  if ( $this->is_paying() ) {
1172
  $long_term_user_reasons[] = array(
1173
  'id' => self::REASON_CANT_PAY_ANYMORE,
1174
- 'text' => $this->get_text( 'reason-cant-pay-anymore' ),
1175
  'input_type' => 'textfield',
1176
- 'input_placeholder' => $this->get_text( 'placeholder-comfortable-price' )
1177
  );
1178
  }
1179
 
1180
  $reason_dont_share_info = array(
1181
  'id' => self::REASON_DONT_LIKE_TO_SHARE_MY_INFORMATION,
1182
- 'text' => $this->get_text( 'reason-dont-like-to-share-my-information' ),
1183
  'input_type' => '',
1184
  'input_placeholder' => ''
1185
  );
@@ -1200,7 +1361,7 @@
1200
  'non-registered-and-non-anonymous-short-term' => array(
1201
  array(
1202
  'id' => self::REASON_DIDNT_WORK,
1203
- 'text' => sprintf( $this->get_text( 'reason-didnt-work' ), $module_type ),
1204
  'input_type' => '',
1205
  'input_placeholder' => ''
1206
  ),
@@ -1210,7 +1371,7 @@
1210
  'short-term' => array(
1211
  array(
1212
  'id' => self::REASON_COULDNT_MAKE_IT_WORK,
1213
- 'text' => $this->get_text( 'reason-couldnt-make-it-work' ),
1214
  'input_type' => '',
1215
  'input_placeholder' => '',
1216
  'internal_message' => $contact_support_template
@@ -1218,27 +1379,27 @@
1218
  $reason_found_better_plugin,
1219
  array(
1220
  'id' => self::REASON_GREAT_BUT_NEED_SPECIFIC_FEATURE,
1221
- 'text' => sprintf( $this->get_text( 'reason-great-but-need-specific-feature' ), $module_type ),
1222
  'input_type' => 'textarea',
1223
- 'input_placeholder' => $this->get_text( 'placeholder-feature' )
1224
  ),
1225
  array(
1226
  'id' => self::REASON_NOT_WORKING,
1227
- 'text' => sprintf( $this->get_text( 'reason-not-working' ), $module_type ),
1228
  'input_type' => 'textarea',
1229
- 'input_placeholder' => $this->get_text( 'placeholder-share-what-didnt-work' )
1230
  ),
1231
  array(
1232
  'id' => self::REASON_NOT_WHAT_I_WAS_LOOKING_FOR,
1233
- 'text' => $this->get_text( 'reason-not-what-i-was-looking-for' ),
1234
  'input_type' => 'textarea',
1235
- 'input_placeholder' => $this->get_text( 'placeholder-what-youve-been-looking-for' )
1236
  ),
1237
  array(
1238
  'id' => self::REASON_DIDNT_WORK_AS_EXPECTED,
1239
- 'text' => sprintf( $this->get_text( 'reason-didnt-work-as-expected' ), $module_type ),
1240
  'input_type' => 'textarea',
1241
- 'input_placeholder' => $this->get_text( 'placeholder-what-did-you-expect' )
1242
  )
1243
  )
1244
  );
@@ -1774,7 +1935,7 @@
1774
 
1775
  self::$_static_logger->entrance();
1776
 
1777
- $title = sprintf( '%s [v.%s]', fs_text( 'freemius-debug' ), WP_FS__SDK_VERSION );
1778
 
1779
  if ( WP_FS__DEV_MODE ) {
1780
  // Add top-level debug menu item.
@@ -2181,29 +2342,36 @@
2181
  *
2182
  * @return string
2183
  */
2184
- function get_anonymous_id() {
2185
- $unique_id = self::$_accounts->get_option( 'unique_id' );
2186
 
2187
- if ( empty( $unique_id ) || ! is_string( $unique_id ) ) {
2188
- $key = get_site_url();
2189
 
2190
- // If localhost, assign microtime instead of domain.
2191
- if ( WP_FS__IS_LOCALHOST ||
2192
- false !== strpos( $key, 'localhost' ) ||
2193
- false === strpos( $key, '.' )
2194
- ) {
2195
- $key = microtime();
2196
- }
2197
 
2198
- $unique_id = md5( $key );
 
 
 
 
 
 
 
2199
 
2200
- self::$_accounts->set_option( 'unique_id', $unique_id, true );
2201
- }
2202
 
2203
- $this->_logger->departure( $unique_id );
2204
 
2205
- return $unique_id;
2206
- }
2207
 
2208
  /**
2209
  * @author Vova Feldman (@svovaf)
@@ -2283,6 +2451,18 @@
2283
  // $admin_email = get_option( 'admin_email' );
2284
  $admin_email = $current_user->user_email;
2285
 
 
 
 
 
 
 
 
 
 
 
 
 
2286
  $message = false;
2287
  if ( is_object( $api_result ) &&
2288
  isset( $api_result->error ) &&
@@ -2309,15 +2489,15 @@
2309
  if ( ! empty( $missing_methods ) ) {
2310
  $missing_methods = sprintf(
2311
  '<br><br><b>%s</b> %s',
2312
- $this->get_text( 'curl-disabled-methods' ),
2313
  $missing_methods
2314
  );
2315
  }
2316
  }
2317
 
2318
  $message = sprintf(
2319
- $this->get_text( 'x-requires-access-to-api' ) . ' ' .
2320
- $this->get_text( 'curl-missing-message' ) . ' ' .
2321
  $missing_methods .
2322
  ' %s',
2323
  '<b>' . $this->get_plugin_name() . '</b>',
@@ -2325,95 +2505,95 @@
2325
  '<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
2326
  sprintf(
2327
  '<a class="fs-resolve" data-type="curl" href="#"><b>%s</b></a>%s',
2328
- $this->get_text( 'curl-missing-no-clue-title' ),
2329
  ' - ' . sprintf(
2330
- $this->get_text( 'curl-missing-no-clue-desc' ),
2331
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
2332
  )
2333
  ),
2334
  sprintf(
2335
  '<b>%s</b> - %s',
2336
- $this->get_text( 'sysadmin-title' ),
2337
- sprintf( $this->get_text( 'curl-missing-sysadmin-desc' ), $this->_module_type )
2338
  ),
2339
  sprintf(
2340
- '<a href="%s"><b>%s</b></a>%s',
2341
- wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=' . 'all' . '&amp;paged=' . '1' . '&amp;s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
2342
- $this->get_text( 'deactivate-plugin-title' ),
2343
- ' - ' . $this->get_text( 'deactivate-plugin-desc' )
2344
  )
2345
  )
2346
  );
2347
  break;
2348
  case 'cloudflare_ddos_protection':
2349
  $message = sprintf(
2350
- $this->get_text( 'x-requires-access-to-api' ) . ' ' .
2351
- $this->get_text( 'cloudflare-blocks-connection-message' ) . ' ' .
2352
- $this->get_text( 'happy-to-resolve-issue-asap' ) .
2353
  ' %s',
2354
  '<b>' . $this->get_plugin_name() . '</b>',
2355
  sprintf(
2356
  '<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
2357
  sprintf(
2358
  '<a class="fs-resolve" data-type="cloudflare" href="#"><b>%s</b></a>%s',
2359
- $this->get_text( 'fix-issue-title' ),
2360
  ' - ' . sprintf(
2361
- $this->get_text( 'fix-issue-desc' ),
2362
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
2363
  )
2364
  ),
2365
  sprintf(
2366
- '<a href="%s" target="_blank"><b>%s</b></a>%s',
2367
  sprintf( 'https://wordpress.org/plugins/%s/download/', $this->_slug ),
2368
- $this->get_text( 'install-previous-title' ),
2369
- ' - ' . $this->get_text( 'install-previous-desc' )
2370
  ),
2371
  sprintf(
2372
- '<a href="%s"><b>%s</b></a>%s',
2373
- wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=' . 'all' . '&amp;paged=' . '1' . '&amp;s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
2374
- $this->get_text( 'deactivate-plugin-title' ),
2375
- ' - ' . $this->get_text( 'deactivate-plugin-desc' )
2376
  )
2377
  )
2378
  );
2379
  break;
2380
  case 'squid_cache_block':
2381
  $message = sprintf(
2382
- $this->get_text( 'x-requires-access-to-api' ) . ' ' .
2383
- $this->get_text( 'squid-blocks-connection-message' ) .
2384
  ' %s',
2385
  '<b>' . $this->get_plugin_name() . '</b>',
2386
  sprintf(
2387
  '<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
2388
  sprintf(
2389
- '<a class="fs-resolve" data-type="squid" href="#"><b>%s</b></a>%s',
2390
- $this->get_text( 'squid-no-clue-title' ),
2391
- ' - ' . sprintf(
2392
- $this->get_text( 'squid-no-clue-desc' ),
2393
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
2394
  )
2395
  ),
2396
  sprintf(
2397
  '<b>%s</b> - %s',
2398
- $this->get_text( 'sysadmin-title' ),
2399
  sprintf(
2400
- $this->get_text( 'squid-sysadmin-desc' ),
2401
  // We use a filter since the plugin might require additional API connectivity.
2402
  '<b>' . implode( ', ', $this->apply_filters( 'api_domains', array( 'api.freemius.com', 'wp.freemius.com' ) ) ) . '</b>',
2403
  $this->_module_type
2404
  )
2405
  ),
2406
  sprintf(
2407
- '<a href="%s"><b>%s</b></a>%s',
2408
- wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=' . 'all' . '&amp;paged=' . '1' . '&amp;s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
2409
- $this->get_text( 'deactivate-plugin-title' ),
2410
- ' - ' . $this->get_text( 'deactivate-plugin-desc' )
2411
  )
2412
  )
2413
  );
2414
  break;
2415
  // default:
2416
- // $message = $this->get_text( 'connectivity-test-fails-message' );
2417
  // break;
2418
  }
2419
  }
@@ -2421,25 +2601,27 @@
2421
  $message_id = 'failed_connect_api';
2422
  $type = 'error';
2423
 
 
 
2424
  if ( false === $message ) {
2425
  if ( $is_first_failure ) {
2426
  // First attempt failed.
2427
  $message = sprintf(
2428
- $this->get_text( 'x-requires-access-to-api' ) . ' ' .
2429
- $this->get_text( 'connectivity-test-fails-message' ) . ' ' .
2430
- $this->get_text( 'connectivity-test-maybe-temporary' ) . '<br><br>' .
2431
  '%s',
2432
  '<b>' . $this->get_plugin_name() . '</b>',
2433
  sprintf(
2434
  '<div id="fs_firewall_issue_options">%s %s</div>',
2435
  sprintf(
2436
  '<a class="button button-primary fs-resolve" data-type="retry_ping" href="#">%s</a>',
2437
- $this->get_text( 'yes-do-your-thing' )
2438
  ),
2439
  sprintf(
2440
  '<a href="%s" class="button">%s</a>',
2441
- wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=' . 'all' . '&amp;paged=' . '1' . '&amp;s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
2442
- $this->get_text( 'no-deactivate' )
2443
  )
2444
  )
2445
  );
@@ -2449,32 +2631,32 @@
2449
  } else {
2450
  // Second connectivity attempt failed.
2451
  $message = sprintf(
2452
- $this->get_text( 'x-requires-access-to-api' ) . ' ' .
2453
- $this->get_text( 'connectivity-test-fails-message' ) . ' ' .
2454
- $this->get_text( 'happy-to-resolve-issue-asap' ) .
2455
  ' %s',
2456
  '<b>' . $this->get_plugin_name() . '</b>',
2457
  sprintf(
2458
  '<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
2459
  sprintf(
2460
  '<a class="fs-resolve" data-type="general" href="#"><b>%s</b></a>%s',
2461
- $this->get_text( 'fix-issue-title' ),
2462
  ' - ' . sprintf(
2463
- $this->get_text( 'fix-issue-desc' ),
2464
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
2465
  )
2466
  ),
2467
  sprintf(
2468
- '<a href="%s" target="_blank"><b>%s</b></a>%s',
2469
  sprintf( 'https://wordpress.org/plugins/%s/download/', $this->_slug ),
2470
- $this->get_text( 'install-previous-title' ),
2471
- ' - ' . $this->get_text( 'install-previous-desc' )
2472
  ),
2473
  sprintf(
2474
- '<a href="%s"><b>%s</b></a>%s',
2475
- wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=' . 'all' . '&amp;paged=' . '1' . '&amp;s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
2476
- $this->get_text( 'deactivate-plugin-title' ),
2477
- ' - ' . $this->get_text( 'deactivate-plugin-desc' )
2478
  )
2479
  )
2480
  );
@@ -2484,7 +2666,7 @@
2484
  $this->_admin_notices->add_sticky(
2485
  $message,
2486
  $message_id,
2487
- $this->get_text( 'oops' ) . '...',
2488
  $type
2489
  );
2490
  }
@@ -2551,7 +2733,7 @@
2551
 
2552
  $this->_admin_notices->add_sticky(
2553
  sprintf(
2554
- $this->get_text( 'fix-request-sent-message' ),
2555
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
2556
  ),
2557
  'server_details_sent'
@@ -2827,6 +3009,10 @@
2827
 
2828
  $this->parse_settings( $plugin_info );
2829
 
 
 
 
 
2830
  if ( ! self::is_ajax() ) {
2831
  if ( ! $this->is_addon() || $this->is_only_premium() ) {
2832
  add_action( 'admin_menu', array( &$this, '_prepare_admin_menu' ), WP_FS__LOWEST_PRIORITY );
@@ -2942,10 +3128,10 @@
2942
 
2943
  $this->_admin_notices->add(
2944
  ( ! empty( $parent_name ) ?
2945
- sprintf( $this->get_text( 'addon-x-cannot-run-without-y' ), $this->get_plugin_name(), $parent_name ) :
2946
- sprintf( $this->get_text( 'addon-x-cannot-run-without-parent' ), $this->get_plugin_name() )
2947
  ),
2948
- $this->get_text( 'oops' ) . '...',
2949
  'error'
2950
  );
2951
 
@@ -3064,7 +3250,7 @@
3064
  $this->_logger->api_error( $result );
3065
 
3066
  self::shoot_ajax_failure(
3067
- $this->get_text( 'unexpected-api-error' ) .
3068
  ( $this->is_api_error( $result ) && isset( $result->error ) ?
3069
  $result->error->message :
3070
  var_export( $result, true ) )
@@ -3089,7 +3275,7 @@
3089
  $this->_logger->api_error( $result );
3090
 
3091
  self::shoot_ajax_failure(
3092
- $this->get_text( 'unexpected-api-error' ) .
3093
  ( $this->is_api_error( $result ) && isset( $result->error ) ?
3094
  $result->error->message :
3095
  var_export( $result, true ) )
@@ -3276,17 +3462,17 @@
3276
  new FS_Plugin();
3277
 
3278
  $plugin->update( array(
3279
- 'id' => $id,
3280
- 'public_key' => $public_key,
3281
- 'slug' => $this->_slug,
3282
- 'parent_plugin_id' => $parent_id,
3283
- 'version' => $this->get_plugin_version(),
3284
- 'title' => $this->get_plugin_name(),
3285
- 'file' => $this->_plugin_basename,
3286
- 'is_premium' => $this->get_bool_option( $plugin_info, 'is_premium', true ),
3287
- 'is_live' => $this->get_bool_option( $plugin_info, 'is_live', true ),
3288
- 'type' => $this->_module_type,
3289
- // 'secret_key' => $secret_key,
3290
  ) );
3291
 
3292
  if ( $plugin->is_updated() ) {
@@ -3495,11 +3681,14 @@
3495
  'license_activated',
3496
  ) );
3497
 
3498
- $this->_admin_notices->add_sticky(
3499
- sprintf( $this->get_text( 'premium-activated-message' ), $this->_module_type ),
3500
- 'premium_activated',
3501
- $this->get_text( 'woot' ) . '!'
3502
- );
 
 
 
3503
  } else {
3504
  // Remove sticky message related to premium code activation.
3505
  $this->_admin_notices->remove_sticky( 'premium_activated' );
@@ -3510,11 +3699,12 @@
3510
  if ( $this->is_paying() && ! $this->is_premium() ) {
3511
  $this->_admin_notices->add_sticky(
3512
  sprintf(
3513
- $this->get_text( 'you-have-x-license' ),
 
3514
  $this->_site->plan->title
3515
  ) . $this->get_complete_upgrade_instructions(),
3516
  'plan_upgraded',
3517
- $this->get_text( 'yee-haw' ) . '!'
3518
  );
3519
  }
3520
  }
@@ -3777,19 +3967,25 @@
3777
 
3778
  $this->_parent->_admin_notices->add_sticky(
3779
  sprintf(
3780
- $this->_parent->get_text( $is_after_trial_cancel ?
3781
- 'addon-trial-cancelled-message' :
3782
- 'addon-no-license-message'
 
 
 
 
 
 
3783
  ),
3784
  '<b>' . $this->_plugin->title . '</b>'
3785
  ) . ' ' . sprintf(
3786
  '<a href="%s" aria-label="%s" class="button button-primary" style="margin-left: 10px; vertical-align: middle;">%s &nbsp;&#10140;</a>',
3787
  $this->_parent->addon_url( $this->_slug ),
3788
- esc_attr( sprintf( $this->_parent->get_text( 'more-information-about-x' ), $this->_plugin->title ) ),
3789
- $this->_parent->get_text( 'purchase-license' )
3790
  ),
3791
  'no_addon_license_' . $this->_slug,
3792
- ( $is_after_trial_cancel ? '' : $this->_parent->get_text( 'oops' ) . '...' ),
3793
  ( $is_after_trial_cancel ? 'success' : 'error' )
3794
  );
3795
 
@@ -4223,10 +4419,12 @@
4223
 
4224
  $this->_admin_notices->add_sticky(
4225
  sprintf(
4226
- $this->get_text( 'pending-activation-message' ),
4227
  '<b>' . $this->get_plugin_name() . '</b>',
4228
  '<b>' . $email . '</b>',
4229
- $this->get_text( $is_pending_trial ? 'start-the-trial' : 'complete-the-install' )
 
 
4230
  ),
4231
  'activation_pending',
4232
  'Thanks!'
@@ -4305,10 +4503,11 @@
4305
  // Show notice for new plugin installations.
4306
  $this->_admin_notices->add(
4307
  sprintf(
4308
- $this->get_text( 'you-are-step-away' ),
4309
  sprintf( '<b><a href="%s">%s</a></b>',
4310
  $this->get_activation_url(),
4311
- sprintf( $this->get_text( 'activate-x-now' ), $this->get_plugin_name() )
 
4312
  )
4313
  ),
4314
  '',
@@ -4321,11 +4520,11 @@
4321
  // Show notice for new plugin installations.
4322
  $this->_admin_notices->add_sticky(
4323
  sprintf(
4324
- $this->get_text( 'few-plugin-tweaks' ),
4325
  $this->_module_type,
4326
  sprintf( '<b><a href="%s">%s</a></b>',
4327
  $this->get_activation_url(),
4328
- sprintf( $this->get_text( 'optin-x-now' ), $this->get_plugin_name() )
4329
  )
4330
  ),
4331
  'connect_account',
@@ -4710,8 +4909,9 @@
4710
  // If activating the premium module version, add an admin notice to congratulate for an upgrade completion.
4711
  if ( $is_premium_version_activation ) {
4712
  $this->_admin_notices->add(
4713
- sprintf( $this->get_text( 'successful-version-upgrade-message' ), sprintf( '<b>%s</b>', $this->_plugin->title ) ),
4714
- $this->get_text( 'woot' ) . '!'
 
4715
  );
4716
  }
4717
  } else if ( $this->is_anonymous() ) {
@@ -5794,13 +5994,13 @@
5794
  */
5795
  function get_module_label( $lowercase = false ) {
5796
  $label = $this->is_addon() ?
5797
- $this->get_text( 'addon' ) :
5798
  ( $this->is_plugin() ?
5799
- $this->get_text( 'plugin' ) :
5800
- $this->get_text( 'theme' ) );
5801
 
5802
  if ( $lowercase ) {
5803
- $label = strtolower( $lowercase );
5804
  }
5805
 
5806
  return $label;
@@ -6921,13 +7121,13 @@
6921
  if ( isset( $install->error ) ) {
6922
  $error = $install->error->message;
6923
  } else {
6924
- $parent_fs = $fs->is_addon() ?
6925
- $fs->get_parent_instance() :
6926
- $fs;
6927
 
6928
- $next_page = $parent_fs->_get_sync_license_url( $fs->get_id(), true );
 
 
6929
 
6930
- $fs->reconnect_locally();
6931
  }
6932
  } else {
6933
  $next_page = $fs->opt_in( false, false, false, $license_key );
@@ -7054,9 +7254,9 @@
7054
  $error = $result->error;
7055
 
7056
  if ( in_array( $error->code, array( 'invalid_email', 'no_user' ) ) ) {
7057
- $error = $this->get_text( 'email-not-found' );
7058
  } else if ( 'no_license' === $error->code ) {
7059
- $error = $this->get_text( 'no-active-licenses' );
7060
  } else {
7061
  $error = $error->message;
7062
  }
@@ -7067,7 +7267,7 @@
7067
  );
7068
 
7069
  if ( false !== $error ) {
7070
- $licenses['error'] = sprintf( '%s... %s', $this->get_text( 'oops' ), strtolower( $error ) );
7071
  }
7072
 
7073
  echo json_encode( $licenses );
@@ -7100,7 +7300,7 @@
7100
  if ( self::is_ajax() &&
7101
  'admin-ajax.php' === $pagenow
7102
  ) {
7103
- $referer = wp_get_raw_referer();
7104
 
7105
  if ( is_string( $referer ) ) {
7106
  $parts = explode( '?', $referer );
@@ -7137,6 +7337,200 @@
7137
  return ( 'themes.php' === self::get_current_page() );
7138
  }
7139
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7140
  #----------------------------------------------------------------------------------
7141
  #region URL Generators
7142
  #----------------------------------------------------------------------------------
@@ -7586,7 +7980,10 @@
7586
  ) ), admin_url( 'admin.php', 'admin' ) );
7587
  } else {
7588
  // Plugin without a settings page.
7589
- return admin_url( 'plugins.php' );
 
 
 
7590
  }
7591
  }
7592
  }
@@ -8007,8 +8404,19 @@
8007
  $this->_site = clone $site;
8008
  $this->_site->plan = self::decrypt_entity( $this->_site->plan );
8009
 
 
 
 
 
 
 
 
 
 
 
 
8010
  // Load relevant user.
8011
- $this->_user = clone $users[ $this->_site->user_id ];
8012
 
8013
  // Load plans.
8014
  $this->_plans = $plans[ $this->_slug ];
@@ -8156,6 +8564,7 @@
8156
  * In this case, the user and site info will be sent to the server but no
8157
  * data will be saved to the WP installation's database.
8158
  * @param number|bool $trial_plan_id
 
8159
  *
8160
  * @return string|object
8161
  * @use WP_Error
@@ -8166,7 +8575,8 @@
8166
  $last = false,
8167
  $license_key = false,
8168
  $is_uninstall = false,
8169
- $trial_plan_id = false
 
8170
  ) {
8171
  $this->_logger->entrance();
8172
 
@@ -8219,7 +8629,28 @@
8219
  );
8220
  }
8221
 
8222
- $params['format'] = 'json';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8223
 
8224
  $url = WP_FS__ADDRESS . '/action/service/user/install/';
8225
  if ( isset( $_COOKIE['XDEBUG_SESSION'] ) ) {
@@ -8276,7 +8707,19 @@
8276
  return true;
8277
  }
8278
 
8279
- $decoded = @json_decode( $response['body'] );
 
 
 
 
 
 
 
 
 
 
 
 
8280
 
8281
  if ( empty( $decoded ) ) {
8282
  return false;
@@ -8294,7 +8737,9 @@
8294
  } else if ( isset( $decoded->pending_activation ) && $decoded->pending_activation ) {
8295
  // Pending activation, add message.
8296
  return $this->set_pending_confirmation(
8297
- true,
 
 
8298
  false,
8299
  $filtered_license_key,
8300
  ! empty( $params['trial_plan_id'] )
@@ -8360,7 +8805,7 @@
8360
 
8361
  $this->_admin_notices->remove_sticky( 'connect_account' );
8362
 
8363
- if ( $this->is_pending_activation() ) {
8364
  // Remove pending activation sticky notice (if still exist).
8365
  $this->_admin_notices->remove_sticky( 'activation_pending' );
8366
 
@@ -8369,31 +8814,32 @@
8369
 
8370
  if ( ! $this->is_paying_or_trial() ) {
8371
  $this->_admin_notices->add_sticky(
8372
- sprintf( $this->get_text( 'plugin-x-activation-message' ), '<b>' . $this->get_plugin_name() . '</b>' ),
 
8373
  'activation_complete'
8374
  );
8375
  }
8376
  }
8377
 
8378
  if ( $this->is_paying_or_trial() ) {
8379
- if ( ! $this->is_premium() || ! $this->has_premium_version() ) {
8380
  if ( $this->is_paying() ) {
8381
  $this->_admin_notices->add_sticky(
8382
  sprintf(
8383
- $this->get_text( 'activation-with-plan-x-message' ),
8384
  $this->_site->plan->title
8385
  ) . $this->get_complete_upgrade_instructions(),
8386
  'plan_upgraded',
8387
- $this->get_text( 'yee-haw' ) . '!'
8388
  );
8389
  } else {
8390
  $this->_admin_notices->add_sticky(
8391
  sprintf(
8392
- $this->get_text( 'trial-started-message' ),
8393
  '<i>' . $this->get_plugin_name() . '</i>'
8394
  ) . $this->get_complete_upgrade_instructions( $this->_storage->trial_plan->title ),
8395
  'trial_started',
8396
- $this->get_text( 'yee-haw' ) . '!'
8397
  );
8398
  }
8399
  }
@@ -8678,14 +9124,26 @@
8678
  $install = $this->apply_filters( 'after_install_failure', $install, $args );
8679
 
8680
  $this->_admin_notices->add(
8681
- sprintf( $this->get_text( 'could-not-activate-x' ), $this->get_plugin_name() ) . ' ' .
8682
- $this->get_text( 'contact-us-with-error-message' ) . ' ' . '<b>' . $install->error->message . '</b>',
8683
- $this->get_text( 'oops' ) . '...',
8684
  'error'
8685
  );
8686
 
8687
  if ( $redirect ) {
8688
- fs_redirect( $this->get_activation_url( array( 'error' => $install->error->message ) ) );
 
 
 
 
 
 
 
 
 
 
 
 
8689
  }
8690
 
8691
  return $install;
@@ -8722,9 +9180,9 @@
8722
 
8723
  if ( isset( $addon_install->error ) ) {
8724
  $this->_admin_notices->add(
8725
- sprintf( $this->get_text( 'could-not-activate-x' ), $this->get_plugin_name() ) . ' ' .
8726
- $this->get_text( 'contact-us-with-error-message' ) . ' ' . '<b>' . $addon_install->error->message . '</b>',
8727
- $this->get_text( 'oops' ) . '...',
8728
  'error'
8729
  );
8730
 
@@ -8783,15 +9241,23 @@
8783
 
8784
  if ( isset( $parent_install->error ) ) {
8785
  $this->_admin_notices->add(
8786
- sprintf( $this->get_text( 'could-not-activate-x' ), $this->get_plugin_name() ) . ' ' .
8787
- $this->get_text( 'contact-us-with-error-message' ) . ' ' . '<b>' . $parent_install->error->message . '</b>',
8788
- $this->get_text( 'oops' ) . '...',
8789
  'error'
8790
  );
8791
 
8792
  return;
8793
  }
8794
 
 
 
 
 
 
 
 
 
8795
  // First of all, set site info - otherwise we won't
8796
  // be able to invoke API calls.
8797
  $parent_fs->_site = new FS_Site( $parent_install );
@@ -8984,9 +9450,9 @@
8984
 
8985
  if ( false !== $hook ) {
8986
  if ( fs_request_is_action( $this->get_unique_affix() . '_activate_existing' ) ) {
8987
- add_action( "load-$hook", array( &$this, '_install_with_current_user' ) );
8988
  } else if ( fs_request_is_action( $this->get_unique_affix() . '_activate_new' ) ) {
8989
- add_action( "load-$hook", array( &$this, '_install_with_new_user' ) );
8990
  }
8991
  }
8992
  }
@@ -9034,15 +9500,15 @@
9034
  * @return string
9035
  */
9036
  function get_pricing_cta_label() {
9037
- $label = 'upgrade';
9038
 
9039
  if ( $this->is_in_trial_promotion() &&
9040
  ! $this->is_paying_or_trial()
9041
  ) {
9042
  // If running a trial promotion, modify the pricing to load the trial.
9043
- $label = 'start-trial';
9044
  } else if ( $this->is_paying() ) {
9045
- $label = 'pricing';
9046
  }
9047
 
9048
  return $label;
@@ -9079,6 +9545,20 @@
9079
  * @since 1.2.2.7 Also add submenu items when running in a free .org theme so the tabs will be visible.
9080
  */
9081
  if ( ! $this->is_activation_mode() || $this->is_free_wp_org_theme() ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9082
  if ( $this->is_registered() ) {
9083
  $show_account = (
9084
  $this->is_submenu_item_visible( 'account' ) &&
@@ -9090,9 +9570,9 @@
9090
 
9091
  // Add user account page.
9092
  $this->add_submenu_item(
9093
- $this->get_text( 'account' ),
9094
  array( &$this, '_account_page_render' ),
9095
- $this->get_plugin_name() . ' &ndash; ' . $this->get_text( 'account' ),
9096
  'manage_options',
9097
  'account',
9098
  array( &$this, '_account_page_load' ),
@@ -9103,9 +9583,9 @@
9103
 
9104
  // Add contact page.
9105
  $this->add_submenu_item(
9106
- $this->get_text( 'contact-us' ),
9107
  array( &$this, '_contact_page_render' ),
9108
- $this->get_plugin_name() . ' &ndash; ' . $this->get_text( 'contact-us' ),
9109
  'manage_options',
9110
  'contact',
9111
  'Freemius::_clean_admin_content_section',
@@ -9115,9 +9595,9 @@
9115
 
9116
  if ( $this->has_addons() ) {
9117
  $this->add_submenu_item(
9118
- $this->get_text( 'add-ons' ),
9119
  array( &$this, '_addons_page_render' ),
9120
- $this->get_plugin_name() . ' &ndash; ' . $this->get_text( 'add-ons' ),
9121
  'manage_options',
9122
  'addons',
9123
  array( &$this, '_addons_page_load' ),
@@ -9131,7 +9611,7 @@
9131
  $this->is_pricing_page_visible()
9132
  );
9133
 
9134
- $pricing_cta_slug = $this->get_pricing_cta_label();
9135
  $pricing_class = 'upgrade-mode';
9136
  if ( $show_pricing ) {
9137
  if ( $this->is_in_trial_promotion() &&
@@ -9146,9 +9626,9 @@
9146
 
9147
  // Add upgrade/pricing page.
9148
  $this->add_submenu_item(
9149
- $this->get_text( $pricing_cta_slug ) . '&nbsp;&nbsp;' . ( is_rtl() ? '&#x2190;' : '&#x27a4;' ),
9150
  array( &$this, '_pricing_page_render' ),
9151
- $this->get_plugin_name() . ' &ndash; ' . $this->get_text( 'pricing' ),
9152
  'manage_options',
9153
  'pricing',
9154
  'Freemius::_clean_admin_content_section',
@@ -9328,7 +9808,7 @@
9328
 
9329
  if ( ! $this->is_activation_mode() ) {
9330
  $this->add_submenu_link_item(
9331
- $this->apply_filters( 'support_forum_submenu', $this->get_text( 'support-forum' ) ),
9332
  $this->get_support_forum_url(),
9333
  'wp-support-forum',
9334
  null,
@@ -9840,7 +10320,23 @@
9840
  $encrypted_site = clone $this->_site;
9841
  $encrypted_site->plan = self::_encrypt_entity( $this->_site->plan );
9842
 
9843
- $sites = self::get_all_sites( $this->_module_type );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9844
  $sites[ $this->_slug ] = $encrypted_site;
9845
 
9846
  $this->set_account_option( 'sites', $sites, $store );
@@ -10052,8 +10548,8 @@
10052
  $this->do_action( 'account_email_verified', $user->email );
10053
 
10054
  $this->_admin_notices->add(
10055
- $this->get_text( 'email-verified-message' ),
10056
- $this->get_text( 'right-on' ) . '!',
10057
  'success',
10058
  // Make admin sticky if account menu item is invisible,
10059
  // since the page will be auto redirected to the plugin's
@@ -10185,21 +10681,24 @@
10185
  * @return FS_Plugin_Plan[]|object
10186
  */
10187
  private function _fetch_plugin_plans() {
10188
- $this->_logger->entrance();
10189
- $api = $this->get_api_site_scope();
10190
 
10191
- $result = $api->get( '/plans.json', true );
 
 
 
10192
 
10193
- if ( $this->is_api_result_object( $result, 'plans' ) && is_array( $result->plans ) ) {
10194
- for ( $i = 0, $len = count( $result->plans ); $i < $len; $i ++ ) {
10195
- $result->plans[ $i ] = new FS_Plugin_Plan( $result->plans[ $i ] );
10196
- }
10197
 
10198
- $result = $result->plans;
10199
- }
10200
 
10201
- return $result;
10202
- }
10203
 
10204
  /**
10205
  * @author Vova Feldman (@svovaf)
@@ -10584,24 +11083,18 @@
10584
  }
10585
 
10586
  $this->_admin_notices->add_sticky(
10587
- FS_Plan_Manager::instance()->has_free_plan( $plans ) ?
10588
- sprintf(
10589
- $this->get_text( 'addon-successfully-upgraded-message' ),
10590
- $addon->title
10591
- ) . ' ' . $this->get_latest_download_link(
10592
- $this->get_text( 'download-latest-version' ),
10593
- $addon_id
10594
- )
10595
- :
10596
- sprintf(
10597
- $this->get_text( 'addon-successfully-purchased-message' ),
10598
- $addon->title
10599
- ) . ' ' . $this->get_latest_download_link(
10600
- $this->get_text( 'download-latest-version' ),
10601
- $addon_id
10602
- ),
10603
  'addon_plan_upgraded_' . $addon->slug,
10604
- $this->get_text( 'yee-haw' ) . '!'
10605
  );
10606
  }
10607
  }
@@ -10646,11 +11139,11 @@
10646
  if ( ! self::$_global_admin_notices->has_sticky( 'api_blocked' ) ) {
10647
  self::$_global_admin_notices->add(
10648
  sprintf(
10649
- $this->get_text( 'server-blocking-access' ),
10650
  $this->get_plugin_name(),
10651
  '<a href="' . $api->get_url() . '" target="_blank">' . $api->get_url() . '</a>'
10652
- ) . '<br> ' . $this->get_text( 'server-error-message' ) . var_export( $site->error, true ),
10653
- $this->get_text( 'oops' ) . '...',
10654
  'error',
10655
  $background,
10656
  false,
@@ -10660,8 +11153,8 @@
10660
  } else {
10661
  // Authentication params are broken.
10662
  $this->_admin_notices->add(
10663
- $this->get_text( 'wrong-authentication-param-message' ),
10664
- $this->get_text( 'oops' ) . '...',
10665
  'error'
10666
  );
10667
  }
@@ -10777,6 +11270,8 @@
10777
  }
10778
  }
10779
 
 
 
10780
  if ( $this->has_paid_plan() ) {
10781
  switch ( $plan_change ) {
10782
  case 'none':
@@ -10788,19 +11283,19 @@
10788
  if ( $plan->is_free() ) {
10789
  $this->_admin_notices->add(
10790
  sprintf(
10791
- $this->get_text( 'plan-did-not-change-message' ),
10792
- '<i><b>' . $plan->title . ( $this->is_trial() ? ' ' . $this->get_text( 'trial' ) : '' ) . '</b></i>'
10793
  ) . ' ' . sprintf(
10794
  '<a href="%s">%s</a>',
10795
  $this->contact_url(
10796
  'bug',
10797
- sprintf( $this->get_text( 'plan-did-not-change-email-message' ),
10798
  strtoupper( $plan->name )
10799
  )
10800
  ),
10801
- $this->get_text( 'contact-us-here' )
10802
  ),
10803
- $this->get_text( 'hmm' ) . '...'
10804
  );
10805
  }
10806
  }
@@ -10808,11 +11303,11 @@
10808
  case 'upgraded':
10809
  $this->_admin_notices->add_sticky(
10810
  sprintf(
10811
- $this->get_text( 'plan-upgraded-message' ),
10812
  '<i>' . $this->get_plugin_name() . '</i>'
10813
  ) . $this->get_complete_upgrade_instructions(),
10814
  'plan_upgraded',
10815
- $this->get_text( 'yee-haw' ) . '!'
10816
  );
10817
 
10818
  $this->_admin_notices->remove_sticky( array(
@@ -10825,7 +11320,7 @@
10825
  case 'changed':
10826
  $this->_admin_notices->add_sticky(
10827
  sprintf(
10828
- $this->get_text( 'plan-changed-to-x-message' ),
10829
  $this->_site->plan->title
10830
  ),
10831
  'plan_changed'
@@ -10840,41 +11335,41 @@
10840
  break;
10841
  case 'downgraded':
10842
  $this->_admin_notices->add_sticky(
10843
- sprintf( $this->get_text( 'license-expired-blocking-message' ), $this->_module_type ),
10844
  'license_expired',
10845
- $this->get_text( 'hmm' ) . '...'
10846
  );
10847
  $this->_admin_notices->remove_sticky( 'plan_upgraded' );
10848
  break;
10849
  case 'cancelled':
10850
  $this->_admin_notices->add(
10851
- $this->get_text( 'license-cancelled' ) . ' ' .
10852
  sprintf(
10853
  '<a href="%s">%s</a>',
10854
  $this->contact_url( 'bug' ),
10855
- $this->get_text( 'contact-us-here' )
10856
  ),
10857
- $this->get_text( 'hmm' ) . '...',
10858
  'error'
10859
  );
10860
  $this->_admin_notices->remove_sticky( 'plan_upgraded' );
10861
  break;
10862
  case 'expired':
10863
  $this->_admin_notices->add_sticky(
10864
- sprintf( $this->get_text( 'license-expired-non-blocking-message' ), $this->_site->plan->title ),
10865
  'license_expired',
10866
- $this->get_text( 'hmm' ) . '...'
10867
  );
10868
  $this->_admin_notices->remove_sticky( 'plan_upgraded' );
10869
  break;
10870
  case 'trial_started':
10871
  $this->_admin_notices->add_sticky(
10872
  sprintf(
10873
- $this->get_text( 'trial-started-message' ),
10874
  '<i>' . $this->get_plugin_name() . '</i>'
10875
  ) . $this->get_complete_upgrade_instructions( $this->_storage->trial_plan->title ),
10876
  'trial_started',
10877
- $this->get_text( 'yee-haw' ) . '!'
10878
  );
10879
 
10880
  $this->_admin_notices->remove_sticky( array(
@@ -10883,9 +11378,9 @@
10883
  break;
10884
  case 'trial_expired':
10885
  $this->_admin_notices->add_sticky(
10886
- $this->get_text( 'trial-expired-message' ),
10887
  'trial_expired',
10888
- $this->get_text( 'hmm' ) . '...'
10889
  );
10890
  $this->_admin_notices->remove_sticky( array(
10891
  'trial_started',
@@ -10953,23 +11448,22 @@
10953
  if ( ! $background ) {
10954
  $this->_admin_notices->add( sprintf(
10955
  '%s %s',
10956
- $this->get_text( 'license-activation-failed-message' ),
10957
  ( is_object( $license ) && isset( $license->error ) ?
10958
  $license->error->message :
10959
  sprintf( '%s<br><code>%s</code>',
10960
- $this->get_text( 'server-error-message' ),
10961
  var_export( $license, true )
10962
  )
10963
  )
10964
  ),
10965
- $this->get_text( 'hmm' ) . '...',
10966
  'error'
10967
  );
10968
  }
10969
 
10970
  return;
10971
  }
10972
-
10973
  $premium_license = new FS_Plugin_License( $license );
10974
 
10975
  // Updated site plan.
@@ -10984,10 +11478,10 @@
10984
 
10985
  if ( ! $background ) {
10986
  $this->_admin_notices->add_sticky(
10987
- $this->get_text( 'license-activated-message' ) .
10988
  $this->get_complete_upgrade_instructions(),
10989
  'license_activated',
10990
- $this->get_text( 'yee-haw' ) . '!'
10991
  );
10992
  }
10993
 
@@ -11006,10 +11500,12 @@
11006
  protected function _deactivate_license( $show_notice = true ) {
11007
  $this->_logger->entrance();
11008
 
 
 
11009
  if ( ! is_object( $this->_license ) ) {
11010
  $this->_admin_notices->add(
11011
- sprintf( $this->get_text( 'no-active-license-message' ), $this->_site->plan->title ),
11012
- $this->get_text( 'hmm' ) . '...'
11013
  );
11014
 
11015
  return;
@@ -11020,9 +11516,9 @@
11020
 
11021
  if ( isset( $license->error ) ) {
11022
  $this->_admin_notices->add(
11023
- $this->get_text( 'license-deactivation-failed-message' ) . '<br> ' .
11024
- $this->get_text( 'server-error-message' ) . ' ' . var_export( $license->error, true ),
11025
- $this->get_text( 'hmm' ) . '...',
11026
  'error'
11027
  );
11028
 
@@ -11047,8 +11543,8 @@
11047
 
11048
  if ( $show_notice ) {
11049
  $this->_admin_notices->add(
11050
- sprintf( $this->get_text( 'license-deactivation-message' ), $this->_site->plan->title ),
11051
- $this->get_text( 'ok' )
11052
  );
11053
  }
11054
 
@@ -11096,7 +11592,7 @@
11096
  $this->_admin_notices->remove_sticky( 'plan_upgraded' );
11097
 
11098
  $this->_admin_notices->add(
11099
- sprintf( $this->get_text( 'plan-x-downgraded-message' ),
11100
  $plan->title,
11101
  human_time_diff( time(), strtotime( $this->_license->expiration ) )
11102
  )
@@ -11106,8 +11602,8 @@
11106
  $this->_store_site();
11107
  } else {
11108
  $this->_admin_notices->add(
11109
- $this->get_text( 'plan-downgraded-failure-message' ),
11110
- $this->get_text( 'oops' ) . '...',
11111
  'error'
11112
  );
11113
  }
@@ -11124,11 +11620,14 @@
11124
  function start_trial( $plan_name = false ) {
11125
  $this->_logger->entrance();
11126
 
 
 
 
11127
  if ( $this->is_trial() ) {
11128
  // Already in trial mode.
11129
  $this->_admin_notices->add(
11130
- sprintf( $this->get_text( 'in-trial-mode' ), $this->_module_type ),
11131
- $this->get_text( 'oops' ) . '...',
11132
  'error'
11133
  );
11134
 
@@ -11138,8 +11637,8 @@
11138
  if ( $this->_site->is_trial_utilized() ) {
11139
  // Trial was already utilized.
11140
  $this->_admin_notices->add(
11141
- $this->get_text( 'trial-utilized' ),
11142
- $this->get_text( 'oops' ) . '...',
11143
  'error'
11144
  );
11145
 
@@ -11152,8 +11651,8 @@
11152
  if ( false === $plan ) {
11153
  // Plan doesn't exist.
11154
  $this->_admin_notices->add(
11155
- sprintf( $this->get_text( 'trial-plan-x-not-exist' ), $plan_name ),
11156
- $this->get_text( 'oops' ) . '...',
11157
  'error'
11158
  );
11159
 
@@ -11163,8 +11662,8 @@
11163
  if ( ! $plan->has_trial() ) {
11164
  // Plan doesn't exist.
11165
  $this->_admin_notices->add(
11166
- sprintf( $this->get_text( 'plan-x-no-trial' ), $plan_name ),
11167
- $this->get_text( 'oops' ) . '...',
11168
  'error'
11169
  );
11170
 
@@ -11174,8 +11673,8 @@
11174
  if ( ! $this->has_trial_plan() ) {
11175
  // None of the plans have a trial.
11176
  $this->_admin_notices->add(
11177
- sprintf( $this->get_text( 'no-trials' ), $this->_module_type ),
11178
- $this->get_text( 'oops' ) . '...',
11179
  'error'
11180
  );
11181
 
@@ -11193,9 +11692,9 @@
11193
  if ( ! $this->is_api_result_entity( $plan ) ) {
11194
  // Some API error while trying to start the trial.
11195
  $this->_admin_notices->add(
11196
- sprintf( $this->get_text( 'unexpected-api-error' ), $this->_module_type )
11197
  . ' ' . var_export( $plan, true ),
11198
- $this->get_text( 'oops' ) . '...',
11199
  'error'
11200
  );
11201
 
@@ -11219,10 +11718,13 @@
11219
  private function _cancel_trial() {
11220
  $this->_logger->entrance();
11221
 
 
 
 
11222
  if ( ! $this->is_trial() ) {
11223
  $this->_admin_notices->add(
11224
- $this->get_text( 'trial-cancel-no-trial-message' ),
11225
- $this->get_text( 'oops' ) . '...',
11226
  'error'
11227
  );
11228
 
@@ -11272,7 +11774,7 @@
11272
  ! $this->deactivate_premium_only_addon_without_license( true )
11273
  ) {
11274
  $this->_admin_notices->add(
11275
- sprintf( $this->get_text( 'trial-cancel-message' ), $this->_storage->trial_plan->title )
11276
  );
11277
  }
11278
 
@@ -11280,8 +11782,8 @@
11280
  unset( $this->_storage->trial_plan );
11281
  } else {
11282
  $this->_admin_notices->add(
11283
- $this->get_text( 'trial-cancel-failure-message' ),
11284
- $this->get_text( 'oops' ) . '...',
11285
  'error'
11286
  );
11287
  }
@@ -11518,21 +12020,26 @@
11518
  if ( ! $background ) {
11519
  $this->_admin_notices->add(
11520
  sprintf(
11521
- $this->get_text( 'version-x-released' ) . ' ' . $this->get_text( 'please-download-x' ),
 
11522
  $update->version,
11523
  sprintf(
11524
  '<a href="%s" target="_blank">%s</a>',
11525
  $this->get_account_url( 'download_latest' ),
11526
- sprintf( $this->get_text( 'latest-x-version' ), $this->_site->plan->title )
 
 
 
 
11527
  )
11528
  ),
11529
- $this->get_text( 'new' ) . '!'
11530
  );
11531
  }
11532
  } else if ( false === $new_version && ! $background ) {
11533
  $this->_admin_notices->add(
11534
- $this->get_text( 'you-have-latest' ),
11535
- $this->get_text( 'you-are-good' )
11536
  );
11537
  }
11538
 
@@ -11798,7 +12305,7 @@
11798
 
11799
  if ( ! isset( $result->error ) ) {
11800
  $this->_admin_notices->add( sprintf(
11801
- $this->get_text( 'verification-email-sent-message' ),
11802
  sprintf( '<a href="mailto:%1s">%2s</a>', esc_url( $this->_user->email ), $this->_user->email )
11803
  ) );
11804
  } else {
@@ -11886,6 +12393,9 @@
11886
  $plugin_id = fs_request_get( 'plugin_id', $this->get_id() );
11887
  $action = fs_get_action();
11888
 
 
 
 
11889
  switch ( $action ) {
11890
  case 'delete_account':
11891
  check_admin_referer( $action );
@@ -11940,6 +12450,14 @@
11940
 
11941
  if ( $plugin_id == $this->get_id() ) {
11942
  $this->_deactivate_license();
 
 
 
 
 
 
 
 
11943
  } else {
11944
  if ( $this->is_addon_activated( $plugin_id ) ) {
11945
  $fs_addon = self::get_instance_by_id( $plugin_id );
@@ -11962,20 +12480,20 @@
11962
  $candidate_email = fs_request_get( 'candidate_email', '' );
11963
 
11964
  if ( $this->init_change_owner( $candidate_email ) ) {
11965
- $this->_admin_notices->add( sprintf( $this->get_text( 'change-owner-request-sent-x' ), '<b>' . $this->_user->email . '</b>' ) );
11966
  }
11967
  break;
11968
  case 'owner_confirmed':
11969
  $candidate_email = fs_request_get( 'candidate_email', '' );
11970
 
11971
- $this->_admin_notices->add( sprintf( $this->get_text( 'change-owner-request_owner-confirmed' ), '<b>' . $candidate_email . '</b>' ) );
11972
  break;
11973
  case 'candidate_confirmed':
11974
  if ( $this->complete_change_owner() ) {
11975
  $this->_admin_notices->add_sticky(
11976
- sprintf( $this->get_text( 'change-owner-request_candidate-confirmed' ), '<b>' . $this->_user->email . '</b>' ),
11977
  'ownership_changed',
11978
- $this->get_text( 'congrats' ) . '!'
11979
  );
11980
  } else {
11981
  // @todo Handle failed ownership change message.
@@ -11995,23 +12513,23 @@
11995
  switch ( $result->error->code ) {
11996
  case 'user_exist':
11997
  $this->_admin_notices->add(
11998
- $this->get_text( 'user-exist-message' ) . ' ' .
11999
- sprintf( $this->get_text( 'user-exist-message_ownership' ), $this->_module_type, '<b>' . $new_email . '</b>' ) .
12000
  sprintf(
12001
  '<a style="margin-left: 10px;" href="%s"><button class="button button-primary">%s &nbsp;&#10140;</button></a>',
12002
  $this->get_account_url( 'change_owner', array(
12003
  'state' => 'init',
12004
  'candidate_email' => $new_email
12005
  ) ),
12006
- $this->get_text( 'change-ownership' )
12007
  ),
12008
- $this->get_text( 'oops' ) . '...',
12009
  'error'
12010
  );
12011
  break;
12012
  }
12013
  } else {
12014
- $this->_admin_notices->add( $this->get_text( 'email-updated-message' ) );
12015
  }
12016
 
12017
  return;
@@ -12023,12 +12541,12 @@
12023
 
12024
  if ( isset( $result->error ) ) {
12025
  $this->_admin_notices->add(
12026
- $this->get_text( 'name-update-failed-message' ),
12027
- $this->get_text( 'oops' ) . '...',
12028
  'error'
12029
  );
12030
  } else {
12031
- $this->_admin_notices->add( $this->get_text( 'name-updated-message' ) );
12032
  }
12033
 
12034
  return;
@@ -12088,8 +12606,10 @@
12088
  $this->do_action( 'account_property_edit', 'site', $site_property, $site_property_value );
12089
 
12090
  $this->_admin_notices->add( sprintf(
12091
- $this->get_text( 'x-updated' ),
12092
- '<b>' . str_replace( '_', ' ', $p ) . '</b>' ) );
 
 
12093
 
12094
  return;
12095
  }
@@ -12142,6 +12662,22 @@
12142
  $this->do_action( 'account_page_load_before_departure' );
12143
  }
12144
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12145
  /**
12146
  * Render account page.
12147
  *
@@ -12152,11 +12688,7 @@
12152
  $this->_logger->entrance();
12153
 
12154
  $template = 'account.php';
12155
- if ( 'billing' === fs_request_get( 'tab' ) ) {
12156
- $template = 'billing.php';
12157
- }
12158
-
12159
- $vars = array( 'id' => $this->_module_id );
12160
 
12161
  /**
12162
  * Added filter to the template to allow developers wrapping the template
@@ -12213,8 +12745,8 @@
12213
 
12214
  if ( ! $this->is_registered() && $this->is_org_repo_compliant() ) {
12215
  $this->_admin_notices->add(
12216
- sprintf( $this->get_text( 'addons-info-external-message' ), '<b>' . $this->get_plugin_name() . '</b>' ),
12217
- $this->get_text( 'heads-up' ),
12218
  'update-nag'
12219
  );
12220
  }
@@ -12532,7 +13064,7 @@
12532
  $trial_period = $this->_trial_days;
12533
  $require_payment = $this->_is_trial_require_payment;
12534
  $trial_url = $this->get_trial_url();
12535
- $plans_string = strtolower( $this->get_text( 'awesome' ) );
12536
 
12537
  if ( $this->is_registered() ) {
12538
  // If opted-in, override trial with up to date data from API.
@@ -12572,7 +13104,7 @@
12572
  }
12573
 
12574
  $message = sprintf(
12575
- $this->get_text( 'hey' ) . '! ' . $this->get_text( 'trial-x-promotion-message' ),
12576
  sprintf( '<b>%s</b>', $this->get_plugin_name() ),
12577
  $plans_string,
12578
  $trial_period
@@ -12580,15 +13112,15 @@
12580
 
12581
  // "No Credit-Card Required" or "No Commitment for N Days".
12582
  $cc_string = $require_payment ?
12583
- sprintf( $this->get_text( 'no-commitment-for-x-days' ), $trial_period ) :
12584
- $this->get_text( 'no-cc-required' ) . '!';
12585
 
12586
 
12587
  // Start trial button.
12588
  $button = ' ' . sprintf(
12589
  '<a style="margin-left: 10px; vertical-align: super;" href="%s"><button class="button button-primary">%s &nbsp;&#10140;</button></a>',
12590
  $trial_url,
12591
- $this->get_text( 'start-free-trial' )
12592
  );
12593
 
12594
  $this->_admin_notices->add_sticky(
@@ -12603,6 +13135,92 @@
12603
  return true;
12604
  }
12605
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12606
  /**
12607
  * @author Vova Feldman (@svovaf)
12608
  * @since 1.2.1.5
@@ -12705,7 +13323,7 @@
12705
  if ( $this->is_registered() ) {
12706
  if ( ! $this->is_paying() && $this->has_paid_plan() ) {
12707
  $this->add_plugin_action_link(
12708
- $this->get_text( 'upgrade' ),
12709
  $this->get_upgrade_url(),
12710
  false,
12711
  7,
@@ -12715,7 +13333,7 @@
12715
 
12716
  if ( $this->has_addons() ) {
12717
  $this->add_plugin_action_link(
12718
- $this->get_text( 'add-ons' ),
12719
  $this->_get_admin_page_url( 'addons' ),
12720
  false,
12721
  9,
@@ -12743,11 +13361,9 @@
12743
  add_action( 'admin_footer', array( &$this, '_add_license_activation_dialog_box' ) );
12744
  }
12745
 
12746
- $link_text = $this->get_text(
12747
- $this->is_free_plan() ?
12748
- 'activate-license' :
12749
- 'change-license'
12750
- );
12751
 
12752
  $this->add_plugin_action_link(
12753
  $link_text,
@@ -12808,14 +13424,14 @@
12808
 
12809
  if ( $this->is_registered() ) {
12810
  if ( $this->is_tracking_allowed() ) {
12811
- $link_text_id = 'opt-out';
12812
  } else {
12813
- $link_text_id = 'opt-in';
12814
  }
12815
 
12816
  add_action( 'admin_footer', array( &$this, '_add_optout_dialog' ) );
12817
  } else {
12818
- $link_text_id = 'opt-in';
12819
 
12820
  $params = ! $this->is_anonymous() ?
12821
  array() :
@@ -12829,7 +13445,7 @@
12829
 
12830
  if ( $this->is_plugin() && self::is_plugins_page() ) {
12831
  $this->add_plugin_action_link(
12832
- $this->get_text( $link_text_id ),
12833
  $url,
12834
  false,
12835
  13,
@@ -12998,20 +13614,21 @@
12998
 
12999
  // @since 1.2.1.5 The free version is auto deactivated.
13000
  $deactivation_step = version_compare( $this->version, '1.2.1.5', '<' ) ?
13001
- ( '<li>' . $this->get_text( 'deactivate-free-version' ) . '.</li>' ) :
13002
  '';
13003
 
13004
  return sprintf(
13005
  ' %s: <ol><li>%s.</li>%s<li>%s (<a href="%s" target="_blank">%s</a>).</li></ol>',
13006
- $this->get_text( 'follow-steps-to-complete-upgrade' ),
13007
  $this->get_latest_download_link( sprintf(
13008
- $this->get_text( 'download-latest-x-version' ),
 
13009
  $plan_title
13010
  ) ),
13011
  $deactivation_step,
13012
- $this->get_text( 'upload-and-activate' ),
13013
  '//bit.ly/upload-wp-' . $this->_module_type . 's',
13014
- $this->get_text( 'howto-upload-activate' )
13015
  );
13016
  }
13017
 
@@ -13027,6 +13644,46 @@
13027
  return fs_text( $key, $this->_slug );
13028
  }
13029
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13030
  #----------------------------------------------------------------------------------
13031
  #region Versioning
13032
  #----------------------------------------------------------------------------------
@@ -13130,7 +13787,7 @@
13130
  if ( ! $this->is_registered() ) {
13131
  // Not registered.
13132
  self::shoot_ajax_failure( array(
13133
- 'message' => $this->get_text( 'auto-install-error-not-opted-in' ),
13134
  'code' => 'premium_installed',
13135
  ) );
13136
  }
@@ -13140,7 +13797,7 @@
13140
  if ( ! FS_Plugin::is_valid_id( $plugin_id ) ) {
13141
  // Invalid ID.
13142
  self::shoot_ajax_failure( array(
13143
- 'message' => $this->get_text( 'auto-install-error-invalid-id' ),
13144
  'code' => 'invalid_module_id',
13145
  ) );
13146
  }
@@ -13149,21 +13806,21 @@
13149
  if ( $this->is_premium() ) {
13150
  // Already using the premium code version.
13151
  self::shoot_ajax_failure( array(
13152
- 'message' => $this->get_text( 'auto-install-error-premium-activated' ),
13153
  'code' => 'premium_installed',
13154
  ) );
13155
  }
13156
  if ( ! $this->can_use_premium_code() ) {
13157
  // Don't have access to the premium code.
13158
  self::shoot_ajax_failure( array(
13159
- 'message' => $this->get_text( 'auto-install-error-invalid-license' ),
13160
  'code' => 'invalid_license',
13161
  ) );
13162
  }
13163
  if ( ! $this->has_release_on_freemius() ) {
13164
  // Plugin is a serviceware, no premium code version.
13165
  self::shoot_ajax_failure( array(
13166
- 'message' => $this->get_text( 'auto-install-error-serviceware' ),
13167
  'code' => 'premium_version_missing',
13168
  ) );
13169
  }
@@ -13173,7 +13830,7 @@
13173
  if ( ! is_object( $addon ) ) {
13174
  // Invalid add-on ID.
13175
  self::shoot_ajax_failure( array(
13176
- 'message' => $this->get_text( 'auto-install-error-invalid-id' ),
13177
  'code' => 'invalid_module_id',
13178
  ) );
13179
  }
@@ -13181,7 +13838,7 @@
13181
  if ( $this->is_addon_activated( $plugin_id, true ) ) {
13182
  // Premium add-on version is already activated.
13183
  self::shoot_ajax_failure( array(
13184
- 'message' => $this->get_text( 'auto-install-error-premium-addon-activated' ),
13185
  'code' => 'premium_installed',
13186
  ) );
13187
  }
@@ -13526,7 +14183,7 @@
13526
  require_once WP_FS__DIR_INCLUDES . '/customizer/class-fs-customizer-upsell-control.php';
13527
 
13528
  $customizer->add_section( 'freemius_upsell', array(
13529
- 'title' => '&#9733; ' . $this->get_text( 'view-paid-features' ),
13530
  'priority' => 1,
13531
  ) );
13532
  $customizer->add_setting( 'freemius_upsell', array(
@@ -13644,4 +14301,4 @@
13644
  }
13645
 
13646
  #endregion
13647
- }
271
  */
272
  private static $_instances = array();
273
 
274
+ /**
275
+ * @author Leo Fajardo (@leorw)
276
+ *
277
+ * @since 1.2.3
278
+ *
279
+ * @var FS_Affiliate
280
+ */
281
+ private $affiliate = null;
282
+
283
+ /**
284
+ * @author Leo Fajardo (@leorw)
285
+ *
286
+ * @since 1.2.3
287
+ *
288
+ * @var FS_AffiliateTerms
289
+ */
290
+ private $plugin_affiliate_terms = null;
291
+
292
+ /**
293
+ * @author Leo Fajardo (@leorw)
294
+ *
295
+ * @since 1.2.3
296
+ *
297
+ * @var FS_AffiliateTerms
298
+ */
299
+ private $custom_affiliate_terms = null;
300
+
301
  #region Uninstall Reasons IDs
302
 
303
  const REASON_NO_LONGER_NEEDED = 1;
555
  return;
556
  }
557
 
558
+ if ( version_compare( $sdk_prev_version, '1.2.3', '<' ) &&
559
+ version_compare( $sdk_version, '1.2.3', '>=' )
560
+ ) {
561
+ /**
562
+ * Starting from version 1.2.3, paths are stored as relative paths and not absolute paths; so when
563
+ * upgrading to 1.2.3, make paths relative.
564
+ *
565
+ * @author Leo Fajardo (@leorw)
566
+ */
567
+ $this->make_paths_relative();
568
+ }
569
+
570
  if ( version_compare( $sdk_prev_version, '1.1.5', '<' ) &&
571
  version_compare( $sdk_version, '1.1.5', '>=' )
572
  ) {
590
  }
591
  }
592
 
593
+ /**
594
+ * Makes paths relative.
595
+ *
596
+ * @author Leo Fajardo
597
+ * @since 1.2.3
598
+ */
599
+ private function make_paths_relative() {
600
+ $id_slug_type_path_map = self::$_accounts->get_option( 'id_slug_type_path_map', array() );
601
+
602
+ if ( isset( $id_slug_type_path_map[ $this->_module_id ]['path'] ) ) {
603
+ $id_slug_type_path_map[ $this->_module_id ]['path'] = $this->get_relative_path( $id_slug_type_path_map[ $this->_module_id ]['path'] );
604
+
605
+ self::$_accounts->set_option( 'id_slug_type_path_map', $id_slug_type_path_map, true );
606
+ }
607
+
608
+ if ( isset( $this->_storage->plugin_main_file ) ) {
609
+ $plugin_main_file = $this->_storage->plugin_main_file;
610
+
611
+ if ( isset( $plugin_main_file->path ) ) {
612
+ $this->_storage->plugin_main_file->path = $this->get_relative_path( $this->_storage->plugin_main_file->path );
613
+ } else if ( isset( $plugin_main_file->prev_path ) ) {
614
+ $this->_storage->plugin_main_file->prev_path = $this->get_relative_path( $this->_storage->plugin_main_file->prev_path );
615
+ }
616
+ }
617
+
618
+ // Remove invalid path that is still associated with the current slug if there's any.
619
+ $file_slug_map = self::$_accounts->get_option( 'file_slug_map', array() );
620
+ foreach ( $file_slug_map as $plugin_basename => $slug ) {
621
+ if ( $slug === $this->_slug &&
622
+ $plugin_basename !== $this->_plugin_basename &&
623
+ ! file_exists( $this->get_absolute_path( $plugin_basename ) )
624
+ ) {
625
+ unset( $file_slug_map[ $plugin_basename ] );
626
+ self::$_accounts->set_option( 'file_slug_map', $file_slug_map, true );
627
+
628
+ break;
629
+ }
630
+ }
631
+ }
632
+
633
  /**
634
  * @author Vova Feldman (@svovaf)
635
  * @since 1.2.2.7
811
  '_install_premium_version_ajax_action'
812
  ) );
813
 
814
+ $this->add_ajax_action( 'submit_affiliate_application', array( &$this, '_submit_affiliate_application' ) );
815
+
816
  $this->add_action( 'after_plans_sync', array( &$this, '_check_for_trial_plans' ) );
817
 
818
  $this->add_action( 'sdk_version_update', array( &$this, '_data_migration' ), WP_FS__DEFAULT_PRIORITY, 2 );
820
  $this->add_filter( 'after_code_type_change', array( &$this, '_after_code_type_change' ) );
821
 
822
  add_action( 'admin_init', array( &$this, '_add_trial_notice' ) );
823
+ add_action( 'admin_init', array( &$this, '_add_affiliate_program_notice' ) );
824
  add_action( 'admin_init', array( &$this, '_enqueue_common_css' ) );
825
 
826
  /**
926
  // Try to load the cached value of the file path.
927
  if ( isset( $this->_storage->plugin_main_file ) ) {
928
  $plugin_main_file = $this->_storage->plugin_main_file;
929
+ if ( isset( $plugin_main_file->path ) ) {
930
+ $absolute_path = $this->get_absolute_path( $plugin_main_file->path );
931
+ if ( file_exists( $absolute_path ) ) {
932
+ return $absolute_path;
933
+ }
934
  }
935
  }
936
 
949
  if ( isset( $this->_storage->plugin_main_file ) &&
950
  isset( $this->_storage->plugin_main_file->prev_path )
951
  ) {
952
+ $absolute_path = $this->get_absolute_path( $this->_storage->plugin_main_file->prev_path );
953
+ if ( file_exists( $absolute_path ) ) {
954
+ return $absolute_path;
955
  }
956
  }
957
 
958
  wp_die(
959
+ $this->get_text_inline( 'Freemius SDK couldn\'t find the plugin\'s main file. Please contact sdk@freemius.com with the current error.', 'failed-finding-main-path' ) .
960
  " Module: {$this->_slug}; SDK: " . WP_FS__SDK_VERSION . ";",
961
+ $this->get_text_inline( 'Error', 'error' ),
962
  array( 'back_link' => true )
963
  );
964
  }
974
  'path' => $id_slug_type_path_map[ $this->_module_id ]['path'],
975
  );
976
 
977
+ return $this->get_absolute_path( $id_slug_type_path_map[ $this->_module_id ]['path'] );
978
+ }
979
+
980
+ /**
981
+ * @author Leo Fajardo (@leorw)
982
+ * @since 1.2.3
983
+ *
984
+ * @param string $path
985
+ *
986
+ * @return string
987
+ */
988
+ private function get_relative_path( $path ) {
989
+ $module_root_dir = $this->get_module_root_dir_path();
990
+ if ( 0 === strpos( $path, $module_root_dir ) ) {
991
+ $path = substr( $path, strlen( $module_root_dir ) );
992
+ }
993
+
994
+ return $path;
995
+ }
996
+
997
+ /**
998
+ * @author Leo Fajardo (@leorw)
999
+ * @since 1.2.3
1000
+ *
1001
+ * @param string $path
1002
+ * @param string|bool $module_type
1003
+ *
1004
+ * @return string
1005
+ */
1006
+ private function get_absolute_path( $path, $module_type = false ) {
1007
+ $module_root_dir = $this->get_module_root_dir_path( $module_type );
1008
+ if ( 0 !== strpos( $path, $module_root_dir ) ) {
1009
+ $path = fs_normalize_path( $module_root_dir . $path );
1010
+ }
1011
+
1012
+ return $path;
1013
+ }
1014
+
1015
+ /**
1016
+ * @author Leo Fajardo (@leorw)
1017
+ * @since 1.2.3
1018
+ *
1019
+ * @param string|bool $module_type
1020
+ *
1021
+ * @return string
1022
+ */
1023
+ private function get_module_root_dir_path( $module_type = false ) {
1024
+ $is_plugin = empty( $module_type ) ?
1025
+ $this->is_plugin() :
1026
+ ( WP_FS__MODULE_TYPE_PLUGIN === $module_type );
1027
+
1028
+ return fs_normalize_path( trailingslashit( $is_plugin ?
1029
+ WP_PLUGIN_DIR :
1030
+ get_theme_root() ) );
1031
+ }
1032
 
1033
  /**
1034
  * @author Leo Fajardo (@leorw)
1051
  $store_option = true;
1052
  }
1053
 
1054
+ if ( ! isset( $id_slug_type_path_map[ $module_id ]['path'] ) ||
1055
+ /**
1056
+ * This verification is for cases when suddenly the same module
1057
+ * is installed but with a different folder name.
1058
+ *
1059
+ * @author Vova Feldman (@svovaf)
1060
+ * @since 1.2.3
1061
+ */
1062
+ ! file_exists( $this->get_absolute_path(
1063
+ $id_slug_type_path_map[ $module_id ]['path'],
1064
+ $id_slug_type_path_map[ $module_id ]['type']
1065
+ ) )
1066
+ ) {
1067
  $caller_main_file_and_type = $this->get_caller_main_file_and_type();
1068
 
1069
  $id_slug_type_path_map[ $module_id ]['type'] = $caller_main_file_and_type->module_type;
1153
  */
1154
 
1155
  if ( $caller_file_path == fs_normalize_path( realpath( trailingslashit( $themes_dir ) . basename( dirname( $caller_file_path ) ) . '/' . basename( $caller_file_path ) ) ) ) {
1156
+ $module_type = WP_FS__MODULE_TYPE_THEME;
1157
+
1158
+ /**
1159
+ * Relative path of the theme, e.g.:
1160
+ * `my-theme/functions.php`
1161
+ *
1162
+ * @author Leo Fajardo (@leorw)
1163
+ */
1164
+ $caller_file_candidate = basename( dirname( $caller_file_path ) ) .
1165
+ '/' .
1166
+ basename( $caller_file_path );
1167
+
1168
  continue;
1169
  }
1170
  }
1182
 
1183
  if ( isset( $caller_map[ $caller_file_hash ] ) ) {
1184
  $module_type = WP_FS__MODULE_TYPE_PLUGIN;
1185
+ $caller_file_candidate = plugin_basename( $caller_map[ $caller_file_hash ] );
1186
  }
1187
  }
1188
 
1274
 
1275
  $reason_found_better_plugin = array(
1276
  'id' => self::REASON_FOUND_A_BETTER_PLUGIN,
1277
+ 'text' => sprintf( $this->get_text_inline( 'I found a better %s', 'reason-found-a-better-plugin' ), $module_type ),
1278
  'input_type' => 'textfield',
1279
+ 'input_placeholder' => sprintf( $this->get_text_inline( "What's the %s's name?", 'placeholder-plugin-name' ), $module_type ),
1280
  );
1281
 
1282
  $reason_temporary_deactivation = array(
1283
  'id' => self::REASON_TEMPORARY_DEACTIVATION,
1284
  'text' => sprintf(
1285
+ $this->get_text_inline( "It's a temporary %s. I'm just debugging an issue.", 'reason-temporary-x' ),
1286
  strtolower( $this->is_plugin() ?
1287
+ $this->get_text_inline( 'Deactivation', 'deactivation' ) :
1288
+ $this->get_text_inline( 'Theme Switch', 'theme-switch' )
1289
  )
1290
  ),
1291
  'input_type' => '',
1294
 
1295
  $reason_other = array(
1296
  'id' => self::REASON_OTHER,
1297
+ 'text' => $this->get_text_inline( 'Other', 'reason-other' ),
1298
  'input_type' => 'textfield',
1299
  'input_placeholder' => ''
1300
  );
1302
  $long_term_user_reasons = array(
1303
  array(
1304
  'id' => self::REASON_NO_LONGER_NEEDED,
1305
+ 'text' => sprintf( $this->get_text_inline( 'I no longer need the %s', 'reason-no-longer-needed' ), $module_type ),
1306
  'input_type' => '',
1307
  'input_placeholder' => ''
1308
  ),
1309
  $reason_found_better_plugin,
1310
  array(
1311
  'id' => self::REASON_NEEDED_FOR_A_SHORT_PERIOD,
1312
+ 'text' => sprintf( $this->get_text_inline( 'I only needed the %s for a short period', 'reason-needed-for-a-short-period' ), $module_type ),
1313
  'input_type' => '',
1314
  'input_placeholder' => ''
1315
  ),
1316
  array(
1317
  'id' => self::REASON_BROKE_MY_SITE,
1318
+ 'text' => sprintf( $this->get_text_inline( 'The %s broke my site', 'reason-broke-my-site' ), $module_type ),
1319
  'input_type' => '',
1320
  'input_placeholder' => '',
1321
  'internal_message' => $contact_support_template
1322
  ),
1323
  array(
1324
  'id' => self::REASON_SUDDENLY_STOPPED_WORKING,
1325
+ 'text' => sprintf( $this->get_text_inline( 'The %s suddenly stopped working', 'reason-suddenly-stopped-working' ), $module_type ),
1326
  'input_type' => '',
1327
  'input_placeholder' => '',
1328
  'internal_message' => $contact_support_template
1332
  if ( $this->is_paying() ) {
1333
  $long_term_user_reasons[] = array(
1334
  'id' => self::REASON_CANT_PAY_ANYMORE,
1335
+ 'text' => $this->get_text_inline( "I can't pay for it anymore", 'reason-cant-pay-anymore' ),
1336
  'input_type' => 'textfield',
1337
+ 'input_placeholder' => $this->get_text_inline( 'What price would you feel comfortable paying?', 'placeholder-comfortable-price' )
1338
  );
1339
  }
1340
 
1341
  $reason_dont_share_info = array(
1342
  'id' => self::REASON_DONT_LIKE_TO_SHARE_MY_INFORMATION,
1343
+ 'text' => $this->get_text_inline( "I don't like to share my information with you", 'reason-dont-like-to-share-my-information' ),
1344
  'input_type' => '',
1345
  'input_placeholder' => ''
1346
  );
1361
  'non-registered-and-non-anonymous-short-term' => array(
1362
  array(
1363
  'id' => self::REASON_DIDNT_WORK,
1364
+ 'text' => sprintf( $this->get_text_inline( "The %s didn't work", 'reason-didnt-work' ), $module_type ),
1365
  'input_type' => '',
1366
  'input_placeholder' => ''
1367
  ),
1371
  'short-term' => array(
1372
  array(
1373
  'id' => self::REASON_COULDNT_MAKE_IT_WORK,
1374
+ 'text' => $this->get_text_inline( "I couldn't understand how to make it work", 'reason-couldnt-make-it-work' ),
1375
  'input_type' => '',
1376
  'input_placeholder' => '',
1377
  'internal_message' => $contact_support_template
1379
  $reason_found_better_plugin,
1380
  array(
1381
  'id' => self::REASON_GREAT_BUT_NEED_SPECIFIC_FEATURE,
1382
+ 'text' => sprintf( $this->get_text_inline( "The %s is great, but I need specific feature that you don't support", 'reason-great-but-need-specific-feature' ), $module_type ),
1383
  'input_type' => 'textarea',
1384
+ 'input_placeholder' => $this->get_text_inline( 'What feature?', 'placeholder-feature' )
1385
  ),
1386
  array(
1387
  'id' => self::REASON_NOT_WORKING,
1388
+ 'text' => sprintf( $this->get_text_inline( 'The %s is not working', 'reason-not-working' ), $module_type ),
1389
  'input_type' => 'textarea',
1390
+ 'input_placeholder' => $this->get_text_inline( "Kindly share what didn't work so we can fix it for future users...", 'placeholder-share-what-didnt-work' )
1391
  ),
1392
  array(
1393
  'id' => self::REASON_NOT_WHAT_I_WAS_LOOKING_FOR,
1394
+ 'text' => $this->get_text_inline( "It's not what I was looking for", 'reason-not-what-i-was-looking-for' ),
1395
  'input_type' => 'textarea',
1396
+ 'input_placeholder' => $this->get_text_inline( "What you've been looking for?", 'placeholder-what-youve-been-looking-for' )
1397
  ),
1398
  array(
1399
  'id' => self::REASON_DIDNT_WORK_AS_EXPECTED,
1400
+ 'text' => sprintf( $this->get_text_inline( "The %s didn't work as expected", 'reason-didnt-work-as-expected' ), $module_type ),
1401
  'input_type' => 'textarea',
1402
+ 'input_placeholder' => $this->get_text_inline( 'What did you expect?', 'placeholder-what-did-you-expect' )
1403
  )
1404
  )
1405
  );
1935
 
1936
  self::$_static_logger->entrance();
1937
 
1938
+ $title = sprintf( '%s [v.%s]', fs_text_inline( 'Freemius Debug' ), WP_FS__SDK_VERSION );
1939
 
1940
  if ( WP_FS__DEV_MODE ) {
1941
  // Add top-level debug menu item.
2342
  *
2343
  * @return string
2344
  */
2345
+ function get_anonymous_id() {
2346
+ $unique_id = self::$_accounts->get_option( 'unique_id' );
2347
 
2348
+ if ( empty( $unique_id ) || ! is_string( $unique_id ) ) {
2349
+ $key = get_site_url();
2350
 
2351
+ // If localhost, assign microtime instead of domain.
2352
+ if ( WP_FS__IS_LOCALHOST ||
2353
+ false !== strpos( $key, 'localhost' ) ||
2354
+ false === strpos( $key, '.' )
2355
+ ) {
2356
+ $key = microtime();
2357
+ }
2358
 
2359
+ /**
2360
+ * Base the unique identifier on the WP secure authentication key. Which
2361
+ * turns the key into a secret anonymous identifier.
2362
+ *
2363
+ * @author Vova Feldman (@svovaf)
2364
+ * @since 1.2.3
2365
+ */
2366
+ $unique_id = md5( $key . SECURE_AUTH_KEY );
2367
 
2368
+ self::$_accounts->set_option( 'unique_id', $unique_id, true );
2369
+ }
2370
 
2371
+ $this->_logger->departure( $unique_id );
2372
 
2373
+ return $unique_id;
2374
+ }
2375
 
2376
  /**
2377
  * @author Vova Feldman (@svovaf)
2451
  // $admin_email = get_option( 'admin_email' );
2452
  $admin_email = $current_user->user_email;
2453
 
2454
+ // Aliases.
2455
+ $deactivate_plugin_title = $this->esc_html_inline( 'That\'s exhausting, please deactivate', 'deactivate-plugin-title' );
2456
+ $deactivate_plugin_desc = $this->esc_html_inline( 'We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future.', 'deactivate-plugin-desc' );
2457
+ $install_previous_title = $this->esc_html_inline( 'Let\'s try your previous version', 'install-previous-title' );
2458
+ $install_previous_desc = $this->esc_html_inline( 'Uninstall this version and install the previous one.', 'install-previous-desc' );
2459
+ $fix_issue_title = $this->esc_html_inline( 'Yes - I\'m giving you a chance to fix it', 'fix-issue-title' );
2460
+ $fix_issue_desc = $this->esc_html_inline( 'We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update.', 'fix-issue-desc' );
2461
+ /* translators: %s: product title (e.g. "Awesome Plugin" requires an access to...) */
2462
+ $x_requires_access_to_api = $this->esc_html_inline( '%s requires an access to our API.', 'x-requires-access-to-api' );
2463
+ $sysadmin_title = $this->esc_html_inline( 'I\'m a system administrator', 'sysadmin-title' );
2464
+ $happy_to_resolve_issue_asap = $this->esc_html_inline( 'We are sure it\'s an issue on our side and more than happy to resolve it for you ASAP if you give us a chance.', 'happy-to-resolve-issue-asap' );
2465
+
2466
  $message = false;
2467
  if ( is_object( $api_result ) &&
2468
  isset( $api_result->error ) &&
2489
  if ( ! empty( $missing_methods ) ) {
2490
  $missing_methods = sprintf(
2491
  '<br><br><b>%s</b> %s',
2492
+ $this->esc_html_inline( 'Disabled method(s):', 'curl-disabled-methods' ),
2493
  $missing_methods
2494
  );
2495
  }
2496
  }
2497
 
2498
  $message = sprintf(
2499
+ $x_requires_access_to_api . ' ' .
2500
+ $this->esc_html_inline( 'We use PHP cURL library for the API calls, which is a very common library and usually installed and activated out of the box. Unfortunately, cURL is not activated (or disabled) on your server.', 'curl-missing-message' ) . ' ' .
2501
  $missing_methods .
2502
  ' %s',
2503
  '<b>' . $this->get_plugin_name() . '</b>',
2505
  '<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
2506
  sprintf(
2507
  '<a class="fs-resolve" data-type="curl" href="#"><b>%s</b></a>%s',
2508
+ $this->get_text_inline( 'I don\'t know what is cURL or how to install it, help me!', 'curl-missing-no-clue-title' ),
2509
  ' - ' . sprintf(
2510
+ $this->get_text_inline( '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.', 'curl-missing-no-clue-desc' ),
2511
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
2512
  )
2513
  ),
2514
  sprintf(
2515
  '<b>%s</b> - %s',
2516
+ $sysadmin_title,
2517
+ esc_html( sprintf( $this->get_text_inline( '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.', 'curl-missing-sysadmin-desc' ), $this->get_module_label( true ) ) )
2518
  ),
2519
  sprintf(
2520
+ '<a href="%s"><b>%s</b></a> - %s',
2521
+ wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=all&amp;paged=1&amp;s=', 'deactivate-plugin_' . $this->_plugin_basename ),
2522
+ $deactivate_plugin_title,
2523
+ $deactivate_plugin_desc
2524
  )
2525
  )
2526
  );
2527
  break;
2528
  case 'cloudflare_ddos_protection':
2529
  $message = sprintf(
2530
+ $x_requires_access_to_api . ' ' .
2531
+ $this->esc_html_inline( 'From unknown reason, CloudFlare, the firewall we use, blocks the connection.', 'cloudflare-blocks-connection-message' ) . ' ' .
2532
+ $happy_to_resolve_issue_asap .
2533
  ' %s',
2534
  '<b>' . $this->get_plugin_name() . '</b>',
2535
  sprintf(
2536
  '<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
2537
  sprintf(
2538
  '<a class="fs-resolve" data-type="cloudflare" href="#"><b>%s</b></a>%s',
2539
+ $fix_issue_title,
2540
  ' - ' . sprintf(
2541
+ $fix_issue_desc,
2542
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
2543
  )
2544
  ),
2545
  sprintf(
2546
+ '<a href="%s" target="_blank"><b>%s</b></a> - %s',
2547
  sprintf( 'https://wordpress.org/plugins/%s/download/', $this->_slug ),
2548
+ $install_previous_title,
2549
+ $install_previous_desc
2550
  ),
2551
  sprintf(
2552
+ '<a href="%s"><b>%s</b></a> - %s',
2553
+ wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=all&amp;paged=1&amp;s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
2554
+ $deactivate_plugin_title,
2555
+ $deactivate_plugin_desc
2556
  )
2557
  )
2558
  );
2559
  break;
2560
  case 'squid_cache_block':
2561
  $message = sprintf(
2562
+ $x_requires_access_to_api . ' ' .
2563
+ $this->esc_html_inline( 'It looks like your server is using Squid ACL (access control lists), which blocks the connection.', 'squid-blocks-connection-message' ) .
2564
  ' %s',
2565
  '<b>' . $this->get_plugin_name() . '</b>',
2566
  sprintf(
2567
  '<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
2568
  sprintf(
2569
+ '<a class="fs-resolve" data-type="squid" href="#"><b>%s</b></a> - %s',
2570
+ $this->esc_html_inline( 'I don\'t know what is Squid or ACL, help me!', 'squid-no-clue-title' ),
2571
+ sprintf(
2572
+ $this->esc_html_inline( '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.', 'squid-no-clue-desc' ),
2573
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
2574
  )
2575
  ),
2576
  sprintf(
2577
  '<b>%s</b> - %s',
2578
+ $sysadmin_title,
2579
  sprintf(
2580
+ $this->esc_html_inline( 'Great, please whitelist the following domains: %s. Once you are done, deactivate the %s and activate it again.', 'squid-sysadmin-desc' ),
2581
  // We use a filter since the plugin might require additional API connectivity.
2582
  '<b>' . implode( ', ', $this->apply_filters( 'api_domains', array( 'api.freemius.com', 'wp.freemius.com' ) ) ) . '</b>',
2583
  $this->_module_type
2584
  )
2585
  ),
2586
  sprintf(
2587
+ '<a href="%s"><b>%s</b></a> - %s',
2588
+ wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=all&amp;paged=1&amp;s=', 'deactivate-plugin_' . $this->_plugin_basename ),
2589
+ $deactivate_plugin_title,
2590
+ $deactivate_plugin_desc
2591
  )
2592
  )
2593
  );
2594
  break;
2595
  // default:
2596
+ // $message = $this->get_text_inline( 'connectivity-test-fails-message' );
2597
  // break;
2598
  }
2599
  }
2601
  $message_id = 'failed_connect_api';
2602
  $type = 'error';
2603
 
2604
+ $connectivity_test_fails_message = $this->esc_html_inline( 'From unknown reason, the API connectivity test failed.', 'connectivity-test-fails-message' );
2605
+
2606
  if ( false === $message ) {
2607
  if ( $is_first_failure ) {
2608
  // First attempt failed.
2609
  $message = sprintf(
2610
+ $x_requires_access_to_api . ' ' .
2611
+ $connectivity_test_fails_message . ' ' .
2612
+ $this->esc_html_inline( 'It\'s probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?', 'connectivity-test-maybe-temporary' ) . '<br><br>' .
2613
  '%s',
2614
  '<b>' . $this->get_plugin_name() . '</b>',
2615
  sprintf(
2616
  '<div id="fs_firewall_issue_options">%s %s</div>',
2617
  sprintf(
2618
  '<a class="button button-primary fs-resolve" data-type="retry_ping" href="#">%s</a>',
2619
+ $this->get_text_inline( 'Yes - do your thing', 'yes-do-your-thing' )
2620
  ),
2621
  sprintf(
2622
  '<a href="%s" class="button">%s</a>',
2623
+ wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=all&amp;paged=1&amp;s=', 'deactivate-plugin_' . $this->_plugin_basename ),
2624
+ $this->get_text_inline( 'No - just deactivate', 'no-deactivate' )
2625
  )
2626
  )
2627
  );
2631
  } else {
2632
  // Second connectivity attempt failed.
2633
  $message = sprintf(
2634
+ $x_requires_access_to_api . ' ' .
2635
+ $connectivity_test_fails_message . ' ' .
2636
+ $happy_to_resolve_issue_asap .
2637
  ' %s',
2638
  '<b>' . $this->get_plugin_name() . '</b>',
2639
  sprintf(
2640
  '<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
2641
  sprintf(
2642
  '<a class="fs-resolve" data-type="general" href="#"><b>%s</b></a>%s',
2643
+ $fix_issue_title,
2644
  ' - ' . sprintf(
2645
+ $fix_issue_desc,
2646
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
2647
  )
2648
  ),
2649
  sprintf(
2650
+ '<a href="%s" target="_blank"><b>%s</b></a> - %s',
2651
  sprintf( 'https://wordpress.org/plugins/%s/download/', $this->_slug ),
2652
+ $install_previous_title,
2653
+ $install_previous_desc
2654
  ),
2655
  sprintf(
2656
+ '<a href="%s"><b>%s</b></a> - %s',
2657
+ wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=all&amp;paged=1&amp;s=', 'deactivate-plugin_' . $this->_plugin_basename ),
2658
+ $deactivate_plugin_title,
2659
+ $deactivate_plugin_desc
2660
  )
2661
  )
2662
  );
2666
  $this->_admin_notices->add_sticky(
2667
  $message,
2668
  $message_id,
2669
+ $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...',
2670
  $type
2671
  );
2672
  }
2733
 
2734
  $this->_admin_notices->add_sticky(
2735
  sprintf(
2736
+ $this->get_text_inline( '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.', 'fix-request-sent-message' ),
2737
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
2738
  ),
2739
  'server_details_sent'
3009
 
3010
  $this->parse_settings( $plugin_info );
3011
 
3012
+ if ( $this->has_affiliate_program() ) {
3013
+ $this->fetch_affiliate_and_terms();
3014
+ }
3015
+
3016
  if ( ! self::is_ajax() ) {
3017
  if ( ! $this->is_addon() || $this->is_only_premium() ) {
3018
  add_action( 'admin_menu', array( &$this, '_prepare_admin_menu' ), WP_FS__LOWEST_PRIORITY );
3128
 
3129
  $this->_admin_notices->add(
3130
  ( ! empty( $parent_name ) ?
3131
+ sprintf( $this->get_text_x_inline( '%s cannot run without %s.', 'addonX cannot run without pluginY', 'addon-x-cannot-run-without-y' ), $this->get_plugin_name(), $parent_name ) :
3132
+ sprintf( $this->get_text_x_inline( '%s cannot run without the plugin.', 'addonX cannot run...', 'addon-x-cannot-run-without-parent' ), $this->get_plugin_name() )
3133
  ),
3134
+ $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...',
3135
  'error'
3136
  );
3137
 
3250
  $this->_logger->api_error( $result );
3251
 
3252
  self::shoot_ajax_failure(
3253
+ sprintf( $this->get_text_inline( 'Unexpected API error. Please contact the %s\'s author with the following error.', 'unexpected-api-error' ), $this->_module_type ) .
3254
  ( $this->is_api_error( $result ) && isset( $result->error ) ?
3255
  $result->error->message :
3256
  var_export( $result, true ) )
3275
  $this->_logger->api_error( $result );
3276
 
3277
  self::shoot_ajax_failure(
3278
+ sprintf( $this->get_text_inline( 'Unexpected API error. Please contact the %s\'s author with the following error.', 'unexpected-api-error' ), $this->_module_type ) .
3279
  ( $this->is_api_error( $result ) && isset( $result->error ) ?
3280
  $result->error->message :
3281
  var_export( $result, true ) )
3462
  new FS_Plugin();
3463
 
3464
  $plugin->update( array(
3465
+ 'id' => $id,
3466
+ 'type' => $this->get_option( $plugin_info, 'type', $this->_module_type),
3467
+ 'public_key' => $public_key,
3468
+ 'slug' => $this->_slug,
3469
+ 'parent_plugin_id' => $parent_id,
3470
+ 'version' => $this->get_plugin_version(),
3471
+ 'title' => $this->get_plugin_name(),
3472
+ 'file' => $this->_plugin_basename,
3473
+ 'is_premium' => $this->get_bool_option( $plugin_info, 'is_premium', true ),
3474
+ 'is_live' => $this->get_bool_option( $plugin_info, 'is_live', true ),
3475
+ 'affiliate_moderation' => $this->get_option( $plugin_info, 'has_affiliation' ),
3476
  ) );
3477
 
3478
  if ( $plugin->is_updated() ) {
3681
  'license_activated',
3682
  ) );
3683
 
3684
+ if ( ! $this->is_only_premium() ) {
3685
+ $this->_admin_notices->add_sticky(
3686
+ sprintf( $this->get_text_inline( 'Premium %s version was successfully activated.', 'premium-activated-message' ), $this->_module_type ),
3687
+ 'premium_activated',
3688
+ $this->get_text_x_inline( 'W00t',
3689
+ 'Used to express elation, enthusiasm, or triumph (especially in electronic communication).', 'woot' ) . '!'
3690
+ );
3691
+ }
3692
  } else {
3693
  // Remove sticky message related to premium code activation.
3694
  $this->_admin_notices->remove_sticky( 'premium_activated' );
3699
  if ( $this->is_paying() && ! $this->is_premium() ) {
3700
  $this->_admin_notices->add_sticky(
3701
  sprintf(
3702
+ /* translators: %s: License type (e.g. you have a professional license) */
3703
+ $this->get_text_inline( 'You have a %s license.', 'you-have-x-license' ),
3704
  $this->_site->plan->title
3705
  ) . $this->get_complete_upgrade_instructions(),
3706
  'plan_upgraded',
3707
+ $this->get_text_x_inline( 'Yee-haw', 'interjection expressing joy or exuberance', 'yee-haw' ) . '!'
3708
  );
3709
  }
3710
  }
3967
 
3968
  $this->_parent->_admin_notices->add_sticky(
3969
  sprintf(
3970
+ ($is_after_trial_cancel ?
3971
+ $this->_parent->get_text_inline(
3972
+ '%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.',
3973
+ 'addon-trial-cancelled-message'
3974
+ ) :
3975
+ $this->_parent->get_text_inline(
3976
+ '%s is a premium only add-on. You have to purchase a license first before activating the plugin.',
3977
+ 'addon-no-license-message'
3978
+ )
3979
  ),
3980
  '<b>' . $this->_plugin->title . '</b>'
3981
  ) . ' ' . sprintf(
3982
  '<a href="%s" aria-label="%s" class="button button-primary" style="margin-left: 10px; vertical-align: middle;">%s &nbsp;&#10140;</a>',
3983
  $this->_parent->addon_url( $this->_slug ),
3984
+ esc_attr( sprintf( $this->_parent->get_text_inline( 'More information about %s', 'more-information-about-x' ), $this->_plugin->title ) ),
3985
+ $this->_parent->get_text_inline( 'Purchase License', 'purchase-license' )
3986
  ),
3987
  'no_addon_license_' . $this->_slug,
3988
+ ( $is_after_trial_cancel ? '' : $this->_parent->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...' ),
3989
  ( $is_after_trial_cancel ? 'success' : 'error' )
3990
  );
3991
 
4419
 
4420
  $this->_admin_notices->add_sticky(
4421
  sprintf(
4422
+ $this->get_text_inline( '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.', 'pending-activation-message' ),
4423
  '<b>' . $this->get_plugin_name() . '</b>',
4424
  '<b>' . $email . '</b>',
4425
+ ( $is_pending_trial ?
4426
+ $this->get_text_inline( 'start the trial', 'start-the-trial' ) :
4427
+ $this->get_text_inline( 'complete the install', 'complete-the-install' ) )
4428
  ),
4429
  'activation_pending',
4430
  'Thanks!'
4503
  // Show notice for new plugin installations.
4504
  $this->_admin_notices->add(
4505
  sprintf(
4506
+ $this->get_text_inline( 'You are just one step away - %s', 'you-are-step-away' ),
4507
  sprintf( '<b><a href="%s">%s</a></b>',
4508
  $this->get_activation_url(),
4509
+ sprintf( $this->get_text_x_inline( 'Complete "%s" Activation Now',
4510
+ '%s - plugin name. As complete "PluginX" activation now', 'activate-x-now' ), $this->get_plugin_name() )
4511
  )
4512
  ),
4513
  '',
4520
  // Show notice for new plugin installations.
4521
  $this->_admin_notices->add_sticky(
4522
  sprintf(
4523
+ $this->get_text_inline( 'We made a few tweaks to the %s, %s', 'few-plugin-tweaks' ),
4524
  $this->_module_type,
4525
  sprintf( '<b><a href="%s">%s</a></b>',
4526
  $this->get_activation_url(),
4527
+ sprintf( $this->get_text_inline( 'Opt in to make "%s" Better!', 'optin-x-now' ), $this->get_plugin_name() )
4528
  )
4529
  ),
4530
  'connect_account',
4909
  // If activating the premium module version, add an admin notice to congratulate for an upgrade completion.
4910
  if ( $is_premium_version_activation ) {
4911
  $this->_admin_notices->add(
4912
+ sprintf( $this->get_text_inline( 'The upgrade of %s was successfully completed.', 'successful-version-upgrade-message' ), sprintf( '<b>%s</b>', $this->_plugin->title ) ),
4913
+ $this->get_text_x_inline( 'W00t',
4914
+ 'Used to express elation, enthusiasm, or triumph (especially in electronic communication).', 'woot' ) . '!'
4915
  );
4916
  }
4917
  } else if ( $this->is_anonymous() ) {
5994
  */
5995
  function get_module_label( $lowercase = false ) {
5996
  $label = $this->is_addon() ?
5997
+ $this->get_text_inline( 'Add-On', 'addon' ) :
5998
  ( $this->is_plugin() ?
5999
+ $this->get_text_inline( 'Plugin', 'plugin' ) :
6000
+ $this->get_text_inline( 'Theme', 'theme' ) );
6001
 
6002
  if ( $lowercase ) {
6003
+ $label = strtolower( $label );
6004
  }
6005
 
6006
  return $label;
7121
  if ( isset( $install->error ) ) {
7122
  $error = $install->error->message;
7123
  } else {
7124
+ $fs->_sync_license( true );
 
 
7125
 
7126
+ $next_page = $fs->is_addon() ?
7127
+ $fs->get_parent_instance()->get_account_url() :
7128
+ $fs->get_account_url();
7129
 
7130
+ $fs->reconnect_locally();
7131
  }
7132
  } else {
7133
  $next_page = $fs->opt_in( false, false, false, $license_key );
7254
  $error = $result->error;
7255
 
7256
  if ( in_array( $error->code, array( 'invalid_email', 'no_user' ) ) ) {
7257
+ $error = $this->get_text_inline( "We couldn't find your email address in the system, are you sure it's the right address?", 'email-not-found' );
7258
  } else if ( 'no_license' === $error->code ) {
7259
+ $error = $this->get_text_inline( "We can't see any active licenses associated with that email address, are you sure it's the right address?", 'no-active-licenses' );
7260
  } else {
7261
  $error = $error->message;
7262
  }
7267
  );
7268
 
7269
  if ( false !== $error ) {
7270
+ $licenses['error'] = sprintf( '%s... %s', $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ), strtolower( $error ) );
7271
  }
7272
 
7273
  echo json_encode( $licenses );
7300
  if ( self::is_ajax() &&
7301
  'admin-ajax.php' === $pagenow
7302
  ) {
7303
+ $referer = fs_get_raw_referer();
7304
 
7305
  if ( is_string( $referer ) ) {
7306
  $parts = explode( '?', $referer );
7337
  return ( 'themes.php' === self::get_current_page() );
7338
  }
7339
 
7340
+ #----------------------------------------------------------------------------------
7341
+ #region Affiliation
7342
+ #----------------------------------------------------------------------------------
7343
+
7344
+ /**
7345
+ * @author Leo Fajardo
7346
+ * @since 1.2.3
7347
+ *
7348
+ * @return bool
7349
+ */
7350
+ function has_affiliate_program() {
7351
+ if ( ! is_object( $this->_plugin ) ) {
7352
+ return false;
7353
+ }
7354
+
7355
+ return $this->_plugin->has_affiliate_program();
7356
+ }
7357
+
7358
+ /**
7359
+ * @author Leo Fajardo (@leorw)
7360
+ * @since 1.2.3
7361
+ */
7362
+ private function fetch_affiliate_and_terms() {
7363
+ $this->_logger->entrance();
7364
+
7365
+ if ( ! is_object( $this->plugin_affiliate_terms ) ) {
7366
+ $plugins_api = $this->get_api_plugin_scope();
7367
+ $affiliate_terms = $plugins_api->get( '/aff.json?type=affiliation', true );
7368
+
7369
+ if ( ! $this->is_api_result_entity( $affiliate_terms ) ) {
7370
+ return;
7371
+ }
7372
+
7373
+ $this->plugin_affiliate_terms = new FS_AffiliateTerms( $affiliate_terms );
7374
+ }
7375
+
7376
+ if ( $this->is_registered() ) {
7377
+ $users_api = $this->get_api_user_scope();
7378
+ $result = $users_api->get( "/plugins/{$this->_plugin->id}/aff/{$this->plugin_affiliate_terms->id}/affiliates.json", true );
7379
+ if ( $this->is_api_result_object( $result, 'affiliates' ) ) {
7380
+ if ( ! empty( $result->affiliates ) ) {
7381
+ $affiliate = new FS_Affiliate( $result->affiliates[0] );
7382
+
7383
+ if ( ! $affiliate->is_pending() && ! empty( $this->_storage->affiliate_application_data ) ) {
7384
+ unset( $this->_storage->affiliate_application_data );
7385
+ }
7386
+
7387
+ if ( $affiliate->is_using_custom_terms ) {
7388
+ $affiliate_terms = $users_api->get( "/plugins/{$this->_plugin->id}/affiliates/{$affiliate->id}/aff/{$affiliate->custom_affiliate_terms_id}.json", true );
7389
+ if ( $this->is_api_result_entity( $affiliate_terms ) ) {
7390
+ $this->custom_affiliate_terms = new FS_AffiliateTerms( $affiliate_terms );
7391
+ }
7392
+ }
7393
+
7394
+ $this->affiliate = $affiliate;
7395
+ }
7396
+ }
7397
+ }
7398
+ }
7399
+
7400
+ /**
7401
+ * @author Leo Fajardo
7402
+ * @since 1.2.3
7403
+ *
7404
+ * @return FS_Affiliate
7405
+ */
7406
+ function get_affiliate() {
7407
+ return $this->affiliate;
7408
+ }
7409
+
7410
+
7411
+ /**
7412
+ * @author Leo Fajardo
7413
+ * @since 1.2.3
7414
+ *
7415
+ * @return FS_AffiliateTerms
7416
+ */
7417
+ function get_affiliate_terms() {
7418
+ return is_object( $this->custom_affiliate_terms ) ?
7419
+ $this->custom_affiliate_terms :
7420
+ $this->plugin_affiliate_terms;
7421
+ }
7422
+
7423
+ /**
7424
+ * @author Leo Fajardo
7425
+ * @since 1.2.3
7426
+ *
7427
+ * @return FS_Affiliate|null
7428
+ */
7429
+ function _submit_affiliate_application() {
7430
+ $this->_logger->entrance();
7431
+
7432
+ $this->check_ajax_referer( 'submit_affiliate_application' );
7433
+
7434
+ if ( ! $this->is_user_admin() ) {
7435
+ // Only for admins.
7436
+ self::shoot_ajax_failure();
7437
+ }
7438
+
7439
+ $affiliate = fs_request_get( 'affiliate' );
7440
+
7441
+ if ( empty( $affiliate['promotion_methods'] ) ) {
7442
+ unset( $affiliate['promotion_methods'] );
7443
+ }
7444
+
7445
+ if ( ! empty( $affiliate['additional_domains'] ) ) {
7446
+ $affiliate['additional_domains'] = array_unique( $affiliate['additional_domains'] );
7447
+ }
7448
+
7449
+ if ( ! $this->is_registered() ) {
7450
+ // Opt in but don't track usage.
7451
+ $next_page = $this->opt_in(
7452
+ false,
7453
+ false,
7454
+ false,
7455
+ false,
7456
+ false,
7457
+ false,
7458
+ true
7459
+ );
7460
+
7461
+ if ( is_object( $next_page ) && $this->is_api_error( $next_page ) ) {
7462
+ self::shoot_ajax_failure(
7463
+ isset( $next_page->error ) ?
7464
+ $next_page->error->message :
7465
+ var_export( $next_page, true )
7466
+ );
7467
+ } else if ( $this->is_pending_activation() ) {
7468
+ self::shoot_ajax_failure( $this->get_text_inline( 'Account is pending activation.', 'account-is-pending-activation' ) );
7469
+ }
7470
+ }
7471
+
7472
+ $api = $this->get_api_user_scope();
7473
+ $result = $api->call(
7474
+ ( "/plugins/{$this->_plugin->id}/aff/{$this->plugin_affiliate_terms->id}/affiliates.json" ),
7475
+ 'post',
7476
+ $affiliate
7477
+ );
7478
+
7479
+ if ( $this->is_api_error( $result ) ) {
7480
+ self::shoot_ajax_failure(
7481
+ isset( $result->error ) ?
7482
+ $result->error->message :
7483
+ var_export( $result, true )
7484
+ );
7485
+ }
7486
+ else
7487
+ {
7488
+ if ( $this->_admin_notices->has_sticky( 'affiliate_program' ) ) {
7489
+ $this->_admin_notices->remove_sticky( 'affiliate_program' );
7490
+ }
7491
+
7492
+ $affiliate_application_data = array(
7493
+ 'stats_description' => $affiliate['stats_description'],
7494
+ 'promotion_method_description' => $affiliate['promotion_method_description'],
7495
+ );
7496
+
7497
+ if ( ! empty( $affiliate['promotion_methods'] ) ) {
7498
+ $affiliate_application_data['promotion_methods'] = $affiliate['promotion_methods'];
7499
+ }
7500
+
7501
+ if ( ! empty( $affiliate['domain'] ) ) {
7502
+ $affiliate_application_data['domain'] = $affiliate['domain'];
7503
+ }
7504
+
7505
+ if ( ! empty( $affiliate['additional_domains'] ) ) {
7506
+ $affiliate_application_data['additional_domains'] = $affiliate['additional_domains'];
7507
+ }
7508
+
7509
+ $this->_storage->affiliate_application_data = $affiliate_application_data;
7510
+ }
7511
+
7512
+ // Purge cached affiliate.
7513
+ $api->purge_cache( 'affiliate.json' );
7514
+
7515
+ self::shoot_ajax_success( $result );
7516
+ }
7517
+
7518
+ /**
7519
+ * @author Leo Fajardo
7520
+ * @since 1.2.3
7521
+ *
7522
+ * @return array|null
7523
+ */
7524
+ function get_affiliate_application_data() {
7525
+ if ( empty( $this->_storage->affiliate_application_data ) ) {
7526
+ return null;
7527
+ }
7528
+
7529
+ return $this->_storage->affiliate_application_data;
7530
+ }
7531
+
7532
+ #endregion Affiliation ------------------------------------------------------------
7533
+
7534
  #----------------------------------------------------------------------------------
7535
  #region URL Generators
7536
  #----------------------------------------------------------------------------------
7980
  ) ), admin_url( 'admin.php', 'admin' ) );
7981
  } else {
7982
  // Plugin without a settings page.
7983
+ return add_query_arg(
7984
+ $params,
7985
+ admin_url( 'plugins.php' )
7986
+ );
7987
  }
7988
  }
7989
  }
8404
  $this->_site = clone $site;
8405
  $this->_site->plan = self::decrypt_entity( $this->_site->plan );
8406
 
8407
+ /**
8408
+ * If the install owner's details are not stored locally, use the previous user's details if available.
8409
+ *
8410
+ * @author Leo Fajardo (@leorw)
8411
+ */
8412
+ if ( ! isset( $users[ $this->_site->user_id ] ) && FS_User::is_valid_id( $this->_storage->prev_user_id ) ) {
8413
+ $user_id = $this->_storage->prev_user_id;
8414
+ } else {
8415
+ $user_id = $this->_site->user_id;
8416
+ }
8417
+
8418
  // Load relevant user.
8419
+ $this->_user = clone $users[ $user_id ];
8420
 
8421
  // Load plans.
8422
  $this->_plans = $plans[ $this->_slug ];
8564
  * In this case, the user and site info will be sent to the server but no
8565
  * data will be saved to the WP installation's database.
8566
  * @param number|bool $trial_plan_id
8567
+ * @param bool $is_disconnected Whether or not to opt in without tracking.
8568
  *
8569
  * @return string|object
8570
  * @use WP_Error
8575
  $last = false,
8576
  $license_key = false,
8577
  $is_uninstall = false,
8578
+ $trial_plan_id = false,
8579
+ $is_disconnected = false
8580
  ) {
8581
  $this->_logger->entrance();
8582
 
8629
  );
8630
  }
8631
 
8632
+ if ( isset( $params['license_key'] ) ) {
8633
+ $fs_user = Freemius::_get_user_by_email( $email );
8634
+
8635
+ if ( is_object( $fs_user ) ) {
8636
+ /**
8637
+ * If opting in with a context license and the context WP Admin user already opted in
8638
+ * before from the current site, add the user context security params to avoid the
8639
+ * unnecessry email activation when the context license is owned by the same context user.
8640
+ *
8641
+ * @author Leo Fajardo (@leorw)
8642
+ * @since 1.2.3
8643
+ */
8644
+ $params = array_merge( $params, FS_Security::instance()->get_context_params(
8645
+ $fs_user,
8646
+ false,
8647
+ 'install_with_existing_user'
8648
+ ) );
8649
+ }
8650
+ }
8651
+
8652
+ $params['is_disconnected'] = $is_disconnected;
8653
+ $params['format'] = 'json';
8654
 
8655
  $url = WP_FS__ADDRESS . '/action/service/user/install/';
8656
  if ( isset( $_COOKIE['XDEBUG_SESSION'] ) ) {
8707
  return true;
8708
  }
8709
 
8710
+ /**
8711
+ * When json_decode() executed on PHP 5.2 with an invalid JSON, it will throw a PHP warning. Unfortunately, the new Theme Check doesn't allow PHP silencing and the theme review team isn't open to change that, therefore, instead of using `@json_decode()` we had to use the method without the `@` directive.
8712
+ *
8713
+ * @author Vova Feldman (@svovaf)
8714
+ * @since 1.2.3
8715
+ * @link https://themes.trac.wordpress.org/ticket/46134#comment:5
8716
+ * @link https://themes.trac.wordpress.org/ticket/46134#comment:9
8717
+ * @link https://themes.trac.wordpress.org/ticket/46134#comment:12
8718
+ * @link https://themes.trac.wordpress.org/ticket/46134#comment:14
8719
+ */
8720
+ $decoded = is_string( $response['body'] ) ?
8721
+ json_decode( $response['body'] ) :
8722
+ null;
8723
 
8724
  if ( empty( $decoded ) ) {
8725
  return false;
8737
  } else if ( isset( $decoded->pending_activation ) && $decoded->pending_activation ) {
8738
  // Pending activation, add message.
8739
  return $this->set_pending_confirmation(
8740
+ ( isset( $decoded->email ) ?
8741
+ $decoded->email :
8742
+ true ),
8743
  false,
8744
  $filtered_license_key,
8745
  ! empty( $params['trial_plan_id'] )
8805
 
8806
  $this->_admin_notices->remove_sticky( 'connect_account' );
8807
 
8808
+ if ( $this->is_pending_activation() || ! $this->has_settings_menu() ) {
8809
  // Remove pending activation sticky notice (if still exist).
8810
  $this->_admin_notices->remove_sticky( 'activation_pending' );
8811
 
8814
 
8815
  if ( ! $this->is_paying_or_trial() ) {
8816
  $this->_admin_notices->add_sticky(
8817
+ sprintf( $this->get_text_x_inline( '%s activation was successfully completed.',
8818
+ 'pluginX activation was successfully...', 'plugin-x-activation-message' ), '<b>' . $this->get_plugin_name() . '</b>' ),
8819
  'activation_complete'
8820
  );
8821
  }
8822
  }
8823
 
8824
  if ( $this->is_paying_or_trial() ) {
8825
+ if ( ! $this->is_premium() || ! $this->has_premium_version() || ! $this->has_settings_menu() ) {
8826
  if ( $this->is_paying() ) {
8827
  $this->_admin_notices->add_sticky(
8828
  sprintf(
8829
+ $this->get_text_inline( 'Your account was successfully activated with the %s plan.', 'activation-with-plan-x-message' ),
8830
  $this->_site->plan->title
8831
  ) . $this->get_complete_upgrade_instructions(),
8832
  'plan_upgraded',
8833
+ $this->get_text_x_inline( 'Yee-haw', 'interjection expressing joy or exuberance', 'yee-haw' ) . '!'
8834
  );
8835
  } else {
8836
  $this->_admin_notices->add_sticky(
8837
  sprintf(
8838
+ $this->get_text_inline( 'Your trial has been successfully started.', 'trial-started-message' ),
8839
  '<i>' . $this->get_plugin_name() . '</i>'
8840
  ) . $this->get_complete_upgrade_instructions( $this->_storage->trial_plan->title ),
8841
  'trial_started',
8842
+ $this->get_text_x_inline( 'Yee-haw', 'interjection expressing joy or exuberance', 'yee-haw' ) . '!'
8843
  );
8844
  }
8845
  }
9124
  $install = $this->apply_filters( 'after_install_failure', $install, $args );
9125
 
9126
  $this->_admin_notices->add(
9127
+ sprintf( $this->get_text_inline( 'Couldn\'t activate %s.', 'could-not-activate-x' ), $this->get_plugin_name() ) . ' ' .
9128
+ $this->get_text_inline( 'Please contact us with the following message:', 'contact-us-with-error-message' ) . ' ' . '<b>' . $install->error->message . '</b>',
9129
+ $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...',
9130
  'error'
9131
  );
9132
 
9133
  if ( $redirect ) {
9134
+ /**
9135
+ * We set the user before getting the user scope API handler, so the user became temporarily
9136
+ * registered (`is_registered() = true`). Since the API returned an error and we will redirect,
9137
+ * we have to set the user to `null`, otherwise, the user will be redirected to the wrong
9138
+ * activation page based on the return value of `is_registered()`. In addition, in case the
9139
+ * context plugin doesn't have a settings menu and the default page is the `Plugins` page,
9140
+ * misleading plugin activation errors will be shown on the `Plugins` page.
9141
+ *
9142
+ * @author Leo Fajardo (@leorw)
9143
+ */
9144
+ $this->_user = null;
9145
+
9146
+ fs_redirect( $this->get_activation_url( array( 'error' => $install->error->message ) ) );
9147
  }
9148
 
9149
  return $install;
9180
 
9181
  if ( isset( $addon_install->error ) ) {
9182
  $this->_admin_notices->add(
9183
+ sprintf( $this->get_text_inline( 'Couldn\'t activate %s.', 'could-not-activate-x' ), $this->get_plugin_name() ) . ' ' .
9184
+ $this->get_text_inline( 'Please contact us with the following message:', 'contact-us-with-error-message' ) . ' ' . '<b>' . $addon_install->error->message . '</b>',
9185
+ $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...',
9186
  'error'
9187
  );
9188
 
9241
 
9242
  if ( isset( $parent_install->error ) ) {
9243
  $this->_admin_notices->add(
9244
+ sprintf( $this->get_text_inline( 'Couldn\'t activate %s.', 'could-not-activate-x' ), $this->get_plugin_name() ) . ' ' .
9245
+ $this->get_text_inline( 'Please contact us with the following message:', 'contact-us-with-error-message' ) . ' ' . '<b>' . $parent_install->error->message . '</b>',
9246
+ $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...',
9247
  'error'
9248
  );
9249
 
9250
  return;
9251
  }
9252
 
9253
+ $parent_fs->_admin_notices->remove_sticky( 'connect_account' );
9254
+
9255
+ if ( $parent_fs->is_pending_activation() ) {
9256
+ $parent_fs->_admin_notices->remove_sticky( 'activation_pending' );
9257
+
9258
+ unset( $parent_fs->_storage->is_pending_activation );
9259
+ }
9260
+
9261
  // First of all, set site info - otherwise we won't
9262
  // be able to invoke API calls.
9263
  $parent_fs->_site = new FS_Site( $parent_install );
9450
 
9451
  if ( false !== $hook ) {
9452
  if ( fs_request_is_action( $this->get_unique_affix() . '_activate_existing' ) ) {
9453
+ $this->_install_with_current_user();
9454
  } else if ( fs_request_is_action( $this->get_unique_affix() . '_activate_new' ) ) {
9455
+ $this->_install_with_new_user();
9456
  }
9457
  }
9458
  }
9500
  * @return string
9501
  */
9502
  function get_pricing_cta_label() {
9503
+ $label = $this->get_text_inline( 'Upgrade', 'upgrade' );
9504
 
9505
  if ( $this->is_in_trial_promotion() &&
9506
  ! $this->is_paying_or_trial()
9507
  ) {
9508
  // If running a trial promotion, modify the pricing to load the trial.
9509
+ $label = $this->get_text_inline( 'Start Trial', 'start-trial' );
9510
  } else if ( $this->is_paying() ) {
9511
+ $label = $this->get_text_inline( 'Pricing', 'pricing' );
9512
  }
9513
 
9514
  return $label;
9545
  * @since 1.2.2.7 Also add submenu items when running in a free .org theme so the tabs will be visible.
9546
  */
9547
  if ( ! $this->is_activation_mode() || $this->is_free_wp_org_theme() ) {
9548
+ if ( $this->has_affiliate_program() ) {
9549
+ // Add affiliation page.
9550
+ $this->add_submenu_item(
9551
+ $this->get_text_inline( 'Affiliation', 'affiliation' ),
9552
+ array( &$this, '_affiliation_page_render' ),
9553
+ $this->get_plugin_name() . ' &ndash; ' . $this->get_text_inline( 'Affiliation', 'affiliation' ),
9554
+ 'manage_options',
9555
+ 'affiliation',
9556
+ 'Freemius::_clean_admin_content_section',
9557
+ WP_FS__DEFAULT_PRIORITY,
9558
+ $this->is_submenu_item_visible( 'affiliation' )
9559
+ );
9560
+ }
9561
+
9562
  if ( $this->is_registered() ) {
9563
  $show_account = (
9564
  $this->is_submenu_item_visible( 'account' ) &&
9570
 
9571
  // Add user account page.
9572
  $this->add_submenu_item(
9573
+ $this->get_text_inline( 'Account', 'account' ),
9574
  array( &$this, '_account_page_render' ),
9575
+ $this->get_plugin_name() . ' &ndash; ' . $this->get_text_inline( 'Account', 'account' ),
9576
  'manage_options',
9577
  'account',
9578
  array( &$this, '_account_page_load' ),
9583
 
9584
  // Add contact page.
9585
  $this->add_submenu_item(
9586
+ $this->get_text_inline( 'Contact Us', 'contact-us' ),
9587
  array( &$this, '_contact_page_render' ),
9588
+ $this->get_plugin_name() . ' &ndash; ' . $this->get_text_inline( 'Contact Us', 'contact-us' ),
9589
  'manage_options',
9590
  'contact',
9591
  'Freemius::_clean_admin_content_section',
9595
 
9596
  if ( $this->has_addons() ) {
9597
  $this->add_submenu_item(
9598
+ $this->get_text_inline( 'Add-Ons', 'add-ons' ),
9599
  array( &$this, '_addons_page_render' ),
9600
+ $this->get_plugin_name() . ' &ndash; ' . $this->get_text_inline( 'Add-Ons', 'add-ons' ),
9601
  'manage_options',
9602
  'addons',
9603
  array( &$this, '_addons_page_load' ),
9611
  $this->is_pricing_page_visible()
9612
  );
9613
 
9614
+ $pricing_cta_text = $this->get_pricing_cta_label();
9615
  $pricing_class = 'upgrade-mode';
9616
  if ( $show_pricing ) {
9617
  if ( $this->is_in_trial_promotion() &&
9626
 
9627
  // Add upgrade/pricing page.
9628
  $this->add_submenu_item(
9629
+ $pricing_cta_text . '&nbsp;&nbsp;' . ( is_rtl() ? '&#x2190;' : '&#x27a4;' ),
9630
  array( &$this, '_pricing_page_render' ),
9631
+ $this->get_plugin_name() . ' &ndash; ' . $this->get_text_x_inline( 'Pricing', 'noun', 'pricing' ),
9632
  'manage_options',
9633
  'pricing',
9634
  'Freemius::_clean_admin_content_section',
9808
 
9809
  if ( ! $this->is_activation_mode() ) {
9810
  $this->add_submenu_link_item(
9811
+ $this->apply_filters( 'support_forum_submenu', $this->get_text_inline( 'Support Forum', 'support-forum' ) ),
9812
  $this->get_support_forum_url(),
9813
  'wp-support-forum',
9814
  null,
10320
  $encrypted_site = clone $this->_site;
10321
  $encrypted_site->plan = self::_encrypt_entity( $this->_site->plan );
10322
 
10323
+ $sites = self::get_all_sites( $this->_module_type );
10324
+
10325
+ if ( empty( $this->_storage->prev_user_id ) && $this->_user->id != $this->_site->user_id ) {
10326
+ /**
10327
+ * Store the current user ID as the previous user ID so that the previous user can be used
10328
+ * as the install's owner while the new owner's details are not yet available.
10329
+ *
10330
+ * This will be executed only in the `replica` site. For example, there are 2 sites, namely `original`
10331
+ * and `replica`, then an ownership change was initiated and completed in the `original`, the `replica`
10332
+ * will be using the previous user until it is updated again (e.g.: until the next clone of `original`
10333
+ * into `replica`.
10334
+ *
10335
+ * @author Leo Fajardo (@leorw)
10336
+ */
10337
+ $this->_storage->prev_user_id = $sites[ $this->_slug ]->user_id;
10338
+ }
10339
+
10340
  $sites[ $this->_slug ] = $encrypted_site;
10341
 
10342
  $this->set_account_option( 'sites', $sites, $store );
10548
  $this->do_action( 'account_email_verified', $user->email );
10549
 
10550
  $this->_admin_notices->add(
10551
+ $this->get_text_inline( 'Your email has been successfully verified - you are AWESOME!', 'email-verified-message' ),
10552
+ $this->get_text_x_inline( 'Right on', 'a positive response', 'right-on' ) . '!',
10553
  'success',
10554
  // Make admin sticky if account menu item is invisible,
10555
  // since the page will be auto redirected to the plugin's
10681
  * @return FS_Plugin_Plan[]|object
10682
  */
10683
  private function _fetch_plugin_plans() {
10684
+ $this->_logger->entrance();
10685
+ $api = $this->get_api_site_scope();
10686
 
10687
+ /**
10688
+ * @since 1.2.3 When running in DEV mode, retrieve pending plans as well.
10689
+ */
10690
+ $result = $api->get( '/plans.json?show_pending=' . ( $this->has_secret_key() ? 'true' : 'false' ), true );
10691
 
10692
+ if ( $this->is_api_result_object( $result, 'plans' ) && is_array( $result->plans ) ) {
10693
+ for ( $i = 0, $len = count( $result->plans ); $i < $len; $i ++ ) {
10694
+ $result->plans[ $i ] = new FS_Plugin_Plan( $result->plans[ $i ] );
10695
+ }
10696
 
10697
+ $result = $result->plans;
10698
+ }
10699
 
10700
+ return $result;
10701
+ }
10702
 
10703
  /**
10704
  * @author Vova Feldman (@svovaf)
11083
  }
11084
 
11085
  $this->_admin_notices->add_sticky(
11086
+ sprintf(
11087
+ ( FS_Plan_Manager::instance()->has_free_plan( $plans ) ?
11088
+ $this->get_text_inline( 'Your %s Add-on plan was successfully upgraded.', 'addon-successfully-upgraded-message' ) :
11089
+ /* translators: %s:product name, e.g. Facebook add-on was successfully... */
11090
+ $this->get_text_inline( '%s Add-on was successfully purchased.', 'addon-successfully-purchased-message' ) ),
11091
+ $addon->title
11092
+ ) . ' ' . $this->get_latest_download_link(
11093
+ $this->get_text_inline( 'Download the latest version', 'download-latest-version' ),
11094
+ $addon_id
11095
+ ),
 
 
 
 
 
 
11096
  'addon_plan_upgraded_' . $addon->slug,
11097
+ $this->get_text_x_inline( 'Yee-haw', 'interjection expressing joy or exuberance', 'yee-haw' ) . '!'
11098
  );
11099
  }
11100
  }
11139
  if ( ! self::$_global_admin_notices->has_sticky( 'api_blocked' ) ) {
11140
  self::$_global_admin_notices->add(
11141
  sprintf(
11142
+ $this->get_text_x_inline( 'Your server is blocking the access to Freemius\' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s', '%1s - plugin title, %2s - API domain', 'server-blocking-access' ),
11143
  $this->get_plugin_name(),
11144
  '<a href="' . $api->get_url() . '" target="_blank">' . $api->get_url() . '</a>'
11145
+ ) . '<br> ' . $this->get_text_inline( 'Error received from the server:', 'server-error-message' ) . var_export( $site->error, true ),
11146
+ $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...',
11147
  'error',
11148
  $background,
11149
  false,
11153
  } else {
11154
  // Authentication params are broken.
11155
  $this->_admin_notices->add(
11156
+ $this->get_text_inline( 'It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again.', 'wrong-authentication-param-message' ),
11157
+ $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...',
11158
  'error'
11159
  );
11160
  }
11270
  }
11271
  }
11272
 
11273
+ $hmm_text = $this->get_text_x_inline( 'Hmm', 'something somebody says when they are thinking about what you have just said.', 'hmm' ) . '...';
11274
+
11275
  if ( $this->has_paid_plan() ) {
11276
  switch ( $plan_change ) {
11277
  case 'none':
11283
  if ( $plan->is_free() ) {
11284
  $this->_admin_notices->add(
11285
  sprintf(
11286
+ $this->get_text_inline( '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.', 'plan-did-not-change-message' ),
11287
+ '<i><b>' . $plan->title . ( $this->is_trial() ? ' ' . $this->get_text_x_inline( 'Trial', 'trial period', 'trial' ) : '' ) . '</b></i>'
11288
  ) . ' ' . sprintf(
11289
  '<a href="%s">%s</a>',
11290
  $this->contact_url(
11291
  'bug',
11292
+ sprintf( $this->get_text_inline( 'I have upgraded my account but when I try to Sync the License, the plan remains %s.', 'plan-did-not-change-email-message' ),
11293
  strtoupper( $plan->name )
11294
  )
11295
  ),
11296
+ $this->get_text_inline( 'Please contact us here', 'contact-us-here' )
11297
  ),
11298
+ $hmm_text
11299
  );
11300
  }
11301
  }
11303
  case 'upgraded':
11304
  $this->_admin_notices->add_sticky(
11305
  sprintf(
11306
+ $this->get_text_inline( 'Your plan was successfully upgraded.', 'plan-upgraded-message' ),
11307
  '<i>' . $this->get_plugin_name() . '</i>'
11308
  ) . $this->get_complete_upgrade_instructions(),
11309
  'plan_upgraded',
11310
+ $this->get_text_x_inline( 'Yee-haw', 'interjection expressing joy or exuberance', 'yee-haw' ) . '!'
11311
  );
11312
 
11313
  $this->_admin_notices->remove_sticky( array(
11320
  case 'changed':
11321
  $this->_admin_notices->add_sticky(
11322
  sprintf(
11323
+ $this->get_text_inline( 'Your plan was successfully changed to %s.', 'plan-changed-to-x-message' ),
11324
  $this->_site->plan->title
11325
  ),
11326
  'plan_changed'
11335
  break;
11336
  case 'downgraded':
11337
  $this->_admin_notices->add_sticky(
11338
+ sprintf( $this->get_text_inline( 'Your license has expired. You can still continue using the free %s forever.', 'license-expired-blocking-message' ), $this->_module_type ),
11339
  'license_expired',
11340
+ $hmm_text
11341
  );
11342
  $this->_admin_notices->remove_sticky( 'plan_upgraded' );
11343
  break;
11344
  case 'cancelled':
11345
  $this->_admin_notices->add(
11346
+ $this->get_text_inline( 'Your license has been cancelled. If you think it\'s a mistake, please contact support.', 'license-cancelled' ) . ' ' .
11347
  sprintf(
11348
  '<a href="%s">%s</a>',
11349
  $this->contact_url( 'bug' ),
11350
+ $this->get_text_inline( 'Please contact us here', 'contact-us-here' )
11351
  ),
11352
+ $hmm_text,
11353
  'error'
11354
  );
11355
  $this->_admin_notices->remove_sticky( 'plan_upgraded' );
11356
  break;
11357
  case 'expired':
11358
  $this->_admin_notices->add_sticky(
11359
+ sprintf( $this->get_text_inline( '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.', 'license-expired-non-blocking-message' ), $this->_site->plan->title ),
11360
  'license_expired',
11361
+ $hmm_text
11362
  );
11363
  $this->_admin_notices->remove_sticky( 'plan_upgraded' );
11364
  break;
11365
  case 'trial_started':
11366
  $this->_admin_notices->add_sticky(
11367
  sprintf(
11368
+ $this->get_text_inline( 'Your trial has been successfully started.', 'trial-started-message' ),
11369
  '<i>' . $this->get_plugin_name() . '</i>'
11370
  ) . $this->get_complete_upgrade_instructions( $this->_storage->trial_plan->title ),
11371
  'trial_started',
11372
+ $this->get_text_x_inline( 'Yee-haw', 'interjection expressing joy or exuberance', 'yee-haw' ) . '!'
11373
  );
11374
 
11375
  $this->_admin_notices->remove_sticky( array(
11378
  break;
11379
  case 'trial_expired':
11380
  $this->_admin_notices->add_sticky(
11381
+ $this->get_text_inline( 'Your trial has expired. You can still continue using all our free features.', 'trial-expired-message' ),
11382
  'trial_expired',
11383
+ $hmm_text
11384
  );
11385
  $this->_admin_notices->remove_sticky( array(
11386
  'trial_started',
11448
  if ( ! $background ) {
11449
  $this->_admin_notices->add( sprintf(
11450
  '%s %s',
11451
+ $this->get_text_inline( 'It looks like the license could not be activated.', 'license-activation-failed-message' ),
11452
  ( is_object( $license ) && isset( $license->error ) ?
11453
  $license->error->message :
11454
  sprintf( '%s<br><code>%s</code>',
11455
+ $this->get_text_inline( 'Error received from the server:', 'server-error-message' ),
11456
  var_export( $license, true )
11457
  )
11458
  )
11459
  ),
11460
+ $this->get_text_x_inline( 'Hmm', 'something somebody says when they are thinking about what you have just said.', 'hmm' ) . '...',
11461
  'error'
11462
  );
11463
  }
11464
 
11465
  return;
11466
  }
 
11467
  $premium_license = new FS_Plugin_License( $license );
11468
 
11469
  // Updated site plan.
11478
 
11479
  if ( ! $background ) {
11480
  $this->_admin_notices->add_sticky(
11481
+ $this->get_text_inline( 'Your license was successfully activated.', 'license-activated-message' ) .
11482
  $this->get_complete_upgrade_instructions(),
11483
  'license_activated',
11484
+ $this->get_text_x_inline( 'Yee-haw', 'interjection expressing joy or exuberance', 'yee-haw' ) . '!'
11485
  );
11486
  }
11487
 
11500
  protected function _deactivate_license( $show_notice = true ) {
11501
  $this->_logger->entrance();
11502
 
11503
+ $hmm_text = $this->get_text_x_inline( 'Hmm', 'something somebody says when they are thinking about what you have just said.', 'hmm' ) . '...';
11504
+
11505
  if ( ! is_object( $this->_license ) ) {
11506
  $this->_admin_notices->add(
11507
+ sprintf( $this->get_text_inline( 'It looks like your site currently doesn\'t have an active license.', 'no-active-license-message' ), $this->_site->plan->title ),
11508
+ $hmm_text
11509
  );
11510
 
11511
  return;
11516
 
11517
  if ( isset( $license->error ) ) {
11518
  $this->_admin_notices->add(
11519
+ $this->get_text_inline( 'It looks like the license deactivation failed.', 'license-deactivation-failed-message' ) . '<br> ' .
11520
+ $this->get_text_inline( 'Error received from the server:', 'server-error-message' ) . ' ' . var_export( $license->error, true ),
11521
+ $hmm_text,
11522
  'error'
11523
  );
11524
 
11543
 
11544
  if ( $show_notice ) {
11545
  $this->_admin_notices->add(
11546
+ sprintf( $this->get_text_inline( 'Your license was successfully deactivated, you are back to the %s plan.', 'license-deactivation-message' ), $this->_site->plan->title ),
11547
+ $this->get_text_inline( 'O.K', 'ok' )
11548
  );
11549
  }
11550
 
11592
  $this->_admin_notices->remove_sticky( 'plan_upgraded' );
11593
 
11594
  $this->_admin_notices->add(
11595
+ sprintf( $this->get_text_inline( 'Your plan was successfully downgraded. Your %s plan license will expire in %s.', 'plan-x-downgraded-message' ),
11596
  $plan->title,
11597
  human_time_diff( time(), strtotime( $this->_license->expiration ) )
11598
  )
11602
  $this->_store_site();
11603
  } else {
11604
  $this->_admin_notices->add(
11605
+ $this->get_text_inline( 'Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes.', 'plan-downgraded-failure-message' ),
11606
+ $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...',
11607
  'error'
11608
  );
11609
  }
11620
  function start_trial( $plan_name = false ) {
11621
  $this->_logger->entrance();
11622
 
11623
+ // Alias.
11624
+ $oops_text = $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...';
11625
+
11626
  if ( $this->is_trial() ) {
11627
  // Already in trial mode.
11628
  $this->_admin_notices->add(
11629
+ sprintf( $this->get_text_inline( 'You are already running the %s in a trial mode.', 'in-trial-mode' ), $this->_module_type ),
11630
+ $oops_text,
11631
  'error'
11632
  );
11633
 
11637
  if ( $this->_site->is_trial_utilized() ) {
11638
  // Trial was already utilized.
11639
  $this->_admin_notices->add(
11640
+ $this->get_text_inline( 'You already utilized a trial before.', 'trial-utilized' ),
11641
+ $oops_text,
11642
  'error'
11643
  );
11644
 
11651
  if ( false === $plan ) {
11652
  // Plan doesn't exist.
11653
  $this->_admin_notices->add(
11654
+ sprintf( $this->get_text_inline( 'Plan %s do not exist, therefore, can\'t start a trial.', 'trial-plan-x-not-exist' ), $plan_name ),
11655
+ $oops_text,
11656
  'error'
11657
  );
11658
 
11662
  if ( ! $plan->has_trial() ) {
11663
  // Plan doesn't exist.
11664
  $this->_admin_notices->add(
11665
+ sprintf( $this->get_text_inline( 'Plan %s does not support a trial period.', 'plan-x-no-trial' ), $plan_name ),
11666
+ $oops_text,
11667
  'error'
11668
  );
11669
 
11673
  if ( ! $this->has_trial_plan() ) {
11674
  // None of the plans have a trial.
11675
  $this->_admin_notices->add(
11676
+ sprintf( $this->get_text_inline( 'None of the %s\'s plans supports a trial period.', 'no-trials' ), $this->_module_type ),
11677
+ $oops_text,
11678
  'error'
11679
  );
11680
 
11692
  if ( ! $this->is_api_result_entity( $plan ) ) {
11693
  // Some API error while trying to start the trial.
11694
  $this->_admin_notices->add(
11695
+ sprintf( $this->get_text_inline( 'Unexpected API error. Please contact the %s\'s author with the following error.', 'unexpected-api-error' ), $this->_module_type )
11696
  . ' ' . var_export( $plan, true ),
11697
+ $oops_text,
11698
  'error'
11699
  );
11700
 
11718
  private function _cancel_trial() {
11719
  $this->_logger->entrance();
11720
 
11721
+ // Alias.
11722
+ $oops_text = $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...';
11723
+
11724
  if ( ! $this->is_trial() ) {
11725
  $this->_admin_notices->add(
11726
+ $this->get_text_inline( 'It looks like you are not in trial mode anymore so there\'s nothing to cancel :)', 'trial-cancel-no-trial-message' ),
11727
+ $oops_text,
11728
  'error'
11729
  );
11730
 
11774
  ! $this->deactivate_premium_only_addon_without_license( true )
11775
  ) {
11776
  $this->_admin_notices->add(
11777
+ sprintf( $this->get_text_inline( 'Your %s free trial was successfully cancelled.', 'trial-cancel-message' ), $this->_storage->trial_plan->title )
11778
  );
11779
  }
11780
 
11782
  unset( $this->_storage->trial_plan );
11783
  } else {
11784
  $this->_admin_notices->add(
11785
+ $this->get_text_inline( 'Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes.', 'trial-cancel-failure-message' ),
11786
+ $oops_text,
11787
  'error'
11788
  );
11789
  }
12020
  if ( ! $background ) {
12021
  $this->_admin_notices->add(
12022
  sprintf(
12023
+ /* translators: %s: Numeric version number (e.g. '2.1.9' */
12024
+ $this->get_text_inline( 'Version %s was released.', 'version-x-released' ) . ' ' . $this->get_text_inline( 'Please download %s.', 'please-download-x' ),
12025
  $update->version,
12026
  sprintf(
12027
  '<a href="%s" target="_blank">%s</a>',
12028
  $this->get_account_url( 'download_latest' ),
12029
+ sprintf(
12030
+ /* translators: %s: plan name (e.g. latest "Professional" version) */
12031
+ $this->get_text_inline( 'the latest %s version here', 'latest-x-version' ),
12032
+ $this->_site->plan->title
12033
+ )
12034
  )
12035
  ),
12036
+ $this->get_text_inline( 'New', 'new' ) . '!'
12037
  );
12038
  }
12039
  } else if ( false === $new_version && ! $background ) {
12040
  $this->_admin_notices->add(
12041
+ $this->get_text_inline( 'Seems like you got the latest release.', 'you-have-latest' ),
12042
+ $this->get_text_inline( 'You are all good!', 'you-are-good' )
12043
  );
12044
  }
12045
 
12305
 
12306
  if ( ! isset( $result->error ) ) {
12307
  $this->_admin_notices->add( sprintf(
12308
+ $this->get_text_inline( 'Verification mail was just sent to %s. If you can\'t find it after 5 min, please check your spam box.', 'verification-email-sent-message' ),
12309
  sprintf( '<a href="mailto:%1s">%2s</a>', esc_url( $this->_user->email ), $this->_user->email )
12310
  ) );
12311
  } else {
12393
  $plugin_id = fs_request_get( 'plugin_id', $this->get_id() );
12394
  $action = fs_get_action();
12395
 
12396
+ // Alias.
12397
+ $oops_text = $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...';
12398
+
12399
  switch ( $action ) {
12400
  case 'delete_account':
12401
  check_admin_referer( $action );
12450
 
12451
  if ( $plugin_id == $this->get_id() ) {
12452
  $this->_deactivate_license();
12453
+
12454
+ if ( $this->is_only_premium() ) {
12455
+ // Clear user and site.
12456
+ $this->_site = null;
12457
+ $this->_user = null;
12458
+
12459
+ fs_redirect( $this->get_activation_url() );
12460
+ }
12461
  } else {
12462
  if ( $this->is_addon_activated( $plugin_id ) ) {
12463
  $fs_addon = self::get_instance_by_id( $plugin_id );
12480
  $candidate_email = fs_request_get( 'candidate_email', '' );
12481
 
12482
  if ( $this->init_change_owner( $candidate_email ) ) {
12483
+ $this->_admin_notices->add( sprintf( $this->get_text_inline( '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.', 'change-owner-request-sent-x' ), '<b>' . $this->_user->email . '</b>' ) );
12484
  }
12485
  break;
12486
  case 'owner_confirmed':
12487
  $candidate_email = fs_request_get( 'candidate_email', '' );
12488
 
12489
+ $this->_admin_notices->add( sprintf( $this->get_text_inline( 'Thanks for confirming the ownership change. An email was just sent to %s for final approval.', 'change-owner-request_owner-confirmed' ), '<b>' . $candidate_email . '</b>' ) );
12490
  break;
12491
  case 'candidate_confirmed':
12492
  if ( $this->complete_change_owner() ) {
12493
  $this->_admin_notices->add_sticky(
12494
+ sprintf( $this->get_text_inline( '%s is the new owner of the account.', 'change-owner-request_candidate-confirmed' ), '<b>' . $this->_user->email . '</b>' ),
12495
  'ownership_changed',
12496
+ $this->get_text_x_inline( 'Congrats', 'as congratulations', 'congrats' ) . '!'
12497
  );
12498
  } else {
12499
  // @todo Handle failed ownership change message.
12513
  switch ( $result->error->code ) {
12514
  case 'user_exist':
12515
  $this->_admin_notices->add(
12516
+ $this->get_text_inline( 'Sorry, we could not complete the email update. Another user with the same email is already registered.', 'user-exist-message' ) . ' ' .
12517
+ sprintf( $this->get_text_inline( 'If you would like to give up the ownership of the %s\'s account to %s click the Change Ownership button.', 'user-exist-message_ownership' ), $this->_module_type, '<b>' . $new_email . '</b>' ) .
12518
  sprintf(
12519
  '<a style="margin-left: 10px;" href="%s"><button class="button button-primary">%s &nbsp;&#10140;</button></a>',
12520
  $this->get_account_url( 'change_owner', array(
12521
  'state' => 'init',
12522
  'candidate_email' => $new_email
12523
  ) ),
12524
+ $this->get_text_inline( 'Change Ownership', 'change-ownership' )
12525
  ),
12526
+ $oops_text,
12527
  'error'
12528
  );
12529
  break;
12530
  }
12531
  } else {
12532
+ $this->_admin_notices->add( $this->get_text_inline( 'Your email was successfully updated. You should receive an email with confirmation instructions in few moments.', 'email-updated-message' ) );
12533
  }
12534
 
12535
  return;
12541
 
12542
  if ( isset( $result->error ) ) {
12543
  $this->_admin_notices->add(
12544
+ $this->get_text_inline( 'Please provide your full name.', 'name-update-failed-message' ),
12545
+ $oops_text,
12546
  'error'
12547
  );
12548
  } else {
12549
+ $this->_admin_notices->add( $this->get_text_inline( 'Your name was successfully updated.', 'name-updated-message' ) );
12550
  }
12551
 
12552
  return;
12606
  $this->do_action( 'account_property_edit', 'site', $site_property, $site_property_value );
12607
 
12608
  $this->_admin_notices->add( sprintf(
12609
+ /* translators: %s: User's account property (e.g. email address, name) */
12610
+ $this->get_text_inline( 'You have successfully updated your %s.', 'x-updated' ),
12611
+ '<b>' . str_replace( '_', ' ', $p ) . '</b>'
12612
+ ) );
12613
 
12614
  return;
12615
  }
12662
  $this->do_action( 'account_page_load_before_departure' );
12663
  }
12664
 
12665
+ /**
12666
+ * Renders the "Affiliation" page.
12667
+ *
12668
+ * @author Leo Fajardo (@leorw)
12669
+ * @since 1.2.3
12670
+ */
12671
+ function _affiliation_page_render() {
12672
+ $this->_logger->entrance();
12673
+
12674
+ fs_enqueue_local_style( 'fs_affiliation', '/admin/affiliation.css' );
12675
+
12676
+ $vars = array( 'id' => $this->_module_id );
12677
+ echo $this->apply_filters( "/forms/affiliation.php", fs_get_template( '/forms/affiliation.php', $vars ) );
12678
+ }
12679
+
12680
+
12681
  /**
12682
  * Render account page.
12683
  *
12688
  $this->_logger->entrance();
12689
 
12690
  $template = 'account.php';
12691
+ $vars = array( 'id' => $this->_module_id );
 
 
 
 
12692
 
12693
  /**
12694
  * Added filter to the template to allow developers wrapping the template
12745
 
12746
  if ( ! $this->is_registered() && $this->is_org_repo_compliant() ) {
12747
  $this->_admin_notices->add(
12748
+ sprintf( $this->get_text_inline( 'Just letting you know that the add-ons information of %s is being pulled from an external server.', 'addons-info-external-message' ), '<b>' . $this->get_plugin_name() . '</b>' ),
12749
+ $this->get_text_x_inline( 'Heads up', 'advance notice of something that will need attention.', 'heads-up' ),
12750
  'update-nag'
12751
  );
12752
  }
13064
  $trial_period = $this->_trial_days;
13065
  $require_payment = $this->_is_trial_require_payment;
13066
  $trial_url = $this->get_trial_url();
13067
+ $plans_string = strtolower( $this->get_text_inline( 'Awesome', 'awesome' ) );
13068
 
13069
  if ( $this->is_registered() ) {
13070
  // If opted-in, override trial with up to date data from API.
13104
  }
13105
 
13106
  $message = sprintf(
13107
+ $this->get_text_x_inline( 'Hey', 'exclamation', 'hey' ) . '! ' . $this->get_text_inline( 'How do you like %s so far? Test all our %s premium features with a %d-day free trial.', 'trial-x-promotion-message' ),
13108
  sprintf( '<b>%s</b>', $this->get_plugin_name() ),
13109
  $plans_string,
13110
  $trial_period
13112
 
13113
  // "No Credit-Card Required" or "No Commitment for N Days".
13114
  $cc_string = $require_payment ?
13115
+ sprintf( $this->get_text_inline( 'No commitment for %s days - cancel anytime!', 'no-commitment-for-x-days' ), $trial_period ) :
13116
+ $this->get_text_inline( 'No credit card required', 'no-cc-required' ) . '!';
13117
 
13118
 
13119
  // Start trial button.
13120
  $button = ' ' . sprintf(
13121
  '<a style="margin-left: 10px; vertical-align: super;" href="%s"><button class="button button-primary">%s &nbsp;&#10140;</button></a>',
13122
  $trial_url,
13123
+ $this->get_text_x_inline( 'Start free trial', 'call to action', 'start-free-trial' )
13124
  );
13125
 
13126
  $this->_admin_notices->add_sticky(
13135
  return true;
13136
  }
13137
 
13138
+ /**
13139
+ * Lets users/customers know that the product has an affiliate program.
13140
+ *
13141
+ * @author Leo Fajardo (@leorw)
13142
+ * @since 1.2.2.11
13143
+ *
13144
+ * @return bool Returns true if the notice has been added.
13145
+ */
13146
+ function _add_affiliate_program_notice() {
13147
+ if ( ! $this->is_user_admin() ) {
13148
+ return false;
13149
+ }
13150
+
13151
+ if ( ! $this->is_user_in_admin() ) {
13152
+ return false;
13153
+ }
13154
+
13155
+ // Check if the notice is already shown.
13156
+ if ( $this->_admin_notices->has_sticky( 'affiliate_program' ) ) {
13157
+ return false;
13158
+ }
13159
+
13160
+ if (
13161
+ // Product has no affiliate program.
13162
+ ! $this->has_affiliate_program() ||
13163
+ // User is already an affiliate.
13164
+ is_object( $this->affiliate ) ||
13165
+ // User has applied for an affiliate account.
13166
+ ! empty( $this->_storage->affiliate_application_data ) ) {
13167
+ return false;
13168
+ }
13169
+
13170
+ if ( ! $this->apply_filters( 'show_affiliate_program_notice', true ) ) {
13171
+ // Developer explicitly asked not to show the notice about the affiliate program.
13172
+ return false;
13173
+ }
13174
+
13175
+ if ( $this->is_activation_mode() || $this->is_pending_activation() ) {
13176
+ // If not yet opted in/skipped, or pending activation, don't show the notice.
13177
+ return false;
13178
+ }
13179
+
13180
+ $last_time_notice_was_shown = $this->_storage->get( 'affiliate_program_notice_shown', false );
13181
+ $was_notice_shown_before = ( false !== $last_time_notice_was_shown );
13182
+
13183
+ /**
13184
+ * Do not show the notice if it was already shown before or less than 30 days have passed since the initial
13185
+ * activation with FS.
13186
+ */
13187
+ if ( $was_notice_shown_before ||
13188
+ $this->_storage->install_timestamp > ( time() - ( WP_FS__TIME_24_HOURS_IN_SEC * 30 ) )
13189
+ ) {
13190
+ return false;
13191
+ }
13192
+
13193
+ if ( ! $this->is_paying() &&
13194
+ FS_Plugin::AFFILIATE_MODERATION_CUSTOMERS == $this->_plugin->affiliate_moderation ) {
13195
+ // If the user is not a customer and the affiliate program is only for customers, don't show the notice.
13196
+ return false;
13197
+ }
13198
+
13199
+ $message = sprintf(
13200
+ $this->get_text_inline( '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!', 'become-an-ambassador-admin-notice' ),
13201
+ sprintf( '<strong>%s</strong>', $this->get_plugin_name() ),
13202
+ $this->get_module_label( true )
13203
+ );
13204
+
13205
+ // HTML code for the "Learn more..." button.
13206
+ $button = ' ' . sprintf(
13207
+ '<a style="display: block; margin-top: 10px;" href="%s"><button class="button button-primary">%s &nbsp;&#10140;</button></a>',
13208
+ $this->_get_admin_page_url( 'affiliation' ),
13209
+ $this->get_text_inline( 'Learn more', 'learn-more' ) . '...'
13210
+ );
13211
+
13212
+ $this->_admin_notices->add_sticky(
13213
+ $this->apply_filters( 'affiliate_program_notice', "{$message} {$button}" ),
13214
+ 'affiliate_program',
13215
+ '',
13216
+ 'promotion'
13217
+ );
13218
+
13219
+ $this->_storage->affiliate_program_notice_shown = WP_FS__SCRIPT_START_TIME;
13220
+
13221
+ return true;
13222
+ }
13223
+
13224
  /**
13225
  * @author Vova Feldman (@svovaf)
13226
  * @since 1.2.1.5
13323
  if ( $this->is_registered() ) {
13324
  if ( ! $this->is_paying() && $this->has_paid_plan() ) {
13325
  $this->add_plugin_action_link(
13326
+ $this->get_text_inline( 'Upgrade', 'upgrade' ),
13327
  $this->get_upgrade_url(),
13328
  false,
13329
  7,
13333
 
13334
  if ( $this->has_addons() ) {
13335
  $this->add_plugin_action_link(
13336
+ $this->get_text_inline( 'Add-Ons', 'add-ons' ),
13337
  $this->_get_admin_page_url( 'addons' ),
13338
  false,
13339
  9,
13361
  add_action( 'admin_footer', array( &$this, '_add_license_activation_dialog_box' ) );
13362
  }
13363
 
13364
+ $link_text = $this->is_free_plan() ?
13365
+ $this->get_text_inline( 'Activate License', 'activate-license' ) :
13366
+ $this->get_text_inline( 'Change License', 'change-license' );
 
 
13367
 
13368
  $this->add_plugin_action_link(
13369
  $link_text,
13424
 
13425
  if ( $this->is_registered() ) {
13426
  if ( $this->is_tracking_allowed() ) {
13427
+ $link_text_id = $this->get_text_inline( 'Opt Out', 'opt-out' );
13428
  } else {
13429
+ $link_text_id = $this->get_text_inline( 'Opt In', 'opt-in' );
13430
  }
13431
 
13432
  add_action( 'admin_footer', array( &$this, '_add_optout_dialog' ) );
13433
  } else {
13434
+ $link_text_id = $this->get_text_inline( 'Opt In', 'opt-in' );
13435
 
13436
  $params = ! $this->is_anonymous() ?
13437
  array() :
13445
 
13446
  if ( $this->is_plugin() && self::is_plugins_page() ) {
13447
  $this->add_plugin_action_link(
13448
+ $link_text_id,
13449
  $url,
13450
  false,
13451
  13,
13614
 
13615
  // @since 1.2.1.5 The free version is auto deactivated.
13616
  $deactivation_step = version_compare( $this->version, '1.2.1.5', '<' ) ?
13617
+ ( '<li>' . $this->esc_html_inline( 'Deactivate the free version', 'deactivate-free-version' ) . '.</li>' ) :
13618
  '';
13619
 
13620
  return sprintf(
13621
  ' %s: <ol><li>%s.</li>%s<li>%s (<a href="%s" target="_blank">%s</a>).</li></ol>',
13622
+ $this->get_text_inline( 'Please follow these steps to complete the upgrade', 'follow-steps-to-complete-upgrade' ),
13623
  $this->get_latest_download_link( sprintf(
13624
+ /* translators: %s: Plan title */
13625
+ $this->get_text_inline( 'Download the latest %s version', 'download-latest-x-version' ),
13626
  $plan_title
13627
  ) ),
13628
  $deactivation_step,
13629
+ $this->get_text_inline( 'Upload and activate the downloaded version', 'upload-and-activate' ),
13630
  '//bit.ly/upload-wp-' . $this->_module_type . 's',
13631
+ $this->get_text_inline( 'How to upload and activate?', 'howto-upload-activate' )
13632
  );
13633
  }
13634
 
13644
  return fs_text( $key, $this->_slug );
13645
  }
13646
 
13647
+ /**
13648
+ * @author Vova Feldman (@svovaf)
13649
+ * @since 1.2.3
13650
+ *
13651
+ * @param string $text Translatable string.
13652
+ * @param string $key String key for overrides.
13653
+ *
13654
+ * @return string
13655
+ */
13656
+ function get_text_inline( $text, $key = '' ) {
13657
+ return _fs_text_inline( $text, $key, $this->_slug );
13658
+ }
13659
+
13660
+ /**
13661
+ * @author Vova Feldman (@svovaf)
13662
+ * @since 1.2.3
13663
+ *
13664
+ * @param string $text Translatable string.
13665
+ * @param string $context Context information for the translators.
13666
+ * @param string $key String key for overrides.
13667
+ *
13668
+ * @return string
13669
+ */
13670
+ function get_text_x_inline( $text, $context, $key ) {
13671
+ return _fs_text_x_inline( $text, $context, $key, $this->_slug );
13672
+ }
13673
+
13674
+ /**
13675
+ * @author Vova Feldman (@svovaf)
13676
+ * @since 1.2.3
13677
+ *
13678
+ * @param string $text Translatable string.
13679
+ * @param string $key String key for overrides.
13680
+ *
13681
+ * @return string
13682
+ */
13683
+ function esc_html_inline( $text, $key ) {
13684
+ return esc_html( _fs_text_inline( $text, $key, $this->_slug ) );
13685
+ }
13686
+
13687
  #----------------------------------------------------------------------------------
13688
  #region Versioning
13689
  #----------------------------------------------------------------------------------
13787
  if ( ! $this->is_registered() ) {
13788
  // Not registered.
13789
  self::shoot_ajax_failure( array(
13790
+ 'message' => $this->get_text_inline( 'Auto installation only works for opted-in users.', 'auto-install-error-not-opted-in' ),
13791
  'code' => 'premium_installed',
13792
  ) );
13793
  }
13797
  if ( ! FS_Plugin::is_valid_id( $plugin_id ) ) {
13798
  // Invalid ID.
13799
  self::shoot_ajax_failure( array(
13800
+ 'message' => $this->get_text_inline( 'Invalid module ID.', 'auto-install-error-invalid-id' ),
13801
  'code' => 'invalid_module_id',
13802
  ) );
13803
  }
13806
  if ( $this->is_premium() ) {
13807
  // Already using the premium code version.
13808
  self::shoot_ajax_failure( array(
13809
+ 'message' => $this->get_text_inline( 'Premium version already active.', 'auto-install-error-premium-activated' ),
13810
  'code' => 'premium_installed',
13811
  ) );
13812
  }
13813
  if ( ! $this->can_use_premium_code() ) {
13814
  // Don't have access to the premium code.
13815
  self::shoot_ajax_failure( array(
13816
+ 'message' => $this->get_text_inline( 'You do not have a valid license to access the premium version.', 'auto-install-error-invalid-license' ),
13817
  'code' => 'invalid_license',
13818
  ) );
13819
  }
13820
  if ( ! $this->has_release_on_freemius() ) {
13821
  // Plugin is a serviceware, no premium code version.
13822
  self::shoot_ajax_failure( array(
13823
+ 'message' => $this->get_text_inline( 'Plugin is a "Serviceware" which means it does not have a premium code version.', 'auto-install-error-serviceware' ),
13824
  'code' => 'premium_version_missing',
13825
  ) );
13826
  }
13830
  if ( ! is_object( $addon ) ) {
13831
  // Invalid add-on ID.
13832
  self::shoot_ajax_failure( array(
13833
+ 'message' => $this->get_text_inline( 'Invalid module ID.', 'auto-install-error-invalid-id' ),
13834
  'code' => 'invalid_module_id',
13835
  ) );
13836
  }
13838
  if ( $this->is_addon_activated( $plugin_id, true ) ) {
13839
  // Premium add-on version is already activated.
13840
  self::shoot_ajax_failure( array(
13841
+ 'message' => $this->get_text_inline( 'Premium add-on version already installed.', 'auto-install-error-premium-addon-activated' ),
13842
  'code' => 'premium_installed',
13843
  ) );
13844
  }
14183
  require_once WP_FS__DIR_INCLUDES . '/customizer/class-fs-customizer-upsell-control.php';
14184
 
14185
  $customizer->add_section( 'freemius_upsell', array(
14186
+ 'title' => '&#9733; ' . $this->get_text_inline( 'View paid features', 'view-paid-features' ),
14187
  'priority' => 1,
14188
  ) );
14189
  $customizer->add_setting( 'freemius_upsell', array(
14301
  }
14302
 
14303
  #endregion
14304
+ }
freemius/includes/class-fs-plugin-updater.php CHANGED
@@ -128,7 +128,7 @@
128
  $plugin_update_row = preg_replace(
129
  '/(\<div.+>)(.+)(\<a.+\<a.+)\<\/div\>/is',
130
  '$1 $2 ' . sprintf(
131
- $this->_fs->get_text( 'renew-license-now' ),
132
  '<a href="' . $this->_fs->pricing_url() . '">', '</a>',
133
  $r->new_version ) .
134
  '$4',
@@ -355,7 +355,7 @@ if ( !isset($info->error) ) {
355
  $data->version = $this->_fs->get_plugin_version();
356
  } else {
357
  if ( $is_addon ) {
358
- $data->name = $addon->title . ' ' . $this->_fs->get_text( 'addon' );
359
  $data->slug = $addon->slug;
360
  $data->url = WP_FS__ADDRESS;
361
  $data->package = $new_version->url;
@@ -487,7 +487,7 @@ if ( !isset($info->error) ) {
487
  if ( ! empty( $plugin_id ) && ! FS_Plugin::is_valid_id( $plugin_id ) ) {
488
  // Invalid plugin ID.
489
  return array(
490
- 'message' => $this->_fs->get_text( 'auto-install-error-invalid-id' ),
491
  'code' => 'invalid_module_id',
492
  );
493
  }
@@ -501,29 +501,27 @@ if ( !isset($info->error) ) {
501
  if ( ! is_object( $addon ) ) {
502
  // Invalid add-on ID.
503
  return array(
504
- 'message' => $this->_fs->get_text( 'auto-install-error-invalid-id' ),
505
  'code' => 'invalid_module_id',
506
  );
507
  }
508
 
509
  $slug = $addon->slug;
510
- $title = $addon->title . ' ' . $this->_fs->get_text( 'addon' );
511
 
512
  $is_addon = true;
513
  } else {
514
  $slug = $this->_fs->get_slug();
515
  $title = $this->_fs->get_plugin_title() .
516
- ( $this->_fs->is_addon() ? ' ' . $this->_fs->get_text( 'addon' ) : '' );
517
  }
518
 
519
  if ( $this->is_premium_plugin_active( $plugin_id ) ) {
520
  // Premium version already activated.
521
  return array(
522
- 'message' => $this->_fs->get_text(
523
- $is_addon ?
524
- 'auto-install-error-premium-addon-activated' :
525
- 'auto-install-error-premium-activated'
526
- ),
527
  'code' => 'premium_installed',
528
  );
529
  }
@@ -552,7 +550,7 @@ if ( !isset($info->error) ) {
552
 
553
  $skin_args = array(
554
  'type' => 'web',
555
- 'title' => sprintf( $this->_fs->get_text( 'installing-plugin-x' ), $title ),
556
  'url' => esc_url_raw( $install_url ),
557
  'nonce' => 'install-plugin_' . $slug,
558
  'plugin' => '',
@@ -593,7 +591,7 @@ if ( !isset($info->error) ) {
593
  global $wp_filesystem;
594
 
595
  $error_code = 'unable_to_connect_to_filesystem';
596
- $error_message = $this->_fs->get_text( 'Unable to connect to the filesystem. Please confirm your credentials.' );
597
 
598
  // Pass through the error from WP_Filesystem if one was raised.
599
  if ( $wp_filesystem instanceof WP_Filesystem_Base &&
@@ -699,7 +697,7 @@ if ( !isset($info->error) ) {
699
  } else {
700
  return new WP_Error(
701
  'rename_failed',
702
- $this->_fs->get_text( 'module-package-rename-failure' ),
703
  array(
704
  'found' => $subdir_name,
705
  'expected' => $desired_slug
128
  $plugin_update_row = preg_replace(
129
  '/(\<div.+>)(.+)(\<a.+\<a.+)\<\/div\>/is',
130
  '$1 $2 ' . sprintf(
131
+ $this->_fs->get_text_inline( '%sRenew your license now%s to access version %s features and support.', 'renew-license-now' ),
132
  '<a href="' . $this->_fs->pricing_url() . '">', '</a>',
133
  $r->new_version ) .
134
  '$4',
355
  $data->version = $this->_fs->get_plugin_version();
356
  } else {
357
  if ( $is_addon ) {
358
+ $data->name = $addon->title . ' ' . $this->_fs->get_text_inline( 'Add-On', 'addon' );
359
  $data->slug = $addon->slug;
360
  $data->url = WP_FS__ADDRESS;
361
  $data->package = $new_version->url;
487
  if ( ! empty( $plugin_id ) && ! FS_Plugin::is_valid_id( $plugin_id ) ) {
488
  // Invalid plugin ID.
489
  return array(
490
+ 'message' => $this->_fs->get_text_inline( 'Invalid module ID.', 'auto-install-error-invalid-id' ),
491
  'code' => 'invalid_module_id',
492
  );
493
  }
501
  if ( ! is_object( $addon ) ) {
502
  // Invalid add-on ID.
503
  return array(
504
+ 'message' => $this->_fs->get_text_inline( 'Invalid module ID.', 'auto-install-error-invalid-id' ),
505
  'code' => 'invalid_module_id',
506
  );
507
  }
508
 
509
  $slug = $addon->slug;
510
+ $title = $addon->title . ' ' . $this->_fs->get_text_inline( 'Add-On', 'addon' );
511
 
512
  $is_addon = true;
513
  } else {
514
  $slug = $this->_fs->get_slug();
515
  $title = $this->_fs->get_plugin_title() .
516
+ ( $this->_fs->is_addon() ? ' ' . $this->_fs->get_text_inline( 'Add-On', 'addon' ) : '' );
517
  }
518
 
519
  if ( $this->is_premium_plugin_active( $plugin_id ) ) {
520
  // Premium version already activated.
521
  return array(
522
+ 'message' => $is_addon ?
523
+ $this->_fs->get_text_inline( 'Premium add-on version already installed.', 'auto-install-error-premium-addon-activated' ) :
524
+ $this->_fs->get_text_inline( 'Premium version already active.', 'auto-install-error-premium-activated' ),
 
 
525
  'code' => 'premium_installed',
526
  );
527
  }
550
 
551
  $skin_args = array(
552
  'type' => 'web',
553
+ 'title' => sprintf( $this->_fs->get_text_inline( 'Installing plugin: %s', 'installing-plugin-x' ), $title ),
554
  'url' => esc_url_raw( $install_url ),
555
  'nonce' => 'install-plugin_' . $slug,
556
  'plugin' => '',
591
  global $wp_filesystem;
592
 
593
  $error_code = 'unable_to_connect_to_filesystem';
594
+ $error_message = $this->_fs->get_text_inline( 'Unable to connect to the filesystem. Please confirm your credentials.' );
595
 
596
  // Pass through the error from WP_Filesystem if one was raised.
597
  if ( $wp_filesystem instanceof WP_Filesystem_Base &&
697
  } else {
698
  return new WP_Error(
699
  'rename_failed',
700
+ $this->_fs->get_text_inline( 'The remote plugin package does not contain a folder with the desired slug and renaming did not work.', 'module-package-rename-failure' ),
701
  array(
702
  'found' => $subdir_name,
703
  'expected' => $desired_slug
freemius/includes/customizer/class-fs-customizer-support-section.php CHANGED
@@ -52,19 +52,19 @@
52
  $json['theme_title'] = $this->fs->get_plugin_name();
53
 
54
  if ( $is_contact_visible && $is_support_visible ) {
55
- $json['theme_title'] .= ' ' . $this->fs->get_text( 'support' );
56
  }
57
 
58
  if ( $is_contact_visible ) {
59
  $json['contact'] = array(
60
- 'label' => $this->fs->get_text( 'contact-us' ),
61
  'url' => $this->fs->contact_url(),
62
  );
63
  }
64
 
65
  if ( $is_support_visible ) {
66
  $json['support'] = array(
67
- 'label' => $this->fs->get_text( 'support-forum' ),
68
  'url' => $this->fs->get_support_forum_url()
69
  );
70
  }
52
  $json['theme_title'] = $this->fs->get_plugin_name();
53
 
54
  if ( $is_contact_visible && $is_support_visible ) {
55
+ $json['theme_title'] .= ' ' . $this->fs->get_text_inline( 'Support', 'support' );
56
  }
57
 
58
  if ( $is_contact_visible ) {
59
  $json['contact'] = array(
60
+ 'label' => $this->fs->get_text_inline( 'Contact Us', 'contact-us' ),
61
  'url' => $this->fs->contact_url(),
62
  );
63
  }
64
 
65
  if ( $is_support_visible ) {
66
  $json['support'] = array(
67
+ 'label' => $this->fs->get_text_inline( 'Support Forum', 'support-forum' ),
68
  'url' => $this->fs->get_support_forum_url()
69
  );
70
  }
freemius/includes/customizer/class-fs-customizer-upsell-control.php CHANGED
@@ -49,7 +49,7 @@
49
  * Json conversion
50
  */
51
  public function to_json() {
52
- $pricing_cta = esc_html( $this->fs->get_text( $this->fs->get_pricing_cta_label() ) ) . '&nbsp;&nbsp;' . ( is_rtl() ? '&#x2190;' : '&#x27a4;' );
53
 
54
  parent::to_json();
55
 
@@ -103,7 +103,7 @@
103
  $this->json['plans'] = $pricing->plans;
104
 
105
  $this->json['strings'] = array(
106
- 'plan' => $this->fs->get_text( 'plan' ),
107
  );
108
  }
109
 
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
 
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
 
freemius/includes/customizer/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ // Hide file structure from users on unprotected servers.
freemius/includes/debug/class-fs-debug-bar-panel.php CHANGED
@@ -45,7 +45,7 @@
45
  $total_time += $l['total'];
46
  }
47
 
48
- return number_format( 100 * $total_time, 2 ) . ' ' . fs_text( 'ms' );
49
  }
50
 
51
  function render() {
45
  $total_time += $l['total'];
46
  }
47
 
48
+ return number_format( 100 * $total_time, 2 ) . ' ' . fs_text_x_inline( 'ms', 'milliseconds' );
49
  }
50
 
51
  function render() {
freemius/includes/debug/debug-bar-start.php CHANGED
@@ -38,8 +38,8 @@
38
  require_once dirname( __FILE__ ) . '/class-fs-debug-bar-panel.php';
39
  $statuses[] = array(
40
  'fs_api_requests',
41
- fs_text( 'Freemius API' ),
42
- Freemius_Debug_Bar_Panel::requests_count() . ' ' . fs_text( 'Requests' ) .
43
  ' (' . Freemius_Debug_Bar_Panel::total_time() . ')'
44
  );
45
  }
38
  require_once dirname( __FILE__ ) . '/class-fs-debug-bar-panel.php';
39
  $statuses[] = array(
40
  'fs_api_requests',
41
+ fs_text_inline( 'Freemius API' ),
42
+ Freemius_Debug_Bar_Panel::requests_count() . ' ' . fs_text_inline( 'Requests' ) .
43
  ' (' . Freemius_Debug_Bar_Panel::total_time() . ')'
44
  );
45
  }
freemius/includes/entities/class-fs-affiliate-terms.php ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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.3
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ class FS_AffiliateTerms extends FS_Scope_Entity {
14
+
15
+ #region Properties
16
+
17
+ /**
18
+ * @var bool
19
+ */
20
+ public $is_active;
21
+ /**
22
+ * @var string Enum: `affiliation` or `rewards`. Defaults to `affiliation`.
23
+ */
24
+ public $type;
25
+ /**
26
+ * @var string Enum: `payout` or `credit`. Defaults to `payout`.
27
+ */
28
+ public $reward_type;
29
+ /**
30
+ * If `first`, the referral will be attributed to the first visited source containing the affiliation link that
31
+ * was clicked.
32
+ *
33
+ * @var string Enum: `first` or `last`. Defaults to `first`.
34
+ */
35
+ public $referral_attribution;
36
+ /**
37
+ * @var int Defaults to `30`, `0` for session cookie, and `null` for endless cookie (until cookies are cleaned).
38
+ */
39
+ public $cookie_days;
40
+ /**
41
+ * @var int
42
+ */
43
+ public $commission;
44
+ /**
45
+ * @var string Enum: `percentage` or `dollar`. Defaults to `percentage`.
46
+ */
47
+ public $commission_type;
48
+ /**
49
+ * @var null|int Defaults to `0` (affiliate only on first payment). `null` for commission for all renewals. If
50
+ * greater than `0`, affiliate will get paid for all renewals for `commission_renewals_days` days after
51
+ * the initial upgrade/purchase.
52
+ */
53
+ public $commission_renewals_days;
54
+ /**
55
+ * @var int Only cents and no percentage. In US cents, e.g.: 100 = $1.00. Defaults to `null`.
56
+ */
57
+ public $install_commission;
58
+ /**
59
+ * @var string Required default target link, e.g.: pricing page.
60
+ */
61
+ public $default_url;
62
+ /**
63
+ * @var string One of the following: 'all', 'new_customer', 'new_user'.
64
+ * If 'all' - reward for any user type.
65
+ * If 'new_customer' - reward only for new customers.
66
+ * If 'new_user' - reward only for new users.
67
+ */
68
+ public $reward_customer_type;
69
+ /**
70
+ * @var int Defaults to `0` (affiliate only on directly affiliated links). `null` if an affiliate will get
71
+ * paid for all customers' lifetime payments. If greater than `0`, an affiliate will get paid for all
72
+ * customer payments for `future_payments_days` days after the initial payment.
73
+ */
74
+ public $future_payments_days;
75
+ /**
76
+ * @var bool If `true`, allow referrals from social sites.
77
+ */
78
+ public $is_social_allowed;
79
+ /**
80
+ * @var bool If `true`, allow conversions without HTTP referrer header at all.
81
+ */
82
+ public $is_app_allowed;
83
+ /**
84
+ * @var bool If `true`, allow referrals from any site.
85
+ */
86
+ public $is_any_site_allowed;
87
+
88
+ #endregion Properties
89
+
90
+ /**
91
+ * @author Leo Fajardo (@leorw)
92
+ *
93
+ * @return string
94
+ */
95
+ function get_formatted_commission()
96
+ {
97
+ return ( 'dollar' === $this->commission_type ) ?
98
+ ( '$' . $this->commission ) :
99
+ ( $this->commission . '%' );
100
+ }
101
+
102
+ /**
103
+ * @author Leo Fajardo (@leorw)
104
+ *
105
+ * @return bool
106
+ */
107
+ function has_lifetime_commission() {
108
+ return ( 0 !== $this->future_payments_days );
109
+ }
110
+
111
+ /**
112
+ * @author Leo Fajardo (@leorw)
113
+ *
114
+ * @return bool
115
+ */
116
+ function is_session_cookie() {
117
+ return ( 0 == $this->cookie_days );
118
+ }
119
+
120
+ /**
121
+ * @author Leo Fajardo (@leorw)
122
+ *
123
+ * @return bool
124
+ */
125
+ function has_renewals_commission() {
126
+ return ( is_null( $this->commission_renewals_days ) || $this->commission_renewals_days > 0 );
127
+ }
128
+ }
freemius/includes/entities/class-fs-affiliate.php ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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.3
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ class FS_Affiliate extends FS_Scope_Entity {
14
+
15
+ #region Properties
16
+
17
+ /**
18
+ * @var string
19
+ */
20
+ public $paypal_email;
21
+ /**
22
+ * @var number
23
+ */
24
+ public $custom_affiliate_terms_id;
25
+ /**
26
+ * @var boolean
27
+ */
28
+ public $is_using_custom_terms;
29
+ /**
30
+ * @var string status Enum: `pending`, `rejected`, `suspended`, or `active`. Defaults to `pending`.
31
+ */
32
+ public $status;
33
+ /**
34
+ * @var string
35
+ */
36
+ public $domain;
37
+
38
+ #endregion Properties
39
+
40
+ /**
41
+ * @author Leo Fajardo
42
+ *
43
+ * @return bool
44
+ */
45
+ function is_active() {
46
+ return ( 'active' === $this->status );
47
+ }
48
+
49
+ /**
50
+ * @author Leo Fajardo
51
+ *
52
+ * @return bool
53
+ */
54
+ function is_pending() {
55
+ return ( 'pending' === $this->status );
56
+ }
57
+
58
+ /**
59
+ * @author Leo Fajardo
60
+ *
61
+ * @return bool
62
+ */
63
+ function is_suspended() {
64
+ return ( 'suspended' === $this->status );
65
+ }
66
+
67
+ /**
68
+ * @author Leo Fajardo
69
+ *
70
+ * @return bool
71
+ */
72
+ function is_rejected() {
73
+ return ( 'rejected' === $this->status );
74
+ }
75
+
76
+ /**
77
+ * @author Leo Fajardo
78
+ *
79
+ * @return bool
80
+ */
81
+ function is_blocked() {
82
+ return ( 'blocked' === $this->status );
83
+ }
84
+ }
freemius/includes/entities/class-fs-entity.php CHANGED
@@ -42,9 +42,9 @@
42
  * @param bool|object $entity
43
  */
44
  function __construct( $entity = false ) {
45
- if ( ! ( $entity instanceof stdClass ) ) {
46
- return;
47
- }
48
 
49
  $props = fs_get_object_public_vars( $this );
50
 
42
  * @param bool|object $entity
43
  */
44
  function __construct( $entity = false ) {
45
+ if ( ! ( $entity instanceof stdClass ) && ! ( $entity instanceof FS_Entity ) ) {
46
+ return;
47
+ }
48
 
49
  $props = fs_get_object_public_vars( $this );
50
 
freemius/includes/entities/class-fs-plugin.php CHANGED
@@ -61,6 +61,17 @@
61
  * @var bool
62
  */
63
  public $is_live;
 
 
 
 
 
 
 
 
 
 
 
64
 
65
  #endregion Install Specific Properties
66
 
@@ -90,6 +101,16 @@
90
  return isset( $this->parent_plugin_id ) && is_numeric( $this->parent_plugin_id );
91
  }
92
 
 
 
 
 
 
 
 
 
 
 
93
  static function get_type() {
94
  return 'plugin';
95
  }
61
  * @var bool
62
  */
63
  public $is_live;
64
+ /**
65
+ * @author Leo Fajardo (@leorw)
66
+ *
67
+ * @since 1.2.3
68
+ *
69
+ * @var string|false false if the module doesn't have an affiliate program or one of the following:
70
+ * 'selected', 'customers', or 'all'.
71
+ */
72
+ public $affiliate_moderation;
73
+
74
+ const AFFILIATE_MODERATION_CUSTOMERS = 'customers';
75
 
76
  #endregion Install Specific Properties
77
 
101
  return isset( $this->parent_plugin_id ) && is_numeric( $this->parent_plugin_id );
102
  }
103
 
104
+ /**
105
+ * @author Leo Fajardo (@leorw)
106
+ * @since 1.2.3
107
+ *
108
+ * @return bool
109
+ */
110
+ function has_affiliate_program() {
111
+ return ( ! empty( $this->affiliate_moderation ) );
112
+ }
113
+
114
  static function get_type() {
115
  return 'plugin';
116
  }
freemius/includes/fs-core-functions.php CHANGED
@@ -1,333 +1,359 @@
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
- if ( ! function_exists( 'fs_dummy' ) ) {
14
- function fs_dummy() {
15
- }
16
- }
17
-
18
- /* Url.
19
- --------------------------------------------------------------------------------------------*/
20
- function fs_get_url_daily_cache_killer() {
21
- return date( '\YY\Mm\Dd' );
22
- }
23
-
24
- /* Templates / Views.
25
- --------------------------------------------------------------------------------------------*/
26
- if ( ! function_exists( 'fs_get_template_path' ) ) {
27
- function fs_get_template_path( $path ) {
28
- return WP_FS__DIR_TEMPLATES . '/' . trim( $path, '/' );
29
- }
30
-
31
- function fs_include_template( $path, &$params = null ) {
32
- $VARS = &$params;
33
- include fs_get_template_path( $path );
34
- }
35
-
36
- function fs_include_once_template( $path, &$params = null ) {
37
- $VARS = &$params;
38
- include_once fs_get_template_path( $path );
39
- }
40
-
41
- function fs_require_template( $path, &$params = null ) {
42
- $VARS = &$params;
43
- require fs_get_template_path( $path );
44
- }
45
-
46
- function fs_require_once_template( $path, &$params = null ) {
47
- $VARS = &$params;
48
- require_once fs_get_template_path( $path );
49
- }
50
-
51
- function fs_get_template( $path, &$params = null ) {
52
- ob_start();
53
-
54
- $VARS = &$params;
55
- require fs_get_template_path( $path );
56
-
57
- return ob_get_clean();
58
- }
59
- }
60
-
61
- /* Scripts and styles including.
62
- --------------------------------------------------------------------------------------------*/
63
-
64
- /**
65
- * Generates an absolute URL to the given path. This function ensures that the URL will be correct whether the asset
66
- * is inside a plugin's folder or a theme's folder.
67
- *
68
- * Examples:
69
- * 1. "themes" folder
70
- * Path: C:/xampp/htdocs/fswp/wp-content/themes/twentytwelve/freemius/assets/css/admin/common.css
71
- * URL: http://fswp:8080/wp-content/themes/twentytwelve/freemius/assets/css/admin/common.css
72
- *
73
- * 2. "plugins" folder
74
- * Path: C:/xampp/htdocs/fswp/wp-content/plugins/rating-widget-premium/freemius/assets/css/admin/common.css
75
- * URL: http://fswp:8080/wp-content/plugins/rating-widget-premium/freemius/assets/css/admin/common.css
76
- *
77
- * @author Leo Fajardo (@leorw)
78
- * @since 1.2.2
79
- *
80
- * @param string $asset_abs_path Asset's absolute path.
81
- *
82
- * @return string Asset's URL.
83
- */
84
- function fs_asset_url( $asset_abs_path ) {
85
- $wp_content_dir = fs_normalize_path( WP_CONTENT_DIR );
86
- $asset_abs_path = fs_normalize_path( $asset_abs_path );
87
- $asset_rel_path = str_replace( $wp_content_dir, '', $asset_abs_path );
88
-
89
- $asset_url = content_url( fs_normalize_path( $asset_rel_path ) );
90
-
91
- return $asset_url;
92
- }
93
-
94
- function fs_enqueue_local_style( $handle, $path, $deps = array(), $ver = false, $media = 'all' ) {
95
- wp_enqueue_style( $handle, fs_asset_url( WP_FS__DIR_CSS . '/' . trim( $path, '/' ) ), $deps, $ver, $media );
96
- }
97
-
98
- function fs_enqueue_local_script( $handle, $path, $deps = array(), $ver = false, $in_footer = 'all' ) {
99
- wp_enqueue_script( $handle, fs_asset_url( WP_FS__DIR_JS . '/' . trim( $path, '/' ) ), $deps, $ver, $in_footer );
100
- }
101
-
102
- function fs_img_url( $path, $img_dir = WP_FS__DIR_IMG ) {
103
- return ( fs_asset_url( $img_dir . '/' . trim( $path, '/' ) ) );
104
- }
105
-
106
- /* Request handlers.
107
- --------------------------------------------------------------------------------------------*/
108
- /**
109
- * @param string $key
110
- * @param mixed $def
111
- * @param string|bool $type Since 1.2.1.7 - when set to 'get' will look for the value passed via querystring, when
112
- * set to 'post' will look for the value passed via the POST request's body, otherwise,
113
- * will check if the parameter was passed in any of the two.
114
- *
115
- * @return mixed
116
- */
117
- function fs_request_get( $key, $def = false, $type = false ) {
118
- if ( is_string( $type ) ) {
119
- $type = strtolower( $type );
120
- }
121
-
122
- switch ( $type ) {
123
- case 'post':
124
- $value = isset( $_POST[ $key ] ) ? $_POST[ $key ] : $def;
125
- break;
126
- case 'get':
127
- $value = isset( $_GET[ $key ] ) ? $_GET[ $key ] : $def;
128
- break;
129
- default:
130
- $value = isset( $_REQUEST[ $key ] ) ? $_REQUEST[ $key ] : $def;
131
- break;
132
- }
133
-
134
- return $value;
135
- }
136
-
137
- function fs_request_has( $key ) {
138
- return isset( $_REQUEST[ $key ] );
139
- }
140
-
141
- function fs_request_get_bool( $key, $def = false ) {
142
- if ( ! isset( $_REQUEST[ $key ] ) ) {
143
- return $def;
144
- }
145
-
146
- if ( 1 == $_REQUEST[ $key ] || 'true' === strtolower( $_REQUEST[ $key ] ) ) {
147
- return true;
148
- }
149
-
150
- if ( 0 == $_REQUEST[ $key ] || 'false' === strtolower( $_REQUEST[ $key ] ) ) {
151
- return false;
152
- }
153
-
154
- return $def;
155
- }
156
-
157
- function fs_request_is_post() {
158
- return ( 'post' === strtolower( $_SERVER['REQUEST_METHOD'] ) );
159
- }
160
-
161
- function fs_request_is_get() {
162
- return ( 'get' === strtolower( $_SERVER['REQUEST_METHOD'] ) );
163
- }
164
-
165
- function fs_get_action( $action_key = 'action' ) {
166
- if ( ! empty( $_REQUEST[ $action_key ] ) ) {
167
- return strtolower( $_REQUEST[ $action_key ] );
168
- }
169
-
170
- if ( 'action' == $action_key ) {
171
- $action_key = 'fs_action';
172
-
173
- if ( ! empty( $_REQUEST[ $action_key ] ) ) {
174
- return strtolower( $_REQUEST[ $action_key ] );
175
- }
176
- }
177
-
178
- return false;
179
- }
180
-
181
- function fs_request_is_action( $action, $action_key = 'action' ) {
182
- return ( strtolower( $action ) === fs_get_action( $action_key ) );
183
- }
184
-
185
- /**
186
- * @author Vova Feldman (@svovaf)
187
- * @since 1.0.0
188
- *
189
- * @since 1.2.1.5 Allow nonce verification.
190
- *
191
- * @param string $action
192
- * @param string $action_key
193
- * @param string $nonce_key
194
- *
195
- * @return bool
196
- */
197
- function fs_request_is_action_secure(
198
- $action,
199
- $action_key = 'action',
200
- $nonce_key = 'nonce'
201
- ) {
202
- if ( strtolower( $action ) !== fs_get_action( $action_key ) ) {
203
- return false;
204
- }
205
-
206
- $nonce = ! empty( $_REQUEST[ $nonce_key ] ) ?
207
- $_REQUEST[ $nonce_key ] :
208
- '';
209
-
210
- if ( empty( $nonce ) ||
211
- ( false === wp_verify_nonce( $nonce, $action ) )
212
- ) {
213
- return false;
214
- }
215
-
216
- return true;
217
- }
218
-
219
- function fs_is_plugin_page( $page_slug ) {
220
- return ( is_admin() && $page_slug === fs_request_get( 'page' ) );
221
- }
222
-
223
- /* Core UI.
224
- --------------------------------------------------------------------------------------------*/
225
- /**
226
- * @param number $module_id
227
- * @param string $page
228
- * @param string $action
229
- * @param string $title
230
- * @param array $params
231
- * @param bool $is_primary
232
- * @param string|bool $icon_class Optional class for an icon (since 1.1.7).
233
- * @param string|bool $confirmation Optional confirmation message before submit (since 1.1.7).
234
- * @param string $method Since 1.1.7
235
- *
236
- * @uses fs_ui_get_action_button()
237
- */
238
- function fs_ui_action_button(
239
- $module_id,
240
- $page,
241
- $action,
242
- $title,
243
- $params = array(),
244
- $is_primary = true,
245
- $icon_class = false,
246
- $confirmation = false,
247
- $method = 'GET'
248
- ) {
249
- echo fs_ui_get_action_button(
250
- $module_id,
251
- $page,
252
- $action,
253
- $title,
254
- $params,
255
- $is_primary,
256
- $icon_class,
257
- $confirmation,
258
- $method
259
- );
260
- }
261
-
262
- /**
263
- * @author Vova Feldman (@svovaf)
264
- * @since 1.1.7
265
- *
266
- * @param number $module_id
267
- * @param string $page
268
- * @param string $action
269
- * @param string $title
270
- * @param array $params
271
- * @param bool $is_primary
272
- * @param string|bool $icon_class Optional class for an icon.
273
- * @param string|bool $confirmation Optional confirmation message before submit.
274
- * @param string $method
275
- *
276
- * @return string
277
- */
278
- function fs_ui_get_action_button(
279
- $module_id,
280
- $page,
281
- $action,
282
- $title,
283
- $params = array(),
284
- $is_primary = true,
285
- $icon_class = false,
286
- $confirmation = false,
287
- $method = 'GET'
288
- ) {
289
- // Prepend icon (if set).
290
- $title = ( is_string( $icon_class ) ? '<i class="' . $icon_class . '"></i> ' : '' ) . $title;
291
-
292
- if ( is_string( $confirmation ) ) {
293
- return sprintf( '<form action="%s" method="%s"><input type="hidden" name="fs_action" value="%s">%s<a href="#" class="%s" onclick="if (confirm(\'%s\')) this.parentNode.submit(); return false;">%s</a></form>',
294
- freemius( $module_id )->_get_admin_page_url( $page, $params ),
295
- $method,
296
- $action,
297
- wp_nonce_field( $action, '_wpnonce', true, false ),
298
- 'button' . ( $is_primary ? ' button-primary' : '' ),
299
- $confirmation,
300
- $title
301
- );
302
- } else if ( 'GET' !== strtoupper( $method ) ) {
303
- return sprintf( '<form action="%s" method="%s"><input type="hidden" name="fs_action" value="%s">%s<a href="#" class="%s" onclick="this.parentNode.submit(); return false;">%s</a></form>',
304
- freemius( $module_id )->_get_admin_page_url( $page, $params ),
305
- $method,
306
- $action,
307
- wp_nonce_field( $action, '_wpnonce', true, false ),
308
- 'button' . ( $is_primary ? ' button-primary' : '' ),
309
- $title
310
- );
311
- } else {
312
- return sprintf( '<a href="%s" class="%s">%s</a></form>',
313
- wp_nonce_url( freemius( $module_id )->_get_admin_page_url( $page, array_merge( $params, array( 'fs_action' => $action ) ) ), $action ),
314
- 'button' . ( $is_primary ? ' button-primary' : '' ),
315
- $title
316
- );
317
- }
318
- }
319
-
320
- function fs_ui_action_link( $module_id, $page, $action, $title, $params = array() ) {
321
- ?><a class=""
322
- href="<?php echo wp_nonce_url( freemius( $module_id )->_get_admin_page_url( $page, array_merge( $params, array( 'fs_action' => $action ) ) ), $action ) ?>"><?php echo $title ?></a><?php
323
- }
324
-
325
- /*function fs_error_handler($errno, $errstr, $errfile, $errline)
326
- {
327
- if (false === strpos($errfile, 'freemius/'))
328
- {
329
- // @todo Dump Freemius errors to local log.
330
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
331
 
332
  // switch ($errno) {
333
  // case E_USER_ERROR:
@@ -341,334 +367,692 @@
341
  // default:
342
  // break;
343
  // }
344
- }
345
-
346
- set_error_handler('fs_error_handler');*/
347
-
348
- if ( ! function_exists( 'fs_nonce_url' ) ) {
349
- /**
350
- * Retrieve URL with nonce added to URL query.
351
- *
352
- * Originally was using `wp_nonce_url()` but the new version
353
- * changed the return value to escaped URL, that's not the expected
354
- * behaviour.
355
- *
356
- * @author Vova Feldman (@svovaf)
357
- * @since ~1.1.3
358
- *
359
- * @param string $actionurl URL to add nonce action.
360
- * @param int|string $action Optional. Nonce action name. Default -1.
361
- * @param string $name Optional. Nonce name. Default '_wpnonce'.
362
- *
363
- * @return string Escaped URL with nonce action added.
364
- */
365
- function fs_nonce_url( $actionurl, $action = - 1, $name = '_wpnonce' ) {
366
- return add_query_arg( $name, wp_create_nonce( $action ), $actionurl );
367
- }
368
- }
369
-
370
- if ( ! function_exists( 'fs_starts_with' ) ) {
371
- /**
372
- * Check if string starts with.
373
- *
374
- * @author Vova Feldman (@svovaf)
375
- * @since 1.1.3
376
- *
377
- * @param string $haystack
378
- * @param string $needle
379
- *
380
- * @return bool
381
- */
382
- function fs_starts_with( $haystack, $needle ) {
383
- $length = strlen( $needle );
384
-
385
- return ( substr( $haystack, 0, $length ) === $needle );
386
- }
387
- }
388
-
389
- #region Url Canonization ------------------------------------------------------------------
390
-
391
- if ( ! function_exists( 'fs_canonize_url' ) ) {
392
- /**
393
- * @author Vova Feldman (@svovaf)
394
- * @since 1.1.3
395
- *
396
- * @param string $url
397
- * @param bool $omit_host
398
- * @param array $ignore_params
399
- *
400
- * @return string
401
- */
402
- function fs_canonize_url( $url, $omit_host = false, $ignore_params = array() ) {
403
- $parsed_url = parse_url( strtolower( $url ) );
404
 
405
  // if ( ! isset( $parsed_url['host'] ) ) {
406
  // return $url;
407
  // }
408
 
409
- $canonical = ( ( $omit_host || ! isset( $parsed_url['host'] ) ) ? '' : $parsed_url['host'] ) . $parsed_url['path'];
410
-
411
- if ( isset( $parsed_url['query'] ) ) {
412
- parse_str( $parsed_url['query'], $queryString );
413
- $canonical .= '?' . fs_canonize_query_string( $queryString, $ignore_params );
414
- }
415
-
416
- return $canonical;
417
- }
418
- }
419
-
420
- if ( ! function_exists( 'fs_canonize_query_string' ) ) {
421
- /**
422
- * @author Vova Feldman (@svovaf)
423
- * @since 1.1.3
424
- *
425
- * @param array $params
426
- * @param array $ignore_params
427
- * @param bool $params_prefix
428
- *
429
- * @return string
430
- */
431
- function fs_canonize_query_string( array $params, array &$ignore_params, $params_prefix = false ) {
432
- if ( ! is_array( $params ) || 0 === count( $params ) ) {
433
- return '';
434
- }
435
-
436
- // Url encode both keys and values
437
- $keys = fs_urlencode_rfc3986( array_keys( $params ) );
438
- $values = fs_urlencode_rfc3986( array_values( $params ) );
439
- $params = array_combine( $keys, $values );
440
-
441
- // Parameters are sorted by name, using lexicographical byte value ordering.
442
- // Ref: Spec: 9.1.1 (1)
443
- uksort( $params, 'strcmp' );
444
-
445
- $pairs = array();
446
- foreach ( $params as $parameter => $value ) {
447
- $lower_param = strtolower( $parameter );
448
-
449
- // Skip ignore params.
450
- if ( in_array( $lower_param, $ignore_params ) ||
451
- ( false !== $params_prefix && fs_starts_with( $lower_param, $params_prefix ) )
452
- ) {
453
- continue;
454
- }
455
-
456
- if ( is_array( $value ) ) {
457
- // If two or more parameters share the same name, they are sorted by their value
458
- // Ref: Spec: 9.1.1 (1)
459
- natsort( $value );
460
- foreach ( $value as $duplicate_value ) {
461
- $pairs[] = $lower_param . '=' . $duplicate_value;
462
- }
463
- } else {
464
- $pairs[] = $lower_param . '=' . $value;
465
- }
466
- }
467
-
468
- if ( 0 === count( $pairs ) ) {
469
- return '';
470
- }
471
-
472
- return implode( "&", $pairs );
473
- }
474
- }
475
-
476
- if ( ! function_exists( 'fs_urlencode_rfc3986' ) ) {
477
- /**
478
- * @author Vova Feldman (@svovaf)
479
- * @since 1.1.3
480
- *
481
- * @param string|string[] $input
482
- *
483
- * @return array|mixed|string
484
- */
485
- function fs_urlencode_rfc3986( $input ) {
486
- if ( is_array( $input ) ) {
487
- return array_map( 'fs_urlencode_rfc3986', $input );
488
- } else if ( is_scalar( $input ) ) {
489
- return str_replace( '+', ' ', str_replace( '%7E', '~', rawurlencode( $input ) ) );
490
- }
491
-
492
- return '';
493
- }
494
- }
495
-
496
- #endregion Url Canonization ------------------------------------------------------------------
497
-
498
- /**
499
- * @author Vova Feldman (@svovaf)
500
- *
501
- * @since 1.2.2 Changed to usage of WP_Filesystem_Direct.
502
- *
503
- * @param string $from URL
504
- * @param string $to File path.
505
- */
506
- function fs_download_image( $from, $to ) {
507
- $dir = dirname( $to );
508
-
509
- if ( 'direct' !== get_filesystem_method( array(), $dir ) ) {
510
- return;
511
- }
512
-
513
- if ( ! class_exists( 'WP_Filesystem_Direct' ) ) {
514
- require_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php';
515
- require_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-direct.php';
516
- }
517
-
518
- $fs = new WP_Filesystem_Direct( '' );
519
- $tmpfile = download_url( $from );
520
- $fs->copy( $tmpfile, $to );
521
- $fs->delete( $tmpfile );
522
- }
523
-
524
- /* General Utilities
525
- --------------------------------------------------------------------------------------------*/
526
-
527
- /**
528
- * Sorts an array by the value of the priority key.
529
- *
530
- * @author Daniel Iser (@danieliser)
531
- * @since 1.1.7
532
- *
533
- * @param $a
534
- * @param $b
535
- *
536
- * @return int
537
- */
538
- function fs_sort_by_priority( $a, $b ) {
539
-
540
- // If b has a priority and a does not, b wins.
541
- if ( ! isset( $a['priority'] ) && isset( $b['priority'] ) ) {
542
- return 1;
543
- } // If b has a priority and a does not, b wins.
544
- elseif ( isset( $a['priority'] ) && ! isset( $b['priority'] ) ) {
545
- return - 1;
546
- } // If neither has a priority or both priorities are equal its a tie.
547
- elseif ( ( ! isset( $a['priority'] ) && ! isset( $b['priority'] ) ) || $a['priority'] === $b['priority'] ) {
548
- return 0;
549
- }
550
-
551
- // If both have priority return the winner.
552
- return ( $a['priority'] < $b['priority'] ) ? - 1 : 1;
553
- }
554
-
555
- #--------------------------------------------------------------------------------
556
- #region Localization
557
- #--------------------------------------------------------------------------------
558
-
559
- if ( ! function_exists( 'fs_text' ) ) {
560
- /**
561
- * Retrieve a translated text by key.
562
- *
563
- * @author Vova Feldman (@svovaf)
564
- * @since 1.2.1.7
565
- *
566
- * @param string $key
567
- * @param string $slug
568
- *
569
- * @return string
570
- *
571
- * @global $fs_text, $fs_text_overrides
572
- */
573
- function fs_text( $key, $slug = 'freemius' ) {
574
- return __fs( $key, $slug );
575
- }
576
-
577
- /**
578
- * Output a translated text by key.
579
- *
580
- * @author Vova Feldman (@svovaf)
581
- * @since 1.2.1.7
582
- *
583
- * @param string $key
584
- * @param string $slug
585
- */
586
- function fs_echo( $key, $slug = 'freemius' ) {
587
- echo fs_text( $key, $slug );
588
- }
589
- }
590
-
591
- /**
592
- * @author Vova Feldman
593
- * @since 1.2.1.6
594
- *
595
- * @param string $key
596
- * @param string $slug
597
- *
598
- * @return string
599
- */
600
- function fs_esc_attr( $key, $slug ) {
601
- return esc_attr( fs_text( $key, $slug ) );
602
- }
603
-
604
- /**
605
- * @author Vova Feldman
606
- * @since 1.2.1.6
607
- *
608
- * @param string $key
609
- * @param string $slug
610
- */
611
- function fs_esc_attr_echo( $key, $slug ) {
612
- echo esc_attr( fs_text( $key, $slug ) );
613
- }
614
-
615
- /**
616
- * @author Vova Feldman
617
- * @since 1.2.1.6
618
- *
619
- * @param string $key
620
- * @param string $slug
621
- *
622
- * @return string
623
- */
624
- function fs_esc_js( $key, $slug ) {
625
- return esc_js( fs_text( $key, $slug ) );
626
- }
627
-
628
- /**
629
- * @author Vova Feldman
630
- * @since 1.2.1.6
631
- *
632
- * @param string $key
633
- * @param string $slug
634
- */
635
- function fs_esc_js_echo( $key, $slug ) {
636
- echo esc_js( fs_text( $key, $slug ) );
637
- }
638
-
639
- /**
640
- * @author Vova Feldman
641
- * @since 1.2.1.6
642
- *
643
- * @param string $key
644
- * @param string $slug
645
- */
646
- function fs_json_encode_echo( $key, $slug ) {
647
- echo json_encode( fs_text( $key, $slug ) );
648
- }
649
-
650
- /**
651
- * @author Vova Feldman
652
- * @since 1.2.1.6
653
- *
654
- * @param string $key
655
- * @param string $slug
656
- *
657
- * @return string
658
- */
659
- function fs_esc_html( $key, $slug ) {
660
- return esc_html( fs_text( $key, $slug ) );
661
- }
662
-
663
- /**
664
- * @author Vova Feldman
665
- * @since 1.2.1.6
666
- *
667
- * @param string $key
668
- * @param string $slug
669
- */
670
- function fs_esc_html_echo( $key, $slug ) {
671
- echo esc_html( fs_text( $key, $slug ) );
672
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
673
 
674
  #endregion
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
+ if ( ! function_exists( 'fs_dummy' ) ) {
14
+ function fs_dummy() {
15
+ }
16
+ }
17
+
18
+ /* Url.
19
+ --------------------------------------------------------------------------------------------*/
20
+ if ( ! function_exists( 'fs_get_url_daily_cache_killer' ) ) {
21
+ function fs_get_url_daily_cache_killer() {
22
+ return date( '\YY\Mm\Dd' );
23
+ }
24
+ }
25
+
26
+ /* Templates / Views.
27
+ --------------------------------------------------------------------------------------------*/
28
+ if ( ! function_exists( 'fs_get_template_path' ) ) {
29
+ function fs_get_template_path( $path ) {
30
+ return WP_FS__DIR_TEMPLATES . '/' . trim( $path, '/' );
31
+ }
32
+
33
+ function fs_include_template( $path, &$params = null ) {
34
+ $VARS = &$params;
35
+ include fs_get_template_path( $path );
36
+ }
37
+
38
+ function fs_include_once_template( $path, &$params = null ) {
39
+ $VARS = &$params;
40
+ include_once fs_get_template_path( $path );
41
+ }
42
+
43
+ function fs_require_template( $path, &$params = null ) {
44
+ $VARS = &$params;
45
+ require fs_get_template_path( $path );
46
+ }
47
+
48
+ function fs_require_once_template( $path, &$params = null ) {
49
+ $VARS = &$params;
50
+ require_once fs_get_template_path( $path );
51
+ }
52
+
53
+ function fs_get_template( $path, &$params = null ) {
54
+ ob_start();
55
+
56
+ $VARS = &$params;
57
+ require fs_get_template_path( $path );
58
+
59
+ return ob_get_clean();
60
+ }
61
+ }
62
+
63
+ /* Scripts and styles including.
64
+ --------------------------------------------------------------------------------------------*/
65
+
66
+ /**
67
+ * Generates an absolute URL to the given path. This function ensures that the URL will be correct whether the asset
68
+ * is inside a plugin's folder or a theme's folder.
69
+ *
70
+ * Examples:
71
+ * 1. "themes" folder
72
+ * Path: C:/xampp/htdocs/fswp/wp-content/themes/twentytwelve/freemius/assets/css/admin/common.css
73
+ * URL: http://fswp:8080/wp-content/themes/twentytwelve/freemius/assets/css/admin/common.css
74
+ *
75
+ * 2. "plugins" folder
76
+ * Path: C:/xampp/htdocs/fswp/wp-content/plugins/rating-widget-premium/freemius/assets/css/admin/common.css
77
+ * URL: http://fswp:8080/wp-content/plugins/rating-widget-premium/freemius/assets/css/admin/common.css
78
+ *
79
+ * @author Leo Fajardo (@leorw)
80
+ * @since 1.2.2
81
+ *
82
+ * @param string $asset_abs_path Asset's absolute path.
83
+ *
84
+ * @return string Asset's URL.
85
+ */
86
+ function fs_asset_url( $asset_abs_path ) {
87
+ $wp_content_dir = fs_normalize_path( WP_CONTENT_DIR );
88
+ $asset_abs_path = fs_normalize_path( $asset_abs_path );
89
+ $asset_rel_path = str_replace( $wp_content_dir, '', $asset_abs_path );
90
+
91
+ $asset_url = content_url( fs_normalize_path( $asset_rel_path ) );
92
+
93
+ return $asset_url;
94
+ }
95
+
96
+ function fs_enqueue_local_style( $handle, $path, $deps = array(), $ver = false, $media = 'all' ) {
97
+ wp_enqueue_style( $handle, fs_asset_url( WP_FS__DIR_CSS . '/' . trim( $path, '/' ) ), $deps, $ver, $media );
98
+ }
99
+
100
+ function fs_enqueue_local_script( $handle, $path, $deps = array(), $ver = false, $in_footer = 'all' ) {
101
+ wp_enqueue_script( $handle, fs_asset_url( WP_FS__DIR_JS . '/' . trim( $path, '/' ) ), $deps, $ver, $in_footer );
102
+ }
103
+
104
+ function fs_img_url( $path, $img_dir = WP_FS__DIR_IMG ) {
105
+ return ( fs_asset_url( $img_dir . '/' . trim( $path, '/' ) ) );
106
+ }
107
+
108
+ /* Request handlers.
109
+ --------------------------------------------------------------------------------------------*/
110
+ /**
111
+ * @param string $key
112
+ * @param mixed $def
113
+ * @param string|bool $type Since 1.2.1.7 - when set to 'get' will look for the value passed via querystring, when
114
+ * set to 'post' will look for the value passed via the POST request's body, otherwise,
115
+ * will check if the parameter was passed in any of the two.
116
+ *
117
+ * @return mixed
118
+ */
119
+ function fs_request_get( $key, $def = false, $type = false ) {
120
+ if ( is_string( $type ) ) {
121
+ $type = strtolower( $type );
122
+ }
123
+
124
+ switch ( $type ) {
125
+ case 'post':
126
+ $value = isset( $_POST[ $key ] ) ? $_POST[ $key ] : $def;
127
+ break;
128
+ case 'get':
129
+ $value = isset( $_GET[ $key ] ) ? $_GET[ $key ] : $def;
130
+ break;
131
+ default:
132
+ $value = isset( $_REQUEST[ $key ] ) ? $_REQUEST[ $key ] : $def;
133
+ break;
134
+ }
135
+
136
+ return $value;
137
+ }
138
+
139
+ function fs_request_has( $key ) {
140
+ return isset( $_REQUEST[ $key ] );
141
+ }
142
+
143
+ function fs_request_get_bool( $key, $def = false ) {
144
+ if ( ! isset( $_REQUEST[ $key ] ) ) {
145
+ return $def;
146
+ }
147
+
148
+ if ( 1 == $_REQUEST[ $key ] || 'true' === strtolower( $_REQUEST[ $key ] ) ) {
149
+ return true;
150
+ }
151
+
152
+ if ( 0 == $_REQUEST[ $key ] || 'false' === strtolower( $_REQUEST[ $key ] ) ) {
153
+ return false;
154
+ }
155
+
156
+ return $def;
157
+ }
158
+
159
+ function fs_request_is_post() {
160
+ return ( 'post' === strtolower( $_SERVER['REQUEST_METHOD'] ) );
161
+ }
162
+
163
+ function fs_request_is_get() {
164
+ return ( 'get' === strtolower( $_SERVER['REQUEST_METHOD'] ) );
165
+ }
166
+
167
+ function fs_get_action( $action_key = 'action' ) {
168
+ if ( ! empty( $_REQUEST[ $action_key ] ) ) {
169
+ return strtolower( $_REQUEST[ $action_key ] );
170
+ }
171
+
172
+ if ( 'action' == $action_key ) {
173
+ $action_key = 'fs_action';
174
+
175
+ if ( ! empty( $_REQUEST[ $action_key ] ) ) {
176
+ return strtolower( $_REQUEST[ $action_key ] );
177
+ }
178
+ }
179
+
180
+ return false;
181
+ }
182
+
183
+ function fs_request_is_action( $action, $action_key = 'action' ) {
184
+ return ( strtolower( $action ) === fs_get_action( $action_key ) );
185
+ }
186
+
187
+ /**
188
+ * @author Vova Feldman (@svovaf)
189
+ * @since 1.0.0
190
+ *
191
+ * @since 1.2.1.5 Allow nonce verification.
192
+ *
193
+ * @param string $action
194
+ * @param string $action_key
195
+ * @param string $nonce_key
196
+ *
197
+ * @return bool
198
+ */
199
+ function fs_request_is_action_secure(
200
+ $action,
201
+ $action_key = 'action',
202
+ $nonce_key = 'nonce'
203
+ ) {
204
+ if ( strtolower( $action ) !== fs_get_action( $action_key ) ) {
205
+ return false;
206
+ }
207
+
208
+ $nonce = ! empty( $_REQUEST[ $nonce_key ] ) ?
209
+ $_REQUEST[ $nonce_key ] :
210
+ '';
211
+
212
+ if ( empty( $nonce ) ||
213
+ ( false === wp_verify_nonce( $nonce, $action ) )
214
+ ) {
215
+ return false;
216
+ }
217
+
218
+ return true;
219
+ }
220
+
221
+ function fs_is_plugin_page( $page_slug ) {
222
+ return ( is_admin() && $page_slug === fs_request_get( 'page' ) );
223
+ }
224
+
225
+ if ( ! function_exists( 'fs_get_raw_referer' ) ) {
226
+ /**
227
+ * Retrieves unvalidated referer from '_wp_http_referer' or HTTP referer.
228
+ *
229
+ * Do not use for redirects, use {@see wp_get_referer()} instead.
230
+ *
231
+ * @since 1.2.3
232
+ *
233
+ * @return string|false Referer URL on success, false on failure.
234
+ */
235
+ function fs_get_raw_referer() {
236
+ if ( function_exists( 'wp_get_raw_referer' ) ) {
237
+ return wp_get_raw_referer();
238
+ }
239
+ if ( ! empty( $_REQUEST['_wp_http_referer'] ) ) {
240
+ return wp_unslash( $_REQUEST['_wp_http_referer'] );
241
+ } else if ( ! empty( $_SERVER['HTTP_REFERER'] ) ) {
242
+ return wp_unslash( $_SERVER['HTTP_REFERER'] );
243
+ }
244
+
245
+ return false;
246
+ }
247
+ }
248
+
249
+ /* Core UI.
250
+ --------------------------------------------------------------------------------------------*/
251
+ /**
252
+ * @param number $module_id
253
+ * @param string $page
254
+ * @param string $action
255
+ * @param string $title
256
+ * @param array $params
257
+ * @param bool $is_primary
258
+ * @param string|bool $icon_class Optional class for an icon (since 1.1.7).
259
+ * @param string|bool $confirmation Optional confirmation message before submit (since 1.1.7).
260
+ * @param string $method Since 1.1.7
261
+ *
262
+ * @uses fs_ui_get_action_button()
263
+ */
264
+ function fs_ui_action_button(
265
+ $module_id,
266
+ $page,
267
+ $action,
268
+ $title,
269
+ $params = array(),
270
+ $is_primary = true,
271
+ $icon_class = false,
272
+ $confirmation = false,
273
+ $method = 'GET'
274
+ ) {
275
+ echo fs_ui_get_action_button(
276
+ $module_id,
277
+ $page,
278
+ $action,
279
+ $title,
280
+ $params,
281
+ $is_primary,
282
+ $icon_class,
283
+ $confirmation,
284
+ $method
285
+ );
286
+ }
287
+
288
+ /**
289
+ * @author Vova Feldman (@svovaf)
290
+ * @since 1.1.7
291
+ *
292
+ * @param number $module_id
293
+ * @param string $page
294
+ * @param string $action
295
+ * @param string $title
296
+ * @param array $params
297
+ * @param bool $is_primary
298
+ * @param string|bool $icon_class Optional class for an icon.
299
+ * @param string|bool $confirmation Optional confirmation message before submit.
300
+ * @param string $method
301
+ *
302
+ * @return string
303
+ */
304
+ function fs_ui_get_action_button(
305
+ $module_id,
306
+ $page,
307
+ $action,
308
+ $title,
309
+ $params = array(),
310
+ $is_primary = true,
311
+ $icon_class = false,
312
+ $confirmation = false,
313
+ $method = 'GET'
314
+ ) {
315
+ // Prepend icon (if set).
316
+ $title = ( is_string( $icon_class ) ? '<i class="' . $icon_class . '"></i> ' : '' ) . $title;
317
+
318
+ if ( is_string( $confirmation ) ) {
319
+ return sprintf( '<form action="%s" method="%s"><input type="hidden" name="fs_action" value="%s">%s<a href="#" class="%s" onclick="if (confirm(\'%s\')) this.parentNode.submit(); return false;">%s</a></form>',
320
+ freemius( $module_id )->_get_admin_page_url( $page, $params ),
321
+ $method,
322
+ $action,
323
+ wp_nonce_field( $action, '_wpnonce', true, false ),
324
+ 'button' . ( $is_primary ? ' button-primary' : '' ),
325
+ $confirmation,
326
+ $title
327
+ );
328
+ } else if ( 'GET' !== strtoupper( $method ) ) {
329
+ return sprintf( '<form action="%s" method="%s"><input type="hidden" name="fs_action" value="%s">%s<a href="#" class="%s" onclick="this.parentNode.submit(); return false;">%s</a></form>',
330
+ freemius( $module_id )->_get_admin_page_url( $page, $params ),
331
+ $method,
332
+ $action,
333
+ wp_nonce_field( $action, '_wpnonce', true, false ),
334
+ 'button' . ( $is_primary ? ' button-primary' : '' ),
335
+ $title
336
+ );
337
+ } else {
338
+ return sprintf( '<a href="%s" class="%s">%s</a></form>',
339
+ wp_nonce_url( freemius( $module_id )->_get_admin_page_url( $page, array_merge( $params, array( 'fs_action' => $action ) ) ), $action ),
340
+ 'button' . ( $is_primary ? ' button-primary' : '' ),
341
+ $title
342
+ );
343
+ }
344
+ }
345
+
346
+ function fs_ui_action_link( $module_id, $page, $action, $title, $params = array() ) {
347
+ ?><a class=""
348
+ href="<?php echo wp_nonce_url( freemius( $module_id )->_get_admin_page_url( $page, array_merge( $params, array( 'fs_action' => $action ) ) ), $action ) ?>"><?php echo $title ?></a><?php
349
+ }
350
+
351
+ /*function fs_error_handler($errno, $errstr, $errfile, $errline)
352
+ {
353
+ if (false === strpos($errfile, 'freemius/'))
354
+ {
355
+ // @todo Dump Freemius errors to local log.
356
+ }
357
 
358
  // switch ($errno) {
359
  // case E_USER_ERROR:
367
  // default:
368
  // break;
369
  // }
370
+ }
371
+
372
+ set_error_handler('fs_error_handler');*/
373
+
374
+ if ( ! function_exists( 'fs_nonce_url' ) ) {
375
+ /**
376
+ * Retrieve URL with nonce added to URL query.
377
+ *
378
+ * Originally was using `wp_nonce_url()` but the new version
379
+ * changed the return value to escaped URL, that's not the expected
380
+ * behaviour.
381
+ *
382
+ * @author Vova Feldman (@svovaf)
383
+ * @since ~1.1.3
384
+ *
385
+ * @param string $actionurl URL to add nonce action.
386
+ * @param int|string $action Optional. Nonce action name. Default -1.
387
+ * @param string $name Optional. Nonce name. Default '_wpnonce'.
388
+ *
389
+ * @return string Escaped URL with nonce action added.
390
+ */
391
+ function fs_nonce_url( $actionurl, $action = - 1, $name = '_wpnonce' ) {
392
+ return add_query_arg( $name, wp_create_nonce( $action ), $actionurl );
393
+ }
394
+ }
395
+
396
+ if ( ! function_exists( 'fs_starts_with' ) ) {
397
+ /**
398
+ * Check if string starts with.
399
+ *
400
+ * @author Vova Feldman (@svovaf)
401
+ * @since 1.1.3
402
+ *
403
+ * @param string $haystack
404
+ * @param string $needle
405
+ *
406
+ * @return bool
407
+ */
408
+ function fs_starts_with( $haystack, $needle ) {
409
+ $length = strlen( $needle );
410
+
411
+ return ( substr( $haystack, 0, $length ) === $needle );
412
+ }
413
+ }
414
+
415
+ #region Url Canonization ------------------------------------------------------------------
416
+
417
+ if ( ! function_exists( 'fs_canonize_url' ) ) {
418
+ /**
419
+ * @author Vova Feldman (@svovaf)
420
+ * @since 1.1.3
421
+ *
422
+ * @param string $url
423
+ * @param bool $omit_host
424
+ * @param array $ignore_params
425
+ *
426
+ * @return string
427
+ */
428
+ function fs_canonize_url( $url, $omit_host = false, $ignore_params = array() ) {
429
+ $parsed_url = parse_url( strtolower( $url ) );
430
 
431
  // if ( ! isset( $parsed_url['host'] ) ) {
432
  // return $url;
433
  // }
434
 
435
+ $canonical = ( ( $omit_host || ! isset( $parsed_url['host'] ) ) ? '' : $parsed_url['host'] ) . $parsed_url['path'];
436
+
437
+ if ( isset( $parsed_url['query'] ) ) {
438
+ parse_str( $parsed_url['query'], $queryString );
439
+ $canonical .= '?' . fs_canonize_query_string( $queryString, $ignore_params );
440
+ }
441
+
442
+ return $canonical;
443
+ }
444
+ }
445
+
446
+ if ( ! function_exists( 'fs_canonize_query_string' ) ) {
447
+ /**
448
+ * @author Vova Feldman (@svovaf)
449
+ * @since 1.1.3
450
+ *
451
+ * @param array $params
452
+ * @param array $ignore_params
453
+ * @param bool $params_prefix
454
+ *
455
+ * @return string
456
+ */
457
+ function fs_canonize_query_string( array $params, array &$ignore_params, $params_prefix = false ) {
458
+ if ( ! is_array( $params ) || 0 === count( $params ) ) {
459
+ return '';
460
+ }
461
+
462
+ // Url encode both keys and values
463
+ $keys = fs_urlencode_rfc3986( array_keys( $params ) );
464
+ $values = fs_urlencode_rfc3986( array_values( $params ) );
465
+ $params = array_combine( $keys, $values );
466
+
467
+ // Parameters are sorted by name, using lexicographical byte value ordering.
468
+ // Ref: Spec: 9.1.1 (1)
469
+ uksort( $params, 'strcmp' );
470
+
471
+ $pairs = array();
472
+ foreach ( $params as $parameter => $value ) {
473
+ $lower_param = strtolower( $parameter );
474
+
475
+ // Skip ignore params.
476
+ if ( in_array( $lower_param, $ignore_params ) ||
477
+ ( false !== $params_prefix && fs_starts_with( $lower_param, $params_prefix ) )
478
+ ) {
479
+ continue;
480
+ }
481
+
482
+ if ( is_array( $value ) ) {
483
+ // If two or more parameters share the same name, they are sorted by their value
484
+ // Ref: Spec: 9.1.1 (1)
485
+ natsort( $value );
486
+ foreach ( $value as $duplicate_value ) {
487
+ $pairs[] = $lower_param . '=' . $duplicate_value;
488
+ }
489
+ } else {
490
+ $pairs[] = $lower_param . '=' . $value;
491
+ }
492
+ }
493
+
494
+ if ( 0 === count( $pairs ) ) {
495
+ return '';
496
+ }
497
+
498
+ return implode( "&", $pairs );
499
+ }
500
+ }
501
+
502
+ if ( ! function_exists( 'fs_urlencode_rfc3986' ) ) {
503
+ /**
504
+ * @author Vova Feldman (@svovaf)
505
+ * @since 1.1.3
506
+ *
507
+ * @param string|string[] $input
508
+ *
509
+ * @return array|mixed|string
510
+ */
511
+ function fs_urlencode_rfc3986( $input ) {
512
+ if ( is_array( $input ) ) {
513
+ return array_map( 'fs_urlencode_rfc3986', $input );
514
+ } else if ( is_scalar( $input ) ) {
515
+ return str_replace( '+', ' ', str_replace( '%7E', '~', rawurlencode( $input ) ) );
516
+ }
517
+
518
+ return '';
519
+ }
520
+ }
521
+
522
+ #endregion Url Canonization ------------------------------------------------------------------
523
+
524
+ /**
525
+ * @author Vova Feldman (@svovaf)
526
+ *
527
+ * @since 1.2.2 Changed to usage of WP_Filesystem_Direct.
528
+ *
529
+ * @param string $from URL
530
+ * @param string $to File path.
531
+ *
532
+ * @return bool Is successfully downloaded.
533
+ */
534
+ function fs_download_image( $from, $to ) {
535
+ $dir = dirname( $to );
536
+
537
+ if ( 'direct' !== get_filesystem_method( array(), $dir ) ) {
538
+ return false;
539
+ }
540
+
541
+ if ( ! class_exists( 'WP_Filesystem_Direct' ) ) {
542
+ require_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php';
543
+ require_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-direct.php';
544
+ }
545
+
546
+ $fs = new WP_Filesystem_Direct( '' );
547
+ $tmpfile = download_url( $from );
548
+
549
+ if ( $tmpfile instanceof WP_Error ) {
550
+ // Issue downloading the file.
551
+ return false;
552
+ }
553
+
554
+ $fs->copy( $tmpfile, $to );
555
+ $fs->delete( $tmpfile );
556
+
557
+ return true;
558
+ }
559
+
560
+ /* General Utilities
561
+ --------------------------------------------------------------------------------------------*/
562
+
563
+ /**
564
+ * Sorts an array by the value of the priority key.
565
+ *
566
+ * @author Daniel Iser (@danieliser)
567
+ * @since 1.1.7
568
+ *
569
+ * @param $a
570
+ * @param $b
571
+ *
572
+ * @return int
573
+ */
574
+ function fs_sort_by_priority( $a, $b ) {
575
+
576
+ // If b has a priority and a does not, b wins.
577
+ if ( ! isset( $a['priority'] ) && isset( $b['priority'] ) ) {
578
+ return 1;
579
+ } // If b has a priority and a does not, b wins.
580
+ elseif ( isset( $a['priority'] ) && ! isset( $b['priority'] ) ) {
581
+ return - 1;
582
+ } // If neither has a priority or both priorities are equal its a tie.
583
+ elseif ( ( ! isset( $a['priority'] ) && ! isset( $b['priority'] ) ) || $a['priority'] === $b['priority'] ) {
584
+ return 0;
585
+ }
586
+
587
+ // If both have priority return the winner.
588
+ return ( $a['priority'] < $b['priority'] ) ? - 1 : 1;
589
+ }
590
+
591
+ #--------------------------------------------------------------------------------
592
+ #region Localization
593
+ #--------------------------------------------------------------------------------
594
+
595
+ if ( ! function_exists( 'fs_text' ) ) {
596
+ /**
597
+ * Retrieve a translated text by key.
598
+ *
599
+ * @author Vova Feldman (@svovaf)
600
+ * @since 1.2.1.7
601
+ *
602
+ * @param string $key
603
+ * @param string $slug
604
+ *
605
+ * @return string
606
+ *
607
+ * @global $fs_text , $fs_text_overrides
608
+ */
609
+ function fs_text( $key, $slug = 'freemius' ) {
610
+ return __fs( $key, $slug );
611
+ }
612
+
613
+ /**
614
+ * Get a translatable text override if exists, or `false`.
615
+ *
616
+ * @author Vova Feldman (@svovaf)
617
+ * @since 1.2.1.7
618
+ *
619
+ * @param string $text Translatable string.
620
+ * @param string $key String key for overrides.
621
+ * @param string $slug Module slug for overrides.
622
+ *
623
+ * @return string|false
624
+ */
625
+ function fs_text_override( $text, $key, $slug ) {
626
+ global $fs_text_overrides;
627
+
628
+ /**
629
+ * Check if string is overridden.
630
+ */
631
+ if ( ! isset( $fs_text_overrides[ $slug ] ) ) {
632
+ return false;
633
+ }
634
+
635
+ if ( empty( $key ) ) {
636
+ $key = strtolower( str_replace( ' ', '-', $text ) );
637
+ }
638
+
639
+ if ( isset( $fs_text_overrides[ $slug ][ $key ] ) ) {
640
+ return $fs_text_overrides[ $slug ][ $key ];
641
+ }
642
+
643
+ $lower_key = strtolower( $key );
644
+ if ( isset( $fs_text_overrides[ $slug ][ $lower_key ] ) ) {
645
+ return $fs_text_overrides[ $slug ][ $lower_key ];
646
+ }
647
+
648
+ return false;
649
+ }
650
+
651
+ /**
652
+ * Get a translatable text and its text domain.
653
+ *
654
+ * When the text is overridden by the module, returns the overridden text and the text domain of the module. Otherwise, returns the original text and 'freemius' as the text domain.
655
+ *
656
+ * @author Vova Feldman (@svovaf)
657
+ * @since 1.2.1.7
658
+ *
659
+ * @param string $text Translatable string.
660
+ * @param string $key String key for overrides.
661
+ * @param string $slug Module slug for overrides.
662
+ *
663
+ * @return string[]
664
+ */
665
+ function fs_text_and_domain( $text, $key, $slug ) {
666
+ $override = fs_text_override( $text, $key, $slug );
667
+
668
+ if ( false === $override ) {
669
+ // No override, use FS text domain.
670
+ $text_domain = 'freemius';
671
+ } else {
672
+ // Found an override.
673
+ $text = $override;
674
+ // Use the module's text domain.
675
+ $text_domain = $slug;
676
+ }
677
+
678
+ return array( $text, $text_domain );
679
+ }
680
+
681
+ #region Private
682
+
683
+ /**
684
+ * Retrieve an inline translated text by key.
685
+ *
686
+ * @author Vova Feldman (@svovaf)
687
+ * @since 1.2.3
688
+ *
689
+ * @param string $text Translatable string.
690
+ * @param string $key String key for overrides.
691
+ * @param string $slug Module slug for overrides.
692
+ *
693
+ * @return string
694
+ *
695
+ * @global $fs_text_overrides
696
+ */
697
+ function _fs_text_inline( $text, $key = '', $slug = 'freemius' ) {
698
+ list( $text, $text_domain ) = fs_text_and_domain( $text, $key, $slug );
699
+
700
+ // Avoid misleading Theme Check warning.
701
+ $fn = 'translate';
702
+
703
+ return $fn( $text, $text_domain );
704
+ }
705
+
706
+ /**
707
+ * Retrieve an inline translated text by key with a context.
708
+ *
709
+ * @author Vova Feldman (@svovaf)
710
+ * @since 1.2.3
711
+ *
712
+ * @param string $text Translatable string.
713
+ * @param string $context Context information for the translators.
714
+ * @param string $key String key for overrides.
715
+ * @param string $slug Module slug for overrides.
716
+ *
717
+ * @return string
718
+ *
719
+ * @global $fs_text_overrides
720
+ */
721
+ function _fs_text_x_inline( $text, $context, $key = '', $slug = 'freemius' ) {
722
+ list( $text, $text_domain ) = fs_text_and_domain( $text, $key, $slug );
723
+
724
+ // Avoid misleading Theme Check warning.
725
+ $fn = 'translate_with_gettext_context';
726
+
727
+ return $fn( $text, $context, $text_domain );
728
+ }
729
+
730
+ #endregion
731
+
732
+ /**
733
+ * Retrieve an inline translated text by key.
734
+ *
735
+ * @author Vova Feldman (@svovaf)
736
+ * @since 1.2.3
737
+ *
738
+ * @param string $text Translatable string.
739
+ * @param string $key String key for overrides.
740
+ * @param string $slug Module slug for overrides.
741
+ *
742
+ * @return string
743
+ *
744
+ * @global $fs_text_overrides
745
+ */
746
+ function fs_text_inline( $text, $key = '', $slug = 'freemius' ) {
747
+ return _fs_text_inline( $text, $key, $slug );
748
+ }
749
+
750
+ /**
751
+ * Retrieve an inline translated text by key with a context.
752
+ *
753
+ * @author Vova Feldman (@svovaf)
754
+ * @since 1.2.3
755
+ *
756
+ * @param string $text Translatable string.
757
+ * @param string $context Context information for the translators.
758
+ * @param string $key String key for overrides.
759
+ * @param string $slug Module slug for overrides.
760
+ *
761
+ * @return string
762
+ *
763
+ * @global $fs_text_overrides
764
+ */
765
+ function fs_text_x_inline( $text, $context, $key = '', $slug = 'freemius' ) {
766
+ return _fs_text_x_inline( $text, $context, $key, $slug );
767
+ }
768
+
769
+ /**
770
+ * Output a translated text by key.
771
+ *
772
+ * @author Vova Feldman (@svovaf)
773
+ * @since 1.2.1.7
774
+ *
775
+ * @param string $key
776
+ * @param string $slug
777
+ */
778
+ function fs_echo( $key, $slug = 'freemius' ) {
779
+ echo fs_text( $key, $slug );
780
+ }
781
+
782
+ /**
783
+ * Output an inline translated text.
784
+ *
785
+ * @author Vova Feldman (@svovaf)
786
+ * @since 1.2.3
787
+ *
788
+ * @param string $text Translatable string.
789
+ * @param string $key String key for overrides.
790
+ * @param string $slug Module slug for overrides.
791
+ */
792
+ function fs_echo_inline( $text, $key = '', $slug = 'freemius' ) {
793
+ echo _fs_text_inline( $text, $key, $slug );
794
+ }
795
+
796
+ /**
797
+ * Output an inline translated text with a context.
798
+ *
799
+ * @author Vova Feldman (@svovaf)
800
+ * @since 1.2.3
801
+ *
802
+ * @param string $text Translatable string.
803
+ * @param string $context Context information for the translators.
804
+ * @param string $key String key for overrides.
805
+ * @param string $slug Module slug for overrides.
806
+ */
807
+ function fs_echo_x_inline( $text, $context, $key = '', $slug = 'freemius' ) {
808
+ echo _fs_text_x_inline( $text, $context, $key, $slug );
809
+ }
810
+ }
811
+
812
+ /**
813
+ * @author Vova Feldman
814
+ * @since 1.2.1.6
815
+ *
816
+ * @param string $key
817
+ * @param string $slug
818
+ *
819
+ * @return string
820
+ */
821
+ function fs_esc_attr( $key, $slug ) {
822
+ return esc_attr( fs_text( $key, $slug ) );
823
+ }
824
+
825
+ /**
826
+ * @author Vova Feldman (@svovaf)
827
+ * @since 1.2.3
828
+ *
829
+ * @param string $text Translatable string.
830
+ * @param string $key String key for overrides.
831
+ * @param string $slug Module slug for overrides.
832
+ *
833
+ * @return string
834
+ */
835
+ function fs_esc_attr_inline( $text, $key = '', $slug = 'freemius' ) {
836
+ return esc_attr( _fs_text_inline( $text, $key, $slug ) );
837
+ }
838
+
839
+ /**
840
+ * @author Vova Feldman (@svovaf)
841
+ * @since 1.2.3
842
+ *
843
+ * @param string $text Translatable string.
844
+ * @param string $context Context information for the translators.
845
+ * @param string $key String key for overrides.
846
+ * @param string $slug Module slug for overrides.
847
+ *
848
+ * @return string
849
+ */
850
+ function fs_esc_attr_x_inline( $text, $context, $key = '', $slug = 'freemius' ) {
851
+ return esc_attr( _fs_text_x_inline( $text, $context, $key, $slug ) );
852
+ }
853
+
854
+ /**
855
+ * @author Vova Feldman
856
+ * @since 1.2.1.6
857
+ *
858
+ * @param string $key
859
+ * @param string $slug
860
+ */
861
+ function fs_esc_attr_echo( $key, $slug ) {
862
+ echo esc_attr( fs_text( $key, $slug ) );
863
+ }
864
+
865
+ /**
866
+ * @author Vova Feldman (@svovaf)
867
+ * @since 1.2.3
868
+ *
869
+ * @param string $text Translatable string.
870
+ * @param string $key String key for overrides.
871
+ * @param string $slug Module slug for overrides.
872
+ */
873
+ function fs_esc_attr_echo_inline( $text, $key = '', $slug = 'freemius' ) {
874
+ echo esc_attr( _fs_text_inline( $text, $key, $slug ) );
875
+ }
876
+
877
+ /**
878
+ * @author Vova Feldman
879
+ * @since 1.2.1.6
880
+ *
881
+ * @param string $key
882
+ * @param string $slug
883
+ *
884
+ * @return string
885
+ */
886
+ function fs_esc_js( $key, $slug ) {
887
+ return esc_js( fs_text( $key, $slug ) );
888
+ }
889
+
890
+ /**
891
+ * @author Vova Feldman (@svovaf)
892
+ * @since 1.2.3
893
+ *
894
+ * @param string $text Translatable string.
895
+ * @param string $key String key for overrides.
896
+ * @param string $slug Module slug for overrides.
897
+ *
898
+ * @return string
899
+ */
900
+ function fs_esc_js_inline( $text, $key = '', $slug = 'freemius' ) {
901
+ return esc_js( _fs_text_inline( $text, $key, $slug ) );
902
+ }
903
+
904
+ /**
905
+ * @author Vova Feldman (@svovaf)
906
+ * @since 1.2.3
907
+ *
908
+ * @param string $text Translatable string.
909
+ * @param string $context Context information for the translators.
910
+ * @param string $key String key for overrides.
911
+ * @param string $slug Module slug for overrides.
912
+ *
913
+ * @return string
914
+ */
915
+ function fs_esc_js_x_inline( $text, $context, $key = '', $slug = 'freemius' ) {
916
+ return esc_js( _fs_text_x_inline( $text, $context, $key, $slug ) );
917
+ }
918
+
919
+ /**
920
+ * @author Vova Feldman (@svovaf)
921
+ * @since 1.2.3
922
+ *
923
+ * @param string $text Translatable string.
924
+ * @param string $context Context information for the translators.
925
+ * @param string $key String key for overrides.
926
+ * @param string $slug Module slug for overrides.
927
+ *
928
+ * @return string
929
+ */
930
+ function fs_esc_js_echo_x_inline( $text, $context, $key = '', $slug = 'freemius' ) {
931
+ echo esc_js( _fs_text_x_inline( $text, $context, $key, $slug ) );
932
+ }
933
+
934
+ /**
935
+ * @author Vova Feldman
936
+ * @since 1.2.1.6
937
+ *
938
+ * @param string $key
939
+ * @param string $slug
940
+ */
941
+ function fs_esc_js_echo( $key, $slug ) {
942
+ echo esc_js( fs_text( $key, $slug ) );
943
+ }
944
+
945
+ /**
946
+ * @author Vova Feldman (@svovaf)
947
+ * @since 1.2.3
948
+ *
949
+ * @param string $text Translatable string.
950
+ * @param string $key String key for overrides.
951
+ * @param string $slug Module slug for overrides.
952
+ */
953
+ function fs_esc_js_echo_inline( $text, $key = '', $slug = 'freemius' ) {
954
+ echo esc_js( _fs_text_inline( $text, $key, $slug ) );
955
+ }
956
+
957
+ /**
958
+ * @author Vova Feldman
959
+ * @since 1.2.1.6
960
+ *
961
+ * @param string $key
962
+ * @param string $slug
963
+ */
964
+ function fs_json_encode_echo( $key, $slug ) {
965
+ echo json_encode( fs_text( $key, $slug ) );
966
+ }
967
+
968
+ /**
969
+ * @author Vova Feldman (@svovaf)
970
+ * @since 1.2.3
971
+ *
972
+ * @param string $text Translatable string.
973
+ * @param string $key String key for overrides.
974
+ * @param string $slug Module slug for overrides.
975
+ */
976
+ function fs_json_encode_echo_inline( $text, $key = '', $slug = 'freemius' ) {
977
+ echo json_encode( _fs_text_inline( $text, $key, $slug ) );
978
+ }
979
+
980
+ /**
981
+ * @author Vova Feldman
982
+ * @since 1.2.1.6
983
+ *
984
+ * @param string $key
985
+ * @param string $slug
986
+ *
987
+ * @return string
988
+ */
989
+ function fs_esc_html( $key, $slug ) {
990
+ return esc_html( fs_text( $key, $slug ) );
991
+ }
992
+
993
+ /**
994
+ * @author Vova Feldman (@svovaf)
995
+ * @since 1.2.3
996
+ *
997
+ * @param string $text Translatable string.
998
+ * @param string $key String key for overrides.
999
+ * @param string $slug Module slug for overrides.
1000
+ *
1001
+ * @return string
1002
+ */
1003
+ function fs_esc_html_inline( $text, $key = '', $slug = 'freemius' ) {
1004
+ return esc_html( _fs_text_inline( $text, $key, $slug ) );
1005
+ }
1006
+
1007
+ /**
1008
+ * @author Vova Feldman (@svovaf)
1009
+ * @since 1.2.3
1010
+ *
1011
+ * @param string $text Translatable string.
1012
+ * @param string $context Context information for the translators.
1013
+ * @param string $key String key for overrides.
1014
+ * @param string $slug Module slug for overrides.
1015
+ *
1016
+ * @return string
1017
+ */
1018
+ function fs_esc_html_x_inline( $text, $context, $key = '', $slug = 'freemius' ) {
1019
+ return esc_html( _fs_text_x_inline( $text, $context, $key, $slug ) );
1020
+ }
1021
+
1022
+ /**
1023
+ * @author Vova Feldman (@svovaf)
1024
+ * @since 1.2.3
1025
+ *
1026
+ * @param string $text Translatable string.
1027
+ * @param string $context Context information for the translators.
1028
+ * @param string $key String key for overrides.
1029
+ * @param string $slug Module slug for overrides.
1030
+ */
1031
+ function fs_esc_html_echo_x_inline( $text, $context, $key = '', $slug = 'freemius' ) {
1032
+ echo esc_html( _fs_text_x_inline( $text, $context, $key, $slug ) );
1033
+ }
1034
+
1035
+ /**
1036
+ * @author Vova Feldman
1037
+ * @since 1.2.1.6
1038
+ *
1039
+ * @param string $key
1040
+ * @param string $slug
1041
+ */
1042
+ function fs_esc_html_echo( $key, $slug ) {
1043
+ echo esc_html( fs_text( $key, $slug ) );
1044
+ }
1045
+
1046
+ /**
1047
+ * @author Vova Feldman (@svovaf)
1048
+ * @since 1.2.3
1049
+ *
1050
+ * @param string $text Translatable string.
1051
+ * @param string $key String key for overrides.
1052
+ * @param string $slug Module slug for overrides.
1053
+ */
1054
+ function fs_esc_html_echo_inline( $text, $key = '', $slug = 'freemius' ) {
1055
+ echo esc_html( _fs_text_inline( $text, $key, $slug ) );
1056
+ }
1057
 
1058
  #endregion
freemius/includes/fs-essential-functions.php CHANGED
@@ -158,6 +158,7 @@
158
  * Retrieve a translated text by key.
159
  *
160
  * @deprecated Use `fs_text()` instead since methods starting with `__` trigger warnings in Php 7.
 
161
  *
162
  * @author Vova Feldman (@svovaf)
163
  * @since 1.1.4
@@ -209,6 +210,8 @@
209
  *
210
  * @deprecated Use `fs_echo()` instead for consistency with `fs_text()`.
211
  *
 
 
212
  * @author Vova Feldman (@svovaf)
213
  * @since 1.1.4
214
  *
158
  * Retrieve a translated text by key.
159
  *
160
  * @deprecated Use `fs_text()` instead since methods starting with `__` trigger warnings in Php 7.
161
+ * @todo Remove this method in the future.
162
  *
163
  * @author Vova Feldman (@svovaf)
164
  * @since 1.1.4
210
  *
211
  * @deprecated Use `fs_echo()` instead for consistency with `fs_text()`.
212
  *
213
+ * @todo Remove this method in the future.
214
+ *
215
  * @author Vova Feldman (@svovaf)
216
  * @since 1.1.4
217
  *
freemius/includes/fs-plugin-info-dialog.php CHANGED
@@ -325,8 +325,12 @@
325
  $plan->has_trial()
326
  ) . '" target="_parent">' .
327
  ( ! $plan->has_trial() ?
328
- fs_text( 'purchase', $api->slug ) :
329
- sprintf( fs_text( 'start-free-x', $api->slug ), $this->get_trial_period( $plan ) )
 
 
 
 
330
  ) .
331
  '</a>';
332
 
@@ -348,23 +352,23 @@
348
  * plugin is wordpress.org compliant. Therefore, require a download
349
  * since installing external plugins is not allowed by the wp.org guidelines.
350
  */
351
- return ' <a class="button button-primary right" href="' . esc_url( $api->download_link ) . '" target="_blank">' . fs_text( 'download-latest', $api->slug ) . '</a>';
352
  } else {
353
  if ( $status['url'] ) {
354
- return '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . fs_text( 'install-now', $api->slug ) . '</a>';
355
  }
356
  }
357
  break;
358
  case 'update_available':
359
  if ( $status['url'] ) {
360
- return '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . fs_text( 'install-update-now', $api->slug ) . '</a>';
361
  }
362
  break;
363
  case 'newer_installed':
364
- return '<a class="button button-primary right disabled">' . sprintf( fs_text( 'newer-installed', $api->slug ), $status['version'] ) . '</a>';
365
  break;
366
  case 'latest_installed':
367
- return '<a class="button button-primary right disabled">' . fs_text( 'latest-installed', $api->slug ) . '</a>';
368
  break;
369
  }
370
 
@@ -477,13 +481,13 @@
477
  );
478
 
479
  $plugins_section_titles = array(
480
- 'description' => fs_text( 'description', $api->slug ),
481
- 'installation' => fs_text( 'installation', $api->slug ),
482
- 'faq' => fs_text( 'faq', $api->slug ),
483
- 'screenshots' => fs_text( 'screenshots', $api->slug ),
484
- 'changelog' => fs_text( 'changelog', $api->slug ),
485
- 'reviews' => fs_text( 'reviews', $api->slug ),
486
- 'other_notes' => fs_text( 'other_notes', $api->slug ),
487
  );
488
 
489
  // Sanitize HTML
@@ -498,7 +502,7 @@
498
  }
499
 
500
  // Add after $api->slug is ready.
501
- $plugins_section_titles['features'] = fs_text( 'features-and-pricing', $api->slug );
502
 
503
  $_tab = esc_attr( $tab );
504
 
@@ -508,7 +512,7 @@
508
  $section = array_shift( $section_titles );
509
  }
510
 
511
- iframe_header( fs_text( 'plugin-install', $api->slug ) );
512
 
513
  $_with_banner = '';
514
 
@@ -580,7 +584,7 @@
580
  <div class="fs-plan<?php if ( ! $is_multi_cycle ) {
581
  echo ' fs-single-cycle';
582
  } ?>" data-plan-id="<?php echo $plan->id ?>">
583
- <h3 data-plan="<?php echo $plan->id ?>"><?php printf( fs_text( 'x-plan', $api->slug ), $plan->title ) ?></h3>
584
  <?php $has_annual = $first_pricing->has_annual() ?>
585
  <?php $has_monthly = $first_pricing->has_monthly() ?>
586
  <div class="nav-tab-wrapper">
@@ -605,9 +609,22 @@
605
  <a class="nav-tab" data-billing-cycle="<?php echo $cycle ?>"
606
  data-pricing="<?php echo esc_attr( json_encode( $prices ) ) ?>">
607
  <?php if ( $is_featured ) : ?>
608
- <label>&#9733; <?php fs_echo( 'best', $api->slug ) ?> &#9733;</label>
609
  <?php endif ?>
610
- <?php fs_echo( $cycle, $api->slug ) ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
611
  </a>
612
  <?php endif ?>
613
  <?php $i ++; endforeach ?>
@@ -618,21 +635,21 @@
618
  _formatBillingFrequency = function (cycle) {
619
  switch (cycle) {
620
  case 'monthly':
621
- return '<?php printf(fs_text('billed-x', $api->slug), fs_text('monthly', $api->slug)) ?>';
622
  case 'annual':
623
- return '<?php printf(fs_text('billed-x', $api->slug), fs_text('annually', $api->slug)) ?>';
624
  case 'lifetime':
625
- return '<?php printf(fs_text('billed-x', $api->slug), fs_text('once', $api->slug)) ?>';
626
  }
627
  },
628
  _formatLicensesTitle = function (pricing) {
629
  switch (pricing.licenses) {
630
  case 1:
631
- return '<?php fs_echo( 'license-single-site', $api->slug ) ?>';
632
  case null:
633
- return '<?php fs_echo( 'license-unlimited', $api->slug ) ?>';
634
  default:
635
- return '<?php fs_echo( 'license-x-sites', $api->slug ) ?>'.replace('%s', pricing.licenses);
636
  }
637
  },
638
  _formatPrice = function (pricing, cycle, multipleLicenses) {
@@ -642,14 +659,14 @@
642
  var priceCycle;
643
  switch (cycle) {
644
  case 'monthly':
645
- priceCycle = ' / <?php fs_echo('mo', $api->slug) ?>';
646
  break;
647
  case 'lifetime':
648
  priceCycle = '';
649
  break;
650
  case 'annual':
651
  default:
652
- priceCycle = ' / <?php fs_echo('year', $api->slug) ?>';
653
  break;
654
  }
655
 
@@ -701,7 +718,7 @@
701
 
702
  // Render licenses prices.
703
  if (1 == pricing.length) {
704
- html = '<li><label><?php fs_echo( 'price', $api->slug ) ?>: ' + _formatPrice(pricing[0], billingCycle, false) + '</label></li>';
705
  } else {
706
  for (var i = 0; i < pricing.length; i++) {
707
  html += '<li><label><input name="pricing-<?php echo $plan->id ?>" type="radio" value="' + pricing[i].id + '">' + _formatPrice(pricing[i], billingCycle) + '</label></li>';
@@ -747,7 +764,7 @@
747
  <?php $annual_discount = ( $has_annual && $has_monthly ) ? $plan->pricing[0]->annual_discount_percentage() : 0 ?>
748
  <?php if ( $annual_discount > 0 ) : ?>
749
  <span
750
- class="fs-annual-discount"><?php printf( fs_text( 'save-x', $api->slug ), $annual_discount . '%' ) ?></span>
751
  <?php endif ?>
752
  <ul class="fs-licenses">
753
  </ul>
@@ -757,10 +774,10 @@
757
  <?php $trial_period = $this->get_trial_period( $plan ) ?>
758
  <ul class="fs-trial-terms">
759
  <li>
760
- <i class="dashicons dashicons-yes"></i><?php printf( fs_text( 'no-commitment-x', $api->slug ), $trial_period ) ?>
761
  </li>
762
  <li>
763
- <i class="dashicons dashicons-yes"></i><?php printf( fs_text( 'after-x-pay-as-little-y', $api->slug ), $trial_period, '<var class="fs-price">' . $this->get_price_tag( $plan, $plan->pricing[0] ) . '</var>' ) ?>
764
  </li>
765
  </ul>
766
  <?php endif ?>
@@ -771,85 +788,99 @@
771
  <?php endif ?>
772
  <?php endif ?>
773
  <div>
774
- <h3><?php fs_echo( 'details', $api->slug ) ?></h3>
775
  <ul>
776
  <?php if ( ! empty( $api->version ) ) { ?>
777
- <li><strong><?php fs_echo( 'version', $api->slug ); ?>:</strong> <?php echo $api->version; ?></li>
778
  <?php
779
  }
780
  if ( ! empty( $api->author ) ) {
781
  ?>
782
  <li>
783
- <strong><?php fs_echo( 'author:', $api->slug ); ?></strong> <?php echo links_add_target( $api->author, '_blank' ); ?>
784
  </li>
785
  <?php
786
  }
787
  if ( ! empty( $api->last_updated ) ) {
788
  ?>
789
- <li><strong><?php fs_echo( 'last-updated:', $api->slug ); ?></strong> <span
790
  title="<?php echo $api->last_updated; ?>">
791
- <?php printf( fs_text( 'x-ago', $api->slug ), human_time_diff( strtotime( $api->last_updated ) ) ); ?>
 
 
 
 
792
  </span></li>
793
  <?php
794
  }
795
  if ( ! empty( $api->requires ) ) {
796
  ?>
797
  <li>
798
- <strong><?php fs_echo( 'requires-wordpress-version:', $api->slug ); ?></strong> <?php printf( fs_text( 'x-or-higher', $api->slug ), $api->requires ); ?>
799
  </li>
800
  <?php
801
  }
802
  if ( ! empty( $api->tested ) ) {
803
  ?>
804
- <li><strong><?php fs_echo( 'compatible-up-to:', $api->slug ); ?></strong> <?php echo $api->tested; ?>
805
  </li>
806
  <?php
807
  }
808
  if ( ! empty( $api->downloaded ) ) {
809
  ?>
810
  <li>
811
- <strong><?php fs_echo( 'downloaded:', $api->slug ); ?></strong> <?php printf(
812
- fs_text( ( 1 == $api->downloaded ) ? 'x-time' : 'x-times', $api->slug ),
 
 
 
 
 
813
  number_format_i18n( $api->downloaded )
814
- ); ?>
815
  </li>
816
  <?php
817
  }
818
  if ( ! empty( $api->slug ) && empty( $api->external ) ) {
819
  ?>
820
  <li><a target="_blank"
821
- href="https://wordpress.org/plugins/<?php echo $api->slug; ?>/"><?php fs_echo( 'wp-org-plugin-page', $api->slug ); ?> &#187;</a>
822
  </li>
823
  <?php
824
  }
825
  if ( ! empty( $api->homepage ) ) {
826
  ?>
827
  <li><a target="_blank"
828
- href="<?php echo esc_url( $api->homepage ); ?>"><?php fs_echo( 'plugin-homepage', $api->slug ); ?> &#187;</a>
829
  </li>
830
  <?php
831
  }
832
  if ( ! empty( $api->donate_link ) && empty( $api->contributors ) ) {
833
  ?>
834
  <li><a target="_blank"
835
- href="<?php echo esc_url( $api->donate_link ); ?>"><?php fs_echo( 'donate-to-plugin', $api->slug ); ?> &#187;</a>
836
  </li>
837
  <?php } ?>
838
  </ul>
839
  </div>
840
  <?php if ( ! empty( $api->rating ) ) { ?>
841
- <h3><?php fs_echo( 'average-rating', $api->slug ); ?></h3>
842
  <?php wp_star_rating( array(
843
  'rating' => $api->rating,
844
  'type' => 'percent',
845
  'number' => $api->num_ratings
846
  ) ); ?>
847
- <small>(<?php printf(
848
- fs_text( 'based-on-x', $api->slug ),
849
  sprintf(
850
- fs_text( ( 1 == $api->num_ratings ) ? 'x-rating' : 'x-ratings', $api->slug ),
 
 
 
 
 
851
  number_format_i18n( $api->num_ratings )
852
- ) ); ?>)</small>
853
  <?php
854
  }
855
 
@@ -858,7 +889,12 @@
858
  // Avoid div-by-zero.
859
  $_rating = $api->num_ratings ? ( $ratecount / $api->num_ratings ) : 0;
860
  $stars_label = sprintf(
861
- fs_text( ( 1 == $key ) ? 'x-star' : 'x-stars', $api->slug ),
 
 
 
 
 
862
  number_format_i18n( $key )
863
  );
864
  ?>
@@ -866,7 +902,11 @@
866
  <span class="counter-label"><a
867
  href="https://wordpress.org/support/view/plugin-reviews/<?php echo $api->slug; ?>?filter=<?php echo $key; ?>"
868
  target="_blank"
869
- title="<?php echo esc_attr( sprintf( fs_text('click-to-reviews', $api->slug), $stars_label) ) ?>"><?php echo $stars_label ?></a></span>
 
 
 
 
870
  <span class="counter-back">
871
  <span class="counter-bar" style="width: <?php echo 92 * $_rating; ?>px;"></span>
872
  </span>
@@ -877,7 +917,7 @@
877
  }
878
  if ( ! empty( $api->contributors ) ) {
879
  ?>
880
- <h3><?php fs_echo( 'contributors', $api->slug ); ?></h3>
881
  <ul class="contributors">
882
  <?php
883
  foreach ( (array) $api->contributors as $contrib_username => $contrib_profile ) {
@@ -898,16 +938,16 @@
898
  </ul>
899
  <?php if ( ! empty( $api->donate_link ) ) { ?>
900
  <a target="_blank"
901
- href="<?php echo esc_url( $api->donate_link ); ?>"><?php fs_echo( 'donate-to-plugin', $api->slug ) ?> &#187;</a>
902
  <?php } ?>
903
  <?php } ?>
904
  </div>
905
  <div id="section-holder" class="wrap">
906
  <?php
907
  if ( ! empty( $api->tested ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->tested ) ), $api->tested, '>' ) ) {
908
- echo '<div class="notice notice-warning"><p>' . '<strong>' . fs_text( 'warning:', $api->slug ) . '</strong> ' . fs_text( 'not-tested-warning', $api->slug ) . '</p></div>';
909
  } else if ( ! empty( $api->requires ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->requires ) ), $api->requires, '<' ) ) {
910
- echo '<div class="notice notice-warning"><p>' . '<strong>' . fs_text( 'warning:', $api->slug ) . '</strong> ' . fs_text( 'not-compatible-warning', $api->slug ) . '</p></div>';
911
  }
912
 
913
  foreach ( (array) $api->sections as $section_name => $content ) {
@@ -925,7 +965,9 @@
925
  $missing_notice = array(
926
  'type' => 'error',
927
  'id' => md5( microtime() ),
928
- 'message' => fs_text( ( $api->is_paid ? 'paid-addon-not-deployed' : 'free-addon-not-deployed' ), $api->slug ),
 
 
929
  );
930
  fs_require_template( 'admin-notice.php', $missing_notice );
931
  }
325
  $plan->has_trial()
326
  ) . '" target="_parent">' .
327
  ( ! $plan->has_trial() ?
328
+ fs_text_x_inline( 'Purchase', 'verb', 'purchase', $api->slug ) :
329
+ sprintf(
330
+ /* translators: %s: N-days trial */
331
+ fs_text_inline( 'Start my free %s', 'start-free-x', $api->slug ),
332
+ $this->get_trial_period( $plan )
333
+ )
334
  ) .
335
  '</a>';
336
 
352
  * plugin is wordpress.org compliant. Therefore, require a download
353
  * since installing external plugins is not allowed by the wp.org guidelines.
354
  */
355
+ return ' <a class="button button-primary right" href="' . esc_url( $api->download_link ) . '" target="_blank">' . fs_esc_html_x_inline( 'Download Latest', 'as download latest version', 'download-latest', $api->slug ) . '</a>';
356
  } else {
357
  if ( $status['url'] ) {
358
+ return '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . fs_esc_html_inline( 'Install Now', 'install-now', $api->slug ) . '</a>';
359
  }
360
  }
361
  break;
362
  case 'update_available':
363
  if ( $status['url'] ) {
364
+ return '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . fs_text_inline( 'Install Update Now', 'install-update-now', $api->slug ) . '</a>';
365
  }
366
  break;
367
  case 'newer_installed':
368
+ return '<a class="button button-primary right disabled">' . sprintf( fs_text_inline( 'Newer Version (%s) Installed', 'newer-installed', $api->slug ), $status['version'] ) . '</a>';
369
  break;
370
  case 'latest_installed':
371
+ return '<a class="button button-primary right disabled">' . fs_text_inline( 'Latest Version Installed', 'latest-installed', $api->slug ) . '</a>';
372
  break;
373
  }
374
 
481
  );
482
 
483
  $plugins_section_titles = array(
484
+ 'description' => fs_text_x_inline( 'Description', 'Plugin installer section title', 'description', $api->slug ),
485
+ 'installation' => fs_text_x_inline( 'Installation', 'Plugin installer section title', 'installation', $api->slug ),
486
+ 'faq' => fs_text_x_inline( 'FAQ', 'Plugin installer section title', 'faq', $api->slug ),
487
+ 'screenshots' => fs_text_inline( 'Screenshots', 'screenshots', $api->slug ),
488
+ 'changelog' => fs_text_x_inline( 'Changelog', 'Plugin installer section title', 'changelog', $api->slug ),
489
+ 'reviews' => fs_text_x_inline( 'Reviews', 'Plugin installer section title', 'reviews', $api->slug ),
490
+ 'other_notes' => fs_text_x_inline( 'Other Notes', 'Plugin installer section title', 'other-notes', $api->slug ),
491
  );
492
 
493
  // Sanitize HTML
502
  }
503
 
504
  // Add after $api->slug is ready.
505
+ $plugins_section_titles['features'] = fs_text_x_inline( 'Features & Pricing', 'Plugin installer section title', 'features-and-pricing', $api->slug );
506
 
507
  $_tab = esc_attr( $tab );
508
 
512
  $section = array_shift( $section_titles );
513
  }
514
 
515
+ iframe_header( fs_text_inline( 'Plugin Install', 'plugin-install', $api->slug ) );
516
 
517
  $_with_banner = '';
518
 
584
  <div class="fs-plan<?php if ( ! $is_multi_cycle ) {
585
  echo ' fs-single-cycle';
586
  } ?>" data-plan-id="<?php echo $plan->id ?>">
587
+ <h3 data-plan="<?php echo $plan->id ?>"><?php echo esc_html( sprintf( fs_text_x_inline( '%s Plan', 'e.g. Professional Plan', 'x-plan', $api->slug ), $plan->title ) ) ?></h3>
588
  <?php $has_annual = $first_pricing->has_annual() ?>
589
  <?php $has_monthly = $first_pricing->has_monthly() ?>
590
  <div class="nav-tab-wrapper">
609
  <a class="nav-tab" data-billing-cycle="<?php echo $cycle ?>"
610
  data-pricing="<?php echo esc_attr( json_encode( $prices ) ) ?>">
611
  <?php if ( $is_featured ) : ?>
612
+ <label>&#9733; <?php fs_esc_html_echo_x_inline( 'Best', 'e.g. the best product', 'best', $api->slug ) ?> &#9733;</label>
613
  <?php endif ?>
614
+ <?php
615
+ switch ($cycle)
616
+ {
617
+ case 'monthly':
618
+ fs_esc_html_echo_x_inline( 'Monthly', 'as every month', 'monthly', $api->slug );
619
+ break;
620
+ case 'annual':
621
+ fs_esc_html_echo_x_inline( 'Annual', 'as once a year', 'annual', $api->slug );
622
+ break;
623
+ case 'lifetime':
624
+ fs_esc_html_echo_inline( 'Lifetime', 'lifetime', $api->slug );
625
+ break;
626
+ }
627
+ ?>
628
  </a>
629
  <?php endif ?>
630
  <?php $i ++; endforeach ?>
635
  _formatBillingFrequency = function (cycle) {
636
  switch (cycle) {
637
  case 'monthly':
638
+ return '<?php printf( fs_text_x_inline( 'Billed %s', 'e.g. billed monthly', 'billed-x', $api->slug), fs_text_x_inline( 'Monthly', 'as every month', 'monthly', $api->slug ) ) ?>';
639
  case 'annual':
640
+ return '<?php printf( fs_text_x_inline( 'Billed %s', 'e.g. billed monthly', 'billed-x', $api->slug), fs_text_x_inline( 'Annually', 'as once a year', 'annually', $api->slug ) ) ?>';
641
  case 'lifetime':
642
+ return '<?php printf( fs_text_x_inline( 'Billed %s', 'e.g. billed monthly', 'billed-x', $api->slug), fs_text_x_inline( 'Once', 'as once a year', 'once', $api->slug ) ) ?>';
643
  }
644
  },
645
  _formatLicensesTitle = function (pricing) {
646
  switch (pricing.licenses) {
647
  case 1:
648
+ return '<?php fs_esc_attr_echo_inline( 'Single Site License', 'license-single-site', $api->slug ) ?>';
649
  case null:
650
+ return '<?php fs_esc_attr_echo_inline( 'Unlimited Licenses', 'license-unlimited', $api->slug ) ?>';
651
  default:
652
+ return '<?php fs_esc_attr_echo_inline( 'Up to %s Sites', 'license-x-sites', $api->slug ) ?>'.replace('%s', pricing.licenses);
653
  }
654
  },
655
  _formatPrice = function (pricing, cycle, multipleLicenses) {
659
  var priceCycle;
660
  switch (cycle) {
661
  case 'monthly':
662
+ priceCycle = ' / <?php fs_echo_x_inline( 'mo', 'as monthly period', 'mo', $api->slug ) ?>';
663
  break;
664
  case 'lifetime':
665
  priceCycle = '';
666
  break;
667
  case 'annual':
668
  default:
669
+ priceCycle = ' / <?php fs_echo_x_inline('year', 'as annual period', 'year', $api->slug) ?>';
670
  break;
671
  }
672
 
718
 
719
  // Render licenses prices.
720
  if (1 == pricing.length) {
721
+ html = '<li><label><?php echo fs_esc_attr_x_inline( 'Price', 'noun', 'price', $api->slug ) ?>: ' + _formatPrice(pricing[0], billingCycle, false) + '</label></li>';
722
  } else {
723
  for (var i = 0; i < pricing.length; i++) {
724
  html += '<li><label><input name="pricing-<?php echo $plan->id ?>" type="radio" value="' + pricing[i].id + '">' + _formatPrice(pricing[i], billingCycle) + '</label></li>';
764
  <?php $annual_discount = ( $has_annual && $has_monthly ) ? $plan->pricing[0]->annual_discount_percentage() : 0 ?>
765
  <?php if ( $annual_discount > 0 ) : ?>
766
  <span
767
+ class="fs-annual-discount"><?php printf( fs_esc_html_x_inline( 'Save %s', 'as a discount of $5 or 10%', 'save-x', $api->slug ), $annual_discount . '%' ) ?></span>
768
  <?php endif ?>
769
  <ul class="fs-licenses">
770
  </ul>
774
  <?php $trial_period = $this->get_trial_period( $plan ) ?>
775
  <ul class="fs-trial-terms">
776
  <li>
777
+ <i class="dashicons dashicons-yes"></i><?php echo esc_html( sprintf( fs_text_inline( 'No commitment for %s - cancel anytime', 'no-commitment-x', $api->slug ), $trial_period ) ) ?>
778
  </li>
779
  <li>
780
+ <i class="dashicons dashicons-yes"></i><?php printf( esc_html( fs_text_inline( 'After your free %s, pay as little as %s', 'after-x-pay-as-little-y', $api->slug ) ), $trial_period, '<var class="fs-price">' . $this->get_price_tag( $plan, $plan->pricing[0] ) . '</var>' ) ?>
781
  </li>
782
  </ul>
783
  <?php endif ?>
788
  <?php endif ?>
789
  <?php endif ?>
790
  <div>
791
+ <h3><?php fs_echo_inline( 'Details', 'details', $api->slug ) ?></h3>
792
  <ul>
793
  <?php if ( ! empty( $api->version ) ) { ?>
794
+ <li><strong><?php fs_esc_html_echo_x_inline( 'Version', 'product version', 'version', $api->slug ); ?>:</strong> <?php echo $api->version; ?></li>
795
  <?php
796
  }
797
  if ( ! empty( $api->author ) ) {
798
  ?>
799
  <li>
800
+ <strong><?php fs_echo_x_inline( 'Author', 'as the plugin author', 'author', $api->slug ); ?>:</strong> <?php echo links_add_target( $api->author, '_blank' ); ?>
801
  </li>
802
  <?php
803
  }
804
  if ( ! empty( $api->last_updated ) ) {
805
  ?>
806
+ <li><strong><?php fs_echo_inline( 'Last Updated', 'last-updated', $api->slug ); ?>:</strong> <span
807
  title="<?php echo $api->last_updated; ?>">
808
+ <?php echo esc_html( sprintf(
809
+ /* translators: %s: time period (e.g. "2 hours" ago) */
810
+ fs_text_x_inline( '%s ago', 'x-ago', $api->slug ),
811
+ human_time_diff( strtotime( $api->last_updated ) )
812
+ ) ) ?>
813
  </span></li>
814
  <?php
815
  }
816
  if ( ! empty( $api->requires ) ) {
817
  ?>
818
  <li>
819
+ <strong><?php fs_esc_html_echo_inline( 'Requires WordPress Version', 'requires-wordpress-version', $api->slug ) ?>:</strong> <?php echo esc_html( sprintf( fs_text_inline( '%s or higher', 'x-or-higher', $api->slug ), $api->requires ) ) ?>
820
  </li>
821
  <?php
822
  }
823
  if ( ! empty( $api->tested ) ) {
824
  ?>
825
+ <li><strong><?php fs_esc_html_echo_inline( 'Compatible up to', 'compatible-up-to', $api->slug ); ?>:</strong> <?php echo $api->tested; ?>
826
  </li>
827
  <?php
828
  }
829
  if ( ! empty( $api->downloaded ) ) {
830
  ?>
831
  <li>
832
+ <strong><?php fs_esc_html_echo_inline( 'Downloaded', 'downloaded', $api->slug ) ?>:</strong> <?php echo esc_html( sprintf(
833
+ ( ( 1 == $api->downloaded ) ?
834
+ /* translators: %s: 1 or One (Number of times downloaded) */
835
+ fs_text_inline( '%s time', 'x-time', $api->slug ) :
836
+ /* translators: %s: Number of times downloaded */
837
+ fs_text_inline( '%s times', 'x-times', $api->slug )
838
+ ),
839
  number_format_i18n( $api->downloaded )
840
+ ) ); ?>
841
  </li>
842
  <?php
843
  }
844
  if ( ! empty( $api->slug ) && empty( $api->external ) ) {
845
  ?>
846
  <li><a target="_blank"
847
+ 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 ) ?> &#187;</a>
848
  </li>
849
  <?php
850
  }
851
  if ( ! empty( $api->homepage ) ) {
852
  ?>
853
  <li><a target="_blank"
854
+ href="<?php echo esc_url( $api->homepage ); ?>"><?php fs_esc_html_echo_inline( 'Plugin Homepage', 'plugin-homepage', $api->slug ) ?> &#187;</a>
855
  </li>
856
  <?php
857
  }
858
  if ( ! empty( $api->donate_link ) && empty( $api->contributors ) ) {
859
  ?>
860
  <li><a target="_blank"
861
+ href="<?php echo esc_url( $api->donate_link ); ?>"><?php fs_esc_html_echo_inline( 'Donate to this plugin', 'donate-to-plugin', $api->slug ) ?> &#187;</a>
862
  </li>
863
  <?php } ?>
864
  </ul>
865
  </div>
866
  <?php if ( ! empty( $api->rating ) ) { ?>
867
+ <h3><?php fs_echo_inline( 'Average Rating', 'average-rating', $api->slug ); ?></h3>
868
  <?php wp_star_rating( array(
869
  'rating' => $api->rating,
870
  'type' => 'percent',
871
  'number' => $api->num_ratings
872
  ) ); ?>
873
+ <small>(<?php echo esc_html( sprintf(
874
+ fs_text_inline( 'based on %s', 'based-on-x', $api->slug ),
875
  sprintf(
876
+ ( ( 1 == $api->num_ratings ) ?
877
+ /* translators: %s: 1 or One */
878
+ fs_text_inline( '%s rating', 'x-rating', $api->slug ) :
879
+ /* translators: %s: Number larger than 1 */
880
+ fs_text_inline( '%s ratings', 'x-ratings', $api->slug )
881
+ ),
882
  number_format_i18n( $api->num_ratings )
883
+ ) ) ) ?>)</small>
884
  <?php
885
  }
886
 
889
  // Avoid div-by-zero.
890
  $_rating = $api->num_ratings ? ( $ratecount / $api->num_ratings ) : 0;
891
  $stars_label = sprintf(
892
+ ( ( 1 == $key ) ?
893
+ /* translators: %s: 1 or One */
894
+ fs_text_inline( '%s star', 'x-star', $api->slug ) :
895
+ /* translators: %s: Number larger than 1 */
896
+ fs_text_inline( '%s stars', 'x-stars', $api->slug )
897
+ ),
898
  number_format_i18n( $key )
899
  );
900
  ?>
902
  <span class="counter-label"><a
903
  href="https://wordpress.org/support/view/plugin-reviews/<?php echo $api->slug; ?>?filter=<?php echo $key; ?>"
904
  target="_blank"
905
+ title="<?php echo esc_attr( sprintf(
906
+ /* translators: %s: # of stars (e.g. 5 stars) */
907
+ fs_text_inline( 'Click to see reviews that provided a rating of %s', 'click-to-reviews', $api->slug ),
908
+ $stars_label
909
+ ) ) ?>"><?php echo $stars_label ?></a></span>
910
  <span class="counter-back">
911
  <span class="counter-bar" style="width: <?php echo 92 * $_rating; ?>px;"></span>
912
  </span>
917
  }
918
  if ( ! empty( $api->contributors ) ) {
919
  ?>
920
+ <h3><?php fs_echo_inline( 'Contributors', 'contributors', $api->slug ); ?></h3>
921
  <ul class="contributors">
922
  <?php
923
  foreach ( (array) $api->contributors as $contrib_username => $contrib_profile ) {
938
  </ul>
939
  <?php if ( ! empty( $api->donate_link ) ) { ?>
940
  <a target="_blank"
941
+ href="<?php echo esc_url( $api->donate_link ); ?>"><?php fs_echo_inline( 'Donate to this plugin', 'donate-to-plugin', $api->slug ) ?> &#187;</a>
942
  <?php } ?>
943
  <?php } ?>
944
  </div>
945
  <div id="section-holder" class="wrap">
946
  <?php
947
  if ( ! empty( $api->tested ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->tested ) ), $api->tested, '>' ) ) {
948
+ echo '<div class="notice notice-warning"><p>' . '<strong>' . fs_text_inline( 'Warning', 'warning', $api->slug ) . ':</strong> ' . fs_text_inline( 'This plugin has not been tested with your current version of WordPress.', 'not-tested-warning', $api->slug ) . '</p></div>';
949
  } else if ( ! empty( $api->requires ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->requires ) ), $api->requires, '<' ) ) {
950
+ echo '<div class="notice notice-warning"><p>' . '<strong>' . fs_text_inline( 'Warning', 'warning', $api->slug ) . ':</strong> ' . fs_text_inline( 'This plugin has not been marked as compatible with your version of WordPress.', 'not-compatible-warning', $api->slug ) . '</p></div>';
951
  }
952
 
953
  foreach ( (array) $api->sections as $section_name => $content ) {
965
  $missing_notice = array(
966
  'type' => 'error',
967
  'id' => md5( microtime() ),
968
+ 'message' => $api->is_paid ?
969
+ fs_text_inline( 'Paid add-on must be deployed to Freemius.', 'paid-addon-not-deployed', $api->slug ) :
970
+ fs_text_inline( 'Add-on must be deployed to WordPress.org or Freemius.', 'free-addon-not-deployed', $api->slug ),
971
  );
972
  fs_require_template( 'admin-notice.php', $missing_notice );
973
  }
freemius/includes/i18n.php CHANGED
@@ -4,6 +4,8 @@
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.4
 
 
7
  */
8
 
9
  if ( ! defined( 'ABSPATH' ) ) {
@@ -29,7 +31,7 @@
29
  * my_freemius->override_i18n( array(
30
  * 'opt-in-connect' => __( "Yes - I'm in!", '{your-text_domain}' ),
31
  * 'skip' => __( 'Not today', '{your-text_domain}' ),
32
- * );
33
  */
34
  global $fs_text;
35
 
@@ -95,8 +97,54 @@
95
  'optin-x-now' => _fs_text( 'Opt in to make "%s" Better!' ),
96
  'error' => _fs_text( 'Error' ),
97
  'failed-finding-main-path' => _fs_text( 'Freemius SDK couldn\'t find the plugin\'s main file. Please contact sdk@freemius.com with the current error.' ),
98
- #region Account
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
 
 
100
  'expiration' => _fs_x( 'Expiration', 'as expiration date' ),
101
  'license' => _fs_x( 'License', 'as software license' ),
102
  'not-verified' => _fs_text( 'not verified' ),
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.4
7
+ *
8
+ * @deprecated This file is no longer in use. It's still in the project for backward compatibility.
9
  */
10
 
11
  if ( ! defined( 'ABSPATH' ) ) {
31
  * my_freemius->override_i18n( array(
32
  * 'opt-in-connect' => __( "Yes - I'm in!", '{your-text_domain}' ),
33
  * 'skip' => __( 'Not today', '{your-text_domain}' ),
34
+ * ) );
35
  */
36
  global $fs_text;
37
 
97
  'optin-x-now' => _fs_text( 'Opt in to make "%s" Better!' ),
98
  'error' => _fs_text( 'Error' ),
99
  'failed-finding-main-path' => _fs_text( 'Freemius SDK couldn\'t find the plugin\'s main file. Please contact sdk@freemius.com with the current error.' ),
100
+ 'learn-more' => _fs_text( 'Learn more' ),
101
+
102
+ #region Affiliation
103
+ 'affiliation' => _fs_text( 'Affiliation' ),
104
+ 'affiliate' => _fs_text( 'Affiliate' ),
105
+ 'affiliate-tracking' => _fs_text( '%s tracking cookie after the first visit to maximize earnings potential.' ),
106
+ 'renewals-commission' => _fs_text( 'Get commission for automated subscription renewals.' ),
107
+ 'affiliate-application-accepted' => _fs_text( "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s." ),
108
+ 'affiliate-application-thank-you' => _fs_text( "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." ),
109
+ 'affiliate-application-rejected' => _fs_text( "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." ),
110
+ 'affiliate-account-suspended' => _fs_text( 'Your affiliation account was temporarily suspended.' ),
111
+ 'affiliate-account-blocked' => _fs_text( 'Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support.' ),
112
+ 'become-an-ambassador' => _fs_text( 'Like the %s? Become our ambassador and earn cash ;-)' ),
113
+ 'become-an-ambassador-admin-notice' => _fs_text( '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!' ),
114
+ 'refer-new-customers' => _fs_text( 'Refer new customers to our %s and earn %s commission on each successful sale you refer!' ),
115
+ 'program-summary' => _fs_text( 'Program Summary' ),
116
+ 'commission-on-new-license-purchase' => _fs_text( '%s commission when a customer purchases a new license.' ),
117
+ 'unlimited-commissions' => _fs_text( 'Unlimited commissions.' ),
118
+ 'minimum-payout-amount' => _fs_text( '%s minimum payout amount.' ),
119
+ 'payouts-unit-and-processing' => _fs_text( 'Payouts are in USD and processed monthly via PayPal.' ),
120
+ 'commission-payment' => _fs_text( 'As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days.' ),
121
+ 'become-an-affiliate' => _fs_text( 'Become an affiliate' ),
122
+ 'apply-to-become-an-affiliate' => _fs_text( 'Apply to become an affiliate' ),
123
+ 'full-name' => _fs_text( 'Full name' ),
124
+ 'paypal-account-email-address' => _fs_text( 'PayPal account email address' ),
125
+ 'promotion-methods' => _fs_text( 'Promotion methods' ),
126
+ 'social-media' => _fs_text( 'Social media (Facebook, Twitter, etc.)' ),
127
+ 'mobile-apps' => _fs_text( 'Mobile apps' ),
128
+ 'statistics-information-field-label' => _fs_text( 'Website, email, and social media statistics (optional)' ),
129
+ 'statistics-information-field-desc' => _fs_text( '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).' ),
130
+ 'promotion-method-desc-field-label' => _fs_text( 'How will you promote us?' ),
131
+ 'promotion-method-desc-field-desc' => _fs_text( 'Please provide details on how you intend to promote %s (please be as specific as possible).' ),
132
+ 'domain-field-label' => _fs_text( 'Where are you going to promote the %s?' ),
133
+ 'domain-field-desc' => _fs_text( 'Enter the domain of your website or other websites from where you plan to promote the %s.' ),
134
+ 'extra-domain-fields-label' => _fs_text( 'Extra Domains' ),
135
+ 'extra-domain-fields-desc' => _fs_text( 'Extra domains where you will be marketing the product from.' ),
136
+ 'add-another-domain' => _fs_text( 'Add another domain' ),
137
+ 'remove' => _fs_x( 'Remove', 'Remove domain' ),
138
+ 'email-address-is-required' => _fs_text( 'Email address is required.' ),
139
+ 'domain-is-required' => _fs_text( 'Domain is required.' ),
140
+ 'invalid-domain' => _fs_text( 'Invalid domain' ),
141
+ 'paypal-email-address-is-required' => _fs_text( 'PayPal email address is required.' ),
142
+ 'processing' => _fs_text( 'Processing...' ),
143
+ 'non-expiring' => _fs_text( 'Non-expiring' ),
144
+ 'account-is-pending-activation' => _fs_text( 'Account is pending activation.' ),
145
+ #endregion Affiliation
146
 
147
+ #region Account
148
  'expiration' => _fs_x( 'Expiration', 'as expiration date' ),
149
  'license' => _fs_x( 'License', 'as software license' ),
150
  'not-verified' => _fs_text( 'not verified' ),
freemius/includes/l10n.php CHANGED
@@ -25,75 +25,6 @@
25
  return $fn( $text, 'freemius' );
26
  }
27
 
28
- /**
29
- * Retrieve the translation of $text and escapes it for safe use in an attribute.
30
- *
31
- * @since 1.2.1.6
32
- *
33
- * @param string $text
34
- *
35
- * @return string
36
- */
37
- function _fs_esc_attr( $text ) {
38
- // Avoid misleading Theme Check warning.
39
- $fn = 'translate';
40
- return esc_attr( $fn( $text, 'freemius' ) );
41
- }
42
-
43
- /**
44
- * Retrieve the translation of $text and escapes it for safe use in HTML output.
45
- *
46
- * @since 1.2.1.6
47
- *
48
- * @param string $text
49
- *
50
- * @return string
51
- */
52
- function _fs_esc_html( $text ) {
53
- // Avoid misleading Theme Check warning.
54
- $fn = 'translate';
55
- return esc_html( $fn( $text, 'freemius' ) );
56
- }
57
-
58
- /**
59
- * Display translated text.
60
- *
61
- * @since 1.2.0
62
- *
63
- * @param string $text
64
- */
65
- function _fs_echo( $text ) {
66
- // Avoid misleading Theme Check warning.
67
- $fn = 'translate';
68
- echo $fn( $text, 'freemius' );
69
- }
70
-
71
- /**
72
- * Display translated text that has been escaped for safe use in an attribute.
73
- *
74
- * @since 1.2.1.6
75
- *
76
- * @param string $text
77
- */
78
- function _fs_esc_attr_echo( $text ) {
79
- // Avoid misleading Theme Check warning.
80
- $fn = 'translate';
81
- echo esc_attr( $fn( $text, 'freemius' ) );
82
- }
83
-
84
- /**
85
- * Display translated text that has been escaped for safe use in HTML output.
86
- *
87
- * @since 1.2.1.6
88
- *
89
- * @param string $text
90
- */
91
- function _fs_esc_html_echo( $text ) {
92
- // Avoid misleading Theme Check warning.
93
- $fn = 'translate';
94
- echo esc_html( $fn( $text, 'freemius' ) );
95
- }
96
-
97
  /**
98
  * Retrieve translated string with gettext context.
99
  *
@@ -115,154 +46,3 @@
115
  $fn = 'translate_with_gettext_context';
116
  return $fn( $text, $context, 'freemius' );
117
  }
118
-
119
- /**
120
- * Display translated string with gettext context.
121
- *
122
- * @since 1.2.1.6
123
- *
124
- * @param string $text
125
- * @param string $context
126
- */
127
- function _fs_ex( $text, $context ) {
128
- // Avoid misleading Theme Check warning.
129
- $fn = '_x';
130
- echo $fn( $text, $context, 'freemius' );
131
- }
132
-
133
- /**
134
- * Translate string with gettext context, and escapes it for safe use in an attribute.
135
- *
136
- * @since 1.2.1.6
137
- *
138
- * @param string $text
139
- * @param string $context
140
- *
141
- * @return string
142
- */
143
- function _fs_esc_attr_x( $text, $context ) {
144
- // Avoid misleading Theme Check warning.
145
- $fn = 'translate_with_gettext_context';
146
- return esc_attr( $fn( $text, $context, 'freemius' ) );
147
- }
148
-
149
- /**
150
- * Translate string with gettext context, and escapes it for safe use in HTML output.
151
- *
152
- * @since 2.9.0
153
- *
154
- * @param string $text
155
- * @param string $context
156
- *
157
- * @return string
158
- */
159
- function _fs_esc_html_x( $text, $context ) {
160
- // Avoid misleading Theme Check warning.
161
- $fn = 'translate_with_gettext_context';
162
- return esc_html( $fn( $text, $context, 'freemius' ) );
163
- }
164
-
165
- /**
166
- * Translates and retrieves the singular or plural form based on the supplied number.
167
- *
168
- * @since 1.2.1.6
169
- *
170
- * @param string $single
171
- * @param string $plural
172
- * @param int $number
173
- *
174
- * @return string
175
- */
176
- function _fs_n( $single, $plural, $number ) {
177
- $translations = get_translations_for_domain( 'freemius' );
178
- $translation = $translations->translate_plural( $single, $plural, $number );
179
-
180
- /**
181
- * Filters the singular or plural form of a string.
182
- *
183
- * @since WP 2.2.0
184
- *
185
- * @param string $translation
186
- * @param string $single
187
- * @param string $plural
188
- * @param string $number
189
- * @param string $domain
190
- */
191
- return apply_filters( 'ngettext', $translation, $single, $plural, $number, 'freemius' );
192
- }
193
-
194
- /**
195
- * Translates and retrieves the singular or plural form based on the supplied number, with gettext context.
196
- *
197
- * @since 1.2.1.6
198
- *
199
- * @param string $single
200
- * @param string $plural
201
- * @param int $number
202
- * @param string $context
203
- *
204
- * @return string
205
- */
206
- function _fs_nx($single, $plural, $number, $context ) {
207
- $translations = get_translations_for_domain( 'freemius' );
208
- $translation = $translations->translate_plural( $single, $plural, $number, $context );
209
-
210
- /**
211
- * Filters the singular or plural form of a string with gettext context.
212
- *
213
- * @since WP 3.0
214
- *
215
- * @param string $translation
216
- * @param string $single
217
- * @param string $plural
218
- * @param string $number
219
- * @param string $context
220
- * @param string $domain
221
- */
222
- return apply_filters( 'ngettext_with_context', $translation, $single, $plural, $number, $context, 'freemius' );
223
- }
224
-
225
- /**
226
- * Registers plural strings in POT file, but does not translate them.
227
- *
228
- * Used when you want to keep structures with translatable plural
229
- * strings and use them later when the number is known.
230
- *
231
- * @since 1.2.1.6
232
- *
233
- * @param string $singular
234
- * @param string $plural
235
- *
236
- * @return array
237
- */
238
- function _fs_n_noop( $singular, $plural ) {
239
- return array(
240
- 'singular' => $singular,
241
- 'plural' => $plural,
242
- 'context' => null,
243
- 'domain' => 'freemius'
244
- );
245
- }
246
-
247
- /**
248
- * Registers plural strings with gettext context in POT file, but does not translate them.
249
- *
250
- * Used when you want to keep structures with translatable plural
251
- * strings and use them later when the number is known.
252
- *
253
- * @since 1.2.1.6
254
- *
255
- * @param string $singular
256
- * @param string $plural
257
- * @param string $context
258
- *
259
- * @return array
260
- */
261
- function _fs_nx_noop( $singular, $plural, $context ) {
262
- return array(
263
- 'singular' => $singular,
264
- 'plural' => $plural,
265
- 'context' => $context,
266
- 'domain' => 'freemius'
267
- );
268
- }
25
  return $fn( $text, 'freemius' );
26
  }
27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  /**
29
  * Retrieve translated string with gettext context.
30
  *
46
  $fn = 'translate_with_gettext_context';
47
  return $fn( $text, $context, 'freemius' );
48
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
freemius/includes/managers/class-fs-admin-menu-manager.php CHANGED
@@ -163,11 +163,12 @@
163
 
164
  if ( ! $is_addon && isset( $menu ) ) {
165
  $this->_default_submenu_items = array(
166
- 'contact' => $this->get_bool_option( $menu, 'contact', true ),
167
- 'support' => $this->get_bool_option( $menu, 'support', true ),
168
- 'account' => $this->get_bool_option( $menu, 'account', true ),
169
- 'pricing' => $this->get_bool_option( $menu, 'pricing', true ),
170
- 'addons' => $this->get_bool_option( $menu, 'addons', true ),
 
171
  );
172
 
173
  // @deprecated
163
 
164
  if ( ! $is_addon && isset( $menu ) ) {
165
  $this->_default_submenu_items = array(
166
+ 'contact' => $this->get_bool_option( $menu, 'contact', true ),
167
+ 'support' => $this->get_bool_option( $menu, 'support', true ),
168
+ 'affiliation' => $this->get_bool_option( $menu, 'affiliation', true ),
169
+ 'account' => $this->get_bool_option( $menu, 'account', true ),
170
+ 'pricing' => $this->get_bool_option( $menu, 'pricing', true ),
171
+ 'addons' => $this->get_bool_option( $menu, 'addons', true ),
172
  );
173
 
174
  // @deprecated
freemius/includes/managers/class-fs-cache-manager.php CHANGED
@@ -166,10 +166,10 @@
166
  isset( $cache_entry->timestamp ) &&
167
  is_numeric( $cache_entry->timestamp )
168
  ) {
169
- return $cache_entry->result;
170
- }
171
 
172
- return $default;
173
  }
174
 
175
  /**
@@ -194,7 +194,7 @@
194
  return $cache_entry->result;
195
  }
196
 
197
- return $default;
198
  }
199
 
200
  /**
@@ -208,7 +208,8 @@
208
  function set( $key, $value, $expiration = WP_FS__TIME_24_HOURS_IN_SEC ) {
209
  $this->_logger->entrance( 'key = ' . $key );
210
 
211
- $cache_entry = new stdClass();
 
212
  $cache_entry->result = $value;
213
  $cache_entry->created = WP_FS__SCRIPT_START_TIME;
214
  $cache_entry->timestamp = WP_FS__SCRIPT_START_TIME + $expiration;
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
  /**
194
  return $cache_entry->result;
195
  }
196
 
197
+ return is_object($default) ? clone $default : $default;
198
  }
199
 
200
  /**
208
  function set( $key, $value, $expiration = WP_FS__TIME_24_HOURS_IN_SEC ) {
209
  $this->_logger->entrance( 'key = ' . $key );
210
 
211
+ $cache_entry = new stdClass();
212
+
213
  $cache_entry->result = $value;
214
  $cache_entry->created = WP_FS__SCRIPT_START_TIME;
215
  $cache_entry->timestamp = WP_FS__SCRIPT_START_TIME + $expiration;
freemius/includes/managers/class-fs-option-manager.php CHANGED
@@ -211,12 +211,39 @@
211
  $this->_logger->entrance( 'option = ' . $option );
212
 
213
  if ( is_array( $this->_options ) ) {
214
- return isset( $this->_options[ $option ] ) ? $this->_options[ $option ] : $default;
 
 
215
  } else if ( is_object( $this->_options ) ) {
216
- return isset( $this->_options->{$option} ) ? $this->_options->{$option} : $default;
217
- }
218
-
219
- return $default;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
220
  }
221
 
222
  /**
@@ -234,10 +261,34 @@
234
  $this->clear();
235
  }
236
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
237
  if ( is_array( $this->_options ) ) {
238
- $this->_options[ $option ] = $value;
239
  } else if ( is_object( $this->_options ) ) {
240
- $this->_options->{$option} = $value;
241
  }
242
 
243
  if ( $flush ) {
211
  $this->_logger->entrance( 'option = ' . $option );
212
 
213
  if ( is_array( $this->_options ) ) {
214
+ $value = isset( $this->_options[ $option ] ) ?
215
+ $this->_options[ $option ] :
216
+ $default;
217
  } else if ( is_object( $this->_options ) ) {
218
+ $value = isset( $this->_options->{$option} ) ?
219
+ $this->_options->{$option} :
220
+ $default;
221
+ } else {
222
+ $value = $default;
223
+ }
224
+
225
+ /**
226
+ * If it's an object, return a clone of the object, otherwise,
227
+ * external changes of the object will actually change the value
228
+ * of the object in the options manager which may lead to an unexpected
229
+ * behaviour and data integrity when a store() call is triggered.
230
+ *
231
+ * Example:
232
+ * $object1 = $options->get_option( 'object1' );
233
+ * $object1->x = 123;
234
+ *
235
+ * $object2 = $options->get_option( 'object2' );
236
+ * $object2->y = 'dummy';
237
+ *
238
+ * $options->set_option( 'object2', $object2, true );
239
+ *
240
+ * If we don't return a clone of option 'object1', setting 'object2'
241
+ * will also store the updated value of 'object1' which is quite not
242
+ * an expected behaviour.
243
+ *
244
+ * @author Vova Feldman
245
+ */
246
+ return is_object($value) ? clone $value : $value;
247
  }
248
 
249
  /**
261
  $this->clear();
262
  }
263
 
264
+ /**
265
+ * If it's an object, store a clone of the object, otherwise,
266
+ * external changes of the object will actually change the value
267
+ * of the object in the options manager which may lead to an unexpected
268
+ * behaviour and data integrity when a store() call is triggered.
269
+ *
270
+ * Example:
271
+ * $object1 = new stdClass();
272
+ * $object1->x = 123;
273
+ *
274
+ * $options->set_option( 'object1', $object1 );
275
+ *
276
+ * $object1->x = 456;
277
+ *
278
+ * $options->set_option( 'object2', $object2, true );
279
+ *
280
+ * If we don't set the option as a clone of option 'object1', setting 'object2'
281
+ * will also store the updated value of 'object1' ($object1->x = 456 instead of
282
+ * $object1->x = 123) which is quite not an expected behaviour.
283
+ *
284
+ * @author Vova Feldman
285
+ */
286
+ $copy = is_object($value) ? clone $value : $value;
287
+
288
  if ( is_array( $this->_options ) ) {
289
+ $this->_options[ $option ] = $copy;
290
  } else if ( is_object( $this->_options ) ) {
291
+ $this->_options->{$option} = $copy;
292
  }
293
 
294
  if ( $flush ) {
freemius/includes/sdk/FreemiusWordPress.php CHANGED
@@ -420,13 +420,19 @@
420
  $matches = array();
421
  $regex = '/Failed to connect to ([^:].*): Network is unreachable/';
422
  if ( preg_match( $regex, $result->get_error_message( 'http_request_failed' ), $matches ) ) {
423
- if ( strlen( @inet_pton( $matches[1] ) ) === 16 ) {
 
 
 
 
 
424
  // error_log('Invalid IPv6 configuration on server, Please disable or get native IPv6 on your server.');
425
- // Hook to an action triggered just before cURL is executed to resolve the IP version to v4.
426
- add_action( 'http_api_curl', 'Freemius_Api_WordPress::CurlResolveToIPv4', 10, 1 );
427
 
428
- // Re-run request.
429
- $result = self::ExecuteRequest( $request_url, $pWPRemoteArgs );
 
430
  }
431
  }
432
  }
420
  $matches = array();
421
  $regex = '/Failed to connect to ([^:].*): Network is unreachable/';
422
  if ( preg_match( $regex, $result->get_error_message( 'http_request_failed' ), $matches ) ) {
423
+ /**
424
+ * Validate IP before calling `inet_pton()` to avoid PHP un-catchable warning.
425
+ * @author Vova Feldman (@svovaf)
426
+ */
427
+ if ( filter_var( $matches[1], FILTER_VALIDATE_IP ) ) {
428
+ if ( strlen( inet_pton( $matches[1] ) ) === 16 ) {
429
  // error_log('Invalid IPv6 configuration on server, Please disable or get native IPv6 on your server.');
430
+ // Hook to an action triggered just before cURL is executed to resolve the IP version to v4.
431
+ add_action( 'http_api_curl', 'Freemius_Api_WordPress::CurlResolveToIPv4', 10, 1 );
432
 
433
+ // Re-run request.
434
+ $result = self::ExecuteRequest( $request_url, $pWPRemoteArgs );
435
+ }
436
  }
437
  }
438
  }
freemius/languages/freemius-en.po CHANGED
@@ -14,1811 +14,1191 @@ msgstr ""
14
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
  "MIME-Version: 1.0\n"
16
  "X-Poedit-Basepath: ..\n"
17
- "X-Poedit-KeywordsList: _fs_text;_fs_echo;_fs_esc_attr;_fs_esc_attr_echo;_fs_esc_html;_fs_esc_html_echo;_fs_x:1,2c;_fs_ex:1,2c;_fs_esc_attr_x:1,2c;_fs_esc_html_x:1,2c;_fs_n:1,2;_fs_n_noop:1,2;_fs_nx:1,2,4c;_fs_nx_noop:1,2,3c\n"
18
  "X-Poedit-SearchPath-0: .\n"
19
  "X-Poedit-SearchPathExcluded-0: *.js\n"
20
  "X-Poedit-SourceCharset: UTF-8\n"
21
 
22
- #: includes/i18n.php:37
23
- msgid "Account"
24
- msgstr "Account"
25
 
26
- #: includes/i18n.php:38
27
- msgid "Add-On"
28
- msgstr "Add-On"
29
 
30
- #: includes/i18n.php:39
31
- msgid "Contact Us"
32
- msgstr "Contact Us"
33
 
34
- #: includes/i18n.php:40
35
- msgid "Contact Support"
36
- msgstr "Contact Support"
37
 
38
- #: includes/i18n.php:41
39
- msgid "Change Ownership"
40
- msgstr "Change Ownership"
41
 
42
- #: includes/i18n.php:42
43
- msgid "Support"
44
- msgstr "Support"
45
 
46
- #: includes/i18n.php:43
47
- msgid "Support Forum"
48
- msgstr "Support Forum"
49
-
50
- #: includes/i18n.php:44
51
- msgid "Add-Ons"
52
- msgstr "Add-Ons"
53
-
54
- #: includes/i18n.php:45
55
- msgctxt "verb"
56
- msgid "Upgrade"
57
- msgstr "Upgrade"
58
-
59
- #: includes/i18n.php:46
60
- msgid "Awesome"
61
- msgstr "Awesome"
62
-
63
- #: includes/i18n.php:47
64
- msgctxt "noun"
65
- msgid "Pricing"
66
- msgstr "Pricing"
67
-
68
- #: includes/i18n.php:48
69
- msgctxt "noun"
70
- msgid "Price"
71
- msgstr "Price"
72
-
73
- #: includes/i18n.php:49
74
- msgid "Unlimited Updates"
75
- msgstr "Unlimited Updates"
76
-
77
- #: includes/i18n.php:50
78
- msgctxt "verb"
79
- msgid "Downgrade"
80
- msgstr "Downgrade"
81
-
82
- #: includes/i18n.php:51
83
- msgctxt "verb"
84
- msgid "Cancel Subscription"
85
- msgstr "Cancel Subscription"
86
-
87
- #: includes/i18n.php:52
88
- msgid "Cancel Trial"
89
- msgstr "Cancel Trial"
90
-
91
- #: includes/i18n.php:53
92
- msgid "Free Trial"
93
- msgstr "Free Trial"
94
-
95
- #: includes/i18n.php:54
96
- msgid "Start my free %s"
97
- msgstr "Start my free %s"
98
-
99
- #: includes/i18n.php:55
100
- msgid "No commitment for %s - cancel anytime"
101
- msgstr "No commitment for %s - cancel anytime"
102
-
103
- #: includes/i18n.php:56
104
- msgid "After your free %s, pay as little as %s"
105
- msgstr "After your free %s, pay as little as %s"
106
-
107
- #: includes/i18n.php:57
108
- msgid "Details"
109
- msgstr "Details"
110
-
111
- #: includes/i18n.php:58
112
- msgid "Account Details"
113
- msgstr "Account Details"
114
-
115
- #: includes/i18n.php:59
116
- msgctxt "verb"
117
- msgid "Delete"
118
- msgstr "Delete"
119
-
120
- #: includes/i18n.php:60
121
- msgctxt "verb"
122
- msgid "Show"
123
- msgstr "Show"
124
-
125
- #: includes/i18n.php:61
126
- msgctxt "verb"
127
- msgid "Hide"
128
- msgstr "Hide"
129
-
130
- #: includes/i18n.php:62
131
- msgctxt "verb"
132
- msgid "Edit"
133
- msgstr "Edit"
134
-
135
- #: includes/i18n.php:63
136
- msgctxt "verb"
137
- msgid "Update"
138
- msgstr "Update"
139
-
140
- #: includes/i18n.php:64
141
- msgid "Date"
142
- msgstr "Date"
143
-
144
- #: includes/i18n.php:65
145
- msgid "Amount"
146
- msgstr "Amount"
147
-
148
- #: includes/i18n.php:66
149
- msgid "Invoice"
150
- msgstr "Invoice"
151
-
152
- #: includes/i18n.php:67
153
- msgid "Billing"
154
- msgstr "Billing"
155
-
156
- #: includes/i18n.php:68
157
- msgid "Payments"
158
- msgstr "Payments"
159
-
160
- #: includes/i18n.php:69
161
- msgid "Delete Account"
162
- msgstr "Delete Account"
163
-
164
- #: includes/i18n.php:70
165
- msgctxt "as close a window"
166
- msgid "Dismiss"
167
- msgstr "Dismiss"
168
-
169
- #: includes/i18n.php:71
170
- msgctxt "as product pricing plan"
171
- msgid "Plan"
172
- msgstr "Plan"
173
-
174
- #: includes/i18n.php:72
175
- msgid "Change Plan"
176
- msgstr "Change Plan"
177
-
178
- #: includes/i18n.php:73
179
- msgctxt "as download professional version"
180
- msgid "Download %s Version"
181
- msgstr "Download %s Version"
182
-
183
- #: includes/i18n.php:74
184
- msgctxt "as download professional version now"
185
- msgid "Download %s version now"
186
- msgstr "Download %s version now"
187
-
188
- #: includes/i18n.php:75
189
- msgctxt "as download latest version"
190
- msgid "Download Latest"
191
- msgstr "Download Latest"
192
-
193
- #: includes/i18n.php:76
194
- msgctxt "E.g. you have a professional license."
195
- msgid "You have a %s license."
196
- msgstr "You have a %s license."
197
-
198
- #: includes/i18n.php:77
199
- msgid "New"
200
- msgstr "New"
201
-
202
- #: includes/i18n.php:78
203
- msgid "Free"
204
- msgstr "Free"
205
-
206
- #: includes/i18n.php:79
207
- msgctxt "as trial plan"
208
- msgid "Trial"
209
- msgstr "Trial"
210
-
211
- #: includes/i18n.php:80
212
- msgctxt "as starting a trial plan"
213
- msgid "Start Trial"
214
- msgstr "Start Trial"
215
-
216
- #: includes/i18n.php:81
217
- msgctxt "verb"
218
- msgid "Purchase"
219
- msgstr "Purchase"
220
-
221
- #: includes/i18n.php:82
222
- msgid "Purchase License"
223
- msgstr "Purchase License"
224
-
225
- #: includes/i18n.php:83
226
- msgctxt "verb"
227
- msgid "Buy"
228
- msgstr "Buy"
229
-
230
- #: includes/i18n.php:84
231
- msgid "Buy License"
232
- msgstr "Buy License"
233
-
234
- #: includes/i18n.php:85
235
- msgid "Single Site License"
236
- msgstr "Single Site License"
237
-
238
- #: includes/i18n.php:86
239
- msgid "Unlimited Licenses"
240
- msgstr "Unlimited Licenses"
241
-
242
- #: includes/i18n.php:87
243
- msgid "Up to %s Sites"
244
- msgstr "Up to %s Sites"
245
-
246
- #: includes/i18n.php:88
247
- msgid "%sRenew your license now%s to access version %s features and support."
248
- msgstr "%sRenew your license now%s to access version %s features and support."
249
-
250
- #: includes/i18n.php:89
251
- msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
252
- msgstr "Enter the email address you've used for the upgrade below and we will resend you the license key."
253
-
254
- #: includes/i18n.php:90
255
- msgctxt "e.g. Professional Plan"
256
- msgid "%s Plan"
257
- msgstr "%s Plan"
258
-
259
- #: includes/i18n.php:91
260
- msgid "You are just one step away - %s"
261
- msgstr "You are just one step away - %s"
262
-
263
- #: includes/i18n.php:92
264
- msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
265
- msgid "Complete \"%s\" Activation Now"
266
- msgstr "Complete \"%s\" Activation Now"
267
-
268
- #: includes/i18n.php:94
269
- msgid "We made a few tweaks to the %s, %s"
270
- msgstr "We made a few tweaks to the %s, %s"
271
-
272
- #: includes/i18n.php:95
273
- msgid "Opt-in to make \"%s\" Better!"
274
- msgstr "Opt-in to make \"%s\" Better!"
275
-
276
- #: includes/i18n.php:96
277
- msgid "Error"
278
- msgstr "Error"
279
-
280
- #: includes/i18n.php:97
281
- msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
282
- msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
283
-
284
- #: includes/i18n.php:100
285
- msgctxt "as expiration date"
286
- msgid "Expiration"
287
- msgstr "Expiration"
288
-
289
- #: includes/i18n.php:101
290
- msgctxt "as software license"
291
- msgid "License"
292
- msgstr "License"
293
-
294
- #: includes/i18n.php:102
295
- msgid "not verified"
296
- msgstr "not verified"
297
-
298
- #: includes/i18n.php:103
299
- msgid "Verify Email"
300
- msgstr "Verify Email"
301
-
302
- #: includes/i18n.php:104
303
- msgctxt "e.g. expires in 2 months"
304
- msgid "Expires in %s"
305
- msgstr "Expires in %s"
306
-
307
- #: includes/i18n.php:105
308
- msgctxt "e.g. auto renews in 2 months"
309
- msgid "Auto renews in %s"
310
- msgstr "Auto renews in %s"
311
-
312
- #: includes/i18n.php:106
313
- msgid "No expiration"
314
- msgstr "No expiration"
315
-
316
- #: includes/i18n.php:107
317
- msgid "Expired"
318
- msgstr "Expired"
319
-
320
- #: includes/i18n.php:108
321
- msgid "Cancelled"
322
- msgstr "Cancelled"
323
-
324
- #: includes/i18n.php:109
325
- msgctxt "e.g. In 2 hours"
326
- msgid "In %s"
327
- msgstr "In %s"
328
-
329
- #: includes/i18n.php:110
330
- msgctxt "e.g. 2 min ago"
331
- msgid "%s ago"
332
- msgstr "%s ago"
333
-
334
- #: includes/i18n.php:112
335
- msgid "%s or higher"
336
- msgstr "%s or higher"
337
-
338
- #: includes/i18n.php:113
339
- msgctxt "as plugin version"
340
- msgid "Version"
341
- msgstr "Version"
342
-
343
- #: includes/i18n.php:114
344
- msgid "Name"
345
- msgstr "Name"
346
-
347
- #: includes/i18n.php:115
348
- msgid "Email"
349
- msgstr "Email"
350
-
351
- #: includes/i18n.php:116
352
- msgid "Email address"
353
- msgstr "Email address"
354
-
355
- #: includes/i18n.php:117
356
- msgid "Verified"
357
- msgstr "Verified"
358
-
359
- #: includes/i18n.php:118
360
- msgid "Module"
361
- msgstr "Module"
362
-
363
- #: includes/i18n.php:119
364
- msgid "Module Type"
365
- msgstr "Module Type"
366
-
367
- #: includes/i18n.php:120
368
- msgid "Plugin"
369
- msgstr "Plugin"
370
-
371
- #: includes/i18n.php:121
372
- msgid "Plugins"
373
- msgstr "Plugins"
374
-
375
- #: includes/i18n.php:122
376
- msgid "Theme"
377
- msgstr "Theme"
378
-
379
- #: includes/i18n.php:123
380
- msgid "Themes"
381
- msgstr "Themes"
382
-
383
- #: includes/i18n.php:124
384
- msgctxt "as file/folder path"
385
- msgid "Path"
386
- msgstr "Path"
387
 
388
- #: includes/i18n.php:125
389
- msgid "Title"
390
- msgstr "Title"
391
-
392
- #: includes/i18n.php:126
393
- msgid "Free version"
394
- msgstr "Free version"
395
-
396
- #: includes/i18n.php:127
397
- msgid "Premium version"
398
- msgstr "Premium version"
399
-
400
- #: includes/i18n.php:128
401
- msgctxt "as WP plugin slug"
402
- msgid "Slug"
403
- msgstr "Slug"
404
 
405
- #: includes/i18n.php:129
406
- msgid "ID"
407
- msgstr "ID"
408
 
409
- #: includes/i18n.php:130
410
- msgid "Users"
411
- msgstr "Users"
412
-
413
- #: includes/i18n.php:131
414
- msgid "%s Installs"
415
- msgstr "%s Installs"
416
-
417
- #: includes/i18n.php:132
418
- msgctxt "like websites"
419
- msgid "Sites"
420
- msgstr "Sites"
421
-
422
- #: includes/i18n.php:133
423
- msgid "User ID"
424
- msgstr "User ID"
425
-
426
- #: includes/i18n.php:134
427
- msgid "Site ID"
428
- msgstr "Site ID"
429
-
430
- #: includes/i18n.php:135
431
- msgid "Public Key"
432
- msgstr "Public Key"
433
-
434
- #: includes/i18n.php:136
435
- msgid "Secret Key"
436
- msgstr "Secret Key"
437
-
438
- #: includes/i18n.php:137
439
- msgctxt "as secret encryption key missing"
440
- msgid "No Secret"
441
- msgstr "No Secret"
442
-
443
- #: includes/i18n.php:138
444
- msgid "No ID"
445
- msgstr "No ID"
446
-
447
- #: includes/i18n.php:139
448
- msgctxt "as synchronize license"
449
- msgid "Sync License"
450
- msgstr "Sync License"
451
-
452
- #: includes/i18n.php:140
453
- msgctxt "as synchronize"
454
- msgid "Sync"
455
- msgstr "Sync"
456
-
457
- #: includes/i18n.php:141
458
- msgid "Activate License"
459
- msgstr "Activate License"
460
-
461
- #: includes/i18n.php:142
462
- msgid "Activate Free Version"
463
- msgstr "Activate Free Version"
464
-
465
- #: includes/i18n.php:143
466
- msgid "Please enter the license key that you received in the email right after the purchase:"
467
- msgstr "Please enter the license key that you received in the email right after the purchase:"
468
-
469
- #: includes/i18n.php:144
470
- msgid "Activating license..."
471
- msgstr "Activating license..."
472
-
473
- #: includes/i18n.php:145
474
- msgid "Change License"
475
- msgstr "Change License"
476
-
477
- #: includes/i18n.php:146
478
- msgid "Update License"
479
- msgstr "Update License"
480
-
481
- #: includes/i18n.php:147
482
- msgid "Deactivate License"
483
- msgstr "Deactivate License"
484
-
485
- #: includes/i18n.php:148
486
- msgid "Activate"
487
- msgstr "Activate"
488
-
489
- #: includes/i18n.php:149
490
- msgid "Deactivate"
491
- msgstr "Deactivate"
492
-
493
- #: includes/i18n.php:150
494
- msgid "Skip & Deactivate"
495
- msgstr "Skip & Deactivate"
496
-
497
- #: includes/i18n.php:151
498
- msgid "Skip & %s"
499
- msgstr "Skip & %s"
500
-
501
- #: includes/i18n.php:152
502
- msgid "No - just deactivate"
503
- msgstr "No - just deactivate"
504
-
505
- #: includes/i18n.php:153
506
- msgid "Yes - do your thing"
507
- msgstr "Yes - do your thing"
508
-
509
- #: includes/i18n.php:154
510
- msgctxt "active mode"
511
- msgid "Active"
512
- msgstr "Active"
513
-
514
- #: includes/i18n.php:155
515
- msgctxt "is active mode?"
516
- msgid "Is Active"
517
- msgstr "Is Active"
518
-
519
- #: includes/i18n.php:156
520
- msgid "Install Now"
521
- msgstr "Install Now"
522
-
523
- #: includes/i18n.php:157
524
- msgid "Install Update Now"
525
- msgstr "Install Update Now"
526
-
527
- #: includes/i18n.php:158
528
- msgid "More information about %s"
529
- msgstr "More information about %s"
530
-
531
- #: includes/i18n.php:159
532
- msgid "Localhost"
533
- msgstr "Localhost"
534
-
535
- #: includes/i18n.php:160
536
- msgctxt "as activate Professional plan"
537
- msgid "Activate %s Plan"
538
- msgstr "Activate %s Plan"
539
-
540
- #: includes/i18n.php:161
541
- msgctxt "as 5 licenses left"
542
- msgid "%s left"
543
- msgstr "%s left"
544
-
545
- #: includes/i18n.php:162
546
- msgid "Last license"
547
- msgstr "Last license"
548
-
549
- #: includes/i18n.php:163
550
- msgid "What is your %s?"
551
- msgstr "What is your %s?"
552
-
553
- #: includes/i18n.php:164
554
- msgid "Activate this add-on"
555
- msgstr "Activate this add-on"
556
 
557
- #: includes/i18n.php:165
558
- msgid "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
559
- msgstr "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
560
 
561
- #: includes/i18n.php:166
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
562
  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?"
563
  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?"
564
 
565
- #: includes/i18n.php:167
566
- 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?"
567
- 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?"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
568
 
569
- #: includes/i18n.php:168
570
- msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
571
- msgstr "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
572
 
573
- #: includes/i18n.php:169
574
- msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
575
- msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?"
576
 
577
- #: includes/i18n.php:170
578
- msgid "You can still enjoy all %s features but you will not have access to %s updates and support."
579
- msgstr "You can still enjoy all %s features but you will not have access to %s updates and support."
580
 
581
- #: includes/i18n.php:171
582
- msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
583
- msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
584
 
585
- #: includes/i18n.php:172
586
- msgid "Are you sure you want to proceed?"
587
- msgstr "Are you sure you want to proceed?"
588
 
589
- #: includes/i18n.php:175
590
- msgid "Add Ons for %s"
591
- msgstr "Add Ons for %s"
592
 
593
- #: includes/i18n.php:176
594
- 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."
595
- 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."
596
 
597
- #: includes/i18n.php:178
598
- msgid "Anonymous feedback"
599
- msgstr "Anonymous feedback"
600
 
601
- #: includes/i18n.php:179
602
- msgid "Quick feedback"
603
- msgstr "Quick feedback"
604
 
605
- #: includes/i18n.php:180
606
- msgid "If you have a moment, please let us know why you are %s"
607
- msgstr "If you have a moment, please let us know why you are %s"
608
 
609
- #: includes/i18n.php:181
610
- msgid "deactivating"
611
- msgstr "deactivating"
612
 
613
- #: includes/i18n.php:182
614
- msgid "Deactivation"
615
- msgstr "Deactivation"
616
 
617
- #: includes/i18n.php:183
618
- msgid "Theme Switch"
619
- msgstr "Theme Switch"
620
 
621
- #: includes/i18n.php:184
622
- msgid "switching"
623
- msgstr "switching"
624
 
625
- #: includes/i18n.php:185
626
- msgid "Switch"
627
- msgstr "Switch"
628
 
629
- #: includes/i18n.php:186
630
- msgid "Activate %s"
631
- msgstr "Activate %s"
632
 
633
- #: includes/i18n.php:187
634
- msgid "Yes - %s"
635
- msgstr "Yes - %s"
636
 
637
- #: includes/i18n.php:188
638
- msgid "Submit & %s"
639
- msgstr "Submit & %s"
640
 
641
- #: includes/i18n.php:189
642
- msgid "Cancel"
643
- msgstr "Cancel"
644
 
645
- #: includes/i18n.php:190
646
- msgid "I no longer need the %s"
647
- msgstr "I no longer need the %s"
648
 
649
- #: includes/i18n.php:191
650
- msgid "I found a better %s"
651
- msgstr "I found a better %s"
652
 
653
- #: includes/i18n.php:192
654
- msgid "I only needed the %s for a short period"
655
- msgstr "I only needed the %s for a short period"
656
 
657
- #: includes/i18n.php:193
658
- msgid "The %s broke my site"
659
- msgstr "The %s broke my site"
660
 
661
- #: includes/i18n.php:194
662
- msgid "The %s suddenly stopped working"
663
- msgstr "The %s suddenly stopped working"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
664
 
665
- #: includes/i18n.php:195
666
- msgid "I can't pay for it anymore"
667
- msgstr "I can't pay for it anymore"
668
 
669
- #: includes/i18n.php:196
670
- msgid "It's a temporary deactivation. I'm just debugging an issue."
671
- msgstr "It's a temporary deactivation. I'm just debugging an issue."
672
 
673
- #: includes/i18n.php:197
674
- msgid "It's a temporary %s. I'm just debugging an issue."
675
- msgstr "It's a temporary %s. I'm just debugging an issue."
676
 
677
- #: includes/i18n.php:198
678
- msgctxt "the text of the \"other\" reason for deactivating the module that is shown in the modal box."
679
- msgid "Other"
680
- msgstr "Other"
681
-
682
- #: includes/i18n.php:200
683
- msgid "Kindly tell us the reason so we can improve."
684
- msgstr "Kindly tell us the reason so we can improve."
685
-
686
- #: includes/i18n.php:201
687
- msgid "What's the %s's name?"
688
- msgstr "What's the %s's name?"
689
-
690
- #: includes/i18n.php:202
691
- msgid "What price would you feel comfortable paying?"
692
- msgstr "What price would you feel comfortable paying?"
693
-
694
- #: includes/i18n.php:203
695
- msgid "I couldn't understand how to make it work"
696
- msgstr "I couldn't understand how to make it work"
697
-
698
- #: includes/i18n.php:204
699
- msgid "The %s is great, but I need specific feature that you don't support"
700
- msgstr "The %s is great, but I need specific feature that you don't support"
701
-
702
- #: includes/i18n.php:205
703
- msgid "The %s is not working"
704
- msgstr "The %s is not working"
705
-
706
- #: includes/i18n.php:206
707
- msgid "It's not what I was looking for"
708
- msgstr "It's not what I was looking for"
709
-
710
- #: includes/i18n.php:207
711
- msgid "The %s didn't work as expected"
712
- msgstr "The %s didn't work as expected"
713
-
714
- #: includes/i18n.php:208
715
- msgid "What feature?"
716
- msgstr "What feature?"
717
-
718
- #: includes/i18n.php:209
719
- msgid "Kindly share what didn't work so we can fix it for future users..."
720
- msgstr "Kindly share what didn't work so we can fix it for future users..."
721
-
722
- #: includes/i18n.php:210
723
- msgid "What you've been looking for?"
724
- msgstr "What you've been looking for?"
725
-
726
- #: includes/i18n.php:211
727
- msgid "What did you expect?"
728
- msgstr "What did you expect?"
729
-
730
- #: includes/i18n.php:212
731
- msgid "The %s didn't work"
732
- msgstr "The %s didn't work"
733
-
734
- #: includes/i18n.php:213
735
- msgid "I don't like to share my information with you"
736
- msgstr "I don't like to share my information with you"
737
-
738
- #: includes/i18n.php:214
739
- msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
740
- msgstr "You might have missed it, but you don't have to share any data and can just %s the opt-in."
741
-
742
- #: includes/i18n.php:218
743
- msgctxt "greeting"
744
- msgid "Hey %s,"
745
- msgstr "Hey %s,"
746
-
747
- #: includes/i18n.php:219
748
- msgctxt "a greeting. E.g. Thanks John!"
749
- msgid "Thanks %s!"
750
- msgstr "Thanks %s!"
751
-
752
- #: includes/i18n.php:220
753
- msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
754
- msgstr "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
755
-
756
- #: includes/i18n.php:221
757
- msgid "Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
758
- msgstr "Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
759
-
760
- #: includes/i18n.php:222
761
- 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."
762
- 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."
763
-
764
- #: includes/i18n.php:223
765
- msgid "complete the install"
766
- msgstr "complete the install"
767
-
768
- #: includes/i18n.php:224
769
- msgid "start the trial"
770
- msgstr "start the trial"
771
-
772
- #: includes/i18n.php:225
773
- msgid "Thanks for purchasing %s! To get started, please enter your license key:"
774
- msgstr "Thanks for purchasing %s! To get started, please enter your license key:"
775
-
776
- #: includes/i18n.php:226
777
- 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."
778
- 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."
779
-
780
- #: includes/i18n.php:227
781
- msgid "What permissions are being granted?"
782
- msgstr "What permissions are being granted?"
783
-
784
- #: includes/i18n.php:228
785
- msgid "Your Profile Overview"
786
- msgstr "Your Profile Overview"
787
-
788
- #: includes/i18n.php:229
789
- msgid "Name and email address"
790
- msgstr "Name and email address"
791
-
792
- #: includes/i18n.php:230
793
- msgid "Your Site Overview"
794
- msgstr "Your Site Overview"
795
-
796
- #: includes/i18n.php:231
797
- msgid "Site URL, WP version, PHP info, plugins & themes"
798
- msgstr "Site URL, WP version, PHP info, plugins & themes"
799
-
800
- #: includes/i18n.php:232
801
- msgid "Current %s Events"
802
- msgstr "Current %s Events"
803
-
804
- #: includes/i18n.php:233
805
- msgid "Activation, deactivation and uninstall"
806
- msgstr "Activation, deactivation and uninstall"
807
-
808
- #: includes/i18n.php:234
809
- msgid "Plugins & Themes"
810
- msgstr "Plugins & Themes"
811
-
812
- #: includes/i18n.php:235
813
- msgid "Titles, versions and state."
814
- msgstr "Titles, versions and state."
815
-
816
- #: includes/i18n.php:236
817
- msgid "Admin Notices"
818
- msgstr "Admin Notices"
819
-
820
- #: includes/i18n.php:237
821
- msgid "Newsletter"
822
- msgstr "Newsletter"
823
-
824
- #: includes/i18n.php:238
825
- msgid "Updates, announcements, marketing, no spam"
826
- msgstr "Updates, announcements, marketing, no spam"
827
-
828
- #: includes/i18n.php:239
829
- msgid "Privacy Policy"
830
- msgstr "Privacy Policy"
831
-
832
- #: includes/i18n.php:240
833
- msgid "Terms of Service"
834
- msgstr "Terms of Service"
835
-
836
- #: includes/i18n.php:241
837
- msgctxt "as activating plugin"
838
- msgid "Activating"
839
- msgstr "Activating"
840
-
841
- #: includes/i18n.php:242
842
- msgctxt "as in the process of sending an email"
843
- msgid "Sending email"
844
- msgstr "Sending email"
845
-
846
- #: includes/i18n.php:243
847
- msgctxt "button label"
848
- msgid "Allow & Continue"
849
- msgstr "Allow & Continue"
850
-
851
- #: includes/i18n.php:244
852
- msgctxt "button label"
853
- msgid "Agree & Activate License"
854
- msgstr "Agree & Activate License"
855
 
856
- #: includes/i18n.php:245
857
- msgctxt "verb"
858
- msgid "Skip"
859
- msgstr "Skip"
860
-
861
- #: includes/i18n.php:246
862
- msgid "Click here to use the plugin anonymously"
863
- msgstr "Click here to use the plugin anonymously"
864
-
865
- #: includes/i18n.php:247
866
- msgid "Re-send activation email"
867
- msgstr "Re-send activation email"
868
-
869
- #: includes/i18n.php:248
870
- msgid "License key"
871
- msgstr "License key"
872
-
873
- #: includes/i18n.php:249
874
- msgid "Send License Key"
875
- msgstr "Send License Key"
876
-
877
- #: includes/i18n.php:250
878
- msgid "Sending license key"
879
- msgstr "Sending license key"
880
-
881
- #: includes/i18n.php:251
882
- msgid "Have a license key?"
883
- msgstr "Have a license key?"
884
-
885
- #: includes/i18n.php:252
886
- msgid "Don't have a license key?"
887
- msgstr "Don't have a license key?"
888
-
889
- #: includes/i18n.php:253
890
- msgid "Can't find your license key?"
891
- msgstr "Can't find your license key?"
892
-
893
- #: includes/i18n.php:254
894
- msgid "We couldn't find your email address in the system, are you sure it's the right address?"
895
- msgstr "We couldn't find your email address in the system, are you sure it's the right address?"
896
-
897
- #: includes/i18n.php:255
898
- msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
899
- msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?"
900
-
901
- #: includes/i18n.php:256
902
- msgid "Opt In"
903
- msgstr "Opt In"
904
-
905
- #: includes/i18n.php:257
906
- msgid "Opt Out"
907
- msgstr "Opt Out"
908
-
909
- #: includes/i18n.php:258
910
- msgid "On second thought - I want to continue helping"
911
- msgstr "On second thought - I want to continue helping"
912
-
913
- #: includes/i18n.php:259
914
- msgid "Opting out..."
915
- msgstr "Opting out..."
916
-
917
- #: includes/i18n.php:260
918
- msgid "Opting in..."
919
- msgstr "Opting in..."
920
-
921
- #: includes/i18n.php:261
922
- msgid "We appreciate your help in making the %s better by letting us track some usage data."
923
- msgstr "We appreciate your help in making the %s better by letting us track some usage data."
924
-
925
- #: includes/i18n.php:262
926
- 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."
927
- 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."
928
-
929
- #: includes/i18n.php:263
930
- msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
931
- msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
932
-
933
- #: includes/i18n.php:267
934
- msgid "Screenshots"
935
- msgstr "Screenshots"
936
-
937
- #: includes/i18n.php:268
938
- msgid "Click to view full-size screenshot %d"
939
- msgstr "Click to view full-size screenshot %d"
940
 
941
- #: includes/i18n.php:272
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
942
  msgid "Freemius Debug"
943
  msgstr "Freemius Debug"
944
 
945
- #: includes/i18n.php:273
946
- msgctxt "as turned on"
947
- msgid "On"
948
- msgstr "On"
949
-
950
- #: includes/i18n.php:274
951
- msgctxt "as turned off"
952
- msgid "Off"
953
- msgstr "Off"
954
-
955
- #: includes/i18n.php:275
956
- msgctxt "as code debugging"
957
- msgid "Debugging"
958
- msgstr "Debugging"
959
-
960
- #: includes/i18n.php:276
961
- msgid "Freemius State"
962
- msgstr "Freemius State"
963
-
964
- #: includes/i18n.php:277
965
- msgctxt "as connection was successful"
966
- msgid "Connected"
967
- msgstr "Connected"
968
-
969
- #: includes/i18n.php:278
970
- msgctxt "as connection blocked"
971
- msgid "Blocked"
972
- msgstr "Blocked"
973
-
974
- #: includes/i18n.php:279
975
- msgctxt "as application program interface"
976
- msgid "API"
977
- msgstr "API"
978
-
979
- #: includes/i18n.php:280
980
- msgctxt "as software development kit versions"
981
  msgid "SDK"
982
  msgstr "SDK"
983
 
984
- #: includes/i18n.php:281
985
- msgctxt "as software development kit versions"
986
- msgid "SDK Versions"
987
- msgstr "SDK Versions"
988
 
989
- #: includes/i18n.php:282
990
- msgctxt "as plugin folder path"
991
- msgid "Plugin Path"
992
- msgstr "Plugin Path"
993
 
994
- #: includes/i18n.php:283
995
- msgctxt "as sdk path"
996
- msgid "SDK Path"
997
- msgstr "SDK Path"
998
-
999
- #: includes/i18n.php:284
1000
- msgid "Add Ons of Plugin %s"
1001
- msgstr "Add Ons of Plugin %s"
1002
-
1003
- #: includes/i18n.php:285
1004
- msgid "Are you sure you want to delete all Freemius data?"
1005
- msgstr "Are you sure you want to delete all Freemius data?"
1006
-
1007
- #: includes/i18n.php:286
1008
- msgid "Actions"
1009
- msgstr "Actions"
1010
-
1011
- #: includes/i18n.php:287
1012
- msgid "Delete All Accounts"
1013
- msgstr "Delete All Accounts"
1014
-
1015
- #: includes/i18n.php:288
1016
- msgid "Start Fresh"
1017
- msgstr "Start Fresh"
1018
-
1019
- #: includes/i18n.php:289
1020
- msgid "Clear API Cache"
1021
- msgstr "Clear API Cache"
1022
-
1023
- #: includes/i18n.php:290
1024
- msgid "Sync Data From Server"
1025
- msgstr "Sync Data From Server"
1026
-
1027
- #: includes/i18n.php:291
1028
- msgid "Scheduled Crons"
1029
- msgstr "Scheduled Crons"
1030
-
1031
- #: includes/i18n.php:292
1032
- msgid "Cron Type"
1033
- msgstr "Cron Type"
1034
-
1035
- #: includes/i18n.php:293
1036
- msgid "Plugins & Themes Sync"
1037
- msgstr "Plugins & Themes Sync"
1038
-
1039
- #: includes/i18n.php:294
1040
- msgid "%s Licenses"
1041
- msgstr "%s Licenses"
1042
-
1043
- #: includes/i18n.php:295
1044
- msgid "Debug Log"
1045
- msgstr "Debug Log"
1046
-
1047
- #: includes/i18n.php:296
1048
- msgid "All"
1049
- msgstr "All"
1050
-
1051
- #: includes/i18n.php:297
1052
- msgid "File"
1053
- msgstr "File"
1054
-
1055
- #: includes/i18n.php:298
1056
- msgid "Function"
1057
- msgstr "Function"
1058
-
1059
- #: includes/i18n.php:299
1060
- msgid "Process ID"
1061
- msgstr "Process ID"
1062
-
1063
- #: includes/i18n.php:300
1064
- msgid "Logger"
1065
- msgstr "Logger"
1066
-
1067
- #: includes/i18n.php:301
1068
- msgid "Message"
1069
- msgstr "Message"
1070
-
1071
- #: includes/i18n.php:302
1072
- msgid "Download"
1073
- msgstr "Download"
1074
-
1075
- #: includes/i18n.php:303
1076
- msgid "Filter"
1077
- msgstr "Filter"
1078
-
1079
- #: includes/i18n.php:304
1080
- msgid "Type"
1081
- msgstr "Type"
1082
-
1083
- #: includes/i18n.php:305
1084
- msgid "All Types"
1085
- msgstr "All Types"
1086
-
1087
- #: includes/i18n.php:306
1088
- msgid "All Requests"
1089
- msgstr "All Requests"
1090
-
1091
- #: includes/i18n.php:310
1092
- msgctxt "as congratulations"
1093
- msgid "Congrats"
1094
- msgstr "Congrats"
1095
-
1096
- #: includes/i18n.php:311
1097
- msgctxt "exclamation"
1098
- msgid "Oops"
1099
- msgstr "Oops"
1100
-
1101
- #: includes/i18n.php:312
1102
- msgctxt "interjection expressing joy or exuberance"
1103
- msgid "Yee-haw"
1104
- msgstr "Yee-haw"
1105
-
1106
- #: includes/i18n.php:313
1107
- msgctxt "(especially in electronic communication) used to express elation, enthusiasm, or triumph."
1108
- msgid "W00t"
1109
- msgstr "W00t"
1110
-
1111
- #: includes/i18n.php:315
1112
- msgctxt "a positive response"
1113
- msgid "Right on"
1114
- msgstr "Right on"
1115
-
1116
- #: includes/i18n.php:316
1117
- msgctxt "something somebody says when they are thinking about what you have just said. "
1118
- msgid "Hmm"
1119
- msgstr "Hmm"
1120
-
1121
- #: includes/i18n.php:318
1122
- msgid "O.K"
1123
- msgstr "O.K"
1124
-
1125
- #: includes/i18n.php:319
1126
- msgctxt "exclamation"
1127
- msgid "Hey"
1128
- msgstr "Hey"
1129
-
1130
- #: includes/i18n.php:320
1131
- msgctxt "advance notice of something that will need attention."
1132
- msgid "Heads up"
1133
- msgstr "Heads up"
1134
-
1135
- #: includes/i18n.php:325
1136
- msgid "Seems like you got the latest release."
1137
- msgstr "Seems like you got the latest release."
1138
-
1139
- #: includes/i18n.php:326
1140
- msgid "You are all good!"
1141
- msgstr "You are all good!"
1142
-
1143
- #: includes/i18n.php:327
1144
- msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
1145
- msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered."
1146
-
1147
- #: includes/i18n.php:328
1148
- msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
1149
- msgstr "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
1150
-
1151
- #: includes/i18n.php:329
1152
- msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
1153
- msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
1154
-
1155
- #: includes/i18n.php:330
1156
- msgid "Your name was successfully updated."
1157
- msgstr "Your name was successfully updated."
1158
-
1159
- #: includes/i18n.php:331
1160
- msgid "You have successfully updated your %s."
1161
- msgstr "You have successfully updated your %s."
1162
-
1163
- #: includes/i18n.php:332
1164
- msgid "Please provide your full name."
1165
- msgstr "Please provide your full name."
1166
-
1167
- #: includes/i18n.php:333
1168
- msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
1169
- msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
1170
-
1171
- #: includes/i18n.php:334
1172
- msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
1173
- msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server."
1174
-
1175
- #: includes/i18n.php:335
1176
- msgid "No credit card required"
1177
- msgstr "No credit card required"
1178
-
1179
- #: includes/i18n.php:336
1180
- msgid "Premium %s version was successfully activated."
1181
- msgstr "Premium %s version was successfully activated."
1182
-
1183
- #: includes/i18n.php:337
1184
- msgid "The upgrade of %s was successfully completed."
1185
- msgstr "The upgrade of %s was successfully completed."
1186
-
1187
- #: includes/i18n.php:338
1188
- msgid "Your account was successfully activated with the %s plan."
1189
- msgstr "Your account was successfully activated with the %s plan."
1190
-
1191
- #: includes/i18n.php:339
1192
- msgid "Download the latest %s version now"
1193
- msgstr "Download the latest %s version now"
1194
-
1195
- #: includes/i18n.php:340
1196
- msgid "Please follow these steps to complete the upgrade"
1197
- msgstr "Please follow these steps to complete the upgrade"
1198
-
1199
- #: includes/i18n.php:341
1200
- msgid "Download the latest %s version"
1201
- msgstr "Download the latest %s version"
1202
-
1203
- #: includes/i18n.php:342
1204
- msgid "Download the latest version"
1205
- msgstr "Download the latest version"
1206
-
1207
- #: includes/i18n.php:343
1208
- msgid "Deactivate the free version"
1209
- msgstr "Deactivate the free version"
1210
-
1211
- #: includes/i18n.php:344
1212
- msgid "Upload and activate the downloaded version"
1213
- msgstr "Upload and activate the downloaded version"
1214
-
1215
- #: includes/i18n.php:345
1216
- msgid "How to upload and activate?"
1217
- msgstr "How to upload and activate?"
1218
-
1219
- #: includes/i18n.php:346
1220
- msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1221
- msgid "%s Add-on was successfully purchased."
1222
- msgstr "%s Add-on was successfully purchased."
1223
-
1224
- #: includes/i18n.php:348
1225
- msgid "Your %s Add-on plan was successfully upgraded."
1226
- msgstr "Your %s Add-on plan was successfully upgraded."
1227
-
1228
- #: includes/i18n.php:349
1229
- msgid "Your email has been successfully verified - you are AWESOME!"
1230
- msgstr "Your email has been successfully verified - you are AWESOME!"
1231
-
1232
- #: includes/i18n.php:350
1233
- msgid "Your plan was successfully upgraded."
1234
- msgstr "Your plan was successfully upgraded."
1235
-
1236
- #: includes/i18n.php:351
1237
- msgid "Your plan was successfully changed to %s."
1238
- msgstr "Your plan was successfully changed to %s."
1239
-
1240
- #: includes/i18n.php:352
1241
- msgid "Your license has expired. You can still continue using the free %s forever."
1242
- msgstr "Your license has expired. You can still continue using the free %s forever."
1243
-
1244
- #: includes/i18n.php:353
1245
- msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
1246
- msgstr "Your license has been cancelled. If you think it's a mistake, please contact support."
1247
-
1248
- #: includes/i18n.php:354
1249
- msgid "Your trial has been successfully started."
1250
- msgstr "Your trial has been successfully started."
1251
-
1252
- #: includes/i18n.php:355
1253
- msgid "Your license was successfully activated."
1254
- msgstr "Your license was successfully activated."
1255
-
1256
- #: includes/i18n.php:356
1257
- msgid "It looks like your site currently doesn't have an active license."
1258
- msgstr "It looks like your site currently doesn't have an active license."
1259
-
1260
- #: includes/i18n.php:357
1261
- msgid "Your license was successfully deactivated, you are back to the %s plan."
1262
- msgstr "Your license was successfully deactivated, you are back to the %s plan."
1263
-
1264
- #: includes/i18n.php:358
1265
- msgid "It looks like the license deactivation failed."
1266
- msgstr "It looks like the license deactivation failed."
1267
-
1268
- #: includes/i18n.php:359
1269
- msgid "It looks like the license could not be activated."
1270
- msgstr "It looks like the license could not be activated."
1271
-
1272
- #: includes/i18n.php:360
1273
- msgid "Error received from the server:"
1274
- msgstr "Error received from the server:"
1275
-
1276
- #: includes/i18n.php:361
1277
- msgid "Your trial has expired. You can still continue using all our free features."
1278
- msgstr "Your trial has expired. You can still continue using all our free features."
1279
-
1280
- #: includes/i18n.php:362
1281
- msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
1282
- msgstr "Your plan was successfully downgraded. Your %s plan license will expire in %s."
1283
-
1284
- #: includes/i18n.php:363
1285
- msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
1286
- msgstr "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
1287
-
1288
- #: includes/i18n.php:364
1289
- msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
1290
- msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
1291
-
1292
- #: includes/i18n.php:365
1293
- msgid "Your %s free trial was successfully cancelled."
1294
- msgstr "Your %s free trial was successfully cancelled."
1295
-
1296
- #: includes/i18n.php:366
1297
- msgctxt "%s - numeric version number"
1298
- msgid "Version %s was released."
1299
- msgstr "Version %s was released."
1300
-
1301
- #: includes/i18n.php:367
1302
- msgid "Please download %s."
1303
- msgstr "Please download %s."
1304
-
1305
- #: includes/i18n.php:368
1306
- msgctxt "%s - plan name, as the latest professional version here"
1307
- msgid "the latest %s version here"
1308
- msgstr "the latest %s version here"
1309
-
1310
- #: includes/i18n.php:370
1311
- msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
1312
- msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
1313
-
1314
- #: includes/i18n.php:371
1315
- msgctxt "call to action"
1316
- msgid "Start free trial"
1317
- msgstr "Start free trial"
1318
-
1319
- #: includes/i18n.php:372
1320
- msgid "Starting trial"
1321
- msgstr "Starting trial"
1322
-
1323
- #: includes/i18n.php:373
1324
- msgid "Please wait"
1325
- msgstr "Please wait"
1326
-
1327
- #: includes/i18n.php:374
1328
- msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
1329
- msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
1330
-
1331
- #: includes/i18n.php:375
1332
- msgid "You already utilized a trial before."
1333
- msgstr "You already utilized a trial before."
1334
-
1335
- #: includes/i18n.php:376
1336
- msgid "You are already running the %s in a trial mode."
1337
- msgstr "You are already running the %s in a trial mode."
1338
-
1339
- #: includes/i18n.php:377
1340
- msgid "Plan %s do not exist, therefore, can't start a trial."
1341
- msgstr "Plan %s do not exist, therefore, can't start a trial."
1342
-
1343
- #: includes/i18n.php:378
1344
- msgid "Plan %s does not support a trial period."
1345
- msgstr "Plan %s does not support a trial period."
1346
-
1347
- #: includes/i18n.php:379
1348
- msgid "None of the %s's plans supports a trial period."
1349
- msgstr "None of the %s's plans supports a trial period."
1350
-
1351
- #: includes/i18n.php:380
1352
- msgid "Unexpected API error. Please contact the %s's author with the following error."
1353
- msgstr "Unexpected API error. Please contact the %s's author with the following error."
1354
-
1355
- #: includes/i18n.php:381
1356
- msgid "No commitment for %s days - cancel anytime!"
1357
- msgstr "No commitment for %s days - cancel anytime!"
1358
-
1359
- #: includes/i18n.php:382
1360
- 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."
1361
- 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."
1362
-
1363
- #: includes/i18n.php:383
1364
- msgid "Couldn't activate %s."
1365
- msgstr "Couldn't activate %s."
1366
-
1367
- #: includes/i18n.php:384
1368
- msgid "Please contact us with the following message:"
1369
- msgstr "Please contact us with the following message:"
1370
-
1371
- #: includes/i18n.php:385
1372
- 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."
1373
- 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."
1374
-
1375
- #: includes/i18n.php:386
1376
- msgid "Please contact us here"
1377
- msgstr "Please contact us here"
1378
-
1379
- #: includes/i18n.php:387
1380
- msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
1381
- msgstr "I have upgraded my account but when I try to Sync the License, the plan remains %s."
1382
-
1383
- #: includes/i18n.php:390
1384
- msgid "From unknown reason, the API connectivity test failed."
1385
- msgstr "From unknown reason, the API connectivity test failed."
1386
-
1387
- #: includes/i18n.php:391
1388
- msgid "It's probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?"
1389
- msgstr "It's probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?"
1390
-
1391
- #: includes/i18n.php:392
1392
- msgid "We use PHP cURL library for the API calls, which is a very common library and usually installed and activated out of the box. Unfortunately, cURL is not activated (or disabled) on your server."
1393
- msgstr "We use PHP cURL library for the API calls, which is a very common library and usually installed and activated out of the box. Unfortunately, cURL is not activated (or disabled) on your server."
1394
-
1395
- #: includes/i18n.php:393
1396
- msgid "Disabled method(s):"
1397
- msgstr "Disabled method(s):"
1398
-
1399
- #: includes/i18n.php:394
1400
- msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1401
- msgstr "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1402
-
1403
- #: includes/i18n.php:395
1404
- msgctxt "as pluginX requires an access to our API"
1405
- msgid "%s requires an access to our API."
1406
- msgstr "%s requires an access to our API."
1407
-
1408
- #: includes/i18n.php:397
1409
- msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
1410
- msgstr "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
1411
-
1412
- #: includes/i18n.php:398
1413
- msgid "I don't know what is Squid or ACL, help me!"
1414
- msgstr "I don't know what is Squid or ACL, help me!"
1415
-
1416
- #: includes/i18n.php:399, includes/i18n.php:403
1417
- 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."
1418
- 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."
1419
-
1420
- #: includes/i18n.php:400
1421
- msgid "I'm a system administrator"
1422
- msgstr "I'm a system administrator"
1423
-
1424
- #: includes/i18n.php:401
1425
- msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the %s and activate it again."
1426
- msgstr "Great, please whitelist the following domains: %s. Once you are done, deactivate the %s and activate it again."
1427
-
1428
- #: includes/i18n.php:402
1429
- msgid "I don't know what is cURL or how to install it, help me!"
1430
- msgstr "I don't know what is cURL or how to install it, help me!"
1431
-
1432
- #: includes/i18n.php:404
1433
- 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."
1434
- 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."
1435
-
1436
- #: includes/i18n.php:405
1437
- msgid "We are sure it's an issue on our side and more than happy to resolve it for you ASAP if you give us a chance."
1438
- msgstr "We are sure it's an issue on our side and more than happy to resolve it for you ASAP if you give us a chance."
1439
-
1440
- #: includes/i18n.php:406
1441
- msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
1442
- msgstr "Sorry for the inconvenience and we are here to help if you give us a chance."
1443
-
1444
- #: includes/i18n.php:407
1445
- msgid "Yes - I'm giving you a chance to fix it"
1446
- msgstr "Yes - I'm giving you a chance to fix it"
1447
-
1448
- #: includes/i18n.php:408
1449
- msgid "We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update."
1450
- msgstr "We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update."
1451
-
1452
- #: includes/i18n.php:409
1453
- msgid "Let's try your previous version"
1454
- msgstr "Let's try your previous version"
1455
-
1456
- #: includes/i18n.php:410
1457
- msgid "Uninstall this version and install the previous one."
1458
- msgstr "Uninstall this version and install the previous one."
1459
-
1460
- #: includes/i18n.php:411
1461
- msgid "That's exhausting, please deactivate"
1462
- msgstr "That's exhausting, please deactivate"
1463
-
1464
- #: includes/i18n.php:412
1465
- msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
1466
- msgstr "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
1467
-
1468
- #: includes/i18n.php:413
1469
- 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."
1470
- 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."
1471
-
1472
- #: includes/i18n.php:414
1473
- msgctxt "%1s - plugin title, %2s - API domain"
1474
- msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
1475
- msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
1476
-
1477
- #: includes/i18n.php:416
1478
- msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
1479
- msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
1480
-
1481
- #: includes/i18n.php:419
1482
- 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."
1483
- 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."
1484
-
1485
- #: includes/i18n.php:420
1486
- msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
1487
- msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
1488
-
1489
- #: includes/i18n.php:421
1490
- msgid "%s is the new owner of the account."
1491
- msgstr "%s is the new owner of the account."
1492
-
1493
- #: includes/i18n.php:423
1494
- msgctxt "addonX cannot run without pluginY"
1495
- msgid "%s cannot run without %s."
1496
- msgstr "%s cannot run without %s."
1497
-
1498
- #: includes/i18n.php:425
1499
- msgctxt "addonX cannot run..."
1500
- msgid "%s cannot run without the plugin."
1501
- msgstr "%s cannot run without the plugin."
1502
-
1503
- #: includes/i18n.php:426
1504
- msgctxt "pluginX activation was successfully..."
1505
- msgid "%s activation was successfully completed."
1506
- msgstr "%s activation was successfully completed."
1507
-
1508
- #: includes/i18n.php:428
1509
- msgctxt "Plugin installer section title"
1510
- msgid "Features & Pricing"
1511
- msgstr "Features & Pricing"
1512
-
1513
- #: includes/i18n.php:429
1514
- msgid "Add-on must be deployed to WordPress.org or Freemius."
1515
- msgstr "Add-on must be deployed to WordPress.org or Freemius."
1516
-
1517
- #: includes/i18n.php:430
1518
- msgid "Paid add-on must be deployed to Freemius."
1519
- msgstr "Paid add-on must be deployed to Freemius."
1520
-
1521
- #: includes/i18n.php:434
1522
- msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
1523
- msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
1524
-
1525
- #: includes/i18n.php:435
1526
- 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."
1527
- 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."
1528
-
1529
- #: includes/i18n.php:440
1530
- msgctxt "as every month"
1531
- msgid "Monthly"
1532
- msgstr "Monthly"
1533
-
1534
- #: includes/i18n.php:441
1535
- msgctxt "as monthly period"
1536
- msgid "mo"
1537
- msgstr "mo"
1538
 
1539
- #: includes/i18n.php:442
1540
- msgctxt "as once a year"
1541
- msgid "Annual"
1542
- msgstr "Annual"
1543
 
1544
- #: includes/i18n.php:443
1545
- msgctxt "as once a year"
1546
- msgid "Annually"
1547
- msgstr "Annually"
1548
 
1549
- #: includes/i18n.php:444
1550
- msgctxt "as once a year"
1551
- msgid "Once"
1552
- msgstr "Once"
1553
 
1554
- #: includes/i18n.php:445
1555
- msgctxt "as annual period"
1556
- msgid "year"
1557
- msgstr "year"
1558
 
1559
- #: includes/i18n.php:446
1560
- msgid "Lifetime"
1561
- msgstr "Lifetime"
1562
 
1563
- #: includes/i18n.php:447
1564
- msgctxt "e.g. the best product"
1565
- msgid "Best"
1566
- msgstr "Best"
1567
 
1568
- #: includes/i18n.php:448
1569
- msgctxt "e.g. billed monthly"
1570
- msgid "Billed %s"
1571
- msgstr "Billed %s"
1572
 
1573
- #: includes/i18n.php:449
1574
- msgctxt "as a discount of $5 or 10%"
1575
- msgid "Save %s"
1576
- msgstr "Save %s"
1577
 
1578
- #: includes/i18n.php:451
1579
- msgid "View details"
1580
- msgstr "View details"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1581
 
1582
- #: includes/i18n.php:455
1583
- msgctxt "button label"
1584
- msgid "Approve & Start Trial"
1585
- msgstr "Approve & Start Trial"
1586
 
1587
- #: includes/i18n.php:457
1588
- msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1589
- msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1590
 
1591
- #: includes/i18n.php:459
1592
- 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."
1593
- 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."
1594
 
1595
- #: includes/i18n.php:465
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1596
  msgid "Business name"
1597
  msgstr "Business name"
1598
 
1599
- #: includes/i18n.php:466
1600
  msgid "Tax / VAT ID"
1601
  msgstr "Tax / VAT ID"
1602
 
1603
- #: includes/i18n.php:467
1604
  msgid "Address Line %d"
1605
  msgstr "Address Line %d"
1606
 
1607
- #: includes/i18n.php:468
1608
- msgid "Country"
1609
- msgstr "Country"
1610
-
1611
- #: includes/i18n.php:469
1612
- msgid "Select Country"
1613
- msgstr "Select Country"
1614
-
1615
- #: includes/i18n.php:470
1616
  msgid "City"
1617
  msgstr "City"
1618
 
1619
- #: includes/i18n.php:471
1620
  msgid "Town"
1621
  msgstr "Town"
1622
 
1623
- #: includes/i18n.php:472
 
 
 
 
 
 
 
 
 
 
 
 
1624
  msgid "State"
1625
  msgstr "State"
1626
 
1627
- #: includes/i18n.php:473
1628
  msgid "Province"
1629
  msgstr "Province"
1630
 
1631
- #: includes/i18n.php:474
1632
- msgid "ZIP / Postal Code"
1633
- msgstr "ZIP / Postal Code"
1634
 
1635
- #: includes/i18n.php:479
1636
- msgid "Installing plugin: %s"
1637
- msgstr "Installing plugin: %s"
1638
 
1639
- #: includes/i18n.php:480
1640
- msgid "Automatic Installation"
1641
- msgstr "Automatic Installation"
1642
 
1643
- #: includes/i18n.php:482
1644
- msgid "%s sec"
1645
- msgstr "%s sec"
1646
 
1647
- #: includes/i18n.php:483
1648
- 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."
1649
- 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."
1650
 
1651
- #: includes/i18n.php:484
1652
- 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."
1653
- 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."
1654
 
1655
- #: includes/i18n.php:485
1656
- msgid "Cancel Installation"
1657
- msgstr "Cancel Installation"
1658
 
1659
- #: includes/i18n.php:486
1660
- msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
1661
- msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
1662
 
1663
- #: includes/i18n.php:487
1664
- msgid "Invalid module ID."
1665
- msgstr "Invalid module ID."
1666
 
1667
- #: includes/i18n.php:488
1668
- msgid "Auto installation only works for opted-in users."
1669
- msgstr "Auto installation only works for opted-in users."
1670
 
1671
- #: includes/i18n.php:489
1672
- msgid "Premium version already active."
1673
- msgstr "Premium version already active."
1674
 
1675
- #: includes/i18n.php:490
1676
- msgid "Premium add-on version already installed."
1677
- msgstr "Premium add-on version already installed."
1678
 
1679
- #: includes/i18n.php:491
1680
- msgid "You do not have a valid license to access the premium version."
1681
- msgstr "You do not have a valid license to access the premium version."
1682
 
1683
- #: includes/i18n.php:492
1684
- msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
1685
- msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version."
1686
 
1687
- #: includes/i18n.php:496
1688
- msgid "Secure HTTPS %s page, running from an external domain"
1689
- msgstr "Secure HTTPS %s page, running from an external domain"
1690
 
1691
- #: includes/i18n.php:497
1692
- msgid "PCI compliant"
1693
- msgstr "PCI compliant"
1694
 
1695
- #: includes/i18n.php:498
1696
- msgid "View paid features"
1697
- msgstr "View paid features"
1698
 
1699
- #: includes/i18n.php:512
1700
- msgctxt "Plugin installer section title"
1701
- msgid "Description"
1702
- msgstr "Description"
1703
-
1704
- #: includes/i18n.php:513
1705
- msgctxt "Plugin installer section title"
1706
- msgid "Installation"
1707
- msgstr "Installation"
1708
-
1709
- #: includes/i18n.php:514
1710
- msgctxt "Plugin installer section title"
1711
- msgid "FAQ"
1712
- msgstr "FAQ"
1713
-
1714
- #: includes/i18n.php:515
1715
- msgctxt "Plugin installer section title"
1716
- msgid "Changelog"
1717
- msgstr "Changelog"
1718
-
1719
- #: includes/i18n.php:516
1720
- msgctxt "Plugin installer section title"
1721
- msgid "Reviews"
1722
- msgstr "Reviews"
1723
-
1724
- #: includes/i18n.php:517
1725
- msgctxt "Plugin installer section title"
1726
- msgid "Other Notes"
1727
- msgstr "Other Notes"
1728
-
1729
- #: includes/i18n.php:519
1730
- msgid "%s star"
1731
- msgstr "%s star"
1732
-
1733
- #: includes/i18n.php:521
1734
- msgid "%s stars"
1735
- msgstr "%s stars"
1736
-
1737
- #: includes/i18n.php:523
1738
- msgid "%s rating"
1739
- msgstr "%s rating"
1740
-
1741
- #: includes/i18n.php:525
1742
- msgid "%s ratings"
1743
- msgstr "%s ratings"
1744
-
1745
- #: includes/i18n.php:527
1746
- msgid "%s time"
1747
- msgstr "%s time"
1748
-
1749
- #: includes/i18n.php:529
1750
- msgid "%s times"
1751
- msgstr "%s times"
1752
-
1753
- #: includes/i18n.php:531
1754
- msgid "Click to see reviews that provided a rating of %s"
1755
- msgstr "Click to see reviews that provided a rating of %s"
1756
-
1757
- #: includes/i18n.php:532
1758
- msgid "Last Updated"
1759
- msgstr "Last Updated"
1760
 
1761
- #: includes/i18n.php:533
1762
- msgid "Requires WordPress Version:"
1763
- msgstr "Requires WordPress Version:"
1764
 
1765
- #: includes/i18n.php:534
1766
- msgctxt "as the plugin author"
1767
- msgid "Author:"
1768
- msgstr "Author:"
1769
 
1770
- #: includes/i18n.php:535
1771
- msgid "Compatible up to:"
1772
- msgstr "Compatible up to:"
1773
 
1774
- #: includes/i18n.php:536
1775
- msgid "Downloaded:"
1776
- msgstr "Downloaded:"
1777
 
1778
- #: includes/i18n.php:537
1779
- msgid "WordPress.org Plugin Page"
1780
- msgstr "WordPress.org Plugin Page"
1781
 
1782
- #: includes/i18n.php:538
1783
- msgid "Plugin Homepage"
1784
- msgstr "Plugin Homepage"
1785
 
1786
- #: includes/i18n.php:539
1787
- msgid "Donate to this plugin"
1788
- msgstr "Donate to this plugin"
1789
 
1790
- #: includes/i18n.php:540
1791
- msgid "Average Rating"
1792
- msgstr "Average Rating"
1793
 
1794
- #: includes/i18n.php:541
1795
- msgid "based on %s"
1796
- msgstr "based on %s"
1797
 
1798
- #: includes/i18n.php:542
1799
- msgid "Warning:"
1800
- msgstr "Warning:"
1801
 
1802
- #: includes/i18n.php:543
1803
- msgid "Contributors"
1804
- msgstr "Contributors"
1805
 
1806
- #: includes/i18n.php:544
1807
- msgid "Plugin Install"
1808
- msgstr "Plugin Install"
1809
 
1810
- #: includes/i18n.php:545
1811
- msgid "This plugin has not been tested with your current version of WordPress."
1812
- msgstr "This plugin has not been tested with your current version of WordPress."
1813
 
1814
- #: includes/i18n.php:546
1815
- msgid "This plugin has not been marked as compatible with your version of WordPress."
1816
- msgstr "This plugin has not been marked as compatible with your version of WordPress."
1817
 
1818
- #: includes/i18n.php:547
1819
- msgid "Newer Version (%s) Installed"
1820
- msgstr "Newer Version (%s) Installed"
1821
 
1822
- #: includes/i18n.php:548
1823
- msgid "Latest Version Installed"
1824
- msgstr "Latest Version Installed"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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_text_x_inline:1,2c;fs_echo_inline;fs_esc_attr_inline;fs_esc_attr_echo_inline;fs_esc_html_inline;fs_esc_html_echo_inline;fs_echo_x_inline:1,2c;fs_esc_attr_x_inline:1,2c;fs_esc_html_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:1816
23
+ msgid "freemius-debug"
24
+ msgstr "freemius-debug"
25
 
26
+ #: includes/class-freemius.php:13474, includes/fs-core-functions.php:728, includes/fs-core-functions.php:771, includes/fs-core-functions.php:809, includes/fs-core-functions.php:836, includes/fs-core-functions.php:859, includes/fs-core-functions.php:882, includes/fs-core-functions.php:909, includes/fs-core-functions.php:947
27
+ msgid "$text"
28
+ msgstr "$text"
29
 
30
+ #: includes/class-freemius.php:13580
31
+ msgid "Auto installation only works for opted-in users."
32
+ msgstr "Auto installation only works for opted-in users."
33
 
34
+ #: includes/class-freemius.php:13590, includes/class-freemius.php:13623, includes/class-fs-plugin-updater.php:490, includes/class-fs-plugin-updater.php:504
35
+ msgid "Invalid module ID."
36
+ msgstr "Invalid module ID."
37
 
38
+ #: includes/class-freemius.php:13599, includes/class-fs-plugin-updater.php:524
39
+ msgid "Premium version already active."
40
+ msgstr "Premium version already active."
41
 
42
+ #: includes/class-freemius.php:13606
43
+ msgid "You do not have a valid license to access the premium version."
44
+ msgstr "You do not have a valid license to access the premium version."
45
 
46
+ #: includes/class-freemius.php:13613
47
+ msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
48
+ msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version."
49
+
50
+ #: includes/class-freemius.php:13631, includes/class-fs-plugin-updater.php:523
51
+ msgid "Premium add-on version already installed."
52
+ msgstr "Premium add-on version already installed."
53
+
54
+ #: includes/class-freemius.php:13976
55
+ msgid "View paid features"
56
+ msgstr "View paid features"
57
+
58
+ #: includes/class-fs-plugin-updater.php:553
59
+ msgid "Installing plugin: %s"
60
+ msgstr "Installing plugin: %s"
61
+
62
+ #: includes/class-fs-plugin-updater.php:700
63
+ msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
64
+ msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
65
+
66
+ #: includes/fs-core-functions.php:743, includes/fs-core-functions.php:786, includes/fs-core-functions.php:924
67
+ msgctxt "$context"
68
+ msgid "$text"
69
+ msgstr "$text"
70
+
71
+ #: includes/fs-plugin-info-dialog.php:328
72
+ msgid "purchase"
73
+ msgstr "purchase"
74
+
75
+ #: includes/fs-plugin-info-dialog.php:329
76
+ msgid "start-free-x"
77
+ msgstr "start-free-x"
78
+
79
+ #: includes/fs-plugin-info-dialog.php:351, templates/account.php:643
80
+ msgid "download-latest"
81
+ msgstr "download-latest"
82
+
83
+ #: includes/fs-plugin-info-dialog.php:354, templates/account.php:637, templates/auto-installation.php:107
84
+ msgid "install-now"
85
+ msgstr "install-now"
86
+
87
+ #: includes/fs-plugin-info-dialog.php:360
88
+ msgid "install-update-now"
89
+ msgstr "install-update-now"
90
+
91
+ #: includes/fs-plugin-info-dialog.php:364
92
+ msgid "Newer Version (%s) Installed"
93
+ msgstr "Newer Version (%s) Installed"
94
+
95
+ #: includes/fs-plugin-info-dialog.php:367
96
+ msgid "Latest Version Installed"
97
+ msgstr "Latest Version Installed"
98
+
99
+ #: includes/fs-plugin-info-dialog.php:480
100
+ msgid "description"
101
+ msgstr "description"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
 
103
+ #: includes/fs-plugin-info-dialog.php:481
104
+ msgid "installation"
105
+ msgstr "installation"
 
 
 
 
 
 
 
 
 
 
 
 
 
106
 
107
+ #: includes/fs-plugin-info-dialog.php:482
108
+ msgid "faq"
109
+ msgstr "faq"
110
 
111
+ #: includes/fs-plugin-info-dialog.php:483
112
+ msgid "screenshots"
113
+ msgstr "screenshots"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
 
115
+ #: includes/fs-plugin-info-dialog.php:484
116
+ msgid "changelog"
117
+ msgstr "changelog"
118
 
119
+ #: includes/fs-plugin-info-dialog.php:485
120
+ msgid "reviews"
121
+ msgstr "reviews"
122
+
123
+ #: includes/fs-plugin-info-dialog.php:486
124
+ msgid "other_notes"
125
+ msgstr "other_notes"
126
+
127
+ #: includes/fs-plugin-info-dialog.php:501
128
+ msgid "features-and-pricing"
129
+ msgstr "features-and-pricing"
130
+
131
+ #: includes/fs-plugin-info-dialog.php:511
132
+ msgid "Plugin Install"
133
+ msgstr "Plugin Install"
134
+
135
+ #: includes/fs-plugin-info-dialog.php:583
136
+ msgid "x-plan"
137
+ msgstr "x-plan"
138
+
139
+ #: includes/fs-plugin-info-dialog.php:608
140
+ msgid "best"
141
+ msgstr "best"
142
+
143
+ #: includes/fs-plugin-info-dialog.php:610
144
+ msgid "$cycle"
145
+ msgstr "$cycle"
146
+
147
+ #: includes/fs-plugin-info-dialog.php:621, includes/fs-plugin-info-dialog.php:623, includes/fs-plugin-info-dialog.php:625
148
+ msgid "billed-x"
149
+ msgstr "billed-x"
150
+
151
+ #: includes/fs-plugin-info-dialog.php:621
152
+ msgid "monthly"
153
+ msgstr "monthly"
154
+
155
+ #: includes/fs-plugin-info-dialog.php:623
156
+ msgid "annually"
157
+ msgstr "annually"
158
+
159
+ #: includes/fs-plugin-info-dialog.php:625
160
+ msgid "once"
161
+ msgstr "once"
162
+
163
+ #: includes/fs-plugin-info-dialog.php:631
164
+ msgid "license-single-site"
165
+ msgstr "license-single-site"
166
+
167
+ #: includes/fs-plugin-info-dialog.php:633
168
+ msgid "license-unlimited"
169
+ msgstr "license-unlimited"
170
+
171
+ #: includes/fs-plugin-info-dialog.php:635
172
+ msgid "license-x-sites"
173
+ msgstr "license-x-sites"
174
+
175
+ #: includes/fs-plugin-info-dialog.php:645
176
+ msgid "mo"
177
+ msgstr "mo"
178
+
179
+ #: includes/fs-plugin-info-dialog.php:652
180
+ msgid "year"
181
+ msgstr "year"
182
+
183
+ #: includes/fs-plugin-info-dialog.php:704
184
+ msgid "price"
185
+ msgstr "price"
186
+
187
+ #: includes/fs-plugin-info-dialog.php:750
188
+ msgctxt "as a discount of $5 or 10%"
189
+ msgid "Save %s"
190
+ msgstr "Save %s"
191
+
192
+ #: includes/fs-plugin-info-dialog.php:760
193
+ msgid "no-commitment-x"
194
+ msgstr "no-commitment-x"
195
+
196
+ #: includes/fs-plugin-info-dialog.php:763
197
+ msgid "after-x-pay-as-little-y"
198
+ msgstr "after-x-pay-as-little-y"
199
+
200
+ #: includes/fs-plugin-info-dialog.php:774
201
+ msgid "details"
202
+ msgstr "details"
203
+
204
+ #: includes/fs-plugin-info-dialog.php:777, templates/account.php:204, templates/debug.php:180, templates/debug.php:217, templates/debug.php:345
205
+ msgid "version"
206
+ msgstr "version"
207
+
208
+ #: includes/fs-plugin-info-dialog.php:783
209
+ msgctxt "as the plugin author"
210
+ msgid "Author"
211
+ msgstr "Author"
212
+
213
+ #: includes/fs-plugin-info-dialog.php:789
214
+ msgid "Last Updated"
215
+ msgstr "Last Updated"
216
+
217
+ #: includes/fs-plugin-info-dialog.php:791, templates/debug/plugins-themes-sync.php:41, templates/debug/plugins-themes-sync.php:61, templates/debug/scheduled-crons.php:105, templates/debug/scheduled-crons.php:121
218
+ msgid "x-ago"
219
+ msgstr "x-ago"
220
+
221
+ #: includes/fs-plugin-info-dialog.php:798
222
+ msgid "Requires WordPress Version"
223
+ msgstr "Requires WordPress Version"
224
+
225
+ #: includes/fs-plugin-info-dialog.php:798
226
+ msgid "x-or-higher"
227
+ msgstr "x-or-higher"
228
+
229
+ #: includes/fs-plugin-info-dialog.php:804
230
+ msgid "Compatible up to"
231
+ msgstr "Compatible up to"
232
+
233
+ #: includes/fs-plugin-info-dialog.php:811
234
+ msgid "Downloaded"
235
+ msgstr "Downloaded"
236
+
237
+ #: includes/fs-plugin-info-dialog.php:812, includes/fs-plugin-info-dialog.php:850, includes/fs-plugin-info-dialog.php:861, includes/fs-plugin-info-dialog.php:928, templates/account.php:118, templates/account.php:506, templates/account.php:655, templates/connect.php:433, templates/debug.php:211, templates/forms/license-activation.php:23
238
+ #: includes/fs-plugin-info-dialog.php:821
239
+ msgid "WordPress.org Plugin Page"
240
+ msgstr "WordPress.org Plugin Page"
241
+
242
+ #: includes/fs-plugin-info-dialog.php:828
243
+ msgid "Plugin Homepage"
244
+ msgstr "Plugin Homepage"
245
+
246
+ #: includes/fs-plugin-info-dialog.php:835, includes/fs-plugin-info-dialog.php:901
247
+ msgid "Donate to this plugin"
248
+ msgstr "Donate to this plugin"
249
+
250
+ #: includes/fs-plugin-info-dialog.php:841
251
+ msgid "Average Rating"
252
+ msgstr "Average Rating"
253
+
254
+ #: includes/fs-plugin-info-dialog.php:848
255
+ msgid "based on %s"
256
+ msgstr "based on %s"
257
+
258
+ #: includes/fs-plugin-info-dialog.php:869
259
+ msgid "click-to-reviews"
260
+ msgstr "click-to-reviews"
261
+
262
+ #: includes/fs-plugin-info-dialog.php:880
263
+ msgid "Contributors"
264
+ msgstr "Contributors"
265
+
266
+ #: includes/fs-plugin-info-dialog.php:908, includes/fs-plugin-info-dialog.php:910
267
+ msgid "Warning"
268
+ msgstr "Warning"
269
+
270
+ #: includes/fs-plugin-info-dialog.php:908
271
+ msgid "This plugin has not been tested with your current version of WordPress."
272
+ msgstr "This plugin has not been tested with your current version of WordPress."
273
+
274
+ #: includes/fs-plugin-info-dialog.php:910
275
+ msgid "This plugin has not been marked as compatible with your version of WordPress."
276
+ msgstr "This plugin has not been marked as compatible with your version of WordPress."
277
+
278
+ #: templates/account.php:55, templates/debug.php:276
279
+ msgid "account"
280
+ msgstr "account"
281
+
282
+ #: templates/account.php:58
283
+ msgid "add-ons"
284
+ msgstr "add-ons"
285
+
286
+ #: templates/account.php:61
287
+ msgid "upgrade"
288
+ msgstr "upgrade"
289
+
290
+ #: templates/account.php:63
291
+ msgid "free-trial"
292
+ msgstr "free-trial"
293
+
294
+ #: templates/account.php:74
295
+ msgid "account-details"
296
+ msgstr "account-details"
297
+
298
+ #: templates/account.php:84
299
  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?"
300
  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?"
301
 
302
+ #: templates/account.php:86
303
+ msgid "delete-account-confirm"
304
+ msgstr "delete-account-confirm"
305
+
306
+ #: templates/account.php:89
307
+ msgid "delete-account"
308
+ msgstr "delete-account"
309
+
310
+ #: templates/account.php:100
311
+ msgid "deactivate-license-confirm"
312
+ msgstr "deactivate-license-confirm"
313
+
314
+ #: templates/account.php:101, templates/account.php:553
315
+ msgid "deactivate-license"
316
+ msgstr "deactivate-license"
317
+
318
+ #: templates/account.php:114, templates/account.php:559
319
+ msgid "downgrade-x-confirm"
320
+ msgstr "downgrade-x-confirm"
321
+
322
+ #: templates/account.php:115, templates/account.php:564
323
+ msgid "after-downgrade-non-blocking"
324
+ msgstr "after-downgrade-non-blocking"
325
+
326
+ #: templates/account.php:117, templates/account.php:565
327
+ msgid "after-downgrade-blocking"
328
+ msgstr "after-downgrade-blocking"
329
+
330
+ #: templates/account.php:118
331
+ msgid "proceed-confirmation"
332
+ msgstr "proceed-confirmation"
333
+
334
+ #: templates/account.php:126
335
+ msgid "change-plan"
336
+ msgstr "change-plan"
337
+
338
+ #: templates/account.php:136, templates/account.php:589
339
+ msgid "cancel-trial-confirm"
340
+ msgstr "cancel-trial-confirm"
341
+
342
+ #: templates/account.php:137, templates/account.php:585
343
+ msgid "cancel-trial"
344
+ msgstr "cancel-trial"
345
+
346
+ #: templates/account.php:147
347
+ msgid "sync"
348
+ msgstr "sync"
349
+
350
+ #: templates/account.php:161, templates/debug.php:380
351
+ msgid "name"
352
+ msgstr "name"
353
+
354
+ #: templates/account.php:167, templates/debug.php:381
355
+ msgid "email"
356
+ msgstr "email"
357
+
358
+ #: templates/account.php:174, templates/debug.php:301, templates/debug.php:410
359
+ msgid "user-id"
360
+ msgstr "user-id"
361
+
362
+ #: templates/account.php:181
363
+ msgid "site-id"
364
+ msgstr "site-id"
365
+
366
+ #: templates/account.php:184
367
+ msgid "no-id"
368
+ msgstr "no-id"
369
+
370
+ #: templates/account.php:189, templates/debug.php:222, templates/debug.php:303, templates/debug.php:346, templates/debug.php:383
371
+ msgid "public-key"
372
+ msgstr "public-key"
373
+
374
+ #: templates/account.php:195, templates/debug.php:304, templates/debug.php:347, templates/debug.php:384
375
+ msgid "secret-key"
376
+ msgstr "secret-key"
377
+
378
+ #: templates/account.php:198
379
+ msgid "no-secret"
380
+ msgstr "no-secret"
381
 
382
+ #: templates/account.php:214, templates/account.php:222, templates/debug.php:302
383
+ msgid "plan"
384
+ msgstr "plan"
385
 
386
+ #: templates/account.php:217, templates/account.php:503, templates/add-ons.php:130
387
+ msgid "trial"
388
+ msgstr "trial"
389
 
390
+ #: templates/account.php:225, templates/add-ons.php:126
391
+ msgid "free"
392
+ msgstr "free"
393
 
394
+ #: templates/account.php:232
395
+ msgid "License Key"
396
+ msgstr "License Key"
397
 
398
+ #: templates/account.php:271, templates/account.php:276, templates/account.php:528
399
+ msgid "expires-in"
400
+ msgstr "expires-in"
401
 
402
+ #: templates/account.php:273, templates/account.php:533
403
+ msgid "renews-in"
404
+ msgstr "renews-in"
405
 
406
+ #: templates/account.php:289, templates/account.php:602
407
+ msgid "activate-x-plan"
408
+ msgstr "activate-x-plan"
409
 
410
+ #: templates/account.php:292
411
+ msgid "localhost"
412
+ msgstr "localhost"
413
 
414
+ #: templates/account.php:296
415
+ msgid "x-left"
416
+ msgstr "x-left"
417
 
418
+ #: templates/account.php:297
419
+ msgid "last-license"
420
+ msgstr "last-license"
421
 
422
+ #: templates/account.php:350
423
+ msgid "download-x-version"
424
+ msgstr "download-x-version"
425
 
426
+ #: templates/account.php:375
427
+ msgid "what-is-your-x"
428
+ msgstr "what-is-your-x"
429
 
430
+ #: templates/account.php:513
431
+ msgid "cancelled"
432
+ msgstr "cancelled"
433
 
434
+ #: templates/account.php:518
435
+ msgid "expired"
436
+ msgstr "expired"
437
 
438
+ #: templates/account.php:523
439
+ msgid "no-expiration"
440
+ msgstr "no-expiration"
441
 
442
+ #: templates/account.php:572
443
+ msgid "downgrade"
444
+ msgstr "downgrade"
445
 
446
+ #: templates/account.php:617
447
+ msgid "sync-license"
448
+ msgstr "sync-license"
449
 
450
+ #: templates/account.php:630
451
+ msgid "activate"
452
+ msgstr "activate"
453
 
454
+ #: templates/account.php:653, templates/add-ons.php:99
455
+ msgid "more-information-about-x"
456
+ msgstr "more-information-about-x"
457
 
458
+ #: templates/account.php:704, templates/debug.php:327
459
+ msgid "delete"
460
+ msgstr "delete"
461
 
462
+ #: templates/add-ons.php:36
463
+ msgid "add-ons-for-x"
464
+ msgstr "add-ons-for-x"
465
 
466
+ #: templates/add-ons.php:43
467
+ msgid "oops"
468
+ msgstr "oops"
469
 
470
+ #: templates/add-ons.php:44
471
+ msgid "add-ons-missing"
472
+ msgstr "add-ons-missing"
473
 
474
+ #: templates/add-ons.php:135
475
+ msgid "View details"
476
+ msgstr "View details"
477
+
478
+ #: templates/admin-notice.php:39, templates/admin-notice.php:39
479
+ msgid "dismiss"
480
+ msgstr "dismiss"
481
+
482
+ #: templates/auto-installation.php:31
483
+ msgid "addon"
484
+ msgstr "addon"
485
+
486
+ #: templates/auto-installation.php:42
487
+ msgid "x-sec"
488
+ msgstr "x-sec"
489
+
490
+ #: templates/auto-installation.php:79
491
+ msgid "Automatic Installation"
492
+ msgstr "Automatic Installation"
493
+
494
+ #: templates/auto-installation.php:89
495
+ 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."
496
+ 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."
497
+
498
+ #: templates/auto-installation.php:100
499
+ 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."
500
+ 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."
501
+
502
+ #: templates/auto-installation.php:105
503
+ msgid "Cancel Installation"
504
+ msgstr "Cancel Installation"
505
+
506
+ #: templates/checkout.php:168
507
+ msgid "PCI compliant"
508
+ msgstr "PCI compliant"
509
+
510
+ #: templates/connect.php:134
511
+ msgid "thanks-x"
512
+ msgstr "thanks-x"
513
+
514
+ #: templates/connect.php:135
515
+ msgid "pending-activation-message"
516
+ msgstr "pending-activation-message"
517
 
518
+ #: templates/connect.php:139
519
+ msgid "complete-the-install"
520
+ msgstr "complete-the-install"
521
 
522
+ #: templates/connect.php:145, templates/connect.php:168
523
+ msgid "hey-x"
524
+ msgstr "hey-x"
525
 
526
+ #: templates/connect.php:146
527
+ msgid "thanks-for-purchasing"
528
+ msgstr "thanks-for-purchasing"
529
 
530
+ #: templates/connect.php:170
531
+ msgid "$default_optin_message"
532
+ msgstr "$default_optin_message"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
533
 
534
+ #: templates/connect.php:187, templates/debug.php:415, templates/forms/license-activation.php:44
535
+ msgid "license-key"
536
+ msgstr "license-key"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
537
 
538
+ #: templates/connect.php:190, templates/forms/license-activation.php:19
539
+ msgid "cant-find-license-key"
540
+ msgstr "cant-find-license-key"
541
+
542
+ #: templates/connect.php:197, templates/forms/deactivation/retry-skip.php:20
543
+ msgid "skip"
544
+ msgstr "skip"
545
+
546
+ #: templates/connect.php:206, templates/connect.php:217, templates/connect.php:408
547
+ msgid "$button_label"
548
+ msgstr "$button_label"
549
+
550
+ #: templates/connect.php:282
551
+ msgid "what-permissions"
552
+ msgstr "what-permissions"
553
+
554
+ #: templates/connect.php:303
555
+ msgid "dont-have-license-key"
556
+ msgstr "dont-have-license-key"
557
+
558
+ #: templates/connect.php:304
559
+ msgid "activate-free-version"
560
+ msgstr "activate-free-version"
561
+
562
+ #: templates/connect.php:306
563
+ msgid "have-license-key"
564
+ msgstr "have-license-key"
565
+
566
+ #: templates/connect.php:307
567
+ msgid "activate-license"
568
+ msgstr "activate-license"
569
+
570
+ #: templates/connect.php:314
571
+ msgid "privacy-policy"
572
+ msgstr "privacy-policy"
573
+
574
+ #: templates/connect.php:316
575
+ msgid "tos"
576
+ msgstr "tos"
577
+
578
+ #: templates/debug.php:17
579
  msgid "Freemius Debug"
580
  msgstr "Freemius Debug"
581
 
582
+ #: templates/debug.php:17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
583
  msgid "SDK"
584
  msgstr "SDK"
585
 
586
+ #: templates/debug.php:21
587
+ msgid "debugging"
588
+ msgstr "debugging"
 
589
 
590
+ #: templates/debug.php:25, templates/debug.php:259
591
+ msgid "on"
592
+ msgstr "on"
 
593
 
594
+ #: templates/debug.php:26, templates/debug.php:260
595
+ msgid "off"
596
+ msgstr "off"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
597
 
598
+ #: templates/debug.php:51, templates/debug.php:223, templates/debug.php:305
599
+ msgid "actions"
600
+ msgstr "actions"
 
601
 
602
+ #: templates/debug.php:61
603
+ msgid "delete-all-confirm"
604
+ msgstr "delete-all-confirm"
 
605
 
606
+ #: templates/debug.php:61
607
+ msgid "delete-all-accounts"
608
+ msgstr "delete-all-accounts"
 
609
 
610
+ #: templates/debug.php:68
611
+ msgid "clear-api-cache"
612
+ msgstr "clear-api-cache"
 
613
 
614
+ #: templates/debug.php:75
615
+ msgid "sync-data-from-server"
616
+ msgstr "sync-data-from-server"
617
 
618
+ #: templates/debug.php:79
619
+ msgid "Load DB Option"
620
+ msgstr "Load DB Option"
 
621
 
622
+ #: templates/debug.php:82
623
+ msgid "Set DB Option"
624
+ msgstr "Set DB Option"
 
625
 
626
+ #: templates/debug.php:159
627
+ msgid "key"
628
+ msgstr "key"
 
629
 
630
+ #: templates/debug.php:160
631
+ msgid "value"
632
+ msgstr "value"
633
+
634
+ #: templates/debug.php:176
635
+ msgid "sdk-versions"
636
+ msgstr "sdk-versions"
637
+
638
+ #: templates/debug.php:181
639
+ msgid "sdk-path"
640
+ msgstr "sdk-path"
641
+
642
+ #: templates/debug.php:182, templates/debug.php:221
643
+ msgid "plugin-path"
644
+ msgstr "plugin-path"
645
+
646
+ #: templates/debug.php:183
647
+ msgid "is-active"
648
+ msgstr "is-active"
649
+
650
+ #: templates/debug.php:215, templates/debug.php:299, templates/debug.php:342, templates/debug.php:379, templates/debug.php:408, templates/debug.php:487, templates/account/payments.php:35, templates/debug/logger.php:21
651
+ msgid "id"
652
+ msgstr "id"
653
+
654
+ #: templates/debug.php:216, templates/debug.php:300, templates/debug.php:344, templates/debug/scheduled-crons.php:79
655
+ msgid "slug"
656
+ msgstr "slug"
657
+
658
+ #: templates/debug.php:218, templates/debug.php:343
659
+ msgid "title"
660
+ msgstr "title"
661
+
662
+ #: templates/debug.php:219
663
+ msgid "api"
664
+ msgstr "api"
665
+
666
+ #: templates/debug.php:220
667
+ msgid "freemius-state"
668
+ msgstr "freemius-state"
669
+
670
+ #: templates/debug.php:252
671
+ msgid "connected"
672
+ msgstr "connected"
673
+
674
+ #: templates/debug.php:253
675
+ msgid "blocked"
676
+ msgstr "blocked"
677
+
678
+ #: templates/debug.php:272
679
+ msgid "Simulate Trial"
680
+ msgstr "Simulate Trial"
681
+
682
+ #: templates/debug.php:295
683
+ msgid "module-installs"
684
+ msgstr "module-installs"
685
+
686
+ #: templates/debug.php:295, templates/debug.php:404
687
+ msgid "$module_type"
688
+ msgstr "$module_type"
689
+
690
+ #: templates/debug.php:295
691
+ msgid "sites"
692
+ msgstr "sites"
693
+
694
+ #: templates/debug.php:338
695
+ msgid "addons-of-x"
696
+ msgstr "addons-of-x"
697
+
698
+ #: templates/debug.php:375
699
+ msgid "users"
700
+ msgstr "users"
701
+
702
+ #: templates/debug.php:382
703
+ msgid "verified"
704
+ msgstr "verified"
705
+
706
+ #: templates/debug.php:404
707
+ msgid "module-licenses"
708
+ msgstr "module-licenses"
709
+
710
+ #: templates/debug.php:409
711
+ msgid "plugin-id"
712
+ msgstr "plugin-id"
713
+
714
+ #: templates/debug.php:411
715
+ msgid "plan-id"
716
+ msgstr "plan-id"
717
 
718
+ #: templates/debug.php:412
719
+ msgid "quota"
720
+ msgstr "quota"
 
721
 
722
+ #: templates/debug.php:413
723
+ msgid "activated"
724
+ msgstr "activated"
725
 
726
+ #: templates/debug.php:414
727
+ msgid "blocking"
728
+ msgstr "blocking"
729
 
730
+ #: templates/debug.php:416
731
+ msgid "expiration"
732
+ msgstr "expiration"
733
+
734
+ #: templates/debug.php:445
735
+ msgid "debug-log"
736
+ msgstr "debug-log"
737
+
738
+ #: templates/debug.php:449
739
+ msgid "all-types"
740
+ msgstr "all-types"
741
+
742
+ #: templates/debug.php:456
743
+ msgid "all-requests"
744
+ msgstr "all-requests"
745
+
746
+ #: templates/debug.php:461, templates/debug.php:490, templates/debug/logger.php:25
747
+ msgid "file"
748
+ msgstr "file"
749
+
750
+ #: templates/debug.php:462, templates/debug.php:488, templates/debug/logger.php:23
751
+ msgid "function"
752
+ msgstr "function"
753
+
754
+ #: templates/debug.php:463
755
+ msgid "process-id"
756
+ msgstr "process-id"
757
+
758
+ #: templates/debug.php:464
759
+ msgid "logger"
760
+ msgstr "logger"
761
+
762
+ #: templates/debug.php:465, templates/debug.php:489, templates/debug/logger.php:24
763
+ msgid "message"
764
+ msgstr "message"
765
+
766
+ #: templates/debug.php:467
767
+ msgid "filter"
768
+ msgstr "filter"
769
+
770
+ #: templates/debug.php:475
771
+ msgid "download"
772
+ msgstr "download"
773
+
774
+ #: templates/debug.php:486, templates/debug/logger.php:22
775
+ msgid "type"
776
+ msgstr "type"
777
+
778
+ #: templates/debug.php:491, templates/debug/logger.php:26
779
+ msgid "timestamp"
780
+ msgstr "timestamp"
781
+
782
+ #: includes/debug/class-fs-debug-bar-panel.php:48, templates/debug/api-calls.php:84, templates/debug/api-calls.php:148, templates/debug/api-calls.php:149, templates/debug/logger.php:62
783
+ msgid "ms"
784
+ msgstr "ms"
785
+
786
+ #: includes/debug/debug-bar-start.php:41
787
+ msgid "Freemius API"
788
+ msgstr "Freemius API"
789
+
790
+ #: includes/debug/debug-bar-start.php:42
791
+ msgid "Requests"
792
+ msgstr "Requests"
793
+
794
+ #: templates/account/billing.php:36
795
+ msgid "billing"
796
+ msgstr "billing"
797
+
798
+ #: templates/account/billing.php:41, templates/account/billing.php:41
799
  msgid "Business name"
800
  msgstr "Business name"
801
 
802
+ #: templates/account/billing.php:42, templates/account/billing.php:42
803
  msgid "Tax / VAT ID"
804
  msgstr "Tax / VAT ID"
805
 
806
+ #: templates/account/billing.php:45, templates/account/billing.php:45, templates/account/billing.php:46, templates/account/billing.php:46
807
  msgid "Address Line %d"
808
  msgstr "Address Line %d"
809
 
810
+ #: templates/account/billing.php:49, templates/account/billing.php:49
 
 
 
 
 
 
 
 
811
  msgid "City"
812
  msgstr "City"
813
 
814
+ #: templates/account/billing.php:49, templates/account/billing.php:49
815
  msgid "Town"
816
  msgstr "Town"
817
 
818
+ #: templates/account/billing.php:50, templates/account/billing.php:50
819
+ msgid "ZIP / Postal Code"
820
+ msgstr "ZIP / Postal Code"
821
+
822
+ #: templates/account/billing.php:305
823
+ msgid "Country"
824
+ msgstr "Country"
825
+
826
+ #: templates/account/billing.php:307
827
+ msgid "Select Country"
828
+ msgstr "Select Country"
829
+
830
+ #: templates/account/billing.php:314, templates/account/billing.php:315
831
  msgid "State"
832
  msgstr "State"
833
 
834
+ #: templates/account/billing.php:314, templates/account/billing.php:315
835
  msgid "Province"
836
  msgstr "Province"
837
 
838
+ #: templates/account/billing.php:321, templates/account/billing.php:362, templates/account/billing.php:421
839
+ msgid "edit"
840
+ msgstr "edit"
841
 
842
+ #: templates/account/billing.php:322, templates/account/billing.php:362, templates/account/billing.php:413
843
+ msgid "update"
844
+ msgstr "update"
845
 
846
+ #: templates/account/payments.php:29
847
+ msgid "payments"
848
+ msgstr "payments"
849
 
850
+ #: templates/account/payments.php:36
851
+ msgid "date"
852
+ msgstr "date"
853
 
854
+ #: templates/account/payments.php:37
855
+ msgid "amount"
856
+ msgstr "amount"
857
 
858
+ #: templates/account/payments.php:38, templates/account/payments.php:50
859
+ msgid "invoice"
860
+ msgstr "invoice"
861
 
862
+ #: templates/debug/api-calls.php:54
863
+ msgid "API"
864
+ msgstr "API"
865
 
866
+ #: templates/debug/api-calls.php:66
867
+ msgid "Method"
868
+ msgstr "Method"
869
 
870
+ #: templates/debug/api-calls.php:67
871
+ msgid "Code"
872
+ msgstr "Code"
873
 
874
+ #: templates/debug/api-calls.php:68
875
+ msgid "Length"
876
+ msgstr "Length"
877
 
878
+ #: templates/debug/api-calls.php:69
879
+ msgid "Path"
880
+ msgstr "Path"
881
 
882
+ #: templates/debug/api-calls.php:71
883
+ msgid "Body"
884
+ msgstr "Body"
885
 
886
+ #: templates/debug/api-calls.php:73
887
+ msgid "Result"
888
+ msgstr "Result"
889
 
890
+ #: templates/debug/api-calls.php:74
891
+ msgid "Start"
892
+ msgstr "Start"
893
 
894
+ #: templates/debug/api-calls.php:75
895
+ msgid "End"
896
+ msgstr "End"
897
 
898
+ #: templates/debug/logger.php:15
899
+ msgid "Log"
900
+ msgstr "Log"
901
 
902
+ #: templates/debug/plugins-themes-sync.php:17
903
+ msgid "plugins-themes-sync"
904
+ msgstr "plugins-themes-sync"
905
 
906
+ #: templates/debug/plugins-themes-sync.php:22
907
+ msgid "total"
908
+ msgstr "total"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
909
 
910
+ #: templates/debug/plugins-themes-sync.php:23, templates/debug/scheduled-crons.php:83
911
+ msgid "Last"
912
+ msgstr "Last"
913
 
914
+ #: templates/debug/plugins-themes-sync.php:29
915
+ msgid "plugins"
916
+ msgstr "plugins"
 
917
 
918
+ #: templates/debug/plugins-themes-sync.php:35, templates/debug/plugins-themes-sync.php:55, templates/debug/scheduled-crons.php:99, templates/debug/scheduled-crons.php:115
919
+ msgid "sec"
920
+ msgstr "sec"
921
 
922
+ #: templates/debug/plugins-themes-sync.php:39, templates/debug/plugins-themes-sync.php:59, templates/debug/scheduled-crons.php:103, templates/debug/scheduled-crons.php:119
923
+ msgid "in-x"
924
+ msgstr "in-x"
925
 
926
+ #: templates/debug/plugins-themes-sync.php:49
927
+ msgid "themes"
928
+ msgstr "themes"
929
 
930
+ #: templates/debug/scheduled-crons.php:75
931
+ msgid "scheduled-crons"
932
+ msgstr "scheduled-crons"
933
 
934
+ #: templates/debug/scheduled-crons.php:80
935
+ msgid "module"
936
+ msgstr "module"
937
 
938
+ #: templates/debug/scheduled-crons.php:81
939
+ msgid "module-type"
940
+ msgstr "module-type"
941
 
942
+ #: templates/debug/scheduled-crons.php:82
943
+ msgid "cron-type"
944
+ msgstr "cron-type"
945
 
946
+ #: templates/debug/scheduled-crons.php:84
947
+ msgid "Next"
948
+ msgstr "Next"
949
 
950
+ #: templates/forms/affiliation.php:81
951
+ msgid "non-expiring"
952
+ msgstr "non-expiring"
953
 
954
+ #: templates/forms/affiliation.php:101
955
+ msgid "affiliate-application-accepted"
956
+ msgstr "affiliate-application-accepted"
957
 
958
+ #: templates/forms/affiliation.php:124
959
+ msgid "$text_key"
960
+ msgstr "$text_key"
961
 
962
+ #: templates/forms/affiliation.php:132
963
+ msgid "become-an-ambassador"
964
+ msgstr "become-an-ambassador"
965
 
966
+ #: templates/forms/affiliation.php:133
967
+ msgid "refer-new-customers"
968
+ msgstr "refer-new-customers"
969
 
970
+ #: templates/forms/affiliation.php:136
971
+ msgid "program-summary"
972
+ msgstr "program-summary"
973
+
974
+ #: templates/forms/affiliation.php:138
975
+ msgid "commission-on-new-license-purchase"
976
+ msgstr "commission-on-new-license-purchase"
977
+
978
+ #: templates/forms/affiliation.php:140
979
+ msgid "renewals-commission"
980
+ msgstr "renewals-commission"
981
+
982
+ #: templates/forms/affiliation.php:143
983
+ msgid "affiliate-tracking"
984
+ msgstr "affiliate-tracking"
985
+
986
+ #: templates/forms/affiliation.php:146
987
+ msgid "unlimited-commissions"
988
+ msgstr "unlimited-commissions"
989
+
990
+ #: templates/forms/affiliation.php:148
991
+ msgid "minimum-payout-amount"
992
+ msgstr "minimum-payout-amount"
993
+
994
+ #: templates/forms/affiliation.php:149
995
+ msgid "payouts-unit-and-processing"
996
+ msgstr "payouts-unit-and-processing"
997
+
998
+ #: templates/forms/affiliation.php:150
999
+ msgid "commission-payment"
1000
+ msgstr "commission-payment"
1001
+
1002
+ #: templates/forms/affiliation.php:153
1003
+ msgid "affiliate"
1004
+ msgstr "affiliate"
1005
+
1006
+ #: templates/forms/affiliation.php:156
1007
+ msgid "email-address"
1008
+ msgstr "email-address"
1009
+
1010
+ #: templates/forms/affiliation.php:160
1011
+ msgid "full-name"
1012
+ msgstr "full-name"
1013
+
1014
+ #: templates/forms/affiliation.php:164
1015
+ msgid "paypal-account-email-address"
1016
+ msgstr "paypal-account-email-address"
1017
+
1018
+ #: templates/forms/affiliation.php:168
1019
+ msgid "domain-field-label"
1020
+ msgstr "domain-field-label"
1021
+
1022
+ #: templates/forms/affiliation.php:170
1023
+ msgid "domain-field-desc"
1024
+ msgstr "domain-field-desc"
1025
+
1026
+ #: templates/forms/affiliation.php:172
1027
+ msgid "add-another-domain"
1028
+ msgstr "add-another-domain"
1029
+
1030
+ #: templates/forms/affiliation.php:176
1031
+ msgid "extra-domain-fields-label"
1032
+ msgstr "extra-domain-fields-label"
1033
+
1034
+ #: templates/forms/affiliation.php:177
1035
+ msgid "extra-domain-fields-desc"
1036
+ msgstr "extra-domain-fields-desc"
1037
+
1038
+ #: templates/forms/affiliation.php:187
1039
+ msgid "promotion-methods"
1040
+ msgstr "promotion-methods"
1041
+
1042
+ #: templates/forms/affiliation.php:190
1043
+ msgid "social-media"
1044
+ msgstr "social-media"
1045
+
1046
+ #: templates/forms/affiliation.php:194
1047
+ msgid "mobile-apps"
1048
+ msgstr "mobile-apps"
1049
+
1050
+ #: templates/forms/affiliation.php:198
1051
+ msgid "statistics-information-field-label"
1052
+ msgstr "statistics-information-field-label"
1053
+
1054
+ #: templates/forms/affiliation.php:201
1055
+ msgid "statistics-information-field-desc"
1056
+ msgstr "statistics-information-field-desc"
1057
+
1058
+ #: templates/forms/affiliation.php:205
1059
+ msgid "promotion-method-desc-field-label"
1060
+ msgstr "promotion-method-desc-field-label"
1061
+
1062
+ #: templates/forms/affiliation.php:208
1063
+ msgid "promotion-method-desc-field-desc"
1064
+ msgstr "promotion-method-desc-field-desc"
1065
+
1066
+ #: templates/forms/affiliation.php:214, templates/forms/resend-key.php:22, templates/forms/deactivation/form.php:80
1067
+ msgid "cancel"
1068
+ msgstr "cancel"
1069
+
1070
+ #: templates/forms/affiliation.php:215, templates/forms/affiliation.php:371
1071
+ msgid "apply-to-become-an-affiliate"
1072
+ msgstr "apply-to-become-an-affiliate"
1073
+
1074
+ #: templates/forms/affiliation.php:216
1075
+ msgid "become-an-affiliate"
1076
+ msgstr "become-an-affiliate"
1077
+
1078
+ #: templates/forms/affiliation.php:272
1079
+ msgid "email-address-is-required"
1080
+ msgstr "email-address-is-required"
1081
+
1082
+ #: templates/forms/affiliation.php:278
1083
+ msgid "paypal-email-address-is-required"
1084
+ msgstr "paypal-email-address-is-required"
1085
+
1086
+ #: templates/forms/affiliation.php:288
1087
+ msgid "domain-is-required"
1088
+ msgstr "domain-is-required"
1089
+
1090
+ #: templates/forms/affiliation.php:291, templates/forms/affiliation.php:305
1091
+ msgid "invalid-domain"
1092
+ msgstr "invalid-domain"
1093
+
1094
+ #: templates/forms/affiliation.php:361
1095
+ msgid "processing"
1096
+ msgstr "processing"
1097
+
1098
+ #: templates/forms/license-activation.php:20
1099
+ msgid "activate-license-message"
1100
+ msgstr "activate-license-message"
1101
+
1102
+ #: templates/forms/license-activation.php:36
1103
+ msgid "license-sync-disclaimer"
1104
+ msgstr "license-sync-disclaimer"
1105
+
1106
+ #: templates/forms/license-activation.php:41
1107
+ msgid "agree-activate-license"
1108
+ msgstr "agree-activate-license"
1109
+
1110
+ #: templates/forms/optout.php:30
1111
+ msgid "opt-out"
1112
+ msgstr "opt-out"
1113
+
1114
+ #: templates/forms/optout.php:31
1115
+ msgid "opt-out-message-appreciation"
1116
+ msgstr "opt-out-message-appreciation"
1117
+
1118
+ #: templates/forms/optout.php:32
1119
+ msgid "opt-out-message-usage-tracking"
1120
+ msgstr "opt-out-message-usage-tracking"
1121
+
1122
+ #: templates/forms/optout.php:34
1123
+ msgid "opt-out-message-clicking-opt-out"
1124
+ msgstr "opt-out-message-clicking-opt-out"
1125
+
1126
+ #: templates/forms/resend-key.php:21
1127
+ msgid "send-license-key"
1128
+ msgstr "send-license-key"
1129
+
1130
+ #: templates/forms/resend-key.php:24
1131
+ msgid "reason-other"
1132
+ msgstr "reason-other"
1133
+
1134
+ #: templates/forms/resend-key.php:57
1135
+ msgid "ask-for-upgrade-email-address"
1136
+ msgstr "ask-for-upgrade-email-address"
1137
+
1138
+ #: templates/forms/trial-start.php:21
1139
+ msgid "start-trial-prompt-header"
1140
+ msgstr "start-trial-prompt-header"
1141
+
1142
+ #: templates/forms/trial-start.php:26
1143
+ msgid "start-trial-prompt-message"
1144
+ msgstr "start-trial-prompt-message"
1145
+
1146
+ #: templates/plugin-info/description.php:72, templates/plugin-info/screenshots.php:31
1147
+ msgid "view-full-size-x"
1148
+ msgstr "view-full-size-x"
1149
+
1150
+ #: templates/plugin-info/features.php:43
1151
+ msgid "Support"
1152
+ msgstr "Support"
1153
+
1154
+ #: templates/plugin-info/features.php:56
1155
+ msgid "unlimited-updates"
1156
+ msgstr "unlimited-updates"
1157
+
1158
+ #: templates/forms/deactivation/contact.php:16
1159
+ msgid "contact-support-before-deactivation"
1160
+ msgstr "contact-support-before-deactivation"
1161
+
1162
+ #: templates/forms/deactivation/contact.php:19
1163
+ msgid "contact-support"
1164
+ msgstr "contact-support"
1165
+
1166
+ #: templates/forms/deactivation/form.php:56
1167
+ msgid "anonymous-feedback"
1168
+ msgstr "anonymous-feedback"
1169
+
1170
+ #: templates/forms/deactivation/form.php:243
1171
+ msgid "deactivation-modal-button-submit"
1172
+ msgstr "deactivation-modal-button-submit"
1173
+
1174
+ #: templates/forms/deactivation/form.php:245, templates/forms/deactivation/form.php:387, templates/forms/deactivation/form.php:394
1175
+ msgid "deactivate"
1176
+ msgstr "deactivate"
1177
+
1178
+ #: templates/forms/deactivation/form.php:246, templates/forms/deactivation/form.php:388, templates/forms/deactivation/form.php:395
1179
+ msgid "activate-x"
1180
+ msgstr "activate-x"
1181
+
1182
+ #: templates/forms/deactivation/form.php:246, templates/forms/deactivation/form.php:388, templates/forms/deactivation/form.php:395
1183
+ msgid "theme"
1184
+ msgstr "theme"
1185
+
1186
+ #: templates/forms/deactivation/form.php:264
1187
+ msgid "ask-for-reason-message"
1188
+ msgstr "ask-for-reason-message"
1189
+
1190
+ #: templates/forms/deactivation/form.php:385
1191
+ msgid "deactivation-modal-button-confirm"
1192
+ msgstr "deactivation-modal-button-confirm"
1193
+
1194
+ #: templates/forms/deactivation/form.php:392
1195
+ msgid "skip-and-x"
1196
+ msgstr "skip-and-x"
1197
+
1198
+ #: templates/forms/deactivation/retry-skip.php:21
1199
+ msgid "click-here-to-use-plugin-anonymously"
1200
+ msgstr "click-here-to-use-plugin-anonymously"
1201
+
1202
+ #: templates/forms/deactivation/retry-skip.php:23
1203
+ msgid "dont-have-to-share-any-data"
1204
+ msgstr "dont-have-to-share-any-data"
freemius/languages/freemius-es_ES.mo ADDED
Binary file
freemius/languages/freemius-es_ES.po ADDED
@@ -0,0 +1,2035 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2017 freemius
2
+ # This file is distributed under the same license as the freemius package.
3
+ # Translators:
4
+ # Carlos Longarela <carlos@longarela.eu>, 2017
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: 2017-11-10 09:37+0000\n"
11
+ "Last-Translator: Vova Feldman <vova@freemius.com>\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:903
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:905
29
+ msgid "Error"
30
+ msgstr "Error"
31
+
32
+ #: includes/class-freemius.php:1155
33
+ msgid "I found a better %s"
34
+ msgstr "He encontrado un mejor %s"
35
+
36
+ #: includes/class-freemius.php:1157
37
+ msgid "What's the %s's name?"
38
+ msgstr "¿Cuál es el nombre de %s?"
39
+
40
+ #: includes/class-freemius.php:1163
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:1165
45
+ msgid "Deactivation"
46
+ msgstr "Desactivación"
47
+
48
+ #: includes/class-freemius.php:1166
49
+ msgid "Theme Switch"
50
+ msgstr "Cambiar Tema"
51
+
52
+ #: includes/class-freemius.php1175, templates/forms/resend-key.php:24
53
+ msgid "Other"
54
+ msgstr "Otra"
55
+
56
+ #: includes/class-freemius.php:1183
57
+ msgid "I no longer need the %s"
58
+ msgstr "Ya no necesito el %s"
59
+
60
+ #: includes/class-freemius.php:1190
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:1196
65
+ msgid "The %s broke my site"
66
+ msgstr "%s ha roto mi sitio"
67
+
68
+ #: includes/class-freemius.php:1203
69
+ msgid "The %s suddenly stopped working"
70
+ msgstr "%s de repente ha dejado de funcionar"
71
+
72
+ #: includes/class-freemius.php:1213
73
+ msgid "I can't pay for it anymore"
74
+ msgstr "No puedo pagarlo durante más tiempo"
75
+
76
+ #: includes/class-freemius.php:1215
77
+ msgid "What price would you feel comfortable paying?"
78
+ msgstr "¿Qué precio te sentirías cómodo pagando?"
79
+
80
+ #: includes/class-freemius.php:1221
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:1242
85
+ msgid "The %s didn't work"
86
+ msgstr "%s no funcionaba"
87
+
88
+ #: includes/class-freemius.php:1252
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:1260
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:1262
97
+ msgid "What feature?"
98
+ msgstr "¿Qué característica?"
99
+
100
+ #: includes/class-freemius.php:1266
101
+ msgid "The %s is not working"
102
+ msgstr "%s no funciona"
103
+
104
+ #: includes/class-freemius.php:1268
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:1272
109
+ msgid "It's not what I was looking for"
110
+ msgstr "No es lo que estaba buscando"
111
+
112
+ #: includes/class-freemius.php:1274
113
+ msgid "What you've been looking for?"
114
+ msgstr "¿Que has estado buscando?"
115
+
116
+ #: includes/class-freemius.php:1278
117
+ msgid "The %s didn't work as expected"
118
+ msgstr "%s no funciona como esperaba"
119
+
120
+ #: includes/class-freemius.php:1280
121
+ msgid "What did you expect?"
122
+ msgstr "¿Qué esperas?"
123
+
124
+ #: includes/class-freemius.php1816, templates/debug.php:20
125
+ msgid "Freemius Debug"
126
+ msgstr "Debug Freemius"
127
+
128
+ #: includes/class-freemius.php:2379
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:2381
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:2388
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:2490
141
+ msgid "Yes - do your thing"
142
+ msgstr "Vamos, adelante"
143
+
144
+ #: includes/class-freemius.php:2495
145
+ msgid "No - just deactivate"
146
+ msgstr "No - sólo desactivar"
147
+
148
+ #: includes/class-freemius.php2540, includes/class-freemius.php3005,
149
+ #: includes/class-freemius.php3859, includes/class-freemius.php7141,
150
+ #: includes/class-freemius.php9000, includes/class-freemius.php9056,
151
+ #: includes/class-freemius.php9117, includes/class-freemius.php11014,
152
+ #: includes/class-freemius.php11025, includes/class-freemius.php11474,
153
+ #: includes/class-freemius.php11492, includes/class-freemius.php11590,
154
+ #: includes/class-freemius.php12265, templates/add-ons.php:43
155
+ msgctxt "exclamation"
156
+ msgid "Oops"
157
+ msgstr "Oops"
158
+
159
+ #: includes/class-freemius.php:2607
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:3002
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:3003
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.php3124, includes/class-freemius.php3149,
174
+ #: includes/class-freemius.php:11563
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:3557
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.php3559, includes/class-freemius.php:4784
183
+ msgctxt ""
184
+ msgid "W00t"
185
+ msgstr "W00t"
186
+
187
+ #: includes/class-freemius.php:3574
188
+ msgid "You have a %s license."
189
+ msgstr "Tienes una licencia %s."
190
+
191
+ #: includes/class-freemius.php3578, includes/class-freemius.php8704,
192
+ #: includes/class-freemius.php8713, includes/class-freemius.php10965,
193
+ #: includes/class-freemius.php11178, includes/class-freemius.php11240,
194
+ #: includes/class-freemius.php:11352
195
+ msgctxt "interjection expressing joy or exuberance"
196
+ msgid "Yee-haw"
197
+ msgstr "Vaya"
198
+
199
+ #: includes/class-freemius.php:3842
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:3846
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.php3855, templates/account.php692,
208
+ #: templates/add-ons.php:99
209
+ msgid "More information about %s"
210
+ msgstr "Más información sobre %s"
211
+
212
+ #: includes/class-freemius.php:3856
213
+ msgid "Purchase License"
214
+ msgstr "Comprar Licencia"
215
+
216
+ #: includes/class-freemius.php4293, templates/connect.php:136
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:4297
221
+ msgid "start the trial"
222
+ msgstr "comenzar el período de prueba"
223
+
224
+ #: includes/class-freemius.php4298, templates/connect.php:140
225
+ msgid "complete the install"
226
+ msgstr "completar la instalación"
227
+
228
+ #: includes/class-freemius.php:4377
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:4380
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:4394
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:4398
242
+ msgid "Opt in to make \"%s\" Better!"
243
+ msgstr "Opt in to make \"%s\" Better!"
244
+
245
+ #: includes/class-freemius.php:4783
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.php5868, includes/class-fs-plugin-updater.php358,
250
+ #: includes/class-fs-plugin-updater.php510,
251
+ #: includes/class-fs-plugin-updater.php516, templates/auto-installation.php:31
252
+ msgid "Add-On"
253
+ msgstr "Complemento"
254
+
255
+ #: includes/class-freemius.php5870, templates/debug.php303,
256
+ #: templates/debug.php:413
257
+ msgid "Plugin"
258
+ msgstr "Plugin"
259
+
260
+ #: includes/class-freemius.php5871, templates/debug.php303,
261
+ #: templates/debug.php413, templates/forms/deactivation/form.php:64
262
+ msgid "Theme"
263
+ msgstr "Tema"
264
+
265
+ #: includes/class-freemius.php:7128
266
+ msgid "We couldn't find your email address in the system, are you sure it's the right address?"
267
+ 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?"
268
+
269
+ #: includes/class-freemius.php:7130
270
+ msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
271
+ 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?"
272
+
273
+ #: includes/class-freemius.php:7339
274
+ msgid "Account is pending activation."
275
+ msgstr "Account is pending activation."
276
+
277
+ #: includes/class-freemius.php:8688
278
+ msgctxt "pluginX activation was successfully..."
279
+ msgid "%s activation was successfully completed."
280
+ msgstr "%s activación se completó con éxito."
281
+
282
+ #: includes/class-freemius.php:8700
283
+ msgid "Your account was successfully activated with the %s plan."
284
+ msgstr "Tu cuenta se ha activado correctamente con el plan %s."
285
+
286
+ #: includes/class-freemius.php8709, includes/class-freemius.php:11236
287
+ msgid "Your trial has been successfully started."
288
+ msgstr "Tu versión de prueba se ha iniciado con éxito."
289
+
290
+ #: includes/class-freemius.php8998, includes/class-freemius.php9054,
291
+ #: includes/class-freemius.php:9115
292
+ msgid "Couldn't activate %s."
293
+ msgstr "No se puede activar %s."
294
+
295
+ #: includes/class-freemius.php8999, includes/class-freemius.php9055,
296
+ #: includes/class-freemius.php:9116
297
+ msgid "Please contact us with the following message:"
298
+ msgstr "Por favor contáctanos con el siguiente mensaje:"
299
+
300
+ #: includes/class-freemius.php9374, includes/class-freemius.php:13194
301
+ msgid "Upgrade"
302
+ msgstr "Actualizar"
303
+
304
+ #: includes/class-freemius.php:9380
305
+ msgid "Start Trial"
306
+ msgstr "Comenzar el Período de Prueba"
307
+
308
+ #: includes/class-freemius.php:9382
309
+ msgid "Pricing"
310
+ msgstr "Precio"
311
+
312
+ #: includes/class-freemius.php9422, includes/class-freemius.php:9424
313
+ msgid "Affiliation"
314
+ msgstr "Affiliation"
315
+
316
+ #: includes/class-freemius.php9444, includes/class-freemius.php9446,
317
+ #: templates/account.php79, templates/debug.php:281
318
+ msgid "Account"
319
+ msgstr "Cuenta"
320
+
321
+ #: includes/class-freemius.php9457, includes/class-freemius.php9459,
322
+ #: includes/customizer/class-fs-customizer-support-section.php:60
323
+ msgid "Contact Us"
324
+ msgstr "Contáctanos"
325
+
326
+ #: includes/class-freemius.php9469, includes/class-freemius.php9471,
327
+ #: includes/class-freemius.php13204, templates/account.php:68
328
+ msgid "Add-Ons"
329
+ msgstr "Complementos"
330
+
331
+ #: includes/class-freemius.php9502, templates/pricing.php:92
332
+ msgctxt "noun"
333
+ msgid "Pricing"
334
+ msgstr "Precio"
335
+
336
+ #: includes/class-freemius.php9682,
337
+ #: includes/customizer/class-fs-customizer-support-section.php:67
338
+ msgid "Support Forum"
339
+ msgstr "Foro de Soporte"
340
+
341
+ #: includes/class-freemius.php:10422
342
+ msgid "Your email has been successfully verified - you are AWESOME!"
343
+ msgstr "Tu email ha sido verificado correctamente - eres IMPRESIONANTE!"
344
+
345
+ #: includes/class-freemius.php:10423
346
+ msgctxt "a positive response"
347
+ msgid "Right on"
348
+ msgstr "Bien hecho"
349
+
350
+ #: includes/class-freemius.php:10956
351
+ msgid "Your %s Add-on plan was successfully upgraded."
352
+ msgstr "Tu complemento %s del plan se actualizó con éxito."
353
+
354
+ #: includes/class-freemius.php:10958
355
+ msgid "%s Add-on was successfully purchased."
356
+ msgstr "El complemento %s ha sido comprado correctamente."
357
+
358
+ #: includes/class-freemius.php:10961
359
+ msgid "Download the latest version"
360
+ msgstr "Descargar la última versión"
361
+
362
+ #: includes/class-freemius.php:11010
363
+ msgctxt "%1s - plugin title, %2s - API domain"
364
+ msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
365
+ 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"
366
+
367
+ #: includes/class-freemius.php11013, includes/class-freemius.php11323,
368
+ #: includes/class-freemius.php:11388
369
+ msgid "Error received from the server:"
370
+ msgstr "Error recibido del servidor:"
371
+
372
+ #: includes/class-freemius.php:11024
373
+ msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
374
+ msgstr "Parece que uno de los parámetros de autenticación es incorrecto. Actualiza tu Clave Pública, Clave Secreta & ID de Usuario e inténtelo de nuevo."
375
+
376
+ #: includes/class-freemius.php11141, includes/class-freemius.php11328,
377
+ #: includes/class-freemius.php:11371
378
+ msgctxt ""
379
+ msgid "Hmm"
380
+ msgstr "Hmm"
381
+
382
+ #: includes/class-freemius.php:11154
383
+ msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
384
+ msgstr "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."
385
+
386
+ #: includes/class-freemius.php11155, templates/account.php70,
387
+ #: templates/add-ons.php:130
388
+ msgctxt "trial period"
389
+ msgid "Trial"
390
+ msgstr "Período de Prueba Gratuito"
391
+
392
+ #: includes/class-freemius.php:11160
393
+ msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
394
+ msgstr "He actualizado mi cuenta, pero cuando intento sincronizar la licencia, el plan sigue siendo %s."
395
+
396
+ #: includes/class-freemius.php11164, includes/class-freemius.php:11218
397
+ msgid "Please contact us here"
398
+ msgstr "Contacta aquí con nosotros"
399
+
400
+ #: includes/class-freemius.php:11174
401
+ msgid "Your plan was successfully upgraded."
402
+ msgstr "Tu plan se actualizó con éxito."
403
+
404
+ #: includes/class-freemius.php:11191
405
+ msgid "Your plan was successfully changed to %s."
406
+ msgstr "Tu plan se cambió correctamente a %s."
407
+
408
+ #: includes/class-freemius.php:11206
409
+ msgid "Your license has expired. You can still continue using the free %s forever."
410
+ msgstr "Tu licencia ha caducado. Puedes seguir usando el plan gratuito %s para siempre."
411
+
412
+ #: includes/class-freemius.php:11214
413
+ msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
414
+ msgstr "Tu licencia ha sido cancelada. Si crees que es un error, ponte en contacto con el servicio de asistencia."
415
+
416
+ #: includes/class-freemius.php:11227
417
+ 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."
418
+ 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."
419
+
420
+ #: includes/class-freemius.php:11249
421
+ msgid "Your trial has expired. You can still continue using all our free features."
422
+ msgstr "Tu período de prueba ha caducado. Todavía puedes seguir usando todas nuestras funciones gratuitas."
423
+
424
+ #: includes/class-freemius.php:11319
425
+ msgid "It looks like the license could not be activated."
426
+ msgstr "Parece que la licencia no se pudo activar."
427
+
428
+ #: includes/class-freemius.php:11349
429
+ msgid "Your license was successfully activated."
430
+ msgstr "Tu licencia fue activada correctamente."
431
+
432
+ #: includes/class-freemius.php:11375
433
+ msgid "It looks like your site currently doesn't have an active license."
434
+ msgstr "Parece que tu sitio actualmente no tiene una licencia activa."
435
+
436
+ #: includes/class-freemius.php:11387
437
+ msgid "It looks like the license deactivation failed."
438
+ msgstr "Parece que la desactivación de licencia ha fallado."
439
+
440
+ #: includes/class-freemius.php:11414
441
+ msgid "Your license was successfully deactivated, you are back to the %s plan."
442
+ msgstr "Tu licencia fue desactivada correctamente, has vuelto al plan %s."
443
+
444
+ #: includes/class-freemius.php:11415
445
+ msgid "O.K"
446
+ msgstr "O.K"
447
+
448
+ #: includes/class-freemius.php:11463
449
+ msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
450
+ msgstr "Tu plan fue degradado con éxito. Tu licencia %s plan caducará en %s."
451
+
452
+ #: includes/class-freemius.php:11473
453
+ msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
454
+ msgstr "Parece que estamos teniendo algún problema temporal con tu degradación de plan. Vuelve a intentarlo en unos minutos."
455
+
456
+ #: includes/class-freemius.php:11497
457
+ msgid "You are already running the %s in a trial mode."
458
+ msgstr "Estás ejecutando %s en modo de prueba."
459
+
460
+ #: includes/class-freemius.php:11508
461
+ msgid "You already utilized a trial before."
462
+ msgstr "Ya utilizaste un período de prueba antes."
463
+
464
+ #: includes/class-freemius.php:11522
465
+ msgid "Plan %s do not exist, therefore, can't start a trial."
466
+ msgstr "El plan %s no existe, por lo tanto, no puedes comenzar un período de prueba."
467
+
468
+ #: includes/class-freemius.php:11533
469
+ msgid "Plan %s does not support a trial period."
470
+ msgstr "El plan %s no admite un período de prueba."
471
+
472
+ #: includes/class-freemius.php:11544
473
+ msgid "None of the %s's plans supports a trial period."
474
+ msgstr "Ninguno de los planes de %s soportan un período de prueba."
475
+
476
+ #: includes/class-freemius.php:11594
477
+ msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
478
+ msgstr "Parece que ya no estás en modo de prueba, así que no hay nada que cancelar :)"
479
+
480
+ #: includes/class-freemius.php:11645
481
+ msgid "Your %s free trial was successfully cancelled."
482
+ msgstr "Tu prueba gratuita de %s fue cancelada con éxito."
483
+
484
+ #: includes/class-freemius.php:11653
485
+ msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
486
+ msgstr "Parece que estamos teniendo algún problema temporal con tu cancelación de prueba. Vuelve a intentarlo en unos minutos."
487
+
488
+ #: includes/class-freemius.php:11892
489
+ msgid "Version %s was released."
490
+ msgstr "La versión %s se ha lanzado."
491
+
492
+ #: includes/class-freemius.php:11892
493
+ msgid "Please download %s."
494
+ msgstr "Por favor descarga %s."
495
+
496
+ #: includes/class-freemius.php:11899
497
+ msgid "the latest %s version here"
498
+ msgstr "la última versión %s aquí"
499
+
500
+ #: includes/class-freemius.php:11904
501
+ msgid "New"
502
+ msgstr "Nuevo"
503
+
504
+ #: includes/class-freemius.php:11909
505
+ msgid "Seems like you got the latest release."
506
+ msgstr "Parece que tienes la última versión."
507
+
508
+ #: includes/class-freemius.php:11910
509
+ msgid "You are all good!"
510
+ msgstr "¡Está todo listo!"
511
+
512
+ #: includes/class-freemius.php:12176
513
+ msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
514
+ 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."
515
+
516
+ #: includes/class-freemius.php:12351
517
+ 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."
518
+ 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."
519
+
520
+ #: includes/class-freemius.php:12357
521
+ msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
522
+ msgstr "Gracias por confirmar el cambio de propiedad. Se envió un correo electrónico a %s para su aprobación final."
523
+
524
+ #: includes/class-freemius.php:12362
525
+ msgid "%s is the new owner of the account."
526
+ msgstr "%s es el nuevo dueño de la cuenta."
527
+
528
+ #: includes/class-freemius.php:12364
529
+ msgctxt "as congratulations"
530
+ msgid "Congrats"
531
+ msgstr "Felicidades"
532
+
533
+ #: includes/class-freemius.php:12384
534
+ msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
535
+ 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."
536
+
537
+ #: includes/class-freemius.php:12385
538
+ msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
539
+ msgstr "Si deseas renunciar a la titularidad de la cuenta de %s a %s haz clic en el botón de Cambio de Titularidad."
540
+
541
+ #: includes/class-freemius.php:12392
542
+ msgid "Change Ownership"
543
+ msgstr "Cambiar Propietario"
544
+
545
+ #: includes/class-freemius.php:12400
546
+ msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
547
+ msgstr "Se actualizó correctamente tu correo electrónico. Recibirás un correo electrónico con las instrucciones de confirmación en unos momentos."
548
+
549
+ #: includes/class-freemius.php:12412
550
+ msgid "Please provide your full name."
551
+ msgstr "Por favor, dinos tu nombre completo."
552
+
553
+ #: includes/class-freemius.php:12417
554
+ msgid "Your name was successfully updated."
555
+ msgstr "Tu nombre fue actualizado correctamente."
556
+
557
+ #: includes/class-freemius.php:12478
558
+ msgid "You have successfully updated your %s."
559
+ msgstr "Has actualizado correctamente tu %s."
560
+
561
+ #: includes/class-freemius.php:12616
562
+ msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
563
+ msgstr "Sólo déjanos informarte que la información de complementos de %s se está extrayendo de un servidor externo."
564
+
565
+ #: includes/class-freemius.php:12617
566
+ msgctxt "advance notice of something that will need attention."
567
+ msgid "Heads up"
568
+ msgstr "Atención"
569
+
570
+ #: includes/class-freemius.php:12935
571
+ msgid "Awesome"
572
+ msgstr "Increíble"
573
+
574
+ #: includes/class-freemius.php:12975
575
+ msgctxt "exclamation"
576
+ msgid "Hey"
577
+ msgstr "Hey"
578
+
579
+ #: includes/class-freemius.php:12975
580
+ msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
581
+ msgstr "¿Qué te pareció %s hasta ahora? Prueba todas nuestras funciones premium de %s con una prueba gratuita de % d-días."
582
+
583
+ #: includes/class-freemius.php:12983
584
+ msgid "No commitment for %s days - cancel anytime!"
585
+ msgstr "Sin compromiso por %s días - ¡cancelar en cualquier momento!"
586
+
587
+ #: includes/class-freemius.php:12984
588
+ msgid "No credit card required"
589
+ msgstr "No se necesita tarjeta de crédito"
590
+
591
+ #: includes/class-freemius.php12991, templates/forms/trial-start.php:53
592
+ msgctxt "call to action"
593
+ msgid "Start free trial"
594
+ msgstr "Comenzar el período de prueba gratuito"
595
+
596
+ #: includes/class-freemius.php:13068
597
+ 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!"
598
+ 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!"
599
+
600
+ #: includes/class-freemius.php:13077
601
+ msgid "Learn more"
602
+ msgstr "Learn more"
603
+
604
+ #: includes/class-freemius.php13233, templates/account.php330,
605
+ #: templates/connect.php309, templates/forms/license-activation.php:24
606
+ msgid "Activate License"
607
+ msgstr "Activar Licencia"
608
+
609
+ #: includes/class-freemius.php13234, templates/account.php:393
610
+ msgid "Change License"
611
+ msgstr "Cambiar Licencia"
612
+
613
+ #: includes/class-freemius.php:13295
614
+ msgid "Opt Out"
615
+ msgstr "Darse de baja"
616
+
617
+ #: includes/class-freemius.php13297, includes/class-freemius.php:13302
618
+ msgid "Opt In"
619
+ msgstr "Inscribirse"
620
+
621
+ #: includes/class-freemius.php:13490
622
+ msgid "Please follow these steps to complete the upgrade"
623
+ msgstr "Por favor, sigue estos pasos para completar la actualización"
624
+
625
+ #: includes/class-freemius.php:13493
626
+ msgid "Download the latest %s version"
627
+ msgstr "Descargar la última versión %s"
628
+
629
+ #: includes/class-freemius.php:13497
630
+ msgid "Upload and activate the downloaded version"
631
+ msgstr "Cargar y activar la versión descargada"
632
+
633
+ #: includes/class-freemius.php:13499
634
+ msgid "How to upload and activate?"
635
+ msgstr "¿Cómo subirlo y activarlo?"
636
+
637
+ #: includes/class-freemius.php:13658
638
+ msgid "Auto installation only works for opted-in users."
639
+ msgstr "La instalación automática sólo funciona para usuarios que aceptaron."
640
+
641
+ #: includes/class-freemius.php13668, includes/class-freemius.php13701,
642
+ #: includes/class-fs-plugin-updater.php490,
643
+ #: includes/class-fs-plugin-updater.php:504
644
+ msgid "Invalid module ID."
645
+ msgstr "Id de Módulo no válido."
646
+
647
+ #: includes/class-freemius.php13677, includes/class-fs-plugin-updater.php:524
648
+ msgid "Premium version already active."
649
+ msgstr "Versión Premium ya activa."
650
+
651
+ #: includes/class-freemius.php:13684
652
+ msgid "You do not have a valid license to access the premium version."
653
+ msgstr "No tienes una licencia válida para acceder a la versión premium."
654
+
655
+ #: includes/class-freemius.php:13691
656
+ msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
657
+ msgstr "El plugin es un \"Serviceware\" lo que significa que no tiene una versión de código premium."
658
+
659
+ #: includes/class-freemius.php13709, includes/class-fs-plugin-updater.php:523
660
+ msgid "Premium add-on version already installed."
661
+ msgstr "Versión del complemento Premium ya instalada."
662
+
663
+ #: includes/class-freemius.php:14054
664
+ msgid "View paid features"
665
+ msgstr "Ver las funciones de pago"
666
+
667
+ #: includes/class-fs-plugin-updater.php:131
668
+ msgid "%sRenew your license now%s to access version %s features and support."
669
+ msgstr "%s Renueva tu licencia ahora %s para acceder a la versión %s características y soporte."
670
+
671
+ #: includes/class-fs-plugin-updater.php:553
672
+ msgid "Installing plugin: %s"
673
+ msgstr "Instalando plugin: %s"
674
+
675
+ #: includes/class-fs-plugin-updater.php:594
676
+ msgid "Unable to connect to the filesystem. Please confirm your credentials."
677
+ msgstr "Unable to connect to the filesystem. Please confirm your credentials."
678
+
679
+ #: includes/class-fs-plugin-updater.php:700
680
+ msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
681
+ msgstr "El paquete de plugin remoto no contiene una carpeta con el Slug deseado y el cambio de nombre no funcionó."
682
+
683
+ #: includes/fs-plugin-info-dialog.php328, templates/account.php:696
684
+ msgctxt "verb"
685
+ msgid "Purchase"
686
+ msgstr "Comprar"
687
+
688
+ #: includes/fs-plugin-info-dialog.php:331
689
+ msgid "Start my free %s"
690
+ msgstr "Comenzar mi período gratuito de %s"
691
+
692
+ #: includes/fs-plugin-info-dialog.php355, templates/account.php:52
693
+ msgctxt "as download latest version"
694
+ msgid "Download Latest"
695
+ msgstr "Descargar la última"
696
+
697
+ #: includes/fs-plugin-info-dialog.php358, templates/account.php676,
698
+ #: templates/account.php729, templates/auto-installation.php:110
699
+ msgid "Install Now"
700
+ msgstr "Instalar Ahora"
701
+
702
+ #: includes/fs-plugin-info-dialog.php364, templates/account.php:384
703
+ msgid "Install Update Now"
704
+ msgstr "Instalar Actualización Ahora"
705
+
706
+ #: includes/fs-plugin-info-dialog.php:368
707
+ msgid "Newer Version (%s) Installed"
708
+ msgstr "Versión más Reciente (%s) Instalada"
709
+
710
+ #: includes/fs-plugin-info-dialog.php:371
711
+ msgid "Latest Version Installed"
712
+ msgstr "Última Versión Instalada"
713
+
714
+ #: includes/fs-plugin-info-dialog.php:484
715
+ msgctxt "Plugin installer section title"
716
+ msgid "Description"
717
+ msgstr "Descripción"
718
+
719
+ #: includes/fs-plugin-info-dialog.php:485
720
+ msgctxt "Plugin installer section title"
721
+ msgid "Installation"
722
+ msgstr "Instalación"
723
+
724
+ #: includes/fs-plugin-info-dialog.php:486
725
+ msgctxt "Plugin installer section title"
726
+ msgid "FAQ"
727
+ msgstr "FAQ"
728
+
729
+ #: includes/fs-plugin-info-dialog.php487,
730
+ #: templates/plugin-info/description.php:55
731
+ msgid "Screenshots"
732
+ msgstr "Capturas de pantalla"
733
+
734
+ #: includes/fs-plugin-info-dialog.php:488
735
+ msgctxt "Plugin installer section title"
736
+ msgid "Changelog"
737
+ msgstr "Registro de cambios"
738
+
739
+ #: includes/fs-plugin-info-dialog.php:489
740
+ msgctxt "Plugin installer section title"
741
+ msgid "Reviews"
742
+ msgstr "Valoraciones"
743
+
744
+ #: includes/fs-plugin-info-dialog.php:490
745
+ msgctxt "Plugin installer section title"
746
+ msgid "Other Notes"
747
+ msgstr "Otras Notas"
748
+
749
+ #: includes/fs-plugin-info-dialog.php:505
750
+ msgctxt "Plugin installer section title"
751
+ msgid "Features & Pricing"
752
+ msgstr "Características y Precios"
753
+
754
+ #: includes/fs-plugin-info-dialog.php:515
755
+ msgid "Plugin Install"
756
+ msgstr "Instalar Plugin"
757
+
758
+ #: includes/fs-plugin-info-dialog.php:587
759
+ msgctxt "e.g. Professional Plan"
760
+ msgid "%s Plan"
761
+ msgstr "Plan %s"
762
+
763
+ #: includes/fs-plugin-info-dialog.php:612
764
+ msgctxt "e.g. the best product"
765
+ msgid "Best"
766
+ msgstr "El mejor"
767
+
768
+ #: includes/fs-plugin-info-dialog.php618,
769
+ #: includes/fs-plugin-info-dialog.php:638
770
+ msgctxt "as every month"
771
+ msgid "Monthly"
772
+ msgstr "Mensual"
773
+
774
+ #: includes/fs-plugin-info-dialog.php:621
775
+ msgctxt "as once a year"
776
+ msgid "Annual"
777
+ msgstr "Anual"
778
+
779
+ #: includes/fs-plugin-info-dialog.php:624
780
+ msgid "Lifetime"
781
+ msgstr "Permanente"
782
+
783
+ #: includes/fs-plugin-info-dialog.php638,
784
+ #: includes/fs-plugin-info-dialog.php640,
785
+ #: includes/fs-plugin-info-dialog.php:642
786
+ msgctxt "e.g. billed monthly"
787
+ msgid "Billed %s"
788
+ msgstr "Facturado %s"
789
+
790
+ #: includes/fs-plugin-info-dialog.php:640
791
+ msgctxt "as once a year"
792
+ msgid "Annually"
793
+ msgstr "Anualmente"
794
+
795
+ #: includes/fs-plugin-info-dialog.php:642
796
+ msgctxt "as once a year"
797
+ msgid "Once"
798
+ msgstr "Una vez"
799
+
800
+ #: includes/fs-plugin-info-dialog.php:648
801
+ msgid "Single Site License"
802
+ msgstr "Licencia para un Único Sitio"
803
+
804
+ #: includes/fs-plugin-info-dialog.php:650
805
+ msgid "Unlimited Licenses"
806
+ msgstr "Licencias Ilimitadas"
807
+
808
+ #: includes/fs-plugin-info-dialog.php:652
809
+ msgid "Up to %s Sites"
810
+ msgstr "Hasta %s Sitios"
811
+
812
+ #: includes/fs-plugin-info-dialog.php662,
813
+ #: templates/plugin-info/features.php:82
814
+ msgctxt "as monthly period"
815
+ msgid "mo"
816
+ msgstr "men"
817
+
818
+ #: includes/fs-plugin-info-dialog.php669,
819
+ #: templates/plugin-info/features.php:80
820
+ msgctxt "as annual period"
821
+ msgid "year"
822
+ msgstr "año"
823
+
824
+ #: includes/fs-plugin-info-dialog.php:721
825
+ msgctxt "noun"
826
+ msgid "Price"
827
+ msgstr "Precio"
828
+
829
+ #: includes/fs-plugin-info-dialog.php:767
830
+ msgctxt "as a discount of $5 or 10%"
831
+ msgid "Save %s"
832
+ msgstr "Guardar %s"
833
+
834
+ #: includes/fs-plugin-info-dialog.php:777
835
+ msgid "No commitment for %s - cancel anytime"
836
+ msgstr "Sin compromiso para %s - cancelar en cualquier momento"
837
+
838
+ #: includes/fs-plugin-info-dialog.php:780
839
+ msgid "After your free %s, pay as little as %s"
840
+ msgstr "Después de su período gratuito %s, pague sólo %s"
841
+
842
+ #: includes/fs-plugin-info-dialog.php:791
843
+ msgid "Details"
844
+ msgstr "Detalles"
845
+
846
+ #: includes/fs-plugin-info-dialog.php794, templates/account.php59,
847
+ #: templates/debug.php183, templates/debug.php220, templates/debug.php:354
848
+ msgctxt "product version"
849
+ msgid "Version"
850
+ msgstr "Versión"
851
+
852
+ #: includes/fs-plugin-info-dialog.php:800
853
+ msgctxt "as the plugin author"
854
+ msgid "Author"
855
+ msgstr "Author"
856
+
857
+ #: includes/fs-plugin-info-dialog.php:806
858
+ msgid "Last Updated"
859
+ msgstr "Última Actualización"
860
+
861
+ #: includes/fs-plugin-info-dialog.php:810
862
+ msgctxt "x-ago"
863
+ msgid "%s ago"
864
+ msgstr "hace %s"
865
+
866
+ #: includes/fs-plugin-info-dialog.php:819
867
+ msgid "Requires WordPress Version"
868
+ msgstr "Requires WordPress Version"
869
+
870
+ #: includes/fs-plugin-info-dialog.php:819
871
+ msgid "%s or higher"
872
+ msgstr "%s o mayor"
873
+
874
+ #: includes/fs-plugin-info-dialog.php:825
875
+ msgid "Compatible up to"
876
+ msgstr "Compatible up to"
877
+
878
+ #: includes/fs-plugin-info-dialog.php:832
879
+ msgid "Downloaded"
880
+ msgstr "Downloaded"
881
+
882
+ #: includes/fs-plugin-info-dialog.php:835
883
+ msgid "%s time"
884
+ msgstr "% vez"
885
+
886
+ #: includes/fs-plugin-info-dialog.php:837
887
+ msgid "%s times"
888
+ msgstr "%s veces"
889
+
890
+ #: includes/fs-plugin-info-dialog.php:847
891
+ msgid "WordPress.org Plugin Page"
892
+ msgstr "Página del Plugin en WordPress.org"
893
+
894
+ #: includes/fs-plugin-info-dialog.php:854
895
+ msgid "Plugin Homepage"
896
+ msgstr "Página web del Plugin"
897
+
898
+ #: includes/fs-plugin-info-dialog.php861,
899
+ #: includes/fs-plugin-info-dialog.php:941
900
+ msgid "Donate to this plugin"
901
+ msgstr "Donar a este plugin"
902
+
903
+ #: includes/fs-plugin-info-dialog.php:867
904
+ msgid "Average Rating"
905
+ msgstr "Calificación Media"
906
+
907
+ #: includes/fs-plugin-info-dialog.php:874
908
+ msgid "based on %s"
909
+ msgstr "basado en %s"
910
+
911
+ #: includes/fs-plugin-info-dialog.php:878
912
+ msgid "%s rating"
913
+ msgstr "%s calificación"
914
+
915
+ #: includes/fs-plugin-info-dialog.php:880
916
+ msgid "%s ratings"
917
+ msgstr "%s calificaciones"
918
+
919
+ #: includes/fs-plugin-info-dialog.php:894
920
+ msgid "%s star"
921
+ msgstr "%s estrella"
922
+
923
+ #: includes/fs-plugin-info-dialog.php:896
924
+ msgid "%s stars"
925
+ msgstr "%s estrellas"
926
+
927
+ #: includes/fs-plugin-info-dialog.php:907
928
+ msgid "Click to see reviews that provided a rating of %s"
929
+ msgstr "Haz clic para ver los comentarios con una valoración de %s"
930
+
931
+ #: includes/fs-plugin-info-dialog.php:920
932
+ msgid "Contributors"
933
+ msgstr "Colaboradores"
934
+
935
+ #: includes/fs-plugin-info-dialog.php948,
936
+ #: includes/fs-plugin-info-dialog.php:950
937
+ msgid "Warning"
938
+ msgstr "Warning"
939
+
940
+ #: includes/fs-plugin-info-dialog.php:948
941
+ msgid "This plugin has not been tested with your current version of WordPress."
942
+ msgstr "Este plugin no ha sido probado con tu versión actual de WordPress."
943
+
944
+ #: includes/fs-plugin-info-dialog.php:950
945
+ msgid "This plugin has not been marked as compatible with your version of WordPress."
946
+ msgstr "Este puglin no ha sido marcado como compatible con tu versión de WordPress."
947
+
948
+ #: includes/fs-plugin-info-dialog.php:969
949
+ msgid "Paid add-on must be deployed to Freemius."
950
+ msgstr "El complemento de pago se debe implementar en Freemius."
951
+
952
+ #: includes/fs-plugin-info-dialog.php:970
953
+ msgid "Add-on must be deployed to WordPress.org or Freemius."
954
+ msgstr "El complemento debe implementarse en WordPress.org o en Freemius."
955
+
956
+ #: templates/account.php:53
957
+ msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
958
+ msgstr "Degradando tu plan detendrás inmediatamente todos los pagos recurrentes futuros y tu licencia del plan %s expirará en %s."
959
+
960
+ #: templates/account.php:54
961
+ msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
962
+ msgstr "La cancelación del período de prueba bloqueará inmediatamente el acceso a todas las funciones premium. ¿Estás seguro?"
963
+
964
+ #: templates/account.php:55
965
+ msgid "You can still enjoy all %s features but you will not have access to %s updates and support."
966
+ msgstr "Todavía puedes disfrutar de todas las funciones de %s pero no tienes acceso a soporte y actualizaciones de %s."
967
+
968
+ #: templates/account.php:56
969
+ msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
970
+ 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."
971
+
972
+ #. translators: %s: Plan title (e.g. "Professional")
973
+ #: templates/account.php:58
974
+ msgid "Activate %s Plan"
975
+ msgstr "Activar Plan %s"
976
+
977
+ #. translators: %s: Time period (e.g. Auto renews in "2 months")
978
+ #: templates/account.php:61
979
+ msgid "Auto renews in %s"
980
+ msgstr "Auto renovaciones en %s"
981
+
982
+ #. translators: %s: Time period (e.g. Expires in "2 months")
983
+ #: templates/account.php:63
984
+ msgid "Expires in %s"
985
+ msgstr "Caduca en %s"
986
+
987
+ #: templates/account.php:64
988
+ msgctxt "as synchronize license"
989
+ msgid "Sync License"
990
+ msgstr "Sincronizar Licencia"
991
+
992
+ #: templates/account.php:65
993
+ msgid "Cancel Trial"
994
+ msgstr "Cancelar Período de Prueba"
995
+
996
+ #: templates/account.php:66
997
+ msgid "Change Plan"
998
+ msgstr "Cambiar Plan"
999
+
1000
+ #: templates/account.php:67
1001
+ msgctxt "verb"
1002
+ msgid "Upgrade"
1003
+ msgstr "Actualizar"
1004
+
1005
+ #: templates/account.php:69
1006
+ msgctxt "verb"
1007
+ msgid "Downgrade"
1008
+ msgstr "Degradar"
1009
+
1010
+ #: templates/account.php71, templates/add-ons.php126,
1011
+ #: templates/plugin-info/features.php:72
1012
+ msgid "Free"
1013
+ msgstr "Gratis"
1014
+
1015
+ #: templates/account.php:72
1016
+ msgid "Activate"
1017
+ msgstr "Activar"
1018
+
1019
+ #: templates/account.php73, templates/debug.php311,
1020
+ #: includes/customizer/class-fs-customizer-upsell-control.php:106
1021
+ msgctxt "as product pricing plan"
1022
+ msgid "Plan"
1023
+ msgstr "Plan"
1024
+
1025
+ #: templates/account.php:87
1026
+ msgid "Free Trial"
1027
+ msgstr "Período de Prueba Gratuito"
1028
+
1029
+ #: templates/account.php:98
1030
+ msgid "Account Details"
1031
+ msgstr "Detalles de la Cuenta"
1032
+
1033
+ #: templates/account.php:108
1034
+ 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?"
1035
+ 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?"
1036
+
1037
+ #: templates/account.php:110
1038
+ 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?"
1039
+ 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?"
1040
+
1041
+ #: templates/account.php:113
1042
+ msgid "Delete Account"
1043
+ msgstr "Borrar Cuenta"
1044
+
1045
+ #: templates/account.php:124
1046
+ msgid "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
1047
+ 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?"
1048
+
1049
+ #: templates/account.php125, templates/account.php:590
1050
+ msgid "Deactivate License"
1051
+ msgstr "Desactivar Licencia"
1052
+
1053
+ #: templates/account.php:142
1054
+ msgid "Are you sure you want to proceed?"
1055
+ msgstr "¿Estás seguro que quieres proceder?"
1056
+
1057
+ #: templates/account.php:142
1058
+ msgid "Cancel Subscription"
1059
+ msgstr "Cancelar Suscripción"
1060
+
1061
+ #: templates/account.php:171
1062
+ msgctxt "as synchronize"
1063
+ msgid "Sync"
1064
+ msgstr "Sincronizar"
1065
+
1066
+ #: templates/account.php185, templates/debug.php:389
1067
+ msgid "Name"
1068
+ msgstr "Nombre"
1069
+
1070
+ #: templates/account.php191, templates/debug.php:390
1071
+ msgid "Email"
1072
+ msgstr "Correo Electrónico"
1073
+
1074
+ #: templates/account.php198, templates/debug.php310, templates/debug.php:419
1075
+ msgid "User ID"
1076
+ msgstr "ID de Usuario"
1077
+
1078
+ #: templates/account.php:205
1079
+ msgid "Site ID"
1080
+ msgstr "ID del Sitio"
1081
+
1082
+ #: templates/account.php:208
1083
+ msgid "No ID"
1084
+ msgstr "Sin ID"
1085
+
1086
+ #: templates/account.php213, templates/debug.php225, templates/debug.php312,
1087
+ #: templates/debug.php355, templates/debug.php:392
1088
+ msgid "Public Key"
1089
+ msgstr "Clave Pública"
1090
+
1091
+ #: templates/account.php219, templates/debug.php313, templates/debug.php356,
1092
+ #: templates/debug.php:393
1093
+ msgid "Secret Key"
1094
+ msgstr "Clave Secreta"
1095
+
1096
+ #: templates/account.php:222
1097
+ msgctxt "as secret encryption key missing"
1098
+ msgid "No Secret"
1099
+ msgstr "Sin clave secreta"
1100
+
1101
+ #: templates/account.php:241
1102
+ msgid "Trial"
1103
+ msgstr "Período de Prueba Gratuito"
1104
+
1105
+ #: templates/account.php257, templates/debug.php:424
1106
+ msgid "License Key"
1107
+ msgstr "License Key"
1108
+
1109
+ #: templates/account.php:287
1110
+ msgid "not verified"
1111
+ msgstr "no verificado"
1112
+
1113
+ #: templates/account.php:317
1114
+ msgid "Localhost"
1115
+ msgstr "Localhost"
1116
+
1117
+ #: templates/account.php:321
1118
+ msgctxt "as 5 licenses left"
1119
+ msgid "%s left"
1120
+ msgstr "quedan %s"
1121
+
1122
+ #: templates/account.php:322
1123
+ msgid "Last license"
1124
+ msgstr "Última licencia"
1125
+
1126
+ #: templates/account.php:352
1127
+ msgid "Premium version"
1128
+ msgstr "Versión Premium"
1129
+
1130
+ #: templates/account.php:354
1131
+ msgid "Free version"
1132
+ msgstr "Versión Gratuita"
1133
+
1134
+ #: templates/account.php:366
1135
+ msgid "Verify Email"
1136
+ msgstr "Verificar Correo Electrónico"
1137
+
1138
+ #: templates/account.php:377
1139
+ msgid "Download %s Version"
1140
+ msgstr "Descargar Versión %s"
1141
+
1142
+ #: templates/account.php391, templates/account.php:442
1143
+ msgctxt "verb"
1144
+ msgid "Show"
1145
+ msgstr "Mostrar"
1146
+
1147
+ #: templates/account.php:405
1148
+ msgid "What is your %s?"
1149
+ msgstr "¿Cual es tú %s?"
1150
+
1151
+ #: templates/account.php413, templates/account/billing.php:27
1152
+ msgctxt "verb"
1153
+ msgid "Edit"
1154
+ msgstr "Editar"
1155
+
1156
+ #: templates/account.php:436
1157
+ msgctxt "verb"
1158
+ msgid "Hide"
1159
+ msgstr "Ocultar"
1160
+
1161
+ #: templates/account.php472, templates/debug.php218, templates/debug.php308,
1162
+ #: templates/debug.php351, templates/debug.php388, templates/debug.php417,
1163
+ #: templates/debug.php496, templates/account/payments.php35,
1164
+ #: templates/debug/logger.php:21
1165
+ msgid "ID"
1166
+ msgstr "ID"
1167
+
1168
+ #: templates/account.php:475
1169
+ msgctxt "as software license"
1170
+ msgid "License"
1171
+ msgstr "Licencia"
1172
+
1173
+ #: templates/account.php:550
1174
+ msgid "Cancelled"
1175
+ msgstr "Cancelado"
1176
+
1177
+ #: templates/account.php:555
1178
+ msgid "Expired"
1179
+ msgstr "Caducado"
1180
+
1181
+ #: templates/account.php:560
1182
+ msgid "No expiration"
1183
+ msgstr "Sin caducidad"
1184
+
1185
+ #: templates/account.php668, templates/account.php:724
1186
+ msgid "Activate this add-on"
1187
+ msgstr "Activar este complemento"
1188
+
1189
+ #: templates/account.php745, templates/debug.php:336
1190
+ msgctxt "verb"
1191
+ msgid "Delete"
1192
+ msgstr "Borrar"
1193
+
1194
+ #: templates/add-ons.php:36
1195
+ msgid "Add Ons for %s"
1196
+ msgstr "Complementos para %s"
1197
+
1198
+ #: templates/add-ons.php:44
1199
+ 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."
1200
+ msgstr "No podemos cargar la lista de complementos. Probablemente es un problema por nuestro parte, por favor inténtalo de nuevo en unos minutos."
1201
+
1202
+ #: templates/add-ons.php:135
1203
+ msgid "View details"
1204
+ msgstr "Ver detalles"
1205
+
1206
+ #: templates/admin-notice.php13, templates/forms/license-activation.php73,
1207
+ #: templates/forms/resend-key.php:77
1208
+ msgctxt "as close a window"
1209
+ msgid "Dismiss"
1210
+ msgstr "Descartar"
1211
+
1212
+ #: templates/auto-installation.php:44
1213
+ msgid "%s sec"
1214
+ msgstr "%s seg"
1215
+
1216
+ #: templates/auto-installation.php:82
1217
+ msgid "Automatic Installation"
1218
+ msgstr "Instalación Automática"
1219
+
1220
+ #: templates/auto-installation.php:92
1221
+ 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."
1222
+ 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."
1223
+
1224
+ #: templates/auto-installation.php:103
1225
+ 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."
1226
+ 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."
1227
+
1228
+ #: templates/auto-installation.php:108
1229
+ msgid "Cancel Installation"
1230
+ msgstr "Cancelar instalación"
1231
+
1232
+ #: templates/checkout.php:168
1233
+ msgid "Checkout"
1234
+ msgstr "Checkout"
1235
+
1236
+ #: templates/checkout.php:168
1237
+ msgid "PCI compliant"
1238
+ msgstr "Compatible con PCI"
1239
+
1240
+ #: templates/connect.php:128
1241
+ msgid "Allow & Continue"
1242
+ msgstr "Permitir y Continuar"
1243
+
1244
+ #: templates/connect.php:131
1245
+ msgid "Re-send activation email"
1246
+ msgstr "Reenviar correo electrónico de activación"
1247
+
1248
+ #: templates/connect.php:135
1249
+ msgid "Thanks %s!"
1250
+ msgstr "¡Gracias %s!"
1251
+
1252
+ #: templates/connect.php143, templates/forms/license-activation.php:43
1253
+ msgid "Agree & Activate License"
1254
+ msgstr "De Acuerdo y Activar Licencia"
1255
+
1256
+ #: templates/connect.php147, templates/connect.php:170
1257
+ msgctxt "greeting"
1258
+ msgid "Hey %s,"
1259
+ msgstr "Hey %s,"
1260
+
1261
+ #: templates/connect.php:148
1262
+ msgid "Thanks for purchasing %s! To get started, please enter your license key:"
1263
+ msgstr "¡Gracias por comprar %s! Para empezar, escribe tu clave de licencia:"
1264
+
1265
+ #: templates/connect.php:154
1266
+ msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
1267
+ msgstr "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
1268
+
1269
+ #: templates/connect.php:159
1270
+ msgid "Please help us improve %1$s! If you opt in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
1271
+ msgstr "Please help us improve %1$s! If you opt in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
1272
+
1273
+ #: templates/connect.php189, templates/forms/license-activation.php:46
1274
+ msgid "License key"
1275
+ msgstr "Clave de licencia"
1276
+
1277
+ #: templates/connect.php192, templates/forms/license-activation.php:19
1278
+ msgid "Can't find your license key?"
1279
+ msgstr "¿No puedes encontrar tu clave de licencia?"
1280
+
1281
+ #: templates/connect.php199, templates/forms/deactivation/retry-skip.php:20
1282
+ msgctxt "verb"
1283
+ msgid "Skip"
1284
+ msgstr "Saltar"
1285
+
1286
+ #: templates/connect.php:228
1287
+ msgid "Your Profile Overview"
1288
+ msgstr "Resumen del Perfil"
1289
+
1290
+ #: templates/connect.php:229
1291
+ msgid "Name and email address"
1292
+ msgstr "Nombre y dirección de correo electrónico"
1293
+
1294
+ #: templates/connect.php:234
1295
+ msgid "Your Site Overview"
1296
+ msgstr "Resumen del Sitio"
1297
+
1298
+ #: templates/connect.php:235
1299
+ msgid "Site URL, WP version, PHP info, plugins & themes"
1300
+ msgstr "URL del sitio web, Versión de WP, PHP info, plugins y temas"
1301
+
1302
+ #: templates/connect.php:240
1303
+ msgid "Admin Notices"
1304
+ msgstr "Avisos de Administración"
1305
+
1306
+ #: templates/connect.php241, templates/connect.php:263
1307
+ msgid "Updates, announcements, marketing, no spam"
1308
+ msgstr "Actualizaciones, anuncios, marketing, sin spam"
1309
+
1310
+ #: templates/connect.php:246
1311
+ msgid "Current %s Events"
1312
+ msgstr "Eventos de %s Actuales"
1313
+
1314
+ #: templates/connect.php:247
1315
+ msgid "Activation, deactivation and uninstall"
1316
+ msgstr "Activación, desactivación y desinstalación"
1317
+
1318
+ #: templates/connect.php:262
1319
+ msgid "Newsletter"
1320
+ msgstr "Boletín"
1321
+
1322
+ #: templates/connect.php279, templates/forms/license-activation.php:38
1323
+ 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."
1324
+ 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."
1325
+
1326
+ #: templates/connect.php:284
1327
+ msgid "What permissions are being granted?"
1328
+ msgstr "¿Qué permisos se otorgan?"
1329
+
1330
+ #: templates/connect.php:305
1331
+ msgid "Don't have a license key?"
1332
+ msgstr "¿No tienes una clave de licencia?"
1333
+
1334
+ #: templates/connect.php:306
1335
+ msgid "Activate Free Version"
1336
+ msgstr "Activar Versión Gratuita"
1337
+
1338
+ #: templates/connect.php:308
1339
+ msgid "Have a license key?"
1340
+ msgstr "¿Tienes una Clave de Licencia?"
1341
+
1342
+ #: templates/connect.php:316
1343
+ msgid "Privacy Policy"
1344
+ msgstr "Política de Privacidad"
1345
+
1346
+ #: templates/connect.php:318
1347
+ msgid "Terms of Service"
1348
+ msgstr "Términos de Servicio"
1349
+
1350
+ #: templates/connect.php:436
1351
+ msgctxt "as in the process of sending an email"
1352
+ msgid "Sending email"
1353
+ msgstr "Enviando correo electrónico"
1354
+
1355
+ #: templates/connect.php:437
1356
+ msgctxt "as activating plugin"
1357
+ msgid "Activating"
1358
+ msgstr "Activando"
1359
+
1360
+ #: templates/contact.php:74
1361
+ msgid "Contact"
1362
+ msgstr "Contact"
1363
+
1364
+ #: templates/debug.php:17
1365
+ msgctxt "as turned off"
1366
+ msgid "Off"
1367
+ msgstr "Apagado"
1368
+
1369
+ #: templates/debug.php:18
1370
+ msgctxt "as turned on"
1371
+ msgid "On"
1372
+ msgstr "Encendido"
1373
+
1374
+ #: templates/debug.php:20
1375
+ msgid "SDK"
1376
+ msgstr "SDK"
1377
+
1378
+ #: templates/debug.php:24
1379
+ msgctxt "as code debugging"
1380
+ msgid "Debugging"
1381
+ msgstr "Depurando"
1382
+
1383
+ #: templates/debug.php54, templates/debug.php226, templates/debug.php:314
1384
+ msgid "Actions"
1385
+ msgstr "Acciones"
1386
+
1387
+ #: templates/debug.php:64
1388
+ msgid "Are you sure you want to delete all Freemius data?"
1389
+ msgstr "¿Está seguro que desea eliminar todos los datos de Freemius?"
1390
+
1391
+ #: templates/debug.php:64
1392
+ msgid "Delete All Accounts"
1393
+ msgstr "Borrar Todas las Cuentas"
1394
+
1395
+ #: templates/debug.php:71
1396
+ msgid "Clear API Cache"
1397
+ msgstr "Borrar Caché de la API"
1398
+
1399
+ #: templates/debug.php:78
1400
+ msgid "Sync Data From Server"
1401
+ msgstr "Sincronizar Datos Desde el Servidor"
1402
+
1403
+ #: templates/debug.php:82
1404
+ msgid "Load DB Option"
1405
+ msgstr "Load DB Option"
1406
+
1407
+ #: templates/debug.php:85
1408
+ msgid "Set DB Option"
1409
+ msgstr "Set DB Option"
1410
+
1411
+ #: templates/debug.php:162
1412
+ msgid "Key"
1413
+ msgstr "Key"
1414
+
1415
+ #: templates/debug.php:163
1416
+ msgid "Value"
1417
+ msgstr "Value"
1418
+
1419
+ #: templates/debug.php:179
1420
+ msgctxt "as software development kit versions"
1421
+ msgid "SDK Versions"
1422
+ msgstr "Versiones SDK"
1423
+
1424
+ #: templates/debug.php:184
1425
+ msgid "SDK Path"
1426
+ msgstr "Ruta del SDK"
1427
+
1428
+ #: templates/debug.php185, templates/debug.php:224
1429
+ msgid "Module Path"
1430
+ msgstr "Module Path"
1431
+
1432
+ #: templates/debug.php:186
1433
+ msgid "Is Active"
1434
+ msgstr "Está Activo"
1435
+
1436
+ #: templates/debug.php214, templates/debug/plugins-themes-sync.php:35
1437
+ msgid "Plugins"
1438
+ msgstr "Plugins"
1439
+
1440
+ #: templates/debug.php214, templates/debug/plugins-themes-sync.php:56
1441
+ msgid "Themes"
1442
+ msgstr "Temas"
1443
+
1444
+ #: templates/debug.php219, templates/debug.php309, templates/debug.php353,
1445
+ #: templates/debug/scheduled-crons.php:81
1446
+ msgid "Slug"
1447
+ msgstr "Ruta"
1448
+
1449
+ #: templates/debug.php221, templates/debug.php:352
1450
+ msgid "Title"
1451
+ msgstr "Título"
1452
+
1453
+ #: templates/debug.php:222
1454
+ msgctxt "as application program interface"
1455
+ msgid "API"
1456
+ msgstr "API"
1457
+
1458
+ #: templates/debug.php:223
1459
+ msgid "Freemius State"
1460
+ msgstr "Estado Freemius"
1461
+
1462
+ #: templates/debug.php:255
1463
+ msgctxt "as connection was successful"
1464
+ msgid "Connected"
1465
+ msgstr "Conectado"
1466
+
1467
+ #: templates/debug.php:256
1468
+ msgctxt "as connection blocked"
1469
+ msgid "Blocked"
1470
+ msgstr "Bloqueado"
1471
+
1472
+ #: templates/debug.php:277
1473
+ msgid "Simulate Trial"
1474
+ msgstr "Simulate Trial"
1475
+
1476
+ #: templates/debug.php:302
1477
+ msgid "%s Installs"
1478
+ msgstr "%s Instalaciones"
1479
+
1480
+ #: templates/debug.php:304
1481
+ msgctxt "like websites"
1482
+ msgid "Sites"
1483
+ msgstr "Sitios"
1484
+
1485
+ #: templates/debug.php:347
1486
+ msgid "Add Ons of module %s"
1487
+ msgstr "Add Ons of module %s"
1488
+
1489
+ #: templates/debug.php:384
1490
+ msgid "Users"
1491
+ msgstr "Usuarios"
1492
+
1493
+ #: templates/debug.php:391
1494
+ msgid "Verified"
1495
+ msgstr "Verificado"
1496
+
1497
+ #: templates/debug.php:413
1498
+ msgid "%s Licenses"
1499
+ msgstr "%s Licencias"
1500
+
1501
+ #: templates/debug.php:418
1502
+ msgid "Plugin ID"
1503
+ msgstr "Plugin ID"
1504
+
1505
+ #: templates/debug.php:420
1506
+ msgid "Plan ID"
1507
+ msgstr "Plan ID"
1508
+
1509
+ #: templates/debug.php:421
1510
+ msgid "Quota"
1511
+ msgstr "Quota"
1512
+
1513
+ #: templates/debug.php:422
1514
+ msgid "Activated"
1515
+ msgstr "Activated"
1516
+
1517
+ #: templates/debug.php:423
1518
+ msgid "Blocking"
1519
+ msgstr "Blocking"
1520
+
1521
+ #: templates/debug.php:425
1522
+ msgctxt "as expiration date"
1523
+ msgid "Expiration"
1524
+ msgstr "Caducidad"
1525
+
1526
+ #: templates/debug.php:454
1527
+ msgid "Debug Log"
1528
+ msgstr "Log de Debug"
1529
+
1530
+ #: templates/debug.php:458
1531
+ msgid "All Types"
1532
+ msgstr "Todos los Tipos"
1533
+
1534
+ #: templates/debug.php:465
1535
+ msgid "All Requests"
1536
+ msgstr "Todas las Peticiones"
1537
+
1538
+ #: templates/debug.php470, templates/debug.php499,
1539
+ #: templates/debug/logger.php:25
1540
+ msgid "File"
1541
+ msgstr "Archivo"
1542
+
1543
+ #: templates/debug.php471, templates/debug.php497,
1544
+ #: templates/debug/logger.php:23
1545
+ msgid "Function"
1546
+ msgstr "Función"
1547
+
1548
+ #: templates/debug.php:472
1549
+ msgid "Process ID"
1550
+ msgstr "ID del Proceso"
1551
+
1552
+ #: templates/debug.php:473
1553
+ msgid "Logger"
1554
+ msgstr "Logger"
1555
+
1556
+ #: templates/debug.php474, templates/debug.php498,
1557
+ #: templates/debug/logger.php:24
1558
+ msgid "Message"
1559
+ msgstr "Mensaje"
1560
+
1561
+ #: templates/debug.php:476
1562
+ msgid "Filter"
1563
+ msgstr "Filtro"
1564
+
1565
+ #: templates/debug.php:484
1566
+ msgid "Download"
1567
+ msgstr "Descarga"
1568
+
1569
+ #: templates/debug.php495, templates/debug/logger.php:22
1570
+ msgid "Type"
1571
+ msgstr "Tipo"
1572
+
1573
+ #: templates/debug.php500, templates/debug/logger.php:26
1574
+ msgid "Timestamp"
1575
+ msgstr "Timestamp"
1576
+
1577
+ #: templates/secure-https-header.php:28
1578
+ msgid "Secure HTTPS %s page, running from an external domain"
1579
+ msgstr "Página segura HTTPS %s, desde un dominio externo"
1580
+
1581
+ #: includes/customizer/class-fs-customizer-support-section.php55,
1582
+ #: templates/plugin-info/features.php:43
1583
+ msgid "Support"
1584
+ msgstr "Soporte"
1585
+
1586
+ #: includes/debug/class-fs-debug-bar-panel.php48,
1587
+ #: templates/debug/api-calls.php54, templates/debug/logger.php:62
1588
+ msgctxt "milliseconds"
1589
+ msgid "ms"
1590
+ msgstr "ms"
1591
+
1592
+ #: includes/debug/debug-bar-start.php:41
1593
+ msgid "Freemius API"
1594
+ msgstr "Freemius API"
1595
+
1596
+ #: includes/debug/debug-bar-start.php:42
1597
+ msgid "Requests"
1598
+ msgstr "Requests"
1599
+
1600
+ #: templates/account/billing.php:28
1601
+ msgctxt "verb"
1602
+ msgid "Update"
1603
+ msgstr "Actualizar"
1604
+
1605
+ #: templates/account/billing.php:39
1606
+ msgid "Billing"
1607
+ msgstr "Facturación"
1608
+
1609
+ #: templates/account/billing.php44, templates/account/billing.php:44
1610
+ msgid "Business name"
1611
+ msgstr "Nombre de la empresa"
1612
+
1613
+ #: templates/account/billing.php45, templates/account/billing.php:45
1614
+ msgid "Tax / VAT ID"
1615
+ msgstr "Tax / Núm IVA"
1616
+
1617
+ #: templates/account/billing.php48, templates/account/billing.php48,
1618
+ #: templates/account/billing.php49, templates/account/billing.php:49
1619
+ msgid "Address Line %d"
1620
+ msgstr "Línea de la dirección %d"
1621
+
1622
+ #: templates/account/billing.php52, templates/account/billing.php:52
1623
+ msgid "City"
1624
+ msgstr "Ciudad"
1625
+
1626
+ #: templates/account/billing.php52, templates/account/billing.php:52
1627
+ msgid "Town"
1628
+ msgstr "Municipio"
1629
+
1630
+ #: templates/account/billing.php53, templates/account/billing.php:53
1631
+ msgid "ZIP / Postal Code"
1632
+ msgstr "Código Postal"
1633
+
1634
+ #: templates/account/billing.php:308
1635
+ msgid "Country"
1636
+ msgstr "País"
1637
+
1638
+ #: templates/account/billing.php:310
1639
+ msgid "Select Country"
1640
+ msgstr "Seleccionar País"
1641
+
1642
+ #: templates/account/billing.php317, templates/account/billing.php:318
1643
+ msgid "State"
1644
+ msgstr "Estado"
1645
+
1646
+ #: templates/account/billing.php317, templates/account/billing.php:318
1647
+ msgid "Province"
1648
+ msgstr "Provincia"
1649
+
1650
+ #: templates/account/payments.php:29
1651
+ msgid "Payments"
1652
+ msgstr "Pagos"
1653
+
1654
+ #: templates/account/payments.php:36
1655
+ msgid "Date"
1656
+ msgstr "Fecha"
1657
+
1658
+ #: templates/account/payments.php:37
1659
+ msgid "Amount"
1660
+ msgstr "Cantidad"
1661
+
1662
+ #: templates/account/payments.php38, templates/account/payments.php:50
1663
+ msgid "Invoice"
1664
+ msgstr "Factura"
1665
+
1666
+ #: templates/debug/api-calls.php:56
1667
+ msgid "API"
1668
+ msgstr "API"
1669
+
1670
+ #: templates/debug/api-calls.php:68
1671
+ msgid "Method"
1672
+ msgstr "Method"
1673
+
1674
+ #: templates/debug/api-calls.php:69
1675
+ msgid "Code"
1676
+ msgstr "Code"
1677
+
1678
+ #: templates/debug/api-calls.php:70
1679
+ msgid "Length"
1680
+ msgstr "Length"
1681
+
1682
+ #: templates/debug/api-calls.php:71
1683
+ msgctxt "as file/folder path"
1684
+ msgid "Path"
1685
+ msgstr "Ruta"
1686
+
1687
+ #: templates/debug/api-calls.php:73
1688
+ msgid "Body"
1689
+ msgstr "Body"
1690
+
1691
+ #: templates/debug/api-calls.php:75
1692
+ msgid "Result"
1693
+ msgstr "Result"
1694
+
1695
+ #: templates/debug/api-calls.php:76
1696
+ msgid "Start"
1697
+ msgstr "Start"
1698
+
1699
+ #: templates/debug/api-calls.php:77
1700
+ msgid "End"
1701
+ msgstr "End"
1702
+
1703
+ #: templates/debug/logger.php:15
1704
+ msgid "Log"
1705
+ msgstr "Log"
1706
+
1707
+ #. translators: %s: time period (e.g. In "2 hours")
1708
+ #: templates/debug/plugins-themes-sync.php18,
1709
+ #: templates/debug/scheduled-crons.php:92
1710
+ msgid "In %s"
1711
+ msgstr "En %s"
1712
+
1713
+ #. translators: %s: time period (e.g. "2 hours" ago)
1714
+ #: templates/debug/plugins-themes-sync.php20,
1715
+ #: templates/debug/scheduled-crons.php:94
1716
+ msgid "%s ago"
1717
+ msgstr "hace %s"
1718
+
1719
+ #: templates/debug/plugins-themes-sync.php21,
1720
+ #: templates/debug/scheduled-crons.php:75
1721
+ msgctxt "seconds"
1722
+ msgid "sec"
1723
+ msgstr "sec"
1724
+
1725
+ #: templates/debug/plugins-themes-sync.php:23
1726
+ msgid "Plugins & Themes Sync"
1727
+ msgstr "Sincronizar Plugins y Temas"
1728
+
1729
+ #: templates/debug/plugins-themes-sync.php:28
1730
+ msgid "Total"
1731
+ msgstr "Total"
1732
+
1733
+ #: templates/debug/plugins-themes-sync.php29,
1734
+ #: templates/debug/scheduled-crons.php:85
1735
+ msgid "Last"
1736
+ msgstr "Last"
1737
+
1738
+ #: templates/debug/scheduled-crons.php:77
1739
+ msgid "Scheduled Crons"
1740
+ msgstr "Crons Programados"
1741
+
1742
+ #: templates/debug/scheduled-crons.php:82
1743
+ msgid "Module"
1744
+ msgstr "Módulo"
1745
+
1746
+ #: templates/debug/scheduled-crons.php:83
1747
+ msgid "Module Type"
1748
+ msgstr "Tipo de Módulo"
1749
+
1750
+ #: templates/debug/scheduled-crons.php:84
1751
+ msgid "Cron Type"
1752
+ msgstr "Tipo de Cron"
1753
+
1754
+ #: templates/debug/scheduled-crons.php:86
1755
+ msgid "Next"
1756
+ msgstr "Next"
1757
+
1758
+ #: templates/forms/affiliation.php:81
1759
+ msgid "Non-expiring"
1760
+ msgstr "Non-expiring"
1761
+
1762
+ #: templates/forms/affiliation.php:84
1763
+ msgid "Apply to become an affiliate"
1764
+ msgstr "Apply to become an affiliate"
1765
+
1766
+ #: templates/forms/affiliation.php:103
1767
+ msgid "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
1768
+ msgstr "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
1769
+
1770
+ #: templates/forms/affiliation.php:114
1771
+ 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."
1772
+ 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."
1773
+
1774
+ #: templates/forms/affiliation.php:117
1775
+ msgid "Your affiliation account was temporarily suspended."
1776
+ msgstr "Your affiliation account was temporarily suspended."
1777
+
1778
+ #: templates/forms/affiliation.php:120
1779
+ 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."
1780
+ 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."
1781
+
1782
+ #: templates/forms/affiliation.php:123
1783
+ msgid "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
1784
+ msgstr "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
1785
+
1786
+ #: templates/forms/affiliation.php:136
1787
+ msgid "Like the %s? Become our ambassador and earn cash ;-)"
1788
+ msgstr "Like the %s? Become our ambassador and earn cash ;-)"
1789
+
1790
+ #: templates/forms/affiliation.php:137
1791
+ msgid "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
1792
+ msgstr "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
1793
+
1794
+ #: templates/forms/affiliation.php:140
1795
+ msgid "Program Summary"
1796
+ msgstr "Program Summary"
1797
+
1798
+ #: templates/forms/affiliation.php:142
1799
+ msgid "%s commission when a customer purchases a new license."
1800
+ msgstr "%s commission when a customer purchases a new license."
1801
+
1802
+ #: templates/forms/affiliation.php:144
1803
+ msgid "Get commission for automated subscription renewals."
1804
+ msgstr "Get commission for automated subscription renewals."
1805
+
1806
+ #: templates/forms/affiliation.php:147
1807
+ msgid "%s tracking cookie after the first visit to maximize earnings potential."
1808
+ msgstr "%s tracking cookie after the first visit to maximize earnings potential."
1809
+
1810
+ #: templates/forms/affiliation.php:150
1811
+ msgid "Unlimited commissions."
1812
+ msgstr "Unlimited commissions."
1813
+
1814
+ #: templates/forms/affiliation.php:152
1815
+ msgid "%s minimum payout amount."
1816
+ msgstr "%s minimum payout amount."
1817
+
1818
+ #: templates/forms/affiliation.php:153
1819
+ msgid "Payouts are in USD and processed monthly via PayPal."
1820
+ msgstr "Payouts are in USD and processed monthly via PayPal."
1821
+
1822
+ #: templates/forms/affiliation.php:154
1823
+ msgid "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
1824
+ msgstr "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
1825
+
1826
+ #: templates/forms/affiliation.php:157
1827
+ msgid "Affiliate"
1828
+ msgstr "Affiliate"
1829
+
1830
+ #: templates/forms/affiliation.php160, templates/forms/resend-key.php:23
1831
+ msgid "Email address"
1832
+ msgstr "Dirección de correo electrónico"
1833
+
1834
+ #: templates/forms/affiliation.php:164
1835
+ msgid "Full name"
1836
+ msgstr "Full name"
1837
+
1838
+ #: templates/forms/affiliation.php:168
1839
+ msgid "PayPal account email address"
1840
+ msgstr "PayPal account email address"
1841
+
1842
+ #: templates/forms/affiliation.php:172
1843
+ msgid "Where are you going to promote the %s?"
1844
+ msgstr "Where are you going to promote the %s?"
1845
+
1846
+ #: templates/forms/affiliation.php:174
1847
+ msgid "Enter the domain of your website or other websites from where you plan to promote the %s."
1848
+ msgstr "Enter the domain of your website or other websites from where you plan to promote the %s."
1849
+
1850
+ #: templates/forms/affiliation.php:176
1851
+ msgid "Add another domain"
1852
+ msgstr "Add another domain"
1853
+
1854
+ #: templates/forms/affiliation.php:180
1855
+ msgid "Extra Domains"
1856
+ msgstr "Extra Domains"
1857
+
1858
+ #: templates/forms/affiliation.php:181
1859
+ msgid "Extra domains where you will be marketing the product from."
1860
+ msgstr "Extra domains where you will be marketing the product from."
1861
+
1862
+ #: templates/forms/affiliation.php:191
1863
+ msgid "Promotion methods"
1864
+ msgstr "Promotion methods"
1865
+
1866
+ #: templates/forms/affiliation.php:194
1867
+ msgid "Social media (Facebook, Twitter, etc.)"
1868
+ msgstr "Social media (Facebook, Twitter, etc.)"
1869
+
1870
+ #: templates/forms/affiliation.php:198
1871
+ msgid "Mobile apps"
1872
+ msgstr "Mobile apps"
1873
+
1874
+ #: templates/forms/affiliation.php:202
1875
+ msgid "Website, email, and social media statistics (optional)"
1876
+ msgstr "Website, email, and social media statistics (optional)"
1877
+
1878
+ #: templates/forms/affiliation.php:205
1879
+ 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)."
1880
+ 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)."
1881
+
1882
+ #: templates/forms/affiliation.php:209
1883
+ msgid "How will you promote us?"
1884
+ msgstr "How will you promote us?"
1885
+
1886
+ #: templates/forms/affiliation.php:212
1887
+ msgid "Please provide details on how you intend to promote %s (please be as specific as possible)."
1888
+ msgstr "Please provide details on how you intend to promote %s (please be as specific as possible)."
1889
+
1890
+ #: templates/forms/affiliation.php218, templates/forms/resend-key.php:22
1891
+ msgid "Cancel"
1892
+ msgstr "Cancelar"
1893
+
1894
+ #: templates/forms/affiliation.php:220
1895
+ msgid "Become an affiliate"
1896
+ msgstr "Become an affiliate"
1897
+
1898
+ #: templates/forms/affiliation.php:275
1899
+ msgid "Email address is required."
1900
+ msgstr "Email address is required."
1901
+
1902
+ #: templates/forms/affiliation.php:281
1903
+ msgid "PayPal email address is required."
1904
+ msgstr "PayPal email address is required."
1905
+
1906
+ #: templates/forms/affiliation.php:291
1907
+ msgid "Domain is required."
1908
+ msgstr "Domain is required."
1909
+
1910
+ #: templates/forms/affiliation.php294, templates/forms/affiliation.php:308
1911
+ msgid "Invalid domain"
1912
+ msgstr "Invalid domain"
1913
+
1914
+ #: templates/forms/affiliation.php:364
1915
+ msgid "Processing"
1916
+ msgstr "Processing"
1917
+
1918
+ #: templates/forms/license-activation.php:20
1919
+ msgid "Please enter the license key that you received in the email right after the purchase:"
1920
+ msgstr "Por favor, introduce la clave de licencia que recibiste en el correo electrónico al realizar la compra:"
1921
+
1922
+ #: templates/forms/license-activation.php:25
1923
+ msgid "Update License"
1924
+ msgstr "Activar Licencia"
1925
+
1926
+ #: templates/forms/optout.php:30
1927
+ msgctxt "verb"
1928
+ msgid "Opt Out"
1929
+ msgstr "Darse de baja"
1930
+
1931
+ #: templates/forms/optout.php:31
1932
+ msgctxt "verb"
1933
+ msgid "Opt In"
1934
+ msgstr "Inscribirse"
1935
+
1936
+ #: templates/forms/optout.php:32
1937
+ msgid "We appreciate your help in making the %s better by letting us track some usage data."
1938
+ msgstr "Agradecemos tu ayuda para mejorar %s y por permitirnos rastrear algunos datos de uso."
1939
+
1940
+ #: templates/forms/optout.php:33
1941
+ 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."
1942
+ 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."
1943
+
1944
+ #: templates/forms/optout.php:35
1945
+ msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
1946
+ msgstr "Haciendo clic en \"Desistir\", ya no enviaremos los datos de %s a %s."
1947
+
1948
+ #: templates/forms/resend-key.php:21
1949
+ msgid "Send License Key"
1950
+ msgstr "Enviar Clave de Licencia"
1951
+
1952
+ #: templates/forms/resend-key.php:57
1953
+ msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
1954
+ msgstr "Escribe abajo la dirección de correo electrónico que has usado para la actualización y te reenviaremos la clave de licencia."
1955
+
1956
+ #: templates/forms/trial-start.php:22
1957
+ msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1958
+ msgstr "Estás a sólo 1-click de comenzar tu %1$s días de prueba gratuita del plan %2$s."
1959
+
1960
+ #: templates/forms/trial-start.php:28
1961
+ 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."
1962
+ 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."
1963
+
1964
+ #: templates/js/style-premium-theme.php:37
1965
+ msgid "Premium"
1966
+ msgstr "Premium"
1967
+
1968
+ #: templates/plugin-info/description.php72,
1969
+ #: templates/plugin-info/screenshots.php:31
1970
+ msgid "Click to view full-size screenshot %d"
1971
+ msgstr "Click para ver la captura de pantalla a tamaño completo %d"
1972
+
1973
+ #: templates/plugin-info/features.php:56
1974
+ msgid "Unlimited Updates"
1975
+ msgstr "Actualizaciones Ilimitadas"
1976
+
1977
+ #: templates/forms/deactivation/contact.php:19
1978
+ msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
1979
+ msgstr "Disculpa las molestias y estamos aquí para ayudarte si nos das una oportunidad."
1980
+
1981
+ #: templates/forms/deactivation/contact.php:22
1982
+ msgid "Contact Support"
1983
+ msgstr "Contactar Soporte"
1984
+
1985
+ #: templates/forms/deactivation/form.php:56
1986
+ msgid "Anonymous feedback"
1987
+ msgstr "Comentarios anónimos"
1988
+
1989
+ #: templates/forms/deactivation/form.php:63
1990
+ msgid "Deactivate"
1991
+ msgstr "Desactivar"
1992
+
1993
+ #: templates/forms/deactivation/form.php:65
1994
+ msgid "Activate %s"
1995
+ msgstr "Activar %s"
1996
+
1997
+ #: templates/forms/deactivation/form.php:76
1998
+ msgid "Quick feedback"
1999
+ msgstr "Comentarios rápidos"
2000
+
2001
+ #: templates/forms/deactivation/form.php:80
2002
+ msgid "If you have a moment, please let us know why you are %s"
2003
+ msgstr "Si tienes un momento, por favor, dinos por qué estás desactivando %s"
2004
+
2005
+ #: templates/forms/deactivation/form.php:80
2006
+ msgid "deactivating"
2007
+ msgstr "desactivando"
2008
+
2009
+ #: templates/forms/deactivation/form.php:80
2010
+ msgid "switching"
2011
+ msgstr "cambiando"
2012
+
2013
+ #: templates/forms/deactivation/form.php:248
2014
+ msgid "Submit & %s"
2015
+ msgstr "Enviar y %s"
2016
+
2017
+ #: templates/forms/deactivation/form.php:269
2018
+ msgid "Kindly tell us the reason so we can improve."
2019
+ msgstr "Por favor, dínos la razón para que podamos mejorar."
2020
+
2021
+ #: templates/forms/deactivation/form.php:390
2022
+ msgid "Yes - %s"
2023
+ msgstr "Si - %s"
2024
+
2025
+ #: templates/forms/deactivation/form.php:397
2026
+ msgid "Skip & %s"
2027
+ msgstr "Saltar y %s"
2028
+
2029
+ #: templates/forms/deactivation/retry-skip.php:21
2030
+ msgid "Click here to use the plugin anonymously"
2031
+ msgstr "Haz Click aquí para utilizar el plugin de forma anónima"
2032
+
2033
+ #: templates/forms/deactivation/retry-skip.php:23
2034
+ msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
2035
+ msgstr "Es posible que te lo hayas perdido, pero no tienes que compartir ningún dato y puedes solo aceptar %s."
freemius/languages/freemius-he.mo DELETED
Binary file
freemius/languages/freemius-he_IL.mo ADDED
Binary file
freemius/languages/{freemius-he.po → freemius-he_IL.po} RENAMED
@@ -2,1826 +2,2035 @@
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>, 2016
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: 2017-08-24 12:32+0000\n"
12
  "Last-Translator: Vova Feldman <vova@freemius.com>\n"
13
- "Language: he\n"
14
- "Language-Team: Hebrew (http://www.transifex.com/freemius/wordpress-sdk/language/he/)\n"
15
  "Content-Type: text/plain; charset=UTF-8\n"
16
  "Content-Transfer-Encoding: 8bit\n"
17
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
  "MIME-Version: 1.0\n"
19
  "X-Poedit-Basepath: ..\n"
20
- "X-Poedit-KeywordsList: _fs_text;_fs_echo;_fs_esc_attr;_fs_esc_attr_echo;_fs_esc_html;_fs_esc_html_echo;_fs_x:1,2c;_fs_ex:1,2c;_fs_esc_attr_x:1,2c;_fs_esc_html_x:1,2c;_fs_n:1,2;_fs_n_noop:1,2;_fs_nx:1,2,4c;_fs_nx_noop:1,2,3c\n"
21
  "X-Poedit-SearchPath-0: .\n"
22
  "X-Poedit-SearchPathExcluded-0: *.js\n"
23
  "X-Poedit-SourceCharset: UTF-8\n"
24
 
25
- #: includes/i18n.php:37
26
- msgid "Account"
27
- msgstr "חשבון"
28
-
29
- #: includes/i18n.php:38
30
- msgid "Add-On"
31
- msgstr "Add-On"
32
 
33
- #: includes/i18n.php:39
34
- msgid "Contact Us"
35
- msgstr "יצירת קשר"
36
 
37
- #: includes/i18n.php:40
38
- msgid "Contact Support"
39
- msgstr "צור קשר"
40
 
41
- #: includes/i18n.php:41
42
- msgid "Change Ownership"
43
- msgstr "עדכון בעלות"
44
 
45
- #: includes/i18n.php:42
46
- msgid "Support"
47
- msgstr "תמיכה"
48
 
49
- #: includes/i18n.php:43
50
- msgid "Support Forum"
51
- msgstr "פורום תמיכה"
52
 
53
- #: includes/i18n.php:44
54
- msgid "Add-Ons"
55
- msgstr "Add-Ons"
56
 
57
- #: includes/i18n.php:45
58
- msgctxt "verb"
59
- msgid "Upgrade"
60
- msgstr "שדרג"
61
 
62
- #: includes/i18n.php:46
63
- msgid "Awesome"
64
- msgstr "אדיר"
65
 
66
- #: includes/i18n.php:47
67
- msgctxt "noun"
68
- msgid "Pricing"
69
- msgstr "מחירון"
70
 
71
- #: includes/i18n.php:48
72
- msgctxt "noun"
73
- msgid "Price"
74
- msgstr "מחיר"
75
 
76
- #: includes/i18n.php:49
77
- msgid "Unlimited Updates"
78
- msgstr "עדכונים ללא הגבלה"
79
 
80
- #: includes/i18n.php:50
81
- msgctxt "verb"
82
- msgid "Downgrade"
83
- msgstr "שנמך"
84
 
85
- #: includes/i18n.php:51
86
- msgctxt "verb"
87
- msgid "Cancel Subscription"
88
- msgstr "בטל מנוי"
89
 
90
- #: includes/i18n.php:52
91
- msgid "Cancel Trial"
92
- msgstr "ביט"
93
 
94
- #: includes/i18n.php:53
95
- msgid "Free Trial"
96
- msgstr "ניסיון חינם"
97
 
98
- #: includes/i18n.php:54
99
- msgid "Start my free %s"
100
- msgstr "התחל את %s הניסיון שלי"
101
 
102
- #: includes/i18n.php:55
103
- msgid "No commitment for %s - cancel anytime"
104
- msgstr "No commitment for %s - cancel anytime"
105
 
106
- #: includes/i18n.php:56
107
- msgid "After your free %s, pay as little as %s"
108
- msgstr "After your free %s, pay as little as %s"
109
 
110
- #: includes/i18n.php:57
111
- msgid "Details"
112
- msgstr "פרטים"
113
 
114
- #: includes/i18n.php:58
115
- msgid "Account Details"
116
- msgstr "פרטי חשבון"
117
 
118
- #: includes/i18n.php:59
119
- msgctxt "verb"
120
- msgid "Delete"
121
- msgstr "מחק"
122
 
123
- #: includes/i18n.php:60
124
- msgctxt "verb"
125
- msgid "Show"
126
- msgstr "הצג"
127
 
128
- #: includes/i18n.php:61
129
- msgctxt "verb"
130
- msgid "Hide"
131
- msgstr "הסתר"
132
 
133
- #: includes/i18n.php:62
134
- msgctxt "verb"
135
- msgid "Edit"
136
- msgstr "ערוך"
137
 
138
- #: includes/i18n.php:63
139
- msgctxt "verb"
140
- msgid "Update"
141
- msgstr "עדכן"
142
 
143
- #: includes/i18n.php:64
144
- msgid "Date"
145
- msgstr "תאריך"
146
 
147
- #: includes/i18n.php:65
148
- msgid "Amount"
149
- msgstr "סכום"
150
 
151
- #: includes/i18n.php:66
152
- msgid "Invoice"
153
- msgstr "חשבונית"
154
 
155
- #: includes/i18n.php:67
156
- msgid "Billing"
157
- msgstr "בילינג"
158
 
159
- #: includes/i18n.php:68
160
- msgid "Payments"
161
- msgstr "תשלומים"
162
 
163
- #: includes/i18n.php:69
164
- msgid "Delete Account"
165
- msgstr "מחיקת חשבון"
 
 
 
 
 
 
 
166
 
167
- #: includes/i18n.php:70
168
- msgctxt "as close a window"
169
- msgid "Dismiss"
170
- msgstr "סגירה"
171
 
172
- #: includes/i18n.php:71
173
- msgctxt "as product pricing plan"
174
- msgid "Plan"
175
- msgstr "חבילה"
176
 
177
- #: includes/i18n.php:72
178
- msgid "Change Plan"
179
- msgstr "שינוי חבילה"
 
180
 
181
- #: includes/i18n.php:73
182
- msgctxt "as download professional version"
183
- msgid "Download %s Version"
184
- msgstr "הורד גרסת %s"
185
 
186
- #: includes/i18n.php:74
187
- msgctxt "as download professional version now"
188
- msgid "Download %s version now"
189
- msgstr "הורד עכשיו גרסת %s"
190
 
191
- #: includes/i18n.php:75
192
- msgctxt "as download latest version"
193
- msgid "Download Latest"
194
- msgstr "הורד גרסה אחרונה"
195
 
196
- #: includes/i18n.php:76
197
- msgctxt "E.g. you have a professional license."
198
  msgid "You have a %s license."
199
  msgstr "יש לך רישיון %s."
200
 
201
- #: includes/i18n.php:77
202
- msgid "New"
203
- msgstr "חדש"
204
-
205
- #: includes/i18n.php:78
206
- msgid "Free"
207
- msgstr "חינם"
208
 
209
- #: includes/i18n.php:79
210
- msgctxt "as trial plan"
211
- msgid "Trial"
212
- msgstr "ניסיון"
213
 
214
- #: includes/i18n.php:80
215
- msgctxt "as starting a trial plan"
216
- msgid "Start Trial"
217
- msgstr "התחל תקופת ניסיון"
218
 
219
- #: includes/i18n.php:81
220
- msgctxt "verb"
221
- msgid "Purchase"
222
- msgstr "רכישה"
223
 
224
- #: includes/i18n.php:82
225
  msgid "Purchase License"
226
  msgstr "קניית רישיון"
227
 
228
- #: includes/i18n.php:83
229
- msgctxt "verb"
230
- msgid "Buy"
231
- msgstr "קנייה"
232
-
233
- #: includes/i18n.php:84
234
- msgid "Buy License"
235
- msgstr "קניית רישיון"
236
-
237
- #: includes/i18n.php:85
238
- msgid "Single Site License"
239
- msgstr "רשיון לאתר אחד"
240
-
241
- #: includes/i18n.php:86
242
- msgid "Unlimited Licenses"
243
- msgstr "רשיונות ללא הגבלה"
244
-
245
- #: includes/i18n.php:87
246
- msgid "Up to %s Sites"
247
- msgstr "עד %s אתרים"
248
-
249
- #: includes/i18n.php:88
250
- msgid "%sRenew your license now%s to access version %s features and support."
251
- msgstr "%sRenew your license now%s to access version %s features and support."
252
 
253
- #: includes/i18n.php:89
254
- msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
255
- msgstr "Enter the email address you've used for the upgrade below and we will resend you the license key."
256
 
257
- #: includes/i18n.php:90
258
- msgctxt "e.g. Professional Plan"
259
- msgid "%s Plan"
260
- msgstr "חבילה %s"
261
 
262
- #: includes/i18n.php:91
263
  msgid "You are just one step away - %s"
264
  msgstr "You are just one step away - %s"
265
 
266
- #: includes/i18n.php:92
267
- msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
268
  msgid "Complete \"%s\" Activation Now"
269
  msgstr "השלם הפעלת \"%s\" עכשיו"
270
 
271
- #: includes/i18n.php:94
272
  msgid "We made a few tweaks to the %s, %s"
273
  msgstr "We made a few tweaks to the %s, %s"
274
 
275
- #: includes/i18n.php:95
276
- msgid "Opt-in to make \"%s\" Better!"
277
- msgstr "Opt-in to make \"%s\" Better!"
278
 
279
- #: includes/i18n.php:96
280
- msgid "Error"
281
- msgstr "שגיאה"
282
-
283
- #: includes/i18n.php:97
284
- msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
285
- msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
286
 
287
- #: includes/i18n.php:100
288
- msgctxt "as expiration date"
289
- msgid "Expiration"
290
- msgstr "תפוגה"
 
291
 
292
- #: includes/i18n.php:101
293
- msgctxt "as software license"
294
- msgid "License"
295
- msgstr "רישיון"
296
 
297
- #: includes/i18n.php:102
298
- msgid "not verified"
299
- msgstr "לא מאומת"
 
300
 
301
- #: includes/i18n.php:103
302
- msgid "Verify Email"
303
- msgstr "אמת כתובת דוא\"ל"
304
 
305
- #: includes/i18n.php:104
306
- msgctxt "e.g. expires in 2 months"
307
- msgid "Expires in %s"
308
- msgstr "פג תוקף בעוד %s"
309
 
310
- #: includes/i18n.php:105
311
- msgctxt "e.g. auto renews in 2 months"
312
- msgid "Auto renews in %s"
313
- msgstr "עדכן אוטומטית בעוד %s"
314
 
315
- #: includes/i18n.php:106
316
- msgid "No expiration"
317
- msgstr "ללא תפוגה"
 
318
 
319
- #: includes/i18n.php:107
320
- msgid "Expired"
321
- msgstr "פג תוקף"
322
 
323
- #: includes/i18n.php:108
324
- msgid "Cancelled"
325
- msgstr "בוטל"
326
 
327
- #: includes/i18n.php:109
328
- msgctxt "e.g. In 2 hours"
329
- msgid "In %s"
330
- msgstr "בעוד %s"
331
 
332
- #: includes/i18n.php:110
333
- msgctxt "e.g. 2 min ago"
334
- msgid "%s ago"
335
- msgstr "לפני %s"
336
 
337
- #: includes/i18n.php:112
338
- msgid "%s or higher"
339
- msgstr "%s ומעלה"
340
 
341
- #: includes/i18n.php:113
342
- msgctxt "as plugin version"
343
- msgid "Version"
344
- msgstr "גרסה"
345
 
346
- #: includes/i18n.php:114
347
- msgid "Name"
348
- msgstr "שם"
349
 
350
- #: includes/i18n.php:115
351
- msgid "Email"
352
- msgstr "דוא\"ל"
353
 
354
- #: includes/i18n.php:116
355
- msgid "Email address"
356
- msgstr "כתובת דוא\"ל"
 
357
 
358
- #: includes/i18n.php:117
359
- msgid "Verified"
360
- msgstr "מאומת"
 
361
 
362
- #: includes/i18n.php:118
363
- msgid "Module"
364
- msgstr "מודול"
 
365
 
366
- #: includes/i18n.php:119
367
- msgid "Module Type"
368
- msgstr "סוג מודול"
 
369
 
370
- #: includes/i18n.php:120
371
- msgid "Plugin"
372
- msgstr "תוסף"
 
373
 
374
- #: includes/i18n.php:121
375
- msgid "Plugins"
376
- msgstr "תוספים"
377
 
378
- #: includes/i18n.php:122
379
- msgid "Theme"
380
- msgstr "תבנית"
 
381
 
382
- #: includes/i18n.php:123
383
- msgid "Themes"
384
- msgstr "תבניות"
385
 
386
- #: includes/i18n.php:124
387
- msgctxt "as file/folder path"
388
- msgid "Path"
389
- msgstr "נתיב"
390
 
391
- #: includes/i18n.php:125
392
- msgid "Title"
393
- msgstr "כותרת"
394
 
395
- #: includes/i18n.php:126
396
- msgid "Free version"
397
- msgstr "גירסה חינאמית"
 
398
 
399
- #: includes/i18n.php:127
400
- msgid "Premium version"
401
- msgstr "גירסת פרימיום"
 
402
 
403
- #: includes/i18n.php:128
404
- msgctxt "as WP plugin slug"
405
- msgid "Slug"
406
- msgstr "מזהה כתובת"
407
 
408
- #: includes/i18n.php:129
409
- msgid "ID"
410
- msgstr "מזהה"
 
 
411
 
412
- #: includes/i18n.php:130
413
- msgid "Users"
414
- msgstr "משתמשים"
415
 
416
- #: includes/i18n.php:131
417
- msgid "%s Installs"
418
- msgstr "%s התקנות"
 
 
419
 
420
- #: includes/i18n.php:132
421
- msgctxt "like websites"
422
- msgid "Sites"
423
- msgstr "אתרים"
424
 
425
- #: includes/i18n.php:133
426
- msgid "User ID"
427
- msgstr "מזהה משתמש"
428
 
429
- #: includes/i18n.php:134
430
- msgid "Site ID"
431
- msgstr "מזהה אתר"
432
 
433
- #: includes/i18n.php:135
434
- msgid "Public Key"
435
- msgstr "מפתח פומבי"
436
 
437
- #: includes/i18n.php:136
438
- msgid "Secret Key"
439
- msgstr "מפתח סודי"
440
 
441
- #: includes/i18n.php:137
442
- msgctxt "as secret encryption key missing"
443
- msgid "No Secret"
444
- msgstr "אין מפתח סודי"
445
 
446
- #: includes/i18n.php:138
447
- msgid "No ID"
448
- msgstr "אין מזהה"
449
 
450
- #: includes/i18n.php:139
451
- msgctxt "as synchronize license"
452
- msgid "Sync License"
453
- msgstr "סינכרן רישיון"
454
 
455
- #: includes/i18n.php:140
456
- msgctxt "as synchronize"
457
- msgid "Sync"
458
- msgstr "סינכרון"
459
 
460
- #: includes/i18n.php:141
461
- msgid "Activate License"
462
- msgstr "הפעלת רישיון"
463
 
464
- #: includes/i18n.php:142
465
- msgid "Activate Free Version"
466
- msgstr "הפעלת גירסה חינאמית"
467
 
468
- #: includes/i18n.php:143
469
- msgid "Please enter the license key that you received in the email right after the purchase:"
470
- msgstr "Please enter the license key that you received in the email right after the purchase:"
471
 
472
- #: includes/i18n.php:144
473
- msgid "Activating license..."
474
- msgstr "מפעיל רישיון..."
475
 
476
- #: includes/i18n.php:145
477
- msgid "Change License"
478
- msgstr "שינוי רישיון"
479
 
480
- #: includes/i18n.php:146
481
- msgid "Update License"
482
- msgstr "עדכון רישיון"
483
 
484
- #: includes/i18n.php:147
485
- msgid "Deactivate License"
486
- msgstr "שיחרור רישיון"
487
 
488
- #: includes/i18n.php:148
489
- msgid "Activate"
490
- msgstr "הפעלה"
491
 
492
- #: includes/i18n.php:149
493
- msgid "Deactivate"
494
- msgstr "כיבוי"
495
 
496
- #: includes/i18n.php:150
497
- msgid "Skip & Deactivate"
498
- msgstr "דלג והמשך כיבוי"
499
 
500
- #: includes/i18n.php:151
501
- msgid "Skip & %s"
502
- msgstr "דלג ו%s"
503
 
504
- #: includes/i18n.php:152
505
- msgid "No - just deactivate"
506
- msgstr "לא - פשוט כבה"
507
 
508
- #: includes/i18n.php:153
509
- msgid "Yes - do your thing"
510
- msgstr "כן - בצעו את מה שצריך"
511
 
512
- #: includes/i18n.php:154
513
- msgctxt "active mode"
514
- msgid "Active"
515
- msgstr "מופעל"
516
 
517
- #: includes/i18n.php:155
518
- msgctxt "is active mode?"
519
- msgid "Is Active"
520
- msgstr "האם פעיל"
521
 
522
- #: includes/i18n.php:156
523
- msgid "Install Now"
524
- msgstr "התקן עכשיו"
525
 
526
- #: includes/i18n.php:157
527
- msgid "Install Update Now"
528
- msgstr "התקן עדכון במיידי"
529
 
530
- #: includes/i18n.php:158
531
- msgid "More information about %s"
532
- msgstr "מידע נוסף אודות %s"
533
 
534
- #: includes/i18n.php:159
535
- msgid "Localhost"
536
- msgstr "שרת לוקאלי"
537
 
538
- #: includes/i18n.php:160
539
- msgctxt "as activate Professional plan"
540
- msgid "Activate %s Plan"
541
- msgstr "הפעל חבילה %s"
542
 
543
- #: includes/i18n.php:161
544
- msgctxt "as 5 licenses left"
545
- msgid "%s left"
546
- msgstr "נשארו %s"
547
 
548
- #: includes/i18n.php:162
549
- msgid "Last license"
550
- msgstr "רישיון אחרון"
551
 
552
- #: includes/i18n.php:163
553
- msgid "What is your %s?"
554
- msgstr "מה ה%s שלך?"
555
 
556
- #: includes/i18n.php:164
557
- msgid "Activate this add-on"
558
- msgstr "הפעל את ההרחבה"
559
 
560
- #: includes/i18n.php:165
561
- msgid "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
562
- msgstr "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
563
 
564
- #: includes/i18n.php:166
565
- 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?"
566
- 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?"
 
567
 
568
- #: includes/i18n.php:167
569
- 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?"
570
- 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?"
571
 
572
- #: includes/i18n.php:168
573
- msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
574
- msgstr "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
575
 
576
- #: includes/i18n.php:169
577
- msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
578
- msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?"
579
 
580
- #: includes/i18n.php:170
581
- msgid "You can still enjoy all %s features but you will not have access to %s updates and support."
582
- msgstr "You can still enjoy all %s features but you will not have access to %s updates and support."
583
 
584
- #: includes/i18n.php:171
585
- msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
586
- msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
587
 
588
- #: includes/i18n.php:172
589
- msgid "Are you sure you want to proceed?"
590
- msgstr "האם את/ה בטוח רוצה להמשיך?"
591
 
592
- #: includes/i18n.php:175
593
- msgid "Add Ons for %s"
594
- msgstr "הרחבות עבור %s"
595
 
596
- #: includes/i18n.php:176
597
- 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."
598
- 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."
599
 
600
- #: includes/i18n.php:178
601
- msgid "Anonymous feedback"
602
- msgstr "פידבק אנונימי"
 
603
 
604
- #: includes/i18n.php:179
605
- msgid "Quick feedback"
606
- msgstr "פידבק זריז"
607
 
608
- #: includes/i18n.php:180
609
- msgid "If you have a moment, please let us know why you are %s"
610
- msgstr "If you have a moment, please let us know why you are %s"
 
611
 
612
- #: includes/i18n.php:181
613
- msgid "deactivating"
614
- msgstr "deactivating"
615
 
616
- #: includes/i18n.php:182
617
- msgid "Deactivation"
618
- msgstr "Deactivation"
619
 
620
- #: includes/i18n.php:183
621
- msgid "Theme Switch"
622
- msgstr "Theme Switch"
623
 
624
- #: includes/i18n.php:184
625
- msgid "switching"
626
- msgstr "switching"
 
627
 
628
- #: includes/i18n.php:185
629
- msgid "Switch"
630
- msgstr "Switch"
631
 
632
- #: includes/i18n.php:186
633
- msgid "Activate %s"
634
- msgstr "Activate %s"
635
 
636
- #: includes/i18n.php:187
637
- msgid "Yes - %s"
638
- msgstr "Yes - %s"
 
639
 
640
- #: includes/i18n.php:188
641
- msgid "Submit & %s"
642
- msgstr "Submit & %s"
643
 
644
- #: includes/i18n.php:189
645
- msgid "Cancel"
646
- msgstr "בטל"
647
 
648
- #: includes/i18n.php:190
649
- msgid "I no longer need the %s"
650
- msgstr "I no longer need the %s"
651
 
652
- #: includes/i18n.php:191
653
- msgid "I found a better %s"
654
- msgstr "I found a better %s"
655
 
656
- #: includes/i18n.php:192
657
- msgid "I only needed the %s for a short period"
658
- msgstr "I only needed the %s for a short period"
659
 
660
- #: includes/i18n.php:193
661
- msgid "The %s broke my site"
662
- msgstr "The %s broke my site"
663
 
664
- #: includes/i18n.php:194
665
- msgid "The %s suddenly stopped working"
666
- msgstr "The %s suddenly stopped working"
667
 
668
- #: includes/i18n.php:195
669
- msgid "I can't pay for it anymore"
670
- msgstr "אני לא יכול/ה להמשיך לשלם על זה"
671
 
672
- #: includes/i18n.php:196
673
- msgid "It's a temporary deactivation. I'm just debugging an issue."
674
- msgstr "כיבוי זמני לשם דיבאג."
 
 
675
 
676
- #: includes/i18n.php:197
677
- msgid "It's a temporary %s. I'm just debugging an issue."
678
- msgstr "It's a temporary %s. I'm just debugging an issue."
679
 
680
- #: includes/i18n.php:198
681
- msgctxt ""
682
- msgid "Other"
683
- msgstr "Other"
684
 
685
- #: includes/i18n.php:200
686
- msgid "Kindly tell us the reason so we can improve."
687
- msgstr "אנא שתף את הסיבה כדי שנוכל להשתפר."
688
 
689
- #: includes/i18n.php:201
690
- msgid "What's the %s's name?"
691
- msgstr "What's the %s's name?"
692
 
693
- #: includes/i18n.php:202
694
- msgid "What price would you feel comfortable paying?"
695
- msgstr "מה המחיר שכן תרגיש\\י בנוח לשלם?"
696
 
697
- #: includes/i18n.php:203
698
- msgid "I couldn't understand how to make it work"
699
- msgstr "לא הצלחתי להבין איך לגרום לזה לעבוד"
700
 
701
- #: includes/i18n.php:204
702
- msgid "The %s is great, but I need specific feature that you don't support"
703
- msgstr "The %s is great, but I need specific feature that you don't support"
704
 
705
- #: includes/i18n.php:205
706
- msgid "The %s is not working"
707
- msgstr "The %s is not working"
708
 
709
- #: includes/i18n.php:206
710
- msgid "It's not what I was looking for"
711
- msgstr "חיפשתי משהו אחר"
712
 
713
- #: includes/i18n.php:207
714
- msgid "The %s didn't work as expected"
715
- msgstr "The %s didn't work as expected"
 
716
 
717
- #: includes/i18n.php:208
718
- msgid "What feature?"
719
- msgstr "איזה פיטצ'ר?"
720
 
721
- #: includes/i18n.php:209
722
- msgid "Kindly share what didn't work so we can fix it for future users..."
723
- msgstr "אנא שתפ\\י מה לא עבד כדי שנוכל לתקן זאת עבור משתמשים עתידיים..."
 
724
 
725
- #: includes/i18n.php:210
726
- msgid "What you've been looking for?"
727
- msgstr "מה חיפשת?"
 
728
 
729
- #: includes/i18n.php:211
730
- msgid "What did you expect?"
731
- msgstr "למה ציפית?"
732
 
733
- #: includes/i18n.php:212
734
- msgid "The %s didn't work"
735
- msgstr "The %s didn't work"
736
 
737
- #: includes/i18n.php:213
738
- msgid "I don't like to share my information with you"
739
- msgstr "אני לא אוהב את הרעיון של שיתוף מידע איתכם"
740
 
741
- #: includes/i18n.php:214
742
- msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
743
- msgstr "אולי פספסת את זה אבל אינך חייב\\ת לשתף כל מידע איתנו, ביכולתך %s על שיתוף המידע."
 
744
 
745
- #: includes/i18n.php:218
746
- msgctxt "greeting"
747
- msgid "Hey %s,"
748
- msgstr "היי %s,"
749
 
750
- #: includes/i18n.php:219
751
- msgctxt "a greeting. E.g. Thanks John!"
752
- msgid "Thanks %s!"
753
- msgstr "תודה %s!"
754
 
755
- #: includes/i18n.php:220
756
- msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
757
- msgstr "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
 
758
 
759
- #: includes/i18n.php:221
760
- msgid "Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
761
- msgstr "Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
 
762
 
763
- #: includes/i18n.php:222
764
- 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."
765
- 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."
 
766
 
767
- #: includes/i18n.php:223
768
- msgid "complete the install"
769
- msgstr "השלם התקנה"
 
770
 
771
- #: includes/i18n.php:224
772
- msgid "start the trial"
773
- msgstr "התחל תקופת ניסיון"
 
774
 
775
- #: includes/i18n.php:225
776
- msgid "Thanks for purchasing %s! To get started, please enter your license key:"
777
- msgstr "Thanks for purchasing %s! To get started, please enter your license key:"
778
 
779
- #: includes/i18n.php:226
780
- 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."
781
- 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."
 
782
 
783
- #: includes/i18n.php:227
784
- msgid "What permissions are being granted?"
785
- msgstr "מהן ההרשאות המוענקות?"
 
786
 
787
- #: includes/i18n.php:228
788
- msgid "Your Profile Overview"
789
- msgstr "פרטים כלליים על הפרופיל"
 
 
790
 
791
- #: includes/i18n.php:229
792
- msgid "Name and email address"
793
- msgstr "שם וכתובת דו\"אל"
 
794
 
795
- #: includes/i18n.php:230
796
- msgid "Your Site Overview"
797
- msgstr "פרטים כלליים על האתר"
798
 
799
- #: includes/i18n.php:231
800
- msgid "Site URL, WP version, PHP info, plugins & themes"
801
- msgstr "כתובת אתר, גרסת וורדפרס, פרטי PHP, תוספים ותבניות"
 
 
 
802
 
803
- #: includes/i18n.php:232
804
- msgid "Current %s Events"
805
- msgstr "Current %s Events"
 
806
 
807
- #: includes/i18n.php:233
808
- msgid "Activation, deactivation and uninstall"
809
- msgstr "הפעלה, כיבוי והסרה"
 
810
 
811
- #: includes/i18n.php:234
812
- msgid "Plugins & Themes"
813
- msgstr "תוספים ותבניות"
814
 
815
- #: includes/i18n.php:235
816
- msgid "Titles, versions and state."
817
- msgstr "שמות, גרסאות וסטאטוס."
818
 
819
- #: includes/i18n.php:236
820
- msgid "Admin Notices"
821
- msgstr "התראות מנהל"
822
 
823
- #: includes/i18n.php:237
824
- msgid "Newsletter"
825
- msgstr "ניוסלטר"
 
 
826
 
827
- #: includes/i18n.php:238
828
- msgid "Updates, announcements, marketing, no spam"
829
- msgstr "Updates, announcements, marketing, no spam"
 
 
830
 
831
- #: includes/i18n.php:239
832
- msgid "Privacy Policy"
833
- msgstr "מדיניות פרטיות"
 
834
 
835
- #: includes/i18n.php:240
836
- msgid "Terms of Service"
837
- msgstr "תנאי השירות"
 
838
 
839
- #: includes/i18n.php:241
840
- msgctxt "as activating plugin"
841
- msgid "Activating"
842
- msgstr "מפעיל"
843
 
844
- #: includes/i18n.php:242
845
- msgctxt "as in the process of sending an email"
846
- msgid "Sending email"
847
- msgstr "שולח דוא\"ל"
848
 
849
- #: includes/i18n.php:243
850
- msgctxt "button label"
851
- msgid "Allow & Continue"
852
- msgstr "אפשר\\י והמשכ\\י"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
853
 
854
- #: includes/i18n.php:244
855
- msgctxt "button label"
856
- msgid "Agree & Activate License"
857
- msgstr "הסכמה והפעלת רישיון"
858
 
859
- #: includes/i18n.php:245
860
- msgctxt "verb"
861
- msgid "Skip"
862
- msgstr "דלג"
863
 
864
- #: includes/i18n.php:246
865
- msgid "Click here to use the plugin anonymously"
866
- msgstr "Click here to use the plugin anonymously"
867
 
868
- #: includes/i18n.php:247
869
- msgid "Re-send activation email"
870
- msgstr "שליחה חוזרת של מייל האקטיבציה"
871
 
872
- #: includes/i18n.php:248
873
- msgid "License key"
874
- msgstr "מפתח רישיון"
875
 
876
- #: includes/i18n.php:249
877
- msgid "Send License Key"
878
- msgstr "שליחת מפתח רישיון"
879
 
880
- #: includes/i18n.php:250
881
- msgid "Sending license key"
882
- msgstr "שולח מפתח רישיון"
 
883
 
884
- #: includes/i18n.php:251
885
- msgid "Have a license key?"
886
- msgstr "האם ברשותך רישיון?"
 
887
 
888
- #: includes/i18n.php:252
889
- msgid "Don't have a license key?"
890
- msgstr "האם אין ברשותך מפתח רישיון?"
 
891
 
892
- #: includes/i18n.php:253
893
- msgid "Can't find your license key?"
894
- msgstr "האם אינך מוצא את מפתח הרישיון?"
895
 
896
- #: includes/i18n.php:254
897
- msgid "We couldn't find your email address in the system, are you sure it's the right address?"
898
- msgstr "We couldn't find your email address in the system, are you sure it's the right address?"
899
 
900
- #: includes/i18n.php:255
901
- msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
902
- msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?"
903
 
904
- #: includes/i18n.php:256
905
- msgid "Opt In"
906
- msgstr "Opt In"
907
 
908
- #: includes/i18n.php:257
909
- msgid "Opt Out"
910
- msgstr "Opt Out"
 
911
 
912
- #: includes/i18n.php:258
913
- msgid "On second thought - I want to continue helping"
914
- msgstr "במחשבה שנייה - אני רוצה להמשיך לעזור"
915
 
916
- #: includes/i18n.php:259
917
- msgid "Opting out..."
918
- msgstr "Opting out..."
919
 
920
- #: includes/i18n.php:260
921
- msgid "Opting in..."
922
- msgstr "Opting in..."
923
 
924
- #: includes/i18n.php:261
925
- msgid "We appreciate your help in making the %s better by letting us track some usage data."
926
- msgstr "We appreciate your help in making the %s better by letting us track some usage data."
927
 
928
- #: includes/i18n.php:262
929
- 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."
930
- 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."
931
 
932
- #: includes/i18n.php:263
933
- msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
934
- msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
 
935
 
936
- #: includes/i18n.php:267
937
- msgid "Screenshots"
938
- msgstr "צילומי מסך"
939
 
940
- #: includes/i18n.php:268
941
- msgid "Click to view full-size screenshot %d"
942
- msgstr "Click to view full-size screenshot %d"
 
943
 
944
- #: includes/i18n.php:272
945
- msgid "Freemius Debug"
946
- msgstr "ניפוי תקלות פרימיוס"
 
947
 
948
- #: includes/i18n.php:273
949
- msgctxt "as turned on"
950
- msgid "On"
951
- msgstr "דלוק"
 
 
952
 
953
- #: includes/i18n.php:274
954
- msgctxt "as turned off"
955
- msgid "Off"
956
- msgstr "כבוי"
957
 
958
- #: includes/i18n.php:275
959
- msgctxt "as code debugging"
960
- msgid "Debugging"
961
- msgstr "דיבוג"
962
 
963
- #: includes/i18n.php:276
964
- msgid "Freemius State"
965
- msgstr "מצב פרימיוס"
966
 
967
- #: includes/i18n.php:277
968
- msgctxt "as connection was successful"
969
- msgid "Connected"
970
- msgstr "מחובר"
971
 
972
- #: includes/i18n.php:278
973
- msgctxt "as connection blocked"
974
- msgid "Blocked"
975
- msgstr "חסום"
976
 
977
- #: includes/i18n.php:279
978
- msgctxt "as application program interface"
979
- msgid "API"
980
- msgstr "API"
981
 
982
- #: includes/i18n.php:280
983
- msgctxt "as software development kit versions"
984
- msgid "SDK"
985
- msgstr "SDK"
986
 
987
- #: includes/i18n.php:281
988
- msgctxt "as software development kit versions"
989
- msgid "SDK Versions"
990
- msgstr "גרסאות SDK"
991
 
992
- #: includes/i18n.php:282
993
- msgctxt "as plugin folder path"
994
- msgid "Plugin Path"
995
- msgstr "נתיב התוסף"
996
 
997
- #: includes/i18n.php:283
998
- msgctxt "as sdk path"
999
- msgid "SDK Path"
1000
- msgstr "מיקום SDK"
 
1001
 
1002
- #: includes/i18n.php:284
1003
- msgid "Add Ons of Plugin %s"
1004
- msgstr "הרחבות עבור %s"
1005
 
1006
- #: includes/i18n.php:285
1007
- msgid "Are you sure you want to delete all Freemius data?"
1008
- msgstr "Are you sure you want to delete all Freemius data?"
1009
 
1010
- #: includes/i18n.php:286
1011
- msgid "Actions"
1012
- msgstr "פעולות"
1013
 
1014
- #: includes/i18n.php:287
1015
- msgid "Delete All Accounts"
1016
- msgstr "מחיקת כל החשבונות"
1017
 
1018
- #: includes/i18n.php:288
1019
- msgid "Start Fresh"
1020
- msgstr "התחל מחדש"
1021
 
1022
- #: includes/i18n.php:289
1023
- msgid "Clear API Cache"
1024
- msgstr "ניקוי מטמון ה-API"
1025
 
1026
- #: includes/i18n.php:290
1027
- msgid "Sync Data From Server"
1028
- msgstr "סנכרון מידע מהשרת"
1029
 
1030
- #: includes/i18n.php:291
1031
- msgid "Scheduled Crons"
1032
- msgstr "Scheduled Crons"
1033
 
1034
- #: includes/i18n.php:292
1035
- msgid "Cron Type"
1036
- msgstr "Cron Type"
1037
 
1038
- #: includes/i18n.php:293
1039
- msgid "Plugins & Themes Sync"
1040
- msgstr "Plugins & Themes Sync"
1041
 
1042
- #: includes/i18n.php:294
1043
- msgid "%s Licenses"
1044
- msgstr "%s Licenses"
1045
 
1046
- #: includes/i18n.php:295
1047
- msgid "Debug Log"
1048
- msgstr "Debug Log"
 
1049
 
1050
- #: includes/i18n.php:296
1051
- msgid "All"
1052
- msgstr "הכל"
1053
 
1054
- #: includes/i18n.php:297
1055
- msgid "File"
1056
- msgstr "קובץ"
1057
 
1058
- #: includes/i18n.php:298
1059
- msgid "Function"
1060
- msgstr "פונקציה"
1061
 
1062
- #: includes/i18n.php:299
1063
- msgid "Process ID"
1064
- msgstr "Process ID"
1065
 
1066
- #: includes/i18n.php:300
1067
- msgid "Logger"
1068
- msgstr "Logger"
1069
 
1070
- #: includes/i18n.php:301
1071
- msgid "Message"
1072
- msgstr "הודעה"
 
1073
 
1074
- #: includes/i18n.php:302
1075
- msgid "Download"
1076
- msgstr "הורדה"
1077
 
1078
- #: includes/i18n.php:303
1079
- msgid "Filter"
1080
- msgstr "פילטר"
1081
 
1082
- #: includes/i18n.php:304
1083
- msgid "Type"
1084
- msgstr "סוג"
1085
 
1086
- #: includes/i18n.php:305
1087
- msgid "All Types"
1088
- msgstr "כל הסוגים"
1089
 
1090
- #: includes/i18n.php:306
1091
- msgid "All Requests"
1092
- msgstr "כל הבקשות"
1093
 
1094
- #: includes/i18n.php:310
1095
- msgctxt "as congratulations"
1096
- msgid "Congrats"
1097
- msgstr "מזל טוב"
1098
 
1099
- #: includes/i18n.php:311
1100
- msgctxt "exclamation"
1101
- msgid "Oops"
1102
- msgstr "אופס"
1103
 
1104
- #: includes/i18n.php:312
1105
- msgctxt "interjection expressing joy or exuberance"
1106
- msgid "Yee-haw"
1107
- msgstr "יששש"
1108
 
1109
- #: includes/i18n.php:313
1110
- msgctxt ""
1111
- msgid "W00t"
1112
- msgstr "W00t"
1113
 
1114
- #: includes/i18n.php:315
1115
- msgctxt "a positive response"
1116
- msgid "Right on"
1117
- msgstr "מעולה"
1118
 
1119
- #: includes/i18n.php:316
1120
- msgctxt ""
1121
- msgid "Hmm"
1122
- msgstr "הממ"
1123
 
1124
- #: includes/i18n.php:318
1125
- msgid "O.K"
1126
- msgstr "אוקיי"
1127
 
1128
- #: includes/i18n.php:319
1129
- msgctxt "exclamation"
1130
- msgid "Hey"
1131
- msgstr "היי"
1132
 
1133
- #: includes/i18n.php:320
1134
- msgctxt "advance notice of something that will need attention."
1135
- msgid "Heads up"
1136
- msgstr "לתשמות לבך"
1137
 
1138
- #: includes/i18n.php:325
1139
- msgid "Seems like you got the latest release."
1140
- msgstr "Seems like you got the latest release."
1141
 
1142
- #: includes/i18n.php:326
1143
- msgid "You are all good!"
1144
- msgstr "את\\ה מסודר!"
1145
 
1146
- #: includes/i18n.php:327
1147
- msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
1148
- msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered."
 
1149
 
1150
- #: includes/i18n.php:328
1151
- msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
1152
- msgstr "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
 
1153
 
1154
- #: includes/i18n.php:329
1155
- msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
1156
- msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
1157
 
1158
- #: includes/i18n.php:330
1159
- msgid "Your name was successfully updated."
1160
- msgstr "שמך עודכן בהצלחה."
 
1161
 
1162
- #: includes/i18n.php:331
1163
- msgid "You have successfully updated your %s."
1164
- msgstr "You have successfully updated your %s."
 
1165
 
1166
- #: includes/i18n.php:332
1167
- msgid "Please provide your full name."
1168
- msgstr "נא למלא את שמך המלא."
1169
 
1170
- #: includes/i18n.php:333
1171
- msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
1172
- msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
 
1173
 
1174
- #: includes/i18n.php:334
1175
- msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
1176
- msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server."
1177
 
1178
- #: includes/i18n.php:335
1179
- msgid "No credit card required"
1180
- msgstr "לא נדרש כרטיס אשראי"
1181
 
1182
- #: includes/i18n.php:336
1183
- msgid "Premium %s version was successfully activated."
1184
- msgstr "Premium %s version was successfully activated."
1185
 
1186
- #: includes/i18n.php:337
1187
- msgid "The upgrade of %s was successfully completed."
1188
- msgstr "The upgrade of %s was successfully completed."
1189
 
1190
- #: includes/i18n.php:338
1191
- msgid "Your account was successfully activated with the %s plan."
1192
- msgstr "חשבונך הופעל בהצלחה עם חבילת %s."
1193
 
1194
- #: includes/i18n.php:339
1195
- msgid "Download the latest %s version now"
1196
- msgstr "הורדת גרסת ה-%s העדכנית - עכשיו"
1197
 
1198
- #: includes/i18n.php:340
1199
- msgid "Please follow these steps to complete the upgrade"
1200
- msgstr "נא לבצע את הצעדים הבאים להשלמת השידרוג"
1201
 
1202
- #: includes/i18n.php:341
1203
- msgid "Download the latest %s version"
1204
- msgstr "הורד\\י את גרסת ה-%s העדכנית"
1205
 
1206
- #: includes/i18n.php:342
1207
- msgid "Download the latest version"
1208
- msgstr "הורד את הגרסה האחרונה"
1209
 
1210
- #: includes/i18n.php:343
1211
- msgid "Deactivate the free version"
1212
- msgstr "כבה\\י את הגרסה החינאמית"
 
1213
 
1214
- #: includes/i18n.php:344
1215
- msgid "Upload and activate the downloaded version"
1216
- msgstr "העלה\\י והפעיל\\י את הגרסה שהורדת"
1217
 
1218
- #: includes/i18n.php:345
1219
- msgid "How to upload and activate?"
1220
- msgstr "איך להעלות ולהפעיל?"
1221
 
1222
- #: includes/i18n.php:346
1223
- msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1224
- msgid "%s Add-on was successfully purchased."
1225
- msgstr "ההרחבה %s נרכשה בהצלחה."
1226
 
1227
- #: includes/i18n.php:348
1228
- msgid "Your %s Add-on plan was successfully upgraded."
1229
- msgstr "חבילת ההרחבה %s שודרגה בהצלחה."
1230
 
1231
- #: includes/i18n.php:349
1232
- msgid "Your email has been successfully verified - you are AWESOME!"
1233
- msgstr "Your email has been successfully verified - you are AWESOME!"
1234
 
1235
- #: includes/i18n.php:350
1236
- msgid "Your plan was successfully upgraded."
1237
- msgstr "החבילה שודרגה בהצלחה."
 
1238
 
1239
- #: includes/i18n.php:351
1240
- msgid "Your plan was successfully changed to %s."
1241
- msgstr "החבילה עודכנה בהצלחה אל %s."
1242
 
1243
- #: includes/i18n.php:352
1244
- msgid "Your license has expired. You can still continue using the free %s forever."
1245
- msgstr "Your license has expired. You can still continue using the free %s forever."
 
1246
 
1247
- #: includes/i18n.php:353
1248
- msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
1249
- msgstr "רשיונך בוטל. אם לדעתך זו טעות, נא ליצור קשר עם התמיכה."
1250
 
1251
- #: includes/i18n.php:354
1252
- msgid "Your trial has been successfully started."
1253
- msgstr "הניסיון שלך הופעל בהצלחה."
 
1254
 
1255
- #: includes/i18n.php:355
1256
- msgid "Your license was successfully activated."
1257
- msgstr "הרישיון הופעל בהצלחה."
 
1258
 
1259
- #: includes/i18n.php:356
1260
- msgid "It looks like your site currently doesn't have an active license."
1261
- msgstr "נראה לאתר עדיין אין רישיון פעיל."
1262
 
1263
- #: includes/i18n.php:357
1264
- msgid "Your license was successfully deactivated, you are back to the %s plan."
1265
- msgstr "רישיונך נותק בהצלחה, חזרת לחבילת %s"
1266
 
1267
- #: includes/i18n.php:358
1268
- msgid "It looks like the license deactivation failed."
1269
- msgstr "נראה שניתוק הרישיון נכשל."
 
1270
 
1271
- #: includes/i18n.php:359
1272
- msgid "It looks like the license could not be activated."
1273
- msgstr "נראה שלא ניתן להפעיל את הרישיון."
1274
 
1275
- #: includes/i18n.php:360
1276
- msgid "Error received from the server:"
1277
- msgstr "הוחזרה שגיאה מהשרת:"
1278
 
1279
- #: includes/i18n.php:361
1280
- msgid "Your trial has expired. You can still continue using all our free features."
1281
- msgstr "תקופת הניסיון נגמרה. ביכולתך להמשיך להשתמש בכל הפיטצ'רים החינאמיים."
1282
 
1283
- #: includes/i18n.php:362
1284
- msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
1285
- msgstr "Your plan was successfully downgraded. Your %s plan license will expire in %s."
1286
 
1287
- #: includes/i18n.php:363
1288
- msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
1289
- msgstr "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
1290
 
1291
- #: includes/i18n.php:364
1292
- msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
1293
- msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
1294
 
1295
- #: includes/i18n.php:365
1296
- msgid "Your %s free trial was successfully cancelled."
1297
- msgstr "תקופת הניסיון החינמית של %s בוטלה בהצלחה."
1298
 
1299
- #: includes/i18n.php:366
1300
- msgctxt "%s - numeric version number"
1301
- msgid "Version %s was released."
1302
- msgstr "גרסה %s הושקה."
1303
 
1304
- #: includes/i18n.php:367
1305
- msgid "Please download %s."
1306
- msgstr "נא להוריד את %s."
1307
 
1308
- #: includes/i18n.php:368
1309
- msgctxt "%s - plan name, as the latest professional version here"
1310
- msgid "the latest %s version here"
1311
- msgstr "גרסת ה-%s האחרונה כאן"
1312
 
1313
- #: includes/i18n.php:370
1314
- msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
1315
- msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
1316
 
1317
- #: includes/i18n.php:371
1318
- msgctxt "call to action"
1319
- msgid "Start free trial"
1320
- msgstr "התחלת ניסיון חינם"
1321
 
1322
- #: includes/i18n.php:372
1323
- msgid "Starting trial"
1324
- msgstr "מתחיל תקופת ניסיון"
1325
 
1326
- #: includes/i18n.php:373
1327
- msgid "Please wait"
1328
- msgstr "נא להמתין"
 
1329
 
1330
- #: includes/i18n.php:374
1331
- msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
1332
- msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
 
1333
 
1334
- #: includes/i18n.php:375
1335
- msgid "You already utilized a trial before."
1336
- msgstr "הניסיון כבר נוצל בעבר."
1337
 
1338
- #: includes/i18n.php:376
1339
- msgid "You are already running the %s in a trial mode."
1340
- msgstr "You are already running the %s in a trial mode."
1341
 
1342
- #: includes/i18n.php:377
1343
- msgid "Plan %s do not exist, therefore, can't start a trial."
1344
- msgstr "החבילה %s אינה קיימת, לכן, לא ניתן להתחיל תקופת ניסיון."
 
1345
 
1346
- #: includes/i18n.php:378
1347
- msgid "Plan %s does not support a trial period."
1348
- msgstr "תוכנית %s אינה תומכת בתקופת ניסיון."
1349
 
1350
- #: includes/i18n.php:379
1351
- msgid "None of the %s's plans supports a trial period."
1352
- msgstr "None of the %s's plans supports a trial period."
1353
 
1354
- #: includes/i18n.php:380
1355
- msgid "Unexpected API error. Please contact the %s's author with the following error."
1356
- msgstr "Unexpected API error. Please contact the %s's author with the following error."
1357
 
1358
- #: includes/i18n.php:381
1359
- msgid "No commitment for %s days - cancel anytime!"
1360
- msgstr "ללא התחייבות ל-%s ימין - בטלו בכל רגע!"
1361
 
1362
- #: includes/i18n.php:382
1363
- 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."
1364
- 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."
1365
 
1366
- #: includes/i18n.php:383
1367
- msgid "Couldn't activate %s."
1368
- msgstr "לא ניתן להפעיל את %s."
 
1369
 
1370
- #: includes/i18n.php:384
1371
- msgid "Please contact us with the following message:"
1372
- msgstr "אנא צור איתנו קשר יחד עם ההודעה הבאה:"
 
 
1373
 
1374
- #: includes/i18n.php:385
1375
- 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."
1376
- 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."
1377
 
1378
- #: includes/i18n.php:386
1379
- msgid "Please contact us here"
1380
- msgstr "אנא צור איתנו קשר כאן"
1381
 
1382
- #: includes/i18n.php:387
1383
- msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
1384
- msgstr "שידרגתי את החשבון שלי אבל כשאני מנסה לבצע סנכרון לרישיון החבילה נשארת %s."
 
1385
 
1386
- #: includes/i18n.php:390
1387
- msgid "From unknown reason, the API connectivity test failed."
1388
- msgstr "יש בעיית תקשורת ל-API מסיבה בלתי ברורה."
1389
 
1390
- #: includes/i18n.php:391
1391
- msgid "It's probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?"
1392
- msgstr "ככל הנראה זאת בעיה זמנית בצד שלנו. ברשותך, ורק כדי להיות בטוחים שזאת הבעיה, האם זה יהיה בסדר לבצע בדיקת תקשורת נוספת?"
1393
 
1394
- #: includes/i18n.php:392
1395
- msgid "We use PHP cURL library for the API calls, which is a very common library and usually installed and activated out of the box. Unfortunately, cURL is not activated (or disabled) on your server."
1396
- msgstr "We use PHP cURL library for the API calls, which is a very common library and usually installed and activated out of the box. Unfortunately, cURL is not activated (or disabled) on your server."
1397
 
1398
- #: includes/i18n.php:393
1399
- msgid "Disabled method(s):"
1400
- msgstr "Disabled method(s):"
 
1401
 
1402
- #: includes/i18n.php:394
1403
- msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1404
- msgstr "מסיבה בלתי ברורה, CloudFlare, חומת האש שאנחנו משתמשים בה, חוסמת את התקשורת."
1405
 
1406
- #: includes/i18n.php:395
1407
- msgctxt "as pluginX requires an access to our API"
1408
- msgid "%s requires an access to our API."
1409
- msgstr "%s מחייב גישה ל-API שלנו."
1410
 
1411
- #: includes/i18n.php:397
1412
- msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
1413
- msgstr "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
1414
 
1415
- #: includes/i18n.php:398
1416
- msgid "I don't know what is Squid or ACL, help me!"
1417
- msgstr "אין לי מושג מה זה Squid או ACL - אשמח לעזרה!"
1418
 
1419
- #: includes/i18n.php399, includes/i18n.php:403
1420
- 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."
1421
- 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."
1422
 
1423
- #: includes/i18n.php:400
1424
- msgid "I'm a system administrator"
1425
- msgstr "אני מנהל מערכת"
1426
 
1427
- #: includes/i18n.php:401
1428
- msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the %s and activate it again."
1429
- msgstr "Great, please whitelist the following domains: %s. Once you are done, deactivate the %s and activate it again."
1430
 
1431
- #: includes/i18n.php:402
1432
- msgid "I don't know what is cURL or how to install it, help me!"
1433
- msgstr "אין לי מושג מה זה cURL או איך להתקין אותו - אשמח לעזרה!"
1434
 
1435
- #: includes/i18n.php:404
1436
- 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."
1437
- 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."
1438
 
1439
- #: includes/i18n.php:405
1440
- msgid "We are sure it's an issue on our side and more than happy to resolve it for you ASAP if you give us a chance."
1441
- msgstr "זו בטח בעיה בצד שלנו ואנחנו נשמח לעזור כדי לפתור את העניין בהקדם האפשר, רק במידה ותאפשר\\י זאת."
1442
 
1443
- #: includes/i18n.php:406
1444
- msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
1445
- msgstr "מצטערים על חוסר הנעימות, אנחנו כאן כדי לעזור אם תאפשר\\י זאת."
1446
 
1447
- #: includes/i18n.php:407
1448
- msgid "Yes - I'm giving you a chance to fix it"
1449
- msgstr "כן - אני נותן לך צ'אנס לתקן את זה"
1450
 
1451
- #: includes/i18n.php:408
1452
- msgid "We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update."
1453
- msgstr "We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update."
1454
 
1455
- #: includes/i18n.php:409
1456
- msgid "Let's try your previous version"
1457
- msgstr "בוא ננסה את הגירסה הקודמת"
1458
 
1459
- #: includes/i18n.php:410
1460
- msgid "Uninstall this version and install the previous one."
1461
- msgstr "הסר את הגרסה הנוכחית והתקן את הגרסה קודמת."
1462
 
1463
- #: includes/i18n.php:411
1464
- msgid "That's exhausting, please deactivate"
1465
- msgstr "זה מתיש, אנא לכבות"
 
1466
 
1467
- #: includes/i18n.php:412
1468
- msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
1469
- msgstr "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
1470
 
1471
- #: includes/i18n.php:413
1472
- 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."
1473
- 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."
1474
 
1475
- #: includes/i18n.php:414
1476
- msgctxt "%1s - plugin title, %2s - API domain"
1477
- msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
1478
- msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
1479
 
1480
- #: includes/i18n.php:416
1481
- msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
1482
- msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
1483
 
1484
- #: includes/i18n.php:419
1485
- 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."
1486
- 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."
1487
 
1488
- #: includes/i18n.php:420
1489
- msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
1490
- msgstr "תודה על אישור ביצוע החלפת הבעלות. הרגע נשלח מייל ל-%s כדי לקבל אישור סופי."
 
 
1491
 
1492
- #: includes/i18n.php:421
1493
- msgid "%s is the new owner of the account."
1494
- msgstr "%s הינו הבעלים החד של חשבון זה."
 
 
1495
 
1496
- #: includes/i18n.php:423
1497
- msgctxt "addonX cannot run without pluginY"
1498
- msgid "%s cannot run without %s."
1499
- msgstr "%s לא יכול לעבוד ללא %s."
 
1500
 
1501
- #: includes/i18n.php:425
1502
- msgctxt "addonX cannot run..."
1503
- msgid "%s cannot run without the plugin."
1504
- msgstr "ההרחבה %s אינה יכולה לפעול ללא התוסף."
1505
 
1506
- #: includes/i18n.php:426
1507
- msgctxt "pluginX activation was successfully..."
1508
- msgid "%s activation was successfully completed."
1509
- msgstr "הפעלת %s הושלמה בהצלחה."
1510
 
1511
- #: includes/i18n.php:428
1512
- msgctxt "Plugin installer section title"
1513
- msgid "Features & Pricing"
1514
- msgstr "פיטצ'רים ומחירים"
1515
 
1516
- #: includes/i18n.php:429
1517
- msgid "Add-on must be deployed to WordPress.org or Freemius."
1518
- msgstr "Add-on must be deployed to WordPress.org or Freemius."
1519
 
1520
- #: includes/i18n.php:430
1521
- msgid "Paid add-on must be deployed to Freemius."
1522
- msgstr "Paid add-on must be deployed to Freemius."
1523
 
1524
- #: includes/i18n.php:434
1525
- msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
1526
- msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
1527
 
1528
- #: includes/i18n.php:435
1529
- 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."
1530
- 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."
1531
 
1532
- #: includes/i18n.php:440
1533
- msgctxt "as every month"
1534
- msgid "Monthly"
1535
- msgstr "חודשי"
1536
 
1537
- #: includes/i18n.php:441
1538
- msgctxt "as monthly period"
1539
- msgid "mo"
1540
- msgstr "חודשים"
1541
 
1542
- #: includes/i18n.php:442
1543
- msgctxt "as once a year"
1544
- msgid "Annual"
1545
- msgstr "שנתי"
1546
 
1547
- #: includes/i18n.php:443
1548
- msgctxt "as once a year"
1549
- msgid "Annually"
1550
- msgstr "שנתי"
1551
 
1552
- #: includes/i18n.php:444
1553
- msgctxt "as once a year"
1554
- msgid "Once"
1555
- msgstr "פעם אחת"
1556
 
1557
- #: includes/i18n.php:445
1558
- msgctxt "as annual period"
1559
- msgid "year"
1560
- msgstr "שנה"
1561
 
1562
- #: includes/i18n.php:446
1563
- msgid "Lifetime"
1564
- msgstr "לכל החיים"
1565
 
1566
- #: includes/i18n.php:447
1567
- msgctxt "e.g. the best product"
1568
- msgid "Best"
1569
- msgstr "הכי טוב"
1570
 
1571
- #: includes/i18n.php:448
1572
- msgctxt "e.g. billed monthly"
1573
- msgid "Billed %s"
1574
- msgstr "מחוייב על בסיס %s"
1575
 
1576
- #: includes/i18n.php:449
1577
- msgctxt "as a discount of $5 or 10%"
1578
- msgid "Save %s"
1579
- msgstr "שמירת %s"
1580
 
1581
- #: includes/i18n.php:451
1582
- msgid "View details"
1583
- msgstr "פרטים נוספים"
1584
 
1585
- #: includes/i18n.php:455
1586
- msgctxt "button label"
1587
- msgid "Approve & Start Trial"
1588
- msgstr "אשר והתחל תקופת ניסיון"
1589
 
1590
- #: includes/i18n.php:457
1591
- msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1592
- msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1593
 
1594
- #: includes/i18n.php:459
1595
- 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."
1596
- 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."
1597
 
1598
- #: includes/i18n.php:465
1599
- msgid "Business name"
1600
- msgstr "שם עסק"
1601
 
1602
- #: includes/i18n.php:466
1603
- msgid "Tax / VAT ID"
1604
- msgstr "Tax / VAT ID"
1605
 
1606
- #: includes/i18n.php:467
1607
- msgid "Address Line %d"
1608
- msgstr "כתובת %s"
1609
 
1610
- #: includes/i18n.php:468
1611
- msgid "Country"
1612
- msgstr "מדינה"
1613
 
1614
- #: includes/i18n.php:469
1615
- msgid "Select Country"
1616
- msgstr "בחר מדינה"
1617
 
1618
- #: includes/i18n.php:470
1619
- msgid "City"
1620
- msgstr "עיר"
1621
 
1622
- #: includes/i18n.php:471
1623
- msgid "Town"
1624
- msgstr "כפר"
1625
 
1626
- #: includes/i18n.php:472
1627
- msgid "State"
1628
- msgstr "מחוז/מדינה"
1629
 
1630
- #: includes/i18n.php:473
1631
- msgid "Province"
1632
- msgstr "פרובינציה"
1633
 
1634
- #: includes/i18n.php:474
1635
- msgid "ZIP / Postal Code"
1636
- msgstr "מיקוד / תא דואר"
1637
 
1638
- #: includes/i18n.php:479
1639
- msgid "Installing plugin: %s"
1640
- msgstr "Installing plugin: %s"
1641
 
1642
- #: includes/i18n.php:480
1643
- msgid "Automatic Installation"
1644
- msgstr "התקנה אוטומטית"
1645
 
1646
- #: includes/i18n.php:482
1647
- msgid "%s sec"
1648
- msgstr "%s שניות"
1649
 
1650
- #: includes/i18n.php:483
1651
- 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."
1652
- 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."
1653
 
1654
- #: includes/i18n.php:484
1655
- 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."
1656
- 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."
1657
 
1658
- #: includes/i18n.php:485
1659
- msgid "Cancel Installation"
1660
- msgstr "בטל התקנה"
1661
 
1662
- #: includes/i18n.php:486
1663
- msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
1664
- msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
1665
 
1666
- #: includes/i18n.php:487
1667
- msgid "Invalid module ID."
1668
- msgstr "Invalid module ID."
1669
 
1670
- #: includes/i18n.php:488
1671
- msgid "Auto installation only works for opted-in users."
1672
- msgstr "Auto installation only works for opted-in users."
1673
 
1674
- #: includes/i18n.php:489
1675
- msgid "Premium version already active."
1676
- msgstr "Premium version already active."
1677
 
1678
- #: includes/i18n.php:490
1679
- msgid "Premium add-on version already installed."
1680
- msgstr "Premium add-on version already installed."
1681
 
1682
- #: includes/i18n.php:491
1683
- msgid "You do not have a valid license to access the premium version."
1684
- msgstr "You do not have a valid license to access the premium version."
1685
 
1686
- #: includes/i18n.php:492
1687
- msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
1688
- msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version."
1689
 
1690
- #: includes/i18n.php:496
1691
- msgid "Secure HTTPS %s page, running from an external domain"
1692
- msgstr "Secure HTTPS %s page, running from an external domain"
1693
 
1694
- #: includes/i18n.php:497
1695
- msgid "PCI compliant"
1696
- msgstr "PCI compliant"
1697
 
1698
- #: includes/i18n.php:498
1699
- msgid "View paid features"
1700
- msgstr "View paid features"
1701
 
1702
- #: includes/i18n.php:512
1703
- msgctxt "Plugin installer section title"
1704
- msgid "Description"
1705
- msgstr "תיאור"
1706
 
1707
- #: includes/i18n.php:513
1708
- msgctxt "Plugin installer section title"
1709
- msgid "Installation"
1710
- msgstr "התקנה"
1711
 
1712
- #: includes/i18n.php:514
1713
- msgctxt "Plugin installer section title"
1714
- msgid "FAQ"
1715
- msgstr "שאלות נפוצות"
1716
 
1717
- #: includes/i18n.php:515
1718
- msgctxt "Plugin installer section title"
1719
- msgid "Changelog"
1720
- msgstr "לוג שינויים"
1721
 
1722
- #: includes/i18n.php:516
1723
- msgctxt "Plugin installer section title"
1724
- msgid "Reviews"
1725
- msgstr "ביקורות"
1726
 
1727
- #: includes/i18n.php:517
1728
- msgctxt "Plugin installer section title"
1729
- msgid "Other Notes"
1730
- msgstr "היערות נוספות"
1731
 
1732
- #: includes/i18n.php:519
1733
- msgid "%s star"
1734
- msgstr "כוכב %s"
1735
 
1736
- #: includes/i18n.php:521
1737
- msgid "%s stars"
1738
- msgstr "%s כוכבים"
1739
 
1740
- #: includes/i18n.php:523
1741
- msgid "%s rating"
1742
- msgstr "דרוג %s"
1743
 
1744
- #: includes/i18n.php:525
1745
- msgid "%s ratings"
1746
- msgstr "%s דרוגים"
1747
 
1748
- #: includes/i18n.php:527
1749
- msgid "%s time"
1750
- msgstr "פעם %s"
1751
 
1752
- #: includes/i18n.php:529
1753
- msgid "%s times"
1754
- msgstr "%s פעמים"
1755
 
1756
- #: includes/i18n.php:531
1757
- msgid "Click to see reviews that provided a rating of %s"
1758
- msgstr "Click to see reviews that provided a rating of %s"
1759
 
1760
- #: includes/i18n.php:532
1761
- msgid "Last Updated"
1762
- msgstr "עודכן לאחרונה"
 
1763
 
1764
- #: includes/i18n.php:533
1765
- msgid "Requires WordPress Version:"
1766
- msgstr "דורש וורדפרס גרסה:"
1767
 
1768
- #: includes/i18n.php:534
1769
- msgctxt "as the plugin author"
1770
- msgid "Author:"
1771
- msgstr "מחבר:"
1772
 
1773
- #: includes/i18n.php:535
1774
- msgid "Compatible up to:"
1775
- msgstr "Compatible up to:"
1776
 
1777
- #: includes/i18n.php:536
1778
- msgid "Downloaded:"
1779
- msgstr "הורדות:"
1780
 
1781
- #: includes/i18n.php:537
1782
- msgid "WordPress.org Plugin Page"
1783
- msgstr "WordPress.org Plugin Page"
1784
 
1785
- #: includes/i18n.php:538
1786
- msgid "Plugin Homepage"
1787
- msgstr "עמוד התוסף"
1788
 
1789
- #: includes/i18n.php:539
1790
- msgid "Donate to this plugin"
1791
- msgstr "Donate to this plugin"
1792
 
1793
- #: includes/i18n.php:540
1794
- msgid "Average Rating"
1795
- msgstr "דירוג ממוצע"
1796
 
1797
- #: includes/i18n.php:541
1798
- msgid "based on %s"
1799
- msgstr "מבוסס על %s"
1800
 
1801
- #: includes/i18n.php:542
1802
- msgid "Warning:"
1803
- msgstr "אזהרה:"
1804
 
1805
- #: includes/i18n.php:543
1806
- msgid "Contributors"
1807
- msgstr "תורמים"
1808
 
1809
- #: includes/i18n.php:544
1810
- msgid "Plugin Install"
1811
- msgstr "התקנת תוסף"
1812
 
1813
- #: includes/i18n.php:545
1814
- msgid "This plugin has not been tested with your current version of WordPress."
1815
- msgstr "This plugin has not been tested with your current version of WordPress."
1816
 
1817
- #: includes/i18n.php:546
1818
- msgid "This plugin has not been marked as compatible with your version of WordPress."
1819
- msgstr "This plugin has not been marked as compatible with your version of WordPress."
1820
 
1821
- #: includes/i18n.php:547
1822
- msgid "Newer Version (%s) Installed"
1823
- msgstr "גרסה חדשה (%s) הותקנה"
1824
 
1825
- #: includes/i18n.php:548
1826
- msgid "Latest Version Installed"
1827
- msgstr "הגרסה האחרונה הותקנה"
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
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: 2017-11-10 10:28+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=2; plural=(n != 1);\n"
18
  "MIME-Version: 1.0\n"
19
  "X-Poedit-Basepath: ..\n"
20
+ "X-Poedit-KeywordsList: get_text_inline;fs_text_inline;fs_echo_inline;fs_esc_js_inline;fs_esc_attr_inline;fs_esc_attr_echo_inline;fs_esc_html_inline;fs_esc_html_echo_inline;get_text_x_inline:1,2c;fs_text_x_inline:1,2c;fs_echo_x_inline:1,2c;fs_esc_attr_x_inline:1,2c;fs_esc_js_x_inline:1,2c;fs_esc_js_echo_x_inline:1,2c;fs_esc_html_x_inline:1,2c;fs_esc_html_echo_x_inline:1,2c\n"
21
  "X-Poedit-SearchPath-0: .\n"
22
  "X-Poedit-SearchPathExcluded-0: *.js\n"
23
  "X-Poedit-SourceCharset: UTF-8\n"
24
 
25
+ #: includes/class-freemius.php:903
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:905
30
+ msgid "Error"
31
+ msgstr "שגיאה"
32
 
33
+ #: includes/class-freemius.php:1155
34
+ msgid "I found a better %s"
35
+ msgstr "I found a better %s"
36
 
37
+ #: includes/class-freemius.php:1157
38
+ msgid "What's the %s's name?"
39
+ msgstr "What's the %s's name?"
40
 
41
+ #: includes/class-freemius.php:1163
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:1165
46
+ msgid "Deactivation"
47
+ msgstr "דיאקטיבציה"
48
 
49
+ #: includes/class-freemius.php:1166
50
+ msgid "Theme Switch"
51
+ msgstr "החלפת תֵמָה"
52
 
53
+ #: includes/class-freemius.php1175, templates/forms/resend-key.php:24
54
+ msgid "Other"
55
+ msgstr "אחר"
 
56
 
57
+ #: includes/class-freemius.php:1183
58
+ msgid "I no longer need the %s"
59
+ msgstr "I no longer need the %s"
60
 
61
+ #: includes/class-freemius.php:1190
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:1196
66
+ msgid "The %s broke my site"
67
+ msgstr "ה%s הרס לי את האתר"
 
68
 
69
+ #: includes/class-freemius.php:1203
70
+ msgid "The %s suddenly stopped working"
71
+ msgstr "ה%s הפסיק פתאום לעבוד"
72
 
73
+ #: includes/class-freemius.php:1213
74
+ msgid "I can't pay for it anymore"
75
+ msgstr "אני לא יכול/ה להמשיך לשלם על זה"
 
76
 
77
+ #: includes/class-freemius.php:1215
78
+ msgid "What price would you feel comfortable paying?"
79
+ msgstr "מה המחיר שכן תרגיש\\י בנוח לשלם?"
 
80
 
81
+ #: includes/class-freemius.php:1221
82
+ msgid "I don't like to share my information with you"
83
+ msgstr "אני לא אוהב את הרעיון של שיתוף מידע איתכם"
84
 
85
+ #: includes/class-freemius.php:1242
86
+ msgid "The %s didn't work"
87
+ msgstr "ה%s לא עבד"
88
 
89
+ #: includes/class-freemius.php:1252
90
+ msgid "I couldn't understand how to make it work"
91
+ msgstr "לא הצלחתי להבין איך לגרום לזה לעבוד"
92
 
93
+ #: includes/class-freemius.php:1260
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:1262
98
+ msgid "What feature?"
99
+ msgstr "איזה פיטצ'ר?"
100
 
101
+ #: includes/class-freemius.php:1266
102
+ msgid "The %s is not working"
103
+ msgstr "ה%s לא עובד"
104
 
105
+ #: includes/class-freemius.php:1268
106
+ msgid "Kindly share what didn't work so we can fix it for future users..."
107
+ msgstr "אנא שתפ\\י מה לא עבד כדי שנוכל לתקן זאת עבור משתמשים עתידיים..."
108
 
109
+ #: includes/class-freemius.php:1272
110
+ msgid "It's not what I was looking for"
111
+ msgstr "חיפשתי משהו אחר"
 
112
 
113
+ #: includes/class-freemius.php:1274
114
+ msgid "What you've been looking for?"
115
+ msgstr "מה חיפשת?"
 
116
 
117
+ #: includes/class-freemius.php:1278
118
+ msgid "The %s didn't work as expected"
119
+ msgstr "ה%s לא עבד כמצופה"
 
120
 
121
+ #: includes/class-freemius.php:1280
122
+ msgid "What did you expect?"
123
+ msgstr "למה ציפית?"
 
124
 
125
+ #: includes/class-freemius.php1816, templates/debug.php:20
126
+ msgid "Freemius Debug"
127
+ msgstr "ניפוי תקלות פרימיוס"
 
128
 
129
+ #: includes/class-freemius.php:2379
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:2381
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:2388
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:2490
142
+ msgid "Yes - do your thing"
143
+ msgstr "כן - בצעו את מה שצריך"
144
 
145
+ #: includes/class-freemius.php:2495
146
+ msgid "No - just deactivate"
147
+ msgstr "לא - פשוט כבה"
148
 
149
+ #: includes/class-freemius.php2540, includes/class-freemius.php3005,
150
+ #: includes/class-freemius.php3859, includes/class-freemius.php7141,
151
+ #: includes/class-freemius.php9000, includes/class-freemius.php9056,
152
+ #: includes/class-freemius.php9117, includes/class-freemius.php11014,
153
+ #: includes/class-freemius.php11025, includes/class-freemius.php11474,
154
+ #: includes/class-freemius.php11492, includes/class-freemius.php11590,
155
+ #: includes/class-freemius.php12265, templates/add-ons.php:43
156
+ msgctxt "exclamation"
157
+ msgid "Oops"
158
+ msgstr "אופס"
159
 
160
+ #: includes/class-freemius.php:2607
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:3002
165
+ msgctxt "addonX cannot run without pluginY"
166
+ msgid "%s cannot run without %s."
167
+ msgstr "%s לא יכול לעבוד ללא %s."
168
 
169
+ #: includes/class-freemius.php:3003
170
+ msgctxt "addonX cannot run..."
171
+ msgid "%s cannot run without the plugin."
172
+ msgstr "ההרחבה %s אינה יכולה לפעול ללא התוסף."
173
 
174
+ #: includes/class-freemius.php3124, includes/class-freemius.php3149,
175
+ #: includes/class-freemius.php:11563
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:3557
180
+ msgid "Premium %s version was successfully activated."
181
+ msgstr "Premium %s version was successfully activated."
 
182
 
183
+ #: includes/class-freemius.php3559, includes/class-freemius.php:4784
184
+ msgctxt ""
185
+ msgid "W00t"
186
+ msgstr "W00t"
187
 
188
+ #: includes/class-freemius.php:3574
 
189
  msgid "You have a %s license."
190
  msgstr "יש לך רישיון %s."
191
 
192
+ #: includes/class-freemius.php3578, includes/class-freemius.php8704,
193
+ #: includes/class-freemius.php8713, includes/class-freemius.php10965,
194
+ #: includes/class-freemius.php11178, includes/class-freemius.php11240,
195
+ #: includes/class-freemius.php:11352
196
+ msgctxt "interjection expressing joy or exuberance"
197
+ msgid "Yee-haw"
198
+ msgstr "יששש"
199
 
200
+ #: includes/class-freemius.php:3842
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:3846
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.php3855, templates/account.php692,
209
+ #: templates/add-ons.php:99
210
+ msgid "More information about %s"
211
+ msgstr "מידע נוסף אודות %s"
212
 
213
+ #: includes/class-freemius.php:3856
214
  msgid "Purchase License"
215
  msgstr "קניית רישיון"
216
 
217
+ #: includes/class-freemius.php4293, templates/connect.php:136
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:4297
222
+ msgid "start the trial"
223
+ msgstr "התחל תקופת ניסיון"
224
 
225
+ #: includes/class-freemius.php4298, templates/connect.php:140
226
+ msgid "complete the install"
227
+ msgstr "השלם התקנה"
 
228
 
229
+ #: includes/class-freemius.php:4377
230
  msgid "You are just one step away - %s"
231
  msgstr "You are just one step away - %s"
232
 
233
+ #: includes/class-freemius.php:4380
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:4394
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:4398
243
+ msgid "Opt in to make \"%s\" Better!"
244
+ msgstr "Opt in to make \"%s\" Better!"
245
 
246
+ #: includes/class-freemius.php:4783
247
+ msgid "The upgrade of %s was successfully completed."
248
+ msgstr "The upgrade of %s was successfully completed."
 
 
 
 
249
 
250
+ #: includes/class-freemius.php5868, includes/class-fs-plugin-updater.php358,
251
+ #: includes/class-fs-plugin-updater.php510,
252
+ #: includes/class-fs-plugin-updater.php516, templates/auto-installation.php:31
253
+ msgid "Add-On"
254
+ msgstr "Add-On"
255
 
256
+ #: includes/class-freemius.php5870, templates/debug.php303,
257
+ #: templates/debug.php:413
258
+ msgid "Plugin"
259
+ msgstr "תוסף"
260
 
261
+ #: includes/class-freemius.php5871, templates/debug.php303,
262
+ #: templates/debug.php413, templates/forms/deactivation/form.php:64
263
+ msgid "Theme"
264
+ msgstr "תבנית"
265
 
266
+ #: includes/class-freemius.php:7128
267
+ msgid "We couldn't find your email address in the system, are you sure it's the right address?"
268
+ msgstr "We couldn't find your email address in the system, are you sure it's the right address?"
269
 
270
+ #: includes/class-freemius.php:7130
271
+ msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
272
+ msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?"
 
273
 
274
+ #: includes/class-freemius.php:7339
275
+ msgid "Account is pending activation."
276
+ msgstr "Account is pending activation."
 
277
 
278
+ #: includes/class-freemius.php:8688
279
+ msgctxt "pluginX activation was successfully..."
280
+ msgid "%s activation was successfully completed."
281
+ msgstr "הפעלת %s הושלמה בהצלחה."
282
 
283
+ #: includes/class-freemius.php:8700
284
+ msgid "Your account was successfully activated with the %s plan."
285
+ msgstr "חשבונך הופעל בהצלחה עם חבילת %s."
286
 
287
+ #: includes/class-freemius.php8709, includes/class-freemius.php:11236
288
+ msgid "Your trial has been successfully started."
289
+ msgstr "הניסיון שלך הופעל בהצלחה."
290
 
291
+ #: includes/class-freemius.php8998, includes/class-freemius.php9054,
292
+ #: includes/class-freemius.php:9115
293
+ msgid "Couldn't activate %s."
294
+ msgstr "לא ניתן להפעיל את %s."
295
 
296
+ #: includes/class-freemius.php8999, includes/class-freemius.php9055,
297
+ #: includes/class-freemius.php:9116
298
+ msgid "Please contact us with the following message:"
299
+ msgstr "אנא צור איתנו קשר יחד עם ההודעה הבאה:"
300
 
301
+ #: includes/class-freemius.php9374, includes/class-freemius.php:13194
302
+ msgid "Upgrade"
303
+ msgstr "שדרג"
304
 
305
+ #: includes/class-freemius.php:9380
306
+ msgid "Start Trial"
307
+ msgstr "התחל תקופת ניסיון"
 
308
 
309
+ #: includes/class-freemius.php:9382
310
+ msgid "Pricing"
311
+ msgstr "מחירון"
312
 
313
+ #: includes/class-freemius.php9422, includes/class-freemius.php:9424
314
+ msgid "Affiliation"
315
+ msgstr "אפיליאציה"
316
 
317
+ #: includes/class-freemius.php9444, includes/class-freemius.php9446,
318
+ #: templates/account.php79, templates/debug.php:281
319
+ msgid "Account"
320
+ msgstr "חשבון"
321
 
322
+ #: includes/class-freemius.php9457, includes/class-freemius.php9459,
323
+ #: includes/customizer/class-fs-customizer-support-section.php:60
324
+ msgid "Contact Us"
325
+ msgstr "יצירת קשר"
326
 
327
+ #: includes/class-freemius.php9469, includes/class-freemius.php9471,
328
+ #: includes/class-freemius.php13204, templates/account.php:68
329
+ msgid "Add-Ons"
330
+ msgstr "Add-Ons"
331
 
332
+ #: includes/class-freemius.php9502, templates/pricing.php:92
333
+ msgctxt "noun"
334
+ msgid "Pricing"
335
+ msgstr "מחירון"
336
 
337
+ #: includes/class-freemius.php9682,
338
+ #: includes/customizer/class-fs-customizer-support-section.php:67
339
+ msgid "Support Forum"
340
+ msgstr "פורום תמיכה"
341
 
342
+ #: includes/class-freemius.php:10422
343
+ msgid "Your email has been successfully verified - you are AWESOME!"
344
+ msgstr "Your email has been successfully verified - you are AWESOME!"
345
 
346
+ #: includes/class-freemius.php:10423
347
+ msgctxt "a positive response"
348
+ msgid "Right on"
349
+ msgstr "מעולה"
350
 
351
+ #: includes/class-freemius.php:10956
352
+ msgid "Your %s Add-on plan was successfully upgraded."
353
+ msgstr "חבילת ההרחבה %s שודרגה בהצלחה."
354
 
355
+ #: includes/class-freemius.php:10958
356
+ msgid "%s Add-on was successfully purchased."
357
+ msgstr "ההרחבה %s נרכשה בהצלחה."
 
358
 
359
+ #: includes/class-freemius.php:10961
360
+ msgid "Download the latest version"
361
+ msgstr "הורד את הגרסה האחרונה"
362
 
363
+ #: includes/class-freemius.php:11010
364
+ msgctxt "%1s - plugin title, %2s - API domain"
365
+ msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
366
+ msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
367
 
368
+ #: includes/class-freemius.php11013, includes/class-freemius.php11323,
369
+ #: includes/class-freemius.php:11388
370
+ msgid "Error received from the server:"
371
+ msgstr "הוחזרה שגיאה מהשרת:"
372
 
373
+ #: includes/class-freemius.php:11024
374
+ msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
375
+ msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
 
376
 
377
+ #: includes/class-freemius.php11141, includes/class-freemius.php11328,
378
+ #: includes/class-freemius.php:11371
379
+ msgctxt ""
380
+ msgid "Hmm"
381
+ msgstr "Hmm"
382
 
383
+ #: includes/class-freemius.php:11154
384
+ 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."
385
+ 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."
386
 
387
+ #: includes/class-freemius.php11155, templates/account.php70,
388
+ #: templates/add-ons.php:130
389
+ msgctxt "trial period"
390
+ msgid "Trial"
391
+ msgstr "ניסיון"
392
 
393
+ #: includes/class-freemius.php:11160
394
+ msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
395
+ msgstr "שידרגתי את החשבון שלי אבל כשאני מנסה לבצע סנכרון לרישיון החבילה נשארת %s."
 
396
 
397
+ #: includes/class-freemius.php11164, includes/class-freemius.php:11218
398
+ msgid "Please contact us here"
399
+ msgstr "אנא צור איתנו קשר כאן"
400
 
401
+ #: includes/class-freemius.php:11174
402
+ msgid "Your plan was successfully upgraded."
403
+ msgstr "החבילה שודרגה בהצלחה."
404
 
405
+ #: includes/class-freemius.php:11191
406
+ msgid "Your plan was successfully changed to %s."
407
+ msgstr "החבילה עודכנה בהצלחה אל %s."
408
 
409
+ #: includes/class-freemius.php:11206
410
+ msgid "Your license has expired. You can still continue using the free %s forever."
411
+ msgstr "Your license has expired. You can still continue using the free %s forever."
412
 
413
+ #: includes/class-freemius.php:11214
414
+ msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
415
+ msgstr "רשיונך בוטל. אם לדעתך זו טעות, נא ליצור קשר עם התמיכה."
 
416
 
417
+ #: includes/class-freemius.php:11227
418
+ 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."
419
+ 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."
420
 
421
+ #: includes/class-freemius.php:11249
422
+ msgid "Your trial has expired. You can still continue using all our free features."
423
+ msgstr "תקופת הניסיון נגמרה. ביכולתך להמשיך להשתמש בכל הפיטצ'רים החינאמיים."
 
424
 
425
+ #: includes/class-freemius.php:11319
426
+ msgid "It looks like the license could not be activated."
427
+ msgstr "נראה שלא ניתן להפעיל את הרישיון."
 
428
 
429
+ #: includes/class-freemius.php:11349
430
+ msgid "Your license was successfully activated."
431
+ msgstr "הרישיון הופעל בהצלחה."
432
 
433
+ #: includes/class-freemius.php:11375
434
+ msgid "It looks like your site currently doesn't have an active license."
435
+ msgstr "נראה לאתר עדיין אין רישיון פעיל."
436
 
437
+ #: includes/class-freemius.php:11387
438
+ msgid "It looks like the license deactivation failed."
439
+ msgstr "נראה שניתוק הרישיון נכשל."
440
 
441
+ #: includes/class-freemius.php:11414
442
+ msgid "Your license was successfully deactivated, you are back to the %s plan."
443
+ msgstr "רישיונך נותק בהצלחה, חזרת לחבילת %s"
444
 
445
+ #: includes/class-freemius.php:11415
446
+ msgid "O.K"
447
+ msgstr "אוקיי"
448
 
449
+ #: includes/class-freemius.php:11463
450
+ msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
451
+ msgstr "Your plan was successfully downgraded. Your %s plan license will expire in %s."
452
 
453
+ #: includes/class-freemius.php:11473
454
+ msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
455
+ msgstr "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
456
 
457
+ #: includes/class-freemius.php:11497
458
+ msgid "You are already running the %s in a trial mode."
459
+ msgstr "You are already running the %s in a trial mode."
460
 
461
+ #: includes/class-freemius.php:11508
462
+ msgid "You already utilized a trial before."
463
+ msgstr "הניסיון כבר נוצל בעבר."
464
 
465
+ #: includes/class-freemius.php:11522
466
+ msgid "Plan %s do not exist, therefore, can't start a trial."
467
+ msgstr "החבילה %s אינה קיימת, לכן, לא ניתן להתחיל תקופת ניסיון."
468
 
469
+ #: includes/class-freemius.php:11533
470
+ msgid "Plan %s does not support a trial period."
471
+ msgstr "תוכנית %s אינה תומכת בתקופת ניסיון."
472
 
473
+ #: includes/class-freemius.php:11544
474
+ msgid "None of the %s's plans supports a trial period."
475
+ msgstr "None of the %s's plans supports a trial period."
476
 
477
+ #: includes/class-freemius.php:11594
478
+ msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
479
+ msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
480
 
481
+ #: includes/class-freemius.php:11645
482
+ msgid "Your %s free trial was successfully cancelled."
483
+ msgstr "תקופת הניסיון החינמית של %s בוטלה בהצלחה."
 
484
 
485
+ #: includes/class-freemius.php:11653
486
+ msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
487
+ msgstr "נראה שיש תקלה זמנית המונעת את ביטול הניסיון. אנא נסו שוב בעוד כמה דקות."
 
488
 
489
+ #: includes/class-freemius.php:11892
490
+ msgid "Version %s was released."
491
+ msgstr "גרסה %s הושקה."
492
 
493
+ #: includes/class-freemius.php:11892
494
+ msgid "Please download %s."
495
+ msgstr "נא להוריד את %s."
496
 
497
+ #: includes/class-freemius.php:11899
498
+ msgid "the latest %s version here"
499
+ msgstr "גרסת ה-%s האחרונה כאן"
500
 
501
+ #: includes/class-freemius.php:11904
502
+ msgid "New"
503
+ msgstr "חדש"
504
 
505
+ #: includes/class-freemius.php:11909
506
+ msgid "Seems like you got the latest release."
507
+ msgstr "נראה שיש לך את הגרסה האחרונה."
 
508
 
509
+ #: includes/class-freemius.php:11910
510
+ msgid "You are all good!"
511
+ msgstr "את\\ה מסודר!"
 
512
 
513
+ #: includes/class-freemius.php:12176
514
+ msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
515
+ msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
516
 
517
+ #: includes/class-freemius.php:12351
518
+ 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."
519
+ 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."
520
 
521
+ #: includes/class-freemius.php:12357
522
+ msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
523
+ msgstr "תודה על אישור ביצוע החלפת הבעלות. הרגע נשלח מייל ל-%s כדי לקבל אישור סופי."
524
 
525
+ #: includes/class-freemius.php:12362
526
+ msgid "%s is the new owner of the account."
527
+ msgstr "%s הינו הבעלים החד של חשבון זה."
528
 
529
+ #: includes/class-freemius.php:12364
530
+ msgctxt "as congratulations"
531
+ msgid "Congrats"
532
+ msgstr "מזל טוב"
533
 
534
+ #: includes/class-freemius.php:12384
535
+ msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
536
+ msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered."
537
 
538
+ #: includes/class-freemius.php:12385
539
+ msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
540
+ msgstr "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
541
 
542
+ #: includes/class-freemius.php:12392
543
+ msgid "Change Ownership"
544
+ msgstr "עדכון בעלות"
545
 
546
+ #: includes/class-freemius.php:12400
547
+ msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
548
+ msgstr "כתובת הדואל שלך עודכנה בהצלחה. הודעת אישור אמורה להתקבל בדואל שלך ברגעים הקרובים."
549
 
550
+ #: includes/class-freemius.php:12412
551
+ msgid "Please provide your full name."
552
+ msgstr "נא למלא את שמך המלא."
553
 
554
+ #: includes/class-freemius.php:12417
555
+ msgid "Your name was successfully updated."
556
+ msgstr "שמך עודכן בהצלחה."
557
 
558
+ #: includes/class-freemius.php:12478
559
+ msgid "You have successfully updated your %s."
560
+ msgstr "עידכנת בהצלחה את ה%s."
561
 
562
+ #: includes/class-freemius.php:12616
563
+ msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
564
+ msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server."
565
 
566
+ #: includes/class-freemius.php:12617
567
+ msgctxt "advance notice of something that will need attention."
568
+ msgid "Heads up"
569
+ msgstr "לתשמות לבך"
570
 
571
+ #: includes/class-freemius.php:12935
572
+ msgid "Awesome"
573
+ msgstr "אדיר"
574
 
575
+ #: includes/class-freemius.php:12975
576
+ msgctxt "exclamation"
577
+ msgid "Hey"
578
+ msgstr "היי"
579
 
580
+ #: includes/class-freemius.php:12975
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:12983
585
+ msgid "No commitment for %s days - cancel anytime!"
586
+ msgstr "ללא התחייבות ל-%s ימין - בטלו בכל רגע!"
587
 
588
+ #: includes/class-freemius.php:12984
589
+ msgid "No credit card required"
590
+ msgstr "לא נדרש כרטיס אשראי"
591
 
592
+ #: includes/class-freemius.php12991, templates/forms/trial-start.php:53
593
+ msgctxt "call to action"
594
+ msgid "Start free trial"
595
+ msgstr "התחלת ניסיון חינם"
596
 
597
+ #: includes/class-freemius.php:13068
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:13077
602
+ msgid "Learn more"
603
+ msgstr "Learn more"
604
 
605
+ #: includes/class-freemius.php13233, templates/account.php330,
606
+ #: templates/connect.php309, templates/forms/license-activation.php:24
607
+ msgid "Activate License"
608
+ msgstr "הפעלת רישיון"
609
 
610
+ #: includes/class-freemius.php13234, templates/account.php:393
611
+ msgid "Change License"
612
+ msgstr "שינוי רישיון"
613
 
614
+ #: includes/class-freemius.php:13295
615
+ msgid "Opt Out"
616
+ msgstr "Opt Out"
617
 
618
+ #: includes/class-freemius.php13297, includes/class-freemius.php:13302
619
+ msgid "Opt In"
620
+ msgstr "Opt In"
621
 
622
+ #: includes/class-freemius.php:13490
623
+ msgid "Please follow these steps to complete the upgrade"
624
+ msgstr "נא לבצע את הצעדים הבאים להשלמת השידרוג"
625
 
626
+ #: includes/class-freemius.php:13493
627
+ msgid "Download the latest %s version"
628
+ msgstr "הורד\\י את גרסת ה-%s העדכנית"
629
 
630
+ #: includes/class-freemius.php:13497
631
+ msgid "Upload and activate the downloaded version"
632
+ msgstr "העלה\\י והפעיל\\י את הגרסה שהורדת"
633
 
634
+ #: includes/class-freemius.php:13499
635
+ msgid "How to upload and activate?"
636
+ msgstr "איך להעלות ולהפעיל?"
637
 
638
+ #: includes/class-freemius.php:13658
639
+ msgid "Auto installation only works for opted-in users."
640
+ msgstr "Auto installation only works for opted-in users."
641
 
642
+ #: includes/class-freemius.php13668, includes/class-freemius.php13701,
643
+ #: includes/class-fs-plugin-updater.php490,
644
+ #: includes/class-fs-plugin-updater.php:504
645
+ msgid "Invalid module ID."
646
+ msgstr "Invalid module ID."
647
 
648
+ #: includes/class-freemius.php13677, includes/class-fs-plugin-updater.php:524
649
+ msgid "Premium version already active."
650
+ msgstr "Premium version already active."
651
 
652
+ #: includes/class-freemius.php:13684
653
+ msgid "You do not have a valid license to access the premium version."
654
+ msgstr "You do not have a valid license to access the premium version."
 
655
 
656
+ #: includes/class-freemius.php:13691
657
+ msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
658
+ msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version."
659
 
660
+ #: includes/class-freemius.php13709, includes/class-fs-plugin-updater.php:523
661
+ msgid "Premium add-on version already installed."
662
+ msgstr "Premium add-on version already installed."
663
 
664
+ #: includes/class-freemius.php:14054
665
+ msgid "View paid features"
666
+ msgstr "View paid features"
667
 
668
+ #: includes/class-fs-plugin-updater.php:131
669
+ msgid "%sRenew your license now%s to access version %s features and support."
670
+ msgstr "%sRenew your license now%s to access version %s features and support."
671
 
672
+ #: includes/class-fs-plugin-updater.php:553
673
+ msgid "Installing plugin: %s"
674
+ msgstr "Installing plugin: %s"
675
 
676
+ #: includes/class-fs-plugin-updater.php:594
677
+ msgid "Unable to connect to the filesystem. Please confirm your credentials."
678
+ msgstr "Unable to connect to the filesystem. Please confirm your credentials."
679
 
680
+ #: includes/class-fs-plugin-updater.php:700
681
+ msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
682
+ msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
683
 
684
+ #: includes/fs-plugin-info-dialog.php328, templates/account.php:696
685
+ msgctxt "verb"
686
+ msgid "Purchase"
687
+ msgstr "רכישה"
688
 
689
+ #: includes/fs-plugin-info-dialog.php:331
690
+ msgid "Start my free %s"
691
+ msgstr "התחל את %s הניסיון שלי"
692
 
693
+ #: includes/fs-plugin-info-dialog.php355, templates/account.php:52
694
+ msgctxt "as download latest version"
695
+ msgid "Download Latest"
696
+ msgstr "הורד גרסה אחרונה"
697
 
698
+ #: includes/fs-plugin-info-dialog.php358, templates/account.php676,
699
+ #: templates/account.php729, templates/auto-installation.php:110
700
+ msgid "Install Now"
701
+ msgstr "התקן עכשיו"
702
 
703
+ #: includes/fs-plugin-info-dialog.php364, templates/account.php:384
704
+ msgid "Install Update Now"
705
+ msgstr "התקן עדכון במיידי"
706
 
707
+ #: includes/fs-plugin-info-dialog.php:368
708
+ msgid "Newer Version (%s) Installed"
709
+ msgstr "גרסה חדשה (%s) הותקנה"
710
 
711
+ #: includes/fs-plugin-info-dialog.php:371
712
+ msgid "Latest Version Installed"
713
+ msgstr "הגרסה האחרונה הותקנה"
714
 
715
+ #: includes/fs-plugin-info-dialog.php:484
716
+ msgctxt "Plugin installer section title"
717
+ msgid "Description"
718
+ msgstr "תיאור"
719
 
720
+ #: includes/fs-plugin-info-dialog.php:485
721
+ msgctxt "Plugin installer section title"
722
+ msgid "Installation"
723
+ msgstr "התקנה"
724
 
725
+ #: includes/fs-plugin-info-dialog.php:486
726
+ msgctxt "Plugin installer section title"
727
+ msgid "FAQ"
728
+ msgstr "שאלות נפוצות"
729
 
730
+ #: includes/fs-plugin-info-dialog.php487,
731
+ #: templates/plugin-info/description.php:55
732
+ msgid "Screenshots"
733
+ msgstr "צילומי מסך"
734
 
735
+ #: includes/fs-plugin-info-dialog.php:488
736
+ msgctxt "Plugin installer section title"
737
+ msgid "Changelog"
738
+ msgstr "לוג שינויים"
739
 
740
+ #: includes/fs-plugin-info-dialog.php:489
741
+ msgctxt "Plugin installer section title"
742
+ msgid "Reviews"
743
+ msgstr "ביקורות"
744
 
745
+ #: includes/fs-plugin-info-dialog.php:490
746
+ msgctxt "Plugin installer section title"
747
+ msgid "Other Notes"
748
+ msgstr "היערות נוספות"
749
 
750
+ #: includes/fs-plugin-info-dialog.php:505
751
+ msgctxt "Plugin installer section title"
752
+ msgid "Features & Pricing"
753
+ msgstr "פיטצ'רים ומחירים"
754
 
755
+ #: includes/fs-plugin-info-dialog.php:515
756
+ msgid "Plugin Install"
757
+ msgstr "התקנת תוסף"
758
 
759
+ #: includes/fs-plugin-info-dialog.php:587
760
+ msgctxt "e.g. Professional Plan"
761
+ msgid "%s Plan"
762
+ msgstr "חבילה %s"
763
 
764
+ #: includes/fs-plugin-info-dialog.php:612
765
+ msgctxt "e.g. the best product"
766
+ msgid "Best"
767
+ msgstr "הכי טוב"
768
 
769
+ #: includes/fs-plugin-info-dialog.php618,
770
+ #: includes/fs-plugin-info-dialog.php:638
771
+ msgctxt "as every month"
772
+ msgid "Monthly"
773
+ msgstr "חודשי"
774
 
775
+ #: includes/fs-plugin-info-dialog.php:621
776
+ msgctxt "as once a year"
777
+ msgid "Annual"
778
+ msgstr "שנתי"
779
 
780
+ #: includes/fs-plugin-info-dialog.php:624
781
+ msgid "Lifetime"
782
+ msgstr "לכל החיים"
783
 
784
+ #: includes/fs-plugin-info-dialog.php638,
785
+ #: includes/fs-plugin-info-dialog.php640,
786
+ #: includes/fs-plugin-info-dialog.php:642
787
+ msgctxt "e.g. billed monthly"
788
+ msgid "Billed %s"
789
+ msgstr "מחוייב על בסיס %s"
790
 
791
+ #: includes/fs-plugin-info-dialog.php:640
792
+ msgctxt "as once a year"
793
+ msgid "Annually"
794
+ msgstr "שנתי"
795
 
796
+ #: includes/fs-plugin-info-dialog.php:642
797
+ msgctxt "as once a year"
798
+ msgid "Once"
799
+ msgstr "פעם אחת"
800
 
801
+ #: includes/fs-plugin-info-dialog.php:648
802
+ msgid "Single Site License"
803
+ msgstr "רשיון לאתר אחד"
804
 
805
+ #: includes/fs-plugin-info-dialog.php:650
806
+ msgid "Unlimited Licenses"
807
+ msgstr "רשיונות ללא הגבלה"
808
 
809
+ #: includes/fs-plugin-info-dialog.php:652
810
+ msgid "Up to %s Sites"
811
+ msgstr "עד %s אתרים"
812
 
813
+ #: includes/fs-plugin-info-dialog.php662,
814
+ #: templates/plugin-info/features.php:82
815
+ msgctxt "as monthly period"
816
+ msgid "mo"
817
+ msgstr "חודשים"
818
 
819
+ #: includes/fs-plugin-info-dialog.php669,
820
+ #: templates/plugin-info/features.php:80
821
+ msgctxt "as annual period"
822
+ msgid "year"
823
+ msgstr "שנה"
824
 
825
+ #: includes/fs-plugin-info-dialog.php:721
826
+ msgctxt "noun"
827
+ msgid "Price"
828
+ msgstr "מחיר"
829
 
830
+ #: includes/fs-plugin-info-dialog.php:767
831
+ msgctxt "as a discount of $5 or 10%"
832
+ msgid "Save %s"
833
+ msgstr "שמירת %s"
834
 
835
+ #: includes/fs-plugin-info-dialog.php:777
836
+ msgid "No commitment for %s - cancel anytime"
837
+ msgstr "No commitment for %s - cancel anytime"
 
838
 
839
+ #: includes/fs-plugin-info-dialog.php:780
840
+ msgid "After your free %s, pay as little as %s"
841
+ msgstr "After your free %s, pay as little as %s"
 
842
 
843
+ #: includes/fs-plugin-info-dialog.php:791
844
+ msgid "Details"
845
+ msgstr "פרטים"
846
+
847
+ #: includes/fs-plugin-info-dialog.php794, templates/account.php59,
848
+ #: templates/debug.php183, templates/debug.php220, templates/debug.php:354
849
+ msgctxt "product version"
850
+ msgid "Version"
851
+ msgstr "גרסה"
852
+
853
+ #: includes/fs-plugin-info-dialog.php:800
854
+ msgctxt "as the plugin author"
855
+ msgid "Author"
856
+ msgstr "Author"
857
+
858
+ #: includes/fs-plugin-info-dialog.php:806
859
+ msgid "Last Updated"
860
+ msgstr "עודכן לאחרונה"
861
+
862
+ #: includes/fs-plugin-info-dialog.php:810
863
+ msgctxt "x-ago"
864
+ msgid "%s ago"
865
+ msgstr "לפני %s"
866
+
867
+ #: includes/fs-plugin-info-dialog.php:819
868
+ msgid "Requires WordPress Version"
869
+ msgstr "Requires WordPress Version"
870
+
871
+ #: includes/fs-plugin-info-dialog.php:819
872
+ msgid "%s or higher"
873
+ msgstr "%s ומעלה"
874
+
875
+ #: includes/fs-plugin-info-dialog.php:825
876
+ msgid "Compatible up to"
877
+ msgstr "Compatible up to"
878
+
879
+ #: includes/fs-plugin-info-dialog.php:832
880
+ msgid "Downloaded"
881
+ msgstr "Downloaded"
882
+
883
+ #: includes/fs-plugin-info-dialog.php:835
884
+ msgid "%s time"
885
+ msgstr "פעם %s"
886
+
887
+ #: includes/fs-plugin-info-dialog.php:837
888
+ msgid "%s times"
889
+ msgstr "%s פעמים"
890
+
891
+ #: includes/fs-plugin-info-dialog.php:847
892
+ msgid "WordPress.org Plugin Page"
893
+ msgstr "WordPress.org Plugin Page"
894
+
895
+ #: includes/fs-plugin-info-dialog.php:854
896
+ msgid "Plugin Homepage"
897
+ msgstr "עמוד התוסף"
898
+
899
+ #: includes/fs-plugin-info-dialog.php861,
900
+ #: includes/fs-plugin-info-dialog.php:941
901
+ msgid "Donate to this plugin"
902
+ msgstr "Donate to this plugin"
903
+
904
+ #: includes/fs-plugin-info-dialog.php:867
905
+ msgid "Average Rating"
906
+ msgstr "דירוג ממוצע"
907
+
908
+ #: includes/fs-plugin-info-dialog.php:874
909
+ msgid "based on %s"
910
+ msgstr "מבוסס על %s"
911
+
912
+ #: includes/fs-plugin-info-dialog.php:878
913
+ msgid "%s rating"
914
+ msgstr "דרוג %s"
915
+
916
+ #: includes/fs-plugin-info-dialog.php:880
917
+ msgid "%s ratings"
918
+ msgstr "%s דרוגים"
919
+
920
+ #: includes/fs-plugin-info-dialog.php:894
921
+ msgid "%s star"
922
+ msgstr "כוכב %s"
923
+
924
+ #: includes/fs-plugin-info-dialog.php:896
925
+ msgid "%s stars"
926
+ msgstr "%s כוכבים"
927
+
928
+ #: includes/fs-plugin-info-dialog.php:907
929
+ msgid "Click to see reviews that provided a rating of %s"
930
+ msgstr "Click to see reviews that provided a rating of %s"
931
+
932
+ #: includes/fs-plugin-info-dialog.php:920
933
+ msgid "Contributors"
934
+ msgstr "תורמים"
935
+
936
+ #: includes/fs-plugin-info-dialog.php948,
937
+ #: includes/fs-plugin-info-dialog.php:950
938
+ msgid "Warning"
939
+ msgstr "Warning"
940
+
941
+ #: includes/fs-plugin-info-dialog.php:948
942
+ msgid "This plugin has not been tested with your current version of WordPress."
943
+ msgstr "This plugin has not been tested with your current version of WordPress."
944
+
945
+ #: includes/fs-plugin-info-dialog.php:950
946
+ msgid "This plugin has not been marked as compatible with your version of WordPress."
947
+ msgstr "This plugin has not been marked as compatible with your version of WordPress."
948
+
949
+ #: includes/fs-plugin-info-dialog.php:969
950
+ msgid "Paid add-on must be deployed to Freemius."
951
+ msgstr "Paid add-on must be deployed to Freemius."
952
+
953
+ #: includes/fs-plugin-info-dialog.php:970
954
+ msgid "Add-on must be deployed to WordPress.org or Freemius."
955
+ msgstr "Add-on must be deployed to WordPress.org or Freemius."
956
+
957
+ #: templates/account.php:53
958
+ msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
959
+ msgstr "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
960
+
961
+ #: templates/account.php:54
962
+ msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
963
+ msgstr "ביטול הניסיון יחסום מייד את הפיטצ'רים שהינם בתשלום. האם ברצונך בכל זאת להמשיך?"
964
+
965
+ #: templates/account.php:55
966
+ msgid "You can still enjoy all %s features but you will not have access to %s updates and support."
967
+ msgstr "You can still enjoy all %s features but you will not have access to %s updates and support."
968
+
969
+ #: templates/account.php:56
970
+ msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
971
+ msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
972
+
973
+ #. translators: %s: Plan title (e.g. "Professional")
974
+ #: templates/account.php:58
975
+ msgid "Activate %s Plan"
976
+ msgstr "הפעל חבילה %s"
977
+
978
+ #. translators: %s: Time period (e.g. Auto renews in "2 months")
979
+ #: templates/account.php:61
980
+ msgid "Auto renews in %s"
981
+ msgstr "עדכן אוטומטית בעוד %s"
982
+
983
+ #. translators: %s: Time period (e.g. Expires in "2 months")
984
+ #: templates/account.php:63
985
+ msgid "Expires in %s"
986
+ msgstr "פג תוקף בעוד %s"
987
+
988
+ #: templates/account.php:64
989
+ msgctxt "as synchronize license"
990
+ msgid "Sync License"
991
+ msgstr "סינכרן רישיון"
992
+
993
+ #: templates/account.php:65
994
+ msgid "Cancel Trial"
995
+ msgstr "ביט"
996
+
997
+ #: templates/account.php:66
998
+ msgid "Change Plan"
999
+ msgstr "שינוי חבילה"
1000
+
1001
+ #: templates/account.php:67
1002
+ msgctxt "verb"
1003
+ msgid "Upgrade"
1004
+ msgstr "שדרג"
1005
+
1006
+ #: templates/account.php:69
1007
+ msgctxt "verb"
1008
+ msgid "Downgrade"
1009
+ msgstr "שנמך"
1010
+
1011
+ #: templates/account.php71, templates/add-ons.php126,
1012
+ #: templates/plugin-info/features.php:72
1013
+ msgid "Free"
1014
+ msgstr "חינם"
1015
+
1016
+ #: templates/account.php:72
1017
+ msgid "Activate"
1018
+ msgstr "הפעלה"
1019
+
1020
+ #: templates/account.php73, templates/debug.php311,
1021
+ #: includes/customizer/class-fs-customizer-upsell-control.php:106
1022
+ msgctxt "as product pricing plan"
1023
+ msgid "Plan"
1024
+ msgstr "חבילה"
1025
+
1026
+ #: templates/account.php:87
1027
+ msgid "Free Trial"
1028
+ msgstr "ניסיון חינם"
1029
+
1030
+ #: templates/account.php:98
1031
+ msgid "Account Details"
1032
+ msgstr "פרטי חשבון"
1033
+
1034
+ #: templates/account.php:108
1035
+ 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?"
1036
+ 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?"
1037
+
1038
+ #: templates/account.php:110
1039
+ 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?"
1040
+ 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?"
1041
+
1042
+ #: templates/account.php:113
1043
+ msgid "Delete Account"
1044
+ msgstr "מחיקת חשבון"
1045
+
1046
+ #: templates/account.php:124
1047
+ msgid "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
1048
+ msgstr "דיאקטיבציה של הרישיון תחסום את כל הפיטצ'רים שהם בתשלום. עם זאת, תיתאפשר הפעלה של הרישיון על אתר אחר. האם ברצונך להמשיך?"
1049
+
1050
+ #: templates/account.php125, templates/account.php:590
1051
+ msgid "Deactivate License"
1052
+ msgstr "שיחרור רישיון"
1053
+
1054
+ #: templates/account.php:142
1055
+ msgid "Are you sure you want to proceed?"
1056
+ msgstr "האם את/ה בטוח רוצה להמשיך?"
1057
+
1058
+ #: templates/account.php:142
1059
+ msgid "Cancel Subscription"
1060
+ msgstr "בטל מנוי"
1061
 
1062
+ #: templates/account.php:171
1063
+ msgctxt "as synchronize"
1064
+ msgid "Sync"
1065
+ msgstr "סינכרון"
1066
 
1067
+ #: templates/account.php185, templates/debug.php:389
1068
+ msgid "Name"
1069
+ msgstr "שם"
 
1070
 
1071
+ #: templates/account.php191, templates/debug.php:390
1072
+ msgid "Email"
1073
+ msgstr "דוא\"ל"
1074
 
1075
+ #: templates/account.php198, templates/debug.php310, templates/debug.php:419
1076
+ msgid "User ID"
1077
+ msgstr "מזהה משתמש"
1078
 
1079
+ #: templates/account.php:205
1080
+ msgid "Site ID"
1081
+ msgstr "מזהה אתר"
1082
 
1083
+ #: templates/account.php:208
1084
+ msgid "No ID"
1085
+ msgstr "אין מזהה"
1086
 
1087
+ #: templates/account.php213, templates/debug.php225, templates/debug.php312,
1088
+ #: templates/debug.php355, templates/debug.php:392
1089
+ msgid "Public Key"
1090
+ msgstr "מפתח פומבי"
1091
 
1092
+ #: templates/account.php219, templates/debug.php313, templates/debug.php356,
1093
+ #: templates/debug.php:393
1094
+ msgid "Secret Key"
1095
+ msgstr "מפתח סודי"
1096
 
1097
+ #: templates/account.php:222
1098
+ msgctxt "as secret encryption key missing"
1099
+ msgid "No Secret"
1100
+ msgstr "אין מפתח סודי"
1101
 
1102
+ #: templates/account.php:241
1103
+ msgid "Trial"
1104
+ msgstr "ניסיון"
1105
 
1106
+ #: templates/account.php257, templates/debug.php:424
1107
+ msgid "License Key"
1108
+ msgstr "License Key"
1109
 
1110
+ #: templates/account.php:287
1111
+ msgid "not verified"
1112
+ msgstr "לא מאומת"
1113
 
1114
+ #: templates/account.php:317
1115
+ msgid "Localhost"
1116
+ msgstr "שרת לוקאלי"
1117
 
1118
+ #: templates/account.php:321
1119
+ msgctxt "as 5 licenses left"
1120
+ msgid "%s left"
1121
+ msgstr "נשארו %s"
1122
 
1123
+ #: templates/account.php:322
1124
+ msgid "Last license"
1125
+ msgstr "רישיון אחרון"
1126
 
1127
+ #: templates/account.php:352
1128
+ msgid "Premium version"
1129
+ msgstr "גירסת פרימיום"
1130
 
1131
+ #: templates/account.php:354
1132
+ msgid "Free version"
1133
+ msgstr "גירסה חינאמית"
1134
 
1135
+ #: templates/account.php:366
1136
+ msgid "Verify Email"
1137
+ msgstr "אמת כתובת דוא\"ל"
1138
 
1139
+ #: templates/account.php:377
1140
+ msgid "Download %s Version"
1141
+ msgstr "הורד גרסת %s"
1142
 
1143
+ #: templates/account.php391, templates/account.php:442
1144
+ msgctxt "verb"
1145
+ msgid "Show"
1146
+ msgstr "הצג"
1147
 
1148
+ #: templates/account.php:405
1149
+ msgid "What is your %s?"
1150
+ msgstr "מה ה%s שלך?"
1151
 
1152
+ #: templates/account.php413, templates/account/billing.php:27
1153
+ msgctxt "verb"
1154
+ msgid "Edit"
1155
+ msgstr "ערוך"
1156
 
1157
+ #: templates/account.php:436
1158
+ msgctxt "verb"
1159
+ msgid "Hide"
1160
+ msgstr "הסתר"
1161
 
1162
+ #: templates/account.php472, templates/debug.php218, templates/debug.php308,
1163
+ #: templates/debug.php351, templates/debug.php388, templates/debug.php417,
1164
+ #: templates/debug.php496, templates/account/payments.php35,
1165
+ #: templates/debug/logger.php:21
1166
+ msgid "ID"
1167
+ msgstr "מזהה"
1168
 
1169
+ #: templates/account.php:475
1170
+ msgctxt "as software license"
1171
+ msgid "License"
1172
+ msgstr "רישיון"
1173
 
1174
+ #: templates/account.php:550
1175
+ msgid "Cancelled"
1176
+ msgstr "בוטל"
 
1177
 
1178
+ #: templates/account.php:555
1179
+ msgid "Expired"
1180
+ msgstr "פג תוקף"
1181
 
1182
+ #: templates/account.php:560
1183
+ msgid "No expiration"
1184
+ msgstr "ללא תפוגה"
 
1185
 
1186
+ #: templates/account.php668, templates/account.php:724
1187
+ msgid "Activate this add-on"
1188
+ msgstr "הפעל את ההרחבה"
 
1189
 
1190
+ #: templates/account.php745, templates/debug.php:336
1191
+ msgctxt "verb"
1192
+ msgid "Delete"
1193
+ msgstr "מחק"
1194
 
1195
+ #: templates/add-ons.php:36
1196
+ msgid "Add Ons for %s"
1197
+ msgstr "הרחבות עבור %s"
 
1198
 
1199
+ #: templates/add-ons.php:44
1200
+ 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."
1201
+ 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."
 
1202
 
1203
+ #: templates/add-ons.php:135
1204
+ msgid "View details"
1205
+ msgstr "פרטים נוספים"
 
1206
 
1207
+ #: templates/admin-notice.php13, templates/forms/license-activation.php73,
1208
+ #: templates/forms/resend-key.php:77
1209
+ msgctxt "as close a window"
1210
+ msgid "Dismiss"
1211
+ msgstr "סגירה"
1212
 
1213
+ #: templates/auto-installation.php:44
1214
+ msgid "%s sec"
1215
+ msgstr "%s שניות"
1216
 
1217
+ #: templates/auto-installation.php:82
1218
+ msgid "Automatic Installation"
1219
+ msgstr "התקנה אוטומטית"
1220
 
1221
+ #: templates/auto-installation.php:92
1222
+ 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."
1223
+ 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."
1224
 
1225
+ #: templates/auto-installation.php:103
1226
+ 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."
1227
+ 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."
1228
 
1229
+ #: templates/auto-installation.php:108
1230
+ msgid "Cancel Installation"
1231
+ msgstr "בטל התקנה"
1232
 
1233
+ #: templates/checkout.php:168
1234
+ msgid "Checkout"
1235
+ msgstr "Checkout"
1236
 
1237
+ #: templates/checkout.php:168
1238
+ msgid "PCI compliant"
1239
+ msgstr "PCI compliant"
1240
 
1241
+ #: templates/connect.php:128
1242
+ msgid "Allow & Continue"
1243
+ msgstr "אפשר\\י והמשכ\\י"
1244
 
1245
+ #: templates/connect.php:131
1246
+ msgid "Re-send activation email"
1247
+ msgstr "שליחה חוזרת של מייל האקטיבציה"
1248
 
1249
+ #: templates/connect.php:135
1250
+ msgid "Thanks %s!"
1251
+ msgstr "תודה %s!"
1252
 
1253
+ #: templates/connect.php143, templates/forms/license-activation.php:43
1254
+ msgid "Agree & Activate License"
1255
+ msgstr "הסכמה והפעלת רישיון"
1256
 
1257
+ #: templates/connect.php147, templates/connect.php:170
1258
+ msgctxt "greeting"
1259
+ msgid "Hey %s,"
1260
+ msgstr "היי %s,"
1261
 
1262
+ #: templates/connect.php:148
1263
+ msgid "Thanks for purchasing %s! To get started, please enter your license key:"
1264
+ msgstr "Thanks for purchasing %s! To get started, please enter your license key:"
1265
 
1266
+ #: templates/connect.php:154
1267
+ msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
1268
+ msgstr "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
1269
 
1270
+ #: templates/connect.php:159
1271
+ msgid "Please help us improve %1$s! If you opt in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
1272
+ msgstr "Please help us improve %1$s! If you opt in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
1273
 
1274
+ #: templates/connect.php189, templates/forms/license-activation.php:46
1275
+ msgid "License key"
1276
+ msgstr "מפתח רישיון"
1277
 
1278
+ #: templates/connect.php192, templates/forms/license-activation.php:19
1279
+ msgid "Can't find your license key?"
1280
+ msgstr "האם אינך מוצא את מפתח הרישיון?"
1281
 
1282
+ #: templates/connect.php199, templates/forms/deactivation/retry-skip.php:20
1283
+ msgctxt "verb"
1284
+ msgid "Skip"
1285
+ msgstr "דלג"
1286
 
1287
+ #: templates/connect.php:228
1288
+ msgid "Your Profile Overview"
1289
+ msgstr "פרטים כלליים על הפרופיל"
1290
 
1291
+ #: templates/connect.php:229
1292
+ msgid "Name and email address"
1293
+ msgstr "שם וכתובת דו\"אל"
1294
 
1295
+ #: templates/connect.php:234
1296
+ msgid "Your Site Overview"
1297
+ msgstr "פרטים כלליים על האתר"
1298
 
1299
+ #: templates/connect.php:235
1300
+ msgid "Site URL, WP version, PHP info, plugins & themes"
1301
+ msgstr "כתובת אתר, גרסת וורדפרס, פרטי PHP, תוספים ותבניות"
1302
 
1303
+ #: templates/connect.php:240
1304
+ msgid "Admin Notices"
1305
+ msgstr "התראות מנהל"
1306
 
1307
+ #: templates/connect.php241, templates/connect.php:263
1308
+ msgid "Updates, announcements, marketing, no spam"
1309
+ msgstr "עדכונים, הכרזות, הודעות שיווקיות, ללא דואר זבל"
 
1310
 
1311
+ #: templates/connect.php:246
1312
+ msgid "Current %s Events"
1313
+ msgstr "Current %s Events"
 
1314
 
1315
+ #: templates/connect.php:247
1316
+ msgid "Activation, deactivation and uninstall"
1317
+ msgstr "הפעלה, כיבוי והסרה"
 
1318
 
1319
+ #: templates/connect.php:262
1320
+ msgid "Newsletter"
1321
+ msgstr "ניוסלטר"
 
1322
 
1323
+ #: templates/connect.php279, templates/forms/license-activation.php:38
1324
+ 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."
1325
+ 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."
 
1326
 
1327
+ #: templates/connect.php:284
1328
+ msgid "What permissions are being granted?"
1329
+ msgstr "מהן ההרשאות המוענקות?"
 
1330
 
1331
+ #: templates/connect.php:305
1332
+ msgid "Don't have a license key?"
1333
+ msgstr "האם אין ברשותך מפתח רישיון?"
1334
 
1335
+ #: templates/connect.php:306
1336
+ msgid "Activate Free Version"
1337
+ msgstr "הפעלת גירסה חינאמית"
 
1338
 
1339
+ #: templates/connect.php:308
1340
+ msgid "Have a license key?"
1341
+ msgstr "האם ברשותך רישיון?"
 
1342
 
1343
+ #: templates/connect.php:316
1344
+ msgid "Privacy Policy"
1345
+ msgstr "מדיניות פרטיות"
1346
 
1347
+ #: templates/connect.php:318
1348
+ msgid "Terms of Service"
1349
+ msgstr "תנאי השירות"
1350
 
1351
+ #: templates/connect.php:436
1352
+ msgctxt "as in the process of sending an email"
1353
+ msgid "Sending email"
1354
+ msgstr "שולח דוא\"ל"
1355
 
1356
+ #: templates/connect.php:437
1357
+ msgctxt "as activating plugin"
1358
+ msgid "Activating"
1359
+ msgstr "מפעיל"
1360
 
1361
+ #: templates/contact.php:74
1362
+ msgid "Contact"
1363
+ msgstr "Contact"
1364
 
1365
+ #: templates/debug.php:17
1366
+ msgctxt "as turned off"
1367
+ msgid "Off"
1368
+ msgstr "כבוי"
1369
 
1370
+ #: templates/debug.php:18
1371
+ msgctxt "as turned on"
1372
+ msgid "On"
1373
+ msgstr "דלוק"
1374
 
1375
+ #: templates/debug.php:20
1376
+ msgid "SDK"
1377
+ msgstr "SDK"
1378
 
1379
+ #: templates/debug.php:24
1380
+ msgctxt "as code debugging"
1381
+ msgid "Debugging"
1382
+ msgstr "דיבוג"
1383
 
1384
+ #: templates/debug.php54, templates/debug.php226, templates/debug.php:314
1385
+ msgid "Actions"
1386
+ msgstr "פעולות"
1387
 
1388
+ #: templates/debug.php:64
1389
+ msgid "Are you sure you want to delete all Freemius data?"
1390
+ msgstr "Are you sure you want to delete all Freemius data?"
1391
 
1392
+ #: templates/debug.php:64
1393
+ msgid "Delete All Accounts"
1394
+ msgstr "מחיקת כל החשבונות"
1395
 
1396
+ #: templates/debug.php:71
1397
+ msgid "Clear API Cache"
1398
+ msgstr "ניקוי מטמון ה-API"
1399
 
1400
+ #: templates/debug.php:78
1401
+ msgid "Sync Data From Server"
1402
+ msgstr "סנכרון מידע מהשרת"
1403
 
1404
+ #: templates/debug.php:82
1405
+ msgid "Load DB Option"
1406
+ msgstr "Load DB Option"
1407
 
1408
+ #: templates/debug.php:85
1409
+ msgid "Set DB Option"
1410
+ msgstr "Set DB Option"
1411
 
1412
+ #: templates/debug.php:162
1413
+ msgid "Key"
1414
+ msgstr "Key"
1415
 
1416
+ #: templates/debug.php:163
1417
+ msgid "Value"
1418
+ msgstr "Value"
1419
 
1420
+ #: templates/debug.php:179
1421
+ msgctxt "as software development kit versions"
1422
+ msgid "SDK Versions"
1423
+ msgstr "גרסאות SDK"
1424
 
1425
+ #: templates/debug.php:184
1426
+ msgid "SDK Path"
1427
+ msgstr "מיקום SDK"
1428
 
1429
+ #: templates/debug.php185, templates/debug.php:224
1430
+ msgid "Module Path"
1431
+ msgstr "Module Path"
1432
 
1433
+ #: templates/debug.php:186
1434
+ msgid "Is Active"
1435
+ msgstr "האם פעיל"
 
1436
 
1437
+ #: templates/debug.php214, templates/debug/plugins-themes-sync.php:35
1438
+ msgid "Plugins"
1439
+ msgstr "תוספים"
1440
 
1441
+ #: templates/debug.php214, templates/debug/plugins-themes-sync.php:56
1442
+ msgid "Themes"
1443
+ msgstr "תבניות"
1444
 
1445
+ #: templates/debug.php219, templates/debug.php309, templates/debug.php353,
1446
+ #: templates/debug/scheduled-crons.php:81
1447
+ msgid "Slug"
1448
+ msgstr "מזהה כתובת"
1449
 
1450
+ #: templates/debug.php221, templates/debug.php:352
1451
+ msgid "Title"
1452
+ msgstr "כותרת"
1453
 
1454
+ #: templates/debug.php:222
1455
+ msgctxt "as application program interface"
1456
+ msgid "API"
1457
+ msgstr "API"
1458
 
1459
+ #: templates/debug.php:223
1460
+ msgid "Freemius State"
1461
+ msgstr "מצב פרימיוס"
1462
 
1463
+ #: templates/debug.php:255
1464
+ msgctxt "as connection was successful"
1465
+ msgid "Connected"
1466
+ msgstr "מחובר"
1467
 
1468
+ #: templates/debug.php:256
1469
+ msgctxt "as connection blocked"
1470
+ msgid "Blocked"
1471
+ msgstr "חסום"
1472
 
1473
+ #: templates/debug.php:277
1474
+ msgid "Simulate Trial"
1475
+ msgstr "Simulate Trial"
1476
 
1477
+ #: templates/debug.php:302
1478
+ msgid "%s Installs"
1479
+ msgstr "%s התקנות"
1480
 
1481
+ #: templates/debug.php:304
1482
+ msgctxt "like websites"
1483
+ msgid "Sites"
1484
+ msgstr "אתרים"
1485
 
1486
+ #: templates/debug.php:347
1487
+ msgid "Add Ons of module %s"
1488
+ msgstr "Add Ons of module %s"
1489
 
1490
+ #: templates/debug.php:384
1491
+ msgid "Users"
1492
+ msgstr "משתמשים"
1493
 
1494
+ #: templates/debug.php:391
1495
+ msgid "Verified"
1496
+ msgstr "מאומת"
1497
 
1498
+ #: templates/debug.php:413
1499
+ msgid "%s Licenses"
1500
+ msgstr "%s Licenses"
1501
 
1502
+ #: templates/debug.php:418
1503
+ msgid "Plugin ID"
1504
+ msgstr "Plugin ID"
1505
 
1506
+ #: templates/debug.php:420
1507
+ msgid "Plan ID"
1508
+ msgstr "Plan ID"
1509
 
1510
+ #: templates/debug.php:421
1511
+ msgid "Quota"
1512
+ msgstr "Quota"
1513
 
1514
+ #: templates/debug.php:422
1515
+ msgid "Activated"
1516
+ msgstr "Activated"
 
1517
 
1518
+ #: templates/debug.php:423
1519
+ msgid "Blocking"
1520
+ msgstr "Blocking"
1521
 
1522
+ #: templates/debug.php:425
1523
+ msgctxt "as expiration date"
1524
+ msgid "Expiration"
1525
+ msgstr "תפוגה"
1526
 
1527
+ #: templates/debug.php:454
1528
+ msgid "Debug Log"
1529
+ msgstr "Debug Log"
1530
 
1531
+ #: templates/debug.php:458
1532
+ msgid "All Types"
1533
+ msgstr "כל הסוגים"
 
1534
 
1535
+ #: templates/debug.php:465
1536
+ msgid "All Requests"
1537
+ msgstr "כל הבקשות"
1538
 
1539
+ #: templates/debug.php470, templates/debug.php499,
1540
+ #: templates/debug/logger.php:25
1541
+ msgid "File"
1542
+ msgstr "קובץ"
1543
 
1544
+ #: templates/debug.php471, templates/debug.php497,
1545
+ #: templates/debug/logger.php:23
1546
+ msgid "Function"
1547
+ msgstr "פונקציה"
1548
 
1549
+ #: templates/debug.php:472
1550
+ msgid "Process ID"
1551
+ msgstr "Process ID"
1552
 
1553
+ #: templates/debug.php:473
1554
+ msgid "Logger"
1555
+ msgstr "Logger"
1556
 
1557
+ #: templates/debug.php474, templates/debug.php498,
1558
+ #: templates/debug/logger.php:24
1559
+ msgid "Message"
1560
+ msgstr "הודעה"
1561
 
1562
+ #: templates/debug.php:476
1563
+ msgid "Filter"
1564
+ msgstr "פילטר"
1565
 
1566
+ #: templates/debug.php:484
1567
+ msgid "Download"
1568
+ msgstr "הורדה"
1569
 
1570
+ #: templates/debug.php495, templates/debug/logger.php:22
1571
+ msgid "Type"
1572
+ msgstr "סוג"
1573
 
1574
+ #: templates/debug.php500, templates/debug/logger.php:26
1575
+ msgid "Timestamp"
1576
+ msgstr "Timestamp"
1577
 
1578
+ #: templates/secure-https-header.php:28
1579
+ msgid "Secure HTTPS %s page, running from an external domain"
1580
+ msgstr "Secure HTTPS %s page, running from an external domain"
1581
 
1582
+ #: includes/customizer/class-fs-customizer-support-section.php55,
1583
+ #: templates/plugin-info/features.php:43
1584
+ msgid "Support"
1585
+ msgstr "תמיכה"
1586
 
1587
+ #: includes/debug/class-fs-debug-bar-panel.php48,
1588
+ #: templates/debug/api-calls.php54, templates/debug/logger.php:62
1589
+ msgctxt "milliseconds"
1590
+ msgid "ms"
1591
+ msgstr "ms"
1592
 
1593
+ #: includes/debug/debug-bar-start.php:41
1594
+ msgid "Freemius API"
1595
+ msgstr "Freemius API"
1596
 
1597
+ #: includes/debug/debug-bar-start.php:42
1598
+ msgid "Requests"
1599
+ msgstr "Requests"
1600
 
1601
+ #: templates/account/billing.php:28
1602
+ msgctxt "verb"
1603
+ msgid "Update"
1604
+ msgstr "עדכן"
1605
 
1606
+ #: templates/account/billing.php:39
1607
+ msgid "Billing"
1608
+ msgstr "בילינג"
1609
 
1610
+ #: templates/account/billing.php44, templates/account/billing.php:44
1611
+ msgid "Business name"
1612
+ msgstr "שם עסק"
1613
 
1614
+ #: templates/account/billing.php45, templates/account/billing.php:45
1615
+ msgid "Tax / VAT ID"
1616
+ msgstr "Tax / VAT ID"
1617
 
1618
+ #: templates/account/billing.php48, templates/account/billing.php48,
1619
+ #: templates/account/billing.php49, templates/account/billing.php:49
1620
+ msgid "Address Line %d"
1621
+ msgstr "כתובת %s"
1622
 
1623
+ #: templates/account/billing.php52, templates/account/billing.php:52
1624
+ msgid "City"
1625
+ msgstr "עיר"
1626
 
1627
+ #: templates/account/billing.php52, templates/account/billing.php:52
1628
+ msgid "Town"
1629
+ msgstr "כפר"
 
1630
 
1631
+ #: templates/account/billing.php53, templates/account/billing.php:53
1632
+ msgid "ZIP / Postal Code"
1633
+ msgstr "מיקוד / תא דואר"
1634
 
1635
+ #: templates/account/billing.php:308
1636
+ msgid "Country"
1637
+ msgstr "מדינה"
1638
 
1639
+ #: templates/account/billing.php:310
1640
+ msgid "Select Country"
1641
+ msgstr "בחר מדינה"
1642
 
1643
+ #: templates/account/billing.php317, templates/account/billing.php:318
1644
+ msgid "State"
1645
+ msgstr "מחוז/מדינה"
1646
 
1647
+ #: templates/account/billing.php317, templates/account/billing.php:318
1648
+ msgid "Province"
1649
+ msgstr "פרובינציה"
1650
 
1651
+ #: templates/account/payments.php:29
1652
+ msgid "Payments"
1653
+ msgstr "תשלומים"
1654
 
1655
+ #: templates/account/payments.php:36
1656
+ msgid "Date"
1657
+ msgstr "תאריך"
1658
 
1659
+ #: templates/account/payments.php:37
1660
+ msgid "Amount"
1661
+ msgstr "סכום"
1662
 
1663
+ #: templates/account/payments.php38, templates/account/payments.php:50
1664
+ msgid "Invoice"
1665
+ msgstr "חשבונית"
1666
 
1667
+ #: templates/debug/api-calls.php:56
1668
+ msgid "API"
1669
+ msgstr "API"
1670
 
1671
+ #: templates/debug/api-calls.php:68
1672
+ msgid "Method"
1673
+ msgstr "Method"
1674
 
1675
+ #: templates/debug/api-calls.php:69
1676
+ msgid "Code"
1677
+ msgstr "Code"
1678
 
1679
+ #: templates/debug/api-calls.php:70
1680
+ msgid "Length"
1681
+ msgstr "Length"
1682
 
1683
+ #: templates/debug/api-calls.php:71
1684
+ msgctxt "as file/folder path"
1685
+ msgid "Path"
1686
+ msgstr "נתיב"
1687
 
1688
+ #: templates/debug/api-calls.php:73
1689
+ msgid "Body"
1690
+ msgstr "Body"
1691
 
1692
+ #: templates/debug/api-calls.php:75
1693
+ msgid "Result"
1694
+ msgstr "Result"
1695
 
1696
+ #: templates/debug/api-calls.php:76
1697
+ msgid "Start"
1698
+ msgstr "Start"
 
1699
 
1700
+ #: templates/debug/api-calls.php:77
1701
+ msgid "End"
1702
+ msgstr "End"
1703
 
1704
+ #: templates/debug/logger.php:15
1705
+ msgid "Log"
1706
+ msgstr "Log"
1707
 
1708
+ #. translators: %s: time period (e.g. In "2 hours")
1709
+ #: templates/debug/plugins-themes-sync.php18,
1710
+ #: templates/debug/scheduled-crons.php:92
1711
+ msgid "In %s"
1712
+ msgstr "בעוד %s"
1713
 
1714
+ #. translators: %s: time period (e.g. "2 hours" ago)
1715
+ #: templates/debug/plugins-themes-sync.php20,
1716
+ #: templates/debug/scheduled-crons.php:94
1717
+ msgid "%s ago"
1718
+ msgstr "לפני %s"
1719
 
1720
+ #: templates/debug/plugins-themes-sync.php21,
1721
+ #: templates/debug/scheduled-crons.php:75
1722
+ msgctxt "seconds"
1723
+ msgid "sec"
1724
+ msgstr "sec"
1725
 
1726
+ #: templates/debug/plugins-themes-sync.php:23
1727
+ msgid "Plugins & Themes Sync"
1728
+ msgstr "Plugins & Themes Sync"
 
1729
 
1730
+ #: templates/debug/plugins-themes-sync.php:28
1731
+ msgid "Total"
1732
+ msgstr "Total"
 
1733
 
1734
+ #: templates/debug/plugins-themes-sync.php29,
1735
+ #: templates/debug/scheduled-crons.php:85
1736
+ msgid "Last"
1737
+ msgstr "Last"
1738
 
1739
+ #: templates/debug/scheduled-crons.php:77
1740
+ msgid "Scheduled Crons"
1741
+ msgstr "Scheduled Crons"
1742
 
1743
+ #: templates/debug/scheduled-crons.php:82
1744
+ msgid "Module"
1745
+ msgstr "מודול"
1746
 
1747
+ #: templates/debug/scheduled-crons.php:83
1748
+ msgid "Module Type"
1749
+ msgstr "סוג מודול"
1750
 
1751
+ #: templates/debug/scheduled-crons.php:84
1752
+ msgid "Cron Type"
1753
+ msgstr "Cron Type"
1754
 
1755
+ #: templates/debug/scheduled-crons.php:86
1756
+ msgid "Next"
1757
+ msgstr "Next"
 
1758
 
1759
+ #: templates/forms/affiliation.php:81
1760
+ msgid "Non-expiring"
1761
+ msgstr "Non-expiring"
 
1762
 
1763
+ #: templates/forms/affiliation.php:84
1764
+ msgid "Apply to become an affiliate"
1765
+ msgstr "Apply to become an affiliate"
 
1766
 
1767
+ #: templates/forms/affiliation.php:103
1768
+ msgid "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
1769
+ msgstr "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
 
1770
 
1771
+ #: templates/forms/affiliation.php:114
1772
+ 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."
1773
+ 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."
 
1774
 
1775
+ #: templates/forms/affiliation.php:117
1776
+ msgid "Your affiliation account was temporarily suspended."
1777
+ msgstr "Your affiliation account was temporarily suspended."
 
1778
 
1779
+ #: templates/forms/affiliation.php:120
1780
+ 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."
1781
+ 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."
1782
 
1783
+ #: templates/forms/affiliation.php:123
1784
+ msgid "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
1785
+ msgstr "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
 
1786
 
1787
+ #: templates/forms/affiliation.php:136
1788
+ msgid "Like the %s? Become our ambassador and earn cash ;-)"
1789
+ msgstr "Like the %s? Become our ambassador and earn cash ;-)"
 
1790
 
1791
+ #: templates/forms/affiliation.php:137
1792
+ msgid "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
1793
+ msgstr "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
 
1794
 
1795
+ #: templates/forms/affiliation.php:140
1796
+ msgid "Program Summary"
1797
+ msgstr "Program Summary"
1798
 
1799
+ #: templates/forms/affiliation.php:142
1800
+ msgid "%s commission when a customer purchases a new license."
1801
+ msgstr "%s commission when a customer purchases a new license."
 
1802
 
1803
+ #: templates/forms/affiliation.php:144
1804
+ msgid "Get commission for automated subscription renewals."
1805
+ msgstr "Get commission for automated subscription renewals."
1806
 
1807
+ #: templates/forms/affiliation.php:147
1808
+ msgid "%s tracking cookie after the first visit to maximize earnings potential."
1809
+ msgstr "%s tracking cookie after the first visit to maximize earnings potential."
1810
 
1811
+ #: templates/forms/affiliation.php:150
1812
+ msgid "Unlimited commissions."
1813
+ msgstr "Unlimited commissions."
1814
 
1815
+ #: templates/forms/affiliation.php:152
1816
+ msgid "%s minimum payout amount."
1817
+ msgstr "%s minimum payout amount."
1818
 
1819
+ #: templates/forms/affiliation.php:153
1820
+ msgid "Payouts are in USD and processed monthly via PayPal."
1821
+ msgstr "Payouts are in USD and processed monthly via PayPal."
1822
 
1823
+ #: templates/forms/affiliation.php:154
1824
+ msgid "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
1825
+ msgstr "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
1826
 
1827
+ #: templates/forms/affiliation.php:157
1828
+ msgid "Affiliate"
1829
+ msgstr "Affiliate"
1830
 
1831
+ #: templates/forms/affiliation.php160, templates/forms/resend-key.php:23
1832
+ msgid "Email address"
1833
+ msgstr "כתובת דוא\"ל"
1834
 
1835
+ #: templates/forms/affiliation.php:164
1836
+ msgid "Full name"
1837
+ msgstr "Full name"
1838
 
1839
+ #: templates/forms/affiliation.php:168
1840
+ msgid "PayPal account email address"
1841
+ msgstr "PayPal account email address"
1842
 
1843
+ #: templates/forms/affiliation.php:172
1844
+ msgid "Where are you going to promote the %s?"
1845
+ msgstr "Where are you going to promote the %s?"
1846
 
1847
+ #: templates/forms/affiliation.php:174
1848
+ msgid "Enter the domain of your website or other websites from where you plan to promote the %s."
1849
+ msgstr "Enter the domain of your website or other websites from where you plan to promote the %s."
1850
 
1851
+ #: templates/forms/affiliation.php:176
1852
+ msgid "Add another domain"
1853
+ msgstr "Add another domain"
1854
 
1855
+ #: templates/forms/affiliation.php:180
1856
+ msgid "Extra Domains"
1857
+ msgstr "Extra Domains"
1858
 
1859
+ #: templates/forms/affiliation.php:181
1860
+ msgid "Extra domains where you will be marketing the product from."
1861
+ msgstr "Extra domains where you will be marketing the product from."
1862
 
1863
+ #: templates/forms/affiliation.php:191
1864
+ msgid "Promotion methods"
1865
+ msgstr "Promotion methods"
1866
 
1867
+ #: templates/forms/affiliation.php:194
1868
+ msgid "Social media (Facebook, Twitter, etc.)"
1869
+ msgstr "Social media (Facebook, Twitter, etc.)"
1870
 
1871
+ #: templates/forms/affiliation.php:198
1872
+ msgid "Mobile apps"
1873
+ msgstr "Mobile apps"
1874
 
1875
+ #: templates/forms/affiliation.php:202
1876
+ msgid "Website, email, and social media statistics (optional)"
1877
+ msgstr "Website, email, and social media statistics (optional)"
1878
 
1879
+ #: templates/forms/affiliation.php:205
1880
+ 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)."
1881
+ 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)."
1882
 
1883
+ #: templates/forms/affiliation.php:209
1884
+ msgid "How will you promote us?"
1885
+ msgstr "How will you promote us?"
1886
 
1887
+ #: templates/forms/affiliation.php:212
1888
+ msgid "Please provide details on how you intend to promote %s (please be as specific as possible)."
1889
+ msgstr "Please provide details on how you intend to promote %s (please be as specific as possible)."
1890
 
1891
+ #: templates/forms/affiliation.php218, templates/forms/resend-key.php:22
1892
+ msgid "Cancel"
1893
+ msgstr "בטל"
1894
 
1895
+ #: templates/forms/affiliation.php:220
1896
+ msgid "Become an affiliate"
1897
+ msgstr "Become an affiliate"
1898
 
1899
+ #: templates/forms/affiliation.php:275
1900
+ msgid "Email address is required."
1901
+ msgstr "Email address is required."
1902
 
1903
+ #: templates/forms/affiliation.php:281
1904
+ msgid "PayPal email address is required."
1905
+ msgstr "PayPal email address is required."
1906
 
1907
+ #: templates/forms/affiliation.php:291
1908
+ msgid "Domain is required."
1909
+ msgstr "Domain is required."
1910
 
1911
+ #: templates/forms/affiliation.php294, templates/forms/affiliation.php:308
1912
+ msgid "Invalid domain"
1913
+ msgstr "Invalid domain"
1914
 
1915
+ #: templates/forms/affiliation.php:364
1916
+ msgid "Processing"
1917
+ msgstr "Processing"
 
1918
 
1919
+ #: templates/forms/license-activation.php:20
1920
+ msgid "Please enter the license key that you received in the email right after the purchase:"
1921
+ msgstr "אנא הזן את הרישיון שקיבלת לתיבת הדואל שלך לאחר השלמת הרכישה."
 
1922
 
1923
+ #: templates/forms/license-activation.php:25
1924
+ msgid "Update License"
1925
+ msgstr "עדכון רישיון"
 
1926
 
1927
+ #: templates/forms/optout.php:30
1928
+ msgctxt "verb"
1929
+ msgid "Opt Out"
1930
+ msgstr "Opt Out"
1931
 
1932
+ #: templates/forms/optout.php:31
1933
+ msgctxt "verb"
1934
+ msgid "Opt In"
1935
+ msgstr "Opt In"
1936
 
1937
+ #: templates/forms/optout.php:32
1938
+ msgid "We appreciate your help in making the %s better by letting us track some usage data."
1939
+ msgstr "We appreciate your help in making the %s better by letting us track some usage data."
 
1940
 
1941
+ #: templates/forms/optout.php:33
1942
+ 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."
1943
+ 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."
1944
 
1945
+ #: templates/forms/optout.php:35
1946
+ msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
1947
+ msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
1948
 
1949
+ #: templates/forms/resend-key.php:21
1950
+ msgid "Send License Key"
1951
+ msgstr "שליחת מפתח רישיון"
1952
 
1953
+ #: templates/forms/resend-key.php:57
1954
+ msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
1955
+ msgstr "הזן את כתובת הדואל שאיתה שידרגת כדי לקבל את הרישיון שוב."
1956
 
1957
+ #: templates/forms/trial-start.php:22
1958
+ msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1959
+ msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1960
 
1961
+ #: templates/forms/trial-start.php:28
1962
+ 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."
1963
+ 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."
1964
 
1965
+ #: templates/js/style-premium-theme.php:37
1966
+ msgid "Premium"
1967
+ msgstr "Premium"
1968
 
1969
+ #: templates/plugin-info/description.php72,
1970
+ #: templates/plugin-info/screenshots.php:31
1971
+ msgid "Click to view full-size screenshot %d"
1972
+ msgstr "Click to view full-size screenshot %d"
1973
 
1974
+ #: templates/plugin-info/features.php:56
1975
+ msgid "Unlimited Updates"
1976
+ msgstr "עדכונים ללא הגבלה"
1977
 
1978
+ #: templates/forms/deactivation/contact.php:19
1979
+ msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
1980
+ msgstr "מצטערים על חוסר הנעימות, אנחנו כאן כדי לעזור אם תאפשר\\י זאת."
 
1981
 
1982
+ #: templates/forms/deactivation/contact.php:22
1983
+ msgid "Contact Support"
1984
+ msgstr "צור קשר"
1985
 
1986
+ #: templates/forms/deactivation/form.php:56
1987
+ msgid "Anonymous feedback"
1988
+ msgstr "פידבק אנונימי"
1989
 
1990
+ #: templates/forms/deactivation/form.php:63
1991
+ msgid "Deactivate"
1992
+ msgstr "כיבוי"
1993
 
1994
+ #: templates/forms/deactivation/form.php:65
1995
+ msgid "Activate %s"
1996
+ msgstr "Activate %s"
1997
 
1998
+ #: templates/forms/deactivation/form.php:76
1999
+ msgid "Quick feedback"
2000
+ msgstr "פידבק זריז"
2001
 
2002
+ #: templates/forms/deactivation/form.php:80
2003
+ msgid "If you have a moment, please let us know why you are %s"
2004
+ msgstr "If you have a moment, please let us know why you are %s"
2005
 
2006
+ #: templates/forms/deactivation/form.php:80
2007
+ msgid "deactivating"
2008
+ msgstr "deactivating"
2009
 
2010
+ #: templates/forms/deactivation/form.php:80
2011
+ msgid "switching"
2012
+ msgstr "switching"
2013
 
2014
+ #: templates/forms/deactivation/form.php:248
2015
+ msgid "Submit & %s"
2016
+ msgstr "Submit & %s"
2017
 
2018
+ #: templates/forms/deactivation/form.php:269
2019
+ msgid "Kindly tell us the reason so we can improve."
2020
+ msgstr "אנא שתף את הסיבה כדי שנוכל להשתפר."
2021
 
2022
+ #: templates/forms/deactivation/form.php:390
2023
+ msgid "Yes - %s"
2024
+ msgstr "Yes - %s"
2025
 
2026
+ #: templates/forms/deactivation/form.php:397
2027
+ msgid "Skip & %s"
2028
+ msgstr "דלג ו%s"
2029
 
2030
+ #: templates/forms/deactivation/retry-skip.php:21
2031
+ msgid "Click here to use the plugin anonymously"
2032
+ msgstr "Click here to use the plugin anonymously"
2033
 
2034
+ #: templates/forms/deactivation/retry-skip.php:23
2035
+ msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
2036
+ msgstr "אולי פספסת את זה אבל אינך חייב\\ת לשתף כל מידע איתנו, ביכולתך %s על שיתוף המידע."
freemius/languages/freemius.pot CHANGED
@@ -10,1812 +10,1267 @@ msgstr ""
10
  "Last-Translator: Vova Feldman <vova@freemius.com>\n"
11
  "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
12
  "X-Poedit-Basepath: ..\n"
13
- "X-Poedit-KeywordsList: _fs_text;_fs_echo;_fs_esc_attr;_fs_esc_attr_echo;_fs_esc_html;_fs_esc_html_echo;_fs_x:1,2c;_fs_ex:1,2c;_fs_esc_attr_x:1,2c;_fs_esc_html_x:1,2c;_fs_n:1,2;_fs_n_noop:1,2;_fs_nx:1,2,4c;_fs_nx_noop:1,2,3c\n"
14
  "X-Poedit-SearchPath-0: .\n"
15
  "X-Poedit-SearchPathExcluded-0: *.js\n"
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
 
19
- #: includes/i18n.php:37
20
- msgid "Account"
21
  msgstr ""
22
 
23
- #: includes/i18n.php:38
24
- msgid "Add-On"
25
- msgstr ""
26
-
27
- #: includes/i18n.php:39
28
- msgid "Contact Us"
29
- msgstr ""
30
-
31
- #: includes/i18n.php:40
32
- msgid "Contact Support"
33
- msgstr ""
34
-
35
- #: includes/i18n.php:41
36
- msgid "Change Ownership"
37
- msgstr ""
38
-
39
- #: includes/i18n.php:42
40
- msgid "Support"
41
- msgstr ""
42
-
43
- #: includes/i18n.php:43
44
- msgid "Support Forum"
45
- msgstr ""
46
-
47
- #: includes/i18n.php:44
48
- msgid "Add-Ons"
49
- msgstr ""
50
-
51
- #: includes/i18n.php:45
52
- msgctxt "verb"
53
- msgid "Upgrade"
54
- msgstr ""
55
-
56
- #: includes/i18n.php:46
57
- msgid "Awesome"
58
- msgstr ""
59
-
60
- #: includes/i18n.php:47
61
- msgctxt "noun"
62
- msgid "Pricing"
63
- msgstr ""
64
-
65
- #: includes/i18n.php:48
66
- msgctxt "noun"
67
- msgid "Price"
68
- msgstr ""
69
-
70
- #: includes/i18n.php:49
71
- msgid "Unlimited Updates"
72
- msgstr ""
73
-
74
- #: includes/i18n.php:50
75
- msgctxt "verb"
76
- msgid "Downgrade"
77
- msgstr ""
78
-
79
- #: includes/i18n.php:51
80
- msgctxt "verb"
81
- msgid "Cancel Subscription"
82
- msgstr ""
83
-
84
- #: includes/i18n.php:52
85
- msgid "Cancel Trial"
86
- msgstr ""
87
-
88
- #: includes/i18n.php:53
89
- msgid "Free Trial"
90
- msgstr ""
91
-
92
- #: includes/i18n.php:54
93
- msgid "Start my free %s"
94
- msgstr ""
95
-
96
- #: includes/i18n.php:55
97
- msgid "No commitment for %s - cancel anytime"
98
- msgstr ""
99
-
100
- #: includes/i18n.php:56
101
- msgid "After your free %s, pay as little as %s"
102
- msgstr ""
103
-
104
- #: includes/i18n.php:57
105
- msgid "Details"
106
- msgstr ""
107
-
108
- #: includes/i18n.php:58
109
- msgid "Account Details"
110
- msgstr ""
111
-
112
- #: includes/i18n.php:59
113
- msgctxt "verb"
114
- msgid "Delete"
115
- msgstr ""
116
-
117
- #: includes/i18n.php:60
118
- msgctxt "verb"
119
- msgid "Show"
120
- msgstr ""
121
-
122
- #: includes/i18n.php:61
123
- msgctxt "verb"
124
- msgid "Hide"
125
- msgstr ""
126
-
127
- #: includes/i18n.php:62
128
- msgctxt "verb"
129
- msgid "Edit"
130
- msgstr ""
131
-
132
- #: includes/i18n.php:63
133
- msgctxt "verb"
134
- msgid "Update"
135
- msgstr ""
136
-
137
- #: includes/i18n.php:64
138
- msgid "Date"
139
- msgstr ""
140
-
141
- #: includes/i18n.php:65
142
- msgid "Amount"
143
- msgstr ""
144
-
145
- #: includes/i18n.php:66
146
- msgid "Invoice"
147
- msgstr ""
148
-
149
- #: includes/i18n.php:67
150
- msgid "Billing"
151
- msgstr ""
152
-
153
- #: includes/i18n.php:68
154
- msgid "Payments"
155
- msgstr ""
156
-
157
- #: includes/i18n.php:69
158
- msgid "Delete Account"
159
- msgstr ""
160
-
161
- #: includes/i18n.php:70
162
- msgctxt "as close a window"
163
- msgid "Dismiss"
164
- msgstr ""
165
-
166
- #: includes/i18n.php:71
167
- msgctxt "as product pricing plan"
168
- msgid "Plan"
169
- msgstr ""
170
-
171
- #: includes/i18n.php:72
172
- msgid "Change Plan"
173
- msgstr ""
174
-
175
- #: includes/i18n.php:73
176
- msgctxt "as download professional version"
177
- msgid "Download %s Version"
178
- msgstr ""
179
-
180
- #: includes/i18n.php:74
181
- msgctxt "as download professional version now"
182
- msgid "Download %s version now"
183
- msgstr ""
184
-
185
- #: includes/i18n.php:75
186
- msgctxt "as download latest version"
187
- msgid "Download Latest"
188
- msgstr ""
189
-
190
- #: includes/i18n.php:76
191
- msgctxt "E.g. you have a professional license."
192
- msgid "You have a %s license."
193
- msgstr ""
194
-
195
- #: includes/i18n.php:77
196
- msgid "New"
197
- msgstr ""
198
-
199
- #: includes/i18n.php:78
200
- msgid "Free"
201
- msgstr ""
202
-
203
- #: includes/i18n.php:79
204
- msgctxt "as trial plan"
205
- msgid "Trial"
206
  msgstr ""
207
 
208
- #: includes/i18n.php:80
209
- msgctxt "as starting a trial plan"
210
- msgid "Start Trial"
211
  msgstr ""
212
 
213
- #: includes/i18n.php:81
214
- msgctxt "verb"
215
- msgid "Purchase"
216
  msgstr ""
217
 
218
- #: includes/i18n.php:82
219
- msgid "Purchase License"
220
  msgstr ""
221
 
222
- #: includes/i18n.php:83
223
- msgctxt "verb"
224
- msgid "Buy"
225
  msgstr ""
226
 
227
- #: includes/i18n.php:84
228
- msgid "Buy License"
229
  msgstr ""
230
 
231
- #: includes/i18n.php:85
232
- msgid "Single Site License"
 
233
  msgstr ""
234
 
235
- #: includes/i18n.php:86
236
- msgid "Unlimited Licenses"
 
237
  msgstr ""
238
 
239
- #: includes/i18n.php:87
240
- msgid "Up to %s Sites"
241
  msgstr ""
242
 
243
- #: includes/i18n.php:88
244
- msgid "%sRenew your license now%s to access version %s features and support."
245
  msgstr ""
246
 
247
- #: includes/i18n.php:89
248
- msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
249
  msgstr ""
250
 
251
- #: includes/i18n.php:90
252
- msgctxt "e.g. Professional Plan"
253
- msgid "%s Plan"
254
  msgstr ""
255
 
256
- #: includes/i18n.php:91
257
- msgid "You are just one step away - %s"
258
  msgstr ""
259
 
260
- #: includes/i18n.php:92
261
- msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
262
- msgid "Complete \"%s\" Activation Now"
263
  msgstr ""
264
 
265
- #: includes/i18n.php:94
266
- msgid "We made a few tweaks to the %s, %s"
267
  msgstr ""
268
 
269
- #: includes/i18n.php:95
270
- msgid "Opt in to make \"%s\" Better!"
271
  msgstr ""
272
 
273
- #: includes/i18n.php:96
274
- msgid "Error"
275
  msgstr ""
276
 
277
- #: includes/i18n.php:97
278
- msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
279
  msgstr ""
280
 
281
- #: includes/i18n.php:100
282
- msgctxt "as expiration date"
283
- msgid "Expiration"
284
  msgstr ""
285
 
286
- #: includes/i18n.php:101
287
- msgctxt "as software license"
288
- msgid "License"
289
  msgstr ""
290
 
291
- #: includes/i18n.php:102
292
- msgid "not verified"
293
  msgstr ""
294
 
295
- #: includes/i18n.php:103
296
- msgid "Verify Email"
297
  msgstr ""
298
 
299
- #: includes/i18n.php:104
300
- msgctxt "e.g. expires in 2 months"
301
- msgid "Expires in %s"
302
  msgstr ""
303
 
304
- #: includes/i18n.php:105
305
- msgctxt "e.g. auto renews in 2 months"
306
- msgid "Auto renews in %s"
307
  msgstr ""
308
 
309
- #: includes/i18n.php:106
310
- msgid "No expiration"
311
  msgstr ""
312
 
313
- #: includes/i18n.php:107
314
- msgid "Expired"
315
  msgstr ""
316
 
317
- #: includes/i18n.php:108
318
- msgid "Cancelled"
319
  msgstr ""
320
 
321
- #: includes/i18n.php:109
322
- msgctxt "e.g. In 2 hours"
323
- msgid "In %s"
324
  msgstr ""
325
 
326
- #: includes/i18n.php:110
327
- msgctxt "e.g. 2 min ago"
328
- msgid "%s ago"
329
  msgstr ""
330
 
331
- #: includes/i18n.php:112
332
- msgid "%s or higher"
333
  msgstr ""
334
 
335
- #: includes/i18n.php:113
336
- msgctxt "as plugin version"
337
- msgid "Version"
338
  msgstr ""
339
 
340
- #: includes/i18n.php:114
341
- msgid "Name"
342
  msgstr ""
343
 
344
- #: includes/i18n.php:115
345
- msgid "Email"
346
  msgstr ""
347
 
348
- #: includes/i18n.php:116
349
- msgid "Email address"
350
  msgstr ""
351
 
352
- #: includes/i18n.php:117
353
- msgid "Verified"
354
  msgstr ""
355
 
356
- #: includes/i18n.php:118
357
- msgid "Module"
358
  msgstr ""
359
 
360
- #: includes/i18n.php:119
361
- msgid "Module Type"
362
  msgstr ""
363
 
364
- #: includes/i18n.php:120
365
- msgid "Plugin"
 
366
  msgstr ""
367
 
368
- #: includes/i18n.php:121
369
- msgid "Plugins"
370
  msgstr ""
371
 
372
- #: includes/i18n.php:122
373
- msgid "Theme"
374
  msgstr ""
375
 
376
- #: includes/i18n.php:123
377
- msgid "Themes"
 
378
  msgstr ""
379
 
380
- #: includes/i18n.php:124
381
- msgctxt "as file/folder path"
382
- msgid "Path"
383
  msgstr ""
384
 
385
- #: includes/i18n.php:125
386
- msgid "Title"
 
387
  msgstr ""
388
 
389
- #: includes/i18n.php:126
390
- msgid "Free version"
391
  msgstr ""
392
 
393
- #: includes/i18n.php:127
394
- msgid "Premium version"
 
395
  msgstr ""
396
 
397
- #: includes/i18n.php:128
398
- msgctxt "as WP plugin slug"
399
- msgid "Slug"
400
  msgstr ""
401
 
402
- #: includes/i18n.php:129
403
- msgid "ID"
 
404
  msgstr ""
405
 
406
- #: includes/i18n.php:130
407
- msgid "Users"
408
  msgstr ""
409
 
410
- #: includes/i18n.php:131
411
- msgid "%s Installs"
412
  msgstr ""
413
 
414
- #: includes/i18n.php:132
415
- msgctxt "like websites"
416
- msgid "Sites"
417
  msgstr ""
418
 
419
- #: includes/i18n.php:133
420
- msgid "User ID"
 
421
  msgstr ""
422
 
423
- #: includes/i18n.php:134
424
- msgid "Site ID"
 
425
  msgstr ""
426
 
427
- #: includes/i18n.php:135
428
- msgid "Public Key"
429
  msgstr ""
430
 
431
- #: includes/i18n.php:136
432
- msgid "Secret Key"
 
433
  msgstr ""
434
 
435
- #: includes/i18n.php:137
436
- msgctxt "as secret encryption key missing"
437
- msgid "No Secret"
438
  msgstr ""
439
 
440
- #: includes/i18n.php:138
441
- msgid "No ID"
442
  msgstr ""
443
 
444
- #: includes/i18n.php:139
445
- msgctxt "as synchronize license"
446
- msgid "Sync License"
447
  msgstr ""
448
 
449
- #: includes/i18n.php:140
450
- msgctxt "as synchronize"
451
- msgid "Sync"
452
  msgstr ""
453
 
454
- #: includes/i18n.php:141
455
- msgid "Activate License"
 
456
  msgstr ""
457
 
458
- #: includes/i18n.php:142
459
- msgid "Activate Free Version"
460
  msgstr ""
461
 
462
- #: includes/i18n.php:143
463
- msgid "Please enter the license key that you received in the email right after the purchase:"
464
  msgstr ""
465
 
466
- #: includes/i18n.php:144
467
- msgid "Activating license..."
468
  msgstr ""
469
 
470
- #: includes/i18n.php:145
471
- msgid "Change License"
472
  msgstr ""
473
 
474
- #: includes/i18n.php:146
475
- msgid "Update License"
476
  msgstr ""
477
 
478
- #: includes/i18n.php:147
479
- msgid "Deactivate License"
480
  msgstr ""
481
 
482
- #: includes/i18n.php:148
483
- msgid "Activate"
484
  msgstr ""
485
 
486
- #: includes/i18n.php:149
487
- msgid "Deactivate"
488
  msgstr ""
489
 
490
- #: includes/i18n.php:150
491
- msgid "Skip & Deactivate"
492
  msgstr ""
493
 
494
- #: includes/i18n.php:151
495
- msgid "Skip & %s"
496
  msgstr ""
497
 
498
- #: includes/i18n.php:152
499
- msgid "No - just deactivate"
500
  msgstr ""
501
 
502
- #: includes/i18n.php:153
503
- msgid "Yes - do your thing"
504
  msgstr ""
505
 
506
- #: includes/i18n.php:154
507
- msgctxt "active mode"
508
- msgid "Active"
509
  msgstr ""
510
 
511
- #: includes/i18n.php:155
512
- msgctxt "is active mode?"
513
- msgid "Is Active"
514
  msgstr ""
515
 
516
- #: includes/i18n.php:156
517
- msgid "Install Now"
518
  msgstr ""
519
 
520
- #: includes/i18n.php:157
521
- msgid "Install Update Now"
522
  msgstr ""
523
 
524
- #: includes/i18n.php:158
525
- msgid "More information about %s"
526
  msgstr ""
527
 
528
- #: includes/i18n.php:159
529
- msgid "Localhost"
530
  msgstr ""
531
 
532
- #: includes/i18n.php:160
533
- msgctxt "as activate Professional plan"
534
- msgid "Activate %s Plan"
535
  msgstr ""
536
 
537
- #: includes/i18n.php:161
538
- msgctxt "as 5 licenses left"
539
- msgid "%s left"
540
  msgstr ""
541
 
542
- #: includes/i18n.php:162
543
- msgid "Last license"
544
  msgstr ""
545
 
546
- #: includes/i18n.php:163
547
- msgid "What is your %s?"
548
  msgstr ""
549
 
550
- #: includes/i18n.php:164
551
- msgid "Activate this add-on"
552
  msgstr ""
553
 
554
- #: includes/i18n.php:165
555
- msgid "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
556
  msgstr ""
557
 
558
- #: includes/i18n.php:166
559
  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?"
560
  msgstr ""
561
 
562
- #: includes/i18n.php:167
563
- 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?"
564
- msgstr ""
565
-
566
- #: includes/i18n.php:168
567
- msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
568
- msgstr ""
569
-
570
- #: includes/i18n.php:169
571
- msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
572
- msgstr ""
573
-
574
- #: includes/i18n.php:170
575
- msgid "You can still enjoy all %s features but you will not have access to %s updates and support."
576
- msgstr ""
577
-
578
- #: includes/i18n.php:171
579
- msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
580
- msgstr ""
581
-
582
- #: includes/i18n.php:172
583
- msgid "Are you sure you want to proceed?"
584
- msgstr ""
585
-
586
- #: includes/i18n.php:175
587
- msgid "Add Ons for %s"
588
- msgstr ""
589
-
590
- #: includes/i18n.php:176
591
- 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."
592
- msgstr ""
593
-
594
- #: includes/i18n.php:178
595
- msgid "Anonymous feedback"
596
- msgstr ""
597
-
598
- #: includes/i18n.php:179
599
- msgid "Quick feedback"
600
- msgstr ""
601
-
602
- #: includes/i18n.php:180
603
- msgid "If you have a moment, please let us know why you are %s"
604
- msgstr ""
605
-
606
- #: includes/i18n.php:181
607
- msgid "deactivating"
608
- msgstr ""
609
-
610
- #: includes/i18n.php:182
611
- msgid "Deactivation"
612
- msgstr ""
613
-
614
- #: includes/i18n.php:183
615
- msgid "Theme Switch"
616
- msgstr ""
617
-
618
- #: includes/i18n.php:184
619
- msgid "switching"
620
- msgstr ""
621
-
622
- #: includes/i18n.php:185
623
- msgid "Switch"
624
  msgstr ""
625
 
626
- #: includes/i18n.php:186
627
- msgid "Activate %s"
628
  msgstr ""
629
 
630
- #: includes/i18n.php:187
631
- msgid "Yes - %s"
632
  msgstr ""
633
 
634
- #: includes/i18n.php:188
635
- msgid "Submit & %s"
636
  msgstr ""
637
 
638
- #: includes/i18n.php:189
639
- msgid "Cancel"
640
  msgstr ""
641
 
642
- #: includes/i18n.php:190
643
- msgid "I no longer need the %s"
644
  msgstr ""
645
 
646
- #: includes/i18n.php:191
647
- msgid "I found a better %s"
648
  msgstr ""
649
 
650
- #: includes/i18n.php:192
651
- msgid "I only needed the %s for a short period"
652
  msgstr ""
653
 
654
- #: includes/i18n.php:193
655
- msgid "The %s broke my site"
656
  msgstr ""
657
 
658
- #: includes/i18n.php:194
659
- msgid "The %s suddenly stopped working"
660
  msgstr ""
661
 
662
- #: includes/i18n.php:195
663
- msgid "I can't pay for it anymore"
664
  msgstr ""
665
 
666
- #: includes/i18n.php:196
667
- msgid "It's a temporary deactivation. I'm just debugging an issue."
668
  msgstr ""
669
 
670
- #: includes/i18n.php:197
671
- msgid "It's a temporary %s. I'm just debugging an issue."
672
  msgstr ""
673
 
674
- #: includes/i18n.php:198
675
- msgctxt "the text of the \"other\" reason for deactivating the module that is shown in the modal box."
676
- msgid "Other"
677
  msgstr ""
678
 
679
- #: includes/i18n.php:200
680
- msgid "Kindly tell us the reason so we can improve."
681
  msgstr ""
682
 
683
- #: includes/i18n.php:201
684
- msgid "What's the %s's name?"
685
  msgstr ""
686
 
687
- #: includes/i18n.php:202
688
- msgid "What price would you feel comfortable paying?"
689
  msgstr ""
690
 
691
- #: includes/i18n.php:203
692
- msgid "I couldn't understand how to make it work"
693
  msgstr ""
694
 
695
- #: includes/i18n.php:204
696
- msgid "The %s is great, but I need specific feature that you don't support"
697
  msgstr ""
698
 
699
- #: includes/i18n.php:205
700
- msgid "The %s is not working"
701
  msgstr ""
702
 
703
- #: includes/i18n.php:206
704
- msgid "It's not what I was looking for"
705
  msgstr ""
706
 
707
- #: includes/i18n.php:207
708
- msgid "The %s didn't work as expected"
709
  msgstr ""
710
 
711
- #: includes/i18n.php:208
712
- msgid "What feature?"
713
  msgstr ""
714
 
715
- #: includes/i18n.php:209
716
- msgid "Kindly share what didn't work so we can fix it for future users..."
717
  msgstr ""
718
 
719
- #: includes/i18n.php:210
720
- msgid "What you've been looking for?"
721
  msgstr ""
722
 
723
- #: includes/i18n.php:211
724
- msgid "What did you expect?"
725
  msgstr ""
726
 
727
- #: includes/i18n.php:212
728
- msgid "The %s didn't work"
729
  msgstr ""
730
 
731
- #: includes/i18n.php:213
732
- msgid "I don't like to share my information with you"
733
  msgstr ""
734
 
735
- #: includes/i18n.php:214
736
- msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
737
  msgstr ""
738
 
739
- #: includes/i18n.php:218
740
- msgctxt "greeting"
741
- msgid "Hey %s,"
742
  msgstr ""
743
 
744
- #: includes/i18n.php:219
745
- msgctxt "a greeting. E.g. Thanks John!"
746
- msgid "Thanks %s!"
747
  msgstr ""
748
 
749
- #: includes/i18n.php:220
750
- msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
751
  msgstr ""
752
 
753
- #: includes/i18n.php:221
754
- msgid "Please help us improve %1$s! If you opt in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
755
  msgstr ""
756
 
757
- #: includes/i18n.php:222
758
- 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."
759
  msgstr ""
760
 
761
- #: includes/i18n.php:223
762
- msgid "complete the install"
763
  msgstr ""
764
 
765
- #: includes/i18n.php:224
766
- msgid "start the trial"
767
  msgstr ""
768
 
769
- #: includes/i18n.php:225
770
- msgid "Thanks for purchasing %s! To get started, please enter your license key:"
771
  msgstr ""
772
 
773
- #: includes/i18n.php:226
774
- 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."
775
  msgstr ""
776
 
777
- #: includes/i18n.php:227
778
- msgid "What permissions are being granted?"
779
  msgstr ""
780
 
781
- #: includes/i18n.php:228
782
- msgid "Your Profile Overview"
783
  msgstr ""
784
 
785
- #: includes/i18n.php:229
786
- msgid "Name and email address"
787
  msgstr ""
788
 
789
- #: includes/i18n.php:230
790
- msgid "Your Site Overview"
791
  msgstr ""
792
 
793
- #: includes/i18n.php:231
794
- msgid "Site URL, WP version, PHP info, plugins & themes"
795
  msgstr ""
796
 
797
- #: includes/i18n.php:232
798
- msgid "Current %s Events"
799
- msgstr ""
800
-
801
- #: includes/i18n.php:233
802
- msgid "Activation, deactivation and uninstall"
803
- msgstr ""
804
-
805
- #: includes/i18n.php:234
806
- msgid "Plugins & Themes"
807
- msgstr ""
808
-
809
- #: includes/i18n.php:235
810
- msgid "Titles, versions and state."
811
- msgstr ""
812
-
813
- #: includes/i18n.php:236
814
- msgid "Admin Notices"
815
- msgstr ""
816
-
817
- #: includes/i18n.php:237
818
- msgid "Newsletter"
819
- msgstr ""
820
-
821
- #: includes/i18n.php:238
822
- msgid "Updates, announcements, marketing, no spam"
823
- msgstr ""
824
-
825
- #: includes/i18n.php:239
826
- msgid "Privacy Policy"
827
- msgstr ""
828
-
829
- #: includes/i18n.php:240
830
- msgid "Terms of Service"
831
  msgstr ""
832
 
833
- #: includes/i18n.php:241
834
- msgctxt "as activating plugin"
835
- msgid "Activating"
836
  msgstr ""
837
 
838
- #: includes/i18n.php:242
839
- msgctxt "as in the process of sending an email"
840
- msgid "Sending email"
841
  msgstr ""
842
 
843
- #: includes/i18n.php:243
844
- msgctxt "button label"
845
- msgid "Allow & Continue"
846
  msgstr ""
847
 
848
- #: includes/i18n.php:244
849
- msgctxt "button label"
850
- msgid "Agree & Activate License"
851
  msgstr ""
852
 
853
- #: includes/i18n.php:245
854
- msgctxt "verb"
855
- msgid "Skip"
856
  msgstr ""
857
 
858
- #: includes/i18n.php:246
859
- msgid "Click here to use the plugin anonymously"
860
  msgstr ""
861
 
862
- #: includes/i18n.php:247
863
- msgid "Re-send activation email"
864
  msgstr ""
865
 
866
- #: includes/i18n.php:248
867
- msgid "License key"
868
  msgstr ""
869
 
870
- #: includes/i18n.php:249
871
- msgid "Send License Key"
872
  msgstr ""
873
 
874
- #: includes/i18n.php:250
875
- msgid "Sending license key"
876
  msgstr ""
877
 
878
- #: includes/i18n.php:251
879
- msgid "Have a license key?"
880
  msgstr ""
881
 
882
- #: includes/i18n.php:252
883
- msgid "Don't have a license key?"
884
  msgstr ""
885
 
886
- #: includes/i18n.php:253
887
- msgid "Can't find your license key?"
888
  msgstr ""
889
 
890
- #: includes/i18n.php:254
891
- msgid "We couldn't find your email address in the system, are you sure it's the right address?"
892
  msgstr ""
893
 
894
- #: includes/i18n.php:255
895
- msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
896
  msgstr ""
897
 
898
- #: includes/i18n.php:256
899
- msgid "Opt In"
900
  msgstr ""
901
 
902
- #: includes/i18n.php:257
903
- msgid "Opt Out"
904
  msgstr ""
905
 
906
- #: includes/i18n.php:258
907
- msgid "On second thought - I want to continue helping"
908
  msgstr ""
909
 
910
- #: includes/i18n.php:259
911
- msgid "Opting out..."
912
  msgstr ""
913
 
914
- #: includes/i18n.php:260
915
- msgid "Opting in..."
916
  msgstr ""
917
 
918
- #: includes/i18n.php:261
919
- msgid "We appreciate your help in making the %s better by letting us track some usage data."
920
  msgstr ""
921
 
922
- #: includes/i18n.php:262
923
- 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."
924
  msgstr ""
925
 
926
- #: includes/i18n.php:263
927
- msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
928
  msgstr ""
929
 
930
- #: includes/i18n.php:267
931
- msgid "Screenshots"
932
  msgstr ""
933
 
934
- #: includes/i18n.php:268
935
- msgid "Click to view full-size screenshot %d"
936
  msgstr ""
937
 
938
- #: includes/i18n.php:272
939
  msgid "Freemius Debug"
940
  msgstr ""
941
 
942
- #: includes/i18n.php:273
943
- msgctxt "as turned on"
944
- msgid "On"
945
- msgstr ""
946
-
947
- #: includes/i18n.php:274
948
- msgctxt "as turned off"
949
- msgid "Off"
950
- msgstr ""
951
-
952
- #: includes/i18n.php:275
953
- msgctxt "as code debugging"
954
- msgid "Debugging"
955
- msgstr ""
956
-
957
- #: includes/i18n.php:276
958
- msgid "Freemius State"
959
- msgstr ""
960
-
961
- #: includes/i18n.php:277
962
- msgctxt "as connection was successful"
963
- msgid "Connected"
964
- msgstr ""
965
-
966
- #: includes/i18n.php:278
967
- msgctxt "as connection blocked"
968
- msgid "Blocked"
969
- msgstr ""
970
-
971
- #: includes/i18n.php:279
972
- msgctxt "as application program interface"
973
- msgid "API"
974
- msgstr ""
975
-
976
- #: includes/i18n.php:280
977
- msgctxt "as software development kit versions"
978
  msgid "SDK"
979
  msgstr ""
980
 
981
- #: includes/i18n.php:281
982
- msgctxt "as software development kit versions"
983
- msgid "SDK Versions"
984
- msgstr ""
985
-
986
- #: includes/i18n.php:282
987
- msgctxt "as plugin folder path"
988
- msgid "Plugin Path"
989
- msgstr ""
990
-
991
- #: includes/i18n.php:283
992
- msgctxt "as sdk path"
993
- msgid "SDK Path"
994
- msgstr ""
995
-
996
- #: includes/i18n.php:284
997
- msgid "Add Ons of Plugin %s"
998
- msgstr ""
999
-
1000
- #: includes/i18n.php:285
1001
- msgid "Are you sure you want to delete all Freemius data?"
1002
- msgstr ""
1003
-
1004
- #: includes/i18n.php:286
1005
- msgid "Actions"
1006
- msgstr ""
1007
-
1008
- #: includes/i18n.php:287
1009
- msgid "Delete All Accounts"
1010
- msgstr ""
1011
-
1012
- #: includes/i18n.php:288
1013
- msgid "Start Fresh"
1014
- msgstr ""
1015
-
1016
- #: includes/i18n.php:289
1017
- msgid "Clear API Cache"
1018
- msgstr ""
1019
-
1020
- #: includes/i18n.php:290
1021
- msgid "Sync Data From Server"
1022
- msgstr ""
1023
-
1024
- #: includes/i18n.php:291
1025
- msgid "Scheduled Crons"
1026
- msgstr ""
1027
-
1028
- #: includes/i18n.php:292
1029
- msgid "Cron Type"
1030
- msgstr ""
1031
-
1032
- #: includes/i18n.php:293
1033
- msgid "Plugins & Themes Sync"
1034
- msgstr ""
1035
-
1036
- #: includes/i18n.php:294
1037
- msgid "%s Licenses"
1038
- msgstr ""
1039
-
1040
- #: includes/i18n.php:295
1041
- msgid "Debug Log"
1042
- msgstr ""
1043
-
1044
- #: includes/i18n.php:296
1045
- msgid "All"
1046
- msgstr ""
1047
-
1048
- #: includes/i18n.php:297
1049
- msgid "File"
1050
- msgstr ""
1051
-
1052
- #: includes/i18n.php:298
1053
- msgid "Function"
1054
- msgstr ""
1055
-
1056
- #: includes/i18n.php:299
1057
- msgid "Process ID"
1058
- msgstr ""
1059
-
1060
- #: includes/i18n.php:300
1061
- msgid "Logger"
1062
- msgstr ""
1063
-
1064
- #: includes/i18n.php:301
1065
- msgid "Message"
1066
- msgstr ""
1067
-
1068
- #: includes/i18n.php:302
1069
- msgid "Download"
1070
- msgstr ""
1071
-
1072
- #: includes/i18n.php:303
1073
- msgid "Filter"
1074
- msgstr ""
1075
-
1076
- #: includes/i18n.php:304
1077
- msgid "Type"
1078
- msgstr ""
1079
-
1080
- #: includes/i18n.php:305
1081
- msgid "All Types"
1082
- msgstr ""
1083
-
1084
- #: includes/i18n.php:306
1085
- msgid "All Requests"
1086
- msgstr ""
1087
-
1088
- #: includes/i18n.php:310
1089
- msgctxt "as congratulations"
1090
- msgid "Congrats"
1091
- msgstr ""
1092
-
1093
- #: includes/i18n.php:311
1094
- msgctxt "exclamation"
1095
- msgid "Oops"
1096
- msgstr ""
1097
-
1098
- #: includes/i18n.php:312
1099
- msgctxt "interjection expressing joy or exuberance"
1100
- msgid "Yee-haw"
1101
- msgstr ""
1102
-
1103
- #: includes/i18n.php:313
1104
- msgctxt "(especially in electronic communication) used to express elation, enthusiasm, or triumph."
1105
- msgid "W00t"
1106
- msgstr ""
1107
-
1108
- #: includes/i18n.php:315
1109
- msgctxt "a positive response"
1110
- msgid "Right on"
1111
- msgstr ""
1112
-
1113
- #: includes/i18n.php:316
1114
- msgctxt "something somebody says when they are thinking about what you have just said. "
1115
- msgid "Hmm"
1116
- msgstr ""
1117
-
1118
- #: includes/i18n.php:318
1119
- msgid "O.K"
1120
- msgstr ""
1121
-
1122
- #: includes/i18n.php:319
1123
- msgctxt "exclamation"
1124
- msgid "Hey"
1125
- msgstr ""
1126
-
1127
- #: includes/i18n.php:320
1128
- msgctxt "advance notice of something that will need attention."
1129
- msgid "Heads up"
1130
- msgstr ""
1131
-
1132
- #: includes/i18n.php:325
1133
- msgid "Seems like you got the latest release."
1134
- msgstr ""
1135
-
1136
- #: includes/i18n.php:326
1137
- msgid "You are all good!"
1138
- msgstr ""
1139
-
1140
- #: includes/i18n.php:327
1141
- msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
1142
- msgstr ""
1143
-
1144
- #: includes/i18n.php:328
1145
- msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
1146
- msgstr ""
1147
-
1148
- #: includes/i18n.php:329
1149
- msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
1150
- msgstr ""
1151
-
1152
- #: includes/i18n.php:330
1153
- msgid "Your name was successfully updated."
1154
- msgstr ""
1155
-
1156
- #: includes/i18n.php:331
1157
- msgid "You have successfully updated your %s."
1158
- msgstr ""
1159
-
1160
- #: includes/i18n.php:332
1161
- msgid "Please provide your full name."
1162
- msgstr ""
1163
-
1164
- #: includes/i18n.php:333
1165
- msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
1166
- msgstr ""
1167
-
1168
- #: includes/i18n.php:334
1169
- msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
1170
  msgstr ""
1171
 
1172
- #: includes/i18n.php:335
1173
- msgid "No credit card required"
1174
  msgstr ""
1175
 
1176
- #: includes/i18n.php:336
1177
- msgid "Premium %s version was successfully activated."
1178
  msgstr ""
1179
 
1180
- #: includes/i18n.php:337
1181
- msgid "The upgrade of %s was successfully completed."
1182
  msgstr ""
1183
 
1184
- #: includes/i18n.php:338
1185
- msgid "Your account was successfully activated with the %s plan."
1186
  msgstr ""
1187
 
1188
- #: includes/i18n.php:339
1189
- msgid "Download the latest %s version now"
1190
  msgstr ""
1191
 
1192
- #: includes/i18n.php:340
1193
- msgid "Please follow these steps to complete the upgrade"
1194
  msgstr ""
1195
 
1196
- #: includes/i18n.php:341
1197
- msgid "Download the latest %s version"
1198
  msgstr ""
1199
 
1200
- #: includes/i18n.php:342
1201
- msgid "Download the latest version"
1202
  msgstr ""
1203
 
1204
- #: includes/i18n.php:343
1205
- msgid "Deactivate the free version"
1206
  msgstr ""
1207
 
1208
- #: includes/i18n.php:344
1209
- msgid "Upload and activate the downloaded version"
1210
  msgstr ""
1211
 
1212
- #: includes/i18n.php:345
1213
- msgid "How to upload and activate?"
1214
  msgstr ""
1215
 
1216
- #: includes/i18n.php:346
1217
- msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1218
- msgid "%s Add-on was successfully purchased."
1219
  msgstr ""
1220
 
1221
- #: includes/i18n.php:348
1222
- msgid "Your %s Add-on plan was successfully upgraded."
1223
  msgstr ""
1224
 
1225
- #: includes/i18n.php:349
1226
- msgid "Your email has been successfully verified - you are AWESOME!"
1227
  msgstr ""
1228
 
1229
- #: includes/i18n.php:350
1230
- msgid "Your plan was successfully upgraded."
1231
  msgstr ""
1232
 
1233
- #: includes/i18n.php:351
1234
- msgid "Your plan was successfully changed to %s."
1235
  msgstr ""
1236
 
1237
- #: includes/i18n.php:352
1238
- msgid "Your license has expired. You can still continue using the free %s forever."
1239
  msgstr ""
1240
 
1241
- #: includes/i18n.php:353
1242
- msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
1243
  msgstr ""
1244
 
1245
- #: includes/i18n.php:354
1246
- msgid "Your trial has been successfully started."
1247
  msgstr ""
1248
 
1249
- #: includes/i18n.php:355
1250
- msgid "Your license was successfully activated."
1251
  msgstr ""
1252
 
1253
- #: includes/i18n.php:356
1254
- msgid "It looks like your site currently doesn't have an active license."
1255
  msgstr ""
1256
 
1257
- #: includes/i18n.php:357
1258
- msgid "Your license was successfully deactivated, you are back to the %s plan."
1259
  msgstr ""
1260
 
1261
- #: includes/i18n.php:358
1262
- msgid "It looks like the license deactivation failed."
1263
  msgstr ""
1264
 
1265
- #: includes/i18n.php:359
1266
- msgid "It looks like the license could not be activated."
1267
  msgstr ""
1268
 
1269
- #: includes/i18n.php:360
1270
- msgid "Error received from the server:"
1271
  msgstr ""
1272
 
1273
- #: includes/i18n.php:361
1274
- msgid "Your trial has expired. You can still continue using all our free features."
1275
  msgstr ""
1276
 
1277
- #: includes/i18n.php:362
1278
- msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
1279
  msgstr ""
1280
 
1281
- #: includes/i18n.php:363
1282
- msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
1283
  msgstr ""
1284
 
1285
- #: includes/i18n.php:364
1286
- msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
1287
  msgstr ""
1288
 
1289
- #: includes/i18n.php:365
1290
- msgid "Your %s free trial was successfully cancelled."
1291
  msgstr ""
1292
 
1293
- #: includes/i18n.php:366
1294
- msgctxt "%s - numeric version number"
1295
- msgid "Version %s was released."
1296
  msgstr ""
1297
 
1298
- #: includes/i18n.php:367
1299
- msgid "Please download %s."
1300
  msgstr ""
1301
 
1302
- #: includes/i18n.php:368
1303
- msgctxt "%s - plan name, as the latest professional version here"
1304
- msgid "the latest %s version here"
1305
  msgstr ""
1306
 
1307
- #: includes/i18n.php:370
1308
- msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
1309
  msgstr ""
1310
 
1311
- #: includes/i18n.php:371
1312
- msgctxt "call to action"
1313
- msgid "Start free trial"
1314
  msgstr ""
1315
 
1316
- #: includes/i18n.php:372
1317
- msgid "Starting trial"
1318
  msgstr ""
1319
 
1320
- #: includes/i18n.php:373
1321
- msgid "Please wait"
1322
  msgstr ""
1323
 
1324
- #: includes/i18n.php:374
1325
- msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
1326
  msgstr ""
1327
 
1328
- #: includes/i18n.php:375
1329
- msgid "You already utilized a trial before."
1330
  msgstr ""
1331
 
1332
- #: includes/i18n.php:376
1333
- msgid "You are already running the %s in a trial mode."
1334
  msgstr ""
1335
 
1336
- #: includes/i18n.php:377
1337
- msgid "Plan %s do not exist, therefore, can't start a trial."
1338
  msgstr ""
1339
 
1340
- #: includes/i18n.php:378
1341
- msgid "Plan %s does not support a trial period."
1342
  msgstr ""
1343
 
1344
- #: includes/i18n.php:379
1345
- msgid "None of the %s's plans supports a trial period."
1346
  msgstr ""
1347
 
1348
- #: includes/i18n.php:380
1349
- msgid "Unexpected API error. Please contact the %s's author with the following error."
1350
- msgstr ""
1351
-
1352
- #: includes/i18n.php:381
1353
- msgid "No commitment for %s days - cancel anytime!"
1354
  msgstr ""
1355
 
1356
- #: includes/i18n.php:382
1357
- 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."
1358
  msgstr ""
1359
 
1360
- #: includes/i18n.php:383
1361
- msgid "Couldn't activate %s."
1362
  msgstr ""
1363
 
1364
- #: includes/i18n.php:384
1365
- msgid "Please contact us with the following message:"
1366
  msgstr ""
1367
 
1368
- #: includes/i18n.php:385
1369
- 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."
1370
  msgstr ""
1371
 
1372
- #: includes/i18n.php:386
1373
- msgid "Please contact us here"
1374
  msgstr ""
1375
 
1376
- #: includes/i18n.php:387
1377
- msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
1378
  msgstr ""
1379
 
1380
- #: includes/i18n.php:390
1381
- msgid "From unknown reason, the API connectivity test failed."
1382
  msgstr ""
1383
 
1384
- #: includes/i18n.php:391
1385
- msgid "It's probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?"
1386
  msgstr ""
1387
 
1388
- #: includes/i18n.php:392
1389
- msgid "We use PHP cURL library for the API calls, which is a very common library and usually installed and activated out of the box. Unfortunately, cURL is not activated (or disabled) on your server."
1390
- msgstr ""
1391
-
1392
- #: includes/i18n.php:393
1393
- msgid "Disabled method(s):"
1394
  msgstr ""
1395
 
1396
- #: includes/i18n.php:394
1397
- msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1398
  msgstr ""
1399
 
1400
- #: includes/i18n.php:395
1401
- msgctxt "as pluginX requires an access to our API"
1402
- msgid "%s requires an access to our API."
1403
  msgstr ""
1404
 
1405
- #: includes/i18n.php:397
1406
- msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
1407
  msgstr ""
1408
 
1409
- #: includes/i18n.php:398
1410
- msgid "I don't know what is Squid or ACL, help me!"
1411
  msgstr ""
1412
 
1413
- #: includes/i18n.php:399, includes/i18n.php:403
1414
- 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."
1415
  msgstr ""
1416
 
1417
- #: includes/i18n.php:400
1418
- msgid "I'm a system administrator"
1419
  msgstr ""
1420
 
1421
- #: includes/i18n.php:401
1422
- msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the %s and activate it again."
1423
  msgstr ""
1424
 
1425
- #: includes/i18n.php:402
1426
- msgid "I don't know what is cURL or how to install it, help me!"
1427
  msgstr ""
1428
 
1429
- #: includes/i18n.php:404
1430
- 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."
1431
  msgstr ""
1432
 
1433
- #: includes/i18n.php:405
1434
- msgid "We are sure it's an issue on our side and more than happy to resolve it for you ASAP if you give us a chance."
1435
  msgstr ""
1436
 
1437
- #: includes/i18n.php:406
1438
- msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
1439
  msgstr ""
1440
 
1441
- #: includes/i18n.php:407
1442
- msgid "Yes - I'm giving you a chance to fix it"
1443
  msgstr ""
1444
 
1445
- #: includes/i18n.php:408
1446
- msgid "We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update."
1447
  msgstr ""
1448
 
1449
- #: includes/i18n.php:409
1450
- msgid "Let's try your previous version"
1451
  msgstr ""
1452
 
1453
- #: includes/i18n.php:410
1454
- msgid "Uninstall this version and install the previous one."
1455
  msgstr ""
1456
 
1457
- #: includes/i18n.php:411
1458
- msgid "That's exhausting, please deactivate"
1459
  msgstr ""
1460
 
1461
- #: includes/i18n.php:412
1462
- msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
1463
  msgstr ""
1464
 
1465
- #: includes/i18n.php:413
1466
- 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."
1467
  msgstr ""
1468
 
1469
- #: includes/i18n.php:414
1470
- msgctxt "%1s - plugin title, %2s - API domain"
1471
- msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
1472
  msgstr ""
1473
 
1474
- #: includes/i18n.php:416
1475
- msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
1476
  msgstr ""
1477
 
1478
- #: includes/i18n.php:419
1479
- 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."
1480
  msgstr ""
1481
 
1482
- #: includes/i18n.php:420
1483
- msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
1484
  msgstr ""
1485
 
1486
- #: includes/i18n.php:421
1487
- msgid "%s is the new owner of the account."
1488
  msgstr ""
1489
 
1490
- #: includes/i18n.php:423
1491
- msgctxt "addonX cannot run without pluginY"
1492
- msgid "%s cannot run without %s."
1493
  msgstr ""
1494
 
1495
- #: includes/i18n.php:425
1496
- msgctxt "addonX cannot run..."
1497
- msgid "%s cannot run without the plugin."
1498
  msgstr ""
1499
 
1500
- #: includes/i18n.php:426
1501
- msgctxt "pluginX activation was successfully..."
1502
- msgid "%s activation was successfully completed."
1503
  msgstr ""
1504
 
1505
- #: includes/i18n.php:428
1506
- msgctxt "Plugin installer section title"
1507
- msgid "Features & Pricing"
1508
  msgstr ""
1509
 
1510
- #: includes/i18n.php:429
1511
- msgid "Add-on must be deployed to WordPress.org or Freemius."
1512
  msgstr ""
1513
 
1514
- #: includes/i18n.php:430
1515
- msgid "Paid add-on must be deployed to Freemius."
1516
  msgstr ""
1517
 
1518
- #: includes/i18n.php:434
1519
- msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
1520
  msgstr ""
1521
 
1522
- #: includes/i18n.php:435
1523
- 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."
1524
  msgstr ""
1525
 
1526
- #: includes/i18n.php:440
1527
- msgctxt "as every month"
1528
- msgid "Monthly"
1529
  msgstr ""
1530
 
1531
- #: includes/i18n.php:441
1532
- msgctxt "as monthly period"
1533
- msgid "mo"
1534
  msgstr ""
1535
 
1536
- #: includes/i18n.php:442
1537
- msgctxt "as once a year"
1538
- msgid "Annual"
1539
  msgstr ""
1540
 
1541
- #: includes/i18n.php:443
1542
- msgctxt "as once a year"
1543
- msgid "Annually"
1544
  msgstr ""
1545
 
1546
- #: includes/i18n.php:444
1547
- msgctxt "as once a year"
1548
- msgid "Once"
1549
  msgstr ""
1550
 
1551
- #: includes/i18n.php:445
1552
- msgctxt "as annual period"
1553
- msgid "year"
1554
  msgstr ""
1555
 
1556
- #: includes/i18n.php:446
1557
- msgid "Lifetime"
1558
  msgstr ""
1559
 
1560
- #: includes/i18n.php:447
1561
- msgctxt "e.g. the best product"
1562
- msgid "Best"
1563
  msgstr ""
1564
 
1565
- #: includes/i18n.php:448
1566
- msgctxt "e.g. billed monthly"
1567
- msgid "Billed %s"
1568
  msgstr ""
1569
 
1570
- #: includes/i18n.php:449
1571
- msgctxt "as a discount of $5 or 10%"
1572
- msgid "Save %s"
1573
  msgstr ""
1574
 
1575
- #: includes/i18n.php:451
1576
- msgid "View details"
1577
  msgstr ""
1578
 
1579
- #: includes/i18n.php:455
1580
- msgctxt "button label"
1581
- msgid "Approve & Start Trial"
1582
  msgstr ""
1583
 
1584
- #: includes/i18n.php:457
1585
- msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1586
  msgstr ""
1587
 
1588
- #: includes/i18n.php:459
1589
- 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."
1590
  msgstr ""
1591
 
1592
- #: includes/i18n.php:465
1593
- msgid "Business name"
1594
  msgstr ""
1595
 
1596
- #: includes/i18n.php:466
1597
- msgid "Tax / VAT ID"
1598
  msgstr ""
1599
 
1600
- #: includes/i18n.php:467
1601
- msgid "Address Line %d"
1602
  msgstr ""
1603
 
1604
- #: includes/i18n.php:468
1605
- msgid "Country"
1606
  msgstr ""
1607
 
1608
- #: includes/i18n.php:469
1609
- msgid "Select Country"
1610
  msgstr ""
1611
 
1612
- #: includes/i18n.php:470
1613
- msgid "City"
1614
  msgstr ""
1615
 
1616
- #: includes/i18n.php:471
1617
- msgid "Town"
1618
  msgstr ""
1619
 
1620
- #: includes/i18n.php:472
1621
- msgid "State"
1622
  msgstr ""
1623
 
1624
- #: includes/i18n.php:473
1625
- msgid "Province"
1626
  msgstr ""
1627
 
1628
- #: includes/i18n.php:474
1629
- msgid "ZIP / Postal Code"
1630
  msgstr ""
1631
 
1632
- #: includes/i18n.php:479
1633
- msgid "Installing plugin: %s"
1634
  msgstr ""
1635
 
1636
- #: includes/i18n.php:480
1637
- msgid "Automatic Installation"
1638
  msgstr ""
1639
 
1640
- #: includes/i18n.php:482
1641
- msgid "%s sec"
1642
  msgstr ""
1643
 
1644
- #: includes/i18n.php:483
1645
- 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."
1646
  msgstr ""
1647
 
1648
- #: includes/i18n.php:484
1649
- 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."
1650
  msgstr ""
1651
 
1652
- #: includes/i18n.php:485
1653
- msgid "Cancel Installation"
1654
  msgstr ""
1655
 
1656
- #: includes/i18n.php:486
1657
- msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
1658
  msgstr ""
1659
 
1660
- #: includes/i18n.php:487
1661
- msgid "Invalid module ID."
1662
  msgstr ""
1663
 
1664
- #: includes/i18n.php:488
1665
- msgid "Auto installation only works for opted-in users."
1666
  msgstr ""
1667
 
1668
- #: includes/i18n.php:489
1669
- msgid "Premium version already active."
1670
  msgstr ""
1671
 
1672
- #: includes/i18n.php:490
1673
- msgid "Premium add-on version already installed."
1674
  msgstr ""
1675
 
1676
- #: includes/i18n.php:491
1677
- msgid "You do not have a valid license to access the premium version."
1678
  msgstr ""
1679
 
1680
- #: includes/i18n.php:492
1681
- msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
1682
  msgstr ""
1683
 
1684
- #: includes/i18n.php:496
1685
- msgid "Secure HTTPS %s page, running from an external domain"
1686
  msgstr ""
1687
 
1688
- #: includes/i18n.php:497
1689
- msgid "PCI compliant"
1690
  msgstr ""
1691
 
1692
- #: includes/i18n.php:498
1693
- msgid "View paid features"
1694
  msgstr ""
1695
 
1696
- #: includes/i18n.php:512
1697
- msgctxt "Plugin installer section title"
1698
- msgid "Description"
1699
  msgstr ""
1700
 
1701
- #: includes/i18n.php:513
1702
- msgctxt "Plugin installer section title"
1703
- msgid "Installation"
1704
  msgstr ""
1705
 
1706
- #: includes/i18n.php:514
1707
- msgctxt "Plugin installer section title"
1708
- msgid "FAQ"
1709
  msgstr ""
1710
 
1711
- #: includes/i18n.php:515
1712
- msgctxt "Plugin installer section title"
1713
- msgid "Changelog"
1714
  msgstr ""
1715
 
1716
- #: includes/i18n.php:516
1717
- msgctxt "Plugin installer section title"
1718
- msgid "Reviews"
1719
  msgstr ""
1720
 
1721
- #: includes/i18n.php:517
1722
- msgctxt "Plugin installer section title"
1723
- msgid "Other Notes"
1724
  msgstr ""
1725
 
1726
- #: includes/i18n.php:519
1727
- msgid "%s star"
1728
  msgstr ""
1729
 
1730
- #: includes/i18n.php:521
1731
- msgid "%s stars"
1732
  msgstr ""
1733
 
1734
- #: includes/i18n.php:523
1735
- msgid "%s rating"
1736
  msgstr ""
1737
 
1738
- #: includes/i18n.php:525
1739
- msgid "%s ratings"
1740
  msgstr ""
1741
 
1742
- #: includes/i18n.php:527
1743
- msgid "%s time"
1744
  msgstr ""
1745
 
1746
- #: includes/i18n.php:529
1747
- msgid "%s times"
1748
  msgstr ""
1749
 
1750
- #: includes/i18n.php:531
1751
- msgid "Click to see reviews that provided a rating of %s"
1752
  msgstr ""
1753
 
1754
- #: includes/i18n.php:532
1755
- msgid "Last Updated"
1756
  msgstr ""
1757
 
1758
- #: includes/i18n.php:533
1759
- msgid "Requires WordPress Version:"
1760
  msgstr ""
1761
 
1762
- #: includes/i18n.php:534
1763
- msgctxt "as the plugin author"
1764
- msgid "Author:"
1765
  msgstr ""
1766
 
1767
- #: includes/i18n.php:535
1768
- msgid "Compatible up to:"
1769
  msgstr ""
1770
 
1771
- #: includes/i18n.php:536
1772
- msgid "Downloaded:"
1773
  msgstr ""
1774
 
1775
- #: includes/i18n.php:537
1776
- msgid "WordPress.org Plugin Page"
1777
  msgstr ""
1778
 
1779
- #: includes/i18n.php:538
1780
- msgid "Plugin Homepage"
1781
  msgstr ""
1782
 
1783
- #: includes/i18n.php:539
1784
- msgid "Donate to this plugin"
1785
  msgstr ""
1786
 
1787
- #: includes/i18n.php:540
1788
- msgid "Average Rating"
1789
  msgstr ""
1790
 
1791
- #: includes/i18n.php:541
1792
- msgid "based on %s"
1793
  msgstr ""
1794
 
1795
- #: includes/i18n.php:542
1796
- msgid "Warning:"
1797
  msgstr ""
1798
 
1799
- #: includes/i18n.php:543
1800
- msgid "Contributors"
1801
  msgstr ""
1802
 
1803
- #: includes/i18n.php:544
1804
- msgid "Plugin Install"
1805
  msgstr ""
1806
 
1807
- #: includes/i18n.php:545
1808
- msgid "This plugin has not been tested with your current version of WordPress."
1809
  msgstr ""
1810
 
1811
- #: includes/i18n.php:546
1812
- msgid "This plugin has not been marked as compatible with your version of WordPress."
1813
  msgstr ""
1814
 
1815
- #: includes/i18n.php:547
1816
- msgid "Newer Version (%s) Installed"
1817
  msgstr ""
1818
 
1819
- #: includes/i18n.php:548
1820
- msgid "Latest Version Installed"
1821
  msgstr ""
10
  "Last-Translator: Vova Feldman <vova@freemius.com>\n"
11
  "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
12
  "X-Poedit-Basepath: ..\n"
13
+ "X-Poedit-KeywordsList: get_text_inline;get_text_x_inline:1,2c;fs_text_inline;fs_text_x_inline:1,2c;fs_echo_inline;fs_esc_attr_inline;fs_esc_attr_echo_inline;fs_esc_html_inline;fs_esc_html_echo_inline;fs_echo_x_inline:1,2c;fs_esc_attr_x_inline:1,2c;fs_esc_html_x_inline:1,2c;fs_esc_html_echo_x_inline:1,2c\n"
14
  "X-Poedit-SearchPath-0: .\n"
15
  "X-Poedit-SearchPathExcluded-0: *.js\n"
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
 
19
+ #: includes/class-freemius.php:1816
20
+ msgid "freemius-debug"
21
  msgstr ""
22
 
23
+ #: includes/class-freemius.php:2601
24
+ 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."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  msgstr ""
26
 
27
+ #: includes/class-freemius.php:2996
28
+ msgctxt "addonX cannot run without pluginY"
29
+ msgid "%s cannot run without %s."
30
  msgstr ""
31
 
32
+ #: includes/class-freemius.php:2997
33
+ msgctxt "addonX cannot run..."
34
+ msgid "%s cannot run without the plugin."
35
  msgstr ""
36
 
37
+ #: includes/class-freemius.php:3118, includes/class-freemius.php:3143, includes/class-freemius.php:11539
38
+ msgid "Unexpected API error. Please contact the %s's author with the following error."
39
  msgstr ""
40
 
41
+ #: includes/class-freemius.php:3834
42
+ 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."
 
43
  msgstr ""
44
 
45
+ #: includes/class-freemius.php:3838
46
+ msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
47
  msgstr ""
48
 
49
+ #: includes/class-freemius.php:8664
50
+ msgctxt "pluginX activation was successfully..."
51
+ msgid "%s activation was successfully completed."
52
  msgstr ""
53
 
54
+ #: includes/class-freemius.php:10992
55
+ msgctxt "%1s - plugin title, %2s - API domain"
56
+ msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
57
  msgstr ""
58
 
59
+ #: includes/class-freemius.php:11006
60
+ msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
61
  msgstr ""
62
 
63
+ #: includes/class-freemius.php:12316
64
+ 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."
65
  msgstr ""
66
 
67
+ #: includes/class-freemius.php:12322
68
+ msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
69
  msgstr ""
70
 
71
+ #: includes/class-freemius.php:12327
72
+ msgid "%s is the new owner of the account."
 
73
  msgstr ""
74
 
75
+ #: includes/class-freemius.php:13489, includes/class-freemius.php:13516, includes/fs-core-functions.php:728, includes/fs-core-functions.php:771, includes/fs-core-functions.php:809, includes/fs-core-functions.php:836, includes/fs-core-functions.php:859, includes/fs-core-functions.php:882, includes/fs-core-functions.php:909, includes/fs-core-functions.php:960
76
+ msgid "$text"
77
  msgstr ""
78
 
79
+ #: includes/class-freemius.php:13503, includes/fs-core-functions.php:743, includes/fs-core-functions.php:786, includes/fs-core-functions.php:924, includes/fs-core-functions.php:937
80
+ msgctxt "$context"
81
+ msgid "$text"
82
  msgstr ""
83
 
84
+ #: includes/class-freemius.php:13623
85
+ msgid "Auto installation only works for opted-in users."
86
  msgstr ""
87
 
88
+ #: includes/class-freemius.php:13633, includes/class-freemius.php:13666, includes/class-fs-plugin-updater.php:490, includes/class-fs-plugin-updater.php:504
89
+ msgid "Invalid module ID."
90
  msgstr ""
91
 
92
+ #: includes/class-freemius.php:13642, includes/class-fs-plugin-updater.php:524
93
+ msgid "Premium version already active."
94
  msgstr ""
95
 
96
+ #: includes/class-freemius.php:13649
97
+ msgid "You do not have a valid license to access the premium version."
98
  msgstr ""
99
 
100
+ #: includes/class-freemius.php:13656
101
+ msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
 
102
  msgstr ""
103
 
104
+ #: includes/class-freemius.php:13674, includes/class-fs-plugin-updater.php:523
105
+ msgid "Premium add-on version already installed."
 
106
  msgstr ""
107
 
108
+ #: includes/class-freemius.php:14019
109
+ msgid "View paid features"
110
  msgstr ""
111
 
112
+ #: includes/class-fs-plugin-updater.php:553
113
+ msgid "Installing plugin: %s"
114
  msgstr ""
115
 
116
+ #: includes/class-fs-plugin-updater.php:700
117
+ msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
 
118
  msgstr ""
119
 
120
+ #: includes/fs-plugin-info-dialog.php:328
121
+ msgid "purchase"
 
122
  msgstr ""
123
 
124
+ #: includes/fs-plugin-info-dialog.php:329
125
+ msgid "start-free-x"
126
  msgstr ""
127
 
128
+ #: includes/fs-plugin-info-dialog.php:351, templates/account.php:643
129
+ msgid "download-latest"
130
  msgstr ""
131
 
132
+ #: includes/fs-plugin-info-dialog.php:354, templates/account.php:637, templates/auto-installation.php:107
133
+ msgid "install-now"
134
  msgstr ""
135
 
136
+ #: includes/fs-plugin-info-dialog.php:360
137
+ msgid "install-update-now"
 
138
  msgstr ""
139
 
140
+ #: includes/fs-plugin-info-dialog.php:364
141
+ msgid "Newer Version (%s) Installed"
 
142
  msgstr ""
143
 
144
+ #: includes/fs-plugin-info-dialog.php:367
145
+ msgid "Latest Version Installed"
146
  msgstr ""
147
 
148
+ #: includes/fs-plugin-info-dialog.php:480
149
+ msgid "description"
 
150
  msgstr ""
151
 
152
+ #: includes/fs-plugin-info-dialog.php:481
153
+ msgid "installation"
154
  msgstr ""
155
 
156
+ #: includes/fs-plugin-info-dialog.php:482
157
+ msgid "faq"
158
  msgstr ""
159
 
160
+ #: includes/fs-plugin-info-dialog.php:483
161
+ msgid "screenshots"
162
  msgstr ""
163
 
164
+ #: includes/fs-plugin-info-dialog.php:484
165
+ msgid "changelog"
166
  msgstr ""
167
 
168
+ #: includes/fs-plugin-info-dialog.php:485
169
+ msgid "reviews"
170
  msgstr ""
171
 
172
+ #: includes/fs-plugin-info-dialog.php:486
173
+ msgid "other_notes"
174
  msgstr ""
175
 
176
+ #: includes/fs-plugin-info-dialog.php:501
177
+ msgctxt "Plugin installer section title"
178
+ msgid "Features & Pricing"
179
  msgstr ""
180
 
181
+ #: includes/fs-plugin-info-dialog.php:511
182
+ msgid "Plugin Install"
183
  msgstr ""
184
 
185
+ #: includes/fs-plugin-info-dialog.php:583
186
+ msgid "x-plan"
187
  msgstr ""
188
 
189
+ #: includes/fs-plugin-info-dialog.php:608
190
+ msgctxt "e.g. the best product"
191
+ msgid "Best"
192
  msgstr ""
193
 
194
+ #: includes/fs-plugin-info-dialog.php:614, includes/fs-plugin-info-dialog.php:634
195
+ msgctxt "as every month"
196
+ msgid "Monthly"
197
  msgstr ""
198
 
199
+ #: includes/fs-plugin-info-dialog.php:617
200
+ msgctxt "as once a year"
201
+ msgid "Annual"
202
  msgstr ""
203
 
204
+ #: includes/fs-plugin-info-dialog.php:620
205
+ msgid "Lifetime"
206
  msgstr ""
207
 
208
+ #: includes/fs-plugin-info-dialog.php:634, includes/fs-plugin-info-dialog.php:636, includes/fs-plugin-info-dialog.php:638
209
+ msgctxt "e.g. billed monthly"
210
+ msgid "Billed %s"
211
  msgstr ""
212
 
213
+ #: includes/fs-plugin-info-dialog.php:636
214
+ msgctxt "as once a year"
215
+ msgid "Annually"
216
  msgstr ""
217
 
218
+ #: includes/fs-plugin-info-dialog.php:638
219
+ msgctxt "as once a year"
220
+ msgid "Once"
221
  msgstr ""
222
 
223
+ #: includes/fs-plugin-info-dialog.php:644
224
+ msgid "license-single-site"
225
  msgstr ""
226
 
227
+ #: includes/fs-plugin-info-dialog.php:646
228
+ msgid "license-unlimited"
229
  msgstr ""
230
 
231
+ #: includes/fs-plugin-info-dialog.php:648
232
+ msgid "license-x-sites"
 
233
  msgstr ""
234
 
235
+ #: includes/fs-plugin-info-dialog.php:658, templates/plugin-info/features.php:82
236
+ msgctxt "as monthly period"
237
+ msgid "mo"
238
  msgstr ""
239
 
240
+ #: includes/fs-plugin-info-dialog.php:665, templates/plugin-info/features.php:80
241
+ msgctxt "as annual period"
242
+ msgid "year"
243
  msgstr ""
244
 
245
+ #: includes/fs-plugin-info-dialog.php:717
246
+ msgid "price"
247
  msgstr ""
248
 
249
+ #: includes/fs-plugin-info-dialog.php:763
250
+ msgctxt "as a discount of $5 or 10%"
251
+ msgid "Save %s"
252
  msgstr ""
253
 
254
+ #: includes/fs-plugin-info-dialog.php:773
255
+ msgid "no-commitment-x"
 
256
  msgstr ""
257
 
258
+ #: includes/fs-plugin-info-dialog.php:776
259
+ msgid "after-x-pay-as-little-y"
260
  msgstr ""
261
 
262
+ #: includes/fs-plugin-info-dialog.php:787
263
+ msgid "details"
 
264
  msgstr ""
265
 
266
+ #: includes/fs-plugin-info-dialog.php:790, templates/account.php:204, templates/debug.php:180, templates/debug.php:217, templates/debug.php:345
267
+ msgid "version"
 
268
  msgstr ""
269
 
270
+ #: includes/fs-plugin-info-dialog.php:796
271
+ msgctxt "as the plugin author"
272
+ msgid "Author"
273
  msgstr ""
274
 
275
+ #: includes/fs-plugin-info-dialog.php:802
276
+ msgid "Last Updated"
277
  msgstr ""
278
 
279
+ #: includes/fs-plugin-info-dialog.php:804, templates/debug/plugins-themes-sync.php:41, templates/debug/plugins-themes-sync.php:61, templates/debug/scheduled-crons.php:105, templates/debug/scheduled-crons.php:121
280
+ msgid "x-ago"
281
  msgstr ""
282
 
283
+ #: includes/fs-plugin-info-dialog.php:811
284
+ msgid "Requires WordPress Version"
285
  msgstr ""
286
 
287
+ #: includes/fs-plugin-info-dialog.php:811
288
+ msgid "x-or-higher"
289
  msgstr ""
290
 
291
+ #: includes/fs-plugin-info-dialog.php:817
292
+ msgid "Compatible up to"
293
  msgstr ""
294
 
295
+ #: includes/fs-plugin-info-dialog.php:824
296
+ msgid "Downloaded"
297
  msgstr ""
298
 
299
+ #: includes/fs-plugin-info-dialog.php:825, includes/fs-plugin-info-dialog.php:863, includes/fs-plugin-info-dialog.php:874, templates/account.php:118, templates/account.php:506, templates/account.php:655, templates/connect.php:433, templates/debug.php:211, templates/forms/license-activation.php:23
 
300
  msgstr ""
301
 
302
+ #: includes/fs-plugin-info-dialog.php:834
303
+ msgid "WordPress.org Plugin Page"
304
  msgstr ""
305
 
306
+ #: includes/fs-plugin-info-dialog.php:841
307
+ msgid "Plugin Homepage"
308
  msgstr ""
309
 
310
+ #: includes/fs-plugin-info-dialog.php:848, includes/fs-plugin-info-dialog.php:914
311
+ msgid "Donate to this plugin"
312
  msgstr ""
313
 
314
+ #: includes/fs-plugin-info-dialog.php:854
315
+ msgid "Average Rating"
316
  msgstr ""
317
 
318
+ #: includes/fs-plugin-info-dialog.php:861
319
+ msgid "based on %s"
320
  msgstr ""
321
 
322
+ #: includes/fs-plugin-info-dialog.php:882
323
+ msgid "click-to-reviews"
 
324
  msgstr ""
325
 
326
+ #: includes/fs-plugin-info-dialog.php:893
327
+ msgid "Contributors"
 
328
  msgstr ""
329
 
330
+ #: includes/fs-plugin-info-dialog.php:921, includes/fs-plugin-info-dialog.php:923
331
+ msgid "Warning"
332
  msgstr ""
333
 
334
+ #: includes/fs-plugin-info-dialog.php:921
335
+ msgid "This plugin has not been tested with your current version of WordPress."
336
  msgstr ""
337
 
338
+ #: includes/fs-plugin-info-dialog.php:923
339
+ msgid "This plugin has not been marked as compatible with your version of WordPress."
340
  msgstr ""
341
 
342
+ #: includes/fs-plugin-info-dialog.php:942
343
+ msgid "Paid add-on must be deployed to Freemius."
344
  msgstr ""
345
 
346
+ #: includes/fs-plugin-info-dialog.php:943
347
+ msgid "Add-on must be deployed to WordPress.org or Freemius."
 
348
  msgstr ""
349
 
350
+ #: templates/account.php:55, templates/debug.php:276
351
+ msgid "account"
 
352
  msgstr ""
353
 
354
+ #: templates/account.php:58
355
+ msgid "add-ons"
356
  msgstr ""
357
 
358
+ #: templates/account.php:61
359
+ msgid "upgrade"
360
  msgstr ""
361
 
362
+ #: templates/account.php:63
363
+ msgid "free-trial"
364
  msgstr ""
365
 
366
+ #: templates/account.php:74
367
+ msgid "account-details"
368
  msgstr ""
369
 
370
+ #: templates/account.php:84
371
  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?"
372
  msgstr ""
373
 
374
+ #: templates/account.php:86
375
+ msgid "delete-account-confirm"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
376
  msgstr ""
377
 
378
+ #: templates/account.php:89
379
+ msgid "delete-account"
380
  msgstr ""
381
 
382
+ #: templates/account.php:100
383
+ msgid "deactivate-license-confirm"
384
  msgstr ""
385
 
386
+ #: templates/account.php:101, templates/account.php:553
387
+ msgid "deactivate-license"
388
  msgstr ""
389
 
390
+ #: templates/account.php:114, templates/account.php:559
391
+ msgid "downgrade-x-confirm"
392
  msgstr ""
393
 
394
+ #: templates/account.php:115, templates/account.php:564
395
+ msgid "after-downgrade-non-blocking"
396
  msgstr ""
397
 
398
+ #: templates/account.php:117, templates/account.php:565
399
+ msgid "after-downgrade-blocking"
400
  msgstr ""
401
 
402
+ #: templates/account.php:118
403
+ msgid "proceed-confirmation"
404
  msgstr ""
405
 
406
+ #: templates/account.php:126
407
+ msgid "change-plan"
408
  msgstr ""
409
 
410
+ #: templates/account.php:136, templates/account.php:589
411
+ msgid "cancel-trial-confirm"
412
  msgstr ""
413
 
414
+ #: templates/account.php:137, templates/account.php:585
415
+ msgid "cancel-trial"
416
  msgstr ""
417
 
418
+ #: templates/account.php:147
419
+ msgid "sync"
420
  msgstr ""
421
 
422
+ #: templates/account.php:161, templates/debug.php:380
423
+ msgid "name"
424
  msgstr ""
425
 
426
+ #: templates/account.php:167, templates/debug.php:381
427
+ msgid "email"
 
428
  msgstr ""
429
 
430
+ #: templates/account.php:174, templates/debug.php:301, templates/debug.php:410
431
+ msgid "user-id"
432
  msgstr ""
433
 
434
+ #: templates/account.php:181
435
+ msgid "site-id"
436
  msgstr ""
437
 
438
+ #: templates/account.php:184
439
+ msgid "no-id"
440
  msgstr ""
441
 
442
+ #: templates/account.php:189, templates/debug.php:222, templates/debug.php:303, templates/debug.php:346, templates/debug.php:383
443
+ msgid "public-key"
444
  msgstr ""
445
 
446
+ #: templates/account.php:195, templates/debug.php:304, templates/debug.php:347, templates/debug.php:384
447
+ msgid "secret-key"
448
  msgstr ""
449
 
450
+ #: templates/account.php:198
451
+ msgid "no-secret"
452
  msgstr ""
453
 
454
+ #: templates/account.php:214, templates/account.php:222, templates/debug.php:302
455
+ msgid "plan"
456
  msgstr ""
457
 
458
+ #: templates/account.php:217, templates/account.php:503, templates/add-ons.php:130
459
+ msgid "trial"
460
  msgstr ""
461
 
462
+ #: templates/account.php:225, templates/add-ons.php:126
463
+ msgid "free"
464
  msgstr ""
465
 
466
+ #: templates/account.php:232
467
+ msgid "License Key"
468
  msgstr ""
469
 
470
+ #: templates/account.php:271, templates/account.php:276, templates/account.php:528
471
+ msgid "expires-in"
472
  msgstr ""
473
 
474
+ #: templates/account.php:273, templates/account.php:533
475
+ msgid "renews-in"
476
  msgstr ""
477
 
478
+ #: templates/account.php:289, templates/account.php:602
479
+ msgid "activate-x-plan"
480
  msgstr ""
481
 
482
+ #: templates/account.php:292
483
+ msgid "localhost"
484
  msgstr ""
485
 
486
+ #: templates/account.php:296
487
+ msgid "x-left"
488
  msgstr ""
489
 
490
+ #: templates/account.php:297
491
+ msgid "last-license"
 
492
  msgstr ""
493
 
494
+ #: templates/account.php:350
495
+ msgid "download-x-version"
 
496
  msgstr ""
497
 
498
+ #: templates/account.php:375
499
+ msgid "what-is-your-x"
500
  msgstr ""
501
 
502
+ #: templates/account.php:513
503
+ msgid "cancelled"
504
  msgstr ""
505
 
506
+ #: templates/account.php:518
507
+ msgid "expired"
508
  msgstr ""
509
 
510
+ #: templates/account.php:523
511
+ msgid "no-expiration"
512
  msgstr ""
513
 
514
+ #: templates/account.php:572
515
+ msgid "downgrade"
516
  msgstr ""
517
 
518
+ #: templates/account.php:617
519
+ msgid "sync-license"
520
  msgstr ""
521
 
522
+ #: templates/account.php:630
523
+ msgid "activate"
524
  msgstr ""
525
 
526
+ #: templates/account.php:653, templates/add-ons.php:99
527
+ msgid "more-information-about-x"
528
  msgstr ""
529
 
530
+ #: templates/account.php:704, templates/debug.php:327
531
+ msgid "delete"
532
  msgstr ""
533
 
534
+ #: templates/add-ons.php:36
535
+ msgid "add-ons-for-x"
536
  msgstr ""
537
 
538
+ #: templates/add-ons.php:43
539
+ msgid "oops"
540
  msgstr ""
541
 
542
+ #: templates/add-ons.php:44
543
+ msgid "add-ons-missing"
544
  msgstr ""
545
 
546
+ #: templates/add-ons.php:135
547
+ msgid "View details"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
548
  msgstr ""
549
 
550
+ #: templates/admin-notice.php:39, templates/admin-notice.php:39
551
+ msgid "dismiss"
 
552
  msgstr ""
553
 
554
+ #: templates/auto-installation.php:31
555
+ msgid "addon"
 
556
  msgstr ""
557
 
558
+ #: templates/auto-installation.php:42
559
+ msgid "x-sec"
 
560
  msgstr ""
561
 
562
+ #: templates/auto-installation.php:79
563
+ msgid "Automatic Installation"
 
564
  msgstr ""
565
 
566
+ #: templates/auto-installation.php:89
567
+ 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."
 
568
  msgstr ""
569
 
570
+ #: templates/auto-installation.php:100
571
+ 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."
572
  msgstr ""
573
 
574
+ #: templates/auto-installation.php:105
575
+ msgid "Cancel Installation"
576
  msgstr ""
577
 
578
+ #: templates/checkout.php:168
579
+ msgid "PCI compliant"
580
  msgstr ""
581
 
582
+ #: templates/connect.php:134
583
+ msgid "thanks-x"
584
  msgstr ""
585
 
586
+ #: templates/connect.php:135
587
+ msgid "pending-activation-message"
588
  msgstr ""
589
 
590
+ #: templates/connect.php:139
591
+ msgid "complete-the-install"
592
  msgstr ""
593
 
594
+ #: templates/connect.php:145, templates/connect.php:168
595
+ msgid "hey-x"
596
  msgstr ""
597
 
598
+ #: templates/connect.php:146
599
+ msgid "thanks-for-purchasing"
600
  msgstr ""
601
 
602
+ #: templates/connect.php:170
603
+ msgid "$default_optin_message"
604
  msgstr ""
605
 
606
+ #: templates/connect.php:187, templates/debug.php:415, templates/forms/license-activation.php:44
607
+ msgid "license-key"
608
  msgstr ""
609
 
610
+ #: templates/connect.php:190, templates/forms/license-activation.php:19
611
+ msgid "cant-find-license-key"
612
  msgstr ""
613
 
614
+ #: templates/connect.php:197, templates/forms/deactivation/retry-skip.php:20
615
+ msgid "skip"
616
  msgstr ""
617
 
618
+ #: templates/connect.php:206, templates/connect.php:217, templates/connect.php:408
619
+ msgid "$button_label"
620
  msgstr ""
621
 
622
+ #: templates/connect.php:282
623
+ msgid "what-permissions"
624
  msgstr ""
625
 
626
+ #: templates/connect.php:303
627
+ msgid "dont-have-license-key"
628
  msgstr ""
629
 
630
+ #: templates/connect.php:304
631
+ msgid "activate-free-version"
632
  msgstr ""
633
 
634
+ #: templates/connect.php:306
635
+ msgid "have-license-key"
636
  msgstr ""
637
 
638
+ #: templates/connect.php:307
639
+ msgid "activate-license"
640
  msgstr ""
641
 
642
+ #: templates/connect.php:314
643
+ msgid "privacy-policy"
644
  msgstr ""
645
 
646
+ #: templates/connect.php:316
647
+ msgid "tos"
648
  msgstr ""
649
 
650
+ #: templates/debug.php:17
651
  msgid "Freemius Debug"
652
  msgstr ""
653
 
654
+ #: templates/debug.php:17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
655
  msgid "SDK"
656
  msgstr ""
657
 
658
+ #: templates/debug.php:21
659
+ msgid "debugging"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
660
  msgstr ""
661
 
662
+ #: templates/debug.php:25, templates/debug.php:259
663
+ msgid "on"
664
  msgstr ""
665
 
666
+ #: templates/debug.php:26, templates/debug.php:260
667
+ msgid "off"
668
  msgstr ""
669
 
670
+ #: templates/debug.php:51, templates/debug.php:223, templates/debug.php:305
671
+ msgid "actions"
672
  msgstr ""
673
 
674
+ #: templates/debug.php:61
675
+ msgid "delete-all-confirm"
676
  msgstr ""
677
 
678
+ #: templates/debug.php:61
679
+ msgid "delete-all-accounts"
680
  msgstr ""
681
 
682
+ #: templates/debug.php:68
683
+ msgid "clear-api-cache"
684
  msgstr ""
685
 
686
+ #: templates/debug.php:75
687
+ msgid "sync-data-from-server"
688
  msgstr ""
689
 
690
+ #: templates/debug.php:79
691
+ msgid "Load DB Option"
692
  msgstr ""
693
 
694
+ #: templates/debug.php:82
695
+ msgid "Set DB Option"
696
  msgstr ""
697
 
698
+ #: templates/debug.php:159
699
+ msgid "key"
700
  msgstr ""
701
 
702
+ #: templates/debug.php:160
703
+ msgid "value"
704
  msgstr ""
705
 
706
+ #: templates/debug.php:176
707
+ msgid "sdk-versions"
 
708
  msgstr ""
709
 
710
+ #: templates/debug.php:181
711
+ msgid "sdk-path"
712
  msgstr ""
713
 
714
+ #: templates/debug.php:182, templates/debug.php:221
715
+ msgid "plugin-path"
716
  msgstr ""
717
 
718
+ #: templates/debug.php:183
719
+ msgid "is-active"
720
  msgstr ""
721
 
722
+ #: templates/debug.php:215, templates/debug.php:299, templates/debug.php:342, templates/debug.php:379, templates/debug.php:408, templates/debug.php:487, templates/account/payments.php:35, templates/debug/logger.php:21
723
+ msgid "id"
724
  msgstr ""
725
 
726
+ #: templates/debug.php:216, templates/debug.php:300, templates/debug.php:344, templates/debug/scheduled-crons.php:79
727
+ msgid "slug"
728
  msgstr ""
729
 
730
+ #: templates/debug.php:218, templates/debug.php:343
731
+ msgid "title"
732
  msgstr ""
733
 
734
+ #: templates/debug.php:219
735
+ msgid "api"
736
  msgstr ""
737
 
738
+ #: templates/debug.php:220
739
+ msgid "freemius-state"
740
  msgstr ""
741
 
742
+ #: templates/debug.php:252
743
+ msgid "connected"
744
  msgstr ""
745
 
746
+ #: templates/debug.php:253
747
+ msgid "blocked"
748
  msgstr ""
749
 
750
+ #: templates/debug.php:272
751
+ msgid "Simulate Trial"
752
  msgstr ""
753
 
754
+ #: templates/debug.php:295
755
+ msgid "module-installs"
756
  msgstr ""
757
 
758
+ #: templates/debug.php:295, templates/debug.php:404
759
+ msgid "$module_type"
760
  msgstr ""
761
 
762
+ #: templates/debug.php:295
763
+ msgid "sites"
764
  msgstr ""
765
 
766
+ #: templates/debug.php:338
767
+ msgid "addons-of-x"
768
  msgstr ""
769
 
770
+ #: templates/debug.php:375
771
+ msgid "users"
772
  msgstr ""
773
 
774
+ #: templates/debug.php:382
775
+ msgid "verified"
776
  msgstr ""
777
 
778
+ #: templates/debug.php:404
779
+ msgid "module-licenses"
780
  msgstr ""
781
 
782
+ #: templates/debug.php:409
783
+ msgid "plugin-id"
 
784
  msgstr ""
785
 
786
+ #: templates/debug.php:411
787
+ msgid "plan-id"
788
  msgstr ""
789
 
790
+ #: templates/debug.php:412
791
+ msgid "quota"
 
792
  msgstr ""
793
 
794
+ #: templates/debug.php:413
795
+ msgid "activated"
796
  msgstr ""
797
 
798
+ #: templates/debug.php:414
799
+ msgid "blocking"
 
800
  msgstr ""
801
 
802
+ #: templates/debug.php:416
803
+ msgid "expiration"
804
  msgstr ""
805
 
806
+ #: templates/debug.php:445
807
+ msgid "debug-log"
808
  msgstr ""
809
 
810
+ #: templates/debug.php:449
811
+ msgid "all-types"
812
  msgstr ""
813
 
814
+ #: templates/debug.php:456
815
+ msgid "all-requests"
816
  msgstr ""
817
 
818
+ #: templates/debug.php:461, templates/debug.php:490, templates/debug/logger.php:25
819
+ msgid "file"
820
  msgstr ""
821
 
822
+ #: templates/debug.php:462, templates/debug.php:488, templates/debug/logger.php:23
823
+ msgid "function"
824
  msgstr ""
825
 
826
+ #: templates/debug.php:463
827
+ msgid "process-id"
828
  msgstr ""
829
 
830
+ #: templates/debug.php:464
831
+ msgid "logger"
832
  msgstr ""
833
 
834
+ #: templates/debug.php:465, templates/debug.php:489, templates/debug/logger.php:24
835
+ msgid "message"
 
 
 
 
836
  msgstr ""
837
 
838
+ #: templates/debug.php:467
839
+ msgid "filter"
840
  msgstr ""
841
 
842
+ #: templates/debug.php:475
843
+ msgid "download"
844
  msgstr ""
845
 
846
+ #: templates/debug.php:486, templates/debug/logger.php:22
847
+ msgid "type"
848
  msgstr ""
849
 
850
+ #: templates/debug.php:491, templates/debug/logger.php:26
851
+ msgid "timestamp"
852
  msgstr ""
853
 
854
+ #: includes/debug/class-fs-debug-bar-panel.php:48, templates/debug/api-calls.php:84, templates/debug/api-calls.php:148, templates/debug/api-calls.php:149, templates/debug/logger.php:62
855
+ msgid "ms"
856
  msgstr ""
857
 
858
+ #: includes/debug/debug-bar-start.php:41
859
+ msgid "Freemius API"
860
  msgstr ""
861
 
862
+ #: includes/debug/debug-bar-start.php:42
863
+ msgid "Requests"
864
  msgstr ""
865
 
866
+ #: templates/account/billing.php:36
867
+ msgid "billing"
868
  msgstr ""
869
 
870
+ #: templates/account/billing.php:41, templates/account/billing.php:41
871
+ msgid "Business name"
 
 
 
 
872
  msgstr ""
873
 
874
+ #: templates/account/billing.php:42, templates/account/billing.php:42
875
+ msgid "Tax / VAT ID"
876
  msgstr ""
877
 
878
+ #: templates/account/billing.php:45, templates/account/billing.php:45, templates/account/billing.php:46, templates/account/billing.php:46
879
+ msgid "Address Line %d"
 
880
  msgstr ""
881
 
882
+ #: templates/account/billing.php:49, templates/account/billing.php:49
883
+ msgid "City"
884
  msgstr ""
885
 
886
+ #: templates/account/billing.php:49, templates/account/billing.php:49
887
+ msgid "Town"
888
  msgstr ""
889
 
890
+ #: templates/account/billing.php:50, templates/account/billing.php:50
891
+ msgid "ZIP / Postal Code"
892
  msgstr ""
893
 
894
+ #: templates/account/billing.php:305
895
+ msgid "Country"
896
  msgstr ""
897
 
898
+ #: templates/account/billing.php:307
899
+ msgid "Select Country"
900
  msgstr ""
901
 
902
+ #: templates/account/billing.php:314, templates/account/billing.php:315
903
+ msgid "State"
904
  msgstr ""
905
 
906
+ #: templates/account/billing.php:314, templates/account/billing.php:315
907
+ msgid "Province"
908
  msgstr ""
909
 
910
+ #: templates/account/billing.php:321, templates/account/billing.php:362, templates/account/billing.php:421
911
+ msgid "edit"
912
  msgstr ""
913
 
914
+ #: templates/account/billing.php:322, templates/account/billing.php:362, templates/account/billing.php:413
915
+ msgid "update"
916
  msgstr ""
917
 
918
+ #: templates/account/payments.php:29
919
+ msgid "payments"
920
  msgstr ""
921
 
922
+ #: templates/account/payments.php:36
923
+ msgid "date"
924
  msgstr ""
925
 
926
+ #: templates/account/payments.php:37
927
+ msgid "amount"
928
  msgstr ""
929
 
930
+ #: templates/account/payments.php:38, templates/account/payments.php:50
931
+ msgid "invoice"
932
  msgstr ""
933
 
934
+ #: templates/debug/api-calls.php:54
935
+ msgid "API"
936
  msgstr ""
937
 
938
+ #: templates/debug/api-calls.php:66
939
+ msgid "Method"
940
  msgstr ""
941
 
942
+ #: templates/debug/api-calls.php:67
943
+ msgid "Code"
944
  msgstr ""
945
 
946
+ #: templates/debug/api-calls.php:68
947
+ msgid "Length"
 
948
  msgstr ""
949
 
950
+ #: templates/debug/api-calls.php:69
951
+ msgid "Path"
952
  msgstr ""
953
 
954
+ #: templates/debug/api-calls.php:71
955
+ msgid "Body"
956
  msgstr ""
957
 
958
+ #: templates/debug/api-calls.php:73
959
+ msgid "Result"
960
  msgstr ""
961
 
962
+ #: templates/debug/api-calls.php:74
963
+ msgid "Start"
964
  msgstr ""
965
 
966
+ #: templates/debug/api-calls.php:75
967
+ msgid "End"
 
968
  msgstr ""
969
 
970
+ #: templates/debug/logger.php:15
971
+ msgid "Log"
 
972
  msgstr ""
973
 
974
+ #: templates/debug/plugins-themes-sync.php:17
975
+ msgid "plugins-themes-sync"
 
976
  msgstr ""
977
 
978
+ #: templates/debug/plugins-themes-sync.php:22
979
+ msgid "total"
 
980
  msgstr ""
981
 
982
+ #: templates/debug/plugins-themes-sync.php:23, templates/debug/scheduled-crons.php:83
983
+ msgid "Last"
984
  msgstr ""
985
 
986
+ #: templates/debug/plugins-themes-sync.php:29
987
+ msgid "plugins"
988
  msgstr ""
989
 
990
+ #: templates/debug/plugins-themes-sync.php:35, templates/debug/plugins-themes-sync.php:55, templates/debug/scheduled-crons.php:99, templates/debug/scheduled-crons.php:115
991
+ msgid "sec"
992
  msgstr ""
993
 
994
+ #: templates/debug/plugins-themes-sync.php:39, templates/debug/plugins-themes-sync.php:59, templates/debug/scheduled-crons.php:103, templates/debug/scheduled-crons.php:119
995
+ msgid "in-x"
996
  msgstr ""
997
 
998
+ #: templates/debug/plugins-themes-sync.php:49
999
+ msgid "themes"
 
1000
  msgstr ""
1001
 
1002
+ #: templates/debug/scheduled-crons.php:75
1003
+ msgid "scheduled-crons"
 
1004
  msgstr ""
1005
 
1006
+ #: templates/debug/scheduled-crons.php:80
1007
+ msgid "module"
 
1008
  msgstr ""
1009
 
1010
+ #: templates/debug/scheduled-crons.php:81
1011
+ msgid "module-type"
 
1012
  msgstr ""
1013
 
1014
+ #: templates/debug/scheduled-crons.php:82
1015
+ msgid "cron-type"
 
1016
  msgstr ""
1017
 
1018
+ #: templates/debug/scheduled-crons.php:84
1019
+ msgid "Next"
 
1020
  msgstr ""
1021
 
1022
+ #: templates/forms/affiliation.php:81
1023
+ msgid "non-expiring"
1024
  msgstr ""
1025
 
1026
+ #: templates/forms/affiliation.php:101
1027
+ msgid "affiliate-application-accepted"
 
1028
  msgstr ""
1029
 
1030
+ #: templates/forms/affiliation.php:124
1031
+ msgid "$text_key"
 
1032
  msgstr ""
1033
 
1034
+ #: templates/forms/affiliation.php:132
1035
+ msgid "become-an-ambassador"
 
1036
  msgstr ""
1037
 
1038
+ #: templates/forms/affiliation.php:133
1039
+ msgid "refer-new-customers"
1040
  msgstr ""
1041
 
1042
+ #: templates/forms/affiliation.php:136
1043
+ msgid "program-summary"
 
1044
  msgstr ""
1045
 
1046
+ #: templates/forms/affiliation.php:138
1047
+ msgid "commission-on-new-license-purchase"
1048
  msgstr ""
1049
 
1050
+ #: templates/forms/affiliation.php:140
1051
+ msgid "renewals-commission"
1052
  msgstr ""
1053
 
1054
+ #: templates/forms/affiliation.php:143
1055
+ msgid "affiliate-tracking"
1056
  msgstr ""
1057
 
1058
+ #: templates/forms/affiliation.php:146
1059
+ msgid "unlimited-commissions"
1060
  msgstr ""
1061
 
1062
+ #: templates/forms/affiliation.php:148
1063
+ msgid "minimum-payout-amount"
1064
  msgstr ""
1065
 
1066
+ #: templates/forms/affiliation.php:149
1067
+ msgid "payouts-unit-and-processing"
1068
  msgstr ""
1069
 
1070
+ #: templates/forms/affiliation.php:150
1071
+ msgid "commission-payment"
1072
  msgstr ""
1073
 
1074
+ #: templates/forms/affiliation.php:153
1075
+ msgid "affiliate"
1076
  msgstr ""
1077
 
1078
+ #: templates/forms/affiliation.php:156
1079
+ msgid "email-address"
1080
  msgstr ""
1081
 
1082
+ #: templates/forms/affiliation.php:160
1083
+ msgid "full-name"
1084
  msgstr ""
1085
 
1086
+ #: templates/forms/affiliation.php:164
1087
+ msgid "paypal-account-email-address"
1088
  msgstr ""
1089
 
1090
+ #: templates/forms/affiliation.php:168
1091
+ msgid "domain-field-label"
1092
  msgstr ""
1093
 
1094
+ #: templates/forms/affiliation.php:170
1095
+ msgid "domain-field-desc"
1096
  msgstr ""
1097
 
1098
+ #: templates/forms/affiliation.php:172
1099
+ msgid "add-another-domain"
1100
  msgstr ""
1101
 
1102
+ #: templates/forms/affiliation.php:176
1103
+ msgid "extra-domain-fields-label"
1104
  msgstr ""
1105
 
1106
+ #: templates/forms/affiliation.php:177
1107
+ msgid "extra-domain-fields-desc"
1108
  msgstr ""
1109
 
1110
+ #: templates/forms/affiliation.php:187
1111
+ msgid "promotion-methods"
1112
  msgstr ""
1113
 
1114
+ #: templates/forms/affiliation.php:190
1115
+ msgid "social-media"
1116
  msgstr ""
1117
 
1118
+ #: templates/forms/affiliation.php:194
1119
+ msgid "mobile-apps"
1120
  msgstr ""
1121
 
1122
+ #: templates/forms/affiliation.php:198
1123
+ msgid "statistics-information-field-label"
1124
  msgstr ""
1125
 
1126
+ #: templates/forms/affiliation.php:201
1127
+ msgid "statistics-information-field-desc"
1128
  msgstr ""
1129
 
1130
+ #: templates/forms/affiliation.php:205
1131
+ msgid "promotion-method-desc-field-label"
1132
  msgstr ""
1133
 
1134
+ #: templates/forms/affiliation.php:208
1135
+ msgid "promotion-method-desc-field-desc"
1136
  msgstr ""
1137
 
1138
+ #: templates/forms/affiliation.php:214, templates/forms/resend-key.php:22, templates/forms/deactivation/form.php:80
1139
+ msgid "cancel"
1140
  msgstr ""
1141
 
1142
+ #: templates/forms/affiliation.php:215, templates/forms/affiliation.php:371
1143
+ msgid "apply-to-become-an-affiliate"
1144
  msgstr ""
1145
 
1146
+ #: templates/forms/affiliation.php:216
1147
+ msgid "become-an-affiliate"
1148
  msgstr ""
1149
 
1150
+ #: templates/forms/affiliation.php:272
1151
+ msgid "email-address-is-required"
1152
  msgstr ""
1153
 
1154
+ #: templates/forms/affiliation.php:278
1155
+ msgid "paypal-email-address-is-required"
1156
  msgstr ""
1157
 
1158
+ #: templates/forms/affiliation.php:288
1159
+ msgid "domain-is-required"
 
1160
  msgstr ""
1161
 
1162
+ #: templates/forms/affiliation.php:291, templates/forms/affiliation.php:305
1163
+ msgid "invalid-domain"
 
1164
  msgstr ""
1165
 
1166
+ #: templates/forms/affiliation.php:361
1167
+ msgid "processing"
 
1168
  msgstr ""
1169
 
1170
+ #: templates/forms/license-activation.php:20
1171
+ msgid "activate-license-message"
 
1172
  msgstr ""
1173
 
1174
+ #: templates/forms/license-activation.php:36
1175
+ msgid "license-sync-disclaimer"
 
1176
  msgstr ""
1177
 
1178
+ #: templates/forms/license-activation.php:41
1179
+ msgid "agree-activate-license"
 
1180
  msgstr ""
1181
 
1182
+ #: templates/forms/optout.php:30
1183
+ msgid "opt-out"
1184
  msgstr ""
1185
 
1186
+ #: templates/forms/optout.php:31
1187
+ msgid "opt-out-message-appreciation"
1188
  msgstr ""
1189
 
1190
+ #: templates/forms/optout.php:32
1191
+ msgid "opt-out-message-usage-tracking"
1192
  msgstr ""
1193
 
1194
+ #: templates/forms/optout.php:34
1195
+ msgid "opt-out-message-clicking-opt-out"
1196
  msgstr ""
1197
 
1198
+ #: templates/forms/resend-key.php:21
1199
+ msgid "send-license-key"
1200
  msgstr ""
1201
 
1202
+ #: templates/forms/resend-key.php:24
1203
+ msgid "reason-other"
1204
  msgstr ""
1205
 
1206
+ #: templates/forms/resend-key.php:57
1207
+ msgid "ask-for-upgrade-email-address"
1208
  msgstr ""
1209
 
1210
+ #: templates/forms/trial-start.php:21
1211
+ msgid "start-trial-prompt-header"
1212
  msgstr ""
1213
 
1214
+ #: templates/forms/trial-start.php:26
1215
+ msgid "start-trial-prompt-message"
1216
  msgstr ""
1217
 
1218
+ #: templates/plugin-info/description.php:72, templates/plugin-info/screenshots.php:31
1219
+ msgid "view-full-size-x"
 
1220
  msgstr ""
1221
 
1222
+ #: templates/plugin-info/features.php:43
1223
+ msgid "Support"
1224
  msgstr ""
1225
 
1226
+ #: templates/plugin-info/features.php:56
1227
+ msgid "unlimited-updates"
1228
  msgstr ""
1229
 
1230
+ #: templates/forms/deactivation/contact.php:16
1231
+ msgid "contact-support-before-deactivation"
1232
  msgstr ""
1233
 
1234
+ #: templates/forms/deactivation/contact.php:19
1235
+ msgid "contact-support"
1236
  msgstr ""
1237
 
1238
+ #: templates/forms/deactivation/form.php:56
1239
+ msgid "anonymous-feedback"
1240
  msgstr ""
1241
 
1242
+ #: templates/forms/deactivation/form.php:243
1243
+ msgid "deactivation-modal-button-submit"
1244
  msgstr ""
1245
 
1246
+ #: templates/forms/deactivation/form.php:245, templates/forms/deactivation/form.php:387, templates/forms/deactivation/form.php:394
1247
+ msgid "deactivate"
1248
  msgstr ""
1249
 
1250
+ #: templates/forms/deactivation/form.php:246, templates/forms/deactivation/form.php:388, templates/forms/deactivation/form.php:395
1251
+ msgid "activate-x"
1252
  msgstr ""
1253
 
1254
+ #: templates/forms/deactivation/form.php:246, templates/forms/deactivation/form.php:388, templates/forms/deactivation/form.php:395
1255
+ msgid "theme"
1256
  msgstr ""
1257
 
1258
+ #: templates/forms/deactivation/form.php:264
1259
+ msgid "ask-for-reason-message"
1260
  msgstr ""
1261
 
1262
+ #: templates/forms/deactivation/form.php:385
1263
+ msgid "deactivation-modal-button-confirm"
1264
  msgstr ""
1265
 
1266
+ #: templates/forms/deactivation/form.php:392
1267
+ msgid "skip-and-x"
1268
  msgstr ""
1269
 
1270
+ #: templates/forms/deactivation/retry-skip.php:21
1271
+ msgid "click-here-to-use-plugin-anonymously"
1272
  msgstr ""
1273
 
1274
+ #: templates/forms/deactivation/retry-skip.php:23
1275
+ msgid "dont-have-to-share-any-data"
1276
  msgstr ""
freemius/package.json DELETED
@@ -1,40 +0,0 @@
1
- {
2
- "name": "freemius-wordpress-sdk",
3
- "version": "1.0.0",
4
- "description": "",
5
- "main": "gulpfile.js",
6
- "dependencies": {
7
- "gulp": "^3.9.1",
8
- "gulp-clean": "^0.3.2",
9
- "gulp-fs": "0.0.2",
10
- "gulp-gettext": "^0.3.0",
11
- "gulp-path": "^3.0.3",
12
- "gulp-pofill": "^1.0.0",
13
- "gulp-rename": "^1.2.2",
14
- "gulp-sort": "^2.0.0",
15
- "gulp-wp-pot": "^2.0.4",
16
- "gulp-transifex": "^0.1.17"
17
- },
18
- "scripts": {
19
- "test": "echo \"Error: no test specified\" && exit 1"
20
- },
21
- "repository": {
22
- "type": "git",
23
- "url": "git+https://github.com/Freemius/wordpress-sdk.git"
24
- },
25
- "author": "Vova Feldman",
26
- "license": "GPL-2.0",
27
- "homepage": "https://freemius.com",
28
- "devDependencies": {
29
- "gulp": "^3.9.1",
30
- "gulp-clean": "^0.3.2",
31
- "gulp-fs": "0.0.2",
32
- "gulp-gettext": "^0.3.0",
33
- "gulp-path": "^3.0.3",
34
- "gulp-pofill": "^1.0.0",
35
- "gulp-rename": "^1.2.2",
36
- "gulp-sort": "^2.0.0",
37
- "gulp-wp-pot": "^2.0.4",
38
- "gulp-transifex": "^0.1.17"
39
- }
40
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
freemius/require.php CHANGED
@@ -28,6 +28,8 @@
28
  require_once WP_FS__DIR_INCLUDES . '/entities/class-fs-user.php';
29
  require_once WP_FS__DIR_INCLUDES . '/entities/class-fs-site.php';
30
  require_once WP_FS__DIR_INCLUDES . '/entities/class-fs-plugin.php';
 
 
31
  require_once WP_FS__DIR_INCLUDES . '/entities/class-fs-plugin-info.php';
32
  require_once WP_FS__DIR_INCLUDES . '/entities/class-fs-plugin-tag.php';
33
  require_once WP_FS__DIR_INCLUDES . '/entities/class-fs-plugin-plan.php';
28
  require_once WP_FS__DIR_INCLUDES . '/entities/class-fs-user.php';
29
  require_once WP_FS__DIR_INCLUDES . '/entities/class-fs-site.php';
30
  require_once WP_FS__DIR_INCLUDES . '/entities/class-fs-plugin.php';
31
+ require_once WP_FS__DIR_INCLUDES . '/entities/class-fs-affiliate.php';
32
+ require_once WP_FS__DIR_INCLUDES . '/entities/class-fs-affiliate-terms.php';
33
  require_once WP_FS__DIR_INCLUDES . '/entities/class-fs-plugin-info.php';
34
  require_once WP_FS__DIR_INCLUDES . '/entities/class-fs-plugin-tag.php';
35
  require_once WP_FS__DIR_INCLUDES . '/entities/class-fs-plugin-plan.php';
freemius/start.php CHANGED
@@ -15,7 +15,7 @@
15
  *
16
  * @var string
17
  */
18
- $this_sdk_version = '1.2.2.9';
19
 
20
  #region SDK Selection Logic --------------------------------------------------------------------
21
 
@@ -364,11 +364,11 @@
364
  define( 'WP_FS__SDK_VERSION', $this_sdk_version );
365
  }
366
 
367
- $plugins_or_theme_dir_path = trailingslashit( $is_theme ?
368
  get_theme_root() :
369
- WP_PLUGIN_DIR );
370
 
371
- if ( 0 === strpos( $file_path, fs_normalize_path( $plugins_or_theme_dir_path ) ) ) {
372
  // No symlinks
373
  } else {
374
  /**
@@ -384,13 +384,24 @@
384
  is_object( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) &&
385
  ! empty( $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink )
386
  ) {
387
- $sdk_symlink = $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink;
388
- $realpath = realpath( $sdk_symlink );
389
-
390
- if ( ! is_string( $realpath ) || ! file_exists( $realpath ) ) {
391
- $sdk_symlink = null;
392
- }
393
- }
 
 
 
 
 
 
 
 
 
 
 
394
 
395
  if ( empty( $sdk_symlink ) ) // Has symlinks, therefore, we need to configure WP_FS__DIR based on the symlink.
396
  {
@@ -401,13 +412,26 @@
401
  while ( '/' !== $partial_path_left &&
402
  ( false === $realpath || $file_path !== fs_normalize_path( $realpath ) )
403
  ) {
404
- $partial_path_right = trailingslashit( basename( $partial_path_left ) ) . $partial_path_right;
405
- $partial_path_left = dirname( $partial_path_left );
406
- $realpath = realpath( $plugins_or_theme_dir_path . $partial_path_right );
 
 
 
 
 
 
 
 
 
 
 
 
 
407
  }
408
 
409
- if ( '/' !== $partial_path_left ) {
410
- $sdk_symlink = fs_normalize_path( $plugins_or_theme_dir_path . dirname( $partial_path_right ) );
411
 
412
  // Cache value.
413
  if ( isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) &&
@@ -416,13 +440,12 @@
416
  $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink = $sdk_symlink;
417
  update_option( 'fs_active_plugins', $fs_active_plugins );
418
  }
419
-
420
  }
421
  }
422
 
423
  if ( ! empty( $sdk_symlink ) ) {
424
  // Set SDK dir to the symlink path.
425
- define( 'WP_FS__DIR', $sdk_symlink );
426
  }
427
  }
428
 
15
  *
16
  * @var string
17
  */
18
+ $this_sdk_version = '1.2.2.10';
19
 
20
  #region SDK Selection Logic --------------------------------------------------------------------
21
 
364
  define( 'WP_FS__SDK_VERSION', $this_sdk_version );
365
  }
366
 
367
+ $plugins_or_theme_dir_path = fs_normalize_path( trailingslashit( $is_theme ?
368
  get_theme_root() :
369
+ WP_PLUGIN_DIR ) );
370
 
371
+ if ( 0 === strpos( $file_path, $plugins_or_theme_dir_path ) ) {
372
  // No symlinks
373
  } else {
374
  /**
384
  is_object( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) &&
385
  ! empty( $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink )
386
  ) {
387
+ $sdk_symlink = $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink;
388
+ if ( 0 === strpos( $sdk_symlink, $plugins_or_theme_dir_path ) ) {
389
+ /**
390
+ * Make the symlink path relative.
391
+ *
392
+ * @author Leo Fajardo (@leorw)
393
+ */
394
+ $sdk_symlink = substr( $sdk_symlink, strlen( $plugins_or_theme_dir_path ) );
395
+
396
+ $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink = $sdk_symlink;
397
+ update_option( 'fs_active_plugins', $fs_active_plugins );
398
+ }
399
+
400
+ $realpath = realpath( $plugins_or_theme_dir_path . $sdk_symlink );
401
+ if ( ! is_string( $realpath ) || ! file_exists( $realpath ) ) {
402
+ $sdk_symlink = null;
403
+ }
404
+ }
405
 
406
  if ( empty( $sdk_symlink ) ) // Has symlinks, therefore, we need to configure WP_FS__DIR based on the symlink.
407
  {
412
  while ( '/' !== $partial_path_left &&
413
  ( false === $realpath || $file_path !== fs_normalize_path( $realpath ) )
414
  ) {
415
+ $partial_path_right = trailingslashit( basename( $partial_path_left ) ) . $partial_path_right;
416
+ $partial_path_left_prev = $partial_path_left;
417
+ $partial_path_left = dirname( $partial_path_left_prev );
418
+
419
+ /**
420
+ * Avoid infinite loop if for example `$partial_path_left_prev` is `C:/`, in this case,
421
+ * `dirname( 'C:/' )` will return `C:/`.
422
+ *
423
+ * @author Leo Fajardo (@leorw)
424
+ */
425
+ if ( $partial_path_left === $partial_path_left_prev ) {
426
+ $partial_path_left = '';
427
+ break;
428
+ }
429
+
430
+ $realpath = realpath( $plugins_or_theme_dir_path . $partial_path_right );
431
  }
432
 
433
+ if ( ! empty( $partial_path_left ) && '/' !== $partial_path_left ) {
434
+ $sdk_symlink = fs_normalize_path( dirname( $partial_path_right ) );
435
 
436
  // Cache value.
437
  if ( isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) &&
440
  $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink = $sdk_symlink;
441
  update_option( 'fs_active_plugins', $fs_active_plugins );
442
  }
 
443
  }
444
  }
445
 
446
  if ( ! empty( $sdk_symlink ) ) {
447
  // Set SDK dir to the symlink path.
448
+ define( 'WP_FS__DIR', $plugins_or_theme_dir_path . $sdk_symlink );
449
  }
450
  }
451
 
freemius/templates/account.php CHANGED
@@ -47,20 +47,44 @@
47
  if ( $has_tabs ) {
48
  $query_params['tabs'] = 'true';
49
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  ?>
51
  <div class="wrap fs-section">
52
- <?php if ( ! $has_tabs && ! $fs->apply_filters( 'hide_account_tabs', false )) : ?>
53
  <h2 class="nav-tab-wrapper">
54
  <a href="<?php echo $fs->get_account_url() ?>"
55
- class="nav-tab nav-tab-active"><?php fs_echo( 'account', $slug ) ?></a>
56
  <?php if ( $fs->has_addons() ) : ?>
57
  <a href="<?php echo $fs->_get_admin_page_url( 'addons' ) ?>"
58
- class="nav-tab"><?php fs_echo( 'add-ons', $slug ) ?></a>
59
  <?php endif ?>
60
  <?php if ( $show_upgrade ) : ?>
61
- <a href="<?php echo $fs->get_upgrade_url() ?>" class="nav-tab"><?php fs_echo( 'upgrade', $slug ) ?></a>
62
  <?php if ( $fs->apply_filters( 'show_trial', true ) && ! $fs->is_trial_utilized() && $fs->has_trial_plan() ) : ?>
63
- <a href="<?php echo $fs->get_trial_url() ?>" class="nav-tab"><?php fs_echo( 'free-trial', $slug ) ?></a>
64
  <?php endif ?>
65
  <?php endif ?>
66
  </h2>
@@ -71,7 +95,7 @@
71
  <div class="has-sidebar has-right-sidebar">
72
  <div class="has-sidebar-content">
73
  <div class="postbox">
74
- <h3><span class="dashicons dashicons-businessman"></span> <?php fs_echo( 'account-details', $slug ) ?></h3>
75
  <div class="fs-header-actions">
76
  <ul>
77
  <?php if ( ! $is_paying ) : ?>
@@ -81,12 +105,12 @@
81
  <?php wp_nonce_field( 'delete_account' ) ?>
82
  <a href="#" onclick="if (confirm('<?php
83
  if ( $is_active_subscription ) {
84
- echo esc_attr( sprintf( fs_text( 'delete-account-x-confirm', $slug ), $plan->title ) );
85
  } else {
86
- echo sprintf( fs_text( 'delete-account-confirm', $slug ), $fs->get_module_type() );
87
  }
88
  ?>')) this.parentNode.submit(); return false;"><i
89
- class="dashicons dashicons-no"></i> <?php fs_echo( 'delete-account', $slug ) ?></a>
90
  </form>
91
  </li>
92
  <li>&nbsp;&bull;&nbsp;</li>
@@ -97,8 +121,8 @@
97
  <input type="hidden" name="fs_action" value="deactivate_license">
98
  <?php wp_nonce_field( 'deactivate_license' ) ?>
99
  <a href="#"
100
- onclick="if (confirm('<?php fs_echo( 'deactivate-license-confirm', $slug ) ?>')) this.parentNode.submit(); return false;"><i
101
- class="dashicons dashicons-admin-network"></i> <?php fs_echo( 'deactivate-license', $slug ) ?>
102
  </a>
103
  </form>
104
  </li>
@@ -111,11 +135,11 @@
111
  <input type="hidden" name="fs_action" value="downgrade_account">
112
  <?php wp_nonce_field( 'downgrade_account' ) ?>
113
  <a href="#"
114
- onclick="if (confirm('<?php printf( fs_text( 'downgrade-x-confirm', $slug ), $plan->title, human_time_diff( time(), strtotime( $license->expiration ) ) ) ?> <?php if ( ! $license->is_block_features ) {
115
- printf( fs_text( 'after-downgrade-non-blocking', $slug ), $plan->title, $fs->get_module_type() );
116
  } else {
117
- printf( fs_text( 'after-downgrade-blocking', $slug ), $plan->title );
118
- }?> <?php fs_echo( 'proceed-confirmation', $slug ) ?>')) this.parentNode.submit(); return false;"><i class="dashicons dashicons-download"></i> <?php fs_echo( ( $fs->is_only_premium() ? 'cancel-subscription' : 'downgrade' ), $slug ) ?></a>
119
  </form>
120
  </li>
121
  <li>&nbsp;&bull;&nbsp;</li>
@@ -123,7 +147,7 @@
123
  <?php if ( ! $fs->is_single_plan() ) : ?>
124
  <li>
125
  <a href="<?php echo $fs->get_upgrade_url() ?>"><i
126
- class="dashicons dashicons-grid-view"></i> <?php fs_echo( 'change-plan', $slug ) ?></a>
127
  </li>
128
  <li>&nbsp;&bull;&nbsp;</li>
129
  <?php endif ?>
@@ -133,8 +157,8 @@
133
  <input type="hidden" name="fs_action" value="cancel_trial">
134
  <?php wp_nonce_field( 'cancel_trial' ) ?>
135
  <a href="#"
136
- onclick="if (confirm('<?php fs_echo( 'cancel-trial-confirm' ) ?>')) this.parentNode.submit(); return false;"><i
137
- class="dashicons dashicons-download"></i> <?php fs_echo( 'cancel-trial', $slug ) ?></a>
138
  </form>
139
  </li>
140
  <li>&nbsp;&bull;&nbsp;</li>
@@ -144,7 +168,7 @@
144
  <input type="hidden" name="fs_action" value="<?php echo $fs->get_unique_affix() ?>_sync_license">
145
  <?php wp_nonce_field( $fs->get_unique_affix() . '_sync_license' ) ?>
146
  <a href="#" onclick="this.parentNode.submit(); return false;"><i
147
- class="dashicons dashicons-image-rotate"></i> <?php fs_echo( 'sync', $slug ) ?></a>
148
  </form>
149
  </li>
150
 
@@ -158,50 +182,50 @@
158
  $profile = array();
159
  $profile[] = array(
160
  'id' => 'user_name',
161
- 'title' => fs_text( 'name', $slug ),
162
  'value' => $name
163
  );
164
  // if (isset($user->email) && false !== strpos($user->email, '@'))
165
  $profile[] = array(
166
  'id' => 'email',
167
- 'title' => fs_text( 'email', $slug ),
168
  'value' => $user->email
169
  );
170
 
171
  if ( is_numeric( $user->id ) ) {
172
  $profile[] = array(
173
  'id' => 'user_id',
174
- 'title' => fs_text( 'user-id', $slug ),
175
  'value' => $user->id
176
  );
177
  }
178
 
179
  $profile[] = array(
180
  'id' => 'site_id',
181
- 'title' => fs_text( 'site-id', $slug ),
182
  'value' => is_string( $site->id ) ?
183
  $site->id :
184
- fs_text( 'no-id', $slug )
185
  );
186
 
187
  $profile[] = array(
188
  'id' => 'site_public_key',
189
- 'title' => fs_text( 'public-key', $slug ),
190
  'value' => $site->public_key
191
  );
192
 
193
  $profile[] = array(
194
  'id' => 'site_secret_key',
195
- 'title' => fs_text( 'secret-key', $slug ),
196
  'value' => ( ( is_string( $site->secret_key ) ) ?
197
  $site->secret_key :
198
- fs_text( 'no-secret', $slug )
199
  )
200
  );
201
 
202
  $profile[] = array(
203
  'id' => 'version',
204
- 'title' => fs_text( 'version', $slug ),
205
  'value' => $fs->get_plugin_version()
206
  );
207
 
@@ -211,25 +235,26 @@
211
 
212
  $profile[] = array(
213
  'id' => 'plan',
214
- 'title' => fs_text( 'plan', $slug ),
215
  'value' => ( is_string( $trial_plan->name ) ?
216
  strtoupper( $trial_plan->title ) :
217
- fs_text( 'trial', $slug ) )
218
  );
219
  } else {
220
  $profile[] = array(
221
  'id' => 'plan',
222
- 'title' => fs_text( 'plan', $slug ),
223
- 'value' => is_string( $site->plan->name ) ?
224
- strtoupper( $site->plan->title ) :
225
- strtoupper( fs_text( 'free', $slug ) )
 
226
  );
227
 
228
  if ( is_object( $license ) ) {
229
  if ( ! $hide_license_key ) {
230
  $profile[] = array(
231
  'id' => 'license_key',
232
- 'title' => fs_text( 'License Key', $slug ),
233
  'value' => $license->secret_key,
234
  );
235
  }
@@ -259,21 +284,21 @@
259
  <code><?php echo htmlspecialchars( $p['value'] ) ?></code>
260
  <?php endif ?>
261
  <?php if ( 'email' === $p['id'] && ! $user->is_verified() ) : ?>
262
- <label class="fs-tag fs-warn"><?php fs_esc_html_echo( 'not-verified', $slug ) ?></label>
263
  <?php endif ?>
264
  <?php if ( 'plan' === $p['id'] ) : ?>
265
  <?php if ( $fs->is_trial() ) : ?>
266
- <label class="fs-tag fs-success"><?php fs_esc_html_echo( 'trial', $slug ) ?></label>
267
  <?php endif ?>
268
  <?php if ( is_object( $license ) && ! $license->is_lifetime() ) : ?>
269
  <?php if ( ! $is_active_subscription && ! $license->is_first_payment_pending() ) : ?>
270
  <label
271
- class="fs-tag fs-warn"><?php echo esc_html( sprintf( fs_text( 'expires-in', $slug ), human_time_diff( time(), strtotime( $license->expiration ) ) ) ) ?></label>
272
  <?php elseif ( $is_active_subscription && ! $subscription->is_first_payment_pending() ) : ?>
273
- <label class="fs-tag fs-success"><?php echo esc_html( sprintf( fs_text( 'renews-in', $slug ), human_time_diff( time(), strtotime( $subscription->next_payment ) ) ) ) ?></label>
274
  <?php endif ?>
275
  <?php elseif ( $fs->is_trial() ) : ?>
276
- <label class="fs-tag fs-warn"><?php echo esc_html( sprintf( fs_text( 'expires-in', $slug ), human_time_diff( time(), strtotime( $site->trial_ends ) ) ) ) ?></label>
277
  <?php endif ?>
278
  <div class="button-group">
279
  <?php $available_license = $fs->is_free_plan() ? $fs->_get_available_premium_license() : false ?>
@@ -286,15 +311,15 @@
286
  <?php wp_nonce_field( 'activate_license' ) ?>
287
  <input type="submit" class="button button-primary"
288
  value="<?php echo esc_attr( sprintf(
289
- fs_text( 'activate-x-plan', $slug ) . '%s',
290
  $premium_plan->title,
291
  ( $site->is_localhost() && $available_license->is_free_localhost ) ?
292
- ' [' . fs_text( 'localhost', $slug ) . ']' :
293
  ( $available_license->is_single_site() ?
294
  '' :
295
  ' [' . ( 1 < $available_license->left() ?
296
- sprintf( fs_text( 'x-left', $slug ), $available_license->left() ) :
297
- strtolower( fs_text( 'last-license', $slug ) ) ) . ']'
298
  )
299
  ) ) ?> ">
300
  </form>
@@ -302,10 +327,10 @@
302
  <form action="<?php echo $fs->_get_admin_page_url( 'account' ) ?>"
303
  method="POST" class="button-group">
304
  <?php if ( $show_upgrade && $fs->is_premium() ) : ?>
305
- <a class="button activate-license-trigger <?php echo $fs->get_unique_affix() ?>" href="#"><?php fs_esc_html_echo( 'activate-license', $slug ) ?></a>
306
  <?php endif ?>
307
  <input type="submit" class="button"
308
- value="<?php fs_esc_attr_echo( 'sync-license', $slug ) ?>">
309
  <input type="hidden" name="fs_action"
310
  value="<?php echo $fs->get_unique_affix() ?>_sync_license">
311
  <?php wp_nonce_field( $fs->get_unique_affix() . '_sync_license' ) ?>
@@ -315,7 +340,7 @@
315
  echo $show_upgrade ?
316
  ' button-primary fs-upgrade' :
317
  ' fs-change-plan'; ?> button-upgrade"><i
318
- class="dashicons dashicons-cart"></i> <?php fs_esc_html_echo( $show_upgrade ? 'upgrade' : 'change-plan', $slug ) ?></a>
319
  <?php endif ?>
320
  </form>
321
  <?php endif ?>
@@ -324,9 +349,9 @@
324
  <?php if ( $fs->has_premium_version() ) : ?>
325
  <?php if ( $fs->is_premium() ) : ?>
326
  <label
327
- class="fs-tag fs-<?php echo $fs->can_use_premium_code() ? 'success' : 'warn' ?>"><?php fs_esc_html_echo( 'premium-version', $slug ) ?></label>
328
  <?php elseif ( $fs->can_use_premium_code() ) : ?>
329
- <label class="fs-tag fs-warn"><?php fs_esc_html_echo( 'free-version', $slug ) ?></label>
330
  <?php endif ?>
331
  <?php endif ?>
332
  <?php endif ?>
@@ -338,7 +363,7 @@
338
  <input type="hidden" name="fs_action" value="verify_email">
339
  <?php wp_nonce_field( 'verify_email' ) ?>
340
  <input type="submit" class="button button-small"
341
- value="<?php fs_esc_attr_echo( 'verify-email', $slug ) ?>">
342
  </form>
343
  <?php endif ?>
344
  <?php if ( 'version' === $p['id'] ) : ?>
@@ -347,22 +372,25 @@
347
  <?php if ( $is_paying || $fs->is_trial() ) : ?>
348
  <?php if ( ! $fs->is_allowed_to_install() ) : ?>
349
  <a target="_blank" class="button button-primary"
350
- href="<?php echo $fs->_get_latest_download_local_url() ?>"><?php echo sprintf( fs_text( 'download-x-version', $slug ), ( $fs->is_trial() ? $trial_plan->title : $site->plan->title ) ) . ( is_object( $update ) ? ' [' . $update->version . ']' : '' ) ?></a>
 
 
 
351
  <?php elseif ( is_object( $update ) ) : ?>
352
  <?php
353
  $module_type = $fs->get_module_type();
354
  ?>
355
  <a class="button button-primary"
356
- href="<?php echo wp_nonce_url( self_admin_url( "update.php?action=upgrade-{$module_type}&{$module_type}=" . $fs->get_plugin_basename() ), "upgrade-{$module_type}_" . $fs->get_plugin_basename() ) ?>"><?php echo fs_esc_html( 'install-update-now', $slug ) . ' [' . $update->version . ']' ?></a>
357
  <?php endif ?>
358
  <?php endif; ?>
359
  </div>
360
  <?php endif ?>
361
  <?php
362
  elseif ( in_array( $p['id'], array( 'license_key', 'site_secret_key' ) ) ) : ?>
363
- <button class="button button-small fs-toggle-visibility"><?php fs_esc_html_echo( 'show', $slug ) ?></button>
364
  <?php if ('license_key' === $p['id']) : ?>
365
- <button class="button button-small activate-license-trigger <?php echo $fs->get_unique_affix() ?>"><?php fs_esc_html_echo( 'change-license', $slug ) ?></button>
366
  <?php endif ?>
367
  <?php
368
  elseif (/*in_array($p['id'], array('site_secret_key', 'site_id', 'site_public_key')) ||*/
@@ -372,13 +400,17 @@
372
  ) ) )
373
  ) : ?>
374
  <form action="<?php echo $fs->_get_admin_page_url( 'account' ) ?>" method="POST"
375
- onsubmit="var val = prompt('<?php echo esc_attr( sprintf( fs_text( 'what-is-your-x', $slug ), $p['title'] ) ) ?>', '<?php echo $p['value'] ?>'); if (null == val || '' === val) return false; jQuery('input[name=fs_<?php echo $p['id'] ?>_<?php echo $fs->get_unique_affix() ?>]').val(val); return true;">
 
 
 
 
376
  <input type="hidden" name="fs_action" value="update_<?php echo $p['id'] ?>">
377
  <input type="hidden" name="fs_<?php echo $p['id'] ?>_<?php echo $fs->get_unique_affix() ?>"
378
  value="">
379
  <?php wp_nonce_field( 'update_' . $p['id'] ) ?>
380
  <input type="submit" class="button button-small"
381
- value="<?php fs_esc_attr_echo( 'edit', $slug ) ?>">
382
  </form>
383
  <?php endif ?>
384
  </td>
@@ -401,13 +433,13 @@
401
  $input.toggle();
402
 
403
  if ($input.is(':visible')) {
404
- $this.html(<?php fs_json_encode_echo( 'hide', $slug ) ?>);
405
  setTimeout(function () {
406
  $input.select().focus();
407
  }, 100);
408
  }
409
  else {
410
- $this.html(<?php fs_json_encode_echo( 'show', $slug ) ?>);
411
  }
412
  });
413
  }(jQuery));
@@ -436,11 +468,11 @@
436
  <table id="fs_addons" class="widefat">
437
  <thead>
438
  <tr>
439
- <th><h3><?php fs_esc_html_echo( 'add-ons', $slug ) ?></h3></th>
440
- <th><?php fs_esc_html_echo( 'id', $slug ) ?></th>
441
- <th><?php fs_esc_html_echo( 'version', $slug ) ?></th>
442
- <th><?php fs_esc_html_echo( 'plan', $slug ) ?></th>
443
- <th><?php fs_esc_html_echo( 'license', $slug ) ?></th>
444
  <th></th>
445
  <?php if ( defined( 'WP_FS__DEV_MODE' ) && WP_FS__DEV_MODE ) : ?>
446
  <th></th>
@@ -492,7 +524,7 @@
492
  </td>
493
  <td>
494
  <!-- Plan Title -->
495
- <?php echo is_string( $addon_site->plan->name ) ? strtoupper( $addon_site->plan->title ) : 'FREE' ?>
496
  </td>
497
  <td>
498
  <!-- Expiration -->
@@ -500,37 +532,42 @@
500
  $tags = array();
501
 
502
  if ( $fs_addon->is_trial() ) {
503
- $tags[] = array( 'label' => fs_text( 'trial', $slug ), 'type' => 'success' );
504
 
505
  $tags[] = array(
506
- 'label' => sprintf( fs_text( ( $is_paid_trial ? 'renews-in' : 'expires-in' ), $slug ), human_time_diff( time(), strtotime( $site->trial_ends ) ) ),
 
 
 
 
 
507
  'type' => ( $is_paid_trial ? 'success' : 'warn' )
508
  );
509
  } else {
510
  if ( is_object( $license ) ) {
511
  if ( $license->is_cancelled ) {
512
  $tags[] = array(
513
- 'label' => fs_text( 'cancelled', $slug ),
514
  'type' => 'error'
515
  );
516
  } else if ( $license->is_expired() ) {
517
  $tags[] = array(
518
- 'label' => fs_text( 'expired', $slug ),
519
  'type' => 'error'
520
  );
521
  } else if ( $license->is_lifetime() ) {
522
  $tags[] = array(
523
- 'label' => fs_text( 'no-expiration', $slug ),
524
  'type' => 'success'
525
  );
526
  } else if ( ! $is_active_subscription && ! $license->is_first_payment_pending() ) {
527
  $tags[] = array(
528
- 'label' => sprintf( fs_text( 'expires-in', $slug ), human_time_diff( time(), strtotime( $license->expiration ) ) ),
529
  'type' => 'warn'
530
  );
531
  } else if ( $is_active_subscription && ! $subscription->is_first_payment_pending() ) {
532
  $tags[] = array(
533
- 'label' => sprintf( fs_text( 'renews-in', $slug ), human_time_diff( time(), strtotime( $subscription->next_payment ) ) ),
534
  'type' => 'success'
535
  );
536
  }
@@ -550,26 +587,28 @@
550
  $fs->get_id(),
551
  'account',
552
  'deactivate_license',
553
- fs_text( 'deactivate-license', $slug ),
554
  array( 'plugin_id' => $addon_id ),
555
  false
556
  );
557
 
558
  $human_readable_license_expiration = human_time_diff( time(), strtotime( $license->expiration ) );
559
- $downgrade_confirmation_message = sprintf( fs_text( 'downgrade-x-confirm', $slug ),
 
560
  $plan->title,
561
- $human_readable_license_expiration );
 
562
 
563
  $after_downgrade_message = ! $license->is_block_features ?
564
- sprintf( fs_text( 'after-downgrade-non-blocking', $slug ), $plan->title, $fs->get_module_type() ) :
565
- sprintf( fs_text( 'after-downgrade-blocking', $slug ), $plan->title );
566
 
567
  if ( ! $license->is_lifetime() && $is_active_subscription ) {
568
  $buttons[] = fs_ui_get_action_button(
569
  $fs->get_id(),
570
  'account',
571
  'downgrade_account',
572
- fs_text( 'downgrade', $slug ),
573
  array( 'plugin_id' => $addon_id ),
574
  false,
575
  false,
@@ -582,11 +621,11 @@
582
  $fs->get_id(),
583
  'account',
584
  'cancel_trial',
585
- fs_text( 'cancel-trial', $slug ),
586
  array( 'plugin_id' => $addon_id ),
587
  false,
588
  'dashicons dashicons-download',
589
- fs_text( 'cancel-trial-confirm', $slug ),
590
  'POST'
591
  );
592
  } else {
@@ -599,7 +638,7 @@
599
  $fs->get_id(),
600
  'account',
601
  'activate_license',
602
- sprintf( fs_text( 'activate-x-plan', $slug ), $fs_addon->get_plan_title(), ( $site->is_localhost() && $premium_license->is_free_localhost ) ? '[localhost]' : ( 1 < $premium_license->left() ? $premium_license->left() . ' left' : '' ) ),
603
  array(
604
  'plugin_id' => $addon_id,
605
  'license_id' => $premium_license->id,
@@ -614,7 +653,7 @@
614
  $fs->get_id(),
615
  'account',
616
  $fs->get_unique_affix() . '_sync_license',
617
- fs_text( 'sync-license', $slug ),
618
  array( 'plugin_id' => $addon_id ),
619
  false
620
  );
@@ -626,21 +665,21 @@
626
  $buttons[] = sprintf(
627
  '<a class="button button-primary edit" href="%s" title="%s">%s</a>',
628
  wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $addon_file, 'activate-plugin_' . $addon_file ),
629
- fs_esc_attr( 'activate-this-addon', $slug ),
630
- fs_text( 'activate', $slug )
631
  );
632
  } else {
633
  if ( $fs->is_allowed_to_install() ) {
634
  $buttons[] = sprintf(
635
  '<a class="button button-primary edit" href="%s">%s</a>',
636
  wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ),
637
- fs_text( 'install-now', $slug )
638
  );
639
  } else {
640
  $buttons[] = sprintf(
641
  '<a target="_blank" class="button button-primary edit" href="%s">%s</a>',
642
  $fs->_get_latest_download_local_url( $addon_id ),
643
- fs_text( 'download-latest', $slug )
644
  );
645
  }
646
  }
@@ -650,9 +689,11 @@
650
  $buttons[] = sprintf( '<a href="%s" class="thickbox button button-primary" aria-label="%s" data-title="%s"><i class="dashicons dashicons-cart"></i> %s</a>',
651
  esc_url( network_admin_url( 'plugin-install.php?tab=plugin-information&parent_plugin_id=' . $fs->get_id() . '&plugin=' . $addon->slug .
652
  '&TB_iframe=true&width=600&height=550' ) ),
653
- esc_attr( sprintf( fs_text( 'more-information-about-x', $slug ), $addon->title ) ),
654
  esc_attr( $addon->title ),
655
- fs_text( ( $fs_addon->has_free_plan() ? 'upgrade' : 'purchase' ), $slug )
 
 
656
  );
657
  }
658
 
@@ -680,15 +721,15 @@
680
  <?php $addon_file = $fs->get_addon_basename( $addon_id ) ?>
681
  <a class="button button-primary"
682
  href="<?php echo wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $addon_file, 'activate-plugin_' . $addon_file ) ?>"
683
- title="<?php fs_esc_attr_echo( 'activate-this-addon', $slug ) ?>"
684
- class="edit"><?php fs_esc_html_echo( 'activate', $slug ) ?></a>
685
  <?php else : ?>
686
  <?php if ( $fs->is_allowed_to_install() ) : ?>
687
  <a class="button button-primary"
688
- href="<?php echo wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ) ?>"><?php fs_esc_html_echo( 'install-now', $slug ) ?></a>
689
  <?php else : ?>
690
  <a target="_blank" class="button button-primary"
691
- href="<?php echo $fs->_get_latest_download_local_url( $addon_id ) ?>"><?php fs_esc_html_echo( 'download-latest', $slug ) ?></a>
692
  <?php endif ?>
693
  <?php endif ?>
694
  </td>
@@ -701,7 +742,7 @@
701
  fs_ui_action_button(
702
  $fs->get_id(), 'account',
703
  'delete_account',
704
- fs_text( 'delete', $slug ),
705
  array( 'plugin_id' => $addon_id ),
706
  false
707
  );
47
  if ( $has_tabs ) {
48
  $query_params['tabs'] = 'true';
49
  }
50
+
51
+ // Aliases.
52
+ $download_latest_text = fs_text_x_inline( 'Download Latest', 'as download latest version', 'download-latest', $slug );
53
+ $downgrade_x_confirm_text = fs_text_inline( 'Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s.', 'downgrade-x-confirm', $slug );
54
+ $cancel_trial_confirm_text = fs_text_inline( 'Cancelling the trial will immediately block access to all premium features. Are you sure?', 'cancel-trial-confirm', $slug );
55
+ $after_downgrade_non_blocking_text = fs_text_inline( 'You can still enjoy all %s features but you will not have access to %s updates and support.', 'after-downgrade-non-blocking', $slug );
56
+ $after_downgrade_blocking_text = fs_text_inline( 'Once your license expires you can still use the Free version but you will NOT have access to the %s features.', 'after-downgrade-blocking', $slug );
57
+ /* translators: %s: Plan title (e.g. "Professional") */
58
+ $activate_plan_text = fs_text_inline( 'Activate %s Plan', 'activate-x-plan', $slug );
59
+ $version_text = fs_text_x_inline( 'Version', 'product version', 'version', $slug );
60
+ /* translators: %s: Time period (e.g. Auto renews in "2 months") */
61
+ $renews_in_text = fs_text_inline( 'Auto renews in %s', 'renews-in', $slug );
62
+ /* translators: %s: Time period (e.g. Expires in "2 months") */
63
+ $expires_in_text = fs_text_inline( 'Expires in %s', 'expires-in', $slug );
64
+ $sync_license_text = fs_text_x_inline( 'Sync License', 'as synchronize license', 'sync-license', $slug );
65
+ $cancel_trial_text = fs_text_inline( 'Cancel Trial', 'cancel-trial', $slug );
66
+ $change_plan_text = fs_text_inline( 'Change Plan', 'change-plan', $slug );
67
+ $upgrade_text = fs_text_x_inline( 'Upgrade', 'verb', 'upgrade', $slug );
68
+ $addons_text = fs_text_inline( 'Add-Ons', 'add-ons', $slug );
69
+ $downgrade_text = fs_text_x_inline( 'Downgrade', 'verb', 'downgrade', $slug );
70
+ $trial_text = fs_text_x_inline( 'Trial', 'trial period', 'trial', $slug );
71
+ $free_text = fs_text_inline( 'Free', 'free', $slug );
72
+ $activate_text = fs_text_inline( 'Activate', 'activate', $slug );
73
+ $plan_text = fs_text_x_inline( 'Plan', 'as product pricing plan', 'plan', $slug );
74
  ?>
75
  <div class="wrap fs-section">
76
+ <?php if ( ! $has_tabs && ! $fs->apply_filters( 'hide_account_tabs', false ) ) : ?>
77
  <h2 class="nav-tab-wrapper">
78
  <a href="<?php echo $fs->get_account_url() ?>"
79
+ class="nav-tab nav-tab-active"><?php fs_esc_html_echo_inline( 'Account', 'account', $slug ) ?></a>
80
  <?php if ( $fs->has_addons() ) : ?>
81
  <a href="<?php echo $fs->_get_admin_page_url( 'addons' ) ?>"
82
+ class="nav-tab"><?php echo esc_html( $addons_text ) ?></a>
83
  <?php endif ?>
84
  <?php if ( $show_upgrade ) : ?>
85
+ <a href="<?php echo $fs->get_upgrade_url() ?>" class="nav-tab"><?php echo esc_html( $upgrade_text ) ?></a>
86
  <?php if ( $fs->apply_filters( 'show_trial', true ) && ! $fs->is_trial_utilized() && $fs->has_trial_plan() ) : ?>
87
+ <a href="<?php echo $fs->get_trial_url() ?>" class="nav-tab"><?php fs_esc_html_echo_inline( 'Free Trial', 'free-trial', $slug ) ?></a>
88
  <?php endif ?>
89
  <?php endif ?>
90
  </h2>
95
  <div class="has-sidebar has-right-sidebar">
96
  <div class="has-sidebar-content">
97
  <div class="postbox">
98
+ <h3><span class="dashicons dashicons-businessman"></span> <?php fs_esc_html_echo_inline( 'Account Details', 'account-details', $slug ) ?></h3>
99
  <div class="fs-header-actions">
100
  <ul>
101
  <?php if ( ! $is_paying ) : ?>
105
  <?php wp_nonce_field( 'delete_account' ) ?>
106
  <a href="#" onclick="if (confirm('<?php
107
  if ( $is_active_subscription ) {
108
+ echo esc_attr( sprintf( fs_text_inline( '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?', 'delete-account-x-confirm', $slug ), $plan->title ) );
109
  } else {
110
+ echo esc_attr( sprintf( fs_text_inline( '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?', 'delete-account-confirm', $slug ), $fs->get_module_label( true ) ) );
111
  }
112
  ?>')) this.parentNode.submit(); return false;"><i
113
+ class="dashicons dashicons-no"></i> <?php fs_esc_html_echo_inline( 'Delete Account', 'delete-account', $slug ) ?></a>
114
  </form>
115
  </li>
116
  <li>&nbsp;&bull;&nbsp;</li>
121
  <input type="hidden" name="fs_action" value="deactivate_license">
122
  <?php wp_nonce_field( 'deactivate_license' ) ?>
123
  <a href="#"
124
+ onclick="if (confirm('<?php fs_esc_attr_echo_inline( 'Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?', 'deactivate-license-confirm', $slug ) ?>')) this.parentNode.submit(); return false;"><i
125
+ class="dashicons dashicons-admin-network"></i> <?php fs_echo_inline( 'Deactivate License', 'deactivate-license', $slug ) ?>
126
  </a>
127
  </form>
128
  </li>
135
  <input type="hidden" name="fs_action" value="downgrade_account">
136
  <?php wp_nonce_field( 'downgrade_account' ) ?>
137
  <a href="#"
138
+ onclick="if ( confirm('<?php echo esc_attr( sprintf( $downgrade_x_confirm_text, $plan->title, human_time_diff( time(), strtotime( $license->expiration ) ) ) ) ?> <?php if ( ! $license->is_block_features ) {
139
+ echo esc_attr( sprintf( $after_downgrade_non_blocking_text, $plan->title, $fs->get_module_label( true ) ) );
140
  } else {
141
+ echo esc_attr( sprintf( $after_downgrade_blocking_text, $plan->title ) );
142
+ }?> <?php fs_esc_attr_echo_inline( 'Are you sure you want to proceed?', 'proceed-confirmation', $slug ) ?>') ) this.parentNode.submit(); return false;"><i class="dashicons dashicons-download"></i> <?php echo esc_html( $fs->is_only_premium() ? fs_text_inline( 'Cancel Subscription', 'cancel-subscription', $slug ) : $downgrade_text ) ?></a>
143
  </form>
144
  </li>
145
  <li>&nbsp;&bull;&nbsp;</li>
147
  <?php if ( ! $fs->is_single_plan() ) : ?>
148
  <li>
149
  <a href="<?php echo $fs->get_upgrade_url() ?>"><i
150
+ class="dashicons dashicons-grid-view"></i> <?php echo esc_html( $change_plan_text ) ?></a>
151
  </li>
152
  <li>&nbsp;&bull;&nbsp;</li>
153
  <?php endif ?>
157
  <input type="hidden" name="fs_action" value="cancel_trial">
158
  <?php wp_nonce_field( 'cancel_trial' ) ?>
159
  <a href="#"
160
+ onclick="if (confirm('<?php echo esc_attr( $cancel_trial_confirm_text ) ?>')) this.parentNode.submit(); return false;"><i
161
+ class="dashicons dashicons-download"></i> <?php echo esc_html( $cancel_trial_text ) ?></a>
162
  </form>
163
  </li>
164
  <li>&nbsp;&bull;&nbsp;</li>
168
  <input type="hidden" name="fs_action" value="<?php echo $fs->get_unique_affix() ?>_sync_license">
169
  <?php wp_nonce_field( $fs->get_unique_affix() . '_sync_license' ) ?>
170
  <a href="#" onclick="this.parentNode.submit(); return false;"><i
171
+ class="dashicons dashicons-image-rotate"></i> <?php fs_esc_html_echo_x_inline( 'Sync', 'as synchronize', 'sync', $slug ) ?></a>
172
  </form>
173
  </li>
174
 
182
  $profile = array();
183
  $profile[] = array(
184
  'id' => 'user_name',
185
+ 'title' => fs_text_inline( 'Name', 'name', $slug ),
186
  'value' => $name
187
  );
188
  // if (isset($user->email) && false !== strpos($user->email, '@'))
189
  $profile[] = array(
190
  'id' => 'email',
191
+ 'title' => fs_text_inline( 'Email', 'email', $slug ),
192
  'value' => $user->email
193
  );
194
 
195
  if ( is_numeric( $user->id ) ) {
196
  $profile[] = array(
197
  'id' => 'user_id',
198
+ 'title' => fs_text_inline( 'User ID', 'user-id', $slug ),
199
  'value' => $user->id
200
  );
201
  }
202
 
203
  $profile[] = array(
204
  'id' => 'site_id',
205
+ 'title' => fs_text_inline( 'Site ID', 'site-id', $slug ),
206
  'value' => is_string( $site->id ) ?
207
  $site->id :
208
+ fs_text_inline( 'No ID', 'no-id', $slug )
209
  );
210
 
211
  $profile[] = array(
212
  'id' => 'site_public_key',
213
+ 'title' => fs_text_inline( 'Public Key', 'public-key', $slug ),
214
  'value' => $site->public_key
215
  );
216
 
217
  $profile[] = array(
218
  'id' => 'site_secret_key',
219
+ 'title' => fs_text_inline( 'Secret Key', 'secret-key', $slug ),
220
  'value' => ( ( is_string( $site->secret_key ) ) ?
221
  $site->secret_key :
222
+ fs_text_x_inline( 'No Secret', 'as secret encryption key missing', 'no-secret', $slug )
223
  )
224
  );
225
 
226
  $profile[] = array(
227
  'id' => 'version',
228
+ 'title' => $version_text,
229
  'value' => $fs->get_plugin_version()
230
  );
231
 
235
 
236
  $profile[] = array(
237
  'id' => 'plan',
238
+ 'title' => $plan_text,
239
  'value' => ( is_string( $trial_plan->name ) ?
240
  strtoupper( $trial_plan->title ) :
241
+ fs_text_inline( 'Trial', 'trial', $slug ) )
242
  );
243
  } else {
244
  $profile[] = array(
245
  'id' => 'plan',
246
+ 'title' => $plan_text,
247
+ 'value' => strtoupper( is_string( $site->plan->name ) ?
248
+ $site->plan->title :
249
+ strtoupper( $free_text )
250
+ )
251
  );
252
 
253
  if ( is_object( $license ) ) {
254
  if ( ! $hide_license_key ) {
255
  $profile[] = array(
256
  'id' => 'license_key',
257
+ 'title' => fs_text_inline( 'License Key', $slug ),
258
  'value' => $license->secret_key,
259
  );
260
  }
284
  <code><?php echo htmlspecialchars( $p['value'] ) ?></code>
285
  <?php endif ?>
286
  <?php if ( 'email' === $p['id'] && ! $user->is_verified() ) : ?>
287
+ <label class="fs-tag fs-warn"><?php fs_esc_html_echo_inline( 'not verified', 'not-verified', $slug ) ?></label>
288
  <?php endif ?>
289
  <?php if ( 'plan' === $p['id'] ) : ?>
290
  <?php if ( $fs->is_trial() ) : ?>
291
+ <label class="fs-tag fs-success"><?php echo esc_html( $trial_text ) ?></label>
292
  <?php endif ?>
293
  <?php if ( is_object( $license ) && ! $license->is_lifetime() ) : ?>
294
  <?php if ( ! $is_active_subscription && ! $license->is_first_payment_pending() ) : ?>
295
  <label
296
+ class="fs-tag fs-warn"><?php echo esc_html( sprintf( $expires_in_text, human_time_diff( time(), strtotime( $license->expiration ) ) ) ) ?></label>
297
  <?php elseif ( $is_active_subscription && ! $subscription->is_first_payment_pending() ) : ?>
298
+ <label class="fs-tag fs-success"><?php echo esc_html( sprintf( $renews_in_text, human_time_diff( time(), strtotime( $subscription->next_payment ) ) ) ) ?></label>
299
  <?php endif ?>
300
  <?php elseif ( $fs->is_trial() ) : ?>
301
+ <label class="fs-tag fs-warn"><?php echo esc_html( sprintf( $expires_in_text, human_time_diff( time(), strtotime( $site->trial_ends ) ) ) ) ?></label>
302
  <?php endif ?>
303
  <div class="button-group">
304
  <?php $available_license = $fs->is_free_plan() ? $fs->_get_available_premium_license() : false ?>
311
  <?php wp_nonce_field( 'activate_license' ) ?>
312
  <input type="submit" class="button button-primary"
313
  value="<?php echo esc_attr( sprintf(
314
+ $activate_plan_text . '%s',
315
  $premium_plan->title,
316
  ( $site->is_localhost() && $available_license->is_free_localhost ) ?
317
+ ' [' . fs_text_inline( 'Localhost', 'localhost', $slug ) . ']' :
318
  ( $available_license->is_single_site() ?
319
  '' :
320
  ' [' . ( 1 < $available_license->left() ?
321
+ sprintf( fs_text_x_inline( '%s left', 'as 5 licenses left', 'x-left', $slug ), $available_license->left() ) :
322
+ strtolower( fs_text_inline( 'Last license', 'last-license', $slug ) ) ) . ']'
323
  )
324
  ) ) ?> ">
325
  </form>
327
  <form action="<?php echo $fs->_get_admin_page_url( 'account' ) ?>"
328
  method="POST" class="button-group">
329
  <?php if ( $show_upgrade && $fs->is_premium() ) : ?>
330
+ <a class="button activate-license-trigger <?php echo $fs->get_unique_affix() ?>" href="#"><?php fs_esc_html_echo_inline( 'Activate License', 'activate-license', $slug ) ?></a>
331
  <?php endif ?>
332
  <input type="submit" class="button"
333
+ value="<?php echo esc_attr( $sync_license_text ) ?>">
334
  <input type="hidden" name="fs_action"
335
  value="<?php echo $fs->get_unique_affix() ?>_sync_license">
336
  <?php wp_nonce_field( $fs->get_unique_affix() . '_sync_license' ) ?>
340
  echo $show_upgrade ?
341
  ' button-primary fs-upgrade' :
342
  ' fs-change-plan'; ?> button-upgrade"><i
343
+ class="dashicons dashicons-cart"></i> <?php echo esc_html( $show_upgrade ? $upgrade_text : $change_plan_text ) ?></a>
344
  <?php endif ?>
345
  </form>
346
  <?php endif ?>
349
  <?php if ( $fs->has_premium_version() ) : ?>
350
  <?php if ( $fs->is_premium() ) : ?>
351
  <label
352
+ class="fs-tag fs-<?php echo $fs->can_use_premium_code() ? 'success' : 'warn' ?>"><?php fs_esc_html_echo_inline( 'Premium version', 'premium-version', $slug ) ?></label>
353
  <?php elseif ( $fs->can_use_premium_code() ) : ?>
354
+ <label class="fs-tag fs-warn"><?php fs_esc_html_echo_inline( 'Free version', 'free-version', $slug ) ?></label>
355
  <?php endif ?>
356
  <?php endif ?>
357
  <?php endif ?>
363
  <input type="hidden" name="fs_action" value="verify_email">
364
  <?php wp_nonce_field( 'verify_email' ) ?>
365
  <input type="submit" class="button button-small"
366
+ value="<?php fs_esc_attr_echo_inline( 'Verify Email', 'verify-email', $slug ) ?>">
367
  </form>
368
  <?php endif ?>
369
  <?php if ( 'version' === $p['id'] ) : ?>
372
  <?php if ( $is_paying || $fs->is_trial() ) : ?>
373
  <?php if ( ! $fs->is_allowed_to_install() ) : ?>
374
  <a target="_blank" class="button button-primary"
375
+ href="<?php echo $fs->_get_latest_download_local_url() ?>"><?php echo sprintf(
376
+ /* translators: %s: plan name (e.g. Download "Professional" Version) */
377
+ fs_text_inline( 'Download %s Version', 'download-x-version', $slug ),
378
+ ( $fs->is_trial() ? $trial_plan->title : $site->plan->title ) ) . ( is_object( $update ) ? ' [' . $update->version . ']' : '' ) ?></a>
379
  <?php elseif ( is_object( $update ) ) : ?>
380
  <?php
381
  $module_type = $fs->get_module_type();
382
  ?>
383
  <a class="button button-primary"
384
+ href="<?php echo wp_nonce_url( self_admin_url( "update.php?action=upgrade-{$module_type}&{$module_type}=" . $fs->get_plugin_basename() ), "upgrade-{$module_type}_" . $fs->get_plugin_basename() ) ?>"><?php echo fs_esc_html_inline( 'Install Update Now', 'install-update-now', $slug ) . ' [' . $update->version . ']' ?></a>
385
  <?php endif ?>
386
  <?php endif; ?>
387
  </div>
388
  <?php endif ?>
389
  <?php
390
  elseif ( in_array( $p['id'], array( 'license_key', 'site_secret_key' ) ) ) : ?>
391
+ <button class="button button-small fs-toggle-visibility"><?php fs_esc_html_echo_x_inline( 'Show', 'verb', 'show', $slug ) ?></button>
392
  <?php if ('license_key' === $p['id']) : ?>
393
+ <button class="button button-small activate-license-trigger <?php echo $fs->get_unique_affix() ?>"><?php fs_esc_html_echo_inline( 'Change License', 'change-license', $slug ) ?></button>
394
  <?php endif ?>
395
  <?php
396
  elseif (/*in_array($p['id'], array('site_secret_key', 'site_id', 'site_public_key')) ||*/
400
  ) ) )
401
  ) : ?>
402
  <form action="<?php echo $fs->_get_admin_page_url( 'account' ) ?>" method="POST"
403
+ onsubmit="var val = prompt('<?php echo esc_attr( sprintf(
404
+ /* translators: %s: User's account property (e.g. name, email) */
405
+ fs_text_inline( 'What is your %s?', 'what-is-your-x', $slug ),
406
+ $p['title']
407
+ ) ) ?>', '<?php echo $p['value'] ?>'); if (null == val || '' === val) return false; jQuery('input[name=fs_<?php echo $p['id'] ?>_<?php echo $fs->get_unique_affix() ?>]').val(val); return true;">
408
  <input type="hidden" name="fs_action" value="update_<?php echo $p['id'] ?>">
409
  <input type="hidden" name="fs_<?php echo $p['id'] ?>_<?php echo $fs->get_unique_affix() ?>"
410
  value="">
411
  <?php wp_nonce_field( 'update_' . $p['id'] ) ?>
412
  <input type="submit" class="button button-small"
413
+ value="<?php echo fs_esc_attr_x_inline( 'Edit', 'verb', 'edit', $slug ) ?>">
414
  </form>
415
  <?php endif ?>
416
  </td>
433
  $input.toggle();
434
 
435
  if ($input.is(':visible')) {
436
+ $this.html('<?php fs_esc_js_echo_x_inline( 'Hide', 'verb', 'hide', $slug ) ?>');
437
  setTimeout(function () {
438
  $input.select().focus();
439
  }, 100);
440
  }
441
  else {
442
+ $this.html( '<?php fs_esc_js_echo_x_inline( 'Show', 'verb', 'show', $slug ) ?>' );
443
  }
444
  });
445
  }(jQuery));
468
  <table id="fs_addons" class="widefat">
469
  <thead>
470
  <tr>
471
+ <th><h3><?php echo esc_html( $addons_text ) ?></h3></th>
472
+ <th><?php fs_esc_html_echo_inline( 'ID', 'id', $slug ) ?></th>
473
+ <th><?php echo esc_html( $version_text ) ?></th>
474
+ <th><?php echo esc_html( $plan_text ) ?></th>
475
+ <th><?php fs_esc_html_echo_x_inline( 'License', 'as software license', 'license', $slug ) ?></th>
476
  <th></th>
477
  <?php if ( defined( 'WP_FS__DEV_MODE' ) && WP_FS__DEV_MODE ) : ?>
478
  <th></th>
524
  </td>
525
  <td>
526
  <!-- Plan Title -->
527
+ <?php echo strtoupper( is_string( $addon_site->plan->name ) ? $addon_site->plan->title : $free_text ) ?>
528
  </td>
529
  <td>
530
  <!-- Expiration -->
532
  $tags = array();
533
 
534
  if ( $fs_addon->is_trial() ) {
535
+ $tags[] = array( 'label' => $trial_text, 'type' => 'success' );
536
 
537
  $tags[] = array(
538
+ 'label' => sprintf(
539
+ ( $is_paid_trial ?
540
+ $renews_in_text :
541
+ $expires_in_text ),
542
+ human_time_diff( time(), strtotime( $site->trial_ends ) )
543
+ ),
544
  'type' => ( $is_paid_trial ? 'success' : 'warn' )
545
  );
546
  } else {
547
  if ( is_object( $license ) ) {
548
  if ( $license->is_cancelled ) {
549
  $tags[] = array(
550
+ 'label' => fs_text_inline( 'Cancelled', 'cancelled', $slug ),
551
  'type' => 'error'
552
  );
553
  } else if ( $license->is_expired() ) {
554
  $tags[] = array(
555
+ 'label' => fs_text_inline( 'Expired', 'expired', $slug ),
556
  'type' => 'error'
557
  );
558
  } else if ( $license->is_lifetime() ) {
559
  $tags[] = array(
560
+ 'label' => fs_text_inline( 'No expiration', 'no-expiration', $slug ),
561
  'type' => 'success'
562
  );
563
  } else if ( ! $is_active_subscription && ! $license->is_first_payment_pending() ) {
564
  $tags[] = array(
565
+ 'label' => sprintf( $expires_in_text, human_time_diff( time(), strtotime( $license->expiration ) ) ),
566
  'type' => 'warn'
567
  );
568
  } else if ( $is_active_subscription && ! $subscription->is_first_payment_pending() ) {
569
  $tags[] = array(
570
+ 'label' => sprintf( $renews_in_text, human_time_diff( time(), strtotime( $subscription->next_payment ) ) ),
571
  'type' => 'success'
572
  );
573
  }
587
  $fs->get_id(),
588
  'account',
589
  'deactivate_license',
590
+ fs_text_inline( 'Deactivate License', 'deactivate-license', $slug ),
591
  array( 'plugin_id' => $addon_id ),
592
  false
593
  );
594
 
595
  $human_readable_license_expiration = human_time_diff( time(), strtotime( $license->expiration ) );
596
+ $downgrade_confirmation_message = sprintf(
597
+ $downgrade_x_confirm_text,
598
  $plan->title,
599
+ $human_readable_license_expiration
600
+ );
601
 
602
  $after_downgrade_message = ! $license->is_block_features ?
603
+ sprintf( $after_downgrade_non_blocking_text, $plan->title, $fs_addon->get_module_label( true ) ) :
604
+ sprintf( $after_downgrade_blocking_text, $plan->title );
605
 
606
  if ( ! $license->is_lifetime() && $is_active_subscription ) {
607
  $buttons[] = fs_ui_get_action_button(
608
  $fs->get_id(),
609
  'account',
610
  'downgrade_account',
611
+ $downgrade_text,
612
  array( 'plugin_id' => $addon_id ),
613
  false,
614
  false,
621
  $fs->get_id(),
622
  'account',
623
  'cancel_trial',
624
+ $cancel_trial_text,
625
  array( 'plugin_id' => $addon_id ),
626
  false,
627
  'dashicons dashicons-download',
628
+ $cancel_trial_confirm_text,
629
  'POST'
630
  );
631
  } else {
638
  $fs->get_id(),
639
  'account',
640
  'activate_license',
641
+ sprintf( $activate_plan_text, $fs_addon->get_plan_title(), ( $site->is_localhost() && $premium_license->is_free_localhost ) ? '[localhost]' : ( 1 < $premium_license->left() ? $premium_license->left() . ' left' : '' ) ),
642
  array(
643
  'plugin_id' => $addon_id,
644
  'license_id' => $premium_license->id,
653
  $fs->get_id(),
654
  'account',
655
  $fs->get_unique_affix() . '_sync_license',
656
+ $sync_license_text,
657
  array( 'plugin_id' => $addon_id ),
658
  false
659
  );
665
  $buttons[] = sprintf(
666
  '<a class="button button-primary edit" href="%s" title="%s">%s</a>',
667
  wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $addon_file, 'activate-plugin_' . $addon_file ),
668
+ fs_esc_attr_inline( 'Activate this add-on', 'activate-this-addon', $slug ),
669
+ $activate_text
670
  );
671
  } else {
672
  if ( $fs->is_allowed_to_install() ) {
673
  $buttons[] = sprintf(
674
  '<a class="button button-primary edit" href="%s">%s</a>',
675
  wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ),
676
+ fs_text_inline( 'Install Now', 'install-now', $slug )
677
  );
678
  } else {
679
  $buttons[] = sprintf(
680
  '<a target="_blank" class="button button-primary edit" href="%s">%s</a>',
681
  $fs->_get_latest_download_local_url( $addon_id ),
682
+ esc_html( $download_latest_text )
683
  );
684
  }
685
  }
689
  $buttons[] = sprintf( '<a href="%s" class="thickbox button button-primary" aria-label="%s" data-title="%s"><i class="dashicons dashicons-cart"></i> %s</a>',
690
  esc_url( network_admin_url( 'plugin-install.php?tab=plugin-information&parent_plugin_id=' . $fs->get_id() . '&plugin=' . $addon->slug .
691
  '&TB_iframe=true&width=600&height=550' ) ),
692
+ esc_attr( sprintf( fs_text_inline( 'More information about %s', 'more-information-about-x', $slug ), $addon->title ) ),
693
  esc_attr( $addon->title ),
694
+ ( $fs_addon->has_free_plan() ?
695
+ $upgrade_text :
696
+ fs_text_x_inline( 'Purchase', 'verb', 'purchase', $slug ) )
697
  );
698
  }
699
 
721
  <?php $addon_file = $fs->get_addon_basename( $addon_id ) ?>
722
  <a class="button button-primary"
723
  href="<?php echo wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $addon_file, 'activate-plugin_' . $addon_file ) ?>"
724
+ title="<?php fs_esc_attr_echo_inline( 'Activate this add-on', 'activate-this-addon', $slug ) ?>"
725
+ class="edit"><?php echo esc_html( $activate_text ) ?></a>
726
  <?php else : ?>
727
  <?php if ( $fs->is_allowed_to_install() ) : ?>
728
  <a class="button button-primary"
729
+ href="<?php echo wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ) ?>"><?php fs_esc_html_echo_inline( 'Install Now', 'install-now', $slug ) ?></a>
730
  <?php else : ?>
731
  <a target="_blank" class="button button-primary"
732
+ href="<?php echo $fs->_get_latest_download_local_url( $addon_id ) ?>"><?php echo esc_html( $download_latest_text ) ?></a>
733
  <?php endif ?>
734
  <?php endif ?>
735
  </td>
742
  fs_ui_action_button(
743
  $fs->get_id(), 'account',
744
  'delete_account',
745
+ fs_text_x_inline( 'Delete', 'verb', 'delete', $slug ),
746
  array( 'plugin_id' => $addon_id ),
747
  false
748
  );
freemius/templates/account/billing.php CHANGED
@@ -24,6 +24,9 @@
24
 
25
  if ( $show_billing ) :
26
 
 
 
 
27
  $billing = $fs->_fetch_billing();
28
  $has_billing = ( $billing instanceof FS_Billing );
29
  if ( ! $has_billing ) {
@@ -33,21 +36,21 @@
33
  <!-- Billing -->
34
  <div class="postbox">
35
  <div id="fs_billing">
36
- <h3><span class="dashicons dashicons-portfolio"></span> <?php fs_echo( 'billing', $slug ) ?></h3>
37
  <table id="fs_billing_address"<?php if ( $has_billing ) {
38
  echo ' class="fs-read-mode"';
39
  } ?>>
40
  <tr>
41
- <td><label><span><?php fs_echo( 'business-name', $slug ) ?>:</span> <input id="business_name" value="<?php echo $billing->business_name ?>" placeholder="<?php fs_echo( 'business-name', $slug ) ?>"></label></td>
42
- <td><label><span><?php fs_echo( 'tax-vat-id', $slug ) ?>:</span> <input id="tax_id" value="<?php echo $billing->tax_id ?>" placeholder="<?php fs_echo( 'tax-vat-id', $slug ) ?>"></label></td>
43
  </tr>
44
  <tr>
45
- <td><label><span><?php printf( fs_text( 'address-line-n', $slug ), 1 ) ?>:</span> <input id="address_street" value="<?php echo $billing->address_street ?>" placeholder="<?php printf( fs_text( 'address-line-n', $slug ), 1 ) ?>"></label></td>
46
- <td><label><span><?php printf( fs_text( 'address-line-n', $slug ), 2 ) ?>:</span> <input id="address_apt" value="<?php echo $billing->address_apt ?>" placeholder="<?php printf( fs_text( 'address-line-n', $slug ), 2 ) ?>"></label></td>
47
  </tr>
48
  <tr>
49
- <td><label><span><?php fs_echo( 'city', $slug ) ?> / <?php fs_echo( 'town', $slug ) ?>:</span> <input id="address_city" value="<?php echo $billing->address_city ?>" placeholder="<?php fs_echo( 'city', $slug ) ?> / <?php fs_echo( 'town', $slug ) ?>"></label></td>
50
- <td><label><span><?php fs_echo( 'zip-postal-code', $slug ) ?>:</span> <input id="address_zip" value="<?php echo $billing->address_zip ?>" placeholder="<?php fs_echo( 'zip-postal-code', $slug ) ?>"></label></td>
51
  </tr>
52
  <tr>
53
  <?php $countries = array(
@@ -302,23 +305,25 @@
302
  'ZM' => 'Zambia',
303
  'ZW' => 'Zimbabwe',
304
  ) ?>
305
- <td><label><span><?php fs_echo( 'country', $slug ) ?>:</span> <select id="address_country_code">
306
  <?php if ( empty( $billing->address_country_code ) ) : ?>
307
- <option value=""
308
- selected><?php fs_echo( 'select-country', $slug ) ?></option>
309
  <?php endif ?>
310
  <?php foreach ( $countries as $code => $country ) : ?>
311
  <option
312
  value="<?php echo $code ?>" <?php selected( $billing->address_country_code, $code ) ?>><?php echo $country ?></option>
313
  <?php endforeach ?>
314
  </select></label></td>
315
- <td><label><span><?php fs_echo( 'state', $slug ) ?> / <?php fs_echo( 'province', $slug ) ?>:</span>
316
- <input id="address_state" value="<?php echo $billing->address_state ?>" placeholder="<?php fs_echo( 'state', $slug ) ?> / <?php fs_echo( 'province', $slug ) ?>"></label></td>
317
  </tr>
318
  <tr>
319
  <td colspan="2">
320
  <button
321
- class="button"><?php fs_echo( $has_billing ? 'edit' : 'update', $slug ) ?></button>
 
 
 
322
  </td>
323
  </tr>
324
  </table>
@@ -357,7 +362,7 @@
357
  var isEditMode = !$billingAddress.hasClass('fs-read-mode');
358
 
359
  $(this)
360
- .html(isEditMode ? <?php echo json_encode(fs_text('update', $slug)) ?> : <?php echo json_encode(fs_text('edit', $slug)) ?>)
361
  .toggleClass('button-primary');
362
 
363
  if (isEditMode) {
@@ -408,7 +413,7 @@
408
 
409
  $billingAddress.toggleClass('fs-read-mode');
410
  $billingAddress.find('.button')
411
- .html(<?php echo json_encode( fs_text( 'update', $slug ) ) ?>)
412
  .toggleClass('button-primary');
413
  })
414
  // If blured after editing only one field without changes, exit edit mode.
@@ -416,7 +421,7 @@
416
  if (!isEditAllFieldsMode && !hasBillingChanged()) {
417
  $billingAddress.toggleClass('fs-read-mode');
418
  $billingAddress.find('.button')
419
- .html(<?php echo json_encode( fs_text( 'edit', $slug ) ) ?>)
420
  .toggleClass('button-primary');
421
  }
422
  });
24
 
25
  if ( $show_billing ) :
26
 
27
+ $edit_text = fs_text_x_inline( 'Edit', 'verb', 'edit', $slug );
28
+ $update_text = fs_text_x_inline( 'Update', 'verb', 'update', $slug );
29
+
30
  $billing = $fs->_fetch_billing();
31
  $has_billing = ( $billing instanceof FS_Billing );
32
  if ( ! $has_billing ) {
36
  <!-- Billing -->
37
  <div class="postbox">
38
  <div id="fs_billing">
39
+ <h3><span class="dashicons dashicons-portfolio"></span> <?php fs_esc_html_echo_inline( 'Billing', 'billing', $slug ) ?></h3>
40
  <table id="fs_billing_address"<?php if ( $has_billing ) {
41
  echo ' class="fs-read-mode"';
42
  } ?>>
43
  <tr>
44
+ <td><label><span><?php fs_esc_html_echo_inline( 'Business name', 'business-name', $slug ) ?>:</span> <input id="business_name" value="<?php echo $billing->business_name ?>" placeholder="<?php fs_esc_attr_echo_inline( 'Business name', 'business-name', $slug ) ?>"></label></td>
45
+ <td><label><span><?php fs_esc_html_echo_inline( 'Tax / VAT ID', 'tax-vat-id', $slug ) ?>:</span> <input id="tax_id" value="<?php echo $billing->tax_id ?>" placeholder="<?php fs_esc_attr_echo_inline( 'Tax / VAT ID', 'tax-vat-id', $slug ) ?>"></label></td>
46
  </tr>
47
  <tr>
48
+ <td><label><span><?php printf( fs_esc_html_inline( 'Address Line %d', 'address-line-n', $slug ), 1 ) ?>:</span> <input id="address_street" value="<?php echo $billing->address_street ?>" placeholder="<?php printf( fs_esc_attr_inline( 'Address Line %d', 'address-line-n', $slug ), 1 ) ?>"></label></td>
49
+ <td><label><span><?php printf( fs_esc_html_inline( 'Address Line %d', 'address-line-n', $slug ), 2 ) ?>:</span> <input id="address_apt" value="<?php echo $billing->address_apt ?>" placeholder="<?php printf( fs_esc_attr_inline( 'Address Line %d', 'address-line-n', $slug ), 2 ) ?>"></label></td>
50
  </tr>
51
  <tr>
52
+ <td><label><span><?php fs_esc_html_echo_inline( 'City', 'city', $slug ) ?> / <?php fs_esc_html_echo_inline( 'Town', 'town', $slug ) ?>:</span> <input id="address_city" value="<?php echo $billing->address_city ?>" placeholder="<?php fs_esc_attr_echo_inline( 'City', 'city', $slug ) ?> / <?php fs_esc_attr_echo_inline( 'Town', 'town', $slug ) ?>"></label></td>
53
+ <td><label><span><?php fs_esc_html_echo_inline( 'ZIP / Postal Code', 'zip-postal-code', $slug ) ?>:</span> <input id="address_zip" value="<?php echo $billing->address_zip ?>" placeholder="<?php fs_esc_attr_echo_inline( 'ZIP / Postal Code', 'zip-postal-code', $slug ) ?>"></label></td>
54
  </tr>
55
  <tr>
56
  <?php $countries = array(
305
  'ZM' => 'Zambia',
306
  'ZW' => 'Zimbabwe',
307
  ) ?>
308
+ <td><label><span><?php fs_esc_html_echo_inline( 'Country', 'country', $slug ) ?>:</span> <select id="address_country_code">
309
  <?php if ( empty( $billing->address_country_code ) ) : ?>
310
+ <option value="" selected><?php fs_esc_html_echo_inline( 'Select Country', 'select-country', $slug ) ?></option>
 
311
  <?php endif ?>
312
  <?php foreach ( $countries as $code => $country ) : ?>
313
  <option
314
  value="<?php echo $code ?>" <?php selected( $billing->address_country_code, $code ) ?>><?php echo $country ?></option>
315
  <?php endforeach ?>
316
  </select></label></td>
317
+ <td><label><span><?php fs_esc_html_echo_inline( 'State', 'state', $slug ) ?> / <?php fs_esc_html_echo_inline( 'Province', 'province', $slug ) ?>:</span>
318
+ <input id="address_state" value="<?php echo $billing->address_state ?>" placeholder="<?php fs_esc_html_echo_inline( 'State', 'state', $slug ) ?> / <?php fs_esc_html_echo_inline( 'Province', 'province', $slug ) ?>"></label></td>
319
  </tr>
320
  <tr>
321
  <td colspan="2">
322
  <button
323
+ class="button"><?php echo esc_html( $has_billing ?
324
+ $edit_text :
325
+ $update_text
326
+ ) ?></button>
327
  </td>
328
  </tr>
329
  </table>
362
  var isEditMode = !$billingAddress.hasClass('fs-read-mode');
363
 
364
  $(this)
365
+ .html(isEditMode ? '<?php echo esc_js( $update_text ) ?>' : '<?php echo esc_js( $edit_text ) ?>')
366
  .toggleClass('button-primary');
367
 
368
  if (isEditMode) {
413
 
414
  $billingAddress.toggleClass('fs-read-mode');
415
  $billingAddress.find('.button')
416
+ .html('<?php echo esc_js( $update_text ) ?>')
417
  .toggleClass('button-primary');
418
  })
419
  // If blured after editing only one field without changes, exit edit mode.
421
  if (!isEditAllFieldsMode && !hasBillingChanged()) {
422
  $billingAddress.toggleClass('fs-read-mode');
423
  $billingAddress.find('.button')
424
+ .html('<?php echo esc_js( $edit_text ) ?>')
425
  .toggleClass('button-primary');
426
  }
427
  });
freemius/templates/account/payments.php CHANGED
@@ -26,16 +26,16 @@
26
  ?>
27
  <div class="postbox">
28
  <div id="fs_payments">
29
- <h3><span class="dashicons dashicons-paperclip"></span> <?php fs_echo( 'payments', $slug ) ?></h3>
30
 
31
  <div class="inside">
32
  <table class="widefat">
33
  <thead>
34
  <tr>
35
- <th><?php fs_echo( 'id', $slug ) ?></th>
36
- <th><?php fs_echo( 'date', $slug ) ?></th>
37
- <th><?php fs_echo( 'amount', $slug ) ?></th>
38
- <th><?php fs_echo( 'invoice', $slug ) ?></th>
39
  </tr>
40
  </thead>
41
  <tbody>
@@ -47,7 +47,7 @@
47
  <td>$<?php echo $payment->gross ?></td>
48
  <td><a href="<?php echo $fs->_get_invoice_api_url( $payment->id ) ?>"
49
  class="button button-small"
50
- target="_blank"><?php fs_echo( 'invoice', $slug ) ?></a></td>
51
  </tr>
52
  <?php $odd = ! $odd; endforeach ?>
53
  </tbody>
26
  ?>
27
  <div class="postbox">
28
  <div id="fs_payments">
29
+ <h3><span class="dashicons dashicons-paperclip"></span> <?php fs_esc_html_echo_inline( 'Payments', 'payments', $slug ) ?></h3>
30
 
31
  <div class="inside">
32
  <table class="widefat">
33
  <thead>
34
  <tr>
35
+ <th><?php fs_esc_html_echo_inline( 'ID', 'id', $slug ) ?></th>
36
+ <th><?php fs_esc_html_echo_inline( 'Date', 'date', $slug ) ?></th>
37
+ <th><?php fs_esc_html_echo_inline( 'Amount', 'amount', $slug ) ?></th>
38
+ <th><?php fs_esc_html_echo_inline( 'Invoice', 'invoice', $slug ) ?></th>
39
  </tr>
40
  </thead>
41
  <tbody>
47
  <td>$<?php echo $payment->gross ?></td>
48
  <td><a href="<?php echo $fs->_get_invoice_api_url( $payment->id ) ?>"
49
  class="button button-small"
50
+ target="_blank"><?php fs_esc_html_echo_inline( 'Invoice', 'invoice', $slug ) ?></a></td>
51
  </tr>
52
  <?php $odd = ! $odd; endforeach ?>
53
  </tbody>
freemius/templates/add-ons.php CHANGED
@@ -33,16 +33,16 @@
33
  ?>
34
  <div id="fs_addons" class="wrap fs-section">
35
  <?php if ( ! $has_tabs ) : ?>
36
- <h2><?php printf( fs_text( 'add-ons-for-x', $slug ), $fs->get_plugin_name() ) ?></h2>
37
  <?php endif ?>
38
 
39
  <div id="poststuff">
40
  <?php if ( ! $has_addons ) : ?>
41
- <h3><?php printf(
42
  '%s... %s',
43
- fs_text( 'oops', $slug ),
44
- fs_text( 'add-ons-missing', $slug )
45
- ) ?></h3>
46
  <?php endif ?>
47
  <ul class="fs-cards-list">
48
  <?php if ( $has_addons ) : ?>
@@ -96,7 +96,7 @@
96
  echo sprintf( '<a href="%s" class="thickbox fs-overlay" aria-label="%s" data-title="%s"></a>',
97
  esc_url( network_admin_url( 'plugin-install.php?tab=plugin-information&parent_plugin_id=' . $fs->get_id() . '&plugin=' . $addon->slug .
98
  '&TB_iframe=true&width=600&height=550' ) ),
99
- esc_attr( sprintf( fs_text( 'more-information-about-x', $slug ), $addon->title ) ),
100
  esc_attr( $addon->title )
101
  );
102
  ?>
@@ -123,16 +123,16 @@
123
  $descriptors = array();
124
 
125
  if ($has_free_plan)
126
- $descriptors[] = fs_text( 'free', $slug );
127
  if ($has_paid_plan && $price > 0)
128
  $descriptors[] = '$' . number_format( $price, 2 );
129
  if ($has_trial)
130
- $descriptors[] = fs_text('trial', $slug);
131
 
132
  echo implode(' - ', $descriptors) ?></span>
133
  </li>
134
  <li class="fs-description"><?php echo ! empty( $addon->info->short_description ) ? $addon->info->short_description : 'SHORT DESCRIPTION' ?></li>
135
- <li class="fs-cta"><a class="button"><?php fs_echo( 'view-details', $slug ) ?></a></li>
136
  </ul>
137
  </div>
138
  </li>
33
  ?>
34
  <div id="fs_addons" class="wrap fs-section">
35
  <?php if ( ! $has_tabs ) : ?>
36
+ <h2><?php echo esc_html( sprintf( fs_text_inline( 'Add Ons for %s', 'add-ons-for-x', $slug ), $fs->get_plugin_name() ) ) ?></h2>
37
  <?php endif ?>
38
 
39
  <div id="poststuff">
40
  <?php if ( ! $has_addons ) : ?>
41
+ <h3><?php echo esc_html( sprintf(
42
  '%s... %s',
43
+ fs_text_x_inline( 'Oops', 'exclamation', 'oops', $slug ),
44
+ fs_text_inline( 'We could\'nt load the add-ons list. It\'s probably an issue on our side, please try to come back in few minutes.', 'add-ons-missing', $slug )
45
+ ) ) ?></h3>
46
  <?php endif ?>
47
  <ul class="fs-cards-list">
48
  <?php if ( $has_addons ) : ?>
96
  echo sprintf( '<a href="%s" class="thickbox fs-overlay" aria-label="%s" data-title="%s"></a>',
97
  esc_url( network_admin_url( 'plugin-install.php?tab=plugin-information&parent_plugin_id=' . $fs->get_id() . '&plugin=' . $addon->slug .
98
  '&TB_iframe=true&width=600&height=550' ) ),
99
+ esc_attr( sprintf( fs_text_inline( 'More information about %s', 'more-information-about-x', $slug ), $addon->title ) ),
100
  esc_attr( $addon->title )
101
  );
102
  ?>
123
  $descriptors = array();
124
 
125
  if ($has_free_plan)
126
+ $descriptors[] = fs_text_inline( 'Free', 'free', $slug );
127
  if ($has_paid_plan && $price > 0)
128
  $descriptors[] = '$' . number_format( $price, 2 );
129
  if ($has_trial)
130
+ $descriptors[] = fs_text_x_inline( 'Trial', 'trial period', 'trial', $slug );
131
 
132
  echo implode(' - ', $descriptors) ?></span>
133
  </li>
134
  <li class="fs-description"><?php echo ! empty( $addon->info->short_description ) ? $addon->info->short_description : 'SHORT DESCRIPTION' ?></li>
135
+ <li class="fs-cta"><a class="button"><?php fs_esc_html_inline( 'View details', 'view-details', $slug ) ?></a></li>
136
  </ul>
137
  </div>
138
  </li>
freemius/templates/admin-notice.php CHANGED
@@ -9,6 +9,8 @@
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
11
  }
 
 
12
  ?>
13
  <div<?php if ( ! empty( $VARS['id'] ) ) : ?> data-id="<?php echo $VARS['id'] ?>"<?php endif ?><?php if ( ! empty( $VARS['manager_id'] ) ) : ?> data-manager-id="<?php echo $VARS['manager_id'] ?>"<?php endif ?>
14
  class="<?php
@@ -36,7 +38,7 @@
36
  <?php endif ?>
37
  <?php if ( ! empty( $VARS['sticky'] ) ) : ?>
38
  <div class="fs-close"><i class="dashicons dashicons-no"
39
- title="<?php fs_echo( 'dismiss' ) ?>"></i> <span><?php fs_echo( 'dismiss' ) ?></span>
40
  </div>
41
  <?php endif ?>
42
  <div class="fs-notice-body">
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
11
  }
12
+
13
+ $dismiss_text = fs_text_x_inline( 'Dismiss', 'as close a window', 'dismiss' );
14
  ?>
15
  <div<?php if ( ! empty( $VARS['id'] ) ) : ?> data-id="<?php echo $VARS['id'] ?>"<?php endif ?><?php if ( ! empty( $VARS['manager_id'] ) ) : ?> data-manager-id="<?php echo $VARS['manager_id'] ?>"<?php endif ?>
16
  class="<?php
38
  <?php endif ?>
39
  <?php if ( ! empty( $VARS['sticky'] ) ) : ?>
40
  <div class="fs-close"><i class="dashicons dashicons-no"
41
+ title="<?php echo esc_attr( $dismiss_text ) ?>"></i> <span><?php echo esc_html( $dismiss_text ) ?></span>
42
  </div>
43
  <?php endif ?>
44
  <div class="fs-notice-body">
freemius/templates/auto-installation.php CHANGED
@@ -16,7 +16,7 @@
16
  $slug = $VARS['slug'];
17
  $plugin_id = $VARS['id'];
18
 
19
- $fs = freemius( $slug );
20
 
21
  $action = $fs->is_tracking_allowed() ?
22
  'stop_tracking' :
@@ -28,7 +28,7 @@
28
  $addon = $fs->get_addon( $plugin_id );
29
 
30
  if ( is_object( $addon ) ) {
31
- $title = $addon->title . ' ' . fs_text( 'addon', $slug );
32
  }
33
  }
34
 
@@ -39,7 +39,10 @@
39
 
40
  $sec_countdown = 30;
41
  $countdown_html = sprintf(
42
- esc_js( fs_text( 'x-sec', $slug ) ),
 
 
 
43
  sprintf( '<span class="fs-countdown">%s</span>', $sec_countdown )
44
  );
45
 
@@ -76,7 +79,7 @@
76
  <div class="fs-modal fs-modal-auto-install">
77
  <div class="fs-modal-dialog">
78
  <div class="fs-modal-header">
79
- <h4><?php echo esc_js( fs_text( 'auto-installation', $slug ) ) ?></h4>
80
  </div>
81
  <div class="fs-modal-body">
82
  <div class="fs-notice-error" style="display: none"><p></p></div>
@@ -86,7 +89,7 @@
86
  </div>
87
  <?php else : ?>
88
  <p class="fs-installation-notice"><?php echo sprintf(
89
- fs_esc_html( 'installing-in-n', $slug ),
90
  $plugin_title,
91
  sprintf(
92
  '<a href="%s" target="_blank">%s</a>',
@@ -97,14 +100,14 @@
97
  ) ?></p>
98
  <?php endif ?>
99
  <p class="fs-installing"
100
- style="display: none"><?php echo sprintf( fs_esc_html( 'installing-module-x', $slug ), $plugin_title ) ?></p>
101
  </div>
102
  <div class="fs-modal-footer">
103
  <?php echo $loader_html ?>
104
  <button
105
- class="button button-secondary button-cancel"><?php fs_esc_html_echo( 'cancel-installation', $slug ) ?><?php if ( ! $require_credentials ) : ?> (<?php echo $countdown_html ?>)<?php endif ?></button>
106
  <button
107
- class="button button-primary"<?php //disabled($require_credentials) ?>><?php echo esc_js( fs_text( 'install-now', $slug ) ) ?></button>
108
  </div>
109
  </div>
110
  </div>'
@@ -181,7 +184,7 @@
181
  $modal.removeClass('fs-warn');
182
  $modal.find('.fs-installing').hide();
183
  $modal.find('.fs-ajax-loader').hide();
184
- $modal.find('.button-cancel').html(<?php fs_json_encode_echo( 'cancel-installation', $slug ) ?>);
185
  $modal.find('button').show();
186
 
187
  $errorNotice.find('p').text(resultObj.error.message);
16
  $slug = $VARS['slug'];
17
  $plugin_id = $VARS['id'];
18
 
19
+ $fs = freemius( $plugin_id );
20
 
21
  $action = $fs->is_tracking_allowed() ?
22
  'stop_tracking' :
28
  $addon = $fs->get_addon( $plugin_id );
29
 
30
  if ( is_object( $addon ) ) {
31
+ $title = $addon->title . ' ' . fs_text_inline( 'Add-On', 'addon', $slug );
32
  }
33
  }
34
 
39
 
40
  $sec_countdown = 30;
41
  $countdown_html = sprintf(
42
+ esc_js(
43
+ /* translators: %s: Number of seconds */
44
+ fs_text_inline( '%s sec', 'x-sec', $slug )
45
+ ),
46
  sprintf( '<span class="fs-countdown">%s</span>', $sec_countdown )
47
  );
48
 
79
  <div class="fs-modal fs-modal-auto-install">
80
  <div class="fs-modal-dialog">
81
  <div class="fs-modal-header">
82
+ <h4><?php echo esc_js( fs_text_inline( 'Automatic Installation', 'auto-installation', $slug ) ) ?></h4>
83
  </div>
84
  <div class="fs-modal-body">
85
  <div class="fs-notice-error" style="display: none"><p></p></div>
89
  </div>
90
  <?php else : ?>
91
  <p class="fs-installation-notice"><?php echo sprintf(
92
+ fs_esc_html_inline( '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.', 'installing-in-n', $slug ),
93
  $plugin_title,
94
  sprintf(
95
  '<a href="%s" target="_blank">%s</a>',
100
  ) ?></p>
101
  <?php endif ?>
102
  <p class="fs-installing"
103
+ style="display: none"><?php echo sprintf( fs_esc_html_inline( 'The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page.', 'installing-module-x', $slug ), $plugin_title ) ?></p>
104
  </div>
105
  <div class="fs-modal-footer">
106
  <?php echo $loader_html ?>
107
  <button
108
+ class="button button-secondary button-cancel"><?php fs_esc_html_echo_inline( 'Cancel Installation', 'cancel-installation', $slug ) ?><?php if ( ! $require_credentials ) : ?> (<?php echo $countdown_html ?>)<?php endif ?></button>
109
  <button
110
+ class="button button-primary"><?php fs_esc_html_echo_inline( 'Install Now', 'install-now', $slug ) ?></button>
111
  </div>
112
  </div>
113
  </div>'
184
  $modal.removeClass('fs-warn');
185
  $modal.find('.fs-installing').hide();
186
  $modal.find('.fs-ajax-loader').hide();
187
+ $modal.find('.button-cancel').html(<?php fs_json_encode_echo_inline( 'Cancel Installation', 'cancel-installation', $slug ) ?>);
188
  $modal.find('button').show();
189
 
190
  $errorNotice.find('p').text(resultObj.error.message);
freemius/templates/billing.php DELETED
@@ -1,506 +0,0 @@
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.2.0
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- /**
14
- * @var array $VARS
15
- */
16
- $slug = $VARS['slug'];
17
- /**
18
- * @var Freemius $fs
19
- */
20
- $fs = freemius( $slug );
21
-
22
- /**
23
- * @var FS_Plugin_Tag $update
24
- */
25
- $update = $fs->get_update( false, false );
26
-
27
- $is_paying = $fs->is_paying();
28
- $user = $fs->get_user();
29
- $site = $fs->get_site();
30
- $name = $user->get_name();
31
- $license = $fs->_get_license();
32
- $subscription = $fs->_get_subscription();
33
- $plan = $fs->get_plan();
34
- $is_active_subscription = ( is_object( $subscription ) && $subscription->is_active() );
35
- $is_paid_trial = $fs->is_paid_trial();
36
- $show_upgrade = ( ! $is_paying && ! $is_paid_trial );
37
-
38
- $billing = $fs->_fetch_billing();
39
- $has_billing = ( $billing instanceof FS_Billing );
40
- if ( ! $has_billing ) {
41
- $billing = new FS_Billing();
42
- }
43
-
44
- $readonly_attr = $has_billing ? 'readonly' : '';
45
- ?>
46
-
47
- <div id="fs_account" class="wrap">
48
- <h2 class="nav-tab-wrapper">
49
- <a href="<?php echo $fs->get_account_url() ?>" class="nav-tab"><?php fs_echo( 'account', $slug ) ?></a>
50
- <?php if ( $fs->has_addons() ) : ?>
51
- <a href="<?php echo $fs->_get_admin_page_url( 'addons' ) ?>"
52
- class="nav-tab"><?php fs_echo( 'add-ons', $slug ) ?></a>
53
- <?php endif ?>
54
- <?php if ( $fs->is_not_paying() && $fs->has_paid_plan() ) : ?>
55
- <a href="<?php echo $fs->get_upgrade_url() ?>" class="nav-tab"><?php fs_echo( 'upgrade', $slug ) ?></a>
56
- <?php if ( $fs->apply_filters( 'show_trial', true ) && ! $fs->is_trial_utilized() && $fs->has_trial_plan() ) : ?>
57
- <a href="<?php echo $fs->get_trial_url() ?>"
58
- class="nav-tab"><?php fs_echo( 'free-trial', $slug ) ?></a>
59
- <?php endif ?>
60
- <?php endif ?>
61
- <?php if ( ! $plan->is_free() ) : ?>
62
- <a href="<?php echo $fs->get_account_tab_url( 'billing' ) ?>"
63
- class="nav-tab nav-tab-active"><?php fs_echo( 'billing', $slug ) ?></a>
64
- <?php endif ?>
65
- </h2>
66
-
67
- <div id="poststuff">
68
- <div id="fs_billing">
69
- <div class="has-sidebar has-right-sidebar">
70
- <div class="has-sidebar-content">
71
- <div class="postbox">
72
- <h3><span class="dashicons dashicons-businessman"></span> <?php fs_echo( 'billing', $slug ) ?></h3>
73
- <table id="fs_billing_address"<?php if ( $has_billing ) {
74
- echo ' class="fs-read-mode"';
75
- } ?>>
76
- <tr>
77
- <td><label><span><?php fs_echo( 'business-name', $slug ) ?>:</span> <input id="business_name" value="<?php echo $billing->business_name ?>" placeholder="<?php fs_echo( 'business-name', $slug ) ?>"></label></td>
78
- <td><label><span><?php fs_echo( 'tax-vat-id', $slug ) ?>:</span> <input id="tax_id" value="<?php echo $billing->tax_id ?>" placeholder="<?php fs_echo( 'tax-vat-id', $slug ) ?>"></label></td>
79
- </tr>
80
- <tr>
81
- <td><label><span><?php printf( fs_text( 'address-line-n', $slug ), 1 ) ?>:</span> <input id="address_street" value="<?php echo $billing->address_street ?>" placeholder="<?php printf( fs_text( 'address-line-n', $slug ), 1 ) ?>"></label></td>
82
- <td><label><span><?php printf( fs_text( 'address-line-n', $slug ), 2 ) ?>:</span> <input id="address_apt" value="<?php echo $billing->address_apt ?>" placeholder="<?php printf( fs_text( 'address-line-n', $slug ), 2 ) ?>"></label></td>
83
- </tr>
84
- <tr>
85
- <td><label><span><?php fs_echo( 'city', $slug ) ?> / <?php fs_echo( 'town', $slug ) ?>:</span> <input id="address_city" value="<?php echo $billing->address_city ?>" placeholder="<?php fs_echo( 'city', $slug ) ?> / <?php fs_echo( 'town', $slug ) ?>"></label></td>
86
- <td><label><span><?php fs_echo( 'zip-postal-code', $slug ) ?>:</span> <input id="address_zip" value="<?php echo $billing->address_zip ?>" placeholder="<?php fs_echo( 'zip-postal-code', $slug ) ?>"></label></td>
87
- </tr>
88
- <tr>
89
- <?php $countries = array(
90
- 'AF' => 'Afghanistan',
91
- 'AX' => 'Aland Islands',
92
- 'AL' => 'Albania',
93
- 'DZ' => 'Algeria',
94
- 'AS' => 'American Samoa',
95
- 'AD' => 'Andorra',
96
- 'AO' => 'Angola',
97
- 'AI' => 'Anguilla',
98
- 'AQ' => 'Antarctica',
99
- 'AG' => 'Antigua and Barbuda',
100
- 'AR' => 'Argentina',
101
- 'AM' => 'Armenia',
102
- 'AW' => 'Aruba',
103
- 'AU' => 'Australia',
104
- 'AT' => 'Austria',
105
- 'AZ' => 'Azerbaijan',
106
- 'BS' => 'Bahamas',
107
- 'BH' => 'Bahrain',
108
- 'BD' => 'Bangladesh',
109
- 'BB' => 'Barbados',
110
- 'BY' => 'Belarus',
111
- 'BE' => 'Belgium',
112
- 'BZ' => 'Belize',
113
- 'BJ' => 'Benin',
114
- 'BM' => 'Bermuda',
115
- 'BT' => 'Bhutan',
116
- 'BO' => 'Bolivia',
117
- 'BQ' => 'Bonaire, Saint Eustatius and Saba',
118
- 'BA' => 'Bosnia and Herzegovina',
119
- 'BW' => 'Botswana',
120
- 'BV' => 'Bouvet Island',
121
- 'BR' => 'Brazil',
122
- 'IO' => 'British Indian Ocean Territory',
123
- 'VG' => 'British Virgin Islands',
124
- 'BN' => 'Brunei',
125
- 'BG' => 'Bulgaria',
126
- 'BF' => 'Burkina Faso',
127
- 'BI' => 'Burundi',
128
- 'KH' => 'Cambodia',
129
- 'CM' => 'Cameroon',
130
- 'CA' => 'Canada',
131
- 'CV' => 'Cape Verde',
132
- 'KY' => 'Cayman Islands',
133
- 'CF' => 'Central African Republic',
134
- 'TD' => 'Chad',
135
- 'CL' => 'Chile',
136
- 'CN' => 'China',
137
- 'CX' => 'Christmas Island',
138
- 'CC' => 'Cocos Islands',
139
- 'CO' => 'Colombia',
140
- 'KM' => 'Comoros',
141
- 'CK' => 'Cook Islands',
142
- 'CR' => 'Costa Rica',
143
- 'HR' => 'Croatia',
144
- 'CU' => 'Cuba',
145
- 'CW' => 'Curacao',
146
- 'CY' => 'Cyprus',
147
- 'CZ' => 'Czech Republic',
148
- 'CD' => 'Democratic Republic of the Congo',
149
- 'DK' => 'Denmark',
150
- 'DJ' => 'Djibouti',
151
- 'DM' => 'Dominica',
152
- 'DO' => 'Dominican Republic',
153
- 'TL' => 'East Timor',
154
- 'EC' => 'Ecuador',
155
- 'EG' => 'Egypt',
156
- 'SV' => 'El Salvador',
157
- 'GQ' => 'Equatorial Guinea',
158
- 'ER' => 'Eritrea',
159
- 'EE' => 'Estonia',
160
- 'ET' => 'Ethiopia',
161
- 'FK' => 'Falkland Islands',
162
- 'FO' => 'Faroe Islands',
163
- 'FJ' => 'Fiji',
164
- 'FI' => 'Finland',
165
- 'FR' => 'France',
166
- 'GF' => 'French Guiana',
167
- 'PF' => 'French Polynesia',
168
- 'TF' => 'French Southern Territories',
169
- 'GA' => 'Gabon',
170
- 'GM' => 'Gambia',
171
- 'GE' => 'Georgia',
172
- 'DE' => 'Germany',
173
- 'GH' => 'Ghana',
174
- 'GI' => 'Gibraltar',
175
- 'GR' => 'Greece',
176
- 'GL' => 'Greenland',
177
- 'GD' => 'Grenada',
178
- 'GP' => 'Guadeloupe',
179
- 'GU' => 'Guam',
180
- 'GT' => 'Guatemala',
181
- 'GG' => 'Guernsey',
182
- 'GN' => 'Guinea',
183
- 'GW' => 'Guinea-Bissau',
184
- 'GY' => 'Guyana',
185
- 'HT' => 'Haiti',
186
- 'HM' => 'Heard Island and McDonald Islands',
187
- 'HN' => 'Honduras',
188
- 'HK' => 'Hong Kong',
189
- 'HU' => 'Hungary',
190
- 'IS' => 'Iceland',
191
- 'IN' => 'India',
192
- 'ID' => 'Indonesia',
193
- 'IR' => 'Iran',
194
- 'IQ' => 'Iraq',
195
- 'IE' => 'Ireland',
196
- 'IM' => 'Isle of Man',
197
- 'IL' => 'Israel',
198
- 'IT' => 'Italy',
199
- 'CI' => 'Ivory Coast',
200
- 'JM' => 'Jamaica',
201
- 'JP' => 'Japan',
202
- 'JE' => 'Jersey',
203
- 'JO' => 'Jordan',
204
- 'KZ' => 'Kazakhstan',
205
- 'KE' => 'Kenya',
206
- 'KI' => 'Kiribati',
207
- 'XK' => 'Kosovo',
208
- 'KW' => 'Kuwait',
209
- 'KG' => 'Kyrgyzstan',
210
- 'LA' => 'Laos',
211
- 'LV' => 'Latvia',
212
- 'LB' => 'Lebanon',
213
- 'LS' => 'Lesotho',
214
- 'LR' => 'Liberia',
215
- 'LY' => 'Libya',
216
- 'LI' => 'Liechtenstein',
217
- 'LT' => 'Lithuania',
218
- 'LU' => 'Luxembourg',
219
- 'MO' => 'Macao',
220
- 'MK' => 'Macedonia',
221
- 'MG' => 'Madagascar',
222
- 'MW' => 'Malawi',
223
- 'MY' => 'Malaysia',
224
- 'MV' => 'Maldives',
225
- 'ML' => 'Mali',
226
- 'MT' => 'Malta',
227
- 'MH' => 'Marshall Islands',
228
- 'MQ' => 'Martinique',
229
- 'MR' => 'Mauritania',
230
- 'MU' => 'Mauritius',
231
- 'YT' => 'Mayotte',
232
- 'MX' => 'Mexico',
233
- 'FM' => 'Micronesia',
234
- 'MD' => 'Moldova',
235
- 'MC' => 'Monaco',
236
- 'MN' => 'Mongolia',
237
- 'ME' => 'Montenegro',
238
- 'MS' => 'Montserrat',
239
- 'MA' => 'Morocco',
240
- 'MZ' => 'Mozambique',
241
- 'MM' => 'Myanmar',
242
- 'NA' => 'Namibia',
243
- 'NR' => 'Nauru',
244
- 'NP' => 'Nepal',
245
- 'NL' => 'Netherlands',
246
- 'NC' => 'New Caledonia',
247
- 'NZ' => 'New Zealand',
248
- 'NI' => 'Nicaragua',
249
- 'NE' => 'Niger',
250
- 'NG' => 'Nigeria',
251
- 'NU' => 'Niue',
252
- 'NF' => 'Norfolk Island',
253
- 'KP' => 'North Korea',
254
- 'MP' => 'Northern Mariana Islands',
255
- 'NO' => 'Norway',
256
- 'OM' => 'Oman',
257
- 'PK' => 'Pakistan',
258
- 'PW' => 'Palau',
259
- 'PS' => 'Palestinian Territory',
260
- 'PA' => 'Panama',
261
- 'PG' => 'Papua New Guinea',
262
- 'PY' => 'Paraguay',
263
- 'PE' => 'Peru',
264
- 'PH' => 'Philippines',
265
- 'PN' => 'Pitcairn',
266
- 'PL' => 'Poland',
267
- 'PT' => 'Portugal',
268
- 'PR' => 'Puerto Rico',
269
- 'QA' => 'Qatar',
270
- 'CG' => 'Republic of the Congo',
271
- 'RE' => 'Reunion',
272
- 'RO' => 'Romania',
273
- 'RU' => 'Russia',
274
- 'RW' => 'Rwanda',
275
- 'BL' => 'Saint Barthelemy',
276
- 'SH' => 'Saint Helena',
277
- 'KN' => 'Saint Kitts and Nevis',
278
- 'LC' => 'Saint Lucia',
279
- 'MF' => 'Saint Martin',
280
- 'PM' => 'Saint Pierre and Miquelon',
281
- 'VC' => 'Saint Vincent and the Grenadines',
282
- 'WS' => 'Samoa',
283
- 'SM' => 'San Marino',
284
- 'ST' => 'Sao Tome and Principe',
285
- 'SA' => 'Saudi Arabia',
286
- 'SN' => 'Senegal',
287
- 'RS' => 'Serbia',
288
- 'SC' => 'Seychelles',
289
- 'SL' => 'Sierra Leone',
290
- 'SG' => 'Singapore',
291
- 'SX' => 'Sint Maarten',
292
- 'SK' => 'Slovakia',
293
- 'SI' => 'Slovenia',
294
- 'SB' => 'Solomon Islands',
295
- 'SO' => 'Somalia',
296
- 'ZA' => 'South Africa',
297
- 'GS' => 'South Georgia and the South Sandwich Islands',
298
- 'KR' => 'South Korea',
299
- 'SS' => 'South Sudan',
300
- 'ES' => 'Spain',
301
- 'LK' => 'Sri Lanka',
302
- 'SD' => 'Sudan',
303
- 'SR' => 'Suriname',
304
- 'SJ' => 'Svalbard and Jan Mayen',
305
- 'SZ' => 'Swaziland',
306
- 'SE' => 'Sweden',
307
- 'CH' => 'Switzerland',
308
- 'SY' => 'Syria',
309
- 'TW' => 'Taiwan',
310
- 'TJ' => 'Tajikistan',
311
- 'TZ' => 'Tanzania',
312
- 'TH' => 'Thailand',
313
- 'TG' => 'Togo',
314
- 'TK' => 'Tokelau',
315
- 'TO' => 'Tonga',
316
- 'TT' => 'Trinidad and Tobago',
317
- 'TN' => 'Tunisia',
318
- 'TR' => 'Turkey',
319
- 'TM' => 'Turkmenistan',
320
- 'TC' => 'Turks and Caicos Islands',
321
- 'TV' => 'Tuvalu',
322
- 'VI' => 'U.S. Virgin Islands',
323
- 'UG' => 'Uganda',
324
- 'UA' => 'Ukraine',
325
- 'AE' => 'United Arab Emirates',
326
- 'GB' => 'United Kingdom',
327
- 'US' => 'United States',
328
- 'UM' => 'United States Minor Outlying Islands',
329
- 'UY' => 'Uruguay',
330
- 'UZ' => 'Uzbekistan',
331
- 'VU' => 'Vanuatu',
332
- 'VA' => 'Vatican',
333
- 'VE' => 'Venezuela',
334
- 'VN' => 'Vietnam',
335
- 'WF' => 'Wallis and Futuna',
336
- 'EH' => 'Western Sahara',
337
- 'YE' => 'Yemen',
338
- 'ZM' => 'Zambia',
339
- 'ZW' => 'Zimbabwe',
340
- ) ?>
341
- <td><label><span><?php fs_echo( 'country', $slug ) ?>:</span> <select id="address_country_code">
342
- <?php if ( empty( $billing->address_country_code ) ) : ?>
343
- <option value=""
344
- selected><?php fs_echo( 'select-country', $slug ) ?></option>
345
- <?php endif ?>
346
- <?php foreach ( $countries as $code => $country ) : ?>
347
- <option
348
- value="<?php echo $code ?>" <?php selected( $billing->address_country_code, $code ) ?>><?php echo $country ?></option>
349
- <?php endforeach ?>
350
- </select></label></td>
351
- <td><label><span><?php fs_echo( 'state', $slug ) ?> / <?php fs_echo( 'province', $slug ) ?>:</span>
352
- <input id="address_state" value="<?php echo $billing->address_state ?>" placeholder="<?php fs_echo( 'state', $slug ) ?> / <?php fs_echo( 'province', $slug ) ?>"></label></td>
353
- </tr>
354
- <tr>
355
- <td colspan="2">
356
- <button
357
- class="button"><?php fs_echo( $has_billing ? 'edit' : 'update', $slug ) ?></button>
358
- </td>
359
- </tr>
360
- </table>
361
- </div>
362
- <div class="postbox">
363
- <h3><span class="dashicons dashicons-paperclip"></span> <?php fs_echo( 'payments', $slug ) ?></h3>
364
-
365
- <?php
366
- $payments = $fs->_fetch_payments();
367
- ?>
368
-
369
- <div class="inside">
370
- <table class="widefat">
371
- <thead>
372
- <tr>
373
- <th><?php fs_echo( 'id', $slug ) ?></th>
374
- <th><?php fs_echo( 'date', $slug ) ?></th>
375
- <!-- <th>--><?php //fs_echo( 'transaction' ) ?><!--</th>-->
376
- <th><?php fs_echo( 'amount', $slug ) ?></th>
377
- <th><?php fs_echo( 'invoice', $slug ) ?></th>
378
- </tr>
379
- </thead>
380
- <tbody>
381
- <?php $odd = true ?>
382
- <?php foreach ( $payments as $payment ) : ?>
383
- <tr<?php echo $odd ? ' class="alternate"' : '' ?>>
384
- <td><?php echo $payment->id ?></td>
385
- <td><?php echo date( 'M j, Y', strtotime( $payment->created ) ) ?></td>
386
- <td>$<?php echo $payment->gross ?></td>
387
- <td><a href="<?php echo $fs->_get_invoice_api_url( $payment->id ) ?>"
388
- class="button button-small"
389
- target="_blank"><?php fs_echo( 'invoice', $slug ) ?></a></td>
390
- </tr>
391
- <?php $odd = ! $odd; endforeach ?>
392
- </tbody>
393
- </table>
394
- </div>
395
- </div>
396
- </div>
397
- </div>
398
- </div>
399
- </div>
400
- </div>
401
- <script type="text/javascript">
402
- (function($){
403
- var $billingAddress = $('#fs_billing_address'),
404
- $billingInputs = $billingAddress.find('input, select');
405
-
406
- var setPrevValues = function () {
407
- $billingInputs.each(function () {
408
- $(this).attr('data-val', $(this).val());
409
- });
410
- };
411
-
412
- setPrevValues();
413
-
414
- var hasBillingChanged = function () {
415
- for (var i = 0, len = $billingInputs.length; i < len; i++){
416
- var $this = $($billingInputs[i]);
417
- if ($this.attr('data-val') !== $this.val()) {
418
- return true;
419
- }
420
- }
421
-
422
- return false;
423
- };
424
-
425
- var isEditAllFieldsMode = false;
426
-
427
- $billingAddress.find('.button').click(function(){
428
- $billingAddress.toggleClass('fs-read-mode');
429
-
430
- var isEditMode = !$billingAddress.hasClass('fs-read-mode');
431
-
432
- $(this)
433
- .html(isEditMode ? <?php echo json_encode(fs_text('update', $slug)) ?> : <?php echo json_encode(fs_text('edit', $slug)) ?>)
434
- .toggleClass('button-primary');
435
-
436
- if (isEditMode) {
437
- $('#business_name').focus().select();
438
- isEditAllFieldsMode = true;
439
- } else {
440
- isEditAllFieldsMode = false;
441
-
442
- if (!hasBillingChanged())
443
- return;
444
-
445
- var billing = {};
446
-
447
- $billingInputs.each(function(){
448
- if ($(this).attr('data-val') !== $(this).val()) {
449
- billing[$(this).attr('id')] = $(this).val();
450
- }
451
- });
452
-
453
- $.ajax({
454
- url : ajaxurl,
455
- method : 'POST',
456
- data : {
457
- action : '<?php echo $fs->get_ajax_action( 'update_billing' ) ?>',
458
- security : '<?php echo $fs->get_ajax_security( 'update_billing' ) ?>',
459
- slug : '<?php echo $slug ?>',
460
- billing : billing
461
- },
462
- success: function (resultObj) {
463
- if (resultObj.success) {
464
- setPrevValues();
465
- } else {
466
- alert(resultObj.error);
467
- }
468
- }
469
- });
470
- }
471
- });
472
-
473
- $billingInputs
474
- // Get into edit mode upon selection.
475
- .focus(function () {
476
- var isEditMode = !$billingAddress.hasClass('fs-read-mode');
477
-
478
- if (isEditMode) {
479
- return;
480
- }
481
-
482
- $billingAddress.toggleClass('fs-read-mode');
483
- $billingAddress.find('.button')
484
- .html(<?php echo json_encode( fs_text( 'update', $slug ) ) ?>)
485
- .toggleClass('button-primary');
486
- })
487
- // If blured after editing only one field without changes, exit edit mode.
488
- .blur(function () {
489
- if (!isEditAllFieldsMode && !hasBillingChanged()) {
490
- $billingAddress.toggleClass('fs-read-mode');
491
- $billingAddress.find('.button')
492
- .html(<?php echo json_encode( fs_text( 'edit', $slug ) ) ?>)
493
- .toggleClass('button-primary');
494
- }
495
- });
496
- })(jQuery);
497
- </script>
498
- <?php
499
- $params = array(
500
- 'page' => 'account',
501
- 'module_id' => $fs->get_id(),
502
- 'module_slug' => $slug,
503
- 'module_version' => $fs->get_plugin_version(),
504
- );
505
- fs_require_template( 'powered-by.php', $params );
506
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
freemius/templates/checkout.php CHANGED
@@ -165,7 +165,7 @@
165
 
166
  $view_params = array(
167
  'id' => $VARS['id'],
168
- 'page' => strtolower( $fs->get_text( 'checkout' ) ) . ' ' . $fs->get_text( 'pci-compliant' ),
169
  );
170
  fs_require_once_template('secure-https-header.php', $view_params);
171
  ?>
165
 
166
  $view_params = array(
167
  'id' => $VARS['id'],
168
+ 'page' => strtolower( $fs->get_text_inline( 'Checkout', 'checkout' ) ) . ' ' . $fs->get_text_inline( 'PCI compliant', 'pci-compliant' ),
169
  );
170
  fs_require_once_template('secure-https-header.php', $view_params);
171
  ?>
freemius/templates/connect.php CHANGED
@@ -125,36 +125,38 @@
125
  <p class="fs-error"><?php echo esc_html( $error ) ?></p>
126
  <?php endif ?>
127
  <p><?php
128
- $button_label = 'opt-in-connect';
129
 
130
  if ( $is_pending_activation ) {
131
- $button_label = 'resend-activation-email';
132
 
133
  echo $fs->apply_filters( 'pending_activation_message', sprintf(
134
- fs_text( 'thanks-x', $slug ) . '<br>' .
135
- fs_text( 'pending-activation-message', $slug ),
 
136
  $first_name,
137
  '<b>' . $fs->get_plugin_name() . '</b>',
138
  '<b>' . $current_user->user_email . '</b>',
139
- fs_text( 'complete-the-install', $slug )
140
  ) );
141
  } else if ( $require_license_key ) {
142
- $button_label = 'agree-activate-license';
143
 
144
  echo $fs->apply_filters( 'connect-message_on-premium',
145
- sprintf( fs_text( 'hey-x', $slug ), $first_name ) . '<br>' .
146
- sprintf( fs_text( 'thanks-for-purchasing', $slug ), '<b>' . $fs->get_plugin_name() . '</b>' ),
 
147
  $first_name,
148
  $fs->get_plugin_name()
149
  );
150
  } else {
151
  $filter = 'connect_message';
152
- $default_optin_message = 'connect-message';
153
 
154
  if ( $fs->is_plugin_update() ) {
155
  // If Freemius was added on a plugin update, set different
156
  // opt-in message.
157
- $default_optin_message = 'connect-message_on-update';
158
 
159
  // If user customized the opt-in message on update, use
160
  // that message. Otherwise, fallback to regular opt-in
@@ -165,10 +167,10 @@
165
  }
166
 
167
  echo $fs->apply_filters( $filter,
168
- sprintf( fs_text( 'hey-x', $slug ), $first_name ) . '<br>' .
169
  sprintf(
170
- fs_text( $default_optin_message, $slug ),
171
- '<b>' . $fs->get_plugin_name() . '</b>',
172
  '<b>' . $current_user->user_login . '</b>',
173
  '<a href="' . $site_url . '" target="_blank">' . $site_url . '</a>',
174
  $freemius_link
@@ -184,17 +186,17 @@
184
  <?php if ( $require_license_key ) : ?>
185
  <div class="fs-license-key-container">
186
  <input id="fs_license_key" name="fs_key" type="text" required maxlength="32"
187
- placeholder="<?php fs_echo( 'license-key', $slug ) ?>" tabindex="1"/>
188
  <i class="dashicons dashicons-admin-network"></i>
189
  <a class="show-license-resend-modal show-license-resend-modal-<?php echo $fs->get_unique_affix() ?>"
190
- href="#"><?php fs_echo( 'cant-find-license-key' ); ?></a>
191
  </div>
192
  <?php endif ?>
193
  </div>
194
  <div class="fs-actions">
195
  <?php if ( $fs->is_enable_anonymous() && ! $is_pending_activation && ! $require_license_key ) : ?>
196
  <a href="<?php echo fs_nonce_url( $fs->_get_admin_page_url( '', array( 'fs_action' => $fs->get_unique_affix() . '_skip_activation' ) ), $fs->get_unique_affix() . '_skip_activation' ) ?>"
197
- class="button button-secondary" tabindex="2"><?php fs_echo( 'skip', $slug ) ?></a>
198
  <?php endif ?>
199
 
200
  <?php if ( $activate_with_current_user ) : ?>
@@ -203,7 +205,7 @@
203
  value="<?php echo $fs->get_unique_affix() ?>_activate_existing">
204
  <?php wp_nonce_field( 'activate_existing_' . $fs->get_public_key() ) ?>
205
  <button class="button button-primary" tabindex="1"
206
- type="submit"><?php fs_echo( $button_label, $slug ) ?></button>
207
  </form>
208
  <?php else : ?>
209
  <form method="post" action="<?php echo WP_FS__ADDRESS ?>/action/service/user/install/">
@@ -214,7 +216,7 @@
214
  <button class="button button-primary" tabindex="1"
215
  type="submit"<?php if ( $require_license_key ) {
216
  echo ' disabled="disabled"';
217
- } ?>><?php fs_echo( $button_label, $slug ) ?></button>
218
  </form>
219
  <?php endif ?>
220
  </div><?php
@@ -223,32 +225,32 @@
223
  $permissions = array(
224
  'profile' => array(
225
  'icon-class' => 'dashicons dashicons-admin-users',
226
- 'label' => $fs->get_text( 'permissions-profile' ),
227
- 'desc' => $fs->get_text( 'permissions-profile_desc' ),
228
  'priority' => 5,
229
  ),
230
  'site' => array(
231
  'icon-class' => 'dashicons dashicons-admin-settings',
232
- 'label' => $fs->get_text( 'permissions-site' ),
233
- 'desc' => $fs->get_text( 'permissions-site_desc' ),
234
  'priority' => 10,
235
  ),
236
  'notices' => array(
237
  'icon-class' => 'dashicons dashicons-testimonial',
238
- 'label' => $fs->get_text( 'permissions-admin-notices' ),
239
- 'desc' => $fs->get_text( 'permissions-newsletter_desc' ),
240
  'priority' => 13,
241
  ),
242
  'events' => array(
243
  'icon-class' => 'dashicons dashicons-admin-plugins',
244
- 'label' => sprintf( $fs->get_text( 'permissions-events' ), ucfirst( $fs->get_module_type() ) ),
245
- 'desc' => $fs->get_text( 'permissions-events_desc' ),
246
  'priority' => 20,
247
  ),
248
  // 'plugins_themes' => array(
249
  // 'icon-class' => 'dashicons dashicons-admin-settings',
250
- // 'label' => fs_text( 'permissions-plugins_themes' ),
251
- // 'desc' => fs_text( 'permissions-plugins_themes_desc' ),
252
  // 'priority' => 30,
253
  // ),
254
  );
@@ -257,8 +259,8 @@
257
  if ( $fs->is_permission_requested( 'newsletter' ) ) {
258
  $permissions['newsletter'] = array(
259
  'icon-class' => 'dashicons dashicons-email-alt',
260
- 'label' => $fs->get_text( 'permissions-newsletter' ),
261
- 'desc' => $fs->get_text( 'permissions-newsletter_desc' ),
262
  'priority' => 15,
263
  );
264
  }
@@ -273,13 +275,13 @@
273
  <div class="fs-permissions">
274
  <?php if ( $require_license_key ) : ?>
275
  <p class="fs-license-sync-disclaimer"><?php
276
- printf(
277
- fs_esc_html( 'license-sync-disclaimer', $slug ),
278
  $fs->get_module_label( true ),
279
  $freemius_link
280
  ) ?></p>
281
  <?php endif ?>
282
- <a class="fs-trigger" href="#" tabindex="1"><?php fs_echo( 'what-permissions', $slug ) ?></a>
283
  <ul><?php
284
  foreach ( $permissions as $id => $permission ) : ?>
285
  <li id="fs-permission-<?php echo esc_attr( $id ); ?>"
@@ -300,20 +302,20 @@
300
  <div class="fs-freemium-licensing">
301
  <p>
302
  <?php if ( $require_license_key ) : ?>
303
- <?php fs_echo( 'dont-have-license-key', $slug ) ?>
304
- <a data-require-license="false" tabindex="1"><?php fs_echo( 'activate-free-version', $slug ) ?></a>
305
  <?php else : ?>
306
- <?php fs_echo( 'have-license-key', $slug ) ?>
307
- <a data-require-license="true" tabindex="1"><?php fs_echo( 'activate-license', $slug ) ?></a>
308
  <?php endif ?>
309
  </p>
310
  </div>
311
  <?php endif ?>
312
  <div class="fs-terms">
313
  <a href="https://freemius.com/privacy/" target="_blank"
314
- tabindex="1"><?php fs_echo( 'privacy-policy', $slug ) ?></a>
315
  &nbsp;&nbsp;-&nbsp;&nbsp;
316
- <a href="<?php echo $freemius_site_www ?>/terms/" target="_blank" tabindex="1"><?php fs_echo( 'tos', $slug ) ?></a>
317
  </div>
318
  </div>
319
  <?php
@@ -405,7 +407,7 @@
405
 
406
  // Reset loading mode.
407
  $primaryCta.removeClass('fs-loading').css({'cursor': 'auto'});
408
- $primaryCta.html(<?php echo json_encode( fs_text( $button_label, $slug ) ) ?>);
409
  $primaryCta.prop('disabled', false);
410
  $(document.body).css({'cursor': 'auto'});
411
  }
@@ -430,7 +432,10 @@
430
 
431
  $primaryCta.on('click', function () {
432
  $(this).addClass('fs-loading');
433
- $(this).html(<?php echo json_encode( fs_text( $is_pending_activation ? 'sending-email' : 'activating', $slug ) ) ?> +'...');
 
 
 
434
  });
435
 
436
  $('.fs-permissions .fs-trigger').on('click', function () {
125
  <p class="fs-error"><?php echo esc_html( $error ) ?></p>
126
  <?php endif ?>
127
  <p><?php
128
+ $button_label = fs_text_inline( 'Allow & Continue', 'opt-in-connect', $slug );
129
 
130
  if ( $is_pending_activation ) {
131
+ $button_label = fs_text_inline( 'Re-send activation email', 'resend-activation-email', $slug );
132
 
133
  echo $fs->apply_filters( 'pending_activation_message', sprintf(
134
+ /* translators: %s: name (e.g. Thanks John!) */
135
+ fs_text_inline( 'Thanks %s!', 'thanks-x', $slug ) . '<br>' .
136
+ fs_text_inline( '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.', 'pending-activation-message', $slug ),
137
  $first_name,
138
  '<b>' . $fs->get_plugin_name() . '</b>',
139
  '<b>' . $current_user->user_email . '</b>',
140
+ fs_text_inline( 'complete the install', 'complete-the-install', $slug )
141
  ) );
142
  } else if ( $require_license_key ) {
143
+ $button_label = fs_text_inline( 'Agree & Activate License', 'agree-activate-license', $slug );
144
 
145
  echo $fs->apply_filters( 'connect-message_on-premium',
146
+ /* translators: %s: name (e.g. Hey John,) */
147
+ sprintf( fs_text_x_inline( 'Hey %s,', 'greeting', $slug ), $first_name ) . '<br>' .
148
+ sprintf( fs_text_inline( 'Thanks for purchasing %s! To get started, please enter your license key:', 'thanks-for-purchasing', $slug ), '<b>' . $fs->get_plugin_name() . '</b>' ),
149
  $first_name,
150
  $fs->get_plugin_name()
151
  );
152
  } else {
153
  $filter = 'connect_message';
154
+ $default_optin_message = fs_text_inline( 'Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s.', 'connect-message', $slug);;
155
 
156
  if ( $fs->is_plugin_update() ) {
157
  // If Freemius was added on a plugin update, set different
158
  // opt-in message.
159
+ $default_optin_message = fs_text_inline( 'Please help us improve %1$s! If you opt in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that\'s okay! %1$s will still work just fine.', 'connect-message_on-update', $slug );
160
 
161
  // If user customized the opt-in message on update, use
162
  // that message. Otherwise, fallback to regular opt-in
167
  }
168
 
169
  echo $fs->apply_filters( $filter,
170
+ esc_html( sprintf( fs_text_x_inline( 'Hey %s,', 'greeting', 'hey-x', $slug ), $first_name ) ) . '<br>' .
171
  sprintf(
172
+ esc_html( $default_optin_message ),
173
+ '<b>' . esc_html( $fs->get_plugin_name() ) . '</b>',
174
  '<b>' . $current_user->user_login . '</b>',
175
  '<a href="' . $site_url . '" target="_blank">' . $site_url . '</a>',
176
  $freemius_link
186
  <?php if ( $require_license_key ) : ?>
187
  <div class="fs-license-key-container">
188
  <input id="fs_license_key" name="fs_key" type="text" required maxlength="32"
189
+ placeholder="<?php fs_esc_attr_echo_inline( 'License key', 'license-key', $slug ) ?>" tabindex="1"/>
190
  <i class="dashicons dashicons-admin-network"></i>
191
  <a class="show-license-resend-modal show-license-resend-modal-<?php echo $fs->get_unique_affix() ?>"
192
+ href="#"><?php fs_esc_html_echo_inline( "Can't find your license key?", 'cant-find-license-key' ); ?></a>
193
  </div>
194
  <?php endif ?>
195
  </div>
196
  <div class="fs-actions">
197
  <?php if ( $fs->is_enable_anonymous() && ! $is_pending_activation && ! $require_license_key ) : ?>
198
  <a href="<?php echo fs_nonce_url( $fs->_get_admin_page_url( '', array( 'fs_action' => $fs->get_unique_affix() . '_skip_activation' ) ), $fs->get_unique_affix() . '_skip_activation' ) ?>"
199
+ class="button button-secondary" tabindex="2"><?php fs_esc_html_echo_x_inline( 'Skip', 'verb', 'skip', $slug ) ?></a>
200
  <?php endif ?>
201
 
202
  <?php if ( $activate_with_current_user ) : ?>
205
  value="<?php echo $fs->get_unique_affix() ?>_activate_existing">
206
  <?php wp_nonce_field( 'activate_existing_' . $fs->get_public_key() ) ?>
207
  <button class="button button-primary" tabindex="1"
208
+ type="submit"><?php echo esc_html( $button_label ) ?></button>
209
  </form>
210
  <?php else : ?>
211
  <form method="post" action="<?php echo WP_FS__ADDRESS ?>/action/service/user/install/">
216
  <button class="button button-primary" tabindex="1"
217
  type="submit"<?php if ( $require_license_key ) {
218
  echo ' disabled="disabled"';
219
+ } ?>><?php echo esc_html( $button_label ) ?></button>
220
  </form>
221
  <?php endif ?>
222
  </div><?php
225
  $permissions = array(
226
  'profile' => array(
227
  'icon-class' => 'dashicons dashicons-admin-users',
228
+ 'label' => $fs->get_text_inline( 'Your Profile Overview', 'permissions-profile' ),
229
+ 'desc' => $fs->get_text_inline( 'Name and email address', 'permissions-profile_desc' ),
230
  'priority' => 5,
231
  ),
232
  'site' => array(
233
  'icon-class' => 'dashicons dashicons-admin-settings',
234
+ 'label' => $fs->get_text_inline( 'Your Site Overview', 'permissions-site' ),
235
+ 'desc' => $fs->get_text_inline( 'Site URL, WP version, PHP info, plugins & themes', 'permissions-site_desc' ),
236
  'priority' => 10,
237
  ),
238
  'notices' => array(
239
  'icon-class' => 'dashicons dashicons-testimonial',
240
+ 'label' => $fs->get_text_inline( 'Admin Notices', 'permissions-admin-notices' ),
241
+ 'desc' => $fs->get_text_inline( 'Updates, announcements, marketing, no spam', 'permissions-newsletter_desc' ),
242
  'priority' => 13,
243
  ),
244
  'events' => array(
245
  'icon-class' => 'dashicons dashicons-admin-plugins',
246
+ 'label' => sprintf( $fs->get_text_inline( 'Current %s Events', 'permissions-events' ), ucfirst( $fs->get_module_type() ) ),
247
+ 'desc' => $fs->get_text_inline( 'Activation, deactivation and uninstall', 'permissions-events_desc' ),
248
  'priority' => 20,
249
  ),
250
  // 'plugins_themes' => array(
251
  // 'icon-class' => 'dashicons dashicons-admin-settings',
252
+ // 'label' => fs_text_inline( 'Plugins & Themes', 'permissions-plugins_themes' ),
253
+ // 'desc' => fs_text_inline( 'Titles, versions and state.', 'permissions-plugins_themes_desc' ),
254
  // 'priority' => 30,
255
  // ),
256
  );
259
  if ( $fs->is_permission_requested( 'newsletter' ) ) {
260
  $permissions['newsletter'] = array(
261
  'icon-class' => 'dashicons dashicons-email-alt',
262
+ 'label' => $fs->get_text_inline( 'Newsletter', 'permissions-newsletter' ),
263
+ 'desc' => $fs->get_text_inline( 'Updates, announcements, marketing, no spam', 'permissions-newsletter_desc' ),
264
  'priority' => 15,
265
  );
266
  }
275
  <div class="fs-permissions">
276
  <?php if ( $require_license_key ) : ?>
277
  <p class="fs-license-sync-disclaimer"><?php
278
+ echo sprintf(
279
+ fs_esc_html_inline( '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.', 'license-sync-disclaimer', $slug ),
280
  $fs->get_module_label( true ),
281
  $freemius_link
282
  ) ?></p>
283
  <?php endif ?>
284
+ <a class="fs-trigger" href="#" tabindex="1"><?php fs_esc_html_echo_inline( 'What permissions are being granted?', 'what-permissions', $slug ) ?></a>
285
  <ul><?php
286
  foreach ( $permissions as $id => $permission ) : ?>
287
  <li id="fs-permission-<?php echo esc_attr( $id ); ?>"
302
  <div class="fs-freemium-licensing">
303
  <p>
304
  <?php if ( $require_license_key ) : ?>
305
+ <?php fs_esc_html_echo_inline( 'Don\'t have a license key?', 'dont-have-license-key', $slug ) ?>
306
+ <a data-require-license="false" tabindex="1"><?php fs_esc_html_echo_inline( 'Activate Free Version', 'activate-free-version', $slug ) ?></a>
307
  <?php else : ?>
308
+ <?php fs_echo_inline( 'Have a license key?', 'have-license-key', $slug ) ?>
309
+ <a data-require-license="true" tabindex="1"><?php fs_esc_html_echo_inline( 'Activate License', 'activate-license', $slug ) ?></a>
310
  <?php endif ?>
311
  </p>
312
  </div>
313
  <?php endif ?>
314
  <div class="fs-terms">
315
  <a href="https://freemius.com/privacy/" target="_blank"
316
+ tabindex="1"><?php fs_esc_html_echo_inline( 'Privacy Policy', 'privacy-policy', $slug ) ?></a>
317
  &nbsp;&nbsp;-&nbsp;&nbsp;
318
+ <a href="<?php echo $freemius_site_www ?>/terms/" target="_blank" tabindex="1"><?php fs_echo_inline( 'Terms of Service', 'tos', $slug ) ?></a>
319
  </div>
320
  </div>
321
  <?php
407
 
408
  // Reset loading mode.
409
  $primaryCta.removeClass('fs-loading').css({'cursor': 'auto'});
410
+ $primaryCta.html('<?php echo esc_js( $button_label ) ?>');
411
  $primaryCta.prop('disabled', false);
412
  $(document.body).css({'cursor': 'auto'});
413
  }
432
 
433
  $primaryCta.on('click', function () {
434
  $(this).addClass('fs-loading');
435
+ $(this).html('<?php echo esc_js( $is_pending_activation ?
436
+ fs_text_x_inline( 'Sending email', 'as in the process of sending an email', 'sending-email', $slug ) :
437
+ fs_text_x_inline( 'Activating', 'as activating plugin', 'activating', $slug )
438
+ ) ?>...');
439
  });
440
 
441
  $('.fs-permissions .fs-trigger').on('click', function () {
freemius/templates/contact.php CHANGED
@@ -71,7 +71,7 @@
71
 
72
  $view_params = array(
73
  'id' => $VARS['id'],
74
- 'page' => strtolower( $fs->get_text( 'contact' ) ),
75
  );
76
  fs_require_once_template('secure-https-header.php', $view_params);
77
 
71
 
72
  $view_params = array(
73
  'id' => $VARS['id'],
74
+ 'page' => strtolower( $fs->get_text_inline( 'Contact', 'contact' ) ),
75
  );
76
  fs_require_once_template('secure-https-header.php', $view_params);
77
 
freemius/templates/debug.php CHANGED
@@ -13,17 +13,20 @@
13
  global $fs_active_plugins;
14
 
15
  $fs_options = FS_Option_Manager::get_manager( WP_FS__ACCOUNTS_OPTION_NAME, true );
 
 
 
16
  ?>
17
- <h1><?php echo fs_text( 'Freemius Debug' ) . ' - ' . fs_text( 'SDK' ) . ' v.' . $fs_active_plugins->newest->version ?></h1>
18
  <div>
19
  <!-- Debugging Switch -->
20
  <?php //$debug_mode = get_option( 'fs_debug_mode', null ) ?>
21
- <span class="switch-label"><?php fs_echo( 'debugging' ) ?></span>
22
 
23
  <div class="switch <?php echo WP_FS__DEBUG_SDK ? 'off' : 'on' ?>">
24
  <div class="toggle"></div>
25
- <span class="on"><?php fs_echo( 'on' ) ?></span>
26
- <span class="off"><?php fs_echo( 'off' ) ?></span>
27
  </div>
28
  <script type="text/javascript">
29
  (function ($) {
@@ -48,7 +51,7 @@
48
  }(jQuery));
49
  </script>
50
  </div>
51
- <h2><?php fs_echo( 'actions' ) ?></h2>
52
  <table>
53
  <tbody>
54
  <tr>
@@ -58,28 +61,28 @@
58
  <input type="hidden" name="fs_action" value="restart_freemius">
59
  <?php wp_nonce_field( 'restart_freemius' ) ?>
60
  <button class="button button-primary"
61
- onclick="if (confirm('<?php fs_echo( 'delete-all-confirm' ) ?>')) this.parentNode.submit(); return false;"><?php fs_echo( 'delete-all-accounts' ) ?></button>
62
  </form>
63
  </td>
64
  <td>
65
  <!-- Clear API Cache -->
66
  <form action="" method="POST">
67
  <input type="hidden" name="fs_clear_api_cache" value="true">
68
- <button class="button button-primary"><?php fs_echo( 'clear-api-cache' ) ?></button>
69
  </form>
70
  </td>
71
  <td>
72
  <!-- Sync Data with Server -->
73
  <form action="" method="POST">
74
  <input type="hidden" name="background_sync" value="true">
75
- <button class="button button-primary"><?php fs_echo( 'sync-data-from-server' ) ?></button>
76
  </form>
77
  </td>
78
  <td>
79
- <button id="fs_load_db_option" class="button"><?php fs_echo( 'Load DB Option' ) ?></button>
80
  </td>
81
  <td>
82
- <button id="fs_set_db_option" class="button"><?php fs_echo( 'Set DB Option' ) ?></button>
83
  </td>
84
  </tr>
85
  </tbody>
@@ -156,8 +159,8 @@
156
  <table class="widefat">
157
  <thead>
158
  <tr>
159
- <th><?php fs_echo( 'key' ) ?></th>
160
- <th><?php fs_echo( 'value' ) ?></th>
161
  </tr>
162
  </thead>
163
  <tbody>
@@ -173,14 +176,14 @@
173
  <?php endforeach ?>
174
  </tbody>
175
  </table>
176
- <h2><?php fs_echo( 'sdk-versions' ) ?></h2>
177
  <table id="fs_sdks" class="widefat">
178
  <thead>
179
  <tr>
180
- <th><?php fs_echo( 'version' ) ?></th>
181
- <th><?php fs_echo( 'sdk-path' ) ?></th>
182
- <th><?php fs_echo( 'plugin-path' ) ?></th>
183
- <th><?php fs_echo( 'is-active' ) ?></th>
184
  </tr>
185
  </thead>
186
  <tbody>
@@ -208,19 +211,19 @@
208
  <?php foreach ( $module_types as $module_type ) : ?>
209
  <?php $modules = $fs_options->get_option( $module_type . 's' ) ?>
210
  <?php if ( is_array( $modules ) && count( $modules ) > 0 ) : ?>
211
- <h2><?php fs_echo( $module_type . 's' ) ?></h2>
212
  <table id="fs_<?php echo $module_type ?>" class="widefat">
213
  <thead>
214
  <tr>
215
- <th><?php fs_echo( 'id' ) ?></th>
216
- <th><?php fs_echo( 'slug' ) ?></th>
217
- <th><?php fs_echo( 'version' ) ?></th>
218
- <th><?php fs_echo( 'title' ) ?></th>
219
- <th><?php fs_echo( 'api' ) ?></th>
220
- <th><?php fs_echo( 'freemius-state' ) ?></th>
221
- <th><?php fs_echo( 'plugin-path' ) ?></th>
222
- <th><?php fs_echo( 'public-key' ) ?></th>
223
- <th><?php fs_echo( 'actions' ) ?></th>
224
  </tr>
225
  </thead>
226
  <tbody>
@@ -248,16 +251,18 @@
248
  <td<?php if ( $is_active && ! $fs->has_api_connectivity() ) {
249
  echo ' style="color: red; text-transform: uppercase;"';
250
  } ?>><?php if ( $is_active ) {
251
- echo $fs->has_api_connectivity() ?
252
- fs_text( 'connected' ) :
253
- fs_text( 'blocked' );
 
254
  } ?></td>
255
  <td<?php if ( $is_active && ! $fs->is_on() ) {
256
  echo ' style="color: red; text-transform: uppercase;"';
257
  } ?>><?php if ( $is_active ) {
258
- echo $fs->is_on() ?
259
- fs_text( 'on' ) :
260
- fs_text( 'off' );
 
261
  } ?></td>
262
  <td><?php echo $data->file ?></td>
263
  <td><?php echo $data->public_key ?></td>
@@ -269,11 +274,11 @@
269
  <input type="hidden" name="module_id" value="<?php echo $fs->get_id() ?>">
270
  <?php wp_nonce_field( 'simulate_trial' ) ?>
271
 
272
- <button type="submit" class="button button-primary simulate-trial"><?php fs_echo( 'Simulate Trial' ) ?></button>
273
  </form>
274
  <?php endif ?>
275
  <?php if ( $fs->is_registered() ) : ?>
276
- <a class="button" href="<?php echo $fs->get_account_url() ?>"><?php fs_echo('account') ?></a>
277
  <?php endif ?>
278
  <?php endif ?>
279
  </td>
@@ -292,17 +297,21 @@
292
  $sites = $VARS[ $module_type . '_sites' ];
293
  ?>
294
  <?php if ( is_array( $sites ) && count( $sites ) > 0 ) : ?>
295
- <h2><?php printf( fs_text( 'module-installs' ), fs_text( $module_type ) ) ?> / <?php fs_echo( 'sites' ) ?></h2>
 
 
 
 
296
  <table id="fs_<?php echo $module_type ?>_installs" class="widefat">
297
  <thead>
298
  <tr>
299
- <th><?php fs_echo( 'id' ) ?></th>
300
- <th><?php fs_echo( 'slug' ) ?></th>
301
- <th><?php fs_echo( 'user-id' ) ?></th>
302
- <th><?php fs_echo( 'plan' ) ?></th>
303
- <th><?php fs_echo( 'public-key' ) ?></th>
304
- <th><?php fs_echo( 'secret-key' ) ?></th>
305
- <th><?php fs_echo( 'actions' ) ?></th>
306
  </tr>
307
  </thead>
308
  <tbody>
@@ -324,7 +333,7 @@
324
  <input type="hidden" name="module_id" value="<?php echo $site->plugin_id ?>">
325
  <input type="hidden" name="module_type" value="<?php echo $module_type ?>">
326
  <input type="hidden" name="slug" value="<?php echo $slug ?>">
327
- <button type="submit" class="button"><?php fs_echo( 'delete' ) ?></button></td>
328
  </tr>
329
  <?php endforeach ?>
330
  </tbody>
@@ -335,17 +344,17 @@
335
  $addons = $VARS['addons'];
336
  ?>
337
  <?php foreach ( $addons as $plugin_id => $plugin_addons ) : ?>
338
- <h2><?php printf( fs_text( 'addons-of-x' ), $plugin_id ) ?></h2>
339
  <table id="fs_addons" class="widefat">
340
  <thead>
341
  <tr>
342
- <th><?php fs_echo( 'id' ) ?></th>
343
- <th><?php fs_echo( 'title' ) ?></th>
344
- <th><?php fs_echo( 'slug' ) ?></th>
345
- <th><?php fs_echo( 'version' ) ?></th>
346
- <th><?php fs_echo( 'public-key' ) ?></th>
347
- <th><?php fs_echo( 'secret-key' ) ?></th>
348
- </tr>
349
  </thead>
350
  <tbody>
351
  <?php
@@ -372,16 +381,16 @@
372
  $users = $VARS['users'];
373
  ?>
374
  <?php if ( is_array( $users ) && 0 < count( $users ) ) : ?>
375
- <h2><?php fs_echo( 'users' ) ?></h2>
376
  <table id="fs_users" class="widefat">
377
  <thead>
378
  <tr>
379
- <th><?php fs_echo( 'id' ) ?></th>
380
- <th><?php fs_echo( 'name' ) ?></th>
381
- <th><?php fs_echo( 'email' ) ?></th>
382
- <th><?php fs_echo( 'verified' ) ?></th>
383
- <th><?php fs_echo( 'public-key' ) ?></th>
384
- <th><?php fs_echo( 'secret-key' ) ?></th>
385
  </tr>
386
  </thead>
387
  <tbody>
@@ -401,19 +410,19 @@
401
  <?php foreach ( $module_types as $module_type ) : ?>
402
  <?php $licenses = $VARS[ $module_type . '_licenses' ] ?>
403
  <?php if ( is_array( $licenses ) && count( $licenses ) > 0 ) : ?>
404
- <h2><?php printf( fs_text( 'module-licenses' ), fs_text( $module_type ) ) ?></h2>
405
  <table id="fs_<?php echo $module_type ?>_licenses" class="widefat">
406
  <thead>
407
  <tr>
408
- <th><?php fs_echo( 'id' ) ?></th>
409
- <th><?php fs_echo( 'plugin-id' ) ?></th>
410
- <th><?php fs_echo( 'user-id' ) ?></th>
411
- <th><?php fs_echo( 'plan-id' ) ?></th>
412
- <th><?php fs_echo( 'quota' ) ?></th>
413
- <th><?php fs_echo( 'activated' ) ?></th>
414
- <th><?php fs_echo( 'blocking' ) ?></th>
415
- <th><?php fs_echo( 'license-key' ) ?></th>
416
- <th><?php fs_echo( 'expiration' ) ?></th>
417
  </tr>
418
  </thead>
419
  <tbody>
@@ -442,29 +451,29 @@
442
  <?php endforeach ?>
443
  <?php if ( FS_Logger::is_storage_logging_on() ) : ?>
444
 
445
- <h2><?php fs_echo( 'debug-log' ) ?></h2>
446
 
447
  <div id="fs_debug_filters">
448
  <select name="type">
449
- <option value="" selected="selected"><?php fs_echo( 'all-types' ) ?></option>
450
  <option value="warn_error">Warnings & Errors</option>
451
  <option value="error">Errors</option>
452
  <option value="warn">Warnings</option>
453
  <option value="info">Info</option>
454
  </select>
455
  <select name="request_type">
456
- <option value="" selected="selected"><?php fs_echo( 'all-requests' ) ?></option>
457
  <option value="call">Sync</option>
458
  <option value="ajax">AJAX</option>
459
  <option value="cron">WP Cron</option>
460
  </select>
461
- <input name="file" type="text" placeholder="<?php fs_echo( 'file' ) ?>"/>
462
- <input name="function" type="text" placeholder="<?php fs_echo( 'function' ) ?>"/>
463
- <input name="process_id" type="text" placeholder="<?php fs_echo( 'process-id' ) ?>"/>
464
- <input name="logger" type="text" placeholder="<?php fs_echo( 'logger' ) ?>"/>
465
- <input name="message" type="text" placeholder="<?php fs_echo( 'message' ) ?>"/>
466
  <div style="margin: 10px 0">
467
- <button id="fs_filter" class="button" style="float: left"><i class="dashicons dashicons-filter"></i> <?php fs_echo( 'filter' ) ?>
468
  </button>
469
 
470
  <form action="" method="POST" style="float: left; margin-left: 10px;">
@@ -472,7 +481,7 @@
472
  <?php wp_nonce_field( 'download_logs' ) ?>
473
  <div class="fs-filters"></div>
474
  <button id="fs_download" class="button" type="submit"><i
475
- class="dashicons dashicons-download"></i> <?php fs_echo( 'download' ) ?></button>
476
  </form>
477
  <div style="clear: both"></div>
478
  </div>
@@ -483,12 +492,12 @@
483
  <thead>
484
  <tr>
485
  <th>#</th>
486
- <th><?php fs_echo( 'type' ) ?></th>
487
- <th><?php fs_echo( 'id' ) ?></th>
488
- <th><?php fs_echo( 'function' ) ?></th>
489
- <th><?php fs_echo( 'message' ) ?></th>
490
- <th><?php fs_echo( 'file' ) ?></th>
491
- <th><?php fs_echo( 'timestamp' ) ?></th>
492
  </tr>
493
  </thead>
494
  <tbody>
13
  global $fs_active_plugins;
14
 
15
  $fs_options = FS_Option_Manager::get_manager( WP_FS__ACCOUNTS_OPTION_NAME, true );
16
+
17
+ $off_text = fs_text_x_inline( 'Off', 'as turned off' );
18
+ $on_text = fs_text_x_inline( 'On', 'as turned on' );
19
  ?>
20
+ <h1><?php echo fs_text_inline( 'Freemius Debug' ) . ' - ' . fs_text_inline( 'SDK' ) . ' v.' . $fs_active_plugins->newest->version ?></h1>
21
  <div>
22
  <!-- Debugging Switch -->
23
  <?php //$debug_mode = get_option( 'fs_debug_mode', null ) ?>
24
+ <span class="switch-label"><?php fs_esc_html_echo_x_inline( 'Debugging', 'as code debugging' ) ?></span>
25
 
26
  <div class="switch <?php echo WP_FS__DEBUG_SDK ? 'off' : 'on' ?>">
27
  <div class="toggle"></div>
28
+ <span class="on"><?php echo esc_html( $on_text ) ?></span>
29
+ <span class="off"><?php echo esc_html( $off_text ) ?></span>
30
  </div>
31
  <script type="text/javascript">
32
  (function ($) {
51
  }(jQuery));
52
  </script>
53
  </div>
54
+ <h2><?php fs_esc_html_echo_inline( 'Actions', 'actions' ) ?></h2>
55
  <table>
56
  <tbody>
57
  <tr>
61
  <input type="hidden" name="fs_action" value="restart_freemius">
62
  <?php wp_nonce_field( 'restart_freemius' ) ?>
63
  <button class="button button-primary"
64
+ onclick="if (confirm('<?php fs_esc_attr_echo_inline( 'Are you sure you want to delete all Freemius data?', 'delete-all-confirm' ) ?>')) this.parentNode.submit(); return false;"><?php fs_esc_html_echo_inline( 'Delete All Accounts' ) ?></button>
65
  </form>
66
  </td>
67
  <td>
68
  <!-- Clear API Cache -->
69
  <form action="" method="POST">
70
  <input type="hidden" name="fs_clear_api_cache" value="true">
71
+ <button class="button button-primary"><?php fs_esc_html_echo_inline( 'Clear API Cache' ) ?></button>
72
  </form>
73
  </td>
74
  <td>
75
  <!-- Sync Data with Server -->
76
  <form action="" method="POST">
77
  <input type="hidden" name="background_sync" value="true">
78
+ <button class="button button-primary"><?php fs_esc_html_echo_inline( 'Sync Data From Server' ) ?></button>
79
  </form>
80
  </td>
81
  <td>
82
+ <button id="fs_load_db_option" class="button"><?php fs_esc_html_echo_inline( 'Load DB Option' ) ?></button>
83
  </td>
84
  <td>
85
+ <button id="fs_set_db_option" class="button"><?php fs_esc_html_echo_inline( 'Set DB Option' ) ?></button>
86
  </td>
87
  </tr>
88
  </tbody>
159
  <table class="widefat">
160
  <thead>
161
  <tr>
162
+ <th><?php fs_esc_html_echo_inline( 'Key', 'key' ) ?></th>
163
+ <th><?php fs_esc_html_echo_inline( 'Value', 'value' ) ?></th>
164
  </tr>
165
  </thead>
166
  <tbody>
176
  <?php endforeach ?>
177
  </tbody>
178
  </table>
179
+ <h2><?php fs_esc_html_echo_x_inline( 'SDK Versions', 'as software development kit versions', 'sdk-versions' ) ?></h2>
180
  <table id="fs_sdks" class="widefat">
181
  <thead>
182
  <tr>
183
+ <th><?php fs_esc_html_echo_x_inline( 'Version', 'product version' ) ?></th>
184
+ <th><?php fs_esc_html_echo_inline( 'SDK Path' ) ?></th>
185
+ <th><?php fs_esc_html_echo_inline( 'Module Path' ) ?></th>
186
+ <th><?php fs_esc_html_echo_inline( 'Is Active' ) ?></th>
187
  </tr>
188
  </thead>
189
  <tbody>
211
  <?php foreach ( $module_types as $module_type ) : ?>
212
  <?php $modules = $fs_options->get_option( $module_type . 's' ) ?>
213
  <?php if ( is_array( $modules ) && count( $modules ) > 0 ) : ?>
214
+ <h2><?php echo esc_html( ( WP_FS__MODULE_TYPE_PLUGIN == $module_type ) ? fs_text_inline( 'Plugins', 'plugins' ) : fs_text_inline( 'Themes', 'themes' ) ) ?></h2>
215
  <table id="fs_<?php echo $module_type ?>" class="widefat">
216
  <thead>
217
  <tr>
218
+ <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
219
+ <th><?php fs_esc_html_echo_inline( 'Slug' ) ?></th>
220
+ <th><?php fs_esc_html_echo_x_inline( 'Version', 'product version' ) ?></th>
221
+ <th><?php fs_esc_html_echo_inline( 'Title' ) ?></th>
222
+ <th><?php fs_esc_html_echo_x_inline( 'API', 'as application program interface' ) ?></th>
223
+ <th><?php fs_esc_html_echo_inline( 'Freemius State' ) ?></th>
224
+ <th><?php fs_esc_html_echo_inline( 'Module Path' ) ?></th>
225
+ <th><?php fs_esc_html_echo_inline( 'Public Key' ) ?></th>
226
+ <th><?php fs_esc_html_echo_inline( 'Actions' ) ?></th>
227
  </tr>
228
  </thead>
229
  <tbody>
251
  <td<?php if ( $is_active && ! $fs->has_api_connectivity() ) {
252
  echo ' style="color: red; text-transform: uppercase;"';
253
  } ?>><?php if ( $is_active ) {
254
+ echo esc_html( $fs->has_api_connectivity() ?
255
+ fs_text_x_inline( 'Connected', 'as connection was successful' ) :
256
+ fs_text_x_inline( 'Blocked', 'as connection blocked' )
257
+ );
258
  } ?></td>
259
  <td<?php if ( $is_active && ! $fs->is_on() ) {
260
  echo ' style="color: red; text-transform: uppercase;"';
261
  } ?>><?php if ( $is_active ) {
262
+ echo esc_html( $fs->is_on() ?
263
+ $on_text :
264
+ $off_text
265
+ );
266
  } ?></td>
267
  <td><?php echo $data->file ?></td>
268
  <td><?php echo $data->public_key ?></td>
274
  <input type="hidden" name="module_id" value="<?php echo $fs->get_id() ?>">
275
  <?php wp_nonce_field( 'simulate_trial' ) ?>
276
 
277
+ <button type="submit" class="button button-primary simulate-trial"><?php fs_esc_html_echo_inline( 'Simulate Trial' ) ?></button>
278
  </form>
279
  <?php endif ?>
280
  <?php if ( $fs->is_registered() ) : ?>
281
+ <a class="button" href="<?php echo $fs->get_account_url() ?>"><?php fs_esc_html_echo_inline( 'Account', 'account' ) ?></a>
282
  <?php endif ?>
283
  <?php endif ?>
284
  </td>
297
  $sites = $VARS[ $module_type . '_sites' ];
298
  ?>
299
  <?php if ( is_array( $sites ) && count( $sites ) > 0 ) : ?>
300
+ <h2><?php echo esc_html( sprintf(
301
+ /* translators: %s: 'plugin' or 'theme' */
302
+ fs_text_inline( '%s Installs', 'module-installs' ),
303
+ ( WP_FS__MODULE_TYPE_PLUGIN === $module_type ? fs_text_inline( 'Plugin', 'plugin' ) : fs_text_inline( 'Theme', 'theme' ) )
304
+ ) ) ?> / <?php fs_esc_html_echo_x_inline( 'Sites', 'like websites', 'sites' ) ?></h2>
305
  <table id="fs_<?php echo $module_type ?>_installs" class="widefat">
306
  <thead>
307
  <tr>
308
+ <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
309
+ <th><?php fs_esc_html_echo_inline( 'Slug' ) ?></th>
310
+ <th><?php fs_esc_html_echo_inline( 'User ID' ) ?></th>
311
+ <th><?php fs_esc_html_echo_x_inline( 'Plan', 'as product pricing plan', 'plan' ) ?></th>
312
+ <th><?php fs_esc_html_echo_inline( 'Public Key' ) ?></th>
313
+ <th><?php fs_esc_html_echo_inline( 'Secret Key' ) ?></th>
314
+ <th><?php fs_esc_html_echo_inline( 'Actions' ) ?></th>
315
  </tr>
316
  </thead>
317
  <tbody>
333
  <input type="hidden" name="module_id" value="<?php echo $site->plugin_id ?>">
334
  <input type="hidden" name="module_type" value="<?php echo $module_type ?>">
335
  <input type="hidden" name="slug" value="<?php echo $slug ?>">
336
+ <button type="submit" class="button"><?php fs_esc_html_echo_x_inline( 'Delete', 'verb', 'delete' ) ?></button></td>
337
  </tr>
338
  <?php endforeach ?>
339
  </tbody>
344
  $addons = $VARS['addons'];
345
  ?>
346
  <?php foreach ( $addons as $plugin_id => $plugin_addons ) : ?>
347
+ <h2><?php echo esc_html( sprintf( fs_text_inline( 'Add Ons of module %s', 'addons-of-x' ), $plugin_id ) ) ?></h2>
348
  <table id="fs_addons" class="widefat">
349
  <thead>
350
  <tr>
351
+ <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
352
+ <th><?php fs_esc_html_echo_inline( 'Title' ) ?></th>
353
+ <th><?php fs_esc_html_echo_inline( 'Slug' ) ?></th>
354
+ <th><?php fs_esc_html_echo_x_inline( 'Version', 'product version' ) ?></th>
355
+ <th><?php fs_esc_html_echo_inline( 'Public Key' ) ?></th>
356
+ <th><?php fs_esc_html_echo_inline( 'Secret Key' ) ?></th>
357
+ </tr>
358
  </thead>
359
  <tbody>
360
  <?php
381
  $users = $VARS['users'];
382
  ?>
383
  <?php if ( is_array( $users ) && 0 < count( $users ) ) : ?>
384
+ <h2><?php fs_esc_html_echo_inline( 'Users' ) ?></h2>
385
  <table id="fs_users" class="widefat">
386
  <thead>
387
  <tr>
388
+ <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
389
+ <th><?php fs_esc_html_echo_inline( 'Name' ) ?></th>
390
+ <th><?php fs_esc_html_echo_inline( 'Email' ) ?></th>
391
+ <th><?php fs_esc_html_echo_inline( 'Verified' ) ?></th>
392
+ <th><?php fs_esc_html_echo_inline( 'Public Key' ) ?></th>
393
+ <th><?php fs_esc_html_echo_inline( 'Secret Key' ) ?></th>
394
  </tr>
395
  </thead>
396
  <tbody>
410
  <?php foreach ( $module_types as $module_type ) : ?>
411
  <?php $licenses = $VARS[ $module_type . '_licenses' ] ?>
412
  <?php if ( is_array( $licenses ) && count( $licenses ) > 0 ) : ?>
413
+ <h2><?php echo esc_html( sprintf( fs_text_inline( '%s Licenses', 'module-licenses' ), ( WP_FS__MODULE_TYPE_PLUGIN === $module_type ? fs_text_inline( 'Plugin', 'plugin' ) : fs_text_inline( 'Theme', 'theme' ) ) ) ) ?></h2>
414
  <table id="fs_<?php echo $module_type ?>_licenses" class="widefat">
415
  <thead>
416
  <tr>
417
+ <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
418
+ <th><?php fs_esc_html_echo_inline( 'Plugin ID' ) ?></th>
419
+ <th><?php fs_esc_html_echo_inline( 'User ID' ) ?></th>
420
+ <th><?php fs_esc_html_echo_inline( 'Plan ID' ) ?></th>
421
+ <th><?php fs_esc_html_echo_inline( 'Quota' ) ?></th>
422
+ <th><?php fs_esc_html_echo_inline( 'Activated' ) ?></th>
423
+ <th><?php fs_esc_html_echo_inline( 'Blocking' ) ?></th>
424
+ <th><?php fs_esc_html_echo_inline( 'License Key' ) ?></th>
425
+ <th><?php fs_esc_html_echo_x_inline( 'Expiration', 'as expiration date' ) ?></th>
426
  </tr>
427
  </thead>
428
  <tbody>
451
  <?php endforeach ?>
452
  <?php if ( FS_Logger::is_storage_logging_on() ) : ?>
453
 
454
+ <h2><?php fs_esc_html_echo_inline( 'Debug Log', 'debug-log' ) ?></h2>
455
 
456
  <div id="fs_debug_filters">
457
  <select name="type">
458
+ <option value="" selected="selected"><?php fs_esc_html_echo_inline( 'All Types', 'all-types' ) ?></option>
459
  <option value="warn_error">Warnings & Errors</option>
460
  <option value="error">Errors</option>
461
  <option value="warn">Warnings</option>
462
  <option value="info">Info</option>
463
  </select>
464
  <select name="request_type">
465
+ <option value="" selected="selected"><?php fs_esc_html_echo_inline( 'All Requests', 'all-requests' ) ?></option>
466
  <option value="call">Sync</option>
467
  <option value="ajax">AJAX</option>
468
  <option value="cron">WP Cron</option>
469
  </select>
470
+ <input name="file" type="text" placeholder="<?php fs_esc_attr_echo_inline( 'File' ) ?>"/>
471
+ <input name="function" type="text" placeholder="<?php fs_esc_attr_echo_inline( 'Function' ) ?>"/>
472
+ <input name="process_id" type="text" placeholder="<?php fs_esc_attr_echo_inline( 'Process ID' ) ?>"/>
473
+ <input name="logger" type="text" placeholder="<?php fs_esc_attr_echo_inline( 'Logger' ) ?>"/>
474
+ <input name="message" type="text" placeholder="<?php fs_esc_attr_echo_inline( 'Message' ) ?>"/>
475
  <div style="margin: 10px 0">
476
+ <button id="fs_filter" class="button" style="float: left"><i class="dashicons dashicons-filter"></i> <?php fs_esc_html_echo_inline( 'Filter', 'filter' ) ?>
477
  </button>
478
 
479
  <form action="" method="POST" style="float: left; margin-left: 10px;">
481
  <?php wp_nonce_field( 'download_logs' ) ?>
482
  <div class="fs-filters"></div>
483
  <button id="fs_download" class="button" type="submit"><i
484
+ class="dashicons dashicons-download"></i> <?php fs_esc_html_echo_inline( 'Download' ) ?></button>
485
  </form>
486
  <div style="clear: both"></div>
487
  </div>
492
  <thead>
493
  <tr>
494
  <th>#</th>
495
+ <th><?php fs_esc_html_echo_inline( 'Type' ) ?></th>
496
+ <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
497
+ <th><?php fs_esc_html_echo_inline( 'Function' ) ?></th>
498
+ <th><?php fs_esc_html_echo_inline( 'Message' ) ?></th>
499
+ <th><?php fs_esc_html_echo_inline( 'File' ) ?></th>
500
+ <th><?php fs_esc_html_echo_inline( 'Timestamp' ) ?></th>
501
  </tr>
502
  </thead>
503
  <tbody>
freemius/templates/debug/api-calls.php CHANGED
@@ -50,8 +50,10 @@
50
  $encode = 'json_encode';
51
 
52
  $root_path_len = strlen( ABSPATH );
 
 
53
  ?>
54
- <h1><?php fs_echo( 'API' ) ?></h1>
55
 
56
  <h2><span>Total Time:</span><?php echo Freemius_Debug_Bar_Panel::total_time() ?></h2>
57
 
@@ -63,16 +65,16 @@
63
  <thead>
64
  <tr>
65
  <th>#</th>
66
- <th><?php fs_echo( 'Method' ) ?></th>
67
- <th><?php fs_echo( 'Code' ) ?></th>
68
- <th><?php fs_echo( 'Length' ) ?></th>
69
- <th><?php fs_echo( 'Path' ) ?></th>
70
  <?php if ( $show_body ) : ?>
71
- <th><?php fs_echo( 'Body' ) ?></th>
72
  <?php endif ?>
73
- <th><?php fs_echo( 'Result' ) ?></th>
74
- <th><?php fs_echo( 'Start' ) ?></th>
75
- <th><?php fs_echo( 'End' ) ?></th>
76
  </tr>
77
  </thead>
78
  <tbody>
@@ -81,7 +83,7 @@
81
  <td><?php echo $log['id'] ?>.</td>
82
  <td><?php echo $log['method'] ?></td>
83
  <td><?php echo $log['code'] ?></td>
84
- <td><?php echo number_format( 100 * $log['total'], 2 ) . ' ' . fs_text( 'ms' ) ?></td>
85
  <td>
86
  <?php
87
  printf( '<a href="#" onclick="jQuery(this).parent().find(\'table\').toggle(); return false;">%s</a>',
@@ -145,8 +147,8 @@
145
  ?>
146
  <pre<?php if ( $is_not_empty_result ) : ?> style="display: none"<?php endif ?>><code><?php echo esc_html( $result ) ?></code></pre>
147
  </td>
148
- <td><?php echo number_format( 100 * ( $log['start'] - WP_FS__SCRIPT_START_TIME ), 2 ) . ' ' . fs_text( 'ms' ) ?></td>
149
- <td><?php echo number_format( 100 * ( $log['end'] - WP_FS__SCRIPT_START_TIME ), 2 ) . ' ' . fs_text( 'ms' ) ?></td>
150
  </tr>
151
  <?php endforeach ?>
152
  </tbody>
50
  $encode = 'json_encode';
51
 
52
  $root_path_len = strlen( ABSPATH );
53
+
54
+ $ms_text = fs_text_x_inline( 'ms', 'milliseconds' );
55
  ?>
56
+ <h1><?php fs_echo_inline( 'API' ) ?></h1>
57
 
58
  <h2><span>Total Time:</span><?php echo Freemius_Debug_Bar_Panel::total_time() ?></h2>
59
 
65
  <thead>
66
  <tr>
67
  <th>#</th>
68
+ <th><?php fs_esc_html_echo_inline( 'Method' ) ?></th>
69
+ <th><?php fs_esc_html_echo_inline( 'Code' ) ?></th>
70
+ <th><?php fs_esc_html_echo_inline( 'Length' ) ?></th>
71
+ <th><?php fs_esc_html_echo_x_inline( 'Path', 'as file/folder path' ) ?></th>
72
  <?php if ( $show_body ) : ?>
73
+ <th><?php fs_esc_html_echo_inline( 'Body' ) ?></th>
74
  <?php endif ?>
75
+ <th><?php fs_esc_html_echo_inline( 'Result' ) ?></th>
76
+ <th><?php fs_esc_html_echo_inline( 'Start' ) ?></th>
77
+ <th><?php fs_esc_html_echo_inline( 'End' ) ?></th>
78
  </tr>
79
  </thead>
80
  <tbody>
83
  <td><?php echo $log['id'] ?>.</td>
84
  <td><?php echo $log['method'] ?></td>
85
  <td><?php echo $log['code'] ?></td>
86
+ <td><?php echo number_format( 100 * $log['total'], 2 ) . ' ' . $ms_text ?></td>
87
  <td>
88
  <?php
89
  printf( '<a href="#" onclick="jQuery(this).parent().find(\'table\').toggle(); return false;">%s</a>',
147
  ?>
148
  <pre<?php if ( $is_not_empty_result ) : ?> style="display: none"<?php endif ?>><code><?php echo esc_html( $result ) ?></code></pre>
149
  </td>
150
+ <td><?php echo number_format( 100 * ( $log['start'] - WP_FS__SCRIPT_START_TIME ), 2 ) . ' ' . $ms_text ?></td>
151
+ <td><?php echo number_format( 100 * ( $log['end'] - WP_FS__SCRIPT_START_TIME ), 2 ) . ' ' . $ms_text ?></td>
152
  </tr>
153
  <?php endforeach ?>
154
  </tbody>
freemius/templates/debug/logger.php CHANGED
@@ -12,18 +12,18 @@
12
 
13
  $log_book = FS_Logger::get_log();
14
  ?>
15
- <h1><?php fs_echo( 'Log' ) ?></h1>
16
 
17
  <table class="widefat" style="font-size: 11px;">
18
  <thead>
19
  <tr>
20
  <th>#</th>
21
- <th><?php fs_echo( 'id' ) ?></th>
22
- <th><?php fs_echo( 'type' ) ?></th>
23
- <th><?php fs_echo( 'function' ) ?></th>
24
- <th><?php fs_echo( 'message' ) ?></th>
25
- <th><?php fs_echo( 'file' ) ?></th>
26
- <th><?php fs_echo( 'timestamp' ) ?></th>
27
  </tr>
28
  </thead>
29
  <tbody>
@@ -59,7 +59,7 @@
59
  echo substr( $log['file'], $logger->get_file() ) . ':' . $log['line'];
60
  }
61
  ?></td>
62
- <td><?php echo number_format( 100 * ( $log['timestamp'] - WP_FS__SCRIPT_START_TIME ), 2 ) . ' ' . fs_text( 'ms' ) ?></td>
63
  </tr>
64
  <?php $i ++; endforeach ?>
65
  </tbody>
12
 
13
  $log_book = FS_Logger::get_log();
14
  ?>
15
+ <h1><?php fs_echo_inline( 'Log' ) ?></h1>
16
 
17
  <table class="widefat" style="font-size: 11px;">
18
  <thead>
19
  <tr>
20
  <th>#</th>
21
+ <th><?php fs_esc_html_echo_inline( 'ID', 'id' ) ?></th>
22
+ <th><?php fs_esc_html_echo_inline( 'Type' ) ?></th>
23
+ <th><?php fs_esc_html_echo_inline( 'Function' ) ?></th>
24
+ <th><?php fs_esc_html_echo_inline( 'Message' ) ?></th>
25
+ <th><?php fs_esc_html_echo_inline( 'File' ) ?></th>
26
+ <th><?php fs_esc_html_echo_inline( 'Timestamp' ) ?></th>
27
  </tr>
28
  </thead>
29
  <tbody>
59
  echo substr( $log['file'], $logger->get_file() ) . ':' . $log['line'];
60
  }
61
  ?></td>
62
+ <td><?php echo number_format( 100 * ( $log['timestamp'] - WP_FS__SCRIPT_START_TIME ), 2 ) . ' ' . fs_text_x_inline( 'ms', 'milliseconds' ) ?></td>
63
  </tr>
64
  <?php $i ++; endforeach ?>
65
  </tbody>
freemius/templates/debug/plugins-themes-sync.php CHANGED
@@ -13,53 +13,61 @@
13
  $fs_options = FS_Option_Manager::get_manager( WP_FS__ACCOUNTS_OPTION_NAME, true );
14
  $all_plugins = $fs_options->get_option( 'all_plugins' );
15
  $all_themes = $fs_options->get_option( 'all_themes' );
 
 
 
 
 
 
16
  ?>
17
- <h1><?php fs_echo( 'plugins-themes-sync' ) ?></h1>
18
  <table class="widefat">
19
  <thead>
20
  <tr>
21
  <th></th>
22
- <th><?php fs_echo( 'total' ) ?></th>
23
- <th><?php fs_echo( 'Last' ) ?></th>
24
  </tr>
25
  </thead>
26
  <tbody>
27
  <?php if ( is_object( $all_plugins ) ) : ?>
28
  <tr>
29
- <td><?php fs_echo( 'plugins' ) ?></td>
30
  <td><?php echo count( $all_plugins->plugins ) ?></td>
31
  <td><?php
32
  if ( isset( $all_plugins->timestamp ) && is_numeric( $all_plugins->timestamp ) ) {
33
  $diff = abs( WP_FS__SCRIPT_START_TIME - $all_plugins->timestamp );
34
  $human_diff = ( $diff < MINUTE_IN_SECONDS ) ?
35
- $diff . ' ' . fs_text( 'sec' ) :
36
  human_time_diff( WP_FS__SCRIPT_START_TIME, $all_plugins->timestamp );
37
 
38
- if ( WP_FS__SCRIPT_START_TIME < $all_plugins->timestamp ) {
39
- printf( fs_text( 'in-x' ), $human_diff );
40
- } else {
41
- printf( fs_text( 'x-ago' ), $human_diff );
42
- }
 
43
  }
44
  ?></td>
45
  </tr>
46
  <?php endif ?>
47
  <?php if ( is_object( $all_themes ) ) : ?>
48
  <tr>
49
- <td><?php fs_echo( 'themes' ) ?></td>
50
  <td><?php echo count( $all_themes->themes ) ?></td>
51
  <td><?php
52
  if ( isset( $all_themes->timestamp ) && is_numeric( $all_themes->timestamp ) ) {
53
  $diff = abs( WP_FS__SCRIPT_START_TIME - $all_themes->timestamp );
54
  $human_diff = ( $diff < MINUTE_IN_SECONDS ) ?
55
- $diff . ' ' . fs_text( 'sec' ) :
56
  human_time_diff( WP_FS__SCRIPT_START_TIME, $all_themes->timestamp );
57
 
58
- if ( WP_FS__SCRIPT_START_TIME < $all_themes->timestamp ) {
59
- printf( fs_text( 'in-x' ), $human_diff );
60
- } else {
61
- printf( fs_text( 'x-ago' ), $human_diff );
62
- }
 
63
  }
64
  ?></td>
65
  </tr>
13
  $fs_options = FS_Option_Manager::get_manager( WP_FS__ACCOUNTS_OPTION_NAME, true );
14
  $all_plugins = $fs_options->get_option( 'all_plugins' );
15
  $all_themes = $fs_options->get_option( 'all_themes' );
16
+
17
+ /* translators: %s: time period (e.g. In "2 hours") */
18
+ $in_x_text = fs_text_inline( 'In %s', 'in-x' );
19
+ /* translators: %s: time period (e.g. "2 hours" ago) */
20
+ $x_ago_text = fs_text_inline( '%s ago', 'x-ago' );
21
+ $sec_text = fs_text_x_inline( 'sec', 'seconds' );
22
  ?>
23
+ <h1><?php fs_esc_html_echo_inline( 'Plugins & Themes Sync', 'plugins-themes-sync' ) ?></h1>
24
  <table class="widefat">
25
  <thead>
26
  <tr>
27
  <th></th>
28
+ <th><?php fs_esc_html_echo_inline( 'Total', 'total' ) ?></th>
29
+ <th><?php fs_esc_html_echo_inline( 'Last', 'last' ) ?></th>
30
  </tr>
31
  </thead>
32
  <tbody>
33
  <?php if ( is_object( $all_plugins ) ) : ?>
34
  <tr>
35
+ <td><?php fs_esc_html_echo_inline( 'Plugins', 'plugins' ) ?></td>
36
  <td><?php echo count( $all_plugins->plugins ) ?></td>
37
  <td><?php
38
  if ( isset( $all_plugins->timestamp ) && is_numeric( $all_plugins->timestamp ) ) {
39
  $diff = abs( WP_FS__SCRIPT_START_TIME - $all_plugins->timestamp );
40
  $human_diff = ( $diff < MINUTE_IN_SECONDS ) ?
41
+ $diff . ' ' . $sec_text :
42
  human_time_diff( WP_FS__SCRIPT_START_TIME, $all_plugins->timestamp );
43
 
44
+ echo esc_html( sprintf(
45
+ ( ( WP_FS__SCRIPT_START_TIME < $all_plugins->timestamp ) ?
46
+ $in_x_text :
47
+ $x_ago_text ),
48
+ $human_diff
49
+ ) );
50
  }
51
  ?></td>
52
  </tr>
53
  <?php endif ?>
54
  <?php if ( is_object( $all_themes ) ) : ?>
55
  <tr>
56
+ <td><?php fs_esc_html_echo_inline( 'Themes', 'themes' ) ?></td>
57
  <td><?php echo count( $all_themes->themes ) ?></td>
58
  <td><?php
59
  if ( isset( $all_themes->timestamp ) && is_numeric( $all_themes->timestamp ) ) {
60
  $diff = abs( WP_FS__SCRIPT_START_TIME - $all_themes->timestamp );
61
  $human_diff = ( $diff < MINUTE_IN_SECONDS ) ?
62
+ $diff . ' ' . $sec_text :
63
  human_time_diff( WP_FS__SCRIPT_START_TIME, $all_themes->timestamp );
64
 
65
+ echo esc_html( sprintf(
66
+ ( ( WP_FS__SCRIPT_START_TIME < $all_themes->timestamp ) ?
67
+ $in_x_text :
68
+ $x_ago_text ),
69
+ $human_diff
70
+ ) );
71
  }
72
  ?></td>
73
  </tr>
freemius/templates/debug/scheduled-crons.php CHANGED
@@ -71,20 +71,28 @@
71
  }
72
  }
73
  }
 
 
74
  ?>
75
- <h1><?php fs_echo( 'scheduled-crons' ) ?></h1>
76
  <table class="widefat">
77
  <thead>
78
  <tr>
79
- <th><?php fs_echo( 'slug' ) ?></th>
80
- <th><?php fs_echo( 'module' ) ?></th>
81
- <th><?php fs_echo( 'module-type' ) ?></th>
82
- <th><?php fs_echo( 'cron-type' ) ?></th>
83
- <th><?php fs_echo( 'Last' ) ?></th>
84
- <th><?php fs_echo( 'Next' ) ?></th>
85
  </tr>
86
  </thead>
87
  <tbody>
 
 
 
 
 
 
88
  <?php foreach ( $scheduled_crons as $slug => $crons ) : ?>
89
  <?php foreach ( $crons as $cron ) : ?>
90
  <tr>
@@ -96,30 +104,30 @@
96
  if ( is_numeric( $cron['last'] ) ) {
97
  $diff = abs( WP_FS__SCRIPT_START_TIME - $cron['last'] );
98
  $human_diff = ( $diff < MINUTE_IN_SECONDS ) ?
99
- $diff . ' ' . fs_text( 'sec' ) :
100
  human_time_diff( WP_FS__SCRIPT_START_TIME, $cron['last'] );
101
 
102
- if ( WP_FS__SCRIPT_START_TIME < $cron['last'] ) {
103
- printf( fs_text( 'in-x' ), $human_diff );
104
- } else {
105
- printf( fs_text( 'x-ago' ), $human_diff );
106
- }
107
-
108
- // echo ' ' . $cron['last'];
109
  }
110
  ?></td>
111
  <td><?php
112
  if ( is_numeric( $cron['next'] ) ) {
113
  $diff = abs( WP_FS__SCRIPT_START_TIME - $cron['next'] );
114
  $human_diff = ( $diff < MINUTE_IN_SECONDS ) ?
115
- $diff . ' ' . fs_text( 'sec' ) :
116
  human_time_diff( WP_FS__SCRIPT_START_TIME, $cron['next'] );
117
 
118
- if ( WP_FS__SCRIPT_START_TIME < $cron['next'] ) {
119
- printf( fs_text( 'in-x' ), $human_diff );
120
- } else {
121
- printf( fs_text( 'x-ago' ), $human_diff );
122
- }
 
123
  }
124
  ?></td>
125
  </tr>
71
  }
72
  }
73
  }
74
+
75
+ $sec_text = fs_text_x_inline( 'sec', 'seconds' );
76
  ?>
77
+ <h1><?php fs_esc_html_echo_inline( 'Scheduled Crons' ) ?></h1>
78
  <table class="widefat">
79
  <thead>
80
  <tr>
81
+ <th><?php fs_esc_html_echo_inline( 'Slug' ) ?></th>
82
+ <th><?php fs_esc_html_echo_inline( 'Module' ) ?></th>
83
+ <th><?php fs_esc_html_echo_inline( 'Module Type' ) ?></th>
84
+ <th><?php fs_esc_html_echo_inline( 'Cron Type' ) ?></th>
85
+ <th><?php fs_esc_html_echo_inline( 'Last' ) ?></th>
86
+ <th><?php fs_esc_html_echo_inline( 'Next' ) ?></th>
87
  </tr>
88
  </thead>
89
  <tbody>
90
+ <?php
91
+ /* translators: %s: time period (e.g. In "2 hours") */
92
+ $in_x_text = fs_text_inline( 'In %s', 'in-x' );
93
+ /* translators: %s: time period (e.g. "2 hours" ago) */
94
+ $x_ago_text = fs_text_inline( '%s ago', 'x-ago' );
95
+ ?>
96
  <?php foreach ( $scheduled_crons as $slug => $crons ) : ?>
97
  <?php foreach ( $crons as $cron ) : ?>
98
  <tr>
104
  if ( is_numeric( $cron['last'] ) ) {
105
  $diff = abs( WP_FS__SCRIPT_START_TIME - $cron['last'] );
106
  $human_diff = ( $diff < MINUTE_IN_SECONDS ) ?
107
+ $diff . ' ' . $sec_text :
108
  human_time_diff( WP_FS__SCRIPT_START_TIME, $cron['last'] );
109
 
110
+ echo esc_html( sprintf(
111
+ ( ( WP_FS__SCRIPT_START_TIME < $cron['last'] ) ?
112
+ $in_x_text :
113
+ $x_ago_text ),
114
+ $human_diff
115
+ ) );
 
116
  }
117
  ?></td>
118
  <td><?php
119
  if ( is_numeric( $cron['next'] ) ) {
120
  $diff = abs( WP_FS__SCRIPT_START_TIME - $cron['next'] );
121
  $human_diff = ( $diff < MINUTE_IN_SECONDS ) ?
122
+ $diff . ' ' . $sec_text :
123
  human_time_diff( WP_FS__SCRIPT_START_TIME, $cron['next'] );
124
 
125
+ echo esc_html( sprintf(
126
+ ( ( WP_FS__SCRIPT_START_TIME < $cron['next'] ) ?
127
+ $in_x_text :
128
+ $x_ago_text ),
129
+ $human_diff
130
+ ) );
131
  }
132
  ?></td>
133
  </tr>
freemius/templates/forms/affiliation.php ADDED
@@ -0,0 +1,479 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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.3
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ /**
14
+ * @var array $VARS
15
+ * @var Freemius $fs
16
+ */
17
+ $fs = freemius( $VARS['id'] );
18
+
19
+ $slug = $fs->get_slug();
20
+
21
+ $user = $fs->get_user();
22
+ $affiliate = $fs->get_affiliate();
23
+ $affiliate_terms = $fs->get_affiliate_terms();
24
+
25
+ $plugin_title = $fs->get_plugin_title();
26
+ $module_type = $fs->is_plugin() ?
27
+ WP_FS__MODULE_TYPE_PLUGIN :
28
+ WP_FS__MODULE_TYPE_THEME ;
29
+
30
+ $commission = $affiliate_terms->get_formatted_commission();
31
+
32
+ $readonly = false;
33
+ $is_affiliate = false;
34
+ $is_pending_affiliate = false;
35
+ $email_address = ( is_object( $user ) ?
36
+ $user->email :
37
+ '' );
38
+ $full_name = ( is_object( $user ) ?
39
+ $user->get_name() :
40
+ '' );
41
+ $paypal_email_address = '';
42
+ $domain = '';
43
+ $extra_domains = array();
44
+ $promotion_method_social_media = false;
45
+ $promotion_method_mobile_apps = false;
46
+ $statistics_information = false;
47
+ $promotion_method_description = false;
48
+ $members_dashboard_login_url = 'https://members.freemius.com/login/';
49
+
50
+ $affiliate_application_data = $fs->get_affiliate_application_data();
51
+
52
+ if ( is_object( $affiliate ) ) {
53
+ $is_affiliate = true;
54
+
55
+ if ( $affiliate->is_pending() ) {
56
+ $readonly = 'readonly';
57
+ $is_pending_affiliate = true;
58
+
59
+ $paypal_email_address = $affiliate->paypal_email;
60
+ $domain = $affiliate->domain;
61
+ $statistics_information = $affiliate_application_data['stats_description'];
62
+ $promotion_method_description = $affiliate_application_data['promotion_method_description'];
63
+
64
+ if ( ! empty( $affiliate_application_data['additional_domains'] ) ) {
65
+ $extra_domains = $affiliate_application_data['additional_domains'];
66
+ }
67
+
68
+ if ( ! empty( $affiliate_application_data['promotion_methods'] ) ) {
69
+ $promotion_methods = explode( ',', $affiliate_application_data['promotion_methods'] );
70
+ $promotion_method_social_media = in_array( 'social_media', $promotion_methods );
71
+ $promotion_method_mobile_apps = in_array( 'mobile_apps', $promotion_methods );
72
+ }
73
+ }
74
+ }
75
+
76
+ $affiliate_tracking = 30;
77
+
78
+ if ( is_object( $affiliate_terms ) ) {
79
+ $affiliate_tracking = ( ! is_null( $affiliate_terms->cookie_days ) ?
80
+ ( $affiliate_terms->cookie_days . '-day' ) :
81
+ fs_text_inline( 'Non-expiring', 'non-expiring', $slug ) );
82
+ }
83
+
84
+ $apply_to_become_affiliate_text = fs_text_inline( 'Apply to become an affiliate', 'apply-to-become-an-affiliate', $slug );
85
+ ?>
86
+ <div id="fs_affiliation_content_wrapper" class="wrap">
87
+ <form method="post" action="">
88
+ <div id="poststuff">
89
+ <div class="postbox">
90
+ <div class="inside">
91
+ <div id="messages">
92
+ <div id="error_message" class="error" style="display: none">
93
+ <p><strong></strong></p>
94
+ </div>
95
+ <div id="message" class="updated" style="display: none">
96
+ <p><strong></strong></p>
97
+ </div>
98
+ <?php if ( $is_affiliate ) : ?>
99
+ <?php if ( $affiliate->is_active() ) : ?>
100
+ <div class="updated">
101
+ <p><strong><?php
102
+ echo esc_html( sprintf(
103
+ fs_text_inline( "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s.", 'affiliate-application-accepted', $slug ),
104
+ $plugin_title,
105
+ sprintf( '<a href="%s" target="_blank">%s</a>', $members_dashboard_login_url, $members_dashboard_login_url )
106
+ ) );
107
+ ?></strong></p>
108
+ </div>
109
+ <?php else : ?>
110
+ <?php
111
+ $message_text = '';
112
+
113
+ if ( $is_pending_affiliate ) {
114
+ $message_text = fs_text_inline( "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.", 'affiliate-application-thank-you', $slug );
115
+ $message_container_class = 'updated';
116
+ } else if ( $affiliate->is_suspended() ) {
117
+ $message_text = fs_text_inline( 'Your affiliation account was temporarily suspended.', 'affiliate-account-suspended', $slug );
118
+ $message_container_class = 'notice notice-warning';
119
+ } else if ( $affiliate->is_rejected() ) {
120
+ $message_text = fs_text_inline( "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.", 'affiliate-application-rejected', $slug );
121
+ $message_container_class = 'error';
122
+ } else if ( $affiliate->is_blocked() ) {
123
+ $message_text = fs_text_inline( 'Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support.', 'affiliate-account-blocked', $slug );
124
+ $message_container_class = 'error';
125
+ }
126
+ ?>
127
+ <div class="<?php echo $message_container_class ?>">
128
+ <p><strong><?php echo esc_html( $message_text ) ?></strong></p>
129
+ </div>
130
+ <?php endif ?>
131
+ <?php endif ?>
132
+ </div>
133
+ <div class="entry-content">
134
+ <?php if ( ! $is_affiliate ) : ?>
135
+ <div id="application_messages_container">
136
+ <p><?php echo esc_html( sprintf( fs_text_inline( 'Like the %s? Become our ambassador and earn cash ;-)', 'become-an-ambassador', $slug ), $module_type ) ) ?></p>
137
+ <p><?php echo esc_html( sprintf( fs_text_inline( 'Refer new customers to our %s and earn %s commission on each successful sale you refer!', 'refer-new-customers', $slug ), $module_type, $commission ) ) ?></p>
138
+ </div>
139
+ <?php endif ?>
140
+ <h3><?php fs_esc_html_echo_inline( 'Program Summary', 'program-summary', $slug ) ?></h3>
141
+ <ul>
142
+ <li><?php echo esc_html( sprintf( fs_text_inline( '%s commission when a customer purchases a new license.', 'commission-on-new-license-purchase', $slug ), $commission ) ) ?></li>
143
+ <?php if ( is_object( $affiliate_terms ) && $affiliate_terms->has_renewals_commission() ) : ?>
144
+ <li><?php echo esc_html( sprintf( fs_text_inline( 'Get commission for automated subscription renewals.', 'renewals-commission', $slug ) ) ) ?></li>
145
+ <?php endif ?>
146
+ <?php if ( is_object( $affiliate_terms ) && ( ! $affiliate_terms->is_session_cookie() ) ) : ?>
147
+ <li><?php echo esc_html( sprintf( fs_text_inline( '%s tracking cookie after the first visit to maximize earnings potential.', 'affiliate-tracking', $slug ), $affiliate_tracking ) ) ?></li>
148
+ <?php endif ?>
149
+ <?php if ( is_object( $affiliate_terms ) && $affiliate_terms->has_lifetime_commission() ) : ?>
150
+ <li><?php fs_esc_html_echo_inline( 'Unlimited commissions.', 'unlimited-commissions', $slug ) ?></li>
151
+ <?php endif ?>
152
+ <li><?php echo esc_html( sprintf( fs_text_inline( '%s minimum payout amount.', 'minimum-payout-amount', $slug ), '$100' ) ) ?></li>
153
+ <li><?php fs_esc_html_echo_inline( 'Payouts are in USD and processed monthly via PayPal.', 'payouts-unit-and-processing', $slug ) ?></li>
154
+ <li><?php fs_esc_html_echo_inline( 'As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days.', 'commission-payment', $slug ) ?></li>
155
+ </ul>
156
+ <div id="application_form_container" <?php echo ( $is_pending_affiliate ) ? '' : 'style="display: none"' ?>>
157
+ <h3><?php fs_esc_html_echo_inline( 'Affiliate', 'affiliate', $slug ) ?></h3>
158
+ <form>
159
+ <div class="input-container input-container-text">
160
+ <label class="input-label"><?php fs_esc_html_echo_inline( 'Email address', 'email-address', $slug ) ?></label>
161
+ <input id="email_address" type="text" value="<?php echo esc_attr( $email_address ) ?>" class="regular-text" <?php echo ( $readonly || is_object( $user ) ) ? 'readonly' : '' ?>>
162
+ </div>
163
+ <div class="input-container input-container-text">
164
+ <label class="input-label"><?php fs_esc_html_echo_inline( 'Full name', 'full-name', $slug ) ?></label>
165
+ <input id="full_name" type="text" value="<?php echo esc_attr( $full_name ) ?>" class="regular-text" <?php echo $readonly ?>>
166
+ </div>
167
+ <div class="input-container input-container-text">
168
+ <label class="input-label"><?php fs_esc_html_echo_inline( 'PayPal account email address', 'paypal-account-email-address', $slug ) ?></label>
169
+ <input id="paypal_email" type="text" value="<?php echo esc_attr( $paypal_email_address ) ?>" class="regular-text" <?php echo $readonly ?>>
170
+ </div>
171
+ <div class="input-container input-container-text">
172
+ <label class="input-label"><?php echo esc_html( sprintf( fs_text_inline( 'Where are you going to promote the %s?', 'domain-field-label', $slug ), $module_type ) ) ?></label>
173
+ <input id="domain" type="text" value="<?php echo esc_attr( $domain ) ?>" class="domain regular-text" <?php echo $readonly ?>>
174
+ <p class="description"><?php echo esc_html( sprintf( fs_text_inline( 'Enter the domain of your website or other websites from where you plan to promote the %s.', 'domain-field-desc', $slug ), $module_type ) ) ?></p>
175
+ <?php if ( ! $is_affiliate ) : ?>
176
+ <a id="add_domain" href="#" class="disabled">+ <?php fs_esc_html_echo_inline( 'Add another domain', 'add-another-domain', $slug ) ?>...</a>
177
+ <?php endif ?>
178
+ </div>
179
+ <div id="extra_domains_container" class="input-container input-container-text" <?php echo $is_pending_affiliate ? '' : 'style="display: none"' ?>>
180
+ <label class="input-label"><?php fs_esc_html_echo_inline( 'Extra Domains', 'extra-domain-fields-label', $slug ) ?></label>
181
+ <p class="description"><?php fs_esc_html_echo_inline( 'Extra domains where you will be marketing the product from.', 'extra-domain-fields-desc', $slug ) ?></p>
182
+ <?php if ( $is_pending_affiliate && ! empty( $extra_domains ) ) : ?>
183
+ <?php foreach ( $extra_domains as $extra_domain ) : ?>
184
+ <div class="extra-domain-input-container">
185
+ <input type="text" value="<?php echo esc_attr( $extra_domain ) ?>" class="domain regular-text" <?php echo $readonly ?>>
186
+ </div>
187
+ <?php endforeach ?>
188
+ <?php endif ?>
189
+ </div>
190
+ <div class="input-container">
191
+ <label class="input-label"><?php fs_esc_html_echo_inline( 'Promotion methods', 'promotion-methods', $slug ) ?></label>
192
+ <div>
193
+ <input id="promotion_method_social_media" type="checkbox" <?php checked( $promotion_method_social_media ) ?> <?php disabled( $is_affiliate ) ?>/>
194
+ <label for="promotion_method_social_media"><?php fs_esc_html_echo_inline( 'Social media (Facebook, Twitter, etc.)', 'social-media', $slug ) ?></label>
195
+ </div>
196
+ <div>
197
+ <input id="promotion_method_mobile_apps" type="checkbox" <?php checked( $promotion_method_mobile_apps ) ?> <?php disabled( $is_affiliate ) ?>/>
198
+ <label for="promotion_method_mobile_apps"><?php fs_esc_html_echo_inline( 'Mobile apps', 'mobile-apps', $slug ) ?></label>
199
+ </div>
200
+ </div>
201
+ <div class="input-container input-container-text">
202
+ <label class="input-label"><nobr><?php fs_esc_html_echo_inline( 'Website, email, and social media statistics (optional)', 'statistics-information-field-label', $slug ) ?></nobr></label>
203
+ <textarea id="statistics_information" rows="5" <?php echo $readonly ?> class="regular-text"><?php echo $statistics_information ?></textarea>
204
+ <?php if ( ! $is_affiliate ) : ?>
205
+ <p class="description"><?php fs_esc_html_echo_inline( '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).', 'statistics-information-field-desc', $slug ) ?></p>
206
+ <?php endif ?>
207
+ </div>
208
+ <div class="input-container input-container-text">
209
+ <label class="input-label"><?php fs_esc_html_echo_inline( 'How will you promote us?', 'promotion-method-desc-field-label', $slug ) ?></label>
210
+ <textarea id="promotion_method_description" rows="5" <?php echo $readonly ?> class="regular-text"><?php echo $promotion_method_description ?></textarea>
211
+ <?php if ( ! $is_affiliate ) : ?>
212
+ <p class="description"><?php echo esc_html( sprintf( fs_text_inline( 'Please provide details on how you intend to promote %s (please be as specific as possible).', 'promotion-method-desc-field-desc', $slug ), $plugin_title ) ) ?></p>
213
+ <?php endif ?>
214
+ </div>
215
+ </form>
216
+ </div>
217
+ <?php if ( ! $is_affiliate ) : ?>
218
+ <a id="cancel_button" href="#" class="button button-secondary button-cancel" style="display: none"><?php fs_echo_inline( 'Cancel', 'cancel', $slug ) ?></a>
219
+ <a id="submit_button" class="button button-primary" href="#" style="display: none"><?php echo esc_html( $apply_to_become_affiliate_text ) ?></a>
220
+ <a id="apply_button" class="button button-primary" href="#"><?php fs_esc_html_echo_inline( 'Become an affiliate', 'become-an-affiliate', $slug ) ?></a>
221
+ <?php endif ?>
222
+ </div>
223
+ </div>
224
+ </div>
225
+ </div>
226
+ </form>
227
+ <script type="text/javascript">
228
+ jQuery(function( $ ) {
229
+ var
230
+ $contentWrapper = $( '#fs_affiliation_content_wrapper' ),
231
+ $socialMedia = $( '#promotion_method_social_media' ),
232
+ $mobileApps = $( '#promotion_method_mobile_apps' ),
233
+ $applyButton = $( '#apply_button' ),
234
+ $submitButton = $( '#submit_button' ),
235
+ $cancelButton = $( '#cancel_button' ),
236
+ $applicationFormContainer = $( '#application_form_container' ),
237
+ $errorMessageContainer = $( '#error_message' ),
238
+ $domain = $( '#domain' ),
239
+ $addDomain = $( '#add_domain' ),
240
+ $extraDomainsContainer = $( '#extra_domains_container');
241
+
242
+ $applyButton.click(function( evt ) {
243
+ evt.preventDefault();
244
+
245
+ var $this = $( this );
246
+ $this.hide();
247
+
248
+ $applicationFormContainer.show();
249
+ $cancelButton.show();
250
+ $submitButton.show();
251
+
252
+ $contentWrapper.find( 'input[type="text"]:first' ).focus();
253
+ });
254
+
255
+ $submitButton.click(function( evt ) {
256
+ evt.preventDefault();
257
+
258
+ var $this = $( this );
259
+
260
+ if ( $this.hasClass( 'disabled' ) ) {
261
+ return;
262
+ }
263
+
264
+ $errorMessageContainer.hide();
265
+
266
+ var
267
+ $emailAddress = $( '#email_address' ),
268
+ emailAddress = null,
269
+ paypalEmailAddress = $( '#paypal_email' ).val().trim();
270
+
271
+ if ( 1 === $emailAddress.length ) {
272
+ emailAddress = $emailAddress.val().trim();
273
+
274
+ if ( 0 === emailAddress.length ) {
275
+ showErrorMessage( '<?php fs_echo_inline( 'Email address is required.', 'email-address-is-required', $slug ) ?>' );
276
+ return;
277
+ }
278
+ }
279
+
280
+ if ( 0 === paypalEmailAddress.length ) {
281
+ showErrorMessage( '<?php fs_echo_inline( 'PayPal email address is required.', 'paypal-email-address-is-required', $slug ) ?>' );
282
+ return;
283
+ }
284
+
285
+ var
286
+ $extraDomains = $extraDomainsContainer.find( '.domain' ),
287
+ domain = $domain.val().trim().toLowerCase(),
288
+ extraDomains = [];
289
+
290
+ if ( 0 === domain.length ) {
291
+ showErrorMessage( '<?php fs_echo_inline( 'Domain is required.', 'domain-is-required', $slug ) ?>' );
292
+ return;
293
+ } else if ( 'freemius.com' === domain ) {
294
+ showErrorMessage( '<?php fs_echo_inline( 'Invalid domain', 'invalid-domain', $slug ) ?>' + ' [' + domain + '].' );
295
+ return;
296
+ }
297
+
298
+ if ( $extraDomains.length > 0 ) {
299
+ var hasError = false;
300
+
301
+ $extraDomains.each(function() {
302
+ var
303
+ $this = $( this ),
304
+ extraDomain = $this.val().trim().toLowerCase();
305
+ if ( 0 === extraDomain.length || extraDomain === domain ) {
306
+ return true;
307
+ } else if ( 'freemius.com' === extraDomain ) {
308
+ showErrorMessage( '<?php fs_echo_inline( 'Invalid domain', 'invalid-domain', $slug ) ?>' + ' [' + extraDomain + '].' );
309
+ hasError = true;
310
+ return false;
311
+ }
312
+
313
+ extraDomains.push( extraDomain );
314
+ });
315
+
316
+ if ( hasError ) {
317
+ return;
318
+ }
319
+ }
320
+
321
+ var
322
+ promotionMethods = [],
323
+ statisticsInformation = $( '#statistics_information' ).val(),
324
+ promotionMethodDescription = $( '#promotion_method_description' ).val();
325
+
326
+ if ( $socialMedia.attr( 'checked' ) ) {
327
+ promotionMethods.push( 'social_media' );
328
+ }
329
+
330
+ if ( $mobileApps.attr( 'checked' ) ) {
331
+ promotionMethods.push( 'mobile_apps' );
332
+ }
333
+
334
+ var affiliate = {
335
+ full_name : $( '#full_name' ).val().trim(),
336
+ paypal_email : paypalEmailAddress,
337
+ stats_description : statisticsInformation,
338
+ promotion_method_description: promotionMethodDescription
339
+ };
340
+
341
+ if ( null !== emailAddress ) {
342
+ affiliate.email = emailAddress;
343
+ }
344
+
345
+ affiliate.domain = domain;
346
+ affiliate.additional_domains = extraDomains;
347
+
348
+ if ( promotionMethods.length > 0 ) {
349
+ affiliate.promotion_methods = promotionMethods.join( ',' );
350
+ }
351
+
352
+ $.ajax({
353
+ url : ajaxurl,
354
+ method : 'POST',
355
+ data : {
356
+ action : '<?php echo $fs->get_ajax_action( 'submit_affiliate_application' ) ?>',
357
+ security : '<?php echo $fs->get_ajax_security( 'submit_affiliate_application' ) ?>',
358
+ module_id: '<?php echo $fs->get_id() ?>',
359
+ affiliate: affiliate
360
+ },
361
+ beforeSend: function() {
362
+ $cancelButton.addClass( 'disabled' );
363
+ $submitButton.addClass( 'disabled' );
364
+ $submitButton.text( '<?php fs_esc_js_inline( 'Processing', 'processing' ) ?>...' );
365
+ },
366
+ success : function( result ) {
367
+ if ( result.success ) {
368
+ location.reload();
369
+ } else if ( result.error && result.error.length > 0 ) {
370
+ showErrorMessage( result.error );
371
+
372
+ $cancelButton.removeClass( 'disabled' );
373
+ $submitButton.removeClass( 'disabled' );
374
+ $submitButton.text( '<?php echo esc_js( $apply_to_become_affiliate_text ) ?>' )
375
+ }
376
+ }
377
+ });
378
+ });
379
+
380
+ $cancelButton.click(function( evt ) {
381
+ evt.preventDefault();
382
+
383
+ var $this = $( this );
384
+
385
+ if ( $this.hasClass( 'disabled' ) ) {
386
+ return;
387
+ }
388
+
389
+ $applicationFormContainer.hide();
390
+ $this.hide();
391
+ $submitButton.hide();
392
+
393
+ $applyButton.show();
394
+
395
+ window.scrollTo( 0, 0 );
396
+ });
397
+
398
+ $domain.on( 'input propertychange', onDomainChange );
399
+
400
+ $addDomain.click(function( evt ) {
401
+ evt.preventDefault();
402
+
403
+ var
404
+ $this = $( this ),
405
+ domain = $domain.val().trim();
406
+
407
+ if ( $this.hasClass( 'disabled' ) || 0 === domain.length ) {
408
+ return;
409
+ }
410
+
411
+ $domain.off( 'input propertychange' );
412
+ $this.addClass( 'disabled' );
413
+
414
+ var
415
+ $extraDomainInputContainer = $( '<div class="extra-domain-input-container"><input type="text" class="domain regular-text"/></div>' ),
416
+ $extraDomainInput = $extraDomainInputContainer.find( 'input' ),
417
+ $removeDomain = $( '<a href="#" class="remove-domain"><i class="dashicons dashicons-no" title="<?php fs_esc_js_echo_inline( 'Remove', 'remove', $slug ) ?>"></i></a>' );
418
+
419
+ $extraDomainInputContainer.append( $removeDomain );
420
+
421
+ $extraDomainInput.on( 'input propertychange', onDomainChange );
422
+
423
+ $removeDomain.click(function( evt ) {
424
+ evt.preventDefault();
425
+
426
+ var
427
+ $extraDomainInputs = $( '.extra-domain-input-container .domain' );
428
+
429
+ if ( 1 === $extraDomainInputs.length )
430
+ $extraDomainInputs.val( '' ).focus();
431
+ else
432
+ $( this ).parent().remove();
433
+ });
434
+
435
+ $extraDomainsContainer.show();
436
+
437
+ $extraDomainInputContainer.appendTo( $extraDomainsContainer );
438
+ $extraDomainInput.focus();
439
+
440
+ $this.appendTo( $extraDomainsContainer );
441
+ });
442
+
443
+ /**
444
+ * @author Leo Fajardo (@leorw)
445
+ */
446
+ function onDomainChange() {
447
+ var
448
+ domain = $( this ).val().trim();
449
+
450
+ if ( domain.length > 0 ) {
451
+ $addDomain.removeClass( 'disabled' );
452
+ } else {
453
+ $addDomain.addClass( 'disabled' );
454
+ }
455
+ }
456
+
457
+ /**
458
+ * @author Leo Fajardo (@leorw)
459
+ *
460
+ * @param {String} message
461
+ */
462
+ function showErrorMessage( message ) {
463
+ $errorMessageContainer.find( 'strong' ).text( message );
464
+ $errorMessageContainer.show();
465
+
466
+ window.scrollTo( 0, 0 );
467
+ }
468
+ });
469
+ </script>
470
+ </div>
471
+ <?php
472
+ $params = array(
473
+ 'page' => 'affiliation',
474
+ 'module_id' => $fs->get_id(),
475
+ 'module_slug' => $slug,
476
+ 'module_version' => $fs->get_plugin_version(),
477
+ );
478
+ fs_require_template( 'powered-by.php', $params );
479
+ ?>
freemius/templates/forms/deactivation/contact.php CHANGED
@@ -10,11 +10,14 @@
10
  exit;
11
  }
12
 
 
 
 
13
  $fs = freemius( $VARS['id'] );
14
  $slug = $fs->get_slug();
15
 
16
- echo fs_text( 'contact-support-before-deactivation', $slug )
17
  . sprintf(" <a href='%s' class='button button-small button-primary'>%s</a>",
18
  $fs->contact_url( 'technical_support' ),
19
- fs_text( 'contact-support', $slug )
20
  );
10
  exit;
11
  }
12
 
13
+ /**
14
+ * @var array $VARS
15
+ */
16
  $fs = freemius( $VARS['id'] );
17
  $slug = $fs->get_slug();
18
 
19
+ echo fs_text_inline( 'Sorry for the inconvenience and we are here to help if you give us a chance.', 'contact-support-before-deactivation', $slug )
20
  . sprintf(" <a href='%s' class='button button-small button-primary'>%s</a>",
21
  $fs->contact_url( 'technical_support' ),
22
+ fs_text_inline( 'Contact Support', 'contact-support', $slug )
23
  );
freemius/templates/forms/deactivation/form.php CHANGED
@@ -51,14 +51,19 @@ HTML;
51
 
52
  $is_anonymous = ( ! $fs->is_registered() );
53
  if ( $is_anonymous ) {
54
- $anonymous_feedback_checkbox_html =
55
- '<label class="anonymous-feedback-label"><input type="checkbox" class="anonymous-feedback-checkbox"> '
56
- . fs_text( 'anonymous-feedback', $slug )
57
- . '</label>';
58
  } else {
59
  $anonymous_feedback_checkbox_html = '';
60
  }
61
 
 
 
 
 
 
62
  fs_enqueue_local_style( 'fs_dialog_boxes', '/admin/dialog-boxes.css' );
63
  ?>
64
  <script type="text/javascript">
@@ -68,16 +73,16 @@ HTML;
68
  '<div class="fs-modal fs-modal-deactivation-feedback<?php echo empty( $confirmation_message ) ? ' no-confirmation-message' : ''; ?>">'
69
  + ' <div class="fs-modal-dialog">'
70
  + ' <div class="fs-modal-header">'
71
- + ' <h4><?php fs_esc_attr_echo('quick-feedback' , $slug) ?></h4>'
72
  + ' </div>'
73
  + ' <div class="fs-modal-body">'
74
  + ' <div class="fs-modal-panel" data-panel-id="confirm"><p><?php echo $confirmation_message; ?></p></div>'
75
- + ' <div class="fs-modal-panel active" data-panel-id="reasons"><h3><strong><?php printf( fs_esc_attr( 'deactivation-share-reason' , $slug ), fs_esc_attr(($fs->is_plugin() ? 'deactivating' : 'switching') , $slug) ); ?>:</strong></h3><ul id="reasons-list">' + reasonsHtml + '</ul></div>'
76
  + ' </div>'
77
  + ' <div class="fs-modal-footer">'
78
  + ' <?php echo $anonymous_feedback_checkbox_html ?>'
79
  + ' <a href="#" class="button button-secondary button-deactivate"></a>'
80
- + ' <a href="#" class="button button-primary button-close"><?php fs_echo( 'cancel' , $slug ) ?></a>'
81
  + ' </div>'
82
  + ' </div>'
83
  + '</div>',
@@ -239,12 +244,12 @@ HTML;
239
 
240
  $modal.find('.reason-input').remove();
241
  $modal.find( '.internal-message' ).hide();
242
- $modal.find('.button-deactivate').text('<?php printf(
243
- fs_text( 'deactivation-modal-button-submit' , $slug ),
244
  $fs->is_plugin() ?
245
- fs_text('deactivate', $slug) :
246
- sprintf( fs_text( 'activate-x', $slug), fs_text( 'theme', $slug) )
247
- ) ?>');
248
 
249
  enableDeactivateButton();
250
 
@@ -261,7 +266,7 @@ HTML;
261
  _parent.find('input, textarea').attr('placeholder', inputPlaceholder).focus();
262
 
263
  if (isOtherReasonSelected()) {
264
- showMessage('<?php printf( fs_text( 'ask-for-reason-message' , $slug ) ); ?>');
265
  disableDeactivateButton();
266
  }
267
  }
@@ -381,19 +386,19 @@ HTML;
381
 
382
  // Reset the deactivate button's text.
383
  if ('confirm' === getCurrentPanel()) {
384
- $deactivateButton.text('<?php printf(
385
- fs_text( 'deactivation-modal-button-confirm' , $slug ),
386
  $fs->is_plugin() ?
387
- fs_text('deactivate', $slug ) :
388
- sprintf( fs_text( 'activate-x', $slug ), fs_text( 'theme', $slug ) )
389
- ) ?>');
390
  } else {
391
- $deactivateButton.text('<?php printf(
392
- fs_text('skip-and-x', $slug ),
393
  $fs->is_plugin() ?
394
- fs_text('deactivate', $slug ) :
395
- sprintf( fs_text( 'activate-x', $slug ), fs_text( 'theme', $slug ) )
396
- ) ?>');
397
  }
398
  }
399
 
51
 
52
  $is_anonymous = ( ! $fs->is_registered() );
53
  if ( $is_anonymous ) {
54
+ $anonymous_feedback_checkbox_html = sprintf(
55
+ '<label class="anonymous-feedback-label"><input type="checkbox" class="anonymous-feedback-checkbox"> %s</label>',
56
+ fs_esc_html_inline( 'Anonymous feedback', 'anonymous-feedback', $slug )
57
+ );
58
  } else {
59
  $anonymous_feedback_checkbox_html = '';
60
  }
61
 
62
+ // Aliases.
63
+ $deactivate_text = fs_text_inline( 'Deactivate', 'deactivate', $slug );
64
+ $theme_text = fs_text_inline( 'Theme', 'theme', $slug );
65
+ $activate_x_text = fs_text_inline( 'Activate %s', 'activate-x', $slug );
66
+
67
  fs_enqueue_local_style( 'fs_dialog_boxes', '/admin/dialog-boxes.css' );
68
  ?>
69
  <script type="text/javascript">
73
  '<div class="fs-modal fs-modal-deactivation-feedback<?php echo empty( $confirmation_message ) ? ' no-confirmation-message' : ''; ?>">'
74
  + ' <div class="fs-modal-dialog">'
75
  + ' <div class="fs-modal-header">'
76
+ + ' <h4><?php fs_esc_attr_echo_inline( 'Quick feedback', 'quick-feedback' , $slug ) ?></h4>'
77
  + ' </div>'
78
  + ' <div class="fs-modal-body">'
79
  + ' <div class="fs-modal-panel" data-panel-id="confirm"><p><?php echo $confirmation_message; ?></p></div>'
80
+ + ' <div class="fs-modal-panel active" data-panel-id="reasons"><h3><strong><?php echo esc_js( sprintf( fs_text_inline( 'If you have a moment, please let us know why you are %s', 'deactivation-share-reason' , $slug ), ( $fs->is_plugin() ? fs_text_inline( 'deactivating', 'deactivating', $slug ) : fs_text_inline( 'switching', 'switching', $slug ) ) ) ) ?>:</strong></h3><ul id="reasons-list">' + reasonsHtml + '</ul></div>'
81
  + ' </div>'
82
  + ' <div class="fs-modal-footer">'
83
  + ' <?php echo $anonymous_feedback_checkbox_html ?>'
84
  + ' <a href="#" class="button button-secondary button-deactivate"></a>'
85
+ + ' <a href="#" class="button button-primary button-close"><?php fs_esc_js_echo_inline( 'Cancel', 'cancel' , $slug ) ?></a>'
86
  + ' </div>'
87
  + ' </div>'
88
  + '</div>',
244
 
245
  $modal.find('.reason-input').remove();
246
  $modal.find( '.internal-message' ).hide();
247
+ $modal.find('.button-deactivate').html('<?php echo esc_js( sprintf(
248
+ fs_text_inline( 'Submit & %s', 'deactivation-modal-button-submit' , $slug ),
249
  $fs->is_plugin() ?
250
+ $deactivate_text :
251
+ sprintf( $activate_x_text, $theme_text )
252
+ ) ) ?>');
253
 
254
  enableDeactivateButton();
255
 
266
  _parent.find('input, textarea').attr('placeholder', inputPlaceholder).focus();
267
 
268
  if (isOtherReasonSelected()) {
269
+ showMessage('<?php echo esc_js( fs_text_inline( 'Kindly tell us the reason so we can improve.', 'ask-for-reason-message' , $slug ) ); ?>');
270
  disableDeactivateButton();
271
  }
272
  }
386
 
387
  // Reset the deactivate button's text.
388
  if ('confirm' === getCurrentPanel()) {
389
+ $deactivateButton.text('<?php echo esc_js( sprintf(
390
+ fs_text_inline( 'Yes - %s', 'deactivation-modal-button-confirm' , $slug ),
391
  $fs->is_plugin() ?
392
+ $deactivate_text :
393
+ sprintf( $activate_x_text, $theme_text )
394
+ ) ) ?>');
395
  } else {
396
+ $deactivateButton.html('<?php echo esc_js( sprintf(
397
+ fs_text_inline('Skip & %s', 'skip-and-x', $slug ),
398
  $fs->is_plugin() ?
399
+ $deactivate_text :
400
+ sprintf( $activate_x_text, $theme_text )
401
+ ) ) ?>');
402
  }
403
  }
404
 
freemius/templates/forms/deactivation/retry-skip.php CHANGED
@@ -16,9 +16,9 @@
16
  $fs = freemius( $VARS['id'] );
17
  $slug = $fs->get_slug();
18
 
19
- $skip_url = fs_nonce_url( $fs->_get_admin_page_url( '', array( 'fs_action' => $fs->get_unique_affix() . '_skip_activation' ) ), $fs->get_unique_affix() . '_skip_activation' );
20
- $skip_text = strtolower( fs_text( 'skip', $slug ) );
21
- $use_plugin_anonymously_text = fs_text( 'click-here-to-use-plugin-anonymously', $slug );
22
 
23
- echo sprintf( fs_text( 'dont-have-to-share-any-data', $slug ), "<a href='{$skip_url}'>{$skip_text}</a>" )
24
  . " <a href='{$skip_url}' class='button button-small button-secondary'>{$use_plugin_anonymously_text}</a>";
16
  $fs = freemius( $VARS['id'] );
17
  $slug = $fs->get_slug();
18
 
19
+ $skip_url = fs_nonce_url( $fs->_get_admin_page_url( '', array( 'fs_action' => $fs->get_unique_affix() . '_skip_activation' ) ), $fs->get_unique_affix() . '_skip_activation' );
20
+ $skip_text = strtolower( fs_text_x_inline( 'Skip', 'verb', 'skip', $slug ) );
21
+ $use_plugin_anonymously_text = fs_text_inline( 'Click here to use the plugin anonymously', 'click-here-to-use-plugin-anonymously', $slug );
22
 
23
+ echo sprintf( fs_text_inline( "You might have missed it, but you don't have to share any data and can just %s the opt-in.", 'dont-have-to-share-any-data', $slug ), "<a href='{$skip_url}'>{$skip_text}</a>" )
24
  . " <a href='{$skip_url}' class='button button-small button-secondary'>{$use_plugin_anonymously_text}</a>";
freemius/templates/forms/license-activation.php CHANGED
@@ -16,11 +16,13 @@
16
  $fs = freemius( $VARS['id'] );
17
  $slug = $fs->get_slug();
18
 
19
- $cant_find_license_key_text = fs_text( 'cant-find-license-key', $slug );
20
- $message_above_input_field = fs_text( 'activate-license-message', $slug );
21
  $message_below_input_field = '';
22
 
23
- $header_title = fs_text( $fs->is_free_plan() ? 'activate-license' : 'update-license', $slug );
 
 
24
 
25
  if ( $fs->is_registered() ) {
26
  $activate_button_text = $header_title;
@@ -33,15 +35,15 @@
33
  $freemius_link = '<a href="' . $freemius_site_url . '" target="_blank" tabindex="0">freemius.com</a>';
34
 
35
  $message_below_input_field = sprintf(
36
- fs_text( 'license-sync-disclaimer', $slug ),
37
  $fs->get_module_label( true ),
38
  $freemius_link
39
  );
40
 
41
- $activate_button_text = fs_text( 'agree-activate-license', $slug );
42
  }
43
 
44
- $license_key_text = fs_text( 'license-key' , $slug );
45
 
46
  /**
47
  * IMPORTANT:
@@ -68,13 +70,13 @@ HTML;
68
  + ' <div class="fs-modal-dialog">'
69
  + ' <div class="fs-modal-header">'
70
  + ' <h4><?php echo esc_js($header_title) ?></h4>'
71
- + ' <a href="!#" class="fs-close"><i class="dashicons dashicons-no" title="<?php fs_esc_attr_echo( 'dismiss', $slug ) ?>"></i></a>'
72
  + ' </div>'
73
  + ' <div class="fs-modal-body">'
74
  + ' <div class="fs-modal-panel active">' + modalContentHtml + '</div>'
75
  + ' </div>'
76
  + ' <div class="fs-modal-footer">'
77
- + ' <button class="button button-secondary button-close" tabindex="4"><?php fs_esc_js_echo( 'cancel', $slug ) ?></button>'
78
  + ' <button class="button button-primary button-activate-license" tabindex="3"><?php echo esc_js( $activate_button_text ) ?></button>'
79
  + ' </div>'
80
  + ' </div>'
@@ -142,7 +144,7 @@ HTML;
142
  module_id : '<?php echo $fs->get_id() ?>'
143
  },
144
  beforeSend: function () {
145
- $activateLicenseButton.text( <?php fs_json_encode_echo( 'activating-license', $slug ) ?> );
146
  },
147
  success: function( result ) {
148
  var resultObj = $.parseJSON( result );
16
  $fs = freemius( $VARS['id'] );
17
  $slug = $fs->get_slug();
18
 
19
+ $cant_find_license_key_text = fs_text_inline( "Can't find your license key?", 'cant-find-license-key', $slug );
20
+ $message_above_input_field = fs_text_inline( 'Please enter the license key that you received in the email right after the purchase:', 'activate-license-message', $slug );
21
  $message_below_input_field = '';
22
 
23
+ $header_title = $fs->is_free_plan() ?
24
+ fs_text_inline( 'Activate License', 'activate-license', $slug ) :
25
+ fs_text_inline( 'Update License', 'update-license', $slug );
26
 
27
  if ( $fs->is_registered() ) {
28
  $activate_button_text = $header_title;
35
  $freemius_link = '<a href="' . $freemius_site_url . '" target="_blank" tabindex="0">freemius.com</a>';
36
 
37
  $message_below_input_field = sprintf(
38
+ fs_text_inline( '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.', 'license-sync-disclaimer', $slug ),
39
  $fs->get_module_label( true ),
40
  $freemius_link
41
  );
42
 
43
+ $activate_button_text = fs_text_inline( 'Agree & Activate License', 'agree-activate-license', $slug );
44
  }
45
 
46
+ $license_key_text = fs_text_inline( 'License key', 'license-key' , $slug );
47
 
48
  /**
49
  * IMPORTANT:
70
  + ' <div class="fs-modal-dialog">'
71
  + ' <div class="fs-modal-header">'
72
  + ' <h4><?php echo esc_js($header_title) ?></h4>'
73
+ + ' <a href="!#" class="fs-close"><i class="dashicons dashicons-no" title="<?php echo esc_js( fs_text_x_inline( 'Dismiss', 'as close a window', 'dismiss', $slug ) ) ?>"></i></a>'
74
  + ' </div>'
75
  + ' <div class="fs-modal-body">'
76
  + ' <div class="fs-modal-panel active">' + modalContentHtml + '</div>'
77
  + ' </div>'
78
  + ' <div class="fs-modal-footer">'
79
+ + ' <button class="button button-secondary button-close" tabindex="4"><?php fs_esc_js_echo_inline( 'Cancel', 'cancel', $slug ) ?></button>'
80
  + ' <button class="button button-primary button-activate-license" tabindex="3"><?php echo esc_js( $activate_button_text ) ?></button>'
81
  + ' </div>'
82
  + ' </div>'
144
  module_id : '<?php echo $fs->get_id() ?>'
145
  },
146
  beforeSend: function () {
147
+ $activateLicenseButton.text( '<?php fs_esc_js_echo_inline( 'Activating license', 'activating-license', $slug ) ?>...' );
148
  },
149
  success: function( result ) {
150
  var resultObj = $.parseJSON( result );
freemius/templates/forms/optout.php CHANGED
@@ -26,12 +26,13 @@
26
  'fs_action' => ( $fs->get_unique_affix() . '_reconnect' ),
27
  ) );
28
 
29
- $plugin_title = "<strong>{$fs->get_plugin()->title}</strong>";
30
- $opt_out_button_text = fs_text( 'opt-out', $slug );
31
- $opt_out_message_appreciation = sprintf( fs_text( 'opt-out-message-appreciation', $slug ), $fs->get_module_type() );
32
- $opt_out_message_usage_tracking = sprintf( fs_text( 'opt-out-message-usage-tracking', $slug ), $plugin_title );
 
33
  $opt_out_message_clicking_opt_out = sprintf(
34
- fs_text( 'opt-out-message-clicking-opt-out', $slug ),
35
  $plugin_title,
36
  sprintf(
37
  '<a href="%s" target="_blank">%s</a>',
@@ -69,14 +70,14 @@ HTML;
69
  '<div class="fs-modal fs-modal-opt-out">'
70
  + ' <div class="fs-modal-dialog">'
71
  + ' <div class="fs-modal-header">'
72
- + ' <h4><?php echo esc_js( $opt_out_button_text ) ?></h4>'
73
  + ' </div>'
74
  + ' <div class="fs-modal-body">'
75
  + ' <div class="fs-modal-panel active">' + modalContentHtml + '</div>'
76
  + ' </div>'
77
  + ' <div class="fs-modal-footer">'
78
- + ' <button class="button button-secondary button-opt-out" tabindex="1"><?php echo esc_js( $opt_out_button_text ) ?></button>'
79
- + ' <button class="button button-primary button-close" tabindex="2"><?php fs_esc_js_echo( 'opt-out-cancel', $slug ) ?></button>'
80
  + ' </div>'
81
  + ' </div>'
82
  + '</div>',
@@ -143,7 +144,7 @@ HTML;
143
 
144
  function resetOptOutButton() {
145
  enableOptOutButton();
146
- $optOutButton.text( <?php echo json_encode( $opt_out_button_text ) ?> );
147
  }
148
 
149
  function resetModal() {
@@ -176,20 +177,20 @@ HTML;
176
  },
177
  beforeSend: function() {
178
  if ( 'opt-in' == action ) {
179
- $actionLink.text( <?php fs_json_encode_echo( 'opting-in', $slug ) ?> );
180
  } else {
181
- $optOutButton.text( <?php fs_json_encode_echo( 'opting-out', $slug ) ?> );
182
  }
183
  },
184
  success: function( resultObj ) {
185
  if ( resultObj.success ) {
186
  if ( 'allow_tracking' == action ) {
187
  action = 'stop_tracking';
188
- $actionLink.text( <?php fs_json_encode_echo( 'opt-out', $slug ) ?> );
189
  showOptInAppreciationMessageAndScrollToTop();
190
  } else {
191
  action = 'allow_tracking';
192
- $actionLink.text( <?php fs_json_encode_echo( 'opt-in', $slug ) ?> );
193
  closeModal();
194
 
195
  if ( $adminNotice.length > 0 ) {
@@ -248,8 +249,8 @@ HTML;
248
  }
249
 
250
  var label = (('stop_tracking' == action) ?
251
- <?php fs_json_encode_echo( 'opt-out', $slug ) ?> :
252
- <?php fs_json_encode_echo( 'opt-in', $slug ) ?>),
253
  href = (('stop_tracking' != action) ?
254
  '<?php echo esc_js( $reconnect_url ) ?>' :
255
  '');
26
  'fs_action' => ( $fs->get_unique_affix() . '_reconnect' ),
27
  ) );
28
 
29
+ $plugin_title = "<strong>{$fs->get_plugin()->title}</strong>";
30
+ $opt_out_text = fs_text_x_inline( 'Opt Out', 'verb', 'opt-out', $slug );
31
+ $opt_in_text = fs_text_x_inline( 'Opt In', 'verb', 'opt-in', $slug );
32
+ $opt_out_message_appreciation = sprintf( fs_text_inline( 'We appreciate your help in making the %s better by letting us track some usage data.', 'opt-out-message-appreciation', $slug ), $fs->get_module_type() );
33
+ $opt_out_message_usage_tracking = sprintf( fs_text_inline( "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.", 'opt-out-message-usage-tracking', $slug ), $plugin_title );
34
  $opt_out_message_clicking_opt_out = sprintf(
35
+ fs_text_inline( 'By clicking "Opt Out", we will no longer be sending any data from %s to %s.', 'opt-out-message-clicking-opt-out', $slug ),
36
  $plugin_title,
37
  sprintf(
38
  '<a href="%s" target="_blank">%s</a>',
70
  '<div class="fs-modal fs-modal-opt-out">'
71
  + ' <div class="fs-modal-dialog">'
72
  + ' <div class="fs-modal-header">'
73
+ + ' <h4><?php echo esc_js( $opt_out_text ) ?></h4>'
74
  + ' </div>'
75
  + ' <div class="fs-modal-body">'
76
  + ' <div class="fs-modal-panel active">' + modalContentHtml + '</div>'
77
  + ' </div>'
78
  + ' <div class="fs-modal-footer">'
79
+ + ' <button class="button button-secondary button-opt-out" tabindex="1"><?php echo esc_js( $opt_out_text ) ?></button>'
80
+ + ' <button class="button button-primary button-close" tabindex="2"><?php fs_esc_js_echo_inline( 'On second thought - I want to continue helping', 'opt-out-cancel', $slug ) ?></button>'
81
  + ' </div>'
82
  + ' </div>'
83
  + '</div>',
144
 
145
  function resetOptOutButton() {
146
  enableOptOutButton();
147
+ $optOutButton.text( <?php echo json_encode( $opt_out_text ) ?> );
148
  }
149
 
150
  function resetModal() {
177
  },
178
  beforeSend: function() {
179
  if ( 'opt-in' == action ) {
180
+ $actionLink.text( '<?php fs_esc_js_echo_inline( 'Opting in', 'opting-in', $slug ) ?>...' );
181
  } else {
182
+ $optOutButton.text( '<?php fs_esc_js_echo_inline( 'Opting out', 'opting-out', $slug ) ?>...' );
183
  }
184
  },
185
  success: function( resultObj ) {
186
  if ( resultObj.success ) {
187
  if ( 'allow_tracking' == action ) {
188
  action = 'stop_tracking';
189
+ $actionLink.text( '<?php echo esc_js( $opt_out_text ) ?>' );
190
  showOptInAppreciationMessageAndScrollToTop();
191
  } else {
192
  action = 'allow_tracking';
193
+ $actionLink.text( '<?php echo esc_js( $opt_in_text ) ?>' );
194
  closeModal();
195
 
196
  if ( $adminNotice.length > 0 ) {
249
  }
250
 
251
  var label = (('stop_tracking' == action) ?
252
+ '<?php echo esc_js( $opt_out_text ) ?>' :
253
+ '<?php echo esc_js( $opt_in_text ) ?>'),
254
  href = (('stop_tracking' != action) ?
255
  '<?php echo esc_js( $reconnect_url ) ?>' :
256
  '');
freemius/templates/forms/resend-key.php CHANGED
@@ -18,10 +18,10 @@
18
 
19
  $slug = $fs->get_slug();
20
 
21
- $send_button_text = fs_text( 'send-license-key', $slug );
22
- $cancel_button_text = fs_text( 'cancel', $slug );
23
- $email_address_placeholder = fs_esc_attr( 'email-address', $slug );
24
- $other_text = fs_text( 'reason-other', $slug );
25
 
26
  $is_freemium = $fs->is_freemium();
27
 
@@ -54,7 +54,7 @@ HTML;
54
  HTML;
55
  }
56
 
57
- $message_above_input_field = esc_html( fs_text( 'ask-for-upgrade-email-address', $slug ) );
58
  $modal_content_html = <<< HTML
59
  <div class="notice notice-error inline license-resend-message"><p></p></div>
60
  <p>{$message_above_input_field}</p>
@@ -74,7 +74,7 @@ HTML;
74
  + ' <div class="fs-modal-dialog">'
75
  + ' <div class="fs-modal-header">'
76
  + ' <h4><?php echo esc_js( $send_button_text ) ?></h4>'
77
- + ' <a href="#!" class="fs-close" tabindex="3" title="Close"><i class="dashicons dashicons-no" title="<?php fs_esc_js_echo( 'dismiss', $slug ) ?>"></i></a>'
78
  + ' </div>'
79
  + ' <div class="fs-modal-body">'
80
  + ' <div class="fs-modal-panel active">' + contentHtml + '</div>'
@@ -151,7 +151,7 @@ HTML;
151
  email : email
152
  },
153
  beforeSend: function () {
154
- $sendButton.text(<?php fs_json_encode_echo( 'sending-license-key', $slug ) ?> + '...');
155
  },
156
  success : function (result) {
157
  var resultObj = $.parseJSON(result);
18
 
19
  $slug = $fs->get_slug();
20
 
21
+ $send_button_text = fs_text_inline( 'Send License Key', 'send-license-key', $slug );
22
+ $cancel_button_text = fs_text_inline( 'Cancel', 'cancel', $slug );
23
+ $email_address_placeholder = fs_esc_attr_inline( 'Email address', 'email-address', $slug );
24
+ $other_text = fs_text_inline( 'Other', 'other', $slug );
25
 
26
  $is_freemium = $fs->is_freemium();
27
 
54
  HTML;
55
  }
56
 
57
+ $message_above_input_field = fs_esc_html_inline( "Enter the email address you've used for the upgrade below and we will resend you the license key.", 'ask-for-upgrade-email-address', $slug );
58
  $modal_content_html = <<< HTML
59
  <div class="notice notice-error inline license-resend-message"><p></p></div>
60
  <p>{$message_above_input_field}</p>
74
  + ' <div class="fs-modal-dialog">'
75
  + ' <div class="fs-modal-header">'
76
  + ' <h4><?php echo esc_js( $send_button_text ) ?></h4>'
77
+ + ' <a href="#!" class="fs-close" tabindex="3" title="Close"><i class="dashicons dashicons-no" title="<?php echo esc_js( fs_text_x_inline( 'Dismiss', 'as close a window', 'dismiss', $slug ) ) ?>"></i></a>'
78
  + ' </div>'
79
  + ' <div class="fs-modal-body">'
80
  + ' <div class="fs-modal-panel active">' + contentHtml + '</div>'
151
  email : email
152
  },
153
  beforeSend: function () {
154
+ $sendButton.text('<?php fs_esc_js_echo_inline( 'Sending license key', 'sending-license-key', $slug ) ?>...');
155
  },
156
  success : function (result) {
157
  var resultObj = $.parseJSON(result);
freemius/templates/forms/trial-start.php CHANGED
@@ -18,12 +18,14 @@
18
  $slug = $fs->get_slug();
19
 
20
  $message_header = sprintf(
21
- fs_text( 'start-trial-prompt-header', $slug ),
 
22
  '<span class="var-trial_period"></span>',
23
  '<span class="var-plan_title"></span>'
24
  );
25
  $message_content = sprintf(
26
- fs_text( 'start-trial-prompt-message', $slug ),
 
27
  $fs->get_module_type(),
28
  sprintf(
29
  '<a href="%s" target="_blank">%s</a>',
@@ -48,12 +50,12 @@ HTML;
48
  '<div class="fs-modal fs-modal-license-key-resend">'
49
  + ' <div class="fs-modal-dialog">'
50
  + ' <div class="fs-modal-header">'
51
- + ' <h4><?php fs_esc_js_echo( 'start-free-trial', $slug ) ?></h4>'
52
  + ' </div>'
53
  + ' <div class="fs-modal-body">' + modalContentHtml + '</div>'
54
  + ' <div class="fs-modal-footer">'
55
- + ' <button class="button button-secondary button-close">' + <?php fs_json_encode_echo( 'cancel', $slug ) ?> +'</button>'
56
- + ' <button class="button button-primary button-connect">' + <?php fs_json_encode_echo( 'approve-start-trial', $slug ) ?> +'</button>'
57
  + ' </div>'
58
  + ' </div>'
59
  + '</div>',
@@ -90,13 +92,13 @@ HTML;
90
  // Disable all buttons during trial activation.
91
  $modal.find('.button').prop('disabled', true);
92
 
93
- $button.text(<?php fs_json_encode_echo( 'starting-trial', $slug ) ?> + '...');
94
 
95
  setLoadingMode();
96
  },
97
  success : function (resultObj) {
98
  if (resultObj.success) {
99
- $button.text(<?php fs_json_encode_echo( 'please-wait', $slug ) ?> + '...');
100
 
101
  // Redirect to the "Account" page and sync the license.
102
  window.location.href = resultObj.data.next_page;
18
  $slug = $fs->get_slug();
19
 
20
  $message_header = sprintf(
21
+ /* translators: %1$s: Number of trial days; %2$s: Plan name; */
22
+ fs_text_inline( 'You are 1-click away from starting your %1$s-day free trial of the %2$s plan.', 'start-trial-prompt-header', $slug ),
23
  '<span class="var-trial_period"></span>',
24
  '<span class="var-plan_title"></span>'
25
  );
26
  $message_content = sprintf(
27
+ /* translators: %s: Link to freemius.com */
28
+ fs_text_inline( '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.', 'start-trial-prompt-message', $slug ),
29
  $fs->get_module_type(),
30
  sprintf(
31
  '<a href="%s" target="_blank">%s</a>',
50
  '<div class="fs-modal fs-modal-license-key-resend">'
51
  + ' <div class="fs-modal-dialog">'
52
  + ' <div class="fs-modal-header">'
53
+ + ' <h4><?php echo esc_js( fs_text_x_inline( 'Start free trial', 'call to action', 'start-free-trial', $slug ) ) ?></h4>'
54
  + ' </div>'
55
  + ' <div class="fs-modal-body">' + modalContentHtml + '</div>'
56
  + ' <div class="fs-modal-footer">'
57
+ + ' <button class="button button-secondary button-close">' + <?php fs_json_encode_echo_inline( 'Cancel', 'cancel', $slug ) ?> +'</button>'
58
+ + ' <button class="button button-primary button-connect">' + <?php fs_json_encode_echo_inline( 'Approve & Start Trial', 'approve-start-trial', $slug ) ?> +'</button>'
59
  + ' </div>'
60
  + ' </div>'
61
  + '</div>',
92
  // Disable all buttons during trial activation.
93
  $modal.find('.button').prop('disabled', true);
94
 
95
+ $button.text(<?php fs_json_encode_echo_inline( 'Starting trial', 'starting-trial', $slug ) ?> + '...');
96
 
97
  setLoadingMode();
98
  },
99
  success : function (resultObj) {
100
  if (resultObj.success) {
101
+ $button.text(<?php fs_json_encode_echo_inline( 'Please wait', 'please-wait', $slug ) ?> + '...');
102
 
103
  // Redirect to the "Account" page and sync the license.
104
  window.location.href = resultObj.data.next_page;
freemius/templates/js/style-premium-theme.php CHANGED
@@ -34,7 +34,7 @@
34
  if (0 === $theme.find('.fs-premium-theme-badge').length) {
35
  $theme.addClass('fs-premium');
36
 
37
- $theme.append('<span class="fs-premium-theme-badge">' + <?php echo json_encode( $fs->get_text( 'premium' ) ) ?> +'</span>');
38
  }
39
  };
40
 
34
  if (0 === $theme.find('.fs-premium-theme-badge').length) {
35
  $theme.addClass('fs-premium');
36
 
37
+ $theme.append('<span class="fs-premium-theme-badge">' + <?php echo json_encode( $fs->get_text_inline( 'Premium', 'premium' ) ) ?> +'</span>');
38
  }
39
  };
40
 
freemius/templates/plugin-icon.php CHANGED
@@ -100,9 +100,9 @@
100
  $ext = pathinfo( strtok( $icon, '?' ), PATHINFO_EXTENSION );
101
 
102
  $local_path = fs_normalize_path( $img_dir . '/' . $slug . '.' . $ext );
103
- fs_download_image( $icon, $local_path );
104
 
105
- $icon_found = true;
 
106
  }
107
  }
108
 
100
  $ext = pathinfo( strtok( $icon, '?' ), PATHINFO_EXTENSION );
101
 
102
  $local_path = fs_normalize_path( $img_dir . '/' . $slug . '.' . $ext );
 
103
 
104
+ // Try to download the icon.
105
+ $icon_found = fs_download_image( $icon, $local_path );
106
  }
107
  }
108
 
freemius/templates/plugin-info/description.php CHANGED
@@ -52,7 +52,7 @@
52
  <?php if ( ! empty( $plugin->info->screenshots ) ) : ?>
53
  <?php $screenshots = $plugin->info->screenshots ?>
54
  <div class="fs-screenshots clearfix">
55
- <h2><?php fs_esc_html_echo( 'screenshots', $plugin->slug ) ?></h2>
56
  <ul>
57
  <?php $i = 0;
58
  foreach ( $screenshots as $s => $url ) : ?>
@@ -69,7 +69,7 @@
69
  }
70
  </style>
71
  <a href="<?php echo $url ?>"
72
- title="<?php echo esc_attr( sprintf( fs_text( 'view-full-size-x', $plugin->slug ), $i ) ) ?>"
73
  class="fs-screenshot-<?php echo $i ?>"></a>
74
  </li>
75
  <?php $i ++; endforeach ?>
52
  <?php if ( ! empty( $plugin->info->screenshots ) ) : ?>
53
  <?php $screenshots = $plugin->info->screenshots ?>
54
  <div class="fs-screenshots clearfix">
55
+ <h2><?php fs_esc_html_echo_inline( 'Screenshots', 'screenshots', $plugin->slug ) ?></h2>
56
  <ul>
57
  <?php $i = 0;
58
  foreach ( $screenshots as $s => $url ) : ?>
69
  }
70
  </style>
71
  <a href="<?php echo $url ?>"
72
+ title="<?php echo esc_attr( sprintf( fs_text_inline( 'Click to view full-size screenshot %d', 'view-full-size-x', $plugin->slug ), $i ) ) ?>"
73
  class="fs-screenshot-<?php echo $i ?>"></a>
74
  </li>
75
  <?php $i ++; endforeach ?>
freemius/templates/plugin-info/features.php CHANGED
@@ -40,7 +40,7 @@
40
  if ( ! isset( $features_plan_map['support'] ) ) {
41
  $support_feature = new stdClass();
42
  $support_feature->id = 'support';
43
- $support_feature->title = fs_text( 'Support', $plugin->slug );
44
  $features_plan_map[ $support_feature->id ] = array( 'feature' => $support_feature, 'plans' => array() );
45
  } else {
46
  $support_feature = $features_plan_map['support'];
@@ -53,7 +53,7 @@
53
  // Add updates as a feature for all plans.
54
  $updates_feature = new stdClass();
55
  $updates_feature->id = 'updates';
56
- $updates_feature->title = fs_text( 'unlimited-updates', $plugin->slug );
57
  $features_plan_map[ $updates_feature->id ] = array( 'feature' => $updates_feature, 'plans' => array() );
58
  foreach ( $plans as $plan ) {
59
  $features_plan_map[ $updates_feature->id ]['plans'][ $plan->id ] = $updates_feature;
@@ -69,7 +69,7 @@
69
  <?php echo $plan->title ?>
70
  <span class="fs-price"><?php
71
  if ( empty( $plan->pricing ) ) {
72
- fs_esc_html_echo( 'free', $plugin->slug );
73
  } else {
74
  foreach ( $plan->pricing as $pricing ) {
75
  /**
@@ -77,9 +77,9 @@
77
  */
78
  if ( 1 == $pricing->licenses ) {
79
  if ( $pricing->has_annual() ) {
80
- echo "\${$pricing->annual_price} / " . fs_esc_html( 'year', $plugin->slug );
81
  } else if ( $pricing->has_monthly() ) {
82
- echo "\${$pricing->monthly_price} / " . fs_esc_html( 'mo', $plugin->slug );
83
  } else {
84
  echo "\${$pricing->lifetime_price}";
85
  }
40
  if ( ! isset( $features_plan_map['support'] ) ) {
41
  $support_feature = new stdClass();
42
  $support_feature->id = 'support';
43
+ $support_feature->title = fs_text_inline( 'Support', $plugin->slug );
44
  $features_plan_map[ $support_feature->id ] = array( 'feature' => $support_feature, 'plans' => array() );
45
  } else {
46
  $support_feature = $features_plan_map['support'];
53
  // Add updates as a feature for all plans.
54
  $updates_feature = new stdClass();
55
  $updates_feature->id = 'updates';
56
+ $updates_feature->title = fs_text_inline( 'Unlimited Updates', 'unlimited-updates', $plugin->slug );
57
  $features_plan_map[ $updates_feature->id ] = array( 'feature' => $updates_feature, 'plans' => array() );
58
  foreach ( $plans as $plan ) {
59
  $features_plan_map[ $updates_feature->id ]['plans'][ $plan->id ] = $updates_feature;
69
  <?php echo $plan->title ?>
70
  <span class="fs-price"><?php
71
  if ( empty( $plan->pricing ) ) {
72
+ fs_esc_html_echo_inline( 'Free', 'free', $plugin->slug );
73
  } else {
74
  foreach ( $plan->pricing as $pricing ) {
75
  /**
77
  */
78
  if ( 1 == $pricing->licenses ) {
79
  if ( $pricing->has_annual() ) {
80
+ echo "\${$pricing->annual_price} / " . fs_esc_html_x_inline( 'year', 'as annual period', 'year', $plugin->slug );
81
  } else if ( $pricing->has_monthly() ) {
82
+ echo "\${$pricing->monthly_price} / " . fs_esc_html_x_inline( 'mo', 'as monthly period', 'mo', $plugin->slug );
83
  } else {
84
  echo "\${$pricing->lifetime_price}";
85
  }
freemius/templates/plugin-info/screenshots.php CHANGED
@@ -28,7 +28,7 @@
28
  $url = 'http' . ( WP_FS__IS_HTTPS ? 's' : '' ) . ':' . $url;
29
  ?>
30
  <li>
31
- <a href="<?php echo $url ?>" title="<?php echo esc_attr( sprintf( fs_text( 'view-full-size-x', $plugin->slug ), $i ) ) ?>"><img src="<?php echo $url ?>"></a>
32
  </li>
33
  <?php $i ++; endforeach ?>
34
  </ol>
28
  $url = 'http' . ( WP_FS__IS_HTTPS ? 's' : '' ) . ':' . $url;
29
  ?>
30
  <li>
31
+ <a href="<?php echo $url ?>" title="<?php echo esc_attr( sprintf( fs_text_inline( 'Click to view full-size screenshot %d', 'view-full-size-x', $plugin->slug ), $i ) ) ?>"><img src="<?php echo $url ?>"></a>
32
  </li>
33
  <?php $i ++; endforeach ?>
34
  </ol>
freemius/templates/pricing.php CHANGED
@@ -89,7 +89,7 @@
89
 
90
  $view_params = array(
91
  'id' => $VARS['id'],
92
- 'page' => strtolower( $fs->get_text( 'pricing' ) ),
93
  );
94
  fs_require_once_template('secure-https-header.php', $view_params);
95
 
89
 
90
  $view_params = array(
91
  'id' => $VARS['id'],
92
+ 'page' => strtolower( $fs->get_text_x_inline( 'Pricing', 'noun', 'pricing' ) ),
93
  );
94
  fs_require_once_template('secure-https-header.php', $view_params);
95
 
freemius/templates/secure-https-header.php CHANGED
@@ -24,7 +24,8 @@
24
  $fs = freemius( $VARS['id'] );
25
 
26
  echo esc_html( sprintf(
27
- $fs->get_text( 'secure-x-page-header' ),
 
28
  $VARS['page']
29
  ) ) .
30
  ' - ' .
24
  $fs = freemius( $VARS['id'] );
25
 
26
  echo esc_html( sprintf(
27
+ /* translators: %s: Page name */
28
+ $fs->get_text_inline( 'Secure HTTPS %s page, running from an external domain', 'secure-x-page-header' ),
29
  $VARS['page']
30
  ) ) .
31
  ' - ' .
freemius/templates/tabs.php CHANGED
@@ -1,179 +1,178 @@
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
- * @var array $VARS
15
- * @var Freemius $fs
16
- */
17
- $fs = freemius( $VARS['id'] );
18
-
19
- $slug = $fs->get_slug();
20
-
21
- $menu_items = $fs->get_menu_items();
22
-
23
- $tabs = array();
24
- foreach ( $menu_items as $priority => $items ) {
25
- foreach ( $items as $item ) {
26
- $url = $fs->_get_admin_page_url( $item['menu_slug'] );
27
- $title = $item['menu_title'];
28
-
29
- $tab = array(
30
- 'label' => $title,
31
- 'href' => $url,
32
- 'slug' => $item['menu_slug'],
33
- );
34
-
35
- if ( 'pricing' === $item['menu_slug'] && $fs->is_in_trial_promotion() ) {
36
- $tab['href'] .= '&trial=true';
37
- }
38
-
39
- $tabs[] = $tab;
40
- }
41
- }
42
- ?>
43
- <script type="text/javascript">
44
- (function ($) {
45
- $(document).ready(function () {
46
- var $wrap = $( '.wrap' );
47
- if ( 0 === $wrap.length ) {
48
- $wrap = $( '<div class="wrap">' );
49
- $wrap.insertBefore( $( '#wpbody-content .clear' ) );
50
- }
51
-
52
- var
53
- $tabsWrapper = $('.nav-tab-wrapper'),
54
- $tabs = $tabsWrapper.find('.nav-tab'),
55
- $tab = null;
56
-
57
- if (0 < $tabs.length) {
58
- // Tries to set $tab to the first inactive tab.
59
- for (var i = 0; i < $tabs.length; i++) {
60
- $tab = $($tabs[i]);
61
-
62
- if (!$tab.hasClass('nav-tab-active')) {
63
- break;
64
- }
65
- }
66
- }
67
-
68
- if (null == $tab) {
69
- // No tabs found, therefore, create new tabs section if required.
70
- <?php if (0 < count( $tabs )) : ?>
71
- var $h1 = $wrap.find('h1');
72
-
73
- $tabsWrapper = $('<h2 class="nav-tab-wrapper"></h2>');
74
-
75
- <?php foreach ($tabs as $tab) : ?>
76
- // @todo What happens when one of the pages is loaded and there's no tabs.
77
- // @todo What about the Billing and account tabs?
78
- $('<a href="<?php echo $tab['href'] ?>" class="nav-tab"><?php echo esc_html( $tab['label'] ) ?></a>')
79
- .appendTo($tabsWrapper);
80
- <?php endforeach ?>
81
-
82
- if (0 < $h1.length) {
83
- $tabsWrapper.insertAfter($h1);
84
- } else if (0 < $wrap.length) {
85
- $wrap.prepend($tabsWrapper);
86
- }
87
- <?php endif ?>
88
- } else {
89
- // Create a clone.
90
- $tab = $tab.clone();
91
- // Open in current page.
92
- $tab.removeAttr('target');
93
- $tab.removeClass('nav-tab-active');
94
- $tab.addClass('fs-tab');
95
- $tab.addClass('<?php echo $fs->get_unique_affix() ?>');
96
-
97
- var $tabClone = null;
98
-
99
- <?php $freemius_context_page = null ?>
100
-
101
- <?php foreach ($tabs as $tab) : ?>
102
- <?php $is_support_tab = ( 'wp-support-forum' == $tab['slug'] ) ?>
103
- // Add the Freemius tabs.
104
- $tabClone = $tab.clone();
105
- $tabClone.html(<?php echo json_encode( $tab['label'] ) ?>)
106
- .attr('href', '<?php echo $is_support_tab ? $fs->get_support_forum_url() : $tab['href'] ?>')
107
- .appendTo($tabsWrapper)
108
- // Remove any custom click events.
109
- .off('click', '**')
110
- .addClass('<?php echo $tab['slug'] ?>')
111
- // Avoid tab click triggering parent events.
112
- .click(function (e) {
113
- e.stopPropagation();
114
- });
115
-
116
- <?php if ($is_support_tab) : ?>
117
- // Open support in a new tab/page.
118
- $tabClone.attr('target', '_blank');
119
- <?php endif ?>
120
-
121
- <?php if ($fs->is_admin_page( $tab['slug'] )) : ?>
122
- <?php $freemius_context_page = $tab['slug'] ?>
123
- // Select the relevant Freemius tab.
124
- $tabs.removeClass('nav-tab-active');
125
- $tabClone.addClass('nav-tab-active');
126
-
127
- <?php if (in_array( $freemius_context_page, array( 'pricing', 'contact', 'checkout' ) )) : ?>
128
- // Add AJAX loader.
129
- $tabClone.prepend('<i class="fs-ajax-spinner"></i>');
130
- // Hide loader after content fully loaded.
131
- $('.wrap i' + 'frame').load(function () {
132
- $(".fs-ajax-spinner").hide();
133
- });
134
- <?php endif ?>
135
-
136
- // Fix URLs that are starting with a hashtag.
137
- $tabs.each(function (j, tab) {
138
- if (0 === $(tab).attr('href').indexOf('#')) {
139
- $(tab).attr('href', '<?php echo esc_js( $fs->main_menu_url() ) ?>' + $(tab).attr('href'));
140
- }
141
- });
142
- <?php endif ?>
143
- <?php endforeach ?>
144
-
145
- var selectTab = function ($tab) {
146
- $(window).load(function () {
147
- $tab.click();
148
-
149
- // Scroll to the top since the browser will auto scroll to the anchor.
150
- document.body.scrollTop = 0;
151
- document.body.scrollLeft = 0;
152
- // window.scrollTo(0,0);
153
- });
154
- };
155
-
156
- // If the URL is loaded with a hashtag, find the context tab and select it.
157
- if (window.location.hash) {
158
- for (var j = 0; j < $tabs.length; j++) {
159
- if (window.location.hash === $($tabs[j]).attr('href')) {
160
- selectTab($($tabs[j]));
161
- break;
162
- }
163
- }
164
- }
165
-
166
- <?php if (is_string( $freemius_context_page ) && in_array( $freemius_context_page, array(
167
- 'pricing',
168
- 'contact',
169
- 'checkout'
170
- ) )) : ?>
171
- // Add margin to the upper section of the tabs to give extra space for the HTTPS header.
172
- // @todo This code assumes that the wrapper style is fully loaded, if there's a stylesheet that is not loaded via the HTML head, it may cause unpredicted margin-top.
173
- var $tabsWrap = $tabsWrapper.parents('.wrap');
174
- $tabsWrap.css('marginTop', (parseInt($tabsWrap.css('marginTop'), 10) + 30) + 'px');
175
- <?php endif ?>
176
- }
177
- });
178
- })(jQuery);
179
  </script>
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
+ * @var array $VARS
15
+ * @var Freemius $fs
16
+ */
17
+ $fs = freemius( $VARS['id'] );
18
+
19
+ $slug = $fs->get_slug();
20
+
21
+ $menu_items = $fs->get_menu_items();
22
+
23
+ $tabs = array();
24
+ foreach ( $menu_items as $priority => $items ) {
25
+ foreach ( $items as $item ) {
26
+ if ( ! $item['show_submenu'] ) {
27
+ continue;
28
+ }
29
+
30
+ $url = $fs->_get_admin_page_url( $item['menu_slug'] );
31
+ $title = $item['menu_title'];
32
+
33
+ $tab = array(
34
+ 'label' => $title,
35
+ 'href' => $url,
36
+ 'slug' => $item['menu_slug'],
37
+ );
38
+
39
+ if ( 'pricing' === $item['menu_slug'] && $fs->is_in_trial_promotion() ) {
40
+ $tab['href'] .= '&trial=true';
41
+ }
42
+
43
+ $tabs[] = $tab;
44
+ }
45
+ }
46
+ ?>
47
+ <script type="text/javascript">
48
+ (function ($) {
49
+ $(document).ready(function () {
50
+ var $wrap = $('.wrap');
51
+ if (0 === $wrap.length) {
52
+ $wrap = $('<div class="wrap">');
53
+ $wrap.insertBefore($('#wpbody-content .clear'));
54
+ }
55
+
56
+ var
57
+ $tabsWrapper = $('.nav-tab-wrapper'),
58
+ $tabs = $tabsWrapper.find('.nav-tab'),
59
+ $tab = null;
60
+
61
+ if (0 < $tabs.length) {
62
+ // Tries to set $tab to the first inactive tab.
63
+ for (var i = 0; i < $tabs.length; i++) {
64
+ $tab = $($tabs[i]);
65
+
66
+ if (!$tab.hasClass('nav-tab-active')) {
67
+ break;
68
+ }
69
+ }
70
+ }
71
+
72
+ <?php if (0 < count( $tabs )) : ?>
73
+ if (null == $tab) {
74
+ // No tabs found, therefore, create new tabs section if required.
75
+ var $h1 = $wrap.find('h1');
76
+
77
+ $tabsWrapper = $('<h2 class="nav-tab-wrapper"></h2>');
78
+
79
+ if (0 < $h1.length) {
80
+ $tabsWrapper.insertAfter($h1);
81
+ } else if (0 < $wrap.length) {
82
+ $wrap.prepend($tabsWrapper);
83
+ }
84
+
85
+ $tab = $('<a href="#" class="nav-tab"></a>');
86
+ }
87
+
88
+ // Create a clone.
89
+ $tab = $tab.clone();
90
+ // Open in current page.
91
+ $tab.removeAttr('target');
92
+ $tab.removeClass('nav-tab-active');
93
+ $tab.addClass('fs-tab');
94
+ $tab.addClass('<?php echo $fs->get_unique_affix() ?>');
95
+
96
+ var $tabClone = null;
97
+
98
+ <?php $freemius_context_page = null ?>
99
+
100
+ <?php foreach ($tabs as $tab) : ?>
101
+ <?php $is_support_tab = ( 'wp-support-forum' == $tab['slug'] ) ?>
102
+ // Add the Freemius tabs.
103
+ $tabClone = $tab.clone();
104
+ $tabClone.html(<?php echo json_encode( $tab['label'] ) ?>)
105
+ .attr('href', '<?php echo $is_support_tab ? $fs->get_support_forum_url() : $tab['href'] ?>')
106
+ .appendTo($tabsWrapper)
107
+ // Remove any custom click events.
108
+ .off('click', '**')
109
+ .addClass('<?php echo $tab['slug'] ?>')
110
+ // Avoid tab click triggering parent events.
111
+ .click(function (e) {
112
+ e.stopPropagation();
113
+ });
114
+
115
+ <?php if ($is_support_tab) : ?>
116
+ // Open support in a new tab/page.
117
+ $tabClone.attr('target', '_blank');
118
+ <?php endif ?>
119
+
120
+ <?php if ($fs->is_admin_page( $tab['slug'] )) : ?>
121
+ <?php $freemius_context_page = $tab['slug'] ?>
122
+ // Select the relevant Freemius tab.
123
+ $tabs.removeClass('nav-tab-active');
124
+ $tabClone.addClass('nav-tab-active');
125
+
126
+ <?php if (in_array( $freemius_context_page, array( 'pricing', 'contact', 'checkout' ) )) : ?>
127
+ // Add AJAX loader.
128
+ $tabClone.prepend('<i class="fs-ajax-spinner"></i>');
129
+ // Hide loader after content fully loaded.
130
+ $('.wrap i' + 'frame').load(function () {
131
+ $(".fs-ajax-spinner").hide();
132
+ });
133
+ <?php endif ?>
134
+
135
+ // Fix URLs that are starting with a hashtag.
136
+ $tabs.each(function (j, tab) {
137
+ if (0 === $(tab).attr('href').indexOf('#')) {
138
+ $(tab).attr('href', '<?php echo esc_js( $fs->main_menu_url() ) ?>' + $(tab).attr('href'));
139
+ }
140
+ });
141
+ <?php endif ?>
142
+ <?php endforeach ?>
143
+
144
+ var selectTab = function ($tab) {
145
+ $(window).load(function () {
146
+ $tab.click();
147
+
148
+ // Scroll to the top since the browser will auto scroll to the anchor.
149
+ document.body.scrollTop = 0;
150
+ document.body.scrollLeft = 0;
151
+ // window.scrollTo(0,0);
152
+ });
153
+ };
154
+
155
+ // If the URL is loaded with a hashtag, find the context tab and select it.
156
+ if (window.location.hash) {
157
+ for (var j = 0; j < $tabs.length; j++) {
158
+ if (window.location.hash === $($tabs[j]).attr('href')) {
159
+ selectTab($($tabs[j]));
160
+ break;
161
+ }
162
+ }
163
+ }
164
+
165
+ <?php if (is_string( $freemius_context_page ) && in_array( $freemius_context_page, array(
166
+ 'pricing',
167
+ 'contact',
168
+ 'checkout'
169
+ ) )) : ?>
170
+ // Add margin to the upper section of the tabs to give extra space for the HTTPS header.
171
+ // @todo This code assumes that the wrapper style is fully loaded, if there's a stylesheet that is not loaded via the HTML head, it may cause unpredicted margin-top.
172
+ var $tabsWrap = $tabsWrapper.parents('.wrap');
173
+ $tabsWrap.css('marginTop', (parseInt($tabsWrap.css('marginTop'), 10) + 30) + 'px');
174
+ <?php endif ?>
175
+ <?php endif ?>
176
+ });
177
+ })(jQuery);
 
178
  </script>
makefile DELETED
@@ -1,22 +0,0 @@
1
- PREFIX = Premmerce\\UrlManager
2
- OUTPUT_DIR = sdk
3
- INPUT_DIR = vendor
4
- PACKAGE = premmerce/wordpress-sdk/src
5
-
6
- all: scope_sdk get_freemius fix
7
-
8
- scope_sdk:
9
- composer update --no-dev
10
- php-scoper add-prefix $(INPUT_DIR)/$(PACKAGE) --prefix=$(PREFIX) --force --verbose --output-dir=$(OUTPUT_DIR)
11
- rm -rf vendor/premmerce
12
- composer dumpautoload -o
13
-
14
- get_freemius:
15
- wget 'https://github.com/Freemius/wordpress-sdk/archive/master.zip'
16
- unzip master.zip -d temp
17
- rm -rf freemius
18
- mv temp/wordpress-sdk-master freemius
19
- rm -rf master.zip temp
20
-
21
- fix:
22
- ./fix_freemius
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
premmerce-url-manager.php CHANGED
@@ -11,7 +11,7 @@ use Premmerce\UrlManager\UrlManagerPlugin;
11
  * Plugin Name: WooCommerce Permalink Manager
12
  * Plugin URI: https://premmerce.com/woocommerce-permalink-manager-remove-shop-product-product-category-url/
13
  * Description: Premmerce WooCommerce Permalink Manager allows you to change WooCommerce permalink and remove product and product_category slugs from the URL.
14
- * Version: 1.1
15
  * Author: premmerce
16
  * Author URI: https://premmerce.com/
17
  * License: GPL-2.0+
@@ -20,7 +20,7 @@ use Premmerce\UrlManager\UrlManagerPlugin;
20
  * Domain Path: /languages
21
  *
22
  * WC requires at least: 3.0.0
23
- * WC tested up to: 3.2.2
24
  */
25
 
26
  // If this file is called directly, abort.
@@ -31,6 +31,10 @@ if(!defined('WPINC')){
31
  call_user_func(function(){
32
  require_once plugin_dir_path(__FILE__) . 'vendor/autoload.php';
33
 
 
 
 
 
34
  $main = new UrlManagerPlugin(__FILE__);
35
 
36
  register_activation_hook(__FILE__, [$main, 'activate']);
11
  * Plugin Name: WooCommerce Permalink Manager
12
  * Plugin URI: https://premmerce.com/woocommerce-permalink-manager-remove-shop-product-product-category-url/
13
  * Description: Premmerce WooCommerce Permalink Manager allows you to change WooCommerce permalink and remove product and product_category slugs from the URL.
14
+ * Version: 1.1.2
15
  * Author: premmerce
16
  * Author URI: https://premmerce.com/
17
  * License: GPL-2.0+
20
  * Domain Path: /languages
21
  *
22
  * WC requires at least: 3.0.0
23
+ * WC tested up to: 3.2.5
24
  */
25
 
26
  // If this file is called directly, abort.
31
  call_user_func(function(){
32
  require_once plugin_dir_path(__FILE__) . 'vendor/autoload.php';
33
 
34
+ if(!get_option('premmerce_version')){
35
+ require_once plugin_dir_path(__FILE__) . '/freemius.php';
36
+ }
37
+
38
  $main = new UrlManagerPlugin(__FILE__);
39
 
40
  register_activation_hook(__FILE__, [$main, 'activate']);
readme.md DELETED
@@ -1,64 +0,0 @@
1
- [![SensioLabsInsight](https://insight.sensiolabs.com/projects/6d89fe39-4b85-4f79-ae6c-9e26a5787fe2/mini.png)](https://insight.sensiolabs.com/projects/6d89fe39-4b85-4f79-ae6c-9e26a5787fe2)
2
- # WooCommerce Permalink Manager
3
-
4
- Premmerce WooCommerce Permalink Manager allows you to change WooCommerce permalink and remove product and product_category slugs from the URL.
5
-
6
- ## Description
7
-
8
- This plugin allows you to configure URL generation strategy for your WooCommerce based store. This is one of the must-have plugins for online store SEO according to [WooCommerce SEO Audit](https://premmerce.com/complete-woocommerce-seo-guide-tips/)
9
-
10
- Full documentation is available here: [WooCommerce Permalink Manager](https://premmerce.com/woocommerce-permalink-manager-remove-shop-product-product-category-url/)
11
-
12
- ### Major features in “Premmerce url manager”
13
-
14
- * Removing base from product category URL
15
- * Removing hierarchical slugs from product category URL
16
- * Removing base from product URL
17
- * Using “Yoast SEO” permanent category url for products with multiple categories
18
-
19
- ### Compatibility with other Plugins
20
-
21
- * WooCommerce
22
- * Yoast SEO
23
- * WooCommerce Multilingual
24
-
25
- ### Installation
26
-
27
- 1. Unzip the downloaded zip file.
28
- 1. Upload the plugin folder into the “wp-content/plugins/” directory of your WordPress site.
29
- 1. Activate “WooCommerce URL manager” from Plugins page
30
-
31
- ## Frequently Asked Questions
32
-
33
- # Does the plugin affect the overall response rate of an online store?
34
- We have tested how the plugin works with the basic WooCommerce kit and the standard storefront theme and haven’t noticed any influence on the response rate of the store.
35
-
36
- # Does the plugin create link duplicates? Does it affect SEO?
37
- The plugin works perfectly with the Yoast SEO plugin installed. No link duplicates are generated. All similar URLs are automatically tagged as canonical in accordance with the search engines’ recommendations.
38
-
39
- ## Changelog
40
-
41
- ### 1.0
42
-
43
- Release Date: July 24, 2017
44
-
45
- * Initial release
46
-
47
- ### 1.0.1
48
-
49
- Release Date: Sep 26, 2017
50
-
51
- * Fixed a bug with wrong translation domain
52
- * Updated FileManager
53
-
54
- ## Translators
55
-
56
- ### Available Languages
57
-
58
- * English (Default)
59
- * Russian
60
- * Ukrainian
61
-
62
- ## Documentation
63
-
64
- Full documentation is available here: [WooCommerce permalink manager](https://premmerce.com/woocommerce-permalink-manager-remove-shop-product-product-category-url/)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: premmerce
3
  Tags: woocommerce url, remove product, remove product_category, woocommerce permalink, woocommerce, woocommerce seo
4
  Requires at least: 4.8
5
- Tested up to: 4.8.3
6
- Stable tag: 1.1
7
  Requires PHP: 5.6
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -16,7 +16,7 @@ This plugin allows you to configure URL generation strategy for your WooCommerce
16
 
17
  Full documentation is available here: [WooCommerce Permalink Manager](https://premmerce.com/woocommerce-permalink-manager-remove-shop-product-product-category-url/)
18
 
19
- = Major features in “Premmerce url manager” =
20
 
21
  * Removing base from product category URL
22
  * Removing hierarchical slugs from product category URL
@@ -33,7 +33,7 @@ Full documentation is available here: [WooCommerce Permalink Manager](https://pr
33
 
34
  1. Unzip the downloaded zip file.
35
  1. Upload the plugin folder into the “wp-content/plugins/” directory of your WordPress site.
36
- 1. Activate “WooCommerce URL manager” from Plugins page
37
 
38
  == Frequently Asked Questions ==
39
 
@@ -78,6 +78,23 @@ Release Date: Oct 31, 2017
78
  * Fixed bug with plain settings
79
  * Fixed bug with rewrite rules after plugin install
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  == Translators ==
82
 
83
  = Available Languages =
2
  Contributors: premmerce
3
  Tags: woocommerce url, remove product, remove product_category, woocommerce permalink, woocommerce, woocommerce seo
4
  Requires at least: 4.8
5
+ Tested up to: 4.9.1
6
+ Stable tag: 1.1.2
7
  Requires PHP: 5.6
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
16
 
17
  Full documentation is available here: [WooCommerce Permalink Manager](https://premmerce.com/woocommerce-permalink-manager-remove-shop-product-product-category-url/)
18
 
19
+ = Major features in “WooCommerce Permalink Manager” =
20
 
21
  * Removing base from product category URL
22
  * Removing hierarchical slugs from product category URL
33
 
34
  1. Unzip the downloaded zip file.
35
  1. Upload the plugin folder into the “wp-content/plugins/” directory of your WordPress site.
36
+ 1. Activate “WooCommerce Permalink Manager” from Plugins page
37
 
38
  == Frequently Asked Questions ==
39
 
78
  * Fixed bug with plain settings
79
  * Fixed bug with rewrite rules after plugin install
80
 
81
+ = 1.1.1 =
82
+
83
+ Release Date: Nov 20, 2017
84
+
85
+ * Added WordPress 4.9 support
86
+ * Added WooCommerce 3.2.4 support
87
+
88
+ = 1.1.2 =
89
+
90
+ Release Date: Dec 06, 2017
91
+
92
+ * Fixed product comments pagination
93
+ * Added Premmerce icon to menu
94
+ * Added Premmerce version check
95
+ * Added WordPress 4.9.1 support
96
+ * Added WooCommerce 3.2.5 support
97
+
98
  == Translators ==
99
 
100
  = Available Languages =
src/Admin/Admin.php CHANGED
@@ -58,15 +58,22 @@ class Admin{
58
 
59
  $premmerceMenuExists = isset($admin_page_hooks['premmerce']);
60
 
 
61
  if(!$premmerceMenuExists){
 
 
 
62
  add_menu_page(
63
  'Premmerce',
64
  'Premmerce',
65
  'manage_options',
66
- 'premmerce'
 
 
67
  );
68
  }
69
 
 
70
  add_submenu_page(
71
  'premmerce',
72
  'Permalink Manager',
58
 
59
  $premmerceMenuExists = isset($admin_page_hooks['premmerce']);
60
 
61
+
62
  if(!$premmerceMenuExists){
63
+ $svg = '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="20" height="16" style="fill:#82878c" viewBox="0 0 20 16"><g id="Rectangle_7"> <path d="M17.8,4l-0.5,1C15.8,7.3,14.4,8,14,8c0,0,0,0,0,0H8h0V4.3C8,4.1,8.1,4,8.3,4H17.8 M4,0H1C0.4,0,0,0.4,0,1c0,0.6,0.4,1,1,1 h1.7C2.9,2,3,2.1,3,2.3V12c0,0.6,0.4,1,1,1c0.6,0,1-0.4,1-1V1C5,0.4,4.6,0,4,0L4,0z M18,2H7.3C6.6,2,6,2.6,6,3.3V12 c0,0.6,0.4,1,1,1c0.6,0,1-0.4,1-1v-1.7C8,10.1,8.1,10,8.3,10H14c1.1,0,3.2-1.1,5-4l0.7-1.4C20,4,20,3.2,19.5,2.6 C19.1,2.2,18.6,2,18,2L18,2z M14,11h-4c-0.6,0-1,0.4-1,1c0,0.6,0.4,1,1,1h4c0.6,0,1-0.4,1-1C15,11.4,14.6,11,14,11L14,11z M14,14 c-0.6,0-1,0.4-1,1c0,0.6,0.4,1,1,1c0.6,0,1-0.4,1-1C15,14.4,14.6,14,14,14L14,14z M4,14c-0.6,0-1,0.4-1,1c0,0.6,0.4,1,1,1 c0.6,0,1-0.4,1-1C5,14.4,4.6,14,4,14L4,14z"/></g></svg>';
64
+ $svg = 'data:image/svg+xml;base64,' . base64_encode($svg);
65
+
66
  add_menu_page(
67
  'Premmerce',
68
  'Premmerce',
69
  'manage_options',
70
+ 'premmerce',
71
+ '',
72
+ $svg
73
  );
74
  }
75
 
76
+
77
  add_submenu_page(
78
  'premmerce',
79
  'Permalink Manager',
src/PermalinkListener.php CHANGED
@@ -8,275 +8,267 @@
8
  *
9
  * @package Premmerce\UrlManager
10
  */
11
- class PermalinkListener
12
- {
13
 
14
- /**
15
- * @var array
16
- */
17
- private $categories;
18
 
19
- /**
20
- * Add post_type_link, term_link, rewrite_rules_array filters
21
- */
22
- public function registerFilters()
23
- {
24
- add_filter('post_type_link', [$this, 'replaceProductLink'], 1, 2);
25
- add_filter('term_link', [$this, 'replaceCategoryLink'], 1, 3);
26
- add_filter('rewrite_rules_array', [$this, 'addRewriteRules'], 99);
27
- }
28
 
29
- /**
30
- * Replace category permalink according to settings
31
- *
32
- * @param string $link
33
- * @param object $term
34
- * @param string $taxonomy
35
- *
36
- * @return string
37
- */
38
- public function replaceCategoryLink($link, $term, $taxonomy)
39
- {
40
- if ($taxonomy !== UrlManagerPlugin::WOOCOMMERCE_CATEGORY) {
41
- return $link;
42
- }
43
 
44
- if (!get_option('permalink_structure')) {
45
- return $link;
46
- }
47
 
48
- $permalinkStructure = wc_get_permalink_structure();
49
 
50
- $category_base = trailingslashit($permalinkStructure['category_rewrite_slug']);
51
 
52
- $urlOptions = get_option(UrlManagerPlugin::OPTION_URL);
53
 
54
- $removeCategoryBase = isset($urlOptions['remove_category_base']);
55
- $removeParentSlugs = isset($urlOptions['remove_category_parent_slugs']);
56
 
57
- if ($removeCategoryBase) {
58
- $link = str_replace($category_base, '', $link);
59
- $category_base = '';
60
- }
61
 
62
- if ($removeParentSlugs) {
63
- $link = home_url(trailingslashit($category_base . $term->slug));
64
- }
65
 
66
 
67
- return $link;
68
- }
69
-
70
-
71
- /**
72
- * Replace product permalink according to settings
73
- *
74
- *
75
- * @param string $permalink
76
- * @param object $post
77
- *
78
- * @return string
79
- */
80
- public function replaceProductLink($permalink, $post)
81
- {
82
- if ($post->post_type !== UrlManagerPlugin::WOOCOMMERCE_PRODUCT) {
83
- return $permalink;
84
- }
85
-
86
-
87
- if (!get_option('permalink_structure')) {
88
- return $permalink;
89
- }
90
-
91
-
92
- $urlOptions = get_option(UrlManagerPlugin::OPTION_URL);
93
-
94
- $permalinkStructure = wc_get_permalink_structure();
95
-
96
- $product_base = $permalinkStructure['product_rewrite_slug'];
97
-
98
- $removeProductBase = isset($urlOptions['remove_product_base']);
99
-
100
- $product_base = explode('/', '/' . ltrim($product_base, '/'));
101
-
102
-
103
- $remove = array_filter($product_base, function ($el) use ($removeProductBase) {
104
- if ($el === '%product_cat%') {
105
- return false;
106
- }
107
- if (mb_strlen($el) > 0) {
108
- return $removeProductBase;
109
- }
110
 
111
- return true;
112
- });
113
 
114
- $remove = implode('/', $remove);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
 
116
- $link = str_replace($remove . '/', '/', $permalink);
117
 
118
- $link = $this->setPrimaryCategoryLink($post, $link, $permalinkStructure);
119
 
120
- return $link;
121
- }
122
 
123
- /**
124
- * Replace %product_cat% variable with primary category link if seo plugin is enabled
125
- *
126
- * @param $post
127
- * @param $link
128
- * @param $permalinkStructure
129
- *
130
- * @return string
131
- */
132
- protected function setPrimaryCategoryLink($post, $link, $permalinkStructure)
133
- {
134
- if ($this->checkSeoPlugin() && strpos($link, '%product_cat%') !== false) {
135
- $category = new \WPSEO_Primary_Term(UrlManagerPlugin::WOOCOMMERCE_CATEGORY, $post->ID);
136
 
137
- $primaryTerm = $category->get_primary_term();
138
 
139
- $term = get_term($primaryTerm);
140
 
141
- if ($term instanceof \WP_Error) {
142
- return $link;
143
- }
144
 
145
- $termLink = get_term_link($term);
 
 
 
 
 
 
146
 
147
- $search = [
148
- home_url(),
149
- trailingslashit($permalinkStructure['category_rewrite_slug']),
150
- ];
151
- $termLink = trim(str_replace($search, '', $termLink), '/');
152
 
153
- $link = str_replace('%product_cat%', $termLink, $link);
154
- }
155
 
156
- return $link;
157
- }
158
 
159
- /**
160
- * Check that seo plugin is enabled and available to use
161
- *
162
- * @return bool
163
- */
164
- protected function checkSeoPlugin()
165
- {
166
- if (!function_exists('is_plugin_active')) {
167
- include_once(ABSPATH . 'wp-admin/includes/plugin.php');
168
- }
169
 
170
- $active = function_exists('is_plugin_active')
171
- && defined('WPSEO_BASENAME')
172
- && is_plugin_active(WPSEO_BASENAME)
173
- && class_exists(\WPSEO_Primary_Term::class);
174
 
175
- return $active;
176
- }
 
 
 
 
 
 
 
 
 
 
177
 
178
- /**
179
- * Add rewrite rules for wp
180
- *
181
- * @param $rules
182
- *
183
- * @return array
184
- */
185
- public function addRewriteRules($rules)
186
- {
187
- $premmerceOptions = get_option(UrlManagerPlugin::OPTION_URL);
188
 
189
- if (!$premmerceOptions || get_option(UrlManagerPlugin::OPTION_DISABLED)) {
190
- return $rules;
191
- }
192
 
193
- global $wp_rewrite;
 
 
194
 
195
- wp_cache_flush();
196
 
197
- $removeCategoryBase = isset($premmerceOptions['remove_category_base']);
198
- $removeCategoryParentSlugs = isset($premmerceOptions['remove_category_parent_slugs']);
199
- $removeProductBase = isset($premmerceOptions['remove_product_base']);
200
- $permalinkStructure = wc_get_permalink_structure();
201
-
202
- $useParentCategorySlug = strpos($permalinkStructure['product_rewrite_slug'], '%product_cat%') !== false;
203
-
204
- $categoryBase = $removeCategoryBase? '' : $permalinkStructure['category_rewrite_slug'];
205
-
206
-
207
- $categoryRules = [];
208
- $productRules = [];
209
-
210
- $categories = $this->getCategories();
211
-
212
-
213
- foreach ($categories as $category) {
214
- $categorySlug = $category['slug'];
215
-
216
-
217
- if (!$removeCategoryParentSlugs) {
218
- $categorySlug = $this->getCategoryFullPath($category);
219
- }
220
-
221
- $categoryRules[ $categoryBase . $categorySlug . '/?$' ] = 'index.php?product_cat=' . $category['slug'];
222
- $categoryRules[ $categoryBase . $categorySlug . '/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$' ] = 'index.php?product_cat=' . $category['slug'] . '&feed=$matches[1]';
223
- $categoryRules[ $categoryBase . $categorySlug . '/' . $wp_rewrite->pagination_base . '/?([0-9]{1,})/?$' ] = 'index.php?product_cat=' . $category['slug'] . '&paged=$matches[1]';
224
-
225
- if ($removeProductBase && $useParentCategorySlug) {
226
- $productRules[ $categorySlug . '/([^/]+)/?$' ] = 'index.php?product=$matches[1]';
227
- }
228
- }
229
-
230
- $rules = empty($rules)? [] : $rules;
231
-
232
- return $categoryRules + $productRules + $rules;
233
- }
234
-
235
- /**
236
- * Returns categories array:
237
- * ['category id' => ['slug' => 'category slug', 'parent' => 'parent category id']]
238
- *
239
- * @return array
240
- */
241
- private function getCategories()
242
- {
243
- if (is_null($this->categories)) {
244
- $categories = get_categories([
245
- 'taxonomy' => UrlManagerPlugin::WOOCOMMERCE_CATEGORY,
246
- 'hide_empty' => false,
247
- ]);
248
-
249
- $slugs = [];
250
- foreach ($categories as $category) {
251
- $slugs[ $category->term_id ] = [
252
- 'parent' => $category->parent,
253
- 'slug' => $category->slug,
254
- ];
255
- }
256
-
257
- $this->categories = $slugs;
258
- }
259
-
260
- return $this->categories;
261
- }
262
-
263
- /**
264
- * Recursively builds category full path
265
- *
266
- * @param $category
267
- *
268
- * @return string
269
- */
270
- public function getCategoryFullPath($category)
271
- {
272
- $categories = $this->getCategories();
273
 
274
- $parent = $category['parent'];
 
275
 
276
- if ($parent > 0 && array_key_exists($parent, $categories)) {
277
- return $this->getCategoryFullPath($categories[ $parent ]) . '/' . $category['slug'];
278
- }
279
 
280
- return $category['slug'];
281
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
282
  }
8
  *
9
  * @package Premmerce\UrlManager
10
  */
11
+ class PermalinkListener{
 
12
 
13
+ /**
14
+ * @var array
15
+ */
16
+ private $categories;
17
 
18
+ /**
19
+ * Add post_type_link, term_link, rewrite_rules_array filters
20
+ */
21
+ public function registerFilters(){
22
+ add_filter('post_type_link', [$this, 'replaceProductLink'], 1, 2);
23
+ add_filter('term_link', [$this, 'replaceCategoryLink'], 1, 3);
24
+ add_filter('rewrite_rules_array', [$this, 'addRewriteRules'], 99);
25
+ }
 
26
 
27
+ /**
28
+ * Replace category permalink according to settings
29
+ *
30
+ * @param string $link
31
+ * @param object $term
32
+ * @param string $taxonomy
33
+ *
34
+ * @return string
35
+ */
36
+ public function replaceCategoryLink($link, $term, $taxonomy){
37
+ if($taxonomy !== UrlManagerPlugin::WOOCOMMERCE_CATEGORY){
38
+ return $link;
39
+ }
 
40
 
41
+ if(!get_option('permalink_structure')){
42
+ return $link;
43
+ }
44
 
45
+ $permalinkStructure = wc_get_permalink_structure();
46
 
47
+ $category_base = trailingslashit($permalinkStructure['category_rewrite_slug']);
48
 
49
+ $urlOptions = get_option(UrlManagerPlugin::OPTION_URL);
50
 
51
+ $removeCategoryBase = isset($urlOptions['remove_category_base']);
52
+ $removeParentSlugs = isset($urlOptions['remove_category_parent_slugs']);
53
 
54
+ if($removeCategoryBase){
55
+ $link = str_replace($category_base, '', $link);
56
+ $category_base = '';
57
+ }
58
 
59
+ if($removeParentSlugs){
60
+ $link = home_url(trailingslashit($category_base . $term->slug));
61
+ }
62
 
63
 
64
+ return $link;
65
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
 
 
 
67
 
68
+ /**
69
+ * Replace product permalink according to settings
70
+ *
71
+ *
72
+ * @param string $permalink
73
+ * @param object $post
74
+ *
75
+ * @return string
76
+ */
77
+ public function replaceProductLink($permalink, $post){
78
+ if($post->post_type !== UrlManagerPlugin::WOOCOMMERCE_PRODUCT){
79
+ return $permalink;
80
+ }
81
+
82
+
83
+ if(!get_option('permalink_structure')){
84
+ return $permalink;
85
+ }
86
 
 
87
 
88
+ $urlOptions = get_option(UrlManagerPlugin::OPTION_URL);
89
 
90
+ $permalinkStructure = wc_get_permalink_structure();
 
91
 
92
+ $product_base = $permalinkStructure['product_rewrite_slug'];
 
 
 
 
 
 
 
 
 
 
 
 
93
 
94
+ $removeProductBase = isset($urlOptions['remove_product_base']);
95
 
96
+ $product_base = explode('/', '/' . ltrim($product_base, '/'));
97
 
 
 
 
98
 
99
+ $remove = array_filter($product_base, function($el) use ($removeProductBase){
100
+ if($el === '%product_cat%'){
101
+ return false;
102
+ }
103
+ if(mb_strlen($el) > 0){
104
+ return $removeProductBase;
105
+ }
106
 
107
+ return true;
108
+ });
 
 
 
109
 
110
+ $remove = implode('/', $remove);
 
111
 
112
+ $link = str_replace($remove . '/', '/', $permalink);
 
113
 
114
+ $link = $this->setPrimaryCategoryLink($post, $link, $permalinkStructure);
 
 
 
 
 
 
 
 
 
115
 
116
+ return $link;
117
+ }
 
 
118
 
119
+ /**
120
+ * Replace %product_cat% variable with primary category link if seo plugin is enabled
121
+ *
122
+ * @param $post
123
+ * @param $link
124
+ * @param $permalinkStructure
125
+ *
126
+ * @return string
127
+ */
128
+ protected function setPrimaryCategoryLink($post, $link, $permalinkStructure){
129
+ if($this->checkSeoPlugin() && strpos($link, '%product_cat%') !== false){
130
+ $category = new \WPSEO_Primary_Term(UrlManagerPlugin::WOOCOMMERCE_CATEGORY, $post->ID);
131
 
132
+ $primaryTerm = $category->get_primary_term();
 
 
 
 
 
 
 
 
 
133
 
134
+ $term = get_term($primaryTerm);
 
 
135
 
136
+ if($term instanceof \WP_Error){
137
+ return $link;
138
+ }
139
 
140
+ $termLink = get_term_link($term);
141
 
142
+ $search = [
143
+ home_url(),
144
+ trailingslashit($permalinkStructure['category_rewrite_slug']),
145
+ ];
146
+ $termLink = trim(str_replace($search, '', $termLink), '/');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
147
 
148
+ $link = str_replace('%product_cat%', $termLink, $link);
149
+ }
150
 
151
+ return $link;
152
+ }
 
153
 
154
+ /**
155
+ * Check that seo plugin is enabled and available to use
156
+ *
157
+ * @return bool
158
+ */
159
+ protected function checkSeoPlugin(){
160
+ if(!function_exists('is_plugin_active')){
161
+ include_once(ABSPATH . 'wp-admin/includes/plugin.php');
162
+ }
163
+
164
+ $active = function_exists('is_plugin_active')
165
+ && defined('WPSEO_BASENAME')
166
+ && is_plugin_active(WPSEO_BASENAME)
167
+ && class_exists(\WPSEO_Primary_Term::class);
168
+
169
+ return $active;
170
+ }
171
+
172
+ /**
173
+ * Add rewrite rules for wp
174
+ *
175
+ * @param $rules
176
+ *
177
+ * @return array
178
+ */
179
+ public function addRewriteRules($rules){
180
+ $premmerceOptions = get_option(UrlManagerPlugin::OPTION_URL);
181
+
182
+ if(!$premmerceOptions || get_option(UrlManagerPlugin::OPTION_DISABLED)){
183
+ return $rules;
184
+ }
185
+
186
+ global $wp_rewrite;
187
+
188
+ wp_cache_flush();
189
+
190
+ $removeCategoryBase = isset($premmerceOptions['remove_category_base']);
191
+ $removeCategoryParentSlugs = isset($premmerceOptions['remove_category_parent_slugs']);
192
+ $removeProductBase = isset($premmerceOptions['remove_product_base']);
193
+ $permalinkStructure = wc_get_permalink_structure();
194
+
195
+ $useParentCategorySlug = strpos($permalinkStructure['product_rewrite_slug'], '%product_cat%') !== false;
196
+
197
+ $categoryBase = $removeCategoryBase? '' : $permalinkStructure['category_rewrite_slug'];
198
+
199
+
200
+ $categoryRules = [];
201
+ $productRules = [];
202
+
203
+ $categories = $this->getCategories();
204
+
205
+
206
+ foreach($categories as $category){
207
+ $categorySlug = $category['slug'];
208
+
209
+
210
+ if(!$removeCategoryParentSlugs){
211
+ $categorySlug = $this->getCategoryFullPath($category);
212
+ }
213
+
214
+ $categoryRules[ $categoryBase . $categorySlug . '/?$' ] = 'index.php?product_cat=' . $category['slug'];
215
+ $categoryRules[ $categoryBase . $categorySlug . '/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$' ] = 'index.php?product_cat=' . $category['slug'] . '&feed=$matches[1]';
216
+ $categoryRules[ $categoryBase . $categorySlug . '/' . $wp_rewrite->pagination_base . '/?([0-9]{1,})/?$' ] = 'index.php?product_cat=' . $category['slug'] . '&paged=$matches[1]';
217
+
218
+ if($removeProductBase && $useParentCategorySlug){
219
+ $productRules[ $categorySlug . '/([^/]+)/?$' ] = 'index.php?product=$matches[1]';
220
+ $productRules[ $categorySlug . '/([^/]+)/' . $wp_rewrite->comments_pagination_base . '-([0-9]{1,})/?$' ] = 'index.php?product=$matches[1]&cpage=$matches[2]';
221
+ }
222
+ }
223
+
224
+ $rules = empty($rules)? [] : $rules;
225
+
226
+ return $categoryRules + $productRules + $rules;
227
+ }
228
+
229
+ /**
230
+ * Returns categories array:
231
+ * ['category id' => ['slug' => 'category slug', 'parent' => 'parent category id']]
232
+ *
233
+ * @return array
234
+ */
235
+ private function getCategories(){
236
+ if(is_null($this->categories)){
237
+ $categories = get_categories([
238
+ 'taxonomy' => UrlManagerPlugin::WOOCOMMERCE_CATEGORY,
239
+ 'hide_empty' => false,
240
+ ]);
241
+
242
+ $slugs = [];
243
+ foreach($categories as $category){
244
+ $slugs[ $category->term_id ] = [
245
+ 'parent' => $category->parent,
246
+ 'slug' => $category->slug,
247
+ ];
248
+ }
249
+
250
+ $this->categories = $slugs;
251
+ }
252
+
253
+ return $this->categories;
254
+ }
255
+
256
+ /**
257
+ * Recursively builds category full path
258
+ *
259
+ * @param $category
260
+ *
261
+ * @return string
262
+ */
263
+ public function getCategoryFullPath($category){
264
+ $categories = $this->getCategories();
265
+
266
+ $parent = $category['parent'];
267
+
268
+ if($parent > 0 && array_key_exists($parent, $categories)){
269
+ return $this->getCategoryFullPath($categories[ $parent ]) . '/' . $category['slug'];
270
+ }
271
+
272
+ return $category['slug'];
273
+ }
274
  }
vendor/composer/autoload_classmap.php CHANGED
@@ -7,7 +7,6 @@ $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
  'Premmerce\\UrlManager\\Admin\\Admin' => $baseDir . '/src/Admin/Admin.php',
10
- 'Premmerce\\UrlManager\\FileManager' => $baseDir . '/src/FileManager.php',
11
  'Premmerce\\UrlManager\\Frontend\\Frontend' => $baseDir . '/src/Frontend/Frontend.php',
12
  'Premmerce\\UrlManager\\PermalinkListener' => $baseDir . '/src/PermalinkListener.php',
13
  'Premmerce\\UrlManager\\UrlManagerPlugin' => $baseDir . '/src/UrlManagerPlugin.php',
7
 
8
  return array(
9
  'Premmerce\\UrlManager\\Admin\\Admin' => $baseDir . '/src/Admin/Admin.php',
 
10
  'Premmerce\\UrlManager\\Frontend\\Frontend' => $baseDir . '/src/Frontend/Frontend.php',
11
  'Premmerce\\UrlManager\\PermalinkListener' => $baseDir . '/src/PermalinkListener.php',
12
  'Premmerce\\UrlManager\\UrlManagerPlugin' => $baseDir . '/src/UrlManagerPlugin.php',
vendor/composer/autoload_files.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
-
3
- // autoload_files.php @generated by Composer
4
-
5
- $vendorDir = dirname(dirname(__FILE__));
6
- $baseDir = dirname($vendorDir);
7
-
8
- return array(
9
- '1cdfc4c15453f89231fd7026d7f295db' => $baseDir . '/freemius.php',
10
- );
 
 
 
 
 
 
 
 
 
 
vendor/composer/autoload_psr4.php CHANGED
@@ -6,5 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
- 'Premmerce\\UrlManager\\' => array($baseDir . '/sdk', $baseDir . '/src'),
 
10
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
+ 'Premmerce\\UrlManager\\WordpressSDK\\' => array($baseDir . '/sdk'),
10
+ 'Premmerce\\UrlManager\\' => array($baseDir . '/src'),
11
  );
vendor/composer/autoload_real.php CHANGED
@@ -47,24 +47,6 @@ class ComposerAutoloaderInitae9fc0c0f8fb8c17ea09a1107590889c
47
 
48
  $loader->register(true);
49
 
50
- if ($useStaticLoader) {
51
- $includeFiles = Composer\Autoload\ComposerStaticInitae9fc0c0f8fb8c17ea09a1107590889c::$files;
52
- } else {
53
- $includeFiles = require __DIR__ . '/autoload_files.php';
54
- }
55
- foreach ($includeFiles as $fileIdentifier => $file) {
56
- composerRequireae9fc0c0f8fb8c17ea09a1107590889c($fileIdentifier, $file);
57
- }
58
-
59
  return $loader;
60
  }
61
  }
62
-
63
- function composerRequireae9fc0c0f8fb8c17ea09a1107590889c($fileIdentifier, $file)
64
- {
65
- if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
66
- require $file;
67
-
68
- $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
69
- }
70
- }
47
 
48
  $loader->register(true);
49
 
 
 
 
 
 
 
 
 
 
50
  return $loader;
51
  }
52
  }
 
 
 
 
 
 
 
 
 
vendor/composer/autoload_static.php CHANGED
@@ -6,28 +6,27 @@ namespace Composer\Autoload;
6
 
7
  class ComposerStaticInitae9fc0c0f8fb8c17ea09a1107590889c
8
  {
9
- public static $files = array (
10
- '1cdfc4c15453f89231fd7026d7f295db' => __DIR__ . '/../..' . '/freemius.php',
11
- );
12
-
13
  public static $prefixLengthsPsr4 = array (
14
  'P' =>
15
  array (
 
16
  'Premmerce\\UrlManager\\' => 21,
17
  ),
18
  );
19
 
20
  public static $prefixDirsPsr4 = array (
21
- 'Premmerce\\UrlManager\\' =>
22
  array (
23
  0 => __DIR__ . '/../..' . '/sdk',
24
- 1 => __DIR__ . '/../..' . '/src',
 
 
 
25
  ),
26
  );
27
 
28
  public static $classMap = array (
29
  'Premmerce\\UrlManager\\Admin\\Admin' => __DIR__ . '/../..' . '/src/Admin/Admin.php',
30
- 'Premmerce\\UrlManager\\FileManager' => __DIR__ . '/../..' . '/src/FileManager.php',
31
  'Premmerce\\UrlManager\\Frontend\\Frontend' => __DIR__ . '/../..' . '/src/Frontend/Frontend.php',
32
  'Premmerce\\UrlManager\\PermalinkListener' => __DIR__ . '/../..' . '/src/PermalinkListener.php',
33
  'Premmerce\\UrlManager\\UrlManagerPlugin' => __DIR__ . '/../..' . '/src/UrlManagerPlugin.php',
6
 
7
  class ComposerStaticInitae9fc0c0f8fb8c17ea09a1107590889c
8
  {
 
 
 
 
9
  public static $prefixLengthsPsr4 = array (
10
  'P' =>
11
  array (
12
+ 'Premmerce\\UrlManager\\WordpressSDK\\' => 34,
13
  'Premmerce\\UrlManager\\' => 21,
14
  ),
15
  );
16
 
17
  public static $prefixDirsPsr4 = array (
18
+ 'Premmerce\\UrlManager\\WordpressSDK\\' =>
19
  array (
20
  0 => __DIR__ . '/../..' . '/sdk',
21
+ ),
22
+ 'Premmerce\\UrlManager\\' =>
23
+ array (
24
+ 0 => __DIR__ . '/../..' . '/src',
25
  ),
26
  );
27
 
28
  public static $classMap = array (
29
  'Premmerce\\UrlManager\\Admin\\Admin' => __DIR__ . '/../..' . '/src/Admin/Admin.php',
 
30
  'Premmerce\\UrlManager\\Frontend\\Frontend' => __DIR__ . '/../..' . '/src/Frontend/Frontend.php',
31
  'Premmerce\\UrlManager\\PermalinkListener' => __DIR__ . '/../..' . '/src/PermalinkListener.php',
32
  'Premmerce\\UrlManager\\UrlManagerPlugin' => __DIR__ . '/../..' . '/src/UrlManagerPlugin.php',