diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..27378f83a --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +output/ +assets/img/icon.* + +pootle-page-builder.png +rating-widget.jpg +hello-dolly-pro.png +woocommerce-fiscalita-italiana.png +assets/img/content-aware-sidebars.png +assets/img/custom-post-type-ui.png +.idea +nextgen-gallery.png +node_modules +languages/_freemius-en.mo +languages/_freemius-en.po +foobox-image-lightbox.png +transifex-config.json diff --git a/assets/css/admin/dialog-boxes.css b/assets/css/admin/dialog-boxes.css index e09054d16..3b34f8aa3 100644 --- a/assets/css/admin/dialog-boxes.css +++ b/assets/css/admin/dialog-boxes.css @@ -1,2 +1,2 @@ -.fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-header{border-bottom:#eeeeee solid 1px;background:#fbfbfb;padding:15px 20px;position:relative;margin-bottom:-10px}.fs-modal .fs-modal-header h4{margin:0;padding:0;text-transform:uppercase;font-size:1.2em;font-weight:bold;color:#cacaca;text-shadow:1px 1px 1px #fff;letter-spacing:0.6px;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{position:absolute;right:10px;top:12px;cursor:pointer;color:#bbb;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;padding:3px;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{color:#fff;background:#aaa}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px;line-height:1.5em}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eeeeee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel>.notice.inline{margin:0;display:none}.fs-modal .fs-modal-panel:not(.active){display:none}.rtl .fs-modal .fs-modal-header .fs-close{right:auto;left:20px}body.has-fs-modal{overflow:hidden}.fs-modal.fs-modal-deactivation-feedback .reason-input,.fs-modal.fs-modal-deactivation-feedback .internal-message{margin:3px 0 3px 22px}.fs-modal.fs-modal-deactivation-feedback .reason-input input,.fs-modal.fs-modal-deactivation-feedback .reason-input textarea,.fs-modal.fs-modal-deactivation-feedback .internal-message input,.fs-modal.fs-modal-deactivation-feedback .internal-message textarea{width:100%}.fs-modal.fs-modal-deactivation-feedback li.reason.has-internal-message .internal-message{border:1px solid #ccc;padding:7px;display:none}@media (max-width: 650px){.fs-modal.fs-modal-deactivation-feedback li.reason li.reason{margin-bottom:10px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .reason-input,.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .internal-message{margin-left:29px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label{display:table}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label{float:left}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel{margin-top:0 !important}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel h3{margin-top:0;line-height:1.5em}#the-list .deactivate>.fs-slug{display:none}.fs-modal.fs-modal-license-activation .fs-modal-body input.license_key{width:100%}.fs-modal.fs-modal-license-key-resend .email-address-container{overflow:hidden;padding-right:2px}.fs-modal.fs-modal-license-key-resend.fs-freemium input.email-address{width:300px}.fs-modal.fs-modal-license-key-resend.fs-freemium label{display:block;margin-bottom:10px}.fs-modal.fs-modal-license-key-resend.fs-premium input.email-address{width:100%}.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{float:right;margin-left:7px}@media (max-width: 650px){.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{margin-top:2px}} -.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-right:7px;margin-left:0}a.show-license-resend-modal{margin-top:4px;display:inline-block} +.fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal.fs-success .fs-modal-header{border-bottom-color:#46b450}.fs-modal.fs-success .fs-modal-body{background-color:#f7fff7}.fs-modal.fs-warn .fs-modal-header{border-bottom-color:#ffb900}.fs-modal.fs-warn .fs-modal-body{background-color:#fff8e5}.fs-modal.fs-error .fs-modal-header{border-bottom-color:#dc3232}.fs-modal.fs-error .fs-modal-body{background-color:#ffeaea}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-header{border-bottom:#eeeeee solid 1px;background:#fbfbfb;padding:15px 20px;position:relative;margin-bottom:-10px}.fs-modal .fs-modal-header h4{margin:0;padding:0;text-transform:uppercase;font-size:1.2em;font-weight:bold;color:#cacaca;text-shadow:1px 1px 1px #fff;letter-spacing:0.6px;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{position:absolute;right:10px;top:12px;cursor:pointer;color:#bbb;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;padding:3px;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{color:#fff;background:#aaa}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px;line-height:1.5em}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eeeeee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel>.notice.inline{margin:0;display:none}.fs-modal .fs-modal-panel:not(.active){display:none}.rtl .fs-modal .fs-modal-header .fs-close{right:auto;left:20px}body.has-fs-modal{overflow:hidden}.fs-modal.fs-modal-deactivation-feedback .reason-input,.fs-modal.fs-modal-deactivation-feedback .internal-message{margin:3px 0 3px 22px}.fs-modal.fs-modal-deactivation-feedback .reason-input input,.fs-modal.fs-modal-deactivation-feedback .reason-input textarea,.fs-modal.fs-modal-deactivation-feedback .internal-message input,.fs-modal.fs-modal-deactivation-feedback .internal-message textarea{width:100%}.fs-modal.fs-modal-deactivation-feedback li.reason.has-internal-message .internal-message{border:1px solid #ccc;padding:7px;display:none}@media (max-width: 650px){.fs-modal.fs-modal-deactivation-feedback li.reason li.reason{margin-bottom:10px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .reason-input,.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .internal-message{margin-left:29px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label{display:table}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label{float:left}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel{margin-top:0 !important}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel h3{margin-top:0;line-height:1.5em}#the-list .deactivate>.fs-slug{display:none}.fs-modal.fs-modal-license-activation .fs-modal-body input.license_key{width:100%}.fs-modal.fs-modal-license-key-resend .email-address-container{overflow:hidden;padding-right:2px}.fs-modal.fs-modal-license-key-resend.fs-freemium input.email-address{width:300px}.fs-modal.fs-modal-license-key-resend.fs-freemium label{display:block;margin-bottom:10px}.fs-modal.fs-modal-license-key-resend.fs-premium input.email-address{width:100%}.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{float:right;margin-left:7px}@media (max-width: 650px){.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{margin-top:2px}} +.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-right:7px;margin-left:0}a.show-license-resend-modal{margin-top:4px;display:inline-block}.fs-ajax-loader{position:relative;width:170px;height:20px;margin:auto}.fs-ajax-loader .fs-ajax-loader-bar{position:absolute;top:0;background-color:#0074a3;width:20px;height:20px;-webkit-animation-name:bounce_ajaxLoader;-moz-animation-name:bounce_ajaxLoader;-ms-animation-name:bounce_ajaxLoader;-o-animation-name:bounce_ajaxLoader;animation-name:bounce_ajaxLoader;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s;animation-duration:1.5s;animation-iteration-count:infinite;-o-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;-webkit-animation-direction:normal;-moz-animation-direction:normal;-ms-animation-direction:normal;-o-animation-direction:normal;animation-direction:normal;-moz-transform:0.3;-o-transform:0.3;-ms-transform:0.3;-webkit-transform:0.3;transform:0.3}.fs-ajax-loader .fs-ajax-loader-bar-1{left:0px;animation-delay:0.6s;-o-animation-delay:0.6s;-ms-animation-delay:0.6s;-webkit-animation-delay:0.6s;-moz-animation-delay:0.6s}.fs-ajax-loader .fs-ajax-loader-bar-2{left:19px;animation-delay:0.75s;-o-animation-delay:0.75s;-ms-animation-delay:0.75s;-webkit-animation-delay:0.75s;-moz-animation-delay:0.75s}.fs-ajax-loader .fs-ajax-loader-bar-3{left:38px;animation-delay:0.9s;-o-animation-delay:0.9s;-ms-animation-delay:0.9s;-webkit-animation-delay:0.9s;-moz-animation-delay:0.9s}.fs-ajax-loader .fs-ajax-loader-bar-4{left:57px;animation-delay:1.05s;-o-animation-delay:1.05s;-ms-animation-delay:1.05s;-webkit-animation-delay:1.05s;-moz-animation-delay:1.05s}.fs-ajax-loader .fs-ajax-loader-bar-5{left:76px;animation-delay:1.2s;-o-animation-delay:1.2s;-ms-animation-delay:1.2s;-webkit-animation-delay:1.2s;-moz-animation-delay:1.2s}.fs-ajax-loader .fs-ajax-loader-bar-6{left:95px;animation-delay:1.35s;-o-animation-delay:1.35s;-ms-animation-delay:1.35s;-webkit-animation-delay:1.35s;-moz-animation-delay:1.35s}.fs-ajax-loader .fs-ajax-loader-bar-7{left:114px;animation-delay:1.5s;-o-animation-delay:1.5s;-ms-animation-delay:1.5s;-webkit-animation-delay:1.5s;-moz-animation-delay:1.5s}.fs-ajax-loader .fs-ajax-loader-bar-8{left:133px;animation-delay:1.65s;-o-animation-delay:1.65s;-ms-animation-delay:1.65s;-webkit-animation-delay:1.65s;-moz-animation-delay:1.65s}@-moz-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-ms-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-o-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-webkit-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}.fs-modal-auto-install #request-filesystem-credentials-form h2,.fs-modal-auto-install #request-filesystem-credentials-form .request-filesystem-credentials-action-buttons{display:none}.fs-modal-auto-install #request-filesystem-credentials-form input[type=password],.fs-modal-auto-install #request-filesystem-credentials-form input[type=email],.fs-modal-auto-install #request-filesystem-credentials-form input[type=text]{-webkit-appearance:none;padding:10px 10px 5px 10px;width:300px;max-width:100%}.fs-modal-auto-install #request-filesystem-credentials-form>div,.fs-modal-auto-install #request-filesystem-credentials-form label,.fs-modal-auto-install #request-filesystem-credentials-form fieldset{width:300px;max-width:100%;margin:0 auto;display:block} diff --git a/assets/scss/_colors.scss b/assets/scss/_colors.scss index d2fc52f45..4bf398656 100644 --- a/assets/scss/_colors.scss +++ b/assets/scss/_colors.scss @@ -20,9 +20,6 @@ $fs-logo-blue-color: #29abe1; $fs-logo-green-color: #71ae00; $fs-logo-magenta-color: #d3135a; -$fs-notice-promotion-border-color: #00a0d2; -$fs-notice-promotion-bkg: #f2fcff; - // WordPress colors. $page-header-bkg: #333; $page-header-color: $fms-white; @@ -30,6 +27,16 @@ $text-dark-color: #333; $text-light-color: #666; $text-lightest-color: #999; +// Notices. +$wp-notice-success-color: #f7fff7; +$wp-notice-success-dark-color: #46b450; +$wp-notice-error-color: #ffeaea; +$wp-notice-error-dark-color: #dc3232; +$wp-notice-warn-color: #fff8e5; +$wp-notice-warn-dark-color: #ffb900; +$fs-notice-promotion-border-color: #00a0d2; +$fs-notice-promotion-bkg: #f2fcff; + // WP Buttons. $button-primary-bkg: #6bc406; $button-primary-color: $fms-white; diff --git a/assets/scss/_mixins.scss b/assets/scss/_mixins.scss index 7048b1692..dc453dbb6 100644 --- a/assets/scss/_mixins.scss +++ b/assets/scss/_mixins.scss @@ -78,13 +78,13 @@ $useIEFilters: 0; } // requires sass 3.2 -//@mixin keyframes { -// @-moz-keyframes { @content; } -// @-ms-keyframes { @content; } -// @-o-keyframes { @content; } -// @-webkit-keyframes { @content; } -// @keyframes { @content; } -//} +@mixin keyframes($name){ + @-moz-keyframes #{$name} { @content; } + @-ms-keyframes #{$name} { @content; } + @-o-keyframes #{$name} { @content; } + @-webkit-keyframes #{$name} { @content; } + @keyframes #{$name} { @content; } +} @mixin linear-gradient($from, $to, $ie: $useIEFilters) { @if $ie != 1 { background-color: $to; } @@ -192,6 +192,62 @@ $useIEFilters: 0; transition: $value; } +@mixin animation($str) { + -webkit-animation: #{$str}; + -moz-animation: #{$str}; + -ms-animation: #{$str}; + -o-animation: #{$str}; + animation: #{$str}; +} + +@mixin animation-name($str) { + -webkit-animation-name: #{$str}; + -moz-animation-name: #{$str}; + -ms-animation-name: #{$str}; + -o-animation-name: #{$str}; + animation-name: #{$str}; +} + +@mixin animation-duration($str) { + -webkit-animation-duration: #{$str}; + -moz-animation-duration: #{$str}; + -ms-animation-duration: #{$str}; + -o-animation-duration: #{$str}; + animation-duration: #{$str}; +} + +@mixin animation-direction($str) { + -webkit-animation-direction: #{$str}; + -moz-animation-direction: #{$str}; + -ms-animation-direction: #{$str}; + -o-animation-direction: #{$str}; + animation-direction: #{$str}; +} + +@mixin animation-delay($str) { + animation-delay:#{$str}; + -o-animation-delay:#{$str}; + -ms-animation-delay:#{$str}; + -webkit-animation-delay:#{$str}; + -moz-animation-delay:#{$str}; +} + +@mixin animation-iteration-count($str) { + animation-iteration-count:#{$str}; + -o-animation-iteration-count:#{$str}; + -ms-animation-iteration-count:#{$str}; + -webkit-animation-iteration-count:#{$str}; + -moz-animation-iteration-count:#{$str}; +} + +@mixin animation-timing-function($str) { + -webkit-animation-timing-function: #{$str}; + -moz-animation-timing-function: #{$str}; + -ms-animation-timing-function: #{$str}; + -o-animation-timing-function: #{$str}; + animation-timing-function: #{$str}; +} + // ==== /CSS3 SASS MIXINS ==== @mixin opacity($opacity) { diff --git a/assets/scss/admin/_ajax-loader.scss b/assets/scss/admin/_ajax-loader.scss new file mode 100644 index 000000000..f748beba6 --- /dev/null +++ b/assets/scss/admin/_ajax-loader.scss @@ -0,0 +1,49 @@ +$color: $wp-selected-color; +$bkg-color: #fff; +$size: 20; + +.fs-ajax-loader +{ + position: relative; + width: #{8*$size + 10}px; + height: #{$size}px; + margin: auto; + + .fs-ajax-loader-bar + { + position: absolute; + top: 0; + background-color: $color; + width: #{$size}px; + height: #{$size}px; + @include animation-name(bounce_ajaxLoader); + @include animation-duration(1.5s); + @include animation-iteration-count(infinite); + @include animation-direction(normal); + @include transform(.3); + } + + @for $i from 0 through 7 + { + .fs-ajax-loader-bar-#{$i + 1} + { + left: #{$i*($size - 1)}px; + @include animation-delay(#{0.6 + $i*0.15}s); + } + } +} + +@include keyframes(bounce_ajaxLoader) +{ + 0% + { + @include transform(scale(1)); + background-color: $color; + } + + 100% + { + @include transform(scale(.3)); + background-color: $bkg-color; + } +} \ No newline at end of file diff --git a/assets/scss/admin/_auto-install.scss b/assets/scss/admin/_auto-install.scss new file mode 100644 index 000000000..b1cac8eb4 --- /dev/null +++ b/assets/scss/admin/_auto-install.scss @@ -0,0 +1,33 @@ +.fs-modal-auto-install +{ + $max-width: 300px; + + #request-filesystem-credentials-form + { + h2, + .request-filesystem-credentials-action-buttons + { + display: none; + } + + input[type=password], + input[type=email], + input[type=text] + { + -webkit-appearance: none; + padding: 10px 10px 5px 10px; + width: $max-width; + max-width: 100%; + } + + > div, + label, + fieldset + { + width: $max-width; + max-width: 100%; + margin: 0 auto; + display: block; + } + } +} \ No newline at end of file diff --git a/assets/scss/admin/_modal-common.scss b/assets/scss/admin/_modal-common.scss index e4260ce9d..eb39e72ae 100644 --- a/assets/scss/admin/_modal-common.scss +++ b/assets/scss/admin/_modal-common.scss @@ -46,6 +46,37 @@ } } + &.fs-success { + .fs-modal-header { + border-bottom-color: $wp-notice-success-dark-color; + } + + .fs-modal-body { + background-color: $wp-notice-success-color; + } + } + + &.fs-warn { + .fs-modal-header { + border-bottom-color: $wp-notice-warn-dark-color; + } + + .fs-modal-body { + background-color: $wp-notice-warn-color; + } + } + + &.fs-error { + .fs-modal-header { + border-bottom-color: $wp-notice-error-dark-color; + } + + .fs-modal-body { + background-color: $wp-notice-error-color; + } + } + + .fs-modal-body, .fs-modal-footer { border: 0; diff --git a/assets/scss/admin/dialog-boxes.scss b/assets/scss/admin/dialog-boxes.scss index 8c6ac684f..43cf2ae8e 100644 --- a/assets/scss/admin/dialog-boxes.scss +++ b/assets/scss/admin/dialog-boxes.scss @@ -2,4 +2,6 @@ @import "modal-common"; @import "deactivation-feedback"; @import "license-activation"; -@import "license-key-resend"; \ No newline at end of file +@import "license-key-resend"; +@import "ajax-loader"; +@import "auto-install"; \ No newline at end of file diff --git a/config.php b/config.php index 258340cd1..627bf6873 100644 --- a/config.php +++ b/config.php @@ -249,6 +249,14 @@ } define( 'WP_FS__OPTIONS_OPTION_NAME', WP_FS___OPTION_PREFIX . 'options' ); + /** + * Module types + * + * @since 1.2.2 + */ + define( 'WP_FS__MODULE_TYPE_PLUGIN', 'plugin' ); + define( 'WP_FS__MODULE_TYPE_THEME', 'theme' ); + /** * Billing Frequencies */ diff --git a/gulpfile.js b/gulpfile.js index 739ceefa5..c3e6c2e3b 100755 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,20 +1,36 @@ var gulp = require('gulp'); +var path = require('path'); +var filesystem = require('fs'); var wpPot = require('gulp-wp-pot'); var gettext = require('gulp-gettext'); var sort = require('gulp-sort'); var pofill = require('gulp-pofill'); var rename = require('gulp-rename'); +var clean = require('gulp-clean'); -gulp.task('default', function () { - // Create POT out of i18n.php. +var languagesFolder = './languages/'; + +var options = require('./transifex-config.json') + +function getFolders(dir) { + return filesystem.readdirSync(dir) + .filter(function (file) { + return filesystem.statSync(path.join(dir, file)).isDirectory(); + }); +} + +var transifex = require('gulp-transifex').createClient(options); + +// Create POT out of i18n.php. +gulp.task('prepare-source', function () { gulp.src('includes/i18n.php') .pipe(sort()) - .pipe(wpPot( { - destFile:'freemius.pot', - package: 'freemius', - bugReport: 'https://github.com/Freemius/wordpress-sdk/issues', - lastTranslator: 'Vova Feldman ', - team: 'Freemius Team ', + .pipe(wpPot({ + destFile : 'freemius.pot', + package : 'freemius', + bugReport : 'https://github.com/Freemius/wordpress-sdk/issues', + lastTranslator : 'Vova Feldman ', + team : 'Freemius Team ', gettextFunctions: [ {name: '_fs_text'}, {name: '_fs_echo'}, @@ -31,14 +47,14 @@ gulp.task('default', function () { {name: '_fs_nx', plural: 2, context: 4}, {name: '_fs_nx_noop', plural: 2, context: 3} ] - } )) - .pipe(gulp.dest('languages/freemius.pot')); + })) + .pipe(gulp.dest(languagesFolder + 'freemius.pot')); // Create English PO out of the POT. - gulp.src('languages/freemius.pot') + return gulp.src(languagesFolder + 'freemius.pot') .pipe(pofill({ - items: function(item) { - // If msgstr is empty, use identity translation + items: function (item) { + // If msgstr is empty, use identity translation if (!item.msgstr.length) { item.msgstr = ['']; } @@ -49,10 +65,75 @@ gulp.task('default', function () { } })) .pipe(rename('freemius-en.po')) - .pipe(gulp.dest('languages/')); + .pipe(gulp.dest(languagesFolder)); +}); + +// Push updated po resource to transifex. +gulp.task('update-transifex', ['prepare-source'], function () { + return gulp.src(languagesFolder + 'freemius-en.po') + .pipe(transifex.pushResource()); +}); +// Download latest *.po translations. +gulp.task('download-translations', ['update-transifex'], function () { + return gulp.src(languagesFolder + 'freemius-en.po') + .pipe(transifex.pullResource()); +}); + +// Move translations to languages root. +gulp.task('prepare-translations', ['download-translations'], function () { + var folders = getFolders(languagesFolder); + + return folders.map(function (folder) { + return gulp.src(path.join(languagesFolder, folder, 'freemius-en.po')) + .pipe(rename('freemius-' + folder + '.po')) + .pipe(gulp.dest(languagesFolder)); + }); +}); + +// Feel up empty translations with English. +gulp.task('translations-feelup', ['prepare-translations'], function () { + return gulp.src(languagesFolder + '*.po') + .pipe(pofill({ + items: function (item) { + // If msgstr is empty, use identity translation + if (0 == item.msgstr.length) { + item.msgstr = ['']; + } + if (0 == item.msgstr[0].length) { +// item.msgid[0] = item.msgid; + item.msgstr[0] = item.msgid; + } + return item; + } + })) + .pipe(gulp.dest(languagesFolder)); +}); + +// Cleanup temporary translation folders. +gulp.task('cleanup', ['prepare-translations'], function () { + var folders = getFolders(languagesFolder); + + return folders.map(function (folder) { + return gulp.src(path.join(languagesFolder, folder), {read: false}) + .pipe(clean()); + }); +}); + +// Compile *.po to *.mo binaries for usage. +gulp.task('compile-translations', ['translations-feelup'], function () { // Compile POs to MOs. - gulp.src('languages/*.po') + return gulp.src(languagesFolder + '*.po') .pipe(gettext()) - .pipe(gulp.dest('languages/')) + .pipe(gulp.dest(languagesFolder)) +}); + +gulp.task('default', [], function () { + gulp.run('prepare-source'); + gulp.run('update-transifex'); + gulp.run('download-translations'); + gulp.run('prepare-translations'); + gulp.run('translations-feelup'); + gulp.run('cleanup'); + gulp.run('compile-translations'); }); \ No newline at end of file diff --git a/includes/class-freemius-abstract.php b/includes/class-freemius-abstract.php index 01c40657f..ae7b4c8d2 100644 --- a/includes/class-freemius-abstract.php +++ b/includes/class-freemius-abstract.php @@ -28,7 +28,13 @@ abstract class Freemius_Abstract { #---------------------------------------------------------------------------------- /** - * Check if user registered with Freemius by connecting his account. + * Check if user has connected his account (opted-in). + * + * Note: + * If the user opted-in and opted-out on a later stage, + * this will still return true. If you want to check if the + * user is currently opted-in, use: + * `$fs->is_registered() && $fs->is_tracking_allowed()` * * @since 1.0.1 * @return bool @@ -117,6 +123,34 @@ abstract function allow_tracking(); #endregion + #---------------------------------------------------------------------------------- + #region Module Type + #---------------------------------------------------------------------------------- + + /** + * Checks if the plugin's type is "plugin". The other type is "theme". + * + * @author Leo Fajardo (@leorw) + * @since 1.2.2 + * + * @return bool + */ + abstract function is_plugin(); + + /** + * Checks if the module type is "theme". The other type is "plugin". + * + * @author Leo Fajardo (@leorw) + * @since 1.2.2 + * + * @return bool + */ + function is_theme() { + return ( ! $this->is_plugin() ); + } + + #endregion + #---------------------------------------------------------------------------------- #region Permissions #---------------------------------------------------------------------------------- @@ -442,6 +476,16 @@ function is_freemium() { $this->has_free_plan(); } + /** + * Check if module has only one plan. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + * + * @return bool + */ + abstract function is_single_plan(); + #endregion /** diff --git a/includes/class-freemius.php b/includes/class-freemius.php index 93e7194da..13386893d 100644 --- a/includes/class-freemius.php +++ b/includes/class-freemius.php @@ -335,6 +335,45 @@ private function __construct( $slug, $is_init = false ) { $this->_version_updates_handler(); } + /** + * Checks whether this plugin or theme has settings menu. + * + * @author Leo Fajardo (@leorw) + * @since 1.2.2 + * + * @return bool + */ + function has_settings_menu() { + /** + * At the moment the wp.org require to show the opt-in in + * the themes page. Therefore, if the theme is .org compliant, + * treat it as if it doesn't have a menu item. + */ + if ( $this->is_theme() && $this->is_org_repo_compliant() ) { + return false; + } + + return $this->_menu->has_menu(); + } + + /** + * Checks whether this a submenu item is visible. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.2.6 + * + * @param string $slug + * + * @return bool + */ + function is_submenu_item_visible( $slug ) { + if ( ! $this->has_settings_menu() ) { + return false; + } + + return $this->_menu->is_submenu_item_visible( $slug ); + } + /** * @author Vova Feldman (@svovaf) * @since 1.0.9 @@ -527,6 +566,11 @@ private function _register_hooks() { $this->add_ajax_action( 'update_billing', array( &$this, '_update_billing_ajax_action' ) ); $this->add_ajax_action( 'start_trial', array( &$this, '_start_trial_ajax_action' ) ); + $this->add_ajax_action( 'install_premium_version', array( + &$this, + '_install_premium_version_ajax_action' + ) ); + $this->add_action( 'after_plans_sync', array( &$this, '_check_for_trial_plans' ) ); $this->add_action( 'sdk_version_update', array( &$this, '_data_migration' ), WP_FS__DEFAULT_PRIORITY, 2 ); @@ -634,7 +678,7 @@ private function _find_caller_plugin_file( $is_init = false ) { if ( isset( $this->_storage->plugin_main_file ) ) { $plugin_main_file = $this->_storage->plugin_main_file; if ( isset( $plugin_main_file->path ) && file_exists( $plugin_main_file->path ) ) { - return $this->_storage->plugin_main_file->path; + return $plugin_main_file->path; } } @@ -659,8 +703,9 @@ private function _find_caller_plugin_file( $is_init = false ) { } wp_die( - __fs( 'failed-finding-main-path', $this->_slug ), - __fs( 'error' ), + $this->get_text( 'failed-finding-main-path' ) . + " Module: {$this->_slug}; SDK: " . WP_FS__SDK_VERSION . ";", + $this->get_text( 'error' ), array( 'back_link' => true ) ); } @@ -671,7 +716,8 @@ private function _find_caller_plugin_file( $is_init = false ) { * Only the original instantiator that calls dynamic_init can modify the module's path. */ // Find caller module. - $plugin_file = fs_find_caller_plugin_file(); + $file_and_type = $this->get_caller_main_file_and_type(); + $plugin_file = $file_and_type->path; $this->_storage->plugin_main_file = (object) array( 'path' => fs_normalize_path( $plugin_file ), @@ -680,6 +726,97 @@ private function _find_caller_plugin_file( $is_init = false ) { return $plugin_file; } + /** + * Identifies the caller path. + * + * @todo (Vova) When merging this branch with the theme's one, use the theme's one instead of this one. + * + * @author Leo Fajardo (@leorw) + * @since 1.2.2 + * + * @author Vova Feldman (@svovaf) + * @since 1.2.2.3 Find the earliest module in the call stack that calls to the SDK. This fix is for cases + * when add-ons are relying on loading the SDK from the parent module, and also allows themes + * including the SDK an internal file instead of directly from functions.php. + * @since 1.2.1.7 Knows how to handle cases when an add-on includes the parent module logic. + */ + private function get_caller_main_file_and_type() { + self::require_plugin_essentials(); + + $all_plugins = get_plugins(); + $all_plugins_paths = array(); + + // Get active plugin's main files real full names (might be symlinks). + foreach ( $all_plugins as $relative_path => &$data ) { + if ( false === strpos( fs_normalize_path( $relative_path ), '/' ) ) { + /** + * Ignore plugins that don't have a folder (e.g. Hello Dolly) since they + * can't really include the SDK. + * + * @author Vova Feldman + * @since 1.2.1.7 + */ + continue; + } + + $all_plugins_paths[] = fs_normalize_path( realpath( WP_PLUGIN_DIR . '/' . $relative_path ) ); + } + + $caller_file_candidate = false; + $caller_map = array(); + $module_type = WP_FS__MODULE_TYPE_PLUGIN; + + for ( $i = 1, $bt = debug_backtrace(), $len = count( $bt ); $i < $len; $i ++ ) { + if ( empty( $bt[ $i ]['file'] ) ) { + continue; + } + + if ( $i > 1 && ! empty( $bt[ $i - 1 ]['file'] ) && $bt[ $i ]['file'] === $bt[ $i - 1 ]['file'] ) { + // If file same as the prev file in the stack, skip it. + continue; + } + + if ( ! empty( $bt[ $i ]['function'] ) && in_array( $bt[ $i ]['function'], array( + 'do_action', + 'apply_filter', + 'require_once', + 'require', + 'include_once', + 'include' + ) ) + ) { + // Ignore call stack hooks and files inclusion. + continue; + } + + $caller_file_path = fs_normalize_path( $bt[ $i ]['file'] ); + $caller_file_hash = md5( $caller_file_path ); + + if ( ! isset( $caller_map[ $caller_file_hash ] ) ) { + foreach ( $all_plugins_paths as $plugin_path ) { + if ( false !== strpos( $caller_file_path, fs_normalize_path( dirname( $plugin_path ) . '/' ) ) ) { + $caller_map[ $caller_file_hash ] = fs_normalize_path( $plugin_path ); + break; + } + } + } + + if ( isset( $caller_map[ $caller_file_hash ] ) ) { + $module_type = WP_FS__MODULE_TYPE_PLUGIN; + $caller_file_candidate = $caller_map[ $caller_file_hash ]; + } + } + + if ( empty( $caller_file_candidate ) ) { + // Throw an error to the developer in case of some edge case dev environment. + wp_die( $this->get_text( 'failed-finding-main-path' ), $this->get_text( 'error' ), array( 'back_link' => true ) ); + } + + return (object) array( + 'module_type' => $module_type, + 'path' => $caller_file_candidate + ); + } #---------------------------------------------------------------------------------- #region Deactivation Feedback Form @@ -761,21 +898,21 @@ function _get_uninstall_reasons( $user_type = 'long-term' ) { $reason_found_better_plugin = array( 'id' => self::REASON_FOUND_A_BETTER_PLUGIN, - 'text' => __fs( 'reason-found-a-better-plugin', $this->_slug ), + 'text' => $this->get_text( 'reason-found-a-better-plugin' ), 'input_type' => 'textfield', - 'input_placeholder' => __fs( 'placeholder-plugin-name', $this->_slug ) + 'input_placeholder' => $this->get_text( 'placeholder-plugin-name' ) ); $reason_temporary_deactivation = array( 'id' => self::REASON_TEMPORARY_DEACTIVATION, - 'text' => __fs( 'reason-temporary-deactivation', $this->_slug ), + 'text' => $this->get_text( 'reason-temporary-deactivation' ), 'input_type' => '', 'input_placeholder' => '' ); $reason_other = array( 'id' => self::REASON_OTHER, - 'text' => __fs( 'reason-other', $this->_slug ), + 'text' => $this->get_text( 'reason-other' ), 'input_type' => 'textfield', 'input_placeholder' => '' ); @@ -783,27 +920,27 @@ function _get_uninstall_reasons( $user_type = 'long-term' ) { $long_term_user_reasons = array( array( 'id' => self::REASON_NO_LONGER_NEEDED, - 'text' => __fs( 'reason-no-longer-needed', $this->_slug ), + 'text' => $this->get_text( 'reason-no-longer-needed' ), 'input_type' => '', 'input_placeholder' => '' ), $reason_found_better_plugin, array( 'id' => self::REASON_NEEDED_FOR_A_SHORT_PERIOD, - 'text' => __fs( 'reason-needed-for-a-short-period', $this->_slug ), + 'text' => $this->get_text( 'reason-needed-for-a-short-period' ), 'input_type' => '', 'input_placeholder' => '' ), array( 'id' => self::REASON_BROKE_MY_SITE, - 'text' => __fs( 'reason-broke-my-site', $this->_slug ), + 'text' => $this->get_text( 'reason-broke-my-site' ), 'input_type' => '', 'input_placeholder' => '', 'internal_message' => $contact_support_template ), array( 'id' => self::REASON_SUDDENLY_STOPPED_WORKING, - 'text' => __fs( 'reason-suddenly-stopped-working', $this->_slug ), + 'text' => $this->get_text( 'reason-suddenly-stopped-working' ), 'input_type' => '', 'input_placeholder' => '', 'internal_message' => $contact_support_template @@ -813,15 +950,15 @@ function _get_uninstall_reasons( $user_type = 'long-term' ) { if ( $this->is_paying() ) { $long_term_user_reasons[] = array( 'id' => self::REASON_CANT_PAY_ANYMORE, - 'text' => __fs( 'reason-cant-pay-anymore', $this->_slug ), + 'text' => $this->get_text( 'reason-cant-pay-anymore' ), 'input_type' => 'textfield', - 'input_placeholder' => __fs( 'placeholder-comfortable-price', $this->_slug ) + 'input_placeholder' => $this->get_text( 'placeholder-comfortable-price' ) ); } $reason_dont_share_info = array( 'id' => self::REASON_DONT_LIKE_TO_SHARE_MY_INFORMATION, - 'text' => __fs( 'reason-dont-like-to-share-my-information', $this->_slug ), + 'text' => $this->get_text( 'reason-dont-like-to-share-my-information' ), 'input_type' => '', 'input_placeholder' => '' ); @@ -842,7 +979,7 @@ function _get_uninstall_reasons( $user_type = 'long-term' ) { 'non-registered-and-non-anonymous-short-term' => array( array( 'id' => self::REASON_DIDNT_WORK, - 'text' => __fs( 'reason-didnt-work', $this->_slug ), + 'text' => $this->get_text( 'reason-didnt-work' ), 'input_type' => '', 'input_placeholder' => '' ), @@ -852,7 +989,7 @@ function _get_uninstall_reasons( $user_type = 'long-term' ) { 'short-term' => array( array( 'id' => self::REASON_COULDNT_MAKE_IT_WORK, - 'text' => __fs( 'reason-couldnt-make-it-work', $this->_slug ), + 'text' => $this->get_text( 'reason-couldnt-make-it-work' ), 'input_type' => '', 'input_placeholder' => '', 'internal_message' => $contact_support_template @@ -860,27 +997,27 @@ function _get_uninstall_reasons( $user_type = 'long-term' ) { $reason_found_better_plugin, array( 'id' => self::REASON_GREAT_BUT_NEED_SPECIFIC_FEATURE, - 'text' => __fs( 'reason-great-but-need-specific-feature', $this->_slug ), + 'text' => $this->get_text( 'reason-great-but-need-specific-feature' ), 'input_type' => 'textarea', - 'input_placeholder' => __fs( 'placeholder-feature', $this->_slug ) + 'input_placeholder' => $this->get_text( 'placeholder-feature' ) ), array( 'id' => self::REASON_NOT_WORKING, - 'text' => __fs( 'reason-not-working', $this->_slug ), + 'text' => $this->get_text( 'reason-not-working' ), 'input_type' => 'textarea', - 'input_placeholder' => __fs( 'placeholder-share-what-didnt-work', $this->_slug ) + 'input_placeholder' => $this->get_text( 'placeholder-share-what-didnt-work' ) ), array( 'id' => self::REASON_NOT_WHAT_I_WAS_LOOKING_FOR, - 'text' => __fs( 'reason-not-what-i-was-looking-for', $this->_slug ), + 'text' => $this->get_text( 'reason-not-what-i-was-looking-for' ), 'input_type' => 'textarea', - 'input_placeholder' => __fs( 'placeholder-what-youve-been-looking-for', $this->_slug ) + 'input_placeholder' => $this->get_text( 'placeholder-what-youve-been-looking-for' ) ), array( 'id' => self::REASON_DIDNT_WORK_AS_EXPECTED, - 'text' => __fs( 'reason-didnt-work-as-expected', $this->_slug ), + 'text' => $this->get_text( 'reason-didnt-work-as-expected' ), 'input_type' => 'textarea', - 'input_placeholder' => __fs( 'placeholder-what-did-you-expect', $this->_slug ) + 'input_placeholder' => $this->get_text( 'placeholder-what-did-you-expect' ) ) ) ); @@ -904,6 +1041,10 @@ function _get_uninstall_reasons( $user_type = 'long-term' ) { * @since 1.1.2 */ function _submit_uninstall_reason_action() { + $this->_logger->entrance(); + + $this->check_ajax_referer( 'submit_uninstall_reason' ); + $reason_id = fs_request_get( 'reason_id' ); // Check if the given reason ID is an unsigned integer. @@ -944,9 +1085,13 @@ function _submit_uninstall_reason_action() { * @param string $slug * @param bool $is_init Is initiation sequence. * - * @return Freemius + * @return Freemius|false */ static function instance( $slug, $is_init = false ) { + if ( empty( $slug ) ) { + return false; + } + $slug = strtolower( $slug ); if ( ! isset( self::$_instances[ $slug ] ) ) { @@ -978,7 +1123,7 @@ private static function has_instance( $slug_or_id ) { * @author Vova Feldman (@svovaf) * @since 1.0.6 * - * @param $id + * @param number $id * * @return false|Freemius */ @@ -1023,7 +1168,7 @@ function get_parent_instance() { * @author Vova Feldman (@svovaf) * @since 1.0.6 * - * @param $slug_or_id + * @param string|number $slug_or_id * * @return bool|Freemius */ @@ -1081,6 +1226,68 @@ function is_activation_mode( $and_on = true ) { ); } + /** + * Check if current page is the opt-in/pending-activation page. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + * + * @return bool + */ + function is_activation_page() { + if ( $this->_menu->is_main_settings_page() ) { + return true; + } + + if ( ! $this->is_activation_mode() ) { + return false; + } + + // Check if current page is matching the activation page. + return $this->is_matching_url( $_SERVER['REQUEST_URI'], $this->get_activation_url() ); + } + + /** + * Check if URL path's are matching and that all querystring + * arguments of the $sub_url exist in the $url with the same values. + * + * WARNING: + * 1. This method doesn't check if the sub/domain are matching. + * 2. Ignore case sensitivity. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + * + * @param string $url + * @param string $sub_url + * + * @return bool + */ + private function is_matching_url( $url, $sub_url ) { + $url = strtolower( $url ); + $sub_url = strtolower( $sub_url ); + + if ( parse_url( $sub_url, PHP_URL_PATH ) !== parse_url( $url, PHP_URL_PATH ) ) { + // Different path - DO NOT OVERRIDE PAGE. + return false; + } + + $url_params = array(); + parse_str( parse_url( $url, PHP_URL_QUERY ), $url_params ); + + $sub_url_params = array(); + parse_str( parse_url( $sub_url, PHP_URL_QUERY ), $sub_url_params ); + + foreach ( $sub_url_params as $key => $val ) { + if ( ! isset( $url_params[ $key ] ) || $val != $url_params[ $key ] ) { + // Not matching query string - DO NOT OVERRIDE PAGE. + return false; + } + } + + return true; + } + /** * Get collection of all active plugins. * @@ -1213,12 +1420,16 @@ private static function _load_required_static() { // Configure which Freemius powered plugins should be auto updated. // add_filter( 'auto_update_plugin', '_include_plugins_in_auto_update', 10, 2 ); - add_action( 'admin_menu', array( 'Freemius', 'add_debug_page' ) ); + add_action( 'admin_menu', array( 'Freemius', '_add_debug_section' ) ); add_action( "wp_ajax_fs_toggle_debug_mode", array( 'Freemius', '_toggle_debug_mode' ) ); self::add_ajax_action_static( 'get_debug_log', array( 'Freemius', '_get_debug_log' ) ); + self::add_ajax_action_static( 'get_db_option', array( 'Freemius', '_get_db_option' ) ); + + self::add_ajax_action_static( 'set_db_option', array( 'Freemius', '_set_db_option' ) ); + add_action( 'plugins_loaded', array( 'Freemius', '_load_textdomain' ), 1 ); self::$_statics_loaded = true; @@ -1241,13 +1452,12 @@ static function _load_textdomain() { global $fs_active_plugins; + // Works both for plugins and themes. load_plugin_textdomain( 'freemius', false, $fs_active_plugins->newest->sdk_path . '/languages/' ); - - // @todo Load for themes. } #endregion @@ -1260,20 +1470,20 @@ static function _load_textdomain() { * @author Vova Feldman (@svovaf) * @since 1.0.8 */ - static function add_debug_page() { + static function _add_debug_section() { if ( ! current_user_can( 'activate_plugins' ) ) { return; } self::$_static_logger->entrance(); - $title = sprintf( '%s [v.%s]', __fs( 'freemius-debug' ), WP_FS__SDK_VERSION ); + $title = sprintf( '%s [v.%s]', fs_text( 'freemius-debug' ), WP_FS__SDK_VERSION ); $hook = null; if ( WP_FS__DEV_MODE ) { // Add top-level debug menu item. - $hook = add_menu_page( + $hook = FS_Admin_Menu_Manager::add_page( $title, $title, 'manage_options', @@ -1283,7 +1493,7 @@ static function add_debug_page() { } else { if ( 'freemius' === fs_request_get( 'page' ) ) { // Add hidden debug page. - $hook = add_submenu_page( + $hook = FS_Admin_Menu_Manager::add_subpage( null, $title, $title, @@ -1304,11 +1514,13 @@ static function add_debug_page() { * @since 1.1.7.3 */ static function _toggle_debug_mode() { - if ( fs_request_is_post() && in_array( $_POST['is_on'], array( 0, 1 ) ) ) { - update_option( 'fs_debug_mode', $_POST['is_on'] ); + $is_on = fs_request_get( 'is_on', false, 'post' ); + + if ( fs_request_is_post() && in_array( $is_on, array( 0, 1 ) ) ) { + update_option( 'fs_debug_mode', $is_on ); // Turn on/off storage logging. - FS_Logger::_set_storage_logging( ( 1 == $_POST['is_on'] ) ); + FS_Logger::_set_storage_logging( ( 1 == $is_on ) ); } exit; @@ -1320,7 +1532,7 @@ static function _toggle_debug_mode() { */ static function _get_debug_log() { $logs = FS_Logger::load_db_logs( - ! empty( $_POST['filters'] ) ? $_POST['filters'] : false, + fs_request_get( 'filters', false, 'post' ), ! empty( $_POST['limit'] ) && is_numeric( $_POST['limit'] ) ? $_POST['limit'] : 200, ! empty( $_POST['offset'] ) && is_numeric( $_POST['offset'] ) ? $_POST['offset'] : 0 ); @@ -1328,6 +1540,46 @@ static function _get_debug_log() { self::shoot_ajax_success( $logs ); } + /** + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + */ + static function _get_db_option() { + $option_name = fs_request_get( 'option_name' ); + + $value = get_option( $option_name ); + + $result = array( + 'name' => $option_name, + ); + + if ( false !== $value ) { + if ( ! is_string( $value ) ) { + $value = json_encode( $value ); + } + + $result['value'] = $value; + } + + self::shoot_ajax_success( $result ); + } + + /** + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + */ + static function _set_db_option() { + $option_name = fs_request_get( 'option_name' ); + $option_value = fs_request_get( 'option_value' ); + + if ( ! empty( $option_value ) ) { + update_option( $option_name, $option_value ); + } + + self::shoot_ajax_success(); + } + + /** * @author Vova Feldman (@svovaf) * @since 1.0.8 @@ -1358,7 +1610,7 @@ static function _debug_page_actions() { check_admin_referer( 'download_logs' ); $download_url = FS_Logger::download_db_logs( - ! empty( $_POST['filters'] ) ? $_POST['filters'] : false + fs_request_get( 'filters', false, 'post' ) ); if ( false === $download_url ) { @@ -1376,21 +1628,12 @@ static function _debug_page_actions() { static function _debug_page_render() { self::$_static_logger->entrance(); - $sites = self::get_all_sites(); - $users = self::get_all_users(); - $addons = self::get_all_addons(); - $account_addons = self::get_all_account_addons(); - $licenses = self::get_all_licenses(); - -// $plans = self::get_all_plans(); -// $licenses = self::get_all_licenses(); - $vars = array( - 'sites' => $sites, - 'users' => $users, - 'addons' => $addons, - 'account_addons' => $account_addons, - 'licenses' => $licenses, + 'sites' => self::get_all_sites(), + 'users' => self::get_all_users(), + 'addons' => self::get_all_addons(), + 'account_addons' => self::get_all_account_addons(), + 'licenses' => self::get_all_licenses(), ); fs_enqueue_local_style( 'fs_debug', '/admin/debug.css' ); @@ -1705,102 +1948,128 @@ function _add_connectivity_issue_message( $api_result, $is_first_failure = true ) { switch ( $api_result->error->code ) { case 'curl_missing': + $missing_methods = ''; + if ( is_array( $api_result->missing_methods ) && + ! empty( $api_result->missing_methods ) + ) { + foreach ( $api_result->missing_methods as $m ) { + if ( 'curl_version' === $m ) { + continue; + } + + if ( ! empty( $missing_methods ) ) { + $missing_methods .= ', '; + } + + $missing_methods .= sprintf( '%s', $m ); + } + + if ( ! empty( $missing_methods ) ) { + $missing_methods = sprintf( + '

%s %s', + $this->get_text( 'curl-disabled-methods' ), + $missing_methods + ); + } + } + $message = sprintf( - __fs( 'x-requires-access-to-api', $this->_slug ) . ' ' . - __fs( 'curl-missing-message', $this->_slug ) . ' ' . + $this->get_text( 'x-requires-access-to-api' ) . ' ' . + $this->get_text( 'curl-missing-message' ) . ' ' . + $missing_methods . ' %s', '' . $this->get_plugin_name() . '', sprintf( '
  1. %s
  2. %s
  3. %s
', sprintf( '%s%s', - __fs( 'curl-missing-no-clue-title', $this->_slug ), + $this->get_text( 'curl-missing-no-clue-title' ), ' - ' . sprintf( - __fs( 'curl-missing-no-clue-desc', $this->_slug ), + $this->get_text( 'curl-missing-no-clue-desc' ), '' . $admin_email . '' ) ), sprintf( '%s - %s', - __fs( 'sysadmin-title', $this->_slug ), - __fs( 'curl-missing-sysadmin-desc', $this->_slug ) + $this->get_text( 'sysadmin-title' ), + $this->get_text( 'curl-missing-sysadmin-desc' ) ), sprintf( '%s%s', wp_nonce_url( 'plugins.php?action=deactivate&plugin=' . $this->_plugin_basename . '&plugin_status=' . 'all' . '&paged=' . '1' . '&s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ), - __fs( 'deactivate-plugin-title', $this->_slug ), - ' - ' . __fs( 'deactivate-plugin-desc', 'freemius', $this->_slug ) + $this->get_text( 'deactivate-plugin-title' ), + ' - ' . $this->get_text( 'deactivate-plugin-desc' ) ) ) ); break; case 'cloudflare_ddos_protection': $message = sprintf( - __fs( 'x-requires-access-to-api', $this->_slug ) . ' ' . - __fs( 'cloudflare-blocks-connection-message', $this->_slug ) . ' ' . - __fs( 'happy-to-resolve-issue-asap', $this->_slug ) . + $this->get_text( 'x-requires-access-to-api' ) . ' ' . + $this->get_text( 'cloudflare-blocks-connection-message' ) . ' ' . + $this->get_text( 'happy-to-resolve-issue-asap' ) . ' %s', '' . $this->get_plugin_name() . '', sprintf( '
  1. %s
  2. %s
  3. %s
', sprintf( '%s%s', - __fs( 'fix-issue-title', $this->_slug ), + $this->get_text( 'fix-issue-title' ), ' - ' . sprintf( - __fs( 'fix-issue-desc', $this->_slug ), + $this->get_text( 'fix-issue-desc' ), '' . $admin_email . '' ) ), sprintf( '%s%s', sprintf( 'https://wordpress.org/plugins/%s/download/', $this->_slug ), - __fs( 'install-previous-title', $this->_slug ), - ' - ' . __fs( 'install-previous-desc', $this->_slug ) + $this->get_text( 'install-previous-title' ), + ' - ' . $this->get_text( 'install-previous-desc' ) ), sprintf( '%s%s', wp_nonce_url( 'plugins.php?action=deactivate&plugin=' . $this->_plugin_basename . '&plugin_status=' . 'all' . '&paged=' . '1' . '&s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ), - __fs( 'deactivate-plugin-title', $this->_slug ), - ' - ' . __fs( 'deactivate-plugin-desc', $this->_slug ) + $this->get_text( 'deactivate-plugin-title' ), + ' - ' . $this->get_text( 'deactivate-plugin-desc' ) ) ) ); break; case 'squid_cache_block': $message = sprintf( - __fs( 'x-requires-access-to-api', $this->_slug ) . ' ' . - __fs( 'squid-blocks-connection-message', $this->_slug ) . + $this->get_text( 'x-requires-access-to-api' ) . ' ' . + $this->get_text( 'squid-blocks-connection-message' ) . ' %s', '' . $this->get_plugin_name() . '', sprintf( '
  1. %s
  2. %s
  3. %s
', sprintf( '%s%s', - __fs( 'squid-no-clue-title', $this->_slug ), + $this->get_text( 'squid-no-clue-title' ), ' - ' . sprintf( - __fs( 'squid-no-clue-desc', $this->_slug ), + $this->get_text( 'squid-no-clue-desc' ), '' . $admin_email . '' ) ), sprintf( '%s - %s', - __fs( 'sysadmin-title', $this->_slug ), + $this->get_text( 'sysadmin-title' ), sprintf( - __fs( 'squid-sysadmin-desc', $this->_slug ), + $this->get_text( 'squid-sysadmin-desc' ), // We use a filter since the plugin might require additional API connectivity. '' . implode( ', ', $this->apply_filters( 'api_domains', array( 'api.freemius.com' ) ) ) . '' ) ), sprintf( '%s%s', wp_nonce_url( 'plugins.php?action=deactivate&plugin=' . $this->_plugin_basename . '&plugin_status=' . 'all' . '&paged=' . '1' . '&s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ), - __fs( 'deactivate-plugin-title', $this->_slug ), - ' - ' . __fs( 'deactivate-plugin-desc', $this->_slug ) + $this->get_text( 'deactivate-plugin-title' ), + ' - ' . $this->get_text( 'deactivate-plugin-desc' ) ) ) ); break; // default: -// $message = __fs( 'connectivity-test-fails-message', $this->_slug ); +// $message = $this->get_text( 'connectivity-test-fails-message' ); // break; } } @@ -1812,21 +2081,21 @@ function _add_connectivity_issue_message( $api_result, $is_first_failure = true if ( $is_first_failure ) { // First attempt failed. $message = sprintf( - __fs( 'x-requires-access-to-api', $this->_slug ) . ' ' . - __fs( 'connectivity-test-fails-message', $this->_slug ) . ' ' . - __fs( 'connectivity-test-maybe-temporary', $this->_slug ) . '

' . + $this->get_text( 'x-requires-access-to-api' ) . ' ' . + $this->get_text( 'connectivity-test-fails-message' ) . ' ' . + $this->get_text( 'connectivity-test-maybe-temporary' ) . '

' . '%s', '' . $this->get_plugin_name() . '', sprintf( '
%s %s
', sprintf( '%s', - __fs( 'yes-do-your-thing', $this->_slug ) + $this->get_text( 'yes-do-your-thing' ) ), sprintf( '%s', wp_nonce_url( 'plugins.php?action=deactivate&plugin=' . $this->_plugin_basename . '&plugin_status=' . 'all' . '&paged=' . '1' . '&s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ), - __fs( 'no-deactivate', $this->_slug ) + $this->get_text( 'no-deactivate' ) ) ) ); @@ -1836,32 +2105,32 @@ function _add_connectivity_issue_message( $api_result, $is_first_failure = true } else { // Second connectivity attempt failed. $message = sprintf( - __fs( 'x-requires-access-to-api', $this->_slug ) . ' ' . - __fs( 'connectivity-test-fails-message', $this->_slug ) . ' ' . - __fs( 'happy-to-resolve-issue-asap', $this->_slug ) . + $this->get_text( 'x-requires-access-to-api' ) . ' ' . + $this->get_text( 'connectivity-test-fails-message' ) . ' ' . + $this->get_text( 'happy-to-resolve-issue-asap' ) . ' %s', '' . $this->get_plugin_name() . '', sprintf( '
  1. %s
  2. %s
  3. %s
', sprintf( '%s%s', - __fs( 'fix-issue-title', $this->_slug ), + $this->get_text( 'fix-issue-title' ), ' - ' . sprintf( - __fs( 'fix-issue-desc', $this->_slug ), + $this->get_text( 'fix-issue-desc' ), '' . $admin_email . '' ) ), sprintf( '%s%s', sprintf( 'https://wordpress.org/plugins/%s/download/', $this->_slug ), - __fs( 'install-previous-title', $this->_slug ), - ' - ' . __fs( 'install-previous-desc', $this->_slug ) + $this->get_text( 'install-previous-title' ), + ' - ' . $this->get_text( 'install-previous-desc' ) ), sprintf( '%s%s', wp_nonce_url( 'plugins.php?action=deactivate&plugin=' . $this->_plugin_basename . '&plugin_status=' . 'all' . '&paged=' . '1' . '&s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ), - __fs( 'deactivate-plugin-title', $this->_slug ), - ' - ' . __fs( 'deactivate-plugin-desc', $this->_slug ) + $this->get_text( 'deactivate-plugin-title' ), + ' - ' . $this->get_text( 'deactivate-plugin-desc' ) ) ) ); @@ -1871,7 +2140,7 @@ function _add_connectivity_issue_message( $api_result, $is_first_failure = true $this->_admin_notices->add_sticky( $message, $message_id, - __fs( 'oops', $this->_slug ) . '...', + $this->get_text( 'oops' ) . '...', $type ); } @@ -1919,7 +2188,7 @@ function _email_about_firewall_issue() { // Add 'API Error' custom email section. $custom_email_sections['api_error'] = array( - 'title' => "API Error", + 'title' => 'API Error', 'rows' => array( 'ping' => array( 'API Error', @@ -1938,7 +2207,7 @@ function _email_about_firewall_issue() { $this->_admin_notices->add_sticky( sprintf( - __fs( 'fix-request-sent-message', $this->_slug ), + $this->get_text( 'fix-request-sent-message' ), '' . $admin_email . '' ), 'server_details_sent' @@ -2040,7 +2309,7 @@ private function send_email( $message = fs_get_template( 'email.php', $vars ); // Set the type of email to HTML. - $headers[] = 'Content-type: text/html; charset=UTF-8'; + $headers[] = 'Content-type: text/html; charset=UTF-8'; $header_string = implode( "\r\n", $headers ); @@ -2313,10 +2582,10 @@ function dynamic_init( array $plugin_info ) { $this->_admin_notices->add( ( ! empty( $parent_name ) ? - sprintf( __fs( 'addon-x-cannot-run-without-y', $this->_slug ), $this->get_plugin_name(), $parent_name ) : - sprintf( __fs( 'addon-x-cannot-run-without-parent', $this->_slug ), $this->get_plugin_name() ) + sprintf( $this->get_text( 'addon-x-cannot-run-without-y' ), $this->get_plugin_name(), $parent_name ) : + sprintf( $this->get_text( 'addon-x-cannot-run-without-parent' ), $this->get_plugin_name() ) ), - __fs( 'oops', $this->_slug ) . '...', + $this->get_text( 'oops' ) . '...', 'error' ); @@ -2339,8 +2608,6 @@ function dynamic_init( array $plugin_info ) { $this->deactivate_premium_only_addon_without_license(); } } else { - add_action( 'admin_init', array( &$this, '_admin_init_action' ) ); - if ( $this->has_addons() && 'plugin-information' === fs_request_get( 'tab', false ) && $this->get_id() == fs_request_get( 'parent_plugin_id', false ) @@ -2351,6 +2618,8 @@ function dynamic_init( array $plugin_info ) { } } + add_action( 'admin_init', array( &$this, '_admin_init_action' ) ); + // if ( $this->is_registered() || // $this->is_anonymous() || // $this->is_pending_activation() @@ -2419,6 +2688,10 @@ function dynamic_init( array $plugin_info ) { * @since 1.2.1.5 */ function _stop_tracking_callback() { + $this->_logger->entrance(); + + $this->check_ajax_referer( 'stop_tracking' ); + $result = $this->stop_tracking(); if ( true === $result ) { @@ -2428,7 +2701,7 @@ function _stop_tracking_callback() { $this->_logger->api_error( $result ); self::shoot_ajax_failure( - __fs( 'unexpected-api-error', $this->_slug ) . + $this->get_text( 'unexpected-api-error' ) . ( $this->is_api_error( $result ) && isset( $result->error ) ? $result->error->message : var_export( $result, true ) ) @@ -2440,6 +2713,10 @@ function _stop_tracking_callback() { * @since 1.2.1.5 */ function _allow_tracking_callback() { + $this->_logger->entrance(); + + $this->check_ajax_referer( 'allow_tracking' ); + $result = $this->allow_tracking(); if ( true === $result ) { @@ -2449,7 +2726,7 @@ function _allow_tracking_callback() { $this->_logger->api_error( $result ); self::shoot_ajax_failure( - __fs( 'unexpected-api-error', $this->_slug ) . + $this->get_text( 'unexpected-api-error' ) . ( $this->is_api_error( $result ) && isset( $result->error ) ? $result->error->message : var_export( $result, true ) ) @@ -2641,7 +2918,7 @@ private function parse_settings( &$plugin_info ) { // Set the secret key after storing the plugin, we don't want to store the key in the storage. $this->_plugin->secret_key = $secret_key; - if (! isset( $plugin_info['menu'] )) { + if ( ! isset( $plugin_info['menu'] ) ) { $plugin_info['menu'] = array(); if ( ! empty( $this->_storage->sdk_last_version ) && @@ -2819,9 +3096,9 @@ function _plugin_code_type_changed() { ) ); $this->_admin_notices->add_sticky( - __fs( 'premium-activated-message', $this->_slug ), + $this->get_text( 'premium-activated-message' ), 'premium_activated', - __fs( 'woot', $this->_slug ) . '!' + $this->get_text( 'woot' ) . '!' ); } else { // Remove sticky message related to premium code activation. @@ -2833,11 +3110,11 @@ function _plugin_code_type_changed() { if ( $this->is_paying() && ! $this->is_premium() ) { $this->_admin_notices->add_sticky( sprintf( - __fs( 'you-have-x-license', $this->_slug ), + $this->get_text( 'you-have-x-license' ), $this->_site->plan->title ) . $this->get_complete_upgrade_instructions(), 'plan_upgraded', - __fs( 'yee-haw', $this->_slug ) . '!' + $this->get_text( 'yee-haw' ) . '!' ); } } @@ -2875,11 +3152,26 @@ function _plugin_code_type_changed() { * @since 1.0.6 * * @param string|number $slug_or_id + * @param bool|null $is_premium Since 1.2.1.7 can check for specified add-on version. * * @return bool */ - function is_addon_activated( $slug_or_id ) { - return self::has_instance( $slug_or_id ); + function is_addon_activated( $slug_or_id, $is_premium = null ) { + $this->_logger->entrance(); + + $is_activated = self::has_instance( $slug_or_id ); + + if ( ! $is_activated ) { + return false; + } + + if ( is_bool( $is_premium ) ) { + // Check if the specified code version is activate. + $addon = $this->get_addon_instance( $slug_or_id ); + $is_activated = ( $is_premium === $addon->is_premium() ); + } + + return $is_activated; } /** @@ -2893,6 +3185,8 @@ function is_addon_activated( $slug_or_id ) { * @return bool */ function is_addon_connected( $slug ) { + $this->_logger->entrance(); + $sites = self::get_all_sites(); if ( ! isset( $sites[ $slug ] ) ) { @@ -2928,6 +3222,8 @@ function is_addon_connected( $slug ) { * @return bool */ function is_addon_installed( $slug ) { + $this->_logger->entrance(); + return file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $this->get_addon_basename( $slug ) ) ); } @@ -2946,13 +3242,13 @@ function get_addon_basename( $slug ) { self::instance( $slug )->get_plugin_basename(); } - $premium_basename = $slug . '-premium/' . $slug . '.php'; + $premium_basename = "{$slug}-premium/{$slug}.php"; if ( file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $premium_basename ) ) ) { return $premium_basename; } - $free_basename = $slug . '/' . $slug . '.php'; + $free_basename = "{$slug}/{$slug}.php"; return $free_basename; } @@ -3062,20 +3358,19 @@ private function deactivate_premium_only_addon_without_license( $is_after_trial_ $this->_parent->_admin_notices->add_sticky( sprintf( - __fs( ( $is_after_trial_cancel ? + $this->_parent->get_text( $is_after_trial_cancel ? 'addon-trial-cancelled-message' : - 'addon-no-license-message' ), - $this->_parent->_slug + 'addon-no-license-message' ), '' . $this->_plugin->title . '' ) . ' ' . sprintf( '%s  ➜', $this->_parent->addon_url( $this->_slug ), - esc_attr( sprintf( __fs( 'more-information-about-x', $this->_parent->_slug ), $this->_plugin->title ) ), - __fs( 'purchase-license', $this->_parent->_slug ) + esc_attr( sprintf( $this->_parent->get_text( 'more-information-about-x' ), $this->_plugin->title ) ), + $this->_parent->get_text( 'purchase-license' ) ), 'no_addon_license_' . $this->_slug, - ( $is_after_trial_cancel ? '' : __fs( 'oops', $this->_parent->_slug ) . '...' ), + ( $is_after_trial_cancel ? '' : $this->_parent->get_text( 'oops' ) . '...' ), ( $is_after_trial_cancel ? 'success' : 'error' ) ); @@ -3195,7 +3490,7 @@ function is_org_repo_compliant() { private function run_manual_sync() { $this->require_pluggable_essentials(); - if ( ! current_user_can( 'activate_plugins' ) ) { + if ( ! $this->is_user_admin() ) { return; } @@ -3507,10 +3802,10 @@ function _add_pending_activation_notice( $email = false, $is_pending_trial = fal $this->_admin_notices->add_sticky( sprintf( - __fs( 'pending-activation-message', $this->_slug ), + $this->get_text( 'pending-activation-message' ), '' . $this->get_plugin_name() . '', '' . $email . '', - __fs( $is_pending_trial ? 'start-the-trial' : 'complete-the-install', $this->_slug ) + $this->get_text( $is_pending_trial ? 'start-the-trial' : 'complete-the-install' ) ), 'activation_pending', 'Thanks!' @@ -3562,15 +3857,15 @@ function _admin_init_action() { if ( ! $this->is_addon() && ! $this->is_registered() && ! $this->is_anonymous() ) { if ( ! $this->is_pending_activation() ) { - if ( ! $this->_menu->is_activation_page() ) { + if ( ! $this->_menu->is_main_settings_page() ) { if ( $this->is_plugin_new_install() || $this->is_only_premium() ) { // Show notice for new plugin installations. $this->_admin_notices->add( sprintf( - __fs( 'you-are-step-away', $this->_slug ), + $this->get_text( 'you-are-step-away' ), sprintf( '%s', $this->get_activation_url(), - sprintf( __fs( 'activate-x-now', $this->_slug ), $this->get_plugin_name() ) + sprintf( $this->get_text( 'activate-x-now' ), $this->get_plugin_name() ) ) ), '', @@ -3583,10 +3878,10 @@ function _admin_init_action() { // Show notice for new plugin installations. $this->_admin_notices->add_sticky( sprintf( - __fs( 'few-plugin-tweaks', $this->_slug ), + $this->get_text( 'few-plugin-tweaks' ), sprintf( '%s', $this->get_activation_url(), - sprintf( __fs( 'optin-x-now', $this->_slug ), $this->get_plugin_name() ) + sprintf( $this->get_text( 'optin-x-now' ), $this->get_plugin_name() ) ) ), 'connect_account', @@ -3816,7 +4111,7 @@ function is_first_freemius_powered_version() { function _activate_plugin_event_hook() { $this->_logger->entrance( 'slug = ' . $this->_slug ); - if ( ! current_user_can( 'activate_plugins' ) ) { + if ( ! $this->is_user_admin() ) { return; } @@ -3857,8 +4152,8 @@ function _activate_plugin_event_hook() { // If activating the premium module version, add an admin notice to congratulate for an upgrade completion. if ( $is_premium_version_activation ) { $this->_admin_notices->add( - sprintf( __fs( 'successful-version-upgrade-message', $this->_slug ), sprintf( '%s', $this->_plugin->title ) ), - __fs( 'woot', $this->_slug ) . '!' + sprintf( $this->get_text( 'successful-version-upgrade-message' ), sprintf( '%s', $this->_plugin->title ) ), + $this->get_text( 'woot' ) . '!' ); } } else if ( $this->is_anonymous() ) { @@ -3892,7 +4187,10 @@ function _activate_plugin_event_hook() { $this->_storage->is_plugin_new_install = empty( $this->_storage->plugin_last_version ); } - if ( ! $this->_anonymous_mode && $this->has_api_connectivity( WP_FS__DEV_MODE ) ) { + if ( ! $this->_anonymous_mode && + $this->has_api_connectivity( WP_FS__DEV_MODE ) && + ! $this->_isAutoInstall + ) { // Store hint that the plugin was just activated to enable auto-redirection to settings. add_option( "fs_{$this->_slug}_activated", true ); } @@ -3919,7 +4217,7 @@ function _activate_plugin_event_hook() { function delete_account_event( $check_user = true ) { $this->_logger->entrance( 'slug = ' . $this->_slug ); - if ( $check_user && ! current_user_can( 'activate_plugins' ) ) { + if ( $check_user && ! $this->is_user_admin() ) { return; } @@ -4644,8 +4942,8 @@ function _uninstall_plugin_event( $check_user = true ) { * * @return string */ - private function premium_plugin_basename() { - return preg_replace( '/\//', '-premium/', $this->_free_plugin_basename, 1 ); + function premium_plugin_basename() { + return "{$this->_slug}-premium/" . basename( $this->_free_plugin_basename ); } /** @@ -4755,6 +5053,16 @@ function get_slug() { return $this->_slug; } + /** + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + * + * @return string Plugin slug. + */ + function get_target_folder_name() { + return $this->_slug . ( $this->can_use_premium_code() ? '-premium' : '' ); + } + /** * @author Vova Feldman (@svovaf) * @since 1.0.1 @@ -4866,6 +5174,20 @@ function get_plugin_version() { return $this->apply_filters( 'plugin_version', $plugin_data['Version'] ); } + /** + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + * + * @return string + */ + function get_plugin_title() { + $this->_logger->entrance(); + + $title = $this->_plugin->title; + + return $this->apply_filters( 'plugin_title', $title ); + } + /** * @author Vova Feldman (@svovaf) * @since 1.0.4 @@ -5040,7 +5362,13 @@ private static function get_all_account_addons() { } /** - * Check if user is registered. + * Check if user has connected his account (opted-in). + * + * Note: + * If the user opted-in and opted-out on a later stage, + * this will still return true. If you want to check if the + * user is currently opted-in, use: + * `$fs->is_registered() && $fs->is_tracking_allowed()` * * @author Vova Feldman (@svovaf) * @since 1.0.1 @@ -5682,6 +6010,27 @@ function is_plan( $plan, $exact = false ) { return ( $current_plan_order > $required_plan_order ); } + /** + * Check if module has only one plan. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + * + * @return bool + */ + function is_single_plan() { + $this->_logger->entrance(); + + if ( ! $this->is_registered() || + ! is_array( $this->_plans ) || + 0 === count( $this->_plans ) + ) { + return true; + } + + return ( 1 === count( $this->_plans ) ); + } + /** * Check if plan based on trial. If not in trial mode, should return false. * @@ -5822,7 +6171,7 @@ function _add_optout_dialog() { * @since 1.2.0 */ function _add_license_activation() { - if ( ! current_user_can( 'activate_plugins' ) ) { + if ( ! $this->is_user_admin() ) { // Only admins can activate a license. return; } @@ -5857,36 +6206,43 @@ function _add_license_activation() { * @since 1.1.9 */ function _activate_license_ajax_action() { + $this->_logger->entrance(); + + $this->check_ajax_referer( 'activate_license' ); + $license_key = trim( fs_request_get( 'license_key' ) ); if ( empty( $license_key ) ) { exit; } - $slug = $_POST['slug']; - $fs = ( ( $slug === $this->_slug ) ? $this : self::instance( $slug ) ); + $slug = fs_request_get( 'slug', '', 'post' ); + $fs = ( $slug === $this->_slug ) ? + $this : + $this->get_addon_instance( $slug ); + $error = false; $next_page = false; - if ( $this->is_registered() ) { + if ( $fs->is_registered() ) { $api = $fs->get_api_site_scope(); $install = $api->call( '/', 'put', array( - 'license_key' => $this->apply_filters( 'license_key', $license_key ) + 'license_key' => $fs->apply_filters( 'license_key', $license_key ) ) ); if ( isset( $install->error ) ) { $error = $install->error->message; } else { - $fs = $this->is_addon() ? - $this->get_parent_instance() : - $this; + $parent_fs = $fs->is_addon() ? + $fs->get_parent_instance() : + $fs; - $next_page = $fs->_get_sync_license_url( $this->get_id(), true ); + $next_page = $parent_fs->_get_sync_license_url( $fs->get_id(), true ); - $this->reconnect_locally(); + $fs->reconnect_locally(); } } else { - $next_page = $this->opt_in( false, false, false, $license_key ); + $next_page = $fs->opt_in( false, false, false, $license_key ); if ( isset( $next_page->error ) ) { $error = $next_page->error; @@ -5915,9 +6271,11 @@ function _activate_license_ajax_action() { * @since 1.2.1.5 */ function _update_billing_ajax_action() { - check_ajax_referer( $this->get_action_tag( 'update_billing' ), 'security' ); + $this->_logger->entrance(); - if ( ! current_user_can( 'activate_plugins' ) ) { + $this->check_ajax_referer( 'update_billing' ); + + if ( ! $this->is_user_admin() ) { // Only for admins. self::shoot_ajax_failure(); } @@ -5946,9 +6304,11 @@ function _update_billing_ajax_action() { * @since 1.2.1.5 */ function _start_trial_ajax_action() { - check_ajax_referer( $this->get_action_tag( 'start_trial' ), 'security' ); + $this->_logger->entrance(); - if ( ! current_user_can( 'activate_plugins' ) ) { + $this->check_ajax_referer( 'start_trial' ); + + if ( ! $this->is_user_admin() ) { // Only for admins. self::shoot_ajax_failure(); } @@ -5982,11 +6342,12 @@ function _start_trial_ajax_action() { * @since 1.2.0 */ function _resend_license_key_ajax_action() { - if ( ! isset( $_POST['email'] ) ) { - exit; - } + $this->_logger->entrance(); + + $this->check_ajax_referer( 'resend_license_key' ); + + $email_address = sanitize_email( trim( fs_request_get( 'email', '', 'post' ) ) ); - $email_address = trim( $_POST['email'] ); if ( empty( $email_address ) ) { exit; } @@ -6005,9 +6366,9 @@ function _resend_license_key_ajax_action() { $error = $result->error; if ( in_array( $error->code, array( 'invalid_email', 'no_user' ) ) ) { - $error = __fs( 'email-not-found' ); + $error = $this->get_text( 'email-not-found' ); } else if ( 'no_license' === $error->code ) { - $error = __fs( 'no-active-licenses' ); + $error = $this->get_text( 'no-active-licenses' ); } else { $error = $error->message; } @@ -6018,7 +6379,7 @@ function _resend_license_key_ajax_action() { ); if ( false !== $error ) { - $licenses['error'] = sprintf( '%s... %s', __fs( 'oops', $this->_slug ), strtolower( $error ) ); + $licenses['error'] = sprintf( '%s... %s', $this->get_text( 'oops' ), strtolower( $error ) ); } echo json_encode( $licenses ); @@ -6034,12 +6395,26 @@ function _resend_license_key_ajax_action() { * * @return bool */ - private function is_plugins_page() { + function is_plugins_page() { global $pagenow; return ( 'plugins.php' === $pagenow ); } + /** + * Helper method to check if user in the themes page. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.2.6 + * + * @return bool + */ + function is_themes_page() { + global $pagenow; + + return ( 'themes.php' === $pagenow ); + } + #---------------------------------------------------------------------------------- #region URL Generators #---------------------------------------------------------------------------------- @@ -6218,6 +6593,18 @@ function is_only_premium() { return $this->_is_premium_only; } + /** + * Checks if the plugin's type is "plugin". The other type is "theme". + * + * @author Leo Fajardo (@leorw) + * @since 1.2.2 + * + * @return bool + */ + function is_plugin() { + return true; + } + /** * Check if module has a premium code version. * @@ -6344,7 +6731,7 @@ static function is_ajax_action_static( $actions, $slug = '' ) { $ajax_action = fs_request_get( 'action' ); foreach ( $actions as $action ) { - if ( $ajax_action === self::get_action_tag_static( $action, $slug ) ) { + if ( $ajax_action === self::get_ajax_action_static( $action, $slug ) ) { return true; } } @@ -6405,44 +6792,67 @@ function _get_admin_page_url( $page = '', $params = array() ) { } } - if ( $this->_menu->has_menu_slug() && ! $this->_menu->is_top_level() ) { + $page_param = $this->_menu->get_slug( $page ); + + if ( ! $this->has_settings_menu() ) { + if ( ! empty( $page ) ) { + // Module doesn't have a setting page, but since the request is for + // a specific Freemius page, use the admin.php path. + return add_query_arg( array_merge( $params, array( + 'page' => $page_param, + ) ), admin_url( 'admin.php', 'admin' ) ); + } else { + if ( $this->is_activation_mode() ) { + /** + * @author Vova Feldman + * @since 1.2.1.6 + * + * If plugin doesn't have a settings page, create one for the opt-in screen. + */ + return add_query_arg( array_merge( $params, array( + 'page' => $this->_slug, + ) ), admin_url( 'admin.php', 'admin' ) ); + } else { + // Plugin without a settings page. + return admin_url( 'plugins.php' ); + } + } + } + + // Module has a submenu settings page. + if ( ! $this->_menu->is_top_level() ) { $parent_slug = $this->_menu->get_parent_slug(); $menu_file = ( false !== strpos( $parent_slug, '.php' ) ) ? $parent_slug : 'admin.php'; return add_query_arg( array_merge( $params, array( - 'page' => $this->_menu->get_slug( $page ), + 'page' => $page_param, ) ), admin_url( $menu_file, 'admin' ) ); } + // Module has a top level CPT settings page. if ( $this->_menu->is_cpt() ) { if ( empty( $page ) && $this->is_activation_mode() ) { return add_query_arg( array_merge( $params, array( - 'page' => $this->_menu->get_slug() + 'page' => $page_param ) ), admin_url( 'admin.php', 'admin' ) ); } else { if ( ! empty( $page ) ) { - $params['page'] = $this->_menu->get_slug( $page ); + $params['page'] = $page_param; } - return add_query_arg( $params, admin_url( $this->_menu->get_raw_slug(), 'admin' ) ); + return add_query_arg( + $params, + admin_url( $this->_menu->get_raw_slug(), 'admin' ) + ); } - } else { - /** - * @author Vova Feldman - * @since 1.2.1.6 - * - * If module doesn't have a settings page, create one for the opt-in screen. - */ - $menu_slug = $this->_menu->has_menu_slug() ? - $this->_menu->get_slug( $page ) : - $this->_slug; - - return add_query_arg( array_merge( $params, array( - 'page' => $menu_slug, - ) ), admin_url( 'admin.php', 'admin' ) ); } + + // Module has a custom top level settings page. + return add_query_arg( array_merge( $params, array( + 'page' => $page_param, + ) ), admin_url( 'admin.php', 'admin' ) ); } /** @@ -6453,12 +6863,11 @@ function _get_admin_page_url( $page = '', $params = array() ) { * * @param bool|number $plugin_id * @param bool $add_action_nonce + * @param array $params * * @return string */ - function _get_sync_license_url( $plugin_id = false, $add_action_nonce = true ) { - $params = array(); - + function _get_sync_license_url( $plugin_id = false, $add_action_nonce = true, $params = array() ) { if ( is_numeric( $plugin_id ) ) { $params['plugin_id'] = $plugin_id; } @@ -6584,20 +6993,52 @@ function get_options_manager( $id, $load_options = false, $prefix_slug = true ) /* Security ------------------------------------------------------------------------------------------------------------------*/ - private function _encrypt( $str ) { + private static function _encrypt( $str ) { if ( is_null( $str ) ) { return null; } - return base64_encode( $str ); + /** + * The encrypt/decrypt functions are used to protect + * the user from messing up with some of the sensitive + * data stored for the module as a JSON in the database. + * + * I used the same suggested hack by the theme review team. + * For more details, look at the function `Base64UrlDecode()` + * in `./sdk/FreemiusBase.php`. + * + * @todo Remove this hack once the base64 error is removed from the Theme Check. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.2 + */ + $fn = 'base64' . '_encode'; + + return $fn( $str ); } - private function _decrypt( $str ) { + static function _decrypt( $str ) { if ( is_null( $str ) ) { return null; } - return base64_decode( $str ); + /** + * The encrypt/decrypt functions are used to protect + * the user from messing up with some of the sensitive + * data stored for the module as a JSON in the database. + * + * I used the same suggested hack by the theme review team. + * For more details, look at the function `Base64UrlDecode()` + * in `./sdk/FreemiusBase.php`. + * + * @todo Remove this hack once the base64 error is removed from the Theme Check. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.2 + */ + $fn = 'base64' . '_decode'; + + return $fn( $str ); } /** @@ -6608,12 +7049,12 @@ private function _decrypt( $str ) { * * @return FS_Entity Return an encrypted clone entity. */ - private function _encrypt_entity( FS_Entity $entity ) { + private static function _encrypt_entity( FS_Entity $entity ) { $clone = clone $entity; $props = get_object_vars( $entity ); foreach ( $props as $key => $val ) { - $clone->{$key} = $this->_encrypt( $val ); + $clone->{$key} = self::_encrypt( $val ); } return $clone; @@ -6627,12 +7068,12 @@ private function _encrypt_entity( FS_Entity $entity ) { * * @return FS_Entity Return an decrypted clone entity. */ - private function _decrypt_entity( FS_Entity $entity ) { + private static function _decrypt_entity( FS_Entity $entity ) { $clone = clone $entity; $props = get_object_vars( $entity ); foreach ( $props as $key => $val ) { - $clone->{$key} = $this->_decrypt( $val ); + $clone->{$key} = self::_decrypt( $val ); } return $clone; @@ -6750,7 +7191,7 @@ private function _load_account() { ) { // Load site. $this->_site = clone $site; - $this->_site->plan = $this->_decrypt_entity( $this->_site->plan ); + $this->_site->plan = self::_decrypt_entity( $this->_site->plan ); // Load relevant user. $this->_user = clone $users[ $this->_site->user_id ]; @@ -6762,7 +7203,7 @@ private function _load_account() { } else { for ( $i = 0, $len = count( $this->_plans ); $i < $len; $i ++ ) { if ( $this->_plans[ $i ] instanceof FS_Plugin_Plan ) { - $this->_plans[ $i ] = $this->_decrypt_entity( $this->_plans[ $i ] ); + $this->_plans[ $i ] = self::_decrypt_entity( $this->_plans[ $i ] ); } else { unset( $this->_plans[ $i ] ); } @@ -7071,10 +7512,18 @@ function opt_in( * @param FS_User $user * @param FS_Site $site * @param bool $redirect + * @param bool $auto_install Since 1.2.1.7 If `true` and setting up an account with a valid license, will + * redirect (or return a URL) to the account page with a special parameter to + * trigger the auto installation processes. * * @return string If redirect is `false`, returns the next page the user should be redirected to. */ - function setup_account( FS_User $user, FS_Site $site, $redirect = true ) { + function setup_account( + FS_User $user, + FS_Site $site, + $redirect = true, + $auto_install = false + ) { $this->_user = $user; $this->_site = $site; @@ -7109,7 +7558,7 @@ function setup_account( FS_User $user, FS_Site $site, $redirect = true ) { if ( ! $this->is_paying_or_trial() ) { $this->_admin_notices->add_sticky( - sprintf( __fs( 'plugin-x-activation-message', $this->_slug ), '' . $this->get_plugin_name() . '' ), + sprintf( $this->get_text( 'plugin-x-activation-message' ), '' . $this->get_plugin_name() . '' ), 'activation_complete' ); } @@ -7120,20 +7569,20 @@ function setup_account( FS_User $user, FS_Site $site, $redirect = true ) { if ( $this->is_paying() ) { $this->_admin_notices->add_sticky( sprintf( - __fs( 'activation-with-plan-x-message', $this->_slug ), + $this->get_text( 'activation-with-plan-x-message' ), $this->_site->plan->title ) . $this->get_complete_upgrade_instructions(), 'plan_upgraded', - __fs( 'yee-haw', $this->_slug ) . '!' + $this->get_text( 'yee-haw' ) . '!' ); } else { $this->_admin_notices->add_sticky( sprintf( - __fs( 'trial-started-message', $this->_slug ), + $this->get_text( 'trial-started-message' ), '' . $this->get_plugin_name() . '' ) . $this->get_complete_upgrade_instructions( $this->_storage->trial_plan->title ), 'trial_started', - __fs( 'yee-haw', $this->_slug ) . '!' + $this->get_text( 'yee-haw' ) . '!' ); } } @@ -7152,6 +7601,11 @@ function setup_account( FS_User $user, FS_Site $site, $redirect = true ) { $next_page = ''; + $extra = array(); + if ( $auto_install ) { + $extra['auto_install'] = 'true'; + } + if ( is_numeric( $plugin_id ) ) { /** * @author Leo Fajardo @@ -7161,7 +7615,7 @@ function setup_account( FS_User $user, FS_Site $site, $redirect = true ) { */ if ( $this->is_anonymous() || $plugin_id != $this->_plugin->id ) { // Add-on was installed - sync license right after install. - $next_page = $this->_get_sync_license_url( $plugin_id ); + $next_page = $this->_get_sync_license_url( $plugin_id, true, $extra ); } } else { /** @@ -7175,7 +7629,7 @@ function setup_account( FS_User $user, FS_Site $site, $redirect = true ) { // Reload the page with the keys. $next_page = $this->is_anonymous() ? // If user previously skipped, redirect to account page. - $this->get_account_url() : + $this->get_account_url( false, $extra ) : $this->get_after_activation_url( 'after_connect_url' ); } @@ -7209,7 +7663,9 @@ function _install_with_new_user() { fs_request_get( 'user_secret_key' ), fs_request_get( 'install_id' ), fs_request_get( 'install_public_key' ), - fs_request_get( 'install_secret_key' ) + fs_request_get( 'install_secret_key' ), + true, + fs_request_get_bool( 'auto_install' ) ); } else if ( fs_request_has( 'pending_activation' ) ) { $this->set_pending_confirmation( fs_request_get( 'user_email' ), true ); @@ -7230,6 +7686,9 @@ function _install_with_new_user() { * @param string $install_public_key * @param string $install_secret_key * @param bool $redirect + * @param bool $auto_install Since 1.2.1.7 If `true` and setting up an account with a valid license, will + * redirect (or return a URL) to the account page with a special parameter to + * trigger the auto installation processes. * * @return string If redirect is `false`, returns the next page the user should be redirected to. */ @@ -7240,7 +7699,8 @@ private function install_with_new_user( $install_id, $install_public_key, $install_secret_key, - $redirect = true + $redirect = true, + $auto_install = false ) { $user = new FS_User(); $user->id = $user_id; @@ -7262,7 +7722,12 @@ private function install_with_new_user( $site = new FS_Site( $site_result ); $this->_site = $site; - return $this->setup_account( $this->_user, $this->_site, $redirect ); + return $this->setup_account( + $this->_user, + $this->_site, + $redirect, + $auto_install + ); } /** @@ -7399,9 +7864,9 @@ private function install_with_current_user( $install = $this->apply_filters( 'after_install_failure', $install, $args ); $this->_admin_notices->add( - sprintf( __fs( 'could-not-activate-x', $this->_slug ), $this->get_plugin_name() ) . ' ' . - __fs( 'contact-us-with-error-message', $this->_slug ) . ' ' . '' . $install->error->message . '', - __fs( 'oops', $this->_slug ) . '...', + sprintf( $this->get_text( 'could-not-activate-x' ), $this->get_plugin_name() ) . ' ' . + $this->get_text( 'contact-us-with-error-message' ) . ' ' . '' . $install->error->message . '', + $this->get_text( 'oops' ) . '...', 'error' ); @@ -7443,9 +7908,9 @@ private function _activate_addon_account( Freemius $parent_fs ) { if ( isset( $addon_install->error ) ) { $this->_admin_notices->add( - sprintf( __fs( 'could-not-activate-x', $this->_slug ), $this->get_plugin_name() ) . ' ' . - __fs( 'contact-us-with-error-message', $this->_slug ) . ' ' . '' . $addon_install->error->message . '', - __fs( 'oops', $this->_slug ) . '...', + sprintf( $this->get_text( 'could-not-activate-x' ), $this->get_plugin_name() ) . ' ' . + $this->get_text( 'contact-us-with-error-message' ) . ' ' . '' . $addon_install->error->message . '', + $this->get_text( 'oops' ) . '...', 'error' ); @@ -7529,6 +7994,8 @@ private function add_menu_action() { fs_request_is_action( $this->_slug . '_activate_new' ) ) { $this->_install_with_new_user(); + } else if ( fs_request_is_action( 'sync_user' ) && ! $this->has_settings_menu() ) { + $this->_handle_account_user_sync(); } } } @@ -7568,9 +8035,9 @@ private function override_plugin_menu_with_activation() { $hook = false; - if ( ! $this->_menu->has_menu_slug() ) { + if ( ! $this->_menu->has_menu() ) { // Add the opt-in page without a menu item. - $hook = add_submenu_page( + $hook = FS_Admin_Menu_Manager::add_subpage( null, $this->get_plugin_name(), $this->get_plugin_name(), @@ -7583,7 +8050,7 @@ private function override_plugin_menu_with_activation() { if ( false === $hook ) { // Create new menu item just for the opt-in. - $hook = add_menu_page( + $hook = FS_Admin_Menu_Manager::add_page( $this->get_plugin_name(), $this->get_plugin_name(), 'manage_options', @@ -7595,28 +8062,9 @@ private function override_plugin_menu_with_activation() { $menus = array( $this->_menu->get_parent_slug() ); if ( $this->_menu->is_override_exact() ) { - // Make sure the current page is matching the activation page. - $activation_url = strtolower( $this->get_activation_url() ); - $request_url = strtolower( $_SERVER['REQUEST_URI'] ); - - if ( parse_url( $activation_url, PHP_URL_PATH ) !== parse_url( $request_url, PHP_URL_PATH ) ) { - // Different path - DO NOT OVERRIDE PAGE. + if ( ! $this->is_matching_url( $_SERVER['REQUEST_URI'], $this->get_activation_url() ) ) { return; } - - $activation_url_params = array(); - parse_str( parse_url( $activation_url, PHP_URL_QUERY ), $activation_url_params ); - - $request_url_params = array(); - parse_str( parse_url( $request_url, PHP_URL_QUERY ), $request_url_params ); - - - foreach ( $activation_url_params as $key => $val ) { - if ( ! isset( $request_url_params[ $key ] ) || $val != $request_url_params[ $key ] ) { - // Not matching query string - DO NOT OVERRIDE PAGE. - return; - } - } } foreach ( $menus as $parent_slug ) { @@ -7633,7 +8081,7 @@ private function override_plugin_menu_with_activation() { } } - if ( $this->_menu->is_activation_page() ) { + if ( $this->is_activation_page() ) { // Clean admin page from distracting content. self::_clean_admin_content_section(); } @@ -7697,43 +8145,50 @@ private function add_submenu_items() { if ( $this->is_registered() ) { // Add user account page. $this->add_submenu_item( - __fs( 'account', $this->_slug ), + $this->get_text( 'account' ), array( &$this, '_account_page_render' ), - $this->get_plugin_name() . ' – ' . __fs( 'account', $this->_slug ), + $this->get_plugin_name() . ' – ' . $this->get_text( 'account' ), 'manage_options', 'account', array( &$this, '_account_page_load' ), WP_FS__DEFAULT_PRIORITY, - $this->_menu->is_submenu_item_visible( 'account' ) + $this->is_submenu_item_visible( 'account' ) ); } // Add contact page. $this->add_submenu_item( - __fs( 'contact-us', $this->_slug ), + $this->get_text( 'contact-us' ), array( &$this, '_contact_page_render' ), - $this->get_plugin_name() . ' – ' . __fs( 'contact-us', $this->_slug ), + $this->get_plugin_name() . ' – ' . $this->get_text( 'contact-us' ), 'manage_options', 'contact', 'Freemius::_clean_admin_content_section', WP_FS__DEFAULT_PRIORITY, - $this->_menu->is_submenu_item_visible( 'contact' ) + $this->is_submenu_item_visible( 'contact' ) ); if ( $this->has_addons() ) { $this->add_submenu_item( - __fs( 'add-ons', $this->_slug ), + $this->get_text( 'add-ons' ), array( &$this, '_addons_page_render' ), - $this->get_plugin_name() . ' – ' . __fs( 'add-ons', $this->_slug ), + $this->get_plugin_name() . ' – ' . $this->get_text( 'add-ons' ), 'manage_options', 'addons', array( &$this, '_addons_page_load' ), WP_FS__LOWEST_PRIORITY - 1, - $this->_menu->is_submenu_item_visible( 'addons' ) + $this->is_submenu_item_visible( 'addons' ) ); } - $show_pricing = ( $this->has_paid_plan() && $this->_menu->is_submenu_item_visible( 'pricing' ) ); + $show_pricing = ( + // Has at least one paid plan. + $this->has_paid_plan() && + // Didn't ask to hide the pricing page. + $this->is_submenu_item_visible( 'pricing' ) && + // Don't have a valid active license or has more than one plan. + ( ! $this->is_paying() || ! $this->is_single_plan() ) + ); // If user don't have paid plans, add pricing page // to support add-ons checkout but don't add the submenu item. // || (isset( $_GET['page'] ) && $this->_menu->get_slug( 'pricing' ) == $_GET['page']); @@ -7755,9 +8210,9 @@ private function add_submenu_items() { // Add upgrade/pricing page. $this->add_submenu_item( - __fs( $pricing_cta_slug, $this->_slug ) . '  ➤', + $this->get_text( $pricing_cta_slug ) . '  ' . ( is_rtl() ? '←' : '➤' ), array( &$this, '_pricing_page_render' ), - $this->get_plugin_name() . ' – ' . __fs( 'pricing', $this->_slug ), + $this->get_plugin_name() . ' – ' . $this->get_text( 'pricing' ), 'manage_options', 'pricing', 'Freemius::_clean_admin_content_section', @@ -7814,7 +8269,7 @@ private function embed_submenu_items() { $menu_slug = $this->_menu->get_slug( $item['menu_slug'] ); if ( ! isset( $item['url'] ) ) { - $hook = add_submenu_page( + $hook = FS_Admin_Menu_Manager::add_subpage( $item['show_submenu'] ? $this->get_top_level_menu_slug() : null, @@ -7829,7 +8284,7 @@ private function embed_submenu_items() { add_action( "load-$hook", $item['before_render_function'] ); } } else { - add_submenu_page( + FS_Admin_Menu_Manager::add_subpage( $this->get_top_level_menu_slug(), $item['page_title'], $menu_item, @@ -7922,9 +8377,9 @@ function _add_default_submenu_items() { } if ( ! $this->is_activation_mode() ) { - if ( $this->_menu->is_submenu_item_visible( 'support' ) ) { + if ( $this->is_submenu_item_visible( 'support' ) ) { $this->add_submenu_link_item( - $this->apply_filters( 'support_forum_submenu', __fs( 'support-forum', $this->_slug ) ), + $this->apply_filters( 'support_forum_submenu', $this->get_text( 'support-forum' ) ), $this->apply_filters( 'support_forum_url', 'https://wordpress.org/support/plugin/' . $this->_slug ), 'wp-support-forum', null, @@ -8050,8 +8505,10 @@ function add_submenu_link_item( #endregion ------------------------------------------------------------------ - /* Actions / Hooks / Filters - ------------------------------------------------------------------------------------------------------------------*/ + #-------------------------------------------------------------------------------- + #region Actions / Hooks / Filters + #-------------------------------------------------------------------------------- + /** * @author Vova Feldman (@svovaf) * @since 1.1.7 @@ -8085,8 +8542,30 @@ static function get_action_tag_static( $tag, $slug = '' ) { * * @return string */ - private function get_ajax_action_tag( $tag ) { - return 'wp_ajax_' . $this->get_action_tag( $tag ); + function get_ajax_action( $tag ) { + return self::get_ajax_action_static( $tag, $this->_slug ); + } + + /** + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + * + * @param string $tag + * + * @return string + */ + function get_ajax_security( $tag ) { + return wp_create_nonce( $this->get_ajax_action( $tag ) ); + } + + /** + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + * + * @param string $tag + */ + function check_ajax_referer( $tag ) { + check_ajax_referer( $this->get_ajax_action( $tag ), 'security' ); } /** @@ -8098,8 +8577,14 @@ private function get_ajax_action_tag( $tag ) { * * @return string */ - private static function get_ajax_action_tag_static( $tag, $slug = '' ) { - return 'wp_ajax_' . self::get_action_tag_static( $tag, $slug ); + private static function get_ajax_action_static( $tag, $slug = '' ) { + $action = "fs_{$tag}"; + + if ( ! empty( $slug ) ) { + $action .= "_{$slug}"; + } + + return $action; } /** @@ -8138,7 +8623,12 @@ function do_action( $tag, $arg = '' ) { * * @uses add_action() */ - function add_action( $tag, $function_to_add, $priority = WP_FS__DEFAULT_PRIORITY, $accepted_args = 1 ) { + function add_action( + $tag, + $function_to_add, + $priority = WP_FS__DEFAULT_PRIORITY, + $accepted_args = 1 + ) { $this->_logger->entrance( $tag ); add_action( $this->get_action_tag( $tag ), $function_to_add, $priority, $accepted_args ); @@ -8201,7 +8691,7 @@ static function add_ajax_action_static( } add_action( - self::get_ajax_action_tag_static( $tag, $slug ), + 'wp_ajax_' . self::get_ajax_action_static( $tag, $slug ), $function_to_add, $priority, 0 @@ -8313,6 +8803,8 @@ function has_filter( $tag, $function_to_check = false ) { return has_filter( $this->get_action_tag( $tag ), $function_to_check ); } + #endregion + /** * Override default i18n text phrases. * @@ -8347,7 +8839,7 @@ private function _store_site( $store = true ) { } $encrypted_site = clone $this->_site; - $encrypted_site->plan = $this->_encrypt_entity( $this->_site->plan ); + $encrypted_site->plan = self::_encrypt_entity( $this->_site->plan ); $sites = self::get_all_sites(); $sites[ $this->_slug ] = $encrypted_site; @@ -8370,7 +8862,7 @@ private function _store_plans( $store = true ) { // Copy plans. $encrypted_plans = array(); for ( $i = 0, $len = count( $this->_plans ); $i < $len; $i ++ ) { - $encrypted_plans[] = $this->_encrypt_entity( $this->_plans[ $i ] ); + $encrypted_plans[] = self::_encrypt_entity( $this->_plans[ $i ] ); } $plans[ $this->_slug ] = $encrypted_plans; @@ -8549,7 +9041,7 @@ private function _handle_account_user_sync() { $this->_user->last = $user->last; $this->_user->email = $user->email; - $is_menu_item_account_visible = $this->_menu->is_submenu_item_visible( 'account' ); + $is_menu_item_account_visible = $this->is_submenu_item_visible( 'account' ); if ( $user->is_verified && ( ! isset( $this->_user->is_verified ) || false === $this->_user->is_verified ) @@ -8559,8 +9051,8 @@ private function _handle_account_user_sync() { $this->do_action( 'account_email_verified', $user->email ); $this->_admin_notices->add( - __fs( 'email-verified-message', $this->_slug ), - __fs( 'right-on', $this->_slug ) . '!', + $this->get_text( 'email-verified-message' ), + $this->get_text( 'right-on' ) . '!', 'success', // Make admin sticky if account menu item is invisible, // since the page will be auto redirected to the plugin's @@ -8813,7 +9305,7 @@ function _fetch_payments( $plugin_id = false ) { $plugin_id = $this->_plugin->id; } - $result = $api->get( "/plugins/{$plugin_id}/payments.json", true ); + $result = $api->get( "/plugins/{$plugin_id}/payments.json?include_addons=true", true ); if ( ! isset( $result->error ) ) { for ( $i = 0, $len = count( $result->payments ); $i < $len; $i ++ ) { @@ -8990,6 +9482,20 @@ function can_use_premium_code() { return $this->is_trial() || $this->has_features_enabled_license(); } + /** + * Checks if the current user can activate plugins or switch themes. Note that this method should only be used + * after the `init` action is triggered because it is using `current_user_can()` which is only functional after + * the context user is authenticated. + * + * @author Leo Fajardo (@leorw) + * @since 1.2.2 + * + * @return bool + */ + function is_user_admin() { + return current_user_can( 'activate_plugins' ); + } + /** * Sync site's plan. * @@ -9073,22 +9579,22 @@ private function _sync_addon_license( $addon_id, $background ) { $this->_admin_notices->add_sticky( FS_Plan_Manager::instance()->has_free_plan( $plans ) ? sprintf( - __fs( 'addon-successfully-upgraded-message', $this->_slug ), + $this->get_text( 'addon-successfully-upgraded-message' ), $addon->title ) . ' ' . $this->get_latest_download_link( - __fs( 'download-latest-version', $this->_slug ), + $this->get_text( 'download-latest-version' ), $addon_id ) : sprintf( - __fs( 'addon-successfully-purchased-message', $this->_slug ), + $this->get_text( 'addon-successfully-purchased-message' ), $addon->title ) . ' ' . $this->get_latest_download_link( - __fs( 'download-latest-version', $this->_slug ), + $this->get_text( 'download-latest-version' ), $addon_id ), 'addon_plan_upgraded_' . $addon->slug, - __fs( 'yee-haw', $this->_slug ) . '!' + $this->get_text( 'yee-haw' ) . '!' ); } } @@ -9133,11 +9639,11 @@ private function _sync_plugin_license( $background = false ) { if ( ! self::$_global_admin_notices->has_sticky( 'api_blocked' ) ) { self::$_global_admin_notices->add( sprintf( - __fs( 'server-blocking-access', $this->_slug ), + $this->get_text( 'server-blocking-access' ), $this->get_plugin_name(), '' . $api->get_url() . '' - ) . '
' . __fs( 'server-error-message', $this->_slug ) . var_export( $site->error, true ), - __fs( 'oops', $this->_slug ) . '...', + ) . '
' . $this->get_text( 'server-error-message' ) . var_export( $site->error, true ), + $this->get_text( 'oops' ) . '...', 'error', $background, false, @@ -9147,8 +9653,8 @@ private function _sync_plugin_license( $background = false ) { } else { // Authentication params are broken. $this->_admin_notices->add( - __fs( 'wrong-authentication-param-message', $this->_slug ), - __fs( 'oops', $this->_slug ) . '...', + $this->get_text( 'wrong-authentication-param-message' ), + $this->get_text( 'oops' ) . '...', 'error' ); } @@ -9275,19 +9781,19 @@ private function _sync_plugin_license( $background = false ) { if ( $plan->is_free() ) { $this->_admin_notices->add( sprintf( - __fs( 'plan-did-not-change-message', $this->_slug ), - '' . $plan->title . ( $this->is_trial() ? ' ' . __fs( 'trial', $this->_slug ) : '' ) . '' + $this->get_text( 'plan-did-not-change-message' ), + '' . $plan->title . ( $this->is_trial() ? ' ' . $this->get_text( 'trial' ) : '' ) . '' ) . ' ' . sprintf( '%s', $this->contact_url( 'bug', - sprintf( __fs( 'plan-did-not-change-email-message', $this->_slug ), + sprintf( $this->get_text( 'plan-did-not-change-email-message' ), strtoupper( $plan->name ) ) ), - __fs( 'contact-us-here', $this->_slug ) + $this->get_text( 'contact-us-here' ) ), - __fs( 'hmm', $this->_slug ) . '...' + $this->get_text( 'hmm' ) . '...' ); } } @@ -9295,11 +9801,11 @@ private function _sync_plugin_license( $background = false ) { case 'upgraded': $this->_admin_notices->add_sticky( sprintf( - __fs( 'plan-upgraded-message', $this->_slug ), + $this->get_text( 'plan-upgraded-message' ), '' . $this->get_plugin_name() . '' ) . $this->get_complete_upgrade_instructions(), 'plan_upgraded', - __fs( 'yee-haw', $this->_slug ) . '!' + $this->get_text( 'yee-haw' ) . '!' ); $this->_admin_notices->remove_sticky( array( @@ -9312,7 +9818,7 @@ private function _sync_plugin_license( $background = false ) { case 'changed': $this->_admin_notices->add_sticky( sprintf( - __fs( 'plan-changed-to-x-message', $this->_slug ), + $this->get_text( 'plan-changed-to-x-message' ), $this->_site->plan->title ), 'plan_changed' @@ -9327,41 +9833,41 @@ private function _sync_plugin_license( $background = false ) { break; case 'downgraded': $this->_admin_notices->add_sticky( - sprintf( __fs( 'license-expired-blocking-message', $this->_slug ) ), + sprintf( $this->get_text( 'license-expired-blocking-message' ) ), 'license_expired', - __fs( 'hmm', $this->_slug ) . '...' + $this->get_text( 'hmm' ) . '...' ); $this->_admin_notices->remove_sticky( 'plan_upgraded' ); break; case 'cancelled': $this->_admin_notices->add( - __fs( 'license-cancelled', $this->_slug ) . ' ' . + $this->get_text( 'license-cancelled' ) . ' ' . sprintf( '%s', $this->contact_url( 'bug' ), - __fs( 'contact-us-here', $this->_slug ) + $this->get_text( 'contact-us-here' ) ), - __fs( 'hmm', $this->_slug ) . '...', + $this->get_text( 'hmm' ) . '...', 'error' ); $this->_admin_notices->remove_sticky( 'plan_upgraded' ); break; case 'expired': $this->_admin_notices->add_sticky( - sprintf( __fs( 'license-expired-non-blocking-message', $this->_slug ), $this->_site->plan->title ), + sprintf( $this->get_text( 'license-expired-non-blocking-message' ), $this->_site->plan->title ), 'license_expired', - __fs( 'hmm', $this->_slug ) . '...' + $this->get_text( 'hmm' ) . '...' ); $this->_admin_notices->remove_sticky( 'plan_upgraded' ); break; case 'trial_started': $this->_admin_notices->add_sticky( sprintf( - __fs( 'trial-started-message', $this->_slug ), + $this->get_text( 'trial-started-message' ), '' . $this->get_plugin_name() . '' ) . $this->get_complete_upgrade_instructions( $this->_storage->trial_plan->title ), 'trial_started', - __fs( 'yee-haw', $this->_slug ) . '!' + $this->get_text( 'yee-haw' ) . '!' ); $this->_admin_notices->remove_sticky( array( @@ -9370,9 +9876,9 @@ private function _sync_plugin_license( $background = false ) { break; case 'trial_expired': $this->_admin_notices->add_sticky( - __fs( 'trial-expired-message', $this->_slug ), + $this->get_text( 'trial-expired-message' ), 'trial_expired', - __fs( 'hmm', $this->_slug ) . '...' + $this->get_text( 'hmm' ) . '...' ); $this->_admin_notices->remove_sticky( array( 'trial_started', @@ -9440,16 +9946,16 @@ protected function _activate_license( $background = false ) { if ( ! $background ) { $this->_admin_notices->add( sprintf( '%s %s', - __fs( 'license-activation-failed-message', $this->_slug ), + $this->get_text( 'license-activation-failed-message' ), ( is_object( $license ) && isset( $license->error ) ? $license->error->message : sprintf( '%s
%s', - __fs( 'server-error-message', $this->_slug ), + $this->get_text( 'server-error-message' ), var_export( $license, true ) ) ) ), - __fs( 'hmm', $this->_slug ) . '...', + $this->get_text( 'hmm' ) . '...', 'error' ); } @@ -9471,10 +9977,10 @@ protected function _activate_license( $background = false ) { if ( ! $background ) { $this->_admin_notices->add_sticky( - __fs( 'license-activated-message', $this->_slug ) . + $this->get_text( 'license-activated-message' ) . $this->get_complete_upgrade_instructions(), 'license_activated', - __fs( 'yee-haw', $this->_slug ) . '!' + $this->get_text( 'yee-haw' ) . '!' ); } @@ -9495,8 +10001,8 @@ protected function _deactivate_license( $show_notice = true ) { if ( ! is_object( $this->_license ) ) { $this->_admin_notices->add( - sprintf( __fs( 'no-active-license-message', $this->_slug ), $this->_site->plan->title ), - __fs( 'hmm', $this->_slug ) . '...' + sprintf( $this->get_text( 'no-active-license-message' ), $this->_site->plan->title ), + $this->get_text( 'hmm' ) . '...' ); return; @@ -9507,9 +10013,9 @@ protected function _deactivate_license( $show_notice = true ) { if ( isset( $license->error ) ) { $this->_admin_notices->add( - __fs( 'license-deactivation-failed-message', $this->_slug ) . '
' . - __fs( 'server-error-message', $this->_slug ) . ' ' . var_export( $license->error, true ), - __fs( 'hmm', $this->_slug ) . '...', + $this->get_text( 'license-deactivation-failed-message' ) . '
' . + $this->get_text( 'server-error-message' ) . ' ' . var_export( $license->error, true ), + $this->get_text( 'hmm' ) . '...', 'error' ); @@ -9534,8 +10040,8 @@ protected function _deactivate_license( $show_notice = true ) { if ( $show_notice ) { $this->_admin_notices->add( - sprintf( __fs( 'license-deactivation-message', $this->_slug ), $this->_site->plan->title ), - __fs( 'ok', $this->_slug ) + sprintf( $this->get_text( 'license-deactivation-message' ), $this->_site->plan->title ), + $this->get_text( 'ok' ) ); } @@ -9583,7 +10089,7 @@ private function _downgrade_site() { $this->_admin_notices->remove_sticky( 'plan_upgraded' ); $this->_admin_notices->add( - sprintf( __fs( 'plan-x-downgraded-message', $this->_slug ), + sprintf( $this->get_text( 'plan-x-downgraded-message' ), $plan->title, human_time_diff( time(), strtotime( $this->_license->expiration ) ) ) @@ -9593,8 +10099,8 @@ private function _downgrade_site() { $this->_store_site(); } else { $this->_admin_notices->add( - __fs( 'plan-downgraded-failure-message', $this->_slug ), - __fs( 'oops', $this->_slug ) . '...', + $this->get_text( 'plan-downgraded-failure-message' ), + $this->get_text( 'oops' ) . '...', 'error' ); } @@ -9614,8 +10120,8 @@ function start_trial( $plan_name = false ) { if ( $this->is_trial() ) { // Already in trial mode. $this->_admin_notices->add( - __fs( 'in-trial-mode', $this->_slug ), - __fs( 'oops', $this->_slug ) . '...', + $this->get_text( 'in-trial-mode' ), + $this->get_text( 'oops' ) . '...', 'error' ); @@ -9625,8 +10131,8 @@ function start_trial( $plan_name = false ) { if ( $this->_site->is_trial_utilized() ) { // Trial was already utilized. $this->_admin_notices->add( - __fs( 'trial-utilized', $this->_slug ), - __fs( 'oops', $this->_slug ) . '...', + $this->get_text( 'trial-utilized' ), + $this->get_text( 'oops' ) . '...', 'error' ); @@ -9639,8 +10145,8 @@ function start_trial( $plan_name = false ) { if ( false === $plan ) { // Plan doesn't exist. $this->_admin_notices->add( - sprintf( __fs( 'trial-plan-x-not-exist', $this->_slug ), $plan_name ), - __fs( 'oops', $this->_slug ) . '...', + sprintf( $this->get_text( 'trial-plan-x-not-exist' ), $plan_name ), + $this->get_text( 'oops' ) . '...', 'error' ); @@ -9650,8 +10156,8 @@ function start_trial( $plan_name = false ) { if ( ! $plan->has_trial() ) { // Plan doesn't exist. $this->_admin_notices->add( - sprintf( __fs( 'plan-x-no-trial', $this->_slug ), $plan_name ), - __fs( 'oops', $this->_slug ) . '...', + sprintf( $this->get_text( 'plan-x-no-trial' ), $plan_name ), + $this->get_text( 'oops' ) . '...', 'error' ); @@ -9661,8 +10167,8 @@ function start_trial( $plan_name = false ) { if ( ! $this->has_trial_plan() ) { // None of the plans have a trial. $this->_admin_notices->add( - __fs( 'no-trials', $this->_slug ), - __fs( 'oops', $this->_slug ) . '...', + $this->get_text( 'no-trials' ), + $this->get_text( 'oops' ) . '...', 'error' ); @@ -9680,8 +10186,8 @@ function start_trial( $plan_name = false ) { if ( ! $this->is_api_result_entity( $plan ) ) { // Some API error while trying to start the trial. $this->_admin_notices->add( - __fs( 'unexpected-api-error', $this->_slug ) . ' ' . var_export( $plan, true ), - __fs( 'oops', $this->_slug ) . '...', + $this->get_text( 'unexpected-api-error' ) . ' ' . var_export( $plan, true ), + $this->get_text( 'oops' ) . '...', 'error' ); @@ -9707,8 +10213,8 @@ private function _cancel_trial() { if ( ! $this->is_trial() ) { $this->_admin_notices->add( - __fs( 'trial-cancel-no-trial-message', $this->_slug ), - __fs( 'oops', $this->_slug ) . '...', + $this->get_text( 'trial-cancel-no-trial-message' ), + $this->get_text( 'oops' ) . '...', 'error' ); @@ -9758,7 +10264,7 @@ private function _cancel_trial() { ! $this->deactivate_premium_only_addon_without_license( true ) ) { $this->_admin_notices->add( - sprintf( __fs( 'trial-cancel-message', $this->_slug ), $this->_storage->trial_plan->title ) + sprintf( $this->get_text( 'trial-cancel-message' ), $this->_storage->trial_plan->title ) ); } @@ -9766,8 +10272,8 @@ private function _cancel_trial() { unset( $this->_storage->trial_plan ); } else { $this->_admin_notices->add( - __fs( 'trial-cancel-failure-message', $this->_slug ), - __fs( 'oops', $this->_slug ) . '...', + $this->get_text( 'trial-cancel-failure-message' ), + $this->get_text( 'oops' ) . '...', 'error' ); } @@ -9996,21 +10502,21 @@ private function check_updates( $background = false, $plugin_id = false, $flush if ( ! $background ) { $this->_admin_notices->add( sprintf( - __fs( 'version-x-released', $this->_slug ) . ' ' . __fs( 'please-download-x', $this->_slug ), + $this->get_text( 'version-x-released' ) . ' ' . $this->get_text( 'please-download-x' ), $update->version, sprintf( '%s', $this->get_account_url( 'download_latest' ), - sprintf( __fs( 'latest-x-version', $this->_slug ), $this->_site->plan->title ) + sprintf( $this->get_text( 'latest-x-version' ), $this->_site->plan->title ) ) ), - __fs( 'new', $this->_slug ) . '!' + $this->get_text( 'new' ) . '!' ); } } else if ( false === $new_version && ! $background ) { $this->_admin_notices->add( - __fs( 'you-have-latest', $this->_slug ), - __fs( 'you-are-good', $this->_slug ) + $this->get_text( 'you-have-latest' ), + $this->get_text( 'you-are-good' ) ); } @@ -10276,7 +10782,7 @@ private function verify_email() { if ( ! isset( $result->error ) ) { $this->_admin_notices->add( sprintf( - __fs( 'verification-email-sent-message', $this->_slug ), + $this->get_text( 'verification-email-sent-message' ), sprintf( '%2s', esc_url( $this->_user->email ), $this->_user->email ) ) ); } else { @@ -10294,6 +10800,14 @@ private function verify_email() { * @return string */ private function get_activation_url( $params = array() ) { + if ( $this->is_addon() ) { + /** + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 Add-on's activation is the parent's module activation. + */ + return $this->get_parent_instance()->get_activation_url( $params ); + } + return $this->apply_filters( 'connect_url', $this->_get_admin_page_url( '', $params ) ); } @@ -10341,7 +10855,7 @@ function get_after_activation_url( $filter ) { * */ private function _handle_account_edits() { - if ( ! current_user_can( 'activate_plugins' ) ) { + if ( ! $this->is_user_admin() ) { return; } @@ -10424,20 +10938,20 @@ private function _handle_account_edits() { $candidate_email = fs_request_get( 'candidate_email', '' ); if ( $this->init_change_owner( $candidate_email ) ) { - $this->_admin_notices->add( sprintf( __fs( 'change-owner-request-sent-x', $this->_slug ), '' . $this->_user->email . '' ) ); + $this->_admin_notices->add( sprintf( $this->get_text( 'change-owner-request-sent-x' ), '' . $this->_user->email . '' ) ); } break; case 'owner_confirmed': $candidate_email = fs_request_get( 'candidate_email', '' ); - $this->_admin_notices->add( sprintf( __fs( 'change-owner-request_owner-confirmed', $this->_slug ), '' . $candidate_email . '' ) ); + $this->_admin_notices->add( sprintf( $this->get_text( 'change-owner-request_owner-confirmed' ), '' . $candidate_email . '' ) ); break; case 'candidate_confirmed': if ( $this->complete_change_owner() ) { $this->_admin_notices->add_sticky( - sprintf( __fs( 'change-owner-request_candidate-confirmed', $this->_slug ), '' . $this->_user->email . '' ), + sprintf( $this->get_text( 'change-owner-request_candidate-confirmed' ), '' . $this->_user->email . '' ), 'ownership_changed', - __fs( 'congrats', $this->_slug ) . '!' + $this->get_text( 'congrats' ) . '!' ); } else { // @todo Handle failed ownership change message. @@ -10457,23 +10971,23 @@ private function _handle_account_edits() { switch ( $result->error->code ) { case 'user_exist': $this->_admin_notices->add( - __fs( 'user-exist-message', $this->_slug ) . ' ' . - sprintf( __fs( 'user-exist-message_ownership', $this->_slug ), '' . $new_email . '' ) . + $this->get_text( 'user-exist-message' ) . ' ' . + sprintf( $this->get_text( 'user-exist-message_ownership' ), '' . $new_email . '' ) . sprintf( '', $this->get_account_url( 'change_owner', array( 'state' => 'init', 'candidate_email' => $new_email ) ), - __fs( 'change-ownership', $this->_slug ) + $this->get_text( 'change-ownership' ) ), - __fs( 'oops', $this->_slug ) . '...', + $this->get_text( 'oops' ) . '...', 'error' ); break; } } else { - $this->_admin_notices->add( __fs( 'email-updated-message', $this->_slug ) ); + $this->_admin_notices->add( $this->get_text( 'email-updated-message' ) ); } return; @@ -10485,12 +10999,12 @@ private function _handle_account_edits() { if ( isset( $result->error ) ) { $this->_admin_notices->add( - __fs( 'name-update-failed-message', $this->_slug ), - __fs( 'oops', $this->_slug ) . '...', + $this->get_text( 'name-update-failed-message' ), + $this->get_text( 'oops' ) . '...', 'error' ); } else { - $this->_admin_notices->add( __fs( 'name-updated-message', $this->_slug ) ); + $this->_admin_notices->add( $this->get_text( 'name-updated-message' ) ); } return; @@ -10550,7 +11064,7 @@ private function _handle_account_edits() { $this->do_action( 'account_property_edit', 'site', $site_property, $site_property_value ); $this->_admin_notices->add( sprintf( - __fs( 'x-updated', $this->_slug ), + $this->get_text( 'x-updated' ), '' . str_replace( '_', ' ', $p ) . '' ) ); return; @@ -10675,8 +11189,8 @@ function fs_addons_body_class( $classes ) { if ( ! $this->is_registered() && $this->is_org_repo_compliant() ) { $this->_admin_notices->add( - sprintf( __fs( 'addons-info-external-message', $this->_slug ), '' . $this->get_plugin_name() . '' ), - __fs( 'heads-up', $this->_slug ), + sprintf( $this->get_text( 'addons-info-external-message' ), '' . $this->get_plugin_name() . '' ), + $this->get_text( 'heads-up' ), 'update-nag' ); } @@ -10913,7 +11427,7 @@ function _fix_start_trial_menu_item_url() { * @return bool If trial notice added. */ function _add_trial_notice() { - if ( ! current_user_can( 'activate_plugins' ) ) { + if ( ! $this->is_user_admin() ) { return false; } @@ -10982,7 +11496,7 @@ function _add_trial_notice() { $trial_period = $this->_trial_days; $require_payment = $this->_is_trial_require_payment; $trial_url = $this->get_trial_url(); - $plans_string = strtolower( __fs( 'awesome', $this->_slug ) ); + $plans_string = strtolower( $this->get_text( 'awesome' ) ); if ( $this->is_registered() ) { // If opted-in, override trial with up to date data from API. @@ -11022,7 +11536,7 @@ function _add_trial_notice() { } $message = sprintf( - __fs( 'hey', $this->_slug ) . '! ' . __fs( 'trial-x-promotion-message', $this->_slug ), + $this->get_text( 'hey' ) . '! ' . $this->get_text( 'trial-x-promotion-message' ), sprintf( '%s', $this->get_plugin_name() ), $plans_string, $trial_period @@ -11030,15 +11544,15 @@ function _add_trial_notice() { // "No Credit-Card Required" or "No Commitment for N Days". $cc_string = $require_payment ? - sprintf( __fs( 'no-commitment-for-x-days', $this->_slug ), $trial_period ) : - __fs( 'no-cc-required', $this->_slug ) . '!'; + sprintf( $this->get_text( 'no-commitment-for-x-days' ), $trial_period ) : + $this->get_text( 'no-cc-required' ) . '!'; // Start trial button. $button = ' ' . sprintf( '', $trial_url, - __fs( 'start-free-trial', $this->_slug ) + $this->get_text( 'start-free-trial' ) ); $this->_admin_notices->add_sticky( @@ -11136,7 +11650,7 @@ function _add_upgrade_action_link() { if ( $this->is_registered() ) { if ( ! $this->is_paying() && $this->has_paid_plan() ) { $this->add_plugin_action_link( - __fs( 'upgrade', $this->_slug ), + $this->get_text( 'upgrade' ), $this->get_upgrade_url(), false, 7, @@ -11146,7 +11660,7 @@ function _add_upgrade_action_link() { if ( $this->has_addons() ) { $this->add_plugin_action_link( - __fs( 'add-ons', $this->_slug ), + $this->get_text( 'add-ons' ), $this->_get_admin_page_url( 'addons' ), false, 9, @@ -11174,9 +11688,10 @@ function _add_license_action_link() { add_action( 'admin_footer', array( &$this, '_add_license_activation_dialog_box' ) ); } - $link_text = __fs( - $this->is_free_plan() ? 'activate-license' : 'change-license', - $this->_slug + $link_text = $this->get_text( + $this->is_free_plan() ? + 'activate-license' : + 'change-license' ); $this->add_plugin_action_link( @@ -11201,6 +11716,11 @@ function _add_tracking_links() { $this->_logger->entrance(); + if ( ! $this->is_plugins_page() ) { + // Only show tracking links on the plugin's page. + return; + } + if ( ! $this->is_enable_anonymous() ) { // Don't allow to opt-out if anonymous mode is disabled. return; @@ -11251,7 +11771,7 @@ function _add_tracking_links() { } $this->add_plugin_action_link( - __fs( $link_text_id, $this->_slug ), + $this->get_text( $link_text_id ), $url, false, 13, @@ -11353,15 +11873,12 @@ function _modify_plugin_action_links_hook( $links, $file ) { } if ( ! empty( $deactivate_link ) ) { - if ( ! $this->is_paying_or_trial() || $this->is_premium() ) { - /* - * This HTML element is used to identify the correct plugin when attaching an event to its Deactivate link. - * - * If user is paying or in trial and have the free version installed, - * assume that the deactivation is for the upgrade process, so this is not needed. - */ - $deactivate_link .= ''; - } + /** + * This HTML element is used to identify the correct plugin when attaching an event to its Deactivate link. + * + * @since 1.2.1.6 Always show the deactivation feedback form since we added automatic free version deactivation upon premium code activation. + */ + $deactivate_link .= ''; // Append deactivation link. $before_deactivate['deactivate'] = $deactivate_link; @@ -11422,20 +11939,20 @@ private function get_complete_upgrade_instructions( $plan_title = '' ) { // @since 1.2.1.5 The free version is auto deactivated. $deactivation_step = version_compare( $this->version, '1.2.1.5', '<' ) ? - ( '
  • ' . __fs( 'deactivate-free-version', $this->_slug ) . '.
  • ' ) : + ( '
  • ' . $this->get_text( 'deactivate-free-version' ) . '.
  • ' ) : ''; return sprintf( ' %s:
    1. %s.
    2. %s
    3. %s (%s).
    ', - __fs( 'follow-steps-to-complete-upgrade', $this->_slug ), + $this->get_text( 'follow-steps-to-complete-upgrade' ), $this->get_latest_download_link( sprintf( - __fs( 'download-latest-x-version', $this->_slug ), + $this->get_text( 'download-latest-x-version' ), $plan_title ) ), $deactivation_step, - __fs( 'upload-and-activate', $this->_slug ), + $this->get_text( 'upload-and-activate' ), '//bit.ly/upload-wp-plugin', - __fs( 'howto-upload-activate', $this->_slug ) + $this->get_text( 'howto-upload-activate' ) ); } @@ -11490,6 +12007,18 @@ static function _include_plugins_in_auto_update( $update, $item ) { return $update; } + /** + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + * + * @param string $key + * + * @return string + */ + function get_text( $key ) { + return fs_text( $key, $this->_slug ); + } + #---------------------------------------------------------------------------------- #region Versioning #---------------------------------------------------------------------------------- @@ -11537,8 +12066,6 @@ function is_plugin_upgrade_mode() { * * @author Vova Feldman (@svovaf) * @since 1.0.9 - * - * @return bool */ function set_plugin_upgrade_complete() { $this->_storage->plugin_upgrade_mode = false; @@ -11566,6 +12093,168 @@ function is_permission_requested( $permission ) { #endregion + #---------------------------------------------------------------------------------- + #region Auto Activation + #---------------------------------------------------------------------------------- + + /** + * Hints the SDK if running an auto-installation. + * + * @var bool + */ + private $_isAutoInstall = false; + + /** + * After upgrade callback to install and auto activate a plugin. + * This code will only be executed on explicit request from the user, + * following the practice Jetpack are using with their theme installations. + * + * @link https://make.wordpress.org/plugins/2017/03/16/clarification-of-guideline-8-executable-code-and-installs/ + * + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + */ + function _install_premium_version_ajax_action() { + $this->_logger->entrance(); + + $this->check_ajax_referer( 'install_premium_version' ); + + if ( ! $this->is_registered() ) { + // Not registered. + self::shoot_ajax_failure( array( + 'message' => $this->get_text( 'auto-install-error-not-opted-in' ), + 'code' => 'premium_installed', + ) ); + } + + $plugin_id = fs_request_get( 'module_id', $this->get_id() ); + + if ( ! FS_Plugin::is_valid_id( $plugin_id ) ) { + // Invalid ID. + self::shoot_ajax_failure( array( + 'message' => $this->get_text( 'auto-install-error-invalid-id' ), + 'code' => 'invalid_module_id', + ) ); + } + + if ( $plugin_id == $this->get_id() ) { + if ( $this->is_premium() ) { + // Already using the premium code version. + self::shoot_ajax_failure( array( + 'message' => $this->get_text( 'auto-install-error-premium-activated' ), + 'code' => 'premium_installed', + ) ); + } + if ( ! $this->can_use_premium_code() ) { + // Don't have access to the premium code. + self::shoot_ajax_failure( array( + 'message' => $this->get_text( 'auto-install-error-invalid-license' ), + 'code' => 'invalid_license', + ) ); + } + if ( ! $this->has_release_on_freemius() ) { + // Plugin is a serviceware, no premium code version. + self::shoot_ajax_failure( array( + 'message' => $this->get_text( 'auto-install-error-serviceware' ), + 'code' => 'premium_version_missing', + ) ); + } + } else { + $addon = $this->get_addon( $plugin_id ); + + if ( ! is_object( $addon ) ) { + // Invalid add-on ID. + self::shoot_ajax_failure( array( + 'message' => $this->get_text( 'auto-install-error-invalid-id' ), + 'code' => 'invalid_module_id', + ) ); + } + + if ( $this->is_addon_activated( $plugin_id, true ) ) { + // Premium add-on version is already activated. + self::shoot_ajax_failure( array( + 'message' => $this->get_text( 'auto-install-error-premium-addon-activated' ), + 'code' => 'premium_installed', + ) ); + } + } + + $this->_isAutoInstall = true; + + // Try to install and activate. + $updater = new FS_Plugin_Updater( $this ); + $result = $updater->install_and_activate_plugin( $plugin_id ); + + if ( is_array( $result ) && ! empty( $result['message'] ) ) { + self::shoot_ajax_failure( array( + 'message' => $result['message'], + 'code' => $result['code'], + ) ); + } + + self::shoot_ajax_success( $result ); + } + + /** + * Displays module activation dialog box after a successful upgrade + * where the user explicitly requested to auto download and install + * the premium version. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + */ + function _add_auto_installation_dialog_box() { + $this->_logger->entrance(); + + if ( ! $this->is_registered() ) { + // Not registered. + return; + } + + $plugin_id = fs_request_get( 'plugin_id', $this->get_id() ); + + if ( ! FS_Plugin::is_valid_id( $plugin_id ) ) { + // Invalid module ID. + return; + } + + if ( $plugin_id == $this->get_id() ) { + if ( $this->is_premium() ) { + // Already using the premium code version. + return; + } + if ( ! $this->can_use_premium_code() ) { + // Don't have access to the premium code. + return; + } + if ( ! $this->has_release_on_freemius() ) { + // Plugin is a serviceware, no premium code version. + return; + } + } else { + $addon = $this->get_addon( $plugin_id ); + + if ( ! is_object( $addon ) ) { + // Invalid add-on ID. + return; + } + + if ( $this->is_addon_activated( $plugin_id, true ) ) { + // Premium add-on version is already activated. + return; + } + } + + $vars = array( + 'id' => $plugin_id, + 'slug' => $this->_slug, + ); + + fs_require_template( 'auto-installation.php', $vars ); + } + + #endregion + #---------------------------------------------------------------------------------- #region Marketing #---------------------------------------------------------------------------------- diff --git a/includes/class-fs-logger.php b/includes/class-fs-logger.php index cae7210b7..5ecb1eb45 100644 --- a/includes/class-fs-logger.php +++ b/includes/class-fs-logger.php @@ -85,10 +85,12 @@ public static function get_logger( $id, $on = false, $echo = false ) { * @since 1.2.1.6 */ private static function init() { - self::$_ownerName = get_current_user(); + self::$_ownerName = function_exists( 'get_current_user' ) ? + get_current_user() : + 'unknown'; self::$_isStorageLoggingOn = ( 1 == get_option( 'fs_storage_logger', 0 ) ); self::$_abspathLength = strlen( ABSPATH ); - self::$_processID = mt_rand(0, 32000); + self::$_processID = mt_rand( 0, 32000 ); // Process ID may be `false` on errors. if ( ! is_numeric( self::$_processID ) ) { @@ -186,7 +188,7 @@ private function _log( &$message, $type = 'log', $wrapper ) { self::$LOG[] = $log; - if ( $this->is_echo_on() ) { + if ( $this->is_echo_on() && ! Freemius::is_ajax() ) { echo self::format_html( $log ) . "\n"; } } diff --git a/includes/class-fs-plugin-updater.php b/includes/class-fs-plugin-updater.php index 8349df795..647ad25cf 100755 --- a/includes/class-fs-plugin-updater.php +++ b/includes/class-fs-plugin-updater.php @@ -123,7 +123,7 @@ function edit_and_echo_plugin_update_row( $file, $plugin_data ) { $plugin_update_row = preg_replace( '/(\)(.+)(\/is', '$1 $2 ' . sprintf( - __fs( 'renew-license-now' ), + $this->_fs->get_text( 'renew-license-now' ), '', '', $r->new_version ) . '$4', @@ -318,13 +318,13 @@ function plugins_api_filter( $data, $action = '', $args = null ) { } // Get plugin's newest update. - $new_version = $this->_fs->_fetch_latest_version( $is_addon ? $addon->id : false ); + $new_version = $this->get_latest_download_details( $is_addon ? $addon->id : false ); if ( ! is_object( $new_version ) || empty( $new_version->version ) ) { $data->version = $this->_fs->get_plugin_version(); } else { if ( $is_addon ) { - $data->name = $addon->title . ' ' . __fs( 'addon', $this->_fs->get_slug() ); + $data->name = $addon->title . ' ' . $this->_fs->get_text( 'addon' ); $data->slug = $addon->slug; $data->url = WP_FS__ADDRESS; $data->package = $new_version->url; @@ -343,6 +343,18 @@ function plugins_api_filter( $data, $action = '', $args = null ) { return $data; } + /** + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + * + * @param number|bool $addon_id + * + * @return object + */ + private function get_latest_download_details( $addon_id = false ) { + return $this->_fs->_fetch_latest_version( $addon_id ); + } + /** * Checks if a given basename has a matching folder name * with the current context plugin. @@ -359,7 +371,7 @@ private function is_correct_folder_name( $basename = '' ) { $basename = $this->_fs->get_plugin_basename(); } - return ( $this->_fs->get_slug() . ( $this->_fs->is_premium() ? '-premium' : '' ) != trim( dirname( $basename ), '/\\' ) ); + return ( $this->_fs->get_target_folder_name() != trim( dirname( $basename ), '/\\' ) ); } /** @@ -412,4 +424,260 @@ function _maybe_update_folder_name( $response, $hook_extra, $result ) { return $response; } + + #---------------------------------------------------------------------------------- + #region Auto Activation + #---------------------------------------------------------------------------------- + + /** + * Installs and active a plugin when explicitly requested that from a 3rd party service. + * + * This logic was inspired by the TGMPA GPL licensed library by Thomas Griffin. + * + * @link http://tgmpluginactivation.com/ + * + * @author Vova Feldman + * @since 1.2.1.7 + * + * @link https://make.wordpress.org/plugins/2017/03/16/clarification-of-guideline-8-executable-code-and-installs/ + * + * @uses WP_Filesystem + * @uses WP_Error + * @uses WP_Upgrader + * @uses Plugin_Upgrader + * @uses Plugin_Installer_Skin + * @uses Plugin_Upgrader_Skin + * + * @param number|bool $plugin_id + * + * @return array + */ + function install_and_activate_plugin( $plugin_id = false ) { + if ( ! empty( $plugin_id ) && ! FS_Plugin::is_valid_id( $plugin_id ) ) { + // Invalid plugin ID. + return array( + 'message' => $this->_fs->get_text( 'auto-install-error-invalid-id' ), + 'code' => 'invalid_module_id', + ); + } + + $is_addon = false; + if ( FS_Plugin::is_valid_id( $plugin_id ) && + $plugin_id != $this->_fs->get_id() + ) { + $addon = $this->_fs->get_addon( $plugin_id ); + + if ( ! is_object( $addon ) ) { + // Invalid add-on ID. + return array( + 'message' => $this->_fs->get_text( 'auto-install-error-invalid-id' ), + 'code' => 'invalid_module_id', + ); + } + + $slug = $addon->slug; + $title = $addon->title . ' ' . $this->_fs->get_text( 'addon' ); + + $is_addon = true; + } else { + $slug = $this->_fs->get_slug(); + $title = $this->_fs->get_plugin_title() . + ( $this->_fs->is_addon() ? ' ' . $this->_fs->get_text( 'addon' ) : '' ); + } + + if ( $this->is_premium_plugin_active( $plugin_id ) ) { + // Premium version already activated. + return array( + 'message' => $this->_fs->get_text( + $is_addon ? + 'auto-install-error-premium-addon-activated' : + 'auto-install-error-premium-activated' + ), + 'code' => 'premium_installed', + ); + } + + $latest_version = $this->get_latest_download_details( $plugin_id ); + $target_folder = "{$slug}-premium"; + + // Prep variables for Plugin_Installer_Skin class. + $extra = array(); + $extra['slug'] = $target_folder; + $source = $latest_version->url; + $api = null; + + $install_url = add_query_arg( + array( + 'action' => 'install-plugin', + 'plugin' => urlencode( $slug ), + ), + 'update.php' + ); + + if ( ! class_exists( 'Plugin_Upgrader', false ) ) { + // Include required resources for the installation. + require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; + } + + $skin_args = array( + 'type' => 'web', + 'title' => sprintf( fs_text( 'installing-plugin-x', $slug ), $title ), + 'url' => esc_url_raw( $install_url ), + 'nonce' => 'install-plugin_' . $slug, + 'plugin' => '', + 'api' => $api, + 'extra' => $extra, + ); + +// $skin = new Automatic_Upgrader_Skin( $skin_args ); +// $skin = new Plugin_Installer_Skin( $skin_args ); + $skin = new WP_Ajax_Upgrader_Skin( $skin_args ); + + // Create a new instance of Plugin_Upgrader. + $upgrader = new Plugin_Upgrader( $skin ); + + // Perform the action and install the plugin from the $source urldecode(). + add_filter( 'upgrader_source_selection', array( &$this, '_maybe_adjust_source_dir' ), 1, 3 ); + + $install_result = $upgrader->install( $source ); + + remove_filter( 'upgrader_source_selection', array( &$this, '_maybe_adjust_source_dir' ), 1 ); + + if ( is_wp_error( $install_result ) ) { + return array( + 'message' => $install_result->get_error_message(), + 'code' => $install_result->get_error_code(), + ); + } elseif ( is_wp_error( $skin->result ) ) { + return array( + 'message' => $skin->result->get_error_message(), + 'code' => $skin->result->get_error_code(), + ); + } elseif ( $skin->get_errors()->get_error_code() ) { + return array( + 'message' => $skin->get_error_messages(), + 'code' => 'unknown', + ); + } elseif ( is_null( $install_result ) ) { + global $wp_filesystem; + + $error_code = 'unable_to_connect_to_filesystem'; + $error_message = __( 'Unable to connect to the filesystem. Please confirm your credentials.' ); + + // Pass through the error from WP_Filesystem if one was raised. + if ( $wp_filesystem instanceof WP_Filesystem_Base && + is_wp_error( $wp_filesystem->errors ) && + $wp_filesystem->errors->get_error_code() + ) { + $error_message = $wp_filesystem->errors->get_error_message(); + } + + return array( + 'message' => $error_message, + 'code' => $error_code, + ); + } + + // Grab the full path to the main plugin's file. + $plugin_activate = $upgrader->plugin_info(); + + // Try to activate the plugin. + $activation_result = $this->try_activate_plugin( $plugin_activate ); + + if ( is_wp_error( $activation_result ) ) { + return array( + 'message' => $activation_result->get_error_message(), + 'code' => $activation_result->get_error_code(), + ); + } + + return $skin->get_upgrade_messages(); + } + + /** + * Tries to activate a plugin. If fails, returns the error. + * + * @author Vova Feldman + * @since 1.2.1.7 + * + * @param string $file_path Path within wp-plugins/ to main plugin file. + * This determines the styling of the output messages. + * + * @return bool|WP_Error + */ + protected function try_activate_plugin( $file_path ) { + $activate = activate_plugin( $file_path ); + + return is_wp_error( $activate ) ? + $activate : + true; + } + + /** + * Check if a premium module version is already active. + * + * @author Vova Feldman + * @since 1.2.1.7 + * + * @param number|bool $plugin_id + * + * @return bool + */ + private function is_premium_plugin_active( $plugin_id = false ) { + if ( $plugin_id != $this->_fs->get_id() ) { + return $this->_fs->is_addon_activated( $plugin_id, true ); + } + + return is_plugin_active( $this->_fs->premium_plugin_basename() ); + } + + /** + * Adjust the plugin directory name if necessary. + * Assumes plugin has a folder (not a single file plugin). + * + * The final destination directory of a plugin is based on the subdirectory name found in the + * (un)zipped source. In some cases this subdirectory name is not the same as the expected + * slug and the plugin will not be recognized as installed. This is fixed by adjusting + * the temporary unzipped source subdirectory name to the expected plugin slug. + * + * @author Vova Feldman + * @since 1.2.1.7 + * + * @param string $source Path to upgrade/zip-file-name.tmp/subdirectory/. + * @param string $remote_source Path to upgrade/zip-file-name.tmp. + * @param \WP_Upgrader $upgrader Instance of the upgrader which installs the plugin. + * + * @return string|WP_Error + */ + function _maybe_adjust_source_dir( $source, $remote_source, $upgrader ) { + if ( ! is_object( $GLOBALS['wp_filesystem'] ) ) { + return $source; + } + + // Figure out what the slug is supposed to be. + $desired_slug = $upgrader->skin->options['extra']['slug']; + + $subdir_name = untrailingslashit( str_replace( trailingslashit( $remote_source ), '', $source ) ); + + if ( ! empty( $subdir_name ) && $subdir_name !== $desired_slug ) { + $from_path = untrailingslashit( $source ); + $to_path = trailingslashit( $remote_source ) . $desired_slug; + + if ( true === $GLOBALS['wp_filesystem']->move( $from_path, $to_path ) ) { + return trailingslashit( $to_path ); + } else { + return new WP_Error( + 'rename_failed', + $this->_fs->get_text( 'module-package-rename-failure' ), + array( + 'found' => $subdir_name, + 'expected' => $desired_slug + ) ); + } + } + + return $source; + } + + #endregion } \ No newline at end of file diff --git a/includes/debug/class-fs-debug-bar-panel.php b/includes/debug/class-fs-debug-bar-panel.php index 1c3259bdf..ae71c34c2 100644 --- a/includes/debug/class-fs-debug-bar-panel.php +++ b/includes/debug/class-fs-debug-bar-panel.php @@ -45,7 +45,7 @@ static function total_time() { $total_time += $l['total']; } - return number_format( 100 * $total_time, 2 ) . ' ' . __fs( 'ms' ); + return number_format( 100 * $total_time, 2 ) . ' ' . fs_text( 'ms' ); } function render() { diff --git a/includes/debug/debug-bar-start.php b/includes/debug/debug-bar-start.php index 852dfd7ce..d2b83b708 100644 --- a/includes/debug/debug-bar-start.php +++ b/includes/debug/debug-bar-start.php @@ -38,8 +38,8 @@ function fs_custom_status_init( $statuses ) { require_once dirname( __FILE__ ) . '/class-fs-debug-bar-panel.php'; $statuses[] = array( 'fs_api_requests', - __fs( 'Freemius API' ), - Freemius_Debug_Bar_Panel::requests_count() . ' ' . __fs( 'Requests' ) . + fs_text( 'Freemius API' ), + Freemius_Debug_Bar_Panel::requests_count() . ' ' . fs_text( 'Requests' ) . ' (' . Freemius_Debug_Bar_Panel::total_time() . ')' ); } diff --git a/includes/fs-core-functions.php b/includes/fs-core-functions.php index 0f5eaf123..9495dcf30 100644 --- a/includes/fs-core-functions.php +++ b/includes/fs-core-functions.php @@ -10,10 +10,6 @@ exit; } - global $fs_core_logger; - - $fs_core_logger = FS_Logger::get_logger( WP_FS__SLUG . '_core', WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK ); - if ( ! function_exists( 'fs_dummy' ) ) { function fs_dummy() { } @@ -65,24 +61,10 @@ function fs_get_template( $path, &$params = null ) { /* Scripts and styles including. --------------------------------------------------------------------------------------------*/ function fs_enqueue_local_style( $handle, $path, $deps = array(), $ver = false, $media = 'all' ) { - global $fs_core_logger; - if ( $fs_core_logger->is_on() ) { - $fs_core_logger->info( 'handle = ' . $handle . '; path = ' . $path . ';' ); - $fs_core_logger->info( 'plugin_basename = ' . plugins_url( WP_FS__DIR_CSS . trim( $path, '/' ) ) ); - $fs_core_logger->info( 'plugins_url = ' . plugins_url( plugin_basename( WP_FS__DIR_CSS . '/' . trim( $path, '/' ) ) ) ); - } - wp_enqueue_style( $handle, plugins_url( plugin_basename( WP_FS__DIR_CSS . '/' . trim( $path, '/' ) ) ), $deps, $ver, $media ); } function fs_enqueue_local_script( $handle, $path, $deps = array(), $ver = false, $in_footer = 'all' ) { - global $fs_core_logger; - if ( $fs_core_logger->is_on() ) { - $fs_core_logger->info( 'handle = ' . $handle . '; path = ' . $path . ';' ); - $fs_core_logger->info( 'plugin_basename = ' . plugins_url( WP_FS__DIR_JS . trim( $path, '/' ) ) ); - $fs_core_logger->info( 'plugins_url = ' . plugins_url( plugin_basename( WP_FS__DIR_JS . '/' . trim( $path, '/' ) ) ) ); - } - wp_enqueue_script( $handle, plugins_url( plugin_basename( WP_FS__DIR_JS . '/' . trim( $path, '/' ) ) ), $deps, $ver, $in_footer ); } @@ -93,13 +75,32 @@ function fs_img_url( $path, $img_dir = WP_FS__DIR_IMG ) { /* Request handlers. --------------------------------------------------------------------------------------------*/ /** - * @param string $key - * @param mixed $def + * @param string $key + * @param mixed $def + * @param string|bool $type Since 1.2.1.7 - when set to 'get' will look for the value passed via querystring, when + * set to 'post' will look for the value passed via the POST request's body, otherwise, + * will check if the parameter was passed in any of the two. * * @return mixed */ - function fs_request_get( $key, $def = false ) { - return isset( $_REQUEST[ $key ] ) ? $_REQUEST[ $key ] : $def; + function fs_request_get( $key, $def = false, $type = false ) { + if ( is_string( $type ) ) { + $type = strtolower( $type ); + } + + switch ( $type ) { + case 'post': + $value = isset( $_POST[ $key ] ) ? $_POST[ $key ] : $def; + break; + case 'get': + $value = isset( $_GET[ $key ] ) ? $_GET[ $key ] : $def; + break; + default: + $value = isset( $_REQUEST[ $key ] ) ? $_REQUEST[ $key ] : $def; + break; + } + + return $value; } function fs_request_has( $key ) { @@ -184,8 +185,8 @@ function fs_request_is_action_secure( return true; } - function fs_is_plugin_page( $menu_slug ) { - return ( is_admin() && $_REQUEST['page'] === $menu_slug ); + function fs_is_plugin_page( $page_slug ) { + return ( is_admin() && $page_slug === fs_request_get('page') ); } /* Core UI. @@ -467,6 +468,8 @@ function fs_download_image( $from, $to ) { $ch = curl_init( $from ); $fp = fopen( fs_normalize_path( $to ), 'wb' ); curl_setopt( $ch, CURLOPT_FILE, $fp ); + curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false ); + curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); curl_setopt( $ch, CURLOPT_HEADER, 0 ); curl_exec( $ch ); curl_close( $ch ); @@ -508,87 +511,119 @@ function fs_sort_by_priority( $a, $b ) { #region Localization #-------------------------------------------------------------------------------- - /** + if ( ! function_exists( 'fs_text' ) ) { + /** + * Retrieve a translated text by key. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + * + * @param string $key + * @param string $slug + * + * @return string + * + * @global $fs_text, $fs_text_overrides + */ + function fs_text( $key, $slug = 'freemius' ) { + return __fs( $key, $slug ); + } + + /** + * Output a translated text by key. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + * + * @param string $key + * @param string $slug + */ + function fs_echo( $key, $slug = 'freemius' ) { + echo fs_text( $key, $slug ); + } + } + + /** * @author Vova Feldman - * @since 1.2.1.6 + * @since 1.2.1.6 * * @param string $key * @param string $slug * * @return string */ - function fs_esc_attr($key, $slug) { - return esc_attr( __fs( $key, $slug ) ); + function fs_esc_attr( $key, $slug ) { + return esc_attr( fs_text( $key, $slug ) ); } /** * @author Vova Feldman - * @since 1.2.1.6 + * @since 1.2.1.6 * * @param string $key * @param string $slug */ - function fs_esc_attr_echo($key, $slug) { - echo esc_attr( __fs( $key, $slug ) ); + function fs_esc_attr_echo( $key, $slug ) { + echo esc_attr( fs_text( $key, $slug ) ); } /** * @author Vova Feldman - * @since 1.2.1.6 + * @since 1.2.1.6 * * @param string $key * @param string $slug * * @return string */ - function fs_esc_js($key, $slug) { - return esc_js( __fs( $key, $slug ) ); + function fs_esc_js( $key, $slug ) { + return esc_js( fs_text( $key, $slug ) ); } /** * @author Vova Feldman - * @since 1.2.1.6 + * @since 1.2.1.6 * * @param string $key * @param string $slug */ - function fs_esc_js_echo($key, $slug) { - echo esc_js( __fs( $key, $slug ) ); + function fs_esc_js_echo( $key, $slug ) { + echo esc_js( fs_text( $key, $slug ) ); } /** * @author Vova Feldman - * @since 1.2.1.6 + * @since 1.2.1.6 * * @param string $key * @param string $slug */ - function fs_json_encode_echo($key, $slug) { - echo json_encode( __fs( $key, $slug ) ); + function fs_json_encode_echo( $key, $slug ) { + echo json_encode( fs_text( $key, $slug ) ); } /** * @author Vova Feldman - * @since 1.2.1.6 + * @since 1.2.1.6 * * @param string $key * @param string $slug * * @return string */ - function fs_esc_html($key, $slug) { - return esc_html( __fs( $key, $slug ) ); + function fs_esc_html( $key, $slug ) { + return esc_html( fs_text( $key, $slug ) ); } /** * @author Vova Feldman - * @since 1.2.1.6 + * @since 1.2.1.6 * * @param string $key * @param string $slug */ - function fs_esc_html_echo($key, $slug) { - echo esc_html( __fs( $key, $slug ) ); + function fs_esc_html_echo( $key, $slug ) { + echo esc_html( fs_text( $key, $slug ) ); } - #endregion +#endregion diff --git a/includes/fs-essential-functions.php b/includes/fs-essential-functions.php index a7dd7e5d8..2e5d41f2b 100644 --- a/includes/fs-essential-functions.php +++ b/includes/fs-essential-functions.php @@ -52,7 +52,7 @@ function fs_redirect( $location, $exit = true, $status = 302 ) { $file = ''; $line = ''; - if ( headers_sent($file, $line) ) { + if ( headers_sent( $file, $line ) ) { if ( WP_FS__DEBUG_SDK && class_exists( 'FS_Admin_Notice_Manager' ) ) { $notices = FS_Admin_Notice_Manager::instance( 'global' ); @@ -152,64 +152,70 @@ function fs_kses_no_null( $string ) { /** * Retrieve a translated text by key. * - * @author Vova Feldman (@svovaf) - * @since 1.1.4 + * @deprecated Use `fs_text()` instead since methods starting with `__` trigger warnings in Php 7. + * + * @author Vova Feldman (@svovaf) + * @since 1.1.4 * * @param string $key * @param string $slug * * @return string * - * @global $fs_text , $fs_text_overrides + * @global $fs_text, $fs_text_overrides */ function __fs( $key, $slug = 'freemius' ) { - global $fs_text, - $fs_module_info_text, - $fs_text_overrides; - - if ( isset( $fs_text_overrides[ $slug ] ) ) { - if ( isset( $fs_text_overrides[ $slug ][ $key ] ) ) { - return $fs_text_overrides[ $slug ][ $key ]; - } - - $lower_key = strtolower( $key ); - if ( isset( $fs_text_overrides[ $slug ][ $lower_key ] ) ) { - return $fs_text_overrides[ $slug ][ $lower_key ]; - } - } - - if ( ! isset( $fs_text ) ) { - $dir = defined( 'WP_FS__DIR_INCLUDES' ) ? - WP_FS__DIR_INCLUDES : - dirname( __FILE__ ); - - require_once $dir . '/i18n.php'; - } - - if ( isset( $fs_text[ $key ] ) ) { - return $fs_text[ $key ]; - } - - if ( isset( $fs_module_info_text[ $key ] ) ) { - return $fs_module_info_text[ $key ]; - } - - return $key; + global $fs_text, + $fs_module_info_text, + $fs_text_overrides; + + if ( isset( $fs_text_overrides[ $slug ] ) ) { + if ( isset( $fs_text_overrides[ $slug ][ $key ] ) ) { + return $fs_text_overrides[ $slug ][ $key ]; + } + + $lower_key = strtolower( $key ); + if ( isset( $fs_text_overrides[ $slug ][ $lower_key ] ) ) { + return $fs_text_overrides[ $slug ][ $lower_key ]; + } + } + + if ( ! isset( $fs_text ) ) { + $dir = defined( 'WP_FS__DIR_INCLUDES' ) ? + WP_FS__DIR_INCLUDES : + dirname( __FILE__ ); + + require_once $dir . '/i18n.php'; + } + + if ( isset( $fs_text[ $key ] ) ) { + return $fs_text[ $key ]; + } + + if ( isset( $fs_module_info_text[ $key ] ) ) { + return $fs_module_info_text[ $key ]; + } + + return $key; } /** - * Display a translated text by key. + * Output a translated text by key. * - * @author Vova Feldman (@svovaf) - * @since 1.1.4 + * @deprecated Use `fs_echo()` instead for consistency with `fs_text()`. + * + * @author Vova Feldman (@svovaf) + * @since 1.1.4 * * @param string $key * @param string $slug */ function _efs( $key, $slug = 'freemius' ) { - echo __fs( $key, $slug ); + fs_echo( $key, $slug ); } + } + if ( ! function_exists( 'fs_override_i18n' ) ) { /** * Override default i18n text phrases. * @@ -292,6 +298,10 @@ function fs_find_caller_plugin_file() { $plugin_file = null; for ( $i = 1, $bt = debug_backtrace(), $len = count( $bt ); $i < $len; $i ++ ) { + if ( empty( $bt[ $i ]['file'] ) ) { + continue; + } + if ( in_array( fs_normalize_path( $bt[ $i ]['file'] ), $all_plugins_paths ) ) { $plugin_file = $bt[ $i ]['file']; break; @@ -300,7 +310,11 @@ function fs_find_caller_plugin_file() { if ( is_null( $plugin_file ) ) { // Throw an error to the developer in case of some edge case dev environment. - wp_die( __fs( 'failed-finding-main-path' ), __fs( 'error' ), array( 'back_link' => true ) ); + wp_die( + "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error.", + 'Error', + array( 'back_link' => true ) + ); } return $plugin_file; diff --git a/includes/fs-plugin-info-dialog.php b/includes/fs-plugin-info-dialog.php index 429efb72e..755467e1c 100755 --- a/includes/fs-plugin-info-dialog.php +++ b/includes/fs-plugin-info-dialog.php @@ -323,8 +323,8 @@ private function get_plugin_cta( $api, $plan = null ) { $plan->has_trial() ) . '" target="_parent">' . ( ! $plan->has_trial() ? - __fs( 'purchase', $api->slug ) : - sprintf( __fs( 'start-free-x', $api->slug ), $this->get_trial_period( $plan ) ) + fs_text( 'purchase', $api->slug ) : + sprintf( fs_text( 'start-free-x', $api->slug ), $this->get_trial_period( $plan ) ) ) . ''; @@ -346,23 +346,23 @@ private function get_plugin_cta( $api, $plan = null ) { * plugin is wordpress.org compliant. Therefore, require a download * since installing external plugins is not allowed by the wp.org guidelines. */ - return ' ' . __fs( 'download-latest', $api->slug ) . ''; + return ' ' . fs_text( 'download-latest', $api->slug ) . ''; } else { if ( $status['url'] ) { - return '' . __fs( 'install-now', $api->slug ) . ''; + return '' . fs_text( 'install-now', $api->slug ) . ''; } } break; case 'update_available': if ( $status['url'] ) { - return '' . __fs( 'install-update-now', $api->slug ) . ''; + return '' . fs_text( 'install-update-now', $api->slug ) . ''; } break; case 'newer_installed': - return '' . sprintf( __fs( 'newer-installed', $api->slug ), $status['version'] ) . ''; + return '' . sprintf( fs_text( 'newer-installed', $api->slug ), $status['version'] ) . ''; break; case 'latest_installed': - return '' . __fs( 'latest-installed', $api->slug ) . ''; + return '' . fs_text( 'latest-installed', $api->slug ) . ''; break; } @@ -475,13 +475,13 @@ function install_plugin_information() { ); $plugins_section_titles = array( - 'description' => __fs( 'description', $api->slug ), - 'installation' => __fs( 'installation', $api->slug ), - 'faq' => __fs( 'faq', $api->slug ), - 'screenshots' => __fs( 'screenshots', $api->slug ), - 'changelog' => __fs( 'changelog', $api->slug ), - 'reviews' => __fs( 'reviews', $api->slug ), - 'other_notes' => __fs( 'other_notes', $api->slug ), + 'description' => fs_text( 'description', $api->slug ), + 'installation' => fs_text( 'installation', $api->slug ), + 'faq' => fs_text( 'faq', $api->slug ), + 'screenshots' => fs_text( 'screenshots', $api->slug ), + 'changelog' => fs_text( 'changelog', $api->slug ), + 'reviews' => fs_text( 'reviews', $api->slug ), + 'other_notes' => fs_text( 'other_notes', $api->slug ), ); // Sanitize HTML @@ -496,7 +496,7 @@ function install_plugin_information() { } // Add after $api->slug is ready. - $plugins_section_titles['features'] = __fs( 'features-and-pricing', $api->slug ); + $plugins_section_titles['features'] = fs_text( 'features-and-pricing', $api->slug ); $_tab = esc_attr( $tab ); @@ -506,7 +506,7 @@ function install_plugin_information() { $section = array_shift( $section_titles ); } - iframe_header( __fs( 'plugin-install', $api->slug ) ); + iframe_header( fs_text( 'plugin-install', $api->slug ) ); $_with_banner = ''; @@ -574,7 +574,7 @@ function install_plugin_information() {
    -

    slug ), $plan->title ) ?>

    +

    slug ), $plan->title ) ?>

    has_annual() ?> has_monthly() ?>
    tested ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->tested ) ), $api->tested, '>' ) ) { - echo '

    ' . '' . __fs( 'warning:', $api->slug ) . ' ' . __fs( 'not-tested-warning', $api->slug ) . '

    '; + echo '

    ' . '' . fs_text( 'warning:', $api->slug ) . ' ' . fs_text( 'not-tested-warning', $api->slug ) . '

    '; } else if ( ! empty( $api->requires ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->requires ) ), $api->requires, '<' ) ) { - echo '

    ' . '' . __fs( 'warning:', $api->slug ) . ' ' . __fs( 'not-compatible-warning', $api->slug ) . '

    '; + echo '

    ' . '' . fs_text( 'warning:', $api->slug ) . ' ' . fs_text( 'not-compatible-warning', $api->slug ) . '

    '; } foreach ( (array) $api->sections as $section_name => $content ) { @@ -919,7 +919,7 @@ class="fs-annual-discount">slug ), $annual_d $missing_notice = array( 'type' => 'error', 'id' => md5( microtime() ), - 'message' => __fs( ( $api->is_paid ? 'paid-addon-not-deployed' : 'free-addon-not-deployed' ), $api->slug ), + 'message' => fs_text( ( $api->is_paid ? 'paid-addon-not-deployed' : 'free-addon-not-deployed' ), $api->slug ), ); fs_require_template( 'admin-notice.php', $missing_notice ); } diff --git a/includes/i18n.php b/includes/i18n.php index 14a9e8606..2d49f6b2b 100644 --- a/includes/i18n.php +++ b/includes/i18n.php @@ -48,6 +48,7 @@ 'price' => _fs_x( 'Price', 'noun' ), 'unlimited-updates' => _fs_text( 'Unlimited Updates' ), 'downgrade' => _fs_x( 'Downgrade', 'verb' ), + 'cancel-subscription' => _fs_x( 'Cancel Subscription', 'verb' ), 'cancel-trial' => _fs_text( 'Cancel Trial' ), 'free-trial' => _fs_text( 'Free Trial' ), 'start-free-x' => _fs_text( 'Start my free %s' ), @@ -382,7 +383,8 @@ #region Connectivity Issues 'connectivity-test-fails-message' => _fs_text( 'From unknown reason, the API connectivity test failed.' ), 'connectivity-test-maybe-temporary' => _fs_text( '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?' ), - 'curl-missing-message' => _fs_text( 'We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server.' ), + 'curl-missing-message' => _fs_text( '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-disabled-methods' => _fs_text( 'Disabled method(s):' ), 'cloudflare-blocks-connection-message' => _fs_text( 'From unknown reason, CloudFlare, the firewall we use, blocks the connection.' ), 'x-requires-access-to-api' => _fs_x( '%s requires an access to our API.', 'as pluginX requires an access to our API' ), @@ -393,7 +395,7 @@ 'squid-sysadmin-desc' => _fs_text( 'Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again.' ), 'curl-missing-no-clue-title' => _fs_text( 'I don\'t know what is cURL or how to install it, help me!' ), 'curl-missing-no-clue-desc' => _fs_text( '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-sysadmin-desc' => _fs_text( 'Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use \'phpinfo()\'. Once activated, deactivate the plugin and reactivate it back again.' ), + 'curl-missing-sysadmin-desc' => _fs_text( '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 plugin and reactivate it back again.' ), 'happy-to-resolve-issue-asap' => _fs_text( '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.' ), 'contact-support-before-deactivation' => _fs_text( 'Sorry for the inconvenience and we are here to help if you give us a chance.' ), 'fix-issue-title' => _fs_text( 'Yes - I\'m giving you a chance to fix it' ), @@ -465,6 +467,24 @@ 'province' => _fs_text( 'Province' ), 'zip-postal-code' => _fs_text( 'ZIP / Postal Code' ), #endregion + #-------------------------------------------------------------------------------- + #region Module Installation + #-------------------------------------------------------------------------------- + 'installing-plugin-x' => _fs_text( 'Installing plugin: %s' ), + 'auto-installation' => _fs_text( 'Automatic Installation' ), + /* translators: %s: Number of seconds */ + 'x-sec' => _fs_text( '%s sec' ), + 'installing-in-n' => _fs_text( '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-module-x' => _fs_text( 'The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page.' ), + 'cancel-installation' => _fs_text( 'Cancel Installation' ), + 'module-package-rename-failure' => _fs_text( 'The remote plugin package does not contain a folder with the desired slug and renaming did not work.' ), + 'auto-install-error-invalid-id' => _fs_text( 'Invalid module ID.' ), + 'auto-install-error-not-opted-in' => _fs_text( 'Auto installation only works for opted-in users.' ), + 'auto-install-error-premium-activated' => _fs_text( 'Premium version already active.' ), + 'auto-install-error-premium-addon-activated' => _fs_text( 'Premium add-on version already installed.' ), + 'auto-install-error-invalid-license' => _fs_text( 'You do not have a valid license to access the premium version.' ), + 'auto-install-error-serviceware' => _fs_text( 'Plugin is a "Serviceware" which means it does not have a premium code version.' ), + #endregion ); /** diff --git a/includes/managers/class-fs-admin-menu-manager.php b/includes/managers/class-fs-admin-menu-manager.php index 2603ce902..569b0a360 100644 --- a/includes/managers/class-fs-admin-menu-manager.php +++ b/includes/managers/class-fs-admin-menu-manager.php @@ -67,6 +67,12 @@ class FS_Admin_Menu_Manager { * @var string */ private $_first_time_path; + /** + * @since 1.2.2 + * + * @var bool + */ + private $_menu_exists; #endregion Properties @@ -85,7 +91,7 @@ class FS_Admin_Menu_Manager { /** * @param string $plugin_slug * - * @return FS_Admin_Notice_Manager + * @return FS_Admin_Menu_Manager */ static function instance( $plugin_slug ) { if ( ! isset( self::$_instances[ $plugin_slug ] ) ) { @@ -120,6 +126,8 @@ private function get_bool_option( &$options, $key, $default = false ) { * @param bool $is_addon */ function init( $menu, $is_addon = false ) { + $this->_menu_exists = ( isset( $menu['slug'] ) && ! empty( $menu['slug'] ) ); + $this->_menu_slug = ! empty( $menu['slug'] ) ? $menu['slug'] : null; $this->_default_submenu_items = array(); @@ -219,6 +227,16 @@ function has_custom_parent() { return ! $this->_is_top_level && is_string( $this->_parent_slug ); } + /** + * @author Leo Fajardo (@leorw) + * @since 1.2.2 + * + * @return bool + */ + function has_menu() { + return $this->_menu_exists; + } + /** * @author Vova Feldman (@svovaf) * @since 1.1.3 @@ -229,6 +247,10 @@ function has_custom_parent() { * @return bool */ function is_submenu_item_visible( $id, $default = true ) { + if ( ! $this->has_menu() ) { + return false; + } + return fs_apply_filter( $this->_plugin_slug, 'is_submenu_visible', @@ -263,7 +285,7 @@ function get_slug( $page = '' ) { * @return bool */ function has_menu_slug() { - return ! empty( $this->_menu_slug ); + return $this->has_menu(); } /** @@ -361,10 +383,20 @@ function get_top_level_menu_slug() { * * @return bool */ - function is_activation_page() { - return isset( $_GET['page'] ) && - ( ( strtolower( $this->_menu_slug ) === strtolower( $_GET['page'] ) ) || - ( strtolower( $this->_plugin_slug ) === strtolower( $_GET['page'] ) ) ); + function is_main_settings_page() { + if ( $this->_menu_exists && + ( fs_is_plugin_page( $this->_menu_slug ) || fs_is_plugin_page( $this->_plugin_slug ) ) + ) { + /** + * Module has a settings menu and the context page is the main settings page, so assume it's in + * activation (doesn't really check if already opted-in/skipped or not). + * + * @since 1.2.2 + */ + return true; + } + + return false; } #region Submenu Override @@ -525,7 +557,7 @@ private function remove_all_submenu_items() { * @author Vova Feldman (@svovaf) * @since 1.0.9 * - * @return array[string]mixed + * @return false|array[string]mixed */ function remove_menu_item() { $this->_logger->entrance(); @@ -552,7 +584,7 @@ function remove_menu_item() { * * @param callable $function * - * @return array[string]mixed + * @return false|array[string]mixed */ function override_menu_item( $function ) { $found_menu = $this->remove_menu_item(); @@ -575,7 +607,7 @@ function override_menu_item( $function ) { unset( $menu[ $found_menu['position'] ] ); // Create new top-level menu action. - $hookname = add_menu_page( + $hookname = self::add_page( $found_menu['menu'][3], $found_menu['menu'][0], 'manage_options', @@ -632,4 +664,119 @@ function add_counter_to_menu_item( $counter = 1, $class = '' ) { } #endregion Top level menu Override + + /** + * Add a top-level menu page. + * + * Note for WordPress.org Theme/Plugin reviewer: + * + * This is a replication of `add_menu_page()` to avoid Theme Check warning. + * + * Why? + * ==== + * Freemius is an SDK for plugin and theme developers. Since the core + * of the SDK is relevant both for plugins and themes, for obvious reasons, + * we only develop and maintain one code base. + * + * This method will not run for wp.org themes (only plugins) since theme + * admin settings/options are now only allowed in the customizer. + * + * If you have any questions or need clarifications, please don't hesitate + * pinging me on slack, my username is @svovaf. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.2 + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is + * selected. + * @param string $menu_title The text to be used for the menu. + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu). + * @param callable|string $function The function to be called to output the content for this page. + * @param string $icon_url The URL to the icon to be used for this menu. + * * Pass a base64-encoded SVG using a data URI, which will be colored to + * match the color scheme. This should begin with + * 'data:image/svg+xml;base64,'. + * * Pass the name of a Dashicons helper class to use a font icon, + * e.g. 'dashicons-chart-pie'. + * * Pass 'none' to leave div.wp-menu-image empty so an icon can be added + * via CSS. + * @param int $position The position in the menu order this one should appear. + * + * @return string The resulting page's hook_suffix. + */ + static function add_page( + $page_title, + $menu_title, + $capability, + $menu_slug, + $function = '', + $icon_url = '', + $position = null + ) { + $fn = 'add_menu' . '_page'; + + return $fn( + $page_title, + $menu_title, + $capability, + $menu_slug, + $function, + $icon_url, + $position + ); + } + + /** + * Add a submenu page. + * + * Note for WordPress.org Theme/Plugin reviewer: + * + * This is a replication of `add_submenu_page()` to avoid Theme Check warning. + * + * Why? + * ==== + * Freemius is an SDK for plugin and theme developers. Since the core + * of the SDK is relevant both for plugins and themes, for obvious reasons, + * we only develop and maintain one code base. + * + * This method will not run for wp.org themes (only plugins) since theme + * admin settings/options are now only allowed in the customizer. + * + * If you have any questions or need clarifications, please don't hesitate + * pinging me on slack, my username is @svovaf. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.2 + * + * @param string $parent_slug The slug name for the parent menu (or the file name of a standard + * WordPress admin page). + * @param string $page_title The text to be displayed in the title tags of the page when the menu is + * selected. + * @param string $menu_title The text to be used for the menu. + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu). + * @param callable|string $function The function to be called to output the content for this page. + * + * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability + * required. + */ + static function add_subpage( + $parent_slug, + $page_title, + $menu_title, + $capability, + $menu_slug, + $function = '' + ) { + $fn = 'add_submenu' . '_page'; + + return $fn( $parent_slug, + $page_title, + $menu_title, + $capability, + $menu_slug, + $function + ); + } } \ No newline at end of file diff --git a/includes/sdk/Freemius.php b/includes/sdk/Freemius.php index d090f81ca..dcec96ec4 100755 --- a/includes/sdk/Freemius.php +++ b/includes/sdk/Freemius.php @@ -34,15 +34,35 @@ } if ( ! defined( 'FS_SDK__HAS_CURL' ) ) { - define( 'FS_SDK__HAS_CURL', ! FS_SDK__SIMULATE_NO_CURL && function_exists( 'curl_version' ) ); - } + if ( FS_SDK__SIMULATE_NO_CURL ) { + define( 'FS_SDK__HAS_CURL', false ); + } else { + $curl_required_methods = array( + 'curl_version', + 'curl_exec', + 'curl_init', + 'curl_close', + 'curl_setopt', + 'curl_setopt_array', + 'curl_error', + ); + + $has_curl = true; + foreach ( $curl_required_methods as $m ) { + if ( ! function_exists( $m ) ) { + $has_curl = false; + break; + } + } - if ( ! FS_SDK__HAS_CURL ) { - $curl_version = array( 'version' => '7.0.0' ); - } else { - $curl_version = curl_version(); + define( 'FS_SDK__HAS_CURL', $has_curl ); + } } + $curl_version = FS_SDK__HAS_CURL ? + curl_version() : + array( 'version' => '7.37' ); + if ( ! defined( 'FS_API__PROTOCOL' ) ) { define( 'FS_API__PROTOCOL', version_compare( $curl_version['version'], '7.37', '>=' ) ? 'https' : 'http' ); } @@ -91,7 +111,9 @@ public static function GetUrl( $pCanonizedPath = '', $pIsSandbox = false ) { return $address . $pCanonizedPath; } - #region Servers Clock Diff ------------------------------------------------------ + #---------------------------------------------------------------------------------- + #region Servers Clock Diff + #---------------------------------------------------------------------------------- /** * @var int Clock diff in seconds between current server to API server. @@ -122,7 +144,7 @@ public static function FindClockDiff() { return ( $time - strtotime( $pong->timestamp ) ); } - #endregion Servers Clock Diff ------------------------------------------------------ + #endregion /** * @var string http or https @@ -342,7 +364,7 @@ private static function MakeStaticRequest( $resource = explode( '?', $pCanonizedPath ); - // disable the 'Expect: 100-continue' behaviour. This causes CURL to wait + // Disable the 'Expect: 100-continue' behaviour. This causes CURL to wait // for 2 seconds if the server does not support this header. $opts[ CURLOPT_HTTPHEADER ][] = 'Expect:'; @@ -458,8 +480,9 @@ public function MakeRequest( ); } - #region Connectivity Test ------------------------------------------------------ - + #---------------------------------------------------------------------------------- + #region Connectivity Test + #---------------------------------------------------------------------------------- /** * If successful connectivity to the API endpoint using ping.json endpoint. * @@ -509,9 +532,11 @@ public static function Ping() { return $result; } - #endregion Connectivity Test ------------------------------------------------------ + #endregion - #region Connectivity Exceptions ------------------------------------------------------ + #---------------------------------------------------------------------------------- + #region Connectivity Exceptions + #---------------------------------------------------------------------------------- /** * @param resource $pCurlHandler @@ -537,13 +562,32 @@ private static function ThrowCurlException( $pCurlHandler ) { * @throws Freemius_Exception */ private static function ThrowNoCurlException( $pResult = '' ) { + $curl_required_methods = array( + 'curl_version', + 'curl_exec', + 'curl_init', + 'curl_close', + 'curl_setopt', + 'curl_setopt_array', + 'curl_error', + ); + + // Find all missing methods. + $missing_methods = array(); + foreach ( $curl_required_methods as $m ) { + if ( ! function_exists( $m ) ) { + $missing_methods[] = $m; + } + } + throw new Freemius_Exception( array( - 'error' => (object) array( + 'error' => (object) array( 'type' => 'cUrlMissing', 'message' => $pResult, 'code' => 'curl_missing', 'http' => 402 - ) + ), + 'missing_methods' => $missing_methods, ) ); } @@ -579,5 +623,5 @@ private static function ThrowSquidAclException( $pResult = '' ) { ) ); } - #endregion Connectivity Exceptions ------------------------------------------------------ + #endregion } \ No newline at end of file diff --git a/languages/freemius-da_DK.mo b/languages/freemius-da_DK.mo index 5c54b1a8a..6bfcd3f81 100644 Binary files a/languages/freemius-da_DK.mo and b/languages/freemius-da_DK.mo differ diff --git a/languages/freemius-da_DK.po b/languages/freemius-da_DK.po index ca32b8ca3..daabe9bc4 100644 --- a/languages/freemius-da_DK.po +++ b/languages/freemius-da_DK.po @@ -1,1661 +1,1790 @@ -# Copyright (C) 2016 freemius +# Copyright (C) 2017 freemius # This file is distributed under the same license as the freemius package. # Translators: -# Joachim Jensen , 2016 +# Joachim Jensen , 2016-2017 msgid "" msgstr "" "Project-Id-Version: WordPress SDK\n" "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n" -"PO-Revision-Date: 2016-12-07 01:29+0000\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2017-05-12 17:32+0000\n" "Last-Translator: Vova Feldman \n" +"Language: da_DK\n" "Language-Team: Danish (Denmark) (http://www.transifex.com/freemius/wordpress-sdk/language/da_DK/)\n" -"MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: da_DK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" "X-Poedit-Basepath: ..\n" -"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"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" "X-Poedit-SearchPath-0: .\n" "X-Poedit-SearchPathExcluded-0: *.js\n" "X-Poedit-SourceCharset: UTF-8\n" -#: includes/i18n.php41, includes/i18n.php:55 -msgid "Yes - I'm in!" -msgstr "Ja - jeg er med!" - -#: includes/i18n.php43, includes/i18n.php:57 -msgid "Not today" -msgstr "Ikke i dag" - -#: includes/i18n.php:69 +#: includes/i18n.php:37 msgid "Account" msgstr "Konto" -#: includes/i18n.php:71 +#: includes/i18n.php:38 msgid "Add On" msgstr "Tilføjelse" -#: includes/i18n.php:73 +#: includes/i18n.php:39 msgid "Contact Us" msgstr "Kontakt os" -#: includes/i18n.php:75 +#: includes/i18n.php:40 msgid "Contact Support" msgstr "Kontakt support" -#: includes/i18n.php:77 +#: includes/i18n.php:41 msgid "Change Ownership" msgstr "Skift ejerskab" -#: includes/i18n.php:79 +#: includes/i18n.php:42 msgid "Support" msgstr "Support" -#: includes/i18n.php:81 +#: includes/i18n.php:43 msgid "Support Forum" msgstr "Supportforum" -#: includes/i18n.php:83 +#: includes/i18n.php:44 msgid "Add Ons" msgstr "Tilføjelser" -#: includes/i18n.php:85 +#: includes/i18n.php:45 msgctxt "verb" msgid "Upgrade" msgstr "Opgrader" -#: includes/i18n.php:87 +#: includes/i18n.php:46 msgid "Awesome" msgstr "Sejt" -#: includes/i18n.php:89 +#: includes/i18n.php:47 msgctxt "noun" msgid "Pricing" msgstr "Priser" -#: includes/i18n.php:91 +#: includes/i18n.php:48 msgctxt "noun" msgid "Price" msgstr "Pris" -#: includes/i18n.php:93 +#: includes/i18n.php:49 msgid "Unlimited Updates" msgstr "Ubegrænsede opdateringer" -#: includes/i18n.php:95 +#: includes/i18n.php:50 msgctxt "verb" msgid "Downgrade" msgstr "Nedgrader" -#: includes/i18n.php:97 +#: includes/i18n.php:51 +msgctxt "verb" +msgid "Cancel Subscription" +msgstr "Cancel Subscription" + +#: includes/i18n.php:52 msgid "Cancel Trial" msgstr "Annuller prøveperiode" -#: includes/i18n.php:99 +#: includes/i18n.php:53 msgid "Free Trial" msgstr "Gratis prøveperiode" -#: includes/i18n.php:101 +#: includes/i18n.php:54 msgid "Start my free %s" msgstr "Start min gratis %s" -#: includes/i18n.php:103 +#: includes/i18n.php:55 msgid "No commitment for %s - cancel anytime" msgstr "Ingen bindinger ved %s - annuller når som helst" -#: includes/i18n.php:105 +#: includes/i18n.php:56 msgid "After your free %s, pay as little as %s" msgstr "Efter din gratis %s er prisen kun %s" -#: includes/i18n.php:107 +#: includes/i18n.php:57 msgid "Details" msgstr "Detaljer" -#: includes/i18n.php:109 +#: includes/i18n.php:58 msgid "Account Details" msgstr "Kontodetaljer" -#: includes/i18n.php:111 +#: includes/i18n.php:59 msgctxt "verb" msgid "Delete" msgstr "Slet" -#: includes/i18n.php:113 +#: includes/i18n.php:60 msgctxt "verb" msgid "Show" msgstr "Vis" -#: includes/i18n.php:115 +#: includes/i18n.php:61 msgctxt "verb" msgid "Hide" msgstr "Skjul" -#: includes/i18n.php:117 +#: includes/i18n.php:62 msgctxt "verb" msgid "Edit" msgstr "Rediger" -#: includes/i18n.php:119 +#: includes/i18n.php:63 msgctxt "verb" msgid "Update" -msgstr "" +msgstr "Opdater" -#: includes/i18n.php:121 +#: includes/i18n.php:64 msgid "Date" msgstr "Dato" -#: includes/i18n.php:123 +#: includes/i18n.php:65 msgid "Amount" msgstr "Beløb" -#: includes/i18n.php:125 +#: includes/i18n.php:66 msgid "Invoice" msgstr "Faktura" -#: includes/i18n.php:127 +#: includes/i18n.php:67 msgid "Billing" msgstr "Betaling" -#: includes/i18n.php:129 +#: includes/i18n.php:68 msgid "Payments" msgstr "Betalinger" -#: includes/i18n.php:131 +#: includes/i18n.php:69 msgid "Delete Account" msgstr "Slet konto" -#: includes/i18n.php:133 +#: includes/i18n.php:70 msgctxt "as close a window" msgid "Dismiss" msgstr "Fjern" -#: includes/i18n.php:135 +#: includes/i18n.php:71 msgctxt "as product pricing plan" msgid "Plan" msgstr "Plan" -#: includes/i18n.php:137 +#: includes/i18n.php:72 msgid "Change Plan" msgstr "Skift plan" -#: includes/i18n.php:139 +#: includes/i18n.php:73 msgctxt "as download professional version" msgid "Download %s Version" -msgstr "" +msgstr "Download %s Version" -#: includes/i18n.php:141 +#: includes/i18n.php:74 msgctxt "as download professional version now" msgid "Download %s version now" -msgstr "" +msgstr "Download %s version now" -#: includes/i18n.php:145 +#: includes/i18n.php:75 msgctxt "as download latest version" msgid "Download Latest" msgstr "Download seneste" -#: includes/i18n.php:147 +#: includes/i18n.php:76 msgctxt "E.g. you have a professional license." msgid "You have a %s license." msgstr "Du har en %s licens." -#: includes/i18n.php:151 +#: includes/i18n.php:77 msgid "New" msgstr "Ny" -#: includes/i18n.php:153 +#: includes/i18n.php:78 msgid "Free" msgstr "Gratis" -#: includes/i18n.php:155 +#: includes/i18n.php:79 msgctxt "as trial plan" msgid "Trial" msgstr "Prøveperiode" -#: includes/i18n.php:157 +#: includes/i18n.php:80 msgctxt "as starting a trial plan" msgid "Start Trial" -msgstr "" +msgstr "Start prøveperiode" -#: includes/i18n.php:159 +#: includes/i18n.php:81 msgctxt "verb" msgid "Purchase" msgstr "Køb" -#: includes/i18n.php:161 +#: includes/i18n.php:82 msgid "Purchase License" msgstr "Køb licens" -#: includes/i18n.php:163 +#: includes/i18n.php:83 msgctxt "verb" msgid "Buy" msgstr "Køb" -#: includes/i18n.php:165 +#: includes/i18n.php:84 msgid "Buy License" msgstr "Køb licens" -#: includes/i18n.php:167 +#: includes/i18n.php:85 msgid "Single Site License" -msgstr "" +msgstr "Single Site License" -#: includes/i18n.php:169 +#: includes/i18n.php:86 msgid "Unlimited Licenses" msgstr "Ubegrænsede licenser" -#: includes/i18n.php:171 +#: includes/i18n.php:87 msgid "Up to %s Sites" msgstr "Op til %s websteder" -#: includes/i18n.php:173 +#: includes/i18n.php:88 msgid "%sRenew your license now%s to access version %s features and support." -msgstr "" +msgstr "%sRenew your license now%s to access version %s features and support." -#: includes/i18n.php:177 -msgid "" -"Enter the email address you've used for the upgrade below and we will resend" -" you the license key." -msgstr "" +#: includes/i18n.php:89 +msgid "Enter the email address you've used for the upgrade below and we will resend you the license key." +msgstr "Enter the email address you've used for the upgrade below and we will resend you the license key." -#: includes/i18n.php:181 +#: includes/i18n.php:90 msgctxt "e.g. Professional Plan" msgid "%s Plan" msgstr "%s Plan" -#: includes/i18n.php:183 +#: includes/i18n.php:91 msgid "You are just one step away - %s" msgstr "Du mangler kun ét skridt - %s" -#: includes/i18n.php:185 +#: includes/i18n.php:92 msgctxt "%s - plugin name. As complete \"Jetpack\" activation now" msgid "Complete \"%s\" Activation Now" msgstr "Færdiggør aktivering af \"%s\" nu" -#: includes/i18n.php:189 +#: includes/i18n.php:94 msgid "We made a few tweaks to the plugin, %s" -msgstr "" +msgstr "Vi har lavet nogle få rettelser til pluginnet, %s" -#: includes/i18n.php:191 +#: includes/i18n.php:95 msgid "Opt-in to make \"%s\" Better!" -msgstr "" +msgstr "Tilmeld for at gøre \"%s\" bedre!" -#: includes/i18n.php:193 +#: includes/i18n.php:96 msgid "Error" msgstr "Fejl" -#: includes/i18n.php:195 -msgid "" -"Freemius SDK couldn't find the plugin's main file. Please contact " -"sdk@freemius.com with the current error." -msgstr "" +#: includes/i18n.php:97 +msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." +msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." -#: includes/i18n.php:203 +#: includes/i18n.php:100 msgctxt "as expiration date" msgid "Expiration" -msgstr "" +msgstr "Expiration" -#: includes/i18n.php:205 +#: includes/i18n.php:101 msgctxt "as software license" msgid "License" msgstr "Licens" -#: includes/i18n.php:207 +#: includes/i18n.php:102 msgid "not verified" msgstr "ikke verificeret" -#: includes/i18n.php:209 +#: includes/i18n.php:103 msgid "Verify Email" msgstr "Verificer e-mail" -#: includes/i18n.php:211 +#: includes/i18n.php:104 msgctxt "e.g. expires in 2 months" msgid "Expires in %s" msgstr "Udløber om %s" -#: includes/i18n.php:213 +#: includes/i18n.php:105 msgctxt "e.g. auto renews in 2 months" msgid "Auto renews in %s" -msgstr "" +msgstr "Auto-fornyer om %s" -#: includes/i18n.php:215 +#: includes/i18n.php:106 msgid "No expiration" msgstr "Udløber ikke" -#: includes/i18n.php:217 +#: includes/i18n.php:107 msgid "Expired" msgstr "Udløbet" -#: includes/i18n.php:219 +#: includes/i18n.php:108 msgid "Cancelled" msgstr "Annulleret" -#: includes/i18n.php:221 +#: includes/i18n.php:109 msgctxt "e.g. In 2 hours" msgid "In %s" msgstr "Om %s" -#: includes/i18n.php:223 +#: includes/i18n.php:110 msgctxt "e.g. 2 min ago" msgid "%s ago" msgstr "%s siden" -#: includes/i18n.php:225 +#: includes/i18n.php:112 +msgid "%s or higher" +msgstr "%s eller højere" + +#: includes/i18n.php:113 msgctxt "as plugin version" msgid "Version" msgstr "Version" -#: includes/i18n.php:227 +#: includes/i18n.php:114 msgid "Name" msgstr "Navn" -#: includes/i18n.php:229 +#: includes/i18n.php:115 msgid "Email" msgstr "E-mail" -#: includes/i18n.php:231 +#: includes/i18n.php:116 msgid "Email address" msgstr "E-mailadresse" -#: includes/i18n.php:233 +#: includes/i18n.php:117 msgid "Verified" msgstr "Verificeret" -#: includes/i18n.php:235 +#: includes/i18n.php:118 +msgid "Module" +msgstr "Modul" + +#: includes/i18n.php:119 +msgid "Module Type" +msgstr "Modultype" + +#: includes/i18n.php:120 msgid "Plugin" msgstr "Plugin" -#: includes/i18n.php:237 +#: includes/i18n.php:121 msgid "Plugins" msgstr "Plugins" -#: includes/i18n.php:239 +#: includes/i18n.php:122 +msgid "Theme" +msgstr "Tema" + +#: includes/i18n.php:123 msgid "Themes" msgstr "Temaer" -#: includes/i18n.php:241 +#: includes/i18n.php:124 msgctxt "as file/folder path" msgid "Path" msgstr "Sti" -#: includes/i18n.php:243 +#: includes/i18n.php:125 msgid "Title" msgstr "Titel" -#: includes/i18n.php:245 +#: includes/i18n.php:126 msgid "Free version" msgstr "Gratis version" -#: includes/i18n.php:247 +#: includes/i18n.php:127 msgid "Premium version" -msgstr "" +msgstr "Premium version" -#: includes/i18n.php:249 +#: includes/i18n.php:128 msgctxt "as WP plugin slug" msgid "Slug" msgstr "Kortnavn" -#: includes/i18n.php:251 +#: includes/i18n.php:129 msgid "ID" msgstr "ID" -#: includes/i18n.php:253 +#: includes/i18n.php:130 msgid "Users" msgstr "Brugere" -#: includes/i18n.php:255 +#: includes/i18n.php:131 msgid "Plugin Installs" msgstr "Plugin-installationer" -#: includes/i18n.php:257 +#: includes/i18n.php:132 +msgid "%s Installs" +msgstr "%s installeringer" + +#: includes/i18n.php:133 msgctxt "like websites" msgid "Sites" msgstr "Websteder" -#: includes/i18n.php:259 +#: includes/i18n.php:134 msgid "User ID" msgstr "Bruger-ID" -#: includes/i18n.php:261 +#: includes/i18n.php:135 msgid "Site ID" msgstr "Websteds-ID" -#: includes/i18n.php:263 +#: includes/i18n.php:136 msgid "Public Key" msgstr "Offentlig nøgle" -#: includes/i18n.php:265 +#: includes/i18n.php:137 msgid "Secret Key" msgstr "Privat nøgle" -#: includes/i18n.php:267 +#: includes/i18n.php:138 msgctxt "as secret encryption key missing" msgid "No Secret" msgstr "Ingen privat nøgle" -#: includes/i18n.php:269 +#: includes/i18n.php:139 msgid "No ID" msgstr "Intet ID" -#: includes/i18n.php:271 +#: includes/i18n.php:140 msgctxt "as synchronize license" msgid "Sync License" msgstr "Synkroniser licens" -#: includes/i18n.php:273 +#: includes/i18n.php:141 msgctxt "as synchronize" msgid "Sync" msgstr "Synkroniser" -#: includes/i18n.php:275 +#: includes/i18n.php:142 msgid "Activate License" msgstr "Aktiver licens" -#: includes/i18n.php:277 +#: includes/i18n.php:143 msgid "Activate Free Version" msgstr "Aktiver gratis version" -#: includes/i18n.php:279 -msgid "" -"Please enter the license key that you received in the email right after the " -"purchase:" -msgstr "" +#: includes/i18n.php:144 +msgid "Please enter the license key that you received in the email right after the purchase:" +msgstr "Please enter the license key that you received in the email right after the purchase:" -#: includes/i18n.php:283 +#: includes/i18n.php:145 msgid "Activating license..." msgstr "Aktiverer licens..." -#: includes/i18n.php:285 +#: includes/i18n.php:146 msgid "Change License" msgstr "Skift licens" -#: includes/i18n.php:287 +#: includes/i18n.php:147 msgid "Update License" msgstr "Opdater licens" -#: includes/i18n.php:289 +#: includes/i18n.php:148 msgid "Deactivate License" msgstr "Deaktiver licens" -#: includes/i18n.php:291 +#: includes/i18n.php:149 msgid "Activate" msgstr "Aktiver" -#: includes/i18n.php:293 +#: includes/i18n.php:150 msgid "Deactivate" msgstr "Deaktiver" -#: includes/i18n.php:295 +#: includes/i18n.php:151 msgid "Skip & Deactivate" msgstr "Spring over & deaktiver" -#: includes/i18n.php:297 +#: includes/i18n.php:152 +msgid "Skip & %s" +msgstr "Spring over & %s" + +#: includes/i18n.php:153 msgid "No - just deactivate" msgstr "Nej - bare deaktiver" -#: includes/i18n.php:299 +#: includes/i18n.php:154 msgid "Yes - do your thing" -msgstr "" +msgstr "Yes - do your thing" -#: includes/i18n.php:301 +#: includes/i18n.php:155 msgctxt "active mode" msgid "Active" msgstr "Aktiv" -#: includes/i18n.php:303 +#: includes/i18n.php:156 msgctxt "is active mode?" msgid "Is Active" msgstr "Er aktiv" -#: includes/i18n.php:305 +#: includes/i18n.php:157 msgid "Install Now" msgstr "Installer nu" -#: includes/i18n.php:307 +#: includes/i18n.php:158 msgid "Install Update Now" msgstr "Installer opdatering nu" -#: includes/i18n.php:309 +#: includes/i18n.php:159 msgid "More information about %s" msgstr "Mere information om %s" -#: includes/i18n.php:311 +#: includes/i18n.php:160 msgid "Localhost" msgstr "Localhost" -#: includes/i18n.php:313 +#: includes/i18n.php:161 msgctxt "as activate Professional plan" msgid "Activate %s Plan" msgstr "Aktiver plan %s" -#: includes/i18n.php:315 +#: includes/i18n.php:162 msgctxt "as 5 licenses left" msgid "%s left" msgstr "%s tilbage" -#: includes/i18n.php:317 +#: includes/i18n.php:163 msgid "Last license" -msgstr "" +msgstr "Seneste license" -#: includes/i18n.php:319 +#: includes/i18n.php:164 msgid "What is your %s?" -msgstr "" +msgstr "What is your %s?" -#: includes/i18n.php:321 +#: includes/i18n.php:165 msgid "Activate this add-on" msgstr "Aktiver denne tilføjelse" -#: includes/i18n.php:323 -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?" -msgstr "" +#: includes/i18n.php:166 +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?" +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?" -#: includes/i18n.php:327 -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?" -msgstr "" +#: includes/i18n.php:167 +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?" +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?" -#: includes/i18n.php:331 -msgid "" -"Deletion is not temporary. Only delete if you no longer want to use this " -"plugin anymore. Are you sure you would like to continue with the deletion?" -msgstr "" +#: includes/i18n.php:168 +msgid "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?" +msgstr "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?" -#: includes/i18n.php:335 -msgid "" -"Downgrading your plan will immediately stop all future recurring payments " -"and your %s plan license will expire in %s." -msgstr "" +#: includes/i18n.php:169 +msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." +msgstr "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." -#: includes/i18n.php:339 -msgid "" -"Cancelling the trial will immediately block access to all premium features. " -"Are you sure?" -msgstr "" +#: includes/i18n.php:170 +msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?" +msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?" -#: includes/i18n.php:343 -msgid "" -"You can still enjoy all %s features but you will not have access to plugin " -"updates and support." -msgstr "" +#: includes/i18n.php:171 +msgid "You can still enjoy all %s features but you will not have access to plugin updates and support." +msgstr "You can still enjoy all %s features but you will not have access to plugin updates and support." -#: includes/i18n.php:347 -msgid "" -"Once your license expire you can still use the Free version but you will NOT" -" have access to the %s features." -msgstr "" +#: includes/i18n.php:172 +msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features." +msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features." -#: includes/i18n.php:351 +#: includes/i18n.php:173 msgid "Are you sure you want to proceed?" -msgstr "" +msgstr "Er du sikker på, du vil fortsætte?" -#: includes/i18n.php:357 +#: includes/i18n.php:176 msgid "Add Ons for %s" msgstr "Tilføjelser til %s" -#: includes/i18n.php:359 -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." -msgstr "" +#: includes/i18n.php:177 +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." +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." -#: includes/i18n.php:365 +#: includes/i18n.php:179 msgid "Anonymous feedback" msgstr "Anonym feedback" -#: includes/i18n.php:367 +#: includes/i18n.php:180 msgid "Quick feedback" msgstr "Hurtig feedback" -#: includes/i18n.php:369 +#: includes/i18n.php:181 msgid "If you have a moment, please let us know why you are deactivating" -msgstr "" +msgstr "Hvis du har et øjeblik, så lad os venligst vide, hvorfor du deaktiverer" -#: includes/i18n.php:373 +#: includes/i18n.php:182 msgid "Yes - Deactivate" msgstr "Ja - deaktiver" -#: includes/i18n.php:375 +#: includes/i18n.php:183 msgid "Submit & Deactivate" msgstr "Send & deaktiver" -#: includes/i18n.php:377 +#: includes/i18n.php:184 msgid "Cancel" msgstr "Annuller" -#: includes/i18n.php:379 +#: includes/i18n.php:185 msgid "I no longer need the plugin" -msgstr "" +msgstr "Jeg har ikke længere brug for dette plugin" -#: includes/i18n.php:381 +#: includes/i18n.php:186 msgid "I found a better plugin" msgstr "Jeg har fundet et bedre plugin" -#: includes/i18n.php:383 +#: includes/i18n.php:187 msgid "I only needed the plugin for a short period" -msgstr "" +msgstr "Jeg skulle kun bruge pluginnet i en kort periode" -#: includes/i18n.php:385 +#: includes/i18n.php:188 msgid "The plugin broke my site" msgstr "Pluginnet ødelagde mit websted" -#: includes/i18n.php:387 +#: includes/i18n.php:189 msgid "The plugin suddenly stopped working" msgstr "Pluginnet virker ikke længere" -#: includes/i18n.php:389 +#: includes/i18n.php:190 msgid "I can't pay for it anymore" msgstr "Jeg kan ikke længere betale for det" -#: includes/i18n.php:391 +#: includes/i18n.php:191 msgid "It's a temporary deactivation. I'm just debugging an issue." -msgstr "" +msgstr "Det er en midlertidig deaktivering. Jeg prøver at fejlfinde et problem." -#: includes/i18n.php:395 +#: includes/i18n.php:192 msgctxt "" -"the text of the \"other\" reason for deactivating the plugin that is shown " -"in the modal box." msgid "Other" msgstr "Andet" -#: includes/i18n.php:399 +#: includes/i18n.php:194 msgid "Kindly tell us the reason so we can improve." -msgstr "" +msgstr "Fortæl os venligst årsagen, så vi kan forbedre det." -#: includes/i18n.php:401 +#: includes/i18n.php:195 msgid "What's the plugin's name?" -msgstr "" +msgstr "Hvad er pluginnets navn?" -#: includes/i18n.php:403 +#: includes/i18n.php:196 msgid "What price would you feel comfortable paying?" -msgstr "" +msgstr "What price would you feel comfortable paying?" -#: includes/i18n.php:405 +#: includes/i18n.php:197 msgid "I couldn't understand how to make it work" -msgstr "" +msgstr "Jeg forstod ikke, hvordan jeg skulle få det til at fungere." -#: includes/i18n.php:407 -msgid "" -"The plugin is great, but I need specific feature that you don't support" -msgstr "" +#: includes/i18n.php:198 +msgid "The plugin is great, but I need specific feature that you don't support" +msgstr "Pluginnet er godt, men jeg har brug for en specifik funktionalitet, som det ikke understøtter." -#: includes/i18n.php:411 +#: includes/i18n.php:199 msgid "The plugin is not working" msgstr "Pluginnet virker ikke" -#: includes/i18n.php:413 +#: includes/i18n.php:200 msgid "It's not what I was looking for" -msgstr "" +msgstr "Det er ikke, hvad jeg søgte" -#: includes/i18n.php:415 +#: includes/i18n.php:201 msgid "The plugin didn't work as expected" -msgstr "" +msgstr "Plugin virkede ikke som forventet" -#: includes/i18n.php:417 +#: includes/i18n.php:202 msgid "What feature?" -msgstr "" +msgstr "Hvilken feature?" -#: includes/i18n.php:419 +#: includes/i18n.php:203 msgid "Kindly share what didn't work so we can fix it for future users..." -msgstr "" +msgstr "Kindly share what didn't work so we can fix it for future users..." -#: includes/i18n.php:423 +#: includes/i18n.php:204 msgid "What you've been looking for?" -msgstr "" +msgstr "What you've been looking for?" -#: includes/i18n.php:425 +#: includes/i18n.php:205 msgid "What did you expect?" msgstr "Hvad forventede du?" -#: includes/i18n.php:427 +#: includes/i18n.php:206 msgid "The plugin didn't work" msgstr "Pluginnet virkede ikke" -#: includes/i18n.php:429 +#: includes/i18n.php:207 msgid "I don't like to share my information with you" -msgstr "" +msgstr "I don't like to share my information with you" -#: includes/i18n.php:431 -msgid "" -"You might have missed it, but you don't have to share any data and can just " -"%s the opt-in." -msgstr "" +#: includes/i18n.php:208 +msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in." +msgstr "You might have missed it, but you don't have to share any data and can just %s the opt-in." -#: includes/i18n.php:441 +#: includes/i18n.php:212 msgctxt "greeting" msgid "Hey %s," msgstr "Hey %s," -#: includes/i18n.php:443 +#: includes/i18n.php:213 msgctxt "a greeting. E.g. Thanks John!" msgid "Thanks %s!" msgstr "Tak %s!" -#: includes/i18n.php:445 -msgid "" -"Never miss an important update - opt-in to our security and feature updates " -"notifications, and non-sensitive diagnostic tracking with %4$s." -msgstr "" +#: includes/i18n.php:214 +msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." +msgstr "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." -#: includes/i18n.php:449 -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." -msgstr "" +#: includes/i18n.php:215 +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." +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." -#: includes/i18n.php:453 -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." -msgstr "" +#: includes/i18n.php:216 +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." +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." -#: includes/i18n.php:455 +#: includes/i18n.php:217 msgid "complete the install" -msgstr "" +msgstr "færdiggør installeringen" -#: includes/i18n.php:457 +#: includes/i18n.php:218 msgid "start the trial" -msgstr "" +msgstr "start prøveperioden" -#: includes/i18n.php:459 -msgid "" -"Thanks for purchasing %s! To get started, please enter your license key:" -msgstr "" +#: includes/i18n.php:219 +msgid "Thanks for purchasing %s! To get started, please enter your license key:" +msgstr "Thanks for purchasing %s! To get started, please enter your license key:" -#: includes/i18n.php:463 -msgid "" -"The plugin will be periodically sending data to %s to check for plugin " -"updates and verify the validity of your license." -msgstr "" +#: includes/i18n.php:220 +msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license." +msgstr "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license." -#: includes/i18n.php:467 +#: includes/i18n.php:221 msgid "What permissions are being granted?" msgstr "Hvilke tilladelser bliver givet?" -#: includes/i18n.php:469 +#: includes/i18n.php:222 msgid "Your Profile Overview" msgstr "Overblik af din profil" -#: includes/i18n.php:471 +#: includes/i18n.php:223 msgid "Name and email address" msgstr "Navn og e-mailadresse" -#: includes/i18n.php:473 +#: includes/i18n.php:224 msgid "Your Site Overview" msgstr "Overblik af dit websted" -#: includes/i18n.php:475 +#: includes/i18n.php:225 msgid "Site URL, WP version, PHP info, plugins & themes" -msgstr "" +msgstr "Websteds-URL, WP version, PHP info, plugins og temaer" -#: includes/i18n.php:479 +#: includes/i18n.php:226 msgid "Current Plugin Events" msgstr "Nuværende plugin-begivenheder" -#: includes/i18n.php:481 +#: includes/i18n.php:227 msgid "Activation, deactivation and uninstall" msgstr "Aktivering, deaktivering og afinstallering" -#: includes/i18n.php:483 +#: includes/i18n.php:228 msgid "Plugins & Themes" msgstr "Plugins & Temaer" -#: includes/i18n.php:485 +#: includes/i18n.php:229 msgid "Titles, versions and state." msgstr "Titler, versioner og tilstand." -#: includes/i18n.php:487 +#: includes/i18n.php:230 msgid "Admin Notices" -msgstr "" +msgstr "Admin Notices" -#: includes/i18n.php:489 +#: includes/i18n.php:231 msgid "Newsletter" msgstr "Nyhedsbrev" -#: includes/i18n.php:491 +#: includes/i18n.php:232 msgid "Updates, announcements, marketing, no spam" -msgstr "" +msgstr "Updates, announcements, marketing, no spam" -#: includes/i18n.php:493 +#: includes/i18n.php:233 msgid "Privacy Policy" msgstr "Privatlivspolitik" -#: includes/i18n.php:495 +#: includes/i18n.php:234 msgid "Terms of Service" msgstr "Servicevilkår" -#: includes/i18n.php:497 +#: includes/i18n.php:235 msgctxt "as activating plugin" msgid "Activating" msgstr "Aktiverer" -#: includes/i18n.php:499 +#: includes/i18n.php:236 msgctxt "as in the process of sending an email" msgid "Sending email" msgstr "Sender e-mail" -#: includes/i18n.php:503 +#: includes/i18n.php:237 msgctxt "button label" msgid "Allow & Continue" msgstr "Tillad & Fortsæt" -#: includes/i18n.php:505 +#: includes/i18n.php:238 msgctxt "button label" msgid "Agree & Activate License" msgstr "Accepter & aktiver licens" -#: includes/i18n.php:507 +#: includes/i18n.php:239 msgctxt "verb" msgid "Skip" msgstr "Spring over" -#: includes/i18n.php:509 +#: includes/i18n.php:240 msgid "Click here to use the plugin anonymously" msgstr "Klik her for at benytte pluginnet anonymt" -#: includes/i18n.php:511 +#: includes/i18n.php:241 msgid "Re-send activation email" msgstr "Gensend e-mail om aktivering" -#: includes/i18n.php:513 +#: includes/i18n.php:242 msgid "License key" msgstr "Licensnøgle" -#: includes/i18n.php:515 +#: includes/i18n.php:243 msgid "Send License Key" msgstr "Send licensnøgle" -#: includes/i18n.php:517 +#: includes/i18n.php:244 msgid "Sending license key" msgstr "Sender licensnøgle" -#: includes/i18n.php:519 +#: includes/i18n.php:245 msgid "Have a license key?" msgstr "Har du en licensnøgle?" -#: includes/i18n.php:521 +#: includes/i18n.php:246 msgid "Don't have a license key?" msgstr "Har du ikke en licensnøgle?" -#: includes/i18n.php:523 +#: includes/i18n.php:247 msgid "Can't find your license key?" msgstr "Kan du ikke finde din licensnøgle?" -#: includes/i18n.php:525 -msgid "" -"We couldn't find your email address in the system, are you sure it's the " -"right address?" -msgstr "" +#: includes/i18n.php:248 +msgid "We couldn't find your email address in the system, are you sure it's the right address?" +msgstr "We couldn't find your email address in the system, are you sure it's the right address?" -#: includes/i18n.php:529 -msgid "" -"We can't see any active licenses associated with that email address, are you" -" sure it's the right address?" -msgstr "" +#: includes/i18n.php:249 +msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" +msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?" -#: includes/i18n.php:533 +#: includes/i18n.php:250 msgid "Opt In" -msgstr "" +msgstr "Tilmeld" -#: includes/i18n.php:535 +#: includes/i18n.php:251 msgid "Opt Out" -msgstr "" +msgstr "Frameld" -#: includes/i18n.php:537 +#: includes/i18n.php:252 msgid "On second thought - I want to continue helping" -msgstr "" +msgstr "Ved nærmere eftertanke - Jeg vil fortsætte med at hjælpe" -#: includes/i18n.php:541 +#: includes/i18n.php:253 msgid "Opting out..." -msgstr "" +msgstr "Framelder..." -#: includes/i18n.php:543 +#: includes/i18n.php:254 msgid "Opting in..." -msgstr "" +msgstr "Tilmelder..." -#: includes/i18n.php:545 -msgid "" -"We appreciate your help in making the %s better by letting us track some " -"usage data." -msgstr "" +#: includes/i18n.php:255 +msgid "We appreciate your help in making the %s better by letting us track some usage data." +msgstr "We appreciate your help in making the %s better by letting us track some usage data." -#: includes/i18n.php:549 -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." -msgstr "" +#: includes/i18n.php:256 +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." +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." -#: includes/i18n.php:553 -msgid "" -"By clicking \"Opt Out\", we will no longer be sending any data from %s to " -"%s." -msgstr "" +#: includes/i18n.php:257 +msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." +msgstr "Ved at klikke \"Frameld\" vil vi ikke længere sende data fra %s til %s." -#: includes/i18n.php:563 +#: includes/i18n.php:261 msgid "Screenshots" msgstr "Skærmbilleder" -#: includes/i18n.php:565 +#: includes/i18n.php:262 msgid "Click to view full-size screenshot %d" -msgstr "" +msgstr "Click to view full-size screenshot %d" -#: includes/i18n.php:573 +#: includes/i18n.php:266 msgid "Freemius Debug" msgstr "Freemius Debug" -#: includes/i18n.php:575 +#: includes/i18n.php:267 msgctxt "as turned on" msgid "On" msgstr "Til" -#: includes/i18n.php:577 +#: includes/i18n.php:268 msgctxt "as turned off" msgid "Off" msgstr "Fra" -#: includes/i18n.php:579 +#: includes/i18n.php:269 msgctxt "as code debugging" msgid "Debugging" msgstr "Fejlfinding" -#: includes/i18n.php:581 +#: includes/i18n.php:270 msgid "Freemius State" msgstr "Freemius tilstand" -#: includes/i18n.php:583 +#: includes/i18n.php:271 msgctxt "as connection was successful" msgid "Connected" msgstr "Forbundet" -#: includes/i18n.php:585 +#: includes/i18n.php:272 msgctxt "as connection blocked" msgid "Blocked" msgstr "Blokeret" -#: includes/i18n.php:587 +#: includes/i18n.php:273 msgctxt "as application program interface" msgid "API" msgstr "API" -#: includes/i18n.php:589 +#: includes/i18n.php:274 msgctxt "as software development kit versions" msgid "SDK" msgstr "SDK" -#: includes/i18n.php:591 +#: includes/i18n.php:275 msgctxt "as software development kit versions" msgid "SDK Versions" msgstr "SDK-versioner" -#: includes/i18n.php:595 +#: includes/i18n.php:276 msgctxt "as plugin folder path" msgid "Plugin Path" msgstr "Plugin-sti" -#: includes/i18n.php:597 +#: includes/i18n.php:277 msgctxt "as sdk path" msgid "SDK Path" msgstr "SDK-sti" -#: includes/i18n.php:599 +#: includes/i18n.php:278 msgid "Add Ons of Plugin %s" msgstr "Tilføjelser til plugin %s" -#: includes/i18n.php:601 +#: includes/i18n.php:279 msgid "Are you sure you want to delete all Freemius data?" -msgstr "" +msgstr "Er du sikker på, du vil slette al Freemius data?" -#: includes/i18n.php:605 +#: includes/i18n.php:280 msgid "Actions" msgstr "Handlinger" -#: includes/i18n.php:607 +#: includes/i18n.php:281 msgid "Delete All Accounts" msgstr "Slet alle konti" -#: includes/i18n.php:609 +#: includes/i18n.php:282 msgid "Start Fresh" msgstr "Start forfra" -#: includes/i18n.php:611 +#: includes/i18n.php:283 msgid "Clear API Cache" msgstr "Ryd API-cache" -#: includes/i18n.php:613 +#: includes/i18n.php:284 msgid "Sync Data From Server" msgstr "Synkroniser data fra server" -#: includes/i18n.php:615 +#: includes/i18n.php:285 msgid "Scheduled Crons" msgstr "Planlagte cron jobs" -#: includes/i18n.php:617 +#: includes/i18n.php:286 +msgid "Cron Type" +msgstr "Cron Type" + +#: includes/i18n.php:287 msgid "Plugins & Themes Sync" msgstr "Synkronisering af plugins og temaer" -#: includes/i18n.php:625 +#: includes/i18n.php:288 +msgid "Licenses" +msgstr "Licenser" + +#: includes/i18n.php:289 +msgid "Debug Log" +msgstr "Fejlfindingslog" + +#: includes/i18n.php:290 +msgid "All" +msgstr "Alle" + +#: includes/i18n.php:291 +msgid "File" +msgstr "Fil" + +#: includes/i18n.php:292 +msgid "Function" +msgstr "Funktion" + +#: includes/i18n.php:293 +msgid "Process ID" +msgstr "Proces-ID" + +#: includes/i18n.php:294 +msgid "Logger" +msgstr "Logger" + +#: includes/i18n.php:295 +msgid "Message" +msgstr "Besked" + +#: includes/i18n.php:296 +msgid "Download" +msgstr "Download" + +#: includes/i18n.php:297 +msgid "Filter" +msgstr "Filter" + +#: includes/i18n.php:298 +msgid "Type" +msgstr "Type" + +#: includes/i18n.php:299 +msgid "All Types" +msgstr "Alle typer" + +#: includes/i18n.php:300 +msgid "All Requests" +msgstr "Alle forespørgsler" + +#: includes/i18n.php:304 msgctxt "as congratulations" msgid "Congrats" msgstr "Tillykke" -#: includes/i18n.php:627 +#: includes/i18n.php:305 msgctxt "exclamation" msgid "Oops" msgstr "Ups" -#: includes/i18n.php:629 +#: includes/i18n.php:306 msgctxt "interjection expressing joy or exuberance" msgid "Yee-haw" -msgstr "" +msgstr "Yee-haw" -#: includes/i18n.php:633 +#: includes/i18n.php:307 msgctxt "" -"(especially in electronic communication) used to express elation, " -"enthusiasm, or triumph." msgid "W00t" -msgstr "" +msgstr "W00t" -#: includes/i18n.php:637 +#: includes/i18n.php:309 msgctxt "a positive response" msgid "Right on" msgstr "Sådan" -#: includes/i18n.php:639 +#: includes/i18n.php:310 msgctxt "" -"something somebody says when they are thinking about what you have just " -"said. " msgid "Hmm" msgstr "Hmm" -#: includes/i18n.php:643 +#: includes/i18n.php:312 msgid "O.K" msgstr "O.K" -#: includes/i18n.php:645 +#: includes/i18n.php:313 msgctxt "exclamation" msgid "Hey" msgstr "Hey" -#: includes/i18n.php:647 +#: includes/i18n.php:314 msgctxt "advance notice of something that will need attention." msgid "Heads up" msgstr "Se her" -#: includes/i18n.php:657 +#: includes/i18n.php:319 msgid "Seems like you got the latest release." -msgstr "" +msgstr "Det ser ud til, at du har den seneste udgivelse." -#: includes/i18n.php:659 +#: includes/i18n.php:320 msgid "You are all good!" msgstr "Det var det!" -#: includes/i18n.php:661 -msgid "" -"Sorry, we could not complete the email update. Another user with the same " -"email is already registered." -msgstr "" +#: includes/i18n.php:321 +msgid "Sorry, we could not complete the email update. Another user with the same email is already registered." +msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered." -#: includes/i18n.php:665 -msgid "" -"If you would like to give up the ownership of the plugin's account to %s " -"click the Change Ownership button." -msgstr "" +#: includes/i18n.php:322 +msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button." +msgstr "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button." -#: includes/i18n.php:669 -msgid "" -"Your email was successfully updated. You should receive an email with " -"confirmation instructions in few moments." -msgstr "" +#: includes/i18n.php:323 +msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." +msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." -#: includes/i18n.php:673 +#: includes/i18n.php:324 msgid "Your name was successfully updated." msgstr "Dit navn er blevet opdateret." -#: includes/i18n.php:675 +#: includes/i18n.php:325 msgid "You have successfully updated your %s." msgstr "Opdatering af %s blev gennemført." -#: includes/i18n.php:677 +#: includes/i18n.php:326 msgid "Please provide your full name." msgstr "Indtast venligst dit fulde navn." -#: includes/i18n.php:679 -msgid "" -"Verification mail was just sent to %s. If you can't find it after 5 min, " -"please check your spam box." -msgstr "" +#: includes/i18n.php:327 +msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." +msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." -#: includes/i18n.php:683 -msgid "" -"Just letting you know that the add-ons information of %s is being pulled " -"from an external server." -msgstr "" +#: includes/i18n.php:328 +msgid "Just letting you know that the add-ons information of %s is being pulled from an external server." +msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server." -#: includes/i18n.php:687 +#: includes/i18n.php:329 msgid "No credit card required" msgstr "Betalingskort ikke påkrævet" -#: includes/i18n.php:689 +#: includes/i18n.php:330 msgid "Premium plugin version was successfully activated." -msgstr "" +msgstr "Premium-versionen af pluginnet blev aktiveret." -#: includes/i18n.php:693 +#: includes/i18n.php:331 msgid "The upgrade of %s was successfully completed." -msgstr "" +msgstr "Opgraderingen af %s blev fuldendt." -#: includes/i18n.php:695 +#: includes/i18n.php:332 msgid "Your account was successfully activated with the %s plan." -msgstr "" +msgstr "Din konto blev aktiveret med planen %s." -#: includes/i18n.php:699 +#: includes/i18n.php:333 msgid "Download the latest %s version now" msgstr "Download den seneste version af %s nu" -#: includes/i18n.php:701 +#: includes/i18n.php:334 msgid "Please follow these steps to complete the upgrade" -msgstr "" +msgstr "Følg venligst disse trin for at færdiggøre opgraderingen" -#: includes/i18n.php:705 +#: includes/i18n.php:335 msgid "Download the latest %s version" msgstr "Download den seneste version af %s" -#: includes/i18n.php:707 +#: includes/i18n.php:336 +msgid "Download the latest version" +msgstr "Download den seneste version" + +#: includes/i18n.php:337 msgid "Deactivate the free version" msgstr "Deaktiver den gratis version" -#: includes/i18n.php:709 +#: includes/i18n.php:338 msgid "Upload and activate the downloaded version" msgstr "Upload og aktiver den downloadede version" -#: includes/i18n.php:711 +#: includes/i18n.php:339 msgid "How to upload and activate?" msgstr "Upload og aktivering, hvordan?" -#: includes/i18n.php:713 +#: includes/i18n.php:340 msgctxt "%s - product name, e.g. Facebook add-on was successfully..." msgid "%s Add-on was successfully purchased." msgstr "Betalingen for tilføjelsen %s blev gennemført." -#: includes/i18n.php:717 +#: includes/i18n.php:342 msgid "Your %s Add-on plan was successfully upgraded." -msgstr "" +msgstr "Your %s Add-on plan was successfully upgraded." -#: includes/i18n.php:721 +#: includes/i18n.php:343 msgid "Your email has been successfully verified - you are AWESOME!" -msgstr "" +msgstr "Your email has been successfully verified - you are AWESOME!" -#: includes/i18n.php:725 +#: includes/i18n.php:344 msgid "Your plan was successfully upgraded." msgstr "Din plan er blevet opgraderet." -#: includes/i18n.php:727 +#: includes/i18n.php:345 msgid "Your plan was successfully changed to %s." msgstr "Din plan er blevet ændret til %s." -#: includes/i18n.php:729 -msgid "" -"Your license has expired. You can still continue using the free plugin " -"forever." -msgstr "" +#: includes/i18n.php:346 +msgid "Your license has expired. You can still continue using the free plugin forever." +msgstr "Din licens er udløbet. Du kan stadig fortsætte med at benytte det gratis plugin for evigt." -#: includes/i18n.php:733 -msgid "" -"Your license has been cancelled. If you think it's a mistake, please contact" -" support." -msgstr "" +#: includes/i18n.php:347 +msgid "Your license has been cancelled. If you think it's a mistake, please contact support." +msgstr "Din licens er blevet annulleret. Hvis du mener, dette er en fejl, så kontakt venligst support." -#: includes/i18n.php:737 +#: includes/i18n.php:348 msgid "Your trial has been successfully started." msgstr "Din prøveperiode er begyndt." -#: includes/i18n.php:739 +#: includes/i18n.php:349 msgid "Your license was successfully activated." msgstr "Din licens er blevet aktiveret." -#: includes/i18n.php:741 +#: includes/i18n.php:350 msgid "It looks like your site currently doesn't have an active license." msgstr "Det ser ud til, at dit websted endnu ikke har en aktiv licens." -#: includes/i18n.php:745 -msgid "" -"Your license was successfully deactivated, you are back to the %s plan." -msgstr "" +#: includes/i18n.php:351 +msgid "Your license was successfully deactivated, you are back to the %s plan." +msgstr "Din licens blev deaktiveret, du er tilbage på planen %s." -#: includes/i18n.php:749 +#: includes/i18n.php:352 msgid "It looks like the license deactivation failed." msgstr "Det ser ud til, at licens-deaktiveringen mislykkedes." -#: includes/i18n.php:753 +#: includes/i18n.php:353 msgid "It looks like the license could not be activated." msgstr "Det ser ud til, at licensen ikke kunne aktiveres." -#: includes/i18n.php:757 +#: includes/i18n.php:354 msgid "Error received from the server:" msgstr "Fejl modtager fra serveren:" -#: includes/i18n.php:759 -msgid "" -"Your trial has expired. You can still continue using all our free features." +#: includes/i18n.php:355 +msgid "Your trial has expired. You can still continue using all our free features." msgstr "Din prøveperiode er udløbet. Du kan fortsat bruge alle vores gratis funktioner." -#: includes/i18n.php:763 -msgid "" -"Your plan was successfully downgraded. Your %s plan license will expire in " -"%s." -msgstr "" +#: includes/i18n.php:356 +msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s." +msgstr "Din plan blev nedgraderet. Licensen til din %s plan vil udløbe om %s." -#: includes/i18n.php:767 -msgid "" -"Seems like we are having some temporary issue with your plan downgrade. " -"Please try again in few minutes." -msgstr "" +#: includes/i18n.php:357 +msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." +msgstr "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." -#: includes/i18n.php:771 -msgid "" -"It looks like you are not in trial mode anymore so there's nothing to cancel" -" :)" -msgstr "" +#: includes/i18n.php:358 +msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)" +msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)" -#: includes/i18n.php:775 +#: includes/i18n.php:359 msgid "Your %s free trial was successfully cancelled." -msgstr "" +msgstr "Din gratis prøveperiode for %s er blevet annulleret." -#: includes/i18n.php:779 +#: includes/i18n.php:360 msgctxt "%s - numeric version number" msgid "Version %s was released." msgstr "Version %s er blevet udgivet." -#: includes/i18n.php:783 +#: includes/i18n.php:361 msgid "Please download %s." msgstr "Download venligst %s." -#: includes/i18n.php:785 +#: includes/i18n.php:362 msgctxt "%s - plan name, as the latest professional version here" msgid "the latest %s version here" msgstr "den seneste version af %s her" -#: includes/i18n.php:789 -msgid "" -"How do you like %s so far? Test all our %s premium features with a %d-day " -"free trial." -msgstr "" +#: includes/i18n.php:364 +msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial." +msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial." -#: includes/i18n.php:793 +#: includes/i18n.php:365 msgctxt "call to action" msgid "Start free trial" msgstr "Start gratis prøveperiode" -#: includes/i18n.php:795 +#: includes/i18n.php:366 msgid "Starting trial" -msgstr "" +msgstr "Starter prøveperiode" -#: includes/i18n.php:797 +#: includes/i18n.php:367 msgid "Please wait" -msgstr "" +msgstr "Vent venligst" -#: includes/i18n.php:799 -msgid "" -"Seems like we are having some temporary issue with your trial cancellation. " -"Please try again in few minutes." -msgstr "" +#: includes/i18n.php:368 +msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." +msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." -#: includes/i18n.php:803 +#: includes/i18n.php:369 msgid "You already utilized a trial before." msgstr "Du har allerede brugt din prøveperiode." -#: includes/i18n.php:805 +#: includes/i18n.php:370 msgid "You are already running the plugin in a trial mode." -msgstr "" +msgstr "Du benytter allerede dette plugin under en prøveperiode." -#: includes/i18n.php:809 +#: includes/i18n.php:371 msgid "Plan %s do not exist, therefore, can't start a trial." -msgstr "" +msgstr "Plan %s eksisterer ikke og kan derfor ikke starte prøveperiode." -#: includes/i18n.php:813 +#: includes/i18n.php:372 msgid "Plan %s does not support a trial period." msgstr "Plan %s understøtter ikke en prøveperiode." -#: includes/i18n.php:815 +#: includes/i18n.php:373 msgid "None of the plugin's plans supports a trial period." -msgstr "" +msgstr "Ingen af dette plugins planer understøtter prøveperiode." -#: includes/i18n.php:819 -msgid "" -"Unexpected API error. Please contact the plugin's author with the following " -"error." -msgstr "" +#: includes/i18n.php:374 +msgid "Unexpected API error. Please contact the plugin's author with the following error." +msgstr "Unexpected API error. Please contact the plugin's author with the following error." -#: includes/i18n.php:823 +#: includes/i18n.php:375 msgid "No commitment for %s days - cancel anytime!" msgstr "Ingen bindinger i %s dage - annuller når som helst!" -#: includes/i18n.php:825 -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." -msgstr "" +#: includes/i18n.php:376 +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." +msgstr "Din licens er udløbet. Du kan stadig benytte alle funktionerne i %s, men du bliver nødt til at fornye din licens for at få opdateringer og support." -#: includes/i18n.php:829 +#: includes/i18n.php:377 msgid "Couldn't activate %s." msgstr "Kunne ikke aktivere %s." -#: includes/i18n.php:831 +#: includes/i18n.php:378 msgid "Please contact us with the following message:" msgstr "Kontakt os venligst med følgende besked:" -#: includes/i18n.php:833 -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." -msgstr "" +#: includes/i18n.php:379 +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." +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." -#: includes/i18n.php:837 +#: includes/i18n.php:380 msgid "Please contact us here" msgstr "Kontakt os her" -#: includes/i18n.php:839 -msgid "" -"I have upgraded my account but when I try to Sync the License, the plan " -"remains %s." -msgstr "" +#: includes/i18n.php:381 +msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s." +msgstr "I have upgraded my account but when I try to Sync the License, the plan remains %s." -#: includes/i18n.php:847 +#: includes/i18n.php:384 msgid "From unknown reason, the API connectivity test failed." -msgstr "" +msgstr "From unknown reason, the API connectivity test failed." -#: includes/i18n.php:851 -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?" -msgstr "" +#: includes/i18n.php:385 +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?" +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?" -#: includes/i18n.php:855 -msgid "" -"We use PHP cURL library for the API calls, which is a very common library " -"and usually installed out of the box. Unfortunately, cURL is not installed " -"on your server." -msgstr "" +#: includes/i18n.php:386 +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." +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." -#: includes/i18n.php:859 -msgid "" -"From unknown reason, CloudFlare, the firewall we use, blocks the connection." -msgstr "" +#: includes/i18n.php:387 +msgid "Disabled method(s):" +msgstr "Disabled method(s):" -#: includes/i18n.php:863 +#: includes/i18n.php:388 +msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection." +msgstr "Af en ukendt årsag blokerer CloudFlare, vores firewall, forbindelsen." + +#: includes/i18n.php:389 msgctxt "as pluginX requires an access to our API" msgid "%s requires an access to our API." -msgstr "" +msgstr "%s påkræver adgang til vores API." -#: includes/i18n.php:867 -msgid "" -"It looks like your server is using Squid ACL (access control lists), which " -"blocks the connection." -msgstr "" +#: includes/i18n.php:391 +msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection." +msgstr "Det ser ud til, at din server benytter Squid ACL (access control lists), som blokerer forbindelsen." -#: includes/i18n.php:871 +#: includes/i18n.php:392 msgid "I don't know what is Squid or ACL, help me!" -msgstr "" +msgstr "Jeg ved ikke hvad Squid eller ACL er. Hjælp mig!" -#: includes/i18n.php873, includes/i18n.php:887 -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." -msgstr "" +#: includes/i18n.php393, includes/i18n.php:397 +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." +msgstr "Vi vil kontakte din udbyder og løse problemet. Når vi har opdatinger i sagen, vil vi følge op med en email til dig på %s." -#: includes/i18n.php:877 +#: includes/i18n.php:394 msgid "I'm a system administrator" msgstr "Jeg er en system-administrator" -#: includes/i18n.php:879 -msgid "" -"Great, please whitelist the following domains: %s. Once you done, deactivate" -" the plugin and activate it again." -msgstr "" +#: includes/i18n.php:395 +msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again." +msgstr "Sådan, venligst whitelist følgende domæner: %s. Når du er færdig, skal du deaktivere pluginnet og aktivere det igen." -#: includes/i18n.php:883 +#: includes/i18n.php:396 msgid "I don't know what is cURL or how to install it, help me!" -msgstr "" +msgstr "Jeg ved ikke hvad cURL er, eller hvordan jeg installerer det. Hjælp mig!" -#: includes/i18n.php:891 -msgid "" -"Great, please install cURL and enable it in your php.ini file. To make sure " -"it was successfully activated, use 'phpinfo()'. Once activated, deactivate " -"the plugin and reactivate it back again." -msgstr "" +#: includes/i18n.php:398 +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 plugin and reactivate it back again." +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 plugin and reactivate it back again." -#: includes/i18n.php:895 -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." -msgstr "" +#: includes/i18n.php:399 +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." +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." -#: includes/i18n.php:899 -msgid "" -"Sorry for the inconvenience and we are here to help if you give us a chance." -msgstr "" +#: includes/i18n.php:400 +msgid "Sorry for the inconvenience and we are here to help if you give us a chance." +msgstr "Vi beklager ulejligheden, og vi er her for at hjælpe, hvis du giver os chancen." -#: includes/i18n.php:903 +#: includes/i18n.php:401 msgid "Yes - I'm giving you a chance to fix it" msgstr "Ja - jeg giver jer en chance for at rette det" -#: includes/i18n.php:905 -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." -msgstr "" +#: includes/i18n.php:402 +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." +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." -#: includes/i18n.php:909 +#: includes/i18n.php:403 msgid "Let's try your previous version" msgstr "Lad os prøve din forrige version" -#: includes/i18n.php:911 +#: includes/i18n.php:404 msgid "Uninstall this version and install the previous one." msgstr "Afinstaller denne version og installer den forrige." -#: includes/i18n.php:915 +#: includes/i18n.php:405 msgid "That's exhausting, please deactivate" -msgstr "" +msgstr "Det er udmattende, deaktiver venligst" -#: includes/i18n.php:917 -msgid "" -"We feel your frustration and sincerely apologize for the inconvenience. Hope" -" to see you again in the future." -msgstr "" +#: includes/i18n.php:406 +msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future." +msgstr "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future." -#: includes/i18n.php:921 -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." -msgstr "" +#: includes/i18n.php:407 +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." +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." -#: includes/i18n.php:925 +#: includes/i18n.php:408 msgctxt "%1s - plugin title, %2s - API domain" -msgid "" -"Your server is blocking the access to Freemius' API, which is crucial for " -"%1s synchronization. Please contact your host to whitelist %2s" -msgstr "" +msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" +msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" -#: includes/i18n.php:929 -msgid "" -"It seems like one of the authentication parameters is wrong. Update your " -"Public Key, Secret Key & User ID, and try again." -msgstr "" +#: includes/i18n.php:410 +msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." +msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." -#: includes/i18n.php:937 -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." -msgstr "" +#: includes/i18n.php:413 +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." +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." -#: includes/i18n.php:941 -msgid "" -"Thanks for confirming the ownership change. An email was just sent to %s for" -" final approval." -msgstr "" +#: includes/i18n.php:414 +msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval." +msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval." -#: includes/i18n.php:945 +#: includes/i18n.php:415 msgid "%s is the new owner of the account." msgstr "%s er den nye ejer af kontoen." -#: includes/i18n.php:949 +#: includes/i18n.php:417 msgctxt "addonX cannot run without pluginY" msgid "%s cannot run without %s." msgstr "%s virker ikke uden %s." -#: includes/i18n.php:953 +#: includes/i18n.php:419 msgctxt "addonX cannot run..." msgid "%s cannot run without the plugin." msgstr "%s virker ikke uden pluginnet." -#: includes/i18n.php:957 +#: includes/i18n.php:420 msgctxt "pluginX activation was successfully..." msgid "%s activation was successfully completed." msgstr "Aktivering af %s blev gennemført." -#: includes/i18n.php:961 +#: includes/i18n.php:422 msgctxt "Plugin installer section title" msgid "Features & Pricing" msgstr "Funktioner og priser" -#: includes/i18n.php:965 +#: includes/i18n.php:423 msgid "Add-on must be deployed to WordPress.org or Freemius." -msgstr "" +msgstr "Add-on must be deployed to WordPress.org or Freemius." -#: includes/i18n.php:969 +#: includes/i18n.php:424 msgid "Paid add-on must be deployed to Freemius." -msgstr "" +msgstr "Paid add-on must be deployed to Freemius." -#: includes/i18n.php:977 -msgid "" -"%s is a premium only add-on. You have to purchase a license first before " -"activating the plugin." -msgstr "" +#: includes/i18n.php:428 +msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin." +msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin." -#: includes/i18n.php:981 -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." -msgstr "" +#: includes/i18n.php:429 +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." +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." -#: includes/i18n.php:993 +#: includes/i18n.php:434 msgctxt "as every month" msgid "Monthly" msgstr "Månedligt" -#: includes/i18n.php:995 +#: includes/i18n.php:435 msgctxt "as monthly period" msgid "mo" msgstr "md" -#: includes/i18n.php:997 +#: includes/i18n.php:436 msgctxt "as once a year" msgid "Annual" msgstr "Årligt" -#: includes/i18n.php:999 +#: includes/i18n.php:437 msgctxt "as once a year" msgid "Annually" msgstr "Årligt" -#: includes/i18n.php:1001 +#: includes/i18n.php:438 msgctxt "as once a year" msgid "Once" msgstr "Engangsbeløb" -#: includes/i18n.php:1003 +#: includes/i18n.php:439 msgctxt "as annual period" msgid "year" msgstr "år" -#: includes/i18n.php:1005 +#: includes/i18n.php:440 msgid "Lifetime" -msgstr "" +msgstr "Livstid" -#: includes/i18n.php:1007 +#: includes/i18n.php:441 msgctxt "e.g. the best product" msgid "Best" msgstr "Bedste" -#: includes/i18n.php:1009 +#: includes/i18n.php:442 msgctxt "e.g. billed monthly" msgid "Billed %s" -msgstr "" +msgstr "Faktureret %s" -#: includes/i18n.php:1011 +#: includes/i18n.php:443 msgctxt "as a discount of $5 or 10%" msgid "Save %s" msgstr "Spar %s" -#: includes/i18n.php:1015 +#: includes/i18n.php:445 msgid "View details" msgstr "Vis detaljer" -#: includes/i18n.php:1023 +#: includes/i18n.php:449 msgctxt "button label" msgid "Approve & Start Trial" -msgstr "" +msgstr "Godkend & start prøveperiode" -#: includes/i18n.php:1027 -msgid "" -"You are 1-click away from starting your %1$s-day free trial of the %2$s " -"plan." -msgstr "" +#: includes/i18n.php:451 +msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." +msgstr "Du er 1 klik fra at begynde din %1$s dages gratis prøveperiode af planen %2$s." -#: includes/i18n.php:1031 -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 plugin to periodically send data to %s to check for version " -"updates and to validate your trial." -msgstr "" +#: includes/i18n.php:453 +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 plugin to periodically send data to %s to check for version updates and to validate your trial." +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 plugin to periodically send data to %s to check for version updates and to validate your trial." -#: includes/i18n.php:1043 +#: includes/i18n.php:459 msgid "Business name" -msgstr "" +msgstr "Firmanavn" -#: includes/i18n.php:1045 +#: includes/i18n.php:460 msgid "Tax / VAT ID" -msgstr "" +msgstr "Moms / VAT ID" -#: includes/i18n.php:1047 +#: includes/i18n.php:461 msgid "Address Line %d" -msgstr "" +msgstr "Adresselinje %d" -#: includes/i18n.php:1049 +#: includes/i18n.php:462 msgid "Country" -msgstr "" +msgstr "Land" -#: includes/i18n.php:1051 +#: includes/i18n.php:463 msgid "Select Country" -msgstr "" +msgstr "Vælg land" -#: includes/i18n.php:1053 +#: includes/i18n.php:464 msgid "City" -msgstr "" +msgstr "By" -#: includes/i18n.php:1055 +#: includes/i18n.php:465 msgid "Town" -msgstr "" +msgstr "By" -#: includes/i18n.php:1057 +#: includes/i18n.php:466 msgid "State" -msgstr "" +msgstr "Stat" -#: includes/i18n.php:1059 +#: includes/i18n.php:467 msgid "Province" -msgstr "" +msgstr "Provins" -#: includes/i18n.php:1061 +#: includes/i18n.php:468 msgid "ZIP / Postal Code" -msgstr "" +msgstr "ZIP / Postnummer" + +#: includes/i18n.php:473 +msgid "Installing plugin: %s" +msgstr "Installing plugin: %s" + +#: includes/i18n.php:474 +msgid "Automatic Installation" +msgstr "Automatic Installation" + +#: includes/i18n.php:476 +msgid "%s sec" +msgstr "%s sec" + +#: includes/i18n.php:477 +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." +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." + +#: includes/i18n.php:478 +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." +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." + +#: includes/i18n.php:479 +msgid "Cancel Installation" +msgstr "Cancel Installation" + +#: includes/i18n.php:480 +msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work." +msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work." + +#: includes/i18n.php:481 +msgid "Invalid module ID." +msgstr "Invalid module ID." + +#: includes/i18n.php:482 +msgid "Auto installation only works for opted-in users." +msgstr "Auto installation only works for opted-in users." + +#: includes/i18n.php:483 +msgid "Premium version already active." +msgstr "Premium version already active." + +#: includes/i18n.php:484 +msgid "Premium add-on version already installed." +msgstr "Premium add-on version already installed." + +#: includes/i18n.php:485 +msgid "You do not have a valid license to access the premium version." +msgstr "You do not have a valid license to access the premium version." + +#: includes/i18n.php:486 +msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version." +msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version." + +#: includes/i18n.php:501 +msgctxt "Plugin installer section title" +msgid "Description" +msgstr "Beskrivelse" + +#: includes/i18n.php:502 +msgctxt "Plugin installer section title" +msgid "Installation" +msgstr "Installering" + +#: includes/i18n.php:503 +msgctxt "Plugin installer section title" +msgid "FAQ" +msgstr "FAQ" + +#: includes/i18n.php:504 +msgctxt "Plugin installer section title" +msgid "Changelog" +msgstr "Ændringslog" + +#: includes/i18n.php:505 +msgctxt "Plugin installer section title" +msgid "Reviews" +msgstr "Anmeldelser" + +#: includes/i18n.php:506 +msgctxt "Plugin installer section title" +msgid "Other Notes" +msgstr "Andre noter" + +#: includes/i18n.php:508 +msgid "%s star" +msgstr "%s stjerne" + +#: includes/i18n.php:510 +msgid "%s stars" +msgstr "%s stjerner" + +#: includes/i18n.php:512 +msgid "%s rating" +msgstr "%s vurdering" + +#: includes/i18n.php:514 +msgid "%s ratings" +msgstr "%s vurderinger" + +#: includes/i18n.php:516 +msgid "%s time" +msgstr "%s gang" + +#: includes/i18n.php:518 +msgid "%s times" +msgstr "%s gange" + +#: includes/i18n.php:520 +msgid "Click to see reviews that provided a rating of %s" +msgstr "Click to see reviews that provided a rating of %s" + +#: includes/i18n.php:521 +msgid "Last Updated" +msgstr "Senest opdateret" + +#: includes/i18n.php:522 +msgid "Requires WordPress Version:" +msgstr "Kræver WordPress-version:" + +#: includes/i18n.php:523 +msgctxt "as the plugin author" +msgid "Author:" +msgstr "Forfatter:" + +#: includes/i18n.php:524 +msgid "Compatible up to:" +msgstr "Kompatibel op til:" + +#: includes/i18n.php:525 +msgid "Downloaded:" +msgstr "Hentet:" + +#: includes/i18n.php:526 +msgid "WordPress.org Plugin Page" +msgstr "WordPress.org Plugin-side" + +#: includes/i18n.php:527 +msgid "Plugin Homepage" +msgstr "Plugin-websted" + +#: includes/i18n.php:528 +msgid "Donate to this plugin" +msgstr "Donér til dette plugin" + +#: includes/i18n.php:529 +msgid "Average Rating" +msgstr "Gennemsnitlig vurdering" + +#: includes/i18n.php:530 +msgid "based on %s" +msgstr "baseret på %s" + +#: includes/i18n.php:531 +msgid "Warning:" +msgstr "Advarsel:" + +#: includes/i18n.php:532 +msgid "Contributors" +msgstr "Bidragsydere" + +#: includes/i18n.php:533 +msgid "Plugin Install" +msgstr "Plugin Install" + +#: includes/i18n.php:534 +msgid "This plugin has not been tested with your current version of WordPress." +msgstr "This plugin has not been tested with your current version of WordPress." + +#: includes/i18n.php:535 +msgid "This plugin has not been marked as compatible with your version of WordPress." +msgstr "This plugin has not been marked as compatible with your version of WordPress." + +#: includes/i18n.php:536 +msgid "Newer Version (%s) Installed" +msgstr "Nyere version (%s) installeret" + +#: includes/i18n.php:537 +msgid "Latest Version Installed" +msgstr "Seneste version installeret" diff --git a/languages/freemius-en.mo b/languages/freemius-en.mo index 96273d86b..9f18d7168 100644 Binary files a/languages/freemius-en.mo and b/languages/freemius-en.mo differ diff --git a/languages/freemius-en.po b/languages/freemius-en.po index 5726d6ed3..da0cdbe02 100644 --- a/languages/freemius-en.po +++ b/languages/freemius-en.po @@ -80,1648 +80,1709 @@ msgid "Downgrade" msgstr "Downgrade" #: includes/i18n.php:51 +msgctxt "verb" +msgid "Cancel Subscription" +msgstr "Cancel Subscription" + +#: includes/i18n.php:52 msgid "Cancel Trial" msgstr "Cancel Trial" -#: includes/i18n.php:52 +#: includes/i18n.php:53 msgid "Free Trial" msgstr "Free Trial" -#: includes/i18n.php:53 +#: includes/i18n.php:54 msgid "Start my free %s" msgstr "Start my free %s" -#: includes/i18n.php:54 +#: includes/i18n.php:55 msgid "No commitment for %s - cancel anytime" msgstr "No commitment for %s - cancel anytime" -#: includes/i18n.php:55 +#: includes/i18n.php:56 msgid "After your free %s, pay as little as %s" msgstr "After your free %s, pay as little as %s" -#: includes/i18n.php:56 +#: includes/i18n.php:57 msgid "Details" msgstr "Details" -#: includes/i18n.php:57 +#: includes/i18n.php:58 msgid "Account Details" msgstr "Account Details" -#: includes/i18n.php:58 +#: includes/i18n.php:59 msgctxt "verb" msgid "Delete" msgstr "Delete" -#: includes/i18n.php:59 +#: includes/i18n.php:60 msgctxt "verb" msgid "Show" msgstr "Show" -#: includes/i18n.php:60 +#: includes/i18n.php:61 msgctxt "verb" msgid "Hide" msgstr "Hide" -#: includes/i18n.php:61 +#: includes/i18n.php:62 msgctxt "verb" msgid "Edit" msgstr "Edit" -#: includes/i18n.php:62 +#: includes/i18n.php:63 msgctxt "verb" msgid "Update" msgstr "Update" -#: includes/i18n.php:63 +#: includes/i18n.php:64 msgid "Date" msgstr "Date" -#: includes/i18n.php:64 +#: includes/i18n.php:65 msgid "Amount" msgstr "Amount" -#: includes/i18n.php:65 +#: includes/i18n.php:66 msgid "Invoice" msgstr "Invoice" -#: includes/i18n.php:66 +#: includes/i18n.php:67 msgid "Billing" msgstr "Billing" -#: includes/i18n.php:67 +#: includes/i18n.php:68 msgid "Payments" msgstr "Payments" -#: includes/i18n.php:68 +#: includes/i18n.php:69 msgid "Delete Account" msgstr "Delete Account" -#: includes/i18n.php:69 +#: includes/i18n.php:70 msgctxt "as close a window" msgid "Dismiss" msgstr "Dismiss" -#: includes/i18n.php:70 +#: includes/i18n.php:71 msgctxt "as product pricing plan" msgid "Plan" msgstr "Plan" -#: includes/i18n.php:71 +#: includes/i18n.php:72 msgid "Change Plan" msgstr "Change Plan" -#: includes/i18n.php:72 +#: includes/i18n.php:73 msgctxt "as download professional version" msgid "Download %s Version" msgstr "Download %s Version" -#: includes/i18n.php:73 +#: includes/i18n.php:74 msgctxt "as download professional version now" msgid "Download %s version now" msgstr "Download %s version now" -#: includes/i18n.php:74 +#: includes/i18n.php:75 msgctxt "as download latest version" msgid "Download Latest" msgstr "Download Latest" -#: includes/i18n.php:75 +#: includes/i18n.php:76 msgctxt "E.g. you have a professional license." msgid "You have a %s license." msgstr "You have a %s license." -#: includes/i18n.php:76 +#: includes/i18n.php:77 msgid "New" msgstr "New" -#: includes/i18n.php:77 +#: includes/i18n.php:78 msgid "Free" msgstr "Free" -#: includes/i18n.php:78 +#: includes/i18n.php:79 msgctxt "as trial plan" msgid "Trial" msgstr "Trial" -#: includes/i18n.php:79 +#: includes/i18n.php:80 msgctxt "as starting a trial plan" msgid "Start Trial" msgstr "Start Trial" -#: includes/i18n.php:80 +#: includes/i18n.php:81 msgctxt "verb" msgid "Purchase" msgstr "Purchase" -#: includes/i18n.php:81 +#: includes/i18n.php:82 msgid "Purchase License" msgstr "Purchase License" -#: includes/i18n.php:82 +#: includes/i18n.php:83 msgctxt "verb" msgid "Buy" msgstr "Buy" -#: includes/i18n.php:83 +#: includes/i18n.php:84 msgid "Buy License" msgstr "Buy License" -#: includes/i18n.php:84 +#: includes/i18n.php:85 msgid "Single Site License" msgstr "Single Site License" -#: includes/i18n.php:85 +#: includes/i18n.php:86 msgid "Unlimited Licenses" msgstr "Unlimited Licenses" -#: includes/i18n.php:86 +#: includes/i18n.php:87 msgid "Up to %s Sites" msgstr "Up to %s Sites" -#: includes/i18n.php:87 +#: includes/i18n.php:88 msgid "%sRenew your license now%s to access version %s features and support." msgstr "%sRenew your license now%s to access version %s features and support." -#: includes/i18n.php:88 +#: includes/i18n.php:89 msgid "Enter the email address you've used for the upgrade below and we will resend you the license key." msgstr "Enter the email address you've used for the upgrade below and we will resend you the license key." -#: includes/i18n.php:89 +#: includes/i18n.php:90 msgctxt "e.g. Professional Plan" msgid "%s Plan" msgstr "%s Plan" -#: includes/i18n.php:90 +#: includes/i18n.php:91 msgid "You are just one step away - %s" msgstr "You are just one step away - %s" -#: includes/i18n.php:91 +#: includes/i18n.php:92 msgctxt "%s - plugin name. As complete \"Jetpack\" activation now" msgid "Complete \"%s\" Activation Now" msgstr "Complete \"%s\" Activation Now" -#: includes/i18n.php:93 +#: includes/i18n.php:94 msgid "We made a few tweaks to the plugin, %s" msgstr "We made a few tweaks to the plugin, %s" -#: includes/i18n.php:94 +#: includes/i18n.php:95 msgid "Opt-in to make \"%s\" Better!" msgstr "Opt-in to make \"%s\" Better!" -#: includes/i18n.php:95 +#: includes/i18n.php:96 msgid "Error" msgstr "Error" -#: includes/i18n.php:96 +#: includes/i18n.php:97 msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." -#: includes/i18n.php:99 +#: includes/i18n.php:100 msgctxt "as expiration date" msgid "Expiration" msgstr "Expiration" -#: includes/i18n.php:100 +#: includes/i18n.php:101 msgctxt "as software license" msgid "License" msgstr "License" -#: includes/i18n.php:101 +#: includes/i18n.php:102 msgid "not verified" msgstr "not verified" -#: includes/i18n.php:102 +#: includes/i18n.php:103 msgid "Verify Email" msgstr "Verify Email" -#: includes/i18n.php:103 +#: includes/i18n.php:104 msgctxt "e.g. expires in 2 months" msgid "Expires in %s" msgstr "Expires in %s" -#: includes/i18n.php:104 +#: includes/i18n.php:105 msgctxt "e.g. auto renews in 2 months" msgid "Auto renews in %s" msgstr "Auto renews in %s" -#: includes/i18n.php:105 +#: includes/i18n.php:106 msgid "No expiration" msgstr "No expiration" -#: includes/i18n.php:106 +#: includes/i18n.php:107 msgid "Expired" msgstr "Expired" -#: includes/i18n.php:107 +#: includes/i18n.php:108 msgid "Cancelled" msgstr "Cancelled" -#: includes/i18n.php:108 +#: includes/i18n.php:109 msgctxt "e.g. In 2 hours" msgid "In %s" msgstr "In %s" -#: includes/i18n.php:109 +#: includes/i18n.php:110 msgctxt "e.g. 2 min ago" msgid "%s ago" msgstr "%s ago" -#: includes/i18n.php:111 +#: includes/i18n.php:112 msgid "%s or higher" msgstr "%s or higher" -#: includes/i18n.php:112 +#: includes/i18n.php:113 msgctxt "as plugin version" msgid "Version" msgstr "Version" -#: includes/i18n.php:113 +#: includes/i18n.php:114 msgid "Name" msgstr "Name" -#: includes/i18n.php:114 +#: includes/i18n.php:115 msgid "Email" msgstr "Email" -#: includes/i18n.php:115 +#: includes/i18n.php:116 msgid "Email address" msgstr "Email address" -#: includes/i18n.php:116 +#: includes/i18n.php:117 msgid "Verified" msgstr "Verified" -#: includes/i18n.php:117 +#: includes/i18n.php:118 msgid "Module" msgstr "Module" -#: includes/i18n.php:118 +#: includes/i18n.php:119 msgid "Module Type" msgstr "Module Type" -#: includes/i18n.php:119 +#: includes/i18n.php:120 msgid "Plugin" msgstr "Plugin" -#: includes/i18n.php:120 +#: includes/i18n.php:121 msgid "Plugins" msgstr "Plugins" -#: includes/i18n.php:121 +#: includes/i18n.php:122 msgid "Theme" msgstr "Theme" -#: includes/i18n.php:122 +#: includes/i18n.php:123 msgid "Themes" msgstr "Themes" -#: includes/i18n.php:123 +#: includes/i18n.php:124 msgctxt "as file/folder path" msgid "Path" msgstr "Path" -#: includes/i18n.php:124 +#: includes/i18n.php:125 msgid "Title" msgstr "Title" -#: includes/i18n.php:125 +#: includes/i18n.php:126 msgid "Free version" msgstr "Free version" -#: includes/i18n.php:126 +#: includes/i18n.php:127 msgid "Premium version" msgstr "Premium version" -#: includes/i18n.php:127 +#: includes/i18n.php:128 msgctxt "as WP plugin slug" msgid "Slug" msgstr "Slug" -#: includes/i18n.php:128 +#: includes/i18n.php:129 msgid "ID" msgstr "ID" -#: includes/i18n.php:129 +#: includes/i18n.php:130 msgid "Users" msgstr "Users" -#: includes/i18n.php:130 +#: includes/i18n.php:131 msgid "Plugin Installs" msgstr "Plugin Installs" -#: includes/i18n.php:131 +#: includes/i18n.php:132 msgid "%s Installs" msgstr "%s Installs" -#: includes/i18n.php:132 +#: includes/i18n.php:133 msgctxt "like websites" msgid "Sites" msgstr "Sites" -#: includes/i18n.php:133 +#: includes/i18n.php:134 msgid "User ID" msgstr "User ID" -#: includes/i18n.php:134 +#: includes/i18n.php:135 msgid "Site ID" msgstr "Site ID" -#: includes/i18n.php:135 +#: includes/i18n.php:136 msgid "Public Key" msgstr "Public Key" -#: includes/i18n.php:136 +#: includes/i18n.php:137 msgid "Secret Key" msgstr "Secret Key" -#: includes/i18n.php:137 +#: includes/i18n.php:138 msgctxt "as secret encryption key missing" msgid "No Secret" msgstr "No Secret" -#: includes/i18n.php:138 +#: includes/i18n.php:139 msgid "No ID" msgstr "No ID" -#: includes/i18n.php:139 +#: includes/i18n.php:140 msgctxt "as synchronize license" msgid "Sync License" msgstr "Sync License" -#: includes/i18n.php:140 +#: includes/i18n.php:141 msgctxt "as synchronize" msgid "Sync" msgstr "Sync" -#: includes/i18n.php:141 +#: includes/i18n.php:142 msgid "Activate License" msgstr "Activate License" -#: includes/i18n.php:142 +#: includes/i18n.php:143 msgid "Activate Free Version" msgstr "Activate Free Version" -#: includes/i18n.php:143 +#: includes/i18n.php:144 msgid "Please enter the license key that you received in the email right after the purchase:" msgstr "Please enter the license key that you received in the email right after the purchase:" -#: includes/i18n.php:144 +#: includes/i18n.php:145 msgid "Activating license..." msgstr "Activating license..." -#: includes/i18n.php:145 +#: includes/i18n.php:146 msgid "Change License" msgstr "Change License" -#: includes/i18n.php:146 +#: includes/i18n.php:147 msgid "Update License" msgstr "Update License" -#: includes/i18n.php:147 +#: includes/i18n.php:148 msgid "Deactivate License" msgstr "Deactivate License" -#: includes/i18n.php:148 +#: includes/i18n.php:149 msgid "Activate" msgstr "Activate" -#: includes/i18n.php:149 +#: includes/i18n.php:150 msgid "Deactivate" msgstr "Deactivate" -#: includes/i18n.php:150 +#: includes/i18n.php:151 msgid "Skip & Deactivate" msgstr "Skip & Deactivate" -#: includes/i18n.php:151 +#: includes/i18n.php:152 msgid "Skip & %s" msgstr "Skip & %s" -#: includes/i18n.php:152 +#: includes/i18n.php:153 msgid "No - just deactivate" msgstr "No - just deactivate" -#: includes/i18n.php:153 +#: includes/i18n.php:154 msgid "Yes - do your thing" msgstr "Yes - do your thing" -#: includes/i18n.php:154 +#: includes/i18n.php:155 msgctxt "active mode" msgid "Active" msgstr "Active" -#: includes/i18n.php:155 +#: includes/i18n.php:156 msgctxt "is active mode?" msgid "Is Active" msgstr "Is Active" -#: includes/i18n.php:156 +#: includes/i18n.php:157 msgid "Install Now" msgstr "Install Now" -#: includes/i18n.php:157 +#: includes/i18n.php:158 msgid "Install Update Now" msgstr "Install Update Now" -#: includes/i18n.php:158 +#: includes/i18n.php:159 msgid "More information about %s" msgstr "More information about %s" -#: includes/i18n.php:159 +#: includes/i18n.php:160 msgid "Localhost" msgstr "Localhost" -#: includes/i18n.php:160 +#: includes/i18n.php:161 msgctxt "as activate Professional plan" msgid "Activate %s Plan" msgstr "Activate %s Plan" -#: includes/i18n.php:161 +#: includes/i18n.php:162 msgctxt "as 5 licenses left" msgid "%s left" msgstr "%s left" -#: includes/i18n.php:162 +#: includes/i18n.php:163 msgid "Last license" msgstr "Last license" -#: includes/i18n.php:163 +#: includes/i18n.php:164 msgid "What is your %s?" msgstr "What is your %s?" -#: includes/i18n.php:164 +#: includes/i18n.php:165 msgid "Activate this add-on" msgstr "Activate this add-on" -#: includes/i18n.php:165 +#: includes/i18n.php:166 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?" 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?" -#: includes/i18n.php:166 +#: includes/i18n.php:167 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?" 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?" -#: includes/i18n.php:167 +#: includes/i18n.php:168 msgid "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?" msgstr "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?" -#: includes/i18n.php:168 +#: includes/i18n.php:169 msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." msgstr "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." -#: includes/i18n.php:169 +#: includes/i18n.php:170 msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?" msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?" -#: includes/i18n.php:170 +#: includes/i18n.php:171 msgid "You can still enjoy all %s features but you will not have access to plugin updates and support." msgstr "You can still enjoy all %s features but you will not have access to plugin updates and support." -#: includes/i18n.php:171 +#: includes/i18n.php:172 msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features." msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features." -#: includes/i18n.php:172 +#: includes/i18n.php:173 msgid "Are you sure you want to proceed?" msgstr "Are you sure you want to proceed?" -#: includes/i18n.php:175 +#: includes/i18n.php:176 msgid "Add Ons for %s" msgstr "Add Ons for %s" -#: includes/i18n.php:176 +#: includes/i18n.php:177 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." 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." -#: includes/i18n.php:178 +#: includes/i18n.php:179 msgid "Anonymous feedback" msgstr "Anonymous feedback" -#: includes/i18n.php:179 +#: includes/i18n.php:180 msgid "Quick feedback" msgstr "Quick feedback" -#: includes/i18n.php:180 +#: includes/i18n.php:181 msgid "If you have a moment, please let us know why you are deactivating" msgstr "If you have a moment, please let us know why you are deactivating" -#: includes/i18n.php:181 +#: includes/i18n.php:182 msgid "Yes - Deactivate" msgstr "Yes - Deactivate" -#: includes/i18n.php:182 +#: includes/i18n.php:183 msgid "Submit & Deactivate" msgstr "Submit & Deactivate" -#: includes/i18n.php:183 +#: includes/i18n.php:184 msgid "Cancel" msgstr "Cancel" -#: includes/i18n.php:184 +#: includes/i18n.php:185 msgid "I no longer need the plugin" msgstr "I no longer need the plugin" -#: includes/i18n.php:185 +#: includes/i18n.php:186 msgid "I found a better plugin" msgstr "I found a better plugin" -#: includes/i18n.php:186 +#: includes/i18n.php:187 msgid "I only needed the plugin for a short period" msgstr "I only needed the plugin for a short period" -#: includes/i18n.php:187 +#: includes/i18n.php:188 msgid "The plugin broke my site" msgstr "The plugin broke my site" -#: includes/i18n.php:188 +#: includes/i18n.php:189 msgid "The plugin suddenly stopped working" msgstr "The plugin suddenly stopped working" -#: includes/i18n.php:189 +#: includes/i18n.php:190 msgid "I can't pay for it anymore" msgstr "I can't pay for it anymore" -#: includes/i18n.php:190 +#: includes/i18n.php:191 msgid "It's a temporary deactivation. I'm just debugging an issue." msgstr "It's a temporary deactivation. I'm just debugging an issue." -#: includes/i18n.php:191 +#: includes/i18n.php:192 msgctxt "the text of the \"other\" reason for deactivating the plugin that is shown in the modal box." msgid "Other" msgstr "Other" -#: includes/i18n.php:193 +#: includes/i18n.php:194 msgid "Kindly tell us the reason so we can improve." msgstr "Kindly tell us the reason so we can improve." -#: includes/i18n.php:194 +#: includes/i18n.php:195 msgid "What's the plugin's name?" msgstr "What's the plugin's name?" -#: includes/i18n.php:195 +#: includes/i18n.php:196 msgid "What price would you feel comfortable paying?" msgstr "What price would you feel comfortable paying?" -#: includes/i18n.php:196 +#: includes/i18n.php:197 msgid "I couldn't understand how to make it work" msgstr "I couldn't understand how to make it work" -#: includes/i18n.php:197 +#: includes/i18n.php:198 msgid "The plugin is great, but I need specific feature that you don't support" msgstr "The plugin is great, but I need specific feature that you don't support" -#: includes/i18n.php:198 +#: includes/i18n.php:199 msgid "The plugin is not working" msgstr "The plugin is not working" -#: includes/i18n.php:199 +#: includes/i18n.php:200 msgid "It's not what I was looking for" msgstr "It's not what I was looking for" -#: includes/i18n.php:200 +#: includes/i18n.php:201 msgid "The plugin didn't work as expected" msgstr "The plugin didn't work as expected" -#: includes/i18n.php:201 +#: includes/i18n.php:202 msgid "What feature?" msgstr "What feature?" -#: includes/i18n.php:202 +#: includes/i18n.php:203 msgid "Kindly share what didn't work so we can fix it for future users..." msgstr "Kindly share what didn't work so we can fix it for future users..." -#: includes/i18n.php:203 +#: includes/i18n.php:204 msgid "What you've been looking for?" msgstr "What you've been looking for?" -#: includes/i18n.php:204 +#: includes/i18n.php:205 msgid "What did you expect?" msgstr "What did you expect?" -#: includes/i18n.php:205 +#: includes/i18n.php:206 msgid "The plugin didn't work" msgstr "The plugin didn't work" -#: includes/i18n.php:206 +#: includes/i18n.php:207 msgid "I don't like to share my information with you" msgstr "I don't like to share my information with you" -#: includes/i18n.php:207 +#: includes/i18n.php:208 msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in." msgstr "You might have missed it, but you don't have to share any data and can just %s the opt-in." -#: includes/i18n.php:211 +#: includes/i18n.php:212 msgctxt "greeting" msgid "Hey %s," msgstr "Hey %s," -#: includes/i18n.php:212 +#: includes/i18n.php:213 msgctxt "a greeting. E.g. Thanks John!" msgid "Thanks %s!" msgstr "Thanks %s!" -#: includes/i18n.php:213 +#: includes/i18n.php:214 msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." msgstr "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." -#: includes/i18n.php:214 +#: includes/i18n.php:215 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." 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." -#: includes/i18n.php:215 +#: includes/i18n.php:216 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." 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." -#: includes/i18n.php:216 +#: includes/i18n.php:217 msgid "complete the install" msgstr "complete the install" -#: includes/i18n.php:217 +#: includes/i18n.php:218 msgid "start the trial" msgstr "start the trial" -#: includes/i18n.php:218 +#: includes/i18n.php:219 msgid "Thanks for purchasing %s! To get started, please enter your license key:" msgstr "Thanks for purchasing %s! To get started, please enter your license key:" -#: includes/i18n.php:219 +#: includes/i18n.php:220 msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license." msgstr "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license." -#: includes/i18n.php:220 +#: includes/i18n.php:221 msgid "What permissions are being granted?" msgstr "What permissions are being granted?" -#: includes/i18n.php:221 +#: includes/i18n.php:222 msgid "Your Profile Overview" msgstr "Your Profile Overview" -#: includes/i18n.php:222 +#: includes/i18n.php:223 msgid "Name and email address" msgstr "Name and email address" -#: includes/i18n.php:223 +#: includes/i18n.php:224 msgid "Your Site Overview" msgstr "Your Site Overview" -#: includes/i18n.php:224 +#: includes/i18n.php:225 msgid "Site URL, WP version, PHP info, plugins & themes" msgstr "Site URL, WP version, PHP info, plugins & themes" -#: includes/i18n.php:225 +#: includes/i18n.php:226 msgid "Current Plugin Events" msgstr "Current Plugin Events" -#: includes/i18n.php:226 +#: includes/i18n.php:227 msgid "Activation, deactivation and uninstall" msgstr "Activation, deactivation and uninstall" -#: includes/i18n.php:227 +#: includes/i18n.php:228 msgid "Plugins & Themes" msgstr "Plugins & Themes" -#: includes/i18n.php:228 +#: includes/i18n.php:229 msgid "Titles, versions and state." msgstr "Titles, versions and state." -#: includes/i18n.php:229 +#: includes/i18n.php:230 msgid "Admin Notices" msgstr "Admin Notices" -#: includes/i18n.php:230 +#: includes/i18n.php:231 msgid "Newsletter" msgstr "Newsletter" -#: includes/i18n.php:231 +#: includes/i18n.php:232 msgid "Updates, announcements, marketing, no spam" msgstr "Updates, announcements, marketing, no spam" -#: includes/i18n.php:232 +#: includes/i18n.php:233 msgid "Privacy Policy" msgstr "Privacy Policy" -#: includes/i18n.php:233 +#: includes/i18n.php:234 msgid "Terms of Service" msgstr "Terms of Service" -#: includes/i18n.php:234 +#: includes/i18n.php:235 msgctxt "as activating plugin" msgid "Activating" msgstr "Activating" -#: includes/i18n.php:235 +#: includes/i18n.php:236 msgctxt "as in the process of sending an email" msgid "Sending email" msgstr "Sending email" -#: includes/i18n.php:236 +#: includes/i18n.php:237 msgctxt "button label" msgid "Allow & Continue" msgstr "Allow & Continue" -#: includes/i18n.php:237 +#: includes/i18n.php:238 msgctxt "button label" msgid "Agree & Activate License" msgstr "Agree & Activate License" -#: includes/i18n.php:238 +#: includes/i18n.php:239 msgctxt "verb" msgid "Skip" msgstr "Skip" -#: includes/i18n.php:239 +#: includes/i18n.php:240 msgid "Click here to use the plugin anonymously" msgstr "Click here to use the plugin anonymously" -#: includes/i18n.php:240 +#: includes/i18n.php:241 msgid "Re-send activation email" msgstr "Re-send activation email" -#: includes/i18n.php:241 +#: includes/i18n.php:242 msgid "License key" msgstr "License key" -#: includes/i18n.php:242 +#: includes/i18n.php:243 msgid "Send License Key" msgstr "Send License Key" -#: includes/i18n.php:243 +#: includes/i18n.php:244 msgid "Sending license key" msgstr "Sending license key" -#: includes/i18n.php:244 +#: includes/i18n.php:245 msgid "Have a license key?" msgstr "Have a license key?" -#: includes/i18n.php:245 +#: includes/i18n.php:246 msgid "Don't have a license key?" msgstr "Don't have a license key?" -#: includes/i18n.php:246 +#: includes/i18n.php:247 msgid "Can't find your license key?" msgstr "Can't find your license key?" -#: includes/i18n.php:247 +#: includes/i18n.php:248 msgid "We couldn't find your email address in the system, are you sure it's the right address?" msgstr "We couldn't find your email address in the system, are you sure it's the right address?" -#: includes/i18n.php:248 +#: includes/i18n.php:249 msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?" -#: includes/i18n.php:249 +#: includes/i18n.php:250 msgid "Opt In" msgstr "Opt In" -#: includes/i18n.php:250 +#: includes/i18n.php:251 msgid "Opt Out" msgstr "Opt Out" -#: includes/i18n.php:251 +#: includes/i18n.php:252 msgid "On second thought - I want to continue helping" msgstr "On second thought - I want to continue helping" -#: includes/i18n.php:252 +#: includes/i18n.php:253 msgid "Opting out..." msgstr "Opting out..." -#: includes/i18n.php:253 +#: includes/i18n.php:254 msgid "Opting in..." msgstr "Opting in..." -#: includes/i18n.php:254 +#: includes/i18n.php:255 msgid "We appreciate your help in making the %s better by letting us track some usage data." msgstr "We appreciate your help in making the %s better by letting us track some usage data." -#: includes/i18n.php:255 +#: includes/i18n.php:256 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." 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." -#: includes/i18n.php:256 +#: includes/i18n.php:257 msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." -#: includes/i18n.php:260 +#: includes/i18n.php:261 msgid "Screenshots" msgstr "Screenshots" -#: includes/i18n.php:261 +#: includes/i18n.php:262 msgid "Click to view full-size screenshot %d" msgstr "Click to view full-size screenshot %d" -#: includes/i18n.php:265 +#: includes/i18n.php:266 msgid "Freemius Debug" msgstr "Freemius Debug" -#: includes/i18n.php:266 +#: includes/i18n.php:267 msgctxt "as turned on" msgid "On" msgstr "On" -#: includes/i18n.php:267 +#: includes/i18n.php:268 msgctxt "as turned off" msgid "Off" msgstr "Off" -#: includes/i18n.php:268 +#: includes/i18n.php:269 msgctxt "as code debugging" msgid "Debugging" msgstr "Debugging" -#: includes/i18n.php:269 +#: includes/i18n.php:270 msgid "Freemius State" msgstr "Freemius State" -#: includes/i18n.php:270 +#: includes/i18n.php:271 msgctxt "as connection was successful" msgid "Connected" msgstr "Connected" -#: includes/i18n.php:271 +#: includes/i18n.php:272 msgctxt "as connection blocked" msgid "Blocked" msgstr "Blocked" -#: includes/i18n.php:272 +#: includes/i18n.php:273 msgctxt "as application program interface" msgid "API" msgstr "API" -#: includes/i18n.php:273 +#: includes/i18n.php:274 msgctxt "as software development kit versions" msgid "SDK" msgstr "SDK" -#: includes/i18n.php:274 +#: includes/i18n.php:275 msgctxt "as software development kit versions" msgid "SDK Versions" msgstr "SDK Versions" -#: includes/i18n.php:275 +#: includes/i18n.php:276 msgctxt "as plugin folder path" msgid "Plugin Path" msgstr "Plugin Path" -#: includes/i18n.php:276 +#: includes/i18n.php:277 msgctxt "as sdk path" msgid "SDK Path" msgstr "SDK Path" -#: includes/i18n.php:277 +#: includes/i18n.php:278 msgid "Add Ons of Plugin %s" msgstr "Add Ons of Plugin %s" -#: includes/i18n.php:278 +#: includes/i18n.php:279 msgid "Are you sure you want to delete all Freemius data?" msgstr "Are you sure you want to delete all Freemius data?" -#: includes/i18n.php:279 +#: includes/i18n.php:280 msgid "Actions" msgstr "Actions" -#: includes/i18n.php:280 +#: includes/i18n.php:281 msgid "Delete All Accounts" msgstr "Delete All Accounts" -#: includes/i18n.php:281 +#: includes/i18n.php:282 msgid "Start Fresh" msgstr "Start Fresh" -#: includes/i18n.php:282 +#: includes/i18n.php:283 msgid "Clear API Cache" msgstr "Clear API Cache" -#: includes/i18n.php:283 +#: includes/i18n.php:284 msgid "Sync Data From Server" msgstr "Sync Data From Server" -#: includes/i18n.php:284 +#: includes/i18n.php:285 msgid "Scheduled Crons" msgstr "Scheduled Crons" -#: includes/i18n.php:285 +#: includes/i18n.php:286 msgid "Cron Type" msgstr "Cron Type" -#: includes/i18n.php:286 +#: includes/i18n.php:287 msgid "Plugins & Themes Sync" msgstr "Plugins & Themes Sync" -#: includes/i18n.php:287 +#: includes/i18n.php:288 msgid "Licenses" msgstr "Licenses" -#: includes/i18n.php:288 +#: includes/i18n.php:289 msgid "Debug Log" msgstr "Debug Log" -#: includes/i18n.php:289 +#: includes/i18n.php:290 msgid "All" msgstr "All" -#: includes/i18n.php:290 +#: includes/i18n.php:291 msgid "File" msgstr "File" -#: includes/i18n.php:291 +#: includes/i18n.php:292 msgid "Function" msgstr "Function" -#: includes/i18n.php:292 +#: includes/i18n.php:293 msgid "Process ID" msgstr "Process ID" -#: includes/i18n.php:293 +#: includes/i18n.php:294 msgid "Logger" msgstr "Logger" -#: includes/i18n.php:294 +#: includes/i18n.php:295 msgid "Message" msgstr "Message" -#: includes/i18n.php:295 +#: includes/i18n.php:296 msgid "Download" msgstr "Download" -#: includes/i18n.php:296 +#: includes/i18n.php:297 msgid "Filter" msgstr "Filter" -#: includes/i18n.php:297 +#: includes/i18n.php:298 msgid "Type" msgstr "Type" -#: includes/i18n.php:298 +#: includes/i18n.php:299 msgid "All Types" msgstr "All Types" -#: includes/i18n.php:299 +#: includes/i18n.php:300 msgid "All Requests" msgstr "All Requests" -#: includes/i18n.php:303 +#: includes/i18n.php:304 msgctxt "as congratulations" msgid "Congrats" msgstr "Congrats" -#: includes/i18n.php:304 +#: includes/i18n.php:305 msgctxt "exclamation" msgid "Oops" msgstr "Oops" -#: includes/i18n.php:305 +#: includes/i18n.php:306 msgctxt "interjection expressing joy or exuberance" msgid "Yee-haw" msgstr "Yee-haw" -#: includes/i18n.php:306 +#: includes/i18n.php:307 msgctxt "(especially in electronic communication) used to express elation, enthusiasm, or triumph." msgid "W00t" msgstr "W00t" -#: includes/i18n.php:308 +#: includes/i18n.php:309 msgctxt "a positive response" msgid "Right on" msgstr "Right on" -#: includes/i18n.php:309 +#: includes/i18n.php:310 msgctxt "something somebody says when they are thinking about what you have just said. " msgid "Hmm" msgstr "Hmm" -#: includes/i18n.php:311 +#: includes/i18n.php:312 msgid "O.K" msgstr "O.K" -#: includes/i18n.php:312 +#: includes/i18n.php:313 msgctxt "exclamation" msgid "Hey" msgstr "Hey" -#: includes/i18n.php:313 +#: includes/i18n.php:314 msgctxt "advance notice of something that will need attention." msgid "Heads up" msgstr "Heads up" -#: includes/i18n.php:318 +#: includes/i18n.php:319 msgid "Seems like you got the latest release." msgstr "Seems like you got the latest release." -#: includes/i18n.php:319 +#: includes/i18n.php:320 msgid "You are all good!" msgstr "You are all good!" -#: includes/i18n.php:320 +#: includes/i18n.php:321 msgid "Sorry, we could not complete the email update. Another user with the same email is already registered." msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered." -#: includes/i18n.php:321 +#: includes/i18n.php:322 msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button." msgstr "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button." -#: includes/i18n.php:322 +#: includes/i18n.php:323 msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." -#: includes/i18n.php:323 +#: includes/i18n.php:324 msgid "Your name was successfully updated." msgstr "Your name was successfully updated." -#: includes/i18n.php:324 +#: includes/i18n.php:325 msgid "You have successfully updated your %s." msgstr "You have successfully updated your %s." -#: includes/i18n.php:325 +#: includes/i18n.php:326 msgid "Please provide your full name." msgstr "Please provide your full name." -#: includes/i18n.php:326 +#: includes/i18n.php:327 msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." -#: includes/i18n.php:327 +#: includes/i18n.php:328 msgid "Just letting you know that the add-ons information of %s is being pulled from an external server." msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server." -#: includes/i18n.php:328 +#: includes/i18n.php:329 msgid "No credit card required" msgstr "No credit card required" -#: includes/i18n.php:329 +#: includes/i18n.php:330 msgid "Premium plugin version was successfully activated." msgstr "Premium plugin version was successfully activated." -#: includes/i18n.php:330 +#: includes/i18n.php:331 msgid "The upgrade of %s was successfully completed." msgstr "The upgrade of %s was successfully completed." -#: includes/i18n.php:331 +#: includes/i18n.php:332 msgid "Your account was successfully activated with the %s plan." msgstr "Your account was successfully activated with the %s plan." -#: includes/i18n.php:332 +#: includes/i18n.php:333 msgid "Download the latest %s version now" msgstr "Download the latest %s version now" -#: includes/i18n.php:333 +#: includes/i18n.php:334 msgid "Please follow these steps to complete the upgrade" msgstr "Please follow these steps to complete the upgrade" -#: includes/i18n.php:334 +#: includes/i18n.php:335 msgid "Download the latest %s version" msgstr "Download the latest %s version" -#: includes/i18n.php:335 +#: includes/i18n.php:336 msgid "Download the latest version" msgstr "Download the latest version" -#: includes/i18n.php:336 +#: includes/i18n.php:337 msgid "Deactivate the free version" msgstr "Deactivate the free version" -#: includes/i18n.php:337 +#: includes/i18n.php:338 msgid "Upload and activate the downloaded version" msgstr "Upload and activate the downloaded version" -#: includes/i18n.php:338 +#: includes/i18n.php:339 msgid "How to upload and activate?" msgstr "How to upload and activate?" -#: includes/i18n.php:339 +#: includes/i18n.php:340 msgctxt "%s - product name, e.g. Facebook add-on was successfully..." msgid "%s Add-on was successfully purchased." msgstr "%s Add-on was successfully purchased." -#: includes/i18n.php:341 +#: includes/i18n.php:342 msgid "Your %s Add-on plan was successfully upgraded." msgstr "Your %s Add-on plan was successfully upgraded." -#: includes/i18n.php:342 +#: includes/i18n.php:343 msgid "Your email has been successfully verified - you are AWESOME!" msgstr "Your email has been successfully verified - you are AWESOME!" -#: includes/i18n.php:343 +#: includes/i18n.php:344 msgid "Your plan was successfully upgraded." msgstr "Your plan was successfully upgraded." -#: includes/i18n.php:344 +#: includes/i18n.php:345 msgid "Your plan was successfully changed to %s." msgstr "Your plan was successfully changed to %s." -#: includes/i18n.php:345 +#: includes/i18n.php:346 msgid "Your license has expired. You can still continue using the free plugin forever." msgstr "Your license has expired. You can still continue using the free plugin forever." -#: includes/i18n.php:346 +#: includes/i18n.php:347 msgid "Your license has been cancelled. If you think it's a mistake, please contact support." msgstr "Your license has been cancelled. If you think it's a mistake, please contact support." -#: includes/i18n.php:347 +#: includes/i18n.php:348 msgid "Your trial has been successfully started." msgstr "Your trial has been successfully started." -#: includes/i18n.php:348 +#: includes/i18n.php:349 msgid "Your license was successfully activated." msgstr "Your license was successfully activated." -#: includes/i18n.php:349 +#: includes/i18n.php:350 msgid "It looks like your site currently doesn't have an active license." msgstr "It looks like your site currently doesn't have an active license." -#: includes/i18n.php:350 +#: includes/i18n.php:351 msgid "Your license was successfully deactivated, you are back to the %s plan." msgstr "Your license was successfully deactivated, you are back to the %s plan." -#: includes/i18n.php:351 +#: includes/i18n.php:352 msgid "It looks like the license deactivation failed." msgstr "It looks like the license deactivation failed." -#: includes/i18n.php:352 +#: includes/i18n.php:353 msgid "It looks like the license could not be activated." msgstr "It looks like the license could not be activated." -#: includes/i18n.php:353 +#: includes/i18n.php:354 msgid "Error received from the server:" msgstr "Error received from the server:" -#: includes/i18n.php:354 +#: includes/i18n.php:355 msgid "Your trial has expired. You can still continue using all our free features." msgstr "Your trial has expired. You can still continue using all our free features." -#: includes/i18n.php:355 +#: includes/i18n.php:356 msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s." msgstr "Your plan was successfully downgraded. Your %s plan license will expire in %s." -#: includes/i18n.php:356 +#: includes/i18n.php:357 msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." msgstr "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." -#: includes/i18n.php:357 +#: includes/i18n.php:358 msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)" msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)" -#: includes/i18n.php:358 +#: includes/i18n.php:359 msgid "Your %s free trial was successfully cancelled." msgstr "Your %s free trial was successfully cancelled." -#: includes/i18n.php:359 +#: includes/i18n.php:360 msgctxt "%s - numeric version number" msgid "Version %s was released." msgstr "Version %s was released." -#: includes/i18n.php:360 +#: includes/i18n.php:361 msgid "Please download %s." msgstr "Please download %s." -#: includes/i18n.php:361 +#: includes/i18n.php:362 msgctxt "%s - plan name, as the latest professional version here" msgid "the latest %s version here" msgstr "the latest %s version here" -#: includes/i18n.php:363 +#: includes/i18n.php:364 msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial." msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial." -#: includes/i18n.php:364 +#: includes/i18n.php:365 msgctxt "call to action" msgid "Start free trial" msgstr "Start free trial" -#: includes/i18n.php:365 +#: includes/i18n.php:366 msgid "Starting trial" msgstr "Starting trial" -#: includes/i18n.php:366 +#: includes/i18n.php:367 msgid "Please wait" msgstr "Please wait" -#: includes/i18n.php:367 +#: includes/i18n.php:368 msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." -#: includes/i18n.php:368 +#: includes/i18n.php:369 msgid "You already utilized a trial before." msgstr "You already utilized a trial before." -#: includes/i18n.php:369 +#: includes/i18n.php:370 msgid "You are already running the plugin in a trial mode." msgstr "You are already running the plugin in a trial mode." -#: includes/i18n.php:370 +#: includes/i18n.php:371 msgid "Plan %s do not exist, therefore, can't start a trial." msgstr "Plan %s do not exist, therefore, can't start a trial." -#: includes/i18n.php:371 +#: includes/i18n.php:372 msgid "Plan %s does not support a trial period." msgstr "Plan %s does not support a trial period." -#: includes/i18n.php:372 +#: includes/i18n.php:373 msgid "None of the plugin's plans supports a trial period." msgstr "None of the plugin's plans supports a trial period." -#: includes/i18n.php:373 +#: includes/i18n.php:374 msgid "Unexpected API error. Please contact the plugin's author with the following error." msgstr "Unexpected API error. Please contact the plugin's author with the following error." -#: includes/i18n.php:374 +#: includes/i18n.php:375 msgid "No commitment for %s days - cancel anytime!" msgstr "No commitment for %s days - cancel anytime!" -#: includes/i18n.php:375 +#: includes/i18n.php:376 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." 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." -#: includes/i18n.php:376 +#: includes/i18n.php:377 msgid "Couldn't activate %s." msgstr "Couldn't activate %s." -#: includes/i18n.php:377 +#: includes/i18n.php:378 msgid "Please contact us with the following message:" msgstr "Please contact us with the following message:" -#: includes/i18n.php:378 +#: includes/i18n.php:379 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." 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." -#: includes/i18n.php:379 +#: includes/i18n.php:380 msgid "Please contact us here" msgstr "Please contact us here" -#: includes/i18n.php:380 +#: includes/i18n.php:381 msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s." msgstr "I have upgraded my account but when I try to Sync the License, the plan remains %s." -#: includes/i18n.php:383 +#: includes/i18n.php:384 msgid "From unknown reason, the API connectivity test failed." msgstr "From unknown reason, the API connectivity test failed." -#: includes/i18n.php:384 +#: includes/i18n.php:385 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?" 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?" -#: includes/i18n.php:385 -msgid "We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server." -msgstr "We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server." - #: includes/i18n.php:386 +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." +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." + +#: includes/i18n.php:387 +msgid "Disabled method(s):" +msgstr "Disabled method(s):" + +#: includes/i18n.php:388 msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection." msgstr "From unknown reason, CloudFlare, the firewall we use, blocks the connection." -#: includes/i18n.php:387 +#: includes/i18n.php:389 msgctxt "as pluginX requires an access to our API" msgid "%s requires an access to our API." msgstr "%s requires an access to our API." -#: includes/i18n.php:389 +#: includes/i18n.php:391 msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection." msgstr "It looks like your server is using Squid ACL (access control lists), which blocks the connection." -#: includes/i18n.php:390 +#: includes/i18n.php:392 msgid "I don't know what is Squid or ACL, help me!" msgstr "I don't know what is Squid or ACL, help me!" -#: includes/i18n.php:391, includes/i18n.php:395 +#: includes/i18n.php:393, includes/i18n.php:397 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." 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." -#: includes/i18n.php:392 +#: includes/i18n.php:394 msgid "I'm a system administrator" msgstr "I'm a system administrator" -#: includes/i18n.php:393 +#: includes/i18n.php:395 msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again." msgstr "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again." -#: includes/i18n.php:394 +#: includes/i18n.php:396 msgid "I don't know what is cURL or how to install it, help me!" msgstr "I don't know what is cURL or how to install it, help me!" -#: includes/i18n.php:396 -msgid "Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the plugin and reactivate it back again." -msgstr "Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the plugin and reactivate it back again." +#: includes/i18n.php:398 +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 plugin and reactivate it back again." +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 plugin and reactivate it back again." -#: includes/i18n.php:397 +#: includes/i18n.php:399 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." 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." -#: includes/i18n.php:398 +#: includes/i18n.php:400 msgid "Sorry for the inconvenience and we are here to help if you give us a chance." msgstr "Sorry for the inconvenience and we are here to help if you give us a chance." -#: includes/i18n.php:399 +#: includes/i18n.php:401 msgid "Yes - I'm giving you a chance to fix it" msgstr "Yes - I'm giving you a chance to fix it" -#: includes/i18n.php:400 +#: includes/i18n.php:402 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." 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." -#: includes/i18n.php:401 +#: includes/i18n.php:403 msgid "Let's try your previous version" msgstr "Let's try your previous version" -#: includes/i18n.php:402 +#: includes/i18n.php:404 msgid "Uninstall this version and install the previous one." msgstr "Uninstall this version and install the previous one." -#: includes/i18n.php:403 +#: includes/i18n.php:405 msgid "That's exhausting, please deactivate" msgstr "That's exhausting, please deactivate" -#: includes/i18n.php:404 +#: includes/i18n.php:406 msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future." msgstr "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future." -#: includes/i18n.php:405 +#: includes/i18n.php:407 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." 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." -#: includes/i18n.php:406 +#: includes/i18n.php:408 msgctxt "%1s - plugin title, %2s - API domain" msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" -#: includes/i18n.php:408 +#: includes/i18n.php:410 msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." -#: includes/i18n.php:411 +#: includes/i18n.php:413 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." 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." -#: includes/i18n.php:412 +#: includes/i18n.php:414 msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval." msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval." -#: includes/i18n.php:413 +#: includes/i18n.php:415 msgid "%s is the new owner of the account." msgstr "%s is the new owner of the account." -#: includes/i18n.php:415 +#: includes/i18n.php:417 msgctxt "addonX cannot run without pluginY" msgid "%s cannot run without %s." msgstr "%s cannot run without %s." -#: includes/i18n.php:417 +#: includes/i18n.php:419 msgctxt "addonX cannot run..." msgid "%s cannot run without the plugin." msgstr "%s cannot run without the plugin." -#: includes/i18n.php:418 +#: includes/i18n.php:420 msgctxt "pluginX activation was successfully..." msgid "%s activation was successfully completed." msgstr "%s activation was successfully completed." -#: includes/i18n.php:420 +#: includes/i18n.php:422 msgctxt "Plugin installer section title" msgid "Features & Pricing" msgstr "Features & Pricing" -#: includes/i18n.php:421 +#: includes/i18n.php:423 msgid "Add-on must be deployed to WordPress.org or Freemius." msgstr "Add-on must be deployed to WordPress.org or Freemius." -#: includes/i18n.php:422 +#: includes/i18n.php:424 msgid "Paid add-on must be deployed to Freemius." msgstr "Paid add-on must be deployed to Freemius." -#: includes/i18n.php:426 +#: includes/i18n.php:428 msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin." msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin." -#: includes/i18n.php:427 +#: includes/i18n.php:429 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." 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." -#: includes/i18n.php:432 +#: includes/i18n.php:434 msgctxt "as every month" msgid "Monthly" msgstr "Monthly" -#: includes/i18n.php:433 +#: includes/i18n.php:435 msgctxt "as monthly period" msgid "mo" msgstr "mo" -#: includes/i18n.php:434 +#: includes/i18n.php:436 msgctxt "as once a year" msgid "Annual" msgstr "Annual" -#: includes/i18n.php:435 +#: includes/i18n.php:437 msgctxt "as once a year" msgid "Annually" msgstr "Annually" -#: includes/i18n.php:436 +#: includes/i18n.php:438 msgctxt "as once a year" msgid "Once" msgstr "Once" -#: includes/i18n.php:437 +#: includes/i18n.php:439 msgctxt "as annual period" msgid "year" msgstr "year" -#: includes/i18n.php:438 +#: includes/i18n.php:440 msgid "Lifetime" msgstr "Lifetime" -#: includes/i18n.php:439 +#: includes/i18n.php:441 msgctxt "e.g. the best product" msgid "Best" msgstr "Best" -#: includes/i18n.php:440 +#: includes/i18n.php:442 msgctxt "e.g. billed monthly" msgid "Billed %s" msgstr "Billed %s" -#: includes/i18n.php:441 +#: includes/i18n.php:443 msgctxt "as a discount of $5 or 10%" msgid "Save %s" msgstr "Save %s" -#: includes/i18n.php:443 +#: includes/i18n.php:445 msgid "View details" msgstr "View details" -#: includes/i18n.php:447 +#: includes/i18n.php:449 msgctxt "button label" msgid "Approve & Start Trial" msgstr "Approve & Start Trial" -#: includes/i18n.php:449 +#: includes/i18n.php:451 msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." -#: includes/i18n.php:451 +#: includes/i18n.php:453 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 plugin to periodically send data to %s to check for version updates and to validate your trial." 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 plugin to periodically send data to %s to check for version updates and to validate your trial." -#: includes/i18n.php:457 +#: includes/i18n.php:459 msgid "Business name" msgstr "Business name" -#: includes/i18n.php:458 +#: includes/i18n.php:460 msgid "Tax / VAT ID" msgstr "Tax / VAT ID" -#: includes/i18n.php:459 +#: includes/i18n.php:461 msgid "Address Line %d" msgstr "Address Line %d" -#: includes/i18n.php:460 +#: includes/i18n.php:462 msgid "Country" msgstr "Country" -#: includes/i18n.php:461 +#: includes/i18n.php:463 msgid "Select Country" msgstr "Select Country" -#: includes/i18n.php:462 +#: includes/i18n.php:464 msgid "City" msgstr "City" -#: includes/i18n.php:463 +#: includes/i18n.php:465 msgid "Town" msgstr "Town" -#: includes/i18n.php:464 +#: includes/i18n.php:466 msgid "State" msgstr "State" -#: includes/i18n.php:465 +#: includes/i18n.php:467 msgid "Province" msgstr "Province" -#: includes/i18n.php:466 +#: includes/i18n.php:468 msgid "ZIP / Postal Code" msgstr "ZIP / Postal Code" +#: includes/i18n.php:473 +msgid "Installing plugin: %s" +msgstr "Installing plugin: %s" + +#: includes/i18n.php:474 +msgid "Automatic Installation" +msgstr "Automatic Installation" + +#: includes/i18n.php:476 +msgid "%s sec" +msgstr "%s sec" + +#: includes/i18n.php:477 +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." +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." + +#: includes/i18n.php:478 +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." +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." + +#: includes/i18n.php:479 +msgid "Cancel Installation" +msgstr "Cancel Installation" + +#: includes/i18n.php:480 +msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work." +msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work." + #: includes/i18n.php:481 +msgid "Invalid module ID." +msgstr "Invalid module ID." + +#: includes/i18n.php:482 +msgid "Auto installation only works for opted-in users." +msgstr "Auto installation only works for opted-in users." + +#: includes/i18n.php:483 +msgid "Premium version already active." +msgstr "Premium version already active." + +#: includes/i18n.php:484 +msgid "Premium add-on version already installed." +msgstr "Premium add-on version already installed." + +#: includes/i18n.php:485 +msgid "You do not have a valid license to access the premium version." +msgstr "You do not have a valid license to access the premium version." + +#: includes/i18n.php:486 +msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version." +msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version." + +#: includes/i18n.php:501 msgctxt "Plugin installer section title" msgid "Description" msgstr "Description" -#: includes/i18n.php:482 +#: includes/i18n.php:502 msgctxt "Plugin installer section title" msgid "Installation" msgstr "Installation" -#: includes/i18n.php:483 +#: includes/i18n.php:503 msgctxt "Plugin installer section title" msgid "FAQ" msgstr "FAQ" -#: includes/i18n.php:484 +#: includes/i18n.php:504 msgctxt "Plugin installer section title" msgid "Changelog" msgstr "Changelog" -#: includes/i18n.php:485 +#: includes/i18n.php:505 msgctxt "Plugin installer section title" msgid "Reviews" msgstr "Reviews" -#: includes/i18n.php:486 +#: includes/i18n.php:506 msgctxt "Plugin installer section title" msgid "Other Notes" msgstr "Other Notes" -#: includes/i18n.php:488 +#: includes/i18n.php:508 msgid "%s star" msgstr "%s star" -#: includes/i18n.php:490 +#: includes/i18n.php:510 msgid "%s stars" msgstr "%s stars" -#: includes/i18n.php:492 +#: includes/i18n.php:512 msgid "%s rating" msgstr "%s rating" -#: includes/i18n.php:494 +#: includes/i18n.php:514 msgid "%s ratings" msgstr "%s ratings" -#: includes/i18n.php:496 +#: includes/i18n.php:516 msgid "%s time" msgstr "%s time" -#: includes/i18n.php:498 +#: includes/i18n.php:518 msgid "%s times" msgstr "%s times" -#: includes/i18n.php:500 +#: includes/i18n.php:520 msgid "Click to see reviews that provided a rating of %s" msgstr "Click to see reviews that provided a rating of %s" -#: includes/i18n.php:501 +#: includes/i18n.php:521 msgid "Last Updated" msgstr "Last Updated" -#: includes/i18n.php:502 +#: includes/i18n.php:522 msgid "Requires WordPress Version:" msgstr "Requires WordPress Version:" -#: includes/i18n.php:503 +#: includes/i18n.php:523 msgctxt "as the plugin author" msgid "Author:" msgstr "Author:" -#: includes/i18n.php:504 +#: includes/i18n.php:524 msgid "Compatible up to:" msgstr "Compatible up to:" -#: includes/i18n.php:505 +#: includes/i18n.php:525 msgid "Downloaded:" msgstr "Downloaded:" -#: includes/i18n.php:506 +#: includes/i18n.php:526 msgid "WordPress.org Plugin Page" msgstr "WordPress.org Plugin Page" -#: includes/i18n.php:507 +#: includes/i18n.php:527 msgid "Plugin Homepage" msgstr "Plugin Homepage" -#: includes/i18n.php:508 +#: includes/i18n.php:528 msgid "Donate to this plugin" msgstr "Donate to this plugin" -#: includes/i18n.php:509 +#: includes/i18n.php:529 msgid "Average Rating" msgstr "Average Rating" -#: includes/i18n.php:510 +#: includes/i18n.php:530 msgid "based on %s" msgstr "based on %s" -#: includes/i18n.php:511 +#: includes/i18n.php:531 msgid "Warning:" msgstr "Warning:" -#: includes/i18n.php:512 +#: includes/i18n.php:532 msgid "Contributors" msgstr "Contributors" -#: includes/i18n.php:513 +#: includes/i18n.php:533 msgid "Plugin Install" msgstr "Plugin Install" -#: includes/i18n.php:514 +#: includes/i18n.php:534 msgid "This plugin has not been tested with your current version of WordPress." msgstr "This plugin has not been tested with your current version of WordPress." -#: includes/i18n.php:515 +#: includes/i18n.php:535 msgid "This plugin has not been marked as compatible with your version of WordPress." msgstr "This plugin has not been marked as compatible with your version of WordPress." -#: includes/i18n.php:516 +#: includes/i18n.php:536 msgid "Newer Version (%s) Installed" msgstr "Newer Version (%s) Installed" -#: includes/i18n.php:517 +#: includes/i18n.php:537 msgid "Latest Version Installed" msgstr "Latest Version Installed" diff --git a/languages/freemius-he.mo b/languages/freemius-he.mo index fc7250a74..85960613d 100644 Binary files a/languages/freemius-he.mo and b/languages/freemius-he.mo differ diff --git a/languages/freemius-he.po b/languages/freemius-he.po index 19c8e430d..6829db6b7 100644 --- a/languages/freemius-he.po +++ b/languages/freemius-he.po @@ -1,1661 +1,1791 @@ -# Copyright (C) 2016 freemius +# Copyright (C) 2017 freemius # This file is distributed under the same license as the freemius package. # Translators: +# Rami Yushuvaev , 2017 # Vova Feldman , 2016 msgid "" msgstr "" "Project-Id-Version: WordPress SDK\n" "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n" -"PO-Revision-Date: 2016-12-07 01:29+0000\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2017-05-12 17:32+0000\n" "Last-Translator: Vova Feldman \n" +"Language: he\n" "Language-Team: Hebrew (http://www.transifex.com/freemius/wordpress-sdk/language/he/)\n" -"MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" "X-Poedit-Basepath: ..\n" -"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"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" "X-Poedit-SearchPath-0: .\n" "X-Poedit-SearchPathExcluded-0: *.js\n" "X-Poedit-SourceCharset: UTF-8\n" -#: includes/i18n.php41, includes/i18n.php:55 -msgid "Yes - I'm in!" -msgstr "" - -#: includes/i18n.php43, includes/i18n.php:57 -msgid "Not today" -msgstr "לא היום" - -#: includes/i18n.php:69 +#: includes/i18n.php:37 msgid "Account" msgstr "חשבון" -#: includes/i18n.php:71 +#: includes/i18n.php:38 msgid "Add On" -msgstr "תוסף" +msgstr "הרחבה" -#: includes/i18n.php:73 +#: includes/i18n.php:39 msgid "Contact Us" msgstr "יצירת קשר" -#: includes/i18n.php:75 +#: includes/i18n.php:40 msgid "Contact Support" msgstr "צור קשר" -#: includes/i18n.php:77 +#: includes/i18n.php:41 msgid "Change Ownership" msgstr "עדכון בעלות" -#: includes/i18n.php:79 +#: includes/i18n.php:42 msgid "Support" msgstr "תמיכה" -#: includes/i18n.php:81 +#: includes/i18n.php:43 msgid "Support Forum" msgstr "פורום תמיכה" -#: includes/i18n.php:83 +#: includes/i18n.php:44 msgid "Add Ons" -msgstr "תוספים" +msgstr "הרחבות" -#: includes/i18n.php:85 +#: includes/i18n.php:45 msgctxt "verb" msgid "Upgrade" msgstr "שדרג" -#: includes/i18n.php:87 +#: includes/i18n.php:46 msgid "Awesome" msgstr "אדיר" -#: includes/i18n.php:89 +#: includes/i18n.php:47 msgctxt "noun" msgid "Pricing" msgstr "מחירון" -#: includes/i18n.php:91 +#: includes/i18n.php:48 msgctxt "noun" msgid "Price" msgstr "מחיר" -#: includes/i18n.php:93 +#: includes/i18n.php:49 msgid "Unlimited Updates" msgstr "עדכונים ללא הגבלה" -#: includes/i18n.php:95 +#: includes/i18n.php:50 msgctxt "verb" msgid "Downgrade" msgstr "שנמך" -#: includes/i18n.php:97 +#: includes/i18n.php:51 +msgctxt "verb" +msgid "Cancel Subscription" +msgstr "Cancel Subscription" + +#: includes/i18n.php:52 msgid "Cancel Trial" msgstr "ביט" -#: includes/i18n.php:99 +#: includes/i18n.php:53 msgid "Free Trial" msgstr "ניסיון חינם" -#: includes/i18n.php:101 +#: includes/i18n.php:54 msgid "Start my free %s" msgstr "התחל את %s הניסיון שלי" -#: includes/i18n.php:103 +#: includes/i18n.php:55 msgid "No commitment for %s - cancel anytime" -msgstr "" +msgstr "No commitment for %s - cancel anytime" -#: includes/i18n.php:105 +#: includes/i18n.php:56 msgid "After your free %s, pay as little as %s" -msgstr "" +msgstr "After your free %s, pay as little as %s" -#: includes/i18n.php:107 +#: includes/i18n.php:57 msgid "Details" msgstr "פרטים" -#: includes/i18n.php:109 +#: includes/i18n.php:58 msgid "Account Details" msgstr "פרטי חשבון" -#: includes/i18n.php:111 +#: includes/i18n.php:59 msgctxt "verb" msgid "Delete" msgstr "מחק" -#: includes/i18n.php:113 +#: includes/i18n.php:60 msgctxt "verb" msgid "Show" msgstr "הצג" -#: includes/i18n.php:115 +#: includes/i18n.php:61 msgctxt "verb" msgid "Hide" msgstr "הסתר" -#: includes/i18n.php:117 +#: includes/i18n.php:62 msgctxt "verb" msgid "Edit" msgstr "ערוך" -#: includes/i18n.php:119 +#: includes/i18n.php:63 msgctxt "verb" msgid "Update" -msgstr "" +msgstr "עדכן" -#: includes/i18n.php:121 +#: includes/i18n.php:64 msgid "Date" msgstr "תאריך" -#: includes/i18n.php:123 +#: includes/i18n.php:65 msgid "Amount" msgstr "סכום" -#: includes/i18n.php:125 +#: includes/i18n.php:66 msgid "Invoice" msgstr "חשבונית" -#: includes/i18n.php:127 +#: includes/i18n.php:67 msgid "Billing" msgstr "בילינג" -#: includes/i18n.php:129 +#: includes/i18n.php:68 msgid "Payments" msgstr "תשלומים" -#: includes/i18n.php:131 +#: includes/i18n.php:69 msgid "Delete Account" msgstr "מחיקת חשבון" -#: includes/i18n.php:133 +#: includes/i18n.php:70 msgctxt "as close a window" msgid "Dismiss" msgstr "סגירה" -#: includes/i18n.php:135 +#: includes/i18n.php:71 msgctxt "as product pricing plan" msgid "Plan" msgstr "חבילה" -#: includes/i18n.php:137 +#: includes/i18n.php:72 msgid "Change Plan" msgstr "שינוי חבילה" -#: includes/i18n.php:139 +#: includes/i18n.php:73 msgctxt "as download professional version" msgid "Download %s Version" -msgstr "" +msgstr "הורד גרסת %s" -#: includes/i18n.php:141 +#: includes/i18n.php:74 msgctxt "as download professional version now" msgid "Download %s version now" -msgstr "" +msgstr "הורד עכשיו גרסת %s" -#: includes/i18n.php:145 +#: includes/i18n.php:75 msgctxt "as download latest version" msgid "Download Latest" msgstr "הורד גרסה אחרונה" -#: includes/i18n.php:147 +#: includes/i18n.php:76 msgctxt "E.g. you have a professional license." msgid "You have a %s license." -msgstr "" +msgstr "יש לך רישיון %s." -#: includes/i18n.php:151 +#: includes/i18n.php:77 msgid "New" msgstr "חדש" -#: includes/i18n.php:153 +#: includes/i18n.php:78 msgid "Free" msgstr "חינם" -#: includes/i18n.php:155 +#: includes/i18n.php:79 msgctxt "as trial plan" msgid "Trial" msgstr "ניסיון" -#: includes/i18n.php:157 +#: includes/i18n.php:80 msgctxt "as starting a trial plan" msgid "Start Trial" -msgstr "" +msgstr "התחל תקופת ניסיון" -#: includes/i18n.php:159 +#: includes/i18n.php:81 msgctxt "verb" msgid "Purchase" msgstr "רכישה" -#: includes/i18n.php:161 +#: includes/i18n.php:82 msgid "Purchase License" msgstr "קניית רישיון" -#: includes/i18n.php:163 +#: includes/i18n.php:83 msgctxt "verb" msgid "Buy" msgstr "קנייה" -#: includes/i18n.php:165 +#: includes/i18n.php:84 msgid "Buy License" msgstr "קניית רישיון" -#: includes/i18n.php:167 +#: includes/i18n.php:85 msgid "Single Site License" msgstr "רשיון לאתר אחד" -#: includes/i18n.php:169 +#: includes/i18n.php:86 msgid "Unlimited Licenses" msgstr "רשיונות ללא הגבלה" -#: includes/i18n.php:171 +#: includes/i18n.php:87 msgid "Up to %s Sites" msgstr "עד %s אתרים" -#: includes/i18n.php:173 +#: includes/i18n.php:88 msgid "%sRenew your license now%s to access version %s features and support." -msgstr "" +msgstr "%sRenew your license now%s to access version %s features and support." -#: includes/i18n.php:177 -msgid "" -"Enter the email address you've used for the upgrade below and we will resend" -" you the license key." -msgstr "" +#: includes/i18n.php:89 +msgid "Enter the email address you've used for the upgrade below and we will resend you the license key." +msgstr "Enter the email address you've used for the upgrade below and we will resend you the license key." -#: includes/i18n.php:181 +#: includes/i18n.php:90 msgctxt "e.g. Professional Plan" msgid "%s Plan" -msgstr "" +msgstr "חבילה %s" -#: includes/i18n.php:183 +#: includes/i18n.php:91 msgid "You are just one step away - %s" -msgstr "" +msgstr "You are just one step away - %s" -#: includes/i18n.php:185 +#: includes/i18n.php:92 msgctxt "%s - plugin name. As complete \"Jetpack\" activation now" msgid "Complete \"%s\" Activation Now" -msgstr "" +msgstr "השלם הפעלת \"%s\" עכשיו" -#: includes/i18n.php:189 +#: includes/i18n.php:94 msgid "We made a few tweaks to the plugin, %s" msgstr "ביצענו מספר שינויים לתוסף, %s" -#: includes/i18n.php:191 +#: includes/i18n.php:95 msgid "Opt-in to make \"%s\" Better!" -msgstr "" +msgstr "Opt-in to make \"%s\" Better!" -#: includes/i18n.php:193 +#: includes/i18n.php:96 msgid "Error" msgstr "שגיאה" -#: includes/i18n.php:195 -msgid "" -"Freemius SDK couldn't find the plugin's main file. Please contact " -"sdk@freemius.com with the current error." -msgstr "" +#: includes/i18n.php:97 +msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." +msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." -#: includes/i18n.php:203 +#: includes/i18n.php:100 msgctxt "as expiration date" msgid "Expiration" msgstr "תפוגה" -#: includes/i18n.php:205 +#: includes/i18n.php:101 msgctxt "as software license" msgid "License" msgstr "רישיון" -#: includes/i18n.php:207 +#: includes/i18n.php:102 msgid "not verified" msgstr "לא מאומת" -#: includes/i18n.php:209 +#: includes/i18n.php:103 msgid "Verify Email" msgstr "אמת כתובת דוא\"ל" -#: includes/i18n.php:211 +#: includes/i18n.php:104 msgctxt "e.g. expires in 2 months" msgid "Expires in %s" -msgstr "" +msgstr "פג תוקף בעוד %s" -#: includes/i18n.php:213 +#: includes/i18n.php:105 msgctxt "e.g. auto renews in 2 months" msgid "Auto renews in %s" -msgstr "" +msgstr "עדכן אוטומטית בעוד %s" -#: includes/i18n.php:215 +#: includes/i18n.php:106 msgid "No expiration" msgstr "ללא תפוגה" -#: includes/i18n.php:217 +#: includes/i18n.php:107 msgid "Expired" msgstr "פג תוקף" -#: includes/i18n.php:219 +#: includes/i18n.php:108 msgid "Cancelled" msgstr "בוטל" -#: includes/i18n.php:221 +#: includes/i18n.php:109 msgctxt "e.g. In 2 hours" msgid "In %s" msgstr "בעוד %s" -#: includes/i18n.php:223 +#: includes/i18n.php:110 msgctxt "e.g. 2 min ago" msgid "%s ago" -msgstr "" +msgstr "לפני %s" -#: includes/i18n.php:225 +#: includes/i18n.php:112 +msgid "%s or higher" +msgstr "%s ומעלה" + +#: includes/i18n.php:113 msgctxt "as plugin version" msgid "Version" msgstr "גרסה" -#: includes/i18n.php:227 +#: includes/i18n.php:114 msgid "Name" msgstr "שם" -#: includes/i18n.php:229 +#: includes/i18n.php:115 msgid "Email" msgstr "דוא\"ל" -#: includes/i18n.php:231 +#: includes/i18n.php:116 msgid "Email address" msgstr "כתובת דוא\"ל" -#: includes/i18n.php:233 +#: includes/i18n.php:117 msgid "Verified" msgstr "מאומת" -#: includes/i18n.php:235 +#: includes/i18n.php:118 +msgid "Module" +msgstr "מודול" + +#: includes/i18n.php:119 +msgid "Module Type" +msgstr "סוג מודול" + +#: includes/i18n.php:120 msgid "Plugin" msgstr "תוסף" -#: includes/i18n.php:237 +#: includes/i18n.php:121 msgid "Plugins" msgstr "תוספים" -#: includes/i18n.php:239 +#: includes/i18n.php:122 +msgid "Theme" +msgstr "תבנית" + +#: includes/i18n.php:123 msgid "Themes" msgstr "תבניות" -#: includes/i18n.php:241 +#: includes/i18n.php:124 msgctxt "as file/folder path" msgid "Path" -msgstr "" +msgstr "נתיב" -#: includes/i18n.php:243 +#: includes/i18n.php:125 msgid "Title" msgstr "כותרת" -#: includes/i18n.php:245 +#: includes/i18n.php:126 msgid "Free version" msgstr "גירסה חינאמית" -#: includes/i18n.php:247 +#: includes/i18n.php:127 msgid "Premium version" msgstr "גירסת פרימיום" -#: includes/i18n.php:249 +#: includes/i18n.php:128 msgctxt "as WP plugin slug" msgid "Slug" -msgstr "" +msgstr "מזהה כתובת" -#: includes/i18n.php:251 +#: includes/i18n.php:129 msgid "ID" msgstr "מזהה" -#: includes/i18n.php:253 +#: includes/i18n.php:130 msgid "Users" msgstr "משתמשים" -#: includes/i18n.php:255 +#: includes/i18n.php:131 msgid "Plugin Installs" msgstr "התקנות תוסף" -#: includes/i18n.php:257 +#: includes/i18n.php:132 +msgid "%s Installs" +msgstr "%s התקנות" + +#: includes/i18n.php:133 msgctxt "like websites" msgid "Sites" msgstr "אתרים" -#: includes/i18n.php:259 +#: includes/i18n.php:134 msgid "User ID" msgstr "מזהה משתמש" -#: includes/i18n.php:261 +#: includes/i18n.php:135 msgid "Site ID" msgstr "מזהה אתר" -#: includes/i18n.php:263 +#: includes/i18n.php:136 msgid "Public Key" msgstr "מפתח פומבי" -#: includes/i18n.php:265 +#: includes/i18n.php:137 msgid "Secret Key" msgstr "מפתח סודי" -#: includes/i18n.php:267 +#: includes/i18n.php:138 msgctxt "as secret encryption key missing" msgid "No Secret" msgstr "אין מפתח סודי" -#: includes/i18n.php:269 +#: includes/i18n.php:139 msgid "No ID" msgstr "אין מזהה" -#: includes/i18n.php:271 +#: includes/i18n.php:140 msgctxt "as synchronize license" msgid "Sync License" msgstr "סינכרן רישיון" -#: includes/i18n.php:273 +#: includes/i18n.php:141 msgctxt "as synchronize" msgid "Sync" msgstr "סינכרון" -#: includes/i18n.php:275 +#: includes/i18n.php:142 msgid "Activate License" msgstr "הפעלת רישיון" -#: includes/i18n.php:277 +#: includes/i18n.php:143 msgid "Activate Free Version" msgstr "הפעלת גירסה חינאמית" -#: includes/i18n.php:279 -msgid "" -"Please enter the license key that you received in the email right after the " -"purchase:" -msgstr "" +#: includes/i18n.php:144 +msgid "Please enter the license key that you received in the email right after the purchase:" +msgstr "Please enter the license key that you received in the email right after the purchase:" -#: includes/i18n.php:283 +#: includes/i18n.php:145 msgid "Activating license..." msgstr "מפעיל רישיון..." -#: includes/i18n.php:285 +#: includes/i18n.php:146 msgid "Change License" msgstr "שינוי רישיון" -#: includes/i18n.php:287 +#: includes/i18n.php:147 msgid "Update License" msgstr "עדכון רישיון" -#: includes/i18n.php:289 +#: includes/i18n.php:148 msgid "Deactivate License" msgstr "שיחרור רישיון" -#: includes/i18n.php:291 +#: includes/i18n.php:149 msgid "Activate" msgstr "הפעלה" -#: includes/i18n.php:293 +#: includes/i18n.php:150 msgid "Deactivate" msgstr "כיבוי" -#: includes/i18n.php:295 +#: includes/i18n.php:151 msgid "Skip & Deactivate" msgstr "דלג והמשך כיבוי" -#: includes/i18n.php:297 +#: includes/i18n.php:152 +msgid "Skip & %s" +msgstr "דלג ו%s" + +#: includes/i18n.php:153 msgid "No - just deactivate" msgstr "לא - פשוט כבה" -#: includes/i18n.php:299 +#: includes/i18n.php:154 msgid "Yes - do your thing" msgstr "כן - בצעו את מה שצריך" -#: includes/i18n.php:301 +#: includes/i18n.php:155 msgctxt "active mode" msgid "Active" msgstr "מופעל" -#: includes/i18n.php:303 +#: includes/i18n.php:156 msgctxt "is active mode?" msgid "Is Active" msgstr "האם פעיל" -#: includes/i18n.php:305 +#: includes/i18n.php:157 msgid "Install Now" msgstr "התקן עכשיו" -#: includes/i18n.php:307 +#: includes/i18n.php:158 msgid "Install Update Now" msgstr "התקן עדכון במיידי" -#: includes/i18n.php:309 +#: includes/i18n.php:159 msgid "More information about %s" -msgstr "" +msgstr "מידע נוסף אודות %s" -#: includes/i18n.php:311 +#: includes/i18n.php:160 msgid "Localhost" msgstr "שרת לוקאלי" -#: includes/i18n.php:313 +#: includes/i18n.php:161 msgctxt "as activate Professional plan" msgid "Activate %s Plan" -msgstr "" +msgstr "הפעל חבילה %s" -#: includes/i18n.php:315 +#: includes/i18n.php:162 msgctxt "as 5 licenses left" msgid "%s left" msgstr "נשארו %s" -#: includes/i18n.php:317 +#: includes/i18n.php:163 msgid "Last license" msgstr "רישיון אחרון" -#: includes/i18n.php:319 +#: includes/i18n.php:164 msgid "What is your %s?" -msgstr "" +msgstr "מה ה%s שלך?" -#: includes/i18n.php:321 +#: includes/i18n.php:165 msgid "Activate this add-on" -msgstr "הפעל את התוסף" +msgstr "הפעל את ההרחבה" -#: includes/i18n.php:323 -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?" -msgstr "" +#: includes/i18n.php:166 +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?" +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?" -#: includes/i18n.php:327 -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?" -msgstr "" +#: includes/i18n.php:167 +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?" +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?" -#: includes/i18n.php:331 -msgid "" -"Deletion is not temporary. Only delete if you no longer want to use this " -"plugin anymore. Are you sure you would like to continue with the deletion?" -msgstr "" +#: includes/i18n.php:168 +msgid "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?" +msgstr "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?" -#: includes/i18n.php:335 -msgid "" -"Downgrading your plan will immediately stop all future recurring payments " -"and your %s plan license will expire in %s." -msgstr "" +#: includes/i18n.php:169 +msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." +msgstr "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." -#: includes/i18n.php:339 -msgid "" -"Cancelling the trial will immediately block access to all premium features. " -"Are you sure?" -msgstr "" +#: includes/i18n.php:170 +msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?" +msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?" -#: includes/i18n.php:343 -msgid "" -"You can still enjoy all %s features but you will not have access to plugin " -"updates and support." -msgstr "" +#: includes/i18n.php:171 +msgid "You can still enjoy all %s features but you will not have access to plugin updates and support." +msgstr "You can still enjoy all %s features but you will not have access to plugin updates and support." -#: includes/i18n.php:347 -msgid "" -"Once your license expire you can still use the Free version but you will NOT" -" have access to the %s features." -msgstr "" +#: includes/i18n.php:172 +msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features." +msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features." -#: includes/i18n.php:351 +#: includes/i18n.php:173 msgid "Are you sure you want to proceed?" msgstr "האם את/ה בטוח רוצה להמשיך?" -#: includes/i18n.php:357 +#: includes/i18n.php:176 msgid "Add Ons for %s" -msgstr "" +msgstr "הרחבות עבור %s" -#: includes/i18n.php:359 -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." -msgstr "" +#: includes/i18n.php:177 +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." +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." -#: includes/i18n.php:365 +#: includes/i18n.php:179 msgid "Anonymous feedback" msgstr "פידבק אנונימי" -#: includes/i18n.php:367 +#: includes/i18n.php:180 msgid "Quick feedback" msgstr "פידבק זריז" -#: includes/i18n.php:369 +#: includes/i18n.php:181 msgid "If you have a moment, please let us know why you are deactivating" -msgstr "" +msgstr "If you have a moment, please let us know why you are deactivating" -#: includes/i18n.php:373 +#: includes/i18n.php:182 msgid "Yes - Deactivate" msgstr "כן - " -#: includes/i18n.php:375 +#: includes/i18n.php:183 msgid "Submit & Deactivate" msgstr "שלח וכבה" -#: includes/i18n.php:377 +#: includes/i18n.php:184 msgid "Cancel" msgstr "בטל" -#: includes/i18n.php:379 +#: includes/i18n.php:185 msgid "I no longer need the plugin" msgstr "אין לי צורך יותר בתוסף" -#: includes/i18n.php:381 +#: includes/i18n.php:186 msgid "I found a better plugin" msgstr "מצאתי תוסף טוב יותר" -#: includes/i18n.php:383 +#: includes/i18n.php:187 msgid "I only needed the plugin for a short period" msgstr "השתמשתי בתוסף לתקופה קצרה" -#: includes/i18n.php:385 +#: includes/i18n.php:188 msgid "The plugin broke my site" msgstr "התוסף הרס לי את האתר" -#: includes/i18n.php:387 +#: includes/i18n.php:189 msgid "The plugin suddenly stopped working" msgstr "התוסף לפתע הפסיק לעבוד" -#: includes/i18n.php:389 +#: includes/i18n.php:190 msgid "I can't pay for it anymore" msgstr "אני לא יכול/ה להמשיך לשלם על זה" -#: includes/i18n.php:391 +#: includes/i18n.php:191 msgid "It's a temporary deactivation. I'm just debugging an issue." msgstr "כיבוי זמני לשם דיבאג." -#: includes/i18n.php:395 +#: includes/i18n.php:192 msgctxt "" -"the text of the \"other\" reason for deactivating the plugin that is shown " -"in the modal box." msgid "Other" msgstr "אחר" -#: includes/i18n.php:399 +#: includes/i18n.php:194 msgid "Kindly tell us the reason so we can improve." msgstr "אנא שתף את הסיבה כדי שנוכל להשתפר." -#: includes/i18n.php:401 +#: includes/i18n.php:195 msgid "What's the plugin's name?" msgstr "מהו שם התוסף?" -#: includes/i18n.php:403 +#: includes/i18n.php:196 msgid "What price would you feel comfortable paying?" msgstr "מה המחיר שכן תרגיש\\י בנוח לשלם?" -#: includes/i18n.php:405 +#: includes/i18n.php:197 msgid "I couldn't understand how to make it work" msgstr "לא הצלחתי להבין איך לגרום לזה לעבוד" -#: includes/i18n.php:407 -msgid "" -"The plugin is great, but I need specific feature that you don't support" +#: includes/i18n.php:198 +msgid "The plugin is great, but I need specific feature that you don't support" msgstr "התוסף מעולה, אבל אני צריכ\\ה פיצ'ר ספציפי שלא נתמך" -#: includes/i18n.php:411 +#: includes/i18n.php:199 msgid "The plugin is not working" msgstr "התוסף לא עובד" -#: includes/i18n.php:413 +#: includes/i18n.php:200 msgid "It's not what I was looking for" msgstr "חיפשתי משהו אחר" -#: includes/i18n.php:415 +#: includes/i18n.php:201 msgid "The plugin didn't work as expected" msgstr "התוסף לא עבד כמצופה" -#: includes/i18n.php:417 +#: includes/i18n.php:202 msgid "What feature?" msgstr "איזה פיטצ'ר?" -#: includes/i18n.php:419 +#: includes/i18n.php:203 msgid "Kindly share what didn't work so we can fix it for future users..." msgstr "אנא שתפ\\י מה לא עבד כדי שנוכל לתקן זאת עבור משתמשים עתידיים..." -#: includes/i18n.php:423 +#: includes/i18n.php:204 msgid "What you've been looking for?" msgstr "מה חיפשת?" -#: includes/i18n.php:425 +#: includes/i18n.php:205 msgid "What did you expect?" msgstr "למה ציפית?" -#: includes/i18n.php:427 +#: includes/i18n.php:206 msgid "The plugin didn't work" msgstr "התוסף לא עבד" -#: includes/i18n.php:429 +#: includes/i18n.php:207 msgid "I don't like to share my information with you" msgstr "אני לא אוהב את הרעיון של שיתוף מידע איתכם" -#: includes/i18n.php:431 -msgid "" -"You might have missed it, but you don't have to share any data and can just " -"%s the opt-in." +#: includes/i18n.php:208 +msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in." msgstr "אולי פספסת את זה אבל אינך חייב\\ת לשתף כל מידע איתנו, ביכולתך %s על שיתוף המידע." -#: includes/i18n.php:441 +#: includes/i18n.php:212 msgctxt "greeting" msgid "Hey %s," msgstr "היי %s," -#: includes/i18n.php:443 +#: includes/i18n.php:213 msgctxt "a greeting. E.g. Thanks John!" msgid "Thanks %s!" msgstr "תודה %s!" -#: includes/i18n.php:445 -msgid "" -"Never miss an important update - opt-in to our security and feature updates " -"notifications, and non-sensitive diagnostic tracking with %4$s." -msgstr "" +#: includes/i18n.php:214 +msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." +msgstr "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." -#: includes/i18n.php:449 -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." -msgstr "" +#: includes/i18n.php:215 +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." +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." -#: includes/i18n.php:453 -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." -msgstr "" +#: includes/i18n.php:216 +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." +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." -#: includes/i18n.php:455 +#: includes/i18n.php:217 msgid "complete the install" -msgstr "" +msgstr "השלם התקנה" -#: includes/i18n.php:457 +#: includes/i18n.php:218 msgid "start the trial" -msgstr "" +msgstr "התחל תקופת ניסיון" -#: includes/i18n.php:459 -msgid "" -"Thanks for purchasing %s! To get started, please enter your license key:" -msgstr "" +#: includes/i18n.php:219 +msgid "Thanks for purchasing %s! To get started, please enter your license key:" +msgstr "Thanks for purchasing %s! To get started, please enter your license key:" -#: includes/i18n.php:463 -msgid "" -"The plugin will be periodically sending data to %s to check for plugin " -"updates and verify the validity of your license." -msgstr "" +#: includes/i18n.php:220 +msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license." +msgstr "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license." -#: includes/i18n.php:467 +#: includes/i18n.php:221 msgid "What permissions are being granted?" msgstr "מהן ההרשאות המוענקות?" -#: includes/i18n.php:469 +#: includes/i18n.php:222 msgid "Your Profile Overview" msgstr "פרטים כלליים על הפרופיל" -#: includes/i18n.php:471 +#: includes/i18n.php:223 msgid "Name and email address" msgstr "שם וכתובת דו\"אל" -#: includes/i18n.php:473 +#: includes/i18n.php:224 msgid "Your Site Overview" msgstr "פרטים כלליים על האתר" -#: includes/i18n.php:475 +#: includes/i18n.php:225 msgid "Site URL, WP version, PHP info, plugins & themes" msgstr "כתובת אתר, גרסת וורדפרס, פרטי PHP, תוספים ותבניות" -#: includes/i18n.php:479 +#: includes/i18n.php:226 msgid "Current Plugin Events" msgstr "שינויי מצב בתוסף הנוכחי" -#: includes/i18n.php:481 +#: includes/i18n.php:227 msgid "Activation, deactivation and uninstall" msgstr "הפעלה, כיבוי והסרה" -#: includes/i18n.php:483 +#: includes/i18n.php:228 msgid "Plugins & Themes" msgstr "תוספים ותבניות" -#: includes/i18n.php:485 +#: includes/i18n.php:229 msgid "Titles, versions and state." msgstr "שמות, גרסאות וסטאטוס." -#: includes/i18n.php:487 +#: includes/i18n.php:230 msgid "Admin Notices" -msgstr "" +msgstr "התראות מנהל" -#: includes/i18n.php:489 +#: includes/i18n.php:231 msgid "Newsletter" msgstr "ניוסלטר" -#: includes/i18n.php:491 +#: includes/i18n.php:232 msgid "Updates, announcements, marketing, no spam" -msgstr "" +msgstr "Updates, announcements, marketing, no spam" -#: includes/i18n.php:493 +#: includes/i18n.php:233 msgid "Privacy Policy" msgstr "מדיניות פרטיות" -#: includes/i18n.php:495 +#: includes/i18n.php:234 msgid "Terms of Service" msgstr "תנאי השירות" -#: includes/i18n.php:497 +#: includes/i18n.php:235 msgctxt "as activating plugin" msgid "Activating" msgstr "מפעיל" -#: includes/i18n.php:499 +#: includes/i18n.php:236 msgctxt "as in the process of sending an email" msgid "Sending email" msgstr "שולח דוא\"ל" -#: includes/i18n.php:503 +#: includes/i18n.php:237 msgctxt "button label" msgid "Allow & Continue" msgstr "אפשר\\י והמשכ\\י" -#: includes/i18n.php:505 +#: includes/i18n.php:238 msgctxt "button label" msgid "Agree & Activate License" msgstr "הסכמה והפעלת רישיון" -#: includes/i18n.php:507 +#: includes/i18n.php:239 msgctxt "verb" msgid "Skip" msgstr "דלג" -#: includes/i18n.php:509 +#: includes/i18n.php:240 msgid "Click here to use the plugin anonymously" -msgstr "" +msgstr "Click here to use the plugin anonymously" -#: includes/i18n.php:511 +#: includes/i18n.php:241 msgid "Re-send activation email" msgstr "שליחה חוזרת של מייל האקטיבציה" -#: includes/i18n.php:513 +#: includes/i18n.php:242 msgid "License key" msgstr "מפתח רישיון" -#: includes/i18n.php:515 +#: includes/i18n.php:243 msgid "Send License Key" msgstr "שליחת מפתח רישיון" -#: includes/i18n.php:517 +#: includes/i18n.php:244 msgid "Sending license key" msgstr "שולח מפתח רישיון" -#: includes/i18n.php:519 +#: includes/i18n.php:245 msgid "Have a license key?" msgstr "האם ברשותך רישיון?" -#: includes/i18n.php:521 +#: includes/i18n.php:246 msgid "Don't have a license key?" msgstr "האם אין ברשותך מפתח רישיון?" -#: includes/i18n.php:523 +#: includes/i18n.php:247 msgid "Can't find your license key?" msgstr "האם אינך מוצא את מפתח הרישיון?" -#: includes/i18n.php:525 -msgid "" -"We couldn't find your email address in the system, are you sure it's the " -"right address?" -msgstr "" +#: includes/i18n.php:248 +msgid "We couldn't find your email address in the system, are you sure it's the right address?" +msgstr "We couldn't find your email address in the system, are you sure it's the right address?" -#: includes/i18n.php:529 -msgid "" -"We can't see any active licenses associated with that email address, are you" -" sure it's the right address?" -msgstr "" +#: includes/i18n.php:249 +msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" +msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?" -#: includes/i18n.php:533 +#: includes/i18n.php:250 msgid "Opt In" -msgstr "" +msgstr "Opt In" -#: includes/i18n.php:535 +#: includes/i18n.php:251 msgid "Opt Out" -msgstr "" +msgstr "Opt Out" -#: includes/i18n.php:537 +#: includes/i18n.php:252 msgid "On second thought - I want to continue helping" -msgstr "" +msgstr "במחשבה שנייה - אני רוצה להמשיך לעזור" -#: includes/i18n.php:541 +#: includes/i18n.php:253 msgid "Opting out..." -msgstr "" +msgstr "Opting out..." -#: includes/i18n.php:543 +#: includes/i18n.php:254 msgid "Opting in..." -msgstr "" +msgstr "Opting in..." -#: includes/i18n.php:545 -msgid "" -"We appreciate your help in making the %s better by letting us track some " -"usage data." -msgstr "" +#: includes/i18n.php:255 +msgid "We appreciate your help in making the %s better by letting us track some usage data." +msgstr "We appreciate your help in making the %s better by letting us track some usage data." -#: includes/i18n.php:549 -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." -msgstr "" +#: includes/i18n.php:256 +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." +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." -#: includes/i18n.php:553 -msgid "" -"By clicking \"Opt Out\", we will no longer be sending any data from %s to " -"%s." -msgstr "" +#: includes/i18n.php:257 +msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." +msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." -#: includes/i18n.php:563 +#: includes/i18n.php:261 msgid "Screenshots" msgstr "צילומי מסך" -#: includes/i18n.php:565 +#: includes/i18n.php:262 msgid "Click to view full-size screenshot %d" -msgstr "" +msgstr "Click to view full-size screenshot %d" -#: includes/i18n.php:573 +#: includes/i18n.php:266 msgid "Freemius Debug" -msgstr "" +msgstr "Freemius Debug" -#: includes/i18n.php:575 +#: includes/i18n.php:267 msgctxt "as turned on" msgid "On" msgstr "דלוק" -#: includes/i18n.php:577 +#: includes/i18n.php:268 msgctxt "as turned off" msgid "Off" msgstr "כבוי" -#: includes/i18n.php:579 +#: includes/i18n.php:269 msgctxt "as code debugging" msgid "Debugging" msgstr "דיבוג" -#: includes/i18n.php:581 +#: includes/i18n.php:270 msgid "Freemius State" -msgstr "" +msgstr "Freemius State" -#: includes/i18n.php:583 +#: includes/i18n.php:271 msgctxt "as connection was successful" msgid "Connected" msgstr "מחובר" -#: includes/i18n.php:585 +#: includes/i18n.php:272 msgctxt "as connection blocked" msgid "Blocked" msgstr "חסום" -#: includes/i18n.php:587 +#: includes/i18n.php:273 msgctxt "as application program interface" msgid "API" msgstr "API" -#: includes/i18n.php:589 +#: includes/i18n.php:274 msgctxt "as software development kit versions" msgid "SDK" msgstr "SDK" -#: includes/i18n.php:591 +#: includes/i18n.php:275 msgctxt "as software development kit versions" msgid "SDK Versions" msgstr "גרסאות SDK" -#: includes/i18n.php:595 +#: includes/i18n.php:276 msgctxt "as plugin folder path" msgid "Plugin Path" -msgstr "" +msgstr "נתיב התוסף" -#: includes/i18n.php:597 +#: includes/i18n.php:277 msgctxt "as sdk path" msgid "SDK Path" msgstr "מיקום SDK" -#: includes/i18n.php:599 +#: includes/i18n.php:278 msgid "Add Ons of Plugin %s" -msgstr "" +msgstr "הרחבות עבור %s" -#: includes/i18n.php:601 +#: includes/i18n.php:279 msgid "Are you sure you want to delete all Freemius data?" -msgstr "" +msgstr "Are you sure you want to delete all Freemius data?" -#: includes/i18n.php:605 +#: includes/i18n.php:280 msgid "Actions" msgstr "פעולות" -#: includes/i18n.php:607 +#: includes/i18n.php:281 msgid "Delete All Accounts" msgstr "מחיקת כל החשבונות" -#: includes/i18n.php:609 +#: includes/i18n.php:282 msgid "Start Fresh" msgstr "התחל מחדש" -#: includes/i18n.php:611 +#: includes/i18n.php:283 msgid "Clear API Cache" msgstr "ניקוי מטמון ה-API" -#: includes/i18n.php:613 +#: includes/i18n.php:284 msgid "Sync Data From Server" msgstr "סנכרון מידע מהשרת" -#: includes/i18n.php:615 +#: includes/i18n.php:285 msgid "Scheduled Crons" -msgstr "" +msgstr "Scheduled Crons" + +#: includes/i18n.php:286 +msgid "Cron Type" +msgstr "Cron Type" -#: includes/i18n.php:617 +#: includes/i18n.php:287 msgid "Plugins & Themes Sync" -msgstr "" +msgstr "Plugins & Themes Sync" + +#: includes/i18n.php:288 +msgid "Licenses" +msgstr "רישיונות" + +#: includes/i18n.php:289 +msgid "Debug Log" +msgstr "Debug Log" + +#: includes/i18n.php:290 +msgid "All" +msgstr "הכל" + +#: includes/i18n.php:291 +msgid "File" +msgstr "קובץ" -#: includes/i18n.php:625 +#: includes/i18n.php:292 +msgid "Function" +msgstr "פונקציה" + +#: includes/i18n.php:293 +msgid "Process ID" +msgstr "Process ID" + +#: includes/i18n.php:294 +msgid "Logger" +msgstr "Logger" + +#: includes/i18n.php:295 +msgid "Message" +msgstr "הודעה" + +#: includes/i18n.php:296 +msgid "Download" +msgstr "הורדה" + +#: includes/i18n.php:297 +msgid "Filter" +msgstr "פילטר" + +#: includes/i18n.php:298 +msgid "Type" +msgstr "סוג" + +#: includes/i18n.php:299 +msgid "All Types" +msgstr "כל הסוגים" + +#: includes/i18n.php:300 +msgid "All Requests" +msgstr "כל הבקשות" + +#: includes/i18n.php:304 msgctxt "as congratulations" msgid "Congrats" msgstr "מזל טוב" -#: includes/i18n.php:627 +#: includes/i18n.php:305 msgctxt "exclamation" msgid "Oops" msgstr "אופס" -#: includes/i18n.php:629 +#: includes/i18n.php:306 msgctxt "interjection expressing joy or exuberance" msgid "Yee-haw" -msgstr "" +msgstr "Yee-haw" -#: includes/i18n.php:633 +#: includes/i18n.php:307 msgctxt "" -"(especially in electronic communication) used to express elation, " -"enthusiasm, or triumph." msgid "W00t" -msgstr "" +msgstr "W00t" -#: includes/i18n.php:637 +#: includes/i18n.php:309 msgctxt "a positive response" msgid "Right on" -msgstr "" +msgstr "מעולה" -#: includes/i18n.php:639 +#: includes/i18n.php:310 msgctxt "" -"something somebody says when they are thinking about what you have just " -"said. " msgid "Hmm" msgstr "הממ" -#: includes/i18n.php:643 +#: includes/i18n.php:312 msgid "O.K" msgstr "אוקיי" -#: includes/i18n.php:645 +#: includes/i18n.php:313 msgctxt "exclamation" msgid "Hey" msgstr "היי" -#: includes/i18n.php:647 +#: includes/i18n.php:314 msgctxt "advance notice of something that will need attention." msgid "Heads up" msgstr "לתשמות לבך" -#: includes/i18n.php:657 +#: includes/i18n.php:319 msgid "Seems like you got the latest release." -msgstr "" +msgstr "Seems like you got the latest release." -#: includes/i18n.php:659 +#: includes/i18n.php:320 msgid "You are all good!" msgstr "את\\ה מסודר!" -#: includes/i18n.php:661 -msgid "" -"Sorry, we could not complete the email update. Another user with the same " -"email is already registered." -msgstr "" +#: includes/i18n.php:321 +msgid "Sorry, we could not complete the email update. Another user with the same email is already registered." +msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered." -#: includes/i18n.php:665 -msgid "" -"If you would like to give up the ownership of the plugin's account to %s " -"click the Change Ownership button." -msgstr "" +#: includes/i18n.php:322 +msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button." +msgstr "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button." -#: includes/i18n.php:669 -msgid "" -"Your email was successfully updated. You should receive an email with " -"confirmation instructions in few moments." -msgstr "" +#: includes/i18n.php:323 +msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." +msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." -#: includes/i18n.php:673 +#: includes/i18n.php:324 msgid "Your name was successfully updated." msgstr "שמך עודכן בהצלחה." -#: includes/i18n.php:675 +#: includes/i18n.php:325 msgid "You have successfully updated your %s." -msgstr "" +msgstr "You have successfully updated your %s." -#: includes/i18n.php:677 +#: includes/i18n.php:326 msgid "Please provide your full name." msgstr "נא למלא את שמך המלא." -#: includes/i18n.php:679 -msgid "" -"Verification mail was just sent to %s. If you can't find it after 5 min, " -"please check your spam box." -msgstr "" +#: includes/i18n.php:327 +msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." +msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." -#: includes/i18n.php:683 -msgid "" -"Just letting you know that the add-ons information of %s is being pulled " -"from an external server." -msgstr "" +#: includes/i18n.php:328 +msgid "Just letting you know that the add-ons information of %s is being pulled from an external server." +msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server." -#: includes/i18n.php:687 +#: includes/i18n.php:329 msgid "No credit card required" msgstr "לא נדרש כרטיס אשראי" -#: includes/i18n.php:689 +#: includes/i18n.php:330 msgid "Premium plugin version was successfully activated." -msgstr "" +msgstr "Premium plugin version was successfully activated." -#: includes/i18n.php:693 +#: includes/i18n.php:331 msgid "The upgrade of %s was successfully completed." -msgstr "" +msgstr "The upgrade of %s was successfully completed." -#: includes/i18n.php:695 +#: includes/i18n.php:332 msgid "Your account was successfully activated with the %s plan." -msgstr "חשבונך הופעל בהצלחה עם חבילת ה-%s." +msgstr "חשבונך הופעל בהצלחה עם חבילת %s." -#: includes/i18n.php:699 +#: includes/i18n.php:333 msgid "Download the latest %s version now" msgstr "הורדת גרסת ה-%s העדכנית - עכשיו" -#: includes/i18n.php:701 +#: includes/i18n.php:334 msgid "Please follow these steps to complete the upgrade" msgstr "נא לבצע את הצעדים הבאים להשלמת השידרוג" -#: includes/i18n.php:705 +#: includes/i18n.php:335 msgid "Download the latest %s version" msgstr "הורד\\י את גרסת ה-%s העדכנית" -#: includes/i18n.php:707 +#: includes/i18n.php:336 +msgid "Download the latest version" +msgstr "הורד את הגרסה האחרונה" + +#: includes/i18n.php:337 msgid "Deactivate the free version" msgstr "כבה\\י את הגרסה החינאמית" -#: includes/i18n.php:709 +#: includes/i18n.php:338 msgid "Upload and activate the downloaded version" msgstr "העלה\\י והפעיל\\י את הגרסה שהורדת" -#: includes/i18n.php:711 +#: includes/i18n.php:339 msgid "How to upload and activate?" msgstr "איך להעלות ולהפעיל?" -#: includes/i18n.php:713 +#: includes/i18n.php:340 msgctxt "%s - product name, e.g. Facebook add-on was successfully..." msgid "%s Add-on was successfully purchased." -msgstr "" +msgstr "ההרחבה %s נרכשה בהצלחה." -#: includes/i18n.php:717 +#: includes/i18n.php:342 msgid "Your %s Add-on plan was successfully upgraded." -msgstr "" +msgstr "חבילת ההרחבה %s שודרגה בהצלחה." -#: includes/i18n.php:721 +#: includes/i18n.php:343 msgid "Your email has been successfully verified - you are AWESOME!" -msgstr "" +msgstr "Your email has been successfully verified - you are AWESOME!" -#: includes/i18n.php:725 +#: includes/i18n.php:344 msgid "Your plan was successfully upgraded." -msgstr "החבילה הופעלה בהצלחה." +msgstr "החבילה שודרגה בהצלחה." -#: includes/i18n.php:727 +#: includes/i18n.php:345 msgid "Your plan was successfully changed to %s." -msgstr "" +msgstr "החבילה עודכנה בהצלחה אל %s." -#: includes/i18n.php:729 -msgid "" -"Your license has expired. You can still continue using the free plugin " -"forever." +#: includes/i18n.php:346 +msgid "Your license has expired. You can still continue using the free plugin forever." msgstr "פג תוקפו של הרישיון. עדיין ניתן להמשיך להשתמש בגרסה החינאמית של התוסף ללא מגבלת זמן." -#: includes/i18n.php:733 -msgid "" -"Your license has been cancelled. If you think it's a mistake, please contact" -" support." +#: includes/i18n.php:347 +msgid "Your license has been cancelled. If you think it's a mistake, please contact support." msgstr "רשיונך בוטל. אם לדעתך זו טעות, נא ליצור קשר עם התמיכה." -#: includes/i18n.php:737 +#: includes/i18n.php:348 msgid "Your trial has been successfully started." msgstr "הניסיון שלך הופעל בהצלחה." -#: includes/i18n.php:739 +#: includes/i18n.php:349 msgid "Your license was successfully activated." msgstr "הרישיון הופעל בהצלחה." -#: includes/i18n.php:741 +#: includes/i18n.php:350 msgid "It looks like your site currently doesn't have an active license." msgstr "נראה לאתר עדיין אין רישיון פעיל." -#: includes/i18n.php:745 -msgid "" -"Your license was successfully deactivated, you are back to the %s plan." -msgstr "רישיונך נותק בהצלחה, חזרת לחבילת ה-%s" +#: includes/i18n.php:351 +msgid "Your license was successfully deactivated, you are back to the %s plan." +msgstr "רישיונך נותק בהצלחה, חזרת לחבילת %s" -#: includes/i18n.php:749 +#: includes/i18n.php:352 msgid "It looks like the license deactivation failed." msgstr "נראה שניתוק הרישיון נכשל." -#: includes/i18n.php:753 +#: includes/i18n.php:353 msgid "It looks like the license could not be activated." msgstr "נראה שלא ניתן להפעיל את הרישיון." -#: includes/i18n.php:757 +#: includes/i18n.php:354 msgid "Error received from the server:" msgstr "הוחזרה שגיאה מהשרת:" -#: includes/i18n.php:759 -msgid "" -"Your trial has expired. You can still continue using all our free features." +#: includes/i18n.php:355 +msgid "Your trial has expired. You can still continue using all our free features." msgstr "תקופת הניסיון נגמרה. ביכולתך להמשיך להשתמש בכל הפיטצ'רים החינאמיים." -#: includes/i18n.php:763 -msgid "" -"Your plan was successfully downgraded. Your %s plan license will expire in " -"%s." -msgstr "" +#: includes/i18n.php:356 +msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s." +msgstr "Your plan was successfully downgraded. Your %s plan license will expire in %s." -#: includes/i18n.php:767 -msgid "" -"Seems like we are having some temporary issue with your plan downgrade. " -"Please try again in few minutes." -msgstr "" +#: includes/i18n.php:357 +msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." +msgstr "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." -#: includes/i18n.php:771 -msgid "" -"It looks like you are not in trial mode anymore so there's nothing to cancel" -" :)" -msgstr "" +#: includes/i18n.php:358 +msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)" +msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)" -#: includes/i18n.php:775 +#: includes/i18n.php:359 msgid "Your %s free trial was successfully cancelled." -msgstr "" +msgstr "תקופת הניסיון החינמית של %s בוטלה בהצלחה." -#: includes/i18n.php:779 +#: includes/i18n.php:360 msgctxt "%s - numeric version number" msgid "Version %s was released." msgstr "גרסה %s הושקה." -#: includes/i18n.php:783 +#: includes/i18n.php:361 msgid "Please download %s." -msgstr "" +msgstr "נא להוריד את %s." -#: includes/i18n.php:785 +#: includes/i18n.php:362 msgctxt "%s - plan name, as the latest professional version here" msgid "the latest %s version here" msgstr "גרסת ה-%s האחרונה כאן" -#: includes/i18n.php:789 -msgid "" -"How do you like %s so far? Test all our %s premium features with a %d-day " -"free trial." -msgstr "" +#: includes/i18n.php:364 +msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial." +msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial." -#: includes/i18n.php:793 +#: includes/i18n.php:365 msgctxt "call to action" msgid "Start free trial" msgstr "התחלת ניסיון חינם" -#: includes/i18n.php:795 +#: includes/i18n.php:366 msgid "Starting trial" -msgstr "" +msgstr "מתחיל תקופת ניסיון" -#: includes/i18n.php:797 +#: includes/i18n.php:367 msgid "Please wait" -msgstr "" +msgstr "נא להמתין" -#: includes/i18n.php:799 -msgid "" -"Seems like we are having some temporary issue with your trial cancellation. " -"Please try again in few minutes." -msgstr "" +#: includes/i18n.php:368 +msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." +msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." -#: includes/i18n.php:803 +#: includes/i18n.php:369 msgid "You already utilized a trial before." msgstr "הניסיון כבר נוצל בעבר." -#: includes/i18n.php:805 +#: includes/i18n.php:370 msgid "You are already running the plugin in a trial mode." msgstr "התוסף כבר עכשיו בתקופת ניסיון." -#: includes/i18n.php:809 +#: includes/i18n.php:371 msgid "Plan %s do not exist, therefore, can't start a trial." -msgstr "" +msgstr "החבילה %s אינה קיימת, לכן, לא ניתן להתחיל תקופת ניסיון." -#: includes/i18n.php:813 +#: includes/i18n.php:372 msgid "Plan %s does not support a trial period." -msgstr "" +msgstr "תוכנית %s אינה תומכת בתקופת ניסיון." -#: includes/i18n.php:815 +#: includes/i18n.php:373 msgid "None of the plugin's plans supports a trial period." -msgstr "אף אחת מחבילות התוסף מאפשרת תקופת ניסיון." +msgstr "אף אחת מהחבילות אינה מאפשרת תקופת ניסיון." -#: includes/i18n.php:819 -msgid "" -"Unexpected API error. Please contact the plugin's author with the following " -"error." +#: includes/i18n.php:374 +msgid "Unexpected API error. Please contact the plugin's author with the following error." msgstr "שגיאת API בלתי צפוייה. נא לפנות למפתח התוסף עם השגיאה הבאה." -#: includes/i18n.php:823 +#: includes/i18n.php:375 msgid "No commitment for %s days - cancel anytime!" -msgstr "" +msgstr "ללא התחייבות ל-%s ימין - בטלו בכל רגע!" -#: includes/i18n.php:825 -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." -msgstr "" +#: includes/i18n.php:376 +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." +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." -#: includes/i18n.php:829 +#: includes/i18n.php:377 msgid "Couldn't activate %s." -msgstr "" +msgstr "לא ניתן להפעיל את %s." -#: includes/i18n.php:831 +#: includes/i18n.php:378 msgid "Please contact us with the following message:" msgstr "אנא צור איתנו קשר יחד עם ההודעה הבאה:" -#: includes/i18n.php:833 -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." -msgstr "" +#: includes/i18n.php:379 +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." +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." -#: includes/i18n.php:837 +#: includes/i18n.php:380 msgid "Please contact us here" msgstr "אנא צור איתנו קשר כאן" -#: includes/i18n.php:839 -msgid "" -"I have upgraded my account but when I try to Sync the License, the plan " -"remains %s." -msgstr "שידרגתי את החשבון שלי אבל כשאני מנסה לבצע סנכרון לרישיון החבילה נשארת %s" +#: includes/i18n.php:381 +msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s." +msgstr "שידרגתי את החשבון שלי אבל כשאני מנסה לבצע סנכרון לרישיון החבילה נשארת %s." -#: includes/i18n.php:847 +#: includes/i18n.php:384 msgid "From unknown reason, the API connectivity test failed." msgstr "יש בעיית תקשורת ל-API מסיבה בלתי ברורה." -#: includes/i18n.php:851 -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?" +#: includes/i18n.php:385 +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?" msgstr "ככל הנראה זאת בעיה זמנית בצד שלנו. ברשותך, ורק כדי להיות בטוחים שזאת הבעיה, האם זה יהיה בסדר לבצע בדיקת תקשורת נוספת?" -#: includes/i18n.php:855 -msgid "" -"We use PHP cURL library for the API calls, which is a very common library " -"and usually installed out of the box. Unfortunately, cURL is not installed " -"on your server." -msgstr "" +#: includes/i18n.php:386 +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." +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." -#: includes/i18n.php:859 -msgid "" -"From unknown reason, CloudFlare, the firewall we use, blocks the connection." +#: includes/i18n.php:387 +msgid "Disabled method(s):" +msgstr "Disabled method(s):" + +#: includes/i18n.php:388 +msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection." msgstr "מסיבה בלתי ברורה, CloudFlare, חומת האש שאנחנו משתמשים בה, חוסמת את התקשורת." -#: includes/i18n.php:863 +#: includes/i18n.php:389 msgctxt "as pluginX requires an access to our API" msgid "%s requires an access to our API." msgstr "%s מחייב גישה ל-API שלנו." -#: includes/i18n.php:867 -msgid "" -"It looks like your server is using Squid ACL (access control lists), which " -"blocks the connection." -msgstr "" +#: includes/i18n.php:391 +msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection." +msgstr "It looks like your server is using Squid ACL (access control lists), which blocks the connection." -#: includes/i18n.php:871 +#: includes/i18n.php:392 msgid "I don't know what is Squid or ACL, help me!" msgstr "אין לי מושג מה זה Squid או ACL - אשמח לעזרה!" -#: includes/i18n.php873, includes/i18n.php:887 -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." -msgstr "" +#: includes/i18n.php393, includes/i18n.php:397 +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." +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." -#: includes/i18n.php:877 +#: includes/i18n.php:394 msgid "I'm a system administrator" -msgstr "" +msgstr "אני מנהל מערכת" -#: includes/i18n.php:879 -msgid "" -"Great, please whitelist the following domains: %s. Once you done, deactivate" -" the plugin and activate it again." -msgstr "" +#: includes/i18n.php:395 +msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again." +msgstr "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again." -#: includes/i18n.php:883 +#: includes/i18n.php:396 msgid "I don't know what is cURL or how to install it, help me!" msgstr "אין לי מושג מה זה cURL או איך להתקין אותו - אשמח לעזרה!" -#: includes/i18n.php:891 -msgid "" -"Great, please install cURL and enable it in your php.ini file. To make sure " -"it was successfully activated, use 'phpinfo()'. Once activated, deactivate " -"the plugin and reactivate it back again." -msgstr "" +#: includes/i18n.php:398 +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 plugin and reactivate it back again." +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 plugin and reactivate it back again." -#: includes/i18n.php:895 -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." +#: includes/i18n.php:399 +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." msgstr "זו בטח בעיה בצד שלנו ואנחנו נשמח לעזור כדי לפתור את העניין בהקדם האפשר, רק במידה ותאפשר\\י זאת." -#: includes/i18n.php:899 -msgid "" -"Sorry for the inconvenience and we are here to help if you give us a chance." +#: includes/i18n.php:400 +msgid "Sorry for the inconvenience and we are here to help if you give us a chance." msgstr "מצטערים על חוסר הנעימות, אנחנו כאן כדי לעזור אם תאפשר\\י זאת." -#: includes/i18n.php:903 +#: includes/i18n.php:401 msgid "Yes - I'm giving you a chance to fix it" msgstr "כן - אני נותן לך צ'אנס לתקן את זה" -#: includes/i18n.php:905 -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." -msgstr "" +#: includes/i18n.php:402 +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." +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." -#: includes/i18n.php:909 +#: includes/i18n.php:403 msgid "Let's try your previous version" msgstr "בוא ננסה את הגירסה הקודמת" -#: includes/i18n.php:911 +#: includes/i18n.php:404 msgid "Uninstall this version and install the previous one." msgstr "הסר את הגרסה הנוכחית והתקן את הגרסה קודמת." -#: includes/i18n.php:915 +#: includes/i18n.php:405 msgid "That's exhausting, please deactivate" msgstr "זה מתיש, אנא לכבות" -#: includes/i18n.php:917 -msgid "" -"We feel your frustration and sincerely apologize for the inconvenience. Hope" -" to see you again in the future." -msgstr "" +#: includes/i18n.php:406 +msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future." +msgstr "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future." -#: includes/i18n.php:921 -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." -msgstr "" +#: includes/i18n.php:407 +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." +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." -#: includes/i18n.php:925 +#: includes/i18n.php:408 msgctxt "%1s - plugin title, %2s - API domain" -msgid "" -"Your server is blocking the access to Freemius' API, which is crucial for " -"%1s synchronization. Please contact your host to whitelist %2s" -msgstr "" +msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" +msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" -#: includes/i18n.php:929 -msgid "" -"It seems like one of the authentication parameters is wrong. Update your " -"Public Key, Secret Key & User ID, and try again." -msgstr "" +#: includes/i18n.php:410 +msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." +msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." -#: includes/i18n.php:937 -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." -msgstr "" +#: includes/i18n.php:413 +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." +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." -#: includes/i18n.php:941 -msgid "" -"Thanks for confirming the ownership change. An email was just sent to %s for" -" final approval." +#: includes/i18n.php:414 +msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval." msgstr "תודה על אישור ביצוע החלפת הבעלות. הרגע נשלח מייל ל-%s כדי לקבל אישור סופי." -#: includes/i18n.php:945 +#: includes/i18n.php:415 msgid "%s is the new owner of the account." msgstr "%s הינו הבעלים החד של חשבון זה." -#: includes/i18n.php:949 +#: includes/i18n.php:417 msgctxt "addonX cannot run without pluginY" msgid "%s cannot run without %s." msgstr "%s לא יכול לעבוד ללא %s." -#: includes/i18n.php:953 +#: includes/i18n.php:419 msgctxt "addonX cannot run..." msgid "%s cannot run without the plugin." -msgstr "" +msgstr "ההרחבה %s אינה יכולה לפעול ללא התוסף." -#: includes/i18n.php:957 +#: includes/i18n.php:420 msgctxt "pluginX activation was successfully..." msgid "%s activation was successfully completed." -msgstr "" +msgstr "הפעלת %s הושלמה בהצלחה." -#: includes/i18n.php:961 +#: includes/i18n.php:422 msgctxt "Plugin installer section title" msgid "Features & Pricing" msgstr "פיטצ'רים ומחירים" -#: includes/i18n.php:965 +#: includes/i18n.php:423 msgid "Add-on must be deployed to WordPress.org or Freemius." -msgstr "" +msgstr "Add-on must be deployed to WordPress.org or Freemius." -#: includes/i18n.php:969 +#: includes/i18n.php:424 msgid "Paid add-on must be deployed to Freemius." -msgstr "" +msgstr "Paid add-on must be deployed to Freemius." -#: includes/i18n.php:977 -msgid "" -"%s is a premium only add-on. You have to purchase a license first before " -"activating the plugin." -msgstr "" +#: includes/i18n.php:428 +msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin." +msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin." -#: includes/i18n.php:981 -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." -msgstr "" +#: includes/i18n.php:429 +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." +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." -#: includes/i18n.php:993 +#: includes/i18n.php:434 msgctxt "as every month" msgid "Monthly" msgstr "חודשי" -#: includes/i18n.php:995 +#: includes/i18n.php:435 msgctxt "as monthly period" msgid "mo" -msgstr "" +msgstr "חודשים" -#: includes/i18n.php:997 +#: includes/i18n.php:436 msgctxt "as once a year" msgid "Annual" msgstr "שנתי" -#: includes/i18n.php:999 +#: includes/i18n.php:437 msgctxt "as once a year" msgid "Annually" msgstr "שנתי" -#: includes/i18n.php:1001 +#: includes/i18n.php:438 msgctxt "as once a year" msgid "Once" msgstr "פעם אחת" -#: includes/i18n.php:1003 +#: includes/i18n.php:439 msgctxt "as annual period" msgid "year" msgstr "שנה" -#: includes/i18n.php:1005 +#: includes/i18n.php:440 msgid "Lifetime" msgstr "לכל החיים" -#: includes/i18n.php:1007 +#: includes/i18n.php:441 msgctxt "e.g. the best product" msgid "Best" msgstr "הכי טוב" -#: includes/i18n.php:1009 +#: includes/i18n.php:442 msgctxt "e.g. billed monthly" msgid "Billed %s" msgstr "מחוייב על בסיס %s" -#: includes/i18n.php:1011 +#: includes/i18n.php:443 msgctxt "as a discount of $5 or 10%" msgid "Save %s" msgstr "שמירת %s" -#: includes/i18n.php:1015 +#: includes/i18n.php:445 msgid "View details" msgstr "פרטים נוספים" -#: includes/i18n.php:1023 +#: includes/i18n.php:449 msgctxt "button label" msgid "Approve & Start Trial" -msgstr "" +msgstr "אשר והתחל תקופת ניסיון" -#: includes/i18n.php:1027 -msgid "" -"You are 1-click away from starting your %1$s-day free trial of the %2$s " -"plan." -msgstr "" +#: includes/i18n.php:451 +msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." +msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." -#: includes/i18n.php:1031 -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 plugin to periodically send data to %s to check for version " -"updates and to validate your trial." -msgstr "" +#: includes/i18n.php:453 +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 plugin to periodically send data to %s to check for version updates and to validate your trial." +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 plugin to periodically send data to %s to check for version updates and to validate your trial." -#: includes/i18n.php:1043 +#: includes/i18n.php:459 msgid "Business name" -msgstr "" +msgstr "שם עסק" -#: includes/i18n.php:1045 +#: includes/i18n.php:460 msgid "Tax / VAT ID" -msgstr "" +msgstr "Tax / VAT ID" -#: includes/i18n.php:1047 +#: includes/i18n.php:461 msgid "Address Line %d" -msgstr "" +msgstr "כתובת %s" -#: includes/i18n.php:1049 +#: includes/i18n.php:462 msgid "Country" -msgstr "" +msgstr "מדינה" -#: includes/i18n.php:1051 +#: includes/i18n.php:463 msgid "Select Country" -msgstr "" +msgstr "בחר מדינה" -#: includes/i18n.php:1053 +#: includes/i18n.php:464 msgid "City" -msgstr "" +msgstr "עיר" -#: includes/i18n.php:1055 +#: includes/i18n.php:465 msgid "Town" -msgstr "" +msgstr "כפר" -#: includes/i18n.php:1057 +#: includes/i18n.php:466 msgid "State" -msgstr "" +msgstr "מחוז/מדינה" -#: includes/i18n.php:1059 +#: includes/i18n.php:467 msgid "Province" -msgstr "" +msgstr "פרובינציה" -#: includes/i18n.php:1061 +#: includes/i18n.php:468 msgid "ZIP / Postal Code" -msgstr "" +msgstr "מיקוד / תא דואר" + +#: includes/i18n.php:473 +msgid "Installing plugin: %s" +msgstr "Installing plugin: %s" + +#: includes/i18n.php:474 +msgid "Automatic Installation" +msgstr "Automatic Installation" + +#: includes/i18n.php:476 +msgid "%s sec" +msgstr "%s sec" + +#: includes/i18n.php:477 +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." +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." + +#: includes/i18n.php:478 +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." +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." + +#: includes/i18n.php:479 +msgid "Cancel Installation" +msgstr "Cancel Installation" + +#: includes/i18n.php:480 +msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work." +msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work." + +#: includes/i18n.php:481 +msgid "Invalid module ID." +msgstr "Invalid module ID." + +#: includes/i18n.php:482 +msgid "Auto installation only works for opted-in users." +msgstr "Auto installation only works for opted-in users." + +#: includes/i18n.php:483 +msgid "Premium version already active." +msgstr "Premium version already active." + +#: includes/i18n.php:484 +msgid "Premium add-on version already installed." +msgstr "Premium add-on version already installed." + +#: includes/i18n.php:485 +msgid "You do not have a valid license to access the premium version." +msgstr "You do not have a valid license to access the premium version." + +#: includes/i18n.php:486 +msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version." +msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version." + +#: includes/i18n.php:501 +msgctxt "Plugin installer section title" +msgid "Description" +msgstr "תיאור" + +#: includes/i18n.php:502 +msgctxt "Plugin installer section title" +msgid "Installation" +msgstr "התקנה" + +#: includes/i18n.php:503 +msgctxt "Plugin installer section title" +msgid "FAQ" +msgstr "שאלות נפוצות" + +#: includes/i18n.php:504 +msgctxt "Plugin installer section title" +msgid "Changelog" +msgstr "לוג שינויים" + +#: includes/i18n.php:505 +msgctxt "Plugin installer section title" +msgid "Reviews" +msgstr "ביקורות" + +#: includes/i18n.php:506 +msgctxt "Plugin installer section title" +msgid "Other Notes" +msgstr "היערות נוספות" + +#: includes/i18n.php:508 +msgid "%s star" +msgstr "כוכב %s" + +#: includes/i18n.php:510 +msgid "%s stars" +msgstr "%s כוכבים" + +#: includes/i18n.php:512 +msgid "%s rating" +msgstr "דרוג %s" + +#: includes/i18n.php:514 +msgid "%s ratings" +msgstr "%s דרוגים" + +#: includes/i18n.php:516 +msgid "%s time" +msgstr "פעם %s" + +#: includes/i18n.php:518 +msgid "%s times" +msgstr "%s פעמים" + +#: includes/i18n.php:520 +msgid "Click to see reviews that provided a rating of %s" +msgstr "Click to see reviews that provided a rating of %s" + +#: includes/i18n.php:521 +msgid "Last Updated" +msgstr "עודכן לאחרונה" + +#: includes/i18n.php:522 +msgid "Requires WordPress Version:" +msgstr "Requires WordPress Version:" + +#: includes/i18n.php:523 +msgctxt "as the plugin author" +msgid "Author:" +msgstr "מחבר:" + +#: includes/i18n.php:524 +msgid "Compatible up to:" +msgstr "Compatible up to:" + +#: includes/i18n.php:525 +msgid "Downloaded:" +msgstr "הורדות:" + +#: includes/i18n.php:526 +msgid "WordPress.org Plugin Page" +msgstr "WordPress.org Plugin Page" + +#: includes/i18n.php:527 +msgid "Plugin Homepage" +msgstr "Plugin Homepage" + +#: includes/i18n.php:528 +msgid "Donate to this plugin" +msgstr "Donate to this plugin" + +#: includes/i18n.php:529 +msgid "Average Rating" +msgstr "דירוג ממוצע" + +#: includes/i18n.php:530 +msgid "based on %s" +msgstr "מבוסס על %s" + +#: includes/i18n.php:531 +msgid "Warning:" +msgstr "אזהרה:" + +#: includes/i18n.php:532 +msgid "Contributors" +msgstr "תורמים" + +#: includes/i18n.php:533 +msgid "Plugin Install" +msgstr "התקנת תוסף" + +#: includes/i18n.php:534 +msgid "This plugin has not been tested with your current version of WordPress." +msgstr "This plugin has not been tested with your current version of WordPress." + +#: includes/i18n.php:535 +msgid "This plugin has not been marked as compatible with your version of WordPress." +msgstr "This plugin has not been marked as compatible with your version of WordPress." + +#: includes/i18n.php:536 +msgid "Newer Version (%s) Installed" +msgstr "גרסה חדשה (%s) הותקנה" + +#: includes/i18n.php:537 +msgid "Latest Version Installed" +msgstr "הגרסה האחרונה הותקנה" diff --git a/languages/freemius-it_IT.mo b/languages/freemius-it_IT.mo index af5315d6c..2e9abaf92 100644 Binary files a/languages/freemius-it_IT.mo and b/languages/freemius-it_IT.mo differ diff --git a/languages/freemius-it_IT.po b/languages/freemius-it_IT.po index 2c486c5e8..079374b08 100644 --- a/languages/freemius-it_IT.po +++ b/languages/freemius-it_IT.po @@ -10,1862 +10,1784 @@ msgstr "" "Project-Id-Version: WordPress SDK\n" "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2017-03-09 20:58+0000\n" -"Last-Translator: Pelly Benassi \n" +"PO-Revision-Date: 2017-05-12 17:32+0000\n" +"Last-Translator: Vova Feldman \n" +"Language: it_IT\n" "Language-Team: Italian (Italy) (http://www.transifex.com/freemius/wordpress-sdk/language/it_IT/)\n" -"MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: it_IT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" "X-Poedit-Basepath: ..\n" "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" "X-Poedit-SearchPath-0: .\n" "X-Poedit-SearchPathExcluded-0: *.js\n" "X-Poedit-SourceCharset: UTF-8\n" -#: includes/i18n.php:35 +#: includes/i18n.php:37 msgid "Account" msgstr "Account" -#: includes/i18n.php:36 +#: includes/i18n.php:38 msgid "Add On" msgstr "Add-on" -#: includes/i18n.php:37 +#: includes/i18n.php:39 msgid "Contact Us" msgstr "Contattaci" -#: includes/i18n.php:38 +#: includes/i18n.php:40 msgid "Contact Support" msgstr "Contatta il supporto" -#: includes/i18n.php:39 +#: includes/i18n.php:41 msgid "Change Ownership" msgstr "Cambia Proprietario" -#: includes/i18n.php:40 +#: includes/i18n.php:42 msgid "Support" msgstr "Supporto" -#: includes/i18n.php:41 +#: includes/i18n.php:43 msgid "Support Forum" msgstr "Forum di supporto" -#: includes/i18n.php:42 +#: includes/i18n.php:44 msgid "Add Ons" msgstr "Add-on" -#: includes/i18n.php:43 +#: includes/i18n.php:45 msgctxt "verb" msgid "Upgrade" msgstr "Aggiornamento" -#: includes/i18n.php:44 +#: includes/i18n.php:46 msgid "Awesome" msgstr "Fantastico" -#: includes/i18n.php:45 +#: includes/i18n.php:47 msgctxt "noun" msgid "Pricing" msgstr "Prezzi" -#: includes/i18n.php:46 +#: includes/i18n.php:48 msgctxt "noun" msgid "Price" msgstr "Prezzo" -#: includes/i18n.php:47 +#: includes/i18n.php:49 msgid "Unlimited Updates" msgstr "Aggiornamenti Illimitati" -#: includes/i18n.php:48 +#: includes/i18n.php:50 msgctxt "verb" msgid "Downgrade" msgstr "Downgrade" -#: includes/i18n.php:49 +#: includes/i18n.php:51 +msgctxt "verb" +msgid "Cancel Subscription" +msgstr "Cancel Subscription" + +#: includes/i18n.php:52 msgid "Cancel Trial" msgstr "Annulla prova gratuita" -#: includes/i18n.php:50 +#: includes/i18n.php:53 msgid "Free Trial" msgstr "Prova gratuita" -#: includes/i18n.php:51 +#: includes/i18n.php:54 msgid "Start my free %s" msgstr "Inizia la mia %s" -#: includes/i18n.php:52 +#: includes/i18n.php:55 msgid "No commitment for %s - cancel anytime" msgstr "Nessun impegno con %s - cancella quando vuoi" -#: includes/i18n.php:53 +#: includes/i18n.php:56 msgid "After your free %s, pay as little as %s" msgstr "Dopo il tuo %s gratuito, paghi solamente %s" -#: includes/i18n.php:54 +#: includes/i18n.php:57 msgid "Details" msgstr "Dettagli" -#: includes/i18n.php:55 +#: includes/i18n.php:58 msgid "Account Details" msgstr "Dettagli dell'account" -#: includes/i18n.php:56 +#: includes/i18n.php:59 msgctxt "verb" msgid "Delete" msgstr "Elimina" -#: includes/i18n.php:57 +#: includes/i18n.php:60 msgctxt "verb" msgid "Show" msgstr "Mostra" -#: includes/i18n.php:58 +#: includes/i18n.php:61 msgctxt "verb" msgid "Hide" msgstr "Nascondi" -#: includes/i18n.php:59 +#: includes/i18n.php:62 msgctxt "verb" msgid "Edit" msgstr "Modifica" -#: includes/i18n.php:60 +#: includes/i18n.php:63 msgctxt "verb" msgid "Update" msgstr "Aggiorna" -#: includes/i18n.php:61 +#: includes/i18n.php:64 msgid "Date" msgstr "Data" -#: includes/i18n.php:62 +#: includes/i18n.php:65 msgid "Amount" msgstr "Importo" -#: includes/i18n.php:63 +#: includes/i18n.php:66 msgid "Invoice" msgstr "Fattura" -#: includes/i18n.php:64 +#: includes/i18n.php:67 msgid "Billing" msgstr "Fatturazione" -#: includes/i18n.php:65 +#: includes/i18n.php:68 msgid "Payments" msgstr "Pagamenti" -#: includes/i18n.php:66 +#: includes/i18n.php:69 msgid "Delete Account" msgstr "Elimina Account" -#: includes/i18n.php:67 +#: includes/i18n.php:70 msgctxt "as close a window" msgid "Dismiss" msgstr "Chiudi" -#: includes/i18n.php:68 +#: includes/i18n.php:71 msgctxt "as product pricing plan" msgid "Plan" msgstr "Piano" -#: includes/i18n.php:69 +#: includes/i18n.php:72 msgid "Change Plan" msgstr "Cambia piano" -#: includes/i18n.php:70 +#: includes/i18n.php:73 msgctxt "as download professional version" msgid "Download %s Version" msgstr "Scarica la versione %s" -#: includes/i18n.php:71 +#: includes/i18n.php:74 msgctxt "as download professional version now" msgid "Download %s version now" msgstr "Scarica la versione %s ora" -#: includes/i18n.php:72 +#: includes/i18n.php:75 msgctxt "as download latest version" msgid "Download Latest" msgstr "Scarica l'ultima versione" -#: includes/i18n.php:73 +#: includes/i18n.php:76 msgctxt "E.g. you have a professional license." msgid "You have a %s license." msgstr "Hai la licenza %s." -#: includes/i18n.php:74 +#: includes/i18n.php:77 msgid "New" msgstr "Nuovo" -#: includes/i18n.php:75 +#: includes/i18n.php:78 msgid "Free" msgstr "Gratuito" -#: includes/i18n.php:76 +#: includes/i18n.php:79 msgctxt "as trial plan" msgid "Trial" msgstr "Prova gratuita" -#: includes/i18n.php:77 +#: includes/i18n.php:80 msgctxt "as starting a trial plan" msgid "Start Trial" msgstr "Inizia il periodo di prova gratuito" -#: includes/i18n.php:78 +#: includes/i18n.php:81 msgctxt "verb" msgid "Purchase" msgstr "Acquisto" -#: includes/i18n.php:79 +#: includes/i18n.php:82 msgid "Purchase License" msgstr "Acquista licenza" -#: includes/i18n.php:80 +#: includes/i18n.php:83 msgctxt "verb" msgid "Buy" msgstr "Compra" -#: includes/i18n.php:81 +#: includes/i18n.php:84 msgid "Buy License" msgstr "Compra licenza" -#: includes/i18n.php:82 +#: includes/i18n.php:85 msgid "Single Site License" msgstr "Licenza per sito singolo" -#: includes/i18n.php:83 +#: includes/i18n.php:86 msgid "Unlimited Licenses" msgstr "Licenze illimitate" -#: includes/i18n.php:84 +#: includes/i18n.php:87 msgid "Up to %s Sites" msgstr "Fino a %s siti" -#: includes/i18n.php:85 +#: includes/i18n.php:88 msgid "%sRenew your license now%s to access version %s features and support." msgstr "%sRinnova la tua licenza ora%s per accedere a funzionalità e supporto della versione %s." -#: includes/i18n.php:86 -msgid "" -"Enter the email address you've used for the upgrade below and we will resend" -" you the license key." +#: includes/i18n.php:89 +msgid "Enter the email address you've used for the upgrade below and we will resend you the license key." msgstr "Inserisci qui sotto l'indirizzo email che hai usato per registrare l'aggiornamento e ti invieremo di nuovo la chiave di licenza." -#: includes/i18n.php:87 +#: includes/i18n.php:90 msgctxt "e.g. Professional Plan" msgid "%s Plan" msgstr "Piano %s" -#: includes/i18n.php:88 +#: includes/i18n.php:91 msgid "You are just one step away - %s" msgstr "Sei a un passo dalla fine - %s" -#: includes/i18n.php:89 +#: includes/i18n.php:92 msgctxt "%s - plugin name. As complete \"Jetpack\" activation now" msgid "Complete \"%s\" Activation Now" msgstr "Completa l'attivazione di \"%s\" ora" -#: includes/i18n.php:91 +#: includes/i18n.php:94 msgid "We made a few tweaks to the plugin, %s" msgstr "Abbiamo apportato alcune modifiche al plugin, %s" -#: includes/i18n.php:92 +#: includes/i18n.php:95 msgid "Opt-in to make \"%s\" Better!" msgstr "Contribuisci a rendere \"%s\" migliore!" -#: includes/i18n.php:93 +#: includes/i18n.php:96 msgid "Error" msgstr "Errore" -#: includes/i18n.php:94 -msgid "" -"Freemius SDK couldn't find the plugin's main file. Please contact " -"sdk@freemius.com with the current error." +#: includes/i18n.php:97 +msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." msgstr "L'SDK di Freemius non è riuscito a trovare il file principale del plugin. Per favore contatta sdk@freemius.com riportando l'errore." -#: includes/i18n.php:97 +#: includes/i18n.php:100 msgctxt "as expiration date" msgid "Expiration" msgstr "Scadenza" -#: includes/i18n.php:98 +#: includes/i18n.php:101 msgctxt "as software license" msgid "License" msgstr "Licenza" -#: includes/i18n.php:99 +#: includes/i18n.php:102 msgid "not verified" msgstr "non verificato" -#: includes/i18n.php:100 +#: includes/i18n.php:103 msgid "Verify Email" msgstr "Verifica email" -#: includes/i18n.php:101 +#: includes/i18n.php:104 msgctxt "e.g. expires in 2 months" msgid "Expires in %s" msgstr "Scade in %s" -#: includes/i18n.php:102 +#: includes/i18n.php:105 msgctxt "e.g. auto renews in 2 months" msgid "Auto renews in %s" msgstr "Rinnovo automatico in %s" -#: includes/i18n.php:103 +#: includes/i18n.php:106 msgid "No expiration" msgstr "Nessuna scadenza" -#: includes/i18n.php:104 +#: includes/i18n.php:107 msgid "Expired" msgstr "Scaduto" -#: includes/i18n.php:105 +#: includes/i18n.php:108 msgid "Cancelled" msgstr "Annullato" -#: includes/i18n.php:106 +#: includes/i18n.php:109 msgctxt "e.g. In 2 hours" msgid "In %s" msgstr "In %s" -#: includes/i18n.php:107 +#: includes/i18n.php:110 msgctxt "e.g. 2 min ago" msgid "%s ago" msgstr "%s fa" -#: includes/i18n.php:109 +#: includes/i18n.php:112 msgid "%s or higher" msgstr "%s o superiore" -#: includes/i18n.php:110 +#: includes/i18n.php:113 msgctxt "as plugin version" msgid "Version" msgstr "Versione" -#: includes/i18n.php:111 +#: includes/i18n.php:114 msgid "Name" msgstr "Nome" -#: includes/i18n.php:112 +#: includes/i18n.php:115 msgid "Email" msgstr "Email" -#: includes/i18n.php:113 +#: includes/i18n.php:116 msgid "Email address" msgstr "Indirizzo email" -#: includes/i18n.php:114 +#: includes/i18n.php:117 msgid "Verified" msgstr "Verificato" -#: includes/i18n.php:115 +#: includes/i18n.php:118 msgid "Module" msgstr "Modulo" -#: includes/i18n.php:116 +#: includes/i18n.php:119 msgid "Module Type" msgstr "Tipo di modulo" -#: includes/i18n.php:117 +#: includes/i18n.php:120 msgid "Plugin" msgstr "Plugin" -#: includes/i18n.php:118 +#: includes/i18n.php:121 msgid "Plugins" msgstr "Plugin" -#: includes/i18n.php:119 +#: includes/i18n.php:122 msgid "Theme" msgstr "Tema" -#: includes/i18n.php:120 +#: includes/i18n.php:123 msgid "Themes" msgstr "Temi" -#: includes/i18n.php:121 +#: includes/i18n.php:124 msgctxt "as file/folder path" msgid "Path" msgstr "Percorso" -#: includes/i18n.php:122 +#: includes/i18n.php:125 msgid "Title" msgstr "Titolo" -#: includes/i18n.php:123 +#: includes/i18n.php:126 msgid "Free version" msgstr "Versione gratuita" -#: includes/i18n.php:124 +#: includes/i18n.php:127 msgid "Premium version" msgstr "Versione premium" -#: includes/i18n.php:125 +#: includes/i18n.php:128 msgctxt "as WP plugin slug" msgid "Slug" msgstr "Slug" -#: includes/i18n.php:126 +#: includes/i18n.php:129 msgid "ID" msgstr "ID" -#: includes/i18n.php:127 +#: includes/i18n.php:130 msgid "Users" msgstr "Utenti" -#: includes/i18n.php:128 +#: includes/i18n.php:131 msgid "Plugin Installs" msgstr "Installazioni Plugin" -#: includes/i18n.php:129 +#: includes/i18n.php:132 msgid "%s Installs" msgstr "%s Installazioni" -#: includes/i18n.php:130 +#: includes/i18n.php:133 msgctxt "like websites" msgid "Sites" msgstr "Siti" -#: includes/i18n.php:131 +#: includes/i18n.php:134 msgid "User ID" msgstr "ID utente" -#: includes/i18n.php:132 +#: includes/i18n.php:135 msgid "Site ID" msgstr "ID del sito" -#: includes/i18n.php:133 +#: includes/i18n.php:136 msgid "Public Key" msgstr "Chiave pubblica" -#: includes/i18n.php:134 +#: includes/i18n.php:137 msgid "Secret Key" msgstr "Chiave segreta" -#: includes/i18n.php:135 +#: includes/i18n.php:138 msgctxt "as secret encryption key missing" msgid "No Secret" msgstr "Nessuna chiave" -#: includes/i18n.php:136 +#: includes/i18n.php:139 msgid "No ID" msgstr "Nessun ID" -#: includes/i18n.php:137 +#: includes/i18n.php:140 msgctxt "as synchronize license" msgid "Sync License" msgstr "Sincronizza la licenza" -#: includes/i18n.php:138 +#: includes/i18n.php:141 msgctxt "as synchronize" msgid "Sync" msgstr "Sincronizza" -#: includes/i18n.php:139 +#: includes/i18n.php:142 msgid "Activate License" msgstr "Attiva licenza" -#: includes/i18n.php:140 +#: includes/i18n.php:143 msgid "Activate Free Version" msgstr "Attiva versione gratuita" -#: includes/i18n.php:141 -msgid "" -"Please enter the license key that you received in the email right after the " -"purchase:" +#: includes/i18n.php:144 +msgid "Please enter the license key that you received in the email right after the purchase:" msgstr "Per favore inserisci la chiave di licenza che hai ricevuto via mail subito dopo l'acquisto:" -#: includes/i18n.php:142 +#: includes/i18n.php:145 msgid "Activating license..." msgstr "Sto attivando la licenza..." -#: includes/i18n.php:143 +#: includes/i18n.php:146 msgid "Change License" msgstr "Cambia licenza" -#: includes/i18n.php:144 +#: includes/i18n.php:147 msgid "Update License" msgstr "Aggiorna licenza" -#: includes/i18n.php:145 +#: includes/i18n.php:148 msgid "Deactivate License" msgstr "Disattiva licenza" -#: includes/i18n.php:146 +#: includes/i18n.php:149 msgid "Activate" msgstr "Attiva" -#: includes/i18n.php:147 +#: includes/i18n.php:150 msgid "Deactivate" msgstr "Disattiva" -#: includes/i18n.php:148 +#: includes/i18n.php:151 msgid "Skip & Deactivate" msgstr "Salta e disattiva" -#: includes/i18n.php:149 +#: includes/i18n.php:152 msgid "Skip & %s" msgstr "Salta & %s" -#: includes/i18n.php:150 +#: includes/i18n.php:153 msgid "No - just deactivate" msgstr "No - disattiva e basta" -#: includes/i18n.php:151 +#: includes/i18n.php:154 msgid "Yes - do your thing" msgstr "Sì - fai pure" -#: includes/i18n.php:152 +#: includes/i18n.php:155 msgctxt "active mode" msgid "Active" msgstr "Attiva" -#: includes/i18n.php:153 +#: includes/i18n.php:156 msgctxt "is active mode?" msgid "Is Active" msgstr "è attiva" -#: includes/i18n.php:154 +#: includes/i18n.php:157 msgid "Install Now" msgstr "Installa ora" -#: includes/i18n.php:155 +#: includes/i18n.php:158 msgid "Install Update Now" msgstr "Installa l'aggiornamento ora" -#: includes/i18n.php:156 +#: includes/i18n.php:159 msgid "More information about %s" msgstr "Ulteriori informazioni su %s" -#: includes/i18n.php:157 +#: includes/i18n.php:160 msgid "Localhost" msgstr "Localhost" -#: includes/i18n.php:158 +#: includes/i18n.php:161 msgctxt "as activate Professional plan" msgid "Activate %s Plan" msgstr "Attivare il piano %s" -#: includes/i18n.php:159 +#: includes/i18n.php:162 msgctxt "as 5 licenses left" msgid "%s left" msgstr "%s rimanenti" -#: includes/i18n.php:160 +#: includes/i18n.php:163 msgid "Last license" msgstr "Ultima licenza" -#: includes/i18n.php:161 +#: includes/i18n.php:164 msgid "What is your %s?" msgstr "Qual è il tuo %s?" -#: includes/i18n.php:162 +#: includes/i18n.php:165 msgid "Activate this add-on" msgstr "Attivare questo addon" -#: includes/i18n.php:163 -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?" +#: includes/i18n.php:166 +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?" msgstr "La disattivazione della licenza bloccherà tutte le funzionalità premium, ma vi permetterà di attivare la licenza su un altro sito. Sei sicuro di voler procedere?" -#: includes/i18n.php:164 -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?" +#: includes/i18n.php:167 +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?" msgstr "L'eliminazione dell'account disattiva automaticamente la tua licenza del piano %s quindi è possibile utilizzarlo su altri siti. Se si desidera anche terminare i pagamenti ricorrenti, fare clic sul pulsante \"Annulla\" ed effettuare il \"Downgrade\" del tuo account. Sei sicuro di voler continuare con l'eliminazione?" -#: includes/i18n.php:165 -msgid "" -"Deletion is not temporary. Only delete if you no longer want to use this " -"plugin anymore. Are you sure you would like to continue with the deletion?" +#: includes/i18n.php:168 +msgid "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?" msgstr "L'eliminazione non è temporanea. Cancella solo se non si desidera più utilizzare questo plugin. Sei sicuro di voler continuare con l'eliminazione?" -#: includes/i18n.php:166 -msgid "" -"Downgrading your plan will immediately stop all future recurring payments " -"and your %s plan license will expire in %s." +#: includes/i18n.php:169 +msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." msgstr "Effettuare il downgrade del piano interromperà immediatamente tutti i futuri pagamenti ricorrenti e la licenza del piano %s scadrà in %s." -#: includes/i18n.php:167 -msgid "" -"Cancelling the trial will immediately block access to all premium features. " -"Are you sure?" +#: includes/i18n.php:170 +msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?" msgstr "Cancellando il periodo di prova gratuito bloccherai immediatamente l'accesso a tutte le funzionalità premium. Vuoi continuare?" -#: includes/i18n.php:168 -msgid "" -"You can still enjoy all %s features but you will not have access to plugin " -"updates and support." +#: includes/i18n.php:171 +msgid "You can still enjoy all %s features but you will not have access to plugin updates and support." msgstr "Puoi ancora sfruttare tutte le funzionalità di %s, ma non avrai accesso al supporto ed agli aggiornamenti del plugin." -#: includes/i18n.php:169 -msgid "" -"Once your license expires you can still use the Free version but you will " -"NOT have access to the %s features." +#: includes/i18n.php:172 +msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features." msgstr "Quando la tua licenza scadrà, potrai comunque continuare a usare la versione gratuita, ma NON avrai accesso alle funzionalità %s." -#: includes/i18n.php:170 +#: includes/i18n.php:173 msgid "Are you sure you want to proceed?" msgstr "Sei sicuro di voler procedere?" -#: includes/i18n.php:173 +#: includes/i18n.php:176 msgid "Add Ons for %s" msgstr "Add-on per %s" -#: includes/i18n.php:174 -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." +#: includes/i18n.php:177 +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." msgstr "Non siamo riusciti a caricare la lista degli add-on. Si tratta probabilmente di un problema nel nostro sistema, per favore riprova tra qualche minuto." -#: includes/i18n.php:176 +#: includes/i18n.php:179 msgid "Anonymous feedback" msgstr "Feedback anonimo" -#: includes/i18n.php:177 +#: includes/i18n.php:180 msgid "Quick feedback" msgstr "Feedback veloce" -#: includes/i18n.php:178 +#: includes/i18n.php:181 msgid "If you have a moment, please let us know why you are deactivating" msgstr "Se hai un momento, potresti dirci perché lo hai disattivato?" -#: includes/i18n.php:179 +#: includes/i18n.php:182 msgid "Yes - Deactivate" msgstr "Si - Disattiva" -#: includes/i18n.php:180 +#: includes/i18n.php:183 msgid "Submit & Deactivate" msgstr "Invia & Disattiva" -#: includes/i18n.php:181 +#: includes/i18n.php:184 msgid "Cancel" msgstr "Annulla" -#: includes/i18n.php:182 +#: includes/i18n.php:185 msgid "I no longer need the plugin" msgstr "Non ho piú bisogno di questo plugin" -#: includes/i18n.php:183 +#: includes/i18n.php:186 msgid "I found a better plugin" msgstr "Ho trovato un plugin migliore" -#: includes/i18n.php:184 +#: includes/i18n.php:187 msgid "I only needed the plugin for a short period" msgstr "Avevo bisogno del plugin solo per un breve periodo" -#: includes/i18n.php:185 +#: includes/i18n.php:188 msgid "The plugin broke my site" msgstr "Il plugin ha causato problemi al mio sito" -#: includes/i18n.php:186 +#: includes/i18n.php:189 msgid "The plugin suddenly stopped working" msgstr "Il plugin ha smesso di funzionare" -#: includes/i18n.php:187 +#: includes/i18n.php:190 msgid "I can't pay for it anymore" msgstr "Non posso piú pagarlo" -#: includes/i18n.php:188 +#: includes/i18n.php:191 msgid "It's a temporary deactivation. I'm just debugging an issue." msgstr "È una disattivazione temporanea. Sto solo cercando di risolvere un problema." -#: includes/i18n.php:189 +#: includes/i18n.php:192 msgctxt "" -"the text of the \"other\" reason for deactivating the plugin that is shown " -"in the modal box." msgid "Other" msgstr "Altro" -#: includes/i18n.php:191 +#: includes/i18n.php:194 msgid "Kindly tell us the reason so we can improve." msgstr "Spiegandoci il motivo ci aiuterai a migliorare." -#: includes/i18n.php:192 +#: includes/i18n.php:195 msgid "What's the plugin's name?" msgstr "Qual è il nome del plugin?" -#: includes/i18n.php:193 +#: includes/i18n.php:196 msgid "What price would you feel comfortable paying?" msgstr "Che prezzo ritieni opportuno pagare?" -#: includes/i18n.php:194 +#: includes/i18n.php:197 msgid "I couldn't understand how to make it work" msgstr "Non capisco come farlo funzionare" -#: includes/i18n.php:195 -msgid "" -"The plugin is great, but I need specific feature that you don't support" +#: includes/i18n.php:198 +msgid "The plugin is great, but I need specific feature that you don't support" msgstr "Il plugin é ottimo ma ho bisogno di una funzionalitá specifica che non é supportata" -#: includes/i18n.php:196 +#: includes/i18n.php:199 msgid "The plugin is not working" msgstr "Il plugin non funziona" -#: includes/i18n.php:197 +#: includes/i18n.php:200 msgid "It's not what I was looking for" msgstr "Non é quello che stavo cercando" -#: includes/i18n.php:198 +#: includes/i18n.php:201 msgid "The plugin didn't work as expected" msgstr "Il plugin non funziona come mi aspettavo" -#: includes/i18n.php:199 +#: includes/i18n.php:202 msgid "What feature?" msgstr "Quale funzionalitá?" -#: includes/i18n.php:200 +#: includes/i18n.php:203 msgid "Kindly share what didn't work so we can fix it for future users..." msgstr "Condividi cosa non ha funzionato in modo da migliorare il prodotto per gli utenti futuri..." -#: includes/i18n.php:201 +#: includes/i18n.php:204 msgid "What you've been looking for?" msgstr "Che cosa stai cercando?" -#: includes/i18n.php:202 +#: includes/i18n.php:205 msgid "What did you expect?" msgstr "Che cosa ti aspettavi?" -#: includes/i18n.php:203 +#: includes/i18n.php:206 msgid "The plugin didn't work" msgstr "Il plugin non funziona" -#: includes/i18n.php:204 +#: includes/i18n.php:207 msgid "I don't like to share my information with you" msgstr "Non voglio condividere i miei dati con te" -#: includes/i18n.php:205 -msgid "" -"You might have missed it, but you don't have to share any data and can just " -"%s the opt-in." +#: includes/i18n.php:208 +msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in." msgstr "Potresti non averci fatto caso, ma non sei obbligato a condividere i tuoi dati e puoi semplicemente %s la tua partecipazione." -#: includes/i18n.php:209 +#: includes/i18n.php:212 msgctxt "greeting" msgid "Hey %s," msgstr "Hey %s," -#: includes/i18n.php:210 +#: includes/i18n.php:213 msgctxt "a greeting. E.g. Thanks John!" msgid "Thanks %s!" msgstr "Grazie %s!" -#: includes/i18n.php:211 -msgid "" -"Never miss an important update - opt-in to our security and feature updates " -"notifications, and non-sensitive diagnostic tracking with %4$s." +#: includes/i18n.php:214 +msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." msgstr "Non perdere nessun aggiornamento importante - iscriviti per ricevere notifiche su aggiornamenti relativi alla sicurezza e nuove versioni, oltre al tracciamento di diagnostica non sensibile con %4$s." -#: includes/i18n.php:212 -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." +#: includes/i18n.php:215 +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." msgstr "Aiutaci a migliorare %1$s! Se ti iscrivi, alcuni dati riguardanti il tuo utilizzo di %1$s verranno inviati a %4$s. Se salti questo passaggio, non c'è problema! %1$s funzionerà ugualmente." -#: includes/i18n.php:213 -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." +#: includes/i18n.php:216 +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." msgstr "Dovresti ricevere un'email di attivazione di %s all'indirizzo %s. Assicurati di fare clic sul pulsante di attivazione nell'email per %s." -#: includes/i18n.php:214 +#: includes/i18n.php:217 msgid "complete the install" msgstr "completa l'installazione" -#: includes/i18n.php:215 +#: includes/i18n.php:218 msgid "start the trial" msgstr "Inizia il periodo di prova gratuito" -#: includes/i18n.php:216 -msgid "" -"Thanks for purchasing %s! To get started, please enter your license key:" +#: includes/i18n.php:219 +msgid "Thanks for purchasing %s! To get started, please enter your license key:" msgstr "Grazie per aver acquistato %s! Per iniziare, per favore inserisci la tua chiave di licenza:" -#: includes/i18n.php:217 -msgid "" -"The plugin will be periodically sending data to %s to check for plugin " -"updates and verify the validity of your license." +#: includes/i18n.php:220 +msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license." msgstr "Il plugin invierà dati periodicamente a %s per controllare l'esistenza di aggiornamenti e verificare la validità della tua licenza." -#: includes/i18n.php:218 +#: includes/i18n.php:221 msgid "What permissions are being granted?" msgstr "Quali autorizzazioni vengono concesse?" -#: includes/i18n.php:219 +#: includes/i18n.php:222 msgid "Your Profile Overview" msgstr "Panoramica del tuo profilo" -#: includes/i18n.php:220 +#: includes/i18n.php:223 msgid "Name and email address" msgstr "Nome ed indirizzo email" -#: includes/i18n.php:221 +#: includes/i18n.php:224 msgid "Your Site Overview" msgstr "Panoramica del tuo sito" -#: includes/i18n.php:222 +#: includes/i18n.php:225 msgid "Site URL, WP version, PHP info, plugins & themes" msgstr "URL del sito, versione di WP, informazioni PHP, plugin e temi" -#: includes/i18n.php:223 +#: includes/i18n.php:226 msgid "Current Plugin Events" msgstr "Eventi correnti del plugin" -#: includes/i18n.php:224 +#: includes/i18n.php:227 msgid "Activation, deactivation and uninstall" msgstr "Attiva, disattivazione e disinstallazione" -#: includes/i18n.php:225 +#: includes/i18n.php:228 msgid "Plugins & Themes" msgstr "Plugin e temi" -#: includes/i18n.php:226 +#: includes/i18n.php:229 msgid "Titles, versions and state." msgstr "Titoli, versioni e stato." -#: includes/i18n.php:227 +#: includes/i18n.php:230 msgid "Admin Notices" msgstr "Avvisi amministratore" -#: includes/i18n.php:228 +#: includes/i18n.php:231 msgid "Newsletter" msgstr "Newsletter" -#: includes/i18n.php:229 +#: includes/i18n.php:232 msgid "Updates, announcements, marketing, no spam" msgstr "Aggiornamenti, annunci, marketing, no spam" -#: includes/i18n.php:230 +#: includes/i18n.php:233 msgid "Privacy Policy" msgstr "Politica sulla privacy" -#: includes/i18n.php:231 +#: includes/i18n.php:234 msgid "Terms of Service" msgstr "Termini del Servizio" -#: includes/i18n.php:232 +#: includes/i18n.php:235 msgctxt "as activating plugin" msgid "Activating" msgstr "Attivazione" -#: includes/i18n.php:233 +#: includes/i18n.php:236 msgctxt "as in the process of sending an email" msgid "Sending email" msgstr "Invio email" -#: includes/i18n.php:234 +#: includes/i18n.php:237 msgctxt "button label" msgid "Allow & Continue" msgstr "Consenti & Continua" -#: includes/i18n.php:235 +#: includes/i18n.php:238 msgctxt "button label" msgid "Agree & Activate License" msgstr "Accetta e attiva la licenza" -#: includes/i18n.php:236 +#: includes/i18n.php:239 msgctxt "verb" msgid "Skip" msgstr "Salta" -#: includes/i18n.php:237 +#: includes/i18n.php:240 msgid "Click here to use the plugin anonymously" msgstr "Fai clic qui per usare il plugin anonimamente" -#: includes/i18n.php:238 +#: includes/i18n.php:241 msgid "Re-send activation email" msgstr "Invia nuovamente l'email di attivazione" -#: includes/i18n.php:239 +#: includes/i18n.php:242 msgid "License key" msgstr "Chiave di licenza" -#: includes/i18n.php:240 +#: includes/i18n.php:243 msgid "Send License Key" msgstr "Invia chiave di licenza" -#: includes/i18n.php:241 +#: includes/i18n.php:244 msgid "Sending license key" msgstr "Invio chiave di licenza" -#: includes/i18n.php:242 +#: includes/i18n.php:245 msgid "Have a license key?" msgstr "Hai una chiave di licenza?" -#: includes/i18n.php:243 +#: includes/i18n.php:246 msgid "Don't have a license key?" msgstr "Non hai una chiave di licenza?" -#: includes/i18n.php:244 +#: includes/i18n.php:247 msgid "Can't find your license key?" msgstr "Non trovi la tua chiave di licenza?" -#: includes/i18n.php:245 -msgid "" -"We couldn't find your email address in the system, are you sure it's the " -"right address?" +#: includes/i18n.php:248 +msgid "We couldn't find your email address in the system, are you sure it's the right address?" msgstr "Non siamo riusciti a trovare il tuo indirizzo email nel sistema, sei sicuro che sia l'indirizzo giusto?" -#: includes/i18n.php:246 -msgid "" -"We can't see any active licenses associated with that email address, are you" -" sure it's the right address?" +#: includes/i18n.php:249 +msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" msgstr "Non siamo riusciti a trovare alcuna licenza attiva associata al tuo indirizzo email, sei sicuro che sia l'indirizzo giusto?" -#: includes/i18n.php:247 +#: includes/i18n.php:250 msgid "Opt In" msgstr "Iscriviti" -#: includes/i18n.php:248 +#: includes/i18n.php:251 msgid "Opt Out" msgstr "Cancella iscrizione" -#: includes/i18n.php:249 +#: includes/i18n.php:252 msgid "On second thought - I want to continue helping" msgstr "Ci ho ripensato, voglio continuare a fornire il mio aiuto" -#: includes/i18n.php:250 +#: includes/i18n.php:253 msgid "Opting out..." msgstr "Cancellamento dell'iscrizione..." -#: includes/i18n.php:251 +#: includes/i18n.php:254 msgid "Opting in..." msgstr "Iscrizione in corso..." -#: includes/i18n.php:252 -msgid "" -"We appreciate your help in making the %s better by letting us track some " -"usage data." +#: includes/i18n.php:255 +msgid "We appreciate your help in making the %s better by letting us track some usage data." msgstr "Ti ringraziamo per averci concesso di tracciare alcuni dati di utilizzo al fine di migliorare %s" -#: includes/i18n.php:253 -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." +#: includes/i18n.php:256 +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." msgstr "Tracciamo l'utilizzo esclusivamente per rendere %s migliore, creando una migliore esperienza utente e dando priorità a nuove funzionalità, oltre a molte altre buone cose. Saremmo veramente felici di vederti cambiare idea e lasciarci continuare con il tracciamento." -#: includes/i18n.php:254 -msgid "" -"By clicking \"Opt Out\", we will no longer be sending any data from %s to " -"%s." +#: includes/i18n.php:257 +msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." msgstr "Cliccando su \"Cancella iscrizione\", non invieremo più nessuna informazione da %s a %s." -#: includes/i18n.php:258 +#: includes/i18n.php:261 msgid "Screenshots" msgstr "Screenshots" -#: includes/i18n.php:259 +#: includes/i18n.php:262 msgid "Click to view full-size screenshot %d" msgstr "Fare clic per visualizzare lo screenshot in grandi dimensioni %d" -#: includes/i18n.php:263 +#: includes/i18n.php:266 msgid "Freemius Debug" msgstr "Debug Freemius" -#: includes/i18n.php:264 +#: includes/i18n.php:267 msgctxt "as turned on" msgid "On" msgstr "Attivo" -#: includes/i18n.php:265 +#: includes/i18n.php:268 msgctxt "as turned off" msgid "Off" msgstr "Non attivo" -#: includes/i18n.php:266 +#: includes/i18n.php:269 msgctxt "as code debugging" msgid "Debugging" msgstr "Debugging" -#: includes/i18n.php:267 +#: includes/i18n.php:270 msgid "Freemius State" msgstr "Stato di Freemius" -#: includes/i18n.php:268 +#: includes/i18n.php:271 msgctxt "as connection was successful" msgid "Connected" msgstr "Connesso" -#: includes/i18n.php:269 +#: includes/i18n.php:272 msgctxt "as connection blocked" msgid "Blocked" msgstr "Bloccato" -#: includes/i18n.php:270 +#: includes/i18n.php:273 msgctxt "as application program interface" msgid "API" msgstr "API" -#: includes/i18n.php:271 +#: includes/i18n.php:274 msgctxt "as software development kit versions" msgid "SDK" msgstr "SDK" -#: includes/i18n.php:272 +#: includes/i18n.php:275 msgctxt "as software development kit versions" msgid "SDK Versions" msgstr "Versioni SDK" -#: includes/i18n.php:273 +#: includes/i18n.php:276 msgctxt "as plugin folder path" msgid "Plugin Path" msgstr "Percorso del plugin" -#: includes/i18n.php:274 +#: includes/i18n.php:277 msgctxt "as sdk path" msgid "SDK Path" msgstr "Percorso SDK" -#: includes/i18n.php:275 +#: includes/i18n.php:278 msgid "Add Ons of Plugin %s" msgstr "Add-on del Plugin %s" -#: includes/i18n.php:276 +#: includes/i18n.php:279 msgid "Are you sure you want to delete all Freemius data?" msgstr "Sei sicuro di voler eliminare tutti i dati di Freemius?" -#: includes/i18n.php:277 +#: includes/i18n.php:280 msgid "Actions" msgstr "Azioni" -#: includes/i18n.php:278 +#: includes/i18n.php:281 msgid "Delete All Accounts" msgstr "Eliminare tutti gli account" -#: includes/i18n.php:279 +#: includes/i18n.php:282 msgid "Start Fresh" msgstr "Inizia da capo" -#: includes/i18n.php:280 +#: includes/i18n.php:283 msgid "Clear API Cache" msgstr "Elimina cache API" -#: includes/i18n.php:281 +#: includes/i18n.php:284 msgid "Sync Data From Server" msgstr "Sincronizza i dati dal server" -#: includes/i18n.php:282 +#: includes/i18n.php:285 msgid "Scheduled Crons" msgstr "Azioni programmate" -#: includes/i18n.php:283 +#: includes/i18n.php:286 msgid "Cron Type" msgstr "Tipo di Cron" -#: includes/i18n.php:284 +#: includes/i18n.php:287 msgid "Plugins & Themes Sync" msgstr "Sincronizzazione plugin e temi" -#: includes/i18n.php:285 +#: includes/i18n.php:288 msgid "Licenses" msgstr "Licenze" -#: includes/i18n.php:286 +#: includes/i18n.php:289 msgid "Debug Log" msgstr "Debug Log" -#: includes/i18n.php:287 +#: includes/i18n.php:290 msgid "All" msgstr "Tutto" -#: includes/i18n.php:288 +#: includes/i18n.php:291 msgid "File" msgstr "File" -#: includes/i18n.php:289 +#: includes/i18n.php:292 msgid "Function" msgstr "Funzione" -#: includes/i18n.php:290 +#: includes/i18n.php:293 msgid "Process ID" msgstr "ID processo" -#: includes/i18n.php:291 +#: includes/i18n.php:294 msgid "Logger" msgstr "Logger" -#: includes/i18n.php:292 +#: includes/i18n.php:295 msgid "Message" msgstr "Messaggio" -#: includes/i18n.php:293 +#: includes/i18n.php:296 msgid "Download" msgstr "Download" -#: includes/i18n.php:294 +#: includes/i18n.php:297 msgid "Filter" msgstr "Filtro" -#: includes/i18n.php:295 +#: includes/i18n.php:298 msgid "Type" msgstr "Tipo" -#: includes/i18n.php:296 +#: includes/i18n.php:299 msgid "All Types" msgstr "Tutti i tipi" -#: includes/i18n.php:297 +#: includes/i18n.php:300 msgid "All Requests" msgstr "Tutte le richieste" -#: includes/i18n.php:301 +#: includes/i18n.php:304 msgctxt "as congratulations" msgid "Congrats" msgstr "Congratulazioni" -#: includes/i18n.php:302 +#: includes/i18n.php:305 msgctxt "exclamation" msgid "Oops" msgstr "Ops" -#: includes/i18n.php:303 +#: includes/i18n.php:306 msgctxt "interjection expressing joy or exuberance" msgid "Yee-haw" msgstr "Evvai" -#: includes/i18n.php:304 +#: includes/i18n.php:307 msgctxt "" -"(especially in electronic communication) used to express elation, " -"enthusiasm, or triumph." msgid "W00t" msgstr "Forte" -#: includes/i18n.php:306 +#: includes/i18n.php:309 msgctxt "a positive response" msgid "Right on" msgstr "Sì" -#: includes/i18n.php:307 +#: includes/i18n.php:310 msgctxt "" -"something somebody says when they are thinking about what you have just " -"said. " msgid "Hmm" msgstr "Uhm" -#: includes/i18n.php:309 +#: includes/i18n.php:312 msgid "O.K" msgstr "OK" -#: includes/i18n.php:310 +#: includes/i18n.php:313 msgctxt "exclamation" msgid "Hey" msgstr "Hey" -#: includes/i18n.php:311 +#: includes/i18n.php:314 msgctxt "advance notice of something that will need attention." msgid "Heads up" msgstr "Attenzione" -#: includes/i18n.php:316 +#: includes/i18n.php:319 msgid "Seems like you got the latest release." msgstr "Sembra che tu abbia la versione più recente." -#: includes/i18n.php:317 +#: includes/i18n.php:320 msgid "You are all good!" msgstr "Sei fantastico!" -#: includes/i18n.php:318 -msgid "" -"Sorry, we could not complete the email update. Another user with the same " -"email is already registered." +#: includes/i18n.php:321 +msgid "Sorry, we could not complete the email update. Another user with the same email is already registered." msgstr "Siamo spiacenti, non siamo riusciti a completare l'aggiornamento via email. Un altro utente con lo stesso indirizzo email è già registrato." -#: includes/i18n.php:319 -msgid "" -"If you would like to give up the ownership of the plugin's account to %s " -"click the Change Ownership button." +#: includes/i18n.php:322 +msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button." msgstr "Se vuoi cedere la proprietá dell'account del plugin a %s clicca su Cambia Proprietà." -#: includes/i18n.php:320 -msgid "" -"Your email was successfully updated. You should receive an email with " -"confirmation instructions in few moments." +#: includes/i18n.php:323 +msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." msgstr "Il tuo indirizzo email è stato aggiornato correttamente. Riceverai un'email con le istruzioni di conferma in pochi istanti." -#: includes/i18n.php:321 +#: includes/i18n.php:324 msgid "Your name was successfully updated." msgstr "Il tuo nome è stato aggiornato correttamente." -#: includes/i18n.php:322 +#: includes/i18n.php:325 msgid "You have successfully updated your %s." msgstr "Hai aggiornato con successo il tuo %s." -#: includes/i18n.php:323 +#: includes/i18n.php:326 msgid "Please provide your full name." msgstr "Per favore inserisci il tuo nome completo." -#: includes/i18n.php:324 -msgid "" -"Verification mail was just sent to %s. If you can't find it after 5 min, " -"please check your spam box." +#: includes/i18n.php:327 +msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." msgstr "L'email di verifica è stata inviata a %s. Se dopo 5 minuti non è ancora arrivata, per favore controlla nella tua casella di posta indesiderata." -#: includes/i18n.php:325 -msgid "" -"Just letting you know that the add-ons information of %s is being pulled " -"from an external server." +#: includes/i18n.php:328 +msgid "Just letting you know that the add-ons information of %s is being pulled from an external server." msgstr "Le informazioni sugli add-on di %s vengono scaricate da un server esterno." -#: includes/i18n.php:326 +#: includes/i18n.php:329 msgid "No credit card required" msgstr "Nessuna carta di credito richiesta" -#: includes/i18n.php:327 +#: includes/i18n.php:330 msgid "Premium plugin version was successfully activated." msgstr "La versione Premium del plugin è stata attivata correttamente." -#: includes/i18n.php:328 +#: includes/i18n.php:331 msgid "The upgrade of %s was successfully completed." msgstr "L'aggiornamento di %s è stato completato con successo." -#: includes/i18n.php:329 +#: includes/i18n.php:332 msgid "Your account was successfully activated with the %s plan." msgstr "Il tuo account è stato attivato correttamente con il piano %s." -#: includes/i18n.php:330 +#: includes/i18n.php:333 msgid "Download the latest %s version now" msgstr "Scarica l'ultima versione di %s" -#: includes/i18n.php:331 +#: includes/i18n.php:334 msgid "Please follow these steps to complete the upgrade" msgstr "Segui i passi seguenti per completare l'aggiornamento" -#: includes/i18n.php:332 +#: includes/i18n.php:335 msgid "Download the latest %s version" msgstr "Scarica l'ultima versione di %s" -#: includes/i18n.php:333 +#: includes/i18n.php:336 msgid "Download the latest version" msgstr "Scarica l'ultima versione" -#: includes/i18n.php:334 +#: includes/i18n.php:337 msgid "Deactivate the free version" msgstr "Disattiva la versione gratuita" -#: includes/i18n.php:335 +#: includes/i18n.php:338 msgid "Upload and activate the downloaded version" msgstr "Carica e attiva la versione scaricata" -#: includes/i18n.php:336 +#: includes/i18n.php:339 msgid "How to upload and activate?" msgstr "Come faccio a caricare ed attivare?" -#: includes/i18n.php:337 +#: includes/i18n.php:340 msgctxt "%s - product name, e.g. Facebook add-on was successfully..." msgid "%s Add-on was successfully purchased." msgstr "L' add-on %s è stato acquistato con successo." -#: includes/i18n.php:339 +#: includes/i18n.php:342 msgid "Your %s Add-on plan was successfully upgraded." msgstr "Il piano del tuo add-on %s è stato aggiornato con successo." -#: includes/i18n.php:340 +#: includes/i18n.php:343 msgid "Your email has been successfully verified - you are AWESOME!" msgstr "Il tuo indirizzo email è stato verificato con successo - SEI UN GRANDE!" -#: includes/i18n.php:341 +#: includes/i18n.php:344 msgid "Your plan was successfully upgraded." msgstr "Il piano è stato aggiornato con successo." -#: includes/i18n.php:342 +#: includes/i18n.php:345 msgid "Your plan was successfully changed to %s." msgstr "Il piano è stato cambiato con successo a %s." -#: includes/i18n.php:343 -msgid "" -"Your license has expired. You can still continue using the free plugin " -"forever." +#: includes/i18n.php:346 +msgid "Your license has expired. You can still continue using the free plugin forever." msgstr "La licenza è scaduta. È comunque possibile continuare ad utilizzare il plugin gratuito per sempre." -#: includes/i18n.php:344 -msgid "" -"Your license has been cancelled. If you think it's a mistake, please contact" -" support." +#: includes/i18n.php:347 +msgid "Your license has been cancelled. If you think it's a mistake, please contact support." msgstr "La tua licenza è stata cancellata. Se credi sia un errore, per favore contatta il supporto." -#: includes/i18n.php:345 +#: includes/i18n.php:348 msgid "Your trial has been successfully started." msgstr "La versione di prova è stata avviata correttamente." -#: includes/i18n.php:346 +#: includes/i18n.php:349 msgid "Your license was successfully activated." msgstr "La tua licenza è stata attivata correttamente." -#: includes/i18n.php:347 +#: includes/i18n.php:350 msgid "It looks like your site currently doesn't have an active license." msgstr "Sembra che il tuo sito non disponga di alcuna licenza attiva." -#: includes/i18n.php:348 -msgid "" -"Your license was successfully deactivated, you are back to the %s plan." +#: includes/i18n.php:351 +msgid "Your license was successfully deactivated, you are back to the %s plan." msgstr "La tua licenza é stata disattivata con successo, sei tornato al piano %s." -#: includes/i18n.php:349 +#: includes/i18n.php:352 msgid "It looks like the license deactivation failed." msgstr "Sembra che la disattivazione della licenza non sia riuscita." -#: includes/i18n.php:350 +#: includes/i18n.php:353 msgid "It looks like the license could not be activated." msgstr "Sembra che la licenza non possa essere attivata." -#: includes/i18n.php:351 +#: includes/i18n.php:354 msgid "Error received from the server:" msgstr "Errore ricevuto dal server:" -#: includes/i18n.php:352 -msgid "" -"Your trial has expired. You can still continue using all our free features." +#: includes/i18n.php:355 +msgid "Your trial has expired. You can still continue using all our free features." msgstr "La versione di prova è scaduta. Si può comunque continuare a utilizzare tutte le nostre funzioni gratuite." -#: includes/i18n.php:353 -msgid "" -"Your plan was successfully downgraded. Your %s plan license will expire in " -"%s." +#: includes/i18n.php:356 +msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s." msgstr "Il tuo piano è stato declassato con successo. La licenza del piano %s scadrà in %s." -#: includes/i18n.php:354 -msgid "" -"Seems like we are having some temporary issue with your plan downgrade. " -"Please try again in few minutes." +#: includes/i18n.php:357 +msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." msgstr "Stiamo avendo qualche problema temporaneo con il downgrade del piano. Riprova tra qualche minuto." -#: includes/i18n.php:355 -msgid "" -"It looks like you are not in trial mode anymore so there's nothing to cancel" -" :)" +#: includes/i18n.php:358 +msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)" msgstr "Sembra che tu non stia più usando la prova gratuita, quindi non c'è niente che tu debba annullare :)" -#: includes/i18n.php:356 +#: includes/i18n.php:359 msgid "Your %s free trial was successfully cancelled." msgstr "Il tuo periodo di prova gratuito %s è stato annullato con successo." -#: includes/i18n.php:357 +#: includes/i18n.php:360 msgctxt "%s - numeric version number" msgid "Version %s was released." msgstr "La versione %s é stata rilasciata." -#: includes/i18n.php:358 +#: includes/i18n.php:361 msgid "Please download %s." msgstr "Scarica %s." -#: includes/i18n.php:359 +#: includes/i18n.php:362 msgctxt "%s - plan name, as the latest professional version here" msgid "the latest %s version here" msgstr "l'ultima versione %s é quì" -#: includes/i18n.php:361 -msgid "" -"How do you like %s so far? Test all our %s premium features with a %d-day " -"free trial." +#: includes/i18n.php:364 +msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial." msgstr "Come sta andando con %s? Prova tutte le funzionalità premium di %s con una prova gratuita di %d giorni." -#: includes/i18n.php:362 +#: includes/i18n.php:365 msgctxt "call to action" msgid "Start free trial" msgstr "Inizia il periodo di prova gratuito" -#: includes/i18n.php:363 +#: includes/i18n.php:366 msgid "Starting trial" msgstr "Inizio del periodo di prova gratuito" -#: includes/i18n.php:364 +#: includes/i18n.php:367 msgid "Please wait" msgstr "Attendere" -#: includes/i18n.php:365 -msgid "" -"Seems like we are having some temporary issue with your trial cancellation. " -"Please try again in few minutes." +#: includes/i18n.php:368 +msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." msgstr "Stiamo avendo qualche problema temporaneo con l'annullamento del periodo di prova. Riprova tra qualche minuto." -#: includes/i18n.php:366 +#: includes/i18n.php:369 msgid "You already utilized a trial before." msgstr "Hai già utilizzato una prova gratuita in passato." -#: includes/i18n.php:367 +#: includes/i18n.php:370 msgid "You are already running the plugin in a trial mode." msgstr "Stai già usando il plugin in modalità di prova gratuita." -#: includes/i18n.php:368 +#: includes/i18n.php:371 msgid "Plan %s do not exist, therefore, can't start a trial." msgstr "Il piano %s non esiste, per questo motivo non è possibile iniziare il periodo di prova." -#: includes/i18n.php:369 +#: includes/i18n.php:372 msgid "Plan %s does not support a trial period." msgstr "Il piano %s non supporta il periodo di prova." -#: includes/i18n.php:370 +#: includes/i18n.php:373 msgid "None of the plugin's plans supports a trial period." msgstr "Non esiste alcun piano del plugin che offra il periodo di prova." -#: includes/i18n.php:371 -msgid "" -"Unexpected API error. Please contact the plugin's author with the following " -"error." +#: includes/i18n.php:374 +msgid "Unexpected API error. Please contact the plugin's author with the following error." msgstr "Errore inaspettato dell'API. Per favore contatta l'autore del plugin riportando il seguente errore." -#: includes/i18n.php:372 +#: includes/i18n.php:375 msgid "No commitment for %s days - cancel anytime!" msgstr "Nessun impegno per %s giorni - puoi annullare in qualsiasi momento!" -#: includes/i18n.php:373 -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." +#: includes/i18n.php:376 +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." msgstr "La licenza è scaduta. È comunque possibile continuare a utilizzare tutte le funzionalità di %s, ma sarà necessario rinnovare la licenza per continuare a ricevere gli aggiornamenti ed il supporto." -#: includes/i18n.php:374 +#: includes/i18n.php:377 msgid "Couldn't activate %s." msgstr "Non é stato possibile attivare %s." -#: includes/i18n.php:375 +#: includes/i18n.php:378 msgid "Please contact us with the following message:" msgstr "Contattaci con il seguente messaggio:" -#: includes/i18n.php:376 -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." +#: includes/i18n.php:379 +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." msgstr "Sembra che tu sia ancora usando il piano %s. Se hai effettuato un upgrade o cambiato il piano, è probabile che ci sia un problema nei nostri sistemi." -#: includes/i18n.php:377 +#: includes/i18n.php:380 msgid "Please contact us here" msgstr "Contattaci qui" -#: includes/i18n.php:378 -msgid "" -"I have upgraded my account but when I try to Sync the License, the plan " -"remains %s." +#: includes/i18n.php:381 +msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s." msgstr "Ho aggiornato il mio account, ma quando cerco di sincronizzare la licenza, il piano rimane %s." -#: includes/i18n.php:381 +#: includes/i18n.php:384 msgid "From unknown reason, the API connectivity test failed." msgstr "Il test di connettività dell'API ha fallito per motivi sconosciuti." -#: includes/i18n.php:382 -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?" +#: includes/i18n.php:385 +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?" msgstr "Si tratta probabilmente di un problema nei nostri sistemi. Per esserne sicuri, potresti darci il permesso di effettuare un ulteriore test della connettività? " -#: includes/i18n.php:383 -msgid "" -"We use PHP cURL library for the API calls, which is a very common library " -"and usually installed out of the box. Unfortunately, cURL is not installed " -"on your server." -msgstr "Utilizziamo la libreria PHP cURL per le chiamate alla nostra API. Questa libreria è molto comune ed è installata di base. Sfortunatamente cURL non è presente nel tuo server." +#: includes/i18n.php:386 +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." +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." -#: includes/i18n.php:384 -msgid "" -"From unknown reason, CloudFlare, the firewall we use, blocks the connection." +#: includes/i18n.php:387 +msgid "Disabled method(s):" +msgstr "Disabled method(s):" + +#: includes/i18n.php:388 +msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection." msgstr "Per un motivo sconosciuto, CloudFlare, il firewall che utilizziamo, blocca la connessione." -#: includes/i18n.php:385 +#: includes/i18n.php:389 msgctxt "as pluginX requires an access to our API" msgid "%s requires an access to our API." msgstr "%s richiede un accesso alla nostra API." -#: includes/i18n.php:387 -msgid "" -"It looks like your server is using Squid ACL (access control lists), which " -"blocks the connection." +#: includes/i18n.php:391 +msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection." msgstr "Sembra che il tuo server stia usando Squid ACL (lista per il controllo degli accessi) il quale blocca la connessione." -#: includes/i18n.php:388 +#: includes/i18n.php:392 msgid "I don't know what is Squid or ACL, help me!" msgstr "Non ho idea di cosa sia Squid o ACL, aiutami!" -#: includes/i18n.php389, includes/i18n.php:393 -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." +#: includes/i18n.php393, includes/i18n.php:397 +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." msgstr "Contatteremo il tuo hosting e risolveremo il problema. Riceverai un' email a %s non appena ci saranno aggiornamenti." -#: includes/i18n.php:390 +#: includes/i18n.php:394 msgid "I'm a system administrator" msgstr "Sono un sistemista" -#: includes/i18n.php:391 -msgid "" -"Great, please whitelist the following domains: %s. Once you are done, " -"deactivate the plugin and activate it again." +#: includes/i18n.php:395 +msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again." msgstr "Perfetto, ora per favore aggiungi alla whitelist i seguenti domini: %s. Quando hai fatto, disattiva il plugin e riattivalo di nuovo." -#: includes/i18n.php:392 +#: includes/i18n.php:396 msgid "I don't know what is cURL or how to install it, help me!" msgstr "Non ho idea di cosa sia cURL o come installarlo, aiutami!" -#: includes/i18n.php:394 -msgid "" -"Great, please install cURL and enable it in your php.ini file. To make sure " -"it was successfully activated, use 'phpinfo()'. Once activated, deactivate " -"the plugin and reactivate it back again." -msgstr "Perfetto, installa cURL ed attivalo nel tuo file php.ini. Per essere sicuro di averlo attivato con successo, usa \"phpinfo()\". Una volta attivato disattva il plugin e attivalo di nuovo." +#: includes/i18n.php:398 +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 plugin and reactivate it back again." +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 plugin and reactivate it back again." -#: includes/i18n.php:395 -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." +#: includes/i18n.php:399 +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." msgstr "Siamo sicuri che sia un nostro problema e siamo più che felici di risolverlo per te al più presto. Per poter procedere abbiamo bisogno del tuo consenso." -#: includes/i18n.php:396 -msgid "" -"Sorry for the inconvenience and we are here to help if you give us a chance." +#: includes/i18n.php:400 +msgid "Sorry for the inconvenience and we are here to help if you give us a chance." msgstr "Siamo spiacenti per l'inconveniente e siamo qui per aiutarti con il tuo permesso." -#: includes/i18n.php:397 +#: includes/i18n.php:401 msgid "Yes - I'm giving you a chance to fix it" msgstr "Sì - sto dandovi la possibilità di risolvere il problema" -#: includes/i18n.php:398 -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." +#: includes/i18n.php:402 +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." msgstr "Faremo del nostro meglio per mettere il server in whitelist e risolvere il problema il prima possibile. Avrai un aggiornamento dello stato tramite email all'indirizzo %s." -#: includes/i18n.php:399 +#: includes/i18n.php:403 msgid "Let's try your previous version" msgstr "Proviamo con la versione precedente" -#: includes/i18n.php:400 +#: includes/i18n.php:404 msgid "Uninstall this version and install the previous one." msgstr "Disinstalla questa versione e installa quella precedente." -#: includes/i18n.php:401 +#: includes/i18n.php:405 msgid "That's exhausting, please deactivate" msgstr "È estenuante, disattivalo" -#: includes/i18n.php:402 -msgid "" -"We feel your frustration and sincerely apologize for the inconvenience. Hope" -" to see you again in the future." +#: includes/i18n.php:406 +msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future." msgstr "Capiamo la tua frustrazione e ci scusiamo per l'inconveniente. Speriamo di rivederti nuovamente in futuro." -#: includes/i18n.php:403 -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." +#: includes/i18n.php:407 +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." msgstr "Grazie per averci dato la possibilità di risolvere il problema! È stato appena inviato un messaggio al nostro staff tecnico. Ti risponderemo non appena avremo un aggiornamento riguardante %s. Grazie per la tua pazienza." -#: includes/i18n.php:404 +#: includes/i18n.php:408 msgctxt "%1s - plugin title, %2s - API domain" -msgid "" -"Your server is blocking the access to Freemius' API, which is crucial for " -"%1s synchronization. Please contact your host to whitelist %2s" +msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" msgstr "Il tuo server sta bloccando l'accesso all'API di Freemius. L'accesso è cruciale per quanto riguarda la la sincronizzazione di %1s. Per favore contatta il tuo host per aggiungere %2s alla whitelist." -#: includes/i18n.php:406 -msgid "" -"It seems like one of the authentication parameters is wrong. Update your " -"Public Key, Secret Key & User ID, and try again." +#: includes/i18n.php:410 +msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." msgstr "Sembra che uno dei parametri di autenticazione sia sbagliato. Aggiorna la tua chiave pubblica, Secret Key & User ID e riprova." -#: includes/i18n.php:409 -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." +#: includes/i18n.php:413 +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." msgstr "Verifica di aver ricevuto l'email da %s per confermare il cambiamento del proprietario. Per ragioni di sicurezza devi confermare il cambiamento entro 15 minuti. Se non trovi l'email controlla nella posta indesiderata." -#: includes/i18n.php:410 -msgid "" -"Thanks for confirming the ownership change. An email was just sent to %s for" -" final approval." +#: includes/i18n.php:414 +msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval." msgstr "Grazie per aver confermato il cambiamento del proprietario. Un' email è stata appena inviata a %s per la conferma finale." -#: includes/i18n.php:411 +#: includes/i18n.php:415 msgid "%s is the new owner of the account." msgstr "%s è il nuovo proprietario dell'account." -#: includes/i18n.php:413 +#: includes/i18n.php:417 msgctxt "addonX cannot run without pluginY" msgid "%s cannot run without %s." msgstr "%s non può funzionare senza %s." -#: includes/i18n.php:415 +#: includes/i18n.php:419 msgctxt "addonX cannot run..." msgid "%s cannot run without the plugin." msgstr "%s non può funzionare senza il plugin." -#: includes/i18n.php:416 +#: includes/i18n.php:420 msgctxt "pluginX activation was successfully..." msgid "%s activation was successfully completed." msgstr "%s è stato attivato con successo." -#: includes/i18n.php:418 +#: includes/i18n.php:422 msgctxt "Plugin installer section title" msgid "Features & Pricing" msgstr "Caratteristiche & prezzi" -#: includes/i18n.php:419 +#: includes/i18n.php:423 msgid "Add-on must be deployed to WordPress.org or Freemius." msgstr "L'add-on dev'essere distribuito da WordPress.org o Freemius." -#: includes/i18n.php:420 +#: includes/i18n.php:424 msgid "Paid add-on must be deployed to Freemius." msgstr "Gli add-on a pagamento devono essere distribuiti da Freemius." -#: includes/i18n.php:424 -msgid "" -"%s is a premium only add-on. You have to purchase a license first before " -"activating the plugin." +#: includes/i18n.php:428 +msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin." msgstr "%s è un add-on premium. Devi comprare una licenza prima di poter attivare il plugin." -#: includes/i18n.php:425 -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." +#: includes/i18n.php:429 +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." msgstr "Il periodo di prova gratuito %s è stato annullato con successo. Siccome l'add-on è premium, è stato disattivato automaticamente. Se vorrai usarlo in futuro, dovrai comprare una licenza." -#: includes/i18n.php:430 +#: includes/i18n.php:434 msgctxt "as every month" msgid "Monthly" msgstr "Mensilmente" -#: includes/i18n.php:431 +#: includes/i18n.php:435 msgctxt "as monthly period" msgid "mo" msgstr "mese" -#: includes/i18n.php:432 +#: includes/i18n.php:436 msgctxt "as once a year" msgid "Annual" msgstr "Annuale" -#: includes/i18n.php:433 +#: includes/i18n.php:437 msgctxt "as once a year" msgid "Annually" msgstr "Annualmente" -#: includes/i18n.php:434 +#: includes/i18n.php:438 msgctxt "as once a year" msgid "Once" msgstr "Una volta" -#: includes/i18n.php:435 +#: includes/i18n.php:439 msgctxt "as annual period" msgid "year" msgstr "anno" -#: includes/i18n.php:436 +#: includes/i18n.php:440 msgid "Lifetime" msgstr "Tutta la vita" -#: includes/i18n.php:437 +#: includes/i18n.php:441 msgctxt "e.g. the best product" msgid "Best" msgstr "Migliore" -#: includes/i18n.php:438 +#: includes/i18n.php:442 msgctxt "e.g. billed monthly" msgid "Billed %s" msgstr "Fatturato %s" -#: includes/i18n.php:439 +#: includes/i18n.php:443 msgctxt "as a discount of $5 or 10%" msgid "Save %s" msgstr "Risparmia %s" -#: includes/i18n.php:441 +#: includes/i18n.php:445 msgid "View details" msgstr "Visualizza dettagli" -#: includes/i18n.php:445 +#: includes/i18n.php:449 msgctxt "button label" msgid "Approve & Start Trial" msgstr "Approva e inizia il periodo di prova gratuito" -#: includes/i18n.php:447 -msgid "" -"You are 1-click away from starting your %1$s-day free trial of the %2$s " -"plan." +#: includes/i18n.php:451 +msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." msgstr "Sei a un clic di distanza dall'iniziare il tuo periodo di prova gratuito di %1$s giorni per il piano %2$s." -#: includes/i18n.php:449 -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 plugin to periodically send data to %s to check for version " -"updates and to validate your trial." +#: includes/i18n.php:453 +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 plugin to periodically send data to %s to check for version updates and to validate your trial." msgstr "Per seguire le linee guida di WordPress, prima di iniziare il periodo di prova ti chiediamo di iscriverti con il tuo utente e i dati non sensibili inerenti al tuo sito, così da permettere periodicamente al plugin di inviare dati a %s per poter controllare la presenza di nuove versioni e convalidare il tuo periodo di prova gratuito." -#: includes/i18n.php:455 +#: includes/i18n.php:459 msgid "Business name" msgstr "Nome della compagnia" -#: includes/i18n.php:456 +#: includes/i18n.php:460 msgid "Tax / VAT ID" msgstr "Numero Partita Iva o VAT" -#: includes/i18n.php:457 +#: includes/i18n.php:461 msgid "Address Line %d" msgstr "Riga indirizzo %d" -#: includes/i18n.php:458 +#: includes/i18n.php:462 msgid "Country" msgstr "Nazione" -#: includes/i18n.php:459 +#: includes/i18n.php:463 msgid "Select Country" msgstr "Seleziona Nazione" -#: includes/i18n.php:460 +#: includes/i18n.php:464 msgid "City" msgstr "Città" -#: includes/i18n.php:461 +#: includes/i18n.php:465 msgid "Town" msgstr "Cittadina" -#: includes/i18n.php:462 +#: includes/i18n.php:466 msgid "State" msgstr "Stato" -#: includes/i18n.php:463 +#: includes/i18n.php:467 msgid "Province" msgstr "Provincia" -#: includes/i18n.php:464 +#: includes/i18n.php:468 msgid "ZIP / Postal Code" msgstr "CAP" +#: includes/i18n.php:473 +msgid "Installing plugin: %s" +msgstr "Installing plugin: %s" + +#: includes/i18n.php:474 +msgid "Automatic Installation" +msgstr "Automatic Installation" + +#: includes/i18n.php:476 +msgid "%s sec" +msgstr "%s sec" + +#: includes/i18n.php:477 +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." +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." + +#: includes/i18n.php:478 +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." +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." + #: includes/i18n.php:479 +msgid "Cancel Installation" +msgstr "Cancel Installation" + +#: includes/i18n.php:480 +msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work." +msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work." + +#: includes/i18n.php:481 +msgid "Invalid module ID." +msgstr "Invalid module ID." + +#: includes/i18n.php:482 +msgid "Auto installation only works for opted-in users." +msgstr "Auto installation only works for opted-in users." + +#: includes/i18n.php:483 +msgid "Premium version already active." +msgstr "Premium version already active." + +#: includes/i18n.php:484 +msgid "Premium add-on version already installed." +msgstr "Premium add-on version already installed." + +#: includes/i18n.php:485 +msgid "You do not have a valid license to access the premium version." +msgstr "You do not have a valid license to access the premium version." + +#: includes/i18n.php:486 +msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version." +msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version." + +#: includes/i18n.php:501 msgctxt "Plugin installer section title" msgid "Description" msgstr "Descrizione" -#: includes/i18n.php:480 +#: includes/i18n.php:502 msgctxt "Plugin installer section title" msgid "Installation" msgstr "Installazione" -#: includes/i18n.php:481 +#: includes/i18n.php:503 msgctxt "Plugin installer section title" msgid "FAQ" msgstr "FAQ" -#: includes/i18n.php:482 +#: includes/i18n.php:504 msgctxt "Plugin installer section title" msgid "Changelog" msgstr "Changelog" -#: includes/i18n.php:483 +#: includes/i18n.php:505 msgctxt "Plugin installer section title" msgid "Reviews" msgstr "Recensioni" -#: includes/i18n.php:484 +#: includes/i18n.php:506 msgctxt "Plugin installer section title" msgid "Other Notes" msgstr "Altre note" -#: includes/i18n.php:486 +#: includes/i18n.php:508 msgid "%s star" msgstr "%s stella" -#: includes/i18n.php:488 +#: includes/i18n.php:510 msgid "%s stars" msgstr "%s stelle" -#: includes/i18n.php:490 +#: includes/i18n.php:512 msgid "%s rating" msgstr "%s valutazione" -#: includes/i18n.php:492 +#: includes/i18n.php:514 msgid "%s ratings" msgstr "%s valutazioni" -#: includes/i18n.php:494 +#: includes/i18n.php:516 msgid "%s time" msgstr "% volta" -#: includes/i18n.php:496 +#: includes/i18n.php:518 msgid "%s times" msgstr "%s volte" -#: includes/i18n.php:498 +#: includes/i18n.php:520 msgid "Click to see reviews that provided a rating of %s" msgstr "Fai clic per vedere le recensioni che hanno fornito una valutazione di %s" -#: includes/i18n.php:499 +#: includes/i18n.php:521 msgid "Last Updated" msgstr "Ultimo aggiornamento" -#: includes/i18n.php:500 +#: includes/i18n.php:522 msgid "Requires WordPress Version:" msgstr "Richiede la versione di WordPress:" -#: includes/i18n.php:501 +#: includes/i18n.php:523 msgctxt "as the plugin author" msgid "Author:" msgstr "Autore:" -#: includes/i18n.php:502 +#: includes/i18n.php:524 msgid "Compatible up to:" msgstr "Compatibile fino a:" -#: includes/i18n.php:503 +#: includes/i18n.php:525 msgid "Downloaded:" msgstr "Scaricato:" -#: includes/i18n.php:504 +#: includes/i18n.php:526 msgid "WordPress.org Plugin Page" msgstr "Pagina dei plugin di WordPress.org" -#: includes/i18n.php:505 +#: includes/i18n.php:527 msgid "Plugin Homepage" msgstr "Homepage del plugin" -#: includes/i18n.php:506 +#: includes/i18n.php:528 msgid "Donate to this plugin" msgstr "Fai una donazione a questo plugin" -#: includes/i18n.php:507 +#: includes/i18n.php:529 msgid "Average Rating" msgstr "Valutazione media" -#: includes/i18n.php:508 +#: includes/i18n.php:530 msgid "based on %s" msgstr "basato su %s" -#: includes/i18n.php:509 +#: includes/i18n.php:531 msgid "Warning:" msgstr "Avviso:" -#: includes/i18n.php:510 +#: includes/i18n.php:532 msgid "Contributors" msgstr "Contributori" -#: includes/i18n.php:511 +#: includes/i18n.php:533 msgid "Plugin Install" msgstr "Installazione del plugin" -#: includes/i18n.php:512 -msgid "" -"This plugin has not been tested with your current version of WordPress." +#: includes/i18n.php:534 +msgid "This plugin has not been tested with your current version of WordPress." msgstr "Questo plugin non è stato testato con la versione corrente di WordPress." -#: includes/i18n.php:513 -msgid "" -"This plugin has not been marked as compatible with your version of " -"WordPress." +#: includes/i18n.php:535 +msgid "This plugin has not been marked as compatible with your version of WordPress." msgstr "Questo plugin non è stato segnato come compatibile con la tua versione di WordPress." -#: includes/i18n.php:514 +#: includes/i18n.php:536 msgid "Newer Version (%s) Installed" msgstr "Versione più recente (%s) installata" -#: includes/i18n.php:515 +#: includes/i18n.php:537 msgid "Latest Version Installed" msgstr "Versione più recente installata" diff --git a/languages/freemius-ja_JP.mo b/languages/freemius-ja_JP.mo index 6a8d2d665..ebd78ab82 100644 Binary files a/languages/freemius-ja_JP.mo and b/languages/freemius-ja_JP.mo differ diff --git a/languages/freemius-ja_JP.po b/languages/freemius-ja_JP.po index 2b4a33ee0..94adc36c4 100644 --- a/languages/freemius-ja_JP.po +++ b/languages/freemius-ja_JP.po @@ -1,1662 +1,1791 @@ -# +# Copyright (C) 2017 freemius +# This file is distributed under the same license as the freemius package. # Translators: # Odyssey <8bitodyssey+github@gmail.com>, 2016 # Takayuki Miyauchi , 2016 msgid "" msgstr "" "Project-Id-Version: WordPress SDK\n" -"Report-Msgid-Bugs-To: \n" +"Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2017-02-28 03:42+0000\n" +"PO-Revision-Date: 2017-05-12 17:32+0000\n" "Last-Translator: Vova Feldman \n" +"Language: ja_JP\n" "Language-Team: Japanese (Japan) (http://www.transifex.com/freemius/wordpress-sdk/language/ja_JP/)\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: ja_JP\n" +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" - -# Copyright (C) 2017 freemius -# This file is distributed under the same license as the freemius package. -#: includes/i18n.php41, includes/i18n.php:55 -msgid "Yes - I'm in!" -msgstr "加入します" - -#: includes/i18n.php43, includes/i18n.php:57 -msgid "Not today" -msgstr "今日はやめておく" - -#: includes/i18n.php:69 +"MIME-Version: 1.0\n" +"X-Poedit-Basepath: ..\n" +"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" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: includes/i18n.php:37 msgid "Account" msgstr "アカウント" -#: includes/i18n.php:71 +#: includes/i18n.php:38 msgid "Add On" msgstr "アドオン" -#: includes/i18n.php:73 +#: includes/i18n.php:39 msgid "Contact Us" msgstr "連絡" -#: includes/i18n.php:75 +#: includes/i18n.php:40 msgid "Contact Support" msgstr "サポートに連絡" -#: includes/i18n.php:77 +#: includes/i18n.php:41 msgid "Change Ownership" msgstr "オーナーを変更" -#: includes/i18n.php:79 +#: includes/i18n.php:42 msgid "Support" msgstr "サポート" -#: includes/i18n.php:81 +#: includes/i18n.php:43 msgid "Support Forum" msgstr "サポートフォーラム" -#: includes/i18n.php:83 +#: includes/i18n.php:44 msgid "Add Ons" msgstr "アドオン" -#: includes/i18n.php:85 +#: includes/i18n.php:45 msgctxt "verb" msgid "Upgrade" msgstr "アップグレード" -#: includes/i18n.php:87 +#: includes/i18n.php:46 msgid "Awesome" msgstr "すごい!" -#: includes/i18n.php:89 +#: includes/i18n.php:47 msgctxt "noun" msgid "Pricing" msgstr "料金表" -#: includes/i18n.php:91 +#: includes/i18n.php:48 msgctxt "noun" msgid "Price" msgstr "料金" -#: includes/i18n.php:93 +#: includes/i18n.php:49 msgid "Unlimited Updates" msgstr "無制限のアップデート" -#: includes/i18n.php:95 +#: includes/i18n.php:50 msgctxt "verb" msgid "Downgrade" msgstr "ダウングレード" -#: includes/i18n.php:97 +#: includes/i18n.php:51 +msgctxt "verb" +msgid "Cancel Subscription" +msgstr "Cancel Subscription" + +#: includes/i18n.php:52 msgid "Cancel Trial" msgstr "トライアルをキャンセル" -#: includes/i18n.php:99 +#: includes/i18n.php:53 msgid "Free Trial" msgstr "フリートライアル" -#: includes/i18n.php:101 +#: includes/i18n.php:54 msgid "Start my free %s" msgstr "無料の %s を開始" -#: includes/i18n.php:103 +#: includes/i18n.php:55 msgid "No commitment for %s - cancel anytime" msgstr "%s の拘束はありません。いつでもキャンセルできます。" -#: includes/i18n.php:105 +#: includes/i18n.php:56 msgid "After your free %s, pay as little as %s" msgstr "無料の %s の後は、わずか %s だけお支払ください。" -#: includes/i18n.php:107 +#: includes/i18n.php:57 msgid "Details" msgstr "詳細" -#: includes/i18n.php:109 +#: includes/i18n.php:58 msgid "Account Details" msgstr "アカウント詳細" -#: includes/i18n.php:111 +#: includes/i18n.php:59 msgctxt "verb" msgid "Delete" msgstr "削除" -#: includes/i18n.php:113 +#: includes/i18n.php:60 msgctxt "verb" msgid "Show" msgstr "表示" -#: includes/i18n.php:115 +#: includes/i18n.php:61 msgctxt "verb" msgid "Hide" msgstr "非表示" -#: includes/i18n.php:117 +#: includes/i18n.php:62 msgctxt "verb" msgid "Edit" msgstr "編集" -#: includes/i18n.php:119 +#: includes/i18n.php:63 msgctxt "verb" msgid "Update" msgstr "更新" -#: includes/i18n.php:121 +#: includes/i18n.php:64 msgid "Date" msgstr "日付" -#: includes/i18n.php:123 +#: includes/i18n.php:65 msgid "Amount" msgstr "総額" -#: includes/i18n.php:125 +#: includes/i18n.php:66 msgid "Invoice" msgstr "請求書" -#: includes/i18n.php:127 +#: includes/i18n.php:67 msgid "Billing" msgstr "請求書" -#: includes/i18n.php:129 +#: includes/i18n.php:68 msgid "Payments" msgstr "支払い" -#: includes/i18n.php:131 +#: includes/i18n.php:69 msgid "Delete Account" msgstr "アカウントを削除" -#: includes/i18n.php:133 +#: includes/i18n.php:70 msgctxt "as close a window" msgid "Dismiss" msgstr "却下" -#: includes/i18n.php:135 +#: includes/i18n.php:71 msgctxt "as product pricing plan" msgid "Plan" msgstr "プラン" -#: includes/i18n.php:137 +#: includes/i18n.php:72 msgid "Change Plan" msgstr "プラン変更" -#: includes/i18n.php:139 +#: includes/i18n.php:73 msgctxt "as download professional version" msgid "Download %s Version" msgstr "%s バージョンをダウンロード" -#: includes/i18n.php:141 +#: includes/i18n.php:74 msgctxt "as download professional version now" msgid "Download %s version now" msgstr "%s バージョンを今すぐダウンロード" -#: includes/i18n.php:145 +#: includes/i18n.php:75 msgctxt "as download latest version" msgid "Download Latest" msgstr "最新版をダウンロード" -#: includes/i18n.php:147 +#: includes/i18n.php:76 msgctxt "E.g. you have a professional license." msgid "You have a %s license." msgstr "%s ライセンスを持っています。" -#: includes/i18n.php:151 +#: includes/i18n.php:77 msgid "New" msgstr "新規" -#: includes/i18n.php:153 +#: includes/i18n.php:78 msgid "Free" msgstr "無料" -#: includes/i18n.php:155 +#: includes/i18n.php:79 msgctxt "as trial plan" msgid "Trial" msgstr "トライアル" -#: includes/i18n.php:157 +#: includes/i18n.php:80 msgctxt "as starting a trial plan" msgid "Start Trial" msgstr "トライアルを開始" -#: includes/i18n.php:159 +#: includes/i18n.php:81 msgctxt "verb" msgid "Purchase" msgstr "購入" -#: includes/i18n.php:161 +#: includes/i18n.php:82 msgid "Purchase License" msgstr "ライセンスを購入" -#: includes/i18n.php:163 +#: includes/i18n.php:83 msgctxt "verb" msgid "Buy" msgstr "買う" -#: includes/i18n.php:165 +#: includes/i18n.php:84 msgid "Buy License" msgstr "ライセンスを買う" -#: includes/i18n.php:167 +#: includes/i18n.php:85 msgid "Single Site License" msgstr "シングルサイトライセンス" -#: includes/i18n.php:169 +#: includes/i18n.php:86 msgid "Unlimited Licenses" msgstr "無制限ライセンス" -#: includes/i18n.php:171 +#: includes/i18n.php:87 msgid "Up to %s Sites" msgstr "%sサイトまで" -#: includes/i18n.php:173 +#: includes/i18n.php:88 msgid "%sRenew your license now%s to access version %s features and support." msgstr "%sいますぐライセンスを更新して%s バージョン %s の機能とサポートにアクセスする" -#: includes/i18n.php:177 -msgid "" -"Enter the email address you've used for the upgrade below and we will resend" -" you the license key." +#: includes/i18n.php:89 +msgid "Enter the email address you've used for the upgrade below and we will resend you the license key." msgstr "アップグレードに使用したメールアドレスを下に入力してください。そうすれば、ライセンスキーをお送りします。" -#: includes/i18n.php:181 +#: includes/i18n.php:90 msgctxt "e.g. Professional Plan" msgid "%s Plan" msgstr "%s プラン" -#: includes/i18n.php:183 +#: includes/i18n.php:91 msgid "You are just one step away - %s" msgstr "もうあとわずかです - %s" -#: includes/i18n.php:185 +#: includes/i18n.php:92 msgctxt "%s - plugin name. As complete \"Jetpack\" activation now" msgid "Complete \"%s\" Activation Now" msgstr "すぐに \"%s\" 有効化を完了してください" -#: includes/i18n.php:189 +#: includes/i18n.php:94 msgid "We made a few tweaks to the plugin, %s" msgstr "プラグインを微調整します, %s" -#: includes/i18n.php:191 +#: includes/i18n.php:95 msgid "Opt-in to make \"%s\" Better!" msgstr "\"%s\" をより良くするためにオプトインしてください!" -#: includes/i18n.php:193 +#: includes/i18n.php:96 msgid "Error" msgstr "エラー" -#: includes/i18n.php:195 -msgid "" -"Freemius SDK couldn't find the plugin's main file. Please contact " -"sdk@freemius.com with the current error." +#: includes/i18n.php:97 +msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." msgstr "Freemius SDK がプラグインのメインファイルを見つけることができませんでした。現在のエラーを添えて sdk@freemius.com に連絡してください。" -#: includes/i18n.php:203 +#: includes/i18n.php:100 msgctxt "as expiration date" msgid "Expiration" msgstr "期限切れ" -#: includes/i18n.php:205 +#: includes/i18n.php:101 msgctxt "as software license" msgid "License" msgstr "ライセンス" -#: includes/i18n.php:207 +#: includes/i18n.php:102 msgid "not verified" msgstr "未認証" -#: includes/i18n.php:209 +#: includes/i18n.php:103 msgid "Verify Email" msgstr "認証メール" -#: includes/i18n.php:211 +#: includes/i18n.php:104 msgctxt "e.g. expires in 2 months" msgid "Expires in %s" msgstr "%s で期間終了" -#: includes/i18n.php:213 +#: includes/i18n.php:105 msgctxt "e.g. auto renews in 2 months" msgid "Auto renews in %s" msgstr "%s に自動更新" -#: includes/i18n.php:215 +#: includes/i18n.php:106 msgid "No expiration" msgstr "有効期限なし" -#: includes/i18n.php:217 +#: includes/i18n.php:107 msgid "Expired" msgstr "期限切れ" -#: includes/i18n.php:219 +#: includes/i18n.php:108 msgid "Cancelled" msgstr "キャンセル" -#: includes/i18n.php:221 +#: includes/i18n.php:109 msgctxt "e.g. In 2 hours" msgid "In %s" msgstr "%s 内" -#: includes/i18n.php:223 +#: includes/i18n.php:110 msgctxt "e.g. 2 min ago" msgid "%s ago" msgstr "%s 前" -#: includes/i18n.php:225 +#: includes/i18n.php:112 +msgid "%s or higher" +msgstr "%s or higher" + +#: includes/i18n.php:113 msgctxt "as plugin version" msgid "Version" msgstr "バージョン" -#: includes/i18n.php:227 +#: includes/i18n.php:114 msgid "Name" msgstr "名前" -#: includes/i18n.php:229 +#: includes/i18n.php:115 msgid "Email" msgstr "Email" -#: includes/i18n.php:231 +#: includes/i18n.php:116 msgid "Email address" msgstr "メールアドレス" -#: includes/i18n.php:233 +#: includes/i18n.php:117 msgid "Verified" msgstr "認証済み" -#: includes/i18n.php:235 +#: includes/i18n.php:118 +msgid "Module" +msgstr "Module" + +#: includes/i18n.php:119 +msgid "Module Type" +msgstr "Module Type" + +#: includes/i18n.php:120 msgid "Plugin" msgstr "プラグイン" -#: includes/i18n.php:237 +#: includes/i18n.php:121 msgid "Plugins" msgstr "プラグイン" -#: includes/i18n.php:239 +#: includes/i18n.php:122 +msgid "Theme" +msgstr "Theme" + +#: includes/i18n.php:123 msgid "Themes" msgstr "テーマ" -#: includes/i18n.php:241 +#: includes/i18n.php:124 msgctxt "as file/folder path" msgid "Path" msgstr "パス" -#: includes/i18n.php:243 +#: includes/i18n.php:125 msgid "Title" msgstr "タイトル" -#: includes/i18n.php:245 +#: includes/i18n.php:126 msgid "Free version" msgstr "フリーバージョン" -#: includes/i18n.php:247 +#: includes/i18n.php:127 msgid "Premium version" msgstr "プレミアムバージョン" -#: includes/i18n.php:249 +#: includes/i18n.php:128 msgctxt "as WP plugin slug" msgid "Slug" msgstr "スラッグ" -#: includes/i18n.php:251 +#: includes/i18n.php:129 msgid "ID" msgstr "ID" -#: includes/i18n.php:253 +#: includes/i18n.php:130 msgid "Users" msgstr "ユーザー" -#: includes/i18n.php:255 +#: includes/i18n.php:131 msgid "Plugin Installs" msgstr "プラグインインストール数" -#: includes/i18n.php:257 +#: includes/i18n.php:132 +msgid "%s Installs" +msgstr "%s Installs" + +#: includes/i18n.php:133 msgctxt "like websites" msgid "Sites" msgstr "サイト数" -#: includes/i18n.php:259 +#: includes/i18n.php:134 msgid "User ID" msgstr "ユーザー ID" -#: includes/i18n.php:261 +#: includes/i18n.php:135 msgid "Site ID" msgstr "サイト ID" -#: includes/i18n.php:263 +#: includes/i18n.php:136 msgid "Public Key" msgstr "公開鍵" -#: includes/i18n.php:265 +#: includes/i18n.php:137 msgid "Secret Key" msgstr "秘密鍵" -#: includes/i18n.php:267 +#: includes/i18n.php:138 msgctxt "as secret encryption key missing" msgid "No Secret" msgstr "秘密鍵がありません" -#: includes/i18n.php:269 +#: includes/i18n.php:139 msgid "No ID" msgstr "ID がありません" -#: includes/i18n.php:271 +#: includes/i18n.php:140 msgctxt "as synchronize license" msgid "Sync License" msgstr "ライセンスを同期" -#: includes/i18n.php:273 +#: includes/i18n.php:141 msgctxt "as synchronize" msgid "Sync" msgstr "同期" -#: includes/i18n.php:275 +#: includes/i18n.php:142 msgid "Activate License" msgstr "ライセンスを有効化" -#: includes/i18n.php:277 +#: includes/i18n.php:143 msgid "Activate Free Version" msgstr "フリーバージョンを有効化" -#: includes/i18n.php:279 -msgid "" -"Please enter the license key that you received in the email right after the " -"purchase:" +#: includes/i18n.php:144 +msgid "Please enter the license key that you received in the email right after the purchase:" msgstr "購入後すぐにメールで受け取ったライセンスキーを入力してください:" -#: includes/i18n.php:283 +#: includes/i18n.php:145 msgid "Activating license..." msgstr "ライセンスを有効化中…" -#: includes/i18n.php:285 +#: includes/i18n.php:146 msgid "Change License" msgstr "ライセンスを変更" -#: includes/i18n.php:287 +#: includes/i18n.php:147 msgid "Update License" msgstr "ライセンスを更新" -#: includes/i18n.php:289 +#: includes/i18n.php:148 msgid "Deactivate License" msgstr "ライセンスを無効化" -#: includes/i18n.php:291 +#: includes/i18n.php:149 msgid "Activate" msgstr "有効化" -#: includes/i18n.php:293 +#: includes/i18n.php:150 msgid "Deactivate" msgstr "無効化" -#: includes/i18n.php:295 +#: includes/i18n.php:151 msgid "Skip & Deactivate" msgstr "スキップし、無効化" -#: includes/i18n.php:297 +#: includes/i18n.php:152 +msgid "Skip & %s" +msgstr "Skip & %s" + +#: includes/i18n.php:153 msgid "No - just deactivate" msgstr "いいえ - すぐに無効化" -#: includes/i18n.php:299 +#: includes/i18n.php:154 msgid "Yes - do your thing" msgstr "はい - お構いなく" -#: includes/i18n.php:301 +#: includes/i18n.php:155 msgctxt "active mode" msgid "Active" msgstr "有効" -#: includes/i18n.php:303 +#: includes/i18n.php:156 msgctxt "is active mode?" msgid "Is Active" msgstr "有効" -#: includes/i18n.php:305 +#: includes/i18n.php:157 msgid "Install Now" msgstr "今すぐインストール" -#: includes/i18n.php:307 +#: includes/i18n.php:158 msgid "Install Update Now" msgstr "今すぐ更新をインストール" -#: includes/i18n.php:309 +#: includes/i18n.php:159 msgid "More information about %s" msgstr "%s に関する詳細情報" -#: includes/i18n.php:311 +#: includes/i18n.php:160 msgid "Localhost" msgstr "localhost" -#: includes/i18n.php:313 +#: includes/i18n.php:161 msgctxt "as activate Professional plan" msgid "Activate %s Plan" msgstr "%s プランを有効化" -#: includes/i18n.php:315 +#: includes/i18n.php:162 msgctxt "as 5 licenses left" msgid "%s left" msgstr "あと %s" -#: includes/i18n.php:317 +#: includes/i18n.php:163 msgid "Last license" msgstr "最新のライセンス" -#: includes/i18n.php:319 +#: includes/i18n.php:164 msgid "What is your %s?" msgstr "自分の %s はなんですか?" -#: includes/i18n.php:321 +#: includes/i18n.php:165 msgid "Activate this add-on" msgstr "このアドオンを有効化" -#: includes/i18n.php:323 -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?" +#: includes/i18n.php:166 +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?" msgstr "ライセンスを無効化するとすべてのプレミアム機能が使えなくなりますが、他のサイトでライセンスを有効にすることができるようになります。本当に実行しますか?" -#: includes/i18n.php:327 -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?" +#: includes/i18n.php:167 +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?" msgstr "アカウントを削除すると自動的に %s プランライセンスが無効になり、他のサイトで使うことができます。定期の支払いも終了したい場合は、\"キャンセル\"ボタンをクリックし、まずアカウントを\"ダウングレード\"してください。本当に削除を続行してもいいですか?" -#: includes/i18n.php:331 -msgid "" -"Deletion is not temporary. Only delete if you no longer want to use this " -"plugin anymore. Are you sure you would like to continue with the deletion?" +#: includes/i18n.php:168 +msgid "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?" msgstr "削除は一時的なものではありません。このプラグインを今後使いたくない場合にだけ削除してください。本当に削除を続行してもいいですか?" -#: includes/i18n.php:335 -msgid "" -"Downgrading your plan will immediately stop all future recurring payments " -"and your %s plan license will expire in %s." +#: includes/i18n.php:169 +msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." msgstr "プランをダウングレードするとすぐに将来の定期の支払いはすべて停止し、%s プランライセンスは %s で期限切れとなります。" -#: includes/i18n.php:339 -msgid "" -"Cancelling the trial will immediately block access to all premium features. " -"Are you sure?" +#: includes/i18n.php:170 +msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?" msgstr "トライアルをキャンセルするとすぐにすべてのプレミアム機能へのアクセスができなくなります。本当に実行しますか?" -#: includes/i18n.php:343 -msgid "" -"You can still enjoy all %s features but you will not have access to plugin " -"updates and support." +#: includes/i18n.php:171 +msgid "You can still enjoy all %s features but you will not have access to plugin updates and support." msgstr "すべての %s 機能をまだ楽しむことができますが、プラグインの更新とサポートにアクセスすることはできなくなります。" -#: includes/i18n.php:347 -msgid "" -"Once your license expire you can still use the Free version but you will NOT" -" have access to the %s features." -msgstr "ライセンスが期限切れになるとフリーバージョンを使うことはできますが、%s 機能にアクセスすることはできなくなります。" +#: includes/i18n.php:172 +msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features." +msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features." -#: includes/i18n.php:351 +#: includes/i18n.php:173 msgid "Are you sure you want to proceed?" msgstr "本当に続行していいですか?" -#: includes/i18n.php:357 +#: includes/i18n.php:176 msgid "Add Ons for %s" msgstr "%s のアドオン" -#: includes/i18n.php:359 -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." +#: includes/i18n.php:177 +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." msgstr "アドオンリストを読み込むことができませんでした。おそらく運営側の問題になりますので、しばらくしてからお試しください。" -#: includes/i18n.php:365 +#: includes/i18n.php:179 msgid "Anonymous feedback" msgstr "匿名のフィードバック" -#: includes/i18n.php:367 +#: includes/i18n.php:180 msgid "Quick feedback" msgstr "クイックフィードバック" -#: includes/i18n.php:369 +#: includes/i18n.php:181 msgid "If you have a moment, please let us know why you are deactivating" msgstr "お時間があれば、なぜ無効化するのか理由を教えてください。" -#: includes/i18n.php:373 +#: includes/i18n.php:182 msgid "Yes - Deactivate" msgstr "はい - 無効化します" -#: includes/i18n.php:375 +#: includes/i18n.php:183 msgid "Submit & Deactivate" msgstr "送信し無効化" -#: includes/i18n.php:377 +#: includes/i18n.php:184 msgid "Cancel" msgstr "キャンセル" -#: includes/i18n.php:379 +#: includes/i18n.php:185 msgid "I no longer need the plugin" msgstr "もうプラグインを必要としていません" -#: includes/i18n.php:381 +#: includes/i18n.php:186 msgid "I found a better plugin" msgstr "もっと良いプラグインを見つけました" -#: includes/i18n.php:383 +#: includes/i18n.php:187 msgid "I only needed the plugin for a short period" msgstr "短期間プラグインを必要としていただけです" -#: includes/i18n.php:385 +#: includes/i18n.php:188 msgid "The plugin broke my site" msgstr "プラグインのせいでサイトが壊れました" -#: includes/i18n.php:387 +#: includes/i18n.php:189 msgid "The plugin suddenly stopped working" msgstr "プラグインはすぐに動かなくなりました" -#: includes/i18n.php:389 +#: includes/i18n.php:190 msgid "I can't pay for it anymore" msgstr "もう払うことができません" -#: includes/i18n.php:391 +#: includes/i18n.php:191 msgid "It's a temporary deactivation. I'm just debugging an issue." msgstr "一時的な無効化です。問題をデバッグしているだけです。" -#: includes/i18n.php:395 +#: includes/i18n.php:192 msgctxt "" -"the text of the \"other\" reason for deactivating the plugin that is shown " -"in the modal box." msgid "Other" msgstr "その他" -#: includes/i18n.php:399 +#: includes/i18n.php:194 msgid "Kindly tell us the reason so we can improve." msgstr "改善できるよう、どうか理由を教えてください。" -#: includes/i18n.php:401 +#: includes/i18n.php:195 msgid "What's the plugin's name?" msgstr "プラグイン名は何ですか?" -#: includes/i18n.php:403 +#: includes/i18n.php:196 msgid "What price would you feel comfortable paying?" msgstr " 支払ってもよいと思う価格はいくらですか?" -#: includes/i18n.php:405 +#: includes/i18n.php:197 msgid "I couldn't understand how to make it work" msgstr "どうしたら動作するか分かりませんでした。" -#: includes/i18n.php:407 -msgid "" -"The plugin is great, but I need specific feature that you don't support" +#: includes/i18n.php:198 +msgid "The plugin is great, but I need specific feature that you don't support" msgstr "プラグインは素晴らしいけれど、サポートしていないある機能を必要としています" -#: includes/i18n.php:411 +#: includes/i18n.php:199 msgid "The plugin is not working" msgstr "プラグインが動いていません" -#: includes/i18n.php:413 +#: includes/i18n.php:200 msgid "It's not what I was looking for" msgstr "探していたものではありません" -#: includes/i18n.php:415 +#: includes/i18n.php:201 msgid "The plugin didn't work as expected" msgstr "プラグインは期待通りには動きませんでした" -#: includes/i18n.php:417 +#: includes/i18n.php:202 msgid "What feature?" msgstr "何の機能ですか?" -#: includes/i18n.php:419 +#: includes/i18n.php:203 msgid "Kindly share what didn't work so we can fix it for future users..." msgstr "将来のユーザーのために修正できるよう、何が動作しなかったのかどうか共有してください…" -#: includes/i18n.php:423 +#: includes/i18n.php:204 msgid "What you've been looking for?" msgstr "探していたのは何ですか?" -#: includes/i18n.php:425 +#: includes/i18n.php:205 msgid "What did you expect?" msgstr "何を期待していましたか?" -#: includes/i18n.php:427 +#: includes/i18n.php:206 msgid "The plugin didn't work" msgstr "プラグインが動作しませんでした" -#: includes/i18n.php:429 +#: includes/i18n.php:207 msgid "I don't like to share my information with you" msgstr "自分の情報を共有したくありません" -#: includes/i18n.php:431 -msgid "" -"You might have missed it, but you don't have to share any data and can just " -"%s the opt-in." +#: includes/i18n.php:208 +msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in." msgstr "見逃していたかもしれませんが、どんな情報も共有する必要はなく、オプトインを $s することができます。 " -#: includes/i18n.php:441 +#: includes/i18n.php:212 msgctxt "greeting" msgid "Hey %s," msgstr "おおい %s さん、" -#: includes/i18n.php:443 +#: includes/i18n.php:213 msgctxt "a greeting. E.g. Thanks John!" msgid "Thanks %s!" msgstr "ありがとう $s さん!" -#: includes/i18n.php:445 -msgid "" -"Never miss an important update - opt-in to our security and feature updates " -"notifications, and non-sensitive diagnostic tracking with %4$s." +#: includes/i18n.php:214 +msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." msgstr "重要な更新を逃さないように - セキュリティとおすすめの更新通知、%4$s とセンシティブではない診断トラッキングをオプトイン" -#: includes/i18n.php:449 -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." +#: includes/i18n.php:215 +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." msgstr "%1$s を改善するのを手伝ってください。オプトインすれば、あなたの %1$s の使用に関するデータが %4$s へと送られます。これをスキップしても大丈夫です! %1$s は今でも素晴らしいでしょう。" -#: includes/i18n.php:453 -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." +#: includes/i18n.php:216 +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." msgstr "%s のメールボックスに %s の有効化のメールを受け取っているはずです。%s のメールに記載された有効化ボタンをクリックしてください。" -#: includes/i18n.php:455 +#: includes/i18n.php:217 msgid "complete the install" msgstr "インストールを完了" -#: includes/i18n.php:457 +#: includes/i18n.php:218 msgid "start the trial" msgstr "トライアルを開始" -#: includes/i18n.php:459 -msgid "" -"Thanks for purchasing %s! To get started, please enter your license key:" +#: includes/i18n.php:219 +msgid "Thanks for purchasing %s! To get started, please enter your license key:" msgstr "%s を購入いただきありがとうございます。はじめにライセンスキーを入力してください:" -#: includes/i18n.php:463 -msgid "" -"The plugin will be periodically sending data to %s to check for plugin " -"updates and verify the validity of your license." +#: includes/i18n.php:220 +msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license." msgstr "プラグインはプラグインの更新をチェックし、ライセンスが有効か確認するために、%s に周期的にデータを送信します。" -#: includes/i18n.php:467 +#: includes/i18n.php:221 msgid "What permissions are being granted?" msgstr "付与されているパーミッションは何ですか?" -#: includes/i18n.php:469 +#: includes/i18n.php:222 msgid "Your Profile Overview" msgstr "プロフィール概要" -#: includes/i18n.php:471 +#: includes/i18n.php:223 msgid "Name and email address" msgstr "名前とメールアドレス" -#: includes/i18n.php:473 +#: includes/i18n.php:224 msgid "Your Site Overview" msgstr "サイト概要" -#: includes/i18n.php:475 +#: includes/i18n.php:225 msgid "Site URL, WP version, PHP info, plugins & themes" msgstr "サイト URL、WP バージョン、PHP info、プラグインとテーマ" -#: includes/i18n.php:479 +#: includes/i18n.php:226 msgid "Current Plugin Events" msgstr "現在のプラグインイベント" -#: includes/i18n.php:481 +#: includes/i18n.php:227 msgid "Activation, deactivation and uninstall" msgstr "有効化、無効化、アンインストール" -#: includes/i18n.php:483 +#: includes/i18n.php:228 msgid "Plugins & Themes" msgstr "プラグインとテーマ" -#: includes/i18n.php:485 +#: includes/i18n.php:229 msgid "Titles, versions and state." msgstr "タイトル、バージョン、状態" -#: includes/i18n.php:487 +#: includes/i18n.php:230 msgid "Admin Notices" msgstr "管理者通知" -#: includes/i18n.php:489 +#: includes/i18n.php:231 msgid "Newsletter" msgstr "ニュースレター" -#: includes/i18n.php:491 +#: includes/i18n.php:232 msgid "Updates, announcements, marketing, no spam" msgstr "更新、発表、マーケティング、スパムなし" -#: includes/i18n.php:493 +#: includes/i18n.php:233 msgid "Privacy Policy" msgstr "プライバシーポリシー" -#: includes/i18n.php:495 +#: includes/i18n.php:234 msgid "Terms of Service" msgstr "利用規約" -#: includes/i18n.php:497 +#: includes/i18n.php:235 msgctxt "as activating plugin" msgid "Activating" msgstr "有効化中" -#: includes/i18n.php:499 +#: includes/i18n.php:236 msgctxt "as in the process of sending an email" msgid "Sending email" msgstr "メール送信中" -#: includes/i18n.php:503 +#: includes/i18n.php:237 msgctxt "button label" msgid "Allow & Continue" msgstr "許可して続ける" -#: includes/i18n.php:505 +#: includes/i18n.php:238 msgctxt "button label" msgid "Agree & Activate License" msgstr "同意してライセンスを有効化" -#: includes/i18n.php:507 +#: includes/i18n.php:239 msgctxt "verb" msgid "Skip" msgstr "スキップ" -#: includes/i18n.php:509 +#: includes/i18n.php:240 msgid "Click here to use the plugin anonymously" msgstr "匿名でプラグインを使用するにはこちらをクリック" -#: includes/i18n.php:511 +#: includes/i18n.php:241 msgid "Re-send activation email" msgstr "有効化メールを再送信" -#: includes/i18n.php:513 +#: includes/i18n.php:242 msgid "License key" msgstr "ライセンスキー" -#: includes/i18n.php:515 +#: includes/i18n.php:243 msgid "Send License Key" msgstr "ライセンスキーを送信" -#: includes/i18n.php:517 +#: includes/i18n.php:244 msgid "Sending license key" msgstr "ライセンスキーを送信中" -#: includes/i18n.php:519 +#: includes/i18n.php:245 msgid "Have a license key?" msgstr "ライセンスキーはお持ちですか?" -#: includes/i18n.php:521 +#: includes/i18n.php:246 msgid "Don't have a license key?" msgstr "ライセンスキーをお持ちではありませんか?" -#: includes/i18n.php:523 +#: includes/i18n.php:247 msgid "Can't find your license key?" msgstr "ライセンスキーは見つかりませんか?" -#: includes/i18n.php:525 -msgid "" -"We couldn't find your email address in the system, are you sure it's the " -"right address?" +#: includes/i18n.php:248 +msgid "We couldn't find your email address in the system, are you sure it's the right address?" msgstr "システムではメールアドレスを見つけることができませんでした。メールアドレスが正しいか確認してください。" -#: includes/i18n.php:529 -msgid "" -"We can't see any active licenses associated with that email address, are you" -" sure it's the right address?" +#: includes/i18n.php:249 +msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" msgstr "メールアドレスに関連付けられた有効なライセンスが見つかりません。メールアドレスが正しいか確認してください。" -#: includes/i18n.php:533 +#: includes/i18n.php:250 msgid "Opt In" msgstr "オプトイン" -#: includes/i18n.php:535 +#: includes/i18n.php:251 msgid "Opt Out" msgstr "オプトアウト" -#: includes/i18n.php:537 +#: includes/i18n.php:252 msgid "On second thought - I want to continue helping" msgstr "第二の考えで - 手伝い続けたいです" -#: includes/i18n.php:541 +#: includes/i18n.php:253 msgid "Opting out..." msgstr "オプトアウト中…" -#: includes/i18n.php:543 +#: includes/i18n.php:254 msgid "Opting in..." msgstr "オプトイン中…" -#: includes/i18n.php:545 -msgid "" -"We appreciate your help in making the %s better by letting us track some " -"usage data." +#: includes/i18n.php:255 +msgid "We appreciate your help in making the %s better by letting us track some usage data." msgstr "使用データを追跡できるよう許可してくれたことで、%s をより良くするための手助けに感謝致します。" -#: includes/i18n.php:549 -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." +#: includes/i18n.php:256 +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." msgstr "使用の追跡は %s をより良くする名目の下に行われています。ユーザー体験をより良くし、新機能に優先順位をつけるためなどに使います。追跡を続けてもよいと再考してくれるなら本当に感謝致します。" -#: includes/i18n.php:553 -msgid "" -"By clicking \"Opt Out\", we will no longer be sending any data from %s to " -"%s." +#: includes/i18n.php:257 +msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." msgstr "\"オプトアウト\"をクリックすることで、もう %s から %s へのデータの送信は行いません。" -#: includes/i18n.php:563 +#: includes/i18n.php:261 msgid "Screenshots" msgstr "スクリーンショット" -#: includes/i18n.php:565 +#: includes/i18n.php:262 msgid "Click to view full-size screenshot %d" msgstr "クリックしてフルサイズのスクリーンショットを見る %d" -#: includes/i18n.php:573 +#: includes/i18n.php:266 msgid "Freemius Debug" msgstr "Freemius デバッグ" -#: includes/i18n.php:575 +#: includes/i18n.php:267 msgctxt "as turned on" msgid "On" msgstr "オン" -#: includes/i18n.php:577 +#: includes/i18n.php:268 msgctxt "as turned off" msgid "Off" msgstr "オフ" -#: includes/i18n.php:579 +#: includes/i18n.php:269 msgctxt "as code debugging" msgid "Debugging" msgstr "デバッグ" -#: includes/i18n.php:581 +#: includes/i18n.php:270 msgid "Freemius State" msgstr "Freemius ステータス" -#: includes/i18n.php:583 +#: includes/i18n.php:271 msgctxt "as connection was successful" msgid "Connected" msgstr "接続" -#: includes/i18n.php:585 +#: includes/i18n.php:272 msgctxt "as connection blocked" msgid "Blocked" msgstr "ブロック" -#: includes/i18n.php:587 +#: includes/i18n.php:273 msgctxt "as application program interface" msgid "API" msgstr "API" -#: includes/i18n.php:589 +#: includes/i18n.php:274 msgctxt "as software development kit versions" msgid "SDK" msgstr "SDK" -#: includes/i18n.php:591 +#: includes/i18n.php:275 msgctxt "as software development kit versions" msgid "SDK Versions" msgstr "SDK バージョン" -#: includes/i18n.php:595 +#: includes/i18n.php:276 msgctxt "as plugin folder path" msgid "Plugin Path" msgstr "プラグインのパス" -#: includes/i18n.php:597 +#: includes/i18n.php:277 msgctxt "as sdk path" msgid "SDK Path" msgstr "SDK のパス" -#: includes/i18n.php:599 +#: includes/i18n.php:278 msgid "Add Ons of Plugin %s" msgstr "プラグインのアドオン %s" -#: includes/i18n.php:601 +#: includes/i18n.php:279 msgid "Are you sure you want to delete all Freemius data?" msgstr "ほんとうに全ての Freemius データを削除しますか?" -#: includes/i18n.php:605 +#: includes/i18n.php:280 msgid "Actions" msgstr "アクション" -#: includes/i18n.php:607 +#: includes/i18n.php:281 msgid "Delete All Accounts" msgstr "全てのアカウントを削除" -#: includes/i18n.php:609 +#: includes/i18n.php:282 msgid "Start Fresh" msgstr "初期化を開始" -#: includes/i18n.php:611 +#: includes/i18n.php:283 msgid "Clear API Cache" msgstr "API キャッシュをクリア" -#: includes/i18n.php:613 +#: includes/i18n.php:284 msgid "Sync Data From Server" msgstr "サーバーからのデータを同期" -#: includes/i18n.php:615 +#: includes/i18n.php:285 msgid "Scheduled Crons" msgstr "スケジュール Cron" -#: includes/i18n.php:617 +#: includes/i18n.php:286 +msgid "Cron Type" +msgstr "Cron Type" + +#: includes/i18n.php:287 msgid "Plugins & Themes Sync" msgstr "プラグインとテーマを同期" -#: includes/i18n.php:625 +#: includes/i18n.php:288 +msgid "Licenses" +msgstr "Licenses" + +#: includes/i18n.php:289 +msgid "Debug Log" +msgstr "Debug Log" + +#: includes/i18n.php:290 +msgid "All" +msgstr "All" + +#: includes/i18n.php:291 +msgid "File" +msgstr "File" + +#: includes/i18n.php:292 +msgid "Function" +msgstr "Function" + +#: includes/i18n.php:293 +msgid "Process ID" +msgstr "Process ID" + +#: includes/i18n.php:294 +msgid "Logger" +msgstr "Logger" + +#: includes/i18n.php:295 +msgid "Message" +msgstr "Message" + +#: includes/i18n.php:296 +msgid "Download" +msgstr "Download" + +#: includes/i18n.php:297 +msgid "Filter" +msgstr "Filter" + +#: includes/i18n.php:298 +msgid "Type" +msgstr "Type" + +#: includes/i18n.php:299 +msgid "All Types" +msgstr "All Types" + +#: includes/i18n.php:300 +msgid "All Requests" +msgstr "All Requests" + +#: includes/i18n.php:304 msgctxt "as congratulations" msgid "Congrats" msgstr "おめでとう" -#: includes/i18n.php:627 +#: includes/i18n.php:305 msgctxt "exclamation" msgid "Oops" msgstr "おっと" -#: includes/i18n.php:629 +#: includes/i18n.php:306 msgctxt "interjection expressing joy or exuberance" msgid "Yee-haw" msgstr "ヤッホー" -#: includes/i18n.php:633 +#: includes/i18n.php:307 msgctxt "" -"(especially in electronic communication) used to express elation, " -"enthusiasm, or triumph." msgid "W00t" msgstr "やったー" -#: includes/i18n.php:637 +#: includes/i18n.php:309 msgctxt "a positive response" msgid "Right on" msgstr "そうだ" -#: includes/i18n.php:639 +#: includes/i18n.php:310 msgctxt "" -"something somebody says when they are thinking about what you have just " -"said. " msgid "Hmm" msgstr "ふむ" -#: includes/i18n.php:643 +#: includes/i18n.php:312 msgid "O.K" msgstr "O.K" -#: includes/i18n.php:645 +#: includes/i18n.php:313 msgctxt "exclamation" msgid "Hey" msgstr "ヘイ" -#: includes/i18n.php:647 +#: includes/i18n.php:314 msgctxt "advance notice of something that will need attention." msgid "Heads up" msgstr "警告" -#: includes/i18n.php:657 +#: includes/i18n.php:319 msgid "Seems like you got the latest release." msgstr "最新版を取得できました。" -#: includes/i18n.php:659 +#: includes/i18n.php:320 msgid "You are all good!" msgstr "すべて完璧です!" -#: includes/i18n.php:661 -msgid "" -"Sorry, we could not complete the email update. Another user with the same " -"email is already registered." +#: includes/i18n.php:321 +msgid "Sorry, we could not complete the email update. Another user with the same email is already registered." msgstr "メールアドレスのアップデートを完了できませんでした。他のユーザーがすでに同じメールアドレスで登録しているようです。" -#: includes/i18n.php:665 -msgid "" -"If you would like to give up the ownership of the plugin's account to %s " -"click the Change Ownership button." +#: includes/i18n.php:322 +msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button." msgstr "もし%s にプラグインの所有権を譲りたいなら、所有権を変更ボタンをクリックしてください。" -#: includes/i18n.php:669 -msgid "" -"Your email was successfully updated. You should receive an email with " -"confirmation instructions in few moments." +#: includes/i18n.php:323 +msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." msgstr "メールアドレスのアップデートが完了しました。まもなく確認メールが届きます。" -#: includes/i18n.php:673 +#: includes/i18n.php:324 msgid "Your name was successfully updated." msgstr "名前のアップデートが成功しました。" -#: includes/i18n.php:675 +#: includes/i18n.php:325 msgid "You have successfully updated your %s." msgstr "%s のアップデートが成功しました。" -#: includes/i18n.php:677 +#: includes/i18n.php:326 msgid "Please provide your full name." msgstr "フルネームを入力してください。" -#: includes/i18n.php:679 -msgid "" -"Verification mail was just sent to %s. If you can't find it after 5 min, " -"please check your spam box." +#: includes/i18n.php:327 +msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." msgstr "%s に確認メールを送信しました。もし5分以内にそれが届かない場合、迷惑メールボックスを確認してください。" -#: includes/i18n.php:683 -msgid "" -"Just letting you know that the add-ons information of %s is being pulled " -"from an external server." +#: includes/i18n.php:328 +msgid "Just letting you know that the add-ons information of %s is being pulled from an external server." msgstr "%s のアドオンに関する情報は、外部サーバーから取得されます。" -#: includes/i18n.php:687 +#: includes/i18n.php:329 msgid "No credit card required" msgstr "クレジットカードは必要ありません。" -#: includes/i18n.php:689 +#: includes/i18n.php:330 msgid "Premium plugin version was successfully activated." msgstr "プレミアムプラグインのバージョンの有効化に成功しました。" -#: includes/i18n.php:693 +#: includes/i18n.php:331 msgid "The upgrade of %s was successfully completed." msgstr "%s のアップグレードが完了しました。" -#: includes/i18n.php:695 +#: includes/i18n.php:332 msgid "Your account was successfully activated with the %s plan." msgstr "アカウントが %s プランで有効化できました。" -#: includes/i18n.php:699 +#: includes/i18n.php:333 msgid "Download the latest %s version now" msgstr "%s の最新版をダウンロードする" -#: includes/i18n.php:701 +#: includes/i18n.php:334 msgid "Please follow these steps to complete the upgrade" msgstr "アップグレードを完了するには以下の手順を完了させてください。" -#: includes/i18n.php:705 +#: includes/i18n.php:335 msgid "Download the latest %s version" msgstr "最新の %s をダウンロード" -#: includes/i18n.php:707 +#: includes/i18n.php:336 msgid "Download the latest version" msgstr "最新版をダウンロード" -#: includes/i18n.php:709 +#: includes/i18n.php:337 msgid "Deactivate the free version" msgstr "無料バージョンを無効化" -#: includes/i18n.php:711 +#: includes/i18n.php:338 msgid "Upload and activate the downloaded version" msgstr "ダウンロードしたバージョンをアップロードして有効化" -#: includes/i18n.php:713 +#: includes/i18n.php:339 msgid "How to upload and activate?" msgstr "アップロードと有効化の方法" -#: includes/i18n.php:715 +#: includes/i18n.php:340 msgctxt "%s - product name, e.g. Facebook add-on was successfully..." msgid "%s Add-on was successfully purchased." msgstr "%s のアドオンの支払いが完了しました。" -#: includes/i18n.php:719 +#: includes/i18n.php:342 msgid "Your %s Add-on plan was successfully upgraded." msgstr "%s のアドオンのプランのアップグレードが完了しました。" -#: includes/i18n.php:723 +#: includes/i18n.php:343 msgid "Your email has been successfully verified - you are AWESOME!" msgstr "あなたのメールアドレスの承認が完了しました。すごい!" -#: includes/i18n.php:727 +#: includes/i18n.php:344 msgid "Your plan was successfully upgraded." msgstr "プランのアップグレードが成功しました。" -#: includes/i18n.php:729 +#: includes/i18n.php:345 msgid "Your plan was successfully changed to %s." msgstr "プランの %s への変更が成功しました。" -#: includes/i18n.php:731 -msgid "" -"Your license has expired. You can still continue using the free plugin " -"forever." +#: includes/i18n.php:346 +msgid "Your license has expired. You can still continue using the free plugin forever." msgstr "ライセンスの有効期限が切れました。無料バージョンの利用を継続することができます。" -#: includes/i18n.php:735 -msgid "" -"Your license has been cancelled. If you think it's a mistake, please contact" -" support." +#: includes/i18n.php:347 +msgid "Your license has been cancelled. If you think it's a mistake, please contact support." msgstr "ライセンスはキャンセルされました。もしそれが間違いだと思うならサポートに連絡してください。" -#: includes/i18n.php:739 +#: includes/i18n.php:348 msgid "Your trial has been successfully started." msgstr "トライアル版の利用を開始しました。" -#: includes/i18n.php:741 +#: includes/i18n.php:349 msgid "Your license was successfully activated." msgstr "ライセンスの有効化が成功しました。" -#: includes/i18n.php:743 +#: includes/i18n.php:350 msgid "It looks like your site currently doesn't have an active license." msgstr "サイトは有効なライセンスを持っていないようです。" -#: includes/i18n.php:747 -msgid "" -"Your license was successfully deactivated, you are back to the %s plan." +#: includes/i18n.php:351 +msgid "Your license was successfully deactivated, you are back to the %s plan." msgstr "ライセンスの無効化が完了しました。%s プランに戻りました。" -#: includes/i18n.php:751 +#: includes/i18n.php:352 msgid "It looks like the license deactivation failed." msgstr "ライセンスの無効化ができませんでした。" -#: includes/i18n.php:755 +#: includes/i18n.php:353 msgid "It looks like the license could not be activated." msgstr "ライセンスの有効化ができませんでした。" -#: includes/i18n.php:759 +#: includes/i18n.php:354 msgid "Error received from the server:" msgstr "サーバーからエラーを受信しました。" -#: includes/i18n.php:761 -msgid "" -"Your trial has expired. You can still continue using all our free features." +#: includes/i18n.php:355 +msgid "Your trial has expired. You can still continue using all our free features." msgstr "トライアルの有効期限が切れました。引き続き無料の機能の利用を続けることができます。" -#: includes/i18n.php:765 -msgid "" -"Your plan was successfully downgraded. Your %s plan license will expire in " -"%s." +#: includes/i18n.php:356 +msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s." msgstr "プランのダウングレードが完了しました。%s プランは %s に有効期限が切れます。" -#: includes/i18n.php:769 -msgid "" -"Seems like we are having some temporary issue with your plan downgrade. " -"Please try again in few minutes." +#: includes/i18n.php:357 +msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." msgstr "プランのダウングレードの際に一時的な問題が発生したようです。数分後に再度操作してください。" -#: includes/i18n.php:773 -msgid "" -"It looks like you are not in trial mode anymore so there's nothing to cancel" -" :)" +#: includes/i18n.php:358 +msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)" msgstr "すでにトライアルモードではないようなので、キャンセルする必要はありません :)" -#: includes/i18n.php:777 +#: includes/i18n.php:359 msgid "Your %s free trial was successfully cancelled." msgstr "%s のフリートライアルはキャンセルされました。" -#: includes/i18n.php:781 +#: includes/i18n.php:360 msgctxt "%s - numeric version number" msgid "Version %s was released." msgstr "バージョン %s をリリースしました。" -#: includes/i18n.php:785 +#: includes/i18n.php:361 msgid "Please download %s." msgstr "%s をダウンロードしてください。" -#: includes/i18n.php:787 +#: includes/i18n.php:362 msgctxt "%s - plan name, as the latest professional version here" msgid "the latest %s version here" msgstr "最新の %s バージョンはこちらです。" -#: includes/i18n.php:791 -msgid "" -"How do you like %s so far? Test all our %s premium features with a %d-day " -"free trial." +#: includes/i18n.php:364 +msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial." msgstr "%s はどうですか? 私たちの全ての %s のプレミアム機能をお試しください。" -#: includes/i18n.php:795 +#: includes/i18n.php:365 msgctxt "call to action" msgid "Start free trial" msgstr "フリートライアルを開始" -#: includes/i18n.php:797 +#: includes/i18n.php:366 msgid "Starting trial" msgstr "トライアルを開始" -#: includes/i18n.php:799 +#: includes/i18n.php:367 msgid "Please wait" msgstr "お待ちください" -#: includes/i18n.php:801 -msgid "" -"Seems like we are having some temporary issue with your trial cancellation. " -"Please try again in few minutes." +#: includes/i18n.php:368 +msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." msgstr "トライアルのキャンセルに一時的な問題がありました。数分後に再度お試しください。" -#: includes/i18n.php:805 +#: includes/i18n.php:369 msgid "You already utilized a trial before." msgstr "以前すでに試用版を利用しました。" -#: includes/i18n.php:807 +#: includes/i18n.php:370 msgid "You are already running the plugin in a trial mode." msgstr "すでにトライアル版のプラグインを利用しています。" -#: includes/i18n.php:811 +#: includes/i18n.php:371 msgid "Plan %s do not exist, therefore, can't start a trial." msgstr "%s プランは存在しないため、試用を開始できません。" -#: includes/i18n.php:815 +#: includes/i18n.php:372 msgid "Plan %s does not support a trial period." msgstr "%s プランにはトライアル期間はありません。" -#: includes/i18n.php:817 +#: includes/i18n.php:373 msgid "None of the plugin's plans supports a trial period." msgstr "トライアル期間をサポートしているプランのプラグインはありません。" -#: includes/i18n.php:821 -msgid "" -"Unexpected API error. Please contact the plugin's author with the following " -"error." +#: includes/i18n.php:374 +msgid "Unexpected API error. Please contact the plugin's author with the following error." msgstr "予期しない API のエラー。プラグイン開発者に連絡をとってください。" -#: includes/i18n.php:825 +#: includes/i18n.php:375 msgid "No commitment for %s days - cancel anytime!" msgstr "%s 日以内であればいつでもキャンセルできます。" -#: includes/i18n.php:827 -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." +#: includes/i18n.php:376 +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." msgstr "ライセンスは有効期限がきれました。%s の機能を引き続き利用することができます。ただし、アップデートやサポートをうけるにはライセンスをアップデートする必要があります。" -#: includes/i18n.php:831 +#: includes/i18n.php:377 msgid "Couldn't activate %s." msgstr "%s を有効化できません。" -#: includes/i18n.php:833 +#: includes/i18n.php:378 msgid "Please contact us with the following message:" msgstr "以下のメッセージとともに私たちに連絡をください。" -#: includes/i18n.php:835 -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." +#: includes/i18n.php:379 +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." msgstr "まだ %s プランのようです。もしアップグレードやプランの変更をしたのなら、こちらで何らかの問題が発生しているようです。申し訳ありません。" -#: includes/i18n.php:839 +#: includes/i18n.php:380 msgid "Please contact us here" msgstr "こちらで私たちに連絡をとってください。" -#: includes/i18n.php:841 -msgid "" -"I have upgraded my account but when I try to Sync the License, the plan " -"remains %s." +#: includes/i18n.php:381 +msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s." msgstr "アカウントをアップグレードしましたが、ライセンスを同期しようとするとプランが %s のままです。" -#: includes/i18n.php:849 +#: includes/i18n.php:384 msgid "From unknown reason, the API connectivity test failed." msgstr "不明のエラーにより、API 接続ができませんでした。" -#: includes/i18n.php:853 -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?" +#: includes/i18n.php:385 +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?" msgstr "それは私たちの一時的な問題のようです。もし許可していただけるなら他の接続テストをしてもよいですか?" -#: includes/i18n.php:857 -msgid "" -"We use PHP cURL library for the API calls, which is a very common library " -"and usually installed out of the box. Unfortunately, cURL is not installed " -"on your server." -msgstr "私たちは、API コールに PHP の cURL ライブラリを使用しています。これは一般的なライブラリで多くの場合インストールされていますが、あなたのサーバーにはインストールされていないようです。" +#: includes/i18n.php:386 +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." +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." -#: includes/i18n.php:861 -msgid "" -"From unknown reason, CloudFlare, the firewall we use, blocks the connection." +#: includes/i18n.php:387 +msgid "Disabled method(s):" +msgstr "Disabled method(s):" + +#: includes/i18n.php:388 +msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection." msgstr "不明のエラーにより私たちが使用している CloudFlare のファイヤーウォールが接続を拒否したようです。" -#: includes/i18n.php:865 +#: includes/i18n.php:389 msgctxt "as pluginX requires an access to our API" msgid "%s requires an access to our API." msgstr "%s は、私たちの API への接続が必要です。" -#: includes/i18n.php:869 -msgid "" -"It looks like your server is using Squid ACL (access control lists), which " -"blocks the connection." +#: includes/i18n.php:391 +msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection." msgstr "サーバーは Squid ACL(Access control lists) を使用しているらしく、それが接続をブロックしています。" -#: includes/i18n.php:873 +#: includes/i18n.php:392 msgid "I don't know what is Squid or ACL, help me!" msgstr "Squid ACL について知りません。助けてください!" -#: includes/i18n.php875, includes/i18n.php:889 -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." +#: includes/i18n.php393, includes/i18n.php:397 +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." msgstr "ホスティング会社に連絡して問題を解決してください。 更新が完了したら、 %s へのフォローアップメールが届きます。" -#: includes/i18n.php:879 +#: includes/i18n.php:394 msgid "I'm a system administrator" msgstr "私はシステム管理者です" -#: includes/i18n.php:881 -msgid "" -"Great, please whitelist the following domains: %s. Once you done, deactivate" -" the plugin and activate it again." -msgstr "以下のドメインを許可してください: %s 。それが完了したらそのプラグインを無効化して有効化してください。" +#: includes/i18n.php:395 +msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again." +msgstr "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again." -#: includes/i18n.php:885 +#: includes/i18n.php:396 msgid "I don't know what is cURL or how to install it, help me!" msgstr "cURL がなにか、そのインストール方法を知りません。助けてください。" -#: includes/i18n.php:893 -msgid "" -"Great, please install cURL and enable it in your php.ini file. To make sure " -"it was successfully activated, use 'phpinfo()'. Once activated, deactivate " -"the plugin and reactivate it back again." -msgstr "cURLをインストールし、php.iniファイルで有効にしてください。 正常に起動されたことを確認するには、 'phpinfo()' を使用してください。 プラグインを有効化したら、プラグインを無効化して再度有効化し直してください。" +#: includes/i18n.php:398 +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 plugin and reactivate it back again." +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 plugin and reactivate it back again." -#: includes/i18n.php:897 -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." +#: includes/i18n.php:399 +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." msgstr "それは私たちの側の問題だと確信しています。もし機会をくれるなら私たちはそれを一刻でも早く修正します。" -#: includes/i18n.php:901 -msgid "" -"Sorry for the inconvenience and we are here to help if you give us a chance." +#: includes/i18n.php:400 +msgid "Sorry for the inconvenience and we are here to help if you give us a chance." msgstr "ご迷惑をおかけしてすいません。もし機会をいただけたらお手伝いをします。" -#: includes/i18n.php:905 +#: includes/i18n.php:401 msgid "Yes - I'm giving you a chance to fix it" msgstr "はい、修正をお願いします。" -#: includes/i18n.php:907 -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." +#: includes/i18n.php:402 +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." msgstr "私たちは、少しでも早くサーバーをホワイトリストに登録して問題を修正します。アップデートを行ったら、%s あてに報告を送信します。" -#: includes/i18n.php:911 +#: includes/i18n.php:403 msgid "Let's try your previous version" msgstr "以前のバージョンでお試しください。" -#: includes/i18n.php:913 +#: includes/i18n.php:404 msgid "Uninstall this version and install the previous one." msgstr "このバージョンをアンインストールして、以前のバージョンをインストールする。" -#: includes/i18n.php:917 +#: includes/i18n.php:405 msgid "That's exhausting, please deactivate" msgstr "それは、使用できません。無効化してください。" -#: includes/i18n.php:919 -msgid "" -"We feel your frustration and sincerely apologize for the inconvenience. Hope" -" to see you again in the future." +#: includes/i18n.php:406 +msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future." msgstr "ご迷惑をおかけして心からお詫び申し上げます。将来ふたたびお会いできることを楽しみにしています。" -#: includes/i18n.php:923 -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." +#: includes/i18n.php:407 +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." msgstr "修正するチャンスをいただきありがとうございます! テクニカルスタッフにメッセージが送信されました。 %s への更新が行われるとすぐにあなたに連絡します。 あなたの忍耐に感謝します。" -#: includes/i18n.php:927 +#: includes/i18n.php:408 msgctxt "%1s - plugin title, %2s - API domain" -msgid "" -"Your server is blocking the access to Freemius' API, which is crucial for " -"%1s synchronization. Please contact your host to whitelist %2s" +msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" msgstr "サーバーは %1s の同期に不可欠な Freemius の API へのアクセスをブロックしています。 ホワイトリストに %2s を追加していただけるようあなたのホスティング会社に連絡してください。" -#: includes/i18n.php:931 -msgid "" -"It seems like one of the authentication parameters is wrong. Update your " -"Public Key, Secret Key & User ID, and try again." +#: includes/i18n.php:410 +msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." msgstr "認証パラメータの1つが間違っているようです。 公開鍵、秘密鍵、ユーザーIDを更新して、もう一度お試しください。" -#: includes/i18n.php:939 -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." +#: includes/i18n.php:413 +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." msgstr "メールボックスを確認してください。所有権の変更を確認するには、%s でメールを受け取る必要があります。 セキュリティ上の理由から、次の15分以内に変更を確認する必要があります。 電子メールが見つからない場合は、迷惑メールフォルダを確認してください。" -#: includes/i18n.php:943 -msgid "" -"Thanks for confirming the ownership change. An email was just sent to %s for" -" final approval." +#: includes/i18n.php:414 +msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval." msgstr "所有権の変更を確認していただきありがとうございます。 %s に承認メールが送信されました。" -#: includes/i18n.php:947 +#: includes/i18n.php:415 msgid "%s is the new owner of the account." msgstr "%s は新しいオーナーです。" -#: includes/i18n.php:951 +#: includes/i18n.php:417 msgctxt "addonX cannot run without pluginY" msgid "%s cannot run without %s." msgstr "%s は、%s が無いと実行することができません。" -#: includes/i18n.php:955 +#: includes/i18n.php:419 msgctxt "addonX cannot run..." msgid "%s cannot run without the plugin." msgstr "%s は、プラグインが無いと実行することができません。" -#: includes/i18n.php:959 +#: includes/i18n.php:420 msgctxt "pluginX activation was successfully..." msgid "%s activation was successfully completed." msgstr "%s の有効化が成功しました。" -#: includes/i18n.php:963 +#: includes/i18n.php:422 msgctxt "Plugin installer section title" msgid "Features & Pricing" msgstr "機能 & 料金" -#: includes/i18n.php:967 +#: includes/i18n.php:423 msgid "Add-on must be deployed to WordPress.org or Freemius." msgstr "アドオンが WordPress.org か Freemius にデプロイされている必要があります。" -#: includes/i18n.php:971 +#: includes/i18n.php:424 msgid "Paid add-on must be deployed to Freemius." msgstr "有料アドオンは Freemius にデプロイされている必要があります。" -#: includes/i18n.php:979 -msgid "" -"%s is a premium only add-on. You have to purchase a license first before " -"activating the plugin." +#: includes/i18n.php:428 +msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin." msgstr "%s はプレミアムのみのアドオンです。そのプラグインを有効化する前にライセンスを購入する必要があります。" -#: includes/i18n.php:983 -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." +#: includes/i18n.php:429 +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." msgstr "%s の無料試用が正常にキャンセルされました。 アドオンはプレミアムなので、自動的に無効化されました。 将来使用したい場合は、ライセンスを購入する必要があります。" -#: includes/i18n.php:995 +#: includes/i18n.php:434 msgctxt "as every month" msgid "Monthly" msgstr "月" -#: includes/i18n.php:997 +#: includes/i18n.php:435 msgctxt "as monthly period" msgid "mo" msgstr "月" -#: includes/i18n.php:999 +#: includes/i18n.php:436 msgctxt "as once a year" msgid "Annual" msgstr "年次" -#: includes/i18n.php:1001 +#: includes/i18n.php:437 msgctxt "as once a year" msgid "Annually" msgstr "毎年" -#: includes/i18n.php:1003 +#: includes/i18n.php:438 msgctxt "as once a year" msgid "Once" msgstr "一度" -#: includes/i18n.php:1005 +#: includes/i18n.php:439 msgctxt "as annual period" msgid "year" msgstr "年" -#: includes/i18n.php:1007 +#: includes/i18n.php:440 msgid "Lifetime" msgstr "ライフタイム" -#: includes/i18n.php:1009 +#: includes/i18n.php:441 msgctxt "e.g. the best product" msgid "Best" msgstr "ベスト" -#: includes/i18n.php:1011 +#: includes/i18n.php:442 msgctxt "e.g. billed monthly" msgid "Billed %s" msgstr "%s への請求" -#: includes/i18n.php:1013 +#: includes/i18n.php:443 msgctxt "as a discount of $5 or 10%" msgid "Save %s" msgstr "%s を保存" -#: includes/i18n.php:1017 +#: includes/i18n.php:445 msgid "View details" msgstr "詳細を表示" -#: includes/i18n.php:1025 +#: includes/i18n.php:449 msgctxt "button label" msgid "Approve & Start Trial" msgstr "気に入ったのでトライアルを開始" -#: includes/i18n.php:1029 -msgid "" -"You are 1-click away from starting your %1$s-day free trial of the %2$s " -"plan." +#: includes/i18n.php:451 +msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." msgstr "%2$s プランの%1$s日間のフリートライアルを開始するまであとワンクリックです。" -#: includes/i18n.php:1033 -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 plugin to periodically send data to %s to check for version " -"updates and to validate your trial." +#: includes/i18n.php:453 +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 plugin to periodically send data to %s to check for version updates and to validate your trial." msgstr "WordPress.org ガイドラインの遵守のため、ユーザーとセンシティブでないサイト情報をオプトインすること、バージョンの更新確認のために %s へとプラグインが一時的にデータを送信することの許可、トライアルを有効にすることの3つについて、トライアルの開始前にお尋ねします。" -#: includes/i18n.php:1045 +#: includes/i18n.php:459 msgid "Business name" msgstr "商号" -#: includes/i18n.php:1047 +#: includes/i18n.php:460 msgid "Tax / VAT ID" msgstr "税金 / VAT ID" -#: includes/i18n.php:1049 +#: includes/i18n.php:461 msgid "Address Line %d" msgstr "住所欄 %d" -#: includes/i18n.php:1051 +#: includes/i18n.php:462 msgid "Country" msgstr "国" -#: includes/i18n.php:1053 +#: includes/i18n.php:463 msgid "Select Country" msgstr "国を選択" -#: includes/i18n.php:1055 +#: includes/i18n.php:464 msgid "City" msgstr "市" -#: includes/i18n.php:1057 +#: includes/i18n.php:465 msgid "Town" msgstr "町" -#: includes/i18n.php:1059 +#: includes/i18n.php:466 msgid "State" msgstr "州" -#: includes/i18n.php:1061 +#: includes/i18n.php:467 msgid "Province" msgstr "県・州・省" -#: includes/i18n.php:1063 +#: includes/i18n.php:468 msgid "ZIP / Postal Code" msgstr "ZIP / 郵便番号" + +#: includes/i18n.php:473 +msgid "Installing plugin: %s" +msgstr "Installing plugin: %s" + +#: includes/i18n.php:474 +msgid "Automatic Installation" +msgstr "Automatic Installation" + +#: includes/i18n.php:476 +msgid "%s sec" +msgstr "%s sec" + +#: includes/i18n.php:477 +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." +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." + +#: includes/i18n.php:478 +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." +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." + +#: includes/i18n.php:479 +msgid "Cancel Installation" +msgstr "Cancel Installation" + +#: includes/i18n.php:480 +msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work." +msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work." + +#: includes/i18n.php:481 +msgid "Invalid module ID." +msgstr "Invalid module ID." + +#: includes/i18n.php:482 +msgid "Auto installation only works for opted-in users." +msgstr "Auto installation only works for opted-in users." + +#: includes/i18n.php:483 +msgid "Premium version already active." +msgstr "Premium version already active." + +#: includes/i18n.php:484 +msgid "Premium add-on version already installed." +msgstr "Premium add-on version already installed." + +#: includes/i18n.php:485 +msgid "You do not have a valid license to access the premium version." +msgstr "You do not have a valid license to access the premium version." + +#: includes/i18n.php:486 +msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version." +msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version." + +#: includes/i18n.php:501 +msgctxt "Plugin installer section title" +msgid "Description" +msgstr "Description" + +#: includes/i18n.php:502 +msgctxt "Plugin installer section title" +msgid "Installation" +msgstr "Installation" + +#: includes/i18n.php:503 +msgctxt "Plugin installer section title" +msgid "FAQ" +msgstr "FAQ" + +#: includes/i18n.php:504 +msgctxt "Plugin installer section title" +msgid "Changelog" +msgstr "Changelog" + +#: includes/i18n.php:505 +msgctxt "Plugin installer section title" +msgid "Reviews" +msgstr "Reviews" + +#: includes/i18n.php:506 +msgctxt "Plugin installer section title" +msgid "Other Notes" +msgstr "Other Notes" + +#: includes/i18n.php:508 +msgid "%s star" +msgstr "%s star" + +#: includes/i18n.php:510 +msgid "%s stars" +msgstr "%s stars" + +#: includes/i18n.php:512 +msgid "%s rating" +msgstr "%s rating" + +#: includes/i18n.php:514 +msgid "%s ratings" +msgstr "%s ratings" + +#: includes/i18n.php:516 +msgid "%s time" +msgstr "%s time" + +#: includes/i18n.php:518 +msgid "%s times" +msgstr "%s times" + +#: includes/i18n.php:520 +msgid "Click to see reviews that provided a rating of %s" +msgstr "Click to see reviews that provided a rating of %s" + +#: includes/i18n.php:521 +msgid "Last Updated" +msgstr "Last Updated" + +#: includes/i18n.php:522 +msgid "Requires WordPress Version:" +msgstr "Requires WordPress Version:" + +#: includes/i18n.php:523 +msgctxt "as the plugin author" +msgid "Author:" +msgstr "Author:" + +#: includes/i18n.php:524 +msgid "Compatible up to:" +msgstr "Compatible up to:" + +#: includes/i18n.php:525 +msgid "Downloaded:" +msgstr "Downloaded:" + +#: includes/i18n.php:526 +msgid "WordPress.org Plugin Page" +msgstr "WordPress.org Plugin Page" + +#: includes/i18n.php:527 +msgid "Plugin Homepage" +msgstr "Plugin Homepage" + +#: includes/i18n.php:528 +msgid "Donate to this plugin" +msgstr "Donate to this plugin" + +#: includes/i18n.php:529 +msgid "Average Rating" +msgstr "Average Rating" + +#: includes/i18n.php:530 +msgid "based on %s" +msgstr "based on %s" + +#: includes/i18n.php:531 +msgid "Warning:" +msgstr "Warning:" + +#: includes/i18n.php:532 +msgid "Contributors" +msgstr "Contributors" + +#: includes/i18n.php:533 +msgid "Plugin Install" +msgstr "Plugin Install" + +#: includes/i18n.php:534 +msgid "This plugin has not been tested with your current version of WordPress." +msgstr "This plugin has not been tested with your current version of WordPress." + +#: includes/i18n.php:535 +msgid "This plugin has not been marked as compatible with your version of WordPress." +msgstr "This plugin has not been marked as compatible with your version of WordPress." + +#: includes/i18n.php:536 +msgid "Newer Version (%s) Installed" +msgstr "Newer Version (%s) Installed" + +#: includes/i18n.php:537 +msgid "Latest Version Installed" +msgstr "Latest Version Installed" diff --git a/languages/freemius.pot b/languages/freemius.pot index 969a6560a..d04cb29c1 100644 --- a/languages/freemius.pot +++ b/languages/freemius.pot @@ -77,1648 +77,1709 @@ msgid "Downgrade" msgstr "" #: includes/i18n.php:51 -msgid "Cancel Trial" +msgctxt "verb" +msgid "Cancel Subscription" msgstr "" #: includes/i18n.php:52 -msgid "Free Trial" +msgid "Cancel Trial" msgstr "" #: includes/i18n.php:53 -msgid "Start my free %s" +msgid "Free Trial" msgstr "" #: includes/i18n.php:54 -msgid "No commitment for %s - cancel anytime" +msgid "Start my free %s" msgstr "" #: includes/i18n.php:55 -msgid "After your free %s, pay as little as %s" +msgid "No commitment for %s - cancel anytime" msgstr "" #: includes/i18n.php:56 -msgid "Details" +msgid "After your free %s, pay as little as %s" msgstr "" #: includes/i18n.php:57 -msgid "Account Details" +msgid "Details" msgstr "" #: includes/i18n.php:58 +msgid "Account Details" +msgstr "" + +#: includes/i18n.php:59 msgctxt "verb" msgid "Delete" msgstr "" -#: includes/i18n.php:59 +#: includes/i18n.php:60 msgctxt "verb" msgid "Show" msgstr "" -#: includes/i18n.php:60 +#: includes/i18n.php:61 msgctxt "verb" msgid "Hide" msgstr "" -#: includes/i18n.php:61 +#: includes/i18n.php:62 msgctxt "verb" msgid "Edit" msgstr "" -#: includes/i18n.php:62 +#: includes/i18n.php:63 msgctxt "verb" msgid "Update" msgstr "" -#: includes/i18n.php:63 +#: includes/i18n.php:64 msgid "Date" msgstr "" -#: includes/i18n.php:64 +#: includes/i18n.php:65 msgid "Amount" msgstr "" -#: includes/i18n.php:65 +#: includes/i18n.php:66 msgid "Invoice" msgstr "" -#: includes/i18n.php:66 +#: includes/i18n.php:67 msgid "Billing" msgstr "" -#: includes/i18n.php:67 +#: includes/i18n.php:68 msgid "Payments" msgstr "" -#: includes/i18n.php:68 +#: includes/i18n.php:69 msgid "Delete Account" msgstr "" -#: includes/i18n.php:69 +#: includes/i18n.php:70 msgctxt "as close a window" msgid "Dismiss" msgstr "" -#: includes/i18n.php:70 +#: includes/i18n.php:71 msgctxt "as product pricing plan" msgid "Plan" msgstr "" -#: includes/i18n.php:71 +#: includes/i18n.php:72 msgid "Change Plan" msgstr "" -#: includes/i18n.php:72 +#: includes/i18n.php:73 msgctxt "as download professional version" msgid "Download %s Version" msgstr "" -#: includes/i18n.php:73 +#: includes/i18n.php:74 msgctxt "as download professional version now" msgid "Download %s version now" msgstr "" -#: includes/i18n.php:74 +#: includes/i18n.php:75 msgctxt "as download latest version" msgid "Download Latest" msgstr "" -#: includes/i18n.php:75 +#: includes/i18n.php:76 msgctxt "E.g. you have a professional license." msgid "You have a %s license." msgstr "" -#: includes/i18n.php:76 +#: includes/i18n.php:77 msgid "New" msgstr "" -#: includes/i18n.php:77 +#: includes/i18n.php:78 msgid "Free" msgstr "" -#: includes/i18n.php:78 +#: includes/i18n.php:79 msgctxt "as trial plan" msgid "Trial" msgstr "" -#: includes/i18n.php:79 +#: includes/i18n.php:80 msgctxt "as starting a trial plan" msgid "Start Trial" msgstr "" -#: includes/i18n.php:80 +#: includes/i18n.php:81 msgctxt "verb" msgid "Purchase" msgstr "" -#: includes/i18n.php:81 +#: includes/i18n.php:82 msgid "Purchase License" msgstr "" -#: includes/i18n.php:82 +#: includes/i18n.php:83 msgctxt "verb" msgid "Buy" msgstr "" -#: includes/i18n.php:83 +#: includes/i18n.php:84 msgid "Buy License" msgstr "" -#: includes/i18n.php:84 +#: includes/i18n.php:85 msgid "Single Site License" msgstr "" -#: includes/i18n.php:85 +#: includes/i18n.php:86 msgid "Unlimited Licenses" msgstr "" -#: includes/i18n.php:86 +#: includes/i18n.php:87 msgid "Up to %s Sites" msgstr "" -#: includes/i18n.php:87 +#: includes/i18n.php:88 msgid "%sRenew your license now%s to access version %s features and support." msgstr "" -#: includes/i18n.php:88 +#: includes/i18n.php:89 msgid "Enter the email address you've used for the upgrade below and we will resend you the license key." msgstr "" -#: includes/i18n.php:89 +#: includes/i18n.php:90 msgctxt "e.g. Professional Plan" msgid "%s Plan" msgstr "" -#: includes/i18n.php:90 +#: includes/i18n.php:91 msgid "You are just one step away - %s" msgstr "" -#: includes/i18n.php:91 +#: includes/i18n.php:92 msgctxt "%s - plugin name. As complete \"Jetpack\" activation now" msgid "Complete \"%s\" Activation Now" msgstr "" -#: includes/i18n.php:93 +#: includes/i18n.php:94 msgid "We made a few tweaks to the plugin, %s" msgstr "" -#: includes/i18n.php:94 +#: includes/i18n.php:95 msgid "Opt-in to make \"%s\" Better!" msgstr "" -#: includes/i18n.php:95 +#: includes/i18n.php:96 msgid "Error" msgstr "" -#: includes/i18n.php:96 +#: includes/i18n.php:97 msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." msgstr "" -#: includes/i18n.php:99 +#: includes/i18n.php:100 msgctxt "as expiration date" msgid "Expiration" msgstr "" -#: includes/i18n.php:100 +#: includes/i18n.php:101 msgctxt "as software license" msgid "License" msgstr "" -#: includes/i18n.php:101 +#: includes/i18n.php:102 msgid "not verified" msgstr "" -#: includes/i18n.php:102 +#: includes/i18n.php:103 msgid "Verify Email" msgstr "" -#: includes/i18n.php:103 +#: includes/i18n.php:104 msgctxt "e.g. expires in 2 months" msgid "Expires in %s" msgstr "" -#: includes/i18n.php:104 +#: includes/i18n.php:105 msgctxt "e.g. auto renews in 2 months" msgid "Auto renews in %s" msgstr "" -#: includes/i18n.php:105 +#: includes/i18n.php:106 msgid "No expiration" msgstr "" -#: includes/i18n.php:106 +#: includes/i18n.php:107 msgid "Expired" msgstr "" -#: includes/i18n.php:107 +#: includes/i18n.php:108 msgid "Cancelled" msgstr "" -#: includes/i18n.php:108 +#: includes/i18n.php:109 msgctxt "e.g. In 2 hours" msgid "In %s" msgstr "" -#: includes/i18n.php:109 +#: includes/i18n.php:110 msgctxt "e.g. 2 min ago" msgid "%s ago" msgstr "" -#: includes/i18n.php:111 +#: includes/i18n.php:112 msgid "%s or higher" msgstr "" -#: includes/i18n.php:112 +#: includes/i18n.php:113 msgctxt "as plugin version" msgid "Version" msgstr "" -#: includes/i18n.php:113 +#: includes/i18n.php:114 msgid "Name" msgstr "" -#: includes/i18n.php:114 +#: includes/i18n.php:115 msgid "Email" msgstr "" -#: includes/i18n.php:115 +#: includes/i18n.php:116 msgid "Email address" msgstr "" -#: includes/i18n.php:116 +#: includes/i18n.php:117 msgid "Verified" msgstr "" -#: includes/i18n.php:117 +#: includes/i18n.php:118 msgid "Module" msgstr "" -#: includes/i18n.php:118 +#: includes/i18n.php:119 msgid "Module Type" msgstr "" -#: includes/i18n.php:119 +#: includes/i18n.php:120 msgid "Plugin" msgstr "" -#: includes/i18n.php:120 +#: includes/i18n.php:121 msgid "Plugins" msgstr "" -#: includes/i18n.php:121 +#: includes/i18n.php:122 msgid "Theme" msgstr "" -#: includes/i18n.php:122 +#: includes/i18n.php:123 msgid "Themes" msgstr "" -#: includes/i18n.php:123 +#: includes/i18n.php:124 msgctxt "as file/folder path" msgid "Path" msgstr "" -#: includes/i18n.php:124 +#: includes/i18n.php:125 msgid "Title" msgstr "" -#: includes/i18n.php:125 +#: includes/i18n.php:126 msgid "Free version" msgstr "" -#: includes/i18n.php:126 +#: includes/i18n.php:127 msgid "Premium version" msgstr "" -#: includes/i18n.php:127 +#: includes/i18n.php:128 msgctxt "as WP plugin slug" msgid "Slug" msgstr "" -#: includes/i18n.php:128 +#: includes/i18n.php:129 msgid "ID" msgstr "" -#: includes/i18n.php:129 +#: includes/i18n.php:130 msgid "Users" msgstr "" -#: includes/i18n.php:130 +#: includes/i18n.php:131 msgid "Plugin Installs" msgstr "" -#: includes/i18n.php:131 +#: includes/i18n.php:132 msgid "%s Installs" msgstr "" -#: includes/i18n.php:132 +#: includes/i18n.php:133 msgctxt "like websites" msgid "Sites" msgstr "" -#: includes/i18n.php:133 +#: includes/i18n.php:134 msgid "User ID" msgstr "" -#: includes/i18n.php:134 +#: includes/i18n.php:135 msgid "Site ID" msgstr "" -#: includes/i18n.php:135 +#: includes/i18n.php:136 msgid "Public Key" msgstr "" -#: includes/i18n.php:136 +#: includes/i18n.php:137 msgid "Secret Key" msgstr "" -#: includes/i18n.php:137 +#: includes/i18n.php:138 msgctxt "as secret encryption key missing" msgid "No Secret" msgstr "" -#: includes/i18n.php:138 +#: includes/i18n.php:139 msgid "No ID" msgstr "" -#: includes/i18n.php:139 +#: includes/i18n.php:140 msgctxt "as synchronize license" msgid "Sync License" msgstr "" -#: includes/i18n.php:140 +#: includes/i18n.php:141 msgctxt "as synchronize" msgid "Sync" msgstr "" -#: includes/i18n.php:141 +#: includes/i18n.php:142 msgid "Activate License" msgstr "" -#: includes/i18n.php:142 +#: includes/i18n.php:143 msgid "Activate Free Version" msgstr "" -#: includes/i18n.php:143 +#: includes/i18n.php:144 msgid "Please enter the license key that you received in the email right after the purchase:" msgstr "" -#: includes/i18n.php:144 +#: includes/i18n.php:145 msgid "Activating license..." msgstr "" -#: includes/i18n.php:145 +#: includes/i18n.php:146 msgid "Change License" msgstr "" -#: includes/i18n.php:146 +#: includes/i18n.php:147 msgid "Update License" msgstr "" -#: includes/i18n.php:147 +#: includes/i18n.php:148 msgid "Deactivate License" msgstr "" -#: includes/i18n.php:148 +#: includes/i18n.php:149 msgid "Activate" msgstr "" -#: includes/i18n.php:149 +#: includes/i18n.php:150 msgid "Deactivate" msgstr "" -#: includes/i18n.php:150 +#: includes/i18n.php:151 msgid "Skip & Deactivate" msgstr "" -#: includes/i18n.php:151 +#: includes/i18n.php:152 msgid "Skip & %s" msgstr "" -#: includes/i18n.php:152 +#: includes/i18n.php:153 msgid "No - just deactivate" msgstr "" -#: includes/i18n.php:153 +#: includes/i18n.php:154 msgid "Yes - do your thing" msgstr "" -#: includes/i18n.php:154 +#: includes/i18n.php:155 msgctxt "active mode" msgid "Active" msgstr "" -#: includes/i18n.php:155 +#: includes/i18n.php:156 msgctxt "is active mode?" msgid "Is Active" msgstr "" -#: includes/i18n.php:156 +#: includes/i18n.php:157 msgid "Install Now" msgstr "" -#: includes/i18n.php:157 +#: includes/i18n.php:158 msgid "Install Update Now" msgstr "" -#: includes/i18n.php:158 +#: includes/i18n.php:159 msgid "More information about %s" msgstr "" -#: includes/i18n.php:159 +#: includes/i18n.php:160 msgid "Localhost" msgstr "" -#: includes/i18n.php:160 +#: includes/i18n.php:161 msgctxt "as activate Professional plan" msgid "Activate %s Plan" msgstr "" -#: includes/i18n.php:161 +#: includes/i18n.php:162 msgctxt "as 5 licenses left" msgid "%s left" msgstr "" -#: includes/i18n.php:162 +#: includes/i18n.php:163 msgid "Last license" msgstr "" -#: includes/i18n.php:163 +#: includes/i18n.php:164 msgid "What is your %s?" msgstr "" -#: includes/i18n.php:164 +#: includes/i18n.php:165 msgid "Activate this add-on" msgstr "" -#: includes/i18n.php:165 +#: includes/i18n.php:166 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?" msgstr "" -#: includes/i18n.php:166 +#: includes/i18n.php:167 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?" msgstr "" -#: includes/i18n.php:167 +#: includes/i18n.php:168 msgid "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?" msgstr "" -#: includes/i18n.php:168 +#: includes/i18n.php:169 msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." msgstr "" -#: includes/i18n.php:169 +#: includes/i18n.php:170 msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?" msgstr "" -#: includes/i18n.php:170 +#: includes/i18n.php:171 msgid "You can still enjoy all %s features but you will not have access to plugin updates and support." msgstr "" -#: includes/i18n.php:171 +#: includes/i18n.php:172 msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features." msgstr "" -#: includes/i18n.php:172 +#: includes/i18n.php:173 msgid "Are you sure you want to proceed?" msgstr "" -#: includes/i18n.php:175 +#: includes/i18n.php:176 msgid "Add Ons for %s" msgstr "" -#: includes/i18n.php:176 +#: includes/i18n.php:177 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." msgstr "" -#: includes/i18n.php:178 +#: includes/i18n.php:179 msgid "Anonymous feedback" msgstr "" -#: includes/i18n.php:179 +#: includes/i18n.php:180 msgid "Quick feedback" msgstr "" -#: includes/i18n.php:180 +#: includes/i18n.php:181 msgid "If you have a moment, please let us know why you are deactivating" msgstr "" -#: includes/i18n.php:181 +#: includes/i18n.php:182 msgid "Yes - Deactivate" msgstr "" -#: includes/i18n.php:182 +#: includes/i18n.php:183 msgid "Submit & Deactivate" msgstr "" -#: includes/i18n.php:183 +#: includes/i18n.php:184 msgid "Cancel" msgstr "" -#: includes/i18n.php:184 +#: includes/i18n.php:185 msgid "I no longer need the plugin" msgstr "" -#: includes/i18n.php:185 +#: includes/i18n.php:186 msgid "I found a better plugin" msgstr "" -#: includes/i18n.php:186 +#: includes/i18n.php:187 msgid "I only needed the plugin for a short period" msgstr "" -#: includes/i18n.php:187 +#: includes/i18n.php:188 msgid "The plugin broke my site" msgstr "" -#: includes/i18n.php:188 +#: includes/i18n.php:189 msgid "The plugin suddenly stopped working" msgstr "" -#: includes/i18n.php:189 +#: includes/i18n.php:190 msgid "I can't pay for it anymore" msgstr "" -#: includes/i18n.php:190 +#: includes/i18n.php:191 msgid "It's a temporary deactivation. I'm just debugging an issue." msgstr "" -#: includes/i18n.php:191 +#: includes/i18n.php:192 msgctxt "the text of the \"other\" reason for deactivating the plugin that is shown in the modal box." msgid "Other" msgstr "" -#: includes/i18n.php:193 +#: includes/i18n.php:194 msgid "Kindly tell us the reason so we can improve." msgstr "" -#: includes/i18n.php:194 +#: includes/i18n.php:195 msgid "What's the plugin's name?" msgstr "" -#: includes/i18n.php:195 +#: includes/i18n.php:196 msgid "What price would you feel comfortable paying?" msgstr "" -#: includes/i18n.php:196 +#: includes/i18n.php:197 msgid "I couldn't understand how to make it work" msgstr "" -#: includes/i18n.php:197 +#: includes/i18n.php:198 msgid "The plugin is great, but I need specific feature that you don't support" msgstr "" -#: includes/i18n.php:198 +#: includes/i18n.php:199 msgid "The plugin is not working" msgstr "" -#: includes/i18n.php:199 +#: includes/i18n.php:200 msgid "It's not what I was looking for" msgstr "" -#: includes/i18n.php:200 +#: includes/i18n.php:201 msgid "The plugin didn't work as expected" msgstr "" -#: includes/i18n.php:201 +#: includes/i18n.php:202 msgid "What feature?" msgstr "" -#: includes/i18n.php:202 +#: includes/i18n.php:203 msgid "Kindly share what didn't work so we can fix it for future users..." msgstr "" -#: includes/i18n.php:203 +#: includes/i18n.php:204 msgid "What you've been looking for?" msgstr "" -#: includes/i18n.php:204 +#: includes/i18n.php:205 msgid "What did you expect?" msgstr "" -#: includes/i18n.php:205 +#: includes/i18n.php:206 msgid "The plugin didn't work" msgstr "" -#: includes/i18n.php:206 +#: includes/i18n.php:207 msgid "I don't like to share my information with you" msgstr "" -#: includes/i18n.php:207 +#: includes/i18n.php:208 msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in." msgstr "" -#: includes/i18n.php:211 +#: includes/i18n.php:212 msgctxt "greeting" msgid "Hey %s," msgstr "" -#: includes/i18n.php:212 +#: includes/i18n.php:213 msgctxt "a greeting. E.g. Thanks John!" msgid "Thanks %s!" msgstr "" -#: includes/i18n.php:213 +#: includes/i18n.php:214 msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." msgstr "" -#: includes/i18n.php:214 +#: includes/i18n.php:215 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." msgstr "" -#: includes/i18n.php:215 +#: includes/i18n.php:216 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." msgstr "" -#: includes/i18n.php:216 +#: includes/i18n.php:217 msgid "complete the install" msgstr "" -#: includes/i18n.php:217 +#: includes/i18n.php:218 msgid "start the trial" msgstr "" -#: includes/i18n.php:218 +#: includes/i18n.php:219 msgid "Thanks for purchasing %s! To get started, please enter your license key:" msgstr "" -#: includes/i18n.php:219 +#: includes/i18n.php:220 msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license." msgstr "" -#: includes/i18n.php:220 +#: includes/i18n.php:221 msgid "What permissions are being granted?" msgstr "" -#: includes/i18n.php:221 +#: includes/i18n.php:222 msgid "Your Profile Overview" msgstr "" -#: includes/i18n.php:222 +#: includes/i18n.php:223 msgid "Name and email address" msgstr "" -#: includes/i18n.php:223 +#: includes/i18n.php:224 msgid "Your Site Overview" msgstr "" -#: includes/i18n.php:224 +#: includes/i18n.php:225 msgid "Site URL, WP version, PHP info, plugins & themes" msgstr "" -#: includes/i18n.php:225 +#: includes/i18n.php:226 msgid "Current Plugin Events" msgstr "" -#: includes/i18n.php:226 +#: includes/i18n.php:227 msgid "Activation, deactivation and uninstall" msgstr "" -#: includes/i18n.php:227 +#: includes/i18n.php:228 msgid "Plugins & Themes" msgstr "" -#: includes/i18n.php:228 +#: includes/i18n.php:229 msgid "Titles, versions and state." msgstr "" -#: includes/i18n.php:229 +#: includes/i18n.php:230 msgid "Admin Notices" msgstr "" -#: includes/i18n.php:230 +#: includes/i18n.php:231 msgid "Newsletter" msgstr "" -#: includes/i18n.php:231 +#: includes/i18n.php:232 msgid "Updates, announcements, marketing, no spam" msgstr "" -#: includes/i18n.php:232 +#: includes/i18n.php:233 msgid "Privacy Policy" msgstr "" -#: includes/i18n.php:233 +#: includes/i18n.php:234 msgid "Terms of Service" msgstr "" -#: includes/i18n.php:234 +#: includes/i18n.php:235 msgctxt "as activating plugin" msgid "Activating" msgstr "" -#: includes/i18n.php:235 +#: includes/i18n.php:236 msgctxt "as in the process of sending an email" msgid "Sending email" msgstr "" -#: includes/i18n.php:236 +#: includes/i18n.php:237 msgctxt "button label" msgid "Allow & Continue" msgstr "" -#: includes/i18n.php:237 +#: includes/i18n.php:238 msgctxt "button label" msgid "Agree & Activate License" msgstr "" -#: includes/i18n.php:238 +#: includes/i18n.php:239 msgctxt "verb" msgid "Skip" msgstr "" -#: includes/i18n.php:239 +#: includes/i18n.php:240 msgid "Click here to use the plugin anonymously" msgstr "" -#: includes/i18n.php:240 +#: includes/i18n.php:241 msgid "Re-send activation email" msgstr "" -#: includes/i18n.php:241 +#: includes/i18n.php:242 msgid "License key" msgstr "" -#: includes/i18n.php:242 +#: includes/i18n.php:243 msgid "Send License Key" msgstr "" -#: includes/i18n.php:243 +#: includes/i18n.php:244 msgid "Sending license key" msgstr "" -#: includes/i18n.php:244 +#: includes/i18n.php:245 msgid "Have a license key?" msgstr "" -#: includes/i18n.php:245 +#: includes/i18n.php:246 msgid "Don't have a license key?" msgstr "" -#: includes/i18n.php:246 +#: includes/i18n.php:247 msgid "Can't find your license key?" msgstr "" -#: includes/i18n.php:247 +#: includes/i18n.php:248 msgid "We couldn't find your email address in the system, are you sure it's the right address?" msgstr "" -#: includes/i18n.php:248 +#: includes/i18n.php:249 msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" msgstr "" -#: includes/i18n.php:249 +#: includes/i18n.php:250 msgid "Opt In" msgstr "" -#: includes/i18n.php:250 +#: includes/i18n.php:251 msgid "Opt Out" msgstr "" -#: includes/i18n.php:251 +#: includes/i18n.php:252 msgid "On second thought - I want to continue helping" msgstr "" -#: includes/i18n.php:252 +#: includes/i18n.php:253 msgid "Opting out..." msgstr "" -#: includes/i18n.php:253 +#: includes/i18n.php:254 msgid "Opting in..." msgstr "" -#: includes/i18n.php:254 +#: includes/i18n.php:255 msgid "We appreciate your help in making the %s better by letting us track some usage data." msgstr "" -#: includes/i18n.php:255 +#: includes/i18n.php:256 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." msgstr "" -#: includes/i18n.php:256 +#: includes/i18n.php:257 msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." msgstr "" -#: includes/i18n.php:260 +#: includes/i18n.php:261 msgid "Screenshots" msgstr "" -#: includes/i18n.php:261 +#: includes/i18n.php:262 msgid "Click to view full-size screenshot %d" msgstr "" -#: includes/i18n.php:265 +#: includes/i18n.php:266 msgid "Freemius Debug" msgstr "" -#: includes/i18n.php:266 +#: includes/i18n.php:267 msgctxt "as turned on" msgid "On" msgstr "" -#: includes/i18n.php:267 +#: includes/i18n.php:268 msgctxt "as turned off" msgid "Off" msgstr "" -#: includes/i18n.php:268 +#: includes/i18n.php:269 msgctxt "as code debugging" msgid "Debugging" msgstr "" -#: includes/i18n.php:269 +#: includes/i18n.php:270 msgid "Freemius State" msgstr "" -#: includes/i18n.php:270 +#: includes/i18n.php:271 msgctxt "as connection was successful" msgid "Connected" msgstr "" -#: includes/i18n.php:271 +#: includes/i18n.php:272 msgctxt "as connection blocked" msgid "Blocked" msgstr "" -#: includes/i18n.php:272 +#: includes/i18n.php:273 msgctxt "as application program interface" msgid "API" msgstr "" -#: includes/i18n.php:273 +#: includes/i18n.php:274 msgctxt "as software development kit versions" msgid "SDK" msgstr "" -#: includes/i18n.php:274 +#: includes/i18n.php:275 msgctxt "as software development kit versions" msgid "SDK Versions" msgstr "" -#: includes/i18n.php:275 +#: includes/i18n.php:276 msgctxt "as plugin folder path" msgid "Plugin Path" msgstr "" -#: includes/i18n.php:276 +#: includes/i18n.php:277 msgctxt "as sdk path" msgid "SDK Path" msgstr "" -#: includes/i18n.php:277 +#: includes/i18n.php:278 msgid "Add Ons of Plugin %s" msgstr "" -#: includes/i18n.php:278 +#: includes/i18n.php:279 msgid "Are you sure you want to delete all Freemius data?" msgstr "" -#: includes/i18n.php:279 +#: includes/i18n.php:280 msgid "Actions" msgstr "" -#: includes/i18n.php:280 +#: includes/i18n.php:281 msgid "Delete All Accounts" msgstr "" -#: includes/i18n.php:281 +#: includes/i18n.php:282 msgid "Start Fresh" msgstr "" -#: includes/i18n.php:282 +#: includes/i18n.php:283 msgid "Clear API Cache" msgstr "" -#: includes/i18n.php:283 +#: includes/i18n.php:284 msgid "Sync Data From Server" msgstr "" -#: includes/i18n.php:284 +#: includes/i18n.php:285 msgid "Scheduled Crons" msgstr "" -#: includes/i18n.php:285 +#: includes/i18n.php:286 msgid "Cron Type" msgstr "" -#: includes/i18n.php:286 +#: includes/i18n.php:287 msgid "Plugins & Themes Sync" msgstr "" -#: includes/i18n.php:287 +#: includes/i18n.php:288 msgid "Licenses" msgstr "" -#: includes/i18n.php:288 +#: includes/i18n.php:289 msgid "Debug Log" msgstr "" -#: includes/i18n.php:289 +#: includes/i18n.php:290 msgid "All" msgstr "" -#: includes/i18n.php:290 +#: includes/i18n.php:291 msgid "File" msgstr "" -#: includes/i18n.php:291 +#: includes/i18n.php:292 msgid "Function" msgstr "" -#: includes/i18n.php:292 +#: includes/i18n.php:293 msgid "Process ID" msgstr "" -#: includes/i18n.php:293 +#: includes/i18n.php:294 msgid "Logger" msgstr "" -#: includes/i18n.php:294 +#: includes/i18n.php:295 msgid "Message" msgstr "" -#: includes/i18n.php:295 +#: includes/i18n.php:296 msgid "Download" msgstr "" -#: includes/i18n.php:296 +#: includes/i18n.php:297 msgid "Filter" msgstr "" -#: includes/i18n.php:297 +#: includes/i18n.php:298 msgid "Type" msgstr "" -#: includes/i18n.php:298 +#: includes/i18n.php:299 msgid "All Types" msgstr "" -#: includes/i18n.php:299 +#: includes/i18n.php:300 msgid "All Requests" msgstr "" -#: includes/i18n.php:303 +#: includes/i18n.php:304 msgctxt "as congratulations" msgid "Congrats" msgstr "" -#: includes/i18n.php:304 +#: includes/i18n.php:305 msgctxt "exclamation" msgid "Oops" msgstr "" -#: includes/i18n.php:305 +#: includes/i18n.php:306 msgctxt "interjection expressing joy or exuberance" msgid "Yee-haw" msgstr "" -#: includes/i18n.php:306 +#: includes/i18n.php:307 msgctxt "(especially in electronic communication) used to express elation, enthusiasm, or triumph." msgid "W00t" msgstr "" -#: includes/i18n.php:308 +#: includes/i18n.php:309 msgctxt "a positive response" msgid "Right on" msgstr "" -#: includes/i18n.php:309 +#: includes/i18n.php:310 msgctxt "something somebody says when they are thinking about what you have just said. " msgid "Hmm" msgstr "" -#: includes/i18n.php:311 +#: includes/i18n.php:312 msgid "O.K" msgstr "" -#: includes/i18n.php:312 +#: includes/i18n.php:313 msgctxt "exclamation" msgid "Hey" msgstr "" -#: includes/i18n.php:313 +#: includes/i18n.php:314 msgctxt "advance notice of something that will need attention." msgid "Heads up" msgstr "" -#: includes/i18n.php:318 +#: includes/i18n.php:319 msgid "Seems like you got the latest release." msgstr "" -#: includes/i18n.php:319 +#: includes/i18n.php:320 msgid "You are all good!" msgstr "" -#: includes/i18n.php:320 +#: includes/i18n.php:321 msgid "Sorry, we could not complete the email update. Another user with the same email is already registered." msgstr "" -#: includes/i18n.php:321 +#: includes/i18n.php:322 msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button." msgstr "" -#: includes/i18n.php:322 +#: includes/i18n.php:323 msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." msgstr "" -#: includes/i18n.php:323 +#: includes/i18n.php:324 msgid "Your name was successfully updated." msgstr "" -#: includes/i18n.php:324 +#: includes/i18n.php:325 msgid "You have successfully updated your %s." msgstr "" -#: includes/i18n.php:325 +#: includes/i18n.php:326 msgid "Please provide your full name." msgstr "" -#: includes/i18n.php:326 +#: includes/i18n.php:327 msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." msgstr "" -#: includes/i18n.php:327 +#: includes/i18n.php:328 msgid "Just letting you know that the add-ons information of %s is being pulled from an external server." msgstr "" -#: includes/i18n.php:328 +#: includes/i18n.php:329 msgid "No credit card required" msgstr "" -#: includes/i18n.php:329 +#: includes/i18n.php:330 msgid "Premium plugin version was successfully activated." msgstr "" -#: includes/i18n.php:330 +#: includes/i18n.php:331 msgid "The upgrade of %s was successfully completed." msgstr "" -#: includes/i18n.php:331 +#: includes/i18n.php:332 msgid "Your account was successfully activated with the %s plan." msgstr "" -#: includes/i18n.php:332 +#: includes/i18n.php:333 msgid "Download the latest %s version now" msgstr "" -#: includes/i18n.php:333 +#: includes/i18n.php:334 msgid "Please follow these steps to complete the upgrade" msgstr "" -#: includes/i18n.php:334 +#: includes/i18n.php:335 msgid "Download the latest %s version" msgstr "" -#: includes/i18n.php:335 +#: includes/i18n.php:336 msgid "Download the latest version" msgstr "" -#: includes/i18n.php:336 +#: includes/i18n.php:337 msgid "Deactivate the free version" msgstr "" -#: includes/i18n.php:337 +#: includes/i18n.php:338 msgid "Upload and activate the downloaded version" msgstr "" -#: includes/i18n.php:338 +#: includes/i18n.php:339 msgid "How to upload and activate?" msgstr "" -#: includes/i18n.php:339 +#: includes/i18n.php:340 msgctxt "%s - product name, e.g. Facebook add-on was successfully..." msgid "%s Add-on was successfully purchased." msgstr "" -#: includes/i18n.php:341 +#: includes/i18n.php:342 msgid "Your %s Add-on plan was successfully upgraded." msgstr "" -#: includes/i18n.php:342 +#: includes/i18n.php:343 msgid "Your email has been successfully verified - you are AWESOME!" msgstr "" -#: includes/i18n.php:343 +#: includes/i18n.php:344 msgid "Your plan was successfully upgraded." msgstr "" -#: includes/i18n.php:344 +#: includes/i18n.php:345 msgid "Your plan was successfully changed to %s." msgstr "" -#: includes/i18n.php:345 +#: includes/i18n.php:346 msgid "Your license has expired. You can still continue using the free plugin forever." msgstr "" -#: includes/i18n.php:346 +#: includes/i18n.php:347 msgid "Your license has been cancelled. If you think it's a mistake, please contact support." msgstr "" -#: includes/i18n.php:347 +#: includes/i18n.php:348 msgid "Your trial has been successfully started." msgstr "" -#: includes/i18n.php:348 +#: includes/i18n.php:349 msgid "Your license was successfully activated." msgstr "" -#: includes/i18n.php:349 +#: includes/i18n.php:350 msgid "It looks like your site currently doesn't have an active license." msgstr "" -#: includes/i18n.php:350 +#: includes/i18n.php:351 msgid "Your license was successfully deactivated, you are back to the %s plan." msgstr "" -#: includes/i18n.php:351 +#: includes/i18n.php:352 msgid "It looks like the license deactivation failed." msgstr "" -#: includes/i18n.php:352 +#: includes/i18n.php:353 msgid "It looks like the license could not be activated." msgstr "" -#: includes/i18n.php:353 +#: includes/i18n.php:354 msgid "Error received from the server:" msgstr "" -#: includes/i18n.php:354 +#: includes/i18n.php:355 msgid "Your trial has expired. You can still continue using all our free features." msgstr "" -#: includes/i18n.php:355 +#: includes/i18n.php:356 msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s." msgstr "" -#: includes/i18n.php:356 +#: includes/i18n.php:357 msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." msgstr "" -#: includes/i18n.php:357 +#: includes/i18n.php:358 msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)" msgstr "" -#: includes/i18n.php:358 +#: includes/i18n.php:359 msgid "Your %s free trial was successfully cancelled." msgstr "" -#: includes/i18n.php:359 +#: includes/i18n.php:360 msgctxt "%s - numeric version number" msgid "Version %s was released." msgstr "" -#: includes/i18n.php:360 +#: includes/i18n.php:361 msgid "Please download %s." msgstr "" -#: includes/i18n.php:361 +#: includes/i18n.php:362 msgctxt "%s - plan name, as the latest professional version here" msgid "the latest %s version here" msgstr "" -#: includes/i18n.php:363 +#: includes/i18n.php:364 msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial." msgstr "" -#: includes/i18n.php:364 +#: includes/i18n.php:365 msgctxt "call to action" msgid "Start free trial" msgstr "" -#: includes/i18n.php:365 +#: includes/i18n.php:366 msgid "Starting trial" msgstr "" -#: includes/i18n.php:366 +#: includes/i18n.php:367 msgid "Please wait" msgstr "" -#: includes/i18n.php:367 +#: includes/i18n.php:368 msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." msgstr "" -#: includes/i18n.php:368 +#: includes/i18n.php:369 msgid "You already utilized a trial before." msgstr "" -#: includes/i18n.php:369 +#: includes/i18n.php:370 msgid "You are already running the plugin in a trial mode." msgstr "" -#: includes/i18n.php:370 +#: includes/i18n.php:371 msgid "Plan %s do not exist, therefore, can't start a trial." msgstr "" -#: includes/i18n.php:371 +#: includes/i18n.php:372 msgid "Plan %s does not support a trial period." msgstr "" -#: includes/i18n.php:372 +#: includes/i18n.php:373 msgid "None of the plugin's plans supports a trial period." msgstr "" -#: includes/i18n.php:373 +#: includes/i18n.php:374 msgid "Unexpected API error. Please contact the plugin's author with the following error." msgstr "" -#: includes/i18n.php:374 +#: includes/i18n.php:375 msgid "No commitment for %s days - cancel anytime!" msgstr "" -#: includes/i18n.php:375 +#: includes/i18n.php:376 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." msgstr "" -#: includes/i18n.php:376 +#: includes/i18n.php:377 msgid "Couldn't activate %s." msgstr "" -#: includes/i18n.php:377 +#: includes/i18n.php:378 msgid "Please contact us with the following message:" msgstr "" -#: includes/i18n.php:378 +#: includes/i18n.php:379 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." msgstr "" -#: includes/i18n.php:379 +#: includes/i18n.php:380 msgid "Please contact us here" msgstr "" -#: includes/i18n.php:380 +#: includes/i18n.php:381 msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s." msgstr "" -#: includes/i18n.php:383 +#: includes/i18n.php:384 msgid "From unknown reason, the API connectivity test failed." msgstr "" -#: includes/i18n.php:384 +#: includes/i18n.php:385 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?" msgstr "" -#: includes/i18n.php:385 -msgid "We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server." +#: includes/i18n.php:386 +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." msgstr "" -#: includes/i18n.php:386 +#: includes/i18n.php:387 +msgid "Disabled method(s):" +msgstr "" + +#: includes/i18n.php:388 msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection." msgstr "" -#: includes/i18n.php:387 +#: includes/i18n.php:389 msgctxt "as pluginX requires an access to our API" msgid "%s requires an access to our API." msgstr "" -#: includes/i18n.php:389 +#: includes/i18n.php:391 msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection." msgstr "" -#: includes/i18n.php:390 +#: includes/i18n.php:392 msgid "I don't know what is Squid or ACL, help me!" msgstr "" -#: includes/i18n.php:391, includes/i18n.php:395 +#: includes/i18n.php:393, includes/i18n.php:397 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." msgstr "" -#: includes/i18n.php:392 +#: includes/i18n.php:394 msgid "I'm a system administrator" msgstr "" -#: includes/i18n.php:393 +#: includes/i18n.php:395 msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again." msgstr "" -#: includes/i18n.php:394 +#: includes/i18n.php:396 msgid "I don't know what is cURL or how to install it, help me!" msgstr "" -#: includes/i18n.php:396 -msgid "Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the plugin and reactivate it back again." +#: includes/i18n.php:398 +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 plugin and reactivate it back again." msgstr "" -#: includes/i18n.php:397 +#: includes/i18n.php:399 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." msgstr "" -#: includes/i18n.php:398 +#: includes/i18n.php:400 msgid "Sorry for the inconvenience and we are here to help if you give us a chance." msgstr "" -#: includes/i18n.php:399 +#: includes/i18n.php:401 msgid "Yes - I'm giving you a chance to fix it" msgstr "" -#: includes/i18n.php:400 +#: includes/i18n.php:402 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." msgstr "" -#: includes/i18n.php:401 +#: includes/i18n.php:403 msgid "Let's try your previous version" msgstr "" -#: includes/i18n.php:402 +#: includes/i18n.php:404 msgid "Uninstall this version and install the previous one." msgstr "" -#: includes/i18n.php:403 +#: includes/i18n.php:405 msgid "That's exhausting, please deactivate" msgstr "" -#: includes/i18n.php:404 +#: includes/i18n.php:406 msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future." msgstr "" -#: includes/i18n.php:405 +#: includes/i18n.php:407 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." msgstr "" -#: includes/i18n.php:406 +#: includes/i18n.php:408 msgctxt "%1s - plugin title, %2s - API domain" msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" msgstr "" -#: includes/i18n.php:408 +#: includes/i18n.php:410 msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." msgstr "" -#: includes/i18n.php:411 +#: includes/i18n.php:413 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." msgstr "" -#: includes/i18n.php:412 +#: includes/i18n.php:414 msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval." msgstr "" -#: includes/i18n.php:413 +#: includes/i18n.php:415 msgid "%s is the new owner of the account." msgstr "" -#: includes/i18n.php:415 +#: includes/i18n.php:417 msgctxt "addonX cannot run without pluginY" msgid "%s cannot run without %s." msgstr "" -#: includes/i18n.php:417 +#: includes/i18n.php:419 msgctxt "addonX cannot run..." msgid "%s cannot run without the plugin." msgstr "" -#: includes/i18n.php:418 +#: includes/i18n.php:420 msgctxt "pluginX activation was successfully..." msgid "%s activation was successfully completed." msgstr "" -#: includes/i18n.php:420 +#: includes/i18n.php:422 msgctxt "Plugin installer section title" msgid "Features & Pricing" msgstr "" -#: includes/i18n.php:421 +#: includes/i18n.php:423 msgid "Add-on must be deployed to WordPress.org or Freemius." msgstr "" -#: includes/i18n.php:422 +#: includes/i18n.php:424 msgid "Paid add-on must be deployed to Freemius." msgstr "" -#: includes/i18n.php:426 +#: includes/i18n.php:428 msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin." msgstr "" -#: includes/i18n.php:427 +#: includes/i18n.php:429 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." msgstr "" -#: includes/i18n.php:432 +#: includes/i18n.php:434 msgctxt "as every month" msgid "Monthly" msgstr "" -#: includes/i18n.php:433 +#: includes/i18n.php:435 msgctxt "as monthly period" msgid "mo" msgstr "" -#: includes/i18n.php:434 +#: includes/i18n.php:436 msgctxt "as once a year" msgid "Annual" msgstr "" -#: includes/i18n.php:435 +#: includes/i18n.php:437 msgctxt "as once a year" msgid "Annually" msgstr "" -#: includes/i18n.php:436 +#: includes/i18n.php:438 msgctxt "as once a year" msgid "Once" msgstr "" -#: includes/i18n.php:437 +#: includes/i18n.php:439 msgctxt "as annual period" msgid "year" msgstr "" -#: includes/i18n.php:438 +#: includes/i18n.php:440 msgid "Lifetime" msgstr "" -#: includes/i18n.php:439 +#: includes/i18n.php:441 msgctxt "e.g. the best product" msgid "Best" msgstr "" -#: includes/i18n.php:440 +#: includes/i18n.php:442 msgctxt "e.g. billed monthly" msgid "Billed %s" msgstr "" -#: includes/i18n.php:441 +#: includes/i18n.php:443 msgctxt "as a discount of $5 or 10%" msgid "Save %s" msgstr "" -#: includes/i18n.php:443 +#: includes/i18n.php:445 msgid "View details" msgstr "" -#: includes/i18n.php:447 +#: includes/i18n.php:449 msgctxt "button label" msgid "Approve & Start Trial" msgstr "" -#: includes/i18n.php:449 +#: includes/i18n.php:451 msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." msgstr "" -#: includes/i18n.php:451 +#: includes/i18n.php:453 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 plugin to periodically send data to %s to check for version updates and to validate your trial." msgstr "" -#: includes/i18n.php:457 +#: includes/i18n.php:459 msgid "Business name" msgstr "" -#: includes/i18n.php:458 +#: includes/i18n.php:460 msgid "Tax / VAT ID" msgstr "" -#: includes/i18n.php:459 +#: includes/i18n.php:461 msgid "Address Line %d" msgstr "" -#: includes/i18n.php:460 +#: includes/i18n.php:462 msgid "Country" msgstr "" -#: includes/i18n.php:461 +#: includes/i18n.php:463 msgid "Select Country" msgstr "" -#: includes/i18n.php:462 +#: includes/i18n.php:464 msgid "City" msgstr "" -#: includes/i18n.php:463 +#: includes/i18n.php:465 msgid "Town" msgstr "" -#: includes/i18n.php:464 +#: includes/i18n.php:466 msgid "State" msgstr "" -#: includes/i18n.php:465 +#: includes/i18n.php:467 msgid "Province" msgstr "" -#: includes/i18n.php:466 +#: includes/i18n.php:468 msgid "ZIP / Postal Code" msgstr "" +#: includes/i18n.php:473 +msgid "Installing plugin: %s" +msgstr "" + +#: includes/i18n.php:474 +msgid "Automatic Installation" +msgstr "" + +#: includes/i18n.php:476 +msgid "%s sec" +msgstr "" + +#: includes/i18n.php:477 +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." +msgstr "" + +#: includes/i18n.php:478 +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." +msgstr "" + +#: includes/i18n.php:479 +msgid "Cancel Installation" +msgstr "" + +#: includes/i18n.php:480 +msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work." +msgstr "" + #: includes/i18n.php:481 +msgid "Invalid module ID." +msgstr "" + +#: includes/i18n.php:482 +msgid "Auto installation only works for opted-in users." +msgstr "" + +#: includes/i18n.php:483 +msgid "Premium version already active." +msgstr "" + +#: includes/i18n.php:484 +msgid "Premium add-on version already installed." +msgstr "" + +#: includes/i18n.php:485 +msgid "You do not have a valid license to access the premium version." +msgstr "" + +#: includes/i18n.php:486 +msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version." +msgstr "" + +#: includes/i18n.php:501 msgctxt "Plugin installer section title" msgid "Description" msgstr "" -#: includes/i18n.php:482 +#: includes/i18n.php:502 msgctxt "Plugin installer section title" msgid "Installation" msgstr "" -#: includes/i18n.php:483 +#: includes/i18n.php:503 msgctxt "Plugin installer section title" msgid "FAQ" msgstr "" -#: includes/i18n.php:484 +#: includes/i18n.php:504 msgctxt "Plugin installer section title" msgid "Changelog" msgstr "" -#: includes/i18n.php:485 +#: includes/i18n.php:505 msgctxt "Plugin installer section title" msgid "Reviews" msgstr "" -#: includes/i18n.php:486 +#: includes/i18n.php:506 msgctxt "Plugin installer section title" msgid "Other Notes" msgstr "" -#: includes/i18n.php:488 +#: includes/i18n.php:508 msgid "%s star" msgstr "" -#: includes/i18n.php:490 +#: includes/i18n.php:510 msgid "%s stars" msgstr "" -#: includes/i18n.php:492 +#: includes/i18n.php:512 msgid "%s rating" msgstr "" -#: includes/i18n.php:494 +#: includes/i18n.php:514 msgid "%s ratings" msgstr "" -#: includes/i18n.php:496 +#: includes/i18n.php:516 msgid "%s time" msgstr "" -#: includes/i18n.php:498 +#: includes/i18n.php:518 msgid "%s times" msgstr "" -#: includes/i18n.php:500 +#: includes/i18n.php:520 msgid "Click to see reviews that provided a rating of %s" msgstr "" -#: includes/i18n.php:501 +#: includes/i18n.php:521 msgid "Last Updated" msgstr "" -#: includes/i18n.php:502 +#: includes/i18n.php:522 msgid "Requires WordPress Version:" msgstr "" -#: includes/i18n.php:503 +#: includes/i18n.php:523 msgctxt "as the plugin author" msgid "Author:" msgstr "" -#: includes/i18n.php:504 +#: includes/i18n.php:524 msgid "Compatible up to:" msgstr "" -#: includes/i18n.php:505 +#: includes/i18n.php:525 msgid "Downloaded:" msgstr "" -#: includes/i18n.php:506 +#: includes/i18n.php:526 msgid "WordPress.org Plugin Page" msgstr "" -#: includes/i18n.php:507 +#: includes/i18n.php:527 msgid "Plugin Homepage" msgstr "" -#: includes/i18n.php:508 +#: includes/i18n.php:528 msgid "Donate to this plugin" msgstr "" -#: includes/i18n.php:509 +#: includes/i18n.php:529 msgid "Average Rating" msgstr "" -#: includes/i18n.php:510 +#: includes/i18n.php:530 msgid "based on %s" msgstr "" -#: includes/i18n.php:511 +#: includes/i18n.php:531 msgid "Warning:" msgstr "" -#: includes/i18n.php:512 +#: includes/i18n.php:532 msgid "Contributors" msgstr "" -#: includes/i18n.php:513 +#: includes/i18n.php:533 msgid "Plugin Install" msgstr "" -#: includes/i18n.php:514 +#: includes/i18n.php:534 msgid "This plugin has not been tested with your current version of WordPress." msgstr "" -#: includes/i18n.php:515 +#: includes/i18n.php:535 msgid "This plugin has not been marked as compatible with your version of WordPress." msgstr "" -#: includes/i18n.php:516 +#: includes/i18n.php:536 msgid "Newer Version (%s) Installed" msgstr "" -#: includes/i18n.php:517 +#: includes/i18n.php:537 msgid "Latest Version Installed" msgstr "" diff --git a/package.json b/package.json index 3237b3b0c..877a9d528 100644 --- a/package.json +++ b/package.json @@ -5,11 +5,15 @@ "main": "gulpfile.js", "dependencies": { "gulp": "^3.9.1", + "gulp-clean": "^0.3.2", + "gulp-fs": "0.0.2", "gulp-gettext": "^0.3.0", + "gulp-path": "^3.0.3", "gulp-pofill": "^1.0.0", "gulp-rename": "^1.2.2", "gulp-sort": "^2.0.0", - "gulp-wp-pot": "^2.0.4" + "gulp-wp-pot": "^2.0.4", + "gulp-transifex": "^0.1.17" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" @@ -23,10 +27,14 @@ "homepage": "https://freemius.com", "devDependencies": { "gulp": "^3.9.1", + "gulp-clean": "^0.3.2", + "gulp-fs": "0.0.2", "gulp-gettext": "^0.3.0", + "gulp-path": "^3.0.3", "gulp-pofill": "^1.0.0", "gulp-rename": "^1.2.2", "gulp-sort": "^2.0.0", - "gulp-wp-pot": "^2.0.4" + "gulp-wp-pot": "^2.0.4", + "gulp-transifex": "^0.1.17" } } diff --git a/require.php b/require.php index 082cd9304..a2f370494 100644 --- a/require.php +++ b/require.php @@ -8,12 +8,12 @@ // Configuration should be loaded first. require_once dirname( __FILE__ ) . '/config.php'; + require_once WP_FS__DIR_INCLUDES . '/fs-core-functions.php'; // Logger must be loaded before any other. require_once WP_FS__DIR_INCLUDES . '/class-fs-logger.php'; require_once WP_FS__DIR_INCLUDES . '/debug/debug-bar-start.php'; - require_once WP_FS__DIR_INCLUDES . '/fs-core-functions.php'; // require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-abstract-manager.php'; require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-option-manager.php'; require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-cache-manager.php'; diff --git a/start.php b/start.php index 5337845ef..6405b0400 100644 --- a/start.php +++ b/start.php @@ -15,7 +15,7 @@ * * @var string */ - $this_sdk_version = '1.2.1.6.1'; + $this_sdk_version = '1.2.1.7.1'; #region SDK Selection Logic -------------------------------------------------------------------- @@ -31,11 +31,20 @@ global $fs_active_plugins; - $this_sdk_relative_path = plugin_basename( dirname( __FILE__ ) ); - - if ( ! isset( $fs_active_plugins ) ) { + if ( ! function_exists( 'fs_find_caller_plugin_file' ) ) { // Require SDK essentials. require_once dirname( __FILE__ ) . '/includes/fs-essential-functions.php'; + } + + $file_path = fs_normalize_path( __FILE__ ); + $fs_root_path = dirname( $file_path ); + $this_sdk_relative_path = plugin_basename( $fs_root_path ); + + if ( ! isset( $fs_active_plugins ) ) { + if ( ! function_exists( '__fs' ) ) { + // Require SDK essentials. + require_once dirname( __FILE__ ) . '/includes/fs-essential-functions.php'; + } // Load all Freemius powered active plugins. $fs_active_plugins = get_option( 'fs_active_plugins', new stdClass() ); @@ -45,6 +54,46 @@ } } + if ( empty( $fs_active_plugins->abspath ) ) { + /** + * Store the WP install absolute path reference to identify environment change + * while replicating the storage. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + */ + $fs_active_plugins->abspath = ABSPATH; + } else { + if ( ABSPATH !== $fs_active_plugins->abspath ) { + /** + * WordPress path has changed, cleanup the SDK references cache. + * This resolves issues triggered when spinning a staging environments + * while replicating the database. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + */ + $fs_active_plugins->abspath = ABSPATH; + $fs_active_plugins->plugins = array(); + unset( $fs_active_plugins->newest ); + } else { + /** + * Make sure SDK references are still valid. This resolves + * issues when users hard delete modules via FTP. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + */ + foreach ( $fs_active_plugins->plugins as $sdk_path => &$data ) { + if ( ! file_exists( WP_PLUGIN_DIR . '/' . $sdk_path ) ) { + unset( $fs_active_plugins->plugins[ $sdk_path ] ); + } + + update_option( 'fs_active_plugins', $fs_active_plugins ); + } + } + } + if ( ! function_exists( 'fs_find_direct_caller_plugin_file' ) ) { require_once dirname( __FILE__ ) . '/includes/supplements/fs-essential-functions-1.1.7.1.php'; } @@ -91,10 +140,10 @@ require_once ABSPATH . 'wp-admin/includes/plugin.php'; } - $is_newest_sdk_plugin_activate = is_plugin_active( $fs_active_plugins->newest->plugin_path ); + $is_newest_sdk_plugin_active = is_plugin_active( $fs_active_plugins->newest->plugin_path ); if ( $is_current_sdk_newest && - ! $is_newest_sdk_plugin_activate && + ! $is_newest_sdk_plugin_active && ! $fs_active_plugins->newest->in_activation ) { // If current SDK is the newest and the plugin is NOT active, it means @@ -103,14 +152,14 @@ update_option( 'fs_active_plugins', $fs_active_plugins ); } - $is_newest_sdk_path_valid = ( $is_newest_sdk_plugin_activate || $fs_active_plugins->newest->in_activation ) && file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $this_sdk_relative_path . '/start.php' ) ); + $is_newest_sdk_path_valid = ( $is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation ) && file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $this_sdk_relative_path . '/start.php' ) ); if ( ! $is_newest_sdk_path_valid && ! $is_current_sdk_newest ) { // Plugin with newest SDK is no longer active, or SDK was moved to a different location. unset( $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ] ); } - if ( ! ( $is_newest_sdk_plugin_activate || $fs_active_plugins->newest->in_activation ) || + if ( ! ( $is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation ) || ! $is_newest_sdk_path_valid || // Is newest SDK downgraded. ( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path && @@ -125,7 +174,7 @@ // Find the active plugin with the newest SDK version and update the newest reference. fs_fallback_to_newest_active_sdk(); } else { - if ( $is_newest_sdk_plugin_activate && + if ( $is_newest_sdk_plugin_active && $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path && ( $fs_active_plugins->newest->in_activation || ( class_exists( 'Freemius' ) && ( ! defined( 'WP_FS__SDK_VERSION' ) || version_compare( WP_FS__SDK_VERSION, $this_sdk_version, '<' ) ) ) @@ -256,6 +305,66 @@ define( 'WP_FS__SDK_VERSION', $this_sdk_version ); } + $plugins_or_theme_dir_path = WP_PLUGIN_DIR; + + if ( 0 === strpos( $file_path, fs_normalize_path( $plugins_or_theme_dir_path ) ) ) { + // No symlinks + } else { + /** + * This logic finds the SDK symlink and set WP_FS__DIR to use it. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.2.5 + */ + $sdk_symlink = null; + + // Try to load SDK's symlink from cache. + if ( isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) && + is_object( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) && + ! empty( $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink ) + ) { + $sdk_symlink = $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink; + $realpath = realpath( $sdk_symlink ); + + if ( ! is_string( $realpath ) || ! file_exists( $realpath ) ) { + $sdk_symlink = null; + } + } + + if ( empty( $sdk_symlink ) ) // Has symlinks, therefore, we need to configure WP_FS__DIR based on the symlink. + { + $partial_path_right = basename( $file_path ); + $partial_path_left = dirname( $file_path ); + $realpath = realpath( $plugins_or_theme_dir_path . $partial_path_right ); + + while ( '/' !== $partial_path_left && + ( false === $realpath || $file_path !== fs_normalize_path( $realpath ) ) + ) { + $partial_path_right = trailingslashit( basename( $partial_path_left ) ) . $partial_path_right; + $partial_path_left = dirname( $partial_path_left ); + $realpath = realpath( $plugins_or_theme_dir_path . $partial_path_right ); + } + + if ( '/' !== $partial_path_left ) { + $sdk_symlink = fs_normalize_path( $plugins_or_theme_dir_path . dirname( $partial_path_right ) ); + + // Cache value. + if ( isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) && + is_object( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) + ) { + $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink = $sdk_symlink; + update_option( 'fs_active_plugins', $fs_active_plugins ); + } + + } + } + + if ( ! empty( $sdk_symlink ) ) { + // Set SDK dir to the symlink path. + define( 'WP_FS__DIR', $sdk_symlink ); + } + } + // Load SDK files. require_once dirname( __FILE__ ) . '/require.php'; @@ -290,7 +399,7 @@ function fs_init( $slug, $plugin_id, $public_key, $is_live = true, $is_premium = } /** - * @param array $module Plugin or Theme details. + * @param array $module Plugin or Theme details. * * @return Freemius * @throws Freemius_Exception diff --git a/templates/account.php b/templates/account.php index efcff23a9..b5b81d19b 100755 --- a/templates/account.php +++ b/templates/account.php @@ -38,24 +38,28 @@ if ( $fs->has_paid_plan() ) { $fs->_add_license_activation_dialog_box(); } + + if ( fs_request_get_bool( 'auto_install' ) ) { + $fs->_add_auto_installation_dialog_box(); + } ?>
    @@ -64,78 +68,81 @@ class="nav-tab">
    -

    +

      -
    • -
      - - - -
      -
    • + +
    • +
      + + + +
      +
    • +
    •  • 
    • +
    • -  • 
      + onclick="if (confirm('')) this.parentNode.submit(); return false;">
    • +
    •  • 
    • is_lifetime() && $is_active_subscription ) : ?>
    • -  • 
      title, human_time_diff( time(), strtotime( $license->expiration ) ) ) ?> is_block_features ) { + printf( fs_text( 'after-downgrade-non-blocking', $slug ), $plan->title ); } else { - printf( __fs( 'after-downgrade-blocking', $slug ), $plan->title ); - }?> ')) this.parentNode.submit(); return false;"> + printf( fs_text( 'after-downgrade-blocking', $slug ), $plan->title ); + }?> ')) this.parentNode.submit(); return false;"> is_only_premium() ? 'cancel-subscription' : 'downgrade' ), $slug ) ?>
    • +
    •  • 
    • + is_single_plan() ) : ?>
    • -  •  + class="dashicons dashicons-grid-view">
    • +
    •  • 
    • +
    • -  • 
      + onclick="if (confirm('')) this.parentNode.submit(); return false;">
    • +
    •  • 
    • -  • 
      + class="dashicons dashicons-image-rotate">
    • @@ -149,50 +156,50 @@ class="dashicons dashicons-image-rotate"> $profile = array(); $profile[] = array( 'id' => 'user_name', - 'title' => __fs( 'name', $slug ), + 'title' => fs_text( 'name', $slug ), 'value' => $name ); // if (isset($user->email) && false !== strpos($user->email, '@')) $profile[] = array( 'id' => 'email', - 'title' => __fs( 'email', $slug ), + 'title' => fs_text( 'email', $slug ), 'value' => $user->email ); if ( is_numeric( $user->id ) ) { $profile[] = array( 'id' => 'user_id', - 'title' => __fs( 'user-id', $slug ), + 'title' => fs_text( 'user-id', $slug ), 'value' => $user->id ); } $profile[] = array( 'id' => 'site_id', - 'title' => __fs( 'site-id', $slug ), + 'title' => fs_text( 'site-id', $slug ), 'value' => is_string( $site->id ) ? $site->id : - __fs( 'no-id', $slug ) + fs_text( 'no-id', $slug ) ); $profile[] = array( 'id' => 'site_public_key', - 'title' => __fs( 'public-key', $slug ), + 'title' => fs_text( 'public-key', $slug ), 'value' => $site->public_key ); $profile[] = array( 'id' => 'site_secret_key', - 'title' => __fs( 'secret-key', $slug ), + 'title' => fs_text( 'secret-key', $slug ), 'value' => ( ( is_string( $site->secret_key ) ) ? $site->secret_key : - __fs( 'no-secret', $slug ) + fs_text( 'no-secret', $slug ) ) ); $profile[] = array( 'id' => 'version', - 'title' => __fs( 'version', $slug ), + 'title' => fs_text( 'version', $slug ), 'value' => $fs->get_plugin_version() ); @@ -202,25 +209,25 @@ class="dashicons dashicons-image-rotate"> $profile[] = array( 'id' => 'plan', - 'title' => __fs( 'plan', $slug ), + 'title' => fs_text( 'plan', $slug ), 'value' => ( is_string( $trial_plan->name ) ? strtoupper( $trial_plan->title ) : - __fs( 'trial', $slug ) ) + fs_text( 'trial', $slug ) ) ); } else { $profile[] = array( 'id' => 'plan', - 'title' => __fs( 'plan', $slug ), + 'title' => fs_text( 'plan', $slug ), 'value' => is_string( $site->plan->name ) ? strtoupper( $site->plan->title ) : - strtoupper( __fs( 'free', $slug ) ) + strtoupper( fs_text( 'free', $slug ) ) ); if ( is_object( $license ) ) { if ( ! $hide_license_key ) { $profile[] = array( 'id' => 'license_key', - 'title' => __fs( 'License Key', $slug ), + 'title' => fs_text( 'License Key', $slug ), 'value' => $license->secret_key, ); } @@ -259,14 +266,14 @@ class="dashicons dashicons-image-rotate"> is_lifetime() ) : ?> is_first_payment_pending() ) : ?> + class="fs-tag fs-warn">expiration ) ) ) ) ?> is_first_payment_pending() ) : ?> + class="fs-tag fs-success">next_payment ) ) ) ) ?> is_trial() ) : ?> + class="fs-tag fs-warn">trial_ends ) ) ) ) ?>
      is_free_plan() ? $fs->_get_available_premium_license() : false ?> @@ -279,15 +286,15 @@ class="fs-tag fs-warn"> @@ -302,11 +309,14 @@ class="fs-tag fs-warn">_sync_license"> + is_single_plan() ) : ?> +
      @@ -337,7 +347,7 @@ class="fs-tag fs-can_use_premium_code() ? 'success' : 'warn' ?>" is_trial() ) : ?> is_allowed_to_install() ) : ?> is_trial() ? $trial_plan->title : $site->plan->title ) ) . ( is_object( $update ) ? ' [' . $update->version . ']' : '' ) ?> + href="_get_latest_download_local_url() ?>">is_trial() ? $trial_plan->title : $site->plan->title ) ) . ( is_object( $update ) ? ' [' . $update->version . ']' : '' ) ?> version . ']' ?> @@ -347,9 +357,9 @@ class="fs-tag fs-can_use_premium_code() ? 'success' : 'warn' ?>" - + - + can_use_premium_code() ? 'success' : 'warn' ?>" ) ) ) ) : ?>
      + onsubmit="var val = prompt('', ''); if (null == val || '' === val) return false; jQuery('input[name=fs__]').val(val); return true;"> @@ -487,37 +497,37 @@ class="fs-tag fs-can_use_premium_code() ? 'success' : 'warn' ?>" $tags = array(); if ( $fs_addon->is_trial() ) { - $tags[] = array( 'label' => __fs( 'trial', $slug ), 'type' => 'success' ); + $tags[] = array( 'label' => fs_text( 'trial', $slug ), 'type' => 'success' ); $tags[] = array( - 'label' => sprintf( __fs( ( $is_paid_trial ? 'renews-in' : 'expires-in' ), $slug ), human_time_diff( time(), strtotime( $site->trial_ends ) ) ), + 'label' => sprintf( fs_text( ( $is_paid_trial ? 'renews-in' : 'expires-in' ), $slug ), human_time_diff( time(), strtotime( $site->trial_ends ) ) ), 'type' => ( $is_paid_trial ? 'success' : 'warn' ) ); } else { if ( is_object( $license ) ) { if ( $license->is_cancelled ) { $tags[] = array( - 'label' => __fs( 'cancelled', $slug ), + 'label' => fs_text( 'cancelled', $slug ), 'type' => 'error' ); } else if ( $license->is_expired() ) { $tags[] = array( - 'label' => __fs( 'expired', $slug ), + 'label' => fs_text( 'expired', $slug ), 'type' => 'error' ); } else if ( $license->is_lifetime() ) { $tags[] = array( - 'label' => __fs( 'no-expiration', $slug ), + 'label' => fs_text( 'no-expiration', $slug ), 'type' => 'success' ); } else if ( ! $is_active_subscription && ! $license->is_first_payment_pending() ) { $tags[] = array( - 'label' => sprintf( __fs( 'expires-in', $slug ), human_time_diff( time(), strtotime( $license->expiration ) ) ), + 'label' => sprintf( fs_text( 'expires-in', $slug ), human_time_diff( time(), strtotime( $license->expiration ) ) ), 'type' => 'warn' ); } else if ( $is_active_subscription && ! $subscription->is_first_payment_pending() ) { $tags[] = array( - 'label' => sprintf( __fs( 'renews-in', $slug ), human_time_diff( time(), strtotime( $subscription->next_payment ) ) ), + 'label' => sprintf( fs_text( 'renews-in', $slug ), human_time_diff( time(), strtotime( $subscription->next_payment ) ) ), 'type' => 'success' ); } @@ -537,13 +547,13 @@ class="fs-tag fs-can_use_premium_code() ? 'success' : 'warn' ?>" $slug, 'account', 'deactivate_license', - __fs( 'deactivate-license', $slug ), + fs_text( 'deactivate-license', $slug ), array( 'plugin_id' => $addon_id ), false ); $human_readable_license_expiration = human_time_diff( time(), strtotime( $license->expiration ) ); - $downgrade_confirmation_message = sprintf( __fs( 'downgrade-x-confirm', $slug ), + $downgrade_confirmation_message = sprintf( fs_text( 'downgrade-x-confirm', $slug ), $plan->title, $human_readable_license_expiration ); @@ -551,14 +561,14 @@ class="fs-tag fs-can_use_premium_code() ? 'success' : 'warn' ?>" 'after-downgrade-non-blocking' : 'after-downgrade-blocking' ); - $after_downgrade_message = sprintf( __fs( $after_downgrade_message_id, $slug ), $plan->title ); + $after_downgrade_message = sprintf( fs_text( $after_downgrade_message_id, $slug ), $plan->title ); if ( ! $license->is_lifetime() && $is_active_subscription ) { $buttons[] = fs_ui_get_action_button( $slug, 'account', 'downgrade_account', - __fs( 'downgrade', $slug ), + fs_text( 'downgrade', $slug ), array( 'plugin_id' => $addon_id ), false, false, @@ -571,11 +581,11 @@ class="fs-tag fs-can_use_premium_code() ? 'success' : 'warn' ?>" $slug, 'account', 'cancel_trial', - __fs( 'cancel-trial', $slug ), + fs_text( 'cancel-trial', $slug ), array( 'plugin_id' => $addon_id ), false, 'dashicons dashicons-download', - __fs( 'cancel-trial-confirm', $slug ), + fs_text( 'cancel-trial-confirm', $slug ), 'POST' ); } else { @@ -588,7 +598,7 @@ class="fs-tag fs-can_use_premium_code() ? 'success' : 'warn' ?>" $slug, 'account', 'activate_license', - sprintf( __fs( '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' : '' ) ), + 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' : '' ) ), array( 'plugin_id' => $addon_id, 'license_id' => $premium_license->id, @@ -603,7 +613,7 @@ class="fs-tag fs-can_use_premium_code() ? 'success' : 'warn' ?>" $slug, 'account', $slug . '_sync_license', - __fs( 'sync-license', $slug ), + fs_text( 'sync-license', $slug ), array( 'plugin_id' => $addon_id ), false ); @@ -616,20 +626,20 @@ class="fs-tag fs-can_use_premium_code() ? 'success' : 'warn' ?>" '%s', wp_nonce_url( 'plugins.php?action=activate&plugin=' . $addon_file, 'activate-plugin_' . $addon_file ), fs_esc_attr( 'activate-this-addon', $slug ), - __fs( 'activate', $slug ) + fs_text( 'activate', $slug ) ); } else { if ( $fs->is_allowed_to_install() ) { $buttons[] = sprintf( '%s', wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ), - __fs( 'install-now', $slug ) + fs_text( 'install-now', $slug ) ); } else { $buttons[] = sprintf( '%s', $fs->_get_latest_download_local_url( $addon_id ), - __fs( 'download-latest', $slug ) + fs_text( 'download-latest', $slug ) ); } } @@ -639,9 +649,9 @@ class="fs-tag fs-can_use_premium_code() ? 'success' : 'warn' ?>" $buttons[] = sprintf( ' %s', esc_url( network_admin_url( 'plugin-install.php?tab=plugin-information&parent_plugin_id=' . $fs->get_id() . '&plugin=' . $addon->slug . '&TB_iframe=true&width=600&height=550' ) ), - esc_attr( sprintf( __fs( 'more-information-about-x', $slug ), $addon->title ) ), + esc_attr( sprintf( fs_text( 'more-information-about-x', $slug ), $addon->title ) ), esc_attr( $addon->title ), - __fs( ( $fs_addon->has_free_plan() ? 'upgrade' : 'purchase' ), $slug ) + fs_text( ( $fs_addon->has_free_plan() ? 'upgrade' : 'purchase' ), $slug ) ); } @@ -690,7 +700,7 @@ class="edit"> fs_ui_action_button( $slug, 'account', 'delete_account', - __fs( 'delete', $slug ), + fs_text( 'delete', $slug ), array( 'plugin_id' => $addon_id ), false ); diff --git a/templates/add-ons.php b/templates/add-ons.php index acd0457da..0e20377c6 100755 --- a/templates/add-ons.php +++ b/templates/add-ons.php @@ -31,14 +31,14 @@ $has_addons = ( is_array( $addons ) && 0 < count( $addons ) ); ?>
      -

      get_plugin_name() ) ?>

      +

      get_plugin_name() ) ?>

        @@ -82,7 +82,7 @@ echo sprintf( '', esc_url( network_admin_url( 'plugin-install.php?tab=plugin-information&parent_plugin_id=' . $fs->get_id() . '&plugin=' . $addon->slug . '&TB_iframe=true&width=600&height=550' ) ), - esc_attr( sprintf( __fs( 'more-information-about-x', $slug ), $addon->title ) ), + esc_attr( sprintf( fs_text( 'more-information-about-x', $slug ), $addon->title ) ), esc_attr( $addon->title ) ); ?> @@ -105,10 +105,10 @@
      • title ?>
      • has_trial() ? ' - ' . __fs('trial', $slug) : '')) ?> + class="fs-price">has_trial() ? ' - ' . fs_text('trial', $slug) : '')) ?>
      • info->short_description ) ? $addon->info->short_description : 'SHORT DESCRIPTION' ?>
      • -
      • +
      diff --git a/templates/admin-notice.php b/templates/admin-notice.php index db205eb7d..7a4a5fdb5 100644 --- a/templates/admin-notice.php +++ b/templates/admin-notice.php @@ -36,7 +36,7 @@ class="
      + title="">
      diff --git a/templates/ajax-loader.php b/templates/ajax-loader.php new file mode 100644 index 000000000..bc116f877 --- /dev/null +++ b/templates/ajax-loader.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/auto-installation.php b/templates/auto-installation.php new file mode 100644 index 000000000..a7e1dfc1f --- /dev/null +++ b/templates/auto-installation.php @@ -0,0 +1,244 @@ +is_tracking_allowed() ? + 'stop_tracking' : + 'allow_tracking'; + + $title = $fs->get_plugin_title(); + + if ( $plugin_id != $fs->get_id() ) { + $addon = $fs->get_addon( $plugin_id ); + + if ( is_object( $addon ) ) { + $title = $addon->title . ' ' . fs_text( 'addon', $slug ); + } + } + + $plugin_title = sprintf( + '%s', + esc_html( $title ) + ); + + $sec_countdown = 30; + $countdown_html = sprintf( + esc_js( fs_text( 'x-sec', $slug ) ), + sprintf( '%s', $sec_countdown ) + ); + + fs_enqueue_local_style( 'dialog-boxes', '/admin/dialog-boxes.css' ); + fs_enqueue_local_style( 'fs_common', '/admin/common.css' ); + + $params = array(); + $loader_html = fs_get_template( 'ajax-loader.php', $params ); + + // Pass unique auto installation URL if WP_Filesystem is needed. + $install_url = $fs->_get_sync_license_url( + $plugin_id, + true, + array( 'auto_install' => 'true' ) + ); + + + ob_start(); + + $method = ''; // Leave blank so WP_Filesystem can populate it as necessary. + + $credentials = request_filesystem_credentials( + esc_url_raw( $install_url ), + $method, + false, + WP_PLUGIN_DIR, + array() + ); + + $credentials_form = ob_get_clean(); + + $require_credentials = ! empty( $credentials_form ); +?> +
      +
      +
      +

      +
      +
      + + +
      + +
      + +

      %s', + 'https://freemius.com', + 'freemius.com' + ), + $countdown_html + ) ?>

      + + +
      + +
      +
      ' + + diff --git a/templates/billing.php b/templates/billing.php index e5f375466..ff3b8bd85 100644 --- a/templates/billing.php +++ b/templates/billing.php @@ -46,21 +46,21 @@
      @@ -69,21 +69,21 @@ class="nav-tab nav-tab-active">
      -

      +

      > - - + + - - + + - - + + 'ZM' => 'Zambia', 'ZW' => 'Zimbabwe', ) ?> - - +
      + class="button">
      -

      +

      _fetch_payments(); @@ -370,11 +370,11 @@ class="button"> - - - - - + + + + + @@ -386,7 +386,7 @@ class="button"> + target="_blank"> @@ -430,7 +430,7 @@ class="button button-small" var isEditMode = !$billingAddress.hasClass('fs-read-mode'); $(this) - .html(isEditMode ? : ) + .html(isEditMode ? : ) .toggleClass('button-primary'); if (isEditMode) { @@ -454,8 +454,8 @@ class="button button-small" url : ajaxurl, method : 'POST', data : { - action : 'get_action_tag( 'update_billing' ) ?>', - security: 'get_action_tag( 'update_billing' ) ) ?>', + action : 'get_ajax_action( 'update_billing' ) ?>', + security : 'get_ajax_security( 'update_billing' ) ?>', slug : '', billing : billing }, @@ -481,7 +481,7 @@ class="button button-small" $billingAddress.toggleClass('fs-read-mode'); $billingAddress.find('.button') - .html() + .html() .toggleClass('button-primary'); }) // If blured after editing only one field without changes, exit edit mode. @@ -489,7 +489,7 @@ class="button button-small" if (!isEditAllFieldsMode && !hasBillingChanged()) { $billingAddress.toggleClass('fs-read-mode'); $billingAddress.find('.button') - .html() + .html() .toggleClass('button-primary'); } }); diff --git a/templates/checkout.php b/templates/checkout.php index 03c5eb94b..52617ae2b 100755 --- a/templates/checkout.php +++ b/templates/checkout.php @@ -6,6 +6,25 @@ * @since 1.0.3 */ + /** + * Note for WordPress.org Theme/Plugin reviewer: + * Freemius is an SDK for plugin and theme developers. Since the core + * of the SDK is relevant both for plugins and themes, for obvious reasons, + * we only develop and maintain one code base. + * + * This code (and page) will not run for wp.org themes (only plugins) + * since theme admin settings/options are now only allowed in the customizer. + * + * In addition, this page loads an i-frame. We intentionally named it 'frame' + * so it will pass the "Theme Check" that is looking for the string "i" . "frame". + * + * If you have any questions or need clarifications, please don't hesitate + * pinging me on slack, my username is @svovaf. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.2 + */ + if ( ! defined( 'ABSPATH' ) ) { exit; } @@ -19,6 +38,7 @@ /** * @var array $VARS + * @var Freemius $fs */ $slug = $VARS['slug']; $fs = freemius( $slug ); @@ -28,34 +48,47 @@ $context_params = array( 'plugin_id' => $fs->get_id(), 'plugin_version' => $fs->get_plugin_version(), - 'public_key' => $fs->get_public_key(), - 'mode' => 'dashboard', - 'trial' => fs_request_get_bool( 'trial' ), + 'public_key' => $fs->get_public_key(), + 'mode' => 'dashboard', + 'trial' => fs_request_get_bool( 'trial' ), ); $plan_id = fs_request_get( 'plan_id' ); if ( FS_Plugin_Plan::is_valid_id( $plan_id ) ) { - $context_params['plan_id'] = $plan_id; - } + $context_params['plan_id'] = $plan_id; + } - $licenses = fs_request_get( 'licenses' ); - if ( $licenses === strval( intval( $licenses ) ) && $licenses > 0 ) { - $context_params['licenses'] = $licenses; - } + $licenses = fs_request_get( 'licenses' ); + if ( $licenses === strval( intval( $licenses ) ) && $licenses > 0 ) { + $context_params['licenses'] = $licenses; + } $plugin_id = fs_request_get( 'plugin_id' ); if ( ! FS_Plugin::is_valid_id( $plugin_id ) ) { $plugin_id = $fs->get_id(); } + if ( $plugin_id == $fs->get_id() ) { + $is_premium = $fs->is_premium(); + }else { + // Identify the module code version of the checkout context module. + if ( $fs->is_addon_activated( $plugin_id ) ) { + $fs_addon = Freemius::get_instance_by_id( $plugin_id ); + $is_premium = $fs_addon->is_premium(); + } else { + // If add-on isn't activated assume the premium version isn't installed. + $is_premium = false; + } + } + // Get site context secure params. if ( $fs->is_registered() ) { $site = $fs->get_site(); if ( $plugin_id != $fs->get_id() ) { if ( $fs->is_addon_activated( $plugin_id ) ) { - $fs_addon = Freemius::get_instance_by_id( $plugin_id ); - $site = $fs_addon->get_site(); + $fs_addon = Freemius::get_instance_by_id( $plugin_id ); + $site = $fs_addon->get_site(); } } @@ -110,6 +143,7 @@ // Current plugin version. 'plugin_version' => $fs->get_plugin_version(), 'sdk_version' => WP_FS__SDK_VERSION, + 'is_premium' => $is_premium ? 'true' : 'false', 'return_url' => $return_url, // Admin CSS URL for style/design competability. // 'wp_admin_css' => get_bloginfo('wpurl') . "/wp-admin/load-styles.php?c=1&load=buttons,wp-admin,dashicons", @@ -117,145 +151,156 @@ $xdebug_session = fs_request_get( 'XDEBUG_SESSION' ); if ( false !== $xdebug_session ) { - $query_params['XDEBUG_SESSION'] = $xdebug_session; - } + $query_params['XDEBUG_SESSION'] = $xdebug_session; + } ?> -
      -
      - -
      \ No newline at end of file + + var updateHeight = function () { + iframe.css('min-height', $('#wpwrap').height() + 'px'); + }; + + $(document).ready(updateHeight); + + $(window).resize(updateHeight); + }); + })(jQuery); + + \ No newline at end of file diff --git a/templates/connect.php b/templates/connect.php index edb8827ad..08819efb0 100755 --- a/templates/connect.php +++ b/templates/connect.php @@ -11,10 +11,12 @@ } /** - * @var array $VARS + * @var array $VARS + * @var Freemius $fs */ - $slug = $VARS['slug']; - $fs = freemius( $slug ); + $slug = $VARS['slug']; + $fs = freemius( $slug ); + $is_pending_activation = $fs->is_pending_activation(); $is_premium_only = $fs->is_only_premium(); $has_paid_plans = $fs->has_paid_plan(); @@ -38,15 +40,17 @@ $freemius_site_www = 'https://freemius.com'; - $freemius_site_url = $freemius_site_www . '/' . ($fs->has_paid_plan() ? - 'wordpress/' : - // Insights platform information. - 'wordpress/usage-tracking/'); + $freemius_site_url = $freemius_site_www . '/' . ( $fs->is_premium() ? + 'wordpress/' : + // Insights platform information. + 'wordpress/usage-tracking/' . $fs->get_id() . "/{$slug}/" ); - $freemius_site_url .= '?' . http_build_query( array( - 'id' => $fs->get_id(), - 'slug' => $slug, - ) ); + if ( $fs->is_premium() ) { + $freemius_site_url .= '?' . http_build_query( array( + 'id' => $fs->get_id(), + 'slug' => $slug, + ) ); + } $freemius_link = 'freemius.com'; @@ -91,19 +95,19 @@ class="wrapis_enable_anonymous() || $is_pending_activation || $button_label = 'resend-activation-email'; echo $fs->apply_filters( 'pending_activation_message', sprintf( - __fs( 'thanks-x', $slug ) . '
      ' . - __fs( 'pending-activation-message', $slug ), + fs_text( 'thanks-x', $slug ) . '
      ' . + fs_text( 'pending-activation-message', $slug ), $first_name, '' . $fs->get_plugin_name() . '', '' . $current_user->user_email . '', - __fs( 'complete-the-install', $slug ) + fs_text( 'complete-the-install', $slug ) ) ); } else if ( $require_license_key ) { $button_label = 'agree-activate-license'; echo $fs->apply_filters( 'connect-message_on-premium', - sprintf( __fs( 'hey-x', $slug ), $first_name ) . '
      ' . - sprintf( __fs( 'thanks-for-purchasing', $slug ), '' . $fs->get_plugin_name() . '' ), + sprintf( fs_text( 'hey-x', $slug ), $first_name ) . '
      ' . + sprintf( fs_text( 'thanks-for-purchasing', $slug ), '' . $fs->get_plugin_name() . '' ), $first_name, $fs->get_plugin_name() ); @@ -125,9 +129,9 @@ class="wrapis_enable_anonymous() || $is_pending_activation || } echo $fs->apply_filters( $filter, - sprintf( __fs( 'hey-x', $slug ), $first_name ) . '
      ' . + sprintf( fs_text( 'hey-x', $slug ), $first_name ) . '
      ' . sprintf( - __fs( $default_optin_message, $slug ), + fs_text( $default_optin_message, $slug ), '' . $fs->get_plugin_name() . '', '' . $current_user->user_login . '', '' . $site_url . '', @@ -144,17 +148,17 @@ class="wrapis_enable_anonymous() || $is_pending_activation ||
      + placeholder="" tabindex="1"/> + href="#">
      is_enable_anonymous() && ! $is_pending_activation && ! $require_license_key ) : ?> + class="button button-secondary" tabindex="2"> @@ -164,7 +168,7 @@ class="button button-secondary" tabindex="2"> + } ?>>
      @@ -175,7 +179,7 @@ class="button button-secondary" tabindex="2"> + } ?>>
      $permissions = array( 'profile' => array( 'icon-class' => 'dashicons dashicons-admin-users', - 'label' => __fs( 'permissions-profile' ), - 'desc' => __fs( 'permissions-profile_desc' ), + 'label' => $fs->get_text( 'permissions-profile' ), + 'desc' => $fs->get_text( 'permissions-profile_desc' ), 'priority' => 5, ), 'site' => array( 'icon-class' => 'dashicons dashicons-admin-settings', - 'label' => __fs( 'permissions-site' ), - 'desc' => __fs( 'permissions-site_desc' ), + 'label' => $fs->get_text( 'permissions-site' ), + 'desc' => $fs->get_text( 'permissions-site_desc' ), 'priority' => 10, ), - 'notices' => array( + 'notices' => array( 'icon-class' => 'dashicons dashicons-testimonial', - 'label' => __fs( 'permissions-admin-notices' ), - 'desc' => __fs( 'permissions-newsletter_desc' ), + 'label' => $fs->get_text( 'permissions-admin-notices' ), + 'desc' => $fs->get_text( 'permissions-newsletter_desc' ), 'priority' => 13, ), 'events' => array( 'icon-class' => 'dashicons dashicons-admin-plugins', - 'label' => __fs( 'permissions-events' ), - 'desc' => __fs( 'permissions-events_desc' ), + 'label' => $fs->get_text( 'permissions-events' ), + 'desc' => $fs->get_text( 'permissions-events_desc' ), 'priority' => 20, ), // 'plugins_themes' => array( // 'icon-class' => 'dashicons dashicons-admin-settings', -// 'label' => __fs( 'permissions-plugins_themes' ), -// 'desc' => __fs( 'permissions-plugins_themes_desc' ), +// 'label' => fs_text( 'permissions-plugins_themes' ), +// 'desc' => fs_text( 'permissions-plugins_themes_desc' ), // 'priority' => 30, // ), ); @@ -218,8 +222,8 @@ class="button button-secondary" tabindex="2"> if ( $fs->is_permission_requested( 'newsletter' ) ) { $permissions['newsletter'] = array( 'icon-class' => 'dashicons dashicons-email-alt', - 'label' => __fs( 'permissions-newsletter' ), - 'desc' => __fs( 'permissions-newsletter_desc' ), + 'label' => $fs->get_text( 'permissions-newsletter' ), + 'desc' => $fs->get_text( 'permissions-newsletter_desc' ), 'priority' => 15, ); } @@ -233,9 +237,9 @@ class="button button-secondary" tabindex="2"> if ( ! empty( $permissions ) ) : ?>
      -

      +

      - +
        $permission ) : ?>
      • - - + + - - + +

        + tabindex="1">   -   - +
      \ No newline at end of file diff --git a/templates/debug.php b/templates/debug.php index 29fa0e8d3..5e0fa6b75 100644 --- a/templates/debug.php +++ b/templates/debug.php @@ -14,16 +14,16 @@ $fs_options = FS_Option_Manager::get_manager( WP_FS__ACCOUNTS_OPTION_NAME, true ); ?> -

      newest->version ?>

      +

      newest->version ?>

      - +
      - - + +
      -

      +

      $gross ?>
      @@ -58,26 +58,69 @@ + onclick="if (confirm('')) this.parentNode.submit(); return false;"> + +
      - +
      - +
      + + + +
      + - - + + @@ -130,14 +173,14 @@ -

      +

      - - - - + + + + @@ -156,19 +199,19 @@
      get_option( 'plugins' ) ?> -

      +

      - - - - - - - - - + + + + + + + + + @@ -190,15 +233,15 @@ echo ' style="color: red; text-transform: uppercase;"'; } ?>>has_api_connectivity() ? - __fs( 'connected' ) : - __fs( 'blocked' ); + fs_text( 'connected' ) : + fs_text( 'blocked' ); } ?>is_on() ) { echo ' style="color: red; text-transform: uppercase;"'; } ?>>is_on() ? - __fs( 'on' ) : - __fs( 'off' ); + fs_text( 'on' ) : + fs_text( 'off' ); } ?> @@ -210,7 +253,7 @@ + class="button button-primary simulate-trial"> @@ -227,15 +270,15 @@ class="button button-primary simulate-trial"> -

      /

      +

      /

      file ?> public_key ?>
      - - - - - + + + + + @@ -245,7 +288,7 @@ class="button button-primary simulate-trial"> @@ -259,16 +302,16 @@ class="button button-primary simulate-trial"> $plugin_addons ) : ?> -

      +

      plan ) ? - base64_decode( $site->plan->name ) : + Freemius::_decrypt( $site->plan->name ) : '' ?> public_key ?>
      - - - - - - + + + + + + @@ -296,16 +339,16 @@ class="button button-primary simulate-trial"> -

      +

      - - - - - - + + + + + + @@ -330,19 +373,19 @@ class="button button-primary simulate-trial"> -

      +

      - - - - - - - - - + + + + + + + + + @@ -371,29 +414,29 @@ class="button button-primary simulate-trial"> -

      +

      - - - - - + + + + +
      -
      @@ -401,7 +444,7 @@ class="button button-primary simulate-trial">
      + class="dashicons dashicons-download">
      @@ -412,12 +455,12 @@ class="dashicons dashicons-download">
      - - - - - - + + + + + + diff --git a/templates/debug/api-calls.php b/templates/debug/api-calls.php index c795c8e73..6ce51caf6 100644 --- a/templates/debug/api-calls.php +++ b/templates/debug/api-calls.php @@ -36,7 +36,7 @@ $root_path_len = strlen( ABSPATH ); ?> -

      +

      Total Time:

      @@ -48,16 +48,16 @@ - - - - + + + + - + - - - + + + @@ -66,7 +66,7 @@ - + - - + + diff --git a/templates/debug/logger.php b/templates/debug/logger.php index 392dee464..38ed97ee0 100644 --- a/templates/debug/logger.php +++ b/templates/debug/logger.php @@ -12,18 +12,18 @@ $log_book = FS_Logger::get_log(); ?> -

      +

      #
      #
      . %s', @@ -130,8 +130,8 @@ ?> style="display: none">
      - - - - - - + + + + + + @@ -59,7 +59,7 @@ echo substr( $log['file'], $logger->get_file() ) . ':' . $log['line']; } ?> - + diff --git a/templates/debug/plugins-themes-sync.php b/templates/debug/plugins-themes-sync.php index a7616220a..104917ce9 100644 --- a/templates/debug/plugins-themes-sync.php +++ b/templates/debug/plugins-themes-sync.php @@ -14,31 +14,31 @@ $all_plugins = $fs_options->get_option( 'all_plugins' ); $all_themes = $fs_options->get_option( 'all_themes' ); ?> -

      +

      #
      - - + + - + @@ -46,19 +46,19 @@ - + diff --git a/templates/debug/scheduled-crons.php b/templates/debug/scheduled-crons.php index c17324ecc..54f6f70af 100644 --- a/templates/debug/scheduled-crons.php +++ b/templates/debug/scheduled-crons.php @@ -54,15 +54,15 @@ } } ?> -

      +

      plugins ) ?> timestamp ) && is_numeric( $all_plugins->timestamp ) ) { $diff = abs( WP_FS__SCRIPT_START_TIME - $all_plugins->timestamp ); $human_diff = ( $diff < MINUTE_IN_SECONDS ) ? - $diff . ' ' . __fs( 'sec' ) : + $diff . ' ' . fs_text( 'sec' ) : human_time_diff( WP_FS__SCRIPT_START_TIME, $all_plugins->timestamp ); if ( WP_FS__SCRIPT_START_TIME < $all_plugins->timestamp ) { - printf( __fs( 'in-x' ), $human_diff ); + printf( fs_text( 'in-x' ), $human_diff ); } else { - printf( __fs( 'x-ago' ), $human_diff ); + printf( fs_text( 'x-ago' ), $human_diff ); } } ?>
      themes ) ?> timestamp ) && is_numeric( $all_themes->timestamp ) ) { $diff = abs( WP_FS__SCRIPT_START_TIME - $all_themes->timestamp ); $human_diff = ( $diff < MINUTE_IN_SECONDS ) ? - $diff . ' ' . __fs( 'sec' ) : + $diff . ' ' . fs_text( 'sec' ) : human_time_diff( WP_FS__SCRIPT_START_TIME, $all_themes->timestamp ); if ( WP_FS__SCRIPT_START_TIME < $all_themes->timestamp ) { - printf( __fs( 'in-x' ), $human_diff ); + printf( fs_text( 'in-x' ), $human_diff ); } else { - printf( __fs( 'x-ago' ), $human_diff ); + printf( fs_text( 'x-ago' ), $human_diff ); } } ?>
      - - - - - + + + + + @@ -76,13 +76,13 @@ if ( is_numeric( $cron['last'] ) ) { $diff = abs( WP_FS__SCRIPT_START_TIME - $cron['last'] ); $human_diff = ( $diff < MINUTE_IN_SECONDS ) ? - $diff . ' ' . __fs( 'sec' ) : + $diff . ' ' . fs_text( 'sec' ) : human_time_diff( WP_FS__SCRIPT_START_TIME, $cron['last'] ); if ( WP_FS__SCRIPT_START_TIME < $cron['last'] ) { - printf( __fs( 'in-x' ), $human_diff ); + printf( fs_text( 'in-x' ), $human_diff ); } else { - printf( __fs( 'x-ago' ), $human_diff ); + printf( fs_text( 'x-ago' ), $human_diff ); } // echo ' ' . $cron['last']; @@ -92,13 +92,13 @@ if ( is_numeric( $cron['next'] ) ) { $diff = abs( WP_FS__SCRIPT_START_TIME - $cron['next'] ); $human_diff = ( $diff < MINUTE_IN_SECONDS ) ? - $diff . ' ' . __fs( 'sec' ) : + $diff . ' ' . fs_text( 'sec' ) : human_time_diff( WP_FS__SCRIPT_START_TIME, $cron['next'] ); if ( WP_FS__SCRIPT_START_TIME < $cron['next'] ) { - printf( __fs( 'in-x' ), $human_diff ); + printf( fs_text( 'in-x' ), $human_diff ); } else { - printf( __fs( 'x-ago' ), $human_diff ); + printf( fs_text( 'x-ago' ), $human_diff ); } } ?> diff --git a/templates/forms/deactivation/contact.php b/templates/forms/deactivation/contact.php index 3c1db5d6d..475f4c1cc 100644 --- a/templates/forms/deactivation/contact.php +++ b/templates/forms/deactivation/contact.php @@ -16,8 +16,8 @@ $slug = $VARS['slug']; $fs = freemius( $slug ); - echo __fs( 'contact-support-before-deactivation', $slug ) + echo fs_text( 'contact-support-before-deactivation', $slug ) . sprintf(" %s", $fs->contact_url( 'technical_support' ), - __fs( 'contact-support', $slug ) + fs_text( 'contact-support', $slug ) ); diff --git a/templates/forms/deactivation/form.php b/templates/forms/deactivation/form.php index a0abfc24e..6b849ca90 100644 --- a/templates/forms/deactivation/form.php +++ b/templates/forms/deactivation/form.php @@ -53,7 +53,7 @@ if ( $is_anonymous ) { $anonymous_feedback_checkbox_html = ''; } else { $anonymous_feedback_checkbox_html = ''; @@ -68,16 +68,16 @@ '
      ' + '
      ' + '
      ' - + '

      ' + + '

      ' + '
      ' + '
      ' + '

      ' - + '

      :

        ' + reasonsHtml + '
      ' + + '

      :

        ' + reasonsHtml + '
      ' + '
      ' + ' ' + '
      ' + '
      ', @@ -167,11 +167,12 @@ function registerEventHandlers() { url : ajaxurl, method : 'POST', data : { - 'action' : 'get_action_tag( 'submit_uninstall_reason' ) ?>', - 'slug' : '', - 'reason_id' : $radio.val(), - 'reason_info' : userReason, - 'is_anonymous': isAnonymousFeedback() + action : 'get_ajax_action( 'submit_uninstall_reason' ) ?>', + security : 'get_ajax_security( 'submit_uninstall_reason' ) ?>', + slug : '', + reason_id : $radio.val(), + reason_info : userReason, + is_anonymous: isAnonymousFeedback() }, beforeSend: function () { _parent.find('.fs-modal-footer .button').addClass('disabled'); @@ -211,7 +212,7 @@ function registerEventHandlers() { $modal.find('.reason-input').remove(); $modal.find( '.internal-message' ).hide(); - $modal.find('.button-deactivate').text(''); + $modal.find('.button-deactivate').text(''); enableDeactivateButton(); @@ -228,7 +229,7 @@ function registerEventHandlers() { _parent.find('input, textarea').attr('placeholder', inputPlaceholder).focus(); if (isOtherReasonSelected()) { - showMessage(''); + showMessage(''); disableDeactivateButton(); } } @@ -348,9 +349,9 @@ function updateButtonLabels() { // Reset the deactivate button's text. if ('confirm' === getCurrentPanel()) { - $deactivateButton.text(''); + $deactivateButton.text(''); } else { - $deactivateButton.text(''); + $deactivateButton.text(''); } } diff --git a/templates/forms/deactivation/retry-skip.php b/templates/forms/deactivation/retry-skip.php index 1e2408900..7fb29bc80 100644 --- a/templates/forms/deactivation/retry-skip.php +++ b/templates/forms/deactivation/retry-skip.php @@ -17,8 +17,8 @@ $fs = freemius( $slug ); $skip_url = fs_nonce_url( $fs->_get_admin_page_url( '', array( 'fs_action' => $slug . '_skip_activation' ) ), $slug . '_skip_activation' ); - $skip_text = strtolower( __fs( 'skip', $slug ) ); - $use_plugin_anonymously_text = __fs( 'click-here-to-use-plugin-anonymously', $slug ); + $skip_text = strtolower( fs_text( 'skip', $slug ) ); + $use_plugin_anonymously_text = fs_text( 'click-here-to-use-plugin-anonymously', $slug ); - echo sprintf( __fs( 'dont-have-to-share-any-data', $slug ), "{$skip_text}" ) + echo sprintf( fs_text( 'dont-have-to-share-any-data', $slug ), "{$skip_text}" ) . " {$use_plugin_anonymously_text}"; diff --git a/templates/forms/license-activation.php b/templates/forms/license-activation.php index 303832a71..2555ae34e 100644 --- a/templates/forms/license-activation.php +++ b/templates/forms/license-activation.php @@ -16,11 +16,11 @@ $slug = $VARS['slug']; $fs = freemius( $slug ); - $cant_find_license_key_text = __fs( 'cant-find-license-key', $slug ); - $message_above_input_field = __fs( 'activate-license-message', $slug ); + $cant_find_license_key_text = fs_text( 'cant-find-license-key', $slug ); + $message_above_input_field = fs_text( 'activate-license-message', $slug ); $message_below_input_field = ''; - $header_title = __fs( $fs->is_free_plan() ? 'activate-license' : 'update-license', $slug ); + $header_title = fs_text( $fs->is_free_plan() ? 'activate-license' : 'update-license', $slug ); if ( $fs->is_registered() ) { $activate_button_text = $header_title; @@ -32,12 +32,12 @@ $freemius_link = 'freemius.com'; - $message_below_input_field = sprintf( __fs( 'license-sync-disclaimer', $slug ), $freemius_link ); + $message_below_input_field = sprintf( fs_text( 'license-sync-disclaimer', $slug ), $freemius_link ); - $activate_button_text = __fs( 'agree-activate-license', $slug ); + $activate_button_text = fs_text( 'agree-activate-license', $slug ); } - $license_key_text = __fs( 'license-key' , $slug ); + $license_key_text = fs_text( 'license-key' , $slug ); /** * IMPORTANT: @@ -133,7 +133,8 @@ function registerEventHandlers() { url: ajaxurl, method: 'POST', data: { - action : 'fs_activate_license_' + pluginSlug, + action : 'get_ajax_action( 'activate_license' ) ?>', + security : 'get_ajax_security( 'activate_license' ) ?>', slug : pluginSlug, license_key: licenseKey }, @@ -148,7 +149,7 @@ function registerEventHandlers() { // Redirect to the "Account" page and sync the license. window.location.href = resultObj.next_page; } else { - showError( resultObj.error ); + showError( resultObj.error.message ? resultObj.error.message : resultObj.error ); resetActivateLicenseButton(); } } diff --git a/templates/forms/optout.php b/templates/forms/optout.php index 3f8f8024d..c1758f521 100644 --- a/templates/forms/optout.php +++ b/templates/forms/optout.php @@ -12,6 +12,7 @@ /** * @var array $VARS + * @var Freemius $fs */ $slug = $VARS['slug']; $fs = freemius( $slug ); @@ -21,12 +22,12 @@ 'allow_tracking'; $plugin_title = "{$fs->get_plugin()->title}"; - $opt_out_button_text = __fs( 'opt-out', $slug ); + $opt_out_button_text = fs_text( 'opt-out', $slug ); // @todo Change 'plugin' with module type when migrating with 1.2.2 (themes version). - $opt_out_message_appreciation = sprintf( __fs( 'opt-out-message-appreciation', $slug ), 'plugin' ); - $opt_out_message_usage_tracking = sprintf( __fs( 'opt-out-message-usage-tracking', $slug ), $plugin_title ); + $opt_out_message_appreciation = sprintf( fs_text( 'opt-out-message-appreciation', $slug ), 'plugin' ); + $opt_out_message_usage_tracking = sprintf( fs_text( 'opt-out-message-usage-tracking', $slug ), $plugin_title ); $opt_out_message_clicking_opt_out = sprintf( - __fs( 'opt-out-message-clicking-opt-out', $slug ), + fs_text( 'opt-out-message-clicking-opt-out', $slug ), $plugin_title, sprintf( '%s', @@ -71,16 +72,14 @@ + ' ' + ' ' + ' ' + '', $modal = $( modalHtml ), $adminNotice = $( ), action = '', - optOutActionTag = 'get_action_tag( 'stop_tracking' ) ?>', - optInActionTag = 'get_action_tag( 'allow_tracking' ) ?>', - $actionLink = $( 'span.opt-in-or-opt-out. a' ), + $actionLink = $( 'span.opt-in-or-opt-out. a' ), $optOutButton = $modal.find( '.button-opt-out' ), $optOutErrorMessage = $modal.find( '.opt-out-error-message' ), pluginSlug = ''; @@ -134,7 +133,7 @@ function closeModal() { function resetOptOutButton() { enableOptOutButton(); - $optOutButton.text( ); + $optOutButton.text( ); } function resetModal() { @@ -155,12 +154,19 @@ function sendRequest() { url: ajaxurl, method: 'POST', data: { - action: ( 'stop_tracking' == action ? optOutActionTag : optInActionTag ), + action : ( 'stop_tracking' == action ? + 'get_ajax_action( 'stop_tracking' ) ?>' : + 'get_ajax_action( 'allow_tracking' ) ?>' + ), + security : ( 'stop_tracking' == action ? + 'get_ajax_security( 'stop_tracking' ) ?>' : + 'get_ajax_security( 'allow_tracking' ) ?>' + ), slug : pluginSlug }, beforeSend: function() { if ( 'opt-in' == action ) { - $actionLink.text( ) + $actionLink.text( ); } else { $optOutButton.text( ); } diff --git a/templates/forms/resend-key.php b/templates/forms/resend-key.php index 1f7a3e958..3afbb17db 100644 --- a/templates/forms/resend-key.php +++ b/templates/forms/resend-key.php @@ -16,10 +16,10 @@ $slug = $VARS['slug']; $fs = freemius( $slug ); - $send_button_text = __fs( 'send-license-key', $slug ); - $cancel_button_text = __fs( 'cancel', $slug ); + $send_button_text = fs_text( 'send-license-key', $slug ); + $cancel_button_text = fs_text( 'cancel', $slug ); $email_address_placeholder = fs_esc_attr( 'email-address', $slug ); - $other_text = __fs( 'reason-other', $slug ); + $other_text = fs_text( 'reason-other', $slug ); $is_freemium = $fs->is_freemium(); @@ -52,7 +52,7 @@ HTML; } - $message_above_input_field = esc_html( __fs( 'ask-for-upgrade-email-address', $slug ) ); + $message_above_input_field = esc_html( fs_text( 'ask-for-upgrade-email-address', $slug ) ); $modal_content_html = <<< HTML

      {$message_above_input_field}

      @@ -142,7 +142,8 @@ function registerEventHandlers() { url : ajaxurl, method : 'POST', data : { - action: 'get_action_tag( 'resend_license_key' ) ?>', + action : 'get_ajax_action( 'resend_license_key' ) ?>', + security : 'get_ajax_security( 'resend_license_key' ) ?>', slug : moduleSlug, email : email }, @@ -226,10 +227,6 @@ function updateButtonState() { $sendButton.toggleClass('disabled', !( -1 < getEmail().indexOf('@') )); } - function enableButton() { - $sendButton.removeClass('disabled'); - } - function disableButton() { $sendButton.addClass('disabled'); } diff --git a/templates/forms/trial-start.php b/templates/forms/trial-start.php index 95750b4f9..0ed2abc29 100644 --- a/templates/forms/trial-start.php +++ b/templates/forms/trial-start.php @@ -17,12 +17,12 @@ $fs = freemius( $slug ); $message_header = sprintf( - __fs( 'start-trial-prompt-header', $slug ), + fs_text( 'start-trial-prompt-header', $slug ), '', '' ); $message_content = sprintf( - __fs( 'start-trial-prompt-message', $slug ), + fs_text( 'start-trial-prompt-message', $slug ), sprintf( '%s', 'https://freemius.com', @@ -80,8 +80,8 @@ function registerEventHandlers() { url : ajaxurl, method : 'POST', data : { - action : 'get_action_tag( 'start_trial' ) ?>', - security: 'get_action_tag( 'start_trial' ) ) ?>', + action : 'get_ajax_action( 'start_trial' ) ?>', + security: 'get_ajax_security( 'start_trial' ) ?>', slug : moduleSlug, trial : trialData }, diff --git a/templates/plugin-info/description.php b/templates/plugin-info/description.php index b3d92c822..ded5c11bf 100644 --- a/templates/plugin-info/description.php +++ b/templates/plugin-info/description.php @@ -52,7 +52,7 @@ info->screenshots ) ) : ?> info->screenshots ?>
      -

      slug ) ?>

      +

      slug ) ?>

        $url ) : ?> @@ -68,7 +68,7 @@ } diff --git a/templates/plugin-info/features.php b/templates/plugin-info/features.php index c73dcd886..f614e520b 100644 --- a/templates/plugin-info/features.php +++ b/templates/plugin-info/features.php @@ -38,7 +38,7 @@ if ( ! isset( $features_plan_map['support'] ) ) { $support_feature = new stdClass(); $support_feature->id = 'support'; - $support_feature->title = __fs( 'Support', $plugin->slug ); + $support_feature->title = fs_text( 'Support', $plugin->slug ); $features_plan_map[ $support_feature->id ] = array( 'feature' => $support_feature, 'plans' => array() ); } else { $support_feature = $features_plan_map['support']; @@ -51,7 +51,7 @@ // Add updates as a feature for all plans. $updates_feature = new stdClass(); $updates_feature->id = 'updates'; - $updates_feature->title = __fs( 'unlimited-updates', $plugin->slug ); + $updates_feature->title = fs_text( 'unlimited-updates', $plugin->slug ); $features_plan_map[ $updates_feature->id ] = array( 'feature' => $updates_feature, 'plans' => array() ); foreach ( $plans as $plan ) { $features_plan_map[ $updates_feature->id ]['plans'][ $plan->id ] = $updates_feature; diff --git a/templates/plugin-info/screenshots.php b/templates/plugin-info/screenshots.php index f47e94f0b..2a3608f82 100644 --- a/templates/plugin-info/screenshots.php +++ b/templates/plugin-info/screenshots.php @@ -28,7 +28,7 @@ $url = 'http' . ( WP_FS__IS_HTTPS ? 's' : '' ) . ':' . $url; ?>