Image Photo Gallery Final Tiles Grid - Version 3.3.13

Version Description

  • Fixed menu slug
Download this release

Release Info

Developer GreenTreeLabs
Plugin Icon 128x128 Image Photo Gallery Final Tiles Grid
Version 3.3.13
Comparing to
See all releases

Code changes from version 3.0.6 to 3.3.13

Files changed (76) hide show
  1. FinalTilesGalleryLite.php +1493 -1992
  2. admin/add-gallery.php +217 -63
  3. admin/adv.php +0 -0
  4. admin/css/style.css +113 -37
  5. admin/edit-gallery.php +17 -16
  6. admin/galleries.php +0 -45
  7. admin/header.php +18 -4
  8. admin/images/circles.jpg +0 -0
  9. admin/images/modula-strip.jpg +0 -0
  10. admin/images/modula.jpg +0 -0
  11. admin/include/edit-gallery.php +1183 -223
  12. admin/include/fields.php +1099 -0
  13. admin/include/image-list.php +1 -1
  14. admin/overview.php +3 -3
  15. admin/scripts/{final-tiles-grid-gallery-lite-admin.js → final-tiles-gallery-admin.js} +285 -15
  16. admin/support.php +9 -16
  17. admin/tutorial/tutorial-add-image-size.png +0 -0
  18. admin/tutorial/tutorial-add-image.png +0 -0
  19. admin/tutorial/tutorial-add-page.jpg +0 -0
  20. admin/tutorial/tutorial-add.png +0 -0
  21. admin/tutorial/tutorial-dashboard.png +0 -0
  22. admin/tutorial/tutorial-edit-list.jpg +0 -0
  23. admin/tutorial/tutorial-image-added.jpg +0 -0
  24. admin/tutorial/tutorial-image-edit.jpg +0 -0
  25. admin/tutorial/tutorial-image-panel.JPG +0 -0
  26. admin/tutorial/tutorial-images-tab.png +0 -0
  27. admin/tutorial/tutorial-tabs.jpg +0 -0
  28. admin/upgrade.php +0 -4
  29. freemius/.codeclimate.yml +0 -19
  30. freemius/.github/ISSUE_TEMPLATE.md +0 -29
  31. freemius/.travis.yml +0 -11
  32. freemius/assets/css/admin/dialog-boxes.css +2 -2
  33. freemius/assets/img/final-tiles-grid-gallery-lite.jpg +0 -0
  34. freemius/assets/scss/_colors.scss +10 -3
  35. freemius/assets/scss/_load.scss +4 -4
  36. freemius/assets/scss/_mixins.scss +63 -7
  37. freemius/assets/scss/_start.scss +3 -3
  38. freemius/assets/scss/_vars.scss +5 -5
  39. freemius/assets/scss/admin/_ajax-loader.scss +49 -0
  40. freemius/assets/scss/admin/_auto-install.scss +33 -0
  41. freemius/assets/scss/admin/_modal-common.scss +31 -0
  42. freemius/assets/scss/admin/connect.scss +471 -471
  43. freemius/assets/scss/admin/dialog-boxes.scss +3 -1
  44. freemius/composer.json +0 -10
  45. freemius/config.php +8 -0
  46. freemius/gulpfile.js +0 -58
  47. freemius/includes/class-freemius-abstract.php +45 -1
  48. freemius/includes/class-freemius.php +1063 -374
  49. freemius/includes/class-fs-logger.php +5 -3
  50. freemius/includes/class-fs-plugin-updater.php +272 -4
  51. freemius/includes/debug/class-fs-debug-bar-panel.php +1 -1
  52. freemius/includes/debug/debug-bar-start.php +2 -2
  53. freemius/includes/fs-core-functions.php +82 -47
  54. freemius/includes/fs-essential-functions.php +55 -41
  55. freemius/includes/fs-plugin-info-dialog.php +53 -53
  56. freemius/includes/i18n.php +537 -517
  57. freemius/includes/managers/class-fs-admin-menu-manager.php +156 -9
  58. freemius/includes/managers/class-fs-admin-notice-manager.php +312 -312
  59. freemius/includes/sdk/Exceptions/ArgumentNotExistException.php +8 -8
  60. freemius/includes/sdk/Exceptions/EmptyArgumentException.php +8 -8
  61. freemius/includes/sdk/Exceptions/Exception.php +73 -73
  62. freemius/includes/sdk/Exceptions/InvalidArgumentException.php +7 -7
  63. freemius/includes/sdk/Exceptions/OAuthException.php +11 -11
  64. freemius/includes/sdk/Freemius.php +626 -582
  65. freemius/includes/sdk/FreemiusBase.php +188 -188
  66. freemius/languages/freemius-da_DK.mo +0 -0
  67. freemius/languages/freemius-da_DK.po +829 -700
  68. freemius/languages/freemius-en.mo +0 -0
  69. freemius/languages/freemius-en.po +453 -392
  70. freemius/languages/freemius-he.mo +0 -0
  71. freemius/languages/freemius-he.po +825 -695
  72. freemius/languages/freemius-it_IT.mo +0 -0
  73. freemius/languages/freemius-it_IT.po +533 -611
  74. freemius/languages/freemius-ja_JP.mo +0 -0
  75. freemius/languages/freemius-ja_JP.po +700 -571
  76. freemius/languages/freemius.pot +117 -112
FinalTilesGalleryLite.php CHANGED
@@ -1,1992 +1,1493 @@
1
- <?php
2
- /**
3
- Plugin Name: Final Tiles Grid Gallery Lite
4
- Plugin URI: http://codecanyon.net/item/final-tiles-gallery-for-wordpress/5189351?ref=GreenTreeLabs
5
- Description: Wordpress Plugin for creating responsive image galleries. By: Green Tree Labs
6
- Author: Green Tree Labs
7
- Version: 3.0.6
8
- Author URI: http://codecanyon.net/user/GreenTreeLabs
9
- */
10
- define("FTGLITEVERSION", "3.0.6");
11
- // Create a helper function for easy SDK access.
12
- function ftggl_fs() {
13
- global $ftggl_fs;
14
-
15
- if ( ! isset( $ftggl_fs ) ) {
16
- // Include Freemius SDK.
17
- require_once dirname(__FILE__) . '/freemius/start.php';
18
-
19
- $ftggl_fs = fs_dynamic_init( array(
20
- 'id' => '1002',
21
- 'slug' => 'final-tiles-grid-gallery-lite',
22
- 'type' => 'plugin',
23
- 'public_key' => 'pk_d0e075b84d491d510a1d0a21087af',
24
- 'is_premium' => false,
25
- 'has_addons' => false,
26
- 'has_paid_plans' => false,
27
- 'menu' => array(
28
- 'slug' => "ftg-lite-gallery-admin",
29
- 'account' => false,
30
- 'contact' => false,
31
- 'support' => false,
32
- ),
33
- ) );
34
- }
35
-
36
- return $ftggl_fs;
37
- }
38
-
39
- // Init Freemius.
40
- ftggl_fs();
41
- // Signal that SDK was initiated.
42
- do_action( 'ftggl_fs_loaded' );
43
-
44
- function ftggl_fs_custom_connect_message_on_update(
45
- $message,
46
- $user_first_name,
47
- $plugin_title,
48
- $user_login,
49
- $site_link,
50
- $freemius_link
51
- ) {
52
- return sprintf(
53
- __fs( 'hey-x' ) . '<br>' .
54
- __( 'Please help us improve %2$s! If you opt-in, some data about your usage of %2$s will be sent to %5$s. If you skip this, that\'s okay! %2$s will still work just fine.<br><br>The main reason we need this analytics is understanding how admin UI is used and how we can improve it.', 'final-tiles-grid-gallery-lite' ),
55
- $user_first_name,
56
- '<b>' . $plugin_title . '</b>',
57
- '<b>' . $user_login . '</b>',
58
- $site_link,
59
- $freemius_link
60
- );
61
- }
62
-
63
- ftggl_fs()->add_filter('connect_message_on_update', 'ftggl_fs_custom_connect_message_on_update', 10, 6);
64
-
65
- define("PRO_CALL", "<span class='procall'>(<a href='http://1.envato.market/c/288541/275988/4415?u=https%3A%2F%2Fcodecanyon.net%2Fitem%2Ffinal-tiles-wordpress-gallery%2F5189351' target='_blank'>available with PRO version</a>)</span>");
66
- define("PRO_UNLOCK", "<a href='http://1.envato.market/c/288541/275988/4415?u=https%3A%2F%2Fcodecanyon.net%2Fitem%2Ffinal-tiles-wordpress-gallery%2F5189351' target='_blank'>Add unlimited images with PRO version</a>");
67
-
68
-
69
- if (!class_exists("FinalTiles_GalleryLite"))
70
- {
71
- class FinalTiles_GalleryLite
72
- {
73
- private $defaultValues = array(
74
- 'aClass' => '',
75
- 'afterGalleryText' => '',
76
- 'allFilterLabel' => 'All',
77
- 'ajaxLoading' => 'F',
78
- 'backgroundColor' => 'transparent',
79
- 'beforeGalleryText' => '',
80
- 'blank' => 'F',
81
- 'borderColor' => 'transparent',
82
- 'borderRadius' => 0,
83
- 'borderSize' => 0,
84
- 'captionBackgroundColor' => '#000000',
85
- 'captionBehavior' => 'hidden',
86
- 'captionColor' => '#ffffff',
87
- 'captionEasing' => 'linear',
88
- 'captionEffect' => 'fade',
89
- 'captionEffectDuration' => 250,
90
- 'captionEmpty' => 'hide',
91
- 'captionFontSize' => 12,
92
- 'captionFrame' => 'F',
93
- 'captionFrameColor' => '#ffffff',
94
- 'captionFullHeight' => 'T',
95
- 'captionHorizontalAlignment' => 'Center',
96
- 'captionIcon' => 'zoom',
97
- 'captionIconColor' => '#ffffff',
98
- 'captionIconSize' => 12,
99
- 'captionMobileBehavior' => "desktop",
100
- 'captionOpacity' => 80,
101
- 'captionPosition' => 'inside',
102
- 'captionVerticalAlignment' => 'Middle',
103
- 'columns' => 4,
104
- 'columnsPhoneLandscape' => 3,
105
- 'columnsPhonePortrait' => 2,
106
- 'columnsTabletLandscape' => 4,
107
- 'columnsTabletPortrait' => 3,
108
- 'compressHTML' => 'T',
109
- 'customCaptionIcon' =>'',
110
- 'defaultFilter' => '',
111
- 'defaultSize' => 'medium',
112
- 'delay' => 0,
113
- 'disableLightboxGroups' => 'F',
114
- 'enableFacebook' => 'F',
115
- 'enableGplus' => 'F',
116
- 'enablePinterest' => 'F',
117
- 'enableTwitter' => 'F',
118
- 'enlargeImages' => 'T',
119
- 'envatoReferral' => 'GreenTreeLabs',
120
- 'filterClick' => 'F',
121
- 'filters' => '',
122
- 'gridCellSize' => '25',
123
- 'hoverIconRotation' => 'F',
124
- 'hoverRotation' => 0,
125
- 'hoverZoom' => 100,
126
- 'imageSizeFactor' => 90,
127
- 'imageSizeFactorCustom' => '',
128
- 'imageSizeFactorPhoneLandscape' => 60,
129
- 'imageSizeFactorPhonePortrait' => 50,
130
- 'imageSizeFactorTabletLandscape' => 80,
131
- 'imageSizeFactorTabletPortrait' => 70,
132
- 'imagesOrder' => 'user',
133
- 'layout' => 'final',
134
- 'lazyLoad' => false,
135
- 'lightbox' => 'lightbox2',
136
- 'lightboxImageSize' => 'large',
137
- 'loadedHSlide' => 0,
138
- 'loadedRotate' => 0,
139
- 'loadedScale' => 100,
140
- 'loadedVSlide' => 0,
141
- 'loadingBarBackgroundColor' => "#fff",
142
- 'loadingBarColor' => "#fff",
143
- 'loadMethod' => 'sequential',
144
- 'margin' => 10,
145
- 'max_posts' => 0,
146
- 'minTileWidth' => '250',
147
- 'mobileLightbox' => 'swipebox',
148
- 'post_types' => '',
149
- 'recentPostsCaption' => 'title',
150
- 'recentPostsCaptionAutoExcerptLength' => 20,
151
- 'rel' => '',
152
- 'reverseOrder' => false,
153
- 'script' => '',
154
- 'scrollEffect' => 'none',
155
- 'shadowColor' => '#cccccc',
156
- 'shadowSize' => 0,
157
- 'socialIconColor' => '#ffffff',
158
- 'source' => 'images',
159
- 'style' => '',
160
- 'support' => 'F',
161
- 'supportText' => 'Powered by Final Tiles Grid Gallery',
162
- 'tilesPerPage' => 0,
163
- 'titleFontSize' => 14,
164
- 'width' => '100%',
165
- 'wp_field_caption' => 'description',
166
- 'wp_field_title' => 'title'
167
- );
168
-
169
- //Constructor
170
- public function __construct()
171
- {
172
- $this->plugin_name = plugin_basename(__FILE__);
173
- $this->define_constants();
174
- $this->define_db_tables();
175
- $this->FinalTilesdb = $this->create_db_conn();
176
-
177
-
178
- register_activation_hook(__FILE__, array($this, 'activation'));
179
-
180
- add_filter('widget_text', 'do_shortcode');
181
-
182
- add_action('plugins_loaded', array($this, 'create_textdomain'));
183
-
184
- add_action('wp_enqueue_scripts', array($this, 'add_gallery_scripts'));
185
-
186
- //add_action( 'admin_init', array($this,'gallery_admin_init') );
187
- add_action('admin_menu', array($this, 'add_gallery_admin_menu'));
188
-
189
- add_shortcode('FinalTilesGallery', array($this, 'gallery_shortcode_handler'));
190
-
191
- add_action('wp_ajax_save_gallery', array($this, 'save_gallery'));
192
- add_action('wp_ajax_add_new_gallery', array($this, 'add_new_gallery'));
193
- add_action('wp_ajax_delete_gallery', array($this, 'delete_gallery'));
194
- add_action('wp_ajax_clone_gallery', array($this, 'clone_gallery'));
195
- add_action('wp_ajax_save_image', array($this, 'save_image'));
196
- add_action('wp_ajax_add_image', array($this, 'add_image'));
197
- add_action('wp_ajax_save_video', array($this, 'save_video'));
198
- add_action('wp_ajax_sort_images', array($this, 'sort_images'));
199
- add_action('wp_ajax_delete_image', array($this, 'delete_image'));
200
- add_action('wp_ajax_assign_filters', array($this, 'assign_filters'));
201
- add_action('wp_ajax_assign_group', array($this, 'assign_group'));
202
- add_action('wp_ajax_toggle_visibility', array($this, 'toggle_visibility'));
203
- add_action('wp_ajax_refresh_gallery', array($this, 'refresh_gallery'));
204
- add_action('wp_ajax_get_gallery_configuration', array($this, 'get_configuration'));
205
- add_action('wp_ajax_update_gallery_configuration', array($this, 'update_configuration'));
206
- add_action('wp_ajax_get_image_size_url', array($this, 'get_image_size_url'));
207
-
208
- add_filter('mce_buttons', array($this, 'editor_button'));
209
- add_filter('mce_external_plugins', array($this, 'register_editor_plugin'));
210
- add_action('wp_ajax_ftg_shortcode_editor', array($this, 'ftg_shortcode_editor'));
211
-
212
- add_filter('plugin_row_meta', array($this, 'register_links'), 10, 2);
213
-
214
- add_action( 'wp_ajax_load_chunk', array($this, 'load_chunk') );
215
- add_action( 'wp_ajax_nopriv_load_chunk', array($this, 'load_chunk') );
216
-
217
- add_action( 'admin_notices', array( $this, 'review' ) );
218
- add_action( 'wp_ajax_ftg_dismiss_review', array( $this, 'dismiss_review' ) );
219
- add_filter( 'admin_footer_text', array( $this, 'admin_footer' ), 1, 2 );
220
-
221
- $this->resetFields();
222
- }
223
-
224
- public function review()
225
- {
226
- // Verify that we can do a check for reviews.
227
- $review = get_option( 'ftg_review' );
228
- $time = time();
229
- $load = false;
230
- $there_was_review = false;
231
-
232
- if ( ! $review ) {
233
- $review = array(
234
- 'time' => $time,
235
- 'dismissed' => false
236
- );
237
- $load = true;
238
- $there_was_review = false;
239
- } else {
240
- // Check if it has been dismissed or not.
241
- if ( (isset( $review['dismissed'] ) && ! $review['dismissed']) && (isset( $review['time'] ) && (($review['time'] + DAY_IN_SECONDS) <= $time)) ) {
242
- $load = true;
243
- }
244
- }
245
-
246
- // If we cannot load, return early.
247
- if ( ! $load ) {
248
- return;
249
- }
250
-
251
- // Update the review option now.
252
- update_option( 'ftg_review', $review );
253
-
254
- // Run through optins on the site to see if any have been loaded for more than a week.
255
- $valid = false;
256
- $galleries = $this->FinalTilesdb->getGalleries();
257
-
258
- if ( ! $galleries )
259
- {
260
- return;
261
- }
262
-
263
- $with_date = false;
264
- foreach ( $galleries as $gallery )
265
- {
266
- if(! isset($gallery->date))
267
- continue;
268
-
269
- $with_date = true;
270
- $data = $gallery->date;
271
-
272
- // Check the creation date of the local optin. It must be at least one week after.
273
- $created = isset( $data ) ? strtotime( $data ) + (7 * DAY_IN_SECONDS) : false;
274
- if ( ! $created ) {
275
- continue;
276
- }
277
-
278
- if ( $created <= $time ) {
279
- $valid = true;
280
- break;
281
- }
282
- }
283
-
284
- if(! $with_date && count($galleries) > 0 && ! $there_was_review)
285
- {
286
- $valid = true;
287
- }
288
-
289
- // If we don't have a valid optin yet, return.
290
- if ( ! $valid )
291
- {
292
- return;
293
- }
294
-
295
- // We have a candidate! Output a review message.
296
- ?>
297
- <div class="notice notice-info is-dismissible ftg-review-notice">
298
- <p><?php _e( 'Hey, I noticed you created a photo gallery with Final Tiles - that’s awesome! Would you mind give it a 5-star rating on WordPress to help us spread the word and boost our motivation for new featrues?', 'final-tiles-gallery-lite' ); ?></p>
299
- <p><strong><?php _e( 'Diego Imbriani<br>Founder of GreenTreeLabs', 'final-tiles-gallery' ); ?></strong></p>
300
- <p>
301
- <a href="https://wordpress.org/support/plugin/final-tiles-grid-gallery-lite/reviews/?filter=5#new-post" class="ftg-dismiss-review-notice ftg-review-out" target="_blank" rel="noopener"><?php _e( 'Ok, you deserve it', 'final-tiles-gallery-lite' ); ?></a><br>
302
- <a href="#" class="ftg-dismiss-review-notice" rel="noopener"><?php _e( 'Nope, maybe later', 'final-tiles-gallery' ); ?></a><br>
303
- <a href="#" class="ftg-dismiss-review-notice" rel="noopener"><?php _e( 'I already did', 'final-tiles-gallery' ); ?></a><br>
304
- </p>
305
- </div>
306
- <script type="text/javascript">
307
- jQuery(document).ready( function($) {
308
- $(document).on('click', '.ftg-dismiss-review-notice, .ftg-review-notice button', function( event ) {
309
- if ( ! $(this).hasClass('ftg-review-out') ) {
310
- event.preventDefault();
311
- }
312
-
313
- $.post( ajaxurl, {
314
- action: 'ftg_dismiss_review'
315
- });
316
-
317
- $('.ftg-review-notice').remove();
318
- });
319
- });
320
- </script>
321
- <?php
322
- }
323
-
324
- public function dismiss_review() {
325
-
326
- $review = get_option( 'ftg_review' );
327
- if ( ! $review ) {
328
- $review = array();
329
- }
330
-
331
- $review['time'] = time();
332
- $review['dismissed'] = true;
333
-
334
- update_option( 'ftg_review', $review );
335
- die;
336
- }
337
-
338
- public function admin_footer( $text )
339
- {
340
- global $current_screen;
341
- if ( !empty( $current_screen->id ) && strpos( $current_screen->id, 'ftg' ) !== false ) {
342
- $url = 'https://wordpress.org/support/plugin/final-tiles-grid-gallery-lite/reviews/?filter=5#new-post';
343
- $text = sprintf( __( 'Please rate <strong>Final Tiles Gallery</strong> <a href="%s" target="_blank">&#9733;&#9733;&#9733;&#9733;&#9733;</a> on <a href="%s" target="_blank">WordPress.org</a> to help us spread the word. Thank you from the Final Tiles Gallery team!', 'wpforms' ), $url, $url );
344
- }
345
- return $text;
346
- }
347
-
348
- public function gallery_admin_bar()
349
- {
350
- global $wp_admin_bar;
351
-
352
- $wp_admin_bar->add_menu( array(
353
- 'id' => 'ftg-upgrade-bar',
354
- 'href' => 'http://1.envato.market/c/288541/275988/4415?u=https%3A%2F%2Fcodecanyon.net%2Fitem%2Ffinal-tiles-wordpress-gallery%2F5189351',
355
- 'parent' => 'top-secondary',
356
- 'title' => __('Upgrade to Final Tiles Grid Gallery PRO'),
357
- 'meta' => array('class' => 'ftg-upgrade-to-pro', 'target' => '_blank' ),
358
- ) );
359
- }
360
-
361
-
362
- private function resetFields()
363
- {
364
- $keys = array('name', 'hiddenFor', 'type', 'description', 'default', 'min', 'max', 'mu', 'excludeFrom');
365
-
366
- foreach ($this->fields as $tab_name => $tab) {
367
- foreach ($tab["fields"] as $key => $field) {
368
- //print_r($field);
369
- foreach ($keys as $kk) {
370
- if (!array_key_exists($kk, $field)) {
371
- $this->fields[$tab_name]["fields"][$key][$kk] = "";
372
- }
373
- }
374
- }
375
-
376
- }
377
- //print_r($this->fields);
378
- }
379
-
380
- public function register_links($links, $file)
381
- {
382
- $base = plugin_basename(__FILE__);
383
- if ($file == $base) {
384
- $links[] = '<a href="admin.php?page=ftg-lite-gallery-admin" title="Final Tiles Grid Gallery Dashboard">Dashboard</a>';
385
- $links[] = '<a href="admin.php?page=support" title="Final Tiles Grid Gallery Support">Support</a>';
386
- $links[] = '<a href="https://twitter.com/greentreelabs" title="@GreenTreeLabs on Twitter">Twitter</a>';
387
- $links[] = '<a href="https://www.facebook.com/greentreelabs" title="GreenTreeLabs on Facebook">Facebook</a>';
388
- $links[] = '<a href="https://www.google.com/+GreentreelabsNetjs" title="GreenTreeLabs on Google+">Google+</a>';
389
- }
390
- return $links;
391
-
392
- }
393
-
394
- public function create_db_tables()
395
- {
396
- include_once(WP_PLUGIN_DIR . '/final-tiles-grid-gallery-lite/lib/install-db.php');
397
- install_db();
398
- }
399
-
400
- public function activation()
401
- {
402
-
403
- }
404
-
405
- //Define textdomain
406
- public function create_textdomain()
407
- {
408
- $plugin_dir = basename(dirname(__FILE__));
409
- load_plugin_textdomain('final-tiles-gallery', false, dirname(plugin_basename(__FILE__)) . '/lib/languages/');
410
- }
411
-
412
- //Define constants
413
- public function define_constants()
414
- {
415
- if (!defined('FINALTILESGALLERYLITE_PLUGIN_BASENAME'))
416
- define('FINALTILESGALLERYLITE_PLUGIN_BASENAME', plugin_basename(__FILE__));
417
-
418
- if (!defined('FINALTILESGALLERYLITE_PLUGIN_NAME'))
419
- define('FINALTILESGALLERYLITE_PLUGIN_NAME', trim(dirname(FINALTILESGALLERYLITE_PLUGIN_BASENAME), '/'));
420
-
421
- if (!defined('FINALTILESGALLERYLITE_PLUGIN_DIR'))
422
- define('FINALTILESGALLERYLITE_PLUGIN_DIR', WP_PLUGIN_DIR . '/' . FINALTILESGALLERYLITE_PLUGIN_NAME);
423
- }
424
-
425
- //Define DB tables
426
- public function define_db_tables()
427
- {
428
- global $wpdb;
429
-
430
- $wpdb->FinalTilesGalleries = $wpdb->prefix . 'FinalTiles_gallery';
431
- $wpdb->FinalTilesImages = $wpdb->prefix . 'FinalTiles_gallery_images';
432
- }
433
-
434
-
435
- public function create_db_conn()
436
- {
437
- require('lib/db-class.php');
438
- $FinalTilesdb = FinalTilesLiteDB::getInstance();
439
- return $FinalTilesdb;
440
- }
441
-
442
- public function editor_button($buttons)
443
- {
444
- array_push($buttons, 'separator', 'ftg_shortcode_editor');
445
- return $buttons;
446
- }
447
-
448
- public function register_editor_plugin($plugin_array)
449
- {
450
- $plugin_array['ftg_shortcode_editor'] = plugins_url('/admin/scripts/editor-plugin.js', __file__);
451
- return $plugin_array;
452
- }
453
-
454
- public function ftg_shortcode_editor()
455
- {
456
- $css_path = plugins_url('assets/css/admin.css', __FILE__);
457
- $admin_url = admin_url();
458
-
459
- $galleries = $this->FinalTilesdb->getGalleries(); //load all galleries
460
-
461
- include 'admin/include/tinymce-galleries.php';
462
- wp_die();
463
- }
464
-
465
- public function attachment_fields_to_edit($form, $post)
466
- {
467
- $form["ftg_link"] = array(
468
- "label" => "Link <small>FTG</small>",
469
- "input" => "text",
470
- "value" => get_post_meta($post->ID, "_ftg_link", true),
471
- "helps" => ""
472
- );
473
- $form["ftg_target"] = array(
474
- "label" => "_blank <small>FTG</small>",
475
- "input" => "html",
476
- "html" =>
477
- "<input type='checkbox' name='attachments[{$post->ID}][ftg_target]' id='attachments[{$post->ID}][ftg_target]' value='_mblank' " .
478
- (get_post_meta($post->ID, "_ftg_target", true) == "_mblank" ? "checked" : "")
479
- . " />"
480
- );
481
- return $form;
482
- }
483
-
484
- public function attachment_fields_to_save($post, $attachment)
485
- {
486
- if (isset($attachment['ftg_link'])) {
487
- update_post_meta($post['ID'], '_ftg_link', $attachment['ftg_link']);
488
- }
489
- if (isset($attachment['ftg_target'])) {
490
- update_post_meta($post['ID'], '_ftg_target', $attachment['ftg_target']);
491
- }
492
- return $post;
493
- }
494
-
495
- //Delete gallery
496
- public function delete_gallery()
497
- {
498
- if (check_admin_referer('FinalTiles_gallery', 'FinalTiles_gallery')) {
499
- $this->FinalTilesdb->deleteGallery(intval($_POST['id']));
500
- }
501
- exit();
502
- }
503
-
504
-
505
- public function update_configuration()
506
- {
507
- if (check_admin_referer('FinalTiles_gallery', 'FinalTiles_gallery'))
508
- {
509
- $id = $_POST['galleryId'];
510
-
511
- $config = stripslashes($_POST['config']);
512
-
513
- $this->FinalTilesdb->update_config($id, $config);
514
- }
515
- exit();
516
- }
517
-
518
- public function get_configuration()
519
- {
520
- if (check_admin_referer('FinalTiles_gallery', 'FinalTiles_gallery'))
521
- {
522
- $id = $_POST['galleryId'];
523
-
524
- $gallery = $this->FinalTilesdb->getGalleryConfig($id);
525
-
526
- echo $gallery;
527
- }
528
- exit();
529
- }
530
-
531
- public function get_image_size_url()
532
- {
533
- if (check_admin_referer('FinalTiles_gallery', 'FinalTiles_gallery'))
534
- {
535
- echo wp_get_attachment_image_url($_POST['id'], $_POST['size'], false);
536
- }
537
- exit();
538
- }
539
-
540
- //Clone gallery
541
- public function clone_gallery()
542
- {
543
- if (check_admin_referer('FinalTiles_gallery', 'FinalTiles_gallery'))
544
- {
545
- $sourceId = intval($_POST['id']);
546
- $g = $this->FinalTilesdb->getGalleryById($sourceId, true);
547
- $g['name'] .= " (copy)";
548
- $this->FinalTilesdb->addGallery($g);
549
- $id = $this->FinalTilesdb->getNewGalleryId();
550
- $images = $this->FinalTilesdb->getImagesByGalleryId($sourceId);
551
- foreach ($images as &$image) {
552
- $image->Id = null;
553
- $image->gid = $id;
554
- }
555
- $this->FinalTilesdb->addImages($id, $images);
556
- }
557
- exit();
558
- }
559
-
560
- //Add gallery scripts
561
- public function add_gallery_scripts()
562
- {
563
- wp_enqueue_script('jquery');
564
-
565
- wp_register_script('finalTilesGallery', plugins_url() . '/final-tiles-grid-gallery-lite/scripts/script.js', array('jquery'), FTGLITEVERSION);
566
- wp_enqueue_script('finalTilesGallery');
567
-
568
-
569
- wp_register_style('finalTilesGallery_stylesheet', plugins_url() . '/final-tiles-grid-gallery-lite/scripts/ftg.css', array(), FTGLITEVERSION);
570
- wp_enqueue_style('finalTilesGallery_stylesheet');
571
-
572
- wp_register_script('lightbox2_script', plugins_url() . '/final-tiles-grid-gallery-lite/lightbox/lightbox2/js/script.js', array('jquery'));
573
- wp_register_style('lightbox2_stylesheet', plugins_url() . '/final-tiles-grid-gallery-lite/lightbox/lightbox2/css/style.css');
574
-
575
- wp_register_style('fontawesome_stylesheet', '//netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.css');
576
- wp_enqueue_style('fontawesome_stylesheet');
577
- }
578
-
579
- //Admin Section - register scripts and styles
580
- public function gallery_admin_init()
581
- {
582
- if (function_exists('wp_enqueue_media')) {
583
- wp_enqueue_media();
584
- }
585
-
586
- $ftg_db_version = '5.0';
587
- $installed_ver = get_option("FinalTiles_gallery_db_version");
588
-
589
- if (!$installed_ver) {
590
- update_option("FinalTiles_gallery_db_version", $ftg_db_version);
591
- }
592
-
593
- $this->FinalTilesdb->updateConfiguration();
594
-
595
- if ($installed_ver != $ftg_db_version) {
596
- $this->create_db_tables();
597
- update_option("FinalTiles_gallery_db_version", $ftg_db_version);
598
- }
599
-
600
- function ftg_lite_get_image_sizes()
601
- {
602
- global $_wp_additional_image_sizes;
603
-
604
- $sizes = array();
605
-
606
- foreach ( get_intermediate_image_sizes() as $_size ) {
607
- if ( in_array( $_size, array('thumbnail', 'medium', 'medium_large', 'large') ) ) {
608
- $sizes[ $_size ]['width'] = get_option( "{$_size}_size_w" );
609
- $sizes[ $_size ]['height'] = get_option( "{$_size}_size_h" );
610
- $sizes[ $_size ]['crop'] = (bool) get_option( "{$_size}_crop" );
611
- } elseif ( isset( $_wp_additional_image_sizes[ $_size ] ) ) {
612
- $sizes[ $_size ] = array(
613
- 'width' => $_wp_additional_image_sizes[ $_size ]['width'],
614
- 'height' => $_wp_additional_image_sizes[ $_size ]['height'],
615
- 'crop' => $_wp_additional_image_sizes[ $_size ]['crop'],
616
- );
617
- }
618
- }
619
-
620
- return $sizes;
621
- }
622
-
623
- foreach(ftg_lite_get_image_sizes() as $name => $size)
624
- $this->fields["Links & Lightbox"]["fields"]["lightboxImageSize"]["values"]["Size"] []= $name . "|" . $name . " (" . $size['width'].'x'.$size['height'] . ($size['crop'] ? ' cropped)':')');
625
-
626
- $this->fields["Links & Lightbox"]["fields"]["lightboxImageSize"]["values"]["Size"] []= "full|Original (full)";
627
-
628
- wp_enqueue_script('jquery');
629
- wp_enqueue_script('jquery-ui-dialog');
630
- wp_enqueue_script('jquery-ui-sortable');
631
-
632
- wp_enqueue_script('wp-color-picker');
633
- wp_enqueue_style('wp-color-picker');
634
-
635
- wp_enqueue_script('media-upload');
636
- wp_enqueue_script('thickbox');
637
-
638
- wp_register_style('google-fonts', '//fonts.googleapis.com/css?family=Roboto:400,700,500,300,900');
639
- wp_enqueue_style('google-fonts');
640
- wp_register_style('google-icons', '//cdn.materialdesignicons.com/1.1.34/css/materialdesignicons.min.css', array());
641
- wp_enqueue_style('google-icons');
642
-
643
- wp_register_style('final-tiles-grid-gallery-lite-admin', plugins_url() . '/final-tiles-grid-gallery-lite/admin/css/style.css', array('colors'));
644
- wp_enqueue_style('final-tiles-grid-gallery-lite-admin');
645
-
646
- wp_register_script('materialize', plugins_url() . '/final-tiles-grid-gallery-lite/admin/scripts/materialize.min.js', array('jquery'));
647
- wp_enqueue_script('materialize');
648
-
649
- wp_register_script('final-tiles-grid-gallery-lite', plugins_url() . '/final-tiles-grid-gallery-lite/admin/scripts/final-tiles-grid-gallery-lite-admin.js', array('jquery', 'media-upload', 'thickbox', 'materialize'));
650
- wp_enqueue_script('final-tiles-grid-gallery-lite');
651
-
652
- wp_enqueue_style('thickbox');
653
-
654
- wp_register_style('fontawesome_stylesheet', '//netdna.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.css');
655
- wp_enqueue_style('fontawesome_stylesheet');
656
- }
657
-
658
- //Create Admin Menu
659
- public function add_gallery_admin_menu()
660
- {
661
- $overview = add_menu_page('Final Tiles Gallery', 'Final Tiles Gallery', 'edit_posts', 'ftg-lite-gallery-admin', array($this, 'add_overview'), plugins_url() . '/final-tiles-grid-gallery-lite/admin/icon.png');
662
- $add_gallery = add_submenu_page('ftg-lite-gallery-admin', __('FinalTiles Gallery >> Add Gallery', 'FinalTiles-gallery'), __('Add Gallery', 'FinalTiles-gallery'), 'edit_posts', 'ftg-lite-add-gallery', array($this, 'add_gallery'));
663
- $tutorial = add_submenu_page('ftg-lite-gallery-admin', __('FinalTiles Gallery >> Tutorial', 'FinalTiles-gallery'), __('Tutorial', 'FinalTiles-gallery'), 'edit_posts', 'ftg-lite-tutorial', array($this, 'tutorial'));
664
- $support = add_submenu_page('ftg-lite-gallery-admin', __('FinalTiles Gallery >> Support', 'FinalTiles-gallery'), __('Support', 'FinalTiles-gallery'), 'edit_posts', 'ftg-lite-support', array($this, 'support'));
665
- $upgrade = add_submenu_page('ftg-lite-gallery-admin', __('FinalTiles Gallery >> Upgrade','FinalTiles-gallery'), __('<span style="color:#7cc048">Upgrade</span>','FinalTiles-gallery'), 'edit_posts', 'ftg-lite-gallery-upgrade', array($this, 'upgrade'));
666
-
667
- add_action('load-' . $tutorial, array($this, 'gallery_admin_init'));
668
- add_action('load-' . $overview, array($this, 'gallery_admin_init'));
669
- add_action('load-' . $add_gallery, array($this, 'gallery_admin_init'));
670
- add_action('load-' . $support, array($this, 'gallery_admin_init'));
671
- add_action('load-'.$upgrade, array($this, 'gallery_admin_init'));
672
-
673
- add_action( 'admin_bar_menu', array($this, 'gallery_admin_bar'), 100);
674
- }
675
-
676
- //Create Admin Pages
677
- public function add_overview()
678
- {
679
- global $ftg_fields;
680
- $ftg_fields = $this->fields;
681
-
682
- global $ftg_parent_page;
683
- $ftg_parent_page = "dashboard";
684
-
685
- if (array_key_exists("id", $_GET)) {
686
- include("admin/edit-gallery.php");
687
- } else {
688
- include("admin/overview.php");
689
- }
690
- }
691
-
692
- public function upgrade()
693
- {
694
- include("admin/upgrade.php");
695
- }
696
-
697
- public function other_galleries()
698
- {
699
- include("admin/galleries.php");
700
- }
701
-
702
- public function tutorial()
703
- {
704
- include("admin/tutorial.php");
705
- }
706
-
707
- public function support()
708
- {
709
- include("admin/support.php");
710
- }
711
-
712
- public function add_gallery()
713
- {
714
- global $ftg_fields;
715
- $ftg_fields = $this->fields;
716
- $gallery = null;
717
-
718
- include("admin/add-gallery.php");
719
- }
720
-
721
- public function delete_image()
722
- {
723
- if (check_admin_referer('FinalTiles_gallery', 'FinalTiles_gallery')) {
724
- foreach (explode(",", $_POST["id"]) as $id) {
725
- $this->FinalTilesdb->deleteImage(intval($id));
726
- }
727
- }
728
- wp_die();
729
- }
730
-
731
- public function toggle_visibility()
732
- {
733
- if (check_admin_referer('FinalTiles_gallery', 'FinalTiles_gallery'))
734
- {
735
- foreach (explode(",", $_POST["id"]) as $id)
736
- {
737
- $image = $this->FinalTilesdb->getImage($id);
738
- $this->FinalTilesdb->editImage($id, array("hidden" => $image->hidden == 'T' ? 'F' : 'T'));
739
- }
740
- }
741
- wp_die();
742
- }
743
-
744
- public function add_image()
745
- {
746
- if (check_admin_referer('FinalTiles_gallery', 'FinalTiles_gallery')) {
747
- $gid = intval($_POST['galleryId']);
748
- $enc_images = stripslashes($_POST["enc_images"]);
749
- $images = json_decode($enc_images);
750
-
751
- $result = $this->FinalTilesdb->addImages($gid, $images);
752
-
753
- header("Content-type: application/json");
754
- if ($result === false) {
755
- echo "{\"success\":false}";
756
- } else {
757
- echo "{\"success\":true}";
758
- }
759
- }
760
- wp_die();
761
- }
762
-
763
- public function list_thumbnail_sizes()
764
- {
765
- global $_wp_additional_image_sizes;
766
- $sizes = array();
767
- foreach (get_intermediate_image_sizes() as $s)
768
- {
769
- if (in_array($s, array('thumbnail', 'medium', 'large'))) {
770
- $sizes[$s][0] = get_option($s . '_size_w');
771
- $sizes[$s][1] = get_option($s . '_size_h');
772
- }
773
- else
774
- {
775
- if (isset($_wp_additional_image_sizes) &&
776
- isset($_wp_additional_image_sizes[$s]) &&
777
- $_wp_additional_image_sizes[$s]['width'] > 0 &&
778
- $_wp_additional_image_sizes[$s]['height'] > 0
779
- )
780
- {
781
- $sizes[$s] = array($_wp_additional_image_sizes[$s]['width'], $_wp_additional_image_sizes[$s]['height']);
782
- }
783
- }
784
- }
785
-
786
- return $sizes;
787
- }
788
-
789
- public function sort_images()
790
- {
791
- if (check_admin_referer('FinalTiles_gallery', 'FinalTiles_gallery')) {
792
- $result = $this->FinalTilesdb->sortImages(explode(',', $_POST['ids']));
793
-
794
- header("Content-type: application/json");
795
- if ($result === false) {
796
- echo "{\"success\":false}";
797
- } else {
798
- echo "{\"success\":true}";
799
- }
800
- }
801
- wp_die();
802
- }
803
-
804
- public function load_chunk()
805
- {
806
- require_once('lib/gallery-class.php');
807
-
808
- if (check_admin_referer('finaltilesgallery', 'finaltilesgallery'))
809
- {
810
- $gid = intval($_POST["gallery"]);
811
- $images = $this->FinalTilesdb->getImagesByGalleryId($gid);
812
-
813
- $FinalTilesGallery = new FinalTilesGalleryLite($gid, $this->FinalTilesdb, $this->defaultValues);
814
- echo $FinalTilesGallery->images_markup();
815
- }
816
- wp_die();
817
- }
818
-
819
- public function refresh_gallery()
820
- {
821
- $this->list_images();
822
- }
823
-
824
- public function save_image()
825
- {
826
- if (check_admin_referer('FinalTiles_gallery', 'FinalTiles_gallery')) {
827
- $result = false;
828
-
829
- if ($_POST['source'] == 'posts') {
830
- $result = true;
831
- $postId = intval($_POST['post_id']);
832
- $img_url = stripslashes($_POST['img_url']);
833
- update_post_meta($postId, 'ftg_image_url', $img_url);
834
- if (array_key_exists("filters", $_POST) && strlen($_POST['filters'])) {
835
- update_post_meta($postId, 'ftg_filters', $_POST['filters']);
836
- }
837
- } else {
838
- $type = $_POST['type'];
839
- $imageUrl = stripslashes($_POST['img_url']);
840
- $imageCaption = stripslashes($_POST['description']);
841
- $filters = stripslashes($_POST['filters']);
842
- $title = stripslashes($_POST['imageTitle']);
843
- $target = $_POST['target'];
844
- $group = $_POST['group'];
845
- $hidden = $_POST['hidden'];
846
- $link = isset($_POST['link']) ? stripslashes($_POST['link']) : null;
847
- $imageId = intval($_POST['img_id']);
848
- $sortOrder = intval($_POST['sortOrder']);
849
-
850
- $data = array("imagePath" => $imageUrl,
851
- "target" => $target,
852
- "link" => $link,
853
- "imageId" => $imageId,
854
- "description" => $imageCaption,
855
- "filters" => $filters,
856
- "title" => $title,
857
- "group" => $group,
858
- "hidden" => $hidden,
859
- "sortOrder" => $sortOrder);
860
-
861
- if (!empty($_POST["id"])) {
862
- $imageId = intval($_POST['id']);
863
- $result = $this->FinalTilesdb->editImage($imageId, $data);
864
- } else {
865
- $data["gid"] = intval($_POST['galleryId']);
866
- $result = $this->FinalTilesdb->addFullImage($data);
867
- }
868
- }
869
- header("Content-type: application/json");
870
-
871
- if ($result === false) {
872
- echo "{\"success\":false}";
873
- } else {
874
- echo "{\"success\":true}";
875
- }
876
- }
877
- wp_die();
878
- }
879
-
880
- public function list_images()
881
- {
882
- if (check_admin_referer('FinalTiles_gallery', 'FinalTiles_gallery')) {
883
- $gid = intval($_POST["gid"]);
884
- $imageResults = $this->FinalTilesdb->getImagesByGalleryId($gid);
885
- $gallery = $this->FinalTilesdb->getGalleryById($gid);
886
-
887
- $list_size = "medium";
888
- $column_size = "s6 m3 l3";
889
-
890
- if (isset($_POST['list_size']) && !empty($_POST['list_size'])) {
891
- $list_size = $_POST['list_size'];
892
- }
893
-
894
- setcookie('ftg_imglist_size', $list_size);
895
- $_COOKIE['ftg_imglist_size'] = $list_size;
896
-
897
- if ($list_size == 'small')
898
- $column_size = 's4 m2 l2';
899
- if ($list_size == 'medium')
900
- $column_size = 's6 m3 l3';
901
- if ($list_size == 'big')
902
- $column_size = 's12 m4 l4';
903
-
904
- include('admin/include/image-list.php');
905
- }
906
- wp_die();
907
- }
908
-
909
- public function add_new_gallery()
910
- {
911
- if (check_admin_referer('FinalTiles_gallery', 'FinalTiles_gallery')) {
912
- $data = $this->defaultValues;
913
-
914
- $data["date"] = date("Y-m-d");
915
- $data["name"] = $_POST['ftg_name'];
916
- $data["description"] = $_POST['ftg_description'];
917
- $data["source"] = $_POST['ftg_source'];
918
- $data["wp_field_caption"] = $_POST['ftg_wp_field_caption'];
919
- $data["wp_field_title"] = $_POST['ftg_wp_field_title'];
920
- $data["captionEffect"] = $_POST['ftg_captionEffect'];
921
- $data["post_categories"] = $_POST["post_categories"];
922
- $data["post_tags"] = $_POST["post_tags"];
923
- $data["layout"] = $_POST["layout"];
924
- $data["defaultWooImageSize"] = $_POST['def_imgsize'];
925
- $data["defaultPostImageSize"] = $_POST['def_imgsize'];
926
- $data["woo_categories"] = $_POST["woo_categories"];
927
-
928
- $result = $this->FinalTilesdb->addGallery($data);
929
- $id = $this->FinalTilesdb->getNewGalleryId();
930
-
931
- if ($id > 0 && array_key_exists('enc_images', $_POST) && strlen($_POST['enc_images'])) {
932
- $enc_images = stripslashes($_POST["enc_images"]);
933
- $images = json_decode($enc_images);
934
- $result = $this->FinalTilesdb->addImages($id, $images);
935
- }
936
-
937
- echo $id;
938
- } else {
939
- echo -1;
940
- }
941
- wp_die();
942
- }
943
-
944
- private function checkboxVal($field)
945
- {
946
- if (isset($_POST[$field]))
947
- return 'T';
948
-
949
- return 'F';
950
- }
951
-
952
- public function save_gallery()
953
- {
954
- if (check_admin_referer('FinalTiles_gallery', 'FinalTiles_gallery')) {
955
- $galleryName = stripslashes($_POST['ftg_name']);
956
- $galleryDescription = stripslashes($_POST['ftg_description']);
957
- $slug = strtolower(str_replace(" ", "", $galleryName));
958
- $margin = intval($_POST['ftg_margin']);
959
- $minTileWidth = intval($_POST['ftg_minTileWidth']);
960
- $gridCellSize = intval($_POST['ftg_gridCellSize']);
961
- $imagesOrder = $_POST['ftg_imagesOrder'];
962
- $width = $_POST['ftg_width'];
963
- $enableTwitter = $this->checkboxVal('ftg_enableTwitter');
964
- $filterClick = $this->checkboxVal('ftg_filterClick');
965
- $enableFacebook = $this->checkboxVal('ftg_enableFacebook');
966
- $enableGplus = $this->checkboxVal('ftg_enableGplus');
967
- $enablePinterest = $this->checkboxVal('ftg_enablePinterest');
968
- $lightbox = $_POST['ftg_lightbox'];
969
- $mobileLightbox = $_POST['ftg_mobileLightbox'];
970
- $blank = $this->checkboxVal('ftg_blank');
971
- $filters = $_POST['ftg_filters'];
972
-
973
- $scrollEffect = $_POST['ftg_scrollEffect'];
974
- $captionBehavior = $_POST['ftg_captionBehavior'];
975
- $captionMobileBehavior = $_POST['ftg_captionMobileBehavior'];
976
- $captionEffect = $_POST['ftg_captionEffect'];
977
- $captionColor = $_POST['ftg_captionColor'];
978
- $captionBackgroundColor = $_POST['ftg_captionBackgroundColor'];
979
- $captionEasing = $_POST['ftg_captionEasing'];
980
- $captionHorizontalAlignment = $_POST['ftg_captionHorizontalAlignment'];
981
- $captionVerticalAlignment = $_POST['ftg_captionVerticalAlignment'];
982
- $captionEmpty = $_POST['ftg_captionEmpty'];
983
- $captionOpacity = intval($_POST['ftg_captionOpacity']);
984
- $borderSize = intval($_POST['ftg_borderSize']);
985
- $borderColor = $_POST['ftg_borderColor'];
986
- $titleFontSize = intval($_POST['ftg_titleFontSize']);
987
- $loadingBarColor = $_POST['ftg_loadingBarColor'];
988
- $loadingBarBackgroundColor = $_POST['ftg_loadingBarBackgroundColor'];
989
- $borderRadius = intval($_POST['ftg_borderRadius']);
990
- $allFilterLabel = $_POST['ftg_allFilterLabel'];
991
- $shadowColor = $_POST['ftg_shadowColor'];
992
- $shadowSize = intval($_POST['ftg_shadowSize']);
993
- $enlargeImages = $this->checkboxVal('ftg_enlargeImages');
994
- $wp_field_caption = $_POST['ftg_wp_field_caption'];
995
- $wp_field_title = $_POST['ftg_wp_field_title'];
996
- $style = $_POST['ftg_style'];
997
- $script = $_POST['ftg_script'];
998
- $loadedScale = intval($_POST['ftg_loadedScale']);
999
- $loadedRotate = intval($_POST['ftg_loadedRotate']);
1000
- $loadedHSlide = intval($_POST['ftg_loadedHSlide']);
1001
- $loadedVSlide = intval($_POST['ftg_loadedVSlide']);
1002
-
1003
- $captionEffectDuration = intval($_POST['ftg_captionEffectDuration']);
1004
- $id = isset($_POST['ftg_gallery_edit']) ? intval($_POST['ftg_gallery_edit']) : 0;
1005
-
1006
- $data = array(
1007
- 'ajaxLoading' => $_POST['ftg_ajaxLoading'],
1008
- 'layout' => $_POST['ftg_layout'],
1009
- 'name' => $galleryName,
1010
- 'slug' => $slug,
1011
- 'description' => $galleryDescription,
1012
- 'lightbox' => $lightbox,
1013
- 'mobileLightbox' => $mobileLightbox,
1014
- 'lightboxImageSize' => $_POST['ftg_lightboxImageSize'],
1015
- 'blank' => $blank,
1016
- 'margin' => $margin,
1017
- 'allFilterLabel' => $allFilterLabel,
1018
- 'minTileWidth' => $minTileWidth,
1019
- 'gridCellSize' => $gridCellSize,
1020
- 'enableTwitter' => $enableTwitter,
1021
- 'backgroundColor' => $_POST['ftg_backgroundColor'],
1022
- 'filterClick' => $filterClick,
1023
- 'disableLightboxGroups' => $this->checkboxVal('ftg_disableLightboxGroups'),
1024
- 'defaultFilter' => $_POST['ftg_filterDef'],
1025
- 'enableFacebook' => $enableFacebook,
1026
- 'enableGplus' => $enableGplus,
1027
- 'enablePinterest' => $enablePinterest,
1028
- 'imagesOrder' => $imagesOrder,
1029
- 'compressHTML' => $this->checkboxVal('ftg_compressHTML'),
1030
- 'loadMethod' => $_POST['ftg_loadMethod'],
1031
- 'socialIconColor' => $_POST['ftg_socialIconColor'],
1032
- 'recentPostsCaption' => $_POST['ftg_recentPostsCaption'],
1033
- 'recentPostsCaptionAutoExcerptLength' => intval($_POST['ftg_recentPostsCaptionAutoExcerptLength']),
1034
- 'captionBehavior' => $captionBehavior,
1035
- 'captionEffect' => $captionEffect,
1036
- 'captionEmpty' => $captionEmpty,
1037
- 'captionFullHeight' => $this->checkboxVal('ftg_captionFullHeight'),
1038
- 'captionBackgroundColor' => $captionBackgroundColor,
1039
- 'captionColor' => $captionColor,
1040
- 'captionFrameColor' => $_POST['ftg_captionFrameColor'],
1041
- 'captionEffectDuration' => $captionEffectDuration,
1042
- 'captionEasing' => $captionEasing,
1043
- 'captionVerticalAlignment' => $captionVerticalAlignment,
1044
- 'captionHorizontalAlignment' => $captionHorizontalAlignment,
1045
- 'captionMobileBehavior' => $captionMobileBehavior,
1046
- 'captionOpacity' => $captionOpacity,
1047
- 'captionIcon' => $_POST['ftg_captionIcon'],
1048
- 'captionFrame' => $this->checkboxVal('ftg_captionFrame'),
1049
- 'customCaptionIcon' => $_POST['ftg_customCaptionIcon'],
1050
- 'captionIconColor' => $_POST['ftg_captionIconColor'],
1051
- 'captionIconSize' => intval($_POST['ftg_captionIconSize']),
1052
- 'captionFontSize' => intval($_POST['ftg_captionFontSize']),
1053
- 'captionPosition' => $_POST['ftg_captionPosition'],
1054
- 'titleFontSize' => intval($_POST['ftg_titleFontSize']),
1055
- 'hoverZoom' => intval($_POST['ftg_hoverZoom']),
1056
- 'hoverRotation' => intval($_POST['ftg_hoverRotation']),
1057
- 'hoverIconRotation' => $this->checkboxVal('ftg_hoverIconRotation'),
1058
- 'filters' => $filters,
1059
- 'wp_field_caption' => $wp_field_caption,
1060
- 'wp_field_title' => $wp_field_title,
1061
- 'borderSize' => $borderSize,
1062
- 'borderColor' => $borderColor,
1063
- 'loadingBarColor' => $loadingBarColor,
1064
- 'loadingBarBackgroundColor' => $loadingBarBackgroundColor,
1065
- 'enlargeImages' => $enlargeImages,
1066
- 'borderRadius' => $borderRadius,
1067
- 'imageSizeFactor' => intval($_POST['ftg_imageSizeFactor']),
1068
- 'imageSizeFactorTabletLandscape' => intval($_POST['ftg_imageSizeFactorTabletLandscape']),
1069
- 'imageSizeFactorTabletPortrait' => intval($_POST['ftg_imageSizeFactorTabletPortrait']),
1070
- 'imageSizeFactorPhoneLandscape' => intval($_POST['ftg_imageSizeFactorPhoneLandscape']),
1071
- 'imageSizeFactorPhonePortrait' => intval($_POST['ftg_imageSizeFactorPhonePortrait']),
1072
- 'imageSizeFactorCustom' => $_POST['ftg_imageSizeFactorCustom'],
1073
-
1074
- 'columns' => intval($_POST['ftg_columns']),
1075
- 'columnsTabletLandscape' => intval($_POST['ftg_columnsTabletLandscape']),
1076
- 'columnsTabletPortrait' => intval($_POST['ftg_columnsTabletPortrait']),
1077
- 'columnsPhoneLandscape' => intval($_POST['ftg_columnsPhoneLandscape']),
1078
- 'columnsPhonePortrait' => intval($_POST['ftg_columnsPhonePortrait']),
1079
-
1080
- 'max_posts' => intval($_POST['ftg_max_posts']),
1081
-
1082
- 'shadowSize' => $shadowSize,
1083
- 'shadowColor' => $shadowColor,
1084
- 'source' => $_POST['ftg_source'],
1085
- 'post_types' => $_POST['ftg_post_types'],
1086
- 'post_categories' => $_POST['ftg_post_categories'],
1087
- 'post_tags' => $_POST['ftg_post_tags'],
1088
- 'tilesPerPage' => intval($_POST['ftg_tilesPerPage']),
1089
- 'woo_categories' => isset($_POST['ftg_woo_categories']) ? $_POST['ftg_woo_categories'] : '',
1090
- 'defaultPostImageSize' => $_POST['ftg_defaultPostImageSize'],
1091
- 'defaultWooImageSize' => isset($_POST['ftg_defaultWooImageSize']) ? $_POST['ftg_defaultWooImageSize'] : '',
1092
- 'width' => $width,
1093
- 'beforeGalleryText' => $_POST['ftg_beforeGalleryText'],
1094
- 'afterGalleryText' => $_POST['ftg_afterGalleryText'],
1095
- 'aClass' => $_POST['ftg_aClass'],
1096
- 'rel' => $_POST['ftg_rel'],
1097
- 'style' => $style,
1098
- 'delay' => intval($_POST['ftg_delay']),
1099
- 'script' => $script,
1100
- 'support' => $this->checkboxVal('ftg_support'),
1101
- 'supportText' => $_POST['ftg_supportText'],
1102
- 'envatoReferral' => $_POST['ftg_envatoReferral'],
1103
- 'scrollEffect' => $scrollEffect,
1104
- 'loadedScale' => $loadedScale,
1105
- 'loadedRotate' => $loadedRotate,
1106
- 'loadedHSlide' => $loadedHSlide,
1107
- 'loadedVSlide' => $loadedVSlide
1108
- );
1109
-
1110
- header("Content-type: application/json");
1111
- if ($id > 0) {
1112
- $result = $this->FinalTilesdb->editGallery($id, $data);
1113
- } else {
1114
- $result = $this->FinalTilesdb->addGallery($data);
1115
- $id = $this->FinalTilesdb->getNewGalleryId();
1116
- }
1117
-
1118
- if ($result)
1119
- echo "{\"success\":true,\"id\":" . $id . "}";
1120
- else
1121
- echo "{\"success\":false}";
1122
- }
1123
-
1124
- wp_die();
1125
- }
1126
-
1127
- public static function get_image_size_links($id)
1128
- {
1129
- $result = array();
1130
- $sizes = get_intermediate_image_sizes();
1131
- $sizes[] = 'full';
1132
-
1133
- foreach ($sizes as $size) {
1134
- $image = wp_get_attachment_image_src($id, $size);
1135
-
1136
- if (!empty($image) && (true == $image[3] || 'full' == $size))
1137
- $result["$image[1]x$image[2]"] = $image[0];
1138
- }
1139
- ksort($result);
1140
- return $result;
1141
- }
1142
-
1143
- //Create gallery
1144
- public function create_gallery($galleryId)
1145
- {
1146
- require_once('lib/gallery-class.php');
1147
- global $FinalTilesGallery;
1148
-
1149
- if (class_exists('FinalTilesGalleryLite')) {
1150
- $FinalTilesGallery = new FinalTilesGalleryLite($galleryId, $this->FinalTilesdb, $this->defaultValues);
1151
- $settings = $FinalTilesGallery->getGallery();
1152
-
1153
- switch ($settings->lightbox) {
1154
- case "magnific":
1155
- wp_enqueue_style('magnific_stylesheet');
1156
- wp_enqueue_script('magnific_script');
1157
- break;
1158
- case "prettyphoto":
1159
- wp_enqueue_style('prettyphoto_stylesheet');
1160
- wp_enqueue_script('prettyphoto_script');
1161
- break;
1162
- case "fancybox":
1163
- wp_enqueue_style('fancybox_stylesheet');
1164
- wp_enqueue_script('fancybox_script');
1165
- break;
1166
- case "colorbox":
1167
- wp_enqueue_style('colorbox_stylesheet');
1168
- wp_enqueue_script('colorbox_script');
1169
- break;
1170
- case "swipebox":
1171
- wp_enqueue_style('swipebox_stylesheet');
1172
- wp_enqueue_script('swipebox_script');
1173
- break;
1174
- case "lightbox2":
1175
- wp_enqueue_style('lightbox2_stylesheet');
1176
- wp_enqueue_script('lightbox2_script');
1177
- break;
1178
- case "image-lightbox":
1179
- wp_enqueue_script('image-lightbox_script');
1180
- case "lightgallery":
1181
- wp_enqueue_style('lightgallery_stylesheet');
1182
- wp_enqueue_script('lightgallery_script');
1183
- break;
1184
- }
1185
-
1186
- switch ($settings->mobileLightbox) {
1187
- default:
1188
- case "magnific":
1189
- wp_enqueue_style('magnific_stylesheet');
1190
- wp_enqueue_script('magnific_script');
1191
- break;
1192
- case "prettyphoto":
1193
- wp_enqueue_style('prettyphoto_stylesheet');
1194
- wp_enqueue_script('prettyphoto_script');
1195
- break;
1196
- case "fancybox":
1197
- wp_enqueue_style('fancybox_stylesheet');
1198
- wp_enqueue_script('fancybox_script');
1199
- break;
1200
- case "colorbox":
1201
- wp_enqueue_style('colorbox_stylesheet');
1202
- wp_enqueue_script('colorbox_script');
1203
- break;
1204
- case "swipebox":
1205
- wp_enqueue_style('swipebox_stylesheet');
1206
- wp_enqueue_script('swipebox_script');
1207
- break;
1208
- case "lightbox2":
1209
- wp_enqueue_style('lightbox2_stylesheet');
1210
- wp_enqueue_script('lightbox2_script');
1211
- break;
1212
- case "image-lightbox":
1213
- wp_enqueue_script('image-lightbox_script');
1214
- case "lightgallery":
1215
- wp_enqueue_style('lightgallery_stylesheet');
1216
- wp_enqueue_script('lightgallery_script');
1217
- break;
1218
- }
1219
-
1220
- return $FinalTilesGallery->render();
1221
- } else {
1222
- return "Gallery not found.";
1223
- }
1224
- }
1225
-
1226
- //Create Short Code
1227
- public function gallery_shortcode_handler($atts)
1228
- {
1229
- return $this->create_gallery($atts['id']);
1230
- }
1231
-
1232
- static public function slugify($text)
1233
- {
1234
- $text = preg_replace('~[^\\pL\d]+~u', '-', $text);
1235
- $text = trim($text, '-');
1236
- if(function_exists("iconv"))
1237
- $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
1238
- $text = strtolower($text);
1239
- $text = preg_replace('~[^-\w]+~', '', $text);
1240
-
1241
- if (empty($text)) {
1242
- return 'n-a';
1243
- }
1244
-
1245
- return $text;
1246
- }
1247
-
1248
- var $fields = array(
1249
-
1250
- "General" => array(
1251
- "icon" => "mdi-settings",
1252
- "fields" => array(
1253
- "name" => array(
1254
- "name" => "Name",
1255
- "hiddenFor" => array("dashboard", "shortcode"),
1256
- "type" => "text",
1257
- "description" => "Name of the gallery, for internal use.",
1258
- "excludeFrom" => array("dashboard", "shortcode")
1259
- ),
1260
- "description" => array(
1261
- "name" => "Description",
1262
- "hiddenFor" => array("dashboard", "shortcode"),
1263
- "type" => "text",
1264
- "description" => "Description of the gallery, for internal use.",
1265
- "excludeFrom" => array("dashboard", "shortcode")
1266
- ),
1267
- "layout" => array(
1268
- "name" => "Layout",
1269
- "type" => "select",
1270
- "description" => "<strong>Final Tiles</strong>: use images with different sizes<br><strong>Masonry</strong>: multi-column layout, use this one if you need images of the same size.",
1271
- "values" => array(
1272
- "Layout" => array(
1273
- "final|Final Tiles", "columns|Masonry"
1274
- )
1275
- ),
1276
- "excludeFrom" => array()
1277
- ),
1278
- "width" => array(
1279
- "name" => "Width",
1280
- "type" => "text",
1281
- "description" => "Width of the gallery in pixels or percentage.",
1282
- "excludeFrom" => array()
1283
- ),
1284
- "margin" => array(
1285
- "name" => "Margin",
1286
- "type" => "number",
1287
- "description" => "Margin between images",
1288
- "mu" => "px",
1289
- "min" => 0,
1290
- "max" => 50,
1291
- "excludeFrom" => array()
1292
- ),
1293
- "columns" => array(
1294
- "name" => "Number of columns",
1295
- "type" => "number",
1296
- "description" => "",
1297
- "mu" => "",
1298
- "min" => 1,
1299
- "max" => 50,
1300
- "excludeFrom" => array()
1301
- ),
1302
- "columnsTabletLandscape" => array(
1303
- "name" => "Number of columns (Tablet landscape)",
1304
- "type" => "number",
1305
- "description" => "",
1306
- "mu" => "",
1307
- "min" => 1,
1308
- "max" => 50,
1309
- "excludeFrom" => array()
1310
- ),
1311
- "columnsTabletPortrait" => array(
1312
- "name" => "Number of columns (Tablet portrait)",
1313
- "type" => "number",
1314
- "description" => "",
1315
- "mu" => "",
1316
- "min" => 1,
1317
- "max" => 50,
1318
- "excludeFrom" => array()
1319
- ),
1320
- "columnsPhoneLandscape" => array(
1321
- "name" => "Number of columns (Phone landscape)",
1322
- "type" => "number",
1323
- "description" => "",
1324
- "mu" => "",
1325
- "min" => 1,
1326
- "max" => 50,
1327
- "excludeFrom" => array()
1328
- ),
1329
- "columnsPhonePortrait" => array(
1330
- "name" => "Number of columns (Phone portrait)",
1331
- "type" => "number",
1332
- "description" => "",
1333
- "mu" => "",
1334
- "min" => 1,
1335
- "max" => 50,
1336
- "excludeFrom" => array()
1337
- ),
1338
- "imageSizeFactor" => array(
1339
- "name" => "Image size factor",
1340
- "type" => "slider",
1341
- "description" => "Percentage of image size, i.e.: if an image of the gallery is 300x200 and the size factor is 50% then the resulting image will be 150x100.
1342
- 90% is a suggested default value, because under some circumstances, the images could be enlarged by the script (to fill gaps and avoid blank spaces between tiles).",
1343
- "default" => 90,
1344
- "min" => 1,
1345
- "max" => 100,
1346
- "mu" => "%",
1347
- "excludeFrom" => array()
1348
- ),
1349
- "imageSizeFactorTabletLandscape" => array(
1350
- "name" => "Image size factor (Tablet Landscape)",
1351
- "type" => "slider",
1352
- "description" => "Image size factor to apply when the viewport is 1024px, typically for tablets with landscape orientation",
1353
- "default" => 80,
1354
- "min" => 1,
1355
- "max" => 100,
1356
- "mu" => "%",
1357
- "excludeFrom" => array()
1358
- ),
1359
- "imageSizeFactorTabletPortrait" => array(
1360
- "name" => "Image size factor Tablet Portrait",
1361
- "type" => "slider",
1362
- "description" => "Image size factor to apply when the viewport is 768px, typically for tablets with portrait orientation",
1363
- "default" => 70,
1364
- "min" => 1,
1365
- "max" => 100,
1366
- "mu" => "%",
1367
- "excludeFrom" => array()
1368
- ),
1369
- "imageSizeFactorPhoneLandscape" => array(
1370
- "name" => "Image size factor Smartphone Landscape",
1371
- "type" => "slider",
1372
- "description" => "Image size factor to apply when the viewport is 640px, typically for smartphones with landscape orientation",
1373
- "default" => 60,
1374
- "min" => 1,
1375
- "max" => 100,
1376
- "mu" => "%",
1377
- "excludeFrom" => array()
1378
- ),
1379
- "imageSizeFactorPhonePortrait" => array(
1380
- "name" => "Image size factor Phone Portrait",
1381
- "type" => "slider",
1382
- "description" => "Image size factor to apply when the viewport is 320px, typically for smartphones with portrait orientation",
1383
- "default" => 50,
1384
- "min" => 1,
1385
- "max" => 100,
1386
- "mu" => "%",
1387
- "excludeFrom" => array()
1388
- ),
1389
- "imageSizeFactorCustom" => array(
1390
- "name" => "Custom image size factor",
1391
- "hiddenFor" => array("dashboard", "shortcode"),
1392
- "type" => "PRO_FEATURE",
1393
- "description" => "Use this field if you need further resolutions.",
1394
- "excludeFrom" => array("dashboard", "shortcode")
1395
- ),
1396
- "minTileWidth" => array(
1397
- "name" => "Tile minimum width",
1398
- "type" => "number",
1399
- "description" => "Minimum width of each tile, <strong>multiply this value for the image size factor to get the real size</strong>.",
1400
- "mu" => "px",
1401
- "min" => 50,
1402
- "max" => 500,
1403
- "default" => 200,
1404
- "excludeFrom" => array()
1405
- ),
1406
- "imagesOrder" => array(
1407
- "name" => "Images order",
1408
- "type" => "select",
1409
- "description" => "Choose the order of the images",
1410
- "default" => "",
1411
- "values" => array(
1412
- "Images order" => array(
1413
- "user|User", "reverse|Reverse", "random|Random"
1414
- )
1415
- ),
1416
- "excludeFrom" => array()
1417
- ),
1418
- "filter" => array(
1419
- "name" => "Filters",
1420
- "type" => "PRO_FEATURE",
1421
- "description" => "Manage here all the filters of this gallery",
1422
- "excludeFrom" => array("dashboard", "shortcode")
1423
- ),
1424
- "filterClick" => array(
1425
- "name" => "Reload Page on filter click",
1426
- "type" => "PRO_FEATURE",
1427
- "description" => "Turn this feature ON if you want to use filters with most lightboxes",
1428
- "excludeFrom" => array()
1429
- ),
1430
-
1431
- "allFilterLabel" => array(
1432
- "name" => "Text for 'All' filter",
1433
- "type" => "PRO_FEATURE",
1434
- "description" => "Write here the label for the 'All' filter",
1435
- "excludeFrom" => array()
1436
- ),
1437
- "gridCellSize" => array(
1438
- "name" => "Size of the grid",
1439
- "type" => "number",
1440
- "default" => 25,
1441
- "min" => 1,
1442
- "max" => 100,
1443
- "mu" => "px",
1444
- "description" => "Tiles are snapped to a virtual grid, <strong>the higher this value the higher the chance to get bottom aligned tiles</strong> (but it needs to crop horizontally).",
1445
- "excludeFrom" => array()
1446
- ),
1447
- "enlargeImages" => array(
1448
- "name" => "Allow image enlargement",
1449
- "type" => "toggle",
1450
- "description" => "Images can be occasionally enlarged to avoid gaps. If you notice a quality loss try to reduce the <strong>Image size factor</strong> parameter.",
1451
- "default" => "T",
1452
- "excludeFrom" => array()
1453
- ),
1454
- "compressHTML" => array(
1455
- "name" => "Compress HTML",
1456
- "type" => "toggle",
1457
- "description" => "Enable or disable HTML compression, some themes prefer uncompressed, switch it off in case of problems.",
1458
- "default" => "T",
1459
- "excludeFrom" => array()
1460
- )
1461
- )
1462
- ),
1463
- "Links & Lightbox" => array(
1464
- "icon" => "mdi-link-variant",
1465
- "fields" => array(
1466
- "lightbox" => array(
1467
- "name" => "Lightbox &amp; Links",
1468
- "type" => "select",
1469
- "description" => "Define here what happens when user click on the images.<br><strong><a href='http://1.envato.market/c/288541/275988/4415?u=https%3A%2F%2Fcodecanyon.net%2Fitem%2Ffinal-tiles-wordpress-gallery%2F5189351' target='_blank'>Buy a PRO license</a></strong> to unlock 5 more lightboxes.",
1470
- "values" => array(
1471
- "Link" => array("|No link", "direct|Direct link to image"),
1472
- "Lightboxes" => array("lightbox2|Lightbox", "everlightbox|EverlightBox")
1473
- ),
1474
- "excludeFrom" => array()
1475
- ),
1476
- "mobileLightbox" => array(
1477
- "name" => "Mobile Lightbox &amp; Links",
1478
- "type" => "PRO_FEATURE",
1479
- "description" => "Define here what happens when user click on the images.",
1480
- "excludeFrom" => array()
1481
- ),
1482
- "lightboxImageSize" => array(
1483
- "name" => "Image size for the lightbox",
1484
- "type" => "select",
1485
- "description" => "",
1486
- "values" => array(
1487
- "Size" => array()
1488
- ),
1489
- "excludeFrom" => array()
1490
- ),
1491
- "disableLightboxGroups" => array(
1492
- "name" => "Disable lightbox grouping",
1493
- "type" => "toggle",
1494
- "description" => "Flag this option if you don't want to group images when opened in a lightbox.",
1495
- "default" => "F",
1496
- "excludeFrom" => array()
1497
- ),
1498
- "blank" => array(
1499
- "name" => "Links target",
1500
- "type" => "toggle",
1501
- "description" => "Open links in a blank page.",
1502
- "excludeFrom" => array()
1503
- ),
1504
- "enableTwitter" => array(
1505
- "name" => "Enable Twitter icon",
1506
- "type" => "toggle",
1507
- "description" => "Enable Twitter sharing.",
1508
- "default" => "F",
1509
- "excludeFrom" => array()
1510
- ),
1511
- "enableFacebook" => array(
1512
- "name" => "Enable Facebook icon",
1513
- "type" => "toggle",
1514
- "description" => "Enable Facebook sharing.",
1515
- "default" => "F",
1516
- "excludeFrom" => array()
1517
- ),
1518
- "enableGplus" => array(
1519
- "name" => "Enable Google Plus icon",
1520
- "type" => "toggle",
1521
- "description" => "Enable Google Plus sharing",
1522
- "default" => "F",
1523
- "excludeFrom" => array()
1524
- ),
1525
- "enablePinterest" => array(
1526
- "name" => "Enable Pinterest icon",
1527
- "type" => "toggle",
1528
- "description" => "Enable Pinterest sharing",
1529
- "default" => "F",
1530
- "excludeFrom" => array()
1531
- ),
1532
- "socialIconColor" => array(
1533
- "name" => "Color of social sharing icons",
1534
- "type" => "color",
1535
- "description" => "Set the color of the social sharing icons",
1536
- "default" => "#ffffff",
1537
- "excludeFrom" => array()
1538
- )
1539
- )
1540
- ),
1541
- "Captions" => array(
1542
- "icon" => "mdi-comment-text-outline",
1543
- "fields" => array(
1544
- "captionBehavior" => array(
1545
- "name" => "Caption behavior",
1546
- "type" => "PRO_FEATURE",
1547
- "description" => "Captions can have two different behaviors: start hidden and shown on mouse over or viceversa.",
1548
- "excludeFrom" => array()
1549
- ),
1550
- "captionMobileBehavior" => array(
1551
- "name" => "Caption mobile behavior",
1552
- "type" => "PRO_FEATURE",
1553
- "description" => "Caption behavior for mobile devices.",
1554
- "excludeFrom" => array()
1555
- ),
1556
- "captionFullHeight" => array(
1557
- "name" => "Caption full height",
1558
- "type" => "PRO_FEATURE",
1559
- "description" => "Enable this option for full height captions. <strong>This is required if you want to use caption icons and caption effects other than <i>fade</i>.</strong>",
1560
- "default" => "T",
1561
- "excludeFrom" => array()
1562
- ),
1563
- "captionEmpty" => array(
1564
- "name" => "Empty captions",
1565
- "type" => "PRO_FEATURE",
1566
- "description" => "Choose if empty caption has to be shown. Consider that empty captions are never shown if <i>Caption full height</i> is switched off.",
1567
- "excludeFrom" => array()
1568
- ),
1569
- "captionIcon" => array(
1570
- "name" => "Caption icon",
1571
- "type" => "select",
1572
- "description" => "Choose the icon for the captions.",
1573
- "values" => array(
1574
- "Icon" => array("|None", "search|Lens", "search-plus|Lens (plus)", "link|Link", "heart|Heart", "heart-o|Heart empty",
1575
- "camera|Camera", "camera-retro|Camera retro", "picture-o|Picture", "star|Star", "star-o|Star empty",
1576
- "sun-o|Sun", "arrows-alt|Arrows", "hand-o-right|Hand")
1577
- ),
1578
- "excludeFrom" => array()
1579
- ),
1580
- "customCaptionIcon" => array(
1581
- "name" => "Custom caption icon",
1582
- "type" => "PRO_FEATURE",
1583
- "description" => "Use this field to insert the class of a FontAwesome icon (i.e.: fa-heart). <a href='http://fontawesome.io/icons/' target='blank'>See all available icons</a>. <strong>This value override the <i>Caption icon</i> value</strong>.",
1584
- "excludeFrom" => array()
1585
- ),
1586
- "captionIconColor" => array(
1587
- "name" => "Caption icon color",
1588
- "type" => "color",
1589
- "description" => "Color of the icon in captions.",
1590
- "default" => "#ffffff",
1591
- "excludeFrom" => array()
1592
- ),
1593
- "captionIconSize" => array(
1594
- "name" => "Caption icon size",
1595
- "type" => "number",
1596
- "description" => "Size of the icon in captions.",
1597
- "default" => 12,
1598
- "min" => 10,
1599
- "max" => 96,
1600
- "mu" => "px",
1601
- "excludeFrom" => array()
1602
- ),
1603
- "captionFontSize" => array(
1604
- "name" => "Caption font size",
1605
- "type" => "number",
1606
- "description" => "Size of the font in captions.",
1607
- "default" => 12,
1608
- "min" => 10,
1609
- "max" => 96,
1610
- "mu" => "px",
1611
- "excludeFrom" => array()
1612
- ),
1613
- "captionEffect" => array(
1614
- "name" => "Caption effect",
1615
- "type" => "PRO_FEATURE",
1616
- "description" => "Effect used to show the captions.",
1617
- "excludeFrom" => array()
1618
- ),
1619
- "captionEasing" => array(
1620
- "name" => "Caption effect easing",
1621
- "type" => "PRO_FEATURE",
1622
- "description" => "Easing function for the caption animation, works better with sliding animations.",
1623
- "excludeFrom" => array()
1624
- ),
1625
- "captionFrame" => array(
1626
- "name" => "Caption frame",
1627
- "type" => "toggle",
1628
- "description" => "Add a frame around the caption",
1629
- "default" => "F",
1630
- "excludeFrom" => array()
1631
- ),
1632
- "captionFrameColor" => array(
1633
- "name" => "Caption frame color",
1634
- "type" => "color",
1635
- "description" => "Color of the frame around the caption",
1636
- "default" => "#ffffff",
1637
- "excludeFrom" => array()
1638
- ),
1639
- "captionColor" => array(
1640
- "name" => "Caption color",
1641
- "type" => "color",
1642
- "description" => "Text color of the captions.",
1643
- "default" => "#ffffff",
1644
- "excludeFrom" => array()
1645
- ),
1646
- "captionEffectDuration" => array(
1647
- "name" => "Caption effect duration",
1648
- "type" => "text",
1649
- "description" => "Duration of the caption animation.",
1650
- "default" => 250,
1651
- "mu" => "ms",
1652
- "min" => 0,
1653
- "max" => 1000,
1654
- "excludeFrom" => array()
1655
- ),
1656
- "captionBackgroundColor" => array(
1657
- "name" => "Caption background color",
1658
- "type" => "color",
1659
- "description" => "Caption background color",
1660
- "default" => "#000000",
1661
- "excludeFrom" => array()
1662
- ),
1663
- "captionOpacity" => array(
1664
- "name" => "Caption opacity",
1665
- "type" => "text",
1666
- "description" => "Opacity of the caption, 0% means 'invisible' while 100% is a plain color without opacity.",
1667
- "default" => 80,
1668
- "min" => 0,
1669
- "max" => 100,
1670
- "mu" => "%",
1671
- "excludeFrom" => array()
1672
- ),
1673
- "wp_field_caption" => array(
1674
- "name" => "WordPress caption field",
1675
- "type" => "select",
1676
- "description" => "WordPress field used for captions. <strong>This field is used ONLY when images are added to the gallery, </strong> however, if you want to ignore captions just set it to '<i>Don't use captions</i>'.",
1677
- "values" => array(
1678
- "Field" => array("none|Don't use captions", "title|Title", "caption|Caption", "description|Description")
1679
- ),
1680
- "excludeFrom" => array("shortcode")
1681
- ),
1682
- "wp_field_title" => array(
1683
- "name" => "WordPress title field",
1684
- "type" => "select",
1685
- "description" => "WordPress field used for titles. <strong>This field is used ONLY when images are added to the gallery, </strong> however, if you want to ignore titles just set it to '<i>Don't use titles</i>'.",
1686
- "values" => array(
1687
- "Field" => array("none|Don't use titles", "title|Title", "description|Description")
1688
- ),
1689
- "excludeFrom" => array("shortcode")
1690
- ),
1691
- "recentPostsCaption" => array(
1692
- "name" => "Recent posts caption",
1693
- "type" => "select",
1694
- "description" => "Field of the post used for captions when using \"Recent posts\" as source.",
1695
- "values" => array(
1696
- "Field" => array("none|Don't use captions", "title|Title", "excerpt|Excerpt", "auto-excerpt|Auto excerpt")
1697
- ),
1698
- "excludeFrom" => array("shortcode")
1699
- ),
1700
- "recentPostsCaptionAutoExcerptLength" => array(
1701
- "name" => "Max number of words for 'Auto excerpt'",
1702
- "type" => "text",
1703
- "description" => "Define the max number of words of the caption when <i>Recent posts caption</i> is set to <i>Auto excerpt</i>.",
1704
- "default" => "20",
1705
- "excludeFrom" => array()
1706
- ),
1707
- "captionVerticalAlignment" => array(
1708
- "name" => "Caption Vertical Alignment",
1709
- "type" => "select",
1710
- "description" => "Choose the vertical alignment of the caption",
1711
- "values" => array("Caption vertical alignment" => array("Top|Top", "Middle|Middle", "Bottom|Bottom")),
1712
- "excludeFrom" => array()
1713
- ),
1714
- "captionHorizontalAlignment" => array(
1715
- "name" => "Caption Horizontal Alignment",
1716
- "type" => "select",
1717
- "description" => "Choose the horizontal alignment of the caption",
1718
- "values" => array("Caption horizontal alignment" => array("Left|Left", "Center|Center", "Right|Right")),
1719
- "excludeFrom" => array()
1720
- ),
1721
- "titleFontSize" => array(
1722
- "name" => "Title font size",
1723
- "type" => "number",
1724
- "description" => "Size of the font in captions.",
1725
- "min" => 10,
1726
- "max" => 96,
1727
- "mu" => "px",
1728
- "excludeFrom" => array()
1729
- ),
1730
-
1731
-
1732
- )
1733
- ),
1734
- "Hover effects" => array(
1735
- "icon" => "mdi-file-image",
1736
- "fields" => array(
1737
- "hoverZoom" => array(
1738
- "name" => "Zoom",
1739
- "type" => "PRO_FEATURE",
1740
- "description" => "Scale value.",
1741
- "default" => 100,
1742
- "min" => 0,
1743
- "max" => 600,
1744
- "mu" => "%",
1745
- "excludeFrom" => array()
1746
- ),
1747
- "hoverRotation" => array(
1748
- "name" => "Rotation",
1749
- "type" => "PRO_FEATURE",
1750
- "description" => "Rotation value in degrees.",
1751
- "min" => 0,
1752
- "max" => 360,
1753
- "mu" => "deg",
1754
- "default" => 0,
1755
- "excludeFrom" => array()
1756
- ),
1757
- "hoverIconRotation" => array(
1758
- "name" => "Rotate icon",
1759
- "type" => "toggle",
1760
- "default" => "F",
1761
- "description" => "Enable rotation of the icon.",
1762
- "excludeFrom" => array()
1763
- )
1764
- )
1765
- ),
1766
- "Image loaded effects" => array(
1767
- "icon" => "mdi-reload",
1768
- "fields" => array(
1769
- "loadedScale" => array(
1770
- "name" => "Scale",
1771
- "description" => "",
1772
- "type" => "slider",
1773
- "min" => 0,
1774
- "max" => 200,
1775
- "mu" => "%",
1776
- "default" => 100,
1777
- "excludeFrom" => array()
1778
- ),
1779
- "loadedRotate" => array(
1780
- "name" => "Rotate",
1781
- "description" => "",
1782
- "type" => "slider",
1783
- "min" => -180,
1784
- "max" => 180,
1785
- "default" => 0,
1786
- "mu" => "deg",
1787
- "excludeFrom" => array()
1788
- ),
1789
- "loadedHSlide" => array(
1790
- "name" => "Horizontal slide",
1791
- "description" => "",
1792
- "type" => "slider",
1793
- "min" => -100,
1794
- "max" => 100,
1795
- "mu" => "px",
1796
- "default" => 0,
1797
- "excludeFrom" => array()
1798
- ),
1799
- "loadedVSlide" => array(
1800
- "name" => "Vertical slide",
1801
- "description" => "",
1802
- "type" => "slider",
1803
- "min" => -100,
1804
- "max" => 100,
1805
- "mu" => "px",
1806
- "default" => 0,
1807
- "excludeFrom" => array()
1808
- )
1809
-
1810
- )
1811
- ),
1812
- "Style" => array(
1813
- "icon" => "mdi-format-paint",
1814
- "fields" => array(
1815
- "borderSize" => array(
1816
- "name" => "Border size",
1817
- "type" => "number",
1818
- "description" => "Size of the border of each image.",
1819
- "default" => 0,
1820
- "min" => 0,
1821
- "max" => 10,
1822
- "mu" => "px",
1823
- "excludeFrom" => array()
1824
- ),
1825
- "borderRadius" => array(
1826
- "name" => "Border radius",
1827
- "type" => "number",
1828
- "description" => "Border radius of the images.",
1829
- "default" => 0,
1830
- "min" => 0,
1831
- "max" => 100,
1832
- "mu" => "px",
1833
- "excludeFrom" => array()
1834
- ),
1835
- "borderColor" => array(
1836
- "name" => "Border color",
1837
- "type" => "color",
1838
- "description" => "Color of the border when size is greater than 0.",
1839
- "default" => "#000000",
1840
- "excludeFrom" => array()
1841
- ),
1842
- "loadingBarColor" => array(
1843
- "name" => "Loading Bar color",
1844
- "type" => "color",
1845
- "description" => "Color of the loading bar",
1846
- "default" => "#000000",
1847
- "excludeFrom" => array()
1848
- ),
1849
- "loadingBarBackgroundColor" => array(
1850
- "name" => "Loading Bar background color",
1851
- "type" => "color",
1852
- "description" => "Background color of the loading bar",
1853
- "default" => "#cccccc",
1854
- "excludeFrom" => array()
1855
- ),
1856
- "shadowSize" => array(
1857
- "name" => "Shadow size",
1858
- "type" => "number",
1859
- "description" => "Shadow size of the images.",
1860
- "default" => 0,
1861
- "min" => 0,
1862
- "max" => 20,
1863
- "mu" => "px",
1864
- "excludeFrom" => array()
1865
- ),
1866
- "shadowColor" => array(
1867
- "name" => "Shadow color",
1868
- "type" => "color",
1869
- "description" => "Color of the shadow when size is greater than 0.",
1870
- "default" => "#000000",
1871
- "excludeFrom" => array()
1872
- ),
1873
- "backgroundColor" => array(
1874
- "name" => "Tile background color",
1875
- "type" => "color",
1876
- "description" => "Background color of tiles",
1877
- "default" => "#fafafa",
1878
- "excludeFrom" => array()
1879
- )
1880
- )
1881
- ),
1882
- "Customizations" => array(
1883
- "icon" => "mdi-puzzle",
1884
- "fields" => array(
1885
- "aClass" => array(
1886
- "name" => "Additional CSS class on A tag",
1887
- "type" => "text",
1888
- "description" => "Use this field if you need to add additional CSS classes to the link that contains the image.",
1889
- "default" => "",
1890
- "excludeFrom" => array()
1891
- ),
1892
- "rel" => array(
1893
- "name" => "Value of 'rel' attribute on the link that contains the image.",
1894
- "type" => "text",
1895
- "description" => "Use this field if you need to add additional CSS classes to the link that contains the image. This is useful mostly to integrate the gallery with other lightbox plugins.",
1896
- "default" => "",
1897
- "excludeFrom" => array()
1898
- ),
1899
- "beforeGalleryText" => array(
1900
- "name" => "Text before gallery",
1901
- "type" => "textarea",
1902
- "description" => "Use this field to add text/html to be placed just before your gallery.",
1903
- "excludeFrom" => array("shortcode")
1904
- ),
1905
- "afterGalleryText" => array(
1906
- "name" => "Text after gallery",
1907
- "type" => "textarea",
1908
- "description" => "Use this field to add text/html to be placed just after your gallery.",
1909
- "excludeFrom" => array("shortcode")
1910
- ),
1911
- "style" => array(
1912
- "name" => "Custom CSS",
1913
- "type" => "textarea",
1914
- "description" => "<strong>Write just the code without using the &lt;style&gt; tag.</strong><br>List of useful selectors:<br>
1915
- <br>
1916
- <ul>
1917
- <li>
1918
- <em>.final-tiles-gallery</em> : gallery container;
1919
- </li>
1920
- <li>
1921
- <em>.final-tiles-gallery .tile-inner</em> : tile content;
1922
- </li>
1923
- <li>
1924
- <em>.final-tiles-gallery .tile-inner .item</em> : image of the tile;
1925
- </li>
1926
- <li>
1927
- <em>.final-tiles-gallery .tile-inner .caption</em> : caption of the tile;
1928
- </li>
1929
- <li>
1930
- <em>.final-tiles-gallery .ftg-filters</em> : filters container
1931
- </li>
1932
- <li>
1933
- <em>.final-tiles-gallery .ftg-filters a</em> : filter
1934
- </li>
1935
- <li>
1936
- <em>.final-tiles-gallery .ftg-filters a.selected</em> : selected filter
1937
- </li>
1938
- </ul>",
1939
- "excludeFrom" => array("shortcode")
1940
- ),
1941
- "script" => array(
1942
- "name" => "Custom scripts",
1943
- "type" => "textarea",
1944
- "description" => "This script will be called after the gallery initialization. Useful for custom lightboxes.
1945
- <br />
1946
- <br />
1947
- <strong>Write just the code without using the &lt;script&gt;&lt;/script&gt; tags</strong>",
1948
- "excludeFrom" => array("shortcode")
1949
- ),
1950
- "delay" => array(
1951
- "name" => "Delay",
1952
- "type" => "text",
1953
- "description" => "Delay (in milliseconds) before firing the gallery. Sometimes it's needed to avoid conflicts with other plugins.",
1954
- "min" => 0,
1955
- "max" => 5000,
1956
- "mu" => "ms",
1957
- "default" => 0,
1958
- "excludeFrom" => array()
1959
- ),
1960
- "support" => array(
1961
- "name" => "Show developer link",
1962
- "type" => "toggle",
1963
- "description" => "I want to support this plugin, show the developer link!",
1964
- "default" => "F",
1965
- "excludeFrom" => array(),
1966
- "excludeFrom" => array()
1967
- ),
1968
- "supportText" => array(
1969
- "name" => "Developer link text",
1970
- "type" => "text",
1971
- "description" => "Text for the developer link",
1972
- "default" => "powered by Final Tiles Grid Gallery",
1973
- "excludeFrom" => array()
1974
- ),
1975
- "envatoReferral" => array(
1976
- "name" => "Envato username for referral",
1977
- "type" => "text",
1978
- "description" => "Enter your Envato username to earn money! Receive 30% of the first purchase or deposit of each referred user. You do not need to activate anything else, you are automatically eligible.",
1979
- "default" => "GreenTreeLabs",
1980
- "excludeFrom" => array()
1981
- )
1982
- )
1983
- )
1984
- );
1985
- }
1986
- }
1987
-
1988
- if (class_exists("FinalTiles_GalleryLite")) {
1989
- global $ob_FinalTiles_GalleryLite;
1990
- $ob_FinalTiles_GalleryLite = new FinalTiles_GalleryLite();
1991
- }
1992
- ?>
1
+ <?php
2
+
3
+ /**
4
+ * Plugin Name: Final Tiles Grid Gallery
5
+ * Plugin URI: https://www.final-tiles-gallery.com
6
+ * Description: Wordpress Plugin for creating responsive image galleries. By: GreenTreeLabs
7
+ * Author: Green Tree Labs
8
+ * Version: 3.3.13
9
+ * Author URI: https://www.greentreelabs.net
10
+ *
11
+ * @fs_premium_only /lightbox-pro/
12
+ *
13
+ */
14
+ define( 'FTGVERSION', '3.3.13' );
15
+ /*
16
+ Changelog:
17
+ 3.3.13
18
+ Fixed menu slug
19
+ 3.3.12
20
+ Lite version code merged with premium
21
+ 3.3.10
22
+ Bug fix (wrong behaviour on mobile with columns layout)
23
+ 3.3.9
24
+ Extended support for PHP versions
25
+ 3.3.8
26
+ Bug fix (Woocommerce categories were ignored)
27
+ 3.3.7
28
+ Bug fix (Youtube videos not showing in lightboxes)
29
+ 3.3.6
30
+ Bug fix (Vimeo videos not showing in lightboxes)
31
+ 3.3.5
32
+ Enhanced compatibility with EverlightBox
33
+ 3.3.4
34
+ Bug fix (woocommerce 3.1.x galleries not working)
35
+ Admin UI minor fixes
36
+ 3.3.3
37
+ Bug fix (wrong behaviour of captions on mobile devices)
38
+ 3.3.2
39
+ Bug fix (videos not using the masonry layout)
40
+ 3.3.1
41
+ Bug fix (videos not visible)
42
+ 3.3.0
43
+ Use gallery options inside shortcode
44
+ Enhanced backend UI
45
+ Added new caption behaviours
46
+ Fix FitVid conflicts
47
+ Added Hover effects and Image loaded effects presets
48
+ Added hover effect duration
49
+ Added new feature: disable grid size below given screen width
50
+ Added title and description to LightGallery
51
+ 3.2.9
52
+ Added support for EverlightBox
53
+ Renamed get_image_sizes function to avoid conflicts
54
+ 3.2.8
55
+ Minor Bug fix
56
+ 3.2.7
57
+ Minor Bug fix
58
+ 3.2.6
59
+ Bug fix
60
+ New feature: choose image size for lightbox
61
+ 3.2.5
62
+ SwipeBox now supports filters
63
+ Download the full size from LighGallery
64
+ Ajax loading (beta)
65
+ 3.2.4
66
+ Bug fix
67
+ 3.2.3
68
+ Bug fix
69
+ 3.2.2
70
+ Bug fix
71
+ 3.2.1
72
+ Bug fix
73
+ 3.2.0
74
+ Lightbox groups
75
+ Hidden images
76
+ 3.1.32
77
+ Added date filter to media panel
78
+ Added support to Enhanced Media Panel
79
+ Lazy loading with multiple image loading
80
+ Pre-selected filter
81
+ 3.1.31
82
+ Enhanced compatibility with other plugins and themes by adding data-class attribute on images
83
+ 3.1.30
84
+ Fixed jQuery issue
85
+ 3.1.29
86
+ Minor bug fix
87
+ 3.1.28
88
+ Bug fix
89
+ 3.1.27
90
+ Alt tag
91
+ 3.1.26
92
+ Bug fix
93
+ 3.1.25
94
+ Bug fix
95
+ 3.1.24
96
+ Bug fix
97
+ 3.1.23
98
+ Fixed bug occuring with Lazy load + Filters
99
+ 3.1.22
100
+ Lazy load
101
+ 3.1.21
102
+ New layout Masonry
103
+ 3.1.20
104
+ Max number of posts for "Recent posts" galleries
105
+ 3.1.19
106
+ Open videos in lightbox
107
+ 3.1.18
108
+ Admin panel enhancements
109
+ Fixed issue about Magnific Popup being loaded even when not needed
110
+ 3.1.17
111
+ New lightbox added: Lightgallery
112
+ Fixed minor bug in Custom CSS (removed slashes)
113
+ 3.1.16
114
+ Fixed bug in 'Recent posts' galleries, now it's possible to link posts
115
+ 3.1.15
116
+ Added new lightbox: LightGallery
117
+ 3.1.14
118
+ Import/Export features, Set title font size, select images by filter (backend), choose mobile lightbox
119
+ 3.1.13
120
+ Fixed issue with some lightboxes on pages with more than one gallery
121
+ 3.1.12
122
+ Solved conflicts with FitVids
123
+ 3.1.11
124
+ [Backend] edit gallery by clicking the tile
125
+ 3.1.10
126
+ Bug fix
127
+ 3.1.9
128
+ Load gallery with a selected filter, choose to reload page after clicking a filter,
129
+ choose gallery from text editor, load scripts from footer for enhanced page load
130
+ 3.1.8
131
+ Updated material design fonts
132
+ 3.1.7
133
+ Fix grid size 0
134
+ 3.1.6
135
+ Minor bug fix
136
+ 3.1.5
137
+ Image loaded effects
138
+ 3.1.4
139
+ Bug fix
140
+ 3.1.3
141
+ Set a custom label for "All" filter, Choose size of images in admin panel, Loading bar color, Loading bar background color, Caption font size, Sequential image loading
142
+ 3.1.2
143
+ PrettyPhoto security fix
144
+ 3.1.1
145
+ Minor bug fix
146
+ 3.1.0
147
+ New Backoffice
148
+ Wizard
149
+ WooCommerce products
150
+ New caption styles
151
+ Earn money with referral
152
+ 3.0.21
153
+ Bug fix
154
+ 3.0.20
155
+ Support for Social Gallery plugin by EpicPlugins
156
+ 3.0.19
157
+ Bug fix
158
+ 3.0.18
159
+ Posts galleries can use lightboxes
160
+ 3.0.17
161
+ Bug fix
162
+ 3.0.16
163
+ Filters available with recent posts
164
+ 3.0.15
165
+ bug fix
166
+ 3.1.14
167
+ New customization fields: before gallery text and after gallery text
168
+ 3.0.13
169
+ Removed unused gallery properties
170
+ Read "Description" field from media panel
171
+ Added delay control
172
+ 3.0.12
173
+ minor bug fix
174
+ 3.0.11
175
+ Image width and height attributes are now ignored
176
+ 3.0.10
177
+ Added compatibility with Cherry themes
178
+ 3.0.9
179
+ Minor bug fix
180
+ 3.0.8
181
+ Minor bug fix
182
+ 3.0.7
183
+ Minor bug fix
184
+ 3.0.6
185
+ Added filters in media panel
186
+ 3.0.5
187
+ Minor bug fix
188
+ 3.0.4
189
+ Minor bug fix
190
+ 3.0.3
191
+ Bug fix
192
+ 3.0.2
193
+ Bug fix
194
+ 3.0.1
195
+ Bug fix
196
+ 3.0
197
+ New grid layout algorithm
198
+ Video support, reverse order option
199
+ Automatic gallery with recent posts, toggle HTML compression, caption behavior on mobile devices, custom caption icon, update to FontAwesone 4.1.0
200
+ 2.1.10
201
+ Lazy loading
202
+ 2.1.9
203
+ Fixed issue with single quote character in captions
204
+ 2.1.8
205
+ Re-activated html compression
206
+ 2.1.7
207
+ Fixed notice messages
208
+ 2.1.6
209
+ Magnific Popup and Lightbox now work with gallery filters
210
+ 2.1.5
211
+ New feature: dynamic image size factor
212
+ 2.1.4
213
+ New fields: CSS class and REL on A tag
214
+ 2.1.3
215
+ Social icons bug fix
216
+
217
+ 2.1.2
218
+ Show empty captions
219
+ Inverted captions (visible then hidden on mouse over)
220
+ Icons in captions
221
+ Admin redesign UI
222
+ Enable/Disable effects on mouse over
223
+ Caption auto height
224
+ Set color of social sharing icons
225
+ Fixed captions
226
+ Loading progress bar
227
+ Minor bugs fixes
228
+ Page with support request instructions
229
+ Page with instructions
230
+ */
231
+ if ( !function_exists( 'ftg_fs' ) ) {
232
+ // Create a helper function for easy SDK access.
233
+ function ftg_fs()
234
+ {
235
+ global $ftg_fs ;
236
+
237
+ if ( !isset( $ftg_fs ) ) {
238
+ // Include Freemius SDK.
239
+ require_once dirname( __FILE__ ) . '/freemius/start.php';
240
+ $ftg_fs = fs_dynamic_init( array(
241
+ 'id' => '1002',
242
+ 'slug' => 'final-tiles-grid-gallery-lite',
243
+ 'type' => 'plugin',
244
+ 'public_key' => 'pk_d0e075b84d491d510a1d0a21087af',
245
+ 'is_premium' => false,
246
+ 'is_premium_only' => false,
247
+ 'has_addons' => false,
248
+ 'has_paid_plans' => true,
249
+ 'menu' => array(
250
+ 'slug' => 'ftg-lite-gallery-admin',
251
+ 'contact' => false,
252
+ 'support' => false,
253
+ ),
254
+ 'is_live' => true,
255
+ ) );
256
+ }
257
+
258
+ return $ftg_fs;
259
+ }
260
+
261
+ }
262
+ // Init Freemius.
263
+ ftg_fs();
264
+ // Signal that SDK was initiated.
265
+ do_action( 'ftg_fs_loaded' );
266
+ if ( !class_exists( 'FinalTiles_Gallery' ) ) {
267
+ class FinalTiles_Gallery
268
+ {
269
+ private $defaultValues = array(
270
+ 'aClass' => '',
271
+ 'afterGalleryText' => '',
272
+ 'allFilterLabel' => 'All',
273
+ 'ajaxLoading' => 'F',
274
+ 'backgroundColor' => 'transparent',
275
+ 'beforeGalleryText' => '',
276
+ 'blank' => 'F',
277
+ 'borderColor' => 'transparent',
278
+ 'borderRadius' => 0,
279
+ 'borderSize' => 0,
280
+ 'captionBackgroundColor' => '#000000',
281
+ 'captionBehavior' => 'none',
282
+ 'captionColor' => '#ffffff',
283
+ 'captionEasing' => 'linear',
284
+ 'captionEffect' => 'slide-from-bottom',
285
+ 'captionEffectDuration' => 250,
286
+ 'captionEmpty' => 'hide',
287
+ 'captionFontSize' => 12,
288
+ 'captionFrame' => 'F',
289
+ 'captionFrameColor' => '#ffffff',
290
+ 'captionHorizontalAlignment' => 'center',
291
+ 'captionIcon' => 'zoom',
292
+ 'captionIconColor' => '#ffffff',
293
+ 'captionIconSize' => 12,
294
+ 'captionMobileBehavior' => 'desktop',
295
+ 'captionOpacity' => 80,
296
+ 'captionPosition' => 'inside',
297
+ 'captionVerticalAlignment' => 'middle',
298
+ 'columns' => 4,
299
+ 'columnsPhoneLandscape' => 3,
300
+ 'columnsPhonePortrait' => 2,
301
+ 'columnsTabletLandscape' => 4,
302
+ 'columnsTabletPortrait' => 3,
303
+ 'compressHTML' => 'T',
304
+ 'customCaptionIcon' => '',
305
+ 'defaultFilter' => '',
306
+ 'defaultSize' => 'medium',
307
+ 'delay' => 0,
308
+ 'disableLightboxGroups' => 'F',
309
+ 'enableFacebook' => 'F',
310
+ 'enableGplus' => 'F',
311
+ 'enablePinterest' => 'F',
312
+ 'enableTwitter' => 'F',
313
+ 'enlargeImages' => 'T',
314
+ 'envatoReferral' => 'GreenTreeLabs',
315
+ 'filterClick' => 'F',
316
+ 'filters' => '',
317
+ 'gridCellSize' => 25,
318
+ 'gridCellSizeDisabledBelow' => 800,
319
+ 'hoverDuration' => 250,
320
+ 'hoverIconRotation' => 'F',
321
+ 'hoverRotation' => 0,
322
+ 'hoverZoom' => 100,
323
+ 'imageSizeFactor' => 90,
324
+ 'imageSizeFactorCustom' => '',
325
+ 'imageSizeFactorPhoneLandscape' => 60,
326
+ 'imageSizeFactorPhonePortrait' => 50,
327
+ 'imageSizeFactorTabletLandscape' => 80,
328
+ 'imageSizeFactorTabletPortrait' => 70,
329
+ 'imagesOrder' => 'user',
330
+ 'layout' => 'final',
331
+ 'lazyLoad' => false,
332
+ 'lightbox' => 'lightbox2',
333
+ 'lightboxImageSize' => 'large',
334
+ 'loadedDuration' => 500,
335
+ 'loadedEasing' => 'ease-out',
336
+ 'loadedHSlide' => 0,
337
+ 'loadedRotateY' => 0,
338
+ 'loadedRotateX' => 0,
339
+ 'loadedScaleY' => 100,
340
+ 'loadedScaleX' => 100,
341
+ 'loadedVSlide' => 0,
342
+ 'loadingBarBackgroundColor' => '#fff',
343
+ 'loadingBarColor' => '#666',
344
+ 'loadMethod' => 'sequential',
345
+ 'margin' => 10,
346
+ 'max_posts' => 0,
347
+ 'minTileWidth' => '250',
348
+ 'mobileLightbox' => 'lightbox',
349
+ 'post_types' => '',
350
+ 'recentPostsCaption' => 'title',
351
+ 'recentPostsCaptionAutoExcerptLength' => 20,
352
+ 'rel' => '',
353
+ 'reverseOrder' => false,
354
+ 'script' => '',
355
+ 'shadowColor' => '#cccccc',
356
+ 'shadowSize' => 0,
357
+ 'socialIconColor' => '#ffffff',
358
+ 'socialIconPosition' => 'bottom',
359
+ 'socialIconStyle' => 'none',
360
+ 'source' => 'images',
361
+ 'style' => '',
362
+ 'support' => 'F',
363
+ 'supportText' => 'Powered by Final Tiles Grid Gallery',
364
+ 'tilesPerPage' => 0,
365
+ 'titleFontSize' => 14,
366
+ 'width' => '100%',
367
+ 'wp_field_caption' => 'description',
368
+ 'wp_field_title' => 'title',
369
+ ) ;
370
+ //Constructor
371
+ public function __construct()
372
+ {
373
+ $this->plugin_name = plugin_basename( __FILE__ );
374
+ $this->define_constants();
375
+ $this->setupFields();
376
+ $this->define_db_tables();
377
+ $this->FinalTilesdb = $this->create_db_conn();
378
+ register_activation_hook( __FILE__, array( $this, 'activation' ) );
379
+ add_filter( 'widget_text', 'do_shortcode' );
380
+ add_action( 'plugins_loaded', array( $this, 'create_textdomain' ) );
381
+ add_action( 'wp_enqueue_scripts', array( $this, 'add_gallery_scripts' ) );
382
+ //add_action( 'admin_init', array($this,'gallery_admin_init') );
383
+ add_action( 'admin_menu', array( $this, 'add_gallery_admin_menu' ) );
384
+ add_shortcode( 'FinalTilesGallery', array( $this, 'gallery_shortcode_handler' ) );
385
+ add_action( 'wp_ajax_save_gallery', array( $this, 'save_gallery' ) );
386
+ add_action( 'wp_ajax_add_new_gallery', array( $this, 'add_new_gallery' ) );
387
+ add_action( 'wp_ajax_delete_gallery', array( $this, 'delete_gallery' ) );
388
+ add_action( 'wp_ajax_clone_gallery', array( $this, 'clone_gallery' ) );
389
+ add_action( 'wp_ajax_save_image', array( $this, 'save_image' ) );
390
+ add_action( 'wp_ajax_add_image', array( $this, 'add_image' ) );
391
+ add_action( 'wp_ajax_save_video', array( $this, 'save_video' ) );
392
+ add_action( 'wp_ajax_sort_images', array( $this, 'sort_images' ) );
393
+ add_action( 'wp_ajax_delete_image', array( $this, 'delete_image' ) );
394
+ add_action( 'wp_ajax_assign_filters', array( $this, 'assign_filters' ) );
395
+ add_action( 'wp_ajax_assign_group', array( $this, 'assign_group' ) );
396
+ add_action( 'wp_ajax_toggle_visibility', array( $this, 'toggle_visibility' ) );
397
+ add_action( 'wp_ajax_refresh_gallery', array( $this, 'refresh_gallery' ) );
398
+ add_action( 'wp_ajax_get_gallery_configuration', array( $this, 'get_configuration' ) );
399
+ add_action( 'wp_ajax_update_gallery_configuration', array( $this, 'update_configuration' ) );
400
+ add_action( 'wp_ajax_get_image_size_url', array( $this, 'get_image_size_url' ) );
401
+ add_filter( 'mce_buttons', array( $this, 'editor_button' ) );
402
+ add_filter( 'mce_external_plugins', array( $this, 'register_editor_plugin' ) );
403
+ add_action( 'wp_ajax_ftg_shortcode_editor', array( $this, 'ftg_shortcode_editor' ) );
404
+ add_filter(
405
+ 'plugin_row_meta',
406
+ array( $this, 'register_links' ),
407
+ 10,
408
+ 2
409
+ );
410
+ add_action( 'wp_ajax_load_chunk', array( $this, 'load_chunk' ) );
411
+ add_action( 'wp_ajax_nopriv_load_chunk', array( $this, 'load_chunk' ) );
412
+ $this->resetFields();
413
+ }
414
+
415
+ private function resetFields()
416
+ {
417
+ $keys = array(
418
+ 'name',
419
+ 'hiddenFor',
420
+ 'type',
421
+ 'description',
422
+ 'default',
423
+ 'min',
424
+ 'max',
425
+ 'mu',
426
+ 'excludeFrom'
427
+ );
428
+ foreach ( $this->fields as $tab_name => $tab ) {
429
+ foreach ( $tab['fields'] as $key => $field ) {
430
+ //print_r($field);
431
+ foreach ( $keys as $kk ) {
432
+ if ( !array_key_exists( $kk, $field ) ) {
433
+ $this->fields[$tab_name]['fields'][$key][$kk] = '';
434
+ }
435
+ }
436
+ }
437
+ }
438
+ }
439
+
440
+ public function register_links( $links, $file )
441
+ {
442
+ $base = plugin_basename( __FILE__ );
443
+
444
+ if ( $file == $base ) {
445
+ $links[] = '<a href="admin.php?page=ftg-lite-gallery-admin" title="Final Tiles Grid Gallery Dashboard">Dashboard</a>';
446
+ $links[] = '<a href="https://www.greentreelabs.net" title="GreenTreeLabs website">GreenTreeLabs</a>';
447
+ $links[] = '<a href="https://twitter.com/greentreelabs" title="@GreenTreeLabs on Twitter">Twitter</a>';
448
+ $links[] = '<a href="https://www.facebook.com/greentreelabs" title="GreenTreeLabs on Facebook">Facebook</a>';
449
+ $links[] = '<a href="https://www.google.com/+GreentreelabsNetjs" title="GreenTreeLabs on Google+">Google+</a>';
450
+ }
451
+
452
+ return $links;
453
+ }
454
+
455
+ public function create_db_tables()
456
+ {
457
+ include_once WP_PLUGIN_DIR . '/final-tiles-grid-gallery-lite/lib/install-db.php';
458
+ install_db();
459
+ }
460
+
461
+ public function activation()
462
+ {
463
+ }
464
+
465
+ //Define textdomain
466
+ public function create_textdomain()
467
+ {
468
+ $plugin_dir = basename( dirname( __FILE__ ) );
469
+ load_plugin_textdomain( 'final-tiles-gallery', false, dirname( plugin_basename( __FILE__ ) ) . '/lib/languages/' );
470
+ }
471
+
472
+ //Define constants
473
+ public function define_constants()
474
+ {
475
+ if ( !defined( 'FINALTILESGALLERY_PLUGIN_BASENAME' ) ) {
476
+ define( 'FINALTILESGALLERY_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
477
+ }
478
+ if ( !defined( 'FINALTILESGALLERY_PLUGIN_NAME' ) ) {
479
+ define( 'FINALTILESGALLERY_PLUGIN_NAME', trim( dirname( FINALTILESGALLERY_PLUGIN_BASENAME ), '/' ) );
480
+ }
481
+ if ( !defined( 'FINALTILESGALLERY_PLUGIN_DIR' ) ) {
482
+ define( 'FINALTILESGALLERY_PLUGIN_DIR', WP_PLUGIN_DIR . '/' . FINALTILESGALLERY_PLUGIN_NAME );
483
+ }
484
+ }
485
+
486
+ //Define DB tables
487
+ public function define_db_tables()
488
+ {
489
+ global $wpdb ;
490
+ $wpdb->FinalTilesGalleries = $wpdb->prefix . 'FinalTiles_gallery';
491
+ $wpdb->FinalTilesImages = $wpdb->prefix . 'FinalTiles_gallery_images';
492
+ }
493
+
494
+ public function create_db_conn()
495
+ {
496
+ require 'lib/db-class.php';
497
+ $FinalTilesdb = FinalTilesDB::getInstance();
498
+ return $FinalTilesdb;
499
+ }
500
+
501
+ public function editor_button( $buttons )
502
+ {
503
+ array_push( $buttons, 'separator', 'ftg_shortcode_editor' );
504
+ return $buttons;
505
+ }
506
+
507
+ public function register_editor_plugin( $plugin_array )
508
+ {
509
+ $plugin_array['ftg_shortcode_editor'] = plugins_url( '/admin/scripts/editor-plugin.js', __FILE__ );
510
+ return $plugin_array;
511
+ }
512
+
513
+ public function ftg_shortcode_editor()
514
+ {
515
+ $css_path = plugins_url( 'assets/css/admin.css', __FILE__ );
516
+ $admin_url = admin_url();
517
+ $galleries = $this->FinalTilesdb->getGalleries();
518
+ //load all galleries
519
+ include 'admin/include/tinymce-galleries.php';
520
+ wp_die();
521
+ }
522
+
523
+ public function attachment_fields_to_edit( $form, $post )
524
+ {
525
+ $form['ftg_link'] = array(
526
+ 'label' => 'Link <small>FTG</small>',
527
+ 'input' => 'text',
528
+ 'value' => get_post_meta( $post->ID, '_ftg_link', true ),
529
+ 'helps' => '',
530
+ );
531
+ $form['ftg_target'] = array(
532
+ 'label' => '_blank <small>FTG</small>',
533
+ 'input' => 'html',
534
+ 'html' => "<input type='checkbox' name='attachments[{$post->ID}][ftg_target]' id='attachments[{$post->ID}][ftg_target]' value='_mblank' " . (( get_post_meta( $post->ID, '_ftg_target', true ) == '_mblank' ? 'checked' : '' )) . ' />',
535
+ );
536
+ return $form;
537
+ }
538
+
539
+ public function attachment_fields_to_save( $post, $attachment )
540
+ {
541
+ if ( isset( $attachment['ftg_link'] ) ) {
542
+ update_post_meta( $post['ID'], '_ftg_link', $attachment['ftg_link'] );
543
+ }
544
+ if ( isset( $attachment['ftg_target'] ) ) {
545
+ update_post_meta( $post['ID'], '_ftg_target', $attachment['ftg_target'] );
546
+ }
547
+ return $post;
548
+ }
549
+
550
+ //Delete gallery
551
+ public function delete_gallery()
552
+ {
553
+ if ( check_admin_referer( 'FinalTiles_gallery', 'FinalTiles_gallery' ) ) {
554
+ $this->FinalTilesdb->deleteGallery( intval( $_POST['id'] ) );
555
+ }
556
+ die;
557
+ }
558
+
559
+ public function update_configuration()
560
+ {
561
+
562
+ if ( check_admin_referer( 'FinalTiles_gallery', 'FinalTiles_gallery' ) ) {
563
+ $id = $_POST['galleryId'];
564
+ $config = stripslashes( $_POST['config'] );
565
+ $this->FinalTilesdb->update_config( $id, $config );
566
+ }
567
+
568
+ die;
569
+ }
570
+
571
+ public function get_configuration()
572
+ {
573
+
574
+ if ( check_admin_referer( 'FinalTiles_gallery', 'FinalTiles_gallery' ) ) {
575
+ $id = $_POST['galleryId'];
576
+ $gallery = $this->FinalTilesdb->getGalleryConfig( $id );
577
+ echo $gallery ;
578
+ }
579
+
580
+ die;
581
+ }
582
+
583
+ public function get_image_size_url()
584
+ {
585
+ if ( check_admin_referer( 'FinalTiles_gallery', 'FinalTiles_gallery' ) ) {
586
+ echo wp_get_attachment_image_url( $_POST['id'], $_POST['size'], false ) ;
587
+ }
588
+ die;
589
+ }
590
+
591
+ //Clone gallery
592
+ public function clone_gallery()
593
+ {
594
+
595
+ if ( check_admin_referer( 'FinalTiles_gallery', 'FinalTiles_gallery' ) ) {
596
+ $sourceId = intval( $_POST['id'] );
597
+ $g = $this->FinalTilesdb->getGalleryById( $sourceId, true );
598
+ $g['name'] .= ' (copy)';
599
+ $this->FinalTilesdb->addGallery( $g );
600
+ $id = $this->FinalTilesdb->getNewGalleryId();
601
+ $images = $this->FinalTilesdb->getImagesByGalleryId( $sourceId );
602
+ foreach ( $images as &$image ) {
603
+ $image->Id = null;
604
+ $image->gid = $id;
605
+ }
606
+ $this->FinalTilesdb->addImages( $id, $images );
607
+ }
608
+
609
+ die;
610
+ }
611
+
612
+ //Add gallery scripts
613
+ public function add_gallery_scripts()
614
+ {
615
+ wp_enqueue_script( 'jquery' );
616
+ wp_register_script(
617
+ 'finalTilesGallery',
618
+ plugins_url( 'scripts/jquery.finalTilesGallery.js', __FILE__ ),
619
+ array( 'jquery' ),
620
+ FTGVERSION,
621
+ true
622
+ );
623
+ wp_enqueue_script( 'finalTilesGallery' );
624
+ wp_register_style(
625
+ 'finalTilesGallery_stylesheet',
626
+ plugins_url( 'scripts/ftg.css', __FILE__ ),
627
+ array(),
628
+ FTGVERSION
629
+ );
630
+ wp_enqueue_style( 'finalTilesGallery_stylesheet' );
631
+ wp_register_script( 'lightbox2_script', plugins_url( 'lightbox/lightbox2/js/script.js', __FILE__ ), array( 'jquery' ) );
632
+ wp_register_style( 'lightbox2_stylesheet', plugins_url( 'lightbox/lightbox2/css/style.css', __FILE__ ) );
633
+ wp_register_style( 'fontawesome_stylesheet', '//netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.css' );
634
+ wp_enqueue_style( 'fontawesome_stylesheet' );
635
+ }
636
+
637
+ //Admin Section - register scripts and styles
638
+ public function gallery_admin_init()
639
+ {
640
+ if ( function_exists( 'wp_enqueue_media' ) ) {
641
+ wp_enqueue_media();
642
+ }
643
+ $ftg_db_version = '5.0';
644
+ $installed_ver = get_option( 'FinalTiles_gallery_db_version' );
645
+ if ( !$installed_ver ) {
646
+ update_option( 'FinalTiles_gallery_db_version', $ftg_db_version );
647
+ }
648
+ $this->FinalTilesdb->updateConfiguration();
649
+
650
+ if ( $installed_ver != $ftg_db_version ) {
651
+ $this->create_db_tables();
652
+ update_option( 'FinalTiles_gallery_db_version', $ftg_db_version );
653
+ }
654
+
655
+ function ftg_get_image_sizes()
656
+ {
657
+ global $_wp_additional_image_sizes ;
658
+ $sizes = array();
659
+ foreach ( get_intermediate_image_sizes() as $_size ) {
660
+
661
+ if ( in_array( $_size, array(
662
+ 'thumbnail',
663
+ 'medium',
664
+ 'medium_large',
665
+ 'large'
666
+ ) ) ) {
667
+ $sizes[$_size]['width'] = get_option( "{$_size}_size_w" );
668
+ $sizes[$_size]['height'] = get_option( "{$_size}_size_h" );
669
+ $sizes[$_size]['crop'] = (bool) get_option( "{$_size}_crop" );
670
+ } elseif ( isset( $_wp_additional_image_sizes[$_size] ) ) {
671
+ $sizes[$_size] = array(
672
+ 'width' => $_wp_additional_image_sizes[$_size]['width'],
673
+ 'height' => $_wp_additional_image_sizes[$_size]['height'],
674
+ 'crop' => $_wp_additional_image_sizes[$_size]['crop'],
675
+ );
676
+ }
677
+
678
+ }
679
+ return $sizes;
680
+ }
681
+
682
+ foreach ( ftg_get_image_sizes() as $name => $size ) {
683
+ $this->fields['Links & Lightbox']['fields']['lightboxImageSize']['values']['Size'][] = $name . '|' . $name . ' (' . $size['width'] . 'x' . $size['height'] . (( $size['crop'] ? ' cropped)' : ')' ));
684
+ }
685
+ $this->fields['Links & Lightbox']['fields']['lightboxImageSize']['values']['Size'][] = 'full|Original (full)';
686
+ wp_enqueue_script( 'jquery' );
687
+ wp_enqueue_script( 'jquery-ui-dialog' );
688
+ wp_enqueue_script( 'jquery-ui-sortable' );
689
+ wp_enqueue_script( 'wp-color-picker' );
690
+ wp_enqueue_style( 'wp-color-picker' );
691
+ wp_enqueue_script( 'media-upload' );
692
+ wp_enqueue_script( 'thickbox' );
693
+ //wp_register_script('futurico', plugins_url().'/final-tiles-grid-gallery-lite/admin/scripts/SCF.ui.js', array('jquery', 'chosen'));
694
+ //wp_enqueue_script('futurico');
695
+ wp_register_style( 'google-fonts', '//fonts.googleapis.com/css?family=Roboto:400,700,500,300,900' );
696
+ wp_enqueue_style( 'google-fonts' );
697
+ wp_register_style( 'google-icons', '//cdn.materialdesignicons.com/1.9.32/css/materialdesignicons.min.css', array() );
698
+ wp_enqueue_style( 'google-icons' );
699
+ wp_register_style( 'final-tiles-gallery-admin', plugins_url( 'admin/css/style.css', __FILE__ ), array( 'colors' ) );
700
+ wp_enqueue_style( 'final-tiles-gallery-admin' );
701
+ wp_register_script( 'materialize', plugins_url( 'admin/scripts/materialize.min.js', __FILE__ ), array( 'jquery' ) );
702
+ wp_enqueue_script( 'materialize' );
703
+ wp_register_script( 'final-tiles-gallery', plugins_url( 'admin/scripts/final-tiles-gallery-admin.js', __FILE__ ), array(
704
+ 'jquery',
705
+ 'media-upload',
706
+ 'thickbox',
707
+ 'materialize'
708
+ ) );
709
+ wp_enqueue_script( 'final-tiles-gallery' );
710
+ wp_enqueue_style( 'thickbox' );
711
+ wp_register_style( 'fontawesome_stylesheet', '//netdna.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.css' );
712
+ wp_enqueue_style( 'fontawesome_stylesheet' );
713
+ }
714
+
715
+ //Create Admin Menu
716
+ public function add_gallery_admin_menu()
717
+ {
718
+ $overview = add_menu_page(
719
+ 'Final Tiles Gallery',
720
+ 'Final Tiles Gallery',
721
+ 'edit_posts',
722
+ 'ftg-lite-gallery-admin',
723
+ array( $this, 'add_overview' ),
724
+ plugins_url() . '/final-tiles-grid-gallery-lite/admin/icon.png'
725
+ );
726
+ $add_gallery = add_submenu_page(
727
+ 'ftg-lite-gallery-admin',
728
+ __( 'FinalTiles Gallery >> Add Gallery', 'FinalTiles-gallery' ),
729
+ __( 'Add Gallery', 'FinalTiles-gallery' ),
730
+ 'edit_posts',
731
+ 'ftg-add-gallery',
732
+ array( $this, 'add_gallery' )
733
+ );
734
+ $tutorial = add_submenu_page(
735
+ 'ftg-lite-gallery-admin',
736
+ __( 'FinalTiles Gallery >> Tutorial', 'FinalTiles-gallery' ),
737
+ __( 'Tutorial', 'FinalTiles-gallery' ),
738
+ 'edit_posts',
739
+ 'ftg-tutorial',
740
+ array( $this, 'tutorial' )
741
+ );
742
+ add_action( 'load-' . $tutorial, array( $this, 'gallery_admin_init' ) );
743
+ add_action( 'load-' . $overview, array( $this, 'gallery_admin_init' ) );
744
+ add_action( 'load-' . $add_gallery, array( $this, 'gallery_admin_init' ) );
745
+ }
746
+
747
+ //Create Admin Pages
748
+ public function add_overview()
749
+ {
750
+ global $ftg_fields ;
751
+ $ftg_fields = $this->fields;
752
+ global $ftg_parent_page ;
753
+ $ftg_parent_page = 'dashboard';
754
+
755
+ if ( array_key_exists( 'id', $_GET ) ) {
756
+ $woocommerce_post_types = array(
757
+ 'product',
758
+ 'product_variation',
759
+ 'shop_order',
760
+ 'shop_order_refund',
761
+ 'shop_coupon',
762
+ 'shop_webhook'
763
+ );
764
+ $wp_post_types = array( 'revision', 'nav_menu_item' );
765
+ $excluded_post_types = array_merge( $wp_post_types, $woocommerce_post_types );
766
+ $woo_categories = $this->getWooCategories();
767
+ include 'admin/edit-gallery.php';
768
+ } else {
769
+ include 'admin/overview.php';
770
+ }
771
+
772
+ }
773
+
774
+ public function tutorial()
775
+ {
776
+ include 'admin/tutorial.php';
777
+ }
778
+
779
+ public function support()
780
+ {
781
+ include 'admin/support.php';
782
+ }
783
+
784
+ private function getWooCategories()
785
+ {
786
+
787
+ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
788
+ $taxonomy = 'product_cat';
789
+ $orderby = 'name';
790
+ $show_count = 0;
791
+ // 1 for yes, 0 for no
792
+ $pad_counts = 0;
793
+ // 1 for yes, 0 for no
794
+ $hierarchical = 1;
795
+ // 1 for yes, 0 for no
796
+ $title = '';
797
+ $empty = 0;
798
+ $args = array(
799
+ 'taxonomy' => $taxonomy,
800
+ 'orderby' => $orderby,
801
+ 'show_count' => $show_count,
802
+ 'pad_counts' => $pad_counts,
803
+ 'hierarchical' => $hierarchical,
804
+ 'title_li' => $title,
805
+ 'hide_empty' => $empty,
806
+ );
807
+ return get_categories( $args );
808
+ } else {
809
+ return array();
810
+ }
811
+
812
+ }
813
+
814
+ public function add_gallery()
815
+ {
816
+ global $ftg_fields ;
817
+ $ftg_fields = $this->fields;
818
+ $gallery = null;
819
+ $woocommerce_post_types = array(
820
+ 'product',
821
+ 'product_variation',
822
+ 'shop_order',
823
+ 'shop_order_refund',
824
+ 'shop_coupon',
825
+ 'shop_webhook'
826
+ );
827
+ $wp_post_types = array( 'revision', 'nav_menu_item' );
828
+ $excluded_post_types = array_merge( $wp_post_types, $woocommerce_post_types );
829
+ $woo_categories = $this->getWooCategories();
830
+ include 'admin/add-gallery.php';
831
+ }
832
+
833
+ public function delete_image()
834
+ {
835
+ if ( check_admin_referer( 'FinalTiles_gallery', 'FinalTiles_gallery' ) ) {
836
+ foreach ( explode( ',', $_POST['id'] ) as $id ) {
837
+ $this->FinalTilesdb->deleteImage( intval( $id ) );
838
+ }
839
+ }
840
+ wp_die();
841
+ }
842
+
843
+ public function assign_filters()
844
+ {
845
+ if ( check_admin_referer( 'FinalTiles_gallery', 'FinalTiles_gallery' ) ) {
846
+
847
+ if ( $_POST['source'] == 'posts' ) {
848
+ foreach ( explode( ',', $_POST['id'] ) as $id ) {
849
+ update_post_meta( intval( $id ), 'ftg_filters', $_POST['filters'] );
850
+ }
851
+ } else {
852
+ foreach ( explode( ',', $_POST['id'] ) as $id ) {
853
+ $result = $this->FinalTilesdb->editImage( $id, array(
854
+ 'filters' => $_POST['filters'],
855
+ ) );
856
+ }
857
+ }
858
+
859
+ }
860
+ wp_die();
861
+ }
862
+
863
+ public function toggle_visibility()
864
+ {
865
+ if ( check_admin_referer( 'FinalTiles_gallery', 'FinalTiles_gallery' ) ) {
866
+ foreach ( explode( ',', $_POST['id'] ) as $id ) {
867
+ $image = $this->FinalTilesdb->getImage( $id );
868
+ $this->FinalTilesdb->editImage( $id, array(
869
+ 'hidden' => ( $image->hidden == 'T' ? 'F' : 'T' ),
870
+ ) );
871
+ }
872
+ }
873
+ wp_die();
874
+ }
875
+
876
+ public function assign_group()
877
+ {
878
+ if ( check_admin_referer( 'FinalTiles_gallery', 'FinalTiles_gallery' ) ) {
879
+
880
+ if ( $_POST['source'] == 'posts' ) {
881
+ foreach ( explode( ',', $_POST['id'] ) as $id ) {
882
+ update_post_meta( intval( $id ), 'ftg_group', $_POST['group'] );
883
+ }
884
+ } else {
885
+ foreach ( explode( ',', $_POST['id'] ) as $id ) {
886
+ $result = $this->FinalTilesdb->editImage( $id, array(
887
+ 'group' => $_POST['group'],
888
+ ) );
889
+ }
890
+ }
891
+
892
+ }
893
+ wp_die();
894
+ }
895
+
896
+ public function add_image()
897
+ {
898
+
899
+ if ( check_admin_referer( 'FinalTiles_gallery', 'FinalTiles_gallery' ) ) {
900
+ $gid = intval( $_POST['galleryId'] );
901
+ $enc_images = stripslashes( $_POST['enc_images'] );
902
+ $images = json_decode( $enc_images );
903
+ $result = $this->FinalTilesdb->addImages( $gid, $images );
904
+ header( 'Content-type: application/json' );
905
+
906
+ if ( $result === false ) {
907
+ echo '{"success":false}' ;
908
+ } else {
909
+ echo '{"success":true}' ;
910
+ }
911
+
912
+ }
913
+
914
+ wp_die();
915
+ }
916
+
917
+ public function list_thumbnail_sizes()
918
+ {
919
+ global $_wp_additional_image_sizes ;
920
+ $sizes = array();
921
+ foreach ( get_intermediate_image_sizes() as $s ) {
922
+
923
+ if ( in_array( $s, array( 'thumbnail', 'medium', 'large' ) ) ) {
924
+ $sizes[$s][0] = get_option( $s . '_size_w' );
925
+ $sizes[$s][1] = get_option( $s . '_size_h' );
926
+ } else {
927
+ if ( isset( $_wp_additional_image_sizes ) && isset( $_wp_additional_image_sizes[$s] ) && $_wp_additional_image_sizes[$s]['width'] > 0 && $_wp_additional_image_sizes[$s]['height'] > 0 ) {
928
+ $sizes[$s] = array( $_wp_additional_image_sizes[$s]['width'], $_wp_additional_image_sizes[$s]['height'] );
929
+ }
930
+ }
931
+
932
+ }
933
+ return $sizes;
934
+ }
935
+
936
+ public function sort_images()
937
+ {
938
+
939
+ if ( check_admin_referer( 'FinalTiles_gallery', 'FinalTiles_gallery' ) ) {
940
+ $result = $this->FinalTilesdb->sortImages( explode( ',', $_POST['ids'] ) );
941
+ header( 'Content-type: application/json' );
942
+
943
+ if ( $result === false ) {
944
+ echo '{"success":false}' ;
945
+ } else {
946
+ echo '{"success":true}' ;
947
+ }
948
+
949
+ }
950
+
951
+ wp_die();
952
+ }
953
+
954
+ public function load_chunk()
955
+ {
956
+ require_once 'lib/gallery-class.php';
957
+
958
+ if ( check_admin_referer( 'finaltilesgallery', 'finaltilesgallery' ) ) {
959
+ $gid = intval( $_POST['gallery'] );
960
+ $images = $this->FinalTilesdb->getImagesByGalleryId( $gid );
961
+ $FinalTilesGallery = new FinalTilesGallery( $gid, $this->FinalTilesdb, $this->defaultValues );
962
+ echo $FinalTilesGallery->images_markup() ;
963
+ }
964
+
965
+ wp_die();
966
+ }
967
+
968
+ public function refresh_gallery()
969
+ {
970
+ if ( $_POST['source'] == 'images' ) {
971
+ $this->list_images();
972
+ }
973
+ }
974
+
975
+ public function save_image()
976
+ {
977
+
978
+ if ( check_admin_referer( 'FinalTiles_gallery', 'FinalTiles_gallery' ) ) {
979
+ $result = false;
980
+
981
+ if ( $_POST['source'] == 'posts' ) {
982
+ $result = true;
983
+ $postId = intval( $_POST['post_id'] );
984
+ $img_url = stripslashes( $_POST['img_url'] );
985
+ update_post_meta( $postId, 'ftg_image_url', $img_url );
986
+ if ( array_key_exists( 'filters', $_POST ) && strlen( $_POST['filters'] ) ) {
987
+ update_post_meta( $postId, 'ftg_filters', $_POST['filters'] );
988
+ }
989
+ } else {
990
+ $type = $_POST['type'];
991
+ $imageUrl = stripslashes( $_POST['img_url'] );
992
+ $imageCaption = stripslashes( $_POST['description'] );
993
+ $filters = stripslashes( $_POST['filters'] );
994
+ $title = stripslashes( $_POST['imageTitle'] );
995
+ $target = $_POST['target'];
996
+ $group = $_POST['group'];
997
+ $hidden = $_POST['hidden'];
998
+ $link = ( isset( $_POST['link'] ) ? stripslashes( $_POST['link'] ) : null );
999
+ $imageId = intval( $_POST['img_id'] );
1000
+ $sortOrder = intval( $_POST['sortOrder'] );
1001
+ $data = array(
1002
+ 'imagePath' => $imageUrl,
1003
+ 'target' => $target,
1004
+ 'link' => $link,
1005
+ 'imageId' => $imageId,
1006
+ 'description' => $imageCaption,
1007
+ 'filters' => $filters,
1008
+ 'title' => $title,
1009
+ 'group' => $group,
1010
+ 'hidden' => $hidden,
1011
+ 'sortOrder' => $sortOrder,
1012
+ );
1013
+
1014
+ if ( !empty($_POST['id']) ) {
1015
+ $imageId = intval( $_POST['id'] );
1016
+ $result = $this->FinalTilesdb->editImage( $imageId, $data );
1017
+ } else {
1018
+ $data['gid'] = intval( $_POST['galleryId'] );
1019
+ $result = $this->FinalTilesdb->addFullImage( $data );
1020
+ }
1021
+
1022
+ }
1023
+
1024
+ header( 'Content-type: application/json' );
1025
+
1026
+ if ( $result === false ) {
1027
+ echo '{"success":false}' ;
1028
+ } else {
1029
+ echo '{"success":true}' ;
1030
+ }
1031
+
1032
+ }
1033
+
1034
+ wp_die();
1035
+ }
1036
+
1037
+ public function save_video()
1038
+ {
1039
+
1040
+ if ( check_admin_referer( 'FinalTiles_gallery', 'FinalTiles_gallery' ) ) {
1041
+ $result = false;
1042
+ $type = ( isset( $_POST['type'] ) ? $_POST['type'] : '' );
1043
+ $data = array(
1044
+ 'imagePath' => stripslashes( $_POST['embed'] ),
1045
+ 'filters' => stripslashes( $_POST['filters'] ),
1046
+ 'gid' => intval( $_POST['galleryId'] ),
1047
+ );
1048
+ $id = ( isset( $_POST['id'] ) ? intval( $_POST['id'] ) : '' );
1049
+ $step = ( isset( $_POST['step'] ) ? $_POST['step'] : '' );
1050
+ if ( !empty($step) ) {
1051
+
1052
+ if ( $step == 'add' ) {
1053
+ $result = $this->FinalTilesdb->addVideo( $data );
1054
+ } else {
1055
+ if ( $step == 'edit' ) {
1056
+ $result = $this->FinalTilesdb->editVideo( $id, $data );
1057
+ }
1058
+ }
1059
+
1060
+ }
1061
+ header( 'Content-type: application/json' );
1062
+
1063
+ if ( $result === false ) {
1064
+ echo '{"success":false}' ;
1065
+ } else {
1066
+ echo '{"success":true}' ;
1067
+ }
1068
+
1069
+ }
1070
+
1071
+ wp_die();
1072
+ }
1073
+
1074
+ public function list_images()
1075
+ {
1076
+
1077
+ if ( check_admin_referer( 'FinalTiles_gallery', 'FinalTiles_gallery' ) ) {
1078
+ $gid = intval( $_POST['gid'] );
1079
+ $imageResults = $this->FinalTilesdb->getImagesByGalleryId( $gid );
1080
+ $gallery = $this->FinalTilesdb->getGalleryById( $gid );
1081
+ $list_size = 'medium';
1082
+ $column_size = 's6 m3 l3';
1083
+ if ( isset( $_POST['list_size'] ) && !empty($_POST['list_size']) ) {
1084
+ $list_size = $_POST['list_size'];
1085
+ }
1086
+ setcookie( 'ftg_imglist_size', $list_size );
1087
+ $_COOKIE['ftg_imglist_size'] = $list_size;
1088
+ if ( $list_size == 'small' ) {
1089
+ $column_size = 's4 m2 l2';
1090
+ }
1091
+ if ( $list_size == 'medium' ) {
1092
+ $column_size = 's6 m3 l3';
1093
+ }
1094
+ if ( $list_size == 'big' ) {
1095
+ $column_size = 's12 m4 l4';
1096
+ }
1097
+ include 'admin/include/image-list.php';
1098
+ }
1099
+
1100
+ wp_die();
1101
+ }
1102
+
1103
+ public function add_new_gallery()
1104
+ {
1105
+
1106
+ if ( check_admin_referer( 'FinalTiles_gallery', 'FinalTiles_gallery' ) ) {
1107
+ $data = $this->defaultValues;
1108
+ $data['name'] = $_POST['ftg_name'];
1109
+ $data['description'] = $_POST['ftg_description'];
1110
+ $data['source'] = $_POST['ftg_source'];
1111
+ $data['wp_field_caption'] = $_POST['ftg_wp_field_caption'];
1112
+ $data['wp_field_title'] = $_POST['ftg_wp_field_title'];
1113
+ $data['captionEffect'] = $_POST['ftg_captionEffect'];
1114
+ $data['post_categories'] = $_POST['post_categories'];
1115
+ $data['post_tags'] = $_POST['post_tags'];
1116
+ $data['layout'] = $_POST['layout'];
1117
+ $data['defaultWooImageSize'] = $_POST['def_imgsize'];
1118
+ $data['defaultPostImageSize'] = $_POST['def_imgsize'];
1119
+ $data['woo_categories'] = $_POST['woo_categories'];
1120
+ $result = $this->FinalTilesdb->addGallery( $data );
1121
+ $id = $this->FinalTilesdb->getNewGalleryId();
1122
+
1123
+ if ( $id > 0 && array_key_exists( 'enc_images', $_POST ) && strlen( $_POST['enc_images'] ) ) {
1124
+ $enc_images = stripslashes( $_POST['enc_images'] );
1125
+ $images = json_decode( $enc_images );
1126
+ $result = $this->FinalTilesdb->addImages( $id, $images );
1127
+ }
1128
+
1129
+ echo $id ;
1130
+ } else {
1131
+ echo -1 ;
1132
+ }
1133
+
1134
+ wp_die();
1135
+ }
1136
+
1137
+ private function checkboxVal( $field )
1138
+ {
1139
+ if ( isset( $_POST[$field] ) ) {
1140
+ return 'T';
1141
+ }
1142
+ return 'F';
1143
+ }
1144
+
1145
+ public function save_gallery()
1146
+ {
1147
+
1148
+ if ( check_admin_referer( 'FinalTiles_gallery', 'FinalTiles_gallery' ) ) {
1149
+ $galleryName = stripslashes( $_POST['ftg_name'] );
1150
+ $galleryDescription = stripslashes( $_POST['ftg_description'] );
1151
+ $slug = strtolower( str_replace( ' ', '', $galleryName ) );
1152
+ $margin = intval( $_POST['ftg_margin'] );
1153
+ $minTileWidth = intval( $_POST['ftg_minTileWidth'] );
1154
+ $gridCellSize = intval( $_POST['ftg_gridCellSize'] );
1155
+ $imagesOrder = $_POST['ftg_imagesOrder'];
1156
+ $width = $_POST['ftg_width'];
1157
+ $enableTwitter = $this->checkboxVal( 'ftg_enableTwitter' );
1158
+ $filterClick = $this->checkboxVal( 'ftg_filterClick' );
1159
+ $enableFacebook = $this->checkboxVal( 'ftg_enableFacebook' );
1160
+ $enableGplus = $this->checkboxVal( 'ftg_enableGplus' );
1161
+ $enablePinterest = $this->checkboxVal( 'ftg_enablePinterest' );
1162
+ $lightbox = $_POST['ftg_lightbox'];
1163
+ $mobileLightbox = $_POST['ftg_mobileLightbox'];
1164
+ $blank = $this->checkboxVal( 'ftg_blank' );
1165
+ $filters = $_POST['ftg_filters'];
1166
+ $scrollEffect = $_POST['ftg_scrollEffect'];
1167
+ $captionBehavior = $_POST['ftg_captionBehavior'];
1168
+ $captionMobileBehavior = $_POST['ftg_captionMobileBehavior'];
1169
+ $captionEffect = $_POST['ftg_captionEffect'];
1170
+ $captionColor = $_POST['ftg_captionColor'];
1171
+ $captionBackgroundColor = $_POST['ftg_captionBackgroundColor'];
1172
+ $captionEasing = $_POST['ftg_captionEasing'];
1173
+ $captionHorizontalAlignment = $_POST['ftg_captionHorizontalAlignment'];
1174
+ $captionVerticalAlignment = $_POST['ftg_captionVerticalAlignment'];
1175
+ $captionEmpty = $_POST['ftg_captionEmpty'];
1176
+ $captionOpacity = intval( $_POST['ftg_captionOpacity'] );
1177
+ $borderSize = intval( $_POST['ftg_borderSize'] );
1178
+ $borderColor = $_POST['ftg_borderColor'];
1179
+ $titleFontSize = intval( $_POST['ftg_titleFontSize'] );
1180
+ $loadingBarColor = $_POST['ftg_loadingBarColor'];
1181
+ $loadingBarBackgroundColor = $_POST['ftg_loadingBarBackgroundColor'];
1182
+ $borderRadius = intval( $_POST['ftg_borderRadius'] );
1183
+ $allFilterLabel = $_POST['ftg_allFilterLabel'];
1184
+ $shadowColor = $_POST['ftg_shadowColor'];
1185
+ $shadowSize = intval( $_POST['ftg_shadowSize'] );
1186
+ $enlargeImages = $this->checkboxVal( 'ftg_enlargeImages' );
1187
+ $wp_field_caption = $_POST['ftg_wp_field_caption'];
1188
+ $wp_field_title = $_POST['ftg_wp_field_title'];
1189
+ $style = $_POST['ftg_style'];
1190
+ $script = $_POST['ftg_script'];
1191
+ $loadedHSlide = intval( $_POST['ftg_loadedHSlide'] );
1192
+ $loadedVSlide = intval( $_POST['ftg_loadedVSlide'] );
1193
+ $captionEffectDuration = intval( $_POST['ftg_captionEffectDuration'] );
1194
+ $id = ( isset( $_POST['ftg_gallery_edit'] ) ? intval( $_POST['ftg_gallery_edit'] ) : 0 );
1195
+ $data = array(
1196
+ 'ajaxLoading' => $_POST['ftg_ajaxLoading'],
1197
+ 'layout' => $_POST['ftg_layout'],
1198
+ 'name' => $galleryName,
1199
+ 'slug' => $slug,
1200
+ 'description' => $galleryDescription,
1201
+ 'lightbox' => $lightbox,
1202
+ 'mobileLightbox' => $mobileLightbox,
1203
+ 'lightboxImageSize' => $_POST['ftg_lightboxImageSize'],
1204
+ 'blank' => $blank,
1205
+ 'margin' => $margin,
1206
+ 'allFilterLabel' => $allFilterLabel,
1207
+ 'minTileWidth' => $minTileWidth,
1208
+ 'gridCellSize' => $gridCellSize,
1209
+ 'gridCellSizeDisabledBelow' => intval( $_POST['ftg_gridCellSizeDisabledBelow'] ),
1210
+ 'enableTwitter' => $enableTwitter,
1211
+ 'backgroundColor' => $_POST['ftg_backgroundColor'],
1212
+ 'filterClick' => $filterClick,
1213
+ 'disableLightboxGroups' => $this->checkboxVal( 'ftg_disableLightboxGroups' ),
1214
+ 'defaultFilter' => $_POST['ftg_filterDef'],
1215
+ 'enableFacebook' => $enableFacebook,
1216
+ 'enableGplus' => $enableGplus,
1217
+ 'enablePinterest' => $enablePinterest,
1218
+ 'imagesOrder' => $imagesOrder,
1219
+ 'compressHTML' => $this->checkboxVal( 'ftg_compressHTML' ),
1220
+ 'loadMethod' => $_POST['ftg_loadMethod'],
1221
+ 'socialIconColor' => $_POST['ftg_socialIconColor'],
1222
+ 'socialIconPosition' => $_POST['ftg_socialIconPosition'],
1223
+ 'socialIconStyle' => $_POST['ftg_socialIconStyle'],
1224
+ 'recentPostsCaption' => $_POST['ftg_recentPostsCaption'],
1225
+ 'recentPostsCaptionAutoExcerptLength' => intval( $_POST['ftg_recentPostsCaptionAutoExcerptLength'] ),
1226
+ 'captionBehavior' => $captionBehavior,
1227
+ 'captionEffect' => $captionEffect,
1228
+ 'captionEmpty' => $captionEmpty,
1229
+ 'captionBackgroundColor' => $captionBackgroundColor,
1230
+ 'captionColor' => $captionColor,
1231
+ 'captionFrameColor' => $_POST['ftg_captionFrameColor'],
1232
+ 'captionEffectDuration' => $captionEffectDuration,
1233
+ 'captionEasing' => $captionEasing,
1234
+ 'captionVerticalAlignment' => $captionVerticalAlignment,
1235
+ 'captionHorizontalAlignment' => $captionHorizontalAlignment,
1236
+ 'captionMobileBehavior' => $captionMobileBehavior,
1237
+ 'captionOpacity' => $captionOpacity,
1238
+ 'captionIcon' => $_POST['ftg_captionIcon'],
1239
+ 'captionFrame' => $this->checkboxVal( 'ftg_captionFrame' ),
1240
+ 'customCaptionIcon' => $_POST['ftg_customCaptionIcon'],
1241
+ 'captionIconColor' => $_POST['ftg_captionIconColor'],
1242
+ 'captionIconSize' => intval( $_POST['ftg_captionIconSize'] ),
1243
+ 'captionFontSize' => intval( $_POST['ftg_captionFontSize'] ),
1244
+ 'captionPosition' => $_POST['ftg_captionPosition'],
1245
+ 'titleFontSize' => intval( $_POST['ftg_titleFontSize'] ),
1246
+ 'hoverZoom' => intval( $_POST['ftg_hoverZoom'] ),
1247
+ 'hoverRotation' => intval( $_POST['ftg_hoverRotation'] ),
1248
+ 'hoverDuration' => intval( $_POST['ftg_hoverDuration'] ),
1249
+ 'hoverIconRotation' => $this->checkboxVal( 'ftg_hoverIconRotation' ),
1250
+ 'filters' => $filters,
1251
+ 'wp_field_caption' => $wp_field_caption,
1252
+ 'wp_field_title' => $wp_field_title,
1253
+ 'borderSize' => $borderSize,
1254
+ 'borderColor' => $borderColor,
1255
+ 'loadingBarColor' => $loadingBarColor,
1256
+ 'loadingBarBackgroundColor' => $loadingBarBackgroundColor,
1257
+ 'enlargeImages' => $enlargeImages,
1258
+ 'borderRadius' => $borderRadius,
1259
+ 'imageSizeFactor' => intval( $_POST['ftg_imageSizeFactor'] ),
1260
+ 'imageSizeFactorTabletLandscape' => intval( $_POST['ftg_imageSizeFactorTabletLandscape'] ),
1261
+ 'imageSizeFactorTabletPortrait' => intval( $_POST['ftg_imageSizeFactorTabletPortrait'] ),
1262
+ 'imageSizeFactorPhoneLandscape' => intval( $_POST['ftg_imageSizeFactorPhoneLandscape'] ),
1263
+ 'imageSizeFactorPhonePortrait' => intval( $_POST['ftg_imageSizeFactorPhonePortrait'] ),
1264
+ 'imageSizeFactorCustom' => $_POST['ftg_imageSizeFactorCustom'],
1265
+ 'columns' => intval( $_POST['ftg_columns'] ),
1266
+ 'columnsTabletLandscape' => intval( $_POST['ftg_columnsTabletLandscape'] ),
1267
+ 'columnsTabletPortrait' => intval( $_POST['ftg_columnsTabletPortrait'] ),
1268
+ 'columnsPhoneLandscape' => intval( $_POST['ftg_columnsPhoneLandscape'] ),
1269
+ 'columnsPhonePortrait' => intval( $_POST['ftg_columnsPhonePortrait'] ),
1270
+ 'max_posts' => intval( $_POST['ftg_max_posts'] ),
1271
+ 'shadowSize' => $shadowSize,
1272
+ 'shadowColor' => $shadowColor,
1273
+ 'source' => $_POST['ftg_source'],
1274
+ 'post_types' => $_POST['ftg_post_types'],
1275
+ 'post_categories' => $_POST['ftg_post_categories'],
1276
+ 'post_tags' => $_POST['ftg_post_tags'],
1277
+ 'tilesPerPage' => intval( $_POST['ftg_tilesPerPage'] ),
1278
+ 'woo_categories' => ( isset( $_POST['ftg_woo_categories'] ) ? $_POST['ftg_woo_categories'] : '' ),
1279
+ 'defaultPostImageSize' => $_POST['ftg_defaultPostImageSize'],
1280
+ 'defaultWooImageSize' => ( isset( $_POST['ftg_defaultWooImageSize'] ) ? $_POST['ftg_defaultWooImageSize'] : '' ),
1281
+ 'width' => $width,
1282
+ 'beforeGalleryText' => $_POST['ftg_beforeGalleryText'],
1283
+ 'afterGalleryText' => $_POST['ftg_afterGalleryText'],
1284
+ 'aClass' => $_POST['ftg_aClass'],
1285
+ 'rel' => $_POST['ftg_rel'],
1286
+ 'style' => $style,
1287
+ 'delay' => intval( $_POST['ftg_delay'] ),
1288
+ 'script' => $script,
1289
+ 'support' => $this->checkboxVal( 'ftg_support' ),
1290
+ 'supportText' => $_POST['ftg_supportText'],
1291
+ 'envatoReferral' => $_POST['ftg_envatoReferral'],
1292
+ 'scrollEffect' => $scrollEffect,
1293
+ 'loadedScaleY' => intval( $_POST['ftg_loadedScaleY'] ),
1294
+ 'loadedScaleX' => intval( $_POST['ftg_loadedScaleX'] ),
1295
+ 'loadedRotate' => $loadedRotate,
1296
+ 'loadedHSlide' => $loadedHSlide,
1297
+ 'loadedVSlide' => $loadedVSlide,
1298
+ 'loadedEasing' => $_POST['ftg_loadedEasing'],
1299
+ 'loadedDuration' => $_POST['ftg_loadedDuration'],
1300
+ 'loadedRotateY' => intval( $_POST['ftg_loadedRotateY'] ),
1301
+ 'loadedRotateX' => intval( $_POST['ftg_loadedRotateX'] ),
1302
+ );
1303
+ header( 'Content-type: application/json' );
1304
+
1305
+ if ( $id > 0 ) {
1306
+ $result = $this->FinalTilesdb->editGallery( $id, $data );
1307
+ } else {
1308
+ $result = $this->FinalTilesdb->addGallery( $data );
1309
+ $id = $this->FinalTilesdb->getNewGalleryId();
1310
+ }
1311
+
1312
+
1313
+ if ( $result ) {
1314
+ echo '{"success":true,"id":' . $id . '}' ;
1315
+ } else {
1316
+ echo '{"success":false}' ;
1317
+ }
1318
+
1319
+ }
1320
+
1321
+ wp_die();
1322
+ }
1323
+
1324
+ public static function get_image_size_links( $id )
1325
+ {
1326
+ $result = array();
1327
+ $sizes = get_intermediate_image_sizes();
1328
+ $sizes[] = 'full';
1329
+ foreach ( $sizes as $size ) {
1330
+ $image = wp_get_attachment_image_src( $id, $size );
1331
+ if ( !empty($image) && (true == $image[3] || 'full' == $size) ) {
1332
+ $result["{$image['1']}x{$image['2']}"] = $image[0];
1333
+ }
1334
+ }
1335
+ ksort( $result );
1336
+ return $result;
1337
+ }
1338
+
1339
+ //Create gallery
1340
+ public function create_gallery( $attrs )
1341
+ {
1342
+ require_once 'lib/gallery-class.php';
1343
+ global $FinalTilesGallery ;
1344
+ $galleryId = $attrs['id'];
1345
+
1346
+ if ( class_exists( 'FinalTilesGallery' ) ) {
1347
+ $FinalTilesGallery = new FinalTilesGallery(
1348
+ $galleryId,
1349
+ $this->FinalTilesdb,
1350
+ $this->defaultValues,
1351
+ $attrs
1352
+ );
1353
+ $settings = $FinalTilesGallery->getGallery();
1354
+ switch ( $settings->lightbox ) {
1355
+ case 'magnific':
1356
+ wp_enqueue_style( 'magnific_stylesheet' );
1357
+ wp_enqueue_script( 'magnific_script' );
1358
+ break;
1359
+ case 'prettyphoto':
1360
+ wp_enqueue_style( 'prettyphoto_stylesheet' );
1361
+ wp_enqueue_script( 'prettyphoto_script' );
1362
+ break;
1363
+ case 'fancybox':
1364
+ wp_enqueue_style( 'fancybox_stylesheet' );
1365
+ wp_enqueue_script( 'fancybox_script' );
1366
+ break;
1367
+ case 'colorbox':
1368
+ wp_enqueue_style( 'colorbox_stylesheet' );
1369
+ wp_enqueue_script( 'colorbox_script' );
1370
+ break;
1371
+ case 'swipebox':
1372
+ wp_enqueue_style( 'swipebox_stylesheet' );
1373
+ wp_enqueue_script( 'swipebox_script' );
1374
+ break;
1375
+ case 'lightbox2':
1376
+ wp_enqueue_style( 'lightbox2_stylesheet' );
1377
+ wp_enqueue_script( 'lightbox2_script' );
1378
+ break;
1379
+ case 'image-lightbox':
1380
+ wp_enqueue_script( 'image-lightbox_script' );
1381
+ case 'lightgallery':
1382
+ wp_enqueue_style( 'lightgallery_stylesheet' );
1383
+ wp_enqueue_script( 'lightgallery_script' );
1384
+ break;
1385
+ }
1386
+ switch ( $settings->mobileLightbox ) {
1387
+ default:
1388
+ case 'magnific':
1389
+ wp_enqueue_style( 'magnific_stylesheet' );
1390
+ wp_enqueue_script( 'magnific_script' );
1391
+ break;
1392
+ case 'prettyphoto':
1393
+ wp_enqueue_style( 'prettyphoto_stylesheet' );
1394
+ wp_enqueue_script( 'prettyphoto_script' );
1395
+ break;
1396
+ case 'fancybox':
1397
+ wp_enqueue_style( 'fancybox_stylesheet' );
1398
+ wp_enqueue_script( 'fancybox_script' );
1399
+ break;
1400
+ case 'colorbox':
1401
+ wp_enqueue_style( 'colorbox_stylesheet' );
1402
+ wp_enqueue_script( 'colorbox_script' );
1403
+ break;
1404
+ case 'swipebox':
1405
+ wp_enqueue_style( 'swipebox_stylesheet' );
1406
+ wp_enqueue_script( 'swipebox_script' );
1407
+ break;
1408
+ case 'lightbox2':
1409
+ wp_enqueue_style( 'lightbox2_stylesheet' );
1410
+ wp_enqueue_script( 'lightbox2_script' );
1411
+ break;
1412
+ case 'image-lightbox':
1413
+ wp_enqueue_script( 'image-lightbox_script' );
1414
+ case 'lightgallery':
1415
+ wp_enqueue_style( 'lightgallery_stylesheet' );
1416
+ wp_enqueue_script( 'lightgallery_script' );
1417
+ break;
1418
+ }
1419
+ return $FinalTilesGallery->render();
1420
+ } else {
1421
+ return 'Gallery not found.';
1422
+ }
1423
+
1424
+ }
1425
+
1426
+ //Create Short Code
1427
+ public function gallery_shortcode_handler( $atts )
1428
+ {
1429
+ return $this->create_gallery( $atts );
1430
+ }
1431
+
1432
+ public static function slugify( $text )
1433
+ {
1434
+ $text = preg_replace( '~[^\\pL\\d]+~u', '-', $text );
1435
+ $text = trim( $text, '-' );
1436
+ $text = iconv( 'utf-8', 'us-ascii//TRANSLIT', $text );
1437
+ $text = strtolower( $text );
1438
+ $text = preg_replace( '~[^-\\w]+~', '', $text );
1439
+ if ( empty($text) ) {
1440
+ return 'n-a';
1441
+ }
1442
+ return $text;
1443
+ }
1444
+
1445
+ public static function getFieldType( $field )
1446
+ {
1447
+ return 'cta';
1448
+ }
1449
+
1450
+ public $fields = array() ;
1451
+ private function addField( $section, $field, $data )
1452
+ {
1453
+ $this->fields[$section]['fields'][$field] = $data;
1454
+ }
1455
+
1456
+ private function setupFields()
1457
+ {
1458
+ include 'admin/include/fields.php';
1459
+ }
1460
+
1461
+ }
1462
+ }
1463
+ if ( !class_exists( 'FinalTilesGalleryUtils' ) ) {
1464
+ class FinalTilesGalleryUtils
1465
+ {
1466
+ public static function shortcodeToFieldName( $string, $capitalizeFirstCharacter = false )
1467
+ {
1468
+ $str = str_replace( '-', '\\t', $string );
1469
+ $str = str_replace( '_', '', ucwords( $str ) );
1470
+ $str = str_replace( '\\t', '_', $str );
1471
+ if ( !$capitalizeFirstCharacter ) {
1472
+ $str = lcfirst( $str );
1473
+ }
1474
+ return $str;
1475
+ }
1476
+
1477
+ public static function fieldNameToShortcode( $string )
1478
+ {
1479
+ preg_match_all( '!([A-Z][A-Z0-9]*(?=$|[A-Z][a-z0-9])|[A-Za-z][a-z0-9]+)!', $string, $matches );
1480
+ $ret = $matches[0];
1481
+ foreach ( $ret as &$match ) {
1482
+ $match = ( $match == strtoupper( $match ) ? strtolower( $match ) : lcfirst( $match ) );
1483
+ }
1484
+ return implode( '_', $ret );
1485
+ }
1486
+
1487
+ }
1488
+ }
1489
+
1490
+ if ( class_exists( 'FinalTiles_Gallery' ) ) {
1491
+ global $ob_FinalTiles_Gallery ;
1492
+ $ob_FinalTiles_Gallery = new FinalTiles_Gallery();
1493
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/add-gallery.php CHANGED
@@ -1,16 +1,31 @@
1
- <?php if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die(_e('You are not allowed to call this page directly.','final-tiles-gallery')); } ?>
 
 
 
 
 
 
 
 
 
2
 
3
- <?php $ftg_subtitle = "New gallery" ?>
4
- <?php include "header.php" ?>
 
5
 
6
 
7
  <div class="bd">
8
 
9
  <div id="ftg-wizard">
10
- <h2><?php _e('Add new gallery wizard','final-tiles-gallery')?></h2>
 
 
 
11
 
12
  <form action="#" method="post">
13
- <?php wp_nonce_field('FinalTiles_gallery', 'FinalTiles_gallery'); ?>
 
 
14
  <input type="hidden" name="action" value="add_new_gallery" />
15
  <input type="hidden" name="enc_images" value="" />
16
  <input type="hidden" name="post_categories" value="" />
@@ -21,32 +36,75 @@
21
  <div class="row">
22
  <div class="input-field">
23
  <input name="ftg_name" id="name" type="text" class="validate" required="required">
24
- <label for="name"><?php _e('Name of the gallery','final-tiles-gallery')?></label>
 
 
 
25
  </div>
26
  </div>
27
  <div class="input-field">
28
  <textarea name="ftg_description" class="materialize-textarea" id="description"></textarea>
29
- <label for="description"><?php _e('Description of the gallery','final-tiles-gallery')?></label>
 
 
 
30
  </div>
31
  </fieldset>
32
  <fieldset data-step="2">
33
- <h5><?php _e('Choose the source of the images','final-tiles-gallery')?></h5>
 
 
 
34
  <p>
35
  <input class="with-gap" type="radio" checked="checked" name="ftg_source" id="source1" value="images" />
36
- <label for="source1"><?php _e('Media library','final-tiles-gallery')?></label>
 
 
 
37
  </p>
38
  <p>
39
- <input class="with-gap" disabled type="radio" name="ftg_source" value="posts" id="source2" />
40
- <label for="source2">Recent posts with featured image <?php _e(PRO_CALL) ?></label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  </p>
42
  <p>
43
- <input class="with-gap" disabled type="radio" name="ftg_source" value="woocommerce" id="source3" />
44
- <label for="source3">WooCommerce products <?php _e(PRO_CALL) ?></label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  </p>
46
  </fieldset>
47
  <fieldset data-step="3" data-branch="images">
48
  <div class="field">
49
- <h5><?php _e('WordPress field for captions:','final-tiles-gallery')?></h5>
 
 
 
50
  <select class="browser-default" name="ftg_wp_field_caption">
51
  <option value="none"> Don't use captions </option>
52
  <option value="title"> Title </option>
@@ -56,67 +114,125 @@
56
  </div>
57
 
58
  <div class="field">
59
- <h5><?php _e('WordPress field for titles:','final-tiles-gallery')?></h5>
 
 
 
60
  <select class="browser-default" name="ftg_wp_field_title">
61
  <option value="none"> Don't use titles </option>
62
  <option selected value="title"> Title </option>
63
  <option value="description"> Description </option>
64
  </select>
65
  </div>
66
- </fieldset>
67
- <fieldset data-step="3" data-branch="posts">
68
- <div class="field">
69
- <h5><?php _e('Categories:','final-tiles-gallery')?></h5>
70
- <?php foreach(get_categories() as $c) : ?>
71
- <p>
72
- <input type="checkbox" name="_post_categories" value="<?php _e($c->cat_ID) ?>" id="c<?php _e($c->cat_ID) ?>">
73
- <label for="c<?php _e($c->cat_ID) ?>"><?php _e($c->name) ?></label>
74
- </p>
75
- <?php endforeach ?>
76
- </div>
 
 
 
 
 
 
77
  <div class="field">
78
- <h5><?php _e('Tags:','final-tiles-gallery')?></h5>
79
- <?php $tags = get_tags(); ?>
80
- <?php foreach($tags as $c) : ?>
81
- <p>
82
- <input type="checkbox" name="_post_tags" value="<?php _e($c->term_id) ?>" id="t<?php _e($c->term_id) ?>">
83
- <label for="t<?php _e($c->term_id) ?>"><?php _e($c->name) ?></label>
84
- </p>
85
- <?php endforeach ?>
86
- <?php if(count($tags) == 0) : ?>
87
- <p><?php _e('No tags found','final-tiles-gallery')?></p>
88
- <?php endif ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  </div>
90
- </fieldset>
 
 
91
  <fieldset data-step="4" data-save="true">
92
  <div class="field">
93
- <h5><?php _e('Choose the layout','final-tiles-gallery')?></h5>
 
 
 
94
  <select class="browser-default" name="layout">
95
  <option value="final">Final Tiles Gallery (mixed image width)</option>
96
  <option value="columns">Masonry (columns, same image width)</option>
97
  </select>
98
  </div>
99
  <div class="field">
100
- <h5><?php _e('Choose a default image size','final-tiles-gallery')?></h5>
 
 
 
101
  <select class="browser-default" name="def_imgsize">
102
- <?php
103
- foreach ($this->list_thumbnail_sizes() as $size => $atts)
104
- {
105
- print '<option value="'. $size .'">' . $size . " (" . implode( 'x', $atts ) . ")</option>";
106
- }
107
- ?>
108
  </select>
109
- <label><?php _e('You can customize each image later','final-tiles-gallery')?></label>
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  </div>
111
  <div class="field select-images">
112
  <a class="waves-effect waves-light btn add-images">
113
- <i class="mdi-content-add-circle-outline left"></i> Add images</a>
114
- <br>
115
- <label>You can add images now or later.</label>
 
116
  <br>
117
- <label class="shortpixel">
118
- <img src="<?php echo plugins_url('',__file__) ?>/images/icon-shortpixel.png" alt="ShortPixel">
119
- <a target="_blank" href="https://shortpixel.com/wp/af/J4PFT4Z72393"><?php _e('We suggest you to use ShortPixel image optimization plugin for best SEO results.','modula-gallery')?></a></label>
 
120
  <div class="images list-group"></div>
121
  </div>
122
  </fieldset>
@@ -124,30 +240,68 @@
124
  <div class="progress loading">
125
  <div class="indeterminate"></div>
126
  </div>
127
- <a class="waves-effect waves-yellow btn-flat prev"><?php _e('Previous','final-tiles-gallery')?></a>
128
- <a class="waves-effect waves-green btn-flat next"><?php _e('Next','final-tiles-gallery')?></a>
 
 
 
 
 
 
129
  </footer>
130
  </form>
131
  <div id="success" class="modal">
132
  <div class="modal-content">
133
- <h4><?php _e('Success!','final-tiles-gallery')?></h4>
134
- <p><?php _e('Your gallery','final-tiles-gallery')?> "<span class="gallery-name"></span>" <?php _e('has been created. Copy the following shortcode:','final-tiles-gallery')?><br>
 
 
 
 
 
 
 
 
 
135
  <input type="text" readonly class="code"><br>
136
- <?php _e('and paste it inside a post or a page. Otherwise click','final-tiles-gallery')?> <a class='customize'><?php _e('here','final-tiles-gallery')?></a> <?php _e('to customize
137
- the gallery.','final-tiles-gallery')?>
 
 
 
 
 
 
 
 
138
  </p>
139
  </div>
140
  <div class="modal-'footer">
141
- <a href="?page=ftg-lite-gallery-admin" id="modal-close" class="waves-effect waves-green btn-flat modal-action"><?php _e('Close','final-tiles-gallery')?></a>
 
 
 
142
  </div>
143
  </div>
144
  <div id="error" class="modal">
145
  <div class="modal-content">
146
- <h4><?php _e('Error!','final-tiles-gallery')?></h4>
147
- <p><?php _e('For some reason it was not possible to save your gallery, please contact','final-tiles-gallery')?><a href="?page=ftg-lite-support"><?php _e('support','final-tiles-gallery')?></a>.</p>
 
 
 
 
 
 
 
 
 
148
  </div>
149
  <div class="modal-footer">
150
- <a href="?page=ftg-lite-gallery-admin" class="waves-effect waves-green btn-flat modal-action modal-close"><?php _e('Close','final-tiles-gallery')?></a>
 
 
 
151
  </div>
152
  </div>
153
  </div>
1
+ <?php
2
+
3
+ if ( preg_match( '#' . basename( __FILE__ ) . '#', $_SERVER['PHP_SELF'] ) ) {
4
+ die( _e( 'You are not allowed to call this page directly.', 'final-tiles-gallery' ) );
5
+ }
6
+ ?>
7
+
8
+ <?php
9
+ $ftg_subtitle = 'New gallery';
10
+ ?>
11
 
12
+ <?php
13
+ include 'header.php';
14
+ ?>
15
 
16
 
17
  <div class="bd">
18
 
19
  <div id="ftg-wizard">
20
+ <h2><?php
21
+ _e( 'Add new gallery wizard', 'final-tiles-gallery' );
22
+ ?>
23
+ </h2>
24
 
25
  <form action="#" method="post">
26
+ <?php
27
+ wp_nonce_field( 'FinalTiles_gallery', 'FinalTiles_gallery' );
28
+ ?>
29
  <input type="hidden" name="action" value="add_new_gallery" />
30
  <input type="hidden" name="enc_images" value="" />
31
  <input type="hidden" name="post_categories" value="" />
36
  <div class="row">
37
  <div class="input-field">
38
  <input name="ftg_name" id="name" type="text" class="validate" required="required">
39
+ <label for="name"><?php
40
+ _e( 'Name of the gallery', 'final-tiles-gallery' );
41
+ ?>
42
+ </label>
43
  </div>
44
  </div>
45
  <div class="input-field">
46
  <textarea name="ftg_description" class="materialize-textarea" id="description"></textarea>
47
+ <label for="description"><?php
48
+ _e( 'Description of the gallery', 'final-tiles-gallery' );
49
+ ?>
50
+ </label>
51
  </div>
52
  </fieldset>
53
  <fieldset data-step="2">
54
+ <h5><?php
55
+ _e( 'Choose the source of the images', 'final-tiles-gallery' );
56
+ ?>
57
+ </h5>
58
  <p>
59
  <input class="with-gap" type="radio" checked="checked" name="ftg_source" id="source1" value="images" />
60
+ <label for="source1"><?php
61
+ _e( 'Media library', 'final-tiles-gallery' );
62
+ ?>
63
+ </label>
64
  </p>
65
  <p>
66
+ <?php
67
+ ?>
68
+ <input disabled class="with-gap" type="radio" name="ftg_source" value="*" id="source2" />
69
+ <label for="source2"><?php
70
+ _e( 'Recent posts', 'final-tiles-gallery' );
71
+ ?>
72
+ - <a class="in-wizard-cta" href="<?php
73
+ echo ftg_fs()->get_upgrade_url() ;
74
+ ?>
75
+ "><i class="mdi mdi-bell-ring-outline"></i>
76
+ <?php
77
+ _e( 'Unlock this feature. Upgrade Now!', 'final-tiles-grid-gallery-lite' );
78
+ ?>
79
+ </a></label>
80
+ <?php
81
+ ?>
82
  </p>
83
  <p>
84
+ <?php
85
+ ?>
86
+ <input class="with-gap" disabled type="radio" name="ftg_source" value="*" id="source3" />
87
+ <label for="source3"><?php
88
+ _e( 'WooCommerce products', 'final-tiles-gallery' );
89
+ ?>
90
+ - <a class="in-wizard-cta" href="<?php
91
+ echo ftg_fs()->get_upgrade_url() ;
92
+ ?>
93
+ "><i class="mdi mdi-bell-ring-outline"></i>
94
+ <?php
95
+ _e( 'Unlock this feature. Upgrade Now!', 'final-tiles-grid-gallery-lite' );
96
+ ?>
97
+ </a></label>
98
+ <?php
99
+ ?>
100
  </p>
101
  </fieldset>
102
  <fieldset data-step="3" data-branch="images">
103
  <div class="field">
104
+ <h5><?php
105
+ _e( 'WordPress field for captions:', 'final-tiles-gallery' );
106
+ ?>
107
+ </h5>
108
  <select class="browser-default" name="ftg_wp_field_caption">
109
  <option value="none"> Don't use captions </option>
110
  <option value="title"> Title </option>
114
  </div>
115
 
116
  <div class="field">
117
+ <h5><?php
118
+ _e( 'WordPress field for titles:', 'final-tiles-gallery' );
119
+ ?>
120
+ </h5>
121
  <select class="browser-default" name="ftg_wp_field_title">
122
  <option value="none"> Don't use titles </option>
123
  <option selected value="title"> Title </option>
124
  <option value="description"> Description </option>
125
  </select>
126
  </div>
127
+ <!--
128
+ <div class="field">
129
+ <h5>Caption behavior:</h5>
130
+ <p>
131
+ <input class="with-gap" type="radio" name="ftg_captionBehavior" value="hidden" checked="checked" id="behavior1" />
132
+ <label for="behavior1">Hidden, show it on mouse hover</label>
133
+ </p>
134
+ <p>
135
+ <input class="with-gap" type="radio" name="ftg_captionBehavior" value="visible" id="behavior2" />
136
+ <label for="behavior2">Visible, hide it on mouse hover</label>
137
+ </p>
138
+ <p>
139
+ <input class="with-gap" type="radio" name="ftg_captionBehavior" value="always-visible" id="behavior3" />
140
+ <label for="behavior3" class="line">Always visible</label>
141
+ </p>
142
+ </div>
143
+ -->
144
  <div class="field">
145
+ <h5><?php
146
+ _e( 'Caption effect:', 'final-tiles-gallery' );
147
+ ?>
148
+ </h5>
149
+ <select class="browser-default" name="ftg_captionEffect">
150
+ <option value="none"><?php
151
+ _e( 'Fade' );
152
+ ?>
153
+ </option>
154
+ <?php
155
+ ?>
156
+ <option value="fixed" disabled><?php
157
+ _e( 'Fixed' );
158
+ ?>
159
+ (Upgrade to unlock)</option>
160
+ <option value="fixed-bg" disabled><?php
161
+ _e( 'Fixed with background' );
162
+ ?>
163
+ (Upgrade to unlock)</option>
164
+ <option value="fixed-then-hidden" disabled><?php
165
+ _e( 'Fixed, hidden on hover' );
166
+ ?>
167
+ (Upgrade to unlock)</option>
168
+ <option value="fixed-bottom" disabled><?php
169
+ _e( 'Fixed at bottom' );
170
+ ?>
171
+ (Upgrade to unlock)</option>
172
+ <option value="slide-from-top" disabled><?php
173
+ _e( 'Slide from top' );
174
+ ?>
175
+ (Upgrade to unlock)</option>
176
+ <option value="slide-from-bottom" disabled><?php
177
+ _e( 'Slide from bottom' );
178
+ ?>
179
+ (Upgrade to unlock)</option>
180
+ <?php
181
+ ?>
182
+ </select>
183
  </div>
184
+ </fieldset>
185
+ <?php
186
+ ?>
187
  <fieldset data-step="4" data-save="true">
188
  <div class="field">
189
+ <h5><?php
190
+ _e( 'Choose the layout', 'final-tiles-gallery' );
191
+ ?>
192
+ </h5>
193
  <select class="browser-default" name="layout">
194
  <option value="final">Final Tiles Gallery (mixed image width)</option>
195
  <option value="columns">Masonry (columns, same image width)</option>
196
  </select>
197
  </div>
198
  <div class="field">
199
+ <h5><?php
200
+ _e( 'Choose a default image size', 'final-tiles-gallery' );
201
+ ?>
202
+ </h5>
203
  <select class="browser-default" name="def_imgsize">
204
+ <?php
205
+ foreach ( $this->list_thumbnail_sizes() as $size => $atts ) {
206
+ print '<option value="' . $size . '">' . $size . ' (' . implode( 'x', $atts ) . ')</option>';
207
+ }
208
+ ?>
 
209
  </select>
210
+ <label><?php
211
+ _e( 'You can customize each image later', 'final-tiles-gallery' );
212
+ ?>
213
+ </label>
214
+ <br>
215
+ <label class="shortpixel">
216
+ <img src="<?php
217
+ echo plugins_url( '', __FILE__ ) ;
218
+ ?>
219
+ /images/icon-shortpixel.png" alt="ShortPixel">
220
+ <a target="_blank" href="https://shortpixel.com/wp/af/J4PFT4Z72393"><?php
221
+ _e( 'We suggest you to use ShortPixel image optimization plugin for best SEO results.', 'modula-gallery' );
222
+ ?>
223
+ </a></label>
224
  </div>
225
  <div class="field select-images">
226
  <a class="waves-effect waves-light btn add-images">
227
+ <i class="fa fa-plus left"></i> <?php
228
+ _e( 'Add images', 'final-tiles-gallery' );
229
+ ?>
230
+ </a>
231
  <br>
232
+ <label><?php
233
+ _e( 'You can add images now or later.', 'final-tiles-gallery' );
234
+ ?>
235
+ </label>
236
  <div class="images list-group"></div>
237
  </div>
238
  </fieldset>
240
  <div class="progress loading">
241
  <div class="indeterminate"></div>
242
  </div>
243
+ <a class="waves-effect waves-yellow btn-flat prev"><?php
244
+ _e( 'Previous', 'final-tiles-gallery' );
245
+ ?>
246
+ </a>
247
+ <a class="waves-effect waves-green btn-flat next"><?php
248
+ _e( 'Next', 'final-tiles-gallery' );
249
+ ?>
250
+ </a>
251
  </footer>
252
  </form>
253
  <div id="success" class="modal">
254
  <div class="modal-content">
255
+ <h4><?php
256
+ _e( 'Success!', 'final-tiles-gallery' );
257
+ ?>
258
+ </h4>
259
+ <p><?php
260
+ _e( 'Your gallery', 'final-tiles-gallery' );
261
+ ?>
262
+ "<span class="gallery-name"></span>" <?php
263
+ _e( 'has been created. Copy the following shortcode:', 'final-tiles-gallery' );
264
+ ?>
265
+ <br>
266
  <input type="text" readonly class="code"><br>
267
+ <?php
268
+ _e( 'and paste it inside a post or a page. Otherwise click', 'final-tiles-gallery' );
269
+ ?>
270
+ <a class='customize'><?php
271
+ _e( 'here', 'final-tiles-gallery' );
272
+ ?>
273
+ </a> <?php
274
+ _e( 'to customize
275
+ the gallery.', 'final-tiles-gallery' );
276
+ ?>
277
  </p>
278
  </div>
279
  <div class="modal-'footer">
280
+ <a href="?page=ftg-lite-gallery-admin" id="modal-close" class="waves-effect waves-green btn-flat modal-action"><?php
281
+ _e( 'Close', 'final-tiles-gallery' );
282
+ ?>
283
+ </a>
284
  </div>
285
  </div>
286
  <div id="error" class="modal">
287
  <div class="modal-content">
288
+ <h4><?php
289
+ _e( 'Error!', 'final-tiles-gallery' );
290
+ ?>
291
+ </h4>
292
+ <p><?php
293
+ _e( 'For some reason it was not possible to save your gallery, please contact', 'final-tiles-gallery' );
294
+ ?>
295
+ <a href="?page=ftg-support"><?php
296
+ _e( 'support', 'final-tiles-gallery' );
297
+ ?>
298
+ </a>.</p>
299
  </div>
300
  <div class="modal-footer">
301
+ <a href="?page=ftg-lite-gallery-admin" class="waves-effect waves-green btn-flat modal-action modal-close"><?php
302
+ _e( 'Close', 'final-tiles-gallery' );
303
+ ?>
304
+ </a>
305
  </div>
306
  </div>
307
  </div>
admin/adv.php DELETED
File without changes
admin/css/style.css CHANGED
@@ -1,17 +1,28 @@
1
  @import "materialize.css";
2
- .fs-submenu-item.final-tiles-grid-gallery-lite.pricing.upgrade-mode {
3
- display: none;
4
- }
5
  #wpcontent {
6
  padding-left: 0;
7
  }
 
 
 
 
8
  #media-attachment-media_category-filters,
9
  #media-attachment-date-filters {
10
  display: inline;
11
  }
12
- .list-view-control .selected {
 
 
 
 
13
  border-bottom: 2px solid;
14
  }
 
 
 
 
 
 
15
  #gallery-list {
16
  margin-top: 2rem;
17
  }
@@ -33,27 +44,6 @@
33
  #gallery-list .card:hover .card-content {
34
  background: rgba(0, 0, 0, 0);
35
  }
36
- #adv {
37
- margin:20px 0;
38
- }
39
- #adv img {
40
- width: 100%;
41
- }
42
- .ftg-everlightbox-settings {
43
- display: none;
44
- }
45
- .pro-cell {
46
- background: #039BE5;
47
- font-size: 18px;
48
- border-top-left-radius: 6px;
49
- border-top-right-radius: 6px;
50
- padding: 10px;
51
- transition: all .3s;
52
- }
53
- .pro-cell a {
54
- transition: all .3s;
55
- color: #fff;
56
- }
57
  .bulk .options {
58
  margin-bottom: 20px;
59
  }
@@ -84,22 +74,67 @@
84
  }
85
  #top {
86
  padding: 1rem 0 3rem 40px;
87
- background-image: url('../images/colors.jpg');
88
- background-repeat: repeat-x;
89
- background-position: left bottom;
90
  font-family: Roboto, 'sans-serif';
91
  }
92
  #top h1 {
93
- color: #fff;
94
  font-size: 3.4rem;
95
- margin: 16px 0 25px 0;
96
  font-weight: 300;
 
97
  }
98
  #top h1 small {
99
  font-size: 1rem;
100
  }
101
  #top h4 {
102
- margin: 17px 0 13px 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  }
104
  #support-page {
105
  background: #fff;
@@ -237,6 +272,10 @@
237
  .modal .modal-footer {
238
  background: #fff;
239
  }
 
 
 
 
240
  #gallery-list .card p {
241
  height: 40px;
242
  overflow: hidden;
@@ -298,8 +337,6 @@
298
  #edit-gallery .jump-head select {
299
  height: 2rem;
300
  display: inline;
301
- }
302
- #edit-gallery .jump {
303
  width: auto;
304
  }
305
  .bullet-menu {
@@ -314,6 +351,7 @@
314
  }
315
  .collapsible li {
316
  margin-bottom: 0;
 
317
  }
318
  .collapsible li .alternate {
319
  background: transparent;
@@ -323,6 +361,12 @@
323
  height: 5rem;
324
  line-height: 5rem;
325
  }
 
 
 
 
 
 
326
  .collapsible li .collapsible-header i {
327
  line-height: 5rem;
328
  }
@@ -342,6 +386,9 @@
342
  border-radius: 0;
343
  -webkit-border-radius: 0;
344
  }
 
 
 
345
  .collapsible li textarea {
346
  height: 100px;
347
  }
@@ -363,7 +410,7 @@
363
  float: none;
364
  margin: 0;
365
  }
366
- .collapsible li .toggle div.help {
367
  display: none;
368
  }
369
  .collapsible li .toggle [type="checkbox"]:not(:checked) + label:before {
@@ -375,9 +422,40 @@
375
  border-top-right-radius: 0;
376
  border-bottom-left-radius: 6px;
377
  border-bottom-right-radius: 6px;
378
- padding: 10px;
379
  color: #666;
380
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
381
  .collapsible li div.help strong {
382
  font-weight: 700;
383
  }
@@ -659,11 +737,9 @@
659
  .cf {
660
  *zoom: 1;
661
  }
662
-
663
  #fs_connect {
664
  margin: 60px auto !important;
665
  }
666
  #fs_connect .fs-visual .dashicons-wordpress {
667
  height: 76px !important;
668
  width: 76px !important;
669
- }
1
  @import "materialize.css";
 
 
 
2
  #wpcontent {
3
  padding-left: 0;
4
  }
5
+ .shortpixel img {
6
+ position: relative;
7
+ top: 6px;
8
+ }
9
  #media-attachment-media_category-filters,
10
  #media-attachment-date-filters {
11
  display: inline;
12
  }
13
+ .collapsible .list-view-control li {
14
+ display: inline-block;
15
+ clear: none;
16
+ }
17
+ .collapsible .list-view-control .selected {
18
  border-bottom: 2px solid;
19
  }
20
+ [type="radio"]:not(:checked) + label, [type="radio"]:checked + label {
21
+ color:#333;
22
+ }
23
+ [type="radio"]:disabled + label {
24
+ color:#666;
25
+ }
26
  #gallery-list {
27
  margin-top: 2rem;
28
  }
44
  #gallery-list .card:hover .card-content {
45
  background: rgba(0, 0, 0, 0);
46
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  .bulk .options {
48
  margin-bottom: 20px;
49
  }
74
  }
75
  #top {
76
  padding: 1rem 0 3rem 40px;
 
 
 
77
  font-family: Roboto, 'sans-serif';
78
  }
79
  #top h1 {
 
80
  font-size: 3.4rem;
81
+ margin: 16px 0 0 0;
82
  font-weight: 300;
83
+ color: #333;
84
  }
85
  #top h1 small {
86
  font-size: 1rem;
87
  }
88
  #top h4 {
89
+ margin: 0 0 13px 0;
90
+ color: #666;
91
+ font-size: 20px;
92
+ font-weight: 100;
93
+ }
94
+ .upgrade-call {
95
+ display: inline-block;
96
+ position: absolute;
97
+ background: yellow;
98
+ top:20px;
99
+ right: 20px;
100
+ border-radius: 4px;
101
+ color: #111;
102
+ text-decoration: none;
103
+ text-transform: uppercase;
104
+ padding: 4px 6px;
105
+ }
106
+ .settings-header {
107
+ padding:16px;
108
+ background: #fff;
109
+ -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
110
+ -moz-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
111
+ box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
112
+ margin-bottom: 20px;
113
+ }
114
+ .settings-header .shortcode {
115
+ margin-top: 20px;
116
+ margin-bottom: 0;
117
+ }
118
+ .settings-header .shortcode input {
119
+ height: 30px;
120
+ }
121
+ .import-export a {
122
+ display: inline-block;
123
+ margin-right: 20px;
124
+ font-size:16px;
125
+ color: #333;
126
+ }
127
+ .import-export a:hover {
128
+ color: #666;
129
+ text-decoration: underline;
130
+ }
131
+ #shortcode-shortcut {
132
+ font-family: Courier, monospace;
133
+ display: inline-block;
134
+ width: 300px;
135
+ background: #fafafa;
136
+ border:1px solid #999;
137
+ padding:0 20px;
138
  }
139
  #support-page {
140
  background: #fff;
272
  .modal .modal-footer {
273
  background: #fff;
274
  }
275
+ .in-table-cta {
276
+ font-weight: bold;
277
+ font-size: 18px;
278
+ }
279
  #gallery-list .card p {
280
  height: 40px;
281
  overflow: hidden;
337
  #edit-gallery .jump-head select {
338
  height: 2rem;
339
  display: inline;
 
 
340
  width: auto;
341
  }
342
  .bullet-menu {
351
  }
352
  .collapsible li {
353
  margin-bottom: 0;
354
+ clear: both;
355
  }
356
  .collapsible li .alternate {
357
  background: transparent;
361
  height: 5rem;
362
  line-height: 5rem;
363
  }
364
+ .collapsible-header {
365
+ padding: 0;
366
+ }
367
+ .collapsible li .collapsible-header .ftg-section-icon {
368
+ width:5rem;
369
+ }
370
  .collapsible li .collapsible-header i {
371
  line-height: 5rem;
372
  }
386
  border-radius: 0;
387
  -webkit-border-radius: 0;
388
  }
389
+ .collapsible-body {
390
+ clear: both;
391
+ }
392
  .collapsible li textarea {
393
  height: 100px;
394
  }
410
  float: none;
411
  margin: 0;
412
  }
413
+ .collapsible li .toggle div.help p {
414
  display: none;
415
  }
416
  .collapsible li .toggle [type="checkbox"]:not(:checked) + label:before {
422
  border-top-right-radius: 0;
423
  border-bottom-left-radius: 6px;
424
  border-bottom-right-radius: 6px;
425
+ padding: 10px 10px 0 10px;
426
  color: #666;
427
  }
428
+ .collapsible li div.help .ftg-code {
429
+ display: block;
430
+ padding-top: 10px;
431
+ height: 40px;
432
+ }
433
+ .collapsible li div.help .ftg-code a {
434
+ color: #999;
435
+ font-size: 18px;
436
+ }
437
+ .collapsible li div.help .ftg-code a:focus {
438
+ box-shadow: none;
439
+ }
440
+ .collapsible li div.help .ftg-code span {
441
+ opacity: 0;
442
+ }
443
+ .collapsible li div.help .ftg-code span.visible {
444
+ opacity: 1;
445
+ }
446
+ .collapsible li div.help .ftg-code input[type=text] {
447
+ font-size:12px;
448
+ font-family: courier, monospace;
449
+ width:200px;
450
+ display: inline-block;
451
+ padding: 5px;
452
+ height: auto;
453
+ border:1px solid #ccc;
454
+ }
455
+ .collapsible li div.help p {
456
+ padding:0 0 10px 0;
457
+ border-bottom:1px dotted #ccc;
458
+ }
459
  .collapsible li div.help strong {
460
  font-weight: 700;
461
  }
737
  .cf {
738
  *zoom: 1;
739
  }
 
740
  #fs_connect {
741
  margin: 60px auto !important;
742
  }
743
  #fs_connect .fs-visual .dashicons-wordpress {
744
  height: 76px !important;
745
  width: 76px !important;
 
admin/edit-gallery.php CHANGED
@@ -2,6 +2,7 @@
2
  if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); }
3
 
4
  $galleryResults = $this->FinalTilesdb->getGalleries();
 
5
  $gallery = null;
6
 
7
  $gid = intval($_GET['id']);
@@ -21,23 +22,23 @@
21
  <?php include "header.php" ?>
22
 
23
  <div class='bd'>
24
- <div class="row ">
25
- <div class="col s12">
26
- <div class="card-panel light-green lighten-4">
27
- <p><input readonly="" style="font-family: Courier, monospace;" type="text" value="[FinalTilesGallery id='<?php print $gid ?>']"></p>
28
-
29
- <ul>
30
- <li>
31
- <a target="_blank" href="http://issuu.com/greentreelabs/docs/finaltilesgridgallery-documentation?e=17859916/13243836"><?php _e('Documentation','final-tiles-gallery')?></a> <a target="_blank" href="http://final-tiles-gallery.com/FinalTilesGridGallery-documentation.pdf"><?php _e('(download)','final-tiles-gallery')?></a>
32
- </li>
33
- <li>
34
- <a target="_blank" href="https://www.youtube.com/watch?v=RNT4JGjtyrs"><?php _e('Video tutorial: Tutorial: better grids with Final Tiles Grid Gallery for WordPress','final-tiles-gallery')?></a>
35
- </li>
36
- </ul>
37
- </div>
38
- </div>
 
39
  </div>
40
- <p class="import-export"> <a id='import-settings' href="#"> Import </a> / <a id='export-settings' href="#"> Export </a> </p>
41
  <div id="settings">
42
  <form name="gallery_form" id="edit-gallery" action="<?php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI']); ?>" method="post">
43
  <?php wp_nonce_field('FinalTiles_gallery', 'FinalTiles_gallery'); ?>
2
  if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); }
3
 
4
  $galleryResults = $this->FinalTilesdb->getGalleries();
5
+ $default_options = get_option('FinalTiles_gallery_options');
6
  $gallery = null;
7
 
8
  $gid = intval($_GET['id']);
22
  <?php include "header.php" ?>
23
 
24
  <div class='bd'>
25
+ <div class="row ">
26
+ <div class="settings-header">
27
+ <p class="import-export">
28
+ <a id='import-settings' href="#"><i class="mdi mdi-import"></i> Import settings</a>
29
+ <a id='export-settings' href="#"><i class="mdi mdi-export"></i> Export settings</a>
30
+ <a target="_blank" href="http://issuu.com/greentreelabs/docs/finaltilesgridgallery-documentation?e=17859916/13243836">
31
+ <i class="mdi mdi-book-open-variant"></i>
32
+ <?php _e('Documentation','final-tiles-gallery')?>
33
+ </a>
34
+ <a target="_blank" href="https://www.youtube.com/watch?v=RNT4JGjtyrs">
35
+ <i class="mdi mdi-play-circle-outline"></i>
36
+ <?php _e('Tutorial','final-tiles-gallery')?></a>
37
+ </p>
38
+ <p class="shortcode">
39
+ Shortcode: <input id="shortcode-shortcut" readonly="" type="text" value="[FinalTilesGallery id='<?php print $gid ?>']">
40
+ </p>
41
  </div>
 
42
  <div id="settings">
43
  <form name="gallery_form" id="edit-gallery" action="<?php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI']); ?>" method="post">
44
  <?php wp_nonce_field('FinalTiles_gallery', 'FinalTiles_gallery'); ?>
admin/galleries.php DELETED
@@ -1,45 +0,0 @@
1
- <?php $ftg_subtitle = "Other galleries by GreenTreeLabs"; ?>
2
- <?php include "header.php" ?>
3
-
4
- <div class="row" id="other-galleries">
5
- <div class="col s12 m6 l6">
6
- <div class="card">
7
- <div class="card-image">
8
- <a href="http://modula.greentreelabs.net/?utm_source=ftglite&utm_medium=banner&utm_campaign=Final%20Tiles%20Gallery%20Lite" target="_blank">
9
- <img src="<?php echo plugins_url('',__file__) ?>/images/modula.jpg" alt="Modula Grid Gallery">
10
- </a>
11
- </div>
12
- <div class="card-content">
13
- <div class="text">
14
- <h4>Modula Grid Gallery</h4>
15
- <p>Modula is a New Multipurpose WordPress Plugin To Make Attention-Grabbing Photo Grid Galleries.</p>
16
- </div>
17
- <div class="cta">
18
- <a href="http://modula.greentreelabs.net/?utm_source=ftglite&utm_medium=banner&utm_campaign=Final%20Tiles%20Gallery%20Lite" target="_blank" class="waves-effect waves-light btn deep-orange darken-3">
19
- Find out more
20
- </a>
21
- </div>
22
- </div>
23
- </div>
24
- </div>
25
- <div class="col s12 m6 l6">
26
- <div class="card">
27
- <div class="card-image">
28
- <a href="http://circles-gallery.com/wordpress" target="_blank">
29
- <img src="<?php echo plugins_url('',__file__) ?>/images/circles.jpg" alt="Circles Gallery">
30
- </a>
31
- </div>
32
- <div class="card-content">
33
- <div class="text">
34
- <h4>Circles Gallery</h4>
35
- <p>Three plugins in one: not only an original gallery plugin for WordPress but also a responsive multi-column layout for texts and a “Team members” plugin.</p>
36
- </div>
37
- <div class="cta">
38
- <a href="http://circles-gallery.com/wordpress" target="_blank" class="waves-effect waves-light btn deep-orange darken-3">
39
- Find out more
40
- </a>
41
- </div>
42
- </div>
43
- </div>
44
- </div>
45
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/header.php CHANGED
@@ -1,4 +1,18 @@
1
- <header id="top" class="cyan darken-1">
2
- <h1 class="header center-on-small-only">Final Tiles Grid Gallery Lite <small><?php print FTGLITEVERSION ?></small></h1>
3
- <h4 class="light cyan-text text-lighten-4 center-on-small-only"><?php print $ftg_subtitle ?></h4>
4
- </header>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $colors = array('indigo', 'blue', 'cyan', 'teal' ,'green', 'lime', 'amber', 'deep-orange');
4
+
5
+ ?>
6
+ <header id="top">
7
+ <h1 class="header center-on-small-only">Final Tiles Grid Gallery <small><?php print FTGVERSION ?></small></h1>
8
+ <h4 class="center-on-small-only"><?php print $ftg_subtitle ?></h4>
9
+ </header>
10
+ <?php
11
+ if ( ftg_fs()->is_not_paying() ) {
12
+ echo '<a class="upgrade-call" href="' . ftg_fs()->get_upgrade_url() . '">' .
13
+ __('Upgrade Now!', 'final-tiles-grid-gallery-lite') .
14
+ '</a>';
15
+ echo '
16
+ </section>';
17
+ }
18
+ ?>
admin/images/circles.jpg DELETED
Binary file
admin/images/modula-strip.jpg DELETED
Binary file
admin/images/modula.jpg DELETED
Binary file
admin/include/edit-gallery.php CHANGED
@@ -1,231 +1,601 @@
1
- <?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
- function ftg_p($gallery, $field, $default = NULL)
4
- {
5
- global $ftg_options;
6
-
7
- if($ftg_options) {
8
- if(array_key_exists($field, $ftg_options))
9
- print stripslashes($ftg_options[$field]);
10
- return;
11
- }
12
-
13
- if($gallery == NULL || $gallery->$field === NULL)
14
- {
15
- if($default === NULL)
16
- {
17
- print "";
18
- }
19
- else
20
- {
21
- print stripslashes($default);
22
- }
23
- }
24
- else
25
- {
26
- print stripslashes($gallery->$field);
27
- }
28
- }
29
- function ftg_sel($gallery, $field, $value, $type="selected")
30
- {
31
- global $ftg_options;
32
-
33
- if($ftg_options && $ftg_options[$field] == $value) {
34
- print $type;
35
- return;
36
- }
37
-
38
- if($gallery == NULL)
39
- {
40
- print "";
41
- }
42
- else
43
- {
44
- if($gallery->$field == $value)
45
- print $type;
46
- }
47
- }
48
-
49
-
50
- global $ftg_parent_page;
51
- global $ftg_fields;
52
-
53
- $filters = explode('|', $gallery->filters);
54
-
55
- //print_r($gallery);
56
-
57
- $idx = 0;
58
- $colors = array('indigo', 'blue', 'cyan', 'teal' ,'green', 'lime', 'amber', 'deep-orange');
59
- ?>
60
-
61
- <?php
62
-
63
- /*foreach($ftg_fields as $section => $s)
64
- {
65
- foreach($s["fields"] as $f => $data)
66
- {
67
- _e("<strong>" . $data["name"] . "</strong><br>");
68
- _e("<p>".$data["description"]."</p>");
69
- }
70
- }*/
71
-
72
- function ftgSortByName($a, $b)
73
- {
74
- return $a["name"] > $b["name"];
75
- }
76
-
77
- ?>
78
 
79
  <ul class="collapsible" data-collapsible="accordion">
80
- <?php foreach($ftg_fields as $section => $s) : ?>
81
- <li id="<?php _e(FinalTiles_GalleryLite::slugify($section)) ?>">
82
- <div class="collapsible-header white-text <?php print $colors[$idx] ?> darken-2">
83
- <i class="mdi <?php _e($s["icon"]) ?>"></i> <?php _e($section) ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  </div>
85
- <div class="collapsible-body <?php print $colors[$idx] ?> lighten-5 tab form-fields">
 
 
 
86
  <div class="jump-head">
87
- <?php
88
- $jumpFields = array();
89
- foreach($s["fields"] as $f => $data)
90
- {
91
- $jumpFields[$f] = $data;
92
- $jumpFields[$f]['_code'] = $f;
93
- }
94
- unset($f);
95
- unset($data);
96
-
97
- usort($jumpFields, "ftgSortByName");
98
-
99
- ?>
100
  <select class="browser-default jump">
101
- <option><?php _e('Jump to setting','final-tiles-gallery')?></option>
102
- <?php foreach($jumpFields as $f => $data) : ?>
103
- <?php if(is_array($data["excludeFrom"]) && ! in_array($ftg_parent_page, $data["excludeFrom"])) : ?>
104
- <option value="<?php _e($data['_code']) ?>">
105
- <?php _e($data["name"]); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
106
  </option>
107
- <?php endif ?>
108
- <?php endforeach ?>
 
 
 
 
 
109
  </select>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  </div>
111
  <table>
112
  <tbody>
113
- <?php foreach($s["fields"] as $f => $data) : ?>
114
- <?php if(is_array($data["excludeFrom"]) && ! in_array($ftg_parent_page, $data["excludeFrom"])) : ?>
 
 
 
 
 
115
 
116
- <tr class="row-<?php print $f ?> <?php print $data["type"] ?>">
 
 
 
 
 
 
117
  <th scope="row">
118
- <label><?php _e($data["name"]); ?>
119
- <?php if($data["mu"]) : ?>
120
- (<?php _e($data["mu"]) ?>)
121
- <?php endif ?>
 
 
 
 
 
 
 
 
 
 
 
122
  </label>
123
  </th>
124
  <td>
125
- <div class="field">
126
- <?php if($data["type"] == "text") : ?>
 
 
 
 
 
 
127
  <div class="text">
128
- <input type="text" size="30" name="ftg_<?php print $f ?>" value="<?php ftg_p($gallery, $f, $data["default"]) ?>" />
 
 
 
 
 
 
129
  </div>
130
- <?php elseif($data["type"] == "select") : ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
  <div class="text">
132
- <select class="browser-default" name="ftg_<?php print $f ?>">
133
- <?php foreach(array_keys($data["values"]) as $optgroup) : ?>
134
- <optgroup label="<?php print $optgroup ?>">
135
- <?php foreach($data["values"][$optgroup] as $option) : ?>
 
 
 
 
 
 
 
 
 
 
136
 
137
- <?php $v = explode("|", $option); ?>
 
 
138
 
139
- <option <?php ftg_sel($gallery, $f, $v[0]) ?> value="<?php print $v[0] ?>"><?php print $v[1] ?></option>
140
- <?php endforeach ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
141
  </optgroup>
142
- <?php endforeach ?>
 
 
143
  </select>
144
- <?php if($f == "lightbox") : ?>
 
 
 
145
  <div class="col s12 ftg-everlightbox-settings">
146
- <?php if(class_exists('Everlightbox_Public')) : ?>
 
 
 
147
  <div class="card-panel light-green lighten-4">
148
  <a href="?page=everlightbox_options" target="_blank">EverlightBox settings</a>
149
  </div>
150
- <?php else : ?>
 
 
151
  <div class="card-panel yellow lighten-3">
152
  EverlightBox not installed. <a target="_blank" href="plugin-install.php?s=everlightbox&tab=search&type=term">Install</a>
153
  </div>
154
- <?php endif ?>
 
 
 
 
155
  </div>
156
- <?php endif ?>
 
 
 
157
  </div>
158
- <?php elseif($data["type"] == "toggle") : ?>
 
 
159
  <div class="text">
160
- <input type="checkbox" id="ftg_<?php print $f ?>" name="ftg_<?php print $f ?>" value="<?php ftg_p($gallery, $f, $data["default"]) ?>" <?php ftg_sel($gallery, $f, "T", "checked") ?> />
161
- <label for="ftg_<?php print $f ?>"><?php _e($data["description"]); ?></label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
  </div>
163
 
164
- <?php elseif($data["type"] == "slider") : ?>
 
 
165
 
166
  <div class="text">
167
  <p class="range-field">
168
- <input name="ftg_<?php print $f ?>" value="<?php ftg_p($gallery, $f, $data["default"]) ?>" type="range" min="<?php print $data["min"] ?>" max="<?php print $data["max"] ?>" />
 
 
 
 
 
 
 
 
 
 
 
 
169
  </p>
170
  </div>
171
 
172
- <?php elseif($data["type"] == "number") : ?>
 
 
173
  <div class="text">
174
- <input type="text" name="ftg_<?php print $f ?>" class="integer-only" value="<?php ftg_p($gallery, $f, $data["default"]) ?>" >
 
 
 
 
 
 
175
  </div>
176
 
177
- <?php elseif($data["type"] == "color") : ?>
 
 
178
  <div class="text">
179
- <input type="text" size="6" data-default-color="<?php print $data["default"] ?>" name="ftg_<?php print $f ?>" value="<?php ftg_p($gallery, $f, $data["default"]) ?>" class='pickColor' /> </div>
180
-
181
- <?php elseif($data["type"] == "PRO_FEATURE") : ?>
 
 
 
 
 
 
 
182
 
183
- <div class="pro-cell">
184
- <a href="http://1.envato.market/c/288541/275988/4415?u=https%3A%2F%2Fcodecanyon.net%2Fitem%2Ffinal-tiles-wordpress-gallery%2F5189351" target="_blank">
185
- <i class="fa fa-graduation-cap"></i>
186
- Unlock this feature with a PRO license</a>
187
- </div>
188
- <?php elseif($data["type"] == "textarea") : ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
189
  <div class="text">
190
- <textarea name="ftg_<?php print $f ?>"><?php ftg_p($gallery, $f) ?></textarea>
191
- </div>
192
- <?php endif ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
193
  <div class="help">
194
- <?php _e($data["description"]); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
195
  </div>
196
 
197
  </div>
198
  </td>
199
  </tr>
200
- <?php endif ?>
201
- <?php endforeach ?>
 
 
 
 
 
 
202
  </tbody>
203
  </table>
204
  </div>
205
  </li>
206
- <?php $idx++; ?>
207
- <?php endforeach ?>
 
 
 
 
208
  <li id="images">
209
- <div class="collapsible-header white-text <?php print $colors[$idx] ?> darken-2">
210
- <i class="mdi mdi-image-filter"></i> <?php _e('Images','final-tiles-gallery')?>
 
 
 
 
 
211
  </div>
212
- <div class="collapsible-body <?php print $colors[$idx] ?> lighten-5">
 
 
 
213
  <div id="images" class="ftg-section form-fields">
214
  <div class="actions">
215
- <label><?php _e('Source:','final-tiles-gallery')?></label>
216
- <input class="with-gap" checked type="radio" name="ftg_source" value="images" id="source1" />
217
- <label for="source1"><?php _e('Images','final-tiles-gallery')?></label>
218
- <input class="with-gap" disabled type="radio" name="ftg_source" value="posts" id="source2" />
219
- <label for="source2"><?php _e('Recent posts with featured image','final-tiles-gallery')?> <?php _e(PRO_CALL) ?></label>
220
- <input class="with-gap" disabled type="radio" name="ftg_source" value="woocommerce" id="source3" />
221
- <label for="source3"><?php _e('WooCommerce products','final-tiles-gallery')?> <?php _e(PRO_CALL) ?></label>
222
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
223
  <div class="actions">
224
  <div class="row">
225
  <label>Loading method</label>
226
  <select name="ftg_loadMethod" class="browser-default">
227
- <option <?php ftg_sel($gallery, "loadMethod", "sequential") ?> value="sequential">Sequential</option>
228
- <option <?php ftg_sel($gallery, "loadMethod", "lazy") ?> value="lazy">Lazy</option>
 
 
 
 
 
 
229
  </select>
230
  </div>
231
  </div>
@@ -233,74 +603,470 @@ $colors = array('indigo', 'blue', 'cyan', 'teal' ,'green', 'lime', 'amber', 'dee
233
  <div class="row">
234
  <label>Ajax loading</label>
235
  <select name="ftg_ajaxLoading" class="browser-default js-ajax-loading-control">
236
- <option <?php ftg_sel($gallery, "ajaxLoading", "F") ?> value="F">Complete markup on page</option>
237
- <option <?php ftg_sel($gallery, "ajaxLoading", "T") ?> value="T">Enable ajax loading (still in beta!)</option>
 
 
 
 
 
 
238
  </select>
239
  </div>
240
  <div class="row js-ajax-loading" style="display:none;">
241
  <label>Number of images to load via ajax</label>
242
- <input class="browser-default" type="text" value="<?php echo $gallery->tilesPerPage ?>" name="ftg_tilesPerPage">
 
 
 
243
  </div>
244
  </div>
245
  <div class="actions source-images source-panel">
246
  <div class="row">
247
  <div class="tips">
248
  <span class="shortpixel">
249
- <img src="<?php echo plugins_url('',__file__) ?>/../images/icon-shortpixel.png" alt="ShortPixel">
250
- <a target="_blank" href="https://shortpixel.com/wp/af/J4PFT4Z72393"><?php _e('We suggest you to use ShortPixel image optimization plugin for best SEO results.','modula-gallery')?></a></span>
 
 
 
 
 
 
251
  </div>
252
- <label><?php _e('Image size','final-tiles-gallery')?></label>
 
 
 
253
 
254
  <select class="current-image-size browser-default">
255
- <?php
256
- foreach ($this->list_thumbnail_sizes() as $size => $atts)
257
- {
258
- print '<option value="'. $size .'">' . $size . " (" . implode( 'x', $atts ) . ")</option>";
259
- }
260
- ?>
261
  </select>
262
- <p class="tips"><?php _e('Want to add more images sizes?','final-tiles-gallery')?> <a href="http://www.wpbeginner.com/wp-tutorials/how-to-create-additional-image-sizes-in-wordpress/" target="_blank"><?php _e('Read a simple tutorial.','final-tiles-gallery')?></a></p>
 
 
 
 
 
 
263
  <div class="tips">
264
- <strong><?php _e('About choosing a proper image size:','final-tiles-gallery')?></strong> <?php _e("Final Tiles Gallery doesn't scale down the images when there's enough space, it gives you the freedom to choose your favourite size for each image. So you should use images that are smaller than the container, choose the",'final-tiles-gallery')?> <strong><?php _e('thumbnail','final-tiles-gallery')?></strong> <?php _e('or','final-tiles-gallery')?> <strong><?php _e('medium','final-tiles-gallery')?></strong> <?php _e('size, for example.','final-tiles-gallery')?><br>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
265
  <br>
266
- <?php _e('How to get a better grid? Watch the','final-tiles-gallery')?> <a href="https://www.youtube.com/watch?v=RNT4JGjtyrs" target="_blank"><?php _e('video tutorial','final-tiles-gallery')?></a>.
 
 
 
 
 
 
267
  </div>
268
  </div>
269
  <div class="row">
270
- <a href="#" class="open-media-panel waves-effect waves-light btn action"><i class="mdi mdi-image-area"></i> <?php _e('Add images','final-tiles-gallery')?></a>
271
- <a onclick="alert('Video are available with PRO version')" class="waves-effect waves-light btn action grey lighten-1"><i class="mdi mdi-video"></i> Add video</a>
 
 
 
 
 
 
272
  </div>
273
  <div class="row">
274
- <p class="tips"><?php _e('For multiple selections: Click+CTRL.
275
- Drag images to change order.','final-tiles-gallery')?></p>
 
 
 
276
  </div>
277
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
278
  </div>
279
  <div class="actions">
280
  <div class="bulk row">
281
- <label><?php _e('Bulk Actions','final-tiles-gallery')?></label>
 
 
 
282
  <div class="options">
283
  <span class="indigo lighten-4">
284
- <a class="btn indigo darken-4 waves-effect waves-light" href="#" data-action="select"><?php _e('Select all','final-tiles-gallery')?></a>
285
- <a class="btn indigo darken-4 waves-effect waves-light" href="#" data-action="deselect"><?php _e('Deselect all','final-tiles-gallery')?></a>
286
- <a class="btn indigo darken-4 waves-effect waves-light" href="#" data-action="toggle"><?php _e('Toggle selection','final-tiles-gallery')?></a>
 
 
 
 
 
 
 
 
 
287
  </span>
288
  <span class="green lighten-4">
289
- <a class="btn green darken-2 waves-effect waves-light" href="#" onclick="alert('Filters are available with PRO version')"><?php _e('Assign filters','final-tiles-gallery')?></a>
290
- <a class="btn green darken-2 waves-effect waves-light" href="#" onclick="alert('Groups are available with PRO version')"><?php _e('Assign group','final-tiles-gallery')?></a>
 
 
291
  </span>
292
  <span class="orange lighten-4">
293
- <a class="btn lime darken-3 waves-effect waves-light" href="#" data-action="show-hide"><?php _e('Toggle visibility','final-tiles-gallery')?></a>
294
- <a class="btn deep-orange darken-1 waves-effect waves-light" href="#" data-action="remove"><?php _e('Remove','final-tiles-gallery')?></a>
 
 
 
 
 
 
295
  </span>
296
  </div>
297
 
298
  <div class="row">
299
- <b class="listview"> <?php _e('List View:','final-tiles-gallery')?> </b>
 
 
 
300
  <ul class="list-view-control">
301
- <li data-size="small" id="listview-small" class="li"> <?php _e('Small','final-tiles-gallery')?> </li>
302
- <li data-size="medium" id="listview-medium" class="li" > <?php _e('Medium','final-tiles-gallery','final-tiles-gallery')?> </li>
303
- <li data-size="big" id="listview-big" class="li"> <?php _e('Big','final-tiles-gallery')?> </li>
 
 
 
 
 
 
 
 
 
304
  </ul>
305
  </div>
306
 
@@ -308,29 +1074,56 @@ $colors = array('indigo', 'blue', 'cyan', 'teal' ,'green', 'lime', 'amber', 'dee
308
  <strong></strong>
309
  <p class="text"></p>
310
  <p class="input">
311
- <input type="text" placeholder="<?php _e('Group name','final-tiles-gallery')?>">
312
- <span><?php _e('avoid space and special characters','final-tiles-gallery')?></span>
 
 
 
 
 
 
313
  </p>
314
  <p class="buttons">
315
- <a class="btn orange cancel" href="#"><?php _e('Cancel','final-tiles-gallery')?></a>
316
- <a class="btn green proceed" href="#"><?php _e('Proceed','final-tiles-gallery')?></a>
 
 
 
 
 
 
317
  </p>
318
  </div>
319
  </div>
320
  </div>
321
 
322
- <?php if(is_array($filters) && count($filters) > 1): ?>
 
 
 
323
  <div class="row filter-list">
324
- <b class="listview"> <?php _e('Filters:','final-tiles-gallery')?> </b>
 
 
 
325
  <ul class="filter-select-control">
326
- <?php foreach($filters as $filter): ?>
 
 
327
  <li class='filter-item' >
328
- <?php print $filter; ?>
 
 
329
  </li>
330
- <?php endforeach; ?>
 
 
331
  </ul>
332
  </div>
333
- <?php endif; ?>
 
 
 
334
  <div id="image-list" class="row"></div>
335
  </div>
336
  </li>
@@ -343,31 +1136,106 @@ $colors = array('indigo', 'blue', 'cyan', 'teal' ,'green', 'lime', 'amber', 'dee
343
  <i class="large mdi mdi-chevron-up"></i>
344
  </a>
345
  <ul>
346
- <?php $idx = 0; ?>
347
- <?php foreach($ftg_fields as $section => $s) : ?>
348
- <li><a class="btn-floating <?php _e($colors[$idx++]) ?>" rel="<?php _e(FinalTiles_GalleryLite::slugify($section)) ?>"><i class="large mdi <?php _e($s["icon"]) ?>"></i></a></li>
349
- <?php endforeach ?>
350
- <li><a class="btn-floating <?php _e($colors[$idx++]) ?>" rel="images"><i class="large mdi mdi-image-filter"></i></a></li>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
351
  </ul>
352
  </div>
353
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
354
  <!-- image panel -->
355
  <div id="image-panel-model" class="modal">
356
  <div class="modal-content cf">
357
- <h4><?php _e('Edit image','final-tiles-gallery')?></h4>
 
 
 
358
  <div class="left">
359
  <div class="figure"></div>
360
  <div class="field sizes"></div>
361
  </div>
362
  <div class="right-side">
363
  <div class="field">
364
- <label><?php _e('Title','final-tiles-gallery')?></label>
 
 
 
365
  <div class="text">
366
  <textarea name="imageTitle"></textarea>
367
  </div>
368
  </div>
369
  <div class="field">
370
- <label><?php _e('Caption','final-tiles-gallery')?></label>
 
 
 
371
  <div class="text">
372
  <textarea name="description"></textarea>
373
  </div>
@@ -375,31 +1243,72 @@ $colors = array('indigo', 'blue', 'cyan', 'teal' ,'green', 'lime', 'amber', 'dee
375
  <div class="field">
376
  <input id="hidden-image" type="checkbox" name="hidden" value="T" />
377
  <label for="hidden-image">
378
- <?php _e('Hidden, visible only with lightbox','final-tiles-gallery')?>
 
 
379
  </label>
380
  </div>
381
  <div class="field js-no-hidden">
382
- <label><?php _e('Link','final-tiles-gallery')?></label>
 
 
 
383
  <div class="text dark">
384
  <input type="text" size="20" value="" name="link" />
385
  </div>
386
  </div>
387
  <div class="field js-no-hidden">
388
- <label><?php _e('Link target','final-tiles-gallery')?></label>
 
 
 
389
  <div class="text">
390
  <select name="target" class="browser-default">
391
- <option value="default"><?php _e('Default target','final-tiles-gallery')?></option>
392
- <option value="_self"><?php _e('Open in same page','final-tiles-gallery')?></option>
393
- <option value="_blank"><?php _e('Open in _blank','final-tiles-gallery')?></option>
394
- <option value="_lightbox"><?php _e('Open in lightbox (when using a lightbox)','final-tiles-gallery')?></option>
 
 
 
 
 
 
 
 
 
 
 
 
395
  </select>
396
  </div>
397
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
398
  </div>
399
  </div>
400
  <div class="field buttons modal-footer">
401
- <a href="#" data-action="save" class="action modal-action modal-close waves-effect waves-green btn-flat"><i class="fa fa-save"></i> <?php _e('Save','final-tiles-gallery')?></a>
402
- <a href="#" data-action="cancel" class="action modal-action modal-close waves-effect waves-yellow btn-flat"><i class="mdi-content-reply"></i> <?php _e('Cancel','final-tiles-gallery')?></a>
 
 
 
 
 
 
403
  </div>
404
  </div>
405
 
@@ -419,7 +1328,24 @@ $colors = array('indigo', 'blue', 'cyan', 'teal' ,'green', 'lime', 'amber', 'dee
419
  <div class="overlay" style="display:none"></div>
420
 
421
  <script>
422
- var ftg_wp_caption_field = '<?php ftg_p($gallery, "wp_field_caption") ?>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
423
  (function ($) {
424
  $("[name=captionFullHeight]").change(function () {
425
  if($(this).val() == "F")
@@ -432,5 +1358,39 @@ $colors = array('indigo', 'blue', 'cyan', 'teal' ,'green', 'lime', 'amber', 'dee
432
  }
433
  });
434
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
435
  })(jQuery);
436
  </script>
1
+ <?php
2
+
3
+ if ( !function_exists( 'ftg_p' ) ) {
4
+ function ftg_p( $gallery, $field, $default = NULL )
5
+ {
6
+ global $ftg_options ;
7
+
8
+ if ( $ftg_options ) {
9
+ if ( array_key_exists( $field, $ftg_options ) ) {
10
+ print stripslashes( $ftg_options[$field] );
11
+ }
12
+ return;
13
+ }
14
+
15
+
16
+ if ( $gallery == NULL || $gallery->{$field} === NULL ) {
17
+
18
+ if ( $default === NULL ) {
19
+ print '';
20
+ } else {
21
+ print stripslashes( $default );
22
+ }
23
+
24
+ } else {
25
+ print stripslashes( $gallery->{$field} );
26
+ }
27
+
28
+ }
29
+
30
+ function ftg_sel(
31
+ $gallery,
32
+ $field,
33
+ $value,
34
+ $type = 'selected'
35
+ )
36
+ {
37
+ global $ftg_options ;
38
+
39
+ if ( $ftg_options && $ftg_options[$field] == $value ) {
40
+ print $type;
41
+ return;
42
+ }
43
+
44
+
45
+ if ( $gallery == NULL ) {
46
+ print '';
47
+ } else {
48
+ if ( $gallery->{$field} == $value ) {
49
+ print $type;
50
+ }
51
+ }
52
+
53
+ }
54
+
55
+ function ftg_checkFieldDisabled( $options )
56
+ {
57
+ if ( count( $options ) == 3 && $options[2] == 'disabled' ) {
58
+ return 'disabled';
59
+ }
60
+ return '';
61
+ }
62
+
63
+ function ftg_checkDisabledOption( $plan )
64
+ {
65
+ return 'disabled';
66
+ return '';
67
+ }
68
+
69
+ function ftg_printPro( $plan )
70
+ {
71
+ return ' (upgrade to unlock)';
72
+ return '';
73
+ }
74
+
75
+ function ftg_printFieldPro( $options )
76
+ {
77
+ if ( count( $options ) == 3 && $options[2] == 'disabled' ) {
78
+ return ' (upgrade to unlock)';
79
+ }
80
+ return '';
81
+ }
82
+
83
+ }
84
+
85
+ global $ftg_parent_page ;
86
+ global $ftg_fields ;
87
+ $filters = explode( '|', $gallery->filters );
88
+ //print_r($gallery);
89
+ $idx = 0;
90
+ function ftgSortByName( $a, $b )
91
+ {
92
+ return $a['name'] > $b['name'];
93
+ }
94
+
95
+ ?>
96
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
 
98
  <ul class="collapsible" data-collapsible="accordion">
99
+ <?php
100
+ foreach ( $ftg_fields as $section => $s ) {
101
+ ?>
102
+ <li id="<?php
103
+ _e( FinalTiles_Gallery::slugify( $section ) );
104
+ ?>
105
+ ">
106
+ <div class="collapsible-header">
107
+ <i class="mdi <?php
108
+ _e( $s['icon'] );
109
+ ?>
110
+ ftg-section-icon white-text <?php
111
+ print $colors[$idx];
112
+ ?>
113
+ darken-2"></i> <?php
114
+ _e( $section );
115
+ ?>
116
  </div>
117
+ <div class="collapsible-body <?php
118
+ print $colors[$idx];
119
+ ?>
120
+ lighten-5 tab form-fields">
121
  <div class="jump-head">
122
+ <?php
123
+ $jumpFields = array();
124
+ foreach ( $s['fields'] as $f => $data ) {
125
+ $jumpFields[$f] = $data;
126
+ $jumpFields[$f]['_code'] = $f;
127
+ }
128
+ unset( $f );
129
+ unset( $data );
130
+ usort( $jumpFields, 'ftgSortByName' );
131
+ ?>
 
 
 
132
  <select class="browser-default jump">
133
+ <option><?php
134
+ _e( 'Jump to setting', 'final-tiles-gallery' );
135
+ ?>
136
+ </option>
137
+ <?php
138
+ foreach ( $jumpFields as $f => $data ) {
139
+ ?>
140
+ <?php
141
+
142
+ if ( is_array( $data['excludeFrom'] ) && !in_array( $ftg_parent_page, $data['excludeFrom'] ) ) {
143
+ ?>
144
+ <option value="<?php
145
+ _e( $data['_code'] );
146
+ ?>
147
+ ">
148
+ <?php
149
+ _e( $data['name'] );
150
+ ?>
151
  </option>
152
+ <?php
153
+ }
154
+
155
+ ?>
156
+ <?php
157
+ }
158
+ ?>
159
  </select>
160
+
161
+ <?php
162
+
163
+ if ( array_key_exists( 'presets', $s ) ) {
164
+ ?>
165
+ <select class="browser-default presets" data-field-idx="<?php
166
+ echo $idx ;
167
+ ?>
168
+ ">
169
+ <option value="">Select preset</option>
170
+ <?php
171
+ foreach ( $s['presets'] as $preset => $data ) {
172
+ ?>
173
+ <option><?php
174
+ echo $preset ;
175
+ ?>
176
+ </option>
177
+ <?php
178
+ }
179
+ ?>
180
+ </select>
181
+ <?php
182
+ }
183
+
184
+ ?>
185
  </div>
186
  <table>
187
  <tbody>
188
+ <?php
189
+ foreach ( $s['fields'] as $f => $data ) {
190
+ ?>
191
+ <?php
192
+
193
+ if ( is_array( $data['excludeFrom'] ) && !in_array( $ftg_parent_page, $data['excludeFrom'] ) ) {
194
+ ?>
195
 
196
+ <tr class="row-<?php
197
+ print $f;
198
+ ?>
199
+ <?php
200
+ print $data['type'];
201
+ ?>
202
+ ">
203
  <th scope="row">
204
+ <label><?php
205
+ _e( $data['name'] );
206
+ ?>
207
+ <?php
208
+
209
+ if ( $data['mu'] ) {
210
+ ?>
211
+ (<?php
212
+ _e( $data['mu'] );
213
+ ?>
214
+ )
215
+ <?php
216
+ }
217
+
218
+ ?>
219
  </label>
220
  </th>
221
  <td>
222
+ <div class="field <?php
223
+ echo ( in_array( 'shortcode', $data['excludeFrom'] ) ? '' : 'js-update-shortcode' ) ;
224
+ ?>
225
+ ">
226
+ <?php
227
+
228
+ if ( $data['type'] == 'text' ) {
229
+ ?>
230
  <div class="text">
231
+ <input type="text" size="30" name="ftg_<?php
232
+ print $f;
233
+ ?>
234
+ " value="<?php
235
+ ftg_p( $gallery, $f, $data['default'] );
236
+ ?>
237
+ " />
238
  </div>
239
+ <?php
240
+ } elseif ( $data['type'] == 'cta' ) {
241
+ ?>
242
+ <div class="text">
243
+ <a class="in-table-cta" href="<?php
244
+ echo ftg_fs()->get_upgrade_url() ;
245
+ ?>
246
+ "><i class="mdi mdi-bell-ring-outline"></i>
247
+ <?php
248
+ _e( 'Unlock this feature. Upgrade Now!', 'final-tiles-grid-gallery-lite' );
249
+ ?>
250
+ </a>
251
+ </div>
252
+ <?php
253
+ } elseif ( $data['type'] == 'select' ) {
254
+ ?>
255
  <div class="text">
256
+ <select class="browser-default" name="ftg_<?php
257
+ print $f;
258
+ ?>
259
+ ">
260
+ <?php
261
+ foreach ( array_keys( $data['values'] ) as $optgroup ) {
262
+ ?>
263
+ <optgroup label="<?php
264
+ print $optgroup;
265
+ ?>
266
+ ">
267
+ <?php
268
+ foreach ( $data['values'][$optgroup] as $option ) {
269
+ ?>
270
 
271
+ <?php
272
+ $v = explode( '|', $option );
273
+ ?>
274
 
275
+ <option <?php
276
+ echo ftg_checkFieldDisabled( $v ) ;
277
+ ?>
278
+ <?php
279
+ ftg_sel( $gallery, $f, $v[0] );
280
+ ?>
281
+ value="<?php
282
+ print $v[0];
283
+ ?>
284
+ "><?php
285
+ print $v[1];
286
+ echo ftg_printFieldPro( $v ) ;
287
+ ?>
288
+ </option>
289
+ <?php
290
+ }
291
+ ?>
292
  </optgroup>
293
+ <?php
294
+ }
295
+ ?>
296
  </select>
297
+ <?php
298
+
299
+ if ( $f == 'lightbox' ) {
300
+ ?>
301
  <div class="col s12 ftg-everlightbox-settings">
302
+ <?php
303
+
304
+ if ( class_exists( 'Everlightbox_Public' ) ) {
305
+ ?>
306
  <div class="card-panel light-green lighten-4">
307
  <a href="?page=everlightbox_options" target="_blank">EverlightBox settings</a>
308
  </div>
309
+ <?php
310
+ } else {
311
+ ?>
312
  <div class="card-panel yellow lighten-3">
313
  EverlightBox not installed. <a target="_blank" href="plugin-install.php?s=everlightbox&tab=search&type=term">Install</a>
314
  </div>
315
+ <?php
316
+ }
317
+
318
+ ?>
319
+
320
  </div>
321
+ <?php
322
+ }
323
+
324
+ ?>
325
  </div>
326
+ <?php
327
+ } elseif ( $data['type'] == 'toggle' ) {
328
+ ?>
329
  <div class="text">
330
+ <input type="checkbox" class="ftg-checkbox" id="ftg_<?php
331
+ print $f;
332
+ ?>
333
+ " name="ftg_<?php
334
+ print $f;
335
+ ?>
336
+ " value="<?php
337
+ ftg_p( $gallery, $f, $data['default'] );
338
+ ?>
339
+ " <?php
340
+ ftg_sel(
341
+ $gallery,
342
+ $f,
343
+ 'T',
344
+ 'checked'
345
+ );
346
+ ?>
347
+ />
348
+ <label for="ftg_<?php
349
+ print $f;
350
+ ?>
351
+ "><?php
352
+ _e( $data['description'] );
353
+ ?>
354
+ </label>
355
  </div>
356
 
357
+ <?php
358
+ } elseif ( $data['type'] == 'slider' ) {
359
+ ?>
360
 
361
  <div class="text">
362
  <p class="range-field">
363
+ <input name="ftg_<?php
364
+ print $f;
365
+ ?>
366
+ " value="<?php
367
+ ftg_p( $gallery, $f, $data['default'] );
368
+ ?>
369
+ " type="range" min="<?php
370
+ print $data['min'];
371
+ ?>
372
+ " max="<?php
373
+ print $data['max'];
374
+ ?>
375
+ " />
376
  </p>
377
  </div>
378
 
379
+ <?php
380
+ } elseif ( $data['type'] == 'number' ) {
381
+ ?>
382
  <div class="text">
383
+ <input type="text" name="ftg_<?php
384
+ print $f;
385
+ ?>
386
+ " class="integer-only" value="<?php
387
+ ftg_p( $gallery, $f, $data['default'] );
388
+ ?>
389
+ " >
390
  </div>
391
 
392
+ <?php
393
+ } elseif ( $data['type'] == 'color' ) {
394
+ ?>
395
  <div class="text">
396
+ <input type="text" size="6" data-default-color="<?php
397
+ print $data['default'];
398
+ ?>
399
+ " name="ftg_<?php
400
+ print $f;
401
+ ?>
402
+ " value="<?php
403
+ ftg_p( $gallery, $f, $data['default'] );
404
+ ?>
405
+ " class='pickColor' /> </div>
406
 
407
+ <?php
408
+ } elseif ( $data['type'] == 'filter' ) {
409
+ ?>
410
+
411
+ <div class="filters gallery-filters dynamic-table">
412
+ <div class="text"></div>
413
+ <a href="#" class="add waves-effect waves-light btn">
414
+ <i class="fa fa-plus left"></i> Add filter</a>
415
+ <p class="reset"><button class="waves-effect waves-light btn yellow reset-default-filter">Reset selected filter</button></p>
416
+ <input type="hidden" name="ftg_filters" value="<?php
417
+ ftg_p( $gallery, 'filters' );
418
+ ?>
419
+ " />
420
+ <input type="hidden" name="filter_def" value="<?php
421
+ ftg_p( $gallery, 'defaultFilter' );
422
+ ?>
423
+ " />
424
+ </div>
425
+
426
+ <?php
427
+ } elseif ( $data['type'] == 'textarea' ) {
428
+ ?>
429
  <div class="text">
430
+ <textarea name="ftg_<?php
431
+ print $f;
432
+ ?>
433
+ "><?php
434
+ ftg_p( $gallery, $f );
435
+ ?>
436
+ </textarea>
437
+ </div>
438
+ <?php
439
+ } elseif ( $data['type'] == 'custom_isf' ) {
440
+ ?>
441
+ <div class="custom_isf dynamic-table">
442
+ <table class="striped">
443
+ <thead>
444
+ <tr>
445
+ <th></th>
446
+ <th><?php
447
+ _e( 'Resolution', 'final-tiles-gallery' );
448
+ ?>
449
+ (px)</th>
450
+ <th><?php
451
+ _e( 'Size factor', 'final-tiles-gallery' );
452
+ ?>
453
+ (%)</th>
454
+ </tr>
455
+ </thead>
456
+ <tbody>
457
+ </tbody>
458
+ </table>
459
+ <input type="hidden" name="ftg_imageSizeFactorCustom" value="<?php
460
+ ftg_p( $gallery, 'imageSizeFactorCustom' );
461
+ ?>
462
+ " />
463
+ <a href="#" class="add waves-effect waves-light btn">
464
+ <i class="mdi-content-add left"></i>
465
+ <?php
466
+ _e( 'Add resolution', 'final-tiles-gallery' );
467
+ ?>
468
+ </a>
469
+ </div>
470
+ <?php
471
+ }
472
+
473
+ ?>
474
  <div class="help">
475
+ <?php
476
+
477
+ if ( strlen( $data['description'] ) ) {
478
+ ?>
479
+ <p><?php
480
+ _e( $data['description'] );
481
+ ?>
482
+ </p>
483
+ <?php
484
+ }
485
+
486
+ ?>
487
+ <?php
488
+
489
+ if ( !in_array( 'shortcode', $data['excludeFrom'] ) && $data['type'] != 'cta' ) {
490
+ ?>
491
+ <div class="ftg-code">
492
+ <a href="#" class="toggle-shortcode" data-code="<?php
493
+ print $f;
494
+ ?>
495
+ "><i class="mdi mdi-settings"></i></a>
496
+ <span id="shortcode-<?php
497
+ print $f;
498
+ ?>
499
+ ">
500
+ Shortcode attribute:
501
+ <input type="text" class="shortcode-val" readonly="" value='<?php
502
+ _e( FinalTilesGalleryUtils::fieldNameToShortcode( $f ) );
503
+ ?>
504
+ ="<?php
505
+ ftg_p( $gallery, $f, $data['default'] );
506
+ ?>
507
+ "'>
508
+ </span>
509
+ </div>
510
+ <?php
511
+ }
512
+
513
+ ?>
514
  </div>
515
 
516
  </div>
517
  </td>
518
  </tr>
519
+ <?php
520
+ }
521
+
522
+ ?>
523
+
524
+ <?php
525
+ }
526
+ ?>
527
  </tbody>
528
  </table>
529
  </div>
530
  </li>
531
+ <?php
532
+ $idx++;
533
+ ?>
534
+ <?php
535
+ }
536
+ ?>
537
  <li id="images">
538
+ <div class="collapsible-header">
539
+ <i class="mdi mdi-image-filter ftg-section-icon white-text <?php
540
+ print $colors[$idx];
541
+ ?>
542
+ darken-2"></i> <?php
543
+ _e( 'Images', 'final-tiles-gallery' );
544
+ ?>
545
  </div>
546
+ <div class="collapsible-body <?php
547
+ print $colors[$idx];
548
+ ?>
549
+ lighten-5">
550
  <div id="images" class="ftg-section form-fields">
551
  <div class="actions">
552
+ <label><?php
553
+ _e( 'Source:', 'final-tiles-gallery' );
554
+ ?>
555
+ </label>
556
+ <select name="ftg_source" class="browser-default">
557
+ <option value="images"><?php
558
+ _e( 'User images', 'final-tiles-gallery' );
559
+ ?>
560
+ </option>
561
+ <option value="posts" <?php
562
+ echo ftg_checkDisabledOption( 'ultimate' ) ;
563
+ ?>
564
+ ><?php
565
+ _e( 'Recent posts with featured image', 'final-tiles-gallery' );
566
+ echo ftg_printPro( 'ultimate' ) ;
567
+ ?>
568
+ </option>
569
+ <?php
570
+
571
+ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
572
+ ?>
573
+ <option value="woocommerce" <?php
574
+ echo ftg_checkDisabledOption( 'ultimate' ) ;
575
+ ?>
576
+ ><?php
577
+ _e( 'WooCommerce products', 'final-tiles-gallery' );
578
+ echo ftg_printPro( 'ultimate' ) ;
579
+ ?>
580
+ </option>
581
+ <?php
582
+ }
583
+
584
+ ?>
585
+ </select>
586
+ </div>
587
  <div class="actions">
588
  <div class="row">
589
  <label>Loading method</label>
590
  <select name="ftg_loadMethod" class="browser-default">
591
+ <option <?php
592
+ ftg_sel( $gallery, 'loadMethod', 'sequential' );
593
+ ?>
594
+ value="sequential">Sequential</option>
595
+ <option <?php
596
+ ftg_sel( $gallery, 'loadMethod', 'lazy' );
597
+ ?>
598
+ value="lazy">Lazy</option>
599
  </select>
600
  </div>
601
  </div>
603
  <div class="row">
604
  <label>Ajax loading</label>
605
  <select name="ftg_ajaxLoading" class="browser-default js-ajax-loading-control">
606
+ <option <?php
607
+ ftg_sel( $gallery, 'ajaxLoading', 'F' );
608
+ ?>
609
+ value="F">Complete markup on page</option>
610
+ <option <?php
611
+ ftg_sel( $gallery, 'ajaxLoading', 'T' );
612
+ ?>
613
+ value="T">Enable ajax loading (still in beta!)</option>
614
  </select>
615
  </div>
616
  <div class="row js-ajax-loading" style="display:none;">
617
  <label>Number of images to load via ajax</label>
618
+ <input class="browser-default" type="text" value="<?php
619
+ echo $gallery->tilesPerPage ;
620
+ ?>
621
+ " name="ftg_tilesPerPage">
622
  </div>
623
  </div>
624
  <div class="actions source-images source-panel">
625
  <div class="row">
626
  <div class="tips">
627
  <span class="shortpixel">
628
+ <img src="<?php
629
+ echo plugins_url( '', __FILE__ ) ;
630
+ ?>
631
+ /../images/icon-shortpixel.png" alt="ShortPixel">
632
+ <a target="_blank" href="https://shortpixel.com/wp/af/J4PFT4Z72393"><?php
633
+ _e( 'We suggest you to use ShortPixel image optimization plugin for best SEO results.', 'modula-gallery' );
634
+ ?>
635
+ </a></span>
636
  </div>
637
+ <label><?php
638
+ _e( 'Image size', 'final-tiles-gallery' );
639
+ ?>
640
+ </label>
641
 
642
  <select class="current-image-size browser-default">
643
+ <?php
644
+ foreach ( $this->list_thumbnail_sizes() as $size => $atts ) {
645
+ print '<option value="' . $size . '">' . $size . ' (' . implode( 'x', $atts ) . ')</option>';
646
+ }
647
+ ?>
 
648
  </select>
649
+ <p class="tips"><?php
650
+ _e( 'Want to add more images sizes?', 'final-tiles-gallery' );
651
+ ?>
652
+ <a href="http://www.wpbeginner.com/wp-tutorials/how-to-create-additional-image-sizes-in-wordpress/" target="_blank"><?php
653
+ _e( 'Read a simple tutorial.', 'final-tiles-gallery' );
654
+ ?>
655
+ </a></p>
656
  <div class="tips">
657
+ <strong><?php
658
+ _e( 'About choosing a proper image size:', 'final-tiles-gallery' );
659
+ ?>
660
+ </strong> <?php
661
+ _e( 'Final Tiles Gallery doesn\'t scale down the images when there\'s enough space, it gives you the freedom to choose your favourite size for each image. So you should use images that are smaller than the container, choose the', 'final-tiles-gallery' );
662
+ ?>
663
+ <strong><?php
664
+ _e( 'thumbnail', 'final-tiles-gallery' );
665
+ ?>
666
+ </strong> <?php
667
+ _e( 'or', 'final-tiles-gallery' );
668
+ ?>
669
+ <strong><?php
670
+ _e( 'medium', 'final-tiles-gallery' );
671
+ ?>
672
+ </strong> <?php
673
+ _e( 'size, for example.', 'final-tiles-gallery' );
674
+ ?>
675
+ <br>
676
  <br>
677
+ <?php
678
+ _e( 'How to get a better grid? Watch the', 'final-tiles-gallery' );
679
+ ?>
680
+ <a href="https://www.youtube.com/watch?v=RNT4JGjtyrs" target="_blank"><?php
681
+ _e( 'video tutorial', 'final-tiles-gallery' );
682
+ ?>
683
+ </a>.
684
  </div>
685
  </div>
686
  <div class="row">
687
+ <a href="#" class="open-media-panel waves-effect waves-light btn action"><i class="mdi mdi-image-area"></i> <?php
688
+ _e( 'Add images', 'final-tiles-gallery' );
689
+ ?>
690
+ </a>
691
+ <a href="#" class="open-add-video waves-effect waves-light btn action"><i class="mdi mdi-video"></i> <?php
692
+ _e( 'Add video', 'final-tiles-gallery' );
693
+ ?>
694
+ </a>
695
  </div>
696
  <div class="row">
697
+ <p class="tips"><?php
698
+ _e( 'For multiple selections: Click+CTRL.
699
+ Drag images to change order.', 'final-tiles-gallery' );
700
+ ?>
701
+ </p>
702
  </div>
703
+ </div>
704
+ <div class="actions source-posts source-panel">
705
+ <div class="row">
706
+ <label><?php
707
+ _e( 'Image size', 'final-tiles-gallery' );
708
+ ?>
709
+ </label>
710
+
711
+ <select class="browser-default" name="ftg_defaultPostImageSize">
712
+ <?php
713
+ foreach ( $this->list_thumbnail_sizes() as $size => $atts ) {
714
+ print '<option ' . (( $size == $gallery->defaultPostImageSize ? 'selected' : '' )) . ' value="' . $size . '">' . $size . ' (' . implode( 'x', $atts ) . ')</option>';
715
+ }
716
+ ?>
717
+ </select>
718
+ <p class="tips"><?php
719
+ _e( 'Want to add more images sizes?', 'final-tiles-gallery' );
720
+ ?>
721
+ <a href="http://www.wpbeginner.com/wp-tutorials/how-to-create-additional-image-sizes-in-wordpress/" target="_blank"><?php
722
+ _e( 'Read a simple tutorial.', 'final-tiles-gallery' );
723
+ ?>
724
+ </a></p>
725
+ <div class="tips">
726
+ <strong><?php
727
+ _e( 'About choosing a proper image size:', 'final-tiles-gallery' );
728
+ ?>
729
+ </strong> <?php
730
+ _e( 'Final Tiles Gallery doesn\'t scale down the images
731
+ when there\'s enough space, it gives you the freedom to choose your favourite size for each image.
732
+ So you should use images that are smaller than the container, choose the', 'final-tiles-gallery' );
733
+ ?>
734
+ <strong><?php
735
+ _e( 'thumbnail', 'final-tiles-gallery' );
736
+ ?>
737
+ </strong> <?php
738
+ _e( 'or', 'final-tiles-gallery' );
739
+ ?>
740
+ <strong><?php
741
+ _e( 'medium', 'final-tiles-gallery' );
742
+ ?>
743
+ </strong> <?php
744
+ _e( 'size, for example.', 'final-tiles-gallery' );
745
+ ?>
746
+ <br>
747
+ <br>
748
+ <?php
749
+ _e( 'How to get a better grid? Watch the', 'final-tiles-gallery' );
750
+ ?>
751
+ <a href="https://www.youtube.com/watch?v=RNT4JGjtyrs" target="_blank"><?php
752
+ _e( 'video tutorial', 'final-tiles-gallery' );
753
+ ?>
754
+ </a>.
755
+ </div>
756
+ <div class="row checkboxes">
757
+ <strong class="label"><?php
758
+ _e( 'Post type:', 'final-tiles-gallery' );
759
+ ?>
760
+ </strong>
761
+ <span>
762
+ <?php
763
+ $idx = 0;
764
+ ?>
765
+ <?php
766
+ foreach ( get_post_types( '', 'names' ) as $t ) {
767
+ ?>
768
+ <?php
769
+
770
+ if ( !in_array( $t, $excluded_post_types ) ) {
771
+ ?>
772
+ <input id="post-type-<?php
773
+ _e( $idx );
774
+ ?>
775
+ " type="checkbox" name="post_types" value="<?php
776
+ _e( $t );
777
+ ?>
778
+ ">
779
+ <label for="post-type-<?php
780
+ _e( $idx );
781
+ ?>
782
+ "><?php
783
+ _e( $t );
784
+ ?>
785
+ </label>
786
+ <?php
787
+ $idx++;
788
+ ?>
789
+ <?php
790
+ }
791
+
792
+ ?>
793
+ <?php
794
+ }
795
+ ?>
796
+ <input type="hidden" name="ftg_post_types" value="<?php
797
+ _e( $gallery->post_types );
798
+ ?>
799
+ " />
800
+ </span>
801
+ </div>
802
+ <div class="row checkboxes">
803
+ <strong class="label"><?php
804
+ _e( 'Categories:', 'final-tiles-gallery' );
805
+ ?>
806
+ </strong>
807
+ <span>
808
+ <?php
809
+ $idx = 0;
810
+ ?>
811
+ <?php
812
+ foreach ( get_categories() as $c ) {
813
+ ?>
814
+ <input id="post-cat-<?php
815
+ _e( $idx );
816
+ ?>
817
+ " type="checkbox" name="post_categories" value="<?php
818
+ _e( $c->cat_ID );
819
+ ?>
820
+ ">
821
+ <label for="post-cat-<?php
822
+ _e( $idx );
823
+ ?>
824
+ "><?php
825
+ _e( $c->name );
826
+ ?>
827
+ </label>
828
+ <?php
829
+ $idx++;
830
+ ?>
831
+ <?php
832
+ }
833
+ ?>
834
+ <input type="hidden" name="ftg_post_categories" value="<?php
835
+ _e( $gallery->post_categories );
836
+ ?>
837
+ " />
838
+ </span>
839
+ </div>
840
+ <div class="row checkboxes">
841
+ <strong class="label"><?php
842
+ _e( 'Tags:', 'final-tiles-gallery' );
843
+ ?>
844
+ </strong>
845
+ <span>
846
+ <?php
847
+ $tags = get_tags();
848
+ ?>
849
+ <?php
850
+ $idx = 0;
851
+ ?>
852
+ <?php
853
+ foreach ( $tags as $c ) {
854
+ ?>
855
+
856
+ <input id="post-tag-<?php
857
+ _e( $idx );
858
+ ?>
859
+ " type="checkbox" name="post_tags" value="<?php
860
+ _e( $c->term_id );
861
+ ?>
862
+ ">
863
+ <label for="post-tag-<?php
864
+ _e( $idx );
865
+ ?>
866
+ "><?php
867
+ _e( $c->name );
868
+ ?>
869
+ </label>
870
+ <?php
871
+ $idx++;
872
+ ?>
873
+ <?php
874
+ }
875
+ ?>
876
+ <?php
877
+
878
+ if ( count( $tags ) == 0 ) {
879
+ ?>
880
+ <?php
881
+ _e( 'No tags found', 'final-tiles-gallery' );
882
+ ?>
883
+ <?php
884
+ }
885
+
886
+ ?>
887
+ <input type="hidden" name="ftg_post_tags" value="<?php
888
+ echo $gallery->post_tags ;
889
+ ?>
890
+ " />
891
+ </span>
892
+ </div>
893
+ <div class="row checkboxes">
894
+ <strong class="label"><?php
895
+ _e( 'Max posts:', 'final-tiles-gallery' );
896
+ ?>
897
+ </strong>
898
+ <span class="aside">
899
+ <input type="text" name="ftg_max_posts" value="<?php
900
+ echo $gallery->max_posts ;
901
+ ?>
902
+ ">
903
+ <span><?php
904
+ _e( '(enter 0 for unlimited posts)', 'final-tiles-gallery' );
905
+ ?>
906
+ </span>
907
+ </span>
908
+ </div>
909
+ </div>
910
+ </div>
911
+ <?php
912
+
913
+ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
914
+ ?>
915
+ <div class="actions source-woocommerce source-panel">
916
+ <div class="row">
917
+ <label><?php
918
+ _e( 'Image size', 'final-tiles-gallery' );
919
+ ?>
920
+ </label>
921
+
922
+ <select class="browser-default" name="ftg_defaultWooImageSize">
923
+ <?php
924
+ foreach ( $this->list_thumbnail_sizes() as $size => $atts ) {
925
+ print '<option ' . (( $size == $gallery->defaultWooImageSize ? 'selected' : '' )) . ' value="' . $size . '">' . $size . ' (' . implode( 'x', $atts ) . ')</option>';
926
+ }
927
+ ?>
928
+ </select>
929
+ <p class="tips"><?php
930
+ _e( 'Want to add more images sizes?', 'final-tiles-gallery' );
931
+ ?>
932
+ <a href="http://www.wpbeginner.com/wp-tutorials/how-to-create-additional-image-sizes-in-wordpress/" target="_blank"><?php
933
+ _e( 'Read a simple tutorial.', 'final-tiles-gallery' );
934
+ ?>
935
+ </a></p>
936
+ <div class="tips">
937
+ <strong><?php
938
+ _e( 'About choosing a proper image size:', 'final-tiles-gallery' );
939
+ ?>
940
+ </strong> <?php
941
+ _e( 'Final Tiles Gallery doesn\'t scale down the images
942
+ when there\'s enough space, it gives you the freedom to choose your favourite size for each image.
943
+ So you should use images that are smaller than the container, choose the', 'final-tiles-gallery' );
944
+ ?>
945
+ <strong><?php
946
+ _e( 'thumbnail', 'final-tiles-gallery' );
947
+ ?>
948
+ </strong> <?php
949
+ _e( 'or', 'final-tiles-gallery' );
950
+ ?>
951
+ <strong><?php
952
+ _e( 'medium', 'final-tiles-gallery' );
953
+ ?>
954
+ </strong> <?php
955
+ _e( 'size, for example.', 'final-tiles-gallery' );
956
+ ?>
957
+ <br>
958
+ <br>
959
+ <?php
960
+ _e( 'How to get a better grid? Watch the', 'final-tiles-gallery' );
961
+ ?>
962
+ <a href="https://www.youtube.com/watch?v=RNT4JGjtyrs" target="_blank"><?php
963
+ _e( 'video tutorial', 'final-tiles-gallery' );
964
+ ?>
965
+ </a>.
966
+ </div>
967
+ <div class="row checkboxes">
968
+ <strong class="label"><?php
969
+ _e( 'Categories:', 'final-tiles-gallery' );
970
+ ?>
971
+ </strong>
972
+ <span>
973
+ <?php
974
+ $idx = 0;
975
+ ?>
976
+ <?php
977
+ foreach ( $woo_categories as $c ) {
978
+ ?>
979
+ <input id="woo-cat-<?php
980
+ _e( $idx );
981
+ ?>
982
+ " type="checkbox" name="woo_cat" value="<?php
983
+ _e( $c->cat_ID );
984
+ ?>
985
+ ">
986
+ <label for="woo-cat-<?php
987
+ _e( $idx );
988
+ ?>
989
+ "><?php
990
+ _e( $c->cat_name );
991
+ ?>
992
+ </label>
993
+ <?php
994
+ $idx++;
995
+ ?>
996
+
997
+ <?php
998
+ }
999
+ ?>
1000
+ <input type="hidden" name="ftg_woo_categories" value="<?php
1001
+ _e( $gallery->woo_categories );
1002
+ ?>
1003
+ " />
1004
+ </span>
1005
+ </div>
1006
+ </div>
1007
+ <?php
1008
+ }
1009
+
1010
+ ?>
1011
+
1012
  </div>
1013
  <div class="actions">
1014
  <div class="bulk row">
1015
+ <label><?php
1016
+ _e( 'Bulk Actions', 'final-tiles-gallery' );
1017
+ ?>
1018
+ </label>
1019
  <div class="options">
1020
  <span class="indigo lighten-4">
1021
+ <a class="btn indigo darken-4 waves-effect waves-light" href="#" data-action="select"><?php
1022
+ _e( 'Select all', 'final-tiles-gallery' );
1023
+ ?>
1024
+ </a>
1025
+ <a class="btn indigo darken-4 waves-effect waves-light" href="#" data-action="deselect"><?php
1026
+ _e( 'Deselect all', 'final-tiles-gallery' );
1027
+ ?>
1028
+ </a>
1029
+ <a class="btn indigo darken-4 waves-effect waves-light" href="#" data-action="toggle"><?php
1030
+ _e( 'Toggle selection', 'final-tiles-gallery' );
1031
+ ?>
1032
+ </a>
1033
  </span>
1034
  <span class="green lighten-4">
1035
+ <?php
1036
+ ?>
1037
+ <?php
1038
+ ?>
1039
  </span>
1040
  <span class="orange lighten-4">
1041
+ <a class="btn lime darken-3 waves-effect waves-light" href="#" data-action="show-hide"><?php
1042
+ _e( 'Toggle visibility', 'final-tiles-gallery' );
1043
+ ?>
1044
+ </a>
1045
+ <a class="btn deep-orange darken-1 waves-effect waves-light" href="#" data-action="remove"><?php
1046
+ _e( 'Remove', 'final-tiles-gallery' );
1047
+ ?>
1048
+ </a>
1049
  </span>
1050
  </div>
1051
 
1052
  <div class="row">
1053
+ <b class="listview"> <?php
1054
+ _e( 'List View:', 'final-tiles-gallery' );
1055
+ ?>
1056
+ </b>
1057
  <ul class="list-view-control">
1058
+ <li data-size="small" id="listview-small" class="li"> <?php
1059
+ _e( 'Small', 'final-tiles-gallery' );
1060
+ ?>
1061
+ </li>
1062
+ <li data-size="medium" id="listview-medium" class="li" > <?php
1063
+ _e( 'Medium', 'final-tiles-gallery', 'final-tiles-gallery' );
1064
+ ?>
1065
+ </li>
1066
+ <li data-size="big" id="listview-big" class="li"> <?php
1067
+ _e( 'Big', 'final-tiles-gallery' );
1068
+ ?>
1069
+ </li>
1070
  </ul>
1071
  </div>
1072
 
1074
  <strong></strong>
1075
  <p class="text"></p>
1076
  <p class="input">
1077
+ <input type="text" placeholder="<?php
1078
+ _e( 'Group name', 'final-tiles-gallery' );
1079
+ ?>
1080
+ ">
1081
+ <span><?php
1082
+ _e( 'avoid space and special characters', 'final-tiles-gallery' );
1083
+ ?>
1084
+ </span>
1085
  </p>
1086
  <p class="buttons">
1087
+ <a class="btn orange cancel" href="#"><?php
1088
+ _e( 'Cancel', 'final-tiles-gallery' );
1089
+ ?>
1090
+ </a>
1091
+ <a class="btn green proceed" href="#"><?php
1092
+ _e( 'Proceed', 'final-tiles-gallery' );
1093
+ ?>
1094
+ </a>
1095
  </p>
1096
  </div>
1097
  </div>
1098
  </div>
1099
 
1100
+ <?php
1101
+
1102
+ if ( is_array( $filters ) && count( $filters ) > 1 ) {
1103
+ ?>
1104
  <div class="row filter-list">
1105
+ <b class="listview"> <?php
1106
+ _e( 'Filters:', 'final-tiles-gallery' );
1107
+ ?>
1108
+ </b>
1109
  <ul class="filter-select-control">
1110
+ <?php
1111
+ foreach ( $filters as $filter ) {
1112
+ ?>
1113
  <li class='filter-item' >
1114
+ <?php
1115
+ print $filter;
1116
+ ?>
1117
  </li>
1118
+ <?php
1119
+ }
1120
+ ?>
1121
  </ul>
1122
  </div>
1123
+ <?php
1124
+ }
1125
+
1126
+ ?>
1127
  <div id="image-list" class="row"></div>
1128
  </div>
1129
  </li>
1136
  <i class="large mdi mdi-chevron-up"></i>
1137
  </a>
1138
  <ul>
1139
+ <?php
1140
+ $idx = 0;
1141
+ ?>
1142
+ <?php
1143
+ foreach ( $ftg_fields as $section => $s ) {
1144
+ ?>
1145
+ <li><a class="btn-floating <?php
1146
+ _e( $colors[$idx++] );
1147
+ ?>
1148
+ " rel="<?php
1149
+ _e( FinalTiles_Gallery::slugify( $section ) );
1150
+ ?>
1151
+ "><i class="large mdi <?php
1152
+ _e( $s['icon'] );
1153
+ ?>
1154
+ "></i></a></li>
1155
+ <?php
1156
+ }
1157
+ ?>
1158
+ <li><a class="btn-floating <?php
1159
+ _e( $colors[$idx++] );
1160
+ ?>
1161
+ " rel="images"><i class="large mdi mdi-image-filter"></i></a></li>
1162
  </ul>
1163
  </div>
1164
 
1165
+
1166
+ <!-- video panel -->
1167
+ <div id="video-panel-model" class="modal">
1168
+ <div class="modal-content">
1169
+ <p><?php
1170
+ _e( 'Paste here the embed code (it must be an ', 'final-tiles-gallery' );
1171
+ ?>
1172
+ <strong><?php
1173
+ _e( 'iframe', 'final-tiles-gallery' );
1174
+ ?>
1175
+ </strong>
1176
+ <?php
1177
+ _e( 'and it must contain the attributes', 'final-tiles-gallery' );
1178
+ ?>
1179
+ <strong><?php
1180
+ _e( 'width', 'final-tiles-gallery' );
1181
+ ?>
1182
+ </strong> <?php
1183
+ _e( 'and', 'final-tiles-gallery' );
1184
+ ?>
1185
+ <strong><?php
1186
+ _e( ' height', 'final-tiles-gallery' );
1187
+ ?>
1188
+ </strong>)</p>
1189
+ <div class="text dark">
1190
+ <textarea></textarea>
1191
+ </div>
1192
+ <div class="field video-filters clearfix" ></div>
1193
+ <input type="hidden" id="filter-video" value="<?php
1194
+ print $gallery->filters;
1195
+ ?>
1196
+ ">
1197
+ </div>
1198
+ <input type="hidden" id="video-panel-action" >
1199
+ <div class="field buttons modal-footer">
1200
+ <a href="#" data-action="edit" class="action positive save modal-action modal-close waves-effect waves-green btn-flat"><?php
1201
+ _e( 'Save', 'final-tiles-gallery' );
1202
+ ?>
1203
+ </a>
1204
+ <a href="#" data-action="cancel" class="action neutral modal-action modal-close waves-effect waves-yellow btn-flat"><?php
1205
+ _e( 'Cancel', 'final-tiles-gallery' );
1206
+ ?>
1207
+ </a>
1208
+ </div>
1209
+ </div>
1210
+
1211
+
1212
+
1213
  <!-- image panel -->
1214
  <div id="image-panel-model" class="modal">
1215
  <div class="modal-content cf">
1216
+ <h4><?php
1217
+ _e( 'Edit image', 'final-tiles-gallery' );
1218
+ ?>
1219
+ </h4>
1220
  <div class="left">
1221
  <div class="figure"></div>
1222
  <div class="field sizes"></div>
1223
  </div>
1224
  <div class="right-side">
1225
  <div class="field">
1226
+ <label><?php
1227
+ _e( 'Title', 'final-tiles-gallery' );
1228
+ ?>
1229
+ </label>
1230
  <div class="text">
1231
  <textarea name="imageTitle"></textarea>
1232
  </div>
1233
  </div>
1234
  <div class="field">
1235
+ <label><?php
1236
+ _e( 'Caption', 'final-tiles-gallery' );
1237
+ ?>
1238
+ </label>
1239
  <div class="text">
1240
  <textarea name="description"></textarea>
1241
  </div>
1243
  <div class="field">
1244
  <input id="hidden-image" type="checkbox" name="hidden" value="T" />
1245
  <label for="hidden-image">
1246
+ <?php
1247
+ _e( 'Hidden, visible only with lightbox', 'final-tiles-gallery' );
1248
+ ?>
1249
  </label>
1250
  </div>
1251
  <div class="field js-no-hidden">
1252
+ <label><?php
1253
+ _e( 'Link', 'final-tiles-gallery' );
1254
+ ?>
1255
+ </label>
1256
  <div class="text dark">
1257
  <input type="text" size="20" value="" name="link" />
1258
  </div>
1259
  </div>
1260
  <div class="field js-no-hidden">
1261
+ <label><?php
1262
+ _e( 'Link target', 'final-tiles-gallery' );
1263
+ ?>
1264
+ </label>
1265
  <div class="text">
1266
  <select name="target" class="browser-default">
1267
+ <option value="default"><?php
1268
+ _e( 'Default target', 'final-tiles-gallery' );
1269
+ ?>
1270
+ </option>
1271
+ <option value="_self"><?php
1272
+ _e( 'Open in same page', 'final-tiles-gallery' );
1273
+ ?>
1274
+ </option>
1275
+ <option value="_blank"><?php
1276
+ _e( 'Open in _blank', 'final-tiles-gallery' );
1277
+ ?>
1278
+ </option>
1279
+ <option value="_lightbox"><?php
1280
+ _e( 'Open in lightbox (when using a lightbox)', 'final-tiles-gallery' );
1281
+ ?>
1282
+ </option>
1283
  </select>
1284
  </div>
1285
  </div>
1286
+ <div class="field">
1287
+ <div class="text dark">
1288
+ <label><?php
1289
+ _e( 'Lightbox group (rel)', 'final-tiles-gallery' );
1290
+ ?>
1291
+ </label>
1292
+ <input type="text" size="20" value="" name="group" />
1293
+ <p class="info"><?php
1294
+ _e( 'Used to group images with the following lightbox: Magnific Popup, PrettyPhoto, FancyBox, SwipeBox, Lightbox', 'final-tiles-gallery' );
1295
+ ?>
1296
+ </p>
1297
+ </div>
1298
+ </div>
1299
+
1300
+ <div class="field filters clearfix"></div>
1301
  </div>
1302
  </div>
1303
  <div class="field buttons modal-footer">
1304
+ <a href="#" data-action="save" class="action modal-action modal-close waves-effect waves-green btn-flat"><i class="fa fa-save"></i> <?php
1305
+ _e( 'Save', 'final-tiles-gallery' );
1306
+ ?>
1307
+ </a>
1308
+ <a href="#" data-action="cancel" class="action modal-action modal-close waves-effect waves-yellow btn-flat"><i class="mdi-content-reply"></i> <?php
1309
+ _e( 'Cancel', 'final-tiles-gallery' );
1310
+ ?>
1311
+ </a>
1312
  </div>
1313
  </div>
1314
 
1328
  <div class="overlay" style="display:none"></div>
1329
 
1330
  <script>
1331
+ var presets = {};
1332
+ <?php
1333
+ $presetIdx = 0;
1334
+ foreach ( $ftg_fields as $section => $s ) {
1335
+ if ( array_key_exists( 'presets', $s ) ) {
1336
+ foreach ( $s['presets'] as $preset => $values ) {
1337
+ echo 'presets[\'preset_' . $presetIdx . '_' . $preset . '\'] = ' . json_encode( $values ) . ';
1338
+ ' ;
1339
+ }
1340
+ }
1341
+ $presetIdx++;
1342
+ }
1343
+ ?>
1344
+
1345
+ var ftg_wp_caption_field = '<?php
1346
+ ftg_p( $gallery, 'wp_field_caption' );
1347
+ ?>
1348
+ ';
1349
  (function ($) {
1350
  $("[name=captionFullHeight]").change(function () {
1351
  if($(this).val() == "F")
1358
  }
1359
  });
1360
 
1361
+ var post_types = $("[name=ftg_post_types]").val().split(',');
1362
+ $.each(post_types, function () {
1363
+ if(this.length)
1364
+ $("[name=post_types][value="+ this +"]").get(0).checked = true;
1365
+ });
1366
+
1367
+ var post_categories = $("[name=ftg_post_categories]").val().split(',');
1368
+ $.each(post_categories, function () {
1369
+ if(this.length) {
1370
+ var el = $("[name=post_categories][value="+ this +"]");
1371
+ if(el.length)
1372
+ el.get(0).checked = true;
1373
+ }
1374
+ });
1375
+
1376
+ var post_tags = $("[name=ftg_post_tags]").val().split(',');
1377
+ $.each(post_tags, function () {
1378
+ if(this.length) {
1379
+ var el = $("[name=post_tags][value="+ this +"]");
1380
+ if(el.length)
1381
+ el.get(0).checked = true;
1382
+ }
1383
+ });
1384
+
1385
+ var woo_categories = [];
1386
+ if($("[name=ftg_woo_categories]").val())
1387
+ woo_categories = $("[name=ftg_woo_categories]").val().split(',');
1388
+ $.each(woo_categories, function () {
1389
+ if(this.length) {
1390
+ var el = $("[name=woo_cat][value="+ this +"]");
1391
+ if(el.length)
1392
+ el.get(0).checked = true;
1393
+ }
1394
+ });
1395
  })(jQuery);
1396
  </script>
admin/include/fields.php ADDED
@@ -0,0 +1,1099 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $this->fields = array(
4
+ 'General' => array(
5
+ 'icon' => 'mdi-settings',
6
+ 'fields' => array(),
7
+ ),
8
+ 'Links & Lightbox' => array(
9
+ 'icon' => 'mdi-link-variant',
10
+ 'fields' => array(),
11
+ ),
12
+ 'Captions' => array(
13
+ 'icon' => 'mdi-comment-text-outline',
14
+ 'fields' => array(),
15
+ ),
16
+ 'Hover effects' => array(
17
+ 'icon' => 'mdi-file-image',
18
+ 'presets' => array(
19
+ 'Slow zoom in' => array(
20
+ 'hoverDuration' => 60000,
21
+ 'hoverZoom' => 400,
22
+ 'hoverRotation' => 0,
23
+ ),
24
+ 'Zoom in' => array(
25
+ 'hoverDuration' => 250,
26
+ 'hoverZoom' => 200,
27
+ 'hoverRotation' => 0,
28
+ ),
29
+ 'Swirl in' => array(
30
+ 'hoverZoom' => 200,
31
+ 'hoverRotation' => 20,
32
+ ),
33
+ 'Swirl in super' => array(
34
+ 'hoverZoom' => 200,
35
+ 'hoverRotation' => 360,
36
+ ),
37
+ 'Zoom out' => array(
38
+ 'hoverZoom' => 50,
39
+ 'hoverRotation' => 0,
40
+ ),
41
+ 'Swirl out' => array(
42
+ 'hoverZoom' => 50,
43
+ 'hoverRotation' => -20,
44
+ ),
45
+ 'Swirl out super' => array(
46
+ 'hoverZoom' => 50,
47
+ 'hoverRotation' => -360,
48
+ ),
49
+ ),
50
+ 'fields' => array(),
51
+ ),
52
+ 'Image loaded effects' => array(
53
+ 'icon' => 'mdi-reload',
54
+ 'presets' => array(
55
+ 'Wobble' => array(
56
+ 'loadedDuration' => 600,
57
+ 'loadedEasing' => 'elastic-out',
58
+ 'loadedScaleY' => 50,
59
+ 'loadedScaleX' => 50,
60
+ 'loadedRotateY' => 0,
61
+ 'loadedRotateX' => 0,
62
+ 'loadedVSlide' => 0,
63
+ 'loadedHSlide' => 0,
64
+ ),
65
+ 'Windows' => array(
66
+ 'loadedDuration' => 600,
67
+ 'loadedEasing' => 'elastic-out',
68
+ 'loadedRotateY' => -120,
69
+ 'loadedScaleY' => 100,
70
+ 'loadedScaleX' => 100,
71
+ 'loadedRotateX' => 0,
72
+ 'loadedVSlide' => 0,
73
+ 'loadedHSlide' => 0,
74
+ ),
75
+ 'Cards' => array(
76
+ 'loadedDuration' => 600,
77
+ 'loadedEasing' => 'ease-in-out',
78
+ 'loadedRotateX' => -120,
79
+ 'loadedRotateY' => -120,
80
+ 'loadedScaleY' => 100,
81
+ 'loadedScaleX' => 0,
82
+ 'loadedVSlide' => 0,
83
+ 'loadedHSlide' => 0,
84
+ ),
85
+ 'Slide from bottom' => array(
86
+ 'loadedDuration' => 250,
87
+ 'loadedEasing' => 'ease-out',
88
+ 'loadedRotateX' => 0,
89
+ 'loadedRotateY' => 0,
90
+ 'loadedScaleY' => 100,
91
+ 'loadedScaleX' => 100,
92
+ 'loadedVSlide' => 100,
93
+ 'loadedHSlide' => 0,
94
+ ),
95
+ 'Slide from left' => array(
96
+ 'loadedDuration' => 250,
97
+ 'loadedEasing' => 'ease-out',
98
+ 'loadedRotateX' => 0,
99
+ 'loadedRotateY' => 0,
100
+ 'loadedScaleY' => 100,
101
+ 'loadedScaleX' => 100,
102
+ 'loadedVSlide' => 0,
103
+ 'loadedHSlide' => -100,
104
+ ),
105
+ 'Elastic skew' => array(
106
+ 'loadedDuration' => 800,
107
+ 'loadedEasing' => 'elastic-out',
108
+ 'loadedRotateX' => 0,
109
+ 'loadedRotateY' => -180,
110
+ 'loadedScaleY' => 200,
111
+ 'loadedScaleX' => 100,
112
+ 'loadedVSlide' => 300,
113
+ 'loadedHSlide' => 0,
114
+ ),
115
+ 'Flying doors' => array(
116
+ 'loadedDuration' => 800,
117
+ 'loadedEasing' => 'ease-out-back',
118
+ 'loadedRotateX' => -180,
119
+ 'loadedRotateY' => 0,
120
+ 'loadedScaleY' => 100,
121
+ 'loadedScaleX' => 300,
122
+ 'loadedVSlide' => -500,
123
+ 'loadedHSlide' => -800,
124
+ ),
125
+ 'Pop' => array(
126
+ 'loadedDuration' => 300,
127
+ 'loadedEasing' => 'ease-in-out',
128
+ 'loadedRotateX' => 0,
129
+ 'loadedRotateY' => 0,
130
+ 'loadedScaleY' => 1,
131
+ 'loadedScaleX' => 1,
132
+ 'loadedVSlide' => 0,
133
+ 'loadedHSlide' => 0,
134
+ ),
135
+ ),
136
+ 'fields' => array(),
137
+ ),
138
+ 'Style' => array(
139
+ 'icon' => 'mdi-format-paint',
140
+ 'fields' => array(),
141
+ ),
142
+ 'Customizations' => array(
143
+ 'icon' => 'mdi-puzzle',
144
+ 'fields' => array(),
145
+ ),
146
+ );
147
+ $this->addField( 'General', 'name', array(
148
+ 'name' => 'Name',
149
+ 'hiddenFor' => array( 'dashboard', 'shortcode' ),
150
+ 'type' => 'text',
151
+ 'description' => 'Name of the gallery, for internal use.',
152
+ 'proCall' => false,
153
+ 'excludeFrom' => array( 'dashboard', 'shortcode' ),
154
+ ) );
155
+ $this->addField( 'General', 'description', array(
156
+ 'name' => 'Description',
157
+ 'hiddenFor' => array( 'dashboard', 'shortcode' ),
158
+ 'type' => 'text',
159
+ 'description' => 'Description of the gallery, for internal use.',
160
+ 'proCall' => false,
161
+ 'excludeFrom' => array( 'dashboard', 'shortcode' ),
162
+ ) );
163
+ $this->addField( 'General', 'layout', array(
164
+ 'name' => 'Layout',
165
+ 'type' => 'select',
166
+ 'description' => '<strong>Final Tiles</strong>: use images with different sizes<br><strong>Masonry</strong>: multi-column layout, use this one if you need images of the same size.',
167
+ 'values' => array(
168
+ 'Layout' => array( 'final|Final Tiles', 'columns|Masonry' ),
169
+ ),
170
+ 'proCall' => false,
171
+ 'excludeFrom' => array(),
172
+ ) );
173
+ $this->addField( 'General', 'width', array(
174
+ 'name' => 'Width',
175
+ 'type' => 'text',
176
+ 'description' => 'Width of the gallery in pixels or percentage.',
177
+ 'proCall' => false,
178
+ 'excludeFrom' => array(),
179
+ ) );
180
+ $this->addField( 'General', 'margin', array(
181
+ 'name' => 'Margin',
182
+ 'type' => 'number',
183
+ 'description' => 'Margin between images',
184
+ 'mu' => 'px',
185
+ 'min' => 0,
186
+ 'max' => 50,
187
+ 'proCall' => false,
188
+ 'excludeFrom' => array(),
189
+ ) );
190
+ $this->addField( 'General', 'columns', array(
191
+ 'name' => 'Number of columns',
192
+ 'type' => 'number',
193
+ 'description' => '',
194
+ 'mu' => '',
195
+ 'min' => 1,
196
+ 'max' => 50,
197
+ 'proCall' => false,
198
+ 'excludeFrom' => array(),
199
+ ) );
200
+ $this->addField( 'General', 'columnsTabletLandscape', array(
201
+ 'name' => 'Number of columns (Tablet landscape)',
202
+ 'type' => 'number',
203
+ 'description' => '',
204
+ 'mu' => '',
205
+ 'min' => 1,
206
+ 'max' => 50,
207
+ 'proCall' => false,
208
+ 'excludeFrom' => array(),
209
+ ) );
210
+ $this->addField( 'General', 'columnsTabletPortrait', array(
211
+ 'name' => 'Number of columns (Tablet portrait)',
212
+ 'type' => 'number',
213
+ 'description' => '',
214
+ 'mu' => '',
215
+ 'min' => 1,
216
+ 'max' => 50,
217
+ 'proCall' => false,
218
+ 'excludeFrom' => array(),
219
+ ) );
220
+ $this->addField( 'General', 'columnsPhoneLandscape', array(
221
+ 'name' => 'Number of columns (Phone landscape)',
222
+ 'type' => 'number',
223
+ 'description' => '',
224
+ 'mu' => '',
225
+ 'min' => 1,
226
+ 'max' => 50,
227
+ 'proCall' => false,
228
+ 'excludeFrom' => array(),
229
+ ) );
230
+ $this->addField( 'General', 'columnsPhonePortrait', array(
231
+ 'name' => 'Number of columns (Phone portrait)',
232
+ 'type' => 'number',
233
+ 'description' => '',
234
+ 'mu' => '',
235
+ 'min' => 1,
236
+ 'max' => 50,
237
+ 'proCall' => false,
238
+ 'excludeFrom' => array(),
239
+ ) );
240
+ $this->addField( 'General', 'imageSizeFactor', array(
241
+ 'name' => 'Image size factor',
242
+ 'type' => 'slider',
243
+ 'description' => 'Percentage of image size, i.e.: if an image of the gallery is 300x200 and the size factor is 50% then the resulting image will be 150x100.
244
+ 90% is a suggested default value, because under some circumstances, the images could be enlarged by the script (to fill gaps and avoid blank spaces between tiles).',
245
+ 'default' => 90,
246
+ 'min' => 1,
247
+ 'max' => 100,
248
+ 'mu' => '%',
249
+ 'proCall' => false,
250
+ 'excludeFrom' => array(),
251
+ ) );
252
+ $this->addField( 'General', 'imageSizeFactorTabletLandscape', array(
253
+ 'name' => 'Image size factor (Tablet Landscape)',
254
+ 'type' => 'slider',
255
+ 'description' => 'Image size factor to apply when the viewport is 1024px, typically for tablets with landscape orientation',
256
+ 'default' => 80,
257
+ 'min' => 1,
258
+ 'max' => 100,
259
+ 'mu' => '%',
260
+ 'proCall' => false,
261
+ 'excludeFrom' => array(),
262
+ ) );
263
+ $this->addField( 'General', 'imageSizeFactorTabletPortrait', array(
264
+ 'name' => 'Image size factor Tablet Portrait',
265
+ 'type' => 'slider',
266
+ 'description' => 'Image size factor to apply when the viewport is 768px, typically for tablets with portrait orientation',
267
+ 'default' => 70,
268
+ 'min' => 1,
269
+ 'max' => 100,
270
+ 'mu' => '%',
271
+ 'proCall' => false,
272
+ 'excludeFrom' => array(),
273
+ ) );
274
+ $this->addField( 'General', 'imageSizeFactorPhoneLandscape', array(
275
+ 'name' => 'Image size factor Smartphone Landscape',
276
+ 'type' => 'slider',
277
+ 'description' => 'Image size factor to apply when the viewport is 640px, typically for smartphones with landscape orientation',
278
+ 'default' => 60,
279
+ 'min' => 1,
280
+ 'max' => 100,
281
+ 'mu' => '%',
282
+ 'proCall' => false,
283
+ 'excludeFrom' => array(),
284
+ ) );
285
+ $this->addField( 'General', 'imageSizeFactorPhonePortrait', array(
286
+ 'name' => 'Image size factor Phone Portrait',
287
+ 'type' => 'slider',
288
+ 'description' => 'Image size factor to apply when the viewport is 320px, typically for smartphones with portrait orientation',
289
+ 'default' => 50,
290
+ 'min' => 1,
291
+ 'max' => 100,
292
+ 'mu' => '%',
293
+ 'proCall' => false,
294
+ 'excludeFrom' => array(),
295
+ ) );
296
+ $this->addField( 'General', 'imageSizeFactorCustom', array(
297
+ 'name' => 'Custom image size factor',
298
+ 'hiddenFor' => array( 'dashboard', 'shortcode' ),
299
+ 'type' => FinalTiles_Gallery::getFieldType( 'custom_isf' ),
300
+ 'description' => 'Use this field if you need further resolutions. Make custom layout for any device and resolution.',
301
+ 'proCall' => true,
302
+ 'excludeFrom' => array( 'dashboard', 'shortcode' ),
303
+ ) );
304
+ $this->addField( 'General', 'minTileWidth', array(
305
+ 'name' => 'Tile minimum width',
306
+ 'type' => 'number',
307
+ 'description' => 'Minimum width of each tile, <strong>multiply this value for the image size factor to get the real size</strong>.',
308
+ 'mu' => 'px',
309
+ 'min' => 50,
310
+ 'max' => 500,
311
+ 'default' => 200,
312
+ 'proCall' => false,
313
+ 'excludeFrom' => array(),
314
+ ) );
315
+ $this->addField( 'General', 'imagesOrder', array(
316
+ 'name' => 'Images order',
317
+ 'type' => 'select',
318
+ 'description' => 'Choose the order of the images',
319
+ 'default' => '',
320
+ 'values' => array(
321
+ 'Images order' => array( 'user|User', 'reverse|Reverse', 'random|Random' ),
322
+ ),
323
+ 'proCall' => false,
324
+ 'excludeFrom' => array(),
325
+ ) );
326
+ $this->addField( 'General', 'filter', array(
327
+ 'name' => 'Filters',
328
+ 'type' => FinalTiles_Gallery::getFieldType( 'filter' ),
329
+ 'description' => 'Manage here all the filters of this gallery',
330
+ 'proCall' => true,
331
+ 'excludeFrom' => array( 'dashboard', 'shortcode' ),
332
+ ) );
333
+ $this->addField( 'General', 'gridCellSize', array(
334
+ 'name' => 'Size of the grid',
335
+ 'type' => 'number',
336
+ 'default' => 25,
337
+ 'min' => 1,
338
+ 'max' => 100,
339
+ 'mu' => 'px',
340
+ 'description' => 'Tiles are snapped to a virtual grid, <strong>the higher this value the higher the chance to get bottom aligned tiles</strong> (but it needs to crop vertically).',
341
+ 'proCall' => false,
342
+ 'excludeFrom' => array(),
343
+ ) );
344
+ $this->addField( 'General', 'gridCellSizeDisabledBelow', array(
345
+ 'name' => 'Disable grid size below resolution',
346
+ 'type' => 'number',
347
+ 'default' => 800,
348
+ 'min' => 0,
349
+ 'max' => 4000,
350
+ 'mu' => 'px',
351
+ 'description' => 'If you have small tiny images under certain resolutions then you can switch off grid size (image cropping) when the screen resolution is below this value.',
352
+ 'proCall' => false,
353
+ 'excludeFrom' => array(),
354
+ ) );
355
+ $this->addField( 'General', 'enlargeImages', array(
356
+ 'name' => 'Allow image enlargement',
357
+ 'type' => 'toggle',
358
+ 'description' => 'Images can be occasionally enlarged to avoid gaps. If you notice a quality loss try to reduce the <strong>Image size factor</strong> parameter.',
359
+ 'default' => 'T',
360
+ 'proCall' => false,
361
+ 'excludeFrom' => array(),
362
+ ) );
363
+ /*"scrollEffect" , array(
364
+ "name" => "Scroll effect",
365
+ "type" => "select",
366
+ "description" => "Effect on tiles when scrolling the page",
367
+ "values" => array(
368
+ "Scroll effect" => array(
369
+ "none|None", "slide|Sliding tiles", "zoom|Zoom", "rotate-left|Left rotation", "rotate-right|Right rotation"
370
+ )
371
+ ),
372
+ "proCall" => false,
373
+ "excludeFrom" => array()
374
+ ));*/
375
+ $this->addField( 'General', 'compressHTML', array(
376
+ 'name' => 'Compress HTML',
377
+ 'type' => 'toggle',
378
+ 'description' => 'Enable or disable HTML compression, some themes prefer uncompressed, switch it off in case of problems.',
379
+ 'default' => 'T',
380
+ 'proCall' => false,
381
+ 'excludeFrom' => array(),
382
+ ) );
383
+ $this->addField( 'Links & Lightbox', 'lightbox', array(
384
+ 'name' => 'Lightbox &amp; Links',
385
+ 'type' => 'select',
386
+ 'description' => 'Define here what happens when user click on the images. Lightboxes with video support: EverlightBox, LightGallery, Magnific popup, Colorbox (require embed URL)); PrettyPhoto, FancyBox (require embed URL)',
387
+ 'values' => array(
388
+ 'Link' => array( ' |No link', 'direct|Direct link to image (useful for external lightboxes)|disabled', 'post|Post or WooCommerce product|disabled' ),
389
+ 'Lightboxes' => array(
390
+ 'lightbox2|Lightbox',
391
+ 'everlightbox|EverlightBox + social sharing and comments',
392
+ 'lightgallery|LightGallery|disabled',
393
+ 'magnific|Magnific popup|disabled',
394
+ 'colorbox|ColorBox|disabled',
395
+ 'prettyphoto|PrettyPhoto|disabled',
396
+ 'fancybox|FancyBox|disabled',
397
+ 'swipebox|SwipeBox|disabled'
398
+ ),
399
+ ),
400
+ 'proCall' => true,
401
+ 'excludeFrom' => array(),
402
+ ) );
403
+ $this->addField( 'Links & Lightbox', 'mobileLightbox', array(
404
+ 'name' => 'Lightbox &amp; Links',
405
+ 'type' => 'select',
406
+ 'description' => 'Define here what happens when user click on the images. Lightboxes with video support: EverlightBox, LightGallery, Magnific popup, Colorbox (require embed URL)); PrettyPhoto, FancyBox (require embed URL)',
407
+ 'values' => array(
408
+ 'Link' => array( ' |No link', 'direct|Direct link to image (useful for external lightboxes)', 'post|Post or WooCommerce product|disabled' ),
409
+ 'Lightboxes' => array(
410
+ 'lightbox2|Lightbox',
411
+ 'everlightbox|EverlightBox + social sharing and comments',
412
+ 'lightgallery|LightGallery|disabled',
413
+ 'magnific|Magnific popup|disabled',
414
+ 'colorbox|ColorBox|disabled',
415
+ 'prettyphoto|PrettyPhoto|disabled',
416
+ 'fancybox|FancyBox|disabled',
417
+ 'swipebox|SwipeBox|disabled'
418
+ ),
419
+ ),
420
+ 'proCall' => true,
421
+ 'excludeFrom' => array(),
422
+ ) );
423
+ $this->addField( 'Links & Lightbox', 'lightboxImageSize', array(
424
+ 'name' => 'Image size for the lightbox',
425
+ 'type' => 'select',
426
+ 'description' => '',
427
+ 'values' => array(
428
+ 'Size' => array(),
429
+ ),
430
+ 'proCall' => false,
431
+ 'excludeFrom' => array(),
432
+ ) );
433
+ $this->addField( 'Links & Lightbox', 'disableLightboxGroups', array(
434
+ 'name' => 'Disable lightbox grouping',
435
+ 'type' => 'toggle',
436
+ 'description' => 'Flag this option if you don\'t want to group images when opened in a lightbox.',
437
+ 'default' => 'F',
438
+ 'proCall' => false,
439
+ 'excludeFrom' => array(),
440
+ ) );
441
+ $this->addField( 'Links & Lightbox', 'blank', array(
442
+ 'name' => 'Links target',
443
+ 'type' => 'toggle',
444
+ 'description' => 'Open links in a blank page.',
445
+ 'proCall' => false,
446
+ 'excludeFrom' => array(),
447
+ ) );
448
+ $this->addField( 'Links & Lightbox', 'enableTwitter', array(
449
+ 'name' => 'Enable Twitter icon',
450
+ 'type' => 'toggle',
451
+ 'description' => 'Enable Twitter sharing.',
452
+ 'default' => 'F',
453
+ 'proCall' => false,
454
+ 'excludeFrom' => array(),
455
+ ) );
456
+ $this->addField( 'Links & Lightbox', 'enableFacebook', array(
457
+ 'name' => 'Enable Facebook icon',
458
+ 'type' => 'toggle',
459
+ 'description' => 'Enable Facebook sharing. Note: after the last version of OpenGraph API it\'s not possible to share a specific image anymore.',
460
+ 'default' => 'F',
461
+ 'proCall' => false,
462
+ 'excludeFrom' => array(),
463
+ ) );
464
+ $this->addField( 'Links & Lightbox', 'enableGplus', array(
465
+ 'name' => 'Enable Google Plus icon',
466
+ 'type' => 'toggle',
467
+ 'description' => 'Enable Google Plus sharing',
468
+ 'default' => 'F',
469
+ 'proCall' => false,
470
+ 'excludeFrom' => array(),
471
+ ) );
472
+ $this->addField( 'Links & Lightbox', 'enablePinterest', array(
473
+ 'name' => 'Enable Pinterest icon',
474
+ 'type' => 'toggle',
475
+ 'description' => 'Enable Pinterest sharing',
476
+ 'default' => 'F',
477
+ 'proCall' => false,
478
+ 'excludeFrom' => array(),
479
+ ) );
480
+ $this->addField( 'Links & Lightbox', 'socialIconColor', array(
481
+ 'name' => 'Color of social sharing icons',
482
+ 'type' => 'color',
483
+ 'description' => 'Set the color of the social sharing icons',
484
+ 'default' => '#ffffff',
485
+ 'proCall' => false,
486
+ 'excludeFrom' => array(),
487
+ ) );
488
+ $this->addField( 'Links & Lightbox', 'socialIconStyle', array(
489
+ 'name' => 'Style of the social icons panel',
490
+ 'type' => 'select',
491
+ 'description' => 'Set the color of the social sharing icons',
492
+ 'default' => 'none',
493
+ 'values' => array(
494
+ 'Style' => array( 'none|None', 'circle|Circles', 'bar|Bar' ),
495
+ ),
496
+ 'proCall' => false,
497
+ 'excludeFrom' => array(),
498
+ ) );
499
+ $this->addField( 'Links & Lightbox', 'socialIconPosition', array(
500
+ 'name' => 'Position of the social icons panel',
501
+ 'type' => 'select',
502
+ 'description' => 'Set the position of the social sharing icons',
503
+ 'default' => 'bottom',
504
+ 'values' => array(
505
+ 'Position' => array( 'bottom|Bottom', 'right|Right' ),
506
+ ),
507
+ 'proCall' => false,
508
+ 'excludeFrom' => array(),
509
+ ) );
510
+ $this->addField( 'Captions', 'captionBehavior', array(
511
+ 'name' => 'Caption behavior',
512
+ 'type' => 'select',
513
+ 'description' => 'Effect used to show the captions.',
514
+ 'values' => array(
515
+ 'Effect' => array(
516
+ 'none|Fade in',
517
+ 'fixed|Fixed|disabled',
518
+ 'fixed-bg|Fixed with background|disabled',
519
+ 'fixed-then-hidden|Fixed, hidden on mouse hover|disabled',
520
+ 'fixed-bottom|Fixed at bottom|disabled',
521
+ 'slide-from-top|Slide from top|disabled',
522
+ 'slide-from-bottom|Slide from bottom|disabled'
523
+ ),
524
+ ),
525
+ 'proCall' => true,
526
+ 'excludeFrom' => array(),
527
+ ) );
528
+ $this->addField( 'Captions', 'captionMobileBehavior', array(
529
+ 'name' => 'Caption mobile behavior',
530
+ 'type' => 'select',
531
+ 'description' => 'Caption behavior for mobile devices.',
532
+ 'values' => array(
533
+ 'Behavior' => array(
534
+ 'desktop|Same as desktop',
535
+ 'none|Never show captions|disabled',
536
+ 'fixed-bg|Fixed with background|disabled',
537
+ 'fixed-bottom|Fixed at bottom|disabled',
538
+ 'fixed-then-hidden|Visible, hidden on touch|disabled'
539
+ ),
540
+ ),
541
+ 'proCall' => false,
542
+ 'excludeFrom' => array(),
543
+ ) );
544
+ $this->addField( 'Captions', 'captionPosition', array(
545
+ 'name' => 'Position',
546
+ 'type' => 'select',
547
+ 'description' => 'Choose the position of the caption.',
548
+ 'values' => array(
549
+ 'Behavior' => array( 'inside|Inside', 'outside|Outside (EXPERIMENTAL)' ),
550
+ ),
551
+ 'proCall' => false,
552
+ 'excludeFrom' => array(),
553
+ ) );
554
+ /*"captionFullHeight" , array(
555
+ "name" => "Caption full height",
556
+ "type" => "toggle",
557
+ "description" => "Enable this option for full height captions. <strong>This is required if you want to use caption icons and caption effects other than <i>fade</i>.</strong>",
558
+ "default" => "T",
559
+ "proCall" => false,
560
+ "excludeFrom" => array()
561
+ ));*/
562
+ $this->addField( 'Captions', 'captionEmpty', array(
563
+ 'name' => 'Empty captions',
564
+ 'type' => 'select',
565
+ 'description' => 'Choose if empty caption has to be shown.',
566
+ 'values' => array(
567
+ 'Empty captions' => array( 'hide|Don\'t show empty captions', 'show|Show empty captions|disabled' ),
568
+ ),
569
+ 'proCall' => false,
570
+ 'excludeFrom' => array(),
571
+ ) );
572
+ $this->addField( 'Captions', 'captionIcon', array(
573
+ 'name' => 'Caption icon',
574
+ 'type' => 'select',
575
+ 'description' => 'Choose the icon for the captions.',
576
+ 'values' => array(
577
+ 'Icon' => array(
578
+ '|None',
579
+ 'search|Lens',
580
+ 'search-plus|Lens (plus)',
581
+ 'link|Link',
582
+ 'heart|Heart',
583
+ 'heart-o|Heart empty',
584
+ 'camera|Camera',
585
+ 'camera-retro|Camera retro',
586
+ 'picture-o|Picture',
587
+ 'star|Star',
588
+ 'star-o|Star empty',
589
+ 'sun-o|Sun',
590
+ 'arrows-alt|Arrows',
591
+ 'hand-o-right|Hand'
592
+ ),
593
+ ),
594
+ 'proCall' => false,
595
+ 'excludeFrom' => array(),
596
+ ) );
597
+ $this->addField( 'Captions', 'customCaptionIcon', array(
598
+ 'name' => 'Custom caption icon',
599
+ 'type' => FinalTiles_Gallery::getFieldType( 'customCaptionIcon' ),
600
+ 'description' => 'Use this field to insert the class of a FontAwesome icon (i.e.: fa-heart). <a href=\'http://fontawesome.io/icons/\' target=\'blank\'>See all available icons</a>. <strong>This value override the <i>Caption icon</i> value</strong>.',
601
+ 'proCall' => false,
602
+ 'excludeFrom' => array(),
603
+ ) );
604
+ $this->addField( 'Captions', 'captionIconColor', array(
605
+ 'name' => 'Caption icon color',
606
+ 'type' => 'color',
607
+ 'description' => 'Color of the icon in captions.',
608
+ 'default' => '#ffffff',
609
+ 'proCall' => false,
610
+ 'excludeFrom' => array(),
611
+ ) );
612
+ $this->addField( 'Captions', 'captionIconSize', array(
613
+ 'name' => 'Caption icon size',
614
+ 'type' => 'number',
615
+ 'description' => 'Size of the icon in captions.',
616
+ 'default' => 12,
617
+ 'min' => 10,
618
+ 'max' => 96,
619
+ 'mu' => 'px',
620
+ 'proCall' => false,
621
+ 'excludeFrom' => array(),
622
+ ) );
623
+ $this->addField( 'Captions', 'captionFontSize', array(
624
+ 'name' => 'Caption font size',
625
+ 'type' => 'number',
626
+ 'description' => 'Size of the font in captions.',
627
+ 'default' => 12,
628
+ 'min' => 10,
629
+ 'max' => 96,
630
+ 'mu' => 'px',
631
+ 'proCall' => false,
632
+ 'excludeFrom' => array(),
633
+ ) );
634
+ $this->addField( 'Captions', 'captionEasing', array(
635
+ 'name' => 'Caption effect easing',
636
+ 'type' => 'select',
637
+ 'description' => 'Easing function for the caption animation, works better with sliding animations.',
638
+ 'values' => array(
639
+ 'Easing' => array(
640
+ 'ease|Ease',
641
+ 'linear|Linear|disabled',
642
+ 'ease-in|Ease in|disabled',
643
+ 'ease-out|Ease out|disabled',
644
+ 'ease-in-out|Ease in and out|disabled'
645
+ ),
646
+ ),
647
+ 'proCall' => false,
648
+ 'excludeFrom' => array(),
649
+ ) );
650
+ $this->addField( 'Captions', 'captionFrame', array(
651
+ 'name' => 'Caption frame',
652
+ 'type' => 'toggle',
653
+ 'description' => 'Add a frame around the caption',
654
+ 'default' => 'F',
655
+ 'proCall' => false,
656
+ 'excludeFrom' => array(),
657
+ ) );
658
+ $this->addField( 'Captions', 'captionFrameColor', array(
659
+ 'name' => 'Caption frame color',
660
+ 'type' => 'color',
661
+ 'description' => 'Color of the frame around the caption',
662
+ 'default' => '#ffffff',
663
+ 'proCall' => false,
664
+ 'excludeFrom' => array(),
665
+ ) );
666
+ $this->addField( 'Captions', 'captionColor', array(
667
+ 'name' => 'Caption color',
668
+ 'type' => 'color',
669
+ 'description' => 'Text color of the captions.',
670
+ 'default' => '#ffffff',
671
+ 'proCall' => false,
672
+ 'excludeFrom' => array(),
673
+ ) );
674
+ $this->addField( 'Captions', 'captionEffectDuration', array(
675
+ 'name' => 'Caption effect duration',
676
+ 'type' => 'text',
677
+ 'description' => 'Duration of the caption animation.',
678
+ 'default' => 250,
679
+ 'mu' => 'ms',
680
+ 'min' => 0,
681
+ 'max' => 1000,
682
+ 'proCall' => false,
683
+ 'excludeFrom' => array(),
684
+ ) );
685
+ $this->addField( 'Captions', 'captionBackgroundColor', array(
686
+ 'name' => 'Caption background color',
687
+ 'type' => 'color',
688
+ 'description' => 'Caption background color',
689
+ 'default' => '#000000',
690
+ 'proCall' => false,
691
+ 'excludeFrom' => array(),
692
+ ) );
693
+ $this->addField( 'Captions', 'captionOpacity', array(
694
+ 'name' => 'Caption opacity',
695
+ 'type' => 'text',
696
+ 'description' => 'Opacity of the caption, 0% means \'invisible\' while 100% is a plain color without opacity.',
697
+ 'default' => 80,
698
+ 'min' => 0,
699
+ 'max' => 100,
700
+ 'mu' => '%',
701
+ 'proCall' => false,
702
+ 'excludeFrom' => array(),
703
+ ) );
704
+ $this->addField( 'Captions', 'wp_field_caption', array(
705
+ 'name' => 'WordPress caption field',
706
+ 'type' => 'select',
707
+ 'description' => 'WordPress field used for captions. <strong>This field is used ONLY when images are added to the gallery, </strong> however, if you want to ignore captions just set it to \'<i>Don\'t use captions</i>\'.',
708
+ 'values' => array(
709
+ 'Field' => array(
710
+ 'none|Don\'t use captions',
711
+ 'title|Title',
712
+ 'caption|Caption',
713
+ 'description|Description'
714
+ ),
715
+ ),
716
+ 'proCall' => false,
717
+ 'excludeFrom' => array( 'shortcode' ),
718
+ ) );
719
+ $this->addField( 'Captions', 'wp_field_title', array(
720
+ 'name' => 'WordPress title field',
721
+ 'type' => 'select',
722
+ 'description' => 'WordPress field used for titles. <strong>This field is used ONLY when images are added to the gallery, </strong> however, if you want to ignore titles just set it to \'<i>Don\'t use titles</i>\'.',
723
+ 'values' => array(
724
+ 'Field' => array( 'none|Don\'t use titles', 'title|Title', 'description|Description' ),
725
+ ),
726
+ 'proCall' => false,
727
+ 'excludeFrom' => array( 'shortcode' ),
728
+ ) );
729
+ $this->addField( 'Captions', 'recentPostsCaption', array(
730
+ 'name' => 'Recent posts caption',
731
+ 'type' => 'select',
732
+ 'description' => 'Field of the post used for captions when using "Recent posts" as source.',
733
+ 'values' => array(
734
+ 'Field' => array(
735
+ 'none|Don\'t use captions',
736
+ 'title|Title',
737
+ 'excerpt|Excerpt',
738
+ 'auto-excerpt|Auto excerpt'
739
+ ),
740
+ ),
741
+ 'proCall' => false,
742
+ 'excludeFrom' => array( 'shortcode' ),
743
+ ) );
744
+ $this->addField( 'Captions', 'recentPostsCaptionAutoExcerptLength', array(
745
+ 'name' => 'Max number of words for \'Auto excerpt\'',
746
+ 'type' => 'text',
747
+ 'description' => 'Define the max number of words of the caption when <i>Recent posts caption</i> is set to <i>Auto excerpt</i>.',
748
+ 'default' => '20',
749
+ 'proCall' => false,
750
+ 'excludeFrom' => array(),
751
+ ) );
752
+ $this->addField( 'Captions', 'captionVerticalAlignment', array(
753
+ 'name' => 'Caption Vertical Alignment',
754
+ 'type' => 'select',
755
+ 'description' => 'Choose the vertical alignment of the caption',
756
+ 'values' => array(
757
+ 'Caption vertical alignment' => array( 'top|Top', 'middle|Middle', 'bottom|Bottom' ),
758
+ ),
759
+ 'proCall' => false,
760
+ 'excludeFrom' => array(),
761
+ ) );
762
+ $this->addField( 'Captions', 'captionHorizontalAlignment', array(
763
+ 'name' => 'Caption Horizontal Alignment',
764
+ 'type' => 'select',
765
+ 'description' => 'Choose the horizontal alignment of the caption',
766
+ 'values' => array(
767
+ 'Caption horizontal alignment' => array( 'left|Left', 'center|Center', 'right|Right' ),
768
+ ),
769
+ 'proCall' => false,
770
+ 'excludeFrom' => array(),
771
+ ) );
772
+ $this->addField( 'Captions', 'titleFontSize', array(
773
+ 'name' => 'Title font size',
774
+ 'type' => 'number',
775
+ 'description' => 'Size of the font in captions.',
776
+ 'min' => 10,
777
+ 'max' => 96,
778
+ 'mu' => 'px',
779
+ 'proCall' => false,
780
+ 'excludeFrom' => array(),
781
+ ) );
782
+ $this->addField( 'Hover effects', 'hoverZoom', array(
783
+ 'name' => 'Zoom',
784
+ 'type' => FinalTiles_gallery::getFieldType( 'hoverZoom' ),
785
+ 'description' => 'Scale value.',
786
+ 'default' => 100,
787
+ 'min' => 0,
788
+ 'max' => 600,
789
+ 'mu' => '%',
790
+ 'proCall' => false,
791
+ 'excludeFrom' => array(),
792
+ ) );
793
+ $this->addField( 'Hover effects', 'hoverRotation', array(
794
+ 'name' => 'Rotation',
795
+ 'type' => FinalTiles_gallery::getFieldType( 'hoverRotation' ),
796
+ 'description' => 'Rotation value in degrees.',
797
+ 'min' => 0,
798
+ 'max' => 360,
799
+ 'mu' => 'deg',
800
+ 'default' => 0,
801
+ 'proCall' => false,
802
+ 'excludeFrom' => array(),
803
+ ) );
804
+ $this->addField( 'Hover effects', 'hoverDuration', array(
805
+ 'name' => 'Duration',
806
+ 'description' => '',
807
+ 'type' => FinalTiles_gallery::getFieldType( 'hoverDuration' ),
808
+ 'min' => 10,
809
+ 'max' => 60000,
810
+ 'mu' => 'ms',
811
+ 'default' => 500,
812
+ 'proCall' => false,
813
+ 'excludeFrom' => array(),
814
+ ) );
815
+ $this->addField( 'Hover effects', 'hoverIconRotation', array(
816
+ 'name' => 'Rotate icon',
817
+ 'type' => 'toggle',
818
+ 'default' => 'F',
819
+ 'description' => 'Enable rotation of the icon.',
820
+ 'proCall' => false,
821
+ 'excludeFrom' => array(),
822
+ ) );
823
+ $this->addField( 'Image loaded effects', 'loadedDuration', array(
824
+ 'name' => 'Duration',
825
+ 'description' => '',
826
+ 'type' => 'slider',
827
+ 'min' => 10,
828
+ 'max' => 1000,
829
+ 'mu' => 'ms',
830
+ 'default' => 500,
831
+ 'proCall' => false,
832
+ 'excludeFrom' => array(),
833
+ ) );
834
+ $this->addField( 'Image loaded effects', 'loadedEasing', array(
835
+ 'name' => 'Easing curve',
836
+ 'type' => 'select',
837
+ 'description' => 'Choose the easing curve for the loading effect animation',
838
+ 'values' => array(
839
+ 'Easing curve' => array(
840
+ 'linear|Linear',
841
+ 'ease-in|Ease in',
842
+ 'ease-out|Ease out',
843
+ 'ease-in-out|Ease in and out',
844
+ 'ease-out-back|Ease out back',
845
+ 'ease-in-out-back|Ease in and out back',
846
+ 'ease-out-back-accent|Ease out back (accent)',
847
+ 'elastic-out|Elastic out'
848
+ ),
849
+ ),
850
+ 'proCall' => false,
851
+ 'excludeFrom' => array(),
852
+ ) );
853
+ $this->addField( 'Image loaded effects', 'loadedScaleY', array(
854
+ 'name' => 'Vertical scaling',
855
+ 'description' => '',
856
+ 'type' => 'slider',
857
+ 'min' => 1,
858
+ 'max' => 300,
859
+ 'mu' => '%',
860
+ 'default' => 100,
861
+ 'proCall' => false,
862
+ 'excludeFrom' => array(),
863
+ ) );
864
+ $this->addField( 'Image loaded effects', 'loadedScaleX', array(
865
+ 'name' => 'Horizontal scaling',
866
+ 'description' => '',
867
+ 'type' => 'slider',
868
+ 'min' => 1,
869
+ 'max' => 300,
870
+ 'mu' => '%',
871
+ 'default' => 100,
872
+ 'proCall' => false,
873
+ 'excludeFrom' => array(),
874
+ ) );
875
+ $this->addField( 'Image loaded effects', 'loadedRotateY', array(
876
+ 'name' => 'Vertical rotation',
877
+ 'description' => '',
878
+ 'type' => 'slider',
879
+ 'min' => -180,
880
+ 'max' => 180,
881
+ 'default' => 0,
882
+ 'mu' => 'deg',
883
+ 'proCall' => false,
884
+ 'excludeFrom' => array(),
885
+ ) );
886
+ $this->addField( 'Image loaded effects', 'loadedRotateX', array(
887
+ 'name' => 'Horizontal rotation',
888
+ 'description' => '',
889
+ 'type' => 'slider',
890
+ 'min' => -180,
891
+ 'max' => 180,
892
+ 'default' => 0,
893
+ 'mu' => 'deg',
894
+ 'proCall' => false,
895
+ 'excludeFrom' => array(),
896
+ ) );
897
+ $this->addField( 'Image loaded effects', 'loadedHSlide', array(
898
+ 'name' => 'Horizontal slide',
899
+ 'description' => '',
900
+ 'type' => 'slider',
901
+ 'min' => -1000,
902
+ 'max' => 1000,
903
+ 'mu' => 'px',
904
+ 'default' => 0,
905
+ 'proCall' => false,
906
+ 'excludeFrom' => array(),
907
+ ) );
908
+ $this->addField( 'Image loaded effects', 'loadedVSlide', array(
909
+ 'name' => 'Vertical slide',
910
+ 'description' => '',
911
+ 'type' => 'slider',
912
+ 'min' => -1000,
913
+ 'max' => 1000,
914
+ 'mu' => 'px',
915
+ 'default' => 0,
916
+ 'proCall' => false,
917
+ 'excludeFrom' => array(),
918
+ ) );
919
+ $this->addField( 'Style', 'borderSize', array(
920
+ 'name' => 'Border size',
921
+ 'type' => 'number',
922
+ 'description' => 'Size of the border of each image.',
923
+ 'default' => 0,
924
+ 'min' => 0,
925
+ 'max' => 10,
926
+ 'mu' => 'px',
927
+ 'proCall' => false,
928
+ 'excludeFrom' => array(),
929
+ ) );
930
+ $this->addField( 'Style', 'borderRadius', array(
931
+ 'name' => 'Border radius',
932
+ 'type' => 'number',
933
+ 'description' => 'Border radius of the images.',
934
+ 'default' => 0,
935
+ 'min' => 0,
936
+ 'max' => 100,
937
+ 'mu' => 'px',
938
+ 'proCall' => false,
939
+ 'excludeFrom' => array(),
940
+ ) );
941
+ $this->addField( 'Style', 'borderColor', array(
942
+ 'name' => 'Border color',
943
+ 'type' => 'color',
944
+ 'description' => 'Color of the border when size is greater than 0.',
945
+ 'default' => '#000000',
946
+ 'proCall' => false,
947
+ 'excludeFrom' => array(),
948
+ ) );
949
+ $this->addField( 'Style', 'loadingBarColor', array(
950
+ 'name' => 'Loading Bar color',
951
+ 'type' => 'color',
952
+ 'description' => 'Color of the loading bar',
953
+ 'default' => '#000000',
954
+ 'proCall' => false,
955
+ 'excludeFrom' => array(),
956
+ ) );
957
+ $this->addField( 'Style', 'loadingBarBackgroundColor', array(
958
+ 'name' => 'Loading Bar background color',
959
+ 'type' => 'color',
960
+ 'description' => 'Background color of the loading bar',
961
+ 'default' => '#cccccc',
962
+ 'proCall' => false,
963
+ 'excludeFrom' => array(),
964
+ ) );
965
+ $this->addField( 'Style', 'shadowSize', array(
966
+ 'name' => 'Shadow size',
967
+ 'type' => 'number',
968
+ 'description' => 'Shadow size of the images.',
969
+ 'default' => 0,
970
+ 'min' => 0,
971
+ 'max' => 20,
972
+ 'mu' => 'px',
973
+ 'proCall' => false,
974
+ 'excludeFrom' => array(),
975
+ ) );
976
+ $this->addField( 'Style', 'shadowColor', array(
977
+ 'name' => 'Shadow color',
978
+ 'type' => 'color',
979
+ 'description' => 'Color of the shadow when size is greater than 0.',
980
+ 'default' => '#000000',
981
+ 'proCall' => false,
982
+ 'excludeFrom' => array(),
983
+ ) );
984
+ $this->addField( 'Style', 'backgroundColor', array(
985
+ 'name' => 'Tile background color',
986
+ 'type' => 'color',
987
+ 'description' => 'Background color of tiles',
988
+ 'default' => '#fafafa',
989
+ 'proCall' => false,
990
+ 'excludeFrom' => array(),
991
+ ) );
992
+ $this->addField( 'Customizations', 'aClass', array(
993
+ 'name' => 'Additional CSS class on A tag',
994
+ 'type' => 'text',
995
+ 'description' => 'Use this field if you need to add additional CSS classes to the link that contains the image.',
996
+ 'default' => '',
997
+ 'proCall' => false,
998
+ 'excludeFrom' => array(),
999
+ ) );
1000
+ $this->addField( 'Customizations', 'rel', array(
1001
+ 'name' => 'Value of \'rel\' attribute on the link that contains the image.',
1002
+ 'type' => 'text',
1003
+ 'description' => 'Use this field if you need to add additional CSS classes to the link that contains the image. This is useful mostly to integrate the gallery with other lightbox plugins.',
1004
+ 'default' => '',
1005
+ 'proCall' => false,
1006
+ 'excludeFrom' => array(),
1007
+ ) );
1008
+ $this->addField( 'Customizations', 'beforeGalleryText', array(
1009
+ 'name' => 'Text before gallery',
1010
+ 'type' => 'textarea',
1011
+ 'description' => 'Use this field to add text/html to be placed just before your gallery.',
1012
+ 'proCall' => false,
1013
+ 'excludeFrom' => array( 'shortcode' ),
1014
+ ) );
1015
+ $this->addField( 'Customizations', 'afterGalleryText', array(
1016
+ 'name' => 'Text after gallery',
1017
+ 'type' => 'textarea',
1018
+ 'description' => 'Use this field to add text/html to be placed just after your gallery.',
1019
+ 'proCall' => false,
1020
+ 'excludeFrom' => array( 'shortcode' ),
1021
+ ) );
1022
+ $this->addField( 'Customizations', 'style', array(
1023
+ 'name' => 'Custom CSS',
1024
+ 'type' => 'textarea',
1025
+ 'description' => '<strong>Write just the code without using the &lt;style&gt; tag.</strong><br>List of useful selectors:<br>
1026
+ <br>
1027
+ <ul>
1028
+ <li>
1029
+ <em>.final-tiles-gallery</em> : gallery container;
1030
+ </li>
1031
+ <li>
1032
+ <em>.final-tiles-gallery .tile-inner</em> : tile content;
1033
+ </li>
1034
+ <li>
1035
+ <em>.final-tiles-gallery .tile-inner .item</em> : image of the tile;
1036
+ </li>
1037
+ <li>
1038
+ <em>.final-tiles-gallery .tile-inner .caption</em> : caption of the tile;
1039
+ </li>
1040
+ <li>
1041
+ <em>.final-tiles-gallery .ftg-filters</em> : filters container
1042
+ </li>
1043
+ <li>
1044
+ <em>.final-tiles-gallery .ftg-filters a</em> : filter
1045
+ </li>
1046
+ <li>
1047
+ <em>.final-tiles-gallery .ftg-filters a.selected</em> : selected filter
1048
+ </li>
1049
+ </ul>',
1050
+ 'proCall' => false,
1051
+ 'excludeFrom' => array( 'shortcode' ),
1052
+ ) );
1053
+ $this->addField( 'Customizations', 'script', array(
1054
+ 'name' => 'Custom scripts',
1055
+ 'type' => 'textarea',
1056
+ 'description' => 'This script will be called after the gallery initialization. Useful for custom lightboxes.
1057
+ <br />
1058
+ <br />
1059
+ <strong>Write just the code without using the &lt;script&gt;&lt;/script&gt; tags</strong>',
1060
+ 'proCall' => false,
1061
+ 'excludeFrom' => array( 'shortcode' ),
1062
+ ) );
1063
+ $this->addField( 'Customizations', 'delay', array(
1064
+ 'name' => 'Delay',
1065
+ 'type' => 'text',
1066
+ 'description' => 'Delay (in milliseconds) before firing the gallery. Sometimes it\'s needed to avoid conflicts with other plugins.',
1067
+ 'min' => 0,
1068
+ 'max' => 5000,
1069
+ 'mu' => 'ms',
1070
+ 'default' => 0,
1071
+ 'proCall' => false,
1072
+ 'excludeFrom' => array(),
1073
+ ) );
1074
+ $this->addField( 'Customizations', 'support', array(
1075
+ 'name' => 'Show developer link',
1076
+ 'type' => 'toggle',
1077
+ 'description' => 'I want to support this plugin, show the developer link!',
1078
+ 'default' => 'F',
1079
+ 'proCall' => false,
1080
+ 'excludeFrom' => array(),
1081
+ 'proCall' => false,
1082
+ 'excludeFrom' => array(),
1083
+ ) );
1084
+ $this->addField( 'Customizations', 'supportText', array(
1085
+ 'name' => 'Developer link text',
1086
+ 'type' => 'text',
1087
+ 'description' => 'Text for the developer link',
1088
+ 'default' => 'powered by Final Tiles Grid Gallery',
1089
+ 'proCall' => false,
1090
+ 'excludeFrom' => array(),
1091
+ ) );
1092
+ $this->addField( 'Customizations', 'envatoReferral', array(
1093
+ 'name' => 'Envato username for referral',
1094
+ 'type' => 'text',
1095
+ 'description' => 'Enter your Envato username to earn money! Receive 30% of the first purchase or deposit of each referred user. You do not need to activate anything else, you are automatically eligible.',
1096
+ 'default' => 'GreenTreeLabs',
1097
+ 'proCall' => false,
1098
+ 'excludeFrom' => array(),
1099
+ ) );
admin/include/image-list.php CHANGED
@@ -7,7 +7,7 @@ if(isset($gallery))
7
 
8
  ?>
9
  <?php foreach($imageResults as $image) {
10
- $sizes = FinalTiles_GalleryLite::get_image_size_links($image->imageId);
11
  $thumb = "";
12
  if($image->type == 'image')
13
  $thumb = array_key_exists("150x150", $sizes) ? $sizes["150x150"] : $image->imagePath;
7
 
8
  ?>
9
  <?php foreach($imageResults as $image) {
10
+ $sizes = FinalTiles_Gallery::get_image_size_links($image->imageId);
11
  $thumb = "";
12
  if($image->type == 'image')
13
  $thumb = array_key_exists("150x150", $sizes) ? $sizes["150x150"] : $image->imagePath;
admin/overview.php CHANGED
@@ -11,14 +11,14 @@
11
  $galleries = $this->FinalTilesdb->getGalleries();
12
  ?>
13
 
14
- <div class="bd">
15
  <?php if(count($galleries) == 0) : ?>
16
  <div class="row ">
17
  <div class="col s12">
18
  <div class="card-panel light-green lighten-4">
19
  <h5 class="cyan-text text-darken-3"><?php _e('Welcome to Final Tiles Grid Gallery!','final-tiles-gallery')?></h5>
20
  <p>
21
- <?php _e('Create your first awesome gallery, click','final-tiles-gallery')?> <a href="?page=ftg-lite-add-gallery"><?php _e('here','final-tiles-gallery')?></a>.
22
  </p>
23
  </div>
24
  </div>
@@ -56,7 +56,7 @@
56
  </div>
57
  <?php endif ?>
58
  <div class="fixed-action-btn" style="bottom: 15px; right: 24px;">
59
- <a href="?page=ftg-lite-add-gallery" class="btn-floating btn-large red">
60
  <i class="large fa fa-plus"></i>
61
  </a>
62
  </div>
11
  $galleries = $this->FinalTilesdb->getGalleries();
12
  ?>
13
 
14
+ <div class="bd">
15
  <?php if(count($galleries) == 0) : ?>
16
  <div class="row ">
17
  <div class="col s12">
18
  <div class="card-panel light-green lighten-4">
19
  <h5 class="cyan-text text-darken-3"><?php _e('Welcome to Final Tiles Grid Gallery!','final-tiles-gallery')?></h5>
20
  <p>
21
+ <?php _e('Create your first awesome gallery, click','final-tiles-gallery')?> <a href="?page=ftg-add-gallery"><?php _e('here','final-tiles-gallery')?></a>.
22
  </p>
23
  </div>
24
  </div>
56
  </div>
57
  <?php endif ?>
58
  <div class="fixed-action-btn" style="bottom: 15px; right: 24px;">
59
+ <a href="?page=ftg-add-gallery" class="btn-floating btn-large red">
60
  <i class="large fa fa-plus"></i>
61
  </a>
62
  </div>
admin/scripts/{final-tiles-grid-gallery-lite-admin.js → final-tiles-gallery-admin.js} RENAMED
@@ -147,9 +147,88 @@ var FTG = function($) {
147
  }
148
  });
149
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
  init_gallery: function() {
151
 
152
- var source = $('[name=ftg_source').val();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  },
154
  refresh_woocommerce: function() {
155
  FTG.show_loading();
@@ -215,6 +294,8 @@ var FTG = function($) {
215
  // !gallery save
216
  var data = {};
217
  data.action = 'save_gallery';
 
 
218
 
219
  $(".form-fields").find("input[type=text], input[type=range], select, input:checked, input[type=hidden], textarea").each(function() {
220
  var name = $(this).attr("name");
@@ -372,6 +453,13 @@ var FTG = function($) {
372
  $("body").on("keyup", ".filters .f", function() {
373
  $(this).siblings("input").val(this.value);
374
  });
 
 
 
 
 
 
 
375
 
376
  $('.import-export a').click(function() {
377
 
@@ -419,6 +507,7 @@ var FTG = function($) {
419
  });
420
  }
421
  });
 
422
 
423
  $("[name=ftg_layout]").change(function() {
424
 
@@ -453,16 +542,9 @@ var FTG = function($) {
453
  })
454
  });
455
 
456
- $('[name="ftg_lightbox"]').change(function () {
457
- if($(this).val() == "everlightbox")
458
- $(".ftg-everlightbox-settings").show();
459
- else
460
- $(".ftg-everlightbox-settings").hide();
461
- }).change();
462
-
463
  $("#image-list").on("mouseenter", ".item .filters li", function() {
464
  $(this).css('cursor', 'pointer');
465
- });
466
 
467
  $("#image-list").on("click", ".item .filters li", function() {
468
  var filter = $(this).html().trim();
@@ -597,7 +679,26 @@ var FTG = function($) {
597
 
598
  if (source == 'posts') {
599
  panel.find("[name=link], textarea").hide();
600
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
601
 
602
  var link = $item.find("[name=link]").val();
603
 
@@ -616,7 +717,13 @@ var FTG = function($) {
616
  if ($(this).attr("name"))
617
  data[$(this).attr("name")] = $(this).val();
618
  });
619
-
 
 
 
 
 
 
620
 
621
  $("#image-panel .close").trigger("click");
622
  FTG.show_loading();
@@ -696,6 +803,12 @@ var FTG = function($) {
696
  $(this).siblings("[name=url]").val("").get(0).disabled = true;
697
  }
698
  });
 
 
 
 
 
 
699
 
700
  $(".bulk a").click(function(e) {
701
  e.preventDefault();
@@ -706,14 +819,17 @@ var FTG = function($) {
706
  case "select":
707
  $("#images .item").addClass("selected");
708
  $("#images .item .checkbox").addClass("checked");
 
709
  break;
710
  case "deselect":
711
  $("#images .item").removeClass("selected");
712
  $("#images .item .checkbox").removeClass("checked");
 
713
  break;
714
  case "toggle":
715
  $("#images .item").toggleClass("selected");
716
  $("#images .item .checkbox").toggleClass("checked");
 
717
  break;
718
  case "show-hide":
719
  var selected = [];
@@ -777,7 +893,12 @@ var FTG = function($) {
777
 
778
  $(".proceed", $bulk).unbind("click").click(function(e) {
779
  e.preventDefault();
780
-
 
 
 
 
 
781
  $(".panel", $bulk).slideUp();
782
 
783
  var data = {
@@ -796,7 +917,63 @@ var FTG = function($) {
796
 
797
  $(".panel", $bulk).slideDown();
798
  }
799
- break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
800
  case "remove":
801
  $(".panel", $bulk).hide();
802
  $(".panel strong", $bulk).text("");
@@ -852,7 +1029,88 @@ var FTG = function($) {
852
  e.preventDefault();
853
  $(this).parents(".field:first").find(".help").show();
854
  });
855
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
856
  $(".open-media-panel").on("click", function(e) {
857
  e.preventDefault();
858
  var currentImageSize = $(".current-image-size").val();
@@ -1122,7 +1380,19 @@ var FTGWizard = function($) {
1122
  }
1123
  }(jQuery);
1124
  jQuery(function() {
1125
- jQuery(".pickColor").wpColorPicker();
 
 
 
 
 
 
 
 
 
 
 
 
1126
  FTG.init();
1127
  FTGWizard.init();
1128
  });
147
  }
148
  });
149
  },
150
+ update_filters: function() {
151
+ var ff = [];
152
+ $(".gallery-filters .f").each(function() {
153
+ var val = $.trim($(this).val());
154
+ if (val.length > 0 && $.inArray(val, ff) < 0) {
155
+ ff.push(val);
156
+ }
157
+ });
158
+ $(".gallery-filters [name=ftg_filters]").val(ff.join('|'));
159
+
160
+
161
+ },
162
+ update_custom_isf: function() {
163
+ var isf = [];
164
+ $(".custom_isf tbody tr").each(function(i, o) {
165
+ var res = $.trim($(o).find("input.res").val());
166
+ var size = $.trim($(o).find("input.size").val());
167
+
168
+ if (res && size) {
169
+ isf.push(res + "," + size);
170
+ }
171
+ });
172
+ $("[name=ftg_imageSizeFactorCustom]").val(isf.join("|"));
173
+ },
174
+ add_filter: function(value) {
175
+ var defFilter = $('[name="filter_def"]').val();
176
+ var checked = value == defFilter ? "checked" : "";
177
+ if (!value)
178
+ value = "";
179
+
180
+ var row = $("<p style='display:none'><a class='btn-floating waves-effect red' href='#'><i class='fa fa-times'></i></a> <input class='f' type='text' /> <input type='radio' " + checked + " name='ftg_filterDef' value='" + value + "'> Selected</p>");
181
+ if (value)
182
+ row.find(".f").val(value);
183
+
184
+ $(".filters .text").append(row);
185
+ row.slideDown();
186
+ row.find("a").click(function(e) {
187
+ e.preventDefault();
188
+ row.slideUp(function() {
189
+ $(this).remove();
190
+ });
191
+ FTG.update_filters();
192
+ });
193
+ },
194
+ add_isf: function(value) {
195
+ var $item = $("<tr><td class='del'></td><td></td><td></td></tr>");
196
+ $("td", $item).eq(0).append("<a class='btn-floating waves-effect red' href='#'><i class='fa fa-times'></i></a>");
197
+ $("td", $item).eq(1).append("<input type='text' class='res' placeholder='Resolution' />");
198
+ $("td", $item).eq(2).append("<input type='text' class='size' placeholder='Size factor' />");
199
+
200
+ $item.find("a").click(function(e) {
201
+ e.preventDefault();
202
+ $item.remove();
203
+ });
204
+ if (value) {
205
+ var data = value.split(',');
206
+ $item.find(".res").val(data[0]);
207
+ $item.find(".size").val(data[1]);
208
+ }
209
+ $(".custom_isf tbody").append($item);
210
+ },
211
  init_gallery: function() {
212
 
213
+ var source = $('[name=ftg_source').val();
214
+
215
+ var ff = $(".filters [name=ftg_filters]").val().split('|');
216
+
217
+ if (ff.length == 0 || ff[0] == "") {
218
+ FTG.add_filter();
219
+ } else {
220
+ for (var i = 0; i < ff.length; i++) {
221
+ if (ff[i].length > 0)
222
+ FTG.add_filter(ff[i]);
223
+ }
224
+ }
225
+
226
+ var isf = $("[name=ftg_imageSizeFactorCustom]").val().split('|');
227
+
228
+ for (var i = 0; i < isf.length; i++) {
229
+ if (isf[i].length)
230
+ FTG.add_isf(isf[i]);
231
+ }
232
  },
233
  refresh_woocommerce: function() {
234
  FTG.show_loading();
294
  // !gallery save
295
  var data = {};
296
  data.action = 'save_gallery';
297
+ FTG.update_filters();
298
+ FTG.update_custom_isf();
299
 
300
  $(".form-fields").find("input[type=text], input[type=range], select, input:checked, input[type=hidden], textarea").each(function() {
301
  var name = $(this).attr("name");
453
  $("body").on("keyup", ".filters .f", function() {
454
  $(this).siblings("input").val(this.value);
455
  });
456
+
457
+ $('[name="ftg_lightbox"]').change(function () {
458
+ if($(this).val() == "everlightbox")
459
+ $(".ftg-everlightbox-settings").show();
460
+ else
461
+ $(".ftg-everlightbox-settings").hide();
462
+ }).change();
463
 
464
  $('.import-export a').click(function() {
465
 
507
  });
508
  }
509
  });
510
+
511
 
512
  $("[name=ftg_layout]").change(function() {
513
 
542
  })
543
  });
544
 
 
 
 
 
 
 
 
545
  $("#image-list").on("mouseenter", ".item .filters li", function() {
546
  $(this).css('cursor', 'pointer');
547
+ })
548
 
549
  $("#image-list").on("click", ".item .filters li", function() {
550
  var filter = $(this).html().trim();
679
 
680
  if (source == 'posts') {
681
  panel.find("[name=link], textarea").hide();
682
+ }
683
+
684
+ var selFilters = $item.find("[name=filters]").val().split('|');
685
+ var filters = $("[name=ftg_filters]").val().split('|');
686
+
687
+ $(".filters", panel).empty();
688
+ for (var i = 0; i < filters.length; i++) {
689
+ if ($.trim(filters[i]).length > 0) {
690
+ var ft = $("<input type='checkbox' />");
691
+ ft.val($.trim(filters[i]));
692
+ ft.attr("id", "imgft" + i);
693
+ $(".filters", panel).append(ft);
694
+
695
+ ft.after("<label for='imgft" + i + "'>" + $.trim(filters[i]) + "</label>");
696
+
697
+ if ($.inArray(filters[i], selFilters) > -1)
698
+ ft.attr("checked", "checked");
699
+
700
+ }
701
+ }
702
 
703
  var link = $item.find("[name=link]").val();
704
 
717
  if ($(this).attr("name"))
718
  data[$(this).attr("name")] = $(this).val();
719
  });
720
+
721
+ var savFilters = [];
722
+
723
+ $(".filters input:checked", panel).each(function(i, o) {
724
+ savFilters.push($(o).val());
725
+ });
726
+ data.filters = savFilters.join("|");
727
 
728
  $("#image-panel .close").trigger("click");
729
  FTG.show_loading();
803
  $(this).siblings("[name=url]").val("").get(0).disabled = true;
804
  }
805
  });
806
+ $("body").on("change", ".presets", function () {
807
+ var idx = $(this).data("field-idx");
808
+ for(p in presets["preset_" + idx + "_" + $(this).val()]) {
809
+ $('[name="ftg_'+ p +'"]').val(presets["preset_" + idx + "_" + $(this).val()][p]).change();
810
+ }
811
+ });
812
 
813
  $(".bulk a").click(function(e) {
814
  e.preventDefault();
819
  case "select":
820
  $("#images .item").addClass("selected");
821
  $("#images .item .checkbox").addClass("checked");
822
+ $('.filter-select-control li').removeClass('selected');
823
  break;
824
  case "deselect":
825
  $("#images .item").removeClass("selected");
826
  $("#images .item .checkbox").removeClass("checked");
827
+ $('.filter-select-control li').removeClass('selected');
828
  break;
829
  case "toggle":
830
  $("#images .item").toggleClass("selected");
831
  $("#images .item .checkbox").toggleClass("checked");
832
+ $('.filter-select-control li').removeClass('selected');
833
  break;
834
  case "show-hide":
835
  var selected = [];
893
 
894
  $(".proceed", $bulk).unbind("click").click(function(e) {
895
  e.preventDefault();
896
+
897
+ var filters = [];
898
+ $(".panel :checked", $bulk).each(function(i, o) {
899
+ filters.push($(o).val());
900
+ });
901
+
902
  $(".panel", $bulk).slideUp();
903
 
904
  var data = {
917
 
918
  $(".panel", $bulk).slideDown();
919
  }
920
+ break;
921
+ case "filter":
922
+ var selected = [];
923
+ $("#images .item.selected").each(function(i, o) {
924
+ selected.push($(o).data("id"));
925
+ });
926
+ if (selected.length == 0) {
927
+ alert("No images selected");
928
+ } else {
929
+ $(".panel", $bulk).hide();
930
+ $(".panel strong", $bulk).text("");
931
+ $(".panel .text", $bulk).text("");
932
+ $(".panel .input", $bulk).hide();
933
+ $(".panel input", $bulk).val("");
934
+
935
+ var filters = $("[name=ftg_filters]").val().split('|');
936
+ for (var i = 0; i < filters.length; i++) {
937
+ if ($.trim(filters[i]).length > 0) {
938
+ var ft = $("<input id='bulkft" + i + "' type='checkbox' value='" + $.trim(filters[i]) + "' />");
939
+ $(".panel .text", $bulk).append(ft);
940
+ ft.after("<label for='bulkft" + i + "'>" + $.trim(filters[i]) + "</label>");
941
+ }
942
+ }
943
+
944
+ $(".cancel", $bulk).unbind("click").click(function(e) {
945
+ e.preventDefault();
946
+ $(".panel", $bulk).slideUp();
947
+ });
948
+
949
+ $(".proceed", $bulk).unbind("click").click(function(e) {
950
+ e.preventDefault();
951
+
952
+ var filters = [];
953
+ $(".panel :checked", $bulk).each(function(i, o) {
954
+ filters.push($(o).val());
955
+ });
956
+
957
+ $(".panel", $bulk).slideUp();
958
+
959
+ var data = {
960
+ action: 'assign_filters',
961
+ FinalTiles_gallery: $('#FinalTiles_gallery').val(),
962
+ filters: filters.join("|"),
963
+ id: selected.join(","),
964
+ source: $("[name=ftg_source]").val()
965
+ };
966
+
967
+ FTG.show_loading();
968
+ $.post(ajaxurl, data, function() {
969
+ FTG.hide_loading();
970
+ FTG.load_images();
971
+ });
972
+ });
973
+
974
+ $(".panel", $bulk).slideDown();
975
+ }
976
+ break;
977
  case "remove":
978
  $(".panel", $bulk).hide();
979
  $(".panel strong", $bulk).text("");
1029
  e.preventDefault();
1030
  $(this).parents(".field:first").find(".help").show();
1031
  });
1032
+ $("body #edit-gallery .js-update-shortcode").on("change keyup", "input, select", function(e) {
1033
+ e.preventDefault();
1034
+ var code = $(this).attr("name").substr(4);
1035
+ if($(this).attr("type") == "checkbox") {
1036
+ var val = this.checked ? "T" : "F";
1037
+
1038
+ } else {
1039
+ var val = $(this).val();
1040
+ }
1041
+ var shortcode = $("#shortcode-" + code + " input").val().split("=");
1042
+ $("#shortcode-" + code + " input").val(shortcode[0] + '="' + val + '"');
1043
+ });
1044
+ $("body").on("click", ".toggle-shortcode", function(e) {
1045
+ e.preventDefault();
1046
+ var code = $(this).data("code");
1047
+ $("#shortcode-" + code).toggleClass("visible");
1048
+ });
1049
+ $("body").on("click", "#video-panel-model a", function(e) {
1050
+ e.preventDefault();
1051
+ var filters = [];
1052
+ $('.video-filters input[type=checkbox]:checked').each(function() {
1053
+ filters.push($(this).val());
1054
+ })
1055
+ filters = filters.join('|');
1056
+ switch ($(this).data("action")) {
1057
+ case "edit":
1058
+ // !video save
1059
+ var $panel = $("#video-panel-model");
1060
+ var data = {
1061
+ action: 'save_video',
1062
+ embed: $("textarea", $panel).val(),
1063
+ galleryId: $("#gallery-id").val(),
1064
+ FinalTiles_gallery: $('#FinalTiles_gallery').val()
1065
+ };
1066
+
1067
+ FTG.show_loading();
1068
+
1069
+ $("input[type=hidden]", $panel).each(function() {
1070
+ if ($(this).attr("name"))
1071
+ data[$(this).attr("name")] = $(this).val();
1072
+ });
1073
+
1074
+ data['filters'] = filters;
1075
+ console.log(data);
1076
+
1077
+ data['step'] = $('#video-panel-action').val();
1078
+
1079
+ $.ajax({
1080
+ url: ajaxurl,
1081
+ data: data,
1082
+ dataType: "json",
1083
+ type: "post",
1084
+ error: function(a, b, c) {
1085
+ console.log(a, b, c);
1086
+ FTG.hide_loading();
1087
+ alert("error adding images");
1088
+ },
1089
+ success: function(r) {
1090
+ if (r.success) {
1091
+ FTG.hide_loading();
1092
+ FTG.load_images();
1093
+ }
1094
+ }
1095
+ });
1096
+ break;
1097
+ }
1098
+ });
1099
+ $(".open-add-video").on("click", function(e) {
1100
+ e.preventDefault();
1101
+ $('#video-panel-action').val('add');
1102
+ $(".save", $panel).text("Save");
1103
+ $("#video-panel-model textarea").val("");
1104
+ var $panel = $("#video-panel-model"); //.clone().attr("id", "video-panel");
1105
+
1106
+ if ($('#video-panel-action').val('add')) {
1107
+ $('.video-filters', $panel).empty();
1108
+ }
1109
+
1110
+ $panel.show().openModal();
1111
+
1112
+ });
1113
+
1114
  $(".open-media-panel").on("click", function(e) {
1115
  e.preventDefault();
1116
  var currentImageSize = $(".current-image-size").val();
1380
  }
1381
  }(jQuery);
1382
  jQuery(function() {
1383
+ var $ = jQuery;
1384
+ $(".pickColor").wpColorPicker({
1385
+ change: function (event, ui) {
1386
+ var element = event.target;
1387
+ var color = ui.color.toString();
1388
+
1389
+ if($(element).parents(".field").hasClass("js-update-shortcode")) {
1390
+ var $input = $(element).parents(".field").find(".shortcode-val");
1391
+ var shortcode = $input.val().split("=");
1392
+ $input.val(shortcode[0] + '="' + color + '"');
1393
+ }
1394
+ },
1395
+ });
1396
  FTG.init();
1397
  FTGWizard.init();
1398
  });
admin/support.php CHANGED
@@ -5,35 +5,28 @@
5
 
6
  <div class="container">
7
  <div class="row">
8
- <div class="section s12 m12 l12 col" id="support-page">
9
  <p>
10
- Collect the following informations before opening a new support thread:
 
 
 
11
  </p>
12
  <ul>
13
- <li><?php _e('URL of the page with the gallery;','final-tiles-gallery')?> </li>
14
  <li><?php _e('describe the problem you are experiencing;','final-tiles-gallery')?></li>
15
  <li><?php _e('browser and operating system used.','final-tiles-gallery')?></li>
16
  </ul>
17
  <p>
18
- <?php _e('Another great help from you would be doing a couple of tests, try these simple operations and let us know the results:','final-tiles-gallery')?>
19
  </p>
20
  <ul>
21
  <li><?php _e("Switch to the default WordPress theme and look if the problem is still there, if not we'll already know that the problem is related to your theme and we can be faster solving the issue;",'final-tiles-gallery')?></li>
22
  <li><?php _e('See if the problem is repeatable, also on another computers.','final-tiles-gallery')?></li>
23
  </ul>
24
- <p><strong><?php _e("The more complete these informations are, the faster we'll be our response",'final-tiles-gallery')?></strong> <?php _e("(aware out time zome, we're +1 GMT), thanks!",'final-tiles-gallery')?></p>
25
- <p>
26
- Write on our support <a href="https://wordpress.org/support/plugin/final-tiles-grid-gallery-lite" target="_bloank">forum</a>.<br>
27
- We'll try to give you an answer as soon as we can.
28
- </p>
29
- <p>
30
- If you're in a rush and need a priority and dedicated support then
31
- please consider <a href="http://1.envato.market/c/288541/275988/4415?u=https%3A%2F%2Fcodecanyon.net%2Fitem%2Ffinal-tiles-wordpress-gallery%2F5189351" target="_blank">buying a license</a>. That will also extend your plugin
32
- with a lot of new features.
33
- </p>
34
  <p class="buttons">
35
- <a class="waves-effect waves-light btn" href="https://wordpress.org/support/plugin/final-tiles-grid-gallery-lite" target="_blank"><i class="mdi-content-send right"></i> <?php _e('Go to support forum','final-tiles-gallery')?> </a>
36
- <a class="waves-effect waves-light btn" href="http://1.envato.market/c/288541/275988/4415?u=https%3A%2F%2Fcodecanyon.net%2Fitem%2Ffinal-tiles-wordpress-gallery%2F5189351" target="_blank"><i class="mdi-content-send right"></i> <?php _e('Buy dedicated support + unlock features','final-tiles-gallery')?> </a>
37
  </p>
38
  </div>
39
  </div>
5
 
6
  <div class="container">
7
  <div class="row">
8
+ <div class="section s12 m12 l12 col" id="support-page">
9
  <p>
10
+ <strong><?php _e('Having problems with the plugin? No panic, our support is quite fast and reliable!','final-tiles-gallery')?></strong>
11
+ </p>
12
+ <p>
13
+ <?php _e('To get a fast solution you should fill a support ticket on our platform, before that')?> <strong><?php _e('prepare these basic but important informations','final-tiles-gallery')?></strong>:
14
  </p>
15
  <ul>
16
+ <li><?php _e('URL of the page with the gallery;','final-tiles-gallery')?></li>
17
  <li><?php _e('describe the problem you are experiencing;','final-tiles-gallery')?></li>
18
  <li><?php _e('browser and operating system used.','final-tiles-gallery')?></li>
19
  </ul>
20
  <p>
21
+ <?php _e('Another great help from you would be doing a couple of tests, try these simple operations and let us know the results:','final-tiles-gallery')?>
22
  </p>
23
  <ul>
24
  <li><?php _e("Switch to the default WordPress theme and look if the problem is still there, if not we'll already know that the problem is related to your theme and we can be faster solving the issue;",'final-tiles-gallery')?></li>
25
  <li><?php _e('See if the problem is repeatable, also on another computers.','final-tiles-gallery')?></li>
26
  </ul>
27
+ <p><strong><?php _e("The more complete these informations are, the faster we'll be our response",'final-tiles-gallery')?></strong><?php _e('(time zone permitting), thanks!','final-tiles-gallery')?></p>
 
 
 
 
 
 
 
 
 
28
  <p class="buttons">
29
+ <a class="right waves-effect waves-light btn" href="http://greentreelabs.ticksy.com" target="_blank"><i class="mdi-content-send right"></i> <?php _e('Go to GreenTreeLabs support platform','final-tiles-gallery')?> </a>
 
30
  </p>
31
  </div>
32
  </div>
admin/tutorial/tutorial-add-image-size.png ADDED
Binary file
admin/tutorial/tutorial-add-image.png ADDED
Binary file
admin/tutorial/tutorial-add-page.jpg ADDED
Binary file
admin/tutorial/tutorial-add.png ADDED
Binary file
admin/tutorial/tutorial-dashboard.png ADDED
Binary file
admin/tutorial/tutorial-edit-list.jpg ADDED
Binary file
admin/tutorial/tutorial-image-added.jpg ADDED
Binary file
admin/tutorial/tutorial-image-edit.jpg ADDED
Binary file
admin/tutorial/tutorial-image-panel.JPG ADDED
Binary file
admin/tutorial/tutorial-images-tab.png ADDED
Binary file
admin/tutorial/tutorial-tabs.jpg ADDED
Binary file
admin/upgrade.php DELETED
@@ -1,4 +0,0 @@
1
- <p>Redirecting...</p>
2
- <script>
3
- location.href = "http://1.envato.market/c/288541/275988/4415?u=https%3A%2F%2Fcodecanyon.net%2Fitem%2Ffinal-tiles-wordpress-gallery%2F5189351";
4
- </script>
 
 
 
 
freemius/.codeclimate.yml DELETED
@@ -1,19 +0,0 @@
1
- engines:
2
- phpcodesniffer:
3
- enabled: true
4
- config:
5
- standard: "WordPress"
6
- checks:
7
- Squiz Commenting InlineComment InvalidEndChar:
8
- enabled: false
9
- Squiz Commenting InlineComment SpacingBefore:
10
- enabled: false
11
- Squiz Commenting InlineComment WrongStyle:
12
- enabled: false
13
- Generic Commenting DocComment MissingShort:
14
- enabled: false
15
- Generic WhiteSpace ScopeIndent IncorrectExact:
16
- enabled: false
17
- ratings:
18
- paths:
19
- - "**.php"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
freemius/.github/ISSUE_TEMPLATE.md DELETED
@@ -1,29 +0,0 @@
1
- **Actual Behavior**:
2
- - `What is the issue? (*)`
3
- - `What is the expected behavior?`
4
-
5
- **Versions**: (*)
6
- - `Freemius SDK Version:`
7
- - `WordPress Version:`
8
- - `PHP Version:`
9
-
10
- **Plugin / Theme**: (*)
11
- - `Name:`
12
- - `Slug:`
13
- - `Freemius ID:`
14
-
15
- **Additional Information**:
16
- - `Browser Type: (*)`
17
- - `Browser Version: (*)`
18
- - `OS: (*)`
19
- - `Stack Traces:`
20
-
21
- ----
22
- **Note:** `(*)` indicates required information. Without this information, your issue may be auto-closed.
23
-
24
- > You can find your Freemius SDK version at `/freemius/start.php`
25
-
26
- > You can find your Freemius product ID in the Freemius dashboard: `SETTINGS -> INTEGRATION`.
27
-
28
- > Do not modify the titles or questions. Simply add your responses to the ends of the questions.
29
- Add more lines if needed.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
freemius/.travis.yml DELETED
@@ -1,11 +0,0 @@
1
- sudo: false
2
-
3
- language: php
4
-
5
- php:
6
- - 5.3
7
- - 5.4
8
- - 5.5
9
- - 5.6
10
- - 7.0
11
- - hhvm
 
 
 
 
 
 
 
 
 
 
 
freemius/assets/css/admin/dialog-boxes.css CHANGED
@@ -1,2 +1,2 @@
1
- .fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal .fs-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}}
2
- .rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-right:7px;margin-left:0}a.show-license-resend-modal{margin-top:4px;display:inline-block}
1
+ .fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal.fs-success .fs-modal-header{border-bottom-color:#46b450}.fs-modal.fs-success .fs-modal-body{background-color:#f7fff7}.fs-modal.fs-warn .fs-modal-header{border-bottom-color:#ffb900}.fs-modal.fs-warn .fs-modal-body{background-color:#fff8e5}.fs-modal.fs-error .fs-modal-header{border-bottom-color:#dc3232}.fs-modal.fs-error .fs-modal-body{background-color:#ffeaea}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-header{border-bottom:#eeeeee solid 1px;background:#fbfbfb;padding:15px 20px;position:relative;margin-bottom:-10px}.fs-modal .fs-modal-header h4{margin:0;padding:0;text-transform:uppercase;font-size:1.2em;font-weight:bold;color:#cacaca;text-shadow:1px 1px 1px #fff;letter-spacing:0.6px;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{position:absolute;right:10px;top:12px;cursor:pointer;color:#bbb;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;padding:3px;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{color:#fff;background:#aaa}.fs-modal .fs-modal-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}}
2
+ .rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-right:7px;margin-left:0}a.show-license-resend-modal{margin-top:4px;display:inline-block}.fs-ajax-loader{position:relative;width:170px;height:20px;margin:auto}.fs-ajax-loader .fs-ajax-loader-bar{position:absolute;top:0;background-color:#0074a3;width:20px;height:20px;-webkit-animation-name:bounce_ajaxLoader;-moz-animation-name:bounce_ajaxLoader;-ms-animation-name:bounce_ajaxLoader;-o-animation-name:bounce_ajaxLoader;animation-name:bounce_ajaxLoader;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s;animation-duration:1.5s;animation-iteration-count:infinite;-o-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;-webkit-animation-direction:normal;-moz-animation-direction:normal;-ms-animation-direction:normal;-o-animation-direction:normal;animation-direction:normal;-moz-transform:0.3;-o-transform:0.3;-ms-transform:0.3;-webkit-transform:0.3;transform:0.3}.fs-ajax-loader .fs-ajax-loader-bar-1{left:0px;animation-delay:0.6s;-o-animation-delay:0.6s;-ms-animation-delay:0.6s;-webkit-animation-delay:0.6s;-moz-animation-delay:0.6s}.fs-ajax-loader .fs-ajax-loader-bar-2{left:19px;animation-delay:0.75s;-o-animation-delay:0.75s;-ms-animation-delay:0.75s;-webkit-animation-delay:0.75s;-moz-animation-delay:0.75s}.fs-ajax-loader .fs-ajax-loader-bar-3{left:38px;animation-delay:0.9s;-o-animation-delay:0.9s;-ms-animation-delay:0.9s;-webkit-animation-delay:0.9s;-moz-animation-delay:0.9s}.fs-ajax-loader .fs-ajax-loader-bar-4{left:57px;animation-delay:1.05s;-o-animation-delay:1.05s;-ms-animation-delay:1.05s;-webkit-animation-delay:1.05s;-moz-animation-delay:1.05s}.fs-ajax-loader .fs-ajax-loader-bar-5{left:76px;animation-delay:1.2s;-o-animation-delay:1.2s;-ms-animation-delay:1.2s;-webkit-animation-delay:1.2s;-moz-animation-delay:1.2s}.fs-ajax-loader .fs-ajax-loader-bar-6{left:95px;animation-delay:1.35s;-o-animation-delay:1.35s;-ms-animation-delay:1.35s;-webkit-animation-delay:1.35s;-moz-animation-delay:1.35s}.fs-ajax-loader .fs-ajax-loader-bar-7{left:114px;animation-delay:1.5s;-o-animation-delay:1.5s;-ms-animation-delay:1.5s;-webkit-animation-delay:1.5s;-moz-animation-delay:1.5s}.fs-ajax-loader .fs-ajax-loader-bar-8{left:133px;animation-delay:1.65s;-o-animation-delay:1.65s;-ms-animation-delay:1.65s;-webkit-animation-delay:1.65s;-moz-animation-delay:1.65s}@-moz-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-ms-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-o-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-webkit-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}.fs-modal-auto-install #request-filesystem-credentials-form h2,.fs-modal-auto-install #request-filesystem-credentials-form .request-filesystem-credentials-action-buttons{display:none}.fs-modal-auto-install #request-filesystem-credentials-form input[type=password],.fs-modal-auto-install #request-filesystem-credentials-form input[type=email],.fs-modal-auto-install #request-filesystem-credentials-form input[type=text]{-webkit-appearance:none;padding:10px 10px 5px 10px;width:300px;max-width:100%}.fs-modal-auto-install #request-filesystem-credentials-form>div,.fs-modal-auto-install #request-filesystem-credentials-form label,.fs-modal-auto-install #request-filesystem-credentials-form fieldset{width:300px;max-width:100%;margin:0 auto;display:block}
freemius/assets/img/final-tiles-grid-gallery-lite.jpg CHANGED
Binary file
freemius/assets/scss/_colors.scss CHANGED
@@ -20,9 +20,6 @@ $fs-logo-blue-color: #29abe1;
20
  $fs-logo-green-color: #71ae00;
21
  $fs-logo-magenta-color: #d3135a;
22
 
23
- $fs-notice-promotion-border-color: #00a0d2;
24
- $fs-notice-promotion-bkg: #f2fcff;
25
-
26
  // WordPress colors.
27
  $page-header-bkg: #333;
28
  $page-header-color: $fms-white;
@@ -30,6 +27,16 @@ $text-dark-color: #333;
30
  $text-light-color: #666;
31
  $text-lightest-color: #999;
32
 
 
 
 
 
 
 
 
 
 
 
33
  // WP Buttons.
34
  $button-primary-bkg: #6bc406;
35
  $button-primary-color: $fms-white;
20
  $fs-logo-green-color: #71ae00;
21
  $fs-logo-magenta-color: #d3135a;
22
 
 
 
 
23
  // WordPress colors.
24
  $page-header-bkg: #333;
25
  $page-header-color: $fms-white;
27
  $text-light-color: #666;
28
  $text-lightest-color: #999;
29
 
30
+ // Notices.
31
+ $wp-notice-success-color: #f7fff7;
32
+ $wp-notice-success-dark-color: #46b450;
33
+ $wp-notice-error-color: #ffeaea;
34
+ $wp-notice-error-dark-color: #dc3232;
35
+ $wp-notice-warn-color: #fff8e5;
36
+ $wp-notice-warn-dark-color: #ffb900;
37
+ $fs-notice-promotion-border-color: #00a0d2;
38
+ $fs-notice-promotion-bkg: #f2fcff;
39
+
40
  // WP Buttons.
41
  $button-primary-bkg: #6bc406;
42
  $button-primary-color: $fms-white;
freemius/assets/scss/_load.scss CHANGED
@@ -1,4 +1,4 @@
1
- @import 'mixins';
2
- @import "vars";
3
- @import "functions";
4
- @import "colors";
1
+ @import 'mixins';
2
+ @import "vars";
3
+ @import "functions";
4
+ @import "colors";
freemius/assets/scss/_mixins.scss CHANGED
@@ -78,13 +78,13 @@ $useIEFilters: 0;
78
  }
79
 
80
  // requires sass 3.2
81
- //@mixin keyframes {
82
- // @-moz-keyframes { @content; }
83
- // @-ms-keyframes { @content; }
84
- // @-o-keyframes { @content; }
85
- // @-webkit-keyframes { @content; }
86
- // @keyframes { @content; }
87
- //}
88
 
89
  @mixin linear-gradient($from, $to, $ie: $useIEFilters) {
90
  @if $ie != 1 { background-color: $to; }
@@ -192,6 +192,62 @@ $useIEFilters: 0;
192
  transition: $value;
193
  }
194
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
195
  // ==== /CSS3 SASS MIXINS ====
196
 
197
  @mixin opacity($opacity) {
78
  }
79
 
80
  // requires sass 3.2
81
+ @mixin keyframes($name){
82
+ @-moz-keyframes #{$name} { @content; }
83
+ @-ms-keyframes #{$name} { @content; }
84
+ @-o-keyframes #{$name} { @content; }
85
+ @-webkit-keyframes #{$name} { @content; }
86
+ @keyframes #{$name} { @content; }
87
+ }
88
 
89
  @mixin linear-gradient($from, $to, $ie: $useIEFilters) {
90
  @if $ie != 1 { background-color: $to; }
192
  transition: $value;
193
  }
194
 
195
+ @mixin animation($str) {
196
+ -webkit-animation: #{$str};
197
+ -moz-animation: #{$str};
198
+ -ms-animation: #{$str};
199
+ -o-animation: #{$str};
200
+ animation: #{$str};
201
+ }
202
+
203
+ @mixin animation-name($str) {
204
+ -webkit-animation-name: #{$str};
205
+ -moz-animation-name: #{$str};
206
+ -ms-animation-name: #{$str};
207
+ -o-animation-name: #{$str};
208
+ animation-name: #{$str};
209
+ }
210
+
211
+ @mixin animation-duration($str) {
212
+ -webkit-animation-duration: #{$str};
213
+ -moz-animation-duration: #{$str};
214
+ -ms-animation-duration: #{$str};
215
+ -o-animation-duration: #{$str};
216
+ animation-duration: #{$str};
217
+ }
218
+
219
+ @mixin animation-direction($str) {
220
+ -webkit-animation-direction: #{$str};
221
+ -moz-animation-direction: #{$str};
222
+ -ms-animation-direction: #{$str};
223
+ -o-animation-direction: #{$str};
224
+ animation-direction: #{$str};
225
+ }
226
+
227
+ @mixin animation-delay($str) {
228
+ animation-delay:#{$str};
229
+ -o-animation-delay:#{$str};
230
+ -ms-animation-delay:#{$str};
231
+ -webkit-animation-delay:#{$str};
232
+ -moz-animation-delay:#{$str};
233
+ }
234
+
235
+ @mixin animation-iteration-count($str) {
236
+ animation-iteration-count:#{$str};
237
+ -o-animation-iteration-count:#{$str};
238
+ -ms-animation-iteration-count:#{$str};
239
+ -webkit-animation-iteration-count:#{$str};
240
+ -moz-animation-iteration-count:#{$str};
241
+ }
242
+
243
+ @mixin animation-timing-function($str) {
244
+ -webkit-animation-timing-function: #{$str};
245
+ -moz-animation-timing-function: #{$str};
246
+ -ms-animation-timing-function: #{$str};
247
+ -o-animation-timing-function: #{$str};
248
+ animation-timing-function: #{$str};
249
+ }
250
+
251
  // ==== /CSS3 SASS MIXINS ====
252
 
253
  @mixin opacity($opacity) {
freemius/assets/scss/_start.scss CHANGED
@@ -1,4 +1,4 @@
1
- @import "vars";
2
- @import "colors";
3
- @import "mixins";
4
  @import "functions";
1
+ @import "vars";
2
+ @import "colors";
3
+ @import "mixins";
4
  @import "functions";
freemius/assets/scss/_vars.scss CHANGED
@@ -1,6 +1,6 @@
1
- $is_production: true;
2
-
3
- $img_common: if($is_production == true, '//img.freemius.com', 'http://img.freemius:8080');
4
-
5
- $layout_width: 960px;
6
  $admin_mobile_max_width: 782px;
1
+ $is_production: true;
2
+
3
+ $img_common: if($is_production == true, '//img.freemius.com', 'http://img.freemius:8080');
4
+
5
+ $layout_width: 960px;
6
  $admin_mobile_max_width: 782px;
freemius/assets/scss/admin/_ajax-loader.scss ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ $color: $wp-selected-color;
2
+ $bkg-color: #fff;
3
+ $size: 20;
4
+
5
+ .fs-ajax-loader
6
+ {
7
+ position: relative;
8
+ width: #{8*$size + 10}px;
9
+ height: #{$size}px;
10
+ margin: auto;
11
+
12
+ .fs-ajax-loader-bar
13
+ {
14
+ position: absolute;
15
+ top: 0;
16
+ background-color: $color;
17
+ width: #{$size}px;
18
+ height: #{$size}px;
19
+ @include animation-name(bounce_ajaxLoader);
20
+ @include animation-duration(1.5s);
21
+ @include animation-iteration-count(infinite);
22
+ @include animation-direction(normal);
23
+ @include transform(.3);
24
+ }
25
+
26
+ @for $i from 0 through 7
27
+ {
28
+ .fs-ajax-loader-bar-#{$i + 1}
29
+ {
30
+ left: #{$i*($size - 1)}px;
31
+ @include animation-delay(#{0.6 + $i*0.15}s);
32
+ }
33
+ }
34
+ }
35
+
36
+ @include keyframes(bounce_ajaxLoader)
37
+ {
38
+ 0%
39
+ {
40
+ @include transform(scale(1));
41
+ background-color: $color;
42
+ }
43
+
44
+ 100%
45
+ {
46
+ @include transform(scale(.3));
47
+ background-color: $bkg-color;
48
+ }
49
+ }
freemius/assets/scss/admin/_auto-install.scss ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .fs-modal-auto-install
2
+ {
3
+ $max-width: 300px;
4
+
5
+ #request-filesystem-credentials-form
6
+ {
7
+ h2,
8
+ .request-filesystem-credentials-action-buttons
9
+ {
10
+ display: none;
11
+ }
12
+
13
+ input[type=password],
14
+ input[type=email],
15
+ input[type=text]
16
+ {
17
+ -webkit-appearance: none;
18
+ padding: 10px 10px 5px 10px;
19
+ width: $max-width;
20
+ max-width: 100%;
21
+ }
22
+
23
+ > div,
24
+ label,
25
+ fieldset
26
+ {
27
+ width: $max-width;
28
+ max-width: 100%;
29
+ margin: 0 auto;
30
+ display: block;
31
+ }
32
+ }
33
+ }
freemius/assets/scss/admin/_modal-common.scss CHANGED
@@ -46,6 +46,37 @@
46
  }
47
  }
48
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  .fs-modal-body,
50
  .fs-modal-footer {
51
  border: 0;
46
  }
47
  }
48
 
49
+ &.fs-success {
50
+ .fs-modal-header {
51
+ border-bottom-color: $wp-notice-success-dark-color;
52
+ }
53
+
54
+ .fs-modal-body {
55
+ background-color: $wp-notice-success-color;
56
+ }
57
+ }
58
+
59
+ &.fs-warn {
60
+ .fs-modal-header {
61
+ border-bottom-color: $wp-notice-warn-dark-color;
62
+ }
63
+
64
+ .fs-modal-body {
65
+ background-color: $wp-notice-warn-color;
66
+ }
67
+ }
68
+
69
+ &.fs-error {
70
+ .fs-modal-header {
71
+ border-bottom-color: $wp-notice-error-dark-color;
72
+ }
73
+
74
+ .fs-modal-body {
75
+ background-color: $wp-notice-error-color;
76
+ }
77
+ }
78
+
79
+
80
  .fs-modal-body,
81
  .fs-modal-footer {
82
  border: 0;
freemius/assets/scss/admin/connect.scss CHANGED
@@ -1,471 +1,471 @@
1
- @import "../start";
2
-
3
- $form_width: 480px;
4
-
5
- #fs_connect
6
- {
7
- width: $form_width;
8
- @include box-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));
9
- margin: 20px 0;
10
-
11
- @media screen and (max-width: ($form_width - 1)) {
12
- @include box-shadow(none);
13
- width: auto;
14
- margin: 0 0 0 -10px;
15
- }
16
-
17
- .fs-content
18
- {
19
- background: #fff;
20
- padding: 15px 20px;
21
-
22
- .fs-error {
23
- background: snow;
24
- color: $fs-logo-magenta-color;
25
- border: 1px solid $fs-logo-magenta-color;
26
- @include box-shadow(0 1px 1px 0 rgba(0,0,0,.1));
27
- text-align: center;
28
- padding: 5px;
29
- margin-bottom: 10px;
30
- }
31
-
32
- p
33
- {
34
- margin: 0;
35
- padding: 0;
36
- font-size: 1.2em;
37
- }
38
- }
39
-
40
- .fs-license-key-container {
41
- position: relative;
42
- width: 280px;
43
- margin: 10px auto 0 auto;
44
-
45
- input {
46
- width: 100%;
47
- }
48
-
49
- .dashicons {
50
- position: absolute;
51
- top: 5px;
52
- right: 5px;
53
- }
54
- }
55
-
56
- .fs-actions
57
- {
58
- padding: 10px 20px;
59
- background: #C0C7CA;
60
-
61
- .button
62
- {
63
- padding: 0 10px 1px;
64
- line-height: 35px;
65
- height: 37px;
66
- font-size: 16px;
67
- margin-bottom: 0;
68
-
69
- .dashicons
70
- {
71
- font-size: 37px;
72
- margin-left: -8px;
73
- margin-right: 12px;
74
- }
75
-
76
- &.button-primary
77
- {
78
- padding-right: 15px;
79
- padding-left: 15px;
80
-
81
- &:after
82
- {
83
- content: ' \279C';
84
- }
85
-
86
- &.fs-loading
87
- {
88
- &:after
89
- {
90
- content: '';
91
- }
92
- }
93
- }
94
-
95
- &.button-secondary
96
- {
97
- float: right;
98
- }
99
- }
100
-
101
- // .fs-skip
102
- // {
103
- // line-height: 38px;
104
- // vertical-align: middle;
105
- // text-decoration: none;
106
- // margin-left: 10px;
107
- // }
108
- }
109
-
110
- &.fs-anonymous-disabled
111
- {
112
- .fs-actions
113
- {
114
- .button.button-primary
115
- {
116
- width: 100%;
117
- }
118
- }
119
- }
120
-
121
- .fs-permissions
122
- {
123
- padding: 10px 20px;
124
- background: #FEFEFE;
125
- // background: #F1F1F1;
126
- @include transition(background 0.5s ease);
127
-
128
- .fs-license-sync-disclaimer {
129
- text-align: center;
130
- margin-top: 0;
131
- }
132
-
133
- .fs-trigger
134
- {
135
- font-size: 0.9em;
136
- text-decoration: none;
137
- text-align: center;
138
- display: block;
139
- }
140
-
141
- ul
142
- {
143
- height: 0;
144
- overflow: hidden;
145
- margin: 0;
146
-
147
- li
148
- {
149
- margin-bottom: 12px;
150
-
151
- &:last-child
152
- {
153
- margin-bottom: 0;
154
- }
155
-
156
- i.dashicons
157
- {
158
- float: left;
159
- font-size: 40px;
160
- width: 40px;
161
- height: 40px;
162
- }
163
-
164
- div
165
- {
166
- margin-left: 55px;
167
-
168
- span
169
- {
170
- font-weight: bold;
171
- text-transform: uppercase;
172
- color: #23282d;
173
- }
174
-
175
- p
176
- {
177
- margin: 2px 0 0 0;
178
- }
179
- }
180
- }
181
- }
182
-
183
- &.fs-open
184
- {
185
- background: #fff;
186
-
187
- ul
188
- {
189
- height: auto;
190
- margin: 20px 20px 10px 20px;
191
- }
192
- }
193
-
194
- @media screen and (max-width: ($form_width - 1)) {
195
- background: #fff;
196
-
197
- .fs-trigger
198
- {
199
- display: none;
200
- }
201
-
202
- ul
203
- {
204
- height: auto;
205
- margin: 20px;
206
- }
207
- }
208
- }
209
-
210
- .fs-freemium-licensing {
211
- padding: 8px;
212
- // background: #0085BA;
213
- background: #777;
214
- color: #fff;
215
-
216
- p {
217
- text-align: center;
218
- display: block;
219
- margin: 0;
220
- padding: 0;
221
- }
222
-
223
- a {
224
- color: #C2EEFF;
225
- text-decoration: underline;
226
- }
227
- }
228
-
229
- $icon_size: 80px;
230
- $wp_logo_padding: $icon_size / 10;
231
- $icons_top: 10px;
232
-
233
- .fs-visual
234
- {
235
- padding: 12px;
236
- line-height: 0;
237
- background: #fafafa;
238
- height: $icon_size;
239
- position: relative;
240
-
241
- .fs-site-icon
242
- {
243
- position: absolute;
244
- left: 20px;
245
- top: $icons_top;
246
- }
247
-
248
- .fs-connect-logo
249
- {
250
- position: absolute;
251
- right: 20px;
252
- top: $icons_top;
253
- }
254
-
255
- .fs-plugin-icon
256
- {
257
- position: absolute;
258
- top: $icons_top;
259
- left: 50%;
260
- margin-left: - ($icon_size / 2);
261
- }
262
-
263
- .fs-plugin-icon,
264
- .fs-site-icon,
265
- img,
266
- object
267
- {
268
- width: $icon_size;
269
- height: $icon_size;
270
- }
271
-
272
- .dashicons-wordpress
273
- {
274
- font-size: $icon_size - ($wp_logo_padding * 2);
275
- background: $wordpress_color;
276
- color: #fff;
277
- width: $icon_size - ($wp_logo_padding * 2);
278
- height: $icon_size - ($wp_logo_padding * 2);
279
- padding: $wp_logo_padding;
280
- }
281
-
282
- .dashicons-plus
283
- {
284
- position: absolute;
285
- top: 50%;
286
- font-size: 30px;
287
- margin-top: -10px;
288
- color: #bbb;
289
-
290
- &.fs-first
291
- {
292
- left: 28%;
293
- }
294
- &.fs-second
295
- {
296
- left: 65%;
297
- }
298
- }
299
-
300
- .fs-plugin-icon,
301
- .fs-connect-logo,
302
- .fs-site-icon
303
- {
304
- border: 1px solid #ccc;
305
- padding: 1px;
306
- background: #fff;
307
- }
308
- }
309
-
310
- .fs-terms
311
- {
312
- text-align: center;
313
- font-size: 0.85em;
314
- padding: 5px;
315
- background: rgba(0, 0, 0, 0.05);
316
-
317
- &, a
318
- {
319
- color: #999;
320
- }
321
-
322
- a
323
- {
324
- text-decoration: none;
325
- }
326
- }
327
- }
328
-
329
- .rtl
330
- {
331
- #fs_connect
332
- {
333
- .fs-actions
334
- {
335
- padding: 10px 20px;
336
- background: #C0C7CA;
337
-
338
- .button
339
- {
340
- .dashicons
341
- {
342
- font-size: 37px;
343
- margin-left: -8px;
344
- margin-right: 12px;
345
- }
346
-
347
- &.button-primary
348
- {
349
- &:after
350
- {
351
- content: ' \000bb';
352
- }
353
-
354
- &.fs-loading
355
- {
356
- &:after
357
- {
358
- content: '';
359
- }
360
- }
361
- }
362
-
363
- &.button-secondary
364
- {
365
- float: left;
366
- }
367
- }
368
- }
369
-
370
- .fs-permissions
371
- {
372
- ul
373
- {
374
- li
375
- {
376
- div
377
- {
378
- margin-right: 55px;
379
- margin-left: 0;
380
- }
381
-
382
- i.dashicons
383
- {
384
- float: right;
385
- }
386
-
387
- }
388
- }
389
- }
390
-
391
- .fs-visual
392
- {
393
- .fs-site-icon
394
- {
395
- right: 20px;
396
- left: auto;
397
- }
398
-
399
- .fs-connect-logo
400
- {
401
- right: auto;
402
- left: 20px;
403
- }
404
- }
405
- }
406
- }
407
-
408
- .wp-pointer-content
409
- {
410
- #fs_connect
411
- {
412
- margin: 0;
413
- @include box-shadow(none);
414
- }
415
- }
416
-
417
- .fs-opt-in-pointer
418
- {
419
- .wp-pointer-content
420
- {
421
- padding: 0;
422
- }
423
-
424
- &.wp-pointer-top
425
- {
426
- .wp-pointer-arrow
427
- {
428
- border-bottom-color: #dfdfdf;
429
- }
430
- .wp-pointer-arrow-inner
431
- {
432
- border-bottom-color: #fafafa;
433
- }
434
- }
435
-
436
- &.wp-pointer-bottom
437
- {
438
- .wp-pointer-arrow
439
- {
440
- border-top-color: #dfdfdf;
441
- }
442
- .wp-pointer-arrow-inner
443
- {
444
- border-top-color: #fafafa;
445
- }
446
- }
447
-
448
- &.wp-pointer-left
449
- {
450
- .wp-pointer-arrow
451
- {
452
- border-right-color: #dfdfdf;
453
- }
454
- .wp-pointer-arrow-inner
455
- {
456
- border-right-color: #fafafa;
457
- }
458
- }
459
-
460
- &.wp-pointer-right
461
- {
462
- .wp-pointer-arrow
463
- {
464
- border-left-color: #dfdfdf;
465
- }
466
- .wp-pointer-arrow-inner
467
- {
468
- border-left-color: #fafafa;
469
- }
470
- }
471
- }
1
+ @import "../start";
2
+
3
+ $form_width: 480px;
4
+
5
+ #fs_connect
6
+ {
7
+ width: $form_width;
8
+ @include box-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));
9
+ margin: 20px 0;
10
+
11
+ @media screen and (max-width: ($form_width - 1)) {
12
+ @include box-shadow(none);
13
+ width: auto;
14
+ margin: 0 0 0 -10px;
15
+ }
16
+
17
+ .fs-content
18
+ {
19
+ background: #fff;
20
+ padding: 15px 20px;
21
+
22
+ .fs-error {
23
+ background: snow;
24
+ color: $fs-logo-magenta-color;
25
+ border: 1px solid $fs-logo-magenta-color;
26
+ @include box-shadow(0 1px 1px 0 rgba(0,0,0,.1));
27
+ text-align: center;
28
+ padding: 5px;
29
+ margin-bottom: 10px;
30
+ }
31
+
32
+ p
33
+ {
34
+ margin: 0;
35
+ padding: 0;
36
+ font-size: 1.2em;
37
+ }
38
+ }
39
+
40
+ .fs-license-key-container {
41
+ position: relative;
42
+ width: 280px;
43
+ margin: 10px auto 0 auto;
44
+
45
+ input {
46
+ width: 100%;
47
+ }
48
+
49
+ .dashicons {
50
+ position: absolute;
51
+ top: 5px;
52
+ right: 5px;
53
+ }
54
+ }
55
+
56
+ .fs-actions
57
+ {
58
+ padding: 10px 20px;
59
+ background: #C0C7CA;
60
+
61
+ .button
62
+ {
63
+ padding: 0 10px 1px;
64
+ line-height: 35px;
65
+ height: 37px;
66
+ font-size: 16px;
67
+ margin-bottom: 0;
68
+
69
+ .dashicons
70
+ {
71
+ font-size: 37px;
72
+ margin-left: -8px;
73
+ margin-right: 12px;
74
+ }
75
+
76
+ &.button-primary
77
+ {
78
+ padding-right: 15px;
79
+ padding-left: 15px;
80
+
81
+ &:after
82
+ {
83
+ content: ' \279C';
84
+ }
85
+
86
+ &.fs-loading
87
+ {
88
+ &:after
89
+ {
90
+ content: '';
91
+ }
92
+ }
93
+ }
94
+
95
+ &.button-secondary
96
+ {
97
+ float: right;
98
+ }
99
+ }
100
+
101
+ // .fs-skip
102
+ // {
103
+ // line-height: 38px;
104
+ // vertical-align: middle;
105
+ // text-decoration: none;
106
+ // margin-left: 10px;
107
+ // }
108
+ }
109
+
110
+ &.fs-anonymous-disabled
111
+ {
112
+ .fs-actions
113
+ {
114
+ .button.button-primary
115
+ {
116
+ width: 100%;
117
+ }
118
+ }
119
+ }
120
+
121
+ .fs-permissions
122
+ {
123
+ padding: 10px 20px;
124
+ background: #FEFEFE;
125
+ // background: #F1F1F1;
126
+ @include transition(background 0.5s ease);
127
+
128
+ .fs-license-sync-disclaimer {
129
+ text-align: center;
130
+ margin-top: 0;
131
+ }
132
+
133
+ .fs-trigger
134
+ {
135
+ font-size: 0.9em;
136
+ text-decoration: none;
137
+ text-align: center;
138
+ display: block;
139
+ }
140
+
141
+ ul
142
+ {
143
+ height: 0;
144
+ overflow: hidden;
145
+ margin: 0;
146
+
147
+ li
148
+ {
149
+ margin-bottom: 12px;
150
+
151
+ &:last-child
152
+ {
153
+ margin-bottom: 0;
154
+ }
155
+
156
+ i.dashicons
157
+ {
158
+ float: left;
159
+ font-size: 40px;
160
+ width: 40px;
161
+ height: 40px;
162
+ }
163
+
164
+ div
165
+ {
166
+ margin-left: 55px;
167
+
168
+ span
169
+ {
170
+ font-weight: bold;
171
+ text-transform: uppercase;
172
+ color: #23282d;
173
+ }
174
+
175
+ p
176
+ {
177
+ margin: 2px 0 0 0;
178
+ }
179
+ }
180
+ }
181
+ }
182
+
183
+ &.fs-open
184
+ {
185
+ background: #fff;
186
+
187
+ ul
188
+ {
189
+ height: auto;
190
+ margin: 20px 20px 10px 20px;
191
+ }
192
+ }
193
+
194
+ @media screen and (max-width: ($form_width - 1)) {
195
+ background: #fff;
196
+
197
+ .fs-trigger
198
+ {
199
+ display: none;
200
+ }
201
+
202
+ ul
203
+ {
204
+ height: auto;
205
+ margin: 20px;
206
+ }
207
+ }
208
+ }
209
+
210
+ .fs-freemium-licensing {
211
+ padding: 8px;
212
+ // background: #0085BA;
213
+ background: #777;
214
+ color: #fff;
215
+
216
+ p {
217
+ text-align: center;
218
+ display: block;
219
+ margin: 0;
220
+ padding: 0;
221
+ }
222
+
223
+ a {
224
+ color: #C2EEFF;
225
+ text-decoration: underline;
226
+ }
227
+ }
228
+
229
+ $icon_size: 80px;
230
+ $wp_logo_padding: $icon_size / 10;
231
+ $icons_top: 10px;
232
+
233
+ .fs-visual
234
+ {
235
+ padding: 12px;
236
+ line-height: 0;
237
+ background: #fafafa;
238
+ height: $icon_size;
239
+ position: relative;
240
+
241
+ .fs-site-icon
242
+ {
243
+ position: absolute;
244
+ left: 20px;
245
+ top: $icons_top;
246
+ }
247
+
248
+ .fs-connect-logo
249
+ {
250
+ position: absolute;
251
+ right: 20px;
252
+ top: $icons_top;
253
+ }
254
+
255
+ .fs-plugin-icon
256
+ {
257
+ position: absolute;
258
+ top: $icons_top;
259
+ left: 50%;
260
+ margin-left: - ($icon_size / 2);
261
+ }
262
+
263
+ .fs-plugin-icon,
264
+ .fs-site-icon,
265
+ img,
266
+ object
267
+ {
268
+ width: $icon_size;
269
+ height: $icon_size;
270
+ }
271
+
272
+ .dashicons-wordpress
273
+ {
274
+ font-size: $icon_size - ($wp_logo_padding * 2);
275
+ background: $wordpress_color;
276
+ color: #fff;
277
+ width: $icon_size - ($wp_logo_padding * 2);
278
+ height: $icon_size - ($wp_logo_padding * 2);
279
+ padding: $wp_logo_padding;
280
+ }
281
+
282
+ .dashicons-plus
283
+ {
284
+ position: absolute;
285
+ top: 50%;
286
+ font-size: 30px;
287
+ margin-top: -10px;
288
+ color: #bbb;
289
+
290
+ &.fs-first
291
+ {
292
+ left: 28%;
293
+ }
294
+ &.fs-second
295
+ {
296
+ left: 65%;
297
+ }
298
+ }
299
+
300
+ .fs-plugin-icon,
301
+ .fs-connect-logo,
302
+ .fs-site-icon
303
+ {
304
+ border: 1px solid #ccc;
305
+ padding: 1px;
306
+ background: #fff;
307
+ }
308
+ }
309
+
310
+ .fs-terms
311
+ {
312
+ text-align: center;
313
+ font-size: 0.85em;
314
+ padding: 5px;
315
+ background: rgba(0, 0, 0, 0.05);
316
+
317
+ &, a
318
+ {
319
+ color: #999;
320
+ }
321
+
322
+ a
323
+ {
324
+ text-decoration: none;
325
+ }
326
+ }
327
+ }
328
+
329
+ .rtl
330
+ {
331
+ #fs_connect
332
+ {
333
+ .fs-actions
334
+ {
335
+ padding: 10px 20px;
336
+ background: #C0C7CA;
337
+
338
+ .button
339
+ {
340
+ .dashicons
341
+ {
342
+ font-size: 37px;
343
+ margin-left: -8px;
344
+ margin-right: 12px;
345
+ }
346
+
347
+ &.button-primary
348
+ {
349
+ &:after
350
+ {
351
+ content: ' \000bb';
352
+ }
353
+
354
+ &.fs-loading
355
+ {
356
+ &:after
357
+ {
358
+ content: '';
359
+ }
360
+ }
361
+ }
362
+
363
+ &.button-secondary
364
+ {
365
+ float: left;
366
+ }
367
+ }
368
+ }
369
+
370
+ .fs-permissions
371
+ {
372
+ ul
373
+ {
374
+ li
375
+ {
376
+ div
377
+ {
378
+ margin-right: 55px;
379
+ margin-left: 0;
380
+ }
381
+
382
+ i.dashicons
383
+ {
384
+ float: right;
385
+ }
386
+
387
+ }
388
+ }
389
+ }
390
+
391
+ .fs-visual
392
+ {
393
+ .fs-site-icon
394
+ {
395
+ right: 20px;
396
+ left: auto;
397
+ }
398
+
399
+ .fs-connect-logo
400
+ {
401
+ right: auto;
402
+ left: 20px;
403
+ }
404
+ }
405
+ }
406
+ }
407
+
408
+ .wp-pointer-content
409
+ {
410
+ #fs_connect
411
+ {
412
+ margin: 0;
413
+ @include box-shadow(none);
414
+ }
415
+ }
416
+
417
+ .fs-opt-in-pointer
418
+ {
419
+ .wp-pointer-content
420
+ {
421
+ padding: 0;
422
+ }
423
+
424
+ &.wp-pointer-top
425
+ {
426
+ .wp-pointer-arrow
427
+ {
428
+ border-bottom-color: #dfdfdf;
429
+ }
430
+ .wp-pointer-arrow-inner
431
+ {
432
+ border-bottom-color: #fafafa;
433
+ }
434
+ }
435
+
436
+ &.wp-pointer-bottom
437
+ {
438
+ .wp-pointer-arrow
439
+ {
440
+ border-top-color: #dfdfdf;
441
+ }
442
+ .wp-pointer-arrow-inner
443
+ {
444
+ border-top-color: #fafafa;
445
+ }
446
+ }
447
+
448
+ &.wp-pointer-left
449
+ {
450
+ .wp-pointer-arrow
451
+ {
452
+ border-right-color: #dfdfdf;
453
+ }
454
+ .wp-pointer-arrow-inner
455
+ {
456
+ border-right-color: #fafafa;
457
+ }
458
+ }
459
+
460
+ &.wp-pointer-right
461
+ {
462
+ .wp-pointer-arrow
463
+ {
464
+ border-left-color: #dfdfdf;
465
+ }
466
+ .wp-pointer-arrow-inner
467
+ {
468
+ border-left-color: #fafafa;
469
+ }
470
+ }
471
+ }
freemius/assets/scss/admin/dialog-boxes.scss CHANGED
@@ -2,4 +2,6 @@
2
  @import "modal-common";
3
  @import "deactivation-feedback";
4
  @import "license-activation";
5
- @import "license-key-resend";
 
 
2
  @import "modal-common";
3
  @import "deactivation-feedback";
4
  @import "license-activation";
5
+ @import "license-key-resend";
6
+ @import "ajax-loader";
7
+ @import "auto-install";
freemius/composer.json DELETED
@@ -1,10 +0,0 @@
1
- {
2
- "name": "freemius/wordpress-sdk",
3
- "description": "Freemius WordPress SDK",
4
- "keywords": ["freemius", "wordpress", "plugin", "sdk"],
5
- "homepage": "https://freemius.com",
6
- "license": "GPL-2.0+",
7
- "require": {
8
- "php": ">=5.2"
9
- }
10
- }
 
 
 
 
 
 
 
 
 
 
freemius/config.php CHANGED
@@ -249,6 +249,14 @@
249
  }
250
  define( 'WP_FS__OPTIONS_OPTION_NAME', WP_FS___OPTION_PREFIX . 'options' );
251
 
 
 
 
 
 
 
 
 
252
  /**
253
  * Billing Frequencies
254
  */
249
  }
250
  define( 'WP_FS__OPTIONS_OPTION_NAME', WP_FS___OPTION_PREFIX . 'options' );
251
 
252
+ /**
253
+ * Module types
254
+ *
255
+ * @since 1.2.2
256
+ */
257
+ define( 'WP_FS__MODULE_TYPE_PLUGIN', 'plugin' );
258
+ define( 'WP_FS__MODULE_TYPE_THEME', 'theme' );
259
+
260
  /**
261
  * Billing Frequencies
262
  */
freemius/gulpfile.js DELETED
@@ -1,58 +0,0 @@
1
- var gulp = require('gulp');
2
- var wpPot = require('gulp-wp-pot');
3
- var gettext = require('gulp-gettext');
4
- var sort = require('gulp-sort');
5
- var pofill = require('gulp-pofill');
6
- var rename = require('gulp-rename');
7
-
8
- gulp.task('default', function () {
9
- // Create POT out of i18n.php.
10
- gulp.src('includes/i18n.php')
11
- .pipe(sort())
12
- .pipe(wpPot( {
13
- destFile:'freemius.pot',
14
- package: 'freemius',
15
- bugReport: 'https://github.com/Freemius/wordpress-sdk/issues',
16
- lastTranslator: 'Vova Feldman <vova@freemius.com>',
17
- team: 'Freemius Team <admin@freemius.com>',
18
- gettextFunctions: [
19
- {name: '_fs_text'},
20
- {name: '_fs_echo'},
21
- {name: '_fs_esc_attr'},
22
- {name: '_fs_esc_attr_echo'},
23
- {name: '_fs_esc_html'},
24
- {name: '_fs_esc_html_echo'},
25
- {name: '_fs_x', context: 2},
26
- {name: '_fs_ex', context: 2},
27
- {name: '_fs_esc_attr_x', context: 2},
28
- {name: '_fs_esc_html_x', context: 2},
29
- {name: '_fs_n', plural: 2},
30
- {name: '_fs_n_noop', plural: 2},
31
- {name: '_fs_nx', plural: 2, context: 4},
32
- {name: '_fs_nx_noop', plural: 2, context: 3}
33
- ]
34
- } ))
35
- .pipe(gulp.dest('languages/freemius.pot'));
36
-
37
- // Create English PO out of the POT.
38
- gulp.src('languages/freemius.pot')
39
- .pipe(pofill({
40
- items: function(item) {
41
- // If msgstr is empty, use identity translation
42
- if (!item.msgstr.length) {
43
- item.msgstr = [''];
44
- }
45
- if (!item.msgstr[0]) {
46
- item.msgstr[0] = item.msgid;
47
- }
48
- return item;
49
- }
50
- }))
51
- .pipe(rename('freemius-en.po'))
52
- .pipe(gulp.dest('languages/'));
53
-
54
- // Compile POs to MOs.
55
- gulp.src('languages/*.po')
56
- .pipe(gettext())
57
- .pipe(gulp.dest('languages/'))
58
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
freemius/includes/class-freemius-abstract.php CHANGED
@@ -28,7 +28,13 @@
28
  #----------------------------------------------------------------------------------
29
 
30
  /**
31
- * Check if user registered with Freemius by connecting his account.
 
 
 
 
 
 
32
  *
33
  * @since 1.0.1
34
  * @return bool
@@ -117,6 +123,34 @@
117
 
118
  #endregion
119
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  #----------------------------------------------------------------------------------
121
  #region Permissions
122
  #----------------------------------------------------------------------------------
@@ -442,6 +476,16 @@
442
  $this->has_free_plan();
443
  }
444
 
 
 
 
 
 
 
 
 
 
 
445
  #endregion
446
 
447
  /**
28
  #----------------------------------------------------------------------------------
29
 
30
  /**
31
+ * Check if user has connected his account (opted-in).
32
+ *
33
+ * Note:
34
+ * If the user opted-in and opted-out on a later stage,
35
+ * this will still return true. If you want to check if the
36
+ * user is currently opted-in, use:
37
+ * `$fs->is_registered() && $fs->is_tracking_allowed()`
38
  *
39
  * @since 1.0.1
40
  * @return bool
123
 
124
  #endregion
125
 
126
+ #----------------------------------------------------------------------------------
127
+ #region Module Type
128
+ #----------------------------------------------------------------------------------
129
+
130
+ /**
131
+ * Checks if the plugin's type is "plugin". The other type is "theme".
132
+ *
133
+ * @author Leo Fajardo (@leorw)
134
+ * @since 1.2.2
135
+ *
136
+ * @return bool
137
+ */
138
+ abstract function is_plugin();
139
+
140
+ /**
141
+ * Checks if the module type is "theme". The other type is "plugin".
142
+ *
143
+ * @author Leo Fajardo (@leorw)
144
+ * @since 1.2.2
145
+ *
146
+ * @return bool
147
+ */
148
+ function is_theme() {
149
+ return ( ! $this->is_plugin() );
150
+ }
151
+
152
+ #endregion
153
+
154
  #----------------------------------------------------------------------------------
155
  #region Permissions
156
  #----------------------------------------------------------------------------------
476
  $this->has_free_plan();
477
  }
478
 
479
+ /**
480
+ * Check if module has only one plan.
481
+ *
482
+ * @author Vova Feldman (@svovaf)
483
+ * @since 1.2.1.7
484
+ *
485
+ * @return bool
486
+ */
487
+ abstract function is_single_plan();
488
+
489
  #endregion
490
 
491
  /**
freemius/includes/class-freemius.php CHANGED
@@ -335,6 +335,45 @@
335
  $this->_version_updates_handler();
336
  }
337
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
338
  /**
339
  * @author Vova Feldman (@svovaf)
340
  * @since 1.0.9
@@ -527,6 +566,11 @@
527
  $this->add_ajax_action( 'update_billing', array( &$this, '_update_billing_ajax_action' ) );
528
  $this->add_ajax_action( 'start_trial', array( &$this, '_start_trial_ajax_action' ) );
529
 
 
 
 
 
 
530
  $this->add_action( 'after_plans_sync', array( &$this, '_check_for_trial_plans' ) );
531
 
532
  $this->add_action( 'sdk_version_update', array( &$this, '_data_migration' ), WP_FS__DEFAULT_PRIORITY, 2 );
@@ -634,7 +678,7 @@
634
  if ( isset( $this->_storage->plugin_main_file ) ) {
635
  $plugin_main_file = $this->_storage->plugin_main_file;
636
  if ( isset( $plugin_main_file->path ) && file_exists( $plugin_main_file->path ) ) {
637
- return $this->_storage->plugin_main_file->path;
638
  }
639
  }
640
 
@@ -659,8 +703,9 @@
659
  }
660
 
661
  wp_die(
662
- __fs( 'failed-finding-main-path', $this->_slug ),
663
- __fs( 'error' ),
 
664
  array( 'back_link' => true )
665
  );
666
  }
@@ -671,7 +716,8 @@
671
  * Only the original instantiator that calls dynamic_init can modify the module's path.
672
  */
673
  // Find caller module.
674
- $plugin_file = fs_find_caller_plugin_file();
 
675
 
676
  $this->_storage->plugin_main_file = (object) array(
677
  'path' => fs_normalize_path( $plugin_file ),
@@ -680,6 +726,97 @@
680
  return $plugin_file;
681
  }
682
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
683
 
684
  #----------------------------------------------------------------------------------
685
  #region Deactivation Feedback Form
@@ -761,21 +898,21 @@
761
 
762
  $reason_found_better_plugin = array(
763
  'id' => self::REASON_FOUND_A_BETTER_PLUGIN,
764
- 'text' => __fs( 'reason-found-a-better-plugin', $this->_slug ),
765
  'input_type' => 'textfield',
766
- 'input_placeholder' => __fs( 'placeholder-plugin-name', $this->_slug )
767
  );
768
 
769
  $reason_temporary_deactivation = array(
770
  'id' => self::REASON_TEMPORARY_DEACTIVATION,
771
- 'text' => __fs( 'reason-temporary-deactivation', $this->_slug ),
772
  'input_type' => '',
773
  'input_placeholder' => ''
774
  );
775
 
776
  $reason_other = array(
777
  'id' => self::REASON_OTHER,
778
- 'text' => __fs( 'reason-other', $this->_slug ),
779
  'input_type' => 'textfield',
780
  'input_placeholder' => ''
781
  );
@@ -783,27 +920,27 @@
783
  $long_term_user_reasons = array(
784
  array(
785
  'id' => self::REASON_NO_LONGER_NEEDED,
786
- 'text' => __fs( 'reason-no-longer-needed', $this->_slug ),
787
  'input_type' => '',
788
  'input_placeholder' => ''
789
  ),
790
  $reason_found_better_plugin,
791
  array(
792
  'id' => self::REASON_NEEDED_FOR_A_SHORT_PERIOD,
793
- 'text' => __fs( 'reason-needed-for-a-short-period', $this->_slug ),
794
  'input_type' => '',
795
  'input_placeholder' => ''
796
  ),
797
  array(
798
  'id' => self::REASON_BROKE_MY_SITE,
799
- 'text' => __fs( 'reason-broke-my-site', $this->_slug ),
800
  'input_type' => '',
801
  'input_placeholder' => '',
802
  'internal_message' => $contact_support_template
803
  ),
804
  array(
805
  'id' => self::REASON_SUDDENLY_STOPPED_WORKING,
806
- 'text' => __fs( 'reason-suddenly-stopped-working', $this->_slug ),
807
  'input_type' => '',
808
  'input_placeholder' => '',
809
  'internal_message' => $contact_support_template
@@ -813,15 +950,15 @@
813
  if ( $this->is_paying() ) {
814
  $long_term_user_reasons[] = array(
815
  'id' => self::REASON_CANT_PAY_ANYMORE,
816
- 'text' => __fs( 'reason-cant-pay-anymore', $this->_slug ),
817
  'input_type' => 'textfield',
818
- 'input_placeholder' => __fs( 'placeholder-comfortable-price', $this->_slug )
819
  );
820
  }
821
 
822
  $reason_dont_share_info = array(
823
  'id' => self::REASON_DONT_LIKE_TO_SHARE_MY_INFORMATION,
824
- 'text' => __fs( 'reason-dont-like-to-share-my-information', $this->_slug ),
825
  'input_type' => '',
826
  'input_placeholder' => ''
827
  );
@@ -842,7 +979,7 @@
842
  'non-registered-and-non-anonymous-short-term' => array(
843
  array(
844
  'id' => self::REASON_DIDNT_WORK,
845
- 'text' => __fs( 'reason-didnt-work', $this->_slug ),
846
  'input_type' => '',
847
  'input_placeholder' => ''
848
  ),
@@ -852,7 +989,7 @@
852
  'short-term' => array(
853
  array(
854
  'id' => self::REASON_COULDNT_MAKE_IT_WORK,
855
- 'text' => __fs( 'reason-couldnt-make-it-work', $this->_slug ),
856
  'input_type' => '',
857
  'input_placeholder' => '',
858
  'internal_message' => $contact_support_template
@@ -860,27 +997,27 @@
860
  $reason_found_better_plugin,
861
  array(
862
  'id' => self::REASON_GREAT_BUT_NEED_SPECIFIC_FEATURE,
863
- 'text' => __fs( 'reason-great-but-need-specific-feature', $this->_slug ),
864
  'input_type' => 'textarea',
865
- 'input_placeholder' => __fs( 'placeholder-feature', $this->_slug )
866
  ),
867
  array(
868
  'id' => self::REASON_NOT_WORKING,
869
- 'text' => __fs( 'reason-not-working', $this->_slug ),
870
  'input_type' => 'textarea',
871
- 'input_placeholder' => __fs( 'placeholder-share-what-didnt-work', $this->_slug )
872
  ),
873
  array(
874
  'id' => self::REASON_NOT_WHAT_I_WAS_LOOKING_FOR,
875
- 'text' => __fs( 'reason-not-what-i-was-looking-for', $this->_slug ),
876
  'input_type' => 'textarea',
877
- 'input_placeholder' => __fs( 'placeholder-what-youve-been-looking-for', $this->_slug )
878
  ),
879
  array(
880
  'id' => self::REASON_DIDNT_WORK_AS_EXPECTED,
881
- 'text' => __fs( 'reason-didnt-work-as-expected', $this->_slug ),
882
  'input_type' => 'textarea',
883
- 'input_placeholder' => __fs( 'placeholder-what-did-you-expect', $this->_slug )
884
  )
885
  )
886
  );
@@ -904,6 +1041,10 @@
904
  * @since 1.1.2
905
  */
906
  function _submit_uninstall_reason_action() {
 
 
 
 
907
  $reason_id = fs_request_get( 'reason_id' );
908
 
909
  // Check if the given reason ID is an unsigned integer.
@@ -944,9 +1085,13 @@
944
  * @param string $slug
945
  * @param bool $is_init Is initiation sequence.
946
  *
947
- * @return Freemius
948
  */
949
  static function instance( $slug, $is_init = false ) {
 
 
 
 
950
  $slug = strtolower( $slug );
951
 
952
  if ( ! isset( self::$_instances[ $slug ] ) ) {
@@ -978,7 +1123,7 @@
978
  * @author Vova Feldman (@svovaf)
979
  * @since 1.0.6
980
  *
981
- * @param $id
982
  *
983
  * @return false|Freemius
984
  */
@@ -1023,7 +1168,7 @@
1023
  * @author Vova Feldman (@svovaf)
1024
  * @since 1.0.6
1025
  *
1026
- * @param $slug_or_id
1027
  *
1028
  * @return bool|Freemius
1029
  */
@@ -1081,6 +1226,68 @@
1081
  );
1082
  }
1083
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1084
  /**
1085
  * Get collection of all active plugins.
1086
  *
@@ -1213,12 +1420,16 @@
1213
  // Configure which Freemius powered plugins should be auto updated.
1214
  // add_filter( 'auto_update_plugin', '_include_plugins_in_auto_update', 10, 2 );
1215
 
1216
- add_action( 'admin_menu', array( 'Freemius', 'add_debug_page' ) );
1217
 
1218
  add_action( "wp_ajax_fs_toggle_debug_mode", array( 'Freemius', '_toggle_debug_mode' ) );
1219
 
1220
  self::add_ajax_action_static( 'get_debug_log', array( 'Freemius', '_get_debug_log' ) );
1221
 
 
 
 
 
1222
  add_action( 'plugins_loaded', array( 'Freemius', '_load_textdomain' ), 1 );
1223
 
1224
  self::$_statics_loaded = true;
@@ -1241,13 +1452,12 @@
1241
 
1242
  global $fs_active_plugins;
1243
 
 
1244
  load_plugin_textdomain(
1245
  'freemius',
1246
  false,
1247
  $fs_active_plugins->newest->sdk_path . '/languages/'
1248
  );
1249
-
1250
- // @todo Load for themes.
1251
  }
1252
 
1253
  #endregion
@@ -1260,20 +1470,20 @@
1260
  * @author Vova Feldman (@svovaf)
1261
  * @since 1.0.8
1262
  */
1263
- static function add_debug_page() {
1264
  if ( ! current_user_can( 'activate_plugins' ) ) {
1265
  return;
1266
  }
1267
 
1268
  self::$_static_logger->entrance();
1269
 
1270
- $title = sprintf( '%s [v.%s]', __fs( 'freemius-debug' ), WP_FS__SDK_VERSION );
1271
 
1272
  $hook = null;
1273
 
1274
  if ( WP_FS__DEV_MODE ) {
1275
  // Add top-level debug menu item.
1276
- $hook = add_menu_page(
1277
  $title,
1278
  $title,
1279
  'manage_options',
@@ -1283,7 +1493,7 @@
1283
  } else {
1284
  if ( 'freemius' === fs_request_get( 'page' ) ) {
1285
  // Add hidden debug page.
1286
- $hook = add_submenu_page(
1287
  null,
1288
  $title,
1289
  $title,
@@ -1304,11 +1514,13 @@
1304
  * @since 1.1.7.3
1305
  */
1306
  static function _toggle_debug_mode() {
1307
- if ( fs_request_is_post() && in_array( $_POST['is_on'], array( 0, 1 ) ) ) {
1308
- update_option( 'fs_debug_mode', $_POST['is_on'] );
 
 
1309
 
1310
  // Turn on/off storage logging.
1311
- FS_Logger::_set_storage_logging( ( 1 == $_POST['is_on'] ) );
1312
  }
1313
 
1314
  exit;
@@ -1320,7 +1532,7 @@
1320
  */
1321
  static function _get_debug_log() {
1322
  $logs = FS_Logger::load_db_logs(
1323
- ! empty( $_POST['filters'] ) ? $_POST['filters'] : false,
1324
  ! empty( $_POST['limit'] ) && is_numeric( $_POST['limit'] ) ? $_POST['limit'] : 200,
1325
  ! empty( $_POST['offset'] ) && is_numeric( $_POST['offset'] ) ? $_POST['offset'] : 0
1326
  );
@@ -1328,6 +1540,46 @@
1328
  self::shoot_ajax_success( $logs );
1329
  }
1330
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1331
  /**
1332
  * @author Vova Feldman (@svovaf)
1333
  * @since 1.0.8
@@ -1358,7 +1610,7 @@
1358
  check_admin_referer( 'download_logs' );
1359
 
1360
  $download_url = FS_Logger::download_db_logs(
1361
- ! empty( $_POST['filters'] ) ? $_POST['filters'] : false
1362
  );
1363
 
1364
  if ( false === $download_url ) {
@@ -1376,21 +1628,12 @@
1376
  static function _debug_page_render() {
1377
  self::$_static_logger->entrance();
1378
 
1379
- $sites = self::get_all_sites();
1380
- $users = self::get_all_users();
1381
- $addons = self::get_all_addons();
1382
- $account_addons = self::get_all_account_addons();
1383
- $licenses = self::get_all_licenses();
1384
-
1385
- // $plans = self::get_all_plans();
1386
- // $licenses = self::get_all_licenses();
1387
-
1388
  $vars = array(
1389
- 'sites' => $sites,
1390
- 'users' => $users,
1391
- 'addons' => $addons,
1392
- 'account_addons' => $account_addons,
1393
- 'licenses' => $licenses,
1394
  );
1395
 
1396
  fs_enqueue_local_style( 'fs_debug', '/admin/debug.css' );
@@ -1705,102 +1948,128 @@
1705
  ) {
1706
  switch ( $api_result->error->code ) {
1707
  case 'curl_missing':
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1708
  $message = sprintf(
1709
- __fs( 'x-requires-access-to-api', $this->_slug ) . ' ' .
1710
- __fs( 'curl-missing-message', $this->_slug ) . ' ' .
 
1711
  ' %s',
1712
  '<b>' . $this->get_plugin_name() . '</b>',
1713
  sprintf(
1714
  '<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
1715
  sprintf(
1716
  '<a class="fs-resolve" data-type="curl" href="#"><b>%s</b></a>%s',
1717
- __fs( 'curl-missing-no-clue-title', $this->_slug ),
1718
  ' - ' . sprintf(
1719
- __fs( 'curl-missing-no-clue-desc', $this->_slug ),
1720
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
1721
  )
1722
  ),
1723
  sprintf(
1724
  '<b>%s</b> - %s',
1725
- __fs( 'sysadmin-title', $this->_slug ),
1726
- __fs( 'curl-missing-sysadmin-desc', $this->_slug )
1727
  ),
1728
  sprintf(
1729
  '<a href="%s"><b>%s</b></a>%s',
1730
  wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=' . 'all' . '&amp;paged=' . '1' . '&amp;s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
1731
- __fs( 'deactivate-plugin-title', $this->_slug ),
1732
- ' - ' . __fs( 'deactivate-plugin-desc', 'freemius', $this->_slug )
1733
  )
1734
  )
1735
  );
1736
  break;
1737
  case 'cloudflare_ddos_protection':
1738
  $message = sprintf(
1739
- __fs( 'x-requires-access-to-api', $this->_slug ) . ' ' .
1740
- __fs( 'cloudflare-blocks-connection-message', $this->_slug ) . ' ' .
1741
- __fs( 'happy-to-resolve-issue-asap', $this->_slug ) .
1742
  ' %s',
1743
  '<b>' . $this->get_plugin_name() . '</b>',
1744
  sprintf(
1745
  '<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
1746
  sprintf(
1747
  '<a class="fs-resolve" data-type="cloudflare" href="#"><b>%s</b></a>%s',
1748
- __fs( 'fix-issue-title', $this->_slug ),
1749
  ' - ' . sprintf(
1750
- __fs( 'fix-issue-desc', $this->_slug ),
1751
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
1752
  )
1753
  ),
1754
  sprintf(
1755
  '<a href="%s" target="_blank"><b>%s</b></a>%s',
1756
  sprintf( 'https://wordpress.org/plugins/%s/download/', $this->_slug ),
1757
- __fs( 'install-previous-title', $this->_slug ),
1758
- ' - ' . __fs( 'install-previous-desc', $this->_slug )
1759
  ),
1760
  sprintf(
1761
  '<a href="%s"><b>%s</b></a>%s',
1762
  wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=' . 'all' . '&amp;paged=' . '1' . '&amp;s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
1763
- __fs( 'deactivate-plugin-title', $this->_slug ),
1764
- ' - ' . __fs( 'deactivate-plugin-desc', $this->_slug )
1765
  )
1766
  )
1767
  );
1768
  break;
1769
  case 'squid_cache_block':
1770
  $message = sprintf(
1771
- __fs( 'x-requires-access-to-api', $this->_slug ) . ' ' .
1772
- __fs( 'squid-blocks-connection-message', $this->_slug ) .
1773
  ' %s',
1774
  '<b>' . $this->get_plugin_name() . '</b>',
1775
  sprintf(
1776
  '<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
1777
  sprintf(
1778
  '<a class="fs-resolve" data-type="squid" href="#"><b>%s</b></a>%s',
1779
- __fs( 'squid-no-clue-title', $this->_slug ),
1780
  ' - ' . sprintf(
1781
- __fs( 'squid-no-clue-desc', $this->_slug ),
1782
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
1783
  )
1784
  ),
1785
  sprintf(
1786
  '<b>%s</b> - %s',
1787
- __fs( 'sysadmin-title', $this->_slug ),
1788
  sprintf(
1789
- __fs( 'squid-sysadmin-desc', $this->_slug ),
1790
  // We use a filter since the plugin might require additional API connectivity.
1791
  '<b>' . implode( ', ', $this->apply_filters( 'api_domains', array( 'api.freemius.com' ) ) ) . '</b>' )
1792
  ),
1793
  sprintf(
1794
  '<a href="%s"><b>%s</b></a>%s',
1795
  wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=' . 'all' . '&amp;paged=' . '1' . '&amp;s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
1796
- __fs( 'deactivate-plugin-title', $this->_slug ),
1797
- ' - ' . __fs( 'deactivate-plugin-desc', $this->_slug )
1798
  )
1799
  )
1800
  );
1801
  break;
1802
  // default:
1803
- // $message = __fs( 'connectivity-test-fails-message', $this->_slug );
1804
  // break;
1805
  }
1806
  }
@@ -1812,21 +2081,21 @@
1812
  if ( $is_first_failure ) {
1813
  // First attempt failed.
1814
  $message = sprintf(
1815
- __fs( 'x-requires-access-to-api', $this->_slug ) . ' ' .
1816
- __fs( 'connectivity-test-fails-message', $this->_slug ) . ' ' .
1817
- __fs( 'connectivity-test-maybe-temporary', $this->_slug ) . '<br><br>' .
1818
  '%s',
1819
  '<b>' . $this->get_plugin_name() . '</b>',
1820
  sprintf(
1821
  '<div id="fs_firewall_issue_options">%s %s</div>',
1822
  sprintf(
1823
  '<a class="button button-primary fs-resolve" data-type="retry_ping" href="#">%s</a>',
1824
- __fs( 'yes-do-your-thing', $this->_slug )
1825
  ),
1826
  sprintf(
1827
  '<a href="%s" class="button">%s</a>',
1828
  wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=' . 'all' . '&amp;paged=' . '1' . '&amp;s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
1829
- __fs( 'no-deactivate', $this->_slug )
1830
  )
1831
  )
1832
  );
@@ -1836,32 +2105,32 @@
1836
  } else {
1837
  // Second connectivity attempt failed.
1838
  $message = sprintf(
1839
- __fs( 'x-requires-access-to-api', $this->_slug ) . ' ' .
1840
- __fs( 'connectivity-test-fails-message', $this->_slug ) . ' ' .
1841
- __fs( 'happy-to-resolve-issue-asap', $this->_slug ) .
1842
  ' %s',
1843
  '<b>' . $this->get_plugin_name() . '</b>',
1844
  sprintf(
1845
  '<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
1846
  sprintf(
1847
  '<a class="fs-resolve" data-type="general" href="#"><b>%s</b></a>%s',
1848
- __fs( 'fix-issue-title', $this->_slug ),
1849
  ' - ' . sprintf(
1850
- __fs( 'fix-issue-desc', $this->_slug ),
1851
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
1852
  )
1853
  ),
1854
  sprintf(
1855
  '<a href="%s" target="_blank"><b>%s</b></a>%s',
1856
  sprintf( 'https://wordpress.org/plugins/%s/download/', $this->_slug ),
1857
- __fs( 'install-previous-title', $this->_slug ),
1858
- ' - ' . __fs( 'install-previous-desc', $this->_slug )
1859
  ),
1860
  sprintf(
1861
  '<a href="%s"><b>%s</b></a>%s',
1862
  wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=' . 'all' . '&amp;paged=' . '1' . '&amp;s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
1863
- __fs( 'deactivate-plugin-title', $this->_slug ),
1864
- ' - ' . __fs( 'deactivate-plugin-desc', $this->_slug )
1865
  )
1866
  )
1867
  );
@@ -1871,7 +2140,7 @@
1871
  $this->_admin_notices->add_sticky(
1872
  $message,
1873
  $message_id,
1874
- __fs( 'oops', $this->_slug ) . '...',
1875
  $type
1876
  );
1877
  }
@@ -1919,7 +2188,7 @@
1919
 
1920
  // Add 'API Error' custom email section.
1921
  $custom_email_sections['api_error'] = array(
1922
- 'title' => "API Error",
1923
  'rows' => array(
1924
  'ping' => array(
1925
  'API Error',
@@ -1938,7 +2207,7 @@
1938
 
1939
  $this->_admin_notices->add_sticky(
1940
  sprintf(
1941
- __fs( 'fix-request-sent-message', $this->_slug ),
1942
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
1943
  ),
1944
  'server_details_sent'
@@ -2040,7 +2309,7 @@
2040
  $message = fs_get_template( 'email.php', $vars );
2041
 
2042
  // Set the type of email to HTML.
2043
- $headers[] = 'Content-type: text/html; charset=UTF-8';
2044
 
2045
  $header_string = implode( "\r\n", $headers );
2046
 
@@ -2313,10 +2582,10 @@
2313
 
2314
  $this->_admin_notices->add(
2315
  ( ! empty( $parent_name ) ?
2316
- sprintf( __fs( 'addon-x-cannot-run-without-y', $this->_slug ), $this->get_plugin_name(), $parent_name ) :
2317
- sprintf( __fs( 'addon-x-cannot-run-without-parent', $this->_slug ), $this->get_plugin_name() )
2318
  ),
2319
- __fs( 'oops', $this->_slug ) . '...',
2320
  'error'
2321
  );
2322
 
@@ -2339,8 +2608,6 @@
2339
  $this->deactivate_premium_only_addon_without_license();
2340
  }
2341
  } else {
2342
- add_action( 'admin_init', array( &$this, '_admin_init_action' ) );
2343
-
2344
  if ( $this->has_addons() &&
2345
  'plugin-information' === fs_request_get( 'tab', false ) &&
2346
  $this->get_id() == fs_request_get( 'parent_plugin_id', false )
@@ -2351,6 +2618,8 @@
2351
  }
2352
  }
2353
 
 
 
2354
  // if ( $this->is_registered() ||
2355
  // $this->is_anonymous() ||
2356
  // $this->is_pending_activation()
@@ -2419,6 +2688,10 @@
2419
  * @since 1.2.1.5
2420
  */
2421
  function _stop_tracking_callback() {
 
 
 
 
2422
  $result = $this->stop_tracking();
2423
 
2424
  if ( true === $result ) {
@@ -2428,7 +2701,7 @@
2428
  $this->_logger->api_error( $result );
2429
 
2430
  self::shoot_ajax_failure(
2431
- __fs( 'unexpected-api-error', $this->_slug ) .
2432
  ( $this->is_api_error( $result ) && isset( $result->error ) ?
2433
  $result->error->message :
2434
  var_export( $result, true ) )
@@ -2440,6 +2713,10 @@
2440
  * @since 1.2.1.5
2441
  */
2442
  function _allow_tracking_callback() {
 
 
 
 
2443
  $result = $this->allow_tracking();
2444
 
2445
  if ( true === $result ) {
@@ -2449,7 +2726,7 @@
2449
  $this->_logger->api_error( $result );
2450
 
2451
  self::shoot_ajax_failure(
2452
- __fs( 'unexpected-api-error', $this->_slug ) .
2453
  ( $this->is_api_error( $result ) && isset( $result->error ) ?
2454
  $result->error->message :
2455
  var_export( $result, true ) )
@@ -2641,7 +2918,7 @@
2641
  // Set the secret key after storing the plugin, we don't want to store the key in the storage.
2642
  $this->_plugin->secret_key = $secret_key;
2643
 
2644
- if (! isset( $plugin_info['menu'] )) {
2645
  $plugin_info['menu'] = array();
2646
 
2647
  if ( ! empty( $this->_storage->sdk_last_version ) &&
@@ -2819,9 +3096,9 @@
2819
  ) );
2820
 
2821
  $this->_admin_notices->add_sticky(
2822
- __fs( 'premium-activated-message', $this->_slug ),
2823
  'premium_activated',
2824
- __fs( 'woot', $this->_slug ) . '!'
2825
  );
2826
  } else {
2827
  // Remove sticky message related to premium code activation.
@@ -2833,11 +3110,11 @@
2833
  if ( $this->is_paying() && ! $this->is_premium() ) {
2834
  $this->_admin_notices->add_sticky(
2835
  sprintf(
2836
- __fs( 'you-have-x-license', $this->_slug ),
2837
  $this->_site->plan->title
2838
  ) . $this->get_complete_upgrade_instructions(),
2839
  'plan_upgraded',
2840
- __fs( 'yee-haw', $this->_slug ) . '!'
2841
  );
2842
  }
2843
  }
@@ -2875,11 +3152,26 @@
2875
  * @since 1.0.6
2876
  *
2877
  * @param string|number $slug_or_id
 
2878
  *
2879
  * @return bool
2880
  */
2881
- function is_addon_activated( $slug_or_id ) {
2882
- return self::has_instance( $slug_or_id );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2883
  }
2884
 
2885
  /**
@@ -2893,6 +3185,8 @@
2893
  * @return bool
2894
  */
2895
  function is_addon_connected( $slug ) {
 
 
2896
  $sites = self::get_all_sites();
2897
 
2898
  if ( ! isset( $sites[ $slug ] ) ) {
@@ -2928,6 +3222,8 @@
2928
  * @return bool
2929
  */
2930
  function is_addon_installed( $slug ) {
 
 
2931
  return file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $this->get_addon_basename( $slug ) ) );
2932
  }
2933
 
@@ -2946,13 +3242,13 @@
2946
  self::instance( $slug )->get_plugin_basename();
2947
  }
2948
 
2949
- $premium_basename = $slug . '-premium/' . $slug . '.php';
2950
 
2951
  if ( file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $premium_basename ) ) ) {
2952
  return $premium_basename;
2953
  }
2954
 
2955
- $free_basename = $slug . '/' . $slug . '.php';
2956
 
2957
  return $free_basename;
2958
  }
@@ -3062,20 +3358,19 @@
3062
 
3063
  $this->_parent->_admin_notices->add_sticky(
3064
  sprintf(
3065
- __fs( ( $is_after_trial_cancel ?
3066
  'addon-trial-cancelled-message' :
3067
- 'addon-no-license-message' ),
3068
- $this->_parent->_slug
3069
  ),
3070
  '<b>' . $this->_plugin->title . '</b>'
3071
  ) . ' ' . sprintf(
3072
  '<a href="%s" aria-label="%s" class="button button-primary" style="margin-left: 10px; vertical-align: middle;">%s &nbsp;&#10140;</a>',
3073
  $this->_parent->addon_url( $this->_slug ),
3074
- esc_attr( sprintf( __fs( 'more-information-about-x', $this->_parent->_slug ), $this->_plugin->title ) ),
3075
- __fs( 'purchase-license', $this->_parent->_slug )
3076
  ),
3077
  'no_addon_license_' . $this->_slug,
3078
- ( $is_after_trial_cancel ? '' : __fs( 'oops', $this->_parent->_slug ) . '...' ),
3079
  ( $is_after_trial_cancel ? 'success' : 'error' )
3080
  );
3081
 
@@ -3195,7 +3490,7 @@
3195
  private function run_manual_sync() {
3196
  $this->require_pluggable_essentials();
3197
 
3198
- if ( ! current_user_can( 'activate_plugins' ) ) {
3199
  return;
3200
  }
3201
 
@@ -3507,10 +3802,10 @@
3507
 
3508
  $this->_admin_notices->add_sticky(
3509
  sprintf(
3510
- __fs( 'pending-activation-message', $this->_slug ),
3511
  '<b>' . $this->get_plugin_name() . '</b>',
3512
  '<b>' . $email . '</b>',
3513
- __fs( $is_pending_trial ? 'start-the-trial' : 'complete-the-install', $this->_slug )
3514
  ),
3515
  'activation_pending',
3516
  'Thanks!'
@@ -3562,15 +3857,15 @@
3562
 
3563
  if ( ! $this->is_addon() && ! $this->is_registered() && ! $this->is_anonymous() ) {
3564
  if ( ! $this->is_pending_activation() ) {
3565
- if ( ! $this->_menu->is_activation_page() ) {
3566
  if ( $this->is_plugin_new_install() || $this->is_only_premium() ) {
3567
  // Show notice for new plugin installations.
3568
  $this->_admin_notices->add(
3569
  sprintf(
3570
- __fs( 'you-are-step-away', $this->_slug ),
3571
  sprintf( '<b><a href="%s">%s</a></b>',
3572
  $this->get_activation_url(),
3573
- sprintf( __fs( 'activate-x-now', $this->_slug ), $this->get_plugin_name() )
3574
  )
3575
  ),
3576
  '',
@@ -3583,10 +3878,10 @@
3583
  // Show notice for new plugin installations.
3584
  $this->_admin_notices->add_sticky(
3585
  sprintf(
3586
- __fs( 'few-plugin-tweaks', $this->_slug ),
3587
  sprintf( '<b><a href="%s">%s</a></b>',
3588
  $this->get_activation_url(),
3589
- sprintf( __fs( 'optin-x-now', $this->_slug ), $this->get_plugin_name() )
3590
  )
3591
  ),
3592
  'connect_account',
@@ -3816,7 +4111,7 @@
3816
  function _activate_plugin_event_hook() {
3817
  $this->_logger->entrance( 'slug = ' . $this->_slug );
3818
 
3819
- if ( ! current_user_can( 'activate_plugins' ) ) {
3820
  return;
3821
  }
3822
 
@@ -3857,8 +4152,8 @@
3857
  // If activating the premium module version, add an admin notice to congratulate for an upgrade completion.
3858
  if ( $is_premium_version_activation ) {
3859
  $this->_admin_notices->add(
3860
- sprintf( __fs( 'successful-version-upgrade-message', $this->_slug ), sprintf( '<b>%s</b>', $this->_plugin->title ) ),
3861
- __fs( 'woot', $this->_slug ) . '!'
3862
  );
3863
  }
3864
  } else if ( $this->is_anonymous() ) {
@@ -3892,7 +4187,10 @@
3892
  $this->_storage->is_plugin_new_install = empty( $this->_storage->plugin_last_version );
3893
  }
3894
 
3895
- if ( ! $this->_anonymous_mode && $this->has_api_connectivity( WP_FS__DEV_MODE ) ) {
 
 
 
3896
  // Store hint that the plugin was just activated to enable auto-redirection to settings.
3897
  add_option( "fs_{$this->_slug}_activated", true );
3898
  }
@@ -3919,7 +4217,7 @@
3919
  function delete_account_event( $check_user = true ) {
3920
  $this->_logger->entrance( 'slug = ' . $this->_slug );
3921
 
3922
- if ( $check_user && ! current_user_can( 'activate_plugins' ) ) {
3923
  return;
3924
  }
3925
 
@@ -4644,8 +4942,8 @@
4644
  *
4645
  * @return string
4646
  */
4647
- private function premium_plugin_basename() {
4648
- return preg_replace( '/\//', '-premium/', $this->_free_plugin_basename, 1 );
4649
  }
4650
 
4651
  /**
@@ -4755,6 +5053,16 @@
4755
  return $this->_slug;
4756
  }
4757
 
 
 
 
 
 
 
 
 
 
 
4758
  /**
4759
  * @author Vova Feldman (@svovaf)
4760
  * @since 1.0.1
@@ -4866,6 +5174,20 @@
4866
  return $this->apply_filters( 'plugin_version', $plugin_data['Version'] );
4867
  }
4868
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4869
  /**
4870
  * @author Vova Feldman (@svovaf)
4871
  * @since 1.0.4
@@ -5040,7 +5362,13 @@
5040
  }
5041
 
5042
  /**
5043
- * Check if user is registered.
 
 
 
 
 
 
5044
  *
5045
  * @author Vova Feldman (@svovaf)
5046
  * @since 1.0.1
@@ -5682,6 +6010,27 @@
5682
  return ( $current_plan_order > $required_plan_order );
5683
  }
5684
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5685
  /**
5686
  * Check if plan based on trial. If not in trial mode, should return false.
5687
  *
@@ -5822,7 +6171,7 @@
5822
  * @since 1.2.0
5823
  */
5824
  function _add_license_activation() {
5825
- if ( ! current_user_can( 'activate_plugins' ) ) {
5826
  // Only admins can activate a license.
5827
  return;
5828
  }
@@ -5857,36 +6206,43 @@
5857
  * @since 1.1.9
5858
  */
5859
  function _activate_license_ajax_action() {
 
 
 
 
5860
  $license_key = trim( fs_request_get( 'license_key' ) );
5861
 
5862
  if ( empty( $license_key ) ) {
5863
  exit;
5864
  }
5865
 
5866
- $slug = $_POST['slug'];
5867
- $fs = ( ( $slug === $this->_slug ) ? $this : self::instance( $slug ) );
 
 
 
5868
  $error = false;
5869
  $next_page = false;
5870
 
5871
- if ( $this->is_registered() ) {
5872
  $api = $fs->get_api_site_scope();
5873
  $install = $api->call( '/', 'put', array(
5874
- 'license_key' => $this->apply_filters( 'license_key', $license_key )
5875
  ) );
5876
 
5877
  if ( isset( $install->error ) ) {
5878
  $error = $install->error->message;
5879
  } else {
5880
- $fs = $this->is_addon() ?
5881
- $this->get_parent_instance() :
5882
- $this;
5883
 
5884
- $next_page = $fs->_get_sync_license_url( $this->get_id(), true );
5885
 
5886
- $this->reconnect_locally();
5887
  }
5888
  } else {
5889
- $next_page = $this->opt_in( false, false, false, $license_key );
5890
 
5891
  if ( isset( $next_page->error ) ) {
5892
  $error = $next_page->error;
@@ -5915,9 +6271,11 @@
5915
  * @since 1.2.1.5
5916
  */
5917
  function _update_billing_ajax_action() {
5918
- check_ajax_referer( $this->get_action_tag( 'update_billing' ), 'security' );
5919
 
5920
- if ( ! current_user_can( 'activate_plugins' ) ) {
 
 
5921
  // Only for admins.
5922
  self::shoot_ajax_failure();
5923
  }
@@ -5946,9 +6304,11 @@
5946
  * @since 1.2.1.5
5947
  */
5948
  function _start_trial_ajax_action() {
5949
- check_ajax_referer( $this->get_action_tag( 'start_trial' ), 'security' );
5950
 
5951
- if ( ! current_user_can( 'activate_plugins' ) ) {
 
 
5952
  // Only for admins.
5953
  self::shoot_ajax_failure();
5954
  }
@@ -5982,11 +6342,12 @@
5982
  * @since 1.2.0
5983
  */
5984
  function _resend_license_key_ajax_action() {
5985
- if ( ! isset( $_POST['email'] ) ) {
5986
- exit;
5987
- }
 
 
5988
 
5989
- $email_address = trim( $_POST['email'] );
5990
  if ( empty( $email_address ) ) {
5991
  exit;
5992
  }
@@ -6005,9 +6366,9 @@
6005
  $error = $result->error;
6006
 
6007
  if ( in_array( $error->code, array( 'invalid_email', 'no_user' ) ) ) {
6008
- $error = __fs( 'email-not-found' );
6009
  } else if ( 'no_license' === $error->code ) {
6010
- $error = __fs( 'no-active-licenses' );
6011
  } else {
6012
  $error = $error->message;
6013
  }
@@ -6018,7 +6379,7 @@
6018
  );
6019
 
6020
  if ( false !== $error ) {
6021
- $licenses['error'] = sprintf( '%s... %s', __fs( 'oops', $this->_slug ), strtolower( $error ) );
6022
  }
6023
 
6024
  echo json_encode( $licenses );
@@ -6034,12 +6395,26 @@
6034
  *
6035
  * @return bool
6036
  */
6037
- private function is_plugins_page() {
6038
  global $pagenow;
6039
 
6040
  return ( 'plugins.php' === $pagenow );
6041
  }
6042
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6043
  #----------------------------------------------------------------------------------
6044
  #region URL Generators
6045
  #----------------------------------------------------------------------------------
@@ -6218,6 +6593,18 @@
6218
  return $this->_is_premium_only;
6219
  }
6220
 
 
 
 
 
 
 
 
 
 
 
 
 
6221
  /**
6222
  * Check if module has a premium code version.
6223
  *
@@ -6344,7 +6731,7 @@
6344
  $ajax_action = fs_request_get( 'action' );
6345
 
6346
  foreach ( $actions as $action ) {
6347
- if ( $ajax_action === self::get_action_tag_static( $action, $slug ) ) {
6348
  return true;
6349
  }
6350
  }
@@ -6405,44 +6792,67 @@
6405
  }
6406
  }
6407
 
6408
- if ( $this->_menu->has_menu_slug() && ! $this->_menu->is_top_level() ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6409
  $parent_slug = $this->_menu->get_parent_slug();
6410
  $menu_file = ( false !== strpos( $parent_slug, '.php' ) ) ?
6411
  $parent_slug :
6412
  'admin.php';
6413
 
6414
  return add_query_arg( array_merge( $params, array(
6415
- 'page' => $this->_menu->get_slug( $page ),
6416
  ) ), admin_url( $menu_file, 'admin' ) );
6417
  }
6418
 
 
6419
  if ( $this->_menu->is_cpt() ) {
6420
  if ( empty( $page ) && $this->is_activation_mode() ) {
6421
  return add_query_arg( array_merge( $params, array(
6422
- 'page' => $this->_menu->get_slug()
6423
  ) ), admin_url( 'admin.php', 'admin' ) );
6424
  } else {
6425
  if ( ! empty( $page ) ) {
6426
- $params['page'] = $this->_menu->get_slug( $page );
6427
  }
6428
 
6429
- return add_query_arg( $params, admin_url( $this->_menu->get_raw_slug(), 'admin' ) );
 
 
 
6430
  }
6431
- } else {
6432
- /**
6433
- * @author Vova Feldman
6434
- * @since 1.2.1.6
6435
- *
6436
- * If module doesn't have a settings page, create one for the opt-in screen.
6437
- */
6438
- $menu_slug = $this->_menu->has_menu_slug() ?
6439
- $this->_menu->get_slug( $page ) :
6440
- $this->_slug;
6441
-
6442
- return add_query_arg( array_merge( $params, array(
6443
- 'page' => $menu_slug,
6444
- ) ), admin_url( 'admin.php', 'admin' ) );
6445
  }
 
 
 
 
 
6446
  }
6447
 
6448
  /**
@@ -6453,12 +6863,11 @@
6453
  *
6454
  * @param bool|number $plugin_id
6455
  * @param bool $add_action_nonce
 
6456
  *
6457
  * @return string
6458
  */
6459
- function _get_sync_license_url( $plugin_id = false, $add_action_nonce = true ) {
6460
- $params = array();
6461
-
6462
  if ( is_numeric( $plugin_id ) ) {
6463
  $params['plugin_id'] = $plugin_id;
6464
  }
@@ -6584,20 +6993,52 @@
6584
 
6585
  /* Security
6586
  ------------------------------------------------------------------------------------------------------------------*/
6587
- private function _encrypt( $str ) {
6588
  if ( is_null( $str ) ) {
6589
  return null;
6590
  }
6591
 
6592
- return base64_encode( $str );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6593
  }
6594
 
6595
- private function _decrypt( $str ) {
6596
  if ( is_null( $str ) ) {
6597
  return null;
6598
  }
6599
 
6600
- return base64_decode( $str );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6601
  }
6602
 
6603
  /**
@@ -6608,12 +7049,12 @@
6608
  *
6609
  * @return FS_Entity Return an encrypted clone entity.
6610
  */
6611
- private function _encrypt_entity( FS_Entity $entity ) {
6612
  $clone = clone $entity;
6613
  $props = get_object_vars( $entity );
6614
 
6615
  foreach ( $props as $key => $val ) {
6616
- $clone->{$key} = $this->_encrypt( $val );
6617
  }
6618
 
6619
  return $clone;
@@ -6627,12 +7068,12 @@
6627
  *
6628
  * @return FS_Entity Return an decrypted clone entity.
6629
  */
6630
- private function _decrypt_entity( FS_Entity $entity ) {
6631
  $clone = clone $entity;
6632
  $props = get_object_vars( $entity );
6633
 
6634
  foreach ( $props as $key => $val ) {
6635
- $clone->{$key} = $this->_decrypt( $val );
6636
  }
6637
 
6638
  return $clone;
@@ -6750,7 +7191,7 @@
6750
  ) {
6751
  // Load site.
6752
  $this->_site = clone $site;
6753
- $this->_site->plan = $this->_decrypt_entity( $this->_site->plan );
6754
 
6755
  // Load relevant user.
6756
  $this->_user = clone $users[ $this->_site->user_id ];
@@ -6762,7 +7203,7 @@
6762
  } else {
6763
  for ( $i = 0, $len = count( $this->_plans ); $i < $len; $i ++ ) {
6764
  if ( $this->_plans[ $i ] instanceof FS_Plugin_Plan ) {
6765
- $this->_plans[ $i ] = $this->_decrypt_entity( $this->_plans[ $i ] );
6766
  } else {
6767
  unset( $this->_plans[ $i ] );
6768
  }
@@ -7071,10 +7512,18 @@
7071
  * @param FS_User $user
7072
  * @param FS_Site $site
7073
  * @param bool $redirect
 
 
 
7074
  *
7075
  * @return string If redirect is `false`, returns the next page the user should be redirected to.
7076
  */
7077
- function setup_account( FS_User $user, FS_Site $site, $redirect = true ) {
 
 
 
 
 
7078
  $this->_user = $user;
7079
  $this->_site = $site;
7080
 
@@ -7109,7 +7558,7 @@
7109
 
7110
  if ( ! $this->is_paying_or_trial() ) {
7111
  $this->_admin_notices->add_sticky(
7112
- sprintf( __fs( 'plugin-x-activation-message', $this->_slug ), '<b>' . $this->get_plugin_name() . '</b>' ),
7113
  'activation_complete'
7114
  );
7115
  }
@@ -7120,20 +7569,20 @@
7120
  if ( $this->is_paying() ) {
7121
  $this->_admin_notices->add_sticky(
7122
  sprintf(
7123
- __fs( 'activation-with-plan-x-message', $this->_slug ),
7124
  $this->_site->plan->title
7125
  ) . $this->get_complete_upgrade_instructions(),
7126
  'plan_upgraded',
7127
- __fs( 'yee-haw', $this->_slug ) . '!'
7128
  );
7129
  } else {
7130
  $this->_admin_notices->add_sticky(
7131
  sprintf(
7132
- __fs( 'trial-started-message', $this->_slug ),
7133
  '<i>' . $this->get_plugin_name() . '</i>'
7134
  ) . $this->get_complete_upgrade_instructions( $this->_storage->trial_plan->title ),
7135
  'trial_started',
7136
- __fs( 'yee-haw', $this->_slug ) . '!'
7137
  );
7138
  }
7139
  }
@@ -7152,6 +7601,11 @@
7152
 
7153
  $next_page = '';
7154
 
 
 
 
 
 
7155
  if ( is_numeric( $plugin_id ) ) {
7156
  /**
7157
  * @author Leo Fajardo
@@ -7161,7 +7615,7 @@
7161
  */
7162
  if ( $this->is_anonymous() || $plugin_id != $this->_plugin->id ) {
7163
  // Add-on was installed - sync license right after install.
7164
- $next_page = $this->_get_sync_license_url( $plugin_id );
7165
  }
7166
  } else {
7167
  /**
@@ -7175,7 +7629,7 @@
7175
  // Reload the page with the keys.
7176
  $next_page = $this->is_anonymous() ?
7177
  // If user previously skipped, redirect to account page.
7178
- $this->get_account_url() :
7179
  $this->get_after_activation_url( 'after_connect_url' );
7180
  }
7181
 
@@ -7209,7 +7663,9 @@
7209
  fs_request_get( 'user_secret_key' ),
7210
  fs_request_get( 'install_id' ),
7211
  fs_request_get( 'install_public_key' ),
7212
- fs_request_get( 'install_secret_key' )
 
 
7213
  );
7214
  } else if ( fs_request_has( 'pending_activation' ) ) {
7215
  $this->set_pending_confirmation( fs_request_get( 'user_email' ), true );
@@ -7230,6 +7686,9 @@
7230
  * @param string $install_public_key
7231
  * @param string $install_secret_key
7232
  * @param bool $redirect
 
 
 
7233
  *
7234
  * @return string If redirect is `false`, returns the next page the user should be redirected to.
7235
  */
@@ -7240,7 +7699,8 @@
7240
  $install_id,
7241
  $install_public_key,
7242
  $install_secret_key,
7243
- $redirect = true
 
7244
  ) {
7245
  $user = new FS_User();
7246
  $user->id = $user_id;
@@ -7262,7 +7722,12 @@
7262
  $site = new FS_Site( $site_result );
7263
  $this->_site = $site;
7264
 
7265
- return $this->setup_account( $this->_user, $this->_site, $redirect );
 
 
 
 
 
7266
  }
7267
 
7268
  /**
@@ -7399,9 +7864,9 @@
7399
  $install = $this->apply_filters( 'after_install_failure', $install, $args );
7400
 
7401
  $this->_admin_notices->add(
7402
- sprintf( __fs( 'could-not-activate-x', $this->_slug ), $this->get_plugin_name() ) . ' ' .
7403
- __fs( 'contact-us-with-error-message', $this->_slug ) . ' ' . '<b>' . $install->error->message . '</b>',
7404
- __fs( 'oops', $this->_slug ) . '...',
7405
  'error'
7406
  );
7407
 
@@ -7443,9 +7908,9 @@
7443
 
7444
  if ( isset( $addon_install->error ) ) {
7445
  $this->_admin_notices->add(
7446
- sprintf( __fs( 'could-not-activate-x', $this->_slug ), $this->get_plugin_name() ) . ' ' .
7447
- __fs( 'contact-us-with-error-message', $this->_slug ) . ' ' . '<b>' . $addon_install->error->message . '</b>',
7448
- __fs( 'oops', $this->_slug ) . '...',
7449
  'error'
7450
  );
7451
 
@@ -7529,6 +7994,8 @@
7529
  fs_request_is_action( $this->_slug . '_activate_new' )
7530
  ) {
7531
  $this->_install_with_new_user();
 
 
7532
  }
7533
  }
7534
  }
@@ -7568,9 +8035,9 @@
7568
 
7569
  $hook = false;
7570
 
7571
- if ( ! $this->_menu->has_menu_slug() ) {
7572
  // Add the opt-in page without a menu item.
7573
- $hook = add_submenu_page(
7574
  null,
7575
  $this->get_plugin_name(),
7576
  $this->get_plugin_name(),
@@ -7583,7 +8050,7 @@
7583
 
7584
  if ( false === $hook ) {
7585
  // Create new menu item just for the opt-in.
7586
- $hook = add_menu_page(
7587
  $this->get_plugin_name(),
7588
  $this->get_plugin_name(),
7589
  'manage_options',
@@ -7595,28 +8062,9 @@
7595
  $menus = array( $this->_menu->get_parent_slug() );
7596
 
7597
  if ( $this->_menu->is_override_exact() ) {
7598
- // Make sure the current page is matching the activation page.
7599
- $activation_url = strtolower( $this->get_activation_url() );
7600
- $request_url = strtolower( $_SERVER['REQUEST_URI'] );
7601
-
7602
- if ( parse_url( $activation_url, PHP_URL_PATH ) !== parse_url( $request_url, PHP_URL_PATH ) ) {
7603
- // Different path - DO NOT OVERRIDE PAGE.
7604
  return;
7605
  }
7606
-
7607
- $activation_url_params = array();
7608
- parse_str( parse_url( $activation_url, PHP_URL_QUERY ), $activation_url_params );
7609
-
7610
- $request_url_params = array();
7611
- parse_str( parse_url( $request_url, PHP_URL_QUERY ), $request_url_params );
7612
-
7613
-
7614
- foreach ( $activation_url_params as $key => $val ) {
7615
- if ( ! isset( $request_url_params[ $key ] ) || $val != $request_url_params[ $key ] ) {
7616
- // Not matching query string - DO NOT OVERRIDE PAGE.
7617
- return;
7618
- }
7619
- }
7620
  }
7621
 
7622
  foreach ( $menus as $parent_slug ) {
@@ -7633,7 +8081,7 @@
7633
  }
7634
  }
7635
 
7636
- if ( $this->_menu->is_activation_page() ) {
7637
  // Clean admin page from distracting content.
7638
  self::_clean_admin_content_section();
7639
  }
@@ -7697,43 +8145,50 @@
7697
  if ( $this->is_registered() ) {
7698
  // Add user account page.
7699
  $this->add_submenu_item(
7700
- __fs( 'account', $this->_slug ),
7701
  array( &$this, '_account_page_render' ),
7702
- $this->get_plugin_name() . ' &ndash; ' . __fs( 'account', $this->_slug ),
7703
  'manage_options',
7704
  'account',
7705
  array( &$this, '_account_page_load' ),
7706
  WP_FS__DEFAULT_PRIORITY,
7707
- $this->_menu->is_submenu_item_visible( 'account' )
7708
  );
7709
  }
7710
 
7711
  // Add contact page.
7712
  $this->add_submenu_item(
7713
- __fs( 'contact-us', $this->_slug ),
7714
  array( &$this, '_contact_page_render' ),
7715
- $this->get_plugin_name() . ' &ndash; ' . __fs( 'contact-us', $this->_slug ),
7716
  'manage_options',
7717
  'contact',
7718
  'Freemius::_clean_admin_content_section',
7719
  WP_FS__DEFAULT_PRIORITY,
7720
- $this->_menu->is_submenu_item_visible( 'contact' )
7721
  );
7722
 
7723
  if ( $this->has_addons() ) {
7724
  $this->add_submenu_item(
7725
- __fs( 'add-ons', $this->_slug ),
7726
  array( &$this, '_addons_page_render' ),
7727
- $this->get_plugin_name() . ' &ndash; ' . __fs( 'add-ons', $this->_slug ),
7728
  'manage_options',
7729
  'addons',
7730
  array( &$this, '_addons_page_load' ),
7731
  WP_FS__LOWEST_PRIORITY - 1,
7732
- $this->_menu->is_submenu_item_visible( 'addons' )
7733
  );
7734
  }
7735
 
7736
- $show_pricing = ( $this->has_paid_plan() && $this->_menu->is_submenu_item_visible( 'pricing' ) );
 
 
 
 
 
 
 
7737
  // If user don't have paid plans, add pricing page
7738
  // to support add-ons checkout but don't add the submenu item.
7739
  // || (isset( $_GET['page'] ) && $this->_menu->get_slug( 'pricing' ) == $_GET['page']);
@@ -7755,9 +8210,9 @@
7755
 
7756
  // Add upgrade/pricing page.
7757
  $this->add_submenu_item(
7758
- __fs( $pricing_cta_slug, $this->_slug ) . '&nbsp;&nbsp;&#x27a4;',
7759
  array( &$this, '_pricing_page_render' ),
7760
- $this->get_plugin_name() . ' &ndash; ' . __fs( 'pricing', $this->_slug ),
7761
  'manage_options',
7762
  'pricing',
7763
  'Freemius::_clean_admin_content_section',
@@ -7814,7 +8269,7 @@
7814
  $menu_slug = $this->_menu->get_slug( $item['menu_slug'] );
7815
 
7816
  if ( ! isset( $item['url'] ) ) {
7817
- $hook = add_submenu_page(
7818
  $item['show_submenu'] ?
7819
  $this->get_top_level_menu_slug() :
7820
  null,
@@ -7829,7 +8284,7 @@
7829
  add_action( "load-$hook", $item['before_render_function'] );
7830
  }
7831
  } else {
7832
- add_submenu_page(
7833
  $this->get_top_level_menu_slug(),
7834
  $item['page_title'],
7835
  $menu_item,
@@ -7922,9 +8377,9 @@
7922
  }
7923
 
7924
  if ( ! $this->is_activation_mode() ) {
7925
- if ( $this->_menu->is_submenu_item_visible( 'support' ) ) {
7926
  $this->add_submenu_link_item(
7927
- $this->apply_filters( 'support_forum_submenu', __fs( 'support-forum', $this->_slug ) ),
7928
  $this->apply_filters( 'support_forum_url', 'https://wordpress.org/support/plugin/' . $this->_slug ),
7929
  'wp-support-forum',
7930
  null,
@@ -8050,8 +8505,10 @@
8050
 
8051
  #endregion ------------------------------------------------------------------
8052
 
8053
- /* Actions / Hooks / Filters
8054
- ------------------------------------------------------------------------------------------------------------------*/
 
 
8055
  /**
8056
  * @author Vova Feldman (@svovaf)
8057
  * @since 1.1.7
@@ -8085,8 +8542,30 @@
8085
  *
8086
  * @return string
8087
  */
8088
- private function get_ajax_action_tag( $tag ) {
8089
- return 'wp_ajax_' . $this->get_action_tag( $tag );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8090
  }
8091
 
8092
  /**
@@ -8098,8 +8577,14 @@
8098
  *
8099
  * @return string
8100
  */
8101
- private static function get_ajax_action_tag_static( $tag, $slug = '' ) {
8102
- return 'wp_ajax_' . self::get_action_tag_static( $tag, $slug );
 
 
 
 
 
 
8103
  }
8104
 
8105
  /**
@@ -8138,7 +8623,12 @@
8138
  *
8139
  * @uses add_action()
8140
  */
8141
- function add_action( $tag, $function_to_add, $priority = WP_FS__DEFAULT_PRIORITY, $accepted_args = 1 ) {
 
 
 
 
 
8142
  $this->_logger->entrance( $tag );
8143
 
8144
  add_action( $this->get_action_tag( $tag ), $function_to_add, $priority, $accepted_args );
@@ -8201,7 +8691,7 @@
8201
  }
8202
 
8203
  add_action(
8204
- self::get_ajax_action_tag_static( $tag, $slug ),
8205
  $function_to_add,
8206
  $priority,
8207
  0
@@ -8313,6 +8803,8 @@
8313
  return has_filter( $this->get_action_tag( $tag ), $function_to_check );
8314
  }
8315
 
 
 
8316
  /**
8317
  * Override default i18n text phrases.
8318
  *
@@ -8347,7 +8839,7 @@
8347
  }
8348
 
8349
  $encrypted_site = clone $this->_site;
8350
- $encrypted_site->plan = $this->_encrypt_entity( $this->_site->plan );
8351
 
8352
  $sites = self::get_all_sites();
8353
  $sites[ $this->_slug ] = $encrypted_site;
@@ -8370,7 +8862,7 @@
8370
  // Copy plans.
8371
  $encrypted_plans = array();
8372
  for ( $i = 0, $len = count( $this->_plans ); $i < $len; $i ++ ) {
8373
- $encrypted_plans[] = $this->_encrypt_entity( $this->_plans[ $i ] );
8374
  }
8375
 
8376
  $plans[ $this->_slug ] = $encrypted_plans;
@@ -8549,7 +9041,7 @@
8549
  $this->_user->last = $user->last;
8550
  $this->_user->email = $user->email;
8551
 
8552
- $is_menu_item_account_visible = $this->_menu->is_submenu_item_visible( 'account' );
8553
 
8554
  if ( $user->is_verified &&
8555
  ( ! isset( $this->_user->is_verified ) || false === $this->_user->is_verified )
@@ -8559,8 +9051,8 @@
8559
  $this->do_action( 'account_email_verified', $user->email );
8560
 
8561
  $this->_admin_notices->add(
8562
- __fs( 'email-verified-message', $this->_slug ),
8563
- __fs( 'right-on', $this->_slug ) . '!',
8564
  'success',
8565
  // Make admin sticky if account menu item is invisible,
8566
  // since the page will be auto redirected to the plugin's
@@ -8813,7 +9305,7 @@
8813
  $plugin_id = $this->_plugin->id;
8814
  }
8815
 
8816
- $result = $api->get( "/plugins/{$plugin_id}/payments.json", true );
8817
 
8818
  if ( ! isset( $result->error ) ) {
8819
  for ( $i = 0, $len = count( $result->payments ); $i < $len; $i ++ ) {
@@ -8990,6 +9482,20 @@
8990
  return $this->is_trial() || $this->has_features_enabled_license();
8991
  }
8992
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8993
  /**
8994
  * Sync site's plan.
8995
  *
@@ -9073,22 +9579,22 @@
9073
  $this->_admin_notices->add_sticky(
9074
  FS_Plan_Manager::instance()->has_free_plan( $plans ) ?
9075
  sprintf(
9076
- __fs( 'addon-successfully-upgraded-message', $this->_slug ),
9077
  $addon->title
9078
  ) . ' ' . $this->get_latest_download_link(
9079
- __fs( 'download-latest-version', $this->_slug ),
9080
  $addon_id
9081
  )
9082
  :
9083
  sprintf(
9084
- __fs( 'addon-successfully-purchased-message', $this->_slug ),
9085
  $addon->title
9086
  ) . ' ' . $this->get_latest_download_link(
9087
- __fs( 'download-latest-version', $this->_slug ),
9088
  $addon_id
9089
  ),
9090
  'addon_plan_upgraded_' . $addon->slug,
9091
- __fs( 'yee-haw', $this->_slug ) . '!'
9092
  );
9093
  }
9094
  }
@@ -9133,11 +9639,11 @@
9133
  if ( ! self::$_global_admin_notices->has_sticky( 'api_blocked' ) ) {
9134
  self::$_global_admin_notices->add(
9135
  sprintf(
9136
- __fs( 'server-blocking-access', $this->_slug ),
9137
  $this->get_plugin_name(),
9138
  '<a href="' . $api->get_url() . '" target="_blank">' . $api->get_url() . '</a>'
9139
- ) . '<br> ' . __fs( 'server-error-message', $this->_slug ) . var_export( $site->error, true ),
9140
- __fs( 'oops', $this->_slug ) . '...',
9141
  'error',
9142
  $background,
9143
  false,
@@ -9147,8 +9653,8 @@
9147
  } else {
9148
  // Authentication params are broken.
9149
  $this->_admin_notices->add(
9150
- __fs( 'wrong-authentication-param-message', $this->_slug ),
9151
- __fs( 'oops', $this->_slug ) . '...',
9152
  'error'
9153
  );
9154
  }
@@ -9275,19 +9781,19 @@
9275
  if ( $plan->is_free() ) {
9276
  $this->_admin_notices->add(
9277
  sprintf(
9278
- __fs( 'plan-did-not-change-message', $this->_slug ),
9279
- '<i><b>' . $plan->title . ( $this->is_trial() ? ' ' . __fs( 'trial', $this->_slug ) : '' ) . '</b></i>'
9280
  ) . ' ' . sprintf(
9281
  '<a href="%s">%s</a>',
9282
  $this->contact_url(
9283
  'bug',
9284
- sprintf( __fs( 'plan-did-not-change-email-message', $this->_slug ),
9285
  strtoupper( $plan->name )
9286
  )
9287
  ),
9288
- __fs( 'contact-us-here', $this->_slug )
9289
  ),
9290
- __fs( 'hmm', $this->_slug ) . '...'
9291
  );
9292
  }
9293
  }
@@ -9295,11 +9801,11 @@
9295
  case 'upgraded':
9296
  $this->_admin_notices->add_sticky(
9297
  sprintf(
9298
- __fs( 'plan-upgraded-message', $this->_slug ),
9299
  '<i>' . $this->get_plugin_name() . '</i>'
9300
  ) . $this->get_complete_upgrade_instructions(),
9301
  'plan_upgraded',
9302
- __fs( 'yee-haw', $this->_slug ) . '!'
9303
  );
9304
 
9305
  $this->_admin_notices->remove_sticky( array(
@@ -9312,7 +9818,7 @@
9312
  case 'changed':
9313
  $this->_admin_notices->add_sticky(
9314
  sprintf(
9315
- __fs( 'plan-changed-to-x-message', $this->_slug ),
9316
  $this->_site->plan->title
9317
  ),
9318
  'plan_changed'
@@ -9327,41 +9833,41 @@
9327
  break;
9328
  case 'downgraded':
9329
  $this->_admin_notices->add_sticky(
9330
- sprintf( __fs( 'license-expired-blocking-message', $this->_slug ) ),
9331
  'license_expired',
9332
- __fs( 'hmm', $this->_slug ) . '...'
9333
  );
9334
  $this->_admin_notices->remove_sticky( 'plan_upgraded' );
9335
  break;
9336
  case 'cancelled':
9337
  $this->_admin_notices->add(
9338
- __fs( 'license-cancelled', $this->_slug ) . ' ' .
9339
  sprintf(
9340
  '<a href="%s">%s</a>',
9341
  $this->contact_url( 'bug' ),
9342
- __fs( 'contact-us-here', $this->_slug )
9343
  ),
9344
- __fs( 'hmm', $this->_slug ) . '...',
9345
  'error'
9346
  );
9347
  $this->_admin_notices->remove_sticky( 'plan_upgraded' );
9348
  break;
9349
  case 'expired':
9350
  $this->_admin_notices->add_sticky(
9351
- sprintf( __fs( 'license-expired-non-blocking-message', $this->_slug ), $this->_site->plan->title ),
9352
  'license_expired',
9353
- __fs( 'hmm', $this->_slug ) . '...'
9354
  );
9355
  $this->_admin_notices->remove_sticky( 'plan_upgraded' );
9356
  break;
9357
  case 'trial_started':
9358
  $this->_admin_notices->add_sticky(
9359
  sprintf(
9360
- __fs( 'trial-started-message', $this->_slug ),
9361
  '<i>' . $this->get_plugin_name() . '</i>'
9362
  ) . $this->get_complete_upgrade_instructions( $this->_storage->trial_plan->title ),
9363
  'trial_started',
9364
- __fs( 'yee-haw', $this->_slug ) . '!'
9365
  );
9366
 
9367
  $this->_admin_notices->remove_sticky( array(
@@ -9370,9 +9876,9 @@
9370
  break;
9371
  case 'trial_expired':
9372
  $this->_admin_notices->add_sticky(
9373
- __fs( 'trial-expired-message', $this->_slug ),
9374
  'trial_expired',
9375
- __fs( 'hmm', $this->_slug ) . '...'
9376
  );
9377
  $this->_admin_notices->remove_sticky( array(
9378
  'trial_started',
@@ -9440,16 +9946,16 @@
9440
  if ( ! $background ) {
9441
  $this->_admin_notices->add( sprintf(
9442
  '%s %s',
9443
- __fs( 'license-activation-failed-message', $this->_slug ),
9444
  ( is_object( $license ) && isset( $license->error ) ?
9445
  $license->error->message :
9446
  sprintf( '%s<br><code>%s</code>',
9447
- __fs( 'server-error-message', $this->_slug ),
9448
  var_export( $license, true )
9449
  )
9450
  )
9451
  ),
9452
- __fs( 'hmm', $this->_slug ) . '...',
9453
  'error'
9454
  );
9455
  }
@@ -9471,10 +9977,10 @@
9471
 
9472
  if ( ! $background ) {
9473
  $this->_admin_notices->add_sticky(
9474
- __fs( 'license-activated-message', $this->_slug ) .
9475
  $this->get_complete_upgrade_instructions(),
9476
  'license_activated',
9477
- __fs( 'yee-haw', $this->_slug ) . '!'
9478
  );
9479
  }
9480
 
@@ -9495,8 +10001,8 @@
9495
 
9496
  if ( ! is_object( $this->_license ) ) {
9497
  $this->_admin_notices->add(
9498
- sprintf( __fs( 'no-active-license-message', $this->_slug ), $this->_site->plan->title ),
9499
- __fs( 'hmm', $this->_slug ) . '...'
9500
  );
9501
 
9502
  return;
@@ -9507,9 +10013,9 @@
9507
 
9508
  if ( isset( $license->error ) ) {
9509
  $this->_admin_notices->add(
9510
- __fs( 'license-deactivation-failed-message', $this->_slug ) . '<br> ' .
9511
- __fs( 'server-error-message', $this->_slug ) . ' ' . var_export( $license->error, true ),
9512
- __fs( 'hmm', $this->_slug ) . '...',
9513
  'error'
9514
  );
9515
 
@@ -9534,8 +10040,8 @@
9534
 
9535
  if ( $show_notice ) {
9536
  $this->_admin_notices->add(
9537
- sprintf( __fs( 'license-deactivation-message', $this->_slug ), $this->_site->plan->title ),
9538
- __fs( 'ok', $this->_slug )
9539
  );
9540
  }
9541
 
@@ -9583,7 +10089,7 @@
9583
  $this->_admin_notices->remove_sticky( 'plan_upgraded' );
9584
 
9585
  $this->_admin_notices->add(
9586
- sprintf( __fs( 'plan-x-downgraded-message', $this->_slug ),
9587
  $plan->title,
9588
  human_time_diff( time(), strtotime( $this->_license->expiration ) )
9589
  )
@@ -9593,8 +10099,8 @@
9593
  $this->_store_site();
9594
  } else {
9595
  $this->_admin_notices->add(
9596
- __fs( 'plan-downgraded-failure-message', $this->_slug ),
9597
- __fs( 'oops', $this->_slug ) . '...',
9598
  'error'
9599
  );
9600
  }
@@ -9614,8 +10120,8 @@
9614
  if ( $this->is_trial() ) {
9615
  // Already in trial mode.
9616
  $this->_admin_notices->add(
9617
- __fs( 'in-trial-mode', $this->_slug ),
9618
- __fs( 'oops', $this->_slug ) . '...',
9619
  'error'
9620
  );
9621
 
@@ -9625,8 +10131,8 @@
9625
  if ( $this->_site->is_trial_utilized() ) {
9626
  // Trial was already utilized.
9627
  $this->_admin_notices->add(
9628
- __fs( 'trial-utilized', $this->_slug ),
9629
- __fs( 'oops', $this->_slug ) . '...',
9630
  'error'
9631
  );
9632
 
@@ -9639,8 +10145,8 @@
9639
  if ( false === $plan ) {
9640
  // Plan doesn't exist.
9641
  $this->_admin_notices->add(
9642
- sprintf( __fs( 'trial-plan-x-not-exist', $this->_slug ), $plan_name ),
9643
- __fs( 'oops', $this->_slug ) . '...',
9644
  'error'
9645
  );
9646
 
@@ -9650,8 +10156,8 @@
9650
  if ( ! $plan->has_trial() ) {
9651
  // Plan doesn't exist.
9652
  $this->_admin_notices->add(
9653
- sprintf( __fs( 'plan-x-no-trial', $this->_slug ), $plan_name ),
9654
- __fs( 'oops', $this->_slug ) . '...',
9655
  'error'
9656
  );
9657
 
@@ -9661,8 +10167,8 @@
9661
  if ( ! $this->has_trial_plan() ) {
9662
  // None of the plans have a trial.
9663
  $this->_admin_notices->add(
9664
- __fs( 'no-trials', $this->_slug ),
9665
- __fs( 'oops', $this->_slug ) . '...',
9666
  'error'
9667
  );
9668
 
@@ -9680,8 +10186,8 @@
9680
  if ( ! $this->is_api_result_entity( $plan ) ) {
9681
  // Some API error while trying to start the trial.
9682
  $this->_admin_notices->add(
9683
- __fs( 'unexpected-api-error', $this->_slug ) . ' ' . var_export( $plan, true ),
9684
- __fs( 'oops', $this->_slug ) . '...',
9685
  'error'
9686
  );
9687
 
@@ -9707,8 +10213,8 @@
9707
 
9708
  if ( ! $this->is_trial() ) {
9709
  $this->_admin_notices->add(
9710
- __fs( 'trial-cancel-no-trial-message', $this->_slug ),
9711
- __fs( 'oops', $this->_slug ) . '...',
9712
  'error'
9713
  );
9714
 
@@ -9758,7 +10264,7 @@
9758
  ! $this->deactivate_premium_only_addon_without_license( true )
9759
  ) {
9760
  $this->_admin_notices->add(
9761
- sprintf( __fs( 'trial-cancel-message', $this->_slug ), $this->_storage->trial_plan->title )
9762
  );
9763
  }
9764
 
@@ -9766,8 +10272,8 @@
9766
  unset( $this->_storage->trial_plan );
9767
  } else {
9768
  $this->_admin_notices->add(
9769
- __fs( 'trial-cancel-failure-message', $this->_slug ),
9770
- __fs( 'oops', $this->_slug ) . '...',
9771
  'error'
9772
  );
9773
  }
@@ -9996,21 +10502,21 @@
9996
  if ( ! $background ) {
9997
  $this->_admin_notices->add(
9998
  sprintf(
9999
- __fs( 'version-x-released', $this->_slug ) . ' ' . __fs( 'please-download-x', $this->_slug ),
10000
  $update->version,
10001
  sprintf(
10002
  '<a href="%s" target="_blank">%s</a>',
10003
  $this->get_account_url( 'download_latest' ),
10004
- sprintf( __fs( 'latest-x-version', $this->_slug ), $this->_site->plan->title )
10005
  )
10006
  ),
10007
- __fs( 'new', $this->_slug ) . '!'
10008
  );
10009
  }
10010
  } else if ( false === $new_version && ! $background ) {
10011
  $this->_admin_notices->add(
10012
- __fs( 'you-have-latest', $this->_slug ),
10013
- __fs( 'you-are-good', $this->_slug )
10014
  );
10015
  }
10016
 
@@ -10276,7 +10782,7 @@
10276
 
10277
  if ( ! isset( $result->error ) ) {
10278
  $this->_admin_notices->add( sprintf(
10279
- __fs( 'verification-email-sent-message', $this->_slug ),
10280
  sprintf( '<a href="mailto:%1s">%2s</a>', esc_url( $this->_user->email ), $this->_user->email )
10281
  ) );
10282
  } else {
@@ -10294,6 +10800,14 @@
10294
  * @return string
10295
  */
10296
  private function get_activation_url( $params = array() ) {
 
 
 
 
 
 
 
 
10297
  return $this->apply_filters( 'connect_url', $this->_get_admin_page_url( '', $params ) );
10298
  }
10299
 
@@ -10341,7 +10855,7 @@
10341
  *
10342
  */
10343
  private function _handle_account_edits() {
10344
- if ( ! current_user_can( 'activate_plugins' ) ) {
10345
  return;
10346
  }
10347
 
@@ -10424,20 +10938,20 @@
10424
  $candidate_email = fs_request_get( 'candidate_email', '' );
10425
 
10426
  if ( $this->init_change_owner( $candidate_email ) ) {
10427
- $this->_admin_notices->add( sprintf( __fs( 'change-owner-request-sent-x', $this->_slug ), '<b>' . $this->_user->email . '</b>' ) );
10428
  }
10429
  break;
10430
  case 'owner_confirmed':
10431
  $candidate_email = fs_request_get( 'candidate_email', '' );
10432
 
10433
- $this->_admin_notices->add( sprintf( __fs( 'change-owner-request_owner-confirmed', $this->_slug ), '<b>' . $candidate_email . '</b>' ) );
10434
  break;
10435
  case 'candidate_confirmed':
10436
  if ( $this->complete_change_owner() ) {
10437
  $this->_admin_notices->add_sticky(
10438
- sprintf( __fs( 'change-owner-request_candidate-confirmed', $this->_slug ), '<b>' . $this->_user->email . '</b>' ),
10439
  'ownership_changed',
10440
- __fs( 'congrats', $this->_slug ) . '!'
10441
  );
10442
  } else {
10443
  // @todo Handle failed ownership change message.
@@ -10457,23 +10971,23 @@
10457
  switch ( $result->error->code ) {
10458
  case 'user_exist':
10459
  $this->_admin_notices->add(
10460
- __fs( 'user-exist-message', $this->_slug ) . ' ' .
10461
- sprintf( __fs( 'user-exist-message_ownership', $this->_slug ), '<b>' . $new_email . '</b>' ) .
10462
  sprintf(
10463
  '<a style="margin-left: 10px;" href="%s"><button class="button button-primary">%s &nbsp;&#10140;</button></a>',
10464
  $this->get_account_url( 'change_owner', array(
10465
  'state' => 'init',
10466
  'candidate_email' => $new_email
10467
  ) ),
10468
- __fs( 'change-ownership', $this->_slug )
10469
  ),
10470
- __fs( 'oops', $this->_slug ) . '...',
10471
  'error'
10472
  );
10473
  break;
10474
  }
10475
  } else {
10476
- $this->_admin_notices->add( __fs( 'email-updated-message', $this->_slug ) );
10477
  }
10478
 
10479
  return;
@@ -10485,12 +10999,12 @@
10485
 
10486
  if ( isset( $result->error ) ) {
10487
  $this->_admin_notices->add(
10488
- __fs( 'name-update-failed-message', $this->_slug ),
10489
- __fs( 'oops', $this->_slug ) . '...',
10490
  'error'
10491
  );
10492
  } else {
10493
- $this->_admin_notices->add( __fs( 'name-updated-message', $this->_slug ) );
10494
  }
10495
 
10496
  return;
@@ -10550,7 +11064,7 @@
10550
  $this->do_action( 'account_property_edit', 'site', $site_property, $site_property_value );
10551
 
10552
  $this->_admin_notices->add( sprintf(
10553
- __fs( 'x-updated', $this->_slug ),
10554
  '<b>' . str_replace( '_', ' ', $p ) . '</b>' ) );
10555
 
10556
  return;
@@ -10675,8 +11189,8 @@
10675
 
10676
  if ( ! $this->is_registered() && $this->is_org_repo_compliant() ) {
10677
  $this->_admin_notices->add(
10678
- sprintf( __fs( 'addons-info-external-message', $this->_slug ), '<b>' . $this->get_plugin_name() . '</b>' ),
10679
- __fs( 'heads-up', $this->_slug ),
10680
  'update-nag'
10681
  );
10682
  }
@@ -10913,7 +11427,7 @@
10913
  * @return bool If trial notice added.
10914
  */
10915
  function _add_trial_notice() {
10916
- if ( ! current_user_can( 'activate_plugins' ) ) {
10917
  return false;
10918
  }
10919
 
@@ -10982,7 +11496,7 @@
10982
  $trial_period = $this->_trial_days;
10983
  $require_payment = $this->_is_trial_require_payment;
10984
  $trial_url = $this->get_trial_url();
10985
- $plans_string = strtolower( __fs( 'awesome', $this->_slug ) );
10986
 
10987
  if ( $this->is_registered() ) {
10988
  // If opted-in, override trial with up to date data from API.
@@ -11022,7 +11536,7 @@
11022
  }
11023
 
11024
  $message = sprintf(
11025
- __fs( 'hey', $this->_slug ) . '! ' . __fs( 'trial-x-promotion-message', $this->_slug ),
11026
  sprintf( '<b>%s</b>', $this->get_plugin_name() ),
11027
  $plans_string,
11028
  $trial_period
@@ -11030,15 +11544,15 @@
11030
 
11031
  // "No Credit-Card Required" or "No Commitment for N Days".
11032
  $cc_string = $require_payment ?
11033
- sprintf( __fs( 'no-commitment-for-x-days', $this->_slug ), $trial_period ) :
11034
- __fs( 'no-cc-required', $this->_slug ) . '!';
11035
 
11036
 
11037
  // Start trial button.
11038
  $button = ' ' . sprintf(
11039
  '<a style="margin-left: 10px; vertical-align: super;" href="%s"><button class="button button-primary">%s &nbsp;&#10140;</button></a>',
11040
  $trial_url,
11041
- __fs( 'start-free-trial', $this->_slug )
11042
  );
11043
 
11044
  $this->_admin_notices->add_sticky(
@@ -11136,7 +11650,7 @@
11136
  if ( $this->is_registered() ) {
11137
  if ( ! $this->is_paying() && $this->has_paid_plan() ) {
11138
  $this->add_plugin_action_link(
11139
- __fs( 'upgrade', $this->_slug ),
11140
  $this->get_upgrade_url(),
11141
  false,
11142
  7,
@@ -11146,7 +11660,7 @@
11146
 
11147
  if ( $this->has_addons() ) {
11148
  $this->add_plugin_action_link(
11149
- __fs( 'add-ons', $this->_slug ),
11150
  $this->_get_admin_page_url( 'addons' ),
11151
  false,
11152
  9,
@@ -11174,9 +11688,10 @@
11174
  add_action( 'admin_footer', array( &$this, '_add_license_activation_dialog_box' ) );
11175
  }
11176
 
11177
- $link_text = __fs(
11178
- $this->is_free_plan() ? 'activate-license' : 'change-license',
11179
- $this->_slug
 
11180
  );
11181
 
11182
  $this->add_plugin_action_link(
@@ -11201,6 +11716,11 @@
11201
 
11202
  $this->_logger->entrance();
11203
 
 
 
 
 
 
11204
  if ( ! $this->is_enable_anonymous() ) {
11205
  // Don't allow to opt-out if anonymous mode is disabled.
11206
  return;
@@ -11251,7 +11771,7 @@
11251
  }
11252
 
11253
  $this->add_plugin_action_link(
11254
- __fs( $link_text_id, $this->_slug ),
11255
  $url,
11256
  false,
11257
  13,
@@ -11353,15 +11873,12 @@
11353
  }
11354
 
11355
  if ( ! empty( $deactivate_link ) ) {
11356
- if ( ! $this->is_paying_or_trial() || $this->is_premium() ) {
11357
- /*
11358
- * This HTML element is used to identify the correct plugin when attaching an event to its Deactivate link.
11359
- *
11360
- * If user is paying or in trial and have the free version installed,
11361
- * assume that the deactivation is for the upgrade process, so this is not needed.
11362
- */
11363
- $deactivate_link .= '<i class="fs-slug" data-slug="' . $this->_slug . '"></i>';
11364
- }
11365
 
11366
  // Append deactivation link.
11367
  $before_deactivate['deactivate'] = $deactivate_link;
@@ -11422,20 +11939,20 @@
11422
 
11423
  // @since 1.2.1.5 The free version is auto deactivated.
11424
  $deactivation_step = version_compare( $this->version, '1.2.1.5', '<' ) ?
11425
- ( '<li>' . __fs( 'deactivate-free-version', $this->_slug ) . '.</li>' ) :
11426
  '';
11427
 
11428
  return sprintf(
11429
  ' %s: <ol><li>%s.</li>%s<li>%s (<a href="%s" target="_blank">%s</a>).</li></ol>',
11430
- __fs( 'follow-steps-to-complete-upgrade', $this->_slug ),
11431
  $this->get_latest_download_link( sprintf(
11432
- __fs( 'download-latest-x-version', $this->_slug ),
11433
  $plan_title
11434
  ) ),
11435
  $deactivation_step,
11436
- __fs( 'upload-and-activate', $this->_slug ),
11437
  '//bit.ly/upload-wp-plugin',
11438
- __fs( 'howto-upload-activate', $this->_slug )
11439
  );
11440
  }
11441
 
@@ -11490,6 +12007,18 @@
11490
  return $update;
11491
  }
11492
 
 
 
 
 
 
 
 
 
 
 
 
 
11493
  #----------------------------------------------------------------------------------
11494
  #region Versioning
11495
  #----------------------------------------------------------------------------------
@@ -11537,8 +12066,6 @@
11537
  *
11538
  * @author Vova Feldman (@svovaf)
11539
  * @since 1.0.9
11540
- *
11541
- * @return bool
11542
  */
11543
  function set_plugin_upgrade_complete() {
11544
  $this->_storage->plugin_upgrade_mode = false;
@@ -11566,6 +12093,168 @@
11566
 
11567
  #endregion
11568
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11569
  #----------------------------------------------------------------------------------
11570
  #region Marketing
11571
  #----------------------------------------------------------------------------------
335
  $this->_version_updates_handler();
336
  }
337
 
338
+ /**
339
+ * Checks whether this plugin or theme has settings menu.
340
+ *
341
+ * @author Leo Fajardo (@leorw)
342
+ * @since 1.2.2
343
+ *
344
+ * @return bool
345
+ */
346
+ function has_settings_menu() {
347
+ /**
348
+ * At the moment the wp.org require to show the opt-in in
349
+ * the themes page. Therefore, if the theme is .org compliant,
350
+ * treat it as if it doesn't have a menu item.
351
+ */
352
+ if ( $this->is_theme() && $this->is_org_repo_compliant() ) {
353
+ return false;
354
+ }
355
+
356
+ return $this->_menu->has_menu();
357
+ }
358
+
359
+ /**
360
+ * Checks whether this a submenu item is visible.
361
+ *
362
+ * @author Vova Feldman (@svovaf)
363
+ * @since 1.2.2.6
364
+ *
365
+ * @param string $slug
366
+ *
367
+ * @return bool
368
+ */
369
+ function is_submenu_item_visible( $slug ) {
370
+ if ( ! $this->has_settings_menu() ) {
371
+ return false;
372
+ }
373
+
374
+ return $this->_menu->is_submenu_item_visible( $slug );
375
+ }
376
+
377
  /**
378
  * @author Vova Feldman (@svovaf)
379
  * @since 1.0.9
566
  $this->add_ajax_action( 'update_billing', array( &$this, '_update_billing_ajax_action' ) );
567
  $this->add_ajax_action( 'start_trial', array( &$this, '_start_trial_ajax_action' ) );
568
 
569
+ $this->add_ajax_action( 'install_premium_version', array(
570
+ &$this,
571
+ '_install_premium_version_ajax_action'
572
+ ) );
573
+
574
  $this->add_action( 'after_plans_sync', array( &$this, '_check_for_trial_plans' ) );
575
 
576
  $this->add_action( 'sdk_version_update', array( &$this, '_data_migration' ), WP_FS__DEFAULT_PRIORITY, 2 );
678
  if ( isset( $this->_storage->plugin_main_file ) ) {
679
  $plugin_main_file = $this->_storage->plugin_main_file;
680
  if ( isset( $plugin_main_file->path ) && file_exists( $plugin_main_file->path ) ) {
681
+ return $plugin_main_file->path;
682
  }
683
  }
684
 
703
  }
704
 
705
  wp_die(
706
+ $this->get_text( 'failed-finding-main-path' ) .
707
+ " Module: {$this->_slug}; SDK: " . WP_FS__SDK_VERSION . ";",
708
+ $this->get_text( 'error' ),
709
  array( 'back_link' => true )
710
  );
711
  }
716
  * Only the original instantiator that calls dynamic_init can modify the module's path.
717
  */
718
  // Find caller module.
719
+ $file_and_type = $this->get_caller_main_file_and_type();
720
+ $plugin_file = $file_and_type->path;
721
 
722
  $this->_storage->plugin_main_file = (object) array(
723
  'path' => fs_normalize_path( $plugin_file ),
726
  return $plugin_file;
727
  }
728
 
729
+ /**
730
+ * Identifies the caller path.
731
+ *
732
+ * @todo (Vova) When merging this branch with the theme's one, use the theme's one instead of this one.
733
+ *
734
+ * @author Leo Fajardo (@leorw)
735
+ * @since 1.2.2
736
+ *
737
+ * @author Vova Feldman (@svovaf)
738
+ * @since 1.2.2.3 Find the earliest module in the call stack that calls to the SDK. This fix is for cases
739
+ * when add-ons are relying on loading the SDK from the parent module, and also allows themes
740
+ * including the SDK an internal file instead of directly from functions.php.
741
+ * @since 1.2.1.7 Knows how to handle cases when an add-on includes the parent module logic.
742
+ */
743
+ private function get_caller_main_file_and_type() {
744
+ self::require_plugin_essentials();
745
+
746
+ $all_plugins = get_plugins();
747
+ $all_plugins_paths = array();
748
+
749
+ // Get active plugin's main files real full names (might be symlinks).
750
+ foreach ( $all_plugins as $relative_path => &$data ) {
751
+ if ( false === strpos( fs_normalize_path( $relative_path ), '/' ) ) {
752
+ /**
753
+ * Ignore plugins that don't have a folder (e.g. Hello Dolly) since they
754
+ * can't really include the SDK.
755
+ *
756
+ * @author Vova Feldman
757
+ * @since 1.2.1.7
758
+ */
759
+ continue;
760
+ }
761
+
762
+ $all_plugins_paths[] = fs_normalize_path( realpath( WP_PLUGIN_DIR . '/' . $relative_path ) );
763
+ }
764
+
765
+ $caller_file_candidate = false;
766
+ $caller_map = array();
767
+ $module_type = WP_FS__MODULE_TYPE_PLUGIN;
768
+
769
+ for ( $i = 1, $bt = debug_backtrace(), $len = count( $bt ); $i < $len; $i ++ ) {
770
+ if ( empty( $bt[ $i ]['file'] ) ) {
771
+ continue;
772
+ }
773
+
774
+ if ( $i > 1 && ! empty( $bt[ $i - 1 ]['file'] ) && $bt[ $i ]['file'] === $bt[ $i - 1 ]['file'] ) {
775
+ // If file same as the prev file in the stack, skip it.
776
+ continue;
777
+ }
778
+
779
+ if ( ! empty( $bt[ $i ]['function'] ) && in_array( $bt[ $i ]['function'], array(
780
+ 'do_action',
781
+ 'apply_filter',
782
+ 'require_once',
783
+ 'require',
784
+ 'include_once',
785
+ 'include'
786
+ ) )
787
+ ) {
788
+ // Ignore call stack hooks and files inclusion.
789
+ continue;
790
+ }
791
+
792
+ $caller_file_path = fs_normalize_path( $bt[ $i ]['file'] );
793
+ $caller_file_hash = md5( $caller_file_path );
794
+
795
+ if ( ! isset( $caller_map[ $caller_file_hash ] ) ) {
796
+ foreach ( $all_plugins_paths as $plugin_path ) {
797
+ if ( false !== strpos( $caller_file_path, fs_normalize_path( dirname( $plugin_path ) . '/' ) ) ) {
798
+ $caller_map[ $caller_file_hash ] = fs_normalize_path( $plugin_path );
799
+ break;
800
+ }
801
+ }
802
+ }
803
+
804
+ if ( isset( $caller_map[ $caller_file_hash ] ) ) {
805
+ $module_type = WP_FS__MODULE_TYPE_PLUGIN;
806
+ $caller_file_candidate = $caller_map[ $caller_file_hash ];
807
+ }
808
+ }
809
+
810
+ if ( empty( $caller_file_candidate ) ) {
811
+ // Throw an error to the developer in case of some edge case dev environment.
812
+ wp_die( $this->get_text( 'failed-finding-main-path' ), $this->get_text( 'error' ), array( 'back_link' => true ) );
813
+ }
814
+
815
+ return (object) array(
816
+ 'module_type' => $module_type,
817
+ 'path' => $caller_file_candidate
818
+ );
819
+ }
820
 
821
  #----------------------------------------------------------------------------------
822
  #region Deactivation Feedback Form
898
 
899
  $reason_found_better_plugin = array(
900
  'id' => self::REASON_FOUND_A_BETTER_PLUGIN,
901
+ 'text' => $this->get_text( 'reason-found-a-better-plugin' ),
902
  'input_type' => 'textfield',
903
+ 'input_placeholder' => $this->get_text( 'placeholder-plugin-name' )
904
  );
905
 
906
  $reason_temporary_deactivation = array(
907
  'id' => self::REASON_TEMPORARY_DEACTIVATION,
908
+ 'text' => $this->get_text( 'reason-temporary-deactivation' ),
909
  'input_type' => '',
910
  'input_placeholder' => ''
911
  );
912
 
913
  $reason_other = array(
914
  'id' => self::REASON_OTHER,
915
+ 'text' => $this->get_text( 'reason-other' ),
916
  'input_type' => 'textfield',
917
  'input_placeholder' => ''
918
  );
920
  $long_term_user_reasons = array(
921
  array(
922
  'id' => self::REASON_NO_LONGER_NEEDED,
923
+ 'text' => $this->get_text( 'reason-no-longer-needed' ),
924
  'input_type' => '',
925
  'input_placeholder' => ''
926
  ),
927
  $reason_found_better_plugin,
928
  array(
929
  'id' => self::REASON_NEEDED_FOR_A_SHORT_PERIOD,
930
+ 'text' => $this->get_text( 'reason-needed-for-a-short-period' ),
931
  'input_type' => '',
932
  'input_placeholder' => ''
933
  ),
934
  array(
935
  'id' => self::REASON_BROKE_MY_SITE,
936
+ 'text' => $this->get_text( 'reason-broke-my-site' ),
937
  'input_type' => '',
938
  'input_placeholder' => '',
939
  'internal_message' => $contact_support_template
940
  ),
941
  array(
942
  'id' => self::REASON_SUDDENLY_STOPPED_WORKING,
943
+ 'text' => $this->get_text( 'reason-suddenly-stopped-working' ),
944
  'input_type' => '',
945
  'input_placeholder' => '',
946
  'internal_message' => $contact_support_template
950
  if ( $this->is_paying() ) {
951
  $long_term_user_reasons[] = array(
952
  'id' => self::REASON_CANT_PAY_ANYMORE,
953
+ 'text' => $this->get_text( 'reason-cant-pay-anymore' ),
954
  'input_type' => 'textfield',
955
+ 'input_placeholder' => $this->get_text( 'placeholder-comfortable-price' )
956
  );
957
  }
958
 
959
  $reason_dont_share_info = array(
960
  'id' => self::REASON_DONT_LIKE_TO_SHARE_MY_INFORMATION,
961
+ 'text' => $this->get_text( 'reason-dont-like-to-share-my-information' ),
962
  'input_type' => '',
963
  'input_placeholder' => ''
964
  );
979
  'non-registered-and-non-anonymous-short-term' => array(
980
  array(
981
  'id' => self::REASON_DIDNT_WORK,
982
+ 'text' => $this->get_text( 'reason-didnt-work' ),
983
  'input_type' => '',
984
  'input_placeholder' => ''
985
  ),
989
  'short-term' => array(
990
  array(
991
  'id' => self::REASON_COULDNT_MAKE_IT_WORK,
992
+ 'text' => $this->get_text( 'reason-couldnt-make-it-work' ),
993
  'input_type' => '',
994
  'input_placeholder' => '',
995
  'internal_message' => $contact_support_template
997
  $reason_found_better_plugin,
998
  array(
999
  'id' => self::REASON_GREAT_BUT_NEED_SPECIFIC_FEATURE,
1000
+ 'text' => $this->get_text( 'reason-great-but-need-specific-feature' ),
1001
  'input_type' => 'textarea',
1002
+ 'input_placeholder' => $this->get_text( 'placeholder-feature' )
1003
  ),
1004
  array(
1005
  'id' => self::REASON_NOT_WORKING,
1006
+ 'text' => $this->get_text( 'reason-not-working' ),
1007
  'input_type' => 'textarea',
1008
+ 'input_placeholder' => $this->get_text( 'placeholder-share-what-didnt-work' )
1009
  ),
1010
  array(
1011
  'id' => self::REASON_NOT_WHAT_I_WAS_LOOKING_FOR,
1012
+ 'text' => $this->get_text( 'reason-not-what-i-was-looking-for' ),
1013
  'input_type' => 'textarea',
1014
+ 'input_placeholder' => $this->get_text( 'placeholder-what-youve-been-looking-for' )
1015
  ),
1016
  array(
1017
  'id' => self::REASON_DIDNT_WORK_AS_EXPECTED,
1018
+ 'text' => $this->get_text( 'reason-didnt-work-as-expected' ),
1019
  'input_type' => 'textarea',
1020
+ 'input_placeholder' => $this->get_text( 'placeholder-what-did-you-expect' )
1021
  )
1022
  )
1023
  );
1041
  * @since 1.1.2
1042
  */
1043
  function _submit_uninstall_reason_action() {
1044
+ $this->_logger->entrance();
1045
+
1046
+ $this->check_ajax_referer( 'submit_uninstall_reason' );
1047
+
1048
  $reason_id = fs_request_get( 'reason_id' );
1049
 
1050
  // Check if the given reason ID is an unsigned integer.
1085
  * @param string $slug
1086
  * @param bool $is_init Is initiation sequence.
1087
  *
1088
+ * @return Freemius|false
1089
  */
1090
  static function instance( $slug, $is_init = false ) {
1091
+ if ( empty( $slug ) ) {
1092
+ return false;
1093
+ }
1094
+
1095
  $slug = strtolower( $slug );
1096
 
1097
  if ( ! isset( self::$_instances[ $slug ] ) ) {
1123
  * @author Vova Feldman (@svovaf)
1124
  * @since 1.0.6
1125
  *
1126
+ * @param number $id
1127
  *
1128
  * @return false|Freemius
1129
  */
1168
  * @author Vova Feldman (@svovaf)
1169
  * @since 1.0.6
1170
  *
1171
+ * @param string|number $slug_or_id
1172
  *
1173
  * @return bool|Freemius
1174
  */
1226
  );
1227
  }
1228
 
1229
+ /**
1230
+ * Check if current page is the opt-in/pending-activation page.
1231
+ *
1232
+ * @author Vova Feldman (@svovaf)
1233
+ * @since 1.2.1.7
1234
+ *
1235
+ * @return bool
1236
+ */
1237
+ function is_activation_page() {
1238
+ if ( $this->_menu->is_main_settings_page() ) {
1239
+ return true;
1240
+ }
1241
+
1242
+ if ( ! $this->is_activation_mode() ) {
1243
+ return false;
1244
+ }
1245
+
1246
+ // Check if current page is matching the activation page.
1247
+ return $this->is_matching_url( $_SERVER['REQUEST_URI'], $this->get_activation_url() );
1248
+ }
1249
+
1250
+ /**
1251
+ * Check if URL path's are matching and that all querystring
1252
+ * arguments of the $sub_url exist in the $url with the same values.
1253
+ *
1254
+ * WARNING:
1255
+ * 1. This method doesn't check if the sub/domain are matching.
1256
+ * 2. Ignore case sensitivity.
1257
+ *
1258
+ * @author Vova Feldman (@svovaf)
1259
+ * @since 1.2.1.7
1260
+ *
1261
+ * @param string $url
1262
+ * @param string $sub_url
1263
+ *
1264
+ * @return bool
1265
+ */
1266
+ private function is_matching_url( $url, $sub_url ) {
1267
+ $url = strtolower( $url );
1268
+ $sub_url = strtolower( $sub_url );
1269
+
1270
+ if ( parse_url( $sub_url, PHP_URL_PATH ) !== parse_url( $url, PHP_URL_PATH ) ) {
1271
+ // Different path - DO NOT OVERRIDE PAGE.
1272
+ return false;
1273
+ }
1274
+
1275
+ $url_params = array();
1276
+ parse_str( parse_url( $url, PHP_URL_QUERY ), $url_params );
1277
+
1278
+ $sub_url_params = array();
1279
+ parse_str( parse_url( $sub_url, PHP_URL_QUERY ), $sub_url_params );
1280
+
1281
+ foreach ( $sub_url_params as $key => $val ) {
1282
+ if ( ! isset( $url_params[ $key ] ) || $val != $url_params[ $key ] ) {
1283
+ // Not matching query string - DO NOT OVERRIDE PAGE.
1284
+ return false;
1285
+ }
1286
+ }
1287
+
1288
+ return true;
1289
+ }
1290
+
1291
  /**
1292
  * Get collection of all active plugins.
1293
  *
1420
  // Configure which Freemius powered plugins should be auto updated.
1421
  // add_filter( 'auto_update_plugin', '_include_plugins_in_auto_update', 10, 2 );
1422
 
1423
+ add_action( 'admin_menu', array( 'Freemius', '_add_debug_section' ) );
1424
 
1425
  add_action( "wp_ajax_fs_toggle_debug_mode", array( 'Freemius', '_toggle_debug_mode' ) );
1426
 
1427
  self::add_ajax_action_static( 'get_debug_log', array( 'Freemius', '_get_debug_log' ) );
1428
 
1429
+ self::add_ajax_action_static( 'get_db_option', array( 'Freemius', '_get_db_option' ) );
1430
+
1431
+ self::add_ajax_action_static( 'set_db_option', array( 'Freemius', '_set_db_option' ) );
1432
+
1433
  add_action( 'plugins_loaded', array( 'Freemius', '_load_textdomain' ), 1 );
1434
 
1435
  self::$_statics_loaded = true;
1452
 
1453
  global $fs_active_plugins;
1454
 
1455
+ // Works both for plugins and themes.
1456
  load_plugin_textdomain(
1457
  'freemius',
1458
  false,
1459
  $fs_active_plugins->newest->sdk_path . '/languages/'
1460
  );
 
 
1461
  }
1462
 
1463
  #endregion
1470
  * @author Vova Feldman (@svovaf)
1471
  * @since 1.0.8
1472
  */
1473
+ static function _add_debug_section() {
1474
  if ( ! current_user_can( 'activate_plugins' ) ) {
1475
  return;
1476
  }
1477
 
1478
  self::$_static_logger->entrance();
1479
 
1480
+ $title = sprintf( '%s [v.%s]', fs_text( 'freemius-debug' ), WP_FS__SDK_VERSION );
1481
 
1482
  $hook = null;
1483
 
1484
  if ( WP_FS__DEV_MODE ) {
1485
  // Add top-level debug menu item.
1486
+ $hook = FS_Admin_Menu_Manager::add_page(
1487
  $title,
1488
  $title,
1489
  'manage_options',
1493
  } else {
1494
  if ( 'freemius' === fs_request_get( 'page' ) ) {
1495
  // Add hidden debug page.
1496
+ $hook = FS_Admin_Menu_Manager::add_subpage(
1497
  null,
1498
  $title,
1499
  $title,
1514
  * @since 1.1.7.3
1515
  */
1516
  static function _toggle_debug_mode() {
1517
+ $is_on = fs_request_get( 'is_on', false, 'post' );
1518
+
1519
+ if ( fs_request_is_post() && in_array( $is_on, array( 0, 1 ) ) ) {
1520
+ update_option( 'fs_debug_mode', $is_on );
1521
 
1522
  // Turn on/off storage logging.
1523
+ FS_Logger::_set_storage_logging( ( 1 == $is_on ) );
1524
  }
1525
 
1526
  exit;
1532
  */
1533
  static function _get_debug_log() {
1534
  $logs = FS_Logger::load_db_logs(
1535
+ fs_request_get( 'filters', false, 'post' ),
1536
  ! empty( $_POST['limit'] ) && is_numeric( $_POST['limit'] ) ? $_POST['limit'] : 200,
1537
  ! empty( $_POST['offset'] ) && is_numeric( $_POST['offset'] ) ? $_POST['offset'] : 0
1538
  );
1540
  self::shoot_ajax_success( $logs );
1541
  }
1542
 
1543
+ /**
1544
+ * @author Vova Feldman (@svovaf)
1545
+ * @since 1.2.1.7
1546
+ */
1547
+ static function _get_db_option() {
1548
+ $option_name = fs_request_get( 'option_name' );
1549
+
1550
+ $value = get_option( $option_name );
1551
+
1552
+ $result = array(
1553
+ 'name' => $option_name,
1554
+ );
1555
+
1556
+ if ( false !== $value ) {
1557
+ if ( ! is_string( $value ) ) {
1558
+ $value = json_encode( $value );
1559
+ }
1560
+
1561
+ $result['value'] = $value;
1562
+ }
1563
+
1564
+ self::shoot_ajax_success( $result );
1565
+ }
1566
+
1567
+ /**
1568
+ * @author Vova Feldman (@svovaf)
1569
+ * @since 1.2.1.7
1570
+ */
1571
+ static function _set_db_option() {
1572
+ $option_name = fs_request_get( 'option_name' );
1573
+ $option_value = fs_request_get( 'option_value' );
1574
+
1575
+ if ( ! empty( $option_value ) ) {
1576
+ update_option( $option_name, $option_value );
1577
+ }
1578
+
1579
+ self::shoot_ajax_success();
1580
+ }
1581
+
1582
+
1583
  /**
1584
  * @author Vova Feldman (@svovaf)
1585
  * @since 1.0.8
1610
  check_admin_referer( 'download_logs' );
1611
 
1612
  $download_url = FS_Logger::download_db_logs(
1613
+ fs_request_get( 'filters', false, 'post' )
1614
  );
1615
 
1616
  if ( false === $download_url ) {
1628
  static function _debug_page_render() {
1629
  self::$_static_logger->entrance();
1630
 
 
 
 
 
 
 
 
 
 
1631
  $vars = array(
1632
+ 'sites' => self::get_all_sites(),
1633
+ 'users' => self::get_all_users(),
1634
+ 'addons' => self::get_all_addons(),
1635
+ 'account_addons' => self::get_all_account_addons(),
1636
+ 'licenses' => self::get_all_licenses(),
1637
  );
1638
 
1639
  fs_enqueue_local_style( 'fs_debug', '/admin/debug.css' );
1948
  ) {
1949
  switch ( $api_result->error->code ) {
1950
  case 'curl_missing':
1951
+ $missing_methods = '';
1952
+ if ( is_array( $api_result->missing_methods ) &&
1953
+ ! empty( $api_result->missing_methods )
1954
+ ) {
1955
+ foreach ( $api_result->missing_methods as $m ) {
1956
+ if ( 'curl_version' === $m ) {
1957
+ continue;
1958
+ }
1959
+
1960
+ if ( ! empty( $missing_methods ) ) {
1961
+ $missing_methods .= ', ';
1962
+ }
1963
+
1964
+ $missing_methods .= sprintf( '<code>%s</code>', $m );
1965
+ }
1966
+
1967
+ if ( ! empty( $missing_methods ) ) {
1968
+ $missing_methods = sprintf(
1969
+ '<br><br><b>%s</b> %s',
1970
+ $this->get_text( 'curl-disabled-methods' ),
1971
+ $missing_methods
1972
+ );
1973
+ }
1974
+ }
1975
+
1976
  $message = sprintf(
1977
+ $this->get_text( 'x-requires-access-to-api' ) . ' ' .
1978
+ $this->get_text( 'curl-missing-message' ) . ' ' .
1979
+ $missing_methods .
1980
  ' %s',
1981
  '<b>' . $this->get_plugin_name() . '</b>',
1982
  sprintf(
1983
  '<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
1984
  sprintf(
1985
  '<a class="fs-resolve" data-type="curl" href="#"><b>%s</b></a>%s',
1986
+ $this->get_text( 'curl-missing-no-clue-title' ),
1987
  ' - ' . sprintf(
1988
+ $this->get_text( 'curl-missing-no-clue-desc' ),
1989
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
1990
  )
1991
  ),
1992
  sprintf(
1993
  '<b>%s</b> - %s',
1994
+ $this->get_text( 'sysadmin-title' ),
1995
+ $this->get_text( 'curl-missing-sysadmin-desc' )
1996
  ),
1997
  sprintf(
1998
  '<a href="%s"><b>%s</b></a>%s',
1999
  wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=' . 'all' . '&amp;paged=' . '1' . '&amp;s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
2000
+ $this->get_text( 'deactivate-plugin-title' ),
2001
+ ' - ' . $this->get_text( 'deactivate-plugin-desc' )
2002
  )
2003
  )
2004
  );
2005
  break;
2006
  case 'cloudflare_ddos_protection':
2007
  $message = sprintf(
2008
+ $this->get_text( 'x-requires-access-to-api' ) . ' ' .
2009
+ $this->get_text( 'cloudflare-blocks-connection-message' ) . ' ' .
2010
+ $this->get_text( 'happy-to-resolve-issue-asap' ) .
2011
  ' %s',
2012
  '<b>' . $this->get_plugin_name() . '</b>',
2013
  sprintf(
2014
  '<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
2015
  sprintf(
2016
  '<a class="fs-resolve" data-type="cloudflare" href="#"><b>%s</b></a>%s',
2017
+ $this->get_text( 'fix-issue-title' ),
2018
  ' - ' . sprintf(
2019
+ $this->get_text( 'fix-issue-desc' ),
2020
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
2021
  )
2022
  ),
2023
  sprintf(
2024
  '<a href="%s" target="_blank"><b>%s</b></a>%s',
2025
  sprintf( 'https://wordpress.org/plugins/%s/download/', $this->_slug ),
2026
+ $this->get_text( 'install-previous-title' ),
2027
+ ' - ' . $this->get_text( 'install-previous-desc' )
2028
  ),
2029
  sprintf(
2030
  '<a href="%s"><b>%s</b></a>%s',
2031
  wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=' . 'all' . '&amp;paged=' . '1' . '&amp;s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
2032
+ $this->get_text( 'deactivate-plugin-title' ),
2033
+ ' - ' . $this->get_text( 'deactivate-plugin-desc' )
2034
  )
2035
  )
2036
  );
2037
  break;
2038
  case 'squid_cache_block':
2039
  $message = sprintf(
2040
+ $this->get_text( 'x-requires-access-to-api' ) . ' ' .
2041
+ $this->get_text( 'squid-blocks-connection-message' ) .
2042
  ' %s',
2043
  '<b>' . $this->get_plugin_name() . '</b>',
2044
  sprintf(
2045
  '<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
2046
  sprintf(
2047
  '<a class="fs-resolve" data-type="squid" href="#"><b>%s</b></a>%s',
2048
+ $this->get_text( 'squid-no-clue-title' ),
2049
  ' - ' . sprintf(
2050
+ $this->get_text( 'squid-no-clue-desc' ),
2051
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
2052
  )
2053
  ),
2054
  sprintf(
2055
  '<b>%s</b> - %s',
2056
+ $this->get_text( 'sysadmin-title' ),
2057
  sprintf(
2058
+ $this->get_text( 'squid-sysadmin-desc' ),
2059
  // We use a filter since the plugin might require additional API connectivity.
2060
  '<b>' . implode( ', ', $this->apply_filters( 'api_domains', array( 'api.freemius.com' ) ) ) . '</b>' )
2061
  ),
2062
  sprintf(
2063
  '<a href="%s"><b>%s</b></a>%s',
2064
  wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=' . 'all' . '&amp;paged=' . '1' . '&amp;s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
2065
+ $this->get_text( 'deactivate-plugin-title' ),
2066
+ ' - ' . $this->get_text( 'deactivate-plugin-desc' )
2067
  )
2068
  )
2069
  );
2070
  break;
2071
  // default:
2072
+ // $message = $this->get_text( 'connectivity-test-fails-message' );
2073
  // break;
2074
  }
2075
  }
2081
  if ( $is_first_failure ) {
2082
  // First attempt failed.
2083
  $message = sprintf(
2084
+ $this->get_text( 'x-requires-access-to-api' ) . ' ' .
2085
+ $this->get_text( 'connectivity-test-fails-message' ) . ' ' .
2086
+ $this->get_text( 'connectivity-test-maybe-temporary' ) . '<br><br>' .
2087
  '%s',
2088
  '<b>' . $this->get_plugin_name() . '</b>',
2089
  sprintf(
2090
  '<div id="fs_firewall_issue_options">%s %s</div>',
2091
  sprintf(
2092
  '<a class="button button-primary fs-resolve" data-type="retry_ping" href="#">%s</a>',
2093
+ $this->get_text( 'yes-do-your-thing' )
2094
  ),
2095
  sprintf(
2096
  '<a href="%s" class="button">%s</a>',
2097
  wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=' . 'all' . '&amp;paged=' . '1' . '&amp;s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
2098
+ $this->get_text( 'no-deactivate' )
2099
  )
2100
  )
2101
  );
2105
  } else {
2106
  // Second connectivity attempt failed.
2107
  $message = sprintf(
2108
+ $this->get_text( 'x-requires-access-to-api' ) . ' ' .
2109
+ $this->get_text( 'connectivity-test-fails-message' ) . ' ' .
2110
+ $this->get_text( 'happy-to-resolve-issue-asap' ) .
2111
  ' %s',
2112
  '<b>' . $this->get_plugin_name() . '</b>',
2113
  sprintf(
2114
  '<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
2115
  sprintf(
2116
  '<a class="fs-resolve" data-type="general" href="#"><b>%s</b></a>%s',
2117
+ $this->get_text( 'fix-issue-title' ),
2118
  ' - ' . sprintf(
2119
+ $this->get_text( 'fix-issue-desc' ),
2120
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
2121
  )
2122
  ),
2123
  sprintf(
2124
  '<a href="%s" target="_blank"><b>%s</b></a>%s',
2125
  sprintf( 'https://wordpress.org/plugins/%s/download/', $this->_slug ),
2126
+ $this->get_text( 'install-previous-title' ),
2127
+ ' - ' . $this->get_text( 'install-previous-desc' )
2128
  ),
2129
  sprintf(
2130
  '<a href="%s"><b>%s</b></a>%s',
2131
  wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $this->_plugin_basename . '&amp;plugin_status=' . 'all' . '&amp;paged=' . '1' . '&amp;s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
2132
+ $this->get_text( 'deactivate-plugin-title' ),
2133
+ ' - ' . $this->get_text( 'deactivate-plugin-desc' )
2134
  )
2135
  )
2136
  );
2140
  $this->_admin_notices->add_sticky(
2141
  $message,
2142
  $message_id,
2143
+ $this->get_text( 'oops' ) . '...',
2144
  $type
2145
  );
2146
  }
2188
 
2189
  // Add 'API Error' custom email section.
2190
  $custom_email_sections['api_error'] = array(
2191
+ 'title' => 'API Error',
2192
  'rows' => array(
2193
  'ping' => array(
2194
  'API Error',
2207
 
2208
  $this->_admin_notices->add_sticky(
2209
  sprintf(
2210
+ $this->get_text( 'fix-request-sent-message' ),
2211
  '<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
2212
  ),
2213
  'server_details_sent'
2309
  $message = fs_get_template( 'email.php', $vars );
2310
 
2311
  // Set the type of email to HTML.
2312
+ $headers[] = 'Content-type: text/html; charset=UTF-8';
2313
 
2314
  $header_string = implode( "\r\n", $headers );
2315
 
2582
 
2583
  $this->_admin_notices->add(
2584
  ( ! empty( $parent_name ) ?
2585
+ sprintf( $this->get_text( 'addon-x-cannot-run-without-y' ), $this->get_plugin_name(), $parent_name ) :
2586
+ sprintf( $this->get_text( 'addon-x-cannot-run-without-parent' ), $this->get_plugin_name() )
2587
  ),
2588
+ $this->get_text( 'oops' ) . '...',
2589
  'error'
2590
  );
2591
 
2608
  $this->deactivate_premium_only_addon_without_license();
2609
  }
2610
  } else {
 
 
2611
  if ( $this->has_addons() &&
2612
  'plugin-information' === fs_request_get( 'tab', false ) &&
2613
  $this->get_id() == fs_request_get( 'parent_plugin_id', false )
2618
  }
2619
  }
2620
 
2621
+ add_action( 'admin_init', array( &$this, '_admin_init_action' ) );
2622
+
2623
  // if ( $this->is_registered() ||
2624
  // $this->is_anonymous() ||
2625
  // $this->is_pending_activation()
2688
  * @since 1.2.1.5
2689
  */
2690
  function _stop_tracking_callback() {
2691
+ $this->_logger->entrance();
2692
+
2693
+ $this->check_ajax_referer( 'stop_tracking' );
2694
+
2695
  $result = $this->stop_tracking();
2696
 
2697
  if ( true === $result ) {
2701
  $this->_logger->api_error( $result );
2702
 
2703
  self::shoot_ajax_failure(
2704
+ $this->get_text( 'unexpected-api-error' ) .
2705
  ( $this->is_api_error( $result ) && isset( $result->error ) ?
2706
  $result->error->message :
2707
  var_export( $result, true ) )
2713
  * @since 1.2.1.5
2714
  */
2715
  function _allow_tracking_callback() {
2716
+ $this->_logger->entrance();
2717
+
2718
+ $this->check_ajax_referer( 'allow_tracking' );
2719
+
2720
  $result = $this->allow_tracking();
2721
 
2722
  if ( true === $result ) {
2726
  $this->_logger->api_error( $result );
2727
 
2728
  self::shoot_ajax_failure(
2729
+ $this->get_text( 'unexpected-api-error' ) .
2730
  ( $this->is_api_error( $result ) && isset( $result->error ) ?
2731
  $result->error->message :
2732
  var_export( $result, true ) )
2918
  // Set the secret key after storing the plugin, we don't want to store the key in the storage.
2919
  $this->_plugin->secret_key = $secret_key;
2920
 
2921
+ if ( ! isset( $plugin_info['menu'] ) ) {
2922
  $plugin_info['menu'] = array();
2923
 
2924
  if ( ! empty( $this->_storage->sdk_last_version ) &&
3096
  ) );
3097
 
3098
  $this->_admin_notices->add_sticky(
3099
+ $this->get_text( 'premium-activated-message' ),
3100
  'premium_activated',
3101
+ $this->get_text( 'woot' ) . '!'
3102
  );
3103
  } else {
3104
  // Remove sticky message related to premium code activation.
3110
  if ( $this->is_paying() && ! $this->is_premium() ) {
3111
  $this->_admin_notices->add_sticky(
3112
  sprintf(
3113
+ $this->get_text( 'you-have-x-license' ),
3114
  $this->_site->plan->title
3115
  ) . $this->get_complete_upgrade_instructions(),
3116
  'plan_upgraded',
3117
+ $this->get_text( 'yee-haw' ) . '!'
3118
  );
3119
  }
3120
  }
3152
  * @since 1.0.6
3153
  *
3154
  * @param string|number $slug_or_id
3155
+ * @param bool|null $is_premium Since 1.2.1.7 can check for specified add-on version.
3156
  *
3157
  * @return bool
3158
  */
3159
+ function is_addon_activated( $slug_or_id, $is_premium = null ) {
3160
+ $this->_logger->entrance();
3161
+
3162
+ $is_activated = self::has_instance( $slug_or_id );
3163
+
3164
+ if ( ! $is_activated ) {
3165
+ return false;
3166
+ }
3167
+
3168
+ if ( is_bool( $is_premium ) ) {
3169
+ // Check if the specified code version is activate.
3170
+ $addon = $this->get_addon_instance( $slug_or_id );
3171
+ $is_activated = ( $is_premium === $addon->is_premium() );
3172
+ }
3173
+
3174
+ return $is_activated;
3175
  }
3176
 
3177
  /**
3185
  * @return bool
3186
  */
3187
  function is_addon_connected( $slug ) {
3188
+ $this->_logger->entrance();
3189
+
3190
  $sites = self::get_all_sites();
3191
 
3192
  if ( ! isset( $sites[ $slug ] ) ) {
3222
  * @return bool
3223
  */
3224
  function is_addon_installed( $slug ) {
3225
+ $this->_logger->entrance();
3226
+
3227
  return file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $this->get_addon_basename( $slug ) ) );
3228
  }
3229
 
3242
  self::instance( $slug )->get_plugin_basename();
3243
  }
3244
 
3245
+ $premium_basename = "{$slug}-premium/{$slug}.php";
3246
 
3247
  if ( file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $premium_basename ) ) ) {
3248
  return $premium_basename;
3249
  }
3250
 
3251
+ $free_basename = "{$slug}/{$slug}.php";
3252
 
3253
  return $free_basename;
3254
  }
3358
 
3359
  $this->_parent->_admin_notices->add_sticky(
3360
  sprintf(
3361
+ $this->_parent->get_text( $is_after_trial_cancel ?
3362
  'addon-trial-cancelled-message' :
3363
+ 'addon-no-license-message'
 
3364
  ),
3365
  '<b>' . $this->_plugin->title . '</b>'
3366
  ) . ' ' . sprintf(
3367
  '<a href="%s" aria-label="%s" class="button button-primary" style="margin-left: 10px; vertical-align: middle;">%s &nbsp;&#10140;</a>',
3368
  $this->_parent->addon_url( $this->_slug ),
3369
+ esc_attr( sprintf( $this->_parent->get_text( 'more-information-about-x' ), $this->_plugin->title ) ),
3370
+ $this->_parent->get_text( 'purchase-license' )
3371
  ),
3372
  'no_addon_license_' . $this->_slug,
3373
+ ( $is_after_trial_cancel ? '' : $this->_parent->get_text( 'oops' ) . '...' ),
3374
  ( $is_after_trial_cancel ? 'success' : 'error' )
3375
  );
3376
 
3490
  private function run_manual_sync() {
3491
  $this->require_pluggable_essentials();
3492
 
3493
+ if ( ! $this->is_user_admin() ) {
3494
  return;
3495
  }
3496
 
3802
 
3803
  $this->_admin_notices->add_sticky(
3804
  sprintf(
3805
+ $this->get_text( 'pending-activation-message' ),
3806
  '<b>' . $this->get_plugin_name() . '</b>',
3807
  '<b>' . $email . '</b>',
3808
+ $this->get_text( $is_pending_trial ? 'start-the-trial' : 'complete-the-install' )
3809
  ),
3810
  'activation_pending',
3811
  'Thanks!'
3857
 
3858
  if ( ! $this->is_addon() && ! $this->is_registered() && ! $this->is_anonymous() ) {
3859
  if ( ! $this->is_pending_activation() ) {
3860
+ if ( ! $this->_menu->is_main_settings_page() ) {
3861
  if ( $this->is_plugin_new_install() || $this->is_only_premium() ) {
3862
  // Show notice for new plugin installations.
3863
  $this->_admin_notices->add(
3864
  sprintf(
3865
+ $this->get_text( 'you-are-step-away' ),
3866
  sprintf( '<b><a href="%s">%s</a></b>',
3867
  $this->get_activation_url(),
3868
+ sprintf( $this->get_text( 'activate-x-now' ), $this->get_plugin_name() )
3869
  )
3870
  ),
3871
  '',
3878
  // Show notice for new plugin installations.
3879
  $this->_admin_notices->add_sticky(
3880
  sprintf(
3881
+ $this->get_text( 'few-plugin-tweaks' ),
3882
  sprintf( '<b><a href="%s">%s</a></b>',
3883
  $this->get_activation_url(),
3884
+ sprintf( $this->get_text( 'optin-x-now' ), $this->get_plugin_name() )
3885
  )
3886
  ),
3887
  'connect_account',
4111
  function _activate_plugin_event_hook() {
4112
  $this->_logger->entrance( 'slug = ' . $this->_slug );
4113
 
4114
+ if ( ! $this->is_user_admin() ) {
4115
  return;
4116
  }
4117
 
4152
  // If activating the premium module version, add an admin notice to congratulate for an upgrade completion.
4153
  if ( $is_premium_version_activation ) {
4154
  $this->_admin_notices->add(
4155
+ sprintf( $this->get_text( 'successful-version-upgrade-message' ), sprintf( '<b>%s</b>', $this->_plugin->title ) ),
4156
+ $this->get_text( 'woot' ) . '!'
4157
  );
4158
  }
4159
  } else if ( $this->is_anonymous() ) {
4187
  $this->_storage->is_plugin_new_install = empty( $this->_storage->plugin_last_version );
4188
  }
4189
 
4190
+ if ( ! $this->_anonymous_mode &&
4191
+ $this->has_api_connectivity( WP_FS__DEV_MODE ) &&
4192
+ ! $this->_isAutoInstall
4193
+ ) {
4194
  // Store hint that the plugin was just activated to enable auto-redirection to settings.
4195
  add_option( "fs_{$this->_slug}_activated", true );
4196
  }
4217
  function delete_account_event( $check_user = true ) {
4218
  $this->_logger->entrance( 'slug = ' . $this->_slug );
4219
 
4220
+ if ( $check_user && ! $this->is_user_admin() ) {
4221
  return;
4222
  }
4223
 
4942
  *
4943
  * @return string
4944
  */
4945
+ function premium_plugin_basename() {
4946
+ return "{$this->_slug}-premium/" . basename( $this->_free_plugin_basename );
4947
  }
4948
 
4949
  /**
5053
  return $this->_slug;
5054
  }
5055
 
5056
+ /**
5057
+ * @author Vova Feldman (@svovaf)
5058
+ * @since 1.2.1.7
5059
+ *
5060
+ * @return string Plugin slug.
5061
+ */
5062
+ function get_target_folder_name() {
5063
+ return $this->_slug . ( $this->can_use_premium_code() ? '-premium' : '' );
5064
+ }
5065
+
5066
  /**
5067
  * @author Vova Feldman (@svovaf)
5068
  * @since 1.0.1
5174
  return $this->apply_filters( 'plugin_version', $plugin_data['Version'] );
5175
  }
5176
 
5177
+ /**
5178
+ * @author Vova Feldman (@svovaf)
5179
+ * @since 1.2.1.7
5180
+ *
5181
+ * @return string
5182
+ */
5183
+ function get_plugin_title() {
5184
+ $this->_logger->entrance();
5185
+
5186
+ $title = $this->_plugin->title;
5187
+
5188
+ return $this->apply_filters( 'plugin_title', $title );
5189
+ }
5190
+
5191
  /**
5192
  * @author Vova Feldman (@svovaf)
5193
  * @since 1.0.4
5362
  }
5363
 
5364
  /**
5365
+ * Check if user has connected his account (opted-in).
5366
+ *
5367
+ * Note:
5368
+ * If the user opted-in and opted-out on a later stage,
5369
+ * this will still return true. If you want to check if the
5370
+ * user is currently opted-in, use:
5371
+ * `$fs->is_registered() && $fs->is_tracking_allowed()`
5372
  *
5373
  * @author Vova Feldman (@svovaf)
5374
  * @since 1.0.1
6010
  return ( $current_plan_order > $required_plan_order );
6011
  }
6012
 
6013
+ /**
6014
+ * Check if module has only one plan.
6015
+ *
6016
+ * @author Vova Feldman (@svovaf)
6017
+ * @since 1.2.1.7
6018
+ *
6019
+ * @return bool
6020
+ */
6021
+ function is_single_plan() {
6022
+ $this->_logger->entrance();
6023
+
6024
+ if ( ! $this->is_registered() ||
6025
+ ! is_array( $this->_plans ) ||
6026
+ 0 === count( $this->_plans )
6027
+ ) {
6028
+ return true;
6029
+ }
6030
+
6031
+ return ( 1 === count( $this->_plans ) );
6032
+ }
6033
+
6034
  /**
6035
  * Check if plan based on trial. If not in trial mode, should return false.
6036
  *
6171
  * @since 1.2.0
6172
  */
6173
  function _add_license_activation() {
6174
+ if ( ! $this->is_user_admin() ) {
6175
  // Only admins can activate a license.
6176
  return;
6177
  }
6206
  * @since 1.1.9
6207
  */
6208
  function _activate_license_ajax_action() {
6209
+ $this->_logger->entrance();
6210
+
6211
+ $this->check_ajax_referer( 'activate_license' );
6212
+
6213
  $license_key = trim( fs_request_get( 'license_key' ) );
6214
 
6215
  if ( empty( $license_key ) ) {
6216
  exit;
6217
  }
6218
 
6219
+ $slug = fs_request_get( 'slug', '', 'post' );
6220
+ $fs = ( $slug === $this->_slug ) ?
6221
+ $this :
6222
+ $this->get_addon_instance( $slug );
6223
+
6224
  $error = false;
6225
  $next_page = false;
6226
 
6227
+ if ( $fs->is_registered() ) {
6228
  $api = $fs->get_api_site_scope();
6229
  $install = $api->call( '/', 'put', array(
6230
+ 'license_key' => $fs->apply_filters( 'license_key', $license_key )
6231
  ) );
6232
 
6233
  if ( isset( $install->error ) ) {
6234
  $error = $install->error->message;
6235
  } else {
6236
+ $parent_fs = $fs->is_addon() ?
6237
+ $fs->get_parent_instance() :
6238
+ $fs;
6239
 
6240
+ $next_page = $parent_fs->_get_sync_license_url( $fs->get_id(), true );
6241
 
6242
+ $fs->reconnect_locally();
6243
  }
6244
  } else {
6245
+ $next_page = $fs->opt_in( false, false, false, $license_key );
6246
 
6247
  if ( isset( $next_page->error ) ) {
6248
  $error = $next_page->error;
6271
  * @since 1.2.1.5
6272
  */
6273
  function _update_billing_ajax_action() {
6274
+ $this->_logger->entrance();
6275
 
6276
+ $this->check_ajax_referer( 'update_billing' );
6277
+
6278
+ if ( ! $this->is_user_admin() ) {
6279
  // Only for admins.
6280
  self::shoot_ajax_failure();
6281
  }
6304
  * @since 1.2.1.5
6305
  */
6306
  function _start_trial_ajax_action() {
6307
+ $this->_logger->entrance();
6308
 
6309
+ $this->check_ajax_referer( 'start_trial' );
6310
+
6311
+ if ( ! $this->is_user_admin() ) {
6312
  // Only for admins.
6313
  self::shoot_ajax_failure();
6314
  }
6342
  * @since 1.2.0
6343
  */
6344
  function _resend_license_key_ajax_action() {
6345
+ $this->_logger->entrance();
6346
+
6347
+ $this->check_ajax_referer( 'resend_license_key' );
6348
+
6349
+ $email_address = sanitize_email( trim( fs_request_get( 'email', '', 'post' ) ) );
6350
 
 
6351
  if ( empty( $email_address ) ) {
6352
  exit;
6353
  }
6366
  $error = $result->error;
6367
 
6368
  if ( in_array( $error->code, array( 'invalid_email', 'no_user' ) ) ) {
6369
+ $error = $this->get_text( 'email-not-found' );
6370
  } else if ( 'no_license' === $error->code ) {
6371
+ $error = $this->get_text( 'no-active-licenses' );
6372
  } else {
6373
  $error = $error->message;
6374
  }
6379
  );
6380
 
6381
  if ( false !== $error ) {
6382
+ $licenses['error'] = sprintf( '%s... %s', $this->get_text( 'oops' ), strtolower( $error ) );
6383
  }
6384
 
6385
  echo json_encode( $licenses );
6395
  *
6396
  * @return bool
6397
  */
6398
+ function is_plugins_page() {
6399
  global $pagenow;
6400
 
6401
  return ( 'plugins.php' === $pagenow );
6402
  }
6403
 
6404
+ /**
6405
+ * Helper method to check if user in the themes page.
6406
+ *
6407
+ * @author Vova Feldman (@svovaf)
6408
+ * @since 1.2.2.6
6409
+ *
6410
+ * @return bool
6411
+ */
6412
+ function is_themes_page() {
6413
+ global $pagenow;
6414
+
6415
+ return ( 'themes.php' === $pagenow );
6416
+ }
6417
+
6418
  #----------------------------------------------------------------------------------
6419
  #region URL Generators
6420
  #----------------------------------------------------------------------------------
6593
  return $this->_is_premium_only;
6594
  }
6595
 
6596
+ /**
6597
+ * Checks if the plugin's type is "plugin". The other type is "theme".
6598
+ *
6599
+ * @author Leo Fajardo (@leorw)
6600
+ * @since 1.2.2
6601
+ *
6602
+ * @return bool
6603
+ */
6604
+ function is_plugin() {
6605
+ return true;
6606
+ }
6607
+
6608
  /**
6609
  * Check if module has a premium code version.
6610
  *
6731
  $ajax_action = fs_request_get( 'action' );
6732
 
6733
  foreach ( $actions as $action ) {
6734
+ if ( $ajax_action === self::get_ajax_action_static( $action, $slug ) ) {
6735
  return true;
6736
  }
6737
  }
6792
  }
6793
  }
6794
 
6795
+ $page_param = $this->_menu->get_slug( $page );
6796
+
6797
+ if ( ! $this->has_settings_menu() ) {
6798
+ if ( ! empty( $page ) ) {
6799
+ // Module doesn't have a setting page, but since the request is for
6800
+ // a specific Freemius page, use the admin.php path.
6801
+ return add_query_arg( array_merge( $params, array(
6802
+ 'page' => $page_param,
6803
+ ) ), admin_url( 'admin.php', 'admin' ) );
6804
+ } else {
6805
+ if ( $this->is_activation_mode() ) {
6806
+ /**
6807
+ * @author Vova Feldman
6808
+ * @since 1.2.1.6
6809
+ *
6810
+ * If plugin doesn't have a settings page, create one for the opt-in screen.
6811
+ */
6812
+ return add_query_arg( array_merge( $params, array(
6813
+ 'page' => $this->_slug,
6814
+ ) ), admin_url( 'admin.php', 'admin' ) );
6815
+ } else {
6816
+ // Plugin without a settings page.
6817
+ return admin_url( 'plugins.php' );
6818
+ }
6819
+ }
6820
+ }
6821
+
6822
+ // Module has a submenu settings page.
6823
+ if ( ! $this->_menu->is_top_level() ) {
6824
  $parent_slug = $this->_menu->get_parent_slug();
6825
  $menu_file = ( false !== strpos( $parent_slug, '.php' ) ) ?
6826
  $parent_slug :
6827
  'admin.php';
6828
 
6829
  return add_query_arg( array_merge( $params, array(
6830
+ 'page' => $page_param,
6831
  ) ), admin_url( $menu_file, 'admin' ) );
6832
  }
6833
 
6834
+ // Module has a top level CPT settings page.
6835
  if ( $this->_menu->is_cpt() ) {
6836
  if ( empty( $page ) && $this->is_activation_mode() ) {
6837
  return add_query_arg( array_merge( $params, array(
6838
+ 'page' => $page_param
6839
  ) ), admin_url( 'admin.php', 'admin' ) );
6840
  } else {
6841
  if ( ! empty( $page ) ) {
6842
+ $params['page'] = $page_param;
6843
  }
6844
 
6845
+ return add_query_arg(
6846
+ $params,
6847
+ admin_url( $this->_menu->get_raw_slug(), 'admin' )
6848
+ );
6849
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6850
  }
6851
+
6852
+ // Module has a custom top level settings page.
6853
+ return add_query_arg( array_merge( $params, array(
6854
+ 'page' => $page_param,
6855
+ ) ), admin_url( 'admin.php', 'admin' ) );
6856
  }
6857
 
6858
  /**
6863
  *
6864
  * @param bool|number $plugin_id
6865
  * @param bool $add_action_nonce
6866
+ * @param array $params
6867
  *
6868
  * @return string
6869
  */
6870
+ function _get_sync_license_url( $plugin_id = false, $add_action_nonce = true, $params = array() ) {
 
 
6871
  if ( is_numeric( $plugin_id ) ) {
6872
  $params['plugin_id'] = $plugin_id;
6873
  }
6993
 
6994
  /* Security
6995
  ------------------------------------------------------------------------------------------------------------------*/
6996
+ private static function _encrypt( $str ) {
6997
  if ( is_null( $str ) ) {
6998
  return null;
6999
  }
7000
 
7001
+ /**
7002
+ * The encrypt/decrypt functions are used to protect
7003
+ * the user from messing up with some of the sensitive
7004
+ * data stored for the module as a JSON in the database.
7005
+ *
7006
+ * I used the same suggested hack by the theme review team.
7007
+ * For more details, look at the function `Base64UrlDecode()`
7008
+ * in `./sdk/FreemiusBase.php`.
7009
+ *
7010
+ * @todo Remove this hack once the base64 error is removed from the Theme Check.
7011
+ *
7012
+ * @author Vova Feldman (@svovaf)
7013
+ * @since 1.2.2
7014
+ */
7015
+ $fn = 'base64' . '_encode';
7016
+
7017
+ return $fn( $str );
7018
  }
7019
 
7020
+ static function _decrypt( $str ) {
7021
  if ( is_null( $str ) ) {
7022
  return null;
7023
  }
7024
 
7025
+ /**
7026
+ * The encrypt/decrypt functions are used to protect
7027
+ * the user from messing up with some of the sensitive
7028
+ * data stored for the module as a JSON in the database.
7029
+ *
7030
+ * I used the same suggested hack by the theme review team.
7031
+ * For more details, look at the function `Base64UrlDecode()`
7032
+ * in `./sdk/FreemiusBase.php`.
7033
+ *
7034
+ * @todo Remove this hack once the base64 error is removed from the Theme Check.
7035
+ *
7036
+ * @author Vova Feldman (@svovaf)
7037
+ * @since 1.2.2
7038
+ */
7039
+ $fn = 'base64' . '_decode';
7040
+
7041
+ return $fn( $str );
7042
  }
7043
 
7044
  /**
7049
  *
7050
  * @return FS_Entity Return an encrypted clone entity.
7051
  */
7052
+ private static function _encrypt_entity( FS_Entity $entity ) {
7053
  $clone = clone $entity;
7054
  $props = get_object_vars( $entity );
7055
 
7056
  foreach ( $props as $key => $val ) {
7057
+ $clone->{$key} = self::_encrypt( $val );
7058
  }
7059
 
7060
  return $clone;
7068
  *
7069
  * @return FS_Entity Return an decrypted clone entity.
7070
  */
7071
+ private static function _decrypt_entity( FS_Entity $entity ) {
7072
  $clone = clone $entity;
7073
  $props = get_object_vars( $entity );
7074
 
7075
  foreach ( $props as $key => $val ) {
7076
+ $clone->{$key} = self::_decrypt( $val );
7077
  }
7078
 
7079
  return $clone;
7191
  ) {
7192
  // Load site.
7193
  $this->_site = clone $site;
7194
+ $this->_site->plan = self::_decrypt_entity( $this->_site->plan );
7195
 
7196
  // Load relevant user.
7197
  $this->_user = clone $users[ $this->_site->user_id ];
7203
  } else {
7204
  for ( $i = 0, $len = count( $this->_plans ); $i < $len; $i ++ ) {
7205
  if ( $this->_plans[ $i ] instanceof FS_Plugin_Plan ) {
7206
+ $this->_plans[ $i ] = self::_decrypt_entity( $this->_plans[ $i ] );
7207
  } else {
7208
  unset( $this->_plans[ $i ] );
7209
  }
7512
  * @param FS_User $user
7513
  * @param FS_Site $site
7514
  * @param bool $redirect
7515
+ * @param bool $auto_install Since 1.2.1.7 If `true` and setting up an account with a valid license, will
7516
+ * redirect (or return a URL) to the account page with a special parameter to
7517
+ * trigger the auto installation processes.
7518
  *
7519
  * @return string If redirect is `false`, returns the next page the user should be redirected to.
7520
  */
7521
+ function setup_account(
7522
+ FS_User $user,
7523
+ FS_Site $site,
7524
+ $redirect = true,
7525
+ $auto_install = false
7526
+ ) {
7527
  $this->_user = $user;
7528
  $this->_site = $site;
7529
 
7558
 
7559
  if ( ! $this->is_paying_or_trial() ) {
7560
  $this->_admin_notices->add_sticky(
7561
+ sprintf( $this->get_text( 'plugin-x-activation-message' ), '<b>' . $this->get_plugin_name() . '</b>' ),
7562
  'activation_complete'
7563
  );
7564
  }
7569
  if ( $this->is_paying() ) {
7570
  $this->_admin_notices->add_sticky(
7571
  sprintf(
7572
+ $this->get_text( 'activation-with-plan-x-message' ),
7573
  $this->_site->plan->title
7574
  ) . $this->get_complete_upgrade_instructions(),
7575
  'plan_upgraded',
7576
+ $this->get_text( 'yee-haw' ) . '!'
7577
  );
7578
  } else {
7579
  $this->_admin_notices->add_sticky(
7580
  sprintf(
7581
+ $this->get_text( 'trial-started-message' ),
7582
  '<i>' . $this->get_plugin_name() . '</i>'
7583
  ) . $this->get_complete_upgrade_instructions( $this->_storage->trial_plan->title ),
7584
  'trial_started',
7585
+ $this->get_text( 'yee-haw' ) . '!'
7586
  );
7587
  }
7588
  }
7601
 
7602
  $next_page = '';
7603
 
7604
+ $extra = array();
7605
+ if ( $auto_install ) {
7606
+ $extra['auto_install'] = 'true';
7607
+ }
7608
+
7609
  if ( is_numeric( $plugin_id ) ) {
7610
  /**
7611
  * @author Leo Fajardo
7615
  */
7616
  if ( $this->is_anonymous() || $plugin_id != $this->_plugin->id ) {
7617
  // Add-on was installed - sync license right after install.
7618
+ $next_page = $this->_get_sync_license_url( $plugin_id, true, $extra );
7619
  }
7620
  } else {
7621
  /**
7629
  // Reload the page with the keys.
7630
  $next_page = $this->is_anonymous() ?
7631
  // If user previously skipped, redirect to account page.
7632
+ $this->get_account_url( false, $extra ) :
7633
  $this->get_after_activation_url( 'after_connect_url' );
7634
  }
7635
 
7663
  fs_request_get( 'user_secret_key' ),
7664
  fs_request_get( 'install_id' ),
7665
  fs_request_get( 'install_public_key' ),
7666
+ fs_request_get( 'install_secret_key' ),
7667
+ true,
7668
+ fs_request_get_bool( 'auto_install' )
7669
  );
7670
  } else if ( fs_request_has( 'pending_activation' ) ) {
7671
  $this->set_pending_confirmation( fs_request_get( 'user_email' ), true );
7686
  * @param string $install_public_key
7687
  * @param string $install_secret_key
7688
  * @param bool $redirect
7689
+ * @param bool $auto_install Since 1.2.1.7 If `true` and setting up an account with a valid license, will
7690
+ * redirect (or return a URL) to the account page with a special parameter to
7691
+ * trigger the auto installation processes.
7692
  *
7693
  * @return string If redirect is `false`, returns the next page the user should be redirected to.
7694
  */
7699
  $install_id,
7700
  $install_public_key,
7701
  $install_secret_key,
7702
+ $redirect = true,
7703
+ $auto_install = false
7704
  ) {
7705
  $user = new FS_User();
7706
  $user->id = $user_id;
7722
  $site = new FS_Site( $site_result );
7723
  $this->_site = $site;
7724
 
7725
+ return $this->setup_account(
7726
+ $this->_user,
7727
+ $this->_site,
7728
+ $redirect,
7729
+ $auto_install
7730
+ );
7731
  }
7732
 
7733
  /**
7864
  $install = $this->apply_filters( 'after_install_failure', $install, $args );
7865
 
7866
  $this->_admin_notices->add(
7867
+ sprintf( $this->get_text( 'could-not-activate-x' ), $this->get_plugin_name() ) . ' ' .
7868
+ $this->get_text( 'contact-us-with-error-message' ) . ' ' . '<b>' . $install->error->message . '</b>',
7869
+ $this->get_text( 'oops' ) . '...',
7870
  'error'
7871
  );
7872
 
7908
 
7909
  if ( isset( $addon_install->error ) ) {
7910
  $this->_admin_notices->add(
7911
+ sprintf( $this->get_text( 'could-not-activate-x' ), $this->get_plugin_name() ) . ' ' .
7912
+ $this->get_text( 'contact-us-with-error-message' ) . ' ' . '<b>' . $addon_install->error->message . '</b>',
7913
+ $this->get_text( 'oops' ) . '...',
7914
  'error'
7915
  );
7916
 
7994
  fs_request_is_action( $this->_slug . '_activate_new' )
7995
  ) {
7996
  $this->_install_with_new_user();
7997
+ } else if ( fs_request_is_action( 'sync_user' ) && ! $this->has_settings_menu() ) {
7998
+ $this->_handle_account_user_sync();
7999
  }
8000
  }
8001
  }
8035
 
8036
  $hook = false;
8037
 
8038
+ if ( ! $this->_menu->has_menu() ) {
8039
  // Add the opt-in page without a menu item.
8040
+ $hook = FS_Admin_Menu_Manager::add_subpage(
8041
  null,
8042
  $this->get_plugin_name(),
8043
  $this->get_plugin_name(),
8050
 
8051
  if ( false === $hook ) {
8052
  // Create new menu item just for the opt-in.
8053
+ $hook = FS_Admin_Menu_Manager::add_page(
8054
  $this->get_plugin_name(),
8055
  $this->get_plugin_name(),
8056
  'manage_options',
8062
  $menus = array( $this->_menu->get_parent_slug() );
8063
 
8064
  if ( $this->_menu->is_override_exact() ) {
8065
+ if ( ! $this->is_matching_url( $_SERVER['REQUEST_URI'], $this->get_activation_url() ) ) {
 
 
 
 
 
8066
  return;
8067
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8068
  }
8069
 
8070
  foreach ( $menus as $parent_slug ) {
8081
  }
8082
  }
8083
 
8084
+ if ( $this->is_activation_page() ) {
8085
  // Clean admin page from distracting content.
8086
  self::_clean_admin_content_section();
8087
  }
8145
  if ( $this->is_registered() ) {
8146
  // Add user account page.
8147
  $this->add_submenu_item(
8148
+ $this->get_text( 'account' ),
8149
  array( &$this, '_account_page_render' ),
8150
+ $this->get_plugin_name() . ' &ndash; ' . $this->get_text( 'account' ),
8151
  'manage_options',
8152
  'account',
8153
  array( &$this, '_account_page_load' ),
8154
  WP_FS__DEFAULT_PRIORITY,
8155
+ $this->is_submenu_item_visible( 'account' )
8156
  );
8157
  }
8158
 
8159
  // Add contact page.
8160
  $this->add_submenu_item(
8161
+ $this->get_text( 'contact-us' ),
8162
  array( &$this, '_contact_page_render' ),
8163
+ $this->get_plugin_name() . ' &ndash; ' . $this->get_text( 'contact-us' ),
8164
  'manage_options',
8165
  'contact',
8166
  'Freemius::_clean_admin_content_section',
8167
  WP_FS__DEFAULT_PRIORITY,
8168
+ $this->is_submenu_item_visible( 'contact' )
8169
  );
8170
 
8171
  if ( $this->has_addons() ) {
8172
  $this->add_submenu_item(
8173
+ $this->get_text( 'add-ons' ),
8174
  array( &$this, '_addons_page_render' ),
8175
+ $this->get_plugin_name() . ' &ndash; ' . $this->get_text( 'add-ons' ),
8176
  'manage_options',
8177
  'addons',
8178
  array( &$this, '_addons_page_load' ),
8179
  WP_FS__LOWEST_PRIORITY - 1,
8180
+ $this->is_submenu_item_visible( 'addons' )
8181
  );
8182
  }
8183
 
8184
+ $show_pricing = (
8185
+ // Has at least one paid plan.
8186
+ $this->has_paid_plan() &&
8187
+ // Didn't ask to hide the pricing page.
8188
+ $this->is_submenu_item_visible( 'pricing' ) &&
8189
+ // Don't have a valid active license or has more than one plan.
8190
+ ( ! $this->is_paying() || ! $this->is_single_plan() )
8191
+ );
8192
  // If user don't have paid plans, add pricing page
8193
  // to support add-ons checkout but don't add the submenu item.
8194
  // || (isset( $_GET['page'] ) && $this->_menu->get_slug( 'pricing' ) == $_GET['page']);
8210
 
8211
  // Add upgrade/pricing page.
8212
  $this->add_submenu_item(
8213
+ $this->get_text( $pricing_cta_slug ) . '&nbsp;&nbsp;' . ( is_rtl() ? '&#x2190;' : '&#x27a4;' ),
8214
  array( &$this, '_pricing_page_render' ),
8215
+ $this->get_plugin_name() . ' &ndash; ' . $this->get_text( 'pricing' ),
8216
  'manage_options',
8217
  'pricing',
8218
  'Freemius::_clean_admin_content_section',
8269
  $menu_slug = $this->_menu->get_slug( $item['menu_slug'] );
8270
 
8271
  if ( ! isset( $item['url'] ) ) {
8272
+ $hook = FS_Admin_Menu_Manager::add_subpage(
8273
  $item['show_submenu'] ?
8274
  $this->get_top_level_menu_slug() :
8275
  null,
8284
  add_action( "load-$hook", $item['before_render_function'] );
8285
  }
8286
  } else {
8287
+ FS_Admin_Menu_Manager::add_subpage(
8288
  $this->get_top_level_menu_slug(),
8289
  $item['page_title'],
8290
  $menu_item,
8377
  }
8378
 
8379
  if ( ! $this->is_activation_mode() ) {
8380
+ if ( $this->is_submenu_item_visible( 'support' ) ) {
8381
  $this->add_submenu_link_item(
8382
+ $this->apply_filters( 'support_forum_submenu', $this->get_text( 'support-forum' ) ),
8383
  $this->apply_filters( 'support_forum_url', 'https://wordpress.org/support/plugin/' . $this->_slug ),
8384
  'wp-support-forum',
8385
  null,
8505
 
8506
  #endregion ------------------------------------------------------------------
8507
 
8508
+ #--------------------------------------------------------------------------------
8509
+ #region Actions / Hooks / Filters
8510
+ #--------------------------------------------------------------------------------
8511
+
8512
  /**
8513
  * @author Vova Feldman (@svovaf)
8514
  * @since 1.1.7
8542
  *
8543
  * @return string
8544
  */
8545
+ function get_ajax_action( $tag ) {
8546
+ return self::get_ajax_action_static( $tag, $this->_slug );
8547
+ }
8548
+
8549
+ /**
8550
+ * @author Vova Feldman (@svovaf)
8551
+ * @since 1.2.1.7
8552
+ *
8553
+ * @param string $tag
8554
+ *
8555
+ * @return string
8556
+ */
8557
+ function get_ajax_security( $tag ) {
8558
+ return wp_create_nonce( $this->get_ajax_action( $tag ) );
8559
+ }
8560
+
8561
+ /**
8562
+ * @author Vova Feldman (@svovaf)
8563
+ * @since 1.2.1.7
8564
+ *
8565
+ * @param string $tag
8566
+ */
8567
+ function check_ajax_referer( $tag ) {
8568
+ check_ajax_referer( $this->get_ajax_action( $tag ), 'security' );
8569
  }
8570
 
8571
  /**
8577
  *
8578
  * @return string
8579
  */
8580
+ private static function get_ajax_action_static( $tag, $slug = '' ) {
8581
+ $action = "fs_{$tag}";
8582
+
8583
+ if ( ! empty( $slug ) ) {
8584
+ $action .= "_{$slug}";
8585
+ }
8586
+
8587
+ return $action;
8588
  }
8589
 
8590
  /**
8623
  *
8624
  * @uses add_action()
8625
  */
8626
+ function add_action(
8627
+ $tag,
8628
+ $function_to_add,
8629
+ $priority = WP_FS__DEFAULT_PRIORITY,
8630
+ $accepted_args = 1
8631
+ ) {
8632
  $this->_logger->entrance( $tag );
8633
 
8634
  add_action( $this->get_action_tag( $tag ), $function_to_add, $priority, $accepted_args );
8691
  }
8692
 
8693
  add_action(
8694
+ 'wp_ajax_' . self::get_ajax_action_static( $tag, $slug ),
8695
  $function_to_add,
8696
  $priority,
8697
  0
8803
  return has_filter( $this->get_action_tag( $tag ), $function_to_check );
8804
  }
8805
 
8806
+ #endregion
8807
+
8808
  /**
8809
  * Override default i18n text phrases.
8810
  *
8839
  }
8840
 
8841
  $encrypted_site = clone $this->_site;
8842
+ $encrypted_site->plan = self::_encrypt_entity( $this->_site->plan );
8843
 
8844
  $sites = self::get_all_sites();
8845
  $sites[ $this->_slug ] = $encrypted_site;
8862
  // Copy plans.
8863
  $encrypted_plans = array();
8864
  for ( $i = 0, $len = count( $this->_plans ); $i < $len; $i ++ ) {
8865
+ $encrypted_plans[] = self::_encrypt_entity( $this->_plans[ $i ] );
8866
  }
8867
 
8868
  $plans[ $this->_slug ] = $encrypted_plans;
9041
  $this->_user->last = $user->last;
9042
  $this->_user->email = $user->email;
9043
 
9044
+ $is_menu_item_account_visible = $this->is_submenu_item_visible( 'account' );
9045
 
9046
  if ( $user->is_verified &&
9047
  ( ! isset( $this->_user->is_verified ) || false === $this->_user->is_verified )
9051
  $this->do_action( 'account_email_verified', $user->email );
9052
 
9053
  $this->_admin_notices->add(
9054
+ $this->get_text( 'email-verified-message' ),
9055
+ $this->get_text( 'right-on' ) . '!',
9056
  'success',
9057
  // Make admin sticky if account menu item is invisible,
9058
  // since the page will be auto redirected to the plugin's
9305
  $plugin_id = $this->_plugin->id;
9306
  }
9307
 
9308
+ $result = $api->get( "/plugins/{$plugin_id}/payments.json?include_addons=true", true );
9309
 
9310
  if ( ! isset( $result->error ) ) {
9311
  for ( $i = 0, $len = count( $result->payments ); $i < $len; $i ++ ) {
9482
  return $this->is_trial() || $this->has_features_enabled_license();
9483
  }
9484
 
9485
+ /**
9486
+ * Checks if the current user can activate plugins or switch themes. Note that this method should only be used
9487
+ * after the `init` action is triggered because it is using `current_user_can()` which is only functional after
9488
+ * the context user is authenticated.
9489
+ *
9490
+ * @author Leo Fajardo (@leorw)
9491
+ * @since 1.2.2
9492
+ *
9493
+ * @return bool
9494
+ */
9495
+ function is_user_admin() {
9496
+ return current_user_can( 'activate_plugins' );
9497
+ }
9498
+
9499
  /**
9500
  * Sync site's plan.
9501
  *
9579
  $this->_admin_notices->add_sticky(
9580
  FS_Plan_Manager::instance()->has_free_plan( $plans ) ?
9581
  sprintf(
9582
+ $this->get_text( 'addon-successfully-upgraded-message' ),
9583
  $addon->title
9584
  ) . ' ' . $this->get_latest_download_link(
9585
+ $this->get_text( 'download-latest-version' ),
9586
  $addon_id
9587
  )
9588
  :
9589
  sprintf(
9590
+ $this->get_text( 'addon-successfully-purchased-message' ),
9591
  $addon->title
9592
  ) . ' ' . $this->get_latest_download_link(
9593
+ $this->get_text( 'download-latest-version' ),
9594
  $addon_id
9595
  ),
9596
  'addon_plan_upgraded_' . $addon->slug,
9597
+ $this->get_text( 'yee-haw' ) . '!'
9598
  );
9599
  }
9600
  }
9639
  if ( ! self::$_global_admin_notices->has_sticky( 'api_blocked' ) ) {
9640
  self::$_global_admin_notices->add(
9641
  sprintf(
9642
+ $this->get_text( 'server-blocking-access' ),
9643
  $this->get_plugin_name(),
9644
  '<a href="' . $api->get_url() . '" target="_blank">' . $api->get_url() . '</a>'
9645
+ ) . '<br> ' . $this->get_text( 'server-error-message' ) . var_export( $site->error, true ),
9646
+ $this->get_text( 'oops' ) . '...',
9647
  'error',
9648
  $background,
9649
  false,
9653
  } else {
9654
  // Authentication params are broken.
9655
  $this->_admin_notices->add(
9656
+ $this->get_text( 'wrong-authentication-param-message' ),
9657
+ $this->get_text( 'oops' ) . '...',
9658
  'error'
9659
  );
9660
  }
9781
  if ( $plan->is_free() ) {
9782
  $this->_admin_notices->add(
9783
  sprintf(
9784
+ $this->get_text( 'plan-did-not-change-message' ),
9785
+ '<i><b>' . $plan->title . ( $this->is_trial() ? ' ' . $this->get_text( 'trial' ) : '' ) . '</b></i>'
9786
  ) . ' ' . sprintf(
9787
  '<a href="%s">%s</a>',
9788
  $this->contact_url(
9789
  'bug',
9790
+ sprintf( $this->get_text( 'plan-did-not-change-email-message' ),
9791
  strtoupper( $plan->name )
9792
  )
9793
  ),
9794
+ $this->get_text( 'contact-us-here' )
9795
  ),
9796
+ $this->get_text( 'hmm' ) . '...'
9797
  );
9798
  }
9799
  }
9801
  case 'upgraded':
9802
  $this->_admin_notices->add_sticky(
9803
  sprintf(
9804
+ $this->get_text( 'plan-upgraded-message' ),
9805
  '<i>' . $this->get_plugin_name() . '</i>'
9806
  ) . $this->get_complete_upgrade_instructions(),
9807
  'plan_upgraded',
9808
+ $this->get_text( 'yee-haw' ) . '!'
9809
  );
9810
 
9811
  $this->_admin_notices->remove_sticky( array(
9818
  case 'changed':
9819
  $this->_admin_notices->add_sticky(
9820
  sprintf(
9821
+ $this->get_text( 'plan-changed-to-x-message' ),
9822
  $this->_site->plan->title
9823
  ),
9824
  'plan_changed'
9833
  break;
9834
  case 'downgraded':
9835
  $this->_admin_notices->add_sticky(
9836
+ sprintf( $this->get_text( 'license-expired-blocking-message' ) ),
9837
  'license_expired',
9838
+ $this->get_text( 'hmm' ) . '...'
9839
  );
9840
  $this->_admin_notices->remove_sticky( 'plan_upgraded' );
9841
  break;
9842
  case 'cancelled':
9843
  $this->_admin_notices->add(
9844
+ $this->get_text( 'license-cancelled' ) . ' ' .
9845
  sprintf(
9846
  '<a href="%s">%s</a>',
9847
  $this->contact_url( 'bug' ),
9848
+ $this->get_text( 'contact-us-here' )
9849
  ),
9850
+ $this->get_text( 'hmm' ) . '...',
9851
  'error'
9852
  );
9853
  $this->_admin_notices->remove_sticky( 'plan_upgraded' );
9854
  break;
9855
  case 'expired':
9856
  $this->_admin_notices->add_sticky(
9857
+ sprintf( $this->get_text( 'license-expired-non-blocking-message' ), $this->_site->plan->title ),
9858
  'license_expired',
9859
+ $this->get_text( 'hmm' ) . '...'
9860
  );
9861
  $this->_admin_notices->remove_sticky( 'plan_upgraded' );
9862
  break;
9863
  case 'trial_started':
9864
  $this->_admin_notices->add_sticky(
9865
  sprintf(
9866
+ $this->get_text( 'trial-started-message' ),
9867
  '<i>' . $this->get_plugin_name() . '</i>'
9868
  ) . $this->get_complete_upgrade_instructions( $this->_storage->trial_plan->title ),
9869
  'trial_started',
9870
+ $this->get_text( 'yee-haw' ) . '!'
9871
  );
9872
 
9873
  $this->_admin_notices->remove_sticky( array(
9876
  break;
9877
  case 'trial_expired':
9878
  $this->_admin_notices->add_sticky(
9879
+ $this->get_text( 'trial-expired-message' ),
9880
  'trial_expired',
9881
+ $this->get_text( 'hmm' ) . '...'
9882
  );
9883
  $this->_admin_notices->remove_sticky( array(
9884
  'trial_started',
9946
  if ( ! $background ) {
9947
  $this->_admin_notices->add( sprintf(
9948
  '%s %s',
9949
+ $this->get_text( 'license-activation-failed-message' ),
9950
  ( is_object( $license ) && isset( $license->error ) ?
9951
  $license->error->message :
9952
  sprintf( '%s<br><code>%s</code>',
9953
+ $this->get_text( 'server-error-message' ),
9954
  var_export( $license, true )
9955
  )
9956
  )
9957
  ),
9958
+ $this->get_text( 'hmm' ) . '...',
9959
  'error'
9960
  );
9961
  }
9977
 
9978
  if ( ! $background ) {
9979
  $this->_admin_notices->add_sticky(
9980
+ $this->get_text( 'license-activated-message' ) .
9981
  $this->get_complete_upgrade_instructions(),
9982
  'license_activated',
9983
+ $this->get_text( 'yee-haw' ) . '!'
9984
  );
9985
  }
9986
 
10001
 
10002
  if ( ! is_object( $this->_license ) ) {
10003
  $this->_admin_notices->add(
10004
+ sprintf( $this->get_text( 'no-active-license-message' ), $this->_site->plan->title ),
10005
+ $this->get_text( 'hmm' ) . '...'
10006
  );
10007
 
10008
  return;
10013
 
10014
  if ( isset( $license->error ) ) {
10015
  $this->_admin_notices->add(
10016
+ $this->get_text( 'license-deactivation-failed-message' ) . '<br> ' .
10017
+ $this->get_text( 'server-error-message' ) . ' ' . var_export( $license->error, true ),
10018
+ $this->get_text( 'hmm' ) . '...',
10019
  'error'
10020
  );
10021
 
10040
 
10041
  if ( $show_notice ) {
10042
  $this->_admin_notices->add(
10043
+ sprintf( $this->get_text( 'license-deactivation-message' ), $this->_site->plan->title ),
10044
+ $this->get_text( 'ok' )
10045
  );
10046
  }
10047
 
10089
  $this->_admin_notices->remove_sticky( 'plan_upgraded' );
10090
 
10091
  $this->_admin_notices->add(
10092
+ sprintf( $this->get_text( 'plan-x-downgraded-message' ),
10093
  $plan->title,
10094
  human_time_diff( time(), strtotime( $this->_license->expiration ) )
10095
  )
10099
  $this->_store_site();
10100
  } else {
10101
  $this->_admin_notices->add(
10102
+ $this->get_text( 'plan-downgraded-failure-message' ),
10103
+ $this->get_text( 'oops' ) . '...',
10104
  'error'
10105
  );
10106
  }
10120
  if ( $this->is_trial() ) {
10121
  // Already in trial mode.
10122
  $this->_admin_notices->add(
10123
+ $this->get_text( 'in-trial-mode' ),
10124
+ $this->get_text( 'oops' ) . '...',
10125
  'error'
10126
  );
10127
 
10131
  if ( $this->_site->is_trial_utilized() ) {
10132
  // Trial was already utilized.
10133
  $this->_admin_notices->add(
10134
+ $this->get_text( 'trial-utilized' ),
10135
+ $this->get_text( 'oops' ) . '...',
10136
  'error'
10137
  );
10138
 
10145
  if ( false === $plan ) {
10146
  // Plan doesn't exist.
10147
  $this->_admin_notices->add(
10148
+ sprintf( $this->get_text( 'trial-plan-x-not-exist' ), $plan_name ),
10149
+ $this->get_text( 'oops' ) . '...',
10150
  'error'
10151
  );
10152
 
10156
  if ( ! $plan->has_trial() ) {
10157
  // Plan doesn't exist.
10158
  $this->_admin_notices->add(
10159
+ sprintf( $this->get_text( 'plan-x-no-trial' ), $plan_name ),
10160
+ $this->get_text( 'oops' ) . '...',
10161
  'error'
10162
  );
10163
 
10167
  if ( ! $this->has_trial_plan() ) {
10168
  // None of the plans have a trial.
10169
  $this->_admin_notices->add(
10170
+ $this->get_text( 'no-trials' ),
10171
+ $this->get_text( 'oops' ) . '...',
10172
  'error'
10173
  );
10174
 
10186
  if ( ! $this->is_api_result_entity( $plan ) ) {
10187
  // Some API error while trying to start the trial.
10188
  $this->_admin_notices->add(
10189
+ $this->get_text( 'unexpected-api-error' ) . ' ' . var_export( $plan, true ),
10190
+ $this->get_text( 'oops' ) . '...',
10191
  'error'
10192
  );
10193
 
10213
 
10214
  if ( ! $this->is_trial() ) {
10215
  $this->_admin_notices->add(
10216
+ $this->get_text( 'trial-cancel-no-trial-message' ),
10217
+ $this->get_text( 'oops' ) . '...',
10218
  'error'
10219
  );
10220
 
10264
  ! $this->deactivate_premium_only_addon_without_license( true )
10265
  ) {
10266
  $this->_admin_notices->add(
10267
+ sprintf( $this->get_text( 'trial-cancel-message' ), $this->_storage->trial_plan->title )
10268
  );
10269
  }
10270
 
10272
  unset( $this->_storage->trial_plan );
10273
  } else {
10274
  $this->_admin_notices->add(
10275
+ $this->get_text( 'trial-cancel-failure-message' ),
10276
+ $this->get_text( 'oops' ) . '...',
10277
  'error'
10278
  );
10279
  }
10502
  if ( ! $background ) {
10503
  $this->_admin_notices->add(
10504
  sprintf(
10505
+ $this->get_text( 'version-x-released' ) . ' ' . $this->get_text( 'please-download-x' ),
10506
  $update->version,
10507
  sprintf(
10508
  '<a href="%s" target="_blank">%s</a>',
10509
  $this->get_account_url( 'download_latest' ),
10510
+ sprintf( $this->get_text( 'latest-x-version' ), $this->_site->plan->title )
10511
  )
10512
  ),
10513
+ $this->get_text( 'new' ) . '!'
10514
  );
10515
  }
10516
  } else if ( false === $new_version && ! $background ) {
10517
  $this->_admin_notices->add(
10518
+ $this->get_text( 'you-have-latest' ),
10519
+ $this->get_text( 'you-are-good' )
10520
  );
10521
  }
10522
 
10782
 
10783
  if ( ! isset( $result->error ) ) {
10784
  $this->_admin_notices->add( sprintf(
10785
+ $this->get_text( 'verification-email-sent-message' ),
10786
  sprintf( '<a href="mailto:%1s">%2s</a>', esc_url( $this->_user->email ), $this->_user->email )
10787
  ) );
10788
  } else {
10800
  * @return string
10801
  */
10802
  private function get_activation_url( $params = array() ) {
10803
+ if ( $this->is_addon() ) {
10804
+ /**
10805
+ * @author Vova Feldman (@svovaf)
10806
+ * @since 1.2.1.7 Add-on's activation is the parent's module activation.
10807
+ */
10808
+ return $this->get_parent_instance()->get_activation_url( $params );
10809
+ }
10810
+
10811
  return $this->apply_filters( 'connect_url', $this->_get_admin_page_url( '', $params ) );
10812
  }
10813
 
10855
  *
10856
  */
10857
  private function _handle_account_edits() {
10858
+ if ( ! $this->is_user_admin() ) {
10859
  return;
10860
  }
10861
 
10938
  $candidate_email = fs_request_get( 'candidate_email', '' );
10939
 
10940
  if ( $this->init_change_owner( $candidate_email ) ) {
10941
+ $this->_admin_notices->add( sprintf( $this->get_text( 'change-owner-request-sent-x' ), '<b>' . $this->_user->email . '</b>' ) );
10942
  }
10943
  break;
10944
  case 'owner_confirmed':
10945
  $candidate_email = fs_request_get( 'candidate_email', '' );
10946
 
10947
+ $this->_admin_notices->add( sprintf( $this->get_text( 'change-owner-request_owner-confirmed' ), '<b>' . $candidate_email . '</b>' ) );
10948
  break;
10949
  case 'candidate_confirmed':
10950
  if ( $this->complete_change_owner() ) {
10951
  $this->_admin_notices->add_sticky(
10952
+ sprintf( $this->get_text( 'change-owner-request_candidate-confirmed' ), '<b>' . $this->_user->email . '</b>' ),
10953
  'ownership_changed',
10954
+ $this->get_text( 'congrats' ) . '!'
10955
  );
10956
  } else {
10957
  // @todo Handle failed ownership change message.
10971
  switch ( $result->error->code ) {
10972
  case 'user_exist':
10973
  $this->_admin_notices->add(
10974
+ $this->get_text( 'user-exist-message' ) . ' ' .
10975
+ sprintf( $this->get_text( 'user-exist-message_ownership' ), '<b>' . $new_email . '</b>' ) .
10976
  sprintf(
10977
  '<a style="margin-left: 10px;" href="%s"><button class="button button-primary">%s &nbsp;&#10140;</button></a>',
10978
  $this->get_account_url( 'change_owner', array(
10979
  'state' => 'init',
10980
  'candidate_email' => $new_email
10981
  ) ),
10982
+ $this->get_text( 'change-ownership' )
10983
  ),
10984
+ $this->get_text( 'oops' ) . '...',
10985
  'error'
10986
  );
10987
  break;
10988
  }
10989
  } else {
10990
+ $this->_admin_notices->add( $this->get_text( 'email-updated-message' ) );
10991
  }
10992
 
10993
  return;
10999
 
11000
  if ( isset( $result->error ) ) {
11001
  $this->_admin_notices->add(
11002
+ $this->get_text( 'name-update-failed-message' ),
11003
+ $this->get_text( 'oops' ) . '...',
11004
  'error'
11005
  );
11006
  } else {
11007
+ $this->_admin_notices->add( $this->get_text( 'name-updated-message' ) );
11008
  }
11009
 
11010
  return;
11064
  $this->do_action( 'account_property_edit', 'site', $site_property, $site_property_value );
11065
 
11066
  $this->_admin_notices->add( sprintf(
11067
+ $this->get_text( 'x-updated' ),
11068
  '<b>' . str_replace( '_', ' ', $p ) . '</b>' ) );
11069
 
11070
  return;
11189
 
11190
  if ( ! $this->is_registered() && $this->is_org_repo_compliant() ) {
11191
  $this->_admin_notices->add(
11192
+ sprintf( $this->get_text( 'addons-info-external-message' ), '<b>' . $this->get_plugin_name() . '</b>' ),
11193
+ $this->get_text( 'heads-up' ),
11194
  'update-nag'
11195
  );
11196
  }
11427
  * @return bool If trial notice added.
11428
  */
11429
  function _add_trial_notice() {
11430
+ if ( ! $this->is_user_admin() ) {
11431
  return false;
11432
  }
11433
 
11496
  $trial_period = $this->_trial_days;
11497
  $require_payment = $this->_is_trial_require_payment;
11498
  $trial_url = $this->get_trial_url();
11499
+ $plans_string = strtolower( $this->get_text( 'awesome' ) );
11500
 
11501
  if ( $this->is_registered() ) {
11502
  // If opted-in, override trial with up to date data from API.
11536
  }
11537
 
11538
  $message = sprintf(
11539
+ $this->get_text( 'hey' ) . '! ' . $this->get_text( 'trial-x-promotion-message' ),
11540
  sprintf( '<b>%s</b>', $this->get_plugin_name() ),
11541
  $plans_string,
11542
  $trial_period
11544
 
11545
  // "No Credit-Card Required" or "No Commitment for N Days".
11546
  $cc_string = $require_payment ?
11547
+ sprintf( $this->get_text( 'no-commitment-for-x-days' ), $trial_period ) :
11548
+ $this->get_text( 'no-cc-required' ) . '!';
11549
 
11550
 
11551
  // Start trial button.
11552
  $button = ' ' . sprintf(
11553
  '<a style="margin-left: 10px; vertical-align: super;" href="%s"><button class="button button-primary">%s &nbsp;&#10140;</button></a>',
11554
  $trial_url,
11555
+ $this->get_text( 'start-free-trial' )
11556
  );
11557
 
11558
  $this->_admin_notices->add_sticky(
11650
  if ( $this->is_registered() ) {
11651
  if ( ! $this->is_paying() && $this->has_paid_plan() ) {
11652
  $this->add_plugin_action_link(
11653
+ $this->get_text( 'upgrade' ),
11654
  $this->get_upgrade_url(),
11655
  false,
11656
  7,
11660
 
11661
  if ( $this->has_addons() ) {
11662
  $this->add_plugin_action_link(
11663
+ $this->get_text( 'add-ons' ),
11664
  $this->_get_admin_page_url( 'addons' ),
11665
  false,
11666
  9,
11688
  add_action( 'admin_footer', array( &$this, '_add_license_activation_dialog_box' ) );
11689
  }
11690
 
11691
+ $link_text = $this->get_text(
11692
+ $this->is_free_plan() ?
11693
+ 'activate-license' :
11694
+ 'change-license'
11695
  );
11696
 
11697
  $this->add_plugin_action_link(
11716
 
11717
  $this->_logger->entrance();
11718
 
11719
+ if ( ! $this->is_plugins_page() ) {
11720
+ // Only show tracking links on the plugin's page.
11721
+ return;
11722
+ }
11723
+
11724
  if ( ! $this->is_enable_anonymous() ) {
11725
  // Don't allow to opt-out if anonymous mode is disabled.
11726
  return;
11771
  }
11772
 
11773
  $this->add_plugin_action_link(
11774
+ $this->get_text( $link_text_id ),
11775
  $url,
11776
  false,
11777
  13,
11873
  }
11874
 
11875
  if ( ! empty( $deactivate_link ) ) {
11876
+ /**
11877
+ * This HTML element is used to identify the correct plugin when attaching an event to its Deactivate link.
11878
+ *
11879
+ * @since 1.2.1.6 Always show the deactivation feedback form since we added automatic free version deactivation upon premium code activation.
11880
+ */
11881
+ $deactivate_link .= '<i class="fs-slug" data-slug="' . $this->_slug . '"></i>';
 
 
 
11882
 
11883
  // Append deactivation link.
11884
  $before_deactivate['deactivate'] = $deactivate_link;
11939
 
11940
  // @since 1.2.1.5 The free version is auto deactivated.
11941
  $deactivation_step = version_compare( $this->version, '1.2.1.5', '<' ) ?
11942
+ ( '<li>' . $this->get_text( 'deactivate-free-version' ) . '.</li>' ) :
11943
  '';
11944
 
11945
  return sprintf(
11946
  ' %s: <ol><li>%s.</li>%s<li>%s (<a href="%s" target="_blank">%s</a>).</li></ol>',
11947
+ $this->get_text( 'follow-steps-to-complete-upgrade' ),
11948
  $this->get_latest_download_link( sprintf(
11949
+ $this->get_text( 'download-latest-x-version' ),
11950
  $plan_title
11951
  ) ),
11952
  $deactivation_step,
11953
+ $this->get_text( 'upload-and-activate' ),
11954
  '//bit.ly/upload-wp-plugin',
11955
+ $this->get_text( 'howto-upload-activate' )
11956
  );
11957
  }
11958
 
12007
  return $update;
12008
  }
12009
 
12010
+ /**
12011
+ * @author Vova Feldman (@svovaf)
12012
+ * @since 1.2.1.7
12013
+ *
12014
+ * @param string $key
12015
+ *
12016
+ * @return string
12017
+ */
12018
+ function get_text( $key ) {
12019
+ return fs_text( $key, $this->_slug );
12020
+ }
12021
+
12022
  #----------------------------------------------------------------------------------
12023
  #region Versioning
12024
  #----------------------------------------------------------------------------------
12066
  *
12067
  * @author Vova Feldman (@svovaf)
12068
  * @since 1.0.9
 
 
12069
  */
12070
  function set_plugin_upgrade_complete() {
12071
  $this->_storage->plugin_upgrade_mode = false;
12093
 
12094
  #endregion
12095
 
12096
+ #----------------------------------------------------------------------------------
12097
+ #region Auto Activation
12098
+ #----------------------------------------------------------------------------------
12099
+
12100
+ /**
12101
+ * Hints the SDK if running an auto-installation.
12102
+ *
12103
+ * @var bool
12104
+ */
12105
+ private $_isAutoInstall = false;
12106
+
12107
+ /**
12108
+ * After upgrade callback to install and auto activate a plugin.
12109
+ * This code will only be executed on explicit request from the user,
12110
+ * following the practice Jetpack are using with their theme installations.
12111
+ *
12112
+ * @link https://make.wordpress.org/plugins/2017/03/16/clarification-of-guideline-8-executable-code-and-installs/
12113
+ *
12114
+ * @author Vova Feldman (@svovaf)
12115
+ * @since 1.2.1.7
12116
+ */
12117
+ function _install_premium_version_ajax_action() {
12118
+ $this->_logger->entrance();
12119
+
12120
+ $this->check_ajax_referer( 'install_premium_version' );
12121
+
12122
+ if ( ! $this->is_registered() ) {
12123
+ // Not registered.
12124
+ self::shoot_ajax_failure( array(
12125
+ 'message' => $this->get_text( 'auto-install-error-not-opted-in' ),
12126
+ 'code' => 'premium_installed',
12127
+ ) );
12128
+ }
12129
+
12130
+ $plugin_id = fs_request_get( 'module_id', $this->get_id() );
12131
+
12132
+ if ( ! FS_Plugin::is_valid_id( $plugin_id ) ) {
12133
+ // Invalid ID.
12134
+ self::shoot_ajax_failure( array(
12135
+ 'message' => $this->get_text( 'auto-install-error-invalid-id' ),
12136
+ 'code' => 'invalid_module_id',
12137
+ ) );
12138
+ }
12139
+
12140
+ if ( $plugin_id == $this->get_id() ) {
12141
+ if ( $this->is_premium() ) {
12142
+ // Already using the premium code version.
12143
+ self::shoot_ajax_failure( array(
12144
+ 'message' => $this->get_text( 'auto-install-error-premium-activated' ),
12145
+ 'code' => 'premium_installed',
12146
+ ) );
12147
+ }
12148
+ if ( ! $this->can_use_premium_code() ) {
12149
+ // Don't have access to the premium code.
12150
+ self::shoot_ajax_failure( array(
12151
+ 'message' => $this->get_text( 'auto-install-error-invalid-license' ),
12152
+ 'code' => 'invalid_license',
12153
+ ) );
12154
+ }
12155
+ if ( ! $this->has_release_on_freemius() ) {
12156
+ // Plugin is a serviceware, no premium code version.
12157
+ self::shoot_ajax_failure( array(
12158
+ 'message' => $this->get_text( 'auto-install-error-serviceware' ),
12159
+ 'code' => 'premium_version_missing',
12160
+ ) );
12161
+ }
12162
+ } else {
12163
+ $addon = $this->get_addon( $plugin_id );
12164
+
12165
+ if ( ! is_object( $addon ) ) {
12166
+ // Invalid add-on ID.
12167
+ self::shoot_ajax_failure( array(
12168
+ 'message' => $this->get_text( 'auto-install-error-invalid-id' ),
12169
+ 'code' => 'invalid_module_id',
12170
+ ) );
12171
+ }
12172
+
12173
+ if ( $this->is_addon_activated( $plugin_id, true ) ) {
12174
+ // Premium add-on version is already activated.
12175
+ self::shoot_ajax_failure( array(
12176
+ 'message' => $this->get_text( 'auto-install-error-premium-addon-activated' ),
12177
+ 'code' => 'premium_installed',
12178
+ ) );
12179
+ }
12180
+ }
12181
+
12182
+ $this->_isAutoInstall = true;
12183
+
12184
+ // Try to install and activate.
12185
+ $updater = new FS_Plugin_Updater( $this );
12186
+ $result = $updater->install_and_activate_plugin( $plugin_id );
12187
+
12188
+ if ( is_array( $result ) && ! empty( $result['message'] ) ) {
12189
+ self::shoot_ajax_failure( array(
12190
+ 'message' => $result['message'],
12191
+ 'code' => $result['code'],
12192
+ ) );
12193
+ }
12194
+
12195
+ self::shoot_ajax_success( $result );
12196
+ }
12197
+
12198
+ /**
12199
+ * Displays module activation dialog box after a successful upgrade
12200
+ * where the user explicitly requested to auto download and install
12201
+ * the premium version.
12202
+ *
12203
+ * @author Vova Feldman (@svovaf)
12204
+ * @since 1.2.1.7
12205
+ */
12206
+ function _add_auto_installation_dialog_box() {
12207
+ $this->_logger->entrance();
12208
+
12209
+ if ( ! $this->is_registered() ) {
12210
+ // Not registered.
12211
+ return;
12212
+ }
12213
+
12214
+ $plugin_id = fs_request_get( 'plugin_id', $this->get_id() );
12215
+
12216
+ if ( ! FS_Plugin::is_valid_id( $plugin_id ) ) {
12217
+ // Invalid module ID.
12218
+ return;
12219
+ }
12220
+
12221
+ if ( $plugin_id == $this->get_id() ) {
12222
+ if ( $this->is_premium() ) {
12223
+ // Already using the premium code version.
12224
+ return;
12225
+ }
12226
+ if ( ! $this->can_use_premium_code() ) {
12227
+ // Don't have access to the premium code.
12228
+ return;
12229
+ }
12230
+ if ( ! $this->has_release_on_freemius() ) {
12231
+ // Plugin is a serviceware, no premium code version.
12232
+ return;
12233
+ }
12234
+ } else {
12235
+ $addon = $this->get_addon( $plugin_id );
12236
+
12237
+ if ( ! is_object( $addon ) ) {
12238
+ // Invalid add-on ID.
12239
+ return;
12240
+ }
12241
+
12242
+ if ( $this->is_addon_activated( $plugin_id, true ) ) {
12243
+ // Premium add-on version is already activated.
12244
+ return;
12245
+ }
12246
+ }
12247
+
12248
+ $vars = array(
12249
+ 'id' => $plugin_id,
12250
+ 'slug' => $this->_slug,
12251
+ );
12252
+
12253
+ fs_require_template( 'auto-installation.php', $vars );
12254
+ }
12255
+
12256
+ #endregion
12257
+
12258
  #----------------------------------------------------------------------------------
12259
  #region Marketing
12260
  #----------------------------------------------------------------------------------
freemius/includes/class-fs-logger.php CHANGED
@@ -85,10 +85,12 @@
85
  * @since 1.2.1.6
86
  */
87
  private static function init() {
88
- self::$_ownerName = get_current_user();
 
 
89
  self::$_isStorageLoggingOn = ( 1 == get_option( 'fs_storage_logger', 0 ) );
90
  self::$_abspathLength = strlen( ABSPATH );
91
- self::$_processID = mt_rand(0, 32000);
92
 
93
  // Process ID may be `false` on errors.
94
  if ( ! is_numeric( self::$_processID ) ) {
@@ -186,7 +188,7 @@
186
 
187
  self::$LOG[] = $log;
188
 
189
- if ( $this->is_echo_on() ) {
190
  echo self::format_html( $log ) . "\n";
191
  }
192
  }
85
  * @since 1.2.1.6
86
  */
87
  private static function init() {
88
+ self::$_ownerName = function_exists( 'get_current_user' ) ?
89
+ get_current_user() :
90
+ 'unknown';
91
  self::$_isStorageLoggingOn = ( 1 == get_option( 'fs_storage_logger', 0 ) );
92
  self::$_abspathLength = strlen( ABSPATH );
93
+ self::$_processID = mt_rand( 0, 32000 );
94
 
95
  // Process ID may be `false` on errors.
96
  if ( ! is_numeric( self::$_processID ) ) {
188
 
189
  self::$LOG[] = $log;
190
 
191
+ if ( $this->is_echo_on() && ! Freemius::is_ajax() ) {
192
  echo self::format_html( $log ) . "\n";
193
  }
194
  }
freemius/includes/class-fs-plugin-updater.php CHANGED
@@ -123,7 +123,7 @@
123
  $plugin_update_row = preg_replace(
124
  '/(\<div.+>)(.+)(\<a.+\<a.+)\<\/div\>/is',
125
  '$1 $2 ' . sprintf(
126
- __fs( 'renew-license-now' ),
127
  '<a href="' . $this->_fs->pricing_url() . '">', '</a>',
128
  $r->new_version ) .
129
  '$4',
@@ -318,13 +318,13 @@ if ( !isset($info->error) ) {
318
  }
319
 
320
  // Get plugin's newest update.
321
- $new_version = $this->_fs->_fetch_latest_version( $is_addon ? $addon->id : false );
322
 
323
  if ( ! is_object( $new_version ) || empty( $new_version->version ) ) {
324
  $data->version = $this->_fs->get_plugin_version();
325
  } else {
326
  if ( $is_addon ) {
327
- $data->name = $addon->title . ' ' . __fs( 'addon', $this->_fs->get_slug() );
328
  $data->slug = $addon->slug;
329
  $data->url = WP_FS__ADDRESS;
330
  $data->package = $new_version->url;
@@ -343,6 +343,18 @@ if ( !isset($info->error) ) {
343
  return $data;
344
  }
345
 
 
 
 
 
 
 
 
 
 
 
 
 
346
  /**
347
  * Checks if a given basename has a matching folder name
348
  * with the current context plugin.
@@ -359,7 +371,7 @@ if ( !isset($info->error) ) {
359
  $basename = $this->_fs->get_plugin_basename();
360
  }
361
 
362
- return ( $this->_fs->get_slug() . ( $this->_fs->is_premium() ? '-premium' : '' ) != trim( dirname( $basename ), '/\\' ) );
363
  }
364
 
365
  /**
@@ -412,4 +424,260 @@ if ( !isset($info->error) ) {
412
 
413
  return $response;
414
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
415
  }
123
  $plugin_update_row = preg_replace(
124
  '/(\<div.+>)(.+)(\<a.+\<a.+)\<\/div\>/is',
125
  '$1 $2 ' . sprintf(
126
+ $this->_fs->get_text( 'renew-license-now' ),
127
  '<a href="' . $this->_fs->pricing_url() . '">', '</a>',
128
  $r->new_version ) .
129
  '$4',
318
  }
319
 
320
  // Get plugin's newest update.
321
+ $new_version = $this->get_latest_download_details( $is_addon ? $addon->id : false );
322
 
323
  if ( ! is_object( $new_version ) || empty( $new_version->version ) ) {
324
  $data->version = $this->_fs->get_plugin_version();
325
  } else {
326
  if ( $is_addon ) {
327
+ $data->name = $addon->title . ' ' . $this->_fs->get_text( 'addon' );
328
  $data->slug = $addon->slug;
329
  $data->url = WP_FS__ADDRESS;
330
  $data->package = $new_version->url;
343
  return $data;
344
  }
345
 
346
+ /**
347
+ * @author Vova Feldman (@svovaf)
348
+ * @since 1.2.1.7
349
+ *
350
+ * @param number|bool $addon_id
351
+ *
352
+ * @return object
353
+ */
354
+ private function get_latest_download_details( $addon_id = false ) {
355
+ return $this->_fs->_fetch_latest_version( $addon_id );
356
+ }
357
+
358
  /**
359
  * Checks if a given basename has a matching folder name
360
  * with the current context plugin.
371
  $basename = $this->_fs->get_plugin_basename();
372
  }
373
 
374
+ return ( $this->_fs->get_target_folder_name() != trim( dirname( $basename ), '/\\' ) );
375
  }
376
 
377
  /**
424
 
425
  return $response;
426
  }
427
+
428
+ #----------------------------------------------------------------------------------
429
+ #region Auto Activation
430
+ #----------------------------------------------------------------------------------
431
+
432
+ /**
433
+ * Installs and active a plugin when explicitly requested that from a 3rd party service.
434
+ *
435
+ * This logic was inspired by the TGMPA GPL licensed library by Thomas Griffin.
436
+ *
437
+ * @link http://tgmpluginactivation.com/
438
+ *
439
+ * @author Vova Feldman
440
+ * @since 1.2.1.7
441
+ *
442
+ * @link https://make.wordpress.org/plugins/2017/03/16/clarification-of-guideline-8-executable-code-and-installs/
443
+ *
444
+ * @uses WP_Filesystem
445
+ * @uses WP_Error
446
+ * @uses WP_Upgrader
447
+ * @uses Plugin_Upgrader
448
+ * @uses Plugin_Installer_Skin
449
+ * @uses Plugin_Upgrader_Skin
450
+ *
451
+ * @param number|bool $plugin_id
452
+ *
453
+ * @return array
454
+ */
455
+ function install_and_activate_plugin( $plugin_id = false ) {
456
+ if ( ! empty( $plugin_id ) && ! FS_Plugin::is_valid_id( $plugin_id ) ) {
457
+ // Invalid plugin ID.
458
+ return array(
459
+ 'message' => $this->_fs->get_text( 'auto-install-error-invalid-id' ),
460
+ 'code' => 'invalid_module_id',
461
+ );
462
+ }
463
+
464
+ $is_addon = false;
465
+ if ( FS_Plugin::is_valid_id( $plugin_id ) &&
466
+ $plugin_id != $this->_fs->get_id()
467
+ ) {
468
+ $addon = $this->_fs->get_addon( $plugin_id );
469
+
470
+ if ( ! is_object( $addon ) ) {
471
+ // Invalid add-on ID.
472
+ return array(
473
+ 'message' => $this->_fs->get_text( 'auto-install-error-invalid-id' ),
474
+ 'code' => 'invalid_module_id',
475
+ );
476
+ }
477
+
478
+ $slug = $addon->slug;
479
+ $title = $addon->title . ' ' . $this->_fs->get_text( 'addon' );
480
+
481
+ $is_addon = true;
482
+ } else {
483
+ $slug = $this->_fs->get_slug();
484
+ $title = $this->_fs->get_plugin_title() .
485
+ ( $this->_fs->is_addon() ? ' ' . $this->_fs->get_text( 'addon' ) : '' );
486
+ }
487
+
488
+ if ( $this->is_premium_plugin_active( $plugin_id ) ) {
489
+ // Premium version already activated.
490
+ return array(
491
+ 'message' => $this->_fs->get_text(
492
+ $is_addon ?
493
+ 'auto-install-error-premium-addon-activated' :
494
+ 'auto-install-error-premium-activated'
495
+ ),
496
+ 'code' => 'premium_installed',
497
+ );
498
+ }
499
+
500
+ $latest_version = $this->get_latest_download_details( $plugin_id );
501
+ $target_folder = "{$slug}-premium";
502
+
503
+ // Prep variables for Plugin_Installer_Skin class.
504
+ $extra = array();
505
+ $extra['slug'] = $target_folder;
506
+ $source = $latest_version->url;
507
+ $api = null;
508
+
509
+ $install_url = add_query_arg(
510
+ array(
511
+ 'action' => 'install-plugin',
512
+ 'plugin' => urlencode( $slug ),
513
+ ),
514
+ 'update.php'
515
+ );
516
+
517
+ if ( ! class_exists( 'Plugin_Upgrader', false ) ) {
518
+ // Include required resources for the installation.
519
+ require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
520
+ }
521
+
522
+ $skin_args = array(
523
+ 'type' => 'web',
524
+ 'title' => sprintf( fs_text( 'installing-plugin-x', $slug ), $title ),
525
+ 'url' => esc_url_raw( $install_url ),
526
+ 'nonce' => 'install-plugin_' . $slug,
527
+ 'plugin' => '',
528
+ 'api' => $api,
529
+ 'extra' => $extra,
530
+ );
531
+
532
+ // $skin = new Automatic_Upgrader_Skin( $skin_args );
533
+ // $skin = new Plugin_Installer_Skin( $skin_args );
534
+ $skin = new WP_Ajax_Upgrader_Skin( $skin_args );
535
+
536
+ // Create a new instance of Plugin_Upgrader.
537
+ $upgrader = new Plugin_Upgrader( $skin );
538
+
539
+ // Perform the action and install the plugin from the $source urldecode().
540
+ add_filter( 'upgrader_source_selection', array( &$this, '_maybe_adjust_source_dir' ), 1, 3 );
541
+
542
+ $install_result = $upgrader->install( $source );
543
+
544
+ remove_filter( 'upgrader_source_selection', array( &$this, '_maybe_adjust_source_dir' ), 1 );
545
+
546
+ if ( is_wp_error( $install_result ) ) {
547
+ return array(
548
+ 'message' => $install_result->get_error_message(),
549
+ 'code' => $install_result->get_error_code(),
550
+ );
551
+ } elseif ( is_wp_error( $skin->result ) ) {
552
+ return array(
553
+ 'message' => $skin->result->get_error_message(),
554
+ 'code' => $skin->result->get_error_code(),
555
+ );
556
+ } elseif ( $skin->get_errors()->get_error_code() ) {
557
+ return array(
558
+ 'message' => $skin->get_error_messages(),
559
+ 'code' => 'unknown',
560
+ );
561
+ } elseif ( is_null( $install_result ) ) {
562
+ global $wp_filesystem;
563
+
564
+ $error_code = 'unable_to_connect_to_filesystem';
565
+ $error_message = __( 'Unable to connect to the filesystem. Please confirm your credentials.' );
566
+
567
+ // Pass through the error from WP_Filesystem if one was raised.
568
+ if ( $wp_filesystem instanceof WP_Filesystem_Base &&
569
+ is_wp_error( $wp_filesystem->errors ) &&
570
+ $wp_filesystem->errors->get_error_code()
571
+ ) {
572
+ $error_message = $wp_filesystem->errors->get_error_message();
573
+ }
574
+
575
+ return array(
576
+ 'message' => $error_message,
577
+ 'code' => $error_code,
578
+ );
579
+ }
580
+
581
+ // Grab the full path to the main plugin's file.
582
+ $plugin_activate = $upgrader->plugin_info();
583
+
584
+ // Try to activate the plugin.
585
+ $activation_result = $this->try_activate_plugin( $plugin_activate );
586
+
587
+ if ( is_wp_error( $activation_result ) ) {
588
+ return array(
589
+ 'message' => $activation_result->get_error_message(),
590
+ 'code' => $activation_result->get_error_code(),
591
+ );
592
+ }
593
+
594
+ return $skin->get_upgrade_messages();
595
+ }
596
+
597
+ /**
598
+ * Tries to activate a plugin. If fails, returns the error.
599
+ *
600
+ * @author Vova Feldman
601
+ * @since 1.2.1.7
602
+ *
603
+ * @param string $file_path Path within wp-plugins/ to main plugin file.
604
+ * This determines the styling of the output messages.
605
+ *
606
+ * @return bool|WP_Error
607
+ */
608
+ protected function try_activate_plugin( $file_path ) {
609
+ $activate = activate_plugin( $file_path );
610
+
611
+ return is_wp_error( $activate ) ?
612
+ $activate :
613
+ true;
614
+ }
615
+
616
+ /**
617
+ * Check if a premium module version is already active.
618
+ *
619
+ * @author Vova Feldman
620
+ * @since 1.2.1.7
621
+ *
622
+ * @param number|bool $plugin_id
623
+ *
624
+ * @return bool
625
+ */
626
+ private function is_premium_plugin_active( $plugin_id = false ) {
627
+ if ( $plugin_id != $this->_fs->get_id() ) {
628
+ return $this->_fs->is_addon_activated( $plugin_id, true );
629
+ }
630
+
631
+ return is_plugin_active( $this->_fs->premium_plugin_basename() );
632
+ }
633
+
634
+ /**
635
+ * Adjust the plugin directory name if necessary.
636
+ * Assumes plugin has a folder (not a single file plugin).
637
+ *
638
+ * The final destination directory of a plugin is based on the subdirectory name found in the
639
+ * (un)zipped source. In some cases this subdirectory name is not the same as the expected
640
+ * slug and the plugin will not be recognized as installed. This is fixed by adjusting
641
+ * the temporary unzipped source subdirectory name to the expected plugin slug.
642
+ *
643
+ * @author Vova Feldman
644
+ * @since 1.2.1.7
645
+ *
646
+ * @param string $source Path to upgrade/zip-file-name.tmp/subdirectory/.
647
+ * @param string $remote_source Path to upgrade/zip-file-name.tmp.
648
+ * @param \WP_Upgrader $upgrader Instance of the upgrader which installs the plugin.
649
+ *
650
+ * @return string|WP_Error
651
+ */
652
+ function _maybe_adjust_source_dir( $source, $remote_source, $upgrader ) {
653
+ if ( ! is_object( $GLOBALS['wp_filesystem'] ) ) {
654
+ return $source;
655
+ }
656
+
657
+ // Figure out what the slug is supposed to be.
658
+ $desired_slug = $upgrader->skin->options['extra']['slug'];
659
+
660
+ $subdir_name = untrailingslashit( str_replace( trailingslashit( $remote_source ), '', $source ) );
661
+
662
+ if ( ! empty( $subdir_name ) && $subdir_name !== $desired_slug ) {
663
+ $from_path = untrailingslashit( $source );
664
+ $to_path = trailingslashit( $remote_source ) . $desired_slug;
665
+
666
+ if ( true === $GLOBALS['wp_filesystem']->move( $from_path, $to_path ) ) {
667
+ return trailingslashit( $to_path );
668
+ } else {
669
+ return new WP_Error(
670
+ 'rename_failed',
671
+ $this->_fs->get_text( 'module-package-rename-failure' ),
672
+ array(
673
+ 'found' => $subdir_name,
674
+ 'expected' => $desired_slug
675
+ ) );
676
+ }
677
+ }
678
+
679
+ return $source;
680
+ }
681
+
682
+ #endregion
683
  }
freemius/includes/debug/class-fs-debug-bar-panel.php CHANGED
@@ -45,7 +45,7 @@
45
  $total_time += $l['total'];
46
  }
47
 
48
- return number_format( 100 * $total_time, 2 ) . ' ' . __fs( 'ms' );
49
  }
50
 
51
  function render() {
45
  $total_time += $l['total'];
46
  }
47
 
48
+ return number_format( 100 * $total_time, 2 ) . ' ' . fs_text( 'ms' );
49
  }
50
 
51
  function render() {
freemius/includes/debug/debug-bar-start.php CHANGED
@@ -38,8 +38,8 @@
38
  require_once dirname( __FILE__ ) . '/class-fs-debug-bar-panel.php';
39
  $statuses[] = array(
40
  'fs_api_requests',
41
- __fs( 'Freemius API' ),
42
- Freemius_Debug_Bar_Panel::requests_count() . ' ' . __fs( 'Requests' ) .
43
  ' (' . Freemius_Debug_Bar_Panel::total_time() . ')'
44
  );
45
  }
38
  require_once dirname( __FILE__ ) . '/class-fs-debug-bar-panel.php';
39
  $statuses[] = array(
40
  'fs_api_requests',
41
+ fs_text( 'Freemius API' ),
42
+ Freemius_Debug_Bar_Panel::requests_count() . ' ' . fs_text( 'Requests' ) .
43
  ' (' . Freemius_Debug_Bar_Panel::total_time() . ')'
44
  );
45
  }
freemius/includes/fs-core-functions.php CHANGED
@@ -10,10 +10,6 @@
10
  exit;
11
  }
12
 
13
- global $fs_core_logger;
14
-
15
- $fs_core_logger = FS_Logger::get_logger( WP_FS__SLUG . '_core', WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK );
16
-
17
  if ( ! function_exists( 'fs_dummy' ) ) {
18
  function fs_dummy() {
19
  }
@@ -65,24 +61,10 @@
65
  /* Scripts and styles including.
66
  --------------------------------------------------------------------------------------------*/
67
  function fs_enqueue_local_style( $handle, $path, $deps = array(), $ver = false, $media = 'all' ) {
68
- global $fs_core_logger;
69
- if ( $fs_core_logger->is_on() ) {
70
- $fs_core_logger->info( 'handle = ' . $handle . '; path = ' . $path . ';' );
71
- $fs_core_logger->info( 'plugin_basename = ' . plugins_url( WP_FS__DIR_CSS . trim( $path, '/' ) ) );
72
- $fs_core_logger->info( 'plugins_url = ' . plugins_url( plugin_basename( WP_FS__DIR_CSS . '/' . trim( $path, '/' ) ) ) );
73
- }
74
-
75
  wp_enqueue_style( $handle, plugins_url( plugin_basename( WP_FS__DIR_CSS . '/' . trim( $path, '/' ) ) ), $deps, $ver, $media );
76
  }
77
 
78
  function fs_enqueue_local_script( $handle, $path, $deps = array(), $ver = false, $in_footer = 'all' ) {
79
- global $fs_core_logger;
80
- if ( $fs_core_logger->is_on() ) {
81
- $fs_core_logger->info( 'handle = ' . $handle . '; path = ' . $path . ';' );
82
- $fs_core_logger->info( 'plugin_basename = ' . plugins_url( WP_FS__DIR_JS . trim( $path, '/' ) ) );
83
- $fs_core_logger->info( 'plugins_url = ' . plugins_url( plugin_basename( WP_FS__DIR_JS . '/' . trim( $path, '/' ) ) ) );
84
- }
85
-
86
  wp_enqueue_script( $handle, plugins_url( plugin_basename( WP_FS__DIR_JS . '/' . trim( $path, '/' ) ) ), $deps, $ver, $in_footer );
87
  }
88
 
@@ -93,13 +75,32 @@
93
  /* Request handlers.
94
  --------------------------------------------------------------------------------------------*/
95
  /**
96
- * @param string $key
97
- * @param mixed $def
 
 
 
98
  *
99
  * @return mixed
100
  */
101
- function fs_request_get( $key, $def = false ) {
102
- return isset( $_REQUEST[ $key ] ) ? $_REQUEST[ $key ] : $def;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  }
104
 
105
  function fs_request_has( $key ) {
@@ -184,8 +185,8 @@
184
  return true;
185
  }
186
 
187
- function fs_is_plugin_page( $menu_slug ) {
188
- return ( is_admin() && $_REQUEST['page'] === $menu_slug );
189
  }
190
 
191
  /* Core UI.
@@ -467,6 +468,8 @@
467
  $ch = curl_init( $from );
468
  $fp = fopen( fs_normalize_path( $to ), 'wb' );
469
  curl_setopt( $ch, CURLOPT_FILE, $fp );
 
 
470
  curl_setopt( $ch, CURLOPT_HEADER, 0 );
471
  curl_exec( $ch );
472
  curl_close( $ch );
@@ -508,87 +511,119 @@
508
  #region Localization
509
  #--------------------------------------------------------------------------------
510
 
511
- /**
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
512
  * @author Vova Feldman
513
- * @since 1.2.1.6
514
  *
515
  * @param string $key
516
  * @param string $slug
517
  *
518
  * @return string
519
  */
520
- function fs_esc_attr($key, $slug) {
521
- return esc_attr( __fs( $key, $slug ) );
522
  }
523
 
524
  /**
525
  * @author Vova Feldman
526
- * @since 1.2.1.6
527
  *
528
  * @param string $key
529
  * @param string $slug
530
  */
531
- function fs_esc_attr_echo($key, $slug) {
532
- echo esc_attr( __fs( $key, $slug ) );
533
  }
534
 
535
  /**
536
  * @author Vova Feldman
537
- * @since 1.2.1.6
538
  *
539
  * @param string $key
540
  * @param string $slug
541
  *
542
  * @return string
543
  */
544
- function fs_esc_js($key, $slug) {
545
- return esc_js( __fs( $key, $slug ) );
546
  }
547
 
548
  /**
549
  * @author Vova Feldman
550
- * @since 1.2.1.6
551
  *
552
  * @param string $key
553
  * @param string $slug
554
  */
555
- function fs_esc_js_echo($key, $slug) {
556
- echo esc_js( __fs( $key, $slug ) );
557
  }
558
 
559
  /**
560
  * @author Vova Feldman
561
- * @since 1.2.1.6
562
  *
563
  * @param string $key
564
  * @param string $slug
565
  */
566
- function fs_json_encode_echo($key, $slug) {
567
- echo json_encode( __fs( $key, $slug ) );
568
  }
569
 
570
  /**
571
  * @author Vova Feldman
572
- * @since 1.2.1.6
573
  *
574
  * @param string $key
575
  * @param string $slug
576
  *
577
  * @return string
578
  */
579
- function fs_esc_html($key, $slug) {
580
- return esc_html( __fs( $key, $slug ) );
581
  }
582
 
583
  /**
584
  * @author Vova Feldman
585
- * @since 1.2.1.6
586
  *
587
  * @param string $key
588
  * @param string $slug
589
  */
590
- function fs_esc_html_echo($key, $slug) {
591
- echo esc_html( __fs( $key, $slug ) );
592
  }
593
 
594
- #endregion
10
  exit;
11
  }
12
 
 
 
 
 
13
  if ( ! function_exists( 'fs_dummy' ) ) {
14
  function fs_dummy() {
15
  }
61
  /* Scripts and styles including.
62
  --------------------------------------------------------------------------------------------*/
63
  function fs_enqueue_local_style( $handle, $path, $deps = array(), $ver = false, $media = 'all' ) {
 
 
 
 
 
 
 
64
  wp_enqueue_style( $handle, plugins_url( plugin_basename( WP_FS__DIR_CSS . '/' . trim( $path, '/' ) ) ), $deps, $ver, $media );
65
  }
66
 
67
  function fs_enqueue_local_script( $handle, $path, $deps = array(), $ver = false, $in_footer = 'all' ) {
 
 
 
 
 
 
 
68
  wp_enqueue_script( $handle, plugins_url( plugin_basename( WP_FS__DIR_JS . '/' . trim( $path, '/' ) ) ), $deps, $ver, $in_footer );
69
  }
70
 
75
  /* Request handlers.
76
  --------------------------------------------------------------------------------------------*/
77
  /**
78
+ * @param string $key
79
+ * @param mixed $def
80
+ * @param string|bool $type Since 1.2.1.7 - when set to 'get' will look for the value passed via querystring, when
81
+ * set to 'post' will look for the value passed via the POST request's body, otherwise,
82
+ * will check if the parameter was passed in any of the two.
83
  *
84
  * @return mixed
85
  */
86
+ function fs_request_get( $key, $def = false, $type = false ) {
87
+ if ( is_string( $type ) ) {
88
+ $type = strtolower( $type );
89
+ }
90
+
91
+ switch ( $type ) {
92
+ case 'post':
93
+ $value = isset( $_POST[ $key ] ) ? $_POST[ $key ] : $def;
94
+ break;
95
+ case 'get':
96
+ $value = isset( $_GET[ $key ] ) ? $_GET[ $key ] : $def;
97
+ break;
98
+ default:
99
+ $value = isset( $_REQUEST[ $key ] ) ? $_REQUEST[ $key ] : $def;
100
+ break;
101
+ }
102
+
103
+ return $value;
104
  }
105
 
106
  function fs_request_has( $key ) {
185
  return true;
186
  }
187
 
188
+ function fs_is_plugin_page( $page_slug ) {
189
+ return ( is_admin() && $page_slug === fs_request_get('page') );
190
  }
191
 
192
  /* Core UI.
468
  $ch = curl_init( $from );
469
  $fp = fopen( fs_normalize_path( $to ), 'wb' );
470
  curl_setopt( $ch, CURLOPT_FILE, $fp );
471
+ curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false );
472
+ curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
473
  curl_setopt( $ch, CURLOPT_HEADER, 0 );
474
  curl_exec( $ch );
475
  curl_close( $ch );
511
  #region Localization
512
  #--------------------------------------------------------------------------------
513
 
514
+ if ( ! function_exists( 'fs_text' ) ) {
515
+ /**
516
+ * Retrieve a translated text by key.
517
+ *
518
+ * @author Vova Feldman (@svovaf)
519
+ * @since 1.2.1.7
520
+ *
521
+ * @param string $key
522
+ * @param string $slug
523
+ *
524
+ * @return string
525
+ *
526
+ * @global $fs_text, $fs_text_overrides
527
+ */
528
+ function fs_text( $key, $slug = 'freemius' ) {
529
+ return __fs( $key, $slug );
530
+ }
531
+
532
+ /**
533
+ * Output a translated text by key.
534
+ *
535
+ * @author Vova Feldman (@svovaf)
536
+ * @since 1.2.1.7
537
+ *
538
+ * @param string $key
539
+ * @param string $slug
540
+ */
541
+ function fs_echo( $key, $slug = 'freemius' ) {
542
+ echo fs_text( $key, $slug );
543
+ }
544
+ }
545
+
546
+ /**
547
  * @author Vova Feldman
548
+ * @since 1.2.1.6
549
  *
550
  * @param string $key
551
  * @param string $slug
552
  *
553
  * @return string
554
  */
555
+ function fs_esc_attr( $key, $slug ) {
556
+ return esc_attr( fs_text( $key, $slug ) );
557
  }
558
 
559
  /**
560
  * @author Vova Feldman
561
+ * @since 1.2.1.6
562
  *
563
  * @param string $key
564
  * @param string $slug
565
  */
566
+ function fs_esc_attr_echo( $key, $slug ) {
567
+ echo esc_attr( fs_text( $key, $slug ) );
568
  }
569
 
570
  /**
571
  * @author Vova Feldman
572
+ * @since 1.2.1.6
573
  *
574
  * @param string $key
575
  * @param string $slug
576
  *
577
  * @return string
578
  */
579
+ function fs_esc_js( $key, $slug ) {
580
+ return esc_js( fs_text( $key, $slug ) );
581
  }
582
 
583
  /**
584
  * @author Vova Feldman
585
+ * @since 1.2.1.6
586
  *
587
  * @param string $key
588
  * @param string $slug
589
  */
590
+ function fs_esc_js_echo( $key, $slug ) {
591
+ echo esc_js( fs_text( $key, $slug ) );
592
  }
593
 
594
  /**
595
  * @author Vova Feldman
596
+ * @since 1.2.1.6
597
  *
598
  * @param string $key
599
  * @param string $slug
600
  */
601
+ function fs_json_encode_echo( $key, $slug ) {
602
+ echo json_encode( fs_text( $key, $slug ) );
603
  }
604
 
605
  /**
606
  * @author Vova Feldman
607
+ * @since 1.2.1.6
608
  *
609
  * @param string $key
610
  * @param string $slug
611
  *
612
  * @return string
613
  */
614
+ function fs_esc_html( $key, $slug ) {
615
+ return esc_html( fs_text( $key, $slug ) );
616
  }
617
 
618
  /**
619
  * @author Vova Feldman
620
+ * @since 1.2.1.6
621
  *
622
  * @param string $key
623
  * @param string $slug
624
  */
625
+ function fs_esc_html_echo( $key, $slug ) {
626
+ echo esc_html( fs_text( $key, $slug ) );
627
  }
628
 
629
+ #endregion
freemius/includes/fs-essential-functions.php CHANGED
@@ -52,7 +52,7 @@
52
 
53
  $file = '';
54
  $line = '';
55
- if ( headers_sent($file, $line) ) {
56
  if ( WP_FS__DEBUG_SDK && class_exists( 'FS_Admin_Notice_Manager' ) ) {
57
  $notices = FS_Admin_Notice_Manager::instance( 'global' );
58
 
@@ -152,64 +152,70 @@
152
  /**
153
  * Retrieve a translated text by key.
154
  *
155
- * @author Vova Feldman (@svovaf)
156
- * @since 1.1.4
 
 
157
  *
158
  * @param string $key
159
  * @param string $slug
160
  *
161
  * @return string
162
  *
163
- * @global $fs_text , $fs_text_overrides
164
  */
165
  function __fs( $key, $slug = 'freemius' ) {
166
- global $fs_text,
167
- $fs_module_info_text,
168
- $fs_text_overrides;
169
-
170
- if ( isset( $fs_text_overrides[ $slug ] ) ) {
171
- if ( isset( $fs_text_overrides[ $slug ][ $key ] ) ) {
172
- return $fs_text_overrides[ $slug ][ $key ];
173
- }
174
-
175
- $lower_key = strtolower( $key );
176
- if ( isset( $fs_text_overrides[ $slug ][ $lower_key ] ) ) {
177
- return $fs_text_overrides[ $slug ][ $lower_key ];
178
- }
179
- }
180
-
181
- if ( ! isset( $fs_text ) ) {
182
- $dir = defined( 'WP_FS__DIR_INCLUDES' ) ?
183
- WP_FS__DIR_INCLUDES :
184
- dirname( __FILE__ );
185
-
186
- require_once $dir . '/i18n.php';
187
- }
188
-
189
- if ( isset( $fs_text[ $key ] ) ) {
190
- return $fs_text[ $key ];
191
- }
192
-
193
- if ( isset( $fs_module_info_text[ $key ] ) ) {
194
- return $fs_module_info_text[ $key ];
195
- }
196
-
197
- return $key;
198
  }
199
 
200
  /**
201
- * Display a translated text by key.
202
  *
203
- * @author Vova Feldman (@svovaf)
204
- * @since 1.1.4
 
 
205
  *
206
  * @param string $key
207
  * @param string $slug
208
  */
209
  function _efs( $key, $slug = 'freemius' ) {
210
- echo __fs( $key, $slug );
211
  }
 
212
 
 
213
  /**
214
  * Override default i18n text phrases.
215
  *
@@ -292,6 +298,10 @@
292
 
293
  $plugin_file = null;
294
  for ( $i = 1, $bt = debug_backtrace(), $len = count( $bt ); $i < $len; $i ++ ) {
 
 
 
 
295
  if ( in_array( fs_normalize_path( $bt[ $i ]['file'] ), $all_plugins_paths ) ) {
296
  $plugin_file = $bt[ $i ]['file'];
297
  break;
@@ -300,7 +310,11 @@
300
 
301
  if ( is_null( $plugin_file ) ) {
302
  // Throw an error to the developer in case of some edge case dev environment.
303
- wp_die( __fs( 'failed-finding-main-path' ), __fs( 'error' ), array( 'back_link' => true ) );
 
 
 
 
304
  }
305
 
306
  return $plugin_file;
52
 
53
  $file = '';
54
  $line = '';
55
+ if ( headers_sent( $file, $line ) ) {
56
  if ( WP_FS__DEBUG_SDK && class_exists( 'FS_Admin_Notice_Manager' ) ) {
57
  $notices = FS_Admin_Notice_Manager::instance( 'global' );
58
 
152
  /**
153
  * Retrieve a translated text by key.
154
  *
155
+ * @deprecated Use `fs_text()` instead since methods starting with `__` trigger warnings in Php 7.
156
+ *
157
+ * @author Vova Feldman (@svovaf)
158
+ * @since 1.1.4
159
  *
160
  * @param string $key
161
  * @param string $slug
162
  *
163
  * @return string
164
  *
165
+ * @global $fs_text, $fs_text_overrides
166
  */
167
  function __fs( $key, $slug = 'freemius' ) {
168
+ global $fs_text,
169
+ $fs_module_info_text,
170
+ $fs_text_overrides;
171
+
172
+ if ( isset( $fs_text_overrides[ $slug ] ) ) {
173
+ if ( isset( $fs_text_overrides[ $slug ][ $key ] ) ) {
174
+ return $fs_text_overrides[ $slug ][ $key ];
175
+ }
176
+
177
+ $lower_key = strtolower( $key );
178
+ if ( isset( $fs_text_overrides[ $slug ][ $lower_key ] ) ) {
179
+ return $fs_text_overrides[ $slug ][ $lower_key ];
180
+ }
181
+ }
182
+
183
+ if ( ! isset( $fs_text ) ) {
184
+ $dir = defined( 'WP_FS__DIR_INCLUDES' ) ?
185
+ WP_FS__DIR_INCLUDES :
186
+ dirname( __FILE__ );
187
+
188
+ require_once $dir . '/i18n.php';
189
+ }
190
+
191
+ if ( isset( $fs_text[ $key ] ) ) {
192
+ return $fs_text[ $key ];
193
+ }
194
+
195
+ if ( isset( $fs_module_info_text[ $key ] ) ) {
196
+ return $fs_module_info_text[ $key ];
197
+ }
198
+
199
+ return $key;
200
  }
201
 
202
  /**
203
+ * Output a translated text by key.
204
  *
205
+ * @deprecated Use `fs_echo()` instead for consistency with `fs_text()`.
206
+ *
207
+ * @author Vova Feldman (@svovaf)
208
+ * @since 1.1.4
209
  *
210
  * @param string $key
211
  * @param string $slug
212
  */
213
  function _efs( $key, $slug = 'freemius' ) {
214
+ fs_echo( $key, $slug );
215
  }
216
+ }
217
 
218
+ if ( ! function_exists( 'fs_override_i18n' ) ) {
219
  /**
220
  * Override default i18n text phrases.
221
  *
298
 
299
  $plugin_file = null;
300
  for ( $i = 1, $bt = debug_backtrace(), $len = count( $bt ); $i < $len; $i ++ ) {
301
+ if ( empty( $bt[ $i ]['file'] ) ) {
302
+ continue;
303
+ }
304
+
305
  if ( in_array( fs_normalize_path( $bt[ $i ]['file'] ), $all_plugins_paths ) ) {
306
  $plugin_file = $bt[ $i ]['file'];
307
  break;
310
 
311
  if ( is_null( $plugin_file ) ) {
312
  // Throw an error to the developer in case of some edge case dev environment.
313
+ wp_die(
314
+ "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error.",
315
+ 'Error',
316
+ array( 'back_link' => true )
317
+ );
318
  }
319
 
320
  return $plugin_file;
freemius/includes/fs-plugin-info-dialog.php CHANGED
@@ -323,8 +323,8 @@
323
  $plan->has_trial()
324
  ) . '" target="_parent">' .
325
  ( ! $plan->has_trial() ?
326
- __fs( 'purchase', $api->slug ) :
327
- sprintf( __fs( 'start-free-x', $api->slug ), $this->get_trial_period( $plan ) )
328
  ) .
329
  '</a>';
330
 
@@ -346,23 +346,23 @@
346
  * plugin is wordpress.org compliant. Therefore, require a download
347
  * since installing external plugins is not allowed by the wp.org guidelines.
348
  */
349
- return ' <a class="button button-primary right" href="' . esc_url( $api->download_link ) . '" target="_blank">' . __fs( 'download-latest', $api->slug ) . '</a>';
350
  } else {
351
  if ( $status['url'] ) {
352
- return '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . __fs( 'install-now', $api->slug ) . '</a>';
353
  }
354
  }
355
  break;
356
  case 'update_available':
357
  if ( $status['url'] ) {
358
- return '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . __fs( 'install-update-now', $api->slug ) . '</a>';
359
  }
360
  break;
361
  case 'newer_installed':
362
- return '<a class="button button-primary right disabled">' . sprintf( __fs( 'newer-installed', $api->slug ), $status['version'] ) . '</a>';
363
  break;
364
  case 'latest_installed':
365
- return '<a class="button button-primary right disabled">' . __fs( 'latest-installed', $api->slug ) . '</a>';
366
  break;
367
  }
368
 
@@ -475,13 +475,13 @@
475
  );
476
 
477
  $plugins_section_titles = array(
478
- 'description' => __fs( 'description', $api->slug ),
479
- 'installation' => __fs( 'installation', $api->slug ),
480
- 'faq' => __fs( 'faq', $api->slug ),
481
- 'screenshots' => __fs( 'screenshots', $api->slug ),
482
- 'changelog' => __fs( 'changelog', $api->slug ),
483
- 'reviews' => __fs( 'reviews', $api->slug ),
484
- 'other_notes' => __fs( 'other_notes', $api->slug ),
485
  );
486
 
487
  // Sanitize HTML
@@ -496,7 +496,7 @@
496
  }
497
 
498
  // Add after $api->slug is ready.
499
- $plugins_section_titles['features'] = __fs( 'features-and-pricing', $api->slug );
500
 
501
  $_tab = esc_attr( $tab );
502
 
@@ -506,7 +506,7 @@
506
  $section = array_shift( $section_titles );
507
  }
508
 
509
- iframe_header( __fs( 'plugin-install', $api->slug ) );
510
 
511
  $_with_banner = '';
512
 
@@ -574,7 +574,7 @@
574
  <div class="fs-plan<?php if ( ! $is_multi_cycle ) {
575
  echo ' fs-single-cycle';
576
  } ?>" data-plan-id="<?php echo $plan->id ?>">
577
- <h3 data-plan="<?php echo $plan->id ?>"><?php printf( __fs( 'x-plan', $api->slug ), $plan->title ) ?></h3>
578
  <?php $has_annual = $first_pricing->has_annual() ?>
579
  <?php $has_monthly = $first_pricing->has_monthly() ?>
580
  <div class="nav-tab-wrapper">
@@ -599,9 +599,9 @@
599
  <a class="nav-tab" data-billing-cycle="<?php echo $cycle ?>"
600
  data-pricing="<?php echo esc_attr( json_encode( $prices ) ) ?>">
601
  <?php if ( $is_featured ) : ?>
602
- <label>&#9733; <?php _efs( 'best', $api->slug ) ?> &#9733;</label>
603
  <?php endif ?>
604
- <?php _efs( $cycle, $api->slug ) ?>
605
  </a>
606
  <?php endif ?>
607
  <?php $i ++; endforeach ?>
@@ -612,21 +612,21 @@
612
  _formatBillingFrequency = function (cycle) {
613
  switch (cycle) {
614
  case 'monthly':
615
- return '<?php printf(__fs('billed-x', $api->slug), __fs('monthly', $api->slug)) ?>';
616
  case 'annual':
617
- return '<?php printf(__fs('billed-x', $api->slug), __fs('annually', $api->slug)) ?>';
618
  case 'lifetime':
619
- return '<?php printf(__fs('billed-x', $api->slug), __fs('once', $api->slug)) ?>';
620
  }
621
  },
622
  _formatLicensesTitle = function (pricing) {
623
  switch (pricing.licenses) {
624
  case 1:
625
- return '<?php _efs( 'license-single-site', $api->slug ) ?>';
626
  case null:
627
- return '<?php _efs( 'license-unlimited', $api->slug ) ?>';
628
  default:
629
- return '<?php _efs( 'license-x-sites', $api->slug ) ?>'.replace('%s', pricing.licenses);
630
  }
631
  },
632
  _formatPrice = function (pricing, cycle, multipleLicenses) {
@@ -636,14 +636,14 @@
636
  var priceCycle;
637
  switch (cycle) {
638
  case 'monthly':
639
- priceCycle = ' / <?php _efs('mo', $api->slug) ?>';
640
  break;
641
  case 'lifetime':
642
  priceCycle = '';
643
  break;
644
  case 'annual':
645
  default:
646
- priceCycle = ' / <?php _efs('year', $api->slug) ?>';
647
  break;
648
  }
649
 
@@ -695,7 +695,7 @@
695
 
696
  // Render licenses prices.
697
  if (1 == pricing.length) {
698
- html = '<li><label><?php _efs( 'price', $api->slug ) ?>: ' + _formatPrice(pricing[0], billingCycle, false) + '</label></li>';
699
  } else {
700
  for (var i = 0; i < pricing.length; i++) {
701
  html += '<li><label><input name="pricing-<?php echo $plan->id ?>" type="radio" value="' + pricing[i].id + '">' + _formatPrice(pricing[i], billingCycle) + '</label></li>';
@@ -741,7 +741,7 @@
741
  <?php $annual_discount = ( $has_annual && $has_monthly ) ? $plan->pricing[0]->annual_discount_percentage() : 0 ?>
742
  <?php if ( $annual_discount > 0 ) : ?>
743
  <span
744
- class="fs-annual-discount"><?php printf( __fs( 'save-x', $api->slug ), $annual_discount . '%' ) ?></span>
745
  <?php endif ?>
746
  <ul class="fs-licenses">
747
  </ul>
@@ -751,10 +751,10 @@
751
  <?php $trial_period = $this->get_trial_period( $plan ) ?>
752
  <ul class="fs-trial-terms">
753
  <li>
754
- <i class="dashicons dashicons-yes"></i><?php printf( __fs( 'no-commitment-x', $api->slug ), $trial_period ) ?>
755
  </li>
756
  <li>
757
- <i class="dashicons dashicons-yes"></i><?php printf( __fs( 'after-x-pay-as-little-y', $api->slug ), $trial_period, '<var class="fs-price">' . $this->get_price_tag( $plan, $plan->pricing[0] ) . '</var>' ) ?>
758
  </li>
759
  </ul>
760
  <?php endif ?>
@@ -765,45 +765,45 @@
765
  <?php endif ?>
766
  <?php endif ?>
767
  <div>
768
- <h3><?php _efs( 'details', $api->slug ) ?></h3>
769
  <ul>
770
  <?php if ( ! empty( $api->version ) ) { ?>
771
- <li><strong><?php _efs( 'version', $api->slug ); ?>:</strong> <?php echo $api->version; ?></li>
772
  <?php
773
  }
774
  if ( ! empty( $api->author ) ) {
775
  ?>
776
  <li>
777
- <strong><?php _efs( 'author:', $api->slug ); ?></strong> <?php echo links_add_target( $api->author, '_blank' ); ?>
778
  </li>
779
  <?php
780
  }
781
  if ( ! empty( $api->last_updated ) ) {
782
  ?>
783
- <li><strong><?php _efs( 'last-updated:', $api->slug ); ?></strong> <span
784
  title="<?php echo $api->last_updated; ?>">
785
- <?php printf( __fs( 'x-ago', $api->slug ), human_time_diff( strtotime( $api->last_updated ) ) ); ?>
786
  </span></li>
787
  <?php
788
  }
789
  if ( ! empty( $api->requires ) ) {
790
  ?>
791
  <li>
792
- <strong><?php _efs( 'requires-wordpress-version:', $api->slug ); ?></strong> <?php printf( __fs( 'x-or-higher', $api->slug ), $api->requires ); ?>
793
  </li>
794
  <?php
795
  }
796
  if ( ! empty( $api->tested ) ) {
797
  ?>
798
- <li><strong><?php _efs( 'compatible-up-to:', $api->slug ); ?></strong> <?php echo $api->tested; ?>
799
  </li>
800
  <?php
801
  }
802
  if ( ! empty( $api->downloaded ) ) {
803
  ?>
804
  <li>
805
- <strong><?php _efs( 'downloaded:', $api->slug ); ?></strong> <?php printf(
806
- __fs( ( 1 == $api->downloaded ) ? 'x-time' : 'x-times', $api->slug ),
807
  number_format_i18n( $api->downloaded )
808
  ); ?>
809
  </li>
@@ -812,36 +812,36 @@
812
  if ( ! empty( $api->slug ) && empty( $api->external ) ) {
813
  ?>
814
  <li><a target="_blank"
815
- href="https://wordpress.org/plugins/<?php echo $api->slug; ?>/"><?php _efs( 'wp-org-plugin-page', $api->slug ); ?> &#187;</a>
816
  </li>
817
  <?php
818
  }
819
  if ( ! empty( $api->homepage ) ) {
820
  ?>
821
  <li><a target="_blank"
822
- href="<?php echo esc_url( $api->homepage ); ?>"><?php _efs( 'plugin-homepage', $api->slug ); ?> &#187;</a>
823
  </li>
824
  <?php
825
  }
826
  if ( ! empty( $api->donate_link ) && empty( $api->contributors ) ) {
827
  ?>
828
  <li><a target="_blank"
829
- href="<?php echo esc_url( $api->donate_link ); ?>"><?php _efs( 'donate-to-plugin', $api->slug ); ?> &#187;</a>
830
  </li>
831
  <?php } ?>
832
  </ul>
833
  </div>
834
  <?php if ( ! empty( $api->rating ) ) { ?>
835
- <h3><?php _efs( 'average-rating', $api->slug ); ?></h3>
836
  <?php wp_star_rating( array(
837
  'rating' => $api->rating,
838
  'type' => 'percent',
839
  'number' => $api->num_ratings
840
  ) ); ?>
841
  <small>(<?php printf(
842
- __fs( 'based-on-x', $api->slug ),
843
  sprintf(
844
- __fs( ( 1 == $api->num_ratings ) ? 'x-rating' : 'x-ratings', $api->slug ),
845
  number_format_i18n( $api->num_ratings )
846
  ) ); ?>)</small>
847
  <?php
@@ -852,7 +852,7 @@
852
  // Avoid div-by-zero.
853
  $_rating = $api->num_ratings ? ( $ratecount / $api->num_ratings ) : 0;
854
  $stars_label = sprintf(
855
- __fs( ( 1 == $key ) ? 'x-star' : 'x-stars', $api->slug ),
856
  number_format_i18n( $key )
857
  );
858
  ?>
@@ -860,7 +860,7 @@
860
  <span class="counter-label"><a
861
  href="https://wordpress.org/support/view/plugin-reviews/<?php echo $api->slug; ?>?filter=<?php echo $key; ?>"
862
  target="_blank"
863
- title="<?php echo esc_attr( sprintf( __fs('click-to-reviews', $api->slug), $stars_label) ) ?>"><?php echo $stars_label ?></a></span>
864
  <span class="counter-back">
865
  <span class="counter-bar" style="width: <?php echo 92 * $_rating; ?>px;"></span>
866
  </span>
@@ -871,7 +871,7 @@
871
  }
872
  if ( ! empty( $api->contributors ) ) {
873
  ?>
874
- <h3><?php _efs( 'contributors', $api->slug ); ?></h3>
875
  <ul class="contributors">
876
  <?php
877
  foreach ( (array) $api->contributors as $contrib_username => $contrib_profile ) {
@@ -892,16 +892,16 @@
892
  </ul>
893
  <?php if ( ! empty( $api->donate_link ) ) { ?>
894
  <a target="_blank"
895
- href="<?php echo esc_url( $api->donate_link ); ?>"><?php _efs( 'donate-to-plugin', $api->slug ) ?> &#187;</a>
896
  <?php } ?>
897
  <?php } ?>
898
  </div>
899
  <div id="section-holder" class="wrap">
900
  <?php
901
  if ( ! empty( $api->tested ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->tested ) ), $api->tested, '>' ) ) {
902
- echo '<div class="notice notice-warning"><p>' . '<strong>' . __fs( 'warning:', $api->slug ) . '</strong> ' . __fs( 'not-tested-warning', $api->slug ) . '</p></div>';
903
  } else if ( ! empty( $api->requires ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->requires ) ), $api->requires, '<' ) ) {
904
- echo '<div class="notice notice-warning"><p>' . '<strong>' . __fs( 'warning:', $api->slug ) . '</strong> ' . __fs( 'not-compatible-warning', $api->slug ) . '</p></div>';
905
  }
906
 
907
  foreach ( (array) $api->sections as $section_name => $content ) {
@@ -919,7 +919,7 @@
919
  $missing_notice = array(
920
  'type' => 'error',
921
  'id' => md5( microtime() ),
922
- 'message' => __fs( ( $api->is_paid ? 'paid-addon-not-deployed' : 'free-addon-not-deployed' ), $api->slug ),
923
  );
924
  fs_require_template( 'admin-notice.php', $missing_notice );
925
  }
323
  $plan->has_trial()
324
  ) . '" target="_parent">' .
325
  ( ! $plan->has_trial() ?
326
+ fs_text( 'purchase', $api->slug ) :
327
+ sprintf( fs_text( 'start-free-x', $api->slug ), $this->get_trial_period( $plan ) )
328
  ) .
329
  '</a>';
330
 
346
  * plugin is wordpress.org compliant. Therefore, require a download
347
  * since installing external plugins is not allowed by the wp.org guidelines.
348
  */
349
+ return ' <a class="button button-primary right" href="' . esc_url( $api->download_link ) . '" target="_blank">' . fs_text( 'download-latest', $api->slug ) . '</a>';
350
  } else {
351
  if ( $status['url'] ) {
352
+ return '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . fs_text( 'install-now', $api->slug ) . '</a>';
353
  }
354
  }
355
  break;
356
  case 'update_available':
357
  if ( $status['url'] ) {
358
+ return '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . fs_text( 'install-update-now', $api->slug ) . '</a>';
359
  }
360
  break;
361
  case 'newer_installed':
362
+ return '<a class="button button-primary right disabled">' . sprintf( fs_text( 'newer-installed', $api->slug ), $status['version'] ) . '</a>';
363
  break;
364
  case 'latest_installed':
365
+ return '<a class="button button-primary right disabled">' . fs_text( 'latest-installed', $api->slug ) . '</a>';
366
  break;
367
  }
368
 
475
  );
476
 
477
  $plugins_section_titles = array(
478
+ 'description' => fs_text( 'description', $api->slug ),
479
+ 'installation' => fs_text( 'installation', $api->slug ),
480
+ 'faq' => fs_text( 'faq', $api->slug ),
481
+ 'screenshots' => fs_text( 'screenshots', $api->slug ),
482
+ 'changelog' => fs_text( 'changelog', $api->slug ),
483
+ 'reviews' => fs_text( 'reviews', $api->slug ),
484
+ 'other_notes' => fs_text( 'other_notes', $api->slug ),
485
  );
486
 
487
  // Sanitize HTML
496
  }
497
 
498
  // Add after $api->slug is ready.
499
+ $plugins_section_titles['features'] = fs_text( 'features-and-pricing', $api->slug );
500
 
501
  $_tab = esc_attr( $tab );
502
 
506
  $section = array_shift( $section_titles );
507
  }
508
 
509
+ iframe_header( fs_text( 'plugin-install', $api->slug ) );
510
 
511
  $_with_banner = '';
512
 
574
  <div class="fs-plan<?php if ( ! $is_multi_cycle ) {
575
  echo ' fs-single-cycle';
576
  } ?>" data-plan-id="<?php echo $plan->id ?>">
577
+ <h3 data-plan="<?php echo $plan->id ?>"><?php printf( fs_text( 'x-plan', $api->slug ), $plan->title ) ?></h3>
578
  <?php $has_annual = $first_pricing->has_annual() ?>
579
  <?php $has_monthly = $first_pricing->has_monthly() ?>
580
  <div class="nav-tab-wrapper">
599
  <a class="nav-tab" data-billing-cycle="<?php echo $cycle ?>"
600
  data-pricing="<?php echo esc_attr( json_encode( $prices ) ) ?>">
601
  <?php if ( $is_featured ) : ?>
602
+ <label>&#9733; <?php fs_echo( 'best', $api->slug ) ?> &#9733;</label>
603
  <?php endif ?>
604
+ <?php fs_echo( $cycle, $api->slug ) ?>
605
  </a>
606
  <?php endif ?>
607
  <?php $i ++; endforeach ?>
612
  _formatBillingFrequency = function (cycle) {
613
  switch (cycle) {
614
  case 'monthly':
615
+ return '<?php printf(fs_text('billed-x', $api->slug), fs_text('monthly', $api->slug)) ?>';
616
  case 'annual':
617
+ return '<?php printf(fs_text('billed-x', $api->slug), fs_text('annually', $api->slug)) ?>';
618
  case 'lifetime':
619
+ return '<?php printf(fs_text('billed-x', $api->slug), fs_text('once', $api->slug)) ?>';
620
  }
621
  },
622
  _formatLicensesTitle = function (pricing) {
623
  switch (pricing.licenses) {
624
  case 1:
625
+ return '<?php fs_echo( 'license-single-site', $api->slug ) ?>';
626
  case null:
627
+ return '<?php fs_echo( 'license-unlimited', $api->slug ) ?>';
628
  default:
629
+ return '<?php fs_echo( 'license-x-sites', $api->slug ) ?>'.replace('%s', pricing.licenses);
630
  }
631
  },
632
  _formatPrice = function (pricing, cycle, multipleLicenses) {
636
  var priceCycle;
637
  switch (cycle) {
638
  case 'monthly':
639
+ priceCycle = ' / <?php fs_echo('mo', $api->slug) ?>';
640
  break;
641
  case 'lifetime':
642
  priceCycle = '';
643
  break;
644
  case 'annual':
645
  default:
646
+ priceCycle = ' / <?php fs_echo('year', $api->slug) ?>';
647
  break;
648
  }
649
 
695
 
696
  // Render licenses prices.
697
  if (1 == pricing.length) {
698
+ html = '<li><label><?php fs_echo( 'price', $api->slug ) ?>: ' + _formatPrice(pricing[0], billingCycle, false) + '</label></li>';
699
  } else {
700
  for (var i = 0; i < pricing.length; i++) {
701
  html += '<li><label><input name="pricing-<?php echo $plan->id ?>" type="radio" value="' + pricing[i].id + '">' + _formatPrice(pricing[i], billingCycle) + '</label></li>';
741
  <?php $annual_discount = ( $has_annual && $has_monthly ) ? $plan->pricing[0]->annual_discount_percentage() : 0 ?>
742
  <?php if ( $annual_discount > 0 ) : ?>
743
  <span
744
+ class="fs-annual-discount"><?php printf( fs_text( 'save-x', $api->slug ), $annual_discount . '%' ) ?></span>
745
  <?php endif ?>
746
  <ul class="fs-licenses">
747
  </ul>
751
  <?php $trial_period = $this->get_trial_period( $plan ) ?>
752
  <ul class="fs-trial-terms">
753
  <li>
754
+ <i class="dashicons dashicons-yes"></i><?php printf( fs_text( 'no-commitment-x', $api->slug ), $trial_period ) ?>
755
  </li>
756
  <li>
757
+ <i class="dashicons dashicons-yes"></i><?php printf( fs_text( 'after-x-pay-as-little-y', $api->slug ), $trial_period, '<var class="fs-price">' . $this->get_price_tag( $plan, $plan->pricing[0] ) . '</var>' ) ?>
758
  </li>
759
  </ul>
760
  <?php endif ?>
765
  <?php endif ?>
766
  <?php endif ?>
767
  <div>
768
+ <h3><?php fs_echo( 'details', $api->slug ) ?></h3>
769
  <ul>
770
  <?php if ( ! empty( $api->version ) ) { ?>
771
+ <li><strong><?php fs_echo( 'version', $api->slug ); ?>:</strong> <?php echo $api->version; ?></li>
772
  <?php
773
  }
774
  if ( ! empty( $api->author ) ) {
775
  ?>
776
  <li>
777
+ <strong><?php fs_echo( 'author:', $api->slug ); ?></strong> <?php echo links_add_target( $api->author, '_blank' ); ?>
778
  </li>
779
  <?php
780
  }
781
  if ( ! empty( $api->last_updated ) ) {
782
  ?>
783
+ <li><strong><?php fs_echo( 'last-updated:', $api->slug ); ?></strong> <span
784
  title="<?php echo $api->last_updated; ?>">
785
+ <?php printf( fs_text( 'x-ago', $api->slug ), human_time_diff( strtotime( $api->last_updated ) ) ); ?>
786
  </span></li>
787
  <?php
788
  }
789
  if ( ! empty( $api->requires ) ) {
790
  ?>
791
  <li>
792
+ <strong><?php fs_echo( 'requires-wordpress-version:', $api->slug ); ?></strong> <?php printf( fs_text( 'x-or-higher', $api->slug ), $api->requires ); ?>
793
  </li>
794
  <?php
795
  }
796
  if ( ! empty( $api->tested ) ) {
797
  ?>
798
+ <li><strong><?php fs_echo( 'compatible-up-to:', $api->slug ); ?></strong> <?php echo $api->tested; ?>
799
  </li>
800
  <?php
801
  }
802
  if ( ! empty( $api->downloaded ) ) {
803
  ?>
804
  <li>
805
+ <strong><?php fs_echo( 'downloaded:', $api->slug ); ?></strong> <?php printf(
806
+ fs_text( ( 1 == $api->downloaded ) ? 'x-time' : 'x-times', $api->slug ),
807
  number_format_i18n( $api->downloaded )
808
  ); ?>
809
  </li>
812
  if ( ! empty( $api->slug ) && empty( $api->external ) ) {
813
  ?>
814
  <li><a target="_blank"
815
+ href="https://wordpress.org/plugins/<?php echo $api->slug; ?>/"><?php fs_echo( 'wp-org-plugin-page', $api->slug ); ?> &#187;</a>
816
  </li>
817
  <?php
818
  }
819
  if ( ! empty( $api->homepage ) ) {
820
  ?>
821
  <li><a target="_blank"
822
+ href="<?php echo esc_url( $api->homepage ); ?>"><?php fs_echo( 'plugin-homepage', $api->slug ); ?> &#187;</a>
823
  </li>
824
  <?php
825
  }
826
  if ( ! empty( $api->donate_link ) && empty( $api->contributors ) ) {
827
  ?>
828
  <li><a target="_blank"
829
+ href="<?php echo esc_url( $api->donate_link ); ?>"><?php fs_echo( 'donate-to-plugin', $api->slug ); ?> &#187;</a>
830
  </li>
831
  <?php } ?>
832
  </ul>
833
  </div>
834
  <?php if ( ! empty( $api->rating ) ) { ?>
835
+ <h3><?php fs_echo( 'average-rating', $api->slug ); ?></h3>
836
  <?php wp_star_rating( array(
837
  'rating' => $api->rating,
838
  'type' => 'percent',
839
  'number' => $api->num_ratings
840
  ) ); ?>
841
  <small>(<?php printf(
842
+ fs_text( 'based-on-x', $api->slug ),
843
  sprintf(
844
+ fs_text( ( 1 == $api->num_ratings ) ? 'x-rating' : 'x-ratings', $api->slug ),
845
  number_format_i18n( $api->num_ratings )
846
  ) ); ?>)</small>
847
  <?php
852
  // Avoid div-by-zero.
853
  $_rating = $api->num_ratings ? ( $ratecount / $api->num_ratings ) : 0;
854
  $stars_label = sprintf(
855
+ fs_text( ( 1 == $key ) ? 'x-star' : 'x-stars', $api->slug ),
856
  number_format_i18n( $key )
857
  );
858
  ?>
860
  <span class="counter-label"><a
861
  href="https://wordpress.org/support/view/plugin-reviews/<?php echo $api->slug; ?>?filter=<?php echo $key; ?>"
862
  target="_blank"
863
+ title="<?php echo esc_attr( sprintf( fs_text('click-to-reviews', $api->slug), $stars_label) ) ?>"><?php echo $stars_label ?></a></span>
864
  <span class="counter-back">
865
  <span class="counter-bar" style="width: <?php echo 92 * $_rating; ?>px;"></span>
866
  </span>
871
  }
872
  if ( ! empty( $api->contributors ) ) {
873
  ?>
874
+ <h3><?php fs_echo( 'contributors', $api->slug ); ?></h3>
875
  <ul class="contributors">
876
  <?php
877
  foreach ( (array) $api->contributors as $contrib_username => $contrib_profile ) {
892
  </ul>
893
  <?php if ( ! empty( $api->donate_link ) ) { ?>
894
  <a target="_blank"
895
+ href="<?php echo esc_url( $api->donate_link ); ?>"><?php fs_echo( 'donate-to-plugin', $api->slug ) ?> &#187;</a>
896
  <?php } ?>
897
  <?php } ?>
898
  </div>
899
  <div id="section-holder" class="wrap">
900
  <?php
901
  if ( ! empty( $api->tested ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->tested ) ), $api->tested, '>' ) ) {
902
+ echo '<div class="notice notice-warning"><p>' . '<strong>' . fs_text( 'warning:', $api->slug ) . '</strong> ' . fs_text( 'not-tested-warning', $api->slug ) . '</p></div>';
903
  } else if ( ! empty( $api->requires ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->requires ) ), $api->requires, '<' ) ) {
904
+ echo '<div class="notice notice-warning"><p>' . '<strong>' . fs_text( 'warning:', $api->slug ) . '</strong> ' . fs_text( 'not-compatible-warning', $api->slug ) . '</p></div>';
905
  }
906
 
907
  foreach ( (array) $api->sections as $section_name => $content ) {
919
  $missing_notice = array(
920
  'type' => 'error',
921
  'id' => md5( microtime() ),
922
+ 'message' => fs_text( ( $api->is_paid ? 'paid-addon-not-deployed' : 'free-addon-not-deployed' ), $api->slug ),
923
  );
924
  fs_require_template( 'admin-notice.php', $missing_notice );
925
  }
freemius/includes/i18n.php CHANGED
@@ -1,518 +1,538 @@
1
- <?php
2
- /**
3
- * @package Freemius
4
- * @copyright Copyright (c) 2015, Freemius, Inc.
5
- * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
6
- * @since 1.1.4
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- require_once dirname( __FILE__ ) . '/l10n.php';
14
-
15
- /**
16
- * All strings can now be overridden.
17
- *
18
- * For example, if we want to override:
19
- * 'you-are-step-away' => 'You are just one step away - %s',
20
- *
21
- * We can use the filter:
22
- * fs_override_i18n( array(
23
- * 'opt-in-connect' => __( "Yes - I'm in!", '{your-text_domain}' ),
24
- * 'skip' => __( 'Not today', '{your-text_domain}' ),
25
- * ), '{plugin_slug}' );
26
- *
27
- * Or with the Freemius instance:
28
- *
29
- * my_freemius->override_i18n( array(
30
- * 'opt-in-connect' => __( "Yes - I'm in!", '{your-text_domain}' ),
31
- * 'skip' => __( 'Not today', '{your-text_domain}' ),
32
- * );
33
- */
34
- global $fs_text;
35
-
36
- $fs_text = array(
37
- 'account' => _fs_text( 'Account' ),
38
- 'addon' => _fs_text( 'Add On' ),
39
- 'contact-us' => _fs_text( 'Contact Us' ),
40
- 'contact-support' => _fs_text( 'Contact Support' ),
41
- 'change-ownership' => _fs_text( 'Change Ownership' ),
42
- 'support' => _fs_text( 'Support' ),
43
- 'support-forum' => _fs_text( 'Support Forum' ),
44
- 'add-ons' => _fs_text( 'Add Ons' ),
45
- 'upgrade' => _fs_x( 'Upgrade', 'verb' ),
46
- 'awesome' => _fs_text( 'Awesome' ),
47
- 'pricing' => _fs_x( 'Pricing', 'noun' ),
48
- 'price' => _fs_x( 'Price', 'noun' ),
49
- 'unlimited-updates' => _fs_text( 'Unlimited Updates' ),
50
- 'downgrade' => _fs_x( 'Downgrade', 'verb' ),
51
- 'cancel-trial' => _fs_text( 'Cancel Trial' ),
52
- 'free-trial' => _fs_text( 'Free Trial' ),
53
- 'start-free-x' => _fs_text( 'Start my free %s' ),
54
- 'no-commitment-x' => _fs_text( 'No commitment for %s - cancel anytime' ),
55
- 'after-x-pay-as-little-y' => _fs_text( 'After your free %s, pay as little as %s' ),
56
- 'details' => _fs_text( 'Details' ),
57
- 'account-details' => _fs_text( 'Account Details' ),
58
- 'delete' => _fs_x( 'Delete', 'verb' ),
59
- 'show' => _fs_x( 'Show', 'verb' ),
60
- 'hide' => _fs_x( 'Hide', 'verb' ),
61
- 'edit' => _fs_x( 'Edit', 'verb' ),
62
- 'update' => _fs_x( 'Update', 'verb' ),
63
- 'date' => _fs_text( 'Date' ),
64
- 'amount' => _fs_text( 'Amount' ),
65
- 'invoice' => _fs_text( 'Invoice' ),
66
- 'billing' => _fs_text( 'Billing' ),
67
- 'payments' => _fs_text( 'Payments' ),
68
- 'delete-account' => _fs_text( 'Delete Account' ),
69
- 'dismiss' => _fs_x( 'Dismiss', 'as close a window' ),
70
- 'plan' => _fs_x( 'Plan', 'as product pricing plan' ),
71
- 'change-plan' => _fs_text( 'Change Plan' ),
72
- 'download-x-version' => _fs_x( 'Download %s Version', 'as download professional version' ),
73
- 'download-x-version-now' => _fs_x( 'Download %s version now', 'as download professional version now' ),
74
- 'download-latest' => _fs_x( 'Download Latest', 'as download latest version' ),
75
- 'you-have-x-license' => _fs_x( 'You have a %s license.', 'E.g. you have a professional license.' ),
76
- 'new' => _fs_text( 'New' ),
77
- 'free' => _fs_text( 'Free' ),
78
- 'trial' => _fs_x( 'Trial', 'as trial plan' ),
79
- 'start-trial' => _fs_x( 'Start Trial', 'as starting a trial plan' ),
80
- 'purchase' => _fs_x( 'Purchase', 'verb' ),
81
- 'purchase-license' => _fs_text( 'Purchase License' ),
82
- 'buy' => _fs_x( 'Buy', 'verb' ),
83
- 'buy-license' => _fs_text( 'Buy License' ),
84
- 'license-single-site' => _fs_text( 'Single Site License' ),
85
- 'license-unlimited' => _fs_text( 'Unlimited Licenses' ),
86
- 'license-x-sites' => _fs_text( 'Up to %s Sites' ),
87
- 'renew-license-now' => _fs_text( '%sRenew your license now%s to access version %s features and support.' ),
88
- 'ask-for-upgrade-email-address' => _fs_text( "Enter the email address you've used for the upgrade below and we will resend you the license key." ),
89
- 'x-plan' => _fs_x( '%s Plan', 'e.g. Professional Plan' ),
90
- 'you-are-step-away' => _fs_text( 'You are just one step away - %s' ),
91
- 'activate-x-now' => _fs_x( 'Complete "%s" Activation Now',
92
- '%s - plugin name. As complete "Jetpack" activation now' ),
93
- 'few-plugin-tweaks' => _fs_text( 'We made a few tweaks to the plugin, %s' ),
94
- 'optin-x-now' => _fs_text( 'Opt-in to make "%s" Better!' ),
95
- 'error' => _fs_text( 'Error' ),
96
- 'failed-finding-main-path' => _fs_text( 'Freemius SDK couldn\'t find the plugin\'s main file. Please contact sdk@freemius.com with the current error.' ),
97
- #region Account
98
-
99
- 'expiration' => _fs_x( 'Expiration', 'as expiration date' ),
100
- 'license' => _fs_x( 'License', 'as software license' ),
101
- 'not-verified' => _fs_text( 'not verified' ),
102
- 'verify-email' => _fs_text( 'Verify Email' ),
103
- 'expires-in' => _fs_x( 'Expires in %s', 'e.g. expires in 2 months' ),
104
- 'renews-in' => _fs_x( 'Auto renews in %s', 'e.g. auto renews in 2 months' ),
105
- 'no-expiration' => _fs_text( 'No expiration' ),
106
- 'expired' => _fs_text( 'Expired' ),
107
- 'cancelled' => _fs_text( 'Cancelled' ),
108
- 'in-x' => _fs_x( 'In %s', 'e.g. In 2 hours' ),
109
- 'x-ago' => _fs_x( '%s ago', 'e.g. 2 min ago' ),
110
- /* translators: %s: Version number (e.g. 4.6 or higher) */
111
- 'x-or-higher' => _fs_text( '%s or higher' ),
112
- 'version' => _fs_x( 'Version', 'as plugin version' ),
113
- 'name' => _fs_text( 'Name' ),
114
- 'email' => _fs_text( 'Email' ),
115
- 'email-address' => _fs_text( 'Email address' ),
116
- 'verified' => _fs_text( 'Verified' ),
117
- 'module' => _fs_text( 'Module' ),
118
- 'module-type' => _fs_text( 'Module Type' ),
119
- 'plugin' => _fs_text( 'Plugin' ),
120
- 'plugins' => _fs_text( 'Plugins' ),
121
- 'theme' => _fs_text( 'Theme' ),
122
- 'themes' => _fs_text( 'Themes' ),
123
- 'path' => _fs_x( 'Path', 'as file/folder path' ),
124
- 'title' => _fs_text( 'Title' ),
125
- 'free-version' => _fs_text( 'Free version' ),
126
- 'premium-version' => _fs_text( 'Premium version' ),
127
- 'slug' => _fs_x( 'Slug', 'as WP plugin slug' ),
128
- 'id' => _fs_text( 'ID' ),
129
- 'users' => _fs_text( 'Users' ),
130
- 'plugin-installs' => _fs_text( 'Plugin Installs' ),
131
- 'module-installs' => _fs_text( '%s Installs' ),
132
- 'sites' => _fs_x( 'Sites', 'like websites' ),
133
- 'user-id' => _fs_text( 'User ID' ),
134
- 'site-id' => _fs_text( 'Site ID' ),
135
- 'public-key' => _fs_text( 'Public Key' ),
136
- 'secret-key' => _fs_text( 'Secret Key' ),
137
- 'no-secret' => _fs_x( 'No Secret', 'as secret encryption key missing' ),
138
- 'no-id' => _fs_text( 'No ID' ),
139
- 'sync-license' => _fs_x( 'Sync License', 'as synchronize license' ),
140
- 'sync' => _fs_x( 'Sync', 'as synchronize' ),
141
- 'activate-license' => _fs_text( 'Activate License' ),
142
- 'activate-free-version' => _fs_text( 'Activate Free Version' ),
143
- 'activate-license-message' => _fs_text( 'Please enter the license key that you received in the email right after the purchase:' ),
144
- 'activating-license' => _fs_text( 'Activating license...' ),
145
- 'change-license' => _fs_text( 'Change License' ),
146
- 'update-license' => _fs_text( 'Update License' ),
147
- 'deactivate-license' => _fs_text( 'Deactivate License' ),
148
- 'activate' => _fs_text( 'Activate' ),
149
- 'deactivate' => _fs_text( 'Deactivate' ),
150
- 'skip-deactivate' => _fs_text( 'Skip & Deactivate' ),
151
- 'skip-and-x' => _fs_text( 'Skip & %s' ),
152
- 'no-deactivate' => _fs_text( 'No - just deactivate' ),
153
- 'yes-do-your-thing' => _fs_text( 'Yes - do your thing' ),
154
- 'active' => _fs_x( 'Active', 'active mode' ),
155
- 'is-active' => _fs_x( 'Is Active', 'is active mode?' ),
156
- 'install-now' => _fs_text( 'Install Now' ),
157
- 'install-update-now' => _fs_text( 'Install Update Now' ),
158
- 'more-information-about-x' => _fs_text( 'More information about %s' ),
159
- 'localhost' => _fs_text( 'Localhost' ),
160
- 'activate-x-plan' => _fs_x( 'Activate %s Plan', 'as activate Professional plan' ),
161
- 'x-left' => _fs_x( '%s left', 'as 5 licenses left' ),
162
- 'last-license' => _fs_text( 'Last license' ),
163
- 'what-is-your-x' => _fs_text( 'What is your %s?' ),
164
- 'activate-this-addon' => _fs_text( 'Activate this add-on' ),
165
- 'deactivate-license-confirm' => _fs_text( '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?' ),
166
- 'delete-account-x-confirm' => _fs_text( '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?' ),
167
- 'delete-account-confirm' => _fs_text( '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?' ),
168
- 'downgrade-x-confirm' => _fs_text( 'Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s.' ),
169
- 'cancel-trial-confirm' => _fs_text( 'Cancelling the trial will immediately block access to all premium features. Are you sure?' ),
170
- 'after-downgrade-non-blocking' => _fs_text( 'You can still enjoy all %s features but you will not have access to plugin updates and support.' ),
171
- 'after-downgrade-blocking' => _fs_text( 'Once your license expires you can still use the Free version but you will NOT have access to the %s features.' ),
172
- 'proceed-confirmation' => _fs_text( 'Are you sure you want to proceed?' ),
173
- #endregion Account
174
-
175
- 'add-ons-for-x' => _fs_text( 'Add Ons for %s' ),
176
- 'add-ons-missing' => _fs_text( 'We could\'nt load the add-ons list. It\'s probably an issue on our side, please try to come back in few minutes.' ),
177
- #region Plugin Deactivation
178
- 'anonymous-feedback' => _fs_text( 'Anonymous feedback' ),
179
- 'quick-feedback' => _fs_text( 'Quick feedback' ),
180
- 'deactivation-share-reason' => _fs_text( 'If you have a moment, please let us know why you are deactivating' ),
181
- 'deactivation-modal-button-confirm' => _fs_text( 'Yes - Deactivate' ),
182
- 'deactivation-modal-button-submit' => _fs_text( 'Submit & Deactivate' ),
183
- 'cancel' => _fs_text( 'Cancel' ),
184
- 'reason-no-longer-needed' => _fs_text( 'I no longer need the plugin' ),
185
- 'reason-found-a-better-plugin' => _fs_text( 'I found a better plugin' ),
186
- 'reason-needed-for-a-short-period' => _fs_text( 'I only needed the plugin for a short period' ),
187
- 'reason-broke-my-site' => _fs_text( 'The plugin broke my site' ),
188
- 'reason-suddenly-stopped-working' => _fs_text( 'The plugin suddenly stopped working' ),
189
- 'reason-cant-pay-anymore' => _fs_text( "I can't pay for it anymore" ),
190
- 'reason-temporary-deactivation' => _fs_text( "It's a temporary deactivation. I'm just debugging an issue." ),
191
- 'reason-other' => _fs_x( 'Other',
192
- 'the text of the "other" reason for deactivating the plugin that is shown in the modal box.' ),
193
- 'ask-for-reason-message' => _fs_text( 'Kindly tell us the reason so we can improve.' ),
194
- 'placeholder-plugin-name' => _fs_text( "What's the plugin's name?" ),
195
- 'placeholder-comfortable-price' => _fs_text( 'What price would you feel comfortable paying?' ),
196
- 'reason-couldnt-make-it-work' => _fs_text( "I couldn't understand how to make it work" ),
197
- 'reason-great-but-need-specific-feature' => _fs_text( "The plugin is great, but I need specific feature that you don't support" ),
198
- 'reason-not-working' => _fs_text( 'The plugin is not working' ),
199
- 'reason-not-what-i-was-looking-for' => _fs_text( "It's not what I was looking for" ),
200
- 'reason-didnt-work-as-expected' => _fs_text( "The plugin didn't work as expected" ),
201
- 'placeholder-feature' => _fs_text( 'What feature?' ),
202
- 'placeholder-share-what-didnt-work' => _fs_text( "Kindly share what didn't work so we can fix it for future users..." ),
203
- 'placeholder-what-youve-been-looking-for' => _fs_text( "What you've been looking for?" ),
204
- 'placeholder-what-did-you-expect' => _fs_text( "What did you expect?" ),
205
- 'reason-didnt-work' => _fs_text( "The plugin didn't work" ),
206
- 'reason-dont-like-to-share-my-information' => _fs_text( "I don't like to share my information with you" ),
207
- 'dont-have-to-share-any-data' => _fs_text( "You might have missed it, but you don't have to share any data and can just %s the opt-in." ),
208
- #endregion Plugin Deactivation
209
-
210
- #region Connect
211
- 'hey-x' => _fs_x( 'Hey %s,', 'greeting' ),
212
- 'thanks-x' => _fs_x( 'Thanks %s!', 'a greeting. E.g. Thanks John!' ),
213
- 'connect-message' => _fs_text( 'Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s.' ),
214
- 'connect-message_on-update' => _fs_text( '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.' ),
215
- 'pending-activation-message' => _fs_text( '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.' ),
216
- 'complete-the-install' => _fs_text( 'complete the install' ),
217
- 'start-the-trial' => _fs_text( 'start the trial' ),
218
- 'thanks-for-purchasing' => _fs_text( 'Thanks for purchasing %s! To get started, please enter your license key:' ),
219
- 'license-sync-disclaimer' => _fs_text( 'The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license.' ),
220
- 'what-permissions' => _fs_text( 'What permissions are being granted?' ),
221
- 'permissions-profile' => _fs_text( 'Your Profile Overview' ),
222
- 'permissions-profile_desc' => _fs_text( 'Name and email address' ),
223
- 'permissions-site' => _fs_text( 'Your Site Overview' ),
224
- 'permissions-site_desc' => _fs_text( 'Site URL, WP version, PHP info, plugins & themes' ),
225
- 'permissions-events' => _fs_text( 'Current Plugin Events' ),
226
- 'permissions-events_desc' => _fs_text( 'Activation, deactivation and uninstall' ),
227
- 'permissions-plugins_themes' => _fs_text( 'Plugins & Themes' ),
228
- 'permissions-plugins_themes_desc' => _fs_text( 'Titles, versions and state.' ),
229
- 'permissions-admin-notices' => _fs_text( 'Admin Notices' ),
230
- 'permissions-newsletter' => _fs_text( 'Newsletter' ),
231
- 'permissions-newsletter_desc' => _fs_text( 'Updates, announcements, marketing, no spam' ),
232
- 'privacy-policy' => _fs_text( 'Privacy Policy' ),
233
- 'tos' => _fs_text( 'Terms of Service' ),
234
- 'activating' => _fs_x( 'Activating', 'as activating plugin' ),
235
- 'sending-email' => _fs_x( 'Sending email', 'as in the process of sending an email' ),
236
- 'opt-in-connect' => _fs_x( 'Allow & Continue', 'button label' ),
237
- 'agree-activate-license' => _fs_x( 'Agree & Activate License', 'button label' ),
238
- 'skip' => _fs_x( 'Skip', 'verb' ),
239
- 'click-here-to-use-plugin-anonymously' => _fs_text( 'Click here to use the plugin anonymously' ),
240
- 'resend-activation-email' => _fs_text( 'Re-send activation email' ),
241
- 'license-key' => _fs_text( 'License key' ),
242
- 'send-license-key' => _fs_text( 'Send License Key' ),
243
- 'sending-license-key' => _fs_text( 'Sending license key' ),
244
- 'have-license-key' => _fs_text( 'Have a license key?' ),
245
- 'dont-have-license-key' => _fs_text( 'Don\'t have a license key?' ),
246
- 'cant-find-license-key' => _fs_text( "Can't find your license key?" ),
247
- 'email-not-found' => _fs_text( "We couldn't find your email address in the system, are you sure it's the right address?" ),
248
- 'no-active-licenses' => _fs_text( "We can't see any active licenses associated with that email address, are you sure it's the right address?" ),
249
- 'opt-in' => _fs_text( 'Opt In' ),
250
- 'opt-out' => _fs_text( 'Opt Out' ),
251
- 'opt-out-cancel' => _fs_text( 'On second thought - I want to continue helping' ),
252
- 'opting-out' => _fs_text( 'Opting out...' ),
253
- 'opting-in' => _fs_text( 'Opting in...' ),
254
- 'opt-out-message-appreciation' => _fs_text( 'We appreciate your help in making the %s better by letting us track some usage data.' ),
255
- 'opt-out-message-usage-tracking' => _fs_text( "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." ),
256
- 'opt-out-message-clicking-opt-out' => _fs_text( 'By clicking "Opt Out", we will no longer be sending any data from %s to %s.' ),
257
- #endregion Connect
258
-
259
- #region Screenshots
260
- 'screenshots' => _fs_text( 'Screenshots' ),
261
- 'view-full-size-x' => _fs_text( 'Click to view full-size screenshot %d' ),
262
- #endregion Screenshots
263
-
264
- #region Debug
265
- 'freemius-debug' => _fs_text( 'Freemius Debug' ),
266
- 'on' => _fs_x( 'On', 'as turned on' ),
267
- 'off' => _fs_x( 'Off', 'as turned off' ),
268
- 'debugging' => _fs_x( 'Debugging', 'as code debugging' ),
269
- 'freemius-state' => _fs_text( 'Freemius State' ),
270
- 'connected' => _fs_x( 'Connected', 'as connection was successful' ),
271
- 'blocked' => _fs_x( 'Blocked', 'as connection blocked' ),
272
- 'api' => _fs_x( 'API', 'as application program interface' ),
273
- 'sdk' => _fs_x( 'SDK', 'as software development kit versions' ),
274
- 'sdk-versions' => _fs_x( 'SDK Versions', 'as software development kit versions' ),
275
- 'plugin-path' => _fs_x( 'Plugin Path', 'as plugin folder path' ),
276
- 'sdk-path' => _fs_x( 'SDK Path', 'as sdk path' ),
277
- 'addons-of-x' => _fs_text( 'Add Ons of Plugin %s' ),
278
- 'delete-all-confirm' => _fs_text( 'Are you sure you want to delete all Freemius data?' ),
279
- 'actions' => _fs_text( 'Actions' ),
280
- 'delete-all-accounts' => _fs_text( 'Delete All Accounts' ),
281
- 'start-fresh' => _fs_text( 'Start Fresh' ),
282
- 'clear-api-cache' => _fs_text( 'Clear API Cache' ),
283
- 'sync-data-from-server' => _fs_text( 'Sync Data From Server' ),
284
- 'scheduled-crons' => _fs_text( 'Scheduled Crons' ),
285
- 'cron-type' => _fs_text( 'Cron Type' ),
286
- 'plugins-themes-sync' => _fs_text( 'Plugins & Themes Sync' ),
287
- 'licenses' => _fs_text( 'Licenses' ),
288
- 'debug-log' => _fs_text( 'Debug Log' ),
289
- 'all' => _fs_text( 'All' ),
290
- 'file' => _fs_text( 'File' ),
291
- 'function' => _fs_text( 'Function' ),
292
- 'process-id' => _fs_text( 'Process ID' ),
293
- 'logger' => _fs_text( 'Logger' ),
294
- 'message' => _fs_text( 'Message' ),
295
- 'download' => _fs_text( 'Download' ),
296
- 'filter' => _fs_text( 'Filter' ),
297
- 'type' => _fs_text( 'Type' ),
298
- 'all-types' => _fs_text( 'All Types' ),
299
- 'all-requests' => _fs_text( 'All Requests' ),
300
- #endregion Debug
301
-
302
- #region Expressions
303
- 'congrats' => _fs_x( 'Congrats', 'as congratulations' ),
304
- 'oops' => _fs_x( 'Oops', 'exclamation' ),
305
- 'yee-haw' => _fs_x( 'Yee-haw', 'interjection expressing joy or exuberance' ),
306
- 'woot' => _fs_x( 'W00t',
307
- '(especially in electronic communication) used to express elation, enthusiasm, or triumph.' ),
308
- 'right-on' => _fs_x( 'Right on', 'a positive response' ),
309
- 'hmm' => _fs_x( 'Hmm',
310
- 'something somebody says when they are thinking about what you have just said. ' ),
311
- 'ok' => _fs_text( 'O.K' ),
312
- 'hey' => _fs_x( 'Hey', 'exclamation' ),
313
- 'heads-up' => _fs_x( 'Heads up',
314
- 'advance notice of something that will need attention.' ),
315
- #endregion Expressions
316
-
317
- #region Admin Notices
318
- 'you-have-latest' => _fs_text( 'Seems like you got the latest release.' ),
319
- 'you-are-good' => _fs_text( 'You are all good!' ),
320
- 'user-exist-message' => _fs_text( 'Sorry, we could not complete the email update. Another user with the same email is already registered.' ),
321
- 'user-exist-message_ownership' => _fs_text( 'If you would like to give up the ownership of the plugin\'s account to %s click the Change Ownership button.' ),
322
- 'email-updated-message' => _fs_text( 'Your email was successfully updated. You should receive an email with confirmation instructions in few moments.' ),
323
- 'name-updated-message' => _fs_text( 'Your name was successfully updated.' ),
324
- 'x-updated' => _fs_text( 'You have successfully updated your %s.' ),
325
- 'name-update-failed-message' => _fs_text( 'Please provide your full name.' ),
326
- 'verification-email-sent-message' => _fs_text( 'Verification mail was just sent to %s. If you can\'t find it after 5 min, please check your spam box.' ),
327
- 'addons-info-external-message' => _fs_text( 'Just letting you know that the add-ons information of %s is being pulled from an external server.' ),
328
- 'no-cc-required' => _fs_text( 'No credit card required' ),
329
- 'premium-activated-message' => _fs_text( 'Premium plugin version was successfully activated.' ),
330
- 'successful-version-upgrade-message' => _fs_text( 'The upgrade of %s was successfully completed.' ),
331
- 'activation-with-plan-x-message' => _fs_text( 'Your account was successfully activated with the %s plan.' ),
332
- 'download-latest-x-version-now' => _fs_text( 'Download the latest %s version now' ),
333
- 'follow-steps-to-complete-upgrade' => _fs_text( 'Please follow these steps to complete the upgrade' ),
334
- 'download-latest-x-version' => _fs_text( 'Download the latest %s version' ),
335
- 'download-latest-version' => _fs_text( 'Download the latest version' ),
336
- 'deactivate-free-version' => _fs_text( 'Deactivate the free version' ),
337
- 'upload-and-activate' => _fs_text( 'Upload and activate the downloaded version' ),
338
- 'howto-upload-activate' => _fs_text( 'How to upload and activate?' ),
339
- 'addon-successfully-purchased-message' => _fs_x( '%s Add-on was successfully purchased.',
340
- '%s - product name, e.g. Facebook add-on was successfully...' ),
341
- 'addon-successfully-upgraded-message' => _fs_text( 'Your %s Add-on plan was successfully upgraded.' ),
342
- 'email-verified-message' => _fs_text( 'Your email has been successfully verified - you are AWESOME!' ),
343
- 'plan-upgraded-message' => _fs_text( 'Your plan was successfully upgraded.' ),
344
- 'plan-changed-to-x-message' => _fs_text( 'Your plan was successfully changed to %s.' ),
345
- 'license-expired-blocking-message' => _fs_text( 'Your license has expired. You can still continue using the free plugin forever.' ),
346
- 'license-cancelled' => _fs_text( 'Your license has been cancelled. If you think it\'s a mistake, please contact support.' ),
347
- 'trial-started-message' => _fs_text( 'Your trial has been successfully started.' ),
348
- 'license-activated-message' => _fs_text( 'Your license was successfully activated.' ),
349
- 'no-active-license-message' => _fs_text( 'It looks like your site currently doesn\'t have an active license.' ),
350
- 'license-deactivation-message' => _fs_text( 'Your license was successfully deactivated, you are back to the %s plan.' ),
351
- 'license-deactivation-failed-message' => _fs_text( 'It looks like the license deactivation failed.' ),
352
- 'license-activation-failed-message' => _fs_text( 'It looks like the license could not be activated.' ),
353
- 'server-error-message' => _fs_text( 'Error received from the server:' ),
354
- 'trial-expired-message' => _fs_text( 'Your trial has expired. You can still continue using all our free features.' ),
355
- 'plan-x-downgraded-message' => _fs_text( 'Your plan was successfully downgraded. Your %s plan license will expire in %s.' ),
356
- 'plan-downgraded-failure-message' => _fs_text( 'Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes.' ),
357
- 'trial-cancel-no-trial-message' => _fs_text( 'It looks like you are not in trial mode anymore so there\'s nothing to cancel :)' ),
358
- 'trial-cancel-message' => _fs_text( 'Your %s free trial was successfully cancelled.' ),
359
- 'version-x-released' => _fs_x( 'Version %s was released.', '%s - numeric version number' ),
360
- 'please-download-x' => _fs_text( 'Please download %s.' ),
361
- 'latest-x-version' => _fs_x( 'the latest %s version here',
362
- '%s - plan name, as the latest professional version here' ),
363
- 'trial-x-promotion-message' => _fs_text( 'How do you like %s so far? Test all our %s premium features with a %d-day free trial.' ),
364
- 'start-free-trial' => _fs_x( 'Start free trial', 'call to action' ),
365
- 'starting-trial' => _fs_text( 'Starting trial' ),
366
- 'please-wait' => _fs_text( 'Please wait' ),
367
- 'trial-cancel-failure-message' => _fs_text( 'Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes.' ),
368
- 'trial-utilized' => _fs_text( 'You already utilized a trial before.' ),
369
- 'in-trial-mode' => _fs_text( 'You are already running the plugin in a trial mode.' ),
370
- 'trial-plan-x-not-exist' => _fs_text( 'Plan %s do not exist, therefore, can\'t start a trial.' ),
371
- 'plan-x-no-trial' => _fs_text( 'Plan %s does not support a trial period.' ),
372
- 'no-trials' => _fs_text( 'None of the plugin\'s plans supports a trial period.' ),
373
- 'unexpected-api-error' => _fs_text( 'Unexpected API error. Please contact the plugin\'s author with the following error.' ),
374
- 'no-commitment-for-x-days' => _fs_text( 'No commitment for %s days - cancel anytime!' ),
375
- 'license-expired-non-blocking-message' => _fs_text( '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.' ),
376
- 'could-not-activate-x' => _fs_text( 'Couldn\'t activate %s.' ),
377
- 'contact-us-with-error-message' => _fs_text( 'Please contact us with the following message:' ),
378
- 'plan-did-not-change-message' => _fs_text( '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.' ),
379
- 'contact-us-here' => _fs_text( 'Please contact us here' ),
380
- 'plan-did-not-change-email-message' => _fs_text( 'I have upgraded my account but when I try to Sync the License, the plan remains %s.' ),
381
- #endregion Admin Notices
382
- #region Connectivity Issues
383
- 'connectivity-test-fails-message' => _fs_text( 'From unknown reason, the API connectivity test failed.' ),
384
- '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?' ),
385
- '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.' ),
386
- 'cloudflare-blocks-connection-message' => _fs_text( 'From unknown reason, CloudFlare, the firewall we use, blocks the connection.' ),
387
- 'x-requires-access-to-api' => _fs_x( '%s requires an access to our API.',
388
- 'as pluginX requires an access to our API' ),
389
- 'squid-blocks-connection-message' => _fs_text( 'It looks like your server is using Squid ACL (access control lists), which blocks the connection.' ),
390
- 'squid-no-clue-title' => _fs_text( 'I don\'t know what is Squid or ACL, help me!' ),
391
- 'squid-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.' ),
392
- 'sysadmin-title' => _fs_text( 'I\'m a system administrator' ),
393
- 'squid-sysadmin-desc' => _fs_text( 'Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again.' ),
394
- 'curl-missing-no-clue-title' => _fs_text( 'I don\'t know what is cURL or how to install it, help me!' ),
395
- '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.' ),
396
- '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.' ),
397
- '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.' ),
398
- 'contact-support-before-deactivation' => _fs_text( 'Sorry for the inconvenience and we are here to help if you give us a chance.' ),
399
- 'fix-issue-title' => _fs_text( 'Yes - I\'m giving you a chance to fix it' ),
400
- 'fix-issue-desc' => _fs_text( '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.' ),
401
- 'install-previous-title' => _fs_text( 'Let\'s try your previous version' ),
402
- 'install-previous-desc' => _fs_text( 'Uninstall this version and install the previous one.' ),
403
- 'deactivate-plugin-title' => _fs_text( 'That\'s exhausting, please deactivate' ),
404
- 'deactivate-plugin-desc' => _fs_text( 'We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future.' ),
405
- 'fix-request-sent-message' => _fs_text( '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.' ),
406
- 'server-blocking-access' => _fs_x( 'Your server is blocking the access to Freemius\' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s',
407
- '%1s - plugin title, %2s - API domain' ),
408
- 'wrong-authentication-param-message' => _fs_text( 'It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again.' ),
409
- #endregion Connectivity Issues
410
- #region Change Owner
411
- 'change-owner-request-sent-x' => _fs_text( '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.' ),
412
- 'change-owner-request_owner-confirmed' => _fs_text( 'Thanks for confirming the ownership change. An email was just sent to %s for final approval.' ),
413
- 'change-owner-request_candidate-confirmed' => _fs_text( '%s is the new owner of the account.' ),
414
- #endregion Change Owner
415
- 'addon-x-cannot-run-without-y' => _fs_x( '%s cannot run without %s.',
416
- 'addonX cannot run without pluginY' ),
417
- 'addon-x-cannot-run-without-parent' => _fs_x( '%s cannot run without the plugin.', 'addonX cannot run...' ),
418
- 'plugin-x-activation-message' => _fs_x( '%s activation was successfully completed.',
419
- 'pluginX activation was successfully...' ),
420
- 'features-and-pricing' => _fs_x( 'Features & Pricing', 'Plugin installer section title' ),
421
- 'free-addon-not-deployed' => _fs_text( 'Add-on must be deployed to WordPress.org or Freemius.' ),
422
- 'paid-addon-not-deployed' => _fs_text( 'Paid add-on must be deployed to Freemius.' ),
423
- #--------------------------------------------------------------------------------
424
- #region Add-On Licensing
425
- #--------------------------------------------------------------------------------
426
- 'addon-no-license-message' => _fs_text( '%s is a premium only add-on. You have to purchase a license first before activating the plugin.' ),
427
- 'addon-trial-cancelled-message' => _fs_text( '%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.' ),
428
- #endregion
429
- #--------------------------------------------------------------------------------
430
- #region Billing Cycles
431
- #--------------------------------------------------------------------------------
432
- 'monthly' => _fs_x( 'Monthly', 'as every month' ),
433
- 'mo' => _fs_x( 'mo', 'as monthly period' ),
434
- 'annual' => _fs_x( 'Annual', 'as once a year' ),
435
- 'annually' => _fs_x( 'Annually', 'as once a year' ),
436
- 'once' => _fs_x( 'Once', 'as once a year' ),
437
- 'year' => _fs_x( 'year', 'as annual period' ),
438
- 'lifetime' => _fs_text( 'Lifetime' ),
439
- 'best' => _fs_x( 'Best', 'e.g. the best product' ),
440
- 'billed-x' => _fs_x( 'Billed %s', 'e.g. billed monthly' ),
441
- 'save-x' => _fs_x( 'Save %s', 'as a discount of $5 or 10%' ),
442
- #endregion Billing Cycles
443
- 'view-details' => _fs_text( 'View details' ),
444
- #--------------------------------------------------------------------------------
445
- #region Trial
446
- #--------------------------------------------------------------------------------
447
- 'approve-start-trial' => _fs_x( 'Approve & Start Trial', 'button label' ),
448
- /* translators: %1$s: Number of trial days; %2$s: Plan name; */
449
- 'start-trial-prompt-header' => _fs_text( 'You are 1-click away from starting your %1$s-day free trial of the %2$s plan.' ),
450
- /* translators: %s: Link to freemius.com */
451
- 'start-trial-prompt-message' => _fs_text( '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.' ),
452
-
453
- #endregion
454
- #--------------------------------------------------------------------------------
455
- #region Billing Details
456
- #--------------------------------------------------------------------------------
457
- 'business-name' => _fs_text( 'Business name' ),
458
- 'tax-vat-id' => _fs_text( 'Tax / VAT ID' ),
459
- 'address-line-n' => _fs_text( 'Address Line %d' ),
460
- 'country' => _fs_text( 'Country' ),
461
- 'select-country' => _fs_text( 'Select Country' ),
462
- 'city' => _fs_text( 'City' ),
463
- 'town' => _fs_text( 'Town' ),
464
- 'state' => _fs_text( 'State' ),
465
- 'province' => _fs_text( 'Province' ),
466
- 'zip-postal-code' => _fs_text( 'ZIP / Postal Code' ),
467
- #endregion
468
- );
469
-
470
- /**
471
- * Localization of the strings in the plugin/theme info dialog box.
472
- *
473
- * $fs_module_info_text should ONLY include strings that are not located in $fs_text.
474
- *
475
- * @author Vova Feldman (@svovaf)
476
- * @since 1.2.2
477
- */
478
- global $fs_module_info_text;
479
-
480
- $fs_module_info_text = array(
481
- 'description' => _fs_x( 'Description', 'Plugin installer section title' ),
482
- 'installation' => _fs_x( 'Installation', 'Plugin installer section title' ),
483
- 'faq' => _fs_x( 'FAQ', 'Plugin installer section title' ),
484
- 'changelog' => _fs_x( 'Changelog', 'Plugin installer section title' ),
485
- 'reviews' => _fs_x( 'Reviews', 'Plugin installer section title' ),
486
- 'other_notes' => _fs_x( 'Other Notes', 'Plugin installer section title' ),
487
- /* translators: %s: 1 or One */
488
- 'x-star' => _fs_text( '%s star' ),
489
- /* translators: %s: Number larger than 1 */
490
- 'x-stars' => _fs_text( '%s stars' ),
491
- /* translators: %s: 1 or One */
492
- 'x-rating' => _fs_text( '%s rating' ),
493
- /* translators: %s: Number larger than 1 */
494
- 'x-ratings' => _fs_text( '%s ratings' ),
495
- /* translators: %s: 1 or One (Number of times downloaded) */
496
- 'x-time' => _fs_text( '%s time' ),
497
- /* translators: %s: Number of times downloaded */
498
- 'x-times' => _fs_text( '%s times' ),
499
- /* translators: %s: # of stars (e.g. 5 stars) */
500
- 'click-to-reviews' => _fs_text( 'Click to see reviews that provided a rating of %s' ),
501
- 'last-updated:' => _fs_text( 'Last Updated' ),
502
- 'requires-wordpress-version:' => _fs_text( 'Requires WordPress Version:' ),
503
- 'author:' => _fs_x( 'Author:', 'as the plugin author' ),
504
- 'compatible-up-to:' => _fs_text( 'Compatible up to:' ),
505
- 'downloaded:' => _fs_text( 'Downloaded:' ),
506
- 'wp-org-plugin-page' => _fs_text( 'WordPress.org Plugin Page' ),
507
- 'plugin-homepage' => _fs_text( 'Plugin Homepage' ),
508
- 'donate-to-plugin' => _fs_text( 'Donate to this plugin' ),
509
- 'average-rating' => _fs_text( 'Average Rating' ),
510
- 'based-on-x' => _fs_text( 'based on %s' ),
511
- 'warning:' => _fs_text( 'Warning:' ),
512
- 'contributors' => _fs_text( 'Contributors' ),
513
- 'plugin-install' => _fs_text( 'Plugin Install' ),
514
- 'not-tested-warning' => _fs_text( 'This plugin has not been tested with your current version of WordPress.' ),
515
- 'not-compatible-warning' => _fs_text( 'This plugin has not been marked as compatible with your version of WordPress.' ),
516
- 'newer-installed' => _fs_text( 'Newer Version (%s) Installed' ),
517
- 'latest-installed' => _fs_text( 'Latest Version Installed' ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
518
  );
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2015, Freemius, Inc.
5
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
6
+ * @since 1.1.4
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ require_once dirname( __FILE__ ) . '/l10n.php';
14
+
15
+ /**
16
+ * All strings can now be overridden.
17
+ *
18
+ * For example, if we want to override:
19
+ * 'you-are-step-away' => 'You are just one step away - %s',
20
+ *
21
+ * We can use the filter:
22
+ * fs_override_i18n( array(
23
+ * 'opt-in-connect' => __( "Yes - I'm in!", '{your-text_domain}' ),
24
+ * 'skip' => __( 'Not today', '{your-text_domain}' ),
25
+ * ), '{plugin_slug}' );
26
+ *
27
+ * Or with the Freemius instance:
28
+ *
29
+ * my_freemius->override_i18n( array(
30
+ * 'opt-in-connect' => __( "Yes - I'm in!", '{your-text_domain}' ),
31
+ * 'skip' => __( 'Not today', '{your-text_domain}' ),
32
+ * );
33
+ */
34
+ global $fs_text;
35
+
36
+ $fs_text = array(
37
+ 'account' => _fs_text( 'Account' ),
38
+ 'addon' => _fs_text( 'Add On' ),
39
+ 'contact-us' => _fs_text( 'Contact Us' ),
40
+ 'contact-support' => _fs_text( 'Contact Support' ),
41
+ 'change-ownership' => _fs_text( 'Change Ownership' ),
42
+ 'support' => _fs_text( 'Support' ),
43
+ 'support-forum' => _fs_text( 'Support Forum' ),
44
+ 'add-ons' => _fs_text( 'Add Ons' ),
45
+ 'upgrade' => _fs_x( 'Upgrade', 'verb' ),
46
+ 'awesome' => _fs_text( 'Awesome' ),
47
+ 'pricing' => _fs_x( 'Pricing', 'noun' ),
48
+ 'price' => _fs_x( 'Price', 'noun' ),
49
+ 'unlimited-updates' => _fs_text( 'Unlimited Updates' ),
50
+ 'downgrade' => _fs_x( 'Downgrade', 'verb' ),
51
+ 'cancel-subscription' => _fs_x( 'Cancel Subscription', 'verb' ),
52
+ 'cancel-trial' => _fs_text( 'Cancel Trial' ),
53
+ 'free-trial' => _fs_text( 'Free Trial' ),
54
+ 'start-free-x' => _fs_text( 'Start my free %s' ),
55
+ 'no-commitment-x' => _fs_text( 'No commitment for %s - cancel anytime' ),
56
+ 'after-x-pay-as-little-y' => _fs_text( 'After your free %s, pay as little as %s' ),
57
+ 'details' => _fs_text( 'Details' ),
58
+ 'account-details' => _fs_text( 'Account Details' ),
59
+ 'delete' => _fs_x( 'Delete', 'verb' ),
60
+ 'show' => _fs_x( 'Show', 'verb' ),
61
+ 'hide' => _fs_x( 'Hide', 'verb' ),
62
+ 'edit' => _fs_x( 'Edit', 'verb' ),
63
+ 'update' => _fs_x( 'Update', 'verb' ),
64
+ 'date' => _fs_text( 'Date' ),
65
+ 'amount' => _fs_text( 'Amount' ),
66
+ 'invoice' => _fs_text( 'Invoice' ),
67
+ 'billing' => _fs_text( 'Billing' ),
68
+ 'payments' => _fs_text( 'Payments' ),
69
+ 'delete-account' => _fs_text( 'Delete Account' ),
70
+ 'dismiss' => _fs_x( 'Dismiss', 'as close a window' ),
71
+ 'plan' => _fs_x( 'Plan', 'as product pricing plan' ),
72
+ 'change-plan' => _fs_text( 'Change Plan' ),
73
+ 'download-x-version' => _fs_x( 'Download %s Version', 'as download professional version' ),
74
+ 'download-x-version-now' => _fs_x( 'Download %s version now', 'as download professional version now' ),
75
+ 'download-latest' => _fs_x( 'Download Latest', 'as download latest version' ),
76
+ 'you-have-x-license' => _fs_x( 'You have a %s license.', 'E.g. you have a professional license.' ),
77
+ 'new' => _fs_text( 'New' ),
78
+ 'free' => _fs_text( 'Free' ),
79
+ 'trial' => _fs_x( 'Trial', 'as trial plan' ),
80
+ 'start-trial' => _fs_x( 'Start Trial', 'as starting a trial plan' ),
81
+ 'purchase' => _fs_x( 'Purchase', 'verb' ),
82
+ 'purchase-license' => _fs_text( 'Purchase License' ),
83
+ 'buy' => _fs_x( 'Buy', 'verb' ),
84
+ 'buy-license' => _fs_text( 'Buy License' ),
85
+ 'license-single-site' => _fs_text( 'Single Site License' ),
86
+ 'license-unlimited' => _fs_text( 'Unlimited Licenses' ),
87
+ 'license-x-sites' => _fs_text( 'Up to %s Sites' ),
88
+ 'renew-license-now' => _fs_text( '%sRenew your license now%s to access version %s features and support.' ),
89
+ 'ask-for-upgrade-email-address' => _fs_text( "Enter the email address you've used for the upgrade below and we will resend you the license key." ),
90
+ 'x-plan' => _fs_x( '%s Plan', 'e.g. Professional Plan' ),
91
+ 'you-are-step-away' => _fs_text( 'You are just one step away - %s' ),
92
+ 'activate-x-now' => _fs_x( 'Complete "%s" Activation Now',
93
+ '%s - plugin name. As complete "Jetpack" activation now' ),
94
+ 'few-plugin-tweaks' => _fs_text( 'We made a few tweaks to the plugin, %s' ),
95
+ 'optin-x-now' => _fs_text( 'Opt-in to make "%s" Better!' ),
96
+ 'error' => _fs_text( 'Error' ),
97
+ 'failed-finding-main-path' => _fs_text( 'Freemius SDK couldn\'t find the plugin\'s main file. Please contact sdk@freemius.com with the current error.' ),
98
+ #region Account
99
+
100
+ 'expiration' => _fs_x( 'Expiration', 'as expiration date' ),
101
+ 'license' => _fs_x( 'License', 'as software license' ),
102
+ 'not-verified' => _fs_text( 'not verified' ),
103
+ 'verify-email' => _fs_text( 'Verify Email' ),
104
+ 'expires-in' => _fs_x( 'Expires in %s', 'e.g. expires in 2 months' ),
105
+ 'renews-in' => _fs_x( 'Auto renews in %s', 'e.g. auto renews in 2 months' ),
106
+ 'no-expiration' => _fs_text( 'No expiration' ),
107
+ 'expired' => _fs_text( 'Expired' ),
108
+ 'cancelled' => _fs_text( 'Cancelled' ),
109
+ 'in-x' => _fs_x( 'In %s', 'e.g. In 2 hours' ),
110
+ 'x-ago' => _fs_x( '%s ago', 'e.g. 2 min ago' ),
111
+ /* translators: %s: Version number (e.g. 4.6 or higher) */
112
+ 'x-or-higher' => _fs_text( '%s or higher' ),
113
+ 'version' => _fs_x( 'Version', 'as plugin version' ),
114
+ 'name' => _fs_text( 'Name' ),
115
+ 'email' => _fs_text( 'Email' ),
116
+ 'email-address' => _fs_text( 'Email address' ),
117
+ 'verified' => _fs_text( 'Verified' ),
118
+ 'module' => _fs_text( 'Module' ),
119
+ 'module-type' => _fs_text( 'Module Type' ),
120
+ 'plugin' => _fs_text( 'Plugin' ),
121
+ 'plugins' => _fs_text( 'Plugins' ),
122
+ 'theme' => _fs_text( 'Theme' ),
123
+ 'themes' => _fs_text( 'Themes' ),
124
+ 'path' => _fs_x( 'Path', 'as file/folder path' ),
125
+ 'title' => _fs_text( 'Title' ),
126
+ 'free-version' => _fs_text( 'Free version' ),
127
+ 'premium-version' => _fs_text( 'Premium version' ),
128
+ 'slug' => _fs_x( 'Slug', 'as WP plugin slug' ),
129
+ 'id' => _fs_text( 'ID' ),
130
+ 'users' => _fs_text( 'Users' ),
131
+ 'plugin-installs' => _fs_text( 'Plugin Installs' ),
132
+ 'module-installs' => _fs_text( '%s Installs' ),
133
+ 'sites' => _fs_x( 'Sites', 'like websites' ),
134
+ 'user-id' => _fs_text( 'User ID' ),
135
+ 'site-id' => _fs_text( 'Site ID' ),
136
+ 'public-key' => _fs_text( 'Public Key' ),
137
+ 'secret-key' => _fs_text( 'Secret Key' ),
138
+ 'no-secret' => _fs_x( 'No Secret', 'as secret encryption key missing' ),
139
+ 'no-id' => _fs_text( 'No ID' ),
140
+ 'sync-license' => _fs_x( 'Sync License', 'as synchronize license' ),
141
+ 'sync' => _fs_x( 'Sync', 'as synchronize' ),
142
+ 'activate-license' => _fs_text( 'Activate License' ),
143
+ 'activate-free-version' => _fs_text( 'Activate Free Version' ),
144
+ 'activate-license-message' => _fs_text( 'Please enter the license key that you received in the email right after the purchase:' ),
145
+ 'activating-license' => _fs_text( 'Activating license...' ),
146
+ 'change-license' => _fs_text( 'Change License' ),
147
+ 'update-license' => _fs_text( 'Update License' ),
148
+ 'deactivate-license' => _fs_text( 'Deactivate License' ),
149
+ 'activate' => _fs_text( 'Activate' ),
150
+ 'deactivate' => _fs_text( 'Deactivate' ),
151
+ 'skip-deactivate' => _fs_text( 'Skip & Deactivate' ),
152
+ 'skip-and-x' => _fs_text( 'Skip & %s' ),
153
+ 'no-deactivate' => _fs_text( 'No - just deactivate' ),
154
+ 'yes-do-your-thing' => _fs_text( 'Yes - do your thing' ),
155
+ 'active' => _fs_x( 'Active', 'active mode' ),
156
+ 'is-active' => _fs_x( 'Is Active', 'is active mode?' ),
157
+ 'install-now' => _fs_text( 'Install Now' ),
158
+ 'install-update-now' => _fs_text( 'Install Update Now' ),
159
+ 'more-information-about-x' => _fs_text( 'More information about %s' ),
160
+ 'localhost' => _fs_text( 'Localhost' ),
161
+ 'activate-x-plan' => _fs_x( 'Activate %s Plan', 'as activate Professional plan' ),
162
+ 'x-left' => _fs_x( '%s left', 'as 5 licenses left' ),
163
+ 'last-license' => _fs_text( 'Last license' ),
164
+ 'what-is-your-x' => _fs_text( 'What is your %s?' ),
165
+ 'activate-this-addon' => _fs_text( 'Activate this add-on' ),
166
+ 'deactivate-license-confirm' => _fs_text( '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?' ),
167
+ 'delete-account-x-confirm' => _fs_text( '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?' ),
168
+ 'delete-account-confirm' => _fs_text( '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?' ),
169
+ 'downgrade-x-confirm' => _fs_text( 'Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s.' ),
170
+ 'cancel-trial-confirm' => _fs_text( 'Cancelling the trial will immediately block access to all premium features. Are you sure?' ),
171
+ 'after-downgrade-non-blocking' => _fs_text( 'You can still enjoy all %s features but you will not have access to plugin updates and support.' ),
172
+ 'after-downgrade-blocking' => _fs_text( 'Once your license expires you can still use the Free version but you will NOT have access to the %s features.' ),
173
+ 'proceed-confirmation' => _fs_text( 'Are you sure you want to proceed?' ),
174
+ #endregion Account
175
+
176
+ 'add-ons-for-x' => _fs_text( 'Add Ons for %s' ),
177
+ 'add-ons-missing' => _fs_text( 'We could\'nt load the add-ons list. It\'s probably an issue on our side, please try to come back in few minutes.' ),
178
+ #region Plugin Deactivation
179
+ 'anonymous-feedback' => _fs_text( 'Anonymous feedback' ),
180
+ 'quick-feedback' => _fs_text( 'Quick feedback' ),
181
+ 'deactivation-share-reason' => _fs_text( 'If you have a moment, please let us know why you are deactivating' ),
182
+ 'deactivation-modal-button-confirm' => _fs_text( 'Yes - Deactivate' ),
183
+ 'deactivation-modal-button-submit' => _fs_text( 'Submit & Deactivate' ),
184
+ 'cancel' => _fs_text( 'Cancel' ),
185
+ 'reason-no-longer-needed' => _fs_text( 'I no longer need the plugin' ),
186
+ 'reason-found-a-better-plugin' => _fs_text( 'I found a better plugin' ),
187
+ 'reason-needed-for-a-short-period' => _fs_text( 'I only needed the plugin for a short period' ),
188
+ 'reason-broke-my-site' => _fs_text( 'The plugin broke my site' ),
189
+ 'reason-suddenly-stopped-working' => _fs_text( 'The plugin suddenly stopped working' ),
190
+ 'reason-cant-pay-anymore' => _fs_text( "I can't pay for it anymore" ),
191
+ 'reason-temporary-deactivation' => _fs_text( "It's a temporary deactivation. I'm just debugging an issue." ),
192
+ 'reason-other' => _fs_x( 'Other',
193
+ 'the text of the "other" reason for deactivating the plugin that is shown in the modal box.' ),
194
+ 'ask-for-reason-message' => _fs_text( 'Kindly tell us the reason so we can improve.' ),
195
+ 'placeholder-plugin-name' => _fs_text( "What's the plugin's name?" ),
196
+ 'placeholder-comfortable-price' => _fs_text( 'What price would you feel comfortable paying?' ),
197
+ 'reason-couldnt-make-it-work' => _fs_text( "I couldn't understand how to make it work" ),
198
+ 'reason-great-but-need-specific-feature' => _fs_text( "The plugin is great, but I need specific feature that you don't support" ),
199
+ 'reason-not-working' => _fs_text( 'The plugin is not working' ),
200
+ 'reason-not-what-i-was-looking-for' => _fs_text( "It's not what I was looking for" ),
201
+ 'reason-didnt-work-as-expected' => _fs_text( "The plugin didn't work as expected" ),
202
+ 'placeholder-feature' => _fs_text( 'What feature?' ),
203
+ 'placeholder-share-what-didnt-work' => _fs_text( "Kindly share what didn't work so we can fix it for future users..." ),
204
+ 'placeholder-what-youve-been-looking-for' => _fs_text( "What you've been looking for?" ),
205
+ 'placeholder-what-did-you-expect' => _fs_text( "What did you expect?" ),
206
+ 'reason-didnt-work' => _fs_text( "The plugin didn't work" ),
207
+ 'reason-dont-like-to-share-my-information' => _fs_text( "I don't like to share my information with you" ),
208
+ 'dont-have-to-share-any-data' => _fs_text( "You might have missed it, but you don't have to share any data and can just %s the opt-in." ),
209
+ #endregion Plugin Deactivation
210
+
211
+ #region Connect
212
+ 'hey-x' => _fs_x( 'Hey %s,', 'greeting' ),
213
+ 'thanks-x' => _fs_x( 'Thanks %s!', 'a greeting. E.g. Thanks John!' ),
214
+ 'connect-message' => _fs_text( 'Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s.' ),
215
+ 'connect-message_on-update' => _fs_text( '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.' ),
216
+ 'pending-activation-message' => _fs_text( '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.' ),
217
+ 'complete-the-install' => _fs_text( 'complete the install' ),
218
+ 'start-the-trial' => _fs_text( 'start the trial' ),
219
+ 'thanks-for-purchasing' => _fs_text( 'Thanks for purchasing %s! To get started, please enter your license key:' ),
220
+ 'license-sync-disclaimer' => _fs_text( 'The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license.' ),
221
+ 'what-permissions' => _fs_text( 'What permissions are being granted?' ),
222
+ 'permissions-profile' => _fs_text( 'Your Profile Overview' ),
223
+ 'permissions-profile_desc' => _fs_text( 'Name and email address' ),
224
+ 'permissions-site' => _fs_text( 'Your Site Overview' ),
225
+ 'permissions-site_desc' => _fs_text( 'Site URL, WP version, PHP info, plugins & themes' ),
226
+ 'permissions-events' => _fs_text( 'Current Plugin Events' ),
227
+ 'permissions-events_desc' => _fs_text( 'Activation, deactivation and uninstall' ),
228
+ 'permissions-plugins_themes' => _fs_text( 'Plugins & Themes' ),
229
+ 'permissions-plugins_themes_desc' => _fs_text( 'Titles, versions and state.' ),
230
+ 'permissions-admin-notices' => _fs_text( 'Admin Notices' ),
231
+ 'permissions-newsletter' => _fs_text( 'Newsletter' ),
232
+ 'permissions-newsletter_desc' => _fs_text( 'Updates, announcements, marketing, no spam' ),
233
+ 'privacy-policy' => _fs_text( 'Privacy Policy' ),
234
+ 'tos' => _fs_text( 'Terms of Service' ),
235
+ 'activating' => _fs_x( 'Activating', 'as activating plugin' ),
236
+ 'sending-email' => _fs_x( 'Sending email', 'as in the process of sending an email' ),
237
+ 'opt-in-connect' => _fs_x( 'Allow & Continue', 'button label' ),
238
+ 'agree-activate-license' => _fs_x( 'Agree & Activate License', 'button label' ),
239
+ 'skip' => _fs_x( 'Skip', 'verb' ),
240
+ 'click-here-to-use-plugin-anonymously' => _fs_text( 'Click here to use the plugin anonymously' ),
241
+ 'resend-activation-email' => _fs_text( 'Re-send activation email' ),
242
+ 'license-key' => _fs_text( 'License key' ),
243
+ 'send-license-key' => _fs_text( 'Send License Key' ),
244
+ 'sending-license-key' => _fs_text( 'Sending license key' ),
245
+ 'have-license-key' => _fs_text( 'Have a license key?' ),
246
+ 'dont-have-license-key' => _fs_text( 'Don\'t have a license key?' ),
247
+ 'cant-find-license-key' => _fs_text( "Can't find your license key?" ),
248
+ 'email-not-found' => _fs_text( "We couldn't find your email address in the system, are you sure it's the right address?" ),
249
+ 'no-active-licenses' => _fs_text( "We can't see any active licenses associated with that email address, are you sure it's the right address?" ),
250
+ 'opt-in' => _fs_text( 'Opt In' ),
251
+ 'opt-out' => _fs_text( 'Opt Out' ),
252
+ 'opt-out-cancel' => _fs_text( 'On second thought - I want to continue helping' ),
253
+ 'opting-out' => _fs_text( 'Opting out...' ),
254
+ 'opting-in' => _fs_text( 'Opting in...' ),
255
+ 'opt-out-message-appreciation' => _fs_text( 'We appreciate your help in making the %s better by letting us track some usage data.' ),
256
+ 'opt-out-message-usage-tracking' => _fs_text( "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." ),
257
+ 'opt-out-message-clicking-opt-out' => _fs_text( 'By clicking "Opt Out", we will no longer be sending any data from %s to %s.' ),
258
+ #endregion Connect
259
+
260
+ #region Screenshots
261
+ 'screenshots' => _fs_text( 'Screenshots' ),
262
+ 'view-full-size-x' => _fs_text( 'Click to view full-size screenshot %d' ),
263
+ #endregion Screenshots
264
+
265
+ #region Debug
266
+ 'freemius-debug' => _fs_text( 'Freemius Debug' ),
267
+ 'on' => _fs_x( 'On', 'as turned on' ),
268
+ 'off' => _fs_x( 'Off', 'as turned off' ),
269
+ 'debugging' => _fs_x( 'Debugging', 'as code debugging' ),
270
+ 'freemius-state' => _fs_text( 'Freemius State' ),
271
+ 'connected' => _fs_x( 'Connected', 'as connection was successful' ),
272
+ 'blocked' => _fs_x( 'Blocked', 'as connection blocked' ),
273
+ 'api' => _fs_x( 'API', 'as application program interface' ),
274
+ 'sdk' => _fs_x( 'SDK', 'as software development kit versions' ),
275
+ 'sdk-versions' => _fs_x( 'SDK Versions', 'as software development kit versions' ),
276
+ 'plugin-path' => _fs_x( 'Plugin Path', 'as plugin folder path' ),
277
+ 'sdk-path' => _fs_x( 'SDK Path', 'as sdk path' ),
278
+ 'addons-of-x' => _fs_text( 'Add Ons of Plugin %s' ),
279
+ 'delete-all-confirm' => _fs_text( 'Are you sure you want to delete all Freemius data?' ),
280
+ 'actions' => _fs_text( 'Actions' ),
281
+ 'delete-all-accounts' => _fs_text( 'Delete All Accounts' ),
282
+ 'start-fresh' => _fs_text( 'Start Fresh' ),
283
+ 'clear-api-cache' => _fs_text( 'Clear API Cache' ),
284
+ 'sync-data-from-server' => _fs_text( 'Sync Data From Server' ),
285
+ 'scheduled-crons' => _fs_text( 'Scheduled Crons' ),
286
+ 'cron-type' => _fs_text( 'Cron Type' ),
287
+ 'plugins-themes-sync' => _fs_text( 'Plugins & Themes Sync' ),
288
+ 'licenses' => _fs_text( 'Licenses' ),
289
+ 'debug-log' => _fs_text( 'Debug Log' ),
290
+ 'all' => _fs_text( 'All' ),
291
+ 'file' => _fs_text( 'File' ),
292
+ 'function' => _fs_text( 'Function' ),
293
+ 'process-id' => _fs_text( 'Process ID' ),
294
+ 'logger' => _fs_text( 'Logger' ),
295
+ 'message' => _fs_text( 'Message' ),
296
+ 'download' => _fs_text( 'Download' ),
297
+ 'filter' => _fs_text( 'Filter' ),
298
+ 'type' => _fs_text( 'Type' ),
299
+ 'all-types' => _fs_text( 'All Types' ),
300
+ 'all-requests' => _fs_text( 'All Requests' ),
301
+ #endregion Debug
302
+
303
+ #region Expressions
304
+ 'congrats' => _fs_x( 'Congrats', 'as congratulations' ),
305
+ 'oops' => _fs_x( 'Oops', 'exclamation' ),
306
+ 'yee-haw' => _fs_x( 'Yee-haw', 'interjection expressing joy or exuberance' ),
307
+ 'woot' => _fs_x( 'W00t',
308
+ '(especially in electronic communication) used to express elation, enthusiasm, or triumph.' ),
309
+ 'right-on' => _fs_x( 'Right on', 'a positive response' ),
310
+ 'hmm' => _fs_x( 'Hmm',
311
+ 'something somebody says when they are thinking about what you have just said. ' ),
312
+ 'ok' => _fs_text( 'O.K' ),
313
+ 'hey' => _fs_x( 'Hey', 'exclamation' ),
314
+ 'heads-up' => _fs_x( 'Heads up',
315
+ 'advance notice of something that will need attention.' ),
316
+ #endregion Expressions
317
+
318
+ #region Admin Notices
319
+ 'you-have-latest' => _fs_text( 'Seems like you got the latest release.' ),
320
+ 'you-are-good' => _fs_text( 'You are all good!' ),
321
+ 'user-exist-message' => _fs_text( 'Sorry, we could not complete the email update. Another user with the same email is already registered.' ),
322
+ 'user-exist-message_ownership' => _fs_text( 'If you would like to give up the ownership of the plugin\'s account to %s click the Change Ownership button.' ),
323
+ 'email-updated-message' => _fs_text( 'Your email was successfully updated. You should receive an email with confirmation instructions in few moments.' ),
324
+ 'name-updated-message' => _fs_text( 'Your name was successfully updated.' ),
325
+ 'x-updated' => _fs_text( 'You have successfully updated your %s.' ),
326
+ 'name-update-failed-message' => _fs_text( 'Please provide your full name.' ),
327
+ 'verification-email-sent-message' => _fs_text( 'Verification mail was just sent to %s. If you can\'t find it after 5 min, please check your spam box.' ),
328
+ 'addons-info-external-message' => _fs_text( 'Just letting you know that the add-ons information of %s is being pulled from an external server.' ),
329
+ 'no-cc-required' => _fs_text( 'No credit card required' ),
330
+ 'premium-activated-message' => _fs_text( 'Premium plugin version was successfully activated.' ),
331
+ 'successful-version-upgrade-message' => _fs_text( 'The upgrade of %s was successfully completed.' ),
332
+ 'activation-with-plan-x-message' => _fs_text( 'Your account was successfully activated with the %s plan.' ),
333
+ 'download-latest-x-version-now' => _fs_text( 'Download the latest %s version now' ),
334
+ 'follow-steps-to-complete-upgrade' => _fs_text( 'Please follow these steps to complete the upgrade' ),
335
+ 'download-latest-x-version' => _fs_text( 'Download the latest %s version' ),
336
+ 'download-latest-version' => _fs_text( 'Download the latest version' ),
337
+ 'deactivate-free-version' => _fs_text( 'Deactivate the free version' ),
338
+ 'upload-and-activate' => _fs_text( 'Upload and activate the downloaded version' ),
339
+ 'howto-upload-activate' => _fs_text( 'How to upload and activate?' ),
340
+ 'addon-successfully-purchased-message' => _fs_x( '%s Add-on was successfully purchased.',
341
+ '%s - product name, e.g. Facebook add-on was successfully...' ),
342
+ 'addon-successfully-upgraded-message' => _fs_text( 'Your %s Add-on plan was successfully upgraded.' ),
343
+ 'email-verified-message' => _fs_text( 'Your email has been successfully verified - you are AWESOME!' ),
344
+ 'plan-upgraded-message' => _fs_text( 'Your plan was successfully upgraded.' ),
345
+ 'plan-changed-to-x-message' => _fs_text( 'Your plan was successfully changed to %s.' ),
346
+ 'license-expired-blocking-message' => _fs_text( 'Your license has expired. You can still continue using the free plugin forever.' ),
347
+ 'license-cancelled' => _fs_text( 'Your license has been cancelled. If you think it\'s a mistake, please contact support.' ),
348
+ 'trial-started-message' => _fs_text( 'Your trial has been successfully started.' ),
349
+ 'license-activated-message' => _fs_text( 'Your license was successfully activated.' ),
350
+ 'no-active-license-message' => _fs_text( 'It looks like your site currently doesn\'t have an active license.' ),
351
+ 'license-deactivation-message' => _fs_text( 'Your license was successfully deactivated, you are back to the %s plan.' ),
352
+ 'license-deactivation-failed-message' => _fs_text( 'It looks like the license deactivation failed.' ),
353
+ 'license-activation-failed-message' => _fs_text( 'It looks like the license could not be activated.' ),
354
+ 'server-error-message' => _fs_text( 'Error received from the server:' ),
355
+ 'trial-expired-message' => _fs_text( 'Your trial has expired. You can still continue using all our free features.' ),
356
+ 'plan-x-downgraded-message' => _fs_text( 'Your plan was successfully downgraded. Your %s plan license will expire in %s.' ),
357
+ 'plan-downgraded-failure-message' => _fs_text( 'Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes.' ),
358
+ 'trial-cancel-no-trial-message' => _fs_text( 'It looks like you are not in trial mode anymore so there\'s nothing to cancel :)' ),
359
+ 'trial-cancel-message' => _fs_text( 'Your %s free trial was successfully cancelled.' ),
360
+ 'version-x-released' => _fs_x( 'Version %s was released.', '%s - numeric version number' ),
361
+ 'please-download-x' => _fs_text( 'Please download %s.' ),
362
+ 'latest-x-version' => _fs_x( 'the latest %s version here',
363
+ '%s - plan name, as the latest professional version here' ),
364
+ 'trial-x-promotion-message' => _fs_text( 'How do you like %s so far? Test all our %s premium features with a %d-day free trial.' ),
365
+ 'start-free-trial' => _fs_x( 'Start free trial', 'call to action' ),
366
+ 'starting-trial' => _fs_text( 'Starting trial' ),
367
+ 'please-wait' => _fs_text( 'Please wait' ),
368
+ 'trial-cancel-failure-message' => _fs_text( 'Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes.' ),
369
+ 'trial-utilized' => _fs_text( 'You already utilized a trial before.' ),
370
+ 'in-trial-mode' => _fs_text( 'You are already running the plugin in a trial mode.' ),
371
+ 'trial-plan-x-not-exist' => _fs_text( 'Plan %s do not exist, therefore, can\'t start a trial.' ),
372
+ 'plan-x-no-trial' => _fs_text( 'Plan %s does not support a trial period.' ),
373
+ 'no-trials' => _fs_text( 'None of the plugin\'s plans supports a trial period.' ),
374
+ 'unexpected-api-error' => _fs_text( 'Unexpected API error. Please contact the plugin\'s author with the following error.' ),
375
+ 'no-commitment-for-x-days' => _fs_text( 'No commitment for %s days - cancel anytime!' ),
376
+ 'license-expired-non-blocking-message' => _fs_text( '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.' ),
377
+ 'could-not-activate-x' => _fs_text( 'Couldn\'t activate %s.' ),
378
+ 'contact-us-with-error-message' => _fs_text( 'Please contact us with the following message:' ),
379
+ 'plan-did-not-change-message' => _fs_text( '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.' ),
380
+ 'contact-us-here' => _fs_text( 'Please contact us here' ),
381
+ 'plan-did-not-change-email-message' => _fs_text( 'I have upgraded my account but when I try to Sync the License, the plan remains %s.' ),
382
+ #endregion Admin Notices
383
+ #region Connectivity Issues
384
+ 'connectivity-test-fails-message' => _fs_text( 'From unknown reason, the API connectivity test failed.' ),
385
+ '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?' ),
386
+ '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.' ),
387
+ 'curl-disabled-methods' => _fs_text( 'Disabled method(s):' ),
388
+ 'cloudflare-blocks-connection-message' => _fs_text( 'From unknown reason, CloudFlare, the firewall we use, blocks the connection.' ),
389
+ 'x-requires-access-to-api' => _fs_x( '%s requires an access to our API.',
390
+ 'as pluginX requires an access to our API' ),
391
+ 'squid-blocks-connection-message' => _fs_text( 'It looks like your server is using Squid ACL (access control lists), which blocks the connection.' ),
392
+ 'squid-no-clue-title' => _fs_text( 'I don\'t know what is Squid or ACL, help me!' ),
393
+ 'squid-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.' ),
394
+ 'sysadmin-title' => _fs_text( 'I\'m a system administrator' ),
395
+ 'squid-sysadmin-desc' => _fs_text( 'Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again.' ),
396
+ 'curl-missing-no-clue-title' => _fs_text( 'I don\'t know what is cURL or how to install it, help me!' ),
397
+ '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.' ),
398
+ '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.' ),
399
+ '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.' ),
400
+ 'contact-support-before-deactivation' => _fs_text( 'Sorry for the inconvenience and we are here to help if you give us a chance.' ),
401
+ 'fix-issue-title' => _fs_text( 'Yes - I\'m giving you a chance to fix it' ),
402
+ 'fix-issue-desc' => _fs_text( '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.' ),
403
+ 'install-previous-title' => _fs_text( 'Let\'s try your previous version' ),
404
+ 'install-previous-desc' => _fs_text( 'Uninstall this version and install the previous one.' ),
405
+ 'deactivate-plugin-title' => _fs_text( 'That\'s exhausting, please deactivate' ),
406
+ 'deactivate-plugin-desc' => _fs_text( 'We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future.' ),
407
+ 'fix-request-sent-message' => _fs_text( '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.' ),
408
+ 'server-blocking-access' => _fs_x( 'Your server is blocking the access to Freemius\' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s',
409
+ '%1s - plugin title, %2s - API domain' ),
410
+ 'wrong-authentication-param-message' => _fs_text( 'It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again.' ),
411
+ #endregion Connectivity Issues
412
+ #region Change Owner
413
+ 'change-owner-request-sent-x' => _fs_text( '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.' ),
414
+ 'change-owner-request_owner-confirmed' => _fs_text( 'Thanks for confirming the ownership change. An email was just sent to %s for final approval.' ),
415
+ 'change-owner-request_candidate-confirmed' => _fs_text( '%s is the new owner of the account.' ),
416
+ #endregion Change Owner
417
+ 'addon-x-cannot-run-without-y' => _fs_x( '%s cannot run without %s.',
418
+ 'addonX cannot run without pluginY' ),
419
+ 'addon-x-cannot-run-without-parent' => _fs_x( '%s cannot run without the plugin.', 'addonX cannot run...' ),
420
+ 'plugin-x-activation-message' => _fs_x( '%s activation was successfully completed.',
421
+ 'pluginX activation was successfully...' ),
422
+ 'features-and-pricing' => _fs_x( 'Features & Pricing', 'Plugin installer section title' ),
423
+ 'free-addon-not-deployed' => _fs_text( 'Add-on must be deployed to WordPress.org or Freemius.' ),
424
+ 'paid-addon-not-deployed' => _fs_text( 'Paid add-on must be deployed to Freemius.' ),
425
+ #--------------------------------------------------------------------------------
426
+ #region Add-On Licensing
427
+ #--------------------------------------------------------------------------------
428
+ 'addon-no-license-message' => _fs_text( '%s is a premium only add-on. You have to purchase a license first before activating the plugin.' ),
429
+ 'addon-trial-cancelled-message' => _fs_text( '%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.' ),
430
+ #endregion
431
+ #--------------------------------------------------------------------------------
432
+ #region Billing Cycles
433
+ #--------------------------------------------------------------------------------
434
+ 'monthly' => _fs_x( 'Monthly', 'as every month' ),
435
+ 'mo' => _fs_x( 'mo', 'as monthly period' ),
436
+ 'annual' => _fs_x( 'Annual', 'as once a year' ),
437
+ 'annually' => _fs_x( 'Annually', 'as once a year' ),
438
+ 'once' => _fs_x( 'Once', 'as once a year' ),
439
+ 'year' => _fs_x( 'year', 'as annual period' ),
440
+ 'lifetime' => _fs_text( 'Lifetime' ),
441
+ 'best' => _fs_x( 'Best', 'e.g. the best product' ),
442
+ 'billed-x' => _fs_x( 'Billed %s', 'e.g. billed monthly' ),
443
+ 'save-x' => _fs_x( 'Save %s', 'as a discount of $5 or 10%' ),
444
+ #endregion Billing Cycles
445
+ 'view-details' => _fs_text( 'View details' ),
446
+ #--------------------------------------------------------------------------------
447
+ #region Trial
448
+ #--------------------------------------------------------------------------------
449
+ 'approve-start-trial' => _fs_x( 'Approve & Start Trial', 'button label' ),
450
+ /* translators: %1$s: Number of trial days; %2$s: Plan name; */
451
+ 'start-trial-prompt-header' => _fs_text( 'You are 1-click away from starting your %1$s-day free trial of the %2$s plan.' ),
452
+ /* translators: %s: Link to freemius.com */
453
+ 'start-trial-prompt-message' => _fs_text( '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.' ),
454
+
455
+ #endregion
456
+ #--------------------------------------------------------------------------------
457
+ #region Billing Details
458
+ #--------------------------------------------------------------------------------
459
+ 'business-name' => _fs_text( 'Business name' ),
460
+ 'tax-vat-id' => _fs_text( 'Tax / VAT ID' ),
461
+ 'address-line-n' => _fs_text( 'Address Line %d' ),
462
+ 'country' => _fs_text( 'Country' ),
463
+ 'select-country' => _fs_text( 'Select Country' ),
464
+ 'city' => _fs_text( 'City' ),
465
+ 'town' => _fs_text( 'Town' ),
466
+ 'state' => _fs_text( 'State' ),
467
+ 'province' => _fs_text( 'Province' ),
468
+ 'zip-postal-code' => _fs_text( 'ZIP / Postal Code' ),
469
+ #endregion
470
+ #--------------------------------------------------------------------------------
471
+ #region Module Installation
472
+ #--------------------------------------------------------------------------------
473
+ 'installing-plugin-x' => _fs_text( 'Installing plugin: %s' ),
474
+ 'auto-installation' => _fs_text( 'Automatic Installation' ),
475
+ /* translators: %s: Number of seconds */
476
+ 'x-sec' => _fs_text( '%s sec' ),
477
+ '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.' ),
478
+ '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.' ),
479
+ 'cancel-installation' => _fs_text( 'Cancel Installation' ),
480
+ 'module-package-rename-failure' => _fs_text( 'The remote plugin package does not contain a folder with the desired slug and renaming did not work.' ),
481
+ 'auto-install-error-invalid-id' => _fs_text( 'Invalid module ID.' ),
482
+ 'auto-install-error-not-opted-in' => _fs_text( 'Auto installation only works for opted-in users.' ),
483
+ 'auto-install-error-premium-activated' => _fs_text( 'Premium version already active.' ),
484
+ 'auto-install-error-premium-addon-activated' => _fs_text( 'Premium add-on version already installed.' ),
485
+ 'auto-install-error-invalid-license' => _fs_text( 'You do not have a valid license to access the premium version.' ),
486
+ 'auto-install-error-serviceware' => _fs_text( 'Plugin is a "Serviceware" which means it does not have a premium code version.' ),
487
+ #endregion
488
+ );
489
+
490
+ /**
491
+ * Localization of the strings in the plugin/theme info dialog box.
492
+ *
493
+ * $fs_module_info_text should ONLY include strings that are not located in $fs_text.
494
+ *
495
+ * @author Vova Feldman (@svovaf)
496
+ * @since 1.2.2
497
+ */
498
+ global $fs_module_info_text;
499
+
500
+ $fs_module_info_text = array(
501
+ 'description' => _fs_x( 'Description', 'Plugin installer section title' ),
502
+ 'installation' => _fs_x( 'Installation', 'Plugin installer section title' ),
503
+ 'faq' => _fs_x( 'FAQ', 'Plugin installer section title' ),
504
+ 'changelog' => _fs_x( 'Changelog', 'Plugin installer section title' ),
505
+ 'reviews' => _fs_x( 'Reviews', 'Plugin installer section title' ),
506
+ 'other_notes' => _fs_x( 'Other Notes', 'Plugin installer section title' ),
507
+ /* translators: %s: 1 or One */
508
+ 'x-star' => _fs_text( '%s star' ),
509
+ /* translators: %s: Number larger than 1 */
510
+ 'x-stars' => _fs_text( '%s stars' ),
511
+ /* translators: %s: 1 or One */
512
+ 'x-rating' => _fs_text( '%s rating' ),
513
+ /* translators: %s: Number larger than 1 */
514
+ 'x-ratings' => _fs_text( '%s ratings' ),
515
+ /* translators: %s: 1 or One (Number of times downloaded) */
516
+ 'x-time' => _fs_text( '%s time' ),
517
+ /* translators: %s: Number of times downloaded */
518
+ 'x-times' => _fs_text( '%s times' ),
519
+ /* translators: %s: # of stars (e.g. 5 stars) */
520
+ 'click-to-reviews' => _fs_text( 'Click to see reviews that provided a rating of %s' ),
521
+ 'last-updated:' => _fs_text( 'Last Updated' ),
522
+ 'requires-wordpress-version:' => _fs_text( 'Requires WordPress Version:' ),
523
+ 'author:' => _fs_x( 'Author:', 'as the plugin author' ),
524
+ 'compatible-up-to:' => _fs_text( 'Compatible up to:' ),
525
+ 'downloaded:' => _fs_text( 'Downloaded:' ),
526
+ 'wp-org-plugin-page' => _fs_text( 'WordPress.org Plugin Page' ),
527
+ 'plugin-homepage' => _fs_text( 'Plugin Homepage' ),
528
+ 'donate-to-plugin' => _fs_text( 'Donate to this plugin' ),
529
+ 'average-rating' => _fs_text( 'Average Rating' ),
530
+ 'based-on-x' => _fs_text( 'based on %s' ),
531
+ 'warning:' => _fs_text( 'Warning:' ),
532
+ 'contributors' => _fs_text( 'Contributors' ),
533
+ 'plugin-install' => _fs_text( 'Plugin Install' ),
534
+ 'not-tested-warning' => _fs_text( 'This plugin has not been tested with your current version of WordPress.' ),
535
+ 'not-compatible-warning' => _fs_text( 'This plugin has not been marked as compatible with your version of WordPress.' ),
536
+ 'newer-installed' => _fs_text( 'Newer Version (%s) Installed' ),
537
+ 'latest-installed' => _fs_text( 'Latest Version Installed' ),
538
  );
freemius/includes/managers/class-fs-admin-menu-manager.php CHANGED
@@ -67,6 +67,12 @@
67
  * @var string
68
  */
69
  private $_first_time_path;
 
 
 
 
 
 
70
 
71
  #endregion Properties
72
 
@@ -85,7 +91,7 @@
85
  /**
86
  * @param string $plugin_slug
87
  *
88
- * @return FS_Admin_Notice_Manager
89
  */
90
  static function instance( $plugin_slug ) {
91
  if ( ! isset( self::$_instances[ $plugin_slug ] ) ) {
@@ -120,6 +126,8 @@
120
  * @param bool $is_addon
121
  */
122
  function init( $menu, $is_addon = false ) {
 
 
123
  $this->_menu_slug = ! empty( $menu['slug'] ) ? $menu['slug'] : null;
124
 
125
  $this->_default_submenu_items = array();
@@ -219,6 +227,16 @@
219
  return ! $this->_is_top_level && is_string( $this->_parent_slug );
220
  }
221
 
 
 
 
 
 
 
 
 
 
 
222
  /**
223
  * @author Vova Feldman (@svovaf)
224
  * @since 1.1.3
@@ -229,6 +247,10 @@
229
  * @return bool
230
  */
231
  function is_submenu_item_visible( $id, $default = true ) {
 
 
 
 
232
  return fs_apply_filter(
233
  $this->_plugin_slug,
234
  'is_submenu_visible',
@@ -263,7 +285,7 @@
263
  * @return bool
264
  */
265
  function has_menu_slug() {
266
- return ! empty( $this->_menu_slug );
267
  }
268
 
269
  /**
@@ -361,10 +383,20 @@
361
  *
362
  * @return bool
363
  */
364
- function is_activation_page() {
365
- return isset( $_GET['page'] ) &&
366
- ( ( strtolower( $this->_menu_slug ) === strtolower( $_GET['page'] ) ) ||
367
- ( strtolower( $this->_plugin_slug ) === strtolower( $_GET['page'] ) ) );
 
 
 
 
 
 
 
 
 
 
368
  }
369
 
370
  #region Submenu Override
@@ -525,7 +557,7 @@
525
  * @author Vova Feldman (@svovaf)
526
  * @since 1.0.9
527
  *
528
- * @return array[string]mixed
529
  */
530
  function remove_menu_item() {
531
  $this->_logger->entrance();
@@ -552,7 +584,7 @@
552
  *
553
  * @param callable $function
554
  *
555
- * @return array[string]mixed
556
  */
557
  function override_menu_item( $function ) {
558
  $found_menu = $this->remove_menu_item();
@@ -575,7 +607,7 @@
575
  unset( $menu[ $found_menu['position'] ] );
576
 
577
  // Create new top-level menu action.
578
- $hookname = add_menu_page(
579
  $found_menu['menu'][3],
580
  $found_menu['menu'][0],
581
  'manage_options',
@@ -632,4 +664,119 @@
632
  }
633
 
634
  #endregion Top level menu Override
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
635
  }
67
  * @var string
68
  */
69
  private $_first_time_path;
70
+ /**
71
+ * @since 1.2.2
72
+ *
73
+ * @var bool
74
+ */
75
+ private $_menu_exists;
76
 
77
  #endregion Properties
78
 
91
  /**
92
  * @param string $plugin_slug
93
  *
94
+ * @return FS_Admin_Menu_Manager
95
  */
96
  static function instance( $plugin_slug ) {
97
  if ( ! isset( self::$_instances[ $plugin_slug ] ) ) {
126
  * @param bool $is_addon
127
  */
128
  function init( $menu, $is_addon = false ) {
129
+ $this->_menu_exists = ( isset( $menu['slug'] ) && ! empty( $menu['slug'] ) );
130
+
131
  $this->_menu_slug = ! empty( $menu['slug'] ) ? $menu['slug'] : null;
132
 
133
  $this->_default_submenu_items = array();
227
  return ! $this->_is_top_level && is_string( $this->_parent_slug );
228
  }
229
 
230
+ /**
231
+ * @author Leo Fajardo (@leorw)
232
+ * @since 1.2.2
233
+ *
234
+ * @return bool
235
+ */
236
+ function has_menu() {
237
+ return $this->_menu_exists;
238
+ }
239
+
240
  /**
241
  * @author Vova Feldman (@svovaf)
242
  * @since 1.1.3
247
  * @return bool
248
  */
249
  function is_submenu_item_visible( $id, $default = true ) {
250
+ if ( ! $this->has_menu() ) {
251
+ return false;
252
+ }
253
+
254
  return fs_apply_filter(
255
  $this->_plugin_slug,
256
  'is_submenu_visible',
285
  * @return bool
286
  */
287
  function has_menu_slug() {
288
+ return $this->has_menu();
289
  }
290
 
291
  /**
383
  *
384
  * @return bool
385
  */
386
+ function is_main_settings_page() {
387
+ if ( $this->_menu_exists &&
388
+ ( fs_is_plugin_page( $this->_menu_slug ) || fs_is_plugin_page( $this->_plugin_slug ) )
389
+ ) {
390
+ /**
391
+ * Module has a settings menu and the context page is the main settings page, so assume it's in
392
+ * activation (doesn't really check if already opted-in/skipped or not).
393
+ *
394
+ * @since 1.2.2
395
+ */
396
+ return true;
397
+ }
398
+
399
+ return false;
400
  }
401
 
402
  #region Submenu Override
557
  * @author Vova Feldman (@svovaf)
558
  * @since 1.0.9
559
  *
560
+ * @return false|array[string]mixed
561
  */
562
  function remove_menu_item() {
563
  $this->_logger->entrance();
584
  *
585
  * @param callable $function
586
  *
587
+ * @return false|array[string]mixed
588
  */
589
  function override_menu_item( $function ) {
590
  $found_menu = $this->remove_menu_item();
607
  unset( $menu[ $found_menu['position'] ] );
608
 
609
  // Create new top-level menu action.
610
+ $hookname = self::add_page(
611
  $found_menu['menu'][3],
612
  $found_menu['menu'][0],
613
  'manage_options',
664
  }
665
 
666
  #endregion Top level menu Override
667
+
668
+ /**
669
+ * Add a top-level menu page.
670
+ *
671
+ * Note for WordPress.org Theme/Plugin reviewer:
672
+ *
673
+ * This is a replication of `add_menu_page()` to avoid Theme Check warning.
674
+ *
675
+ * Why?
676
+ * ====
677
+ * Freemius is an SDK for plugin and theme developers. Since the core
678
+ * of the SDK is relevant both for plugins and themes, for obvious reasons,
679
+ * we only develop and maintain one code base.
680
+ *
681
+ * This method will not run for wp.org themes (only plugins) since theme
682
+ * admin settings/options are now only allowed in the customizer.
683
+ *
684
+ * If you have any questions or need clarifications, please don't hesitate
685
+ * pinging me on slack, my username is @svovaf.
686
+ *
687
+ * @author Vova Feldman (@svovaf)
688
+ * @since 1.2.2
689
+ *
690
+ * @param string $page_title The text to be displayed in the title tags of the page when the menu is
691
+ * selected.
692
+ * @param string $menu_title The text to be used for the menu.
693
+ * @param string $capability The capability required for this menu to be displayed to the user.
694
+ * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu).
695
+ * @param callable|string $function The function to be called to output the content for this page.
696
+ * @param string $icon_url The URL to the icon to be used for this menu.
697
+ * * Pass a base64-encoded SVG using a data URI, which will be colored to
698
+ * match the color scheme. This should begin with
699
+ * 'data:image/svg+xml;base64,'.
700
+ * * Pass the name of a Dashicons helper class to use a font icon,
701
+ * e.g. 'dashicons-chart-pie'.
702
+ * * Pass 'none' to leave div.wp-menu-image empty so an icon can be added
703
+ * via CSS.
704
+ * @param int $position The position in the menu order this one should appear.
705
+ *
706
+ * @return string The resulting page's hook_suffix.
707
+ */
708
+ static function add_page(
709
+ $page_title,
710
+ $menu_title,
711
+ $capability,
712
+ $menu_slug,
713
+ $function = '',
714
+ $icon_url = '',
715
+ $position = null
716
+ ) {
717
+ $fn = 'add_menu' . '_page';
718
+
719
+ return $fn(
720
+ $page_title,
721
+ $menu_title,
722
+ $capability,
723
+ $menu_slug,
724
+ $function,
725
+ $icon_url,
726
+ $position
727
+ );
728
+ }
729
+
730
+ /**
731
+ * Add a submenu page.
732
+ *
733
+ * Note for WordPress.org Theme/Plugin reviewer:
734
+ *
735
+ * This is a replication of `add_submenu_page()` to avoid Theme Check warning.
736
+ *
737
+ * Why?
738
+ * ====
739
+ * Freemius is an SDK for plugin and theme developers. Since the core
740
+ * of the SDK is relevant both for plugins and themes, for obvious reasons,
741
+ * we only develop and maintain one code base.
742
+ *
743
+ * This method will not run for wp.org themes (only plugins) since theme
744
+ * admin settings/options are now only allowed in the customizer.
745
+ *
746
+ * If you have any questions or need clarifications, please don't hesitate
747
+ * pinging me on slack, my username is @svovaf.
748
+ *
749
+ * @author Vova Feldman (@svovaf)
750
+ * @since 1.2.2
751
+ *
752
+ * @param string $parent_slug The slug name for the parent menu (or the file name of a standard
753
+ * WordPress admin page).
754
+ * @param string $page_title The text to be displayed in the title tags of the page when the menu is
755
+ * selected.
756
+ * @param string $menu_title The text to be used for the menu.
757
+ * @param string $capability The capability required for this menu to be displayed to the user.
758
+ * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu).
759
+ * @param callable|string $function The function to be called to output the content for this page.
760
+ *
761
+ * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability
762
+ * required.
763
+ */
764
+ static function add_subpage(
765
+ $parent_slug,
766
+ $page_title,
767
+ $menu_title,
768
+ $capability,
769
+ $menu_slug,
770
+ $function = ''
771
+ ) {
772
+ $fn = 'add_submenu' . '_page';
773
+
774
+ return $fn( $parent_slug,
775
+ $page_title,
776
+ $menu_title,
777
+ $capability,
778
+ $menu_slug,
779
+ $function
780
+ );
781
+ }
782
  }
freemius/includes/managers/class-fs-admin-notice-manager.php CHANGED
@@ -1,313 +1,313 @@
1
- <?php
2
- /**
3
- * @package Freemius
4
- * @copyright Copyright (c) 2015, Freemius, Inc.
5
- * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
6
- * @since 1.0.7
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- class FS_Admin_Notice_Manager {
14
- /**
15
- * @var string
16
- */
17
- protected $_slug;
18
- /**
19
- * @var string
20
- */
21
- protected $_title;
22
- /**
23
- * @var array[]
24
- */
25
- private $_admin_messages = array();
26
- /**
27
- * @var FS_Key_Value_Storage
28
- */
29
- private $_sticky_storage;
30
- /**
31
- * @var FS_Plugin_Manager[]
32
- */
33
- private static $_instances = array();
34
- /**
35
- * @var FS_Logger
36
- */
37
- protected $_logger;
38
-
39
- /**
40
- * @param string $slug
41
- * @param string $title
42
- *
43
- * @return FS_Admin_Notice_Manager
44
- */
45
- static function instance( $slug, $title = '' ) {
46
- if ( ! isset( self::$_instances[ $slug ] ) ) {
47
- self::$_instances[ $slug ] = new FS_Admin_Notice_Manager( $slug, $title );
48
- }
49
-
50
- return self::$_instances[ $slug ];
51
- }
52
-
53
- protected function __construct( $slug, $title = '' ) {
54
- $this->_logger = FS_Logger::get_logger( WP_FS__SLUG . '_' . $slug . '_data', WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK );
55
-
56
- $this->_slug = $slug;
57
- $this->_title = ! empty( $title ) ? $title : '';
58
- $this->_sticky_storage = FS_Key_Value_Storage::instance( 'admin_notices', $this->_slug );
59
-
60
- if ( is_admin() ) {
61
- if ( 0 < count( $this->_sticky_storage ) ) {
62
- // If there are sticky notices for the current slug, add a callback
63
- // to the AJAX action that handles message dismiss.
64
- add_action( "wp_ajax_fs_dismiss_notice_action_{$slug}", array(
65
- &$this,
66
- 'dismiss_notice_ajax_callback'
67
- ) );
68
-
69
- foreach ( $this->_sticky_storage as $id => $msg ) {
70
- // Add admin notice.
71
- $this->add(
72
- $msg['message'],
73
- $msg['title'],
74
- $msg['type'],
75
- true,
76
- $msg['all'],
77
- $msg['id'],
78
- false
79
- );
80
- }
81
- }
82
- }
83
- }
84
-
85
- /**
86
- * Remove sticky message by ID.
87
- *
88
- * @author Vova Feldman (@svovaf)
89
- * @since 1.0.7
90
- *
91
- */
92
- function dismiss_notice_ajax_callback() {
93
- $this->_sticky_storage->remove( $_POST['message_id'] );
94
- wp_die();
95
- }
96
-
97
- /**
98
- * Rendered sticky message dismiss JavaScript.
99
- *
100
- * @author Vova Feldman (@svovaf)
101
- * @since 1.0.7
102
- */
103
- static function _add_sticky_dismiss_javascript() {
104
- $params = array();
105
- fs_require_once_template( 'sticky-admin-notice-js.php', $params );
106
- }
107
-
108
- private static $_added_sticky_javascript = false;
109
-
110
- /**
111
- * Hook to the admin_footer to add sticky message dismiss JavaScript handler.
112
- *
113
- * @author Vova Feldman (@svovaf)
114
- * @since 1.0.7
115
- */
116
- private static function has_sticky_messages() {
117
- if ( ! self::$_added_sticky_javascript ) {
118
- add_action( 'admin_footer', array( 'FS_Admin_Notice_Manager', '_add_sticky_dismiss_javascript' ) );
119
- }
120
- }
121
-
122
- /**
123
- * Handle admin_notices by printing the admin messages stacked in the queue.
124
- *
125
- * @author Vova Feldman (@svovaf)
126
- * @since 1.0.4
127
- *
128
- */
129
- function _admin_notices_hook() {
130
- $notice_type = 'admin_notices';
131
-
132
- if ( function_exists( 'current_user_can' ) &&
133
- ! current_user_can( 'manage_options' )
134
- ) {
135
- // Only show messages to admins.
136
- return;
137
- }
138
-
139
- if ( ! isset( $this->_admin_messages[ $notice_type ] ) || ! is_array( $this->_admin_messages[ $notice_type ] ) ) {
140
- return;
141
- }
142
-
143
- foreach ( $this->_admin_messages[ $notice_type ] as $id => $msg ) {
144
- fs_require_template( 'admin-notice.php', $msg );
145
-
146
- if ( $msg['sticky'] ) {
147
- self::has_sticky_messages();
148
- }
149
- }
150
- }
151
-
152
- /**
153
- * Handle all_admin_notices by printing the admin messages stacked in the queue.
154
- *
155
- * @author Vova Feldman (@svovaf)
156
- * @since 1.0.4
157
- *
158
- */
159
- function _all_admin_notices_hook() {
160
- $notice_type = 'all_admin_notices';
161
-
162
- if ( ! isset( $this->_admin_messages[ $notice_type ] ) || ! is_array( $this->_admin_messages[ $notice_type ] ) ) {
163
- return;
164
- }
165
-
166
- foreach ( $this->_admin_messages[ $notice_type ] as $id => $msg ) {
167
- fs_require_template( 'all-admin-notice.php', $msg );
168
- }
169
- }
170
-
171
- /**
172
- * Enqueue common stylesheet to style admin notice.
173
- *
174
- * @author Vova Feldman (@svovaf)
175
- * @since 1.0.7
176
- */
177
- function _enqueue_styles() {
178
- fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
179
- }
180
-
181
- /**
182
- * Add admin message to admin messages queue, and hook to admin_notices / all_admin_notices if not yet hooked.
183
- *
184
- * @author Vova Feldman (@svovaf)
185
- * @since 1.0.4
186
- *
187
- * @param string $message
188
- * @param string $title
189
- * @param string $type
190
- * @param bool $is_sticky
191
- * @param bool $all_admin
192
- * @param string $id Message ID
193
- * @param bool $store_if_sticky
194
- *
195
- * @uses add_action()
196
- */
197
- function add( $message, $title = '', $type = 'success', $is_sticky = false, $all_admin = false, $id = '', $store_if_sticky = true ) {
198
- $key = ( $all_admin ? 'all_admin_notices' : 'admin_notices' );
199
-
200
- if ( ! isset( $this->_admin_messages[ $key ] ) ) {
201
- $this->_admin_messages[ $key ] = array();
202
-
203
- add_action( $key, array( &$this, "_{$key}_hook" ) );
204
- add_action( 'admin_enqueue_scripts', array( &$this, '_enqueue_styles' ) );
205
-
206
- }
207
-
208
- if ( '' === $id ) {
209
- $id = md5( $title . ' ' . $message . ' ' . $type );
210
- }
211
-
212
- $message_object = array(
213
- 'message' => $message,
214
- 'title' => $title,
215
- 'type' => $type,
216
- 'sticky' => $is_sticky,
217
- 'id' => $id,
218
- 'all' => $all_admin,
219
- 'slug' => $this->_slug,
220
- 'plugin' => $this->_title,
221
- );
222
-
223
- if ( $is_sticky && $store_if_sticky ) {
224
- $this->_sticky_storage->{$id} = $message_object;
225
- }
226
-
227
- $this->_admin_messages[ $key ][ $id ] = $message_object;
228
- }
229
-
230
- /**
231
- * @author Vova Feldman (@svovaf)
232
- * @since 1.0.7
233
- *
234
- * @param string|string[] $ids
235
- */
236
- function remove_sticky( $ids ) {
237
- if ( ! is_array( $ids ) ) {
238
- $ids = array( $ids );
239
- }
240
-
241
- foreach ( $ids as $id ) {
242
- // Remove from sticky storage.
243
- $this->_sticky_storage->remove( $id );
244
-
245
- // Remove from current admin messages.
246
- if ( isset( $this->_admin_messages['all_admin_notices'] ) && isset( $this->_admin_messages['all_admin_notices'][ $id ] ) ) {
247
- unset( $this->_admin_messages['all_admin_notices'][ $id ] );
248
- }
249
- if ( isset( $this->_admin_messages['admin_notices'] ) && isset( $this->_admin_messages['admin_notices'][ $id ] ) ) {
250
- unset( $this->_admin_messages['admin_notices'][ $id ] );
251
- }
252
- }
253
- }
254
-
255
- /**
256
- * Check if sticky message exists by id.
257
- *
258
- * @author Vova Feldman (@svovaf)
259
- * @since 1.0.9
260
- *
261
- * @param $id
262
- *
263
- * @return bool
264
- */
265
- function has_sticky( $id ) {
266
- return isset( $this->_sticky_storage[ $id ] );
267
- }
268
-
269
- /**
270
- * Adds sticky admin notification.
271
- *
272
- * @author Vova Feldman (@svovaf)
273
- * @since 1.0.7
274
- *
275
- * @param string $message
276
- * @param string $id Message ID
277
- * @param string $title
278
- * @param string $type
279
- * @param bool $all_admin
280
- */
281
- function add_sticky( $message, $id, $title = '', $type = 'success', $all_admin = false ) {
282
- $message = fs_apply_filter( $this->_slug, "sticky_message_{$id}", $message );
283
- $title = fs_apply_filter( $this->_slug, "sticky_title_{$id}", $title );
284
-
285
- $this->add( $message, $title, $type, true, $all_admin, $id );
286
- }
287
-
288
- /**
289
- * Clear all sticky messages.
290
- *
291
- * @author Vova Feldman (@svovaf)
292
- * @since 1.0.8
293
- */
294
- function clear_all_sticky() {
295
- $this->_sticky_storage->clear_all();
296
- }
297
-
298
- /**
299
- * Add admin message to all admin messages queue, and hook to all_admin_notices if not yet hooked.
300
- *
301
- * @author Vova Feldman (@svovaf)
302
- * @since 1.0.4
303
- *
304
- * @param string $message
305
- * @param string $title
306
- * @param string $type
307
- * @param bool $is_sticky
308
- * @param string $id Message ID
309
- */
310
- function add_all( $message, $title = '', $type = 'success', $is_sticky = false, $id = '' ) {
311
- $this->add( $message, $title, $type, $is_sticky, true, $id );
312
- }
313
  }
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2015, Freemius, Inc.
5
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
6
+ * @since 1.0.7
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ class FS_Admin_Notice_Manager {
14
+ /**
15
+ * @var string
16
+ */
17
+ protected $_slug;
18
+ /**
19
+ * @var string
20
+ */
21
+ protected $_title;
22
+ /**
23
+ * @var array[]
24
+ */
25
+ private $_admin_messages = array();
26
+ /**
27
+ * @var FS_Key_Value_Storage
28
+ */
29
+ private $_sticky_storage;
30
+ /**
31
+ * @var FS_Plugin_Manager[]
32
+ */
33
+ private static $_instances = array();
34
+ /**
35
+ * @var FS_Logger
36
+ */
37
+ protected $_logger;
38
+
39
+ /**
40
+ * @param string $slug
41
+ * @param string $title
42
+ *
43
+ * @return FS_Admin_Notice_Manager
44
+ */
45
+ static function instance( $slug, $title = '' ) {
46
+ if ( ! isset( self::$_instances[ $slug ] ) ) {
47
+ self::$_instances[ $slug ] = new FS_Admin_Notice_Manager( $slug, $title );
48
+ }
49
+
50
+ return self::$_instances[ $slug ];
51
+ }
52
+
53
+ protected function __construct( $slug, $title = '' ) {
54
+ $this->_logger = FS_Logger::get_logger( WP_FS__SLUG . '_' . $slug . '_data', WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK );
55
+
56
+ $this->_slug = $slug;
57
+ $this->_title = ! empty( $title ) ? $title : '';
58
+ $this->_sticky_storage = FS_Key_Value_Storage::instance( 'admin_notices', $this->_slug );
59
+
60
+ if ( is_admin() ) {
61
+ if ( 0 < count( $this->_sticky_storage ) ) {
62
+ // If there are sticky notices for the current slug, add a callback
63
+ // to the AJAX action that handles message dismiss.
64
+ add_action( "wp_ajax_fs_dismiss_notice_action_{$slug}", array(
65
+ &$this,
66
+ 'dismiss_notice_ajax_callback'
67
+ ) );
68
+
69
+ foreach ( $this->_sticky_storage as $id => $msg ) {
70
+ // Add admin notice.
71
+ $this->add(
72
+ $msg['message'],
73
+ $msg['title'],
74
+ $msg['type'],
75
+ true,
76
+ $msg['all'],
77
+ $msg['id'],
78
+ false
79
+ );
80
+ }
81
+ }
82
+ }
83
+ }
84
+
85
+ /**
86
+ * Remove sticky message by ID.
87
+ *
88
+ * @author Vova Feldman (@svovaf)
89
+ * @since 1.0.7
90
+ *
91
+ */
92
+ function dismiss_notice_ajax_callback() {
93
+ $this->_sticky_storage->remove( $_POST['message_id'] );
94
+ wp_die();
95
+ }
96
+
97
+ /**
98
+ * Rendered sticky message dismiss JavaScript.
99
+ *
100
+ * @author Vova Feldman (@svovaf)
101
+ * @since 1.0.7
102
+ */
103
+ static function _add_sticky_dismiss_javascript() {
104
+ $params = array();
105
+ fs_require_once_template( 'sticky-admin-notice-js.php', $params );
106
+ }
107
+
108
+ private static $_added_sticky_javascript = false;
109
+
110
+ /**
111
+ * Hook to the admin_footer to add sticky message dismiss JavaScript handler.
112
+ *
113
+ * @author Vova Feldman (@svovaf)
114
+ * @since 1.0.7
115
+ */
116
+ private static function has_sticky_messages() {
117
+ if ( ! self::$_added_sticky_javascript ) {
118
+ add_action( 'admin_footer', array( 'FS_Admin_Notice_Manager', '_add_sticky_dismiss_javascript' ) );
119
+ }
120
+ }
121
+
122
+ /**
123
+ * Handle admin_notices by printing the admin messages stacked in the queue.
124
+ *
125
+ * @author Vova Feldman (@svovaf)
126
+ * @since 1.0.4
127
+ *
128
+ */
129
+ function _admin_notices_hook() {
130
+ $notice_type = 'admin_notices';
131
+
132
+ if ( function_exists( 'current_user_can' ) &&
133
+ ! current_user_can( 'manage_options' )
134
+ ) {
135
+ // Only show messages to admins.
136
+ return;
137
+ }
138
+
139
+ if ( ! isset( $this->_admin_messages[ $notice_type ] ) || ! is_array( $this->_admin_messages[ $notice_type ] ) ) {
140
+ return;
141
+ }
142
+
143
+ foreach ( $this->_admin_messages[ $notice_type ] as $id => $msg ) {
144
+ fs_require_template( 'admin-notice.php', $msg );
145
+
146
+ if ( $msg['sticky'] ) {
147
+ self::has_sticky_messages();
148
+ }
149
+ }
150
+ }
151
+
152
+ /**
153
+ * Handle all_admin_notices by printing the admin messages stacked in the queue.
154
+ *
155
+ * @author Vova Feldman (@svovaf)
156
+ * @since 1.0.4
157
+ *
158
+ */
159
+ function _all_admin_notices_hook() {
160
+ $notice_type = 'all_admin_notices';
161
+
162
+ if ( ! isset( $this->_admin_messages[ $notice_type ] ) || ! is_array( $this->_admin_messages[ $notice_type ] ) ) {
163
+ return;
164
+ }
165
+
166
+ foreach ( $this->_admin_messages[ $notice_type ] as $id => $msg ) {
167
+ fs_require_template( 'all-admin-notice.php', $msg );
168
+ }
169
+ }
170
+
171
+ /**
172
+ * Enqueue common stylesheet to style admin notice.
173
+ *
174
+ * @author Vova Feldman (@svovaf)
175
+ * @since 1.0.7
176
+ */
177
+ function _enqueue_styles() {
178
+ fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
179
+ }
180
+
181
+ /**
182
+ * Add admin message to admin messages queue, and hook to admin_notices / all_admin_notices if not yet hooked.
183
+ *
184
+ * @author Vova Feldman (@svovaf)
185
+ * @since 1.0.4
186
+ *
187
+ * @param string $message
188
+ * @param string $title
189
+ * @param string $type
190
+ * @param bool $is_sticky
191
+ * @param bool $all_admin
192
+ * @param string $id Message ID
193
+ * @param bool $store_if_sticky
194
+ *
195
+ * @uses add_action()
196
+ */
197
+ function add( $message, $title = '', $type = 'success', $is_sticky = false, $all_admin = false, $id = '', $store_if_sticky = true ) {
198
+ $key = ( $all_admin ? 'all_admin_notices' : 'admin_notices' );
199
+
200
+ if ( ! isset( $this->_admin_messages[ $key ] ) ) {
201
+ $this->_admin_messages[ $key ] = array();
202
+
203
+ add_action( $key, array( &$this, "_{$key}_hook" ) );
204
+ add_action( 'admin_enqueue_scripts', array( &$this, '_enqueue_styles' ) );
205
+
206
+ }
207
+
208
+ if ( '' === $id ) {
209
+ $id = md5( $title . ' ' . $message . ' ' . $type );
210
+ }
211
+
212
+ $message_object = array(
213
+ 'message' => $message,
214
+ 'title' => $title,
215
+ 'type' => $type,
216
+ 'sticky' => $is_sticky,
217
+ 'id' => $id,
218
+ 'all' => $all_admin,
219
+ 'slug' => $this->_slug,
220
+ 'plugin' => $this->_title,
221
+ );
222
+
223
+ if ( $is_sticky && $store_if_sticky ) {
224
+ $this->_sticky_storage->{$id} = $message_object;
225
+ }
226
+
227
+ $this->_admin_messages[ $key ][ $id ] = $message_object;
228
+ }
229
+
230
+ /**
231
+ * @author Vova Feldman (@svovaf)
232
+ * @since 1.0.7
233
+ *
234
+ * @param string|string[] $ids
235
+ */
236
+ function remove_sticky( $ids ) {
237
+ if ( ! is_array( $ids ) ) {
238
+ $ids = array( $ids );
239
+ }
240
+
241
+ foreach ( $ids as $id ) {
242
+ // Remove from sticky storage.
243
+ $this->_sticky_storage->remove( $id );
244
+
245
+ // Remove from current admin messages.
246
+ if ( isset( $this->_admin_messages['all_admin_notices'] ) && isset( $this->_admin_messages['all_admin_notices'][ $id ] ) ) {
247
+ unset( $this->_admin_messages['all_admin_notices'][ $id ] );
248
+ }
249
+ if ( isset( $this->_admin_messages['admin_notices'] ) && isset( $this->_admin_messages['admin_notices'][ $id ] ) ) {
250
+ unset( $this->_admin_messages['admin_notices'][ $id ] );
251
+ }
252
+ }
253
+ }
254
+
255
+ /**
256
+ * Check if sticky message exists by id.
257
+ *
258
+ * @author Vova Feldman (@svovaf)
259
+ * @since 1.0.9
260
+ *
261
+ * @param $id
262
+ *
263
+ * @return bool
264
+ */
265
+ function has_sticky( $id ) {
266
+ return isset( $this->_sticky_storage[ $id ] );
267
+ }
268
+
269
+ /**
270
+ * Adds sticky admin notification.
271
+ *
272
+ * @author Vova Feldman (@svovaf)
273
+ * @since 1.0.7
274
+ *
275
+ * @param string $message
276
+ * @param string $id Message ID
277
+ * @param string $title
278
+ * @param string $type
279
+ * @param bool $all_admin
280
+ */
281
+ function add_sticky( $message, $id, $title = '', $type = 'success', $all_admin = false ) {
282
+ $message = fs_apply_filter( $this->_slug, "sticky_message_{$id}", $message );
283
+ $title = fs_apply_filter( $this->_slug, "sticky_title_{$id}", $title );
284
+
285
+ $this->add( $message, $title, $type, true, $all_admin, $id );
286
+ }
287
+
288
+ /**
289
+ * Clear all sticky messages.
290
+ *
291
+ * @author Vova Feldman (@svovaf)
292
+ * @since 1.0.8
293
+ */
294
+ function clear_all_sticky() {
295
+ $this->_sticky_storage->clear_all();
296
+ }
297
+
298
+ /**
299
+ * Add admin message to all admin messages queue, and hook to all_admin_notices if not yet hooked.
300
+ *
301
+ * @author Vova Feldman (@svovaf)
302
+ * @since 1.0.4
303
+ *
304
+ * @param string $message
305
+ * @param string $title
306
+ * @param string $type
307
+ * @param bool $is_sticky
308
+ * @param string $id Message ID
309
+ */
310
+ function add_all( $message, $title = '', $type = 'success', $is_sticky = false, $id = '' ) {
311
+ $this->add( $message, $title, $type, $is_sticky, true, $id );
312
+ }
313
  }
freemius/includes/sdk/Exceptions/ArgumentNotExistException.php CHANGED
@@ -1,9 +1,9 @@
1
- <?php
2
- if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
3
- exit;
4
- }
5
-
6
- if ( ! class_exists( 'Freemius_ArgumentNotExistException' ) ) {
7
- class Freemius_ArgumentNotExistException extends Freemius_InvalidArgumentException {
8
- }
9
  }
1
+ <?php
2
+ if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
3
+ exit;
4
+ }
5
+
6
+ if ( ! class_exists( 'Freemius_ArgumentNotExistException' ) ) {
7
+ class Freemius_ArgumentNotExistException extends Freemius_InvalidArgumentException {
8
+ }
9
  }
freemius/includes/sdk/Exceptions/EmptyArgumentException.php CHANGED
@@ -1,9 +1,9 @@
1
- <?php
2
- if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
3
- exit;
4
- }
5
-
6
- if ( ! class_exists( 'Freemius_EmptyArgumentException' ) ) {
7
- class Freemius_EmptyArgumentException extends Freemius_InvalidArgumentException {
8
- }
9
  }
1
+ <?php
2
+ if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
3
+ exit;
4
+ }
5
+
6
+ if ( ! class_exists( 'Freemius_EmptyArgumentException' ) ) {
7
+ class Freemius_EmptyArgumentException extends Freemius_InvalidArgumentException {
8
+ }
9
  }
freemius/includes/sdk/Exceptions/Exception.php CHANGED
@@ -1,74 +1,74 @@
1
- <?php
2
- if ( ! class_exists( 'Freemius_Exception' ) ) {
3
- /**
4
- * Thrown when an API call returns an exception.
5
- *
6
- */
7
- class Freemius_Exception extends Exception {
8
- protected $_result;
9
- protected $_type;
10
- protected $_code;
11
-
12
- /**
13
- * Make a new API Exception with the given result.
14
- *
15
- * @param array $result The result from the API server.
16
- */
17
- public function __construct( $result ) {
18
- $this->_result = $result;
19
-
20
- $code = 0;
21
- $message = 'Unknown error, please check GetResult().';
22
- $type = '';
23
-
24
- if ( isset( $result['error'] ) && is_array( $result['error'] ) ) {
25
- if ( isset( $result['error']['code'] ) ) {
26
- $code = $result['error']['code'];
27
- }
28
- if ( isset( $result['error']['message'] ) ) {
29
- $message = $result['error']['message'];
30
- }
31
- if ( isset( $result['error']['type'] ) ) {
32
- $type = $result['error']['type'];
33
- }
34
- }
35
-
36
- $this->_type = $type;
37
- $this->_code = $code;
38
-
39
- parent::__construct( $message, is_numeric( $code ) ? $code : 0 );
40
- }
41
-
42
- /**
43
- * Return the associated result object returned by the API server.
44
- *
45
- * @return array The result from the API server
46
- */
47
- public function getResult() {
48
- return $this->_result;
49
- }
50
-
51
- public function getStringCode() {
52
- return $this->_code;
53
- }
54
-
55
- public function getType() {
56
- return $this->_type;
57
- }
58
-
59
- /**
60
- * To make debugging easier.
61
- *
62
- * @return string The string representation of the error
63
- */
64
- public function __toString() {
65
- $str = $this->getType() . ': ';
66
-
67
- if ( $this->code != 0 ) {
68
- $str .= $this->getStringCode() . ': ';
69
- }
70
-
71
- return $str . $this->getMessage();
72
- }
73
- }
74
  }
1
+ <?php
2
+ if ( ! class_exists( 'Freemius_Exception' ) ) {
3
+ /**
4
+ * Thrown when an API call returns an exception.
5
+ *
6
+ */
7
+ class Freemius_Exception extends Exception {
8
+ protected $_result;
9
+ protected $_type;
10
+ protected $_code;
11
+
12
+ /**
13
+ * Make a new API Exception with the given result.
14
+ *
15
+ * @param array $result The result from the API server.
16
+ */
17
+ public function __construct( $result ) {
18
+ $this->_result = $result;
19
+
20
+ $code = 0;
21
+ $message = 'Unknown error, please check GetResult().';
22
+ $type = '';
23
+
24
+ if ( isset( $result['error'] ) && is_array( $result['error'] ) ) {
25
+ if ( isset( $result['error']['code'] ) ) {
26
+ $code = $result['error']['code'];
27
+ }
28
+ if ( isset( $result['error']['message'] ) ) {
29
+ $message = $result['error']['message'];
30
+ }
31
+ if ( isset( $result['error']['type'] ) ) {
32
+ $type = $result['error']['type'];
33
+ }
34
+ }
35
+
36
+ $this->_type = $type;
37
+ $this->_code = $code;
38
+
39
+ parent::__construct( $message, is_numeric( $code ) ? $code : 0 );
40
+ }
41
+
42
+ /**
43
+ * Return the associated result object returned by the API server.
44
+ *
45
+ * @return array The result from the API server
46
+ */
47
+ public function getResult() {
48
+ return $this->_result;
49
+ }
50
+
51
+ public function getStringCode() {
52
+ return $this->_code;
53
+ }
54
+
55
+ public function getType() {
56
+ return $this->_type;
57
+ }
58
+
59
+ /**
60
+ * To make debugging easier.
61
+ *
62
+ * @return string The string representation of the error
63
+ */
64
+ public function __toString() {
65
+ $str = $this->getType() . ': ';
66
+
67
+ if ( $this->code != 0 ) {
68
+ $str .= $this->getStringCode() . ': ';
69
+ }
70
+
71
+ return $str . $this->getMessage();
72
+ }
73
+ }
74
  }
freemius/includes/sdk/Exceptions/InvalidArgumentException.php CHANGED
@@ -1,8 +1,8 @@
1
- <?php
2
- if ( ! class_exists( 'Freemius_Exception' ) ) {
3
- exit;
4
- }
5
-
6
- if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
7
- class Freemius_InvalidArgumentException extends Freemius_Exception { }
8
  }
1
+ <?php
2
+ if ( ! class_exists( 'Freemius_Exception' ) ) {
3
+ exit;
4
+ }
5
+
6
+ if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
7
+ class Freemius_InvalidArgumentException extends Freemius_Exception { }
8
  }
freemius/includes/sdk/Exceptions/OAuthException.php CHANGED
@@ -1,12 +1,12 @@
1
- <?php
2
- if ( ! class_exists( 'Freemius_Exception' ) ) {
3
- exit;
4
- }
5
-
6
- if ( ! class_exists( 'Freemius_OAuthException' ) ) {
7
- class Freemius_OAuthException extends Freemius_Exception {
8
- public function __construct( $pResult ) {
9
- parent::__construct( $pResult );
10
- }
11
- }
12
  }
1
+ <?php
2
+ if ( ! class_exists( 'Freemius_Exception' ) ) {
3
+ exit;
4
+ }
5
+
6
+ if ( ! class_exists( 'Freemius_OAuthException' ) ) {
7
+ class Freemius_OAuthException extends Freemius_Exception {
8
+ public function __construct( $pResult ) {
9
+ parent::__construct( $pResult );
10
+ }
11
+ }
12
  }
freemius/includes/sdk/Freemius.php CHANGED
@@ -1,583 +1,627 @@
1
- <?php
2
- /**
3
- * Copyright 2014 Freemius, Inc.
4
- *
5
- * Licensed under the GPL v2 (the "License"); you may
6
- * not use this file except in compliance with the License. You may obtain
7
- * a copy of the License at
8
- *
9
- * http://choosealicense.com/licenses/gpl-v2/
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14
- * License for the specific language governing permissions and limitations
15
- * under the License.
16
- */
17
-
18
- require_once dirname( __FILE__ ) . '/FreemiusBase.php';
19
-
20
- if ( ! defined( 'FS_SDK__USER_AGENT' ) ) {
21
- define( 'FS_SDK__USER_AGENT', 'fs-php-' . Freemius_Api_Base::VERSION );
22
- }
23
-
24
- if ( ! defined( 'FS_SDK__SIMULATE_NO_CURL' ) ) {
25
- define( 'FS_SDK__SIMULATE_NO_CURL', false );
26
- }
27
-
28
- if ( ! defined( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE' ) ) {
29
- define( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE', false );
30
- }
31
-
32
- if ( ! defined( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL' ) ) {
33
- define( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL', false );
34
- }
35
-
36
- if ( ! defined( 'FS_SDK__HAS_CURL' ) ) {
37
- define( 'FS_SDK__HAS_CURL', ! FS_SDK__SIMULATE_NO_CURL && function_exists( 'curl_version' ) );
38
- }
39
-
40
- if ( ! FS_SDK__HAS_CURL ) {
41
- $curl_version = array( 'version' => '7.0.0' );
42
- } else {
43
- $curl_version = curl_version();
44
- }
45
-
46
- if ( ! defined( 'FS_API__PROTOCOL' ) ) {
47
- define( 'FS_API__PROTOCOL', version_compare( $curl_version['version'], '7.37', '>=' ) ? 'https' : 'http' );
48
- }
49
-
50
- if ( ! defined( 'FS_API__LOGGER_ON' ) ) {
51
- define( 'FS_API__LOGGER_ON', false );
52
- }
53
-
54
- if ( ! defined( 'FS_API__ADDRESS' ) ) {
55
- define( 'FS_API__ADDRESS', '://api.freemius.com' );
56
- }
57
- if ( ! defined( 'FS_API__SANDBOX_ADDRESS' ) ) {
58
- define( 'FS_API__SANDBOX_ADDRESS', '://sandbox-api.freemius.com' );
59
- }
60
-
61
- if ( class_exists( 'Freemius_Api' ) ) {
62
- return;
63
- }
64
-
65
- class Freemius_Api extends Freemius_Api_Base {
66
- private static $_logger = array();
67
-
68
- /**
69
- * @param string $pScope 'app', 'developer', 'user' or 'install'.
70
- * @param number $pID Element's id.
71
- * @param string $pPublic Public key.
72
- * @param string|bool $pSecret Element's secret key.
73
- * @param bool $pSandbox Whether or not to run API in sandbox mode.
74
- */
75
- public function __construct( $pScope, $pID, $pPublic, $pSecret = false, $pSandbox = false ) {
76
- // If secret key not provided, use public key encryption.
77
- if ( is_bool( $pSecret ) ) {
78
- $pSecret = $pPublic;
79
- }
80
-
81
- parent::Init( $pScope, $pID, $pPublic, $pSecret, $pSandbox );
82
- }
83
-
84
- public static function GetUrl( $pCanonizedPath = '', $pIsSandbox = false ) {
85
- $address = ( $pIsSandbox ? FS_API__SANDBOX_ADDRESS : FS_API__ADDRESS );
86
-
87
- if ( ':' === $address[0] ) {
88
- $address = self::$_protocol . $address;
89
- }
90
-
91
- return $address . $pCanonizedPath;
92
- }
93
-
94
- #region Servers Clock Diff ------------------------------------------------------
95
-
96
- /**
97
- * @var int Clock diff in seconds between current server to API server.
98
- */
99
- private static $_clock_diff = 0;
100
-
101
- /**
102
- * Set clock diff for all API calls.
103
- *
104
- * @since 1.0.3
105
- *
106
- * @param $pSeconds
107
- */
108
- public static function SetClockDiff( $pSeconds ) {
109
- self::$_clock_diff = $pSeconds;
110
- }
111
-
112
- /**
113
- * Find clock diff between current server to API server.
114
- *
115
- * @since 1.0.2
116
- * @return int Clock diff in seconds.
117
- */
118
- public static function FindClockDiff() {
119
- $time = time();
120
- $pong = self::Ping();
121
-
122
- return ( $time - strtotime( $pong->timestamp ) );
123
- }
124
-
125
- #endregion Servers Clock Diff ------------------------------------------------------
126
-
127
- /**
128
- * @var string http or https
129
- */
130
- private static $_protocol = FS_API__PROTOCOL;
131
-
132
- /**
133
- * Set API connection protocol.
134
- *
135
- * @since 1.0.4
136
- */
137
- public static function SetHttp() {
138
- self::$_protocol = 'http';
139
- }
140
-
141
- /**
142
- * @since 1.0.4
143
- *
144
- * @return bool
145
- */
146
- public static function IsHttps() {
147
- return ( 'https' === self::$_protocol );
148
- }
149
-
150
- /**
151
- * Sign request with the following HTTP headers:
152
- * Content-MD5: MD5(HTTP Request body)
153
- * Date: Current date (i.e Sat, 14 Feb 2015 20:24:46 +0000)
154
- * Authorization: FS {scope_entity_id}:{scope_entity_public_key}:base64encode(sha256(string_to_sign,
155
- * {scope_entity_secret_key}))
156
- *
157
- * @param string $pResourceUrl
158
- * @param array $pCurlOptions
159
- *
160
- * @return array
161
- */
162
- function SignRequest( $pResourceUrl, $pCurlOptions ) {
163
- $eol = "\n";
164
- $content_md5 = '';
165
- $now = ( time() - self::$_clock_diff );
166
- $date = date( 'r', $now );
167
- $content_type = '';
168
-
169
- if ( isset( $pCurlOptions[ CURLOPT_POST ] ) && 0 < $pCurlOptions[ CURLOPT_POST ] ) {
170
- $content_md5 = md5( $pCurlOptions[ CURLOPT_POSTFIELDS ] );
171
- $pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Content-MD5: ' . $content_md5;
172
- $content_type = 'application/json';
173
- }
174
-
175
- $pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Date: ' . $date;
176
-
177
- $string_to_sign = implode( $eol, array(
178
- $pCurlOptions[ CURLOPT_CUSTOMREQUEST ],
179
- $content_md5,
180
- $content_type,
181
- $date,
182
- $pResourceUrl
183
- ) );
184
-
185
- // If secret and public keys are identical, it means that
186
- // the signature uses public key hash encoding.
187
- $auth_type = ( $this->_secret !== $this->_public ) ? 'FS' : 'FSP';
188
-
189
- // Add authorization header.
190
- $pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Authorization: ' .
191
- $auth_type . ' ' .
192
- $this->_id . ':' .
193
- $this->_public . ':' .
194
- self::Base64UrlEncode(
195
- hash_hmac( 'sha256', $string_to_sign, $this->_secret )
196
- );
197
-
198
- return $pCurlOptions;
199
- }
200
-
201
- /**
202
- * Get API request URL signed via query string.
203
- *
204
- * @param string $pPath
205
- *
206
- * @throws Freemius_Exception
207
- *
208
- * @return string
209
- */
210
- function GetSignedUrl( $pPath ) {
211
- $resource = explode( '?', $this->CanonizePath( $pPath ) );
212
- $pResourceUrl = $resource[0];
213
-
214
- $eol = "\n";
215
- $content_md5 = '';
216
- $content_type = '';
217
- $now = ( time() - self::$_clock_diff );
218
- $date = date( 'r', $now );
219
-
220
- $string_to_sign = implode( $eol, array(
221
- 'GET',
222
- $content_md5,
223
- $content_type,
224
- $date,
225
- $pResourceUrl
226
- ) );
227
-
228
- // If secret and public keys are identical, it means that
229
- // the signature uses public key hash encoding.
230
- $auth_type = ( $this->_secret !== $this->_public ) ? 'FS' : 'FSP';
231
-
232
- return Freemius_Api::GetUrl(
233
- $pResourceUrl . '?' .
234
- ( 1 < count( $resource ) && ! empty( $resource[1] ) ? $resource[1] . '&' : '' ) .
235
- http_build_query( array(
236
- 'auth_date' => $date,
237
- 'authorization' => $auth_type . ' ' . $this->_id . ':' .
238
- $this->_public . ':' .
239
- self::Base64UrlEncode( hash_hmac(
240
- 'sha256', $string_to_sign, $this->_secret
241
- ) )
242
- ) ), $this->_isSandbox );
243
- }
244
-
245
- /**
246
- * @param resource $pCurlHandler
247
- * @param array $pCurlOptions
248
- *
249
- * @return mixed
250
- */
251
- private static function ExecuteRequest( &$pCurlHandler, &$pCurlOptions ) {
252
- $start = microtime( true );
253
-
254
- $result = curl_exec( $pCurlHandler );
255
-
256
- if ( FS_API__LOGGER_ON ) {
257
- $end = microtime( true );
258
-
259
- $has_body = ( isset( $pCurlOptions[ CURLOPT_POST ] ) && 0 < $pCurlOptions[ CURLOPT_POST ] );
260
-
261
- self::$_logger[] = array(
262
- 'id' => count( self::$_logger ),
263
- 'start' => $start,
264
- 'end' => $end,
265
- 'total' => ( $end - $start ),
266
- 'method' => $pCurlOptions[ CURLOPT_CUSTOMREQUEST ],
267
- 'path' => $pCurlOptions[ CURLOPT_URL ],
268
- 'body' => $has_body ? $pCurlOptions[ CURLOPT_POSTFIELDS ] : null,
269
- 'result' => $result,
270
- 'code' => curl_getinfo( $pCurlHandler, CURLINFO_HTTP_CODE ),
271
- 'backtrace' => debug_backtrace(),
272
- );
273
- }
274
-
275
- return $result;
276
- }
277
-
278
- /**
279
- * @return array
280
- */
281
- static function GetLogger() {
282
- return self::$_logger;
283
- }
284
-
285
- /**
286
- * @param string $pCanonizedPath
287
- * @param string $pMethod
288
- * @param array $pParams
289
- * @param null|resource $pCurlHandler
290
- * @param bool $pIsSandbox
291
- * @param null|callable $pBeforeExecutionFunction
292
- *
293
- * @return object[]|object|null
294
- *
295
- * @throws \Freemius_Exception
296
- */
297
- private static function MakeStaticRequest(
298
- $pCanonizedPath,
299
- $pMethod = 'GET',
300
- $pParams = array(),
301
- $pCurlHandler = null,
302
- $pIsSandbox = false,
303
- $pBeforeExecutionFunction = null
304
- ) {
305
- if ( ! FS_SDK__HAS_CURL ) {
306
- self::ThrowNoCurlException();
307
- }
308
-
309
- // Connectivity errors simulation.
310
- if ( FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE ) {
311
- self::ThrowCloudFlareDDoSException();
312
- } else if ( FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL ) {
313
- self::ThrowSquidAclException();
314
- }
315
-
316
- if ( ! $pCurlHandler ) {
317
- $pCurlHandler = curl_init();
318
- }
319
-
320
- $opts = array(
321
- CURLOPT_CONNECTTIMEOUT => 10,
322
- CURLOPT_RETURNTRANSFER => true,
323
- CURLOPT_TIMEOUT => 60,
324
- CURLOPT_USERAGENT => FS_SDK__USER_AGENT,
325
- CURLOPT_HTTPHEADER => array(),
326
- );
327
-
328
- if ( 'POST' === $pMethod || 'PUT' === $pMethod ) {
329
- if ( is_array( $pParams ) && 0 < count( $pParams ) ) {
330
- $opts[ CURLOPT_HTTPHEADER ][] = 'Content-Type: application/json';
331
- $opts[ CURLOPT_POST ] = count( $pParams );
332
- $opts[ CURLOPT_POSTFIELDS ] = json_encode( $pParams );
333
- }
334
-
335
- $opts[ CURLOPT_RETURNTRANSFER ] = true;
336
- }
337
-
338
- $request_url = self::GetUrl( $pCanonizedPath, $pIsSandbox );
339
-
340
- $opts[ CURLOPT_URL ] = $request_url;
341
- $opts[ CURLOPT_CUSTOMREQUEST ] = $pMethod;
342
-
343
- $resource = explode( '?', $pCanonizedPath );
344
-
345
- // disable the 'Expect: 100-continue' behaviour. This causes CURL to wait
346
- // for 2 seconds if the server does not support this header.
347
- $opts[ CURLOPT_HTTPHEADER ][] = 'Expect:';
348
-
349
- if ( 'https' === substr( strtolower( $request_url ), 0, 5 ) ) {
350
- $opts[ CURLOPT_SSL_VERIFYHOST ] = false;
351
- $opts[ CURLOPT_SSL_VERIFYPEER ] = false;
352
- }
353
-
354
- if ( false !== $pBeforeExecutionFunction &&
355
- is_callable( $pBeforeExecutionFunction )
356
- ) {
357
- $opts = call_user_func( $pBeforeExecutionFunction, $resource[0], $opts );
358
- }
359
-
360
- curl_setopt_array( $pCurlHandler, $opts );
361
- $result = self::ExecuteRequest( $pCurlHandler, $opts );
362
-
363
- /*if (curl_errno($ch) == 60) // CURLE_SSL_CACERT
364
- {
365
- self::errorLog('Invalid or no certificate authority found, using bundled information');
366
- curl_setopt($ch, CURLOPT_CAINFO,
367
- dirname(__FILE__) . '/fb_ca_chain_bundle.crt');
368
- $result = curl_exec($ch);
369
- }*/
370
-
371
- // With dual stacked DNS responses, it's possible for a server to
372
- // have IPv6 enabled but not have IPv6 connectivity. If this is
373
- // the case, curl will try IPv4 first and if that fails, then it will
374
- // fall back to IPv6 and the error EHOSTUNREACH is returned by the
375
- // operating system.
376
- if ( false === $result && empty( $opts[ CURLOPT_IPRESOLVE ] ) ) {
377
- $matches = array();
378
- $regex = '/Failed to connect to ([^:].*): Network is unreachable/';
379
- if ( preg_match( $regex, curl_error( $pCurlHandler ), $matches ) ) {
380
- if ( strlen( @inet_pton( $matches[1] ) ) === 16 ) {
381
- // self::errorLog('Invalid IPv6 configuration on server, Please disable or get native IPv6 on your server.');
382
- $opts[ CURLOPT_IPRESOLVE ] = CURL_IPRESOLVE_V4;
383
- curl_setopt( $pCurlHandler, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
384
- $result = self::ExecuteRequest( $pCurlHandler, $opts );
385
- }
386
- }
387
- }
388
-
389
- if ( $result === false ) {
390
- self::ThrowCurlException( $pCurlHandler );
391
- }
392
-
393
- curl_close( $pCurlHandler );
394
-
395
- if ( empty( $result ) ) {
396
- return null;
397
- }
398
-
399
- $decoded = json_decode( $result );
400
-
401
- if ( is_null( $decoded ) ) {
402
- if ( preg_match( '/Please turn JavaScript on/i', $result ) &&
403
- preg_match( '/text\/javascript/', $result )
404
- ) {
405
- self::ThrowCloudFlareDDoSException( $result );
406
- } else if ( preg_match( '/Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect./', $result ) &&
407
- preg_match( '/squid/', $result )
408
- ) {
409
- self::ThrowSquidAclException( $result );
410
- } else {
411
- $decoded = (object) array(
412
- 'error' => (object) array(
413
- 'type' => 'Unknown',
414
- 'message' => $result,
415
- 'code' => 'unknown',
416
- 'http' => 402
417
- )
418
- );
419
- }
420
- }
421
-
422
- return $decoded;
423
- }
424
-
425
-
426
- /**
427
- * Makes an HTTP request. This method can be overridden by subclasses if
428
- * developers want to do fancier things or use something other than curl to
429
- * make the request.
430
- *
431
- * @param string $pCanonizedPath The URL to make the request to
432
- * @param string $pMethod HTTP method
433
- * @param array $pParams The parameters to use for the POST body
434
- * @param null|resource $pCurlHandler Initialized curl handle
435
- *
436
- * @return object[]|object|null
437
- *
438
- * @throws Freemius_Exception
439
- */
440
- public function MakeRequest(
441
- $pCanonizedPath,
442
- $pMethod = 'GET',
443
- $pParams = array(),
444
- $pCurlHandler = null
445
- ) {
446
- $resource = explode( '?', $pCanonizedPath );
447
-
448
- // Only sign request if not ping.json connectivity test.
449
- $sign_request = ( '/v1/ping.json' !== strtolower( substr( $resource[0], - strlen( '/v1/ping.json' ) ) ) );
450
-
451
- return self::MakeStaticRequest(
452
- $pCanonizedPath,
453
- $pMethod,
454
- $pParams,
455
- $pCurlHandler,
456
- $this->_isSandbox,
457
- $sign_request ? array( &$this, 'SignRequest' ) : null
458
- );
459
- }
460
-
461
- #region Connectivity Test ------------------------------------------------------
462
-
463
- /**
464
- * If successful connectivity to the API endpoint using ping.json endpoint.
465
- *
466
- * - OR -
467
- *
468
- * Validate if ping result object is valid.
469
- *
470
- * @param mixed $pPong
471
- *
472
- * @return bool
473
- */
474
- public static function Test( $pPong = null ) {
475
- $pong = is_null( $pPong ) ?
476
- self::Ping() :
477
- $pPong;
478
-
479
- return (
480
- is_object( $pong ) &&
481
- isset( $pong->api ) &&
482
- 'pong' === $pong->api
483
- );
484
- }
485
-
486
- /**
487
- * Ping API to test connectivity.
488
- *
489
- * @return object
490
- */
491
- public static function Ping() {
492
- try {
493
- $result = self::MakeStaticRequest( '/v' . FS_API__VERSION . '/ping.json' );
494
- } catch ( Freemius_Exception $e ) {
495
- // Map to error object.
496
- $result = (object) $e->getResult();
497
- } catch ( Exception $e ) {
498
- // Map to error object.
499
- $result = (object) array(
500
- 'error' => array(
501
- 'type' => 'Unknown',
502
- 'message' => $e->getMessage() . ' (' . $e->getFile() . ': ' . $e->getLine() . ')',
503
- 'code' => 'unknown',
504
- 'http' => 402
505
- )
506
- );
507
- }
508
-
509
- return $result;
510
- }
511
-
512
- #endregion Connectivity Test ------------------------------------------------------
513
-
514
- #region Connectivity Exceptions ------------------------------------------------------
515
-
516
- /**
517
- * @param resource $pCurlHandler
518
- *
519
- * @throws Freemius_Exception
520
- */
521
- private static function ThrowCurlException( $pCurlHandler ) {
522
- $e = new Freemius_Exception( array(
523
- 'error' => array(
524
- 'code' => curl_errno( $pCurlHandler ),
525
- 'message' => curl_error( $pCurlHandler ),
526
- 'type' => 'CurlException',
527
- ),
528
- ) );
529
-
530
- curl_close( $pCurlHandler );
531
- throw $e;
532
- }
533
-
534
- /**
535
- * @param string $pResult
536
- *
537
- * @throws Freemius_Exception
538
- */
539
- private static function ThrowNoCurlException( $pResult = '' ) {
540
- throw new Freemius_Exception( array(
541
- 'error' => (object) array(
542
- 'type' => 'cUrlMissing',
543
- 'message' => $pResult,
544
- 'code' => 'curl_missing',
545
- 'http' => 402
546
- )
547
- ) );
548
- }
549
-
550
- /**
551
- * @param string $pResult
552
- *
553
- * @throws Freemius_Exception
554
- */
555
- private static function ThrowCloudFlareDDoSException( $pResult = '' ) {
556
- throw new Freemius_Exception( array(
557
- 'error' => (object) array(
558
- 'type' => 'CloudFlareDDoSProtection',
559
- 'message' => $pResult,
560
- 'code' => 'cloudflare_ddos_protection',
561
- 'http' => 402
562
- )
563
- ) );
564
- }
565
-
566
- /**
567
- * @param string $pResult
568
- *
569
- * @throws Freemius_Exception
570
- */
571
- private static function ThrowSquidAclException( $pResult = '' ) {
572
- throw new Freemius_Exception( array(
573
- 'error' => (object) array(
574
- 'type' => 'SquidCacheBlock',
575
- 'message' => $pResult,
576
- 'code' => 'squid_cache_block',
577
- 'http' => 402
578
- )
579
- ) );
580
- }
581
-
582
- #endregion Connectivity Exceptions ------------------------------------------------------
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
583
  }
1
+ <?php
2
+ /**
3
+ * Copyright 2014 Freemius, Inc.
4
+ *
5
+ * Licensed under the GPL v2 (the "License"); you may
6
+ * not use this file except in compliance with the License. You may obtain
7
+ * a copy of the License at
8
+ *
9
+ * http://choosealicense.com/licenses/gpl-v2/
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14
+ * License for the specific language governing permissions and limitations
15
+ * under the License.
16
+ */
17
+
18
+ require_once dirname( __FILE__ ) . '/FreemiusBase.php';
19
+
20
+ if ( ! defined( 'FS_SDK__USER_AGENT' ) ) {
21
+ define( 'FS_SDK__USER_AGENT', 'fs-php-' . Freemius_Api_Base::VERSION );
22
+ }
23
+
24
+ if ( ! defined( 'FS_SDK__SIMULATE_NO_CURL' ) ) {
25
+ define( 'FS_SDK__SIMULATE_NO_CURL', false );
26
+ }
27
+
28
+ if ( ! defined( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE' ) ) {
29
+ define( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE', false );
30
+ }
31
+
32
+ if ( ! defined( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL' ) ) {
33
+ define( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL', false );
34
+ }
35
+
36
+ if ( ! defined( 'FS_SDK__HAS_CURL' ) ) {
37
+ if ( FS_SDK__SIMULATE_NO_CURL ) {
38
+ define( 'FS_SDK__HAS_CURL', false );
39
+ } else {
40
+ $curl_required_methods = array(
41
+ 'curl_version',
42
+ 'curl_exec',
43
+ 'curl_init',
44
+ 'curl_close',
45
+ 'curl_setopt',
46
+ 'curl_setopt_array',
47
+ 'curl_error',
48
+ );
49
+
50
+ $has_curl = true;
51
+ foreach ( $curl_required_methods as $m ) {
52
+ if ( ! function_exists( $m ) ) {
53
+ $has_curl = false;
54
+ break;
55
+ }
56
+ }
57
+
58
+ define( 'FS_SDK__HAS_CURL', $has_curl );
59
+ }
60
+ }
61
+
62
+ $curl_version = FS_SDK__HAS_CURL ?
63
+ curl_version() :
64
+ array( 'version' => '7.37' );
65
+
66
+ if ( ! defined( 'FS_API__PROTOCOL' ) ) {
67
+ define( 'FS_API__PROTOCOL', version_compare( $curl_version['version'], '7.37', '>=' ) ? 'https' : 'http' );
68
+ }
69
+
70
+ if ( ! defined( 'FS_API__LOGGER_ON' ) ) {
71
+ define( 'FS_API__LOGGER_ON', false );
72
+ }
73
+
74
+ if ( ! defined( 'FS_API__ADDRESS' ) ) {
75
+ define( 'FS_API__ADDRESS', '://api.freemius.com' );
76
+ }
77
+ if ( ! defined( 'FS_API__SANDBOX_ADDRESS' ) ) {
78
+ define( 'FS_API__SANDBOX_ADDRESS', '://sandbox-api.freemius.com' );
79
+ }
80
+
81
+ if ( class_exists( 'Freemius_Api' ) ) {
82
+ return;
83
+ }
84
+
85
+ class Freemius_Api extends Freemius_Api_Base {
86
+ private static $_logger = array();
87
+
88
+ /**
89
+ * @param string $pScope 'app', 'developer', 'user' or 'install'.
90
+ * @param number $pID Element's id.
91
+ * @param string $pPublic Public key.
92
+ * @param string|bool $pSecret Element's secret key.
93
+ * @param bool $pSandbox Whether or not to run API in sandbox mode.
94
+ */
95
+ public function __construct( $pScope, $pID, $pPublic, $pSecret = false, $pSandbox = false ) {
96
+ // If secret key not provided, use public key encryption.
97
+ if ( is_bool( $pSecret ) ) {
98
+ $pSecret = $pPublic;
99
+ }
100
+
101
+ parent::Init( $pScope, $pID, $pPublic, $pSecret, $pSandbox );
102
+ }
103
+
104
+ public static function GetUrl( $pCanonizedPath = '', $pIsSandbox = false ) {
105
+ $address = ( $pIsSandbox ? FS_API__SANDBOX_ADDRESS : FS_API__ADDRESS );
106
+
107
+ if ( ':' === $address[0] ) {
108
+ $address = self::$_protocol . $address;
109
+ }
110
+
111
+ return $address . $pCanonizedPath;
112
+ }
113
+
114
+ #----------------------------------------------------------------------------------
115
+ #region Servers Clock Diff
116
+ #----------------------------------------------------------------------------------
117
+
118
+ /**
119
+ * @var int Clock diff in seconds between current server to API server.
120
+ */
121
+ private static $_clock_diff = 0;
122
+
123
+ /**
124
+ * Set clock diff for all API calls.
125
+ *
126
+ * @since 1.0.3
127
+ *
128
+ * @param $pSeconds
129
+ */
130
+ public static function SetClockDiff( $pSeconds ) {
131
+ self::$_clock_diff = $pSeconds;
132
+ }
133
+
134
+ /**
135
+ * Find clock diff between current server to API server.
136
+ *
137
+ * @since 1.0.2
138
+ * @return int Clock diff in seconds.
139
+ */
140
+ public static function FindClockDiff() {
141
+ $time = time();
142
+ $pong = self::Ping();
143
+
144
+ return ( $time - strtotime( $pong->timestamp ) );
145
+ }
146
+
147
+ #endregion
148
+
149
+ /**
150
+ * @var string http or https
151
+ */
152
+ private static $_protocol = FS_API__PROTOCOL;
153
+
154
+ /**
155
+ * Set API connection protocol.
156
+ *
157
+ * @since 1.0.4
158
+ */
159
+ public static function SetHttp() {
160
+ self::$_protocol = 'http';
161
+ }
162
+
163
+ /**
164
+ * @since 1.0.4
165
+ *
166
+ * @return bool
167
+ */
168
+ public static function IsHttps() {
169
+ return ( 'https' === self::$_protocol );
170
+ }
171
+
172
+ /**
173
+ * Sign request with the following HTTP headers:
174
+ * Content-MD5: MD5(HTTP Request body)
175
+ * Date: Current date (i.e Sat, 14 Feb 2015 20:24:46 +0000)
176
+ * Authorization: FS {scope_entity_id}:{scope_entity_public_key}:base64encode(sha256(string_to_sign,
177
+ * {scope_entity_secret_key}))
178
+ *
179
+ * @param string $pResourceUrl
180
+ * @param array $pCurlOptions
181
+ *
182
+ * @return array
183
+ */
184
+ function SignRequest( $pResourceUrl, $pCurlOptions ) {
185
+ $eol = "\n";
186
+ $content_md5 = '';
187
+ $now = ( time() - self::$_clock_diff );
188
+ $date = date( 'r', $now );
189
+ $content_type = '';
190
+
191
+ if ( isset( $pCurlOptions[ CURLOPT_POST ] ) && 0 < $pCurlOptions[ CURLOPT_POST ] ) {
192
+ $content_md5 = md5( $pCurlOptions[ CURLOPT_POSTFIELDS ] );
193
+ $pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Content-MD5: ' . $content_md5;
194
+ $content_type = 'application/json';
195
+ }
196
+
197
+ $pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Date: ' . $date;
198
+
199
+ $string_to_sign = implode( $eol, array(
200
+ $pCurlOptions[ CURLOPT_CUSTOMREQUEST ],
201
+ $content_md5,
202
+ $content_type,
203
+ $date,
204
+ $pResourceUrl
205
+ ) );
206
+
207
+ // If secret and public keys are identical, it means that
208
+ // the signature uses public key hash encoding.
209
+ $auth_type = ( $this->_secret !== $this->_public ) ? 'FS' : 'FSP';
210
+
211
+ // Add authorization header.
212
+ $pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Authorization: ' .
213
+ $auth_type . ' ' .
214
+ $this->_id . ':' .
215
+ $this->_public . ':' .
216
+ self::Base64UrlEncode(
217
+ hash_hmac( 'sha256', $string_to_sign, $this->_secret )
218
+ );
219
+
220
+ return $pCurlOptions;
221
+ }
222
+
223
+ /**
224
+ * Get API request URL signed via query string.
225
+ *
226
+ * @param string $pPath
227
+ *
228
+ * @throws Freemius_Exception
229
+ *
230
+ * @return string
231
+ */
232
+ function GetSignedUrl( $pPath ) {
233
+ $resource = explode( '?', $this->CanonizePath( $pPath ) );
234
+ $pResourceUrl = $resource[0];
235
+
236
+ $eol = "\n";
237
+ $content_md5 = '';
238
+ $content_type = '';
239
+ $now = ( time() - self::$_clock_diff );
240
+ $date = date( 'r', $now );
241
+
242
+ $string_to_sign = implode( $eol, array(
243
+ 'GET',
244
+ $content_md5,
245
+ $content_type,
246
+ $date,
247
+ $pResourceUrl
248
+ ) );
249
+
250
+ // If secret and public keys are identical, it means that
251
+ // the signature uses public key hash encoding.
252
+ $auth_type = ( $this->_secret !== $this->_public ) ? 'FS' : 'FSP';
253
+
254
+ return Freemius_Api::GetUrl(
255
+ $pResourceUrl . '?' .
256
+ ( 1 < count( $resource ) && ! empty( $resource[1] ) ? $resource[1] . '&' : '' ) .
257
+ http_build_query( array(
258
+ 'auth_date' => $date,
259
+ 'authorization' => $auth_type . ' ' . $this->_id . ':' .
260
+ $this->_public . ':' .
261
+ self::Base64UrlEncode( hash_hmac(
262
+ 'sha256', $string_to_sign, $this->_secret
263
+ ) )
264
+ ) ), $this->_isSandbox );
265
+ }
266
+
267
+ /**
268
+ * @param resource $pCurlHandler
269
+ * @param array $pCurlOptions
270
+ *
271
+ * @return mixed
272
+ */
273
+ private static function ExecuteRequest( &$pCurlHandler, &$pCurlOptions ) {
274
+ $start = microtime( true );
275
+
276
+ $result = curl_exec( $pCurlHandler );
277
+
278
+ if ( FS_API__LOGGER_ON ) {
279
+ $end = microtime( true );
280
+
281
+ $has_body = ( isset( $pCurlOptions[ CURLOPT_POST ] ) && 0 < $pCurlOptions[ CURLOPT_POST ] );
282
+
283
+ self::$_logger[] = array(
284
+ 'id' => count( self::$_logger ),
285
+ 'start' => $start,
286
+ 'end' => $end,
287
+ 'total' => ( $end - $start ),
288
+ 'method' => $pCurlOptions[ CURLOPT_CUSTOMREQUEST ],
289
+ 'path' => $pCurlOptions[ CURLOPT_URL ],
290
+ 'body' => $has_body ? $pCurlOptions[ CURLOPT_POSTFIELDS ] : null,
291
+ 'result' => $result,
292
+ 'code' => curl_getinfo( $pCurlHandler, CURLINFO_HTTP_CODE ),
293
+ 'backtrace' => debug_backtrace(),
294
+ );
295
+ }
296
+
297
+ return $result;
298
+ }
299
+
300
+ /**
301
+ * @return array
302
+ */
303
+ static function GetLogger() {
304
+ return self::$_logger;
305
+ }
306
+
307
+ /**
308
+ * @param string $pCanonizedPath
309
+ * @param string $pMethod
310
+ * @param array $pParams
311
+ * @param null|resource $pCurlHandler
312
+ * @param bool $pIsSandbox
313
+ * @param null|callable $pBeforeExecutionFunction
314
+ *
315
+ * @return object[]|object|null
316
+ *
317
+ * @throws \Freemius_Exception
318
+ */
319
+ private static function MakeStaticRequest(
320
+ $pCanonizedPath,
321
+ $pMethod = 'GET',
322
+ $pParams = array(),
323
+ $pCurlHandler = null,
324
+ $pIsSandbox = false,
325
+ $pBeforeExecutionFunction = null
326
+ ) {
327
+ if ( ! FS_SDK__HAS_CURL ) {
328
+ self::ThrowNoCurlException();
329
+ }
330
+
331
+ // Connectivity errors simulation.
332
+ if ( FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE ) {
333
+ self::ThrowCloudFlareDDoSException();
334
+ } else if ( FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL ) {
335
+ self::ThrowSquidAclException();
336
+ }
337
+
338
+ if ( ! $pCurlHandler ) {
339
+ $pCurlHandler = curl_init();
340
+ }
341
+
342
+ $opts = array(
343
+ CURLOPT_CONNECTTIMEOUT => 10,
344
+ CURLOPT_RETURNTRANSFER => true,
345
+ CURLOPT_TIMEOUT => 60,
346
+ CURLOPT_USERAGENT => FS_SDK__USER_AGENT,
347
+ CURLOPT_HTTPHEADER => array(),
348
+ );
349
+
350
+ if ( 'POST' === $pMethod || 'PUT' === $pMethod ) {
351
+ if ( is_array( $pParams ) && 0 < count( $pParams ) ) {
352
+ $opts[ CURLOPT_HTTPHEADER ][] = 'Content-Type: application/json';
353
+ $opts[ CURLOPT_POST ] = count( $pParams );
354
+ $opts[ CURLOPT_POSTFIELDS ] = json_encode( $pParams );
355
+ }
356
+
357
+ $opts[ CURLOPT_RETURNTRANSFER ] = true;
358
+ }
359
+
360
+ $request_url = self::GetUrl( $pCanonizedPath, $pIsSandbox );
361
+
362
+ $opts[ CURLOPT_URL ] = $request_url;
363
+ $opts[ CURLOPT_CUSTOMREQUEST ] = $pMethod;
364
+
365
+ $resource = explode( '?', $pCanonizedPath );
366
+
367
+ // Disable the 'Expect: 100-continue' behaviour. This causes CURL to wait
368
+ // for 2 seconds if the server does not support this header.
369
+ $opts[ CURLOPT_HTTPHEADER ][] = 'Expect:';
370
+
371
+ if ( 'https' === substr( strtolower( $request_url ), 0, 5 ) ) {
372
+ $opts[ CURLOPT_SSL_VERIFYHOST ] = false;
373
+ $opts[ CURLOPT_SSL_VERIFYPEER ] = false;
374
+ }
375
+
376
+ if ( false !== $pBeforeExecutionFunction &&
377
+ is_callable( $pBeforeExecutionFunction )
378
+ ) {
379
+ $opts = call_user_func( $pBeforeExecutionFunction, $resource[0], $opts );
380
+ }
381
+
382
+ curl_setopt_array( $pCurlHandler, $opts );
383
+ $result = self::ExecuteRequest( $pCurlHandler, $opts );
384
+
385
+ /*if (curl_errno($ch) == 60) // CURLE_SSL_CACERT
386
+ {
387
+ self::errorLog('Invalid or no certificate authority found, using bundled information');
388
+ curl_setopt($ch, CURLOPT_CAINFO,
389
+ dirname(__FILE__) . '/fb_ca_chain_bundle.crt');
390
+ $result = curl_exec($ch);
391
+ }*/
392
+
393
+ // With dual stacked DNS responses, it's possible for a server to
394
+ // have IPv6 enabled but not have IPv6 connectivity. If this is
395
+ // the case, curl will try IPv4 first and if that fails, then it will
396
+ // fall back to IPv6 and the error EHOSTUNREACH is returned by the
397
+ // operating system.
398
+ if ( false === $result && empty( $opts[ CURLOPT_IPRESOLVE ] ) ) {
399
+ $matches = array();
400
+ $regex = '/Failed to connect to ([^:].*): Network is unreachable/';
401
+ if ( preg_match( $regex, curl_error( $pCurlHandler ), $matches ) ) {
402
+ if ( strlen( @inet_pton( $matches[1] ) ) === 16 ) {
403
+ // self::errorLog('Invalid IPv6 configuration on server, Please disable or get native IPv6 on your server.');
404
+ $opts[ CURLOPT_IPRESOLVE ] = CURL_IPRESOLVE_V4;
405
+ curl_setopt( $pCurlHandler, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
406
+ $result = self::ExecuteRequest( $pCurlHandler, $opts );
407
+ }
408
+ }
409
+ }
410
+
411
+ if ( $result === false ) {
412
+ self::ThrowCurlException( $pCurlHandler );
413
+ }
414
+
415
+ curl_close( $pCurlHandler );
416
+
417
+ if ( empty( $result ) ) {
418
+ return null;
419
+ }
420
+
421
+ $decoded = json_decode( $result );
422
+
423
+ if ( is_null( $decoded ) ) {
424
+ if ( preg_match( '/Please turn JavaScript on/i', $result ) &&
425
+ preg_match( '/text\/javascript/', $result )
426
+ ) {
427
+ self::ThrowCloudFlareDDoSException( $result );
428
+ } else if ( preg_match( '/Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect./', $result ) &&
429
+ preg_match( '/squid/', $result )
430
+ ) {
431
+ self::ThrowSquidAclException( $result );
432
+ } else {
433
+ $decoded = (object) array(
434
+ 'error' => (object) array(
435
+ 'type' => 'Unknown',
436
+ 'message' => $result,
437
+ 'code' => 'unknown',
438
+ 'http' => 402
439
+ )
440
+ );
441
+ }
442
+ }
443
+
444
+ return $decoded;
445
+ }
446
+
447
+
448
+ /**
449
+ * Makes an HTTP request. This method can be overridden by subclasses if
450
+ * developers want to do fancier things or use something other than curl to
451
+ * make the request.
452
+ *
453
+ * @param string $pCanonizedPath The URL to make the request to
454
+ * @param string $pMethod HTTP method
455
+ * @param array $pParams The parameters to use for the POST body
456
+ * @param null|resource $pCurlHandler Initialized curl handle
457
+ *
458
+ * @return object[]|object|null
459
+ *
460
+ * @throws Freemius_Exception
461
+ */
462
+ public function MakeRequest(
463
+ $pCanonizedPath,
464
+ $pMethod = 'GET',
465
+ $pParams = array(),
466
+ $pCurlHandler = null
467
+ ) {
468
+ $resource = explode( '?', $pCanonizedPath );
469
+
470
+ // Only sign request if not ping.json connectivity test.
471
+ $sign_request = ( '/v1/ping.json' !== strtolower( substr( $resource[0], - strlen( '/v1/ping.json' ) ) ) );
472
+
473
+ return self::MakeStaticRequest(
474
+ $pCanonizedPath,
475
+ $pMethod,
476
+ $pParams,
477
+ $pCurlHandler,
478
+ $this->_isSandbox,
479
+ $sign_request ? array( &$this, 'SignRequest' ) : null
480
+ );
481
+ }
482
+
483
+ #----------------------------------------------------------------------------------
484
+ #region Connectivity Test
485
+ #----------------------------------------------------------------------------------
486
+ /**
487
+ * If successful connectivity to the API endpoint using ping.json endpoint.
488
+ *
489
+ * - OR -
490
+ *
491
+ * Validate if ping result object is valid.
492
+ *
493
+ * @param mixed $pPong
494
+ *
495
+ * @return bool
496
+ */
497
+ public static function Test( $pPong = null ) {
498
+ $pong = is_null( $pPong ) ?
499
+ self::Ping() :
500
+ $pPong;
501
+
502
+ return (
503
+ is_object( $pong ) &&
504
+ isset( $pong->api ) &&
505
+ 'pong' === $pong->api
506
+ );
507
+ }
508
+
509
+ /**
510
+ * Ping API to test connectivity.
511
+ *
512
+ * @return object
513
+ */
514
+ public static function Ping() {
515
+ try {
516
+ $result = self::MakeStaticRequest( '/v' . FS_API__VERSION . '/ping.json' );
517
+ } catch ( Freemius_Exception $e ) {
518
+ // Map to error object.
519
+ $result = (object) $e->getResult();
520
+ } catch ( Exception $e ) {
521
+ // Map to error object.
522
+ $result = (object) array(
523
+ 'error' => array(
524
+ 'type' => 'Unknown',
525
+ 'message' => $e->getMessage() . ' (' . $e->getFile() . ': ' . $e->getLine() . ')',
526
+ 'code' => 'unknown',
527
+ 'http' => 402
528
+ )
529
+ );
530
+ }
531
+
532
+ return $result;
533
+ }
534
+
535
+ #endregion
536
+
537
+ #----------------------------------------------------------------------------------
538
+ #region Connectivity Exceptions
539
+ #----------------------------------------------------------------------------------
540
+
541
+ /**
542
+ * @param resource $pCurlHandler
543
+ *
544
+ * @throws Freemius_Exception
545
+ */
546
+ private static function ThrowCurlException( $pCurlHandler ) {
547
+ $e = new Freemius_Exception( array(
548
+ 'error' => array(
549
+ 'code' => curl_errno( $pCurlHandler ),
550
+ 'message' => curl_error( $pCurlHandler ),
551
+ 'type' => 'CurlException',
552
+ ),
553
+ ) );
554
+
555
+ curl_close( $pCurlHandler );
556
+ throw $e;
557
+ }
558
+
559
+ /**
560
+ * @param string $pResult
561
+ *
562
+ * @throws Freemius_Exception
563
+ */
564
+ private static function ThrowNoCurlException( $pResult = '' ) {
565
+ $curl_required_methods = array(
566
+ 'curl_version',
567
+ 'curl_exec',
568
+ 'curl_init',
569
+ 'curl_close',
570
+ 'curl_setopt',
571
+ 'curl_setopt_array',
572
+ 'curl_error',
573
+ );
574
+
575
+ // Find all missing methods.
576
+ $missing_methods = array();
577
+ foreach ( $curl_required_methods as $m ) {
578
+ if ( ! function_exists( $m ) ) {
579
+ $missing_methods[] = $m;
580
+ }
581
+ }
582
+
583
+ throw new Freemius_Exception( array(
584
+ 'error' => (object) array(
585
+ 'type' => 'cUrlMissing',
586
+ 'message' => $pResult,
587
+ 'code' => 'curl_missing',
588
+ 'http' => 402
589
+ ),
590
+ 'missing_methods' => $missing_methods,
591
+ ) );
592
+ }
593
+
594
+ /**
595
+ * @param string $pResult
596
+ *
597
+ * @throws Freemius_Exception
598
+ */
599
+ private static function ThrowCloudFlareDDoSException( $pResult = '' ) {
600
+ throw new Freemius_Exception( array(
601
+ 'error' => (object) array(
602
+ 'type' => 'CloudFlareDDoSProtection',
603
+ 'message' => $pResult,
604
+ 'code' => 'cloudflare_ddos_protection',
605
+ 'http' => 402
606
+ )
607
+ ) );
608
+ }
609
+
610
+ /**
611
+ * @param string $pResult
612
+ *
613
+ * @throws Freemius_Exception
614
+ */
615
+ private static function ThrowSquidAclException( $pResult = '' ) {
616
+ throw new Freemius_Exception( array(
617
+ 'error' => (object) array(
618
+ 'type' => 'SquidCacheBlock',
619
+ 'message' => $pResult,
620
+ 'code' => 'squid_cache_block',
621
+ 'http' => 402
622
+ )
623
+ ) );
624
+ }
625
+
626
+ #endregion
627
  }
freemius/includes/sdk/FreemiusBase.php CHANGED
@@ -1,188 +1,188 @@
1
- <?php
2
- /**
3
- * Copyright 2014 Freemius, Inc.
4
- *
5
- * Licensed under the GPL v2 (the "License"); you may
6
- * not use this file except in compliance with the License. You may obtain
7
- * a copy of the License at
8
- *
9
- * http://choosealicense.com/licenses/gpl-v2/
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14
- * License for the specific language governing permissions and limitations
15
- * under the License.
16
- */
17
-
18
- if ( ! defined( 'FS_API__VERSION' ) ) {
19
- define( 'FS_API__VERSION', '1' );
20
- }
21
- if ( ! defined( 'FS_SDK__PATH' ) ) {
22
- define( 'FS_SDK__PATH', dirname( __FILE__ ) );
23
- }
24
- if ( ! defined( 'FS_SDK__EXCEPTIONS_PATH' ) ) {
25
- define( 'FS_SDK__EXCEPTIONS_PATH', FS_SDK__PATH . '/Exceptions/' );
26
- }
27
-
28
- if ( ! function_exists( 'json_decode' ) ) {
29
- throw new Exception( 'Freemius needs the JSON PHP extension.' );
30
- }
31
-
32
- // Include all exception files.
33
- $exceptions = array(
34
- 'Exception',
35
- 'InvalidArgumentException',
36
- 'ArgumentNotExistException',
37
- 'EmptyArgumentException',
38
- 'OAuthException'
39
- );
40
-
41
- foreach ( $exceptions as $e ) {
42
- require_once FS_SDK__EXCEPTIONS_PATH . $e . '.php';
43
- }
44
-
45
- if ( class_exists( 'Freemius_Api_Base' ) ) {
46
- return;
47
- }
48
-
49
- abstract class Freemius_Api_Base {
50
- const VERSION = '1.0.4';
51
- const FORMAT = 'json';
52
-
53
- protected $_id;
54
- protected $_public;
55
- protected $_secret;
56
- protected $_scope;
57
- protected $_isSandbox;
58
-
59
- /**
60
- * @param string $pScope 'app', 'developer', 'plugin', 'user' or 'install'.
61
- * @param number $pID Element's id.
62
- * @param string $pPublic Public key.
63
- * @param string $pSecret Element's secret key.
64
- * @param bool $pIsSandbox Whether or not to run API in sandbox mode.
65
- */
66
- public function Init( $pScope, $pID, $pPublic, $pSecret, $pIsSandbox = false ) {
67
- $this->_id = $pID;
68
- $this->_public = $pPublic;
69
- $this->_secret = $pSecret;
70
- $this->_scope = $pScope;
71
- $this->_isSandbox = $pIsSandbox;
72
- }
73
-
74
- public function IsSandbox() {
75
- return $this->_isSandbox;
76
- }
77
-
78
- function CanonizePath( $pPath ) {
79
- $pPath = trim( $pPath, '/' );
80
- $query_pos = strpos( $pPath, '?' );
81
- $query = '';
82
-
83
- if ( false !== $query_pos ) {
84
- $query = substr( $pPath, $query_pos );
85
- $pPath = substr( $pPath, 0, $query_pos );
86
- }
87
-
88
- // Trim '.json' suffix.
89
- $format_length = strlen( '.' . self::FORMAT );
90
- $start = $format_length * ( - 1 ); //negative
91
- if ( substr( strtolower( $pPath ), $start ) === ( '.' . self::FORMAT ) ) {
92
- $pPath = substr( $pPath, 0, strlen( $pPath ) - $format_length );
93
- }
94
-
95
- switch ( $this->_scope ) {
96
- case 'app':
97
- $base = '/apps/' . $this->_id;
98
- break;
99
- case 'developer':
100
- $base = '/developers/' . $this->_id;
101
- break;
102
- case 'user':
103
- $base = '/users/' . $this->_id;
104
- break;
105
- case 'plugin':
106
- $base = '/plugins/' . $this->_id;
107
- break;
108
- case 'install':
109
- $base = '/installs/' . $this->_id;
110
- break;
111
- default:
112
- throw new Freemius_Exception( 'Scope not implemented.' );
113
- }
114
-
115
- return '/v' . FS_API__VERSION . $base .
116
- ( ! empty( $pPath ) ? '/' : '' ) . $pPath .
117
- ( ( false === strpos( $pPath, '.' ) ) ? '.' . self::FORMAT : '' ) . $query;
118
- }
119
-
120
- abstract function MakeRequest( $pCanonizedPath, $pMethod = 'GET', $pParams = array() );
121
-
122
- /**
123
- * @param string $pPath
124
- * @param string $pMethod
125
- * @param array $pParams
126
- *
127
- * @return object[]|object|null
128
- */
129
- private function _Api( $pPath, $pMethod = 'GET', $pParams = array() ) {
130
- $pMethod = strtoupper( $pMethod );
131
-
132
- try {
133
- $result = $this->MakeRequest( $pPath, $pMethod, $pParams );
134
- } catch ( Freemius_Exception $e ) {
135
- // Map to error object.
136
- $result = (object) $e->getResult();
137
- } catch ( Exception $e ) {
138
- // Map to error object.
139
- $result = (object) array(
140
- 'error' => array(
141
- 'type' => 'Unknown',
142
- 'message' => $e->getMessage() . ' (' . $e->getFile() . ': ' . $e->getLine() . ')',
143
- 'code' => 'unknown',
144
- 'http' => 402
145
- )
146
- );
147
- }
148
-
149
- return $result;
150
- }
151
-
152
- public function Api( $pPath, $pMethod = 'GET', $pParams = array() ) {
153
- return $this->_Api( $this->CanonizePath( $pPath ), $pMethod, $pParams );
154
- }
155
-
156
- /**
157
- * Base64 encoding that does not need to be urlencode()ed.
158
- * Exactly the same as base64_encode except it uses
159
- * - instead of +
160
- * _ instead of /
161
- * No padded =
162
- *
163
- * @param string $input base64UrlEncoded string
164
- *
165
- * @return string
166
- */
167
- protected static function Base64UrlDecode( $input ) {
168
- return base64_decode( strtr( $input, '-_', '+/' ) );
169
- }
170
-
171
- /**
172
- * Base64 encoding that does not need to be urlencode()ed.
173
- * Exactly the same as base64_encode except it uses
174
- * - instead of +
175
- * _ instead of /
176
- *
177
- * @param string $input string
178
- *
179
- * @return string base64Url encoded string
180
- */
181
- protected static function Base64UrlEncode( $input ) {
182
- $str = strtr( base64_encode( $input ), '+/', '-_' );
183
- $str = str_replace( '=', '', $str );
184
-
185
- return $str;
186
- }
187
-
188
- }
1
+ <?php
2
+ /**
3
+ * Copyright 2014 Freemius, Inc.
4
+ *
5
+ * Licensed under the GPL v2 (the "License"); you may
6
+ * not use this file except in compliance with the License. You may obtain
7
+ * a copy of the License at
8
+ *
9
+ * http://choosealicense.com/licenses/gpl-v2/
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14
+ * License for the specific language governing permissions and limitations
15
+ * under the License.
16
+ */
17
+
18
+ if ( ! defined( 'FS_API__VERSION' ) ) {
19
+ define( 'FS_API__VERSION', '1' );
20
+ }
21
+ if ( ! defined( 'FS_SDK__PATH' ) ) {
22
+ define( 'FS_SDK__PATH', dirname( __FILE__ ) );
23
+ }
24
+ if ( ! defined( 'FS_SDK__EXCEPTIONS_PATH' ) ) {
25
+ define( 'FS_SDK__EXCEPTIONS_PATH', FS_SDK__PATH . '/Exceptions/' );
26
+ }
27
+
28
+ if ( ! function_exists( 'json_decode' ) ) {
29
+ throw new Exception( 'Freemius needs the JSON PHP extension.' );
30
+ }
31
+
32
+ // Include all exception files.
33
+ $exceptions = array(
34
+ 'Exception',
35
+ 'InvalidArgumentException',
36
+ 'ArgumentNotExistException',
37
+ 'EmptyArgumentException',
38
+ 'OAuthException'
39
+ );
40
+
41
+ foreach ( $exceptions as $e ) {
42
+ require_once FS_SDK__EXCEPTIONS_PATH . $e . '.php';
43
+ }
44
+
45
+ if ( class_exists( 'Freemius_Api_Base' ) ) {
46
+ return;
47
+ }
48
+
49
+ abstract class Freemius_Api_Base {
50
+ const VERSION = '1.0.4';
51
+ const FORMAT = 'json';
52
+
53
+ protected $_id;
54
+ protected $_public;
55
+ protected $_secret;
56
+ protected $_scope;
57
+ protected $_isSandbox;
58
+
59
+ /**
60
+ * @param string $pScope 'app', 'developer', 'plugin', 'user' or 'install'.
61
+ * @param number $pID Element's id.
62
+ * @param string $pPublic Public key.
63
+ * @param string $pSecret Element's secret key.
64
+ * @param bool $pIsSandbox Whether or not to run API in sandbox mode.
65
+ */
66
+ public function Init( $pScope, $pID, $pPublic, $pSecret, $pIsSandbox = false ) {
67
+ $this->_id = $pID;
68
+ $this->_public = $pPublic;
69
+ $this->_secret = $pSecret;
70
+ $this->_scope = $pScope;
71
+ $this->_isSandbox = $pIsSandbox;
72
+ }
73
+
74
+ public function IsSandbox() {
75
+ return $this->_isSandbox;
76
+ }
77
+
78
+ function CanonizePath( $pPath ) {
79
+ $pPath = trim( $pPath, '/' );
80
+ $query_pos = strpos( $pPath, '?' );
81
+ $query = '';
82
+
83
+ if ( false !== $query_pos ) {
84
+ $query = substr( $pPath, $query_pos );
85
+ $pPath = substr( $pPath, 0, $query_pos );
86
+ }
87
+
88
+ // Trim '.json' suffix.
89
+ $format_length = strlen( '.' . self::FORMAT );
90
+ $start = $format_length * ( - 1 ); //negative
91
+ if ( substr( strtolower( $pPath ), $start ) === ( '.' . self::FORMAT ) ) {
92
+ $pPath = substr( $pPath, 0, strlen( $pPath ) - $format_length );
93
+ }
94
+
95
+ switch ( $this->_scope ) {
96
+ case 'app':
97
+ $base = '/apps/' . $this->_id;
98
+ break;
99
+ case 'developer':
100
+ $base = '/developers/' . $this->_id;
101
+ break;
102
+ case 'user':
103
+ $base = '/users/' . $this->_id;
104
+ break;
105
+ case 'plugin':
106
+ $base = '/plugins/' . $this->_id;
107
+ break;
108
+ case 'install':
109
+ $base = '/installs/' . $this->_id;
110
+ break;
111
+ default:
112
+ throw new Freemius_Exception( 'Scope not implemented.' );
113
+ }
114
+
115
+ return '/v' . FS_API__VERSION . $base .
116
+ ( ! empty( $pPath ) ? '/' : '' ) . $pPath .
117
+ ( ( false === strpos( $pPath, '.' ) ) ? '.' . self::FORMAT : '' ) . $query;
118
+ }
119
+
120
+ abstract function MakeRequest( $pCanonizedPath, $pMethod = 'GET', $pParams = array() );
121
+
122
+ /**
123
+ * @param string $pPath
124
+ * @param string $pMethod
125
+ * @param array $pParams
126
+ *
127
+ * @return object[]|object|null
128
+ */
129
+ private function _Api( $pPath, $pMethod = 'GET', $pParams = array() ) {
130
+ $pMethod = strtoupper( $pMethod );
131
+
132
+ try {
133
+ $result = $this->MakeRequest( $pPath, $pMethod, $pParams );
134
+ } catch ( Freemius_Exception $e ) {
135
+ // Map to error object.
136
+ $result = (object) $e->getResult();
137
+ } catch ( Exception $e ) {
138
+ // Map to error object.
139
+ $result = (object) array(
140
+ 'error' => array(
141
+ 'type' => 'Unknown',
142
+ 'message' => $e->getMessage() . ' (' . $e->getFile() . ': ' . $e->getLine() . ')',
143
+ 'code' => 'unknown',
144
+ 'http' => 402
145
+ )
146
+ );
147
+ }
148
+
149
+ return $result;
150
+ }
151
+
152
+ public function Api( $pPath, $pMethod = 'GET', $pParams = array() ) {
153
+ return $this->_Api( $this->CanonizePath( $pPath ), $pMethod, $pParams );
154
+ }
155
+
156
+ /**
157
+ * Base64 encoding that does not need to be urlencode()ed.
158
+ * Exactly the same as base64_encode except it uses
159
+ * - instead of +
160
+ * _ instead of /
161
+ * No padded =
162
+ *
163
+ * @param string $input base64UrlEncoded string
164
+ *
165
+ * @return string
166
+ */
167
+ protected static function Base64UrlDecode( $input ) {
168
+ return base64_decode( strtr( $input, '-_', '+/' ) );
169
+ }
170
+
171
+ /**
172
+ * Base64 encoding that does not need to be urlencode()ed.
173
+ * Exactly the same as base64_encode except it uses
174
+ * - instead of +
175
+ * _ instead of /
176
+ *
177
+ * @param string $input string
178
+ *
179
+ * @return string base64Url encoded string
180
+ */
181
+ protected static function Base64UrlEncode( $input ) {
182
+ $str = strtr( base64_encode( $input ), '+/', '-_' );
183
+ $str = str_replace( '=', '', $str );
184
+
185
+ return $str;
186
+ }
187
+
188
+ }
freemius/languages/freemius-da_DK.mo CHANGED
Binary file
freemius/languages/freemius-da_DK.po CHANGED
@@ -1,1661 +1,1790 @@
1
- # Copyright (C) 2016 freemius
2
  # This file is distributed under the same license as the freemius package.
3
  # Translators:
4
- # Joachim Jensen <jv@intox.dk>, 2016
5
  msgid ""
6
  msgstr ""
7
  "Project-Id-Version: WordPress SDK\n"
8
  "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
9
- "PO-Revision-Date: 2016-12-07 01:29+0000\n"
 
10
  "Last-Translator: Vova Feldman <vova@freemius.com>\n"
 
11
  "Language-Team: Danish (Denmark) (http://www.transifex.com/freemius/wordpress-sdk/language/da_DK/)\n"
12
- "MIME-Version: 1.0\n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
- "Language: da_DK\n"
16
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
17
  "X-Poedit-Basepath: ..\n"
18
- "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"
19
  "X-Poedit-SearchPath-0: .\n"
20
  "X-Poedit-SearchPathExcluded-0: *.js\n"
21
  "X-Poedit-SourceCharset: UTF-8\n"
22
 
23
- #: includes/i18n.php41, includes/i18n.php:55
24
- msgid "Yes - I'm in!"
25
- msgstr "Ja - jeg er med!"
26
-
27
- #: includes/i18n.php43, includes/i18n.php:57
28
- msgid "Not today"
29
- msgstr "Ikke i dag"
30
-
31
- #: includes/i18n.php:69
32
  msgid "Account"
33
  msgstr "Konto"
34
 
35
- #: includes/i18n.php:71
36
  msgid "Add On"
37
  msgstr "Tilføjelse"
38
 
39
- #: includes/i18n.php:73
40
  msgid "Contact Us"
41
  msgstr "Kontakt os"
42
 
43
- #: includes/i18n.php:75
44
  msgid "Contact Support"
45
  msgstr "Kontakt support"
46
 
47
- #: includes/i18n.php:77
48
  msgid "Change Ownership"
49
  msgstr "Skift ejerskab"
50
 
51
- #: includes/i18n.php:79
52
  msgid "Support"
53
  msgstr "Support"
54
 
55
- #: includes/i18n.php:81
56
  msgid "Support Forum"
57
  msgstr "Supportforum"
58
 
59
- #: includes/i18n.php:83
60
  msgid "Add Ons"
61
  msgstr "Tilføjelser"
62
 
63
- #: includes/i18n.php:85
64
  msgctxt "verb"
65
  msgid "Upgrade"
66
  msgstr "Opgrader"
67
 
68
- #: includes/i18n.php:87
69
  msgid "Awesome"
70
  msgstr "Sejt"
71
 
72
- #: includes/i18n.php:89
73
  msgctxt "noun"
74
  msgid "Pricing"
75
  msgstr "Priser"
76
 
77
- #: includes/i18n.php:91
78
  msgctxt "noun"
79
  msgid "Price"
80
  msgstr "Pris"
81
 
82
- #: includes/i18n.php:93
83
  msgid "Unlimited Updates"
84
  msgstr "Ubegrænsede opdateringer"
85
 
86
- #: includes/i18n.php:95
87
  msgctxt "verb"
88
  msgid "Downgrade"
89
  msgstr "Nedgrader"
90
 
91
- #: includes/i18n.php:97
 
 
 
 
 
92
  msgid "Cancel Trial"
93
  msgstr "Annuller prøveperiode"
94
 
95
- #: includes/i18n.php:99
96
  msgid "Free Trial"
97
  msgstr "Gratis prøveperiode"
98
 
99
- #: includes/i18n.php:101
100
  msgid "Start my free %s"
101
  msgstr "Start min gratis %s"
102
 
103
- #: includes/i18n.php:103
104
  msgid "No commitment for %s - cancel anytime"
105
  msgstr "Ingen bindinger ved %s - annuller når som helst"
106
 
107
- #: includes/i18n.php:105
108
  msgid "After your free %s, pay as little as %s"
109
  msgstr "Efter din gratis %s er prisen kun %s"
110
 
111
- #: includes/i18n.php:107
112
  msgid "Details"
113
  msgstr "Detaljer"
114
 
115
- #: includes/i18n.php:109
116
  msgid "Account Details"
117
  msgstr "Kontodetaljer"
118
 
119
- #: includes/i18n.php:111
120
  msgctxt "verb"
121
  msgid "Delete"
122
  msgstr "Slet"
123
 
124
- #: includes/i18n.php:113
125
  msgctxt "verb"
126
  msgid "Show"
127
  msgstr "Vis"
128
 
129
- #: includes/i18n.php:115
130
  msgctxt "verb"
131
  msgid "Hide"
132
  msgstr "Skjul"
133
 
134
- #: includes/i18n.php:117
135
  msgctxt "verb"
136
  msgid "Edit"
137
  msgstr "Rediger"
138
 
139
- #: includes/i18n.php:119
140
  msgctxt "verb"
141
  msgid "Update"
142
- msgstr ""
143
 
144
- #: includes/i18n.php:121
145
  msgid "Date"
146
  msgstr "Dato"
147
 
148
- #: includes/i18n.php:123
149
  msgid "Amount"
150
  msgstr "Beløb"
151
 
152
- #: includes/i18n.php:125
153
  msgid "Invoice"
154
  msgstr "Faktura"
155
 
156
- #: includes/i18n.php:127
157
  msgid "Billing"
158
  msgstr "Betaling"
159
 
160
- #: includes/i18n.php:129
161
  msgid "Payments"
162
  msgstr "Betalinger"
163
 
164
- #: includes/i18n.php:131
165
  msgid "Delete Account"
166
  msgstr "Slet konto"
167
 
168
- #: includes/i18n.php:133
169
  msgctxt "as close a window"
170
  msgid "Dismiss"
171
  msgstr "Fjern"
172
 
173
- #: includes/i18n.php:135
174
  msgctxt "as product pricing plan"
175
  msgid "Plan"
176
  msgstr "Plan"
177
 
178
- #: includes/i18n.php:137
179
  msgid "Change Plan"
180
  msgstr "Skift plan"
181
 
182
- #: includes/i18n.php:139
183
  msgctxt "as download professional version"
184
  msgid "Download %s Version"
185
- msgstr ""
186
 
187
- #: includes/i18n.php:141
188
  msgctxt "as download professional version now"
189
  msgid "Download %s version now"
190
- msgstr ""
191
 
192
- #: includes/i18n.php:145
193
  msgctxt "as download latest version"
194
  msgid "Download Latest"
195
  msgstr "Download seneste"
196
 
197
- #: includes/i18n.php:147
198
  msgctxt "E.g. you have a professional license."
199
  msgid "You have a %s license."
200
  msgstr "Du har en %s licens."
201
 
202
- #: includes/i18n.php:151
203
  msgid "New"
204
  msgstr "Ny"
205
 
206
- #: includes/i18n.php:153
207
  msgid "Free"
208
  msgstr "Gratis"
209
 
210
- #: includes/i18n.php:155
211
  msgctxt "as trial plan"
212
  msgid "Trial"
213
  msgstr "Prøveperiode"
214
 
215
- #: includes/i18n.php:157
216
  msgctxt "as starting a trial plan"
217
  msgid "Start Trial"
218
- msgstr ""
219
 
220
- #: includes/i18n.php:159
221
  msgctxt "verb"
222
  msgid "Purchase"
223
  msgstr "Køb"
224
 
225
- #: includes/i18n.php:161
226
  msgid "Purchase License"
227
  msgstr "Køb licens"
228
 
229
- #: includes/i18n.php:163
230
  msgctxt "verb"
231
  msgid "Buy"
232
  msgstr "Køb"
233
 
234
- #: includes/i18n.php:165
235
  msgid "Buy License"
236
  msgstr "Køb licens"
237
 
238
- #: includes/i18n.php:167
239
  msgid "Single Site License"
240
- msgstr ""
241
 
242
- #: includes/i18n.php:169
243
  msgid "Unlimited Licenses"
244
  msgstr "Ubegrænsede licenser"
245
 
246
- #: includes/i18n.php:171
247
  msgid "Up to %s Sites"
248
  msgstr "Op til %s websteder"
249
 
250
- #: includes/i18n.php:173
251
  msgid "%sRenew your license now%s to access version %s features and support."
252
- msgstr ""
253
 
254
- #: includes/i18n.php:177
255
- msgid ""
256
- "Enter the email address you've used for the upgrade below and we will resend"
257
- " you the license key."
258
- msgstr ""
259
 
260
- #: includes/i18n.php:181
261
  msgctxt "e.g. Professional Plan"
262
  msgid "%s Plan"
263
  msgstr "%s Plan"
264
 
265
- #: includes/i18n.php:183
266
  msgid "You are just one step away - %s"
267
  msgstr "Du mangler kun ét skridt - %s"
268
 
269
- #: includes/i18n.php:185
270
  msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
271
  msgid "Complete \"%s\" Activation Now"
272
  msgstr "Færdiggør aktivering af \"%s\" nu"
273
 
274
- #: includes/i18n.php:189
275
  msgid "We made a few tweaks to the plugin, %s"
276
- msgstr ""
277
 
278
- #: includes/i18n.php:191
279
  msgid "Opt-in to make \"%s\" Better!"
280
- msgstr ""
281
 
282
- #: includes/i18n.php:193
283
  msgid "Error"
284
  msgstr "Fejl"
285
 
286
- #: includes/i18n.php:195
287
- msgid ""
288
- "Freemius SDK couldn't find the plugin's main file. Please contact "
289
- "sdk@freemius.com with the current error."
290
- msgstr ""
291
 
292
- #: includes/i18n.php:203
293
  msgctxt "as expiration date"
294
  msgid "Expiration"
295
- msgstr ""
296
 
297
- #: includes/i18n.php:205
298
  msgctxt "as software license"
299
  msgid "License"
300
  msgstr "Licens"
301
 
302
- #: includes/i18n.php:207
303
  msgid "not verified"
304
  msgstr "ikke verificeret"
305
 
306
- #: includes/i18n.php:209
307
  msgid "Verify Email"
308
  msgstr "Verificer e-mail"
309
 
310
- #: includes/i18n.php:211
311
  msgctxt "e.g. expires in 2 months"
312
  msgid "Expires in %s"
313
  msgstr "Udløber om %s"
314
 
315
- #: includes/i18n.php:213
316
  msgctxt "e.g. auto renews in 2 months"
317
  msgid "Auto renews in %s"
318
- msgstr ""
319
 
320
- #: includes/i18n.php:215
321
  msgid "No expiration"
322
  msgstr "Udløber ikke"
323
 
324
- #: includes/i18n.php:217
325
  msgid "Expired"
326
  msgstr "Udløbet"
327
 
328
- #: includes/i18n.php:219
329
  msgid "Cancelled"
330
  msgstr "Annulleret"
331
 
332
- #: includes/i18n.php:221
333
  msgctxt "e.g. In 2 hours"
334
  msgid "In %s"
335
  msgstr "Om %s"
336
 
337
- #: includes/i18n.php:223
338
  msgctxt "e.g. 2 min ago"
339
  msgid "%s ago"
340
  msgstr "%s siden"
341
 
342
- #: includes/i18n.php:225
 
 
 
 
343
  msgctxt "as plugin version"
344
  msgid "Version"
345
  msgstr "Version"
346
 
347
- #: includes/i18n.php:227
348
  msgid "Name"
349
  msgstr "Navn"
350
 
351
- #: includes/i18n.php:229
352
  msgid "Email"
353
  msgstr "E-mail"
354
 
355
- #: includes/i18n.php:231
356
  msgid "Email address"
357
  msgstr "E-mailadresse"
358
 
359
- #: includes/i18n.php:233
360
  msgid "Verified"
361
  msgstr "Verificeret"
362
 
363
- #: includes/i18n.php:235
 
 
 
 
 
 
 
 
364
  msgid "Plugin"
365
  msgstr "Plugin"
366
 
367
- #: includes/i18n.php:237
368
  msgid "Plugins"
369
  msgstr "Plugins"
370
 
371
- #: includes/i18n.php:239
 
 
 
 
372
  msgid "Themes"
373
  msgstr "Temaer"
374
 
375
- #: includes/i18n.php:241
376
  msgctxt "as file/folder path"
377
  msgid "Path"
378
  msgstr "Sti"
379
 
380
- #: includes/i18n.php:243
381
  msgid "Title"
382
  msgstr "Titel"
383
 
384
- #: includes/i18n.php:245
385
  msgid "Free version"
386
  msgstr "Gratis version"
387
 
388
- #: includes/i18n.php:247
389
  msgid "Premium version"
390
- msgstr ""
391
 
392
- #: includes/i18n.php:249
393
  msgctxt "as WP plugin slug"
394
  msgid "Slug"
395
  msgstr "Kortnavn"
396
 
397
- #: includes/i18n.php:251
398
  msgid "ID"
399
  msgstr "ID"
400
 
401
- #: includes/i18n.php:253
402
  msgid "Users"
403
  msgstr "Brugere"
404
 
405
- #: includes/i18n.php:255
406
  msgid "Plugin Installs"
407
  msgstr "Plugin-installationer"
408
 
409
- #: includes/i18n.php:257
 
 
 
 
410
  msgctxt "like websites"
411
  msgid "Sites"
412
  msgstr "Websteder"
413
 
414
- #: includes/i18n.php:259
415
  msgid "User ID"
416
  msgstr "Bruger-ID"
417
 
418
- #: includes/i18n.php:261
419
  msgid "Site ID"
420
  msgstr "Websteds-ID"
421
 
422
- #: includes/i18n.php:263
423
  msgid "Public Key"
424
  msgstr "Offentlig nøgle"
425
 
426
- #: includes/i18n.php:265
427
  msgid "Secret Key"
428
  msgstr "Privat nøgle"
429
 
430
- #: includes/i18n.php:267
431
  msgctxt "as secret encryption key missing"
432
  msgid "No Secret"
433
  msgstr "Ingen privat nøgle"
434
 
435
- #: includes/i18n.php:269
436
  msgid "No ID"
437
  msgstr "Intet ID"
438
 
439
- #: includes/i18n.php:271
440
  msgctxt "as synchronize license"
441
  msgid "Sync License"
442
  msgstr "Synkroniser licens"
443
 
444
- #: includes/i18n.php:273
445
  msgctxt "as synchronize"
446
  msgid "Sync"
447
  msgstr "Synkroniser"
448
 
449
- #: includes/i18n.php:275
450
  msgid "Activate License"
451
  msgstr "Aktiver licens"
452
 
453
- #: includes/i18n.php:277
454
  msgid "Activate Free Version"
455
  msgstr "Aktiver gratis version"
456
 
457
- #: includes/i18n.php:279
458
- msgid ""
459
- "Please enter the license key that you received in the email right after the "
460
- "purchase:"
461
- msgstr ""
462
 
463
- #: includes/i18n.php:283
464
  msgid "Activating license..."
465
  msgstr "Aktiverer licens..."
466
 
467
- #: includes/i18n.php:285
468
  msgid "Change License"
469
  msgstr "Skift licens"
470
 
471
- #: includes/i18n.php:287
472
  msgid "Update License"
473
  msgstr "Opdater licens"
474
 
475
- #: includes/i18n.php:289
476
  msgid "Deactivate License"
477
  msgstr "Deaktiver licens"
478
 
479
- #: includes/i18n.php:291
480
  msgid "Activate"
481
  msgstr "Aktiver"
482
 
483
- #: includes/i18n.php:293
484
  msgid "Deactivate"
485
  msgstr "Deaktiver"
486
 
487
- #: includes/i18n.php:295
488
  msgid "Skip & Deactivate"
489
  msgstr "Spring over & deaktiver"
490
 
491
- #: includes/i18n.php:297
 
 
 
 
492
  msgid "No - just deactivate"
493
  msgstr "Nej - bare deaktiver"
494
 
495
- #: includes/i18n.php:299
496
  msgid "Yes - do your thing"
497
- msgstr ""
498
 
499
- #: includes/i18n.php:301
500
  msgctxt "active mode"
501
  msgid "Active"
502
  msgstr "Aktiv"
503
 
504
- #: includes/i18n.php:303
505
  msgctxt "is active mode?"
506
  msgid "Is Active"
507
  msgstr "Er aktiv"
508
 
509
- #: includes/i18n.php:305
510
  msgid "Install Now"
511
  msgstr "Installer nu"
512
 
513
- #: includes/i18n.php:307
514
  msgid "Install Update Now"
515
  msgstr "Installer opdatering nu"
516
 
517
- #: includes/i18n.php:309
518
  msgid "More information about %s"
519
  msgstr "Mere information om %s"
520
 
521
- #: includes/i18n.php:311
522
  msgid "Localhost"
523
  msgstr "Localhost"
524
 
525
- #: includes/i18n.php:313
526
  msgctxt "as activate Professional plan"
527
  msgid "Activate %s Plan"
528
  msgstr "Aktiver plan %s"
529
 
530
- #: includes/i18n.php:315
531
  msgctxt "as 5 licenses left"
532
  msgid "%s left"
533
  msgstr "%s tilbage"
534
 
535
- #: includes/i18n.php:317
536
  msgid "Last license"
537
- msgstr ""
538
 
539
- #: includes/i18n.php:319
540
  msgid "What is your %s?"
541
- msgstr ""
542
 
543
- #: includes/i18n.php:321
544
  msgid "Activate this add-on"
545
  msgstr "Aktiver denne tilføjelse"
546
 
547
- #: includes/i18n.php:323
548
- msgid ""
549
- "Deactivating your license will block all premium features, but will enable "
550
- "you to activate the license on another site. Are you sure you want to "
551
- "proceed?"
552
- msgstr ""
553
 
554
- #: includes/i18n.php:327
555
- msgid ""
556
- "Deleting the account will automatically deactivate your %s plan license so "
557
- "you can use it on other sites. If you want to terminate the recurring "
558
- "payments as well, click the \"Cancel\" button, and first \"Downgrade\" your "
559
- "account. Are you sure you would like to continue with the deletion?"
560
- msgstr ""
561
 
562
- #: includes/i18n.php:331
563
- msgid ""
564
- "Deletion is not temporary. Only delete if you no longer want to use this "
565
- "plugin anymore. Are you sure you would like to continue with the deletion?"
566
- msgstr ""
567
 
568
- #: includes/i18n.php:335
569
- msgid ""
570
- "Downgrading your plan will immediately stop all future recurring payments "
571
- "and your %s plan license will expire in %s."
572
- msgstr ""
573
 
574
- #: includes/i18n.php:339
575
- msgid ""
576
- "Cancelling the trial will immediately block access to all premium features. "
577
- "Are you sure?"
578
- msgstr ""
579
 
580
- #: includes/i18n.php:343
581
- msgid ""
582
- "You can still enjoy all %s features but you will not have access to plugin "
583
- "updates and support."
584
- msgstr ""
585
 
586
- #: includes/i18n.php:347
587
- msgid ""
588
- "Once your license expire you can still use the Free version but you will NOT"
589
- " have access to the %s features."
590
- msgstr ""
591
 
592
- #: includes/i18n.php:351
593
  msgid "Are you sure you want to proceed?"
594
- msgstr ""
595
 
596
- #: includes/i18n.php:357
597
  msgid "Add Ons for %s"
598
  msgstr "Tilføjelser til %s"
599
 
600
- #: includes/i18n.php:359
601
- msgid ""
602
- "We could'nt load the add-ons list. It's probably an issue on our side, "
603
- "please try to come back in few minutes."
604
- msgstr ""
605
 
606
- #: includes/i18n.php:365
607
  msgid "Anonymous feedback"
608
  msgstr "Anonym feedback"
609
 
610
- #: includes/i18n.php:367
611
  msgid "Quick feedback"
612
  msgstr "Hurtig feedback"
613
 
614
- #: includes/i18n.php:369
615
  msgid "If you have a moment, please let us know why you are deactivating"
616
- msgstr ""
617
 
618
- #: includes/i18n.php:373
619
  msgid "Yes - Deactivate"
620
  msgstr "Ja - deaktiver"
621
 
622
- #: includes/i18n.php:375
623
  msgid "Submit & Deactivate"
624
  msgstr "Send & deaktiver"
625
 
626
- #: includes/i18n.php:377
627
  msgid "Cancel"
628
  msgstr "Annuller"
629
 
630
- #: includes/i18n.php:379
631
  msgid "I no longer need the plugin"
632
- msgstr ""
633
 
634
- #: includes/i18n.php:381
635
  msgid "I found a better plugin"
636
  msgstr "Jeg har fundet et bedre plugin"
637
 
638
- #: includes/i18n.php:383
639
  msgid "I only needed the plugin for a short period"
640
- msgstr ""
641
 
642
- #: includes/i18n.php:385
643
  msgid "The plugin broke my site"
644
  msgstr "Pluginnet ødelagde mit websted"
645
 
646
- #: includes/i18n.php:387
647
  msgid "The plugin suddenly stopped working"
648
  msgstr "Pluginnet virker ikke længere"
649
 
650
- #: includes/i18n.php:389
651
  msgid "I can't pay for it anymore"
652
  msgstr "Jeg kan ikke længere betale for det"
653
 
654
- #: includes/i18n.php:391
655
  msgid "It's a temporary deactivation. I'm just debugging an issue."
656
- msgstr ""
657
 
658
- #: includes/i18n.php:395
659
  msgctxt ""
660
- "the text of the \"other\" reason for deactivating the plugin that is shown "
661
- "in the modal box."
662
  msgid "Other"
663
  msgstr "Andet"
664
 
665
- #: includes/i18n.php:399
666
  msgid "Kindly tell us the reason so we can improve."
667
- msgstr ""
668
 
669
- #: includes/i18n.php:401
670
  msgid "What's the plugin's name?"
671
- msgstr ""
672
 
673
- #: includes/i18n.php:403
674
  msgid "What price would you feel comfortable paying?"
675
- msgstr ""
676
 
677
- #: includes/i18n.php:405
678
  msgid "I couldn't understand how to make it work"
679
- msgstr ""
680
 
681
- #: includes/i18n.php:407
682
- msgid ""
683
- "The plugin is great, but I need specific feature that you don't support"
684
- msgstr ""
685
 
686
- #: includes/i18n.php:411
687
  msgid "The plugin is not working"
688
  msgstr "Pluginnet virker ikke"
689
 
690
- #: includes/i18n.php:413
691
  msgid "It's not what I was looking for"
692
- msgstr ""
693
 
694
- #: includes/i18n.php:415
695
  msgid "The plugin didn't work as expected"
696
- msgstr ""
697
 
698
- #: includes/i18n.php:417
699
  msgid "What feature?"
700
- msgstr ""
701
 
702
- #: includes/i18n.php:419
703
  msgid "Kindly share what didn't work so we can fix it for future users..."
704
- msgstr ""
705
 
706
- #: includes/i18n.php:423
707
  msgid "What you've been looking for?"
708
- msgstr ""
709
 
710
- #: includes/i18n.php:425
711
  msgid "What did you expect?"
712
  msgstr "Hvad forventede du?"
713
 
714
- #: includes/i18n.php:427
715
  msgid "The plugin didn't work"
716
  msgstr "Pluginnet virkede ikke"
717
 
718
- #: includes/i18n.php:429
719
  msgid "I don't like to share my information with you"
720
- msgstr ""
721
 
722
- #: includes/i18n.php:431
723
- msgid ""
724
- "You might have missed it, but you don't have to share any data and can just "
725
- "%s the opt-in."
726
- msgstr ""
727
 
728
- #: includes/i18n.php:441
729
  msgctxt "greeting"
730
  msgid "Hey %s,"
731
  msgstr "Hey %s,"
732
 
733
- #: includes/i18n.php:443
734
  msgctxt "a greeting. E.g. Thanks John!"
735
  msgid "Thanks %s!"
736
  msgstr "Tak %s!"
737
 
738
- #: includes/i18n.php:445
739
- msgid ""
740
- "Never miss an important update - opt-in to our security and feature updates "
741
- "notifications, and non-sensitive diagnostic tracking with %4$s."
742
- msgstr ""
743
 
744
- #: includes/i18n.php:449
745
- msgid ""
746
- "Please help us improve %1$s! If you opt-in, some data about your usage of "
747
- "%1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still "
748
- "work just fine."
749
- msgstr ""
750
 
751
- #: includes/i18n.php:453
752
- msgid ""
753
- "You should receive an activation email for %s to your mailbox at %s. Please "
754
- "make sure you click the activation button in that email to %s."
755
- msgstr ""
756
 
757
- #: includes/i18n.php:455
758
  msgid "complete the install"
759
- msgstr ""
760
 
761
- #: includes/i18n.php:457
762
  msgid "start the trial"
763
- msgstr ""
764
 
765
- #: includes/i18n.php:459
766
- msgid ""
767
- "Thanks for purchasing %s! To get started, please enter your license key:"
768
- msgstr ""
769
 
770
- #: includes/i18n.php:463
771
- msgid ""
772
- "The plugin will be periodically sending data to %s to check for plugin "
773
- "updates and verify the validity of your license."
774
- msgstr ""
775
 
776
- #: includes/i18n.php:467
777
  msgid "What permissions are being granted?"
778
  msgstr "Hvilke tilladelser bliver givet?"
779
 
780
- #: includes/i18n.php:469
781
  msgid "Your Profile Overview"
782
  msgstr "Overblik af din profil"
783
 
784
- #: includes/i18n.php:471
785
  msgid "Name and email address"
786
  msgstr "Navn og e-mailadresse"
787
 
788
- #: includes/i18n.php:473
789
  msgid "Your Site Overview"
790
  msgstr "Overblik af dit websted"
791
 
792
- #: includes/i18n.php:475
793
  msgid "Site URL, WP version, PHP info, plugins & themes"
794
- msgstr ""
795
 
796
- #: includes/i18n.php:479
797
  msgid "Current Plugin Events"
798
  msgstr "Nuværende plugin-begivenheder"
799
 
800
- #: includes/i18n.php:481
801
  msgid "Activation, deactivation and uninstall"
802
  msgstr "Aktivering, deaktivering og afinstallering"
803
 
804
- #: includes/i18n.php:483
805
  msgid "Plugins & Themes"
806
  msgstr "Plugins & Temaer"
807
 
808
- #: includes/i18n.php:485
809
  msgid "Titles, versions and state."
810
  msgstr "Titler, versioner og tilstand."
811
 
812
- #: includes/i18n.php:487
813
  msgid "Admin Notices"
814
- msgstr ""
815
 
816
- #: includes/i18n.php:489
817
  msgid "Newsletter"
818
  msgstr "Nyhedsbrev"
819
 
820
- #: includes/i18n.php:491
821
  msgid "Updates, announcements, marketing, no spam"
822
- msgstr ""
823
 
824
- #: includes/i18n.php:493
825
  msgid "Privacy Policy"
826
  msgstr "Privatlivspolitik"
827
 
828
- #: includes/i18n.php:495
829
  msgid "Terms of Service"
830
  msgstr "Servicevilkår"
831
 
832
- #: includes/i18n.php:497
833
  msgctxt "as activating plugin"
834
  msgid "Activating"
835
  msgstr "Aktiverer"
836
 
837
- #: includes/i18n.php:499
838
  msgctxt "as in the process of sending an email"
839
  msgid "Sending email"
840
  msgstr "Sender e-mail"
841
 
842
- #: includes/i18n.php:503
843
  msgctxt "button label"
844
  msgid "Allow & Continue"
845
  msgstr "Tillad & Fortsæt"
846
 
847
- #: includes/i18n.php:505
848
  msgctxt "button label"
849
  msgid "Agree & Activate License"
850
  msgstr "Accepter & aktiver licens"
851
 
852
- #: includes/i18n.php:507
853
  msgctxt "verb"
854
  msgid "Skip"
855
  msgstr "Spring over"
856
 
857
- #: includes/i18n.php:509
858
  msgid "Click here to use the plugin anonymously"
859
  msgstr "Klik her for at benytte pluginnet anonymt"
860
 
861
- #: includes/i18n.php:511
862
  msgid "Re-send activation email"
863
  msgstr "Gensend e-mail om aktivering"
864
 
865
- #: includes/i18n.php:513
866
  msgid "License key"
867
  msgstr "Licensnøgle"
868
 
869
- #: includes/i18n.php:515
870
  msgid "Send License Key"
871
  msgstr "Send licensnøgle"
872
 
873
- #: includes/i18n.php:517
874
  msgid "Sending license key"
875
  msgstr "Sender licensnøgle"
876
 
877
- #: includes/i18n.php:519
878
  msgid "Have a license key?"
879
  msgstr "Har du en licensnøgle?"
880
 
881
- #: includes/i18n.php:521
882
  msgid "Don't have a license key?"
883
  msgstr "Har du ikke en licensnøgle?"
884
 
885
- #: includes/i18n.php:523
886
  msgid "Can't find your license key?"
887
  msgstr "Kan du ikke finde din licensnøgle?"
888
 
889
- #: includes/i18n.php:525
890
- msgid ""
891
- "We couldn't find your email address in the system, are you sure it's the "
892
- "right address?"
893
- msgstr ""
894
 
895
- #: includes/i18n.php:529
896
- msgid ""
897
- "We can't see any active licenses associated with that email address, are you"
898
- " sure it's the right address?"
899
- msgstr ""
900
 
901
- #: includes/i18n.php:533
902
  msgid "Opt In"
903
- msgstr ""
904
 
905
- #: includes/i18n.php:535
906
  msgid "Opt Out"
907
- msgstr ""
908
 
909
- #: includes/i18n.php:537
910
  msgid "On second thought - I want to continue helping"
911
- msgstr ""
912
 
913
- #: includes/i18n.php:541
914
  msgid "Opting out..."
915
- msgstr ""
916
 
917
- #: includes/i18n.php:543
918
  msgid "Opting in..."
919
- msgstr ""
920
 
921
- #: includes/i18n.php:545
922
- msgid ""
923
- "We appreciate your help in making the %s better by letting us track some "
924
- "usage data."
925
- msgstr ""
926
 
927
- #: includes/i18n.php:549
928
- msgid ""
929
- "Usage tracking is done in the name of making %s better. Making a better user"
930
- " experience, prioritizing new features, and more good things. We'd really "
931
- "appreciate if you'll reconsider letting us continue with the tracking."
932
- msgstr ""
933
 
934
- #: includes/i18n.php:553
935
- msgid ""
936
- "By clicking \"Opt Out\", we will no longer be sending any data from %s to "
937
- "%s."
938
- msgstr ""
939
 
940
- #: includes/i18n.php:563
941
  msgid "Screenshots"
942
  msgstr "Skærmbilleder"
943
 
944
- #: includes/i18n.php:565
945
  msgid "Click to view full-size screenshot %d"
946
- msgstr ""
947
 
948
- #: includes/i18n.php:573
949
  msgid "Freemius Debug"
950
  msgstr "Freemius Debug"
951
 
952
- #: includes/i18n.php:575
953
  msgctxt "as turned on"
954
  msgid "On"
955
  msgstr "Til"
956
 
957
- #: includes/i18n.php:577
958
  msgctxt "as turned off"
959
  msgid "Off"
960
  msgstr "Fra"
961
 
962
- #: includes/i18n.php:579
963
  msgctxt "as code debugging"
964
  msgid "Debugging"
965
  msgstr "Fejlfinding"
966
 
967
- #: includes/i18n.php:581
968
  msgid "Freemius State"
969
  msgstr "Freemius tilstand"
970
 
971
- #: includes/i18n.php:583
972
  msgctxt "as connection was successful"
973
  msgid "Connected"
974
  msgstr "Forbundet"
975
 
976
- #: includes/i18n.php:585
977
  msgctxt "as connection blocked"
978
  msgid "Blocked"
979
  msgstr "Blokeret"
980
 
981
- #: includes/i18n.php:587
982
  msgctxt "as application program interface"
983
  msgid "API"
984
  msgstr "API"
985
 
986
- #: includes/i18n.php:589
987
  msgctxt "as software development kit versions"
988
  msgid "SDK"
989
  msgstr "SDK"
990
 
991
- #: includes/i18n.php:591
992
  msgctxt "as software development kit versions"
993
  msgid "SDK Versions"
994
  msgstr "SDK-versioner"
995
 
996
- #: includes/i18n.php:595
997
  msgctxt "as plugin folder path"
998
  msgid "Plugin Path"
999
  msgstr "Plugin-sti"
1000
 
1001
- #: includes/i18n.php:597
1002
  msgctxt "as sdk path"
1003
  msgid "SDK Path"
1004
  msgstr "SDK-sti"
1005
 
1006
- #: includes/i18n.php:599
1007
  msgid "Add Ons of Plugin %s"
1008
  msgstr "Tilføjelser til plugin %s"
1009
 
1010
- #: includes/i18n.php:601
1011
  msgid "Are you sure you want to delete all Freemius data?"
1012
- msgstr ""
1013
 
1014
- #: includes/i18n.php:605
1015
  msgid "Actions"
1016
  msgstr "Handlinger"
1017
 
1018
- #: includes/i18n.php:607
1019
  msgid "Delete All Accounts"
1020
  msgstr "Slet alle konti"
1021
 
1022
- #: includes/i18n.php:609
1023
  msgid "Start Fresh"
1024
  msgstr "Start forfra"
1025
 
1026
- #: includes/i18n.php:611
1027
  msgid "Clear API Cache"
1028
  msgstr "Ryd API-cache"
1029
 
1030
- #: includes/i18n.php:613
1031
  msgid "Sync Data From Server"
1032
  msgstr "Synkroniser data fra server"
1033
 
1034
- #: includes/i18n.php:615
1035
  msgid "Scheduled Crons"
1036
  msgstr "Planlagte cron jobs"
1037
 
1038
- #: includes/i18n.php:617
 
 
 
 
1039
  msgid "Plugins & Themes Sync"
1040
  msgstr "Synkronisering af plugins og temaer"
1041
 
1042
- #: includes/i18n.php:625
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1043
  msgctxt "as congratulations"
1044
  msgid "Congrats"
1045
  msgstr "Tillykke"
1046
 
1047
- #: includes/i18n.php:627
1048
  msgctxt "exclamation"
1049
  msgid "Oops"
1050
  msgstr "Ups"
1051
 
1052
- #: includes/i18n.php:629
1053
  msgctxt "interjection expressing joy or exuberance"
1054
  msgid "Yee-haw"
1055
- msgstr ""
1056
 
1057
- #: includes/i18n.php:633
1058
  msgctxt ""
1059
- "(especially in electronic communication) used to express elation, "
1060
- "enthusiasm, or triumph."
1061
  msgid "W00t"
1062
- msgstr ""
1063
 
1064
- #: includes/i18n.php:637
1065
  msgctxt "a positive response"
1066
  msgid "Right on"
1067
  msgstr "Sådan"
1068
 
1069
- #: includes/i18n.php:639
1070
  msgctxt ""
1071
- "something somebody says when they are thinking about what you have just "
1072
- "said. "
1073
  msgid "Hmm"
1074
  msgstr "Hmm"
1075
 
1076
- #: includes/i18n.php:643
1077
  msgid "O.K"
1078
  msgstr "O.K"
1079
 
1080
- #: includes/i18n.php:645
1081
  msgctxt "exclamation"
1082
  msgid "Hey"
1083
  msgstr "Hey"
1084
 
1085
- #: includes/i18n.php:647
1086
  msgctxt "advance notice of something that will need attention."
1087
  msgid "Heads up"
1088
  msgstr "Se her"
1089
 
1090
- #: includes/i18n.php:657
1091
  msgid "Seems like you got the latest release."
1092
- msgstr ""
1093
 
1094
- #: includes/i18n.php:659
1095
  msgid "You are all good!"
1096
  msgstr "Det var det!"
1097
 
1098
- #: includes/i18n.php:661
1099
- msgid ""
1100
- "Sorry, we could not complete the email update. Another user with the same "
1101
- "email is already registered."
1102
- msgstr ""
1103
 
1104
- #: includes/i18n.php:665
1105
- msgid ""
1106
- "If you would like to give up the ownership of the plugin's account to %s "
1107
- "click the Change Ownership button."
1108
- msgstr ""
1109
 
1110
- #: includes/i18n.php:669
1111
- msgid ""
1112
- "Your email was successfully updated. You should receive an email with "
1113
- "confirmation instructions in few moments."
1114
- msgstr ""
1115
 
1116
- #: includes/i18n.php:673
1117
  msgid "Your name was successfully updated."
1118
  msgstr "Dit navn er blevet opdateret."
1119
 
1120
- #: includes/i18n.php:675
1121
  msgid "You have successfully updated your %s."
1122
  msgstr "Opdatering af %s blev gennemført."
1123
 
1124
- #: includes/i18n.php:677
1125
  msgid "Please provide your full name."
1126
  msgstr "Indtast venligst dit fulde navn."
1127
 
1128
- #: includes/i18n.php:679
1129
- msgid ""
1130
- "Verification mail was just sent to %s. If you can't find it after 5 min, "
1131
- "please check your spam box."
1132
- msgstr ""
1133
 
1134
- #: includes/i18n.php:683
1135
- msgid ""
1136
- "Just letting you know that the add-ons information of %s is being pulled "
1137
- "from an external server."
1138
- msgstr ""
1139
 
1140
- #: includes/i18n.php:687
1141
  msgid "No credit card required"
1142
  msgstr "Betalingskort ikke påkrævet"
1143
 
1144
- #: includes/i18n.php:689
1145
  msgid "Premium plugin version was successfully activated."
1146
- msgstr ""
1147
 
1148
- #: includes/i18n.php:693
1149
  msgid "The upgrade of %s was successfully completed."
1150
- msgstr ""
1151
 
1152
- #: includes/i18n.php:695
1153
  msgid "Your account was successfully activated with the %s plan."
1154
- msgstr ""
1155
 
1156
- #: includes/i18n.php:699
1157
  msgid "Download the latest %s version now"
1158
  msgstr "Download den seneste version af %s nu"
1159
 
1160
- #: includes/i18n.php:701
1161
  msgid "Please follow these steps to complete the upgrade"
1162
- msgstr ""
1163
 
1164
- #: includes/i18n.php:705
1165
  msgid "Download the latest %s version"
1166
  msgstr "Download den seneste version af %s"
1167
 
1168
- #: includes/i18n.php:707
 
 
 
 
1169
  msgid "Deactivate the free version"
1170
  msgstr "Deaktiver den gratis version"
1171
 
1172
- #: includes/i18n.php:709
1173
  msgid "Upload and activate the downloaded version"
1174
  msgstr "Upload og aktiver den downloadede version"
1175
 
1176
- #: includes/i18n.php:711
1177
  msgid "How to upload and activate?"
1178
  msgstr "Upload og aktivering, hvordan?"
1179
 
1180
- #: includes/i18n.php:713
1181
  msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1182
  msgid "%s Add-on was successfully purchased."
1183
  msgstr "Betalingen for tilføjelsen %s blev gennemført."
1184
 
1185
- #: includes/i18n.php:717
1186
  msgid "Your %s Add-on plan was successfully upgraded."
1187
- msgstr ""
1188
 
1189
- #: includes/i18n.php:721
1190
  msgid "Your email has been successfully verified - you are AWESOME!"
1191
- msgstr ""
1192
 
1193
- #: includes/i18n.php:725
1194
  msgid "Your plan was successfully upgraded."
1195
  msgstr "Din plan er blevet opgraderet."
1196
 
1197
- #: includes/i18n.php:727
1198
  msgid "Your plan was successfully changed to %s."
1199
  msgstr "Din plan er blevet ændret til %s."
1200
 
1201
- #: includes/i18n.php:729
1202
- msgid ""
1203
- "Your license has expired. You can still continue using the free plugin "
1204
- "forever."
1205
- msgstr ""
1206
 
1207
- #: includes/i18n.php:733
1208
- msgid ""
1209
- "Your license has been cancelled. If you think it's a mistake, please contact"
1210
- " support."
1211
- msgstr ""
1212
 
1213
- #: includes/i18n.php:737
1214
  msgid "Your trial has been successfully started."
1215
  msgstr "Din prøveperiode er begyndt."
1216
 
1217
- #: includes/i18n.php:739
1218
  msgid "Your license was successfully activated."
1219
  msgstr "Din licens er blevet aktiveret."
1220
 
1221
- #: includes/i18n.php:741
1222
  msgid "It looks like your site currently doesn't have an active license."
1223
  msgstr "Det ser ud til, at dit websted endnu ikke har en aktiv licens."
1224
 
1225
- #: includes/i18n.php:745
1226
- msgid ""
1227
- "Your license was successfully deactivated, you are back to the %s plan."
1228
- msgstr ""
1229
 
1230
- #: includes/i18n.php:749
1231
  msgid "It looks like the license deactivation failed."
1232
  msgstr "Det ser ud til, at licens-deaktiveringen mislykkedes."
1233
 
1234
- #: includes/i18n.php:753
1235
  msgid "It looks like the license could not be activated."
1236
  msgstr "Det ser ud til, at licensen ikke kunne aktiveres."
1237
 
1238
- #: includes/i18n.php:757
1239
  msgid "Error received from the server:"
1240
  msgstr "Fejl modtager fra serveren:"
1241
 
1242
- #: includes/i18n.php:759
1243
- msgid ""
1244
- "Your trial has expired. You can still continue using all our free features."
1245
  msgstr "Din prøveperiode er udløbet. Du kan fortsat bruge alle vores gratis funktioner."
1246
 
1247
- #: includes/i18n.php:763
1248
- msgid ""
1249
- "Your plan was successfully downgraded. Your %s plan license will expire in "
1250
- "%s."
1251
- msgstr ""
1252
 
1253
- #: includes/i18n.php:767
1254
- msgid ""
1255
- "Seems like we are having some temporary issue with your plan downgrade. "
1256
- "Please try again in few minutes."
1257
- msgstr ""
1258
 
1259
- #: includes/i18n.php:771
1260
- msgid ""
1261
- "It looks like you are not in trial mode anymore so there's nothing to cancel"
1262
- " :)"
1263
- msgstr ""
1264
 
1265
- #: includes/i18n.php:775
1266
  msgid "Your %s free trial was successfully cancelled."
1267
- msgstr ""
1268
 
1269
- #: includes/i18n.php:779
1270
  msgctxt "%s - numeric version number"
1271
  msgid "Version %s was released."
1272
  msgstr "Version %s er blevet udgivet."
1273
 
1274
- #: includes/i18n.php:783
1275
  msgid "Please download %s."
1276
  msgstr "Download venligst %s."
1277
 
1278
- #: includes/i18n.php:785
1279
  msgctxt "%s - plan name, as the latest professional version here"
1280
  msgid "the latest %s version here"
1281
  msgstr "den seneste version af %s her"
1282
 
1283
- #: includes/i18n.php:789
1284
- msgid ""
1285
- "How do you like %s so far? Test all our %s premium features with a %d-day "
1286
- "free trial."
1287
- msgstr ""
1288
 
1289
- #: includes/i18n.php:793
1290
  msgctxt "call to action"
1291
  msgid "Start free trial"
1292
  msgstr "Start gratis prøveperiode"
1293
 
1294
- #: includes/i18n.php:795
1295
  msgid "Starting trial"
1296
- msgstr ""
1297
 
1298
- #: includes/i18n.php:797
1299
  msgid "Please wait"
1300
- msgstr ""
1301
 
1302
- #: includes/i18n.php:799
1303
- msgid ""
1304
- "Seems like we are having some temporary issue with your trial cancellation. "
1305
- "Please try again in few minutes."
1306
- msgstr ""
1307
 
1308
- #: includes/i18n.php:803
1309
  msgid "You already utilized a trial before."
1310
  msgstr "Du har allerede brugt din prøveperiode."
1311
 
1312
- #: includes/i18n.php:805
1313
  msgid "You are already running the plugin in a trial mode."
1314
- msgstr ""
1315
 
1316
- #: includes/i18n.php:809
1317
  msgid "Plan %s do not exist, therefore, can't start a trial."
1318
- msgstr ""
1319
 
1320
- #: includes/i18n.php:813
1321
  msgid "Plan %s does not support a trial period."
1322
  msgstr "Plan %s understøtter ikke en prøveperiode."
1323
 
1324
- #: includes/i18n.php:815
1325
  msgid "None of the plugin's plans supports a trial period."
1326
- msgstr ""
1327
 
1328
- #: includes/i18n.php:819
1329
- msgid ""
1330
- "Unexpected API error. Please contact the plugin's author with the following "
1331
- "error."
1332
- msgstr ""
1333
 
1334
- #: includes/i18n.php:823
1335
  msgid "No commitment for %s days - cancel anytime!"
1336
  msgstr "Ingen bindinger i %s dage - annuller når som helst!"
1337
 
1338
- #: includes/i18n.php:825
1339
- msgid ""
1340
- "Your license has expired. You can still continue using all the %s features, "
1341
- "but you'll need to renew your license to continue getting updates and "
1342
- "support."
1343
- msgstr ""
1344
 
1345
- #: includes/i18n.php:829
1346
  msgid "Couldn't activate %s."
1347
  msgstr "Kunne ikke aktivere %s."
1348
 
1349
- #: includes/i18n.php:831
1350
  msgid "Please contact us with the following message:"
1351
  msgstr "Kontakt os venligst med følgende besked:"
1352
 
1353
- #: includes/i18n.php:833
1354
- msgid ""
1355
- "It looks like you are still on the %s plan. If you did upgrade or change "
1356
- "your plan, it's probably an issue on our side - sorry."
1357
- msgstr ""
1358
 
1359
- #: includes/i18n.php:837
1360
  msgid "Please contact us here"
1361
  msgstr "Kontakt os her"
1362
 
1363
- #: includes/i18n.php:839
1364
- msgid ""
1365
- "I have upgraded my account but when I try to Sync the License, the plan "
1366
- "remains %s."
1367
- msgstr ""
1368
 
1369
- #: includes/i18n.php:847
1370
  msgid "From unknown reason, the API connectivity test failed."
1371
- msgstr ""
1372
 
1373
- #: includes/i18n.php:851
1374
- msgid ""
1375
- "It's probably a temporary issue on our end. Just to be sure, with your "
1376
- "permission, would it be o.k to run another connectivity test?"
1377
- msgstr ""
1378
 
1379
- #: includes/i18n.php:855
1380
- msgid ""
1381
- "We use PHP cURL library for the API calls, which is a very common library "
1382
- "and usually installed out of the box. Unfortunately, cURL is not installed "
1383
- "on your server."
1384
- msgstr ""
1385
 
1386
- #: includes/i18n.php:859
1387
- msgid ""
1388
- "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1389
- msgstr ""
1390
 
1391
- #: includes/i18n.php:863
 
 
 
 
1392
  msgctxt "as pluginX requires an access to our API"
1393
  msgid "%s requires an access to our API."
1394
- msgstr ""
1395
 
1396
- #: includes/i18n.php:867
1397
- msgid ""
1398
- "It looks like your server is using Squid ACL (access control lists), which "
1399
- "blocks the connection."
1400
- msgstr ""
1401
 
1402
- #: includes/i18n.php:871
1403
  msgid "I don't know what is Squid or ACL, help me!"
1404
- msgstr ""
1405
 
1406
- #: includes/i18n.php873, includes/i18n.php:887
1407
- msgid ""
1408
- "We'll make sure to contact your hosting company and resolve the issue. You "
1409
- "will get a follow-up email to %s once we have an update."
1410
- msgstr ""
1411
 
1412
- #: includes/i18n.php:877
1413
  msgid "I'm a system administrator"
1414
  msgstr "Jeg er en system-administrator"
1415
 
1416
- #: includes/i18n.php:879
1417
- msgid ""
1418
- "Great, please whitelist the following domains: %s. Once you done, deactivate"
1419
- " the plugin and activate it again."
1420
- msgstr ""
1421
 
1422
- #: includes/i18n.php:883
1423
  msgid "I don't know what is cURL or how to install it, help me!"
1424
- msgstr ""
1425
 
1426
- #: includes/i18n.php:891
1427
- msgid ""
1428
- "Great, please install cURL and enable it in your php.ini file. To make sure "
1429
- "it was successfully activated, use 'phpinfo()'. Once activated, deactivate "
1430
- "the plugin and reactivate it back again."
1431
- msgstr ""
1432
 
1433
- #: includes/i18n.php:895
1434
- msgid ""
1435
- "We are sure it's an issue on our side and more than happy to resolve it for "
1436
- "you ASAP if you give us a chance."
1437
- msgstr ""
1438
 
1439
- #: includes/i18n.php:899
1440
- msgid ""
1441
- "Sorry for the inconvenience and we are here to help if you give us a chance."
1442
- msgstr ""
1443
 
1444
- #: includes/i18n.php:903
1445
  msgid "Yes - I'm giving you a chance to fix it"
1446
  msgstr "Ja - jeg giver jer en chance for at rette det"
1447
 
1448
- #: includes/i18n.php:905
1449
- msgid ""
1450
- "We will do our best to whitelist your server and resolve this issue ASAP. "
1451
- "You will get a follow-up email to %s once we have an update."
1452
- msgstr ""
1453
 
1454
- #: includes/i18n.php:909
1455
  msgid "Let's try your previous version"
1456
  msgstr "Lad os prøve din forrige version"
1457
 
1458
- #: includes/i18n.php:911
1459
  msgid "Uninstall this version and install the previous one."
1460
  msgstr "Afinstaller denne version og installer den forrige."
1461
 
1462
- #: includes/i18n.php:915
1463
  msgid "That's exhausting, please deactivate"
1464
- msgstr ""
1465
 
1466
- #: includes/i18n.php:917
1467
- msgid ""
1468
- "We feel your frustration and sincerely apologize for the inconvenience. Hope"
1469
- " to see you again in the future."
1470
- msgstr ""
1471
 
1472
- #: includes/i18n.php:921
1473
- msgid ""
1474
- "Thank for giving us the chance to fix it! A message was just sent to our "
1475
- "technical staff. We will get back to you as soon as we have an update to %s."
1476
- " Appreciate your patience."
1477
- msgstr ""
1478
 
1479
- #: includes/i18n.php:925
1480
  msgctxt "%1s - plugin title, %2s - API domain"
1481
- msgid ""
1482
- "Your server is blocking the access to Freemius' API, which is crucial for "
1483
- "%1s synchronization. Please contact your host to whitelist %2s"
1484
- msgstr ""
1485
 
1486
- #: includes/i18n.php:929
1487
- msgid ""
1488
- "It seems like one of the authentication parameters is wrong. Update your "
1489
- "Public Key, Secret Key & User ID, and try again."
1490
- msgstr ""
1491
 
1492
- #: includes/i18n.php:937
1493
- msgid ""
1494
- "Please check your mailbox, you should receive an email via %s to confirm the"
1495
- " ownership change. From security reasons, you must confirm the change within"
1496
- " the next 15 min. If you cannot find the email, please check your spam "
1497
- "folder."
1498
- msgstr ""
1499
 
1500
- #: includes/i18n.php:941
1501
- msgid ""
1502
- "Thanks for confirming the ownership change. An email was just sent to %s for"
1503
- " final approval."
1504
- msgstr ""
1505
 
1506
- #: includes/i18n.php:945
1507
  msgid "%s is the new owner of the account."
1508
  msgstr "%s er den nye ejer af kontoen."
1509
 
1510
- #: includes/i18n.php:949
1511
  msgctxt "addonX cannot run without pluginY"
1512
  msgid "%s cannot run without %s."
1513
  msgstr "%s virker ikke uden %s."
1514
 
1515
- #: includes/i18n.php:953
1516
  msgctxt "addonX cannot run..."
1517
  msgid "%s cannot run without the plugin."
1518
  msgstr "%s virker ikke uden pluginnet."
1519
 
1520
- #: includes/i18n.php:957
1521
  msgctxt "pluginX activation was successfully..."
1522
  msgid "%s activation was successfully completed."
1523
  msgstr "Aktivering af %s blev gennemført."
1524
 
1525
- #: includes/i18n.php:961
1526
  msgctxt "Plugin installer section title"
1527
  msgid "Features & Pricing"
1528
  msgstr "Funktioner og priser"
1529
 
1530
- #: includes/i18n.php:965
1531
  msgid "Add-on must be deployed to WordPress.org or Freemius."
1532
- msgstr ""
1533
 
1534
- #: includes/i18n.php:969
1535
  msgid "Paid add-on must be deployed to Freemius."
1536
- msgstr ""
1537
 
1538
- #: includes/i18n.php:977
1539
- msgid ""
1540
- "%s is a premium only add-on. You have to purchase a license first before "
1541
- "activating the plugin."
1542
- msgstr ""
1543
 
1544
- #: includes/i18n.php:981
1545
- msgid ""
1546
- "%s free trial was successfully cancelled. Since the add-on is premium only "
1547
- "it was automatically deactivated. If you like to use it in the future, "
1548
- "you'll have to purchase a license."
1549
- msgstr ""
1550
 
1551
- #: includes/i18n.php:993
1552
  msgctxt "as every month"
1553
  msgid "Monthly"
1554
  msgstr "Månedligt"
1555
 
1556
- #: includes/i18n.php:995
1557
  msgctxt "as monthly period"
1558
  msgid "mo"
1559
  msgstr "md"
1560
 
1561
- #: includes/i18n.php:997
1562
  msgctxt "as once a year"
1563
  msgid "Annual"
1564
  msgstr "Årligt"
1565
 
1566
- #: includes/i18n.php:999
1567
  msgctxt "as once a year"
1568
  msgid "Annually"
1569
  msgstr "Årligt"
1570
 
1571
- #: includes/i18n.php:1001
1572
  msgctxt "as once a year"
1573
  msgid "Once"
1574
  msgstr "Engangsbeløb"
1575
 
1576
- #: includes/i18n.php:1003
1577
  msgctxt "as annual period"
1578
  msgid "year"
1579
  msgstr "år"
1580
 
1581
- #: includes/i18n.php:1005
1582
  msgid "Lifetime"
1583
- msgstr ""
1584
 
1585
- #: includes/i18n.php:1007
1586
  msgctxt "e.g. the best product"
1587
  msgid "Best"
1588
  msgstr "Bedste"
1589
 
1590
- #: includes/i18n.php:1009
1591
  msgctxt "e.g. billed monthly"
1592
  msgid "Billed %s"
1593
- msgstr ""
1594
 
1595
- #: includes/i18n.php:1011
1596
  msgctxt "as a discount of $5 or 10%"
1597
  msgid "Save %s"
1598
  msgstr "Spar %s"
1599
 
1600
- #: includes/i18n.php:1015
1601
  msgid "View details"
1602
  msgstr "Vis detaljer"
1603
 
1604
- #: includes/i18n.php:1023
1605
  msgctxt "button label"
1606
  msgid "Approve & Start Trial"
1607
- msgstr ""
1608
 
1609
- #: includes/i18n.php:1027
1610
- msgid ""
1611
- "You are 1-click away from starting your %1$s-day free trial of the %2$s "
1612
- "plan."
1613
- msgstr ""
1614
 
1615
- #: includes/i18n.php:1031
1616
- msgid ""
1617
- "For compliance with the WordPress.org guidelines, before we start the trial "
1618
- "we ask that you opt-in with your user and non-sensitive site information, "
1619
- "allowing the plugin to periodically send data to %s to check for version "
1620
- "updates and to validate your trial."
1621
- msgstr ""
1622
 
1623
- #: includes/i18n.php:1043
1624
  msgid "Business name"
1625
- msgstr ""
1626
 
1627
- #: includes/i18n.php:1045
1628
  msgid "Tax / VAT ID"
1629
- msgstr ""
1630
 
1631
- #: includes/i18n.php:1047
1632
  msgid "Address Line %d"
1633
- msgstr ""
1634
 
1635
- #: includes/i18n.php:1049
1636
  msgid "Country"
1637
- msgstr ""
1638
 
1639
- #: includes/i18n.php:1051
1640
  msgid "Select Country"
1641
- msgstr ""
1642
 
1643
- #: includes/i18n.php:1053
1644
  msgid "City"
1645
- msgstr ""
1646
 
1647
- #: includes/i18n.php:1055
1648
  msgid "Town"
1649
- msgstr ""
1650
 
1651
- #: includes/i18n.php:1057
1652
  msgid "State"
1653
- msgstr ""
1654
 
1655
- #: includes/i18n.php:1059
1656
  msgid "Province"
1657
- msgstr ""
1658
 
1659
- #: includes/i18n.php:1061
1660
  msgid "ZIP / Postal Code"
1661
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2017 freemius
2
  # This file is distributed under the same license as the freemius package.
3
  # Translators:
4
+ # Joachim Jensen <jv@intox.dk>, 2016-2017
5
  msgid ""
6
  msgstr ""
7
  "Project-Id-Version: WordPress SDK\n"
8
  "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
9
+ "POT-Creation-Date: \n"
10
+ "PO-Revision-Date: 2017-05-12 17:32+0000\n"
11
  "Last-Translator: Vova Feldman <vova@freemius.com>\n"
12
+ "Language: da_DK\n"
13
  "Language-Team: Danish (Denmark) (http://www.transifex.com/freemius/wordpress-sdk/language/da_DK/)\n"
 
14
  "Content-Type: text/plain; charset=UTF-8\n"
15
  "Content-Transfer-Encoding: 8bit\n"
 
16
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17
+ "MIME-Version: 1.0\n"
18
  "X-Poedit-Basepath: ..\n"
19
+ "X-Poedit-KeywordsList: _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"
20
  "X-Poedit-SearchPath-0: .\n"
21
  "X-Poedit-SearchPathExcluded-0: *.js\n"
22
  "X-Poedit-SourceCharset: UTF-8\n"
23
 
24
+ #: includes/i18n.php:37
 
 
 
 
 
 
 
 
25
  msgid "Account"
26
  msgstr "Konto"
27
 
28
+ #: includes/i18n.php:38
29
  msgid "Add On"
30
  msgstr "Tilføjelse"
31
 
32
+ #: includes/i18n.php:39
33
  msgid "Contact Us"
34
  msgstr "Kontakt os"
35
 
36
+ #: includes/i18n.php:40
37
  msgid "Contact Support"
38
  msgstr "Kontakt support"
39
 
40
+ #: includes/i18n.php:41
41
  msgid "Change Ownership"
42
  msgstr "Skift ejerskab"
43
 
44
+ #: includes/i18n.php:42
45
  msgid "Support"
46
  msgstr "Support"
47
 
48
+ #: includes/i18n.php:43
49
  msgid "Support Forum"
50
  msgstr "Supportforum"
51
 
52
+ #: includes/i18n.php:44
53
  msgid "Add Ons"
54
  msgstr "Tilføjelser"
55
 
56
+ #: includes/i18n.php:45
57
  msgctxt "verb"
58
  msgid "Upgrade"
59
  msgstr "Opgrader"
60
 
61
+ #: includes/i18n.php:46
62
  msgid "Awesome"
63
  msgstr "Sejt"
64
 
65
+ #: includes/i18n.php:47
66
  msgctxt "noun"
67
  msgid "Pricing"
68
  msgstr "Priser"
69
 
70
+ #: includes/i18n.php:48
71
  msgctxt "noun"
72
  msgid "Price"
73
  msgstr "Pris"
74
 
75
+ #: includes/i18n.php:49
76
  msgid "Unlimited Updates"
77
  msgstr "Ubegrænsede opdateringer"
78
 
79
+ #: includes/i18n.php:50
80
  msgctxt "verb"
81
  msgid "Downgrade"
82
  msgstr "Nedgrader"
83
 
84
+ #: includes/i18n.php:51
85
+ msgctxt "verb"
86
+ msgid "Cancel Subscription"
87
+ msgstr "Cancel Subscription"
88
+
89
+ #: includes/i18n.php:52
90
  msgid "Cancel Trial"
91
  msgstr "Annuller prøveperiode"
92
 
93
+ #: includes/i18n.php:53
94
  msgid "Free Trial"
95
  msgstr "Gratis prøveperiode"
96
 
97
+ #: includes/i18n.php:54
98
  msgid "Start my free %s"
99
  msgstr "Start min gratis %s"
100
 
101
+ #: includes/i18n.php:55
102
  msgid "No commitment for %s - cancel anytime"
103
  msgstr "Ingen bindinger ved %s - annuller når som helst"
104
 
105
+ #: includes/i18n.php:56
106
  msgid "After your free %s, pay as little as %s"
107
  msgstr "Efter din gratis %s er prisen kun %s"
108
 
109
+ #: includes/i18n.php:57
110
  msgid "Details"
111
  msgstr "Detaljer"
112
 
113
+ #: includes/i18n.php:58
114
  msgid "Account Details"
115
  msgstr "Kontodetaljer"
116
 
117
+ #: includes/i18n.php:59
118
  msgctxt "verb"
119
  msgid "Delete"
120
  msgstr "Slet"
121
 
122
+ #: includes/i18n.php:60
123
  msgctxt "verb"
124
  msgid "Show"
125
  msgstr "Vis"
126
 
127
+ #: includes/i18n.php:61
128
  msgctxt "verb"
129
  msgid "Hide"
130
  msgstr "Skjul"
131
 
132
+ #: includes/i18n.php:62
133
  msgctxt "verb"
134
  msgid "Edit"
135
  msgstr "Rediger"
136
 
137
+ #: includes/i18n.php:63
138
  msgctxt "verb"
139
  msgid "Update"
140
+ msgstr "Opdater"
141
 
142
+ #: includes/i18n.php:64
143
  msgid "Date"
144
  msgstr "Dato"
145
 
146
+ #: includes/i18n.php:65
147
  msgid "Amount"
148
  msgstr "Beløb"
149
 
150
+ #: includes/i18n.php:66
151
  msgid "Invoice"
152
  msgstr "Faktura"
153
 
154
+ #: includes/i18n.php:67
155
  msgid "Billing"
156
  msgstr "Betaling"
157
 
158
+ #: includes/i18n.php:68
159
  msgid "Payments"
160
  msgstr "Betalinger"
161
 
162
+ #: includes/i18n.php:69
163
  msgid "Delete Account"
164
  msgstr "Slet konto"
165
 
166
+ #: includes/i18n.php:70
167
  msgctxt "as close a window"
168
  msgid "Dismiss"
169
  msgstr "Fjern"
170
 
171
+ #: includes/i18n.php:71
172
  msgctxt "as product pricing plan"
173
  msgid "Plan"
174
  msgstr "Plan"
175
 
176
+ #: includes/i18n.php:72
177
  msgid "Change Plan"
178
  msgstr "Skift plan"
179
 
180
+ #: includes/i18n.php:73
181
  msgctxt "as download professional version"
182
  msgid "Download %s Version"
183
+ msgstr "Download %s Version"
184
 
185
+ #: includes/i18n.php:74
186
  msgctxt "as download professional version now"
187
  msgid "Download %s version now"
188
+ msgstr "Download %s version now"
189
 
190
+ #: includes/i18n.php:75
191
  msgctxt "as download latest version"
192
  msgid "Download Latest"
193
  msgstr "Download seneste"
194
 
195
+ #: includes/i18n.php:76
196
  msgctxt "E.g. you have a professional license."
197
  msgid "You have a %s license."
198
  msgstr "Du har en %s licens."
199
 
200
+ #: includes/i18n.php:77
201
  msgid "New"
202
  msgstr "Ny"
203
 
204
+ #: includes/i18n.php:78
205
  msgid "Free"
206
  msgstr "Gratis"
207
 
208
+ #: includes/i18n.php:79
209
  msgctxt "as trial plan"
210
  msgid "Trial"
211
  msgstr "Prøveperiode"
212
 
213
+ #: includes/i18n.php:80
214
  msgctxt "as starting a trial plan"
215
  msgid "Start Trial"
216
+ msgstr "Start prøveperiode"
217
 
218
+ #: includes/i18n.php:81
219
  msgctxt "verb"
220
  msgid "Purchase"
221
  msgstr "Køb"
222
 
223
+ #: includes/i18n.php:82
224
  msgid "Purchase License"
225
  msgstr "Køb licens"
226
 
227
+ #: includes/i18n.php:83
228
  msgctxt "verb"
229
  msgid "Buy"
230
  msgstr "Køb"
231
 
232
+ #: includes/i18n.php:84
233
  msgid "Buy License"
234
  msgstr "Køb licens"
235
 
236
+ #: includes/i18n.php:85
237
  msgid "Single Site License"
238
+ msgstr "Single Site License"
239
 
240
+ #: includes/i18n.php:86
241
  msgid "Unlimited Licenses"
242
  msgstr "Ubegrænsede licenser"
243
 
244
+ #: includes/i18n.php:87
245
  msgid "Up to %s Sites"
246
  msgstr "Op til %s websteder"
247
 
248
+ #: includes/i18n.php:88
249
  msgid "%sRenew your license now%s to access version %s features and support."
250
+ msgstr "%sRenew your license now%s to access version %s features and support."
251
 
252
+ #: includes/i18n.php:89
253
+ msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
254
+ msgstr "Enter the email address you've used for the upgrade below and we will resend you the license key."
 
 
255
 
256
+ #: includes/i18n.php:90
257
  msgctxt "e.g. Professional Plan"
258
  msgid "%s Plan"
259
  msgstr "%s Plan"
260
 
261
+ #: includes/i18n.php:91
262
  msgid "You are just one step away - %s"
263
  msgstr "Du mangler kun ét skridt - %s"
264
 
265
+ #: includes/i18n.php:92
266
  msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
267
  msgid "Complete \"%s\" Activation Now"
268
  msgstr "Færdiggør aktivering af \"%s\" nu"
269
 
270
+ #: includes/i18n.php:94
271
  msgid "We made a few tweaks to the plugin, %s"
272
+ msgstr "Vi har lavet nogle få rettelser til pluginnet, %s"
273
 
274
+ #: includes/i18n.php:95
275
  msgid "Opt-in to make \"%s\" Better!"
276
+ msgstr "Tilmeld for at gøre \"%s\" bedre!"
277
 
278
+ #: includes/i18n.php:96
279
  msgid "Error"
280
  msgstr "Fejl"
281
 
282
+ #: includes/i18n.php:97
283
+ msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
284
+ msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
 
 
285
 
286
+ #: includes/i18n.php:100
287
  msgctxt "as expiration date"
288
  msgid "Expiration"
289
+ msgstr "Expiration"
290
 
291
+ #: includes/i18n.php:101
292
  msgctxt "as software license"
293
  msgid "License"
294
  msgstr "Licens"
295
 
296
+ #: includes/i18n.php:102
297
  msgid "not verified"
298
  msgstr "ikke verificeret"
299
 
300
+ #: includes/i18n.php:103
301
  msgid "Verify Email"
302
  msgstr "Verificer e-mail"
303
 
304
+ #: includes/i18n.php:104
305
  msgctxt "e.g. expires in 2 months"
306
  msgid "Expires in %s"
307
  msgstr "Udløber om %s"
308
 
309
+ #: includes/i18n.php:105
310
  msgctxt "e.g. auto renews in 2 months"
311
  msgid "Auto renews in %s"
312
+ msgstr "Auto-fornyer om %s"
313
 
314
+ #: includes/i18n.php:106
315
  msgid "No expiration"
316
  msgstr "Udløber ikke"
317
 
318
+ #: includes/i18n.php:107
319
  msgid "Expired"
320
  msgstr "Udløbet"
321
 
322
+ #: includes/i18n.php:108
323
  msgid "Cancelled"
324
  msgstr "Annulleret"
325
 
326
+ #: includes/i18n.php:109
327
  msgctxt "e.g. In 2 hours"
328
  msgid "In %s"
329
  msgstr "Om %s"
330
 
331
+ #: includes/i18n.php:110
332
  msgctxt "e.g. 2 min ago"
333
  msgid "%s ago"
334
  msgstr "%s siden"
335
 
336
+ #: includes/i18n.php:112
337
+ msgid "%s or higher"
338
+ msgstr "%s eller højere"
339
+
340
+ #: includes/i18n.php:113
341
  msgctxt "as plugin version"
342
  msgid "Version"
343
  msgstr "Version"
344
 
345
+ #: includes/i18n.php:114
346
  msgid "Name"
347
  msgstr "Navn"
348
 
349
+ #: includes/i18n.php:115
350
  msgid "Email"
351
  msgstr "E-mail"
352
 
353
+ #: includes/i18n.php:116
354
  msgid "Email address"
355
  msgstr "E-mailadresse"
356
 
357
+ #: includes/i18n.php:117
358
  msgid "Verified"
359
  msgstr "Verificeret"
360
 
361
+ #: includes/i18n.php:118
362
+ msgid "Module"
363
+ msgstr "Modul"
364
+
365
+ #: includes/i18n.php:119
366
+ msgid "Module Type"
367
+ msgstr "Modultype"
368
+
369
+ #: includes/i18n.php:120
370
  msgid "Plugin"
371
  msgstr "Plugin"
372
 
373
+ #: includes/i18n.php:121
374
  msgid "Plugins"
375
  msgstr "Plugins"
376
 
377
+ #: includes/i18n.php:122
378
+ msgid "Theme"
379
+ msgstr "Tema"
380
+
381
+ #: includes/i18n.php:123
382
  msgid "Themes"
383
  msgstr "Temaer"
384
 
385
+ #: includes/i18n.php:124
386
  msgctxt "as file/folder path"
387
  msgid "Path"
388
  msgstr "Sti"
389
 
390
+ #: includes/i18n.php:125
391
  msgid "Title"
392
  msgstr "Titel"
393
 
394
+ #: includes/i18n.php:126
395
  msgid "Free version"
396
  msgstr "Gratis version"
397
 
398
+ #: includes/i18n.php:127
399
  msgid "Premium version"
400
+ msgstr "Premium version"
401
 
402
+ #: includes/i18n.php:128
403
  msgctxt "as WP plugin slug"
404
  msgid "Slug"
405
  msgstr "Kortnavn"
406
 
407
+ #: includes/i18n.php:129
408
  msgid "ID"
409
  msgstr "ID"
410
 
411
+ #: includes/i18n.php:130
412
  msgid "Users"
413
  msgstr "Brugere"
414
 
415
+ #: includes/i18n.php:131
416
  msgid "Plugin Installs"
417
  msgstr "Plugin-installationer"
418
 
419
+ #: includes/i18n.php:132
420
+ msgid "%s Installs"
421
+ msgstr "%s installeringer"
422
+
423
+ #: includes/i18n.php:133
424
  msgctxt "like websites"
425
  msgid "Sites"
426
  msgstr "Websteder"
427
 
428
+ #: includes/i18n.php:134
429
  msgid "User ID"
430
  msgstr "Bruger-ID"
431
 
432
+ #: includes/i18n.php:135
433
  msgid "Site ID"
434
  msgstr "Websteds-ID"
435
 
436
+ #: includes/i18n.php:136
437
  msgid "Public Key"
438
  msgstr "Offentlig nøgle"
439
 
440
+ #: includes/i18n.php:137
441
  msgid "Secret Key"
442
  msgstr "Privat nøgle"
443
 
444
+ #: includes/i18n.php:138
445
  msgctxt "as secret encryption key missing"
446
  msgid "No Secret"
447
  msgstr "Ingen privat nøgle"
448
 
449
+ #: includes/i18n.php:139
450
  msgid "No ID"
451
  msgstr "Intet ID"
452
 
453
+ #: includes/i18n.php:140
454
  msgctxt "as synchronize license"
455
  msgid "Sync License"
456
  msgstr "Synkroniser licens"
457
 
458
+ #: includes/i18n.php:141
459
  msgctxt "as synchronize"
460
  msgid "Sync"
461
  msgstr "Synkroniser"
462
 
463
+ #: includes/i18n.php:142
464
  msgid "Activate License"
465
  msgstr "Aktiver licens"
466
 
467
+ #: includes/i18n.php:143
468
  msgid "Activate Free Version"
469
  msgstr "Aktiver gratis version"
470
 
471
+ #: includes/i18n.php:144
472
+ msgid "Please enter the license key that you received in the email right after the purchase:"
473
+ msgstr "Please enter the license key that you received in the email right after the purchase:"
 
 
474
 
475
+ #: includes/i18n.php:145
476
  msgid "Activating license..."
477
  msgstr "Aktiverer licens..."
478
 
479
+ #: includes/i18n.php:146
480
  msgid "Change License"
481
  msgstr "Skift licens"
482
 
483
+ #: includes/i18n.php:147
484
  msgid "Update License"
485
  msgstr "Opdater licens"
486
 
487
+ #: includes/i18n.php:148
488
  msgid "Deactivate License"
489
  msgstr "Deaktiver licens"
490
 
491
+ #: includes/i18n.php:149
492
  msgid "Activate"
493
  msgstr "Aktiver"
494
 
495
+ #: includes/i18n.php:150
496
  msgid "Deactivate"
497
  msgstr "Deaktiver"
498
 
499
+ #: includes/i18n.php:151
500
  msgid "Skip & Deactivate"
501
  msgstr "Spring over & deaktiver"
502
 
503
+ #: includes/i18n.php:152
504
+ msgid "Skip & %s"
505
+ msgstr "Spring over & %s"
506
+
507
+ #: includes/i18n.php:153
508
  msgid "No - just deactivate"
509
  msgstr "Nej - bare deaktiver"
510
 
511
+ #: includes/i18n.php:154
512
  msgid "Yes - do your thing"
513
+ msgstr "Yes - do your thing"
514
 
515
+ #: includes/i18n.php:155
516
  msgctxt "active mode"
517
  msgid "Active"
518
  msgstr "Aktiv"
519
 
520
+ #: includes/i18n.php:156
521
  msgctxt "is active mode?"
522
  msgid "Is Active"
523
  msgstr "Er aktiv"
524
 
525
+ #: includes/i18n.php:157
526
  msgid "Install Now"
527
  msgstr "Installer nu"
528
 
529
+ #: includes/i18n.php:158
530
  msgid "Install Update Now"
531
  msgstr "Installer opdatering nu"
532
 
533
+ #: includes/i18n.php:159
534
  msgid "More information about %s"
535
  msgstr "Mere information om %s"
536
 
537
+ #: includes/i18n.php:160
538
  msgid "Localhost"
539
  msgstr "Localhost"
540
 
541
+ #: includes/i18n.php:161
542
  msgctxt "as activate Professional plan"
543
  msgid "Activate %s Plan"
544
  msgstr "Aktiver plan %s"
545
 
546
+ #: includes/i18n.php:162
547
  msgctxt "as 5 licenses left"
548
  msgid "%s left"
549
  msgstr "%s tilbage"
550
 
551
+ #: includes/i18n.php:163
552
  msgid "Last license"
553
+ msgstr "Seneste license"
554
 
555
+ #: includes/i18n.php:164
556
  msgid "What is your %s?"
557
+ msgstr "What is your %s?"
558
 
559
+ #: includes/i18n.php:165
560
  msgid "Activate this add-on"
561
  msgstr "Aktiver denne tilføjelse"
562
 
563
+ #: includes/i18n.php:166
564
+ 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?"
565
+ 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?"
 
 
 
566
 
567
+ #: includes/i18n.php:167
568
+ 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?"
569
+ 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?"
 
 
 
 
570
 
571
+ #: includes/i18n.php:168
572
+ 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?"
573
+ 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?"
 
 
574
 
575
+ #: includes/i18n.php:169
576
+ msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
577
+ msgstr "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
 
 
578
 
579
+ #: includes/i18n.php:170
580
+ msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
581
+ msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?"
 
 
582
 
583
+ #: includes/i18n.php:171
584
+ msgid "You can still enjoy all %s features but you will not have access to plugin updates and support."
585
+ msgstr "You can still enjoy all %s features but you will not have access to plugin updates and support."
 
 
586
 
587
+ #: includes/i18n.php:172
588
+ msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
589
+ msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
 
 
590
 
591
+ #: includes/i18n.php:173
592
  msgid "Are you sure you want to proceed?"
593
+ msgstr "Er du sikker på, du vil fortsætte?"
594
 
595
+ #: includes/i18n.php:176
596
  msgid "Add Ons for %s"
597
  msgstr "Tilføjelser til %s"
598
 
599
+ #: includes/i18n.php:177
600
+ 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."
601
+ 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."
 
 
602
 
603
+ #: includes/i18n.php:179
604
  msgid "Anonymous feedback"
605
  msgstr "Anonym feedback"
606
 
607
+ #: includes/i18n.php:180
608
  msgid "Quick feedback"
609
  msgstr "Hurtig feedback"
610
 
611
+ #: includes/i18n.php:181
612
  msgid "If you have a moment, please let us know why you are deactivating"
613
+ msgstr "Hvis du har et øjeblik, så lad os venligst vide, hvorfor du deaktiverer"
614
 
615
+ #: includes/i18n.php:182
616
  msgid "Yes - Deactivate"
617
  msgstr "Ja - deaktiver"
618
 
619
+ #: includes/i18n.php:183
620
  msgid "Submit & Deactivate"
621
  msgstr "Send & deaktiver"
622
 
623
+ #: includes/i18n.php:184
624
  msgid "Cancel"
625
  msgstr "Annuller"
626
 
627
+ #: includes/i18n.php:185
628
  msgid "I no longer need the plugin"
629
+ msgstr "Jeg har ikke længere brug for dette plugin"
630
 
631
+ #: includes/i18n.php:186
632
  msgid "I found a better plugin"
633
  msgstr "Jeg har fundet et bedre plugin"
634
 
635
+ #: includes/i18n.php:187
636
  msgid "I only needed the plugin for a short period"
637
+ msgstr "Jeg skulle kun bruge pluginnet i en kort periode"
638
 
639
+ #: includes/i18n.php:188
640
  msgid "The plugin broke my site"
641
  msgstr "Pluginnet ødelagde mit websted"
642
 
643
+ #: includes/i18n.php:189
644
  msgid "The plugin suddenly stopped working"
645
  msgstr "Pluginnet virker ikke længere"
646
 
647
+ #: includes/i18n.php:190
648
  msgid "I can't pay for it anymore"
649
  msgstr "Jeg kan ikke længere betale for det"
650
 
651
+ #: includes/i18n.php:191
652
  msgid "It's a temporary deactivation. I'm just debugging an issue."
653
+ msgstr "Det er en midlertidig deaktivering. Jeg prøver at fejlfinde et problem."
654
 
655
+ #: includes/i18n.php:192
656
  msgctxt ""
 
 
657
  msgid "Other"
658
  msgstr "Andet"
659
 
660
+ #: includes/i18n.php:194
661
  msgid "Kindly tell us the reason so we can improve."
662
+ msgstr "Fortæl os venligst årsagen, så vi kan forbedre det."
663
 
664
+ #: includes/i18n.php:195
665
  msgid "What's the plugin's name?"
666
+ msgstr "Hvad er pluginnets navn?"
667
 
668
+ #: includes/i18n.php:196
669
  msgid "What price would you feel comfortable paying?"
670
+ msgstr "What price would you feel comfortable paying?"
671
 
672
+ #: includes/i18n.php:197
673
  msgid "I couldn't understand how to make it work"
674
+ msgstr "Jeg forstod ikke, hvordan jeg skulle få det til at fungere."
675
 
676
+ #: includes/i18n.php:198
677
+ msgid "The plugin is great, but I need specific feature that you don't support"
678
+ msgstr "Pluginnet er godt, men jeg har brug for en specifik funktionalitet, som det ikke understøtter."
 
679
 
680
+ #: includes/i18n.php:199
681
  msgid "The plugin is not working"
682
  msgstr "Pluginnet virker ikke"
683
 
684
+ #: includes/i18n.php:200
685
  msgid "It's not what I was looking for"
686
+ msgstr "Det er ikke, hvad jeg søgte"
687
 
688
+ #: includes/i18n.php:201
689
  msgid "The plugin didn't work as expected"
690
+ msgstr "Plugin virkede ikke som forventet"
691
 
692
+ #: includes/i18n.php:202
693
  msgid "What feature?"
694
+ msgstr "Hvilken feature?"
695
 
696
+ #: includes/i18n.php:203
697
  msgid "Kindly share what didn't work so we can fix it for future users..."
698
+ msgstr "Kindly share what didn't work so we can fix it for future users..."
699
 
700
+ #: includes/i18n.php:204
701
  msgid "What you've been looking for?"
702
+ msgstr "What you've been looking for?"
703
 
704
+ #: includes/i18n.php:205
705
  msgid "What did you expect?"
706
  msgstr "Hvad forventede du?"
707
 
708
+ #: includes/i18n.php:206
709
  msgid "The plugin didn't work"
710
  msgstr "Pluginnet virkede ikke"
711
 
712
+ #: includes/i18n.php:207
713
  msgid "I don't like to share my information with you"
714
+ msgstr "I don't like to share my information with you"
715
 
716
+ #: includes/i18n.php:208
717
+ msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
718
+ msgstr "You might have missed it, but you don't have to share any data and can just %s the opt-in."
 
 
719
 
720
+ #: includes/i18n.php:212
721
  msgctxt "greeting"
722
  msgid "Hey %s,"
723
  msgstr "Hey %s,"
724
 
725
+ #: includes/i18n.php:213
726
  msgctxt "a greeting. E.g. Thanks John!"
727
  msgid "Thanks %s!"
728
  msgstr "Tak %s!"
729
 
730
+ #: includes/i18n.php:214
731
+ msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
732
+ msgstr "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
 
 
733
 
734
+ #: includes/i18n.php:215
735
+ 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."
736
+ 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."
 
 
 
737
 
738
+ #: includes/i18n.php:216
739
+ 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."
740
+ 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."
 
 
741
 
742
+ #: includes/i18n.php:217
743
  msgid "complete the install"
744
+ msgstr "færdiggør installeringen"
745
 
746
+ #: includes/i18n.php:218
747
  msgid "start the trial"
748
+ msgstr "start prøveperioden"
749
 
750
+ #: includes/i18n.php:219
751
+ msgid "Thanks for purchasing %s! To get started, please enter your license key:"
752
+ msgstr "Thanks for purchasing %s! To get started, please enter your license key:"
 
753
 
754
+ #: includes/i18n.php:220
755
+ msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
756
+ msgstr "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
 
 
757
 
758
+ #: includes/i18n.php:221
759
  msgid "What permissions are being granted?"
760
  msgstr "Hvilke tilladelser bliver givet?"
761
 
762
+ #: includes/i18n.php:222
763
  msgid "Your Profile Overview"
764
  msgstr "Overblik af din profil"
765
 
766
+ #: includes/i18n.php:223
767
  msgid "Name and email address"
768
  msgstr "Navn og e-mailadresse"
769
 
770
+ #: includes/i18n.php:224
771
  msgid "Your Site Overview"
772
  msgstr "Overblik af dit websted"
773
 
774
+ #: includes/i18n.php:225
775
  msgid "Site URL, WP version, PHP info, plugins & themes"
776
+ msgstr "Websteds-URL, WP version, PHP info, plugins og temaer"
777
 
778
+ #: includes/i18n.php:226
779
  msgid "Current Plugin Events"
780
  msgstr "Nuværende plugin-begivenheder"
781
 
782
+ #: includes/i18n.php:227
783
  msgid "Activation, deactivation and uninstall"
784
  msgstr "Aktivering, deaktivering og afinstallering"
785
 
786
+ #: includes/i18n.php:228
787
  msgid "Plugins & Themes"
788
  msgstr "Plugins & Temaer"
789
 
790
+ #: includes/i18n.php:229
791
  msgid "Titles, versions and state."
792
  msgstr "Titler, versioner og tilstand."
793
 
794
+ #: includes/i18n.php:230
795
  msgid "Admin Notices"
796
+ msgstr "Admin Notices"
797
 
798
+ #: includes/i18n.php:231
799
  msgid "Newsletter"
800
  msgstr "Nyhedsbrev"
801
 
802
+ #: includes/i18n.php:232
803
  msgid "Updates, announcements, marketing, no spam"
804
+ msgstr "Updates, announcements, marketing, no spam"
805
 
806
+ #: includes/i18n.php:233
807
  msgid "Privacy Policy"
808
  msgstr "Privatlivspolitik"
809
 
810
+ #: includes/i18n.php:234
811
  msgid "Terms of Service"
812
  msgstr "Servicevilkår"
813
 
814
+ #: includes/i18n.php:235
815
  msgctxt "as activating plugin"
816
  msgid "Activating"
817
  msgstr "Aktiverer"
818
 
819
+ #: includes/i18n.php:236
820
  msgctxt "as in the process of sending an email"
821
  msgid "Sending email"
822
  msgstr "Sender e-mail"
823
 
824
+ #: includes/i18n.php:237
825
  msgctxt "button label"
826
  msgid "Allow & Continue"
827
  msgstr "Tillad & Fortsæt"
828
 
829
+ #: includes/i18n.php:238
830
  msgctxt "button label"
831
  msgid "Agree & Activate License"
832
  msgstr "Accepter & aktiver licens"
833
 
834
+ #: includes/i18n.php:239
835
  msgctxt "verb"
836
  msgid "Skip"
837
  msgstr "Spring over"
838
 
839
+ #: includes/i18n.php:240
840
  msgid "Click here to use the plugin anonymously"
841
  msgstr "Klik her for at benytte pluginnet anonymt"
842
 
843
+ #: includes/i18n.php:241
844
  msgid "Re-send activation email"
845
  msgstr "Gensend e-mail om aktivering"
846
 
847
+ #: includes/i18n.php:242
848
  msgid "License key"
849
  msgstr "Licensnøgle"
850
 
851
+ #: includes/i18n.php:243
852
  msgid "Send License Key"
853
  msgstr "Send licensnøgle"
854
 
855
+ #: includes/i18n.php:244
856
  msgid "Sending license key"
857
  msgstr "Sender licensnøgle"
858
 
859
+ #: includes/i18n.php:245
860
  msgid "Have a license key?"
861
  msgstr "Har du en licensnøgle?"
862
 
863
+ #: includes/i18n.php:246
864
  msgid "Don't have a license key?"
865
  msgstr "Har du ikke en licensnøgle?"
866
 
867
+ #: includes/i18n.php:247
868
  msgid "Can't find your license key?"
869
  msgstr "Kan du ikke finde din licensnøgle?"
870
 
871
+ #: includes/i18n.php:248
872
+ msgid "We couldn't find your email address in the system, are you sure it's the right address?"
873
+ msgstr "We couldn't find your email address in the system, are you sure it's the right address?"
 
 
874
 
875
+ #: includes/i18n.php:249
876
+ msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
877
+ msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?"
 
 
878
 
879
+ #: includes/i18n.php:250
880
  msgid "Opt In"
881
+ msgstr "Tilmeld"
882
 
883
+ #: includes/i18n.php:251
884
  msgid "Opt Out"
885
+ msgstr "Frameld"
886
 
887
+ #: includes/i18n.php:252
888
  msgid "On second thought - I want to continue helping"
889
+ msgstr "Ved nærmere eftertanke - Jeg vil fortsætte med at hjælpe"
890
 
891
+ #: includes/i18n.php:253
892
  msgid "Opting out..."
893
+ msgstr "Framelder..."
894
 
895
+ #: includes/i18n.php:254
896
  msgid "Opting in..."
897
+ msgstr "Tilmelder..."
898
 
899
+ #: includes/i18n.php:255
900
+ msgid "We appreciate your help in making the %s better by letting us track some usage data."
901
+ msgstr "We appreciate your help in making the %s better by letting us track some usage data."
 
 
902
 
903
+ #: includes/i18n.php:256
904
+ 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."
905
+ 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."
 
 
 
906
 
907
+ #: includes/i18n.php:257
908
+ msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
909
+ msgstr "Ved at klikke \"Frameld\" vil vi ikke længere sende data fra %s til %s."
 
 
910
 
911
+ #: includes/i18n.php:261
912
  msgid "Screenshots"
913
  msgstr "Skærmbilleder"
914
 
915
+ #: includes/i18n.php:262
916
  msgid "Click to view full-size screenshot %d"
917
+ msgstr "Click to view full-size screenshot %d"
918
 
919
+ #: includes/i18n.php:266
920
  msgid "Freemius Debug"
921
  msgstr "Freemius Debug"
922
 
923
+ #: includes/i18n.php:267
924
  msgctxt "as turned on"
925
  msgid "On"
926
  msgstr "Til"
927
 
928
+ #: includes/i18n.php:268
929
  msgctxt "as turned off"
930
  msgid "Off"
931
  msgstr "Fra"
932
 
933
+ #: includes/i18n.php:269
934
  msgctxt "as code debugging"
935
  msgid "Debugging"
936
  msgstr "Fejlfinding"
937
 
938
+ #: includes/i18n.php:270
939
  msgid "Freemius State"
940
  msgstr "Freemius tilstand"
941
 
942
+ #: includes/i18n.php:271
943
  msgctxt "as connection was successful"
944
  msgid "Connected"
945
  msgstr "Forbundet"
946
 
947
+ #: includes/i18n.php:272
948
  msgctxt "as connection blocked"
949
  msgid "Blocked"
950
  msgstr "Blokeret"
951
 
952
+ #: includes/i18n.php:273
953
  msgctxt "as application program interface"
954
  msgid "API"
955
  msgstr "API"
956
 
957
+ #: includes/i18n.php:274
958
  msgctxt "as software development kit versions"
959
  msgid "SDK"
960
  msgstr "SDK"
961
 
962
+ #: includes/i18n.php:275
963
  msgctxt "as software development kit versions"
964
  msgid "SDK Versions"
965
  msgstr "SDK-versioner"
966
 
967
+ #: includes/i18n.php:276
968
  msgctxt "as plugin folder path"
969
  msgid "Plugin Path"
970
  msgstr "Plugin-sti"
971
 
972
+ #: includes/i18n.php:277
973
  msgctxt "as sdk path"
974
  msgid "SDK Path"
975
  msgstr "SDK-sti"
976
 
977
+ #: includes/i18n.php:278
978
  msgid "Add Ons of Plugin %s"
979
  msgstr "Tilføjelser til plugin %s"
980
 
981
+ #: includes/i18n.php:279
982
  msgid "Are you sure you want to delete all Freemius data?"
983
+ msgstr "Er du sikker på, du vil slette al Freemius data?"
984
 
985
+ #: includes/i18n.php:280
986
  msgid "Actions"
987
  msgstr "Handlinger"
988
 
989
+ #: includes/i18n.php:281
990
  msgid "Delete All Accounts"
991
  msgstr "Slet alle konti"
992
 
993
+ #: includes/i18n.php:282
994
  msgid "Start Fresh"
995
  msgstr "Start forfra"
996
 
997
+ #: includes/i18n.php:283
998
  msgid "Clear API Cache"
999
  msgstr "Ryd API-cache"
1000
 
1001
+ #: includes/i18n.php:284
1002
  msgid "Sync Data From Server"
1003
  msgstr "Synkroniser data fra server"
1004
 
1005
+ #: includes/i18n.php:285
1006
  msgid "Scheduled Crons"
1007
  msgstr "Planlagte cron jobs"
1008
 
1009
+ #: includes/i18n.php:286
1010
+ msgid "Cron Type"
1011
+ msgstr "Cron Type"
1012
+
1013
+ #: includes/i18n.php:287
1014
  msgid "Plugins & Themes Sync"
1015
  msgstr "Synkronisering af plugins og temaer"
1016
 
1017
+ #: includes/i18n.php:288
1018
+ msgid "Licenses"
1019
+ msgstr "Licenser"
1020
+
1021
+ #: includes/i18n.php:289
1022
+ msgid "Debug Log"
1023
+ msgstr "Fejlfindingslog"
1024
+
1025
+ #: includes/i18n.php:290
1026
+ msgid "All"
1027
+ msgstr "Alle"
1028
+
1029
+ #: includes/i18n.php:291
1030
+ msgid "File"
1031
+ msgstr "Fil"
1032
+
1033
+ #: includes/i18n.php:292
1034
+ msgid "Function"
1035
+ msgstr "Funktion"
1036
+
1037
+ #: includes/i18n.php:293
1038
+ msgid "Process ID"
1039
+ msgstr "Proces-ID"
1040
+
1041
+ #: includes/i18n.php:294
1042
+ msgid "Logger"
1043
+ msgstr "Logger"
1044
+
1045
+ #: includes/i18n.php:295
1046
+ msgid "Message"
1047
+ msgstr "Besked"
1048
+
1049
+ #: includes/i18n.php:296
1050
+ msgid "Download"
1051
+ msgstr "Download"
1052
+
1053
+ #: includes/i18n.php:297
1054
+ msgid "Filter"
1055
+ msgstr "Filter"
1056
+
1057
+ #: includes/i18n.php:298
1058
+ msgid "Type"
1059
+ msgstr "Type"
1060
+
1061
+ #: includes/i18n.php:299
1062
+ msgid "All Types"
1063
+ msgstr "Alle typer"
1064
+
1065
+ #: includes/i18n.php:300
1066
+ msgid "All Requests"
1067
+ msgstr "Alle forespørgsler"
1068
+
1069
+ #: includes/i18n.php:304
1070
  msgctxt "as congratulations"
1071
  msgid "Congrats"
1072
  msgstr "Tillykke"
1073
 
1074
+ #: includes/i18n.php:305
1075
  msgctxt "exclamation"
1076
  msgid "Oops"
1077
  msgstr "Ups"
1078
 
1079
+ #: includes/i18n.php:306
1080
  msgctxt "interjection expressing joy or exuberance"
1081
  msgid "Yee-haw"
1082
+ msgstr "Yee-haw"
1083
 
1084
+ #: includes/i18n.php:307
1085
  msgctxt ""
 
 
1086
  msgid "W00t"
1087
+ msgstr "W00t"
1088
 
1089
+ #: includes/i18n.php:309
1090
  msgctxt "a positive response"
1091
  msgid "Right on"
1092
  msgstr "Sådan"
1093
 
1094
+ #: includes/i18n.php:310
1095
  msgctxt ""
 
 
1096
  msgid "Hmm"
1097
  msgstr "Hmm"
1098
 
1099
+ #: includes/i18n.php:312
1100
  msgid "O.K"
1101
  msgstr "O.K"
1102
 
1103
+ #: includes/i18n.php:313
1104
  msgctxt "exclamation"
1105
  msgid "Hey"
1106
  msgstr "Hey"
1107
 
1108
+ #: includes/i18n.php:314
1109
  msgctxt "advance notice of something that will need attention."
1110
  msgid "Heads up"
1111
  msgstr "Se her"
1112
 
1113
+ #: includes/i18n.php:319
1114
  msgid "Seems like you got the latest release."
1115
+ msgstr "Det ser ud til, at du har den seneste udgivelse."
1116
 
1117
+ #: includes/i18n.php:320
1118
  msgid "You are all good!"
1119
  msgstr "Det var det!"
1120
 
1121
+ #: includes/i18n.php:321
1122
+ msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
1123
+ msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered."
 
 
1124
 
1125
+ #: includes/i18n.php:322
1126
+ msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
1127
+ msgstr "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
 
 
1128
 
1129
+ #: includes/i18n.php:323
1130
+ msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
1131
+ msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
 
 
1132
 
1133
+ #: includes/i18n.php:324
1134
  msgid "Your name was successfully updated."
1135
  msgstr "Dit navn er blevet opdateret."
1136
 
1137
+ #: includes/i18n.php:325
1138
  msgid "You have successfully updated your %s."
1139
  msgstr "Opdatering af %s blev gennemført."
1140
 
1141
+ #: includes/i18n.php:326
1142
  msgid "Please provide your full name."
1143
  msgstr "Indtast venligst dit fulde navn."
1144
 
1145
+ #: includes/i18n.php:327
1146
+ msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
1147
+ msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
 
 
1148
 
1149
+ #: includes/i18n.php:328
1150
+ msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
1151
+ msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server."
 
 
1152
 
1153
+ #: includes/i18n.php:329
1154
  msgid "No credit card required"
1155
  msgstr "Betalingskort ikke påkrævet"
1156
 
1157
+ #: includes/i18n.php:330
1158
  msgid "Premium plugin version was successfully activated."
1159
+ msgstr "Premium-versionen af pluginnet blev aktiveret."
1160
 
1161
+ #: includes/i18n.php:331
1162
  msgid "The upgrade of %s was successfully completed."
1163
+ msgstr "Opgraderingen af %s blev fuldendt."
1164
 
1165
+ #: includes/i18n.php:332
1166
  msgid "Your account was successfully activated with the %s plan."
1167
+ msgstr "Din konto blev aktiveret med planen %s."
1168
 
1169
+ #: includes/i18n.php:333
1170
  msgid "Download the latest %s version now"
1171
  msgstr "Download den seneste version af %s nu"
1172
 
1173
+ #: includes/i18n.php:334
1174
  msgid "Please follow these steps to complete the upgrade"
1175
+ msgstr "Følg venligst disse trin for at færdiggøre opgraderingen"
1176
 
1177
+ #: includes/i18n.php:335
1178
  msgid "Download the latest %s version"
1179
  msgstr "Download den seneste version af %s"
1180
 
1181
+ #: includes/i18n.php:336
1182
+ msgid "Download the latest version"
1183
+ msgstr "Download den seneste version"
1184
+
1185
+ #: includes/i18n.php:337
1186
  msgid "Deactivate the free version"
1187
  msgstr "Deaktiver den gratis version"
1188
 
1189
+ #: includes/i18n.php:338
1190
  msgid "Upload and activate the downloaded version"
1191
  msgstr "Upload og aktiver den downloadede version"
1192
 
1193
+ #: includes/i18n.php:339
1194
  msgid "How to upload and activate?"
1195
  msgstr "Upload og aktivering, hvordan?"
1196
 
1197
+ #: includes/i18n.php:340
1198
  msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1199
  msgid "%s Add-on was successfully purchased."
1200
  msgstr "Betalingen for tilføjelsen %s blev gennemført."
1201
 
1202
+ #: includes/i18n.php:342
1203
  msgid "Your %s Add-on plan was successfully upgraded."
1204
+ msgstr "Your %s Add-on plan was successfully upgraded."
1205
 
1206
+ #: includes/i18n.php:343
1207
  msgid "Your email has been successfully verified - you are AWESOME!"
1208
+ msgstr "Your email has been successfully verified - you are AWESOME!"
1209
 
1210
+ #: includes/i18n.php:344
1211
  msgid "Your plan was successfully upgraded."
1212
  msgstr "Din plan er blevet opgraderet."
1213
 
1214
+ #: includes/i18n.php:345
1215
  msgid "Your plan was successfully changed to %s."
1216
  msgstr "Din plan er blevet ændret til %s."
1217
 
1218
+ #: includes/i18n.php:346
1219
+ msgid "Your license has expired. You can still continue using the free plugin forever."
1220
+ msgstr "Din licens er udløbet. Du kan stadig fortsætte med at benytte det gratis plugin for evigt."
 
 
1221
 
1222
+ #: includes/i18n.php:347
1223
+ msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
1224
+ msgstr "Din licens er blevet annulleret. Hvis du mener, dette er en fejl, kontakt venligst support."
 
 
1225
 
1226
+ #: includes/i18n.php:348
1227
  msgid "Your trial has been successfully started."
1228
  msgstr "Din prøveperiode er begyndt."
1229
 
1230
+ #: includes/i18n.php:349
1231
  msgid "Your license was successfully activated."
1232
  msgstr "Din licens er blevet aktiveret."
1233
 
1234
+ #: includes/i18n.php:350
1235
  msgid "It looks like your site currently doesn't have an active license."
1236
  msgstr "Det ser ud til, at dit websted endnu ikke har en aktiv licens."
1237
 
1238
+ #: includes/i18n.php:351
1239
+ msgid "Your license was successfully deactivated, you are back to the %s plan."
1240
+ msgstr "Din licens blev deaktiveret, du er tilbage planen %s."
 
1241
 
1242
+ #: includes/i18n.php:352
1243
  msgid "It looks like the license deactivation failed."
1244
  msgstr "Det ser ud til, at licens-deaktiveringen mislykkedes."
1245
 
1246
+ #: includes/i18n.php:353
1247
  msgid "It looks like the license could not be activated."
1248
  msgstr "Det ser ud til, at licensen ikke kunne aktiveres."
1249
 
1250
+ #: includes/i18n.php:354
1251
  msgid "Error received from the server:"
1252
  msgstr "Fejl modtager fra serveren:"
1253
 
1254
+ #: includes/i18n.php:355
1255
+ msgid "Your trial has expired. You can still continue using all our free features."
 
1256
  msgstr "Din prøveperiode er udløbet. Du kan fortsat bruge alle vores gratis funktioner."
1257
 
1258
+ #: includes/i18n.php:356
1259
+ msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
1260
+ msgstr "Din plan blev nedgraderet. Licensen til din %s plan vil udløbe om %s."
 
 
1261
 
1262
+ #: includes/i18n.php:357
1263
+ msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
1264
+ msgstr "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
 
 
1265
 
1266
+ #: includes/i18n.php:358
1267
+ msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
1268
+ msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
 
 
1269
 
1270
+ #: includes/i18n.php:359
1271
  msgid "Your %s free trial was successfully cancelled."
1272
+ msgstr "Din gratis prøveperiode for %s er blevet annulleret."
1273
 
1274
+ #: includes/i18n.php:360
1275
  msgctxt "%s - numeric version number"
1276
  msgid "Version %s was released."
1277
  msgstr "Version %s er blevet udgivet."
1278
 
1279
+ #: includes/i18n.php:361
1280
  msgid "Please download %s."
1281
  msgstr "Download venligst %s."
1282
 
1283
+ #: includes/i18n.php:362
1284
  msgctxt "%s - plan name, as the latest professional version here"
1285
  msgid "the latest %s version here"
1286
  msgstr "den seneste version af %s her"
1287
 
1288
+ #: includes/i18n.php:364
1289
+ msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
1290
+ msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
 
 
1291
 
1292
+ #: includes/i18n.php:365
1293
  msgctxt "call to action"
1294
  msgid "Start free trial"
1295
  msgstr "Start gratis prøveperiode"
1296
 
1297
+ #: includes/i18n.php:366
1298
  msgid "Starting trial"
1299
+ msgstr "Starter prøveperiode"
1300
 
1301
+ #: includes/i18n.php:367
1302
  msgid "Please wait"
1303
+ msgstr "Vent venligst"
1304
 
1305
+ #: includes/i18n.php:368
1306
+ msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
1307
+ msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
 
 
1308
 
1309
+ #: includes/i18n.php:369
1310
  msgid "You already utilized a trial before."
1311
  msgstr "Du har allerede brugt din prøveperiode."
1312
 
1313
+ #: includes/i18n.php:370
1314
  msgid "You are already running the plugin in a trial mode."
1315
+ msgstr "Du benytter allerede dette plugin under en prøveperiode."
1316
 
1317
+ #: includes/i18n.php:371
1318
  msgid "Plan %s do not exist, therefore, can't start a trial."
1319
+ msgstr "Plan %s eksisterer ikke og kan derfor ikke starte prøveperiode."
1320
 
1321
+ #: includes/i18n.php:372
1322
  msgid "Plan %s does not support a trial period."
1323
  msgstr "Plan %s understøtter ikke en prøveperiode."
1324
 
1325
+ #: includes/i18n.php:373
1326
  msgid "None of the plugin's plans supports a trial period."
1327
+ msgstr "Ingen af dette plugins planer understøtter prøveperiode."
1328
 
1329
+ #: includes/i18n.php:374
1330
+ msgid "Unexpected API error. Please contact the plugin's author with the following error."
1331
+ msgstr "Unexpected API error. Please contact the plugin's author with the following error."
 
 
1332
 
1333
+ #: includes/i18n.php:375
1334
  msgid "No commitment for %s days - cancel anytime!"
1335
  msgstr "Ingen bindinger i %s dage - annuller når som helst!"
1336
 
1337
+ #: includes/i18n.php:376
1338
+ 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."
1339
+ 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."
 
 
 
1340
 
1341
+ #: includes/i18n.php:377
1342
  msgid "Couldn't activate %s."
1343
  msgstr "Kunne ikke aktivere %s."
1344
 
1345
+ #: includes/i18n.php:378
1346
  msgid "Please contact us with the following message:"
1347
  msgstr "Kontakt os venligst med følgende besked:"
1348
 
1349
+ #: includes/i18n.php:379
1350
+ 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."
1351
+ 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."
 
 
1352
 
1353
+ #: includes/i18n.php:380
1354
  msgid "Please contact us here"
1355
  msgstr "Kontakt os her"
1356
 
1357
+ #: includes/i18n.php:381
1358
+ msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
1359
+ msgstr "I have upgraded my account but when I try to Sync the License, the plan remains %s."
 
 
1360
 
1361
+ #: includes/i18n.php:384
1362
  msgid "From unknown reason, the API connectivity test failed."
1363
+ msgstr "From unknown reason, the API connectivity test failed."
1364
 
1365
+ #: includes/i18n.php:385
1366
+ 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?"
1367
+ 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?"
 
 
1368
 
1369
+ #: includes/i18n.php:386
1370
+ 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."
1371
+ 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."
 
 
 
1372
 
1373
+ #: includes/i18n.php:387
1374
+ msgid "Disabled method(s):"
1375
+ msgstr "Disabled method(s):"
 
1376
 
1377
+ #: includes/i18n.php:388
1378
+ msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1379
+ msgstr "Af en ukendt årsag blokerer CloudFlare, vores firewall, forbindelsen."
1380
+
1381
+ #: includes/i18n.php:389
1382
  msgctxt "as pluginX requires an access to our API"
1383
  msgid "%s requires an access to our API."
1384
+ msgstr "%s påkræver adgang til vores API."
1385
 
1386
+ #: includes/i18n.php:391
1387
+ msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
1388
+ msgstr "Det ser ud til, at din server benytter Squid ACL (access control lists), som blokerer forbindelsen."
 
 
1389
 
1390
+ #: includes/i18n.php:392
1391
  msgid "I don't know what is Squid or ACL, help me!"
1392
+ msgstr "Jeg ved ikke hvad Squid eller ACL er. Hjælp mig!"
1393
 
1394
+ #: includes/i18n.php393, includes/i18n.php:397
1395
+ 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."
1396
+ 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."
 
 
1397
 
1398
+ #: includes/i18n.php:394
1399
  msgid "I'm a system administrator"
1400
  msgstr "Jeg er en system-administrator"
1401
 
1402
+ #: includes/i18n.php:395
1403
+ msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again."
1404
+ msgstr "Sådan, venligst whitelist følgende domæner: %s. Når du er færdig, skal du deaktivere pluginnet og aktivere det igen."
 
 
1405
 
1406
+ #: includes/i18n.php:396
1407
  msgid "I don't know what is cURL or how to install it, help me!"
1408
+ msgstr "Jeg ved ikke hvad cURL er, eller hvordan jeg installerer det. Hjælp mig!"
1409
 
1410
+ #: includes/i18n.php:398
1411
+ 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."
1412
+ 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."
 
 
 
1413
 
1414
+ #: includes/i18n.php:399
1415
+ 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."
1416
+ 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."
 
 
1417
 
1418
+ #: includes/i18n.php:400
1419
+ msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
1420
+ msgstr "Vi beklager ulejligheden, og vi er her for at hjælpe, hvis du giver os chancen."
 
1421
 
1422
+ #: includes/i18n.php:401
1423
  msgid "Yes - I'm giving you a chance to fix it"
1424
  msgstr "Ja - jeg giver jer en chance for at rette det"
1425
 
1426
+ #: includes/i18n.php:402
1427
+ 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."
1428
+ 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."
 
 
1429
 
1430
+ #: includes/i18n.php:403
1431
  msgid "Let's try your previous version"
1432
  msgstr "Lad os prøve din forrige version"
1433
 
1434
+ #: includes/i18n.php:404
1435
  msgid "Uninstall this version and install the previous one."
1436
  msgstr "Afinstaller denne version og installer den forrige."
1437
 
1438
+ #: includes/i18n.php:405
1439
  msgid "That's exhausting, please deactivate"
1440
+ msgstr "Det er udmattende, deaktiver venligst"
1441
 
1442
+ #: includes/i18n.php:406
1443
+ msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
1444
+ msgstr "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
 
 
1445
 
1446
+ #: includes/i18n.php:407
1447
+ 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."
1448
+ 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."
 
 
 
1449
 
1450
+ #: includes/i18n.php:408
1451
  msgctxt "%1s - plugin title, %2s - API domain"
1452
+ msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
1453
+ msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
 
 
1454
 
1455
+ #: includes/i18n.php:410
1456
+ msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
1457
+ msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
 
 
1458
 
1459
+ #: includes/i18n.php:413
1460
+ 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."
1461
+ 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."
 
 
 
 
1462
 
1463
+ #: includes/i18n.php:414
1464
+ msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
1465
+ msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
 
 
1466
 
1467
+ #: includes/i18n.php:415
1468
  msgid "%s is the new owner of the account."
1469
  msgstr "%s er den nye ejer af kontoen."
1470
 
1471
+ #: includes/i18n.php:417
1472
  msgctxt "addonX cannot run without pluginY"
1473
  msgid "%s cannot run without %s."
1474
  msgstr "%s virker ikke uden %s."
1475
 
1476
+ #: includes/i18n.php:419
1477
  msgctxt "addonX cannot run..."
1478
  msgid "%s cannot run without the plugin."
1479
  msgstr "%s virker ikke uden pluginnet."
1480
 
1481
+ #: includes/i18n.php:420
1482
  msgctxt "pluginX activation was successfully..."
1483
  msgid "%s activation was successfully completed."
1484
  msgstr "Aktivering af %s blev gennemført."
1485
 
1486
+ #: includes/i18n.php:422
1487
  msgctxt "Plugin installer section title"
1488
  msgid "Features & Pricing"
1489
  msgstr "Funktioner og priser"
1490
 
1491
+ #: includes/i18n.php:423
1492
  msgid "Add-on must be deployed to WordPress.org or Freemius."
1493
+ msgstr "Add-on must be deployed to WordPress.org or Freemius."
1494
 
1495
+ #: includes/i18n.php:424
1496
  msgid "Paid add-on must be deployed to Freemius."
1497
+ msgstr "Paid add-on must be deployed to Freemius."
1498
 
1499
+ #: includes/i18n.php:428
1500
+ msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
1501
+ msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
 
 
1502
 
1503
+ #: includes/i18n.php:429
1504
+ 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."
1505
+ 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."
 
 
 
1506
 
1507
+ #: includes/i18n.php:434
1508
  msgctxt "as every month"
1509
  msgid "Monthly"
1510
  msgstr "Månedligt"
1511
 
1512
+ #: includes/i18n.php:435
1513
  msgctxt "as monthly period"
1514
  msgid "mo"
1515
  msgstr "md"
1516
 
1517
+ #: includes/i18n.php:436
1518
  msgctxt "as once a year"
1519
  msgid "Annual"
1520
  msgstr "Årligt"
1521
 
1522
+ #: includes/i18n.php:437
1523
  msgctxt "as once a year"
1524
  msgid "Annually"
1525
  msgstr "Årligt"
1526
 
1527
+ #: includes/i18n.php:438
1528
  msgctxt "as once a year"
1529
  msgid "Once"
1530
  msgstr "Engangsbeløb"
1531
 
1532
+ #: includes/i18n.php:439
1533
  msgctxt "as annual period"
1534
  msgid "year"
1535
  msgstr "år"
1536
 
1537
+ #: includes/i18n.php:440
1538
  msgid "Lifetime"
1539
+ msgstr "Livstid"
1540
 
1541
+ #: includes/i18n.php:441
1542
  msgctxt "e.g. the best product"
1543
  msgid "Best"
1544
  msgstr "Bedste"
1545
 
1546
+ #: includes/i18n.php:442
1547
  msgctxt "e.g. billed monthly"
1548
  msgid "Billed %s"
1549
+ msgstr "Faktureret %s"
1550
 
1551
+ #: includes/i18n.php:443
1552
  msgctxt "as a discount of $5 or 10%"
1553
  msgid "Save %s"
1554
  msgstr "Spar %s"
1555
 
1556
+ #: includes/i18n.php:445
1557
  msgid "View details"
1558
  msgstr "Vis detaljer"
1559
 
1560
+ #: includes/i18n.php:449
1561
  msgctxt "button label"
1562
  msgid "Approve & Start Trial"
1563
+ msgstr "Godkend & start prøveperiode"
1564
 
1565
+ #: includes/i18n.php:451
1566
+ msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1567
+ msgstr "Du er 1 klik fra at begynde din %1$s dages gratis prøveperiode af planen %2$s."
 
 
1568
 
1569
+ #: includes/i18n.php:453
1570
+ 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."
1571
+ 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."
 
 
 
 
1572
 
1573
+ #: includes/i18n.php:459
1574
  msgid "Business name"
1575
+ msgstr "Firmanavn"
1576
 
1577
+ #: includes/i18n.php:460
1578
  msgid "Tax / VAT ID"
1579
+ msgstr "Moms / VAT ID"
1580
 
1581
+ #: includes/i18n.php:461
1582
  msgid "Address Line %d"
1583
+ msgstr "Adresselinje %d"
1584
 
1585
+ #: includes/i18n.php:462
1586
  msgid "Country"
1587
+ msgstr "Land"
1588
 
1589
+ #: includes/i18n.php:463
1590
  msgid "Select Country"
1591
+ msgstr "Vælg land"
1592
 
1593
+ #: includes/i18n.php:464
1594
  msgid "City"
1595
+ msgstr "By"
1596
 
1597
+ #: includes/i18n.php:465
1598
  msgid "Town"
1599
+ msgstr "By"
1600
 
1601
+ #: includes/i18n.php:466
1602
  msgid "State"
1603
+ msgstr "Stat"
1604
 
1605
+ #: includes/i18n.php:467
1606
  msgid "Province"
1607
+ msgstr "Provins"
1608
 
1609
+ #: includes/i18n.php:468
1610
  msgid "ZIP / Postal Code"
1611
+ msgstr "ZIP / Postnummer"
1612
+
1613
+ #: includes/i18n.php:473
1614
+ msgid "Installing plugin: %s"
1615
+ msgstr "Installing plugin: %s"
1616
+
1617
+ #: includes/i18n.php:474
1618
+ msgid "Automatic Installation"
1619
+ msgstr "Automatic Installation"
1620
+
1621
+ #: includes/i18n.php:476
1622
+ msgid "%s sec"
1623
+ msgstr "%s sec"
1624
+
1625
+ #: includes/i18n.php:477
1626
+ 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."
1627
+ 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."
1628
+
1629
+ #: includes/i18n.php:478
1630
+ 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."
1631
+ 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."
1632
+
1633
+ #: includes/i18n.php:479
1634
+ msgid "Cancel Installation"
1635
+ msgstr "Cancel Installation"
1636
+
1637
+ #: includes/i18n.php:480
1638
+ msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
1639
+ msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
1640
+
1641
+ #: includes/i18n.php:481
1642
+ msgid "Invalid module ID."
1643
+ msgstr "Invalid module ID."
1644
+
1645
+ #: includes/i18n.php:482
1646
+ msgid "Auto installation only works for opted-in users."
1647
+ msgstr "Auto installation only works for opted-in users."
1648
+
1649
+ #: includes/i18n.php:483
1650
+ msgid "Premium version already active."
1651
+ msgstr "Premium version already active."
1652
+
1653
+ #: includes/i18n.php:484
1654
+ msgid "Premium add-on version already installed."
1655
+ msgstr "Premium add-on version already installed."
1656
+
1657
+ #: includes/i18n.php:485
1658
+ msgid "You do not have a valid license to access the premium version."
1659
+ msgstr "You do not have a valid license to access the premium version."
1660
+
1661
+ #: includes/i18n.php:486
1662
+ msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
1663
+ msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version."
1664
+
1665
+ #: includes/i18n.php:501
1666
+ msgctxt "Plugin installer section title"
1667
+ msgid "Description"
1668
+ msgstr "Beskrivelse"
1669
+
1670
+ #: includes/i18n.php:502
1671
+ msgctxt "Plugin installer section title"
1672
+ msgid "Installation"
1673
+ msgstr "Installering"
1674
+
1675
+ #: includes/i18n.php:503
1676
+ msgctxt "Plugin installer section title"
1677
+ msgid "FAQ"
1678
+ msgstr "FAQ"
1679
+
1680
+ #: includes/i18n.php:504
1681
+ msgctxt "Plugin installer section title"
1682
+ msgid "Changelog"
1683
+ msgstr "Ændringslog"
1684
+
1685
+ #: includes/i18n.php:505
1686
+ msgctxt "Plugin installer section title"
1687
+ msgid "Reviews"
1688
+ msgstr "Anmeldelser"
1689
+
1690
+ #: includes/i18n.php:506
1691
+ msgctxt "Plugin installer section title"
1692
+ msgid "Other Notes"
1693
+ msgstr "Andre noter"
1694
+
1695
+ #: includes/i18n.php:508
1696
+ msgid "%s star"
1697
+ msgstr "%s stjerne"
1698
+
1699
+ #: includes/i18n.php:510
1700
+ msgid "%s stars"
1701
+ msgstr "%s stjerner"
1702
+
1703
+ #: includes/i18n.php:512
1704
+ msgid "%s rating"
1705
+ msgstr "%s vurdering"
1706
+
1707
+ #: includes/i18n.php:514
1708
+ msgid "%s ratings"
1709
+ msgstr "%s vurderinger"
1710
+
1711
+ #: includes/i18n.php:516
1712
+ msgid "%s time"
1713
+ msgstr "%s gang"
1714
+
1715
+ #: includes/i18n.php:518
1716
+ msgid "%s times"
1717
+ msgstr "%s gange"
1718
+
1719
+ #: includes/i18n.php:520
1720
+ msgid "Click to see reviews that provided a rating of %s"
1721
+ msgstr "Click to see reviews that provided a rating of %s"
1722
+
1723
+ #: includes/i18n.php:521
1724
+ msgid "Last Updated"
1725
+ msgstr "Senest opdateret"
1726
+
1727
+ #: includes/i18n.php:522
1728
+ msgid "Requires WordPress Version:"
1729
+ msgstr "Kræver WordPress-version:"
1730
+
1731
+ #: includes/i18n.php:523
1732
+ msgctxt "as the plugin author"
1733
+ msgid "Author:"
1734
+ msgstr "Forfatter:"
1735
+
1736
+ #: includes/i18n.php:524
1737
+ msgid "Compatible up to:"
1738
+ msgstr "Kompatibel op til:"
1739
+
1740
+ #: includes/i18n.php:525
1741
+ msgid "Downloaded:"
1742
+ msgstr "Hentet:"
1743
+
1744
+ #: includes/i18n.php:526
1745
+ msgid "WordPress.org Plugin Page"
1746
+ msgstr "WordPress.org Plugin-side"
1747
+
1748
+ #: includes/i18n.php:527
1749
+ msgid "Plugin Homepage"
1750
+ msgstr "Plugin-websted"
1751
+
1752
+ #: includes/i18n.php:528
1753
+ msgid "Donate to this plugin"
1754
+ msgstr "Donér til dette plugin"
1755
+
1756
+ #: includes/i18n.php:529
1757
+ msgid "Average Rating"
1758
+ msgstr "Gennemsnitlig vurdering"
1759
+
1760
+ #: includes/i18n.php:530
1761
+ msgid "based on %s"
1762
+ msgstr "baseret på %s"
1763
+
1764
+ #: includes/i18n.php:531
1765
+ msgid "Warning:"
1766
+ msgstr "Advarsel:"
1767
+
1768
+ #: includes/i18n.php:532
1769
+ msgid "Contributors"
1770
+ msgstr "Bidragsydere"
1771
+
1772
+ #: includes/i18n.php:533
1773
+ msgid "Plugin Install"
1774
+ msgstr "Plugin Install"
1775
+
1776
+ #: includes/i18n.php:534
1777
+ msgid "This plugin has not been tested with your current version of WordPress."
1778
+ msgstr "This plugin has not been tested with your current version of WordPress."
1779
+
1780
+ #: includes/i18n.php:535
1781
+ msgid "This plugin has not been marked as compatible with your version of WordPress."
1782
+ msgstr "This plugin has not been marked as compatible with your version of WordPress."
1783
+
1784
+ #: includes/i18n.php:536
1785
+ msgid "Newer Version (%s) Installed"
1786
+ msgstr "Nyere version (%s) installeret"
1787
+
1788
+ #: includes/i18n.php:537
1789
+ msgid "Latest Version Installed"
1790
+ msgstr "Seneste version installeret"
freemius/languages/freemius-en.mo CHANGED
Binary file
freemius/languages/freemius-en.po CHANGED
@@ -80,1648 +80,1709 @@ msgid "Downgrade"
80
  msgstr "Downgrade"
81
 
82
  #: includes/i18n.php:51
 
 
 
 
 
83
  msgid "Cancel Trial"
84
  msgstr "Cancel Trial"
85
 
86
- #: includes/i18n.php:52
87
  msgid "Free Trial"
88
  msgstr "Free Trial"
89
 
90
- #: includes/i18n.php:53
91
  msgid "Start my free %s"
92
  msgstr "Start my free %s"
93
 
94
- #: includes/i18n.php:54
95
  msgid "No commitment for %s - cancel anytime"
96
  msgstr "No commitment for %s - cancel anytime"
97
 
98
- #: includes/i18n.php:55
99
  msgid "After your free %s, pay as little as %s"
100
  msgstr "After your free %s, pay as little as %s"
101
 
102
- #: includes/i18n.php:56
103
  msgid "Details"
104
  msgstr "Details"
105
 
106
- #: includes/i18n.php:57
107
  msgid "Account Details"
108
  msgstr "Account Details"
109
 
110
- #: includes/i18n.php:58
111
  msgctxt "verb"
112
  msgid "Delete"
113
  msgstr "Delete"
114
 
115
- #: includes/i18n.php:59
116
  msgctxt "verb"
117
  msgid "Show"
118
  msgstr "Show"
119
 
120
- #: includes/i18n.php:60
121
  msgctxt "verb"
122
  msgid "Hide"
123
  msgstr "Hide"
124
 
125
- #: includes/i18n.php:61
126
  msgctxt "verb"
127
  msgid "Edit"
128
  msgstr "Edit"
129
 
130
- #: includes/i18n.php:62
131
  msgctxt "verb"
132
  msgid "Update"
133
  msgstr "Update"
134
 
135
- #: includes/i18n.php:63
136
  msgid "Date"
137
  msgstr "Date"
138
 
139
- #: includes/i18n.php:64
140
  msgid "Amount"
141
  msgstr "Amount"
142
 
143
- #: includes/i18n.php:65
144
  msgid "Invoice"
145
  msgstr "Invoice"
146
 
147
- #: includes/i18n.php:66
148
  msgid "Billing"
149
  msgstr "Billing"
150
 
151
- #: includes/i18n.php:67
152
  msgid "Payments"
153
  msgstr "Payments"
154
 
155
- #: includes/i18n.php:68
156
  msgid "Delete Account"
157
  msgstr "Delete Account"
158
 
159
- #: includes/i18n.php:69
160
  msgctxt "as close a window"
161
  msgid "Dismiss"
162
  msgstr "Dismiss"
163
 
164
- #: includes/i18n.php:70
165
  msgctxt "as product pricing plan"
166
  msgid "Plan"
167
  msgstr "Plan"
168
 
169
- #: includes/i18n.php:71
170
  msgid "Change Plan"
171
  msgstr "Change Plan"
172
 
173
- #: includes/i18n.php:72
174
  msgctxt "as download professional version"
175
  msgid "Download %s Version"
176
  msgstr "Download %s Version"
177
 
178
- #: includes/i18n.php:73
179
  msgctxt "as download professional version now"
180
  msgid "Download %s version now"
181
  msgstr "Download %s version now"
182
 
183
- #: includes/i18n.php:74
184
  msgctxt "as download latest version"
185
  msgid "Download Latest"
186
  msgstr "Download Latest"
187
 
188
- #: includes/i18n.php:75
189
  msgctxt "E.g. you have a professional license."
190
  msgid "You have a %s license."
191
  msgstr "You have a %s license."
192
 
193
- #: includes/i18n.php:76
194
  msgid "New"
195
  msgstr "New"
196
 
197
- #: includes/i18n.php:77
198
  msgid "Free"
199
  msgstr "Free"
200
 
201
- #: includes/i18n.php:78
202
  msgctxt "as trial plan"
203
  msgid "Trial"
204
  msgstr "Trial"
205
 
206
- #: includes/i18n.php:79
207
  msgctxt "as starting a trial plan"
208
  msgid "Start Trial"
209
  msgstr "Start Trial"
210
 
211
- #: includes/i18n.php:80
212
  msgctxt "verb"
213
  msgid "Purchase"
214
  msgstr "Purchase"
215
 
216
- #: includes/i18n.php:81
217
  msgid "Purchase License"
218
  msgstr "Purchase License"
219
 
220
- #: includes/i18n.php:82
221
  msgctxt "verb"
222
  msgid "Buy"
223
  msgstr "Buy"
224
 
225
- #: includes/i18n.php:83
226
  msgid "Buy License"
227
  msgstr "Buy License"
228
 
229
- #: includes/i18n.php:84
230
  msgid "Single Site License"
231
  msgstr "Single Site License"
232
 
233
- #: includes/i18n.php:85
234
  msgid "Unlimited Licenses"
235
  msgstr "Unlimited Licenses"
236
 
237
- #: includes/i18n.php:86
238
  msgid "Up to %s Sites"
239
  msgstr "Up to %s Sites"
240
 
241
- #: includes/i18n.php:87
242
  msgid "%sRenew your license now%s to access version %s features and support."
243
  msgstr "%sRenew your license now%s to access version %s features and support."
244
 
245
- #: includes/i18n.php:88
246
  msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
247
  msgstr "Enter the email address you've used for the upgrade below and we will resend you the license key."
248
 
249
- #: includes/i18n.php:89
250
  msgctxt "e.g. Professional Plan"
251
  msgid "%s Plan"
252
  msgstr "%s Plan"
253
 
254
- #: includes/i18n.php:90
255
  msgid "You are just one step away - %s"
256
  msgstr "You are just one step away - %s"
257
 
258
- #: includes/i18n.php:91
259
  msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
260
  msgid "Complete \"%s\" Activation Now"
261
  msgstr "Complete \"%s\" Activation Now"
262
 
263
- #: includes/i18n.php:93
264
  msgid "We made a few tweaks to the plugin, %s"
265
  msgstr "We made a few tweaks to the plugin, %s"
266
 
267
- #: includes/i18n.php:94
268
  msgid "Opt-in to make \"%s\" Better!"
269
  msgstr "Opt-in to make \"%s\" Better!"
270
 
271
- #: includes/i18n.php:95
272
  msgid "Error"
273
  msgstr "Error"
274
 
275
- #: includes/i18n.php:96
276
  msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
277
  msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
278
 
279
- #: includes/i18n.php:99
280
  msgctxt "as expiration date"
281
  msgid "Expiration"
282
  msgstr "Expiration"
283
 
284
- #: includes/i18n.php:100
285
  msgctxt "as software license"
286
  msgid "License"
287
  msgstr "License"
288
 
289
- #: includes/i18n.php:101
290
  msgid "not verified"
291
  msgstr "not verified"
292
 
293
- #: includes/i18n.php:102
294
  msgid "Verify Email"
295
  msgstr "Verify Email"
296
 
297
- #: includes/i18n.php:103
298
  msgctxt "e.g. expires in 2 months"
299
  msgid "Expires in %s"
300
  msgstr "Expires in %s"
301
 
302
- #: includes/i18n.php:104
303
  msgctxt "e.g. auto renews in 2 months"
304
  msgid "Auto renews in %s"
305
  msgstr "Auto renews in %s"
306
 
307
- #: includes/i18n.php:105
308
  msgid "No expiration"
309
  msgstr "No expiration"
310
 
311
- #: includes/i18n.php:106
312
  msgid "Expired"
313
  msgstr "Expired"
314
 
315
- #: includes/i18n.php:107
316
  msgid "Cancelled"
317
  msgstr "Cancelled"
318
 
319
- #: includes/i18n.php:108
320
  msgctxt "e.g. In 2 hours"
321
  msgid "In %s"
322
  msgstr "In %s"
323
 
324
- #: includes/i18n.php:109
325
  msgctxt "e.g. 2 min ago"
326
  msgid "%s ago"
327
  msgstr "%s ago"
328
 
329
- #: includes/i18n.php:111
330
  msgid "%s or higher"
331
  msgstr "%s or higher"
332
 
333
- #: includes/i18n.php:112
334
  msgctxt "as plugin version"
335
  msgid "Version"
336
  msgstr "Version"
337
 
338
- #: includes/i18n.php:113
339
  msgid "Name"
340
  msgstr "Name"
341
 
342
- #: includes/i18n.php:114
343
  msgid "Email"
344
  msgstr "Email"
345
 
346
- #: includes/i18n.php:115
347
  msgid "Email address"
348
  msgstr "Email address"
349
 
350
- #: includes/i18n.php:116
351
  msgid "Verified"
352
  msgstr "Verified"
353
 
354
- #: includes/i18n.php:117
355
  msgid "Module"
356
  msgstr "Module"
357
 
358
- #: includes/i18n.php:118
359
  msgid "Module Type"
360
  msgstr "Module Type"
361
 
362
- #: includes/i18n.php:119
363
  msgid "Plugin"
364
  msgstr "Plugin"
365
 
366
- #: includes/i18n.php:120
367
  msgid "Plugins"
368
  msgstr "Plugins"
369
 
370
- #: includes/i18n.php:121
371
  msgid "Theme"
372
  msgstr "Theme"
373
 
374
- #: includes/i18n.php:122
375
  msgid "Themes"
376
  msgstr "Themes"
377
 
378
- #: includes/i18n.php:123
379
  msgctxt "as file/folder path"
380
  msgid "Path"
381
  msgstr "Path"
382
 
383
- #: includes/i18n.php:124
384
  msgid "Title"
385
  msgstr "Title"
386
 
387
- #: includes/i18n.php:125
388
  msgid "Free version"
389
  msgstr "Free version"
390
 
391
- #: includes/i18n.php:126
392
  msgid "Premium version"
393
  msgstr "Premium version"
394
 
395
- #: includes/i18n.php:127
396
  msgctxt "as WP plugin slug"
397
  msgid "Slug"
398
  msgstr "Slug"
399
 
400
- #: includes/i18n.php:128
401
  msgid "ID"
402
  msgstr "ID"
403
 
404
- #: includes/i18n.php:129
405
  msgid "Users"
406
  msgstr "Users"
407
 
408
- #: includes/i18n.php:130
409
  msgid "Plugin Installs"
410
  msgstr "Plugin Installs"
411
 
412
- #: includes/i18n.php:131
413
  msgid "%s Installs"
414
  msgstr "%s Installs"
415
 
416
- #: includes/i18n.php:132
417
  msgctxt "like websites"
418
  msgid "Sites"
419
  msgstr "Sites"
420
 
421
- #: includes/i18n.php:133
422
  msgid "User ID"
423
  msgstr "User ID"
424
 
425
- #: includes/i18n.php:134
426
  msgid "Site ID"
427
  msgstr "Site ID"
428
 
429
- #: includes/i18n.php:135
430
  msgid "Public Key"
431
  msgstr "Public Key"
432
 
433
- #: includes/i18n.php:136
434
  msgid "Secret Key"
435
  msgstr "Secret Key"
436
 
437
- #: includes/i18n.php:137
438
  msgctxt "as secret encryption key missing"
439
  msgid "No Secret"
440
  msgstr "No Secret"
441
 
442
- #: includes/i18n.php:138
443
  msgid "No ID"
444
  msgstr "No ID"
445
 
446
- #: includes/i18n.php:139
447
  msgctxt "as synchronize license"
448
  msgid "Sync License"
449
  msgstr "Sync License"
450
 
451
- #: includes/i18n.php:140
452
  msgctxt "as synchronize"
453
  msgid "Sync"
454
  msgstr "Sync"
455
 
456
- #: includes/i18n.php:141
457
  msgid "Activate License"
458
  msgstr "Activate License"
459
 
460
- #: includes/i18n.php:142
461
  msgid "Activate Free Version"
462
  msgstr "Activate Free Version"
463
 
464
- #: includes/i18n.php:143
465
  msgid "Please enter the license key that you received in the email right after the purchase:"
466
  msgstr "Please enter the license key that you received in the email right after the purchase:"
467
 
468
- #: includes/i18n.php:144
469
  msgid "Activating license..."
470
  msgstr "Activating license..."
471
 
472
- #: includes/i18n.php:145
473
  msgid "Change License"
474
  msgstr "Change License"
475
 
476
- #: includes/i18n.php:146
477
  msgid "Update License"
478
  msgstr "Update License"
479
 
480
- #: includes/i18n.php:147
481
  msgid "Deactivate License"
482
  msgstr "Deactivate License"
483
 
484
- #: includes/i18n.php:148
485
  msgid "Activate"
486
  msgstr "Activate"
487
 
488
- #: includes/i18n.php:149
489
  msgid "Deactivate"
490
  msgstr "Deactivate"
491
 
492
- #: includes/i18n.php:150
493
  msgid "Skip & Deactivate"
494
  msgstr "Skip & Deactivate"
495
 
496
- #: includes/i18n.php:151
497
  msgid "Skip & %s"
498
  msgstr "Skip & %s"
499
 
500
- #: includes/i18n.php:152
501
  msgid "No - just deactivate"
502
  msgstr "No - just deactivate"
503
 
504
- #: includes/i18n.php:153
505
  msgid "Yes - do your thing"
506
  msgstr "Yes - do your thing"
507
 
508
- #: includes/i18n.php:154
509
  msgctxt "active mode"
510
  msgid "Active"
511
  msgstr "Active"
512
 
513
- #: includes/i18n.php:155
514
  msgctxt "is active mode?"
515
  msgid "Is Active"
516
  msgstr "Is Active"
517
 
518
- #: includes/i18n.php:156
519
  msgid "Install Now"
520
  msgstr "Install Now"
521
 
522
- #: includes/i18n.php:157
523
  msgid "Install Update Now"
524
  msgstr "Install Update Now"
525
 
526
- #: includes/i18n.php:158
527
  msgid "More information about %s"
528
  msgstr "More information about %s"
529
 
530
- #: includes/i18n.php:159
531
  msgid "Localhost"
532
  msgstr "Localhost"
533
 
534
- #: includes/i18n.php:160
535
  msgctxt "as activate Professional plan"
536
  msgid "Activate %s Plan"
537
  msgstr "Activate %s Plan"
538
 
539
- #: includes/i18n.php:161
540
  msgctxt "as 5 licenses left"
541
  msgid "%s left"
542
  msgstr "%s left"
543
 
544
- #: includes/i18n.php:162
545
  msgid "Last license"
546
  msgstr "Last license"
547
 
548
- #: includes/i18n.php:163
549
  msgid "What is your %s?"
550
  msgstr "What is your %s?"
551
 
552
- #: includes/i18n.php:164
553
  msgid "Activate this add-on"
554
  msgstr "Activate this add-on"
555
 
556
- #: includes/i18n.php:165
557
  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?"
558
  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?"
559
 
560
- #: includes/i18n.php:166
561
  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?"
562
  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?"
563
 
564
- #: includes/i18n.php:167
565
  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?"
566
  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?"
567
 
568
- #: includes/i18n.php:168
569
  msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
570
  msgstr "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
571
 
572
- #: includes/i18n.php:169
573
  msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
574
  msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?"
575
 
576
- #: includes/i18n.php:170
577
  msgid "You can still enjoy all %s features but you will not have access to plugin updates and support."
578
  msgstr "You can still enjoy all %s features but you will not have access to plugin updates and support."
579
 
580
- #: includes/i18n.php:171
581
  msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
582
  msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
583
 
584
- #: includes/i18n.php:172
585
  msgid "Are you sure you want to proceed?"
586
  msgstr "Are you sure you want to proceed?"
587
 
588
- #: includes/i18n.php:175
589
  msgid "Add Ons for %s"
590
  msgstr "Add Ons for %s"
591
 
592
- #: includes/i18n.php:176
593
  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."
594
  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."
595
 
596
- #: includes/i18n.php:178
597
  msgid "Anonymous feedback"
598
  msgstr "Anonymous feedback"
599
 
600
- #: includes/i18n.php:179
601
  msgid "Quick feedback"
602
  msgstr "Quick feedback"
603
 
604
- #: includes/i18n.php:180
605
  msgid "If you have a moment, please let us know why you are deactivating"
606
  msgstr "If you have a moment, please let us know why you are deactivating"
607
 
608
- #: includes/i18n.php:181
609
  msgid "Yes - Deactivate"
610
  msgstr "Yes - Deactivate"
611
 
612
- #: includes/i18n.php:182
613
  msgid "Submit & Deactivate"
614
  msgstr "Submit & Deactivate"
615
 
616
- #: includes/i18n.php:183
617
  msgid "Cancel"
618
  msgstr "Cancel"
619
 
620
- #: includes/i18n.php:184
621
  msgid "I no longer need the plugin"
622
  msgstr "I no longer need the plugin"
623
 
624
- #: includes/i18n.php:185
625
  msgid "I found a better plugin"
626
  msgstr "I found a better plugin"
627
 
628
- #: includes/i18n.php:186
629
  msgid "I only needed the plugin for a short period"
630
  msgstr "I only needed the plugin for a short period"
631
 
632
- #: includes/i18n.php:187
633
  msgid "The plugin broke my site"
634
  msgstr "The plugin broke my site"
635
 
636
- #: includes/i18n.php:188
637
  msgid "The plugin suddenly stopped working"
638
  msgstr "The plugin suddenly stopped working"
639
 
640
- #: includes/i18n.php:189
641
  msgid "I can't pay for it anymore"
642
  msgstr "I can't pay for it anymore"
643
 
644
- #: includes/i18n.php:190
645
  msgid "It's a temporary deactivation. I'm just debugging an issue."
646
  msgstr "It's a temporary deactivation. I'm just debugging an issue."
647
 
648
- #: includes/i18n.php:191
649
  msgctxt "the text of the \"other\" reason for deactivating the plugin that is shown in the modal box."
650
  msgid "Other"
651
  msgstr "Other"
652
 
653
- #: includes/i18n.php:193
654
  msgid "Kindly tell us the reason so we can improve."
655
  msgstr "Kindly tell us the reason so we can improve."
656
 
657
- #: includes/i18n.php:194
658
  msgid "What's the plugin's name?"
659
  msgstr "What's the plugin's name?"
660
 
661
- #: includes/i18n.php:195
662
  msgid "What price would you feel comfortable paying?"
663
  msgstr "What price would you feel comfortable paying?"
664
 
665
- #: includes/i18n.php:196
666
  msgid "I couldn't understand how to make it work"
667
  msgstr "I couldn't understand how to make it work"
668
 
669
- #: includes/i18n.php:197
670
  msgid "The plugin is great, but I need specific feature that you don't support"
671
  msgstr "The plugin is great, but I need specific feature that you don't support"
672
 
673
- #: includes/i18n.php:198
674
  msgid "The plugin is not working"
675
  msgstr "The plugin is not working"
676
 
677
- #: includes/i18n.php:199
678
  msgid "It's not what I was looking for"
679
  msgstr "It's not what I was looking for"
680
 
681
- #: includes/i18n.php:200
682
  msgid "The plugin didn't work as expected"
683
  msgstr "The plugin didn't work as expected"
684
 
685
- #: includes/i18n.php:201
686
  msgid "What feature?"
687
  msgstr "What feature?"
688
 
689
- #: includes/i18n.php:202
690
  msgid "Kindly share what didn't work so we can fix it for future users..."
691
  msgstr "Kindly share what didn't work so we can fix it for future users..."
692
 
693
- #: includes/i18n.php:203
694
  msgid "What you've been looking for?"
695
  msgstr "What you've been looking for?"
696
 
697
- #: includes/i18n.php:204
698
  msgid "What did you expect?"
699
  msgstr "What did you expect?"
700
 
701
- #: includes/i18n.php:205
702
  msgid "The plugin didn't work"
703
  msgstr "The plugin didn't work"
704
 
705
- #: includes/i18n.php:206
706
  msgid "I don't like to share my information with you"
707
  msgstr "I don't like to share my information with you"
708
 
709
- #: includes/i18n.php:207
710
  msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
711
  msgstr "You might have missed it, but you don't have to share any data and can just %s the opt-in."
712
 
713
- #: includes/i18n.php:211
714
  msgctxt "greeting"
715
  msgid "Hey %s,"
716
  msgstr "Hey %s,"
717
 
718
- #: includes/i18n.php:212
719
  msgctxt "a greeting. E.g. Thanks John!"
720
  msgid "Thanks %s!"
721
  msgstr "Thanks %s!"
722
 
723
- #: includes/i18n.php:213
724
  msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
725
  msgstr "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
726
 
727
- #: includes/i18n.php:214
728
  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."
729
  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."
730
 
731
- #: includes/i18n.php:215
732
  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."
733
  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."
734
 
735
- #: includes/i18n.php:216
736
  msgid "complete the install"
737
  msgstr "complete the install"
738
 
739
- #: includes/i18n.php:217
740
  msgid "start the trial"
741
  msgstr "start the trial"
742
 
743
- #: includes/i18n.php:218
744
  msgid "Thanks for purchasing %s! To get started, please enter your license key:"
745
  msgstr "Thanks for purchasing %s! To get started, please enter your license key:"
746
 
747
- #: includes/i18n.php:219
748
  msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
749
  msgstr "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
750
 
751
- #: includes/i18n.php:220
752
  msgid "What permissions are being granted?"
753
  msgstr "What permissions are being granted?"
754
 
755
- #: includes/i18n.php:221
756
  msgid "Your Profile Overview"
757
  msgstr "Your Profile Overview"
758
 
759
- #: includes/i18n.php:222
760
  msgid "Name and email address"
761
  msgstr "Name and email address"
762
 
763
- #: includes/i18n.php:223
764
  msgid "Your Site Overview"
765
  msgstr "Your Site Overview"
766
 
767
- #: includes/i18n.php:224
768
  msgid "Site URL, WP version, PHP info, plugins & themes"
769
  msgstr "Site URL, WP version, PHP info, plugins & themes"
770
 
771
- #: includes/i18n.php:225
772
  msgid "Current Plugin Events"
773
  msgstr "Current Plugin Events"
774
 
775
- #: includes/i18n.php:226
776
  msgid "Activation, deactivation and uninstall"
777
  msgstr "Activation, deactivation and uninstall"
778
 
779
- #: includes/i18n.php:227
780
  msgid "Plugins & Themes"
781
  msgstr "Plugins & Themes"
782
 
783
- #: includes/i18n.php:228
784
  msgid "Titles, versions and state."
785
  msgstr "Titles, versions and state."
786
 
787
- #: includes/i18n.php:229
788
  msgid "Admin Notices"
789
  msgstr "Admin Notices"
790
 
791
- #: includes/i18n.php:230
792
  msgid "Newsletter"
793
  msgstr "Newsletter"
794
 
795
- #: includes/i18n.php:231
796
  msgid "Updates, announcements, marketing, no spam"
797
  msgstr "Updates, announcements, marketing, no spam"
798
 
799
- #: includes/i18n.php:232
800
  msgid "Privacy Policy"
801
  msgstr "Privacy Policy"
802
 
803
- #: includes/i18n.php:233
804
  msgid "Terms of Service"
805
  msgstr "Terms of Service"
806
 
807
- #: includes/i18n.php:234
808
  msgctxt "as activating plugin"
809
  msgid "Activating"
810
  msgstr "Activating"
811
 
812
- #: includes/i18n.php:235
813
  msgctxt "as in the process of sending an email"
814
  msgid "Sending email"
815
  msgstr "Sending email"
816
 
817
- #: includes/i18n.php:236
818
  msgctxt "button label"
819
  msgid "Allow & Continue"
820
  msgstr "Allow & Continue"
821
 
822
- #: includes/i18n.php:237
823
  msgctxt "button label"
824
  msgid "Agree & Activate License"
825
  msgstr "Agree & Activate License"
826
 
827
- #: includes/i18n.php:238
828
  msgctxt "verb"
829
  msgid "Skip"
830
  msgstr "Skip"
831
 
832
- #: includes/i18n.php:239
833
  msgid "Click here to use the plugin anonymously"
834
  msgstr "Click here to use the plugin anonymously"
835
 
836
- #: includes/i18n.php:240
837
  msgid "Re-send activation email"
838
  msgstr "Re-send activation email"
839
 
840
- #: includes/i18n.php:241
841
  msgid "License key"
842
  msgstr "License key"
843
 
844
- #: includes/i18n.php:242
845
  msgid "Send License Key"
846
  msgstr "Send License Key"
847
 
848
- #: includes/i18n.php:243
849
  msgid "Sending license key"
850
  msgstr "Sending license key"
851
 
852
- #: includes/i18n.php:244
853
  msgid "Have a license key?"
854
  msgstr "Have a license key?"
855
 
856
- #: includes/i18n.php:245
857
  msgid "Don't have a license key?"
858
  msgstr "Don't have a license key?"
859
 
860
- #: includes/i18n.php:246
861
  msgid "Can't find your license key?"
862
  msgstr "Can't find your license key?"
863
 
864
- #: includes/i18n.php:247
865
  msgid "We couldn't find your email address in the system, are you sure it's the right address?"
866
  msgstr "We couldn't find your email address in the system, are you sure it's the right address?"
867
 
868
- #: includes/i18n.php:248
869
  msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
870
  msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?"
871
 
872
- #: includes/i18n.php:249
873
  msgid "Opt In"
874
  msgstr "Opt In"
875
 
876
- #: includes/i18n.php:250
877
  msgid "Opt Out"
878
  msgstr "Opt Out"
879
 
880
- #: includes/i18n.php:251
881
  msgid "On second thought - I want to continue helping"
882
  msgstr "On second thought - I want to continue helping"
883
 
884
- #: includes/i18n.php:252
885
  msgid "Opting out..."
886
  msgstr "Opting out..."
887
 
888
- #: includes/i18n.php:253
889
  msgid "Opting in..."
890
  msgstr "Opting in..."
891
 
892
- #: includes/i18n.php:254
893
  msgid "We appreciate your help in making the %s better by letting us track some usage data."
894
  msgstr "We appreciate your help in making the %s better by letting us track some usage data."
895
 
896
- #: includes/i18n.php:255
897
  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."
898
  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."
899
 
900
- #: includes/i18n.php:256
901
  msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
902
  msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
903
 
904
- #: includes/i18n.php:260
905
  msgid "Screenshots"
906
  msgstr "Screenshots"
907
 
908
- #: includes/i18n.php:261
909
  msgid "Click to view full-size screenshot %d"
910
  msgstr "Click to view full-size screenshot %d"
911
 
912
- #: includes/i18n.php:265
913
  msgid "Freemius Debug"
914
  msgstr "Freemius Debug"
915
 
916
- #: includes/i18n.php:266
917
  msgctxt "as turned on"
918
  msgid "On"
919
  msgstr "On"
920
 
921
- #: includes/i18n.php:267
922
  msgctxt "as turned off"
923
  msgid "Off"
924
  msgstr "Off"
925
 
926
- #: includes/i18n.php:268
927
  msgctxt "as code debugging"
928
  msgid "Debugging"
929
  msgstr "Debugging"
930
 
931
- #: includes/i18n.php:269
932
  msgid "Freemius State"
933
  msgstr "Freemius State"
934
 
935
- #: includes/i18n.php:270
936
  msgctxt "as connection was successful"
937
  msgid "Connected"
938
  msgstr "Connected"
939
 
940
- #: includes/i18n.php:271
941
  msgctxt "as connection blocked"
942
  msgid "Blocked"
943
  msgstr "Blocked"
944
 
945
- #: includes/i18n.php:272
946
  msgctxt "as application program interface"
947
  msgid "API"
948
  msgstr "API"
949
 
950
- #: includes/i18n.php:273
951
  msgctxt "as software development kit versions"
952
  msgid "SDK"
953
  msgstr "SDK"
954
 
955
- #: includes/i18n.php:274
956
  msgctxt "as software development kit versions"
957
  msgid "SDK Versions"
958
  msgstr "SDK Versions"
959
 
960
- #: includes/i18n.php:275
961
  msgctxt "as plugin folder path"
962
  msgid "Plugin Path"
963
  msgstr "Plugin Path"
964
 
965
- #: includes/i18n.php:276
966
  msgctxt "as sdk path"
967
  msgid "SDK Path"
968
  msgstr "SDK Path"
969
 
970
- #: includes/i18n.php:277
971
  msgid "Add Ons of Plugin %s"
972
  msgstr "Add Ons of Plugin %s"
973
 
974
- #: includes/i18n.php:278
975
  msgid "Are you sure you want to delete all Freemius data?"
976
  msgstr "Are you sure you want to delete all Freemius data?"
977
 
978
- #: includes/i18n.php:279
979
  msgid "Actions"
980
  msgstr "Actions"
981
 
982
- #: includes/i18n.php:280
983
  msgid "Delete All Accounts"
984
  msgstr "Delete All Accounts"
985
 
986
- #: includes/i18n.php:281
987
  msgid "Start Fresh"
988
  msgstr "Start Fresh"
989
 
990
- #: includes/i18n.php:282
991
  msgid "Clear API Cache"
992
  msgstr "Clear API Cache"
993
 
994
- #: includes/i18n.php:283
995
  msgid "Sync Data From Server"
996
  msgstr "Sync Data From Server"
997
 
998
- #: includes/i18n.php:284
999
  msgid "Scheduled Crons"
1000
  msgstr "Scheduled Crons"
1001
 
1002
- #: includes/i18n.php:285
1003
  msgid "Cron Type"
1004
  msgstr "Cron Type"
1005
 
1006
- #: includes/i18n.php:286
1007
  msgid "Plugins & Themes Sync"
1008
  msgstr "Plugins & Themes Sync"
1009
 
1010
- #: includes/i18n.php:287
1011
  msgid "Licenses"
1012
  msgstr "Licenses"
1013
 
1014
- #: includes/i18n.php:288
1015
  msgid "Debug Log"
1016
  msgstr "Debug Log"
1017
 
1018
- #: includes/i18n.php:289
1019
  msgid "All"
1020
  msgstr "All"
1021
 
1022
- #: includes/i18n.php:290
1023
  msgid "File"
1024
  msgstr "File"
1025
 
1026
- #: includes/i18n.php:291
1027
  msgid "Function"
1028
  msgstr "Function"
1029
 
1030
- #: includes/i18n.php:292
1031
  msgid "Process ID"
1032
  msgstr "Process ID"
1033
 
1034
- #: includes/i18n.php:293
1035
  msgid "Logger"
1036
  msgstr "Logger"
1037
 
1038
- #: includes/i18n.php:294
1039
  msgid "Message"
1040
  msgstr "Message"
1041
 
1042
- #: includes/i18n.php:295
1043
  msgid "Download"
1044
  msgstr "Download"
1045
 
1046
- #: includes/i18n.php:296
1047
  msgid "Filter"
1048
  msgstr "Filter"
1049
 
1050
- #: includes/i18n.php:297
1051
  msgid "Type"
1052
  msgstr "Type"
1053
 
1054
- #: includes/i18n.php:298
1055
  msgid "All Types"
1056
  msgstr "All Types"
1057
 
1058
- #: includes/i18n.php:299
1059
  msgid "All Requests"
1060
  msgstr "All Requests"
1061
 
1062
- #: includes/i18n.php:303
1063
  msgctxt "as congratulations"
1064
  msgid "Congrats"
1065
  msgstr "Congrats"
1066
 
1067
- #: includes/i18n.php:304
1068
  msgctxt "exclamation"
1069
  msgid "Oops"
1070
  msgstr "Oops"
1071
 
1072
- #: includes/i18n.php:305
1073
  msgctxt "interjection expressing joy or exuberance"
1074
  msgid "Yee-haw"
1075
  msgstr "Yee-haw"
1076
 
1077
- #: includes/i18n.php:306
1078
  msgctxt "(especially in electronic communication) used to express elation, enthusiasm, or triumph."
1079
  msgid "W00t"
1080
  msgstr "W00t"
1081
 
1082
- #: includes/i18n.php:308
1083
  msgctxt "a positive response"
1084
  msgid "Right on"
1085
  msgstr "Right on"
1086
 
1087
- #: includes/i18n.php:309
1088
  msgctxt "something somebody says when they are thinking about what you have just said. "
1089
  msgid "Hmm"
1090
  msgstr "Hmm"
1091
 
1092
- #: includes/i18n.php:311
1093
  msgid "O.K"
1094
  msgstr "O.K"
1095
 
1096
- #: includes/i18n.php:312
1097
  msgctxt "exclamation"
1098
  msgid "Hey"
1099
  msgstr "Hey"
1100
 
1101
- #: includes/i18n.php:313
1102
  msgctxt "advance notice of something that will need attention."
1103
  msgid "Heads up"
1104
  msgstr "Heads up"
1105
 
1106
- #: includes/i18n.php:318
1107
  msgid "Seems like you got the latest release."
1108
  msgstr "Seems like you got the latest release."
1109
 
1110
- #: includes/i18n.php:319
1111
  msgid "You are all good!"
1112
  msgstr "You are all good!"
1113
 
1114
- #: includes/i18n.php:320
1115
  msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
1116
  msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered."
1117
 
1118
- #: includes/i18n.php:321
1119
  msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
1120
  msgstr "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
1121
 
1122
- #: includes/i18n.php:322
1123
  msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
1124
  msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
1125
 
1126
- #: includes/i18n.php:323
1127
  msgid "Your name was successfully updated."
1128
  msgstr "Your name was successfully updated."
1129
 
1130
- #: includes/i18n.php:324
1131
  msgid "You have successfully updated your %s."
1132
  msgstr "You have successfully updated your %s."
1133
 
1134
- #: includes/i18n.php:325
1135
  msgid "Please provide your full name."
1136
  msgstr "Please provide your full name."
1137
 
1138
- #: includes/i18n.php:326
1139
  msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
1140
  msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
1141
 
1142
- #: includes/i18n.php:327
1143
  msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
1144
  msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server."
1145
 
1146
- #: includes/i18n.php:328
1147
  msgid "No credit card required"
1148
  msgstr "No credit card required"
1149
 
1150
- #: includes/i18n.php:329
1151
  msgid "Premium plugin version was successfully activated."
1152
  msgstr "Premium plugin version was successfully activated."
1153
 
1154
- #: includes/i18n.php:330
1155
  msgid "The upgrade of %s was successfully completed."
1156
  msgstr "The upgrade of %s was successfully completed."
1157
 
1158
- #: includes/i18n.php:331
1159
  msgid "Your account was successfully activated with the %s plan."
1160
  msgstr "Your account was successfully activated with the %s plan."
1161
 
1162
- #: includes/i18n.php:332
1163
  msgid "Download the latest %s version now"
1164
  msgstr "Download the latest %s version now"
1165
 
1166
- #: includes/i18n.php:333
1167
  msgid "Please follow these steps to complete the upgrade"
1168
  msgstr "Please follow these steps to complete the upgrade"
1169
 
1170
- #: includes/i18n.php:334
1171
  msgid "Download the latest %s version"
1172
  msgstr "Download the latest %s version"
1173
 
1174
- #: includes/i18n.php:335
1175
  msgid "Download the latest version"
1176
  msgstr "Download the latest version"
1177
 
1178
- #: includes/i18n.php:336
1179
  msgid "Deactivate the free version"
1180
  msgstr "Deactivate the free version"
1181
 
1182
- #: includes/i18n.php:337
1183
  msgid "Upload and activate the downloaded version"
1184
  msgstr "Upload and activate the downloaded version"
1185
 
1186
- #: includes/i18n.php:338
1187
  msgid "How to upload and activate?"
1188
  msgstr "How to upload and activate?"
1189
 
1190
- #: includes/i18n.php:339
1191
  msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1192
  msgid "%s Add-on was successfully purchased."
1193
  msgstr "%s Add-on was successfully purchased."
1194
 
1195
- #: includes/i18n.php:341
1196
  msgid "Your %s Add-on plan was successfully upgraded."
1197
  msgstr "Your %s Add-on plan was successfully upgraded."
1198
 
1199
- #: includes/i18n.php:342
1200
  msgid "Your email has been successfully verified - you are AWESOME!"
1201
  msgstr "Your email has been successfully verified - you are AWESOME!"
1202
 
1203
- #: includes/i18n.php:343
1204
  msgid "Your plan was successfully upgraded."
1205
  msgstr "Your plan was successfully upgraded."
1206
 
1207
- #: includes/i18n.php:344
1208
  msgid "Your plan was successfully changed to %s."
1209
  msgstr "Your plan was successfully changed to %s."
1210
 
1211
- #: includes/i18n.php:345
1212
  msgid "Your license has expired. You can still continue using the free plugin forever."
1213
  msgstr "Your license has expired. You can still continue using the free plugin forever."
1214
 
1215
- #: includes/i18n.php:346
1216
  msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
1217
  msgstr "Your license has been cancelled. If you think it's a mistake, please contact support."
1218
 
1219
- #: includes/i18n.php:347
1220
  msgid "Your trial has been successfully started."
1221
  msgstr "Your trial has been successfully started."
1222
 
1223
- #: includes/i18n.php:348
1224
  msgid "Your license was successfully activated."
1225
  msgstr "Your license was successfully activated."
1226
 
1227
- #: includes/i18n.php:349
1228
  msgid "It looks like your site currently doesn't have an active license."
1229
  msgstr "It looks like your site currently doesn't have an active license."
1230
 
1231
- #: includes/i18n.php:350
1232
  msgid "Your license was successfully deactivated, you are back to the %s plan."
1233
  msgstr "Your license was successfully deactivated, you are back to the %s plan."
1234
 
1235
- #: includes/i18n.php:351
1236
  msgid "It looks like the license deactivation failed."
1237
  msgstr "It looks like the license deactivation failed."
1238
 
1239
- #: includes/i18n.php:352
1240
  msgid "It looks like the license could not be activated."
1241
  msgstr "It looks like the license could not be activated."
1242
 
1243
- #: includes/i18n.php:353
1244
  msgid "Error received from the server:"
1245
  msgstr "Error received from the server:"
1246
 
1247
- #: includes/i18n.php:354
1248
  msgid "Your trial has expired. You can still continue using all our free features."
1249
  msgstr "Your trial has expired. You can still continue using all our free features."
1250
 
1251
- #: includes/i18n.php:355
1252
  msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
1253
  msgstr "Your plan was successfully downgraded. Your %s plan license will expire in %s."
1254
 
1255
- #: includes/i18n.php:356
1256
  msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
1257
  msgstr "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
1258
 
1259
- #: includes/i18n.php:357
1260
  msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
1261
  msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
1262
 
1263
- #: includes/i18n.php:358
1264
  msgid "Your %s free trial was successfully cancelled."
1265
  msgstr "Your %s free trial was successfully cancelled."
1266
 
1267
- #: includes/i18n.php:359
1268
  msgctxt "%s - numeric version number"
1269
  msgid "Version %s was released."
1270
  msgstr "Version %s was released."
1271
 
1272
- #: includes/i18n.php:360
1273
  msgid "Please download %s."
1274
  msgstr "Please download %s."
1275
 
1276
- #: includes/i18n.php:361
1277
  msgctxt "%s - plan name, as the latest professional version here"
1278
  msgid "the latest %s version here"
1279
  msgstr "the latest %s version here"
1280
 
1281
- #: includes/i18n.php:363
1282
  msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
1283
  msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
1284
 
1285
- #: includes/i18n.php:364
1286
  msgctxt "call to action"
1287
  msgid "Start free trial"
1288
  msgstr "Start free trial"
1289
 
1290
- #: includes/i18n.php:365
1291
  msgid "Starting trial"
1292
  msgstr "Starting trial"
1293
 
1294
- #: includes/i18n.php:366
1295
  msgid "Please wait"
1296
  msgstr "Please wait"
1297
 
1298
- #: includes/i18n.php:367
1299
  msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
1300
  msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
1301
 
1302
- #: includes/i18n.php:368
1303
  msgid "You already utilized a trial before."
1304
  msgstr "You already utilized a trial before."
1305
 
1306
- #: includes/i18n.php:369
1307
  msgid "You are already running the plugin in a trial mode."
1308
  msgstr "You are already running the plugin in a trial mode."
1309
 
1310
- #: includes/i18n.php:370
1311
  msgid "Plan %s do not exist, therefore, can't start a trial."
1312
  msgstr "Plan %s do not exist, therefore, can't start a trial."
1313
 
1314
- #: includes/i18n.php:371
1315
  msgid "Plan %s does not support a trial period."
1316
  msgstr "Plan %s does not support a trial period."
1317
 
1318
- #: includes/i18n.php:372
1319
  msgid "None of the plugin's plans supports a trial period."
1320
  msgstr "None of the plugin's plans supports a trial period."
1321
 
1322
- #: includes/i18n.php:373
1323
  msgid "Unexpected API error. Please contact the plugin's author with the following error."
1324
  msgstr "Unexpected API error. Please contact the plugin's author with the following error."
1325
 
1326
- #: includes/i18n.php:374
1327
  msgid "No commitment for %s days - cancel anytime!"
1328
  msgstr "No commitment for %s days - cancel anytime!"
1329
 
1330
- #: includes/i18n.php:375
1331
  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."
1332
  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."
1333
 
1334
- #: includes/i18n.php:376
1335
  msgid "Couldn't activate %s."
1336
  msgstr "Couldn't activate %s."
1337
 
1338
- #: includes/i18n.php:377
1339
  msgid "Please contact us with the following message:"
1340
  msgstr "Please contact us with the following message:"
1341
 
1342
- #: includes/i18n.php:378
1343
  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."
1344
  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."
1345
 
1346
- #: includes/i18n.php:379
1347
  msgid "Please contact us here"
1348
  msgstr "Please contact us here"
1349
 
1350
- #: includes/i18n.php:380
1351
  msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
1352
  msgstr "I have upgraded my account but when I try to Sync the License, the plan remains %s."
1353
 
1354
- #: includes/i18n.php:383
1355
  msgid "From unknown reason, the API connectivity test failed."
1356
  msgstr "From unknown reason, the API connectivity test failed."
1357
 
1358
- #: includes/i18n.php:384
1359
  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?"
1360
  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?"
1361
 
1362
- #: includes/i18n.php:385
1363
- 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."
1364
- 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."
1365
-
1366
  #: includes/i18n.php:386
 
 
 
 
 
 
 
 
1367
  msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1368
  msgstr "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1369
 
1370
- #: includes/i18n.php:387
1371
  msgctxt "as pluginX requires an access to our API"
1372
  msgid "%s requires an access to our API."
1373
  msgstr "%s requires an access to our API."
1374
 
1375
- #: includes/i18n.php:389
1376
  msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
1377
  msgstr "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
1378
 
1379
- #: includes/i18n.php:390
1380
  msgid "I don't know what is Squid or ACL, help me!"
1381
  msgstr "I don't know what is Squid or ACL, help me!"
1382
 
1383
- #: includes/i18n.php:391, includes/i18n.php:395
1384
  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."
1385
  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."
1386
 
1387
- #: includes/i18n.php:392
1388
  msgid "I'm a system administrator"
1389
  msgstr "I'm a system administrator"
1390
 
1391
- #: includes/i18n.php:393
1392
  msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again."
1393
  msgstr "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again."
1394
 
1395
- #: includes/i18n.php:394
1396
  msgid "I don't know what is cURL or how to install it, help me!"
1397
  msgstr "I don't know what is cURL or how to install it, help me!"
1398
 
1399
- #: includes/i18n.php:396
1400
- 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."
1401
- 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."
1402
 
1403
- #: includes/i18n.php:397
1404
  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."
1405
  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."
1406
 
1407
- #: includes/i18n.php:398
1408
  msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
1409
  msgstr "Sorry for the inconvenience and we are here to help if you give us a chance."
1410
 
1411
- #: includes/i18n.php:399
1412
  msgid "Yes - I'm giving you a chance to fix it"
1413
  msgstr "Yes - I'm giving you a chance to fix it"
1414
 
1415
- #: includes/i18n.php:400
1416
  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."
1417
  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."
1418
 
1419
- #: includes/i18n.php:401
1420
  msgid "Let's try your previous version"
1421
  msgstr "Let's try your previous version"
1422
 
1423
- #: includes/i18n.php:402
1424
  msgid "Uninstall this version and install the previous one."
1425
  msgstr "Uninstall this version and install the previous one."
1426
 
1427
- #: includes/i18n.php:403
1428
  msgid "That's exhausting, please deactivate"
1429
  msgstr "That's exhausting, please deactivate"
1430
 
1431
- #: includes/i18n.php:404
1432
  msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
1433
  msgstr "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
1434
 
1435
- #: includes/i18n.php:405
1436
  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."
1437
  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."
1438
 
1439
- #: includes/i18n.php:406
1440
  msgctxt "%1s - plugin title, %2s - API domain"
1441
  msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
1442
  msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
1443
 
1444
- #: includes/i18n.php:408
1445
  msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
1446
  msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
1447
 
1448
- #: includes/i18n.php:411
1449
  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."
1450
  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."
1451
 
1452
- #: includes/i18n.php:412
1453
  msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
1454
  msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
1455
 
1456
- #: includes/i18n.php:413
1457
  msgid "%s is the new owner of the account."
1458
  msgstr "%s is the new owner of the account."
1459
 
1460
- #: includes/i18n.php:415
1461
  msgctxt "addonX cannot run without pluginY"
1462
  msgid "%s cannot run without %s."
1463
  msgstr "%s cannot run without %s."
1464
 
1465
- #: includes/i18n.php:417
1466
  msgctxt "addonX cannot run..."
1467
  msgid "%s cannot run without the plugin."
1468
  msgstr "%s cannot run without the plugin."
1469
 
1470
- #: includes/i18n.php:418
1471
  msgctxt "pluginX activation was successfully..."
1472
  msgid "%s activation was successfully completed."
1473
  msgstr "%s activation was successfully completed."
1474
 
1475
- #: includes/i18n.php:420
1476
  msgctxt "Plugin installer section title"
1477
  msgid "Features & Pricing"
1478
  msgstr "Features & Pricing"
1479
 
1480
- #: includes/i18n.php:421
1481
  msgid "Add-on must be deployed to WordPress.org or Freemius."
1482
  msgstr "Add-on must be deployed to WordPress.org or Freemius."
1483
 
1484
- #: includes/i18n.php:422
1485
  msgid "Paid add-on must be deployed to Freemius."
1486
  msgstr "Paid add-on must be deployed to Freemius."
1487
 
1488
- #: includes/i18n.php:426
1489
  msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
1490
  msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
1491
 
1492
- #: includes/i18n.php:427
1493
  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."
1494
  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."
1495
 
1496
- #: includes/i18n.php:432
1497
  msgctxt "as every month"
1498
  msgid "Monthly"
1499
  msgstr "Monthly"
1500
 
1501
- #: includes/i18n.php:433
1502
  msgctxt "as monthly period"
1503
  msgid "mo"
1504
  msgstr "mo"
1505
 
1506
- #: includes/i18n.php:434
1507
  msgctxt "as once a year"
1508
  msgid "Annual"
1509
  msgstr "Annual"
1510
 
1511
- #: includes/i18n.php:435
1512
  msgctxt "as once a year"
1513
  msgid "Annually"
1514
  msgstr "Annually"
1515
 
1516
- #: includes/i18n.php:436
1517
  msgctxt "as once a year"
1518
  msgid "Once"
1519
  msgstr "Once"
1520
 
1521
- #: includes/i18n.php:437
1522
  msgctxt "as annual period"
1523
  msgid "year"
1524
  msgstr "year"
1525
 
1526
- #: includes/i18n.php:438
1527
  msgid "Lifetime"
1528
  msgstr "Lifetime"
1529
 
1530
- #: includes/i18n.php:439
1531
  msgctxt "e.g. the best product"
1532
  msgid "Best"
1533
  msgstr "Best"
1534
 
1535
- #: includes/i18n.php:440
1536
  msgctxt "e.g. billed monthly"
1537
  msgid "Billed %s"
1538
  msgstr "Billed %s"
1539
 
1540
- #: includes/i18n.php:441
1541
  msgctxt "as a discount of $5 or 10%"
1542
  msgid "Save %s"
1543
  msgstr "Save %s"
1544
 
1545
- #: includes/i18n.php:443
1546
  msgid "View details"
1547
  msgstr "View details"
1548
 
1549
- #: includes/i18n.php:447
1550
  msgctxt "button label"
1551
  msgid "Approve & Start Trial"
1552
  msgstr "Approve & Start Trial"
1553
 
1554
- #: includes/i18n.php:449
1555
  msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1556
  msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1557
 
1558
- #: includes/i18n.php:451
1559
  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."
1560
  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."
1561
 
1562
- #: includes/i18n.php:457
1563
  msgid "Business name"
1564
  msgstr "Business name"
1565
 
1566
- #: includes/i18n.php:458
1567
  msgid "Tax / VAT ID"
1568
  msgstr "Tax / VAT ID"
1569
 
1570
- #: includes/i18n.php:459
1571
  msgid "Address Line %d"
1572
  msgstr "Address Line %d"
1573
 
1574
- #: includes/i18n.php:460
1575
  msgid "Country"
1576
  msgstr "Country"
1577
 
1578
- #: includes/i18n.php:461
1579
  msgid "Select Country"
1580
  msgstr "Select Country"
1581
 
1582
- #: includes/i18n.php:462
1583
  msgid "City"
1584
  msgstr "City"
1585
 
1586
- #: includes/i18n.php:463
1587
  msgid "Town"
1588
  msgstr "Town"
1589
 
1590
- #: includes/i18n.php:464
1591
  msgid "State"
1592
  msgstr "State"
1593
 
1594
- #: includes/i18n.php:465
1595
  msgid "Province"
1596
  msgstr "Province"
1597
 
1598
- #: includes/i18n.php:466
1599
  msgid "ZIP / Postal Code"
1600
  msgstr "ZIP / Postal Code"
1601
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1602
  #: includes/i18n.php:481
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1603
  msgctxt "Plugin installer section title"
1604
  msgid "Description"
1605
  msgstr "Description"
1606
 
1607
- #: includes/i18n.php:482
1608
  msgctxt "Plugin installer section title"
1609
  msgid "Installation"
1610
  msgstr "Installation"
1611
 
1612
- #: includes/i18n.php:483
1613
  msgctxt "Plugin installer section title"
1614
  msgid "FAQ"
1615
  msgstr "FAQ"
1616
 
1617
- #: includes/i18n.php:484
1618
  msgctxt "Plugin installer section title"
1619
  msgid "Changelog"
1620
  msgstr "Changelog"
1621
 
1622
- #: includes/i18n.php:485
1623
  msgctxt "Plugin installer section title"
1624
  msgid "Reviews"
1625
  msgstr "Reviews"
1626
 
1627
- #: includes/i18n.php:486
1628
  msgctxt "Plugin installer section title"
1629
  msgid "Other Notes"
1630
  msgstr "Other Notes"
1631
 
1632
- #: includes/i18n.php:488
1633
  msgid "%s star"
1634
  msgstr "%s star"
1635
 
1636
- #: includes/i18n.php:490
1637
  msgid "%s stars"
1638
  msgstr "%s stars"
1639
 
1640
- #: includes/i18n.php:492
1641
  msgid "%s rating"
1642
  msgstr "%s rating"
1643
 
1644
- #: includes/i18n.php:494
1645
  msgid "%s ratings"
1646
  msgstr "%s ratings"
1647
 
1648
- #: includes/i18n.php:496
1649
  msgid "%s time"
1650
  msgstr "%s time"
1651
 
1652
- #: includes/i18n.php:498
1653
  msgid "%s times"
1654
  msgstr "%s times"
1655
 
1656
- #: includes/i18n.php:500
1657
  msgid "Click to see reviews that provided a rating of %s"
1658
  msgstr "Click to see reviews that provided a rating of %s"
1659
 
1660
- #: includes/i18n.php:501
1661
  msgid "Last Updated"
1662
  msgstr "Last Updated"
1663
 
1664
- #: includes/i18n.php:502
1665
  msgid "Requires WordPress Version:"
1666
  msgstr "Requires WordPress Version:"
1667
 
1668
- #: includes/i18n.php:503
1669
  msgctxt "as the plugin author"
1670
  msgid "Author:"
1671
  msgstr "Author:"
1672
 
1673
- #: includes/i18n.php:504
1674
  msgid "Compatible up to:"
1675
  msgstr "Compatible up to:"
1676
 
1677
- #: includes/i18n.php:505
1678
  msgid "Downloaded:"
1679
  msgstr "Downloaded:"
1680
 
1681
- #: includes/i18n.php:506
1682
  msgid "WordPress.org Plugin Page"
1683
  msgstr "WordPress.org Plugin Page"
1684
 
1685
- #: includes/i18n.php:507
1686
  msgid "Plugin Homepage"
1687
  msgstr "Plugin Homepage"
1688
 
1689
- #: includes/i18n.php:508
1690
  msgid "Donate to this plugin"
1691
  msgstr "Donate to this plugin"
1692
 
1693
- #: includes/i18n.php:509
1694
  msgid "Average Rating"
1695
  msgstr "Average Rating"
1696
 
1697
- #: includes/i18n.php:510
1698
  msgid "based on %s"
1699
  msgstr "based on %s"
1700
 
1701
- #: includes/i18n.php:511
1702
  msgid "Warning:"
1703
  msgstr "Warning:"
1704
 
1705
- #: includes/i18n.php:512
1706
  msgid "Contributors"
1707
  msgstr "Contributors"
1708
 
1709
- #: includes/i18n.php:513
1710
  msgid "Plugin Install"
1711
  msgstr "Plugin Install"
1712
 
1713
- #: includes/i18n.php:514
1714
  msgid "This plugin has not been tested with your current version of WordPress."
1715
  msgstr "This plugin has not been tested with your current version of WordPress."
1716
 
1717
- #: includes/i18n.php:515
1718
  msgid "This plugin has not been marked as compatible with your version of WordPress."
1719
  msgstr "This plugin has not been marked as compatible with your version of WordPress."
1720
 
1721
- #: includes/i18n.php:516
1722
  msgid "Newer Version (%s) Installed"
1723
  msgstr "Newer Version (%s) Installed"
1724
 
1725
- #: includes/i18n.php:517
1726
  msgid "Latest Version Installed"
1727
  msgstr "Latest Version Installed"
80
  msgstr "Downgrade"
81
 
82
  #: includes/i18n.php:51
83
+ msgctxt "verb"
84
+ msgid "Cancel Subscription"
85
+ msgstr "Cancel Subscription"
86
+
87
+ #: includes/i18n.php:52
88
  msgid "Cancel Trial"
89
  msgstr "Cancel Trial"
90
 
91
+ #: includes/i18n.php:53
92
  msgid "Free Trial"
93
  msgstr "Free Trial"
94
 
95
+ #: includes/i18n.php:54
96
  msgid "Start my free %s"
97
  msgstr "Start my free %s"
98
 
99
+ #: includes/i18n.php:55
100
  msgid "No commitment for %s - cancel anytime"
101
  msgstr "No commitment for %s - cancel anytime"
102
 
103
+ #: includes/i18n.php:56
104
  msgid "After your free %s, pay as little as %s"
105
  msgstr "After your free %s, pay as little as %s"
106
 
107
+ #: includes/i18n.php:57
108
  msgid "Details"
109
  msgstr "Details"
110
 
111
+ #: includes/i18n.php:58
112
  msgid "Account Details"
113
  msgstr "Account Details"
114
 
115
+ #: includes/i18n.php:59
116
  msgctxt "verb"
117
  msgid "Delete"
118
  msgstr "Delete"
119
 
120
+ #: includes/i18n.php:60
121
  msgctxt "verb"
122
  msgid "Show"
123
  msgstr "Show"
124
 
125
+ #: includes/i18n.php:61
126
  msgctxt "verb"
127
  msgid "Hide"
128
  msgstr "Hide"
129
 
130
+ #: includes/i18n.php:62
131
  msgctxt "verb"
132
  msgid "Edit"
133
  msgstr "Edit"
134
 
135
+ #: includes/i18n.php:63
136
  msgctxt "verb"
137
  msgid "Update"
138
  msgstr "Update"
139
 
140
+ #: includes/i18n.php:64
141
  msgid "Date"
142
  msgstr "Date"
143
 
144
+ #: includes/i18n.php:65
145
  msgid "Amount"
146
  msgstr "Amount"
147
 
148
+ #: includes/i18n.php:66
149
  msgid "Invoice"
150
  msgstr "Invoice"
151
 
152
+ #: includes/i18n.php:67
153
  msgid "Billing"
154
  msgstr "Billing"
155
 
156
+ #: includes/i18n.php:68
157
  msgid "Payments"
158
  msgstr "Payments"
159
 
160
+ #: includes/i18n.php:69
161
  msgid "Delete Account"
162
  msgstr "Delete Account"
163
 
164
+ #: includes/i18n.php:70
165
  msgctxt "as close a window"
166
  msgid "Dismiss"
167
  msgstr "Dismiss"
168
 
169
+ #: includes/i18n.php:71
170
  msgctxt "as product pricing plan"
171
  msgid "Plan"
172
  msgstr "Plan"
173
 
174
+ #: includes/i18n.php:72
175
  msgid "Change Plan"
176
  msgstr "Change Plan"
177
 
178
+ #: includes/i18n.php:73
179
  msgctxt "as download professional version"
180
  msgid "Download %s Version"
181
  msgstr "Download %s Version"
182
 
183
+ #: includes/i18n.php:74
184
  msgctxt "as download professional version now"
185
  msgid "Download %s version now"
186
  msgstr "Download %s version now"
187
 
188
+ #: includes/i18n.php:75
189
  msgctxt "as download latest version"
190
  msgid "Download Latest"
191
  msgstr "Download Latest"
192
 
193
+ #: includes/i18n.php:76
194
  msgctxt "E.g. you have a professional license."
195
  msgid "You have a %s license."
196
  msgstr "You have a %s license."
197
 
198
+ #: includes/i18n.php:77
199
  msgid "New"
200
  msgstr "New"
201
 
202
+ #: includes/i18n.php:78
203
  msgid "Free"
204
  msgstr "Free"
205
 
206
+ #: includes/i18n.php:79
207
  msgctxt "as trial plan"
208
  msgid "Trial"
209
  msgstr "Trial"
210
 
211
+ #: includes/i18n.php:80
212
  msgctxt "as starting a trial plan"
213
  msgid "Start Trial"
214
  msgstr "Start Trial"
215
 
216
+ #: includes/i18n.php:81
217
  msgctxt "verb"
218
  msgid "Purchase"
219
  msgstr "Purchase"
220
 
221
+ #: includes/i18n.php:82
222
  msgid "Purchase License"
223
  msgstr "Purchase License"
224
 
225
+ #: includes/i18n.php:83
226
  msgctxt "verb"
227
  msgid "Buy"
228
  msgstr "Buy"
229
 
230
+ #: includes/i18n.php:84
231
  msgid "Buy License"
232
  msgstr "Buy License"
233
 
234
+ #: includes/i18n.php:85
235
  msgid "Single Site License"
236
  msgstr "Single Site License"
237
 
238
+ #: includes/i18n.php:86
239
  msgid "Unlimited Licenses"
240
  msgstr "Unlimited Licenses"
241
 
242
+ #: includes/i18n.php:87
243
  msgid "Up to %s Sites"
244
  msgstr "Up to %s Sites"
245
 
246
+ #: includes/i18n.php:88
247
  msgid "%sRenew your license now%s to access version %s features and support."
248
  msgstr "%sRenew your license now%s to access version %s features and support."
249
 
250
+ #: includes/i18n.php:89
251
  msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
252
  msgstr "Enter the email address you've used for the upgrade below and we will resend you the license key."
253
 
254
+ #: includes/i18n.php:90
255
  msgctxt "e.g. Professional Plan"
256
  msgid "%s Plan"
257
  msgstr "%s Plan"
258
 
259
+ #: includes/i18n.php:91
260
  msgid "You are just one step away - %s"
261
  msgstr "You are just one step away - %s"
262
 
263
+ #: includes/i18n.php:92
264
  msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
265
  msgid "Complete \"%s\" Activation Now"
266
  msgstr "Complete \"%s\" Activation Now"
267
 
268
+ #: includes/i18n.php:94
269
  msgid "We made a few tweaks to the plugin, %s"
270
  msgstr "We made a few tweaks to the plugin, %s"
271
 
272
+ #: includes/i18n.php:95
273
  msgid "Opt-in to make \"%s\" Better!"
274
  msgstr "Opt-in to make \"%s\" Better!"
275
 
276
+ #: includes/i18n.php:96
277
  msgid "Error"
278
  msgstr "Error"
279
 
280
+ #: includes/i18n.php:97
281
  msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
282
  msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
283
 
284
+ #: includes/i18n.php:100
285
  msgctxt "as expiration date"
286
  msgid "Expiration"
287
  msgstr "Expiration"
288
 
289
+ #: includes/i18n.php:101
290
  msgctxt "as software license"
291
  msgid "License"
292
  msgstr "License"
293
 
294
+ #: includes/i18n.php:102
295
  msgid "not verified"
296
  msgstr "not verified"
297
 
298
+ #: includes/i18n.php:103
299
  msgid "Verify Email"
300
  msgstr "Verify Email"
301
 
302
+ #: includes/i18n.php:104
303
  msgctxt "e.g. expires in 2 months"
304
  msgid "Expires in %s"
305
  msgstr "Expires in %s"
306
 
307
+ #: includes/i18n.php:105
308
  msgctxt "e.g. auto renews in 2 months"
309
  msgid "Auto renews in %s"
310
  msgstr "Auto renews in %s"
311
 
312
+ #: includes/i18n.php:106
313
  msgid "No expiration"
314
  msgstr "No expiration"
315
 
316
+ #: includes/i18n.php:107
317
  msgid "Expired"
318
  msgstr "Expired"
319
 
320
+ #: includes/i18n.php:108
321
  msgid "Cancelled"
322
  msgstr "Cancelled"
323
 
324
+ #: includes/i18n.php:109
325
  msgctxt "e.g. In 2 hours"
326
  msgid "In %s"
327
  msgstr "In %s"
328
 
329
+ #: includes/i18n.php:110
330
  msgctxt "e.g. 2 min ago"
331
  msgid "%s ago"
332
  msgstr "%s ago"
333
 
334
+ #: includes/i18n.php:112
335
  msgid "%s or higher"
336
  msgstr "%s or higher"
337
 
338
+ #: includes/i18n.php:113
339
  msgctxt "as plugin version"
340
  msgid "Version"
341
  msgstr "Version"
342
 
343
+ #: includes/i18n.php:114
344
  msgid "Name"
345
  msgstr "Name"
346
 
347
+ #: includes/i18n.php:115
348
  msgid "Email"
349
  msgstr "Email"
350
 
351
+ #: includes/i18n.php:116
352
  msgid "Email address"
353
  msgstr "Email address"
354
 
355
+ #: includes/i18n.php:117
356
  msgid "Verified"
357
  msgstr "Verified"
358
 
359
+ #: includes/i18n.php:118
360
  msgid "Module"
361
  msgstr "Module"
362
 
363
+ #: includes/i18n.php:119
364
  msgid "Module Type"
365
  msgstr "Module Type"
366
 
367
+ #: includes/i18n.php:120
368
  msgid "Plugin"
369
  msgstr "Plugin"
370
 
371
+ #: includes/i18n.php:121
372
  msgid "Plugins"
373
  msgstr "Plugins"
374
 
375
+ #: includes/i18n.php:122
376
  msgid "Theme"
377
  msgstr "Theme"
378
 
379
+ #: includes/i18n.php:123
380
  msgid "Themes"
381
  msgstr "Themes"
382
 
383
+ #: includes/i18n.php:124
384
  msgctxt "as file/folder path"
385
  msgid "Path"
386
  msgstr "Path"
387
 
388
+ #: includes/i18n.php:125
389
  msgid "Title"
390
  msgstr "Title"
391
 
392
+ #: includes/i18n.php:126
393
  msgid "Free version"
394
  msgstr "Free version"
395
 
396
+ #: includes/i18n.php:127
397
  msgid "Premium version"
398
  msgstr "Premium version"
399
 
400
+ #: includes/i18n.php:128
401
  msgctxt "as WP plugin slug"
402
  msgid "Slug"
403
  msgstr "Slug"
404
 
405
+ #: includes/i18n.php:129
406
  msgid "ID"
407
  msgstr "ID"
408
 
409
+ #: includes/i18n.php:130
410
  msgid "Users"
411
  msgstr "Users"
412
 
413
+ #: includes/i18n.php:131
414
  msgid "Plugin Installs"
415
  msgstr "Plugin Installs"
416
 
417
+ #: includes/i18n.php:132
418
  msgid "%s Installs"
419
  msgstr "%s Installs"
420
 
421
+ #: includes/i18n.php:133
422
  msgctxt "like websites"
423
  msgid "Sites"
424
  msgstr "Sites"
425
 
426
+ #: includes/i18n.php:134
427
  msgid "User ID"
428
  msgstr "User ID"
429
 
430
+ #: includes/i18n.php:135
431
  msgid "Site ID"
432
  msgstr "Site ID"
433
 
434
+ #: includes/i18n.php:136
435
  msgid "Public Key"
436
  msgstr "Public Key"
437
 
438
+ #: includes/i18n.php:137
439
  msgid "Secret Key"
440
  msgstr "Secret Key"
441
 
442
+ #: includes/i18n.php:138
443
  msgctxt "as secret encryption key missing"
444
  msgid "No Secret"
445
  msgstr "No Secret"
446
 
447
+ #: includes/i18n.php:139
448
  msgid "No ID"
449
  msgstr "No ID"
450
 
451
+ #: includes/i18n.php:140
452
  msgctxt "as synchronize license"
453
  msgid "Sync License"
454
  msgstr "Sync License"
455
 
456
+ #: includes/i18n.php:141
457
  msgctxt "as synchronize"
458
  msgid "Sync"
459
  msgstr "Sync"
460
 
461
+ #: includes/i18n.php:142
462
  msgid "Activate License"
463
  msgstr "Activate License"
464
 
465
+ #: includes/i18n.php:143
466
  msgid "Activate Free Version"
467
  msgstr "Activate Free Version"
468
 
469
+ #: includes/i18n.php:144
470
  msgid "Please enter the license key that you received in the email right after the purchase:"
471
  msgstr "Please enter the license key that you received in the email right after the purchase:"
472
 
473
+ #: includes/i18n.php:145
474
  msgid "Activating license..."
475
  msgstr "Activating license..."
476
 
477
+ #: includes/i18n.php:146
478
  msgid "Change License"
479
  msgstr "Change License"
480
 
481
+ #: includes/i18n.php:147
482
  msgid "Update License"
483
  msgstr "Update License"
484
 
485
+ #: includes/i18n.php:148
486
  msgid "Deactivate License"
487
  msgstr "Deactivate License"
488
 
489
+ #: includes/i18n.php:149
490
  msgid "Activate"
491
  msgstr "Activate"
492
 
493
+ #: includes/i18n.php:150
494
  msgid "Deactivate"
495
  msgstr "Deactivate"
496
 
497
+ #: includes/i18n.php:151
498
  msgid "Skip & Deactivate"
499
  msgstr "Skip & Deactivate"
500
 
501
+ #: includes/i18n.php:152
502
  msgid "Skip & %s"
503
  msgstr "Skip & %s"
504
 
505
+ #: includes/i18n.php:153
506
  msgid "No - just deactivate"
507
  msgstr "No - just deactivate"
508
 
509
+ #: includes/i18n.php:154
510
  msgid "Yes - do your thing"
511
  msgstr "Yes - do your thing"
512
 
513
+ #: includes/i18n.php:155
514
  msgctxt "active mode"
515
  msgid "Active"
516
  msgstr "Active"
517
 
518
+ #: includes/i18n.php:156
519
  msgctxt "is active mode?"
520
  msgid "Is Active"
521
  msgstr "Is Active"
522
 
523
+ #: includes/i18n.php:157
524
  msgid "Install Now"
525
  msgstr "Install Now"
526
 
527
+ #: includes/i18n.php:158
528
  msgid "Install Update Now"
529
  msgstr "Install Update Now"
530
 
531
+ #: includes/i18n.php:159
532
  msgid "More information about %s"
533
  msgstr "More information about %s"
534
 
535
+ #: includes/i18n.php:160
536
  msgid "Localhost"
537
  msgstr "Localhost"
538
 
539
+ #: includes/i18n.php:161
540
  msgctxt "as activate Professional plan"
541
  msgid "Activate %s Plan"
542
  msgstr "Activate %s Plan"
543
 
544
+ #: includes/i18n.php:162
545
  msgctxt "as 5 licenses left"
546
  msgid "%s left"
547
  msgstr "%s left"
548
 
549
+ #: includes/i18n.php:163
550
  msgid "Last license"
551
  msgstr "Last license"
552
 
553
+ #: includes/i18n.php:164
554
  msgid "What is your %s?"
555
  msgstr "What is your %s?"
556
 
557
+ #: includes/i18n.php:165
558
  msgid "Activate this add-on"
559
  msgstr "Activate this add-on"
560
 
561
+ #: includes/i18n.php:166
562
  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?"
563
  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?"
564
 
565
+ #: includes/i18n.php:167
566
  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?"
567
  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?"
568
 
569
+ #: includes/i18n.php:168
570
  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?"
571
  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?"
572
 
573
+ #: includes/i18n.php:169
574
  msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
575
  msgstr "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
576
 
577
+ #: includes/i18n.php:170
578
  msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
579
  msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?"
580
 
581
+ #: includes/i18n.php:171
582
  msgid "You can still enjoy all %s features but you will not have access to plugin updates and support."
583
  msgstr "You can still enjoy all %s features but you will not have access to plugin updates and support."
584
 
585
+ #: includes/i18n.php:172
586
  msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
587
  msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
588
 
589
+ #: includes/i18n.php:173
590
  msgid "Are you sure you want to proceed?"
591
  msgstr "Are you sure you want to proceed?"
592
 
593
+ #: includes/i18n.php:176
594
  msgid "Add Ons for %s"
595
  msgstr "Add Ons for %s"
596
 
597
+ #: includes/i18n.php:177
598
  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."
599
  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."
600
 
601
+ #: includes/i18n.php:179
602
  msgid "Anonymous feedback"
603
  msgstr "Anonymous feedback"
604
 
605
+ #: includes/i18n.php:180
606
  msgid "Quick feedback"
607
  msgstr "Quick feedback"
608
 
609
+ #: includes/i18n.php:181
610
  msgid "If you have a moment, please let us know why you are deactivating"
611
  msgstr "If you have a moment, please let us know why you are deactivating"
612
 
613
+ #: includes/i18n.php:182
614
  msgid "Yes - Deactivate"
615
  msgstr "Yes - Deactivate"
616
 
617
+ #: includes/i18n.php:183
618
  msgid "Submit & Deactivate"
619
  msgstr "Submit & Deactivate"
620
 
621
+ #: includes/i18n.php:184
622
  msgid "Cancel"
623
  msgstr "Cancel"
624
 
625
+ #: includes/i18n.php:185
626
  msgid "I no longer need the plugin"
627
  msgstr "I no longer need the plugin"
628
 
629
+ #: includes/i18n.php:186
630
  msgid "I found a better plugin"
631
  msgstr "I found a better plugin"
632
 
633
+ #: includes/i18n.php:187
634
  msgid "I only needed the plugin for a short period"
635
  msgstr "I only needed the plugin for a short period"
636
 
637
+ #: includes/i18n.php:188
638
  msgid "The plugin broke my site"
639
  msgstr "The plugin broke my site"
640
 
641
+ #: includes/i18n.php:189
642
  msgid "The plugin suddenly stopped working"
643
  msgstr "The plugin suddenly stopped working"
644
 
645
+ #: includes/i18n.php:190
646
  msgid "I can't pay for it anymore"
647
  msgstr "I can't pay for it anymore"
648
 
649
+ #: includes/i18n.php:191
650
  msgid "It's a temporary deactivation. I'm just debugging an issue."
651
  msgstr "It's a temporary deactivation. I'm just debugging an issue."
652
 
653
+ #: includes/i18n.php:192
654
  msgctxt "the text of the \"other\" reason for deactivating the plugin that is shown in the modal box."
655
  msgid "Other"
656
  msgstr "Other"
657
 
658
+ #: includes/i18n.php:194
659
  msgid "Kindly tell us the reason so we can improve."
660
  msgstr "Kindly tell us the reason so we can improve."
661
 
662
+ #: includes/i18n.php:195
663
  msgid "What's the plugin's name?"
664
  msgstr "What's the plugin's name?"
665
 
666
+ #: includes/i18n.php:196
667
  msgid "What price would you feel comfortable paying?"
668
  msgstr "What price would you feel comfortable paying?"
669
 
670
+ #: includes/i18n.php:197
671
  msgid "I couldn't understand how to make it work"
672
  msgstr "I couldn't understand how to make it work"
673
 
674
+ #: includes/i18n.php:198
675
  msgid "The plugin is great, but I need specific feature that you don't support"
676
  msgstr "The plugin is great, but I need specific feature that you don't support"
677
 
678
+ #: includes/i18n.php:199
679
  msgid "The plugin is not working"
680
  msgstr "The plugin is not working"
681
 
682
+ #: includes/i18n.php:200
683
  msgid "It's not what I was looking for"
684
  msgstr "It's not what I was looking for"
685
 
686
+ #: includes/i18n.php:201
687
  msgid "The plugin didn't work as expected"
688
  msgstr "The plugin didn't work as expected"
689
 
690
+ #: includes/i18n.php:202
691
  msgid "What feature?"
692
  msgstr "What feature?"
693
 
694
+ #: includes/i18n.php:203
695
  msgid "Kindly share what didn't work so we can fix it for future users..."
696
  msgstr "Kindly share what didn't work so we can fix it for future users..."
697
 
698
+ #: includes/i18n.php:204
699
  msgid "What you've been looking for?"
700
  msgstr "What you've been looking for?"
701
 
702
+ #: includes/i18n.php:205
703
  msgid "What did you expect?"
704
  msgstr "What did you expect?"
705
 
706
+ #: includes/i18n.php:206
707
  msgid "The plugin didn't work"
708
  msgstr "The plugin didn't work"
709
 
710
+ #: includes/i18n.php:207
711
  msgid "I don't like to share my information with you"
712
  msgstr "I don't like to share my information with you"
713
 
714
+ #: includes/i18n.php:208
715
  msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
716
  msgstr "You might have missed it, but you don't have to share any data and can just %s the opt-in."
717
 
718
+ #: includes/i18n.php:212
719
  msgctxt "greeting"
720
  msgid "Hey %s,"
721
  msgstr "Hey %s,"
722
 
723
+ #: includes/i18n.php:213
724
  msgctxt "a greeting. E.g. Thanks John!"
725
  msgid "Thanks %s!"
726
  msgstr "Thanks %s!"
727
 
728
+ #: includes/i18n.php:214
729
  msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
730
  msgstr "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
731
 
732
+ #: includes/i18n.php:215
733
  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."
734
  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."
735
 
736
+ #: includes/i18n.php:216
737
  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."
738
  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."
739
 
740
+ #: includes/i18n.php:217
741
  msgid "complete the install"
742
  msgstr "complete the install"
743
 
744
+ #: includes/i18n.php:218
745
  msgid "start the trial"
746
  msgstr "start the trial"
747
 
748
+ #: includes/i18n.php:219
749
  msgid "Thanks for purchasing %s! To get started, please enter your license key:"
750
  msgstr "Thanks for purchasing %s! To get started, please enter your license key:"
751
 
752
+ #: includes/i18n.php:220
753
  msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
754
  msgstr "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
755
 
756
+ #: includes/i18n.php:221
757
  msgid "What permissions are being granted?"
758
  msgstr "What permissions are being granted?"
759
 
760
+ #: includes/i18n.php:222
761
  msgid "Your Profile Overview"
762
  msgstr "Your Profile Overview"
763
 
764
+ #: includes/i18n.php:223
765
  msgid "Name and email address"
766
  msgstr "Name and email address"
767
 
768
+ #: includes/i18n.php:224
769
  msgid "Your Site Overview"
770
  msgstr "Your Site Overview"
771
 
772
+ #: includes/i18n.php:225
773
  msgid "Site URL, WP version, PHP info, plugins & themes"
774
  msgstr "Site URL, WP version, PHP info, plugins & themes"
775
 
776
+ #: includes/i18n.php:226
777
  msgid "Current Plugin Events"
778
  msgstr "Current Plugin Events"
779
 
780
+ #: includes/i18n.php:227
781
  msgid "Activation, deactivation and uninstall"
782
  msgstr "Activation, deactivation and uninstall"
783
 
784
+ #: includes/i18n.php:228
785
  msgid "Plugins & Themes"
786
  msgstr "Plugins & Themes"
787
 
788
+ #: includes/i18n.php:229
789
  msgid "Titles, versions and state."
790
  msgstr "Titles, versions and state."
791
 
792
+ #: includes/i18n.php:230
793
  msgid "Admin Notices"
794
  msgstr "Admin Notices"
795
 
796
+ #: includes/i18n.php:231
797
  msgid "Newsletter"
798
  msgstr "Newsletter"
799
 
800
+ #: includes/i18n.php:232
801
  msgid "Updates, announcements, marketing, no spam"
802
  msgstr "Updates, announcements, marketing, no spam"
803
 
804
+ #: includes/i18n.php:233
805
  msgid "Privacy Policy"
806
  msgstr "Privacy Policy"
807
 
808
+ #: includes/i18n.php:234
809
  msgid "Terms of Service"
810
  msgstr "Terms of Service"
811
 
812
+ #: includes/i18n.php:235
813
  msgctxt "as activating plugin"
814
  msgid "Activating"
815
  msgstr "Activating"
816
 
817
+ #: includes/i18n.php:236
818
  msgctxt "as in the process of sending an email"
819
  msgid "Sending email"
820
  msgstr "Sending email"
821
 
822
+ #: includes/i18n.php:237
823
  msgctxt "button label"
824
  msgid "Allow & Continue"
825
  msgstr "Allow & Continue"
826
 
827
+ #: includes/i18n.php:238
828
  msgctxt "button label"
829
  msgid "Agree & Activate License"
830
  msgstr "Agree & Activate License"
831
 
832
+ #: includes/i18n.php:239
833
  msgctxt "verb"
834
  msgid "Skip"
835
  msgstr "Skip"
836
 
837
+ #: includes/i18n.php:240
838
  msgid "Click here to use the plugin anonymously"
839
  msgstr "Click here to use the plugin anonymously"
840
 
841
+ #: includes/i18n.php:241
842
  msgid "Re-send activation email"
843
  msgstr "Re-send activation email"
844
 
845
+ #: includes/i18n.php:242
846
  msgid "License key"
847
  msgstr "License key"
848
 
849
+ #: includes/i18n.php:243
850
  msgid "Send License Key"
851
  msgstr "Send License Key"
852
 
853
+ #: includes/i18n.php:244
854
  msgid "Sending license key"
855
  msgstr "Sending license key"
856
 
857
+ #: includes/i18n.php:245
858
  msgid "Have a license key?"
859
  msgstr "Have a license key?"
860
 
861
+ #: includes/i18n.php:246
862
  msgid "Don't have a license key?"
863
  msgstr "Don't have a license key?"
864
 
865
+ #: includes/i18n.php:247
866
  msgid "Can't find your license key?"
867
  msgstr "Can't find your license key?"
868
 
869
+ #: includes/i18n.php:248
870
  msgid "We couldn't find your email address in the system, are you sure it's the right address?"
871
  msgstr "We couldn't find your email address in the system, are you sure it's the right address?"
872
 
873
+ #: includes/i18n.php:249
874
  msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
875
  msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?"
876
 
877
+ #: includes/i18n.php:250
878
  msgid "Opt In"
879
  msgstr "Opt In"
880
 
881
+ #: includes/i18n.php:251
882
  msgid "Opt Out"
883
  msgstr "Opt Out"
884
 
885
+ #: includes/i18n.php:252
886
  msgid "On second thought - I want to continue helping"
887
  msgstr "On second thought - I want to continue helping"
888
 
889
+ #: includes/i18n.php:253
890
  msgid "Opting out..."
891
  msgstr "Opting out..."
892
 
893
+ #: includes/i18n.php:254
894
  msgid "Opting in..."
895
  msgstr "Opting in..."
896
 
897
+ #: includes/i18n.php:255
898
  msgid "We appreciate your help in making the %s better by letting us track some usage data."
899
  msgstr "We appreciate your help in making the %s better by letting us track some usage data."
900
 
901
+ #: includes/i18n.php:256
902
  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."
903
  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."
904
 
905
+ #: includes/i18n.php:257
906
  msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
907
  msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
908
 
909
+ #: includes/i18n.php:261
910
  msgid "Screenshots"
911
  msgstr "Screenshots"
912
 
913
+ #: includes/i18n.php:262
914
  msgid "Click to view full-size screenshot %d"
915
  msgstr "Click to view full-size screenshot %d"
916
 
917
+ #: includes/i18n.php:266
918
  msgid "Freemius Debug"
919
  msgstr "Freemius Debug"
920
 
921
+ #: includes/i18n.php:267
922
  msgctxt "as turned on"
923
  msgid "On"
924
  msgstr "On"
925
 
926
+ #: includes/i18n.php:268
927
  msgctxt "as turned off"
928
  msgid "Off"
929
  msgstr "Off"
930
 
931
+ #: includes/i18n.php:269
932
  msgctxt "as code debugging"
933
  msgid "Debugging"
934
  msgstr "Debugging"
935
 
936
+ #: includes/i18n.php:270
937
  msgid "Freemius State"
938
  msgstr "Freemius State"
939
 
940
+ #: includes/i18n.php:271
941
  msgctxt "as connection was successful"
942
  msgid "Connected"
943
  msgstr "Connected"
944
 
945
+ #: includes/i18n.php:272
946
  msgctxt "as connection blocked"
947
  msgid "Blocked"
948
  msgstr "Blocked"
949
 
950
+ #: includes/i18n.php:273
951
  msgctxt "as application program interface"
952
  msgid "API"
953
  msgstr "API"
954
 
955
+ #: includes/i18n.php:274
956
  msgctxt "as software development kit versions"
957
  msgid "SDK"
958
  msgstr "SDK"
959
 
960
+ #: includes/i18n.php:275
961
  msgctxt "as software development kit versions"
962
  msgid "SDK Versions"
963
  msgstr "SDK Versions"
964
 
965
+ #: includes/i18n.php:276
966
  msgctxt "as plugin folder path"
967
  msgid "Plugin Path"
968
  msgstr "Plugin Path"
969
 
970
+ #: includes/i18n.php:277
971
  msgctxt "as sdk path"
972
  msgid "SDK Path"
973
  msgstr "SDK Path"
974
 
975
+ #: includes/i18n.php:278
976
  msgid "Add Ons of Plugin %s"
977
  msgstr "Add Ons of Plugin %s"
978
 
979
+ #: includes/i18n.php:279
980
  msgid "Are you sure you want to delete all Freemius data?"
981
  msgstr "Are you sure you want to delete all Freemius data?"
982
 
983
+ #: includes/i18n.php:280
984
  msgid "Actions"
985
  msgstr "Actions"
986
 
987
+ #: includes/i18n.php:281
988
  msgid "Delete All Accounts"
989
  msgstr "Delete All Accounts"
990
 
991
+ #: includes/i18n.php:282
992
  msgid "Start Fresh"
993
  msgstr "Start Fresh"
994
 
995
+ #: includes/i18n.php:283
996
  msgid "Clear API Cache"
997
  msgstr "Clear API Cache"
998
 
999
+ #: includes/i18n.php:284
1000
  msgid "Sync Data From Server"
1001
  msgstr "Sync Data From Server"
1002
 
1003
+ #: includes/i18n.php:285
1004
  msgid "Scheduled Crons"
1005
  msgstr "Scheduled Crons"
1006
 
1007
+ #: includes/i18n.php:286
1008
  msgid "Cron Type"
1009
  msgstr "Cron Type"
1010
 
1011
+ #: includes/i18n.php:287
1012
  msgid "Plugins & Themes Sync"
1013
  msgstr "Plugins & Themes Sync"
1014
 
1015
+ #: includes/i18n.php:288
1016
  msgid "Licenses"
1017
  msgstr "Licenses"
1018
 
1019
+ #: includes/i18n.php:289
1020
  msgid "Debug Log"
1021
  msgstr "Debug Log"
1022
 
1023
+ #: includes/i18n.php:290
1024
  msgid "All"
1025
  msgstr "All"
1026
 
1027
+ #: includes/i18n.php:291
1028
  msgid "File"
1029
  msgstr "File"
1030
 
1031
+ #: includes/i18n.php:292
1032
  msgid "Function"
1033
  msgstr "Function"
1034
 
1035
+ #: includes/i18n.php:293
1036
  msgid "Process ID"
1037
  msgstr "Process ID"
1038
 
1039
+ #: includes/i18n.php:294
1040
  msgid "Logger"
1041
  msgstr "Logger"
1042
 
1043
+ #: includes/i18n.php:295
1044
  msgid "Message"
1045
  msgstr "Message"
1046
 
1047
+ #: includes/i18n.php:296
1048
  msgid "Download"
1049
  msgstr "Download"
1050
 
1051
+ #: includes/i18n.php:297
1052
  msgid "Filter"
1053
  msgstr "Filter"
1054
 
1055
+ #: includes/i18n.php:298
1056
  msgid "Type"
1057
  msgstr "Type"
1058
 
1059
+ #: includes/i18n.php:299
1060
  msgid "All Types"
1061
  msgstr "All Types"
1062
 
1063
+ #: includes/i18n.php:300
1064
  msgid "All Requests"
1065
  msgstr "All Requests"
1066
 
1067
+ #: includes/i18n.php:304
1068
  msgctxt "as congratulations"
1069
  msgid "Congrats"
1070
  msgstr "Congrats"
1071
 
1072
+ #: includes/i18n.php:305
1073
  msgctxt "exclamation"
1074
  msgid "Oops"
1075
  msgstr "Oops"
1076
 
1077
+ #: includes/i18n.php:306
1078
  msgctxt "interjection expressing joy or exuberance"
1079
  msgid "Yee-haw"
1080
  msgstr "Yee-haw"
1081
 
1082
+ #: includes/i18n.php:307
1083
  msgctxt "(especially in electronic communication) used to express elation, enthusiasm, or triumph."
1084
  msgid "W00t"
1085
  msgstr "W00t"
1086
 
1087
+ #: includes/i18n.php:309
1088
  msgctxt "a positive response"
1089
  msgid "Right on"
1090
  msgstr "Right on"
1091
 
1092
+ #: includes/i18n.php:310
1093
  msgctxt "something somebody says when they are thinking about what you have just said. "
1094
  msgid "Hmm"
1095
  msgstr "Hmm"
1096
 
1097
+ #: includes/i18n.php:312
1098
  msgid "O.K"
1099
  msgstr "O.K"
1100
 
1101
+ #: includes/i18n.php:313
1102
  msgctxt "exclamation"
1103
  msgid "Hey"
1104
  msgstr "Hey"
1105
 
1106
+ #: includes/i18n.php:314
1107
  msgctxt "advance notice of something that will need attention."
1108
  msgid "Heads up"
1109
  msgstr "Heads up"
1110
 
1111
+ #: includes/i18n.php:319
1112
  msgid "Seems like you got the latest release."
1113
  msgstr "Seems like you got the latest release."
1114
 
1115
+ #: includes/i18n.php:320
1116
  msgid "You are all good!"
1117
  msgstr "You are all good!"
1118
 
1119
+ #: includes/i18n.php:321
1120
  msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
1121
  msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered."
1122
 
1123
+ #: includes/i18n.php:322
1124
  msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
1125
  msgstr "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
1126
 
1127
+ #: includes/i18n.php:323
1128
  msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
1129
  msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
1130
 
1131
+ #: includes/i18n.php:324
1132
  msgid "Your name was successfully updated."
1133
  msgstr "Your name was successfully updated."
1134
 
1135
+ #: includes/i18n.php:325
1136
  msgid "You have successfully updated your %s."
1137
  msgstr "You have successfully updated your %s."
1138
 
1139
+ #: includes/i18n.php:326
1140
  msgid "Please provide your full name."
1141
  msgstr "Please provide your full name."
1142
 
1143
+ #: includes/i18n.php:327
1144
  msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
1145
  msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
1146
 
1147
+ #: includes/i18n.php:328
1148
  msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
1149
  msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server."
1150
 
1151
+ #: includes/i18n.php:329
1152
  msgid "No credit card required"
1153
  msgstr "No credit card required"
1154
 
1155
+ #: includes/i18n.php:330
1156
  msgid "Premium plugin version was successfully activated."
1157
  msgstr "Premium plugin version was successfully activated."
1158
 
1159
+ #: includes/i18n.php:331
1160
  msgid "The upgrade of %s was successfully completed."
1161
  msgstr "The upgrade of %s was successfully completed."
1162
 
1163
+ #: includes/i18n.php:332
1164
  msgid "Your account was successfully activated with the %s plan."
1165
  msgstr "Your account was successfully activated with the %s plan."
1166
 
1167
+ #: includes/i18n.php:333
1168
  msgid "Download the latest %s version now"
1169
  msgstr "Download the latest %s version now"
1170
 
1171
+ #: includes/i18n.php:334
1172
  msgid "Please follow these steps to complete the upgrade"
1173
  msgstr "Please follow these steps to complete the upgrade"
1174
 
1175
+ #: includes/i18n.php:335
1176
  msgid "Download the latest %s version"
1177
  msgstr "Download the latest %s version"
1178
 
1179
+ #: includes/i18n.php:336
1180
  msgid "Download the latest version"
1181
  msgstr "Download the latest version"
1182
 
1183
+ #: includes/i18n.php:337
1184
  msgid "Deactivate the free version"
1185
  msgstr "Deactivate the free version"
1186
 
1187
+ #: includes/i18n.php:338
1188
  msgid "Upload and activate the downloaded version"
1189
  msgstr "Upload and activate the downloaded version"
1190
 
1191
+ #: includes/i18n.php:339
1192
  msgid "How to upload and activate?"
1193
  msgstr "How to upload and activate?"
1194
 
1195
+ #: includes/i18n.php:340
1196
  msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1197
  msgid "%s Add-on was successfully purchased."
1198
  msgstr "%s Add-on was successfully purchased."
1199
 
1200
+ #: includes/i18n.php:342
1201
  msgid "Your %s Add-on plan was successfully upgraded."
1202
  msgstr "Your %s Add-on plan was successfully upgraded."
1203
 
1204
+ #: includes/i18n.php:343
1205
  msgid "Your email has been successfully verified - you are AWESOME!"
1206
  msgstr "Your email has been successfully verified - you are AWESOME!"
1207
 
1208
+ #: includes/i18n.php:344
1209
  msgid "Your plan was successfully upgraded."
1210
  msgstr "Your plan was successfully upgraded."
1211
 
1212
+ #: includes/i18n.php:345
1213
  msgid "Your plan was successfully changed to %s."
1214
  msgstr "Your plan was successfully changed to %s."
1215
 
1216
+ #: includes/i18n.php:346
1217
  msgid "Your license has expired. You can still continue using the free plugin forever."
1218
  msgstr "Your license has expired. You can still continue using the free plugin forever."
1219
 
1220
+ #: includes/i18n.php:347
1221
  msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
1222
  msgstr "Your license has been cancelled. If you think it's a mistake, please contact support."
1223
 
1224
+ #: includes/i18n.php:348
1225
  msgid "Your trial has been successfully started."
1226
  msgstr "Your trial has been successfully started."
1227
 
1228
+ #: includes/i18n.php:349
1229
  msgid "Your license was successfully activated."
1230
  msgstr "Your license was successfully activated."
1231
 
1232
+ #: includes/i18n.php:350
1233
  msgid "It looks like your site currently doesn't have an active license."
1234
  msgstr "It looks like your site currently doesn't have an active license."
1235
 
1236
+ #: includes/i18n.php:351
1237
  msgid "Your license was successfully deactivated, you are back to the %s plan."
1238
  msgstr "Your license was successfully deactivated, you are back to the %s plan."
1239
 
1240
+ #: includes/i18n.php:352
1241
  msgid "It looks like the license deactivation failed."
1242
  msgstr "It looks like the license deactivation failed."
1243
 
1244
+ #: includes/i18n.php:353
1245
  msgid "It looks like the license could not be activated."
1246
  msgstr "It looks like the license could not be activated."
1247
 
1248
+ #: includes/i18n.php:354
1249
  msgid "Error received from the server:"
1250
  msgstr "Error received from the server:"
1251
 
1252
+ #: includes/i18n.php:355
1253
  msgid "Your trial has expired. You can still continue using all our free features."
1254
  msgstr "Your trial has expired. You can still continue using all our free features."
1255
 
1256
+ #: includes/i18n.php:356
1257
  msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
1258
  msgstr "Your plan was successfully downgraded. Your %s plan license will expire in %s."
1259
 
1260
+ #: includes/i18n.php:357
1261
  msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
1262
  msgstr "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
1263
 
1264
+ #: includes/i18n.php:358
1265
  msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
1266
  msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
1267
 
1268
+ #: includes/i18n.php:359
1269
  msgid "Your %s free trial was successfully cancelled."
1270
  msgstr "Your %s free trial was successfully cancelled."
1271
 
1272
+ #: includes/i18n.php:360
1273
  msgctxt "%s - numeric version number"
1274
  msgid "Version %s was released."
1275
  msgstr "Version %s was released."
1276
 
1277
+ #: includes/i18n.php:361
1278
  msgid "Please download %s."
1279
  msgstr "Please download %s."
1280
 
1281
+ #: includes/i18n.php:362
1282
  msgctxt "%s - plan name, as the latest professional version here"
1283
  msgid "the latest %s version here"
1284
  msgstr "the latest %s version here"
1285
 
1286
+ #: includes/i18n.php:364
1287
  msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
1288
  msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
1289
 
1290
+ #: includes/i18n.php:365
1291
  msgctxt "call to action"
1292
  msgid "Start free trial"
1293
  msgstr "Start free trial"
1294
 
1295
+ #: includes/i18n.php:366
1296
  msgid "Starting trial"
1297
  msgstr "Starting trial"
1298
 
1299
+ #: includes/i18n.php:367
1300
  msgid "Please wait"
1301
  msgstr "Please wait"
1302
 
1303
+ #: includes/i18n.php:368
1304
  msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
1305
  msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
1306
 
1307
+ #: includes/i18n.php:369
1308
  msgid "You already utilized a trial before."
1309
  msgstr "You already utilized a trial before."
1310
 
1311
+ #: includes/i18n.php:370
1312
  msgid "You are already running the plugin in a trial mode."
1313
  msgstr "You are already running the plugin in a trial mode."
1314
 
1315
+ #: includes/i18n.php:371
1316
  msgid "Plan %s do not exist, therefore, can't start a trial."
1317
  msgstr "Plan %s do not exist, therefore, can't start a trial."
1318
 
1319
+ #: includes/i18n.php:372
1320
  msgid "Plan %s does not support a trial period."
1321
  msgstr "Plan %s does not support a trial period."
1322
 
1323
+ #: includes/i18n.php:373
1324
  msgid "None of the plugin's plans supports a trial period."
1325
  msgstr "None of the plugin's plans supports a trial period."
1326
 
1327
+ #: includes/i18n.php:374
1328
  msgid "Unexpected API error. Please contact the plugin's author with the following error."
1329
  msgstr "Unexpected API error. Please contact the plugin's author with the following error."
1330
 
1331
+ #: includes/i18n.php:375
1332
  msgid "No commitment for %s days - cancel anytime!"
1333
  msgstr "No commitment for %s days - cancel anytime!"
1334
 
1335
+ #: includes/i18n.php:376
1336
  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."
1337
  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."
1338
 
1339
+ #: includes/i18n.php:377
1340
  msgid "Couldn't activate %s."
1341
  msgstr "Couldn't activate %s."
1342
 
1343
+ #: includes/i18n.php:378
1344
  msgid "Please contact us with the following message:"
1345
  msgstr "Please contact us with the following message:"
1346
 
1347
+ #: includes/i18n.php:379
1348
  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."
1349
  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."
1350
 
1351
+ #: includes/i18n.php:380
1352
  msgid "Please contact us here"
1353
  msgstr "Please contact us here"
1354
 
1355
+ #: includes/i18n.php:381
1356
  msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
1357
  msgstr "I have upgraded my account but when I try to Sync the License, the plan remains %s."
1358
 
1359
+ #: includes/i18n.php:384
1360
  msgid "From unknown reason, the API connectivity test failed."
1361
  msgstr "From unknown reason, the API connectivity test failed."
1362
 
1363
+ #: includes/i18n.php:385
1364
  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?"
1365
  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?"
1366
 
 
 
 
 
1367
  #: includes/i18n.php:386
1368
+ 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."
1369
+ 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."
1370
+
1371
+ #: includes/i18n.php:387
1372
+ msgid "Disabled method(s):"
1373
+ msgstr "Disabled method(s):"
1374
+
1375
+ #: includes/i18n.php:388
1376
  msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1377
  msgstr "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1378
 
1379
+ #: includes/i18n.php:389
1380
  msgctxt "as pluginX requires an access to our API"
1381
  msgid "%s requires an access to our API."
1382
  msgstr "%s requires an access to our API."
1383
 
1384
+ #: includes/i18n.php:391
1385
  msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
1386
  msgstr "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
1387
 
1388
+ #: includes/i18n.php:392
1389
  msgid "I don't know what is Squid or ACL, help me!"
1390
  msgstr "I don't know what is Squid or ACL, help me!"
1391
 
1392
+ #: includes/i18n.php:393, includes/i18n.php:397
1393
  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."
1394
  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."
1395
 
1396
+ #: includes/i18n.php:394
1397
  msgid "I'm a system administrator"
1398
  msgstr "I'm a system administrator"
1399
 
1400
+ #: includes/i18n.php:395
1401
  msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again."
1402
  msgstr "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again."
1403
 
1404
+ #: includes/i18n.php:396
1405
  msgid "I don't know what is cURL or how to install it, help me!"
1406
  msgstr "I don't know what is cURL or how to install it, help me!"
1407
 
1408
+ #: includes/i18n.php:398
1409
+ 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."
1410
+ 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."
1411
 
1412
+ #: includes/i18n.php:399
1413
  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."
1414
  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."
1415
 
1416
+ #: includes/i18n.php:400
1417
  msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
1418
  msgstr "Sorry for the inconvenience and we are here to help if you give us a chance."
1419
 
1420
+ #: includes/i18n.php:401
1421
  msgid "Yes - I'm giving you a chance to fix it"
1422
  msgstr "Yes - I'm giving you a chance to fix it"
1423
 
1424
+ #: includes/i18n.php:402
1425
  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."
1426
  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."
1427
 
1428
+ #: includes/i18n.php:403
1429
  msgid "Let's try your previous version"
1430
  msgstr "Let's try your previous version"
1431
 
1432
+ #: includes/i18n.php:404
1433
  msgid "Uninstall this version and install the previous one."
1434
  msgstr "Uninstall this version and install the previous one."
1435
 
1436
+ #: includes/i18n.php:405
1437
  msgid "That's exhausting, please deactivate"
1438
  msgstr "That's exhausting, please deactivate"
1439
 
1440
+ #: includes/i18n.php:406
1441
  msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
1442
  msgstr "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
1443
 
1444
+ #: includes/i18n.php:407
1445
  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."
1446
  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."
1447
 
1448
+ #: includes/i18n.php:408
1449
  msgctxt "%1s - plugin title, %2s - API domain"
1450
  msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
1451
  msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
1452
 
1453
+ #: includes/i18n.php:410
1454
  msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
1455
  msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
1456
 
1457
+ #: includes/i18n.php:413
1458
  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."
1459
  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."
1460
 
1461
+ #: includes/i18n.php:414
1462
  msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
1463
  msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
1464
 
1465
+ #: includes/i18n.php:415
1466
  msgid "%s is the new owner of the account."
1467
  msgstr "%s is the new owner of the account."
1468
 
1469
+ #: includes/i18n.php:417
1470
  msgctxt "addonX cannot run without pluginY"
1471
  msgid "%s cannot run without %s."
1472
  msgstr "%s cannot run without %s."
1473
 
1474
+ #: includes/i18n.php:419
1475
  msgctxt "addonX cannot run..."
1476
  msgid "%s cannot run without the plugin."
1477
  msgstr "%s cannot run without the plugin."
1478
 
1479
+ #: includes/i18n.php:420
1480
  msgctxt "pluginX activation was successfully..."
1481
  msgid "%s activation was successfully completed."
1482
  msgstr "%s activation was successfully completed."
1483
 
1484
+ #: includes/i18n.php:422
1485
  msgctxt "Plugin installer section title"
1486
  msgid "Features & Pricing"
1487
  msgstr "Features & Pricing"
1488
 
1489
+ #: includes/i18n.php:423
1490
  msgid "Add-on must be deployed to WordPress.org or Freemius."
1491
  msgstr "Add-on must be deployed to WordPress.org or Freemius."
1492
 
1493
+ #: includes/i18n.php:424
1494
  msgid "Paid add-on must be deployed to Freemius."
1495
  msgstr "Paid add-on must be deployed to Freemius."
1496
 
1497
+ #: includes/i18n.php:428
1498
  msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
1499
  msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
1500
 
1501
+ #: includes/i18n.php:429
1502
  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."
1503
  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."
1504
 
1505
+ #: includes/i18n.php:434
1506
  msgctxt "as every month"
1507
  msgid "Monthly"
1508
  msgstr "Monthly"
1509
 
1510
+ #: includes/i18n.php:435
1511
  msgctxt "as monthly period"
1512
  msgid "mo"
1513
  msgstr "mo"
1514
 
1515
+ #: includes/i18n.php:436
1516
  msgctxt "as once a year"
1517
  msgid "Annual"
1518
  msgstr "Annual"
1519
 
1520
+ #: includes/i18n.php:437
1521
  msgctxt "as once a year"
1522
  msgid "Annually"
1523
  msgstr "Annually"
1524
 
1525
+ #: includes/i18n.php:438
1526
  msgctxt "as once a year"
1527
  msgid "Once"
1528
  msgstr "Once"
1529
 
1530
+ #: includes/i18n.php:439
1531
  msgctxt "as annual period"
1532
  msgid "year"
1533
  msgstr "year"
1534
 
1535
+ #: includes/i18n.php:440
1536
  msgid "Lifetime"
1537
  msgstr "Lifetime"
1538
 
1539
+ #: includes/i18n.php:441
1540
  msgctxt "e.g. the best product"
1541
  msgid "Best"
1542
  msgstr "Best"
1543
 
1544
+ #: includes/i18n.php:442
1545
  msgctxt "e.g. billed monthly"
1546
  msgid "Billed %s"
1547
  msgstr "Billed %s"
1548
 
1549
+ #: includes/i18n.php:443
1550
  msgctxt "as a discount of $5 or 10%"
1551
  msgid "Save %s"
1552
  msgstr "Save %s"
1553
 
1554
+ #: includes/i18n.php:445
1555
  msgid "View details"
1556
  msgstr "View details"
1557
 
1558
+ #: includes/i18n.php:449
1559
  msgctxt "button label"
1560
  msgid "Approve & Start Trial"
1561
  msgstr "Approve & Start Trial"
1562
 
1563
+ #: includes/i18n.php:451
1564
  msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1565
  msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1566
 
1567
+ #: includes/i18n.php:453
1568
  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."
1569
  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."
1570
 
1571
+ #: includes/i18n.php:459
1572
  msgid "Business name"
1573
  msgstr "Business name"
1574
 
1575
+ #: includes/i18n.php:460
1576
  msgid "Tax / VAT ID"
1577
  msgstr "Tax / VAT ID"
1578
 
1579
+ #: includes/i18n.php:461
1580
  msgid "Address Line %d"
1581
  msgstr "Address Line %d"
1582
 
1583
+ #: includes/i18n.php:462
1584
  msgid "Country"
1585
  msgstr "Country"
1586
 
1587
+ #: includes/i18n.php:463
1588
  msgid "Select Country"
1589
  msgstr "Select Country"
1590
 
1591
+ #: includes/i18n.php:464
1592
  msgid "City"
1593
  msgstr "City"
1594
 
1595
+ #: includes/i18n.php:465
1596
  msgid "Town"
1597
  msgstr "Town"
1598
 
1599
+ #: includes/i18n.php:466
1600
  msgid "State"
1601
  msgstr "State"
1602
 
1603
+ #: includes/i18n.php:467
1604
  msgid "Province"
1605
  msgstr "Province"
1606
 
1607
+ #: includes/i18n.php:468
1608
  msgid "ZIP / Postal Code"
1609
  msgstr "ZIP / Postal Code"
1610
 
1611
+ #: includes/i18n.php:473
1612
+ msgid "Installing plugin: %s"
1613
+ msgstr "Installing plugin: %s"
1614
+
1615
+ #: includes/i18n.php:474
1616
+ msgid "Automatic Installation"
1617
+ msgstr "Automatic Installation"
1618
+
1619
+ #: includes/i18n.php:476
1620
+ msgid "%s sec"
1621
+ msgstr "%s sec"
1622
+
1623
+ #: includes/i18n.php:477
1624
+ 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."
1625
+ 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."
1626
+
1627
+ #: includes/i18n.php:478
1628
+ 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."
1629
+ 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."
1630
+
1631
+ #: includes/i18n.php:479
1632
+ msgid "Cancel Installation"
1633
+ msgstr "Cancel Installation"
1634
+
1635
+ #: includes/i18n.php:480
1636
+ msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
1637
+ msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
1638
+
1639
  #: includes/i18n.php:481
1640
+ msgid "Invalid module ID."
1641
+ msgstr "Invalid module ID."
1642
+
1643
+ #: includes/i18n.php:482
1644
+ msgid "Auto installation only works for opted-in users."
1645
+ msgstr "Auto installation only works for opted-in users."
1646
+
1647
+ #: includes/i18n.php:483
1648
+ msgid "Premium version already active."
1649
+ msgstr "Premium version already active."
1650
+
1651
+ #: includes/i18n.php:484
1652
+ msgid "Premium add-on version already installed."
1653
+ msgstr "Premium add-on version already installed."
1654
+
1655
+ #: includes/i18n.php:485
1656
+ msgid "You do not have a valid license to access the premium version."
1657
+ msgstr "You do not have a valid license to access the premium version."
1658
+
1659
+ #: includes/i18n.php:486
1660
+ msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
1661
+ msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version."
1662
+
1663
+ #: includes/i18n.php:501
1664
  msgctxt "Plugin installer section title"
1665
  msgid "Description"
1666
  msgstr "Description"
1667
 
1668
+ #: includes/i18n.php:502
1669
  msgctxt "Plugin installer section title"
1670
  msgid "Installation"
1671
  msgstr "Installation"
1672
 
1673
+ #: includes/i18n.php:503
1674
  msgctxt "Plugin installer section title"
1675
  msgid "FAQ"
1676
  msgstr "FAQ"
1677
 
1678
+ #: includes/i18n.php:504
1679
  msgctxt "Plugin installer section title"
1680
  msgid "Changelog"
1681
  msgstr "Changelog"
1682
 
1683
+ #: includes/i18n.php:505
1684
  msgctxt "Plugin installer section title"
1685
  msgid "Reviews"
1686
  msgstr "Reviews"
1687
 
1688
+ #: includes/i18n.php:506
1689
  msgctxt "Plugin installer section title"
1690
  msgid "Other Notes"
1691
  msgstr "Other Notes"
1692
 
1693
+ #: includes/i18n.php:508
1694
  msgid "%s star"
1695
  msgstr "%s star"
1696
 
1697
+ #: includes/i18n.php:510
1698
  msgid "%s stars"
1699
  msgstr "%s stars"
1700
 
1701
+ #: includes/i18n.php:512
1702
  msgid "%s rating"
1703
  msgstr "%s rating"
1704
 
1705
+ #: includes/i18n.php:514
1706
  msgid "%s ratings"
1707
  msgstr "%s ratings"
1708
 
1709
+ #: includes/i18n.php:516
1710
  msgid "%s time"
1711
  msgstr "%s time"
1712
 
1713
+ #: includes/i18n.php:518
1714
  msgid "%s times"
1715
  msgstr "%s times"
1716
 
1717
+ #: includes/i18n.php:520
1718
  msgid "Click to see reviews that provided a rating of %s"
1719
  msgstr "Click to see reviews that provided a rating of %s"
1720
 
1721
+ #: includes/i18n.php:521
1722
  msgid "Last Updated"
1723
  msgstr "Last Updated"
1724
 
1725
+ #: includes/i18n.php:522
1726
  msgid "Requires WordPress Version:"
1727
  msgstr "Requires WordPress Version:"
1728
 
1729
+ #: includes/i18n.php:523
1730
  msgctxt "as the plugin author"
1731
  msgid "Author:"
1732
  msgstr "Author:"
1733
 
1734
+ #: includes/i18n.php:524
1735
  msgid "Compatible up to:"
1736
  msgstr "Compatible up to:"
1737
 
1738
+ #: includes/i18n.php:525
1739
  msgid "Downloaded:"
1740
  msgstr "Downloaded:"
1741
 
1742
+ #: includes/i18n.php:526
1743
  msgid "WordPress.org Plugin Page"
1744
  msgstr "WordPress.org Plugin Page"
1745
 
1746
+ #: includes/i18n.php:527
1747
  msgid "Plugin Homepage"
1748
  msgstr "Plugin Homepage"
1749
 
1750
+ #: includes/i18n.php:528
1751
  msgid "Donate to this plugin"
1752
  msgstr "Donate to this plugin"
1753
 
1754
+ #: includes/i18n.php:529
1755
  msgid "Average Rating"
1756
  msgstr "Average Rating"
1757
 
1758
+ #: includes/i18n.php:530
1759
  msgid "based on %s"
1760
  msgstr "based on %s"
1761
 
1762
+ #: includes/i18n.php:531
1763
  msgid "Warning:"
1764
  msgstr "Warning:"
1765
 
1766
+ #: includes/i18n.php:532
1767
  msgid "Contributors"
1768
  msgstr "Contributors"
1769
 
1770
+ #: includes/i18n.php:533
1771
  msgid "Plugin Install"
1772
  msgstr "Plugin Install"
1773
 
1774
+ #: includes/i18n.php:534
1775
  msgid "This plugin has not been tested with your current version of WordPress."
1776
  msgstr "This plugin has not been tested with your current version of WordPress."
1777
 
1778
+ #: includes/i18n.php:535
1779
  msgid "This plugin has not been marked as compatible with your version of WordPress."
1780
  msgstr "This plugin has not been marked as compatible with your version of WordPress."
1781
 
1782
+ #: includes/i18n.php:536
1783
  msgid "Newer Version (%s) Installed"
1784
  msgstr "Newer Version (%s) Installed"
1785
 
1786
+ #: includes/i18n.php:537
1787
  msgid "Latest Version Installed"
1788
  msgstr "Latest Version Installed"
freemius/languages/freemius-he.mo CHANGED
Binary file
freemius/languages/freemius-he.po CHANGED
@@ -1,1661 +1,1791 @@
1
- # Copyright (C) 2016 freemius
2
  # This file is distributed under the same license as the freemius package.
3
  # Translators:
 
4
  # Vova Feldman <vova@freemius.com>, 2016
5
  msgid ""
6
  msgstr ""
7
  "Project-Id-Version: WordPress SDK\n"
8
  "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
9
- "PO-Revision-Date: 2016-12-07 01:29+0000\n"
 
10
  "Last-Translator: Vova Feldman <vova@freemius.com>\n"
 
11
  "Language-Team: Hebrew (http://www.transifex.com/freemius/wordpress-sdk/language/he/)\n"
12
- "MIME-Version: 1.0\n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
- "Language: he\n"
16
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
17
  "X-Poedit-Basepath: ..\n"
18
- "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"
19
  "X-Poedit-SearchPath-0: .\n"
20
  "X-Poedit-SearchPathExcluded-0: *.js\n"
21
  "X-Poedit-SourceCharset: UTF-8\n"
22
 
23
- #: includes/i18n.php41, includes/i18n.php:55
24
- msgid "Yes - I'm in!"
25
- msgstr ""
26
-
27
- #: includes/i18n.php43, includes/i18n.php:57
28
- msgid "Not today"
29
- msgstr "לא היום"
30
-
31
- #: includes/i18n.php:69
32
  msgid "Account"
33
  msgstr "חשבון"
34
 
35
- #: includes/i18n.php:71
36
  msgid "Add On"
37
- msgstr "תוסף"
38
 
39
- #: includes/i18n.php:73
40
  msgid "Contact Us"
41
  msgstr "יצירת קשר"
42
 
43
- #: includes/i18n.php:75
44
  msgid "Contact Support"
45
  msgstr "צור קשר"
46
 
47
- #: includes/i18n.php:77
48
  msgid "Change Ownership"
49
  msgstr "עדכון בעלות"
50
 
51
- #: includes/i18n.php:79
52
  msgid "Support"
53
  msgstr "תמיכה"
54
 
55
- #: includes/i18n.php:81
56
  msgid "Support Forum"
57
  msgstr "פורום תמיכה"
58
 
59
- #: includes/i18n.php:83
60
  msgid "Add Ons"
61
- msgstr "תוספים"
62
 
63
- #: includes/i18n.php:85
64
  msgctxt "verb"
65
  msgid "Upgrade"
66
  msgstr "שדרג"
67
 
68
- #: includes/i18n.php:87
69
  msgid "Awesome"
70
  msgstr "אדיר"
71
 
72
- #: includes/i18n.php:89
73
  msgctxt "noun"
74
  msgid "Pricing"
75
  msgstr "מחירון"
76
 
77
- #: includes/i18n.php:91
78
  msgctxt "noun"
79
  msgid "Price"
80
  msgstr "מחיר"
81
 
82
- #: includes/i18n.php:93
83
  msgid "Unlimited Updates"
84
  msgstr "עדכונים ללא הגבלה"
85
 
86
- #: includes/i18n.php:95
87
  msgctxt "verb"
88
  msgid "Downgrade"
89
  msgstr "שנמך"
90
 
91
- #: includes/i18n.php:97
 
 
 
 
 
92
  msgid "Cancel Trial"
93
  msgstr "ביט"
94
 
95
- #: includes/i18n.php:99
96
  msgid "Free Trial"
97
  msgstr "ניסיון חינם"
98
 
99
- #: includes/i18n.php:101
100
  msgid "Start my free %s"
101
  msgstr "התחל את %s הניסיון שלי"
102
 
103
- #: includes/i18n.php:103
104
  msgid "No commitment for %s - cancel anytime"
105
- msgstr ""
106
 
107
- #: includes/i18n.php:105
108
  msgid "After your free %s, pay as little as %s"
109
- msgstr ""
110
 
111
- #: includes/i18n.php:107
112
  msgid "Details"
113
  msgstr "פרטים"
114
 
115
- #: includes/i18n.php:109
116
  msgid "Account Details"
117
  msgstr "פרטי חשבון"
118
 
119
- #: includes/i18n.php:111
120
  msgctxt "verb"
121
  msgid "Delete"
122
  msgstr "מחק"
123
 
124
- #: includes/i18n.php:113
125
  msgctxt "verb"
126
  msgid "Show"
127
  msgstr "הצג"
128
 
129
- #: includes/i18n.php:115
130
  msgctxt "verb"
131
  msgid "Hide"
132
  msgstr "הסתר"
133
 
134
- #: includes/i18n.php:117
135
  msgctxt "verb"
136
  msgid "Edit"
137
  msgstr "ערוך"
138
 
139
- #: includes/i18n.php:119
140
  msgctxt "verb"
141
  msgid "Update"
142
- msgstr ""
143
 
144
- #: includes/i18n.php:121
145
  msgid "Date"
146
  msgstr "תאריך"
147
 
148
- #: includes/i18n.php:123
149
  msgid "Amount"
150
  msgstr "סכום"
151
 
152
- #: includes/i18n.php:125
153
  msgid "Invoice"
154
  msgstr "חשבונית"
155
 
156
- #: includes/i18n.php:127
157
  msgid "Billing"
158
  msgstr "בילינג"
159
 
160
- #: includes/i18n.php:129
161
  msgid "Payments"
162
  msgstr "תשלומים"
163
 
164
- #: includes/i18n.php:131
165
  msgid "Delete Account"
166
  msgstr "מחיקת חשבון"
167
 
168
- #: includes/i18n.php:133
169
  msgctxt "as close a window"
170
  msgid "Dismiss"
171
  msgstr "סגירה"
172
 
173
- #: includes/i18n.php:135
174
  msgctxt "as product pricing plan"
175
  msgid "Plan"
176
  msgstr "חבילה"
177
 
178
- #: includes/i18n.php:137
179
  msgid "Change Plan"
180
  msgstr "שינוי חבילה"
181
 
182
- #: includes/i18n.php:139
183
  msgctxt "as download professional version"
184
  msgid "Download %s Version"
185
- msgstr ""
186
 
187
- #: includes/i18n.php:141
188
  msgctxt "as download professional version now"
189
  msgid "Download %s version now"
190
- msgstr ""
191
 
192
- #: includes/i18n.php:145
193
  msgctxt "as download latest version"
194
  msgid "Download Latest"
195
  msgstr "הורד גרסה אחרונה"
196
 
197
- #: includes/i18n.php:147
198
  msgctxt "E.g. you have a professional license."
199
  msgid "You have a %s license."
200
- msgstr ""
201
 
202
- #: includes/i18n.php:151
203
  msgid "New"
204
  msgstr "חדש"
205
 
206
- #: includes/i18n.php:153
207
  msgid "Free"
208
  msgstr "חינם"
209
 
210
- #: includes/i18n.php:155
211
  msgctxt "as trial plan"
212
  msgid "Trial"
213
  msgstr "ניסיון"
214
 
215
- #: includes/i18n.php:157
216
  msgctxt "as starting a trial plan"
217
  msgid "Start Trial"
218
- msgstr ""
219
 
220
- #: includes/i18n.php:159
221
  msgctxt "verb"
222
  msgid "Purchase"
223
  msgstr "רכישה"
224
 
225
- #: includes/i18n.php:161
226
  msgid "Purchase License"
227
  msgstr "קניית רישיון"
228
 
229
- #: includes/i18n.php:163
230
  msgctxt "verb"
231
  msgid "Buy"
232
  msgstr "קנייה"
233
 
234
- #: includes/i18n.php:165
235
  msgid "Buy License"
236
  msgstr "קניית רישיון"
237
 
238
- #: includes/i18n.php:167
239
  msgid "Single Site License"
240
  msgstr "רשיון לאתר אחד"
241
 
242
- #: includes/i18n.php:169
243
  msgid "Unlimited Licenses"
244
  msgstr "רשיונות ללא הגבלה"
245
 
246
- #: includes/i18n.php:171
247
  msgid "Up to %s Sites"
248
  msgstr "עד %s אתרים"
249
 
250
- #: includes/i18n.php:173
251
  msgid "%sRenew your license now%s to access version %s features and support."
252
- msgstr ""
253
 
254
- #: includes/i18n.php:177
255
- msgid ""
256
- "Enter the email address you've used for the upgrade below and we will resend"
257
- " you the license key."
258
- msgstr ""
259
 
260
- #: includes/i18n.php:181
261
  msgctxt "e.g. Professional Plan"
262
  msgid "%s Plan"
263
- msgstr ""
264
 
265
- #: includes/i18n.php:183
266
  msgid "You are just one step away - %s"
267
- msgstr ""
268
 
269
- #: includes/i18n.php:185
270
  msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
271
  msgid "Complete \"%s\" Activation Now"
272
- msgstr ""
273
 
274
- #: includes/i18n.php:189
275
  msgid "We made a few tweaks to the plugin, %s"
276
  msgstr "ביצענו מספר שינויים לתוסף, %s"
277
 
278
- #: includes/i18n.php:191
279
  msgid "Opt-in to make \"%s\" Better!"
280
- msgstr ""
281
 
282
- #: includes/i18n.php:193
283
  msgid "Error"
284
  msgstr "שגיאה"
285
 
286
- #: includes/i18n.php:195
287
- msgid ""
288
- "Freemius SDK couldn't find the plugin's main file. Please contact "
289
- "sdk@freemius.com with the current error."
290
- msgstr ""
291
 
292
- #: includes/i18n.php:203
293
  msgctxt "as expiration date"
294
  msgid "Expiration"
295
  msgstr "תפוגה"
296
 
297
- #: includes/i18n.php:205
298
  msgctxt "as software license"
299
  msgid "License"
300
  msgstr "רישיון"
301
 
302
- #: includes/i18n.php:207
303
  msgid "not verified"
304
  msgstr "לא מאומת"
305
 
306
- #: includes/i18n.php:209
307
  msgid "Verify Email"
308
  msgstr "אמת כתובת דוא\"ל"
309
 
310
- #: includes/i18n.php:211
311
  msgctxt "e.g. expires in 2 months"
312
  msgid "Expires in %s"
313
- msgstr ""
314
 
315
- #: includes/i18n.php:213
316
  msgctxt "e.g. auto renews in 2 months"
317
  msgid "Auto renews in %s"
318
- msgstr ""
319
 
320
- #: includes/i18n.php:215
321
  msgid "No expiration"
322
  msgstr "ללא תפוגה"
323
 
324
- #: includes/i18n.php:217
325
  msgid "Expired"
326
  msgstr "פג תוקף"
327
 
328
- #: includes/i18n.php:219
329
  msgid "Cancelled"
330
  msgstr "בוטל"
331
 
332
- #: includes/i18n.php:221
333
  msgctxt "e.g. In 2 hours"
334
  msgid "In %s"
335
  msgstr "בעוד %s"
336
 
337
- #: includes/i18n.php:223
338
  msgctxt "e.g. 2 min ago"
339
  msgid "%s ago"
340
- msgstr ""
341
 
342
- #: includes/i18n.php:225
 
 
 
 
343
  msgctxt "as plugin version"
344
  msgid "Version"
345
  msgstr "גרסה"
346
 
347
- #: includes/i18n.php:227
348
  msgid "Name"
349
  msgstr "שם"
350
 
351
- #: includes/i18n.php:229
352
  msgid "Email"
353
  msgstr "דוא\"ל"
354
 
355
- #: includes/i18n.php:231
356
  msgid "Email address"
357
  msgstr "כתובת דוא\"ל"
358
 
359
- #: includes/i18n.php:233
360
  msgid "Verified"
361
  msgstr "מאומת"
362
 
363
- #: includes/i18n.php:235
 
 
 
 
 
 
 
 
364
  msgid "Plugin"
365
  msgstr "תוסף"
366
 
367
- #: includes/i18n.php:237
368
  msgid "Plugins"
369
  msgstr "תוספים"
370
 
371
- #: includes/i18n.php:239
 
 
 
 
372
  msgid "Themes"
373
  msgstr "תבניות"
374
 
375
- #: includes/i18n.php:241
376
  msgctxt "as file/folder path"
377
  msgid "Path"
378
- msgstr ""
379
 
380
- #: includes/i18n.php:243
381
  msgid "Title"
382
  msgstr "כותרת"
383
 
384
- #: includes/i18n.php:245
385
  msgid "Free version"
386
  msgstr "גירסה חינאמית"
387
 
388
- #: includes/i18n.php:247
389
  msgid "Premium version"
390
  msgstr "גירסת פרימיום"
391
 
392
- #: includes/i18n.php:249
393
  msgctxt "as WP plugin slug"
394
  msgid "Slug"
395
- msgstr ""
396
 
397
- #: includes/i18n.php:251
398
  msgid "ID"
399
  msgstr "מזהה"
400
 
401
- #: includes/i18n.php:253
402
  msgid "Users"
403
  msgstr "משתמשים"
404
 
405
- #: includes/i18n.php:255
406
  msgid "Plugin Installs"
407
  msgstr "התקנות תוסף"
408
 
409
- #: includes/i18n.php:257
 
 
 
 
410
  msgctxt "like websites"
411
  msgid "Sites"
412
  msgstr "אתרים"
413
 
414
- #: includes/i18n.php:259
415
  msgid "User ID"
416
  msgstr "מזהה משתמש"
417
 
418
- #: includes/i18n.php:261
419
  msgid "Site ID"
420
  msgstr "מזהה אתר"
421
 
422
- #: includes/i18n.php:263
423
  msgid "Public Key"
424
  msgstr "מפתח פומבי"
425
 
426
- #: includes/i18n.php:265
427
  msgid "Secret Key"
428
  msgstr "מפתח סודי"
429
 
430
- #: includes/i18n.php:267
431
  msgctxt "as secret encryption key missing"
432
  msgid "No Secret"
433
  msgstr "אין מפתח סודי"
434
 
435
- #: includes/i18n.php:269
436
  msgid "No ID"
437
  msgstr "אין מזהה"
438
 
439
- #: includes/i18n.php:271
440
  msgctxt "as synchronize license"
441
  msgid "Sync License"
442
  msgstr "סינכרן רישיון"
443
 
444
- #: includes/i18n.php:273
445
  msgctxt "as synchronize"
446
  msgid "Sync"
447
  msgstr "סינכרון"
448
 
449
- #: includes/i18n.php:275
450
  msgid "Activate License"
451
  msgstr "הפעלת רישיון"
452
 
453
- #: includes/i18n.php:277
454
  msgid "Activate Free Version"
455
  msgstr "הפעלת גירסה חינאמית"
456
 
457
- #: includes/i18n.php:279
458
- msgid ""
459
- "Please enter the license key that you received in the email right after the "
460
- "purchase:"
461
- msgstr ""
462
 
463
- #: includes/i18n.php:283
464
  msgid "Activating license..."
465
  msgstr "מפעיל רישיון..."
466
 
467
- #: includes/i18n.php:285
468
  msgid "Change License"
469
  msgstr "שינוי רישיון"
470
 
471
- #: includes/i18n.php:287
472
  msgid "Update License"
473
  msgstr "עדכון רישיון"
474
 
475
- #: includes/i18n.php:289
476
  msgid "Deactivate License"
477
  msgstr "שיחרור רישיון"
478
 
479
- #: includes/i18n.php:291
480
  msgid "Activate"
481
  msgstr "הפעלה"
482
 
483
- #: includes/i18n.php:293
484
  msgid "Deactivate"
485
  msgstr "כיבוי"
486
 
487
- #: includes/i18n.php:295
488
  msgid "Skip & Deactivate"
489
  msgstr "דלג והמשך כיבוי"
490
 
491
- #: includes/i18n.php:297
 
 
 
 
492
  msgid "No - just deactivate"
493
  msgstr "לא - פשוט כבה"
494
 
495
- #: includes/i18n.php:299
496
  msgid "Yes - do your thing"
497
  msgstr "כן - בצעו את מה שצריך"
498
 
499
- #: includes/i18n.php:301
500
  msgctxt "active mode"
501
  msgid "Active"
502
  msgstr "מופעל"
503
 
504
- #: includes/i18n.php:303
505
  msgctxt "is active mode?"
506
  msgid "Is Active"
507
  msgstr "האם פעיל"
508
 
509
- #: includes/i18n.php:305
510
  msgid "Install Now"
511
  msgstr "התקן עכשיו"
512
 
513
- #: includes/i18n.php:307
514
  msgid "Install Update Now"
515
  msgstr "התקן עדכון במיידי"
516
 
517
- #: includes/i18n.php:309
518
  msgid "More information about %s"
519
- msgstr ""
520
 
521
- #: includes/i18n.php:311
522
  msgid "Localhost"
523
  msgstr "שרת לוקאלי"
524
 
525
- #: includes/i18n.php:313
526
  msgctxt "as activate Professional plan"
527
  msgid "Activate %s Plan"
528
- msgstr ""
529
 
530
- #: includes/i18n.php:315
531
  msgctxt "as 5 licenses left"
532
  msgid "%s left"
533
  msgstr "נשארו %s"
534
 
535
- #: includes/i18n.php:317
536
  msgid "Last license"
537
  msgstr "רישיון אחרון"
538
 
539
- #: includes/i18n.php:319
540
  msgid "What is your %s?"
541
- msgstr ""
542
 
543
- #: includes/i18n.php:321
544
  msgid "Activate this add-on"
545
- msgstr "הפעל את התוסף"
546
 
547
- #: includes/i18n.php:323
548
- msgid ""
549
- "Deactivating your license will block all premium features, but will enable "
550
- "you to activate the license on another site. Are you sure you want to "
551
- "proceed?"
552
- msgstr ""
553
 
554
- #: includes/i18n.php:327
555
- msgid ""
556
- "Deleting the account will automatically deactivate your %s plan license so "
557
- "you can use it on other sites. If you want to terminate the recurring "
558
- "payments as well, click the \"Cancel\" button, and first \"Downgrade\" your "
559
- "account. Are you sure you would like to continue with the deletion?"
560
- msgstr ""
561
 
562
- #: includes/i18n.php:331
563
- msgid ""
564
- "Deletion is not temporary. Only delete if you no longer want to use this "
565
- "plugin anymore. Are you sure you would like to continue with the deletion?"
566
- msgstr ""
567
 
568
- #: includes/i18n.php:335
569
- msgid ""
570
- "Downgrading your plan will immediately stop all future recurring payments "
571
- "and your %s plan license will expire in %s."
572
- msgstr ""
573
 
574
- #: includes/i18n.php:339
575
- msgid ""
576
- "Cancelling the trial will immediately block access to all premium features. "
577
- "Are you sure?"
578
- msgstr ""
579
 
580
- #: includes/i18n.php:343
581
- msgid ""
582
- "You can still enjoy all %s features but you will not have access to plugin "
583
- "updates and support."
584
- msgstr ""
585
 
586
- #: includes/i18n.php:347
587
- msgid ""
588
- "Once your license expire you can still use the Free version but you will NOT"
589
- " have access to the %s features."
590
- msgstr ""
591
 
592
- #: includes/i18n.php:351
593
  msgid "Are you sure you want to proceed?"
594
  msgstr "האם את/ה בטוח רוצה להמשיך?"
595
 
596
- #: includes/i18n.php:357
597
  msgid "Add Ons for %s"
598
- msgstr ""
599
 
600
- #: includes/i18n.php:359
601
- msgid ""
602
- "We could'nt load the add-ons list. It's probably an issue on our side, "
603
- "please try to come back in few minutes."
604
- msgstr ""
605
 
606
- #: includes/i18n.php:365
607
  msgid "Anonymous feedback"
608
  msgstr "פידבק אנונימי"
609
 
610
- #: includes/i18n.php:367
611
  msgid "Quick feedback"
612
  msgstr "פידבק זריז"
613
 
614
- #: includes/i18n.php:369
615
  msgid "If you have a moment, please let us know why you are deactivating"
616
- msgstr ""
617
 
618
- #: includes/i18n.php:373
619
  msgid "Yes - Deactivate"
620
  msgstr "כן - "
621
 
622
- #: includes/i18n.php:375
623
  msgid "Submit & Deactivate"
624
  msgstr "שלח וכבה"
625
 
626
- #: includes/i18n.php:377
627
  msgid "Cancel"
628
  msgstr "בטל"
629
 
630
- #: includes/i18n.php:379
631
  msgid "I no longer need the plugin"
632
  msgstr "אין לי צורך יותר בתוסף"
633
 
634
- #: includes/i18n.php:381
635
  msgid "I found a better plugin"
636
  msgstr "מצאתי תוסף טוב יותר"
637
 
638
- #: includes/i18n.php:383
639
  msgid "I only needed the plugin for a short period"
640
  msgstr "השתמשתי בתוסף לתקופה קצרה"
641
 
642
- #: includes/i18n.php:385
643
  msgid "The plugin broke my site"
644
  msgstr "התוסף הרס לי את האתר"
645
 
646
- #: includes/i18n.php:387
647
  msgid "The plugin suddenly stopped working"
648
  msgstr "התוסף לפתע הפסיק לעבוד"
649
 
650
- #: includes/i18n.php:389
651
  msgid "I can't pay for it anymore"
652
  msgstr "אני לא יכול/ה להמשיך לשלם על זה"
653
 
654
- #: includes/i18n.php:391
655
  msgid "It's a temporary deactivation. I'm just debugging an issue."
656
  msgstr "כיבוי זמני לשם דיבאג."
657
 
658
- #: includes/i18n.php:395
659
  msgctxt ""
660
- "the text of the \"other\" reason for deactivating the plugin that is shown "
661
- "in the modal box."
662
  msgid "Other"
663
  msgstr "אחר"
664
 
665
- #: includes/i18n.php:399
666
  msgid "Kindly tell us the reason so we can improve."
667
  msgstr "אנא שתף את הסיבה כדי שנוכל להשתפר."
668
 
669
- #: includes/i18n.php:401
670
  msgid "What's the plugin's name?"
671
  msgstr "מהו שם התוסף?"
672
 
673
- #: includes/i18n.php:403
674
  msgid "What price would you feel comfortable paying?"
675
  msgstr "מה המחיר שכן תרגיש\\י בנוח לשלם?"
676
 
677
- #: includes/i18n.php:405
678
  msgid "I couldn't understand how to make it work"
679
  msgstr "לא הצלחתי להבין איך לגרום לזה לעבוד"
680
 
681
- #: includes/i18n.php:407
682
- msgid ""
683
- "The plugin is great, but I need specific feature that you don't support"
684
  msgstr "התוסף מעולה, אבל אני צריכ\\ה פיצ'ר ספציפי שלא נתמך"
685
 
686
- #: includes/i18n.php:411
687
  msgid "The plugin is not working"
688
  msgstr "התוסף לא עובד"
689
 
690
- #: includes/i18n.php:413
691
  msgid "It's not what I was looking for"
692
  msgstr "חיפשתי משהו אחר"
693
 
694
- #: includes/i18n.php:415
695
  msgid "The plugin didn't work as expected"
696
  msgstr "התוסף לא עבד כמצופה"
697
 
698
- #: includes/i18n.php:417
699
  msgid "What feature?"
700
  msgstr "איזה פיטצ'ר?"
701
 
702
- #: includes/i18n.php:419
703
  msgid "Kindly share what didn't work so we can fix it for future users..."
704
  msgstr "אנא שתפ\\י מה לא עבד כדי שנוכל לתקן זאת עבור משתמשים עתידיים..."
705
 
706
- #: includes/i18n.php:423
707
  msgid "What you've been looking for?"
708
  msgstr "מה חיפשת?"
709
 
710
- #: includes/i18n.php:425
711
  msgid "What did you expect?"
712
  msgstr "למה ציפית?"
713
 
714
- #: includes/i18n.php:427
715
  msgid "The plugin didn't work"
716
  msgstr "התוסף לא עבד"
717
 
718
- #: includes/i18n.php:429
719
  msgid "I don't like to share my information with you"
720
  msgstr "אני לא אוהב את הרעיון של שיתוף מידע איתכם"
721
 
722
- #: includes/i18n.php:431
723
- msgid ""
724
- "You might have missed it, but you don't have to share any data and can just "
725
- "%s the opt-in."
726
  msgstr "אולי פספסת את זה אבל אינך חייב\\ת לשתף כל מידע איתנו, ביכולתך %s על שיתוף המידע."
727
 
728
- #: includes/i18n.php:441
729
  msgctxt "greeting"
730
  msgid "Hey %s,"
731
  msgstr "היי %s,"
732
 
733
- #: includes/i18n.php:443
734
  msgctxt "a greeting. E.g. Thanks John!"
735
  msgid "Thanks %s!"
736
  msgstr "תודה %s!"
737
 
738
- #: includes/i18n.php:445
739
- msgid ""
740
- "Never miss an important update - opt-in to our security and feature updates "
741
- "notifications, and non-sensitive diagnostic tracking with %4$s."
742
- msgstr ""
743
 
744
- #: includes/i18n.php:449
745
- msgid ""
746
- "Please help us improve %1$s! If you opt-in, some data about your usage of "
747
- "%1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still "
748
- "work just fine."
749
- msgstr ""
750
 
751
- #: includes/i18n.php:453
752
- msgid ""
753
- "You should receive an activation email for %s to your mailbox at %s. Please "
754
- "make sure you click the activation button in that email to %s."
755
- msgstr ""
756
 
757
- #: includes/i18n.php:455
758
  msgid "complete the install"
759
- msgstr ""
760
 
761
- #: includes/i18n.php:457
762
  msgid "start the trial"
763
- msgstr ""
764
 
765
- #: includes/i18n.php:459
766
- msgid ""
767
- "Thanks for purchasing %s! To get started, please enter your license key:"
768
- msgstr ""
769
 
770
- #: includes/i18n.php:463
771
- msgid ""
772
- "The plugin will be periodically sending data to %s to check for plugin "
773
- "updates and verify the validity of your license."
774
- msgstr ""
775
 
776
- #: includes/i18n.php:467
777
  msgid "What permissions are being granted?"
778
  msgstr "מהן ההרשאות המוענקות?"
779
 
780
- #: includes/i18n.php:469
781
  msgid "Your Profile Overview"
782
  msgstr "פרטים כלליים על הפרופיל"
783
 
784
- #: includes/i18n.php:471
785
  msgid "Name and email address"
786
  msgstr "שם וכתובת דו\"אל"
787
 
788
- #: includes/i18n.php:473
789
  msgid "Your Site Overview"
790
  msgstr "פרטים כלליים על האתר"
791
 
792
- #: includes/i18n.php:475
793
  msgid "Site URL, WP version, PHP info, plugins & themes"
794
  msgstr "כתובת אתר, גרסת וורדפרס, פרטי PHP, תוספים ותבניות"
795
 
796
- #: includes/i18n.php:479
797
  msgid "Current Plugin Events"
798
  msgstr "שינויי מצב בתוסף הנוכחי"
799
 
800
- #: includes/i18n.php:481
801
  msgid "Activation, deactivation and uninstall"
802
  msgstr "הפעלה, כיבוי והסרה"
803
 
804
- #: includes/i18n.php:483
805
  msgid "Plugins & Themes"
806
  msgstr "תוספים ותבניות"
807
 
808
- #: includes/i18n.php:485
809
  msgid "Titles, versions and state."
810
  msgstr "שמות, גרסאות וסטאטוס."
811
 
812
- #: includes/i18n.php:487
813
  msgid "Admin Notices"
814
- msgstr ""
815
 
816
- #: includes/i18n.php:489
817
  msgid "Newsletter"
818
  msgstr "ניוסלטר"
819
 
820
- #: includes/i18n.php:491
821
  msgid "Updates, announcements, marketing, no spam"
822
- msgstr ""
823
 
824
- #: includes/i18n.php:493
825
  msgid "Privacy Policy"
826
  msgstr "מדיניות פרטיות"
827
 
828
- #: includes/i18n.php:495
829
  msgid "Terms of Service"
830
  msgstr "תנאי השירות"
831
 
832
- #: includes/i18n.php:497
833
  msgctxt "as activating plugin"
834
  msgid "Activating"
835
  msgstr "מפעיל"
836
 
837
- #: includes/i18n.php:499
838
  msgctxt "as in the process of sending an email"
839
  msgid "Sending email"
840
  msgstr "שולח דוא\"ל"
841
 
842
- #: includes/i18n.php:503
843
  msgctxt "button label"
844
  msgid "Allow & Continue"
845
  msgstr "אפשר\\י והמשכ\\י"
846
 
847
- #: includes/i18n.php:505
848
  msgctxt "button label"
849
  msgid "Agree & Activate License"
850
  msgstr "הסכמה והפעלת רישיון"
851
 
852
- #: includes/i18n.php:507
853
  msgctxt "verb"
854
  msgid "Skip"
855
  msgstr "דלג"
856
 
857
- #: includes/i18n.php:509
858
  msgid "Click here to use the plugin anonymously"
859
- msgstr ""
860
 
861
- #: includes/i18n.php:511
862
  msgid "Re-send activation email"
863
  msgstr "שליחה חוזרת של מייל האקטיבציה"
864
 
865
- #: includes/i18n.php:513
866
  msgid "License key"
867
  msgstr "מפתח רישיון"
868
 
869
- #: includes/i18n.php:515
870
  msgid "Send License Key"
871
  msgstr "שליחת מפתח רישיון"
872
 
873
- #: includes/i18n.php:517
874
  msgid "Sending license key"
875
  msgstr "שולח מפתח רישיון"
876
 
877
- #: includes/i18n.php:519
878
  msgid "Have a license key?"
879
  msgstr "האם ברשותך רישיון?"
880
 
881
- #: includes/i18n.php:521
882
  msgid "Don't have a license key?"
883
  msgstr "האם אין ברשותך מפתח רישיון?"
884
 
885
- #: includes/i18n.php:523
886
  msgid "Can't find your license key?"
887
  msgstr "האם אינך מוצא את מפתח הרישיון?"
888
 
889
- #: includes/i18n.php:525
890
- msgid ""
891
- "We couldn't find your email address in the system, are you sure it's the "
892
- "right address?"
893
- msgstr ""
894
 
895
- #: includes/i18n.php:529
896
- msgid ""
897
- "We can't see any active licenses associated with that email address, are you"
898
- " sure it's the right address?"
899
- msgstr ""
900
 
901
- #: includes/i18n.php:533
902
  msgid "Opt In"
903
- msgstr ""
904
 
905
- #: includes/i18n.php:535
906
  msgid "Opt Out"
907
- msgstr ""
908
 
909
- #: includes/i18n.php:537
910
  msgid "On second thought - I want to continue helping"
911
- msgstr ""
912
 
913
- #: includes/i18n.php:541
914
  msgid "Opting out..."
915
- msgstr ""
916
 
917
- #: includes/i18n.php:543
918
  msgid "Opting in..."
919
- msgstr ""
920
 
921
- #: includes/i18n.php:545
922
- msgid ""
923
- "We appreciate your help in making the %s better by letting us track some "
924
- "usage data."
925
- msgstr ""
926
 
927
- #: includes/i18n.php:549
928
- msgid ""
929
- "Usage tracking is done in the name of making %s better. Making a better user"
930
- " experience, prioritizing new features, and more good things. We'd really "
931
- "appreciate if you'll reconsider letting us continue with the tracking."
932
- msgstr ""
933
 
934
- #: includes/i18n.php:553
935
- msgid ""
936
- "By clicking \"Opt Out\", we will no longer be sending any data from %s to "
937
- "%s."
938
- msgstr ""
939
 
940
- #: includes/i18n.php:563
941
  msgid "Screenshots"
942
  msgstr "צילומי מסך"
943
 
944
- #: includes/i18n.php:565
945
  msgid "Click to view full-size screenshot %d"
946
- msgstr ""
947
 
948
- #: includes/i18n.php:573
949
  msgid "Freemius Debug"
950
- msgstr ""
951
 
952
- #: includes/i18n.php:575
953
  msgctxt "as turned on"
954
  msgid "On"
955
  msgstr "דלוק"
956
 
957
- #: includes/i18n.php:577
958
  msgctxt "as turned off"
959
  msgid "Off"
960
  msgstr "כבוי"
961
 
962
- #: includes/i18n.php:579
963
  msgctxt "as code debugging"
964
  msgid "Debugging"
965
  msgstr "דיבוג"
966
 
967
- #: includes/i18n.php:581
968
  msgid "Freemius State"
969
- msgstr ""
970
 
971
- #: includes/i18n.php:583
972
  msgctxt "as connection was successful"
973
  msgid "Connected"
974
  msgstr "מחובר"
975
 
976
- #: includes/i18n.php:585
977
  msgctxt "as connection blocked"
978
  msgid "Blocked"
979
  msgstr "חסום"
980
 
981
- #: includes/i18n.php:587
982
  msgctxt "as application program interface"
983
  msgid "API"
984
  msgstr "API"
985
 
986
- #: includes/i18n.php:589
987
  msgctxt "as software development kit versions"
988
  msgid "SDK"
989
  msgstr "SDK"
990
 
991
- #: includes/i18n.php:591
992
  msgctxt "as software development kit versions"
993
  msgid "SDK Versions"
994
  msgstr "גרסאות SDK"
995
 
996
- #: includes/i18n.php:595
997
  msgctxt "as plugin folder path"
998
  msgid "Plugin Path"
999
- msgstr ""
1000
 
1001
- #: includes/i18n.php:597
1002
  msgctxt "as sdk path"
1003
  msgid "SDK Path"
1004
  msgstr "מיקום SDK"
1005
 
1006
- #: includes/i18n.php:599
1007
  msgid "Add Ons of Plugin %s"
1008
- msgstr ""
1009
 
1010
- #: includes/i18n.php:601
1011
  msgid "Are you sure you want to delete all Freemius data?"
1012
- msgstr ""
1013
 
1014
- #: includes/i18n.php:605
1015
  msgid "Actions"
1016
  msgstr "פעולות"
1017
 
1018
- #: includes/i18n.php:607
1019
  msgid "Delete All Accounts"
1020
  msgstr "מחיקת כל החשבונות"
1021
 
1022
- #: includes/i18n.php:609
1023
  msgid "Start Fresh"
1024
  msgstr "התחל מחדש"
1025
 
1026
- #: includes/i18n.php:611
1027
  msgid "Clear API Cache"
1028
  msgstr "ניקוי מטמון ה-API"
1029
 
1030
- #: includes/i18n.php:613
1031
  msgid "Sync Data From Server"
1032
  msgstr "סנכרון מידע מהשרת"
1033
 
1034
- #: includes/i18n.php:615
1035
  msgid "Scheduled Crons"
1036
- msgstr ""
 
 
 
 
1037
 
1038
- #: includes/i18n.php:617
1039
  msgid "Plugins & Themes Sync"
1040
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1041
 
1042
- #: includes/i18n.php:625
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1043
  msgctxt "as congratulations"
1044
  msgid "Congrats"
1045
  msgstr "מזל טוב"
1046
 
1047
- #: includes/i18n.php:627
1048
  msgctxt "exclamation"
1049
  msgid "Oops"
1050
  msgstr "אופס"
1051
 
1052
- #: includes/i18n.php:629
1053
  msgctxt "interjection expressing joy or exuberance"
1054
  msgid "Yee-haw"
1055
- msgstr ""
1056
 
1057
- #: includes/i18n.php:633
1058
  msgctxt ""
1059
- "(especially in electronic communication) used to express elation, "
1060
- "enthusiasm, or triumph."
1061
  msgid "W00t"
1062
- msgstr ""
1063
 
1064
- #: includes/i18n.php:637
1065
  msgctxt "a positive response"
1066
  msgid "Right on"
1067
- msgstr ""
1068
 
1069
- #: includes/i18n.php:639
1070
  msgctxt ""
1071
- "something somebody says when they are thinking about what you have just "
1072
- "said. "
1073
  msgid "Hmm"
1074
  msgstr "הממ"
1075
 
1076
- #: includes/i18n.php:643
1077
  msgid "O.K"
1078
  msgstr "אוקיי"
1079
 
1080
- #: includes/i18n.php:645
1081
  msgctxt "exclamation"
1082
  msgid "Hey"
1083
  msgstr "היי"
1084
 
1085
- #: includes/i18n.php:647
1086
  msgctxt "advance notice of something that will need attention."
1087
  msgid "Heads up"
1088
  msgstr "לתשמות לבך"
1089
 
1090
- #: includes/i18n.php:657
1091
  msgid "Seems like you got the latest release."
1092
- msgstr ""
1093
 
1094
- #: includes/i18n.php:659
1095
  msgid "You are all good!"
1096
  msgstr "את\\ה מסודר!"
1097
 
1098
- #: includes/i18n.php:661
1099
- msgid ""
1100
- "Sorry, we could not complete the email update. Another user with the same "
1101
- "email is already registered."
1102
- msgstr ""
1103
 
1104
- #: includes/i18n.php:665
1105
- msgid ""
1106
- "If you would like to give up the ownership of the plugin's account to %s "
1107
- "click the Change Ownership button."
1108
- msgstr ""
1109
 
1110
- #: includes/i18n.php:669
1111
- msgid ""
1112
- "Your email was successfully updated. You should receive an email with "
1113
- "confirmation instructions in few moments."
1114
- msgstr ""
1115
 
1116
- #: includes/i18n.php:673
1117
  msgid "Your name was successfully updated."
1118
  msgstr "שמך עודכן בהצלחה."
1119
 
1120
- #: includes/i18n.php:675
1121
  msgid "You have successfully updated your %s."
1122
- msgstr ""
1123
 
1124
- #: includes/i18n.php:677
1125
  msgid "Please provide your full name."
1126
  msgstr "נא למלא את שמך המלא."
1127
 
1128
- #: includes/i18n.php:679
1129
- msgid ""
1130
- "Verification mail was just sent to %s. If you can't find it after 5 min, "
1131
- "please check your spam box."
1132
- msgstr ""
1133
 
1134
- #: includes/i18n.php:683
1135
- msgid ""
1136
- "Just letting you know that the add-ons information of %s is being pulled "
1137
- "from an external server."
1138
- msgstr ""
1139
 
1140
- #: includes/i18n.php:687
1141
  msgid "No credit card required"
1142
  msgstr "לא נדרש כרטיס אשראי"
1143
 
1144
- #: includes/i18n.php:689
1145
  msgid "Premium plugin version was successfully activated."
1146
- msgstr ""
1147
 
1148
- #: includes/i18n.php:693
1149
  msgid "The upgrade of %s was successfully completed."
1150
- msgstr ""
1151
 
1152
- #: includes/i18n.php:695
1153
  msgid "Your account was successfully activated with the %s plan."
1154
- msgstr "חשבונך הופעל בהצלחה עם חבילת ה-%s."
1155
 
1156
- #: includes/i18n.php:699
1157
  msgid "Download the latest %s version now"
1158
  msgstr "הורדת גרסת ה-%s העדכנית - עכשיו"
1159
 
1160
- #: includes/i18n.php:701
1161
  msgid "Please follow these steps to complete the upgrade"
1162
  msgstr "נא לבצע את הצעדים הבאים להשלמת השידרוג"
1163
 
1164
- #: includes/i18n.php:705
1165
  msgid "Download the latest %s version"
1166
  msgstr "הורד\\י את גרסת ה-%s העדכנית"
1167
 
1168
- #: includes/i18n.php:707
 
 
 
 
1169
  msgid "Deactivate the free version"
1170
  msgstr "כבה\\י את הגרסה החינאמית"
1171
 
1172
- #: includes/i18n.php:709
1173
  msgid "Upload and activate the downloaded version"
1174
  msgstr "העלה\\י והפעיל\\י את הגרסה שהורדת"
1175
 
1176
- #: includes/i18n.php:711
1177
  msgid "How to upload and activate?"
1178
  msgstr "איך להעלות ולהפעיל?"
1179
 
1180
- #: includes/i18n.php:713
1181
  msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1182
  msgid "%s Add-on was successfully purchased."
1183
- msgstr ""
1184
 
1185
- #: includes/i18n.php:717
1186
  msgid "Your %s Add-on plan was successfully upgraded."
1187
- msgstr ""
1188
 
1189
- #: includes/i18n.php:721
1190
  msgid "Your email has been successfully verified - you are AWESOME!"
1191
- msgstr ""
1192
 
1193
- #: includes/i18n.php:725
1194
  msgid "Your plan was successfully upgraded."
1195
- msgstr "החבילה הופעלה בהצלחה."
1196
 
1197
- #: includes/i18n.php:727
1198
  msgid "Your plan was successfully changed to %s."
1199
- msgstr ""
1200
 
1201
- #: includes/i18n.php:729
1202
- msgid ""
1203
- "Your license has expired. You can still continue using the free plugin "
1204
- "forever."
1205
  msgstr "פג תוקפו של הרישיון. עדיין ניתן להמשיך להשתמש בגרסה החינאמית של התוסף ללא מגבלת זמן."
1206
 
1207
- #: includes/i18n.php:733
1208
- msgid ""
1209
- "Your license has been cancelled. If you think it's a mistake, please contact"
1210
- " support."
1211
  msgstr "רשיונך בוטל. אם לדעתך זו טעות, נא ליצור קשר עם התמיכה."
1212
 
1213
- #: includes/i18n.php:737
1214
  msgid "Your trial has been successfully started."
1215
  msgstr "הניסיון שלך הופעל בהצלחה."
1216
 
1217
- #: includes/i18n.php:739
1218
  msgid "Your license was successfully activated."
1219
  msgstr "הרישיון הופעל בהצלחה."
1220
 
1221
- #: includes/i18n.php:741
1222
  msgid "It looks like your site currently doesn't have an active license."
1223
  msgstr "נראה לאתר עדיין אין רישיון פעיל."
1224
 
1225
- #: includes/i18n.php:745
1226
- msgid ""
1227
- "Your license was successfully deactivated, you are back to the %s plan."
1228
- msgstr "רישיונך נותק בהצלחה, חזרת לחבילת ה-%s"
1229
 
1230
- #: includes/i18n.php:749
1231
  msgid "It looks like the license deactivation failed."
1232
  msgstr "נראה שניתוק הרישיון נכשל."
1233
 
1234
- #: includes/i18n.php:753
1235
  msgid "It looks like the license could not be activated."
1236
  msgstr "נראה שלא ניתן להפעיל את הרישיון."
1237
 
1238
- #: includes/i18n.php:757
1239
  msgid "Error received from the server:"
1240
  msgstr "הוחזרה שגיאה מהשרת:"
1241
 
1242
- #: includes/i18n.php:759
1243
- msgid ""
1244
- "Your trial has expired. You can still continue using all our free features."
1245
  msgstr "תקופת הניסיון נגמרה. ביכולתך להמשיך להשתמש בכל הפיטצ'רים החינאמיים."
1246
 
1247
- #: includes/i18n.php:763
1248
- msgid ""
1249
- "Your plan was successfully downgraded. Your %s plan license will expire in "
1250
- "%s."
1251
- msgstr ""
1252
 
1253
- #: includes/i18n.php:767
1254
- msgid ""
1255
- "Seems like we are having some temporary issue with your plan downgrade. "
1256
- "Please try again in few minutes."
1257
- msgstr ""
1258
 
1259
- #: includes/i18n.php:771
1260
- msgid ""
1261
- "It looks like you are not in trial mode anymore so there's nothing to cancel"
1262
- " :)"
1263
- msgstr ""
1264
 
1265
- #: includes/i18n.php:775
1266
  msgid "Your %s free trial was successfully cancelled."
1267
- msgstr ""
1268
 
1269
- #: includes/i18n.php:779
1270
  msgctxt "%s - numeric version number"
1271
  msgid "Version %s was released."
1272
  msgstr "גרסה %s הושקה."
1273
 
1274
- #: includes/i18n.php:783
1275
  msgid "Please download %s."
1276
- msgstr ""
1277
 
1278
- #: includes/i18n.php:785
1279
  msgctxt "%s - plan name, as the latest professional version here"
1280
  msgid "the latest %s version here"
1281
  msgstr "גרסת ה-%s האחרונה כאן"
1282
 
1283
- #: includes/i18n.php:789
1284
- msgid ""
1285
- "How do you like %s so far? Test all our %s premium features with a %d-day "
1286
- "free trial."
1287
- msgstr ""
1288
 
1289
- #: includes/i18n.php:793
1290
  msgctxt "call to action"
1291
  msgid "Start free trial"
1292
  msgstr "התחלת ניסיון חינם"
1293
 
1294
- #: includes/i18n.php:795
1295
  msgid "Starting trial"
1296
- msgstr ""
1297
 
1298
- #: includes/i18n.php:797
1299
  msgid "Please wait"
1300
- msgstr ""
1301
 
1302
- #: includes/i18n.php:799
1303
- msgid ""
1304
- "Seems like we are having some temporary issue with your trial cancellation. "
1305
- "Please try again in few minutes."
1306
- msgstr ""
1307
 
1308
- #: includes/i18n.php:803
1309
  msgid "You already utilized a trial before."
1310
  msgstr "הניסיון כבר נוצל בעבר."
1311
 
1312
- #: includes/i18n.php:805
1313
  msgid "You are already running the plugin in a trial mode."
1314
  msgstr "התוסף כבר עכשיו בתקופת ניסיון."
1315
 
1316
- #: includes/i18n.php:809
1317
  msgid "Plan %s do not exist, therefore, can't start a trial."
1318
- msgstr ""
1319
 
1320
- #: includes/i18n.php:813
1321
  msgid "Plan %s does not support a trial period."
1322
- msgstr ""
1323
 
1324
- #: includes/i18n.php:815
1325
  msgid "None of the plugin's plans supports a trial period."
1326
- msgstr "אף אחת מחבילות התוסף מאפשרת תקופת ניסיון."
1327
 
1328
- #: includes/i18n.php:819
1329
- msgid ""
1330
- "Unexpected API error. Please contact the plugin's author with the following "
1331
- "error."
1332
  msgstr "שגיאת API בלתי צפוייה. נא לפנות למפתח התוסף עם השגיאה הבאה."
1333
 
1334
- #: includes/i18n.php:823
1335
  msgid "No commitment for %s days - cancel anytime!"
1336
- msgstr ""
1337
 
1338
- #: includes/i18n.php:825
1339
- msgid ""
1340
- "Your license has expired. You can still continue using all the %s features, "
1341
- "but you'll need to renew your license to continue getting updates and "
1342
- "support."
1343
- msgstr ""
1344
 
1345
- #: includes/i18n.php:829
1346
  msgid "Couldn't activate %s."
1347
- msgstr ""
1348
 
1349
- #: includes/i18n.php:831
1350
  msgid "Please contact us with the following message:"
1351
  msgstr "אנא צור איתנו קשר יחד עם ההודעה הבאה:"
1352
 
1353
- #: includes/i18n.php:833
1354
- msgid ""
1355
- "It looks like you are still on the %s plan. If you did upgrade or change "
1356
- "your plan, it's probably an issue on our side - sorry."
1357
- msgstr ""
1358
 
1359
- #: includes/i18n.php:837
1360
  msgid "Please contact us here"
1361
  msgstr "אנא צור איתנו קשר כאן"
1362
 
1363
- #: includes/i18n.php:839
1364
- msgid ""
1365
- "I have upgraded my account but when I try to Sync the License, the plan "
1366
- "remains %s."
1367
- msgstr "שידרגתי את החשבון שלי אבל כשאני מנסה לבצע סנכרון לרישיון החבילה נשארת %s"
1368
 
1369
- #: includes/i18n.php:847
1370
  msgid "From unknown reason, the API connectivity test failed."
1371
  msgstr "יש בעיית תקשורת ל-API מסיבה בלתי ברורה."
1372
 
1373
- #: includes/i18n.php:851
1374
- msgid ""
1375
- "It's probably a temporary issue on our end. Just to be sure, with your "
1376
- "permission, would it be o.k to run another connectivity test?"
1377
  msgstr "ככל הנראה זאת בעיה זמנית בצד שלנו. ברשותך, ורק כדי להיות בטוחים שזאת הבעיה, האם זה יהיה בסדר לבצע בדיקת תקשורת נוספת?"
1378
 
1379
- #: includes/i18n.php:855
1380
- msgid ""
1381
- "We use PHP cURL library for the API calls, which is a very common library "
1382
- "and usually installed out of the box. Unfortunately, cURL is not installed "
1383
- "on your server."
1384
- msgstr ""
1385
 
1386
- #: includes/i18n.php:859
1387
- msgid ""
1388
- "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
 
 
 
1389
  msgstr "מסיבה בלתי ברורה, CloudFlare, חומת האש שאנחנו משתמשים בה, חוסמת את התקשורת."
1390
 
1391
- #: includes/i18n.php:863
1392
  msgctxt "as pluginX requires an access to our API"
1393
  msgid "%s requires an access to our API."
1394
  msgstr "%s מחייב גישה ל-API שלנו."
1395
 
1396
- #: includes/i18n.php:867
1397
- msgid ""
1398
- "It looks like your server is using Squid ACL (access control lists), which "
1399
- "blocks the connection."
1400
- msgstr ""
1401
 
1402
- #: includes/i18n.php:871
1403
  msgid "I don't know what is Squid or ACL, help me!"
1404
  msgstr "אין לי מושג מה זה Squid או ACL - אשמח לעזרה!"
1405
 
1406
- #: includes/i18n.php873, includes/i18n.php:887
1407
- msgid ""
1408
- "We'll make sure to contact your hosting company and resolve the issue. You "
1409
- "will get a follow-up email to %s once we have an update."
1410
- msgstr ""
1411
 
1412
- #: includes/i18n.php:877
1413
  msgid "I'm a system administrator"
1414
- msgstr ""
1415
 
1416
- #: includes/i18n.php:879
1417
- msgid ""
1418
- "Great, please whitelist the following domains: %s. Once you done, deactivate"
1419
- " the plugin and activate it again."
1420
- msgstr ""
1421
 
1422
- #: includes/i18n.php:883
1423
  msgid "I don't know what is cURL or how to install it, help me!"
1424
  msgstr "אין לי מושג מה זה cURL או איך להתקין אותו - אשמח לעזרה!"
1425
 
1426
- #: includes/i18n.php:891
1427
- msgid ""
1428
- "Great, please install cURL and enable it in your php.ini file. To make sure "
1429
- "it was successfully activated, use 'phpinfo()'. Once activated, deactivate "
1430
- "the plugin and reactivate it back again."
1431
- msgstr ""
1432
 
1433
- #: includes/i18n.php:895
1434
- msgid ""
1435
- "We are sure it's an issue on our side and more than happy to resolve it for "
1436
- "you ASAP if you give us a chance."
1437
  msgstr "זו בטח בעיה בצד שלנו ואנחנו נשמח לעזור כדי לפתור את העניין בהקדם האפשר, רק במידה ותאפשר\\י זאת."
1438
 
1439
- #: includes/i18n.php:899
1440
- msgid ""
1441
- "Sorry for the inconvenience and we are here to help if you give us a chance."
1442
  msgstr "מצטערים על חוסר הנעימות, אנחנו כאן כדי לעזור אם תאפשר\\י זאת."
1443
 
1444
- #: includes/i18n.php:903
1445
  msgid "Yes - I'm giving you a chance to fix it"
1446
  msgstr "כן - אני נותן לך צ'אנס לתקן את זה"
1447
 
1448
- #: includes/i18n.php:905
1449
- msgid ""
1450
- "We will do our best to whitelist your server and resolve this issue ASAP. "
1451
- "You will get a follow-up email to %s once we have an update."
1452
- msgstr ""
1453
 
1454
- #: includes/i18n.php:909
1455
  msgid "Let's try your previous version"
1456
  msgstr "בוא ננסה את הגירסה הקודמת"
1457
 
1458
- #: includes/i18n.php:911
1459
  msgid "Uninstall this version and install the previous one."
1460
  msgstr "הסר את הגרסה הנוכחית והתקן את הגרסה קודמת."
1461
 
1462
- #: includes/i18n.php:915
1463
  msgid "That's exhausting, please deactivate"
1464
  msgstr "זה מתיש, אנא לכבות"
1465
 
1466
- #: includes/i18n.php:917
1467
- msgid ""
1468
- "We feel your frustration and sincerely apologize for the inconvenience. Hope"
1469
- " to see you again in the future."
1470
- msgstr ""
1471
 
1472
- #: includes/i18n.php:921
1473
- msgid ""
1474
- "Thank for giving us the chance to fix it! A message was just sent to our "
1475
- "technical staff. We will get back to you as soon as we have an update to %s."
1476
- " Appreciate your patience."
1477
- msgstr ""
1478
 
1479
- #: includes/i18n.php:925
1480
  msgctxt "%1s - plugin title, %2s - API domain"
1481
- msgid ""
1482
- "Your server is blocking the access to Freemius' API, which is crucial for "
1483
- "%1s synchronization. Please contact your host to whitelist %2s"
1484
- msgstr ""
1485
 
1486
- #: includes/i18n.php:929
1487
- msgid ""
1488
- "It seems like one of the authentication parameters is wrong. Update your "
1489
- "Public Key, Secret Key & User ID, and try again."
1490
- msgstr ""
1491
 
1492
- #: includes/i18n.php:937
1493
- msgid ""
1494
- "Please check your mailbox, you should receive an email via %s to confirm the"
1495
- " ownership change. From security reasons, you must confirm the change within"
1496
- " the next 15 min. If you cannot find the email, please check your spam "
1497
- "folder."
1498
- msgstr ""
1499
 
1500
- #: includes/i18n.php:941
1501
- msgid ""
1502
- "Thanks for confirming the ownership change. An email was just sent to %s for"
1503
- " final approval."
1504
  msgstr "תודה על אישור ביצוע החלפת הבעלות. הרגע נשלח מייל ל-%s כדי לקבל אישור סופי."
1505
 
1506
- #: includes/i18n.php:945
1507
  msgid "%s is the new owner of the account."
1508
  msgstr "%s הינו הבעלים החד של חשבון זה."
1509
 
1510
- #: includes/i18n.php:949
1511
  msgctxt "addonX cannot run without pluginY"
1512
  msgid "%s cannot run without %s."
1513
  msgstr "%s לא יכול לעבוד ללא %s."
1514
 
1515
- #: includes/i18n.php:953
1516
  msgctxt "addonX cannot run..."
1517
  msgid "%s cannot run without the plugin."
1518
- msgstr ""
1519
 
1520
- #: includes/i18n.php:957
1521
  msgctxt "pluginX activation was successfully..."
1522
  msgid "%s activation was successfully completed."
1523
- msgstr ""
1524
 
1525
- #: includes/i18n.php:961
1526
  msgctxt "Plugin installer section title"
1527
  msgid "Features & Pricing"
1528
  msgstr "פיטצ'רים ומחירים"
1529
 
1530
- #: includes/i18n.php:965
1531
  msgid "Add-on must be deployed to WordPress.org or Freemius."
1532
- msgstr ""
1533
 
1534
- #: includes/i18n.php:969
1535
  msgid "Paid add-on must be deployed to Freemius."
1536
- msgstr ""
1537
 
1538
- #: includes/i18n.php:977
1539
- msgid ""
1540
- "%s is a premium only add-on. You have to purchase a license first before "
1541
- "activating the plugin."
1542
- msgstr ""
1543
 
1544
- #: includes/i18n.php:981
1545
- msgid ""
1546
- "%s free trial was successfully cancelled. Since the add-on is premium only "
1547
- "it was automatically deactivated. If you like to use it in the future, "
1548
- "you'll have to purchase a license."
1549
- msgstr ""
1550
 
1551
- #: includes/i18n.php:993
1552
  msgctxt "as every month"
1553
  msgid "Monthly"
1554
  msgstr "חודשי"
1555
 
1556
- #: includes/i18n.php:995
1557
  msgctxt "as monthly period"
1558
  msgid "mo"
1559
- msgstr ""
1560
 
1561
- #: includes/i18n.php:997
1562
  msgctxt "as once a year"
1563
  msgid "Annual"
1564
  msgstr "שנתי"
1565
 
1566
- #: includes/i18n.php:999
1567
  msgctxt "as once a year"
1568
  msgid "Annually"
1569
  msgstr "שנתי"
1570
 
1571
- #: includes/i18n.php:1001
1572
  msgctxt "as once a year"
1573
  msgid "Once"
1574
  msgstr "פעם אחת"
1575
 
1576
- #: includes/i18n.php:1003
1577
  msgctxt "as annual period"
1578
  msgid "year"
1579
  msgstr "שנה"
1580
 
1581
- #: includes/i18n.php:1005
1582
  msgid "Lifetime"
1583
  msgstr "לכל החיים"
1584
 
1585
- #: includes/i18n.php:1007
1586
  msgctxt "e.g. the best product"
1587
  msgid "Best"
1588
  msgstr "הכי טוב"
1589
 
1590
- #: includes/i18n.php:1009
1591
  msgctxt "e.g. billed monthly"
1592
  msgid "Billed %s"
1593
  msgstr "מחוייב על בסיס %s"
1594
 
1595
- #: includes/i18n.php:1011
1596
  msgctxt "as a discount of $5 or 10%"
1597
  msgid "Save %s"
1598
  msgstr "שמירת %s"
1599
 
1600
- #: includes/i18n.php:1015
1601
  msgid "View details"
1602
  msgstr "פרטים נוספים"
1603
 
1604
- #: includes/i18n.php:1023
1605
  msgctxt "button label"
1606
  msgid "Approve & Start Trial"
1607
- msgstr ""
1608
 
1609
- #: includes/i18n.php:1027
1610
- msgid ""
1611
- "You are 1-click away from starting your %1$s-day free trial of the %2$s "
1612
- "plan."
1613
- msgstr ""
1614
 
1615
- #: includes/i18n.php:1031
1616
- msgid ""
1617
- "For compliance with the WordPress.org guidelines, before we start the trial "
1618
- "we ask that you opt-in with your user and non-sensitive site information, "
1619
- "allowing the plugin to periodically send data to %s to check for version "
1620
- "updates and to validate your trial."
1621
- msgstr ""
1622
 
1623
- #: includes/i18n.php:1043
1624
  msgid "Business name"
1625
- msgstr ""
1626
 
1627
- #: includes/i18n.php:1045
1628
  msgid "Tax / VAT ID"
1629
- msgstr ""
1630
 
1631
- #: includes/i18n.php:1047
1632
  msgid "Address Line %d"
1633
- msgstr ""
1634
 
1635
- #: includes/i18n.php:1049
1636
  msgid "Country"
1637
- msgstr ""
1638
 
1639
- #: includes/i18n.php:1051
1640
  msgid "Select Country"
1641
- msgstr ""
1642
 
1643
- #: includes/i18n.php:1053
1644
  msgid "City"
1645
- msgstr ""
1646
 
1647
- #: includes/i18n.php:1055
1648
  msgid "Town"
1649
- msgstr ""
1650
 
1651
- #: includes/i18n.php:1057
1652
  msgid "State"
1653
- msgstr ""
1654
 
1655
- #: includes/i18n.php:1059
1656
  msgid "Province"
1657
- msgstr ""
1658
 
1659
- #: includes/i18n.php:1061
1660
  msgid "ZIP / Postal Code"
1661
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2017 freemius
2
  # This file is distributed under the same license as the freemius package.
3
  # Translators:
4
+ # Rami Yushuvaev <r_a_m_i@hotmail.com>, 2017
5
  # Vova Feldman <vova@freemius.com>, 2016
6
  msgid ""
7
  msgstr ""
8
  "Project-Id-Version: WordPress SDK\n"
9
  "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
10
+ "POT-Creation-Date: \n"
11
+ "PO-Revision-Date: 2017-05-12 17:32+0000\n"
12
  "Last-Translator: Vova Feldman <vova@freemius.com>\n"
13
+ "Language: he\n"
14
  "Language-Team: Hebrew (http://www.transifex.com/freemius/wordpress-sdk/language/he/)\n"
 
15
  "Content-Type: text/plain; charset=UTF-8\n"
16
  "Content-Transfer-Encoding: 8bit\n"
 
17
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
+ "MIME-Version: 1.0\n"
19
  "X-Poedit-Basepath: ..\n"
20
+ "X-Poedit-KeywordsList: _fs_text;_fs_echo;_fs_esc_attr;_fs_esc_attr_echo;_fs_esc_html;_fs_esc_html_echo;_fs_x:1,2c;_fs_ex:1,2c;_fs_esc_attr_x:1,2c;_fs_esc_html_x:1,2c;_fs_n:1,2;_fs_n_noop:1,2;_fs_nx:1,2,4c;_fs_nx_noop:1,2,3c\n"
21
  "X-Poedit-SearchPath-0: .\n"
22
  "X-Poedit-SearchPathExcluded-0: *.js\n"
23
  "X-Poedit-SourceCharset: UTF-8\n"
24
 
25
+ #: includes/i18n.php:37
 
 
 
 
 
 
 
 
26
  msgid "Account"
27
  msgstr "חשבון"
28
 
29
+ #: includes/i18n.php:38
30
  msgid "Add On"
31
+ msgstr "הרחבה"
32
 
33
+ #: includes/i18n.php:39
34
  msgid "Contact Us"
35
  msgstr "יצירת קשר"
36
 
37
+ #: includes/i18n.php:40
38
  msgid "Contact Support"
39
  msgstr "צור קשר"
40
 
41
+ #: includes/i18n.php:41
42
  msgid "Change Ownership"
43
  msgstr "עדכון בעלות"
44
 
45
+ #: includes/i18n.php:42
46
  msgid "Support"
47
  msgstr "תמיכה"
48
 
49
+ #: includes/i18n.php:43
50
  msgid "Support Forum"
51
  msgstr "פורום תמיכה"
52
 
53
+ #: includes/i18n.php:44
54
  msgid "Add Ons"
55
+ msgstr "הרחבות"
56
 
57
+ #: includes/i18n.php:45
58
  msgctxt "verb"
59
  msgid "Upgrade"
60
  msgstr "שדרג"
61
 
62
+ #: includes/i18n.php:46
63
  msgid "Awesome"
64
  msgstr "אדיר"
65
 
66
+ #: includes/i18n.php:47
67
  msgctxt "noun"
68
  msgid "Pricing"
69
  msgstr "מחירון"
70
 
71
+ #: includes/i18n.php:48
72
  msgctxt "noun"
73
  msgid "Price"
74
  msgstr "מחיר"
75
 
76
+ #: includes/i18n.php:49
77
  msgid "Unlimited Updates"
78
  msgstr "עדכונים ללא הגבלה"
79
 
80
+ #: includes/i18n.php:50
81
  msgctxt "verb"
82
  msgid "Downgrade"
83
  msgstr "שנמך"
84
 
85
+ #: includes/i18n.php:51
86
+ msgctxt "verb"
87
+ msgid "Cancel Subscription"
88
+ msgstr "Cancel Subscription"
89
+
90
+ #: includes/i18n.php:52
91
  msgid "Cancel Trial"
92
  msgstr "ביט"
93
 
94
+ #: includes/i18n.php:53
95
  msgid "Free Trial"
96
  msgstr "ניסיון חינם"
97
 
98
+ #: includes/i18n.php:54
99
  msgid "Start my free %s"
100
  msgstr "התחל את %s הניסיון שלי"
101
 
102
+ #: includes/i18n.php:55
103
  msgid "No commitment for %s - cancel anytime"
104
+ msgstr "No commitment for %s - cancel anytime"
105
 
106
+ #: includes/i18n.php:56
107
  msgid "After your free %s, pay as little as %s"
108
+ msgstr "After your free %s, pay as little as %s"
109
 
110
+ #: includes/i18n.php:57
111
  msgid "Details"
112
  msgstr "פרטים"
113
 
114
+ #: includes/i18n.php:58
115
  msgid "Account Details"
116
  msgstr "פרטי חשבון"
117
 
118
+ #: includes/i18n.php:59
119
  msgctxt "verb"
120
  msgid "Delete"
121
  msgstr "מחק"
122
 
123
+ #: includes/i18n.php:60
124
  msgctxt "verb"
125
  msgid "Show"
126
  msgstr "הצג"
127
 
128
+ #: includes/i18n.php:61
129
  msgctxt "verb"
130
  msgid "Hide"
131
  msgstr "הסתר"
132
 
133
+ #: includes/i18n.php:62
134
  msgctxt "verb"
135
  msgid "Edit"
136
  msgstr "ערוך"
137
 
138
+ #: includes/i18n.php:63
139
  msgctxt "verb"
140
  msgid "Update"
141
+ msgstr "עדכן"
142
 
143
+ #: includes/i18n.php:64
144
  msgid "Date"
145
  msgstr "תאריך"
146
 
147
+ #: includes/i18n.php:65
148
  msgid "Amount"
149
  msgstr "סכום"
150
 
151
+ #: includes/i18n.php:66
152
  msgid "Invoice"
153
  msgstr "חשבונית"
154
 
155
+ #: includes/i18n.php:67
156
  msgid "Billing"
157
  msgstr "בילינג"
158
 
159
+ #: includes/i18n.php:68
160
  msgid "Payments"
161
  msgstr "תשלומים"
162
 
163
+ #: includes/i18n.php:69
164
  msgid "Delete Account"
165
  msgstr "מחיקת חשבון"
166
 
167
+ #: includes/i18n.php:70
168
  msgctxt "as close a window"
169
  msgid "Dismiss"
170
  msgstr "סגירה"
171
 
172
+ #: includes/i18n.php:71
173
  msgctxt "as product pricing plan"
174
  msgid "Plan"
175
  msgstr "חבילה"
176
 
177
+ #: includes/i18n.php:72
178
  msgid "Change Plan"
179
  msgstr "שינוי חבילה"
180
 
181
+ #: includes/i18n.php:73
182
  msgctxt "as download professional version"
183
  msgid "Download %s Version"
184
+ msgstr "הורד גרסת %s"
185
 
186
+ #: includes/i18n.php:74
187
  msgctxt "as download professional version now"
188
  msgid "Download %s version now"
189
+ msgstr "הורד עכשיו גרסת %s"
190
 
191
+ #: includes/i18n.php:75
192
  msgctxt "as download latest version"
193
  msgid "Download Latest"
194
  msgstr "הורד גרסה אחרונה"
195
 
196
+ #: includes/i18n.php:76
197
  msgctxt "E.g. you have a professional license."
198
  msgid "You have a %s license."
199
+ msgstr "יש לך רישיון %s."
200
 
201
+ #: includes/i18n.php:77
202
  msgid "New"
203
  msgstr "חדש"
204
 
205
+ #: includes/i18n.php:78
206
  msgid "Free"
207
  msgstr "חינם"
208
 
209
+ #: includes/i18n.php:79
210
  msgctxt "as trial plan"
211
  msgid "Trial"
212
  msgstr "ניסיון"
213
 
214
+ #: includes/i18n.php:80
215
  msgctxt "as starting a trial plan"
216
  msgid "Start Trial"
217
+ msgstr "התחל תקופת ניסיון"
218
 
219
+ #: includes/i18n.php:81
220
  msgctxt "verb"
221
  msgid "Purchase"
222
  msgstr "רכישה"
223
 
224
+ #: includes/i18n.php:82
225
  msgid "Purchase License"
226
  msgstr "קניית רישיון"
227
 
228
+ #: includes/i18n.php:83
229
  msgctxt "verb"
230
  msgid "Buy"
231
  msgstr "קנייה"
232
 
233
+ #: includes/i18n.php:84
234
  msgid "Buy License"
235
  msgstr "קניית רישיון"
236
 
237
+ #: includes/i18n.php:85
238
  msgid "Single Site License"
239
  msgstr "רשיון לאתר אחד"
240
 
241
+ #: includes/i18n.php:86
242
  msgid "Unlimited Licenses"
243
  msgstr "רשיונות ללא הגבלה"
244
 
245
+ #: includes/i18n.php:87
246
  msgid "Up to %s Sites"
247
  msgstr "עד %s אתרים"
248
 
249
+ #: includes/i18n.php:88
250
  msgid "%sRenew your license now%s to access version %s features and support."
251
+ msgstr "%sRenew your license now%s to access version %s features and support."
252
 
253
+ #: includes/i18n.php:89
254
+ msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
255
+ msgstr "Enter the email address you've used for the upgrade below and we will resend you the license key."
 
 
256
 
257
+ #: includes/i18n.php:90
258
  msgctxt "e.g. Professional Plan"
259
  msgid "%s Plan"
260
+ msgstr "חבילה %s"
261
 
262
+ #: includes/i18n.php:91
263
  msgid "You are just one step away - %s"
264
+ msgstr "You are just one step away - %s"
265
 
266
+ #: includes/i18n.php:92
267
  msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
268
  msgid "Complete \"%s\" Activation Now"
269
+ msgstr "השלם הפעלת \"%s\" עכשיו"
270
 
271
+ #: includes/i18n.php:94
272
  msgid "We made a few tweaks to the plugin, %s"
273
  msgstr "ביצענו מספר שינויים לתוסף, %s"
274
 
275
+ #: includes/i18n.php:95
276
  msgid "Opt-in to make \"%s\" Better!"
277
+ msgstr "Opt-in to make \"%s\" Better!"
278
 
279
+ #: includes/i18n.php:96
280
  msgid "Error"
281
  msgstr "שגיאה"
282
 
283
+ #: includes/i18n.php:97
284
+ msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
285
+ msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
 
 
286
 
287
+ #: includes/i18n.php:100
288
  msgctxt "as expiration date"
289
  msgid "Expiration"
290
  msgstr "תפוגה"
291
 
292
+ #: includes/i18n.php:101
293
  msgctxt "as software license"
294
  msgid "License"
295
  msgstr "רישיון"
296
 
297
+ #: includes/i18n.php:102
298
  msgid "not verified"
299
  msgstr "לא מאומת"
300
 
301
+ #: includes/i18n.php:103
302
  msgid "Verify Email"
303
  msgstr "אמת כתובת דוא\"ל"
304
 
305
+ #: includes/i18n.php:104
306
  msgctxt "e.g. expires in 2 months"
307
  msgid "Expires in %s"
308
+ msgstr "פג תוקף בעוד %s"
309
 
310
+ #: includes/i18n.php:105
311
  msgctxt "e.g. auto renews in 2 months"
312
  msgid "Auto renews in %s"
313
+ msgstr "עדכן אוטומטית בעוד %s"
314
 
315
+ #: includes/i18n.php:106
316
  msgid "No expiration"
317
  msgstr "ללא תפוגה"
318
 
319
+ #: includes/i18n.php:107
320
  msgid "Expired"
321
  msgstr "פג תוקף"
322
 
323
+ #: includes/i18n.php:108
324
  msgid "Cancelled"
325
  msgstr "בוטל"
326
 
327
+ #: includes/i18n.php:109
328
  msgctxt "e.g. In 2 hours"
329
  msgid "In %s"
330
  msgstr "בעוד %s"
331
 
332
+ #: includes/i18n.php:110
333
  msgctxt "e.g. 2 min ago"
334
  msgid "%s ago"
335
+ msgstr "לפני %s"
336
 
337
+ #: includes/i18n.php:112
338
+ msgid "%s or higher"
339
+ msgstr "%s ומעלה"
340
+
341
+ #: includes/i18n.php:113
342
  msgctxt "as plugin version"
343
  msgid "Version"
344
  msgstr "גרסה"
345
 
346
+ #: includes/i18n.php:114
347
  msgid "Name"
348
  msgstr "שם"
349
 
350
+ #: includes/i18n.php:115
351
  msgid "Email"
352
  msgstr "דוא\"ל"
353
 
354
+ #: includes/i18n.php:116
355
  msgid "Email address"
356
  msgstr "כתובת דוא\"ל"
357
 
358
+ #: includes/i18n.php:117
359
  msgid "Verified"
360
  msgstr "מאומת"
361
 
362
+ #: includes/i18n.php:118
363
+ msgid "Module"
364
+ msgstr "מודול"
365
+
366
+ #: includes/i18n.php:119
367
+ msgid "Module Type"
368
+ msgstr "סוג מודול"
369
+
370
+ #: includes/i18n.php:120
371
  msgid "Plugin"
372
  msgstr "תוסף"
373
 
374
+ #: includes/i18n.php:121
375
  msgid "Plugins"
376
  msgstr "תוספים"
377
 
378
+ #: includes/i18n.php:122
379
+ msgid "Theme"
380
+ msgstr "תבנית"
381
+
382
+ #: includes/i18n.php:123
383
  msgid "Themes"
384
  msgstr "תבניות"
385
 
386
+ #: includes/i18n.php:124
387
  msgctxt "as file/folder path"
388
  msgid "Path"
389
+ msgstr "נתיב"
390
 
391
+ #: includes/i18n.php:125
392
  msgid "Title"
393
  msgstr "כותרת"
394
 
395
+ #: includes/i18n.php:126
396
  msgid "Free version"
397
  msgstr "גירסה חינאמית"
398
 
399
+ #: includes/i18n.php:127
400
  msgid "Premium version"
401
  msgstr "גירסת פרימיום"
402
 
403
+ #: includes/i18n.php:128
404
  msgctxt "as WP plugin slug"
405
  msgid "Slug"
406
+ msgstr "מזהה כתובת"
407
 
408
+ #: includes/i18n.php:129
409
  msgid "ID"
410
  msgstr "מזהה"
411
 
412
+ #: includes/i18n.php:130
413
  msgid "Users"
414
  msgstr "משתמשים"
415
 
416
+ #: includes/i18n.php:131
417
  msgid "Plugin Installs"
418
  msgstr "התקנות תוסף"
419
 
420
+ #: includes/i18n.php:132
421
+ msgid "%s Installs"
422
+ msgstr "%s התקנות"
423
+
424
+ #: includes/i18n.php:133
425
  msgctxt "like websites"
426
  msgid "Sites"
427
  msgstr "אתרים"
428
 
429
+ #: includes/i18n.php:134
430
  msgid "User ID"
431
  msgstr "מזהה משתמש"
432
 
433
+ #: includes/i18n.php:135
434
  msgid "Site ID"
435
  msgstr "מזהה אתר"
436
 
437
+ #: includes/i18n.php:136
438
  msgid "Public Key"
439
  msgstr "מפתח פומבי"
440
 
441
+ #: includes/i18n.php:137
442
  msgid "Secret Key"
443
  msgstr "מפתח סודי"
444
 
445
+ #: includes/i18n.php:138
446
  msgctxt "as secret encryption key missing"
447
  msgid "No Secret"
448
  msgstr "אין מפתח סודי"
449
 
450
+ #: includes/i18n.php:139
451
  msgid "No ID"
452
  msgstr "אין מזהה"
453
 
454
+ #: includes/i18n.php:140
455
  msgctxt "as synchronize license"
456
  msgid "Sync License"
457
  msgstr "סינכרן רישיון"
458
 
459
+ #: includes/i18n.php:141
460
  msgctxt "as synchronize"
461
  msgid "Sync"
462
  msgstr "סינכרון"
463
 
464
+ #: includes/i18n.php:142
465
  msgid "Activate License"
466
  msgstr "הפעלת רישיון"
467
 
468
+ #: includes/i18n.php:143
469
  msgid "Activate Free Version"
470
  msgstr "הפעלת גירסה חינאמית"
471
 
472
+ #: includes/i18n.php:144
473
+ msgid "Please enter the license key that you received in the email right after the purchase:"
474
+ msgstr "Please enter the license key that you received in the email right after the purchase:"
 
 
475
 
476
+ #: includes/i18n.php:145
477
  msgid "Activating license..."
478
  msgstr "מפעיל רישיון..."
479
 
480
+ #: includes/i18n.php:146
481
  msgid "Change License"
482
  msgstr "שינוי רישיון"
483
 
484
+ #: includes/i18n.php:147
485
  msgid "Update License"
486
  msgstr "עדכון רישיון"
487
 
488
+ #: includes/i18n.php:148
489
  msgid "Deactivate License"
490
  msgstr "שיחרור רישיון"
491
 
492
+ #: includes/i18n.php:149
493
  msgid "Activate"
494
  msgstr "הפעלה"
495
 
496
+ #: includes/i18n.php:150
497
  msgid "Deactivate"
498
  msgstr "כיבוי"
499
 
500
+ #: includes/i18n.php:151
501
  msgid "Skip & Deactivate"
502
  msgstr "דלג והמשך כיבוי"
503
 
504
+ #: includes/i18n.php:152
505
+ msgid "Skip & %s"
506
+ msgstr "דלג ו%s"
507
+
508
+ #: includes/i18n.php:153
509
  msgid "No - just deactivate"
510
  msgstr "לא - פשוט כבה"
511
 
512
+ #: includes/i18n.php:154
513
  msgid "Yes - do your thing"
514
  msgstr "כן - בצעו את מה שצריך"
515
 
516
+ #: includes/i18n.php:155
517
  msgctxt "active mode"
518
  msgid "Active"
519
  msgstr "מופעל"
520
 
521
+ #: includes/i18n.php:156
522
  msgctxt "is active mode?"
523
  msgid "Is Active"
524
  msgstr "האם פעיל"
525
 
526
+ #: includes/i18n.php:157
527
  msgid "Install Now"
528
  msgstr "התקן עכשיו"
529
 
530
+ #: includes/i18n.php:158
531
  msgid "Install Update Now"
532
  msgstr "התקן עדכון במיידי"
533
 
534
+ #: includes/i18n.php:159
535
  msgid "More information about %s"
536
+ msgstr "מידע נוסף אודות %s"
537
 
538
+ #: includes/i18n.php:160
539
  msgid "Localhost"
540
  msgstr "שרת לוקאלי"
541
 
542
+ #: includes/i18n.php:161
543
  msgctxt "as activate Professional plan"
544
  msgid "Activate %s Plan"
545
+ msgstr "הפעל חבילה %s"
546
 
547
+ #: includes/i18n.php:162
548
  msgctxt "as 5 licenses left"
549
  msgid "%s left"
550
  msgstr "נשארו %s"
551
 
552
+ #: includes/i18n.php:163
553
  msgid "Last license"
554
  msgstr "רישיון אחרון"
555
 
556
+ #: includes/i18n.php:164
557
  msgid "What is your %s?"
558
+ msgstr "מה ה%s שלך?"
559
 
560
+ #: includes/i18n.php:165
561
  msgid "Activate this add-on"
562
+ msgstr "הפעל את ההרחבה"
563
 
564
+ #: includes/i18n.php:166
565
+ 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?"
566
+ 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?"
 
 
 
567
 
568
+ #: includes/i18n.php:167
569
+ 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?"
570
+ 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?"
 
 
 
 
571
 
572
+ #: includes/i18n.php:168
573
+ 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?"
574
+ 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?"
 
 
575
 
576
+ #: includes/i18n.php:169
577
+ msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
578
+ msgstr "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
 
 
579
 
580
+ #: includes/i18n.php:170
581
+ msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
582
+ msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?"
 
 
583
 
584
+ #: includes/i18n.php:171
585
+ msgid "You can still enjoy all %s features but you will not have access to plugin updates and support."
586
+ msgstr "You can still enjoy all %s features but you will not have access to plugin updates and support."
 
 
587
 
588
+ #: includes/i18n.php:172
589
+ msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
590
+ msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
 
 
591
 
592
+ #: includes/i18n.php:173
593
  msgid "Are you sure you want to proceed?"
594
  msgstr "האם את/ה בטוח רוצה להמשיך?"
595
 
596
+ #: includes/i18n.php:176
597
  msgid "Add Ons for %s"
598
+ msgstr "הרחבות עבור %s"
599
 
600
+ #: includes/i18n.php:177
601
+ 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."
602
+ 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."
 
 
603
 
604
+ #: includes/i18n.php:179
605
  msgid "Anonymous feedback"
606
  msgstr "פידבק אנונימי"
607
 
608
+ #: includes/i18n.php:180
609
  msgid "Quick feedback"
610
  msgstr "פידבק זריז"
611
 
612
+ #: includes/i18n.php:181
613
  msgid "If you have a moment, please let us know why you are deactivating"
614
+ msgstr "If you have a moment, please let us know why you are deactivating"
615
 
616
+ #: includes/i18n.php:182
617
  msgid "Yes - Deactivate"
618
  msgstr "כן - "
619
 
620
+ #: includes/i18n.php:183
621
  msgid "Submit & Deactivate"
622
  msgstr "שלח וכבה"
623
 
624
+ #: includes/i18n.php:184
625
  msgid "Cancel"
626
  msgstr "בטל"
627
 
628
+ #: includes/i18n.php:185
629
  msgid "I no longer need the plugin"
630
  msgstr "אין לי צורך יותר בתוסף"
631
 
632
+ #: includes/i18n.php:186
633
  msgid "I found a better plugin"
634
  msgstr "מצאתי תוסף טוב יותר"
635
 
636
+ #: includes/i18n.php:187
637
  msgid "I only needed the plugin for a short period"
638
  msgstr "השתמשתי בתוסף לתקופה קצרה"
639
 
640
+ #: includes/i18n.php:188
641
  msgid "The plugin broke my site"
642
  msgstr "התוסף הרס לי את האתר"
643
 
644
+ #: includes/i18n.php:189
645
  msgid "The plugin suddenly stopped working"
646
  msgstr "התוסף לפתע הפסיק לעבוד"
647
 
648
+ #: includes/i18n.php:190
649
  msgid "I can't pay for it anymore"
650
  msgstr "אני לא יכול/ה להמשיך לשלם על זה"
651
 
652
+ #: includes/i18n.php:191
653
  msgid "It's a temporary deactivation. I'm just debugging an issue."
654
  msgstr "כיבוי זמני לשם דיבאג."
655
 
656
+ #: includes/i18n.php:192
657
  msgctxt ""
 
 
658
  msgid "Other"
659
  msgstr "אחר"
660
 
661
+ #: includes/i18n.php:194
662
  msgid "Kindly tell us the reason so we can improve."
663
  msgstr "אנא שתף את הסיבה כדי שנוכל להשתפר."
664
 
665
+ #: includes/i18n.php:195
666
  msgid "What's the plugin's name?"
667
  msgstr "מהו שם התוסף?"
668
 
669
+ #: includes/i18n.php:196
670
  msgid "What price would you feel comfortable paying?"
671
  msgstr "מה המחיר שכן תרגיש\\י בנוח לשלם?"
672
 
673
+ #: includes/i18n.php:197
674
  msgid "I couldn't understand how to make it work"
675
  msgstr "לא הצלחתי להבין איך לגרום לזה לעבוד"
676
 
677
+ #: includes/i18n.php:198
678
+ msgid "The plugin is great, but I need specific feature that you don't support"
 
679
  msgstr "התוסף מעולה, אבל אני צריכ\\ה פיצ'ר ספציפי שלא נתמך"
680
 
681
+ #: includes/i18n.php:199
682
  msgid "The plugin is not working"
683
  msgstr "התוסף לא עובד"
684
 
685
+ #: includes/i18n.php:200
686
  msgid "It's not what I was looking for"
687
  msgstr "חיפשתי משהו אחר"
688
 
689
+ #: includes/i18n.php:201
690
  msgid "The plugin didn't work as expected"
691
  msgstr "התוסף לא עבד כמצופה"
692
 
693
+ #: includes/i18n.php:202
694
  msgid "What feature?"
695
  msgstr "איזה פיטצ'ר?"
696
 
697
+ #: includes/i18n.php:203
698
  msgid "Kindly share what didn't work so we can fix it for future users..."
699
  msgstr "אנא שתפ\\י מה לא עבד כדי שנוכל לתקן זאת עבור משתמשים עתידיים..."
700
 
701
+ #: includes/i18n.php:204
702
  msgid "What you've been looking for?"
703
  msgstr "מה חיפשת?"
704
 
705
+ #: includes/i18n.php:205
706
  msgid "What did you expect?"
707
  msgstr "למה ציפית?"
708
 
709
+ #: includes/i18n.php:206
710
  msgid "The plugin didn't work"
711
  msgstr "התוסף לא עבד"
712
 
713
+ #: includes/i18n.php:207
714
  msgid "I don't like to share my information with you"
715
  msgstr "אני לא אוהב את הרעיון של שיתוף מידע איתכם"
716
 
717
+ #: includes/i18n.php:208
718
+ msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
 
 
719
  msgstr "אולי פספסת את זה אבל אינך חייב\\ת לשתף כל מידע איתנו, ביכולתך %s על שיתוף המידע."
720
 
721
+ #: includes/i18n.php:212
722
  msgctxt "greeting"
723
  msgid "Hey %s,"
724
  msgstr "היי %s,"
725
 
726
+ #: includes/i18n.php:213
727
  msgctxt "a greeting. E.g. Thanks John!"
728
  msgid "Thanks %s!"
729
  msgstr "תודה %s!"
730
 
731
+ #: includes/i18n.php:214
732
+ msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
733
+ msgstr "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
 
 
734
 
735
+ #: includes/i18n.php:215
736
+ 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."
737
+ 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."
 
 
 
738
 
739
+ #: includes/i18n.php:216
740
+ 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."
741
+ 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."
 
 
742
 
743
+ #: includes/i18n.php:217
744
  msgid "complete the install"
745
+ msgstr "השלם התקנה"
746
 
747
+ #: includes/i18n.php:218
748
  msgid "start the trial"
749
+ msgstr "התחל תקופת ניסיון"
750
 
751
+ #: includes/i18n.php:219
752
+ msgid "Thanks for purchasing %s! To get started, please enter your license key:"
753
+ msgstr "Thanks for purchasing %s! To get started, please enter your license key:"
 
754
 
755
+ #: includes/i18n.php:220
756
+ msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
757
+ msgstr "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
 
 
758
 
759
+ #: includes/i18n.php:221
760
  msgid "What permissions are being granted?"
761
  msgstr "מהן ההרשאות המוענקות?"
762
 
763
+ #: includes/i18n.php:222
764
  msgid "Your Profile Overview"
765
  msgstr "פרטים כלליים על הפרופיל"
766
 
767
+ #: includes/i18n.php:223
768
  msgid "Name and email address"
769
  msgstr "שם וכתובת דו\"אל"
770
 
771
+ #: includes/i18n.php:224
772
  msgid "Your Site Overview"
773
  msgstr "פרטים כלליים על האתר"
774
 
775
+ #: includes/i18n.php:225
776
  msgid "Site URL, WP version, PHP info, plugins & themes"
777
  msgstr "כתובת אתר, גרסת וורדפרס, פרטי PHP, תוספים ותבניות"
778
 
779
+ #: includes/i18n.php:226
780
  msgid "Current Plugin Events"
781
  msgstr "שינויי מצב בתוסף הנוכחי"
782
 
783
+ #: includes/i18n.php:227
784
  msgid "Activation, deactivation and uninstall"
785
  msgstr "הפעלה, כיבוי והסרה"
786
 
787
+ #: includes/i18n.php:228
788
  msgid "Plugins & Themes"
789
  msgstr "תוספים ותבניות"
790
 
791
+ #: includes/i18n.php:229
792
  msgid "Titles, versions and state."
793
  msgstr "שמות, גרסאות וסטאטוס."
794
 
795
+ #: includes/i18n.php:230
796
  msgid "Admin Notices"
797
+ msgstr "התראות מנהל"
798
 
799
+ #: includes/i18n.php:231
800
  msgid "Newsletter"
801
  msgstr "ניוסלטר"
802
 
803
+ #: includes/i18n.php:232
804
  msgid "Updates, announcements, marketing, no spam"
805
+ msgstr "Updates, announcements, marketing, no spam"
806
 
807
+ #: includes/i18n.php:233
808
  msgid "Privacy Policy"
809
  msgstr "מדיניות פרטיות"
810
 
811
+ #: includes/i18n.php:234
812
  msgid "Terms of Service"
813
  msgstr "תנאי השירות"
814
 
815
+ #: includes/i18n.php:235
816
  msgctxt "as activating plugin"
817
  msgid "Activating"
818
  msgstr "מפעיל"
819
 
820
+ #: includes/i18n.php:236
821
  msgctxt "as in the process of sending an email"
822
  msgid "Sending email"
823
  msgstr "שולח דוא\"ל"
824
 
825
+ #: includes/i18n.php:237
826
  msgctxt "button label"
827
  msgid "Allow & Continue"
828
  msgstr "אפשר\\י והמשכ\\י"
829
 
830
+ #: includes/i18n.php:238
831
  msgctxt "button label"
832
  msgid "Agree & Activate License"
833
  msgstr "הסכמה והפעלת רישיון"
834
 
835
+ #: includes/i18n.php:239
836
  msgctxt "verb"
837
  msgid "Skip"
838
  msgstr "דלג"
839
 
840
+ #: includes/i18n.php:240
841
  msgid "Click here to use the plugin anonymously"
842
+ msgstr "Click here to use the plugin anonymously"
843
 
844
+ #: includes/i18n.php:241
845
  msgid "Re-send activation email"
846
  msgstr "שליחה חוזרת של מייל האקטיבציה"
847
 
848
+ #: includes/i18n.php:242
849
  msgid "License key"
850
  msgstr "מפתח רישיון"
851
 
852
+ #: includes/i18n.php:243
853
  msgid "Send License Key"
854
  msgstr "שליחת מפתח רישיון"
855
 
856
+ #: includes/i18n.php:244
857
  msgid "Sending license key"
858
  msgstr "שולח מפתח רישיון"
859
 
860
+ #: includes/i18n.php:245
861
  msgid "Have a license key?"
862
  msgstr "האם ברשותך רישיון?"
863
 
864
+ #: includes/i18n.php:246
865
  msgid "Don't have a license key?"
866
  msgstr "האם אין ברשותך מפתח רישיון?"
867
 
868
+ #: includes/i18n.php:247
869
  msgid "Can't find your license key?"
870
  msgstr "האם אינך מוצא את מפתח הרישיון?"
871
 
872
+ #: includes/i18n.php:248
873
+ msgid "We couldn't find your email address in the system, are you sure it's the right address?"
874
+ msgstr "We couldn't find your email address in the system, are you sure it's the right address?"
 
 
875
 
876
+ #: includes/i18n.php:249
877
+ msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
878
+ msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?"
 
 
879
 
880
+ #: includes/i18n.php:250
881
  msgid "Opt In"
882
+ msgstr "Opt In"
883
 
884
+ #: includes/i18n.php:251
885
  msgid "Opt Out"
886
+ msgstr "Opt Out"
887
 
888
+ #: includes/i18n.php:252
889
  msgid "On second thought - I want to continue helping"
890
+ msgstr "במחשבה שנייה - אני רוצה להמשיך לעזור"
891
 
892
+ #: includes/i18n.php:253
893
  msgid "Opting out..."
894
+ msgstr "Opting out..."
895
 
896
+ #: includes/i18n.php:254
897
  msgid "Opting in..."
898
+ msgstr "Opting in..."
899
 
900
+ #: includes/i18n.php:255
901
+ msgid "We appreciate your help in making the %s better by letting us track some usage data."
902
+ msgstr "We appreciate your help in making the %s better by letting us track some usage data."
 
 
903
 
904
+ #: includes/i18n.php:256
905
+ 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."
906
+ 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."
 
 
 
907
 
908
+ #: includes/i18n.php:257
909
+ msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
910
+ msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
 
 
911
 
912
+ #: includes/i18n.php:261
913
  msgid "Screenshots"
914
  msgstr "צילומי מסך"
915
 
916
+ #: includes/i18n.php:262
917
  msgid "Click to view full-size screenshot %d"
918
+ msgstr "Click to view full-size screenshot %d"
919
 
920
+ #: includes/i18n.php:266
921
  msgid "Freemius Debug"
922
+ msgstr "Freemius Debug"
923
 
924
+ #: includes/i18n.php:267
925
  msgctxt "as turned on"
926
  msgid "On"
927
  msgstr "דלוק"
928
 
929
+ #: includes/i18n.php:268
930
  msgctxt "as turned off"
931
  msgid "Off"
932
  msgstr "כבוי"
933
 
934
+ #: includes/i18n.php:269
935
  msgctxt "as code debugging"
936
  msgid "Debugging"
937
  msgstr "דיבוג"
938
 
939
+ #: includes/i18n.php:270
940
  msgid "Freemius State"
941
+ msgstr "Freemius State"
942
 
943
+ #: includes/i18n.php:271
944
  msgctxt "as connection was successful"
945
  msgid "Connected"
946
  msgstr "מחובר"
947
 
948
+ #: includes/i18n.php:272
949
  msgctxt "as connection blocked"
950
  msgid "Blocked"
951
  msgstr "חסום"
952
 
953
+ #: includes/i18n.php:273
954
  msgctxt "as application program interface"
955
  msgid "API"
956
  msgstr "API"
957
 
958
+ #: includes/i18n.php:274
959
  msgctxt "as software development kit versions"
960
  msgid "SDK"
961
  msgstr "SDK"
962
 
963
+ #: includes/i18n.php:275
964
  msgctxt "as software development kit versions"
965
  msgid "SDK Versions"
966
  msgstr "גרסאות SDK"
967
 
968
+ #: includes/i18n.php:276
969
  msgctxt "as plugin folder path"
970
  msgid "Plugin Path"
971
+ msgstr "נתיב התוסף"
972
 
973
+ #: includes/i18n.php:277
974
  msgctxt "as sdk path"
975
  msgid "SDK Path"
976
  msgstr "מיקום SDK"
977
 
978
+ #: includes/i18n.php:278
979
  msgid "Add Ons of Plugin %s"
980
+ msgstr "הרחבות עבור %s"
981
 
982
+ #: includes/i18n.php:279
983
  msgid "Are you sure you want to delete all Freemius data?"
984
+ msgstr "Are you sure you want to delete all Freemius data?"
985
 
986
+ #: includes/i18n.php:280
987
  msgid "Actions"
988
  msgstr "פעולות"
989
 
990
+ #: includes/i18n.php:281
991
  msgid "Delete All Accounts"
992
  msgstr "מחיקת כל החשבונות"
993
 
994
+ #: includes/i18n.php:282
995
  msgid "Start Fresh"
996
  msgstr "התחל מחדש"
997
 
998
+ #: includes/i18n.php:283
999
  msgid "Clear API Cache"
1000
  msgstr "ניקוי מטמון ה-API"
1001
 
1002
+ #: includes/i18n.php:284
1003
  msgid "Sync Data From Server"
1004
  msgstr "סנכרון מידע מהשרת"
1005
 
1006
+ #: includes/i18n.php:285
1007
  msgid "Scheduled Crons"
1008
+ msgstr "Scheduled Crons"
1009
+
1010
+ #: includes/i18n.php:286
1011
+ msgid "Cron Type"
1012
+ msgstr "Cron Type"
1013
 
1014
+ #: includes/i18n.php:287
1015
  msgid "Plugins & Themes Sync"
1016
+ msgstr "Plugins & Themes Sync"
1017
+
1018
+ #: includes/i18n.php:288
1019
+ msgid "Licenses"
1020
+ msgstr "רישיונות"
1021
+
1022
+ #: includes/i18n.php:289
1023
+ msgid "Debug Log"
1024
+ msgstr "Debug Log"
1025
+
1026
+ #: includes/i18n.php:290
1027
+ msgid "All"
1028
+ msgstr "הכל"
1029
+
1030
+ #: includes/i18n.php:291
1031
+ msgid "File"
1032
+ msgstr "קובץ"
1033
 
1034
+ #: includes/i18n.php:292
1035
+ msgid "Function"
1036
+ msgstr "פונקציה"
1037
+
1038
+ #: includes/i18n.php:293
1039
+ msgid "Process ID"
1040
+ msgstr "Process ID"
1041
+
1042
+ #: includes/i18n.php:294
1043
+ msgid "Logger"
1044
+ msgstr "Logger"
1045
+
1046
+ #: includes/i18n.php:295
1047
+ msgid "Message"
1048
+ msgstr "הודעה"
1049
+
1050
+ #: includes/i18n.php:296
1051
+ msgid "Download"
1052
+ msgstr "הורדה"
1053
+
1054
+ #: includes/i18n.php:297
1055
+ msgid "Filter"
1056
+ msgstr "פילטר"
1057
+
1058
+ #: includes/i18n.php:298
1059
+ msgid "Type"
1060
+ msgstr "סוג"
1061
+
1062
+ #: includes/i18n.php:299
1063
+ msgid "All Types"
1064
+ msgstr "כל הסוגים"
1065
+
1066
+ #: includes/i18n.php:300
1067
+ msgid "All Requests"
1068
+ msgstr "כל הבקשות"
1069
+
1070
+ #: includes/i18n.php:304
1071
  msgctxt "as congratulations"
1072
  msgid "Congrats"
1073
  msgstr "מזל טוב"
1074
 
1075
+ #: includes/i18n.php:305
1076
  msgctxt "exclamation"
1077
  msgid "Oops"
1078
  msgstr "אופס"
1079
 
1080
+ #: includes/i18n.php:306
1081
  msgctxt "interjection expressing joy or exuberance"
1082
  msgid "Yee-haw"
1083
+ msgstr "Yee-haw"
1084
 
1085
+ #: includes/i18n.php:307
1086
  msgctxt ""
 
 
1087
  msgid "W00t"
1088
+ msgstr "W00t"
1089
 
1090
+ #: includes/i18n.php:309
1091
  msgctxt "a positive response"
1092
  msgid "Right on"
1093
+ msgstr "מעולה"
1094
 
1095
+ #: includes/i18n.php:310
1096
  msgctxt ""
 
 
1097
  msgid "Hmm"
1098
  msgstr "הממ"
1099
 
1100
+ #: includes/i18n.php:312
1101
  msgid "O.K"
1102
  msgstr "אוקיי"
1103
 
1104
+ #: includes/i18n.php:313
1105
  msgctxt "exclamation"
1106
  msgid "Hey"
1107
  msgstr "היי"
1108
 
1109
+ #: includes/i18n.php:314
1110
  msgctxt "advance notice of something that will need attention."
1111
  msgid "Heads up"
1112
  msgstr "לתשמות לבך"
1113
 
1114
+ #: includes/i18n.php:319
1115
  msgid "Seems like you got the latest release."
1116
+ msgstr "Seems like you got the latest release."
1117
 
1118
+ #: includes/i18n.php:320
1119
  msgid "You are all good!"
1120
  msgstr "את\\ה מסודר!"
1121
 
1122
+ #: includes/i18n.php:321
1123
+ msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
1124
+ msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered."
 
 
1125
 
1126
+ #: includes/i18n.php:322
1127
+ msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
1128
+ msgstr "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
 
 
1129
 
1130
+ #: includes/i18n.php:323
1131
+ msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
1132
+ msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
 
 
1133
 
1134
+ #: includes/i18n.php:324
1135
  msgid "Your name was successfully updated."
1136
  msgstr "שמך עודכן בהצלחה."
1137
 
1138
+ #: includes/i18n.php:325
1139
  msgid "You have successfully updated your %s."
1140
+ msgstr "You have successfully updated your %s."
1141
 
1142
+ #: includes/i18n.php:326
1143
  msgid "Please provide your full name."
1144
  msgstr "נא למלא את שמך המלא."
1145
 
1146
+ #: includes/i18n.php:327
1147
+ msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
1148
+ msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
 
 
1149
 
1150
+ #: includes/i18n.php:328
1151
+ msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
1152
+ msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server."
 
 
1153
 
1154
+ #: includes/i18n.php:329
1155
  msgid "No credit card required"
1156
  msgstr "לא נדרש כרטיס אשראי"
1157
 
1158
+ #: includes/i18n.php:330
1159
  msgid "Premium plugin version was successfully activated."
1160
+ msgstr "Premium plugin version was successfully activated."
1161
 
1162
+ #: includes/i18n.php:331
1163
  msgid "The upgrade of %s was successfully completed."
1164
+ msgstr "The upgrade of %s was successfully completed."
1165
 
1166
+ #: includes/i18n.php:332
1167
  msgid "Your account was successfully activated with the %s plan."
1168
+ msgstr "חשבונך הופעל בהצלחה עם חבילת %s."
1169
 
1170
+ #: includes/i18n.php:333
1171
  msgid "Download the latest %s version now"
1172
  msgstr "הורדת גרסת ה-%s העדכנית - עכשיו"
1173
 
1174
+ #: includes/i18n.php:334
1175
  msgid "Please follow these steps to complete the upgrade"
1176
  msgstr "נא לבצע את הצעדים הבאים להשלמת השידרוג"
1177
 
1178
+ #: includes/i18n.php:335
1179
  msgid "Download the latest %s version"
1180
  msgstr "הורד\\י את גרסת ה-%s העדכנית"
1181
 
1182
+ #: includes/i18n.php:336
1183
+ msgid "Download the latest version"
1184
+ msgstr "הורד את הגרסה האחרונה"
1185
+
1186
+ #: includes/i18n.php:337
1187
  msgid "Deactivate the free version"
1188
  msgstr "כבה\\י את הגרסה החינאמית"
1189
 
1190
+ #: includes/i18n.php:338
1191
  msgid "Upload and activate the downloaded version"
1192
  msgstr "העלה\\י והפעיל\\י את הגרסה שהורדת"
1193
 
1194
+ #: includes/i18n.php:339
1195
  msgid "How to upload and activate?"
1196
  msgstr "איך להעלות ולהפעיל?"
1197
 
1198
+ #: includes/i18n.php:340
1199
  msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1200
  msgid "%s Add-on was successfully purchased."
1201
+ msgstr "ההרחבה %s נרכשה בהצלחה."
1202
 
1203
+ #: includes/i18n.php:342
1204
  msgid "Your %s Add-on plan was successfully upgraded."
1205
+ msgstr "חבילת ההרחבה %s שודרגה בהצלחה."
1206
 
1207
+ #: includes/i18n.php:343
1208
  msgid "Your email has been successfully verified - you are AWESOME!"
1209
+ msgstr "Your email has been successfully verified - you are AWESOME!"
1210
 
1211
+ #: includes/i18n.php:344
1212
  msgid "Your plan was successfully upgraded."
1213
+ msgstr "החבילה שודרגה בהצלחה."
1214
 
1215
+ #: includes/i18n.php:345
1216
  msgid "Your plan was successfully changed to %s."
1217
+ msgstr "החבילה עודכנה בהצלחה אל %s."
1218
 
1219
+ #: includes/i18n.php:346
1220
+ msgid "Your license has expired. You can still continue using the free plugin forever."
 
 
1221
  msgstr "פג תוקפו של הרישיון. עדיין ניתן להמשיך להשתמש בגרסה החינאמית של התוסף ללא מגבלת זמן."
1222
 
1223
+ #: includes/i18n.php:347
1224
+ msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
 
 
1225
  msgstr "רשיונך בוטל. אם לדעתך זו טעות, נא ליצור קשר עם התמיכה."
1226
 
1227
+ #: includes/i18n.php:348
1228
  msgid "Your trial has been successfully started."
1229
  msgstr "הניסיון שלך הופעל בהצלחה."
1230
 
1231
+ #: includes/i18n.php:349
1232
  msgid "Your license was successfully activated."
1233
  msgstr "הרישיון הופעל בהצלחה."
1234
 
1235
+ #: includes/i18n.php:350
1236
  msgid "It looks like your site currently doesn't have an active license."
1237
  msgstr "נראה לאתר עדיין אין רישיון פעיל."
1238
 
1239
+ #: includes/i18n.php:351
1240
+ msgid "Your license was successfully deactivated, you are back to the %s plan."
1241
+ msgstr "רישיונך נותק בהצלחה, חזרת לחבילת %s"
 
1242
 
1243
+ #: includes/i18n.php:352
1244
  msgid "It looks like the license deactivation failed."
1245
  msgstr "נראה שניתוק הרישיון נכשל."
1246
 
1247
+ #: includes/i18n.php:353
1248
  msgid "It looks like the license could not be activated."
1249
  msgstr "נראה שלא ניתן להפעיל את הרישיון."
1250
 
1251
+ #: includes/i18n.php:354
1252
  msgid "Error received from the server:"
1253
  msgstr "הוחזרה שגיאה מהשרת:"
1254
 
1255
+ #: includes/i18n.php:355
1256
+ msgid "Your trial has expired. You can still continue using all our free features."
 
1257
  msgstr "תקופת הניסיון נגמרה. ביכולתך להמשיך להשתמש בכל הפיטצ'רים החינאמיים."
1258
 
1259
+ #: includes/i18n.php:356
1260
+ msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
1261
+ msgstr "Your plan was successfully downgraded. Your %s plan license will expire in %s."
 
 
1262
 
1263
+ #: includes/i18n.php:357
1264
+ msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
1265
+ msgstr "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
 
 
1266
 
1267
+ #: includes/i18n.php:358
1268
+ msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
1269
+ msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
 
 
1270
 
1271
+ #: includes/i18n.php:359
1272
  msgid "Your %s free trial was successfully cancelled."
1273
+ msgstr "תקופת הניסיון החינמית של %s בוטלה בהצלחה."
1274
 
1275
+ #: includes/i18n.php:360
1276
  msgctxt "%s - numeric version number"
1277
  msgid "Version %s was released."
1278
  msgstr "גרסה %s הושקה."
1279
 
1280
+ #: includes/i18n.php:361
1281
  msgid "Please download %s."
1282
+ msgstr "נא להוריד את %s."
1283
 
1284
+ #: includes/i18n.php:362
1285
  msgctxt "%s - plan name, as the latest professional version here"
1286
  msgid "the latest %s version here"
1287
  msgstr "גרסת ה-%s האחרונה כאן"
1288
 
1289
+ #: includes/i18n.php:364
1290
+ msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
1291
+ msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
 
 
1292
 
1293
+ #: includes/i18n.php:365
1294
  msgctxt "call to action"
1295
  msgid "Start free trial"
1296
  msgstr "התחלת ניסיון חינם"
1297
 
1298
+ #: includes/i18n.php:366
1299
  msgid "Starting trial"
1300
+ msgstr "מתחיל תקופת ניסיון"
1301
 
1302
+ #: includes/i18n.php:367
1303
  msgid "Please wait"
1304
+ msgstr "נא להמתין"
1305
 
1306
+ #: includes/i18n.php:368
1307
+ msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
1308
+ msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
 
 
1309
 
1310
+ #: includes/i18n.php:369
1311
  msgid "You already utilized a trial before."
1312
  msgstr "הניסיון כבר נוצל בעבר."
1313
 
1314
+ #: includes/i18n.php:370
1315
  msgid "You are already running the plugin in a trial mode."
1316
  msgstr "התוסף כבר עכשיו בתקופת ניסיון."
1317
 
1318
+ #: includes/i18n.php:371
1319
  msgid "Plan %s do not exist, therefore, can't start a trial."
1320
+ msgstr "החבילה %s אינה קיימת, לכן, לא ניתן להתחיל תקופת ניסיון."
1321
 
1322
+ #: includes/i18n.php:372
1323
  msgid "Plan %s does not support a trial period."
1324
+ msgstr "תוכנית %s אינה תומכת בתקופת ניסיון."
1325
 
1326
+ #: includes/i18n.php:373
1327
  msgid "None of the plugin's plans supports a trial period."
1328
+ msgstr "אף אחת מהחבילות אינה מאפשרת תקופת ניסיון."
1329
 
1330
+ #: includes/i18n.php:374
1331
+ msgid "Unexpected API error. Please contact the plugin's author with the following error."
 
 
1332
  msgstr "שגיאת API בלתי צפוייה. נא לפנות למפתח התוסף עם השגיאה הבאה."
1333
 
1334
+ #: includes/i18n.php:375
1335
  msgid "No commitment for %s days - cancel anytime!"
1336
+ msgstr "ללא התחייבות ל-%s ימין - בטלו בכל רגע!"
1337
 
1338
+ #: includes/i18n.php:376
1339
+ 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."
1340
+ 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."
 
 
 
1341
 
1342
+ #: includes/i18n.php:377
1343
  msgid "Couldn't activate %s."
1344
+ msgstr "לא ניתן להפעיל את %s."
1345
 
1346
+ #: includes/i18n.php:378
1347
  msgid "Please contact us with the following message:"
1348
  msgstr "אנא צור איתנו קשר יחד עם ההודעה הבאה:"
1349
 
1350
+ #: includes/i18n.php:379
1351
+ 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."
1352
+ 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."
 
 
1353
 
1354
+ #: includes/i18n.php:380
1355
  msgid "Please contact us here"
1356
  msgstr "אנא צור איתנו קשר כאן"
1357
 
1358
+ #: includes/i18n.php:381
1359
+ msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
1360
+ msgstr "שידרגתי את החשבון שלי אבל כשאני מנסה לבצע סנכרון לרישיון החבילה נשארת %s."
 
 
1361
 
1362
+ #: includes/i18n.php:384
1363
  msgid "From unknown reason, the API connectivity test failed."
1364
  msgstr "יש בעיית תקשורת ל-API מסיבה בלתי ברורה."
1365
 
1366
+ #: includes/i18n.php:385
1367
+ 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?"
 
 
1368
  msgstr "ככל הנראה זאת בעיה זמנית בצד שלנו. ברשותך, ורק כדי להיות בטוחים שזאת הבעיה, האם זה יהיה בסדר לבצע בדיקת תקשורת נוספת?"
1369
 
1370
+ #: includes/i18n.php:386
1371
+ 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."
1372
+ 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."
 
 
 
1373
 
1374
+ #: includes/i18n.php:387
1375
+ msgid "Disabled method(s):"
1376
+ msgstr "Disabled method(s):"
1377
+
1378
+ #: includes/i18n.php:388
1379
+ msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1380
  msgstr "מסיבה בלתי ברורה, CloudFlare, חומת האש שאנחנו משתמשים בה, חוסמת את התקשורת."
1381
 
1382
+ #: includes/i18n.php:389
1383
  msgctxt "as pluginX requires an access to our API"
1384
  msgid "%s requires an access to our API."
1385
  msgstr "%s מחייב גישה ל-API שלנו."
1386
 
1387
+ #: includes/i18n.php:391
1388
+ msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
1389
+ msgstr "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
 
 
1390
 
1391
+ #: includes/i18n.php:392
1392
  msgid "I don't know what is Squid or ACL, help me!"
1393
  msgstr "אין לי מושג מה זה Squid או ACL - אשמח לעזרה!"
1394
 
1395
+ #: includes/i18n.php393, includes/i18n.php:397
1396
+ 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."
1397
+ 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."
 
 
1398
 
1399
+ #: includes/i18n.php:394
1400
  msgid "I'm a system administrator"
1401
+ msgstr "אני מנהל מערכת"
1402
 
1403
+ #: includes/i18n.php:395
1404
+ msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again."
1405
+ msgstr "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again."
 
 
1406
 
1407
+ #: includes/i18n.php:396
1408
  msgid "I don't know what is cURL or how to install it, help me!"
1409
  msgstr "אין לי מושג מה זה cURL או איך להתקין אותו - אשמח לעזרה!"
1410
 
1411
+ #: includes/i18n.php:398
1412
+ 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."
1413
+ 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."
 
 
 
1414
 
1415
+ #: includes/i18n.php:399
1416
+ 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."
 
 
1417
  msgstr "זו בטח בעיה בצד שלנו ואנחנו נשמח לעזור כדי לפתור את העניין בהקדם האפשר, רק במידה ותאפשר\\י זאת."
1418
 
1419
+ #: includes/i18n.php:400
1420
+ msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
 
1421
  msgstr "מצטערים על חוסר הנעימות, אנחנו כאן כדי לעזור אם תאפשר\\י זאת."
1422
 
1423
+ #: includes/i18n.php:401
1424
  msgid "Yes - I'm giving you a chance to fix it"
1425
  msgstr "כן - אני נותן לך צ'אנס לתקן את זה"
1426
 
1427
+ #: includes/i18n.php:402
1428
+ 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."
1429
+ 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."
 
 
1430
 
1431
+ #: includes/i18n.php:403
1432
  msgid "Let's try your previous version"
1433
  msgstr "בוא ננסה את הגירסה הקודמת"
1434
 
1435
+ #: includes/i18n.php:404
1436
  msgid "Uninstall this version and install the previous one."
1437
  msgstr "הסר את הגרסה הנוכחית והתקן את הגרסה קודמת."
1438
 
1439
+ #: includes/i18n.php:405
1440
  msgid "That's exhausting, please deactivate"
1441
  msgstr "זה מתיש, אנא לכבות"
1442
 
1443
+ #: includes/i18n.php:406
1444
+ msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
1445
+ msgstr "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
 
 
1446
 
1447
+ #: includes/i18n.php:407
1448
+ 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."
1449
+ 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."
 
 
 
1450
 
1451
+ #: includes/i18n.php:408
1452
  msgctxt "%1s - plugin title, %2s - API domain"
1453
+ msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
1454
+ msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
 
 
1455
 
1456
+ #: includes/i18n.php:410
1457
+ msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
1458
+ msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
 
 
1459
 
1460
+ #: includes/i18n.php:413
1461
+ 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."
1462
+ 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."
 
 
 
 
1463
 
1464
+ #: includes/i18n.php:414
1465
+ msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
 
 
1466
  msgstr "תודה על אישור ביצוע החלפת הבעלות. הרגע נשלח מייל ל-%s כדי לקבל אישור סופי."
1467
 
1468
+ #: includes/i18n.php:415
1469
  msgid "%s is the new owner of the account."
1470
  msgstr "%s הינו הבעלים החד של חשבון זה."
1471
 
1472
+ #: includes/i18n.php:417
1473
  msgctxt "addonX cannot run without pluginY"
1474
  msgid "%s cannot run without %s."
1475
  msgstr "%s לא יכול לעבוד ללא %s."
1476
 
1477
+ #: includes/i18n.php:419
1478
  msgctxt "addonX cannot run..."
1479
  msgid "%s cannot run without the plugin."
1480
+ msgstr "ההרחבה %s אינה יכולה לפעול ללא התוסף."
1481
 
1482
+ #: includes/i18n.php:420
1483
  msgctxt "pluginX activation was successfully..."
1484
  msgid "%s activation was successfully completed."
1485
+ msgstr "הפעלת %s הושלמה בהצלחה."
1486
 
1487
+ #: includes/i18n.php:422
1488
  msgctxt "Plugin installer section title"
1489
  msgid "Features & Pricing"
1490
  msgstr "פיטצ'רים ומחירים"
1491
 
1492
+ #: includes/i18n.php:423
1493
  msgid "Add-on must be deployed to WordPress.org or Freemius."
1494
+ msgstr "Add-on must be deployed to WordPress.org or Freemius."
1495
 
1496
+ #: includes/i18n.php:424
1497
  msgid "Paid add-on must be deployed to Freemius."
1498
+ msgstr "Paid add-on must be deployed to Freemius."
1499
 
1500
+ #: includes/i18n.php:428
1501
+ msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
1502
+ msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
 
 
1503
 
1504
+ #: includes/i18n.php:429
1505
+ 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."
1506
+ 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."
 
 
 
1507
 
1508
+ #: includes/i18n.php:434
1509
  msgctxt "as every month"
1510
  msgid "Monthly"
1511
  msgstr "חודשי"
1512
 
1513
+ #: includes/i18n.php:435
1514
  msgctxt "as monthly period"
1515
  msgid "mo"
1516
+ msgstr "חודשים"
1517
 
1518
+ #: includes/i18n.php:436
1519
  msgctxt "as once a year"
1520
  msgid "Annual"
1521
  msgstr "שנתי"
1522
 
1523
+ #: includes/i18n.php:437
1524
  msgctxt "as once a year"
1525
  msgid "Annually"
1526
  msgstr "שנתי"
1527
 
1528
+ #: includes/i18n.php:438
1529
  msgctxt "as once a year"
1530
  msgid "Once"
1531
  msgstr "פעם אחת"
1532
 
1533
+ #: includes/i18n.php:439
1534
  msgctxt "as annual period"
1535
  msgid "year"
1536
  msgstr "שנה"
1537
 
1538
+ #: includes/i18n.php:440
1539
  msgid "Lifetime"
1540
  msgstr "לכל החיים"
1541
 
1542
+ #: includes/i18n.php:441
1543
  msgctxt "e.g. the best product"
1544
  msgid "Best"
1545
  msgstr "הכי טוב"
1546
 
1547
+ #: includes/i18n.php:442
1548
  msgctxt "e.g. billed monthly"
1549
  msgid "Billed %s"
1550
  msgstr "מחוייב על בסיס %s"
1551
 
1552
+ #: includes/i18n.php:443
1553
  msgctxt "as a discount of $5 or 10%"
1554
  msgid "Save %s"
1555
  msgstr "שמירת %s"
1556
 
1557
+ #: includes/i18n.php:445
1558
  msgid "View details"
1559
  msgstr "פרטים נוספים"
1560
 
1561
+ #: includes/i18n.php:449
1562
  msgctxt "button label"
1563
  msgid "Approve & Start Trial"
1564
+ msgstr "אשר והתחל תקופת ניסיון"
1565
 
1566
+ #: includes/i18n.php:451
1567
+ msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1568
+ msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
 
 
1569
 
1570
+ #: includes/i18n.php:453
1571
+ 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."
1572
+ 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."
 
 
 
 
1573
 
1574
+ #: includes/i18n.php:459
1575
  msgid "Business name"
1576
+ msgstr "שם עסק"
1577
 
1578
+ #: includes/i18n.php:460
1579
  msgid "Tax / VAT ID"
1580
+ msgstr "Tax / VAT ID"
1581
 
1582
+ #: includes/i18n.php:461
1583
  msgid "Address Line %d"
1584
+ msgstr "כתובת %s"
1585
 
1586
+ #: includes/i18n.php:462
1587
  msgid "Country"
1588
+ msgstr "מדינה"
1589
 
1590
+ #: includes/i18n.php:463
1591
  msgid "Select Country"
1592
+ msgstr "בחר מדינה"
1593
 
1594
+ #: includes/i18n.php:464
1595
  msgid "City"
1596
+ msgstr "עיר"
1597
 
1598
+ #: includes/i18n.php:465
1599
  msgid "Town"
1600
+ msgstr "כפר"
1601
 
1602
+ #: includes/i18n.php:466
1603
  msgid "State"
1604
+ msgstr "מחוז/מדינה"
1605
 
1606
+ #: includes/i18n.php:467
1607
  msgid "Province"
1608
+ msgstr "פרובינציה"
1609
 
1610
+ #: includes/i18n.php:468
1611
  msgid "ZIP / Postal Code"
1612
+ msgstr "מיקוד / תא דואר"
1613
+
1614
+ #: includes/i18n.php:473
1615
+ msgid "Installing plugin: %s"
1616
+ msgstr "Installing plugin: %s"
1617
+
1618
+ #: includes/i18n.php:474
1619
+ msgid "Automatic Installation"
1620
+ msgstr "Automatic Installation"
1621
+
1622
+ #: includes/i18n.php:476
1623
+ msgid "%s sec"
1624
+ msgstr "%s sec"
1625
+
1626
+ #: includes/i18n.php:477
1627
+ 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."
1628
+ 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."
1629
+
1630
+ #: includes/i18n.php:478
1631
+ 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."
1632
+ 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."
1633
+
1634
+ #: includes/i18n.php:479
1635
+ msgid "Cancel Installation"
1636
+ msgstr "Cancel Installation"
1637
+
1638
+ #: includes/i18n.php:480
1639
+ msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
1640
+ msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
1641
+
1642
+ #: includes/i18n.php:481
1643
+ msgid "Invalid module ID."
1644
+ msgstr "Invalid module ID."
1645
+
1646
+ #: includes/i18n.php:482
1647
+ msgid "Auto installation only works for opted-in users."
1648
+ msgstr "Auto installation only works for opted-in users."
1649
+
1650
+ #: includes/i18n.php:483
1651
+ msgid "Premium version already active."
1652
+ msgstr "Premium version already active."
1653
+
1654
+ #: includes/i18n.php:484
1655
+ msgid "Premium add-on version already installed."
1656
+ msgstr "Premium add-on version already installed."
1657
+
1658
+ #: includes/i18n.php:485
1659
+ msgid "You do not have a valid license to access the premium version."
1660
+ msgstr "You do not have a valid license to access the premium version."
1661
+
1662
+ #: includes/i18n.php:486
1663
+ msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
1664
+ msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version."
1665
+
1666
+ #: includes/i18n.php:501
1667
+ msgctxt "Plugin installer section title"
1668
+ msgid "Description"
1669
+ msgstr "תיאור"
1670
+
1671
+ #: includes/i18n.php:502
1672
+ msgctxt "Plugin installer section title"
1673
+ msgid "Installation"
1674
+ msgstr "התקנה"
1675
+
1676
+ #: includes/i18n.php:503
1677
+ msgctxt "Plugin installer section title"
1678
+ msgid "FAQ"
1679
+ msgstr "שאלות נפוצות"
1680
+
1681
+ #: includes/i18n.php:504
1682
+ msgctxt "Plugin installer section title"
1683
+ msgid "Changelog"
1684
+ msgstr "לוג שינויים"
1685
+
1686
+ #: includes/i18n.php:505
1687
+ msgctxt "Plugin installer section title"
1688
+ msgid "Reviews"
1689
+ msgstr "ביקורות"
1690
+
1691
+ #: includes/i18n.php:506
1692
+ msgctxt "Plugin installer section title"
1693
+ msgid "Other Notes"
1694
+ msgstr "היערות נוספות"
1695
+
1696
+ #: includes/i18n.php:508
1697
+ msgid "%s star"
1698
+ msgstr "כוכב %s"
1699
+
1700
+ #: includes/i18n.php:510
1701
+ msgid "%s stars"
1702
+ msgstr "%s כוכבים"
1703
+
1704
+ #: includes/i18n.php:512
1705
+ msgid "%s rating"
1706
+ msgstr "דרוג %s"
1707
+
1708
+ #: includes/i18n.php:514
1709
+ msgid "%s ratings"
1710
+ msgstr "%s דרוגים"
1711
+
1712
+ #: includes/i18n.php:516
1713
+ msgid "%s time"
1714
+ msgstr "פעם %s"
1715
+
1716
+ #: includes/i18n.php:518
1717
+ msgid "%s times"
1718
+ msgstr "%s פעמים"
1719
+
1720
+ #: includes/i18n.php:520
1721
+ msgid "Click to see reviews that provided a rating of %s"
1722
+ msgstr "Click to see reviews that provided a rating of %s"
1723
+
1724
+ #: includes/i18n.php:521
1725
+ msgid "Last Updated"
1726
+ msgstr "עודכן לאחרונה"
1727
+
1728
+ #: includes/i18n.php:522
1729
+ msgid "Requires WordPress Version:"
1730
+ msgstr "Requires WordPress Version:"
1731
+
1732
+ #: includes/i18n.php:523
1733
+ msgctxt "as the plugin author"
1734
+ msgid "Author:"
1735
+ msgstr "מחבר:"
1736
+
1737
+ #: includes/i18n.php:524
1738
+ msgid "Compatible up to:"
1739
+ msgstr "Compatible up to:"
1740
+
1741
+ #: includes/i18n.php:525
1742
+ msgid "Downloaded:"
1743
+ msgstr "הורדות:"
1744
+
1745
+ #: includes/i18n.php:526
1746
+ msgid "WordPress.org Plugin Page"
1747
+ msgstr "WordPress.org Plugin Page"
1748
+
1749
+ #: includes/i18n.php:527
1750
+ msgid "Plugin Homepage"
1751
+ msgstr "Plugin Homepage"
1752
+
1753
+ #: includes/i18n.php:528
1754
+ msgid "Donate to this plugin"
1755
+ msgstr "Donate to this plugin"
1756
+
1757
+ #: includes/i18n.php:529
1758
+ msgid "Average Rating"
1759
+ msgstr "דירוג ממוצע"
1760
+
1761
+ #: includes/i18n.php:530
1762
+ msgid "based on %s"
1763
+ msgstr "מבוסס על %s"
1764
+
1765
+ #: includes/i18n.php:531
1766
+ msgid "Warning:"
1767
+ msgstr "אזהרה:"
1768
+
1769
+ #: includes/i18n.php:532
1770
+ msgid "Contributors"
1771
+ msgstr "תורמים"
1772
+
1773
+ #: includes/i18n.php:533
1774
+ msgid "Plugin Install"
1775
+ msgstr "התקנת תוסף"
1776
+
1777
+ #: includes/i18n.php:534
1778
+ msgid "This plugin has not been tested with your current version of WordPress."
1779
+ msgstr "This plugin has not been tested with your current version of WordPress."
1780
+
1781
+ #: includes/i18n.php:535
1782
+ msgid "This plugin has not been marked as compatible with your version of WordPress."
1783
+ msgstr "This plugin has not been marked as compatible with your version of WordPress."
1784
+
1785
+ #: includes/i18n.php:536
1786
+ msgid "Newer Version (%s) Installed"
1787
+ msgstr "גרסה חדשה (%s) הותקנה"
1788
+
1789
+ #: includes/i18n.php:537
1790
+ msgid "Latest Version Installed"
1791
+ msgstr "הגרסה האחרונה הותקנה"
freemius/languages/freemius-it_IT.mo CHANGED
Binary file
freemius/languages/freemius-it_IT.po CHANGED
@@ -10,1862 +10,1784 @@ msgstr ""
10
  "Project-Id-Version: WordPress SDK\n"
11
  "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
12
  "POT-Creation-Date: \n"
13
- "PO-Revision-Date: 2017-03-09 20:58+0000\n"
14
- "Last-Translator: Pelly Benassi <plasmax@gmail.com>\n"
 
15
  "Language-Team: Italian (Italy) (http://www.transifex.com/freemius/wordpress-sdk/language/it_IT/)\n"
16
- "MIME-Version: 1.0\n"
17
  "Content-Type: text/plain; charset=UTF-8\n"
18
  "Content-Transfer-Encoding: 8bit\n"
19
- "Language: it_IT\n"
20
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
21
  "X-Poedit-Basepath: ..\n"
22
  "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"
23
  "X-Poedit-SearchPath-0: .\n"
24
  "X-Poedit-SearchPathExcluded-0: *.js\n"
25
  "X-Poedit-SourceCharset: UTF-8\n"
26
 
27
- #: includes/i18n.php:35
28
  msgid "Account"
29
  msgstr "Account"
30
 
31
- #: includes/i18n.php:36
32
  msgid "Add On"
33
  msgstr "Add-on"
34
 
35
- #: includes/i18n.php:37
36
  msgid "Contact Us"
37
  msgstr "Contattaci"
38
 
39
- #: includes/i18n.php:38
40
  msgid "Contact Support"
41
  msgstr "Contatta il supporto"
42
 
43
- #: includes/i18n.php:39
44
  msgid "Change Ownership"
45
  msgstr "Cambia Proprietario"
46
 
47
- #: includes/i18n.php:40
48
  msgid "Support"
49
  msgstr "Supporto"
50
 
51
- #: includes/i18n.php:41
52
  msgid "Support Forum"
53
  msgstr "Forum di supporto"
54
 
55
- #: includes/i18n.php:42
56
  msgid "Add Ons"
57
  msgstr "Add-on"
58
 
59
- #: includes/i18n.php:43
60
  msgctxt "verb"
61
  msgid "Upgrade"
62
  msgstr "Aggiornamento"
63
 
64
- #: includes/i18n.php:44
65
  msgid "Awesome"
66
  msgstr "Fantastico"
67
 
68
- #: includes/i18n.php:45
69
  msgctxt "noun"
70
  msgid "Pricing"
71
  msgstr "Prezzi"
72
 
73
- #: includes/i18n.php:46
74
  msgctxt "noun"
75
  msgid "Price"
76
  msgstr "Prezzo"
77
 
78
- #: includes/i18n.php:47
79
  msgid "Unlimited Updates"
80
  msgstr "Aggiornamenti Illimitati"
81
 
82
- #: includes/i18n.php:48
83
  msgctxt "verb"
84
  msgid "Downgrade"
85
  msgstr "Downgrade"
86
 
87
- #: includes/i18n.php:49
 
 
 
 
 
88
  msgid "Cancel Trial"
89
  msgstr "Annulla prova gratuita"
90
 
91
- #: includes/i18n.php:50
92
  msgid "Free Trial"
93
  msgstr "Prova gratuita"
94
 
95
- #: includes/i18n.php:51
96
  msgid "Start my free %s"
97
  msgstr "Inizia la mia %s"
98
 
99
- #: includes/i18n.php:52
100
  msgid "No commitment for %s - cancel anytime"
101
  msgstr "Nessun impegno con %s - cancella quando vuoi"
102
 
103
- #: includes/i18n.php:53
104
  msgid "After your free %s, pay as little as %s"
105
  msgstr "Dopo il tuo %s gratuito, paghi solamente %s"
106
 
107
- #: includes/i18n.php:54
108
  msgid "Details"
109
  msgstr "Dettagli"
110
 
111
- #: includes/i18n.php:55
112
  msgid "Account Details"
113
  msgstr "Dettagli dell'account"
114
 
115
- #: includes/i18n.php:56
116
  msgctxt "verb"
117
  msgid "Delete"
118
  msgstr "Elimina"
119
 
120
- #: includes/i18n.php:57
121
  msgctxt "verb"
122
  msgid "Show"
123
  msgstr "Mostra"
124
 
125
- #: includes/i18n.php:58
126
  msgctxt "verb"
127
  msgid "Hide"
128
  msgstr "Nascondi"
129
 
130
- #: includes/i18n.php:59
131
  msgctxt "verb"
132
  msgid "Edit"
133
  msgstr "Modifica"
134
 
135
- #: includes/i18n.php:60
136
  msgctxt "verb"
137
  msgid "Update"
138
  msgstr "Aggiorna"
139
 
140
- #: includes/i18n.php:61
141
  msgid "Date"
142
  msgstr "Data"
143
 
144
- #: includes/i18n.php:62
145
  msgid "Amount"
146
  msgstr "Importo"
147
 
148
- #: includes/i18n.php:63
149
  msgid "Invoice"
150
  msgstr "Fattura"
151
 
152
- #: includes/i18n.php:64
153
  msgid "Billing"
154
  msgstr "Fatturazione"
155
 
156
- #: includes/i18n.php:65
157
  msgid "Payments"
158
  msgstr "Pagamenti"
159
 
160
- #: includes/i18n.php:66
161
  msgid "Delete Account"
162
  msgstr "Elimina Account"
163
 
164
- #: includes/i18n.php:67
165
  msgctxt "as close a window"
166
  msgid "Dismiss"
167
  msgstr "Chiudi"
168
 
169
- #: includes/i18n.php:68
170
  msgctxt "as product pricing plan"
171
  msgid "Plan"
172
  msgstr "Piano"
173
 
174
- #: includes/i18n.php:69
175
  msgid "Change Plan"
176
  msgstr "Cambia piano"
177
 
178
- #: includes/i18n.php:70
179
  msgctxt "as download professional version"
180
  msgid "Download %s Version"
181
  msgstr "Scarica la versione %s"
182
 
183
- #: includes/i18n.php:71
184
  msgctxt "as download professional version now"
185
  msgid "Download %s version now"
186
  msgstr "Scarica la versione %s ora"
187
 
188
- #: includes/i18n.php:72
189
  msgctxt "as download latest version"
190
  msgid "Download Latest"
191
  msgstr "Scarica l'ultima versione"
192
 
193
- #: includes/i18n.php:73
194
  msgctxt "E.g. you have a professional license."
195
  msgid "You have a %s license."
196
  msgstr "Hai la licenza %s."
197
 
198
- #: includes/i18n.php:74
199
  msgid "New"
200
  msgstr "Nuovo"
201
 
202
- #: includes/i18n.php:75
203
  msgid "Free"
204
  msgstr "Gratuito"
205
 
206
- #: includes/i18n.php:76
207
  msgctxt "as trial plan"
208
  msgid "Trial"
209
  msgstr "Prova gratuita"
210
 
211
- #: includes/i18n.php:77
212
  msgctxt "as starting a trial plan"
213
  msgid "Start Trial"
214
  msgstr "Inizia il periodo di prova gratuito"
215
 
216
- #: includes/i18n.php:78
217
  msgctxt "verb"
218
  msgid "Purchase"
219
  msgstr "Acquisto"
220
 
221
- #: includes/i18n.php:79
222
  msgid "Purchase License"
223
  msgstr "Acquista licenza"
224
 
225
- #: includes/i18n.php:80
226
  msgctxt "verb"
227
  msgid "Buy"
228
  msgstr "Compra"
229
 
230
- #: includes/i18n.php:81
231
  msgid "Buy License"
232
  msgstr "Compra licenza"
233
 
234
- #: includes/i18n.php:82
235
  msgid "Single Site License"
236
  msgstr "Licenza per sito singolo"
237
 
238
- #: includes/i18n.php:83
239
  msgid "Unlimited Licenses"
240
  msgstr "Licenze illimitate"
241
 
242
- #: includes/i18n.php:84
243
  msgid "Up to %s Sites"
244
  msgstr "Fino a %s siti"
245
 
246
- #: includes/i18n.php:85
247
  msgid "%sRenew your license now%s to access version %s features and support."
248
  msgstr "%sRinnova la tua licenza ora%s per accedere a funzionalità e supporto della versione %s."
249
 
250
- #: includes/i18n.php:86
251
- msgid ""
252
- "Enter the email address you've used for the upgrade below and we will resend"
253
- " you the license key."
254
  msgstr "Inserisci qui sotto l'indirizzo email che hai usato per registrare l'aggiornamento e ti invieremo di nuovo la chiave di licenza."
255
 
256
- #: includes/i18n.php:87
257
  msgctxt "e.g. Professional Plan"
258
  msgid "%s Plan"
259
  msgstr "Piano %s"
260
 
261
- #: includes/i18n.php:88
262
  msgid "You are just one step away - %s"
263
  msgstr "Sei a un passo dalla fine - %s"
264
 
265
- #: includes/i18n.php:89
266
  msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
267
  msgid "Complete \"%s\" Activation Now"
268
  msgstr "Completa l'attivazione di \"%s\" ora"
269
 
270
- #: includes/i18n.php:91
271
  msgid "We made a few tweaks to the plugin, %s"
272
  msgstr "Abbiamo apportato alcune modifiche al plugin, %s"
273
 
274
- #: includes/i18n.php:92
275
  msgid "Opt-in to make \"%s\" Better!"
276
  msgstr "Contribuisci a rendere \"%s\" migliore!"
277
 
278
- #: includes/i18n.php:93
279
  msgid "Error"
280
  msgstr "Errore"
281
 
282
- #: includes/i18n.php:94
283
- msgid ""
284
- "Freemius SDK couldn't find the plugin's main file. Please contact "
285
- "sdk@freemius.com with the current error."
286
  msgstr "L'SDK di Freemius non è riuscito a trovare il file principale del plugin. Per favore contatta sdk@freemius.com riportando l'errore."
287
 
288
- #: includes/i18n.php:97
289
  msgctxt "as expiration date"
290
  msgid "Expiration"
291
  msgstr "Scadenza"
292
 
293
- #: includes/i18n.php:98
294
  msgctxt "as software license"
295
  msgid "License"
296
  msgstr "Licenza"
297
 
298
- #: includes/i18n.php:99
299
  msgid "not verified"
300
  msgstr "non verificato"
301
 
302
- #: includes/i18n.php:100
303
  msgid "Verify Email"
304
  msgstr "Verifica email"
305
 
306
- #: includes/i18n.php:101
307
  msgctxt "e.g. expires in 2 months"
308
  msgid "Expires in %s"
309
  msgstr "Scade in %s"
310
 
311
- #: includes/i18n.php:102
312
  msgctxt "e.g. auto renews in 2 months"
313
  msgid "Auto renews in %s"
314
  msgstr "Rinnovo automatico in %s"
315
 
316
- #: includes/i18n.php:103
317
  msgid "No expiration"
318
  msgstr "Nessuna scadenza"
319
 
320
- #: includes/i18n.php:104
321
  msgid "Expired"
322
  msgstr "Scaduto"
323
 
324
- #: includes/i18n.php:105
325
  msgid "Cancelled"
326
  msgstr "Annullato"
327
 
328
- #: includes/i18n.php:106
329
  msgctxt "e.g. In 2 hours"
330
  msgid "In %s"
331
  msgstr "In %s"
332
 
333
- #: includes/i18n.php:107
334
  msgctxt "e.g. 2 min ago"
335
  msgid "%s ago"
336
  msgstr "%s fa"
337
 
338
- #: includes/i18n.php:109
339
  msgid "%s or higher"
340
  msgstr "%s o superiore"
341
 
342
- #: includes/i18n.php:110
343
  msgctxt "as plugin version"
344
  msgid "Version"
345
  msgstr "Versione"
346
 
347
- #: includes/i18n.php:111
348
  msgid "Name"
349
  msgstr "Nome"
350
 
351
- #: includes/i18n.php:112
352
  msgid "Email"
353
  msgstr "Email"
354
 
355
- #: includes/i18n.php:113
356
  msgid "Email address"
357
  msgstr "Indirizzo email"
358
 
359
- #: includes/i18n.php:114
360
  msgid "Verified"
361
  msgstr "Verificato"
362
 
363
- #: includes/i18n.php:115
364
  msgid "Module"
365
  msgstr "Modulo"
366
 
367
- #: includes/i18n.php:116
368
  msgid "Module Type"
369
  msgstr "Tipo di modulo"
370
 
371
- #: includes/i18n.php:117
372
  msgid "Plugin"
373
  msgstr "Plugin"
374
 
375
- #: includes/i18n.php:118
376
  msgid "Plugins"
377
  msgstr "Plugin"
378
 
379
- #: includes/i18n.php:119
380
  msgid "Theme"
381
  msgstr "Tema"
382
 
383
- #: includes/i18n.php:120
384
  msgid "Themes"
385
  msgstr "Temi"
386
 
387
- #: includes/i18n.php:121
388
  msgctxt "as file/folder path"
389
  msgid "Path"
390
  msgstr "Percorso"
391
 
392
- #: includes/i18n.php:122
393
  msgid "Title"
394
  msgstr "Titolo"
395
 
396
- #: includes/i18n.php:123
397
  msgid "Free version"
398
  msgstr "Versione gratuita"
399
 
400
- #: includes/i18n.php:124
401
  msgid "Premium version"
402
  msgstr "Versione premium"
403
 
404
- #: includes/i18n.php:125
405
  msgctxt "as WP plugin slug"
406
  msgid "Slug"
407
  msgstr "Slug"
408
 
409
- #: includes/i18n.php:126
410
  msgid "ID"
411
  msgstr "ID"
412
 
413
- #: includes/i18n.php:127
414
  msgid "Users"
415
  msgstr "Utenti"
416
 
417
- #: includes/i18n.php:128
418
  msgid "Plugin Installs"
419
  msgstr "Installazioni Plugin"
420
 
421
- #: includes/i18n.php:129
422
  msgid "%s Installs"
423
  msgstr "%s Installazioni"
424
 
425
- #: includes/i18n.php:130
426
  msgctxt "like websites"
427
  msgid "Sites"
428
  msgstr "Siti"
429
 
430
- #: includes/i18n.php:131
431
  msgid "User ID"
432
  msgstr "ID utente"
433
 
434
- #: includes/i18n.php:132
435
  msgid "Site ID"
436
  msgstr "ID del sito"
437
 
438
- #: includes/i18n.php:133
439
  msgid "Public Key"
440
  msgstr "Chiave pubblica"
441
 
442
- #: includes/i18n.php:134
443
  msgid "Secret Key"
444
  msgstr "Chiave segreta"
445
 
446
- #: includes/i18n.php:135
447
  msgctxt "as secret encryption key missing"
448
  msgid "No Secret"
449
  msgstr "Nessuna chiave"
450
 
451
- #: includes/i18n.php:136
452
  msgid "No ID"
453
  msgstr "Nessun ID"
454
 
455
- #: includes/i18n.php:137
456
  msgctxt "as synchronize license"
457
  msgid "Sync License"
458
  msgstr "Sincronizza la licenza"
459
 
460
- #: includes/i18n.php:138
461
  msgctxt "as synchronize"
462
  msgid "Sync"
463
  msgstr "Sincronizza"
464
 
465
- #: includes/i18n.php:139
466
  msgid "Activate License"
467
  msgstr "Attiva licenza"
468
 
469
- #: includes/i18n.php:140
470
  msgid "Activate Free Version"
471
  msgstr "Attiva versione gratuita"
472
 
473
- #: includes/i18n.php:141
474
- msgid ""
475
- "Please enter the license key that you received in the email right after the "
476
- "purchase:"
477
  msgstr "Per favore inserisci la chiave di licenza che hai ricevuto via mail subito dopo l'acquisto:"
478
 
479
- #: includes/i18n.php:142
480
  msgid "Activating license..."
481
  msgstr "Sto attivando la licenza..."
482
 
483
- #: includes/i18n.php:143
484
  msgid "Change License"
485
  msgstr "Cambia licenza"
486
 
487
- #: includes/i18n.php:144
488
  msgid "Update License"
489
  msgstr "Aggiorna licenza"
490
 
491
- #: includes/i18n.php:145
492
  msgid "Deactivate License"
493
  msgstr "Disattiva licenza"
494
 
495
- #: includes/i18n.php:146
496
  msgid "Activate"
497
  msgstr "Attiva"
498
 
499
- #: includes/i18n.php:147
500
  msgid "Deactivate"
501
  msgstr "Disattiva"
502
 
503
- #: includes/i18n.php:148
504
  msgid "Skip & Deactivate"
505
  msgstr "Salta e disattiva"
506
 
507
- #: includes/i18n.php:149
508
  msgid "Skip & %s"
509
  msgstr "Salta & %s"
510
 
511
- #: includes/i18n.php:150
512
  msgid "No - just deactivate"
513
  msgstr "No - disattiva e basta"
514
 
515
- #: includes/i18n.php:151
516
  msgid "Yes - do your thing"
517
  msgstr "Sì - fai pure"
518
 
519
- #: includes/i18n.php:152
520
  msgctxt "active mode"
521
  msgid "Active"
522
  msgstr "Attiva"
523
 
524
- #: includes/i18n.php:153
525
  msgctxt "is active mode?"
526
  msgid "Is Active"
527
  msgstr "è attiva"
528
 
529
- #: includes/i18n.php:154
530
  msgid "Install Now"
531
  msgstr "Installa ora"
532
 
533
- #: includes/i18n.php:155
534
  msgid "Install Update Now"
535
  msgstr "Installa l'aggiornamento ora"
536
 
537
- #: includes/i18n.php:156
538
  msgid "More information about %s"
539
  msgstr "Ulteriori informazioni su %s"
540
 
541
- #: includes/i18n.php:157
542
  msgid "Localhost"
543
  msgstr "Localhost"
544
 
545
- #: includes/i18n.php:158
546
  msgctxt "as activate Professional plan"
547
  msgid "Activate %s Plan"
548
  msgstr "Attivare il piano %s"
549
 
550
- #: includes/i18n.php:159
551
  msgctxt "as 5 licenses left"
552
  msgid "%s left"
553
  msgstr "%s rimanenti"
554
 
555
- #: includes/i18n.php:160
556
  msgid "Last license"
557
  msgstr "Ultima licenza"
558
 
559
- #: includes/i18n.php:161
560
  msgid "What is your %s?"
561
  msgstr "Qual è il tuo %s?"
562
 
563
- #: includes/i18n.php:162
564
  msgid "Activate this add-on"
565
  msgstr "Attivare questo addon"
566
 
567
- #: includes/i18n.php:163
568
- msgid ""
569
- "Deactivating your license will block all premium features, but will enable "
570
- "you to activate the license on another site. Are you sure you want to "
571
- "proceed?"
572
  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?"
573
 
574
- #: includes/i18n.php:164
575
- msgid ""
576
- "Deleting the account will automatically deactivate your %s plan license so "
577
- "you can use it on other sites. If you want to terminate the recurring "
578
- "payments as well, click the \"Cancel\" button, and first \"Downgrade\" your "
579
- "account. Are you sure you would like to continue with the deletion?"
580
  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?"
581
 
582
- #: includes/i18n.php:165
583
- msgid ""
584
- "Deletion is not temporary. Only delete if you no longer want to use this "
585
- "plugin anymore. Are you sure you would like to continue with the deletion?"
586
  msgstr "L'eliminazione non è temporanea. Cancella solo se non si desidera più utilizzare questo plugin. Sei sicuro di voler continuare con l'eliminazione?"
587
 
588
- #: includes/i18n.php:166
589
- msgid ""
590
- "Downgrading your plan will immediately stop all future recurring payments "
591
- "and your %s plan license will expire in %s."
592
  msgstr "Effettuare il downgrade del piano interromperà immediatamente tutti i futuri pagamenti ricorrenti e la licenza del piano %s scadrà in %s."
593
 
594
- #: includes/i18n.php:167
595
- msgid ""
596
- "Cancelling the trial will immediately block access to all premium features. "
597
- "Are you sure?"
598
  msgstr "Cancellando il periodo di prova gratuito bloccherai immediatamente l'accesso a tutte le funzionalità premium. Vuoi continuare?"
599
 
600
- #: includes/i18n.php:168
601
- msgid ""
602
- "You can still enjoy all %s features but you will not have access to plugin "
603
- "updates and support."
604
  msgstr "Puoi ancora sfruttare tutte le funzionalità di %s, ma non avrai accesso al supporto ed agli aggiornamenti del plugin."
605
 
606
- #: includes/i18n.php:169
607
- msgid ""
608
- "Once your license expires you can still use the Free version but you will "
609
- "NOT have access to the %s features."
610
  msgstr "Quando la tua licenza scadrà, potrai comunque continuare a usare la versione gratuita, ma NON avrai accesso alle funzionalità %s."
611
 
612
- #: includes/i18n.php:170
613
  msgid "Are you sure you want to proceed?"
614
  msgstr "Sei sicuro di voler procedere?"
615
 
616
- #: includes/i18n.php:173
617
  msgid "Add Ons for %s"
618
  msgstr "Add-on per %s"
619
 
620
- #: includes/i18n.php:174
621
- msgid ""
622
- "We could'nt load the add-ons list. It's probably an issue on our side, "
623
- "please try to come back in few minutes."
624
  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."
625
 
626
- #: includes/i18n.php:176
627
  msgid "Anonymous feedback"
628
  msgstr "Feedback anonimo"
629
 
630
- #: includes/i18n.php:177
631
  msgid "Quick feedback"
632
  msgstr "Feedback veloce"
633
 
634
- #: includes/i18n.php:178
635
  msgid "If you have a moment, please let us know why you are deactivating"
636
  msgstr "Se hai un momento, potresti dirci perché lo hai disattivato?"
637
 
638
- #: includes/i18n.php:179
639
  msgid "Yes - Deactivate"
640
  msgstr "Si - Disattiva"
641
 
642
- #: includes/i18n.php:180
643
  msgid "Submit & Deactivate"
644
  msgstr "Invia & Disattiva"
645
 
646
- #: includes/i18n.php:181
647
  msgid "Cancel"
648
  msgstr "Annulla"
649
 
650
- #: includes/i18n.php:182
651
  msgid "I no longer need the plugin"
652
  msgstr "Non ho piú bisogno di questo plugin"
653
 
654
- #: includes/i18n.php:183
655
  msgid "I found a better plugin"
656
  msgstr "Ho trovato un plugin migliore"
657
 
658
- #: includes/i18n.php:184
659
  msgid "I only needed the plugin for a short period"
660
  msgstr "Avevo bisogno del plugin solo per un breve periodo"
661
 
662
- #: includes/i18n.php:185
663
  msgid "The plugin broke my site"
664
  msgstr "Il plugin ha causato problemi al mio sito"
665
 
666
- #: includes/i18n.php:186
667
  msgid "The plugin suddenly stopped working"
668
  msgstr "Il plugin ha smesso di funzionare"
669
 
670
- #: includes/i18n.php:187
671
  msgid "I can't pay for it anymore"
672
  msgstr "Non posso piú pagarlo"
673
 
674
- #: includes/i18n.php:188
675
  msgid "It's a temporary deactivation. I'm just debugging an issue."
676
  msgstr "È una disattivazione temporanea. Sto solo cercando di risolvere un problema."
677
 
678
- #: includes/i18n.php:189
679
  msgctxt ""
680
- "the text of the \"other\" reason for deactivating the plugin that is shown "
681
- "in the modal box."
682
  msgid "Other"
683
  msgstr "Altro"
684
 
685
- #: includes/i18n.php:191
686
  msgid "Kindly tell us the reason so we can improve."
687
  msgstr "Spiegandoci il motivo ci aiuterai a migliorare."
688
 
689
- #: includes/i18n.php:192
690
  msgid "What's the plugin's name?"
691
  msgstr "Qual è il nome del plugin?"
692
 
693
- #: includes/i18n.php:193
694
  msgid "What price would you feel comfortable paying?"
695
  msgstr "Che prezzo ritieni opportuno pagare?"
696
 
697
- #: includes/i18n.php:194
698
  msgid "I couldn't understand how to make it work"
699
  msgstr "Non capisco come farlo funzionare"
700
 
701
- #: includes/i18n.php:195
702
- msgid ""
703
- "The plugin is great, but I need specific feature that you don't support"
704
  msgstr "Il plugin é ottimo ma ho bisogno di una funzionalitá specifica che non é supportata"
705
 
706
- #: includes/i18n.php:196
707
  msgid "The plugin is not working"
708
  msgstr "Il plugin non funziona"
709
 
710
- #: includes/i18n.php:197
711
  msgid "It's not what I was looking for"
712
  msgstr "Non é quello che stavo cercando"
713
 
714
- #: includes/i18n.php:198
715
  msgid "The plugin didn't work as expected"
716
  msgstr "Il plugin non funziona come mi aspettavo"
717
 
718
- #: includes/i18n.php:199
719
  msgid "What feature?"
720
  msgstr "Quale funzionalitá?"
721
 
722
- #: includes/i18n.php:200
723
  msgid "Kindly share what didn't work so we can fix it for future users..."
724
  msgstr "Condividi cosa non ha funzionato in modo da migliorare il prodotto per gli utenti futuri..."
725
 
726
- #: includes/i18n.php:201
727
  msgid "What you've been looking for?"
728
  msgstr "Che cosa stai cercando?"
729
 
730
- #: includes/i18n.php:202
731
  msgid "What did you expect?"
732
  msgstr "Che cosa ti aspettavi?"
733
 
734
- #: includes/i18n.php:203
735
  msgid "The plugin didn't work"
736
  msgstr "Il plugin non funziona"
737
 
738
- #: includes/i18n.php:204
739
  msgid "I don't like to share my information with you"
740
  msgstr "Non voglio condividere i miei dati con te"
741
 
742
- #: includes/i18n.php:205
743
- msgid ""
744
- "You might have missed it, but you don't have to share any data and can just "
745
- "%s the opt-in."
746
  msgstr "Potresti non averci fatto caso, ma non sei obbligato a condividere i tuoi dati e puoi semplicemente %s la tua partecipazione."
747
 
748
- #: includes/i18n.php:209
749
  msgctxt "greeting"
750
  msgid "Hey %s,"
751
  msgstr "Hey %s,"
752
 
753
- #: includes/i18n.php:210
754
  msgctxt "a greeting. E.g. Thanks John!"
755
  msgid "Thanks %s!"
756
  msgstr "Grazie %s!"
757
 
758
- #: includes/i18n.php:211
759
- msgid ""
760
- "Never miss an important update - opt-in to our security and feature updates "
761
- "notifications, and non-sensitive diagnostic tracking with %4$s."
762
  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."
763
 
764
- #: includes/i18n.php:212
765
- msgid ""
766
- "Please help us improve %1$s! If you opt-in, some data about your usage of "
767
- "%1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still "
768
- "work just fine."
769
  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."
770
 
771
- #: includes/i18n.php:213
772
- msgid ""
773
- "You should receive an activation email for %s to your mailbox at %s. Please "
774
- "make sure you click the activation button in that email to %s."
775
  msgstr "Dovresti ricevere un'email di attivazione di %s all'indirizzo %s. Assicurati di fare clic sul pulsante di attivazione nell'email per %s."
776
 
777
- #: includes/i18n.php:214
778
  msgid "complete the install"
779
  msgstr "completa l'installazione"
780
 
781
- #: includes/i18n.php:215
782
  msgid "start the trial"
783
  msgstr "Inizia il periodo di prova gratuito"
784
 
785
- #: includes/i18n.php:216
786
- msgid ""
787
- "Thanks for purchasing %s! To get started, please enter your license key:"
788
  msgstr "Grazie per aver acquistato %s! Per iniziare, per favore inserisci la tua chiave di licenza:"
789
 
790
- #: includes/i18n.php:217
791
- msgid ""
792
- "The plugin will be periodically sending data to %s to check for plugin "
793
- "updates and verify the validity of your license."
794
  msgstr "Il plugin invierà dati periodicamente a %s per controllare l'esistenza di aggiornamenti e verificare la validità della tua licenza."
795
 
796
- #: includes/i18n.php:218
797
  msgid "What permissions are being granted?"
798
  msgstr "Quali autorizzazioni vengono concesse?"
799
 
800
- #: includes/i18n.php:219
801
  msgid "Your Profile Overview"
802
  msgstr "Panoramica del tuo profilo"
803
 
804
- #: includes/i18n.php:220
805
  msgid "Name and email address"
806
  msgstr "Nome ed indirizzo email"
807
 
808
- #: includes/i18n.php:221
809
  msgid "Your Site Overview"
810
  msgstr "Panoramica del tuo sito"
811
 
812
- #: includes/i18n.php:222
813
  msgid "Site URL, WP version, PHP info, plugins & themes"
814
  msgstr "URL del sito, versione di WP, informazioni PHP, plugin e temi"
815
 
816
- #: includes/i18n.php:223
817
  msgid "Current Plugin Events"
818
  msgstr "Eventi correnti del plugin"
819
 
820
- #: includes/i18n.php:224
821
  msgid "Activation, deactivation and uninstall"
822
  msgstr "Attiva, disattivazione e disinstallazione"
823
 
824
- #: includes/i18n.php:225
825
  msgid "Plugins & Themes"
826
  msgstr "Plugin e temi"
827
 
828
- #: includes/i18n.php:226
829
  msgid "Titles, versions and state."
830
  msgstr "Titoli, versioni e stato."
831
 
832
- #: includes/i18n.php:227
833
  msgid "Admin Notices"
834
  msgstr "Avvisi amministratore"
835
 
836
- #: includes/i18n.php:228
837
  msgid "Newsletter"
838
  msgstr "Newsletter"
839
 
840
- #: includes/i18n.php:229
841
  msgid "Updates, announcements, marketing, no spam"
842
  msgstr "Aggiornamenti, annunci, marketing, no spam"
843
 
844
- #: includes/i18n.php:230
845
  msgid "Privacy Policy"
846
  msgstr "Politica sulla privacy"
847
 
848
- #: includes/i18n.php:231
849
  msgid "Terms of Service"
850
  msgstr "Termini del Servizio"
851
 
852
- #: includes/i18n.php:232
853
  msgctxt "as activating plugin"
854
  msgid "Activating"
855
  msgstr "Attivazione"
856
 
857
- #: includes/i18n.php:233
858
  msgctxt "as in the process of sending an email"
859
  msgid "Sending email"
860
  msgstr "Invio email"
861
 
862
- #: includes/i18n.php:234
863
  msgctxt "button label"
864
  msgid "Allow & Continue"
865
  msgstr "Consenti & Continua"
866
 
867
- #: includes/i18n.php:235
868
  msgctxt "button label"
869
  msgid "Agree & Activate License"
870
  msgstr "Accetta e attiva la licenza"
871
 
872
- #: includes/i18n.php:236
873
  msgctxt "verb"
874
  msgid "Skip"
875
  msgstr "Salta"
876
 
877
- #: includes/i18n.php:237
878
  msgid "Click here to use the plugin anonymously"
879
  msgstr "Fai clic qui per usare il plugin anonimamente"
880
 
881
- #: includes/i18n.php:238
882
  msgid "Re-send activation email"
883
  msgstr "Invia nuovamente l'email di attivazione"
884
 
885
- #: includes/i18n.php:239
886
  msgid "License key"
887
  msgstr "Chiave di licenza"
888
 
889
- #: includes/i18n.php:240
890
  msgid "Send License Key"
891
  msgstr "Invia chiave di licenza"
892
 
893
- #: includes/i18n.php:241
894
  msgid "Sending license key"
895
  msgstr "Invio chiave di licenza"
896
 
897
- #: includes/i18n.php:242
898
  msgid "Have a license key?"
899
  msgstr "Hai una chiave di licenza?"
900
 
901
- #: includes/i18n.php:243
902
  msgid "Don't have a license key?"
903
  msgstr "Non hai una chiave di licenza?"
904
 
905
- #: includes/i18n.php:244
906
  msgid "Can't find your license key?"
907
  msgstr "Non trovi la tua chiave di licenza?"
908
 
909
- #: includes/i18n.php:245
910
- msgid ""
911
- "We couldn't find your email address in the system, are you sure it's the "
912
- "right address?"
913
  msgstr "Non siamo riusciti a trovare il tuo indirizzo email nel sistema, sei sicuro che sia l'indirizzo giusto?"
914
 
915
- #: includes/i18n.php:246
916
- msgid ""
917
- "We can't see any active licenses associated with that email address, are you"
918
- " sure it's the right address?"
919
  msgstr "Non siamo riusciti a trovare alcuna licenza attiva associata al tuo indirizzo email, sei sicuro che sia l'indirizzo giusto?"
920
 
921
- #: includes/i18n.php:247
922
  msgid "Opt In"
923
  msgstr "Iscriviti"
924
 
925
- #: includes/i18n.php:248
926
  msgid "Opt Out"
927
  msgstr "Cancella iscrizione"
928
 
929
- #: includes/i18n.php:249
930
  msgid "On second thought - I want to continue helping"
931
  msgstr "Ci ho ripensato, voglio continuare a fornire il mio aiuto"
932
 
933
- #: includes/i18n.php:250
934
  msgid "Opting out..."
935
  msgstr "Cancellamento dell'iscrizione..."
936
 
937
- #: includes/i18n.php:251
938
  msgid "Opting in..."
939
  msgstr "Iscrizione in corso..."
940
 
941
- #: includes/i18n.php:252
942
- msgid ""
943
- "We appreciate your help in making the %s better by letting us track some "
944
- "usage data."
945
  msgstr "Ti ringraziamo per averci concesso di tracciare alcuni dati di utilizzo al fine di migliorare %s"
946
 
947
- #: includes/i18n.php:253
948
- msgid ""
949
- "Usage tracking is done in the name of making %s better. Making a better user"
950
- " experience, prioritizing new features, and more good things. We'd really "
951
- "appreciate if you'll reconsider letting us continue with the tracking."
952
  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."
953
 
954
- #: includes/i18n.php:254
955
- msgid ""
956
- "By clicking \"Opt Out\", we will no longer be sending any data from %s to "
957
- "%s."
958
  msgstr "Cliccando su \"Cancella iscrizione\", non invieremo più nessuna informazione da %s a %s."
959
 
960
- #: includes/i18n.php:258
961
  msgid "Screenshots"
962
  msgstr "Screenshots"
963
 
964
- #: includes/i18n.php:259
965
  msgid "Click to view full-size screenshot %d"
966
  msgstr "Fare clic per visualizzare lo screenshot in grandi dimensioni %d"
967
 
968
- #: includes/i18n.php:263
969
  msgid "Freemius Debug"
970
  msgstr "Debug Freemius"
971
 
972
- #: includes/i18n.php:264
973
  msgctxt "as turned on"
974
  msgid "On"
975
  msgstr "Attivo"
976
 
977
- #: includes/i18n.php:265
978
  msgctxt "as turned off"
979
  msgid "Off"
980
  msgstr "Non attivo"
981
 
982
- #: includes/i18n.php:266
983
  msgctxt "as code debugging"
984
  msgid "Debugging"
985
  msgstr "Debugging"
986
 
987
- #: includes/i18n.php:267
988
  msgid "Freemius State"
989
  msgstr "Stato di Freemius"
990
 
991
- #: includes/i18n.php:268
992
  msgctxt "as connection was successful"
993
  msgid "Connected"
994
  msgstr "Connesso"
995
 
996
- #: includes/i18n.php:269
997
  msgctxt "as connection blocked"
998
  msgid "Blocked"
999
  msgstr "Bloccato"
1000
 
1001
- #: includes/i18n.php:270
1002
  msgctxt "as application program interface"
1003
  msgid "API"
1004
  msgstr "API"
1005
 
1006
- #: includes/i18n.php:271
1007
  msgctxt "as software development kit versions"
1008
  msgid "SDK"
1009
  msgstr "SDK"
1010
 
1011
- #: includes/i18n.php:272
1012
  msgctxt "as software development kit versions"
1013
  msgid "SDK Versions"
1014
  msgstr "Versioni SDK"
1015
 
1016
- #: includes/i18n.php:273
1017
  msgctxt "as plugin folder path"
1018
  msgid "Plugin Path"
1019
  msgstr "Percorso del plugin"
1020
 
1021
- #: includes/i18n.php:274
1022
  msgctxt "as sdk path"
1023
  msgid "SDK Path"
1024
  msgstr "Percorso SDK"
1025
 
1026
- #: includes/i18n.php:275
1027
  msgid "Add Ons of Plugin %s"
1028
  msgstr "Add-on del Plugin %s"
1029
 
1030
- #: includes/i18n.php:276
1031
  msgid "Are you sure you want to delete all Freemius data?"
1032
  msgstr "Sei sicuro di voler eliminare tutti i dati di Freemius?"
1033
 
1034
- #: includes/i18n.php:277
1035
  msgid "Actions"
1036
  msgstr "Azioni"
1037
 
1038
- #: includes/i18n.php:278
1039
  msgid "Delete All Accounts"
1040
  msgstr "Eliminare tutti gli account"
1041
 
1042
- #: includes/i18n.php:279
1043
  msgid "Start Fresh"
1044
  msgstr "Inizia da capo"
1045
 
1046
- #: includes/i18n.php:280
1047
  msgid "Clear API Cache"
1048
  msgstr "Elimina cache API"
1049
 
1050
- #: includes/i18n.php:281
1051
  msgid "Sync Data From Server"
1052
  msgstr "Sincronizza i dati dal server"
1053
 
1054
- #: includes/i18n.php:282
1055
  msgid "Scheduled Crons"
1056
  msgstr "Azioni programmate"
1057
 
1058
- #: includes/i18n.php:283
1059
  msgid "Cron Type"
1060
  msgstr "Tipo di Cron"
1061
 
1062
- #: includes/i18n.php:284
1063
  msgid "Plugins & Themes Sync"
1064
  msgstr "Sincronizzazione plugin e temi"
1065
 
1066
- #: includes/i18n.php:285
1067
  msgid "Licenses"
1068
  msgstr "Licenze"
1069
 
1070
- #: includes/i18n.php:286
1071
  msgid "Debug Log"
1072
  msgstr "Debug Log"
1073
 
1074
- #: includes/i18n.php:287
1075
  msgid "All"
1076
  msgstr "Tutto"
1077
 
1078
- #: includes/i18n.php:288
1079
  msgid "File"
1080
  msgstr "File"
1081
 
1082
- #: includes/i18n.php:289
1083
  msgid "Function"
1084
  msgstr "Funzione"
1085
 
1086
- #: includes/i18n.php:290
1087
  msgid "Process ID"
1088
  msgstr "ID processo"
1089
 
1090
- #: includes/i18n.php:291
1091
  msgid "Logger"
1092
  msgstr "Logger"
1093
 
1094
- #: includes/i18n.php:292
1095
  msgid "Message"
1096
  msgstr "Messaggio"
1097
 
1098
- #: includes/i18n.php:293
1099
  msgid "Download"
1100
  msgstr "Download"
1101
 
1102
- #: includes/i18n.php:294
1103
  msgid "Filter"
1104
  msgstr "Filtro"
1105
 
1106
- #: includes/i18n.php:295
1107
  msgid "Type"
1108
  msgstr "Tipo"
1109
 
1110
- #: includes/i18n.php:296
1111
  msgid "All Types"
1112
  msgstr "Tutti i tipi"
1113
 
1114
- #: includes/i18n.php:297
1115
  msgid "All Requests"
1116
  msgstr "Tutte le richieste"
1117
 
1118
- #: includes/i18n.php:301
1119
  msgctxt "as congratulations"
1120
  msgid "Congrats"
1121
  msgstr "Congratulazioni"
1122
 
1123
- #: includes/i18n.php:302
1124
  msgctxt "exclamation"
1125
  msgid "Oops"
1126
  msgstr "Ops"
1127
 
1128
- #: includes/i18n.php:303
1129
  msgctxt "interjection expressing joy or exuberance"
1130
  msgid "Yee-haw"
1131
  msgstr "Evvai"
1132
 
1133
- #: includes/i18n.php:304
1134
  msgctxt ""
1135
- "(especially in electronic communication) used to express elation, "
1136
- "enthusiasm, or triumph."
1137
  msgid "W00t"
1138
  msgstr "Forte"
1139
 
1140
- #: includes/i18n.php:306
1141
  msgctxt "a positive response"
1142
  msgid "Right on"
1143
  msgstr "Sì"
1144
 
1145
- #: includes/i18n.php:307
1146
  msgctxt ""
1147
- "something somebody says when they are thinking about what you have just "
1148
- "said. "
1149
  msgid "Hmm"
1150
  msgstr "Uhm"
1151
 
1152
- #: includes/i18n.php:309
1153
  msgid "O.K"
1154
  msgstr "OK"
1155
 
1156
- #: includes/i18n.php:310
1157
  msgctxt "exclamation"
1158
  msgid "Hey"
1159
  msgstr "Hey"
1160
 
1161
- #: includes/i18n.php:311
1162
  msgctxt "advance notice of something that will need attention."
1163
  msgid "Heads up"
1164
  msgstr "Attenzione"
1165
 
1166
- #: includes/i18n.php:316
1167
  msgid "Seems like you got the latest release."
1168
  msgstr "Sembra che tu abbia la versione più recente."
1169
 
1170
- #: includes/i18n.php:317
1171
  msgid "You are all good!"
1172
  msgstr "Sei fantastico!"
1173
 
1174
- #: includes/i18n.php:318
1175
- msgid ""
1176
- "Sorry, we could not complete the email update. Another user with the same "
1177
- "email is already registered."
1178
  msgstr "Siamo spiacenti, non siamo riusciti a completare l'aggiornamento via email. Un altro utente con lo stesso indirizzo email è già registrato."
1179
 
1180
- #: includes/i18n.php:319
1181
- msgid ""
1182
- "If you would like to give up the ownership of the plugin's account to %s "
1183
- "click the Change Ownership button."
1184
  msgstr "Se vuoi cedere la proprietá dell'account del plugin a %s clicca su Cambia Proprietà."
1185
 
1186
- #: includes/i18n.php:320
1187
- msgid ""
1188
- "Your email was successfully updated. You should receive an email with "
1189
- "confirmation instructions in few moments."
1190
  msgstr "Il tuo indirizzo email è stato aggiornato correttamente. Riceverai un'email con le istruzioni di conferma in pochi istanti."
1191
 
1192
- #: includes/i18n.php:321
1193
  msgid "Your name was successfully updated."
1194
  msgstr "Il tuo nome è stato aggiornato correttamente."
1195
 
1196
- #: includes/i18n.php:322
1197
  msgid "You have successfully updated your %s."
1198
  msgstr "Hai aggiornato con successo il tuo %s."
1199
 
1200
- #: includes/i18n.php:323
1201
  msgid "Please provide your full name."
1202
  msgstr "Per favore inserisci il tuo nome completo."
1203
 
1204
- #: includes/i18n.php:324
1205
- msgid ""
1206
- "Verification mail was just sent to %s. If you can't find it after 5 min, "
1207
- "please check your spam box."
1208
  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."
1209
 
1210
- #: includes/i18n.php:325
1211
- msgid ""
1212
- "Just letting you know that the add-ons information of %s is being pulled "
1213
- "from an external server."
1214
  msgstr "Le informazioni sugli add-on di %s vengono scaricate da un server esterno."
1215
 
1216
- #: includes/i18n.php:326
1217
  msgid "No credit card required"
1218
  msgstr "Nessuna carta di credito richiesta"
1219
 
1220
- #: includes/i18n.php:327
1221
  msgid "Premium plugin version was successfully activated."
1222
  msgstr "La versione Premium del plugin è stata attivata correttamente."
1223
 
1224
- #: includes/i18n.php:328
1225
  msgid "The upgrade of %s was successfully completed."
1226
  msgstr "L'aggiornamento di %s è stato completato con successo."
1227
 
1228
- #: includes/i18n.php:329
1229
  msgid "Your account was successfully activated with the %s plan."
1230
  msgstr "Il tuo account è stato attivato correttamente con il piano %s."
1231
 
1232
- #: includes/i18n.php:330
1233
  msgid "Download the latest %s version now"
1234
  msgstr "Scarica l'ultima versione di %s"
1235
 
1236
- #: includes/i18n.php:331
1237
  msgid "Please follow these steps to complete the upgrade"
1238
  msgstr "Segui i passi seguenti per completare l'aggiornamento"
1239
 
1240
- #: includes/i18n.php:332
1241
  msgid "Download the latest %s version"
1242
  msgstr "Scarica l'ultima versione di %s"
1243
 
1244
- #: includes/i18n.php:333
1245
  msgid "Download the latest version"
1246
  msgstr "Scarica l'ultima versione"
1247
 
1248
- #: includes/i18n.php:334
1249
  msgid "Deactivate the free version"
1250
  msgstr "Disattiva la versione gratuita"
1251
 
1252
- #: includes/i18n.php:335
1253
  msgid "Upload and activate the downloaded version"
1254
  msgstr "Carica e attiva la versione scaricata"
1255
 
1256
- #: includes/i18n.php:336
1257
  msgid "How to upload and activate?"
1258
  msgstr "Come faccio a caricare ed attivare?"
1259
 
1260
- #: includes/i18n.php:337
1261
  msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1262
  msgid "%s Add-on was successfully purchased."
1263
  msgstr "L' add-on %s è stato acquistato con successo."
1264
 
1265
- #: includes/i18n.php:339
1266
  msgid "Your %s Add-on plan was successfully upgraded."
1267
  msgstr "Il piano del tuo add-on %s è stato aggiornato con successo."
1268
 
1269
- #: includes/i18n.php:340
1270
  msgid "Your email has been successfully verified - you are AWESOME!"
1271
  msgstr "Il tuo indirizzo email è stato verificato con successo - SEI UN GRANDE!"
1272
 
1273
- #: includes/i18n.php:341
1274
  msgid "Your plan was successfully upgraded."
1275
  msgstr "Il piano è stato aggiornato con successo."
1276
 
1277
- #: includes/i18n.php:342
1278
  msgid "Your plan was successfully changed to %s."
1279
  msgstr "Il piano è stato cambiato con successo a %s."
1280
 
1281
- #: includes/i18n.php:343
1282
- msgid ""
1283
- "Your license has expired. You can still continue using the free plugin "
1284
- "forever."
1285
  msgstr "La licenza è scaduta. È comunque possibile continuare ad utilizzare il plugin gratuito per sempre."
1286
 
1287
- #: includes/i18n.php:344
1288
- msgid ""
1289
- "Your license has been cancelled. If you think it's a mistake, please contact"
1290
- " support."
1291
  msgstr "La tua licenza è stata cancellata. Se credi sia un errore, per favore contatta il supporto."
1292
 
1293
- #: includes/i18n.php:345
1294
  msgid "Your trial has been successfully started."
1295
  msgstr "La versione di prova è stata avviata correttamente."
1296
 
1297
- #: includes/i18n.php:346
1298
  msgid "Your license was successfully activated."
1299
  msgstr "La tua licenza è stata attivata correttamente."
1300
 
1301
- #: includes/i18n.php:347
1302
  msgid "It looks like your site currently doesn't have an active license."
1303
  msgstr "Sembra che il tuo sito non disponga di alcuna licenza attiva."
1304
 
1305
- #: includes/i18n.php:348
1306
- msgid ""
1307
- "Your license was successfully deactivated, you are back to the %s plan."
1308
  msgstr "La tua licenza é stata disattivata con successo, sei tornato al piano %s."
1309
 
1310
- #: includes/i18n.php:349
1311
  msgid "It looks like the license deactivation failed."
1312
  msgstr "Sembra che la disattivazione della licenza non sia riuscita."
1313
 
1314
- #: includes/i18n.php:350
1315
  msgid "It looks like the license could not be activated."
1316
  msgstr "Sembra che la licenza non possa essere attivata."
1317
 
1318
- #: includes/i18n.php:351
1319
  msgid "Error received from the server:"
1320
  msgstr "Errore ricevuto dal server:"
1321
 
1322
- #: includes/i18n.php:352
1323
- msgid ""
1324
- "Your trial has expired. You can still continue using all our free features."
1325
  msgstr "La versione di prova è scaduta. Si può comunque continuare a utilizzare tutte le nostre funzioni gratuite."
1326
 
1327
- #: includes/i18n.php:353
1328
- msgid ""
1329
- "Your plan was successfully downgraded. Your %s plan license will expire in "
1330
- "%s."
1331
  msgstr "Il tuo piano è stato declassato con successo. La licenza del piano %s scadrà in %s."
1332
 
1333
- #: includes/i18n.php:354
1334
- msgid ""
1335
- "Seems like we are having some temporary issue with your plan downgrade. "
1336
- "Please try again in few minutes."
1337
  msgstr "Stiamo avendo qualche problema temporaneo con il downgrade del piano. Riprova tra qualche minuto."
1338
 
1339
- #: includes/i18n.php:355
1340
- msgid ""
1341
- "It looks like you are not in trial mode anymore so there's nothing to cancel"
1342
- " :)"
1343
  msgstr "Sembra che tu non stia più usando la prova gratuita, quindi non c'è niente che tu debba annullare :)"
1344
 
1345
- #: includes/i18n.php:356
1346
  msgid "Your %s free trial was successfully cancelled."
1347
  msgstr "Il tuo periodo di prova gratuito %s è stato annullato con successo."
1348
 
1349
- #: includes/i18n.php:357
1350
  msgctxt "%s - numeric version number"
1351
  msgid "Version %s was released."
1352
  msgstr "La versione %s é stata rilasciata."
1353
 
1354
- #: includes/i18n.php:358
1355
  msgid "Please download %s."
1356
  msgstr "Scarica %s."
1357
 
1358
- #: includes/i18n.php:359
1359
  msgctxt "%s - plan name, as the latest professional version here"
1360
  msgid "the latest %s version here"
1361
  msgstr "l'ultima versione %s é quì"
1362
 
1363
- #: includes/i18n.php:361
1364
- msgid ""
1365
- "How do you like %s so far? Test all our %s premium features with a %d-day "
1366
- "free trial."
1367
  msgstr "Come sta andando con %s? Prova tutte le funzionalità premium di %s con una prova gratuita di %d giorni."
1368
 
1369
- #: includes/i18n.php:362
1370
  msgctxt "call to action"
1371
  msgid "Start free trial"
1372
  msgstr "Inizia il periodo di prova gratuito"
1373
 
1374
- #: includes/i18n.php:363
1375
  msgid "Starting trial"
1376
  msgstr "Inizio del periodo di prova gratuito"
1377
 
1378
- #: includes/i18n.php:364
1379
  msgid "Please wait"
1380
  msgstr "Attendere"
1381
 
1382
- #: includes/i18n.php:365
1383
- msgid ""
1384
- "Seems like we are having some temporary issue with your trial cancellation. "
1385
- "Please try again in few minutes."
1386
  msgstr "Stiamo avendo qualche problema temporaneo con l'annullamento del periodo di prova. Riprova tra qualche minuto."
1387
 
1388
- #: includes/i18n.php:366
1389
  msgid "You already utilized a trial before."
1390
  msgstr "Hai già utilizzato una prova gratuita in passato."
1391
 
1392
- #: includes/i18n.php:367
1393
  msgid "You are already running the plugin in a trial mode."
1394
  msgstr "Stai già usando il plugin in modalità di prova gratuita."
1395
 
1396
- #: includes/i18n.php:368
1397
  msgid "Plan %s do not exist, therefore, can't start a trial."
1398
  msgstr "Il piano %s non esiste, per questo motivo non è possibile iniziare il periodo di prova."
1399
 
1400
- #: includes/i18n.php:369
1401
  msgid "Plan %s does not support a trial period."
1402
  msgstr "Il piano %s non supporta il periodo di prova."
1403
 
1404
- #: includes/i18n.php:370
1405
  msgid "None of the plugin's plans supports a trial period."
1406
  msgstr "Non esiste alcun piano del plugin che offra il periodo di prova."
1407
 
1408
- #: includes/i18n.php:371
1409
- msgid ""
1410
- "Unexpected API error. Please contact the plugin's author with the following "
1411
- "error."
1412
  msgstr "Errore inaspettato dell'API. Per favore contatta l'autore del plugin riportando il seguente errore."
1413
 
1414
- #: includes/i18n.php:372
1415
  msgid "No commitment for %s days - cancel anytime!"
1416
  msgstr "Nessun impegno per %s giorni - puoi annullare in qualsiasi momento!"
1417
 
1418
- #: includes/i18n.php:373
1419
- msgid ""
1420
- "Your license has expired. You can still continue using all the %s features, "
1421
- "but you'll need to renew your license to continue getting updates and "
1422
- "support."
1423
  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."
1424
 
1425
- #: includes/i18n.php:374
1426
  msgid "Couldn't activate %s."
1427
  msgstr "Non é stato possibile attivare %s."
1428
 
1429
- #: includes/i18n.php:375
1430
  msgid "Please contact us with the following message:"
1431
  msgstr "Contattaci con il seguente messaggio:"
1432
 
1433
- #: includes/i18n.php:376
1434
- msgid ""
1435
- "It looks like you are still on the %s plan. If you did upgrade or change "
1436
- "your plan, it's probably an issue on our side - sorry."
1437
  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."
1438
 
1439
- #: includes/i18n.php:377
1440
  msgid "Please contact us here"
1441
  msgstr "Contattaci qui"
1442
 
1443
- #: includes/i18n.php:378
1444
- msgid ""
1445
- "I have upgraded my account but when I try to Sync the License, the plan "
1446
- "remains %s."
1447
  msgstr "Ho aggiornato il mio account, ma quando cerco di sincronizzare la licenza, il piano rimane %s."
1448
 
1449
- #: includes/i18n.php:381
1450
  msgid "From unknown reason, the API connectivity test failed."
1451
  msgstr "Il test di connettività dell'API ha fallito per motivi sconosciuti."
1452
 
1453
- #: includes/i18n.php:382
1454
- msgid ""
1455
- "It's probably a temporary issue on our end. Just to be sure, with your "
1456
- "permission, would it be o.k to run another connectivity test?"
1457
  msgstr "Si tratta probabilmente di un problema nei nostri sistemi. Per esserne sicuri, potresti darci il permesso di effettuare un ulteriore test della connettività? "
1458
 
1459
- #: includes/i18n.php:383
1460
- msgid ""
1461
- "We use PHP cURL library for the API calls, which is a very common library "
1462
- "and usually installed out of the box. Unfortunately, cURL is not installed "
1463
- "on your server."
1464
- 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."
1465
 
1466
- #: includes/i18n.php:384
1467
- msgid ""
1468
- "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
 
 
 
1469
  msgstr "Per un motivo sconosciuto, CloudFlare, il firewall che utilizziamo, blocca la connessione."
1470
 
1471
- #: includes/i18n.php:385
1472
  msgctxt "as pluginX requires an access to our API"
1473
  msgid "%s requires an access to our API."
1474
  msgstr "%s richiede un accesso alla nostra API."
1475
 
1476
- #: includes/i18n.php:387
1477
- msgid ""
1478
- "It looks like your server is using Squid ACL (access control lists), which "
1479
- "blocks the connection."
1480
  msgstr "Sembra che il tuo server stia usando Squid ACL (lista per il controllo degli accessi) il quale blocca la connessione."
1481
 
1482
- #: includes/i18n.php:388
1483
  msgid "I don't know what is Squid or ACL, help me!"
1484
  msgstr "Non ho idea di cosa sia Squid o ACL, aiutami!"
1485
 
1486
- #: includes/i18n.php389, includes/i18n.php:393
1487
- msgid ""
1488
- "We'll make sure to contact your hosting company and resolve the issue. You "
1489
- "will get a follow-up email to %s once we have an update."
1490
  msgstr "Contatteremo il tuo hosting e risolveremo il problema. Riceverai un' email a %s non appena ci saranno aggiornamenti."
1491
 
1492
- #: includes/i18n.php:390
1493
  msgid "I'm a system administrator"
1494
  msgstr "Sono un sistemista"
1495
 
1496
- #: includes/i18n.php:391
1497
- msgid ""
1498
- "Great, please whitelist the following domains: %s. Once you are done, "
1499
- "deactivate the plugin and activate it again."
1500
  msgstr "Perfetto, ora per favore aggiungi alla whitelist i seguenti domini: %s. Quando hai fatto, disattiva il plugin e riattivalo di nuovo."
1501
 
1502
- #: includes/i18n.php:392
1503
  msgid "I don't know what is cURL or how to install it, help me!"
1504
  msgstr "Non ho idea di cosa sia cURL o come installarlo, aiutami!"
1505
 
1506
- #: includes/i18n.php:394
1507
- msgid ""
1508
- "Great, please install cURL and enable it in your php.ini file. To make sure "
1509
- "it was successfully activated, use 'phpinfo()'. Once activated, deactivate "
1510
- "the plugin and reactivate it back again."
1511
- 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."
1512
 
1513
- #: includes/i18n.php:395
1514
- msgid ""
1515
- "We are sure it's an issue on our side and more than happy to resolve it for "
1516
- "you ASAP if you give us a chance."
1517
  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."
1518
 
1519
- #: includes/i18n.php:396
1520
- msgid ""
1521
- "Sorry for the inconvenience and we are here to help if you give us a chance."
1522
  msgstr "Siamo spiacenti per l'inconveniente e siamo qui per aiutarti con il tuo permesso."
1523
 
1524
- #: includes/i18n.php:397
1525
  msgid "Yes - I'm giving you a chance to fix it"
1526
  msgstr "Sì - sto dandovi la possibilità di risolvere il problema"
1527
 
1528
- #: includes/i18n.php:398
1529
- msgid ""
1530
- "We will do our best to whitelist your server and resolve this issue ASAP. "
1531
- "You will get a follow-up email to %s once we have an update."
1532
  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."
1533
 
1534
- #: includes/i18n.php:399
1535
  msgid "Let's try your previous version"
1536
  msgstr "Proviamo con la versione precedente"
1537
 
1538
- #: includes/i18n.php:400
1539
  msgid "Uninstall this version and install the previous one."
1540
  msgstr "Disinstalla questa versione e installa quella precedente."
1541
 
1542
- #: includes/i18n.php:401
1543
  msgid "That's exhausting, please deactivate"
1544
  msgstr "È estenuante, disattivalo"
1545
 
1546
- #: includes/i18n.php:402
1547
- msgid ""
1548
- "We feel your frustration and sincerely apologize for the inconvenience. Hope"
1549
- " to see you again in the future."
1550
  msgstr "Capiamo la tua frustrazione e ci scusiamo per l'inconveniente. Speriamo di rivederti nuovamente in futuro."
1551
 
1552
- #: includes/i18n.php:403
1553
- msgid ""
1554
- "Thank for giving us the chance to fix it! A message was just sent to our "
1555
- "technical staff. We will get back to you as soon as we have an update to %s."
1556
- " Appreciate your patience."
1557
  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."
1558
 
1559
- #: includes/i18n.php:404
1560
  msgctxt "%1s - plugin title, %2s - API domain"
1561
- msgid ""
1562
- "Your server is blocking the access to Freemius' API, which is crucial for "
1563
- "%1s synchronization. Please contact your host to whitelist %2s"
1564
  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."
1565
 
1566
- #: includes/i18n.php:406
1567
- msgid ""
1568
- "It seems like one of the authentication parameters is wrong. Update your "
1569
- "Public Key, Secret Key & User ID, and try again."
1570
  msgstr "Sembra che uno dei parametri di autenticazione sia sbagliato. Aggiorna la tua chiave pubblica, Secret Key & User ID e riprova."
1571
 
1572
- #: includes/i18n.php:409
1573
- msgid ""
1574
- "Please check your mailbox, you should receive an email via %s to confirm the"
1575
- " ownership change. From security reasons, you must confirm the change within"
1576
- " the next 15 min. If you cannot find the email, please check your spam "
1577
- "folder."
1578
  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."
1579
 
1580
- #: includes/i18n.php:410
1581
- msgid ""
1582
- "Thanks for confirming the ownership change. An email was just sent to %s for"
1583
- " final approval."
1584
  msgstr "Grazie per aver confermato il cambiamento del proprietario. Un' email è stata appena inviata a %s per la conferma finale."
1585
 
1586
- #: includes/i18n.php:411
1587
  msgid "%s is the new owner of the account."
1588
  msgstr "%s è il nuovo proprietario dell'account."
1589
 
1590
- #: includes/i18n.php:413
1591
  msgctxt "addonX cannot run without pluginY"
1592
  msgid "%s cannot run without %s."
1593
  msgstr "%s non può funzionare senza %s."
1594
 
1595
- #: includes/i18n.php:415
1596
  msgctxt "addonX cannot run..."
1597
  msgid "%s cannot run without the plugin."
1598
  msgstr "%s non può funzionare senza il plugin."
1599
 
1600
- #: includes/i18n.php:416
1601
  msgctxt "pluginX activation was successfully..."
1602
  msgid "%s activation was successfully completed."
1603
  msgstr "%s è stato attivato con successo."
1604
 
1605
- #: includes/i18n.php:418
1606
  msgctxt "Plugin installer section title"
1607
  msgid "Features & Pricing"
1608
  msgstr "Caratteristiche & prezzi"
1609
 
1610
- #: includes/i18n.php:419
1611
  msgid "Add-on must be deployed to WordPress.org or Freemius."
1612
  msgstr "L'add-on dev'essere distribuito da WordPress.org o Freemius."
1613
 
1614
- #: includes/i18n.php:420
1615
  msgid "Paid add-on must be deployed to Freemius."
1616
  msgstr "Gli add-on a pagamento devono essere distribuiti da Freemius."
1617
 
1618
- #: includes/i18n.php:424
1619
- msgid ""
1620
- "%s is a premium only add-on. You have to purchase a license first before "
1621
- "activating the plugin."
1622
  msgstr "%s è un add-on premium. Devi comprare una licenza prima di poter attivare il plugin."
1623
 
1624
- #: includes/i18n.php:425
1625
- msgid ""
1626
- "%s free trial was successfully cancelled. Since the add-on is premium only "
1627
- "it was automatically deactivated. If you like to use it in the future, "
1628
- "you'll have to purchase a license."
1629
  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."
1630
 
1631
- #: includes/i18n.php:430
1632
  msgctxt "as every month"
1633
  msgid "Monthly"
1634
  msgstr "Mensilmente"
1635
 
1636
- #: includes/i18n.php:431
1637
  msgctxt "as monthly period"
1638
  msgid "mo"
1639
  msgstr "mese"
1640
 
1641
- #: includes/i18n.php:432
1642
  msgctxt "as once a year"
1643
  msgid "Annual"
1644
  msgstr "Annuale"
1645
 
1646
- #: includes/i18n.php:433
1647
  msgctxt "as once a year"
1648
  msgid "Annually"
1649
  msgstr "Annualmente"
1650
 
1651
- #: includes/i18n.php:434
1652
  msgctxt "as once a year"
1653
  msgid "Once"
1654
  msgstr "Una volta"
1655
 
1656
- #: includes/i18n.php:435
1657
  msgctxt "as annual period"
1658
  msgid "year"
1659
  msgstr "anno"
1660
 
1661
- #: includes/i18n.php:436
1662
  msgid "Lifetime"
1663
  msgstr "Tutta la vita"
1664
 
1665
- #: includes/i18n.php:437
1666
  msgctxt "e.g. the best product"
1667
  msgid "Best"
1668
  msgstr "Migliore"
1669
 
1670
- #: includes/i18n.php:438
1671
  msgctxt "e.g. billed monthly"
1672
  msgid "Billed %s"
1673
  msgstr "Fatturato %s"
1674
 
1675
- #: includes/i18n.php:439
1676
  msgctxt "as a discount of $5 or 10%"
1677
  msgid "Save %s"
1678
  msgstr "Risparmia %s"
1679
 
1680
- #: includes/i18n.php:441
1681
  msgid "View details"
1682
  msgstr "Visualizza dettagli"
1683
 
1684
- #: includes/i18n.php:445
1685
  msgctxt "button label"
1686
  msgid "Approve & Start Trial"
1687
  msgstr "Approva e inizia il periodo di prova gratuito"
1688
 
1689
- #: includes/i18n.php:447
1690
- msgid ""
1691
- "You are 1-click away from starting your %1$s-day free trial of the %2$s "
1692
- "plan."
1693
  msgstr "Sei a un clic di distanza dall'iniziare il tuo periodo di prova gratuito di %1$s giorni per il piano %2$s."
1694
 
1695
- #: includes/i18n.php:449
1696
- msgid ""
1697
- "For compliance with the WordPress.org guidelines, before we start the trial "
1698
- "we ask that you opt-in with your user and non-sensitive site information, "
1699
- "allowing the plugin to periodically send data to %s to check for version "
1700
- "updates and to validate your trial."
1701
  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."
1702
 
1703
- #: includes/i18n.php:455
1704
  msgid "Business name"
1705
  msgstr "Nome della compagnia"
1706
 
1707
- #: includes/i18n.php:456
1708
  msgid "Tax / VAT ID"
1709
  msgstr "Numero Partita Iva o VAT"
1710
 
1711
- #: includes/i18n.php:457
1712
  msgid "Address Line %d"
1713
  msgstr "Riga indirizzo %d"
1714
 
1715
- #: includes/i18n.php:458
1716
  msgid "Country"
1717
  msgstr "Nazione"
1718
 
1719
- #: includes/i18n.php:459
1720
  msgid "Select Country"
1721
  msgstr "Seleziona Nazione"
1722
 
1723
- #: includes/i18n.php:460
1724
  msgid "City"
1725
  msgstr "Città"
1726
 
1727
- #: includes/i18n.php:461
1728
  msgid "Town"
1729
  msgstr "Cittadina"
1730
 
1731
- #: includes/i18n.php:462
1732
  msgid "State"
1733
  msgstr "Stato"
1734
 
1735
- #: includes/i18n.php:463
1736
  msgid "Province"
1737
  msgstr "Provincia"
1738
 
1739
- #: includes/i18n.php:464
1740
  msgid "ZIP / Postal Code"
1741
  msgstr "CAP"
1742
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1743
  #: includes/i18n.php:479
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1744
  msgctxt "Plugin installer section title"
1745
  msgid "Description"
1746
  msgstr "Descrizione"
1747
 
1748
- #: includes/i18n.php:480
1749
  msgctxt "Plugin installer section title"
1750
  msgid "Installation"
1751
  msgstr "Installazione"
1752
 
1753
- #: includes/i18n.php:481
1754
  msgctxt "Plugin installer section title"
1755
  msgid "FAQ"
1756
  msgstr "FAQ"
1757
 
1758
- #: includes/i18n.php:482
1759
  msgctxt "Plugin installer section title"
1760
  msgid "Changelog"
1761
  msgstr "Changelog"
1762
 
1763
- #: includes/i18n.php:483
1764
  msgctxt "Plugin installer section title"
1765
  msgid "Reviews"
1766
  msgstr "Recensioni"
1767
 
1768
- #: includes/i18n.php:484
1769
  msgctxt "Plugin installer section title"
1770
  msgid "Other Notes"
1771
  msgstr "Altre note"
1772
 
1773
- #: includes/i18n.php:486
1774
  msgid "%s star"
1775
  msgstr "%s stella"
1776
 
1777
- #: includes/i18n.php:488
1778
  msgid "%s stars"
1779
  msgstr "%s stelle"
1780
 
1781
- #: includes/i18n.php:490
1782
  msgid "%s rating"
1783
  msgstr "%s valutazione"
1784
 
1785
- #: includes/i18n.php:492
1786
  msgid "%s ratings"
1787
  msgstr "%s valutazioni"
1788
 
1789
- #: includes/i18n.php:494
1790
  msgid "%s time"
1791
  msgstr "% volta"
1792
 
1793
- #: includes/i18n.php:496
1794
  msgid "%s times"
1795
  msgstr "%s volte"
1796
 
1797
- #: includes/i18n.php:498
1798
  msgid "Click to see reviews that provided a rating of %s"
1799
  msgstr "Fai clic per vedere le recensioni che hanno fornito una valutazione di %s"
1800
 
1801
- #: includes/i18n.php:499
1802
  msgid "Last Updated"
1803
  msgstr "Ultimo aggiornamento"
1804
 
1805
- #: includes/i18n.php:500
1806
  msgid "Requires WordPress Version:"
1807
  msgstr "Richiede la versione di WordPress:"
1808
 
1809
- #: includes/i18n.php:501
1810
  msgctxt "as the plugin author"
1811
  msgid "Author:"
1812
  msgstr "Autore:"
1813
 
1814
- #: includes/i18n.php:502
1815
  msgid "Compatible up to:"
1816
  msgstr "Compatibile fino a:"
1817
 
1818
- #: includes/i18n.php:503
1819
  msgid "Downloaded:"
1820
  msgstr "Scaricato:"
1821
 
1822
- #: includes/i18n.php:504
1823
  msgid "WordPress.org Plugin Page"
1824
  msgstr "Pagina dei plugin di WordPress.org"
1825
 
1826
- #: includes/i18n.php:505
1827
  msgid "Plugin Homepage"
1828
  msgstr "Homepage del plugin"
1829
 
1830
- #: includes/i18n.php:506
1831
  msgid "Donate to this plugin"
1832
  msgstr "Fai una donazione a questo plugin"
1833
 
1834
- #: includes/i18n.php:507
1835
  msgid "Average Rating"
1836
  msgstr "Valutazione media"
1837
 
1838
- #: includes/i18n.php:508
1839
  msgid "based on %s"
1840
  msgstr "basato su %s"
1841
 
1842
- #: includes/i18n.php:509
1843
  msgid "Warning:"
1844
  msgstr "Avviso:"
1845
 
1846
- #: includes/i18n.php:510
1847
  msgid "Contributors"
1848
  msgstr "Contributori"
1849
 
1850
- #: includes/i18n.php:511
1851
  msgid "Plugin Install"
1852
  msgstr "Installazione del plugin"
1853
 
1854
- #: includes/i18n.php:512
1855
- msgid ""
1856
- "This plugin has not been tested with your current version of WordPress."
1857
  msgstr "Questo plugin non è stato testato con la versione corrente di WordPress."
1858
 
1859
- #: includes/i18n.php:513
1860
- msgid ""
1861
- "This plugin has not been marked as compatible with your version of "
1862
- "WordPress."
1863
  msgstr "Questo plugin non è stato segnato come compatibile con la tua versione di WordPress."
1864
 
1865
- #: includes/i18n.php:514
1866
  msgid "Newer Version (%s) Installed"
1867
  msgstr "Versione più recente (%s) installata"
1868
 
1869
- #: includes/i18n.php:515
1870
  msgid "Latest Version Installed"
1871
  msgstr "Versione più recente installata"
10
  "Project-Id-Version: WordPress SDK\n"
11
  "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
12
  "POT-Creation-Date: \n"
13
+ "PO-Revision-Date: 2017-05-12 17:32+0000\n"
14
+ "Last-Translator: Vova Feldman <vova@freemius.com>\n"
15
+ "Language: it_IT\n"
16
  "Language-Team: Italian (Italy) (http://www.transifex.com/freemius/wordpress-sdk/language/it_IT/)\n"
 
17
  "Content-Type: text/plain; charset=UTF-8\n"
18
  "Content-Transfer-Encoding: 8bit\n"
 
19
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20
+ "MIME-Version: 1.0\n"
21
  "X-Poedit-Basepath: ..\n"
22
  "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"
23
  "X-Poedit-SearchPath-0: .\n"
24
  "X-Poedit-SearchPathExcluded-0: *.js\n"
25
  "X-Poedit-SourceCharset: UTF-8\n"
26
 
27
+ #: includes/i18n.php:37
28
  msgid "Account"
29
  msgstr "Account"
30
 
31
+ #: includes/i18n.php:38
32
  msgid "Add On"
33
  msgstr "Add-on"
34
 
35
+ #: includes/i18n.php:39
36
  msgid "Contact Us"
37
  msgstr "Contattaci"
38
 
39
+ #: includes/i18n.php:40
40
  msgid "Contact Support"
41
  msgstr "Contatta il supporto"
42
 
43
+ #: includes/i18n.php:41
44
  msgid "Change Ownership"
45
  msgstr "Cambia Proprietario"
46
 
47
+ #: includes/i18n.php:42
48
  msgid "Support"
49
  msgstr "Supporto"
50
 
51
+ #: includes/i18n.php:43
52
  msgid "Support Forum"
53
  msgstr "Forum di supporto"
54
 
55
+ #: includes/i18n.php:44
56
  msgid "Add Ons"
57
  msgstr "Add-on"
58
 
59
+ #: includes/i18n.php:45
60
  msgctxt "verb"
61
  msgid "Upgrade"
62
  msgstr "Aggiornamento"
63
 
64
+ #: includes/i18n.php:46
65
  msgid "Awesome"
66
  msgstr "Fantastico"
67
 
68
+ #: includes/i18n.php:47
69
  msgctxt "noun"
70
  msgid "Pricing"
71
  msgstr "Prezzi"
72
 
73
+ #: includes/i18n.php:48
74
  msgctxt "noun"
75
  msgid "Price"
76
  msgstr "Prezzo"
77
 
78
+ #: includes/i18n.php:49
79
  msgid "Unlimited Updates"
80
  msgstr "Aggiornamenti Illimitati"
81
 
82
+ #: includes/i18n.php:50
83
  msgctxt "verb"
84
  msgid "Downgrade"
85
  msgstr "Downgrade"
86
 
87
+ #: includes/i18n.php:51
88
+ msgctxt "verb"
89
+ msgid "Cancel Subscription"
90
+ msgstr "Cancel Subscription"
91
+
92
+ #: includes/i18n.php:52
93
  msgid "Cancel Trial"
94
  msgstr "Annulla prova gratuita"
95
 
96
+ #: includes/i18n.php:53
97
  msgid "Free Trial"
98
  msgstr "Prova gratuita"
99
 
100
+ #: includes/i18n.php:54
101
  msgid "Start my free %s"
102
  msgstr "Inizia la mia %s"
103
 
104
+ #: includes/i18n.php:55
105
  msgid "No commitment for %s - cancel anytime"
106
  msgstr "Nessun impegno con %s - cancella quando vuoi"
107
 
108
+ #: includes/i18n.php:56
109
  msgid "After your free %s, pay as little as %s"
110
  msgstr "Dopo il tuo %s gratuito, paghi solamente %s"
111
 
112
+ #: includes/i18n.php:57
113
  msgid "Details"
114
  msgstr "Dettagli"
115
 
116
+ #: includes/i18n.php:58
117
  msgid "Account Details"
118
  msgstr "Dettagli dell'account"
119
 
120
+ #: includes/i18n.php:59
121
  msgctxt "verb"
122
  msgid "Delete"
123
  msgstr "Elimina"
124
 
125
+ #: includes/i18n.php:60
126
  msgctxt "verb"
127
  msgid "Show"
128
  msgstr "Mostra"
129
 
130
+ #: includes/i18n.php:61
131
  msgctxt "verb"
132
  msgid "Hide"
133
  msgstr "Nascondi"
134
 
135
+ #: includes/i18n.php:62
136
  msgctxt "verb"
137
  msgid "Edit"
138
  msgstr "Modifica"
139
 
140
+ #: includes/i18n.php:63
141
  msgctxt "verb"
142
  msgid "Update"
143
  msgstr "Aggiorna"
144
 
145
+ #: includes/i18n.php:64
146
  msgid "Date"
147
  msgstr "Data"
148
 
149
+ #: includes/i18n.php:65
150
  msgid "Amount"
151
  msgstr "Importo"
152
 
153
+ #: includes/i18n.php:66
154
  msgid "Invoice"
155
  msgstr "Fattura"
156
 
157
+ #: includes/i18n.php:67
158
  msgid "Billing"
159
  msgstr "Fatturazione"
160
 
161
+ #: includes/i18n.php:68
162
  msgid "Payments"
163
  msgstr "Pagamenti"
164
 
165
+ #: includes/i18n.php:69
166
  msgid "Delete Account"
167
  msgstr "Elimina Account"
168
 
169
+ #: includes/i18n.php:70
170
  msgctxt "as close a window"
171
  msgid "Dismiss"
172
  msgstr "Chiudi"
173
 
174
+ #: includes/i18n.php:71
175
  msgctxt "as product pricing plan"
176
  msgid "Plan"
177
  msgstr "Piano"
178
 
179
+ #: includes/i18n.php:72
180
  msgid "Change Plan"
181
  msgstr "Cambia piano"
182
 
183
+ #: includes/i18n.php:73
184
  msgctxt "as download professional version"
185
  msgid "Download %s Version"
186
  msgstr "Scarica la versione %s"
187
 
188
+ #: includes/i18n.php:74
189
  msgctxt "as download professional version now"
190
  msgid "Download %s version now"
191
  msgstr "Scarica la versione %s ora"
192
 
193
+ #: includes/i18n.php:75
194
  msgctxt "as download latest version"
195
  msgid "Download Latest"
196
  msgstr "Scarica l'ultima versione"
197
 
198
+ #: includes/i18n.php:76
199
  msgctxt "E.g. you have a professional license."
200
  msgid "You have a %s license."
201
  msgstr "Hai la licenza %s."
202
 
203
+ #: includes/i18n.php:77
204
  msgid "New"
205
  msgstr "Nuovo"
206
 
207
+ #: includes/i18n.php:78
208
  msgid "Free"
209
  msgstr "Gratuito"
210
 
211
+ #: includes/i18n.php:79
212
  msgctxt "as trial plan"
213
  msgid "Trial"
214
  msgstr "Prova gratuita"
215
 
216
+ #: includes/i18n.php:80
217
  msgctxt "as starting a trial plan"
218
  msgid "Start Trial"
219
  msgstr "Inizia il periodo di prova gratuito"
220
 
221
+ #: includes/i18n.php:81
222
  msgctxt "verb"
223
  msgid "Purchase"
224
  msgstr "Acquisto"
225
 
226
+ #: includes/i18n.php:82
227
  msgid "Purchase License"
228
  msgstr "Acquista licenza"
229
 
230
+ #: includes/i18n.php:83
231
  msgctxt "verb"
232
  msgid "Buy"
233
  msgstr "Compra"
234
 
235
+ #: includes/i18n.php:84
236
  msgid "Buy License"
237
  msgstr "Compra licenza"
238
 
239
+ #: includes/i18n.php:85
240
  msgid "Single Site License"
241
  msgstr "Licenza per sito singolo"
242
 
243
+ #: includes/i18n.php:86
244
  msgid "Unlimited Licenses"
245
  msgstr "Licenze illimitate"
246
 
247
+ #: includes/i18n.php:87
248
  msgid "Up to %s Sites"
249
  msgstr "Fino a %s siti"
250
 
251
+ #: includes/i18n.php:88
252
  msgid "%sRenew your license now%s to access version %s features and support."
253
  msgstr "%sRinnova la tua licenza ora%s per accedere a funzionalità e supporto della versione %s."
254
 
255
+ #: includes/i18n.php:89
256
+ msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
 
 
257
  msgstr "Inserisci qui sotto l'indirizzo email che hai usato per registrare l'aggiornamento e ti invieremo di nuovo la chiave di licenza."
258
 
259
+ #: includes/i18n.php:90
260
  msgctxt "e.g. Professional Plan"
261
  msgid "%s Plan"
262
  msgstr "Piano %s"
263
 
264
+ #: includes/i18n.php:91
265
  msgid "You are just one step away - %s"
266
  msgstr "Sei a un passo dalla fine - %s"
267
 
268
+ #: includes/i18n.php:92
269
  msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
270
  msgid "Complete \"%s\" Activation Now"
271
  msgstr "Completa l'attivazione di \"%s\" ora"
272
 
273
+ #: includes/i18n.php:94
274
  msgid "We made a few tweaks to the plugin, %s"
275
  msgstr "Abbiamo apportato alcune modifiche al plugin, %s"
276
 
277
+ #: includes/i18n.php:95
278
  msgid "Opt-in to make \"%s\" Better!"
279
  msgstr "Contribuisci a rendere \"%s\" migliore!"
280
 
281
+ #: includes/i18n.php:96
282
  msgid "Error"
283
  msgstr "Errore"
284
 
285
+ #: includes/i18n.php:97
286
+ msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
 
 
287
  msgstr "L'SDK di Freemius non è riuscito a trovare il file principale del plugin. Per favore contatta sdk@freemius.com riportando l'errore."
288
 
289
+ #: includes/i18n.php:100
290
  msgctxt "as expiration date"
291
  msgid "Expiration"
292
  msgstr "Scadenza"
293
 
294
+ #: includes/i18n.php:101
295
  msgctxt "as software license"
296
  msgid "License"
297
  msgstr "Licenza"
298
 
299
+ #: includes/i18n.php:102
300
  msgid "not verified"
301
  msgstr "non verificato"
302
 
303
+ #: includes/i18n.php:103
304
  msgid "Verify Email"
305
  msgstr "Verifica email"
306
 
307
+ #: includes/i18n.php:104
308
  msgctxt "e.g. expires in 2 months"
309
  msgid "Expires in %s"
310
  msgstr "Scade in %s"
311
 
312
+ #: includes/i18n.php:105
313
  msgctxt "e.g. auto renews in 2 months"
314
  msgid "Auto renews in %s"
315
  msgstr "Rinnovo automatico in %s"
316
 
317
+ #: includes/i18n.php:106
318
  msgid "No expiration"
319
  msgstr "Nessuna scadenza"
320
 
321
+ #: includes/i18n.php:107
322
  msgid "Expired"
323
  msgstr "Scaduto"
324
 
325
+ #: includes/i18n.php:108
326
  msgid "Cancelled"
327
  msgstr "Annullato"
328
 
329
+ #: includes/i18n.php:109
330
  msgctxt "e.g. In 2 hours"
331
  msgid "In %s"
332
  msgstr "In %s"
333
 
334
+ #: includes/i18n.php:110
335
  msgctxt "e.g. 2 min ago"
336
  msgid "%s ago"
337
  msgstr "%s fa"
338
 
339
+ #: includes/i18n.php:112
340
  msgid "%s or higher"
341
  msgstr "%s o superiore"
342
 
343
+ #: includes/i18n.php:113
344
  msgctxt "as plugin version"
345
  msgid "Version"
346
  msgstr "Versione"
347
 
348
+ #: includes/i18n.php:114
349
  msgid "Name"
350
  msgstr "Nome"
351
 
352
+ #: includes/i18n.php:115
353
  msgid "Email"
354
  msgstr "Email"
355
 
356
+ #: includes/i18n.php:116
357
  msgid "Email address"
358
  msgstr "Indirizzo email"
359
 
360
+ #: includes/i18n.php:117
361
  msgid "Verified"
362
  msgstr "Verificato"
363
 
364
+ #: includes/i18n.php:118
365
  msgid "Module"
366
  msgstr "Modulo"
367
 
368
+ #: includes/i18n.php:119
369
  msgid "Module Type"
370
  msgstr "Tipo di modulo"
371
 
372
+ #: includes/i18n.php:120
373
  msgid "Plugin"
374
  msgstr "Plugin"
375
 
376
+ #: includes/i18n.php:121
377
  msgid "Plugins"
378
  msgstr "Plugin"
379
 
380
+ #: includes/i18n.php:122
381
  msgid "Theme"
382
  msgstr "Tema"
383
 
384
+ #: includes/i18n.php:123
385
  msgid "Themes"
386
  msgstr "Temi"
387
 
388
+ #: includes/i18n.php:124
389
  msgctxt "as file/folder path"
390
  msgid "Path"
391
  msgstr "Percorso"
392
 
393
+ #: includes/i18n.php:125
394
  msgid "Title"
395
  msgstr "Titolo"
396
 
397
+ #: includes/i18n.php:126
398
  msgid "Free version"
399
  msgstr "Versione gratuita"
400
 
401
+ #: includes/i18n.php:127
402
  msgid "Premium version"
403
  msgstr "Versione premium"
404
 
405
+ #: includes/i18n.php:128
406
  msgctxt "as WP plugin slug"
407
  msgid "Slug"
408
  msgstr "Slug"
409
 
410
+ #: includes/i18n.php:129
411
  msgid "ID"
412
  msgstr "ID"
413
 
414
+ #: includes/i18n.php:130
415
  msgid "Users"
416
  msgstr "Utenti"
417
 
418
+ #: includes/i18n.php:131
419
  msgid "Plugin Installs"
420
  msgstr "Installazioni Plugin"
421
 
422
+ #: includes/i18n.php:132
423
  msgid "%s Installs"
424
  msgstr "%s Installazioni"
425
 
426
+ #: includes/i18n.php:133
427
  msgctxt "like websites"
428
  msgid "Sites"
429
  msgstr "Siti"
430
 
431
+ #: includes/i18n.php:134
432
  msgid "User ID"
433
  msgstr "ID utente"
434
 
435
+ #: includes/i18n.php:135
436
  msgid "Site ID"
437
  msgstr "ID del sito"
438
 
439
+ #: includes/i18n.php:136
440
  msgid "Public Key"
441
  msgstr "Chiave pubblica"
442
 
443
+ #: includes/i18n.php:137
444
  msgid "Secret Key"
445
  msgstr "Chiave segreta"
446
 
447
+ #: includes/i18n.php:138
448
  msgctxt "as secret encryption key missing"
449
  msgid "No Secret"
450
  msgstr "Nessuna chiave"
451
 
452
+ #: includes/i18n.php:139
453
  msgid "No ID"
454
  msgstr "Nessun ID"
455
 
456
+ #: includes/i18n.php:140
457
  msgctxt "as synchronize license"
458
  msgid "Sync License"
459
  msgstr "Sincronizza la licenza"
460
 
461
+ #: includes/i18n.php:141
462
  msgctxt "as synchronize"
463
  msgid "Sync"
464
  msgstr "Sincronizza"
465
 
466
+ #: includes/i18n.php:142
467
  msgid "Activate License"
468
  msgstr "Attiva licenza"
469
 
470
+ #: includes/i18n.php:143
471
  msgid "Activate Free Version"
472
  msgstr "Attiva versione gratuita"
473
 
474
+ #: includes/i18n.php:144
475
+ msgid "Please enter the license key that you received in the email right after the purchase:"
 
 
476
  msgstr "Per favore inserisci la chiave di licenza che hai ricevuto via mail subito dopo l'acquisto:"
477
 
478
+ #: includes/i18n.php:145
479
  msgid "Activating license..."
480
  msgstr "Sto attivando la licenza..."
481
 
482
+ #: includes/i18n.php:146
483
  msgid "Change License"
484
  msgstr "Cambia licenza"
485
 
486
+ #: includes/i18n.php:147
487
  msgid "Update License"
488
  msgstr "Aggiorna licenza"
489
 
490
+ #: includes/i18n.php:148
491
  msgid "Deactivate License"
492
  msgstr "Disattiva licenza"
493
 
494
+ #: includes/i18n.php:149
495
  msgid "Activate"
496
  msgstr "Attiva"
497
 
498
+ #: includes/i18n.php:150
499
  msgid "Deactivate"
500
  msgstr "Disattiva"
501
 
502
+ #: includes/i18n.php:151
503
  msgid "Skip & Deactivate"
504
  msgstr "Salta e disattiva"
505
 
506
+ #: includes/i18n.php:152
507
  msgid "Skip & %s"
508
  msgstr "Salta & %s"
509
 
510
+ #: includes/i18n.php:153
511
  msgid "No - just deactivate"
512
  msgstr "No - disattiva e basta"
513
 
514
+ #: includes/i18n.php:154
515
  msgid "Yes - do your thing"
516
  msgstr "Sì - fai pure"
517
 
518
+ #: includes/i18n.php:155
519
  msgctxt "active mode"
520
  msgid "Active"
521
  msgstr "Attiva"
522
 
523
+ #: includes/i18n.php:156
524
  msgctxt "is active mode?"
525
  msgid "Is Active"
526
  msgstr "è attiva"
527
 
528
+ #: includes/i18n.php:157
529
  msgid "Install Now"
530
  msgstr "Installa ora"
531
 
532
+ #: includes/i18n.php:158
533
  msgid "Install Update Now"
534
  msgstr "Installa l'aggiornamento ora"
535
 
536
+ #: includes/i18n.php:159
537
  msgid "More information about %s"
538
  msgstr "Ulteriori informazioni su %s"
539
 
540
+ #: includes/i18n.php:160
541
  msgid "Localhost"
542
  msgstr "Localhost"
543
 
544
+ #: includes/i18n.php:161
545
  msgctxt "as activate Professional plan"
546
  msgid "Activate %s Plan"
547
  msgstr "Attivare il piano %s"
548
 
549
+ #: includes/i18n.php:162
550
  msgctxt "as 5 licenses left"
551
  msgid "%s left"
552
  msgstr "%s rimanenti"
553
 
554
+ #: includes/i18n.php:163
555
  msgid "Last license"
556
  msgstr "Ultima licenza"
557
 
558
+ #: includes/i18n.php:164
559
  msgid "What is your %s?"
560
  msgstr "Qual è il tuo %s?"
561
 
562
+ #: includes/i18n.php:165
563
  msgid "Activate this add-on"
564
  msgstr "Attivare questo addon"
565
 
566
+ #: includes/i18n.php:166
567
+ 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?"
 
 
 
568
  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?"
569
 
570
+ #: includes/i18n.php:167
571
+ 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?"
 
 
 
 
572
  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?"
573
 
574
+ #: includes/i18n.php:168
575
+ 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?"
 
 
576
  msgstr "L'eliminazione non è temporanea. Cancella solo se non si desidera più utilizzare questo plugin. Sei sicuro di voler continuare con l'eliminazione?"
577
 
578
+ #: includes/i18n.php:169
579
+ msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
 
 
580
  msgstr "Effettuare il downgrade del piano interromperà immediatamente tutti i futuri pagamenti ricorrenti e la licenza del piano %s scadrà in %s."
581
 
582
+ #: includes/i18n.php:170
583
+ msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
 
 
584
  msgstr "Cancellando il periodo di prova gratuito bloccherai immediatamente l'accesso a tutte le funzionalità premium. Vuoi continuare?"
585
 
586
+ #: includes/i18n.php:171
587
+ msgid "You can still enjoy all %s features but you will not have access to plugin updates and support."
 
 
588
  msgstr "Puoi ancora sfruttare tutte le funzionalità di %s, ma non avrai accesso al supporto ed agli aggiornamenti del plugin."
589
 
590
+ #: includes/i18n.php:172
591
+ msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
 
 
592
  msgstr "Quando la tua licenza scadrà, potrai comunque continuare a usare la versione gratuita, ma NON avrai accesso alle funzionalità %s."
593
 
594
+ #: includes/i18n.php:173
595
  msgid "Are you sure you want to proceed?"
596
  msgstr "Sei sicuro di voler procedere?"
597
 
598
+ #: includes/i18n.php:176
599
  msgid "Add Ons for %s"
600
  msgstr "Add-on per %s"
601
 
602
+ #: includes/i18n.php:177
603
+ 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."
 
 
604
  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."
605
 
606
+ #: includes/i18n.php:179
607
  msgid "Anonymous feedback"
608
  msgstr "Feedback anonimo"
609
 
610
+ #: includes/i18n.php:180
611
  msgid "Quick feedback"
612
  msgstr "Feedback veloce"
613
 
614
+ #: includes/i18n.php:181
615
  msgid "If you have a moment, please let us know why you are deactivating"
616
  msgstr "Se hai un momento, potresti dirci perché lo hai disattivato?"
617
 
618
+ #: includes/i18n.php:182
619
  msgid "Yes - Deactivate"
620
  msgstr "Si - Disattiva"
621
 
622
+ #: includes/i18n.php:183
623
  msgid "Submit & Deactivate"
624
  msgstr "Invia & Disattiva"
625
 
626
+ #: includes/i18n.php:184
627
  msgid "Cancel"
628
  msgstr "Annulla"
629
 
630
+ #: includes/i18n.php:185
631
  msgid "I no longer need the plugin"
632
  msgstr "Non ho piú bisogno di questo plugin"
633
 
634
+ #: includes/i18n.php:186
635
  msgid "I found a better plugin"
636
  msgstr "Ho trovato un plugin migliore"
637
 
638
+ #: includes/i18n.php:187
639
  msgid "I only needed the plugin for a short period"
640
  msgstr "Avevo bisogno del plugin solo per un breve periodo"
641
 
642
+ #: includes/i18n.php:188
643
  msgid "The plugin broke my site"
644
  msgstr "Il plugin ha causato problemi al mio sito"
645
 
646
+ #: includes/i18n.php:189
647
  msgid "The plugin suddenly stopped working"
648
  msgstr "Il plugin ha smesso di funzionare"
649
 
650
+ #: includes/i18n.php:190
651
  msgid "I can't pay for it anymore"
652
  msgstr "Non posso piú pagarlo"
653
 
654
+ #: includes/i18n.php:191
655
  msgid "It's a temporary deactivation. I'm just debugging an issue."
656
  msgstr "È una disattivazione temporanea. Sto solo cercando di risolvere un problema."
657
 
658
+ #: includes/i18n.php:192
659
  msgctxt ""
 
 
660
  msgid "Other"
661
  msgstr "Altro"
662
 
663
+ #: includes/i18n.php:194
664
  msgid "Kindly tell us the reason so we can improve."
665
  msgstr "Spiegandoci il motivo ci aiuterai a migliorare."
666
 
667
+ #: includes/i18n.php:195
668
  msgid "What's the plugin's name?"
669
  msgstr "Qual è il nome del plugin?"
670
 
671
+ #: includes/i18n.php:196
672
  msgid "What price would you feel comfortable paying?"
673
  msgstr "Che prezzo ritieni opportuno pagare?"
674
 
675
+ #: includes/i18n.php:197
676
  msgid "I couldn't understand how to make it work"
677
  msgstr "Non capisco come farlo funzionare"
678
 
679
+ #: includes/i18n.php:198
680
+ msgid "The plugin is great, but I need specific feature that you don't support"
 
681
  msgstr "Il plugin é ottimo ma ho bisogno di una funzionalitá specifica che non é supportata"
682
 
683
+ #: includes/i18n.php:199
684
  msgid "The plugin is not working"
685
  msgstr "Il plugin non funziona"
686
 
687
+ #: includes/i18n.php:200
688
  msgid "It's not what I was looking for"
689
  msgstr "Non é quello che stavo cercando"
690
 
691
+ #: includes/i18n.php:201
692
  msgid "The plugin didn't work as expected"
693
  msgstr "Il plugin non funziona come mi aspettavo"
694
 
695
+ #: includes/i18n.php:202
696
  msgid "What feature?"
697
  msgstr "Quale funzionalitá?"
698
 
699
+ #: includes/i18n.php:203
700
  msgid "Kindly share what didn't work so we can fix it for future users..."
701
  msgstr "Condividi cosa non ha funzionato in modo da migliorare il prodotto per gli utenti futuri..."
702
 
703
+ #: includes/i18n.php:204
704
  msgid "What you've been looking for?"
705
  msgstr "Che cosa stai cercando?"
706
 
707
+ #: includes/i18n.php:205
708
  msgid "What did you expect?"
709
  msgstr "Che cosa ti aspettavi?"
710
 
711
+ #: includes/i18n.php:206
712
  msgid "The plugin didn't work"
713
  msgstr "Il plugin non funziona"
714
 
715
+ #: includes/i18n.php:207
716
  msgid "I don't like to share my information with you"
717
  msgstr "Non voglio condividere i miei dati con te"
718
 
719
+ #: includes/i18n.php:208
720
+ msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
 
 
721
  msgstr "Potresti non averci fatto caso, ma non sei obbligato a condividere i tuoi dati e puoi semplicemente %s la tua partecipazione."
722
 
723
+ #: includes/i18n.php:212
724
  msgctxt "greeting"
725
  msgid "Hey %s,"
726
  msgstr "Hey %s,"
727
 
728
+ #: includes/i18n.php:213
729
  msgctxt "a greeting. E.g. Thanks John!"
730
  msgid "Thanks %s!"
731
  msgstr "Grazie %s!"
732
 
733
+ #: includes/i18n.php:214
734
+ msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
 
 
735
  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."
736
 
737
+ #: includes/i18n.php:215
738
+ 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."
 
 
 
739
  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."
740
 
741
+ #: includes/i18n.php:216
742
+ 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."
 
 
743
  msgstr "Dovresti ricevere un'email di attivazione di %s all'indirizzo %s. Assicurati di fare clic sul pulsante di attivazione nell'email per %s."
744
 
745
+ #: includes/i18n.php:217
746
  msgid "complete the install"
747
  msgstr "completa l'installazione"
748
 
749
+ #: includes/i18n.php:218
750
  msgid "start the trial"
751
  msgstr "Inizia il periodo di prova gratuito"
752
 
753
+ #: includes/i18n.php:219
754
+ msgid "Thanks for purchasing %s! To get started, please enter your license key:"
 
755
  msgstr "Grazie per aver acquistato %s! Per iniziare, per favore inserisci la tua chiave di licenza:"
756
 
757
+ #: includes/i18n.php:220
758
+ msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
 
 
759
  msgstr "Il plugin invierà dati periodicamente a %s per controllare l'esistenza di aggiornamenti e verificare la validità della tua licenza."
760
 
761
+ #: includes/i18n.php:221
762
  msgid "What permissions are being granted?"
763
  msgstr "Quali autorizzazioni vengono concesse?"
764
 
765
+ #: includes/i18n.php:222
766
  msgid "Your Profile Overview"
767
  msgstr "Panoramica del tuo profilo"
768
 
769
+ #: includes/i18n.php:223
770
  msgid "Name and email address"
771
  msgstr "Nome ed indirizzo email"
772
 
773
+ #: includes/i18n.php:224
774
  msgid "Your Site Overview"
775
  msgstr "Panoramica del tuo sito"
776
 
777
+ #: includes/i18n.php:225
778
  msgid "Site URL, WP version, PHP info, plugins & themes"
779
  msgstr "URL del sito, versione di WP, informazioni PHP, plugin e temi"
780
 
781
+ #: includes/i18n.php:226
782
  msgid "Current Plugin Events"
783
  msgstr "Eventi correnti del plugin"
784
 
785
+ #: includes/i18n.php:227
786
  msgid "Activation, deactivation and uninstall"
787
  msgstr "Attiva, disattivazione e disinstallazione"
788
 
789
+ #: includes/i18n.php:228
790
  msgid "Plugins & Themes"
791
  msgstr "Plugin e temi"
792
 
793
+ #: includes/i18n.php:229
794
  msgid "Titles, versions and state."
795
  msgstr "Titoli, versioni e stato."
796
 
797
+ #: includes/i18n.php:230
798
  msgid "Admin Notices"
799
  msgstr "Avvisi amministratore"
800
 
801
+ #: includes/i18n.php:231
802
  msgid "Newsletter"
803
  msgstr "Newsletter"
804
 
805
+ #: includes/i18n.php:232
806
  msgid "Updates, announcements, marketing, no spam"
807
  msgstr "Aggiornamenti, annunci, marketing, no spam"
808
 
809
+ #: includes/i18n.php:233
810
  msgid "Privacy Policy"
811
  msgstr "Politica sulla privacy"
812
 
813
+ #: includes/i18n.php:234
814
  msgid "Terms of Service"
815
  msgstr "Termini del Servizio"
816
 
817
+ #: includes/i18n.php:235
818
  msgctxt "as activating plugin"
819
  msgid "Activating"
820
  msgstr "Attivazione"
821
 
822
+ #: includes/i18n.php:236
823
  msgctxt "as in the process of sending an email"
824
  msgid "Sending email"
825
  msgstr "Invio email"
826
 
827
+ #: includes/i18n.php:237
828
  msgctxt "button label"
829
  msgid "Allow & Continue"
830
  msgstr "Consenti & Continua"
831
 
832
+ #: includes/i18n.php:238
833
  msgctxt "button label"
834
  msgid "Agree & Activate License"
835
  msgstr "Accetta e attiva la licenza"
836
 
837
+ #: includes/i18n.php:239
838
  msgctxt "verb"
839
  msgid "Skip"
840
  msgstr "Salta"
841
 
842
+ #: includes/i18n.php:240
843
  msgid "Click here to use the plugin anonymously"
844
  msgstr "Fai clic qui per usare il plugin anonimamente"
845
 
846
+ #: includes/i18n.php:241
847
  msgid "Re-send activation email"
848
  msgstr "Invia nuovamente l'email di attivazione"
849
 
850
+ #: includes/i18n.php:242
851
  msgid "License key"
852
  msgstr "Chiave di licenza"
853
 
854
+ #: includes/i18n.php:243
855
  msgid "Send License Key"
856
  msgstr "Invia chiave di licenza"
857
 
858
+ #: includes/i18n.php:244
859
  msgid "Sending license key"
860
  msgstr "Invio chiave di licenza"
861
 
862
+ #: includes/i18n.php:245
863
  msgid "Have a license key?"
864
  msgstr "Hai una chiave di licenza?"
865
 
866
+ #: includes/i18n.php:246
867
  msgid "Don't have a license key?"
868
  msgstr "Non hai una chiave di licenza?"
869
 
870
+ #: includes/i18n.php:247
871
  msgid "Can't find your license key?"
872
  msgstr "Non trovi la tua chiave di licenza?"
873
 
874
+ #: includes/i18n.php:248
875
+ msgid "We couldn't find your email address in the system, are you sure it's the right address?"
 
 
876
  msgstr "Non siamo riusciti a trovare il tuo indirizzo email nel sistema, sei sicuro che sia l'indirizzo giusto?"
877
 
878
+ #: includes/i18n.php:249
879
+ msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
 
 
880
  msgstr "Non siamo riusciti a trovare alcuna licenza attiva associata al tuo indirizzo email, sei sicuro che sia l'indirizzo giusto?"
881
 
882
+ #: includes/i18n.php:250
883
  msgid "Opt In"
884
  msgstr "Iscriviti"
885
 
886
+ #: includes/i18n.php:251
887
  msgid "Opt Out"
888
  msgstr "Cancella iscrizione"
889
 
890
+ #: includes/i18n.php:252
891
  msgid "On second thought - I want to continue helping"
892
  msgstr "Ci ho ripensato, voglio continuare a fornire il mio aiuto"
893
 
894
+ #: includes/i18n.php:253
895
  msgid "Opting out..."
896
  msgstr "Cancellamento dell'iscrizione..."
897
 
898
+ #: includes/i18n.php:254
899
  msgid "Opting in..."
900
  msgstr "Iscrizione in corso..."
901
 
902
+ #: includes/i18n.php:255
903
+ msgid "We appreciate your help in making the %s better by letting us track some usage data."
 
 
904
  msgstr "Ti ringraziamo per averci concesso di tracciare alcuni dati di utilizzo al fine di migliorare %s"
905
 
906
+ #: includes/i18n.php:256
907
+ 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."
 
 
 
908
  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."
909
 
910
+ #: includes/i18n.php:257
911
+ msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
 
 
912
  msgstr "Cliccando su \"Cancella iscrizione\", non invieremo più nessuna informazione da %s a %s."
913
 
914
+ #: includes/i18n.php:261
915
  msgid "Screenshots"
916
  msgstr "Screenshots"
917
 
918
+ #: includes/i18n.php:262
919
  msgid "Click to view full-size screenshot %d"
920
  msgstr "Fare clic per visualizzare lo screenshot in grandi dimensioni %d"
921
 
922
+ #: includes/i18n.php:266
923
  msgid "Freemius Debug"
924
  msgstr "Debug Freemius"
925
 
926
+ #: includes/i18n.php:267
927
  msgctxt "as turned on"
928
  msgid "On"
929
  msgstr "Attivo"
930
 
931
+ #: includes/i18n.php:268
932
  msgctxt "as turned off"
933
  msgid "Off"
934
  msgstr "Non attivo"
935
 
936
+ #: includes/i18n.php:269
937
  msgctxt "as code debugging"
938
  msgid "Debugging"
939
  msgstr "Debugging"
940
 
941
+ #: includes/i18n.php:270
942
  msgid "Freemius State"
943
  msgstr "Stato di Freemius"
944
 
945
+ #: includes/i18n.php:271
946
  msgctxt "as connection was successful"
947
  msgid "Connected"
948
  msgstr "Connesso"
949
 
950
+ #: includes/i18n.php:272
951
  msgctxt "as connection blocked"
952
  msgid "Blocked"
953
  msgstr "Bloccato"
954
 
955
+ #: includes/i18n.php:273
956
  msgctxt "as application program interface"
957
  msgid "API"
958
  msgstr "API"
959
 
960
+ #: includes/i18n.php:274
961
  msgctxt "as software development kit versions"
962
  msgid "SDK"
963
  msgstr "SDK"
964
 
965
+ #: includes/i18n.php:275
966
  msgctxt "as software development kit versions"
967
  msgid "SDK Versions"
968
  msgstr "Versioni SDK"
969
 
970
+ #: includes/i18n.php:276
971
  msgctxt "as plugin folder path"
972
  msgid "Plugin Path"
973
  msgstr "Percorso del plugin"
974
 
975
+ #: includes/i18n.php:277
976
  msgctxt "as sdk path"
977
  msgid "SDK Path"
978
  msgstr "Percorso SDK"
979
 
980
+ #: includes/i18n.php:278
981
  msgid "Add Ons of Plugin %s"
982
  msgstr "Add-on del Plugin %s"
983
 
984
+ #: includes/i18n.php:279
985
  msgid "Are you sure you want to delete all Freemius data?"
986
  msgstr "Sei sicuro di voler eliminare tutti i dati di Freemius?"
987
 
988
+ #: includes/i18n.php:280
989
  msgid "Actions"
990
  msgstr "Azioni"
991
 
992
+ #: includes/i18n.php:281
993
  msgid "Delete All Accounts"
994
  msgstr "Eliminare tutti gli account"
995
 
996
+ #: includes/i18n.php:282
997
  msgid "Start Fresh"
998
  msgstr "Inizia da capo"
999
 
1000
+ #: includes/i18n.php:283
1001
  msgid "Clear API Cache"
1002
  msgstr "Elimina cache API"
1003
 
1004
+ #: includes/i18n.php:284
1005
  msgid "Sync Data From Server"
1006
  msgstr "Sincronizza i dati dal server"
1007
 
1008
+ #: includes/i18n.php:285
1009
  msgid "Scheduled Crons"
1010
  msgstr "Azioni programmate"
1011
 
1012
+ #: includes/i18n.php:286
1013
  msgid "Cron Type"
1014
  msgstr "Tipo di Cron"
1015
 
1016
+ #: includes/i18n.php:287
1017
  msgid "Plugins & Themes Sync"
1018
  msgstr "Sincronizzazione plugin e temi"
1019
 
1020
+ #: includes/i18n.php:288
1021
  msgid "Licenses"
1022
  msgstr "Licenze"
1023
 
1024
+ #: includes/i18n.php:289
1025
  msgid "Debug Log"
1026
  msgstr "Debug Log"
1027
 
1028
+ #: includes/i18n.php:290
1029
  msgid "All"
1030
  msgstr "Tutto"
1031
 
1032
+ #: includes/i18n.php:291
1033
  msgid "File"
1034
  msgstr "File"
1035
 
1036
+ #: includes/i18n.php:292
1037
  msgid "Function"
1038
  msgstr "Funzione"
1039
 
1040
+ #: includes/i18n.php:293
1041
  msgid "Process ID"
1042
  msgstr "ID processo"
1043
 
1044
+ #: includes/i18n.php:294
1045
  msgid "Logger"
1046
  msgstr "Logger"
1047
 
1048
+ #: includes/i18n.php:295
1049
  msgid "Message"
1050
  msgstr "Messaggio"
1051
 
1052
+ #: includes/i18n.php:296
1053
  msgid "Download"
1054
  msgstr "Download"
1055
 
1056
+ #: includes/i18n.php:297
1057
  msgid "Filter"
1058
  msgstr "Filtro"
1059
 
1060
+ #: includes/i18n.php:298
1061
  msgid "Type"
1062
  msgstr "Tipo"
1063
 
1064
+ #: includes/i18n.php:299
1065
  msgid "All Types"
1066
  msgstr "Tutti i tipi"
1067
 
1068
+ #: includes/i18n.php:300
1069
  msgid "All Requests"
1070
  msgstr "Tutte le richieste"
1071
 
1072
+ #: includes/i18n.php:304
1073
  msgctxt "as congratulations"
1074
  msgid "Congrats"
1075
  msgstr "Congratulazioni"
1076
 
1077
+ #: includes/i18n.php:305
1078
  msgctxt "exclamation"
1079
  msgid "Oops"
1080
  msgstr "Ops"
1081
 
1082
+ #: includes/i18n.php:306
1083
  msgctxt "interjection expressing joy or exuberance"
1084
  msgid "Yee-haw"
1085
  msgstr "Evvai"
1086
 
1087
+ #: includes/i18n.php:307
1088
  msgctxt ""
 
 
1089
  msgid "W00t"
1090
  msgstr "Forte"
1091
 
1092
+ #: includes/i18n.php:309
1093
  msgctxt "a positive response"
1094
  msgid "Right on"
1095
  msgstr "Sì"
1096
 
1097
+ #: includes/i18n.php:310
1098
  msgctxt ""
 
 
1099
  msgid "Hmm"
1100
  msgstr "Uhm"
1101
 
1102
+ #: includes/i18n.php:312
1103
  msgid "O.K"
1104
  msgstr "OK"
1105
 
1106
+ #: includes/i18n.php:313
1107
  msgctxt "exclamation"
1108
  msgid "Hey"
1109
  msgstr "Hey"
1110
 
1111
+ #: includes/i18n.php:314
1112
  msgctxt "advance notice of something that will need attention."
1113
  msgid "Heads up"
1114
  msgstr "Attenzione"
1115
 
1116
+ #: includes/i18n.php:319
1117
  msgid "Seems like you got the latest release."
1118
  msgstr "Sembra che tu abbia la versione più recente."
1119
 
1120
+ #: includes/i18n.php:320
1121
  msgid "You are all good!"
1122
  msgstr "Sei fantastico!"
1123
 
1124
+ #: includes/i18n.php:321
1125
+ msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
 
 
1126
  msgstr "Siamo spiacenti, non siamo riusciti a completare l'aggiornamento via email. Un altro utente con lo stesso indirizzo email è già registrato."
1127
 
1128
+ #: includes/i18n.php:322
1129
+ msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
 
 
1130
  msgstr "Se vuoi cedere la proprietá dell'account del plugin a %s clicca su Cambia Proprietà."
1131
 
1132
+ #: includes/i18n.php:323
1133
+ msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
 
 
1134
  msgstr "Il tuo indirizzo email è stato aggiornato correttamente. Riceverai un'email con le istruzioni di conferma in pochi istanti."
1135
 
1136
+ #: includes/i18n.php:324
1137
  msgid "Your name was successfully updated."
1138
  msgstr "Il tuo nome è stato aggiornato correttamente."
1139
 
1140
+ #: includes/i18n.php:325
1141
  msgid "You have successfully updated your %s."
1142
  msgstr "Hai aggiornato con successo il tuo %s."
1143
 
1144
+ #: includes/i18n.php:326
1145
  msgid "Please provide your full name."
1146
  msgstr "Per favore inserisci il tuo nome completo."
1147
 
1148
+ #: includes/i18n.php:327
1149
+ msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
 
 
1150
  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."
1151
 
1152
+ #: includes/i18n.php:328
1153
+ msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
 
 
1154
  msgstr "Le informazioni sugli add-on di %s vengono scaricate da un server esterno."
1155
 
1156
+ #: includes/i18n.php:329
1157
  msgid "No credit card required"
1158
  msgstr "Nessuna carta di credito richiesta"
1159
 
1160
+ #: includes/i18n.php:330
1161
  msgid "Premium plugin version was successfully activated."
1162
  msgstr "La versione Premium del plugin è stata attivata correttamente."
1163
 
1164
+ #: includes/i18n.php:331
1165
  msgid "The upgrade of %s was successfully completed."
1166
  msgstr "L'aggiornamento di %s è stato completato con successo."
1167
 
1168
+ #: includes/i18n.php:332
1169
  msgid "Your account was successfully activated with the %s plan."
1170
  msgstr "Il tuo account è stato attivato correttamente con il piano %s."
1171
 
1172
+ #: includes/i18n.php:333
1173
  msgid "Download the latest %s version now"
1174
  msgstr "Scarica l'ultima versione di %s"
1175
 
1176
+ #: includes/i18n.php:334
1177
  msgid "Please follow these steps to complete the upgrade"
1178
  msgstr "Segui i passi seguenti per completare l'aggiornamento"
1179
 
1180
+ #: includes/i18n.php:335
1181
  msgid "Download the latest %s version"
1182
  msgstr "Scarica l'ultima versione di %s"
1183
 
1184
+ #: includes/i18n.php:336
1185
  msgid "Download the latest version"
1186
  msgstr "Scarica l'ultima versione"
1187
 
1188
+ #: includes/i18n.php:337
1189
  msgid "Deactivate the free version"
1190
  msgstr "Disattiva la versione gratuita"
1191
 
1192
+ #: includes/i18n.php:338
1193
  msgid "Upload and activate the downloaded version"
1194
  msgstr "Carica e attiva la versione scaricata"
1195
 
1196
+ #: includes/i18n.php:339
1197
  msgid "How to upload and activate?"
1198
  msgstr "Come faccio a caricare ed attivare?"
1199
 
1200
+ #: includes/i18n.php:340
1201
  msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1202
  msgid "%s Add-on was successfully purchased."
1203
  msgstr "L' add-on %s è stato acquistato con successo."
1204
 
1205
+ #: includes/i18n.php:342
1206
  msgid "Your %s Add-on plan was successfully upgraded."
1207
  msgstr "Il piano del tuo add-on %s è stato aggiornato con successo."
1208
 
1209
+ #: includes/i18n.php:343
1210
  msgid "Your email has been successfully verified - you are AWESOME!"
1211
  msgstr "Il tuo indirizzo email è stato verificato con successo - SEI UN GRANDE!"
1212
 
1213
+ #: includes/i18n.php:344
1214
  msgid "Your plan was successfully upgraded."
1215
  msgstr "Il piano è stato aggiornato con successo."
1216
 
1217
+ #: includes/i18n.php:345
1218
  msgid "Your plan was successfully changed to %s."
1219
  msgstr "Il piano è stato cambiato con successo a %s."
1220
 
1221
+ #: includes/i18n.php:346
1222
+ msgid "Your license has expired. You can still continue using the free plugin forever."
 
 
1223
  msgstr "La licenza è scaduta. È comunque possibile continuare ad utilizzare il plugin gratuito per sempre."
1224
 
1225
+ #: includes/i18n.php:347
1226
+ msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
 
 
1227
  msgstr "La tua licenza è stata cancellata. Se credi sia un errore, per favore contatta il supporto."
1228
 
1229
+ #: includes/i18n.php:348
1230
  msgid "Your trial has been successfully started."
1231
  msgstr "La versione di prova è stata avviata correttamente."
1232
 
1233
+ #: includes/i18n.php:349
1234
  msgid "Your license was successfully activated."
1235
  msgstr "La tua licenza è stata attivata correttamente."
1236
 
1237
+ #: includes/i18n.php:350
1238
  msgid "It looks like your site currently doesn't have an active license."
1239
  msgstr "Sembra che il tuo sito non disponga di alcuna licenza attiva."
1240
 
1241
+ #: includes/i18n.php:351
1242
+ msgid "Your license was successfully deactivated, you are back to the %s plan."
 
1243
  msgstr "La tua licenza é stata disattivata con successo, sei tornato al piano %s."
1244
 
1245
+ #: includes/i18n.php:352
1246
  msgid "It looks like the license deactivation failed."
1247
  msgstr "Sembra che la disattivazione della licenza non sia riuscita."
1248
 
1249
+ #: includes/i18n.php:353
1250
  msgid "It looks like the license could not be activated."
1251
  msgstr "Sembra che la licenza non possa essere attivata."
1252
 
1253
+ #: includes/i18n.php:354
1254
  msgid "Error received from the server:"
1255
  msgstr "Errore ricevuto dal server:"
1256
 
1257
+ #: includes/i18n.php:355
1258
+ msgid "Your trial has expired. You can still continue using all our free features."
 
1259
  msgstr "La versione di prova è scaduta. Si può comunque continuare a utilizzare tutte le nostre funzioni gratuite."
1260
 
1261
+ #: includes/i18n.php:356
1262
+ msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
 
 
1263
  msgstr "Il tuo piano è stato declassato con successo. La licenza del piano %s scadrà in %s."
1264
 
1265
+ #: includes/i18n.php:357
1266
+ msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
 
 
1267
  msgstr "Stiamo avendo qualche problema temporaneo con il downgrade del piano. Riprova tra qualche minuto."
1268
 
1269
+ #: includes/i18n.php:358
1270
+ msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
 
 
1271
  msgstr "Sembra che tu non stia più usando la prova gratuita, quindi non c'è niente che tu debba annullare :)"
1272
 
1273
+ #: includes/i18n.php:359
1274
  msgid "Your %s free trial was successfully cancelled."
1275
  msgstr "Il tuo periodo di prova gratuito %s è stato annullato con successo."
1276
 
1277
+ #: includes/i18n.php:360
1278
  msgctxt "%s - numeric version number"
1279
  msgid "Version %s was released."
1280
  msgstr "La versione %s é stata rilasciata."
1281
 
1282
+ #: includes/i18n.php:361
1283
  msgid "Please download %s."
1284
  msgstr "Scarica %s."
1285
 
1286
+ #: includes/i18n.php:362
1287
  msgctxt "%s - plan name, as the latest professional version here"
1288
  msgid "the latest %s version here"
1289
  msgstr "l'ultima versione %s é quì"
1290
 
1291
+ #: includes/i18n.php:364
1292
+ msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
 
 
1293
  msgstr "Come sta andando con %s? Prova tutte le funzionalità premium di %s con una prova gratuita di %d giorni."
1294
 
1295
+ #: includes/i18n.php:365
1296
  msgctxt "call to action"
1297
  msgid "Start free trial"
1298
  msgstr "Inizia il periodo di prova gratuito"
1299
 
1300
+ #: includes/i18n.php:366
1301
  msgid "Starting trial"
1302
  msgstr "Inizio del periodo di prova gratuito"
1303
 
1304
+ #: includes/i18n.php:367
1305
  msgid "Please wait"
1306
  msgstr "Attendere"
1307
 
1308
+ #: includes/i18n.php:368
1309
+ msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
 
 
1310
  msgstr "Stiamo avendo qualche problema temporaneo con l'annullamento del periodo di prova. Riprova tra qualche minuto."
1311
 
1312
+ #: includes/i18n.php:369
1313
  msgid "You already utilized a trial before."
1314
  msgstr "Hai già utilizzato una prova gratuita in passato."
1315
 
1316
+ #: includes/i18n.php:370
1317
  msgid "You are already running the plugin in a trial mode."
1318
  msgstr "Stai già usando il plugin in modalità di prova gratuita."
1319
 
1320
+ #: includes/i18n.php:371
1321
  msgid "Plan %s do not exist, therefore, can't start a trial."
1322
  msgstr "Il piano %s non esiste, per questo motivo non è possibile iniziare il periodo di prova."
1323
 
1324
+ #: includes/i18n.php:372
1325
  msgid "Plan %s does not support a trial period."
1326
  msgstr "Il piano %s non supporta il periodo di prova."
1327
 
1328
+ #: includes/i18n.php:373
1329
  msgid "None of the plugin's plans supports a trial period."
1330
  msgstr "Non esiste alcun piano del plugin che offra il periodo di prova."
1331
 
1332
+ #: includes/i18n.php:374
1333
+ msgid "Unexpected API error. Please contact the plugin's author with the following error."
 
 
1334
  msgstr "Errore inaspettato dell'API. Per favore contatta l'autore del plugin riportando il seguente errore."
1335
 
1336
+ #: includes/i18n.php:375
1337
  msgid "No commitment for %s days - cancel anytime!"
1338
  msgstr "Nessun impegno per %s giorni - puoi annullare in qualsiasi momento!"
1339
 
1340
+ #: includes/i18n.php:376
1341
+ 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."
 
 
 
1342
  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."
1343
 
1344
+ #: includes/i18n.php:377
1345
  msgid "Couldn't activate %s."
1346
  msgstr "Non é stato possibile attivare %s."
1347
 
1348
+ #: includes/i18n.php:378
1349
  msgid "Please contact us with the following message:"
1350
  msgstr "Contattaci con il seguente messaggio:"
1351
 
1352
+ #: includes/i18n.php:379
1353
+ 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."
 
 
1354
  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."
1355
 
1356
+ #: includes/i18n.php:380
1357
  msgid "Please contact us here"
1358
  msgstr "Contattaci qui"
1359
 
1360
+ #: includes/i18n.php:381
1361
+ msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
 
 
1362
  msgstr "Ho aggiornato il mio account, ma quando cerco di sincronizzare la licenza, il piano rimane %s."
1363
 
1364
+ #: includes/i18n.php:384
1365
  msgid "From unknown reason, the API connectivity test failed."
1366
  msgstr "Il test di connettività dell'API ha fallito per motivi sconosciuti."
1367
 
1368
+ #: includes/i18n.php:385
1369
+ 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?"
 
 
1370
  msgstr "Si tratta probabilmente di un problema nei nostri sistemi. Per esserne sicuri, potresti darci il permesso di effettuare un ulteriore test della connettività? "
1371
 
1372
+ #: includes/i18n.php:386
1373
+ 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."
1374
+ 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."
 
 
 
1375
 
1376
+ #: includes/i18n.php:387
1377
+ msgid "Disabled method(s):"
1378
+ msgstr "Disabled method(s):"
1379
+
1380
+ #: includes/i18n.php:388
1381
+ msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1382
  msgstr "Per un motivo sconosciuto, CloudFlare, il firewall che utilizziamo, blocca la connessione."
1383
 
1384
+ #: includes/i18n.php:389
1385
  msgctxt "as pluginX requires an access to our API"
1386
  msgid "%s requires an access to our API."
1387
  msgstr "%s richiede un accesso alla nostra API."
1388
 
1389
+ #: includes/i18n.php:391
1390
+ msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
 
 
1391
  msgstr "Sembra che il tuo server stia usando Squid ACL (lista per il controllo degli accessi) il quale blocca la connessione."
1392
 
1393
+ #: includes/i18n.php:392
1394
  msgid "I don't know what is Squid or ACL, help me!"
1395
  msgstr "Non ho idea di cosa sia Squid o ACL, aiutami!"
1396
 
1397
+ #: includes/i18n.php393, includes/i18n.php:397
1398
+ 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."
 
 
1399
  msgstr "Contatteremo il tuo hosting e risolveremo il problema. Riceverai un' email a %s non appena ci saranno aggiornamenti."
1400
 
1401
+ #: includes/i18n.php:394
1402
  msgid "I'm a system administrator"
1403
  msgstr "Sono un sistemista"
1404
 
1405
+ #: includes/i18n.php:395
1406
+ msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again."
 
 
1407
  msgstr "Perfetto, ora per favore aggiungi alla whitelist i seguenti domini: %s. Quando hai fatto, disattiva il plugin e riattivalo di nuovo."
1408
 
1409
+ #: includes/i18n.php:396
1410
  msgid "I don't know what is cURL or how to install it, help me!"
1411
  msgstr "Non ho idea di cosa sia cURL o come installarlo, aiutami!"
1412
 
1413
+ #: includes/i18n.php:398
1414
+ 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."
1415
+ 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."
 
 
 
1416
 
1417
+ #: includes/i18n.php:399
1418
+ 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."
 
 
1419
  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."
1420
 
1421
+ #: includes/i18n.php:400
1422
+ msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
 
1423
  msgstr "Siamo spiacenti per l'inconveniente e siamo qui per aiutarti con il tuo permesso."
1424
 
1425
+ #: includes/i18n.php:401
1426
  msgid "Yes - I'm giving you a chance to fix it"
1427
  msgstr "Sì - sto dandovi la possibilità di risolvere il problema"
1428
 
1429
+ #: includes/i18n.php:402
1430
+ 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."
 
 
1431
  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."
1432
 
1433
+ #: includes/i18n.php:403
1434
  msgid "Let's try your previous version"
1435
  msgstr "Proviamo con la versione precedente"
1436
 
1437
+ #: includes/i18n.php:404
1438
  msgid "Uninstall this version and install the previous one."
1439
  msgstr "Disinstalla questa versione e installa quella precedente."
1440
 
1441
+ #: includes/i18n.php:405
1442
  msgid "That's exhausting, please deactivate"
1443
  msgstr "È estenuante, disattivalo"
1444
 
1445
+ #: includes/i18n.php:406
1446
+ msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
 
 
1447
  msgstr "Capiamo la tua frustrazione e ci scusiamo per l'inconveniente. Speriamo di rivederti nuovamente in futuro."
1448
 
1449
+ #: includes/i18n.php:407
1450
+ 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."
 
 
 
1451
  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."
1452
 
1453
+ #: includes/i18n.php:408
1454
  msgctxt "%1s - plugin title, %2s - API domain"
1455
+ msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
 
 
1456
  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."
1457
 
1458
+ #: includes/i18n.php:410
1459
+ msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
 
 
1460
  msgstr "Sembra che uno dei parametri di autenticazione sia sbagliato. Aggiorna la tua chiave pubblica, Secret Key & User ID e riprova."
1461
 
1462
+ #: includes/i18n.php:413
1463
+ 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."
 
 
 
 
1464
  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."
1465
 
1466
+ #: includes/i18n.php:414
1467
+ msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
 
 
1468
  msgstr "Grazie per aver confermato il cambiamento del proprietario. Un' email è stata appena inviata a %s per la conferma finale."
1469
 
1470
+ #: includes/i18n.php:415
1471
  msgid "%s is the new owner of the account."
1472
  msgstr "%s è il nuovo proprietario dell'account."
1473
 
1474
+ #: includes/i18n.php:417
1475
  msgctxt "addonX cannot run without pluginY"
1476
  msgid "%s cannot run without %s."
1477
  msgstr "%s non può funzionare senza %s."
1478
 
1479
+ #: includes/i18n.php:419
1480
  msgctxt "addonX cannot run..."
1481
  msgid "%s cannot run without the plugin."
1482
  msgstr "%s non può funzionare senza il plugin."
1483
 
1484
+ #: includes/i18n.php:420
1485
  msgctxt "pluginX activation was successfully..."
1486
  msgid "%s activation was successfully completed."
1487
  msgstr "%s è stato attivato con successo."
1488
 
1489
+ #: includes/i18n.php:422
1490
  msgctxt "Plugin installer section title"
1491
  msgid "Features & Pricing"
1492
  msgstr "Caratteristiche & prezzi"
1493
 
1494
+ #: includes/i18n.php:423
1495
  msgid "Add-on must be deployed to WordPress.org or Freemius."
1496
  msgstr "L'add-on dev'essere distribuito da WordPress.org o Freemius."
1497
 
1498
+ #: includes/i18n.php:424
1499
  msgid "Paid add-on must be deployed to Freemius."
1500
  msgstr "Gli add-on a pagamento devono essere distribuiti da Freemius."
1501
 
1502
+ #: includes/i18n.php:428
1503
+ msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
 
 
1504
  msgstr "%s è un add-on premium. Devi comprare una licenza prima di poter attivare il plugin."
1505
 
1506
+ #: includes/i18n.php:429
1507
+ 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."
 
 
 
1508
  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."
1509
 
1510
+ #: includes/i18n.php:434
1511
  msgctxt "as every month"
1512
  msgid "Monthly"
1513
  msgstr "Mensilmente"
1514
 
1515
+ #: includes/i18n.php:435
1516
  msgctxt "as monthly period"
1517
  msgid "mo"
1518
  msgstr "mese"
1519
 
1520
+ #: includes/i18n.php:436
1521
  msgctxt "as once a year"
1522
  msgid "Annual"
1523
  msgstr "Annuale"
1524
 
1525
+ #: includes/i18n.php:437
1526
  msgctxt "as once a year"
1527
  msgid "Annually"
1528
  msgstr "Annualmente"
1529
 
1530
+ #: includes/i18n.php:438
1531
  msgctxt "as once a year"
1532
  msgid "Once"
1533
  msgstr "Una volta"
1534
 
1535
+ #: includes/i18n.php:439
1536
  msgctxt "as annual period"
1537
  msgid "year"
1538
  msgstr "anno"
1539
 
1540
+ #: includes/i18n.php:440
1541
  msgid "Lifetime"
1542
  msgstr "Tutta la vita"
1543
 
1544
+ #: includes/i18n.php:441
1545
  msgctxt "e.g. the best product"
1546
  msgid "Best"
1547
  msgstr "Migliore"
1548
 
1549
+ #: includes/i18n.php:442
1550
  msgctxt "e.g. billed monthly"
1551
  msgid "Billed %s"
1552
  msgstr "Fatturato %s"
1553
 
1554
+ #: includes/i18n.php:443
1555
  msgctxt "as a discount of $5 or 10%"
1556
  msgid "Save %s"
1557
  msgstr "Risparmia %s"
1558
 
1559
+ #: includes/i18n.php:445
1560
  msgid "View details"
1561
  msgstr "Visualizza dettagli"
1562
 
1563
+ #: includes/i18n.php:449
1564
  msgctxt "button label"
1565
  msgid "Approve & Start Trial"
1566
  msgstr "Approva e inizia il periodo di prova gratuito"
1567
 
1568
+ #: includes/i18n.php:451
1569
+ msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
 
 
1570
  msgstr "Sei a un clic di distanza dall'iniziare il tuo periodo di prova gratuito di %1$s giorni per il piano %2$s."
1571
 
1572
+ #: includes/i18n.php:453
1573
+ 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."
 
 
 
 
1574
  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."
1575
 
1576
+ #: includes/i18n.php:459
1577
  msgid "Business name"
1578
  msgstr "Nome della compagnia"
1579
 
1580
+ #: includes/i18n.php:460
1581
  msgid "Tax / VAT ID"
1582
  msgstr "Numero Partita Iva o VAT"
1583
 
1584
+ #: includes/i18n.php:461
1585
  msgid "Address Line %d"
1586
  msgstr "Riga indirizzo %d"
1587
 
1588
+ #: includes/i18n.php:462
1589
  msgid "Country"
1590
  msgstr "Nazione"
1591
 
1592
+ #: includes/i18n.php:463
1593
  msgid "Select Country"
1594
  msgstr "Seleziona Nazione"
1595
 
1596
+ #: includes/i18n.php:464
1597
  msgid "City"
1598
  msgstr "Città"
1599
 
1600
+ #: includes/i18n.php:465
1601
  msgid "Town"
1602
  msgstr "Cittadina"
1603
 
1604
+ #: includes/i18n.php:466
1605
  msgid "State"
1606
  msgstr "Stato"
1607
 
1608
+ #: includes/i18n.php:467
1609
  msgid "Province"
1610
  msgstr "Provincia"
1611
 
1612
+ #: includes/i18n.php:468
1613
  msgid "ZIP / Postal Code"
1614
  msgstr "CAP"
1615
 
1616
+ #: includes/i18n.php:473
1617
+ msgid "Installing plugin: %s"
1618
+ msgstr "Installing plugin: %s"
1619
+
1620
+ #: includes/i18n.php:474
1621
+ msgid "Automatic Installation"
1622
+ msgstr "Automatic Installation"
1623
+
1624
+ #: includes/i18n.php:476
1625
+ msgid "%s sec"
1626
+ msgstr "%s sec"
1627
+
1628
+ #: includes/i18n.php:477
1629
+ 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."
1630
+ 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."
1631
+
1632
+ #: includes/i18n.php:478
1633
+ 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."
1634
+ 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."
1635
+
1636
  #: includes/i18n.php:479
1637
+ msgid "Cancel Installation"
1638
+ msgstr "Cancel Installation"
1639
+
1640
+ #: includes/i18n.php:480
1641
+ msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
1642
+ msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
1643
+
1644
+ #: includes/i18n.php:481
1645
+ msgid "Invalid module ID."
1646
+ msgstr "Invalid module ID."
1647
+
1648
+ #: includes/i18n.php:482
1649
+ msgid "Auto installation only works for opted-in users."
1650
+ msgstr "Auto installation only works for opted-in users."
1651
+
1652
+ #: includes/i18n.php:483
1653
+ msgid "Premium version already active."
1654
+ msgstr "Premium version already active."
1655
+
1656
+ #: includes/i18n.php:484
1657
+ msgid "Premium add-on version already installed."
1658
+ msgstr "Premium add-on version already installed."
1659
+
1660
+ #: includes/i18n.php:485
1661
+ msgid "You do not have a valid license to access the premium version."
1662
+ msgstr "You do not have a valid license to access the premium version."
1663
+
1664
+ #: includes/i18n.php:486
1665
+ msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
1666
+ msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version."
1667
+
1668
+ #: includes/i18n.php:501
1669
  msgctxt "Plugin installer section title"
1670
  msgid "Description"
1671
  msgstr "Descrizione"
1672
 
1673
+ #: includes/i18n.php:502
1674
  msgctxt "Plugin installer section title"
1675
  msgid "Installation"
1676
  msgstr "Installazione"
1677
 
1678
+ #: includes/i18n.php:503
1679
  msgctxt "Plugin installer section title"
1680
  msgid "FAQ"
1681
  msgstr "FAQ"
1682
 
1683
+ #: includes/i18n.php:504
1684
  msgctxt "Plugin installer section title"
1685
  msgid "Changelog"
1686
  msgstr "Changelog"
1687
 
1688
+ #: includes/i18n.php:505
1689
  msgctxt "Plugin installer section title"
1690
  msgid "Reviews"
1691
  msgstr "Recensioni"
1692
 
1693
+ #: includes/i18n.php:506
1694
  msgctxt "Plugin installer section title"
1695
  msgid "Other Notes"
1696
  msgstr "Altre note"
1697
 
1698
+ #: includes/i18n.php:508
1699
  msgid "%s star"
1700
  msgstr "%s stella"
1701
 
1702
+ #: includes/i18n.php:510
1703
  msgid "%s stars"
1704
  msgstr "%s stelle"
1705
 
1706
+ #: includes/i18n.php:512
1707
  msgid "%s rating"
1708
  msgstr "%s valutazione"
1709
 
1710
+ #: includes/i18n.php:514
1711
  msgid "%s ratings"
1712
  msgstr "%s valutazioni"
1713
 
1714
+ #: includes/i18n.php:516
1715
  msgid "%s time"
1716
  msgstr "% volta"
1717
 
1718
+ #: includes/i18n.php:518
1719
  msgid "%s times"
1720
  msgstr "%s volte"
1721
 
1722
+ #: includes/i18n.php:520
1723
  msgid "Click to see reviews that provided a rating of %s"
1724
  msgstr "Fai clic per vedere le recensioni che hanno fornito una valutazione di %s"
1725
 
1726
+ #: includes/i18n.php:521
1727
  msgid "Last Updated"
1728
  msgstr "Ultimo aggiornamento"
1729
 
1730
+ #: includes/i18n.php:522
1731
  msgid "Requires WordPress Version:"
1732
  msgstr "Richiede la versione di WordPress:"
1733
 
1734
+ #: includes/i18n.php:523
1735
  msgctxt "as the plugin author"
1736
  msgid "Author:"
1737
  msgstr "Autore:"
1738
 
1739
+ #: includes/i18n.php:524
1740
  msgid "Compatible up to:"
1741
  msgstr "Compatibile fino a:"
1742
 
1743
+ #: includes/i18n.php:525
1744
  msgid "Downloaded:"
1745
  msgstr "Scaricato:"
1746
 
1747
+ #: includes/i18n.php:526
1748
  msgid "WordPress.org Plugin Page"
1749
  msgstr "Pagina dei plugin di WordPress.org"
1750
 
1751
+ #: includes/i18n.php:527
1752
  msgid "Plugin Homepage"
1753
  msgstr "Homepage del plugin"
1754
 
1755
+ #: includes/i18n.php:528
1756
  msgid "Donate to this plugin"
1757
  msgstr "Fai una donazione a questo plugin"
1758
 
1759
+ #: includes/i18n.php:529
1760
  msgid "Average Rating"
1761
  msgstr "Valutazione media"
1762
 
1763
+ #: includes/i18n.php:530
1764
  msgid "based on %s"
1765
  msgstr "basato su %s"
1766
 
1767
+ #: includes/i18n.php:531
1768
  msgid "Warning:"
1769
  msgstr "Avviso:"
1770
 
1771
+ #: includes/i18n.php:532
1772
  msgid "Contributors"
1773
  msgstr "Contributori"
1774
 
1775
+ #: includes/i18n.php:533
1776
  msgid "Plugin Install"
1777
  msgstr "Installazione del plugin"
1778
 
1779
+ #: includes/i18n.php:534
1780
+ msgid "This plugin has not been tested with your current version of WordPress."
 
1781
  msgstr "Questo plugin non è stato testato con la versione corrente di WordPress."
1782
 
1783
+ #: includes/i18n.php:535
1784
+ msgid "This plugin has not been marked as compatible with your version of WordPress."
 
 
1785
  msgstr "Questo plugin non è stato segnato come compatibile con la tua versione di WordPress."
1786
 
1787
+ #: includes/i18n.php:536
1788
  msgid "Newer Version (%s) Installed"
1789
  msgstr "Versione più recente (%s) installata"
1790
 
1791
+ #: includes/i18n.php:537
1792
  msgid "Latest Version Installed"
1793
  msgstr "Versione più recente installata"
freemius/languages/freemius-ja_JP.mo CHANGED
Binary file
freemius/languages/freemius-ja_JP.po CHANGED
@@ -1,1662 +1,1791 @@
1
- #
 
2
  # Translators:
3
  # Odyssey <8bitodyssey+github@gmail.com>, 2016
4
  # Takayuki Miyauchi <miya0001@users.noreply.github.com>, 2016
5
  msgid ""
6
  msgstr ""
7
  "Project-Id-Version: WordPress SDK\n"
8
- "Report-Msgid-Bugs-To: \n"
9
  "POT-Creation-Date: \n"
10
- "PO-Revision-Date: 2017-02-28 03:42+0000\n"
11
  "Last-Translator: Vova Feldman <vova@freemius.com>\n"
 
12
  "Language-Team: Japanese (Japan) (http://www.transifex.com/freemius/wordpress-sdk/language/ja_JP/)\n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
- "Content-Transfer-Encoding: \n"
15
- "Language: ja_JP\n"
16
  "Plural-Forms: nplurals=1; plural=0;\n"
17
-
18
- # Copyright (C) 2017 freemius
19
- # This file is distributed under the same license as the freemius package.
20
- #: includes/i18n.php41, includes/i18n.php:55
21
- msgid "Yes - I'm in!"
22
- msgstr "加入します"
23
-
24
- #: includes/i18n.php43, includes/i18n.php:57
25
- msgid "Not today"
26
- msgstr "今日はやめておく"
27
-
28
- #: includes/i18n.php:69
29
  msgid "Account"
30
  msgstr "アカウント"
31
 
32
- #: includes/i18n.php:71
33
  msgid "Add On"
34
  msgstr "アドオン"
35
 
36
- #: includes/i18n.php:73
37
  msgid "Contact Us"
38
  msgstr "連絡"
39
 
40
- #: includes/i18n.php:75
41
  msgid "Contact Support"
42
  msgstr "サポートに連絡"
43
 
44
- #: includes/i18n.php:77
45
  msgid "Change Ownership"
46
  msgstr "オーナーを変更"
47
 
48
- #: includes/i18n.php:79
49
  msgid "Support"
50
  msgstr "サポート"
51
 
52
- #: includes/i18n.php:81
53
  msgid "Support Forum"
54
  msgstr "サポートフォーラム"
55
 
56
- #: includes/i18n.php:83
57
  msgid "Add Ons"
58
  msgstr "アドオン"
59
 
60
- #: includes/i18n.php:85
61
  msgctxt "verb"
62
  msgid "Upgrade"
63
  msgstr "アップグレード"
64
 
65
- #: includes/i18n.php:87
66
  msgid "Awesome"
67
  msgstr "すごい!"
68
 
69
- #: includes/i18n.php:89
70
  msgctxt "noun"
71
  msgid "Pricing"
72
  msgstr "料金表"
73
 
74
- #: includes/i18n.php:91
75
  msgctxt "noun"
76
  msgid "Price"
77
  msgstr "料金"
78
 
79
- #: includes/i18n.php:93
80
  msgid "Unlimited Updates"
81
  msgstr "無制限のアップデート"
82
 
83
- #: includes/i18n.php:95
84
  msgctxt "verb"
85
  msgid "Downgrade"
86
  msgstr "ダウングレード"
87
 
88
- #: includes/i18n.php:97
 
 
 
 
 
89
  msgid "Cancel Trial"
90
  msgstr "トライアルをキャンセル"
91
 
92
- #: includes/i18n.php:99
93
  msgid "Free Trial"
94
  msgstr "フリートライアル"
95
 
96
- #: includes/i18n.php:101
97
  msgid "Start my free %s"
98
  msgstr "無料の %s を開始"
99
 
100
- #: includes/i18n.php:103
101
  msgid "No commitment for %s - cancel anytime"
102
  msgstr "%s の拘束はありません。いつでもキャンセルできます。"
103
 
104
- #: includes/i18n.php:105
105
  msgid "After your free %s, pay as little as %s"
106
  msgstr "無料の %s の後は、わずか %s だけお支払ください。"
107
 
108
- #: includes/i18n.php:107
109
  msgid "Details"
110
  msgstr "詳細"
111
 
112
- #: includes/i18n.php:109
113
  msgid "Account Details"
114
  msgstr "アカウント詳細"
115
 
116
- #: includes/i18n.php:111
117
  msgctxt "verb"
118
  msgid "Delete"
119
  msgstr "削除"
120
 
121
- #: includes/i18n.php:113
122
  msgctxt "verb"
123
  msgid "Show"
124
  msgstr "表示"
125
 
126
- #: includes/i18n.php:115
127
  msgctxt "verb"
128
  msgid "Hide"
129
  msgstr "非表示"
130
 
131
- #: includes/i18n.php:117
132
  msgctxt "verb"
133
  msgid "Edit"
134
  msgstr "編集"
135
 
136
- #: includes/i18n.php:119
137
  msgctxt "verb"
138
  msgid "Update"
139
  msgstr "更新"
140
 
141
- #: includes/i18n.php:121
142
  msgid "Date"
143
  msgstr "日付"
144
 
145
- #: includes/i18n.php:123
146
  msgid "Amount"
147
  msgstr "総額"
148
 
149
- #: includes/i18n.php:125
150
  msgid "Invoice"
151
  msgstr "請求書"
152
 
153
- #: includes/i18n.php:127
154
  msgid "Billing"
155
  msgstr "請求書"
156
 
157
- #: includes/i18n.php:129
158
  msgid "Payments"
159
  msgstr "支払い"
160
 
161
- #: includes/i18n.php:131
162
  msgid "Delete Account"
163
  msgstr "アカウントを削除"
164
 
165
- #: includes/i18n.php:133
166
  msgctxt "as close a window"
167
  msgid "Dismiss"
168
  msgstr "却下"
169
 
170
- #: includes/i18n.php:135
171
  msgctxt "as product pricing plan"
172
  msgid "Plan"
173
  msgstr "プラン"
174
 
175
- #: includes/i18n.php:137
176
  msgid "Change Plan"
177
  msgstr "プラン変更"
178
 
179
- #: includes/i18n.php:139
180
  msgctxt "as download professional version"
181
  msgid "Download %s Version"
182
  msgstr "%s バージョンをダウンロード"
183
 
184
- #: includes/i18n.php:141
185
  msgctxt "as download professional version now"
186
  msgid "Download %s version now"
187
  msgstr "%s バージョンを今すぐダウンロード"
188
 
189
- #: includes/i18n.php:145
190
  msgctxt "as download latest version"
191
  msgid "Download Latest"
192
  msgstr "最新版をダウンロード"
193
 
194
- #: includes/i18n.php:147
195
  msgctxt "E.g. you have a professional license."
196
  msgid "You have a %s license."
197
  msgstr "%s ライセンスを持っています。"
198
 
199
- #: includes/i18n.php:151
200
  msgid "New"
201
  msgstr "新規"
202
 
203
- #: includes/i18n.php:153
204
  msgid "Free"
205
  msgstr "無料"
206
 
207
- #: includes/i18n.php:155
208
  msgctxt "as trial plan"
209
  msgid "Trial"
210
  msgstr "トライアル"
211
 
212
- #: includes/i18n.php:157
213
  msgctxt "as starting a trial plan"
214
  msgid "Start Trial"
215
  msgstr "トライアルを開始"
216
 
217
- #: includes/i18n.php:159
218
  msgctxt "verb"
219
  msgid "Purchase"
220
  msgstr "購入"
221
 
222
- #: includes/i18n.php:161
223
  msgid "Purchase License"
224
  msgstr "ライセンスを購入"
225
 
226
- #: includes/i18n.php:163
227
  msgctxt "verb"
228
  msgid "Buy"
229
  msgstr "買う"
230
 
231
- #: includes/i18n.php:165
232
  msgid "Buy License"
233
  msgstr "ライセンスを買う"
234
 
235
- #: includes/i18n.php:167
236
  msgid "Single Site License"
237
  msgstr "シングルサイトライセンス"
238
 
239
- #: includes/i18n.php:169
240
  msgid "Unlimited Licenses"
241
  msgstr "無制限ライセンス"
242
 
243
- #: includes/i18n.php:171
244
  msgid "Up to %s Sites"
245
  msgstr "%sサイトまで"
246
 
247
- #: includes/i18n.php:173
248
  msgid "%sRenew your license now%s to access version %s features and support."
249
  msgstr "%sいますぐライセンスを更新して%s バージョン %s の機能とサポートにアクセスする"
250
 
251
- #: includes/i18n.php:177
252
- msgid ""
253
- "Enter the email address you've used for the upgrade below and we will resend"
254
- " you the license key."
255
  msgstr "アップグレードに使用したメールアドレスを下に入力してください。そうすれば、ライセンスキーをお送りします。"
256
 
257
- #: includes/i18n.php:181
258
  msgctxt "e.g. Professional Plan"
259
  msgid "%s Plan"
260
  msgstr "%s プラン"
261
 
262
- #: includes/i18n.php:183
263
  msgid "You are just one step away - %s"
264
  msgstr "もうあとわずかです - %s"
265
 
266
- #: includes/i18n.php:185
267
  msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
268
  msgid "Complete \"%s\" Activation Now"
269
  msgstr "すぐに \"%s\" 有効化を完了してください"
270
 
271
- #: includes/i18n.php:189
272
  msgid "We made a few tweaks to the plugin, %s"
273
  msgstr "プラグインを微調整します, %s"
274
 
275
- #: includes/i18n.php:191
276
  msgid "Opt-in to make \"%s\" Better!"
277
  msgstr "\"%s\" をより良くするためにオプトインしてください!"
278
 
279
- #: includes/i18n.php:193
280
  msgid "Error"
281
  msgstr "エラー"
282
 
283
- #: includes/i18n.php:195
284
- msgid ""
285
- "Freemius SDK couldn't find the plugin's main file. Please contact "
286
- "sdk@freemius.com with the current error."
287
  msgstr "Freemius SDK がプラグインのメインファイルを見つけることができませんでした。現在のエラーを添えて sdk@freemius.com に連絡してください。"
288
 
289
- #: includes/i18n.php:203
290
  msgctxt "as expiration date"
291
  msgid "Expiration"
292
  msgstr "期限切れ"
293
 
294
- #: includes/i18n.php:205
295
  msgctxt "as software license"
296
  msgid "License"
297
  msgstr "ライセンス"
298
 
299
- #: includes/i18n.php:207
300
  msgid "not verified"
301
  msgstr "未認証"
302
 
303
- #: includes/i18n.php:209
304
  msgid "Verify Email"
305
  msgstr "認証メール"
306
 
307
- #: includes/i18n.php:211
308
  msgctxt "e.g. expires in 2 months"
309
  msgid "Expires in %s"
310
  msgstr "%s で期間終了"
311
 
312
- #: includes/i18n.php:213
313
  msgctxt "e.g. auto renews in 2 months"
314
  msgid "Auto renews in %s"
315
  msgstr "%s に自動更新"
316
 
317
- #: includes/i18n.php:215
318
  msgid "No expiration"
319
  msgstr "有効期限なし"
320
 
321
- #: includes/i18n.php:217
322
  msgid "Expired"
323
  msgstr "期限切れ"
324
 
325
- #: includes/i18n.php:219
326
  msgid "Cancelled"
327
  msgstr "キャンセル"
328
 
329
- #: includes/i18n.php:221
330
  msgctxt "e.g. In 2 hours"
331
  msgid "In %s"
332
  msgstr "%s 内"
333
 
334
- #: includes/i18n.php:223
335
  msgctxt "e.g. 2 min ago"
336
  msgid "%s ago"
337
  msgstr "%s 前"
338
 
339
- #: includes/i18n.php:225
 
 
 
 
340
  msgctxt "as plugin version"
341
  msgid "Version"
342
  msgstr "バージョン"
343
 
344
- #: includes/i18n.php:227
345
  msgid "Name"
346
  msgstr "名前"
347
 
348
- #: includes/i18n.php:229
349
  msgid "Email"
350
  msgstr "Email"
351
 
352
- #: includes/i18n.php:231
353
  msgid "Email address"
354
  msgstr "メールアドレス"
355
 
356
- #: includes/i18n.php:233
357
  msgid "Verified"
358
  msgstr "認証済み"
359
 
360
- #: includes/i18n.php:235
 
 
 
 
 
 
 
 
361
  msgid "Plugin"
362
  msgstr "プラグイン"
363
 
364
- #: includes/i18n.php:237
365
  msgid "Plugins"
366
  msgstr "プラグイン"
367
 
368
- #: includes/i18n.php:239
 
 
 
 
369
  msgid "Themes"
370
  msgstr "テーマ"
371
 
372
- #: includes/i18n.php:241
373
  msgctxt "as file/folder path"
374
  msgid "Path"
375
  msgstr "パス"
376
 
377
- #: includes/i18n.php:243
378
  msgid "Title"
379
  msgstr "タイトル"
380
 
381
- #: includes/i18n.php:245
382
  msgid "Free version"
383
  msgstr "フリーバージョン"
384
 
385
- #: includes/i18n.php:247
386
  msgid "Premium version"
387
  msgstr "プレミアムバージョン"
388
 
389
- #: includes/i18n.php:249
390
  msgctxt "as WP plugin slug"
391
  msgid "Slug"
392
  msgstr "スラッグ"
393
 
394
- #: includes/i18n.php:251
395
  msgid "ID"
396
  msgstr "ID"
397
 
398
- #: includes/i18n.php:253
399
  msgid "Users"
400
  msgstr "ユーザー"
401
 
402
- #: includes/i18n.php:255
403
  msgid "Plugin Installs"
404
  msgstr "プラグインインストール数"
405
 
406
- #: includes/i18n.php:257
 
 
 
 
407
  msgctxt "like websites"
408
  msgid "Sites"
409
  msgstr "サイト数"
410
 
411
- #: includes/i18n.php:259
412
  msgid "User ID"
413
  msgstr "ユーザー ID"
414
 
415
- #: includes/i18n.php:261
416
  msgid "Site ID"
417
  msgstr "サイト ID"
418
 
419
- #: includes/i18n.php:263
420
  msgid "Public Key"
421
  msgstr "公開鍵"
422
 
423
- #: includes/i18n.php:265
424
  msgid "Secret Key"
425
  msgstr "秘密鍵"
426
 
427
- #: includes/i18n.php:267
428
  msgctxt "as secret encryption key missing"
429
  msgid "No Secret"
430
  msgstr "秘密鍵がありません"
431
 
432
- #: includes/i18n.php:269
433
  msgid "No ID"
434
  msgstr "ID がありません"
435
 
436
- #: includes/i18n.php:271
437
  msgctxt "as synchronize license"
438
  msgid "Sync License"
439
  msgstr "ライセンスを同期"
440
 
441
- #: includes/i18n.php:273
442
  msgctxt "as synchronize"
443
  msgid "Sync"
444
  msgstr "同期"
445
 
446
- #: includes/i18n.php:275
447
  msgid "Activate License"
448
  msgstr "ライセンスを有効化"
449
 
450
- #: includes/i18n.php:277
451
  msgid "Activate Free Version"
452
  msgstr "フリーバージョンを有効化"
453
 
454
- #: includes/i18n.php:279
455
- msgid ""
456
- "Please enter the license key that you received in the email right after the "
457
- "purchase:"
458
  msgstr "購入後すぐにメールで受け取ったライセンスキーを入力してください:"
459
 
460
- #: includes/i18n.php:283
461
  msgid "Activating license..."
462
  msgstr "ライセンスを有効化中…"
463
 
464
- #: includes/i18n.php:285
465
  msgid "Change License"
466
  msgstr "ライセンスを変更"
467
 
468
- #: includes/i18n.php:287
469
  msgid "Update License"
470
  msgstr "ライセンスを更新"
471
 
472
- #: includes/i18n.php:289
473
  msgid "Deactivate License"
474
  msgstr "ライセンスを無効化"
475
 
476
- #: includes/i18n.php:291
477
  msgid "Activate"
478
  msgstr "有効化"
479
 
480
- #: includes/i18n.php:293
481
  msgid "Deactivate"
482
  msgstr "無効化"
483
 
484
- #: includes/i18n.php:295
485
  msgid "Skip & Deactivate"
486
  msgstr "スキップし、無効化"
487
 
488
- #: includes/i18n.php:297
 
 
 
 
489
  msgid "No - just deactivate"
490
  msgstr "いいえ - すぐに無効化"
491
 
492
- #: includes/i18n.php:299
493
  msgid "Yes - do your thing"
494
  msgstr "はい - お構いなく"
495
 
496
- #: includes/i18n.php:301
497
  msgctxt "active mode"
498
  msgid "Active"
499
  msgstr "有効"
500
 
501
- #: includes/i18n.php:303
502
  msgctxt "is active mode?"
503
  msgid "Is Active"
504
  msgstr "有効"
505
 
506
- #: includes/i18n.php:305
507
  msgid "Install Now"
508
  msgstr "今すぐインストール"
509
 
510
- #: includes/i18n.php:307
511
  msgid "Install Update Now"
512
  msgstr "今すぐ更新をインストール"
513
 
514
- #: includes/i18n.php:309
515
  msgid "More information about %s"
516
  msgstr "%s に関する詳細情報"
517
 
518
- #: includes/i18n.php:311
519
  msgid "Localhost"
520
  msgstr "localhost"
521
 
522
- #: includes/i18n.php:313
523
  msgctxt "as activate Professional plan"
524
  msgid "Activate %s Plan"
525
  msgstr "%s プランを有効化"
526
 
527
- #: includes/i18n.php:315
528
  msgctxt "as 5 licenses left"
529
  msgid "%s left"
530
  msgstr "あと %s"
531
 
532
- #: includes/i18n.php:317
533
  msgid "Last license"
534
  msgstr "最新のライセンス"
535
 
536
- #: includes/i18n.php:319
537
  msgid "What is your %s?"
538
  msgstr "自分の %s はなんですか?"
539
 
540
- #: includes/i18n.php:321
541
  msgid "Activate this add-on"
542
  msgstr "このアドオンを有効化"
543
 
544
- #: includes/i18n.php:323
545
- msgid ""
546
- "Deactivating your license will block all premium features, but will enable "
547
- "you to activate the license on another site. Are you sure you want to "
548
- "proceed?"
549
  msgstr "ライセンスを無効化するとすべてのプレミアム機能が使えなくなりますが、他のサイトでライセンスを有効にすることができるようになります。本当に実行しますか?"
550
 
551
- #: includes/i18n.php:327
552
- msgid ""
553
- "Deleting the account will automatically deactivate your %s plan license so "
554
- "you can use it on other sites. If you want to terminate the recurring "
555
- "payments as well, click the \"Cancel\" button, and first \"Downgrade\" your "
556
- "account. Are you sure you would like to continue with the deletion?"
557
  msgstr "アカウントを削除すると自動的に %s プランライセンスが無効になり、他のサイトで使うことができます。定期の支払いも終了したい場合は、\"キャンセル\"ボタンをクリックし、まずアカウントを\"ダウングレード\"してください。本当に削除を続行してもいいですか?"
558
 
559
- #: includes/i18n.php:331
560
- msgid ""
561
- "Deletion is not temporary. Only delete if you no longer want to use this "
562
- "plugin anymore. Are you sure you would like to continue with the deletion?"
563
  msgstr "削除は一時的なものではありません。このプラグインを今後使いたくない場合にだけ削除してください。本当に削除を続行してもいいですか?"
564
 
565
- #: includes/i18n.php:335
566
- msgid ""
567
- "Downgrading your plan will immediately stop all future recurring payments "
568
- "and your %s plan license will expire in %s."
569
  msgstr "プランをダウングレードするとすぐに将来の定期の支払いはすべて停止し、%s プランライセンスは %s で期限切れとなります。"
570
 
571
- #: includes/i18n.php:339
572
- msgid ""
573
- "Cancelling the trial will immediately block access to all premium features. "
574
- "Are you sure?"
575
  msgstr "トライアルをキャンセルするとすぐにすべてのプレミアム機能へのアクセスができなくなります。本当に実行しますか?"
576
 
577
- #: includes/i18n.php:343
578
- msgid ""
579
- "You can still enjoy all %s features but you will not have access to plugin "
580
- "updates and support."
581
  msgstr "すべての %s 機能をまだ楽しむことができますが、プラグインの更新とサポートにアクセスすることはできなくなります。"
582
 
583
- #: includes/i18n.php:347
584
- msgid ""
585
- "Once your license expire you can still use the Free version but you will NOT"
586
- " have access to the %s features."
587
- msgstr "ライセンスが期限切れになるとフリーバージョンを使うことはできますが、%s 機能にアクセスすることはできなくなります。"
588
 
589
- #: includes/i18n.php:351
590
  msgid "Are you sure you want to proceed?"
591
  msgstr "本当に続行していいですか?"
592
 
593
- #: includes/i18n.php:357
594
  msgid "Add Ons for %s"
595
  msgstr "%s のアドオン"
596
 
597
- #: includes/i18n.php:359
598
- msgid ""
599
- "We could'nt load the add-ons list. It's probably an issue on our side, "
600
- "please try to come back in few minutes."
601
  msgstr "アドオンリストを読み込むことができませんでした。おそらく運営側の問題になりますので、しばらくしてからお試しください。"
602
 
603
- #: includes/i18n.php:365
604
  msgid "Anonymous feedback"
605
  msgstr "匿名のフィードバック"
606
 
607
- #: includes/i18n.php:367
608
  msgid "Quick feedback"
609
  msgstr "クイックフィードバック"
610
 
611
- #: includes/i18n.php:369
612
  msgid "If you have a moment, please let us know why you are deactivating"
613
  msgstr "お時間があれば、なぜ無効化するのか理由を教えてください。"
614
 
615
- #: includes/i18n.php:373
616
  msgid "Yes - Deactivate"
617
  msgstr "はい - 無効化します"
618
 
619
- #: includes/i18n.php:375
620
  msgid "Submit & Deactivate"
621
  msgstr "送信し無効化"
622
 
623
- #: includes/i18n.php:377
624
  msgid "Cancel"
625
  msgstr "キャンセル"
626
 
627
- #: includes/i18n.php:379
628
  msgid "I no longer need the plugin"
629
  msgstr "もうプラグインを必要としていません"
630
 
631
- #: includes/i18n.php:381
632
  msgid "I found a better plugin"
633
  msgstr "もっと良いプラグインを見つけました"
634
 
635
- #: includes/i18n.php:383
636
  msgid "I only needed the plugin for a short period"
637
  msgstr "短期間プラグインを必要としていただけです"
638
 
639
- #: includes/i18n.php:385
640
  msgid "The plugin broke my site"
641
  msgstr "プラグインのせいでサイトが壊れました"
642
 
643
- #: includes/i18n.php:387
644
  msgid "The plugin suddenly stopped working"
645
  msgstr "プラグインはすぐに動かなくなりました"
646
 
647
- #: includes/i18n.php:389
648
  msgid "I can't pay for it anymore"
649
  msgstr "もう払うことができません"
650
 
651
- #: includes/i18n.php:391
652
  msgid "It's a temporary deactivation. I'm just debugging an issue."
653
  msgstr "一時的な無効化です。問題をデバッグしているだけです。"
654
 
655
- #: includes/i18n.php:395
656
  msgctxt ""
657
- "the text of the \"other\" reason for deactivating the plugin that is shown "
658
- "in the modal box."
659
  msgid "Other"
660
  msgstr "その他"
661
 
662
- #: includes/i18n.php:399
663
  msgid "Kindly tell us the reason so we can improve."
664
  msgstr "改善できるよう、どうか理由を教えてください。"
665
 
666
- #: includes/i18n.php:401
667
  msgid "What's the plugin's name?"
668
  msgstr "プラグイン名は何ですか?"
669
 
670
- #: includes/i18n.php:403
671
  msgid "What price would you feel comfortable paying?"
672
  msgstr " 支払ってもよいと思う価格はいくらですか?"
673
 
674
- #: includes/i18n.php:405
675
  msgid "I couldn't understand how to make it work"
676
  msgstr "どうしたら動作するか分かりませんでした。"
677
 
678
- #: includes/i18n.php:407
679
- msgid ""
680
- "The plugin is great, but I need specific feature that you don't support"
681
  msgstr "プラグインは素晴らしいけれど、サポートしていないある機能を必要としています"
682
 
683
- #: includes/i18n.php:411
684
  msgid "The plugin is not working"
685
  msgstr "プラグインが動いていません"
686
 
687
- #: includes/i18n.php:413
688
  msgid "It's not what I was looking for"
689
  msgstr "探していたものではありません"
690
 
691
- #: includes/i18n.php:415
692
  msgid "The plugin didn't work as expected"
693
  msgstr "プラグインは期待通りには動きませんでした"
694
 
695
- #: includes/i18n.php:417
696
  msgid "What feature?"
697
  msgstr "何の機能ですか?"
698
 
699
- #: includes/i18n.php:419
700
  msgid "Kindly share what didn't work so we can fix it for future users..."
701
  msgstr "将来のユーザーのために修正できるよう、何が動作しなかったのかどうか共有してください…"
702
 
703
- #: includes/i18n.php:423
704
  msgid "What you've been looking for?"
705
  msgstr "探していたのは何ですか?"
706
 
707
- #: includes/i18n.php:425
708
  msgid "What did you expect?"
709
  msgstr "何を期待していましたか?"
710
 
711
- #: includes/i18n.php:427
712
  msgid "The plugin didn't work"
713
  msgstr "プラグインが動作しませんでした"
714
 
715
- #: includes/i18n.php:429
716
  msgid "I don't like to share my information with you"
717
  msgstr "自分の情報を共有したくありません"
718
 
719
- #: includes/i18n.php:431
720
- msgid ""
721
- "You might have missed it, but you don't have to share any data and can just "
722
- "%s the opt-in."
723
  msgstr "見逃していたかもしれませんが、どんな情報も共有する必要はなく、オプトインを $s することができます。 "
724
 
725
- #: includes/i18n.php:441
726
  msgctxt "greeting"
727
  msgid "Hey %s,"
728
  msgstr "おおい %s さん、"
729
 
730
- #: includes/i18n.php:443
731
  msgctxt "a greeting. E.g. Thanks John!"
732
  msgid "Thanks %s!"
733
  msgstr "ありがとう $s さん!"
734
 
735
- #: includes/i18n.php:445
736
- msgid ""
737
- "Never miss an important update - opt-in to our security and feature updates "
738
- "notifications, and non-sensitive diagnostic tracking with %4$s."
739
  msgstr "重要な更新を逃さないように - セキュリティとおすすめの更新通知、%4$s とセンシティブではない診断トラッキングをオプトイン"
740
 
741
- #: includes/i18n.php:449
742
- msgid ""
743
- "Please help us improve %1$s! If you opt-in, some data about your usage of "
744
- "%1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still "
745
- "work just fine."
746
  msgstr "%1$s を改善するのを手伝ってください。オプトインすれば、あなたの %1$s の使用に関するデータが %4$s へと送られます。これをスキップしても大丈夫です! %1$s は今でも素晴らしいでしょう。"
747
 
748
- #: includes/i18n.php:453
749
- msgid ""
750
- "You should receive an activation email for %s to your mailbox at %s. Please "
751
- "make sure you click the activation button in that email to %s."
752
  msgstr "%s のメールボックスに %s の有効化のメールを受け取っているはずです。%s のメールに記載された有効化ボタンをクリックしてください。"
753
 
754
- #: includes/i18n.php:455
755
  msgid "complete the install"
756
  msgstr "インストールを完了"
757
 
758
- #: includes/i18n.php:457
759
  msgid "start the trial"
760
  msgstr "トライアルを開始"
761
 
762
- #: includes/i18n.php:459
763
- msgid ""
764
- "Thanks for purchasing %s! To get started, please enter your license key:"
765
  msgstr "%s を購入いただきありがとうございます。はじめにライセンスキーを入力してください:"
766
 
767
- #: includes/i18n.php:463
768
- msgid ""
769
- "The plugin will be periodically sending data to %s to check for plugin "
770
- "updates and verify the validity of your license."
771
  msgstr "プラグインはプラグインの更新をチェックし、ライセンスが有効か確認するために、%s に周期的にデータを送信します。"
772
 
773
- #: includes/i18n.php:467
774
  msgid "What permissions are being granted?"
775
  msgstr "付与されているパーミッションは何ですか?"
776
 
777
- #: includes/i18n.php:469
778
  msgid "Your Profile Overview"
779
  msgstr "プロフィール概要"
780
 
781
- #: includes/i18n.php:471
782
  msgid "Name and email address"
783
  msgstr "名前とメールアドレス"
784
 
785
- #: includes/i18n.php:473
786
  msgid "Your Site Overview"
787
  msgstr "サイト概要"
788
 
789
- #: includes/i18n.php:475
790
  msgid "Site URL, WP version, PHP info, plugins & themes"
791
  msgstr "サイト URL、WP バージョン、PHP info、プラグインとテーマ"
792
 
793
- #: includes/i18n.php:479
794
  msgid "Current Plugin Events"
795
  msgstr "現在のプラグインイベント"
796
 
797
- #: includes/i18n.php:481
798
  msgid "Activation, deactivation and uninstall"
799
  msgstr "有効化、無効化、アンインストール"
800
 
801
- #: includes/i18n.php:483
802
  msgid "Plugins & Themes"
803
  msgstr "プラグインとテーマ"
804
 
805
- #: includes/i18n.php:485
806
  msgid "Titles, versions and state."
807
  msgstr "タイトル、バージョン、状態"
808
 
809
- #: includes/i18n.php:487
810
  msgid "Admin Notices"
811
  msgstr "管理者通知"
812
 
813
- #: includes/i18n.php:489
814
  msgid "Newsletter"
815
  msgstr "ニュースレター"
816
 
817
- #: includes/i18n.php:491
818
  msgid "Updates, announcements, marketing, no spam"
819
  msgstr "更新、発表、マーケティング、スパムなし"
820
 
821
- #: includes/i18n.php:493
822
  msgid "Privacy Policy"
823
  msgstr "プライバシーポリシー"
824
 
825
- #: includes/i18n.php:495
826
  msgid "Terms of Service"
827
  msgstr "利用規約"
828
 
829
- #: includes/i18n.php:497
830
  msgctxt "as activating plugin"
831
  msgid "Activating"
832
  msgstr "有効化中"
833
 
834
- #: includes/i18n.php:499
835
  msgctxt "as in the process of sending an email"
836
  msgid "Sending email"
837
  msgstr "メール送信中"
838
 
839
- #: includes/i18n.php:503
840
  msgctxt "button label"
841
  msgid "Allow & Continue"
842
  msgstr "許可して続ける"
843
 
844
- #: includes/i18n.php:505
845
  msgctxt "button label"
846
  msgid "Agree & Activate License"
847
  msgstr "同意してライセンスを有効化"
848
 
849
- #: includes/i18n.php:507
850
  msgctxt "verb"
851
  msgid "Skip"
852
  msgstr "スキップ"
853
 
854
- #: includes/i18n.php:509
855
  msgid "Click here to use the plugin anonymously"
856
  msgstr "匿名でプラグインを使用するにはこちらをクリック"
857
 
858
- #: includes/i18n.php:511
859
  msgid "Re-send activation email"
860
  msgstr "有効化メールを再送信"
861
 
862
- #: includes/i18n.php:513
863
  msgid "License key"
864
  msgstr "ライセンスキー"
865
 
866
- #: includes/i18n.php:515
867
  msgid "Send License Key"
868
  msgstr "ライセンスキーを送信"
869
 
870
- #: includes/i18n.php:517
871
  msgid "Sending license key"
872
  msgstr "ライセンスキーを送信中"
873
 
874
- #: includes/i18n.php:519
875
  msgid "Have a license key?"
876
  msgstr "ライセンスキーはお持ちですか?"
877
 
878
- #: includes/i18n.php:521
879
  msgid "Don't have a license key?"
880
  msgstr "ライセンスキーをお持ちではありませんか?"
881
 
882
- #: includes/i18n.php:523
883
  msgid "Can't find your license key?"
884
  msgstr "ライセンスキーは見つかりませんか?"
885
 
886
- #: includes/i18n.php:525
887
- msgid ""
888
- "We couldn't find your email address in the system, are you sure it's the "
889
- "right address?"
890
  msgstr "システムではメールアドレスを見つけることができませんでした。メールアドレスが正しいか確認してください。"
891
 
892
- #: includes/i18n.php:529
893
- msgid ""
894
- "We can't see any active licenses associated with that email address, are you"
895
- " sure it's the right address?"
896
  msgstr "メールアドレスに関連付けられた有効なライセンスが見つかりません。メールアドレスが正しいか確認してください。"
897
 
898
- #: includes/i18n.php:533
899
  msgid "Opt In"
900
  msgstr "オプトイン"
901
 
902
- #: includes/i18n.php:535
903
  msgid "Opt Out"
904
  msgstr "オプトアウト"
905
 
906
- #: includes/i18n.php:537
907
  msgid "On second thought - I want to continue helping"
908
  msgstr "第二の考えで - 手伝い続けたいです"
909
 
910
- #: includes/i18n.php:541
911
  msgid "Opting out..."
912
  msgstr "オプトアウト中…"
913
 
914
- #: includes/i18n.php:543
915
  msgid "Opting in..."
916
  msgstr "オプトイン中…"
917
 
918
- #: includes/i18n.php:545
919
- msgid ""
920
- "We appreciate your help in making the %s better by letting us track some "
921
- "usage data."
922
  msgstr "使用データを追跡できるよう許可してくれたことで、%s をより良くするための手助けに感謝致します。"
923
 
924
- #: includes/i18n.php:549
925
- msgid ""
926
- "Usage tracking is done in the name of making %s better. Making a better user"
927
- " experience, prioritizing new features, and more good things. We'd really "
928
- "appreciate if you'll reconsider letting us continue with the tracking."
929
  msgstr "使用の追跡は %s をより良くする名目の下に行われています。ユーザー体験をより良くし、新機能に優先順位をつけるためなどに使います。追跡を続けてもよいと再考してくれるなら本当に感謝致します。"
930
 
931
- #: includes/i18n.php:553
932
- msgid ""
933
- "By clicking \"Opt Out\", we will no longer be sending any data from %s to "
934
- "%s."
935
  msgstr "\"オプトアウト\"をクリックすることで、もう %s から %s へのデータの送信は行いません。"
936
 
937
- #: includes/i18n.php:563
938
  msgid "Screenshots"
939
  msgstr "スクリーンショット"
940
 
941
- #: includes/i18n.php:565
942
  msgid "Click to view full-size screenshot %d"
943
  msgstr "クリックしてフルサイズのスクリーンショットを見る %d"
944
 
945
- #: includes/i18n.php:573
946
  msgid "Freemius Debug"
947
  msgstr "Freemius デバッグ"
948
 
949
- #: includes/i18n.php:575
950
  msgctxt "as turned on"
951
  msgid "On"
952
  msgstr "オン"
953
 
954
- #: includes/i18n.php:577
955
  msgctxt "as turned off"
956
  msgid "Off"
957
  msgstr "オフ"
958
 
959
- #: includes/i18n.php:579
960
  msgctxt "as code debugging"
961
  msgid "Debugging"
962
  msgstr "デバッグ"
963
 
964
- #: includes/i18n.php:581
965
  msgid "Freemius State"
966
  msgstr "Freemius ステータス"
967
 
968
- #: includes/i18n.php:583
969
  msgctxt "as connection was successful"
970
  msgid "Connected"
971
  msgstr "接続"
972
 
973
- #: includes/i18n.php:585
974
  msgctxt "as connection blocked"
975
  msgid "Blocked"
976
  msgstr "ブロック"
977
 
978
- #: includes/i18n.php:587
979
  msgctxt "as application program interface"
980
  msgid "API"
981
  msgstr "API"
982
 
983
- #: includes/i18n.php:589
984
  msgctxt "as software development kit versions"
985
  msgid "SDK"
986
  msgstr "SDK"
987
 
988
- #: includes/i18n.php:591
989
  msgctxt "as software development kit versions"
990
  msgid "SDK Versions"
991
  msgstr "SDK バージョン"
992
 
993
- #: includes/i18n.php:595
994
  msgctxt "as plugin folder path"
995
  msgid "Plugin Path"
996
  msgstr "プラグインのパス"
997
 
998
- #: includes/i18n.php:597
999
  msgctxt "as sdk path"
1000
  msgid "SDK Path"
1001
  msgstr "SDK のパス"
1002
 
1003
- #: includes/i18n.php:599
1004
  msgid "Add Ons of Plugin %s"
1005
  msgstr "プラグインのアドオン %s"
1006
 
1007
- #: includes/i18n.php:601
1008
  msgid "Are you sure you want to delete all Freemius data?"
1009
  msgstr "ほんとうに全ての Freemius データを削除しますか?"
1010
 
1011
- #: includes/i18n.php:605
1012
  msgid "Actions"
1013
  msgstr "アクション"
1014
 
1015
- #: includes/i18n.php:607
1016
  msgid "Delete All Accounts"
1017
  msgstr "全てのアカウントを削除"
1018
 
1019
- #: includes/i18n.php:609
1020
  msgid "Start Fresh"
1021
  msgstr "初期化を開始"
1022
 
1023
- #: includes/i18n.php:611
1024
  msgid "Clear API Cache"
1025
  msgstr "API キャッシュをクリア"
1026
 
1027
- #: includes/i18n.php:613
1028
  msgid "Sync Data From Server"
1029
  msgstr "サーバーからのデータを同期"
1030
 
1031
- #: includes/i18n.php:615
1032
  msgid "Scheduled Crons"
1033
  msgstr "スケジュール Cron"
1034
 
1035
- #: includes/i18n.php:617
 
 
 
 
1036
  msgid "Plugins & Themes Sync"
1037
  msgstr "プラグインとテーマを同期"
1038
 
1039
- #: includes/i18n.php:625
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1040
  msgctxt "as congratulations"
1041
  msgid "Congrats"
1042
  msgstr "おめでとう"
1043
 
1044
- #: includes/i18n.php:627
1045
  msgctxt "exclamation"
1046
  msgid "Oops"
1047
  msgstr "おっと"
1048
 
1049
- #: includes/i18n.php:629
1050
  msgctxt "interjection expressing joy or exuberance"
1051
  msgid "Yee-haw"
1052
  msgstr "ヤッホー"
1053
 
1054
- #: includes/i18n.php:633
1055
  msgctxt ""
1056
- "(especially in electronic communication) used to express elation, "
1057
- "enthusiasm, or triumph."
1058
  msgid "W00t"
1059
  msgstr "やったー"
1060
 
1061
- #: includes/i18n.php:637
1062
  msgctxt "a positive response"
1063
  msgid "Right on"
1064
  msgstr "そうだ"
1065
 
1066
- #: includes/i18n.php:639
1067
  msgctxt ""
1068
- "something somebody says when they are thinking about what you have just "
1069
- "said. "
1070
  msgid "Hmm"
1071
  msgstr "ふむ"
1072
 
1073
- #: includes/i18n.php:643
1074
  msgid "O.K"
1075
  msgstr "O.K"
1076
 
1077
- #: includes/i18n.php:645
1078
  msgctxt "exclamation"
1079
  msgid "Hey"
1080
  msgstr "ヘイ"
1081
 
1082
- #: includes/i18n.php:647
1083
  msgctxt "advance notice of something that will need attention."
1084
  msgid "Heads up"
1085
  msgstr "警告"
1086
 
1087
- #: includes/i18n.php:657
1088
  msgid "Seems like you got the latest release."
1089
  msgstr "最新版を取得できました。"
1090
 
1091
- #: includes/i18n.php:659
1092
  msgid "You are all good!"
1093
  msgstr "すべて完璧です!"
1094
 
1095
- #: includes/i18n.php:661
1096
- msgid ""
1097
- "Sorry, we could not complete the email update. Another user with the same "
1098
- "email is already registered."
1099
  msgstr "メールアドレスのアップデートを完了できませんでした。他のユーザーがすでに同じメールアドレスで登録しているようです。"
1100
 
1101
- #: includes/i18n.php:665
1102
- msgid ""
1103
- "If you would like to give up the ownership of the plugin's account to %s "
1104
- "click the Change Ownership button."
1105
  msgstr "もし%s にプラグインの所有権を譲りたいなら、所有権を変更ボタンをクリックしてください。"
1106
 
1107
- #: includes/i18n.php:669
1108
- msgid ""
1109
- "Your email was successfully updated. You should receive an email with "
1110
- "confirmation instructions in few moments."
1111
  msgstr "メールアドレスのアップデートが完了しました。まもなく確認メールが届きます。"
1112
 
1113
- #: includes/i18n.php:673
1114
  msgid "Your name was successfully updated."
1115
  msgstr "名前のアップデートが成功しました。"
1116
 
1117
- #: includes/i18n.php:675
1118
  msgid "You have successfully updated your %s."
1119
  msgstr "%s のアップデートが成功しました。"
1120
 
1121
- #: includes/i18n.php:677
1122
  msgid "Please provide your full name."
1123
  msgstr "フルネームを入力してください。"
1124
 
1125
- #: includes/i18n.php:679
1126
- msgid ""
1127
- "Verification mail was just sent to %s. If you can't find it after 5 min, "
1128
- "please check your spam box."
1129
  msgstr "%s に確認メールを送信しました。もし5分以内にそれが届かない場合、迷惑メールボックスを確認してください。"
1130
 
1131
- #: includes/i18n.php:683
1132
- msgid ""
1133
- "Just letting you know that the add-ons information of %s is being pulled "
1134
- "from an external server."
1135
  msgstr "%s のアドオンに関する情報は、外部サーバーから取得されます。"
1136
 
1137
- #: includes/i18n.php:687
1138
  msgid "No credit card required"
1139
  msgstr "クレジットカードは必要ありません。"
1140
 
1141
- #: includes/i18n.php:689
1142
  msgid "Premium plugin version was successfully activated."
1143
  msgstr "プレミアムプラグインのバージョンの有効化に成功しました。"
1144
 
1145
- #: includes/i18n.php:693
1146
  msgid "The upgrade of %s was successfully completed."
1147
  msgstr "%s のアップグレードが完了しました。"
1148
 
1149
- #: includes/i18n.php:695
1150
  msgid "Your account was successfully activated with the %s plan."
1151
  msgstr "アカウントが %s プランで有効化できました。"
1152
 
1153
- #: includes/i18n.php:699
1154
  msgid "Download the latest %s version now"
1155
  msgstr "%s の最新版をダウンロードする"
1156
 
1157
- #: includes/i18n.php:701
1158
  msgid "Please follow these steps to complete the upgrade"
1159
  msgstr "アップグレードを完了するには以下の手順を完了させてください。"
1160
 
1161
- #: includes/i18n.php:705
1162
  msgid "Download the latest %s version"
1163
  msgstr "最新の %s をダウンロード"
1164
 
1165
- #: includes/i18n.php:707
1166
  msgid "Download the latest version"
1167
  msgstr "最新版をダウンロード"
1168
 
1169
- #: includes/i18n.php:709
1170
  msgid "Deactivate the free version"
1171
  msgstr "無料バージョンを無効化"
1172
 
1173
- #: includes/i18n.php:711
1174
  msgid "Upload and activate the downloaded version"
1175
  msgstr "ダウンロードしたバージョンをアップロードして有効化"
1176
 
1177
- #: includes/i18n.php:713
1178
  msgid "How to upload and activate?"
1179
  msgstr "アップロードと有効化の方法"
1180
 
1181
- #: includes/i18n.php:715
1182
  msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1183
  msgid "%s Add-on was successfully purchased."
1184
  msgstr "%s のアドオンの支払いが完了しました。"
1185
 
1186
- #: includes/i18n.php:719
1187
  msgid "Your %s Add-on plan was successfully upgraded."
1188
  msgstr "%s のアドオンのプランのアップグレードが完了しました。"
1189
 
1190
- #: includes/i18n.php:723
1191
  msgid "Your email has been successfully verified - you are AWESOME!"
1192
  msgstr "あなたのメールアドレスの承認が完了しました。すごい!"
1193
 
1194
- #: includes/i18n.php:727
1195
  msgid "Your plan was successfully upgraded."
1196
  msgstr "プランのアップグレードが成功しました。"
1197
 
1198
- #: includes/i18n.php:729
1199
  msgid "Your plan was successfully changed to %s."
1200
  msgstr "プランの %s への変更が成功しました。"
1201
 
1202
- #: includes/i18n.php:731
1203
- msgid ""
1204
- "Your license has expired. You can still continue using the free plugin "
1205
- "forever."
1206
  msgstr "ライセンスの有効期限が切れました。無料バージョンの利用を継続することができます。"
1207
 
1208
- #: includes/i18n.php:735
1209
- msgid ""
1210
- "Your license has been cancelled. If you think it's a mistake, please contact"
1211
- " support."
1212
  msgstr "ライセンスはキャンセルされました。もしそれが間違いだと思うならサポートに連絡してください。"
1213
 
1214
- #: includes/i18n.php:739
1215
  msgid "Your trial has been successfully started."
1216
  msgstr "トライアル版の利用を開始しました。"
1217
 
1218
- #: includes/i18n.php:741
1219
  msgid "Your license was successfully activated."
1220
  msgstr "ライセンスの有効化が成功しました。"
1221
 
1222
- #: includes/i18n.php:743
1223
  msgid "It looks like your site currently doesn't have an active license."
1224
  msgstr "サイトは有効なライセンスを持っていないようです。"
1225
 
1226
- #: includes/i18n.php:747
1227
- msgid ""
1228
- "Your license was successfully deactivated, you are back to the %s plan."
1229
  msgstr "ライセンスの無効化が完了しました。%s プランに戻りました。"
1230
 
1231
- #: includes/i18n.php:751
1232
  msgid "It looks like the license deactivation failed."
1233
  msgstr "ライセンスの無効化ができませんでした。"
1234
 
1235
- #: includes/i18n.php:755
1236
  msgid "It looks like the license could not be activated."
1237
  msgstr "ライセンスの有効化ができませんでした。"
1238
 
1239
- #: includes/i18n.php:759
1240
  msgid "Error received from the server:"
1241
  msgstr "サーバーからエラーを受信しました。"
1242
 
1243
- #: includes/i18n.php:761
1244
- msgid ""
1245
- "Your trial has expired. You can still continue using all our free features."
1246
  msgstr "トライアルの有効期限が切れました。引き続き無料の機能の利用を続けることができます。"
1247
 
1248
- #: includes/i18n.php:765
1249
- msgid ""
1250
- "Your plan was successfully downgraded. Your %s plan license will expire in "
1251
- "%s."
1252
  msgstr "プランのダウングレードが完了しました。%s プランは %s に有効期限が切れます。"
1253
 
1254
- #: includes/i18n.php:769
1255
- msgid ""
1256
- "Seems like we are having some temporary issue with your plan downgrade. "
1257
- "Please try again in few minutes."
1258
  msgstr "プランのダウングレードの際に一時的な問題が発生したようです。数分後に再度操作してください。"
1259
 
1260
- #: includes/i18n.php:773
1261
- msgid ""
1262
- "It looks like you are not in trial mode anymore so there's nothing to cancel"
1263
- " :)"
1264
  msgstr "すでにトライアルモードではないようなので、キャンセルする必要はありません :)"
1265
 
1266
- #: includes/i18n.php:777
1267
  msgid "Your %s free trial was successfully cancelled."
1268
  msgstr "%s のフリートライアルはキャンセルされました。"
1269
 
1270
- #: includes/i18n.php:781
1271
  msgctxt "%s - numeric version number"
1272
  msgid "Version %s was released."
1273
  msgstr "バージョン %s をリリースしました。"
1274
 
1275
- #: includes/i18n.php:785
1276
  msgid "Please download %s."
1277
  msgstr "%s をダウンロードしてください。"
1278
 
1279
- #: includes/i18n.php:787
1280
  msgctxt "%s - plan name, as the latest professional version here"
1281
  msgid "the latest %s version here"
1282
  msgstr "最新の %s バージョンはこちらです。"
1283
 
1284
- #: includes/i18n.php:791
1285
- msgid ""
1286
- "How do you like %s so far? Test all our %s premium features with a %d-day "
1287
- "free trial."
1288
  msgstr "%s はどうですか? 私たちの全ての %s のプレミアム機能をお試しください。"
1289
 
1290
- #: includes/i18n.php:795
1291
  msgctxt "call to action"
1292
  msgid "Start free trial"
1293
  msgstr "フリートライアルを開始"
1294
 
1295
- #: includes/i18n.php:797
1296
  msgid "Starting trial"
1297
  msgstr "トライアルを開始"
1298
 
1299
- #: includes/i18n.php:799
1300
  msgid "Please wait"
1301
  msgstr "お待ちください"
1302
 
1303
- #: includes/i18n.php:801
1304
- msgid ""
1305
- "Seems like we are having some temporary issue with your trial cancellation. "
1306
- "Please try again in few minutes."
1307
  msgstr "トライアルのキャンセルに一時的な問題がありました。数分後に再度お試しください。"
1308
 
1309
- #: includes/i18n.php:805
1310
  msgid "You already utilized a trial before."
1311
  msgstr "以前すでに試用版を利用しました。"
1312
 
1313
- #: includes/i18n.php:807
1314
  msgid "You are already running the plugin in a trial mode."
1315
  msgstr "すでにトライアル版のプラグインを利用しています。"
1316
 
1317
- #: includes/i18n.php:811
1318
  msgid "Plan %s do not exist, therefore, can't start a trial."
1319
  msgstr "%s プランは存在しないため、試用を開始できません。"
1320
 
1321
- #: includes/i18n.php:815
1322
  msgid "Plan %s does not support a trial period."
1323
  msgstr "%s プランにはトライアル期間はありません。"
1324
 
1325
- #: includes/i18n.php:817
1326
  msgid "None of the plugin's plans supports a trial period."
1327
  msgstr "トライアル期間をサポートしているプランのプラグインはありません。"
1328
 
1329
- #: includes/i18n.php:821
1330
- msgid ""
1331
- "Unexpected API error. Please contact the plugin's author with the following "
1332
- "error."
1333
  msgstr "予期しない API のエラー。プラグイン開発者に連絡をとってください。"
1334
 
1335
- #: includes/i18n.php:825
1336
  msgid "No commitment for %s days - cancel anytime!"
1337
  msgstr "%s 日以内であればいつでもキャンセルできます。"
1338
 
1339
- #: includes/i18n.php:827
1340
- msgid ""
1341
- "Your license has expired. You can still continue using all the %s features, "
1342
- "but you'll need to renew your license to continue getting updates and "
1343
- "support."
1344
  msgstr "ライセンスは有効期限がきれました。%s の機能を引き続き利用することができます。ただし、アップデートやサポートをうけるにはライセンスをアップデートする必要があります。"
1345
 
1346
- #: includes/i18n.php:831
1347
  msgid "Couldn't activate %s."
1348
  msgstr "%s を有効化できません。"
1349
 
1350
- #: includes/i18n.php:833
1351
  msgid "Please contact us with the following message:"
1352
  msgstr "以下のメッセージとともに私たちに連絡をください。"
1353
 
1354
- #: includes/i18n.php:835
1355
- msgid ""
1356
- "It looks like you are still on the %s plan. If you did upgrade or change "
1357
- "your plan, it's probably an issue on our side - sorry."
1358
  msgstr "まだ %s プランのようです。もしアップグレードやプランの変更をしたのなら、こちらで何らかの問題が発生しているようです。申し訳ありません。"
1359
 
1360
- #: includes/i18n.php:839
1361
  msgid "Please contact us here"
1362
  msgstr "こちらで私たちに連絡をとってください。"
1363
 
1364
- #: includes/i18n.php:841
1365
- msgid ""
1366
- "I have upgraded my account but when I try to Sync the License, the plan "
1367
- "remains %s."
1368
  msgstr "アカウントをアップグレードしましたが、ライセンスを同期しようとするとプランが %s のままです。"
1369
 
1370
- #: includes/i18n.php:849
1371
  msgid "From unknown reason, the API connectivity test failed."
1372
  msgstr "不明のエラーにより、API 接続ができませんでした。"
1373
 
1374
- #: includes/i18n.php:853
1375
- msgid ""
1376
- "It's probably a temporary issue on our end. Just to be sure, with your "
1377
- "permission, would it be o.k to run another connectivity test?"
1378
  msgstr "それは私たちの一時的な問題のようです。もし許可していただけるなら他の接続テストをしてもよいですか?"
1379
 
1380
- #: includes/i18n.php:857
1381
- msgid ""
1382
- "We use PHP cURL library for the API calls, which is a very common library "
1383
- "and usually installed out of the box. Unfortunately, cURL is not installed "
1384
- "on your server."
1385
- msgstr "私たちは、API コールに PHP の cURL ライブラリを使用しています。これは一般的なライブラリで多くの場合インストールされていますが、あなたのサーバーにはインストールされていないようです。"
1386
 
1387
- #: includes/i18n.php:861
1388
- msgid ""
1389
- "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
 
 
 
1390
  msgstr "不明のエラーにより私たちが使用している CloudFlare のファイヤーウォールが接続を拒否したようです。"
1391
 
1392
- #: includes/i18n.php:865
1393
  msgctxt "as pluginX requires an access to our API"
1394
  msgid "%s requires an access to our API."
1395
  msgstr "%s は、私たちの API への接続が必要です。"
1396
 
1397
- #: includes/i18n.php:869
1398
- msgid ""
1399
- "It looks like your server is using Squid ACL (access control lists), which "
1400
- "blocks the connection."
1401
  msgstr "サーバーは Squid ACL(Access control lists) を使用しているらしく、それが接続をブロックしています。"
1402
 
1403
- #: includes/i18n.php:873
1404
  msgid "I don't know what is Squid or ACL, help me!"
1405
  msgstr "Squid ACL について知りません。助けてください!"
1406
 
1407
- #: includes/i18n.php875, includes/i18n.php:889
1408
- msgid ""
1409
- "We'll make sure to contact your hosting company and resolve the issue. You "
1410
- "will get a follow-up email to %s once we have an update."
1411
  msgstr "ホスティング会社に連絡して問題を解決してください。 更新が完了したら、 %s へのフォローアップメールが届きます。"
1412
 
1413
- #: includes/i18n.php:879
1414
  msgid "I'm a system administrator"
1415
  msgstr "私はシステム管理者です"
1416
 
1417
- #: includes/i18n.php:881
1418
- msgid ""
1419
- "Great, please whitelist the following domains: %s. Once you done, deactivate"
1420
- " the plugin and activate it again."
1421
- msgstr "以下のドメインを許可してください: %s 。それが完了したらそのプラグインを無効化して有効化してください。"
1422
 
1423
- #: includes/i18n.php:885
1424
  msgid "I don't know what is cURL or how to install it, help me!"
1425
  msgstr "cURL がなにか、そのインストール方法を知りません。助けてください。"
1426
 
1427
- #: includes/i18n.php:893
1428
- msgid ""
1429
- "Great, please install cURL and enable it in your php.ini file. To make sure "
1430
- "it was successfully activated, use 'phpinfo()'. Once activated, deactivate "
1431
- "the plugin and reactivate it back again."
1432
- msgstr "cURLをインストールし、php.iniファイルで有効にしてください。 正常に起動されたことを確認するには、 'phpinfo()' を使用してください。 プラグインを有効化したら、プラグインを無効化して再度有効化し直してください。"
1433
 
1434
- #: includes/i18n.php:897
1435
- msgid ""
1436
- "We are sure it's an issue on our side and more than happy to resolve it for "
1437
- "you ASAP if you give us a chance."
1438
  msgstr "それは私たちの側の問題だと確信しています。もし機会をくれるなら私たちはそれを一刻でも早く修正します。"
1439
 
1440
- #: includes/i18n.php:901
1441
- msgid ""
1442
- "Sorry for the inconvenience and we are here to help if you give us a chance."
1443
  msgstr "ご迷惑をおかけしてすいません。もし機会をいただけたらお手伝いをします。"
1444
 
1445
- #: includes/i18n.php:905
1446
  msgid "Yes - I'm giving you a chance to fix it"
1447
  msgstr "はい、修正をお願いします。"
1448
 
1449
- #: includes/i18n.php:907
1450
- msgid ""
1451
- "We will do our best to whitelist your server and resolve this issue ASAP. "
1452
- "You will get a follow-up email to %s once we have an update."
1453
  msgstr "私たちは、少しでも早くサーバーをホワイトリストに登録して問題を修正します。アップデートを行ったら、%s あてに報告を送信します。"
1454
 
1455
- #: includes/i18n.php:911
1456
  msgid "Let's try your previous version"
1457
  msgstr "以前のバージョンでお試しください。"
1458
 
1459
- #: includes/i18n.php:913
1460
  msgid "Uninstall this version and install the previous one."
1461
  msgstr "このバージョンをアンインストールして、以前のバージョンをインストールする。"
1462
 
1463
- #: includes/i18n.php:917
1464
  msgid "That's exhausting, please deactivate"
1465
  msgstr "それは、使用できません。無効化してください。"
1466
 
1467
- #: includes/i18n.php:919
1468
- msgid ""
1469
- "We feel your frustration and sincerely apologize for the inconvenience. Hope"
1470
- " to see you again in the future."
1471
  msgstr "ご迷惑をおかけして心からお詫び申し上げます。将来ふたたびお会いできることを楽しみにしています。"
1472
 
1473
- #: includes/i18n.php:923
1474
- msgid ""
1475
- "Thank for giving us the chance to fix it! A message was just sent to our "
1476
- "technical staff. We will get back to you as soon as we have an update to %s."
1477
- " Appreciate your patience."
1478
  msgstr "修正するチャンスをいただきありがとうございます! テクニカルスタッフにメッセージが送信されました。 %s への更新が行われるとすぐにあなたに連絡します。 あなたの忍耐に感謝します。"
1479
 
1480
- #: includes/i18n.php:927
1481
  msgctxt "%1s - plugin title, %2s - API domain"
1482
- msgid ""
1483
- "Your server is blocking the access to Freemius' API, which is crucial for "
1484
- "%1s synchronization. Please contact your host to whitelist %2s"
1485
  msgstr "サーバーは %1s の同期に不可欠な Freemius の API へのアクセスをブロックしています。 ホワイトリストに %2s を追加していただけるようあなたのホスティング会社に連絡してください。"
1486
 
1487
- #: includes/i18n.php:931
1488
- msgid ""
1489
- "It seems like one of the authentication parameters is wrong. Update your "
1490
- "Public Key, Secret Key & User ID, and try again."
1491
  msgstr "認証パラメータの1つが間違っているようです。 公開鍵、秘密鍵、ユーザーIDを更新して、もう一度お試しください。"
1492
 
1493
- #: includes/i18n.php:939
1494
- msgid ""
1495
- "Please check your mailbox, you should receive an email via %s to confirm the"
1496
- " ownership change. From security reasons, you must confirm the change within"
1497
- " the next 15 min. If you cannot find the email, please check your spam "
1498
- "folder."
1499
  msgstr "メールボックスを確認してください。所有権の変更を確認するには、%s でメールを受け取る必要があります。 セキュリティ上の理由から、次の15分以内に変更を確認する必要があります。 電子メールが見つからない場合は、迷惑メールフォルダを確認してください。"
1500
 
1501
- #: includes/i18n.php:943
1502
- msgid ""
1503
- "Thanks for confirming the ownership change. An email was just sent to %s for"
1504
- " final approval."
1505
  msgstr "所有権の変更を確認していただきありがとうございます。 %s に承認メールが送信されました。"
1506
 
1507
- #: includes/i18n.php:947
1508
  msgid "%s is the new owner of the account."
1509
  msgstr "%s は新しいオーナーです。"
1510
 
1511
- #: includes/i18n.php:951
1512
  msgctxt "addonX cannot run without pluginY"
1513
  msgid "%s cannot run without %s."
1514
  msgstr "%s は、%s が無いと実行することができません。"
1515
 
1516
- #: includes/i18n.php:955
1517
  msgctxt "addonX cannot run..."
1518
  msgid "%s cannot run without the plugin."
1519
  msgstr "%s は、プラグインが無いと実行することができません。"
1520
 
1521
- #: includes/i18n.php:959
1522
  msgctxt "pluginX activation was successfully..."
1523
  msgid "%s activation was successfully completed."
1524
  msgstr "%s の有効化が成功しました。"
1525
 
1526
- #: includes/i18n.php:963
1527
  msgctxt "Plugin installer section title"
1528
  msgid "Features & Pricing"
1529
  msgstr "機能 & 料金"
1530
 
1531
- #: includes/i18n.php:967
1532
  msgid "Add-on must be deployed to WordPress.org or Freemius."
1533
  msgstr "アドオンが WordPress.org か Freemius にデプロイされている必要があります。"
1534
 
1535
- #: includes/i18n.php:971
1536
  msgid "Paid add-on must be deployed to Freemius."
1537
  msgstr "有料アドオンは Freemius にデプロイされている必要があります。"
1538
 
1539
- #: includes/i18n.php:979
1540
- msgid ""
1541
- "%s is a premium only add-on. You have to purchase a license first before "
1542
- "activating the plugin."
1543
  msgstr "%s はプレミアムのみのアドオンです。そのプラグインを有効化する前にライセンスを購入する必要があります。"
1544
 
1545
- #: includes/i18n.php:983
1546
- msgid ""
1547
- "%s free trial was successfully cancelled. Since the add-on is premium only "
1548
- "it was automatically deactivated. If you like to use it in the future, "
1549
- "you'll have to purchase a license."
1550
  msgstr "%s の無料試用が正常にキャンセルされました。 アドオンはプレミアムなので、自動的に無効化されました。 将来使用したい場合は、ライセンスを購入する必要があります。"
1551
 
1552
- #: includes/i18n.php:995
1553
  msgctxt "as every month"
1554
  msgid "Monthly"
1555
  msgstr "月"
1556
 
1557
- #: includes/i18n.php:997
1558
  msgctxt "as monthly period"
1559
  msgid "mo"
1560
  msgstr "月"
1561
 
1562
- #: includes/i18n.php:999
1563
  msgctxt "as once a year"
1564
  msgid "Annual"
1565
  msgstr "年次"
1566
 
1567
- #: includes/i18n.php:1001
1568
  msgctxt "as once a year"
1569
  msgid "Annually"
1570
  msgstr "毎年"
1571
 
1572
- #: includes/i18n.php:1003
1573
  msgctxt "as once a year"
1574
  msgid "Once"
1575
  msgstr "一度"
1576
 
1577
- #: includes/i18n.php:1005
1578
  msgctxt "as annual period"
1579
  msgid "year"
1580
  msgstr "年"
1581
 
1582
- #: includes/i18n.php:1007
1583
  msgid "Lifetime"
1584
  msgstr "ライフタイム"
1585
 
1586
- #: includes/i18n.php:1009
1587
  msgctxt "e.g. the best product"
1588
  msgid "Best"
1589
  msgstr "ベスト"
1590
 
1591
- #: includes/i18n.php:1011
1592
  msgctxt "e.g. billed monthly"
1593
  msgid "Billed %s"
1594
  msgstr "%s への請求"
1595
 
1596
- #: includes/i18n.php:1013
1597
  msgctxt "as a discount of $5 or 10%"
1598
  msgid "Save %s"
1599
  msgstr "%s を保存"
1600
 
1601
- #: includes/i18n.php:1017
1602
  msgid "View details"
1603
  msgstr "詳細を表示"
1604
 
1605
- #: includes/i18n.php:1025
1606
  msgctxt "button label"
1607
  msgid "Approve & Start Trial"
1608
  msgstr "気に入ったのでトライアルを開始"
1609
 
1610
- #: includes/i18n.php:1029
1611
- msgid ""
1612
- "You are 1-click away from starting your %1$s-day free trial of the %2$s "
1613
- "plan."
1614
  msgstr "%2$s プランの%1$s日間のフリートライアルを開始するまであとワンクリックです。"
1615
 
1616
- #: includes/i18n.php:1033
1617
- msgid ""
1618
- "For compliance with the WordPress.org guidelines, before we start the trial "
1619
- "we ask that you opt-in with your user and non-sensitive site information, "
1620
- "allowing the plugin to periodically send data to %s to check for version "
1621
- "updates and to validate your trial."
1622
  msgstr "WordPress.org ガイドラインの遵守のため、ユーザーとセンシティブでないサイト情報をオプトインすること、バージョンの更新確認のために %s へとプラグインが一時的にデータを送信することの許可、トライアルを有効にすることの3つについて、トライアルの開始前にお尋ねします。"
1623
 
1624
- #: includes/i18n.php:1045
1625
  msgid "Business name"
1626
  msgstr "商号"
1627
 
1628
- #: includes/i18n.php:1047
1629
  msgid "Tax / VAT ID"
1630
  msgstr "税金 / VAT ID"
1631
 
1632
- #: includes/i18n.php:1049
1633
  msgid "Address Line %d"
1634
  msgstr "住所欄 %d"
1635
 
1636
- #: includes/i18n.php:1051
1637
  msgid "Country"
1638
  msgstr "国"
1639
 
1640
- #: includes/i18n.php:1053
1641
  msgid "Select Country"
1642
  msgstr "国を選択"
1643
 
1644
- #: includes/i18n.php:1055
1645
  msgid "City"
1646
  msgstr "市"
1647
 
1648
- #: includes/i18n.php:1057
1649
  msgid "Town"
1650
  msgstr "町"
1651
 
1652
- #: includes/i18n.php:1059
1653
  msgid "State"
1654
  msgstr "州"
1655
 
1656
- #: includes/i18n.php:1061
1657
  msgid "Province"
1658
  msgstr "県・州・省"
1659
 
1660
- #: includes/i18n.php:1063
1661
  msgid "ZIP / Postal Code"
1662
  msgstr "ZIP / 郵便番号"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2017 freemius
2
+ # This file is distributed under the same license as the freemius package.
3
  # Translators:
4
  # Odyssey <8bitodyssey+github@gmail.com>, 2016
5
  # Takayuki Miyauchi <miya0001@users.noreply.github.com>, 2016
6
  msgid ""
7
  msgstr ""
8
  "Project-Id-Version: WordPress SDK\n"
9
+ "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
10
  "POT-Creation-Date: \n"
11
+ "PO-Revision-Date: 2017-05-12 17:32+0000\n"
12
  "Last-Translator: Vova Feldman <vova@freemius.com>\n"
13
+ "Language: ja_JP\n"
14
  "Language-Team: Japanese (Japan) (http://www.transifex.com/freemius/wordpress-sdk/language/ja_JP/)\n"
15
  "Content-Type: text/plain; charset=UTF-8\n"
16
+ "Content-Transfer-Encoding: 8bit\n"
 
17
  "Plural-Forms: nplurals=1; plural=0;\n"
18
+ "MIME-Version: 1.0\n"
19
+ "X-Poedit-Basepath: ..\n"
20
+ "X-Poedit-KeywordsList: _fs_text;_fs_echo;_fs_esc_attr;_fs_esc_attr_echo;_fs_esc_html;_fs_esc_html_echo;_fs_x:1,2c;_fs_ex:1,2c;_fs_esc_attr_x:1,2c;_fs_esc_html_x:1,2c;_fs_n:1,2;_fs_n_noop:1,2;_fs_nx:1,2,4c;_fs_nx_noop:1,2,3c\n"
21
+ "X-Poedit-SearchPath-0: .\n"
22
+ "X-Poedit-SearchPathExcluded-0: *.js\n"
23
+ "X-Poedit-SourceCharset: UTF-8\n"
24
+
25
+ #: includes/i18n.php:37
 
 
 
 
26
  msgid "Account"
27
  msgstr "アカウント"
28
 
29
+ #: includes/i18n.php:38
30
  msgid "Add On"
31
  msgstr "アドオン"
32
 
33
+ #: includes/i18n.php:39
34
  msgid "Contact Us"
35
  msgstr "連絡"
36
 
37
+ #: includes/i18n.php:40
38
  msgid "Contact Support"
39
  msgstr "サポートに連絡"
40
 
41
+ #: includes/i18n.php:41
42
  msgid "Change Ownership"
43
  msgstr "オーナーを変更"
44
 
45
+ #: includes/i18n.php:42
46
  msgid "Support"
47
  msgstr "サポート"
48
 
49
+ #: includes/i18n.php:43
50
  msgid "Support Forum"
51
  msgstr "サポートフォーラム"
52
 
53
+ #: includes/i18n.php:44
54
  msgid "Add Ons"
55
  msgstr "アドオン"
56
 
57
+ #: includes/i18n.php:45
58
  msgctxt "verb"
59
  msgid "Upgrade"
60
  msgstr "アップグレード"
61
 
62
+ #: includes/i18n.php:46
63
  msgid "Awesome"
64
  msgstr "すごい!"
65
 
66
+ #: includes/i18n.php:47
67
  msgctxt "noun"
68
  msgid "Pricing"
69
  msgstr "料金表"
70
 
71
+ #: includes/i18n.php:48
72
  msgctxt "noun"
73
  msgid "Price"
74
  msgstr "料金"
75
 
76
+ #: includes/i18n.php:49
77
  msgid "Unlimited Updates"
78
  msgstr "無制限のアップデート"
79
 
80
+ #: includes/i18n.php:50
81
  msgctxt "verb"
82
  msgid "Downgrade"
83
  msgstr "ダウングレード"
84
 
85
+ #: includes/i18n.php:51
86
+ msgctxt "verb"
87
+ msgid "Cancel Subscription"
88
+ msgstr "Cancel Subscription"
89
+
90
+ #: includes/i18n.php:52
91
  msgid "Cancel Trial"
92
  msgstr "トライアルをキャンセル"
93
 
94
+ #: includes/i18n.php:53
95
  msgid "Free Trial"
96
  msgstr "フリートライアル"
97
 
98
+ #: includes/i18n.php:54
99
  msgid "Start my free %s"
100
  msgstr "無料の %s を開始"
101
 
102
+ #: includes/i18n.php:55
103
  msgid "No commitment for %s - cancel anytime"
104
  msgstr "%s の拘束はありません。いつでもキャンセルできます。"
105
 
106
+ #: includes/i18n.php:56
107
  msgid "After your free %s, pay as little as %s"
108
  msgstr "無料の %s の後は、わずか %s だけお支払ください。"
109
 
110
+ #: includes/i18n.php:57
111
  msgid "Details"
112
  msgstr "詳細"
113
 
114
+ #: includes/i18n.php:58
115
  msgid "Account Details"
116
  msgstr "アカウント詳細"
117
 
118
+ #: includes/i18n.php:59
119
  msgctxt "verb"
120
  msgid "Delete"
121
  msgstr "削除"
122
 
123
+ #: includes/i18n.php:60
124
  msgctxt "verb"
125
  msgid "Show"
126
  msgstr "表示"
127
 
128
+ #: includes/i18n.php:61
129
  msgctxt "verb"
130
  msgid "Hide"
131
  msgstr "非表示"
132
 
133
+ #: includes/i18n.php:62
134
  msgctxt "verb"
135
  msgid "Edit"
136
  msgstr "編集"
137
 
138
+ #: includes/i18n.php:63
139
  msgctxt "verb"
140
  msgid "Update"
141
  msgstr "更新"
142
 
143
+ #: includes/i18n.php:64
144
  msgid "Date"
145
  msgstr "日付"
146
 
147
+ #: includes/i18n.php:65
148
  msgid "Amount"
149
  msgstr "総額"
150
 
151
+ #: includes/i18n.php:66
152
  msgid "Invoice"
153
  msgstr "請求書"
154
 
155
+ #: includes/i18n.php:67
156
  msgid "Billing"
157
  msgstr "請求書"
158
 
159
+ #: includes/i18n.php:68
160
  msgid "Payments"
161
  msgstr "支払い"
162
 
163
+ #: includes/i18n.php:69
164
  msgid "Delete Account"
165
  msgstr "アカウントを削除"
166
 
167
+ #: includes/i18n.php:70
168
  msgctxt "as close a window"
169
  msgid "Dismiss"
170
  msgstr "却下"
171
 
172
+ #: includes/i18n.php:71
173
  msgctxt "as product pricing plan"
174
  msgid "Plan"
175
  msgstr "プラン"
176
 
177
+ #: includes/i18n.php:72
178
  msgid "Change Plan"
179
  msgstr "プラン変更"
180
 
181
+ #: includes/i18n.php:73
182
  msgctxt "as download professional version"
183
  msgid "Download %s Version"
184
  msgstr "%s バージョンをダウンロード"
185
 
186
+ #: includes/i18n.php:74
187
  msgctxt "as download professional version now"
188
  msgid "Download %s version now"
189
  msgstr "%s バージョンを今すぐダウンロード"
190
 
191
+ #: includes/i18n.php:75
192
  msgctxt "as download latest version"
193
  msgid "Download Latest"
194
  msgstr "最新版をダウンロード"
195
 
196
+ #: includes/i18n.php:76
197
  msgctxt "E.g. you have a professional license."
198
  msgid "You have a %s license."
199
  msgstr "%s ライセンスを持っています。"
200
 
201
+ #: includes/i18n.php:77
202
  msgid "New"
203
  msgstr "新規"
204
 
205
+ #: includes/i18n.php:78
206
  msgid "Free"
207
  msgstr "無料"
208
 
209
+ #: includes/i18n.php:79
210
  msgctxt "as trial plan"
211
  msgid "Trial"
212
  msgstr "トライアル"
213
 
214
+ #: includes/i18n.php:80
215
  msgctxt "as starting a trial plan"
216
  msgid "Start Trial"
217
  msgstr "トライアルを開始"
218
 
219
+ #: includes/i18n.php:81
220
  msgctxt "verb"
221
  msgid "Purchase"
222
  msgstr "購入"
223
 
224
+ #: includes/i18n.php:82
225
  msgid "Purchase License"
226
  msgstr "ライセンスを購入"
227
 
228
+ #: includes/i18n.php:83
229
  msgctxt "verb"
230
  msgid "Buy"
231
  msgstr "買う"
232
 
233
+ #: includes/i18n.php:84
234
  msgid "Buy License"
235
  msgstr "ライセンスを買う"
236
 
237
+ #: includes/i18n.php:85
238
  msgid "Single Site License"
239
  msgstr "シングルサイトライセンス"
240
 
241
+ #: includes/i18n.php:86
242
  msgid "Unlimited Licenses"
243
  msgstr "無制限ライセンス"
244
 
245
+ #: includes/i18n.php:87
246
  msgid "Up to %s Sites"
247
  msgstr "%sサイトまで"
248
 
249
+ #: includes/i18n.php:88
250
  msgid "%sRenew your license now%s to access version %s features and support."
251
  msgstr "%sいますぐライセンスを更新して%s バージョン %s の機能とサポートにアクセスする"
252
 
253
+ #: includes/i18n.php:89
254
+ msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
 
 
255
  msgstr "アップグレードに使用したメールアドレスを下に入力してください。そうすれば、ライセンスキーをお送りします。"
256
 
257
+ #: includes/i18n.php:90
258
  msgctxt "e.g. Professional Plan"
259
  msgid "%s Plan"
260
  msgstr "%s プラン"
261
 
262
+ #: includes/i18n.php:91
263
  msgid "You are just one step away - %s"
264
  msgstr "もうあとわずかです - %s"
265
 
266
+ #: includes/i18n.php:92
267
  msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
268
  msgid "Complete \"%s\" Activation Now"
269
  msgstr "すぐに \"%s\" 有効化を完了してください"
270
 
271
+ #: includes/i18n.php:94
272
  msgid "We made a few tweaks to the plugin, %s"
273
  msgstr "プラグインを微調整します, %s"
274
 
275
+ #: includes/i18n.php:95
276
  msgid "Opt-in to make \"%s\" Better!"
277
  msgstr "\"%s\" をより良くするためにオプトインしてください!"
278
 
279
+ #: includes/i18n.php:96
280
  msgid "Error"
281
  msgstr "エラー"
282
 
283
+ #: includes/i18n.php:97
284
+ msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
 
 
285
  msgstr "Freemius SDK がプラグインのメインファイルを見つけることができませんでした。現在のエラーを添えて sdk@freemius.com に連絡してください。"
286
 
287
+ #: includes/i18n.php:100
288
  msgctxt "as expiration date"
289
  msgid "Expiration"
290
  msgstr "期限切れ"
291
 
292
+ #: includes/i18n.php:101
293
  msgctxt "as software license"
294
  msgid "License"
295
  msgstr "ライセンス"
296
 
297
+ #: includes/i18n.php:102
298
  msgid "not verified"
299
  msgstr "未認証"
300
 
301
+ #: includes/i18n.php:103
302
  msgid "Verify Email"
303
  msgstr "認証メール"
304
 
305
+ #: includes/i18n.php:104
306
  msgctxt "e.g. expires in 2 months"
307
  msgid "Expires in %s"
308
  msgstr "%s で期間終了"
309
 
310
+ #: includes/i18n.php:105
311
  msgctxt "e.g. auto renews in 2 months"
312
  msgid "Auto renews in %s"
313
  msgstr "%s に自動更新"
314
 
315
+ #: includes/i18n.php:106
316
  msgid "No expiration"
317
  msgstr "有効期限なし"
318
 
319
+ #: includes/i18n.php:107
320
  msgid "Expired"
321
  msgstr "期限切れ"
322
 
323
+ #: includes/i18n.php:108
324
  msgid "Cancelled"
325
  msgstr "キャンセル"
326
 
327
+ #: includes/i18n.php:109
328
  msgctxt "e.g. In 2 hours"
329
  msgid "In %s"
330
  msgstr "%s 内"
331
 
332
+ #: includes/i18n.php:110
333
  msgctxt "e.g. 2 min ago"
334
  msgid "%s ago"
335
  msgstr "%s 前"
336
 
337
+ #: includes/i18n.php:112
338
+ msgid "%s or higher"
339
+ msgstr "%s or higher"
340
+
341
+ #: includes/i18n.php:113
342
  msgctxt "as plugin version"
343
  msgid "Version"
344
  msgstr "バージョン"
345
 
346
+ #: includes/i18n.php:114
347
  msgid "Name"
348
  msgstr "名前"
349
 
350
+ #: includes/i18n.php:115
351
  msgid "Email"
352
  msgstr "Email"
353
 
354
+ #: includes/i18n.php:116
355
  msgid "Email address"
356
  msgstr "メールアドレス"
357
 
358
+ #: includes/i18n.php:117
359
  msgid "Verified"
360
  msgstr "認証済み"
361
 
362
+ #: includes/i18n.php:118
363
+ msgid "Module"
364
+ msgstr "Module"
365
+
366
+ #: includes/i18n.php:119
367
+ msgid "Module Type"
368
+ msgstr "Module Type"
369
+
370
+ #: includes/i18n.php:120
371
  msgid "Plugin"
372
  msgstr "プラグイン"
373
 
374
+ #: includes/i18n.php:121
375
  msgid "Plugins"
376
  msgstr "プラグイン"
377
 
378
+ #: includes/i18n.php:122
379
+ msgid "Theme"
380
+ msgstr "Theme"
381
+
382
+ #: includes/i18n.php:123
383
  msgid "Themes"
384
  msgstr "テーマ"
385
 
386
+ #: includes/i18n.php:124
387
  msgctxt "as file/folder path"
388
  msgid "Path"
389
  msgstr "パス"
390
 
391
+ #: includes/i18n.php:125
392
  msgid "Title"
393
  msgstr "タイトル"
394
 
395
+ #: includes/i18n.php:126
396
  msgid "Free version"
397
  msgstr "フリーバージョン"
398
 
399
+ #: includes/i18n.php:127
400
  msgid "Premium version"
401
  msgstr "プレミアムバージョン"
402
 
403
+ #: includes/i18n.php:128
404
  msgctxt "as WP plugin slug"
405
  msgid "Slug"
406
  msgstr "スラッグ"
407
 
408
+ #: includes/i18n.php:129
409
  msgid "ID"
410
  msgstr "ID"
411
 
412
+ #: includes/i18n.php:130
413
  msgid "Users"
414
  msgstr "ユーザー"
415
 
416
+ #: includes/i18n.php:131
417
  msgid "Plugin Installs"
418
  msgstr "プラグインインストール数"
419
 
420
+ #: includes/i18n.php:132
421
+ msgid "%s Installs"
422
+ msgstr "%s Installs"
423
+
424
+ #: includes/i18n.php:133
425
  msgctxt "like websites"
426
  msgid "Sites"
427
  msgstr "サイト数"
428
 
429
+ #: includes/i18n.php:134
430
  msgid "User ID"
431
  msgstr "ユーザー ID"
432
 
433
+ #: includes/i18n.php:135
434
  msgid "Site ID"
435
  msgstr "サイト ID"
436
 
437
+ #: includes/i18n.php:136
438
  msgid "Public Key"
439
  msgstr "公開鍵"
440
 
441
+ #: includes/i18n.php:137
442
  msgid "Secret Key"
443
  msgstr "秘密鍵"
444
 
445
+ #: includes/i18n.php:138
446
  msgctxt "as secret encryption key missing"
447
  msgid "No Secret"
448
  msgstr "秘密鍵がありません"
449
 
450
+ #: includes/i18n.php:139
451
  msgid "No ID"
452
  msgstr "ID がありません"
453
 
454
+ #: includes/i18n.php:140
455
  msgctxt "as synchronize license"
456
  msgid "Sync License"
457
  msgstr "ライセンスを同期"
458
 
459
+ #: includes/i18n.php:141
460
  msgctxt "as synchronize"
461
  msgid "Sync"
462
  msgstr "同期"
463
 
464
+ #: includes/i18n.php:142
465
  msgid "Activate License"
466
  msgstr "ライセンスを有効化"
467
 
468
+ #: includes/i18n.php:143
469
  msgid "Activate Free Version"
470
  msgstr "フリーバージョンを有効化"
471
 
472
+ #: includes/i18n.php:144
473
+ msgid "Please enter the license key that you received in the email right after the purchase:"
 
 
474
  msgstr "購入後すぐにメールで受け取ったライセンスキーを入力してください:"
475
 
476
+ #: includes/i18n.php:145
477
  msgid "Activating license..."
478
  msgstr "ライセンスを有効化中…"
479
 
480
+ #: includes/i18n.php:146
481
  msgid "Change License"
482
  msgstr "ライセンスを変更"
483
 
484
+ #: includes/i18n.php:147
485
  msgid "Update License"
486
  msgstr "ライセンスを更新"
487
 
488
+ #: includes/i18n.php:148
489
  msgid "Deactivate License"
490
  msgstr "ライセンスを無効化"
491
 
492
+ #: includes/i18n.php:149
493
  msgid "Activate"
494
  msgstr "有効化"
495
 
496
+ #: includes/i18n.php:150
497
  msgid "Deactivate"
498
  msgstr "無効化"
499
 
500
+ #: includes/i18n.php:151
501
  msgid "Skip & Deactivate"
502
  msgstr "スキップし、無効化"
503
 
504
+ #: includes/i18n.php:152
505
+ msgid "Skip & %s"
506
+ msgstr "Skip & %s"
507
+
508
+ #: includes/i18n.php:153
509
  msgid "No - just deactivate"
510
  msgstr "いいえ - すぐに無効化"
511
 
512
+ #: includes/i18n.php:154
513
  msgid "Yes - do your thing"
514
  msgstr "はい - お構いなく"
515
 
516
+ #: includes/i18n.php:155
517
  msgctxt "active mode"
518
  msgid "Active"
519
  msgstr "有効"
520
 
521
+ #: includes/i18n.php:156
522
  msgctxt "is active mode?"
523
  msgid "Is Active"
524
  msgstr "有効"
525
 
526
+ #: includes/i18n.php:157
527
  msgid "Install Now"
528
  msgstr "今すぐインストール"
529
 
530
+ #: includes/i18n.php:158
531
  msgid "Install Update Now"
532
  msgstr "今すぐ更新をインストール"
533
 
534
+ #: includes/i18n.php:159
535
  msgid "More information about %s"
536
  msgstr "%s に関する詳細情報"
537
 
538
+ #: includes/i18n.php:160
539
  msgid "Localhost"
540
  msgstr "localhost"
541
 
542
+ #: includes/i18n.php:161
543
  msgctxt "as activate Professional plan"
544
  msgid "Activate %s Plan"
545
  msgstr "%s プランを有効化"
546
 
547
+ #: includes/i18n.php:162
548
  msgctxt "as 5 licenses left"
549
  msgid "%s left"
550
  msgstr "あと %s"
551
 
552
+ #: includes/i18n.php:163
553
  msgid "Last license"
554
  msgstr "最新のライセンス"
555
 
556
+ #: includes/i18n.php:164
557
  msgid "What is your %s?"
558
  msgstr "自分の %s はなんですか?"
559
 
560
+ #: includes/i18n.php:165
561
  msgid "Activate this add-on"
562
  msgstr "このアドオンを有効化"
563
 
564
+ #: includes/i18n.php:166
565
+ 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?"
 
 
 
566
  msgstr "ライセンスを無効化するとすべてのプレミアム機能が使えなくなりますが、他のサイトでライセンスを有効にすることができるようになります。本当に実行しますか?"
567
 
568
+ #: includes/i18n.php:167
569
+ 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?"
 
 
 
 
570
  msgstr "アカウントを削除すると自動的に %s プランライセンスが無効になり、他のサイトで使うことができます。定期の支払いも終了したい場合は、\"キャンセル\"ボタンをクリックし、まずアカウントを\"ダウングレード\"してください。本当に削除を続行してもいいですか?"
571
 
572
+ #: includes/i18n.php:168
573
+ 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?"
 
 
574
  msgstr "削除は一時的なものではありません。このプラグインを今後使いたくない場合にだけ削除してください。本当に削除を続行してもいいですか?"
575
 
576
+ #: includes/i18n.php:169
577
+ msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
 
 
578
  msgstr "プランをダウングレードするとすぐに将来の定期の支払いはすべて停止し、%s プランライセンスは %s で期限切れとなります。"
579
 
580
+ #: includes/i18n.php:170
581
+ msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
 
 
582
  msgstr "トライアルをキャンセルするとすぐにすべてのプレミアム機能へのアクセスができなくなります。本当に実行しますか?"
583
 
584
+ #: includes/i18n.php:171
585
+ msgid "You can still enjoy all %s features but you will not have access to plugin updates and support."
 
 
586
  msgstr "すべての %s 機能をまだ楽しむことができますが、プラグインの更新とサポートにアクセスすることはできなくなります。"
587
 
588
+ #: includes/i18n.php:172
589
+ msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
590
+ msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
 
 
591
 
592
+ #: includes/i18n.php:173
593
  msgid "Are you sure you want to proceed?"
594
  msgstr "本当に続行していいですか?"
595
 
596
+ #: includes/i18n.php:176
597
  msgid "Add Ons for %s"
598
  msgstr "%s のアドオン"
599
 
600
+ #: includes/i18n.php:177
601
+ 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."
 
 
602
  msgstr "アドオンリストを読み込むことができませんでした。おそらく運営側の問題になりますので、しばらくしてからお試しください。"
603
 
604
+ #: includes/i18n.php:179
605
  msgid "Anonymous feedback"
606
  msgstr "匿名のフィードバック"
607
 
608
+ #: includes/i18n.php:180
609
  msgid "Quick feedback"
610
  msgstr "クイックフィードバック"
611
 
612
+ #: includes/i18n.php:181
613
  msgid "If you have a moment, please let us know why you are deactivating"
614
  msgstr "お時間があれば、なぜ無効化するのか理由を教えてください。"
615
 
616
+ #: includes/i18n.php:182
617
  msgid "Yes - Deactivate"
618
  msgstr "はい - 無効化します"
619
 
620
+ #: includes/i18n.php:183
621
  msgid "Submit & Deactivate"
622
  msgstr "送信し無効化"
623
 
624
+ #: includes/i18n.php:184
625
  msgid "Cancel"
626
  msgstr "キャンセル"
627
 
628
+ #: includes/i18n.php:185
629
  msgid "I no longer need the plugin"
630
  msgstr "もうプラグインを必要としていません"
631
 
632
+ #: includes/i18n.php:186
633
  msgid "I found a better plugin"
634
  msgstr "もっと良いプラグインを見つけました"
635
 
636
+ #: includes/i18n.php:187
637
  msgid "I only needed the plugin for a short period"
638
  msgstr "短期間プラグインを必要としていただけです"
639
 
640
+ #: includes/i18n.php:188
641
  msgid "The plugin broke my site"
642
  msgstr "プラグインのせいでサイトが壊れました"
643
 
644
+ #: includes/i18n.php:189
645
  msgid "The plugin suddenly stopped working"
646
  msgstr "プラグインはすぐに動かなくなりました"
647
 
648
+ #: includes/i18n.php:190
649
  msgid "I can't pay for it anymore"
650
  msgstr "もう払うことができません"
651
 
652
+ #: includes/i18n.php:191
653
  msgid "It's a temporary deactivation. I'm just debugging an issue."
654
  msgstr "一時的な無効化です。問題をデバッグしているだけです。"
655
 
656
+ #: includes/i18n.php:192
657
  msgctxt ""
 
 
658
  msgid "Other"
659
  msgstr "その他"
660
 
661
+ #: includes/i18n.php:194
662
  msgid "Kindly tell us the reason so we can improve."
663
  msgstr "改善できるよう、どうか理由を教えてください。"
664
 
665
+ #: includes/i18n.php:195
666
  msgid "What's the plugin's name?"
667
  msgstr "プラグイン名は何ですか?"
668
 
669
+ #: includes/i18n.php:196
670
  msgid "What price would you feel comfortable paying?"
671
  msgstr " 支払ってもよいと思う価格はいくらですか?"
672
 
673
+ #: includes/i18n.php:197
674
  msgid "I couldn't understand how to make it work"
675
  msgstr "どうしたら動作するか分かりませんでした。"
676
 
677
+ #: includes/i18n.php:198
678
+ msgid "The plugin is great, but I need specific feature that you don't support"
 
679
  msgstr "プラグインは素晴らしいけれど、サポートしていないある機能を必要としています"
680
 
681
+ #: includes/i18n.php:199
682
  msgid "The plugin is not working"
683
  msgstr "プラグインが動いていません"
684
 
685
+ #: includes/i18n.php:200
686
  msgid "It's not what I was looking for"
687
  msgstr "探していたものではありません"
688
 
689
+ #: includes/i18n.php:201
690
  msgid "The plugin didn't work as expected"
691
  msgstr "プラグインは期待通りには動きませんでした"
692
 
693
+ #: includes/i18n.php:202
694
  msgid "What feature?"
695
  msgstr "何の機能ですか?"
696
 
697
+ #: includes/i18n.php:203
698
  msgid "Kindly share what didn't work so we can fix it for future users..."
699
  msgstr "将来のユーザーのために修正できるよう、何が動作しなかったのかどうか共有してください…"
700
 
701
+ #: includes/i18n.php:204
702
  msgid "What you've been looking for?"
703
  msgstr "探していたのは何ですか?"
704
 
705
+ #: includes/i18n.php:205
706
  msgid "What did you expect?"
707
  msgstr "何を期待していましたか?"
708
 
709
+ #: includes/i18n.php:206
710
  msgid "The plugin didn't work"
711
  msgstr "プラグインが動作しませんでした"
712
 
713
+ #: includes/i18n.php:207
714
  msgid "I don't like to share my information with you"
715
  msgstr "自分の情報を共有したくありません"
716
 
717
+ #: includes/i18n.php:208
718
+ msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
 
 
719
  msgstr "見逃していたかもしれませんが、どんな情報も共有する必要はなく、オプトインを $s することができます。 "
720
 
721
+ #: includes/i18n.php:212
722
  msgctxt "greeting"
723
  msgid "Hey %s,"
724
  msgstr "おおい %s さん、"
725
 
726
+ #: includes/i18n.php:213
727
  msgctxt "a greeting. E.g. Thanks John!"
728
  msgid "Thanks %s!"
729
  msgstr "ありがとう $s さん!"
730
 
731
+ #: includes/i18n.php:214
732
+ msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
 
 
733
  msgstr "重要な更新を逃さないように - セキュリティとおすすめの更新通知、%4$s とセンシティブではない診断トラッキングをオプトイン"
734
 
735
+ #: includes/i18n.php:215
736
+ 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."
 
 
 
737
  msgstr "%1$s を改善するのを手伝ってください。オプトインすれば、あなたの %1$s の使用に関するデータが %4$s へと送られます。これをスキップしても大丈夫です! %1$s は今でも素晴らしいでしょう。"
738
 
739
+ #: includes/i18n.php:216
740
+ 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."
 
 
741
  msgstr "%s のメールボックスに %s の有効化のメールを受け取っているはずです。%s のメールに記載された有効化ボタンをクリックしてください。"
742
 
743
+ #: includes/i18n.php:217
744
  msgid "complete the install"
745
  msgstr "インストールを完了"
746
 
747
+ #: includes/i18n.php:218
748
  msgid "start the trial"
749
  msgstr "トライアルを開始"
750
 
751
+ #: includes/i18n.php:219
752
+ msgid "Thanks for purchasing %s! To get started, please enter your license key:"
 
753
  msgstr "%s を購入いただきありがとうございます。はじめにライセンスキーを入力してください:"
754
 
755
+ #: includes/i18n.php:220
756
+ msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
 
 
757
  msgstr "プラグインはプラグインの更新をチェックし、ライセンスが有効か確認するために、%s に周期的にデータを送信します。"
758
 
759
+ #: includes/i18n.php:221
760
  msgid "What permissions are being granted?"
761
  msgstr "付与されているパーミッションは何ですか?"
762
 
763
+ #: includes/i18n.php:222
764
  msgid "Your Profile Overview"
765
  msgstr "プロフィール概要"
766
 
767
+ #: includes/i18n.php:223
768
  msgid "Name and email address"
769
  msgstr "名前とメールアドレス"
770
 
771
+ #: includes/i18n.php:224
772
  msgid "Your Site Overview"
773
  msgstr "サイト概要"
774
 
775
+ #: includes/i18n.php:225
776
  msgid "Site URL, WP version, PHP info, plugins & themes"
777
  msgstr "サイト URL、WP バージョン、PHP info、プラグインとテーマ"
778
 
779
+ #: includes/i18n.php:226
780
  msgid "Current Plugin Events"
781
  msgstr "現在のプラグインイベント"
782
 
783
+ #: includes/i18n.php:227
784
  msgid "Activation, deactivation and uninstall"
785
  msgstr "有効化、無効化、アンインストール"
786
 
787
+ #: includes/i18n.php:228
788
  msgid "Plugins & Themes"
789
  msgstr "プラグインとテーマ"
790
 
791
+ #: includes/i18n.php:229
792
  msgid "Titles, versions and state."
793
  msgstr "タイトル、バージョン、状態"
794
 
795
+ #: includes/i18n.php:230
796
  msgid "Admin Notices"
797
  msgstr "管理者通知"
798
 
799
+ #: includes/i18n.php:231
800
  msgid "Newsletter"
801
  msgstr "ニュースレター"
802
 
803
+ #: includes/i18n.php:232
804
  msgid "Updates, announcements, marketing, no spam"
805
  msgstr "更新、発表、マーケティング、スパムなし"
806
 
807
+ #: includes/i18n.php:233
808
  msgid "Privacy Policy"
809
  msgstr "プライバシーポリシー"
810
 
811
+ #: includes/i18n.php:234
812
  msgid "Terms of Service"
813
  msgstr "利用規約"
814
 
815
+ #: includes/i18n.php:235
816
  msgctxt "as activating plugin"
817
  msgid "Activating"
818
  msgstr "有効化中"
819
 
820
+ #: includes/i18n.php:236
821
  msgctxt "as in the process of sending an email"
822
  msgid "Sending email"
823
  msgstr "メール送信中"
824
 
825
+ #: includes/i18n.php:237
826
  msgctxt "button label"
827
  msgid "Allow & Continue"
828
  msgstr "許可して続ける"
829
 
830
+ #: includes/i18n.php:238
831
  msgctxt "button label"
832
  msgid "Agree & Activate License"
833
  msgstr "同意してライセンスを有効化"
834
 
835
+ #: includes/i18n.php:239
836
  msgctxt "verb"
837
  msgid "Skip"
838
  msgstr "スキップ"
839
 
840
+ #: includes/i18n.php:240
841
  msgid "Click here to use the plugin anonymously"
842
  msgstr "匿名でプラグインを使用するにはこちらをクリック"
843
 
844
+ #: includes/i18n.php:241
845
  msgid "Re-send activation email"
846
  msgstr "有効化メールを再送信"
847
 
848
+ #: includes/i18n.php:242
849
  msgid "License key"
850
  msgstr "ライセンスキー"
851
 
852
+ #: includes/i18n.php:243
853
  msgid "Send License Key"
854
  msgstr "ライセンスキーを送信"
855
 
856
+ #: includes/i18n.php:244
857
  msgid "Sending license key"
858
  msgstr "ライセンスキーを送信中"
859
 
860
+ #: includes/i18n.php:245
861
  msgid "Have a license key?"
862
  msgstr "ライセンスキーはお持ちですか?"
863
 
864
+ #: includes/i18n.php:246
865
  msgid "Don't have a license key?"
866
  msgstr "ライセンスキーをお持ちではありませんか?"
867
 
868
+ #: includes/i18n.php:247
869
  msgid "Can't find your license key?"
870
  msgstr "ライセンスキーは見つかりませんか?"
871
 
872
+ #: includes/i18n.php:248
873
+ msgid "We couldn't find your email address in the system, are you sure it's the right address?"
 
 
874
  msgstr "システムではメールアドレスを見つけることができませんでした。メールアドレスが正しいか確認してください。"
875
 
876
+ #: includes/i18n.php:249
877
+ msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
 
 
878
  msgstr "メールアドレスに関連付けられた有効なライセンスが見つかりません。メールアドレスが正しいか確認してください。"
879
 
880
+ #: includes/i18n.php:250
881
  msgid "Opt In"
882
  msgstr "オプトイン"
883
 
884
+ #: includes/i18n.php:251
885
  msgid "Opt Out"
886
  msgstr "オプトアウト"
887
 
888
+ #: includes/i18n.php:252
889
  msgid "On second thought - I want to continue helping"
890
  msgstr "第二の考えで - 手伝い続けたいです"
891
 
892
+ #: includes/i18n.php:253
893
  msgid "Opting out..."
894
  msgstr "オプトアウト中…"
895
 
896
+ #: includes/i18n.php:254
897
  msgid "Opting in..."
898
  msgstr "オプトイン中…"
899
 
900
+ #: includes/i18n.php:255
901
+ msgid "We appreciate your help in making the %s better by letting us track some usage data."
 
 
902
  msgstr "使用データを追跡できるよう許可してくれたことで、%s をより良くするための手助けに感謝致します。"
903
 
904
+ #: includes/i18n.php:256
905
+ 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."
 
 
 
906
  msgstr "使用の追跡は %s をより良くする名目の下に行われています。ユーザー体験をより良くし、新機能に優先順位をつけるためなどに使います。追跡を続けてもよいと再考してくれるなら本当に感謝致します。"
907
 
908
+ #: includes/i18n.php:257
909
+ msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
 
 
910
  msgstr "\"オプトアウト\"をクリックすることで、もう %s から %s へのデータの送信は行いません。"
911
 
912
+ #: includes/i18n.php:261
913
  msgid "Screenshots"
914
  msgstr "スクリーンショット"
915
 
916
+ #: includes/i18n.php:262
917
  msgid "Click to view full-size screenshot %d"
918
  msgstr "クリックしてフルサイズのスクリーンショットを見る %d"
919
 
920
+ #: includes/i18n.php:266
921
  msgid "Freemius Debug"
922
  msgstr "Freemius デバッグ"
923
 
924
+ #: includes/i18n.php:267
925
  msgctxt "as turned on"
926
  msgid "On"
927
  msgstr "オン"
928
 
929
+ #: includes/i18n.php:268
930
  msgctxt "as turned off"
931
  msgid "Off"
932
  msgstr "オフ"
933
 
934
+ #: includes/i18n.php:269
935
  msgctxt "as code debugging"
936
  msgid "Debugging"
937
  msgstr "デバッグ"
938
 
939
+ #: includes/i18n.php:270
940
  msgid "Freemius State"
941
  msgstr "Freemius ステータス"
942
 
943
+ #: includes/i18n.php:271
944
  msgctxt "as connection was successful"
945
  msgid "Connected"
946
  msgstr "接続"
947
 
948
+ #: includes/i18n.php:272
949
  msgctxt "as connection blocked"
950
  msgid "Blocked"
951
  msgstr "ブロック"
952
 
953
+ #: includes/i18n.php:273
954
  msgctxt "as application program interface"
955
  msgid "API"
956
  msgstr "API"
957
 
958
+ #: includes/i18n.php:274
959
  msgctxt "as software development kit versions"
960
  msgid "SDK"
961
  msgstr "SDK"
962
 
963
+ #: includes/i18n.php:275
964
  msgctxt "as software development kit versions"
965
  msgid "SDK Versions"
966
  msgstr "SDK バージョン"
967
 
968
+ #: includes/i18n.php:276
969
  msgctxt "as plugin folder path"
970
  msgid "Plugin Path"
971
  msgstr "プラグインのパス"
972
 
973
+ #: includes/i18n.php:277
974
  msgctxt "as sdk path"
975
  msgid "SDK Path"
976
  msgstr "SDK のパス"
977
 
978
+ #: includes/i18n.php:278
979
  msgid "Add Ons of Plugin %s"
980
  msgstr "プラグインのアドオン %s"
981
 
982
+ #: includes/i18n.php:279
983
  msgid "Are you sure you want to delete all Freemius data?"
984
  msgstr "ほんとうに全ての Freemius データを削除しますか?"
985
 
986
+ #: includes/i18n.php:280
987
  msgid "Actions"
988
  msgstr "アクション"
989
 
990
+ #: includes/i18n.php:281
991
  msgid "Delete All Accounts"
992
  msgstr "全てのアカウントを削除"
993
 
994
+ #: includes/i18n.php:282
995
  msgid "Start Fresh"
996
  msgstr "初期化を開始"
997
 
998
+ #: includes/i18n.php:283
999
  msgid "Clear API Cache"
1000
  msgstr "API キャッシュをクリア"
1001
 
1002
+ #: includes/i18n.php:284
1003
  msgid "Sync Data From Server"
1004
  msgstr "サーバーからのデータを同期"
1005
 
1006
+ #: includes/i18n.php:285
1007
  msgid "Scheduled Crons"
1008
  msgstr "スケジュール Cron"
1009
 
1010
+ #: includes/i18n.php:286
1011
+ msgid "Cron Type"
1012
+ msgstr "Cron Type"
1013
+
1014
+ #: includes/i18n.php:287
1015
  msgid "Plugins & Themes Sync"
1016
  msgstr "プラグインとテーマを同期"
1017
 
1018
+ #: includes/i18n.php:288
1019
+ msgid "Licenses"
1020
+ msgstr "Licenses"
1021
+
1022
+ #: includes/i18n.php:289
1023
+ msgid "Debug Log"
1024
+ msgstr "Debug Log"
1025
+
1026
+ #: includes/i18n.php:290
1027
+ msgid "All"
1028
+ msgstr "All"
1029
+
1030
+ #: includes/i18n.php:291
1031
+ msgid "File"
1032
+ msgstr "File"
1033
+
1034
+ #: includes/i18n.php:292
1035
+ msgid "Function"
1036
+ msgstr "Function"
1037
+
1038
+ #: includes/i18n.php:293
1039
+ msgid "Process ID"
1040
+ msgstr "Process ID"
1041
+
1042
+ #: includes/i18n.php:294
1043
+ msgid "Logger"
1044
+ msgstr "Logger"
1045
+
1046
+ #: includes/i18n.php:295
1047
+ msgid "Message"
1048
+ msgstr "Message"
1049
+
1050
+ #: includes/i18n.php:296
1051
+ msgid "Download"
1052
+ msgstr "Download"
1053
+
1054
+ #: includes/i18n.php:297
1055
+ msgid "Filter"
1056
+ msgstr "Filter"
1057
+
1058
+ #: includes/i18n.php:298
1059
+ msgid "Type"
1060
+ msgstr "Type"
1061
+
1062
+ #: includes/i18n.php:299
1063
+ msgid "All Types"
1064
+ msgstr "All Types"
1065
+
1066
+ #: includes/i18n.php:300
1067
+ msgid "All Requests"
1068
+ msgstr "All Requests"
1069
+
1070
+ #: includes/i18n.php:304
1071
  msgctxt "as congratulations"
1072
  msgid "Congrats"
1073
  msgstr "おめでとう"
1074
 
1075
+ #: includes/i18n.php:305
1076
  msgctxt "exclamation"
1077
  msgid "Oops"
1078
  msgstr "おっと"
1079
 
1080
+ #: includes/i18n.php:306
1081
  msgctxt "interjection expressing joy or exuberance"
1082
  msgid "Yee-haw"
1083
  msgstr "ヤッホー"
1084
 
1085
+ #: includes/i18n.php:307
1086
  msgctxt ""
 
 
1087
  msgid "W00t"
1088
  msgstr "やったー"
1089
 
1090
+ #: includes/i18n.php:309
1091
  msgctxt "a positive response"
1092
  msgid "Right on"
1093
  msgstr "そうだ"
1094
 
1095
+ #: includes/i18n.php:310
1096
  msgctxt ""
 
 
1097
  msgid "Hmm"
1098
  msgstr "ふむ"
1099
 
1100
+ #: includes/i18n.php:312
1101
  msgid "O.K"
1102
  msgstr "O.K"
1103
 
1104
+ #: includes/i18n.php:313
1105
  msgctxt "exclamation"
1106
  msgid "Hey"
1107
  msgstr "ヘイ"
1108
 
1109
+ #: includes/i18n.php:314
1110
  msgctxt "advance notice of something that will need attention."
1111
  msgid "Heads up"
1112
  msgstr "警告"
1113
 
1114
+ #: includes/i18n.php:319
1115
  msgid "Seems like you got the latest release."
1116
  msgstr "最新版を取得できました。"
1117
 
1118
+ #: includes/i18n.php:320
1119
  msgid "You are all good!"
1120
  msgstr "すべて完璧です!"
1121
 
1122
+ #: includes/i18n.php:321
1123
+ msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
 
 
1124
  msgstr "メールアドレスのアップデートを完了できませんでした。他のユーザーがすでに同じメールアドレスで登録しているようです。"
1125
 
1126
+ #: includes/i18n.php:322
1127
+ msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
 
 
1128
  msgstr "もし%s にプラグインの所有権を譲りたいなら、所有権を変更ボタンをクリックしてください。"
1129
 
1130
+ #: includes/i18n.php:323
1131
+ msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
 
 
1132
  msgstr "メールアドレスのアップデートが完了しました。まもなく確認メールが届きます。"
1133
 
1134
+ #: includes/i18n.php:324
1135
  msgid "Your name was successfully updated."
1136
  msgstr "名前のアップデートが成功しました。"
1137
 
1138
+ #: includes/i18n.php:325
1139
  msgid "You have successfully updated your %s."
1140
  msgstr "%s のアップデートが成功しました。"
1141
 
1142
+ #: includes/i18n.php:326
1143
  msgid "Please provide your full name."
1144
  msgstr "フルネームを入力してください。"
1145
 
1146
+ #: includes/i18n.php:327
1147
+ msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
 
 
1148
  msgstr "%s に確認メールを送信しました。もし5分以内にそれが届かない場合、迷惑メールボックスを確認してください。"
1149
 
1150
+ #: includes/i18n.php:328
1151
+ msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
 
 
1152
  msgstr "%s のアドオンに関する情報は、外部サーバーから取得されます。"
1153
 
1154
+ #: includes/i18n.php:329
1155
  msgid "No credit card required"
1156
  msgstr "クレジットカードは必要ありません。"
1157
 
1158
+ #: includes/i18n.php:330
1159
  msgid "Premium plugin version was successfully activated."
1160
  msgstr "プレミアムプラグインのバージョンの有効化に成功しました。"
1161
 
1162
+ #: includes/i18n.php:331
1163
  msgid "The upgrade of %s was successfully completed."
1164
  msgstr "%s のアップグレードが完了しました。"
1165
 
1166
+ #: includes/i18n.php:332
1167
  msgid "Your account was successfully activated with the %s plan."
1168
  msgstr "アカウントが %s プランで有効化できました。"
1169
 
1170
+ #: includes/i18n.php:333
1171
  msgid "Download the latest %s version now"
1172
  msgstr "%s の最新版をダウンロードする"
1173
 
1174
+ #: includes/i18n.php:334
1175
  msgid "Please follow these steps to complete the upgrade"
1176
  msgstr "アップグレードを完了するには以下の手順を完了させてください。"
1177
 
1178
+ #: includes/i18n.php:335
1179
  msgid "Download the latest %s version"
1180
  msgstr "最新の %s をダウンロード"
1181
 
1182
+ #: includes/i18n.php:336
1183
  msgid "Download the latest version"
1184
  msgstr "最新版をダウンロード"
1185
 
1186
+ #: includes/i18n.php:337
1187
  msgid "Deactivate the free version"
1188
  msgstr "無料バージョンを無効化"
1189
 
1190
+ #: includes/i18n.php:338
1191
  msgid "Upload and activate the downloaded version"
1192
  msgstr "ダウンロードしたバージョンをアップロードして有効化"
1193
 
1194
+ #: includes/i18n.php:339
1195
  msgid "How to upload and activate?"
1196
  msgstr "アップロードと有効化の方法"
1197
 
1198
+ #: includes/i18n.php:340
1199
  msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
1200
  msgid "%s Add-on was successfully purchased."
1201
  msgstr "%s のアドオンの支払いが完了しました。"
1202
 
1203
+ #: includes/i18n.php:342
1204
  msgid "Your %s Add-on plan was successfully upgraded."
1205
  msgstr "%s のアドオンのプランのアップグレードが完了しました。"
1206
 
1207
+ #: includes/i18n.php:343
1208
  msgid "Your email has been successfully verified - you are AWESOME!"
1209
  msgstr "あなたのメールアドレスの承認が完了しました。すごい!"
1210
 
1211
+ #: includes/i18n.php:344
1212
  msgid "Your plan was successfully upgraded."
1213
  msgstr "プランのアップグレードが成功しました。"
1214
 
1215
+ #: includes/i18n.php:345
1216
  msgid "Your plan was successfully changed to %s."
1217
  msgstr "プランの %s への変更が成功しました。"
1218
 
1219
+ #: includes/i18n.php:346
1220
+ msgid "Your license has expired. You can still continue using the free plugin forever."
 
 
1221
  msgstr "ライセンスの有効期限が切れました。無料バージョンの利用を継続することができます。"
1222
 
1223
+ #: includes/i18n.php:347
1224
+ msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
 
 
1225
  msgstr "ライセンスはキャンセルされました。もしそれが間違いだと思うならサポートに連絡してください。"
1226
 
1227
+ #: includes/i18n.php:348
1228
  msgid "Your trial has been successfully started."
1229
  msgstr "トライアル版の利用を開始しました。"
1230
 
1231
+ #: includes/i18n.php:349
1232
  msgid "Your license was successfully activated."
1233
  msgstr "ライセンスの有効化が成功しました。"
1234
 
1235
+ #: includes/i18n.php:350
1236
  msgid "It looks like your site currently doesn't have an active license."
1237
  msgstr "サイトは有効なライセンスを持っていないようです。"
1238
 
1239
+ #: includes/i18n.php:351
1240
+ msgid "Your license was successfully deactivated, you are back to the %s plan."
 
1241
  msgstr "ライセンスの無効化が完了しました。%s プランに戻りました。"
1242
 
1243
+ #: includes/i18n.php:352
1244
  msgid "It looks like the license deactivation failed."
1245
  msgstr "ライセンスの無効化ができませんでした。"
1246
 
1247
+ #: includes/i18n.php:353
1248
  msgid "It looks like the license could not be activated."
1249
  msgstr "ライセンスの有効化ができませんでした。"
1250
 
1251
+ #: includes/i18n.php:354
1252
  msgid "Error received from the server:"
1253
  msgstr "サーバーからエラーを受信しました。"
1254
 
1255
+ #: includes/i18n.php:355
1256
+ msgid "Your trial has expired. You can still continue using all our free features."
 
1257
  msgstr "トライアルの有効期限が切れました。引き続き無料の機能の利用を続けることができます。"
1258
 
1259
+ #: includes/i18n.php:356
1260
+ msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
 
 
1261
  msgstr "プランのダウングレードが完了しました。%s プランは %s に有効期限が切れます。"
1262
 
1263
+ #: includes/i18n.php:357
1264
+ msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
 
 
1265
  msgstr "プランのダウングレードの際に一時的な問題が発生したようです。数分後に再度操作してください。"
1266
 
1267
+ #: includes/i18n.php:358
1268
+ msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
 
 
1269
  msgstr "すでにトライアルモードではないようなので、キャンセルする必要はありません :)"
1270
 
1271
+ #: includes/i18n.php:359
1272
  msgid "Your %s free trial was successfully cancelled."
1273
  msgstr "%s のフリートライアルはキャンセルされました。"
1274
 
1275
+ #: includes/i18n.php:360
1276
  msgctxt "%s - numeric version number"
1277
  msgid "Version %s was released."
1278
  msgstr "バージョン %s をリリースしました。"
1279
 
1280
+ #: includes/i18n.php:361
1281
  msgid "Please download %s."
1282
  msgstr "%s をダウンロードしてください。"
1283
 
1284
+ #: includes/i18n.php:362
1285
  msgctxt "%s - plan name, as the latest professional version here"
1286
  msgid "the latest %s version here"
1287
  msgstr "最新の %s バージョンはこちらです。"
1288
 
1289
+ #: includes/i18n.php:364
1290
+ msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
 
 
1291
  msgstr "%s はどうですか? 私たちの全ての %s のプレミアム機能をお試しください。"
1292
 
1293
+ #: includes/i18n.php:365
1294
  msgctxt "call to action"
1295
  msgid "Start free trial"
1296
  msgstr "フリートライアルを開始"
1297
 
1298
+ #: includes/i18n.php:366
1299
  msgid "Starting trial"
1300
  msgstr "トライアルを開始"
1301
 
1302
+ #: includes/i18n.php:367
1303
  msgid "Please wait"
1304
  msgstr "お待ちください"
1305
 
1306
+ #: includes/i18n.php:368
1307
+ msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
 
 
1308
  msgstr "トライアルのキャンセルに一時的な問題がありました。数分後に再度お試しください。"
1309
 
1310
+ #: includes/i18n.php:369
1311
  msgid "You already utilized a trial before."
1312
  msgstr "以前すでに試用版を利用しました。"
1313
 
1314
+ #: includes/i18n.php:370
1315
  msgid "You are already running the plugin in a trial mode."
1316
  msgstr "すでにトライアル版のプラグインを利用しています。"
1317
 
1318
+ #: includes/i18n.php:371
1319
  msgid "Plan %s do not exist, therefore, can't start a trial."
1320
  msgstr "%s プランは存在しないため、試用を開始できません。"
1321
 
1322
+ #: includes/i18n.php:372
1323
  msgid "Plan %s does not support a trial period."
1324
  msgstr "%s プランにはトライアル期間はありません。"
1325
 
1326
+ #: includes/i18n.php:373
1327
  msgid "None of the plugin's plans supports a trial period."
1328
  msgstr "トライアル期間をサポートしているプランのプラグインはありません。"
1329
 
1330
+ #: includes/i18n.php:374
1331
+ msgid "Unexpected API error. Please contact the plugin's author with the following error."
 
 
1332
  msgstr "予期しない API のエラー。プラグイン開発者に連絡をとってください。"
1333
 
1334
+ #: includes/i18n.php:375
1335
  msgid "No commitment for %s days - cancel anytime!"
1336
  msgstr "%s 日以内であればいつでもキャンセルできます。"
1337
 
1338
+ #: includes/i18n.php:376
1339
+ 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."
 
 
 
1340
  msgstr "ライセンスは有効期限がきれました。%s の機能を引き続き利用することができます。ただし、アップデートやサポートをうけるにはライセンスをアップデートする必要があります。"
1341
 
1342
+ #: includes/i18n.php:377
1343
  msgid "Couldn't activate %s."
1344
  msgstr "%s を有効化できません。"
1345
 
1346
+ #: includes/i18n.php:378
1347
  msgid "Please contact us with the following message:"
1348
  msgstr "以下のメッセージとともに私たちに連絡をください。"
1349
 
1350
+ #: includes/i18n.php:379
1351
+ 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."
 
 
1352
  msgstr "まだ %s プランのようです。もしアップグレードやプランの変更をしたのなら、こちらで何らかの問題が発生しているようです。申し訳ありません。"
1353
 
1354
+ #: includes/i18n.php:380
1355
  msgid "Please contact us here"
1356
  msgstr "こちらで私たちに連絡をとってください。"
1357
 
1358
+ #: includes/i18n.php:381
1359
+ msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
 
 
1360
  msgstr "アカウントをアップグレードしましたが、ライセンスを同期しようとするとプランが %s のままです。"
1361
 
1362
+ #: includes/i18n.php:384
1363
  msgid "From unknown reason, the API connectivity test failed."
1364
  msgstr "不明のエラーにより、API 接続ができませんでした。"
1365
 
1366
+ #: includes/i18n.php:385
1367
+ 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?"
 
 
1368
  msgstr "それは私たちの一時的な問題のようです。もし許可していただけるなら他の接続テストをしてもよいですか?"
1369
 
1370
+ #: includes/i18n.php:386
1371
+ 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."
1372
+ 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."
 
 
 
1373
 
1374
+ #: includes/i18n.php:387
1375
+ msgid "Disabled method(s):"
1376
+ msgstr "Disabled method(s):"
1377
+
1378
+ #: includes/i18n.php:388
1379
+ msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
1380
  msgstr "不明のエラーにより私たちが使用している CloudFlare のファイヤーウォールが接続を拒否したようです。"
1381
 
1382
+ #: includes/i18n.php:389
1383
  msgctxt "as pluginX requires an access to our API"
1384
  msgid "%s requires an access to our API."
1385
  msgstr "%s は、私たちの API への接続が必要です。"
1386
 
1387
+ #: includes/i18n.php:391
1388
+ msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
 
 
1389
  msgstr "サーバーは Squid ACL(Access control lists) を使用しているらしく、それが接続をブロックしています。"
1390
 
1391
+ #: includes/i18n.php:392
1392
  msgid "I don't know what is Squid or ACL, help me!"
1393
  msgstr "Squid ACL について知りません。助けてください!"
1394
 
1395
+ #: includes/i18n.php393, includes/i18n.php:397
1396
+ 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."
 
 
1397
  msgstr "ホスティング会社に連絡して問題を解決してください。 更新が完了したら、 %s へのフォローアップメールが届きます。"
1398
 
1399
+ #: includes/i18n.php:394
1400
  msgid "I'm a system administrator"
1401
  msgstr "私はシステム管理者です"
1402
 
1403
+ #: includes/i18n.php:395
1404
+ msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again."
1405
+ msgstr "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again."
 
 
1406
 
1407
+ #: includes/i18n.php:396
1408
  msgid "I don't know what is cURL or how to install it, help me!"
1409
  msgstr "cURL がなにか、そのインストール方法を知りません。助けてください。"
1410
 
1411
+ #: includes/i18n.php:398
1412
+ 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."
1413
+ 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."
 
 
 
1414
 
1415
+ #: includes/i18n.php:399
1416
+ 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."
 
 
1417
  msgstr "それは私たちの側の問題だと確信しています。もし機会をくれるなら私たちはそれを一刻でも早く修正します。"
1418
 
1419
+ #: includes/i18n.php:400
1420
+ msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
 
1421
  msgstr "ご迷惑をおかけしてすいません。もし機会をいただけたらお手伝いをします。"
1422
 
1423
+ #: includes/i18n.php:401
1424
  msgid "Yes - I'm giving you a chance to fix it"
1425
  msgstr "はい、修正をお願いします。"
1426
 
1427
+ #: includes/i18n.php:402
1428
+ 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."
 
 
1429
  msgstr "私たちは、少しでも早くサーバーをホワイトリストに登録して問題を修正します。アップデートを行ったら、%s あてに報告を送信します。"
1430
 
1431
+ #: includes/i18n.php:403
1432
  msgid "Let's try your previous version"
1433
  msgstr "以前のバージョンでお試しください。"
1434
 
1435
+ #: includes/i18n.php:404
1436
  msgid "Uninstall this version and install the previous one."
1437
  msgstr "このバージョンをアンインストールして、以前のバージョンをインストールする。"
1438
 
1439
+ #: includes/i18n.php:405
1440
  msgid "That's exhausting, please deactivate"
1441
  msgstr "それは、使用できません。無効化してください。"
1442
 
1443
+ #: includes/i18n.php:406
1444
+ msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
 
 
1445
  msgstr "ご迷惑をおかけして心からお詫び申し上げます。将来ふたたびお会いできることを楽しみにしています。"
1446
 
1447
+ #: includes/i18n.php:407
1448
+ 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."
 
 
 
1449
  msgstr "修正するチャンスをいただきありがとうございます! テクニカルスタッフにメッセージが送信されました。 %s への更新が行われるとすぐにあなたに連絡します。 あなたの忍耐に感謝します。"
1450
 
1451
+ #: includes/i18n.php:408
1452
  msgctxt "%1s - plugin title, %2s - API domain"
1453
+ msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
 
 
1454
  msgstr "サーバーは %1s の同期に不可欠な Freemius の API へのアクセスをブロックしています。 ホワイトリストに %2s を追加していただけるようあなたのホスティング会社に連絡してください。"
1455
 
1456
+ #: includes/i18n.php:410
1457
+ msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
 
 
1458
  msgstr "認証パラメータの1つが間違っているようです。 公開鍵、秘密鍵、ユーザーIDを更新して、もう一度お試しください。"
1459
 
1460
+ #: includes/i18n.php:413
1461
+ 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."
 
 
 
 
1462
  msgstr "メールボックスを確認してください。所有権の変更を確認するには、%s でメールを受け取る必要があります。 セキュリティ上の理由から、次の15分以内に変更を確認する必要があります。 電子メールが見つからない場合は、迷惑メールフォルダを確認してください。"
1463
 
1464
+ #: includes/i18n.php:414
1465
+ msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
 
 
1466
  msgstr "所有権の変更を確認していただきありがとうございます。 %s に承認メールが送信されました。"
1467
 
1468
+ #: includes/i18n.php:415
1469
  msgid "%s is the new owner of the account."
1470
  msgstr "%s は新しいオーナーです。"
1471
 
1472
+ #: includes/i18n.php:417
1473
  msgctxt "addonX cannot run without pluginY"
1474
  msgid "%s cannot run without %s."
1475
  msgstr "%s は、%s が無いと実行することができません。"
1476
 
1477
+ #: includes/i18n.php:419
1478
  msgctxt "addonX cannot run..."
1479
  msgid "%s cannot run without the plugin."
1480
  msgstr "%s は、プラグインが無いと実行することができません。"
1481
 
1482
+ #: includes/i18n.php:420
1483
  msgctxt "pluginX activation was successfully..."
1484
  msgid "%s activation was successfully completed."
1485
  msgstr "%s の有効化が成功しました。"
1486
 
1487
+ #: includes/i18n.php:422
1488
  msgctxt "Plugin installer section title"
1489
  msgid "Features & Pricing"
1490
  msgstr "機能 & 料金"
1491
 
1492
+ #: includes/i18n.php:423
1493
  msgid "Add-on must be deployed to WordPress.org or Freemius."
1494
  msgstr "アドオンが WordPress.org か Freemius にデプロイされている必要があります。"
1495
 
1496
+ #: includes/i18n.php:424
1497
  msgid "Paid add-on must be deployed to Freemius."
1498
  msgstr "有料アドオンは Freemius にデプロイされている必要があります。"
1499
 
1500
+ #: includes/i18n.php:428
1501
+ msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
 
 
1502
  msgstr "%s はプレミアムのみのアドオンです。そのプラグインを有効化する前にライセンスを購入する必要があります。"
1503
 
1504
+ #: includes/i18n.php:429
1505
+ 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."
 
 
 
1506
  msgstr "%s の無料試用が正常にキャンセルされました。 アドオンはプレミアムなので、自動的に無効化されました。 将来使用したい場合は、ライセンスを購入する必要があります。"
1507
 
1508
+ #: includes/i18n.php:434
1509
  msgctxt "as every month"
1510
  msgid "Monthly"
1511
  msgstr "月"
1512
 
1513
+ #: includes/i18n.php:435
1514
  msgctxt "as monthly period"
1515
  msgid "mo"
1516
  msgstr "月"
1517
 
1518
+ #: includes/i18n.php:436
1519
  msgctxt "as once a year"
1520
  msgid "Annual"
1521
  msgstr "年次"
1522
 
1523
+ #: includes/i18n.php:437
1524
  msgctxt "as once a year"
1525
  msgid "Annually"
1526
  msgstr "毎年"
1527
 
1528
+ #: includes/i18n.php:438
1529
  msgctxt "as once a year"
1530
  msgid "Once"
1531
  msgstr "一度"
1532
 
1533
+ #: includes/i18n.php:439
1534
  msgctxt "as annual period"
1535
  msgid "year"
1536
  msgstr "年"
1537
 
1538
+ #: includes/i18n.php:440
1539
  msgid "Lifetime"
1540
  msgstr "ライフタイム"
1541
 
1542
+ #: includes/i18n.php:441
1543
  msgctxt "e.g. the best product"
1544
  msgid "Best"
1545
  msgstr "ベスト"
1546
 
1547
+ #: includes/i18n.php:442
1548
  msgctxt "e.g. billed monthly"
1549
  msgid "Billed %s"
1550
  msgstr "%s への請求"
1551
 
1552
+ #: includes/i18n.php:443
1553
  msgctxt "as a discount of $5 or 10%"
1554
  msgid "Save %s"
1555
  msgstr "%s を保存"
1556
 
1557
+ #: includes/i18n.php:445
1558
  msgid "View details"
1559
  msgstr "詳細を表示"
1560
 
1561
+ #: includes/i18n.php:449
1562
  msgctxt "button label"
1563
  msgid "Approve & Start Trial"
1564
  msgstr "気に入ったのでトライアルを開始"
1565
 
1566
+ #: includes/i18n.php:451
1567
+ msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
 
 
1568
  msgstr "%2$s プランの%1$s日間のフリートライアルを開始するまであとワンクリックです。"
1569
 
1570
+ #: includes/i18n.php:453
1571
+ 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."
 
 
 
 
1572
  msgstr "WordPress.org ガイドラインの遵守のため、ユーザーとセンシティブでないサイト情報をオプトインすること、バージョンの更新確認のために %s へとプラグインが一時的にデータを送信することの許可、トライアルを有効にすることの3つについて、トライアルの開始前にお尋ねします。"
1573
 
1574
+ #: includes/i18n.php:459
1575
  msgid "Business name"
1576
  msgstr "商号"
1577
 
1578
+ #: includes/i18n.php:460
1579
  msgid "Tax / VAT ID"
1580
  msgstr "税金 / VAT ID"
1581
 
1582
+ #: includes/i18n.php:461
1583
  msgid "Address Line %d"
1584
  msgstr "住所欄 %d"
1585
 
1586
+ #: includes/i18n.php:462
1587
  msgid "Country"
1588
  msgstr "国"
1589
 
1590
+ #: includes/i18n.php:463
1591
  msgid "Select Country"
1592
  msgstr "国を選択"
1593
 
1594
+ #: includes/i18n.php:464
1595
  msgid "City"
1596
  msgstr "市"
1597
 
1598
+ #: includes/i18n.php:465
1599
  msgid "Town"
1600
  msgstr "町"
1601
 
1602
+ #: includes/i18n.php:466
1603
  msgid "State"
1604
  msgstr "州"
1605
 
1606
+ #: includes/i18n.php:467
1607
  msgid "Province"
1608
  msgstr "県・州・省"
1609
 
1610
+ #: includes/i18n.php:468
1611
  msgid "ZIP / Postal Code"
1612
  msgstr "ZIP / 郵便番号"
1613
+
1614
+ #: includes/i18n.php:473
1615
+ msgid "Installing plugin: %s"
1616
+ msgstr "Installing plugin: %s"
1617
+
1618
+ #: includes/i18n.php:474
1619
+ msgid "Automatic Installation"
1620
+ msgstr "Automatic Installation"
1621
+
1622
+ #: includes/i18n.php:476
1623
+ msgid "%s sec"
1624
+ msgstr "%s sec"
1625
+
1626
+ #: includes/i18n.php:477
1627
+ 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."
1628
+ 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."
1629
+
1630
+ #: includes/i18n.php:478
1631
+ 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."
1632
+ 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."
1633
+
1634
+ #: includes/i18n.php:479
1635
+ msgid "Cancel Installation"
1636
+ msgstr "Cancel Installation"
1637
+
1638
+ #: includes/i18n.php:480
1639
+ msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
1640
+ msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
1641
+
1642
+ #: includes/i18n.php:481
1643
+ msgid "Invalid module ID."
1644
+ msgstr "Invalid module ID."
1645
+
1646
+ #: includes/i18n.php:482
1647
+ msgid "Auto installation only works for opted-in users."
1648
+ msgstr "Auto installation only works for opted-in users."
1649
+
1650
+ #: includes/i18n.php:483
1651
+ msgid "Premium version already active."
1652
+ msgstr "Premium version already active."
1653
+
1654
+ #: includes/i18n.php:484
1655
+ msgid "Premium add-on version already installed."
1656
+ msgstr "Premium add-on version already installed."
1657
+
1658
+ #: includes/i18n.php:485
1659
+ msgid "You do not have a valid license to access the premium version."
1660
+ msgstr "You do not have a valid license to access the premium version."
1661
+
1662
+ #: includes/i18n.php:486
1663
+ msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
1664
+ msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version."
1665
+
1666
+ #: includes/i18n.php:501
1667
+ msgctxt "Plugin installer section title"
1668
+ msgid "Description"
1669
+ msgstr "Description"
1670
+
1671
+ #: includes/i18n.php:502
1672
+ msgctxt "Plugin installer section title"
1673
+ msgid "Installation"
1674
+ msgstr "Installation"
1675
+
1676
+ #: includes/i18n.php:503
1677
+ msgctxt "Plugin installer section title"
1678
+ msgid "FAQ"
1679
+ msgstr "FAQ"
1680
+
1681
+ #: includes/i18n.php:504
1682
+ msgctxt "Plugin installer section title"
1683
+ msgid "Changelog"
1684
+ msgstr "Changelog"
1685
+
1686
+ #: includes/i18n.php:505
1687
+ msgctxt "Plugin installer section title"
1688
+ msgid "Reviews"
1689
+ msgstr "Reviews"
1690
+
1691
+ #: includes/i18n.php:506
1692
+ msgctxt "Plugin installer section title"
1693
+ msgid "Other Notes"
1694
+ msgstr "Other Notes"
1695
+
1696
+ #: includes/i18n.php:508
1697
+ msgid "%s star"
1698
+ msgstr "%s star"
1699
+
1700
+ #: includes/i18n.php:510
1701
+ msgid "%s stars"
1702
+ msgstr "%s stars"
1703
+
1704
+ #: includes/i18n.php:512
1705
+ msgid "%s rating"
1706
+ msgstr "%s rating"
1707
+
1708
+ #: includes/i18n.php:514
1709
+ msgid "%s ratings"
1710
+ msgstr "%s ratings"
1711
+
1712
+ #: includes/i18n.php:516
1713
+ msgid "%s time"
1714
+ msgstr "%s time"
1715
+
1716
+ #: includes/i18n.php:518
1717
+ msgid "%s times"
1718
+ msgstr "%s times"
1719
+
1720
+ #: includes/i18n.php:520
1721
+ msgid "Click to see reviews that provided a rating of %s"
1722
+ msgstr "Click to see reviews that provided a rating of %s"
1723
+
1724
+ #: includes/i18n.php:521
1725
+ msgid "Last Updated"
1726
+ msgstr "Last Updated"
1727
+
1728
+ #: includes/i18n.php:522
1729
+ msgid "Requires WordPress Version:"
1730
+ msgstr "Requires WordPress Version:"
1731
+
1732
+ #: includes/i18n.php:523
1733
+ msgctxt "as the plugin author"
1734
+ msgid "Author:"
1735
+ msgstr "Author:"
1736
+
1737
+ #: includes/i18n.php:524
1738
+ msgid "Compatible up to:"
1739
+ msgstr "Compatible up to:"
1740
+
1741
+ #: includes/i18n.php:525
1742
+ msgid "Downloaded:"
1743
+ msgstr "Downloaded:"
1744
+
1745
+ #: includes/i18n.php:526
1746
+ msgid "WordPress.org Plugin Page"
1747
+ msgstr "WordPress.org Plugin Page"
1748
+
1749
+ #: includes/i18n.php:527
1750
+ msgid "Plugin Homepage"
1751
+ msgstr "Plugin Homepage"
1752
+
1753
+ #: includes/i18n.php:528
1754
+ msgid "Donate to this plugin"
1755
+ msgstr "Donate to this plugin"
1756
+
1757
+ #: includes/i18n.php:529
1758
+ msgid "Average Rating"
1759
+ msgstr "Average Rating"
1760
+
1761
+ #: includes/i18n.php:530
1762
+ msgid "based on %s"
1763
+ msgstr "based on %s"
1764
+
1765
+ #: includes/i18n.php:531
1766
+ msgid "Warning:"
1767
+ msgstr "Warning:"
1768
+
1769
+ #: includes/i18n.php:532
1770
+ msgid "Contributors"
1771
+ msgstr "Contributors"
1772
+
1773
+ #: includes/i18n.php:533
1774
+ msgid "Plugin Install"
1775
+ msgstr "Plugin Install"
1776
+
1777
+ #: includes/i18n.php:534
1778
+ msgid "This plugin has not been tested with your current version of WordPress."
1779
+ msgstr "This plugin has not been tested with your current version of WordPress."
1780
+
1781
+ #: includes/i18n.php:535
1782
+ msgid "This plugin has not been marked as compatible with your version of WordPress."
1783
+ msgstr "This plugin has not been marked as compatible with your version of WordPress."
1784
+
1785
+ #: includes/i18n.php:536
1786
+ msgid "Newer Version (%s) Installed"
1787
+ msgstr "Newer Version (%s) Installed"
1788
+
1789
+ #: includes/i18n.php:537
1790
+ msgid "Latest Version Installed"
1791
+ msgstr "Latest Version Installed"
freemius/languages/freemius.pot CHANGED
@@ -77,1648 +77,1709 @@ msgid "Downgrade"
77
  msgstr ""
78
 
79
  #: includes/i18n.php:51
80
- msgid "Cancel Trial"
 
81
  msgstr ""
82
 
83
  #: includes/i18n.php:52
84
- msgid "Free Trial"
85
  msgstr ""
86
 
87
  #: includes/i18n.php:53
88
- msgid "Start my free %s"
89
  msgstr ""
90
 
91
  #: includes/i18n.php:54
92
- msgid "No commitment for %s - cancel anytime"
93
  msgstr ""
94
 
95
  #: includes/i18n.php:55
96
- msgid "After your free %s, pay as little as %s"
97
  msgstr ""
98
 
99
  #: includes/i18n.php:56
100
- msgid "Details"
101
  msgstr ""
102
 
103
  #: includes/i18n.php:57
104
- msgid "Account Details"
105
  msgstr ""
106
 
107
  #: includes/i18n.php:58
 
 
 
 
108
  msgctxt "verb"
109
  msgid "Delete"
110
  msgstr ""
111
 
112
- #: includes/i18n.php:59
113
  msgctxt "verb"
114
  msgid "Show"
115
  msgstr ""
116
 
117
- #: includes/i18n.php:60
118
  msgctxt "verb"
119
  msgid "Hide"
120
  msgstr ""
121
 
122
- #: includes/i18n.php:61
123
  msgctxt "verb"
124
  msgid "Edit"
125
  msgstr ""
126
 
127
- #: includes/i18n.php:62
128
  msgctxt "verb"
129
  msgid "Update"
130
  msgstr ""
131
 
132
- #: includes/i18n.php:63
133
  msgid "Date"
134
  msgstr ""
135
 
136
- #: includes/i18n.php:64
137
  msgid "Amount"
138
  msgstr ""
139
 
140
- #: includes/i18n.php:65
141
  msgid "Invoice"
142
  msgstr ""
143
 
144
- #: includes/i18n.php:66
145
  msgid "Billing"
146
  msgstr ""
147
 
148
- #: includes/i18n.php:67
149
  msgid "Payments"
150
  msgstr ""
151
 
152
- #: includes/i18n.php:68
153
  msgid "Delete Account"
154
  msgstr ""
155
 
156
- #: includes/i18n.php:69
157
  msgctxt "as close a window"
158
  msgid "Dismiss"
159
  msgstr ""
160
 
161
- #: includes/i18n.php:70
162
  msgctxt "as product pricing plan"
163
  msgid "Plan"
164
  msgstr ""
165
 
166
- #: includes/i18n.php:71
167
  msgid "Change Plan"
168
  msgstr ""
169
 
170
- #: includes/i18n.php:72
171
  msgctxt "as download professional version"
172
  msgid "Download %s Version"
173
  msgstr ""
174
 
175
- #: includes/i18n.php:73
176
  msgctxt "as download professional version now"
177
  msgid "Download %s version now"
178
  msgstr ""
179
 
180
- #: includes/i18n.php:74
181
  msgctxt "as download latest version"
182
  msgid "Download Latest"
183
  msgstr ""
184
 
185
- #: includes/i18n.php:75
186
  msgctxt "E.g. you have a professional license."
187
  msgid "You have a %s license."
188
  msgstr ""
189
 
190
- #: includes/i18n.php:76
191
  msgid "New"
192
  msgstr ""
193
 
194
- #: includes/i18n.php:77
195
  msgid "Free"
196
  msgstr ""
197
 
198
- #: includes/i18n.php:78
199
  msgctxt "as trial plan"
200
  msgid "Trial"
201
  msgstr ""
202
 
203
- #: includes/i18n.php:79
204
  msgctxt "as starting a trial plan"
205
  msgid "Start Trial"
206
  msgstr ""
207
 
208
- #: includes/i18n.php:80
209
  msgctxt "verb"
210
  msgid "Purchase"
211
  msgstr ""
212
 
213
- #: includes/i18n.php:81
214
  msgid "Purchase License"
215
  msgstr ""
216
 
217
- #: includes/i18n.php:82
218
  msgctxt "verb"
219
  msgid "Buy"
220
  msgstr ""
221
 
222
- #: includes/i18n.php:83
223
  msgid "Buy License"
224
  msgstr ""
225
 
226
- #: includes/i18n.php:84
227
  msgid "Single Site License"
228
  msgstr ""
229
 
230
- #: includes/i18n.php:85
231
  msgid "Unlimited Licenses"
232
  msgstr ""
233
 
234
- #: includes/i18n.php:86
235
  msgid "Up to %s Sites"
236
  msgstr ""
237
 
238
- #: includes/i18n.php:87
239
  msgid "%sRenew your license now%s to access version %s features and support."
240
  msgstr ""
241
 
242
- #: includes/i18n.php:88
243
  msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
244
  msgstr ""
245
 
246
- #: includes/i18n.php:89
247
  msgctxt "e.g. Professional Plan"
248
  msgid "%s Plan"
249
  msgstr ""
250
 
251
- #: includes/i18n.php:90
252
  msgid "You are just one step away - %s"
253
  msgstr ""
254
 
255
- #: includes/i18n.php:91
256
  msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
257
  msgid "Complete \"%s\" Activation Now"
258
  msgstr ""
259
 
260
- #: includes/i18n.php:93
261
  msgid "We made a few tweaks to the plugin, %s"
262
  msgstr ""
263
 
264
- #: includes/i18n.php:94
265
  msgid "Opt-in to make \"%s\" Better!"
266
  msgstr ""
267
 
268
- #: includes/i18n.php:95
269
  msgid "Error"
270
  msgstr ""
271
 
272
- #: includes/i18n.php:96
273
  msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
274
  msgstr ""
275
 
276
- #: includes/i18n.php:99
277
  msgctxt "as expiration date"
278
  msgid "Expiration"
279
  msgstr ""
280
 
281
- #: includes/i18n.php:100
282
  msgctxt "as software license"
283
  msgid "License"
284
  msgstr ""
285
 
286
- #: includes/i18n.php:101
287
  msgid "not verified"
288
  msgstr ""
289
 
290
- #: includes/i18n.php:102
291
  msgid "Verify Email"
292
  msgstr ""
293
 
294
- #: includes/i18n.php:103
295
  msgctxt "e.g. expires in 2 months"
296
  msgid "Expires in %s"
297
  msgstr ""
298
 
299
- #: includes/i18n.php:104
300
  msgctxt "e.g. auto renews in 2 months"
301
  msgid "Auto renews in %s"
302
  msgstr ""
303
 
304
- #: includes/i18n.php:105
305
  msgid "No expiration"
306
  msgstr ""
307
 
308
- #: includes/i18n.php:106
309
  msgid "Expired"
310
  msgstr ""
311
 
312
- #: includes/i18n.php:107
313
  msgid "Cancelled"
314
  msgstr ""
315
 
316
- #: includes/i18n.php:108
317
  msgctxt "e.g. In 2 hours"
318
  msgid "In %s"
319
  msgstr ""
320
 
321
- #: includes/i18n.php:109
322
  msgctxt "e.g. 2 min ago"
323
  msgid "%s ago"
324
  msgstr ""
325
 
326
- #: includes/i18n.php:111
327
  msgid "%s or higher"
328
  msgstr ""
329
 
330
- #: includes/i18n.php:112
331
  msgctxt "as plugin version"
332
  msgid "Version"
333
  msgstr ""
334
 
335
- #: includes/i18n.php:113
336
  msgid "Name"
337
  msgstr ""
338
 
339
- #: includes/i18n.php:114
340
  msgid "Email"
341
  msgstr ""
342
 
343
- #: includes/i18n.php:115
344
  msgid "Email address"
345
  msgstr ""
346
 
347
- #: includes/i18n.php:116
348
  msgid "Verified"
349
  msgstr ""
350
 
351
- #: includes/i18n.php:117
352
  msgid "Module"
353
  msgstr ""
354
 
355
- #: includes/i18n.php:118
356
  msgid "Module Type"
357
  msgstr ""
358
 
359
- #: includes/i18n.php:119
360
  msgid "Plugin"
361
  msgstr ""
362
 
363
- #: includes/i18n.php:120
364
  msgid "Plugins"
365
  msgstr ""
366
 
367
- #: includes/i18n.php:121
368
  msgid "Theme"
369
  msgstr ""
370
 
371
- #: includes/i18n.php:122
372
  msgid "Themes"
373
  msgstr ""
374
 
375
- #: includes/i18n.php:123
376
  msgctxt "as file/folder path"
377
  msgid "Path"
378
  msgstr ""
379
 
380
- #: includes/i18n.php:124
381
  msgid "Title"
382
  msgstr ""
383
 
384
- #: includes/i18n.php:125
385
  msgid "Free version"
386
  msgstr ""
387
 
388
- #: includes/i18n.php:126
389
  msgid "Premium version"
390
  msgstr ""
391
 
392
- #: includes/i18n.php:127
393
  msgctxt "as WP plugin slug"
394
  msgid "Slug"
395
  msgstr ""
396
 
397
- #: includes/i18n.php:128
398
  msgid "ID"
399
  msgstr ""
400
 
401
- #: includes/i18n.php:129
402
  msgid "Users"
403
  msgstr ""
404
 
405
- #: includes/i18n.php:130
406
  msgid "Plugin Installs"
407
  msgstr ""
408
 
409
- #: includes/i18n.php:131
410
  msgid "%s Installs"
411
  msgstr ""
412
 
413
- #: includes/i18n.php:132
414
  msgctxt "like websites"
415
  msgid "Sites"
416
  msgstr ""
417
 
418
- #: includes/i18n.php:133
419
  msgid "User ID"
420
  msgstr ""
421
 
422
- #: includes/i18n.php:134
423
  msgid "Site ID"
424
  msgstr ""
425
 
426
- #: includes/i18n.php:135
427
  msgid "Public Key"
428
  msgstr ""
429
 
430
- #: includes/i18n.php:136
431
  msgid "Secret Key"
432
  msgstr ""
433
 
434
- #: includes/i18n.php:137
435
  msgctxt "as secret encryption key missing"
436
  msgid "No Secret"
437
  msgstr ""
438
 
439
- #: includes/i18n.php:138
440
  msgid "No ID"
441
  msgstr ""
442
 
443
- #: includes/i18n.php:139
444
  msgctxt "as synchronize license"
445
  msgid "Sync License"
446
  msgstr ""
447
 
448
- #: includes/i18n.php:140
449
  msgctxt "as synchronize"
450
  msgid "Sync"
451
  msgstr ""
452
 
453
- #: includes/i18n.php:141
454
  msgid "Activate License"
455
  msgstr ""
456
 
457
- #: includes/i18n.php:142
458
  msgid "Activate Free Version"
459
  msgstr ""
460
 
461
- #: includes/i18n.php:143
462
  msgid "Please enter the license key that you received in the email right after the purchase:"
463
  msgstr ""
464
 
465
- #: includes/i18n.php:144
466
  msgid "Activating license..."
467
  msgstr ""
468
 
469
- #: includes/i18n.php:145
470
  msgid "Change License"
471
  msgstr ""
472
 
473
- #: includes/i18n.php:146
474
  msgid "Update License"
475
  msgstr ""
476
 
477
- #: includes/i18n.php:147
478
  msgid "Deactivate License"
479
  msgstr ""
480
 
481
- #: includes/i18n.php:148
482
  msgid "Activate"
483
  msgstr ""
484
 
485
- #: includes/i18n.php:149
486
  msgid "Deactivate"
487
  msgstr ""
488
 
489
- #: includes/i18n.php:150
490
  msgid "Skip & Deactivate"
491
  msgstr ""
492
 
493
- #: includes/i18n.php:151
494
  msgid "Skip & %s"
495
  msgstr ""
496
 
497
- #: includes/i18n.php:152
498
  msgid "No - just deactivate"
499
  msgstr ""
500
 
501
- #: includes/i18n.php:153
502
  msgid "Yes - do your thing"
503
  msgstr ""
504
 
505
- #: includes/i18n.php:154
506
  msgctxt "active mode"
507
  msgid "Active"
508
  msgstr ""
509
 
510
- #: includes/i18n.php:155
511
  msgctxt "is active mode?"
512
  msgid "Is Active"
513
  msgstr ""
514
 
515
- #: includes/i18n.php:156
516
  msgid "Install Now"
517
  msgstr ""
518
 
519
- #: includes/i18n.php:157
520
  msgid "Install Update Now"
521
  msgstr ""
522
 
523
- #: includes/i18n.php:158
524
  msgid "More information about %s"
525
  msgstr ""
526
 
527
- #: includes/i18n.php:159
528
  msgid "Localhost"
529
  msgstr ""
530
 
531
- #: includes/i18n.php:160
532
  msgctxt "as activate Professional plan"
533
  msgid "Activate %s Plan"
534
  msgstr ""
535
 
536
- #: includes/i18n.php:161
537
  msgctxt "as 5 licenses left"
538
  msgid "%s left"
539
  msgstr ""
540
 
541
- #: includes/i18n.php:162
542
  msgid "Last license"
543
  msgstr ""
544
 
545
- #: includes/i18n.php:163
546
  msgid "What is your %s?"
547
  msgstr ""
548
 
549
- #: includes/i18n.php:164
550
  msgid "Activate this add-on"
551
  msgstr ""
552
 
553
- #: includes/i18n.php:165
554
  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?"
555
  msgstr ""
556
 
557
- #: includes/i18n.php:166
558
  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?"
559
  msgstr ""
560
 
561
- #: includes/i18n.php:167
562
  msgid "Deletion is not temporary. Only delete if you no longer want to use thi
77
  msgstr ""
78
 
79
  #: includes/i18n.php:51
80
+ msgctxt "verb"
81
+ msgid "Cancel Subscription"
82
  msgstr ""
83
 
84
  #: includes/i18n.php:52
85
+ msgid "Cancel Trial"
86
  msgstr ""
87
 
88
  #: includes/i18n.php:53
89
+ msgid "Free Trial"
90
  msgstr ""
91
 
92
  #: includes/i18n.php:54
93
+ msgid "Start my free %s"
94
  msgstr ""
95
 
96
  #: includes/i18n.php:55
97
+ msgid "No commitment for %s - cancel anytime"
98
  msgstr ""
99
 
100
  #: includes/i18n.php:56
101
+ msgid "After your free %s, pay as little as %s"
102
  msgstr ""
103
 
104
  #: includes/i18n.php:57
105
+ msgid "Details"
106
  msgstr ""
107
 
108
  #: includes/i18n.php:58
109
+ msgid "Account Details"
110
+ msgstr ""
111
+
112
+ #: includes/i18n.php:59
113
  msgctxt "verb"
114
  msgid "Delete"
115
  msgstr ""
116
 
117
+ #: includes/i18n.php:60
118
  msgctxt "verb"
119
  msgid "Show"
120
  msgstr ""
121
 
122
+ #: includes/i18n.php:61
123
  msgctxt "verb"
124
  msgid "Hide"
125
  msgstr ""
126
 
127
+ #: includes/i18n.php:62
128
  msgctxt "verb"
129
  msgid "Edit"
130
  msgstr ""
131
 
132
+ #: includes/i18n.php:63
133
  msgctxt "verb"
134
  msgid "Update"
135
  msgstr ""
136
 
137
+ #: includes/i18n.php:64
138
  msgid "Date"
139
  msgstr ""
140
 
141
+ #: includes/i18n.php:65
142
  msgid "Amount"
143
  msgstr ""
144
 
145
+ #: includes/i18n.php:66
146
  msgid "Invoice"
147
  msgstr ""
148
 
149
+ #: includes/i18n.php:67
150
  msgid "Billing"
151
  msgstr ""
152
 
153
+ #: includes/i18n.php:68
154
  msgid "Payments"
155
  msgstr ""
156
 
157
+ #: includes/i18n.php:69
158
  msgid "Delete Account"
159
  msgstr ""
160
 
161
+ #: includes/i18n.php:70
162
  msgctxt "as close a window"
163
  msgid "Dismiss"
164
  msgstr ""
165
 
166
+ #: includes/i18n.php:71
167
  msgctxt "as product pricing plan"
168
  msgid "Plan"
169
  msgstr ""
170
 
171
+ #: includes/i18n.php:72
172
  msgid "Change Plan"
173
  msgstr ""
174
 
175
+ #: includes/i18n.php:73
176
  msgctxt "as download professional version"
177
  msgid "Download %s Version"
178
  msgstr ""
179
 
180
+ #: includes/i18n.php:74
181
  msgctxt "as download professional version now"
182
  msgid "Download %s version now"
183
  msgstr ""
184
 
185
+ #: includes/i18n.php:75
186
  msgctxt "as download latest version"
187
  msgid "Download Latest"
188
  msgstr ""
189
 
190
+ #: includes/i18n.php:76
191
  msgctxt "E.g. you have a professional license."
192
  msgid "You have a %s license."
193
  msgstr ""
194
 
195
+ #: includes/i18n.php:77
196
  msgid "New"
197
  msgstr ""
198
 
199
+ #: includes/i18n.php:78
200
  msgid "Free"
201
  msgstr ""
202
 
203
+ #: includes/i18n.php:79
204
  msgctxt "as trial plan"
205
  msgid "Trial"
206
  msgstr ""
207
 
208
+ #: includes/i18n.php:80
209
  msgctxt "as starting a trial plan"
210
  msgid "Start Trial"
211
  msgstr ""
212
 
213
+ #: includes/i18n.php:81
214
  msgctxt "verb"
215
  msgid "Purchase"
216
  msgstr ""
217
 
218
+ #: includes/i18n.php:82
219
  msgid "Purchase License"
220
  msgstr ""
221
 
222
+ #: includes/i18n.php:83
223
  msgctxt "verb"
224
  msgid "Buy"
225
  msgstr ""
226
 
227
+ #: includes/i18n.php:84
228
  msgid "Buy License"
229
  msgstr ""
230
 
231
+ #: includes/i18n.php:85
232
  msgid "Single Site License"
233
  msgstr ""
234
 
235
+ #: includes/i18n.php:86
236
  msgid "Unlimited Licenses"
237
  msgstr ""
238
 
239
+ #: includes/i18n.php:87
240
  msgid "Up to %s Sites"
241
  msgstr ""
242
 
243
+ #: includes/i18n.php:88
244
  msgid "%sRenew your license now%s to access version %s features and support."
245
  msgstr ""
246
 
247
+ #: includes/i18n.php:89
248
  msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
249
  msgstr ""
250
 
251
+ #: includes/i18n.php:90
252
  msgctxt "e.g. Professional Plan"
253
  msgid "%s Plan"
254
  msgstr ""
255
 
256
+ #: includes/i18n.php:91
257
  msgid "You are just one step away - %s"
258
  msgstr ""
259
 
260
+ #: includes/i18n.php:92
261
  msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
262
  msgid "Complete \"%s\" Activation Now"
263
  msgstr ""
264
 
265
+ #: includes/i18n.php:94
266
  msgid "We made a few tweaks to the plugin, %s"
267
  msgstr ""
268
 
269
+ #: includes/i18n.php:95
270
  msgid "Opt-in to make \"%s\" Better!"
271
  msgstr ""
272
 
273
+ #: includes/i18n.php:96
274
  msgid "Error"
275
  msgstr ""
276
 
277
+ #: includes/i18n.php:97
278
  msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
279
  msgstr ""
280
 
281
+ #: includes/i18n.php:100
282
  msgctxt "as expiration date"
283
  msgid "Expiration"
284
  msgstr ""
285
 
286
+ #: includes/i18n.php:101
287
  msgctxt "as software license"
288
  msgid "License"
289
  msgstr ""
290
 
291
+ #: includes/i18n.php:102
292
  msgid "not verified"
293
  msgstr ""
294
 
295
+ #: includes/i18n.php:103
296
  msgid "Verify Email"
297
  msgstr ""
298
 
299
+ #: includes/i18n.php:104
300
  msgctxt "e.g. expires in 2 months"
301
  msgid "Expires in %s"
302
  msgstr ""
303
 
304
+ #: includes/i18n.php:105
305
  msgctxt "e.g. auto renews in 2 months"
306
  msgid "Auto renews in %s"
307
  msgstr ""
308
 
309
+ #: includes/i18n.php:106
310
  msgid "No expiration"
311
  msgstr ""
312
 
313
+ #: includes/i18n.php:107
314
  msgid "Expired"
315
  msgstr ""
316
 
317
+ #: includes/i18n.php:108
318
  msgid "Cancelled"
319
  msgstr ""
320
 
321
+ #: includes/i18n.php:109
322
  msgctxt "e.g. In 2 hours"
323
  msgid "In %s"
324
  msgstr ""
325
 
326
+ #: includes/i18n.php:110
327
  msgctxt "e.g. 2 min ago"
328
  msgid "%s ago"
329
  msgstr ""
330
 
331
+ #: includes/i18n.php:112
332
  msgid "%s or higher"
333
  msgstr ""
334
 
335
+ #: includes/i18n.php:113
336
  msgctxt "as plugin version"
337
  msgid "Version"
338
  msgstr ""
339
 
340
+ #: includes/i18n.php:114
341
  msgid "Name"
342
  msgstr ""
343
 
344
+ #: includes/i18n.php:115
345
  msgid "Email"
346
  msgstr ""
347
 
348
+ #: includes/i18n.php:116
349
  msgid "Email address"
350
  msgstr ""
351
 
352
+ #: includes/i18n.php:117
353
  msgid "Verified"
354
  msgstr ""
355
 
356
+ #: includes/i18n.php:118
357
  msgid "Module"
358
  msgstr ""
359
 
360
+ #: includes/i18n.php:119
361
  msgid "Module Type"
362
  msgstr ""
363
 
364
+ #: includes/i18n.php:120
365
  msgid "Plugin"
366
  msgstr ""
367
 
368
+ #: includes/i18n.php:121
369
  msgid "Plugins"
370
  msgstr ""
371
 
372
+ #: includes/i18n.php:122
373
  msgid "Theme"
374
  msgstr ""
375
 
376
+ #: includes/i18n.php:123
377
  msgid "Themes"
378
  msgstr ""
379
 
380
+ #: includes/i18n.php:124
381
  msgctxt "as file/folder path"
382
  msgid "Path"
383
  msgstr ""
384
 
385
+ #: includes/i18n.php:125
386
  msgid "Title"
387
  msgstr ""
388
 
389
+ #: includes/i18n.php:126
390
  msgid "Free version"
391
  msgstr ""
392
 
393
+ #: includes/i18n.php:127
394
  msgid "Premium version"
395
  msgstr ""
396
 
397
+ #: includes/i18n.php:128
398
  msgctxt "as WP plugin slug"
399
  msgid "Slug"
400
  msgstr ""
401
 
402
+ #: includes/i18n.php:129
403
  msgid "ID"
404
  msgstr ""
405
 
406
+ #: includes/i18n.php:130
407
  msgid "Users"
408
  msgstr ""
409
 
410
+ #: includes/i18n.php:131
411
  msgid "Plugin Installs"
412
  msgstr ""
413
 
414
+ #: includes/i18n.php:132
415
  msgid "%s Installs"
416
  msgstr ""
417
 
418
+ #: includes/i18n.php:133
419
  msgctxt "like websites"
420
  msgid "Sites"
421
  msgstr ""
422
 
423
+ #: includes/i18n.php:134
424
  msgid "User ID"
425
  msgstr ""
426
 
427
+ #: includes/i18n.php:135
428
  msgid "Site ID"
429
  msgstr ""
430
 
431
+ #: includes/i18n.php:136
432
  msgid "Public Key"
433
  msgstr ""
434
 
435
+ #: includes/i18n.php:137
436
  msgid "Secret Key"
437
  msgstr ""
438
 
439
+ #: includes/i18n.php:138
440
  msgctxt "as secret encryption key missing"
441
  msgid "No Secret"
442
  msgstr ""
443
 
444
+ #: includes/i18n.php:139
445
  msgid "No ID"
446
  msgstr ""
447
 
448
+ #: includes/i18n.php:140
449
  msgctxt "as synchronize license"
450
  msgid "Sync License"
451
  msgstr ""
452
 
453
+ #: includes/i18n.php:141
454
  msgctxt "as synchronize"
455
  msgid "Sync"
456
  msgstr ""
457
 
458
+ #: includes/i18n.php:142
459
  msgid "Activate License"
460
  msgstr ""
461
 
462
+ #: includes/i18n.php:143
463
  msgid "Activate Free Version"
464
  msgstr ""
465
 
466
+ #: includes/i18n.php:144
467
  msgid "Please enter the license key that you received in the email right after the purchase:"
468
  msgstr ""
469
 
470
+ #: includes/i18n.php:145
471
  msgid "Activating license..."
472
  msgstr ""
473
 
474
+ #: includes/i18n.php:146
475
  msgid "Change License"
476
  msgstr ""
477
 
478
+ #: includes/i18n.php:147
479
  msgid "Update License"
480
  msgstr ""
481
 
482
+ #: includes/i18n.php:148
483
  msgid "Deactivate License"
484
  msgstr ""
485
 
486
+ #: includes/i18n.php:149
487
  msgid "Activate"
488
  msgstr ""
489
 
490
+ #: includes/i18n.php:150
491
  msgid "Deactivate"
492
  msgstr ""
493
 
494
+ #: includes/i18n.php:151
495
  msgid "Skip & Deactivate"
496
  msgstr ""
497
 
498
+ #: includes/i18n.php:152
499
  msgid "Skip & %s"
500
  msgstr ""
501
 
502
+ #: includes/i18n.php:153
503
  msgid "No - just deactivate"
504
  msgstr ""
505
 
506
+ #: includes/i18n.php:154
507
  msgid "Yes - do your thing"
508
  msgstr ""
509
 
510
+ #: includes/i18n.php:155
511
  msgctxt "active mode"
512
  msgid "Active"
513
  msgstr ""
514
 
515
+ #: includes/i18n.php:156
516
  msgctxt "is active mode?"
517
  msgid "Is Active"
518
  msgstr ""
519
 
520
+ #: includes/i18n.php:157
521
  msgid "Install Now"
522
  msgstr ""
523
 
524
+ #: includes/i18n.php:158
525
  msgid "Install Update Now"
526
  msgstr ""
527
 
528
+ #: includes/i18n.php:159
529
  msgid "More information about %s"
530
  msgstr ""
531
 
532
+ #: includes/i18n.php:160
533
  msgid "Localhost"
534
  msgstr ""
535
 
536
+ #: includes/i18n.php:161
537
  msgctxt "as activate Professional plan"
538
  msgid "Activate %s Plan"
539
  msgstr ""
540
 
541
+ #: includes/i18n.php:162
542
  msgctxt "as 5 licenses left"
543
  msgid "%s left"
544
  msgstr ""
545
 
546
+ #: includes/i18n.php:163
547
  msgid "Last license"
548
  msgstr ""
549
 
550
+ #: includes/i18n.php:164
551
  msgid "What is your %s?"
552
  msgstr ""
553
 
554
+ #: includes/i18n.php:165
555
  msgid "Activate this add-on"
556
  msgstr ""
557
 
558
+ #: includes/i18n.php:166
559
  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?"
560
  msgstr ""
561
 
562
+ #: includes/i18n.php:167
563
  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?"
564
  msgstr ""
565
 
566
+ #: includes/i18n.php:168
567
  msgid "Deletion is not temporary. Only delete if you no longer want to use thi